arch/alpha/boot/tools/objstrip.c
110
struct stat st;
arch/alpha/boot/tools/objstrip.c
118
if (fstat(fd, &st) == -1) {
arch/alpha/boot/tools/objstrip.c
123
size = (st.st_size + BLOCK_SIZE - 1) & ~(BLOCK_SIZE - 1);
arch/arc/include/asm/dsp-impl.h
45
st r10, [sp, PT_DSP_CTRL]
arch/arc/include/asm/entry-arcv2.h
132
st blink, [sp, PT_blink]
arch/arc/include/asm/entry-arcv2.h
138
st lp_count, [sp, PT_lpc]
arch/arc/include/asm/entry-arcv2.h
152
st fp, [sp, PT_fp] ; r27
arch/arc/include/asm/entry-arcv2.h
153
st r30, [sp, PT_r30]
arch/arc/include/asm/entry-arcv2.h
154
st r12, [sp, PT_r12]
arch/arc/include/asm/entry-arcv2.h
155
st r26, [sp, PT_r26] ; gp
arch/arc/include/asm/entry-arcv2.h
172
st r10, [sp, PT_sp] ; SP (pt_regs->sp)
arch/arc/include/asm/entry-arcv2.h
94
st r0, [sp] ; orig_r0
arch/arc/include/asm/entry-compact.h
170
st sp, [sp, PT_sp - SZ_PT_REGS]
arch/arc/include/asm/entry-compact.h
180
st sp, [r9, PT_sp - SZ_PT_REGS]
arch/arc/include/asm/entry-compact.h
214
st \reg, [\mem]
arch/arc/include/asm/entry-compact.h
239
st.a r0, [sp, -8] /* orig_r0 needed for syscall (skip ECR slot) */
arch/arc/include/asm/entry-compact.h
258
st r10, [sp, PT_event]
arch/arc/include/asm/entry-compact.h
323
st.a 0x003\LVL\()abcd, [sp, -4] /* Dummy ECR */
arch/arc/include/asm/entry.h
107
st \tsk, [\tmp]
arch/arc/include/asm/entry.h
122
st \tsk, [@_current_task]
arch/arc/include/asm/linkage.h
21
st \e, [sp, \off]
arch/arc/include/asm/linkage.h
22
st \o, [sp, \off+4]
arch/arm/include/asm/assembler.h
638
ldr\cond \dst, =\imm
arch/arm/include/asm/assembler.h
640
movw\cond \dst, #:lower16:\imm
arch/arm/include/asm/assembler.h
641
movt\cond \dst, #:upper16:\imm
arch/arm/include/asm/assembler.h
653
__adldst_l add, \dst, \sym, \dst, \cond
arch/arm/include/asm/assembler.h
664
__adldst_l ldr, \dst, \sym, \dst, \cond
arch/arm/include/asm/assembler.h
789
mov\c pc, \dst
arch/arm/include/asm/assembler.h
791
blx\c \dst
arch/arm/include/asm/barrier.h
66
#define wmb() __arm_heavy_mb(st)
arch/arm/mach-omap2/prm2xxx_3xxx.c
101
st),
arch/arm/mach-omap2/prm2xxx_3xxx.c
85
u32 rst, st;
arch/arm/mach-omap2/prm2xxx_3xxx.c
89
st = 1 << st_shift;
arch/arm/mach-omap2/prm2xxx_3xxx.c
96
omap2_prm_rmw_mod_reg_bits(0xffffffff, st, prm_mod, OMAP2_RM_RSTST);
arch/arm/mach-omap2/prm33xx.c
356
int st, ctrl;
arch/arm/mach-omap2/prm33xx.c
358
st = am33xx_prm_read_reg(pwrdm->prcm_offs,
arch/arm/mach-omap2/prm33xx.c
365
st &= OMAP_POWERSTATEST_MASK;
arch/arm/mach-omap2/prm33xx.c
368
if (st != ctrl)
arch/arm/mach-omap2/prm3xxx.c
156
u32 mask, st;
arch/arm/mach-omap2/prm3xxx.c
160
st = omap2_prm_read_mod_reg(OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
arch/arm/mach-omap2/prm3xxx.c
162
events[0] = mask & st;
arch/arm/mach-omap2/prm44xx.c
205
u32 mask, st;
arch/arm/mach-omap2/prm44xx.c
210
st = omap4_prm_read_inst_reg(OMAP4430_PRM_OCP_SOCKET_INST, irqst_offs);
arch/arm/mach-omap2/prm44xx.c
212
return mask & st;
arch/arm/mach-omap2/prm44xx.c
705
int st, ctrl;
arch/arm/mach-omap2/prm44xx.c
707
st = omap4_prminst_read_inst_reg(pwrdm->prcm_partition,
arch/arm/mach-omap2/prm44xx.c
717
st &= OMAP_POWERSTATEST_MASK;
arch/arm/mach-omap2/prm44xx.c
720
if (st != ctrl)
arch/arm/mach-rpc/ecard.c
670
#define ec_set_resource(ec,nr,st,sz) \
arch/arm/mach-rpc/ecard.c
673
(ec)->resource[nr].start = st; \
arch/arm/mach-rpc/ecard.c
674
(ec)->resource[nr].end = (st) + (sz) - 1; \
arch/arm/mach-tegra/iomap.h
113
#define IO_TO_VIRT_BETWEEN(p, st, sz) ((p) >= (st) && (p) < ((st) + (sz)))
arch/arm/mm/cache-l2x0.c
141
dsb(st);
arch/arm/mm/cache-l2x0.c
1454
dsb(st);
arch/arm/mm/dump.c
227
static void dump_prot(struct pg_state *st, const struct prot_bits *bits, size_t num)
arch/arm/mm/dump.c
234
if ((st->current_prot & bits->mask) == bits->val)
arch/arm/mm/dump.c
240
pt_dump_seq_printf(st->seq, " %s", s);
arch/arm/mm/dump.c
244
static void note_prot_wx(struct pg_state *st, unsigned long addr)
arch/arm/mm/dump.c
246
if (!st->check_wx)
arch/arm/mm/dump.c
248
if ((st->current_prot & pg_level[st->level].ro_bit->mask) ==
arch/arm/mm/dump.c
249
pg_level[st->level].ro_bit->val)
arch/arm/mm/dump.c
251
if ((st->current_prot & pg_level[st->level].nx_bit->mask) ==
arch/arm/mm/dump.c
252
pg_level[st->level].nx_bit->val)
arch/arm/mm/dump.c
256
(void *)st->start_address);
arch/arm/mm/dump.c
258
st->wx_pages += (addr - st->start_address) / PAGE_SIZE;
arch/arm/mm/dump.c
261
static void note_page(struct pg_state *st, unsigned long addr,
arch/arm/mm/dump.c
267
if (!st->level) {
arch/arm/mm/dump.c
268
st->level = level;
arch/arm/mm/dump.c
269
st->current_prot = prot;
arch/arm/mm/dump.c
270
st->current_domain = domain;
arch/arm/mm/dump.c
271
pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
arch/arm/mm/dump.c
272
} else if (prot != st->current_prot || level != st->level ||
arch/arm/mm/dump.c
273
domain != st->current_domain ||
arch/arm/mm/dump.c
274
addr >= st->marker[1].start_address) {
arch/arm/mm/dump.c
278
if (st->current_prot) {
arch/arm/mm/dump.c
279
note_prot_wx(st, addr);
arch/arm/mm/dump.c
280
pt_dump_seq_printf(st->seq, "0x%08lx-0x%08lx ",
arch/arm/mm/dump.c
281
st->start_address, addr);
arch/arm/mm/dump.c
283
delta = (addr - st->start_address) >> 10;
arch/arm/mm/dump.c
288
pt_dump_seq_printf(st->seq, "%9lu%c %s", delta, *unit,
arch/arm/mm/dump.c
289
pg_level[st->level].name);
arch/arm/mm/dump.c
290
if (st->current_domain)
arch/arm/mm/dump.c
291
pt_dump_seq_printf(st->seq, " %s",
arch/arm/mm/dump.c
292
st->current_domain);
arch/arm/mm/dump.c
293
if (pg_level[st->level].bits)
arch/arm/mm/dump.c
294
dump_prot(st, pg_level[st->level].bits, pg_level[st->level].num);
arch/arm/mm/dump.c
295
pt_dump_seq_printf(st->seq, "\n");
arch/arm/mm/dump.c
298
if (addr >= st->marker[1].start_address) {
arch/arm/mm/dump.c
299
st->marker++;
arch/arm/mm/dump.c
300
pt_dump_seq_printf(st->seq, "---[ %s ]---\n",
arch/arm/mm/dump.c
301
st->marker->name);
arch/arm/mm/dump.c
303
st->start_address = addr;
arch/arm/mm/dump.c
304
st->current_prot = prot;
arch/arm/mm/dump.c
305
st->current_domain = domain;
arch/arm/mm/dump.c
306
st->level = level;
arch/arm/mm/dump.c
310
static void walk_pte(struct pg_state *st, pmd_t *pmd, unsigned long start,
arch/arm/mm/dump.c
319
note_page(st, addr, 5, pte_val(*pte), domain);
arch/arm/mm/dump.c
342
static void walk_pmd(struct pg_state *st, pud_t *pud, unsigned long start)
arch/arm/mm/dump.c
353
note_page(st, addr, 4, pmd_val(*pmd), domain);
arch/arm/mm/dump.c
355
walk_pte(st, pmd, addr, domain);
arch/arm/mm/dump.c
361
note_page(st, addr, 4, pmd_val(*pmd), domain);
arch/arm/mm/dump.c
366
static void walk_pud(struct pg_state *st, p4d_t *p4d, unsigned long start)
arch/arm/mm/dump.c
375
walk_pmd(st, pud, addr);
arch/arm/mm/dump.c
377
note_page(st, addr, 3, pud_val(*pud), NULL);
arch/arm/mm/dump.c
382
static void walk_p4d(struct pg_state *st, pgd_t *pgd, unsigned long start)
arch/arm/mm/dump.c
391
walk_pud(st, p4d, addr);
arch/arm/mm/dump.c
393
note_page(st, addr, 2, p4d_val(*p4d), NULL);
arch/arm/mm/dump.c
398
static void walk_pgd(struct pg_state *st, struct mm_struct *mm,
arch/arm/mm/dump.c
408
walk_p4d(st, pgd, addr);
arch/arm/mm/dump.c
410
note_page(st, addr, 1, pgd_val(*pgd), NULL);
arch/arm/mm/dump.c
417
struct pg_state st = {
arch/arm/mm/dump.c
423
walk_pgd(&st, info->mm, info->base_addr);
arch/arm/mm/dump.c
424
note_page(&st, 0, 0, 0, NULL);
arch/arm/mm/dump.c
455
struct pg_state st = {
arch/arm/mm/dump.c
464
walk_pgd(&st, &init_mm, 0);
arch/arm/mm/dump.c
465
note_page(&st, 0, 0, 0, NULL);
arch/arm/mm/dump.c
466
if (st.wx_pages)
arch/arm/mm/dump.c
468
st.wx_pages);
arch/arm64/include/asm/assembler.h
176
adrp \dst, \sym
arch/arm64/include/asm/assembler.h
177
add \dst, \dst, :lo12:\sym
arch/arm64/include/asm/assembler.h
189
adrp \dst, \sym
arch/arm64/include/asm/assembler.h
190
ldr \dst, [\dst, :lo12:\sym]
arch/arm64/include/asm/assembler.h
193
ldr \dst, [\tmp, :lo12:\sym]
arch/arm64/include/asm/assembler.h
213
mrs \dst, tpidr_el2
arch/arm64/include/asm/assembler.h
218
mrs \dst, tpidr_el1
arch/arm64/include/asm/assembler.h
220
mrs \dst, tpidr_el2
arch/arm64/include/asm/assembler.h
240
add \dst, \tmp, #:lo12:\sym
arch/arm64/include/asm/assembler.h
242
add \dst, \dst, \tmp
arch/arm64/include/asm/assembler.h
251
adr_l \dst, \sym
arch/arm64/include/asm/assembler.h
253
ldr \dst, [\dst, \tmp]
arch/arm64/include/asm/assembler.h
683
__frame st, \regcount, \extra
arch/arm64/include/asm/assembler.h
705
.ifc \op, st
arch/arm64/include/asm/barrier.h
65
#define __wmb() dsb(st)
arch/arm64/include/asm/fpsimd.h
164
struct user_fpsimd_state *st;
arch/arm64/include/asm/ptdump.h
65
void note_page_pte(struct ptdump_state *st, unsigned long addr, pte_t pte);
arch/arm64/include/asm/ptdump.h
66
void note_page_pmd(struct ptdump_state *st, unsigned long addr, pmd_t pmd);
arch/arm64/include/asm/ptdump.h
67
void note_page_pud(struct ptdump_state *st, unsigned long addr, pud_t pud);
arch/arm64/include/asm/ptdump.h
68
void note_page_p4d(struct ptdump_state *st, unsigned long addr, p4d_t p4d);
arch/arm64/include/asm/ptdump.h
69
void note_page_pgd(struct ptdump_state *st, unsigned long addr, pgd_t pgd);
arch/arm64/include/asm/ptdump.h
70
void note_page_flush(struct ptdump_state *st);
arch/arm64/include/asm/ptdump.h
81
static inline void note_page_pte(struct ptdump_state *st, unsigned long addr, pte_t pte) { }
arch/arm64/include/asm/ptdump.h
82
static inline void note_page_pmd(struct ptdump_state *st, unsigned long addr, pmd_t pmd) { }
arch/arm64/include/asm/ptdump.h
83
static inline void note_page_pud(struct ptdump_state *st, unsigned long addr, pud_t pud) { }
arch/arm64/include/asm/ptdump.h
84
static inline void note_page_p4d(struct ptdump_state *st, unsigned long addr, p4d_t p4d) { }
arch/arm64/include/asm/ptdump.h
85
static inline void note_page_pgd(struct ptdump_state *st, unsigned long addr, pgd_t pgd) { }
arch/arm64/include/asm/ptdump.h
86
static inline void note_page_flush(struct ptdump_state *st) { }
arch/arm64/kernel/fpsimd.c
1537
if (last->st == task->thread.kernel_fpsimd_state &&
arch/arm64/kernel/fpsimd.c
1547
.st = task->thread.kernel_fpsimd_state,
arch/arm64/kernel/fpsimd.c
1551
BUG_ON(!cpu_fp_state.st);
arch/arm64/kernel/fpsimd.c
1567
__this_cpu_write(fpsimd_last_state.st, NULL);
arch/arm64/kernel/fpsimd.c
1605
wrong_task = __this_cpu_read(fpsimd_last_state.st) !=
arch/arm64/kernel/fpsimd.c
1718
last->st = ¤t->thread.uw.fpsimd_state;
arch/arm64/kernel/fpsimd.c
2083
per_cpu(fpsimd_last_state.st, cpu) = NULL;
arch/arm64/kernel/fpsimd.c
510
fpsimd_save_common(last->st);
arch/arm64/kernel/fpsimd.c
513
fpsimd_save_state(last->st);
arch/arm64/kvm/fpsimd.c
90
fp_state.st = &vcpu->arch.ctxt.fp_regs;
arch/arm64/kvm/ptdump.c
118
struct kvm_ptdump_guest_state *st;
arch/arm64/kvm/ptdump.c
122
st = kzalloc_obj(struct kvm_ptdump_guest_state, GFP_KERNEL_ACCOUNT);
arch/arm64/kvm/ptdump.c
123
if (!st)
arch/arm64/kvm/ptdump.c
126
ret = kvm_ptdump_build_levels(&st->level[0], pgtable->start_level);
arch/arm64/kvm/ptdump.c
128
kfree(st);
arch/arm64/kvm/ptdump.c
132
st->ipa_marker[0].name = "Guest IPA";
arch/arm64/kvm/ptdump.c
133
st->ipa_marker[1].start_address = BIT(pgtable->ia_bits);
arch/arm64/kvm/ptdump.c
135
st->mmu = mmu;
arch/arm64/kvm/ptdump.c
136
return st;
arch/arm64/kvm/ptdump.c
142
struct kvm_ptdump_guest_state *st = m->private;
arch/arm64/kvm/ptdump.c
143
struct kvm_s2_mmu *mmu = st->mmu;
arch/arm64/kvm/ptdump.c
147
.arg = &st->parser_state,
arch/arm64/kvm/ptdump.c
151
st->parser_state = (struct ptdump_pg_state) {
arch/arm64/kvm/ptdump.c
152
.marker = &st->ipa_marker[0],
arch/arm64/kvm/ptdump.c
154
.pg_level = &st->level[0],
arch/arm64/kvm/ptdump.c
169
struct kvm_ptdump_guest_state *st;
arch/arm64/kvm/ptdump.c
175
st = kvm_ptdump_parser_create(mmu);
arch/arm64/kvm/ptdump.c
176
if (IS_ERR(st)) {
arch/arm64/kvm/ptdump.c
177
ret = PTR_ERR(st);
arch/arm64/kvm/ptdump.c
181
ret = single_open(file, kvm_ptdump_guest_show, st);
arch/arm64/kvm/ptdump.c
185
kfree(st);
arch/arm64/kvm/ptdump.c
194
void *st = ((struct seq_file *)file->private_data)->private;
arch/arm64/kvm/ptdump.c
196
kfree(st);
arch/arm64/kvm/ptdump.c
85
struct ptdump_pg_state *st = ctx->arg;
arch/arm64/kvm/ptdump.c
86
struct ptdump_state *pt_st = &st->ptdump;
arch/arm64/mm/ptdump.c
144
static void dump_prot(struct ptdump_pg_state *st, const struct ptdump_prot_bits *bits,
arch/arm64/mm/ptdump.c
152
if ((st->current_prot & bits->mask) == bits->val)
arch/arm64/mm/ptdump.c
158
pt_dump_seq_printf(st->seq, " %s", s);
arch/arm64/mm/ptdump.c
162
static void note_prot_uxn(struct ptdump_pg_state *st, unsigned long addr)
arch/arm64/mm/ptdump.c
164
if (!st->check_wx)
arch/arm64/mm/ptdump.c
167
if ((st->current_prot & PTE_UXN) == PTE_UXN)
arch/arm64/mm/ptdump.c
171
(void *)st->start_address, (void *)st->start_address);
arch/arm64/mm/ptdump.c
173
st->uxn_pages += (addr - st->start_address) / PAGE_SIZE;
arch/arm64/mm/ptdump.c
176
static void note_prot_wx(struct ptdump_pg_state *st, unsigned long addr)
arch/arm64/mm/ptdump.c
178
if (!st->check_wx)
arch/arm64/mm/ptdump.c
180
if ((st->current_prot & PTE_RDONLY) == PTE_RDONLY)
arch/arm64/mm/ptdump.c
182
if ((st->current_prot & PTE_PXN) == PTE_PXN)
arch/arm64/mm/ptdump.c
186
(void *)st->start_address, (void *)st->start_address);
arch/arm64/mm/ptdump.c
188
st->wx_pages += (addr - st->start_address) / PAGE_SIZE;
arch/arm64/mm/ptdump.c
194
struct ptdump_pg_state *st = container_of(pt_st, struct ptdump_pg_state, ptdump);
arch/arm64/mm/ptdump.c
195
struct ptdump_pg_level *pg_level = st->pg_level;
arch/arm64/mm/ptdump.c
200
if (st->mm && ((level == 1 && mm_p4d_folded(st->mm)) ||
arch/arm64/mm/ptdump.c
201
(level == 2 && mm_pud_folded(st->mm))))
arch/arm64/mm/ptdump.c
207
if (st->level == -1) {
arch/arm64/mm/ptdump.c
208
st->level = level;
arch/arm64/mm/ptdump.c
209
st->current_prot = prot;
arch/arm64/mm/ptdump.c
210
st->start_address = addr;
arch/arm64/mm/ptdump.c
211
pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
arch/arm64/mm/ptdump.c
212
} else if (prot != st->current_prot || level != st->level ||
arch/arm64/mm/ptdump.c
213
addr >= st->marker[1].start_address) {
arch/arm64/mm/ptdump.c
217
if (st->current_prot) {
arch/arm64/mm/ptdump.c
218
note_prot_uxn(st, addr);
arch/arm64/mm/ptdump.c
219
note_prot_wx(st, addr);
arch/arm64/mm/ptdump.c
222
pt_dump_seq_printf(st->seq, "0x%016lx-0x%016lx ",
arch/arm64/mm/ptdump.c
223
st->start_address, addr);
arch/arm64/mm/ptdump.c
225
delta = (addr - st->start_address) >> 10;
arch/arm64/mm/ptdump.c
230
pt_dump_seq_printf(st->seq, "%9lu%c %s", delta, *unit,
arch/arm64/mm/ptdump.c
231
pg_level[st->level].name);
arch/arm64/mm/ptdump.c
232
if (st->current_prot && pg_level[st->level].bits)
arch/arm64/mm/ptdump.c
233
dump_prot(st, pg_level[st->level].bits,
arch/arm64/mm/ptdump.c
234
pg_level[st->level].num);
arch/arm64/mm/ptdump.c
235
pt_dump_seq_puts(st->seq, "\n");
arch/arm64/mm/ptdump.c
237
if (addr >= st->marker[1].start_address) {
arch/arm64/mm/ptdump.c
238
st->marker++;
arch/arm64/mm/ptdump.c
239
pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
arch/arm64/mm/ptdump.c
242
st->start_address = addr;
arch/arm64/mm/ptdump.c
243
st->current_prot = prot;
arch/arm64/mm/ptdump.c
244
st->level = level;
arch/arm64/mm/ptdump.c
247
if (addr >= st->marker[1].start_address) {
arch/arm64/mm/ptdump.c
248
st->marker++;
arch/arm64/mm/ptdump.c
249
pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
arch/arm64/mm/ptdump.c
286
static void arm64_ptdump_walk_pgd(struct ptdump_state *st, struct mm_struct *mm)
arch/arm64/mm/ptdump.c
289
ptdump_walk_pgd(st, mm, NULL);
arch/arm64/mm/ptdump.c
296
struct ptdump_pg_state st;
arch/arm64/mm/ptdump.c
301
st = (struct ptdump_pg_state){
arch/arm64/mm/ptdump.c
321
arm64_ptdump_walk_pgd(&st.ptdump, info->mm);
arch/arm64/mm/ptdump.c
340
struct ptdump_pg_state st = {
arch/arm64/mm/ptdump.c
363
arm64_ptdump_walk_pgd(&st.ptdump, &init_mm);
arch/arm64/mm/ptdump.c
365
if (st.wx_pages || st.uxn_pages) {
arch/arm64/mm/ptdump.c
367
st.wx_pages, st.uxn_pages);
arch/loongarch/include/asm/asm.h
110
#define LONG_S st.w
arch/loongarch/include/asm/asm.h
111
#define LONG_SPTR st.w
arch/loongarch/include/asm/asm.h
139
#define LONG_S st.d
arch/loongarch/include/asm/asm.h
171
#define PTR_S st.w
arch/loongarch/include/asm/asm.h
172
#define PTR_SPTR st.w
arch/loongarch/include/asm/asm.h
201
#define PTR_S st.d
arch/loongarch/include/asm/asm.h
56
#define REG_S st.w
arch/loongarch/include/asm/asm.h
61
#define REG_S st.d
arch/loongarch/include/asm/asm.h
74
#define INT_S st.w
arch/loongarch/include/asm/asm.h
88
#define INT_S st.d
arch/loongarch/include/asm/asmmacro.h
117
st.w \tmp1, \thread, THREAD_FCC
arch/loongarch/include/asm/asmmacro.h
126
st.w \tmp1, \thread, (THREAD_FCC + 4)
arch/loongarch/include/asm/asmmacro.h
353
st.d \tmp, \base, (\off+8)
arch/loongarch/include/asm/asmmacro.h
53
st.w \tmp, \thread, THREAD_FCSR
arch/loongarch/include/asm/asmmacro.h
659
nor \dst, \src, zero
arch/loongarch/include/asm/cmpxchg.h
122
#define __cmpxchg_asm(ld, st, m, old, new) \
arch/loongarch/include/asm/cmpxchg.h
130
" " st " $t0, %1 \n" \
arch/loongarch/include/asm/cmpxchg.h
26
#define __xchg_llsc_asm(ld, st, m, val) \
arch/loongarch/include/asm/kvm_host.h
259
} st;
arch/loongarch/kernel/paravirt.c
215
struct kvm_steal_time *st;
arch/loongarch/kernel/paravirt.c
220
st = &per_cpu(steal_time, cpu);
arch/loongarch/kernel/paravirt.c
221
addr = per_cpu_ptr_to_phys(st);
arch/loongarch/kernel/paravirt.c
224
if (PFN_DOWN(addr) != PFN_DOWN(addr + sizeof(*st))) {
arch/loongarch/kvm/exit.c
773
vcpu->arch.st.guest_addr = data;
arch/loongarch/kvm/exit.c
777
vcpu->arch.st.last_steal = current->sched_info.run_delay;
arch/loongarch/kvm/vcpu.c
1125
gpa = vcpu->arch.st.guest_addr;
arch/loongarch/kvm/vcpu.c
1196
vcpu->arch.st.guest_addr = gpa;
arch/loongarch/kvm/vcpu.c
1207
vcpu->arch.st.guest_addr = gpa;
arch/loongarch/kvm/vcpu.c
1208
vcpu->arch.st.last_steal = current->sched_info.run_delay;
arch/loongarch/kvm/vcpu.c
158
struct kvm_steal_time __user *st;
arch/loongarch/kvm/vcpu.c
161
ghc = &vcpu->arch.st.cache;
arch/loongarch/kvm/vcpu.c
162
gpa = vcpu->arch.st.guest_addr;
arch/loongarch/kvm/vcpu.c
169
if (kvm_gfn_to_hva_cache_init(vcpu->kvm, ghc, gpa, sizeof(*st))) {
arch/loongarch/kvm/vcpu.c
175
st = (struct kvm_steal_time __user *)ghc->hva;
arch/loongarch/kvm/vcpu.c
177
unsafe_put_user(0, &st->preempted, out);
arch/loongarch/kvm/vcpu.c
178
vcpu->arch.st.preempted = 0;
arch/loongarch/kvm/vcpu.c
1794
struct kvm_steal_time __user *st;
arch/loongarch/kvm/vcpu.c
1796
gpa = vcpu->arch.st.guest_addr;
arch/loongarch/kvm/vcpu.c
1801
if (vcpu->arch.st.preempted)
arch/loongarch/kvm/vcpu.c
1809
ghc = &vcpu->arch.st.cache;
arch/loongarch/kvm/vcpu.c
181
unsafe_get_user(version, &st->version, out);
arch/loongarch/kvm/vcpu.c
1812
if (kvm_gfn_to_hva_cache_init(vcpu->kvm, ghc, gpa, sizeof(*st))) {
arch/loongarch/kvm/vcpu.c
1818
st = (struct kvm_steal_time __user *)ghc->hva;
arch/loongarch/kvm/vcpu.c
1819
unsafe_put_user(KVM_VCPU_PREEMPTED, &st->preempted, out);
arch/loongarch/kvm/vcpu.c
1820
vcpu->arch.st.preempted = KVM_VCPU_PREEMPTED;
arch/loongarch/kvm/vcpu.c
186
unsafe_put_user(version, &st->version, out);
arch/loongarch/kvm/vcpu.c
189
unsafe_get_user(steal, &st->steal, out);
arch/loongarch/kvm/vcpu.c
190
steal += current->sched_info.run_delay - vcpu->arch.st.last_steal;
arch/loongarch/kvm/vcpu.c
191
vcpu->arch.st.last_steal = current->sched_info.run_delay;
arch/loongarch/kvm/vcpu.c
192
unsafe_put_user(steal, &st->steal, out);
arch/loongarch/kvm/vcpu.c
196
unsafe_put_user(version, &st->version, out);
arch/loongarch/kvm/vcpu.c
960
vcpu->arch.st.guest_addr = 0;
arch/m68k/include/asm/floppy.h
181
register unsigned char st;
arch/m68k/include/asm/floppy.h
207
st=1;
arch/m68k/include/asm/floppy.h
210
st = inb(virtual_dma_port + FD_STATUS);
arch/m68k/include/asm/floppy.h
211
st &= STATUS_DMA | STATUS_READY;
arch/m68k/include/asm/floppy.h
212
if (st != (STATUS_DMA | STATUS_READY))
arch/m68k/include/asm/floppy.h
222
st = inb(virtual_dma_port + FD_STATUS);
arch/m68k/include/asm/floppy.h
228
if (st == STATUS_DMA)
arch/m68k/include/asm/floppy.h
230
if (!(st & STATUS_DMA)) {
arch/m68k/include/asm/sun3xflop.h
116
register unsigned char st;
arch/m68k/include/asm/sun3xflop.h
145
st = *(sun3x_fdc.status_r);
arch/m68k/include/asm/sun3xflop.h
149
if((st & 0x80) == 0) {
arch/m68k/include/asm/sun3xflop.h
155
if((st & 0x20) == 0)
arch/m68k/include/asm/sun3xflop.h
169
st = *(sun3x_fdc.status_r);
arch/m68k/include/asm/sun3xflop.h
176
if(st == 0x20)
arch/m68k/include/asm/sun3xflop.h
178
if(!(st & 0x20)) {
arch/mips/include/asm/asmmacro.h
308
st.b $w\wd, \off(\base)
arch/mips/include/asm/asmmacro.h
317
st.h $w\wd, \off(\base)
arch/mips/include/asm/asmmacro.h
326
st.w $w\wd, \off(\base)
arch/mips/include/asm/asmmacro.h
335
st.d $w\wd, \off(\base)
arch/mips/include/asm/cmpxchg.h
112
#define __cmpxchg_asm(ld, st, m, old, new) \
arch/mips/include/asm/cmpxchg.h
128
" " st " $1, %1 \n" \
arch/mips/include/asm/cmpxchg.h
34
#define __xchg_asm(ld, st, m, val) \
arch/mips/include/asm/cmpxchg.h
49
" " st " $1, %1 \n" \
arch/mips/tools/loongson3-llsc-check.c
238
struct stat st;
arch/mips/tools/loongson3-llsc-check.c
257
err = fstat(vmlinux_fd, &st);
arch/mips/tools/loongson3-llsc-check.c
263
vmlinux = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, vmlinux_fd, 0);
arch/mips/tools/loongson3-llsc-check.c
302
munmap(vmlinux, st.st_size);
arch/parisc/include/asm/floppy.h
51
register unsigned char st;
arch/parisc/include/asm/floppy.h
75
st = fd_inb(virtual_dma_port, FD_STATUS);
arch/parisc/include/asm/floppy.h
76
st &= STATUS_DMA | STATUS_READY;
arch/parisc/include/asm/floppy.h
77
if (st != (STATUS_DMA | STATUS_READY))
arch/parisc/include/asm/floppy.h
88
st = fd_inb(virtual_dma_port, FD_STATUS);
arch/parisc/include/asm/floppy.h
94
if (st == STATUS_DMA)
arch/parisc/include/asm/floppy.h
96
if (!(st & STATUS_DMA)) {
arch/powerpc/boot/mktree.c
47
struct stat st;
arch/powerpc/boot/mktree.c
55
if (stat(argv[1], &st) < 0) {
arch/powerpc/boot/mktree.c
60
nblks = (st.st_size + IMGBLK) / IMGBLK;
arch/powerpc/include/asm/floppy.h
53
unsigned char st;
arch/powerpc/include/asm/floppy.h
61
st = 1;
arch/powerpc/include/asm/floppy.h
64
st = inb(virtual_dma_port + FD_STATUS);
arch/powerpc/include/asm/floppy.h
65
st &= STATUS_DMA | STATUS_READY;
arch/powerpc/include/asm/floppy.h
66
if (st != (STATUS_DMA | STATUS_READY))
arch/powerpc/include/asm/floppy.h
75
st = inb(virtual_dma_port + FD_STATUS);
arch/powerpc/include/asm/floppy.h
77
if (st == STATUS_DMA)
arch/powerpc/include/asm/floppy.h
79
if (!(st & STATUS_DMA)) {
arch/powerpc/include/asm/kvm_host.h
116
u64 st;
arch/powerpc/kvm/book3s.c
76
STATS_DESC_COUNTER(VCPU, st),
arch/powerpc/kvm/booke.c
74
STATS_DESC_COUNTER(VCPU, st),
arch/powerpc/kvm/powerpc.c
355
vcpu->stat.st++;
arch/powerpc/lib/rheap.c
706
static rh_stats_t st[32]; /* XXX maximum 32 blocks */
arch/powerpc/lib/rheap.c
710
maxnr = ARRAY_SIZE(st);
arch/powerpc/lib/rheap.c
717
nr = rh_get_stats(info, RHGS_FREE, maxnr, st);
arch/powerpc/lib/rheap.c
723
st[i].start, st[i].start + st[i].size,
arch/powerpc/lib/rheap.c
724
st[i].size);
arch/powerpc/lib/rheap.c
728
nr = rh_get_stats(info, RHGS_TAKEN, maxnr, st);
arch/powerpc/lib/rheap.c
734
st[i].start, st[i].start + st[i].size,
arch/powerpc/lib/rheap.c
735
st[i].size, st[i].owner != NULL ? st[i].owner : "");
arch/powerpc/mm/ptdump/hashpagetable.c
141
static int calculate_pagesize(struct pg_state *st, int ps, char s[])
arch/powerpc/mm/ptdump/hashpagetable.c
150
seq_printf(st->seq, " %s_ps: %i%c\t", s, 1<<ps, *unit);
arch/powerpc/mm/ptdump/hashpagetable.c
154
static void dump_flag_info(struct pg_state *st, const struct flag_info
arch/powerpc/mm/ptdump/hashpagetable.c
171
seq_printf(st->seq, " %s:%llx", flag->set, val);
arch/powerpc/mm/ptdump/hashpagetable.c
178
seq_printf(st->seq, " %s", s);
arch/powerpc/mm/ptdump/hashpagetable.c
183
static void dump_hpte_info(struct pg_state *st, unsigned long ea, u64 v, u64 r,
arch/powerpc/mm/ptdump/hashpagetable.c
188
while (ea >= st->marker[1].start_address) {
arch/powerpc/mm/ptdump/hashpagetable.c
189
st->marker++;
arch/powerpc/mm/ptdump/hashpagetable.c
190
seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
arch/powerpc/mm/ptdump/hashpagetable.c
192
seq_printf(st->seq, "0x%lx:\t", ea);
arch/powerpc/mm/ptdump/hashpagetable.c
193
seq_printf(st->seq, "AVPN:%llx\t", HPTE_V_AVPN_VAL(v));
arch/powerpc/mm/ptdump/hashpagetable.c
194
dump_flag_info(st, v_flag_array, v, ARRAY_SIZE(v_flag_array));
arch/powerpc/mm/ptdump/hashpagetable.c
195
seq_printf(st->seq, " rpn: %lx\t", rpn);
arch/powerpc/mm/ptdump/hashpagetable.c
196
dump_flag_info(st, r_flag_array, r, ARRAY_SIZE(r_flag_array));
arch/powerpc/mm/ptdump/hashpagetable.c
198
calculate_pagesize(st, bps, "base");
arch/powerpc/mm/ptdump/hashpagetable.c
199
aps_index = calculate_pagesize(st, aps, "actual");
arch/powerpc/mm/ptdump/hashpagetable.c
201
seq_printf(st->seq, "LP enc: %lx", lp);
arch/powerpc/mm/ptdump/hashpagetable.c
202
seq_putc(st->seq, '\n');
arch/powerpc/mm/ptdump/hashpagetable.c
331
static unsigned long hpte_find(struct pg_state *st, unsigned long ea, int psize)
arch/powerpc/mm/ptdump/hashpagetable.c
376
dump_hpte_info(st, ea, v, r, rpn, base_psize, actual_psize, lp_bits);
arch/powerpc/mm/ptdump/hashpagetable.c
380
static void walk_pte(struct pg_state *st, pmd_t *pmd, unsigned long start)
arch/powerpc/mm/ptdump/hashpagetable.c
402
status = hpte_find(st, addr, psize);
arch/powerpc/mm/ptdump/hashpagetable.c
407
seq_printf(st->seq, "page probably bolted before linux"
arch/powerpc/mm/ptdump/hashpagetable.c
414
static void walk_pmd(struct pg_state *st, pud_t *pud, unsigned long start)
arch/powerpc/mm/ptdump/hashpagetable.c
424
walk_pte(st, pmd, addr);
arch/powerpc/mm/ptdump/hashpagetable.c
428
static void walk_pud(struct pg_state *st, p4d_t *p4d, unsigned long start)
arch/powerpc/mm/ptdump/hashpagetable.c
438
walk_pmd(st, pud, addr);
arch/powerpc/mm/ptdump/hashpagetable.c
442
static void walk_p4d(struct pg_state *st, pgd_t *pgd, unsigned long start)
arch/powerpc/mm/ptdump/hashpagetable.c
452
walk_pud(st, p4d, addr);
arch/powerpc/mm/ptdump/hashpagetable.c
456
static void walk_pagetables(struct pg_state *st)
arch/powerpc/mm/ptdump/hashpagetable.c
470
walk_p4d(st, pgd, addr);
arch/powerpc/mm/ptdump/hashpagetable.c
475
static void walk_linearmapping(struct pg_state *st)
arch/powerpc/mm/ptdump/hashpagetable.c
487
hpte_find(st, addr, mmu_linear_psize);
arch/powerpc/mm/ptdump/hashpagetable.c
490
static void walk_vmemmap(struct pg_state *st)
arch/powerpc/mm/ptdump/hashpagetable.c
501
hpte_find(st, ptr->virt_addr, mmu_vmemmap_psize);
arch/powerpc/mm/ptdump/hashpagetable.c
504
seq_puts(st->seq, "---[ vmemmap end ]---\n");
arch/powerpc/mm/ptdump/hashpagetable.c
523
struct pg_state st = {
arch/powerpc/mm/ptdump/hashpagetable.c
532
walk_linearmapping(&st);
arch/powerpc/mm/ptdump/hashpagetable.c
533
walk_pagetables(&st);
arch/powerpc/mm/ptdump/hashpagetable.c
534
walk_vmemmap(&st);
arch/powerpc/mm/ptdump/ptdump.c
138
static void dump_flag_info(struct pg_state *st, const struct flag_info
arch/powerpc/mm/ptdump/ptdump.c
155
pt_dump_seq_printf(st->seq, " %s:%llx", flag->set, val);
arch/powerpc/mm/ptdump/ptdump.c
162
pt_dump_seq_printf(st->seq, " %s", s);
arch/powerpc/mm/ptdump/ptdump.c
164
st->current_flags &= ~flag->mask;
arch/powerpc/mm/ptdump/ptdump.c
166
if (st->current_flags != 0)
arch/powerpc/mm/ptdump/ptdump.c
167
pt_dump_seq_printf(st->seq, " unknown flags:%llx", st->current_flags);
arch/powerpc/mm/ptdump/ptdump.c
170
static void dump_addr(struct pg_state *st, unsigned long addr)
arch/powerpc/mm/ptdump/ptdump.c
178
pt_dump_seq_printf(st->seq, REG "-" REG " ", st->start_address, addr - 1);
arch/powerpc/mm/ptdump/ptdump.c
179
pt_dump_seq_printf(st->seq, " " REG " ", st->start_pa);
arch/powerpc/mm/ptdump/ptdump.c
180
pt_dump_size(st->seq, addr - st->start_address);
arch/powerpc/mm/ptdump/ptdump.c
181
pt_dump_seq_printf(st->seq, "%s ", pg_level[st->level].name);
arch/powerpc/mm/ptdump/ptdump.c
184
static void note_prot_wx(struct pg_state *st, unsigned long addr)
arch/powerpc/mm/ptdump/ptdump.c
186
pte_t pte = __pte(st->current_flags);
arch/powerpc/mm/ptdump/ptdump.c
188
if (!st->check_wx)
arch/powerpc/mm/ptdump/ptdump.c
196
(void *)st->start_address, (void *)st->start_address);
arch/powerpc/mm/ptdump/ptdump.c
198
st->wx_pages += (addr - st->start_address) / PAGE_SIZE;
arch/powerpc/mm/ptdump/ptdump.c
201
static void note_page_update_state(struct pg_state *st, unsigned long addr, int level, u64 val)
arch/powerpc/mm/ptdump/ptdump.c
206
st->level = level;
arch/powerpc/mm/ptdump/ptdump.c
207
st->current_flags = flag;
arch/powerpc/mm/ptdump/ptdump.c
208
st->start_address = addr;
arch/powerpc/mm/ptdump/ptdump.c
209
st->start_pa = pa;
arch/powerpc/mm/ptdump/ptdump.c
211
while (addr >= st->marker[1].start_address) {
arch/powerpc/mm/ptdump/ptdump.c
212
st->marker++;
arch/powerpc/mm/ptdump/ptdump.c
213
pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
arch/powerpc/mm/ptdump/ptdump.c
220
struct pg_state *st = container_of(pt_st, struct pg_state, ptdump);
arch/powerpc/mm/ptdump/ptdump.c
223
if (st->level == -1) {
arch/powerpc/mm/ptdump/ptdump.c
224
pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
arch/powerpc/mm/ptdump/ptdump.c
225
note_page_update_state(st, addr, level, val);
arch/powerpc/mm/ptdump/ptdump.c
233
} else if (flag != st->current_flags || level != st->level ||
arch/powerpc/mm/ptdump/ptdump.c
234
addr >= st->marker[1].start_address) {
arch/powerpc/mm/ptdump/ptdump.c
237
if (st->current_flags) {
arch/powerpc/mm/ptdump/ptdump.c
238
note_prot_wx(st, addr);
arch/powerpc/mm/ptdump/ptdump.c
239
dump_addr(st, addr);
arch/powerpc/mm/ptdump/ptdump.c
242
if (pg_level[st->level].flag)
arch/powerpc/mm/ptdump/ptdump.c
243
dump_flag_info(st, pg_level[st->level].flag,
arch/powerpc/mm/ptdump/ptdump.c
244
st->current_flags,
arch/powerpc/mm/ptdump/ptdump.c
245
pg_level[st->level].num);
arch/powerpc/mm/ptdump/ptdump.c
247
pt_dump_seq_putc(st->seq, '\n');
arch/powerpc/mm/ptdump/ptdump.c
254
note_page_update_state(st, addr, level, val);
arch/powerpc/mm/ptdump/ptdump.c
336
struct pg_state st = {
arch/powerpc/mm/ptdump/ptdump.c
352
ptdump_walk_pgd(&st.ptdump, &init_mm, NULL);
arch/powerpc/mm/ptdump/ptdump.c
370
struct pg_state st = {
arch/powerpc/mm/ptdump/ptdump.c
392
ptdump_walk_pgd(&st.ptdump, &init_mm, NULL);
arch/powerpc/mm/ptdump/ptdump.c
394
if (st.wx_pages) {
arch/powerpc/mm/ptdump/ptdump.c
396
st.wx_pages);
arch/riscv/include/asm/asm.h
100
add \dst, \dst, \tmp
arch/riscv/include/asm/asm.h
104
la \dst, \sym
arch/riscv/include/asm/asm.h
109
asm_per_cpu \dst \ptr \tmp
arch/riscv/include/asm/asm.h
110
REG_L \dst, 0(\dst)
arch/riscv/include/asm/asm.h
96
la \dst, __per_cpu_offset
arch/riscv/include/asm/asm.h
97
add \dst, \dst, \tmp
arch/riscv/include/asm/asm.h
98
REG_L \tmp, 0(\dst)
arch/riscv/include/asm/asm.h
99
la \dst, \sym
arch/riscv/kernel/paravirt.c
68
struct sbi_sta_struct *st = this_cpu_ptr(&steal_time);
arch/riscv/kernel/paravirt.c
69
phys_addr_t pa = __pa(st);
arch/riscv/kernel/paravirt.c
84
struct sbi_sta_struct *st = per_cpu_ptr(&steal_time, cpu);
arch/riscv/kernel/paravirt.c
93
sequence = READ_ONCE(st->sequence);
arch/riscv/kernel/paravirt.c
95
steal = READ_ONCE(st->steal);
arch/riscv/kernel/paravirt.c
98
sequence != READ_ONCE(st->sequence));
arch/riscv/mm/ptdump.c
206
static void dump_prot(struct pg_state *st)
arch/riscv/mm/ptdump.c
214
val = st->current_prot & pte_bits[i].mask;
arch/riscv/mm/ptdump.c
234
pt_dump_seq_printf(st->seq, " %s", s);
arch/riscv/mm/ptdump.c
243
static void dump_addr(struct pg_state *st, unsigned long addr)
arch/riscv/mm/ptdump.c
249
pt_dump_seq_printf(st->seq, ADDR_FORMAT "-" ADDR_FORMAT " ",
arch/riscv/mm/ptdump.c
250
st->start_address, addr);
arch/riscv/mm/ptdump.c
252
pt_dump_seq_printf(st->seq, " " ADDR_FORMAT " ", st->start_pa);
arch/riscv/mm/ptdump.c
253
delta = (addr - st->start_address) >> 10;
arch/riscv/mm/ptdump.c
260
pt_dump_seq_printf(st->seq, "%9lu%c %s", delta, *unit,
arch/riscv/mm/ptdump.c
261
pg_level[st->level].name);
arch/riscv/mm/ptdump.c
264
static void note_prot_wx(struct pg_state *st, unsigned long addr)
arch/riscv/mm/ptdump.c
266
if (!st->check_wx)
arch/riscv/mm/ptdump.c
269
if ((st->current_prot & (_PAGE_WRITE | _PAGE_EXEC)) !=
arch/riscv/mm/ptdump.c
274
(void *)st->start_address, (void *)st->start_address);
arch/riscv/mm/ptdump.c
276
st->wx_pages += (addr - st->start_address) / PAGE_SIZE;
arch/riscv/mm/ptdump.c
282
struct pg_state *st = container_of(pt_st, struct pg_state, ptdump);
arch/riscv/mm/ptdump.c
289
if (st->level == -1) {
arch/riscv/mm/ptdump.c
290
st->level = level;
arch/riscv/mm/ptdump.c
291
st->current_prot = prot;
arch/riscv/mm/ptdump.c
292
st->start_address = addr;
arch/riscv/mm/ptdump.c
293
st->start_pa = pa;
arch/riscv/mm/ptdump.c
294
st->last_pa = pa;
arch/riscv/mm/ptdump.c
295
pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
arch/riscv/mm/ptdump.c
296
} else if (prot != st->current_prot ||
arch/riscv/mm/ptdump.c
297
level != st->level || addr >= st->marker[1].start_address) {
arch/riscv/mm/ptdump.c
298
if (st->current_prot) {
arch/riscv/mm/ptdump.c
299
note_prot_wx(st, addr);
arch/riscv/mm/ptdump.c
300
dump_addr(st, addr);
arch/riscv/mm/ptdump.c
301
dump_prot(st);
arch/riscv/mm/ptdump.c
302
pt_dump_seq_puts(st->seq, "\n");
arch/riscv/mm/ptdump.c
305
while (addr >= st->marker[1].start_address) {
arch/riscv/mm/ptdump.c
306
st->marker++;
arch/riscv/mm/ptdump.c
307
pt_dump_seq_printf(st->seq, "---[ %s ]---\n",
arch/riscv/mm/ptdump.c
308
st->marker->name);
arch/riscv/mm/ptdump.c
311
st->start_address = addr;
arch/riscv/mm/ptdump.c
312
st->start_pa = pa;
arch/riscv/mm/ptdump.c
313
st->last_pa = pa;
arch/riscv/mm/ptdump.c
314
st->current_prot = prot;
arch/riscv/mm/ptdump.c
315
st->level = level;
arch/riscv/mm/ptdump.c
317
st->last_pa = pa;
arch/riscv/mm/ptdump.c
355
struct pg_state st = {
arch/riscv/mm/ptdump.c
373
ptdump_walk_pgd(&st.ptdump, pinfo->mm, NULL);
arch/riscv/mm/ptdump.c
378
struct pg_state st = {
arch/riscv/mm/ptdump.c
400
ptdump_walk_pgd(&st.ptdump, &init_mm, NULL);
arch/riscv/mm/ptdump.c
402
if (st.wx_pages) {
arch/riscv/mm/ptdump.c
404
st.wx_pages);
arch/s390/include/asm/nmi.h
71
u64 st : 1; /* 31 storage logical validity */
arch/s390/kernel/diag/diag310.c
112
union diag310_req_subcode req = { .sc = DIAG310_SUBC_4, .st = level };
arch/s390/kernel/diag/diag310.c
131
union diag310_req_subcode req_sc = { .sc = DIAG310_SUBC_5, .st = level };
arch/s390/kernel/diag/diag310.c
51
u64 st : 8;
arch/s390/kernel/wti.c
104
struct wti_state *st = per_cpu_ptr(&wti_state, cpu);
arch/s390/kernel/wti.c
106
return st->pending;
arch/s390/kernel/wti.c
109
static void wti_dbf_grace_period(struct wti_state *st)
arch/s390/kernel/wti.c
111
struct wti_debug *wdi = &st->dbg;
arch/s390/kernel/wti.c
124
struct wti_state *st;
arch/s390/kernel/wti.c
133
st = per_cpu_ptr(&wti_state, cpu);
arch/s390/kernel/wti.c
134
seq_printf(seq, " %10lu", st->dbg.missed);
arch/s390/kernel/wti.c
144
struct wti_state *st = per_cpu_ptr(&wti_state, cpu);
arch/s390/kernel/wti.c
146
st->pending = false;
arch/s390/kernel/wti.c
153
wti_dbf_grace_period(st);
arch/s390/kernel/wti.c
169
struct wti_state *st;
arch/s390/kernel/wti.c
179
st = per_cpu_ptr(&wti_state, cpu);
arch/s390/kernel/wti.c
180
sched_setscheduler(st->thread, SCHED_FIFO, &wti_sched_param);
arch/s390/kernel/wti.c
80
static void store_debug_data(struct wti_state *st)
arch/s390/kernel/wti.c
84
st->dbg.pid = current->pid;
arch/s390/kernel/wti.c
85
st->dbg.addr = 0;
arch/s390/kernel/wti.c
87
st->dbg.addr = regs->psw.addr;
arch/s390/kernel/wti.c
93
struct wti_state *st = this_cpu_ptr(&wti_state);
arch/s390/kernel/wti.c
97
store_debug_data(st);
arch/s390/kernel/wti.c
98
st->pending = true;
arch/s390/kernel/wti.c
99
wake_up_process(st->thread);
arch/s390/mm/dump_pagetables.c
100
st->marker++;
arch/s390/mm/dump_pagetables.c
101
pt_dump_seq_printf(m, "---[ %s %s ]---\n", st->marker->name,
arch/s390/mm/dump_pagetables.c
102
st->marker->is_start ? "Start" : "End");
arch/s390/mm/dump_pagetables.c
104
st->start_address = addr;
arch/s390/mm/dump_pagetables.c
105
st->current_prot = prot;
arch/s390/mm/dump_pagetables.c
106
st->level = level;
arch/s390/mm/dump_pagetables.c
115
struct pg_state *st;
arch/s390/mm/dump_pagetables.c
119
st = container_of(pt_st, struct pg_state, ptdump);
arch/s390/mm/dump_pagetables.c
120
m = st->seq;
arch/s390/mm/dump_pagetables.c
130
if (st->level == -1) {
arch/s390/mm/dump_pagetables.c
132
note_page_update_state(st, addr, prot, level);
arch/s390/mm/dump_pagetables.c
133
} else if (prot != st->current_prot || level != st->level ||
arch/s390/mm/dump_pagetables.c
134
addr >= st->marker[1].start_address) {
arch/s390/mm/dump_pagetables.c
135
note_prot_wx(st, addr);
arch/s390/mm/dump_pagetables.c
137
width, st->start_address,
arch/s390/mm/dump_pagetables.c
139
delta = (addr - st->start_address) >> 10;
arch/s390/mm/dump_pagetables.c
145
print_prot(m, st->current_prot, st->level);
arch/s390/mm/dump_pagetables.c
146
note_page_update_state(st, addr, prot, level);
arch/s390/mm/dump_pagetables.c
184
struct pg_state st = {
arch/s390/mm/dump_pagetables.c
211
ptdump_walk_pgd(&st.ptdump, &init_mm, NULL);
arch/s390/mm/dump_pagetables.c
212
if (st.wx_pages) {
arch/s390/mm/dump_pagetables.c
213
pr_warn("Checked W+X mappings: FAILED, %lu W+X pages found\n", st.wx_pages);
arch/s390/mm/dump_pagetables.c
228
struct pg_state st = {
arch/s390/mm/dump_pagetables.c
251
ptdump_walk_pgd(&st.ptdump, &init_mm, NULL);
arch/s390/mm/dump_pagetables.c
71
static void note_prot_wx(struct pg_state *st, unsigned long addr)
arch/s390/mm/dump_pagetables.c
73
if (!st->check_wx)
arch/s390/mm/dump_pagetables.c
75
if (st->current_prot & _PAGE_INVALID)
arch/s390/mm/dump_pagetables.c
77
if (st->current_prot & _PAGE_PROTECT)
arch/s390/mm/dump_pagetables.c
79
if (st->current_prot & _PAGE_NOEXEC)
arch/s390/mm/dump_pagetables.c
91
(void *)st->start_address);
arch/s390/mm/dump_pagetables.c
92
st->wx_pages += (addr - st->start_address) / PAGE_SIZE;
arch/s390/mm/dump_pagetables.c
95
static void note_page_update_state(struct pg_state *st, unsigned long addr, unsigned int prot, int level)
arch/s390/mm/dump_pagetables.c
97
struct seq_file *m = st->seq;
arch/s390/mm/dump_pagetables.c
99
while (addr >= st->marker[1].start_address) {
arch/sparc/include/asm/winmacro.h
104
st %scratch, [%cur_reg + TI_W_SAVED];
arch/sparc/include/asm/winmacro.h
72
st %g1, [%base_reg + STACKFRAME_SZ + PT_G1]; \
arch/sparc/include/asm/winmacro.h
79
st %scratch, [%base_reg + STACKFRAME_SZ + PT_Y];
arch/sparc/include/asm/winmacro.h
82
st %pt_psr, [%base_reg + STACKFRAME_SZ + PT_PSR]; \
arch/sparc/include/asm/winmacro.h
83
st %pt_pc, [%base_reg + STACKFRAME_SZ + PT_PC]; \
arch/sparc/include/asm/winmacro.h
84
st %pt_npc, [%base_reg + STACKFRAME_SZ + PT_NPC];
arch/sparc/include/asm/winmacro.h
96
st %sp, [%scratch + TI_RWIN_SPTRS]; \
arch/um/os-Linux/mem.c
62
struct statfs st;
arch/um/os-Linux/mem.c
65
if (statfs(dir, &st) < 0) {
arch/um/os-Linux/mem.c
67
} else if (st.f_type != TMPFS_MAGIC) {
arch/x86/include/asm/cpu_entry_area.h
58
#define CEA_ESTACK_SIZE(st) \
arch/x86/include/asm/cpu_entry_area.h
59
sizeof(((struct cea_exception_stacks *)0)->st## _stack)
arch/x86/include/asm/cpu_entry_area.h
61
#define CEA_ESTACK_BOT(ceastp, st) \
arch/x86/include/asm/cpu_entry_area.h
62
((unsigned long)&(ceastp)->st## _stack)
arch/x86/include/asm/cpu_entry_area.h
64
#define CEA_ESTACK_TOP(ceastp, st) \
arch/x86/include/asm/cpu_entry_area.h
65
(CEA_ESTACK_BOT(ceastp, st) + CEA_ESTACK_SIZE(st))
arch/x86/include/asm/cpu_entry_area.h
67
#define CEA_ESTACK_OFFS(st) \
arch/x86/include/asm/cpu_entry_area.h
68
offsetof(struct cea_exception_stacks, st## _stack)
arch/x86/include/asm/floppy.h
105
st = inb(virtual_dma_port + FD_STATUS);
arch/x86/include/asm/floppy.h
111
if (st == STATUS_DMA)
arch/x86/include/asm/floppy.h
113
if (!(st & STATUS_DMA)) {
arch/x86/include/asm/floppy.h
71
unsigned char st;
arch/x86/include/asm/floppy.h
94
st = inb(virtual_dma_port + FD_STATUS);
arch/x86/include/asm/floppy.h
95
st &= STATUS_DMA | STATUS_READY;
arch/x86/include/asm/floppy.h
96
if (st != (STATUS_DMA | STATUS_READY))
arch/x86/include/asm/kvm_host.h
986
} st;
arch/x86/include/uapi/asm/stat.h
107
#define INIT_STRUCT_STAT_PADDING(st) do { \
arch/x86/include/uapi/asm/stat.h
108
st.__pad0 = 0; \
arch/x86/include/uapi/asm/stat.h
109
st.__unused[0] = 0; \
arch/x86/include/uapi/asm/stat.h
110
st.__unused[1] = 0; \
arch/x86/include/uapi/asm/stat.h
111
st.__unused[2] = 0; \
arch/x86/include/uapi/asm/stat.h
32
#define INIT_STRUCT_STAT_PADDING(st) do { \
arch/x86/include/uapi/asm/stat.h
33
st.__unused4 = 0; \
arch/x86/include/uapi/asm/stat.h
34
st.__unused5 = 0; \
arch/x86/include/uapi/asm/stat.h
76
#define INIT_STRUCT_STAT64_PADDING(st) do { \
arch/x86/include/uapi/asm/stat.h
77
memset(&st.__pad0, 0, sizeof(st.__pad0)); \
arch/x86/include/uapi/asm/stat.h
78
memset(&st.__pad3, 0, sizeof(st.__pad3)); \
arch/x86/kernel/apic/x2apic_uv_x.c
1323
struct uv_systab *st;
arch/x86/kernel/apic/x2apic_uv_x.c
1327
st = uv_systab;
arch/x86/kernel/apic/x2apic_uv_x.c
1330
if (st && st->revision == UV_SYSTAB_VERSION_1)
arch/x86/kernel/apic/x2apic_uv_x.c
1333
if ((!st) || (st->revision < UV_SYSTAB_VERSION_UV4_LATEST)) {
arch/x86/kernel/apic/x2apic_uv_x.c
1334
int rev = st ? st->revision : 0;
arch/x86/kernel/apic/x2apic_uv_x.c
1344
for (i = 0; st->entry[i].type != UV_SYSTAB_TYPE_UNUSED; i++) {
arch/x86/kernel/apic/x2apic_uv_x.c
1345
unsigned long ptr = st->entry[i].offset;
arch/x86/kernel/apic/x2apic_uv_x.c
1351
ptr += (unsigned long)st;
arch/x86/kernel/apic/x2apic_uv_x.c
1353
switch (st->entry[i].type) {
arch/x86/kernel/apic/x2apic_uv_x.c
1368
__func__, st->entry[i].type);
arch/x86/kernel/apic/x2apic_uv_x.c
272
static unsigned long __init early_find_archtype(struct uv_systab *st)
arch/x86/kernel/apic/x2apic_uv_x.c
276
for (i = 0; st->entry[i].type != UV_SYSTAB_TYPE_UNUSED; i++) {
arch/x86/kernel/apic/x2apic_uv_x.c
277
unsigned long ptr = st->entry[i].offset;
arch/x86/kernel/apic/x2apic_uv_x.c
281
ptr += (unsigned long)st;
arch/x86/kernel/apic/x2apic_uv_x.c
282
if (st->entry[i].type == UV_SYSTAB_TYPE_ARCH_TYPE)
arch/x86/kernel/apic/x2apic_uv_x.c
306
struct uv_systab *st;
arch/x86/kernel/apic/x2apic_uv_x.c
314
st = early_memremap_ro(uvst_physaddr, sizeof(struct uv_systab));
arch/x86/kernel/apic/x2apic_uv_x.c
315
if (!st) {
arch/x86/kernel/apic/x2apic_uv_x.c
320
rev = st->revision;
arch/x86/kernel/apic/x2apic_uv_x.c
322
early_memunmap(st, sizeof(struct uv_systab));
arch/x86/kernel/apic/x2apic_uv_x.c
326
uvst_size = st->size;
arch/x86/kernel/apic/x2apic_uv_x.c
327
early_memunmap(st, sizeof(struct uv_systab));
arch/x86/kernel/apic/x2apic_uv_x.c
328
st = early_memremap_ro(uvst_physaddr, uvst_size);
arch/x86/kernel/apic/x2apic_uv_x.c
329
if (!st) {
arch/x86/kernel/apic/x2apic_uv_x.c
334
ptr = early_find_archtype(st);
arch/x86/kernel/apic/x2apic_uv_x.c
336
early_memunmap(st, uvst_size);
arch/x86/kernel/apic/x2apic_uv_x.c
341
early_memunmap(st, uvst_size);
arch/x86/kernel/cpu/vmware.c
259
struct vmware_steal_time *st = &per_cpu(vmw_steal_time, cpu);
arch/x86/kernel/cpu/vmware.c
264
if (!stealclock_enable(slow_virt_to_phys(st))) {
arch/x86/kernel/cpu/vmware.c
270
cpu, (unsigned long long) slow_virt_to_phys(st));
arch/x86/kernel/dumpstack_64.c
71
#define EPAGERANGE(st) \
arch/x86/kernel/dumpstack_64.c
72
[PFN_DOWN(CEA_ESTACK_OFFS(st)) ... \
arch/x86/kernel/dumpstack_64.c
73
PFN_DOWN(CEA_ESTACK_OFFS(st) + CEA_ESTACK_SIZE(st) - 1)] = { \
arch/x86/kernel/dumpstack_64.c
74
.offs = CEA_ESTACK_OFFS(st), \
arch/x86/kernel/dumpstack_64.c
75
.size = CEA_ESTACK_SIZE(st), \
arch/x86/kernel/dumpstack_64.c
76
.type = STACK_TYPE_EXCEPTION + ESTACK_ ##st, }
arch/x86/kernel/fpu/regset.c
288
struct _fpxreg *st;
arch/x86/kernel/fpu/regset.c
297
st = FPREG_ADDR(fxsave, (i - tos) & 7);
arch/x86/kernel/fpu/regset.c
299
switch (st->exponent & 0x7fff) {
arch/x86/kernel/fpu/regset.c
304
if (!st->significand[0] &&
arch/x86/kernel/fpu/regset.c
305
!st->significand[1] &&
arch/x86/kernel/fpu/regset.c
306
!st->significand[2] &&
arch/x86/kernel/fpu/regset.c
307
!st->significand[3])
arch/x86/kernel/fpu/regset.c
313
if (st->significand[3] & 0x8000)
arch/x86/kernel/fpu/xstate.h
128
#define XSTATE_OP(op, st, lmask, hmask, err) \
arch/x86/kernel/fpu/xstate.h
134
: [xa] "m" (*(st)), "a" (lmask), "d" (hmask) \
arch/x86/kernel/fpu/xstate.h
149
#define XSTATE_XSAVE(st, lmask, hmask, err) \
arch/x86/kernel/fpu/xstate.h
159
: [xa] "m" (*(st)), "a" (lmask), "d" (hmask) \
arch/x86/kernel/fpu/xstate.h
166
#define XSTATE_XRESTORE(st, lmask, hmask) \
arch/x86/kernel/fpu/xstate.h
173
: [xa] "m" (*(st)), "a" (lmask), "d" (hmask) \
arch/x86/kernel/kvm.c
335
struct kvm_steal_time *st = &per_cpu(steal_time, cpu);
arch/x86/kernel/kvm.c
340
wrmsrq(MSR_KVM_STEAL_TIME, (slow_virt_to_phys(st) | KVM_MSR_ENABLED));
arch/x86/kernel/kvm.c
342
(unsigned long long) slow_virt_to_phys(st));
arch/x86/kernel/process.c
530
struct ssb_state *st = this_cpu_ptr(&ssb_state);
arch/x86/kernel/process.c
534
st->local_state = 0;
arch/x86/kernel/process.c
540
if (st->shared_state)
arch/x86/kernel/process.c
543
raw_spin_lock_init(&st->lock);
arch/x86/kernel/process.c
557
st->shared_state = per_cpu(ssb_state, cpu).shared_state;
arch/x86/kernel/process.c
567
st->shared_state = st;
arch/x86/kernel/process.c
579
struct ssb_state *st = this_cpu_ptr(&ssb_state);
arch/x86/kernel/process.c
593
if (__test_and_set_bit(LSTATE_SSB, &st->local_state))
arch/x86/kernel/process.c
598
raw_spin_lock(&st->shared_state->lock);
arch/x86/kernel/process.c
600
if (!st->shared_state->disable_state)
arch/x86/kernel/process.c
602
st->shared_state->disable_state++;
arch/x86/kernel/process.c
603
raw_spin_unlock(&st->shared_state->lock);
arch/x86/kernel/process.c
605
if (!__test_and_clear_bit(LSTATE_SSB, &st->local_state))
arch/x86/kernel/process.c
608
raw_spin_lock(&st->shared_state->lock);
arch/x86/kernel/process.c
609
st->shared_state->disable_state--;
arch/x86/kernel/process.c
610
if (!st->shared_state->disable_state)
arch/x86/kernel/process.c
612
raw_spin_unlock(&st->shared_state->lock);
arch/x86/kvm/vmenter.h
100
pop (\regs_ofs + reg_num * WORD_SIZE)(\dst)
arch/x86/kvm/vmenter.h
93
mov \reg, (\regs_ofs + reg_num * WORD_SIZE)(\dst)
arch/x86/kvm/x86.c
13011
vcpu->arch.st.msr_val = 0;
arch/x86/kvm/x86.c
3722
struct gfn_to_hva_cache *ghc = &vcpu->arch.st.cache;
arch/x86/kvm/x86.c
3723
struct kvm_steal_time __user *st;
arch/x86/kvm/x86.c
3725
gpa_t gpa = vcpu->arch.st.msr_val & KVM_STEAL_VALID_BITS;
arch/x86/kvm/x86.c
3734
if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
arch/x86/kvm/x86.c
3746
BUILD_BUG_ON((sizeof(*st) - 1) & KVM_STEAL_VALID_BITS);
arch/x86/kvm/x86.c
3748
if (kvm_gfn_to_hva_cache_init(vcpu->kvm, ghc, gpa, sizeof(*st)) ||
arch/x86/kvm/x86.c
3753
st = (struct kvm_steal_time __user *)ghc->hva;
arch/x86/kvm/x86.c
3762
if (!user_access_begin(st, sizeof(*st)))
arch/x86/kvm/x86.c
3771
"+m" (st->preempted));
arch/x86/kvm/x86.c
3777
vcpu->arch.st.preempted = 0;
arch/x86/kvm/x86.c
3784
if (!user_access_begin(st, sizeof(*st)))
arch/x86/kvm/x86.c
3787
if (!user_access_begin(st, sizeof(*st)))
arch/x86/kvm/x86.c
3790
unsafe_put_user(0, &st->preempted, out);
arch/x86/kvm/x86.c
3791
vcpu->arch.st.preempted = 0;
arch/x86/kvm/x86.c
3794
unsafe_get_user(version, &st->version, out);
arch/x86/kvm/x86.c
3799
unsafe_put_user(version, &st->version, out);
arch/x86/kvm/x86.c
3803
unsafe_get_user(steal, &st->steal, out);
arch/x86/kvm/x86.c
3805
vcpu->arch.st.last_steal;
arch/x86/kvm/x86.c
3806
vcpu->arch.st.last_steal = current->sched_info.run_delay;
arch/x86/kvm/x86.c
3807
unsafe_put_user(steal, &st->steal, out);
arch/x86/kvm/x86.c
3810
unsafe_put_user(version, &st->version, out);
arch/x86/kvm/x86.c
4154
vcpu->arch.st.msr_val = data;
arch/x86/kvm/x86.c
4517
msr_info->data = vcpu->arch.st.msr_val;
arch/x86/kvm/x86.c
5225
struct gfn_to_hva_cache *ghc = &vcpu->arch.st.cache;
arch/x86/kvm/x86.c
5226
struct kvm_steal_time __user *st;
arch/x86/kvm/x86.c
5229
gpa_t gpa = vcpu->arch.st.msr_val & KVM_STEAL_VALID_BITS;
arch/x86/kvm/x86.c
5244
if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
arch/x86/kvm/x86.c
5247
if (vcpu->arch.st.preempted)
arch/x86/kvm/x86.c
5261
st = (struct kvm_steal_time __user *)ghc->hva;
arch/x86/kvm/x86.c
5262
BUILD_BUG_ON(sizeof(st->preempted) != sizeof(preempted));
arch/x86/kvm/x86.c
5264
if (!copy_to_user_nofault(&st->preempted, &preempted, sizeof(preempted)))
arch/x86/kvm/x86.c
5265
vcpu->arch.st.preempted = KVM_VCPU_PREEMPTED;
arch/x86/mm/dump_pagetables.c
227
static void note_wx(struct pg_state *st, unsigned long addr)
arch/x86/mm/dump_pagetables.c
231
npages = (addr - st->start_address) / PAGE_SIZE;
arch/x86/mm/dump_pagetables.c
238
if (pcibios_enabled && st->start_address >= PAGE_OFFSET + BIOS_BEGIN &&
arch/x86/mm/dump_pagetables.c
245
st->wx_pages += npages;
arch/x86/mm/dump_pagetables.c
248
(void *)st->start_address);
arch/x86/mm/dump_pagetables.c
253
struct pg_state *st = container_of(pt_st, struct pg_state, ptdump);
arch/x86/mm/dump_pagetables.c
258
pgprotval_t higher_prot = st->prot_levels[level - 1];
arch/x86/mm/dump_pagetables.c
266
st->prot_levels[level] = effective;
arch/x86/mm/dump_pagetables.c
269
static void effective_prot_pte(struct ptdump_state *st, pte_t pte)
arch/x86/mm/dump_pagetables.c
271
effective_prot(st, 4, pte_val(pte));
arch/x86/mm/dump_pagetables.c
274
static void effective_prot_pmd(struct ptdump_state *st, pmd_t pmd)
arch/x86/mm/dump_pagetables.c
276
effective_prot(st, 3, pmd_val(pmd));
arch/x86/mm/dump_pagetables.c
279
static void effective_prot_pud(struct ptdump_state *st, pud_t pud)
arch/x86/mm/dump_pagetables.c
281
effective_prot(st, 2, pud_val(pud));
arch/x86/mm/dump_pagetables.c
284
static void effective_prot_p4d(struct ptdump_state *st, p4d_t p4d)
arch/x86/mm/dump_pagetables.c
286
effective_prot(st, 1, p4d_val(p4d));
arch/x86/mm/dump_pagetables.c
289
static void effective_prot_pgd(struct ptdump_state *st, pgd_t pgd)
arch/x86/mm/dump_pagetables.c
291
effective_prot(st, 0, pgd_val(pgd));
arch/x86/mm/dump_pagetables.c
303
struct pg_state *st = container_of(pt_st, struct pg_state, ptdump);
arch/x86/mm/dump_pagetables.c
307
struct seq_file *m = st->seq;
arch/x86/mm/dump_pagetables.c
313
new_eff = st->prot_levels[level];
arch/x86/mm/dump_pagetables.c
320
cur = st->current_prot;
arch/x86/mm/dump_pagetables.c
321
eff = st->effective_prot;
arch/x86/mm/dump_pagetables.c
323
if (st->level == -1) {
arch/x86/mm/dump_pagetables.c
325
st->current_prot = new_prot;
arch/x86/mm/dump_pagetables.c
326
st->effective_prot = new_eff;
arch/x86/mm/dump_pagetables.c
327
st->level = level;
arch/x86/mm/dump_pagetables.c
328
st->marker = address_markers;
arch/x86/mm/dump_pagetables.c
329
st->lines = 0;
arch/x86/mm/dump_pagetables.c
330
pt_dump_seq_printf(m, st->to_dmesg, "---[ %s ]---\n",
arch/x86/mm/dump_pagetables.c
331
st->marker->name);
arch/x86/mm/dump_pagetables.c
332
} else if (new_prot != cur || new_eff != eff || level != st->level ||
arch/x86/mm/dump_pagetables.c
333
addr >= st->marker[1].start_address) {
arch/x86/mm/dump_pagetables.c
338
if (st->check_wx && (eff & _PAGE_RW) && !(eff & _PAGE_NX))
arch/x86/mm/dump_pagetables.c
339
note_wx(st, addr);
arch/x86/mm/dump_pagetables.c
344
if (!st->marker->max_lines ||
arch/x86/mm/dump_pagetables.c
345
st->lines < st->marker->max_lines) {
arch/x86/mm/dump_pagetables.c
346
pt_dump_seq_printf(m, st->to_dmesg,
arch/x86/mm/dump_pagetables.c
348
width, st->start_address,
arch/x86/mm/dump_pagetables.c
351
delta = addr - st->start_address;
arch/x86/mm/dump_pagetables.c
356
pt_dump_cont_printf(m, st->to_dmesg, "%9lu%c ",
arch/x86/mm/dump_pagetables.c
358
printk_prot(m, st->current_prot, st->level,
arch/x86/mm/dump_pagetables.c
359
st->to_dmesg);
arch/x86/mm/dump_pagetables.c
361
st->lines++;
arch/x86/mm/dump_pagetables.c
368
if (addr >= st->marker[1].start_address) {
arch/x86/mm/dump_pagetables.c
369
if (st->marker->max_lines &&
arch/x86/mm/dump_pagetables.c
370
st->lines > st->marker->max_lines) {
arch/x86/mm/dump_pagetables.c
372
st->lines - st->marker->max_lines;
arch/x86/mm/dump_pagetables.c
373
pt_dump_seq_printf(m, st->to_dmesg,
arch/x86/mm/dump_pagetables.c
378
st->marker++;
arch/x86/mm/dump_pagetables.c
379
st->lines = 0;
arch/x86/mm/dump_pagetables.c
380
pt_dump_seq_printf(m, st->to_dmesg, "---[ %s ]---\n",
arch/x86/mm/dump_pagetables.c
381
st->marker->name);
arch/x86/mm/dump_pagetables.c
384
st->start_address = addr;
arch/x86/mm/dump_pagetables.c
385
st->current_prot = new_prot;
arch/x86/mm/dump_pagetables.c
386
st->effective_prot = new_eff;
arch/x86/mm/dump_pagetables.c
387
st->level = level;
arch/x86/mm/dump_pagetables.c
437
struct pg_state st = {
arch/x86/mm/dump_pagetables.c
458
ptdump_walk_pgd(&st.ptdump, mm, pgd);
arch/x86/mm/dump_pagetables.c
462
if (st.wx_pages) {
arch/x86/mm/dump_pagetables.c
464
st.wx_pages);
arch/x86/net/bpf_jit_comp.c
2216
goto st;
arch/x86/net/bpf_jit_comp.c
2222
goto st;
arch/x86/net/bpf_jit_comp.c
2228
goto st;
arch/x86/net/bpf_jit_comp.c
2237
st: insn_off = insn->off;
arch/x86/um/ptrace.c
31
struct _fpxreg *st = NULL;
arch/x86/um/ptrace.c
41
st = (struct _fpxreg *) FPREG_ADDR(fxsave, i);
arch/x86/um/ptrace.c
43
switch (st->exponent & 0x7fff) {
arch/x86/um/ptrace.c
48
if (!st->significand[0] &&
arch/x86/um/ptrace.c
49
!st->significand[1] &&
arch/x86/um/ptrace.c
50
!st->significand[2] &&
arch/x86/um/ptrace.c
51
!st->significand[3]) {
arch/x86/um/ptrace.c
58
if (st->significand[3] & 0x8000)
arch/xtensa/include/asm/asmmacro.h
221
abs \dst, \src
arch/xtensa/include/asm/asmmacro.h
225
mov \dst, \tmp
block/bfq-cgroup.c
810
static void bfq_flush_idle_tree(struct bfq_service_tree *st)
block/bfq-cgroup.c
812
struct bfq_entity *entity = st->first_idle;
block/bfq-cgroup.c
814
for (; entity ; entity = st->first_idle)
block/bfq-cgroup.c
857
struct bfq_service_tree *st,
block/bfq-cgroup.c
860
struct rb_root *active = &st->active;
block/bfq-cgroup.c
882
struct bfq_service_tree *st;
block/bfq-cgroup.c
899
st = bfqg->sched_data.service_tree + i;
block/bfq-cgroup.c
913
bfq_reparent_active_queues(bfqd, bfqg, st, i);
block/bfq-cgroup.c
926
bfq_flush_idle_tree(st);
block/bfq-iosched.h
1135
void bfq_put_idle_entity(struct bfq_service_tree *st,
block/bfq-wf2q.c
1030
bfq_active_extract(st, entity);
block/bfq-wf2q.c
1046
bfq_active_extract(st, entity);
block/bfq-wf2q.c
1049
bfq_update_fin_time_enqueue(entity, st, false);
block/bfq-wf2q.c
1055
struct bfq_service_tree *st = bfq_entity_service_tree(entity);
block/bfq-wf2q.c
1058
entity->tree == &st->active)
block/bfq-wf2q.c
110
struct bfq_service_tree *st =
block/bfq-wf2q.c
1111
struct bfq_service_tree *st;
block/bfq-wf2q.c
1126
st = bfq_entity_service_tree(entity);
block/bfq-wf2q.c
1141
if (entity->tree == &st->active)
block/bfq-wf2q.c
1142
bfq_active_extract(st, entity);
block/bfq-wf2q.c
1143
else if (!is_in_service && entity->tree == &st->idle)
block/bfq-wf2q.c
1144
bfq_idle_extract(st, entity);
block/bfq-wf2q.c
1146
if (!ins_into_idle_tree || !bfq_gt(entity->finish, st->vtime))
block/bfq-wf2q.c
1147
bfq_forget_entity(st, entity, is_in_service);
block/bfq-wf2q.c
1149
bfq_idle_insert(st, entity);
block/bfq-wf2q.c
117
!bfq_gt(new_entity->start, st->vtime)
block/bfq-wf2q.c
1266
static u64 bfq_calc_vtime_jump(struct bfq_service_tree *st)
block/bfq-wf2q.c
1268
struct bfq_entity *root_entity = bfq_root_active_entity(&st->active);
block/bfq-wf2q.c
1270
if (bfq_gt(root_entity->min_start, st->vtime))
block/bfq-wf2q.c
1273
return st->vtime;
block/bfq-wf2q.c
1276
static void bfq_update_vtime(struct bfq_service_tree *st, u64 new_value)
block/bfq-wf2q.c
1278
if (new_value > st->vtime) {
block/bfq-wf2q.c
1279
st->vtime = new_value;
block/bfq-wf2q.c
1280
bfq_forget_idle(st);
block/bfq-wf2q.c
1296
static struct bfq_entity *bfq_first_active_entity(struct bfq_service_tree *st,
block/bfq-wf2q.c
1300
struct rb_node *node = st->active.rb_node;
block/bfq-wf2q.c
1349
__bfq_lookup_next_entity(struct bfq_service_tree *st, bool in_service)
block/bfq-wf2q.c
1354
if (RB_EMPTY_ROOT(&st->active))
block/bfq-wf2q.c
1361
new_vtime = bfq_calc_vtime_jump(st);
block/bfq-wf2q.c
1374
bfq_update_vtime(st, new_vtime);
block/bfq-wf2q.c
1376
entity = bfq_first_active_entity(st, new_vtime);
block/bfq-wf2q.c
1393
struct bfq_service_tree *st = sd->service_tree;
block/bfq-wf2q.c
1394
struct bfq_service_tree *idle_class_st = st + (BFQ_IOPRIO_CLASSES - 1);
block/bfq-wf2q.c
1433
entity = __bfq_lookup_next_entity(st + class_idx,
block/bfq-wf2q.c
349
static void bfq_idle_extract(struct bfq_service_tree *st,
block/bfq-wf2q.c
355
if (entity == st->first_idle) {
block/bfq-wf2q.c
357
st->first_idle = bfq_entity_of(next);
block/bfq-wf2q.c
360
if (entity == st->last_idle) {
block/bfq-wf2q.c
362
st->last_idle = bfq_entity_of(next);
block/bfq-wf2q.c
365
bfq_extract(&st->idle, entity);
block/bfq-wf2q.c
480
static void bfq_active_insert(struct bfq_service_tree *st,
block/bfq-wf2q.c
486
bfq_insert(&st->active, entity);
block/bfq-wf2q.c
570
static void bfq_active_extract(struct bfq_service_tree *st,
block/bfq-wf2q.c
577
bfq_extract(&st->active, entity);
block/bfq-wf2q.c
592
static void bfq_idle_insert(struct bfq_service_tree *st,
block/bfq-wf2q.c
596
struct bfq_entity *first_idle = st->first_idle;
block/bfq-wf2q.c
597
struct bfq_entity *last_idle = st->last_idle;
block/bfq-wf2q.c
600
st->first_idle = entity;
block/bfq-wf2q.c
602
st->last_idle = entity;
block/bfq-wf2q.c
604
bfq_insert(&st->idle, entity);
block/bfq-wf2q.c
625
static void bfq_forget_entity(struct bfq_service_tree *st,
block/bfq-wf2q.c
632
st->wsum -= entity->weight;
block/bfq-wf2q.c
642
void bfq_put_idle_entity(struct bfq_service_tree *st, struct bfq_entity *entity)
block/bfq-wf2q.c
644
bfq_idle_extract(st, entity);
block/bfq-wf2q.c
645
bfq_forget_entity(st, entity,
block/bfq-wf2q.c
656
static void bfq_forget_idle(struct bfq_service_tree *st)
block/bfq-wf2q.c
658
struct bfq_entity *first_idle = st->first_idle;
block/bfq-wf2q.c
659
struct bfq_entity *last_idle = st->last_idle;
block/bfq-wf2q.c
661
if (RB_EMPTY_ROOT(&st->active) && last_idle &&
block/bfq-wf2q.c
662
!bfq_gt(last_idle->finish, st->vtime)) {
block/bfq-wf2q.c
667
st->vtime = last_idle->finish;
block/bfq-wf2q.c
670
if (first_idle && !bfq_gt(first_idle->finish, st->vtime))
block/bfq-wf2q.c
671
bfq_put_idle_entity(st, first_idle);
block/bfq-wf2q.c
790
struct bfq_service_tree *st;
block/bfq-wf2q.c
800
st = bfq_entity_service_tree(entity);
block/bfq-wf2q.c
804
st->vtime += bfq_delta(served, st->wsum);
block/bfq-wf2q.c
805
bfq_forget_idle(st);
block/bfq-wf2q.c
856
struct bfq_service_tree *st,
block/bfq-wf2q.c
866
st = __bfq_entity_update_weight_prio(st, entity, true);
block/bfq-wf2q.c
902
if (backshifted && bfq_gt(st->vtime, entity->finish)) {
block/bfq-wf2q.c
903
unsigned long delta = st->vtime - entity->finish;
block/bfq-wf2q.c
912
bfq_active_insert(st, entity);
block/bfq-wf2q.c
930
struct bfq_service_tree *st = bfq_entity_service_tree(entity);
block/bfq-wf2q.c
935
if (non_blocking_wait_rq && bfq_gt(st->vtime, entity->finish)) {
block/bfq-wf2q.c
939
min_vstart = st->vtime;
block/bfq-wf2q.c
941
if (entity->tree == &st->idle) {
block/bfq-wf2q.c
946
bfq_idle_extract(st, entity);
block/bfq-wf2q.c
956
st->wsum += entity->weight;
block/bfq-wf2q.c
968
bfq_update_fin_time_enqueue(entity, st, backshifted);
block/bfq-wf2q.c
989
struct bfq_service_tree *st = bfq_entity_service_tree(entity);
block/blk-iocost.c
1987
u64 st, sf;
block/blk-iocost.c
2010
st = DIV64_U64_ROUND_UP(
block/blk-iocost.c
2013
sf = iocg->child_active_sum - st;
block/blk-iocost.c
2021
iocg->child_adjusted_sum = sf + DIV64_U64_ROUND_UP(st * wptp, wpt);
block/partitions/atari.c
110
partsect + be32_to_cpu(xrs->part[0].st),
block/partitions/atari.c
124
partsect = be32_to_cpu(xrs->part[1].st) + extensect;
block/partitions/atari.c
144
be32_to_cpu(pi->st),
block/partitions/atari.c
24
be32_to_cpu((pi)->st) <= (hdsiz) && \
block/partitions/atari.c
25
be32_to_cpu((pi)->st) + be32_to_cpu((pi)->siz) <= (hdsiz))
block/partitions/atari.c
84
put_partition (state, slot, be32_to_cpu(pi->st),
block/partitions/atari.c
93
partsect = extensect = be32_to_cpu(pi->st);
block/partitions/atari.h
21
__be32 st; /* start of partition */
crypto/aegis128-neon-inner.c
105
struct aegis128_state aegis128_update_neon(struct aegis128_state st,
crypto/aegis128-neon-inner.c
108
m ^= aegis_aes_round(st.v[4]);
crypto/aegis128-neon-inner.c
109
st.v[4] ^= aegis_aes_round(st.v[3]);
crypto/aegis128-neon-inner.c
110
st.v[3] ^= aegis_aes_round(st.v[2]);
crypto/aegis128-neon-inner.c
111
st.v[2] ^= aegis_aes_round(st.v[1]);
crypto/aegis128-neon-inner.c
112
st.v[1] ^= aegis_aes_round(st.v[0]);
crypto/aegis128-neon-inner.c
113
st.v[0] ^= m;
crypto/aegis128-neon-inner.c
115
return st;
crypto/aegis128-neon-inner.c
145
struct aegis128_state st = {{
crypto/aegis128-neon-inner.c
157
st = aegis128_update_neon(st, k);
crypto/aegis128-neon-inner.c
158
st = aegis128_update_neon(st, kiv);
crypto/aegis128-neon-inner.c
160
aegis128_save_state_neon(st, state);
crypto/aegis128-neon-inner.c
165
struct aegis128_state st = aegis128_load_state_neon(state);
crypto/aegis128-neon-inner.c
169
st = aegis128_update_neon(st, vld1q_u8(msg));
crypto/aegis128-neon-inner.c
171
aegis128_save_state_neon(st, state);
crypto/aegis128-neon-inner.c
223
struct aegis128_state st = aegis128_load_state_neon(state);
crypto/aegis128-neon-inner.c
230
uint8x16_t s = st.v[1] ^ (st.v[2] & st.v[3]) ^ st.v[4];
crypto/aegis128-neon-inner.c
233
st = aegis128_update_neon(st, msg);
crypto/aegis128-neon-inner.c
243
uint8x16_t s = st.v[1] ^ (st.v[2] & st.v[3]) ^ st.v[4];
crypto/aegis128-neon-inner.c
255
st = aegis128_update_neon(st, m);
crypto/aegis128-neon-inner.c
266
aegis128_save_state_neon(st, state);
crypto/aegis128-neon-inner.c
272
struct aegis128_state st = aegis128_load_state_neon(state);
crypto/aegis128-neon-inner.c
279
msg = vld1q_u8(src) ^ st.v[1] ^ (st.v[2] & st.v[3]) ^ st.v[4];
crypto/aegis128-neon-inner.c
280
st = aegis128_update_neon(st, msg);
crypto/aegis128-neon-inner.c
289
uint8x16_t s = st.v[1] ^ (st.v[2] & st.v[3]) ^ st.v[4];
crypto/aegis128-neon-inner.c
301
st = aegis128_update_neon(st, m);
crypto/aegis128-neon-inner.c
312
aegis128_save_state_neon(st, state);
crypto/aegis128-neon-inner.c
320
struct aegis128_state st = aegis128_load_state_neon(state);
crypto/aegis128-neon-inner.c
326
v = st.v[3] ^ (uint8x16_t)vcombine_u64(vmov_n_u64(8ULL * assoclen),
crypto/aegis128-neon-inner.c
330
st = aegis128_update_neon(st, v);
crypto/aegis128-neon-inner.c
332
v = st.v[0] ^ st.v[1] ^ st.v[2] ^ st.v[3] ^ st.v[4];
crypto/aegis128-neon-inner.c
40
static void aegis128_save_state_neon(struct aegis128_state st, void *state)
crypto/aegis128-neon-inner.c
42
vst1q_u8(state, st.v[0]);
crypto/aegis128-neon-inner.c
43
vst1q_u8(state + 16, st.v[1]);
crypto/aegis128-neon-inner.c
44
vst1q_u8(state + 32, st.v[2]);
crypto/aegis128-neon-inner.c
45
vst1q_u8(state + 48, st.v[3]);
crypto/aegis128-neon-inner.c
46
vst1q_u8(state + 64, st.v[4]);
drivers/accel/ethosu/ethosu_gem.c
150
static void cmd_state_init(struct cmd_state *st)
drivers/accel/ethosu/ethosu_gem.c
153
memset(st, 0xff, sizeof(*st));
drivers/accel/ethosu/ethosu_gem.c
264
u16 op, struct cmd_state *st,
drivers/accel/ethosu/ethosu_gem.c
271
if (st->ifm.stride_kernel == U16_MAX)
drivers/accel/ethosu/ethosu_gem.c
273
u32 stride_y = ((st->ifm.stride_kernel >> 8) & 0x2) +
drivers/accel/ethosu/ethosu_gem.c
274
((st->ifm.stride_kernel >> 1) & 0x1) + 1;
drivers/accel/ethosu/ethosu_gem.c
275
u32 stride_x = ((st->ifm.stride_kernel >> 5) & 0x2) +
drivers/accel/ethosu/ethosu_gem.c
276
(st->ifm.stride_kernel & 0x1) + 1;
drivers/accel/ethosu/ethosu_gem.c
277
s32 ifm_height = st->ofm.height[2] * stride_y +
drivers/accel/ethosu/ethosu_gem.c
278
st->ifm.height[2] - (st->ifm.pad_top + st->ifm.pad_bottom);
drivers/accel/ethosu/ethosu_gem.c
279
s32 ifm_width = st->ofm.width * stride_x +
drivers/accel/ethosu/ethosu_gem.c
280
st->ifm.width - (st->ifm.pad_left + st->ifm.pad_right);
drivers/accel/ethosu/ethosu_gem.c
285
len = feat_matrix_length(edev, info, &st->ifm, ifm_width,
drivers/accel/ethosu/ethosu_gem.c
286
ifm_height, st->ifm.depth, false);
drivers/accel/ethosu/ethosu_gem.c
288
op, st->ifm.region, st->ifm.base[0], len);
drivers/accel/ethosu/ethosu_gem.c
294
len = feat_matrix_length(edev, info, &st->ifm2, st->ifm.depth,
drivers/accel/ethosu/ethosu_gem.c
295
0, st->ofm.depth, false);
drivers/accel/ethosu/ethosu_gem.c
297
op, st->ifm2.region, st->ifm2.base[0], len);
drivers/accel/ethosu/ethosu_gem.c
304
op, st->weight[0].region, st->weight[0].base,
drivers/accel/ethosu/ethosu_gem.c
305
st->weight[0].base + st->weight[0].length - 1);
drivers/accel/ethosu/ethosu_gem.c
306
if (st->weight[0].region < 0 || st->weight[0].base == U64_MAX ||
drivers/accel/ethosu/ethosu_gem.c
307
st->weight[0].length == U32_MAX)
drivers/accel/ethosu/ethosu_gem.c
309
info->region_size[st->weight[0].region] =
drivers/accel/ethosu/ethosu_gem.c
310
max(info->region_size[st->weight[0].region],
drivers/accel/ethosu/ethosu_gem.c
311
st->weight[0].base + st->weight[0].length);
drivers/accel/ethosu/ethosu_gem.c
316
op, st->scale[0].region, st->scale[0].base,
drivers/accel/ethosu/ethosu_gem.c
317
st->scale[0].base + st->scale[0].length - 1);
drivers/accel/ethosu/ethosu_gem.c
318
if (st->scale[0].region < 0 || st->scale[0].base == U64_MAX ||
drivers/accel/ethosu/ethosu_gem.c
319
st->scale[0].length == U32_MAX)
drivers/accel/ethosu/ethosu_gem.c
321
info->region_size[st->scale[0].region] =
drivers/accel/ethosu/ethosu_gem.c
322
max(info->region_size[st->scale[0].region],
drivers/accel/ethosu/ethosu_gem.c
323
st->scale[0].base + st->scale[0].length);
drivers/accel/ethosu/ethosu_gem.c
326
len = feat_matrix_length(edev, info, &st->ofm, st->ofm.width,
drivers/accel/ethosu/ethosu_gem.c
327
st->ofm.height[2], st->ofm.depth, true);
drivers/accel/ethosu/ethosu_gem.c
329
op, st->ofm.region, st->ofm.base[0], len);
drivers/accel/ethosu/ethosu_gem.c
332
if (!feat_matrix_chained(edev, &st->ofm))
drivers/accel/ethosu/ethosu_gem.c
333
info->output_region[st->ofm.region] = true;
drivers/accel/ethosu/ethosu_gem.c
340
u16 op, struct cmd_state *st,
drivers/accel/ethosu/ethosu_gem.c
348
height = st->ifm.broadcast & 0x1 ? 0 : st->ofm.height[2];
drivers/accel/ethosu/ethosu_gem.c
349
width = st->ifm.broadcast & 0x2 ? 0 : st->ofm.width;
drivers/accel/ethosu/ethosu_gem.c
350
depth = st->ifm.broadcast & 0x4 ? 0 : st->ofm.depth;
drivers/accel/ethosu/ethosu_gem.c
352
len = feat_matrix_length(edev, info, &st->ifm, width,
drivers/accel/ethosu/ethosu_gem.c
355
op, st->ifm.region, st->ifm.base[0], len);
drivers/accel/ethosu/ethosu_gem.c
361
height = st->ifm2.broadcast & 0x1 ? 0 : st->ofm.height[2];
drivers/accel/ethosu/ethosu_gem.c
362
width = st->ifm2.broadcast & 0x2 ? 0 : st->ofm.width;
drivers/accel/ethosu/ethosu_gem.c
363
depth = st->ifm2.broadcast & 0x4 ? 0 : st->ofm.depth;
drivers/accel/ethosu/ethosu_gem.c
365
len = feat_matrix_length(edev, info, &st->ifm2, width,
drivers/accel/ethosu/ethosu_gem.c
368
op, st->ifm2.region, st->ifm2.base[0], len);
drivers/accel/ethosu/ethosu_gem.c
373
len = feat_matrix_length(edev, info, &st->ofm, st->ofm.width,
drivers/accel/ethosu/ethosu_gem.c
374
st->ofm.height[2], st->ofm.depth, true);
drivers/accel/ethosu/ethosu_gem.c
376
op, st->ofm.region, st->ofm.base[0], len);
drivers/accel/ethosu/ethosu_gem.c
379
if (!feat_matrix_chained(edev, &st->ofm))
drivers/accel/ethosu/ethosu_gem.c
380
info->output_region[st->ofm.region] = true;
drivers/accel/ethosu/ethosu_gem.c
393
struct cmd_state st;
drivers/accel/ethosu/ethosu_gem.c
400
cmd_state_init(&st);
drivers/accel/ethosu/ethosu_gem.c
430
srclen = dma_length(info, &st.dma, &st.dma.src);
drivers/accel/ethosu/ethosu_gem.c
431
dstlen = dma_length(info, &st.dma, &st.dma.dst);
drivers/accel/ethosu/ethosu_gem.c
435
if (st.dma.dst.region >= 0)
drivers/accel/ethosu/ethosu_gem.c
436
info->output_region[st.dma.dst.region] = true;
drivers/accel/ethosu/ethosu_gem.c
438
st.dma.src.region, st.dma.src.offset, srclen,
drivers/accel/ethosu/ethosu_gem.c
439
st.dma.dst.region, st.dma.dst.offset, dstlen);
drivers/accel/ethosu/ethosu_gem.c
444
use_scale = !(st.ofm.precision & 0x100);
drivers/accel/ethosu/ethosu_gem.c
445
ret = calc_sizes(ddev, info, cmd, &st, true, use_ifm2,
drivers/accel/ethosu/ethosu_gem.c
452
use_scale = !(st.ofm.precision & 0x100);
drivers/accel/ethosu/ethosu_gem.c
453
ret = calc_sizes(ddev, info, cmd, &st, use_ifm, false,
drivers/accel/ethosu/ethosu_gem.c
460
(st.ifm2.broadcast & 0x80) :
drivers/accel/ethosu/ethosu_gem.c
461
(st.ifm2.broadcast == 8);
drivers/accel/ethosu/ethosu_gem.c
464
use_ifm = st.ifm.broadcast != 8;
drivers/accel/ethosu/ethosu_gem.c
465
ret = calc_sizes_elemwise(ddev, info, cmd, &st, use_ifm, use_ifm2);
drivers/accel/ethosu/ethosu_gem.c
472
st.ifm.width = param;
drivers/accel/ethosu/ethosu_gem.c
475
st.ifm.height[2] = param;
drivers/accel/ethosu/ethosu_gem.c
478
st.ifm.stride_kernel = param;
drivers/accel/ethosu/ethosu_gem.c
481
st.ifm.pad_top = param & 0x7f;
drivers/accel/ethosu/ethosu_gem.c
484
st.ifm.pad_left = param & 0x7f;
drivers/accel/ethosu/ethosu_gem.c
487
st.ifm.pad_right = param & 0xff;
drivers/accel/ethosu/ethosu_gem.c
490
st.ifm.pad_bottom = param & 0xff;
drivers/accel/ethosu/ethosu_gem.c
493
st.ifm.depth = param;
drivers/accel/ethosu/ethosu_gem.c
496
st.ifm.precision = param;
drivers/accel/ethosu/ethosu_gem.c
499
st.ifm.broadcast = param;
drivers/accel/ethosu/ethosu_gem.c
502
st.ifm.region = param & 0x7;
drivers/accel/ethosu/ethosu_gem.c
505
st.ifm.width0 = param;
drivers/accel/ethosu/ethosu_gem.c
508
st.ifm.height[0] = param;
drivers/accel/ethosu/ethosu_gem.c
511
st.ifm.height[1] = param;
drivers/accel/ethosu/ethosu_gem.c
517
st.ifm.base[cmd & 0x3] = addr;
drivers/accel/ethosu/ethosu_gem.c
520
st.ifm.stride_x = addr;
drivers/accel/ethosu/ethosu_gem.c
523
st.ifm.stride_y = addr;
drivers/accel/ethosu/ethosu_gem.c
526
st.ifm.stride_c = addr;
drivers/accel/ethosu/ethosu_gem.c
530
st.ofm.width = param;
drivers/accel/ethosu/ethosu_gem.c
533
st.ofm.height[2] = param;
drivers/accel/ethosu/ethosu_gem.c
536
st.ofm.depth = param;
drivers/accel/ethosu/ethosu_gem.c
539
st.ofm.precision = param;
drivers/accel/ethosu/ethosu_gem.c
542
st.ofm.region = param & 0x7;
drivers/accel/ethosu/ethosu_gem.c
545
st.ofm.width0 = param;
drivers/accel/ethosu/ethosu_gem.c
548
st.ofm.height[0] = param;
drivers/accel/ethosu/ethosu_gem.c
551
st.ofm.height[1] = param;
drivers/accel/ethosu/ethosu_gem.c
557
st.ofm.base[cmd & 0x3] = addr;
drivers/accel/ethosu/ethosu_gem.c
560
st.ofm.stride_x = addr;
drivers/accel/ethosu/ethosu_gem.c
563
st.ofm.stride_y = addr;
drivers/accel/ethosu/ethosu_gem.c
566
st.ofm.stride_c = addr;
drivers/accel/ethosu/ethosu_gem.c
570
st.ifm2.broadcast = param;
drivers/accel/ethosu/ethosu_gem.c
573
st.ifm2.precision = param;
drivers/accel/ethosu/ethosu_gem.c
576
st.ifm2.region = param & 0x7;
drivers/accel/ethosu/ethosu_gem.c
579
st.ifm2.width0 = param;
drivers/accel/ethosu/ethosu_gem.c
582
st.ifm2.height[0] = param;
drivers/accel/ethosu/ethosu_gem.c
585
st.ifm2.height[1] = param;
drivers/accel/ethosu/ethosu_gem.c
591
st.ifm2.base[cmd & 0x3] = addr;
drivers/accel/ethosu/ethosu_gem.c
594
st.ifm2.stride_x = addr;
drivers/accel/ethosu/ethosu_gem.c
597
st.ifm2.stride_y = addr;
drivers/accel/ethosu/ethosu_gem.c
600
st.ifm2.stride_c = addr;
drivers/accel/ethosu/ethosu_gem.c
604
st.weight[0].region = param & 0x7;
drivers/accel/ethosu/ethosu_gem.c
607
st.scale[0].region = param & 0x7;
drivers/accel/ethosu/ethosu_gem.c
610
st.weight[0].base = addr;
drivers/accel/ethosu/ethosu_gem.c
613
st.weight[0].length = cmds[1];
drivers/accel/ethosu/ethosu_gem.c
616
st.scale[0].base = addr;
drivers/accel/ethosu/ethosu_gem.c
619
st.scale[0].length = cmds[1];
drivers/accel/ethosu/ethosu_gem.c
622
st.weight[1].base = addr;
drivers/accel/ethosu/ethosu_gem.c
625
st.weight[1].length = cmds[1];
drivers/accel/ethosu/ethosu_gem.c
629
st.scale[1].base = addr;
drivers/accel/ethosu/ethosu_gem.c
631
st.weight[2].base = addr;
drivers/accel/ethosu/ethosu_gem.c
635
st.scale[1].length = cmds[1];
drivers/accel/ethosu/ethosu_gem.c
637
st.weight[2].length = cmds[1];
drivers/accel/ethosu/ethosu_gem.c
640
st.weight[3].base = addr;
drivers/accel/ethosu/ethosu_gem.c
643
st.weight[3].length = cmds[1];
drivers/accel/ethosu/ethosu_gem.c
648
st.dma.src.region = -1;
drivers/accel/ethosu/ethosu_gem.c
650
st.dma.src.region = param & 0x7;
drivers/accel/ethosu/ethosu_gem.c
651
st.dma.mode = (param >> 9) & 0x3;
drivers/accel/ethosu/ethosu_gem.c
655
st.dma.dst.region = -1;
drivers/accel/ethosu/ethosu_gem.c
657
st.dma.dst.region = param & 0x7;
drivers/accel/ethosu/ethosu_gem.c
660
st.dma.size0 = param;
drivers/accel/ethosu/ethosu_gem.c
663
st.dma.size1 = param;
drivers/accel/ethosu/ethosu_gem.c
666
st.dma.src.stride[0] = ((s64)addr << 24) >> 24;
drivers/accel/ethosu/ethosu_gem.c
669
st.dma.src.stride[1] = ((s64)addr << 24) >> 24;
drivers/accel/ethosu/ethosu_gem.c
672
st.dma.dst.stride[0] = ((s64)addr << 24) >> 24;
drivers/accel/ethosu/ethosu_gem.c
675
st.dma.dst.stride[1] = ((s64)addr << 24) >> 24;
drivers/accel/ethosu/ethosu_gem.c
678
st.dma.src.offset = addr;
drivers/accel/ethosu/ethosu_gem.c
681
st.dma.dst.offset = addr;
drivers/accel/ethosu/ethosu_gem.c
684
st.dma.src.len = st.dma.dst.len = addr;
drivers/block/loop.c
454
struct kstat st;
drivers/block/loop.c
459
if (!vfs_getattr(&file->f_path, &st, STATX_DIOALIGN, 0) &&
drivers/block/loop.c
460
(st.result_mask & STATX_DIOALIGN))
drivers/block/loop.c
461
return st.dio_offset_align;
drivers/block/xen-blkback/blkback.c
148
unsigned short op, int st);
drivers/block/xen-blkback/blkback.c
1489
unsigned short op, int st)
drivers/block/xen-blkback/blkback.c
1518
resp->status = st;
drivers/block/zloop.c
1037
struct kstat st;
drivers/block/zloop.c
1047
else if (!vfs_getattr(&zone->file->f_path, &st, STATX_DIOALIGN, 0) &&
drivers/block/zloop.c
1048
(st.result_mask & STATX_DIOALIGN))
drivers/block/zloop.c
1049
zlo->block_size = st.dio_offset_align;
drivers/bus/mhi/host/main.c
895
enum dev_st_transition st = DEV_ST_TRANSITION_MAX;
drivers/bus/mhi/host/main.c
902
st = DEV_ST_TRANSITION_SBL;
drivers/bus/mhi/host/main.c
906
st = DEV_ST_TRANSITION_MISSION_MODE;
drivers/bus/mhi/host/main.c
909
st = DEV_ST_TRANSITION_FP;
drivers/bus/mhi/host/main.c
922
if (st != DEV_ST_TRANSITION_MAX)
drivers/bus/mhi/host/main.c
923
mhi_queue_state_transition(mhi_cntrl, st);
drivers/char/agp/intel-gtt.c
102
struct sg_table *st)
drivers/char/agp/intel-gtt.c
109
if (sg_alloc_table(st, num_entries, GFP_KERNEL))
drivers/char/agp/intel-gtt.c
112
for_each_sg(st->sgl, sg, num_entries, i)
drivers/char/agp/intel-gtt.c
115
if (!dma_map_sg(&intel_private.pcidev->dev, st->sgl, st->nents,
drivers/char/agp/intel-gtt.c
122
sg_free_table(st);
drivers/char/agp/intel-gtt.c
128
struct sg_table st;
drivers/char/agp/intel-gtt.c
134
st.sgl = sg_list;
drivers/char/agp/intel-gtt.c
135
st.orig_nents = st.nents = num_sg;
drivers/char/agp/intel-gtt.c
137
sg_free_table(&st);
drivers/char/agp/intel-gtt.c
882
void intel_gmch_gtt_insert_sg_entries(struct sg_table *st,
drivers/char/agp/intel-gtt.c
894
for_each_sg(st->sgl, sg, st->nents, i) {
drivers/char/agp/intel-gtt.c
962
struct sg_table st;
drivers/char/agp/intel-gtt.c
964
ret = intel_gtt_map_memory(mem->pages, mem->page_count, &st);
drivers/char/agp/intel-gtt.c
968
intel_gmch_gtt_insert_sg_entries(&st, pg_start, type);
drivers/char/agp/intel-gtt.c
969
mem->sg_list = st.sgl;
drivers/char/agp/intel-gtt.c
970
mem->num_sg = st.nents;
drivers/char/tpm/tpm_tis.c
142
acpi_status st;
drivers/char/tpm/tpm_tis.c
151
st = acpi_get_table(ACPI_SIG_TPM2, 1, (struct acpi_table_header **)&tbl);
drivers/char/tpm/tpm_tis.c
152
if (ACPI_FAILURE(st) || tbl->header.length < sizeof(*tbl)) {
drivers/clocksource/timer-sun5i.c
262
struct sun5i_timer *st;
drivers/clocksource/timer-sun5i.c
269
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/clocksource/timer-sun5i.c
270
if (!st)
drivers/clocksource/timer-sun5i.c
273
platform_set_drvdata(pdev, st);
drivers/clocksource/timer-sun5i.c
303
st->base = timer_base;
drivers/clocksource/timer-sun5i.c
304
st->ticks_per_jiffy = DIV_ROUND_UP(rate, HZ);
drivers/clocksource/timer-sun5i.c
305
st->clk = clk;
drivers/clocksource/timer-sun5i.c
306
st->clk_rate_cb.notifier_call = sun5i_rate_cb;
drivers/clocksource/timer-sun5i.c
307
st->clk_rate_cb.next = NULL;
drivers/clocksource/timer-sun5i.c
308
st->quirks = quirks;
drivers/clocksource/timer-sun5i.c
310
ret = devm_clk_notifier_register(dev, clk, &st->clk_rate_cb);
drivers/clocksource/timer-sun5i.c
334
clocksource_unregister(&st->clksrc);
drivers/clocksource/timer-sun5i.c
340
struct sun5i_timer *st = platform_get_drvdata(pdev);
drivers/clocksource/timer-sun5i.c
342
clocksource_unregister(&st->clksrc);
drivers/dma/tegra20-apb-dma.c
609
bool st;
drivers/dma/tegra20-apb-dma.c
629
st = handle_continuous_head_request(tdc, to_terminate);
drivers/dma/tegra20-apb-dma.c
630
if (!st)
drivers/dma/xilinx/xdma.c
543
int st = 0;
drivers/dma/xilinx/xdma.c
546
regmap_read(xdev->rmap, xdma_chan->base + XDMA_CHAN_STATUS, &st);
drivers/dma/xilinx/xdma.c
547
if (st & XDMA_CHAN_STATUS_BUSY)
drivers/dma/xilinx/xdma.c
880
u32 st;
drivers/dma/xilinx/xdma.c
894
ret = regmap_read(xdev->rmap, xchan->base + XDMA_CHAN_STATUS_RC, &st);
drivers/dma/xilinx/xdma.c
900
st &= XDMA_CHAN_STATUS_MASK;
drivers/dma/xilinx/xdma.c
901
if ((st & XDMA_CHAN_ERROR_MASK) ||
drivers/dma/xilinx/xdma.c
902
!(st & (CHAN_CTRL_IE_DESC_COMPLETED | CHAN_CTRL_IE_DESC_STOPPED))) {
drivers/dma/xilinx/xdma.c
904
xdma_err(xdev, "channel error, status register value: 0x%x", st);
drivers/firmware/arm_scmi/clock.c
256
static int iter_clk_possible_parents_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/clock.c
264
st->num_returned = NUM_PARENTS_RETURNED(flags);
drivers/firmware/arm_scmi/clock.c
265
st->num_remaining = NUM_PARENTS_REMAINING(flags);
drivers/firmware/arm_scmi/clock.c
271
if (!st->max_resources) {
drivers/firmware/arm_scmi/clock.c
272
int num_parents = st->num_returned + st->num_remaining;
drivers/firmware/arm_scmi/clock.c
281
st->max_resources = st->num_returned + st->num_remaining;
drivers/firmware/arm_scmi/clock.c
289
struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/clock.c
295
p->clkd->info.parents[st->desc_index + st->loop_idx] =
drivers/firmware/arm_scmi/clock.c
296
le32_to_cpu(r->possible_parents[st->loop_idx]);
drivers/firmware/arm_scmi/clock.c
448
if (st->num_returned != 3 && st->num_remaining == 0 && \
drivers/firmware/arm_scmi/clock.c
449
st->rx_len == sizeof(*r) + sizeof(__le32) * 2 * 3) { \
drivers/firmware/arm_scmi/clock.c
450
st->num_returned = 3; \
drivers/firmware/arm_scmi/clock.c
451
st->num_remaining = 0; \
drivers/firmware/arm_scmi/clock.c
460
iter_clk_describe_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/clock.c
468
st->num_remaining = NUM_REMAINING(flags);
drivers/firmware/arm_scmi/clock.c
469
st->num_returned = NUM_RETURNED(flags);
drivers/firmware/arm_scmi/clock.c
474
(st->num_returned != 3 || st->num_remaining != 0)) {
drivers/firmware/arm_scmi/clock.c
477
p->clkd->info.name, st->num_returned, st->num_remaining,
drivers/firmware/arm_scmi/clock.c
478
st->rx_len);
drivers/firmware/arm_scmi/clock.c
484
if (!st->max_resources) {
drivers/firmware/arm_scmi/clock.c
485
unsigned int tot_rates = st->num_returned + st->num_remaining;
drivers/firmware/arm_scmi/clock.c
494
st->max_resources = tot_rates;
drivers/firmware/arm_scmi/clock.c
503
struct scmi_iterator_state *st, void *priv)
drivers/firmware/arm_scmi/clock.c
508
p->clkd->r.rates[p->clkd->r.num_rates] = RATE_TO_U64(r->rate[st->loop_idx]);
drivers/firmware/arm_scmi/driver.c
1821
struct scmi_iterator_state *st;
drivers/firmware/arm_scmi/driver.c
1831
st = &i->state;
drivers/firmware/arm_scmi/driver.c
1834
st->num_returned = 0;
drivers/firmware/arm_scmi/driver.c
1835
st->num_remaining = 0;
drivers/firmware/arm_scmi/driver.c
1836
st->desc_index = start ? *start : 0;
drivers/firmware/arm_scmi/driver.c
1839
iops->prepare_message(i->msg, st->desc_index, i->priv);
drivers/firmware/arm_scmi/driver.c
1844
st->rx_len = i->t->rx.len;
drivers/firmware/arm_scmi/driver.c
1845
ret = iops->update_state(st, i->resp, i->priv);
drivers/firmware/arm_scmi/driver.c
1849
if (st->num_returned > st->max_resources - st->desc_index) {
drivers/firmware/arm_scmi/driver.c
1852
st->max_resources);
drivers/firmware/arm_scmi/driver.c
1857
n = min(st->num_returned, *end - st->desc_index + 1);
drivers/firmware/arm_scmi/driver.c
1859
n = st->num_returned;
drivers/firmware/arm_scmi/driver.c
1860
for (st->loop_idx = 0; st->loop_idx < n; st->loop_idx++) {
drivers/firmware/arm_scmi/driver.c
1861
ret = iops->process_response(ph, i->resp, st, i->priv);
drivers/firmware/arm_scmi/driver.c
1866
st->desc_index += n;
drivers/firmware/arm_scmi/driver.c
1872
} while (st->num_returned && st->num_remaining &&
drivers/firmware/arm_scmi/driver.c
1873
(!end || (st->desc_index <= min(*end, st->max_resources - 1))));
drivers/firmware/arm_scmi/perf.c
358
static int iter_perf_levels_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/perf.c
363
st->num_returned = le16_to_cpu(r->num_returned);
drivers/firmware/arm_scmi/perf.c
364
st->num_remaining = le16_to_cpu(r->num_remaining);
drivers/firmware/arm_scmi/perf.c
437
struct scmi_iterator_state *st, void *priv)
drivers/firmware/arm_scmi/perf.c
446
st->loop_idx, response);
drivers/firmware/arm_scmi/perf.c
449
st->loop_idx, response);
drivers/firmware/arm_scmi/pinctrl.c
260
static int iter_pinctrl_assoc_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/pinctrl.c
265
st->num_returned = RETURNED(r->flags);
drivers/firmware/arm_scmi/pinctrl.c
266
st->num_remaining = REMAINING(r->flags);
drivers/firmware/arm_scmi/pinctrl.c
274
struct scmi_iterator_state *st, void *priv)
drivers/firmware/arm_scmi/pinctrl.c
279
p->array[st->desc_index + st->loop_idx] =
drivers/firmware/arm_scmi/pinctrl.c
280
le16_to_cpu(r->array[st->loop_idx]);
drivers/firmware/arm_scmi/pinctrl.c
351
iter_pinctrl_settings_get_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/pinctrl.c
358
st->num_returned = le32_get_bits(r->num_configs, GENMASK(7, 0));
drivers/firmware/arm_scmi/pinctrl.c
359
st->num_remaining = le32_get_bits(r->num_configs, GENMASK(31, 24));
drivers/firmware/arm_scmi/pinctrl.c
361
st->num_returned = 1;
drivers/firmware/arm_scmi/pinctrl.c
362
st->num_remaining = 0;
drivers/firmware/arm_scmi/pinctrl.c
371
struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/pinctrl.c
376
u32 type = le32_get_bits(r->configs[st->loop_idx * 2], GENMASK(7, 0));
drivers/firmware/arm_scmi/pinctrl.c
377
u32 val = le32_to_cpu(r->configs[st->loop_idx * 2 + 1]);
drivers/firmware/arm_scmi/pinctrl.c
380
p->config_types[st->desc_index + st->loop_idx] = type;
drivers/firmware/arm_scmi/pinctrl.c
386
p->config_values[st->desc_index + st->loop_idx] = val;
drivers/firmware/arm_scmi/power.c
158
struct scmi_power_set_state *st;
drivers/firmware/arm_scmi/power.c
160
ret = ph->xops->xfer_get_init(ph, POWER_STATE_SET, sizeof(*st), 0, &t);
drivers/firmware/arm_scmi/power.c
164
st = t->tx.buf;
drivers/firmware/arm_scmi/power.c
165
st->flags = cpu_to_le32(0);
drivers/firmware/arm_scmi/power.c
166
st->domain = cpu_to_le32(domain);
drivers/firmware/arm_scmi/power.c
167
st->state = cpu_to_le32(state);
drivers/firmware/arm_scmi/protocols.h
227
int (*update_state)(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/protocols.h
231
struct scmi_iterator_state *st, void *priv);
drivers/firmware/arm_scmi/sensors.c
290
static int iter_intervals_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/sensors.c
299
st->num_returned = NUM_INTERVALS_RETURNED(flags);
drivers/firmware/arm_scmi/sensors.c
300
st->num_remaining = NUM_INTERVALS_REMAINING(flags);
drivers/firmware/arm_scmi/sensors.c
306
if (!st->max_resources) {
drivers/firmware/arm_scmi/sensors.c
308
s->intervals.count = st->num_returned + st->num_remaining;
drivers/firmware/arm_scmi/sensors.c
311
(st->num_remaining || st->num_returned != 3)) {
drivers/firmware/arm_scmi/sensors.c
333
st->max_resources = s->intervals.count;
drivers/firmware/arm_scmi/sensors.c
342
struct scmi_iterator_state *st, void *p)
drivers/firmware/arm_scmi/sensors.c
347
s->intervals.desc[st->desc_index + st->loop_idx] =
drivers/firmware/arm_scmi/sensors.c
348
le32_to_cpu(r->intervals[st->loop_idx]);
drivers/firmware/arm_scmi/sensors.c
395
iter_axes_desc_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/sensors.c
402
st->num_returned = NUM_AXIS_RETURNED(flags);
drivers/firmware/arm_scmi/sensors.c
403
st->num_remaining = NUM_AXIS_REMAINING(flags);
drivers/firmware/arm_scmi/sensors.c
404
st->priv = (void *)&r->desc[0];
drivers/firmware/arm_scmi/sensors.c
412
struct scmi_iterator_state *st, void *priv)
drivers/firmware/arm_scmi/sensors.c
418
const struct scmi_axis_descriptor *adesc = st->priv;
drivers/firmware/arm_scmi/sensors.c
424
a = &apriv->s->axis[st->desc_index + st->loop_idx];
drivers/firmware/arm_scmi/sensors.c
443
st->priv = ((u8 *)adesc + dsize);
drivers/firmware/arm_scmi/sensors.c
449
iter_axes_extended_name_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/sensors.c
456
st->num_returned = NUM_AXIS_RETURNED(flags);
drivers/firmware/arm_scmi/sensors.c
457
st->num_remaining = NUM_AXIS_REMAINING(flags);
drivers/firmware/arm_scmi/sensors.c
458
st->priv = (void *)&r->desc[0];
drivers/firmware/arm_scmi/sensors.c
466
struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/sensors.c
471
struct scmi_sensor_axis_name_descriptor *adesc = st->priv;
drivers/firmware/arm_scmi/sensors.c
474
if (axis_id >= st->max_resources)
drivers/firmware/arm_scmi/sensors.c
484
st->priv = ++adesc;
drivers/firmware/arm_scmi/sensors.c
572
static int iter_sens_descr_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/sensors.c
577
st->num_returned = le16_to_cpu(r->num_returned);
drivers/firmware/arm_scmi/sensors.c
578
st->num_remaining = le16_to_cpu(r->num_remaining);
drivers/firmware/arm_scmi/sensors.c
579
st->priv = (void *)&r->desc[0];
drivers/firmware/arm_scmi/sensors.c
587
struct scmi_iterator_state *st, void *priv)
drivers/firmware/arm_scmi/sensors.c
595
const struct scmi_sensor_descriptor *sdesc = st->priv;
drivers/firmware/arm_scmi/sensors.c
597
s = &si->sensors[st->desc_index + st->loop_idx];
drivers/firmware/arm_scmi/sensors.c
686
st->priv = ((u8 *)sdesc + dsize);
drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
433
static int iter_misc_syslog_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
439
st->num_returned = RETURNED(r->numlogflags);
drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
440
st->num_remaining = REMAINING(r->numlogflags);
drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
441
*p->size = st->num_returned + st->num_remaining;
drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
449
struct scmi_iterator_state *st, void *priv)
drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
454
p->array[st->desc_index + st->loop_idx] =
drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
455
le32_to_cpu(r->syslog[st->loop_idx]);
drivers/firmware/arm_scmi/voltage.c
139
static int iter_volt_levels_update_state(struct scmi_iterator_state *st,
drivers/firmware/arm_scmi/voltage.c
148
st->num_returned = NUM_RETURNED_LEVELS(flags);
drivers/firmware/arm_scmi/voltage.c
149
st->num_remaining = NUM_REMAINING_LEVELS(flags);
drivers/firmware/arm_scmi/voltage.c
153
ret = scmi_init_voltage_levels(p->dev, p->v, st->num_returned,
drivers/firmware/arm_scmi/voltage.c
154
st->num_remaining,
drivers/firmware/arm_scmi/voltage.c
157
st->max_resources = p->v->num_levels;
drivers/firmware/arm_scmi/voltage.c
166
struct scmi_iterator_state *st, void *priv)
drivers/firmware/arm_scmi/voltage.c
172
val = (s32)le32_to_cpu(r->voltage[st->loop_idx]);
drivers/firmware/arm_scmi/voltage.c
173
p->v->levels_uv[st->desc_index + st->loop_idx] = val;
drivers/fpga/socfpga.c
279
u32 irqs, st;
drivers/fpga/socfpga.c
287
st = socfpga_fpga_raw_readl(priv, SOCFPGA_FPGMGR_GPIO_EXT_PORTA_OFST);
drivers/fpga/socfpga.c
288
conf_done = (st & SOCFPGA_FPGMGR_MON_CONF_DONE) != 0;
drivers/fpga/socfpga.c
289
nstatus = (st & SOCFPGA_FPGMGR_MON_NSTATUS) != 0;
drivers/gpio/gpio-ltc4283.c
101
struct ltc4283_gpio *st = gpiochip_get_data(gc);
drivers/gpio/gpio-ltc4283.c
103
return ltc4283_gpio_direction_set(st, off, true);
drivers/gpio/gpio-ltc4283.c
108
struct ltc4283_gpio *st = gpiochip_get_data(gc);
drivers/gpio/gpio-ltc4283.c
111
ret = ltc4283_gpio_direction_set(st, off, false);
drivers/gpio/gpio-ltc4283.c
115
return __ltc4283_gpio_set_value(st, off, val);
drivers/gpio/gpio-ltc4283.c
120
struct ltc4283_gpio *st = gpiochip_get_data(gc);
drivers/gpio/gpio-ltc4283.c
129
ret = regmap_read(st->regmap, LTC4283_INPUT_STATUS, &val);
drivers/gpio/gpio-ltc4283.c
146
ret = regmap_read(st->regmap, reg, &val);
drivers/gpio/gpio-ltc4283.c
155
struct ltc4283_gpio *st = gpiochip_get_data(gc);
drivers/gpio/gpio-ltc4283.c
157
return __ltc4283_gpio_set_value(st, off, val);
drivers/gpio/gpio-ltc4283.c
173
struct ltc4283_gpio *st;
drivers/gpio/gpio-ltc4283.c
176
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/gpio/gpio-ltc4283.c
177
if (!st)
drivers/gpio/gpio-ltc4283.c
180
st->regmap = dev_get_regmap(dev->parent, NULL);
drivers/gpio/gpio-ltc4283.c
181
if (!st->regmap)
drivers/gpio/gpio-ltc4283.c
185
gc = &st->gpio_chip;
drivers/gpio/gpio-ltc4283.c
200
return devm_gpiochip_add_data(dev, &st->gpio_chip, st);
drivers/gpio/gpio-ltc4283.c
36
static int ltc4283_pgio_get_direction(const struct ltc4283_gpio *st, unsigned int off)
drivers/gpio/gpio-ltc4283.c
41
ret = regmap_read(st->regmap, LTC4283_PGIO_CONFIG, &val);
drivers/gpio/gpio-ltc4283.c
54
struct ltc4283_gpio *st = gpiochip_get_data(gc);
drivers/gpio/gpio-ltc4283.c
59
return ltc4283_pgio_get_direction(st, off);
drivers/gpio/gpio-ltc4283.c
61
ret = regmap_read(st->regmap, LTC4283_ADIO_CONFIG, &val);
drivers/gpio/gpio-ltc4283.c
71
static int ltc4283_gpio_direction_set(const struct ltc4283_gpio *st,
drivers/gpio/gpio-ltc4283.c
81
return regmap_update_bits(st->regmap, LTC4283_PGIO_CONFIG,
drivers/gpio/gpio-ltc4283.c
85
return regmap_update_bits(st->regmap, LTC4283_ADIO_CONFIG,
drivers/gpio/gpio-ltc4283.c
90
static int __ltc4283_gpio_set_value(const struct ltc4283_gpio *st,
drivers/gpio/gpio-ltc4283.c
95
return regmap_update_bits(st->regmap, reg, BIT(off),
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
8912
static int to_drm_connector_type(enum signal_type st, uint32_t connector_id)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
8914
switch (st) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
704
bool st = (state == AMDGPU_IRQ_STATE_ENABLE);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
706
dc_interrupt_set(adev->dm.dc, src, st);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
717
bool st;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
735
st = (state == AMDGPU_IRQ_STATE_ENABLE);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
740
dc_interrupt_set(adev->dm.dc, irq_source, st);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
792
bool st = (state == AMDGPU_IRQ_STATE_ENABLE);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
794
dc_interrupt_set(adev->dm.dc, irq_source, st);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
818
bool st = (state == AMDGPU_IRQ_STATE_ENABLE);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
820
dc_interrupt_set(adev->dm.dc, irq_source, st);
drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c
339
enum signal_type st,
drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c
344
switch (st) {
drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c
364
switch (st) {
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
1546
enum dc_status st = DC_OK;
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
1558
st = core_link_read_dpcd(link, DP_DPCD_REV, &rev.raw,
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
1561
if (st == DC_OK && rev.raw >= DPCD_REV_12) {
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
1563
st = core_link_read_dpcd(link, DP_MSTM_CAP,
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
1565
if (st == DC_OK && cap.bits.MST_CAP == 1)
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
1050
struct komeda_improc_state *st = to_improc_st(state);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
1059
malidp_write32(reg, BLK_SIZE, HV_SIZE(st->hsize, st->vsize));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
1060
malidp_write32(reg, IPS_DEPTH, st->color_depth);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
1068
st->fgamma_coeffs);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
1075
st->ctm_coeffs);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
1083
if (st->color_format == DRM_OUTPUT_COLOR_FORMAT_YCBCR420)
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
1085
else if (st->color_format == DRM_OUTPUT_COLOR_FORMAT_YCBCR422)
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
1087
else if (st->color_format == DRM_OUTPUT_COLOR_FORMAT_YCBCR444)
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
176
static inline u32 to_d71_input_id(struct komeda_component_state *st, int idx)
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
178
struct komeda_component_output *input = &st->inputs[idx];
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
181
if (has_bit(idx, st->active_inputs))
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
219
struct komeda_layer_state *st = to_layer_st(state);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
225
u32 ctrl = L_EN | to_rot_ctrl(st->rot);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
227
d71_layer_update_fb(c, kfb, st->addr);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
233
malidp_write32(reg, LAYER_AD_H_CROP, HV_CROP(st->afbc_crop_l,
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
234
st->afbc_crop_r));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
235
malidp_write32(reg, LAYER_AD_V_CROP, HV_CROP(st->afbc_crop_t,
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
236
st->afbc_crop_b));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
239
addr = st->addr[0] + kfb->offset_payload;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
241
addr = st->addr[0] + kfb->afbc_size - 1;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
281
malidp_write32(reg, BLK_IN_SIZE, HV_SIZE(st->hsize, st->vsize));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
357
struct komeda_layer_state *st = to_layer_st(state);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
368
if (drm_rotation_90_or_270(st->rot))
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
369
line_sz = st->vsize - st->afbc_crop_t - st->afbc_crop_b;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
371
line_sz = st->hsize - st->afbc_crop_l - st->afbc_crop_r;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
387
if (fourcc == DRM_FORMAT_YUV420_10BIT && line_sz > 2046 && (st->afbc_crop_l % 4)) {
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
393
if (fourcc == DRM_FORMAT_X0L2 && line_sz > 2046 && (st->addr[0] % 16)) {
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
470
struct komeda_layer_state *st = to_layer_st(state);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
476
d71_layer_update_fb(c, kfb, st->addr);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
481
malidp_write32(reg, BLK_IN_SIZE, HV_SIZE(st->hsize, st->vsize));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
605
struct komeda_compiz_state *st = to_compiz_st(state);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
616
&st->cins[index]);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
623
malidp_write32(reg, BLK_SIZE, HV_SIZE(st->hsize, st->vsize));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
729
struct komeda_scaler_state *st = to_scaler_st(state);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
733
d71_scaler_update_filter_lut(reg, st->hsize_in, st->vsize_in,
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
734
st->hsize_out, st->vsize_out);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
736
malidp_write32(reg, BLK_IN_SIZE, HV_SIZE(st->hsize_in, st->vsize_in));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
737
malidp_write32(reg, SC_OUT_SIZE, HV_SIZE(st->hsize_out, st->vsize_out));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
738
malidp_write32(reg, SC_H_CROP, HV_CROP(st->left_crop, st->right_crop));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
758
if (st->right_part) {
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
759
u32 dst_a = st->total_hsize_out - st->hsize_out + st->left_crop;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
761
if (st->en_img_enhancement)
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
764
init_ph = ((st->total_hsize_in * (2 * dst_a + 1) -
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
765
2 * st->total_hsize_out * (st->total_hsize_in -
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
766
st->hsize_in)) << 15) / st->total_hsize_out;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
768
init_ph = (st->total_hsize_in << 15) / st->total_hsize_out;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
773
delta_ph = (st->total_hsize_in << 16) / st->total_hsize_out;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
776
init_ph = (st->total_vsize_in << 15) / st->vsize_out;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
779
delta_ph = (st->total_vsize_in << 16) / st->vsize_out;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
783
ctrl |= st->en_scaling ? SC_CTRL_SCL : 0;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
784
ctrl |= st->en_alpha ? SC_CTRL_AP : 0;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
785
ctrl |= st->en_img_enhancement ? SC_CTRL_IENH : 0;
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
787
if (st->en_split &&
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
915
struct komeda_splitter_state *st = to_splitter_st(state);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
919
malidp_write32(reg, BLK_SIZE, HV_SIZE(st->hsize, st->vsize));
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
920
malidp_write32(reg, SP_OVERLAP_SIZE, st->overlap & 0x1FFF);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
977
struct komeda_merger_state *st = to_merger_st(state);
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
985
malidp_write32(reg, MG_SIZE, HV_SIZE(st->hsize_merged,
drivers/gpu/drm/arm/display/komeda/d71/d71_component.c
986
st->vsize_merged));
drivers/gpu/drm/arm/display/komeda/komeda_kms.h
139
static inline bool is_writeback_only(struct drm_crtc_state *st)
drivers/gpu/drm/arm/display/komeda/komeda_kms.h
141
struct komeda_wb_connector *wb_conn = to_kcrtc(st->crtc)->wb_conn;
drivers/gpu/drm/arm/display/komeda/komeda_kms.h
144
return conn && (st->connector_mask == BIT(drm_connector_index(conn)));
drivers/gpu/drm/arm/display/komeda/komeda_kms.h
148
is_only_changed_connector(struct drm_crtc_state *st, struct drm_connector *conn)
drivers/gpu/drm/arm/display/komeda/komeda_kms.h
153
old_st = drm_atomic_get_old_crtc_state(st->state, st->crtc);
drivers/gpu/drm/arm/display/komeda/komeda_kms.h
154
changed_connectors = st->connector_mask ^ old_st->connector_mask;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h
211
static inline u16 component_disabling_inputs(struct komeda_component_state *st)
drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h
213
return st->affected_inputs ^ st->active_inputs;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h
216
static inline u16 component_changed_inputs(struct komeda_component_state *st)
drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h
218
return component_disabling_inputs(st) | st->changed_active_inputs;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h
221
#define for_each_changed_input(st, i) \
drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h
222
for ((i) = 0; (i) < (st)->component->max_active_inputs; (i)++) \
drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h
223
if (has_bit((i), component_changed_inputs(st)))
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
1259
struct komeda_pipeline_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
1266
st = komeda_pipeline_get_new_state(pipe, drm_st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
1268
st = komeda_pipeline_get_state_and_set_crtc(pipe, drm_st, NULL);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
1270
if (WARN_ON(IS_ERR_OR_NULL(st)))
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
1273
return komeda_pipeline_unbound_components(pipe, st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
157
struct komeda_component_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
165
st = komeda_component_get_state(c, state);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
166
if (IS_ERR(st))
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
167
return st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
170
if (is_switching_user(user, st->binding_user)) {
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
175
st->binding_user = user;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
177
if (st->binding_user)
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
180
return st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
239
struct komeda_component_state *st)
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
246
err = c->funcs->validate(c, st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
346
struct komeda_layer_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
358
st = to_layer_st(c_st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
360
st->rot = dflow->rot;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
363
st->hsize = kfb->aligned_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
364
st->vsize = kfb->aligned_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
365
st->afbc_crop_l = dflow->in_x;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
366
st->afbc_crop_r = kfb->aligned_w - dflow->in_x - dflow->in_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
367
st->afbc_crop_t = dflow->in_y;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
368
st->afbc_crop_b = kfb->aligned_h - dflow->in_y - dflow->in_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
370
st->hsize = dflow->in_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
371
st->vsize = dflow->in_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
372
st->afbc_crop_l = 0;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
373
st->afbc_crop_r = 0;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
374
st->afbc_crop_t = 0;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
375
st->afbc_crop_b = 0;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
379
st->addr[i] = komeda_fb_get_pixel_addr(kfb, dflow->in_x,
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
393
komeda_rotate_data_flow(dflow, st->rot);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
405
struct komeda_layer_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
417
st = to_layer_st(c_st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
419
st->hsize = dflow->out_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
420
st->vsize = dflow->out_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
423
st->addr[i] = komeda_fb_get_pixel_addr(kfb, dflow->out_x,
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
426
komeda_component_add_input(&st->base, &dflow->input, 0);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
510
struct komeda_scaler_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
533
st = to_scaler_st(c_st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
535
st->hsize_in = dflow->in_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
536
st->vsize_in = dflow->in_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
537
st->hsize_out = dflow->out_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
538
st->vsize_out = dflow->out_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
539
st->right_crop = dflow->right_crop;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
540
st->left_crop = dflow->left_crop;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
541
st->total_vsize_in = dflow->total_in_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
542
st->total_hsize_in = dflow->total_in_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
543
st->total_hsize_out = dflow->total_out_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
546
st->en_alpha = dflow->pixel_blend_mode != DRM_MODE_BLEND_PIXEL_NONE;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
547
st->en_scaling = dflow->en_scaling;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
548
st->en_img_enhancement = dflow->en_img_enhancement;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
549
st->en_split = dflow->en_split;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
550
st->right_part = dflow->right_part;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
552
komeda_component_add_input(&st->base, &dflow->input, 0);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
570
struct komeda_splitter_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
598
st = to_splitter_st(c_st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
599
st->hsize = dflow->in_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
600
st->vsize = dflow->in_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
601
st->overlap = dflow->overlap;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
603
komeda_component_add_input(&st->base, &dflow->input, 0);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
619
struct komeda_merger_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
645
st = to_merger_st(c_st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
646
st->hsize_merged = output->out_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
647
st->vsize_merged = output->out_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
66
struct komeda_pipeline_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
68
st = komeda_pipeline_get_state(pipe, state);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
69
if (IS_ERR(st))
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
70
return st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
72
if (is_switching_user(crtc, st->crtc)) {
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
725
struct komeda_compiz_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
732
st = to_compiz_st(c_st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
734
pipeline_composition_size(state, &st->hsize, &st->vsize);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
742
dflow->in_w = st->hsize;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
743
dflow->in_h = st->vsize;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
765
struct komeda_improc_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
772
st = to_improc_st(c_st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
774
st->hsize = dflow->in_w;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
775
st->vsize = dflow->in_h;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
79
if (!crtc && st->active_comps) {
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
801
st->color_depth = __fls(avail_depths);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
802
st->color_format = __ffs(avail_formats);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
807
st->fgamma_coeffs);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
808
drm_ctm_to_coeffs(kcrtc_st->base.ctm, st->ctm_coeffs);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
811
komeda_component_add_input(&st->base, &dflow->input, 0);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
823
struct komeda_timing_ctrlr_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
831
st = to_ctrlr_st(c_st);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
833
komeda_component_add_input(&st->base, &dflow->input, 0);
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
84
st->crtc = crtc;
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
95
return st;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
16
komeda_plane_init_data_flow(struct drm_plane_state *st,
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
20
struct komeda_plane *kplane = to_kplane(st->plane);
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
21
struct drm_framebuffer *fb = st->fb;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
27
dflow->blending_zorder = st->normalized_zpos;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
28
if (pipe == to_kcrtc(st->crtc)->master)
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
32
st->plane->name, st->normalized_zpos,
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
37
dflow->pixel_blend_mode = st->pixel_blend_mode;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
38
dflow->layer_alpha = st->alpha >> 8;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
40
dflow->out_x = st->crtc_x;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
41
dflow->out_y = st->crtc_y;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
42
dflow->out_w = st->crtc_w;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
43
dflow->out_h = st->crtc_h;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
45
dflow->in_x = st->src_x >> 16;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
46
dflow->in_y = st->src_y >> 16;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
47
dflow->in_w = st->src_w >> 16;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
48
dflow->in_h = st->src_h >> 16;
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
50
dflow->rot = drm_rotation_simplify(st->rotation, caps->supported_rots);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
100
st = kzalloc_obj(*st);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
101
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
104
__drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
105
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
106
st->base.component = to_component(obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
108
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
11
komeda_component_state_reset(struct komeda_component_state *st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
129
struct komeda_compiz_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
13
st->binding_user = NULL;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
131
st = kmemdup(obj->state, sizeof(*st), GFP_KERNEL);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
132
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
135
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
136
__drm_atomic_helper_private_obj_duplicate_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
138
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
14
st->affected_inputs = st->active_inputs;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
15
st->active_inputs = 0;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
151
struct komeda_compiz_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
153
st = kzalloc_obj(*st);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
154
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
157
__drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
158
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
159
st->base.component = to_component(obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
16
st->changed_active_inputs = 0;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
161
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
182
struct komeda_splitter_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
184
st = kmemdup(obj->state, sizeof(*st), GFP_KERNEL);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
185
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
188
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
189
__drm_atomic_helper_private_obj_duplicate_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
191
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
204
struct komeda_splitter_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
206
st = kzalloc_obj(*st);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
207
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
210
__drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
211
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
212
st->base.component = to_component(obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
214
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
22
struct komeda_layer_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
236
struct komeda_merger_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
238
st = kmemdup(obj->state, sizeof(*st), GFP_KERNEL);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
239
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
24
st = kmemdup(obj->state, sizeof(*st), GFP_KERNEL);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
242
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
243
__drm_atomic_helper_private_obj_duplicate_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
245
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
25
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
257
struct komeda_merger_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
259
st = kzalloc_obj(*st);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
260
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
263
__drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
264
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
265
st->base.component = to_component(obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
267
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
28
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
289
struct komeda_improc_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
29
__drm_atomic_helper_private_obj_duplicate_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
291
st = kmemdup(obj->state, sizeof(*st), GFP_KERNEL);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
292
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
295
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
296
__drm_atomic_helper_private_obj_duplicate_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
298
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
31
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
311
struct komeda_improc_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
313
st = kzalloc_obj(*st);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
314
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
317
__drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
318
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
319
st->base.component = to_component(obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
321
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
342
struct komeda_timing_ctrlr_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
344
st = kmemdup(obj->state, sizeof(*st), GFP_KERNEL);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
345
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
348
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
349
__drm_atomic_helper_private_obj_duplicate_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
351
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
364
struct komeda_timing_ctrlr_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
366
st = kzalloc_obj(*st);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
367
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
370
__drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
371
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
372
st->base.component = to_component(obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
374
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
38
struct komeda_layer_state *st = to_layer_st(priv_to_comp_st(state));
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
395
struct komeda_pipeline_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
397
st = kmemdup(obj->state, sizeof(*st), GFP_KERNEL);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
398
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
40
kfree(st);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
401
st->active_comps = 0;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
403
__drm_atomic_helper_private_obj_duplicate_state(obj, &st->obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
405
return &st->obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
418
struct komeda_pipeline_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
420
st = kzalloc_obj(*st);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
421
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
424
__drm_atomic_helper_private_obj_create_state(obj, &st->obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
425
st->active_comps = 0;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
426
st->pipe = container_of(obj, struct komeda_pipeline, obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
428
return &st->obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
46
struct komeda_layer_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
48
st = kzalloc_obj(*st);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
49
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
52
__drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
53
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
54
st->base.component = to_component(obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
56
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
76
struct komeda_scaler_state *st;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
78
st = kmemdup(obj->state, sizeof(*st), GFP_KERNEL);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
79
if (!st)
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
82
komeda_component_state_reset(&st->base);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
83
__drm_atomic_helper_private_obj_duplicate_state(obj, &st->base.obj);
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
85
return &st->base.obj;
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
98
struct komeda_scaler_state *st;
drivers/gpu/drm/armada/armada_plane.c
109
st->src_hw = drm_rect_height(&new_plane_state->src) >> 17;
drivers/gpu/drm/armada/armada_plane.c
110
st->dst_yx = new_plane_state->dst.y1 >> 1;
drivers/gpu/drm/armada/armada_plane.c
111
st->dst_hw = drm_rect_height(&new_plane_state->dst) >> 1;
drivers/gpu/drm/armada/armada_plane.c
113
st->src_hw = drm_rect_height(&new_plane_state->src) >> 16;
drivers/gpu/drm/armada/armada_plane.c
114
st->dst_yx = new_plane_state->dst.y1;
drivers/gpu/drm/armada/armada_plane.c
115
st->dst_hw = drm_rect_height(&new_plane_state->dst);
drivers/gpu/drm/armada/armada_plane.c
118
st->src_hw <<= 16;
drivers/gpu/drm/armada/armada_plane.c
119
st->src_hw |= drm_rect_width(&new_plane_state->src) >> 16;
drivers/gpu/drm/armada/armada_plane.c
120
st->dst_yx <<= 16;
drivers/gpu/drm/armada/armada_plane.c
121
st->dst_yx |= new_plane_state->dst.x1 & 0x0000ffff;
drivers/gpu/drm/armada/armada_plane.c
122
st->dst_hw <<= 16;
drivers/gpu/drm/armada/armada_plane.c
123
st->dst_hw |= drm_rect_width(&new_plane_state->dst) & 0x0000ffff;
drivers/gpu/drm/armada/armada_plane.c
125
armada_drm_plane_calc(new_plane_state, st->addrs, st->pitches,
drivers/gpu/drm/armada/armada_plane.c
127
st->interlace = interlace;
drivers/gpu/drm/armada/armada_plane.c
261
struct armada_plane_state *st;
drivers/gpu/drm/armada/armada_plane.c
265
st = kzalloc_obj(*st);
drivers/gpu/drm/armada/armada_plane.c
266
if (st)
drivers/gpu/drm/armada/armada_plane.c
267
__drm_atomic_helper_plane_reset(plane, &st->base);
drivers/gpu/drm/armada/armada_plane.c
272
struct armada_plane_state *st;
drivers/gpu/drm/armada/armada_plane.c
277
st = kmemdup(plane->state, sizeof(*st), GFP_KERNEL);
drivers/gpu/drm/armada/armada_plane.c
278
if (st)
drivers/gpu/drm/armada/armada_plane.c
279
__drm_atomic_helper_plane_duplicate_state(plane, &st->base);
drivers/gpu/drm/armada/armada_plane.c
281
return &st->base;
drivers/gpu/drm/armada/armada_plane.c
87
struct armada_plane_state *st = to_armada_plane_state(new_plane_state);
drivers/gpu/drm/armada/armada_plane.h
14
#define to_armada_plane_state(st) \
drivers/gpu/drm/armada/armada_plane.h
15
container_of(st, struct armada_plane_state, base)
drivers/gpu/drm/bridge/sil-sii8620.c
1699
u8 st[MHL_DST_SIZE], xst[MHL_XDS_SIZE];
drivers/gpu/drm/bridge/sil-sii8620.c
1701
sii8620_read_buf(ctx, REG_MHL_STAT_0, st, MHL_DST_SIZE);
drivers/gpu/drm/bridge/sil-sii8620.c
1704
sii8620_update_array(ctx->stat, st, MHL_DST_SIZE);
drivers/gpu/drm/bridge/sil-sii8620.c
1707
if (ctx->stat[MHL_DST_CONNECTED_RDY] & st[MHL_DST_CONNECTED_RDY] &
drivers/gpu/drm/bridge/sil-sii8620.c
1715
if (st[MHL_DST_LINK_MODE] & MHL_DST_LM_PATH_ENABLED)
drivers/gpu/drm/drm_cache.c
127
drm_clflush_sg(struct sg_table *st)
drivers/gpu/drm/drm_cache.c
134
for_each_sgtable_page(st, &sg_iter, 0)
drivers/gpu/drm/i915/gem/i915_gem_internal.c
100
internal_free_pages(st);
drivers/gpu/drm/i915/gem/i915_gem_internal.c
107
__i915_gem_object_set_pages(obj, st);
drivers/gpu/drm/i915/gem/i915_gem_internal.c
114
internal_free_pages(st);
drivers/gpu/drm/i915/gem/i915_gem_internal.c
19
static void internal_free_pages(struct sg_table *st)
drivers/gpu/drm/i915/gem/i915_gem_internal.c
23
for (sg = st->sgl; sg; sg = __sg_next(sg)) {
drivers/gpu/drm/i915/gem/i915_gem_internal.c
28
sg_free_table(st);
drivers/gpu/drm/i915/gem/i915_gem_internal.c
29
kfree(st);
drivers/gpu/drm/i915/gem/i915_gem_internal.c
35
struct sg_table *st;
drivers/gpu/drm/i915/gem/i915_gem_internal.c
57
st = kmalloc_obj(*st);
drivers/gpu/drm/i915/gem/i915_gem_internal.c
58
if (!st)
drivers/gpu/drm/i915/gem/i915_gem_internal.c
61
if (sg_alloc_table(st, npages, GFP_KERNEL)) {
drivers/gpu/drm/i915/gem/i915_gem_internal.c
62
kfree(st);
drivers/gpu/drm/i915/gem/i915_gem_internal.c
66
sg = st->sgl;
drivers/gpu/drm/i915/gem/i915_gem_internal.c
67
st->nents = 0;
drivers/gpu/drm/i915/gem/i915_gem_internal.c
86
st->nents++;
drivers/gpu/drm/i915/gem/i915_gem_internal.c
97
if (i915_gem_gtt_prepare_pages(obj, st)) {
drivers/gpu/drm/i915/gem/i915_gem_internal.c
99
if (get_order(st->sgl->length)) {
drivers/gpu/drm/i915/gem/i915_gem_object.h
847
int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
drivers/gpu/drm/i915/gem/i915_gem_object.h
851
void shmem_sg_free_table(struct sg_table *st, struct address_space *mapping,
drivers/gpu/drm/i915/gem/i915_gem_phys.c
100
kfree(st);
drivers/gpu/drm/i915/gem/i915_gem_phys.c
37
struct sg_table *st;
drivers/gpu/drm/i915/gem/i915_gem_phys.c
61
st = kmalloc_obj(*st);
drivers/gpu/drm/i915/gem/i915_gem_phys.c
62
if (!st)
drivers/gpu/drm/i915/gem/i915_gem_phys.c
65
if (sg_alloc_table(st, 1, GFP_KERNEL))
drivers/gpu/drm/i915/gem/i915_gem_phys.c
68
sg = st->sgl;
drivers/gpu/drm/i915/gem/i915_gem_phys.c
95
__i915_gem_object_set_pages(obj, st);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
101
sg = st->sgl;
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
102
st->nents = 0;
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
168
st->nents++;
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
186
i915_sg_trim(st);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
191
if (sg != st->sgl) {
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
192
shmem_sg_free_table(st, mapping, false, false);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
195
sg_free_table(st);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
219
struct sg_table *st;
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
231
st = kmalloc_obj(*st, GFP_KERNEL | __GFP_NOWARN);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
232
if (!st)
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
235
ret = shmem_sg_alloc_table(i915, st, obj->base.size, mem, mapping,
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
240
ret = i915_gem_gtt_prepare_pages(obj, st);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
248
shmem_sg_free_table(st, mapping, false, false);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
249
kfree(st);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
262
i915_gem_object_do_bit_17_swizzle(obj, st);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
267
__i915_gem_object_set_pages(obj, st);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
272
shmem_sg_free_table(st, mapping, false, false);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
286
kfree(st);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
34
void shmem_sg_free_table(struct sg_table *st, struct address_space *mapping,
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
45
for_each_sgt_page(page, sgt_iter, st) {
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
62
sg_free_table(st);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
65
int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
88
if (sg_alloc_table(st, page_count, GFP_KERNEL | __GFP_NOWARN))
drivers/gpu/drm/i915/gem/i915_gem_stolen.c
641
struct sg_table *st;
drivers/gpu/drm/i915/gem/i915_gem_stolen.c
651
st = kmalloc_obj(*st);
drivers/gpu/drm/i915/gem/i915_gem_stolen.c
652
if (st == NULL)
drivers/gpu/drm/i915/gem/i915_gem_stolen.c
655
if (sg_alloc_table(st, 1, GFP_KERNEL)) {
drivers/gpu/drm/i915/gem/i915_gem_stolen.c
656
kfree(st);
drivers/gpu/drm/i915/gem/i915_gem_stolen.c
660
sg = st->sgl;
drivers/gpu/drm/i915/gem/i915_gem_stolen.c
667
return st;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
194
struct sg_table *st;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
217
st = &i915_tt->cached_rsgt.table;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
218
err = shmem_sg_alloc_table(i915, st, size, mr, filp->f_mapping,
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
223
err = dma_map_sgtable(i915_tt->dev, st, DMA_BIDIRECTIONAL,
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
229
for_each_sgt_page(page, sgt_iter, st)
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
238
shmem_sg_free_table(st, filp->f_mapping, false, false);
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
247
struct sg_table *st = &i915_tt->cached_rsgt.table;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
249
shmem_sg_free_table(st, file_inode(i915_tt->filp)->i_mapping,
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
257
struct sg_table *st = &i915_tt->cached_rsgt.table;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
259
GEM_WARN_ON(st->sgl);
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
333
struct sg_table *st = &i915_tt->cached_rsgt.table;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
335
if (st->sgl)
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
336
dma_unmap_sgtable(i915_tt->dev, st, DMA_BIDIRECTIONAL, 0);
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
341
sg_free_table(st);
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
529
struct sg_table *st;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
535
st = &i915_tt->cached_rsgt.table;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
536
ret = sg_alloc_table_from_pages_segment(st,
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
541
st->sgl = NULL;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
545
ret = dma_map_sgtable(i915_tt->dev, st, DMA_BIDIRECTIONAL, 0);
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
547
sg_free_table(st);
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
912
struct sg_table *st)
drivers/gpu/drm/i915/gem/i915_gem_userptr.c
103
struct sg_table *st;
drivers/gpu/drm/i915/gem/i915_gem_userptr.c
112
st = kmalloc_obj(*st);
drivers/gpu/drm/i915/gem/i915_gem_userptr.c
113
if (!st)
drivers/gpu/drm/i915/gem/i915_gem_userptr.c
125
ret = sg_alloc_table_from_pages_segment(st, pvec, num_pages, 0,
drivers/gpu/drm/i915/gem/i915_gem_userptr.c
131
ret = i915_gem_gtt_prepare_pages(obj, st);
drivers/gpu/drm/i915/gem/i915_gem_userptr.c
133
sg_free_table(st);
drivers/gpu/drm/i915/gem/i915_gem_userptr.c
147
__i915_gem_object_set_pages(obj, st);
drivers/gpu/drm/i915/gem/i915_gem_userptr.c
154
kfree(st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
101
sg = st->sgl;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
102
st->nents = 0;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
125
st->nents++;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
139
if (i915_gem_gtt_prepare_pages(obj, st))
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
143
__i915_gem_object_set_pages(obj, st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
150
huge_pages_free_pages(st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
215
struct sg_table *st;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
223
st = kmalloc_obj(*st, GFP);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
224
if (!st)
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
227
if (sg_alloc_table(st, obj->base.size >> PAGE_SHIFT, GFP)) {
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
228
kfree(st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
234
sg = st->sgl;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
235
st->nents = 0;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
248
st->nents++;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
259
i915_sg_trim(st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
261
__i915_gem_object_set_pages(obj, st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
269
struct sg_table *st;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
273
st = kmalloc_obj(*st, GFP);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
274
if (!st)
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
277
if (sg_alloc_table(st, 1, GFP)) {
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
278
kfree(st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
282
sg = st->sgl;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
283
st->nents = 1;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
293
__i915_gem_object_set_pages(obj, st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
65
static void huge_pages_free_pages(struct sg_table *st)
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
69
for (sg = st->sgl; sg; sg = __sg_next(sg)) {
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
74
sg_free_table(st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
75
kfree(st);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
82
struct sg_table *st;
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
91
st = kmalloc_obj(*st, GFP);
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
92
if (!st)
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
95
if (sg_alloc_table(st, obj->base.size >> PAGE_SHIFT, GFP)) {
drivers/gpu/drm/i915/gem/selftests/huge_pages.c
96
kfree(st);
drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c
227
struct sg_table *st;
drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c
296
st = dma_buf_map_attachment_unlocked(import_attach, DMA_BIDIRECTIONAL);
drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c
297
if (IS_ERR(st)) {
drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c
298
err = PTR_ERR(st);
drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c
309
dma_buf_unmap_attachment_unlocked(import_attach, st, DMA_BIDIRECTIONAL);
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
14
struct sg_table *st;
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
18
st = kmalloc_obj(*st);
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
19
if (!st)
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
22
err = sg_alloc_table(st, mock->npages, GFP_KERNEL);
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
26
sg = st->sgl;
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
32
err = dma_map_sgtable(attachment->dev, st, dir, 0);
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
36
return st;
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
39
sg_free_table(st);
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
41
kfree(st);
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
46
struct sg_table *st,
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
49
dma_unmap_sgtable(attachment->dev, st, dir, 0);
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
50
sg_free_table(st);
drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
51
kfree(st);
drivers/gpu/drm/i915/gt/selftest_engine_pm.c
141
u64 s_ring[COUNT], s_ctx[COUNT], st[COUNT], d_ring, d_ctx, dt;
drivers/gpu/drm/i915/gt/selftest_engine_pm.c
150
err = __measure_timestamps(ce, &st[i], &s_ring[i], &s_ctx[i]);
drivers/gpu/drm/i915/gt/selftest_engine_pm.c
158
dt = trifilter(st);
drivers/gpu/drm/i915/gt/selftest_migrate.c
540
struct spinner_timer *st = timer_container_of(st, timer, timer);
drivers/gpu/drm/i915/gt/selftest_migrate.c
542
igt_spinner_end(&st->spin);
drivers/gpu/drm/i915/gt/selftest_migrate.c
554
struct spinner_timer st;
drivers/gpu/drm/i915/gt/selftest_migrate.c
565
if (igt_spinner_init(&st.spin, to_gt(i915)))
drivers/gpu/drm/i915/gt/selftest_migrate.c
590
rq = igt_spinner_create_request(&st.spin, ce, MI_ARB_CHECK);
drivers/gpu/drm/i915/gt/selftest_migrate.c
597
if (!igt_wait_for_spinner(&st.spin, rq)) {
drivers/gpu/drm/i915/gt/selftest_migrate.c
642
timer_setup_on_stack(&st.timer, spinner_kill, 0);
drivers/gpu/drm/i915/gt/selftest_migrate.c
643
mod_timer(&st.timer, jiffies + 2 * HZ);
drivers/gpu/drm/i915/gt/selftest_migrate.c
663
timer_delete_sync(&st.timer);
drivers/gpu/drm/i915/gt/selftest_migrate.c
664
timer_destroy_on_stack(&st.timer);
drivers/gpu/drm/i915/gt/selftest_migrate.c
672
igt_spinner_fini(&st.spin);
drivers/gpu/drm/i915/gvt/dmabuf.c
100
for_each_sg(st->sgl, sg, i, j) {
drivers/gpu/drm/i915/gvt/dmabuf.c
105
sg_free_table(st);
drivers/gpu/drm/i915/gvt/dmabuf.c
106
kfree(st);
drivers/gpu/drm/i915/gvt/dmabuf.c
51
struct sg_table *st;
drivers/gpu/drm/i915/gvt/dmabuf.c
70
st = kmalloc_obj(*st);
drivers/gpu/drm/i915/gvt/dmabuf.c
71
if (unlikely(!st))
drivers/gpu/drm/i915/gvt/dmabuf.c
74
ret = sg_alloc_table(st, page_num, GFP_KERNEL);
drivers/gpu/drm/i915/gvt/dmabuf.c
76
kfree(st);
drivers/gpu/drm/i915/gvt/dmabuf.c
81
for_each_sg(st->sgl, sg, page_num, i) {
drivers/gpu/drm/i915/gvt/dmabuf.c
95
__i915_gem_object_set_pages(obj, st);
drivers/gpu/drm/i915/i915_scatterlist.c
106
if (sg_alloc_table(st, DIV_ROUND_UP_ULL(node->size, segment_pages),
drivers/gpu/drm/i915/i915_scatterlist.c
112
sg = st->sgl;
drivers/gpu/drm/i915/i915_scatterlist.c
113
st->nents = 0;
drivers/gpu/drm/i915/i915_scatterlist.c
122
if (st->nents)
drivers/gpu/drm/i915/i915_scatterlist.c
130
st->nents++;
drivers/gpu/drm/i915/i915_scatterlist.c
144
i915_sg_trim(st);
drivers/gpu/drm/i915/i915_scatterlist.c
175
struct sg_table *st;
drivers/gpu/drm/i915/i915_scatterlist.c
186
st = &rsgt->table;
drivers/gpu/drm/i915/i915_scatterlist.c
193
if (sg_alloc_table(st, PFN_UP(res->size), GFP_KERNEL | __GFP_NOWARN)) {
drivers/gpu/drm/i915/i915_scatterlist.c
198
sg = st->sgl;
drivers/gpu/drm/i915/i915_scatterlist.c
199
st->nents = 0;
drivers/gpu/drm/i915/i915_scatterlist.c
212
if (st->nents)
drivers/gpu/drm/i915/i915_scatterlist.c
220
st->nents++;
drivers/gpu/drm/i915/i915_scatterlist.c
235
i915_sg_trim(st);
drivers/gpu/drm/i915/i915_scatterlist.c
88
struct sg_table *st;
drivers/gpu/drm/i915/i915_scatterlist.c
98
st = &rsgt->table;
drivers/gpu/drm/i915/i915_selftest.h
89
const struct i915_subtest *st,
drivers/gpu/drm/i915/i915_vma.c
1002
st->nents++;
drivers/gpu/drm/i915/i915_vma.c
1024
struct sg_table *st;
drivers/gpu/drm/i915/i915_vma.c
1030
st = kmalloc_obj(*st);
drivers/gpu/drm/i915/i915_vma.c
1031
if (!st)
drivers/gpu/drm/i915/i915_vma.c
1034
ret = sg_alloc_table(st, size, GFP_KERNEL);
drivers/gpu/drm/i915/i915_vma.c
1038
st->nents = 0;
drivers/gpu/drm/i915/i915_vma.c
1039
sg = st->sgl;
drivers/gpu/drm/i915/i915_vma.c
1046
st, sg);
drivers/gpu/drm/i915/i915_vma.c
1048
return st;
drivers/gpu/drm/i915/i915_vma.c
1051
kfree(st);
drivers/gpu/drm/i915/i915_vma.c
1063
struct sg_table *st, struct scatterlist *sg)
drivers/gpu/drm/i915/i915_vma.c
1065
st->nents++;
drivers/gpu/drm/i915/i915_vma.c
1085
struct sg_table *st, struct scatterlist *sg,
drivers/gpu/drm/i915/i915_vma.c
1094
sg = add_padding_pages(alignment_pad, st, sg);
drivers/gpu/drm/i915/i915_vma.c
1113
st->nents++;
drivers/gpu/drm/i915/i915_vma.c
1131
sg = add_padding_pages(left >> PAGE_SHIFT, st, sg);
drivers/gpu/drm/i915/i915_vma.c
1143
struct sg_table *st, struct scatterlist *sg)
drivers/gpu/drm/i915/i915_vma.c
1161
st->nents++;
drivers/gpu/drm/i915/i915_vma.c
1176
struct sg_table *st, struct scatterlist *sg,
drivers/gpu/drm/i915/i915_vma.c
1183
sg = add_padding_pages(alignment_pad, st, sg);
drivers/gpu/drm/i915/i915_vma.c
1185
sg = remap_contiguous_pages(obj, obj_offset, size, st, sg);
drivers/gpu/drm/i915/i915_vma.c
1197
struct sg_table *st, struct scatterlist *sg,
drivers/gpu/drm/i915/i915_vma.c
1210
st, sg,
drivers/gpu/drm/i915/i915_vma.c
1221
st, sg,
drivers/gpu/drm/i915/i915_vma.c
1233
struct sg_table *st;
drivers/gpu/drm/i915/i915_vma.c
1240
st = kmalloc_obj(*st);
drivers/gpu/drm/i915/i915_vma.c
1241
if (!st)
drivers/gpu/drm/i915/i915_vma.c
1244
ret = sg_alloc_table(st, size, GFP_KERNEL);
drivers/gpu/drm/i915/i915_vma.c
1248
st->nents = 0;
drivers/gpu/drm/i915/i915_vma.c
1249
sg = st->sgl;
drivers/gpu/drm/i915/i915_vma.c
1252
sg = remap_color_plane_pages(rem_info, obj, i, st, sg, >t_offset);
drivers/gpu/drm/i915/i915_vma.c
1254
i915_sg_trim(st);
drivers/gpu/drm/i915/i915_vma.c
1256
return st;
drivers/gpu/drm/i915/i915_vma.c
1259
kfree(st);
drivers/gpu/drm/i915/i915_vma.c
1273
struct sg_table *st;
drivers/gpu/drm/i915/i915_vma.c
1278
st = kmalloc_obj(*st);
drivers/gpu/drm/i915/i915_vma.c
1279
if (!st)
drivers/gpu/drm/i915/i915_vma.c
1282
ret = sg_alloc_table(st, count, GFP_KERNEL);
drivers/gpu/drm/i915/i915_vma.c
1286
st->nents = 0;
drivers/gpu/drm/i915/i915_vma.c
1288
sg = remap_contiguous_pages(obj, view->partial.offset, count, st, st->sgl);
drivers/gpu/drm/i915/i915_vma.c
1291
i915_sg_trim(st); /* Drop any unused tail entries. */
drivers/gpu/drm/i915/i915_vma.c
1293
return st;
drivers/gpu/drm/i915/i915_vma.c
1296
kfree(st);
drivers/gpu/drm/i915/i915_vma.c
973
struct sg_table *st, struct scatterlist *sg)
drivers/gpu/drm/i915/i915_vma.c
983
st->nents++;
drivers/gpu/drm/i915/selftests/i915_selftest.c
123
static void set_default_test_all(struct selftest *st, unsigned int count)
drivers/gpu/drm/i915/selftests/i915_selftest.c
128
if (st[i].enabled)
drivers/gpu/drm/i915/selftests/i915_selftest.c
132
st[i].enabled = true;
drivers/gpu/drm/i915/selftests/i915_selftest.c
223
struct selftest *st,
drivers/gpu/drm/i915/selftests/i915_selftest.c
242
set_default_test_all(st, count);
drivers/gpu/drm/i915/selftests/i915_selftest.c
265
for (; count--; st++) {
drivers/gpu/drm/i915/selftests/i915_selftest.c
266
if (!st->enabled)
drivers/gpu/drm/i915/selftests/i915_selftest.c
278
pr_info(DRIVER_NAME ": Running %s\n", st->name);
drivers/gpu/drm/i915/selftests/i915_selftest.c
280
err = st->live(data);
drivers/gpu/drm/i915/selftests/i915_selftest.c
282
err = st->mock();
drivers/gpu/drm/i915/selftests/i915_selftest.c
291
st->name, err))
drivers/gpu/drm/i915/selftests/i915_selftest.c
494
const struct i915_subtest *st,
drivers/gpu/drm/i915/selftests/i915_selftest.c
500
for (; count--; st++) {
drivers/gpu/drm/i915/selftests/i915_selftest.c
505
if (!apply_subtest_filter(caller, st->name))
drivers/gpu/drm/i915/selftests/i915_selftest.c
511
caller, st->name);
drivers/gpu/drm/i915/selftests/i915_selftest.c
515
pr_info(DRIVER_NAME ": Running %s/%s\n", caller, st->name);
drivers/gpu/drm/i915/selftests/i915_selftest.c
516
GEM_TRACE("Running %s/%s\n", caller, st->name);
drivers/gpu/drm/i915/selftests/i915_selftest.c
518
err = teardown(st->func(data), data);
drivers/gpu/drm/i915/selftests/i915_selftest.c
521
caller, st->name, err);
drivers/gpu/drm/i915/selftests/scatterlist.c
121
for_each_sgt_page(page, sgt, &pt->st) {
drivers/gpu/drm/i915/selftests/scatterlist.c
227
if (sg_alloc_table(&pt->st, max,
drivers/gpu/drm/i915/selftests/scatterlist.c
240
sg = pt->st.sgl;
drivers/gpu/drm/i915/selftests/scatterlist.c
248
sg_free_table(&pt->st);
drivers/gpu/drm/i915/selftests/scatterlist.c
263
pt->st.nents = n;
drivers/gpu/drm/i915/selftests/scatterlist.c
311
sg_free_table(&pt.st);
drivers/gpu/drm/i915/selftests/scatterlist.c
33
struct sg_table st;
drivers/gpu/drm/i915/selftests/scatterlist.c
348
if (i915_sg_trim(&pt.st)) {
drivers/gpu/drm/i915/selftests/scatterlist.c
349
if (pt.st.orig_nents != prime ||
drivers/gpu/drm/i915/selftests/scatterlist.c
350
pt.st.nents != prime) {
drivers/gpu/drm/i915/selftests/scatterlist.c
352
pt.st.nents, pt.st.orig_nents, prime);
drivers/gpu/drm/i915/selftests/scatterlist.c
363
sg_free_table(&pt.st);
drivers/gpu/drm/i915/selftests/scatterlist.c
51
for_each_sg(pt->st.sgl, sg, pt->st.nents, n) {
drivers/gpu/drm/i915/selftests/scatterlist.c
53
unsigned int npages = npages_fn(n, pt->st.nents, rnd);
drivers/gpu/drm/i915/selftests/scatterlist.c
89
for_each_sg_page(pt->st.sgl, &sgiter, pt->st.nents, 0) {
drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
60
enum nvkm_therm_thrs_state st)
drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
62
therm->sensor.alarm_state[thrs] = st;
drivers/gpu/drm/ttm/ttm_resource.c
747
sg_next(iter_io->cache.sg) : iter_io->st->sgl;
drivers/gpu/drm/ttm/ttm_resource.c
793
struct sg_table *st,
drivers/gpu/drm/ttm/ttm_resource.c
798
iter_io->st = st;
drivers/hte/hte.c
802
int st = 0;
drivers/hte/hte.c
823
st = -EINVAL;
drivers/hte/hte.c
836
return st;
drivers/hwmon/adm1177.c
103
ret = adm1177_read_raw(st, 3, data);
drivers/hwmon/adm1177.c
111
if (st->vrange_high)
drivers/hwmon/adm1177.c
126
struct adm1177_state *st = dev_get_drvdata(dev);
drivers/hwmon/adm1177.c
133
div_u64(105840000ULL, st->r_sense_uohm));
drivers/hwmon/adm1177.c
134
return adm1177_write_alert_thr(st, (u64)val * 1000);
drivers/hwmon/adm1177.c
147
const struct adm1177_state *st = data;
drivers/hwmon/adm1177.c
159
if (st->r_sense_uohm)
drivers/hwmon/adm1177.c
163
if (st->r_sense_uohm)
drivers/hwmon/adm1177.c
197
struct adm1177_state *st;
drivers/hwmon/adm1177.c
202
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/hwmon/adm1177.c
203
if (!st)
drivers/hwmon/adm1177.c
206
st->client = client;
drivers/hwmon/adm1177.c
213
&st->r_sense_uohm))
drivers/hwmon/adm1177.c
214
st->r_sense_uohm = 0;
drivers/hwmon/adm1177.c
218
} else if (st->r_sense_uohm) {
drivers/hwmon/adm1177.c
224
st->r_sense_uohm);
drivers/hwmon/adm1177.c
228
st->vrange_high = device_property_read_bool(dev,
drivers/hwmon/adm1177.c
230
if (alert_threshold_ua && st->r_sense_uohm) {
drivers/hwmon/adm1177.c
231
ret = adm1177_write_alert_thr(st, alert_threshold_ua);
drivers/hwmon/adm1177.c
236
ret = adm1177_write_cmd(st, ADM1177_CMD_V_CONT |
drivers/hwmon/adm1177.c
238
(st->vrange_high ? 0 : ADM1177_CMD_VRANGE));
drivers/hwmon/adm1177.c
243
devm_hwmon_device_register_with_info(dev, client->name, st,
drivers/hwmon/adm1177.c
42
static int adm1177_read_raw(struct adm1177_state *st, u8 num, u8 *data)
drivers/hwmon/adm1177.c
44
return i2c_master_recv(st->client, data, num);
drivers/hwmon/adm1177.c
47
static int adm1177_write_cmd(struct adm1177_state *st, u8 cmd)
drivers/hwmon/adm1177.c
49
return i2c_smbus_write_byte(st->client, cmd);
drivers/hwmon/adm1177.c
52
static int adm1177_write_alert_thr(struct adm1177_state *st,
drivers/hwmon/adm1177.c
58
val = 0xFFULL * alert_threshold_ua * st->r_sense_uohm;
drivers/hwmon/adm1177.c
64
ret = i2c_smbus_write_byte_data(st->client, ADM1177_REG_ALERT_TH,
drivers/hwmon/adm1177.c
69
st->alert_threshold_ua = alert_threshold_ua;
drivers/hwmon/adm1177.c
76
struct adm1177_state *st = dev_get_drvdata(dev);
drivers/hwmon/adm1177.c
85
ret = adm1177_read_raw(st, 3, data);
drivers/hwmon/adm1177.c
94
4096 * st->r_sense_uohm);
drivers/hwmon/adm1177.c
97
*val = div_u64(st->alert_threshold_ua, 1000);
drivers/hwmon/drivetemp.c
116
int (*get_temp)(struct drivetemp_data *st, u32 attr, long *val);
drivers/hwmon/drivetemp.c
160
static int drivetemp_scsi_command(struct drivetemp_data *st,
drivers/hwmon/drivetemp.c
194
err = scsi_execute_cmd(st->sdev, scsi_cmd, op, st->smartdata,
drivers/hwmon/drivetemp.c
201
static int drivetemp_ata_command(struct drivetemp_data *st, u8 feature,
drivers/hwmon/drivetemp.c
204
return drivetemp_scsi_command(st, ATA_CMD_SMART, feature, select,
drivers/hwmon/drivetemp.c
208
static int drivetemp_get_smarttemp(struct drivetemp_data *st, u32 attr,
drivers/hwmon/drivetemp.c
211
u8 *buf = st->smartdata;
drivers/hwmon/drivetemp.c
218
err = drivetemp_ata_command(st, ATA_SMART_READ_VALUES, 0);
drivers/hwmon/drivetemp.c
227
dev_dbg(&st->sdev->sdev_gendev,
drivers/hwmon/drivetemp.c
258
static int drivetemp_get_scttemp(struct drivetemp_data *st, u32 attr, long *val)
drivers/hwmon/drivetemp.c
260
u8 *buf = st->smartdata;
drivers/hwmon/drivetemp.c
263
err = drivetemp_ata_command(st, SMART_READ_LOG, SCT_STATUS_REQ_ADDR);
drivers/hwmon/drivetemp.c
304
static bool drivetemp_sct_avoid(struct drivetemp_data *st)
drivers/hwmon/drivetemp.c
306
struct scsi_device *sdev = st->sdev;
drivers/hwmon/drivetemp.c
322
static int drivetemp_identify_sata(struct drivetemp_data *st)
drivers/hwmon/drivetemp.c
324
struct scsi_device *sdev = st->sdev;
drivers/hwmon/drivetemp.c
325
u8 *buf = st->smartdata;
drivers/hwmon/drivetemp.c
364
if (have_sct && drivetemp_sct_avoid(st)) {
drivers/hwmon/drivetemp.c
373
err = drivetemp_ata_command(st, SMART_READ_LOG, SCT_STATUS_REQ_ADDR);
drivers/hwmon/drivetemp.c
386
st->have_temp_lowest = temp_is_valid(buf[SCT_STATUS_TEMP_LOWEST]);
drivers/hwmon/drivetemp.c
387
st->have_temp_highest = temp_is_valid(buf[SCT_STATUS_TEMP_HIGHEST]);
drivers/hwmon/drivetemp.c
393
memset(buf, '\0', sizeof(st->smartdata));
drivers/hwmon/drivetemp.c
398
err = drivetemp_ata_command(st, SMART_WRITE_LOG, SCT_STATUS_REQ_ADDR);
drivers/hwmon/drivetemp.c
402
err = drivetemp_ata_command(st, SMART_READ_LOG, SCT_READ_LOG_ADDR);
drivers/hwmon/drivetemp.c
410
st->have_temp_max = temp_is_valid(buf[6]);
drivers/hwmon/drivetemp.c
411
st->have_temp_crit = temp_is_valid(buf[7]);
drivers/hwmon/drivetemp.c
412
st->have_temp_min = temp_is_valid(buf[8]);
drivers/hwmon/drivetemp.c
413
st->have_temp_lcrit = temp_is_valid(buf[9]);
drivers/hwmon/drivetemp.c
415
st->temp_max = temp_from_sct(buf[6]);
drivers/hwmon/drivetemp.c
416
st->temp_crit = temp_from_sct(buf[7]);
drivers/hwmon/drivetemp.c
417
st->temp_min = temp_from_sct(buf[8]);
drivers/hwmon/drivetemp.c
418
st->temp_lcrit = temp_from_sct(buf[9]);
drivers/hwmon/drivetemp.c
422
st->get_temp = drivetemp_get_scttemp;
drivers/hwmon/drivetemp.c
428
st->get_temp = drivetemp_get_smarttemp;
drivers/hwmon/drivetemp.c
429
return drivetemp_get_smarttemp(st, hwmon_temp_input, &temp);
drivers/hwmon/drivetemp.c
432
static int drivetemp_identify(struct drivetemp_data *st)
drivers/hwmon/drivetemp.c
434
struct scsi_device *sdev = st->sdev;
drivers/hwmon/drivetemp.c
444
return drivetemp_identify_sata(st);
drivers/hwmon/drivetemp.c
450
struct drivetemp_data *st = dev_get_drvdata(dev);
drivers/hwmon/drivetemp.c
460
err = st->get_temp(st, attr, val);
drivers/hwmon/drivetemp.c
463
*val = st->temp_lcrit;
drivers/hwmon/drivetemp.c
466
*val = st->temp_min;
drivers/hwmon/drivetemp.c
469
*val = st->temp_max;
drivers/hwmon/drivetemp.c
472
*val = st->temp_crit;
drivers/hwmon/drivetemp.c
485
const struct drivetemp_data *st = data;
drivers/hwmon/drivetemp.c
493
if (st->have_temp_lowest)
drivers/hwmon/drivetemp.c
497
if (st->have_temp_highest)
drivers/hwmon/drivetemp.c
501
if (st->have_temp_min)
drivers/hwmon/drivetemp.c
505
if (st->have_temp_max)
drivers/hwmon/drivetemp.c
509
if (st->have_temp_lcrit)
drivers/hwmon/drivetemp.c
513
if (st->have_temp_crit)
drivers/hwmon/drivetemp.c
553
struct drivetemp_data *st;
drivers/hwmon/drivetemp.c
556
st = kzalloc_obj(*st);
drivers/hwmon/drivetemp.c
557
if (!st)
drivers/hwmon/drivetemp.c
560
st->sdev = sdev;
drivers/hwmon/drivetemp.c
561
st->dev = dev;
drivers/hwmon/drivetemp.c
563
if (drivetemp_identify(st)) {
drivers/hwmon/drivetemp.c
568
st->hwdev = hwmon_device_register_with_info(dev->parent, "drivetemp",
drivers/hwmon/drivetemp.c
569
st, &drivetemp_chip_info,
drivers/hwmon/drivetemp.c
571
if (IS_ERR(st->hwdev)) {
drivers/hwmon/drivetemp.c
572
err = PTR_ERR(st->hwdev);
drivers/hwmon/drivetemp.c
576
list_add(&st->list, &drivetemp_devlist);
drivers/hwmon/drivetemp.c
580
kfree(st);
drivers/hwmon/drivetemp.c
586
struct drivetemp_data *st, *tmp;
drivers/hwmon/drivetemp.c
588
list_for_each_entry_safe(st, tmp, &drivetemp_devlist, list) {
drivers/hwmon/drivetemp.c
589
if (st->dev == dev) {
drivers/hwmon/drivetemp.c
590
list_del(&st->list);
drivers/hwmon/drivetemp.c
591
hwmon_device_unregister(st->hwdev);
drivers/hwmon/drivetemp.c
592
kfree(st);
drivers/hwmon/iio_hwmon.c
101
if (!st || !buf)
drivers/hwmon/iio_hwmon.c
104
st->channels = channels;
drivers/hwmon/iio_hwmon.c
107
while (st->channels[st->num_channels].indio_dev)
drivers/hwmon/iio_hwmon.c
108
st->num_channels++;
drivers/hwmon/iio_hwmon.c
110
st->attrs = devm_kcalloc(dev,
drivers/hwmon/iio_hwmon.c
111
2 * st->num_channels + 1, sizeof(*st->attrs),
drivers/hwmon/iio_hwmon.c
113
if (st->attrs == NULL)
drivers/hwmon/iio_hwmon.c
116
for (i = 0; i < st->num_channels; i++) {
drivers/hwmon/iio_hwmon.c
125
ret = iio_get_channel_type(&st->channels[i], &type);
drivers/hwmon/iio_hwmon.c
163
st->attrs[attr++] = &a->dev_attr.attr;
drivers/hwmon/iio_hwmon.c
166
if (iio_read_channel_label(&st->channels[i], buf) < 0)
drivers/hwmon/iio_hwmon.c
183
st->attrs[attr++] = &a->dev_attr.attr;
drivers/hwmon/iio_hwmon.c
188
st->attr_group.attrs = st->attrs;
drivers/hwmon/iio_hwmon.c
189
st->groups[0] = &st->attr_group;
drivers/hwmon/iio_hwmon.c
200
hwmon_dev = devm_hwmon_device_register_with_groups(dev, sname, st,
drivers/hwmon/iio_hwmon.c
201
st->groups);
drivers/hwmon/iio_hwmon.c
80
struct iio_hwmon_state *st;
drivers/hwmon/iio_hwmon.c
99
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/hwmon/lm90.c
1096
int st, st2;
drivers/hwmon/lm90.c
1105
st = new_alarms & 0xff;
drivers/hwmon/lm90.c
1108
if ((st & (LM90_STATUS_LLOW | LM90_STATUS_LHIGH | LM90_STATUS_LTHRM)) ||
drivers/hwmon/lm90.c
1111
if ((st & (LM90_STATUS_RLOW | LM90_STATUS_RHIGH | LM90_STATUS_RTHRM)) ||
drivers/hwmon/lm90.c
1114
if (st & LM90_STATUS_ROPEN)
drivers/hwmon/lm90.c
1122
st |= cleared_alarms & 0xff;
drivers/hwmon/lm90.c
1125
if (st & LM90_STATUS_LLOW)
drivers/hwmon/lm90.c
1127
if (st & LM90_STATUS_RLOW)
drivers/hwmon/lm90.c
1132
if (st & LM90_STATUS_LHIGH)
drivers/hwmon/lm90.c
1134
if (st & LM90_STATUS_RHIGH)
drivers/hwmon/lm90.c
1139
if (st & LM90_STATUS_LTHRM)
drivers/hwmon/lm90.c
1141
if (st & LM90_STATUS_RTHRM)
drivers/hwmon/ltc2947-core.c
1004
st->lsb_energy = DIV_ROUND_CLOSEST_ULL(aux, rate_hz);
drivers/hwmon/ltc2947-core.c
1007
st->lsb_energy = 19890;
drivers/hwmon/ltc2947-core.c
1009
ret = device_property_read_u32_array(st->dev, "adi,accumulator-ctl-pol",
drivers/hwmon/ltc2947-core.c
1015
ret = regmap_write(st->map, LTC2947_REG_ACCUM_POL, accum_reg);
drivers/hwmon/ltc2947-core.c
1019
ret = device_property_read_u32(st->dev,
drivers/hwmon/ltc2947-core.c
1024
ret = regmap_write(st->map, LTC2947_REG_ACCUM_DEADBAND,
drivers/hwmon/ltc2947-core.c
1030
ret = device_property_read_u32(st->dev, "adi,gpio-out-pol", &pol);
drivers/hwmon/ltc2947-core.c
1036
st->gpio_out = true;
drivers/hwmon/ltc2947-core.c
1037
ret = regmap_write(st->map, LTC2947_REG_GPIOSTATCTL, gpio_ctl);
drivers/hwmon/ltc2947-core.c
1041
ret = device_property_read_u32_array(st->dev, "adi,gpio-in-accum",
drivers/hwmon/ltc2947-core.c
1051
if (st->gpio_out) {
drivers/hwmon/ltc2947-core.c
1052
dev_err(st->dev,
drivers/hwmon/ltc2947-core.c
1057
ret = regmap_write(st->map, LTC2947_REG_GPIO_ACCUM, accum_val);
drivers/hwmon/ltc2947-core.c
1063
return regmap_update_bits(st->map, LTC2947_REG_CTRL,
drivers/hwmon/ltc2947-core.c
1069
struct ltc2947_data *st;
drivers/hwmon/ltc2947-core.c
1074
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/hwmon/ltc2947-core.c
1075
if (!st)
drivers/hwmon/ltc2947-core.c
1078
st->map = map;
drivers/hwmon/ltc2947-core.c
1079
st->dev = dev;
drivers/hwmon/ltc2947-core.c
1080
dev_set_drvdata(dev, st);
drivers/hwmon/ltc2947-core.c
1082
ret = ltc2947_setup(st);
drivers/hwmon/ltc2947-core.c
1086
hwmon = devm_hwmon_device_register_with_info(dev, name, st,
drivers/hwmon/ltc2947-core.c
1094
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
1099
ret = regmap_read(st->map, LTC2947_REG_CTRL, &ctrl);
drivers/hwmon/ltc2947-core.c
1107
ret = regmap_read(st->map, LTC2947_REG_CTRL, &ctrl);
drivers/hwmon/ltc2947-core.c
1112
dev_err(st->dev, "Device failed to wake up, ctl:%02X\n", ctrl);
drivers/hwmon/ltc2947-core.c
1117
return regmap_update_bits(st->map, LTC2947_REG_CTRL,
drivers/hwmon/ltc2947-core.c
1123
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
1125
return regmap_update_bits(st->map, LTC2947_REG_CTRL,
drivers/hwmon/ltc2947-core.c
126
static int __ltc2947_val_read16(const struct ltc2947_data *st, const u8 reg,
drivers/hwmon/ltc2947-core.c
132
ret = regmap_bulk_read(st->map, reg, &__val, 2);
drivers/hwmon/ltc2947-core.c
141
static int __ltc2947_val_read24(const struct ltc2947_data *st, const u8 reg,
drivers/hwmon/ltc2947-core.c
147
ret = regmap_bulk_read(st->map, reg, &__val, 3);
drivers/hwmon/ltc2947-core.c
156
static int __ltc2947_val_read64(const struct ltc2947_data *st, const u8 reg,
drivers/hwmon/ltc2947-core.c
162
ret = regmap_bulk_read(st->map, reg, &__val, 6);
drivers/hwmon/ltc2947-core.c
171
static int ltc2947_val_read(struct ltc2947_data *st, const u8 reg,
drivers/hwmon/ltc2947-core.c
177
ret = regmap_write(st->map, LTC2947_REG_PAGE_CTRL, page);
drivers/hwmon/ltc2947-core.c
181
dev_dbg(st->dev, "Read val, reg:%02X, p:%d sz:%zu\n", reg, page,
drivers/hwmon/ltc2947-core.c
186
ret = __ltc2947_val_read16(st, reg, &__val);
drivers/hwmon/ltc2947-core.c
189
ret = __ltc2947_val_read24(st, reg, &__val);
drivers/hwmon/ltc2947-core.c
192
ret = __ltc2947_val_read64(st, reg, &__val);
drivers/hwmon/ltc2947-core.c
204
dev_dbg(st->dev, "Got s:%lld, u:%016llX\n", *val, __val);
drivers/hwmon/ltc2947-core.c
209
static int __ltc2947_val_write64(const struct ltc2947_data *st, const u8 reg,
drivers/hwmon/ltc2947-core.c
215
return regmap_bulk_write(st->map, reg, &__val, 6);
drivers/hwmon/ltc2947-core.c
218
static int __ltc2947_val_write16(const struct ltc2947_data *st, const u8 reg,
drivers/hwmon/ltc2947-core.c
224
return regmap_bulk_write(st->map, reg, &__val, 2);
drivers/hwmon/ltc2947-core.c
227
static int ltc2947_val_write(struct ltc2947_data *st, const u8 reg,
drivers/hwmon/ltc2947-core.c
233
ret = regmap_write(st->map, LTC2947_REG_PAGE_CTRL, page);
drivers/hwmon/ltc2947-core.c
237
dev_dbg(st->dev, "Write val, r:%02X, p:%d, sz:%zu, val:%016llX\n",
drivers/hwmon/ltc2947-core.c
242
ret = __ltc2947_val_write16(st, reg, val);
drivers/hwmon/ltc2947-core.c
245
ret = __ltc2947_val_write64(st, reg, val);
drivers/hwmon/ltc2947-core.c
255
static int ltc2947_reset_history(struct ltc2947_data *st, const u8 reg_h,
drivers/hwmon/ltc2947-core.c
263
ret = ltc2947_val_write(st, reg_h, LTC2947_PAGE0, 2, 0x8000U);
drivers/hwmon/ltc2947-core.c
267
return ltc2947_val_write(st, reg_l, LTC2947_PAGE0, 2, 0x7FFFU);
drivers/hwmon/ltc2947-core.c
270
static int ltc2947_alarm_read(struct ltc2947_data *st, const u8 reg,
drivers/hwmon/ltc2947-core.c
280
ret = regmap_write(st->map, LTC2947_REG_PAGE_CTRL, LTC2947_PAGE0);
drivers/hwmon/ltc2947-core.c
284
dev_dbg(st->dev, "Read alarm, reg:%02X, mask:%02X\n", reg, mask);
drivers/hwmon/ltc2947-core.c
290
ret = regmap_bulk_read(st->map, LTC2947_REG_STATUS, alarms,
drivers/hwmon/ltc2947-core.c
304
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
309
ret = ltc2947_val_read(st, LTC2947_REG_TEMP, LTC2947_PAGE0,
drivers/hwmon/ltc2947-core.c
313
ret = ltc2947_val_read(st, LTC2947_REG_TEMP_MAX, LTC2947_PAGE0,
drivers/hwmon/ltc2947-core.c
317
ret = ltc2947_val_read(st, LTC2947_REG_TEMP_MIN, LTC2947_PAGE0,
drivers/hwmon/ltc2947-core.c
322
return ltc2947_alarm_read(st, LTC2947_REG_STATVT,
drivers/hwmon/ltc2947-core.c
326
return ltc2947_alarm_read(st, LTC2947_REG_STATVT,
drivers/hwmon/ltc2947-core.c
330
return ltc2947_alarm_read(st, LTC2947_REG_STATVT,
drivers/hwmon/ltc2947-core.c
334
return ltc2947_alarm_read(st, LTC2947_REG_STATVT,
drivers/hwmon/ltc2947-core.c
338
ret = ltc2947_val_read(st, LTC2947_REG_TEMP_FAN_THRE_H,
drivers/hwmon/ltc2947-core.c
341
ret = ltc2947_val_read(st, LTC2947_REG_TEMP_THRE_H,
drivers/hwmon/ltc2947-core.c
346
ret = ltc2947_val_read(st, LTC2947_REG_TEMP_FAN_THRE_L,
drivers/hwmon/ltc2947-core.c
349
ret = ltc2947_val_read(st, LTC2947_REG_TEMP_THRE_L,
drivers/hwmon/ltc2947-core.c
367
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
374
ret = ltc2947_val_read(st, LTC2947_REG_POWER, LTC2947_PAGE0,
drivers/hwmon/ltc2947-core.c
379
ret = ltc2947_val_read(st, LTC2947_REG_POWER_MAX, LTC2947_PAGE0,
drivers/hwmon/ltc2947-core.c
383
ret = ltc2947_val_read(st, LTC2947_REG_POWER_MIN, LTC2947_PAGE0,
drivers/hwmon/ltc2947-core.c
387
return ltc2947_alarm_read(st, LTC2947_REG_STATIP,
drivers/hwmon/ltc2947-core.c
390
return ltc2947_alarm_read(st, LTC2947_REG_STATIP,
drivers/hwmon/ltc2947-core.c
393
ret = ltc2947_val_read(st, LTC2947_REG_POWER_THRE_H,
drivers/hwmon/ltc2947-core.c
397
ret = ltc2947_val_read(st, LTC2947_REG_POWER_THRE_L,
drivers/hwmon/ltc2947-core.c
414
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
421
ret = ltc2947_val_read(st, LTC2947_REG_CURRENT,
drivers/hwmon/ltc2947-core.c
426
ret = ltc2947_val_read(st, LTC2947_REG_CURRENT_MAX,
drivers/hwmon/ltc2947-core.c
430
ret = ltc2947_val_read(st, LTC2947_REG_CURRENT_MIN,
drivers/hwmon/ltc2947-core.c
434
return ltc2947_alarm_read(st, LTC2947_REG_STATIP,
drivers/hwmon/ltc2947-core.c
437
return ltc2947_alarm_read(st, LTC2947_REG_STATIP,
drivers/hwmon/ltc2947-core.c
440
ret = ltc2947_val_read(st, LTC2947_REG_CURRENT_THRE_H,
drivers/hwmon/ltc2947-core.c
444
ret = ltc2947_val_read(st, LTC2947_REG_CURRENT_THRE_L,
drivers/hwmon/ltc2947-core.c
462
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
468
dev_err(st->dev, "Invalid chan%d for voltage", channel);
drivers/hwmon/ltc2947-core.c
475
ret = ltc2947_val_read(st, LTC2947_REG_DVCC,
drivers/hwmon/ltc2947-core.c
479
ret = ltc2947_val_read(st, LTC2947_REG_VOLTAGE,
drivers/hwmon/ltc2947-core.c
485
ret = ltc2947_val_read(st, LTC2947_REG_DVCC_MAX,
drivers/hwmon/ltc2947-core.c
489
ret = ltc2947_val_read(st, LTC2947_REG_VOLTAGE_MAX,
drivers/hwmon/ltc2947-core.c
495
ret = ltc2947_val_read(st, LTC2947_REG_DVCC_MIN,
drivers/hwmon/ltc2947-core.c
499
ret = ltc2947_val_read(st, LTC2947_REG_VOLTAGE_MIN,
drivers/hwmon/ltc2947-core.c
505
return ltc2947_alarm_read(st, LTC2947_REG_STATVDVCC,
drivers/hwmon/ltc2947-core.c
509
return ltc2947_alarm_read(st, LTC2947_REG_STATVT,
drivers/hwmon/ltc2947-core.c
513
return ltc2947_alarm_read(st, LTC2947_REG_STATVDVCC,
drivers/hwmon/ltc2947-core.c
517
return ltc2947_alarm_read(st, LTC2947_REG_STATVT,
drivers/hwmon/ltc2947-core.c
521
ret = ltc2947_val_read(st, LTC2947_REG_DVCC_THRE_H,
drivers/hwmon/ltc2947-core.c
525
ret = ltc2947_val_read(st, LTC2947_REG_VOLTAGE_THRE_H,
drivers/hwmon/ltc2947-core.c
531
ret = ltc2947_val_read(st, LTC2947_REG_DVCC_THRE_L,
drivers/hwmon/ltc2947-core.c
535
ret = ltc2947_val_read(st, LTC2947_REG_VOLTAGE_THRE_L,
drivers/hwmon/ltc2947-core.c
554
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
558
ret = ltc2947_val_read(st, reg, LTC2947_PAGE0, 6, &__val);
drivers/hwmon/ltc2947-core.c
563
*val = DIV_S64_ROUND_CLOSEST(__val * st->lsb_energy, 1000);
drivers/hwmon/ltc2947-core.c
590
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
593
dev_err(st->dev, "Invalid chan%d for temperature", channel);
drivers/hwmon/ltc2947-core.c
601
return ltc2947_reset_history(st, LTC2947_REG_TEMP_MAX,
drivers/hwmon/ltc2947-core.c
606
if (!st->gpio_out)
drivers/hwmon/ltc2947-core.c
609
return ltc2947_val_write(st,
drivers/hwmon/ltc2947-core.c
615
return ltc2947_val_write(st, LTC2947_REG_TEMP_THRE_H,
drivers/hwmon/ltc2947-core.c
621
if (!st->gpio_out)
drivers/hwmon/ltc2947-core.c
624
return ltc2947_val_write(st,
drivers/hwmon/ltc2947-core.c
630
return ltc2947_val_write(st, LTC2947_REG_TEMP_THRE_L,
drivers/hwmon/ltc2947-core.c
641
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
647
return ltc2947_reset_history(st, LTC2947_REG_POWER_MAX,
drivers/hwmon/ltc2947-core.c
651
return ltc2947_val_write(st, LTC2947_REG_POWER_THRE_H,
drivers/hwmon/ltc2947-core.c
656
return ltc2947_val_write(st, LTC2947_REG_POWER_THRE_L,
drivers/hwmon/ltc2947-core.c
667
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
673
return ltc2947_reset_history(st, LTC2947_REG_CURRENT_MAX,
drivers/hwmon/ltc2947-core.c
677
return ltc2947_val_write(st, LTC2947_REG_CURRENT_THRE_H,
drivers/hwmon/ltc2947-core.c
682
return ltc2947_val_write(st, LTC2947_REG_CURRENT_THRE_L,
drivers/hwmon/ltc2947-core.c
693
struct ltc2947_data *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2947-core.c
696
dev_err(st->dev, "Invalid chan%d for voltage", channel);
drivers/hwmon/ltc2947-core.c
706
return ltc2947_reset_history(st, LTC2947_REG_DVCC_MAX,
drivers/hwmon/ltc2947-core.c
709
return ltc2947_reset_history(st, LTC2947_REG_VOLTAGE_MAX,
drivers/hwmon/ltc2947-core.c
714
return ltc2947_val_write(st, LTC2947_REG_DVCC_THRE_H,
drivers/hwmon/ltc2947-core.c
720
return ltc2947_val_write(st, LTC2947_REG_VOLTAGE_THRE_H,
drivers/hwmon/ltc2947-core.c
726
return ltc2947_val_write(st, LTC2947_REG_DVCC_THRE_L,
drivers/hwmon/ltc2947-core.c
732
return ltc2947_val_write(st, LTC2947_REG_VOLTAGE_THRE_L,
drivers/hwmon/ltc2947-core.c
931
static int ltc2947_setup(struct ltc2947_data *st)
drivers/hwmon/ltc2947-core.c
939
ret = regmap_read(st->map, LTC2947_REG_STATUS, &dummy);
drivers/hwmon/ltc2947-core.c
946
ret = ltc2947_val_write(st, LTC2947_REG_POWER_THRE_H, LTC2947_PAGE1, 2,
drivers/hwmon/ltc2947-core.c
951
ret = ltc2947_val_write(st, LTC2947_REG_POWER_THRE_L, LTC2947_PAGE1, 2,
drivers/hwmon/ltc2947-core.c
957
extclk = devm_clk_get_optional_enabled(st->dev, NULL);
drivers/hwmon/ltc2947-core.c
959
return dev_err_probe(st->dev, PTR_ERR(extclk),
drivers/hwmon/ltc2947-core.c
970
dev_err(st->dev, "Invalid rate:%lu for external clock",
drivers/hwmon/ltc2947-core.c
995
ret = regmap_write(st->map, LTC2947_REG_TBCTL, tbctl);
drivers/hwmon/ltc2991.c
101
struct ltc2991_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2991.c
111
return ltc2991_get_voltage(st, reg, val);
drivers/hwmon/ltc2991.c
117
static int ltc2991_get_curr(struct ltc2991_state *st, u32 reg, int channel,
drivers/hwmon/ltc2991.c
122
ret = ltc2991_read_reg(st, reg, 2, ®_val);
drivers/hwmon/ltc2991.c
128
(s32)st->r_sense_uohm[channel]);
drivers/hwmon/ltc2991.c
136
struct ltc2991_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2991.c
142
return ltc2991_get_curr(st, reg, channel, val);
drivers/hwmon/ltc2991.c
148
static int ltc2991_get_temp(struct ltc2991_state *st, u32 reg, int channel,
drivers/hwmon/ltc2991.c
153
ret = ltc2991_read_reg(st, reg, 2, ®_val);
drivers/hwmon/ltc2991.c
166
struct ltc2991_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2991.c
176
return ltc2991_get_temp(st, reg, channel, val);
drivers/hwmon/ltc2991.c
201
const struct ltc2991_state *st = data;
drivers/hwmon/ltc2991.c
209
if (st->temp_en[(channel - 1) / 2])
drivers/hwmon/ltc2991.c
213
if (!st->r_sense_uohm[(channel - 1) / 2])
drivers/hwmon/ltc2991.c
220
if (st->r_sense_uohm[channel])
drivers/hwmon/ltc2991.c
229
st->temp_en[channel])
drivers/hwmon/ltc2991.c
285
static int ltc2991_init(struct ltc2991_state *st, struct device *dev)
drivers/hwmon/ltc2991.c
312
st->r_sense_uohm[addr] = val;
drivers/hwmon/ltc2991.c
335
st->temp_en[addr] = ret;
drivers/hwmon/ltc2991.c
356
ret = regmap_write(st->regmap, LTC2991_V5_V8_CTRL, v5_v8_reg_data);
drivers/hwmon/ltc2991.c
361
ret = regmap_write(st->regmap, LTC2991_V1_V4_CTRL, v1_v4_reg_data);
drivers/hwmon/ltc2991.c
366
ret = regmap_write(st->regmap, LTC2991_PWM_TH_LSB_T_INT,
drivers/hwmon/ltc2991.c
373
return regmap_write(st->regmap, LTC2991_CH_EN_TRIGGER,
drivers/hwmon/ltc2991.c
383
struct ltc2991_state *st;
drivers/hwmon/ltc2991.c
385
st = devm_kzalloc(&client->dev, sizeof(*st), GFP_KERNEL);
drivers/hwmon/ltc2991.c
386
if (!st)
drivers/hwmon/ltc2991.c
389
st->regmap = devm_regmap_init_i2c(client, <c2991_regmap_config);
drivers/hwmon/ltc2991.c
390
if (IS_ERR(st->regmap))
drivers/hwmon/ltc2991.c
391
return PTR_ERR(st->regmap);
drivers/hwmon/ltc2991.c
393
ret = ltc2991_init(st, &client->dev);
drivers/hwmon/ltc2991.c
398
client->name, st,
drivers/hwmon/ltc2991.c
62
static int ltc2991_read_reg(struct ltc2991_state *st, u8 addr, u8 reg_len,
drivers/hwmon/ltc2991.c
69
return regmap_read(st->regmap, addr, val);
drivers/hwmon/ltc2991.c
71
ret = regmap_bulk_read(st->regmap, addr, ®vals, reg_len);
drivers/hwmon/ltc2991.c
80
static int ltc2991_get_voltage(struct ltc2991_state *st, u32 reg, long *val)
drivers/hwmon/ltc2991.c
84
ret = ltc2991_read_reg(st, reg, 2, ®_val);
drivers/hwmon/ltc2992.c
187
static int ltc2992_read_reg(struct ltc2992_state *st, u8 addr, const u8 reg_len)
drivers/hwmon/ltc2992.c
194
ret = regmap_bulk_read(st->regmap, addr, regvals, reg_len);
drivers/hwmon/ltc2992.c
205
static int ltc2992_write_reg(struct ltc2992_state *st, u8 addr, const u8 reg_len, u32 val)
drivers/hwmon/ltc2992.c
213
return regmap_bulk_write(st->regmap, addr, regvals, reg_len);
drivers/hwmon/ltc2992.c
218
struct ltc2992_state *st = gpiochip_get_data(chip);
drivers/hwmon/ltc2992.c
222
mutex_lock(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
223
reg = ltc2992_read_reg(st, LTC2992_GPIO_STATUS, 1);
drivers/hwmon/ltc2992.c
224
mutex_unlock(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
237
struct ltc2992_state *st = gpiochip_get_data(chip);
drivers/hwmon/ltc2992.c
242
mutex_lock(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
243
reg = ltc2992_read_reg(st, LTC2992_GPIO_STATUS, 1);
drivers/hwmon/ltc2992.c
244
mutex_unlock(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
262
struct ltc2992_state *st = gpiochip_get_data(chip);
drivers/hwmon/ltc2992.c
266
mutex_lock(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
267
reg = ltc2992_read_reg(st, ltc2992_gpio_addr_map[offset].ctrl, 1);
drivers/hwmon/ltc2992.c
269
mutex_unlock(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
276
ret = ltc2992_write_reg(st, ltc2992_gpio_addr_map[offset].ctrl, 1,
drivers/hwmon/ltc2992.c
278
mutex_unlock(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
286
struct ltc2992_state *st = gpiochip_get_data(chip);
drivers/hwmon/ltc2992.c
300
mutex_lock(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
301
ret = ltc2992_write_reg(st, LTC2992_GPIO_IO_CTRL, 1, gpio_ctrl_io);
drivers/hwmon/ltc2992.c
305
ret = ltc2992_write_reg(st, LTC2992_GPIO_CTRL, 1, gpio_ctrl);
drivers/hwmon/ltc2992.c
307
mutex_unlock(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
311
static int ltc2992_config_gpio(struct ltc2992_state *st)
drivers/hwmon/ltc2992.c
313
const char *name = dev_name(&st->client->dev);
drivers/hwmon/ltc2992.c
318
ret = ltc2992_write_reg(st, LTC2992_GPIO_IO_CTRL, 1, 0);
drivers/hwmon/ltc2992.c
322
mutex_init(&st->gpio_mutex);
drivers/hwmon/ltc2992.c
324
for (i = 0; i < ARRAY_SIZE(st->gpio_names); i++) {
drivers/hwmon/ltc2992.c
325
gpio_name = devm_kasprintf(&st->client->dev, GFP_KERNEL, "ltc2992-%x-%s",
drivers/hwmon/ltc2992.c
326
st->client->addr, ltc2992_gpio_names[i]);
drivers/hwmon/ltc2992.c
330
st->gpio_names[i] = gpio_name;
drivers/hwmon/ltc2992.c
333
st->gc.label = name;
drivers/hwmon/ltc2992.c
334
st->gc.parent = &st->client->dev;
drivers/hwmon/ltc2992.c
335
st->gc.owner = THIS_MODULE;
drivers/hwmon/ltc2992.c
336
st->gc.can_sleep = true;
drivers/hwmon/ltc2992.c
337
st->gc.base = -1;
drivers/hwmon/ltc2992.c
338
st->gc.names = st->gpio_names;
drivers/hwmon/ltc2992.c
339
st->gc.ngpio = ARRAY_SIZE(st->gpio_names);
drivers/hwmon/ltc2992.c
340
st->gc.get = ltc2992_gpio_get;
drivers/hwmon/ltc2992.c
341
st->gc.get_multiple = ltc2992_gpio_get_multiple;
drivers/hwmon/ltc2992.c
342
st->gc.set = ltc2992_gpio_set;
drivers/hwmon/ltc2992.c
343
st->gc.set_multiple = ltc2992_gpio_set_multiple;
drivers/hwmon/ltc2992.c
345
ret = devm_gpiochip_add_data(&st->client->dev, &st->gc, st);
drivers/hwmon/ltc2992.c
347
dev_err(&st->client->dev, "GPIO registering failed (%d)\n", ret);
drivers/hwmon/ltc2992.c
355
const struct ltc2992_state *st = data;
drivers/hwmon/ltc2992.c
384
if (st->r_sense_uohm[channel])
drivers/hwmon/ltc2992.c
389
if (st->r_sense_uohm[channel])
drivers/hwmon/ltc2992.c
401
if (st->r_sense_uohm[channel])
drivers/hwmon/ltc2992.c
406
if (st->r_sense_uohm[channel])
drivers/hwmon/ltc2992.c
418
static int ltc2992_get_voltage(struct ltc2992_state *st, u32 reg, u32 scale, long *val)
drivers/hwmon/ltc2992.c
422
reg_val = ltc2992_read_reg(st, reg, 2);
drivers/hwmon/ltc2992.c
432
static int ltc2992_set_voltage(struct ltc2992_state *st, u32 reg, u32 scale, long val)
drivers/hwmon/ltc2992.c
443
return ltc2992_write_reg(st, reg, 2, reg_val);
drivers/hwmon/ltc2992.c
446
static int ltc2992_read_gpio_alarm(struct ltc2992_state *st, int nr_gpio, u32 attr, long *val)
drivers/hwmon/ltc2992.c
456
reg_val = ltc2992_read_reg(st, ltc2992_gpio_addr_map[nr_gpio].alarm, 1);
drivers/hwmon/ltc2992.c
463
return ltc2992_write_reg(st, ltc2992_gpio_addr_map[nr_gpio].alarm, 1, reg_val);
drivers/hwmon/ltc2992.c
468
struct ltc2992_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2992.c
489
return ltc2992_read_gpio_alarm(st, nr_gpio, attr, val);
drivers/hwmon/ltc2992.c
494
return ltc2992_get_voltage(st, reg, LTC2992_VADC_GPIO_UV_LSB, val);
drivers/hwmon/ltc2992.c
497
static int ltc2992_read_in_alarm(struct ltc2992_state *st, int channel, long *val, u32 attr)
drivers/hwmon/ltc2992.c
507
reg_val = ltc2992_read_reg(st, LTC2992_SENSE_FAULT(channel), 1);
drivers/hwmon/ltc2992.c
514
return ltc2992_write_reg(st, LTC2992_SENSE_FAULT(channel), 1, reg_val);
drivers/hwmon/ltc2992.c
519
struct ltc2992_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2992.c
543
return ltc2992_read_in_alarm(st, channel, val, attr);
drivers/hwmon/ltc2992.c
548
return ltc2992_get_voltage(st, reg, LTC2992_VADC_UV_LSB, val);
drivers/hwmon/ltc2992.c
551
static int ltc2992_get_current(struct ltc2992_state *st, u32 reg, u32 channel, long *val)
drivers/hwmon/ltc2992.c
555
reg_val = ltc2992_read_reg(st, reg, 2);
drivers/hwmon/ltc2992.c
560
*val = DIV_ROUND_CLOSEST(reg_val * LTC2992_IADC_NANOV_LSB, st->r_sense_uohm[channel]);
drivers/hwmon/ltc2992.c
565
static int ltc2992_set_current(struct ltc2992_state *st, u32 reg, u32 channel, long val)
drivers/hwmon/ltc2992.c
571
st->r_sense_uohm[channel]);
drivers/hwmon/ltc2992.c
574
reg_val = min(DIV_ROUND_CLOSEST_ULL((u64)val * st->r_sense_uohm[channel],
drivers/hwmon/ltc2992.c
578
return ltc2992_write_reg(st, reg, 2, reg_val);
drivers/hwmon/ltc2992.c
581
static int ltc2992_read_curr_alarm(struct ltc2992_state *st, int channel, long *val, u32 attr)
drivers/hwmon/ltc2992.c
591
reg_val = ltc2992_read_reg(st, LTC2992_DSENSE_FAULT(channel), 1);
drivers/hwmon/ltc2992.c
598
return ltc2992_write_reg(st, LTC2992_DSENSE_FAULT(channel), 1, reg_val);
drivers/hwmon/ltc2992.c
603
struct ltc2992_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2992.c
624
return ltc2992_read_curr_alarm(st, channel, val, attr);
drivers/hwmon/ltc2992.c
629
return ltc2992_get_current(st, reg, channel, val);
drivers/hwmon/ltc2992.c
632
static int ltc2992_get_power(struct ltc2992_state *st, u32 reg, u32 channel, long *val)
drivers/hwmon/ltc2992.c
636
reg_val = ltc2992_read_reg(st, reg, 3);
drivers/hwmon/ltc2992.c
643
st->r_sense_uohm[channel]);
drivers/hwmon/ltc2992.c
648
static int ltc2992_set_power(struct ltc2992_state *st, u32 reg, u32 channel, long val)
drivers/hwmon/ltc2992.c
657
st->r_sense_uohm[channel]);
drivers/hwmon/ltc2992.c
659
reg_val = min(mul_u64_u32_div(uval, st->r_sense_uohm[channel],
drivers/hwmon/ltc2992.c
664
return ltc2992_write_reg(st, reg, 3, reg_val);
drivers/hwmon/ltc2992.c
667
static int ltc2992_read_power_alarm(struct ltc2992_state *st, int channel, long *val, u32 attr)
drivers/hwmon/ltc2992.c
677
reg_val = ltc2992_read_reg(st, LTC2992_POWER_FAULT(channel), 1);
drivers/hwmon/ltc2992.c
684
return ltc2992_write_reg(st, LTC2992_POWER_FAULT(channel), 1, reg_val);
drivers/hwmon/ltc2992.c
689
struct ltc2992_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2992.c
710
return ltc2992_read_power_alarm(st, channel, val, attr);
drivers/hwmon/ltc2992.c
715
return ltc2992_get_power(st, reg, channel, val);
drivers/hwmon/ltc2992.c
735
struct ltc2992_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2992.c
749
return ltc2992_set_current(st, reg, channel, val);
drivers/hwmon/ltc2992.c
754
struct ltc2992_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2992.c
768
return ltc2992_set_voltage(st, reg, LTC2992_VADC_GPIO_UV_LSB, val);
drivers/hwmon/ltc2992.c
773
struct ltc2992_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2992.c
790
return ltc2992_set_voltage(st, reg, LTC2992_VADC_UV_LSB, val);
drivers/hwmon/ltc2992.c
795
struct ltc2992_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2992.c
809
return ltc2992_set_power(st, reg, channel, val);
drivers/hwmon/ltc2992.c
814
struct ltc2992_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc2992.c
818
return regmap_update_bits(st->regmap, LTC2992_CTRLB, LTC2992_RESET_HISTORY,
drivers/hwmon/ltc2992.c
888
static int ltc2992_parse_dt(struct ltc2992_state *st)
drivers/hwmon/ltc2992.c
894
device_for_each_child_node_scoped(&st->client->dev, child) {
drivers/hwmon/ltc2992.c
905
return dev_err_probe(&st->client->dev, -EINVAL,
drivers/hwmon/ltc2992.c
908
st->r_sense_uohm[addr] = val;
drivers/hwmon/ltc2992.c
918
struct ltc2992_state *st;
drivers/hwmon/ltc2992.c
921
st = devm_kzalloc(&client->dev, sizeof(*st), GFP_KERNEL);
drivers/hwmon/ltc2992.c
922
if (!st)
drivers/hwmon/ltc2992.c
925
st->client = client;
drivers/hwmon/ltc2992.c
926
st->regmap = devm_regmap_init_i2c(client, <c2992_regmap_config);
drivers/hwmon/ltc2992.c
927
if (IS_ERR(st->regmap))
drivers/hwmon/ltc2992.c
928
return PTR_ERR(st->regmap);
drivers/hwmon/ltc2992.c
930
ret = ltc2992_parse_dt(st);
drivers/hwmon/ltc2992.c
934
ret = ltc2992_config_gpio(st);
drivers/hwmon/ltc2992.c
938
hwmon_dev = devm_hwmon_device_register_with_info(&client->dev, client->name, st,
drivers/hwmon/ltc4282.c
1103
static int ltc428_clk_provider_setup(struct ltc4282_state *st,
drivers/hwmon/ltc4282.c
1119
st->clk_hw.init = &init;
drivers/hwmon/ltc4282.c
1121
ret = devm_clk_hw_register(dev, &st->clk_hw);
drivers/hwmon/ltc4282.c
1126
&st->clk_hw);
drivers/hwmon/ltc4282.c
1129
static int ltc428_clks_setup(struct ltc4282_state *st, struct device *dev)
drivers/hwmon/ltc4282.c
1136
ret = ltc428_clk_provider_setup(st, dev);
drivers/hwmon/ltc4282.c
1160
return regmap_update_bits(st->map, LTC4282_CLK_DIV,
drivers/hwmon/ltc4282.c
1169
static int ltc4282_get_defaults(struct ltc4282_state *st, u32 *vin_mode)
drivers/hwmon/ltc4282.c
1174
ret = regmap_read(st->map, LTC4282_ADC_CTRL, ®_val);
drivers/hwmon/ltc4282.c
1178
st->energy_en = !FIELD_GET(LTC4282_METER_HALT_MASK, reg_val);
drivers/hwmon/ltc4282.c
1180
ret = regmap_read(st->map, LTC4282_CTRL_MSB, ®_val);
drivers/hwmon/ltc4282.c
1186
ret = regmap_read(st->map, LTC4282_ILIM_ADJUST, ®_val);
drivers/hwmon/ltc4282.c
1191
st->vsense_max = ltc4282_curr_lim_uv[ilm_adjust];
drivers/hwmon/ltc4282.c
1193
st->in0_1_cache[LTC4282_CHAN_VSOURCE].en = FIELD_GET(LTC4282_VDD_MONITOR_MASK,
drivers/hwmon/ltc4282.c
1195
if (!st->in0_1_cache[LTC4282_CHAN_VSOURCE].en) {
drivers/hwmon/ltc4282.c
1196
st->in0_1_cache[LTC4282_CHAN_VDD].en = true;
drivers/hwmon/ltc4282.c
1197
return regmap_read(st->map, LTC4282_VSOURCE_MAX,
drivers/hwmon/ltc4282.c
1198
&st->in0_1_cache[LTC4282_CHAN_VSOURCE].in_max_raw);
drivers/hwmon/ltc4282.c
1201
return regmap_read(st->map, LTC4282_VSOURCE_MAX,
drivers/hwmon/ltc4282.c
1202
&st->in0_1_cache[LTC4282_CHAN_VDD].in_max_raw);
drivers/hwmon/ltc4282.c
1215
static int ltc4282_set_max_limits(struct ltc4282_state *st)
drivers/hwmon/ltc4282.c
1219
ret = ltc4282_write_voltage_byte(st, LTC4282_VSENSE_MAX, 40 * MILLI,
drivers/hwmon/ltc4282.c
1220
st->vsense_max);
drivers/hwmon/ltc4282.c
1225
st->power_max = DIV_ROUND_CLOSEST(st->vsense_max * DECA * MILLI, st->rsense) * st->vfs_out;
drivers/hwmon/ltc4282.c
1226
ret = ltc4282_write_power_byte(st, LTC4282_POWER_MAX, st->power_max);
drivers/hwmon/ltc4282.c
1230
if (st->in0_1_cache[LTC4282_CHAN_VDD].en) {
drivers/hwmon/ltc4282.c
1231
st->in0_1_cache[LTC4282_CHAN_VSOURCE].in_lowest = st->vfs_out;
drivers/hwmon/ltc4282.c
1232
return __ltc4282_in_write_history(st, LTC4282_VSOURCE_LOWEST,
drivers/hwmon/ltc4282.c
1233
st->vdd, 0, st->vfs_out);
drivers/hwmon/ltc4282.c
1236
st->in0_1_cache[LTC4282_CHAN_VDD].in_lowest = st->vdd;
drivers/hwmon/ltc4282.c
1237
return __ltc4282_in_write_history(st, LTC4282_VSOURCE_LOWEST,
drivers/hwmon/ltc4282.c
1238
st->vfs_out, 0, st->vfs_out);
drivers/hwmon/ltc4282.c
1249
static int ltc4282_gpio_setup(struct ltc4282_state *st, struct device *dev)
drivers/hwmon/ltc4282.c
1263
ret = regmap_update_bits(st->map, LTC4282_GPIO_CONFIG,
drivers/hwmon/ltc4282.c
1280
ret = regmap_set_bits(st->map, LTC4282_ILIM_ADJUST,
drivers/hwmon/ltc4282.c
1283
ret = regmap_update_bits(st->map, LTC4282_GPIO_CONFIG,
drivers/hwmon/ltc4282.c
1299
return regmap_clear_bits(st->map, LTC4282_ILIM_ADJUST,
drivers/hwmon/ltc4282.c
1319
static int ltc4282_setup(struct ltc4282_state *st, struct device *dev)
drivers/hwmon/ltc4282.c
1326
ret = ltc4282_get_defaults(st, &vin_mode);
drivers/hwmon/ltc4282.c
1331
st->rsense = 1 * (NANO / MILLI);
drivers/hwmon/ltc4282.c
1333
&st->rsense);
drivers/hwmon/ltc4282.c
1335
if (st->rsense < CENTI)
drivers/hwmon/ltc4282.c
1347
st->rsense /= CENTI;
drivers/hwmon/ltc4282.c
1371
ret = regmap_update_bits(st->map, LTC4282_CTRL_MSB,
drivers/hwmon/ltc4282.c
1378
ret = regmap_update_bits(st->map, LTC4282_ILIM_ADJUST,
drivers/hwmon/ltc4282.c
1385
st->vfs_out = ltc4282_vfs_milli[val];
drivers/hwmon/ltc4282.c
1386
st->vdd = ltc4282_vdd_milli[val];
drivers/hwmon/ltc4282.c
1389
&st->vsense_max);
drivers/hwmon/ltc4282.c
1421
st->vsense_max);
drivers/hwmon/ltc4282.c
1424
ret = regmap_update_bits(st->map, LTC4282_ILIM_ADJUST,
drivers/hwmon/ltc4282.c
1431
ret = ltc4282_set_max_limits(st);
drivers/hwmon/ltc4282.c
1445
ret = regmap_update_bits(st->map, LTC4282_CTRL_MSB,
drivers/hwmon/ltc4282.c
1460
ret = regmap_update_bits(st->map, LTC4282_CTRL_MSB,
drivers/hwmon/ltc4282.c
1466
ret = regmap_set_bits(st->map, LTC4282_CTRL_LSB,
drivers/hwmon/ltc4282.c
1473
ret = regmap_clear_bits(st->map, LTC4282_CTRL_LSB,
drivers/hwmon/ltc4282.c
1480
ret = regmap_clear_bits(st->map, LTC4282_CTRL_LSB,
drivers/hwmon/ltc4282.c
1487
ret = regmap_set_bits(st->map, LTC4282_ADC_CTRL, LTC4282_FAULT_LOG_EN_MASK);
drivers/hwmon/ltc4282.c
1499
ret = regmap_write(st->map, LTC4282_FET_BAD_FAULT_TIMEOUT, val);
drivers/hwmon/ltc4282.c
1504
return ltc4282_gpio_setup(st, dev);
drivers/hwmon/ltc4282.c
156
struct ltc4282_state *st = container_of(hw, struct ltc4282_state,
drivers/hwmon/ltc4282.c
1580
struct ltc4282_state *st = arg;
drivers/hwmon/ltc4282.c
1584
ret = ltc4282_read_alarm(st, LTC4282_FAULT_LOG, mask, &alarm);
drivers/hwmon/ltc4282.c
163
return regmap_update_bits(st->map, LTC4282_CLK_DIV, LTC4282_CLKOUT_MASK,
drivers/hwmon/ltc4282.c
1635
static void ltc4282_debugfs_init(struct ltc4282_state *st, struct i2c_client *i2c)
drivers/hwmon/ltc4282.c
1637
debugfs_create_file_unsafe("power1_bad_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4282.c
1639
debugfs_create_file_unsafe("in0_fet_short_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4282.c
1641
debugfs_create_file_unsafe("in0_fet_bad_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4282.c
1643
debugfs_create_file_unsafe("in1_crit_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4282.c
1645
debugfs_create_file_unsafe("in1_lcrit_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4282.c
1647
debugfs_create_file_unsafe("curr1_crit_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4282.c
1654
struct ltc4282_state *st;
drivers/hwmon/ltc4282.c
1657
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/hwmon/ltc4282.c
1658
if (!st)
drivers/hwmon/ltc4282.c
1661
st->map = devm_regmap_init_i2c(i2c, <c4282_regmap_config);
drivers/hwmon/ltc4282.c
1662
if (IS_ERR(st->map))
drivers/hwmon/ltc4282.c
1663
return dev_err_probe(dev, PTR_ERR(st->map),
drivers/hwmon/ltc4282.c
1667
ret = regmap_set_bits(st->map, LTC4282_ADC_CTRL, LTC4282_RESET_MASK);
drivers/hwmon/ltc4282.c
1674
ret = ltc428_clks_setup(st, dev);
drivers/hwmon/ltc4282.c
1678
ret = ltc4282_setup(st, dev);
drivers/hwmon/ltc4282.c
1682
hwmon = devm_hwmon_device_register_with_info(dev, "ltc4282", st,
drivers/hwmon/ltc4282.c
1687
ltc4282_debugfs_init(st, i2c);
drivers/hwmon/ltc4282.c
189
struct ltc4282_state *st = container_of(hw, struct ltc4282_state,
drivers/hwmon/ltc4282.c
194
ret = regmap_read(st->map, LTC4282_CLK_DIV, &clkdiv);
drivers/hwmon/ltc4282.c
209
struct ltc4282_state *st = container_of(clk_hw, struct ltc4282_state,
drivers/hwmon/ltc4282.c
212
regmap_clear_bits(st->map, LTC4282_CLK_DIV, LTC4282_CLKOUT_MASK);
drivers/hwmon/ltc4282.c
215
static int ltc4282_read_voltage_word(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
221
ret = regmap_bulk_read(st->map, reg, &in, sizeof(in));
drivers/hwmon/ltc4282.c
233
static int ltc4282_read_voltage_byte_cached(const struct ltc4282_state *st,
drivers/hwmon/ltc4282.c
243
ret = regmap_read(st->map, reg, &in);
drivers/hwmon/ltc4282.c
252
static int ltc4282_read_voltage_byte(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
255
return ltc4282_read_voltage_byte_cached(st, reg, fs, val, NULL);
drivers/hwmon/ltc4282.c
258
static int __ltc4282_read_alarm(struct ltc4282_state *st, u32 reg, u32 mask,
drivers/hwmon/ltc4282.c
264
ret = regmap_read(st->map, reg, &alarm);
drivers/hwmon/ltc4282.c
272
return regmap_clear_bits(st->map, reg, mask);
drivers/hwmon/ltc4282.c
277
static int ltc4282_read_alarm(struct ltc4282_state *st, u32 reg, u32 mask,
drivers/hwmon/ltc4282.c
280
return __ltc4282_read_alarm(st, reg, mask, val);
drivers/hwmon/ltc4282.c
283
static int ltc4282_vdd_source_read_in(struct ltc4282_state *st, u32 channel,
drivers/hwmon/ltc4282.c
286
if (!st->in0_1_cache[channel].en)
drivers/hwmon/ltc4282.c
289
return ltc4282_read_voltage_word(st, LTC4282_VSOURCE, st->vfs_out, val);
drivers/hwmon/ltc4282.c
292
static int ltc4282_vdd_source_read_hist(struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
297
if (!st->in0_1_cache[channel].en) {
drivers/hwmon/ltc4282.c
302
ret = ltc4282_read_voltage_word(st, reg, st->vfs_out, val);
drivers/hwmon/ltc4282.c
310
static int ltc4282_vdd_source_read_lim(struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
313
if (!st->in0_1_cache[channel].en)
drivers/hwmon/ltc4282.c
314
return ltc4282_read_voltage_byte_cached(st, reg, st->vfs_out,
drivers/hwmon/ltc4282.c
317
return ltc4282_read_voltage_byte(st, reg, st->vfs_out, val);
drivers/hwmon/ltc4282.c
320
static int ltc4282_vdd_source_read_alm(struct ltc4282_state *st, u32 mask,
drivers/hwmon/ltc4282.c
323
if (!st->in0_1_cache[channel].en) {
drivers/hwmon/ltc4282.c
336
return __ltc4282_read_alarm(st, LTC4282_ADC_ALERT_LOG, mask, val);
drivers/hwmon/ltc4282.c
339
static int ltc4282_read_in(struct ltc4282_state *st, u32 attr, long *val,
drivers/hwmon/ltc4282.c
345
return ltc4282_read_voltage_word(st, LTC4282_VGPIO,
drivers/hwmon/ltc4282.c
348
return ltc4282_vdd_source_read_in(st, channel, val);
drivers/hwmon/ltc4282.c
351
return ltc4282_read_voltage_word(st,
drivers/hwmon/ltc4282.c
355
return ltc4282_vdd_source_read_hist(st, LTC4282_VSOURCE_HIGHEST,
drivers/hwmon/ltc4282.c
357
&st->in0_1_cache[channel].in_highest, val);
drivers/hwmon/ltc4282.c
360
return ltc4282_read_voltage_word(st, LTC4282_VGPIO_LOWEST,
drivers/hwmon/ltc4282.c
363
return ltc4282_vdd_source_read_hist(st, LTC4282_VSOURCE_LOWEST,
drivers/hwmon/ltc4282.c
365
&st->in0_1_cache[channel].in_lowest, val);
drivers/hwmon/ltc4282.c
368
return ltc4282_read_alarm(st, LTC4282_ADC_ALERT_LOG,
drivers/hwmon/ltc4282.c
372
return ltc4282_vdd_source_read_alm(st,
drivers/hwmon/ltc4282.c
377
return ltc4282_read_alarm(st, LTC4282_ADC_ALERT_LOG,
drivers/hwmon/ltc4282.c
380
return ltc4282_vdd_source_read_alm(st,
drivers/hwmon/ltc4282.c
384
return ltc4282_read_alarm(st, LTC4282_STATUS_LSB,
drivers/hwmon/ltc4282.c
387
return ltc4282_read_alarm(st, LTC4282_STATUS_LSB,
drivers/hwmon/ltc4282.c
391
return ltc4282_read_voltage_byte(st, LTC4282_VGPIO_MAX,
drivers/hwmon/ltc4282.c
394
return ltc4282_vdd_source_read_lim(st, LTC4282_VSOURCE_MAX,
drivers/hwmon/ltc4282.c
396
&st->in0_1_cache[channel].in_max_raw, val);
drivers/hwmon/ltc4282.c
399
return ltc4282_read_voltage_byte(st, LTC4282_VGPIO_MIN,
drivers/hwmon/ltc4282.c
402
return ltc4282_vdd_source_read_lim(st, LTC4282_VSOURCE_MIN,
drivers/hwmon/ltc4282.c
404
&st->in0_1_cache[channel].in_min_raw, val);
drivers/hwmon/ltc4282.c
406
*val = st->in0_1_cache[channel].en;
drivers/hwmon/ltc4282.c
413
return ltc4282_read_alarm(st, LTC4282_STATUS_LSB,
drivers/hwmon/ltc4282.c
420
static int ltc4282_read_current_word(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
430
ret = ltc4282_read_voltage_word(st, reg, DECA * 40 * MILLI, &in);
drivers/hwmon/ltc4282.c
434
*val = DIV_ROUND_CLOSEST(in * MILLI, st->rsense);
drivers/hwmon/ltc4282.c
439
static int ltc4282_read_current_byte(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
445
ret = ltc4282_read_voltage_byte(st, reg, DECA * 40 * MILLI, &in);
drivers/hwmon/ltc4282.c
449
*val = DIV_ROUND_CLOSEST(in * MILLI, st->rsense);
drivers/hwmon/ltc4282.c
454
static int ltc4282_read_curr(struct ltc4282_state *st, const u32 attr,
drivers/hwmon/ltc4282.c
459
return ltc4282_read_current_word(st, LTC4282_VSENSE, val);
drivers/hwmon/ltc4282.c
461
return ltc4282_read_current_word(st, LTC4282_VSENSE_HIGHEST,
drivers/hwmon/ltc4282.c
464
return ltc4282_read_current_word(st, LTC4282_VSENSE_LOWEST,
drivers/hwmon/ltc4282.c
467
return ltc4282_read_current_byte(st, LTC4282_VSENSE_MAX, val);
drivers/hwmon/ltc4282.c
469
return ltc4282_read_current_byte(st, LTC4282_VSENSE_MIN, val);
drivers/hwmon/ltc4282.c
471
return ltc4282_read_alarm(st, LTC4282_ADC_ALERT_LOG,
drivers/hwmon/ltc4282.c
474
return ltc4282_read_alarm(st, LTC4282_ADC_ALERT_LOG,
drivers/hwmon/ltc4282.c
477
return ltc4282_read_alarm(st, LTC4282_STATUS_LSB,
drivers/hwmon/ltc4282.c
484
static int ltc4282_read_power_word(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
487
u64 temp = DECA * 40ULL * st->vfs_out * BIT(16), temp_2;
drivers/hwmon/ltc4282.c
492
ret = regmap_bulk_read(st->map, reg, &raw, sizeof(raw));
drivers/hwmon/ltc4282.c
504
U16_MAX * (u64)st->rsense);
drivers/hwmon/ltc4282.c
509
st->rsense * int_pow(U16_MAX, 2));
drivers/hwmon/ltc4282.c
514
static int ltc4282_read_power_byte(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
521
ret = regmap_read(st->map, reg, &power);
drivers/hwmon/ltc4282.c
525
temp = power * 40 * DECA * st->vfs_out * BIT_ULL(8);
drivers/hwmon/ltc4282.c
527
int_pow(U8_MAX, 2) * st->rsense);
drivers/hwmon/ltc4282.c
532
static int ltc4282_read_energy(const struct ltc4282_state *st, s64 *val)
drivers/hwmon/ltc4282.c
538
ret = regmap_bulk_read(st->map, LTC4282_ENERGY, &raw, 6);
drivers/hwmon/ltc4282.c
555
if (check_mul_overflow(DECA * st->vfs_out * 40 * BIT(8), energy, &temp)) {
drivers/hwmon/ltc4282.c
556
temp = DIV_ROUND_CLOSEST(DECA * st->vfs_out * 40 * BIT(8), U16_MAX);
drivers/hwmon/ltc4282.c
557
*val = DIV_ROUND_CLOSEST_ULL(temp * energy, st->rsense);
drivers/hwmon/ltc4282.c
561
*val = DIV64_U64_ROUND_CLOSEST(temp, U16_MAX * (u64)st->rsense);
drivers/hwmon/ltc4282.c
566
static int ltc4282_read_power(struct ltc4282_state *st, const u32 attr,
drivers/hwmon/ltc4282.c
571
return ltc4282_read_power_word(st, LTC4282_POWER, val);
drivers/hwmon/ltc4282.c
573
return ltc4282_read_power_word(st, LTC4282_POWER_HIGHEST, val);
drivers/hwmon/ltc4282.c
575
return ltc4282_read_power_word(st, LTC4282_POWER_LOWEST, val);
drivers/hwmon/ltc4282.c
577
return ltc4282_read_alarm(st, LTC4282_ADC_ALERT_LOG,
drivers/hwmon/ltc4282.c
580
return ltc4282_read_alarm(st, LTC4282_ADC_ALERT_LOG,
drivers/hwmon/ltc4282.c
583
return ltc4282_read_power_byte(st, LTC4282_POWER_MAX, val);
drivers/hwmon/ltc4282.c
585
return ltc4282_read_power_byte(st, LTC4282_POWER_MIN, val);
drivers/hwmon/ltc4282.c
594
struct ltc4282_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc4282.c
598
return ltc4282_read_in(st, attr, val, channel);
drivers/hwmon/ltc4282.c
600
return ltc4282_read_curr(st, attr, val);
drivers/hwmon/ltc4282.c
602
return ltc4282_read_power(st, attr, val);
drivers/hwmon/ltc4282.c
604
*val = st->energy_en;
drivers/hwmon/ltc4282.c
607
if (st->energy_en)
drivers/hwmon/ltc4282.c
608
return ltc4282_read_energy(st, (s64 *)val);
drivers/hwmon/ltc4282.c
615
static int ltc4282_write_power_byte(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
621
if (val > st->power_max)
drivers/hwmon/ltc4282.c
622
val = st->power_max;
drivers/hwmon/ltc4282.c
624
temp = val * int_pow(U8_MAX, 2) * st->rsense;
drivers/hwmon/ltc4282.c
626
MICRO * DECA * 256ULL * st->vfs_out * 40);
drivers/hwmon/ltc4282.c
628
return regmap_write(st->map, reg, power);
drivers/hwmon/ltc4282.c
631
static int ltc4282_write_power_word(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
634
u64 temp = int_pow(U16_MAX, 2) * st->rsense, temp_2;
drivers/hwmon/ltc4282.c
641
40ULL * BIT(16) * st->vfs_out);
drivers/hwmon/ltc4282.c
643
temp = DECA * MICRO * 40ULL * BIT(16) * st->vfs_out;
drivers/hwmon/ltc4282.c
648
return regmap_bulk_write(st->map, reg, &__raw, sizeof(__raw));
drivers/hwmon/ltc4282.c
651
static int __ltc4282_in_write_history(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
662
ret = regmap_bulk_write(st->map, reg, &__raw, 2);
drivers/hwmon/ltc4282.c
670
return regmap_bulk_write(st->map, reg + 2, &__raw, 2);
drivers/hwmon/ltc4282.c
673
static int ltc4282_in_write_history(struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
676
return __ltc4282_in_write_history(st, reg, lowest, highest, fs);
drivers/hwmon/ltc4282.c
679
static int ltc4282_power_reset_hist(struct ltc4282_state *st)
drivers/hwmon/ltc4282.c
683
ret = ltc4282_write_power_word(st, LTC4282_POWER_LOWEST,
drivers/hwmon/ltc4282.c
684
st->power_max);
drivers/hwmon/ltc4282.c
688
ret = ltc4282_write_power_word(st, LTC4282_POWER_HIGHEST, 0);
drivers/hwmon/ltc4282.c
693
return regmap_clear_bits(st->map, LTC4282_FAULT_LOG,
drivers/hwmon/ltc4282.c
697
static int ltc4282_write_power(struct ltc4282_state *st, u32 attr,
drivers/hwmon/ltc4282.c
702
return ltc4282_write_power_byte(st, LTC4282_POWER_MAX, val);
drivers/hwmon/ltc4282.c
704
return ltc4282_write_power_byte(st, LTC4282_POWER_MIN, val);
drivers/hwmon/ltc4282.c
706
return ltc4282_power_reset_hist(st);
drivers/hwmon/ltc4282.c
712
static int ltc4282_write_voltage_byte_cached(const struct ltc4282_state *st,
drivers/hwmon/ltc4282.c
726
return regmap_write(st->map, reg, in);
drivers/hwmon/ltc4282.c
729
static int ltc4282_write_voltage_byte(const struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
732
return ltc4282_write_voltage_byte_cached(st, reg, fs, val, NULL);
drivers/hwmon/ltc4282.c
735
static int ltc4282_cache_history(struct ltc4282_state *st, u32 channel)
drivers/hwmon/ltc4282.c
740
ret = ltc4282_read_voltage_word(st, LTC4282_VSOURCE_LOWEST, st->vfs_out,
drivers/hwmon/ltc4282.c
745
st->in0_1_cache[channel].in_lowest = val;
drivers/hwmon/ltc4282.c
747
ret = ltc4282_read_voltage_word(st, LTC4282_VSOURCE_HIGHEST,
drivers/hwmon/ltc4282.c
748
st->vfs_out, &val);
drivers/hwmon/ltc4282.c
752
st->in0_1_cache[channel].in_highest = val;
drivers/hwmon/ltc4282.c
754
ret = regmap_read(st->map, LTC4282_VSOURCE_MIN,
drivers/hwmon/ltc4282.c
755
&st->in0_1_cache[channel].in_min_raw);
drivers/hwmon/ltc4282.c
759
return regmap_read(st->map, LTC4282_VSOURCE_MAX,
drivers/hwmon/ltc4282.c
760
&st->in0_1_cache[channel].in_max_raw);
drivers/hwmon/ltc4282.c
763
static int ltc4282_cache_sync(struct ltc4282_state *st, u32 channel)
drivers/hwmon/ltc4282.c
767
ret = __ltc4282_in_write_history(st, LTC4282_VSOURCE_LOWEST,
drivers/hwmon/ltc4282.c
768
st->in0_1_cache[channel].in_lowest,
drivers/hwmon/ltc4282.c
769
st->in0_1_cache[channel].in_highest,
drivers/hwmon/ltc4282.c
770
st->vfs_out);
drivers/hwmon/ltc4282.c
774
ret = regmap_write(st->map, LTC4282_VSOURCE_MIN,
drivers/hwmon/ltc4282.c
775
st->in0_1_cache[channel].in_min_raw);
drivers/hwmon/ltc4282.c
779
return regmap_write(st->map, LTC4282_VSOURCE_MAX,
drivers/hwmon/ltc4282.c
780
st->in0_1_cache[channel].in_max_raw);
drivers/hwmon/ltc4282.c
783
static int ltc4282_vdd_source_write_lim(struct ltc4282_state *st, u32 reg,
drivers/hwmon/ltc4282.c
788
if (st->in0_1_cache[channel].en)
drivers/hwmon/ltc4282.c
789
ret = ltc4282_write_voltage_byte(st, reg, st->vfs_out, val);
drivers/hwmon/ltc4282.c
791
ret = ltc4282_write_voltage_byte_cached(st, reg, st->vfs_out,
drivers/hwmon/ltc4282.c
797
static int ltc4282_vdd_source_reset_hist(struct ltc4282_state *st, int channel)
drivers/hwmon/ltc4282.c
799
long lowest = st->vfs_out;
drivers/hwmon/ltc4282.c
803
lowest = st->vdd;
drivers/hwmon/ltc4282.c
805
if (st->in0_1_cache[channel].en) {
drivers/hwmon/ltc4282.c
806
ret = __ltc4282_in_write_history(st, LTC4282_VSOURCE_LOWEST,
drivers/hwmon/ltc4282.c
807
lowest, 0, st->vfs_out);
drivers/hwmon/ltc4282.c
812
st->in0_1_cache[channel].in_lowest = lowest;
drivers/hwmon/ltc4282.c
813
st->in0_1_cache[channel].in_highest = 0;
drivers/hwmon/ltc4282.c
824
return regmap_clear_bits(st->map, LTC4282_FAULT_LOG,
drivers/hwmon/ltc4282.c
827
return regmap_clear_bits(st->map, LTC4282_FAULT_LOG,
drivers/hwmon/ltc4282.c
838
static int ltc4282_vdd_source_enable(struct ltc4282_state *st, int channel,
drivers/hwmon/ltc4282.c
844
if (st->in0_1_cache[channel].en == !!val)
drivers/hwmon/ltc4282.c
851
ret = regmap_update_bits(st->map, LTC4282_ILIM_ADJUST,
drivers/hwmon/ltc4282.c
857
st->in0_1_cache[channel].en = !!val;
drivers/hwmon/ltc4282.c
858
st->in0_1_cache[other_chan].en = !val;
drivers/hwmon/ltc4282.c
860
if (st->in0_1_cache[channel].en) {
drivers/hwmon/ltc4282.c
865
ret = ltc4282_cache_history(st, other_chan);
drivers/hwmon/ltc4282.c
869
return ltc4282_cache_sync(st, channel);
drivers/hwmon/ltc4282.c
875
ret = ltc4282_cache_history(st, channel);
drivers/hwmon/ltc4282.c
879
return ltc4282_cache_sync(st, other_chan);
drivers/hwmon/ltc4282.c
882
static int ltc4282_write_in(struct ltc4282_state *st, u32 attr, long val,
drivers/hwmon/ltc4282.c
888
return ltc4282_write_voltage_byte(st, LTC4282_VGPIO_MAX,
drivers/hwmon/ltc4282.c
891
return ltc4282_vdd_source_write_lim(st, LTC4282_VSOURCE_MAX,
drivers/hwmon/ltc4282.c
893
&st->in0_1_cache[channel].in_max_raw, val);
drivers/hwmon/ltc4282.c
896
return ltc4282_write_voltage_byte(st, LTC4282_VGPIO_MIN,
drivers/hwmon/ltc4282.c
899
return ltc4282_vdd_source_write_lim(st, LTC4282_VSOURCE_MIN,
drivers/hwmon/ltc4282.c
901
&st->in0_1_cache[channel].in_min_raw, val);
drivers/hwmon/ltc4282.c
904
return ltc4282_in_write_history(st,
drivers/hwmon/ltc4282.c
908
return ltc4282_vdd_source_reset_hist(st, channel);
drivers/hwmon/ltc4282.c
910
return ltc4282_vdd_source_enable(st, channel, val);
drivers/hwmon/ltc4282.c
916
static int ltc4282_curr_reset_hist(struct ltc4282_state *st)
drivers/hwmon/ltc4282.c
920
ret = __ltc4282_in_write_history(st, LTC4282_VSENSE_LOWEST,
drivers/hwmon/ltc4282.c
921
st->vsense_max, 0, 40 * MILLI);
drivers/hwmon/ltc4282.c
926
return regmap_clear_bits(st->map, LTC4282_FAULT_LOG,
drivers/hwmon/ltc4282.c
930
static int ltc4282_write_curr(struct ltc4282_state *st, u32 attr,
drivers/hwmon/ltc4282.c
934
u32 in = DIV_ROUND_CLOSEST_ULL((u64)val * st->rsense, DECA * MICRO);
drivers/hwmon/ltc4282.c
938
return ltc4282_write_voltage_byte(st, LTC4282_VSENSE_MAX, 40,
drivers/hwmon/ltc4282.c
941
return ltc4282_write_voltage_byte(st, LTC4282_VSENSE_MIN, 40,
drivers/hwmon/ltc4282.c
944
return ltc4282_curr_reset_hist(st);
drivers/hwmon/ltc4282.c
950
static int ltc4282_energy_enable_set(struct ltc4282_state *st, long val)
drivers/hwmon/ltc4282.c
955
ret = regmap_update_bits(st->map, LTC4282_ADC_CTRL,
drivers/hwmon/ltc4282.c
961
st->energy_en = !!val;
drivers/hwmon/ltc4282.c
970
struct ltc4282_state *st = dev_get_drvdata(dev);
drivers/hwmon/ltc4282.c
974
return ltc4282_write_power(st, attr, val);
drivers/hwmon/ltc4282.c
976
return ltc4282_write_in(st, attr, val, channel);
drivers/hwmon/ltc4282.c
978
return ltc4282_write_curr(st, attr, val);
drivers/hwmon/ltc4282.c
980
return ltc4282_energy_enable_set(st, val);
drivers/hwmon/ltc4282.c
986
static umode_t ltc4282_in_is_visible(const struct ltc4282_state *st, u32 attr)
drivers/hwmon/ltc4283.c
1012
static int ltc4283_get_defaults(struct ltc4283_hwmon *st)
drivers/hwmon/ltc4283.c
1017
ret = regmap_read(st->map, LTC4283_METER_CONTROL, ®_val);
drivers/hwmon/ltc4283.c
1021
st->energy_en = !FIELD_GET(LTC4283_METER_HALT_MASK, reg_val);
drivers/hwmon/ltc4283.c
1023
ret = regmap_read(st->map, LTC4283_CONFIG_1, ®_val);
drivers/hwmon/ltc4283.c
1028
st->vsense_max = LTC4283_VILIM_MIN_uV / MILLI + ilm_adjust;
drivers/hwmon/ltc4283.c
1030
ret = regmap_read(st->map, LTC4283_PGIO_CONFIG, ®_val);
drivers/hwmon/ltc4283.c
1036
st->ext_fault = true;
drivers/hwmon/ltc4283.c
1039
__set_bit(LTC4283_CHAN_VIN, &st->ch_enable_mask);
drivers/hwmon/ltc4283.c
1040
__set_bit(LTC4283_CHAN_VPWR, &st->ch_enable_mask);
drivers/hwmon/ltc4283.c
1044
ret = regmap_read(st->map, LTC4283_ADC_SELECT(chan), ®_val);
drivers/hwmon/ltc4283.c
1056
__set_bit(c, &st->ch_enable_mask);
drivers/hwmon/ltc4283.c
1089
static int ltc4283_pgio_config(struct ltc4283_hwmon *st, struct device *dev)
drivers/hwmon/ltc4283.c
1101
__set_bit(LTC4283_PIN_PGIO1, &st->gpio_mask);
drivers/hwmon/ltc4283.c
1106
ret = regmap_update_bits(st->map, LTC4283_PGIO_CONFIG,
drivers/hwmon/ltc4283.c
1123
__set_bit(LTC4283_PIN_PGIO2, &st->gpio_mask);
drivers/hwmon/ltc4283.c
1127
ret = regmap_update_bits(st->map, LTC4283_PGIO_CONFIG,
drivers/hwmon/ltc4283.c
1131
ret = regmap_set_bits(st->map, LTC4283_CONTROL_1,
drivers/hwmon/ltc4283.c
1148
__set_bit(LTC4283_PIN_PGIO3, &st->gpio_mask);
drivers/hwmon/ltc4283.c
1152
ret = regmap_update_bits(st->map, LTC4283_PGIO_CONFIG,
drivers/hwmon/ltc4283.c
1168
__set_bit(LTC4283_PIN_PGIO4, &st->gpio_mask);
drivers/hwmon/ltc4283.c
1170
st->ext_fault = false;
drivers/hwmon/ltc4283.c
1172
st->ext_fault = true;
drivers/hwmon/ltc4283.c
1175
ret = regmap_update_bits(st->map, LTC4283_PGIO_CONFIG,
drivers/hwmon/ltc4283.c
1185
static int ltc4283_adio_config(struct ltc4283_hwmon *st, struct device *dev,
drivers/hwmon/ltc4283.c
1195
ret = regmap_clear_bits(st->map, LTC4283_ADC_SELECT(adc_idx),
drivers/hwmon/ltc4283.c
1200
__set_bit(pin, &st->gpio_mask);
drivers/hwmon/ltc4283.c
1204
static int ltc4283_pin_config(struct ltc4283_hwmon *st, struct device *dev)
drivers/hwmon/ltc4283.c
1208
ret = ltc4283_pgio_config(st, dev);
drivers/hwmon/ltc4283.c
1212
ret = ltc4283_adio_config(st, dev, "adi,gpio-on-adio1", LTC4283_PIN_ADIO1);
drivers/hwmon/ltc4283.c
1216
ret = ltc4283_adio_config(st, dev, "adi,gpio-on-adio2", LTC4283_PIN_ADIO2);
drivers/hwmon/ltc4283.c
1220
ret = ltc4283_adio_config(st, dev, "adi,gpio-on-adio3", LTC4283_PIN_ADIO3);
drivers/hwmon/ltc4283.c
1224
return ltc4283_adio_config(st, dev, "adi,gpio-on-adio4", LTC4283_PIN_ADIO4);
drivers/hwmon/ltc4283.c
1243
static int ltc4283_setup(struct ltc4283_hwmon *st, struct device *dev)
drivers/hwmon/ltc4283.c
1249
ret = ltc4283_get_defaults(st);
drivers/hwmon/ltc4283.c
1256
st->rsense = LTC4283_MIN_RSENSE;
drivers/hwmon/ltc4283.c
1258
&st->rsense);
drivers/hwmon/ltc4283.c
1260
if (st->rsense < LTC4283_MIN_RSENSE || st->rsense > LTC4283_MAX_RSENSE)
drivers/hwmon/ltc4283.c
1263
st->rsense, LTC4283_MIN_RSENSE, LTC4283_MAX_RSENSE);
drivers/hwmon/ltc4283.c
1272
st->rsense /= CENTI;
drivers/hwmon/ltc4283.c
1275
&st->vsense_max);
drivers/hwmon/ltc4283.c
1279
if (!in_range(st->vsense_max, LTC4283_VILIM_MIN_uV,
drivers/hwmon/ltc4283.c
1283
st->vsense_max, LTC4283_VILIM_MIN_uV,
drivers/hwmon/ltc4283.c
1287
st->vsense_max /= MILLI;
drivers/hwmon/ltc4283.c
1289
st->vsense_max - LTC4283_VILIM_MIN_uV / MILLI);
drivers/hwmon/ltc4283.c
1290
ret = regmap_update_bits(st->map, LTC4283_CONFIG_1,
drivers/hwmon/ltc4283.c
1296
ret = ltc4283_parse_array_prop(st, dev, "adi,current-limit-foldback-factor",
drivers/hwmon/ltc4283.c
1301
ret = regmap_update_bits(st->map, LTC4283_CONFIG_1, LTC4283_FB_MASK,
drivers/hwmon/ltc4283.c
1307
ret = ltc4283_parse_array_prop(st, dev, "adi,cooling-delay-ms",
drivers/hwmon/ltc4283.c
1312
ret = regmap_update_bits(st->map, LTC4283_CONFIG_2, LTC4283_COOLING_DL_MASK,
drivers/hwmon/ltc4283.c
1318
ret = ltc4283_parse_array_prop(st, dev, "adi,fet-bad-timer-delay-ms",
drivers/hwmon/ltc4283.c
1323
ret = regmap_update_bits(st->map, LTC4283_CONFIG_2, LTC4283_FTBD_DL_MASK,
drivers/hwmon/ltc4283.c
1329
ret = ltc4283_set_max_limits(st, dev);
drivers/hwmon/ltc4283.c
1333
ret = ltc4283_pin_config(st, dev);
drivers/hwmon/ltc4283.c
1338
ret = regmap_clear_bits(st->map, LTC4283_CONTROL_1,
drivers/hwmon/ltc4283.c
1345
ret = regmap_clear_bits(st->map, LTC4283_CONTROL_1,
drivers/hwmon/ltc4283.c
1352
ret = regmap_set_bits(st->map, LTC4283_CONTROL_1,
drivers/hwmon/ltc4283.c
1359
ret = regmap_clear_bits(st->map, LTC4283_CONTROL_1,
drivers/hwmon/ltc4283.c
1366
ret = regmap_clear_bits(st->map, LTC4283_CONTROL_2,
drivers/hwmon/ltc4283.c
1373
ret = regmap_clear_bits(st->map, LTC4283_CONTROL_2,
drivers/hwmon/ltc4283.c
1380
if (!st->ext_fault)
drivers/hwmon/ltc4283.c
1383
ret = regmap_set_bits(st->map, LTC4283_CONTROL_2,
drivers/hwmon/ltc4283.c
1390
ret = regmap_set_bits(st->map, LTC4283_FAULT_LOG_CTRL,
drivers/hwmon/ltc4283.c
1404
ret = regmap_update_bits(st->map, LTC4283_CONTROL_2,
drivers/hwmon/ltc4283.c
1418
ret = regmap_update_bits(st->map, LTC4283_CONTROL_2,
drivers/hwmon/ltc4283.c
1426
if (!st->ext_fault)
drivers/hwmon/ltc4283.c
1429
ret = regmap_set_bits(st->map, LTC4283_CONFIG_3,
drivers/hwmon/ltc4283.c
1438
__clear_bit(LTC4283_CHAN_DRNS, &st->ch_enable_mask);
drivers/hwmon/ltc4283.c
1444
ret = regmap_clear_bits(st->map, LTC4283_ADC_SELECT(chan),
drivers/hwmon/ltc4283.c
1454
ret = regmap_update_bits(st->map, LTC4283_CONFIG_3,
drivers/hwmon/ltc4283.c
1461
ret = regmap_update_bits(st->map, LTC4283_PGIO_CONFIG_2,
drivers/hwmon/ltc4283.c
1468
ret = regmap_set_bits(st->map, LTC4283_CONTROL_1, LTC4283_RW_PAGE_MASK);
drivers/hwmon/ltc4283.c
1476
return regmap_clear_bits(st->map, LTC4283_METER_CONTROL,
drivers/hwmon/ltc4283.c
1575
struct ltc4283_hwmon *st = arg;
drivers/hwmon/ltc4283.c
1579
ret = ltc4283_read_alarm(st, LTC4283_FAULT_LOG, mask, &alarm);
drivers/hwmon/ltc4283.c
1637
static void ltc4283_debugfs_init(struct ltc4283_hwmon *st, struct i2c_client *i2c)
drivers/hwmon/ltc4283.c
1639
debugfs_create_file_unsafe("in0_crit_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4283.c
1641
debugfs_create_file_unsafe("in0_lcrit_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4283.c
1643
debugfs_create_file_unsafe("in11_fet_bad_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4283.c
1645
debugfs_create_file_unsafe("in11_fet_short_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4283.c
1647
debugfs_create_file_unsafe("curr1_crit_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4283.c
1649
debugfs_create_file_unsafe("power1_failed_fault_log", 0400, i2c->debugfs, st,
drivers/hwmon/ltc4283.c
1652
st, <c4283_power1_good_input_fault_log);
drivers/hwmon/ltc4283.c
1727
struct ltc4283_hwmon *st;
drivers/hwmon/ltc4283.c
1730
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/hwmon/ltc4283.c
1731
if (!st)
drivers/hwmon/ltc4283.c
1740
st->client = client;
drivers/hwmon/ltc4283.c
1741
st->map = devm_regmap_init(dev, <c4283_regmap_bus, client,
drivers/hwmon/ltc4283.c
1743
if (IS_ERR(st->map))
drivers/hwmon/ltc4283.c
1744
return dev_err_probe(dev, PTR_ERR(st->map),
drivers/hwmon/ltc4283.c
1747
ret = ltc4283_setup(st, dev);
drivers/hwmon/ltc4283.c
1751
hwmon = devm_hwmon_device_register_with_info(dev, "ltc4283", st,
drivers/hwmon/ltc4283.c
1757
ltc4283_debugfs_init(st, client);
drivers/hwmon/ltc4283.c
1759
if (!st->gpio_mask)
drivers/hwmon/ltc4283.c
1764
&st->gpio_mask, id);
drivers/hwmon/ltc4283.c
191
static int ltc4283_read_voltage_word(const struct ltc4283_hwmon *st,
drivers/hwmon/ltc4283.c
197
ret = regmap_read(st->map, reg, &__raw);
drivers/hwmon/ltc4283.c
205
static int ltc4283_read_voltage_byte(const struct ltc4283_hwmon *st,
drivers/hwmon/ltc4283.c
211
ret = regmap_read(st->map, reg, &in);
drivers/hwmon/ltc4283.c
255
static int ltc4283_read_in_vals(const struct ltc4283_hwmon *st,
drivers/hwmon/ltc4283.c
263
return ltc4283_read_voltage_word(st, reg,
drivers/hwmon/ltc4283.c
267
return ltc4283_read_voltage_byte(st, reg,
drivers/hwmon/ltc4283.c
272
ret = ltc4283_read_voltage_word(st, reg,
drivers/hwmon/ltc4283.c
275
ret = ltc4283_read_voltage_byte(st, reg,
drivers/hwmon/ltc4283.c
284
static int ltc4283_read_alarm(struct ltc4283_hwmon *st, u32 reg,
drivers/hwmon/ltc4283.c
290
ret = regmap_read(st->map, reg, &alarm);
drivers/hwmon/ltc4283.c
298
return regmap_write(st->map, reg, alarm & ~mask);
drivers/hwmon/ltc4283.c
303
static int ltc4283_read_in_alarm(struct ltc4283_hwmon *st, u32 channel,
drivers/hwmon/ltc4283.c
307
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_1,
drivers/hwmon/ltc4283.c
316
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_2,
drivers/hwmon/ltc4283.c
323
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_3,
drivers/hwmon/ltc4283.c
330
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_5,
drivers/hwmon/ltc4283.c
335
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_4,
drivers/hwmon/ltc4283.c
338
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_4, BIT(4 + max_alm),
drivers/hwmon/ltc4283.c
342
static int ltc4283_read_in(struct ltc4283_hwmon *st, u32 attr, u32 channel,
drivers/hwmon/ltc4283.c
347
if (!test_bit(channel, &st->ch_enable_mask))
drivers/hwmon/ltc4283.c
350
return ltc4283_read_in_vals(st, attr, channel, val);
drivers/hwmon/ltc4283.c
355
return ltc4283_read_in_vals(st, attr, channel, val);
drivers/hwmon/ltc4283.c
357
return ltc4283_read_in_alarm(st, channel, true, val);
drivers/hwmon/ltc4283.c
359
return ltc4283_read_in_alarm(st, channel, false, val);
drivers/hwmon/ltc4283.c
361
return ltc4283_read_alarm(st, LTC4283_FAULT_STATUS,
drivers/hwmon/ltc4283.c
364
return ltc4283_read_alarm(st, LTC4283_FAULT_STATUS,
drivers/hwmon/ltc4283.c
371
return ltc4283_read_alarm(st, LTC4283_FAULT_STATUS,
drivers/hwmon/ltc4283.c
374
*val = test_bit(channel, &st->ch_enable_mask);
drivers/hwmon/ltc4283.c
382
static int ltc4283_read_current_word(const struct ltc4283_hwmon *st, u32 reg,
drivers/hwmon/ltc4283.c
389
ret = regmap_read(st->map, reg, &__raw);
drivers/hwmon/ltc4283.c
394
BIT_ULL(16) * st->rsense);
drivers/hwmon/ltc4283.c
399
static int ltc4283_read_current_byte(const struct ltc4283_hwmon *st, u32 reg,
drivers/hwmon/ltc4283.c
406
ret = regmap_read(st->map, reg, &curr);
drivers/hwmon/ltc4283.c
410
*val = DIV_ROUND_CLOSEST_ULL(curr * temp, BIT(8) * st->rsense);
drivers/hwmon/ltc4283.c
414
static int ltc4283_read_curr(struct ltc4283_hwmon *st, u32 attr, long *val)
drivers/hwmon/ltc4283.c
418
return ltc4283_read_current_word(st, LTC4283_SENSE, val);
drivers/hwmon/ltc4283.c
420
return ltc4283_read_current_word(st, LTC4283_SENSE_MAX, val);
drivers/hwmon/ltc4283.c
422
return ltc4283_read_current_word(st, LTC4283_SENSE_MIN, val);
drivers/hwmon/ltc4283.c
424
return ltc4283_read_current_byte(st, LTC4283_SENSE_MAX_TH, val);
drivers/hwmon/ltc4283.c
426
return ltc4283_read_current_byte(st, LTC4283_SENSE_MIN_TH, val);
drivers/hwmon/ltc4283.c
428
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_1,
drivers/hwmon/ltc4283.c
431
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_1,
drivers/hwmon/ltc4283.c
434
return ltc4283_read_alarm(st, LTC4283_FAULT_STATUS,
drivers/hwmon/ltc4283.c
441
static int ltc4283_read_power_word(const struct ltc4283_hwmon *st,
drivers/hwmon/ltc4283.c
448
ret = regmap_read(st->map, reg, &__raw);
drivers/hwmon/ltc4283.c
456
*val = DIV64_U64_ROUND_CLOSEST(temp * __raw, BIT_ULL(16) * st->rsense);
drivers/hwmon/ltc4283.c
461
static int ltc4283_read_power_byte(const struct ltc4283_hwmon *st,
drivers/hwmon/ltc4283.c
468
ret = regmap_read(st->map, reg, &power);
drivers/hwmon/ltc4283.c
472
*val = DIV_ROUND_CLOSEST_ULL(power * temp, BIT(8) * st->rsense);
drivers/hwmon/ltc4283.c
477
static int ltc4283_read_power(struct ltc4283_hwmon *st, u32 attr, long *val)
drivers/hwmon/ltc4283.c
481
return ltc4283_read_power_word(st, LTC4283_POWER, val);
drivers/hwmon/ltc4283.c
483
return ltc4283_read_power_word(st, LTC4283_POWER_MAX, val);
drivers/hwmon/ltc4283.c
485
return ltc4283_read_power_word(st, LTC4283_POWER_MIN, val);
drivers/hwmon/ltc4283.c
487
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_1,
drivers/hwmon/ltc4283.c
490
return ltc4283_read_alarm(st, LTC4283_ADC_ALM_LOG_1,
drivers/hwmon/ltc4283.c
493
return ltc4283_read_power_byte(st, LTC4283_POWER_MAX_TH, val);
drivers/hwmon/ltc4283.c
495
return ltc4283_read_power_byte(st, LTC4283_POWER_MIN_TH, val);
drivers/hwmon/ltc4283.c
501
static int ltc4283_read_energy(struct ltc4283_hwmon *st, u32 attr, s64 *val)
drivers/hwmon/ltc4283.c
507
if (!st->energy_en)
drivers/hwmon/ltc4283.c
510
ret = i2c_smbus_read_i2c_block_data(st->client, LTC4283_ENERGY, 6, raw);
drivers/hwmon/ltc4283.c
533
BIT_ULL(24) * st->rsense * CENTI);
drivers/hwmon/ltc4283.c
542
struct ltc4283_hwmon *st = dev_get_drvdata(dev);
drivers/hwmon/ltc4283.c
546
return ltc4283_read_in(st, attr, channel, val);
drivers/hwmon/ltc4283.c
548
return ltc4283_read_curr(st, attr, val);
drivers/hwmon/ltc4283.c
550
return ltc4283_read_power(st, attr, val);
drivers/hwmon/ltc4283.c
552
*val = st->energy_en;
drivers/hwmon/ltc4283.c
555
return ltc4283_read_energy(st, attr, (s64 *)val);
drivers/hwmon/ltc4283.c
561
static int ltc4283_write_power_byte(const struct ltc4283_hwmon *st, u32 reg,
drivers/hwmon/ltc4283.c
567
val = clamp_val(val, 0, st->power_max);
drivers/hwmon/ltc4283.c
568
__raw = DIV64_U64_ROUND_CLOSEST(val * BIT_ULL(8) * st->rsense, temp);
drivers/hwmon/ltc4283.c
570
return regmap_write(st->map, reg, __raw);
drivers/hwmon/ltc4283.c
573
static int ltc4283_write_power_word(const struct ltc4283_hwmon *st,
drivers/hwmon/ltc4283.c
579
__raw = mul_u64_u64_div_u64(val, st->rsense * BIT_ULL(16), divisor);
drivers/hwmon/ltc4283.c
581
return regmap_write(st->map, reg, __raw);
drivers/hwmon/ltc4283.c
584
static int ltc4283_reset_power_hist(struct ltc4283_hwmon *st)
drivers/hwmon/ltc4283.c
588
ret = ltc4283_write_power_word(st, LTC4283_POWER_MIN, st->power_max);
drivers/hwmon/ltc4283.c
592
ret = ltc4283_write_power_word(st, LTC4283_POWER_MAX, 0);
drivers/hwmon/ltc4283.c
597
return regmap_clear_bits(st->map, LTC4283_FAULT_LOG,
drivers/hwmon/ltc4283.c
601
static int ltc4283_write_power(struct ltc4283_hwmon *st, u32 attr, long val)
drivers/hwmon/ltc4283.c
605
return ltc4283_write_power_byte(st, LTC4283_POWER_MAX_TH, val);
drivers/hwmon/ltc4283.c
607
return ltc4283_write_power_byte(st, LTC4283_POWER_MIN_TH, val);
drivers/hwmon/ltc4283.c
609
return ltc4283_reset_power_hist(st);
drivers/hwmon/ltc4283.c
615
static int ltc4283_write_in_history(struct ltc4283_hwmon *st, u32 reg,
drivers/hwmon/ltc4283.c
625
ret = regmap_write(st->map, reg, __raw);
drivers/hwmon/ltc4283.c
629
return regmap_write(st->map, reg + 1, 0);
drivers/hwmon/ltc4283.c
632
static int ltc4283_write_in_byte(const struct ltc4283_hwmon *st,
drivers/hwmon/ltc4283.c
642
return regmap_write(st->map, reg, __raw);
drivers/hwmon/ltc4283.c
645
static int ltc4283_reset_in_hist(struct ltc4283_hwmon *st, u32 channel)
drivers/hwmon/ltc4283.c
655
return regmap_clear_bits(st->map, LTC4283_FAULT_LOG,
drivers/hwmon/ltc4283.c
659
return ltc4283_write_in_history(st, LTC4283_VPWR_MIN,
drivers/hwmon/ltc4283.c
671
ret = ltc4283_write_in_history(st, reg, fs, fs);
drivers/hwmon/ltc4283.c
678
return regmap_clear_bits(st->map, LTC4283_FAULT_LOG,
drivers/hwmon/ltc4283.c
682
static int ltc4283_write_in_en(struct ltc4283_hwmon *st, u32 channel, bool en)
drivers/hwmon/ltc4283.c
694
ret = regmap_set_bits(st->map, reg, bit);
drivers/hwmon/ltc4283.c
696
ret = regmap_clear_bits(st->map, reg, bit);
drivers/hwmon/ltc4283.c
700
__assign_bit(channel, &st->ch_enable_mask, en);
drivers/hwmon/ltc4283.c
704
static int ltc4283_write_minmax(struct ltc4283_hwmon *st, long val,
drivers/hwmon/ltc4283.c
711
return ltc4283_write_in_byte(st, LTC4283_VPWR_MAX_TH,
drivers/hwmon/ltc4283.c
714
return ltc4283_write_in_byte(st, LTC4283_VPWR_MIN_TH,
drivers/hwmon/ltc4283.c
721
return ltc4283_write_in_byte(st, reg,
drivers/hwmon/ltc4283.c
726
return ltc4283_write_in_byte(st, reg, LTC4283_ADC2_FS_mV, val);
drivers/hwmon/ltc4283.c
734
return ltc4283_write_in_byte(st, reg, LTC4283_ADC1_FS_uV,
drivers/hwmon/ltc4283.c
739
return ltc4283_write_in_byte(st, reg, LTC4283_ADC1_FS_uV, val * MILLI);
drivers/hwmon/ltc4283.c
742
static int ltc4283_write_in(struct ltc4283_hwmon *st, u32 attr, long val,
drivers/hwmon/ltc4283.c
747
return ltc4283_write_minmax(st, val, channel, true);
drivers/hwmon/ltc4283.c
749
return ltc4283_write_minmax(st, val, channel, false);
drivers/hwmon/ltc4283.c
751
return ltc4283_reset_in_hist(st, channel);
drivers/hwmon/ltc4283.c
753
return ltc4283_write_in_en(st, channel, !!val);
drivers/hwmon/ltc4283.c
759
static int ltc4283_write_curr_byte(const struct ltc4283_hwmon *st,
drivers/hwmon/ltc4283.c
765
isense_max = DIV_ROUND_CLOSEST(st->vsense_max * MICRO * DECA, st->rsense);
drivers/hwmon/ltc4283.c
767
reg_val = DIV_ROUND_CLOSEST_ULL(val * BIT_ULL(8) * st->rsense, temp);
drivers/hwmon/ltc4283.c
769
return regmap_write(st->map, reg, reg_val);
drivers/hwmon/ltc4283.c
772
static int ltc4283_write_curr_history(struct ltc4283_hwmon *st)
drivers/hwmon/ltc4283.c
776
ret = ltc4283_write_in_history(st, LTC4283_SENSE_MIN,
drivers/hwmon/ltc4283.c
777
st->vsense_max * MILLI,
drivers/hwmon/ltc4283.c
783
return regmap_clear_bits(st->map, LTC4283_FAULT_LOG,
drivers/hwmon/ltc4283.c
787
static int ltc4283_write_curr(struct ltc4283_hwmon *st, u32 attr, long val)
drivers/hwmon/ltc4283.c
791
return ltc4283_write_curr_byte(st, LTC4283_SENSE_MAX_TH, val);
drivers/hwmon/ltc4283.c
793
return ltc4283_write_curr_byte(st, LTC4283_SENSE_MIN_TH, val);
drivers/hwmon/ltc4283.c
795
return ltc4283_write_curr_history(st);
drivers/hwmon/ltc4283.c
801
static int ltc4283_energy_enable_set(struct ltc4283_hwmon *st, long val)
drivers/hwmon/ltc4283.c
807
ret = regmap_update_bits(st->map, LTC4283_METER_CONTROL,
drivers/hwmon/ltc4283.c
813
st->energy_en = val;
drivers/hwmon/ltc4283.c
821
struct ltc4283_hwmon *st = dev_get_drvdata(dev);
drivers/hwmon/ltc4283.c
825
return ltc4283_write_power(st, attr, val);
drivers/hwmon/ltc4283.c
827
return ltc4283_write_in(st, attr, val, channel);
drivers/hwmon/ltc4283.c
829
return ltc4283_write_curr(st, attr, val);
drivers/hwmon/ltc4283.c
831
return ltc4283_energy_enable_set(st, val);
drivers/hwmon/ltc4283.c
837
static umode_t ltc4283_in_is_visible(const struct ltc4283_hwmon *st,
drivers/hwmon/ltc4283.c
844
if (test_bit(channel, &st->gpio_mask))
drivers/hwmon/ltc4283.c
852
if (test_bit(channel * 2, &st->gpio_mask) ||
drivers/hwmon/ltc4283.c
853
test_bit(channel * 2 + 1, &st->gpio_mask))
drivers/hwmon/ltc4283.c
974
static int ltc4283_set_max_limits(struct ltc4283_hwmon *st, struct device *dev)
drivers/hwmon/ltc4283.c
976
u32 temp = st->vsense_max * DECA * MICRO;
drivers/hwmon/ltc4283.c
979
ret = ltc4283_write_in_byte(st, LTC4283_SENSE_MAX_TH, LTC4283_ADC1_FS_uV,
drivers/hwmon/ltc4283.c
980
st->vsense_max * MILLI);
drivers/hwmon/ltc4283.c
985
st->power_max = DIV_ROUND_CLOSEST(temp, st->rsense) * LTC4283_ADC2_FS_mV;
drivers/hwmon/ltc4283.c
986
return ltc4283_write_power_byte(st, LTC4283_POWER_MAX_TH, st->power_max);
drivers/hwmon/ltc4283.c
989
static int ltc4283_parse_array_prop(const struct ltc4283_hwmon *st,
drivers/hwmon/max31827.c
113
static int shutdown_write(struct max31827_state *st, unsigned int reg,
drivers/hwmon/max31827.c
125
if (!st->enable) {
drivers/hwmon/max31827.c
127
return regmap_write(st->regmap, reg, val);
drivers/hwmon/max31827.c
128
return regmap_update_bits(st->regmap, reg, mask, val);
drivers/hwmon/max31827.c
131
ret = regmap_read(st->regmap, MAX31827_CONFIGURATION_REG, &cfg);
drivers/hwmon/max31827.c
138
ret = regmap_write(st->regmap, MAX31827_CONFIGURATION_REG, cfg);
drivers/hwmon/max31827.c
143
ret = regmap_write(st->regmap, reg, val);
drivers/hwmon/max31827.c
145
ret = regmap_update_bits(st->regmap, reg, mask, val);
drivers/hwmon/max31827.c
150
return regmap_update_bits(st->regmap, MAX31827_CONFIGURATION_REG,
drivers/hwmon/max31827.c
155
static int write_alarm_val(struct max31827_state *st, unsigned int reg,
drivers/hwmon/max31827.c
160
return shutdown_write(st, reg, 0, val);
drivers/hwmon/max31827.c
193
struct max31827_state *st = dev_get_drvdata(dev);
drivers/hwmon/max31827.c
201
ret = regmap_read(st->regmap,
drivers/hwmon/max31827.c
213
if (!st->enable) {
drivers/hwmon/max31827.c
214
ret = regmap_update_bits(st->regmap,
drivers/hwmon/max31827.c
220
msleep(max31827_conv_times[st->resolution]);
drivers/hwmon/max31827.c
228
if (max31827_resolutions[st->resolution] == 12 &&
drivers/hwmon/max31827.c
229
st->update_interval == 125)
drivers/hwmon/max31827.c
232
ret = regmap_read(st->regmap, MAX31827_T_REG, &uval);
drivers/hwmon/max31827.c
241
ret = regmap_read(st->regmap, MAX31827_TH_REG, &uval);
drivers/hwmon/max31827.c
248
ret = regmap_read(st->regmap, MAX31827_TH_HYST_REG,
drivers/hwmon/max31827.c
256
ret = regmap_read(st->regmap,
drivers/hwmon/max31827.c
265
ret = regmap_read(st->regmap, MAX31827_TL_REG, &uval);
drivers/hwmon/max31827.c
272
ret = regmap_read(st->regmap, MAX31827_TL_HYST_REG,
drivers/hwmon/max31827.c
280
ret = regmap_read(st->regmap,
drivers/hwmon/max31827.c
297
ret = regmap_read(st->regmap,
drivers/hwmon/max31827.c
319
struct max31827_state *st = dev_get_drvdata(dev);
drivers/hwmon/max31827.c
336
st->enable = val;
drivers/hwmon/max31827.c
338
return regmap_update_bits(st->regmap,
drivers/hwmon/max31827.c
345
return write_alarm_val(st, MAX31827_TH_REG, val);
drivers/hwmon/max31827.c
348
return write_alarm_val(st, MAX31827_TH_HYST_REG, val);
drivers/hwmon/max31827.c
351
return write_alarm_val(st, MAX31827_TL_REG, val);
drivers/hwmon/max31827.c
354
return write_alarm_val(st, MAX31827_TL_HYST_REG, val);
drivers/hwmon/max31827.c
363
if (!st->enable)
drivers/hwmon/max31827.c
382
ret = regmap_update_bits(st->regmap,
drivers/hwmon/max31827.c
389
st->update_interval = val;
drivers/hwmon/max31827.c
393
return regmap_update_bits(st->regmap, MAX31827_CONFIGURATION_REG,
drivers/hwmon/max31827.c
408
struct max31827_state *st = dev_get_drvdata(dev);
drivers/hwmon/max31827.c
412
ret = regmap_read(st->regmap, MAX31827_CONFIGURATION_REG, &val);
drivers/hwmon/max31827.c
425
struct max31827_state *st = dev_get_drvdata(dev);
drivers/hwmon/max31827.c
447
st->resolution = idx;
drivers/hwmon/max31827.c
449
ret = shutdown_write(st, MAX31827_CONFIGURATION_REG,
drivers/hwmon/max31827.c
473
static int max31827_init_client(struct max31827_state *st,
drivers/hwmon/max31827.c
485
st->enable = true;
drivers/hwmon/max31827.c
559
return regmap_write(st->regmap, MAX31827_CONFIGURATION_REG, res);
drivers/hwmon/max31827.c
586
struct max31827_state *st;
drivers/hwmon/max31827.c
592
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/hwmon/max31827.c
593
if (!st)
drivers/hwmon/max31827.c
596
st->regmap = devm_regmap_init_i2c(client, &max31827_regmap);
drivers/hwmon/max31827.c
597
if (IS_ERR(st->regmap))
drivers/hwmon/max31827.c
598
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/hwmon/max31827.c
605
err = max31827_init_client(st, dev);
drivers/hwmon/max31827.c
609
hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name, st,
drivers/i2c/busses/i2c-exynos5.c
685
u32 st = readl(i2c->regs + HSI2C_TRANS_STATUS);
drivers/i2c/busses/i2c-exynos5.c
687
if ((st & HSI2C_MASTER_ST_MASK) != HSI2C_MASTER_ST_LOSE)
drivers/iio/accel/adis16201.c
102
struct adis *st = iio_priv(indio_dev);
drivers/iio/accel/adis16201.c
166
ret = adis_read_reg_16(st, addr, &val16);
drivers/iio/accel/adis16201.c
183
struct adis *st = iio_priv(indio_dev);
drivers/iio/accel/adis16201.c
200
return adis_write_reg_16(st, adis16201_addresses[chan->scan_index],
drivers/iio/accel/adis16201.c
260
struct adis *st;
drivers/iio/accel/adis16201.c
263
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/accel/adis16201.c
267
st = iio_priv(indio_dev);
drivers/iio/accel/adis16201.c
276
ret = adis_init(st, indio_dev, spi, &adis16201_data);
drivers/iio/accel/adis16201.c
280
ret = devm_adis_setup_buffer_and_trigger(st, indio_dev, NULL);
drivers/iio/accel/adis16201.c
284
ret = __adis_initial_startup(st);
drivers/iio/accel/adis16209.c
110
struct adis *st = iio_priv(indio_dev);
drivers/iio/accel/adis16209.c
125
return adis_write_reg_16(st, adis16209_addresses[chan->scan_index][0],
drivers/iio/accel/adis16209.c
134
struct adis *st = iio_priv(indio_dev);
drivers/iio/accel/adis16209.c
202
ret = adis_read_reg_16(st, addr, &val16);
drivers/iio/accel/adis16209.c
271
struct adis *st;
drivers/iio/accel/adis16209.c
274
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/accel/adis16209.c
278
st = iio_priv(indio_dev);
drivers/iio/accel/adis16209.c
286
ret = adis_init(st, indio_dev, spi, &adis16209_data);
drivers/iio/accel/adis16209.c
290
ret = devm_adis_setup_buffer_and_trigger(st, indio_dev, NULL);
drivers/iio/accel/adis16209.c
294
ret = __adis_initial_startup(st);
drivers/iio/accel/adxl345_core.c
1001
static int adxl345_set_range(struct adxl345_state *st, enum adxl345_range range)
drivers/iio/accel/adxl345_core.c
1008
ret = regmap_read(st->regmap, ADXL345_REG_DATA_FORMAT, ®val);
drivers/iio/accel/adxl345_core.c
1013
ret = regmap_read(st->regmap,
drivers/iio/accel/adxl345_core.c
1019
ret = regmap_update_bits(st->regmap, ADXL345_REG_DATA_FORMAT,
drivers/iio/accel/adxl345_core.c
1029
inact_threshold = st->inact_threshold;
drivers/iio/accel/adxl345_core.c
1034
ret = regmap_write(st->regmap, adxl345_act_thresh_reg[ADXL345_ACTIVITY],
drivers/iio/accel/adxl345_core.c
1039
return adxl345_set_inact_threshold(st, inact_threshold);
drivers/iio/accel/adxl345_core.c
1067
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1081
ret = regmap_bulk_read(st->regmap,
drivers/iio/accel/adxl345_core.c
1090
ret = regmap_read(st->regmap, ADXL345_REG_DATA_FORMAT, ®val);
drivers/iio/accel/adxl345_core.c
1098
ret = regmap_read(st->regmap,
drivers/iio/accel/adxl345_core.c
1110
ret = regmap_read(st->regmap, ADXL345_REG_BW_RATE, ®val);
drivers/iio/accel/adxl345_core.c
1126
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1131
ret = adxl345_set_measure_en(st, false);
drivers/iio/accel/adxl345_core.c
1141
ret = regmap_write(st->regmap,
drivers/iio/accel/adxl345_core.c
1148
ret = adxl345_find_odr(st, val, val2, &odr);
drivers/iio/accel/adxl345_core.c
1152
ret = adxl345_set_odr(st, odr);
drivers/iio/accel/adxl345_core.c
1157
ret = adxl345_find_range(st, val, val2, &range);
drivers/iio/accel/adxl345_core.c
1161
ret = adxl345_set_range(st, range);
drivers/iio/accel/adxl345_core.c
1169
return adxl345_set_measure_en(st, true);
drivers/iio/accel/adxl345_core.c
1172
static int adxl345_read_mag_config(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
1179
return !!adxl345_is_act_inact_en(st, type_act);
drivers/iio/accel/adxl345_core.c
1181
return !!adxl345_is_act_inact_en(st, type_inact);
drivers/iio/accel/adxl345_core.c
1187
static int adxl345_write_mag_config(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
1195
return adxl345_set_act_inact_en(st, type_act, state);
drivers/iio/accel/adxl345_core.c
1197
return adxl345_set_act_inact_en(st, type_inact, state);
drivers/iio/accel/adxl345_core.c
1208
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1214
return adxl345_read_mag_config(st, dir,
drivers/iio/accel/adxl345_core.c
1218
return adxl345_read_mag_config(st, dir,
drivers/iio/accel/adxl345_core.c
1224
ret = adxl345_is_tap_en(st, chan->channel2,
drivers/iio/accel/adxl345_core.c
1230
ret = adxl345_is_tap_en(st, chan->channel2,
drivers/iio/accel/adxl345_core.c
1249
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1253
return adxl345_write_mag_config(st, dir,
drivers/iio/accel/adxl345_core.c
1258
return adxl345_write_mag_config(st, dir,
drivers/iio/accel/adxl345_core.c
1265
return adxl345_set_singletap_en(st, chan->channel2, state);
drivers/iio/accel/adxl345_core.c
1267
return adxl345_set_doubletap_en(st, state);
drivers/iio/accel/adxl345_core.c
1276
static int adxl345_read_mag_value(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
1290
ret = regmap_read(st->regmap,
drivers/iio/accel/adxl345_core.c
1299
*val = 62500 * st->inact_threshold;
drivers/iio/accel/adxl345_core.c
1306
*val = st->inact_time_ms;
drivers/iio/accel/adxl345_core.c
1314
static int adxl345_write_mag_value(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
1327
return regmap_write(st->regmap,
drivers/iio/accel/adxl345_core.c
1331
return adxl345_set_inact_threshold(st, val);
drivers/iio/accel/adxl345_core.c
1336
return adxl345_set_inact_time(st, val, val2);
drivers/iio/accel/adxl345_core.c
1349
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1365
return adxl345_read_mag_value(st, dir, info,
drivers/iio/accel/adxl345_core.c
1370
return adxl345_read_mag_value(st, dir, info,
drivers/iio/accel/adxl345_core.c
1377
ret = regmap_read(st->regmap, ADXL345_REG_THRESH_TAP,
drivers/iio/accel/adxl345_core.c
1384
*val = st->tap_duration_us;
drivers/iio/accel/adxl345_core.c
1388
*val = st->tap_window_us;
drivers/iio/accel/adxl345_core.c
1392
*val = st->tap_latent_us;
drivers/iio/accel/adxl345_core.c
1410
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1413
ret = adxl345_set_measure_en(st, false);
drivers/iio/accel/adxl345_core.c
1422
ret = adxl345_write_mag_value(st, dir, info,
drivers/iio/accel/adxl345_core.c
1430
ret = adxl345_write_mag_value(st, dir, info,
drivers/iio/accel/adxl345_core.c
1440
ret = regmap_write(st->regmap, ADXL345_REG_THRESH_TAP,
drivers/iio/accel/adxl345_core.c
1446
ret = adxl345_set_tap_duration(st, val, val2);
drivers/iio/accel/adxl345_core.c
1451
ret = adxl345_set_tap_window(st, val, val2);
drivers/iio/accel/adxl345_core.c
1456
ret = adxl345_set_tap_latent(st, val, val2);
drivers/iio/accel/adxl345_core.c
1468
return adxl345_set_measure_en(st, true);
drivers/iio/accel/adxl345_core.c
1474
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1477
return regmap_read(st->regmap, reg, readval);
drivers/iio/accel/adxl345_core.c
1478
return regmap_write(st->regmap, reg, writeval);
drivers/iio/accel/adxl345_core.c
1483
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1489
ret = regmap_update_bits(st->regmap, ADXL345_REG_FIFO_CTL, fifo_mask, value);
drivers/iio/accel/adxl345_core.c
1493
st->watermark = value;
drivers/iio/accel/adxl345_core.c
1494
return regmap_update_bits(st->regmap, ADXL345_REG_INT_ENABLE,
drivers/iio/accel/adxl345_core.c
1516
struct adxl345_state *st = ptr;
drivers/iio/accel/adxl345_core.c
1518
adxl345_set_measure_en(st, false);
drivers/iio/accel/adxl345_core.c
1521
static int adxl345_set_fifo(struct adxl345_state *st)
drivers/iio/accel/adxl345_core.c
1527
ret = adxl345_set_measure_en(st, false);
drivers/iio/accel/adxl345_core.c
1531
ret = regmap_read(st->regmap, ADXL345_REG_INT_MAP, &intio);
drivers/iio/accel/adxl345_core.c
1535
ret = regmap_write(st->regmap, ADXL345_REG_FIFO_CTL,
drivers/iio/accel/adxl345_core.c
1537
st->watermark) |
drivers/iio/accel/adxl345_core.c
1540
st->fifo_mode));
drivers/iio/accel/adxl345_core.c
1544
return adxl345_set_measure_en(st, true);
drivers/iio/accel/adxl345_core.c
1556
static int adxl345_get_samples(struct adxl345_state *st)
drivers/iio/accel/adxl345_core.c
1561
ret = regmap_read(st->regmap, ADXL345_REG_FIFO_STATUS, ®val);
drivers/iio/accel/adxl345_core.c
1579
static int adxl345_fifo_transfer(struct adxl345_state *st, int samples)
drivers/iio/accel/adxl345_core.c
1584
ret = regmap_bulk_read(st->regmap, ADXL345_REG_XYZ_BASE,
drivers/iio/accel/adxl345_core.c
1585
st->fifo_buf + (i * ADXL345_DIRS),
drivers/iio/accel/adxl345_core.c
1586
sizeof(st->fifo_buf[0]) * ADXL345_DIRS);
drivers/iio/accel/adxl345_core.c
1601
if (st->fifo_delay && samples > 1)
drivers/iio/accel/adxl345_core.c
1614
static void adxl345_fifo_reset(struct adxl345_state *st)
drivers/iio/accel/adxl345_core.c
1619
adxl345_set_measure_en(st, false);
drivers/iio/accel/adxl345_core.c
1621
samples = adxl345_get_samples(st);
drivers/iio/accel/adxl345_core.c
1623
adxl345_fifo_transfer(st, samples);
drivers/iio/accel/adxl345_core.c
1625
regmap_read(st->regmap, ADXL345_REG_INT_SOURCE, ®val);
drivers/iio/accel/adxl345_core.c
1627
adxl345_set_measure_en(st, true);
drivers/iio/accel/adxl345_core.c
1632
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1634
st->fifo_mode = ADXL345_FIFO_STREAM;
drivers/iio/accel/adxl345_core.c
1635
return adxl345_set_fifo(st);
drivers/iio/accel/adxl345_core.c
1640
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1643
st->fifo_mode = ADXL345_FIFO_BYPASS;
drivers/iio/accel/adxl345_core.c
1644
ret = adxl345_set_fifo(st);
drivers/iio/accel/adxl345_core.c
1648
return regmap_write(st->regmap, ADXL345_REG_INT_ENABLE, 0x00);
drivers/iio/accel/adxl345_core.c
1659
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1665
ret = adxl345_fifo_transfer(st, samples);
drivers/iio/accel/adxl345_core.c
1670
iio_push_to_buffers(indio_dev, &st->fifo_buf[i]);
drivers/iio/accel/adxl345_core.c
1680
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1706
ret = regmap_read(st->regmap, ADXL345_REG_ACT_INACT_CTRL, ®val);
drivers/iio/accel/adxl345_core.c
1731
ret = regmap_read(st->regmap, ADXL345_REG_ACT_INACT_CTRL, ®val);
drivers/iio/accel/adxl345_core.c
1768
samples = adxl345_get_samples(st);
drivers/iio/accel/adxl345_core.c
1791
struct adxl345_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1799
ret = regmap_read(st->regmap, ADXL345_REG_TAP_AXIS, &axis_ctrl);
drivers/iio/accel/adxl345_core.c
1805
ret = regmap_read(st->regmap, ADXL345_REG_ACT_TAP_STATUS, ®val);
drivers/iio/accel/adxl345_core.c
1824
if (regmap_read(st->regmap, ADXL345_REG_INT_SOURCE, &int_stat))
drivers/iio/accel/adxl345_core.c
1836
adxl345_fifo_reset(st);
drivers/iio/accel/adxl345_core.c
1888
struct adxl345_state *st;
drivers/iio/accel/adxl345_core.c
1900
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/accel/adxl345_core.c
1904
st = iio_priv(indio_dev);
drivers/iio/accel/adxl345_core.c
1905
st->regmap = regmap;
drivers/iio/accel/adxl345_core.c
1906
st->info = device_get_match_data(dev);
drivers/iio/accel/adxl345_core.c
1907
if (!st->info)
drivers/iio/accel/adxl345_core.c
1909
st->fifo_delay = fifo_delay_default;
drivers/iio/accel/adxl345_core.c
1913
st->tap_duration_us = 16; /* 16 [0x10] -> .010 */
drivers/iio/accel/adxl345_core.c
1914
st->tap_window_us = 64; /* 64 [0x40] -> .080 */
drivers/iio/accel/adxl345_core.c
1915
st->tap_latent_us = 16; /* 16 [0x10] -> .020 */
drivers/iio/accel/adxl345_core.c
1917
indio_dev->name = st->info->name;
drivers/iio/accel/adxl345_core.c
1929
ret = adxl345_set_odr(st, ADXL345_ODR_200HZ);
drivers/iio/accel/adxl345_core.c
1933
ret = adxl345_set_range(st, ADXL345_16G_RANGE);
drivers/iio/accel/adxl345_core.c
1938
ret = regmap_write(st->regmap, ADXL345_REG_INT_ENABLE, 0x00);
drivers/iio/accel/adxl345_core.c
1944
ret = setup(dev, st->regmap);
drivers/iio/accel/adxl345_core.c
1949
ret = regmap_update_bits(st->regmap, ADXL345_REG_DATA_FORMAT,
drivers/iio/accel/adxl345_core.c
1958
ret = regmap_write(st->regmap, ADXL345_REG_DATA_FORMAT,
drivers/iio/accel/adxl345_core.c
1965
ret = regmap_read(st->regmap, ADXL345_REG_DEVID, ®val);
drivers/iio/accel/adxl345_core.c
1974
ret = adxl345_set_measure_en(st, true);
drivers/iio/accel/adxl345_core.c
1978
ret = devm_add_action_or_reset(dev, adxl345_powerdown, st);
drivers/iio/accel/adxl345_core.c
1990
ret = regmap_assign_bits(st->regmap, ADXL345_REG_INT_MAP,
drivers/iio/accel/adxl345_core.c
2001
ret = regmap_write(st->regmap, ADXL345_REG_ACT_INACT_CTRL, 0);
drivers/iio/accel/adxl345_core.c
2005
ret = regmap_write(st->regmap, ADXL345_REG_THRESH_ACT, 6);
drivers/iio/accel/adxl345_core.c
2009
ret = adxl345_set_inact_threshold(st, 4);
drivers/iio/accel/adxl345_core.c
2013
ret = regmap_write(st->regmap, ADXL345_REG_THRESH_TAP, tap_threshold);
drivers/iio/accel/adxl345_core.c
2029
ret = regmap_write(st->regmap, ADXL345_REG_FIFO_CTL,
drivers/iio/accel/adxl345_core.c
351
static int adxl345_set_measure_en(struct adxl345_state *st, bool en)
drivers/iio/accel/adxl345_core.c
353
return regmap_assign_bits(st->regmap, ADXL345_REG_POWER_CTL,
drivers/iio/accel/adxl345_core.c
359
static int adxl345_set_inact_threshold(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
364
st->inact_threshold = min(U8_MAX, threshold);
drivers/iio/accel/adxl345_core.c
366
ret = regmap_write(st->regmap,
drivers/iio/accel/adxl345_core.c
368
st->inact_threshold);
drivers/iio/accel/adxl345_core.c
372
return regmap_write(st->regmap,
drivers/iio/accel/adxl345_core.c
374
st->inact_threshold);
drivers/iio/accel/adxl345_core.c
377
static int adxl345_set_default_time(struct adxl345_state *st)
drivers/iio/accel/adxl345_core.c
387
ret = regmap_read(st->regmap, ADXL345_REG_BW_RATE, ®val);
drivers/iio/accel/adxl345_core.c
394
st->inact_time_ms = MILLI * val;
drivers/iio/accel/adxl345_core.c
397
return regmap_write(st->regmap, ADXL345_REG_TIME_INACT, val);
drivers/iio/accel/adxl345_core.c
400
static int adxl345_set_inactivity_time(struct adxl345_state *st, u32 val_int)
drivers/iio/accel/adxl345_core.c
402
st->inact_time_ms = MILLI * val_int;
drivers/iio/accel/adxl345_core.c
404
return regmap_write(st->regmap, ADXL345_REG_TIME_INACT, val_int);
drivers/iio/accel/adxl345_core.c
407
static int adxl345_set_freefall_time(struct adxl345_state *st, u32 val_fract)
drivers/iio/accel/adxl345_core.c
414
st->inact_time_ms = DIV_ROUND_UP(val_fract, MILLI);
drivers/iio/accel/adxl345_core.c
416
return regmap_write(st->regmap, ADXL345_REG_TIME_FF,
drivers/iio/accel/adxl345_core.c
445
static int adxl345_set_inact_time(struct adxl345_state *st, u32 val_int,
drivers/iio/accel/adxl345_core.c
450
return adxl345_set_inactivity_time(st, val_int);
drivers/iio/accel/adxl345_core.c
454
return adxl345_set_freefall_time(st, val_fract);
drivers/iio/accel/adxl345_core.c
457
return adxl345_set_default_time(st);
drivers/iio/accel/adxl345_core.c
478
static int adxl345_is_act_inact_ac(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
488
ret = regmap_read(st->regmap, ADXL345_REG_ACT_INACT_CTRL, ®val);
drivers/iio/accel/adxl345_core.c
519
static int adxl345_set_act_inact_ac(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
566
return regmap_assign_bits(st->regmap, ADXL345_REG_ACT_INACT_CTRL,
drivers/iio/accel/adxl345_core.c
570
static int adxl345_is_act_inact_en(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
578
ret = regmap_read(st->regmap, ADXL345_REG_ACT_INACT_CTRL, &axis_ctrl);
drivers/iio/accel/adxl345_core.c
604
ret = regmap_read(st->regmap, ADXL345_REG_INT_ENABLE, ®val);
drivers/iio/accel/adxl345_core.c
613
return adxl345_is_act_inact_ac(st, type);
drivers/iio/accel/adxl345_core.c
616
static int adxl345_set_act_inact_linkbit(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
623
act_en = adxl345_is_act_inact_en(st, ADXL345_ACTIVITY);
drivers/iio/accel/adxl345_core.c
627
act_ac_en = adxl345_is_act_inact_en(st, ADXL345_ACTIVITY_AC);
drivers/iio/accel/adxl345_core.c
634
inact_en = adxl345_is_act_inact_en(st, ADXL345_INACTIVITY);
drivers/iio/accel/adxl345_core.c
638
inact_ac_en = adxl345_is_act_inact_en(st, ADXL345_INACTIVITY_AC);
drivers/iio/accel/adxl345_core.c
647
return regmap_assign_bits(st->regmap, ADXL345_REG_POWER_CTL,
drivers/iio/accel/adxl345_core.c
652
static int adxl345_set_act_inact_en(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
664
ret = regmap_read(st->regmap,
drivers/iio/accel/adxl345_core.c
670
threshold = st->inact_threshold;
drivers/iio/accel/adxl345_core.c
678
ret = regmap_read(st->regmap,
drivers/iio/accel/adxl345_core.c
695
if (adxl345_is_act_inact_ac(st, type) <= 0)
drivers/iio/accel/adxl345_core.c
700
ret = adxl345_set_measure_en(st, false);
drivers/iio/accel/adxl345_core.c
721
ret = regmap_assign_bits(st->regmap, ADXL345_REG_ACT_INACT_CTRL,
drivers/iio/accel/adxl345_core.c
727
ret = adxl345_set_act_inact_ac(st, type, cmd_en);
drivers/iio/accel/adxl345_core.c
732
ret = regmap_assign_bits(st->regmap, ADXL345_REG_INT_ENABLE,
drivers/iio/accel/adxl345_core.c
738
ret = adxl345_set_act_inact_linkbit(st, type, cmd_en);
drivers/iio/accel/adxl345_core.c
742
return adxl345_set_measure_en(st, true);
drivers/iio/accel/adxl345_core.c
747
static int _adxl345_set_tap_int(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
759
ret = regmap_read(st->regmap, ADXL345_REG_TAP_AXIS, &axis_ctrl);
drivers/iio/accel/adxl345_core.c
765
ret = regmap_read(st->regmap, ADXL345_REG_THRESH_TAP, &tap_threshold);
drivers/iio/accel/adxl345_core.c
773
singletap_args_valid = tap_threshold > 0 && st->tap_duration_us > 0;
drivers/iio/accel/adxl345_core.c
779
doubletap_args_valid = st->tap_latent_us > 0 &&
drivers/iio/accel/adxl345_core.c
780
st->tap_window_us > 0 &&
drivers/iio/accel/adxl345_core.c
781
st->tap_window_us >= st->tap_latent_us;
drivers/iio/accel/adxl345_core.c
789
return regmap_update_bits(st->regmap, ADXL345_REG_INT_ENABLE,
drivers/iio/accel/adxl345_core.c
793
static int adxl345_is_tap_en(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
801
ret = regmap_read(st->regmap, ADXL345_REG_TAP_AXIS, &axis_ctrl);
drivers/iio/accel/adxl345_core.c
826
ret = regmap_read(st->regmap, ADXL345_REG_INT_ENABLE, ®val);
drivers/iio/accel/adxl345_core.c
836
static int adxl345_set_singletap_en(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
857
ret = regmap_set_bits(st->regmap, ADXL345_REG_TAP_AXIS,
drivers/iio/accel/adxl345_core.c
860
ret = regmap_clear_bits(st->regmap, ADXL345_REG_TAP_AXIS,
drivers/iio/accel/adxl345_core.c
865
return _adxl345_set_tap_int(st, ADXL345_SINGLE_TAP, en);
drivers/iio/accel/adxl345_core.c
868
static int adxl345_set_doubletap_en(struct adxl345_state *st, bool en)
drivers/iio/accel/adxl345_core.c
876
ret = regmap_assign_bits(st->regmap, ADXL345_REG_TAP_AXIS,
drivers/iio/accel/adxl345_core.c
881
return _adxl345_set_tap_int(st, ADXL345_DOUBLE_TAP, en);
drivers/iio/accel/adxl345_core.c
884
static int _adxl345_set_tap_time(struct adxl345_state *st,
drivers/iio/accel/adxl345_core.c
891
st->tap_window_us = val_us;
drivers/iio/accel/adxl345_core.c
894
st->tap_latent_us = val_us;
drivers/iio/accel/adxl345_core.c
897
st->tap_duration_us = val_us;
drivers/iio/accel/adxl345_core.c
910
return regmap_write(st->regmap, adxl345_tap_time_reg[type], regval);
drivers/iio/accel/adxl345_core.c
913
static int adxl345_set_tap_duration(struct adxl345_state *st, u32 val_int,
drivers/iio/accel/adxl345_core.c
924
return _adxl345_set_tap_time(st, ADXL345_TAP_TIME_DUR, val_fract_us);
drivers/iio/accel/adxl345_core.c
927
static int adxl345_set_tap_window(struct adxl345_state *st, u32 val_int,
drivers/iio/accel/adxl345_core.c
938
return _adxl345_set_tap_time(st, ADXL345_TAP_TIME_WINDOW, val_fract_us);
drivers/iio/accel/adxl345_core.c
941
static int adxl345_set_tap_latent(struct adxl345_state *st, u32 val_int,
drivers/iio/accel/adxl345_core.c
952
return _adxl345_set_tap_time(st, ADXL345_TAP_TIME_LATENT, val_fract_us);
drivers/iio/accel/adxl345_core.c
955
static int adxl345_find_odr(struct adxl345_state *st, int val,
drivers/iio/accel/adxl345_core.c
971
static int adxl345_set_odr(struct adxl345_state *st, enum adxl345_odr odr)
drivers/iio/accel/adxl345_core.c
975
ret = regmap_update_bits(st->regmap, ADXL345_REG_BW_RATE,
drivers/iio/accel/adxl345_core.c
982
return adxl345_set_inact_time(st, 0, 0);
drivers/iio/accel/adxl345_core.c
985
static int adxl345_find_range(struct adxl345_state *st, int val, int val2,
drivers/iio/accel/adxl367.c
1001
*val = st->inact_time_ms;
drivers/iio/accel/adxl367.c
1019
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
1028
return adxl367_set_act_threshold(st, ADXL367_ACTIVITY, val);
drivers/iio/accel/adxl367.c
1030
return adxl367_set_act_threshold(st, ADXL367_INACTIVITY, val);
drivers/iio/accel/adxl367.c
1041
return adxl367_set_act_time_ms(st, ADXL367_ACTIVITY, val);
drivers/iio/accel/adxl367.c
1043
return adxl367_set_act_time_ms(st, ADXL367_INACTIVITY, val);
drivers/iio/accel/adxl367.c
1057
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
1063
ret = adxl367_get_act_interrupt_en(st, ADXL367_ACTIVITY, &en);
drivers/iio/accel/adxl367.c
1066
ret = adxl367_get_act_interrupt_en(st, ADXL367_INACTIVITY, &en);
drivers/iio/accel/adxl367.c
1079
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
1094
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
1096
ret = adxl367_set_measure_en(st, false);
drivers/iio/accel/adxl367.c
1100
ret = adxl367_set_act_interrupt_en(st, act, state);
drivers/iio/accel/adxl367.c
1104
ret = adxl367_set_act_en(st, act, state ? ADCL367_ACT_REF_ENABLED
drivers/iio/accel/adxl367.c
1109
return adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
1132
struct adxl367_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/accel/adxl367.c
1136
ret = adxl367_get_fifo_mode(st, &fifo_mode);
drivers/iio/accel/adxl367.c
1147
struct adxl367_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/accel/adxl367.c
1150
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
1151
fifo_watermark = st->fifo_watermark;
drivers/iio/accel/adxl367.c
1174
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
1180
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
1182
ret = adxl367_set_measure_en(st, false);
drivers/iio/accel/adxl367.c
1186
ret = adxl367_set_fifo_watermark(st, val);
drivers/iio/accel/adxl367.c
1190
return adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
1214
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
1221
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
1223
ret = adxl367_set_measure_en(st, false);
drivers/iio/accel/adxl367.c
1227
ret = adxl367_set_fifo_format(st, fifo_format);
drivers/iio/accel/adxl367.c
1231
ret = adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
1235
st->fifo_set_size = bitmap_weight(active_scan_mask,
drivers/iio/accel/adxl367.c
1243
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
1246
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
1248
ret = adxl367_set_temp_adc_mask_en(st, indio_dev->active_scan_mask,
drivers/iio/accel/adxl367.c
1253
ret = adxl367_set_measure_en(st, false);
drivers/iio/accel/adxl367.c
1257
ret = adxl367_set_fifo_watermark_interrupt_en(st, true);
drivers/iio/accel/adxl367.c
1261
ret = adxl367_set_fifo_mode(st, ADXL367_FIFO_MODE_STREAM);
drivers/iio/accel/adxl367.c
1265
return adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
1270
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
1273
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
1275
ret = adxl367_set_measure_en(st, false);
drivers/iio/accel/adxl367.c
1279
ret = adxl367_set_fifo_mode(st, ADXL367_FIFO_MODE_DISABLED);
drivers/iio/accel/adxl367.c
1283
ret = adxl367_set_fifo_watermark_interrupt_en(st, false);
drivers/iio/accel/adxl367.c
1287
ret = adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
1291
return adxl367_set_temp_adc_mask_en(st, indio_dev->active_scan_mask,
drivers/iio/accel/adxl367.c
1379
static int adxl367_verify_devid(struct adxl367_state *st)
drivers/iio/accel/adxl367.c
1384
ret = regmap_read(st->regmap, ADXL367_REG_DEVID, &val);
drivers/iio/accel/adxl367.c
1386
return dev_err_probe(st->dev, ret, "Failed to read dev id\n");
drivers/iio/accel/adxl367.c
1389
return dev_err_probe(st->dev, -ENODEV,
drivers/iio/accel/adxl367.c
1396
static int adxl367_setup(struct adxl367_state *st)
drivers/iio/accel/adxl367.c
1400
ret = _adxl367_set_act_threshold(st, ADXL367_ACTIVITY,
drivers/iio/accel/adxl367.c
1405
ret = _adxl367_set_act_threshold(st, ADXL367_INACTIVITY,
drivers/iio/accel/adxl367.c
1410
ret = adxl367_set_act_proc_mode(st, ADXL367_LOOPED);
drivers/iio/accel/adxl367.c
1414
ret = _adxl367_set_odr(st, ADXL367_ODR_400HZ);
drivers/iio/accel/adxl367.c
1418
ret = _adxl367_set_act_time_ms(st, 10);
drivers/iio/accel/adxl367.c
1422
ret = _adxl367_set_inact_time_ms(st, 10000);
drivers/iio/accel/adxl367.c
1426
return adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
1434
struct adxl367_state *st;
drivers/iio/accel/adxl367.c
1437
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/accel/adxl367.c
1441
st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
1442
st->dev = dev;
drivers/iio/accel/adxl367.c
1443
st->regmap = regmap;
drivers/iio/accel/adxl367.c
1444
st->context = context;
drivers/iio/accel/adxl367.c
1445
st->ops = ops;
drivers/iio/accel/adxl367.c
1447
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/accel/adxl367.c
1458
ret = devm_regulator_bulk_get_enable(st->dev,
drivers/iio/accel/adxl367.c
1462
return dev_err_probe(st->dev, ret,
drivers/iio/accel/adxl367.c
1465
ret = regmap_write(st->regmap, ADXL367_REG_RESET, ADXL367_RESET_CODE);
drivers/iio/accel/adxl367.c
1471
ret = adxl367_verify_devid(st);
drivers/iio/accel/adxl367.c
1475
ret = adxl367_setup(st);
drivers/iio/accel/adxl367.c
1479
ret = devm_iio_kfifo_buffer_setup_ext(st->dev, indio_dev,
drivers/iio/accel/adxl367.c
1485
ret = devm_request_threaded_irq(st->dev, irq, NULL,
drivers/iio/accel/adxl367.c
1489
return dev_err_probe(st->dev, ret, "Failed to request irq\n");
drivers/iio/accel/adxl367.c
270
static int adxl367_set_measure_en(struct adxl367_state *st, bool en)
drivers/iio/accel/adxl367.c
276
ret = regmap_update_bits(st->regmap, ADXL367_REG_POWER_CTL,
drivers/iio/accel/adxl367.c
293
static void adxl367_scale_act_thresholds(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
297
st->act_threshold = st->act_threshold
drivers/iio/accel/adxl367.c
300
st->inact_threshold = st->inact_threshold
drivers/iio/accel/adxl367.c
305
static int _adxl367_set_act_threshold(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
315
st->act_threshold_buf[0] = FIELD_PREP(ADXL367_THRESH_H_MASK,
drivers/iio/accel/adxl367.c
318
st->act_threshold_buf[1] = FIELD_PREP(ADXL367_THRESH_L_MASK,
drivers/iio/accel/adxl367.c
322
ret = regmap_bulk_write(st->regmap, reg, st->act_threshold_buf,
drivers/iio/accel/adxl367.c
323
sizeof(st->act_threshold_buf));
drivers/iio/accel/adxl367.c
328
st->act_threshold = threshold;
drivers/iio/accel/adxl367.c
330
st->inact_threshold = threshold;
drivers/iio/accel/adxl367.c
335
static int adxl367_set_act_threshold(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
341
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
343
ret = adxl367_set_measure_en(st, false);
drivers/iio/accel/adxl367.c
347
ret = _adxl367_set_act_threshold(st, act, threshold);
drivers/iio/accel/adxl367.c
351
return adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
354
static int adxl367_set_act_proc_mode(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
357
return regmap_update_bits(st->regmap, ADXL367_REG_ACT_INACT_CTL,
drivers/iio/accel/adxl367.c
363
static int adxl367_set_act_interrupt_en(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
369
return regmap_update_bits(st->regmap, ADXL367_REG_INT1_MAP,
drivers/iio/accel/adxl367.c
373
static int adxl367_get_act_interrupt_en(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
381
ret = regmap_read(st->regmap, ADXL367_REG_INT1_MAP, &val);
drivers/iio/accel/adxl367.c
390
static int adxl367_set_act_en(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
396
return regmap_update_bits(st->regmap, ADXL367_REG_ACT_INACT_CTL,
drivers/iio/accel/adxl367.c
401
static int adxl367_set_fifo_watermark_interrupt_en(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
404
return regmap_update_bits(st->regmap, ADXL367_REG_INT1_MAP,
drivers/iio/accel/adxl367.c
409
static int adxl367_get_fifo_mode(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
415
ret = regmap_read(st->regmap, ADXL367_REG_FIFO_CTL, &val);
drivers/iio/accel/adxl367.c
424
static int adxl367_set_fifo_mode(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
427
return regmap_update_bits(st->regmap, ADXL367_REG_FIFO_CTL,
drivers/iio/accel/adxl367.c
433
static int adxl367_set_fifo_format(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
436
return regmap_update_bits(st->regmap, ADXL367_REG_FIFO_CTL,
drivers/iio/accel/adxl367.c
442
static int adxl367_set_fifo_watermark(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
445
unsigned int fifo_samples = fifo_watermark * st->fifo_set_size;
drivers/iio/accel/adxl367.c
452
fifo_samples /= st->fifo_set_size;
drivers/iio/accel/adxl367.c
461
ret = regmap_update_bits(st->regmap, ADXL367_REG_FIFO_CTL,
drivers/iio/accel/adxl367.c
466
ret = regmap_update_bits(st->regmap, ADXL367_REG_FIFO_SAMPLES,
drivers/iio/accel/adxl367.c
471
st->fifo_watermark = fifo_watermark;
drivers/iio/accel/adxl367.c
479
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
482
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
484
ret = adxl367_set_measure_en(st, false);
drivers/iio/accel/adxl367.c
488
ret = regmap_update_bits(st->regmap, ADXL367_REG_FILTER_CTL,
drivers/iio/accel/adxl367.c
495
adxl367_scale_act_thresholds(st, st->range, range);
drivers/iio/accel/adxl367.c
498
ret = _adxl367_set_act_threshold(st, ADXL367_ACTIVITY,
drivers/iio/accel/adxl367.c
499
st->act_threshold);
drivers/iio/accel/adxl367.c
503
ret = _adxl367_set_act_threshold(st, ADXL367_INACTIVITY,
drivers/iio/accel/adxl367.c
504
st->inact_threshold);
drivers/iio/accel/adxl367.c
508
ret = adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
512
st->range = range;
drivers/iio/accel/adxl367.c
517
static int adxl367_time_ms_to_samples(struct adxl367_state *st, unsigned int ms)
drivers/iio/accel/adxl367.c
519
int freq_hz = adxl367_samp_freq_tbl[st->odr][0];
drivers/iio/accel/adxl367.c
520
int freq_microhz = adxl367_samp_freq_tbl[st->odr][1];
drivers/iio/accel/adxl367.c
527
static int _adxl367_set_act_time_ms(struct adxl367_state *st, unsigned int ms)
drivers/iio/accel/adxl367.c
529
unsigned int val = adxl367_time_ms_to_samples(st, ms);
drivers/iio/accel/adxl367.c
535
ret = regmap_write(st->regmap, ADXL367_REG_TIME_ACT, val);
drivers/iio/accel/adxl367.c
539
st->act_time_ms = ms;
drivers/iio/accel/adxl367.c
544
static int _adxl367_set_inact_time_ms(struct adxl367_state *st, unsigned int ms)
drivers/iio/accel/adxl367.c
546
unsigned int val = adxl367_time_ms_to_samples(st, ms);
drivers/iio/accel/adxl367.c
552
st->inact_time_buf[0] = FIELD_PREP(ADXL367_TIME_INACT_H_MASK,
drivers/iio/accel/adxl367.c
555
st->inact_time_buf[1] = FIELD_PREP(ADXL367_TIME_INACT_L_MASK,
drivers/iio/accel/adxl367.c
559
ret = regmap_bulk_write(st->regmap, ADXL367_REG_TIME_INACT_H,
drivers/iio/accel/adxl367.c
560
st->inact_time_buf, sizeof(st->inact_time_buf));
drivers/iio/accel/adxl367.c
564
st->inact_time_ms = ms;
drivers/iio/accel/adxl367.c
569
static int adxl367_set_act_time_ms(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
575
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
577
ret = adxl367_set_measure_en(st, false);
drivers/iio/accel/adxl367.c
582
ret = _adxl367_set_act_time_ms(st, ms);
drivers/iio/accel/adxl367.c
584
ret = _adxl367_set_inact_time_ms(st, ms);
drivers/iio/accel/adxl367.c
589
return adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
592
static int _adxl367_set_odr(struct adxl367_state *st, enum adxl367_odr odr)
drivers/iio/accel/adxl367.c
596
ret = regmap_update_bits(st->regmap, ADXL367_REG_FILTER_CTL,
drivers/iio/accel/adxl367.c
603
st->odr = odr;
drivers/iio/accel/adxl367.c
606
ret = _adxl367_set_act_time_ms(st, st->act_time_ms);
drivers/iio/accel/adxl367.c
610
return _adxl367_set_inact_time_ms(st, st->inact_time_ms);
drivers/iio/accel/adxl367.c
615
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
618
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
620
ret = adxl367_set_measure_en(st, false);
drivers/iio/accel/adxl367.c
624
ret = _adxl367_set_odr(st, odr);
drivers/iio/accel/adxl367.c
628
return adxl367_set_measure_en(st, true);
drivers/iio/accel/adxl367.c
631
static int adxl367_set_temp_adc_en(struct adxl367_state *st, unsigned int reg,
drivers/iio/accel/adxl367.c
634
return regmap_update_bits(st->regmap, reg, ADXL367_ADC_EN_MASK,
drivers/iio/accel/adxl367.c
638
static int adxl367_set_temp_adc_reg_en(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
645
ret = adxl367_set_temp_adc_en(st, ADXL367_REG_TEMP_CTL, en);
drivers/iio/accel/adxl367.c
648
ret = adxl367_set_temp_adc_en(st, ADXL367_REG_ADC_CTL, en);
drivers/iio/accel/adxl367.c
663
static int adxl367_set_temp_adc_mask_en(struct adxl367_state *st,
drivers/iio/accel/adxl367.c
668
return adxl367_set_temp_adc_en(st, ADXL367_REG_TEMP_CTL, en);
drivers/iio/accel/adxl367.c
670
return adxl367_set_temp_adc_en(st, ADXL367_REG_ADC_CTL, en);
drivers/iio/accel/adxl367.c
675
static int adxl367_find_odr(struct adxl367_state *st, int val, int val2,
drivers/iio/accel/adxl367.c
694
static int adxl367_find_range(struct adxl367_state *st, int val, int val2,
drivers/iio/accel/adxl367.c
717
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
721
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
723
ret = adxl367_set_temp_adc_reg_en(st, chan->address, true);
drivers/iio/accel/adxl367.c
727
ret = regmap_bulk_read(st->regmap, chan->address, &st->sample_buf,
drivers/iio/accel/adxl367.c
728
sizeof(st->sample_buf));
drivers/iio/accel/adxl367.c
732
sample = FIELD_GET(ADXL367_DATA_MASK, be16_to_cpu(st->sample_buf));
drivers/iio/accel/adxl367.c
735
ret = adxl367_set_temp_adc_reg_en(st, chan->address, false);
drivers/iio/accel/adxl367.c
742
static int adxl367_get_status(struct adxl367_state *st, u8 *status,
drivers/iio/accel/adxl367.c
748
ret = regmap_bulk_read(st->regmap, ADXL367_REG_STATUS,
drivers/iio/accel/adxl367.c
749
st->status_buf, sizeof(st->status_buf));
drivers/iio/accel/adxl367.c
753
st->status_buf[2] &= ADXL367_FIFO_ENT_H_MASK;
drivers/iio/accel/adxl367.c
755
*status = st->status_buf[0];
drivers/iio/accel/adxl367.c
756
*fifo_entries = get_unaligned_le16(&st->status_buf[1]);
drivers/iio/accel/adxl367.c
783
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
790
fifo_entries -= fifo_entries % st->fifo_set_size;
drivers/iio/accel/adxl367.c
792
ret = st->ops->read_fifo(st->context, st->fifo_buf, fifo_entries);
drivers/iio/accel/adxl367.c
794
dev_err(st->dev, "Failed to read FIFO: %d\n", ret);
drivers/iio/accel/adxl367.c
798
for (i = 0; i < fifo_entries; i += st->fifo_set_size)
drivers/iio/accel/adxl367.c
799
iio_push_to_buffers(indio_dev, &st->fifo_buf[i]);
drivers/iio/accel/adxl367.c
807
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
813
ret = adxl367_get_status(st, &status, &fifo_entries);
drivers/iio/accel/adxl367.c
828
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
831
return regmap_read(st->regmap, reg, readval);
drivers/iio/accel/adxl367.c
833
return regmap_write(st->regmap, reg, writeval);
drivers/iio/accel/adxl367.c
840
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
853
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
854
*val = adxl367_range_scale_tbl[st->range][0];
drivers/iio/accel/adxl367.c
855
*val2 = adxl367_range_scale_tbl[st->range][1];
drivers/iio/accel/adxl367.c
881
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
882
*val = adxl367_samp_freq_tbl[st->odr][0];
drivers/iio/accel/adxl367.c
883
*val2 = adxl367_samp_freq_tbl[st->odr][1];
drivers/iio/accel/adxl367.c
895
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
902
ret = adxl367_find_odr(st, val, val2, &odr);
drivers/iio/accel/adxl367.c
916
ret = adxl367_find_range(st, val, val2, &range);
drivers/iio/accel/adxl367.c
978
struct adxl367_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl367.c
980
guard(mutex)(&st->lock);
drivers/iio/accel/adxl367.c
985
*val = st->act_threshold;
drivers/iio/accel/adxl367.c
988
*val = st->inact_threshold;
drivers/iio/accel/adxl367.c
997
*val = st->act_time_ms;
drivers/iio/accel/adxl367_i2c.c
27
struct adxl367_i2c_state *st = context;
drivers/iio/accel/adxl367_i2c.c
29
return regmap_noinc_read(st->regmap, ADXL367_I2C_FIFO_DATA, fifo_buf,
drivers/iio/accel/adxl367_i2c.c
45
struct adxl367_i2c_state *st;
drivers/iio/accel/adxl367_i2c.c
48
st = devm_kzalloc(&client->dev, sizeof(*st), GFP_KERNEL);
drivers/iio/accel/adxl367_i2c.c
49
if (!st)
drivers/iio/accel/adxl367_i2c.c
56
st->regmap = regmap;
drivers/iio/accel/adxl367_i2c.c
58
return adxl367_probe(&client->dev, &adxl367_i2c_ops, st, regmap,
drivers/iio/accel/adxl367_spi.c
104
st->reg_write_tx_buf[0] = ADXL367_SPI_WRITE_COMMAND;
drivers/iio/accel/adxl367_spi.c
105
st->reg_write_xfer[0].tx_buf = st->reg_write_tx_buf;
drivers/iio/accel/adxl367_spi.c
106
st->reg_write_xfer[0].len = sizeof(st->reg_write_tx_buf);
drivers/iio/accel/adxl367_spi.c
107
spi_message_init_with_transfers(&st->reg_write_msg,
drivers/iio/accel/adxl367_spi.c
108
st->reg_write_xfer, 2);
drivers/iio/accel/adxl367_spi.c
115
st->reg_read_tx_buf[0] = ADXL367_SPI_READ_COMMAND;
drivers/iio/accel/adxl367_spi.c
116
st->reg_read_xfer[0].tx_buf = st->reg_read_tx_buf;
drivers/iio/accel/adxl367_spi.c
117
st->reg_read_xfer[0].len = sizeof(st->reg_read_tx_buf);
drivers/iio/accel/adxl367_spi.c
118
spi_message_init_with_transfers(&st->reg_read_msg,
drivers/iio/accel/adxl367_spi.c
119
st->reg_read_xfer, 2);
drivers/iio/accel/adxl367_spi.c
126
st->fifo_tx_buf[0] = ADXL367_SPI_FIFO_COMMAND;
drivers/iio/accel/adxl367_spi.c
127
st->fifo_xfer[0].tx_buf = st->fifo_tx_buf;
drivers/iio/accel/adxl367_spi.c
128
st->fifo_xfer[0].len = sizeof(st->fifo_tx_buf);
drivers/iio/accel/adxl367_spi.c
129
spi_message_init_with_transfers(&st->fifo_msg, st->fifo_xfer, 2);
drivers/iio/accel/adxl367_spi.c
131
regmap = devm_regmap_init(&spi->dev, &adxl367_spi_regmap_bus, st,
drivers/iio/accel/adxl367_spi.c
136
return adxl367_probe(&spi->dev, &adxl367_spi_ops, st, regmap, spi->irq);
drivers/iio/accel/adxl367_spi.c
43
struct adxl367_spi_state *st = context;
drivers/iio/accel/adxl367_spi.c
45
st->fifo_xfer[1].rx_buf = fifo_buf;
drivers/iio/accel/adxl367_spi.c
46
st->fifo_xfer[1].len = fifo_entries * sizeof(*fifo_buf);
drivers/iio/accel/adxl367_spi.c
48
return spi_sync(st->spi, &st->fifo_msg);
drivers/iio/accel/adxl367_spi.c
54
struct adxl367_spi_state *st = context;
drivers/iio/accel/adxl367_spi.c
57
st->reg_read_tx_buf[1] = reg;
drivers/iio/accel/adxl367_spi.c
58
st->reg_read_xfer[1].rx_buf = val_buf;
drivers/iio/accel/adxl367_spi.c
59
st->reg_read_xfer[1].len = val_size;
drivers/iio/accel/adxl367_spi.c
61
return spi_sync(st->spi, &st->reg_read_msg);
drivers/iio/accel/adxl367_spi.c
66
struct adxl367_spi_state *st = context;
drivers/iio/accel/adxl367_spi.c
68
st->reg_write_xfer[1].tx_buf = val_buf;
drivers/iio/accel/adxl367_spi.c
69
st->reg_write_xfer[1].len = val_size;
drivers/iio/accel/adxl367_spi.c
71
return spi_sync(st->spi, &st->reg_write_msg);
drivers/iio/accel/adxl367_spi.c
90
struct adxl367_spi_state *st;
drivers/iio/accel/adxl367_spi.c
93
st = devm_kzalloc(&spi->dev, sizeof(*st), GFP_KERNEL);
drivers/iio/accel/adxl367_spi.c
94
if (!st)
drivers/iio/accel/adxl367_spi.c
97
st->spi = spi;
drivers/iio/accel/adxl372.c
1003
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1007
set_mask_bits(&st->int1_bitmask, ADXL372_INT1_MAP_ACT_MSK,
drivers/iio/accel/adxl372.c
1011
set_mask_bits(&st->int1_bitmask, ADXL372_INT1_MAP_INACT_MSK,
drivers/iio/accel/adxl372.c
1018
return adxl372_set_interrupts(st, st->int1_bitmask, 0);
drivers/iio/accel/adxl372.c
1026
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1028
return sprintf(buf, "%d\n", st->fifo_mode);
drivers/iio/accel/adxl372.c
1036
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1038
return sprintf(buf, "%d\n", st->watermark);
drivers/iio/accel/adxl372.c
1059
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1064
st->watermark = val;
drivers/iio/accel/adxl372.c
1071
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1075
st->int1_bitmask |= ADXL372_INT1_MAP_FIFO_FULL_MSK;
drivers/iio/accel/adxl372.c
1076
ret = adxl372_set_interrupts(st, st->int1_bitmask, 0);
drivers/iio/accel/adxl372.c
1090
st->fifo_format = adxl372_axis_lookup_table[i].fifo_format;
drivers/iio/accel/adxl372.c
1091
st->fifo_axis_mask = adxl372_axis_lookup_table[i].bits;
drivers/iio/accel/adxl372.c
1092
st->fifo_set_size = bitmap_weight(indio_dev->active_scan_mask,
drivers/iio/accel/adxl372.c
1096
if (st->peak_fifo_mode_en) {
drivers/iio/accel/adxl372.c
1097
st->fifo_set_size = 3;
drivers/iio/accel/adxl372.c
1098
st->fifo_format = ADXL372_XYZ_PEAK_FIFO;
drivers/iio/accel/adxl372.c
1108
if ((st->watermark * st->fifo_set_size) > ADXL372_FIFO_SIZE)
drivers/iio/accel/adxl372.c
1109
st->watermark = (ADXL372_FIFO_SIZE / st->fifo_set_size);
drivers/iio/accel/adxl372.c
1111
st->fifo_mode = ADXL372_FIFO_STREAMED;
drivers/iio/accel/adxl372.c
1113
ret = adxl372_configure_fifo(st);
drivers/iio/accel/adxl372.c
1115
st->fifo_mode = ADXL372_FIFO_BYPASSED;
drivers/iio/accel/adxl372.c
1116
st->int1_bitmask &= ~ADXL372_INT1_MAP_FIFO_FULL_MSK;
drivers/iio/accel/adxl372.c
1117
adxl372_set_interrupts(st, st->int1_bitmask, 0);
drivers/iio/accel/adxl372.c
1126
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1128
st->int1_bitmask &= ~ADXL372_INT1_MAP_FIFO_FULL_MSK;
drivers/iio/accel/adxl372.c
1129
adxl372_set_interrupts(st, st->int1_bitmask, 0);
drivers/iio/accel/adxl372.c
1130
st->fifo_mode = ADXL372_FIFO_BYPASSED;
drivers/iio/accel/adxl372.c
1131
adxl372_configure_fifo(st);
drivers/iio/accel/adxl372.c
1145
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1148
st->int1_bitmask |= ADXL372_INT1_MAP_FIFO_FULL_MSK;
drivers/iio/accel/adxl372.c
1150
return adxl372_set_interrupts(st, st->int1_bitmask, 0);
drivers/iio/accel/adxl372.c
1156
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1158
if (st->dready_trig != trig && st->peak_datardy_trig != trig)
drivers/iio/accel/adxl372.c
1173
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1176
st->int1_bitmask |= ADXL372_INT1_MAP_FIFO_FULL_MSK;
drivers/iio/accel/adxl372.c
1178
st->peak_fifo_mode_en = state;
drivers/iio/accel/adxl372.c
1180
return adxl372_set_interrupts(st, st->int1_bitmask, 0);
drivers/iio/accel/adxl372.c
1193
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1197
*vals = st->chip_info->samp_freq_tbl;
drivers/iio/accel/adxl372.c
1199
*length = st->chip_info->num_freqs;
drivers/iio/accel/adxl372.c
1202
*vals = st->chip_info->bw_freq_tbl;
drivers/iio/accel/adxl372.c
1208
*length = st->odr + 1;
drivers/iio/accel/adxl372.c
1236
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1237
struct device *dev = st->dev;
drivers/iio/accel/adxl372.c
1248
if (!st->irq)
drivers/iio/accel/adxl372.c
1251
st->dready_trig = devm_iio_trigger_alloc(dev, "%s-dev%d",
drivers/iio/accel/adxl372.c
1254
if (!st->dready_trig)
drivers/iio/accel/adxl372.c
1257
st->peak_datardy_trig = devm_iio_trigger_alloc(dev, "%s-dev%d-peak",
drivers/iio/accel/adxl372.c
1260
if (!st->peak_datardy_trig)
drivers/iio/accel/adxl372.c
1263
st->dready_trig->ops = &adxl372_trigger_ops;
drivers/iio/accel/adxl372.c
1264
st->peak_datardy_trig->ops = &adxl372_peak_data_trigger_ops;
drivers/iio/accel/adxl372.c
1265
iio_trigger_set_drvdata(st->dready_trig, indio_dev);
drivers/iio/accel/adxl372.c
1266
iio_trigger_set_drvdata(st->peak_datardy_trig, indio_dev);
drivers/iio/accel/adxl372.c
1267
ret = devm_iio_trigger_register(dev, st->dready_trig);
drivers/iio/accel/adxl372.c
1271
ret = devm_iio_trigger_register(dev, st->peak_datardy_trig);
drivers/iio/accel/adxl372.c
1275
indio_dev->trig = iio_trigger_get(st->dready_trig);
drivers/iio/accel/adxl372.c
1277
return devm_request_irq(dev, st->irq,
drivers/iio/accel/adxl372.c
1280
indio_dev->name, st->dready_trig);
drivers/iio/accel/adxl372.c
1287
struct adxl372_state *st;
drivers/iio/accel/adxl372.c
1290
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/accel/adxl372.c
1294
st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
1297
st->dev = dev;
drivers/iio/accel/adxl372.c
1298
st->regmap = regmap;
drivers/iio/accel/adxl372.c
1299
st->irq = irq;
drivers/iio/accel/adxl372.c
1300
st->chip_info = chip_info;
drivers/iio/accel/adxl372.c
1302
ret = devm_mutex_init(dev, &st->threshold_m);
drivers/iio/accel/adxl372.c
1318
ret = adxl372_setup(st);
drivers/iio/accel/adxl372.c
385
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
390
ret = regmap_bulk_read(st->regmap, addr, &raw_regval, sizeof(raw_regval));
drivers/iio/accel/adxl372.c
405
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
408
guard(mutex)(&st->threshold_m);
drivers/iio/accel/adxl372.c
410
ret = regmap_write(st->regmap, addr, ADXL372_THRESH_VAL_H_SEL(threshold));
drivers/iio/accel/adxl372.c
414
return regmap_update_bits(st->regmap, addr + 1, GENMASK(7, 5),
drivers/iio/accel/adxl372.c
418
static int adxl372_read_axis(struct adxl372_state *st, u8 addr)
drivers/iio/accel/adxl372.c
423
ret = regmap_bulk_read(st->regmap, addr, ®val, sizeof(regval));
drivers/iio/accel/adxl372.c
430
static int adxl372_set_op_mode(struct adxl372_state *st,
drivers/iio/accel/adxl372.c
435
ret = regmap_update_bits(st->regmap, ADXL372_POWER_CTL,
drivers/iio/accel/adxl372.c
441
st->op_mode = op_mode;
drivers/iio/accel/adxl372.c
446
static int adxl372_set_odr(struct adxl372_state *st,
drivers/iio/accel/adxl372.c
451
ret = regmap_update_bits(st->regmap, ADXL372_TIMING,
drivers/iio/accel/adxl372.c
457
st->odr = odr;
drivers/iio/accel/adxl372.c
475
static int adxl372_set_bandwidth(struct adxl372_state *st,
drivers/iio/accel/adxl372.c
480
ret = regmap_update_bits(st->regmap, ADXL372_MEASURE,
drivers/iio/accel/adxl372.c
486
st->bw = bw;
drivers/iio/accel/adxl372.c
491
static int adxl372_set_act_proc_mode(struct adxl372_state *st,
drivers/iio/accel/adxl372.c
496
ret = regmap_update_bits(st->regmap,
drivers/iio/accel/adxl372.c
503
st->act_proc_mode = mode;
drivers/iio/accel/adxl372.c
508
static int adxl372_set_activity_threshold(struct adxl372_state *st,
drivers/iio/accel/adxl372.c
528
return regmap_bulk_write(st->regmap, th_reg_high_addr,
drivers/iio/accel/adxl372.c
532
static int adxl372_set_activity_time_ms(struct adxl372_state *st,
drivers/iio/accel/adxl372.c
543
if (st->odr == st->chip_info->max_odr)
drivers/iio/accel/adxl372.c
544
scale_factor = st->chip_info->act_time_scale_us;
drivers/iio/accel/adxl372.c
546
scale_factor = st->chip_info->act_time_scale_low_us;
drivers/iio/accel/adxl372.c
554
ret = regmap_write(st->regmap, ADXL372_TIME_ACT, reg_val);
drivers/iio/accel/adxl372.c
558
st->act_time_ms = act_time_ms;
drivers/iio/accel/adxl372.c
563
static int adxl372_set_inactivity_time_ms(struct adxl372_state *st,
drivers/iio/accel/adxl372.c
574
if (st->odr == st->chip_info->max_odr)
drivers/iio/accel/adxl372.c
575
scale_factor = st->chip_info->inact_time_scale_ms;
drivers/iio/accel/adxl372.c
577
scale_factor = st->chip_info->inact_time_scale_low_ms;
drivers/iio/accel/adxl372.c
583
ret = regmap_write(st->regmap, ADXL372_TIME_INACT_H, reg_val_h);
drivers/iio/accel/adxl372.c
587
ret = regmap_write(st->regmap, ADXL372_TIME_INACT_L, reg_val_l);
drivers/iio/accel/adxl372.c
591
st->inact_time_ms = inact_time_ms;
drivers/iio/accel/adxl372.c
596
static int adxl372_set_interrupts(struct adxl372_state *st,
drivers/iio/accel/adxl372.c
602
ret = regmap_write(st->regmap, ADXL372_INT1_MAP, int1_bitmask);
drivers/iio/accel/adxl372.c
606
return regmap_write(st->regmap, ADXL372_INT2_MAP, int2_bitmask);
drivers/iio/accel/adxl372.c
609
static int adxl372_configure_fifo(struct adxl372_state *st)
drivers/iio/accel/adxl372.c
615
ret = adxl372_set_op_mode(st, ADXL372_STANDBY);
drivers/iio/accel/adxl372.c
623
fifo_samples = (st->watermark * st->fifo_set_size);
drivers/iio/accel/adxl372.c
624
fifo_ctl = ADXL372_FIFO_CTL_FORMAT_MODE(st->fifo_format) |
drivers/iio/accel/adxl372.c
625
ADXL372_FIFO_CTL_MODE_MODE(st->fifo_mode) |
drivers/iio/accel/adxl372.c
628
ret = regmap_write(st->regmap,
drivers/iio/accel/adxl372.c
633
ret = regmap_write(st->regmap, ADXL372_FIFO_CTL, fifo_ctl);
drivers/iio/accel/adxl372.c
637
return adxl372_set_op_mode(st, ADXL372_FULL_BW_MEASUREMENT);
drivers/iio/accel/adxl372.c
640
static int adxl372_get_status(struct adxl372_state *st,
drivers/iio/accel/adxl372.c
649
ret = regmap_bulk_read(st->regmap, ADXL372_STATUS_1,
drivers/iio/accel/adxl372.c
667
static void adxl372_arrange_axis_data(struct adxl372_state *st, __be16 *sample)
drivers/iio/accel/adxl372.c
672
if (ADXL372_X_AXIS_EN(st->fifo_axis_mask))
drivers/iio/accel/adxl372.c
674
if (ADXL372_Y_AXIS_EN(st->fifo_axis_mask))
drivers/iio/accel/adxl372.c
676
if (ADXL372_Z_AXIS_EN(st->fifo_axis_mask))
drivers/iio/accel/adxl372.c
703
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
708
ret = adxl372_get_status(st, &status1, &status2, &fifo_entries);
drivers/iio/accel/adxl372.c
714
if (st->fifo_mode != ADXL372_FIFO_BYPASSED &&
drivers/iio/accel/adxl372.c
722
fifo_entries -= st->fifo_set_size;
drivers/iio/accel/adxl372.c
725
ret = regmap_noinc_read(st->regmap, ADXL372_FIFO_DATA,
drivers/iio/accel/adxl372.c
726
st->fifo_buf,
drivers/iio/accel/adxl372.c
732
for (i = 0; i < fifo_entries; i += st->fifo_set_size) {
drivers/iio/accel/adxl372.c
734
if (st->peak_fifo_mode_en)
drivers/iio/accel/adxl372.c
735
adxl372_arrange_axis_data(st, &st->fifo_buf[i]);
drivers/iio/accel/adxl372.c
736
iio_push_to_buffers(indio_dev, &st->fifo_buf[i]);
drivers/iio/accel/adxl372.c
744
static int adxl372_setup(struct adxl372_state *st)
drivers/iio/accel/adxl372.c
749
ret = regmap_read(st->regmap, ADXL372_DEVID, ®val);
drivers/iio/accel/adxl372.c
754
dev_err(st->dev, "Invalid chip id %x\n", regval);
drivers/iio/accel/adxl372.c
762
ret = regmap_write(st->regmap, ADXL372_RESET, ADXL372_RESET_CODE);
drivers/iio/accel/adxl372.c
766
ret = adxl372_set_op_mode(st, ADXL372_STANDBY);
drivers/iio/accel/adxl372.c
771
ret = adxl372_set_activity_threshold(st, ADXL372_ACTIVITY,
drivers/iio/accel/adxl372.c
777
ret = adxl372_set_activity_threshold(st, ADXL372_INACTIVITY,
drivers/iio/accel/adxl372.c
783
ret = adxl372_set_act_proc_mode(st, ADXL372_LOOPED);
drivers/iio/accel/adxl372.c
787
ret = adxl372_set_odr(st, st->chip_info->max_odr);
drivers/iio/accel/adxl372.c
791
ret = adxl372_set_bandwidth(st, ADXL372_BW_3200HZ);
drivers/iio/accel/adxl372.c
796
ret = adxl372_set_activity_time_ms(st, 1);
drivers/iio/accel/adxl372.c
801
ret = adxl372_set_inactivity_time_ms(st, 10000);
drivers/iio/accel/adxl372.c
806
return adxl372_set_op_mode(st, ADXL372_FULL_BW_MEASUREMENT);
drivers/iio/accel/adxl372.c
814
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
817
return regmap_read(st->regmap, reg, readval);
drivers/iio/accel/adxl372.c
819
return regmap_write(st->regmap, reg, writeval);
drivers/iio/accel/adxl372.c
826
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
834
ret = adxl372_read_axis(st, chan->address);
drivers/iio/accel/adxl372.c
847
*val = st->chip_info->samp_freq_tbl[st->odr];
drivers/iio/accel/adxl372.c
850
*val = st->chip_info->bw_freq_tbl[st->bw];
drivers/iio/accel/adxl372.c
861
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
866
odr_index = adxl372_find_closest_match(st->chip_info->samp_freq_tbl,
drivers/iio/accel/adxl372.c
867
st->chip_info->num_freqs,
drivers/iio/accel/adxl372.c
869
ret = adxl372_set_odr(st, odr_index);
drivers/iio/accel/adxl372.c
873
ret = adxl372_set_activity_time_ms(st, st->act_time_ms);
drivers/iio/accel/adxl372.c
877
ret = adxl372_set_inactivity_time_ms(st, st->inact_time_ms);
drivers/iio/accel/adxl372.c
884
if (st->bw > odr_index)
drivers/iio/accel/adxl372.c
885
ret = adxl372_set_bandwidth(st, odr_index);
drivers/iio/accel/adxl372.c
889
bw_index = adxl372_find_closest_match(st->chip_info->bw_freq_tbl,
drivers/iio/accel/adxl372.c
890
st->chip_info->num_freqs,
drivers/iio/accel/adxl372.c
892
return adxl372_set_bandwidth(st, bw_index);
drivers/iio/accel/adxl372.c
902
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
932
*val = st->act_time_ms;
drivers/iio/accel/adxl372.c
936
*val = st->inact_time_ms;
drivers/iio/accel/adxl372.c
951
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
973
return adxl372_set_activity_time_ms(st, val_ms);
drivers/iio/accel/adxl372.c
975
return adxl372_set_inactivity_time_ms(st, val_ms);
drivers/iio/accel/adxl372.c
987
struct adxl372_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl372.c
991
return FIELD_GET(ADXL372_INT1_MAP_ACT_MSK, st->int1_bitmask);
drivers/iio/accel/adxl372.c
993
return FIELD_GET(ADXL372_INT1_MAP_INACT_MSK, st->int1_bitmask);
drivers/iio/accel/adxl380.c
1006
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
1008
ret = regmap_read(st->regmap, ADXL380_X_DSM_OFFSET_REG + chan_addr, ®_val);
drivers/iio/accel/adxl380.c
1036
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1038
return sysfs_emit(buf, "%d\n", st->watermark);
drivers/iio/accel/adxl380.c
1046
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1050
ret = regmap_read(st->regmap, ADXL380_DIG_EN_REG, ®_val);
drivers/iio/accel/adxl380.c
1075
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1079
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
1081
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
1085
ret = regmap_update_bits(st->regmap,
drivers/iio/accel/adxl380.c
1086
st->int_map[0],
drivers/iio/accel/adxl380.c
1093
ret = regmap_update_bits(st->regmap, ADXL380_DIG_EN_REG,
drivers/iio/accel/adxl380.c
1100
st->fifo_set_size = bitmap_weight(indio_dev->active_scan_mask,
drivers/iio/accel/adxl380.c
1103
if ((st->watermark * st->fifo_set_size) > ADXL380_FIFO_SAMPLES)
drivers/iio/accel/adxl380.c
1104
st->watermark = (ADXL380_FIFO_SAMPLES / st->fifo_set_size);
drivers/iio/accel/adxl380.c
1106
ret = adxl380_set_fifo_samples(st);
drivers/iio/accel/adxl380.c
1110
ret = regmap_update_bits(st->regmap, ADXL380_DIG_EN_REG, ADXL380_FIFO_EN_MSK,
drivers/iio/accel/adxl380.c
1115
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
1120
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1123
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
1125
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
1129
ret = regmap_update_bits(st->regmap,
drivers/iio/accel/adxl380.c
1130
st->int_map[0],
drivers/iio/accel/adxl380.c
1137
ret = regmap_update_bits(st->regmap, ADXL380_DIG_EN_REG,
drivers/iio/accel/adxl380.c
1144
ret = regmap_update_bits(st->regmap, ADXL380_DIG_EN_REG, ADXL380_FIFO_EN_MSK,
drivers/iio/accel/adxl380.c
1149
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
1157
static int adxl380_samp_freq_avail(struct adxl380_state *st, const int **vals,
drivers/iio/accel/adxl380.c
1163
if (!st->chip_info->has_low_power) {
drivers/iio/accel/adxl380.c
1164
*vals = st->chip_info->samp_freq_tbl + ADXL380_ODR_DSM;
drivers/iio/accel/adxl380.c
1169
ret = adxl380_act_inact_enabled(st, &act_inact_enabled);
drivers/iio/accel/adxl380.c
1177
*vals = st->chip_info->samp_freq_tbl;
drivers/iio/accel/adxl380.c
1187
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1195
ret = adxl380_read_chn(st, chan->address);
drivers/iio/accel/adxl380.c
1206
scoped_guard(mutex, &st->lock) {
drivers/iio/accel/adxl380.c
1207
*val = st->chip_info->scale_tbl[st->range][0];
drivers/iio/accel/adxl380.c
1208
*val2 = st->chip_info->scale_tbl[st->range][1];
drivers/iio/accel/adxl380.c
1222
*val = st->chip_info->temp_offset;
drivers/iio/accel/adxl380.c
1230
ret = adxl380_read_calibbias_value(st, chan->scan_index, val);
drivers/iio/accel/adxl380.c
1238
ret = adxl380_get_odr(st, val);
drivers/iio/accel/adxl380.c
1243
ret = adxl380_get_lpf(st, val);
drivers/iio/accel/adxl380.c
1248
ret = adxl380_get_hpf(st, val, val2);
drivers/iio/accel/adxl380.c
1262
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1270
*vals = (const int *)st->chip_info->scale_tbl;
drivers/iio/accel/adxl380.c
1272
*length = ARRAY_SIZE(st->chip_info->scale_tbl) * 2;
drivers/iio/accel/adxl380.c
1275
ret = adxl380_samp_freq_avail(st, vals, length);
drivers/iio/accel/adxl380.c
1282
*vals = (const int *)st->lpf_tbl;
drivers/iio/accel/adxl380.c
1284
*length = ARRAY_SIZE(st->lpf_tbl);
drivers/iio/accel/adxl380.c
1287
*vals = (const int *)st->hpf_tbl;
drivers/iio/accel/adxl380.c
1290
*length = ARRAY_SIZE(st->hpf_tbl) * 2;
drivers/iio/accel/adxl380.c
1301
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1307
ret = adxl380_samp_freq_avail(st, &freq_vals, &freq_count);
drivers/iio/accel/adxl380.c
1313
return adxl380_set_odr(st, odr_index);
drivers/iio/accel/adxl380.c
1315
return adxl380_write_calibbias_value(st, chan->scan_index, val);
drivers/iio/accel/adxl380.c
1317
lpf_index = adxl380_find_match_1d_tbl(st->lpf_tbl,
drivers/iio/accel/adxl380.c
1318
ARRAY_SIZE(st->lpf_tbl),
drivers/iio/accel/adxl380.c
1320
return adxl380_set_lpf(st, lpf_index);
drivers/iio/accel/adxl380.c
1322
hpf_index = adxl380_find_match_2d_tbl(st->hpf_tbl,
drivers/iio/accel/adxl380.c
1323
ARRAY_SIZE(st->hpf_tbl),
drivers/iio/accel/adxl380.c
1327
return adxl380_set_hpf(st, hpf_index);
drivers/iio/accel/adxl380.c
1329
range_index = adxl380_find_match_2d_tbl(st->chip_info->scale_tbl,
drivers/iio/accel/adxl380.c
1330
ARRAY_SIZE(st->chip_info->scale_tbl),
drivers/iio/accel/adxl380.c
1334
return adxl380_set_range(st, range_index);
drivers/iio/accel/adxl380.c
1360
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1367
tap_axis_en = st->tap_axis_en == ADXL380_X_AXIS;
drivers/iio/accel/adxl380.c
1370
tap_axis_en = st->tap_axis_en == ADXL380_Y_AXIS;
drivers/iio/accel/adxl380.c
1373
tap_axis_en = st->tap_axis_en == ADXL380_Z_AXIS;
drivers/iio/accel/adxl380.c
1381
ret = adxl380_read_act_inact_int(st, ADXL380_ACTIVITY, &int_en);
drivers/iio/accel/adxl380.c
1386
ret = adxl380_read_act_inact_int(st, ADXL380_INACTIVITY, &int_en);
drivers/iio/accel/adxl380.c
1391
ret = adxl380_read_tap_int(st, ADXL380_SINGLE_TAP, &int_en);
drivers/iio/accel/adxl380.c
1396
ret = adxl380_read_tap_int(st, ADXL380_DOUBLE_TAP, &int_en);
drivers/iio/accel/adxl380.c
1411
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1430
return adxl380_act_inact_config(st, ADXL380_ACTIVITY, state);
drivers/iio/accel/adxl380.c
1432
return adxl380_act_inact_config(st, ADXL380_INACTIVITY, state);
drivers/iio/accel/adxl380.c
1434
return adxl380_tap_config(st, axis, ADXL380_SINGLE_TAP, state);
drivers/iio/accel/adxl380.c
1436
return adxl380_tap_config(st, axis, ADXL380_DOUBLE_TAP, state);
drivers/iio/accel/adxl380.c
1449
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1451
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
1459
*val = st->act_threshold;
drivers/iio/accel/adxl380.c
1462
*val = st->inact_threshold;
drivers/iio/accel/adxl380.c
1471
*val = st->act_time_ms;
drivers/iio/accel/adxl380.c
1475
*val = st->inact_time_ms;
drivers/iio/accel/adxl380.c
1487
*val = st->tap_threshold;
drivers/iio/accel/adxl380.c
1490
*val = st->tap_window_us;
drivers/iio/accel/adxl380.c
1494
*val = st->tap_latent_us;
drivers/iio/accel/adxl380.c
1510
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1534
return adxl380_set_act_inact_time_ms(st,
drivers/iio/accel/adxl380.c
1537
return adxl380_set_act_inact_time_ms(st,
drivers/iio/accel/adxl380.c
1552
return adxl380_write_tap_time_us(st,
drivers/iio/accel/adxl380.c
1557
return adxl380_write_tap_time_us(st,
drivers/iio/accel/adxl380.c
1574
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1576
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
1578
vals[0] = st->tap_duration_us;
drivers/iio/accel/adxl380.c
1589
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1592
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
1625
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1628
return regmap_read(st->regmap, reg, readval);
drivers/iio/accel/adxl380.c
1630
return regmap_write(st->regmap, reg, writeval);
drivers/iio/accel/adxl380.c
1635
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1637
st->watermark = min(val, ADXL380_FIFO_SAMPLES);
drivers/iio/accel/adxl380.c
1824
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1830
st->irq = fwnode_irq_get_byname(dev_fwnode(st->dev), "INT0");
drivers/iio/accel/adxl380.c
1831
if (st->irq > 0) {
drivers/iio/accel/adxl380.c
1832
st->int_map[0] = ADXL380_INT0_MAP0_REG;
drivers/iio/accel/adxl380.c
1833
st->int_map[1] = ADXL380_INT0_MAP1_REG;
drivers/iio/accel/adxl380.c
1835
st->irq = fwnode_irq_get_byname(dev_fwnode(st->dev), "INT1");
drivers/iio/accel/adxl380.c
1836
if (st->irq < 0)
drivers/iio/accel/adxl380.c
1837
return dev_err_probe(st->dev, st->irq,
drivers/iio/accel/adxl380.c
1839
st->int_map[0] = ADXL380_INT1_MAP0_REG;
drivers/iio/accel/adxl380.c
1840
st->int_map[1] = ADXL380_INT1_MAP1_REG;
drivers/iio/accel/adxl380.c
1843
irq_type = irq_get_trigger_type(st->irq);
drivers/iio/accel/adxl380.c
1851
return dev_err_probe(st->dev, -EINVAL,
drivers/iio/accel/adxl380.c
1856
ret = regmap_update_bits(st->regmap, ADXL380_INT0_REG,
drivers/iio/accel/adxl380.c
1862
return devm_request_threaded_irq(st->dev, st->irq, NULL,
drivers/iio/accel/adxl380.c
1872
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1874
ret = regmap_read(st->regmap, ADXL380_DEVID_AD_REG, ®_val);
drivers/iio/accel/adxl380.c
1879
dev_warn(st->dev, "Unknown chip id %x\n", reg_val);
drivers/iio/accel/adxl380.c
1881
ret = regmap_bulk_read(st->regmap, ADXL380_PART_ID_REG,
drivers/iio/accel/adxl380.c
1882
&st->transf_buf, 2);
drivers/iio/accel/adxl380.c
1886
part_id = get_unaligned_be16(st->transf_buf);
drivers/iio/accel/adxl380.c
1890
dev_warn(st->dev, "Unknown part id %x\n", part_id);
drivers/iio/accel/adxl380.c
1892
ret = regmap_read(st->regmap, ADXL380_MISC_0_REG, ®_val);
drivers/iio/accel/adxl380.c
1902
if (chip_id != st->chip_info->chip_id)
drivers/iio/accel/adxl380.c
1903
dev_warn(st->dev, "Unknown chip id %x\n", chip_id);
drivers/iio/accel/adxl380.c
1905
ret = regmap_write(st->regmap, ADXL380_RESET_REG, ADXL380_RESET_CODE);
drivers/iio/accel/adxl380.c
1916
ret = regmap_update_bits(st->regmap, ADXL380_DIG_EN_REG,
drivers/iio/accel/adxl380.c
1923
ret = regmap_update_bits(st->regmap, ADXL380_FIFO_CONFIG_0_REG,
drivers/iio/accel/adxl380.c
1930
ret = regmap_update_bits(st->regmap, ADXL380_SNSR_AXIS_EN_REG,
drivers/iio/accel/adxl380.c
1941
ret = adxl380_fill_lpf_tbl(st);
drivers/iio/accel/adxl380.c
1945
ret = adxl380_fill_hpf_tbl(st);
drivers/iio/accel/adxl380.c
1949
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
1956
struct adxl380_state *st;
drivers/iio/accel/adxl380.c
1959
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/accel/adxl380.c
1963
st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
1965
st->dev = dev;
drivers/iio/accel/adxl380.c
1966
st->regmap = regmap;
drivers/iio/accel/adxl380.c
1967
st->chip_info = chip_info;
drivers/iio/accel/adxl380.c
1968
st->odr = ADXL380_ODR_DSM;
drivers/iio/accel/adxl380.c
1970
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/accel/adxl380.c
1982
return dev_err_probe(st->dev, ret,
drivers/iio/accel/adxl380.c
1985
ret = devm_regulator_get_enable(st->dev, "vsupply");
drivers/iio/accel/adxl380.c
1987
return dev_err_probe(st->dev, ret,
drivers/iio/accel/adxl380.c
1994
ret = devm_iio_kfifo_buffer_setup_ext(st->dev, indio_dev,
drivers/iio/accel/adxl380.c
235
static int adxl380_act_inact_enabled(struct adxl380_state *st, bool *enabled)
drivers/iio/accel/adxl380.c
240
if (!st->chip_info->has_low_power) {
drivers/iio/accel/adxl380.c
245
ret = regmap_read(st->regmap, ADXL380_ACT_INACT_CTL_REG, &act_inact_ctl);
drivers/iio/accel/adxl380.c
255
static int adxl380_set_measure_en(struct adxl380_state *st, bool en)
drivers/iio/accel/adxl380.c
263
ret = adxl380_act_inact_enabled(st, &act_inact_enabled);
drivers/iio/accel/adxl380.c
272
st->odr = ADXL380_ODR_VLP;
drivers/iio/accel/adxl380.c
274
if (st->odr == ADXL380_ODR_VLP)
drivers/iio/accel/adxl380.c
280
return regmap_update_bits(st->regmap, ADXL380_OP_MODE_REG,
drivers/iio/accel/adxl380.c
285
static void adxl380_scale_act_inact_thresholds(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
289
st->act_threshold = mult_frac(st->act_threshold,
drivers/iio/accel/adxl380.c
292
st->inact_threshold = mult_frac(st->inact_threshold,
drivers/iio/accel/adxl380.c
297
static int adxl380_write_act_inact_threshold(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
307
ret = regmap_write(st->regmap, reg + 1, th & GENMASK(7, 0));
drivers/iio/accel/adxl380.c
311
ret = regmap_update_bits(st->regmap, reg, GENMASK(2, 0), th >> 8);
drivers/iio/accel/adxl380.c
316
st->act_threshold = th;
drivers/iio/accel/adxl380.c
318
st->inact_threshold = th;
drivers/iio/accel/adxl380.c
327
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
330
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
332
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
336
ret = adxl380_write_act_inact_threshold(st, act, th);
drivers/iio/accel/adxl380.c
340
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
346
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
348
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
350
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
354
ret = regmap_write(st->regmap, ADXL380_TAP_THRESH_REG, th);
drivers/iio/accel/adxl380.c
358
st->tap_threshold = th;
drivers/iio/accel/adxl380.c
360
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
363
static int _adxl380_write_tap_time_us(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
376
ret = regmap_write(st->regmap, reg, reg_val);
drivers/iio/accel/adxl380.c
381
st->tap_window_us = us;
drivers/iio/accel/adxl380.c
383
st->tap_latent_us = us;
drivers/iio/accel/adxl380.c
388
static int adxl380_write_tap_time_us(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
393
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
395
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
399
ret = _adxl380_write_tap_time_us(st, tap_time_type, us);
drivers/iio/accel/adxl380.c
403
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
410
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
415
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
419
ret = regmap_write(st->regmap, ADXL380_TAP_DUR_REG, reg_val);
drivers/iio/accel/adxl380.c
423
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
426
static int adxl380_read_chn(struct adxl380_state *st, u8 addr)
drivers/iio/accel/adxl380.c
430
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
432
ret = regmap_bulk_read(st->regmap, addr, &st->transf_buf, 2);
drivers/iio/accel/adxl380.c
436
return get_unaligned_be16(st->transf_buf);
drivers/iio/accel/adxl380.c
439
static int adxl380_get_odr(struct adxl380_state *st, int *odr)
drivers/iio/accel/adxl380.c
441
*odr = st->chip_info->samp_freq_tbl[st->odr];
drivers/iio/accel/adxl380.c
450
static int adxl380_fill_lpf_tbl(struct adxl380_state *st)
drivers/iio/accel/adxl380.c
455
ret = adxl380_get_odr(st, &odr);
drivers/iio/accel/adxl380.c
459
for (i = 0; i < ARRAY_SIZE(st->lpf_tbl); i++)
drivers/iio/accel/adxl380.c
460
st->lpf_tbl[i] = DIV_ROUND_CLOSEST(odr, adxl380_lpf_div[i]);
drivers/iio/accel/adxl380.c
469
static int adxl380_fill_hpf_tbl(struct adxl380_state *st)
drivers/iio/accel/adxl380.c
475
ret = adxl380_get_odr(st, &odr_hz);
drivers/iio/accel/adxl380.c
485
st->hpf_tbl[i][0] = div;
drivers/iio/accel/adxl380.c
486
st->hpf_tbl[i][1] = div_u64(rem, MEGA * 100);
drivers/iio/accel/adxl380.c
492
static int adxl380_set_odr(struct adxl380_state *st, u8 odr)
drivers/iio/accel/adxl380.c
496
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
498
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
507
ret = regmap_update_bits(st->regmap, ADXL380_TRIG_CFG_REG,
drivers/iio/accel/adxl380.c
513
ret = regmap_update_bits(st->regmap, ADXL380_TRIG_CFG_REG,
drivers/iio/accel/adxl380.c
519
st->odr = odr;
drivers/iio/accel/adxl380.c
520
ret = adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
524
ret = adxl380_fill_lpf_tbl(st);
drivers/iio/accel/adxl380.c
528
return adxl380_fill_hpf_tbl(st);
drivers/iio/accel/adxl380.c
556
static int adxl380_get_lpf(struct adxl380_state *st, int *lpf)
drivers/iio/accel/adxl380.c
561
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
563
ret = regmap_read(st->regmap, ADXL380_FILTER_REG, &trig_cfg);
drivers/iio/accel/adxl380.c
569
*lpf = st->lpf_tbl[lpf_idx];
drivers/iio/accel/adxl380.c
574
static int adxl380_set_lpf(struct adxl380_state *st, u8 lpf)
drivers/iio/accel/adxl380.c
579
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
581
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
588
ret = regmap_update_bits(st->regmap, ADXL380_FILTER_REG,
drivers/iio/accel/adxl380.c
594
ret = regmap_update_bits(st->regmap, ADXL380_FILTER_REG,
drivers/iio/accel/adxl380.c
600
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
603
static int adxl380_get_hpf(struct adxl380_state *st, int *hpf_int, int *hpf_frac)
drivers/iio/accel/adxl380.c
608
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
610
ret = regmap_read(st->regmap, ADXL380_FILTER_REG, &trig_cfg);
drivers/iio/accel/adxl380.c
616
*hpf_int = st->hpf_tbl[hpf_idx][0];
drivers/iio/accel/adxl380.c
617
*hpf_frac = st->hpf_tbl[hpf_idx][1];
drivers/iio/accel/adxl380.c
622
static int adxl380_set_hpf(struct adxl380_state *st, u8 hpf)
drivers/iio/accel/adxl380.c
627
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
629
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
636
ret = regmap_update_bits(st->regmap, ADXL380_FILTER_REG,
drivers/iio/accel/adxl380.c
642
ret = regmap_update_bits(st->regmap, ADXL380_FILTER_REG,
drivers/iio/accel/adxl380.c
648
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
651
static int _adxl380_set_act_inact_time_ms(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
662
put_unaligned_be24(reg_val, &st->transf_buf[0]);
drivers/iio/accel/adxl380.c
664
ret = regmap_bulk_write(st->regmap, reg, st->transf_buf, sizeof(st->transf_buf));
drivers/iio/accel/adxl380.c
669
st->act_time_ms = ms;
drivers/iio/accel/adxl380.c
671
st->inact_time_ms = ms;
drivers/iio/accel/adxl380.c
676
static int adxl380_set_act_inact_time_ms(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
682
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
684
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
688
ret = _adxl380_set_act_inact_time_ms(st, act, ms);
drivers/iio/accel/adxl380.c
692
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
695
static int adxl380_set_range(struct adxl380_state *st, u8 range)
drivers/iio/accel/adxl380.c
699
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
701
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
705
ret = regmap_update_bits(st->regmap, ADXL380_OP_MODE_REG,
drivers/iio/accel/adxl380.c
712
adxl380_scale_act_inact_thresholds(st, st->range, range);
drivers/iio/accel/adxl380.c
715
ret = adxl380_write_act_inact_threshold(st, ADXL380_ACTIVITY,
drivers/iio/accel/adxl380.c
716
st->act_threshold);
drivers/iio/accel/adxl380.c
720
ret = adxl380_write_act_inact_threshold(st, ADXL380_INACTIVITY,
drivers/iio/accel/adxl380.c
721
st->inact_threshold);
drivers/iio/accel/adxl380.c
725
st->range = range;
drivers/iio/accel/adxl380.c
727
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
730
static int adxl380_write_act_inact_en(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
735
return regmap_update_bits(st->regmap, ADXL380_ACT_INACT_CTL_REG,
drivers/iio/accel/adxl380.c
739
return regmap_update_bits(st->regmap, ADXL380_ACT_INACT_CTL_REG,
drivers/iio/accel/adxl380.c
744
static int adxl380_read_act_inact_int(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
751
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
753
ret = regmap_read(st->regmap, st->int_map[0], ®_val);
drivers/iio/accel/adxl380.c
765
static int adxl380_write_act_inact_int(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
770
return regmap_update_bits(st->regmap, st->int_map[0],
drivers/iio/accel/adxl380.c
774
return regmap_update_bits(st->regmap, st->int_map[0],
drivers/iio/accel/adxl380.c
779
static int adxl380_act_inact_config(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
785
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
787
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
791
ret = adxl380_write_act_inact_en(st, type, en);
drivers/iio/accel/adxl380.c
795
ret = adxl380_write_act_inact_int(st, type, en);
drivers/iio/accel/adxl380.c
799
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
802
static int adxl380_write_tap_axis(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
807
ret = regmap_update_bits(st->regmap, ADXL380_TAP_CFG_REG,
drivers/iio/accel/adxl380.c
814
st->tap_axis_en = axis;
drivers/iio/accel/adxl380.c
819
static int adxl380_read_tap_int(struct adxl380_state *st, enum adxl380_tap_type type, bool *en)
drivers/iio/accel/adxl380.c
824
ret = regmap_read(st->regmap, st->int_map[1], ®_val);
drivers/iio/accel/adxl380.c
836
static int adxl380_write_tap_int(struct adxl380_state *st, enum adxl380_tap_type type, bool en)
drivers/iio/accel/adxl380.c
839
return regmap_update_bits(st->regmap, st->int_map[1],
drivers/iio/accel/adxl380.c
843
return regmap_update_bits(st->regmap, st->int_map[1],
drivers/iio/accel/adxl380.c
848
static int adxl380_tap_config(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
855
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
857
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
861
ret = adxl380_write_tap_axis(st, axis);
drivers/iio/accel/adxl380.c
865
ret = adxl380_write_tap_int(st, type, en);
drivers/iio/accel/adxl380.c
869
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
872
static int adxl380_set_fifo_samples(struct adxl380_state *st)
drivers/iio/accel/adxl380.c
875
u16 fifo_samples = st->watermark * st->fifo_set_size;
drivers/iio/accel/adxl380.c
877
ret = regmap_update_bits(st->regmap, ADXL380_FIFO_CONFIG_0_REG,
drivers/iio/accel/adxl380.c
884
return regmap_write(st->regmap, ADXL380_FIFO_CONFIG_1_REG,
drivers/iio/accel/adxl380.c
888
static int adxl380_get_status(struct adxl380_state *st, u8 *status0, u8 *status1)
drivers/iio/accel/adxl380.c
893
ret = regmap_bulk_read(st->regmap, ADXL380_STATUS_0_REG,
drivers/iio/accel/adxl380.c
894
&st->transf_buf, 2);
drivers/iio/accel/adxl380.c
898
*status0 = st->transf_buf[0];
drivers/iio/accel/adxl380.c
899
*status1 = st->transf_buf[1];
drivers/iio/accel/adxl380.c
904
static int adxl380_get_fifo_entries(struct adxl380_state *st, u16 *fifo_entries)
drivers/iio/accel/adxl380.c
908
ret = regmap_bulk_read(st->regmap, ADXL380_FIFO_STATUS_0_REG,
drivers/iio/accel/adxl380.c
909
&st->transf_buf, 2);
drivers/iio/accel/adxl380.c
913
*fifo_entries = st->transf_buf[0] | ((BIT(0) & st->transf_buf[1]) << 8);
drivers/iio/accel/adxl380.c
948
struct adxl380_state *st = iio_priv(indio_dev);
drivers/iio/accel/adxl380.c
954
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
956
ret = adxl380_get_status(st, &status0, &status1);
drivers/iio/accel/adxl380.c
965
ret = adxl380_get_fifo_entries(st, &fifo_entries);
drivers/iio/accel/adxl380.c
969
fifo_entries = rounddown(fifo_entries, st->fifo_set_size);
drivers/iio/accel/adxl380.c
970
ret = regmap_noinc_read(st->regmap, ADXL380_FIFO_DATA, &st->fifo_buf,
drivers/iio/accel/adxl380.c
971
sizeof(*st->fifo_buf) * fifo_entries);
drivers/iio/accel/adxl380.c
974
for (i = 0; i < fifo_entries; i += st->fifo_set_size)
drivers/iio/accel/adxl380.c
975
iio_push_to_buffers(indio_dev, &st->fifo_buf[i]);
drivers/iio/accel/adxl380.c
980
static int adxl380_write_calibbias_value(struct adxl380_state *st,
drivers/iio/accel/adxl380.c
986
guard(mutex)(&st->lock);
drivers/iio/accel/adxl380.c
988
ret = adxl380_set_measure_en(st, false);
drivers/iio/accel/adxl380.c
992
ret = regmap_write(st->regmap, ADXL380_X_DSM_OFFSET_REG + chan_addr, calibbias);
drivers/iio/accel/adxl380.c
996
return adxl380_set_measure_en(st, true);
drivers/iio/accel/adxl380.c
999
static int adxl380_read_calibbias_value(struct adxl380_state *st,
drivers/iio/accel/cros_ec_accel_legacy.c
110
ret = cros_ec_sensors_core_read(st, chan, val, val2,
drivers/iio/accel/cros_ec_accel_legacy.c
114
mutex_unlock(&st->cmd_lock);
drivers/iio/accel/cros_ec_accel_legacy.c
44
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/accel/cros_ec_accel_legacy.c
53
sensor_num = st->param.info.sensor_num;
drivers/iio/accel/cros_ec_accel_legacy.c
54
st->param.cmd = MOTIONSENSE_CMD_DUMP;
drivers/iio/accel/cros_ec_accel_legacy.c
55
st->param.dump.max_sensor_count = CROS_EC_SENSOR_LEGACY_NUM;
drivers/iio/accel/cros_ec_accel_legacy.c
56
ret = cros_ec_motion_send_host_cmd(st,
drivers/iio/accel/cros_ec_accel_legacy.c
57
sizeof(st->resp->dump) + CROS_EC_SENSOR_LEGACY_NUM *
drivers/iio/accel/cros_ec_accel_legacy.c
59
st->param.info.sensor_num = sensor_num;
drivers/iio/accel/cros_ec_accel_legacy.c
66
*data = st->resp->dump.sensor[sensor_num].data[i] *
drivers/iio/accel/cros_ec_accel_legacy.c
67
st->sign[i];
drivers/iio/accel/cros_ec_accel_legacy.c
78
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/accel/cros_ec_accel_legacy.c
83
mutex_lock(&st->cmd_lock);
drivers/iio/accel/cros_ec_accel_legacy.c
87
ret = st->read_ec_sensors_data(indio_dev, 1 << idx, &data);
drivers/iio/accel/cros_ec_accel_legacy.c
94
WARN_ON(st->type != MOTIONSENSE_TYPE_ACCEL);
drivers/iio/accel/hid-sensor-accel-3d.c
286
struct accel_3d_state *st)
drivers/iio/accel/hid-sensor-accel-3d.c
295
&st->accel[ch]);
drivers/iio/accel/hid-sensor-accel-3d.c
300
.realbits = BYTES_TO_BITS(st->accel[ch].size),
drivers/iio/accel/hid-sensor-accel-3d.c
305
st->accel[0].index,
drivers/iio/accel/hid-sensor-accel-3d.c
306
st->accel[0].report_id,
drivers/iio/accel/hid-sensor-accel-3d.c
307
st->accel[1].index, st->accel[1].report_id,
drivers/iio/accel/hid-sensor-accel-3d.c
308
st->accel[2].index, st->accel[2].report_id);
drivers/iio/accel/hid-sensor-accel-3d.c
310
st->scale_precision = hid_sensor_format_scale(
drivers/iio/accel/hid-sensor-accel-3d.c
312
&st->accel[CHANNEL_SCAN_INDEX_X],
drivers/iio/accel/hid-sensor-accel-3d.c
313
&st->scale_pre_decml, &st->scale_post_decml);
drivers/iio/accel/kxsd9.c
100
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
111
ret = regmap_update_bits(st->map,
drivers/iio/accel/kxsd9.c
119
st->scale = i;
drivers/iio/accel/kxsd9.c
143
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
145
pm_runtime_get_sync(st->dev);
drivers/iio/accel/kxsd9.c
155
pm_runtime_put_autosuspend(st->dev);
drivers/iio/accel/kxsd9.c
165
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
170
pm_runtime_get_sync(st->dev);
drivers/iio/accel/kxsd9.c
174
ret = regmap_bulk_read(st->map, chan->address, &raw_val,
drivers/iio/accel/kxsd9.c
190
ret = regmap_read(st->map,
drivers/iio/accel/kxsd9.c
202
pm_runtime_put_autosuspend(st->dev);
drivers/iio/accel/kxsd9.c
211
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
222
ret = regmap_bulk_read(st->map,
drivers/iio/accel/kxsd9.c
227
dev_err(st->dev, "error reading data: %d\n", ret);
drivers/iio/accel/kxsd9.c
241
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
243
pm_runtime_get_sync(st->dev);
drivers/iio/accel/kxsd9.c
250
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
252
pm_runtime_put_autosuspend(st->dev);
drivers/iio/accel/kxsd9.c
266
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
268
return &st->orientation;
drivers/iio/accel/kxsd9.c
321
static int kxsd9_power_up(struct kxsd9_state *st)
drivers/iio/accel/kxsd9.c
326
ret = regulator_bulk_enable(ARRAY_SIZE(st->regs), st->regs);
drivers/iio/accel/kxsd9.c
328
dev_err(st->dev, "Cannot enable regulators\n");
drivers/iio/accel/kxsd9.c
333
ret = regmap_write(st->map,
drivers/iio/accel/kxsd9.c
343
ret = regmap_write(st->map,
drivers/iio/accel/kxsd9.c
348
st->scale);
drivers/iio/accel/kxsd9.c
361
static int kxsd9_power_down(struct kxsd9_state *st)
drivers/iio/accel/kxsd9.c
371
ret = regmap_clear_bits(st->map, KXSD9_REG_CTRL_B, KXSD9_CTRL_B_ENABLE);
drivers/iio/accel/kxsd9.c
376
ret = regulator_bulk_disable(ARRAY_SIZE(st->regs), st->regs);
drivers/iio/accel/kxsd9.c
378
dev_err(st->dev, "Cannot disable regulators\n");
drivers/iio/accel/kxsd9.c
399
struct kxsd9_state *st;
drivers/iio/accel/kxsd9.c
402
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/accel/kxsd9.c
406
st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
407
st->dev = dev;
drivers/iio/accel/kxsd9.c
408
st->map = map;
drivers/iio/accel/kxsd9.c
418
ret = iio_read_mount_matrix(dev, &st->orientation);
drivers/iio/accel/kxsd9.c
423
st->regs[0].supply = kxsd9_reg_vdd;
drivers/iio/accel/kxsd9.c
424
st->regs[1].supply = kxsd9_reg_iovdd;
drivers/iio/accel/kxsd9.c
426
ARRAY_SIZE(st->regs),
drivers/iio/accel/kxsd9.c
427
st->regs);
drivers/iio/accel/kxsd9.c
433
st->scale = KXSD9_CTRL_C_FS_2G;
drivers/iio/accel/kxsd9.c
435
kxsd9_power_up(st);
drivers/iio/accel/kxsd9.c
470
kxsd9_power_down(st);
drivers/iio/accel/kxsd9.c
479
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
486
kxsd9_power_down(st);
drivers/iio/accel/kxsd9.c
493
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
495
return kxsd9_power_down(st);
drivers/iio/accel/kxsd9.c
501
struct kxsd9_state *st = iio_priv(indio_dev);
drivers/iio/accel/kxsd9.c
503
return kxsd9_power_up(st);
drivers/iio/accel/sca3000.c
1004
ret = sca3000_read_data(st, SCA3000_REG_RING_OUT_ADDR, st->rx,
drivers/iio/accel/sca3000.c
1016
iio_push_to_buffers(indio_dev, st->rx + i * 3 * 2);
drivers/iio/accel/sca3000.c
1020
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
1038
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1046
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
1047
ret = sca3000_read_data_short(st, SCA3000_REG_INT_STATUS_ADDR, 1);
drivers/iio/accel/sca3000.c
1048
val = st->rx[0];
drivers/iio/accel/sca3000.c
1049
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
1103
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1106
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
1108
ret = sca3000_read_data_short(st, SCA3000_REG_MODE_ADDR, 1);
drivers/iio/accel/sca3000.c
1114
ret = !!(st->rx[0] & SCA3000_REG_MODE_FREE_FALL_DETECT);
drivers/iio/accel/sca3000.c
1123
if ((st->rx[0] & SCA3000_REG_MODE_MODE_MASK)
drivers/iio/accel/sca3000.c
1127
ret = sca3000_read_ctrl_reg(st,
drivers/iio/accel/sca3000.c
1140
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
1147
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1151
ret = sca3000_read_data_short(st, SCA3000_REG_MODE_ADDR, 1);
drivers/iio/accel/sca3000.c
1156
if (state && !(st->rx[0] & SCA3000_REG_MODE_FREE_FALL_DETECT))
drivers/iio/accel/sca3000.c
1157
return sca3000_write_reg(st, SCA3000_REG_MODE_ADDR,
drivers/iio/accel/sca3000.c
1158
st->rx[0] | SCA3000_REG_MODE_FREE_FALL_DETECT);
drivers/iio/accel/sca3000.c
1160
else if (!state && (st->rx[0] & SCA3000_REG_MODE_FREE_FALL_DETECT))
drivers/iio/accel/sca3000.c
1161
return sca3000_write_reg(st, SCA3000_REG_MODE_ADDR,
drivers/iio/accel/sca3000.c
1162
st->rx[0] & ~SCA3000_REG_MODE_FREE_FALL_DETECT);
drivers/iio/accel/sca3000.c
1170
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1177
ret = sca3000_read_ctrl_reg(st, SCA3000_REG_CTRL_SEL_MD_CTRL);
drivers/iio/accel/sca3000.c
1183
ret = sca3000_write_ctrl_reg(st,
drivers/iio/accel/sca3000.c
1189
st->mo_det_use_count++;
drivers/iio/accel/sca3000.c
1191
ret = sca3000_write_ctrl_reg(st,
drivers/iio/accel/sca3000.c
1197
st->mo_det_use_count--;
drivers/iio/accel/sca3000.c
1201
ret = sca3000_read_data_short(st, SCA3000_REG_MODE_ADDR, 1);
drivers/iio/accel/sca3000.c
1205
if ((st->mo_det_use_count) &&
drivers/iio/accel/sca3000.c
1206
((st->rx[0] & SCA3000_REG_MODE_MODE_MASK)
drivers/iio/accel/sca3000.c
1208
return sca3000_write_reg(st, SCA3000_REG_MODE_ADDR,
drivers/iio/accel/sca3000.c
1209
(st->rx[0] & ~SCA3000_REG_MODE_MODE_MASK)
drivers/iio/accel/sca3000.c
1212
else if (!(st->mo_det_use_count) &&
drivers/iio/accel/sca3000.c
1213
((st->rx[0] & SCA3000_REG_MODE_MODE_MASK)
drivers/iio/accel/sca3000.c
1215
return sca3000_write_reg(st, SCA3000_REG_MODE_ADDR,
drivers/iio/accel/sca3000.c
1216
st->rx[0] & SCA3000_REG_MODE_MODE_MASK);
drivers/iio/accel/sca3000.c
1242
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1245
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
1262
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
1270
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1273
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
1274
ret = sca3000_read_data_short(st, SCA3000_REG_MODE_ADDR, 1);
drivers/iio/accel/sca3000.c
1279
ret = sca3000_write_reg(st,
drivers/iio/accel/sca3000.c
1281
(st->rx[0] | SCA3000_REG_MODE_RING_BUF_ENABLE));
drivers/iio/accel/sca3000.c
1283
ret = sca3000_write_reg(st,
drivers/iio/accel/sca3000.c
1285
(st->rx[0] & ~SCA3000_REG_MODE_RING_BUF_ENABLE));
drivers/iio/accel/sca3000.c
1287
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
1304
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1306
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
1309
ret = sca3000_read_data_short(st, SCA3000_REG_INT_MASK_ADDR, 1);
drivers/iio/accel/sca3000.c
1312
ret = sca3000_write_reg(st,
drivers/iio/accel/sca3000.c
1314
st->rx[0] | SCA3000_REG_INT_MASK_RING_HALF);
drivers/iio/accel/sca3000.c
1318
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
1323
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
1331
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1338
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
1340
ret = sca3000_read_data_short(st, SCA3000_REG_INT_MASK_ADDR, 1);
drivers/iio/accel/sca3000.c
1343
ret = sca3000_write_reg(st,
drivers/iio/accel/sca3000.c
1345
st->rx[0] & ~SCA3000_REG_INT_MASK_RING_HALF);
drivers/iio/accel/sca3000.c
1347
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
1364
static int sca3000_clean_setup(struct sca3000_state *st)
drivers/iio/accel/sca3000.c
1368
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
1370
ret = sca3000_read_data_short(st, SCA3000_REG_INT_STATUS_ADDR, 1);
drivers/iio/accel/sca3000.c
1375
ret = sca3000_read_ctrl_reg(st, SCA3000_REG_CTRL_SEL_MD_CTRL);
drivers/iio/accel/sca3000.c
1378
ret = sca3000_write_ctrl_reg(st, SCA3000_REG_CTRL_SEL_MD_CTRL,
drivers/iio/accel/sca3000.c
1384
ret = sca3000_read_ctrl_reg(st, SCA3000_REG_CTRL_SEL_OUT_CTRL);
drivers/iio/accel/sca3000.c
1387
ret = sca3000_write_ctrl_reg(st, SCA3000_REG_CTRL_SEL_OUT_CTRL,
drivers/iio/accel/sca3000.c
1396
ret = sca3000_read_data_short(st, SCA3000_REG_INT_MASK_ADDR, 1);
drivers/iio/accel/sca3000.c
1399
ret = sca3000_write_reg(st,
drivers/iio/accel/sca3000.c
1410
ret = sca3000_read_data_short(st, SCA3000_REG_MODE_ADDR, 1);
drivers/iio/accel/sca3000.c
1413
ret = sca3000_write_reg(st, SCA3000_REG_MODE_ADDR,
drivers/iio/accel/sca3000.c
1414
(st->rx[0] & SCA3000_MODE_PROT_MASK));
drivers/iio/accel/sca3000.c
1417
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
1434
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1437
guard(mutex)(&st->lock);
drivers/iio/accel/sca3000.c
1439
ret = sca3000_read_data_short(st, SCA3000_REG_INT_MASK_ADDR, 1);
drivers/iio/accel/sca3000.c
1443
sca3000_write_reg(st, SCA3000_REG_INT_MASK_ADDR,
drivers/iio/accel/sca3000.c
1444
(st->rx[0] &
drivers/iio/accel/sca3000.c
1453
struct sca3000_state *st;
drivers/iio/accel/sca3000.c
1457
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/accel/sca3000.c
1461
st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
1462
st->us = spi;
drivers/iio/accel/sca3000.c
1463
mutex_init(&st->lock);
drivers/iio/accel/sca3000.c
1464
st->info = spi_get_device_match_data(spi);
drivers/iio/accel/sca3000.c
1466
indio_dev->name = st->info->name;
drivers/iio/accel/sca3000.c
1468
if (st->info->temp_output) {
drivers/iio/accel/sca3000.c
1491
ret = sca3000_clean_setup(st);
drivers/iio/accel/sca3000.c
268
static int sca3000_write_reg(struct sca3000_state *st, u8 address, u8 val)
drivers/iio/accel/sca3000.c
270
st->tx[0] = SCA3000_WRITE_REG(address);
drivers/iio/accel/sca3000.c
271
st->tx[1] = val;
drivers/iio/accel/sca3000.c
272
return spi_write(st->us, st->tx, 2);
drivers/iio/accel/sca3000.c
275
static int sca3000_read_data_short(struct sca3000_state *st,
drivers/iio/accel/sca3000.c
282
.tx_buf = st->tx,
drivers/iio/accel/sca3000.c
285
.rx_buf = st->rx,
drivers/iio/accel/sca3000.c
288
st->tx[0] = SCA3000_READ_REG(reg_address_high);
drivers/iio/accel/sca3000.c
290
return spi_sync_transfer(st->us, xfer, ARRAY_SIZE(xfer));
drivers/iio/accel/sca3000.c
299
static int sca3000_reg_lock_on(struct sca3000_state *st)
drivers/iio/accel/sca3000.c
303
ret = sca3000_read_data_short(st, SCA3000_REG_STATUS_ADDR, 1);
drivers/iio/accel/sca3000.c
307
return !(st->rx[0] & SCA3000_LOCKED);
drivers/iio/accel/sca3000.c
318
static int __sca3000_unlock_reg_lock(struct sca3000_state *st)
drivers/iio/accel/sca3000.c
324
.tx_buf = st->tx,
drivers/iio/accel/sca3000.c
328
.tx_buf = st->tx + 2,
drivers/iio/accel/sca3000.c
331
.tx_buf = st->tx + 4,
drivers/iio/accel/sca3000.c
334
st->tx[0] = SCA3000_WRITE_REG(SCA3000_REG_UNLOCK_ADDR);
drivers/iio/accel/sca3000.c
335
st->tx[1] = 0x00;
drivers/iio/accel/sca3000.c
336
st->tx[2] = SCA3000_WRITE_REG(SCA3000_REG_UNLOCK_ADDR);
drivers/iio/accel/sca3000.c
337
st->tx[3] = 0x50;
drivers/iio/accel/sca3000.c
338
st->tx[4] = SCA3000_WRITE_REG(SCA3000_REG_UNLOCK_ADDR);
drivers/iio/accel/sca3000.c
339
st->tx[5] = 0xA0;
drivers/iio/accel/sca3000.c
341
return spi_sync_transfer(st->us, xfer, ARRAY_SIZE(xfer));
drivers/iio/accel/sca3000.c
355
static int sca3000_write_ctrl_reg(struct sca3000_state *st,
drivers/iio/accel/sca3000.c
361
ret = sca3000_reg_lock_on(st);
drivers/iio/accel/sca3000.c
365
ret = __sca3000_unlock_reg_lock(st);
drivers/iio/accel/sca3000.c
371
ret = sca3000_write_reg(st, SCA3000_REG_CTRL_SEL_ADDR, sel);
drivers/iio/accel/sca3000.c
376
return sca3000_write_reg(st, SCA3000_REG_CTRL_DATA_ADDR, val);
drivers/iio/accel/sca3000.c
386
static int sca3000_read_ctrl_reg(struct sca3000_state *st,
drivers/iio/accel/sca3000.c
391
ret = sca3000_reg_lock_on(st);
drivers/iio/accel/sca3000.c
395
ret = __sca3000_unlock_reg_lock(st);
drivers/iio/accel/sca3000.c
400
ret = sca3000_write_reg(st, SCA3000_REG_CTRL_SEL_ADDR, ctrl_reg);
drivers/iio/accel/sca3000.c
403
ret = sca3000_read_data_short(st, SCA3000_REG_CTRL_DATA_ADDR, 1);
drivers/iio/accel/sca3000.c
406
return st->rx[0];
drivers/iio/accel/sca3000.c
418
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
420
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
421
ret = sca3000_read_data_short(st, SCA3000_REG_REVID_ADDR, 1);
drivers/iio/accel/sca3000.c
426
st->rx[0] & SCA3000_REG_REVID_MAJOR_MASK,
drivers/iio/accel/sca3000.c
427
st->rx[0] & SCA3000_REG_REVID_MINOR_MASK);
drivers/iio/accel/sca3000.c
429
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
440
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
443
len = sprintf(buf, "%d", st->info->measurement_mode_3db_freq);
drivers/iio/accel/sca3000.c
444
if (st->info->option_mode_1)
drivers/iio/accel/sca3000.c
446
st->info->option_mode_1_3db_freq);
drivers/iio/accel/sca3000.c
447
if (st->info->option_mode_2)
drivers/iio/accel/sca3000.c
449
st->info->option_mode_2_3db_freq);
drivers/iio/accel/sca3000.c
558
static inline int __sca3000_get_base_freq(struct sca3000_state *st,
drivers/iio/accel/sca3000.c
564
ret = sca3000_read_data_short(st, SCA3000_REG_MODE_ADDR, 1);
drivers/iio/accel/sca3000.c
568
switch (SCA3000_REG_MODE_MODE_MASK & st->rx[0]) {
drivers/iio/accel/sca3000.c
591
static int sca3000_read_raw_samp_freq(struct sca3000_state *st, int *val)
drivers/iio/accel/sca3000.c
595
ret = __sca3000_get_base_freq(st, st->info, val);
drivers/iio/accel/sca3000.c
599
ret = sca3000_read_ctrl_reg(st, SCA3000_REG_CTRL_SEL_OUT_CTRL);
drivers/iio/accel/sca3000.c
625
static int sca3000_write_raw_samp_freq(struct sca3000_state *st, int val)
drivers/iio/accel/sca3000.c
629
ret = __sca3000_get_base_freq(st, st->info, &base_freq);
drivers/iio/accel/sca3000.c
633
ret = sca3000_read_ctrl_reg(st, SCA3000_REG_CTRL_SEL_OUT_CTRL);
drivers/iio/accel/sca3000.c
646
return sca3000_write_ctrl_reg(st, SCA3000_REG_CTRL_SEL_OUT_CTRL,
drivers/iio/accel/sca3000.c
650
static int sca3000_read_3db_freq(struct sca3000_state *st, int *val)
drivers/iio/accel/sca3000.c
654
ret = sca3000_read_data_short(st, SCA3000_REG_MODE_ADDR, 1);
drivers/iio/accel/sca3000.c
659
st->rx[0] &= SCA3000_REG_MODE_MODE_MASK;
drivers/iio/accel/sca3000.c
660
switch (st->rx[0]) {
drivers/iio/accel/sca3000.c
662
*val = st->info->measurement_mode_3db_freq;
drivers/iio/accel/sca3000.c
667
*val = st->info->option_mode_1_3db_freq;
drivers/iio/accel/sca3000.c
670
*val = st->info->option_mode_2_3db_freq;
drivers/iio/accel/sca3000.c
677
static int sca3000_write_3db_freq(struct sca3000_state *st, int val)
drivers/iio/accel/sca3000.c
682
if (val == st->info->measurement_mode_3db_freq)
drivers/iio/accel/sca3000.c
684
else if (st->info->option_mode_1 &&
drivers/iio/accel/sca3000.c
685
(val == st->info->option_mode_1_3db_freq))
drivers/iio/accel/sca3000.c
687
else if (st->info->option_mode_2 &&
drivers/iio/accel/sca3000.c
688
(val == st->info->option_mode_2_3db_freq))
drivers/iio/accel/sca3000.c
692
ret = sca3000_read_data_short(st, SCA3000_REG_MODE_ADDR, 1);
drivers/iio/accel/sca3000.c
696
st->rx[0] &= ~SCA3000_REG_MODE_MODE_MASK;
drivers/iio/accel/sca3000.c
697
st->rx[0] |= (mode & SCA3000_REG_MODE_MODE_MASK);
drivers/iio/accel/sca3000.c
699
return sca3000_write_reg(st, SCA3000_REG_MODE_ADDR, st->rx[0]);
drivers/iio/accel/sca3000.c
708
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
714
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
716
if (st->mo_det_use_count) {
drivers/iio/accel/sca3000.c
717
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
721
ret = sca3000_read_data_short(st, address, 2);
drivers/iio/accel/sca3000.c
723
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
726
*val = sign_extend32(be16_to_cpup((__be16 *)st->rx) >>
drivers/iio/accel/sca3000.c
731
ret = sca3000_read_data_short(st,
drivers/iio/accel/sca3000.c
735
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
738
*val = (be16_to_cpup((__be16 *)st->rx) >>
drivers/iio/accel/sca3000.c
742
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
747
*val2 = st->info->scale;
drivers/iio/accel/sca3000.c
756
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
757
ret = sca3000_read_raw_samp_freq(st, val);
drivers/iio/accel/sca3000.c
758
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
761
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
762
ret = sca3000_read_3db_freq(st, val);
drivers/iio/accel/sca3000.c
763
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
774
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
781
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
782
ret = sca3000_write_raw_samp_freq(st, val);
drivers/iio/accel/sca3000.c
783
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
788
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
789
ret = sca3000_write_3db_freq(st, val);
drivers/iio/accel/sca3000.c
790
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
815
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
818
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
819
ret = sca3000_read_data_short(st, SCA3000_REG_MODE_ADDR, 1);
drivers/iio/accel/sca3000.c
820
val = st->rx[0];
drivers/iio/accel/sca3000.c
821
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
828
st->info->measurement_mode_freq,
drivers/iio/accel/sca3000.c
829
st->info->measurement_mode_freq / 2,
drivers/iio/accel/sca3000.c
830
st->info->measurement_mode_freq / 4);
drivers/iio/accel/sca3000.c
834
st->info->option_mode_1_freq,
drivers/iio/accel/sca3000.c
835
st->info->option_mode_1_freq / 2,
drivers/iio/accel/sca3000.c
836
st->info->option_mode_1_freq / 4);
drivers/iio/accel/sca3000.c
840
st->info->option_mode_2_freq,
drivers/iio/accel/sca3000.c
841
st->info->option_mode_2_freq / 2,
drivers/iio/accel/sca3000.c
842
st->info->option_mode_2_freq / 4);
drivers/iio/accel/sca3000.c
864
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
870
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
871
ret = sca3000_read_ctrl_reg(st,
drivers/iio/accel/sca3000.c
873
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
879
ARRAY_SIZE(st->info->mot_det_mult_y))
drivers/iio/accel/sca3000.c
880
*val += st->info->mot_det_mult_y[i];
drivers/iio/accel/sca3000.c
883
ARRAY_SIZE(st->info->mot_det_mult_xz))
drivers/iio/accel/sca3000.c
884
*val += st->info->mot_det_mult_xz[i];
drivers/iio/accel/sca3000.c
916
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
922
i = ARRAY_SIZE(st->info->mot_det_mult_y);
drivers/iio/accel/sca3000.c
924
if (val >= st->info->mot_det_mult_y[--i]) {
drivers/iio/accel/sca3000.c
926
val -= st->info->mot_det_mult_y[i];
drivers/iio/accel/sca3000.c
929
i = ARRAY_SIZE(st->info->mot_det_mult_xz);
drivers/iio/accel/sca3000.c
931
if (val >= st->info->mot_det_mult_xz[--i]) {
drivers/iio/accel/sca3000.c
933
val -= st->info->mot_det_mult_xz[i];
drivers/iio/accel/sca3000.c
937
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
938
ret = sca3000_write_ctrl_reg(st,
drivers/iio/accel/sca3000.c
941
mutex_unlock(&st->lock);
drivers/iio/accel/sca3000.c
956
static int sca3000_read_data(struct sca3000_state *st,
drivers/iio/accel/sca3000.c
965
.tx_buf = st->tx,
drivers/iio/accel/sca3000.c
972
st->tx[0] = SCA3000_READ_REG(reg_address_high);
drivers/iio/accel/sca3000.c
973
ret = spi_sync_transfer(st->us, xfer, ARRAY_SIZE(xfer));
drivers/iio/accel/sca3000.c
975
dev_err(&st->us->dev, "problem reading register\n");
drivers/iio/accel/sca3000.c
989
struct sca3000_state *st = iio_priv(indio_dev);
drivers/iio/accel/sca3000.c
992
mutex_lock(&st->lock);
drivers/iio/accel/sca3000.c
995
ret = sca3000_read_data_short(st, SCA3000_REG_BUF_COUNT_ADDR,
drivers/iio/accel/sca3000.c
999
num_available = st->rx[0];
drivers/iio/adc/ad4000.c
1000
return ad4000_write_reg(st, reg_val);
drivers/iio/adc/ad4000.c
1008
struct ad4000_state *st;
drivers/iio/adc/ad4000.c
1011
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad4000.c
1019
st = iio_priv(indio_dev);
drivers/iio/adc/ad4000.c
1020
st->spi = spi;
drivers/iio/adc/ad4000.c
1021
st->time_spec = chip->time_spec;
drivers/iio/adc/ad4000.c
1022
st->max_rate_hz = chip->max_rate_hz;
drivers/iio/adc/ad4000.c
1033
st->vref_mv = ret / 1000;
drivers/iio/adc/ad4000.c
1035
st->cnv_gpio = devm_gpiod_get_optional(dev, "cnv", GPIOD_OUT_HIGH);
drivers/iio/adc/ad4000.c
1036
if (IS_ERR(st->cnv_gpio))
drivers/iio/adc/ad4000.c
1037
return dev_err_probe(dev, PTR_ERR(st->cnv_gpio),
drivers/iio/adc/ad4000.c
1040
st->offload = devm_spi_offload_get(dev, spi, &ad4000_offload_config);
drivers/iio/adc/ad4000.c
1041
ret = PTR_ERR_OR_ZERO(st->offload);
drivers/iio/adc/ad4000.c
1045
st->using_offload = !IS_ERR(st->offload);
drivers/iio/adc/ad4000.c
1046
if (st->using_offload) {
drivers/iio/adc/ad4000.c
1048
ret = ad4000_spi_offload_setup(indio_dev, st);
drivers/iio/adc/ad4000.c
1068
st->sdi_pin = ret == -EINVAL ? AD4000_SDI_MOSI : ret;
drivers/iio/adc/ad4000.c
1069
switch (st->sdi_pin) {
drivers/iio/adc/ad4000.c
1083
if (st->using_offload) {
drivers/iio/adc/ad4000.c
1086
ret = ad4000_prepare_offload_message(st, indio_dev->channels);
drivers/iio/adc/ad4000.c
1099
ret = ad4000_prepare_3wire_mode_message(st, &indio_dev->channels[0]);
drivers/iio/adc/ad4000.c
1104
ret = ad4000_config(st);
drivers/iio/adc/ad4000.c
1110
if (st->using_offload) {
drivers/iio/adc/ad4000.c
1115
ret = ad4000_prepare_offload_message(st, indio_dev->channels);
drivers/iio/adc/ad4000.c
1125
ret = ad4000_prepare_3wire_mode_message(st, &indio_dev->channels[0]);
drivers/iio/adc/ad4000.c
1132
if (st->using_offload)
drivers/iio/adc/ad4000.c
1138
ret = ad4000_prepare_4wire_mode_message(st, &indio_dev->channels[0]);
drivers/iio/adc/ad4000.c
1154
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/adc/ad4000.c
1158
st->gain_milli = 1000;
drivers/iio/adc/ad4000.c
1161
&st->gain_milli);
drivers/iio/adc/ad4000.c
1164
gain_idx = find_closest(st->gain_milli, ad4000_gains,
drivers/iio/adc/ad4000.c
1166
st->gain_milli = ad4000_gains[gain_idx];
drivers/iio/adc/ad4000.c
1173
ad4000_fill_scale_tbl(st, &indio_dev->channels[0]);
drivers/iio/adc/ad4000.c
531
static void ad4000_fill_scale_tbl(struct ad4000_state *st,
drivers/iio/adc/ad4000.c
553
val = mult_frac(st->vref_mv, MICRO, st->gain_milli);
drivers/iio/adc/ad4000.c
560
st->scale_tbl[0][0] = tmp0; /* Integer part */
drivers/iio/adc/ad4000.c
561
st->scale_tbl[0][1] = abs(tmp1); /* Fractional part */
drivers/iio/adc/ad4000.c
564
st->scale_tbl[1][0] = tmp0;
drivers/iio/adc/ad4000.c
568
st->scale_tbl[1][1] = DIV_ROUND_CLOSEST(abs(tmp1) * 4, 5);
drivers/iio/adc/ad4000.c
570
st->scale_tbl[1][1] = DIV_ROUND_CLOSEST(abs(tmp1) * 9, 10);
drivers/iio/adc/ad4000.c
573
static int ad4000_write_reg(struct ad4000_state *st, uint8_t val)
drivers/iio/adc/ad4000.c
575
st->tx_buf[0] = AD4000_WRITE_COMMAND;
drivers/iio/adc/ad4000.c
576
st->tx_buf[1] = val;
drivers/iio/adc/ad4000.c
577
return spi_write(st->spi, st->tx_buf, ARRAY_SIZE(st->tx_buf));
drivers/iio/adc/ad4000.c
580
static int ad4000_read_reg(struct ad4000_state *st, unsigned int *val)
drivers/iio/adc/ad4000.c
583
.tx_buf = st->tx_buf,
drivers/iio/adc/ad4000.c
584
.rx_buf = st->rx_buf,
drivers/iio/adc/ad4000.c
589
st->tx_buf[0] = AD4000_READ_COMMAND;
drivers/iio/adc/ad4000.c
590
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/adc/ad4000.c
594
*val = st->rx_buf[1];
drivers/iio/adc/ad4000.c
598
static int ad4000_set_sampling_freq(struct ad4000_state *st, int freq)
drivers/iio/adc/ad4000.c
608
ret = spi_offload_trigger_validate(st->offload_trigger, &config);
drivers/iio/adc/ad4000.c
612
st->offload_trigger_hz = config.periodic.frequency_hz;
drivers/iio/adc/ad4000.c
617
static int ad4000_convert_and_acquire(struct ad4000_state *st)
drivers/iio/adc/ad4000.c
627
gpiod_set_value_cansleep(st->cnv_gpio, 1);
drivers/iio/adc/ad4000.c
628
ret = spi_sync(st->spi, &st->msg);
drivers/iio/adc/ad4000.c
629
gpiod_set_value_cansleep(st->cnv_gpio, 0);
drivers/iio/adc/ad4000.c
637
struct ad4000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4000.c
641
ret = ad4000_convert_and_acquire(st);
drivers/iio/adc/ad4000.c
647
sample = be32_to_cpu(st->scan.data.sample_buf32_be);
drivers/iio/adc/ad4000.c
649
sample = be16_to_cpu(st->scan.data.sample_buf16_be);
drivers/iio/adc/ad4000.c
652
sample = st->scan.data.sample_buf32;
drivers/iio/adc/ad4000.c
654
sample = st->scan.data.sample_buf16;
drivers/iio/adc/ad4000.c
671
struct ad4000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4000.c
683
*val = st->scale_tbl[st->span_comp][0];
drivers/iio/adc/ad4000.c
684
*val2 = st->scale_tbl[st->span_comp][1];
drivers/iio/adc/ad4000.c
688
if (st->span_comp)
drivers/iio/adc/ad4000.c
689
*val = mult_frac(st->vref_mv, 1, 10);
drivers/iio/adc/ad4000.c
693
*val = st->offload_trigger_hz;
drivers/iio/adc/ad4000.c
705
struct ad4000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4000.c
709
*vals = (int *)st->scale_tbl;
drivers/iio/adc/ad4000.c
733
struct ad4000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4000.c
738
guard(mutex)(&st->lock);
drivers/iio/adc/ad4000.c
740
ret = ad4000_read_reg(st, ®_val);
drivers/iio/adc/ad4000.c
744
span_comp_en = val2 == st->scale_tbl[1][1];
drivers/iio/adc/ad4000.c
748
ret = ad4000_write_reg(st, reg_val);
drivers/iio/adc/ad4000.c
752
st->span_comp = span_comp_en;
drivers/iio/adc/ad4000.c
760
struct ad4000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4000.c
771
if (val < 1 || val > st->max_rate_hz)
drivers/iio/adc/ad4000.c
776
ret = ad4000_set_sampling_freq(st, val);
drivers/iio/adc/ad4000.c
788
struct ad4000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4000.c
791
ret = ad4000_convert_and_acquire(st);
drivers/iio/adc/ad4000.c
795
iio_push_to_buffers_with_ts(indio_dev, &st->scan, sizeof(st->scan),
drivers/iio/adc/ad4000.c
822
struct ad4000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4000.c
826
.frequency_hz = st->offload_trigger_hz,
drivers/iio/adc/ad4000.c
830
return spi_offload_trigger_enable(st->offload, st->offload_trigger,
drivers/iio/adc/ad4000.c
836
struct ad4000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4000.c
838
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/adc/ad4000.c
849
struct ad4000_state *st)
drivers/iio/adc/ad4000.c
851
struct spi_device *spi = st->spi;
drivers/iio/adc/ad4000.c
856
st->offload_trigger = devm_spi_offload_trigger_get(dev, st->offload,
drivers/iio/adc/ad4000.c
858
if (IS_ERR(st->offload_trigger))
drivers/iio/adc/ad4000.c
859
return dev_err_probe(dev, PTR_ERR(st->offload_trigger),
drivers/iio/adc/ad4000.c
862
ret = ad4000_set_sampling_freq(st, st->max_rate_hz);
drivers/iio/adc/ad4000.c
867
rx_dma = devm_spi_offload_rx_stream_request_dma_chan(dev, st->offload);
drivers/iio/adc/ad4000.c
901
static int ad4000_prepare_offload_message(struct ad4000_state *st,
drivers/iio/adc/ad4000.c
904
struct spi_transfer *xfer = &st->offload_xfer;
drivers/iio/adc/ad4000.c
908
xfer->delay.value = st->time_spec->t_quiet2_ns;
drivers/iio/adc/ad4000.c
912
spi_message_init_with_transfers(&st->offload_msg, xfer, 1);
drivers/iio/adc/ad4000.c
913
st->offload_msg.offload = st->offload;
drivers/iio/adc/ad4000.c
915
return devm_spi_optimize_message(&st->spi->dev, st->spi, &st->offload_msg);
drivers/iio/adc/ad4000.c
934
static int ad4000_prepare_3wire_mode_message(struct ad4000_state *st,
drivers/iio/adc/ad4000.c
937
struct spi_transfer *xfers = st->xfers;
drivers/iio/adc/ad4000.c
940
xfers[0].cs_change_delay.value = st->time_spec->t_conv_ns;
drivers/iio/adc/ad4000.c
943
xfers[1].rx_buf = &st->scan.data;
drivers/iio/adc/ad4000.c
954
xfers[1].delay.value = st->time_spec->t_quiet2_ns;
drivers/iio/adc/ad4000.c
957
spi_message_init_with_transfers(&st->msg, st->xfers, 2);
drivers/iio/adc/ad4000.c
959
return devm_spi_optimize_message(&st->spi->dev, st->spi, &st->msg);
drivers/iio/adc/ad4000.c
969
static int ad4000_prepare_4wire_mode_message(struct ad4000_state *st,
drivers/iio/adc/ad4000.c
972
struct spi_transfer *xfers = st->xfers;
drivers/iio/adc/ad4000.c
979
xfers[0].delay.value = st->time_spec->t_conv_ns;
drivers/iio/adc/ad4000.c
982
xfers[1].rx_buf = &st->scan.data;
drivers/iio/adc/ad4000.c
985
spi_message_init_with_transfers(&st->msg, st->xfers, 2);
drivers/iio/adc/ad4000.c
987
return devm_spi_optimize_message(&st->spi->dev, st->spi, &st->msg);
drivers/iio/adc/ad4000.c
990
static int ad4000_config(struct ad4000_state *st)
drivers/iio/adc/ad4000.c
994
if (device_property_present(&st->spi->dev, "adi,high-z-input"))
drivers/iio/adc/ad4000.c
997
if (st->using_offload)
drivers/iio/adc/ad4030.c
1003
if (st->scale_avail_size == 1)
drivers/iio/adc/ad4030.c
1004
*vals = (int *)st->scale_avail[st->pga_index];
drivers/iio/adc/ad4030.c
1006
*vals = (int *)st->scale_avail;
drivers/iio/adc/ad4030.c
1007
*length = st->scale_avail_size * 2; /* print int and nano part */
drivers/iio/adc/ad4030.c
1020
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
1033
*val = BIT(st->avg_log2);
drivers/iio/adc/ad4030.c
1037
ad4030_get_sampling_freq(st, val);
drivers/iio/adc/ad4030.c
1121
const struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
1128
ret = regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad4030.c
1130
ret = regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad4030.c
1149
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
1151
return st->avg_log2 ? AD4030_SCAN_TYPE_AVG : AD4030_SCAN_TYPE_NORMAL;
drivers/iio/adc/ad4030.c
1174
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
1177
if (st->avg_log2 && ad4030_is_common_byte_asked(st, *scan_mask))
drivers/iio/adc/ad4030.c
1189
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
1192
if (st->mode == AD4030_OUT_DATA_MD_30_AVERAGED_DIFF)
drivers/iio/adc/ad4030.c
1195
offload_bpw = st->chip->precision_bits;
drivers/iio/adc/ad4030.c
1197
st->offload_xfer.bits_per_word = offload_bpw;
drivers/iio/adc/ad4030.c
1198
st->offload_xfer.len = spi_bpw_to_bytes(offload_bpw);
drivers/iio/adc/ad4030.c
1199
st->offload_xfer.offload_flags = SPI_OFFLOAD_XFER_RX_STREAM;
drivers/iio/adc/ad4030.c
1200
spi_message_init_with_transfers(&st->offload_msg, &st->offload_xfer, 1);
drivers/iio/adc/ad4030.c
1205
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
1216
ret = regmap_read(st->regmap, AD4030_REG_MODES, ®_modes);
drivers/iio/adc/ad4030.c
1220
if (st->chip->num_voltage_inputs > 1 &&
drivers/iio/adc/ad4030.c
1225
st->offload_msg.offload = st->offload;
drivers/iio/adc/ad4030.c
1226
ret = spi_optimize_message(st->spi, &st->offload_msg);
drivers/iio/adc/ad4030.c
1230
ret = pwm_set_waveform_might_sleep(st->cnv_trigger, &st->cnv_wf, false);
drivers/iio/adc/ad4030.c
1234
ret = spi_offload_trigger_enable(st->offload, st->offload_trigger,
drivers/iio/adc/ad4030.c
1235
&st->offload_trigger_config);
drivers/iio/adc/ad4030.c
1242
pwm_disable(st->cnv_trigger);
drivers/iio/adc/ad4030.c
1244
spi_unoptimize_message(&st->offload_msg);
drivers/iio/adc/ad4030.c
1251
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
1253
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/adc/ad4030.c
1255
pwm_disable(st->cnv_trigger);
drivers/iio/adc/ad4030.c
1257
spi_unoptimize_message(&st->offload_msg);
drivers/iio/adc/ad4030.c
1267
static int ad4030_regulators_get(struct ad4030_state *st)
drivers/iio/adc/ad4030.c
1269
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4030.c
1277
st->vio_uv = devm_regulator_get_enable_read_voltage(dev, "vio");
drivers/iio/adc/ad4030.c
1278
if (st->vio_uv < 0)
drivers/iio/adc/ad4030.c
1279
return dev_err_probe(dev, st->vio_uv,
drivers/iio/adc/ad4030.c
1282
st->vref_uv = devm_regulator_get_enable_read_voltage(dev, "ref");
drivers/iio/adc/ad4030.c
1283
if (st->vref_uv < 0) {
drivers/iio/adc/ad4030.c
1284
if (st->vref_uv != -ENODEV)
drivers/iio/adc/ad4030.c
1285
return dev_err_probe(dev, st->vref_uv,
drivers/iio/adc/ad4030.c
1289
st->vref_uv = devm_regulator_get_enable_read_voltage(dev,
drivers/iio/adc/ad4030.c
1291
if (st->vref_uv < 0)
drivers/iio/adc/ad4030.c
1292
return dev_err_probe(dev, st->vref_uv,
drivers/iio/adc/ad4030.c
1299
static int ad4030_reset(struct ad4030_state *st)
drivers/iio/adc/ad4030.c
1301
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4030.c
1315
return regmap_write(st->regmap, AD4030_REG_INTERFACE_CONFIG_A,
drivers/iio/adc/ad4030.c
1319
static int ad4030_detect_chip_info(const struct ad4030_state *st)
drivers/iio/adc/ad4030.c
1324
ret = regmap_read(st->regmap, AD4030_REG_CHIP_GRADE, &grade);
drivers/iio/adc/ad4030.c
1329
if (grade != st->chip->grade)
drivers/iio/adc/ad4030.c
1330
dev_warn(&st->spi->dev, "Unknown grade(0x%x) for %s\n", grade,
drivers/iio/adc/ad4030.c
1331
st->chip->name);
drivers/iio/adc/ad4030.c
1336
static int ad4030_pwm_get(struct ad4030_state *st)
drivers/iio/adc/ad4030.c
1338
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4030.c
1340
st->cnv_trigger = devm_pwm_get(dev, NULL);
drivers/iio/adc/ad4030.c
1341
if (IS_ERR(st->cnv_trigger))
drivers/iio/adc/ad4030.c
1342
return dev_err_probe(dev, PTR_ERR(st->cnv_trigger),
drivers/iio/adc/ad4030.c
1349
pwm_disable(st->cnv_trigger);
drivers/iio/adc/ad4030.c
1354
static int ad4030_config(struct ad4030_state *st)
drivers/iio/adc/ad4030.c
1359
st->offset_avail[0] = (int)BIT(st->chip->precision_bits - 1) * -1;
drivers/iio/adc/ad4030.c
1360
st->offset_avail[1] = 1;
drivers/iio/adc/ad4030.c
1361
st->offset_avail[2] = BIT(st->chip->precision_bits - 1) - 1;
drivers/iio/adc/ad4030.c
1363
if (st->chip->num_voltage_inputs > 1)
drivers/iio/adc/ad4030.c
1370
ret = regmap_write(st->regmap, AD4030_REG_MODES, reg_modes);
drivers/iio/adc/ad4030.c
1374
if (st->vio_uv < AD4030_VIO_THRESHOLD_UV)
drivers/iio/adc/ad4030.c
1375
return regmap_write(st->regmap, AD4030_REG_IO,
drivers/iio/adc/ad4030.c
1382
struct ad4030_state *st)
drivers/iio/adc/ad4030.c
1384
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4030.c
1389
st->offload_trigger = devm_spi_offload_trigger_get(dev, st->offload,
drivers/iio/adc/ad4030.c
1391
if (IS_ERR(st->offload_trigger))
drivers/iio/adc/ad4030.c
1392
return dev_err_probe(dev, PTR_ERR(st->offload_trigger),
drivers/iio/adc/ad4030.c
1395
st->offload_trigger_config.type = SPI_OFFLOAD_TRIGGER_PERIODIC;
drivers/iio/adc/ad4030.c
1397
rx_dma = devm_spi_offload_rx_stream_request_dma_chan(dev, st->offload);
drivers/iio/adc/ad4030.c
1407
struct ad4030_state *st)
drivers/iio/adc/ad4030.c
1410
st->pga_gpios = devm_gpiod_get_array(dev, "pga", GPIOD_OUT_LOW);
drivers/iio/adc/ad4030.c
1411
if (IS_ERR(st->pga_gpios))
drivers/iio/adc/ad4030.c
1412
return dev_err_probe(dev, PTR_ERR(st->pga_gpios),
drivers/iio/adc/ad4030.c
1415
if (st->pga_gpios->ndescs != ADAQ4616_PGA_PINS)
drivers/iio/adc/ad4030.c
1420
st->scale_avail_size = ARRAY_SIZE(adaq4216_hw_gains_vpv);
drivers/iio/adc/ad4030.c
1421
st->pga_index = 0;
drivers/iio/adc/ad4030.c
1430
struct ad4030_state *st;
drivers/iio/adc/ad4030.c
1433
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad4030.c
1437
st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
1438
st->spi = spi;
drivers/iio/adc/ad4030.c
1440
st->regmap = devm_regmap_init(dev, &ad4030_regmap_bus, st,
drivers/iio/adc/ad4030.c
1442
if (IS_ERR(st->regmap))
drivers/iio/adc/ad4030.c
1443
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/adc/ad4030.c
1446
st->chip = spi_get_device_match_data(spi);
drivers/iio/adc/ad4030.c
1447
if (!st->chip)
drivers/iio/adc/ad4030.c
1450
ret = ad4030_regulators_get(st);
drivers/iio/adc/ad4030.c
1460
ret = ad4030_reset(st);
drivers/iio/adc/ad4030.c
1464
ret = ad4030_detect_chip_info(st);
drivers/iio/adc/ad4030.c
1468
if (st->chip->has_pga) {
drivers/iio/adc/ad4030.c
1469
ret = ad4030_setup_pga(dev, indio_dev, st);
drivers/iio/adc/ad4030.c
1473
ad4030_fill_scale_avail(st);
drivers/iio/adc/ad4030.c
1476
ret = ad4030_config(st);
drivers/iio/adc/ad4030.c
1480
st->cnv_gpio = devm_gpiod_get(dev, "cnv", GPIOD_OUT_LOW);
drivers/iio/adc/ad4030.c
1481
if (IS_ERR(st->cnv_gpio))
drivers/iio/adc/ad4030.c
1482
return dev_err_probe(dev, PTR_ERR(st->cnv_gpio),
drivers/iio/adc/ad4030.c
1485
indio_dev->name = st->chip->name;
drivers/iio/adc/ad4030.c
1488
indio_dev->available_scan_masks = st->chip->available_masks;
drivers/iio/adc/ad4030.c
1490
st->offload = devm_spi_offload_get(dev, spi, &ad4030_offload_config);
drivers/iio/adc/ad4030.c
1491
ret = PTR_ERR_OR_ZERO(st->offload);
drivers/iio/adc/ad4030.c
1498
indio_dev->num_channels = 2 * st->chip->num_voltage_inputs + 1;
drivers/iio/adc/ad4030.c
1499
indio_dev->channels = st->chip->channels;
drivers/iio/adc/ad4030.c
1515
indio_dev->num_channels = st->chip->num_voltage_inputs;
drivers/iio/adc/ad4030.c
1516
indio_dev->channels = st->chip->offload_channels;
drivers/iio/adc/ad4030.c
1517
ret = ad4030_spi_offload_setup(indio_dev, st);
drivers/iio/adc/ad4030.c
1522
ret = ad4030_pwm_get(st);
drivers/iio/adc/ad4030.c
1531
ret = ad4030_update_conversion_rate(st, st->chip->max_sample_rate_hz >> 4,
drivers/iio/adc/ad4030.c
1532
st->avg_log2);
drivers/iio/adc/ad4030.c
317
static int ad4030_enter_config_mode(struct ad4030_state *st)
drivers/iio/adc/ad4030.c
319
st->tx_data[0] = AD4030_REG_ACCESS;
drivers/iio/adc/ad4030.c
322
.tx_buf = st->tx_data,
drivers/iio/adc/ad4030.c
327
return spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad4030.c
330
static int ad4030_exit_config_mode(struct ad4030_state *st)
drivers/iio/adc/ad4030.c
332
st->tx_data[0] = 0;
drivers/iio/adc/ad4030.c
333
st->tx_data[1] = AD4030_REG_EXIT_CFG_MODE;
drivers/iio/adc/ad4030.c
334
st->tx_data[2] = AD4030_REG_EXIT_CFG_MODE_EXIT_MSK;
drivers/iio/adc/ad4030.c
337
.tx_buf = st->tx_data,
drivers/iio/adc/ad4030.c
342
return spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad4030.c
349
struct ad4030_state *st = context;
drivers/iio/adc/ad4030.c
351
.tx_buf = st->tx_data,
drivers/iio/adc/ad4030.c
352
.rx_buf = st->rx_data.raw,
drivers/iio/adc/ad4030.c
357
if (xfer.len > sizeof(st->tx_data) ||
drivers/iio/adc/ad4030.c
358
xfer.len > sizeof(st->rx_data.raw))
drivers/iio/adc/ad4030.c
361
ret = ad4030_enter_config_mode(st);
drivers/iio/adc/ad4030.c
365
memset(st->tx_data, 0, sizeof(st->tx_data));
drivers/iio/adc/ad4030.c
366
memcpy(st->tx_data, reg, reg_size);
drivers/iio/adc/ad4030.c
368
ret = spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad4030.c
372
memcpy(val, &st->rx_data.raw[reg_size], val_size);
drivers/iio/adc/ad4030.c
374
return ad4030_exit_config_mode(st);
drivers/iio/adc/ad4030.c
380
struct ad4030_state *st = context;
drivers/iio/adc/ad4030.c
386
.tx_buf = st->tx_data,
drivers/iio/adc/ad4030.c
391
if (count > sizeof(st->tx_data))
drivers/iio/adc/ad4030.c
394
ret = ad4030_enter_config_mode(st);
drivers/iio/adc/ad4030.c
398
memcpy(st->tx_data, data, count);
drivers/iio/adc/ad4030.c
400
ret = spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad4030.c
414
return ad4030_exit_config_mode(st);
drivers/iio/adc/ad4030.c
456
static void ad4030_fill_scale_avail(struct ad4030_state *st)
drivers/iio/adc/ad4030.c
467
mag_bits = st->chip->precision_bits - 1;
drivers/iio/adc/ad4030.c
470
range = mult_frac(st->vref_uv, adaq4216_hw_gains_frac[i][1],
drivers/iio/adc/ad4030.c
479
st->scale_avail[i][0] = int_part;
drivers/iio/adc/ad4030.c
480
st->scale_avail[i][1] = fract_part;
drivers/iio/adc/ad4030.c
484
static int ad4030_set_pga_gain(struct ad4030_state *st)
drivers/iio/adc/ad4030.c
488
bitmap_write(bitmap, st->pga_index, 0, ADAQ4616_PGA_PINS);
drivers/iio/adc/ad4030.c
490
return gpiod_multi_set_value_cansleep(st->pga_gpios, bitmap);
drivers/iio/adc/ad4030.c
495
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
496
unsigned int mag_bits = st->chip->precision_bits - 1;
drivers/iio/adc/ad4030.c
500
if (!st->pga_gpios)
drivers/iio/adc/ad4030.c
508
gain_nano = DIV_ROUND_CLOSEST(st->vref_uv, tmp);
drivers/iio/adc/ad4030.c
509
st->pga_index = find_closest(gain_nano, adaq4216_hw_gains_vpv,
drivers/iio/adc/ad4030.c
512
return ad4030_set_pga_gain(st);
drivers/iio/adc/ad4030.c
520
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
528
if (st->chip->has_pga && scan_type->realbits != 8) {
drivers/iio/adc/ad4030.c
529
*val = st->scale_avail[st->pga_index][0];
drivers/iio/adc/ad4030.c
530
*val2 = st->scale_avail[st->pga_index][1];
drivers/iio/adc/ad4030.c
535
*val = (st->vref_uv * 2) / MILLI;
drivers/iio/adc/ad4030.c
537
*val = st->vref_uv / MILLI;
drivers/iio/adc/ad4030.c
549
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
553
ret = regmap_bulk_read(st->regmap, AD4030_REG_GAIN_CHAN(chan->address),
drivers/iio/adc/ad4030.c
554
st->rx_data.raw, AD4030_REG_GAIN_BYTES_NB);
drivers/iio/adc/ad4030.c
558
gain = get_unaligned_be16(st->rx_data.raw);
drivers/iio/adc/ad4030.c
573
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
576
ret = regmap_bulk_read(st->regmap,
drivers/iio/adc/ad4030.c
578
st->rx_data.raw, AD4030_REG_OFFSET_BYTES_NB);
drivers/iio/adc/ad4030.c
582
switch (st->chip->precision_bits) {
drivers/iio/adc/ad4030.c
584
*val = sign_extend32(get_unaligned_be16(st->rx_data.raw), 15);
drivers/iio/adc/ad4030.c
588
*val = sign_extend32(get_unaligned_be24(st->rx_data.raw), 23);
drivers/iio/adc/ad4030.c
596
static void ad4030_get_sampling_freq(struct ad4030_state *st, int *freq)
drivers/iio/adc/ad4030.c
598
struct spi_offload_trigger_config *config = &st->offload_trigger_config;
drivers/iio/adc/ad4030.c
608
static int ad4030_update_conversion_rate(struct ad4030_state *st,
drivers/iio/adc/ad4030.c
611
struct spi_offload_trigger_config *config = &st->offload_trigger_config;
drivers/iio/adc/ad4030.c
638
ret = pwm_round_waveform_might_sleep(st->cnv_trigger, &cnv_wf);
drivers/iio/adc/ad4030.c
668
ret = spi_offload_trigger_validate(st->offload_trigger, config);
drivers/iio/adc/ad4030.c
674
st->cnv_wf = cnv_wf;
drivers/iio/adc/ad4030.c
681
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
686
if (!in_range(freq_hz, 0, st->chip->max_sample_rate_hz))
drivers/iio/adc/ad4030.c
689
return ad4030_update_conversion_rate(st, freq_hz, st->avg_log2);
drivers/iio/adc/ad4030.c
697
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
710
st->tx_data);
drivers/iio/adc/ad4030.c
712
return regmap_bulk_write(st->regmap,
drivers/iio/adc/ad4030.c
714
st->tx_data, AD4030_REG_GAIN_BYTES_NB);
drivers/iio/adc/ad4030.c
721
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
723
if (offset < st->offset_avail[0] || offset > st->offset_avail[2])
drivers/iio/adc/ad4030.c
726
st->tx_data[2] = 0;
drivers/iio/adc/ad4030.c
728
switch (st->chip->precision_bits) {
drivers/iio/adc/ad4030.c
730
put_unaligned_be16(offset, st->tx_data);
drivers/iio/adc/ad4030.c
734
put_unaligned_be24(offset, st->tx_data);
drivers/iio/adc/ad4030.c
741
return regmap_bulk_write(st->regmap,
drivers/iio/adc/ad4030.c
743
st->tx_data, AD4030_REG_OFFSET_BYTES_NB);
drivers/iio/adc/ad4030.c
748
struct ad4030_state *st = iio_priv(dev);
drivers/iio/adc/ad4030.c
757
if (st->offload_trigger) {
drivers/iio/adc/ad4030.c
769
ad4030_get_sampling_freq(st, &freq_hz);
drivers/iio/adc/ad4030.c
770
ret = ad4030_update_conversion_rate(st, freq_hz, avg_log2);
drivers/iio/adc/ad4030.c
775
ret = regmap_write(st->regmap, AD4030_REG_AVG,
drivers/iio/adc/ad4030.c
781
st->avg_log2 = avg_log2;
drivers/iio/adc/ad4030.c
786
static bool ad4030_is_common_byte_asked(struct ad4030_state *st,
drivers/iio/adc/ad4030.c
789
return mask & (st->chip->num_voltage_inputs == 1 ?
drivers/iio/adc/ad4030.c
796
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
798
if (st->avg_log2 > 0) {
drivers/iio/adc/ad4030.c
799
st->mode = AD4030_OUT_DATA_MD_30_AVERAGED_DIFF;
drivers/iio/adc/ad4030.c
800
} else if (ad4030_is_common_byte_asked(st, mask)) {
drivers/iio/adc/ad4030.c
801
switch (st->chip->precision_bits) {
drivers/iio/adc/ad4030.c
803
st->mode = AD4030_OUT_DATA_MD_16_DIFF_8_COM;
drivers/iio/adc/ad4030.c
807
st->mode = AD4030_OUT_DATA_MD_24_DIFF_8_COM;
drivers/iio/adc/ad4030.c
814
st->mode = AD4030_OUT_DATA_MD_DIFF;
drivers/iio/adc/ad4030.c
817
return regmap_update_bits(st->regmap, AD4030_REG_MODES,
drivers/iio/adc/ad4030.c
819
st->mode);
drivers/iio/adc/ad4030.c
863
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
867
unsigned long cnv_nb = BIT(st->avg_log2);
drivers/iio/adc/ad4030.c
871
scan_type = iio_get_current_scan_type(indio_dev, st->chip->channels);
drivers/iio/adc/ad4030.c
881
bytes_to_read += (st->mode == AD4030_OUT_DATA_MD_24_DIFF_8_COM ||
drivers/iio/adc/ad4030.c
882
st->mode == AD4030_OUT_DATA_MD_16_DIFF_8_COM) ? 1 : 0;
drivers/iio/adc/ad4030.c
884
bytes_to_read *= st->chip->num_voltage_inputs;
drivers/iio/adc/ad4030.c
887
gpiod_set_value_cansleep(st->cnv_gpio, 1);
drivers/iio/adc/ad4030.c
889
gpiod_set_value_cansleep(st->cnv_gpio, 0);
drivers/iio/adc/ad4030.c
890
ndelay(st->chip->tcyc_ns);
drivers/iio/adc/ad4030.c
893
ret = spi_read(st->spi, st->rx_data.raw, bytes_to_read);
drivers/iio/adc/ad4030.c
897
if (st->chip->num_voltage_inputs == 2)
drivers/iio/adc/ad4030.c
898
ad4030_extract_interleaved(st->rx_data.raw,
drivers/iio/adc/ad4030.c
899
&st->rx_data.dual.diff[0],
drivers/iio/adc/ad4030.c
900
&st->rx_data.dual.diff[1]);
drivers/iio/adc/ad4030.c
908
if (st->mode != AD4030_OUT_DATA_MD_16_DIFF_8_COM &&
drivers/iio/adc/ad4030.c
909
st->mode != AD4030_OUT_DATA_MD_24_DIFF_8_COM)
drivers/iio/adc/ad4030.c
912
if (st->chip->num_voltage_inputs == 1) {
drivers/iio/adc/ad4030.c
913
st->rx_data.single.common = st->rx_data.raw[diff_realbytes];
drivers/iio/adc/ad4030.c
917
for (i = 0; i < st->chip->num_voltage_inputs; i++)
drivers/iio/adc/ad4030.c
918
st->rx_data.dual.common[i] =
drivers/iio/adc/ad4030.c
919
st->rx_data.raw[diff_storagebytes * i + diff_realbytes];
drivers/iio/adc/ad4030.c
927
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
939
if (st->chip->num_voltage_inputs == 1)
drivers/iio/adc/ad4030.c
940
*val = st->rx_data.single.diff;
drivers/iio/adc/ad4030.c
942
*val = st->rx_data.dual.diff[chan->address];
drivers/iio/adc/ad4030.c
944
if (st->chip->num_voltage_inputs == 1)
drivers/iio/adc/ad4030.c
945
*val = st->rx_data.single.common;
drivers/iio/adc/ad4030.c
947
*val = st->rx_data.dual.common[chan->address];
drivers/iio/adc/ad4030.c
956
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
963
iio_push_to_buffers_with_ts(indio_dev, &st->rx_data, sizeof(st->rx_data),
drivers/iio/adc/ad4030.c
983
struct ad4030_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4030.c
987
*vals = st->offset_avail;
drivers/iio/adc/ad4062.c
1001
static int ad4062_monitor_mode_disable(struct ad4062_state *st)
drivers/iio/adc/ad4062.c
1003
pm_runtime_put_autosuspend(&st->i3cdev->dev);
drivers/iio/adc/ad4062.c
1012
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
1014
return st->wait_event;
drivers/iio/adc/ad4062.c
1020
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
1023
if (st->wait_event == state)
drivers/iio/adc/ad4062.c
1026
ret = ad4062_monitor_mode_enable(st);
drivers/iio/adc/ad4062.c
1028
ret = ad4062_monitor_mode_disable(st);
drivers/iio/adc/ad4062.c
1032
st->wait_event = state;
drivers/iio/adc/ad4062.c
1052
static int __ad4062_read_event_info_value(struct ad4062_state *st,
drivers/iio/adc/ad4062.c
1063
ret = regmap_bulk_read(st->regmap, reg, &st->buf.be16,
drivers/iio/adc/ad4062.c
1064
sizeof(st->buf.be16));
drivers/iio/adc/ad4062.c
1068
*val = sign_extend32(be16_to_cpu(st->buf.be16), AD4062_LIMIT_BITS - 1);
drivers/iio/adc/ad4062.c
1073
static int __ad4062_read_event_info_hysteresis(struct ad4062_state *st,
drivers/iio/adc/ad4062.c
1082
return regmap_read(st->regmap, reg, val);
drivers/iio/adc/ad4062.c
1089
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
1091
if (st->wait_event)
drivers/iio/adc/ad4062.c
1096
return __ad4062_read_event_info_value(st, dir, val);
drivers/iio/adc/ad4062.c
1098
return __ad4062_read_event_info_hysteresis(st, dir, val);
drivers/iio/adc/ad4062.c
1121
static int __ad4062_write_event_info_value(struct ad4062_state *st,
drivers/iio/adc/ad4062.c
1132
st->buf.be16 = cpu_to_be16(val);
drivers/iio/adc/ad4062.c
1134
return regmap_bulk_write(st->regmap, reg, &st->buf.be16,
drivers/iio/adc/ad4062.c
1135
sizeof(st->buf.be16));
drivers/iio/adc/ad4062.c
1138
static int __ad4062_write_event_info_hysteresis(struct ad4062_state *st,
drivers/iio/adc/ad4062.c
1150
return regmap_write(st->regmap, reg, val);
drivers/iio/adc/ad4062.c
1158
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
1160
if (st->wait_event)
drivers/iio/adc/ad4062.c
1167
return __ad4062_write_event_info_value(st, dir, val);
drivers/iio/adc/ad4062.c
1169
return __ad4062_write_event_info_hysteresis(st, dir, val);
drivers/iio/adc/ad4062.c
1199
static inline int ad4062_sizeof_storagebits(struct ad4062_state *st)
drivers/iio/adc/ad4062.c
1202
iio_get_current_scan_type(st->indio_dev, st->chip->channels);
drivers/iio/adc/ad4062.c
1211
static inline size_t ad4062_get_conv_addr(struct ad4062_state *st, size_t _sizeof)
drivers/iio/adc/ad4062.c
1213
if (st->gpo_irq[1])
drivers/iio/adc/ad4062.c
1220
static int pm_ad4062_triggered_buffer_postenable(struct ad4062_state *st)
drivers/iio/adc/ad4062.c
1224
PM_RUNTIME_ACQUIRE(&st->i3cdev->dev, pm);
drivers/iio/adc/ad4062.c
1229
if (st->wait_event)
drivers/iio/adc/ad4062.c
1232
ret = ad4062_set_operation_mode(st, st->mode);
drivers/iio/adc/ad4062.c
1236
ret = ad4062_sizeof_storagebits(st);
drivers/iio/adc/ad4062.c
1240
st->conv_sizeof = ret;
drivers/iio/adc/ad4062.c
1242
st->conv_addr = ad4062_get_conv_addr(st, st->conv_sizeof);
drivers/iio/adc/ad4062.c
1246
.data.out = &st->conv_addr,
drivers/iio/adc/ad4062.c
1247
.len = sizeof(st->conv_addr),
drivers/iio/adc/ad4062.c
1251
.data.in = &st->buf.be32,
drivers/iio/adc/ad4062.c
1252
.len = sizeof(st->buf.be32),
drivers/iio/adc/ad4062.c
1257
return i3c_device_do_xfers(st->i3cdev, xfer_sample,
drivers/iio/adc/ad4062.c
1258
st->gpo_irq[1] ? 2 : 1, I3C_SDR);
drivers/iio/adc/ad4062.c
1263
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
1266
ret = pm_ad4062_triggered_buffer_postenable(st);
drivers/iio/adc/ad4062.c
1270
pm_runtime_get_noresume(&st->i3cdev->dev);
drivers/iio/adc/ad4062.c
1276
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
1278
pm_runtime_put_autosuspend(&st->i3cdev->dev);
drivers/iio/adc/ad4062.c
1290
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
1293
return regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad4062.c
1295
return regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad4062.c
1301
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
1303
return st->mode == AD4062_BURST_AVERAGING_MODE ?
drivers/iio/adc/ad4062.c
1331
static int ad4062_regulators_get(struct ad4062_state *st, bool *ref_sel)
drivers/iio/adc/ad4062.c
1333
struct device *dev = &st->i3cdev->dev;
drivers/iio/adc/ad4062.c
1340
st->vref_uV = devm_regulator_get_enable_read_voltage(dev, "ref");
drivers/iio/adc/ad4062.c
1341
*ref_sel = st->vref_uV == -ENODEV;
drivers/iio/adc/ad4062.c
1342
if (st->vref_uV < 0 && !*ref_sel)
drivers/iio/adc/ad4062.c
1343
return dev_err_probe(dev, st->vref_uV,
drivers/iio/adc/ad4062.c
1347
st->vref_uV = devm_regulator_get_enable_read_voltage(dev, "vdd");
drivers/iio/adc/ad4062.c
1348
if (st->vref_uV < 0)
drivers/iio/adc/ad4062.c
1349
return dev_err_probe(dev, st->vref_uV,
drivers/iio/adc/ad4062.c
1368
struct ad4062_state *st = gpiochip_get_data(gc);
drivers/iio/adc/ad4062.c
1372
return regmap_update_bits(st->regmap, AD4062_REG_GP_CONF,
drivers/iio/adc/ad4062.c
1376
return regmap_update_bits(st->regmap, AD4062_REG_GP_CONF,
drivers/iio/adc/ad4062.c
1383
struct ad4062_state *st = gpiochip_get_data(gc);
drivers/iio/adc/ad4062.c
1387
ret = regmap_read(st->regmap, AD4062_REG_GP_CONF, ®_val);
drivers/iio/adc/ad4062.c
1401
struct ad4062_state *st = data;
drivers/iio/adc/ad4062.c
1405
regmap_update_bits(st->regmap, AD4062_REG_GP_CONF,
drivers/iio/adc/ad4062.c
1414
struct ad4062_state *st = gpiochip_get_data(gc);
drivers/iio/adc/ad4062.c
1418
for (unsigned int i = 0; i < ARRAY_SIZE(st->gpo_irq); i++)
drivers/iio/adc/ad4062.c
1419
__assign_bit(i, valid_mask, !st->gpo_irq[i]);
drivers/iio/adc/ad4062.c
1424
static int ad4062_gpio_init(struct ad4062_state *st)
drivers/iio/adc/ad4062.c
1426
struct device *dev = &st->i3cdev->dev;
drivers/iio/adc/ad4062.c
1440
if (!st->gpo_irq[0]) {
drivers/iio/adc/ad4062.c
1444
if (!st->gpo_irq[1]) {
drivers/iio/adc/ad4062.c
1449
ret = regmap_update_bits(st->regmap, AD4062_REG_GP_CONF,
drivers/iio/adc/ad4062.c
1454
ret = devm_add_action_or_reset(dev, ad4062_gpio_disable, st);
drivers/iio/adc/ad4062.c
1459
gc->label = st->chip->name;
drivers/iio/adc/ad4062.c
1469
ret = devm_gpiochip_add_data(dev, gc, st);
drivers/iio/adc/ad4062.c
1489
struct ad4062_state *st;
drivers/iio/adc/ad4062.c
1493
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad4062.c
1497
st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
1498
st->i3cdev = i3cdev;
drivers/iio/adc/ad4062.c
1499
i3cdev_set_drvdata(i3cdev, st);
drivers/iio/adc/ad4062.c
1500
init_completion(&st->completion);
drivers/iio/adc/ad4062.c
1502
ret = ad4062_regulators_get(st, &ref_sel);
drivers/iio/adc/ad4062.c
1506
st->regmap = devm_regmap_init_i3c(i3cdev, &ad4062_regmap_config);
drivers/iio/adc/ad4062.c
1507
if (IS_ERR(st->regmap))
drivers/iio/adc/ad4062.c
1508
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/adc/ad4062.c
1511
st->mode = AD4062_SAMPLE_MODE;
drivers/iio/adc/ad4062.c
1512
st->wait_event = false;
drivers/iio/adc/ad4062.c
1513
st->chip = chip;
drivers/iio/adc/ad4062.c
1514
st->sampling_frequency = 0;
drivers/iio/adc/ad4062.c
1515
st->events_frequency = 0;
drivers/iio/adc/ad4062.c
1516
st->oversamp_ratio = 0;
drivers/iio/adc/ad4062.c
1517
st->indio_dev = indio_dev;
drivers/iio/adc/ad4062.c
1525
ret = ad4062_soft_reset(st);
drivers/iio/adc/ad4062.c
1529
ret = ad4062_check_ids(st);
drivers/iio/adc/ad4062.c
1564
ret = ad4062_gpio_init(st);
drivers/iio/adc/ad4062.c
1568
ret = devm_work_autocancel(dev, &st->trig_conv, ad4062_trigger_work);
drivers/iio/adc/ad4062.c
1577
struct ad4062_state *st = dev_get_drvdata(dev);
drivers/iio/adc/ad4062.c
1579
return regmap_write(st->regmap, AD4062_REG_DEVICE_CONFIG,
drivers/iio/adc/ad4062.c
1586
struct ad4062_state *st = dev_get_drvdata(dev);
drivers/iio/adc/ad4062.c
1589
ret = regmap_clear_bits(st->regmap, AD4062_REG_DEVICE_CONFIG,
drivers/iio/adc/ad4062.c
266
struct ad4062_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/adc/ad4062.c
268
return sysfs_emit(buf, "%d\n", ad4062_conversion_freqs[st->events_frequency]);
drivers/iio/adc/ad4062.c
274
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
277
if (st->wait_event)
drivers/iio/adc/ad4062.c
284
st->events_frequency = find_closest_descending(val, ad4062_conversion_freqs,
drivers/iio/adc/ad4062.c
330
static int ad4062_set_oversampling_ratio(struct ad4062_state *st, int val, int val2)
drivers/iio/adc/ad4062.c
332
const u32 _max = st->chip->avg_max;
drivers/iio/adc/ad4062.c
342
st->mode = AD4062_SAMPLE_MODE;
drivers/iio/adc/ad4062.c
344
st->mode = AD4062_BURST_AVERAGING_MODE;
drivers/iio/adc/ad4062.c
345
ret = regmap_write(st->regmap, AD4062_REG_AVG_CONFIG, val - 1);
drivers/iio/adc/ad4062.c
349
st->oversamp_ratio = val;
drivers/iio/adc/ad4062.c
354
static int ad4062_get_oversampling_ratio(struct ad4062_state *st, int *val)
drivers/iio/adc/ad4062.c
358
if (st->mode == AD4062_SAMPLE_MODE) {
drivers/iio/adc/ad4062.c
363
ret = regmap_read(st->regmap, AD4062_REG_AVG_CONFIG, &buf);
drivers/iio/adc/ad4062.c
384
static int ad4062_populate_sampling_frequency(struct ad4062_state *st)
drivers/iio/adc/ad4062.c
387
st->samp_freqs[i] =
drivers/iio/adc/ad4062.c
389
st->oversamp_ratio);
drivers/iio/adc/ad4062.c
393
static int ad4062_get_sampling_frequency(struct ad4062_state *st, int *val)
drivers/iio/adc/ad4062.c
395
int freq = ad4062_conversion_freqs[st->sampling_frequency];
drivers/iio/adc/ad4062.c
397
*val = ad4062_calc_sampling_frequency(freq, st->oversamp_ratio);
drivers/iio/adc/ad4062.c
401
static int ad4062_set_sampling_frequency(struct ad4062_state *st, int val, int val2)
drivers/iio/adc/ad4062.c
408
ret = ad4062_populate_sampling_frequency(st);
drivers/iio/adc/ad4062.c
412
st->sampling_frequency =
drivers/iio/adc/ad4062.c
413
find_closest_descending(val, st->samp_freqs,
drivers/iio/adc/ad4062.c
418
static int ad4062_check_ids(struct ad4062_state *st)
drivers/iio/adc/ad4062.c
420
struct device *dev = &st->i3cdev->dev;
drivers/iio/adc/ad4062.c
424
ret = regmap_bulk_read(st->regmap, AD4062_REG_PROD_ID_1,
drivers/iio/adc/ad4062.c
425
&st->buf.be16, sizeof(st->buf.be16));
drivers/iio/adc/ad4062.c
429
val = be16_to_cpu(st->buf.be16);
drivers/iio/adc/ad4062.c
430
if (val != st->chip->prod_id)
drivers/iio/adc/ad4062.c
433
ret = regmap_bulk_read(st->regmap, AD4062_REG_VENDOR_H,
drivers/iio/adc/ad4062.c
434
&st->buf.be16, sizeof(st->buf.be16));
drivers/iio/adc/ad4062.c
438
val = be16_to_cpu(st->buf.be16);
drivers/iio/adc/ad4062.c
446
static int ad4062_conversion_frequency_set(struct ad4062_state *st, u8 val)
drivers/iio/adc/ad4062.c
448
return regmap_write(st->regmap, AD4062_REG_TIMER_CONFIG,
drivers/iio/adc/ad4062.c
452
static int ad4062_set_operation_mode(struct ad4062_state *st,
drivers/iio/adc/ad4062.c
456
st->events_frequency : st->sampling_frequency;
drivers/iio/adc/ad4062.c
459
ret = ad4062_conversion_frequency_set(st, samp_freq);
drivers/iio/adc/ad4062.c
463
ret = regmap_update_bits(st->regmap, AD4062_REG_ADC_MODES,
drivers/iio/adc/ad4062.c
471
.data.out = &st->conv_addr,
drivers/iio/adc/ad4062.c
472
.len = sizeof(st->conv_addr),
drivers/iio/adc/ad4062.c
475
st->conv_addr = AD4062_REG_CONV_TRIGGER_32BITS;
drivers/iio/adc/ad4062.c
476
return i3c_device_do_xfers(st->i3cdev, &xfer_trigger, 1, I3C_SDR);
drivers/iio/adc/ad4062.c
479
return regmap_write(st->regmap, AD4062_REG_MODE_SET,
drivers/iio/adc/ad4062.c
483
static int ad4062_soft_reset(struct ad4062_state *st)
drivers/iio/adc/ad4062.c
488
ret = regmap_write(st->regmap, AD4062_REG_INTERFACE_CONFIG_A, val);
drivers/iio/adc/ad4062.c
501
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
509
ret = regmap_update_bits(st->regmap, AD4062_REG_GP_CONF,
drivers/iio/adc/ad4062.c
516
ret = regmap_update_bits(st->regmap, AD4062_REG_GP_CONF,
drivers/iio/adc/ad4062.c
523
ret = regmap_update_bits(st->regmap, AD4062_REG_ADC_CONFIG,
drivers/iio/adc/ad4062.c
530
ret = regmap_write(st->regmap, AD4062_REG_DEVICE_STATUS,
drivers/iio/adc/ad4062.c
535
ret = regmap_update_bits(st->regmap, AD4062_REG_INTR_CONF,
drivers/iio/adc/ad4062.c
542
ret = regmap_update_bits(st->regmap, AD4062_REG_INTR_CONF,
drivers/iio/adc/ad4062.c
549
st->buf.be16 = cpu_to_be16(AD4062_MON_VAL_MIDDLE_POINT);
drivers/iio/adc/ad4062.c
550
return regmap_bulk_write(st->regmap, AD4062_REG_MON_VAL,
drivers/iio/adc/ad4062.c
551
&st->buf.be16, sizeof(st->buf.be16));
drivers/iio/adc/ad4062.c
570
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
573
iio_trigger_poll(st->trigger);
drivers/iio/adc/ad4062.c
575
complete(&st->completion);
drivers/iio/adc/ad4062.c
583
struct ad4062_state *st = i3cdev_get_drvdata(i3cdev);
drivers/iio/adc/ad4062.c
585
if (st->wait_event) {
drivers/iio/adc/ad4062.c
586
iio_push_event(st->indio_dev,
drivers/iio/adc/ad4062.c
590
iio_get_time_ns(st->indio_dev));
drivers/iio/adc/ad4062.c
593
if (iio_buffer_enabled(st->indio_dev))
drivers/iio/adc/ad4062.c
594
iio_trigger_poll_nested(st->trigger);
drivers/iio/adc/ad4062.c
596
complete(&st->completion);
drivers/iio/adc/ad4062.c
601
struct ad4062_state *st =
drivers/iio/adc/ad4062.c
610
.data.in = &st->buf.be32,
drivers/iio/adc/ad4062.c
611
.len = st->conv_sizeof,
drivers/iio/adc/ad4062.c
615
.data.out = &st->conv_addr,
drivers/iio/adc/ad4062.c
616
.len = sizeof(st->conv_addr),
drivers/iio/adc/ad4062.c
620
ret = i3c_device_do_xfers(st->i3cdev, &xfer_sample, 1, I3C_SDR);
drivers/iio/adc/ad4062.c
624
iio_push_to_buffers_with_ts(st->indio_dev, &st->buf.be32, st->conv_sizeof,
drivers/iio/adc/ad4062.c
625
iio_get_time_ns(st->indio_dev));
drivers/iio/adc/ad4062.c
626
if (st->gpo_irq[1])
drivers/iio/adc/ad4062.c
629
i3c_device_do_xfers(st->i3cdev, &xfer_trigger, 1, I3C_SDR);
drivers/iio/adc/ad4062.c
636
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
639
schedule_work(&st->trig_conv);
drivers/iio/adc/ad4062.c
684
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
685
struct device *dev = &st->i3cdev->dev;
drivers/iio/adc/ad4062.c
688
ret = fwnode_irq_get_byname(dev_fwnode(&st->i3cdev->dev), "gp0");
drivers/iio/adc/ad4062.c
693
st->gpo_irq[0] = false;
drivers/iio/adc/ad4062.c
694
ret = regmap_update_bits(st->regmap, AD4062_REG_ADC_IBI_EN,
drivers/iio/adc/ad4062.c
700
st->gpo_irq[0] = true;
drivers/iio/adc/ad4062.c
709
ret = fwnode_irq_get_byname(dev_fwnode(&st->i3cdev->dev), "gp1");
drivers/iio/adc/ad4062.c
714
st->gpo_irq[1] = false;
drivers/iio/adc/ad4062.c
715
return regmap_update_bits(st->regmap, AD4062_REG_ADC_IBI_EN,
drivers/iio/adc/ad4062.c
719
st->gpo_irq[1] = true;
drivers/iio/adc/ad4062.c
731
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
732
struct device *dev = &st->i3cdev->dev;
drivers/iio/adc/ad4062.c
735
st->trigger = devm_iio_trigger_alloc(dev, "%s-dev%d",
drivers/iio/adc/ad4062.c
738
if (!st->trigger)
drivers/iio/adc/ad4062.c
741
st->trigger->ops = &ad4062_trigger_ops;
drivers/iio/adc/ad4062.c
742
iio_trigger_set_drvdata(st->trigger, indio_dev);
drivers/iio/adc/ad4062.c
744
ret = devm_iio_trigger_register(dev, st->trigger);
drivers/iio/adc/ad4062.c
748
indio_dev->trig = iio_trigger_get(st->trigger);
drivers/iio/adc/ad4062.c
762
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
769
*len -= st->chip->avg_max == 256 ? 4 : 0;
drivers/iio/adc/ad4062.c
774
ret = ad4062_populate_sampling_frequency(st);
drivers/iio/adc/ad4062.c
777
*vals = st->samp_freqs;
drivers/iio/adc/ad4062.c
778
*len = st->oversamp_ratio ? ARRAY_SIZE(ad4062_conversion_freqs) : 1;
drivers/iio/adc/ad4062.c
789
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
796
scan_type = iio_get_current_scan_type(indio_dev, st->chip->channels);
drivers/iio/adc/ad4062.c
800
*val = (st->vref_uV * 2) / (MICRO / MILLI); /* signed */
drivers/iio/adc/ad4062.c
806
static int ad4062_get_chan_calibscale(struct ad4062_state *st, int *val, int *val2)
drivers/iio/adc/ad4062.c
810
ret = regmap_bulk_read(st->regmap, AD4062_REG_MON_VAL,
drivers/iio/adc/ad4062.c
811
&st->buf.be16, sizeof(st->buf.be16));
drivers/iio/adc/ad4062.c
816
*val = be16_to_cpu(st->buf.be16) * 2;
drivers/iio/adc/ad4062.c
822
static int ad4062_set_chan_calibscale(struct ad4062_state *st, int gain_int,
drivers/iio/adc/ad4062.c
836
st->buf.be16 = cpu_to_be16(reg_val);
drivers/iio/adc/ad4062.c
837
ret = regmap_bulk_write(st->regmap, AD4062_REG_MON_VAL,
drivers/iio/adc/ad4062.c
838
&st->buf.be16, sizeof(st->buf.be16));
drivers/iio/adc/ad4062.c
843
return regmap_update_bits(st->regmap, AD4062_REG_ADC_CONFIG,
drivers/iio/adc/ad4062.c
849
static int ad4062_read_chan_raw(struct ad4062_state *st, int *val)
drivers/iio/adc/ad4062.c
851
struct i3c_device *i3cdev = st->i3cdev;
drivers/iio/adc/ad4062.c
853
.data.out = &st->conv_addr,
drivers/iio/adc/ad4062.c
854
.len = sizeof(st->conv_addr),
drivers/iio/adc/ad4062.c
858
.data.in = &st->buf.be32,
drivers/iio/adc/ad4062.c
859
.len = sizeof(st->buf.be32),
drivers/iio/adc/ad4062.c
864
PM_RUNTIME_ACQUIRE(&st->i3cdev->dev, pm);
drivers/iio/adc/ad4062.c
869
ret = ad4062_set_operation_mode(st, st->mode);
drivers/iio/adc/ad4062.c
873
reinit_completion(&st->completion);
drivers/iio/adc/ad4062.c
875
st->conv_addr = AD4062_REG_CONV_TRIGGER_32BITS;
drivers/iio/adc/ad4062.c
883
ret = wait_for_completion_timeout(&st->completion,
drivers/iio/adc/ad4062.c
891
*val = be32_to_cpu(st->buf.be32);
drivers/iio/adc/ad4062.c
895
static int ad4062_read_raw_dispatch(struct ad4062_state *st,
drivers/iio/adc/ad4062.c
898
if (st->wait_event)
drivers/iio/adc/ad4062.c
903
return ad4062_read_chan_raw(st, val);
drivers/iio/adc/ad4062.c
906
return ad4062_get_chan_calibscale(st, val, val2);
drivers/iio/adc/ad4062.c
909
return ad4062_get_oversampling_ratio(st, val);
drivers/iio/adc/ad4062.c
920
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
928
return ad4062_get_sampling_frequency(st, val);
drivers/iio/adc/ad4062.c
934
ret = ad4062_read_raw_dispatch(st, val, val2, info);
drivers/iio/adc/ad4062.c
939
static int ad4062_write_raw_dispatch(struct ad4062_state *st, int val, int val2,
drivers/iio/adc/ad4062.c
942
if (st->wait_event)
drivers/iio/adc/ad4062.c
947
return ad4062_set_oversampling_ratio(st, val, val2);
drivers/iio/adc/ad4062.c
950
return ad4062_set_chan_calibscale(st, val, val2);
drivers/iio/adc/ad4062.c
961
struct ad4062_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4062.c
966
return ad4062_set_sampling_frequency(st, val, val2);
drivers/iio/adc/ad4062.c
972
ret = ad4062_write_raw_dispatch(st, val, val2, info);
drivers/iio/adc/ad4062.c
977
static int pm_ad4062_monitor_mode_enable(struct ad4062_state *st)
drivers/iio/adc/ad4062.c
981
PM_RUNTIME_ACQUIRE(&st->i3cdev->dev, pm);
drivers/iio/adc/ad4062.c
986
return ad4062_set_operation_mode(st, AD4062_MONITOR_MODE);
drivers/iio/adc/ad4062.c
989
static int ad4062_monitor_mode_enable(struct ad4062_state *st)
drivers/iio/adc/ad4062.c
993
ret = pm_ad4062_monitor_mode_enable(st);
drivers/iio/adc/ad4062.c
997
pm_runtime_get_noresume(&st->i3cdev->dev);
drivers/iio/adc/ad4080.c
211
struct ad4080_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4080.c
214
return regmap_read(st->regmap[0], reg, readval);
drivers/iio/adc/ad4080.c
216
return regmap_write(st->regmap[0], reg, writeval);
drivers/iio/adc/ad4080.c
219
static int ad4080_get_scale(struct ad4080_state *st, int *val, int *val2)
drivers/iio/adc/ad4080.c
223
tmp = (st->info->scale_table[0][0] * 1000000ULL) >>
drivers/iio/adc/ad4080.c
224
st->info->channels[0].scan_type.realbits;
drivers/iio/adc/ad4080.c
234
struct ad4080_state *st = iio_priv(dev);
drivers/iio/adc/ad4080.c
239
ret = regmap_read(st->regmap[ch], AD4080_REG_FILTER_CONFIG, &data);
drivers/iio/adc/ad4080.c
250
struct ad4080_state *st = iio_priv(dev);
drivers/iio/adc/ad4080.c
253
guard(mutex)(&st->lock);
drivers/iio/adc/ad4080.c
255
if ((st->filter_type[ch] >= SINC_5 && mode >= 512) || mode < 2)
drivers/iio/adc/ad4080.c
258
return regmap_update_bits(st->regmap[ch], AD4080_REG_FILTER_CONFIG,
drivers/iio/adc/ad4080.c
268
struct ad4080_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4080.c
273
return ad4080_get_scale(st, val, val2);
drivers/iio/adc/ad4080.c
278
if (st->filter_type[chan->channel] == SINC_5_COMP)
drivers/iio/adc/ad4080.c
280
if (st->filter_type[chan->channel])
drivers/iio/adc/ad4080.c
281
*val = DIV_ROUND_CLOSEST(st->clk_rate, dec_rate);
drivers/iio/adc/ad4080.c
283
*val = st->clk_rate;
drivers/iio/adc/ad4080.c
286
if (st->filter_type[chan->channel] == FILTER_NONE) {
drivers/iio/adc/ad4080.c
303
struct ad4080_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4080.c
307
if (st->filter_type[chan->channel] == FILTER_NONE && val > 1)
drivers/iio/adc/ad4080.c
316
static int ad4080_lvds_sync_write(struct ad4080_state *st, unsigned int ch)
drivers/iio/adc/ad4080.c
318
struct device *dev = regmap_get_device(st->regmap[ch]);
drivers/iio/adc/ad4080.c
321
ret = regmap_set_bits(st->regmap[ch], AD4080_REG_ADC_DATA_INTF_CONFIG_A,
drivers/iio/adc/ad4080.c
326
ret = iio_backend_interface_data_align(st->back[ch], 10000);
drivers/iio/adc/ad4080.c
332
return regmap_clear_bits(st->regmap[ch], AD4080_REG_ADC_DATA_INTF_CONFIG_A,
drivers/iio/adc/ad4080.c
339
struct ad4080_state *st = iio_priv(dev);
drivers/iio/adc/ad4080.c
344
ret = regmap_read(st->regmap[ch], AD4080_REG_FILTER_CONFIG, &data);
drivers/iio/adc/ad4080.c
355
struct ad4080_state *st = iio_priv(dev);
drivers/iio/adc/ad4080.c
360
guard(mutex)(&st->lock);
drivers/iio/adc/ad4080.c
369
ret = iio_backend_filter_type_set(st->back[ch], mode);
drivers/iio/adc/ad4080.c
373
ret = regmap_update_bits(st->regmap[ch], AD4080_REG_FILTER_CONFIG,
drivers/iio/adc/ad4080.c
380
st->filter_type[ch] = mode;
drivers/iio/adc/ad4080.c
390
struct ad4080_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4080.c
394
switch (st->filter_type[chan->channel]) {
drivers/iio/adc/ad4080.c
401
*length = st->filter_type[chan->channel] >= SINC_5 ?
drivers/iio/adc/ad4080.c
416
struct ad4080_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4080.c
419
for (unsigned int ch = 0; ch < st->info->num_channels; ch++) {
drivers/iio/adc/ad4080.c
425
ret = iio_backend_chan_enable(st->back[ch], 0);
drivers/iio/adc/ad4080.c
427
ret = iio_backend_chan_disable(st->back[ch], 0);
drivers/iio/adc/ad4080.c
659
static int ad4080_setup_channel(struct ad4080_state *st, unsigned int ch)
drivers/iio/adc/ad4080.c
661
struct device *dev = regmap_get_device(st->regmap[ch]);
drivers/iio/adc/ad4080.c
666
ret = regmap_write(st->regmap[ch], AD4080_REG_INTERFACE_CONFIG_A,
drivers/iio/adc/ad4080.c
671
ret = regmap_write(st->regmap[ch], AD4080_REG_INTERFACE_CONFIG_A,
drivers/iio/adc/ad4080.c
676
ret = regmap_bulk_read(st->regmap[ch], AD4080_REG_PRODUCT_ID_L, &id_le,
drivers/iio/adc/ad4080.c
682
if (id != st->info->product_id)
drivers/iio/adc/ad4080.c
685
ret = regmap_set_bits(st->regmap[ch], AD4080_REG_GPIO_CONFIG_A,
drivers/iio/adc/ad4080.c
690
ret = regmap_write(st->regmap[ch], AD4080_REG_GPIO_CONFIG_B,
drivers/iio/adc/ad4080.c
696
ret = iio_backend_num_lanes_set(st->back[ch], st->num_lanes);
drivers/iio/adc/ad4080.c
700
if (!st->lvds_cnv_en)
drivers/iio/adc/ad4080.c
704
ret = regmap_update_bits(st->regmap[ch],
drivers/iio/adc/ad4080.c
708
st->info->lvds_cnv_clk_cnt_max));
drivers/iio/adc/ad4080.c
712
if (st->num_lanes > 1) {
drivers/iio/adc/ad4080.c
713
ret = regmap_set_bits(st->regmap[ch], AD4080_REG_ADC_DATA_INTF_CONFIG_A,
drivers/iio/adc/ad4080.c
719
ret = regmap_set_bits(st->regmap[ch],
drivers/iio/adc/ad4080.c
725
return ad4080_lvds_sync_write(st, ch);
drivers/iio/adc/ad4080.c
730
struct ad4080_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4080.c
733
for (unsigned int ch = 0; ch < st->info->num_channels; ch++) {
drivers/iio/adc/ad4080.c
734
ret = ad4080_setup_channel(st, ch);
drivers/iio/adc/ad4080.c
742
static int ad4080_properties_parse(struct ad4080_state *st,
drivers/iio/adc/ad4080.c
746
st->lvds_cnv_en = device_property_read_bool(dev, "adi,lvds-cnv-enable");
drivers/iio/adc/ad4080.c
748
st->num_lanes = 1;
drivers/iio/adc/ad4080.c
749
device_property_read_u32(dev, "adi,num-lanes", &st->num_lanes);
drivers/iio/adc/ad4080.c
750
if (!st->num_lanes || st->num_lanes > 2)
drivers/iio/adc/ad4080.c
753
st->num_lanes);
drivers/iio/adc/ad4080.c
762
struct ad4080_state *st;
drivers/iio/adc/ad4080.c
766
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ad4080.c
770
st = iio_priv(indio_dev);
drivers/iio/adc/ad4080.c
780
st->spi[0] = spi;
drivers/iio/adc/ad4080.c
781
st->regmap[0] = devm_regmap_init_spi(spi, &ad4080_regmap_config);
drivers/iio/adc/ad4080.c
782
if (IS_ERR(st->regmap[0]))
drivers/iio/adc/ad4080.c
783
return PTR_ERR(st->regmap[0]);
drivers/iio/adc/ad4080.c
785
st->info = spi_get_device_match_data(spi);
drivers/iio/adc/ad4080.c
786
if (!st->info)
drivers/iio/adc/ad4080.c
790
for (unsigned int ch = 1; ch < st->info->num_channels; ch++) {
drivers/iio/adc/ad4080.c
791
st->spi[ch] = devm_spi_new_ancillary_device(spi, spi_get_chipselect(spi, ch));
drivers/iio/adc/ad4080.c
792
if (IS_ERR(st->spi[ch]))
drivers/iio/adc/ad4080.c
793
return dev_err_probe(dev, PTR_ERR(st->spi[ch]),
drivers/iio/adc/ad4080.c
796
st->regmap[ch] = devm_regmap_init_spi(st->spi[ch], &ad4080_regmap_config);
drivers/iio/adc/ad4080.c
797
if (IS_ERR(st->regmap[ch]))
drivers/iio/adc/ad4080.c
798
return PTR_ERR(st->regmap[ch]);
drivers/iio/adc/ad4080.c
801
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/adc/ad4080.c
805
indio_dev->name = st->info->name;
drivers/iio/adc/ad4080.c
806
indio_dev->channels = st->info->channels;
drivers/iio/adc/ad4080.c
807
indio_dev->num_channels = st->info->num_channels;
drivers/iio/adc/ad4080.c
808
indio_dev->info = st->info->num_channels > 1 ?
drivers/iio/adc/ad4080.c
811
ret = ad4080_properties_parse(st, dev);
drivers/iio/adc/ad4080.c
819
st->clk_rate = clk_get_rate(clk);
drivers/iio/adc/ad4080.c
822
for (unsigned int ch = 0; ch < st->info->num_channels; ch++) {
drivers/iio/adc/ad4080.c
823
st->back[ch] = devm_iio_backend_get_by_index(dev, ch);
drivers/iio/adc/ad4080.c
824
if (IS_ERR(st->back[ch]))
drivers/iio/adc/ad4080.c
825
return PTR_ERR(st->back[ch]);
drivers/iio/adc/ad4080.c
827
ret = devm_iio_backend_enable(dev, st->back[ch]);
drivers/iio/adc/ad4080.c
839
ret = devm_iio_backend_request_buffer(dev, st->back[0], indio_dev);
drivers/iio/adc/ad4130.c
1036
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1038
struct ad4130_chan_info *chan_info = &st->chans_info[channel];
drivers/iio/adc/ad4130.c
1045
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1065
ret = ad4130_write_channel_setup(st, channel, false);
drivers/iio/adc/ad4130.c
1078
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1080
struct ad4130_setup_info *setup_info = &st->chans_info[channel].setup;
drivers/iio/adc/ad4130.c
1083
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1127
static int ad4130_set_channel_pga(struct ad4130_state *st, unsigned int channel,
drivers/iio/adc/ad4130.c
1130
struct ad4130_chan_info *chan_info = &st->chans_info[channel];
drivers/iio/adc/ad4130.c
1136
if (val == st->scale_tbls[setup_info->ref_sel][pga][0] &&
drivers/iio/adc/ad4130.c
1137
val2 == st->scale_tbls[setup_info->ref_sel][pga][1])
drivers/iio/adc/ad4130.c
1143
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1150
ret = ad4130_write_channel_setup(st, channel, false);
drivers/iio/adc/ad4130.c
1159
static int ad4130_set_channel_freq(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
1162
struct ad4130_chan_info *chan_info = &st->chans_info[channel];
drivers/iio/adc/ad4130.c
1167
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1177
ret = ad4130_write_channel_setup(st, channel, false);
drivers/iio/adc/ad4130.c
1189
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1192
ret = ad4130_set_channel_enable(st, channel, true);
drivers/iio/adc/ad4130.c
1196
reinit_completion(&st->completion);
drivers/iio/adc/ad4130.c
1198
ret = ad4130_set_mode(st, AD4130_MODE_CONTINUOUS);
drivers/iio/adc/ad4130.c
1202
ret = wait_for_completion_timeout(&st->completion,
drivers/iio/adc/ad4130.c
1207
ret = ad4130_set_mode(st, AD4130_MODE_IDLE);
drivers/iio/adc/ad4130.c
1211
ret = regmap_read(st->regmap, AD4130_DATA_REG, val);
drivers/iio/adc/ad4130.c
1215
ret = ad4130_set_channel_enable(st, channel, false);
drivers/iio/adc/ad4130.c
1225
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1227
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1236
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1238
struct ad4130_setup_info *setup_info = &st->chans_info[channel].setup;
drivers/iio/adc/ad4130.c
1250
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1251
*val = st->scale_tbls[setup_info->ref_sel][setup_info->pga][0];
drivers/iio/adc/ad4130.c
1252
*val2 = st->scale_tbls[setup_info->ref_sel][setup_info->pga][1];
drivers/iio/adc/ad4130.c
1257
*val = st->bipolar ? -BIT(chan->scan_type.realbits - 1) : 0;
drivers/iio/adc/ad4130.c
1261
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1277
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1279
struct ad4130_setup_info *setup_info = &st->chans_info[channel].setup;
drivers/iio/adc/ad4130.c
1284
*vals = (int *)st->scale_tbls[setup_info->ref_sel];
drivers/iio/adc/ad4130.c
1285
*length = ARRAY_SIZE(st->scale_tbls[setup_info->ref_sel]) * 2;
drivers/iio/adc/ad4130.c
1291
scoped_guard(mutex, &st->lock) {
drivers/iio/adc/ad4130.c
1322
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1327
return ad4130_set_channel_pga(st, channel, val, val2);
drivers/iio/adc/ad4130.c
1329
return ad4130_set_channel_freq(st, channel, val, val2);
drivers/iio/adc/ad4130.c
1338
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1341
return regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad4130.c
1343
return regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad4130.c
1349
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1354
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1357
ret = ad4130_set_channel_enable(st, channel, true);
drivers/iio/adc/ad4130.c
1364
st->num_enabled_channels = val;
drivers/iio/adc/ad4130.c
1371
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1378
eff = val * st->num_enabled_channels;
drivers/iio/adc/ad4130.c
1384
eff = rounddown(AD4130_FIFO_SIZE, st->num_enabled_channels);
drivers/iio/adc/ad4130.c
1386
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1388
ret = regmap_update_bits(st->regmap, AD4130_FIFO_CONTROL_REG,
drivers/iio/adc/ad4130.c
1395
st->effective_watermark = eff;
drivers/iio/adc/ad4130.c
1396
st->watermark = val;
drivers/iio/adc/ad4130.c
1486
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1489
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1491
if (st->chip_info->has_fifo) {
drivers/iio/adc/ad4130.c
1492
ret = ad4130_set_watermark_interrupt_en(st, true);
drivers/iio/adc/ad4130.c
1496
ret = irq_set_irq_type(st->spi->irq, st->inv_irq_trigger);
drivers/iio/adc/ad4130.c
1500
ret = ad4130_set_fifo_mode(st, AD4130_FIFO_MODE_WM);
drivers/iio/adc/ad4130.c
1505
ret = ad4130_set_mode(st, AD4130_MODE_CONTINUOUS);
drivers/iio/adc/ad4130.c
1514
if (!st->chip_info->has_fifo) {
drivers/iio/adc/ad4130.c
1515
ret = regmap_update_bits(st->regmap, AD4130_ADC_CONTROL_REG,
drivers/iio/adc/ad4130.c
1527
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1532
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1534
if (!st->chip_info->has_fifo) {
drivers/iio/adc/ad4130.c
1536
reinit_completion(&st->completion);
drivers/iio/adc/ad4130.c
1546
st->buffer_wait_for_irq = true;
drivers/iio/adc/ad4130.c
1547
if (!wait_for_completion_timeout(&st->completion, msecs_to_jiffies(1000)))
drivers/iio/adc/ad4130.c
1548
dev_warn(&st->spi->dev, "Conversion timed out\n");
drivers/iio/adc/ad4130.c
1549
st->buffer_wait_for_irq = false;
drivers/iio/adc/ad4130.c
1552
ret = spi_write(st->spi, &temp, 1);
drivers/iio/adc/ad4130.c
1557
ret = ad4130_set_mode(st, AD4130_MODE_IDLE);
drivers/iio/adc/ad4130.c
1561
if (st->chip_info->has_fifo) {
drivers/iio/adc/ad4130.c
1562
ret = irq_set_irq_type(st->spi->irq, st->irq_trigger);
drivers/iio/adc/ad4130.c
1566
ret = ad4130_set_fifo_mode(st, AD4130_FIFO_MODE_DISABLED);
drivers/iio/adc/ad4130.c
1570
ret = ad4130_set_watermark_interrupt_en(st, false);
drivers/iio/adc/ad4130.c
1580
ret = ad4130_set_channel_enable(st, i, false);
drivers/iio/adc/ad4130.c
1596
struct ad4130_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/adc/ad4130.c
1599
guard(mutex)(&st->lock);
drivers/iio/adc/ad4130.c
1600
val = st->watermark;
drivers/iio/adc/ad4130.c
1608
struct ad4130_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/adc/ad4130.c
1612
ret = regmap_read(st->regmap, AD4130_FIFO_CONTROL_REG, &val);
drivers/iio/adc/ad4130.c
1654
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1657
st->trig = devm_iio_trigger_alloc(indio_dev->dev.parent, "%s-dev%d",
drivers/iio/adc/ad4130.c
1659
if (!st->trig)
drivers/iio/adc/ad4130.c
1662
st->trig->ops = &ad4130_trigger_ops;
drivers/iio/adc/ad4130.c
1663
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/iio/adc/ad4130.c
1664
ret = devm_iio_trigger_register(indio_dev->dev.parent, st->trig);
drivers/iio/adc/ad4130.c
1668
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/adc/ad4130.c
1691
static int ad4130_get_ref_voltage(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
1696
return regulator_get_voltage(st->regulators[2].consumer);
drivers/iio/adc/ad4130.c
1698
return regulator_get_voltage(st->regulators[3].consumer);
drivers/iio/adc/ad4130.c
1700
return regulator_get_voltage(st->regulators[0].consumer);
drivers/iio/adc/ad4130.c
1702
return st->int_ref_uv;
drivers/iio/adc/ad4130.c
1708
static int ad4130_parse_fw_setup(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
1712
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4130.c
1752
st->int_ref_en = true;
drivers/iio/adc/ad4130.c
1754
ret = ad4130_get_ref_voltage(st, setup_info->ref_sel);
drivers/iio/adc/ad4130.c
1762
static unsigned int ad4130_translate_pin(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
1766
if (logical_pin < st->chip_info->max_analog_pins)
drivers/iio/adc/ad4130.c
1767
return st->chip_info->pin_map[logical_pin];
drivers/iio/adc/ad4130.c
1773
static int ad4130_validate_diff_channel(struct ad4130_state *st, u32 pin)
drivers/iio/adc/ad4130.c
1775
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4130.c
1781
if (pin >= st->chip_info->max_analog_pins)
drivers/iio/adc/ad4130.c
1784
if (st->pins_fn[pin] == AD4130_PIN_FN_SPECIAL)
drivers/iio/adc/ad4130.c
1787
st->pins_fn[pin]);
drivers/iio/adc/ad4130.c
1789
st->pins_fn[pin] |= AD4130_PIN_FN_DIFF;
drivers/iio/adc/ad4130.c
1794
static int ad4130_validate_diff_channels(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
1801
ret = ad4130_validate_diff_channel(st, pins[i]);
drivers/iio/adc/ad4130.c
1809
static int ad4130_validate_excitation_pin(struct ad4130_state *st, u32 pin)
drivers/iio/adc/ad4130.c
1811
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4130.c
1813
if (pin >= st->chip_info->max_analog_pins)
drivers/iio/adc/ad4130.c
1817
if (st->pins_fn[pin] == AD4130_PIN_FN_SPECIAL)
drivers/iio/adc/ad4130.c
1820
st->pins_fn[pin]);
drivers/iio/adc/ad4130.c
1822
st->pins_fn[pin] |= AD4130_PIN_FN_EXCITATION;
drivers/iio/adc/ad4130.c
1827
static int ad4130_validate_vbias_pin(struct ad4130_state *st, u32 pin)
drivers/iio/adc/ad4130.c
1829
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4130.c
1831
if (pin >= st->chip_info->max_analog_pins)
drivers/iio/adc/ad4130.c
1835
if (st->pins_fn[pin] == AD4130_PIN_FN_SPECIAL)
drivers/iio/adc/ad4130.c
1838
st->pins_fn[pin]);
drivers/iio/adc/ad4130.c
1840
st->pins_fn[pin] |= AD4130_PIN_FN_VBIAS;
drivers/iio/adc/ad4130.c
1845
static int ad4130_validate_vbias_pins(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
1851
for (i = 0; i < st->num_vbias_pins; i++) {
drivers/iio/adc/ad4130.c
1852
ret = ad4130_validate_vbias_pin(st, pins[i]);
drivers/iio/adc/ad4130.c
1863
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1864
unsigned int resolution = ad4130_resolution(st);
drivers/iio/adc/ad4130.c
1866
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4130.c
1875
chan = &st->chans[index];
drivers/iio/adc/ad4130.c
1876
chan_info = &st->chans_info[index];
drivers/iio/adc/ad4130.c
1892
ret = ad4130_validate_diff_channels(st, pins, ARRAY_SIZE(pins));
drivers/iio/adc/ad4130.c
1899
ret = ad4130_parse_fw_setup(st, child, &chan_info->setup);
drivers/iio/adc/ad4130.c
1906
ret = ad4130_validate_excitation_pin(st, chan_info->iout0);
drivers/iio/adc/ad4130.c
1914
ret = ad4130_validate_excitation_pin(st, chan_info->iout1);
drivers/iio/adc/ad4130.c
1924
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1925
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4130.c
1928
indio_dev->channels = st->chans;
drivers/iio/adc/ad4130.c
1941
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
1942
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4130.c
1949
st->mclk = devm_clk_get_optional(dev, "mclk");
drivers/iio/adc/ad4130.c
1950
if (IS_ERR(st->mclk))
drivers/iio/adc/ad4130.c
1951
return dev_err_probe(dev, PTR_ERR(st->mclk),
drivers/iio/adc/ad4130.c
1954
st->int_pin_sel = AD4130_INT_PIN_INT;
drivers/iio/adc/ad4130.c
1960
st->int_pin_sel = i;
drivers/iio/adc/ad4130.c
1965
if (st->int_pin_sel == AD4130_INT_PIN_DOUT)
drivers/iio/adc/ad4130.c
1969
if (st->int_pin_sel == AD4130_INT_PIN_P2)
drivers/iio/adc/ad4130.c
1970
st->pins_fn[AD4130_AIN3_P2] = AD4130_PIN_FN_SPECIAL;
drivers/iio/adc/ad4130.c
1979
if (st->mclk && ext_clk_freq == AD4130_MCLK_FREQ_153_6KHZ)
drivers/iio/adc/ad4130.c
1980
st->mclk_sel = AD4130_MCLK_153_6KHZ_EXT;
drivers/iio/adc/ad4130.c
1981
else if (st->mclk)
drivers/iio/adc/ad4130.c
1982
st->mclk_sel = AD4130_MCLK_76_8KHZ_EXT;
drivers/iio/adc/ad4130.c
1984
st->mclk_sel = AD4130_MCLK_76_8KHZ;
drivers/iio/adc/ad4130.c
1986
if (st->int_pin_sel == AD4130_INT_PIN_CLK &&
drivers/iio/adc/ad4130.c
1987
st->mclk_sel != AD4130_MCLK_76_8KHZ)
drivers/iio/adc/ad4130.c
1990
st->mclk_sel, st->int_pin_sel);
drivers/iio/adc/ad4130.c
1992
st->int_ref_uv = AD4130_INT_REF_2_5V;
drivers/iio/adc/ad4130.c
1999
avdd_uv = regulator_get_voltage(st->regulators[0].consumer);
drivers/iio/adc/ad4130.c
2001
st->int_ref_uv = AD4130_INT_REF_1_25V;
drivers/iio/adc/ad4130.c
2003
st->bipolar = device_property_read_bool(dev, "adi,bipolar");
drivers/iio/adc/ad4130.c
2007
if (ret > st->chip_info->max_analog_pins)
drivers/iio/adc/ad4130.c
2011
st->num_vbias_pins = ret;
drivers/iio/adc/ad4130.c
2014
st->vbias_pins,
drivers/iio/adc/ad4130.c
2015
st->num_vbias_pins);
drivers/iio/adc/ad4130.c
2020
ret = ad4130_validate_vbias_pins(st, st->vbias_pins,
drivers/iio/adc/ad4130.c
2021
st->num_vbias_pins);
drivers/iio/adc/ad4130.c
2033
static void ad4130_fill_scale_tbls(struct ad4130_state *st)
drivers/iio/adc/ad4130.c
2035
unsigned int pow = ad4130_resolution(st) - st->bipolar;
drivers/iio/adc/ad4130.c
2042
ret = ad4130_get_ref_voltage(st, i);
drivers/iio/adc/ad4130.c
2049
st->scale_tbls[i][j][1] = div_u64(nv >> (pow + j), MILLI);
drivers/iio/adc/ad4130.c
2058
static int ad4130_set_mclk_sel(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
2061
return regmap_update_bits(st->regmap, AD4130_ADC_CONTROL_REG,
drivers/iio/adc/ad4130.c
2075
struct ad4130_state *st = container_of(hw, struct ad4130_state, int_clk_hw);
drivers/iio/adc/ad4130.c
2077
return st->mclk_sel == AD4130_MCLK_76_8KHZ_OUT;
drivers/iio/adc/ad4130.c
2082
struct ad4130_state *st = container_of(hw, struct ad4130_state, int_clk_hw);
drivers/iio/adc/ad4130.c
2085
ret = ad4130_set_mclk_sel(st, AD4130_MCLK_76_8KHZ_OUT);
drivers/iio/adc/ad4130.c
2089
st->mclk_sel = AD4130_MCLK_76_8KHZ_OUT;
drivers/iio/adc/ad4130.c
2096
struct ad4130_state *st = container_of(hw, struct ad4130_state, int_clk_hw);
drivers/iio/adc/ad4130.c
2099
ret = ad4130_set_mclk_sel(st, AD4130_MCLK_76_8KHZ);
drivers/iio/adc/ad4130.c
2103
st->mclk_sel = AD4130_MCLK_76_8KHZ;
drivers/iio/adc/ad4130.c
2113
static int ad4130_setup_int_clk(struct ad4130_state *st)
drivers/iio/adc/ad4130.c
2115
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4130.c
2121
if (st->int_pin_sel == AD4130_INT_PIN_CLK ||
drivers/iio/adc/ad4130.c
2122
st->mclk_sel != AD4130_MCLK_76_8KHZ)
drivers/iio/adc/ad4130.c
2134
st->int_clk_hw.init = &init;
drivers/iio/adc/ad4130.c
2135
ret = devm_clk_hw_register(dev, &st->int_clk_hw);
drivers/iio/adc/ad4130.c
2140
&st->int_clk_hw);
drivers/iio/adc/ad4130.c
2145
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
2146
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4130.c
2153
if (st->mclk_sel == AD4130_MCLK_153_6KHZ_EXT)
drivers/iio/adc/ad4130.c
2156
ret = clk_set_rate(st->mclk, rate);
drivers/iio/adc/ad4130.c
2160
ret = clk_prepare_enable(st->mclk);
drivers/iio/adc/ad4130.c
2165
st->mclk);
drivers/iio/adc/ad4130.c
2169
if (st->int_ref_uv == AD4130_INT_REF_2_5V)
drivers/iio/adc/ad4130.c
2176
val |= FIELD_PREP(AD4130_ADC_CONTROL_BIPOLAR_MASK, st->bipolar);
drivers/iio/adc/ad4130.c
2177
val |= FIELD_PREP(AD4130_ADC_CONTROL_INT_REF_EN_MASK, st->int_ref_en);
drivers/iio/adc/ad4130.c
2179
val |= FIELD_PREP(AD4130_ADC_CONTROL_MCLK_SEL_MASK, st->mclk_sel);
drivers/iio/adc/ad4130.c
2182
ret = regmap_write(st->regmap, AD4130_ADC_CONTROL_REG, val);
drivers/iio/adc/ad4130.c
2191
for (i = 0; i < st->chip_info->num_gpios; i++) {
drivers/iio/adc/ad4130.c
2192
if (st->pins_fn[i + AD4130_AIN2_P1] == AD4130_PIN_FN_NONE) {
drivers/iio/adc/ad4130.c
2193
if (st->chip_info->num_gpios == 2)
drivers/iio/adc/ad4130.c
2200
val |= FIELD_PREP(AD4130_IO_CONTROL_INT_PIN_SEL_MASK, st->int_pin_sel);
drivers/iio/adc/ad4130.c
2202
ret = regmap_write(st->regmap, AD4130_IO_CONTROL_REG, val);
drivers/iio/adc/ad4130.c
2207
for (i = 0; i < st->num_vbias_pins; i++)
drivers/iio/adc/ad4130.c
2208
val |= BIT(ad4130_translate_pin(st, st->vbias_pins[i]));
drivers/iio/adc/ad4130.c
2210
ret = regmap_write(st->regmap, AD4130_VBIAS_REG, val);
drivers/iio/adc/ad4130.c
2214
if (st->chip_info->has_fifo) {
drivers/iio/adc/ad4130.c
2215
ret = regmap_clear_bits(st->regmap, AD4130_FIFO_CONTROL_REG,
drivers/iio/adc/ad4130.c
2221
ret = ad4130_set_watermark_interrupt_en(st, false);
drivers/iio/adc/ad4130.c
2228
struct ad4130_chan_info *chan_info = &st->chans_info[i];
drivers/iio/adc/ad4130.c
2229
struct iio_chan_spec *chan = &st->chans[i];
drivers/iio/adc/ad4130.c
2233
ad4130_translate_pin(st, chan->channel)) |
drivers/iio/adc/ad4130.c
2235
ad4130_translate_pin(st, chan->channel2)) |
drivers/iio/adc/ad4130.c
2237
ad4130_translate_pin(st, chan_info->iout0)) |
drivers/iio/adc/ad4130.c
2239
ad4130_translate_pin(st, chan_info->iout1));
drivers/iio/adc/ad4130.c
2241
ret = regmap_write(st->regmap, AD4130_CHANNEL_X_REG(i), val);
drivers/iio/adc/ad4130.c
2249
static int ad4130_soft_reset(struct ad4130_state *st)
drivers/iio/adc/ad4130.c
2253
ret = spi_write(st->spi, st->reset_buf, sizeof(st->reset_buf));
drivers/iio/adc/ad4130.c
2264
struct ad4130_state *st = data;
drivers/iio/adc/ad4130.c
2266
regulator_bulk_disable(ARRAY_SIZE(st->regulators), st->regulators);
drivers/iio/adc/ad4130.c
2273
struct ad4130_state *st;
drivers/iio/adc/ad4130.c
2276
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad4130.c
2280
st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
2282
st->chip_info = device_get_match_data(dev);
drivers/iio/adc/ad4130.c
2284
memset(st->reset_buf, 0xff, sizeof(st->reset_buf));
drivers/iio/adc/ad4130.c
2285
init_completion(&st->completion);
drivers/iio/adc/ad4130.c
2286
mutex_init(&st->lock);
drivers/iio/adc/ad4130.c
2287
st->spi = spi;
drivers/iio/adc/ad4130.c
2289
if (st->chip_info->has_fifo) {
drivers/iio/adc/ad4130.c
2295
st->fifo_tx_buf[0] = AD4130_COMMS_READ_MASK | AD4130_FIFO_DATA_REG;
drivers/iio/adc/ad4130.c
2296
st->fifo_xfer[0].tx_buf = st->fifo_tx_buf;
drivers/iio/adc/ad4130.c
2297
st->fifo_xfer[0].len = sizeof(st->fifo_tx_buf);
drivers/iio/adc/ad4130.c
2298
st->fifo_xfer[1].rx_buf = st->fifo_rx_buf;
drivers/iio/adc/ad4130.c
2299
spi_message_init_with_transfers(&st->fifo_msg, st->fifo_xfer,
drivers/iio/adc/ad4130.c
2300
ARRAY_SIZE(st->fifo_xfer));
drivers/iio/adc/ad4130.c
2303
indio_dev->name = st->chip_info->name;
drivers/iio/adc/ad4130.c
2305
indio_dev->info = st->chip_info->info;
drivers/iio/adc/ad4130.c
2307
st->regmap = devm_regmap_init(dev, NULL, st, &ad4130_regmap_config);
drivers/iio/adc/ad4130.c
2308
if (IS_ERR(st->regmap))
drivers/iio/adc/ad4130.c
2309
return PTR_ERR(st->regmap);
drivers/iio/adc/ad4130.c
2311
st->regulators[0].supply = "avdd";
drivers/iio/adc/ad4130.c
2312
st->regulators[1].supply = "iovdd";
drivers/iio/adc/ad4130.c
2313
st->regulators[2].supply = "refin1";
drivers/iio/adc/ad4130.c
2314
st->regulators[3].supply = "refin2";
drivers/iio/adc/ad4130.c
2316
ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(st->regulators),
drivers/iio/adc/ad4130.c
2317
st->regulators);
drivers/iio/adc/ad4130.c
2321
ret = regulator_bulk_enable(ARRAY_SIZE(st->regulators), st->regulators);
drivers/iio/adc/ad4130.c
2325
ret = devm_add_action_or_reset(dev, ad4130_disable_regulators, st);
drivers/iio/adc/ad4130.c
2329
ret = ad4130_soft_reset(st);
drivers/iio/adc/ad4130.c
2341
ret = ad4130_setup_int_clk(st);
drivers/iio/adc/ad4130.c
2345
ad4130_fill_scale_tbls(st);
drivers/iio/adc/ad4130.c
2347
st->gc.owner = THIS_MODULE;
drivers/iio/adc/ad4130.c
2348
st->gc.label = st->chip_info->name;
drivers/iio/adc/ad4130.c
2349
st->gc.base = -1;
drivers/iio/adc/ad4130.c
2350
st->gc.ngpio = st->chip_info->num_gpios;
drivers/iio/adc/ad4130.c
2351
st->gc.parent = dev;
drivers/iio/adc/ad4130.c
2352
st->gc.can_sleep = true;
drivers/iio/adc/ad4130.c
2353
st->gc.init_valid_mask = ad4130_gpio_init_valid_mask;
drivers/iio/adc/ad4130.c
2354
st->gc.get_direction = ad4130_gpio_get_direction;
drivers/iio/adc/ad4130.c
2355
st->gc.set = ad4130_gpio_set;
drivers/iio/adc/ad4130.c
2357
ret = devm_gpiochip_add_data(dev, &st->gc, st);
drivers/iio/adc/ad4130.c
2361
if (st->chip_info->has_fifo)
drivers/iio/adc/ad4130.c
2376
if (st->chip_info->has_fifo) {
drivers/iio/adc/ad4130.c
2385
st->irq_trigger = irq_get_trigger_type(spi->irq);
drivers/iio/adc/ad4130.c
2386
if (st->irq_trigger & IRQF_TRIGGER_RISING)
drivers/iio/adc/ad4130.c
2387
st->inv_irq_trigger = IRQF_TRIGGER_FALLING;
drivers/iio/adc/ad4130.c
2388
else if (st->irq_trigger & IRQF_TRIGGER_FALLING)
drivers/iio/adc/ad4130.c
2389
st->inv_irq_trigger = IRQF_TRIGGER_RISING;
drivers/iio/adc/ad4130.c
2392
st->irq_trigger);
drivers/iio/adc/ad4130.c
471
static int ad4130_get_reg_size(struct ad4130_state *st, unsigned int reg,
drivers/iio/adc/ad4130.c
474
if (reg >= st->chip_info->reg_size_length)
drivers/iio/adc/ad4130.c
477
*size = st->chip_info->reg_size[reg];
drivers/iio/adc/ad4130.c
482
static unsigned int ad4130_data_reg_size(struct ad4130_state *st)
drivers/iio/adc/ad4130.c
487
ret = ad4130_get_reg_size(st, AD4130_DATA_REG, &data_reg_size);
drivers/iio/adc/ad4130.c
494
static unsigned int ad4130_resolution(struct ad4130_state *st)
drivers/iio/adc/ad4130.c
496
return ad4130_data_reg_size(st) * BITS_PER_BYTE;
drivers/iio/adc/ad4130.c
501
struct ad4130_state *st = context;
drivers/iio/adc/ad4130.c
505
ret = ad4130_get_reg_size(st, reg, &size);
drivers/iio/adc/ad4130.c
509
st->reg_write_tx_buf[0] = reg;
drivers/iio/adc/ad4130.c
513
put_unaligned_be24(val, &st->reg_write_tx_buf[1]);
drivers/iio/adc/ad4130.c
516
put_unaligned_be16(val, &st->reg_write_tx_buf[1]);
drivers/iio/adc/ad4130.c
519
st->reg_write_tx_buf[1] = val;
drivers/iio/adc/ad4130.c
525
return spi_write(st->spi, st->reg_write_tx_buf, size + 1);
drivers/iio/adc/ad4130.c
530
struct ad4130_state *st = context;
drivers/iio/adc/ad4130.c
533
.tx_buf = st->reg_read_tx_buf,
drivers/iio/adc/ad4130.c
534
.len = sizeof(st->reg_read_tx_buf),
drivers/iio/adc/ad4130.c
537
.rx_buf = st->reg_read_rx_buf,
drivers/iio/adc/ad4130.c
543
ret = ad4130_get_reg_size(st, reg, &size);
drivers/iio/adc/ad4130.c
547
st->reg_read_tx_buf[0] = AD4130_COMMS_READ_MASK | reg;
drivers/iio/adc/ad4130.c
550
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/adc/ad4130.c
556
*val = get_unaligned_be24(st->reg_read_rx_buf);
drivers/iio/adc/ad4130.c
559
*val = get_unaligned_be16(st->reg_read_rx_buf);
drivers/iio/adc/ad4130.c
562
*val = st->reg_read_rx_buf[0];
drivers/iio/adc/ad4130.c
580
struct ad4130_state *st = gpiochip_get_data(gc);
drivers/iio/adc/ad4130.c
590
bool valid = st->pins_fn[pin] == AD4130_PIN_FN_NONE;
drivers/iio/adc/ad4130.c
606
struct ad4130_state *st = gpiochip_get_data(gc);
drivers/iio/adc/ad4130.c
609
if (st->chip_info->num_gpios == AD4130_MAX_GPIOS)
drivers/iio/adc/ad4130.c
616
return regmap_update_bits(st->regmap, AD4130_IO_CONTROL_REG, mask,
drivers/iio/adc/ad4130.c
620
static int ad4130_set_mode(struct ad4130_state *st, enum ad4130_mode mode)
drivers/iio/adc/ad4130.c
622
return regmap_update_bits(st->regmap, AD4130_ADC_CONTROL_REG,
drivers/iio/adc/ad4130.c
627
static int ad4130_set_watermark_interrupt_en(struct ad4130_state *st, bool en)
drivers/iio/adc/ad4130.c
629
return regmap_update_bits(st->regmap, AD4130_FIFO_CONTROL_REG,
drivers/iio/adc/ad4130.c
642
static int ad4130_set_fifo_mode(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
645
return regmap_update_bits(st->regmap, AD4130_FIFO_CONTROL_REG,
drivers/iio/adc/ad4130.c
652
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
653
unsigned int data_reg_size = ad4130_data_reg_size(st);
drivers/iio/adc/ad4130.c
654
unsigned int transfer_len = st->effective_watermark * data_reg_size;
drivers/iio/adc/ad4130.c
655
unsigned int set_size = st->num_enabled_channels * data_reg_size;
drivers/iio/adc/ad4130.c
659
st->fifo_tx_buf[1] = ad4130_watermark_reg_val(st->effective_watermark);
drivers/iio/adc/ad4130.c
660
st->fifo_xfer[1].len = transfer_len;
drivers/iio/adc/ad4130.c
662
ret = spi_sync(st->spi, &st->fifo_msg);
drivers/iio/adc/ad4130.c
667
iio_push_to_buffers(indio_dev, &st->fifo_rx_buf[i]);
drivers/iio/adc/ad4130.c
673
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
676
if (st->chip_info->has_fifo)
drivers/iio/adc/ad4130.c
678
else if (st->buffer_wait_for_irq)
drivers/iio/adc/ad4130.c
679
complete(&st->completion);
drivers/iio/adc/ad4130.c
681
iio_trigger_poll(st->trig);
drivers/iio/adc/ad4130.c
683
complete(&st->completion);
drivers/iio/adc/ad4130.c
693
struct ad4130_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4130.c
694
unsigned int data_reg_size = ad4130_data_reg_size(st);
drivers/iio/adc/ad4130.c
701
xfer.rx_buf = st->scan_channels;
drivers/iio/adc/ad4130.c
703
ret = spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad4130.c
707
iio_push_to_buffers_with_timestamp(indio_dev, &st->scan_channels,
drivers/iio/adc/ad4130.c
750
static int ad4130_find_slot(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
760
struct ad4130_slot_info *slot_info = &st->slots_info[i];
drivers/iio/adc/ad4130.c
774
slot_info->channels < st->slots_info[*slot].channels)
drivers/iio/adc/ad4130.c
786
static void ad4130_unlink_channel(struct ad4130_state *st, unsigned int channel)
drivers/iio/adc/ad4130.c
788
struct ad4130_chan_info *chan_info = &st->chans_info[channel];
drivers/iio/adc/ad4130.c
789
struct ad4130_slot_info *slot_info = &st->slots_info[chan_info->slot];
drivers/iio/adc/ad4130.c
795
static int ad4130_unlink_slot(struct ad4130_state *st, unsigned int slot)
drivers/iio/adc/ad4130.c
800
struct ad4130_chan_info *chan_info = &st->chans_info[i];
drivers/iio/adc/ad4130.c
805
ad4130_unlink_channel(st, i);
drivers/iio/adc/ad4130.c
811
static int ad4130_link_channel_slot(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
814
struct ad4130_slot_info *slot_info = &st->slots_info[slot];
drivers/iio/adc/ad4130.c
815
struct ad4130_chan_info *chan_info = &st->chans_info[channel];
drivers/iio/adc/ad4130.c
818
ret = regmap_update_bits(st->regmap, AD4130_CHANNEL_X_REG(channel),
drivers/iio/adc/ad4130.c
830
static int ad4130_write_slot_setup(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
845
ret = regmap_write(st->regmap, AD4130_CONFIG_X_REG(slot), val);
drivers/iio/adc/ad4130.c
852
ret = regmap_write(st->regmap, AD4130_FILTER_X_REG(slot), val);
drivers/iio/adc/ad4130.c
856
memcpy(&st->slots_info[slot].setup, setup_info, sizeof(*setup_info));
drivers/iio/adc/ad4130.c
861
static int ad4130_write_channel_setup(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
864
struct ad4130_chan_info *chan_info = &st->chans_info[channel];
drivers/iio/adc/ad4130.c
901
ad4130_unlink_channel(st, channel);
drivers/iio/adc/ad4130.c
908
ret = ad4130_find_slot(st, setup_info, &slot, &overwrite);
drivers/iio/adc/ad4130.c
914
ad4130_unlink_channel(st, channel);
drivers/iio/adc/ad4130.c
917
ret = ad4130_unlink_slot(st, slot);
drivers/iio/adc/ad4130.c
921
ret = ad4130_write_slot_setup(st, slot, setup_info);
drivers/iio/adc/ad4130.c
926
return ad4130_link_channel_slot(st, channel, slot);
drivers/iio/adc/ad4130.c
929
static int ad4130_set_channel_enable(struct ad4130_state *st,
drivers/iio/adc/ad4130.c
932
struct ad4130_chan_info *chan_info = &st->chans_info[channel];
drivers/iio/adc/ad4130.c
940
ret = ad4130_write_channel_setup(st, channel, true);
drivers/iio/adc/ad4130.c
945
slot_info = &st->slots_info[chan_info->slot];
drivers/iio/adc/ad4130.c
947
ret = regmap_update_bits(st->regmap, AD4130_CHANNEL_X_REG(channel),
drivers/iio/adc/ad4134.c
151
struct ad4134_state *st = context;
drivers/iio/adc/ad4134.c
153
.tx_buf = st->tx_buf,
drivers/iio/adc/ad4134.c
154
.rx_buf = st->rx_buf,
drivers/iio/adc/ad4134.c
159
ad4134_prepare_spi_tx_buf(reg, val, st->tx_buf);
drivers/iio/adc/ad4134.c
161
ret = spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad4134.c
165
if (st->rx_buf[2] != st->tx_buf[2])
drivers/iio/adc/ad4134.c
166
dev_dbg(&st->spi->dev, "reg write CRC check failed\n");
drivers/iio/adc/ad4134.c
171
static int ad4134_data_read(struct ad4134_state *st, unsigned int reg,
drivers/iio/adc/ad4134.c
188
ret = spi_write_then_read(st->spi, NULL, 0, st->rx_buf,
drivers/iio/adc/ad4134.c
199
*val = get_unaligned_be24(st->rx_buf);
drivers/iio/adc/ad4134.c
205
static int ad4134_register_read(struct ad4134_state *st, unsigned int reg,
drivers/iio/adc/ad4134.c
209
.tx_buf = st->tx_buf,
drivers/iio/adc/ad4134.c
210
.rx_buf = st->rx_buf,
drivers/iio/adc/ad4134.c
217
ad4134_prepare_spi_tx_buf(inst, 0, st->tx_buf);
drivers/iio/adc/ad4134.c
219
ret = spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad4134.c
223
*val = st->rx_buf[1];
drivers/iio/adc/ad4134.c
226
if (st->rx_buf[2] != st->tx_buf[2])
drivers/iio/adc/ad4134.c
227
dev_dbg(&st->spi->dev, "reg read CRC check failed\n");
drivers/iio/adc/ad4134.c
234
struct ad4134_state *st = context;
drivers/iio/adc/ad4134.c
237
return ad4134_data_read(st, reg, val);
drivers/iio/adc/ad4134.c
239
return ad4134_register_read(st, reg, val);
drivers/iio/adc/ad4134.c
254
struct ad4134_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4134.c
259
gpiod_set_value_cansleep(st->odr_gpio, 1);
drivers/iio/adc/ad4134.c
271
gpiod_set_value_cansleep(st->odr_gpio, 0);
drivers/iio/adc/ad4134.c
272
ret = regmap_read(st->regmap, AD4134_CH_VREG(chan->channel), val);
drivers/iio/adc/ad4134.c
278
*val = st->refin_mv;
drivers/iio/adc/ad4134.c
291
struct ad4134_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4134.c
294
return regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad4134.c
296
return regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad4134.c
299
static int ad4134_min_io_mode_setup(struct ad4134_state *st)
drivers/iio/adc/ad4134.c
301
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4134.c
304
st->odr_gpio = devm_gpiod_get(dev, "odr", GPIOD_OUT_LOW);
drivers/iio/adc/ad4134.c
305
if (IS_ERR(st->odr_gpio))
drivers/iio/adc/ad4134.c
306
return dev_err_probe(dev, PTR_ERR(st->odr_gpio),
drivers/iio/adc/ad4134.c
309
ret = regmap_update_bits(st->regmap, AD4134_DIG_IF_CFG_REG,
drivers/iio/adc/ad4134.c
317
ret = regmap_set_bits(st->regmap, AD4134_SDO_PIN_SRC_SEL_REG,
drivers/iio/adc/ad4134.c
323
return regmap_set_bits(st->regmap, AD4134_IFACE_CONFIG_B_REG,
drivers/iio/adc/ad4134.c
340
static int ad4134_regulator_setup(struct ad4134_state *st)
drivers/iio/adc/ad4134.c
342
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4134.c
355
st->refin_mv = ret / (MICRO / MILLI);
drivers/iio/adc/ad4134.c
377
static int ad4134_clock_select(struct ad4134_state *st)
drivers/iio/adc/ad4134.c
379
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4134.c
401
st->sys_clk_hz = clk_get_rate(xtal_clk) | clk_get_rate(clkin_clk);
drivers/iio/adc/ad4134.c
402
if (st->sys_clk_hz != AD4134_EXT_CLOCK_MHZ)
drivers/iio/adc/ad4134.c
404
st->sys_clk_hz);
drivers/iio/adc/ad4134.c
414
struct ad4134_state *st;
drivers/iio/adc/ad4134.c
417
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad4134.c
421
st = iio_priv(indio_dev);
drivers/iio/adc/ad4134.c
422
st->spi = spi;
drivers/iio/adc/ad4134.c
430
ret = ad4134_regulator_setup(st);
drivers/iio/adc/ad4134.c
434
ret = ad4134_clock_select(st);
drivers/iio/adc/ad4134.c
445
st->regmap = devm_regmap_init(dev, NULL, st, &ad4134_regmap_config);
drivers/iio/adc/ad4134.c
446
if (IS_ERR(st->regmap))
drivers/iio/adc/ad4134.c
447
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/adc/ad4134.c
450
ret = ad4134_min_io_mode_setup(st);
drivers/iio/adc/ad4134.c
456
ret = regmap_update_bits(st->regmap, AD4134_DATA_PACKET_CONFIG_REG,
drivers/iio/adc/ad4134.c
464
ret = regmap_update_bits(st->regmap, AD4134_DEVICE_CONFIG_REG,
drivers/iio/adc/ad4170-4.c
1002
*ain_voltage = st->vrefs_uv[AD4170_IOVDD_SUP] / 5;
drivers/iio/adc/ad4170-4.c
1005
*ain_voltage = st->vrefs_uv[AD4170_AVSS_SUP];
drivers/iio/adc/ad4170-4.c
1011
if (st->vrefs_uv[AD4170_REFIN1P_SUP] == -ENODEV)
drivers/iio/adc/ad4170-4.c
1015
*ain_voltage = st->vrefs_uv[AD4170_REFIN1P_SUP];
drivers/iio/adc/ad4170-4.c
1018
if (st->vrefs_uv[AD4170_REFIN1N_SUP] == -ENODEV)
drivers/iio/adc/ad4170-4.c
1022
*ain_voltage = st->vrefs_uv[AD4170_REFIN1N_SUP];
drivers/iio/adc/ad4170-4.c
1025
if (st->vrefs_uv[AD4170_REFIN2P_SUP] == -ENODEV)
drivers/iio/adc/ad4170-4.c
1029
*ain_voltage = st->vrefs_uv[AD4170_REFIN2P_SUP];
drivers/iio/adc/ad4170-4.c
1032
if (st->vrefs_uv[AD4170_REFIN2N_SUP] == -ENODEV)
drivers/iio/adc/ad4170-4.c
1036
*ain_voltage = st->vrefs_uv[AD4170_REFIN2N_SUP];
drivers/iio/adc/ad4170-4.c
1040
*ain_voltage = st->vrefs_uv[AD4170_AVSS_SUP] + AD4170_INT_REF_2_5V;
drivers/iio/adc/ad4170-4.c
1047
static int ad4170_validate_analog_input(struct ad4170_state *st, int pin)
drivers/iio/adc/ad4170-4.c
1050
if (st->pins_fn[pin] & AD4170_PIN_CURRENT_OUT)
drivers/iio/adc/ad4170-4.c
1051
return dev_err_probe(&st->spi->dev, -EINVAL,
drivers/iio/adc/ad4170-4.c
1053
pin, st->pins_fn[pin]);
drivers/iio/adc/ad4170-4.c
1055
st->pins_fn[pin] |= AD4170_PIN_ANALOG_IN;
drivers/iio/adc/ad4170-4.c
1060
static int ad4170_validate_channel_input(struct ad4170_state *st, int pin, bool com)
drivers/iio/adc/ad4170-4.c
1064
return dev_err_probe(&st->spi->dev, -EINVAL,
drivers/iio/adc/ad4170-4.c
1070
return dev_err_probe(&st->spi->dev, -EINVAL,
drivers/iio/adc/ad4170-4.c
1074
return ad4170_validate_analog_input(st, pin);
drivers/iio/adc/ad4170-4.c
1082
static int ad4170_validate_channel(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
1087
ret = ad4170_validate_channel_input(st, chan->channel, false);
drivers/iio/adc/ad4170-4.c
1091
return ad4170_validate_channel_input(st, chan->channel2,
drivers/iio/adc/ad4170-4.c
1100
static int ad4170_get_input_range(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
1105
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
1110
if (st->vrefs_uv[AD4170_REFIN1P_SUP] == -ENODEV ||
drivers/iio/adc/ad4170-4.c
1111
st->vrefs_uv[AD4170_REFIN1N_SUP] == -ENODEV)
drivers/iio/adc/ad4170-4.c
1115
refp = st->vrefs_uv[AD4170_REFIN1P_SUP];
drivers/iio/adc/ad4170-4.c
1116
refn = st->vrefs_uv[AD4170_REFIN1N_SUP];
drivers/iio/adc/ad4170-4.c
1119
if (st->vrefs_uv[AD4170_REFIN2P_SUP] == -ENODEV ||
drivers/iio/adc/ad4170-4.c
1120
st->vrefs_uv[AD4170_REFIN2N_SUP] == -ENODEV)
drivers/iio/adc/ad4170-4.c
1124
refp = st->vrefs_uv[AD4170_REFIN2P_SUP];
drivers/iio/adc/ad4170-4.c
1125
refn = st->vrefs_uv[AD4170_REFIN2N_SUP];
drivers/iio/adc/ad4170-4.c
1128
refp = st->vrefs_uv[AD4170_AVDD_SUP];
drivers/iio/adc/ad4170-4.c
1129
refn = st->vrefs_uv[AD4170_AVSS_SUP];
drivers/iio/adc/ad4170-4.c
1133
refp = st->vrefs_uv[AD4170_AVSS_SUP] + AD4170_INT_REF_2_5V;
drivers/iio/adc/ad4170-4.c
1134
refn = st->vrefs_uv[AD4170_AVSS_SUP];
drivers/iio/adc/ad4170-4.c
1185
ret = ad4170_get_ain_voltage_uv(st, chan->channel2, &ain_voltage);
drivers/iio/adc/ad4170-4.c
1200
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1204
reinit_completion(&st->completion);
drivers/iio/adc/ad4170-4.c
1205
ret = regmap_update_bits(st->regmap, AD4170_ADC_CTRL_REG,
drivers/iio/adc/ad4170-4.c
1220
settling_time_ms = DIV_ROUND_UP(6291164 * MILLI, st->mclk_hz);
drivers/iio/adc/ad4170-4.c
1221
ret = wait_for_completion_timeout(&st->completion,
drivers/iio/adc/ad4170-4.c
1224
dev_dbg(&st->spi->dev,
drivers/iio/adc/ad4170-4.c
1227
ret = regmap_read(st->regmap, AD4170_DATA_24B_REG, val);
drivers/iio/adc/ad4170-4.c
1240
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1241
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
1250
ret = ad4170_set_channel_enable(st, chan->address, true);
drivers/iio/adc/ad4170-4.c
1258
ret2 = ad4170_set_channel_enable(st, chan->address, false);
drivers/iio/adc/ad4170-4.c
1265
ret = ad4170_set_channel_enable(st, chan->address, false);
drivers/iio/adc/ad4170-4.c
1276
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1277
struct ad4170_chan_info *chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
1283
guard(mutex)(&st->lock);
drivers/iio/adc/ad4170-4.c
1326
*val = st->sps_tbl[f_type][fs_idx][0];
drivers/iio/adc/ad4170-4.c
1327
*val2 = st->sps_tbl[f_type][fs_idx][1];
drivers/iio/adc/ad4170-4.c
1333
*val = st->sps_tbl[f_type][fs_idx][0];
drivers/iio/adc/ad4170-4.c
1334
*val2 = st->sps_tbl[f_type][fs_idx][1];
drivers/iio/adc/ad4170-4.c
1353
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1354
struct ad4170_chan_info *chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
1355
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
1362
ret = ad4170_get_ain_voltage_uv(st, chan->channel2, &ainm_voltage);
drivers/iio/adc/ad4170-4.c
1422
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1423
struct ad4170_chan_info *chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
1439
*vals = (int *)st->sps_tbl[f_type];
drivers/iio/adc/ad4170-4.c
1444
*vals = (int *)st->sps_tbl[f_type];
drivers/iio/adc/ad4170-4.c
1455
static int ad4170_set_pga(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
1458
struct ad4170_chan_info *chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
1471
guard(mutex)(&st->lock);
drivers/iio/adc/ad4170-4.c
1475
return ad4170_write_channel_setup(st, chan->address, false);
drivers/iio/adc/ad4170-4.c
1478
static int ad4170_set_channel_freq(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
1482
struct ad4170_chan_info *chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
1498
if (st->sps_tbl[f_type][i][0] == val &&
drivers/iio/adc/ad4170-4.c
1499
st->sps_tbl[f_type][i][1] == val2)
drivers/iio/adc/ad4170-4.c
1505
guard(mutex)(&st->lock);
drivers/iio/adc/ad4170-4.c
1511
return ad4170_write_channel_setup(st, chan->address, false);
drivers/iio/adc/ad4170-4.c
1514
static int ad4170_set_calib_offset(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
1517
struct ad4170_chan_info *chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
1520
guard(mutex)(&st->lock);
drivers/iio/adc/ad4170-4.c
1523
return ad4170_write_channel_setup(st, chan->address, false);
drivers/iio/adc/ad4170-4.c
1526
static int ad4170_set_calib_gain(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
1529
struct ad4170_chan_info *chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
1532
guard(mutex)(&st->lock);
drivers/iio/adc/ad4170-4.c
1535
return ad4170_write_channel_setup(st, chan->address, false);
drivers/iio/adc/ad4170-4.c
1542
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1546
return ad4170_set_pga(st, chan, val, val2);
drivers/iio/adc/ad4170-4.c
1548
return ad4170_set_channel_freq(st, chan, val, val2);
drivers/iio/adc/ad4170-4.c
1550
return ad4170_set_calib_offset(st, chan, val);
drivers/iio/adc/ad4170-4.c
1552
return ad4170_set_calib_gain(st, chan, val);
drivers/iio/adc/ad4170-4.c
1592
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1597
ret = ad4170_set_channel_enable(st, chan_index, true);
drivers/iio/adc/ad4170-4.c
1613
static int ad4170_soft_reset(struct ad4170_state *st)
drivers/iio/adc/ad4170-4.c
1617
ret = regmap_write(st->regmap, AD4170_CONFIG_A_REG,
drivers/iio/adc/ad4170-4.c
1631
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1638
ret = regmap_read(st->regmap, AD4170_GPIO_MODE_REG, &val);
drivers/iio/adc/ad4170-4.c
1648
ret = regmap_read(st->regmap, AD4170_GPIO_INPUT_REG, &val);
drivers/iio/adc/ad4170-4.c
1650
ret = regmap_read(st->regmap, AD4170_GPIO_OUTPUT_REG, &val);
drivers/iio/adc/ad4170-4.c
1664
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1670
ret = regmap_assign_bits(st->regmap, AD4170_GPIO_OUTPUT_REG,
drivers/iio/adc/ad4170-4.c
1680
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1687
ret = regmap_read(st->regmap, AD4170_GPIO_MODE_REG, &val);
drivers/iio/adc/ad4170-4.c
1712
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1723
ret = regmap_update_bits(st->regmap, AD4170_GPIO_MODE_REG,
drivers/iio/adc/ad4170-4.c
1737
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1752
ret = regmap_update_bits(st->regmap, AD4170_GPIO_MODE_REG,
drivers/iio/adc/ad4170-4.c
1766
struct ad4170_state *st = gpiochip_get_data(gc);
drivers/iio/adc/ad4170-4.c
1771
bool valid = st->gpio_fn[i] == AD4170_GPIO_UNASSIGNED;
drivers/iio/adc/ad4170-4.c
1781
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
1783
st->gpiochip.label = "ad4170_gpios";
drivers/iio/adc/ad4170-4.c
1784
st->gpiochip.base = -1;
drivers/iio/adc/ad4170-4.c
1785
st->gpiochip.ngpio = AD4170_NUM_GPIO_PINS;
drivers/iio/adc/ad4170-4.c
1786
st->gpiochip.parent = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
1787
st->gpiochip.can_sleep = true;
drivers/iio/adc/ad4170-4.c
1788
st->gpiochip.init_valid_mask = ad4170_gpio_init_valid_mask;
drivers/iio/adc/ad4170-4.c
1789
st->gpiochip.get_direction = ad4170_gpio_get_direction;
drivers/iio/adc/ad4170-4.c
1790
st->gpiochip.direction_input = ad4170_gpio_direction_input;
drivers/iio/adc/ad4170-4.c
1791
st->gpiochip.direction_output = ad4170_gpio_direction_output;
drivers/iio/adc/ad4170-4.c
1792
st->gpiochip.get = ad4170_gpio_get;
drivers/iio/adc/ad4170-4.c
1793
st->gpiochip.set = ad4170_gpio_set;
drivers/iio/adc/ad4170-4.c
1794
st->gpiochip.owner = THIS_MODULE;
drivers/iio/adc/ad4170-4.c
1796
return devm_gpiochip_add_data(&st->spi->dev, &st->gpiochip, indio_dev);
drivers/iio/adc/ad4170-4.c
1799
static int ad4170_validate_excitation_pin(struct ad4170_state *st, u32 pin)
drivers/iio/adc/ad4170-4.c
1801
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
1816
if (st->pins_fn[pin] != AD4170_PIN_UNASSIGNED)
drivers/iio/adc/ad4170-4.c
1819
pin, st->pins_fn[pin]);
drivers/iio/adc/ad4170-4.c
1821
st->pins_fn[pin] |= AD4170_PIN_CURRENT_OUT;
drivers/iio/adc/ad4170-4.c
1825
if (st->gpio_fn[gpio] != AD4170_GPIO_UNASSIGNED)
drivers/iio/adc/ad4170-4.c
1828
gpio, st->gpio_fn[gpio]);
drivers/iio/adc/ad4170-4.c
1830
st->gpio_fn[gpio] |= AD4170_GPIO_AC_EXCITATION;
drivers/iio/adc/ad4170-4.c
1836
static int ad4170_validate_excitation_pins(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
1843
ret = ad4170_validate_excitation_pin(st, exc_pins[i]);
drivers/iio/adc/ad4170-4.c
1869
static int ad4170_parse_exc_current(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
1875
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
1912
static int ad4170_setup_current_src(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
1927
if (st->cur_src_pins[j] == AD4170_CURRENT_SRC_DISABLED)
drivers/iio/adc/ad4170-4.c
1931
return dev_err_probe(&st->spi->dev, -EINVAL,
drivers/iio/adc/ad4170-4.c
1936
st->cur_src_pins[j] = pin;
drivers/iio/adc/ad4170-4.c
1937
ret = regmap_write(st->regmap, AD4170_CURRENT_SRC_REG(j),
drivers/iio/adc/ad4170-4.c
1947
return dev_err_probe(&st->spi->dev, -EINVAL,
drivers/iio/adc/ad4170-4.c
1958
if (st->cur_src_pins[i] != exc_pins[i])
drivers/iio/adc/ad4170-4.c
1959
return dev_err_probe(&st->spi->dev, -EINVAL,
drivers/iio/adc/ad4170-4.c
1970
i = st->cur_src_pins[0] == exc_pins[0] ? 0 : 2;
drivers/iio/adc/ad4170-4.c
1972
if (st->cur_src_pins[i] != exc_pins[0] ||
drivers/iio/adc/ad4170-4.c
1973
st->cur_src_pins[i + 1] != exc_pins[1])
drivers/iio/adc/ad4170-4.c
1974
return dev_err_probe(&st->spi->dev, -EINVAL,
drivers/iio/adc/ad4170-4.c
1977
st->cur_src_pins[i] = exc_pins[0];
drivers/iio/adc/ad4170-4.c
1978
st->cur_src_pins[i + 1] = exc_pins[1];
drivers/iio/adc/ad4170-4.c
1998
static int ad4170_setup_bridge(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
2015
return ad4170_setup_current_src(st, child, setup, exc_pins,
drivers/iio/adc/ad4170-4.c
2037
ret = regmap_update_bits(st->regmap, AD4170_GPIO_MODE_REG, gpio_mask,
drivers/iio/adc/ad4170-4.c
2051
ret = regmap_update_bits(st->regmap, AD4170_GPIO_OUTPUT_REG, gpio_mask,
drivers/iio/adc/ad4170-4.c
2057
st->gpio_fn[3] |= AD4170_GPIO_OUTPUT;
drivers/iio/adc/ad4170-4.c
2058
st->gpio_fn[2] |= AD4170_GPIO_OUTPUT;
drivers/iio/adc/ad4170-4.c
2064
ret = regmap_update_bits(st->regmap, AD4170_GPIO_MODE_REG, gpio_mask,
drivers/iio/adc/ad4170-4.c
2084
ret = regmap_update_bits(st->regmap, AD4170_GPIO_OUTPUT_REG, gpio_mask,
drivers/iio/adc/ad4170-4.c
2092
st->gpio_fn[3] |= AD4170_GPIO_OUTPUT;
drivers/iio/adc/ad4170-4.c
2093
st->gpio_fn[2] |= AD4170_GPIO_OUTPUT;
drivers/iio/adc/ad4170-4.c
2094
st->gpio_fn[1] |= AD4170_GPIO_OUTPUT;
drivers/iio/adc/ad4170-4.c
2095
st->gpio_fn[0] |= AD4170_GPIO_OUTPUT;
drivers/iio/adc/ad4170-4.c
2101
static int ad4170_setup_rtd(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
2106
return ad4170_setup_current_src(st, child, setup, exc_pins,
drivers/iio/adc/ad4170-4.c
2110
static int ad4170_parse_external_sensor(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
2117
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
2132
ret = ad4170_parse_exc_current(st, child, exc_pins, exc_curs, &num_exc_pins);
drivers/iio/adc/ad4170-4.c
2140
ret = ad4170_validate_excitation_pins(st, exc_pins, num_exc_pins);
drivers/iio/adc/ad4170-4.c
2147
if (st->pins_fn[chan->channel2] & AD4170_PIN_VBIAS) {
drivers/iio/adc/ad4170-4.c
2149
ret = regmap_write(st->regmap, AD4170_V_BIAS_REG, reg_val);
drivers/iio/adc/ad4170-4.c
2155
ret = ad4170_setup_bridge(st, child, setup, exc_pins, exc_curs,
drivers/iio/adc/ad4170-4.c
2158
ret = ad4170_setup_rtd(st, child, setup, exc_pins, exc_curs,
drivers/iio/adc/ad4170-4.c
2164
static int ad4170_parse_reference(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
2168
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
2259
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2261
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
2278
chan = &st->chans[chan_num];
drivers/iio/adc/ad4170-4.c
2283
chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
2289
ret = ad4170_parse_reference(st, child, setup);
drivers/iio/adc/ad4170-4.c
2309
ret = ad4170_parse_external_sensor(st, child, setup, chan, s_type);
drivers/iio/adc/ad4170-4.c
2325
ret = ad4170_validate_channel(st, chan);
drivers/iio/adc/ad4170-4.c
2330
ret = ad4170_get_input_range(st, chan, ch_reg, ref_select);
drivers/iio/adc/ad4170-4.c
2340
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2341
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
2366
struct ad4170_setup *setup = &st->chan_infos[chan_num].setup;
drivers/iio/adc/ad4170-4.c
2368
st->chans[chan_num] = ad4170_temp_channel_template;
drivers/iio/adc/ad4170-4.c
2369
st->chans[chan_num].address = chan_num;
drivers/iio/adc/ad4170-4.c
2370
st->chans[chan_num].scan_index = chan_num;
drivers/iio/adc/ad4170-4.c
2372
st->chan_infos[chan_num].setup_num = AD4170_INVALID_SETUP;
drivers/iio/adc/ad4170-4.c
2373
st->chan_infos[chan_num].initialized = true;
drivers/iio/adc/ad4170-4.c
2378
ret = ad4170_get_input_range(st, &st->chans[chan_num], chan_num,
drivers/iio/adc/ad4170-4.c
2383
st->chan_infos[chan_num].input_range_uv = ret;
drivers/iio/adc/ad4170-4.c
2390
st->chans[chan_num] = ts_chan;
drivers/iio/adc/ad4170-4.c
2394
indio_dev->channels = st->chans;
drivers/iio/adc/ad4170-4.c
2404
static unsigned long ad4170_sel_clk(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
2407
st->clock_ctrl &= ~AD4170_CLOCK_CTRL_CLOCKSEL_MSK;
drivers/iio/adc/ad4170-4.c
2408
st->clock_ctrl |= FIELD_PREP(AD4170_CLOCK_CTRL_CLOCKSEL_MSK, clk_sel);
drivers/iio/adc/ad4170-4.c
2409
return regmap_write(st->regmap, AD4170_CLOCK_CTRL_REG, st->clock_ctrl);
drivers/iio/adc/ad4170-4.c
2420
struct ad4170_state *st = clk_hw_to_ad4170(hw);
drivers/iio/adc/ad4170-4.c
2423
clk_sel = FIELD_GET(AD4170_CLOCK_CTRL_CLOCKSEL_MSK, st->clock_ctrl);
drivers/iio/adc/ad4170-4.c
2429
struct ad4170_state *st = clk_hw_to_ad4170(hw);
drivers/iio/adc/ad4170-4.c
2431
return ad4170_sel_clk(st, AD4170_CLOCK_CTRL_CLOCKSEL_INT_OUT);
drivers/iio/adc/ad4170-4.c
2436
struct ad4170_state *st = clk_hw_to_ad4170(hw);
drivers/iio/adc/ad4170-4.c
2438
ad4170_sel_clk(st, AD4170_CLOCK_CTRL_CLOCKSEL_INT);
drivers/iio/adc/ad4170-4.c
2450
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2464
st->int_clk_hw.init = &init;
drivers/iio/adc/ad4170-4.c
2465
ret = devm_clk_hw_register(dev, &st->int_clk_hw);
drivers/iio/adc/ad4170-4.c
2470
&st->int_clk_hw);
drivers/iio/adc/ad4170-4.c
2475
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2476
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
2487
st->mclk_hz = AD4170_INT_CLOCK_16MHZ;
drivers/iio/adc/ad4170-4.c
2488
st->clock_ctrl |= FIELD_PREP(AD4170_CLOCK_CTRL_CLOCKSEL_MSK,
drivers/iio/adc/ad4170-4.c
2491
if (!device_property_present(&st->spi->dev, "#clock-cells"))
drivers/iio/adc/ad4170-4.c
2503
st->clock_ctrl |= FIELD_PREP(AD4170_CLOCK_CTRL_CLOCKSEL_MSK,
drivers/iio/adc/ad4170-4.c
2506
st->mclk_hz = clk_get_rate(ext_clk);
drivers/iio/adc/ad4170-4.c
2507
if (st->mclk_hz < AD4170_EXT_CLOCK_MHZ_MIN ||
drivers/iio/adc/ad4170-4.c
2508
st->mclk_hz > AD4170_EXT_CLOCK_MHZ_MAX) {
drivers/iio/adc/ad4170-4.c
2511
st->mclk_hz);
drivers/iio/adc/ad4170-4.c
2520
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2521
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
2531
ret = regmap_write(st->regmap, AD4170_CLOCK_CTRL_REG, st->clock_ctrl);
drivers/iio/adc/ad4170-4.c
2536
st->cur_src_pins[i] = AD4170_CURRENT_SRC_DISABLED;
drivers/iio/adc/ad4170-4.c
2551
ret = regmap_update_bits(st->regmap, AD4170_PIN_MUXING_REG,
drivers/iio/adc/ad4170-4.c
2572
st->pins_fn[vbias_pins[i]] |= AD4170_PIN_VBIAS;
drivers/iio/adc/ad4170-4.c
2591
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2592
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
2596
ad4170_fill_sps_tbl(st);
drivers/iio/adc/ad4170-4.c
2598
ret = regmap_update_bits(st->regmap, AD4170_ADC_CTRL_REG,
drivers/iio/adc/ad4170-4.c
2616
chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
2620
ret = ad4170_write_channel_setup(st, chan->address, false);
drivers/iio/adc/ad4170-4.c
2628
ret = regmap_write(st->regmap, AD4170_CHAN_MAP_REG(i), val);
drivers/iio/adc/ad4170-4.c
2633
ret = ad4170_set_channel_freq(st, chan,
drivers/iio/adc/ad4170-4.c
2646
ret = regmap_write(st->regmap, AD4170_CHAN_EN_REG, 0);
drivers/iio/adc/ad4170-4.c
2656
return regmap_update_bits(st->regmap, AD4170_ADC_CTRL_REG,
drivers/iio/adc/ad4170-4.c
2661
static int ad4170_prepare_spi_message(struct ad4170_state *st)
drivers/iio/adc/ad4170-4.c
2668
st->xfer.rx_buf = &st->rx_buf;
drivers/iio/adc/ad4170-4.c
2669
st->xfer.len = BITS_TO_BYTES(ad4170_channel_template.scan_type.realbits);
drivers/iio/adc/ad4170-4.c
2671
spi_message_init_with_transfers(&st->msg, &st->xfer, 1);
drivers/iio/adc/ad4170-4.c
2673
return devm_spi_optimize_message(&st->spi->dev, st->spi, &st->msg);
drivers/iio/adc/ad4170-4.c
2678
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2681
ret = regmap_update_bits(st->regmap, AD4170_ADC_CTRL_REG,
drivers/iio/adc/ad4170-4.c
2692
return regmap_update_bits(st->regmap, AD4170_ADC_CTRL_REG,
drivers/iio/adc/ad4170-4.c
2700
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2709
ret = regmap_write(st->regmap, AD4170_ADC_CTRL_CONT_READ_EXIT_REG, 0);
drivers/iio/adc/ad4170-4.c
2713
ret = regmap_update_bits(st->regmap, AD4170_ADC_CTRL_REG,
drivers/iio/adc/ad4170-4.c
2720
ret = regmap_update_bits(st->regmap, AD4170_ADC_CTRL_REG,
drivers/iio/adc/ad4170-4.c
2738
ret = ad4170_set_channel_enable(st, i, false);
drivers/iio/adc/ad4170-4.c
2776
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2782
ret = spi_sync(st->spi, &st->msg);
drivers/iio/adc/ad4170-4.c
2786
memcpy(&st->bounce_buffer[i++], st->rx_buf, ARRAY_SIZE(st->rx_buf));
drivers/iio/adc/ad4170-4.c
2789
iio_push_to_buffers_with_ts(indio_dev, st->bounce_buffer,
drivers/iio/adc/ad4170-4.c
2790
sizeof(st->bounce_buffer),
drivers/iio/adc/ad4170-4.c
2804
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2807
iio_trigger_poll(st->trig);
drivers/iio/adc/ad4170-4.c
2809
complete(&st->completion);
drivers/iio/adc/ad4170-4.c
2816
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2817
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
2820
st->trig = devm_iio_trigger_alloc(dev, "%s-trig%d",
drivers/iio/adc/ad4170-4.c
2823
if (!st->trig)
drivers/iio/adc/ad4170-4.c
2826
st->trig->ops = &ad4170_trigger_ops;
drivers/iio/adc/ad4170-4.c
2828
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/iio/adc/ad4170-4.c
2829
ret = devm_iio_trigger_register(dev, st->trig);
drivers/iio/adc/ad4170-4.c
2833
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/adc/ad4170-4.c
2838
static int ad4170_regulator_setup(struct ad4170_state *st)
drivers/iio/adc/ad4170-4.c
2840
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
2848
st->vrefs_uv[AD4170_AVDD_SUP] = ret;
drivers/iio/adc/ad4170-4.c
2854
st->vrefs_uv[AD4170_IOVDD_SUP] = ret;
drivers/iio/adc/ad4170-4.c
2869
st->vrefs_uv[AD4170_AVSS_SUP] = ret == -ENODEV ? 0 : -ret;
drivers/iio/adc/ad4170-4.c
2875
st->vrefs_uv[AD4170_REFIN1P_SUP] = ret;
drivers/iio/adc/ad4170-4.c
2886
st->vrefs_uv[AD4170_REFIN1N_SUP] = ret == -ENODEV ? -ENODEV : -ret;
drivers/iio/adc/ad4170-4.c
2892
st->vrefs_uv[AD4170_REFIN2P_SUP] = ret;
drivers/iio/adc/ad4170-4.c
2903
st->vrefs_uv[AD4170_REFIN2N_SUP] = ret == -ENODEV ? -ENODEV : -ret;
drivers/iio/adc/ad4170-4.c
2913
struct ad4170_state *st;
drivers/iio/adc/ad4170-4.c
2916
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ad4170-4.c
2920
st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
2921
st->spi = spi;
drivers/iio/adc/ad4170-4.c
2923
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/adc/ad4170-4.c
2934
st->regmap = devm_regmap_init(dev, NULL, st, &ad4170_regmap_config);
drivers/iio/adc/ad4170-4.c
2935
if (IS_ERR(st->regmap))
drivers/iio/adc/ad4170-4.c
2936
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/adc/ad4170-4.c
2939
ret = ad4170_regulator_setup(st);
drivers/iio/adc/ad4170-4.c
2943
ret = ad4170_soft_reset(st);
drivers/iio/adc/ad4170-4.c
2955
init_completion(&st->completion);
drivers/iio/adc/ad4170-4.c
2968
ret = ad4170_prepare_spi_message(st);
drivers/iio/adc/ad4170-4.c
466
static void ad4170_fill_sps_tbl(struct ad4170_state *st)
drivers/iio/adc/ad4170-4.c
476
tmp0 = div_u64_rem(st->mclk_hz, 32 * ad4170_sinc3_filt_fs_tbl[i],
drivers/iio/adc/ad4170-4.c
480
st->sps_tbl[AD4170_SINC5_AVG][i][0] = tmp0; /* Integer part */
drivers/iio/adc/ad4170-4.c
481
st->sps_tbl[AD4170_SINC5_AVG][i][1] = tmp1; /* Fractional part */
drivers/iio/adc/ad4170-4.c
484
st->sps_tbl[AD4170_SINC3][i][0] = tmp0; /* Integer part */
drivers/iio/adc/ad4170-4.c
485
st->sps_tbl[AD4170_SINC3][i][1] = tmp1; /* Fractional part */
drivers/iio/adc/ad4170-4.c
489
tmp0 = div_u64_rem(st->mclk_hz, 32 * ad4170_sinc5_filt_fs_tbl[i],
drivers/iio/adc/ad4170-4.c
493
st->sps_tbl[AD4170_SINC5][i][0] = tmp0; /* Integer part */
drivers/iio/adc/ad4170-4.c
494
st->sps_tbl[AD4170_SINC5][i][1] = tmp1; /* Fractional part */
drivers/iio/adc/ad4170-4.c
502
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
505
return regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad4170-4.c
507
return regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad4170-4.c
510
static int ad4170_get_reg_size(struct ad4170_state *st, unsigned int reg,
drivers/iio/adc/ad4170-4.c
523
struct ad4170_state *st = context;
drivers/iio/adc/ad4170-4.c
528
ret = ad4170_get_reg_size(st, reg, &size);
drivers/iio/adc/ad4170-4.c
546
return spi_write_then_read(st->spi, tx_buf, 1, NULL, 0);
drivers/iio/adc/ad4170-4.c
551
return spi_write_then_read(st->spi, tx_buf,
drivers/iio/adc/ad4170-4.c
557
struct ad4170_state *st = context;
drivers/iio/adc/ad4170-4.c
564
ret = ad4170_get_reg_size(st, reg, &size);
drivers/iio/adc/ad4170-4.c
568
ret = spi_write_then_read(st->spi, tx_buf, ARRAY_SIZE(tx_buf),
drivers/iio/adc/ad4170-4.c
569
st->rx_buf, size);
drivers/iio/adc/ad4170-4.c
575
*val = get_unaligned_be24(st->rx_buf);
drivers/iio/adc/ad4170-4.c
578
*val = get_unaligned_be16(st->rx_buf);
drivers/iio/adc/ad4170-4.c
581
*val = st->rx_buf[0];
drivers/iio/adc/ad4170-4.c
606
static int ad4170_find_setup(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
616
struct ad4170_setup_info *setup_info = &st->setup_infos[i];
drivers/iio/adc/ad4170-4.c
630
setup_info->channels < st->setup_infos[*setup_num].channels)
drivers/iio/adc/ad4170-4.c
641
static void ad4170_unlink_channel(struct ad4170_state *st, unsigned int channel)
drivers/iio/adc/ad4170-4.c
643
struct ad4170_chan_info *chan_info = &st->chan_infos[channel];
drivers/iio/adc/ad4170-4.c
644
struct ad4170_setup_info *setup_info = &st->setup_infos[chan_info->setup_num];
drivers/iio/adc/ad4170-4.c
650
static int ad4170_unlink_setup(struct ad4170_state *st, unsigned int setup_num)
drivers/iio/adc/ad4170-4.c
655
struct ad4170_chan_info *chan_info = &st->chan_infos[i];
drivers/iio/adc/ad4170-4.c
660
ad4170_unlink_channel(st, i);
drivers/iio/adc/ad4170-4.c
665
static int ad4170_link_channel_setup(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
669
struct ad4170_setup_info *setup_info = &st->setup_infos[setup_num];
drivers/iio/adc/ad4170-4.c
670
struct ad4170_chan_info *chan_info = &st->chan_infos[chan_addr];
drivers/iio/adc/ad4170-4.c
673
ret = regmap_update_bits(st->regmap, AD4170_CHAN_SETUP_REG(chan_addr),
drivers/iio/adc/ad4170-4.c
684
static int ad4170_write_setup(struct ad4170_state *st, unsigned int setup_num,
drivers/iio/adc/ad4170-4.c
693
ret = regmap_update_bits(st->regmap, AD4170_ADC_CTRL_REG,
drivers/iio/adc/ad4170-4.c
700
ret = regmap_write(st->regmap, AD4170_MISC_REG(setup_num), setup->misc);
drivers/iio/adc/ad4170-4.c
704
ret = regmap_write(st->regmap, AD4170_AFE_REG(setup_num), setup->afe);
drivers/iio/adc/ad4170-4.c
708
ret = regmap_write(st->regmap, AD4170_FILTER_REG(setup_num),
drivers/iio/adc/ad4170-4.c
713
ret = regmap_write(st->regmap, AD4170_FILTER_FS_REG(setup_num),
drivers/iio/adc/ad4170-4.c
718
ret = regmap_write(st->regmap, AD4170_OFFSET_REG(setup_num),
drivers/iio/adc/ad4170-4.c
723
ret = regmap_write(st->regmap, AD4170_GAIN_REG(setup_num), setup->gain);
drivers/iio/adc/ad4170-4.c
727
memcpy(&st->setup_infos[setup_num].setup, setup, sizeof(*setup));
drivers/iio/adc/ad4170-4.c
731
static int ad4170_write_channel_setup(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
734
struct ad4170_chan_info *chan_info = &st->chan_infos[chan_addr];
drivers/iio/adc/ad4170-4.c
771
ad4170_unlink_channel(st, chan_addr);
drivers/iio/adc/ad4170-4.c
780
ret = ad4170_find_setup(st, &chan_info->setup, &setup_num, &overwrite);
drivers/iio/adc/ad4170-4.c
786
ad4170_unlink_channel(st, chan_addr);
drivers/iio/adc/ad4170-4.c
789
ret = ad4170_unlink_setup(st, setup_num);
drivers/iio/adc/ad4170-4.c
793
ret = ad4170_write_setup(st, setup_num, &chan_info->setup);
drivers/iio/adc/ad4170-4.c
798
return ad4170_link_channel_setup(st, chan_addr, setup_num);
drivers/iio/adc/ad4170-4.c
801
static int ad4170_set_channel_enable(struct ad4170_state *st,
drivers/iio/adc/ad4170-4.c
804
struct ad4170_chan_info *chan_info = &st->chan_infos[chan_addr];
drivers/iio/adc/ad4170-4.c
812
ret = ad4170_write_channel_setup(st, chan_addr, true);
drivers/iio/adc/ad4170-4.c
817
setup_info = &st->setup_infos[chan_info->setup_num];
drivers/iio/adc/ad4170-4.c
819
ret = regmap_update_bits(st->regmap, AD4170_CHAN_EN_REG,
drivers/iio/adc/ad4170-4.c
850
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
851
struct ad4170_chan_info *chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
878
scoped_guard(mutex, &st->lock) {
drivers/iio/adc/ad4170-4.c
893
ret = ad4170_write_channel_setup(st, chan->address, false);
drivers/iio/adc/ad4170-4.c
903
struct ad4170_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4170-4.c
904
struct ad4170_chan_info *chan_info = &st->chan_infos[chan->address];
drivers/iio/adc/ad4170-4.c
973
static int ad4170_get_ain_voltage_uv(struct ad4170_state *st, int ain_n,
drivers/iio/adc/ad4170-4.c
976
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4170-4.c
987
if (st->pins_fn[ain_n] & AD4170_PIN_VBIAS) {
drivers/iio/adc/ad4170-4.c
988
int v_diff = st->vrefs_uv[AD4170_AVDD_SUP] - st->vrefs_uv[AD4170_AVSS_SUP];
drivers/iio/adc/ad4170-4.c
998
v_diff = st->vrefs_uv[AD4170_AVDD_SUP] - st->vrefs_uv[AD4170_AVSS_SUP];
drivers/iio/adc/ad4691.c
1001
return regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad4691.c
1004
static int ad4691_set_pwm_freq(struct ad4691_state *st, unsigned int freq)
drivers/iio/adc/ad4691.c
1009
st->cnv_period_ns = DIV_ROUND_UP(NSEC_PER_SEC, freq);
drivers/iio/adc/ad4691.c
1013
static int ad4691_sampling_enable(struct ad4691_state *st, bool enable)
drivers/iio/adc/ad4691.c
1016
.period = st->cnv_period_ns,
drivers/iio/adc/ad4691.c
1022
return pwm_apply_might_sleep(st->conv_trigger, &conv_state);
drivers/iio/adc/ad4691.c
1032
static int ad4691_enter_conversion_mode(struct ad4691_state *st)
drivers/iio/adc/ad4691.c
1036
if (st->manual_mode)
drivers/iio/adc/ad4691.c
1037
return regmap_update_bits(st->regmap, AD4691_DEVICE_SETUP,
drivers/iio/adc/ad4691.c
1040
ret = ad4691_write_osc_freq(st);
drivers/iio/adc/ad4691.c
1044
ret = regmap_update_bits(st->regmap, AD4691_ADC_SETUP,
drivers/iio/adc/ad4691.c
1049
return regmap_write(st->regmap, AD4691_STATE_RESET_REG,
drivers/iio/adc/ad4691.c
1053
static int ad4691_transfer(struct ad4691_state *st, u16 cmd)
drivers/iio/adc/ad4691.c
1059
return spi_write_then_read(st->spi, buf, sizeof(buf), NULL, 0);
drivers/iio/adc/ad4691.c
1068
static int ad4691_exit_conversion_mode(struct ad4691_state *st)
drivers/iio/adc/ad4691.c
1070
if (st->manual_mode)
drivers/iio/adc/ad4691.c
1071
return ad4691_transfer(st, AD4691_EXIT_COMMAND);
drivers/iio/adc/ad4691.c
1073
return regmap_update_bits(st->regmap, AD4691_ADC_SETUP,
drivers/iio/adc/ad4691.c
1079
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1083
memset(st->scan_xfers, 0, sizeof(st->scan_xfers));
drivers/iio/adc/ad4691.c
1084
memset(st->scan_tx, 0, sizeof(st->scan_tx));
drivers/iio/adc/ad4691.c
1086
spi_message_init(&st->scan_msg);
drivers/iio/adc/ad4691.c
1096
put_unaligned_be16((u16)(AD4691_ADC_CHAN(i) << 8), &st->scan_tx[k]);
drivers/iio/adc/ad4691.c
1097
st->scan_xfers[k].tx_buf = &st->scan_tx[k];
drivers/iio/adc/ad4691.c
1106
st->scan_xfers[k].rx_buf = (k == 0) ? NULL : &st->vals[k - 1];
drivers/iio/adc/ad4691.c
1107
st->scan_xfers[k].len = sizeof(*st->scan_tx);
drivers/iio/adc/ad4691.c
1108
st->scan_xfers[k].cs_change = 1;
drivers/iio/adc/ad4691.c
1109
st->scan_xfers[k].cs_change_delay.value = AD4691_CNV_HIGH_TIME_NS;
drivers/iio/adc/ad4691.c
1110
st->scan_xfers[k].cs_change_delay.unit = SPI_DELAY_UNIT_NSECS;
drivers/iio/adc/ad4691.c
1111
spi_message_add_tail(&st->scan_xfers[k], &st->scan_msg);
drivers/iio/adc/ad4691.c
1116
st->scan_xfers[k].tx_buf = &st->scan_tx[k]; /* scan_tx[k] == 0 == NOOP */
drivers/iio/adc/ad4691.c
1117
st->scan_xfers[k].rx_buf = &st->vals[k - 1];
drivers/iio/adc/ad4691.c
1118
st->scan_xfers[k].len = sizeof(*st->scan_tx);
drivers/iio/adc/ad4691.c
1119
spi_message_add_tail(&st->scan_xfers[k], &st->scan_msg);
drivers/iio/adc/ad4691.c
1121
ret = spi_optimize_message(st->spi, &st->scan_msg);
drivers/iio/adc/ad4691.c
1125
ret = ad4691_enter_conversion_mode(st);
drivers/iio/adc/ad4691.c
1127
spi_unoptimize_message(&st->scan_msg);
drivers/iio/adc/ad4691.c
1136
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1139
ret = ad4691_exit_conversion_mode(st);
drivers/iio/adc/ad4691.c
1140
spi_unoptimize_message(&st->scan_msg);
drivers/iio/adc/ad4691.c
1151
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1156
memset(st->scan_xfers, 0, sizeof(st->scan_xfers));
drivers/iio/adc/ad4691.c
1157
memset(st->scan_tx, 0, sizeof(st->scan_tx));
drivers/iio/adc/ad4691.c
1159
spi_message_init(&st->scan_msg);
drivers/iio/adc/ad4691.c
1168
put_unaligned_be16(0x8000 | AD4691_AVG_IN(i), &st->scan_tx[k]);
drivers/iio/adc/ad4691.c
1169
st->scan_xfers[2 * k].tx_buf = &st->scan_tx[k];
drivers/iio/adc/ad4691.c
1170
st->scan_xfers[2 * k].len = sizeof(*st->scan_tx);
drivers/iio/adc/ad4691.c
1171
spi_message_add_tail(&st->scan_xfers[2 * k], &st->scan_msg);
drivers/iio/adc/ad4691.c
1172
st->scan_xfers[2 * k + 1].rx_buf = &st->vals[k];
drivers/iio/adc/ad4691.c
1173
st->scan_xfers[2 * k + 1].len = sizeof(*st->scan_tx);
drivers/iio/adc/ad4691.c
1174
st->scan_xfers[2 * k + 1].cs_change = 1;
drivers/iio/adc/ad4691.c
1175
spi_message_add_tail(&st->scan_xfers[2 * k + 1], &st->scan_msg);
drivers/iio/adc/ad4691.c
1189
put_unaligned_be16(AD4691_STATE_RESET_REG, st->scan_tx_reset);
drivers/iio/adc/ad4691.c
1190
st->scan_tx_reset[2] = AD4691_STATE_RESET_ALL;
drivers/iio/adc/ad4691.c
1191
st->scan_tx_reset[3] = 1;
drivers/iio/adc/ad4691.c
1192
st->scan_xfers[2 * k].tx_buf = st->scan_tx_reset;
drivers/iio/adc/ad4691.c
1193
st->scan_xfers[2 * k].len = sizeof(st->scan_tx_reset);
drivers/iio/adc/ad4691.c
1194
spi_message_add_tail(&st->scan_xfers[2 * k], &st->scan_msg);
drivers/iio/adc/ad4691.c
1196
ret = spi_optimize_message(st->spi, &st->scan_msg);
drivers/iio/adc/ad4691.c
1202
ret = regmap_write(st->regmap, AD4691_STD_SEQ_CONFIG, std_seq_config);
drivers/iio/adc/ad4691.c
1207
ret = regmap_write(st->regmap, AD4691_ACC_MASK_REG, acc_mask);
drivers/iio/adc/ad4691.c
1211
ret = regmap_write(st->regmap, AD4691_ACC_DEPTH_IN(0), st->osr);
drivers/iio/adc/ad4691.c
1215
ret = ad4691_enter_conversion_mode(st);
drivers/iio/adc/ad4691.c
1222
spi_unoptimize_message(&st->scan_msg);
drivers/iio/adc/ad4691.c
1228
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1240
ret = ad4691_sampling_enable(st, true);
drivers/iio/adc/ad4691.c
1244
enable_irq(st->irq);
drivers/iio/adc/ad4691.c
1245
st->irq_enabled = true;
drivers/iio/adc/ad4691.c
1251
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1253
if (st->irq_enabled) {
drivers/iio/adc/ad4691.c
1254
disable_irq(st->irq);
drivers/iio/adc/ad4691.c
1255
st->irq_enabled = false;
drivers/iio/adc/ad4691.c
1257
return ad4691_sampling_enable(st, false);
drivers/iio/adc/ad4691.c
1262
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1265
ret = ad4691_exit_conversion_mode(st);
drivers/iio/adc/ad4691.c
1266
spi_unoptimize_message(&st->scan_msg);
drivers/iio/adc/ad4691.c
1279
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1280
struct device *dev = regmap_get_device(st->regmap);
drivers/iio/adc/ad4691.c
1289
ret = ad4691_enter_conversion_mode(st);
drivers/iio/adc/ad4691.c
1293
memset(st->scan_xfers, 0, sizeof(st->scan_xfers));
drivers/iio/adc/ad4691.c
1294
memset(st->scan_tx, 0, sizeof(st->scan_tx));
drivers/iio/adc/ad4691.c
1314
st->scan_tx[k] = AD4691_ADC_CHAN(bit) << 8;
drivers/iio/adc/ad4691.c
1315
st->scan_xfers[k].tx_buf = &st->scan_tx[k];
drivers/iio/adc/ad4691.c
1316
st->scan_xfers[k].len = sizeof(*st->scan_tx);
drivers/iio/adc/ad4691.c
1317
st->scan_xfers[k].bits_per_word = bpw;
drivers/iio/adc/ad4691.c
1318
st->scan_xfers[k].cs_change = 1;
drivers/iio/adc/ad4691.c
1319
st->scan_xfers[k].cs_change_delay.value = AD4691_CNV_HIGH_TIME_NS;
drivers/iio/adc/ad4691.c
1320
st->scan_xfers[k].cs_change_delay.unit = SPI_DELAY_UNIT_NSECS;
drivers/iio/adc/ad4691.c
1323
st->scan_xfers[k].offload_flags = SPI_OFFLOAD_XFER_RX_STREAM;
drivers/iio/adc/ad4691.c
1328
st->scan_xfers[k].tx_buf = &st->scan_tx[k]; /* scan_tx[k] == 0 == NOOP */
drivers/iio/adc/ad4691.c
1329
st->scan_xfers[k].len = sizeof(*st->scan_tx);
drivers/iio/adc/ad4691.c
1330
st->scan_xfers[k].bits_per_word = bpw;
drivers/iio/adc/ad4691.c
1331
st->scan_xfers[k].offload_flags = SPI_OFFLOAD_XFER_RX_STREAM;
drivers/iio/adc/ad4691.c
1334
spi_message_init_with_transfers(&st->scan_msg, st->scan_xfers, k);
drivers/iio/adc/ad4691.c
1335
st->scan_msg.offload = st->offload;
drivers/iio/adc/ad4691.c
1337
ret = spi_optimize_message(spi, &st->scan_msg);
drivers/iio/adc/ad4691.c
1341
config.periodic.frequency_hz = st->trigger_hz;
drivers/iio/adc/ad4691.c
1342
ret = spi_offload_trigger_enable(st->offload, st->offload_trigger, &config);
drivers/iio/adc/ad4691.c
1349
spi_unoptimize_message(&st->scan_msg);
drivers/iio/adc/ad4691.c
1351
ad4691_exit_conversion_mode(st);
drivers/iio/adc/ad4691.c
1357
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1359
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/adc/ad4691.c
1360
spi_unoptimize_message(&st->scan_msg);
drivers/iio/adc/ad4691.c
1362
return ad4691_exit_conversion_mode(st);
drivers/iio/adc/ad4691.c
1372
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1373
struct device *dev = regmap_get_device(st->regmap);
drivers/iio/adc/ad4691.c
1385
ret = regmap_write(st->regmap, AD4691_STD_SEQ_CONFIG, std_seq_config);
drivers/iio/adc/ad4691.c
1390
ret = regmap_write(st->regmap, AD4691_ACC_MASK_REG, acc_mask);
drivers/iio/adc/ad4691.c
1394
ret = regmap_write(st->regmap, AD4691_ACC_DEPTH_IN(0), st->osr);
drivers/iio/adc/ad4691.c
1398
ret = ad4691_enter_conversion_mode(st);
drivers/iio/adc/ad4691.c
1402
memset(st->scan_xfers, 0, sizeof(st->scan_xfers));
drivers/iio/adc/ad4691.c
1403
memset(st->scan_tx, 0, sizeof(st->scan_tx));
drivers/iio/adc/ad4691.c
1419
st->scan_tx[k] = 0x8000 | AD4691_AVG_IN(bit);
drivers/iio/adc/ad4691.c
1422
st->scan_xfers[2 * k].tx_buf = &st->scan_tx[k];
drivers/iio/adc/ad4691.c
1423
st->scan_xfers[2 * k].len = sizeof(*st->scan_tx);
drivers/iio/adc/ad4691.c
1424
st->scan_xfers[2 * k].bits_per_word = bpw;
drivers/iio/adc/ad4691.c
1427
st->scan_xfers[2 * k + 1].len = sizeof(*st->scan_tx);
drivers/iio/adc/ad4691.c
1428
st->scan_xfers[2 * k + 1].bits_per_word = bpw;
drivers/iio/adc/ad4691.c
1429
st->scan_xfers[2 * k + 1].offload_flags = SPI_OFFLOAD_XFER_RX_STREAM;
drivers/iio/adc/ad4691.c
1430
st->scan_xfers[2 * k + 1].cs_change = 1;
drivers/iio/adc/ad4691.c
1441
put_unaligned_be16(AD4691_STATE_RESET_REG, st->scan_tx_reset);
drivers/iio/adc/ad4691.c
1442
st->scan_tx_reset[2] = AD4691_STATE_RESET_ALL;
drivers/iio/adc/ad4691.c
1443
st->scan_tx_reset[3] = 1;
drivers/iio/adc/ad4691.c
1444
st->scan_xfers[2 * k].tx_buf = st->scan_tx_reset;
drivers/iio/adc/ad4691.c
1445
st->scan_xfers[2 * k].len = sizeof(st->scan_tx_reset);
drivers/iio/adc/ad4691.c
1451
spi_message_init_with_transfers(&st->scan_msg, st->scan_xfers, 2 * k + 1);
drivers/iio/adc/ad4691.c
1452
st->scan_msg.offload = st->offload;
drivers/iio/adc/ad4691.c
1454
ret = spi_optimize_message(spi, &st->scan_msg);
drivers/iio/adc/ad4691.c
1458
ret = spi_offload_trigger_enable(st->offload, st->offload_trigger, &config);
drivers/iio/adc/ad4691.c
1462
ret = ad4691_sampling_enable(st, true);
drivers/iio/adc/ad4691.c
1469
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/adc/ad4691.c
1471
spi_unoptimize_message(&st->scan_msg);
drivers/iio/adc/ad4691.c
1473
ad4691_exit_conversion_mode(st);
drivers/iio/adc/ad4691.c
1479
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1481
ad4691_sampling_enable(st, false);
drivers/iio/adc/ad4691.c
1482
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/adc/ad4691.c
1483
spi_unoptimize_message(&st->scan_msg);
drivers/iio/adc/ad4691.c
1485
return ad4691_exit_conversion_mode(st);
drivers/iio/adc/ad4691.c
1498
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1500
if (st->manual_mode && st->offload)
drivers/iio/adc/ad4691.c
1501
return sysfs_emit(buf, "%llu\n", READ_ONCE(st->trigger_hz));
drivers/iio/adc/ad4691.c
1503
return sysfs_emit(buf, "%lu\n", NSEC_PER_SEC / st->cnv_period_ns);
drivers/iio/adc/ad4691.c
1511
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1523
if (st->manual_mode && st->offload) {
drivers/iio/adc/ad4691.c
1529
ret = spi_offload_trigger_validate(st->offload_trigger, &config);
drivers/iio/adc/ad4691.c
1533
WRITE_ONCE(st->trigger_hz, config.periodic.frequency_hz);
drivers/iio/adc/ad4691.c
1537
ret = ad4691_set_pwm_freq(st, freq);
drivers/iio/adc/ad4691.c
1554
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1565
disable_irq_nosync(st->irq);
drivers/iio/adc/ad4691.c
1573
struct ad4691_state *st = iio_trigger_get_drvdata(trig);
drivers/iio/adc/ad4691.c
1575
enable_irq(st->irq);
drivers/iio/adc/ad4691.c
1585
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
1588
guard(mutex)(&st->lock);
drivers/iio/adc/ad4691.c
1590
ret = spi_sync(st->spi, &st->scan_msg);
drivers/iio/adc/ad4691.c
1592
dev_err_ratelimited(regmap_get_device(st->regmap),
drivers/iio/adc/ad4691.c
1602
iio_push_to_buffers_with_ts(indio_dev, st->vals, sizeof(st->vals), ts);
drivers/iio/adc/ad4691.c
1638
static int ad4691_pwm_setup(struct ad4691_state *st)
drivers/iio/adc/ad4691.c
1640
struct device *dev = regmap_get_device(st->regmap);
drivers/iio/adc/ad4691.c
1642
st->conv_trigger = devm_pwm_get(dev, "cnv");
drivers/iio/adc/ad4691.c
1643
if (IS_ERR(st->conv_trigger))
drivers/iio/adc/ad4691.c
1644
return dev_err_probe(dev, PTR_ERR(st->conv_trigger),
drivers/iio/adc/ad4691.c
1647
return ad4691_set_pwm_freq(st, st->info->max_rate);
drivers/iio/adc/ad4691.c
1650
static int ad4691_regulator_setup(struct ad4691_state *st)
drivers/iio/adc/ad4691.c
1652
struct device *dev = regmap_get_device(st->regmap);
drivers/iio/adc/ad4691.c
1676
st->ldo_en = true;
drivers/iio/adc/ad4691.c
1683
st->vref_uV = devm_regulator_get_enable_read_voltage(dev, "ref");
drivers/iio/adc/ad4691.c
1684
if (st->vref_uV < 0)
drivers/iio/adc/ad4691.c
1685
return dev_err_probe(dev, st->vref_uV,
drivers/iio/adc/ad4691.c
1688
st->vref_uV = devm_regulator_get_enable_read_voltage(dev, "refin");
drivers/iio/adc/ad4691.c
1689
if (st->vref_uV < 0)
drivers/iio/adc/ad4691.c
1690
return dev_err_probe(dev, st->vref_uV,
drivers/iio/adc/ad4691.c
1692
st->refbuf_en = true;
drivers/iio/adc/ad4691.c
1698
if (st->vref_uV < AD4691_VREF_uV_MIN || st->vref_uV > AD4691_VREF_uV_MAX)
drivers/iio/adc/ad4691.c
1701
st->vref_uV, AD4691_VREF_uV_MIN,
drivers/iio/adc/ad4691.c
1707
static int ad4691_reset(struct ad4691_state *st)
drivers/iio/adc/ad4691.c
1709
struct device *dev = regmap_get_device(st->regmap);
drivers/iio/adc/ad4691.c
1732
ret = regmap_write(st->regmap, AD4691_SPI_CONFIG_A_REG,
drivers/iio/adc/ad4691.c
1746
static int ad4691_config(struct ad4691_state *st)
drivers/iio/adc/ad4691.c
1748
struct device *dev = regmap_get_device(st->regmap);
drivers/iio/adc/ad4691.c
1761
st->manual_mode = false;
drivers/iio/adc/ad4691.c
1762
ret = ad4691_pwm_setup(st);
drivers/iio/adc/ad4691.c
1766
st->manual_mode = true;
drivers/iio/adc/ad4691.c
1769
switch (st->vref_uV) {
drivers/iio/adc/ad4691.c
1788
st->vref_uV);
drivers/iio/adc/ad4691.c
1792
if (st->refbuf_en)
drivers/iio/adc/ad4691.c
1795
ret = regmap_write(st->regmap, AD4691_REF_CTRL, val);
drivers/iio/adc/ad4691.c
1799
ret = regmap_assign_bits(st->regmap, AD4691_DEVICE_SETUP,
drivers/iio/adc/ad4691.c
1800
AD4691_LDO_EN, st->ldo_en);
drivers/iio/adc/ad4691.c
1809
ret = regmap_write(st->regmap, AD4691_OSC_FREQ_REG,
drivers/iio/adc/ad4691.c
1810
ad4691_samp_freq_start(st->info));
drivers/iio/adc/ad4691.c
1814
st->target_osc_freq_Hz = ad4691_osc_freqs_Hz[ad4691_samp_freq_start(st->info)];
drivers/iio/adc/ad4691.c
1816
ret = regmap_update_bits(st->regmap, AD4691_ADC_SETUP,
drivers/iio/adc/ad4691.c
1821
ad4691_precompute_samp_freq_avail(st);
drivers/iio/adc/ad4691.c
1827
struct ad4691_state *st)
drivers/iio/adc/ad4691.c
1829
struct device *dev = regmap_get_device(st->regmap);
drivers/iio/adc/ad4691.c
1838
if (st->manual_mode)
drivers/iio/adc/ad4691.c
1839
indio_dev->channels = st->info->sw_info->manual_channels;
drivers/iio/adc/ad4691.c
1841
indio_dev->channels = st->info->sw_info->channels;
drivers/iio/adc/ad4691.c
1842
indio_dev->num_channels = st->info->sw_info->num_channels;
drivers/iio/adc/ad4691.c
1843
indio_dev->info = st->manual_mode ? &ad4691_manual_info : &ad4691_cnv_burst_info;
drivers/iio/adc/ad4691.c
1849
if (st->manual_mode)
drivers/iio/adc/ad4691.c
1865
iio_trigger_set_drvdata(trig, st);
drivers/iio/adc/ad4691.c
1889
st->irq = irq;
drivers/iio/adc/ad4691.c
1891
ret = ad4691_gpio_setup(st, i);
drivers/iio/adc/ad4691.c
1914
struct ad4691_state *st,
drivers/iio/adc/ad4691.c
1917
struct device *dev = regmap_get_device(st->regmap);
drivers/iio/adc/ad4691.c
1921
st->offload = spi_offload;
drivers/iio/adc/ad4691.c
1931
if (st->manual_mode)
drivers/iio/adc/ad4691.c
1932
indio_dev->channels = st->info->offload_info->manual_channels;
drivers/iio/adc/ad4691.c
1934
indio_dev->channels = st->info->offload_info->channels;
drivers/iio/adc/ad4691.c
1935
indio_dev->num_channels = st->info->offload_info->num_channels;
drivers/iio/adc/ad4691.c
1942
if (st->manual_mode) {
drivers/iio/adc/ad4691.c
1943
st->offload_trigger =
drivers/iio/adc/ad4691.c
1944
devm_spi_offload_trigger_get(dev, st->offload,
drivers/iio/adc/ad4691.c
1946
if (IS_ERR(st->offload_trigger))
drivers/iio/adc/ad4691.c
1947
return dev_err_probe(dev, PTR_ERR(st->offload_trigger),
drivers/iio/adc/ad4691.c
1950
st->trigger_hz = AD4691_OFFLOAD_INITIAL_TRIGGER_HZ;
drivers/iio/adc/ad4691.c
1955
.priv = st,
drivers/iio/adc/ad4691.c
1963
st->offload_trigger =
drivers/iio/adc/ad4691.c
1964
devm_spi_offload_trigger_get(dev, st->offload,
drivers/iio/adc/ad4691.c
1966
if (IS_ERR(st->offload_trigger))
drivers/iio/adc/ad4691.c
1967
return dev_err_probe(dev, PTR_ERR(st->offload_trigger),
drivers/iio/adc/ad4691.c
1971
rx_dma = devm_spi_offload_rx_stream_request_dma_chan(dev, st->offload);
drivers/iio/adc/ad4691.c
1976
if (st->manual_mode)
drivers/iio/adc/ad4691.c
1996
struct ad4691_state *st;
drivers/iio/adc/ad4691.c
1999
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad4691.c
2003
st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
2004
st->spi = spi;
drivers/iio/adc/ad4691.c
2005
st->info = spi_get_device_match_data(spi);
drivers/iio/adc/ad4691.c
2006
if (!st->info)
drivers/iio/adc/ad4691.c
2008
st->osr = 1;
drivers/iio/adc/ad4691.c
2010
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/adc/ad4691.c
2014
st->regmap = devm_regmap_init(dev, NULL, spi, &ad4691_regmap_config);
drivers/iio/adc/ad4691.c
2015
if (IS_ERR(st->regmap))
drivers/iio/adc/ad4691.c
2016
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/adc/ad4691.c
2019
ret = ad4691_regulator_setup(st);
drivers/iio/adc/ad4691.c
2023
ret = ad4691_reset(st);
drivers/iio/adc/ad4691.c
2027
ret = ad4691_config(st);
drivers/iio/adc/ad4691.c
2038
indio_dev->name = st->info->name;
drivers/iio/adc/ad4691.c
2042
ret = ad4691_setup_offload(indio_dev, st, spi_offload);
drivers/iio/adc/ad4691.c
2044
ret = ad4691_setup_triggered_buffer(indio_dev, st);
drivers/iio/adc/ad4691.c
521
static int ad4691_gpio_setup(struct ad4691_state *st, unsigned int gp_num)
drivers/iio/adc/ad4691.c
527
return regmap_update_bits(st->regmap,
drivers/iio/adc/ad4691.c
549
struct ad4691_state *st = spi_offload_trigger_get_priv(trigger);
drivers/iio/adc/ad4691.c
554
return ad4691_gpio_setup(st, args[0]);
drivers/iio/adc/ad4691.c
727
static unsigned int ad4691_find_osc_freq(struct ad4691_state *st,
drivers/iio/adc/ad4691.c
731
unsigned int start = ad4691_samp_freq_start(st->info);
drivers/iio/adc/ad4691.c
744
static int ad4691_write_osc_freq(struct ad4691_state *st)
drivers/iio/adc/ad4691.c
747
if (ad4691_osc_freqs_Hz[i] == st->target_osc_freq_Hz)
drivers/iio/adc/ad4691.c
748
return regmap_write(st->regmap, AD4691_OSC_FREQ_REG, i);
drivers/iio/adc/ad4691.c
768
static void ad4691_precompute_samp_freq_avail(struct ad4691_state *st)
drivers/iio/adc/ad4691.c
770
unsigned int start = ad4691_samp_freq_start(st->info);
drivers/iio/adc/ad4691.c
779
st->samp_freq_avail[i][n++] = ad4691_osc_freqs_Hz[j] / osr;
drivers/iio/adc/ad4691.c
781
st->samp_freq_avail_len[i] = n;
drivers/iio/adc/ad4691.c
785
static int ad4691_set_sampling_freq(struct ad4691_state *st, int freq)
drivers/iio/adc/ad4691.c
794
guard(mutex)(&st->lock);
drivers/iio/adc/ad4691.c
795
osr = st->osr;
drivers/iio/adc/ad4691.c
797
if (freq <= 0 || (unsigned int)freq > st->info->max_rate / osr)
drivers/iio/adc/ad4691.c
800
found = ad4691_find_osc_freq(st, (unsigned int)freq * osr, osr);
drivers/iio/adc/ad4691.c
809
st->target_osc_freq_Hz = found;
drivers/iio/adc/ad4691.c
818
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
829
guard(mutex)(&st->lock);
drivers/iio/adc/ad4691.c
830
osr_idx = ad4691_osr_index(st->osr);
drivers/iio/adc/ad4691.c
831
*vals = st->samp_freq_avail[osr_idx];
drivers/iio/adc/ad4691.c
833
*length = st->samp_freq_avail_len[osr_idx];
drivers/iio/adc/ad4691.c
849
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
853
guard(mutex)(&st->lock);
drivers/iio/adc/ad4691.c
856
ret = regmap_write(st->regmap, AD4691_STATE_RESET_REG, AD4691_STATE_RESET_ALL);
drivers/iio/adc/ad4691.c
860
ret = regmap_write(st->regmap, AD4691_STD_SEQ_CONFIG,
drivers/iio/adc/ad4691.c
865
ret = regmap_write(st->regmap, AD4691_ACC_MASK_REG,
drivers/iio/adc/ad4691.c
870
ret = regmap_write(st->regmap, AD4691_ACC_DEPTH_IN(0), st->osr);
drivers/iio/adc/ad4691.c
874
ret = ad4691_write_osc_freq(st);
drivers/iio/adc/ad4691.c
878
ret = regmap_write(st->regmap, AD4691_OSC_EN_REG, 1);
drivers/iio/adc/ad4691.c
886
period_us = DIV_ROUND_UP((st->osr + 1) * USEC_PER_SEC,
drivers/iio/adc/ad4691.c
887
st->target_osc_freq_Hz);
drivers/iio/adc/ad4691.c
890
ret = regmap_write(st->regmap, AD4691_OSC_EN_REG, 0);
drivers/iio/adc/ad4691.c
894
ret = regmap_read(st->regmap, AD4691_AVG_IN(chan->channel), ®_val);
drivers/iio/adc/ad4691.c
900
ret = regmap_write(st->regmap, AD4691_STATE_RESET_REG, AD4691_STATE_RESET_ALL);
drivers/iio/adc/ad4691.c
911
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
928
guard(mutex)(&st->lock);
drivers/iio/adc/ad4691.c
929
*val = st->target_osc_freq_Hz / st->osr;
drivers/iio/adc/ad4691.c
933
guard(mutex)(&st->lock);
drivers/iio/adc/ad4691.c
934
*val = st->osr;
drivers/iio/adc/ad4691.c
938
*val = st->vref_uV / (MICRO / MILLI);
drivers/iio/adc/ad4691.c
950
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
958
return ad4691_set_sampling_freq(st, val);
drivers/iio/adc/ad4691.c
977
guard(mutex)(&st->lock);
drivers/iio/adc/ad4691.c
978
old_effective = st->target_osc_freq_Hz / st->osr;
drivers/iio/adc/ad4691.c
979
found = ad4691_find_osc_freq(st, old_effective * (unsigned int)val, val);
drivers/iio/adc/ad4691.c
982
st->target_osc_freq_Hz = found;
drivers/iio/adc/ad4691.c
983
st->osr = val;
drivers/iio/adc/ad4691.c
994
struct ad4691_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4691.c
996
guard(mutex)(&st->lock);
drivers/iio/adc/ad4691.c
999
return regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad4695.c
1001
st->cnv_cmd = AD4695_CMD_TEMP_CHAN << 11;
drivers/iio/adc/ad4695.c
1003
ret = spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/adc/ad4695.c
1011
if (st->cnv_gpio)
drivers/iio/adc/ad4695.c
1012
ad4695_cnv_manual_trigger(st);
drivers/iio/adc/ad4695.c
1016
st->cnv_cmd = AD4695_CMD_EXIT_CNV_MODE << 11;
drivers/iio/adc/ad4695.c
1017
xfers[0].rx_buf = &st->raw_data;
drivers/iio/adc/ad4695.c
1019
return spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/adc/ad4695.c
1022
static int __ad4695_read_info_raw(struct ad4695_state *st,
drivers/iio/adc/ad4695.c
1029
ret = ad4695_read_one_sample(st, chan->address);
drivers/iio/adc/ad4695.c
1034
*val = sign_extend32(st->raw_data, realbits - 1);
drivers/iio/adc/ad4695.c
1036
*val = st->raw_data;
drivers/iio/adc/ad4695.c
1045
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
1053
cfg = &st->channels_cfg[chan->scan_index];
drivers/iio/adc/ad4695.c
1066
ret = __ad4695_read_info_raw(st, chan, val);
drivers/iio/adc/ad4695.c
1072
*val = st->vref_mv;
drivers/iio/adc/ad4695.c
1077
*val = st->vref_mv * -556;
drivers/iio/adc/ad4695.c
1087
*val = st->com_mv * (1 << realbits) / st->vref_mv;
drivers/iio/adc/ad4695.c
1089
*val = cfg->common_mode_mv * (1 << realbits) / st->vref_mv;
drivers/iio/adc/ad4695.c
1098
*val2 = st->vref_mv;
drivers/iio/adc/ad4695.c
1108
ret = regmap_read(st->regmap16,
drivers/iio/adc/ad4695.c
1126
ret = regmap_read(st->regmap16,
drivers/iio/adc/ad4695.c
1180
ret = pwm_get_state_hw(st->cnv_pwm, &state);
drivers/iio/adc/ad4695.c
1209
static int ad4695_set_osr_val(struct ad4695_state *st,
drivers/iio/adc/ad4695.c
1220
st->channels_cfg[chan->scan_index].oversampling_ratio = val;
drivers/iio/adc/ad4695.c
1221
return regmap_update_bits(st->regmap,
drivers/iio/adc/ad4695.c
1269
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
1274
osr = st->channels_cfg[chan->scan_index].oversampling_ratio;
drivers/iio/adc/ad4695.c
1289
return regmap_write(st->regmap16,
drivers/iio/adc/ad4695.c
1299
return regmap_write(st->regmap16,
drivers/iio/adc/ad4695.c
1311
u64 max_osr_rate = DIV_ROUND_UP_ULL(st->chip_info->max_sample_rate,
drivers/iio/adc/ad4695.c
1317
guard(mutex)(&st->cnv_pwm_lock);
drivers/iio/adc/ad4695.c
1318
pwm_get_state(st->cnv_pwm, &state);
drivers/iio/adc/ad4695.c
1324
return pwm_apply_might_sleep(st->cnv_pwm, &state);
drivers/iio/adc/ad4695.c
1327
return ad4695_set_osr_val(st, chan, val);
drivers/iio/adc/ad4695.c
1384
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
1388
osr = st->channels_cfg[chan->scan_index].oversampling_ratio;
drivers/iio/adc/ad4695.c
1418
st->sample_freq_range[2] =
drivers/iio/adc/ad4695.c
1419
DIV_ROUND_UP_ULL(st->chip_info->max_sample_rate, osr);
drivers/iio/adc/ad4695.c
1420
*vals = st->sample_freq_range;
drivers/iio/adc/ad4695.c
1443
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
1450
if (regmap_check_range_table(st->regmap, reg,
drivers/iio/adc/ad4695.c
1452
ret = regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad4695.c
1453
if (regmap_check_range_table(st->regmap16, reg,
drivers/iio/adc/ad4695.c
1455
ret = regmap_read(st->regmap16, reg, readval);
drivers/iio/adc/ad4695.c
1457
if (regmap_check_range_table(st->regmap, reg,
drivers/iio/adc/ad4695.c
1459
ret = regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad4695.c
1460
if (regmap_check_range_table(st->regmap16, reg,
drivers/iio/adc/ad4695.c
1462
ret = regmap_write(st->regmap16, reg, writeval);
drivers/iio/adc/ad4695.c
1472
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
1473
unsigned int osr = st->channels_cfg[chan->scan_index].oversampling_ratio;
drivers/iio/adc/ad4695.c
1506
static int ad4695_parse_channel_cfg(struct ad4695_state *st)
drivers/iio/adc/ad4695.c
1508
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4695.c
1514
for (i = 0; i < st->chip_info->num_voltage_inputs; i++) {
drivers/iio/adc/ad4695.c
1515
chan_cfg = &st->channels_cfg[i];
drivers/iio/adc/ad4695.c
1516
iio_chan = &st->iio_chan[i];
drivers/iio/adc/ad4695.c
1540
if (reg >= st->chip_info->num_voltage_inputs)
drivers/iio/adc/ad4695.c
1545
iio_chan = &st->iio_chan[reg];
drivers/iio/adc/ad4695.c
1546
chan_cfg = &st->channels_cfg[reg];
drivers/iio/adc/ad4695.c
1601
ret = ad4695_write_chn_cfg(st, chan_cfg);
drivers/iio/adc/ad4695.c
1607
st->iio_chan[i] = ad4695_temp_channel_template;
drivers/iio/adc/ad4695.c
1608
st->iio_chan[i].scan_index = i;
drivers/iio/adc/ad4695.c
1611
st->iio_chan[i] = ad4695_soft_timestamp_channel_template;
drivers/iio/adc/ad4695.c
1612
st->iio_chan[i].scan_index = i;
drivers/iio/adc/ad4695.c
1639
struct ad4695_state *st = spi_offload_trigger_get_priv(trigger);
drivers/iio/adc/ad4695.c
1647
return regmap_set_bits(st->regmap, AD4695_REG_GP_MODE,
drivers/iio/adc/ad4695.c
1650
return regmap_clear_bits(st->regmap, AD4695_REG_GP_MODE,
drivers/iio/adc/ad4695.c
1680
struct ad4695_state *st)
drivers/iio/adc/ad4695.c
1682
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4695.c
1686
.priv = st,
drivers/iio/adc/ad4695.c
1693
indio_dev->num_channels = st->chip_info->num_voltage_inputs + 1;
drivers/iio/adc/ad4695.c
1696
if (!st->cnv_gpio)
drivers/iio/adc/ad4695.c
1705
st->offload_trigger = devm_spi_offload_trigger_get(dev, st->offload,
drivers/iio/adc/ad4695.c
1707
if (IS_ERR(st->offload_trigger))
drivers/iio/adc/ad4695.c
1708
return dev_err_probe(dev, PTR_ERR(st->offload_trigger),
drivers/iio/adc/ad4695.c
1711
ret = devm_mutex_init(dev, &st->cnv_pwm_lock);
drivers/iio/adc/ad4695.c
1715
st->cnv_pwm = devm_pwm_get(dev, NULL);
drivers/iio/adc/ad4695.c
1716
if (IS_ERR(st->cnv_pwm))
drivers/iio/adc/ad4695.c
1717
return dev_err_probe(dev, PTR_ERR(st->cnv_pwm),
drivers/iio/adc/ad4695.c
1720
pwm_init_state(st->cnv_pwm, &pwm_state);
drivers/iio/adc/ad4695.c
1728
ret = pwm_apply_might_sleep(st->cnv_pwm, &pwm_state);
drivers/iio/adc/ad4695.c
1732
ret = devm_add_action_or_reset(dev, ad4695_pwm_disable, st->cnv_pwm);
drivers/iio/adc/ad4695.c
1736
rx_dma = devm_spi_offload_rx_stream_request_dma_chan(dev, st->offload);
drivers/iio/adc/ad4695.c
1742
struct iio_chan_spec *chan = &st->iio_chan[i];
drivers/iio/adc/ad4695.c
1764
cfg = &st->channels_cfg[i];
drivers/iio/adc/ad4695.c
1793
struct ad4695_state *st;
drivers/iio/adc/ad4695.c
1799
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad4695.c
1803
st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
1804
st->spi = spi;
drivers/iio/adc/ad4695.c
1806
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/adc/ad4695.c
1807
if (!st->chip_info)
drivers/iio/adc/ad4695.c
1810
st->sample_freq_range[0] = 1; /* min */
drivers/iio/adc/ad4695.c
1811
st->sample_freq_range[1] = 1; /* step */
drivers/iio/adc/ad4695.c
1812
st->sample_freq_range[2] = st->chip_info->max_sample_rate; /* max */
drivers/iio/adc/ad4695.c
1814
st->regmap = devm_regmap_init(dev, &ad4695_regmap_bus, st,
drivers/iio/adc/ad4695.c
1816
if (IS_ERR(st->regmap))
drivers/iio/adc/ad4695.c
1817
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/adc/ad4695.c
1820
st->regmap16 = devm_regmap_init(dev, &ad4695_regmap_bus, st,
drivers/iio/adc/ad4695.c
1822
if (IS_ERR(st->regmap16))
drivers/iio/adc/ad4695.c
1823
return dev_err_probe(dev, PTR_ERR(st->regmap16),
drivers/iio/adc/ad4695.c
1826
st->cnv_gpio = devm_gpiod_get_optional(dev, "cnv", GPIOD_OUT_LOW);
drivers/iio/adc/ad4695.c
1827
if (IS_ERR(st->cnv_gpio))
drivers/iio/adc/ad4695.c
1828
return dev_err_probe(dev, PTR_ERR(st->cnv_gpio),
drivers/iio/adc/ad4695.c
1860
st->vref_mv = ret / 1000;
drivers/iio/adc/ad4695.c
1869
st->vref_mv = ret / 1000;
drivers/iio/adc/ad4695.c
1877
st->com_mv = ret == -ENODEV ? 0 : ret / 1000;
drivers/iio/adc/ad4695.c
1884
st->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
drivers/iio/adc/ad4695.c
1885
if (IS_ERR(st->reset_gpio))
drivers/iio/adc/ad4695.c
1886
return PTR_ERR(st->reset_gpio);
drivers/iio/adc/ad4695.c
1888
if (st->reset_gpio) {
drivers/iio/adc/ad4695.c
1889
gpiod_set_value(st->reset_gpio, 0);
drivers/iio/adc/ad4695.c
1892
ret = regmap_write(st->regmap, AD4695_REG_SPI_CONFIG_A,
drivers/iio/adc/ad4695.c
1901
ret = regmap_set_bits(st->regmap, AD4695_REG_SPI_CONFIG_A,
drivers/iio/adc/ad4695.c
1907
ret = regmap_update_bits(st->regmap, AD4695_REG_SETUP,
drivers/iio/adc/ad4695.c
1917
ret = regmap_set_bits(st->regmap, AD4695_REG_REF_CTRL,
drivers/iio/adc/ad4695.c
1928
ret = regmap_clear_bits(st->regmap, AD4695_REG_REF_CTRL,
drivers/iio/adc/ad4695.c
1934
ret = ad4695_set_ref_voltage(st, st->vref_mv);
drivers/iio/adc/ad4695.c
1939
ret = regmap_set_bits(st->regmap, AD4695_REG_REF_CTRL,
drivers/iio/adc/ad4695.c
1948
ret = ad4695_parse_channel_cfg(st);
drivers/iio/adc/ad4695.c
1952
indio_dev->name = st->chip_info->name;
drivers/iio/adc/ad4695.c
1955
indio_dev->channels = st->iio_chan;
drivers/iio/adc/ad4695.c
1956
indio_dev->num_channels = st->chip_info->num_voltage_inputs + 2;
drivers/iio/adc/ad4695.c
1958
st->offload = devm_spi_offload_get(dev, spi, &ad4695_spi_offload_config);
drivers/iio/adc/ad4695.c
1959
ret = PTR_ERR_OR_ZERO(st->offload);
drivers/iio/adc/ad4695.c
1966
if (st->cnv_gpio)
drivers/iio/adc/ad4695.c
1970
indio_dev->num_channels = st->chip_info->num_voltage_inputs + 2;
drivers/iio/adc/ad4695.c
1979
ret = ad4695_probe_spi_offload(indio_dev, st);
drivers/iio/adc/ad4695.c
250
struct ad4695_state *st = context;
drivers/iio/adc/ad4695.c
254
.tx_buf = st->regmap_bus_data,
drivers/iio/adc/ad4695.c
257
if (count > ARRAY_SIZE(st->regmap_bus_data))
drivers/iio/adc/ad4695.c
260
memcpy(st->regmap_bus_data, data, count);
drivers/iio/adc/ad4695.c
262
return spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad4695.c
269
struct ad4695_state *st = context;
drivers/iio/adc/ad4695.c
274
.tx_buf = &st->regmap_bus_data[0],
drivers/iio/adc/ad4695.c
278
.rx_buf = &st->regmap_bus_data[2],
drivers/iio/adc/ad4695.c
289
memcpy(&st->regmap_bus_data[0], reg, reg_size);
drivers/iio/adc/ad4695.c
291
ret = spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/adc/ad4695.c
295
memcpy(val, &st->regmap_bus_data[2], val_size);
drivers/iio/adc/ad4695.c
436
static void ad4695_cnv_manual_trigger(struct ad4695_state *st)
drivers/iio/adc/ad4695.c
438
gpiod_set_value_cansleep(st->cnv_gpio, 1);
drivers/iio/adc/ad4695.c
440
gpiod_set_value_cansleep(st->cnv_gpio, 0);
drivers/iio/adc/ad4695.c
455
static int ad4695_set_single_cycle_mode(struct ad4695_state *st,
drivers/iio/adc/ad4695.c
460
ret = regmap_clear_bits(st->regmap, AD4695_REG_SEQ_CTRL,
drivers/iio/adc/ad4695.c
466
ret = regmap_write(st->regmap, AD4695_REG_AS_SLOT(0),
drivers/iio/adc/ad4695.c
471
return regmap_set_bits(st->regmap, AD4695_REG_SETUP,
drivers/iio/adc/ad4695.c
487
static int ad4695_enter_advanced_sequencer_mode(struct ad4695_state *st, u32 n)
drivers/iio/adc/ad4695.c
491
ret = regmap_update_bits(st->regmap, AD4695_REG_SEQ_CTRL,
drivers/iio/adc/ad4695.c
499
return regmap_update_bits(st->regmap, AD4695_REG_SETUP,
drivers/iio/adc/ad4695.c
513
static int ad4695_exit_conversion_mode(struct ad4695_state *st)
drivers/iio/adc/ad4695.c
535
.tx_buf = &st->cnv_cmd2,
drivers/iio/adc/ad4695.c
546
st->cnv_cmd2 = AD4695_CMD_EXIT_CNV_MODE << 3;
drivers/iio/adc/ad4695.c
548
if (st->cnv_gpio) {
drivers/iio/adc/ad4695.c
549
ad4695_cnv_manual_trigger(st);
drivers/iio/adc/ad4695.c
556
return spi_sync_transfer(st->spi, &xfers[1], 1);
drivers/iio/adc/ad4695.c
559
return spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/adc/ad4695.c
562
static int ad4695_set_ref_voltage(struct ad4695_state *st, int vref_mv)
drivers/iio/adc/ad4695.c
579
return regmap_update_bits(st->regmap, AD4695_REG_REF_CTRL,
drivers/iio/adc/ad4695.c
607
static int ad4695_write_chn_cfg(struct ad4695_state *st,
drivers/iio/adc/ad4695.c
622
return regmap_update_bits(st->regmap,
drivers/iio/adc/ad4695.c
629
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
631
u8 temp_chan_bit = st->chip_info->num_voltage_inputs;
drivers/iio/adc/ad4695.c
646
memset(st->buf_read_xfer, 0, sizeof(st->buf_read_xfer));
drivers/iio/adc/ad4695.c
649
xfer = &st->buf_read_xfer[0];
drivers/iio/adc/ad4695.c
651
xfer->delay.value = st->chip_info->t_acq_ns;
drivers/iio/adc/ad4695.c
658
xfer = &st->buf_read_xfer[num_xfer];
drivers/iio/adc/ad4695.c
660
xfer->rx_buf = &st->buf[rx_buf_offset++];
drivers/iio/adc/ad4695.c
666
ret = regmap_write(st->regmap,
drivers/iio/adc/ad4695.c
682
xfer = &st->buf_read_xfer[num_xfer];
drivers/iio/adc/ad4695.c
708
st->buf_read_xfer[num_xfer] = st->buf_read_xfer[num_xfer - 1];
drivers/iio/adc/ad4695.c
709
st->buf_read_xfer[num_xfer - 1] = st->buf_read_xfer[num_xfer - 2];
drivers/iio/adc/ad4695.c
713
xfer = &st->buf_read_xfer[num_xfer - 3];
drivers/iio/adc/ad4695.c
716
xfer->delay.value = st->chip_info->t_acq_ns;
drivers/iio/adc/ad4695.c
723
ret = regmap_write(st->regmap,
drivers/iio/adc/ad4695.c
735
xfer = &st->buf_read_xfer[num_xfer - 1];
drivers/iio/adc/ad4695.c
749
ret = regmap_update_bits(st->regmap, AD4695_REG_TEMP_CTRL,
drivers/iio/adc/ad4695.c
755
spi_message_init_with_transfers(&st->buf_read_msg, st->buf_read_xfer,
drivers/iio/adc/ad4695.c
758
ret = spi_optimize_message(st->spi, &st->buf_read_msg);
drivers/iio/adc/ad4695.c
763
ret = ad4695_enter_advanced_sequencer_mode(st, num_slots);
drivers/iio/adc/ad4695.c
765
spi_unoptimize_message(&st->buf_read_msg);
drivers/iio/adc/ad4695.c
772
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
775
ret = ad4695_exit_conversion_mode(st);
drivers/iio/adc/ad4695.c
779
spi_unoptimize_message(&st->buf_read_msg);
drivers/iio/adc/ad4695.c
793
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
796
ret = spi_sync(st->spi, &st->buf_read_msg);
drivers/iio/adc/ad4695.c
800
iio_push_to_buffers_with_ts(indio_dev, st->buf, sizeof(st->buf),
drivers/iio/adc/ad4695.c
811
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
815
struct spi_transfer *xfer = &st->buf_read_xfer[0];
drivers/iio/adc/ad4695.c
817
u8 temp_chan_bit = st->chip_info->num_voltage_inputs;
drivers/iio/adc/ad4695.c
829
ret = regmap_write(st->regmap, AD4695_REG_AS_SLOT(num_slots),
drivers/iio/adc/ad4695.c
842
dev_err(&st->spi->dev,
drivers/iio/adc/ad4695.c
847
ret = regmap_update_bits(st->regmap, AD4695_REG_TEMP_CTRL,
drivers/iio/adc/ad4695.c
861
spi_message_init_with_transfers(&st->buf_read_msg, xfer, 1);
drivers/iio/adc/ad4695.c
862
st->buf_read_msg.offload = st->offload;
drivers/iio/adc/ad4695.c
864
ret = spi_optimize_message(st->spi, &st->buf_read_msg);
drivers/iio/adc/ad4695.c
874
ret = regmap_set_bits(st->regmap, AD4695_REG_GP_MODE,
drivers/iio/adc/ad4695.c
879
ret = ad4695_enter_advanced_sequencer_mode(st, num_slots);
drivers/iio/adc/ad4695.c
883
ret = spi_offload_trigger_enable(st->offload, st->offload_trigger,
drivers/iio/adc/ad4695.c
888
mutex_lock(&st->cnv_pwm_lock);
drivers/iio/adc/ad4695.c
889
pwm_get_state(st->cnv_pwm, &state);
drivers/iio/adc/ad4695.c
895
ret = pwm_apply_might_sleep(st->cnv_pwm, &state);
drivers/iio/adc/ad4695.c
896
mutex_unlock(&st->cnv_pwm_lock);
drivers/iio/adc/ad4695.c
903
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/adc/ad4695.c
906
ad4695_exit_conversion_mode(st);
drivers/iio/adc/ad4695.c
909
regmap_clear_bits(st->regmap, AD4695_REG_GP_MODE,
drivers/iio/adc/ad4695.c
913
spi_unoptimize_message(&st->buf_read_msg);
drivers/iio/adc/ad4695.c
920
struct ad4695_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4695.c
924
scoped_guard(mutex, &st->cnv_pwm_lock) {
drivers/iio/adc/ad4695.c
925
pwm_get_state(st->cnv_pwm, &state);
drivers/iio/adc/ad4695.c
927
ret = pwm_apply_might_sleep(st->cnv_pwm, &state);
drivers/iio/adc/ad4695.c
932
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/adc/ad4695.c
938
ret = ad4695_exit_conversion_mode(st);
drivers/iio/adc/ad4695.c
942
ret = regmap_clear_bits(st->regmap, AD4695_REG_GP_MODE,
drivers/iio/adc/ad4695.c
947
spi_unoptimize_message(&st->buf_read_msg);
drivers/iio/adc/ad4695.c
967
static int ad4695_read_one_sample(struct ad4695_state *st, unsigned int address)
drivers/iio/adc/ad4695.c
973
.tx_buf = &st->cnv_cmd,
drivers/iio/adc/ad4695.c
984
ret = ad4695_set_single_cycle_mode(st, address);
drivers/iio/adc/ad4695.c
992
if (st->cnv_gpio)
drivers/iio/adc/ad4695.c
993
ad4695_cnv_manual_trigger(st);
drivers/iio/adc/ad4851.c
1001
ret = regmap_write(st->regmap, AD4851_REG_CHX_SOFTSPAN(reg),
drivers/iio/adc/ad4851.c
1034
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
1035
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4851.c
1171
struct ad4851_state *st;
drivers/iio/adc/ad4851.c
1174
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad4851.c
1178
st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
1179
st->spi = spi;
drivers/iio/adc/ad4851.c
1181
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/adc/ad4851.c
1204
st->vrefbuf_en = ret != -ENODEV;
drivers/iio/adc/ad4851.c
1210
st->vrefio_en = ret != -ENODEV;
drivers/iio/adc/ad4851.c
1212
st->pd_gpio = devm_gpiod_get_optional(dev, "pd", GPIOD_OUT_LOW);
drivers/iio/adc/ad4851.c
1213
if (IS_ERR(st->pd_gpio))
drivers/iio/adc/ad4851.c
1214
return dev_err_probe(dev, PTR_ERR(st->pd_gpio),
drivers/iio/adc/ad4851.c
1217
st->cnv = devm_pwm_get(dev, NULL);
drivers/iio/adc/ad4851.c
1218
if (IS_ERR(st->cnv))
drivers/iio/adc/ad4851.c
1219
return dev_err_probe(dev, PTR_ERR(st->cnv),
drivers/iio/adc/ad4851.c
1222
st->info = spi_get_device_match_data(spi);
drivers/iio/adc/ad4851.c
1223
if (!st->info)
drivers/iio/adc/ad4851.c
1226
st->regmap = devm_regmap_init_spi(spi, ®map_config);
drivers/iio/adc/ad4851.c
1227
if (IS_ERR(st->regmap))
drivers/iio/adc/ad4851.c
1228
return PTR_ERR(st->regmap);
drivers/iio/adc/ad4851.c
1230
ret = ad4851_set_sampling_freq(st, HZ_PER_MHZ);
drivers/iio/adc/ad4851.c
1234
ret = devm_add_action_or_reset(&st->spi->dev, ad4851_pwm_disable,
drivers/iio/adc/ad4851.c
1235
st->cnv);
drivers/iio/adc/ad4851.c
1239
ret = ad4851_setup(st);
drivers/iio/adc/ad4851.c
1243
indio_dev->name = st->info->name;
drivers/iio/adc/ad4851.c
1247
ret = st->info->parse_channels(indio_dev);
drivers/iio/adc/ad4851.c
1255
st->back = devm_iio_backend_get(dev, NULL);
drivers/iio/adc/ad4851.c
1256
if (IS_ERR(st->back))
drivers/iio/adc/ad4851.c
1257
return PTR_ERR(st->back);
drivers/iio/adc/ad4851.c
1259
ret = devm_iio_backend_request_buffer(dev, st->back, indio_dev);
drivers/iio/adc/ad4851.c
1263
ret = devm_iio_backend_enable(dev, st->back);
drivers/iio/adc/ad4851.c
201
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
204
return regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad4851.c
206
return regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad4851.c
209
static int ad4851_set_sampling_freq(struct ad4851_state *st, unsigned int freq)
drivers/iio/adc/ad4851.c
217
freq = clamp(freq, 1, st->info->max_sample_rate_hz);
drivers/iio/adc/ad4851.c
221
ret = pwm_apply_might_sleep(st->cnv, &cnv_state);
drivers/iio/adc/ad4851.c
225
st->cnv_trigger_rate_hz = freq;
drivers/iio/adc/ad4851.c
266
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
277
st->scales_unipolar[i][0] = val1;
drivers/iio/adc/ad4851.c
278
st->scales_unipolar[i][1] = val2;
drivers/iio/adc/ad4851.c
288
st->scales_bipolar[i][0] = val1;
drivers/iio/adc/ad4851.c
289
st->scales_bipolar[i][1] = val2;
drivers/iio/adc/ad4851.c
298
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
301
guard(mutex)(&st->lock);
drivers/iio/adc/ad4851.c
304
ret = regmap_clear_bits(st->regmap, AD4851_REG_OVERSAMPLE,
drivers/iio/adc/ad4851.c
313
ret = regmap_update_bits(st->regmap, AD4851_REG_OVERSAMPLE,
drivers/iio/adc/ad4851.c
323
ret = iio_backend_oversampling_ratio_set(st->back, 0, osr);
drivers/iio/adc/ad4851.c
327
switch (st->info->resolution) {
drivers/iio/adc/ad4851.c
347
ret = iio_backend_data_size_set(st->back, val);
drivers/iio/adc/ad4851.c
351
if (osr == 1 || st->info->resolution == 16) {
drivers/iio/adc/ad4851.c
352
ret = regmap_clear_bits(st->regmap, AD4851_REG_PACKET,
drivers/iio/adc/ad4851.c
357
st->resolution_boost_enabled = false;
drivers/iio/adc/ad4851.c
359
ret = regmap_update_bits(st->regmap, AD4851_REG_PACKET,
drivers/iio/adc/ad4851.c
365
st->resolution_boost_enabled = true;
drivers/iio/adc/ad4851.c
368
if (st->osr != osr) {
drivers/iio/adc/ad4851.c
373
st->osr = osr;
drivers/iio/adc/ad4851.c
379
static int ad4851_get_oversampling_ratio(struct ad4851_state *st, unsigned int *val)
drivers/iio/adc/ad4851.c
384
guard(mutex)(&st->lock);
drivers/iio/adc/ad4851.c
386
ret = regmap_read(st->regmap, AD4851_REG_OVERSAMPLE, &osr);
drivers/iio/adc/ad4851.c
395
st->osr = *val;
drivers/iio/adc/ad4851.c
405
static int ad4851_setup(struct ad4851_state *st)
drivers/iio/adc/ad4851.c
410
if (st->pd_gpio) {
drivers/iio/adc/ad4851.c
412
gpiod_set_value(st->pd_gpio, 1);
drivers/iio/adc/ad4851.c
414
gpiod_set_value(st->pd_gpio, 0);
drivers/iio/adc/ad4851.c
416
gpiod_set_value(st->pd_gpio, 1);
drivers/iio/adc/ad4851.c
418
gpiod_set_value(st->pd_gpio, 0);
drivers/iio/adc/ad4851.c
421
ret = regmap_set_bits(st->regmap, AD4851_REG_INTERFACE_CONFIG_A,
drivers/iio/adc/ad4851.c
427
if (st->vrefbuf_en) {
drivers/iio/adc/ad4851.c
428
ret = regmap_set_bits(st->regmap, AD4851_REG_DEVICE_CTRL,
drivers/iio/adc/ad4851.c
434
if (st->vrefio_en) {
drivers/iio/adc/ad4851.c
435
ret = regmap_set_bits(st->regmap, AD4851_REG_DEVICE_CTRL,
drivers/iio/adc/ad4851.c
441
ret = regmap_write(st->regmap, AD4851_REG_INTERFACE_CONFIG_B,
drivers/iio/adc/ad4851.c
446
if (!(st->spi->mode & SPI_3WIRE)) {
drivers/iio/adc/ad4851.c
447
ret = regmap_write(st->regmap, AD4851_REG_INTERFACE_CONFIG_A,
drivers/iio/adc/ad4851.c
453
ret = regmap_read(st->regmap, AD4851_REG_PRODUCT_ID_L, &product_id);
drivers/iio/adc/ad4851.c
457
if (product_id != st->info->product_id)
drivers/iio/adc/ad4851.c
458
dev_info(&st->spi->dev, "Unknown product ID: 0x%02X\n",
drivers/iio/adc/ad4851.c
461
ret = regmap_set_bits(st->regmap, AD4851_REG_DEVICE_CTRL,
drivers/iio/adc/ad4851.c
466
return regmap_write(st->regmap, AD4851_REG_PACKET, 0);
drivers/iio/adc/ad4851.c
495
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
502
ret = iio_backend_interface_type_get(st->back, &interface_type);
drivers/iio/adc/ad4851.c
517
if (st->info->resolution == 16) {
drivers/iio/adc/ad4851.c
518
ret = iio_backend_data_size_set(st->back, 24);
drivers/iio/adc/ad4851.c
522
ret = regmap_write(st->regmap, AD4851_REG_PACKET,
drivers/iio/adc/ad4851.c
527
ret = iio_backend_data_size_set(st->back, 32);
drivers/iio/adc/ad4851.c
531
ret = regmap_write(st->regmap, AD4851_REG_PACKET,
drivers/iio/adc/ad4851.c
538
ret = regmap_write(st->regmap, AD4851_REG_TESTPAT_0(i),
drivers/iio/adc/ad4851.c
543
ret = regmap_write(st->regmap, AD4851_REG_TESTPAT_1(i),
drivers/iio/adc/ad4851.c
548
ret = regmap_write(st->regmap, AD4851_REG_TESTPAT_2(i),
drivers/iio/adc/ad4851.c
553
ret = regmap_write(st->regmap, AD4851_REG_TESTPAT_3(i),
drivers/iio/adc/ad4851.c
558
ret = iio_backend_chan_enable(st->back,
drivers/iio/adc/ad4851.c
566
ret = iio_backend_iodelay_set(st->back, i, delay);
drivers/iio/adc/ad4851.c
570
ret = iio_backend_chan_status(st->back, i, &status);
drivers/iio/adc/ad4851.c
586
ret = iio_backend_iodelay_set(st->back, i, opt_delay);
drivers/iio/adc/ad4851.c
592
ret = iio_backend_chan_disable(st->back, i);
drivers/iio/adc/ad4851.c
597
ret = iio_backend_data_size_set(st->back, 20);
drivers/iio/adc/ad4851.c
601
return regmap_write(st->regmap, AD4851_REG_PACKET, 0);
drivers/iio/adc/ad4851.c
604
static int ad4851_get_calibscale(struct ad4851_state *st, int ch, int *val, int *val2)
drivers/iio/adc/ad4851.c
610
guard(mutex)(&st->lock);
drivers/iio/adc/ad4851.c
612
ret = regmap_read(st->regmap, AD4851_REG_CHX_GAIN_MSB(ch), ®_val);
drivers/iio/adc/ad4851.c
618
ret = regmap_read(st->regmap, AD4851_REG_CHX_GAIN_LSB(ch), ®_val);
drivers/iio/adc/ad4851.c
630
static int ad4851_set_calibscale(struct ad4851_state *st, int ch, int val,
drivers/iio/adc/ad4851.c
645
guard(mutex)(&st->lock);
drivers/iio/adc/ad4851.c
647
ret = regmap_write(st->regmap, AD4851_REG_CHX_GAIN_MSB(ch), buf[0]);
drivers/iio/adc/ad4851.c
651
return regmap_write(st->regmap, AD4851_REG_CHX_GAIN_LSB(ch), buf[1]);
drivers/iio/adc/ad4851.c
654
static int ad4851_get_calibbias(struct ad4851_state *st, int ch, int *val)
drivers/iio/adc/ad4851.c
659
guard(mutex)(&st->lock);
drivers/iio/adc/ad4851.c
664
ret = regmap_read(st->regmap, AD4851_REG_CHX_OFFSET_MSB(ch), &msb);
drivers/iio/adc/ad4851.c
668
ret = regmap_read(st->regmap, AD4851_REG_CHX_OFFSET_MID(ch), &mid);
drivers/iio/adc/ad4851.c
672
ret = regmap_read(st->regmap, AD4851_REG_CHX_OFFSET_LSB(ch), &lsb);
drivers/iio/adc/ad4851.c
676
if (st->info->resolution == 16) {
drivers/iio/adc/ad4851.c
690
static int ad4851_set_calibbias(struct ad4851_state *st, int ch, int val)
drivers/iio/adc/ad4851.c
698
if (st->info->resolution == 16)
drivers/iio/adc/ad4851.c
703
guard(mutex)(&st->lock);
drivers/iio/adc/ad4851.c
708
ret = regmap_write(st->regmap, AD4851_REG_CHX_OFFSET_LSB(ch), buf[2]);
drivers/iio/adc/ad4851.c
712
ret = regmap_write(st->regmap, AD4851_REG_CHX_OFFSET_MID(ch), buf[1]);
drivers/iio/adc/ad4851.c
716
return regmap_write(st->regmap, AD4851_REG_CHX_OFFSET_MSB(ch), buf[0]);
drivers/iio/adc/ad4851.c
722
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
729
if (st->bipolar_ch[chan->channel]) {
drivers/iio/adc/ad4851.c
746
return regmap_write(st->regmap,
drivers/iio/adc/ad4851.c
758
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
764
if (st->bipolar_ch[chan->channel]) {
drivers/iio/adc/ad4851.c
772
ret = regmap_read(st->regmap, AD4851_REG_CHX_SOFTSPAN(chan->channel),
drivers/iio/adc/ad4851.c
797
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
801
*val = st->cnv_trigger_rate_hz;
drivers/iio/adc/ad4851.c
802
*val2 = st->osr;
drivers/iio/adc/ad4851.c
805
return ad4851_get_calibscale(st, chan->channel, val, val2);
drivers/iio/adc/ad4851.c
809
return ad4851_get_calibbias(st, chan->channel, val);
drivers/iio/adc/ad4851.c
811
return ad4851_get_oversampling_ratio(st, val);
drivers/iio/adc/ad4851.c
821
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
827
return ad4851_set_sampling_freq(st, val * st->osr + val2 * st->osr / MICRO);
drivers/iio/adc/ad4851.c
831
return ad4851_set_calibscale(st, chan->channel, val, val2);
drivers/iio/adc/ad4851.c
833
return ad4851_set_calibbias(st, chan->channel, val);
drivers/iio/adc/ad4851.c
844
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
850
ret = iio_backend_chan_enable(st->back, c);
drivers/iio/adc/ad4851.c
852
ret = iio_backend_chan_disable(st->back, c);
drivers/iio/adc/ad4851.c
865
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
869
if (st->bipolar_ch[chan->channel]) {
drivers/iio/adc/ad4851.c
870
*vals = (const int *)st->scales_bipolar;
drivers/iio/adc/ad4851.c
875
*vals = (const int *)st->scales_unipolar;
drivers/iio/adc/ad4851.c
920
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
922
return st->resolution_boost_enabled ? AD4851_SCAN_TYPE_RESOLUTION_BOOST
drivers/iio/adc/ad4851.c
961
struct ad4851_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad4851.c
962
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad4851.c
992
channels->channel2 = reg + st->info->max_channels;
drivers/iio/adc/ad4851.c
996
st->bipolar_ch[reg] = fwnode_property_read_bool(child, "bipolar");
drivers/iio/adc/ad4851.c
998
if (st->bipolar_ch[reg]) {
drivers/iio/adc/ad7091r-base.c
105
if (st->vref) {
drivers/iio/adc/ad7091r-base.c
106
ret = regulator_get_voltage(st->vref);
drivers/iio/adc/ad7091r-base.c
112
*val = st->chip_info->vref_mV;
drivers/iio/adc/ad7091r-base.c
128
struct ad7091r_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7091r-base.c
133
ret = regmap_read(st->map,
drivers/iio/adc/ad7091r-base.c
140
ret = regmap_read(st->map,
drivers/iio/adc/ad7091r-base.c
157
struct ad7091r_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7091r-base.c
160
return regmap_set_bits(st->map, AD7091R_REG_CONF,
drivers/iio/adc/ad7091r-base.c
169
return regmap_write(st->map,
drivers/iio/adc/ad7091r-base.c
173
return regmap_write(st->map,
drivers/iio/adc/ad7091r-base.c
188
struct ad7091r_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7091r-base.c
195
ret = regmap_read(st->map,
drivers/iio/adc/ad7091r-base.c
202
ret = regmap_read(st->map,
drivers/iio/adc/ad7091r-base.c
212
ret = regmap_read(st->map,
drivers/iio/adc/ad7091r-base.c
229
struct ad7091r_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7091r-base.c
235
return regmap_write(st->map,
drivers/iio/adc/ad7091r-base.c
239
return regmap_write(st->map,
drivers/iio/adc/ad7091r-base.c
246
return regmap_write(st->map,
drivers/iio/adc/ad7091r-base.c
265
struct ad7091r_state *st = iio_priv(iio_dev);
drivers/iio/adc/ad7091r-base.c
270
ret = regmap_read(st->map, AD7091R_REG_ALERT, &read_val);
drivers/iio/adc/ad7091r-base.c
274
for (i = 0; i < st->chip_info->num_channels; i++) {
drivers/iio/adc/ad7091r-base.c
292
struct ad7091r_state *st = data;
drivers/iio/adc/ad7091r-base.c
294
regulator_disable(st->vref);
drivers/iio/adc/ad7091r-base.c
301
struct ad7091r_state *st;
drivers/iio/adc/ad7091r-base.c
304
iio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7091r-base.c
308
st = iio_priv(iio_dev);
drivers/iio/adc/ad7091r-base.c
309
st->dev = dev;
drivers/iio/adc/ad7091r-base.c
310
init_info->init_adc_regmap(st, init_info->regmap_config);
drivers/iio/adc/ad7091r-base.c
311
if (IS_ERR(st->map))
drivers/iio/adc/ad7091r-base.c
312
return dev_err_probe(st->dev, PTR_ERR(st->map),
drivers/iio/adc/ad7091r-base.c
319
ret = init_info->setup(st);
drivers/iio/adc/ad7091r-base.c
325
st->chip_info = init_info->info_irq;
drivers/iio/adc/ad7091r-base.c
326
ret = regmap_update_bits(st->map, AD7091R_REG_CONF,
drivers/iio/adc/ad7091r-base.c
335
st->chip_info->name, iio_dev);
drivers/iio/adc/ad7091r-base.c
339
st->chip_info = init_info->info_no_irq;
drivers/iio/adc/ad7091r-base.c
342
iio_dev->name = st->chip_info->name;
drivers/iio/adc/ad7091r-base.c
343
iio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/adc/ad7091r-base.c
344
iio_dev->channels = st->chip_info->channels;
drivers/iio/adc/ad7091r-base.c
346
st->vref = devm_regulator_get_optional(dev, "vref");
drivers/iio/adc/ad7091r-base.c
347
if (IS_ERR(st->vref)) {
drivers/iio/adc/ad7091r-base.c
348
if (PTR_ERR(st->vref) == -EPROBE_DEFER)
drivers/iio/adc/ad7091r-base.c
351
st->vref = NULL;
drivers/iio/adc/ad7091r-base.c
353
ret = regmap_set_bits(st->map, AD7091R_REG_CONF,
drivers/iio/adc/ad7091r-base.c
356
return dev_err_probe(st->dev, ret,
drivers/iio/adc/ad7091r-base.c
359
ret = regulator_enable(st->vref);
drivers/iio/adc/ad7091r-base.c
362
ret = devm_add_action_or_reset(dev, ad7091r_remove, st);
drivers/iio/adc/ad7091r-base.c
368
ret = st->chip_info->set_mode(st, AD7091R_MODE_COMMAND);
drivers/iio/adc/ad7091r-base.c
41
static int ad7091r_set_channel(struct ad7091r_state *st, unsigned int channel)
drivers/iio/adc/ad7091r-base.c
47
ret = regmap_write(st->map, AD7091R_REG_CHANNEL,
drivers/iio/adc/ad7091r-base.c
56
return regmap_read(st->map, AD7091R_REG_RESULT, &dummy);
drivers/iio/adc/ad7091r-base.c
62
struct ad7091r_state *st = iio_priv(iio_dev);
drivers/iio/adc/ad7091r-base.c
66
ret = ad7091r_set_channel(st, channel);
drivers/iio/adc/ad7091r-base.c
70
ret = regmap_read(st->map, AD7091R_REG_RESULT, &val);
drivers/iio/adc/ad7091r-base.c
74
if (st->chip_info->reg_result_chan_id(val) != channel)
drivers/iio/adc/ad7091r-base.c
86
struct ad7091r_state *st = iio_priv(iio_dev);
drivers/iio/adc/ad7091r-base.c
90
guard(mutex)(&st->lock);
drivers/iio/adc/ad7091r-base.c
94
if (st->mode != AD7091R_MODE_COMMAND)
drivers/iio/adc/ad7091r-base.h
79
int (*set_mode)(struct ad7091r_state *st, enum ad7091r_mode mode);
drivers/iio/adc/ad7091r-base.h
86
void (*init_adc_regmap)(struct ad7091r_state *st,
drivers/iio/adc/ad7091r-base.h
88
int (*setup)(struct ad7091r_state *st);
drivers/iio/adc/ad7091r5.c
29
static int ad7091r5_set_mode(struct ad7091r_state *st, enum ad7091r_mode mode)
drivers/iio/adc/ad7091r5.c
47
ret = regmap_update_bits(st->map, AD7091R_REG_CONF,
drivers/iio/adc/ad7091r5.c
52
st->mode = mode;
drivers/iio/adc/ad7091r5.c
87
static void ad7091r5_regmap_init(struct ad7091r_state *st,
drivers/iio/adc/ad7091r5.c
90
struct i2c_client *i2c = container_of(st->dev, struct i2c_client, dev);
drivers/iio/adc/ad7091r5.c
92
st->map = devm_regmap_init_i2c(i2c, regmap_conf);
drivers/iio/adc/ad7091r8.c
108
static void ad7091r_pulse_convst(struct ad7091r_state *st)
drivers/iio/adc/ad7091r8.c
110
gpiod_set_value_cansleep(st->convst_gpio, 1);
drivers/iio/adc/ad7091r8.c
111
gpiod_set_value_cansleep(st->convst_gpio, 0);
drivers/iio/adc/ad7091r8.c
117
struct ad7091r_state *st = context;
drivers/iio/adc/ad7091r8.c
118
struct spi_device *spi = container_of(st->dev, struct spi_device, dev);
drivers/iio/adc/ad7091r8.c
123
.tx_buf = &st->tx_buf,
drivers/iio/adc/ad7091r8.c
127
.rx_buf = &st->rx_buf,
drivers/iio/adc/ad7091r8.c
133
ad7091r_pulse_convst(st);
drivers/iio/adc/ad7091r8.c
135
st->tx_buf = cpu_to_be16(reg << 11);
drivers/iio/adc/ad7091r8.c
141
*val = be16_to_cpu(st->rx_buf);
drivers/iio/adc/ad7091r8.c
148
struct ad7091r_state *st = context;
drivers/iio/adc/ad7091r8.c
149
struct spi_device *spi = container_of(st->dev, struct spi_device, dev);
drivers/iio/adc/ad7091r8.c
155
st->tx_buf = cpu_to_be16(FIELD_PREP(AD7091R8_REG_DATA_MSK, val) |
drivers/iio/adc/ad7091r8.c
159
return spi_write(spi, &st->tx_buf, 2);
drivers/iio/adc/ad7091r8.c
181
static void ad7091r8_regmap_init(struct ad7091r_state *st,
drivers/iio/adc/ad7091r8.c
184
st->map = devm_regmap_init(st->dev, &ad7091r8_regmap_bus, st,
drivers/iio/adc/ad7091r8.c
188
static int ad7091r8_gpio_setup(struct ad7091r_state *st)
drivers/iio/adc/ad7091r8.c
190
st->convst_gpio = devm_gpiod_get(st->dev, "convst", GPIOD_OUT_LOW);
drivers/iio/adc/ad7091r8.c
191
if (IS_ERR(st->convst_gpio))
drivers/iio/adc/ad7091r8.c
192
return dev_err_probe(st->dev, PTR_ERR(st->convst_gpio),
drivers/iio/adc/ad7091r8.c
195
st->reset_gpio = devm_gpiod_get_optional(st->dev, "reset",
drivers/iio/adc/ad7091r8.c
197
if (IS_ERR(st->reset_gpio))
drivers/iio/adc/ad7091r8.c
198
return dev_err_probe(st->dev, PTR_ERR(st->reset_gpio),
drivers/iio/adc/ad7091r8.c
201
if (st->reset_gpio) {
drivers/iio/adc/ad7091r8.c
203
gpiod_set_value_cansleep(st->reset_gpio, 0);
drivers/iio/adc/ad7091r8.c
29
static int ad7091r8_set_mode(struct ad7091r_state *st, enum ad7091r_mode mode)
drivers/iio/adc/ad7091r8.c
32
st->mode = mode;
drivers/iio/adc/ad7124.c
1010
static int ad7124_syscalib_locked(struct ad7124_state *st, const struct iio_chan_spec *chan)
drivers/iio/adc/ad7124.c
1012
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7124.c
1013
struct ad7124_channel *ch = &st->channels[chan->address];
drivers/iio/adc/ad7124.c
1019
ret = ad_sd_calibrate(&st->sd, AD7124_ADC_CONTROL_MODE_SYS_OFFSET_CALIB,
drivers/iio/adc/ad7124.c
1028
ret = ad_sd_read_reg(&st->sd, AD7124_OFFSET(0), 3,
drivers/iio/adc/ad7124.c
1036
ch->cfg.calibration_gain = st->gain_default;
drivers/iio/adc/ad7124.c
1038
ret = ad_sd_calibrate(&st->sd, AD7124_ADC_CONTROL_MODE_SYS_GAIN_CALIB,
drivers/iio/adc/ad7124.c
1043
ret = ad_sd_read_reg(&st->sd, AD7124_GAIN(0), 3,
drivers/iio/adc/ad7124.c
1060
struct ad7124_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
1074
ret = ad7124_syscalib_locked(st, chan);
drivers/iio/adc/ad7124.c
1090
struct ad7124_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
1092
st->channels[chan->address].syscalib_mode = mode;
drivers/iio/adc/ad7124.c
1100
struct ad7124_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
1102
return st->channels[chan->address].syscalib_mode;
drivers/iio/adc/ad7124.c
1129
struct ad7124_state *st = iio_priv(dev);
drivers/iio/adc/ad7124.c
1130
struct ad7124_channel_config *cfg = &st->channels[chan->address].cfg;
drivers/iio/adc/ad7124.c
1132
guard(mutex)(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
1135
ad7124_set_channel_odr(st, chan->address);
drivers/iio/adc/ad7124.c
1143
struct ad7124_state *st = iio_priv(dev);
drivers/iio/adc/ad7124.c
1145
guard(mutex)(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
1147
return st->channels[chan->address].cfg.filter_type;
drivers/iio/adc/ad7124.c
1208
struct ad7124_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
1229
st->num_channels = min(num_channels + 1, AD7124_MAX_CHANNELS);
drivers/iio/adc/ad7124.c
1231
chan = devm_kcalloc(dev, st->num_channels,
drivers/iio/adc/ad7124.c
1236
channels = devm_kcalloc(dev, st->num_channels, sizeof(*channels),
drivers/iio/adc/ad7124.c
1242
indio_dev->num_channels = st->num_channels;
drivers/iio/adc/ad7124.c
1243
st->channels = channels;
drivers/iio/adc/ad7124.c
1261
if (!ad7124_valid_input_select(ain[0], st->chip_info) ||
drivers/iio/adc/ad7124.c
1262
!ad7124_valid_input_select(ain[1], st->chip_info))
drivers/iio/adc/ad7124.c
1266
st->channels[channel].ain = FIELD_PREP(AD7124_CHANNEL_AINP, ain[0]) |
drivers/iio/adc/ad7124.c
1269
cfg = &st->channels[channel].cfg;
drivers/iio/adc/ad7124.c
1291
st->channels[num_channels] = (struct ad7124_channel) {
drivers/iio/adc/ad7124.c
1324
static int ad7124_setup(struct ad7124_state *st)
drivers/iio/adc/ad7124.c
1326
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7124.c
1373
st->clk_hz = AD7124_INT_CLK_HZ;
drivers/iio/adc/ad7124.c
1403
st->clk_hz = AD7124_INT_CLK_HZ;
drivers/iio/adc/ad7124.c
1429
st->clk_hz = clk_hz / 4;
drivers/iio/adc/ad7124.c
1432
st->clk_hz = clk_hz;
drivers/iio/adc/ad7124.c
1436
st->clk_hz = AD7124_INT_CLK_HZ;
drivers/iio/adc/ad7124.c
1440
st->adc_control &= ~AD7124_ADC_CONTROL_CLK_SEL;
drivers/iio/adc/ad7124.c
1441
st->adc_control |= FIELD_PREP(AD7124_ADC_CONTROL_CLK_SEL, clk_sel);
drivers/iio/adc/ad7124.c
1443
st->adc_control &= ~AD7124_ADC_CONTROL_POWER_MODE;
drivers/iio/adc/ad7124.c
1444
st->adc_control |= FIELD_PREP(AD7124_ADC_CONTROL_POWER_MODE, power_mode);
drivers/iio/adc/ad7124.c
1446
st->adc_control &= ~AD7124_ADC_CONTROL_MODE;
drivers/iio/adc/ad7124.c
1447
st->adc_control |= FIELD_PREP(AD7124_ADC_CONTROL_MODE, AD_SD_MODE_IDLE);
drivers/iio/adc/ad7124.c
1449
ret = devm_mutex_init(dev, &st->cfgs_lock);
drivers/iio/adc/ad7124.c
1453
for (i = 0; i < st->num_channels; i++) {
drivers/iio/adc/ad7124.c
1454
struct ad7124_channel_config *cfg = &st->channels[i].cfg;
drivers/iio/adc/ad7124.c
1456
ret = ad7124_init_config_vref(st, cfg);
drivers/iio/adc/ad7124.c
1471
ad7124_set_channel_odr(st, i);
drivers/iio/adc/ad7124.c
1474
ad7124_disable_all(&st->sd);
drivers/iio/adc/ad7124.c
1476
ret = ad_sd_write_reg(&st->sd, AD7124_ADC_CONTROL, 2, st->adc_control);
drivers/iio/adc/ad7124.c
1483
static int __ad7124_calibrate_all(struct ad7124_state *st, struct iio_dev *indio_dev)
drivers/iio/adc/ad7124.c
1485
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7124.c
1488
for (i = 0; i < st->num_channels; i++) {
drivers/iio/adc/ad7124.c
1495
st->channels[i].cfg.calibration_offset = 0x800000;
drivers/iio/adc/ad7124.c
1496
st->channels[i].cfg.calibration_gain = st->gain_default;
drivers/iio/adc/ad7124.c
1513
if (st->channels[i].cfg.pga_bits > 0) {
drivers/iio/adc/ad7124.c
1514
ret = ad_sd_calibrate(&st->sd, AD7124_ADC_CONTROL_MODE_INT_GAIN_CALIB, i);
drivers/iio/adc/ad7124.c
1525
ret = ad_sd_read_reg(&st->sd, AD7124_GAIN(0), 3,
drivers/iio/adc/ad7124.c
1526
&st->channels[i].cfg.calibration_gain);
drivers/iio/adc/ad7124.c
1531
ret = ad_sd_calibrate(&st->sd, AD7124_ADC_CONTROL_MODE_INT_OFFSET_CALIB, i);
drivers/iio/adc/ad7124.c
1539
ret = ad_sd_read_reg(&st->sd, AD7124_OFFSET(0), 3,
drivers/iio/adc/ad7124.c
1540
&st->channels[i].cfg.calibration_offset);
drivers/iio/adc/ad7124.c
1545
st->channels[i].cfg.calibration_offset,
drivers/iio/adc/ad7124.c
1546
st->channels[i].cfg.calibration_gain);
drivers/iio/adc/ad7124.c
1552
static int ad7124_calibrate_all(struct ad7124_state *st, struct iio_dev *indio_dev)
drivers/iio/adc/ad7124.c
1555
unsigned int adc_control = st->adc_control;
drivers/iio/adc/ad7124.c
1565
st->adc_control &= ~AD7124_ADC_CONTROL_POWER_MODE;
drivers/iio/adc/ad7124.c
1566
st->adc_control |= FIELD_PREP(AD7124_ADC_CONTROL_POWER_MODE, AD7124_MID_POWER);
drivers/iio/adc/ad7124.c
1569
ret = __ad7124_calibrate_all(st, indio_dev);
drivers/iio/adc/ad7124.c
1571
st->adc_control = adc_control;
drivers/iio/adc/ad7124.c
1584
struct ad7124_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
1590
&st->enable_single_cycle);
drivers/iio/adc/ad7124.c
1597
struct ad7124_state *st;
drivers/iio/adc/ad7124.c
1605
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ad7124.c
1609
st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
1611
st->chip_info = info;
drivers/iio/adc/ad7124.c
1614
st->enable_single_cycle = true;
drivers/iio/adc/ad7124.c
1616
indio_dev->name = st->chip_info->name;
drivers/iio/adc/ad7124.c
1620
ret = ad_sd_init(&st->sd, indio_dev, spi, &ad7124_sigma_delta_info);
drivers/iio/adc/ad7124.c
1628
for (i = 0; i < ARRAY_SIZE(st->vref); i++) {
drivers/iio/adc/ad7124.c
1632
st->vref[i] = devm_regulator_get_optional(&spi->dev,
drivers/iio/adc/ad7124.c
1634
if (PTR_ERR(st->vref[i]) == -ENODEV)
drivers/iio/adc/ad7124.c
1636
else if (IS_ERR(st->vref[i]))
drivers/iio/adc/ad7124.c
1637
return PTR_ERR(st->vref[i]);
drivers/iio/adc/ad7124.c
1639
ret = regulator_enable(st->vref[i]);
drivers/iio/adc/ad7124.c
1644
st->vref[i]);
drivers/iio/adc/ad7124.c
1649
ret = ad7124_soft_reset(st);
drivers/iio/adc/ad7124.c
1653
ret = ad7124_check_chip_id(st);
drivers/iio/adc/ad7124.c
1657
ret = ad7124_setup(st);
drivers/iio/adc/ad7124.c
1665
ret = ad7124_calibrate_all(st, indio_dev);
drivers/iio/adc/ad7124.c
260
static int ad7124_spi_write_mask(struct ad7124_state *st,
drivers/iio/adc/ad7124.c
269
ret = ad_sd_read_reg(&st->sd, addr, bytes, &readval);
drivers/iio/adc/ad7124.c
276
return ad_sd_write_reg(&st->sd, addr, bytes, readval);
drivers/iio/adc/ad7124.c
282
struct ad7124_state *st = container_of(sd, struct ad7124_state, sd);
drivers/iio/adc/ad7124.c
284
st->adc_control &= ~AD7124_ADC_CONTROL_MODE;
drivers/iio/adc/ad7124.c
285
st->adc_control |= FIELD_PREP(AD7124_ADC_CONTROL_MODE, mode);
drivers/iio/adc/ad7124.c
287
return ad_sd_write_reg(&st->sd, AD7124_ADC_CONTROL, 2, st->adc_control);
drivers/iio/adc/ad7124.c
290
static u32 ad7124_get_fclk_hz(struct ad7124_state *st)
drivers/iio/adc/ad7124.c
295
power_mode = FIELD_GET(AD7124_ADC_CONTROL_POWER_MODE, st->adc_control);
drivers/iio/adc/ad7124.c
296
fclk_hz = st->clk_hz;
drivers/iio/adc/ad7124.c
312
static u32 ad7124_get_fs_factor(struct ad7124_state *st, unsigned int channel)
drivers/iio/adc/ad7124.c
315
FIELD_GET(AD7124_ADC_CONTROL_POWER_MODE, st->adc_control);
drivers/iio/adc/ad7124.c
325
switch (st->channels[channel].cfg.filter_type) {
drivers/iio/adc/ad7124.c
338
static u32 ad7124_get_fadc_divisor(struct ad7124_state *st, unsigned int channel)
drivers/iio/adc/ad7124.c
340
u32 factor = ad7124_get_fs_factor(st, channel);
drivers/iio/adc/ad7124.c
346
return st->channels[channel].cfg.odr_sel_bits * factor;
drivers/iio/adc/ad7124.c
349
static void ad7124_set_channel_odr(struct ad7124_state *st, unsigned int channel)
drivers/iio/adc/ad7124.c
351
struct ad7124_channel_config *cfg = &st->channels[channel].cfg;
drivers/iio/adc/ad7124.c
354
fclk = ad7124_get_fclk_hz(st);
drivers/iio/adc/ad7124.c
355
factor = ad7124_get_fs_factor(st, channel);
drivers/iio/adc/ad7124.c
369
st->channels[channel].cfg.odr_sel_bits = odr_sel_bits;
drivers/iio/adc/ad7124.c
372
static int ad7124_get_3db_filter_factor(struct ad7124_state *st,
drivers/iio/adc/ad7124.c
375
struct ad7124_channel_config *cfg = &st->channels[channel].cfg;
drivers/iio/adc/ad7124.c
404
static int ad7124_init_config_vref(struct ad7124_state *st, struct ad7124_channel_config *cfg)
drivers/iio/adc/ad7124.c
406
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7124.c
413
if (IS_ERR(st->vref[refsel]))
drivers/iio/adc/ad7124.c
414
return dev_err_probe(dev, PTR_ERR(st->vref[refsel]),
drivers/iio/adc/ad7124.c
418
cfg->vref_mv = regulator_get_voltage(st->vref[refsel]);
drivers/iio/adc/ad7124.c
424
st->adc_control |= AD7124_ADC_CONTROL_REF_EN;
drivers/iio/adc/ad7124.c
446
static int ad7124_write_config(struct ad7124_state *st, struct ad7124_channel_config *cfg,
drivers/iio/adc/ad7124.c
454
ret = ad_sd_write_reg(&st->sd, AD7124_OFFSET(cfg_slot), 3,
drivers/iio/adc/ad7124.c
459
ret = ad_sd_write_reg(&st->sd, AD7124_GAIN(cfg_slot), 3,
drivers/iio/adc/ad7124.c
470
ret = ad_sd_write_reg(&st->sd, AD7124_CONFIG(cfg_slot), 2, val);
drivers/iio/adc/ad7124.c
523
return ad_sd_write_reg(&st->sd, AD7124_FILTER(cfg_slot), 3,
drivers/iio/adc/ad7124.c
528
st->enable_single_cycle) |
drivers/iio/adc/ad7124.c
547
static int ad7124_request_config_slot(struct ad7124_state *st, u8 channel)
drivers/iio/adc/ad7124.c
553
for (other = 0; other < st->num_channels; other++) {
drivers/iio/adc/ad7124.c
557
if (st->channels[other].cfg.cfg_slot == AD7124_CFG_SLOT_UNASSIGNED)
drivers/iio/adc/ad7124.c
561
st->channels[other].cfg.cfg_slot);
drivers/iio/adc/ad7124.c
563
if (!ad7124_config_equal(&st->channels[other].cfg,
drivers/iio/adc/ad7124.c
564
&st->channels[channel].cfg))
drivers/iio/adc/ad7124.c
568
slot = st->channels[other].cfg.cfg_slot;
drivers/iio/adc/ad7124.c
569
st->cfg_slot_use_count[slot]++;
drivers/iio/adc/ad7124.c
570
st->channels[channel].cfg.cfg_slot = slot;
drivers/iio/adc/ad7124.c
580
st->cfg_slot_use_count[slot]++;
drivers/iio/adc/ad7124.c
581
st->channels[channel].cfg.cfg_slot = slot;
drivers/iio/adc/ad7124.c
583
return ad7124_write_config(st, &st->channels[channel].cfg, slot);
drivers/iio/adc/ad7124.c
586
static void ad7124_release_config_slot(struct ad7124_state *st, u8 channel)
drivers/iio/adc/ad7124.c
594
if (channel >= st->num_channels)
drivers/iio/adc/ad7124.c
597
slot = st->channels[channel].cfg.cfg_slot;
drivers/iio/adc/ad7124.c
600
st->cfg_slot_use_count[slot] == 0)
drivers/iio/adc/ad7124.c
603
st->cfg_slot_use_count[slot]--;
drivers/iio/adc/ad7124.c
604
st->channels[channel].cfg.cfg_slot = AD7124_CFG_SLOT_UNASSIGNED;
drivers/iio/adc/ad7124.c
607
static int ad7124_prepare_read(struct ad7124_state *st, int address)
drivers/iio/adc/ad7124.c
609
struct ad7124_channel_config *cfg = &st->channels[address].cfg;
drivers/iio/adc/ad7124.c
612
ret = ad7124_request_config_slot(st, address);
drivers/iio/adc/ad7124.c
617
return ad_sd_write_reg(&st->sd, AD7124_CHANNEL(address), 2,
drivers/iio/adc/ad7124.c
618
st->channels[address].ain |
drivers/iio/adc/ad7124.c
625
struct ad7124_state *st = container_of(sd, struct ad7124_state, sd);
drivers/iio/adc/ad7124.c
628
mutex_lock(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
629
ret = ad7124_prepare_read(st, channel);
drivers/iio/adc/ad7124.c
630
mutex_unlock(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
637
struct ad7124_state *st = container_of(sd, struct ad7124_state, sd);
drivers/iio/adc/ad7124.c
638
unsigned int adc_control = st->adc_control;
drivers/iio/adc/ad7124.c
646
ret = ad_sd_write_reg(&st->sd, AD7124_ADC_CONTROL, 2, adc_control);
drivers/iio/adc/ad7124.c
650
st->adc_control = adc_control;
drivers/iio/adc/ad7124.c
657
struct ad7124_state *st = container_of(sd, struct ad7124_state, sd);
drivers/iio/adc/ad7124.c
659
ad7124_release_config_slot(st, chan);
drivers/iio/adc/ad7124.c
662
return ad_sd_write_reg(&st->sd, AD7124_CHANNEL(chan), 2, 0);
drivers/iio/adc/ad7124.c
726
struct ad7124_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
739
mutex_lock(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
741
idx = st->channels[chan->address].cfg.pga_bits;
drivers/iio/adc/ad7124.c
742
*val = st->channels[chan->address].cfg.vref_mv;
drivers/iio/adc/ad7124.c
743
if (st->channels[chan->address].cfg.bipolar)
drivers/iio/adc/ad7124.c
748
mutex_unlock(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
772
mutex_lock(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
773
if (st->channels[chan->address].cfg.bipolar)
drivers/iio/adc/ad7124.c
778
mutex_unlock(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
791
struct ad7124_channel_config *cfg = &st->channels[chan->address].cfg;
drivers/iio/adc/ad7124.c
793
guard(mutex)(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
802
*val = ad7124_get_fclk_hz(st);
drivers/iio/adc/ad7124.c
803
*val2 = ad7124_get_fadc_divisor(st, chan->address);
drivers/iio/adc/ad7124.c
832
guard(mutex)(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
834
ret = ad7124_get_3db_filter_factor(st, chan->address);
drivers/iio/adc/ad7124.c
839
*val = ret * ad7124_get_fclk_hz(st);
drivers/iio/adc/ad7124.c
840
*val2 = MILLI * ad7124_get_fadc_divisor(st, chan->address);
drivers/iio/adc/ad7124.c
852
struct ad7124_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
853
struct ad7124_channel_config *cfg = &st->channels[chan->address].cfg;
drivers/iio/adc/ad7124.c
856
guard(mutex)(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
865
ad7124_set_channel_odr(st, chan->address);
drivers/iio/adc/ad7124.c
872
if (st->channels[chan->address].cfg.bipolar)
drivers/iio/adc/ad7124.c
877
vref = st->channels[chan->address].cfg.vref_mv * 1000000LL;
drivers/iio/adc/ad7124.c
882
st->channels[chan->address].cfg.pga_bits = res;
drivers/iio/adc/ad7124.c
894
struct ad7124_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
901
ret = ad_sd_read_reg(&st->sd, reg, ad7124_reg_size[reg],
drivers/iio/adc/ad7124.c
904
ret = ad_sd_write_reg(&st->sd, reg, ad7124_reg_size[reg],
drivers/iio/adc/ad7124.c
913
struct ad7124_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7124.c
918
guard(mutex)(&st->cfgs_lock);
drivers/iio/adc/ad7124.c
920
for (i = 0; i < st->num_channels; i++) {
drivers/iio/adc/ad7124.c
923
ret = ad7124_prepare_read(st, i);
drivers/iio/adc/ad7124.c
925
ret = ad7124_spi_write_mask(st, AD7124_CHANNEL(i), AD7124_CHANNEL_ENABLE,
drivers/iio/adc/ad7124.c
944
static int ad7124_soft_reset(struct ad7124_state *st)
drivers/iio/adc/ad7124.c
946
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7124.c
950
ret = ad_sd_reset(&st->sd);
drivers/iio/adc/ad7124.c
957
ret = ad_sd_read_reg(&st->sd, AD7124_STATUS, 1, &readval);
drivers/iio/adc/ad7124.c
971
ret = ad_sd_read_reg(&st->sd, AD7124_GAIN(0), 3, &st->gain_default);
drivers/iio/adc/ad7124.c
975
dev_dbg(dev, "Reset value of GAIN register is 0x%x\n", st->gain_default);
drivers/iio/adc/ad7124.c
980
static int ad7124_check_chip_id(struct ad7124_state *st)
drivers/iio/adc/ad7124.c
982
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7124.c
986
ret = ad_sd_read_reg(&st->sd, AD7124_ID, 1, &readval);
drivers/iio/adc/ad7124.c
993
if (chip_id != st->chip_info->chip_id)
drivers/iio/adc/ad7124.c
996
st->chip_info->chip_id, chip_id);
drivers/iio/adc/ad7173.c
1176
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
1177
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7173.c
1184
ret = spi_write_then_read(st->sd.spi, buf, sizeof(buf), NULL, 0);
drivers/iio/adc/ad7173.c
1191
ret = ad_sd_read_reg(&st->sd, AD7173_REG_ID, 2, &id);
drivers/iio/adc/ad7173.c
1196
if (id != st->info->id)
drivers/iio/adc/ad7173.c
1198
id, st->info->id);
drivers/iio/adc/ad7173.c
1200
st->adc_mode |= AD7173_ADC_MODE_SING_CYC;
drivers/iio/adc/ad7173.c
1201
st->interface_mode = 0x0;
drivers/iio/adc/ad7173.c
1203
st->config_usage_counter = 0;
drivers/iio/adc/ad7173.c
1204
st->config_cnts = devm_kcalloc(dev, st->info->num_configs,
drivers/iio/adc/ad7173.c
1205
sizeof(*st->config_cnts), GFP_KERNEL);
drivers/iio/adc/ad7173.c
1206
if (!st->config_cnts)
drivers/iio/adc/ad7173.c
1209
ret = ad7173_calibrate_all(st, indio_dev);
drivers/iio/adc/ad7173.c
1214
return ad7173_disable_all(&st->sd);
drivers/iio/adc/ad7173.c
1217
static unsigned int ad7173_get_ref_voltage_milli(struct ad7173_state *st,
drivers/iio/adc/ad7173.c
1224
vref = regulator_get_voltage(st->regulators[0].consumer);
drivers/iio/adc/ad7173.c
1228
vref = regulator_get_voltage(st->regulators[1].consumer);
drivers/iio/adc/ad7173.c
1236
vref = regulator_get_voltage(st->regulators[2].consumer);
drivers/iio/adc/ad7173.c
1253
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
1254
struct ad7173_channel *ch = &st->channels[chan->address];
drivers/iio/adc/ad7173.c
1282
*val = ad7173_get_ref_voltage_milli(st, ch->cfg.ref_sel);
drivers/iio/adc/ad7173.c
1285
if (chan->channel < st->info->num_voltage_in_div)
drivers/iio/adc/ad7173.c
1289
*val = ad7173_get_ref_voltage_milli(st, ch->cfg.ref_sel);
drivers/iio/adc/ad7173.c
1317
if (st->channels[chan->address].cfg.filter_type == AD7173_FILTER_SINC3) {
drivers/iio/adc/ad7173.c
1320
*val2 = 3 * 32 * st->channels[chan->address].cfg.sinc3_odr_div;
drivers/iio/adc/ad7173.c
1324
reg = st->channels[chan->address].cfg.sinc5_odr_index;
drivers/iio/adc/ad7173.c
1326
*val = st->info->sinc5_data_rates[reg] / MILLI;
drivers/iio/adc/ad7173.c
1327
*val2 = (st->info->sinc5_data_rates[reg] % MILLI) * (MICRO / MILLI);
drivers/iio/adc/ad7173.c
1339
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
1369
for (i = st->info->odr_start_value; i < st->info->num_sinc5_data_rates - 1; i++)
drivers/iio/adc/ad7173.c
1370
if (freq >= st->info->sinc5_data_rates[i])
drivers/iio/adc/ad7173.c
1373
cfg = &st->channels[chan->address].cfg;
drivers/iio/adc/ad7173.c
1391
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
1397
const struct ad7173_channel_config *cfg = &st->channels[i].cfg;
drivers/iio/adc/ad7173.c
1406
dev_err(&st->sd.spi->dev,
drivers/iio/adc/ad7173.c
1412
ret = ad7173_set_channel(&st->sd, i);
drivers/iio/adc/ad7173.c
1414
ret = ad_sd_write_reg(&st->sd, AD7173_REG_CH(i), 2, 0);
drivers/iio/adc/ad7173.c
1421
dev_err(&st->sd.spi->dev,
drivers/iio/adc/ad7173.c
1437
cfg1 = &st->channels[i].cfg;
drivers/iio/adc/ad7173.c
1440
cfg2 = &st->channels[j].cfg;
drivers/iio/adc/ad7173.c
1464
for (k = 0; k < st->num_channels; k++)
drivers/iio/adc/ad7173.c
1465
st->channels[k].cfg.live = false;
drivers/iio/adc/ad7173.c
1467
dev_err(&st->sd.spi->dev,
drivers/iio/adc/ad7173.c
1480
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
149
(pin2) < st->info->num_voltage_in && \
drivers/iio/adc/ad7173.c
1492
return ad_sd_read_reg(&st->sd, reg, reg_size, readval);
drivers/iio/adc/ad7173.c
1494
return ad_sd_write_reg(&st->sd, reg, reg_size, writeval);
drivers/iio/adc/ad7173.c
150
(pin2) >= st->info->num_voltage_in_div)
drivers/iio/adc/ad7173.c
1503
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
1504
struct ad7173_channel *adchan = &st->channels[chan->address];
drivers/iio/adc/ad7173.c
1520
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
1521
struct ad7173_channel *adchan = &st->channels[chan->address];
drivers/iio/adc/ad7173.c
1589
struct ad7173_state *st = data;
drivers/iio/adc/ad7173.c
1591
regulator_bulk_disable(ARRAY_SIZE(st->regulators), st->regulators);
drivers/iio/adc/ad7173.c
1594
static unsigned long ad7173_sel_clk(struct ad7173_state *st,
drivers/iio/adc/ad7173.c
1599
st->adc_mode &= ~AD7173_ADC_MODE_CLOCKSEL_MASK;
drivers/iio/adc/ad7173.c
1600
st->adc_mode |= FIELD_PREP(AD7173_ADC_MODE_CLOCKSEL_MASK, clk_sel);
drivers/iio/adc/ad7173.c
1601
ret = ad_sd_write_reg(&st->sd, AD7173_REG_ADC_MODE, 0x2, st->adc_mode);
drivers/iio/adc/ad7173.c
1609
struct ad7173_state *st = clk_hw_to_ad7173(hw);
drivers/iio/adc/ad7173.c
1611
return st->info->clock / HZ_PER_KHZ;
drivers/iio/adc/ad7173.c
1616
struct ad7173_state *st = clk_hw_to_ad7173(hw);
drivers/iio/adc/ad7173.c
1619
clk_sel = FIELD_GET(AD7173_ADC_MODE_CLOCKSEL_MASK, st->adc_mode);
drivers/iio/adc/ad7173.c
1625
struct ad7173_state *st = clk_hw_to_ad7173(hw);
drivers/iio/adc/ad7173.c
1627
return ad7173_sel_clk(st, AD7173_ADC_MODE_CLOCKSEL_INT_OUTPUT);
drivers/iio/adc/ad7173.c
1632
struct ad7173_state *st = clk_hw_to_ad7173(hw);
drivers/iio/adc/ad7173.c
1634
ad7173_sel_clk(st, AD7173_ADC_MODE_CLOCKSEL_INT);
drivers/iio/adc/ad7173.c
1646
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
1658
st->int_clk_hw.init = &init;
drivers/iio/adc/ad7173.c
1659
ret = devm_clk_hw_register(dev, &st->int_clk_hw);
drivers/iio/adc/ad7173.c
1664
&st->int_clk_hw);
drivers/iio/adc/ad7173.c
1667
static int ad4111_validate_current_ain(struct ad7173_state *st,
drivers/iio/adc/ad7173.c
1670
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7173.c
1672
if (!st->info->has_current_inputs)
drivers/iio/adc/ad7173.c
1675
st->info->name);
drivers/iio/adc/ad7173.c
1684
static int ad7173_validate_voltage_ain_inputs(struct ad7173_state *st,
drivers/iio/adc/ad7173.c
1687
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7173.c
1692
st->info->has_pow_supply_monitoring)
drivers/iio/adc/ad7173.c
1696
(ain0 == AD4111_VINCOM_INPUT && st->info->has_vincom_input);
drivers/iio/adc/ad7173.c
1698
(ain1 == AD4111_VINCOM_INPUT && st->info->has_vincom_input);
drivers/iio/adc/ad7173.c
1700
if ((ain0 >= st->info->num_voltage_in && !special_input0) ||
drivers/iio/adc/ad7173.c
1701
(ain1 >= st->info->num_voltage_in && !special_input1)) {
drivers/iio/adc/ad7173.c
1704
"VINCOM not supported for %s\n", st->info->name);
drivers/iio/adc/ad7173.c
1717
((ain0 >= st->info->num_voltage_in_div) !=
drivers/iio/adc/ad7173.c
1718
(ain1 >= st->info->num_voltage_in_div)))
drivers/iio/adc/ad7173.c
1726
static int ad7173_validate_reference(struct ad7173_state *st, int ref_sel)
drivers/iio/adc/ad7173.c
1728
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7173.c
1731
if (ref_sel == AD7173_SETUP_REF_SEL_INT_REF && !st->info->has_int_ref)
drivers/iio/adc/ad7173.c
1735
if (ref_sel == AD7173_SETUP_REF_SEL_EXT_REF2 && !st->info->has_ref2)
drivers/iio/adc/ad7173.c
1739
ret = ad7173_get_ref_voltage_milli(st, ref_sel);
drivers/iio/adc/ad7173.c
1747
static int ad7173_validate_openwire_ain_inputs(struct ad7173_state *st,
drivers/iio/adc/ad7173.c
1762
static unsigned int ad7173_calc_openwire_thrsh_raw(struct ad7173_state *st,
drivers/iio/adc/ad7173.c
1772
/ ad7173_get_ref_voltage_milli(st, chan_st_priv->cfg.ref_sel);
drivers/iio/adc/ad7173.c
1773
if (chan->channel < st->info->num_voltage_in_div)
drivers/iio/adc/ad7173.c
1782
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
1790
if (st->info->has_temp)
drivers/iio/adc/ad7173.c
1796
if (num_channels > st->info->num_channels)
drivers/iio/adc/ad7173.c
1799
st->info->num_channels);
drivers/iio/adc/ad7173.c
1802
st->num_channels = num_channels;
drivers/iio/adc/ad7173.c
1805
st->num_channels, GFP_KERNEL);
drivers/iio/adc/ad7173.c
1809
chans_st_arr = devm_kcalloc(dev, st->num_channels, sizeof(*st->channels),
drivers/iio/adc/ad7173.c
1815
st->channels = chans_st_arr;
drivers/iio/adc/ad7173.c
1817
if (st->info->has_temp) {
drivers/iio/adc/ad7173.c
1824
chan_st_priv->cfg.input_buf = st->info->has_input_buf;
drivers/iio/adc/ad7173.c
1827
st->info->sinc5_data_rates[st->info->odr_start_value]
drivers/iio/adc/ad7173.c
1829
chan_st_priv->cfg.sinc5_odr_index = st->info->odr_start_value;
drivers/iio/adc/ad7173.c
1832
st->adc_mode |= AD7173_ADC_MODE_REF_EN;
drivers/iio/adc/ad7173.c
1833
if (st->info->data_reg_only_16bit)
drivers/iio/adc/ad7173.c
1836
if (ad_sigma_delta_has_spi_offload(&st->sd)) {
drivers/iio/adc/ad7173.c
1865
ret = ad4111_validate_current_ain(st, ain);
drivers/iio/adc/ad7173.c
1876
ret = ad7173_validate_voltage_ain_inputs(st, ain[0], ain[1]);
drivers/iio/adc/ad7173.c
1890
ret = ad7173_validate_reference(st, ref_sel);
drivers/iio/adc/ad7173.c
1895
st->adc_mode |= AD7173_ADC_MODE_REF_EN;
drivers/iio/adc/ad7173.c
1901
chan_st_priv->cfg.input_buf = st->info->has_input_buf;
drivers/iio/adc/ad7173.c
1903
st->info->sinc5_data_rates[st->info->odr_start_value]
drivers/iio/adc/ad7173.c
1905
chan_st_priv->cfg.sinc5_odr_index = st->info->odr_start_value;
drivers/iio/adc/ad7173.c
1919
chan_st_priv->cfg.input_buf = st->info->has_input_buf;
drivers/iio/adc/ad7173.c
1922
if (st->info->has_openwire_det &&
drivers/iio/adc/ad7173.c
1923
ad7173_validate_openwire_ain_inputs(st, chan->differential, ain[0], ain[1])) {
drivers/iio/adc/ad7173.c
1927
ad7173_calc_openwire_thrsh_raw(st, chan, chan_st_priv,
drivers/iio/adc/ad7173.c
1932
if (st->info->data_reg_only_16bit)
drivers/iio/adc/ad7173.c
1936
if (ad_sigma_delta_has_spi_offload(&st->sd)) {
drivers/iio/adc/ad7173.c
1948
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
1952
st->regulators[0].supply = ad7173_ref_sel_str[AD7173_SETUP_REF_SEL_EXT_REF];
drivers/iio/adc/ad7173.c
1953
st->regulators[1].supply = ad7173_ref_sel_str[AD7173_SETUP_REF_SEL_EXT_REF2];
drivers/iio/adc/ad7173.c
1954
st->regulators[2].supply = ad7173_ref_sel_str[AD7173_SETUP_REF_SEL_AVDD1_AVSS];
drivers/iio/adc/ad7173.c
1962
ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(st->regulators),
drivers/iio/adc/ad7173.c
1963
st->regulators);
drivers/iio/adc/ad7173.c
1967
ret = regulator_bulk_enable(ARRAY_SIZE(st->regulators), st->regulators);
drivers/iio/adc/ad7173.c
1971
ret = devm_add_action_or_reset(dev, ad7173_disable_regulators, st);
drivers/iio/adc/ad7173.c
1979
st->adc_mode |= FIELD_PREP(AD7173_ADC_MODE_CLOCKSEL_MASK,
drivers/iio/adc/ad7173.c
1985
st->adc_mode |= FIELD_PREP(AD7173_ADC_MODE_CLOCKSEL_MASK,
drivers/iio/adc/ad7173.c
1999
struct ad7173_state *st;
drivers/iio/adc/ad7173.c
2003
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7173.c
2007
st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
2008
st->info = spi_get_device_match_data(spi);
drivers/iio/adc/ad7173.c
2009
if (!st->info)
drivers/iio/adc/ad7173.c
2012
ida_init(&st->cfg_slots_status);
drivers/iio/adc/ad7173.c
2013
ret = devm_add_action_or_reset(dev, ad7173_ida_destroy, st);
drivers/iio/adc/ad7173.c
2017
indio_dev->name = st->info->name;
drivers/iio/adc/ad7173.c
2026
ret = ad_sd_init(&st->sd, indio_dev, spi, st->info->sd_info);
drivers/iio/adc/ad7173.c
2046
return ad7173_gpio_init(st);
drivers/iio/adc/ad7173.c
353
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
355
st->channels[chan->address].syscalib_mode = mode;
drivers/iio/adc/ad7173.c
363
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
365
return st->channels[chan->address].syscalib_mode;
drivers/iio/adc/ad7173.c
373
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
384
mode = st->channels[chan->address].syscalib_mode;
drivers/iio/adc/ad7173.c
387
ret = ad_sd_calibrate(&st->sd, AD7173_MODE_CAL_SYS_ZERO,
drivers/iio/adc/ad7173.c
390
ret = ad_sd_calibrate(&st->sd, AD7173_MODE_CAL_SYS_FULL,
drivers/iio/adc/ad7173.c
419
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
424
st->channels[chan->address].cfg.filter_type = val;
drivers/iio/adc/ad7173.c
425
st->channels[chan->address].cfg.live = false;
drivers/iio/adc/ad7173.c
435
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
437
return st->channels[chan->address].cfg.filter_type;
drivers/iio/adc/ad7173.c
470
static int ad7173_calibrate_all(struct ad7173_state *st, struct iio_dev *indio_dev)
drivers/iio/adc/ad7173.c
475
for (i = 0; i < st->num_channels; i++) {
drivers/iio/adc/ad7173.c
479
ret = ad_sd_calibrate(&st->sd, AD7173_MODE_CAL_INT_ZERO, i);
drivers/iio/adc/ad7173.c
483
if (st->info->has_internal_fs_calibration) {
drivers/iio/adc/ad7173.c
484
ret = ad_sd_calibrate(&st->sd, AD7173_MODE_CAL_INT_FULL, i);
drivers/iio/adc/ad7173.c
520
struct ad7173_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7173.c
521
struct ad7173_channel *adchan = &st->channels[chan->address];
drivers/iio/adc/ad7173.c
525
ret = regmap_set_bits(st->reg_gpiocon_regmap, AD7173_REG_GPIO,
drivers/iio/adc/ad7173.c
558
regmap_clear_bits(st->reg_gpiocon_regmap, AD7173_REG_GPIO,
drivers/iio/adc/ad7173.c
583
struct ad7173_state *st = data;
drivers/iio/adc/ad7173.c
587
regmap_update_bits(st->reg_gpiocon_regmap, AD7173_REG_GPIO, mask, ~mask);
drivers/iio/adc/ad7173.c
590
static int ad7173_gpio_init(struct ad7173_state *st)
drivers/iio/adc/ad7173.c
593
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7173.c
597
st->reg_gpiocon_regmap = devm_regmap_init_spi(st->sd.spi, &ad7173_regmap_config);
drivers/iio/adc/ad7173.c
598
ret = PTR_ERR_OR_ZERO(st->reg_gpiocon_regmap);
drivers/iio/adc/ad7173.c
603
regmap_update_bits(st->reg_gpiocon_regmap, AD7173_REG_GPIO, mask, mask);
drivers/iio/adc/ad7173.c
605
ret = devm_add_action_or_reset(dev, ad7173_gpio_disable, st);
drivers/iio/adc/ad7173.c
610
gpio_regmap.regmap = st->reg_gpiocon_regmap;
drivers/iio/adc/ad7173.c
611
gpio_regmap.ngpio = st->info->num_gpios;
drivers/iio/adc/ad7173.c
613
if (st->info->higher_gpio_bits)
drivers/iio/adc/ad7173.c
618
st->gpio_regmap = devm_gpio_regmap_register(dev, &gpio_regmap);
drivers/iio/adc/ad7173.c
619
ret = PTR_ERR_OR_ZERO(st->gpio_regmap);
drivers/iio/adc/ad7173.c
638
struct ad7173_state *st = data;
drivers/iio/adc/ad7173.c
640
ida_destroy(&st->cfg_slots_status);
drivers/iio/adc/ad7173.c
643
static void ad7173_reset_usage_cnts(struct ad7173_state *st)
drivers/iio/adc/ad7173.c
645
memset64(st->config_cnts, 0, st->info->num_configs);
drivers/iio/adc/ad7173.c
646
st->config_usage_counter = 0;
drivers/iio/adc/ad7173.c
685
ad7173_find_live_config(struct ad7173_state *st, struct ad7173_channel_config *cfg)
drivers/iio/adc/ad7173.c
690
for (i = 0; i < st->num_channels; i++) {
drivers/iio/adc/ad7173.c
691
cfg_aux = &st->channels[i].cfg;
drivers/iio/adc/ad7173.c
700
static int ad7173_free_config_slot_lru(struct ad7173_state *st)
drivers/iio/adc/ad7173.c
704
for (i = 1; i < st->info->num_configs; i++)
drivers/iio/adc/ad7173.c
705
if (st->config_cnts[i] < st->config_cnts[lru_position])
drivers/iio/adc/ad7173.c
708
for (i = 0; i < st->num_channels; i++)
drivers/iio/adc/ad7173.c
709
if (st->channels[i].cfg.cfg_slot == lru_position)
drivers/iio/adc/ad7173.c
710
st->channels[i].cfg.live = false;
drivers/iio/adc/ad7173.c
712
ida_free(&st->cfg_slots_status, lru_position);
drivers/iio/adc/ad7173.c
713
return ida_alloc(&st->cfg_slots_status, GFP_KERNEL);
drivers/iio/adc/ad7173.c
717
static int ad7173_load_config(struct ad7173_state *st,
drivers/iio/adc/ad7173.c
724
free_cfg_slot = ida_alloc_range(&st->cfg_slots_status, 0,
drivers/iio/adc/ad7173.c
725
st->info->num_configs - 1, GFP_KERNEL);
drivers/iio/adc/ad7173.c
727
free_cfg_slot = ad7173_free_config_slot_lru(st);
drivers/iio/adc/ad7173.c
738
ret = ad_sd_write_reg(&st->sd, AD7173_REG_SETUP(free_cfg_slot), 2, config);
drivers/iio/adc/ad7173.c
748
return ad_sd_write_reg(&st->sd, AD7173_REG_FILTER(free_cfg_slot), 2,
drivers/iio/adc/ad7173.c
776
return ad_sd_write_reg(&st->sd, AD7173_REG_FILTER(free_cfg_slot), 2,
drivers/iio/adc/ad7173.c
787
static int ad7173_config_channel(struct ad7173_state *st, int addr)
drivers/iio/adc/ad7173.c
789
struct ad7173_channel_config *cfg = &st->channels[addr].cfg;
drivers/iio/adc/ad7173.c
794
live_cfg = ad7173_find_live_config(st, cfg);
drivers/iio/adc/ad7173.c
798
ret = ad7173_load_config(st, cfg);
drivers/iio/adc/ad7173.c
805
if (st->config_usage_counter == U64_MAX)
drivers/iio/adc/ad7173.c
806
ad7173_reset_usage_cnts(st);
drivers/iio/adc/ad7173.c
808
st->config_usage_counter++;
drivers/iio/adc/ad7173.c
809
st->config_cnts[cfg->cfg_slot] = st->config_usage_counter;
drivers/iio/adc/ad7173.c
816
struct ad7173_state *st = ad_sigma_delta_to_ad7173(sd);
drivers/iio/adc/ad7173.c
820
ret = ad7173_config_channel(st, channel);
drivers/iio/adc/ad7173.c
825
FIELD_PREP(AD7173_CH_SETUP_SEL_MASK, st->channels[channel].cfg.cfg_slot) |
drivers/iio/adc/ad7173.c
826
st->channels[channel].ain;
drivers/iio/adc/ad7173.c
828
if (st->channels[channel].cfg.openwire_comp_chan >= 0)
drivers/iio/adc/ad7173.c
829
channel = st->channels[channel].cfg.openwire_comp_chan;
drivers/iio/adc/ad7173.c
831
return ad_sd_write_reg(&st->sd, AD7173_REG_CH(channel), 2, val);
drivers/iio/adc/ad7173.c
837
struct ad7173_state *st = ad_sigma_delta_to_ad7173(sd);
drivers/iio/adc/ad7173.c
839
st->adc_mode &= ~AD7173_ADC_MODE_MODE_MASK;
drivers/iio/adc/ad7173.c
840
st->adc_mode |= FIELD_PREP(AD7173_ADC_MODE_MODE_MASK, mode);
drivers/iio/adc/ad7173.c
842
return ad_sd_write_reg(&st->sd, AD7173_REG_ADC_MODE, 2, st->adc_mode);
drivers/iio/adc/ad7173.c
847
struct ad7173_state *st = ad_sigma_delta_to_ad7173(sd);
drivers/iio/adc/ad7173.c
848
unsigned int interface_mode = st->interface_mode;
drivers/iio/adc/ad7173.c
853
ret = ad_sd_write_reg(&st->sd, AD7173_REG_INTERFACE_MODE, 2, interface_mode);
drivers/iio/adc/ad7173.c
857
st->interface_mode = interface_mode;
drivers/iio/adc/ad7173.c
864
struct ad7173_state *st = ad_sigma_delta_to_ad7173(sd);
drivers/iio/adc/ad7173.c
868
for (i = 0; i < st->num_channels; i++) {
drivers/iio/adc/ad7173.c
879
struct ad7173_state *st = ad_sigma_delta_to_ad7173(sd);
drivers/iio/adc/ad7173.c
881
if (st->channels[chan].cfg.openwire_comp_chan >= 0)
drivers/iio/adc/ad7173.c
882
chan = st->channels[chan].cfg.openwire_comp_chan;
drivers/iio/adc/ad7191.c
104
struct ad7191_state *st = ad_sigma_delta_to_ad7191(sd);
drivers/iio/adc/ad7191.c
109
return ad7191_set_cs(&st->sd, 1);
drivers/iio/adc/ad7191.c
111
return ad7191_set_cs(&st->sd, 0);
drivers/iio/adc/ad7191.c
125
struct ad7191_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7191.c
126
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7191.c
141
st->int_vref_mv = ret / 1000;
drivers/iio/adc/ad7191.c
148
struct ad7191_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7191.c
149
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7191.c
159
st->samp_freq_index = 0;
drivers/iio/adc/ad7191.c
160
st->scale_index = 0;
drivers/iio/adc/ad7191.c
175
st->samp_freq_avail = &samp_freq[odr_index];
drivers/iio/adc/ad7191.c
176
st->samp_freq_avail_size = 1;
drivers/iio/adc/ad7191.c
178
st->odr_gpios = NULL;
drivers/iio/adc/ad7191.c
180
st->odr_gpios = devm_gpiod_get_array(dev, "odr", GPIOD_OUT_LOW);
drivers/iio/adc/ad7191.c
181
if (IS_ERR(st->odr_gpios))
drivers/iio/adc/ad7191.c
182
return dev_err_probe(dev, PTR_ERR(st->odr_gpios),
drivers/iio/adc/ad7191.c
185
if (st->odr_gpios->ndescs != 2)
drivers/iio/adc/ad7191.c
188
st->samp_freq_avail = samp_freq;
drivers/iio/adc/ad7191.c
189
st->samp_freq_avail_size = ARRAY_SIZE(samp_freq);
drivers/iio/adc/ad7191.c
192
mutex_lock(&st->lock);
drivers/iio/adc/ad7191.c
195
scale_uv = ((u64)st->int_vref_mv * NANO) >>
drivers/iio/adc/ad7191.c
202
mutex_unlock(&st->lock);
drivers/iio/adc/ad7191.c
217
st->scale_avail = &scale_buffer[pga_index];
drivers/iio/adc/ad7191.c
218
st->scale_avail_size = 1;
drivers/iio/adc/ad7191.c
220
st->pga_gpios = NULL;
drivers/iio/adc/ad7191.c
222
st->pga_gpios = devm_gpiod_get_array(dev, "pga", GPIOD_OUT_LOW);
drivers/iio/adc/ad7191.c
223
if (IS_ERR(st->pga_gpios))
drivers/iio/adc/ad7191.c
224
return dev_err_probe(dev, PTR_ERR(st->pga_gpios),
drivers/iio/adc/ad7191.c
227
if (st->pga_gpios->ndescs != 2)
drivers/iio/adc/ad7191.c
230
st->scale_avail = scale_buffer;
drivers/iio/adc/ad7191.c
231
st->scale_avail_size = ARRAY_SIZE(scale_buffer);
drivers/iio/adc/ad7191.c
234
st->temp_gpio = devm_gpiod_get(dev, "temp", GPIOD_OUT_LOW);
drivers/iio/adc/ad7191.c
235
if (IS_ERR(st->temp_gpio))
drivers/iio/adc/ad7191.c
236
return dev_err_probe(dev, PTR_ERR(st->temp_gpio),
drivers/iio/adc/ad7191.c
239
st->chan_gpio = devm_gpiod_get(dev, "chan", GPIOD_OUT_LOW);
drivers/iio/adc/ad7191.c
240
if (IS_ERR(st->chan_gpio))
drivers/iio/adc/ad7191.c
241
return dev_err_probe(dev, PTR_ERR(st->chan_gpio),
drivers/iio/adc/ad7191.c
247
static int ad7191_clock_setup(struct ad7191_state *st)
drivers/iio/adc/ad7191.c
249
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7191.c
251
st->mclk = devm_clk_get_optional_enabled(dev, "mclk");
drivers/iio/adc/ad7191.c
252
if (IS_ERR(st->mclk))
drivers/iio/adc/ad7191.c
253
return dev_err_probe(dev, PTR_ERR(st->mclk),
drivers/iio/adc/ad7191.c
261
struct ad7191_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7191.c
272
return ad7191_clock_setup(st);
drivers/iio/adc/ad7191.c
279
struct ad7191_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7191.c
287
guard(mutex)(&st->lock);
drivers/iio/adc/ad7191.c
288
*val = st->scale_avail[st->scale_index][0];
drivers/iio/adc/ad7191.c
289
*val2 = st->scale_avail[st->scale_index][1];
drivers/iio/adc/ad7191.c
311
*val = st->samp_freq_avail[st->samp_freq_index];
drivers/iio/adc/ad7191.c
318
static int ad7191_set_gain(struct ad7191_state *st, int gain_index)
drivers/iio/adc/ad7191.c
322
st->scale_index = gain_index;
drivers/iio/adc/ad7191.c
326
return gpiod_multi_set_value_cansleep(st->pga_gpios, bitmap);
drivers/iio/adc/ad7191.c
329
static int ad7191_set_samp_freq(struct ad7191_state *st, int samp_freq_index)
drivers/iio/adc/ad7191.c
333
st->samp_freq_index = samp_freq_index;
drivers/iio/adc/ad7191.c
337
return gpiod_multi_set_value_cansleep(st->odr_gpios, bitmap);
drivers/iio/adc/ad7191.c
340
static int __ad7191_write_raw(struct ad7191_state *st,
drivers/iio/adc/ad7191.c
348
if (!st->pga_gpios)
drivers/iio/adc/ad7191.c
350
guard(mutex)(&st->lock);
drivers/iio/adc/ad7191.c
351
for (i = 0; i < st->scale_avail_size; i++) {
drivers/iio/adc/ad7191.c
352
if (val2 == st->scale_avail[i][1])
drivers/iio/adc/ad7191.c
353
return ad7191_set_gain(st, i);
drivers/iio/adc/ad7191.c
358
if (!st->odr_gpios)
drivers/iio/adc/ad7191.c
360
guard(mutex)(&st->lock);
drivers/iio/adc/ad7191.c
361
for (i = 0; i < st->samp_freq_avail_size; i++) {
drivers/iio/adc/ad7191.c
362
if (val == st->samp_freq_avail[i])
drivers/iio/adc/ad7191.c
363
return ad7191_set_samp_freq(st, i);
drivers/iio/adc/ad7191.c
376
struct ad7191_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7191.c
382
ret = __ad7191_write_raw(st, chan, val, val2, mask);
drivers/iio/adc/ad7191.c
406
struct ad7191_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7191.c
410
*vals = (int *)st->scale_avail;
drivers/iio/adc/ad7191.c
412
*length = st->scale_avail_size * 2;
drivers/iio/adc/ad7191.c
415
*vals = (int *)st->samp_freq_avail;
drivers/iio/adc/ad7191.c
417
*length = st->samp_freq_avail_size;
drivers/iio/adc/ad7191.c
496
struct ad7191_state *st;
drivers/iio/adc/ad7191.c
500
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7191.c
504
st = iio_priv(indio_dev);
drivers/iio/adc/ad7191.c
506
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/adc/ad7191.c
516
ret = ad_sd_init(&st->sd, indio_dev, spi, &ad7191_sigma_delta_info);
drivers/iio/adc/ad7191.c
73
struct ad7191_state *st = ad_sigma_delta_to_ad7191(sd);
drivers/iio/adc/ad7191.c
82
gpiod_set_value(st->chan_gpio, chan_gpio_val);
drivers/iio/adc/ad7191.c
83
gpiod_set_value(st->temp_gpio, temp_gpio_val);
drivers/iio/adc/ad7192.c
1001
for (i = 0; i < ARRAY_SIZE(st->oversampling_ratio_avail); i++) {
drivers/iio/adc/ad7192.c
1002
if (val != st->oversampling_ratio_avail[i])
drivers/iio/adc/ad7192.c
1005
tmp = st->mode;
drivers/iio/adc/ad7192.c
1006
st->mode &= ~AD7192_MODE_AVG_MASK;
drivers/iio/adc/ad7192.c
1007
st->mode |= FIELD_PREP(AD7192_MODE_AVG_MASK, i);
drivers/iio/adc/ad7192.c
1008
if (tmp == st->mode)
drivers/iio/adc/ad7192.c
1010
ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode);
drivers/iio/adc/ad7192.c
1011
ad7192_update_filter_freq_avail(st);
drivers/iio/adc/ad7192.c
1061
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
1065
*vals = (int *)st->scale_avail;
drivers/iio/adc/ad7192.c
1068
*length = ARRAY_SIZE(st->scale_avail) * 2;
drivers/iio/adc/ad7192.c
1072
*vals = (int *)st->filter_freq_avail;
drivers/iio/adc/ad7192.c
1074
*length = ARRAY_SIZE(st->filter_freq_avail) * 2;
drivers/iio/adc/ad7192.c
1078
*vals = (int *)st->oversampling_ratio_avail;
drivers/iio/adc/ad7192.c
1080
*length = ARRAY_SIZE(st->oversampling_ratio_avail);
drivers/iio/adc/ad7192.c
1090
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
1091
u32 conf = st->conf;
drivers/iio/adc/ad7192.c
1099
ret = ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, conf);
drivers/iio/adc/ad7192.c
1103
st->conf = conf;
drivers/iio/adc/ad7192.c
1344
struct ad7192_state *st;
drivers/iio/adc/ad7192.c
1351
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7192.c
1355
st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
1357
mutex_init(&st->lock);
drivers/iio/adc/ad7192.c
1368
st->aincom_mv = ret == -ENODEV ? 0 : ret / MILLI;
drivers/iio/adc/ad7192.c
1406
st->int_vref_mv = ret == -ENODEV ? avdd_mv : ret / MILLI;
drivers/iio/adc/ad7192.c
1408
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/adc/ad7192.c
1409
indio_dev->name = st->chip_info->name;
drivers/iio/adc/ad7192.c
1411
indio_dev->info = st->chip_info->info;
drivers/iio/adc/ad7192.c
1412
if (st->chip_info->parse_channels) {
drivers/iio/adc/ad7192.c
1413
ret = st->chip_info->parse_channels(indio_dev);
drivers/iio/adc/ad7192.c
1417
indio_dev->channels = st->chip_info->channels;
drivers/iio/adc/ad7192.c
1418
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/adc/ad7192.c
1421
ret = ad_sd_init(&st->sd, indio_dev, spi, st->chip_info->sigma_delta_info);
drivers/iio/adc/ad7192.c
1429
ret = ad7192_clock_setup(st);
drivers/iio/adc/ad7192.c
231
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
233
st->syscalib_mode[chan->channel] = mode;
drivers/iio/adc/ad7192.c
241
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
243
return st->syscalib_mode[chan->channel];
drivers/iio/adc/ad7192.c
251
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
262
temp = st->syscalib_mode[chan->channel];
drivers/iio/adc/ad7192.c
265
ret = ad_sd_calibrate(&st->sd, AD7192_MODE_CAL_SYS_ZERO,
drivers/iio/adc/ad7192.c
268
ret = ad_sd_calibrate(&st->sd, AD7192_MODE_CAL_SYS_FULL,
drivers/iio/adc/ad7192.c
304
struct ad7192_state *st = ad_sigma_delta_to_ad7192(sd);
drivers/iio/adc/ad7192.c
306
st->conf &= ~AD7192_CONF_CHAN_MASK;
drivers/iio/adc/ad7192.c
307
st->conf |= FIELD_PREP(AD7192_CONF_CHAN_MASK, channel);
drivers/iio/adc/ad7192.c
309
return ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, st->conf);
drivers/iio/adc/ad7192.c
315
struct ad7192_state *st = ad_sigma_delta_to_ad7192(sd);
drivers/iio/adc/ad7192.c
317
st->mode &= ~AD7192_MODE_SEL_MASK;
drivers/iio/adc/ad7192.c
318
st->mode |= FIELD_PREP(AD7192_MODE_SEL_MASK, mode);
drivers/iio/adc/ad7192.c
320
return ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode);
drivers/iio/adc/ad7192.c
325
struct ad7192_state *st = ad_sigma_delta_to_ad7192(sd);
drivers/iio/adc/ad7192.c
326
unsigned int mode = st->mode;
drivers/iio/adc/ad7192.c
332
ret = ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, mode);
drivers/iio/adc/ad7192.c
336
st->mode = mode;
drivers/iio/adc/ad7192.c
343
struct ad7192_state *st = ad_sigma_delta_to_ad7192(sd);
drivers/iio/adc/ad7192.c
344
u32 conf = st->conf;
drivers/iio/adc/ad7192.c
349
ret = ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, conf);
drivers/iio/adc/ad7192.c
353
st->conf = conf;
drivers/iio/adc/ad7192.c
396
static int ad7192_calibrate_all(struct ad7192_state *st)
drivers/iio/adc/ad7192.c
398
return ad_sd_calibrate_all(&st->sd, ad7192_calib_arr,
drivers/iio/adc/ad7192.c
431
struct ad7192_state *st = clk_hw_to_ad7192(hw);
drivers/iio/adc/ad7192.c
433
return st->clock_sel == AD7192_CLK_INT_CO;
drivers/iio/adc/ad7192.c
438
struct ad7192_state *st = clk_hw_to_ad7192(hw);
drivers/iio/adc/ad7192.c
441
st->mode &= ~AD7192_MODE_CLKSRC_MASK;
drivers/iio/adc/ad7192.c
442
st->mode |= AD7192_CLK_INT_CO;
drivers/iio/adc/ad7192.c
444
ret = ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode);
drivers/iio/adc/ad7192.c
448
st->clock_sel = AD7192_CLK_INT_CO;
drivers/iio/adc/ad7192.c
455
struct ad7192_state *st = clk_hw_to_ad7192(hw);
drivers/iio/adc/ad7192.c
458
st->mode &= ~AD7192_MODE_CLKSRC_MASK;
drivers/iio/adc/ad7192.c
459
st->mode |= AD7192_CLK_INT;
drivers/iio/adc/ad7192.c
461
ret = ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode);
drivers/iio/adc/ad7192.c
465
st->clock_sel = AD7192_CLK_INT;
drivers/iio/adc/ad7192.c
475
static int ad7192_register_clk_provider(struct ad7192_state *st)
drivers/iio/adc/ad7192.c
477
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7192.c
494
st->int_clk_hw.init = &init;
drivers/iio/adc/ad7192.c
495
ret = devm_clk_hw_register(dev, &st->int_clk_hw);
drivers/iio/adc/ad7192.c
500
&st->int_clk_hw);
drivers/iio/adc/ad7192.c
503
static int ad7192_clock_setup(struct ad7192_state *st)
drivers/iio/adc/ad7192.c
505
struct device *dev = &st->sd.spi->dev;
drivers/iio/adc/ad7192.c
515
st->clock_sel = AD7192_CLK_INT_CO;
drivers/iio/adc/ad7192.c
516
st->fclk = AD7192_INT_FREQ_MHZ;
drivers/iio/adc/ad7192.c
522
st->clock_sel = AD7192_CLK_EXT_MCLK1_2;
drivers/iio/adc/ad7192.c
523
st->mclk = devm_clk_get_enabled(dev, "mclk");
drivers/iio/adc/ad7192.c
524
if (IS_ERR(st->mclk))
drivers/iio/adc/ad7192.c
525
return dev_err_probe(dev, PTR_ERR(st->mclk),
drivers/iio/adc/ad7192.c
528
st->fclk = clk_get_rate(st->mclk);
drivers/iio/adc/ad7192.c
529
if (!ad7192_valid_external_frequency(st->fclk))
drivers/iio/adc/ad7192.c
541
st->clock_sel = AD7192_CLK_INT;
drivers/iio/adc/ad7192.c
542
st->fclk = AD7192_INT_FREQ_MHZ;
drivers/iio/adc/ad7192.c
544
ret = ad7192_register_clk_provider(st);
drivers/iio/adc/ad7192.c
551
st->clock_sel = AD7192_CLK_EXT_MCLK1_2 + ret;
drivers/iio/adc/ad7192.c
553
st->mclk = devm_clk_get_enabled(dev, ad7192_clock_names[ret]);
drivers/iio/adc/ad7192.c
554
if (IS_ERR(st->mclk))
drivers/iio/adc/ad7192.c
555
return dev_err_probe(dev, PTR_ERR(st->mclk),
drivers/iio/adc/ad7192.c
558
st->fclk = clk_get_rate(st->mclk);
drivers/iio/adc/ad7192.c
559
if (!ad7192_valid_external_frequency(st->fclk))
drivers/iio/adc/ad7192.c
568
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
575
ret = ad_sd_reset(&st->sd);
drivers/iio/adc/ad7192.c
586
ret = ad_sd_read_reg(&st->sd, AD7192_REG_ID, 1, &id);
drivers/iio/adc/ad7192.c
592
if (id != st->chip_info->chip_id)
drivers/iio/adc/ad7192.c
594
id, st->chip_info->chip_id);
drivers/iio/adc/ad7192.c
596
st->mode = FIELD_PREP(AD7192_MODE_SEL_MASK, AD7192_MODE_IDLE) |
drivers/iio/adc/ad7192.c
597
FIELD_PREP(AD7192_MODE_CLKSRC_MASK, st->clock_sel) |
drivers/iio/adc/ad7192.c
600
st->conf = FIELD_PREP(AD7192_CONF_GAIN_MASK, 0);
drivers/iio/adc/ad7192.c
604
st->mode |= AD7192_MODE_REJ60;
drivers/iio/adc/ad7192.c
607
if (refin2_en && st->chip_info->chip_id != CHIPID_AD7195)
drivers/iio/adc/ad7192.c
608
st->conf |= AD7192_CONF_REFSEL;
drivers/iio/adc/ad7192.c
610
st->conf &= ~AD7192_CONF_CHOP;
drivers/iio/adc/ad7192.c
614
st->conf |= AD7192_CONF_BUF;
drivers/iio/adc/ad7192.c
618
st->conf |= AD7192_CONF_UNIPOLAR;
drivers/iio/adc/ad7192.c
623
st->conf |= AD7192_CONF_BURN;
drivers/iio/adc/ad7192.c
629
ret = ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode);
drivers/iio/adc/ad7192.c
633
ret = ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, st->conf);
drivers/iio/adc/ad7192.c
637
ret = ad7192_calibrate_all(st);
drivers/iio/adc/ad7192.c
642
for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) {
drivers/iio/adc/ad7192.c
643
scale_uv = ((u64)st->int_vref_mv * 100000000)
drivers/iio/adc/ad7192.c
645
!FIELD_GET(AD7192_CONF_UNIPOLAR, st->conf));
drivers/iio/adc/ad7192.c
648
st->scale_avail[i][1] = do_div(scale_uv, 100000000) * 10;
drivers/iio/adc/ad7192.c
649
st->scale_avail[i][0] = scale_uv;
drivers/iio/adc/ad7192.c
652
st->oversampling_ratio_avail[0] = 1;
drivers/iio/adc/ad7192.c
653
st->oversampling_ratio_avail[1] = 2;
drivers/iio/adc/ad7192.c
654
st->oversampling_ratio_avail[2] = 8;
drivers/iio/adc/ad7192.c
655
st->oversampling_ratio_avail[3] = 16;
drivers/iio/adc/ad7192.c
657
st->filter_freq_avail[0][0] = 600;
drivers/iio/adc/ad7192.c
658
st->filter_freq_avail[1][0] = 800;
drivers/iio/adc/ad7192.c
659
st->filter_freq_avail[2][0] = 2300;
drivers/iio/adc/ad7192.c
660
st->filter_freq_avail[3][0] = 2720;
drivers/iio/adc/ad7192.c
662
st->filter_freq_avail[0][1] = 1000;
drivers/iio/adc/ad7192.c
663
st->filter_freq_avail[1][1] = 1000;
drivers/iio/adc/ad7192.c
664
st->filter_freq_avail[2][1] = 1000;
drivers/iio/adc/ad7192.c
665
st->filter_freq_avail[3][1] = 1000;
drivers/iio/adc/ad7192.c
675
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
677
return sysfs_emit(buf, "%ld\n", FIELD_GET(AD7192_CONF_ACX, st->conf));
drivers/iio/adc/ad7192.c
685
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
688
FIELD_GET(AD7192_GPOCON_BPDSW, st->gpocon));
drivers/iio/adc/ad7192.c
697
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
712
st->gpocon |= AD7192_GPOCON_BPDSW;
drivers/iio/adc/ad7192.c
714
st->gpocon &= ~AD7192_GPOCON_BPDSW;
drivers/iio/adc/ad7192.c
716
ad_sd_write_reg(&st->sd, AD7192_REG_GPOCON, 1, st->gpocon);
drivers/iio/adc/ad7192.c
720
st->conf |= AD7192_CONF_ACX;
drivers/iio/adc/ad7192.c
722
st->conf &= ~AD7192_CONF_ACX;
drivers/iio/adc/ad7192.c
724
ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, st->conf);
drivers/iio/adc/ad7192.c
735
static int ad7192_compute_f_order(struct ad7192_state *st, bool sinc3_en, bool chop_en)
drivers/iio/adc/ad7192.c
739
avg_factor_selected = FIELD_GET(AD7192_MODE_AVG_MASK, st->mode);
drivers/iio/adc/ad7192.c
744
oversampling_ratio = st->oversampling_ratio_avail[avg_factor_selected];
drivers/iio/adc/ad7192.c
752
static int ad7192_get_f_order(struct ad7192_state *st)
drivers/iio/adc/ad7192.c
756
sinc3_en = FIELD_GET(AD7192_MODE_SINC3, st->mode);
drivers/iio/adc/ad7192.c
757
chop_en = FIELD_GET(AD7192_CONF_CHOP, st->conf);
drivers/iio/adc/ad7192.c
759
return ad7192_compute_f_order(st, sinc3_en, chop_en);
drivers/iio/adc/ad7192.c
762
static int ad7192_compute_f_adc(struct ad7192_state *st, bool sinc3_en,
drivers/iio/adc/ad7192.c
765
unsigned int f_order = ad7192_compute_f_order(st, sinc3_en, chop_en);
drivers/iio/adc/ad7192.c
767
return DIV_ROUND_CLOSEST(st->fclk,
drivers/iio/adc/ad7192.c
768
f_order * FIELD_GET(AD7192_MODE_RATE_MASK, st->mode));
drivers/iio/adc/ad7192.c
771
static int ad7192_get_f_adc(struct ad7192_state *st)
drivers/iio/adc/ad7192.c
773
unsigned int f_order = ad7192_get_f_order(st);
drivers/iio/adc/ad7192.c
775
return DIV_ROUND_CLOSEST(st->fclk,
drivers/iio/adc/ad7192.c
776
f_order * FIELD_GET(AD7192_MODE_RATE_MASK, st->mode));
drivers/iio/adc/ad7192.c
779
static void ad7192_update_filter_freq_avail(struct ad7192_state *st)
drivers/iio/adc/ad7192.c
784
fadc = ad7192_compute_f_adc(st, false, true);
drivers/iio/adc/ad7192.c
785
st->filter_freq_avail[0][0] = DIV_ROUND_CLOSEST(fadc * 240, 1024);
drivers/iio/adc/ad7192.c
787
fadc = ad7192_compute_f_adc(st, true, true);
drivers/iio/adc/ad7192.c
788
st->filter_freq_avail[1][0] = DIV_ROUND_CLOSEST(fadc * 240, 1024);
drivers/iio/adc/ad7192.c
790
fadc = ad7192_compute_f_adc(st, false, false);
drivers/iio/adc/ad7192.c
791
st->filter_freq_avail[2][0] = DIV_ROUND_CLOSEST(fadc * 230, 1024);
drivers/iio/adc/ad7192.c
793
fadc = ad7192_compute_f_adc(st, true, false);
drivers/iio/adc/ad7192.c
794
st->filter_freq_avail[3][0] = DIV_ROUND_CLOSEST(fadc * 272, 1024);
drivers/iio/adc/ad7192.c
829
static int ad7192_set_3db_filter_freq(struct ad7192_state *st,
drivers/iio/adc/ad7192.c
839
for (i = 0; i < ARRAY_SIZE(st->filter_freq_avail); i++) {
drivers/iio/adc/ad7192.c
840
diff_new = abs(freq - st->filter_freq_avail[i][0]);
drivers/iio/adc/ad7192.c
849
st->mode &= ~AD7192_MODE_SINC3;
drivers/iio/adc/ad7192.c
851
st->conf |= AD7192_CONF_CHOP;
drivers/iio/adc/ad7192.c
854
st->mode |= AD7192_MODE_SINC3;
drivers/iio/adc/ad7192.c
856
st->conf |= AD7192_CONF_CHOP;
drivers/iio/adc/ad7192.c
859
st->mode &= ~AD7192_MODE_SINC3;
drivers/iio/adc/ad7192.c
861
st->conf &= ~AD7192_CONF_CHOP;
drivers/iio/adc/ad7192.c
864
st->mode |= AD7192_MODE_SINC3;
drivers/iio/adc/ad7192.c
866
st->conf &= ~AD7192_CONF_CHOP;
drivers/iio/adc/ad7192.c
870
ret = ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode);
drivers/iio/adc/ad7192.c
874
return ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, st->conf);
drivers/iio/adc/ad7192.c
877
static int ad7192_get_3db_filter_freq(struct ad7192_state *st)
drivers/iio/adc/ad7192.c
881
fadc = ad7192_get_f_adc(st);
drivers/iio/adc/ad7192.c
883
if (FIELD_GET(AD7192_CONF_CHOP, st->conf))
drivers/iio/adc/ad7192.c
885
if (FIELD_GET(AD7192_MODE_SINC3, st->mode))
drivers/iio/adc/ad7192.c
897
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
898
bool unipolar = FIELD_GET(AD7192_CONF_UNIPOLAR, st->conf);
drivers/iio/adc/ad7192.c
899
u8 gain = FIELD_GET(AD7192_CONF_GAIN_MASK, st->conf);
drivers/iio/adc/ad7192.c
907
mutex_lock(&st->lock);
drivers/iio/adc/ad7192.c
908
*val = st->scale_avail[gain][0];
drivers/iio/adc/ad7192.c
909
*val2 = st->scale_avail[gain][1];
drivers/iio/adc/ad7192.c
910
mutex_unlock(&st->lock);
drivers/iio/adc/ad7192.c
931
if (st->aincom_mv && !chan->differential)
drivers/iio/adc/ad7192.c
932
*val += DIV_ROUND_CLOSEST_ULL((u64)st->aincom_mv * NANO,
drivers/iio/adc/ad7192.c
933
st->scale_avail[gain][1]);
drivers/iio/adc/ad7192.c
943
*val = DIV_ROUND_CLOSEST(ad7192_get_f_adc(st), 1024);
drivers/iio/adc/ad7192.c
946
*val = ad7192_get_3db_filter_freq(st);
drivers/iio/adc/ad7192.c
950
*val = st->oversampling_ratio_avail[FIELD_GET(AD7192_MODE_AVG_MASK, st->mode)];
drivers/iio/adc/ad7192.c
963
struct ad7192_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7192.c
967
guard(mutex)(&st->lock);
drivers/iio/adc/ad7192.c
971
for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) {
drivers/iio/adc/ad7192.c
972
if (val2 != st->scale_avail[i][1])
drivers/iio/adc/ad7192.c
975
tmp = st->conf;
drivers/iio/adc/ad7192.c
976
st->conf &= ~AD7192_CONF_GAIN_MASK;
drivers/iio/adc/ad7192.c
977
st->conf |= FIELD_PREP(AD7192_CONF_GAIN_MASK, i);
drivers/iio/adc/ad7192.c
978
if (tmp == st->conf)
drivers/iio/adc/ad7192.c
980
ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, st->conf);
drivers/iio/adc/ad7192.c
981
ad7192_calibrate_all(st);
drivers/iio/adc/ad7192.c
989
div = st->fclk / (val * ad7192_get_f_order(st) * 1024);
drivers/iio/adc/ad7192.c
993
st->mode &= ~AD7192_MODE_RATE_MASK;
drivers/iio/adc/ad7192.c
994
st->mode |= FIELD_PREP(AD7192_MODE_RATE_MASK, div);
drivers/iio/adc/ad7192.c
995
ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode);
drivers/iio/adc/ad7192.c
996
ad7192_update_filter_freq_avail(st);
drivers/iio/adc/ad7192.c
999
return ad7192_set_3db_filter_freq(st, val, val2 / 1000);
drivers/iio/adc/ad7266.c
102
if (st->fixed_addr)
drivers/iio/adc/ad7266.c
105
switch (st->mode) {
drivers/iio/adc/ad7266.c
118
gpiod_set_value(st->gpios[i], (bool)(nr & BIT(i)));
drivers/iio/adc/ad7266.c
124
struct ad7266_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7266.c
128
ad7266_select_input(st, nr);
drivers/iio/adc/ad7266.c
133
static int ad7266_read_single(struct ad7266_state *st, int *val,
drivers/iio/adc/ad7266.c
138
ad7266_select_input(st, address);
drivers/iio/adc/ad7266.c
140
ret = spi_sync(st->spi, &st->single_msg);
drivers/iio/adc/ad7266.c
141
*val = be16_to_cpu(st->data.sample[address % 2]);
drivers/iio/adc/ad7266.c
149
struct ad7266_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7266.c
157
ret = ad7266_read_single(st, val, chan->address);
drivers/iio/adc/ad7266.c
169
scale_mv = st->vref_mv;
drivers/iio/adc/ad7266.c
170
if (st->mode == AD7266_MODE_DIFF)
drivers/iio/adc/ad7266.c
172
if (st->range == AD7266_RANGE_2VREF)
drivers/iio/adc/ad7266.c
179
if (st->range == AD7266_RANGE_2VREF &&
drivers/iio/adc/ad7266.c
180
st->mode != AD7266_MODE_DIFF)
drivers/iio/adc/ad7266.c
361
struct ad7266_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7266.c
366
is_differential = st->mode != AD7266_MODE_SINGLE_ENDED;
drivers/iio/adc/ad7266.c
367
is_signed = (st->range == AD7266_RANGE_2VREF) |
drivers/iio/adc/ad7266.c
368
(st->mode == AD7266_MODE_DIFF);
drivers/iio/adc/ad7266.c
370
i = AD7266_CHAN_INFO_INDEX(is_differential, is_signed, st->fixed_addr);
drivers/iio/adc/ad7266.c
386
struct ad7266_state *st;
drivers/iio/adc/ad7266.c
390
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ad7266.c
394
st = iio_priv(indio_dev);
drivers/iio/adc/ad7266.c
400
st->vref_mv = ret == -ENODEV ? AD7266_INTERNAL_REF_MV : ret / 1000;
drivers/iio/adc/ad7266.c
403
st->fixed_addr = pdata->fixed_addr;
drivers/iio/adc/ad7266.c
404
st->mode = pdata->mode;
drivers/iio/adc/ad7266.c
405
st->range = pdata->range;
drivers/iio/adc/ad7266.c
407
if (!st->fixed_addr) {
drivers/iio/adc/ad7266.c
408
for (i = 0; i < ARRAY_SIZE(st->gpios); ++i) {
drivers/iio/adc/ad7266.c
409
st->gpios[i] = devm_gpiod_get(&spi->dev,
drivers/iio/adc/ad7266.c
412
if (IS_ERR(st->gpios[i]))
drivers/iio/adc/ad7266.c
413
return PTR_ERR(st->gpios[i]);
drivers/iio/adc/ad7266.c
417
st->fixed_addr = true;
drivers/iio/adc/ad7266.c
418
st->range = AD7266_RANGE_VREF;
drivers/iio/adc/ad7266.c
419
st->mode = AD7266_MODE_DIFF;
drivers/iio/adc/ad7266.c
422
st->spi = spi;
drivers/iio/adc/ad7266.c
431
st->single_xfer[0].rx_buf = &st->data.sample[0];
drivers/iio/adc/ad7266.c
432
st->single_xfer[0].len = 2;
drivers/iio/adc/ad7266.c
433
st->single_xfer[0].cs_change = 1;
drivers/iio/adc/ad7266.c
435
st->single_xfer[1].rx_buf = st->data.sample;
drivers/iio/adc/ad7266.c
436
st->single_xfer[1].len = 4;
drivers/iio/adc/ad7266.c
437
st->single_xfer[1].cs_change = 1;
drivers/iio/adc/ad7266.c
439
st->single_xfer[2].tx_buf = &st->data.sample[0];
drivers/iio/adc/ad7266.c
440
st->single_xfer[2].len = 1;
drivers/iio/adc/ad7266.c
442
spi_message_init(&st->single_msg);
drivers/iio/adc/ad7266.c
443
spi_message_add_tail(&st->single_xfer[0], &st->single_msg);
drivers/iio/adc/ad7266.c
444
spi_message_add_tail(&st->single_xfer[1], &st->single_msg);
drivers/iio/adc/ad7266.c
445
spi_message_add_tail(&st->single_xfer[2], &st->single_msg);
drivers/iio/adc/ad7266.c
52
static int ad7266_wakeup(struct ad7266_state *st)
drivers/iio/adc/ad7266.c
55
return spi_read(st->spi, &st->data.sample[0], 2);
drivers/iio/adc/ad7266.c
58
static int ad7266_powerdown(struct ad7266_state *st)
drivers/iio/adc/ad7266.c
61
return spi_read(st->spi, &st->data.sample[0], 1);
drivers/iio/adc/ad7266.c
66
struct ad7266_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7266.c
67
return ad7266_wakeup(st);
drivers/iio/adc/ad7266.c
72
struct ad7266_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7266.c
73
return ad7266_powerdown(st);
drivers/iio/adc/ad7266.c
85
struct ad7266_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7266.c
88
ret = spi_read(st->spi, st->data.sample, 4);
drivers/iio/adc/ad7266.c
90
iio_push_to_buffers_with_ts(indio_dev, &st->data, sizeof(st->data),
drivers/iio/adc/ad7266.c
98
static void ad7266_select_input(struct ad7266_state *st, unsigned int nr)
drivers/iio/adc/ad7280a.c
1002
st->chain_last_alert_ignore |= AD7280A_ALERT_REMOVE_VIN4_VIN5;
drivers/iio/adc/ad7280a.c
1005
st->chain_last_alert_ignore |= AD7280A_ALERT_REMOVE_VIN5;
drivers/iio/adc/ad7280a.c
1015
crc8_populate_msb(st->crc_tab, POLYNOM);
drivers/iio/adc/ad7280a.c
1017
st->spi->max_speed_hz = AD7280A_MAX_SPI_CLK_HZ;
drivers/iio/adc/ad7280a.c
1018
st->spi->mode = SPI_MODE_1;
drivers/iio/adc/ad7280a.c
1019
ret = spi_setup(st->spi);
drivers/iio/adc/ad7280a.c
1023
st->ctrl_lb = FIELD_PREP(AD7280A_CTRL_LB_ACQ_TIME_MSK, st->acquisition_time) |
drivers/iio/adc/ad7280a.c
1024
FIELD_PREP(AD7280A_CTRL_LB_THERMISTOR_MSK, st->thermistor_term_en);
drivers/iio/adc/ad7280a.c
1025
st->oversampling_ratio = 0; /* No oversampling */
drivers/iio/adc/ad7280a.c
1027
ret = ad7280_chain_setup(st);
drivers/iio/adc/ad7280a.c
1031
st->slave_num = ret;
drivers/iio/adc/ad7280a.c
1032
st->scan_cnt = (st->slave_num + 1) * AD7280A_NUM_CH;
drivers/iio/adc/ad7280a.c
1033
st->cell_threshhigh = 0xFF;
drivers/iio/adc/ad7280a.c
1034
st->aux_threshhigh = 0xFF;
drivers/iio/adc/ad7280a.c
1036
ret = devm_add_action_or_reset(dev, ad7280_sw_power_down, st);
drivers/iio/adc/ad7280a.c
1040
ad7280_update_delay(st);
drivers/iio/adc/ad7280a.c
1045
ret = ad7280_channel_init(st, spi->irq > 0);
drivers/iio/adc/ad7280a.c
1050
indio_dev->channels = st->channels;
drivers/iio/adc/ad7280a.c
1052
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER,
drivers/iio/adc/ad7280a.c
1058
ret = ad7280_write(st, ad7280a_devaddr(st->slave_num),
drivers/iio/adc/ad7280a.c
1062
st->chain_last_alert_ignore));
drivers/iio/adc/ad7280a.c
200
static int ad7280_check_crc(struct ad7280_state *st, unsigned int val)
drivers/iio/adc/ad7280a.c
202
unsigned char crc = ad7280_calc_crc8(st->crc_tab, val >> 10);
drivers/iio/adc/ad7280a.c
218
static void ad7280_delay(struct ad7280_state *st)
drivers/iio/adc/ad7280a.c
220
if (st->readback_delay_us < 50)
drivers/iio/adc/ad7280a.c
221
udelay(st->readback_delay_us);
drivers/iio/adc/ad7280a.c
226
static int __ad7280_read32(struct ad7280_state *st, unsigned int *val)
drivers/iio/adc/ad7280a.c
230
.tx_buf = &st->tx,
drivers/iio/adc/ad7280a.c
231
.rx_buf = &st->rx,
drivers/iio/adc/ad7280a.c
232
.len = sizeof(st->tx),
drivers/iio/adc/ad7280a.c
235
st->tx = cpu_to_be32(AD7280A_READ_TXVAL);
drivers/iio/adc/ad7280a.c
237
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/adc/ad7280a.c
241
*val = be32_to_cpu(st->rx);
drivers/iio/adc/ad7280a.c
246
static int ad7280_write(struct ad7280_state *st, unsigned int devaddr,
drivers/iio/adc/ad7280a.c
255
ad7280_calc_crc8(st->crc_tab, reg >> 11));
drivers/iio/adc/ad7280a.c
259
st->tx = cpu_to_be32(reg);
drivers/iio/adc/ad7280a.c
261
return spi_write(st->spi, &st->tx, sizeof(st->tx));
drivers/iio/adc/ad7280a.c
264
static int ad7280_read_reg(struct ad7280_state *st, unsigned int devaddr,
drivers/iio/adc/ad7280a.c
271
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, AD7280A_CTRL_HB_REG, 1,
drivers/iio/adc/ad7280a.c
277
st->oversampling_ratio));
drivers/iio/adc/ad7280a.c
282
ret = ad7280_write(st, devaddr, AD7280A_CTRL_HB_REG, 0,
drivers/iio/adc/ad7280a.c
288
st->oversampling_ratio));
drivers/iio/adc/ad7280a.c
293
ret = ad7280_write(st, devaddr, AD7280A_READ_REG, 0,
drivers/iio/adc/ad7280a.c
298
ret = __ad7280_read32(st, &tmp);
drivers/iio/adc/ad7280a.c
302
if (ad7280_check_crc(st, tmp))
drivers/iio/adc/ad7280a.c
312
static int ad7280_read_channel(struct ad7280_state *st, unsigned int devaddr,
drivers/iio/adc/ad7280a.c
318
ret = ad7280_write(st, devaddr, AD7280A_READ_REG, 0,
drivers/iio/adc/ad7280a.c
323
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, AD7280A_CTRL_HB_REG, 1,
drivers/iio/adc/ad7280a.c
329
st->oversampling_ratio));
drivers/iio/adc/ad7280a.c
333
ret = ad7280_write(st, devaddr, AD7280A_CTRL_HB_REG, 0,
drivers/iio/adc/ad7280a.c
341
st->oversampling_ratio));
drivers/iio/adc/ad7280a.c
345
ad7280_delay(st);
drivers/iio/adc/ad7280a.c
347
ret = __ad7280_read32(st, &tmp);
drivers/iio/adc/ad7280a.c
351
if (ad7280_check_crc(st, tmp))
drivers/iio/adc/ad7280a.c
361
static int ad7280_read_all_channels(struct ad7280_state *st, unsigned int cnt,
drivers/iio/adc/ad7280a.c
367
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, AD7280A_READ_REG, 1,
drivers/iio/adc/ad7280a.c
372
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, AD7280A_CTRL_HB_REG, 1,
drivers/iio/adc/ad7280a.c
380
st->oversampling_ratio));
drivers/iio/adc/ad7280a.c
384
ad7280_delay(st);
drivers/iio/adc/ad7280a.c
387
ret = __ad7280_read32(st, &tmp);
drivers/iio/adc/ad7280a.c
391
if (ad7280_check_crc(st, tmp))
drivers/iio/adc/ad7280a.c
407
struct ad7280_state *st = data;
drivers/iio/adc/ad7280a.c
409
ad7280_write(st, AD7280A_DEVADDR_MASTER, AD7280A_CTRL_HB_REG, 1,
drivers/iio/adc/ad7280a.c
411
FIELD_PREP(AD7280A_CTRL_HB_CONV_AVG_MSK, st->oversampling_ratio));
drivers/iio/adc/ad7280a.c
414
static int ad7280_chain_setup(struct ad7280_state *st)
drivers/iio/adc/ad7280a.c
419
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, AD7280A_CTRL_LB_REG, 1,
drivers/iio/adc/ad7280a.c
424
st->ctrl_lb);
drivers/iio/adc/ad7280a.c
428
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, AD7280A_CTRL_LB_REG, 1,
drivers/iio/adc/ad7280a.c
433
st->ctrl_lb);
drivers/iio/adc/ad7280a.c
437
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, AD7280A_READ_REG, 1,
drivers/iio/adc/ad7280a.c
443
ret = __ad7280_read32(st, &val);
drivers/iio/adc/ad7280a.c
450
if (ad7280_check_crc(st, val)) {
drivers/iio/adc/ad7280a.c
463
ad7280_write(st, AD7280A_DEVADDR_MASTER, AD7280A_CTRL_HB_REG, 1,
drivers/iio/adc/ad7280a.c
465
FIELD_PREP(AD7280A_CTRL_HB_CONV_AVG_MSK, st->oversampling_ratio));
drivers/iio/adc/ad7280a.c
474
struct ad7280_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
477
!!(st->cb_mask[chan->address >> 8] &
drivers/iio/adc/ad7280a.c
486
struct ad7280_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
498
guard(mutex)(&st->lock);
drivers/iio/adc/ad7280a.c
501
st->cb_mask[devaddr] |= BIT(ch);
drivers/iio/adc/ad7280a.c
503
st->cb_mask[devaddr] &= ~BIT(ch);
drivers/iio/adc/ad7280a.c
505
ret = ad7280_write(st, devaddr, AD7280A_CELL_BALANCE_REG, 0,
drivers/iio/adc/ad7280a.c
507
st->cb_mask[devaddr]));
drivers/iio/adc/ad7280a.c
517
struct ad7280_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
523
scoped_guard(mutex, &st->lock)
drivers/iio/adc/ad7280a.c
524
ret = ad7280_read_reg(st, devaddr, ch + AD7280A_CB1_TIMER_REG);
drivers/iio/adc/ad7280a.c
538
struct ad7280_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
554
guard(mutex)(&st->lock);
drivers/iio/adc/ad7280a.c
556
ret = ad7280_write(st, devaddr, ch + AD7280A_CB1_TIMER_REG, 0,
drivers/iio/adc/ad7280a.c
645
static void ad7280_init_dev_channels(struct ad7280_state *st, int dev, int *cnt,
drivers/iio/adc/ad7280a.c
652
chan = &st->channels[*cnt];
drivers/iio/adc/ad7280a.c
669
static int ad7280_channel_init(struct ad7280_state *st, bool irq_present)
drivers/iio/adc/ad7280a.c
673
st->channels = devm_kcalloc(&st->spi->dev, (st->slave_num + 1) * 12 + 1,
drivers/iio/adc/ad7280a.c
674
sizeof(*st->channels), GFP_KERNEL);
drivers/iio/adc/ad7280a.c
675
if (!st->channels)
drivers/iio/adc/ad7280a.c
678
for (dev = 0; dev <= st->slave_num; dev++)
drivers/iio/adc/ad7280a.c
679
ad7280_init_dev_channels(st, dev, &cnt, irq_present);
drivers/iio/adc/ad7280a.c
681
ad7280_total_voltage_channel_init(&st->channels[cnt], cnt, dev);
drivers/iio/adc/ad7280a.c
692
struct ad7280_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
698
*val = 1000 + (st->cell_threshhigh * 1568L) / 100;
drivers/iio/adc/ad7280a.c
701
*val = 1000 + (st->cell_threshlow * 1568L) / 100;
drivers/iio/adc/ad7280a.c
710
*val = ((st->aux_threshhigh) * 196L) / 10;
drivers/iio/adc/ad7280a.c
713
*val = (st->aux_threshlow * 196L) / 10;
drivers/iio/adc/ad7280a.c
731
struct ad7280_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
739
guard(mutex)(&st->lock);
drivers/iio/adc/ad7280a.c
748
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, addr,
drivers/iio/adc/ad7280a.c
752
st->cell_threshhigh = value;
drivers/iio/adc/ad7280a.c
756
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, addr,
drivers/iio/adc/ad7280a.c
760
st->cell_threshlow = value;
drivers/iio/adc/ad7280a.c
771
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, addr,
drivers/iio/adc/ad7280a.c
775
st->aux_threshhigh = value;
drivers/iio/adc/ad7280a.c
779
ret = ad7280_write(st, AD7280A_DEVADDR_MASTER, addr,
drivers/iio/adc/ad7280a.c
783
st->aux_threshlow = value;
drivers/iio/adc/ad7280a.c
796
struct ad7280_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
799
unsigned int *channels __free(kfree) = kcalloc(st->scan_cnt, sizeof(*channels),
drivers/iio/adc/ad7280a.c
804
ret = ad7280_read_all_channels(st, st->scan_cnt, channels);
drivers/iio/adc/ad7280a.c
808
for (i = 0; i < st->scan_cnt; i++) {
drivers/iio/adc/ad7280a.c
814
if (val >= st->cell_threshhigh) {
drivers/iio/adc/ad7280a.c
820
} else if (val <= st->cell_threshlow) {
drivers/iio/adc/ad7280a.c
828
if (val >= st->aux_threshhigh) {
drivers/iio/adc/ad7280a.c
834
} else if (val <= st->aux_threshlow) {
drivers/iio/adc/ad7280a.c
847
static void ad7280_update_delay(struct ad7280_state *st)
drivers/iio/adc/ad7280a.c
857
st->readback_delay_us =
drivers/iio/adc/ad7280a.c
858
((ad7280a_t_acq_ns[st->acquisition_time & 0x3] + 720) *
drivers/iio/adc/ad7280a.c
859
(AD7280A_NUM_CH * ad7280a_n_avg[st->oversampling_ratio & 0x3])) -
drivers/iio/adc/ad7280a.c
860
ad7280a_t_acq_ns[st->acquisition_time & 0x3] + st->slave_num * 250;
drivers/iio/adc/ad7280a.c
863
st->readback_delay_us = DIV_ROUND_UP(st->readback_delay_us, 1000);
drivers/iio/adc/ad7280a.c
864
st->readback_delay_us += 5; /* Add tWAIT */
drivers/iio/adc/ad7280a.c
873
struct ad7280_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
880
guard(mutex)(&st->lock);
drivers/iio/adc/ad7280a.c
883
ret = ad7280_read_all_channels(st, st->scan_cnt, NULL);
drivers/iio/adc/ad7280a.c
885
ret = ad7280_read_channel(st, devaddr, ch);
drivers/iio/adc/ad7280a.c
903
*val = ad7280a_n_avg[st->oversampling_ratio];
drivers/iio/adc/ad7280a.c
913
struct ad7280_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
922
st->oversampling_ratio = i;
drivers/iio/adc/ad7280a.c
923
ad7280_update_delay(st);
drivers/iio/adc/ad7280a.c
948
struct ad7280_state *st;
drivers/iio/adc/ad7280a.c
952
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7280a.c
956
st = iio_priv(indio_dev);
drivers/iio/adc/ad7280a.c
958
st->spi = spi;
drivers/iio/adc/ad7280a.c
959
mutex_init(&st->lock);
drivers/iio/adc/ad7280a.c
961
st->thermistor_term_en =
drivers/iio/adc/ad7280a.c
973
st->acquisition_time = AD7280A_CTRL_LB_ACQ_TIME_400ns;
drivers/iio/adc/ad7280a.c
976
st->acquisition_time = AD7280A_CTRL_LB_ACQ_TIME_800ns;
drivers/iio/adc/ad7280a.c
979
st->acquisition_time = AD7280A_CTRL_LB_ACQ_TIME_1200ns;
drivers/iio/adc/ad7280a.c
982
st->acquisition_time = AD7280A_CTRL_LB_ACQ_TIME_1600ns;
drivers/iio/adc/ad7280a.c
989
st->acquisition_time = AD7280A_CTRL_LB_ACQ_TIME_400ns;
drivers/iio/adc/ad7292.c
102
static int ad7292_spi_subreg_read(struct ad7292_state *st, unsigned int addr,
drivers/iio/adc/ad7292.c
108
st->d8[0] = AD7292_RD_FLAG_MSK(addr);
drivers/iio/adc/ad7292.c
109
st->d8[1] = sub_addr;
drivers/iio/adc/ad7292.c
111
ret = spi_write_then_read(st->spi, st->d8, 2, &st->d16, len);
drivers/iio/adc/ad7292.c
115
return (be16_to_cpu(st->d16) >> shift);
drivers/iio/adc/ad7292.c
118
static int ad7292_single_conversion(struct ad7292_state *st,
drivers/iio/adc/ad7292.c
125
.tx_buf = &st->d8,
drivers/iio/adc/ad7292.c
132
.rx_buf = &st->d16,
drivers/iio/adc/ad7292.c
137
st->d8[0] = chan_addr;
drivers/iio/adc/ad7292.c
138
st->d8[1] = AD7292_RD_FLAG_MSK(AD7292_REG_CONV_COMM);
drivers/iio/adc/ad7292.c
140
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/adc/ad7292.c
145
return be16_to_cpu(st->d16);
drivers/iio/adc/ad7292.c
148
static int ad7292_vin_range_multiplier(struct ad7292_state *st, int channel)
drivers/iio/adc/ad7292.c
167
samp_mode = ad7292_spi_subreg_read(st, AD7292_REG_CONF_BANK,
drivers/iio/adc/ad7292.c
173
range0 = ad7292_spi_subreg_read(st, AD7292_REG_CONF_BANK,
drivers/iio/adc/ad7292.c
179
range1 = ad7292_spi_subreg_read(st, AD7292_REG_CONF_BANK,
drivers/iio/adc/ad7292.c
209
struct ad7292_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7292.c
216
ret = ad7292_single_conversion(st, ch_addr);
drivers/iio/adc/ad7292.c
236
ret = ad7292_vin_range_multiplier(st, chan->channel);
drivers/iio/adc/ad7292.c
240
*val = st->vref_mv * ret;
drivers/iio/adc/ad7292.c
256
struct ad7292_state *st;
drivers/iio/adc/ad7292.c
261
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7292.c
265
st = iio_priv(indio_dev);
drivers/iio/adc/ad7292.c
266
st->spi = spi;
drivers/iio/adc/ad7292.c
268
ret = ad7292_spi_reg_read(st, AD7292_REG_VENDOR_ID);
drivers/iio/adc/ad7292.c
277
st->vref_mv = ret == -ENODEV ? AD7292_INTERNAL_REF_MV : ret / 1000;
drivers/iio/adc/ad7292.c
89
static int ad7292_spi_reg_read(struct ad7292_state *st, unsigned int addr)
drivers/iio/adc/ad7292.c
93
st->d8[0] = AD7292_RD_FLAG_MSK(addr);
drivers/iio/adc/ad7292.c
95
ret = spi_write_then_read(st->spi, st->d8, 1, &st->d16, 2);
drivers/iio/adc/ad7292.c
99
return be16_to_cpu(st->d16);
drivers/iio/adc/ad7298.c
105
struct ad7298_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7298.c
114
command = AD7298_WRITE | st->ext_ref;
drivers/iio/adc/ad7298.c
120
st->tx_buf[0] = cpu_to_be16(command);
drivers/iio/adc/ad7298.c
123
st->ring_xfer[0].tx_buf = &st->tx_buf[0];
drivers/iio/adc/ad7298.c
124
st->ring_xfer[0].len = 2;
drivers/iio/adc/ad7298.c
125
st->ring_xfer[0].cs_change = 1;
drivers/iio/adc/ad7298.c
126
st->ring_xfer[1].tx_buf = &st->tx_buf[1];
drivers/iio/adc/ad7298.c
127
st->ring_xfer[1].len = 2;
drivers/iio/adc/ad7298.c
128
st->ring_xfer[1].cs_change = 1;
drivers/iio/adc/ad7298.c
130
spi_message_init(&st->ring_msg);
drivers/iio/adc/ad7298.c
131
spi_message_add_tail(&st->ring_xfer[0], &st->ring_msg);
drivers/iio/adc/ad7298.c
132
spi_message_add_tail(&st->ring_xfer[1], &st->ring_msg);
drivers/iio/adc/ad7298.c
135
st->ring_xfer[i + 2].rx_buf = &st->rx_buf[i];
drivers/iio/adc/ad7298.c
136
st->ring_xfer[i + 2].len = 2;
drivers/iio/adc/ad7298.c
137
st->ring_xfer[i + 2].cs_change = 1;
drivers/iio/adc/ad7298.c
138
spi_message_add_tail(&st->ring_xfer[i + 2], &st->ring_msg);
drivers/iio/adc/ad7298.c
141
st->ring_xfer[i + 1].cs_change = 0;
drivers/iio/adc/ad7298.c
150
struct ad7298_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7298.c
153
b_sent = spi_sync(st->spi, &st->ring_msg);
drivers/iio/adc/ad7298.c
157
iio_push_to_buffers_with_ts(indio_dev, st->rx_buf, sizeof(st->rx_buf),
drivers/iio/adc/ad7298.c
166
static int ad7298_scan_direct(struct ad7298_state *st, unsigned ch)
drivers/iio/adc/ad7298.c
169
st->tx_buf[0] = cpu_to_be16(AD7298_WRITE | st->ext_ref |
drivers/iio/adc/ad7298.c
172
ret = spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ad7298.c
176
return be16_to_cpu(st->rx_buf[0]);
drivers/iio/adc/ad7298.c
179
static int ad7298_scan_temp(struct ad7298_state *st, int *val)
drivers/iio/adc/ad7298.c
185
AD7298_TAVG | st->ext_ref);
drivers/iio/adc/ad7298.c
187
ret = spi_write(st->spi, (u8 *)&buf, 2);
drivers/iio/adc/ad7298.c
193
ret = spi_write(st->spi, (u8 *)&buf, 2);
drivers/iio/adc/ad7298.c
199
ret = spi_read(st->spi, (u8 *)&buf, 2);
drivers/iio/adc/ad7298.c
208
static int ad7298_get_ref_voltage(struct ad7298_state *st)
drivers/iio/adc/ad7298.c
212
if (st->reg) {
drivers/iio/adc/ad7298.c
213
vref = regulator_get_voltage(st->reg);
drivers/iio/adc/ad7298.c
230
struct ad7298_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7298.c
238
ret = ad7298_scan_temp(st, val);
drivers/iio/adc/ad7298.c
240
ret = ad7298_scan_direct(st, chan->address);
drivers/iio/adc/ad7298.c
254
*val = ad7298_get_ref_voltage(st);
drivers/iio/adc/ad7298.c
258
*val = ad7298_get_ref_voltage(st);
drivers/iio/adc/ad7298.c
265
*val = 1093 - 2732500 / ad7298_get_ref_voltage(st);
drivers/iio/adc/ad7298.c
285
struct ad7298_state *st;
drivers/iio/adc/ad7298.c
289
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ad7298.c
293
st = iio_priv(indio_dev);
drivers/iio/adc/ad7298.c
295
st->reg = devm_regulator_get_optional(&spi->dev, "vref");
drivers/iio/adc/ad7298.c
296
if (!IS_ERR(st->reg)) {
drivers/iio/adc/ad7298.c
297
st->ext_ref = AD7298_EXTREF;
drivers/iio/adc/ad7298.c
299
ret = PTR_ERR(st->reg);
drivers/iio/adc/ad7298.c
303
st->reg = NULL;
drivers/iio/adc/ad7298.c
306
if (st->reg) {
drivers/iio/adc/ad7298.c
307
ret = regulator_enable(st->reg);
drivers/iio/adc/ad7298.c
312
st->reg);
drivers/iio/adc/ad7298.c
317
st->spi = spi;
drivers/iio/adc/ad7298.c
327
st->scan_single_xfer[0].tx_buf = &st->tx_buf[0];
drivers/iio/adc/ad7298.c
328
st->scan_single_xfer[0].len = 2;
drivers/iio/adc/ad7298.c
329
st->scan_single_xfer[0].cs_change = 1;
drivers/iio/adc/ad7298.c
330
st->scan_single_xfer[1].tx_buf = &st->tx_buf[1];
drivers/iio/adc/ad7298.c
331
st->scan_single_xfer[1].len = 2;
drivers/iio/adc/ad7298.c
332
st->scan_single_xfer[1].cs_change = 1;
drivers/iio/adc/ad7298.c
333
st->scan_single_xfer[2].rx_buf = &st->rx_buf[0];
drivers/iio/adc/ad7298.c
334
st->scan_single_xfer[2].len = 2;
drivers/iio/adc/ad7298.c
336
spi_message_init(&st->scan_single_msg);
drivers/iio/adc/ad7298.c
337
spi_message_add_tail(&st->scan_single_xfer[0], &st->scan_single_msg);
drivers/iio/adc/ad7298.c
338
spi_message_add_tail(&st->scan_single_xfer[1], &st->scan_single_msg);
drivers/iio/adc/ad7298.c
339
spi_message_add_tail(&st->scan_single_xfer[2], &st->scan_single_msg);
drivers/iio/adc/ad7380.c
1000
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1007
ret = regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad7380.c
1009
ret = regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad7380.c
1032
static int ad7380_get_osr(struct ad7380_state *st, int *val)
drivers/iio/adc/ad7380.c
1037
ret = regmap_read(st->regmap, AD7380_REG_ADDR_CONFIG1, &tmp);
drivers/iio/adc/ad7380.c
1053
static int ad7380_set_ch(struct ad7380_state *st, unsigned int ch)
drivers/iio/adc/ad7380.c
1063
if (st->ch == ch)
drivers/iio/adc/ad7380.c
1066
ret = ad7380_get_osr(st, &oversampling_ratio);
drivers/iio/adc/ad7380.c
1070
ret = regmap_update_bits(st->regmap,
drivers/iio/adc/ad7380.c
1078
st->ch = ch;
drivers/iio/adc/ad7380.c
1083
st->chip_info->num_simult_channels / st->num_sdo_lines;
drivers/iio/adc/ad7380.c
1085
return spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad7380.c
1093
static int ad7380_update_xfers(struct ad7380_state *st,
drivers/iio/adc/ad7380.c
1096
struct spi_transfer *xfer = st->seq ? st->seq_xfer : st->normal_xfer;
drivers/iio/adc/ad7380.c
1105
ret = ad7380_get_osr(st, &oversampling_ratio);
drivers/iio/adc/ad7380.c
1112
st->chip_info->num_simult_channels / st->num_sdo_lines;
drivers/iio/adc/ad7380.c
1114
if (st->seq) {
drivers/iio/adc/ad7380.c
1121
st->chip_info->num_simult_channels;
drivers/iio/adc/ad7380.c
1134
st->chip_info->num_simult_channels;
drivers/iio/adc/ad7380.c
1140
static int ad7380_set_sample_freq(struct ad7380_state *st, int val)
drivers/iio/adc/ad7380.c
1150
ret = spi_offload_trigger_validate(st->offload_trigger, &config);
drivers/iio/adc/ad7380.c
1154
st->offload_trigger_hz = config.periodic.frequency_hz;
drivers/iio/adc/ad7380.c
1159
static int ad7380_init_offload_msg(struct ad7380_state *st,
drivers/iio/adc/ad7380.c
1162
struct spi_transfer *xfer = &st->offload_xfer;
drivers/iio/adc/ad7380.c
1163
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad7380.c
1172
if (st->chip_info->has_mux) {
drivers/iio/adc/ad7380.c
1181
ret = regmap_set_bits(st->regmap, AD7380_REG_ADDR_CONFIG1,
drivers/iio/adc/ad7380.c
1186
st->seq = true;
drivers/iio/adc/ad7380.c
1188
ret = ad7380_set_ch(st, index);
drivers/iio/adc/ad7380.c
1196
xfer->len = AD7380_SPI_BYTES(scan_type) * st->chip_info->num_simult_channels;
drivers/iio/adc/ad7380.c
1197
if (st->num_sdo_lines > 1)
drivers/iio/adc/ad7380.c
1200
spi_message_init_with_transfers(&st->offload_msg, xfer, 1);
drivers/iio/adc/ad7380.c
1201
st->offload_msg.offload = st->offload;
drivers/iio/adc/ad7380.c
1203
ret = spi_optimize_message(st->spi, &st->offload_msg);
drivers/iio/adc/ad7380.c
1215
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1219
.frequency_hz = st->offload_trigger_hz,
drivers/iio/adc/ad7380.c
1224
ret = ad7380_init_offload_msg(st, indio_dev);
drivers/iio/adc/ad7380.c
1233
if (st->seq)
drivers/iio/adc/ad7380.c
1236
ret = spi_offload_trigger_enable(st->offload, st->offload_trigger, &config);
drivers/iio/adc/ad7380.c
1238
spi_unoptimize_message(&st->offload_msg);
drivers/iio/adc/ad7380.c
1245
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1248
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/adc/ad7380.c
1249
spi_unoptimize_message(&st->offload_msg);
drivers/iio/adc/ad7380.c
1251
if (st->seq) {
drivers/iio/adc/ad7380.c
1252
ret = regmap_update_bits(st->regmap,
drivers/iio/adc/ad7380.c
1259
st->seq = false;
drivers/iio/adc/ad7380.c
1272
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1274
struct spi_message *msg = &st->normal_msg;
drivers/iio/adc/ad7380.c
1285
if (st->chip_info->has_mux) {
drivers/iio/adc/ad7380.c
1301
ret = regmap_update_bits(st->regmap,
drivers/iio/adc/ad7380.c
1307
msg = &st->seq_msg;
drivers/iio/adc/ad7380.c
1308
st->seq = true;
drivers/iio/adc/ad7380.c
1310
ret = ad7380_set_ch(st, index);
drivers/iio/adc/ad7380.c
1317
ret = ad7380_update_xfers(st, scan_type);
drivers/iio/adc/ad7380.c
1321
return spi_optimize_message(st->spi, msg);
drivers/iio/adc/ad7380.c
1326
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1327
struct spi_message *msg = &st->normal_msg;
drivers/iio/adc/ad7380.c
1330
if (st->seq) {
drivers/iio/adc/ad7380.c
1331
ret = regmap_update_bits(st->regmap,
drivers/iio/adc/ad7380.c
1338
msg = &st->seq_msg;
drivers/iio/adc/ad7380.c
1339
st->seq = false;
drivers/iio/adc/ad7380.c
1356
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1357
struct spi_message *msg = st->seq ? &st->seq_msg : &st->normal_msg;
drivers/iio/adc/ad7380.c
1360
ret = spi_sync(st->spi, msg);
drivers/iio/adc/ad7380.c
1364
iio_push_to_buffers_with_ts(indio_dev, &st->scan_data, sizeof(st->scan_data),
drivers/iio/adc/ad7380.c
1373
static int ad7380_read_direct(struct ad7380_state *st, unsigned int scan_index,
drivers/iio/adc/ad7380.c
1379
if (st->chip_info->has_mux) {
drivers/iio/adc/ad7380.c
1382
if (index >= st->chip_info->num_simult_channels) {
drivers/iio/adc/ad7380.c
1383
index -= st->chip_info->num_simult_channels;
drivers/iio/adc/ad7380.c
1387
ret = ad7380_set_ch(st, ch);
drivers/iio/adc/ad7380.c
1392
ret = ad7380_update_xfers(st, scan_type);
drivers/iio/adc/ad7380.c
1396
ret = spi_sync(st->spi, &st->normal_msg);
drivers/iio/adc/ad7380.c
1402
*val = sign_extend32(*(u32 *)(st->scan_data + 4 * index),
drivers/iio/adc/ad7380.c
1405
*val = *(u32 *)(st->scan_data + 4 * index) &
drivers/iio/adc/ad7380.c
1409
*val = sign_extend32(*(u16 *)(st->scan_data + 2 * index),
drivers/iio/adc/ad7380.c
1412
*val = *(u16 *)(st->scan_data + 2 * index) &
drivers/iio/adc/ad7380.c
1423
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1437
ret = ad7380_read_direct(st, chan->scan_index,
drivers/iio/adc/ad7380.c
1453
if (st->chip_info->has_hardware_gain)
drivers/iio/adc/ad7380.c
1454
*val = mult_frac(st->vref_mv, MILLI,
drivers/iio/adc/ad7380.c
1455
st->gain_milli[chan->scan_index]);
drivers/iio/adc/ad7380.c
1457
*val = st->vref_mv;
drivers/iio/adc/ad7380.c
1466
*val = st->vcm_mv[chan->channel] * (1 << scan_type->realbits)
drivers/iio/adc/ad7380.c
1467
/ st->vref_mv;
drivers/iio/adc/ad7380.c
1474
ret = ad7380_get_osr(st, val);
drivers/iio/adc/ad7380.c
1483
*val = st->offload_trigger_hz;
drivers/iio/adc/ad7380.c
1495
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1505
*vals = st->sample_freq_range;
drivers/iio/adc/ad7380.c
1535
static int ad7380_set_oversampling_ratio(struct ad7380_state *st, int val)
drivers/iio/adc/ad7380.c
1546
ret = regmap_update_bits(st->regmap,
drivers/iio/adc/ad7380.c
1555
st->resolution_boost_enabled = boost;
drivers/iio/adc/ad7380.c
1562
ret = regmap_update_bits(st->regmap,
drivers/iio/adc/ad7380.c
1573
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1580
return ad7380_set_sample_freq(st, val);
drivers/iio/adc/ad7380.c
1585
ret = ad7380_set_oversampling_ratio(st, val);
drivers/iio/adc/ad7380.c
1598
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1600
return st->resolution_boost_enabled ? AD7380_SCAN_TYPE_RESOLUTION_BOOST
drivers/iio/adc/ad7380.c
1609
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1615
ret = regmap_read(st->regmap, AD7380_REG_ADDR_CONFIG1, &tmp);
drivers/iio/adc/ad7380.c
1631
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1637
ret = regmap_update_bits(st->regmap,
drivers/iio/adc/ad7380.c
1652
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1669
ret = regmap_read(st->regmap,
drivers/iio/adc/ad7380.c
1678
ret = regmap_read(st->regmap,
drivers/iio/adc/ad7380.c
1719
struct ad7380_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1745
return regmap_write(st->regmap,
drivers/iio/adc/ad7380.c
1749
return regmap_write(st->regmap,
drivers/iio/adc/ad7380.c
1792
static int ad7380_init(struct ad7380_state *st, bool external_ref_en)
drivers/iio/adc/ad7380.c
1798
ret = regmap_update_bits(st->regmap, AD7380_REG_ADDR_CONFIG2,
drivers/iio/adc/ad7380.c
1807
ret = regmap_set_bits(st->regmap, AD7380_REG_ADDR_CONFIG1,
drivers/iio/adc/ad7380.c
1814
st->ch = 0;
drivers/iio/adc/ad7380.c
1815
st->seq = false;
drivers/iio/adc/ad7380.c
1818
switch (st->num_sdo_lines) {
drivers/iio/adc/ad7380.c
1832
return regmap_update_bits(st->regmap, AD7380_REG_ADDR_CONFIG2,
drivers/iio/adc/ad7380.c
1838
struct ad7380_state *st)
drivers/iio/adc/ad7380.c
1840
struct spi_device *spi = st->spi;
drivers/iio/adc/ad7380.c
1846
indio_dev->channels = st->chip_info->offload_channels;
drivers/iio/adc/ad7380.c
1850
st->offload_trigger = devm_spi_offload_trigger_get(dev, st->offload,
drivers/iio/adc/ad7380.c
1852
if (IS_ERR(st->offload_trigger))
drivers/iio/adc/ad7380.c
1853
return dev_err_probe(dev, PTR_ERR(st->offload_trigger),
drivers/iio/adc/ad7380.c
1856
sample_rate = st->chip_info->max_conversion_rate_hz *
drivers/iio/adc/ad7380.c
1857
st->num_sdo_lines / st->chip_info->num_simult_channels;
drivers/iio/adc/ad7380.c
1859
st->sample_freq_range[0] = 1; /* min */
drivers/iio/adc/ad7380.c
1860
st->sample_freq_range[1] = 1; /* step */
drivers/iio/adc/ad7380.c
1861
st->sample_freq_range[2] = sample_rate; /* max */
drivers/iio/adc/ad7380.c
1867
ret = ad7380_set_sample_freq(st, sample_rate / 32);
drivers/iio/adc/ad7380.c
1871
rx_dma = devm_spi_offload_rx_stream_request_dma_chan(dev, st->offload);
drivers/iio/adc/ad7380.c
1888
struct ad7380_state *st;
drivers/iio/adc/ad7380.c
1892
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7380.c
1896
st = iio_priv(indio_dev);
drivers/iio/adc/ad7380.c
1897
st->spi = spi;
drivers/iio/adc/ad7380.c
1898
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/adc/ad7380.c
1899
if (!st->chip_info)
drivers/iio/adc/ad7380.c
1902
st->num_sdo_lines = spi->num_rx_lanes;
drivers/iio/adc/ad7380.c
1904
if (st->num_sdo_lines < 1 || st->num_sdo_lines > st->chip_info->num_simult_channels)
drivers/iio/adc/ad7380.c
1907
st->num_sdo_lines);
drivers/iio/adc/ad7380.c
1909
ret = devm_regulator_bulk_get_enable(dev, st->chip_info->num_supplies,
drivers/iio/adc/ad7380.c
1910
st->chip_info->supplies);
drivers/iio/adc/ad7380.c
1917
if (st->chip_info->internal_ref_only) {
drivers/iio/adc/ad7380.c
1925
st->vref_mv = st->chip_info->internal_ref_mv;
drivers/iio/adc/ad7380.c
1929
} else if (st->chip_info->external_ref_only) {
drivers/iio/adc/ad7380.c
1935
st->vref_mv = ret / 1000;
drivers/iio/adc/ad7380.c
1950
st->vref_mv = external_ref_en ? ret / 1000
drivers/iio/adc/ad7380.c
1951
: st->chip_info->internal_ref_mv;
drivers/iio/adc/ad7380.c
1954
if (st->chip_info->num_vcm_supplies > ARRAY_SIZE(st->vcm_mv))
drivers/iio/adc/ad7380.c
1962
for (i = 0; i < st->chip_info->num_vcm_supplies; i++) {
drivers/iio/adc/ad7380.c
1963
const char *vcm = st->chip_info->vcm_supplies[i];
drivers/iio/adc/ad7380.c
1971
st->vcm_mv[i] = ret / 1000;
drivers/iio/adc/ad7380.c
1975
st->gain_milli[i] = AD7380_DEFAULT_GAIN_MILLI;
drivers/iio/adc/ad7380.c
1977
if (st->chip_info->has_hardware_gain) {
drivers/iio/adc/ad7380.c
1988
if (channel >= st->chip_info->num_channels - 1)
drivers/iio/adc/ad7380.c
2006
st->gain_milli[channel] = ad7380_gains[gain_idx];
drivers/iio/adc/ad7380.c
2011
st->regmap = devm_regmap_init(dev, NULL, st, &ad7380_regmap_config);
drivers/iio/adc/ad7380.c
2012
if (IS_ERR(st->regmap))
drivers/iio/adc/ad7380.c
2013
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/adc/ad7380.c
2028
st->normal_xfer[0].cs_change = 1;
drivers/iio/adc/ad7380.c
2029
st->normal_xfer[0].cs_change_delay.value = st->chip_info->timing_specs->t_csh_ns;
drivers/iio/adc/ad7380.c
2030
st->normal_xfer[0].cs_change_delay.unit = SPI_DELAY_UNIT_NSECS;
drivers/iio/adc/ad7380.c
2031
st->normal_xfer[1].rx_buf = st->scan_data;
drivers/iio/adc/ad7380.c
2032
if (st->num_sdo_lines > 1)
drivers/iio/adc/ad7380.c
2033
st->normal_xfer[1].multi_lane_mode = SPI_MULTI_LANE_MODE_STRIPE;
drivers/iio/adc/ad7380.c
2035
spi_message_init_with_transfers(&st->normal_msg, st->normal_xfer,
drivers/iio/adc/ad7380.c
2036
ARRAY_SIZE(st->normal_xfer));
drivers/iio/adc/ad7380.c
2044
st->seq_xfer[0].cs_change = 1;
drivers/iio/adc/ad7380.c
2045
st->seq_xfer[0].cs_change_delay.value = st->chip_info->timing_specs->t_csh_ns;
drivers/iio/adc/ad7380.c
2046
st->seq_xfer[0].cs_change_delay.unit = SPI_DELAY_UNIT_NSECS;
drivers/iio/adc/ad7380.c
2047
st->seq_xfer[1].cs_change = 1;
drivers/iio/adc/ad7380.c
2048
st->seq_xfer[1].cs_change_delay.value = st->chip_info->timing_specs->t_csh_ns;
drivers/iio/adc/ad7380.c
2049
st->seq_xfer[1].cs_change_delay.unit = SPI_DELAY_UNIT_NSECS;
drivers/iio/adc/ad7380.c
2051
st->seq_xfer[2].rx_buf = st->scan_data;
drivers/iio/adc/ad7380.c
2052
st->seq_xfer[2].cs_change = 1;
drivers/iio/adc/ad7380.c
2053
st->seq_xfer[2].cs_change_delay.value = st->chip_info->timing_specs->t_csh_ns;
drivers/iio/adc/ad7380.c
2054
st->seq_xfer[2].cs_change_delay.unit = SPI_DELAY_UNIT_NSECS;
drivers/iio/adc/ad7380.c
2055
if (st->num_sdo_lines > 1) {
drivers/iio/adc/ad7380.c
2056
st->seq_xfer[2].multi_lane_mode = SPI_MULTI_LANE_MODE_STRIPE;
drivers/iio/adc/ad7380.c
2057
st->seq_xfer[3].multi_lane_mode = SPI_MULTI_LANE_MODE_STRIPE;
drivers/iio/adc/ad7380.c
2060
spi_message_init_with_transfers(&st->seq_msg, st->seq_xfer,
drivers/iio/adc/ad7380.c
2061
ARRAY_SIZE(st->seq_xfer));
drivers/iio/adc/ad7380.c
2063
indio_dev->channels = st->chip_info->channels;
drivers/iio/adc/ad7380.c
2064
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/adc/ad7380.c
2065
indio_dev->name = st->chip_info->name;
drivers/iio/adc/ad7380.c
2068
indio_dev->available_scan_masks = st->chip_info->available_scan_masks;
drivers/iio/adc/ad7380.c
2070
st->offload = devm_spi_offload_get(dev, spi, &ad7380_offload_config);
drivers/iio/adc/ad7380.c
2071
ret = PTR_ERR_OR_ZERO(st->offload);
drivers/iio/adc/ad7380.c
2084
ret = ad7380_probe_spi_offload(indio_dev, st);
drivers/iio/adc/ad7380.c
2089
ret = ad7380_init(st, external_ref_en);
drivers/iio/adc/ad7380.c
918
struct ad7380_state *st = context;
drivers/iio/adc/ad7380.c
923
.tx_buf = &st->tx,
drivers/iio/adc/ad7380.c
926
st->tx = FIELD_PREP(AD7380_REG_WR, 1) |
drivers/iio/adc/ad7380.c
930
return spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/adc/ad7380.c
936
struct ad7380_state *st = context;
drivers/iio/adc/ad7380.c
942
.tx_buf = &st->tx,
drivers/iio/adc/ad7380.c
945
.value = st->chip_info->timing_specs->t_csh_ns,
drivers/iio/adc/ad7380.c
952
.rx_buf = &st->rx,
drivers/iio/adc/ad7380.c
957
st->tx = FIELD_PREP(AD7380_REG_WR, 0) |
drivers/iio/adc/ad7380.c
961
ret = spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/adc/ad7380.c
965
*val = FIELD_GET(AD7380_REG_DATA, st->rx);
drivers/iio/adc/ad7405.c
169
struct ad7405_state *st;
drivers/iio/adc/ad7405.c
173
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7405.c
177
st = iio_priv(indio_dev);
drivers/iio/adc/ad7405.c
179
st->info = device_get_match_data(dev);
drivers/iio/adc/ad7405.c
180
if (!st->info)
drivers/iio/adc/ad7405.c
192
st->ref_frequency = clk_get_rate(clk);
drivers/iio/adc/ad7405.c
193
if (!st->ref_frequency)
drivers/iio/adc/ad7405.c
196
indio_dev->name = st->info->name;
drivers/iio/adc/ad7405.c
201
st->back = devm_iio_backend_get(dev, NULL);
drivers/iio/adc/ad7405.c
202
if (IS_ERR(st->back))
drivers/iio/adc/ad7405.c
203
return dev_err_probe(dev, PTR_ERR(st->back),
drivers/iio/adc/ad7405.c
206
ret = iio_backend_chan_enable(st->back, 0);
drivers/iio/adc/ad7405.c
210
ret = devm_iio_backend_request_buffer(dev, st->back, indio_dev);
drivers/iio/adc/ad7405.c
214
ret = devm_iio_backend_enable(dev, st->back);
drivers/iio/adc/ad7405.c
41
struct ad7405_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7405.c
50
ret = iio_backend_oversampling_ratio_set(st->back, chan->scan_index, dec_rate);
drivers/iio/adc/ad7405.c
56
st->dec_rate = dec_rate;
drivers/iio/adc/ad7405.c
65
struct ad7405_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7405.c
69
*val = st->info->full_scale_mv;
drivers/iio/adc/ad7405.c
73
*val = st->dec_rate;
drivers/iio/adc/ad7405.c
76
*val = DIV_ROUND_CLOSEST_ULL(st->ref_frequency, st->dec_rate);
drivers/iio/adc/ad7476.c
104
static void ad7091_reset(struct ad7476_state *st)
drivers/iio/adc/ad7476.c
107
spi_read(st->spi, st->data, 1);
drivers/iio/adc/ad7476.c
110
static int ad7476_scan_direct(struct ad7476_state *st)
drivers/iio/adc/ad7476.c
114
if (st->chip_info->conversion_pre_op)
drivers/iio/adc/ad7476.c
115
st->chip_info->conversion_pre_op(st);
drivers/iio/adc/ad7476.c
117
ret = spi_sync(st->spi, &st->msg);
drivers/iio/adc/ad7476.c
121
if (st->chip_info->conversion_post_op)
drivers/iio/adc/ad7476.c
122
st->chip_info->conversion_post_op(st);
drivers/iio/adc/ad7476.c
124
return be16_to_cpup((__be16 *)st->data);
drivers/iio/adc/ad7476.c
134
struct ad7476_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7476.c
140
ret = ad7476_scan_direct(st);
drivers/iio/adc/ad7476.c
149
*val = st->scale_mv;
drivers/iio/adc/ad7476.c
316
struct ad7476_state *st;
drivers/iio/adc/ad7476.c
321
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ad7476.c
325
st = iio_priv(indio_dev);
drivers/iio/adc/ad7476.c
327
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/adc/ad7476.c
328
if (!st->chip_info)
drivers/iio/adc/ad7476.c
33
void (*conversion_pre_op)(struct ad7476_state *st);
drivers/iio/adc/ad7476.c
332
if (!st->chip_info->int_vref_mv && !st->chip_info->has_vref) {
drivers/iio/adc/ad7476.c
336
st->scale_mv = ret / 1000;
drivers/iio/adc/ad7476.c
34
void (*conversion_post_op)(struct ad7476_state *st);
drivers/iio/adc/ad7476.c
343
if (st->chip_info->has_vref) {
drivers/iio/adc/ad7476.c
347
if (!st->chip_info->int_vref_mv || ret != -ENODEV)
drivers/iio/adc/ad7476.c
350
st->scale_mv = ret / 1000;
drivers/iio/adc/ad7476.c
354
if (!st->scale_mv)
drivers/iio/adc/ad7476.c
355
st->scale_mv = st->chip_info->int_vref_mv;
drivers/iio/adc/ad7476.c
357
if (st->chip_info->has_vdrive) {
drivers/iio/adc/ad7476.c
363
st->convst_gpio = devm_gpiod_get_optional(&spi->dev,
drivers/iio/adc/ad7476.c
366
if (IS_ERR(st->convst_gpio))
drivers/iio/adc/ad7476.c
367
return PTR_ERR(st->convst_gpio);
drivers/iio/adc/ad7476.c
369
if (st->chip_info->convstart_required && !st->convst_gpio)
drivers/iio/adc/ad7476.c
378
static_assert(ARRAY_SIZE(st->channel) == ARRAY_SIZE(st->chip_info->channel));
drivers/iio/adc/ad7476.c
379
for (i = 0; i < ARRAY_SIZE(st->channel); i++) {
drivers/iio/adc/ad7476.c
380
st->channel[i] = st->chip_info->channel[i];
drivers/iio/adc/ad7476.c
381
if (st->convst_gpio)
drivers/iio/adc/ad7476.c
383
&st->channel[i].info_mask_separate);
drivers/iio/adc/ad7476.c
386
st->spi = spi;
drivers/iio/adc/ad7476.c
390
indio_dev->channels = st->channel;
drivers/iio/adc/ad7476.c
391
indio_dev->num_channels = ARRAY_SIZE(st->channel);
drivers/iio/adc/ad7476.c
396
st->xfer.rx_buf = &st->data;
drivers/iio/adc/ad7476.c
397
st->xfer.len = indio_dev->channels[0].scan_type.storagebits / 8;
drivers/iio/adc/ad7476.c
399
spi_message_init(&st->msg);
drivers/iio/adc/ad7476.c
400
spi_message_add_tail(&st->xfer, &st->msg);
drivers/iio/adc/ad7476.c
407
if (st->chip_info->reset)
drivers/iio/adc/ad7476.c
408
st->chip_info->reset(st);
drivers/iio/adc/ad7476.c
57
static void ad7091_convst(struct ad7476_state *st)
drivers/iio/adc/ad7476.c
59
if (!st->convst_gpio)
drivers/iio/adc/ad7476.c
62
gpiod_set_value_cansleep(st->convst_gpio, 0);
drivers/iio/adc/ad7476.c
64
gpiod_set_value_cansleep(st->convst_gpio, 1);
drivers/iio/adc/ad7476.c
68
static void bd79105_convst_disable(struct ad7476_state *st)
drivers/iio/adc/ad7476.c
70
gpiod_set_value_cansleep(st->convst_gpio, 0);
drivers/iio/adc/ad7476.c
73
static void bd79105_convst_enable(struct ad7476_state *st)
drivers/iio/adc/ad7476.c
75
gpiod_set_value_cansleep(st->convst_gpio, 1);
drivers/iio/adc/ad7476.c
84
struct ad7476_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7476.c
87
if (st->chip_info->conversion_pre_op)
drivers/iio/adc/ad7476.c
88
st->chip_info->conversion_pre_op(st);
drivers/iio/adc/ad7476.c
90
b_sent = spi_sync(st->spi, &st->msg);
drivers/iio/adc/ad7476.c
94
iio_push_to_buffers_with_ts(indio_dev, st->data, sizeof(st->data),
drivers/iio/adc/ad7476.c
97
if (st->chip_info->conversion_post_op)
drivers/iio/adc/ad7476.c
98
st->chip_info->conversion_post_op(st);
drivers/iio/adc/ad7606.c
1030
static int ad7606_request_gpios(struct ad7606_state *st)
drivers/iio/adc/ad7606.c
1032
struct device *dev = st->dev;
drivers/iio/adc/ad7606.c
1034
st->gpio_convst = devm_gpiod_get_optional(dev, "adi,conversion-start",
drivers/iio/adc/ad7606.c
1037
if (IS_ERR(st->gpio_convst))
drivers/iio/adc/ad7606.c
1038
return PTR_ERR(st->gpio_convst);
drivers/iio/adc/ad7606.c
1040
st->gpio_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
drivers/iio/adc/ad7606.c
1041
if (IS_ERR(st->gpio_reset))
drivers/iio/adc/ad7606.c
1042
return PTR_ERR(st->gpio_reset);
drivers/iio/adc/ad7606.c
1044
st->gpio_range = devm_gpiod_get_optional(dev, "adi,range",
drivers/iio/adc/ad7606.c
1046
if (IS_ERR(st->gpio_range))
drivers/iio/adc/ad7606.c
1047
return PTR_ERR(st->gpio_range);
drivers/iio/adc/ad7606.c
1049
st->gpio_standby = devm_gpiod_get_optional(dev, "standby",
drivers/iio/adc/ad7606.c
1051
if (IS_ERR(st->gpio_standby))
drivers/iio/adc/ad7606.c
1052
return PTR_ERR(st->gpio_standby);
drivers/iio/adc/ad7606.c
1054
st->gpio_frstdata = devm_gpiod_get_optional(dev, "adi,first-data",
drivers/iio/adc/ad7606.c
1056
if (IS_ERR(st->gpio_frstdata))
drivers/iio/adc/ad7606.c
1057
return PTR_ERR(st->gpio_frstdata);
drivers/iio/adc/ad7606.c
1059
if (!st->chip_info->oversampling_num)
drivers/iio/adc/ad7606.c
1062
st->gpio_os = devm_gpiod_get_array_optional(dev,
drivers/iio/adc/ad7606.c
1065
return PTR_ERR_OR_ZERO(st->gpio_os);
drivers/iio/adc/ad7606.c
1077
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1081
if (st->gpio_convst) {
drivers/iio/adc/ad7606.c
1082
gpiod_set_value(st->gpio_convst, 0);
drivers/iio/adc/ad7606.c
1084
ret = ad7606_pwm_set_low(st);
drivers/iio/adc/ad7606.c
1086
dev_err(st->dev, "PWM set low failed");
drivers/iio/adc/ad7606.c
1090
iio_trigger_poll_nested(st->trig);
drivers/iio/adc/ad7606.c
1092
complete(&st->completion);
drivers/iio/adc/ad7606.c
1102
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1104
if (st->trig != trig)
drivers/iio/adc/ad7606.c
1112
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1114
gpiod_set_value(st->gpio_convst, 1);
drivers/iio/adc/ad7606.c
1121
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1123
gpiod_set_value(st->gpio_convst, 0);
drivers/iio/adc/ad7606.c
1133
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1139
*vals = st->oversampling_avail;
drivers/iio/adc/ad7606.c
1140
*length = st->num_os_ratios;
drivers/iio/adc/ad7606.c
1146
if (st->sw_mode_en)
drivers/iio/adc/ad7606.c
1149
ci = &st->chan_info[ch];
drivers/iio/adc/ad7606.c
1156
*vals = st->chip_info->calib_offset_avail;
drivers/iio/adc/ad7606.c
1160
*vals = (const int *)st->chip_info->calib_phase_avail;
drivers/iio/adc/ad7606.c
1169
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1171
return ad7606_pwm_set_swing(st);
drivers/iio/adc/ad7606.c
1176
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1178
return ad7606_pwm_set_low(st);
drivers/iio/adc/ad7606.c
1184
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1191
if (!st->bops->update_scan_mode)
drivers/iio/adc/ad7606.c
1194
return st->bops->update_scan_mode(indio_dev, scan_mask);
drivers/iio/adc/ad7606.c
1251
static int ad7606_write_mask(struct ad7606_state *st, unsigned int addr,
drivers/iio/adc/ad7606.c
1256
readval = st->bops->reg_read(st, addr);
drivers/iio/adc/ad7606.c
1263
return st->bops->reg_write(st, addr, readval);
drivers/iio/adc/ad7606.c
1268
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1290
return ad7606_write_mask(st, ch_addr, AD7616_RANGE_CH_MSK(ch_index),
drivers/iio/adc/ad7606.c
1296
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1298
return ad7606_write_mask(st, AD7616_CONFIGURATION_REGISTER,
drivers/iio/adc/ad7606.c
1304
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1306
return ad7606_write_mask(st, AD7606_RANGE_CH_ADDR(ch),
drivers/iio/adc/ad7606.c
1313
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1315
return st->bops->reg_write(st, AD7606_OS_MODE, val);
drivers/iio/adc/ad7606.c
1320
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1328
st->write_scale = ad7616_write_scale_sw;
drivers/iio/adc/ad7606.c
1329
st->write_os = &ad7616_write_os_sw;
drivers/iio/adc/ad7606.c
1331
if (st->bops->sw_mode_config) {
drivers/iio/adc/ad7606.c
1332
ret = st->bops->sw_mode_config(indio_dev);
drivers/iio/adc/ad7606.c
1338
return ad7606_write_mask(st, AD7616_CONFIGURATION_REGISTER,
drivers/iio/adc/ad7606.c
1345
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1355
if (st->gpio_os)
drivers/iio/adc/ad7606.c
1356
gpiod_multi_set_value_cansleep(st->gpio_os, os);
drivers/iio/adc/ad7606.c
1359
st->oversampling_avail = ad7606b_oversampling_avail;
drivers/iio/adc/ad7606.c
1360
st->num_os_ratios = ARRAY_SIZE(ad7606b_oversampling_avail);
drivers/iio/adc/ad7606.c
1362
st->write_scale = ad7606_write_scale_sw;
drivers/iio/adc/ad7606.c
1363
st->write_os = &ad7606_write_os_sw;
drivers/iio/adc/ad7606.c
1365
if (!st->bops->sw_mode_config)
drivers/iio/adc/ad7606.c
1368
return st->bops->sw_mode_config(indio_dev);
drivers/iio/adc/ad7606.c
1371
static int ad7606_set_gain_calib(struct ad7606_state *st)
drivers/iio/adc/ad7606.c
1376
for (i = 0; i < st->chip_info->num_adc_channels; i++) {
drivers/iio/adc/ad7606.c
1377
ci = &st->chan_info[i];
drivers/iio/adc/ad7606.c
1378
ret = st->bops->reg_write(st, AD7606_CALIB_GAIN(i),
drivers/iio/adc/ad7606.c
1390
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1396
slow_bus = !(st->bops->iio_backend_config || st->offload_en);
drivers/iio/adc/ad7606.c
1397
indio_dev->num_channels = st->chip_info->num_adc_channels;
drivers/iio/adc/ad7606.c
1408
for (i = 0; i < st->chip_info->num_adc_channels; i++) {
drivers/iio/adc/ad7606.c
1416
chan->scan_type.realbits = st->chip_info->bits;
drivers/iio/adc/ad7606.c
1421
chan->scan_type.storagebits = st->offload_en ?
drivers/iio/adc/ad7606.c
1422
st->chip_info->offload_storagebits :
drivers/iio/adc/ad7606.c
1423
(st->chip_info->bits > 16 ? 32 : 16);
drivers/iio/adc/ad7606.c
1430
if (st->sw_mode_en) {
drivers/iio/adc/ad7606.c
1435
if (st->chip_info->calib_offset_avail) {
drivers/iio/adc/ad7606.c
1463
if (st->chip_info->oversampling_avail)
drivers/iio/adc/ad7606.c
1472
ret = st->chip_info->scale_setup_cb(indio_dev, chan);
drivers/iio/adc/ad7606.c
1494
struct ad7606_state *st;
drivers/iio/adc/ad7606.c
1498
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7606.c
1502
st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1505
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/adc/ad7606.c
1509
st->dev = dev;
drivers/iio/adc/ad7606.c
1510
st->bops = bops;
drivers/iio/adc/ad7606.c
1511
st->base_address = base_address;
drivers/iio/adc/ad7606.c
1512
st->oversampling = 1;
drivers/iio/adc/ad7606.c
1513
st->sw_mode_en = device_property_read_bool(dev, "adi,sw-mode");
drivers/iio/adc/ad7606.c
1515
if (st->sw_mode_en && !chip_info->sw_setup_cb)
drivers/iio/adc/ad7606.c
1534
st->chip_info = chip_info;
drivers/iio/adc/ad7606.c
1536
if (st->chip_info->oversampling_num) {
drivers/iio/adc/ad7606.c
1537
st->oversampling_avail = st->chip_info->oversampling_avail;
drivers/iio/adc/ad7606.c
1538
st->num_os_ratios = st->chip_info->oversampling_num;
drivers/iio/adc/ad7606.c
1541
ret = ad7606_request_gpios(st);
drivers/iio/adc/ad7606.c
1545
if (st->gpio_os) {
drivers/iio/adc/ad7606.c
1546
if (st->gpio_range)
drivers/iio/adc/ad7606.c
1551
if (st->gpio_range)
drivers/iio/adc/ad7606.c
1558
indio_dev->modes = st->bops->iio_backend_config ? 0 : INDIO_DIRECT_MODE;
drivers/iio/adc/ad7606.c
1562
if (st->bops->offload_config) {
drivers/iio/adc/ad7606.c
1563
ret = st->bops->offload_config(dev, indio_dev);
drivers/iio/adc/ad7606.c
1572
ret = ad7606_reset(st);
drivers/iio/adc/ad7606.c
1574
dev_warn(st->dev, "failed to RESET: no RESET GPIO specified\n");
drivers/iio/adc/ad7606.c
1577
if (st->chip_info->init_delay_ms) {
drivers/iio/adc/ad7606.c
1578
if (msleep_interruptible(st->chip_info->init_delay_ms))
drivers/iio/adc/ad7606.c
1583
if (!st->gpio_convst || st->offload_en) {
drivers/iio/adc/ad7606.c
1584
st->cnvst_pwm = devm_pwm_get(dev, NULL);
drivers/iio/adc/ad7606.c
1585
if (IS_ERR(st->cnvst_pwm))
drivers/iio/adc/ad7606.c
1586
return PTR_ERR(st->cnvst_pwm);
drivers/iio/adc/ad7606.c
1589
ret = ad7606_set_sampling_freq(st, 1 * MEGA);
drivers/iio/adc/ad7606.c
1593
ret = ad7606_pwm_set_low(st);
drivers/iio/adc/ad7606.c
1603
st->cnvst_pwm);
drivers/iio/adc/ad7606.c
1608
if (st->bops->iio_backend_config) {
drivers/iio/adc/ad7606.c
1613
ret = ad7606_set_sampling_freq(st, chip_info->max_samplerate);
drivers/iio/adc/ad7606.c
1617
ret = st->bops->iio_backend_config(dev, indio_dev);
drivers/iio/adc/ad7606.c
1622
} else if (!st->offload_en) {
drivers/iio/adc/ad7606.c
1624
if (!st->gpio_convst)
drivers/iio/adc/ad7606.c
1628
init_completion(&st->completion);
drivers/iio/adc/ad7606.c
1629
st->trig = devm_iio_trigger_alloc(dev, "%s-dev%d",
drivers/iio/adc/ad7606.c
1632
if (!st->trig)
drivers/iio/adc/ad7606.c
1635
st->trig->ops = &ad7606_trigger_ops;
drivers/iio/adc/ad7606.c
1636
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/iio/adc/ad7606.c
1637
ret = devm_iio_trigger_register(dev, st->trig);
drivers/iio/adc/ad7606.c
1641
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/adc/ad7606.c
1657
st->write_scale = ad7606_write_scale_hw;
drivers/iio/adc/ad7606.c
1658
st->write_os = ad7606_write_os_hw;
drivers/iio/adc/ad7606.c
1661
if (st->sw_mode_en || st->offload_en) {
drivers/iio/adc/ad7606.c
1663
st->chip_info->sw_setup_cb(indio_dev);
drivers/iio/adc/ad7606.c
1666
if (st->sw_mode_en && st->chip_info->calib_gain_avail) {
drivers/iio/adc/ad7606.c
1667
ret = ad7606_set_gain_calib(st);
drivers/iio/adc/ad7606.c
1681
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1683
if (st->gpio_standby) {
drivers/iio/adc/ad7606.c
1684
gpiod_set_value(st->gpio_range, 1);
drivers/iio/adc/ad7606.c
1685
gpiod_set_value(st->gpio_standby, 1);
drivers/iio/adc/ad7606.c
1694
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
1696
if (st->gpio_standby) {
drivers/iio/adc/ad7606.c
1697
gpiod_set_value(st->gpio_range, st->chan_info[0].range);
drivers/iio/adc/ad7606.c
1698
gpiod_set_value(st->gpio_standby, 1);
drivers/iio/adc/ad7606.c
1699
ad7606_reset(st);
drivers/iio/adc/ad7606.c
276
int ad7606_reset(struct ad7606_state *st)
drivers/iio/adc/ad7606.c
278
if (st->gpio_reset) {
drivers/iio/adc/ad7606.c
279
gpiod_set_value(st->gpio_reset, 1);
drivers/iio/adc/ad7606.c
281
gpiod_set_value(st->gpio_reset, 0);
drivers/iio/adc/ad7606.c
292
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
293
struct ad7606_chan_info *ci = &st->chan_info[chan->scan_index];
drivers/iio/adc/ad7606.c
295
if (!st->sw_mode_en) {
drivers/iio/adc/ad7606.c
315
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
317
unsigned int num_channels = st->chip_info->num_adc_channels;
drivers/iio/adc/ad7606.c
318
struct device *dev = st->dev;
drivers/iio/adc/ad7606.c
360
ci = &st->chan_info[reg - 1];
drivers/iio/adc/ad7606.c
377
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
378
struct ad7606_chan_info *ci = &st->chan_info[chan->scan_index];
drivers/iio/adc/ad7606.c
382
if (!st->sw_mode_en) {
drivers/iio/adc/ad7606.c
435
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
436
struct ad7606_chan_info *ci = &st->chan_info[chan->scan_index];
drivers/iio/adc/ad7606.c
440
if (!st->sw_mode_en) {
drivers/iio/adc/ad7606.c
494
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
495
struct ad7606_chan_info *ci = &st->chan_info[chan->scan_index];
drivers/iio/adc/ad7606.c
506
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
507
struct ad7606_chan_info *ci = &st->chan_info[chan->scan_index];
drivers/iio/adc/ad7606.c
518
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
519
struct ad7606_chan_info *ci = &st->chan_info[chan->scan_index];
drivers/iio/adc/ad7606.c
532
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
535
guard(mutex)(&st->lock);
drivers/iio/adc/ad7606.c
538
ret = st->bops->reg_read(st, reg);
drivers/iio/adc/ad7606.c
544
return st->bops->reg_write(st, reg, writeval);
drivers/iio/adc/ad7606.c
548
static int ad7606_pwm_set_high(struct ad7606_state *st)
drivers/iio/adc/ad7606.c
553
pwm_get_state(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
557
ret = pwm_apply_might_sleep(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
562
int ad7606_pwm_set_low(struct ad7606_state *st)
drivers/iio/adc/ad7606.c
567
pwm_get_state(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
571
ret = pwm_apply_might_sleep(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
577
int ad7606_pwm_set_swing(struct ad7606_state *st)
drivers/iio/adc/ad7606.c
581
pwm_get_state(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
585
return pwm_apply_might_sleep(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
589
static bool ad7606_pwm_is_swinging(struct ad7606_state *st)
drivers/iio/adc/ad7606.c
593
pwm_get_state(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
599
static int ad7606_set_sampling_freq(struct ad7606_state *st, unsigned long freq)
drivers/iio/adc/ad7606.c
602
bool is_swinging = ad7606_pwm_is_swinging(st);
drivers/iio/adc/ad7606.c
609
pwm_get_state(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
621
return pwm_apply_might_sleep(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
624
static int ad7606_read_samples(struct ad7606_state *st)
drivers/iio/adc/ad7606.c
626
unsigned int num = st->chip_info->num_adc_channels;
drivers/iio/adc/ad7606.c
628
return st->bops->read_block(st->dev, num, &st->data);
drivers/iio/adc/ad7606.c
635
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
638
guard(mutex)(&st->lock);
drivers/iio/adc/ad7606.c
640
ret = ad7606_read_samples(st);
drivers/iio/adc/ad7606.c
644
iio_push_to_buffers_with_ts(indio_dev, &st->data, sizeof(st->data),
drivers/iio/adc/ad7606.c
649
gpiod_set_value(st->gpio_convst, 1);
drivers/iio/adc/ad7606.c
657
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
662
if (st->gpio_convst) {
drivers/iio/adc/ad7606.c
663
gpiod_set_value(st->gpio_convst, 1);
drivers/iio/adc/ad7606.c
665
ret = ad7606_pwm_set_high(st);
drivers/iio/adc/ad7606.c
676
if (st->trig) {
drivers/iio/adc/ad7606.c
677
ret = wait_for_completion_timeout(&st->completion,
drivers/iio/adc/ad7606.c
692
ret = ad7606_read_samples(st);
drivers/iio/adc/ad7606.c
700
*val = st->data.buf32[ch];
drivers/iio/adc/ad7606.c
702
*val = st->data.buf16[ch];
drivers/iio/adc/ad7606.c
710
if (!st->gpio_convst) {
drivers/iio/adc/ad7606.c
711
ret = ad7606_pwm_set_low(st);
drivers/iio/adc/ad7606.c
715
gpiod_set_value(st->gpio_convst, 0);
drivers/iio/adc/ad7606.c
720
static int ad7606_get_calib_offset(struct ad7606_state *st, int ch, int *val)
drivers/iio/adc/ad7606.c
724
ret = st->bops->reg_read(st, AD7606_CALIB_OFFSET(ch));
drivers/iio/adc/ad7606.c
728
*val = st->chip_info->calib_offset_avail[0] +
drivers/iio/adc/ad7606.c
729
ret * st->chip_info->calib_offset_avail[1];
drivers/iio/adc/ad7606.c
734
static int ad7606_get_calib_phase(struct ad7606_state *st, int ch, int *val,
drivers/iio/adc/ad7606.c
739
ret = st->bops->reg_read(st, AD7606_CALIB_PHASE(ch));
drivers/iio/adc/ad7606.c
749
*val2 = ret * st->chip_info->calib_phase_avail[1][1];
drivers/iio/adc/ad7606.c
761
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
775
if (st->sw_mode_en)
drivers/iio/adc/ad7606.c
777
ci = &st->chan_info[ch];
drivers/iio/adc/ad7606.c
782
*val = st->oversampling;
drivers/iio/adc/ad7606.c
785
pwm_get_state(st->cnvst_pwm, &cnvst_pwm_state);
drivers/iio/adc/ad7606.c
791
ret = ad7606_get_calib_offset(st, chan->scan_index, val);
drivers/iio/adc/ad7606.c
799
ret = ad7606_get_calib_phase(st, chan->scan_index, val, val2);
drivers/iio/adc/ad7606.c
813
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
814
struct ad7606_chan_info *ci = &st->chan_info[0];
drivers/iio/adc/ad7606.c
831
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
833
gpiod_set_value(st->gpio_range, val);
drivers/iio/adc/ad7606.c
840
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
845
gpiod_multi_set_value_cansleep(st->gpio_os, values);
drivers/iio/adc/ad7606.c
848
if (st->chip_info->os_req_reset)
drivers/iio/adc/ad7606.c
849
ad7606_reset(st);
drivers/iio/adc/ad7606.c
854
static int ad7606_set_calib_offset(struct ad7606_state *st, int ch, int val)
drivers/iio/adc/ad7606.c
859
start_val = st->chip_info->calib_offset_avail[0];
drivers/iio/adc/ad7606.c
860
step_val = st->chip_info->calib_offset_avail[1];
drivers/iio/adc/ad7606.c
861
stop_val = st->chip_info->calib_offset_avail[2];
drivers/iio/adc/ad7606.c
868
return st->bops->reg_write(st, AD7606_CALIB_OFFSET(ch), offset);
drivers/iio/adc/ad7606.c
871
static int ad7606_set_calib_phase(struct ad7606_state *st, int ch, int val,
drivers/iio/adc/ad7606.c
879
start_ns = st->chip_info->calib_phase_avail[0][1];
drivers/iio/adc/ad7606.c
880
step_ns = st->chip_info->calib_phase_avail[1][1];
drivers/iio/adc/ad7606.c
881
stop_ns = st->chip_info->calib_phase_avail[2][1];
drivers/iio/adc/ad7606.c
892
return st->bops->reg_write(st, AD7606_CALIB_PHASE(ch), wreg);
drivers/iio/adc/ad7606.c
918
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
923
guard(mutex)(&st->lock);
drivers/iio/adc/ad7606.c
927
if (st->sw_mode_en)
drivers/iio/adc/ad7606.c
929
ci = &st->chan_info[ch];
drivers/iio/adc/ad7606.c
939
ret = st->write_scale(indio_dev, ch, i + ci->reg_offset);
drivers/iio/adc/ad7606.c
949
i = find_closest(val, st->oversampling_avail,
drivers/iio/adc/ad7606.c
950
st->num_os_ratios);
drivers/iio/adc/ad7606.c
954
ret = st->write_os(indio_dev, i);
drivers/iio/adc/ad7606.c
958
st->oversampling = st->oversampling_avail[i];
drivers/iio/adc/ad7606.c
964
return ad7606_set_sampling_freq(st, val);
drivers/iio/adc/ad7606.c
968
ret = ad7606_set_calib_offset(st, chan->scan_index, val);
drivers/iio/adc/ad7606.c
974
ret = ad7606_set_calib_phase(st, chan->scan_index, val, val2);
drivers/iio/adc/ad7606.c
987
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606.c
988
const unsigned int *vals = st->oversampling_avail;
drivers/iio/adc/ad7606.c
992
for (i = 0; i < st->num_os_ratios; i++)
drivers/iio/adc/ad7606.h
206
int (*reg_read)(struct ad7606_state *st, unsigned int addr);
drivers/iio/adc/ad7606.h
207
int (*reg_write)(struct ad7606_state *st,
drivers/iio/adc/ad7606.h
228
int ad7606_reset(struct ad7606_state *st);
drivers/iio/adc/ad7606.h
229
int ad7606_pwm_set_swing(struct ad7606_state *st);
drivers/iio/adc/ad7606.h
230
int ad7606_pwm_set_low(struct ad7606_state *st);
drivers/iio/adc/ad7606_par.c
109
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606_par.c
124
if (st->gpio_frstdata) {
drivers/iio/adc/ad7606_par.c
125
insw((unsigned long)st->base_address, _buf, 1);
drivers/iio/adc/ad7606_par.c
126
if (!gpiod_get_value(st->gpio_frstdata)) {
drivers/iio/adc/ad7606_par.c
127
ad7606_reset(st);
drivers/iio/adc/ad7606_par.c
133
insw((unsigned long)st->base_address, _buf, num);
drivers/iio/adc/ad7606_par.c
145
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606_par.c
158
if (st->gpio_frstdata) {
drivers/iio/adc/ad7606_par.c
159
insb((unsigned long)st->base_address, _buf, 2);
drivers/iio/adc/ad7606_par.c
160
if (!gpiod_get_value(st->gpio_frstdata)) {
drivers/iio/adc/ad7606_par.c
161
ad7606_reset(st);
drivers/iio/adc/ad7606_par.c
167
insb((unsigned long)st->base_address, _buf, num * 2);
drivers/iio/adc/ad7606_par.c
26
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606_par.c
31
ret = iio_backend_chan_enable(st->back, c);
drivers/iio/adc/ad7606_par.c
33
ret = iio_backend_chan_disable(st->back, c);
drivers/iio/adc/ad7606_par.c
44
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606_par.c
52
st->back = devm_iio_backend_get(dev, NULL);
drivers/iio/adc/ad7606_par.c
53
if (IS_ERR(st->back))
drivers/iio/adc/ad7606_par.c
54
return PTR_ERR(st->back);
drivers/iio/adc/ad7606_par.c
57
if (!st->cnvst_pwm)
drivers/iio/adc/ad7606_par.c
58
return dev_err_probe(st->dev, -EINVAL,
drivers/iio/adc/ad7606_par.c
61
ret = devm_iio_backend_request_buffer(dev, st->back, indio_dev);
drivers/iio/adc/ad7606_par.c
65
ret = devm_iio_backend_enable(dev, st->back);
drivers/iio/adc/ad7606_par.c
70
ret = iio_backend_data_format_set(st->back, c, &data);
drivers/iio/adc/ad7606_par.c
78
static int ad7606_par_bus_reg_read(struct ad7606_state *st, unsigned int addr)
drivers/iio/adc/ad7606_par.c
80
struct ad7606_platform_data *pdata = st->dev->platform_data;
drivers/iio/adc/ad7606_par.c
83
ret = pdata->bus_reg_read(st->back, addr, &val);
drivers/iio/adc/ad7606_par.c
90
static int ad7606_par_bus_reg_write(struct ad7606_state *st, unsigned int addr,
drivers/iio/adc/ad7606_par.c
93
struct ad7606_platform_data *pdata = st->dev->platform_data;
drivers/iio/adc/ad7606_par.c
95
return pdata->bus_reg_write(st->back, addr, val);
drivers/iio/adc/ad7606_spi.c
100
static int ad7606_spi_reg_read(struct ad7606_state *st, unsigned int addr)
drivers/iio/adc/ad7606_spi.c
102
struct spi_device *spi = to_spi_device(st->dev);
drivers/iio/adc/ad7606_spi.c
105
.tx_buf = &st->d16[0],
drivers/iio/adc/ad7606_spi.c
109
.rx_buf = &st->d16[1],
drivers/iio/adc/ad7606_spi.c
115
st->d16[0] = cpu_to_be16(st->bops->rd_wr_cmd(addr, 0) << 8);
drivers/iio/adc/ad7606_spi.c
121
return be16_to_cpu(st->d16[1]);
drivers/iio/adc/ad7606_spi.c
124
static int ad7606_spi_reg_write(struct ad7606_state *st,
drivers/iio/adc/ad7606_spi.c
128
struct spi_device *spi = to_spi_device(st->dev);
drivers/iio/adc/ad7606_spi.c
130
st->d16[0] = cpu_to_be16((st->bops->rd_wr_cmd(addr, 1) << 8) |
drivers/iio/adc/ad7606_spi.c
133
return spi_write(spi, &st->d16[0], sizeof(st->d16[0]));
drivers/iio/adc/ad7606_spi.c
138
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606_spi.c
141
return st->bops->reg_write(st, AD7606_CONFIGURATION_REGISTER,
drivers/iio/adc/ad7606_spi.c
153
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606_spi.c
154
struct spi_bus_data *bus_data = st->bus_data;
drivers/iio/adc/ad7606_spi.c
156
struct spi_device *spi = to_spi_device(st->dev);
drivers/iio/adc/ad7606_spi.c
172
st->chip_info->num_adc_channels;
drivers/iio/adc/ad7606_spi.c
179
dev_err(st->dev, "failed to prepare offload, err: %d\n", ret);
drivers/iio/adc/ad7606_spi.c
189
ret = ad7606_pwm_set_swing(st);
drivers/iio/adc/ad7606_spi.c
207
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606_spi.c
208
struct spi_bus_data *bus_data = st->bus_data;
drivers/iio/adc/ad7606_spi.c
211
ret = ad7606_pwm_set_low(st);
drivers/iio/adc/ad7606_spi.c
276
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606_spi.c
283
.priv = st,
drivers/iio/adc/ad7606_spi.c
290
st->bus_data = bus_data;
drivers/iio/adc/ad7606_spi.c
328
st->offload_en = true;
drivers/iio/adc/ad7606_spi.c
336
struct ad7606_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7606_spi.c
338
if (st->offload_en) {
drivers/iio/adc/ad7606_spi.c
339
unsigned int num_adc_ch = st->chip_info->num_adc_channels;
drivers/iio/adc/ad7625.c
175
static int ad7625_set_sampling_freq(struct ad7625_state *st, u32 freq)
drivers/iio/adc/ad7625.c
188
cnv_wf.duty_length_ns = st->info->timing_spec->conv_high_ns;
drivers/iio/adc/ad7625.c
190
ret = pwm_round_waveform_might_sleep(st->cnv_pwm, &cnv_wf);
drivers/iio/adc/ad7625.c
201
st->info->chan_spec.scan_type.realbits,
drivers/iio/adc/ad7625.c
202
st->ref_clk_rate_hz);
drivers/iio/adc/ad7625.c
205
clk_gate_wf.duty_offset_ns = st->info->timing_spec->conv_msb_ns;
drivers/iio/adc/ad7625.c
207
ret = pwm_round_waveform_might_sleep(st->clk_gate_pwm, &clk_gate_wf);
drivers/iio/adc/ad7625.c
211
st->cnv_wf = cnv_wf;
drivers/iio/adc/ad7625.c
212
st->clk_gate_wf = clk_gate_wf;
drivers/iio/adc/ad7625.c
215
target = DIV_ROUND_CLOSEST(st->ref_clk_rate_hz, freq);
drivers/iio/adc/ad7625.c
216
st->sampling_freq_hz = DIV_ROUND_CLOSEST(st->ref_clk_rate_hz,
drivers/iio/adc/ad7625.c
226
struct ad7625_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7625.c
230
*val = st->sampling_freq_hz;
drivers/iio/adc/ad7625.c
235
*val = st->vref_mv;
drivers/iio/adc/ad7625.c
249
struct ad7625_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7625.c
256
ret = ad7625_set_sampling_freq(st, val);
drivers/iio/adc/ad7625.c
264
static int ad7625_parse_mode(struct device *dev, struct ad7625_state *st,
drivers/iio/adc/ad7625.c
278
st->en_gpios[i] = devm_gpiod_get_optional(dev, en_gpio_buf,
drivers/iio/adc/ad7625.c
280
if (IS_ERR(st->en_gpios[i]))
drivers/iio/adc/ad7625.c
281
return dev_err_probe(dev, PTR_ERR(st->en_gpios[i]),
drivers/iio/adc/ad7625.c
285
if (st->en_gpios[i] && en_always_on[i])
drivers/iio/adc/ad7625.c
290
en_may_be_on[i] = en_always_on[i] || st->en_gpios[i];
drivers/iio/adc/ad7625.c
291
en_always_off[i] = !en_always_on[i] && !st->en_gpios[i];
drivers/iio/adc/ad7625.c
298
st->can_power_down = en_may_be_off[1] && en_may_be_off[0] &&
drivers/iio/adc/ad7625.c
299
st->info->has_power_down_state;
drivers/iio/adc/ad7625.c
304
st->can_refin = en_may_be_off[1] && en_may_be_on[0];
drivers/iio/adc/ad7625.c
306
st->can_ref_4v096 = en_may_be_on[1] && en_may_be_off[0];
drivers/iio/adc/ad7625.c
322
st->can_ref_5v = st->can_refin;
drivers/iio/adc/ad7625.c
328
st->can_narrow_bandwidth = en_may_be_on[2];
drivers/iio/adc/ad7625.c
330
st->can_wide_bandwidth = en_may_be_off[2];
drivers/iio/adc/ad7625.c
332
st->can_snooze = en_may_be_on[1] && en_may_be_on[0];
drivers/iio/adc/ad7625.c
334
st->can_test_pattern = en_may_be_off[3] && en_may_be_on[2] &&
drivers/iio/adc/ad7625.c
341
static void ad7625_set_en_gpios_for_vref(struct ad7625_state *st,
drivers/iio/adc/ad7625.c
345
gpiod_set_value_cansleep(st->en_gpios[1], 0);
drivers/iio/adc/ad7625.c
346
gpiod_set_value_cansleep(st->en_gpios[0], 1);
drivers/iio/adc/ad7625.c
348
gpiod_set_value_cansleep(st->en_gpios[1], 1);
drivers/iio/adc/ad7625.c
349
gpiod_set_value_cansleep(st->en_gpios[0], 0);
drivers/iio/adc/ad7625.c
355
gpiod_set_value_cansleep(st->en_gpios[1], 1);
drivers/iio/adc/ad7625.c
356
gpiod_set_value_cansleep(st->en_gpios[0], 1);
drivers/iio/adc/ad7625.c
360
static int ad7960_set_mode(struct ad7625_state *st, enum ad7960_mode mode,
drivers/iio/adc/ad7625.c
365
if (!st->can_power_down)
drivers/iio/adc/ad7625.c
368
gpiod_set_value_cansleep(st->en_gpios[2], 0);
drivers/iio/adc/ad7625.c
369
gpiod_set_value_cansleep(st->en_gpios[1], 0);
drivers/iio/adc/ad7625.c
370
gpiod_set_value_cansleep(st->en_gpios[0], 0);
drivers/iio/adc/ad7625.c
375
if (!st->can_snooze)
drivers/iio/adc/ad7625.c
378
gpiod_set_value_cansleep(st->en_gpios[1], 1);
drivers/iio/adc/ad7625.c
379
gpiod_set_value_cansleep(st->en_gpios[0], 1);
drivers/iio/adc/ad7625.c
384
if (!st->can_narrow_bandwidth)
drivers/iio/adc/ad7625.c
387
gpiod_set_value_cansleep(st->en_gpios[2], 1);
drivers/iio/adc/ad7625.c
388
ad7625_set_en_gpios_for_vref(st, have_refin, ref_mv);
drivers/iio/adc/ad7625.c
393
if (!st->can_wide_bandwidth)
drivers/iio/adc/ad7625.c
396
gpiod_set_value_cansleep(st->en_gpios[2], 0);
drivers/iio/adc/ad7625.c
397
ad7625_set_en_gpios_for_vref(st, have_refin, ref_mv);
drivers/iio/adc/ad7625.c
402
if (!st->can_test_pattern)
drivers/iio/adc/ad7625.c
405
gpiod_set_value_cansleep(st->en_gpios[3], 0);
drivers/iio/adc/ad7625.c
406
gpiod_set_value_cansleep(st->en_gpios[2], 1);
drivers/iio/adc/ad7625.c
407
gpiod_set_value_cansleep(st->en_gpios[1], 0);
drivers/iio/adc/ad7625.c
408
gpiod_set_value_cansleep(st->en_gpios[0], 0);
drivers/iio/adc/ad7625.c
419
struct ad7625_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7625.c
422
ret = pwm_set_waveform_might_sleep(st->cnv_pwm, &st->cnv_wf, false);
drivers/iio/adc/ad7625.c
426
ret = pwm_set_waveform_might_sleep(st->clk_gate_pwm,
drivers/iio/adc/ad7625.c
427
&st->clk_gate_wf, false);
drivers/iio/adc/ad7625.c
430
pwm_disable(st->cnv_pwm);
drivers/iio/adc/ad7625.c
439
struct ad7625_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7625.c
441
pwm_disable(st->clk_gate_pwm);
drivers/iio/adc/ad7625.c
442
pwm_disable(st->cnv_pwm);
drivers/iio/adc/ad7625.c
458
struct ad7625_state *st)
drivers/iio/adc/ad7625.c
463
st->cnv_pwm = devm_pwm_get(dev, "cnv");
drivers/iio/adc/ad7625.c
464
if (IS_ERR(st->cnv_pwm))
drivers/iio/adc/ad7625.c
465
return dev_err_probe(dev, PTR_ERR(st->cnv_pwm),
drivers/iio/adc/ad7625.c
469
pwm_disable(st->cnv_pwm);
drivers/iio/adc/ad7625.c
471
st->clk_gate_pwm = devm_pwm_get(dev, "clk_gate");
drivers/iio/adc/ad7625.c
472
if (IS_ERR(st->clk_gate_pwm))
drivers/iio/adc/ad7625.c
473
return dev_err_probe(dev, PTR_ERR(st->clk_gate_pwm),
drivers/iio/adc/ad7625.c
477
pwm_disable(st->clk_gate_pwm);
drivers/iio/adc/ad7625.c
489
st->ref_clk_rate_hz = ref_clk_rate_hz;
drivers/iio/adc/ad7625.c
510
struct ad7625_state *st)
drivers/iio/adc/ad7625.c
530
st->have_refin = ret != -ENODEV;
drivers/iio/adc/ad7625.c
532
if (st->have_refin && !st->can_refin)
drivers/iio/adc/ad7625.c
536
if (!st->info->has_internal_vref && !st->have_refin && !ref_mv)
drivers/iio/adc/ad7625.c
540
if (st->have_refin && ref_mv)
drivers/iio/adc/ad7625.c
544
if (ref_mv == 4096 && !st->can_ref_4v096)
drivers/iio/adc/ad7625.c
548
if (ref_mv == 5000 && !st->can_ref_5v)
drivers/iio/adc/ad7625.c
552
st->vref_mv = ref_mv ?: AD7625_INTERNAL_REF_MV;
drivers/iio/adc/ad7625.c
561
struct ad7625_state *st;
drivers/iio/adc/ad7625.c
565
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7625.c
569
st = iio_priv(indio_dev);
drivers/iio/adc/ad7625.c
571
st->info = device_get_match_data(dev);
drivers/iio/adc/ad7625.c
572
if (!st->info)
drivers/iio/adc/ad7625.c
579
if (st->info->has_bandwidth_control)
drivers/iio/adc/ad7625.c
580
ret = ad7625_parse_mode(dev, st, 4);
drivers/iio/adc/ad7625.c
582
ret = ad7625_parse_mode(dev, st, 2);
drivers/iio/adc/ad7625.c
587
ret = devm_ad7625_regulator_setup(dev, st);
drivers/iio/adc/ad7625.c
592
if (!st->info->has_bandwidth_control) {
drivers/iio/adc/ad7625.c
593
ad7625_set_en_gpios_for_vref(st, st->have_refin, st->vref_mv);
drivers/iio/adc/ad7625.c
599
if (st->can_wide_bandwidth) {
drivers/iio/adc/ad7625.c
600
ret = ad7960_set_mode(st, AD7960_MODE_WIDE_BANDWIDTH,
drivers/iio/adc/ad7625.c
601
st->have_refin, st->vref_mv);
drivers/iio/adc/ad7625.c
602
} else if (st->can_narrow_bandwidth) {
drivers/iio/adc/ad7625.c
603
ret = ad7960_set_mode(st, AD7960_MODE_NARROW_BANDWIDTH,
drivers/iio/adc/ad7625.c
604
st->have_refin, st->vref_mv);
drivers/iio/adc/ad7625.c
615
ret = devm_ad7625_pwm_get(dev, st);
drivers/iio/adc/ad7625.c
619
indio_dev->channels = &st->info->chan_spec;
drivers/iio/adc/ad7625.c
621
indio_dev->name = st->info->name;
drivers/iio/adc/ad7625.c
625
st->back = devm_iio_backend_get(dev, NULL);
drivers/iio/adc/ad7625.c
626
if (IS_ERR(st->back))
drivers/iio/adc/ad7625.c
627
return dev_err_probe(dev, PTR_ERR(st->back),
drivers/iio/adc/ad7625.c
630
ret = devm_iio_backend_request_buffer(dev, st->back, indio_dev);
drivers/iio/adc/ad7625.c
634
ret = devm_iio_backend_enable(dev, st->back);
drivers/iio/adc/ad7625.c
643
default_sample_freq = st->info->max_sample_freq_hz;
drivers/iio/adc/ad7625.c
644
if (st->info->has_bandwidth_control && !st->can_wide_bandwidth)
drivers/iio/adc/ad7625.c
647
ret = ad7625_set_sampling_freq(st, default_sample_freq);
drivers/iio/adc/ad7768-1.c
1002
if (st->chip->has_pga) {
drivers/iio/adc/ad7768-1.c
1003
guard(mutex)(&st->pga_lock);
drivers/iio/adc/ad7768-1.c
1005
*val = st->scale_tbl[st->pga_gain_mode][0];
drivers/iio/adc/ad7768-1.c
1006
*val2 = st->scale_tbl[st->pga_gain_mode][1];
drivers/iio/adc/ad7768-1.c
1010
temp = (st->vref_uv * 2) / 1000;
drivers/iio/adc/ad7768-1.c
1011
if (st->chip->has_variable_aaf)
drivers/iio/adc/ad7768-1.c
1012
temp = (temp * PERMYRIAD) / ad7768_aaf_gains_bp[st->aaf_gain];
drivers/iio/adc/ad7768-1.c
1020
*val = st->samp_freq;
drivers/iio/adc/ad7768-1.c
1025
*val = st->oversampling_ratio;
drivers/iio/adc/ad7768-1.c
1030
temp = st->samp_freq * ad7768_filter_3db_odr_multiplier[st->filter_type];
drivers/iio/adc/ad7768-1.c
1044
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1053
if (st->filter_type == AD7768_FILTER_SINC3 ||
drivers/iio/adc/ad7768-1.c
1054
st->filter_type == AD7768_FILTER_SINC3_REJ60) {
drivers/iio/adc/ad7768-1.c
1060
shift = st->filter_type == AD7768_FILTER_SINC5 ? 0 : 2;
drivers/iio/adc/ad7768-1.c
1066
*vals = (int *)st->samp_freq_avail;
drivers/iio/adc/ad7768-1.c
1067
*length = st->samp_freq_avail_len;
drivers/iio/adc/ad7768-1.c
1071
*vals = (int *)st->scale_tbl;
drivers/iio/adc/ad7768-1.c
1072
*length = st->chip->num_pga_modes * 2;
drivers/iio/adc/ad7768-1.c
1095
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1108
ret = ad7768_set_freq(st, val);
drivers/iio/adc/ad7768-1.c
1121
if (!st->chip->has_pga)
drivers/iio/adc/ad7768-1.c
1125
gain_mode = ad7768_calc_pga_gain(st, val, val2,
drivers/iio/adc/ad7768-1.c
1128
gain_mode = ad7768_calc_pga_gain(st, val, val2,
drivers/iio/adc/ad7768-1.c
1131
return ad7768_set_pga_gain(st, gain_mode);
drivers/iio/adc/ad7768-1.c
1141
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1143
return sysfs_emit(label, "%s\n", st->labels[chan->channel]);
drivers/iio/adc/ad7768-1.c
1149
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1151
if (st->offload)
drivers/iio/adc/ad7768-1.c
1152
return st->oversampling_ratio == 8 ?
drivers/iio/adc/ad7768-1.c
1155
return st->oversampling_ratio == 8 ?
drivers/iio/adc/ad7768-1.c
1184
struct ad7768_state *st)
drivers/iio/adc/ad7768-1.c
1199
st->gpio_sync_in = devm_fwnode_gpiod_get_index(dev, ref, NULL, 0,
drivers/iio/adc/ad7768-1.c
1202
return PTR_ERR_OR_ZERO(st->gpio_sync_in);
drivers/iio/adc/ad7768-1.c
1216
struct ad7768_state *st)
drivers/iio/adc/ad7768-1.c
1228
return ad7768_trigger_sources_sync_setup(dev, fwnode, st);
drivers/iio/adc/ad7768-1.c
1234
st->en_spi_sync = true;
drivers/iio/adc/ad7768-1.c
1241
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1244
st->gpio_reset = devm_gpiod_get_optional(&st->spi->dev, "reset",
drivers/iio/adc/ad7768-1.c
1246
if (IS_ERR(st->gpio_reset))
drivers/iio/adc/ad7768-1.c
1247
return PTR_ERR(st->gpio_reset);
drivers/iio/adc/ad7768-1.c
1249
if (st->gpio_reset) {
drivers/iio/adc/ad7768-1.c
1251
gpiod_set_value_cansleep(st->gpio_reset, 0);
drivers/iio/adc/ad7768-1.c
1260
ret = regmap_write(st->regmap, AD7768_REG_SYNC_RESET, 0x3);
drivers/iio/adc/ad7768-1.c
1264
ret = regmap_write(st->regmap, AD7768_REG_SYNC_RESET, 0x2);
drivers/iio/adc/ad7768-1.c
1269
ret = ad7768_set_mode(st, AD7768_CONTINUOUS);
drivers/iio/adc/ad7768-1.c
1274
st->gpio_sync_in = devm_gpiod_get_optional(&st->spi->dev, "adi,sync-in",
drivers/iio/adc/ad7768-1.c
1276
if (IS_ERR(st->gpio_sync_in))
drivers/iio/adc/ad7768-1.c
1277
return PTR_ERR(st->gpio_sync_in);
drivers/iio/adc/ad7768-1.c
1283
if (!st->gpio_sync_in) {
drivers/iio/adc/ad7768-1.c
1284
ret = ad7768_trigger_sources_get_sync(&st->spi->dev, st);
drivers/iio/adc/ad7768-1.c
1290
if (device_property_read_bool(&st->spi->dev, "gpio-controller")) {
drivers/iio/adc/ad7768-1.c
1305
return ad7768_set_freq(st, 32000);
drivers/iio/adc/ad7768-1.c
1312
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1320
ret = spi_read(st->spi, &st->data.scan.chan,
drivers/iio/adc/ad7768-1.c
1325
iio_push_to_buffers_with_ts(indio_dev, &st->data.scan,
drivers/iio/adc/ad7768-1.c
1326
sizeof(st->data.scan),
drivers/iio/adc/ad7768-1.c
1338
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1341
iio_trigger_poll(st->trig);
drivers/iio/adc/ad7768-1.c
1343
complete(&st->completion);
drivers/iio/adc/ad7768-1.c
1350
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1357
return regmap_write(st->regmap, AD7768_REG_INTERFACE_FORMAT, 0x01);
drivers/iio/adc/ad7768-1.c
1362
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1369
return regmap_read(st->regmap24, AD7768_REG24_ADC_DATA, &unused);
drivers/iio/adc/ad7768-1.c
1379
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1391
st->offload_xfer.len = spi_bpw_to_bytes(scan_type->realbits);
drivers/iio/adc/ad7768-1.c
1392
st->offload_xfer.bits_per_word = scan_type->realbits;
drivers/iio/adc/ad7768-1.c
1393
st->offload_xfer.offload_flags = SPI_OFFLOAD_XFER_RX_STREAM;
drivers/iio/adc/ad7768-1.c
1395
spi_message_init_with_transfers(&st->offload_msg, &st->offload_xfer, 1);
drivers/iio/adc/ad7768-1.c
1396
st->offload_msg.offload = st->offload;
drivers/iio/adc/ad7768-1.c
1398
ret = spi_optimize_message(st->spi, &st->offload_msg);
drivers/iio/adc/ad7768-1.c
1400
dev_err(&st->spi->dev, "failed to prepare offload, err: %d\n", ret);
drivers/iio/adc/ad7768-1.c
1409
ret = regmap_write(st->regmap, AD7768_REG_INTERFACE_FORMAT, 0x01);
drivers/iio/adc/ad7768-1.c
1413
ret = spi_offload_trigger_enable(st->offload, st->offload_trigger,
drivers/iio/adc/ad7768-1.c
1421
regmap_read(st->regmap24, AD7768_REG24_ADC_DATA, &unused);
drivers/iio/adc/ad7768-1.c
1424
spi_unoptimize_message(&st->offload_msg);
drivers/iio/adc/ad7768-1.c
1431
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1434
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/adc/ad7768-1.c
1435
spi_unoptimize_message(&st->offload_msg);
drivers/iio/adc/ad7768-1.c
1441
return regmap_read(st->regmap24, AD7768_REG24_ADC_DATA, &unused);
drivers/iio/adc/ad7768-1.c
1452
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1455
enable_irq(st->spi->irq);
drivers/iio/adc/ad7768-1.c
1457
disable_irq(st->spi->irq);
drivers/iio/adc/ad7768-1.c
1470
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1485
st->labels[crt_ch] = label;
drivers/iio/adc/ad7768-1.c
1493
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1496
st->trig = devm_iio_trigger_alloc(indio_dev->dev.parent, "%s-dev%d",
drivers/iio/adc/ad7768-1.c
1499
if (!st->trig)
drivers/iio/adc/ad7768-1.c
1502
st->trig->ops = &ad7768_trigger_ops;
drivers/iio/adc/ad7768-1.c
1503
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/iio/adc/ad7768-1.c
1504
ret = devm_iio_trigger_register(indio_dev->dev.parent, st->trig);
drivers/iio/adc/ad7768-1.c
1508
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/adc/ad7768-1.c
1519
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1526
regval = AD7768_REG_ANALOG2_VCM(st->vcm_output_sel + 1);
drivers/iio/adc/ad7768-1.c
1527
ret = regmap_update_bits(st->regmap, AD7768_REG_ANALOG2,
drivers/iio/adc/ad7768-1.c
1537
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1543
ret = regmap_update_bits(st->regmap, AD7768_REG_ANALOG2,
drivers/iio/adc/ad7768-1.c
1553
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1559
ret = regmap_read(st->regmap, AD7768_REG_ANALOG2, &val);
drivers/iio/adc/ad7768-1.c
1572
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1578
ret = regmap_update_bits(st->regmap, AD7768_REG_ANALOG2,
drivers/iio/adc/ad7768-1.c
1584
st->vcm_output_sel = selector;
drivers/iio/adc/ad7768-1.c
1592
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1598
ret = regmap_read(st->regmap, AD7768_REG_ANALOG2, &val);
drivers/iio/adc/ad7768-1.c
1638
struct ad7768_state *st,
drivers/iio/adc/ad7768-1.c
1648
ret = regmap_update_bits(st->regmap, AD7768_REG_ANALOG2,
drivers/iio/adc/ad7768-1.c
1653
st->vcm_rdev = devm_regulator_register(dev, &vcm_desc, &config);
drivers/iio/adc/ad7768-1.c
1654
if (IS_ERR(st->vcm_rdev))
drivers/iio/adc/ad7768-1.c
1655
return dev_err_probe(dev, PTR_ERR(st->vcm_rdev),
drivers/iio/adc/ad7768-1.c
1661
static int ad7768_parse_aaf_gain(struct device *dev, struct ad7768_state *st)
drivers/iio/adc/ad7768-1.c
1669
if (st->chip->has_variable_aaf)
drivers/iio/adc/ad7768-1.c
1670
st->aaf_gain = AD7768_AAF_IN1;
drivers/iio/adc/ad7768-1.c
1676
if (!st->chip->has_variable_aaf)
drivers/iio/adc/ad7768-1.c
1678
"AAF gain provided, but not supported for %s\n", st->chip->name);
drivers/iio/adc/ad7768-1.c
1682
st->aaf_gain = AD7768_AAF_IN1;
drivers/iio/adc/ad7768-1.c
1685
st->aaf_gain = AD7768_AAF_IN2;
drivers/iio/adc/ad7768-1.c
1688
st->aaf_gain = AD7768_AAF_IN3;
drivers/iio/adc/ad7768-1.c
1769
struct ad7768_state *st)
drivers/iio/adc/ad7768-1.c
1771
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad7768-1.c
1775
.priv = st,
drivers/iio/adc/ad7768-1.c
1784
st->offload_trigger = devm_spi_offload_trigger_get(dev, st->offload,
drivers/iio/adc/ad7768-1.c
1786
if (IS_ERR(st->offload_trigger))
drivers/iio/adc/ad7768-1.c
1787
return dev_err_probe(dev, PTR_ERR(st->offload_trigger),
drivers/iio/adc/ad7768-1.c
1790
rx_dma = devm_spi_offload_rx_stream_request_dma_chan(dev, st->offload);
drivers/iio/adc/ad7768-1.c
1806
struct ad7768_state *st;
drivers/iio/adc/ad7768-1.c
1811
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ad7768-1.c
1815
st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
1831
st->chip = spi_get_device_match_data(spi);
drivers/iio/adc/ad7768-1.c
1832
st->spi = spi;
drivers/iio/adc/ad7768-1.c
1834
st->regmap = devm_regmap_init_spi(spi, &ad7768_regmap_config);
drivers/iio/adc/ad7768-1.c
1835
if (IS_ERR(st->regmap))
drivers/iio/adc/ad7768-1.c
1836
return dev_err_probe(&spi->dev, PTR_ERR(st->regmap),
drivers/iio/adc/ad7768-1.c
1839
st->regmap24 = devm_regmap_init_spi(spi, &ad7768_regmap24_config);
drivers/iio/adc/ad7768-1.c
1840
if (IS_ERR(st->regmap24))
drivers/iio/adc/ad7768-1.c
1841
return dev_err_probe(&spi->dev, PTR_ERR(st->regmap24),
drivers/iio/adc/ad7768-1.c
1848
st->vref_uv = ret;
drivers/iio/adc/ad7768-1.c
1850
st->mclk = devm_clk_get_enabled(&spi->dev, "mclk");
drivers/iio/adc/ad7768-1.c
1851
if (IS_ERR(st->mclk))
drivers/iio/adc/ad7768-1.c
1852
return PTR_ERR(st->mclk);
drivers/iio/adc/ad7768-1.c
1854
st->mclk_freq = clk_get_rate(st->mclk);
drivers/iio/adc/ad7768-1.c
1856
indio_dev->channels = st->chip->channel_spec;
drivers/iio/adc/ad7768-1.c
1857
indio_dev->num_channels = st->chip->num_channels;
drivers/iio/adc/ad7768-1.c
1858
indio_dev->name = st->chip->name;
drivers/iio/adc/ad7768-1.c
1863
if (st->chip->has_vcm_regulator) {
drivers/iio/adc/ad7768-1.c
1864
ret = ad7768_register_vcm_regulator(&spi->dev, st, indio_dev);
drivers/iio/adc/ad7768-1.c
1869
ret = ad7768_parse_aaf_gain(&spi->dev, st);
drivers/iio/adc/ad7768-1.c
1877
init_completion(&st->completion);
drivers/iio/adc/ad7768-1.c
1878
ret = devm_mutex_init(&spi->dev, &st->pga_lock);
drivers/iio/adc/ad7768-1.c
1882
if (st->chip->has_pga) {
drivers/iio/adc/ad7768-1.c
1883
ret = ad7768_setup_pga(&spi->dev, st);
drivers/iio/adc/ad7768-1.c
1887
ret = ad7768_set_pga_gain(st, st->chip->default_pga_mode);
drivers/iio/adc/ad7768-1.c
1892
ret = ad7768_set_channel_label(indio_dev, st->chip->num_channels);
drivers/iio/adc/ad7768-1.c
1902
st->offload = devm_spi_offload_get(dev, spi, &ad7768_spi_offload_config);
drivers/iio/adc/ad7768-1.c
1903
ret = PTR_ERR_OR_ZERO(st->offload);
drivers/iio/adc/ad7768-1.c
1912
ret = ad7768_spi_offload_probe(indio_dev, st);
drivers/iio/adc/ad7768-1.c
417
static int ad7768_send_sync_pulse(struct ad7768_state *st)
drivers/iio/adc/ad7768-1.c
419
if (st->en_spi_sync)
drivers/iio/adc/ad7768-1.c
420
return regmap_write(st->regmap, AD7768_REG_SYNC_RESET, 0x00);
drivers/iio/adc/ad7768-1.c
431
gpiod_set_value_cansleep(st->gpio_sync_in, 1);
drivers/iio/adc/ad7768-1.c
433
gpiod_set_value_cansleep(st->gpio_sync_in, 0);
drivers/iio/adc/ad7768-1.c
438
static void ad7768_fill_samp_freq_tbl(struct ad7768_state *st)
drivers/iio/adc/ad7768-1.c
443
freq_filtered = DIV_ROUND_CLOSEST(st->mclk_freq, st->oversampling_ratio);
drivers/iio/adc/ad7768-1.c
450
st->samp_freq_avail[len++] = samp_freq_avail;
drivers/iio/adc/ad7768-1.c
453
st->samp_freq_avail_len = len;
drivers/iio/adc/ad7768-1.c
456
static int ad7768_set_mclk_div(struct ad7768_state *st, unsigned int mclk_div)
drivers/iio/adc/ad7768-1.c
469
return regmap_update_bits(st->regmap, AD7768_REG_POWER_CLOCK,
drivers/iio/adc/ad7768-1.c
474
static int ad7768_set_mode(struct ad7768_state *st,
drivers/iio/adc/ad7768-1.c
477
return regmap_update_bits(st->regmap, AD7768_REG_CONVERSION,
drivers/iio/adc/ad7768-1.c
483
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
486
reinit_completion(&st->completion);
drivers/iio/adc/ad7768-1.c
487
enable_irq(st->spi->irq);
drivers/iio/adc/ad7768-1.c
489
ret = wait_for_completion_timeout(&st->completion,
drivers/iio/adc/ad7768-1.c
491
disable_irq(st->spi->irq);
drivers/iio/adc/ad7768-1.c
495
ret = regmap_read(st->regmap24, AD7768_REG24_ADC_DATA, &readval);
drivers/iio/adc/ad7768-1.c
505
if (st->oversampling_ratio == 8)
drivers/iio/adc/ad7768-1.c
516
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
524
if (regmap_check_range_table(st->regmap, reg, &ad7768_regmap_rd_table))
drivers/iio/adc/ad7768-1.c
525
ret = regmap_read(st->regmap, reg, readval);
drivers/iio/adc/ad7768-1.c
527
if (regmap_check_range_table(st->regmap24, reg, &ad7768_regmap24_rd_table))
drivers/iio/adc/ad7768-1.c
528
ret = regmap_read(st->regmap24, reg, readval);
drivers/iio/adc/ad7768-1.c
531
if (regmap_check_range_table(st->regmap, reg, &ad7768_regmap_wr_table))
drivers/iio/adc/ad7768-1.c
532
ret = regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/ad7768-1.c
534
if (regmap_check_range_table(st->regmap24, reg, &ad7768_regmap24_wr_table))
drivers/iio/adc/ad7768-1.c
535
ret = regmap_write(st->regmap24, reg, writeval);
drivers/iio/adc/ad7768-1.c
546
struct ad7768_state *st = iio_priv(dev);
drivers/iio/adc/ad7768-1.c
555
dev_err(&st->spi->dev, "Failed to get scan type.\n");
drivers/iio/adc/ad7768-1.c
564
for (i = 0; i < st->chip->num_pga_modes; i++) {
drivers/iio/adc/ad7768-1.c
566
fract.numerator = st->chip->pga_gains[i];
drivers/iio/adc/ad7768-1.c
568
if (st->chip->has_variable_aaf) {
drivers/iio/adc/ad7768-1.c
569
fract.numerator *= ad7768_aaf_gains_bp[st->aaf_gain];
drivers/iio/adc/ad7768-1.c
576
val = mult_frac(st->vref_uv, d, n);
drivers/iio/adc/ad7768-1.c
580
st->scale_tbl[i][0] = tmp0; /* Integer part */
drivers/iio/adc/ad7768-1.c
581
st->scale_tbl[i][1] = abs(tmp1); /* Fractional part */
drivers/iio/adc/ad7768-1.c
587
static int ad7768_set_sinc3_dec_rate(struct ad7768_state *st,
drivers/iio/adc/ad7768-1.c
600
max_dec_rate = st->mclk_freq / 100;
drivers/iio/adc/ad7768-1.c
616
ret = regmap_bulk_write(st->regmap, AD7768_REG_SINC3_DEC_RATE_MSB,
drivers/iio/adc/ad7768-1.c
621
st->oversampling_ratio = (dec_rate + 1) * 32;
drivers/iio/adc/ad7768-1.c
630
struct ad7768_state *st = iio_priv(dev);
drivers/iio/adc/ad7768-1.c
670
ret = regmap_write(st->regmap, AD7768_REG_DIGITAL_FILTER, dig_filter_regval);
drivers/iio/adc/ad7768-1.c
674
st->filter_type = filter_type;
drivers/iio/adc/ad7768-1.c
681
ret = ad7768_set_sinc3_dec_rate(st, dec_rate);
drivers/iio/adc/ad7768-1.c
685
st->oversampling_ratio = ad7768_dec_rate_values[dec_rate_idx];
drivers/iio/adc/ad7768-1.c
693
ad7768_fill_samp_freq_tbl(st);
drivers/iio/adc/ad7768-1.c
696
return ad7768_send_sync_pulse(st);
drivers/iio/adc/ad7768-1.c
699
static int ad7768_setup_pga(struct device *dev, struct ad7768_state *st)
drivers/iio/adc/ad7768-1.c
701
st->pga_gpios = devm_gpiod_get_array(dev, "pga", GPIOD_OUT_LOW);
drivers/iio/adc/ad7768-1.c
702
if (IS_ERR(st->pga_gpios))
drivers/iio/adc/ad7768-1.c
703
return dev_err_probe(dev, PTR_ERR(st->pga_gpios),
drivers/iio/adc/ad7768-1.c
706
if (st->pga_gpios->ndescs != ADAQ7768_PGA_PINS)
drivers/iio/adc/ad7768-1.c
713
static int ad7768_calc_pga_gain(struct ad7768_state *st, int gain_int,
drivers/iio/adc/ad7768-1.c
722
gain_nano = DIV_ROUND_CLOSEST(st->vref_uv, tmp);
drivers/iio/adc/ad7768-1.c
723
if (st->chip->has_variable_aaf)
drivers/iio/adc/ad7768-1.c
725
ad7768_aaf_gains_bp[st->aaf_gain]);
drivers/iio/adc/ad7768-1.c
727
return find_closest(gain_nano, st->chip->pga_gains,
drivers/iio/adc/ad7768-1.c
728
(int)st->chip->num_pga_modes);
drivers/iio/adc/ad7768-1.c
731
static int ad7768_set_pga_gain(struct ad7768_state *st,
drivers/iio/adc/ad7768-1.c
734
int pgia_pins_value = abs(gain_mode - st->chip->pgia_mode2pin_offset);
drivers/iio/adc/ad7768-1.c
738
guard(mutex)(&st->pga_lock);
drivers/iio/adc/ad7768-1.c
741
ret = gpiod_multi_set_value_cansleep(st->pga_gpios, bitmap);
drivers/iio/adc/ad7768-1.c
745
st->pga_gain_mode = gain_mode;
drivers/iio/adc/ad7768-1.c
753
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
759
ret = regmap_clear_bits(st->regmap, AD7768_REG_GPIO_CONTROL,
drivers/iio/adc/ad7768-1.c
770
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
776
ret = regmap_set_bits(st->regmap, AD7768_REG_GPIO_CONTROL,
drivers/iio/adc/ad7768-1.c
786
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
793
ret = regmap_read(st->regmap, AD7768_REG_GPIO_CONTROL, &val);
drivers/iio/adc/ad7768-1.c
803
ret = regmap_read(st->regmap, AD7768_REG_GPIO_WRITE, &val);
drivers/iio/adc/ad7768-1.c
805
ret = regmap_read(st->regmap, AD7768_REG_GPIO_READ, &val);
drivers/iio/adc/ad7768-1.c
819
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
826
ret = regmap_read(st->regmap, AD7768_REG_GPIO_CONTROL, &val);
drivers/iio/adc/ad7768-1.c
831
ret = regmap_assign_bits(st->regmap, AD7768_REG_GPIO_WRITE,
drivers/iio/adc/ad7768-1.c
842
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7768-1.c
845
ret = regmap_write(st->regmap, AD7768_REG_GPIO_CONTROL,
drivers/iio/adc/ad7768-1.c
850
st->gpiochip = (struct gpio_chip) {
drivers/iio/adc/ad7768-1.c
854
.parent = &st->spi->dev,
drivers/iio/adc/ad7768-1.c
863
return devm_gpiochip_add_data(&st->spi->dev, &st->gpiochip, indio_dev);
drivers/iio/adc/ad7768-1.c
866
static int ad7768_set_freq(struct ad7768_state *st,
drivers/iio/adc/ad7768-1.c
874
mclk_div = DIV_ROUND_CLOSEST(st->mclk_freq, freq * st->oversampling_ratio);
drivers/iio/adc/ad7768-1.c
879
ret = ad7768_set_mclk_div(st, idx);
drivers/iio/adc/ad7768-1.c
883
st->samp_freq = DIV_ROUND_CLOSEST(st->mclk_freq,
drivers/iio/adc/ad7768-1.c
884
ad7768_mclk_div_rates[idx] * st->oversampling_ratio);
drivers/iio/adc/ad7768-1.c
887
return ad7768_send_sync_pulse(st);
drivers/iio/adc/ad7768-1.c
894
struct ad7768_state *st = iio_priv(dev);
drivers/iio/adc/ad7768-1.c
897
ret = ad7768_configure_dig_fil(dev, filter, st->oversampling_ratio);
drivers/iio/adc/ad7768-1.c
902
return ad7768_set_freq(st, st->samp_freq);
drivers/iio/adc/ad7768-1.c
908
struct ad7768_state *st = iio_priv(dev);
drivers/iio/adc/ad7768-1.c
912
ret = regmap_read(st->regmap, AD7768_REG_DIGITAL_FILTER, &mode);
drivers/iio/adc/ad7768-1.c
923
struct ad7768_state *st = iio_priv(dev);
drivers/iio/adc/ad7768-1.c
926
ret = ad7768_configure_dig_fil(dev, st->filter_type, dec_rate);
drivers/iio/adc/ad7768-1.c
931
return ad7768_set_freq(st, st->samp_freq);
drivers/iio/adc/ad7768-1.c
979
struct ad7768_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
172
static int ad7779_spi_read(struct ad7779_state *st, u8 reg, u8 *rbuf)
drivers/iio/adc/ad7779.c
178
.tx_buf = st->reg_tx_buf,
drivers/iio/adc/ad7779.c
179
.rx_buf = st->reg_rx_buf,
drivers/iio/adc/ad7779.c
182
st->reg_tx_buf[0] = AD7779_SPI_READ_CMD | FIELD_GET(AD7779_REG_MSK, reg);
drivers/iio/adc/ad7779.c
183
st->reg_tx_buf[1] = 0;
drivers/iio/adc/ad7779.c
189
st->reg_tx_buf[2] = crc8(ad7779_crc8_table, st->reg_tx_buf,
drivers/iio/adc/ad7779.c
193
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/adc/ad7779.c
198
crc_buf[1] = st->reg_rx_buf[1];
drivers/iio/adc/ad7779.c
200
if (reg != AD7779_REG_GEN_ERR_REG_1_EN && exp_crc != st->reg_rx_buf[2]) {
drivers/iio/adc/ad7779.c
201
dev_err(&st->spi->dev, "Bad CRC %x, expected %x",
drivers/iio/adc/ad7779.c
202
st->reg_rx_buf[2], exp_crc);
drivers/iio/adc/ad7779.c
205
*rbuf = st->reg_rx_buf[1];
drivers/iio/adc/ad7779.c
210
static int ad7779_spi_write(struct ad7779_state *st, u8 reg, u8 val)
drivers/iio/adc/ad7779.c
214
st->reg_tx_buf[0] = FIELD_GET(AD7779_REG_MSK, reg);
drivers/iio/adc/ad7779.c
215
st->reg_tx_buf[1] = val;
drivers/iio/adc/ad7779.c
219
st->reg_tx_buf[2] = crc8(ad7779_crc8_table, st->reg_tx_buf,
drivers/iio/adc/ad7779.c
222
return spi_write(st->spi, st->reg_tx_buf, length);
drivers/iio/adc/ad7779.c
225
static int ad7779_spi_write_mask(struct ad7779_state *st, u8 reg, u8 mask,
drivers/iio/adc/ad7779.c
231
ret = ad7779_spi_read(st, reg, &data);
drivers/iio/adc/ad7779.c
240
return ad7779_spi_write(st, reg, regval);
drivers/iio/adc/ad7779.c
248
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
253
ret = ad7779_spi_read(st, reg, &rval);
drivers/iio/adc/ad7779.c
258
return ad7779_spi_write(st, reg, writeval);
drivers/iio/adc/ad7779.c
261
static int ad7779_set_sampling_frequency(struct ad7779_state *st,
drivers/iio/adc/ad7779.c
271
if (st->filter_enabled == AD7779_SINC3 &&
drivers/iio/adc/ad7779.c
275
if (st->filter_enabled == AD7779_SINC5 &&
drivers/iio/adc/ad7779.c
288
ret = ad7779_spi_write(st, AD7779_REG_SRC_N_MSB,
drivers/iio/adc/ad7779.c
292
ret = ad7779_spi_write(st, AD7779_REG_SRC_N_LSB,
drivers/iio/adc/ad7779.c
306
ret = ad7779_spi_write(st, AD7779_REG_SRC_N_MSB,
drivers/iio/adc/ad7779.c
310
ret = ad7779_spi_write(st, AD7779_REG_SRC_N_LSB,
drivers/iio/adc/ad7779.c
315
ret = ad7779_spi_write(st, AD7779_REG_SRC_N_MSB,
drivers/iio/adc/ad7779.c
319
ret = ad7779_spi_write(st, AD7779_REG_SRC_N_LSB,
drivers/iio/adc/ad7779.c
324
ret = ad7779_spi_write(st, AD7779_REG_SRC_UPDATE, BIT(0));
drivers/iio/adc/ad7779.c
331
ret = ad7779_spi_write(st, AD7779_REG_SRC_UPDATE, 0x0);
drivers/iio/adc/ad7779.c
338
st->sampling_freq = sampling_freq;
drivers/iio/adc/ad7779.c
346
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
350
ret = ad7779_spi_read(st, AD7779_REG_GENERAL_USER_CONFIG_2, &temp);
drivers/iio/adc/ad7779.c
361
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
364
ret = ad7779_spi_write_mask(st,
drivers/iio/adc/ad7779.c
371
ret = ad7779_set_sampling_frequency(st, st->sampling_freq);
drivers/iio/adc/ad7779.c
375
st->filter_enabled = mode;
drivers/iio/adc/ad7779.c
380
static int ad7779_get_calibscale(struct ad7779_state *st, int channel)
drivers/iio/adc/ad7779.c
385
ret = ad7779_spi_read(st, AD7779_REG_CH_GAIN_LOWER_BYTE(channel),
drivers/iio/adc/ad7779.c
390
ret = ad7779_spi_read(st, AD7779_REG_CH_GAIN_MID_BYTE(channel),
drivers/iio/adc/ad7779.c
395
ret = ad7779_spi_read(st, AD7779_REG_CH_GAIN_UPPER_BYTE(channel),
drivers/iio/adc/ad7779.c
403
static int ad7779_set_calibscale(struct ad7779_state *st, int channel, int val)
drivers/iio/adc/ad7779.c
414
ret = ad7779_spi_write(st, AD7779_REG_CH_GAIN_UPPER_BYTE(channel),
drivers/iio/adc/ad7779.c
419
ret = ad7779_spi_write(st, AD7779_REG_CH_GAIN_MID_BYTE(channel),
drivers/iio/adc/ad7779.c
424
return ad7779_spi_write(st, AD7779_REG_CH_GAIN_LOWER_BYTE(channel),
drivers/iio/adc/ad7779.c
428
static int ad7779_get_calibbias(struct ad7779_state *st, int channel)
drivers/iio/adc/ad7779.c
433
ret = ad7779_spi_read(st, AD7779_REG_CH_OFFSET_LOWER_BYTE(channel),
drivers/iio/adc/ad7779.c
438
ret = ad7779_spi_read(st, AD7779_REG_CH_OFFSET_MID_BYTE(channel),
drivers/iio/adc/ad7779.c
443
ret = ad7779_spi_read(st, AD7779_REG_CH_OFFSET_UPPER_BYTE(channel),
drivers/iio/adc/ad7779.c
451
static int ad7779_set_calibbias(struct ad7779_state *st, int channel, int val)
drivers/iio/adc/ad7779.c
457
ret = ad7779_spi_write(st, AD7779_REG_CH_OFFSET_UPPER_BYTE(channel),
drivers/iio/adc/ad7779.c
462
ret = ad7779_spi_write(st, AD7779_REG_CH_OFFSET_MID_BYTE(channel),
drivers/iio/adc/ad7779.c
467
return ad7779_spi_write(st, AD7779_REG_CH_OFFSET_LOWER_BYTE(channel),
drivers/iio/adc/ad7779.c
475
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
480
ret = ad7779_get_calibscale(st, chan->channel);
drivers/iio/adc/ad7779.c
487
ret = ad7779_get_calibbias(st, chan->channel);
drivers/iio/adc/ad7779.c
493
*val = st->sampling_freq;
drivers/iio/adc/ad7779.c
521
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
525
return ad7779_set_calibscale(st, chan->channel, val2);
drivers/iio/adc/ad7779.c
527
return ad7779_set_calibbias(st, chan->channel, val);
drivers/iio/adc/ad7779.c
529
return ad7779_set_sampling_frequency(st, val);
drivers/iio/adc/ad7779.c
552
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
554
ret = ad7779_spi_write_mask(st,
drivers/iio/adc/ad7779.c
565
enable_irq(st->spi->irq);
drivers/iio/adc/ad7779.c
572
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
574
disable_irq(st->spi->irq);
drivers/iio/adc/ad7779.c
576
return ad7779_spi_write(st, AD7779_REG_GENERAL_USER_CONFIG_3,
drivers/iio/adc/ad7779.c
584
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
587
.rx_buf = st->data.chans,
drivers/iio/adc/ad7779.c
588
.tx_buf = st->spidata_tx,
drivers/iio/adc/ad7779.c
592
st->spidata_tx[0] = AD7779_SPI_READ_CMD;
drivers/iio/adc/ad7779.c
593
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/adc/ad7779.c
595
dev_err(&st->spi->dev, "SPI transfer error in IRQ handler");
drivers/iio/adc/ad7779.c
599
iio_push_to_buffers_with_ts(indio_dev, &st->data, sizeof(st->data),
drivers/iio/adc/ad7779.c
609
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
612
.tx_buf = st->reset_buf,
drivers/iio/adc/ad7779.c
622
memset(st->reset_buf, 0xff, sizeof(st->reset_buf));
drivers/iio/adc/ad7779.c
623
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/adc/ad7779.c
637
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
643
ret = iio_backend_chan_enable(st->back, c);
drivers/iio/adc/ad7779.c
645
ret = iio_backend_chan_disable(st->back, c);
drivers/iio/adc/ad7779.c
737
static int ad7779_conf(struct ad7779_state *st, struct gpio_desc *start_gpio)
drivers/iio/adc/ad7779.c
741
ret = ad7779_spi_write_mask(st, AD7779_REG_GEN_ERR_REG_1_EN,
drivers/iio/adc/ad7779.c
747
ret = ad7779_spi_write_mask(st, AD7779_REG_GENERAL_USER_CONFIG_1,
drivers/iio/adc/ad7779.c
753
ret = ad7779_spi_write_mask(st, AD7779_REG_DOUT_FORMAT,
drivers/iio/adc/ad7779.c
759
ret = ad7779_spi_write_mask(st, AD7779_REG_ADC_MUX_CONFIG,
drivers/iio/adc/ad7779.c
765
ret = ad7779_set_sampling_frequency(st, AD7779_DEFAULT_SAMPLING_FREQ);
drivers/iio/adc/ad7779.c
784
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
790
ret = ad7779_set_sampling_frequency(st, num_lanes * AD7779_DEFAULT_SAMPLING_1LINE);
drivers/iio/adc/ad7779.c
794
ret = iio_backend_num_lanes_set(st->back, num_lanes);
drivers/iio/adc/ad7779.c
798
return ad7779_spi_write_mask(st, AD7779_REG_DOUT_FORMAT,
drivers/iio/adc/ad7779.c
803
static int ad7779_setup_channels(struct iio_dev *indio_dev, const struct ad7779_state *st)
drivers/iio/adc/ad7779.c
806
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad7779.c
808
channels = devm_kmemdup_array(dev, st->chip_info->channels,
drivers/iio/adc/ad7779.c
823
static int ad7779_setup_without_backend(struct ad7779_state *st, struct iio_dev *indio_dev)
drivers/iio/adc/ad7779.c
826
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad7779.c
829
indio_dev->channels = st->chip_info->channels;
drivers/iio/adc/ad7779.c
832
st->trig = devm_iio_trigger_alloc(dev, "%s-dev%d", indio_dev->name,
drivers/iio/adc/ad7779.c
834
if (!st->trig)
drivers/iio/adc/ad7779.c
837
st->trig->ops = &ad7779_trigger_ops;
drivers/iio/adc/ad7779.c
839
iio_trigger_set_drvdata(st->trig, st);
drivers/iio/adc/ad7779.c
841
ret = devm_request_irq(dev, st->spi->irq, iio_trigger_generic_data_rdy_poll,
drivers/iio/adc/ad7779.c
843
st->trig);
drivers/iio/adc/ad7779.c
846
st->spi->irq);
drivers/iio/adc/ad7779.c
848
ret = devm_iio_trigger_register(dev, st->trig);
drivers/iio/adc/ad7779.c
852
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/adc/ad7779.c
854
init_completion(&st->completion);
drivers/iio/adc/ad7779.c
863
return ad7779_spi_write_mask(st, AD7779_REG_DOUT_FORMAT,
drivers/iio/adc/ad7779.c
868
static int ad7779_setup_backend(struct ad7779_state *st, struct iio_dev *indio_dev)
drivers/iio/adc/ad7779.c
870
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad7779.c
876
ret = ad7779_setup_channels(indio_dev, st);
drivers/iio/adc/ad7779.c
880
st->back = devm_iio_backend_get(dev, NULL);
drivers/iio/adc/ad7779.c
881
if (IS_ERR(st->back))
drivers/iio/adc/ad7779.c
882
return dev_err_probe(dev, PTR_ERR(st->back),
drivers/iio/adc/ad7779.c
885
ret = devm_iio_backend_request_buffer(dev, st->back, indio_dev);
drivers/iio/adc/ad7779.c
889
ret = devm_iio_backend_enable(dev, st->back);
drivers/iio/adc/ad7779.c
904
struct ad7779_state *st;
drivers/iio/adc/ad7779.c
909
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7779.c
913
st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
922
st->mclk = devm_clk_get_enabled(dev, "mclk");
drivers/iio/adc/ad7779.c
923
if (IS_ERR(st->mclk))
drivers/iio/adc/ad7779.c
924
return PTR_ERR(st->mclk);
drivers/iio/adc/ad7779.c
935
st->spi = spi;
drivers/iio/adc/ad7779.c
937
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/adc/ad7779.c
938
if (!st->chip_info)
drivers/iio/adc/ad7779.c
945
ret = ad7779_conf(st, start_gpio);
drivers/iio/adc/ad7779.c
949
indio_dev->name = st->chip_info->name;
drivers/iio/adc/ad7779.c
953
ret = ad7779_setup_backend(st, indio_dev);
drivers/iio/adc/ad7779.c
955
ret = ad7779_setup_without_backend(st, indio_dev);
drivers/iio/adc/ad7779.c
965
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
967
return ad7779_spi_write_mask(st, AD7779_REG_GENERAL_USER_CONFIG_1,
drivers/iio/adc/ad7779.c
976
struct ad7779_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7779.c
978
return ad7779_spi_write_mask(st, AD7779_REG_GENERAL_USER_CONFIG_1,
drivers/iio/adc/ad7780.c
100
gpiod_set_value(st->powerdown_gpio, val);
drivers/iio/adc/ad7780.c
111
struct ad7780_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7780.c
118
voltage_uv = regulator_get_voltage(st->reg);
drivers/iio/adc/ad7780.c
122
*val = voltage_uv * st->gain;
drivers/iio/adc/ad7780.c
124
st->int_vref_mv = voltage_uv;
drivers/iio/adc/ad7780.c
130
*val = st->odr;
drivers/iio/adc/ad7780.c
145
struct ad7780_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7780.c
146
const struct ad7780_chip_info *chip_info = st->chip_info;
drivers/iio/adc/ad7780.c
158
vref = st->int_vref_mv * 1000000LL;
drivers/iio/adc/ad7780.c
162
st->gain = gain;
drivers/iio/adc/ad7780.c
167
gpiod_set_value(st->gain_gpio, gain);
drivers/iio/adc/ad7780.c
174
st->odr = ad778x_odr_avail[val];
drivers/iio/adc/ad7780.c
175
gpiod_set_value(st->filter_gpio, val);
drivers/iio/adc/ad7780.c
187
struct ad7780_state *st = ad_sigma_delta_to_ad7780(sigma_delta);
drivers/iio/adc/ad7780.c
188
const struct ad7780_chip_info *chip_info = st->chip_info;
drivers/iio/adc/ad7780.c
195
st->gain = ad778x_gain[raw_sample & AD7780_GAIN];
drivers/iio/adc/ad7780.c
196
st->odr = ad778x_odr_avail[raw_sample & AD7780_FILTER];
drivers/iio/adc/ad7780.c
265
static int ad7780_init_gpios(struct device *dev, struct ad7780_state *st)
drivers/iio/adc/ad7780.c
267
st->powerdown_gpio = devm_gpiod_get_optional(dev,
drivers/iio/adc/ad7780.c
270
if (IS_ERR(st->powerdown_gpio))
drivers/iio/adc/ad7780.c
271
return dev_err_probe(dev, PTR_ERR(st->powerdown_gpio),
drivers/iio/adc/ad7780.c
274
if (!st->chip_info->is_ad778x)
drivers/iio/adc/ad7780.c
278
st->gain_gpio = devm_gpiod_get_optional(dev,
drivers/iio/adc/ad7780.c
281
if (IS_ERR(st->gain_gpio))
drivers/iio/adc/ad7780.c
282
return dev_err_probe(dev, PTR_ERR(st->gain_gpio),
drivers/iio/adc/ad7780.c
285
st->filter_gpio = devm_gpiod_get_optional(dev,
drivers/iio/adc/ad7780.c
288
if (IS_ERR(st->filter_gpio))
drivers/iio/adc/ad7780.c
289
return dev_err_probe(dev, PTR_ERR(st->filter_gpio),
drivers/iio/adc/ad7780.c
303
struct ad7780_state *st;
drivers/iio/adc/ad7780.c
307
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7780.c
311
st = iio_priv(indio_dev);
drivers/iio/adc/ad7780.c
312
st->gain = 1;
drivers/iio/adc/ad7780.c
314
ad_sd_init(&st->sd, indio_dev, spi, &ad7780_sigma_delta_info);
drivers/iio/adc/ad7780.c
316
st->chip_info =
drivers/iio/adc/ad7780.c
321
indio_dev->channels = &st->chip_info->channel;
drivers/iio/adc/ad7780.c
325
ret = ad7780_init_gpios(dev, st);
drivers/iio/adc/ad7780.c
329
st->reg = devm_regulator_get(dev, "avdd");
drivers/iio/adc/ad7780.c
330
if (IS_ERR(st->reg))
drivers/iio/adc/ad7780.c
331
return PTR_ERR(st->reg);
drivers/iio/adc/ad7780.c
333
ret = regulator_enable(st->reg);
drivers/iio/adc/ad7780.c
338
ret = devm_add_action_or_reset(dev, ad7780_reg_disable, st->reg);
drivers/iio/adc/ad7780.c
87
struct ad7780_state *st = ad_sigma_delta_to_ad7780(sigma_delta);
drivers/iio/adc/ad7791.c
229
struct ad7791_state *st = ad_sigma_delta_to_ad7791(sd);
drivers/iio/adc/ad7791.c
244
st->mode &= ~AD7791_MODE_SEL_MASK;
drivers/iio/adc/ad7791.c
245
st->mode |= AD7791_MODE_SEL(mode);
drivers/iio/adc/ad7791.c
247
return ad_sd_write_reg(sd, AD7791_REG_MODE, sizeof(st->mode), st->mode);
drivers/iio/adc/ad7791.c
263
struct ad7791_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7791.c
264
bool unipolar = !!(st->mode & AD7791_MODE_UNIPOLAR);
drivers/iio/adc/ad7791.c
291
voltage_uv = regulator_get_voltage(st->reg);
drivers/iio/adc/ad7791.c
304
rate = st->filter & AD7791_FILTER_RATE_MASK;
drivers/iio/adc/ad7791.c
316
struct ad7791_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7791.c
330
st->filter &= ~AD7791_FILTER_RATE_MASK;
drivers/iio/adc/ad7791.c
331
st->filter |= i;
drivers/iio/adc/ad7791.c
332
ad_sd_write_reg(&st->sd, AD7791_REG_FILTER,
drivers/iio/adc/ad7791.c
333
sizeof(st->filter),
drivers/iio/adc/ad7791.c
334
st->filter);
drivers/iio/adc/ad7791.c
379
static int ad7791_setup(struct ad7791_state *st,
drivers/iio/adc/ad7791.c
383
st->mode = AD7791_MODE_BUFFER;
drivers/iio/adc/ad7791.c
384
st->filter = AD7791_FILTER_RATE_16_6;
drivers/iio/adc/ad7791.c
389
if ((st->info->flags & AD7791_FLAG_HAS_BUFFER) && !pdata->buffered)
drivers/iio/adc/ad7791.c
390
st->mode &= ~AD7791_MODE_BUFFER;
drivers/iio/adc/ad7791.c
392
if ((st->info->flags & AD7791_FLAG_HAS_BURNOUT) &&
drivers/iio/adc/ad7791.c
394
st->mode |= AD7791_MODE_BURNOUT;
drivers/iio/adc/ad7791.c
396
if ((st->info->flags & AD7791_FLAG_HAS_UNIPOLAR) && pdata->unipolar)
drivers/iio/adc/ad7791.c
397
st->mode |= AD7791_MODE_UNIPOLAR;
drivers/iio/adc/ad7791.c
399
return ad_sd_write_reg(&st->sd, AD7791_REG_MODE, sizeof(st->mode),
drivers/iio/adc/ad7791.c
400
st->mode);
drivers/iio/adc/ad7791.c
413
struct ad7791_state *st;
drivers/iio/adc/ad7791.c
419
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7791.c
423
st = iio_priv(indio_dev);
drivers/iio/adc/ad7791.c
425
st->reg = devm_regulator_get(dev, "refin");
drivers/iio/adc/ad7791.c
426
if (IS_ERR(st->reg))
drivers/iio/adc/ad7791.c
427
return PTR_ERR(st->reg);
drivers/iio/adc/ad7791.c
429
ret = regulator_enable(st->reg);
drivers/iio/adc/ad7791.c
433
ret = devm_add_action_or_reset(dev, ad7791_reg_disable, st->reg);
drivers/iio/adc/ad7791.c
437
st->info = &ad7791_chip_infos[spi_get_device_id(spi)->driver_data];
drivers/iio/adc/ad7791.c
438
ad_sd_init(&st->sd, indio_dev, spi, &ad7791_sigma_delta_info);
drivers/iio/adc/ad7791.c
442
indio_dev->channels = st->info->channels;
drivers/iio/adc/ad7791.c
443
indio_dev->num_channels = st->info->num_channels;
drivers/iio/adc/ad7791.c
444
if (st->info->flags & AD7791_FLAG_HAS_FILTER)
drivers/iio/adc/ad7791.c
453
ret = ad7791_setup(st, pdata);
drivers/iio/adc/ad7793.c
182
struct ad7793_state *st = ad_sigma_delta_to_ad7793(sd);
drivers/iio/adc/ad7793.c
184
st->conf &= ~AD7793_CONF_CHAN_MASK;
drivers/iio/adc/ad7793.c
185
st->conf |= AD7793_CONF_CHAN(channel);
drivers/iio/adc/ad7793.c
187
return ad_sd_write_reg(&st->sd, AD7793_REG_CONF, 2, st->conf);
drivers/iio/adc/ad7793.c
193
struct ad7793_state *st = ad_sigma_delta_to_ad7793(sd);
drivers/iio/adc/ad7793.c
195
st->mode &= ~AD7793_MODE_SEL_MASK;
drivers/iio/adc/ad7793.c
196
st->mode |= AD7793_MODE_SEL(mode);
drivers/iio/adc/ad7793.c
198
return ad_sd_write_reg(&st->sd, AD7793_REG_MODE, 2, st->mode);
drivers/iio/adc/ad7793.c
220
static int ad7793_calibrate_all(struct ad7793_state *st)
drivers/iio/adc/ad7793.c
222
return ad_sd_calibrate_all(&st->sd, ad7793_calib_arr,
drivers/iio/adc/ad7793.c
226
static int ad7793_check_platform_data(struct ad7793_state *st,
drivers/iio/adc/ad7793.c
235
if (!(st->chip_info->flags & AD7793_FLAG_HAS_CLKSEL) &&
drivers/iio/adc/ad7793.c
239
if (!(st->chip_info->flags & AD7793_FLAG_HAS_REFSEL) &&
drivers/iio/adc/ad7793.c
243
if (!(st->chip_info->flags & AD7793_FLAG_HAS_VBIAS) &&
drivers/iio/adc/ad7793.c
247
if (!(st->chip_info->flags & AD7793_HAS_EXITATION_CURRENT) &&
drivers/iio/adc/ad7793.c
258
struct ad7793_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7793.c
263
ret = ad7793_check_platform_data(st, pdata);
drivers/iio/adc/ad7793.c
268
ret = ad_sd_reset(&st->sd);
drivers/iio/adc/ad7793.c
279
ret = ad_sd_read_reg(&st->sd, AD7793_REG_ID, 1, &id);
drivers/iio/adc/ad7793.c
285
if (id != st->chip_info->id) {
drivers/iio/adc/ad7793.c
286
ret = dev_err_probe(&st->sd.spi->dev, -ENODEV,
drivers/iio/adc/ad7793.c
291
st->mode = AD7793_MODE_RATE(1);
drivers/iio/adc/ad7793.c
292
st->conf = 0;
drivers/iio/adc/ad7793.c
294
if (st->chip_info->flags & AD7793_FLAG_HAS_CLKSEL)
drivers/iio/adc/ad7793.c
295
st->mode |= AD7793_MODE_CLKSRC(pdata->clock_src);
drivers/iio/adc/ad7793.c
296
if (st->chip_info->flags & AD7793_FLAG_HAS_REFSEL)
drivers/iio/adc/ad7793.c
297
st->conf |= AD7793_CONF_REFSEL(pdata->refsel);
drivers/iio/adc/ad7793.c
298
if (st->chip_info->flags & AD7793_FLAG_HAS_VBIAS)
drivers/iio/adc/ad7793.c
299
st->conf |= AD7793_CONF_VBIAS(pdata->bias_voltage);
drivers/iio/adc/ad7793.c
300
if (pdata->buffered || !(st->chip_info->flags & AD7793_FLAG_HAS_BUFFER))
drivers/iio/adc/ad7793.c
301
st->conf |= AD7793_CONF_BUF;
drivers/iio/adc/ad7793.c
303
(st->chip_info->flags & AD7793_FLAG_HAS_VBIAS))
drivers/iio/adc/ad7793.c
304
st->conf |= AD7793_CONF_BOOST;
drivers/iio/adc/ad7793.c
306
st->conf |= AD7793_CONF_BO_EN;
drivers/iio/adc/ad7793.c
308
st->conf |= AD7793_CONF_UNIPOLAR;
drivers/iio/adc/ad7793.c
310
if (!(st->chip_info->flags & AD7793_FLAG_HAS_GAIN))
drivers/iio/adc/ad7793.c
311
st->conf |= AD7793_CONF_GAIN(7);
drivers/iio/adc/ad7793.c
313
ret = ad7793_set_mode(&st->sd, AD_SD_MODE_IDLE);
drivers/iio/adc/ad7793.c
317
ret = ad7793_set_channel(&st->sd, 0);
drivers/iio/adc/ad7793.c
321
if (st->chip_info->flags & AD7793_HAS_EXITATION_CURRENT) {
drivers/iio/adc/ad7793.c
322
ret = ad_sd_write_reg(&st->sd, AD7793_REG_IO, 1,
drivers/iio/adc/ad7793.c
329
ret = ad7793_calibrate_all(st);
drivers/iio/adc/ad7793.c
334
for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) {
drivers/iio/adc/ad7793.c
336
>> (st->chip_info->channels[0].scan_type.realbits -
drivers/iio/adc/ad7793.c
337
(!!(st->conf & AD7793_CONF_UNIPOLAR) ? 0 : 1));
drivers/iio/adc/ad7793.c
340
st->scale_avail[i][1] = do_div(scale_uv, 100000000) * 10;
drivers/iio/adc/ad7793.c
341
st->scale_avail[i][0] = scale_uv;
drivers/iio/adc/ad7793.c
346
return dev_err_probe(&st->sd.spi->dev, ret, "setup failed\n");
drivers/iio/adc/ad7793.c
366
struct ad7793_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7793.c
370
*vals = (int *)st->scale_avail;
drivers/iio/adc/ad7793.c
373
*length = ARRAY_SIZE(st->scale_avail) * 2;
drivers/iio/adc/ad7793.c
405
struct ad7793_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7793.c
408
bool unipolar = !!(st->conf & AD7793_CONF_UNIPOLAR);
drivers/iio/adc/ad7793.c
422
*val = st->
drivers/iio/adc/ad7793.c
423
scale_avail[(st->conf >> 8) & 0x7][0];
drivers/iio/adc/ad7793.c
424
*val2 = st->
drivers/iio/adc/ad7793.c
425
scale_avail[(st->conf >> 8) & 0x7][1];
drivers/iio/adc/ad7793.c
461
*val = st->chip_info
drivers/iio/adc/ad7793.c
462
->sample_freq_avail[AD7793_MODE_RATE(st->mode)];
drivers/iio/adc/ad7793.c
472
struct ad7793_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7793.c
478
for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) {
drivers/iio/adc/ad7793.c
479
if (val2 != st->scale_avail[i][1])
drivers/iio/adc/ad7793.c
482
tmp = st->conf;
drivers/iio/adc/ad7793.c
483
st->conf &= ~AD7793_CONF_GAIN(-1);
drivers/iio/adc/ad7793.c
484
st->conf |= AD7793_CONF_GAIN(i);
drivers/iio/adc/ad7793.c
486
if (tmp == st->conf)
drivers/iio/adc/ad7793.c
489
ad_sd_write_reg(&st->sd, AD7793_REG_CONF,
drivers/iio/adc/ad7793.c
490
sizeof(st->conf), st->conf);
drivers/iio/adc/ad7793.c
491
ad7793_calibrate_all(st);
drivers/iio/adc/ad7793.c
501
if (val == st->chip_info->sample_freq_avail[i])
drivers/iio/adc/ad7793.c
507
st->mode &= ~AD7793_MODE_RATE(-1);
drivers/iio/adc/ad7793.c
508
st->mode |= AD7793_MODE_RATE(i);
drivers/iio/adc/ad7793.c
509
ad_sd_write_reg(&st->sd, AD7793_REG_MODE, sizeof(st->mode),
drivers/iio/adc/ad7793.c
510
st->mode);
drivers/iio/adc/ad7793.c
783
struct ad7793_state *st;
drivers/iio/adc/ad7793.c
793
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad7793.c
797
st = iio_priv(indio_dev);
drivers/iio/adc/ad7793.c
799
ad_sd_init(&st->sd, indio_dev, spi, &ad7793_sigma_delta_info);
drivers/iio/adc/ad7793.c
811
st->chip_info =
drivers/iio/adc/ad7793.c
816
indio_dev->channels = st->chip_info->channels;
drivers/iio/adc/ad7793.c
817
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/adc/ad7793.c
818
indio_dev->info = st->chip_info->iio_info;
drivers/iio/adc/ad7887.c
105
struct ad7887_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7887.c
108
return spi_sync(st->spi, &st->msg[AD7887_CH0]);
drivers/iio/adc/ad7887.c
115
struct ad7887_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7887.c
118
b_sent = spi_sync(st->spi, st->ring_msg);
drivers/iio/adc/ad7887.c
122
iio_push_to_buffers_with_timestamp(indio_dev, st->data,
drivers/iio/adc/ad7887.c
135
static int ad7887_scan_direct(struct ad7887_state *st, unsigned ch)
drivers/iio/adc/ad7887.c
137
int ret = spi_sync(st->spi, &st->msg[ch]);
drivers/iio/adc/ad7887.c
141
return (st->data[(ch * 2)] << 8) | st->data[(ch * 2) + 1];
drivers/iio/adc/ad7887.c
151
struct ad7887_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7887.c
157
ret = ad7887_scan_direct(st, chan->address);
drivers/iio/adc/ad7887.c
166
if (st->reg) {
drivers/iio/adc/ad7887.c
167
*val = regulator_get_voltage(st->reg);
drivers/iio/adc/ad7887.c
172
*val = st->chip_info->int_vref_mv;
drivers/iio/adc/ad7887.c
237
struct ad7887_state *st;
drivers/iio/adc/ad7887.c
242
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ad7887.c
246
st = iio_priv(indio_dev);
drivers/iio/adc/ad7887.c
248
st->reg = devm_regulator_get_optional(&spi->dev, "vref");
drivers/iio/adc/ad7887.c
249
if (IS_ERR(st->reg)) {
drivers/iio/adc/ad7887.c
250
if (PTR_ERR(st->reg) != -ENODEV)
drivers/iio/adc/ad7887.c
251
return PTR_ERR(st->reg);
drivers/iio/adc/ad7887.c
253
st->reg = NULL;
drivers/iio/adc/ad7887.c
256
if (st->reg) {
drivers/iio/adc/ad7887.c
257
ret = regulator_enable(st->reg);
drivers/iio/adc/ad7887.c
261
ret = devm_add_action_or_reset(&spi->dev, ad7887_reg_disable, st->reg);
drivers/iio/adc/ad7887.c
266
st->chip_info =
drivers/iio/adc/ad7887.c
269
st->spi = spi;
drivers/iio/adc/ad7887.c
278
if (!st->reg)
drivers/iio/adc/ad7887.c
283
st->tx_cmd_buf[0] = AD7887_CH_AIN0 | mode;
drivers/iio/adc/ad7887.c
285
st->xfer[0].rx_buf = &st->data[0];
drivers/iio/adc/ad7887.c
286
st->xfer[0].tx_buf = &st->tx_cmd_buf[0];
drivers/iio/adc/ad7887.c
287
st->xfer[0].len = 2;
drivers/iio/adc/ad7887.c
289
spi_message_init(&st->msg[AD7887_CH0]);
drivers/iio/adc/ad7887.c
290
spi_message_add_tail(&st->xfer[0], &st->msg[AD7887_CH0]);
drivers/iio/adc/ad7887.c
293
st->tx_cmd_buf[2] = AD7887_CH_AIN1 | mode;
drivers/iio/adc/ad7887.c
295
st->xfer[1].rx_buf = &st->data[0];
drivers/iio/adc/ad7887.c
296
st->xfer[1].tx_buf = &st->tx_cmd_buf[2];
drivers/iio/adc/ad7887.c
297
st->xfer[1].len = 2;
drivers/iio/adc/ad7887.c
299
st->xfer[2].rx_buf = &st->data[2];
drivers/iio/adc/ad7887.c
300
st->xfer[2].tx_buf = &st->tx_cmd_buf[0];
drivers/iio/adc/ad7887.c
301
st->xfer[2].len = 2;
drivers/iio/adc/ad7887.c
303
spi_message_init(&st->msg[AD7887_CH0_CH1]);
drivers/iio/adc/ad7887.c
304
spi_message_add_tail(&st->xfer[1], &st->msg[AD7887_CH0_CH1]);
drivers/iio/adc/ad7887.c
305
spi_message_add_tail(&st->xfer[2], &st->msg[AD7887_CH0_CH1]);
drivers/iio/adc/ad7887.c
307
st->xfer[3].rx_buf = &st->data[2];
drivers/iio/adc/ad7887.c
308
st->xfer[3].tx_buf = &st->tx_cmd_buf[2];
drivers/iio/adc/ad7887.c
309
st->xfer[3].len = 2;
drivers/iio/adc/ad7887.c
311
spi_message_init(&st->msg[AD7887_CH1]);
drivers/iio/adc/ad7887.c
312
spi_message_add_tail(&st->xfer[3], &st->msg[AD7887_CH1]);
drivers/iio/adc/ad7887.c
314
indio_dev->channels = st->chip_info->dual_channels;
drivers/iio/adc/ad7887.c
315
indio_dev->num_channels = st->chip_info->num_dual_channels;
drivers/iio/adc/ad7887.c
317
indio_dev->channels = st->chip_info->channels;
drivers/iio/adc/ad7887.c
318
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/adc/ad7887.c
83
struct ad7887_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7887.c
88
st->ring_msg = &st->msg[AD7887_CH0];
drivers/iio/adc/ad7887.c
91
st->ring_msg = &st->msg[AD7887_CH1];
drivers/iio/adc/ad7887.c
93
spi_sync(st->spi, st->ring_msg);
drivers/iio/adc/ad7887.c
96
st->ring_msg = &st->msg[AD7887_CH0_CH1];
drivers/iio/adc/ad7923.c
164
struct ad7923_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7923.c
175
st->settings;
drivers/iio/adc/ad7923.c
177
st->tx_buf[len++] = cpu_to_be16(cmd);
drivers/iio/adc/ad7923.c
180
st->ring_xfer[0].tx_buf = &st->tx_buf[0];
drivers/iio/adc/ad7923.c
181
st->ring_xfer[0].len = len;
drivers/iio/adc/ad7923.c
182
st->ring_xfer[0].cs_change = 1;
drivers/iio/adc/ad7923.c
184
spi_message_init(&st->ring_msg);
drivers/iio/adc/ad7923.c
185
spi_message_add_tail(&st->ring_xfer[0], &st->ring_msg);
drivers/iio/adc/ad7923.c
188
st->ring_xfer[i + 1].rx_buf = &st->rx_buf[i];
drivers/iio/adc/ad7923.c
189
st->ring_xfer[i + 1].len = 2;
drivers/iio/adc/ad7923.c
190
st->ring_xfer[i + 1].cs_change = 1;
drivers/iio/adc/ad7923.c
191
spi_message_add_tail(&st->ring_xfer[i + 1], &st->ring_msg);
drivers/iio/adc/ad7923.c
194
st->ring_xfer[i + 1].cs_change = 0;
drivers/iio/adc/ad7923.c
203
struct ad7923_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7923.c
206
b_sent = spi_sync(st->spi, &st->ring_msg);
drivers/iio/adc/ad7923.c
210
iio_push_to_buffers_with_ts(indio_dev, st->rx_buf, sizeof(st->rx_buf),
drivers/iio/adc/ad7923.c
219
static int ad7923_scan_direct(struct ad7923_state *st, unsigned int ch)
drivers/iio/adc/ad7923.c
225
st->settings;
drivers/iio/adc/ad7923.c
227
st->tx_buf[0] = cpu_to_be16(cmd);
drivers/iio/adc/ad7923.c
229
ret = spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ad7923.c
233
return be16_to_cpu(st->rx_buf[0]);
drivers/iio/adc/ad7923.c
236
static int ad7923_get_range(struct ad7923_state *st)
drivers/iio/adc/ad7923.c
240
vref = regulator_get_voltage(st->reg);
drivers/iio/adc/ad7923.c
246
if (!(st->settings & AD7923_RANGE))
drivers/iio/adc/ad7923.c
259
struct ad7923_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad7923.c
265
ret = ad7923_scan_direct(st, chan->address);
drivers/iio/adc/ad7923.c
279
ret = ad7923_get_range(st);
drivers/iio/adc/ad7923.c
296
struct ad7923_state *st = data;
drivers/iio/adc/ad7923.c
298
regulator_disable(st->reg);
drivers/iio/adc/ad7923.c
304
struct ad7923_state *st;
drivers/iio/adc/ad7923.c
309
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ad7923.c
313
st = iio_priv(indio_dev);
drivers/iio/adc/ad7923.c
318
st->spi = spi;
drivers/iio/adc/ad7923.c
319
st->settings = AD7923_CODING | ad7923_range |
drivers/iio/adc/ad7923.c
332
st->scan_single_xfer[0].tx_buf = &st->tx_buf[0];
drivers/iio/adc/ad7923.c
333
st->scan_single_xfer[0].len = 2;
drivers/iio/adc/ad7923.c
334
st->scan_single_xfer[0].cs_change = 1;
drivers/iio/adc/ad7923.c
335
st->scan_single_xfer[1].rx_buf = &st->rx_buf[0];
drivers/iio/adc/ad7923.c
336
st->scan_single_xfer[1].len = 2;
drivers/iio/adc/ad7923.c
338
spi_message_init(&st->scan_single_msg);
drivers/iio/adc/ad7923.c
339
spi_message_add_tail(&st->scan_single_xfer[0], &st->scan_single_msg);
drivers/iio/adc/ad7923.c
340
spi_message_add_tail(&st->scan_single_xfer[1], &st->scan_single_msg);
drivers/iio/adc/ad7923.c
342
st->reg = devm_regulator_get(&spi->dev, "refin");
drivers/iio/adc/ad7923.c
343
if (IS_ERR(st->reg))
drivers/iio/adc/ad7923.c
344
return PTR_ERR(st->reg);
drivers/iio/adc/ad7923.c
346
ret = regulator_enable(st->reg);
drivers/iio/adc/ad7923.c
350
ret = devm_add_action_or_reset(&spi->dev, ad7923_regulator_disable, st);
drivers/iio/adc/ad799x.c
145
static int ad799x_write_config(struct ad799x_state *st, u16 val)
drivers/iio/adc/ad799x.c
147
switch (st->id) {
drivers/iio/adc/ad799x.c
150
return i2c_smbus_write_word_swapped(st->client, AD7998_CONF_REG,
drivers/iio/adc/ad799x.c
155
return i2c_smbus_write_byte_data(st->client, AD7998_CONF_REG,
drivers/iio/adc/ad799x.c
159
st->config = val;
drivers/iio/adc/ad799x.c
164
static int ad799x_read_config(struct ad799x_state *st)
drivers/iio/adc/ad799x.c
166
switch (st->id) {
drivers/iio/adc/ad799x.c
169
return i2c_smbus_read_word_swapped(st->client, AD7998_CONF_REG);
drivers/iio/adc/ad799x.c
173
return i2c_smbus_read_byte_data(st->client, AD7998_CONF_REG);
drivers/iio/adc/ad799x.c
176
return st->config;
drivers/iio/adc/ad799x.c
180
static int ad799x_update_config(struct ad799x_state *st, u16 config)
drivers/iio/adc/ad799x.c
184
ret = ad799x_write_config(st, config);
drivers/iio/adc/ad799x.c
187
ret = ad799x_read_config(st);
drivers/iio/adc/ad799x.c
190
st->config = ret;
drivers/iio/adc/ad799x.c
199
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
203
switch (st->id) {
drivers/iio/adc/ad799x.c
207
cmd = st->config |
drivers/iio/adc/ad799x.c
224
b_sent = i2c_smbus_read_i2c_block_data(st->client,
drivers/iio/adc/ad799x.c
225
cmd, st->transfer_size,
drivers/iio/adc/ad799x.c
226
(u8 *)st->rx_buf);
drivers/iio/adc/ad799x.c
230
iio_push_to_buffers_with_timestamp(indio_dev, st->rx_buf,
drivers/iio/adc/ad799x.c
241
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
243
st->transfer_size = bitmap_weight(scan_mask,
drivers/iio/adc/ad799x.c
246
switch (st->id) {
drivers/iio/adc/ad799x.c
252
st->config &= ~(GENMASK(7, 0) << AD799X_CHANNEL_SHIFT);
drivers/iio/adc/ad799x.c
253
st->config |= (*scan_mask << AD799X_CHANNEL_SHIFT);
drivers/iio/adc/ad799x.c
254
return ad799x_write_config(st, st->config);
drivers/iio/adc/ad799x.c
260
static int ad799x_scan_direct(struct ad799x_state *st, unsigned int ch)
drivers/iio/adc/ad799x.c
264
switch (st->id) {
drivers/iio/adc/ad799x.c
268
cmd = st->config | (BIT(ch) << AD799X_CHANNEL_SHIFT);
drivers/iio/adc/ad799x.c
283
return i2c_smbus_read_word_swapped(st->client, cmd);
drivers/iio/adc/ad799x.c
293
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
299
mutex_lock(&st->lock);
drivers/iio/adc/ad799x.c
300
ret = ad799x_scan_direct(st, chan->scan_index);
drivers/iio/adc/ad799x.c
301
mutex_unlock(&st->lock);
drivers/iio/adc/ad799x.c
310
*val = st->vref_uV / (MICRO / MILLI);
drivers/iio/adc/ad799x.c
331
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
333
int ret = i2c_smbus_read_byte_data(st->client, AD7998_CYCLE_TMR_REG);
drivers/iio/adc/ad799x.c
347
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
356
mutex_lock(&st->lock);
drivers/iio/adc/ad799x.c
358
ret = i2c_smbus_read_byte_data(st->client, AD7998_CYCLE_TMR_REG);
drivers/iio/adc/ad799x.c
372
ret = i2c_smbus_write_byte_data(st->client, AD7998_CYCLE_TMR_REG,
drivers/iio/adc/ad799x.c
379
mutex_unlock(&st->lock);
drivers/iio/adc/ad799x.c
389
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
391
if (!(st->config & AD7998_ALERT_EN))
drivers/iio/adc/ad799x.c
394
if ((st->config >> AD799X_CHANNEL_SHIFT) & BIT(chan->scan_index))
drivers/iio/adc/ad799x.c
406
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
412
mutex_lock(&st->lock);
drivers/iio/adc/ad799x.c
415
st->config |= BIT(chan->scan_index) << AD799X_CHANNEL_SHIFT;
drivers/iio/adc/ad799x.c
417
st->config &= ~(BIT(chan->scan_index) << AD799X_CHANNEL_SHIFT);
drivers/iio/adc/ad799x.c
419
if (st->config >> AD799X_CHANNEL_SHIFT)
drivers/iio/adc/ad799x.c
420
st->config |= AD7998_ALERT_EN;
drivers/iio/adc/ad799x.c
422
st->config &= ~AD7998_ALERT_EN;
drivers/iio/adc/ad799x.c
424
ret = ad799x_write_config(st, st->config);
drivers/iio/adc/ad799x.c
425
mutex_unlock(&st->lock);
drivers/iio/adc/ad799x.c
457
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
462
ret = i2c_smbus_write_word_swapped(st->client,
drivers/iio/adc/ad799x.c
477
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
479
ret = i2c_smbus_read_word_swapped(st->client,
drivers/iio/adc/ad799x.c
492
struct ad799x_state *st = iio_priv(private);
drivers/iio/adc/ad799x.c
495
ret = i2c_smbus_read_byte_data(st->client, AD7998_ALERT_STAT_REG);
drivers/iio/adc/ad799x.c
499
if (i2c_smbus_write_byte_data(st->client, AD7998_ALERT_STAT_REG,
drivers/iio/adc/ad799x.c
789
struct ad799x_state *st;
drivers/iio/adc/ad799x.c
794
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad799x.c
798
st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
802
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/adc/ad799x.c
806
st->id = id->driver_data;
drivers/iio/adc/ad799x.c
808
st->chip_config = &chip_info->irq_config;
drivers/iio/adc/ad799x.c
810
st->chip_config = &chip_info->noirq_config;
drivers/iio/adc/ad799x.c
814
st->reg = devm_regulator_get(dev, "vcc");
drivers/iio/adc/ad799x.c
815
if (IS_ERR(st->reg))
drivers/iio/adc/ad799x.c
816
return PTR_ERR(st->reg);
drivers/iio/adc/ad799x.c
817
ret = regulator_enable(st->reg);
drivers/iio/adc/ad799x.c
821
ret = devm_add_action_or_reset(dev, ad799x_reg_disable, st->reg);
drivers/iio/adc/ad799x.c
827
st->vref = devm_regulator_get_optional(dev, "vref");
drivers/iio/adc/ad799x.c
828
ret = PTR_ERR_OR_ZERO(st->vref);
drivers/iio/adc/ad799x.c
830
st->vref = NULL;
drivers/iio/adc/ad799x.c
836
if (st->vref) {
drivers/iio/adc/ad799x.c
839
ret = regulator_enable(st->vref);
drivers/iio/adc/ad799x.c
843
ret = devm_add_action_or_reset(dev, ad799x_reg_disable, st->vref);
drivers/iio/adc/ad799x.c
847
ret = regulator_get_voltage(st->vref);
drivers/iio/adc/ad799x.c
850
st->vref_uV = ret;
drivers/iio/adc/ad799x.c
854
if (!st->vref) {
drivers/iio/adc/ad799x.c
855
ret = regulator_get_voltage(st->reg);
drivers/iio/adc/ad799x.c
858
st->vref_uV = ret;
drivers/iio/adc/ad799x.c
861
st->client = client;
drivers/iio/adc/ad799x.c
864
indio_dev->info = st->chip_config->info;
drivers/iio/adc/ad799x.c
867
indio_dev->channels = st->chip_config->channel;
drivers/iio/adc/ad799x.c
870
ret = ad799x_update_config(st, st->chip_config->default_config | extra_config);
drivers/iio/adc/ad799x.c
898
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
900
if (st->vref)
drivers/iio/adc/ad799x.c
901
regulator_disable(st->vref);
drivers/iio/adc/ad799x.c
902
regulator_disable(st->reg);
drivers/iio/adc/ad799x.c
910
struct ad799x_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad799x.c
913
ret = regulator_enable(st->reg);
drivers/iio/adc/ad799x.c
919
if (st->vref) {
drivers/iio/adc/ad799x.c
920
ret = regulator_enable(st->vref);
drivers/iio/adc/ad799x.c
922
regulator_disable(st->reg);
drivers/iio/adc/ad799x.c
929
ret = ad799x_update_config(st, st->config);
drivers/iio/adc/ad799x.c
931
if (st->vref)
drivers/iio/adc/ad799x.c
932
regulator_disable(st->vref);
drivers/iio/adc/ad799x.c
933
regulator_disable(st->reg);
drivers/iio/adc/ad9467.c
1003
struct ad9467_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad9467.c
1007
for (c = 0; c < st->info->num_channels; c++) {
drivers/iio/adc/ad9467.c
1009
ret = iio_backend_chan_enable(st->back, c);
drivers/iio/adc/ad9467.c
1011
ret = iio_backend_chan_disable(st->back, c);
drivers/iio/adc/ad9467.c
1035
static int ad9467_scale_fill(struct ad9467_state *st)
drivers/iio/adc/ad9467.c
1037
const struct ad9467_chip_info *info = st->info;
drivers/iio/adc/ad9467.c
1040
st->scales = devm_kmalloc_array(&st->spi->dev, info->num_scales,
drivers/iio/adc/ad9467.c
1041
sizeof(*st->scales), GFP_KERNEL);
drivers/iio/adc/ad9467.c
1042
if (!st->scales)
drivers/iio/adc/ad9467.c
1046
__ad9467_get_scale(st, i, &val1, &val2);
drivers/iio/adc/ad9467.c
1047
st->scales[i][0] = val1;
drivers/iio/adc/ad9467.c
1048
st->scales[i][1] = val2;
drivers/iio/adc/ad9467.c
1069
static int ad9467_iio_backend_get(struct ad9467_state *st)
drivers/iio/adc/ad9467.c
1071
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad9467.c
1074
st->back = devm_iio_backend_get(dev, NULL);
drivers/iio/adc/ad9467.c
1075
if (!IS_ERR(st->back))
drivers/iio/adc/ad9467.c
1078
if (PTR_ERR(st->back) != -ENOENT)
drivers/iio/adc/ad9467.c
1079
return PTR_ERR(st->back);
drivers/iio/adc/ad9467.c
1101
st->back = __devm_iio_backend_get_from_fwnode_lookup(dev,
drivers/iio/adc/ad9467.c
1104
return PTR_ERR_OR_ZERO(st->back);
drivers/iio/adc/ad9467.c
1112
struct ad9467_state *st = s->private;
drivers/iio/adc/ad9467.c
1115
for_each_set_bit(bit, &st->info->test_mask, st->info->test_mask_len)
drivers/iio/adc/ad9467.c
1127
struct ad9467_state *st = chan->st;
drivers/iio/adc/ad9467.c
1137
if (iio_backend_has_caps(st->back, IIO_BACKEND_CAP_CALIBRATION)) {
drivers/iio/adc/ad9467.c
1138
ret = iio_backend_debugfs_print_chan_status(st->back,
drivers/iio/adc/ad9467.c
1161
struct ad9467_state *st = chan->st;
drivers/iio/adc/ad9467.c
1171
for_each_set_bit(mode, &st->info->test_mask, st->info->test_mask_len) {
drivers/iio/adc/ad9467.c
1176
if (mode == st->info->test_mask_len)
drivers/iio/adc/ad9467.c
1179
guard(mutex)(&st->lock);
drivers/iio/adc/ad9467.c
1184
if (iio_backend_has_caps(st->back, IIO_BACKEND_CAP_CALIBRATION)) {
drivers/iio/adc/ad9467.c
1187
ret = ad9467_backend_testmode_off(st, chan->idx);
drivers/iio/adc/ad9467.c
1193
ret = ad9467_testmode_set(st, chan->idx, mode);
drivers/iio/adc/ad9467.c
1197
out_mode = st->info->default_output_mode;
drivers/iio/adc/ad9467.c
1198
ret = ad9467_outputmode_set(st, out_mode);
drivers/iio/adc/ad9467.c
1204
cmode = st->info->default_output_mode;
drivers/iio/adc/ad9467.c
1207
ret = ad9467_outputmode_set(st, cmode);
drivers/iio/adc/ad9467.c
1211
ret = ad9467_testmode_set(st, chan->idx, mode);
drivers/iio/adc/ad9467.c
1216
if (iio_backend_has_caps(st->back, IIO_BACKEND_CAP_CALIBRATION)) {
drivers/iio/adc/ad9467.c
1218
ret = ad9467_backend_testmode_on(st, chan->idx,
drivers/iio/adc/ad9467.c
1223
ret = ad9467_backend_testmode_on(st, chan->idx,
drivers/iio/adc/ad9467.c
1248
struct ad9467_state *st = file->private_data;
drivers/iio/adc/ad9467.c
1254
guard(mutex)(&st->lock);
drivers/iio/adc/ad9467.c
1258
for (bit = 0; bit < st->calib_map_size; bit++) {
drivers/iio/adc/ad9467.c
1259
if (AD9467_CAN_INVERT(st) && bit == st->calib_map_size / 2)
drivers/iio/adc/ad9467.c
1263
test_bit(bit, st->calib_map) ? 'x' : 'o');
drivers/iio/adc/ad9467.c
1281
struct ad9467_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad9467.c
1288
st->chan_test = devm_kcalloc(&st->spi->dev, st->info->num_channels,
drivers/iio/adc/ad9467.c
1289
sizeof(*st->chan_test), GFP_KERNEL);
drivers/iio/adc/ad9467.c
1290
if (!st->chan_test)
drivers/iio/adc/ad9467.c
1293
if (iio_backend_has_caps(st->back, IIO_BACKEND_CAP_CALIBRATION))
drivers/iio/adc/ad9467.c
1294
debugfs_create_file("calibration_table_dump", 0400, d, st,
drivers/iio/adc/ad9467.c
1297
for (chan = 0; chan < st->info->num_channels; chan++) {
drivers/iio/adc/ad9467.c
1300
st->chan_test[chan].idx = chan;
drivers/iio/adc/ad9467.c
1301
st->chan_test[chan].st = st;
drivers/iio/adc/ad9467.c
1302
debugfs_create_file(attr_name, 0600, d, &st->chan_test[chan],
drivers/iio/adc/ad9467.c
1306
debugfs_create_file("in_voltage_test_mode_available", 0400, d, st,
drivers/iio/adc/ad9467.c
1309
iio_backend_debugfs_add(st->back, indio_dev);
drivers/iio/adc/ad9467.c
1316
struct ad9467_state *st;
drivers/iio/adc/ad9467.c
1320
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ad9467.c
1324
st = iio_priv(indio_dev);
drivers/iio/adc/ad9467.c
1325
st->spi = spi;
drivers/iio/adc/ad9467.c
1327
st->info = spi_get_device_match_data(spi);
drivers/iio/adc/ad9467.c
1328
if (!st->info)
drivers/iio/adc/ad9467.c
1331
st->calib_map_size = st->info->test_points;
drivers/iio/adc/ad9467.c
1332
if (AD9467_CAN_INVERT(st))
drivers/iio/adc/ad9467.c
1333
st->calib_map_size *= 2;
drivers/iio/adc/ad9467.c
1335
st->clk = devm_clk_get_enabled(dev, "adc-clk");
drivers/iio/adc/ad9467.c
1336
if (IS_ERR(st->clk))
drivers/iio/adc/ad9467.c
1337
return PTR_ERR(st->clk);
drivers/iio/adc/ad9467.c
1339
st->pwrdown_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_LOW);
drivers/iio/adc/ad9467.c
1340
if (IS_ERR(st->pwrdown_gpio))
drivers/iio/adc/ad9467.c
1341
return PTR_ERR(st->pwrdown_gpio);
drivers/iio/adc/ad9467.c
1347
ret = ad9467_scale_fill(st);
drivers/iio/adc/ad9467.c
1351
id = ad9467_spi_read(st, AN877_ADC_REG_CHIP_ID);
drivers/iio/adc/ad9467.c
1352
if (id != st->info->id)
drivers/iio/adc/ad9467.c
1355
id, st->info->id);
drivers/iio/adc/ad9467.c
1357
if (st->info->num_scales > 1)
drivers/iio/adc/ad9467.c
1361
indio_dev->name = st->info->name;
drivers/iio/adc/ad9467.c
1362
indio_dev->channels = st->info->channels;
drivers/iio/adc/ad9467.c
1363
indio_dev->num_channels = st->info->num_channels;
drivers/iio/adc/ad9467.c
1365
ret = ad9467_iio_backend_get(st);
drivers/iio/adc/ad9467.c
1369
if (iio_backend_has_caps(st->back, IIO_BACKEND_CAP_BUFFER)) {
drivers/iio/adc/ad9467.c
1370
ret = devm_iio_backend_request_buffer(dev, st->back, indio_dev);
drivers/iio/adc/ad9467.c
1375
if (iio_backend_has_caps(st->back, IIO_BACKEND_CAP_ENABLE)) {
drivers/iio/adc/ad9467.c
1376
ret = devm_iio_backend_enable(dev, st->back);
drivers/iio/adc/ad9467.c
1381
if (iio_backend_has_caps(st->back, IIO_BACKEND_CAP_CALIBRATION)) {
drivers/iio/adc/ad9467.c
1382
ret = ad9467_calibrate(st);
drivers/iio/adc/ad9467.c
142
#define AD9467_CAN_INVERT(st) \
drivers/iio/adc/ad9467.c
143
(!(st)->info->has_dco || (st)->info->has_dco_invert)
drivers/iio/adc/ad9467.c
167
struct ad9467_state *st;
drivers/iio/adc/ad9467.c
198
static int ad9467_spi_read(struct ad9467_state *st, unsigned int reg)
drivers/iio/adc/ad9467.c
206
ret = spi_write_then_read(st->spi,
drivers/iio/adc/ad9467.c
216
static int ad9467_spi_write(struct ad9467_state *st, unsigned int reg,
drivers/iio/adc/ad9467.c
219
st->buf[0] = reg >> 8;
drivers/iio/adc/ad9467.c
220
st->buf[1] = reg & 0xFF;
drivers/iio/adc/ad9467.c
221
st->buf[2] = val;
drivers/iio/adc/ad9467.c
223
return spi_write(st->spi, st->buf, ARRAY_SIZE(st->buf));
drivers/iio/adc/ad9467.c
229
struct ad9467_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad9467.c
233
guard(mutex)(&st->lock);
drivers/iio/adc/ad9467.c
234
ret = ad9467_spi_write(st, reg, writeval);
drivers/iio/adc/ad9467.c
237
return ad9467_spi_write(st, AN877_ADC_REG_TRANSFER,
drivers/iio/adc/ad9467.c
241
ret = ad9467_spi_read(st, reg);
drivers/iio/adc/ad9467.c
298
static void __ad9467_get_scale(struct ad9467_state *st, int index,
drivers/iio/adc/ad9467.c
301
const struct ad9467_chip_info *info = st->info;
drivers/iio/adc/ad9467.c
510
static int ad9467_get_scale(struct ad9467_state *st, int *val, int *val2)
drivers/iio/adc/ad9467.c
512
const struct ad9467_chip_info *info = st->info;
drivers/iio/adc/ad9467.c
521
ret = ad9467_spi_read(st, AN877_ADC_REG_VREF);
drivers/iio/adc/ad9467.c
536
__ad9467_get_scale(st, i, val, val2);
drivers/iio/adc/ad9467.c
541
static int ad9467_set_scale(struct ad9467_state *st, int val, int val2)
drivers/iio/adc/ad9467.c
543
const struct ad9467_chip_info *info = st->info;
drivers/iio/adc/ad9467.c
554
__ad9467_get_scale(st, i, &scale_val[0], &scale_val[1]);
drivers/iio/adc/ad9467.c
558
guard(mutex)(&st->lock);
drivers/iio/adc/ad9467.c
559
ret = ad9467_spi_write(st, AN877_ADC_REG_VREF,
drivers/iio/adc/ad9467.c
564
return ad9467_spi_write(st, AN877_ADC_REG_TRANSFER,
drivers/iio/adc/ad9467.c
571
static int ad9467_get_offset(struct ad9467_state *st, int *val)
drivers/iio/adc/ad9467.c
575
ret = ad9467_spi_read(st, AN877_ADC_REG_OFFSET);
drivers/iio/adc/ad9467.c
583
static int ad9467_set_offset(struct ad9467_state *st, int val)
drivers/iio/adc/ad9467.c
587
if (val < st->info->offset_range[0] || val > st->info->offset_range[2])
drivers/iio/adc/ad9467.c
590
ret = ad9467_spi_write(st, AN877_ADC_REG_OFFSET, val);
drivers/iio/adc/ad9467.c
594
return ad9467_spi_write(st, AN877_ADC_REG_TRANSFER,
drivers/iio/adc/ad9467.c
598
static int ad9467_outputmode_set(struct ad9467_state *st, unsigned int mode)
drivers/iio/adc/ad9467.c
602
ret = ad9467_spi_write(st, AN877_ADC_REG_OUTPUT_MODE, mode);
drivers/iio/adc/ad9467.c
606
return ad9467_spi_write(st, AN877_ADC_REG_TRANSFER,
drivers/iio/adc/ad9467.c
610
static int ad9467_testmode_set(struct ad9467_state *st, unsigned int chan,
drivers/iio/adc/ad9467.c
615
if (st->info->num_channels > 1) {
drivers/iio/adc/ad9467.c
617
ret = ad9467_spi_write(st, AN877_ADC_REG_CHAN_INDEX, BIT(chan));
drivers/iio/adc/ad9467.c
622
ret = ad9467_spi_write(st, AN877_ADC_REG_TEST_IO, test_mode);
drivers/iio/adc/ad9467.c
626
if (st->info->num_channels > 1) {
drivers/iio/adc/ad9467.c
628
ret = ad9467_spi_write(st, AN877_ADC_REG_CHAN_INDEX,
drivers/iio/adc/ad9467.c
629
GENMASK(st->info->num_channels - 1, 0));
drivers/iio/adc/ad9467.c
634
return ad9467_spi_write(st, AN877_ADC_REG_TRANSFER,
drivers/iio/adc/ad9467.c
638
static int ad9467_backend_testmode_on(struct ad9467_state *st,
drivers/iio/adc/ad9467.c
647
ret = iio_backend_data_format_set(st->back, chan, &data);
drivers/iio/adc/ad9467.c
651
ret = iio_backend_test_pattern_set(st->back, chan, pattern);
drivers/iio/adc/ad9467.c
655
return iio_backend_chan_enable(st->back, chan);
drivers/iio/adc/ad9467.c
658
static int ad9467_backend_testmode_off(struct ad9467_state *st,
drivers/iio/adc/ad9467.c
667
ret = iio_backend_chan_disable(st->back, chan);
drivers/iio/adc/ad9467.c
671
ret = iio_backend_test_pattern_set(st->back, chan,
drivers/iio/adc/ad9467.c
676
return iio_backend_data_format_set(st->back, chan, &data);
drivers/iio/adc/ad9467.c
679
static int ad9647_calibrate_prepare(struct ad9467_state *st)
drivers/iio/adc/ad9467.c
685
cmode = st->info->default_output_mode;
drivers/iio/adc/ad9467.c
688
ret = ad9467_outputmode_set(st, cmode);
drivers/iio/adc/ad9467.c
692
for (c = 0; c < st->info->num_channels; c++) {
drivers/iio/adc/ad9467.c
693
ret = ad9467_testmode_set(st, c, AN877_ADC_TESTMODE_PN9_SEQ);
drivers/iio/adc/ad9467.c
697
ret = ad9467_backend_testmode_on(st, c,
drivers/iio/adc/ad9467.c
706
static int ad9647_calibrate_polarity_set(struct ad9467_state *st,
drivers/iio/adc/ad9467.c
711
if (st->info->has_dco) {
drivers/iio/adc/ad9467.c
717
return ad9467_spi_write(st, AN877_ADC_REG_OUTPUT_PHASE,
drivers/iio/adc/ad9467.c
726
return iio_backend_data_sample_trigger(st->back, trigger);
drivers/iio/adc/ad9467.c
753
static int ad9467_calibrate_apply(struct ad9467_state *st, unsigned int val)
drivers/iio/adc/ad9467.c
758
if (st->info->has_dco) {
drivers/iio/adc/ad9467.c
759
ret = ad9467_spi_write(st, AN877_ADC_REG_OUTPUT_DELAY,
drivers/iio/adc/ad9467.c
760
val | st->info->dco_en);
drivers/iio/adc/ad9467.c
764
return ad9467_spi_write(st, AN877_ADC_REG_TRANSFER,
drivers/iio/adc/ad9467.c
768
for (lane = 0; lane < st->info->num_lanes; lane++) {
drivers/iio/adc/ad9467.c
769
ret = iio_backend_iodelay_set(st->back, lane, val);
drivers/iio/adc/ad9467.c
777
static int ad9647_calibrate_stop(struct ad9467_state *st)
drivers/iio/adc/ad9467.c
782
for (c = 0; c < st->info->num_channels; c++) {
drivers/iio/adc/ad9467.c
783
ret = ad9467_backend_testmode_off(st, c);
drivers/iio/adc/ad9467.c
787
ret = ad9467_testmode_set(st, c, AN877_ADC_TESTMODE_OFF);
drivers/iio/adc/ad9467.c
792
mode = st->info->default_output_mode;
drivers/iio/adc/ad9467.c
793
return ad9467_outputmode_set(st, mode);
drivers/iio/adc/ad9467.c
796
static int ad9467_calibrate(struct ad9467_state *st)
drivers/iio/adc/ad9467.c
803
unsigned int test_points = st->info->test_points;
drivers/iio/adc/ad9467.c
804
unsigned long sample_rate = clk_get_rate(st->clk);
drivers/iio/adc/ad9467.c
805
struct device *dev = &st->spi->dev;
drivers/iio/adc/ad9467.c
810
bitmap_fill(st->calib_map, st->calib_map_size);
drivers/iio/adc/ad9467.c
812
ret = ad9647_calibrate_prepare(st);
drivers/iio/adc/ad9467.c
816
ret = ad9647_calibrate_polarity_set(st, invert);
drivers/iio/adc/ad9467.c
820
for (point = 0; point < st->info->test_points; point++) {
drivers/iio/adc/ad9467.c
821
ret = ad9467_calibrate_apply(st, point);
drivers/iio/adc/ad9467.c
825
for (c = 0; c < st->info->num_channels; c++) {
drivers/iio/adc/ad9467.c
826
ret = iio_backend_chan_status(st->back, c, &stat);
drivers/iio/adc/ad9467.c
841
if (c == st->info->num_channels - 1)
drivers/iio/adc/ad9467.c
843
st->calib_map);
drivers/iio/adc/ad9467.c
848
cnt = ad9467_find_optimal_point(st->calib_map, 0, test_points,
drivers/iio/adc/ad9467.c
855
if (AD9467_CAN_INVERT(st)) {
drivers/iio/adc/ad9467.c
864
inv_cnt = ad9467_find_optimal_point(st->calib_map, test_points,
drivers/iio/adc/ad9467.c
871
ret = ad9647_calibrate_polarity_set(st, false);
drivers/iio/adc/ad9467.c
883
if (st->info->has_dco)
drivers/iio/adc/ad9467.c
890
ret = ad9467_calibrate_apply(st, val);
drivers/iio/adc/ad9467.c
895
return ad9647_calibrate_stop(st);
drivers/iio/adc/ad9467.c
902
struct ad9467_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad9467.c
906
return ad9467_get_offset(st, val);
drivers/iio/adc/ad9467.c
908
return ad9467_get_scale(st, val, val2);
drivers/iio/adc/ad9467.c
910
*val = clk_get_rate(st->clk);
drivers/iio/adc/ad9467.c
918
static int __ad9467_update_clock(struct ad9467_state *st, long r_clk)
drivers/iio/adc/ad9467.c
922
ret = clk_set_rate(st->clk, r_clk);
drivers/iio/adc/ad9467.c
926
guard(mutex)(&st->lock);
drivers/iio/adc/ad9467.c
928
if (iio_backend_has_caps(st->back, IIO_BACKEND_CAP_CALIBRATION))
drivers/iio/adc/ad9467.c
929
return ad9467_calibrate(st);
drivers/iio/adc/ad9467.c
938
struct ad9467_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad9467.c
939
const struct ad9467_chip_info *info = st->info;
drivers/iio/adc/ad9467.c
946
return ad9467_set_offset(st, val);
drivers/iio/adc/ad9467.c
948
return ad9467_set_scale(st, val, val2);
drivers/iio/adc/ad9467.c
950
r_clk = clk_round_rate(st->clk, val);
drivers/iio/adc/ad9467.c
952
dev_warn(&st->spi->dev,
drivers/iio/adc/ad9467.c
957
sample_rate = clk_get_rate(st->clk);
drivers/iio/adc/ad9467.c
968
ret = __ad9467_update_clock(st, r_clk);
drivers/iio/adc/ad9467.c
981
struct ad9467_state *st = iio_priv(indio_dev);
drivers/iio/adc/ad9467.c
982
const struct ad9467_chip_info *info = st->info;
drivers/iio/adc/ad9467.c
990
*vals = (const int *)st->scales;
drivers/iio/adc/ade9000.c
1000
ret = regmap_read(st->regmap, period_reg, &period);
drivers/iio/adc/ade9000.c
1018
ret = regmap_bulk_read(st->regmap, lo_reg,
drivers/iio/adc/ade9000.c
1019
st->bulk_read_buf, 2);
drivers/iio/adc/ade9000.c
1023
*val = st->bulk_read_buf[0]; /* Lower 32 bits */
drivers/iio/adc/ade9000.c
1024
*val2 = st->bulk_read_buf[1]; /* Upper 32 bits */
drivers/iio/adc/ade9000.c
1031
ret = regmap_read(st->regmap, chan->address, &measured);
drivers/iio/adc/ade9000.c
1044
ret = regmap_read(st->regmap, chan->address, &measured);
drivers/iio/adc/ade9000.c
1101
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1108
return regmap_write(st->regmap,
drivers/iio/adc/ade9000.c
1113
return regmap_write(st->regmap,
drivers/iio/adc/ade9000.c
1123
return regmap_write(st->regmap,
drivers/iio/adc/ade9000.c
1127
return regmap_write(st->regmap,
drivers/iio/adc/ade9000.c
1131
return regmap_write(st->regmap,
drivers/iio/adc/ade9000.c
1147
return regmap_write(st->regmap,
drivers/iio/adc/ade9000.c
1151
return regmap_write(st->regmap,
drivers/iio/adc/ade9000.c
1155
return regmap_write(st->regmap,
drivers/iio/adc/ade9000.c
1174
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1177
return regmap_read(st->regmap, reg, rx_val);
drivers/iio/adc/ade9000.c
1179
return regmap_write(st->regmap, reg, tx_val);
drivers/iio/adc/ade9000.c
1187
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1192
ret = regmap_read(st->regmap, ADE9000_REG_MASK1, &interrupts1);
drivers/iio/adc/ade9000.c
1244
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1249
ret = regmap_write(st->regmap, ADE9000_REG_STATUS1, GENMASK(31, 0));
drivers/iio/adc/ade9000.c
1259
st->wfb_trg |= ADE9000_WFB_TRG_ZXVA_BIT;
drivers/iio/adc/ade9000.c
1261
st->wfb_trg &= ~ADE9000_WFB_TRG_ZXVA_BIT;
drivers/iio/adc/ade9000.c
1265
st->wfb_trg |= ADE9000_WFB_TRG_ZXIA_BIT;
drivers/iio/adc/ade9000.c
1267
st->wfb_trg &= ~ADE9000_WFB_TRG_ZXIA_BIT;
drivers/iio/adc/ade9000.c
1271
st->wfb_trg |= ADE9000_WFB_TRG_SWELL_BIT;
drivers/iio/adc/ade9000.c
1273
st->wfb_trg &= ~ADE9000_WFB_TRG_SWELL_BIT;
drivers/iio/adc/ade9000.c
1277
st->wfb_trg |= ADE9000_WFB_TRG_DIP_BIT;
drivers/iio/adc/ade9000.c
1279
st->wfb_trg &= ~ADE9000_WFB_TRG_DIP_BIT;
drivers/iio/adc/ade9000.c
1290
st->wfb_trg |= ADE9000_WFB_TRG_ZXVB_BIT;
drivers/iio/adc/ade9000.c
1292
st->wfb_trg &= ~ADE9000_WFB_TRG_ZXVB_BIT;
drivers/iio/adc/ade9000.c
1296
st->wfb_trg |= ADE9000_WFB_TRG_ZXIB_BIT;
drivers/iio/adc/ade9000.c
1298
st->wfb_trg &= ~ADE9000_WFB_TRG_ZXIB_BIT;
drivers/iio/adc/ade9000.c
1302
st->wfb_trg |= ADE9000_WFB_TRG_SWELL_BIT;
drivers/iio/adc/ade9000.c
1304
st->wfb_trg &= ~ADE9000_WFB_TRG_SWELL_BIT;
drivers/iio/adc/ade9000.c
1308
st->wfb_trg |= ADE9000_WFB_TRG_DIP_BIT;
drivers/iio/adc/ade9000.c
1310
st->wfb_trg &= ~ADE9000_WFB_TRG_DIP_BIT;
drivers/iio/adc/ade9000.c
1322
st->wfb_trg |= ADE9000_WFB_TRG_ZXVC_BIT;
drivers/iio/adc/ade9000.c
1324
st->wfb_trg &= ~ADE9000_WFB_TRG_ZXVC_BIT;
drivers/iio/adc/ade9000.c
1328
st->wfb_trg |= ADE9000_WFB_TRG_ZXIC_BIT;
drivers/iio/adc/ade9000.c
1330
st->wfb_trg &= ~ADE9000_WFB_TRG_ZXIC_BIT;
drivers/iio/adc/ade9000.c
1334
st->wfb_trg |= ADE9000_WFB_TRG_SWELL_BIT;
drivers/iio/adc/ade9000.c
1336
st->wfb_trg &= ~ADE9000_WFB_TRG_SWELL_BIT;
drivers/iio/adc/ade9000.c
1340
st->wfb_trg |= ADE9000_WFB_TRG_DIP_BIT;
drivers/iio/adc/ade9000.c
1342
st->wfb_trg &= ~ADE9000_WFB_TRG_DIP_BIT;
drivers/iio/adc/ade9000.c
1355
return regmap_assign_bits(st->regmap, ADE9000_REG_MASK1, bit_mask, state ? bit_mask : 0);
drivers/iio/adc/ade9000.c
1365
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1371
return regmap_write(st->regmap, ADE9000_REG_DIP_LVL, val);
drivers/iio/adc/ade9000.c
1373
return regmap_write(st->regmap, ADE9000_REG_SWELL_LVL, val);
drivers/iio/adc/ade9000.c
1389
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1397
ret = regmap_read(st->regmap, ADE9000_REG_DIP_LVL, &data);
drivers/iio/adc/ade9000.c
1403
ret = regmap_read(st->regmap, ADE9000_REG_SWELL_LVL, &data);
drivers/iio/adc/ade9000.c
1418
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1428
st->wfb_nr_activ_chan = 2;
drivers/iio/adc/ade9000.c
1432
st->wfb_nr_activ_chan = 2;
drivers/iio/adc/ade9000.c
1436
st->wfb_nr_activ_chan = 2;
drivers/iio/adc/ade9000.c
1440
st->wfb_nr_activ_chan = 1;
drivers/iio/adc/ade9000.c
1444
st->wfb_nr_activ_chan = 1;
drivers/iio/adc/ade9000.c
1448
st->wfb_nr_activ_chan = 1;
drivers/iio/adc/ade9000.c
1452
st->wfb_nr_activ_chan = 1;
drivers/iio/adc/ade9000.c
1456
st->wfb_nr_activ_chan = 1;
drivers/iio/adc/ade9000.c
1460
st->wfb_nr_activ_chan = 1;
drivers/iio/adc/ade9000.c
1465
st->wfb_nr_activ_chan = 6;
drivers/iio/adc/ade9000.c
1468
dev_err(&st->spi->dev, "Unsupported combination of scans\n");
drivers/iio/adc/ade9000.c
1472
wfb_cfg_val |= FIELD_PREP(ADE9000_WF_SRC_MASK, st->wf_src);
drivers/iio/adc/ade9000.c
1474
return regmap_write(st->regmap, ADE9000_REG_WFB_CFG, wfb_cfg_val);
drivers/iio/adc/ade9000.c
1477
static int ade9000_waveform_buffer_interrupt_setup(struct ade9000_state *st)
drivers/iio/adc/ade9000.c
1481
ret = regmap_write(st->regmap, ADE9000_REG_WFB_TRG_CFG, 0x0);
drivers/iio/adc/ade9000.c
1486
ret = regmap_write(st->regmap, ADE9000_REG_WFB_PG_IRQEN,
drivers/iio/adc/ade9000.c
1491
ret = regmap_write(st->regmap, ADE9000_REG_STATUS0, GENMASK(31, 0));
drivers/iio/adc/ade9000.c
1495
return regmap_set_bits(st->regmap, ADE9000_REG_MASK0,
drivers/iio/adc/ade9000.c
1501
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1508
st->wfb_nr_samples = ADE9000_WFB_MAX_SAMPLES_CHAN * st->wfb_nr_activ_chan;
drivers/iio/adc/ade9000.c
1512
ret = ade9000_waveform_buffer_interrupt_setup(st);
drivers/iio/adc/ade9000.c
1516
ret = regmap_set_bits(st->regmap, ADE9000_REG_WFB_CFG,
drivers/iio/adc/ade9000.c
1519
dev_err(&st->spi->dev, "Post-enable waveform buffer enable fail\n");
drivers/iio/adc/ade9000.c
1528
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1529
struct device *dev = &st->spi->dev;
drivers/iio/adc/ade9000.c
1533
ret = regmap_clear_bits(st->regmap, ADE9000_REG_WFB_CFG,
drivers/iio/adc/ade9000.c
1540
ret = regmap_write(st->regmap, ADE9000_REG_WFB_TRG_CFG, 0x0);
drivers/iio/adc/ade9000.c
1546
ret = regmap_clear_bits(st->regmap, ADE9000_REG_MASK0, interrupts);
drivers/iio/adc/ade9000.c
1552
return regmap_write(st->regmap, ADE9000_REG_STATUS0, GENMASK(31, 0));
drivers/iio/adc/ade9000.c
1560
static int ade9000_reset(struct ade9000_state *st)
drivers/iio/adc/ade9000.c
1562
struct device *dev = &st->spi->dev;
drivers/iio/adc/ade9000.c
1572
ret = regmap_set_bits(st->regmap, ADE9000_REG_CONFIG1,
drivers/iio/adc/ade9000.c
1587
if (!wait_for_completion_timeout(&st->reset_completion,
drivers/iio/adc/ade9000.c
1597
static int ade9000_setup(struct ade9000_state *st)
drivers/iio/adc/ade9000.c
1599
struct device *dev = &st->spi->dev;
drivers/iio/adc/ade9000.c
1602
ret = regmap_multi_reg_write(st->regmap, ade9000_initialization_sequence,
drivers/iio/adc/ade9000.c
1633
static int ade9000_setup_clkout(struct device *dev, struct ade9000_state *st)
drivers/iio/adc/ade9000.c
1646
if (!device_property_present(dev, "#clock-cells") || !st->clkin)
drivers/iio/adc/ade9000.c
1650
clkout_hw = devm_clk_hw_register_divider(dev, "clkout", __clk_get_name(st->clkin),
drivers/iio/adc/ade9000.c
1685
struct ade9000_state *st;
drivers/iio/adc/ade9000.c
1689
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ade9000.c
1693
st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
1695
regmap = devm_regmap_init(dev, NULL, st, &ade9000_regmap_config);
drivers/iio/adc/ade9000.c
1699
st->regmap = regmap;
drivers/iio/adc/ade9000.c
1700
st->spi = spi;
drivers/iio/adc/ade9000.c
1702
init_completion(&st->reset_completion);
drivers/iio/adc/ade9000.c
1704
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/adc/ade9000.c
1721
st->clkin = devm_clk_get_optional_enabled(dev, NULL);
drivers/iio/adc/ade9000.c
1722
if (IS_ERR(st->clkin))
drivers/iio/adc/ade9000.c
1723
return dev_err_probe(dev, PTR_ERR(st->clkin), "Failed to get and enable clkin");
drivers/iio/adc/ade9000.c
1725
ret = ade9000_setup_clkout(dev, st);
drivers/iio/adc/ade9000.c
1747
ret = ade9000_reset(st);
drivers/iio/adc/ade9000.c
1754
ret = regmap_set_bits(st->regmap, ADE9000_REG_CONFIG1,
drivers/iio/adc/ade9000.c
1763
ret = ade9000_setup(st);
drivers/iio/adc/ade9000.c
381
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
386
ret = regmap_read(st->regmap, ADE9000_REG_WFB_CFG, &val);
drivers/iio/adc/ade9000.c
404
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
413
ret = regmap_update_bits(st->regmap, ADE9000_REG_WFB_CFG,
drivers/iio/adc/ade9000.c
420
st->wf_src = val;
drivers/iio/adc/ade9000.c
651
struct ade9000_state *st = context;
drivers/iio/adc/ade9000.c
656
guard(mutex)(&st->lock);
drivers/iio/adc/ade9000.c
669
ret = spi_write_then_read(st->spi, tx_buf, len, NULL, 0);
drivers/iio/adc/ade9000.c
671
dev_err(&st->spi->dev, "problem when writing register 0x%x\n", reg);
drivers/iio/adc/ade9000.c
679
struct ade9000_state *st = context;
drivers/iio/adc/ade9000.c
685
guard(mutex)(&st->lock);
drivers/iio/adc/ade9000.c
698
ret = spi_write_then_read(st->spi, tx_buf, 2, rx_buf, rx_len);
drivers/iio/adc/ade9000.c
700
dev_err(&st->spi->dev, "error reading register 0x%x\n", reg);
drivers/iio/adc/ade9000.c
727
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
733
put_unaligned_be16(addr, st->tx_buff);
drivers/iio/adc/ade9000.c
735
st->xfer[0].tx_buf = &st->tx_buff[0];
drivers/iio/adc/ade9000.c
736
st->xfer[0].len = 2;
drivers/iio/adc/ade9000.c
738
st->xfer[1].rx_buf = st->rx_buff.byte;
drivers/iio/adc/ade9000.c
741
st->xfer[1].len = (st->wfb_nr_samples / 2) * 4;
drivers/iio/adc/ade9000.c
743
spi_message_init_with_transfers(&st->spi_msg, st->xfer, ARRAY_SIZE(st->xfer));
drivers/iio/adc/ade9000.c
748
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
749
struct device *dev = &st->spi->dev;
drivers/iio/adc/ade9000.c
753
guard(mutex)(&st->lock);
drivers/iio/adc/ade9000.c
755
ret = spi_sync(st->spi, &st->spi_msg);
drivers/iio/adc/ade9000.c
762
for (i = 0; i < st->wfb_nr_samples / 2; i += st->wfb_nr_activ_chan)
drivers/iio/adc/ade9000.c
763
iio_push_to_buffers(indio_dev, &st->rx_buff.word[i]);
drivers/iio/adc/ade9000.c
765
ret = regmap_read(st->regmap, ADE9000_REG_WFB_PG_IRQEN, ¤t_page);
drivers/iio/adc/ade9000.c
772
ret = regmap_write(st->regmap, ADE9000_REG_WFB_PG_IRQEN,
drivers/iio/adc/ade9000.c
782
ret = regmap_write(st->regmap, ADE9000_REG_WFB_PG_IRQEN,
drivers/iio/adc/ade9000.c
797
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
801
guard(mutex)(&st->lock);
drivers/iio/adc/ade9000.c
803
ret = spi_sync(st->spi, &st->spi_msg);
drivers/iio/adc/ade9000.c
805
dev_err_ratelimited(&st->spi->dev,
drivers/iio/adc/ade9000.c
810
for (i = 0; i < st->wfb_nr_samples; i += st->wfb_nr_activ_chan)
drivers/iio/adc/ade9000.c
811
iio_push_to_buffers(indio_dev, &st->rx_buff.word[i]);
drivers/iio/adc/ade9000.c
819
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
820
struct device *dev = &st->spi->dev;
drivers/iio/adc/ade9000.c
825
ret = regmap_read(st->regmap, ADE9000_REG_STATUS0, &status);
drivers/iio/adc/ade9000.c
831
ret = regmap_read(st->regmap, ADE9000_REG_MASK0, &interrupts);
drivers/iio/adc/ade9000.c
851
ret = regmap_update_bits(st->regmap, ADE9000_REG_WFB_CFG,
drivers/iio/adc/ade9000.c
870
ret = regmap_write(st->regmap, ADE9000_REG_STATUS0, handled_irq);
drivers/iio/adc/ade9000.c
880
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/ade9000.c
889
if (!completion_done(&st->reset_completion)) {
drivers/iio/adc/ade9000.c
890
ret = regmap_read(st->regmap, ADE9000_REG_STATUS1, &result);
drivers/iio/adc/ade9000.c
892
dev_err_ratelimited(&st->spi->dev, "IRQ1 read status fail\n");
drivers/iio/adc/ade9000.c
897
complete(&st->reset_completion);
drivers/iio/adc/ade9000.c
899
ret = regmap_write(st->regmap, ADE9000_REG_STATUS1, ADE9000_ST1_RSTDONE_BIT);
drivers/iio/adc/ade9000.c
901
dev_err_ratelimited(&st->spi->dev,
drivers/iio/adc/ade9000.c
904
dev_err_ratelimited(&st->spi->dev,
drivers/iio/adc/ade9000.c
911
ret = regmap_read(st->regmap, ADE9000_REG_STATUS1, &status);
drivers/iio/adc/ade9000.c
913
dev_err_ratelimited(&st->spi->dev, "IRQ1 read status fail\n");
drivers/iio/adc/ade9000.c
917
ret = regmap_read(st->regmap, ADE9000_REG_MASK1, &interrupts);
drivers/iio/adc/ade9000.c
919
dev_err_ratelimited(&st->spi->dev, "IRQ1 read mask fail\n");
drivers/iio/adc/ade9000.c
951
ret = regmap_write(st->regmap, ADE9000_REG_STATUS1, handled_irq);
drivers/iio/adc/ade9000.c
953
dev_err_ratelimited(&st->spi->dev, "IRQ1 write status fail\n");
drivers/iio/adc/ade9000.c
977
struct ade9000_state *st = iio_priv(indio_dev);
drivers/iio/adc/adi-axi-adc.c
129
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
133
guard(mutex)(&st->lock);
drivers/iio/adc/adi-axi-adc.c
134
ret = regmap_set_bits(st->regmap, ADI_AXI_REG_RSTN,
drivers/iio/adc/adi-axi-adc.c
144
ret = regmap_read_poll_timeout(st->regmap, ADI_AXI_ADC_REG_DRP_STATUS,
drivers/iio/adc/adi-axi-adc.c
150
return regmap_set_bits(st->regmap, ADI_AXI_REG_RSTN,
drivers/iio/adc/adi-axi-adc.c
156
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
158
guard(mutex)(&st->lock);
drivers/iio/adc/adi-axi-adc.c
159
regmap_write(st->regmap, ADI_AXI_REG_RSTN, 0);
drivers/iio/adc/adi-axi-adc.c
165
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
169
return regmap_clear_bits(st->regmap,
drivers/iio/adc/adi-axi-adc.c
179
return regmap_update_bits(st->regmap, ADI_AXI_REG_CHAN_CTRL(chan),
drivers/iio/adc/adi-axi-adc.c
186
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
190
return regmap_clear_bits(st->regmap, ADI_AXI_ADC_REG_CTRL,
drivers/iio/adc/adi-axi-adc.c
193
return regmap_set_bits(st->regmap, ADI_AXI_ADC_REG_CTRL,
drivers/iio/adc/adi-axi-adc.c
203
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
212
guard(mutex)(&st->lock);
drivers/iio/adc/adi-axi-adc.c
213
ret = regmap_write(st->regmap, ADI_AXI_ADC_REG_DELAY(lane), tap);
drivers/iio/adc/adi-axi-adc.c
220
ret = regmap_read(st->regmap, ADI_AXI_ADC_REG_DELAY(lane), &val);
drivers/iio/adc/adi-axi-adc.c
233
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
240
return regmap_update_bits(st->regmap, ADI_AXI_ADC_REG_CHAN_CTRL_3(chan),
drivers/iio/adc/adi-axi-adc.c
244
return regmap_update_bits(st->regmap, ADI_AXI_ADC_REG_CHAN_CTRL_3(chan),
drivers/iio/adc/adi-axi-adc.c
256
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
258
return regmap_update_bits(st->regmap,
drivers/iio/adc/adi-axi-adc.c
265
static int axi_adc_read_chan_status(struct adi_axi_adc_state *st, unsigned int chan,
drivers/iio/adc/adi-axi-adc.c
270
guard(mutex)(&st->lock);
drivers/iio/adc/adi-axi-adc.c
272
ret = regmap_write(st->regmap, ADI_AXI_ADC_REG_CHAN_STATUS(chan),
drivers/iio/adc/adi-axi-adc.c
280
return regmap_read(st->regmap, ADI_AXI_ADC_REG_CHAN_STATUS(chan),
drivers/iio/adc/adi-axi-adc.c
287
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
291
ret = axi_adc_read_chan_status(st, chan, &val);
drivers/iio/adc/adi-axi-adc.c
307
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
311
ret = axi_adc_read_chan_status(st, chan, &val);
drivers/iio/adc/adi-axi-adc.c
329
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
331
return regmap_set_bits(st->regmap, ADI_AXI_REG_CHAN_CTRL(chan),
drivers/iio/adc/adi-axi-adc.c
337
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
339
return regmap_clear_bits(st->regmap, ADI_AXI_REG_CHAN_CTRL(chan),
drivers/iio/adc/adi-axi-adc.c
346
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
350
ret = regmap_read(st->regmap, ADI_AXI_ADC_REG_CONFIG, &val);
drivers/iio/adc/adi-axi-adc.c
365
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
398
return regmap_update_bits(st->regmap, ADI_AXI_ADC_REG_CNTRL_3,
drivers/iio/adc/adi-axi-adc.c
407
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
418
return regmap_clear_bits(st->regmap, ADI_AXI_ADC_REG_CNTRL_3,
drivers/iio/adc/adi-axi-adc.c
421
return regmap_set_bits(st->regmap, ADI_AXI_ADC_REG_CNTRL_3,
drivers/iio/adc/adi-axi-adc.c
429
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
432
return regmap_set_bits(st->regmap, ADI_AXI_ADC_REG_CNTRL_3,
drivers/iio/adc/adi-axi-adc.c
435
return regmap_clear_bits(st->regmap, ADI_AXI_ADC_REG_CNTRL_3,
drivers/iio/adc/adi-axi-adc.c
442
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
446
ret = regmap_set_bits(st->regmap, ADI_AXI_ADC_REG_CTRL,
drivers/iio/adc/adi-axi-adc.c
451
return regmap_read_poll_timeout(st->regmap, ADI_AXI_ADC_REG_SYNC_STATUS,
drivers/iio/adc/adi-axi-adc.c
460
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
465
return regmap_update_bits(st->regmap, ADI_AXI_ADC_REG_CTRL,
drivers/iio/adc/adi-axi-adc.c
473
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
476
if (device_property_read_string(st->dev, "dma-names", &dma_name))
drivers/iio/adc/adi-axi-adc.c
479
return iio_dmaengine_buffer_setup(st->dev, indio_dev, dma_name);
drivers/iio/adc/adi-axi-adc.c
484
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
486
regmap_write(st->regmap, ADI_AXI_REG_CONFIG_WR, val);
drivers/iio/adc/adi-axi-adc.c
487
regmap_write(st->regmap, ADI_AXI_REG_CONFIG_CTRL,
drivers/iio/adc/adi-axi-adc.c
490
regmap_write(st->regmap, ADI_AXI_REG_CONFIG_CTRL, 0x00);
drivers/iio/adc/adi-axi-adc.c
498
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
500
regmap_write(st->regmap, ADI_AXI_REG_CONFIG_CTRL,
drivers/iio/adc/adi-axi-adc.c
503
regmap_read(st->regmap, ADI_AXI_REG_CONFIG_RD, val);
drivers/iio/adc/adi-axi-adc.c
504
regmap_write(st->regmap, ADI_AXI_REG_CONFIG_CTRL, 0x00);
drivers/iio/adc/adi-axi-adc.c
512
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
515
guard(mutex)(&st->lock);
drivers/iio/adc/adi-axi-adc.c
535
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
538
guard(mutex)(&st->lock);
drivers/iio/adc/adi-axi-adc.c
562
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
drivers/iio/adc/adi-axi-adc.c
565
return regmap_read(st->regmap, reg, readval);
drivers/iio/adc/adi-axi-adc.c
567
return regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/adi-axi-adc.c
581
static int axi_adc_create_platform_device(struct adi_axi_adc_state *st,
drivers/iio/adc/adi-axi-adc.c
585
.parent = st->dev,
drivers/iio/adc/adi-axi-adc.c
589
.data = st->info->pdata,
drivers/iio/adc/adi-axi-adc.c
590
.size_data = st->info->pdata_sz,
drivers/iio/adc/adi-axi-adc.c
598
return devm_add_action_or_reset(st->dev, axi_adc_child_remove, pdev);
drivers/iio/adc/adi-axi-adc.c
677
struct adi_axi_adc_state *st;
drivers/iio/adc/adi-axi-adc.c
683
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/iio/adc/adi-axi-adc.c
684
if (!st)
drivers/iio/adc/adi-axi-adc.c
691
st->dev = dev;
drivers/iio/adc/adi-axi-adc.c
692
st->regmap = devm_regmap_init_mmio(dev, base, &axi_adc_regmap_config);
drivers/iio/adc/adi-axi-adc.c
693
if (IS_ERR(st->regmap))
drivers/iio/adc/adi-axi-adc.c
694
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/adc/adi-axi-adc.c
697
st->info = device_get_match_data(dev);
drivers/iio/adc/adi-axi-adc.c
698
if (!st->info)
drivers/iio/adc/adi-axi-adc.c
710
ret = regmap_write(st->regmap, ADI_AXI_REG_RSTN, 0);
drivers/iio/adc/adi-axi-adc.c
714
ret = regmap_read(st->regmap, ADI_AXI_REG_VERSION, &ver);
drivers/iio/adc/adi-axi-adc.c
718
if (ADI_AXI_PCORE_VER_MAJOR(ver) != ADI_AXI_PCORE_VER_MAJOR(st->info->version))
drivers/iio/adc/adi-axi-adc.c
721
ADI_AXI_PCORE_VER_MAJOR(st->info->version),
drivers/iio/adc/adi-axi-adc.c
722
ADI_AXI_PCORE_VER_MINOR(st->info->version),
drivers/iio/adc/adi-axi-adc.c
723
ADI_AXI_PCORE_VER_PATCH(st->info->version),
drivers/iio/adc/adi-axi-adc.c
728
ret = devm_iio_backend_register(dev, st->info->backend_info, st);
drivers/iio/adc/adi-axi-adc.c
735
if (!st->info->has_child_nodes)
drivers/iio/adc/adi-axi-adc.c
747
ret = axi_adc_create_platform_device(st, child);
drivers/iio/adc/at91-sama5d2_adc.c
1000
acr = at91_adc_readl(st, ACR);
drivers/iio/adc/at91-sama5d2_adc.c
1003
at91_adc_writel(st, ACR, acr);
drivers/iio/adc/at91-sama5d2_adc.c
1006
st->touch_st.sample_period_val =
drivers/iio/adc/at91-sama5d2_adc.c
1010
at91_adc_writel(st, IER, AT91_SAMA5D2_IER_PEN);
drivers/iio/adc/at91-sama5d2_adc.c
1015
static u16 at91_adc_touch_pos(struct at91_adc_state *st, int reg)
drivers/iio/adc/at91-sama5d2_adc.c
1026
if (reg == st->soc_info.platform->layout->XPOSR)
drivers/iio/adc/at91-sama5d2_adc.c
1027
val = at91_adc_readl(st, XPOSR);
drivers/iio/adc/at91-sama5d2_adc.c
1028
else if (reg == st->soc_info.platform->layout->YPOSR)
drivers/iio/adc/at91-sama5d2_adc.c
1029
val = at91_adc_readl(st, YPOSR);
drivers/iio/adc/at91-sama5d2_adc.c
1032
dev_dbg(&st->indio_dev->dev, "pos is 0\n");
drivers/iio/adc/at91-sama5d2_adc.c
1038
dev_err(&st->indio_dev->dev, "scale is 0\n");
drivers/iio/adc/at91-sama5d2_adc.c
1046
static u16 at91_adc_touch_x_pos(struct at91_adc_state *st)
drivers/iio/adc/at91-sama5d2_adc.c
1048
st->touch_st.x_pos = at91_adc_touch_pos(st, st->soc_info.platform->layout->XPOSR);
drivers/iio/adc/at91-sama5d2_adc.c
1049
return st->touch_st.x_pos;
drivers/iio/adc/at91-sama5d2_adc.c
1052
static u16 at91_adc_touch_y_pos(struct at91_adc_state *st)
drivers/iio/adc/at91-sama5d2_adc.c
1054
return at91_adc_touch_pos(st, st->soc_info.platform->layout->YPOSR);
drivers/iio/adc/at91-sama5d2_adc.c
1057
static u16 at91_adc_touch_pressure(struct at91_adc_state *st)
drivers/iio/adc/at91-sama5d2_adc.c
1066
val = at91_adc_readl(st, PRESSR);
drivers/iio/adc/at91-sama5d2_adc.c
1071
pres = rxp * (st->touch_st.x_pos * factor / 1024) *
drivers/iio/adc/at91-sama5d2_adc.c
1085
static int at91_adc_read_position(struct at91_adc_state *st, int chan, u16 *val)
drivers/iio/adc/at91-sama5d2_adc.c
1088
if (!st->touch_st.touching)
drivers/iio/adc/at91-sama5d2_adc.c
1090
if (chan == st->soc_info.platform->touch_chan_x)
drivers/iio/adc/at91-sama5d2_adc.c
1091
*val = at91_adc_touch_x_pos(st);
drivers/iio/adc/at91-sama5d2_adc.c
1092
else if (chan == st->soc_info.platform->touch_chan_y)
drivers/iio/adc/at91-sama5d2_adc.c
1093
*val = at91_adc_touch_y_pos(st);
drivers/iio/adc/at91-sama5d2_adc.c
1100
static int at91_adc_read_pressure(struct at91_adc_state *st, int chan, u16 *val)
drivers/iio/adc/at91-sama5d2_adc.c
1103
if (!st->touch_st.touching)
drivers/iio/adc/at91-sama5d2_adc.c
1105
if (chan == st->soc_info.platform->touch_chan_p)
drivers/iio/adc/at91-sama5d2_adc.c
1106
*val = at91_adc_touch_pressure(st);
drivers/iio/adc/at91-sama5d2_adc.c
1113
static void at91_adc_configure_trigger_registers(struct at91_adc_state *st,
drivers/iio/adc/at91-sama5d2_adc.c
1116
u32 status = at91_adc_readl(st, TRGR);
drivers/iio/adc/at91-sama5d2_adc.c
1122
status |= st->selected_trig->trgmod_value;
drivers/iio/adc/at91-sama5d2_adc.c
1125
at91_adc_writel(st, TRGR, status);
drivers/iio/adc/at91-sama5d2_adc.c
1131
struct at91_adc_state *st = iio_priv(indio);
drivers/iio/adc/at91-sama5d2_adc.c
1135
ret = pm_runtime_resume_and_get(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1140
at91_adc_configure_trigger_registers(st, state);
drivers/iio/adc/at91-sama5d2_adc.c
1143
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1151
struct at91_adc_state *st = iio_priv(indio);
drivers/iio/adc/at91-sama5d2_adc.c
1154
if (st->dma_st.dma_chan)
drivers/iio/adc/at91-sama5d2_adc.c
1157
enable_irq(st->irq);
drivers/iio/adc/at91-sama5d2_adc.c
1160
at91_adc_readl(st, LCDR);
drivers/iio/adc/at91-sama5d2_adc.c
1169
static int at91_adc_dma_size_done(struct at91_adc_state *st)
drivers/iio/adc/at91-sama5d2_adc.c
1175
status = dmaengine_tx_status(st->dma_st.dma_chan,
drivers/iio/adc/at91-sama5d2_adc.c
1176
st->dma_st.dma_chan->cookie,
drivers/iio/adc/at91-sama5d2_adc.c
1182
i = st->dma_st.rx_buf_sz - state.residue;
drivers/iio/adc/at91-sama5d2_adc.c
1185
if (i >= st->dma_st.buf_idx)
drivers/iio/adc/at91-sama5d2_adc.c
1186
size = i - st->dma_st.buf_idx;
drivers/iio/adc/at91-sama5d2_adc.c
1188
size = st->dma_st.rx_buf_sz + i - st->dma_st.buf_idx;
drivers/iio/adc/at91-sama5d2_adc.c
1201
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1207
if (!st->dma_st.dma_chan)
drivers/iio/adc/at91-sama5d2_adc.c
1211
st->dma_st.buf_idx = 0;
drivers/iio/adc/at91-sama5d2_adc.c
1217
st->dma_st.rx_buf_sz = 0;
drivers/iio/adc/at91-sama5d2_adc.c
1227
st->dma_st.rx_buf_sz += chan->scan_type.storagebits / 8;
drivers/iio/adc/at91-sama5d2_adc.c
1229
st->dma_st.rx_buf_sz *= st->dma_st.watermark;
drivers/iio/adc/at91-sama5d2_adc.c
1232
desc = dmaengine_prep_dma_cyclic(st->dma_st.dma_chan,
drivers/iio/adc/at91-sama5d2_adc.c
1233
st->dma_st.rx_dma_buf,
drivers/iio/adc/at91-sama5d2_adc.c
1234
st->dma_st.rx_buf_sz,
drivers/iio/adc/at91-sama5d2_adc.c
1235
st->dma_st.rx_buf_sz / 2,
drivers/iio/adc/at91-sama5d2_adc.c
1250
dmaengine_terminate_async(st->dma_st.dma_chan);
drivers/iio/adc/at91-sama5d2_adc.c
1255
at91_adc_writel(st, IER, AT91_SAMA5D2_IER_GOVRE);
drivers/iio/adc/at91-sama5d2_adc.c
1257
dma_async_issue_pending(st->dma_st.dma_chan);
drivers/iio/adc/at91-sama5d2_adc.c
1260
st->dma_st.dma_ts = iio_get_time_ns(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1268
struct at91_adc_state *st)
drivers/iio/adc/at91-sama5d2_adc.c
1271
if (st->dma_st.dma_chan)
drivers/iio/adc/at91-sama5d2_adc.c
1281
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1284
&st->touch_st.channels_bitmask,
drivers/iio/adc/at91-sama5d2_adc.c
1285
st->soc_info.platform->max_index + 1);
drivers/iio/adc/at91-sama5d2_adc.c
1292
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1296
return at91_adc_configure_touch(st, true);
drivers/iio/adc/at91-sama5d2_adc.c
1302
ret = pm_runtime_resume_and_get(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1325
at91_adc_cor(st, chan);
drivers/iio/adc/at91-sama5d2_adc.c
1327
at91_adc_writel(st, CHER, BIT(chan->channel));
drivers/iio/adc/at91-sama5d2_adc.c
1330
if (at91_adc_buffer_check_use_irq(indio_dev, st))
drivers/iio/adc/at91-sama5d2_adc.c
1331
at91_adc_writel(st, IER, AT91_SAMA5D2_IER_DRDY);
drivers/iio/adc/at91-sama5d2_adc.c
1334
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1340
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1346
return at91_adc_configure_touch(st, false);
drivers/iio/adc/at91-sama5d2_adc.c
1352
ret = pm_runtime_resume_and_get(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1375
at91_adc_writel(st, CHDR, BIT(chan->channel));
drivers/iio/adc/at91-sama5d2_adc.c
1377
if (st->dma_st.dma_chan)
drivers/iio/adc/at91-sama5d2_adc.c
1378
at91_adc_read_chan(st, chan->address);
drivers/iio/adc/at91-sama5d2_adc.c
1381
if (at91_adc_buffer_check_use_irq(indio_dev, st))
drivers/iio/adc/at91-sama5d2_adc.c
1382
at91_adc_writel(st, IDR, AT91_SAMA5D2_IER_DRDY);
drivers/iio/adc/at91-sama5d2_adc.c
1385
at91_adc_readl(st, OVER);
drivers/iio/adc/at91-sama5d2_adc.c
1388
if (st->dma_st.dma_chan)
drivers/iio/adc/at91-sama5d2_adc.c
1389
dmaengine_terminate_sync(st->dma_st.dma_chan);
drivers/iio/adc/at91-sama5d2_adc.c
1391
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1425
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1438
at91_adc_irq_status(st, &status, &eoc);
drivers/iio/adc/at91-sama5d2_adc.c
1439
at91_adc_irq_mask(st, &imr, &eoc_imr);
drivers/iio/adc/at91-sama5d2_adc.c
1466
val = at91_adc_read_chan(st, chan->address);
drivers/iio/adc/at91-sama5d2_adc.c
1467
at91_adc_adjust_val_osr(st, &val);
drivers/iio/adc/at91-sama5d2_adc.c
1468
st->buffer[i] = val;
drivers/iio/adc/at91-sama5d2_adc.c
1470
st->buffer[i] = 0;
drivers/iio/adc/at91-sama5d2_adc.c
1475
iio_push_to_buffers_with_timestamp(indio_dev, st->buffer,
drivers/iio/adc/at91-sama5d2_adc.c
1481
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1482
int transferred_len = at91_adc_dma_size_done(st);
drivers/iio/adc/at91-sama5d2_adc.c
1487
u32 status = at91_adc_readl(st, ISR);
drivers/iio/adc/at91-sama5d2_adc.c
1493
sample_size = div_s64(st->dma_st.rx_buf_sz, st->dma_st.watermark);
drivers/iio/adc/at91-sama5d2_adc.c
1501
interval = div_s64((ns - st->dma_st.dma_ts), sample_count);
drivers/iio/adc/at91-sama5d2_adc.c
1508
at91_adc_adjust_val_osr_array(st,
drivers/iio/adc/at91-sama5d2_adc.c
1509
&st->dma_st.rx_buf[st->dma_st.buf_idx],
drivers/iio/adc/at91-sama5d2_adc.c
1513
(st->dma_st.rx_buf + st->dma_st.buf_idx),
drivers/iio/adc/at91-sama5d2_adc.c
1514
(st->dma_st.dma_ts + interval * sample_index));
drivers/iio/adc/at91-sama5d2_adc.c
1518
st->dma_st.buf_idx += sample_size;
drivers/iio/adc/at91-sama5d2_adc.c
1520
if (st->dma_st.buf_idx >= st->dma_st.rx_buf_sz)
drivers/iio/adc/at91-sama5d2_adc.c
1521
st->dma_st.buf_idx = 0;
drivers/iio/adc/at91-sama5d2_adc.c
1525
st->dma_st.dma_ts = iio_get_time_ns(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1532
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1539
at91_adc_writel(st, CR, AT91_SAMA5D2_CR_START);
drivers/iio/adc/at91-sama5d2_adc.c
1541
if (st->dma_st.dma_chan)
drivers/iio/adc/at91-sama5d2_adc.c
1579
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1583
f_per = clk_get_rate(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
1588
ret = pm_runtime_resume_and_get(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1592
mr = at91_adc_readl(st, MR);
drivers/iio/adc/at91-sama5d2_adc.c
1597
at91_adc_writel(st, MR, mr);
drivers/iio/adc/at91-sama5d2_adc.c
1599
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1603
st->current_sample_rate = freq;
drivers/iio/adc/at91-sama5d2_adc.c
1606
static inline unsigned at91_adc_get_sample_freq(struct at91_adc_state *st)
drivers/iio/adc/at91-sama5d2_adc.c
1608
return st->current_sample_rate;
drivers/iio/adc/at91-sama5d2_adc.c
1613
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1619
st->soc_info.platform->max_index + 1) {
drivers/iio/adc/at91-sama5d2_adc.c
1624
at91_adc_read_position(st, chan->channel, &val);
drivers/iio/adc/at91-sama5d2_adc.c
1626
at91_adc_read_pressure(st, chan->channel, &val);
drivers/iio/adc/at91-sama5d2_adc.c
1629
st->buffer[i] = val;
drivers/iio/adc/at91-sama5d2_adc.c
1640
schedule_work(&st->touch_st.workq);
drivers/iio/adc/at91-sama5d2_adc.c
1643
static void at91_adc_pen_detect_interrupt(struct at91_adc_state *st)
drivers/iio/adc/at91-sama5d2_adc.c
1645
at91_adc_writel(st, IDR, AT91_SAMA5D2_IER_PEN);
drivers/iio/adc/at91-sama5d2_adc.c
1646
at91_adc_writel(st, IER, AT91_SAMA5D2_IER_NOPEN |
drivers/iio/adc/at91-sama5d2_adc.c
1649
at91_adc_writel(st, TRGR, AT91_SAMA5D2_TRGR_TRGMOD_PERIODIC |
drivers/iio/adc/at91-sama5d2_adc.c
1650
AT91_SAMA5D2_TRGR_TRGPER(st->touch_st.sample_period_val));
drivers/iio/adc/at91-sama5d2_adc.c
1651
st->touch_st.touching = true;
drivers/iio/adc/at91-sama5d2_adc.c
1656
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1658
at91_adc_writel(st, TRGR, AT91_SAMA5D2_TRGR_TRGMOD_NO_TRIGGER);
drivers/iio/adc/at91-sama5d2_adc.c
1659
at91_adc_writel(st, IDR, AT91_SAMA5D2_IER_NOPEN |
drivers/iio/adc/at91-sama5d2_adc.c
1662
st->touch_st.touching = false;
drivers/iio/adc/at91-sama5d2_adc.c
1666
at91_adc_writel(st, IER, AT91_SAMA5D2_IER_PEN);
drivers/iio/adc/at91-sama5d2_adc.c
1673
struct at91_adc_state *st = container_of(touch_st,
drivers/iio/adc/at91-sama5d2_adc.c
1675
struct iio_dev *indio_dev = st->indio_dev;
drivers/iio/adc/at91-sama5d2_adc.c
1677
iio_push_to_buffers(indio_dev, st->buffer);
drivers/iio/adc/at91-sama5d2_adc.c
1683
struct at91_adc_state *st = iio_priv(indio);
drivers/iio/adc/at91-sama5d2_adc.c
1688
at91_adc_irq_status(st, &status, &eoc);
drivers/iio/adc/at91-sama5d2_adc.c
1689
at91_adc_irq_mask(st, &imr, &eoc_imr);
drivers/iio/adc/at91-sama5d2_adc.c
1695
at91_adc_pen_detect_interrupt(st);
drivers/iio/adc/at91-sama5d2_adc.c
1708
status = at91_adc_readl(st, XPOSR);
drivers/iio/adc/at91-sama5d2_adc.c
1709
status = at91_adc_readl(st, YPOSR);
drivers/iio/adc/at91-sama5d2_adc.c
1710
status = at91_adc_readl(st, PRESSR);
drivers/iio/adc/at91-sama5d2_adc.c
1716
} else if (iio_buffer_enabled(indio) && st->dma_st.dma_chan) {
drivers/iio/adc/at91-sama5d2_adc.c
1722
st->conversion_value = at91_adc_read_chan(st, st->chan->address);
drivers/iio/adc/at91-sama5d2_adc.c
1723
st->conversion_done = true;
drivers/iio/adc/at91-sama5d2_adc.c
1724
wake_up_interruptible(&st->wq_data_available);
drivers/iio/adc/at91-sama5d2_adc.c
1733
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1737
ret = pm_runtime_resume_and_get(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1746
ret = at91_adc_read_position(st, chan->channel,
drivers/iio/adc/at91-sama5d2_adc.c
1750
ret = at91_adc_adjust_val_osr(st, val);
drivers/iio/adc/at91-sama5d2_adc.c
1755
ret = at91_adc_read_pressure(st, chan->channel,
drivers/iio/adc/at91-sama5d2_adc.c
1759
ret = at91_adc_adjust_val_osr(st, val);
drivers/iio/adc/at91-sama5d2_adc.c
1766
st->chan = chan;
drivers/iio/adc/at91-sama5d2_adc.c
1768
at91_adc_cor(st, chan);
drivers/iio/adc/at91-sama5d2_adc.c
1769
at91_adc_writel(st, CHER, BIT(chan->channel));
drivers/iio/adc/at91-sama5d2_adc.c
1776
at91_adc_writel(st, TEMPMR, AT91_SAMA5D2_TEMPMR_TEMPON);
drivers/iio/adc/at91-sama5d2_adc.c
1777
at91_adc_eoc_ena(st, chan->channel);
drivers/iio/adc/at91-sama5d2_adc.c
1778
at91_adc_writel(st, CR, AT91_SAMA5D2_CR_START);
drivers/iio/adc/at91-sama5d2_adc.c
1780
ret = wait_event_interruptible_timeout(st->wq_data_available,
drivers/iio/adc/at91-sama5d2_adc.c
1781
st->conversion_done,
drivers/iio/adc/at91-sama5d2_adc.c
1787
*val = st->conversion_value;
drivers/iio/adc/at91-sama5d2_adc.c
1788
ret = at91_adc_adjust_val_osr(st, val);
drivers/iio/adc/at91-sama5d2_adc.c
1792
st->conversion_done = false;
drivers/iio/adc/at91-sama5d2_adc.c
1795
at91_adc_eoc_dis(st, st->chan->channel);
drivers/iio/adc/at91-sama5d2_adc.c
1797
at91_adc_writel(st, TEMPMR, 0U);
drivers/iio/adc/at91-sama5d2_adc.c
1798
at91_adc_writel(st, CHDR, BIT(chan->channel));
drivers/iio/adc/at91-sama5d2_adc.c
1801
at91_adc_readl(st, LCDR);
drivers/iio/adc/at91-sama5d2_adc.c
1804
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1811
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1813
guard(mutex)(&st->lock);
drivers/iio/adc/at91-sama5d2_adc.c
1818
static void at91_adc_temp_sensor_configure(struct at91_adc_state *st,
drivers/iio/adc/at91-sama5d2_adc.c
1835
st->temp_st.saved_sample_rate = st->current_sample_rate;
drivers/iio/adc/at91-sama5d2_adc.c
1836
st->temp_st.saved_oversampling = st->oversampling_ratio;
drivers/iio/adc/at91-sama5d2_adc.c
1839
sample_rate = st->temp_st.saved_sample_rate;
drivers/iio/adc/at91-sama5d2_adc.c
1840
oversampling_ratio = st->temp_st.saved_oversampling;
drivers/iio/adc/at91-sama5d2_adc.c
1841
startup_time = st->soc_info.startup_time;
drivers/iio/adc/at91-sama5d2_adc.c
1846
at91_adc_setup_samp_freq(st->indio_dev, sample_rate, startup_time,
drivers/iio/adc/at91-sama5d2_adc.c
1848
at91_adc_config_emr(st, oversampling_ratio, trackx);
drivers/iio/adc/at91-sama5d2_adc.c
1854
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1855
struct at91_adc_temp_sensor_clb *clb = &st->soc_info.temp_sensor_clb;
drivers/iio/adc/at91-sama5d2_adc.c
1860
guard(mutex)(&st->lock);
drivers/iio/adc/at91-sama5d2_adc.c
1862
ret = pm_runtime_resume_and_get(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1866
at91_adc_temp_sensor_configure(st, true);
drivers/iio/adc/at91-sama5d2_adc.c
1869
tmp = at91_adc_readl(st, ACR);
drivers/iio/adc/at91-sama5d2_adc.c
1871
at91_adc_writel(st, ACR, tmp);
drivers/iio/adc/at91-sama5d2_adc.c
1878
at91_adc_writel(st, ACR, tmp);
drivers/iio/adc/at91-sama5d2_adc.c
1883
at91_adc_temp_sensor_configure(st, false);
drivers/iio/adc/at91-sama5d2_adc.c
1884
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
1905
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1918
*val = st->vref_uv / 1000;
drivers/iio/adc/at91-sama5d2_adc.c
1936
*val = at91_adc_get_sample_freq(st);
drivers/iio/adc/at91-sama5d2_adc.c
1940
*val = st->oversampling_ratio;
drivers/iio/adc/at91-sama5d2_adc.c
1952
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1958
if (val == st->oversampling_ratio)
drivers/iio/adc/at91-sama5d2_adc.c
1963
mutex_lock(&st->lock);
drivers/iio/adc/at91-sama5d2_adc.c
1965
ret = at91_adc_config_emr(st, val, 0);
drivers/iio/adc/at91-sama5d2_adc.c
1966
mutex_unlock(&st->lock);
drivers/iio/adc/at91-sama5d2_adc.c
1970
if (val < st->soc_info.min_sample_rate ||
drivers/iio/adc/at91-sama5d2_adc.c
1971
val > st->soc_info.max_sample_rate)
drivers/iio/adc/at91-sama5d2_adc.c
1976
mutex_lock(&st->lock);
drivers/iio/adc/at91-sama5d2_adc.c
1978
st->soc_info.startup_time, 0);
drivers/iio/adc/at91-sama5d2_adc.c
1979
mutex_unlock(&st->lock);
drivers/iio/adc/at91-sama5d2_adc.c
1992
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
1996
*vals = (int *)st->soc_info.platform->oversampling_avail;
drivers/iio/adc/at91-sama5d2_adc.c
1998
*length = st->soc_info.platform->oversampling_avail_no;
drivers/iio/adc/at91-sama5d2_adc.c
2005
static void at91_adc_dma_init(struct at91_adc_state *st)
drivers/iio/adc/at91-sama5d2_adc.c
2007
struct device *dev = &st->indio_dev->dev;
drivers/iio/adc/at91-sama5d2_adc.c
2010
unsigned int sample_size = st->soc_info.platform->nr_channels * 2;
drivers/iio/adc/at91-sama5d2_adc.c
2019
if (st->dma_st.dma_chan)
drivers/iio/adc/at91-sama5d2_adc.c
2022
st->dma_st.dma_chan = dma_request_chan(dev, "rx");
drivers/iio/adc/at91-sama5d2_adc.c
2023
if (IS_ERR(st->dma_st.dma_chan)) {
drivers/iio/adc/at91-sama5d2_adc.c
2025
st->dma_st.dma_chan = NULL;
drivers/iio/adc/at91-sama5d2_adc.c
2029
st->dma_st.rx_buf = dma_alloc_coherent(st->dma_st.dma_chan->device->dev,
drivers/iio/adc/at91-sama5d2_adc.c
2031
&st->dma_st.rx_dma_buf,
drivers/iio/adc/at91-sama5d2_adc.c
2033
if (!st->dma_st.rx_buf) {
drivers/iio/adc/at91-sama5d2_adc.c
2040
config.src_addr = (phys_addr_t)(st->dma_st.phys_addr
drivers/iio/adc/at91-sama5d2_adc.c
2041
+ st->soc_info.platform->layout->LCDR);
drivers/iio/adc/at91-sama5d2_adc.c
2046
if (dmaengine_slave_config(st->dma_st.dma_chan, &config)) {
drivers/iio/adc/at91-sama5d2_adc.c
2052
dma_chan_name(st->dma_st.dma_chan));
drivers/iio/adc/at91-sama5d2_adc.c
2057
dma_free_coherent(st->dma_st.dma_chan->device->dev, pages * PAGE_SIZE,
drivers/iio/adc/at91-sama5d2_adc.c
2058
st->dma_st.rx_buf, st->dma_st.rx_dma_buf);
drivers/iio/adc/at91-sama5d2_adc.c
2060
dma_release_channel(st->dma_st.dma_chan);
drivers/iio/adc/at91-sama5d2_adc.c
2061
st->dma_st.dma_chan = NULL;
drivers/iio/adc/at91-sama5d2_adc.c
2066
static void at91_adc_dma_disable(struct at91_adc_state *st)
drivers/iio/adc/at91-sama5d2_adc.c
2068
struct device *dev = &st->indio_dev->dev;
drivers/iio/adc/at91-sama5d2_adc.c
2070
unsigned int sample_size = st->soc_info.platform->nr_channels * 2;
drivers/iio/adc/at91-sama5d2_adc.c
2075
if (!st->dma_st.dma_chan)
drivers/iio/adc/at91-sama5d2_adc.c
2079
dmaengine_terminate_sync(st->dma_st.dma_chan);
drivers/iio/adc/at91-sama5d2_adc.c
2081
dma_free_coherent(st->dma_st.dma_chan->device->dev, pages * PAGE_SIZE,
drivers/iio/adc/at91-sama5d2_adc.c
2082
st->dma_st.rx_buf, st->dma_st.rx_dma_buf);
drivers/iio/adc/at91-sama5d2_adc.c
2083
dma_release_channel(st->dma_st.dma_chan);
drivers/iio/adc/at91-sama5d2_adc.c
2084
st->dma_st.dma_chan = NULL;
drivers/iio/adc/at91-sama5d2_adc.c
2091
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2097
if (!st->selected_trig->hw_trig) {
drivers/iio/adc/at91-sama5d2_adc.c
2103
st->dma_st.watermark = val;
drivers/iio/adc/at91-sama5d2_adc.c
2112
at91_adc_dma_disable(st);
drivers/iio/adc/at91-sama5d2_adc.c
2114
at91_adc_dma_init(st);
drivers/iio/adc/at91-sama5d2_adc.c
2122
at91_adc_dma_disable(st);
drivers/iio/adc/at91-sama5d2_adc.c
2130
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2132
if (bitmap_subset(scan_mask, &st->touch_st.channels_bitmask,
drivers/iio/adc/at91-sama5d2_adc.c
2133
st->soc_info.platform->max_index + 1))
drivers/iio/adc/at91-sama5d2_adc.c
2139
if (bitmap_intersects(&st->touch_st.channels_bitmask, scan_mask,
drivers/iio/adc/at91-sama5d2_adc.c
2140
st->soc_info.platform->max_index + 1))
drivers/iio/adc/at91-sama5d2_adc.c
2147
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2149
at91_adc_writel(st, CR, AT91_SAMA5D2_CR_SWRST);
drivers/iio/adc/at91-sama5d2_adc.c
2150
if (st->soc_info.platform->layout->EOC_IDR)
drivers/iio/adc/at91-sama5d2_adc.c
2151
at91_adc_writel(st, EOC_IDR, 0xffffffff);
drivers/iio/adc/at91-sama5d2_adc.c
2152
at91_adc_writel(st, IDR, 0xffffffff);
drivers/iio/adc/at91-sama5d2_adc.c
2157
at91_adc_writel(st, MR,
drivers/iio/adc/at91-sama5d2_adc.c
2160
at91_adc_setup_samp_freq(indio_dev, st->soc_info.min_sample_rate,
drivers/iio/adc/at91-sama5d2_adc.c
2161
st->soc_info.startup_time, 0);
drivers/iio/adc/at91-sama5d2_adc.c
2164
at91_adc_config_emr(st, st->oversampling_ratio, 0);
drivers/iio/adc/at91-sama5d2_adc.c
2171
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2173
return sysfs_emit(buf, "%d\n", !!st->dma_st.dma_chan);
drivers/iio/adc/at91-sama5d2_adc.c
2180
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2182
return sysfs_emit(buf, "%d\n", st->dma_st.watermark);
drivers/iio/adc/at91-sama5d2_adc.c
2213
struct at91_adc_state *st = iio_priv(indio);
drivers/iio/adc/at91-sama5d2_adc.c
2217
if (st->selected_trig->hw_trig)
drivers/iio/adc/at91-sama5d2_adc.c
2230
if (!st->selected_trig->hw_trig)
drivers/iio/adc/at91-sama5d2_adc.c
2233
st->trig = at91_adc_allocate_trigger(indio, st->selected_trig->name);
drivers/iio/adc/at91-sama5d2_adc.c
2234
if (IS_ERR(st->trig)) {
drivers/iio/adc/at91-sama5d2_adc.c
2236
return PTR_ERR(st->trig);
drivers/iio/adc/at91-sama5d2_adc.c
2243
st->dma_st.watermark = 1;
drivers/iio/adc/at91-sama5d2_adc.c
2248
static int at91_adc_temp_sensor_init(struct at91_adc_state *st,
drivers/iio/adc/at91-sama5d2_adc.c
2251
struct at91_adc_temp_sensor_clb *clb = &st->soc_info.temp_sensor_clb;
drivers/iio/adc/at91-sama5d2_adc.c
2257
if (!st->soc_info.platform->temp_sensor)
drivers/iio/adc/at91-sama5d2_adc.c
2300
struct at91_adc_state *st;
drivers/iio/adc/at91-sama5d2_adc.c
2305
indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*st));
drivers/iio/adc/at91-sama5d2_adc.c
2309
st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2310
st->indio_dev = indio_dev;
drivers/iio/adc/at91-sama5d2_adc.c
2312
st->soc_info.platform = device_get_match_data(dev);
drivers/iio/adc/at91-sama5d2_adc.c
2314
ret = at91_adc_temp_sensor_init(st, &pdev->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2317
num_channels = st->soc_info.platform->max_channels - 1;
drivers/iio/adc/at91-sama5d2_adc.c
2319
num_channels = st->soc_info.platform->max_channels;
drivers/iio/adc/at91-sama5d2_adc.c
2324
indio_dev->channels = *st->soc_info.platform->adc_channels;
drivers/iio/adc/at91-sama5d2_adc.c
2327
bitmap_set(&st->touch_st.channels_bitmask,
drivers/iio/adc/at91-sama5d2_adc.c
2328
st->soc_info.platform->touch_chan_x, 1);
drivers/iio/adc/at91-sama5d2_adc.c
2329
bitmap_set(&st->touch_st.channels_bitmask,
drivers/iio/adc/at91-sama5d2_adc.c
2330
st->soc_info.platform->touch_chan_y, 1);
drivers/iio/adc/at91-sama5d2_adc.c
2331
bitmap_set(&st->touch_st.channels_bitmask,
drivers/iio/adc/at91-sama5d2_adc.c
2332
st->soc_info.platform->touch_chan_p, 1);
drivers/iio/adc/at91-sama5d2_adc.c
2334
st->oversampling_ratio = 1;
drivers/iio/adc/at91-sama5d2_adc.c
2337
&st->soc_info.min_sample_rate);
drivers/iio/adc/at91-sama5d2_adc.c
2345
&st->soc_info.max_sample_rate);
drivers/iio/adc/at91-sama5d2_adc.c
2353
&st->soc_info.startup_time);
drivers/iio/adc/at91-sama5d2_adc.c
2367
st->selected_trig = NULL;
drivers/iio/adc/at91-sama5d2_adc.c
2370
for (i = 0; i < st->soc_info.platform->hw_trig_cnt + 1; i++)
drivers/iio/adc/at91-sama5d2_adc.c
2372
st->selected_trig = &at91_adc_trigger_list[i];
drivers/iio/adc/at91-sama5d2_adc.c
2376
if (!st->selected_trig) {
drivers/iio/adc/at91-sama5d2_adc.c
2381
init_waitqueue_head(&st->wq_data_available);
drivers/iio/adc/at91-sama5d2_adc.c
2382
mutex_init(&st->lock);
drivers/iio/adc/at91-sama5d2_adc.c
2383
INIT_WORK(&st->touch_st.workq, at91_adc_workq_handler);
drivers/iio/adc/at91-sama5d2_adc.c
2385
st->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
drivers/iio/adc/at91-sama5d2_adc.c
2386
if (IS_ERR(st->base))
drivers/iio/adc/at91-sama5d2_adc.c
2387
return PTR_ERR(st->base);
drivers/iio/adc/at91-sama5d2_adc.c
2390
st->dma_st.phys_addr = res->start;
drivers/iio/adc/at91-sama5d2_adc.c
2392
st->irq = platform_get_irq(pdev, 0);
drivers/iio/adc/at91-sama5d2_adc.c
2393
if (st->irq < 0)
drivers/iio/adc/at91-sama5d2_adc.c
2394
return st->irq;
drivers/iio/adc/at91-sama5d2_adc.c
2396
st->per_clk = devm_clk_get(&pdev->dev, "adc_clk");
drivers/iio/adc/at91-sama5d2_adc.c
2397
if (IS_ERR(st->per_clk))
drivers/iio/adc/at91-sama5d2_adc.c
2398
return PTR_ERR(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
2400
st->reg = devm_regulator_get(&pdev->dev, "vddana");
drivers/iio/adc/at91-sama5d2_adc.c
2401
if (IS_ERR(st->reg))
drivers/iio/adc/at91-sama5d2_adc.c
2402
return PTR_ERR(st->reg);
drivers/iio/adc/at91-sama5d2_adc.c
2404
st->vref = devm_regulator_get(&pdev->dev, "vref");
drivers/iio/adc/at91-sama5d2_adc.c
2405
if (IS_ERR(st->vref))
drivers/iio/adc/at91-sama5d2_adc.c
2406
return PTR_ERR(st->vref);
drivers/iio/adc/at91-sama5d2_adc.c
2408
ret = devm_request_irq(&pdev->dev, st->irq, at91_adc_interrupt, 0,
drivers/iio/adc/at91-sama5d2_adc.c
2413
ret = regulator_enable(st->reg);
drivers/iio/adc/at91-sama5d2_adc.c
2417
ret = regulator_enable(st->vref);
drivers/iio/adc/at91-sama5d2_adc.c
2421
st->vref_uv = regulator_get_voltage(st->vref);
drivers/iio/adc/at91-sama5d2_adc.c
2422
if (st->vref_uv <= 0) {
drivers/iio/adc/at91-sama5d2_adc.c
2427
ret = clk_prepare_enable(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
2432
st->dev = &pdev->dev;
drivers/iio/adc/at91-sama5d2_adc.c
2433
pm_runtime_set_autosuspend_delay(st->dev, 500);
drivers/iio/adc/at91-sama5d2_adc.c
2434
pm_runtime_use_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2435
pm_runtime_set_active(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2436
pm_runtime_enable(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2437
pm_runtime_get_noresume(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2452
if (st->selected_trig->hw_trig)
drivers/iio/adc/at91-sama5d2_adc.c
2454
st->selected_trig->name);
drivers/iio/adc/at91-sama5d2_adc.c
2457
readl_relaxed(st->base + st->soc_info.platform->layout->VERSION));
drivers/iio/adc/at91-sama5d2_adc.c
2459
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2464
at91_adc_dma_disable(st);
drivers/iio/adc/at91-sama5d2_adc.c
2466
pm_runtime_put_noidle(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2467
pm_runtime_disable(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2468
pm_runtime_set_suspended(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2469
pm_runtime_dont_use_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2470
clk_disable_unprepare(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
2472
regulator_disable(st->vref);
drivers/iio/adc/at91-sama5d2_adc.c
2474
regulator_disable(st->reg);
drivers/iio/adc/at91-sama5d2_adc.c
2481
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2484
cancel_work_sync(&st->touch_st.workq);
drivers/iio/adc/at91-sama5d2_adc.c
2486
at91_adc_dma_disable(st);
drivers/iio/adc/at91-sama5d2_adc.c
2488
pm_runtime_disable(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2489
pm_runtime_set_suspended(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2490
clk_disable_unprepare(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
2492
regulator_disable(st->vref);
drivers/iio/adc/at91-sama5d2_adc.c
2493
regulator_disable(st->reg);
drivers/iio/adc/at91-sama5d2_adc.c
2499
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2502
ret = pm_runtime_resume_and_get(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2515
at91_adc_writel(st, CR, AT91_SAMA5D2_CR_SWRST);
drivers/iio/adc/at91-sama5d2_adc.c
2517
pm_runtime_mark_last_busy(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2518
pm_runtime_put_noidle(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2519
clk_disable_unprepare(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
2520
regulator_disable(st->vref);
drivers/iio/adc/at91-sama5d2_adc.c
2521
regulator_disable(st->reg);
drivers/iio/adc/at91-sama5d2_adc.c
2529
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2536
ret = regulator_enable(st->reg);
drivers/iio/adc/at91-sama5d2_adc.c
2540
ret = regulator_enable(st->vref);
drivers/iio/adc/at91-sama5d2_adc.c
2544
ret = clk_prepare_enable(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
2548
pm_runtime_get_noresume(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2558
at91_adc_configure_trigger_registers(st, true);
drivers/iio/adc/at91-sama5d2_adc.c
2561
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2566
pm_runtime_mark_last_busy(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2567
pm_runtime_put_noidle(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
2568
clk_disable_unprepare(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
2570
regulator_disable(st->vref);
drivers/iio/adc/at91-sama5d2_adc.c
2572
regulator_disable(st->reg);
drivers/iio/adc/at91-sama5d2_adc.c
2581
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2583
clk_disable(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
2591
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
2593
return clk_enable(st->per_clk);
drivers/iio/adc/at91-sama5d2_adc.c
440
#define at91_adc_readl(st, reg) \
drivers/iio/adc/at91-sama5d2_adc.c
441
readl_relaxed((st)->base + (st)->soc_info.platform->layout->reg)
drivers/iio/adc/at91-sama5d2_adc.c
442
#define at91_adc_read_chan(st, reg) \
drivers/iio/adc/at91-sama5d2_adc.c
443
readl_relaxed((st)->base + reg)
drivers/iio/adc/at91-sama5d2_adc.c
444
#define at91_adc_writel(st, reg, val) \
drivers/iio/adc/at91-sama5d2_adc.c
445
writel_relaxed(val, (st)->base + (st)->soc_info.platform->layout->reg)
drivers/iio/adc/at91-sama5d2_adc.c
780
struct at91_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/at91-sama5d2_adc.c
789
return mask & GENMASK(st->soc_info.platform->nr_channels, 0);
drivers/iio/adc/at91-sama5d2_adc.c
792
static void at91_adc_cor(struct at91_adc_state *st,
drivers/iio/adc/at91-sama5d2_adc.c
799
cur_cor = at91_adc_readl(st, COR);
drivers/iio/adc/at91-sama5d2_adc.c
800
cor <<= st->soc_info.platform->layout->COR_diff_offset;
drivers/iio/adc/at91-sama5d2_adc.c
802
at91_adc_writel(st, COR, cur_cor | cor);
drivers/iio/adc/at91-sama5d2_adc.c
804
at91_adc_writel(st, COR, cur_cor & ~cor);
drivers/iio/adc/at91-sama5d2_adc.c
807
static void at91_adc_irq_status(struct at91_adc_state *st, u32 *status,
drivers/iio/adc/at91-sama5d2_adc.c
810
*status = at91_adc_readl(st, ISR);
drivers/iio/adc/at91-sama5d2_adc.c
811
if (st->soc_info.platform->layout->EOC_ISR)
drivers/iio/adc/at91-sama5d2_adc.c
812
*eoc = at91_adc_readl(st, EOC_ISR);
drivers/iio/adc/at91-sama5d2_adc.c
817
static void at91_adc_irq_mask(struct at91_adc_state *st, u32 *status, u32 *eoc)
drivers/iio/adc/at91-sama5d2_adc.c
819
*status = at91_adc_readl(st, IMR);
drivers/iio/adc/at91-sama5d2_adc.c
820
if (st->soc_info.platform->layout->EOC_IMR)
drivers/iio/adc/at91-sama5d2_adc.c
821
*eoc = at91_adc_readl(st, EOC_IMR);
drivers/iio/adc/at91-sama5d2_adc.c
826
static void at91_adc_eoc_dis(struct at91_adc_state *st, unsigned int channel)
drivers/iio/adc/at91-sama5d2_adc.c
833
if (!st->soc_info.platform->layout->EOC_IDR)
drivers/iio/adc/at91-sama5d2_adc.c
834
at91_adc_writel(st, IDR, BIT(channel));
drivers/iio/adc/at91-sama5d2_adc.c
837
static void at91_adc_eoc_ena(struct at91_adc_state *st, unsigned int channel)
drivers/iio/adc/at91-sama5d2_adc.c
839
if (!st->soc_info.platform->layout->EOC_IDR)
drivers/iio/adc/at91-sama5d2_adc.c
840
at91_adc_writel(st, IER, BIT(channel));
drivers/iio/adc/at91-sama5d2_adc.c
842
at91_adc_writel(st, EOC_IER, BIT(channel));
drivers/iio/adc/at91-sama5d2_adc.c
845
static int at91_adc_config_emr(struct at91_adc_state *st,
drivers/iio/adc/at91-sama5d2_adc.c
850
unsigned int osr_mask = st->soc_info.platform->osr_mask;
drivers/iio/adc/at91-sama5d2_adc.c
854
for (i = 0; i < st->soc_info.platform->oversampling_avail_no; i++) {
drivers/iio/adc/at91-sama5d2_adc.c
855
if (oversampling_ratio == st->soc_info.platform->oversampling_avail[i])
drivers/iio/adc/at91-sama5d2_adc.c
858
if (i == st->soc_info.platform->oversampling_avail_no)
drivers/iio/adc/at91-sama5d2_adc.c
885
ret = pm_runtime_resume_and_get(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
889
emr = at91_adc_readl(st, EMR);
drivers/iio/adc/at91-sama5d2_adc.c
896
at91_adc_writel(st, EMR, emr);
drivers/iio/adc/at91-sama5d2_adc.c
898
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
900
st->oversampling_ratio = oversampling_ratio;
drivers/iio/adc/at91-sama5d2_adc.c
905
static int at91_adc_adjust_val_osr(struct at91_adc_state *st, int *val)
drivers/iio/adc/at91-sama5d2_adc.c
909
if (st->oversampling_ratio == 1)
drivers/iio/adc/at91-sama5d2_adc.c
911
else if (st->oversampling_ratio == 4)
drivers/iio/adc/at91-sama5d2_adc.c
913
else if (st->oversampling_ratio == 16)
drivers/iio/adc/at91-sama5d2_adc.c
915
else if (st->oversampling_ratio == 64)
drivers/iio/adc/at91-sama5d2_adc.c
917
else if (st->oversampling_ratio == 256)
drivers/iio/adc/at91-sama5d2_adc.c
927
diff = st->soc_info.platform->chan_realbits - nbits;
drivers/iio/adc/at91-sama5d2_adc.c
933
static void at91_adc_adjust_val_osr_array(struct at91_adc_state *st, void *buf,
drivers/iio/adc/at91-sama5d2_adc.c
949
at91_adc_adjust_val_osr(st, &val);
drivers/iio/adc/at91-sama5d2_adc.c
955
static int at91_adc_configure_touch(struct at91_adc_state *st, bool state)
drivers/iio/adc/at91-sama5d2_adc.c
957
u32 clk_khz = st->current_sample_rate / 1000;
drivers/iio/adc/at91-sama5d2_adc.c
963
ret = pm_runtime_resume_and_get(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
968
at91_adc_writel(st, IDR,
drivers/iio/adc/at91-sama5d2_adc.c
970
at91_adc_writel(st, TSMR, 0);
drivers/iio/adc/at91-sama5d2_adc.c
972
pm_runtime_put_autosuspend(st->dev);
drivers/iio/adc/at91-sama5d2_adc.c
998
at91_adc_writel(st, TSMR, tsmr);
drivers/iio/adc/at91_adc.c
1001
st->use_external = of_property_read_bool(node, "atmel,adc-use-external-triggers");
drivers/iio/adc/at91_adc.c
1006
st->channels_mask = prop;
drivers/iio/adc/at91_adc.c
1008
st->sleep_mode = of_property_read_bool(node, "atmel,adc-sleep-mode");
drivers/iio/adc/at91_adc.c
1013
st->startup_time = prop;
drivers/iio/adc/at91_adc.c
1017
st->sample_hold_time = prop;
drivers/iio/adc/at91_adc.c
1022
st->vref_mv = prop;
drivers/iio/adc/at91_adc.c
1024
st->res = st->caps->high_res_bits;
drivers/iio/adc/at91_adc.c
1025
if (st->caps->low_res_bits &&
drivers/iio/adc/at91_adc.c
1028
st->res = st->caps->low_res_bits;
drivers/iio/adc/at91_adc.c
1030
dev_info(&idev->dev, "Resolution used: %u bits\n", st->res);
drivers/iio/adc/at91_adc.c
1032
st->registers = &st->caps->registers;
drivers/iio/adc/at91_adc.c
1033
st->num_channels = st->caps->num_channels;
drivers/iio/adc/at91_adc.c
1036
if (st->caps->has_ts) {
drivers/iio/adc/at91_adc.c
1037
ret = at91_adc_probe_dt_ts(node, st, &idev->dev);
drivers/iio/adc/at91_adc.c
1048
st->irq = platform_get_irq(pdev, 0);
drivers/iio/adc/at91_adc.c
1049
if (st->irq < 0)
drivers/iio/adc/at91_adc.c
1052
st->reg_base = devm_platform_ioremap_resource(pdev, 0);
drivers/iio/adc/at91_adc.c
1053
if (IS_ERR(st->reg_base))
drivers/iio/adc/at91_adc.c
1054
return PTR_ERR(st->reg_base);
drivers/iio/adc/at91_adc.c
1059
at91_adc_writel(st, AT91_ADC_CR, AT91_ADC_SWRST);
drivers/iio/adc/at91_adc.c
1060
at91_adc_writel(st, AT91_ADC_IDR, 0xFFFFFFFF);
drivers/iio/adc/at91_adc.c
1062
if (st->caps->has_tsmr)
drivers/iio/adc/at91_adc.c
1063
ret = devm_request_irq(&pdev->dev, st->irq,
drivers/iio/adc/at91_adc.c
1067
ret = devm_request_irq(&pdev->dev, st->irq,
drivers/iio/adc/at91_adc.c
1074
st->clk = devm_clk_get_enabled(&pdev->dev, "adc_clk");
drivers/iio/adc/at91_adc.c
1075
if (IS_ERR(st->clk))
drivers/iio/adc/at91_adc.c
1076
return dev_err_probe(&pdev->dev, PTR_ERR(st->clk),
drivers/iio/adc/at91_adc.c
1079
st->adc_clk = devm_clk_get_enabled(&pdev->dev, "adc_op_clk");
drivers/iio/adc/at91_adc.c
1080
if (IS_ERR(st->adc_clk))
drivers/iio/adc/at91_adc.c
1081
return dev_err_probe(&pdev->dev, PTR_ERR(st->adc_clk),
drivers/iio/adc/at91_adc.c
1089
mstrclk = clk_get_rate(st->clk);
drivers/iio/adc/at91_adc.c
1090
adc_clk = clk_get_rate(st->adc_clk);
drivers/iio/adc/at91_adc.c
1098
if (!st->startup_time)
drivers/iio/adc/at91_adc.c
1101
ticks = (*st->caps->calc_startup_ticks)(st->startup_time, adc_clk_khz);
drivers/iio/adc/at91_adc.c
1108
if (st->sample_hold_time > 0)
drivers/iio/adc/at91_adc.c
1109
shtim = round_up((st->sample_hold_time * adc_clk_khz / 1000)
drivers/iio/adc/at91_adc.c
1114
reg = AT91_ADC_PRESCAL_(prsc) & st->registers->mr_prescal_mask;
drivers/iio/adc/at91_adc.c
1115
reg |= AT91_ADC_STARTUP_(ticks) & st->registers->mr_startup_mask;
drivers/iio/adc/at91_adc.c
1116
if (st->res == st->caps->low_res_bits)
drivers/iio/adc/at91_adc.c
1118
if (st->sleep_mode)
drivers/iio/adc/at91_adc.c
1121
at91_adc_writel(st, AT91_ADC_MR, reg);
drivers/iio/adc/at91_adc.c
1129
init_waitqueue_head(&st->wq_data_avail);
drivers/iio/adc/at91_adc.c
1130
mutex_init(&st->lock);
drivers/iio/adc/at91_adc.c
1137
if (!st->touchscreen_type) {
drivers/iio/adc/at91_adc.c
1166
if (!st->touchscreen_type) {
drivers/iio/adc/at91_adc.c
1170
at91_ts_unregister(st);
drivers/iio/adc/at91_adc.c
1178
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
1181
if (!st->touchscreen_type) {
drivers/iio/adc/at91_adc.c
1185
at91_ts_unregister(st);
drivers/iio/adc/at91_adc.c
1192
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
1195
clk_disable_unprepare(st->clk);
drivers/iio/adc/at91_adc.c
1203
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
1205
clk_prepare_enable(st->clk);
drivers/iio/adc/at91_adc.c
136
#define AT91_ADC_CHAN(st, ch) \
drivers/iio/adc/at91_adc.c
137
(st->registers->channel_base + (ch * 4))
drivers/iio/adc/at91_adc.c
138
#define at91_adc_readl(st, reg) \
drivers/iio/adc/at91_adc.c
139
(readl_relaxed(st->reg_base + reg))
drivers/iio/adc/at91_adc.c
140
#define at91_adc_writel(st, reg, val) \
drivers/iio/adc/at91_adc.c
141
(writel_relaxed(val, st->reg_base + reg))
drivers/iio/adc/at91_adc.c
268
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
274
st->buffer[j] = at91_adc_readl(st, AT91_ADC_CHAN(st, chan->channel));
drivers/iio/adc/at91_adc.c
278
iio_push_to_buffers_with_timestamp(idev, st->buffer, pf->timestamp);
drivers/iio/adc/at91_adc.c
283
at91_adc_readl(st, AT91_ADC_LCDR);
drivers/iio/adc/at91_adc.c
285
enable_irq(st->irq);
drivers/iio/adc/at91_adc.c
293
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
299
st->last_value = at91_adc_readl(st, AT91_ADC_CHAN(st, st->chnb));
drivers/iio/adc/at91_adc.c
301
at91_adc_readl(st, AT91_ADC_LCDR);
drivers/iio/adc/at91_adc.c
302
st->done = true;
drivers/iio/adc/at91_adc.c
303
wake_up_interruptible(&st->wq_data_avail);
drivers/iio/adc/at91_adc.c
309
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
315
unsigned int xyz_mask_bits = st->res;
drivers/iio/adc/at91_adc.c
320
reg = at91_adc_readl(st, AT91_ADC_TSXPOSR);
drivers/iio/adc/at91_adc.c
331
reg = at91_adc_readl(st, AT91_ADC_TSYPOSR);
drivers/iio/adc/at91_adc.c
342
reg = at91_adc_readl(st, AT91_ADC_TSPRESSR);
drivers/iio/adc/at91_adc.c
350
pres = st->ts_pressure_threshold; /* no pen contacted */
drivers/iio/adc/at91_adc.c
355
if (pres < st->ts_pressure_threshold) {
drivers/iio/adc/at91_adc.c
358
input_report_abs(st->ts_input, ABS_X, x);
drivers/iio/adc/at91_adc.c
359
input_report_abs(st->ts_input, ABS_Y, y);
drivers/iio/adc/at91_adc.c
360
input_report_abs(st->ts_input, ABS_PRESSURE, pres);
drivers/iio/adc/at91_adc.c
361
input_report_key(st->ts_input, BTN_TOUCH, 1);
drivers/iio/adc/at91_adc.c
362
input_sync(st->ts_input);
drivers/iio/adc/at91_adc.c
371
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
372
u32 status = at91_adc_readl(st, st->registers->status_register);
drivers/iio/adc/at91_adc.c
375
status &= at91_adc_readl(st, AT91_ADC_IMR);
drivers/iio/adc/at91_adc.c
376
if (status & GENMASK(st->num_channels - 1, 0))
drivers/iio/adc/at91_adc.c
381
reg = at91_adc_readl(st, AT91_ADC_MR);
drivers/iio/adc/at91_adc.c
383
at91_adc_writel(st, AT91_ADC_MR, reg);
drivers/iio/adc/at91_adc.c
385
at91_adc_writel(st, AT91_ADC_IDR, AT91RL_ADC_IER_PEN);
drivers/iio/adc/at91_adc.c
386
at91_adc_writel(st, AT91_ADC_IER, AT91RL_ADC_IER_NOPEN
drivers/iio/adc/at91_adc.c
389
at91_adc_writel(st, st->registers->trigger_register,
drivers/iio/adc/at91_adc.c
391
AT91_ADC_TRGR_TRGPER_(st->ts_sample_period_val));
drivers/iio/adc/at91_adc.c
393
reg = at91_adc_readl(st, AT91_ADC_MR);
drivers/iio/adc/at91_adc.c
394
reg |= AT91_ADC_PENDBC_(st->ts_pendbc) & AT91_ADC_PENDBC;
drivers/iio/adc/at91_adc.c
395
at91_adc_writel(st, AT91_ADC_MR, reg);
drivers/iio/adc/at91_adc.c
396
at91_adc_writel(st, st->registers->trigger_register,
drivers/iio/adc/at91_adc.c
399
at91_adc_writel(st, AT91_ADC_IDR, AT91RL_ADC_IER_NOPEN
drivers/iio/adc/at91_adc.c
401
at91_adc_writel(st, AT91_ADC_IER, AT91RL_ADC_IER_PEN);
drivers/iio/adc/at91_adc.c
402
st->ts_bufferedmeasure = false;
drivers/iio/adc/at91_adc.c
403
input_report_key(st->ts_input, BTN_TOUCH, 0);
drivers/iio/adc/at91_adc.c
404
input_sync(st->ts_input);
drivers/iio/adc/at91_adc.c
405
} else if (status & AT91_ADC_EOC(3) && st->ts_input) {
drivers/iio/adc/at91_adc.c
407
if (st->ts_bufferedmeasure) {
drivers/iio/adc/at91_adc.c
413
input_report_abs(st->ts_input, ABS_X, st->ts_prev_absx);
drivers/iio/adc/at91_adc.c
414
input_report_abs(st->ts_input, ABS_Y, st->ts_prev_absy);
drivers/iio/adc/at91_adc.c
415
input_report_key(st->ts_input, BTN_TOUCH, 1);
drivers/iio/adc/at91_adc.c
416
input_sync(st->ts_input);
drivers/iio/adc/at91_adc.c
418
st->ts_bufferedmeasure = true;
drivers/iio/adc/at91_adc.c
421
st->ts_prev_absx = at91_adc_readl(st, AT91_ADC_CHAN(st, 3))
drivers/iio/adc/at91_adc.c
423
st->ts_prev_absx /= at91_adc_readl(st, AT91_ADC_CHAN(st, 2));
drivers/iio/adc/at91_adc.c
425
st->ts_prev_absy = at91_adc_readl(st, AT91_ADC_CHAN(st, 1))
drivers/iio/adc/at91_adc.c
427
st->ts_prev_absy /= at91_adc_readl(st, AT91_ADC_CHAN(st, 0));
drivers/iio/adc/at91_adc.c
436
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
437
u32 status = at91_adc_readl(st, st->registers->status_register);
drivers/iio/adc/at91_adc.c
443
if (status & GENMASK(st->num_channels - 1, 0))
drivers/iio/adc/at91_adc.c
447
at91_adc_writel(st, AT91_ADC_IDR, AT91_ADC_IER_PEN);
drivers/iio/adc/at91_adc.c
448
at91_adc_writel(st, AT91_ADC_IER, AT91_ADC_IER_NOPEN |
drivers/iio/adc/at91_adc.c
451
at91_adc_writel(st, st->registers->trigger_register,
drivers/iio/adc/at91_adc.c
453
AT91_ADC_TRGR_TRGPER_(st->ts_sample_period_val));
drivers/iio/adc/at91_adc.c
455
at91_adc_writel(st, st->registers->trigger_register, 0);
drivers/iio/adc/at91_adc.c
456
at91_adc_writel(st, AT91_ADC_IDR, AT91_ADC_IER_NOPEN |
drivers/iio/adc/at91_adc.c
458
at91_adc_writel(st, AT91_ADC_IER, AT91_ADC_IER_PEN);
drivers/iio/adc/at91_adc.c
460
input_report_key(st->ts_input, BTN_TOUCH, 0);
drivers/iio/adc/at91_adc.c
461
input_sync(st->ts_input);
drivers/iio/adc/at91_adc.c
472
at91_adc_readl(st, AT91_ADC_TSXPOSR);
drivers/iio/adc/at91_adc.c
473
at91_adc_readl(st, AT91_ADC_TSYPOSR);
drivers/iio/adc/at91_adc.c
474
at91_adc_readl(st, AT91_ADC_TSPRESSR);
drivers/iio/adc/at91_adc.c
483
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
489
if (st->touchscreen_type == ATMEL_ADC_TOUCHSCREEN_4WIRE)
drivers/iio/adc/at91_adc.c
491
else if (st->touchscreen_type == ATMEL_ADC_TOUCHSCREEN_5WIRE)
drivers/iio/adc/at91_adc.c
495
st->channels_mask &= ~rsvd_mask;
drivers/iio/adc/at91_adc.c
497
idev->num_channels = bitmap_weight(&st->channels_mask,
drivers/iio/adc/at91_adc.c
498
st->num_channels) + 1;
drivers/iio/adc/at91_adc.c
508
for_each_set_bit(bit, &st->channels_mask, st->num_channels) {
drivers/iio/adc/at91_adc.c
516
chan->scan_type.realbits = st->res;
drivers/iio/adc/at91_adc.c
533
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
536
for (i = 0; i < st->caps->trigger_number; i++) {
drivers/iio/adc/at91_adc.c
557
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
558
const struct at91_adc_reg_desc *reg = st->registers;
drivers/iio/adc/at91_adc.c
559
u32 status = at91_adc_readl(st, reg->trigger_register);
drivers/iio/adc/at91_adc.c
564
st->caps->triggers,
drivers/iio/adc/at91_adc.c
570
st->buffer = kmalloc(idev->scan_bytes, GFP_KERNEL);
drivers/iio/adc/at91_adc.c
571
if (st->buffer == NULL)
drivers/iio/adc/at91_adc.c
574
at91_adc_writel(st, reg->trigger_register,
drivers/iio/adc/at91_adc.c
578
st->num_channels) {
drivers/iio/adc/at91_adc.c
580
at91_adc_writel(st, AT91_ADC_CHER,
drivers/iio/adc/at91_adc.c
584
at91_adc_writel(st, AT91_ADC_IER, reg->drdy_mask);
drivers/iio/adc/at91_adc.c
587
at91_adc_writel(st, AT91_ADC_IDR, reg->drdy_mask);
drivers/iio/adc/at91_adc.c
589
at91_adc_writel(st, reg->trigger_register,
drivers/iio/adc/at91_adc.c
593
st->num_channels) {
drivers/iio/adc/at91_adc.c
595
at91_adc_writel(st, AT91_ADC_CHDR,
drivers/iio/adc/at91_adc.c
598
kfree(st->buffer);
drivers/iio/adc/at91_adc.c
633
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
636
st->trig = devm_kcalloc(&idev->dev,
drivers/iio/adc/at91_adc.c
637
st->caps->trigger_number, sizeof(*st->trig),
drivers/iio/adc/at91_adc.c
640
if (st->trig == NULL) {
drivers/iio/adc/at91_adc.c
645
for (i = 0; i < st->caps->trigger_number; i++) {
drivers/iio/adc/at91_adc.c
646
if (st->caps->triggers[i].is_external && !(st->use_external))
drivers/iio/adc/at91_adc.c
649
st->trig[i] = at91_adc_allocate_trigger(idev,
drivers/iio/adc/at91_adc.c
650
st->caps->triggers + i);
drivers/iio/adc/at91_adc.c
651
if (st->trig[i] == NULL) {
drivers/iio/adc/at91_adc.c
663
iio_trigger_unregister(st->trig[i]);
drivers/iio/adc/at91_adc.c
664
iio_trigger_free(st->trig[i]);
drivers/iio/adc/at91_adc.c
672
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
675
for (i = 0; i < st->caps->trigger_number; i++) {
drivers/iio/adc/at91_adc.c
676
iio_trigger_unregister(st->trig[i]);
drivers/iio/adc/at91_adc.c
677
iio_trigger_free(st->trig[i]);
drivers/iio/adc/at91_adc.c
696
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
701
mutex_lock(&st->lock);
drivers/iio/adc/at91_adc.c
703
st->chnb = chan->channel;
drivers/iio/adc/at91_adc.c
704
at91_adc_writel(st, AT91_ADC_CHER,
drivers/iio/adc/at91_adc.c
706
at91_adc_writel(st, AT91_ADC_IER, BIT(chan->channel));
drivers/iio/adc/at91_adc.c
707
at91_adc_writel(st, AT91_ADC_CR, AT91_ADC_START);
drivers/iio/adc/at91_adc.c
709
ret = wait_event_interruptible_timeout(st->wq_data_avail,
drivers/iio/adc/at91_adc.c
710
st->done,
drivers/iio/adc/at91_adc.c
716
at91_adc_writel(st, AT91_ADC_CHDR,
drivers/iio/adc/at91_adc.c
718
at91_adc_writel(st, AT91_ADC_IDR, BIT(chan->channel));
drivers/iio/adc/at91_adc.c
722
*val = st->last_value;
drivers/iio/adc/at91_adc.c
723
st->last_value = 0;
drivers/iio/adc/at91_adc.c
724
st->done = false;
drivers/iio/adc/at91_adc.c
733
mutex_unlock(&st->lock);
drivers/iio/adc/at91_adc.c
737
*val = st->vref_mv;
drivers/iio/adc/at91_adc.c
787
struct at91_adc_state *st, struct device *dev)
drivers/iio/adc/at91_adc.c
801
st->touchscreen_type = prop;
drivers/iio/adc/at91_adc.c
808
if (!st->caps->has_tsmr)
drivers/iio/adc/at91_adc.c
812
st->ts_pressure_threshold = prop;
drivers/iio/adc/at91_adc.c
813
if (st->ts_pressure_threshold) {
drivers/iio/adc/at91_adc.c
828
struct at91_adc_state *st = input_get_drvdata(dev);
drivers/iio/adc/at91_adc.c
830
if (st->caps->has_tsmr)
drivers/iio/adc/at91_adc.c
831
at91_adc_writel(st, AT91_ADC_IER, AT91_ADC_IER_PEN);
drivers/iio/adc/at91_adc.c
833
at91_adc_writel(st, AT91_ADC_IER, AT91RL_ADC_IER_PEN);
drivers/iio/adc/at91_adc.c
839
struct at91_adc_state *st = input_get_drvdata(dev);
drivers/iio/adc/at91_adc.c
841
if (st->caps->has_tsmr)
drivers/iio/adc/at91_adc.c
842
at91_adc_writel(st, AT91_ADC_IDR, AT91_ADC_IER_PEN);
drivers/iio/adc/at91_adc.c
844
at91_adc_writel(st, AT91_ADC_IDR, AT91RL_ADC_IER_PEN);
drivers/iio/adc/at91_adc.c
849
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
858
st->ts_pendbc = round_up(TOUCH_PEN_DETECT_DEBOUNCE_US * adc_clk_khz /
drivers/iio/adc/at91_adc.c
861
while (st->ts_pendbc >> ++i)
drivers/iio/adc/at91_adc.c
863
if (abs(st->ts_pendbc - (1 << i)) < abs(st->ts_pendbc - (1 << (i - 1))))
drivers/iio/adc/at91_adc.c
864
st->ts_pendbc = i;
drivers/iio/adc/at91_adc.c
866
st->ts_pendbc = i - 1;
drivers/iio/adc/at91_adc.c
868
if (!st->caps->has_tsmr) {
drivers/iio/adc/at91_adc.c
869
reg = at91_adc_readl(st, AT91_ADC_MR);
drivers/iio/adc/at91_adc.c
872
reg |= AT91_ADC_PENDBC_(st->ts_pendbc) & AT91_ADC_PENDBC;
drivers/iio/adc/at91_adc.c
873
at91_adc_writel(st, AT91_ADC_MR, reg);
drivers/iio/adc/at91_adc.c
876
at91_adc_writel(st, AT91_ADC_TSR, reg);
drivers/iio/adc/at91_adc.c
878
st->ts_sample_period_val = round_up((TOUCH_SAMPLE_PERIOD_US_RL *
drivers/iio/adc/at91_adc.c
892
if (st->touchscreen_type == ATMEL_ADC_TOUCHSCREEN_4WIRE)
drivers/iio/adc/at91_adc.c
898
reg |= AT91_ADC_TSMR_TSAV_(st->caps->ts_filter_average)
drivers/iio/adc/at91_adc.c
900
reg |= AT91_ADC_TSMR_PENDBC_(st->ts_pendbc) & AT91_ADC_TSMR_PENDBC;
drivers/iio/adc/at91_adc.c
905
at91_adc_writel(st, AT91_ADC_TSMR, reg);
drivers/iio/adc/at91_adc.c
912
at91_adc_writel(st, AT91_ADC_ACR, st->caps->ts_pen_detect_sensitivity
drivers/iio/adc/at91_adc.c
916
st->ts_sample_period_val = round_up((TOUCH_SAMPLE_PERIOD_US *
drivers/iio/adc/at91_adc.c
925
struct at91_adc_state *st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
944
if (st->caps->has_tsmr) {
drivers/iio/adc/at91_adc.c
951
if (st->touchscreen_type != ATMEL_ADC_TOUCHSCREEN_4WIRE) {
drivers/iio/adc/at91_adc.c
964
st->ts_input = input;
drivers/iio/adc/at91_adc.c
965
input_set_drvdata(input, st);
drivers/iio/adc/at91_adc.c
978
static void at91_ts_unregister(struct at91_adc_state *st)
drivers/iio/adc/at91_adc.c
980
input_unregister_device(st->ts_input);
drivers/iio/adc/at91_adc.c
989
struct at91_adc_state *st;
drivers/iio/adc/at91_adc.c
997
st = iio_priv(idev);
drivers/iio/adc/at91_adc.c
999
st->caps = of_device_get_match_data(&pdev->dev);
drivers/iio/adc/lpc32xx_adc.c
134
struct lpc32xx_adc_state *st = dev_id;
drivers/iio/adc/lpc32xx_adc.c
137
st->value = __raw_readl(LPC32XXAD_VALUE(st->adc_base)) &
drivers/iio/adc/lpc32xx_adc.c
139
complete(&st->completion);
drivers/iio/adc/lpc32xx_adc.c
146
struct lpc32xx_adc_state *st = NULL;
drivers/iio/adc/lpc32xx_adc.c
158
iodev = devm_iio_device_alloc(&pdev->dev, sizeof(*st));
drivers/iio/adc/lpc32xx_adc.c
162
st = iio_priv(iodev);
drivers/iio/adc/lpc32xx_adc.c
164
st->adc_base = devm_ioremap(&pdev->dev, res->start,
drivers/iio/adc/lpc32xx_adc.c
166
if (!st->adc_base) {
drivers/iio/adc/lpc32xx_adc.c
171
st->clk = devm_clk_get(&pdev->dev, NULL);
drivers/iio/adc/lpc32xx_adc.c
172
if (IS_ERR(st->clk)) {
drivers/iio/adc/lpc32xx_adc.c
174
return PTR_ERR(st->clk);
drivers/iio/adc/lpc32xx_adc.c
181
init_completion(&st->completion);
drivers/iio/adc/lpc32xx_adc.c
184
LPC32XXAD_NAME, st);
drivers/iio/adc/lpc32xx_adc.c
190
st->vref = devm_regulator_get(&pdev->dev, "vref");
drivers/iio/adc/lpc32xx_adc.c
191
if (IS_ERR(st->vref)) {
drivers/iio/adc/lpc32xx_adc.c
206
mutex_init(&st->lock);
drivers/iio/adc/lpc32xx_adc.c
64
struct lpc32xx_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/lpc32xx_adc.c
69
mutex_lock(&st->lock);
drivers/iio/adc/lpc32xx_adc.c
70
ret = clk_prepare_enable(st->clk);
drivers/iio/adc/lpc32xx_adc.c
72
mutex_unlock(&st->lock);
drivers/iio/adc/lpc32xx_adc.c
78
LPC32XXAD_SELECT(st->adc_base));
drivers/iio/adc/lpc32xx_adc.c
81
LPC32XXAD_CTRL(st->adc_base));
drivers/iio/adc/lpc32xx_adc.c
82
wait_for_completion(&st->completion); /* set by ISR */
drivers/iio/adc/lpc32xx_adc.c
83
clk_disable_unprepare(st->clk);
drivers/iio/adc/lpc32xx_adc.c
84
*val = st->value;
drivers/iio/adc/lpc32xx_adc.c
85
mutex_unlock(&st->lock);
drivers/iio/adc/lpc32xx_adc.c
90
*val = regulator_get_voltage(st->vref) / 1000;
drivers/iio/adc/ltc2496.c
37
struct ltc2496_driverdata *st =
drivers/iio/adc/ltc2496.c
40
.tx_buf = st->txbuf,
drivers/iio/adc/ltc2496.c
41
.rx_buf = st->rxbuf,
drivers/iio/adc/ltc2496.c
42
.len = sizeof(st->txbuf),
drivers/iio/adc/ltc2496.c
46
st->txbuf[0] = LTC2497_ENABLE | address;
drivers/iio/adc/ltc2496.c
48
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/adc/ltc2496.c
50
dev_err(&st->spi->dev, "spi_sync_transfer failed: %pe\n",
drivers/iio/adc/ltc2496.c
56
*val = ((st->rxbuf[0] & 0x3f) << 12 |
drivers/iio/adc/ltc2496.c
57
st->rxbuf[1] << 4 | st->rxbuf[2] >> 4) -
drivers/iio/adc/ltc2496.c
66
struct ltc2496_driverdata *st;
drivers/iio/adc/ltc2496.c
69
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ltc2496.c
73
st = iio_priv(indio_dev);
drivers/iio/adc/ltc2496.c
75
st->spi = spi;
drivers/iio/adc/ltc2496.c
76
st->common_ddata.result_and_measure = ltc2496_result_and_measure;
drivers/iio/adc/ltc2496.c
77
st->common_ddata.chip_info = device_get_match_data(dev);
drivers/iio/adc/ltc2497.c
107
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ltc2497.c
111
st = iio_priv(indio_dev);
drivers/iio/adc/ltc2497.c
113
st->client = client;
drivers/iio/adc/ltc2497.c
114
st->common_ddata.result_and_measure = ltc2497_result_and_measure;
drivers/iio/adc/ltc2497.c
117
st->common_ddata.chip_info = chip_info;
drivers/iio/adc/ltc2497.c
120
st->recv_size = BITS_TO_BYTES(resolution) + 1;
drivers/iio/adc/ltc2497.c
43
struct ltc2497_driverdata *st =
drivers/iio/adc/ltc2497.c
48
if (st->recv_size == 3)
drivers/iio/adc/ltc2497.c
49
ret = i2c_master_recv(st->client, (char *)&st->data.d8,
drivers/iio/adc/ltc2497.c
50
st->recv_size);
drivers/iio/adc/ltc2497.c
52
ret = i2c_master_recv(st->client, (char *)&st->data.d32,
drivers/iio/adc/ltc2497.c
53
st->recv_size);
drivers/iio/adc/ltc2497.c
55
dev_err(&st->client->dev, "i2c_master_recv failed\n");
drivers/iio/adc/ltc2497.c
65
if (st->recv_size == 3) {
drivers/iio/adc/ltc2497.c
66
*val = (get_unaligned_be24(st->data.d8) >> 6)
drivers/iio/adc/ltc2497.c
69
*val = (be32_to_cpu(st->data.d32) >> 6)
drivers/iio/adc/ltc2497.c
87
ret = i2c_smbus_write_byte(st->client,
drivers/iio/adc/ltc2497.c
90
dev_err(&st->client->dev, "i2c transfer failed: %pe\n",
drivers/iio/adc/ltc2497.c
99
struct ltc2497_driverdata *st;
drivers/iio/adc/max1027.c
279
struct max1027_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1027.c
283
if (st->spi->irq) {
drivers/iio/adc/max1027.c
284
ret = wait_for_completion_timeout(&st->complete,
drivers/iio/adc/max1027.c
286
reinit_completion(&st->complete);
drivers/iio/adc/max1027.c
302
struct max1027_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1027.c
304
st->reg = MAX1027_CONV_REG | MAX1027_SCAN_0_N;
drivers/iio/adc/max1027.c
305
st->reg |= MAX1027_CHAN(fls(*indio_dev->active_scan_mask) - 2);
drivers/iio/adc/max1027.c
307
st->reg |= MAX1027_TEMP;
drivers/iio/adc/max1027.c
309
return spi_write(st->spi, &st->reg, 1);
drivers/iio/adc/max1027.c
314
struct max1027_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1027.c
316
st->reg = MAX1027_SETUP_REG | MAX1027_REF_MODE2;
drivers/iio/adc/max1027.c
324
st->reg |= MAX1027_CKS_MODE0;
drivers/iio/adc/max1027.c
326
st->reg |= MAX1027_CKS_MODE2;
drivers/iio/adc/max1027.c
328
return spi_write(st->spi, &st->reg, 1);
drivers/iio/adc/max1027.c
336
struct max1027_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1027.c
339
st->reg = MAX1027_CONV_REG | MAX1027_CHAN(chan->channel) |
drivers/iio/adc/max1027.c
342
st->reg |= MAX1027_TEMP;
drivers/iio/adc/max1027.c
343
ret = spi_write(st->spi, &st->reg, 1);
drivers/iio/adc/max1027.c
360
ret = spi_read(st->spi, st->buffer, (chan->type == IIO_TEMP) ? 4 : 2);
drivers/iio/adc/max1027.c
364
*val = be16_to_cpu(st->buffer[0]);
drivers/iio/adc/max1027.c
374
struct max1027_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1027.c
376
guard(mutex)(&st->lock);
drivers/iio/adc/max1027.c
408
struct max1027_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1027.c
409
u8 *val = (u8 *)st->buffer;
drivers/iio/adc/max1027.c
412
int ret = spi_read(st->spi, val, 2);
drivers/iio/adc/max1027.c
413
*readval = be16_to_cpu(st->buffer[0]);
drivers/iio/adc/max1027.c
418
return spi_write(st->spi, val, 1);
drivers/iio/adc/max1027.c
447
struct max1027_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1027.c
456
ret = spi_read(st->spi, st->buffer, scanned_chans * 2);
drivers/iio/adc/max1027.c
460
iio_push_to_buffers(indio_dev, st->buffer);
drivers/iio/adc/max1027.c
468
struct max1027_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1027.c
482
complete(&st->complete);
drivers/iio/adc/max1027.c
531
struct max1027_state *st;
drivers/iio/adc/max1027.c
533
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/max1027.c
539
st = iio_priv(indio_dev);
drivers/iio/adc/max1027.c
540
st->spi = spi;
drivers/iio/adc/max1027.c
541
st->info = &max1027_chip_info_tbl[spi_get_device_id(spi)->driver_data];
drivers/iio/adc/max1027.c
543
mutex_init(&st->lock);
drivers/iio/adc/max1027.c
544
init_completion(&st->complete);
drivers/iio/adc/max1027.c
549
indio_dev->channels = st->info->channels;
drivers/iio/adc/max1027.c
550
indio_dev->num_channels = st->info->num_channels;
drivers/iio/adc/max1027.c
551
indio_dev->available_scan_masks = st->info->available_scan_masks;
drivers/iio/adc/max1027.c
553
st->buffer = devm_kmalloc_array(&indio_dev->dev,
drivers/iio/adc/max1027.c
556
if (!st->buffer)
drivers/iio/adc/max1027.c
571
st->trig = devm_iio_trigger_alloc(&spi->dev, "%s-trigger",
drivers/iio/adc/max1027.c
573
if (!st->trig) {
drivers/iio/adc/max1027.c
580
st->trig->ops = &max1027_trigger_ops;
drivers/iio/adc/max1027.c
581
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/iio/adc/max1027.c
583
st->trig);
drivers/iio/adc/max1027.c
600
st->reg = MAX1027_RST_REG;
drivers/iio/adc/max1027.c
601
ret = spi_write(st->spi, &st->reg, 1);
drivers/iio/adc/max1027.c
608
st->reg = MAX1027_AVG_REG;
drivers/iio/adc/max1027.c
609
ret = spi_write(st->spi, &st->reg, 1);
drivers/iio/adc/max11205.c
107
struct max11205_state *st;
drivers/iio/adc/max11205.c
111
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/max11205.c
115
st = iio_priv(indio_dev);
drivers/iio/adc/max11205.c
117
ad_sd_init(&st->sd, indio_dev, spi, &max11205_sigma_delta_info);
drivers/iio/adc/max11205.c
119
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/adc/max11205.c
121
indio_dev->name = st->chip_info->name;
drivers/iio/adc/max11205.c
127
st->vref = devm_regulator_get(&spi->dev, "vref");
drivers/iio/adc/max11205.c
128
if (IS_ERR(st->vref))
drivers/iio/adc/max11205.c
129
return dev_err_probe(&spi->dev, PTR_ERR(st->vref),
drivers/iio/adc/max11205.c
132
ret = regulator_enable(st->vref);
drivers/iio/adc/max11205.c
136
ret = devm_add_action_or_reset(&spi->dev, max11205_reg_disable, st->vref);
drivers/iio/adc/max11205.c
46
struct max11205_state *st = iio_priv(indio_dev);
drivers/iio/adc/max11205.c
53
reg_mv = regulator_get_voltage(st->vref);
drivers/iio/adc/max11205.c
61
*val = st->chip_info->out_data_rate;
drivers/iio/adc/max11410.c
1000
st->trig->ops = &max11410_trigger_ops;
drivers/iio/adc/max11410.c
1001
ret = devm_iio_trigger_register(dev, st->trig);
drivers/iio/adc/max11410.c
1005
ret = devm_request_threaded_irq(dev, st->irq, NULL,
drivers/iio/adc/max11410.c
1013
ret = max11410_self_calibrate(st);
drivers/iio/adc/max11410.c
172
static int max11410_write_reg(struct max11410_state *st, unsigned int reg,
drivers/iio/adc/max11410.c
179
return regmap_write(st->regmap, reg, val);
drivers/iio/adc/max11410.c
182
static int max11410_read_reg(struct max11410_state *st, unsigned int reg,
drivers/iio/adc/max11410.c
188
ret = regmap_bulk_read(st->regmap, reg, &st->scan.data, 3);
drivers/iio/adc/max11410.c
192
*val = get_unaligned_be24(&st->scan.data);
drivers/iio/adc/max11410.c
196
return regmap_read(st->regmap, reg, val);
drivers/iio/adc/max11410.c
199
static struct regulator *max11410_get_vrefp(struct max11410_state *st,
drivers/iio/adc/max11410.c
204
return st->avdd;
drivers/iio/adc/max11410.c
206
return st->vrefp[refsel];
drivers/iio/adc/max11410.c
209
static struct regulator *max11410_get_vrefn(struct max11410_state *st,
drivers/iio/adc/max11410.c
215
return st->vrefn[refsel];
drivers/iio/adc/max11410.c
342
static int max11410_set_input_mux(struct max11410_state *st, u8 ainp, u8 ainn)
drivers/iio/adc/max11410.c
348
return max11410_write_reg(st, MAX11410_REG_MUX_CTRL0,
drivers/iio/adc/max11410.c
352
static int max11410_configure_channel(struct max11410_state *st,
drivers/iio/adc/max11410.c
355
struct max11410_channel_config cfg = st->channels[chan->address];
drivers/iio/adc/max11410.c
360
ret = max11410_set_input_mux(st, chan->channel, chan->channel2);
drivers/iio/adc/max11410.c
362
ret = max11410_set_input_mux(st, chan->channel,
drivers/iio/adc/max11410.c
372
ret = regmap_update_bits(st->regmap, MAX11410_REG_CTRL,
drivers/iio/adc/max11410.c
382
ret = regmap_write(st->regmap, MAX11410_REG_PGA, regval);
drivers/iio/adc/max11410.c
392
static int max11410_sample(struct max11410_state *st, int *sample_raw,
drivers/iio/adc/max11410.c
397
ret = max11410_configure_channel(st, chan);
drivers/iio/adc/max11410.c
401
if (st->irq > 0)
drivers/iio/adc/max11410.c
402
reinit_completion(&st->completion);
drivers/iio/adc/max11410.c
405
ret = max11410_write_reg(st, MAX11410_REG_CONV_START,
drivers/iio/adc/max11410.c
410
if (st->irq > 0) {
drivers/iio/adc/max11410.c
412
ret = wait_for_completion_timeout(&st->completion,
drivers/iio/adc/max11410.c
423
true, st, MAX11410_REG_STATUS, &val);
drivers/iio/adc/max11410.c
431
return max11410_read_reg(st, MAX11410_REG_DATA0, sample_raw);
drivers/iio/adc/max11410.c
509
static int __max11410_write_samp_freq(struct max11410_state *st,
drivers/iio/adc/max11410.c
514
guard(mutex)(&st->lock);
drivers/iio/adc/max11410.c
516
ret = regmap_read(st->regmap, MAX11410_REG_FILTER, ®_val);
drivers/iio/adc/max11410.c
530
return regmap_write_bits(st->regmap, MAX11410_REG_FILTER,
drivers/iio/adc/max11410.c
538
struct max11410_state *st = iio_priv(indio_dev);
drivers/iio/adc/max11410.c
544
scale_avail = st->channels[chan->address].scale_avail;
drivers/iio/adc/max11410.c
560
st->channels[chan->address].gain = clamp_val(gain, 0, 7);
drivers/iio/adc/max11410.c
569
ret = __max11410_write_samp_freq(st, val, val2);
drivers/iio/adc/max11410.c
583
struct max11410_state *st = iio_priv(indio_dev);
drivers/iio/adc/max11410.c
589
ret = regmap_read(st->regmap, MAX11410_REG_FILTER, ®_val);
drivers/iio/adc/max11410.c
601
cfg = st->channels[chan->address];
drivers/iio/adc/max11410.c
626
struct max11410_state *st = iio_priv(indio_dev);
drivers/iio/adc/max11410.c
629
ret = max11410_read_reg(st, MAX11410_REG_DATA0, &st->scan.data);
drivers/iio/adc/max11410.c
635
iio_push_to_buffers_with_ts(indio_dev, &st->scan, sizeof(st->scan),
drivers/iio/adc/max11410.c
646
struct max11410_state *st = iio_priv(indio_dev);
drivers/iio/adc/max11410.c
651
ret = max11410_configure_channel(st, &indio_dev->channels[scan_ch]);
drivers/iio/adc/max11410.c
656
return max11410_write_reg(st, MAX11410_REG_CONV_START,
drivers/iio/adc/max11410.c
662
struct max11410_state *st = iio_priv(indio_dev);
drivers/iio/adc/max11410.c
665
return max11410_write_reg(st, MAX11410_REG_CONV_START,
drivers/iio/adc/max11410.c
682
struct max11410_state *st = iio_priv(indio_dev);
drivers/iio/adc/max11410.c
685
iio_trigger_poll_nested(st->trig);
drivers/iio/adc/max11410.c
687
complete(&st->completion);
drivers/iio/adc/max11410.c
692
static int max11410_parse_channels(struct max11410_state *st,
drivers/iio/adc/max11410.c
696
struct device *dev = &st->spi_dev->dev;
drivers/iio/adc/max11410.c
717
st->channels = devm_kcalloc(dev, num_ch, sizeof(*st->channels),
drivers/iio/adc/max11410.c
719
if (!st->channels)
drivers/iio/adc/max11410.c
747
cfg = &st->channels[chan_idx];
drivers/iio/adc/max11410.c
756
if (!max11410_get_vrefp(st, reference) ||
drivers/iio/adc/max11410.c
757
(!max11410_get_vrefn(st, reference) && reference <= 2))
drivers/iio/adc/max11410.c
788
scale = max11410_get_scale(st, *cfg);
drivers/iio/adc/max11410.c
843
static int max11410_calibrate(struct max11410_state *st, u32 cal_type)
drivers/iio/adc/max11410.c
847
ret = max11410_write_reg(st, MAX11410_REG_CAL_START, cal_type);
drivers/iio/adc/max11410.c
855
st, MAX11410_REG_STATUS, &val);
drivers/iio/adc/max11410.c
862
static int max11410_self_calibrate(struct max11410_state *st)
drivers/iio/adc/max11410.c
866
ret = regmap_write_bits(st->regmap, MAX11410_REG_FILTER,
drivers/iio/adc/max11410.c
873
ret = max11410_calibrate(st, MAX11410_CAL_START_SELF);
drivers/iio/adc/max11410.c
877
ret = regmap_write_bits(st->regmap, MAX11410_REG_PGA,
drivers/iio/adc/max11410.c
886
ret = regmap_write_bits(st->regmap, MAX11410_REG_PGA,
drivers/iio/adc/max11410.c
891
ret = max11410_calibrate(st, MAX11410_CAL_START_PGA);
drivers/iio/adc/max11410.c
897
ret = regmap_write_bits(st->regmap, MAX11410_REG_PGA,
drivers/iio/adc/max11410.c
902
ret = regmap_write_bits(st->regmap, MAX11410_REG_FILTER,
drivers/iio/adc/max11410.c
907
return regmap_write_bits(st->regmap, MAX11410_REG_PGA,
drivers/iio/adc/max11410.c
918
struct max11410_state *st;
drivers/iio/adc/max11410.c
923
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/max11410.c
927
st = iio_priv(indio_dev);
drivers/iio/adc/max11410.c
928
st->spi_dev = spi;
drivers/iio/adc/max11410.c
929
init_completion(&st->completion);
drivers/iio/adc/max11410.c
930
mutex_init(&st->lock);
drivers/iio/adc/max11410.c
936
st->regmap = devm_regmap_init_spi(spi, ®map_config);
drivers/iio/adc/max11410.c
937
if (IS_ERR(st->regmap))
drivers/iio/adc/max11410.c
938
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/adc/max11410.c
941
ret = max11410_init_vref(dev, &st->avdd, "avdd");
drivers/iio/adc/max11410.c
946
ret = max11410_init_vref(dev, &st->vrefp[i], vrefp_regs[i]);
drivers/iio/adc/max11410.c
950
ret = max11410_init_vref(dev, &st->vrefn[i], vrefn_regs[i]);
drivers/iio/adc/max11410.c
959
ret = max11410_parse_channels(st, indio_dev);
drivers/iio/adc/max11410.c
967
st->irq = irqs[0];
drivers/iio/adc/max11410.c
968
ret = regmap_write(st->regmap, MAX11410_REG_GPIO_CTRL(0),
drivers/iio/adc/max11410.c
971
st->irq = irqs[1];
drivers/iio/adc/max11410.c
972
ret = regmap_write(st->regmap, MAX11410_REG_GPIO_CTRL(1),
drivers/iio/adc/max11410.c
982
ret = regmap_set_bits(st->regmap, MAX11410_REG_CTRL,
drivers/iio/adc/max11410.c
993
if (st->irq > 0) {
drivers/iio/adc/max11410.c
994
st->trig = devm_iio_trigger_alloc(dev, "%s-dev%d",
drivers/iio/adc/max11410.c
997
if (!st->trig)
drivers/iio/adc/max1363.c
1021
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
1027
st->current_mode = max1363_match_mode(scan_mask, st->chip_info);
drivers/iio/adc/max1363.c
1028
if (!st->current_mode)
drivers/iio/adc/max1363.c
1030
max1363_set_scan_mode(st);
drivers/iio/adc/max1363.c
1433
static int max1363_initial_setup(struct max1363_state *st)
drivers/iio/adc/max1363.c
1435
st->setupbyte = MAX1363_SETUP_INT_CLOCK
drivers/iio/adc/max1363.c
1439
if (st->vref)
drivers/iio/adc/max1363.c
1440
st->setupbyte |= MAX1363_SETUP_AIN3_IS_REF_EXT_TO_REF;
drivers/iio/adc/max1363.c
1442
st->setupbyte |= MAX1363_SETUP_POWER_UP_INT_REF
drivers/iio/adc/max1363.c
1446
st->setupbyte = MAX1363_SETUP_BYTE(st->setupbyte);
drivers/iio/adc/max1363.c
1447
st->current_mode = &max1363_mode_table[st->chip_info->default_mode];
drivers/iio/adc/max1363.c
1448
st->configbyte = MAX1363_CONFIG_BYTE(st->configbyte);
drivers/iio/adc/max1363.c
1450
return max1363_set_scan_mode(st);
drivers/iio/adc/max1363.c
1455
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
1462
st->chip_info->num_modes + 1),
drivers/iio/adc/max1363.c
1467
for (i = 0; i < st->chip_info->num_modes; i++)
drivers/iio/adc/max1363.c
1469
max1363_mode_table[st->chip_info->mode_list[i]]
drivers/iio/adc/max1363.c
1481
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
1483
unsigned long numvals = bitmap_weight(st->current_mode->modemask,
drivers/iio/adc/max1363.c
1493
if (st->chip_info->bits != 8)
drivers/iio/adc/max1363.c
1494
b_sent = st->recv(st->client, st->data.buf, numvals * 2);
drivers/iio/adc/max1363.c
1496
b_sent = st->recv(st->client, st->data.buf, numvals);
drivers/iio/adc/max1363.c
1500
iio_push_to_buffers_with_ts(indio_dev, &st->data, sizeof(st->data),
drivers/iio/adc/max1363.c
1561
struct max1363_state *st;
drivers/iio/adc/max1363.c
1569
st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
1571
mutex_init(&st->lock);
drivers/iio/adc/max1363.c
1576
st->chip_info = i2c_get_match_data(client);
drivers/iio/adc/max1363.c
1577
st->client = client;
drivers/iio/adc/max1363.c
1584
st->vref_uv = ret == -ENODEV ? st->chip_info->int_vref_mv * 1000 : ret;
drivers/iio/adc/max1363.c
1587
st->send = i2c_master_send;
drivers/iio/adc/max1363.c
1588
st->recv = i2c_master_recv;
drivers/iio/adc/max1363.c
1590
&& st->chip_info->bits == 8) {
drivers/iio/adc/max1363.c
1591
st->send = max1363_smbus_send;
drivers/iio/adc/max1363.c
1592
st->recv = max1363_smbus_recv;
drivers/iio/adc/max1363.c
1602
indio_dev->channels = st->chip_info->channels;
drivers/iio/adc/max1363.c
1603
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/adc/max1363.c
1604
indio_dev->info = st->chip_info->info;
drivers/iio/adc/max1363.c
1606
ret = max1363_initial_setup(st);
drivers/iio/adc/max1363.c
1616
ret = devm_request_threaded_irq(&client->dev, st->client->irq,
drivers/iio/adc/max1363.c
342
static int max1363_write_basic_config(struct max1363_state *st)
drivers/iio/adc/max1363.c
344
u8 tx_buf[2] = { st->setupbyte, st->configbyte };
drivers/iio/adc/max1363.c
346
return st->send(st->client, tx_buf, 2);
drivers/iio/adc/max1363.c
349
static int max1363_set_scan_mode(struct max1363_state *st)
drivers/iio/adc/max1363.c
351
st->configbyte &= ~(MAX1363_CHANNEL_SEL_MASK
drivers/iio/adc/max1363.c
354
st->configbyte |= st->current_mode->conf;
drivers/iio/adc/max1363.c
356
return max1363_write_basic_config(st);
drivers/iio/adc/max1363.c
366
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
367
struct i2c_client *client = st->client;
drivers/iio/adc/max1363.c
369
guard(mutex)(&st->lock);
drivers/iio/adc/max1363.c
378
if (st->monitor_on)
drivers/iio/adc/max1363.c
382
if (st->current_mode != &max1363_mode_table[chan->address]) {
drivers/iio/adc/max1363.c
386
st->current_mode = &max1363_mode_table[chan->address];
drivers/iio/adc/max1363.c
387
ret = max1363_set_scan_mode(st);
drivers/iio/adc/max1363.c
391
if (st->chip_info->bits != 8) {
drivers/iio/adc/max1363.c
393
data = st->recv(client, rxbuf, 2);
drivers/iio/adc/max1363.c
398
((1 << st->chip_info->bits) - 1);
drivers/iio/adc/max1363.c
401
data = st->recv(client, rxbuf, 1);
drivers/iio/adc/max1363.c
418
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
432
*val = st->vref_uv / 1000;
drivers/iio/adc/max1363.c
433
*val2 = st->chip_info->bits;
drivers/iio/adc/max1363.c
687
struct max1363_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/adc/max1363.c
688
return sprintf(buf, "%d\n", max1363_monitor_speeds[st->monitor_speed]);
drivers/iio/adc/max1363.c
697
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
713
scoped_guard(mutex, &st->lock)
drivers/iio/adc/max1363.c
714
st->monitor_speed = i;
drivers/iio/adc/max1363.c
731
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
733
*val = st->thresh_low[chan->channel];
drivers/iio/adc/max1363.c
735
*val = st->thresh_high[chan->channel];
drivers/iio/adc/max1363.c
744
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
746
switch (st->chip_info->bits) {
drivers/iio/adc/max1363.c
759
st->thresh_low[chan->channel] = val;
drivers/iio/adc/max1363.c
762
st->thresh_high[chan->channel] = val;
drivers/iio/adc/max1363.c
793
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
797
u8 tx[2] = { st->setupbyte,
drivers/iio/adc/max1363.c
798
MAX1363_MON_INT_ENABLE | (st->monitor_speed << 1) | 0xF0 };
drivers/iio/adc/max1363.c
800
st->recv(st->client, &rx, 1);
drivers/iio/adc/max1363.c
804
st->send(st->client, tx, 2);
drivers/iio/adc/max1363.c
813
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
817
guard(mutex)(&st->lock);
drivers/iio/adc/max1363.c
819
val = (1 << number) & st->mask_low;
drivers/iio/adc/max1363.c
821
val = (1 << number) & st->mask_high;
drivers/iio/adc/max1363.c
826
static int max1363_monitor_mode_update(struct max1363_state *st, int enabled)
drivers/iio/adc/max1363.c
835
st->setupbyte &= ~MAX1363_SETUP_MONITOR_SETUP;
drivers/iio/adc/max1363.c
836
st->configbyte &= ~MAX1363_SCAN_MASK;
drivers/iio/adc/max1363.c
837
st->monitor_on = false;
drivers/iio/adc/max1363.c
838
return max1363_write_basic_config(st);
drivers/iio/adc/max1363.c
842
st->setupbyte |= MAX1363_SETUP_MONITOR_SETUP;
drivers/iio/adc/max1363.c
843
st->configbyte &= ~(MAX1363_CHANNEL_SEL_MASK
drivers/iio/adc/max1363.c
846
st->configbyte |= MAX1363_CONFIG_SCAN_MONITOR_MODE;
drivers/iio/adc/max1363.c
847
if ((st->mask_low | st->mask_high) & 0x0F) {
drivers/iio/adc/max1363.c
848
st->configbyte |= max1363_mode_table[s0to3].conf;
drivers/iio/adc/max1363.c
850
} else if ((st->mask_low | st->mask_high) & 0x30) {
drivers/iio/adc/max1363.c
851
st->configbyte |= max1363_mode_table[d0m1to2m3].conf;
drivers/iio/adc/max1363.c
854
st->configbyte |= max1363_mode_table[d1m0to3m2].conf;
drivers/iio/adc/max1363.c
863
tx_buf[0] = st->configbyte;
drivers/iio/adc/max1363.c
864
tx_buf[1] = st->setupbyte;
drivers/iio/adc/max1363.c
865
tx_buf[2] = (st->monitor_speed << 1);
drivers/iio/adc/max1363.c
874
if (st->mask_low & (1 << j)) {
drivers/iio/adc/max1363.c
875
tx_buf[i] = (st->thresh_low[j] >> 4) & 0xFF;
drivers/iio/adc/max1363.c
876
tx_buf[i + 1] = (st->thresh_low[j] << 4) & 0xF0;
drivers/iio/adc/max1363.c
884
if (st->mask_high & (1 << j)) {
drivers/iio/adc/max1363.c
886
(st->thresh_high[j] >> 8) & 0x0F;
drivers/iio/adc/max1363.c
887
tx_buf[i + 2] = st->thresh_high[j] & 0xFF;
drivers/iio/adc/max1363.c
899
ret = st->send(st->client, tx_buf, len);
drivers/iio/adc/max1363.c
912
tx_buf[0] = st->setupbyte;
drivers/iio/adc/max1363.c
913
tx_buf[1] = MAX1363_MON_INT_ENABLE | (st->monitor_speed << 1) | 0xF0;
drivers/iio/adc/max1363.c
914
ret = st->send(st->client, tx_buf, 2);
drivers/iio/adc/max1363.c
920
st->monitor_on = true;
drivers/iio/adc/max1363.c
950
static int __max1363_write_event_config(struct max1363_state *st,
drivers/iio/adc/max1363.c
958
guard(mutex)(&st->lock);
drivers/iio/adc/max1363.c
960
unifiedmask = st->mask_low | st->mask_high;
drivers/iio/adc/max1363.c
964
st->mask_low &= ~(1 << number);
drivers/iio/adc/max1363.c
970
st->mask_low |= (1 << number);
drivers/iio/adc/max1363.c
974
st->mask_high &= ~(1 << number);
drivers/iio/adc/max1363.c
980
st->mask_high |= (1 << number);
drivers/iio/adc/max1363.c
991
struct max1363_state *st = iio_priv(indio_dev);
drivers/iio/adc/max1363.c
997
ret = __max1363_write_event_config(st, chan, dir, state);
drivers/iio/adc/max1363.c
999
max1363_monitor_mode_update(st, !!(st->mask_high | st->mask_low));
drivers/iio/adc/max14001.c
107
if (st->spi_hw_has_lsb_first)
drivers/iio/adc/max14001.c
108
st->spi_tx_buffer.le = cpu_to_le16(addr);
drivers/iio/adc/max14001.c
110
st->spi_tx_buffer.be = cpu_to_be16(bitrev16(addr));
drivers/iio/adc/max14001.c
112
ret = spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/adc/max14001.c
121
if (st->spi_hw_has_lsb_first)
drivers/iio/adc/max14001.c
122
data = le16_to_cpu(st->spi_rx_buffer.le);
drivers/iio/adc/max14001.c
124
data = bitrev16(be16_to_cpu(st->spi_rx_buffer.be));
drivers/iio/adc/max14001.c
131
static int max14001_write(struct max14001_state *st, unsigned int reg, unsigned int val)
drivers/iio/adc/max14001.c
145
if (st->spi_hw_has_lsb_first)
drivers/iio/adc/max14001.c
146
st->spi_tx_buffer.le = cpu_to_le16(addr);
drivers/iio/adc/max14001.c
148
st->spi_tx_buffer.be = cpu_to_be16(bitrev16(addr));
drivers/iio/adc/max14001.c
150
return spi_write(st->spi, &st->spi_tx_buffer, sizeof(st->spi_tx_buffer));
drivers/iio/adc/max14001.c
155
struct max14001_state *st = context;
drivers/iio/adc/max14001.c
159
ret = max14001_write(st, MAX14001_REG_WEN, MAX14001_REG_WEN_VALUE_WRITE);
drivers/iio/adc/max14001.c
164
ret = max14001_write(st, reg, val);
drivers/iio/adc/max14001.c
169
return max14001_write(st, MAX14001_REG_WEN, 0);
drivers/iio/adc/max14001.c
172
static int max14001_write_verification_reg(struct max14001_state *st, unsigned int reg)
drivers/iio/adc/max14001.c
177
ret = regmap_read(st->regmap, reg, &val);
drivers/iio/adc/max14001.c
181
return max14001_write(st, MAX14001_REG_VERIFICATION(reg), val);
drivers/iio/adc/max14001.c
184
static int max14001_disable_mv_fault(struct max14001_state *st)
drivers/iio/adc/max14001.c
190
ret = max14001_write(st, MAX14001_REG_WEN, MAX14001_REG_WEN_VALUE_WRITE);
drivers/iio/adc/max14001.c
199
ret = max14001_write_verification_reg(st, reg);
drivers/iio/adc/max14001.c
205
return max14001_write(st, MAX14001_REG_WEN, 0);
drivers/iio/adc/max14001.c
212
struct max14001_state *st = iio_priv(indio_dev);
drivers/iio/adc/max14001.c
215
return regmap_read(st->regmap, reg, readval);
drivers/iio/adc/max14001.c
217
return regmap_write(st->regmap, reg, writeval);
drivers/iio/adc/max14001.c
224
struct max14001_state *st = iio_priv(indio_dev);
drivers/iio/adc/max14001.c
229
ret = regmap_read(st->regmap, MAX14001_REG_ADC, val);
drivers/iio/adc/max14001.c
235
*val = st->vref_mV;
drivers/iio/adc/max14001.c
294
struct max14001_state *st;
drivers/iio/adc/max14001.c
298
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/max14001.c
302
st = iio_priv(indio_dev);
drivers/iio/adc/max14001.c
303
st->spi = spi;
drivers/iio/adc/max14001.c
304
st->spi_hw_has_lsb_first = spi->mode & SPI_LSB_FIRST;
drivers/iio/adc/max14001.c
305
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/adc/max14001.c
306
if (!st->chip_info)
drivers/iio/adc/max14001.c
309
indio_dev->name = st->chip_info->name;
drivers/iio/adc/max14001.c
315
st->regmap = devm_regmap_init(dev, NULL, st, &max14001_regmap_config);
drivers/iio/adc/max14001.c
316
if (IS_ERR(st->regmap))
drivers/iio/adc/max14001.c
317
return dev_err_probe(dev, PTR_ERR(st->regmap), "Failed to initialize regmap\n");
drivers/iio/adc/max14001.c
335
st->vref_mV = ret / (MICRO / MILLI);
drivers/iio/adc/max14001.c
342
ret = regmap_set_bits(st->regmap, MAX14001_REG_CFG,
drivers/iio/adc/max14001.c
349
ret = max14001_disable_mv_fault(st);
drivers/iio/adc/max14001.c
85
struct max14001_state *st = context;
drivers/iio/adc/max14001.c
88
.tx_buf = &st->spi_tx_buffer,
drivers/iio/adc/max14001.c
89
.len = sizeof(st->spi_tx_buffer),
drivers/iio/adc/max14001.c
92
.rx_buf = &st->spi_rx_buffer,
drivers/iio/adc/max14001.c
93
.len = sizeof(st->spi_rx_buffer),
drivers/iio/adc/mxs-lradc-adc.c
440
const u32 st = state ? STMP_OFFSET_REG_SET : STMP_OFFSET_REG_CLR;
drivers/iio/adc/mxs-lradc-adc.c
442
writel(LRADC_DELAY_KICK, adc->base + (LRADC_DELAY(0) + st));
drivers/iio/adc/nau7802.c
110
static int nau7802_set_gain(struct nau7802_state *st, int gain)
drivers/iio/adc/nau7802.c
114
mutex_lock(&st->lock);
drivers/iio/adc/nau7802.c
115
st->conversion_count = 0;
drivers/iio/adc/nau7802.c
117
ret = i2c_smbus_read_byte_data(st->client, NAU7802_REG_CTRL1);
drivers/iio/adc/nau7802.c
120
ret = i2c_smbus_write_byte_data(st->client, NAU7802_REG_CTRL1,
drivers/iio/adc/nau7802.c
125
mutex_unlock(&st->lock);
drivers/iio/adc/nau7802.c
130
static int nau7802_read_conversion(struct nau7802_state *st)
drivers/iio/adc/nau7802.c
134
mutex_lock(&st->data_lock);
drivers/iio/adc/nau7802.c
135
data = i2c_smbus_read_byte_data(st->client, NAU7802_REG_ADC_B2);
drivers/iio/adc/nau7802.c
138
st->last_value = data << 16;
drivers/iio/adc/nau7802.c
140
data = i2c_smbus_read_byte_data(st->client, NAU7802_REG_ADC_B1);
drivers/iio/adc/nau7802.c
143
st->last_value |= data << 8;
drivers/iio/adc/nau7802.c
145
data = i2c_smbus_read_byte_data(st->client, NAU7802_REG_ADC_B0);
drivers/iio/adc/nau7802.c
148
st->last_value |= data;
drivers/iio/adc/nau7802.c
150
st->last_value = sign_extend32(st->last_value, 23);
drivers/iio/adc/nau7802.c
153
mutex_unlock(&st->data_lock);
drivers/iio/adc/nau7802.c
161
static int nau7802_sync(struct nau7802_state *st)
drivers/iio/adc/nau7802.c
165
ret = i2c_smbus_read_byte_data(st->client, NAU7802_REG_PUCTRL);
drivers/iio/adc/nau7802.c
168
ret = i2c_smbus_write_byte_data(st->client, NAU7802_REG_PUCTRL,
drivers/iio/adc/nau7802.c
177
struct nau7802_state *st = iio_priv(indio_dev);
drivers/iio/adc/nau7802.c
180
status = i2c_smbus_read_byte_data(st->client, NAU7802_REG_PUCTRL);
drivers/iio/adc/nau7802.c
187
if (nau7802_read_conversion(st) < 0)
drivers/iio/adc/nau7802.c
195
if (st->conversion_count < NAU7802_MIN_CONVERSIONS)
drivers/iio/adc/nau7802.c
196
st->conversion_count++;
drivers/iio/adc/nau7802.c
197
if (st->conversion_count >= NAU7802_MIN_CONVERSIONS)
drivers/iio/adc/nau7802.c
198
complete(&st->value_ok);
drivers/iio/adc/nau7802.c
207
struct nau7802_state *st = iio_priv(indio_dev);
drivers/iio/adc/nau7802.c
210
reinit_completion(&st->value_ok);
drivers/iio/adc/nau7802.c
211
enable_irq(st->client->irq);
drivers/iio/adc/nau7802.c
213
nau7802_sync(st);
drivers/iio/adc/nau7802.c
216
ret = nau7802_read_conversion(st);
drivers/iio/adc/nau7802.c
221
ret = wait_for_completion_interruptible_timeout(&st->value_ok,
drivers/iio/adc/nau7802.c
229
disable_irq(st->client->irq);
drivers/iio/adc/nau7802.c
231
*val = st->last_value;
drivers/iio/adc/nau7802.c
236
disable_irq(st->client->irq);
drivers/iio/adc/nau7802.c
245
struct nau7802_state *st = iio_priv(indio_dev);
drivers/iio/adc/nau7802.c
248
nau7802_sync(st);
drivers/iio/adc/nau7802.c
251
ret = nau7802_read_conversion(st);
drivers/iio/adc/nau7802.c
261
ret = i2c_smbus_read_byte_data(st->client, NAU7802_REG_PUCTRL);
drivers/iio/adc/nau7802.c
266
if (st->sample_rate != NAU7802_SAMP_FREQ_320)
drivers/iio/adc/nau7802.c
270
ret = i2c_smbus_read_byte_data(st->client,
drivers/iio/adc/nau7802.c
276
ret = nau7802_read_conversion(st);
drivers/iio/adc/nau7802.c
279
if (st->conversion_count < NAU7802_MIN_CONVERSIONS)
drivers/iio/adc/nau7802.c
280
st->conversion_count++;
drivers/iio/adc/nau7802.c
281
} while (st->conversion_count < NAU7802_MIN_CONVERSIONS);
drivers/iio/adc/nau7802.c
283
*val = st->last_value;
drivers/iio/adc/nau7802.c
292
struct nau7802_state *st = iio_priv(indio_dev);
drivers/iio/adc/nau7802.c
297
mutex_lock(&st->lock);
drivers/iio/adc/nau7802.c
303
ret = i2c_smbus_read_byte_data(st->client, NAU7802_REG_CTRL2);
drivers/iio/adc/nau7802.c
305
mutex_unlock(&st->lock);
drivers/iio/adc/nau7802.c
312
st->conversion_count = 0;
drivers/iio/adc/nau7802.c
313
ret = i2c_smbus_write_byte_data(st->client,
drivers/iio/adc/nau7802.c
316
NAU7802_CTRL2_CRS(st->sample_rate));
drivers/iio/adc/nau7802.c
319
mutex_unlock(&st->lock);
drivers/iio/adc/nau7802.c
324
if (st->client->irq)
drivers/iio/adc/nau7802.c
329
mutex_unlock(&st->lock);
drivers/iio/adc/nau7802.c
333
ret = i2c_smbus_read_byte_data(st->client, NAU7802_REG_CTRL1);
drivers/iio/adc/nau7802.c
341
*val = st->vref_mv;
drivers/iio/adc/nau7802.c
347
*val = nau7802_sample_freq_avail[st->sample_rate];
drivers/iio/adc/nau7802.c
362
struct nau7802_state *st = iio_priv(indio_dev);
drivers/iio/adc/nau7802.c
367
for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++)
drivers/iio/adc/nau7802.c
368
if (val2 == st->scale_avail[i])
drivers/iio/adc/nau7802.c
369
return nau7802_set_gain(st, i);
drivers/iio/adc/nau7802.c
376
mutex_lock(&st->lock);
drivers/iio/adc/nau7802.c
377
st->sample_rate = i;
drivers/iio/adc/nau7802.c
378
st->conversion_count = 0;
drivers/iio/adc/nau7802.c
379
ret = i2c_smbus_write_byte_data(st->client,
drivers/iio/adc/nau7802.c
381
NAU7802_CTRL2_CRS(st->sample_rate));
drivers/iio/adc/nau7802.c
382
mutex_unlock(&st->lock);
drivers/iio/adc/nau7802.c
412
struct nau7802_state *st;
drivers/iio/adc/nau7802.c
417
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st));
drivers/iio/adc/nau7802.c
421
st = iio_priv(indio_dev);
drivers/iio/adc/nau7802.c
427
st->client = client;
drivers/iio/adc/nau7802.c
430
ret = i2c_smbus_write_byte_data(st->client, NAU7802_REG_PUCTRL,
drivers/iio/adc/nau7802.c
436
ret = i2c_smbus_write_byte_data(st->client, NAU7802_REG_PUCTRL,
drivers/iio/adc/nau7802.c
446
ret = i2c_smbus_read_byte_data(st->client, NAU7802_REG_PUCTRL);
drivers/iio/adc/nau7802.c
453
st->vref_mv = tmp;
drivers/iio/adc/nau7802.c
460
ret = i2c_smbus_write_byte_data(st->client, NAU7802_REG_PUCTRL, data);
drivers/iio/adc/nau7802.c
463
ret = i2c_smbus_write_byte_data(st->client, NAU7802_REG_ADC_CTRL, 0x30);
drivers/iio/adc/nau7802.c
469
ret = i2c_smbus_write_byte_data(st->client, NAU7802_REG_CTRL1,
drivers/iio/adc/nau7802.c
476
for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++)
drivers/iio/adc/nau7802.c
477
st->scale_avail[i] = (((u64)st->vref_mv) * 1000000000ULL)
drivers/iio/adc/nau7802.c
480
init_completion(&st->value_ok);
drivers/iio/adc/nau7802.c
515
st->sample_rate = NAU7802_SAMP_FREQ_320;
drivers/iio/adc/nau7802.c
516
ret = i2c_smbus_write_byte_data(st->client, NAU7802_REG_CTRL2,
drivers/iio/adc/nau7802.c
517
NAU7802_CTRL2_CRS(st->sample_rate));
drivers/iio/adc/nau7802.c
526
mutex_init(&st->lock);
drivers/iio/adc/nau7802.c
527
mutex_init(&st->data_lock);
drivers/iio/adc/nau7802.c
83
struct nau7802_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/adc/nau7802.c
86
for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++)
drivers/iio/adc/nau7802.c
88
st->scale_avail[i]);
drivers/iio/adc/spear_adc.c
102
static void spear_adc_set_status(struct spear_adc_state *st, u32 val)
drivers/iio/adc/spear_adc.c
104
__raw_writel(val, &st->adc_base_spear6xx->status);
drivers/iio/adc/spear_adc.c
107
static void spear_adc_set_clk(struct spear_adc_state *st, u32 val)
drivers/iio/adc/spear_adc.c
110
u32 apb_clk = clk_get_rate(st->clk);
drivers/iio/adc/spear_adc.c
115
st->current_clk = apb_clk / count;
drivers/iio/adc/spear_adc.c
118
&st->adc_base_spear6xx->clk);
drivers/iio/adc/spear_adc.c
121
static void spear_adc_set_ctrl(struct spear_adc_state *st, int n,
drivers/iio/adc/spear_adc.c
124
__raw_writel(val, &st->adc_base_spear6xx->ch_ctrl[n]);
drivers/iio/adc/spear_adc.c
127
static u32 spear_adc_get_average(struct spear_adc_state *st)
drivers/iio/adc/spear_adc.c
129
if (device_is_compatible(st->dev, "st,spear600-adc")) {
drivers/iio/adc/spear_adc.c
130
return __raw_readl(&st->adc_base_spear6xx->average.msb) &
drivers/iio/adc/spear_adc.c
133
return __raw_readl(&st->adc_base_spear3xx->average) &
drivers/iio/adc/spear_adc.c
138
static void spear_adc_set_scanrate(struct spear_adc_state *st, u32 rate)
drivers/iio/adc/spear_adc.c
140
if (device_is_compatible(st->dev, "st,spear600-adc")) {
drivers/iio/adc/spear_adc.c
142
&st->adc_base_spear6xx->scan_rate_lo);
drivers/iio/adc/spear_adc.c
144
&st->adc_base_spear6xx->scan_rate_hi);
drivers/iio/adc/spear_adc.c
146
__raw_writel(rate, &st->adc_base_spear3xx->scan_rate);
drivers/iio/adc/spear_adc.c
156
struct spear_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/spear_adc.c
161
mutex_lock(&st->lock);
drivers/iio/adc/spear_adc.c
164
FIELD_PREP(SPEAR_ADC_STATUS_AVG_SAMPLE_MASK, st->avg_samples) |
drivers/iio/adc/spear_adc.c
167
if (st->vref_external == 0)
drivers/iio/adc/spear_adc.c
170
spear_adc_set_status(st, status);
drivers/iio/adc/spear_adc.c
171
wait_for_completion(&st->completion); /* set by ISR */
drivers/iio/adc/spear_adc.c
172
*val = st->value;
drivers/iio/adc/spear_adc.c
174
mutex_unlock(&st->lock);
drivers/iio/adc/spear_adc.c
179
*val = st->vref_external;
drivers/iio/adc/spear_adc.c
183
*val = st->current_clk;
drivers/iio/adc/spear_adc.c
196
struct spear_adc_state *st = iio_priv(indio_dev);
drivers/iio/adc/spear_adc.c
202
mutex_lock(&st->lock);
drivers/iio/adc/spear_adc.c
211
spear_adc_set_clk(st, val);
drivers/iio/adc/spear_adc.c
214
mutex_unlock(&st->lock);
drivers/iio/adc/spear_adc.c
240
struct spear_adc_state *st = dev_id;
drivers/iio/adc/spear_adc.c
243
st->value = spear_adc_get_average(st);
drivers/iio/adc/spear_adc.c
244
complete(&st->completion);
drivers/iio/adc/spear_adc.c
249
static int spear_adc_configure(struct spear_adc_state *st)
drivers/iio/adc/spear_adc.c
254
spear_adc_set_status(st, 0);
drivers/iio/adc/spear_adc.c
255
__raw_writel(0, &st->adc_base_spear6xx->clk);
drivers/iio/adc/spear_adc.c
257
spear_adc_set_ctrl(st, i, 0);
drivers/iio/adc/spear_adc.c
258
spear_adc_set_scanrate(st, 0);
drivers/iio/adc/spear_adc.c
260
spear_adc_set_clk(st, st->sampling_freq);
drivers/iio/adc/spear_adc.c
273
struct spear_adc_state *st;
drivers/iio/adc/spear_adc.c
282
st = iio_priv(indio_dev);
drivers/iio/adc/spear_adc.c
283
st->dev = dev;
drivers/iio/adc/spear_adc.c
285
init_completion(&st->completion);
drivers/iio/adc/spear_adc.c
286
mutex_init(&st->lock);
drivers/iio/adc/spear_adc.c
293
st->adc_base_spear6xx = devm_platform_ioremap_resource(pdev, 0);
drivers/iio/adc/spear_adc.c
294
if (IS_ERR(st->adc_base_spear6xx))
drivers/iio/adc/spear_adc.c
295
return PTR_ERR(st->adc_base_spear6xx);
drivers/iio/adc/spear_adc.c
297
st->adc_base_spear3xx =
drivers/iio/adc/spear_adc.c
298
(struct adc_regs_spear3xx __iomem *)st->adc_base_spear6xx;
drivers/iio/adc/spear_adc.c
300
st->clk = devm_clk_get_enabled(dev, NULL);
drivers/iio/adc/spear_adc.c
301
if (IS_ERR(st->clk))
drivers/iio/adc/spear_adc.c
302
return dev_err_probe(dev, PTR_ERR(st->clk),
drivers/iio/adc/spear_adc.c
310
st);
drivers/iio/adc/spear_adc.c
314
if (device_property_read_u32(dev, "sampling-frequency", &st->sampling_freq))
drivers/iio/adc/spear_adc.c
322
device_property_read_u32(dev, "average-samples", &st->avg_samples);
drivers/iio/adc/spear_adc.c
328
device_property_read_u32(dev, "vref-external", &st->vref_external);
drivers/iio/adc/spear_adc.c
330
spear_adc_configure(st);
drivers/iio/adc/ti-adc108s102.c
114
struct adc108s102_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-adc108s102.c
123
st->tx_buf[cmds++] = cpu_to_be16(ADC108S102_CMD(bit));
drivers/iio/adc/ti-adc108s102.c
126
st->tx_buf[cmds++] = 0x00;
drivers/iio/adc/ti-adc108s102.c
129
st->ring_xfer.tx_buf = &st->tx_buf[0];
drivers/iio/adc/ti-adc108s102.c
130
st->ring_xfer.rx_buf = &st->rx_buf[0];
drivers/iio/adc/ti-adc108s102.c
131
st->ring_xfer.len = cmds * sizeof(st->tx_buf[0]);
drivers/iio/adc/ti-adc108s102.c
133
spi_message_init_with_transfers(&st->ring_msg, &st->ring_xfer, 1);
drivers/iio/adc/ti-adc108s102.c
142
struct adc108s102_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-adc108s102.c
145
ret = spi_sync(st->spi, &st->ring_msg);
drivers/iio/adc/ti-adc108s102.c
151
&st->rx_buf[1],
drivers/iio/adc/ti-adc108s102.c
152
st->ring_xfer.len - sizeof(st->rx_buf[1]),
drivers/iio/adc/ti-adc108s102.c
161
static int adc108s102_scan_direct(struct adc108s102_state *st, unsigned int ch)
drivers/iio/adc/ti-adc108s102.c
165
st->tx_buf[0] = cpu_to_be16(ADC108S102_CMD(ch));
drivers/iio/adc/ti-adc108s102.c
166
ret = spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ti-adc108s102.c
171
return be16_to_cpu(st->rx_buf[1]);
drivers/iio/adc/ti-adc108s102.c
178
struct adc108s102_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-adc108s102.c
186
ret = adc108s102_scan_direct(st, chan->address);
drivers/iio/adc/ti-adc108s102.c
200
*val = st->va_millivolt;
drivers/iio/adc/ti-adc108s102.c
218
struct adc108s102_state *st;
drivers/iio/adc/ti-adc108s102.c
222
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ti-adc108s102.c
226
st = iio_priv(indio_dev);
drivers/iio/adc/ti-adc108s102.c
229
st->va_millivolt = ADC108S102_VA_MV_ACPI_DEFAULT;
drivers/iio/adc/ti-adc108s102.c
235
st->va_millivolt = ret / 1000;
drivers/iio/adc/ti-adc108s102.c
238
st->spi = spi;
drivers/iio/adc/ti-adc108s102.c
247
st->scan_single_xfer.tx_buf = st->tx_buf;
drivers/iio/adc/ti-adc108s102.c
248
st->scan_single_xfer.rx_buf = st->rx_buf;
drivers/iio/adc/ti-adc108s102.c
249
st->scan_single_xfer.len = 2 * sizeof(st->tx_buf[0]);
drivers/iio/adc/ti-adc108s102.c
251
spi_message_init_with_transfers(&st->scan_single_msg,
drivers/iio/adc/ti-adc108s102.c
252
&st->scan_single_xfer, 1);
drivers/iio/adc/ti-ads1119.c
118
static int ads1119_upd_cfg_reg(struct ads1119_state *st, unsigned int fields,
drivers/iio/adc/ti-ads1119.c
121
unsigned int config = st->cached_config;
drivers/iio/adc/ti-ads1119.c
127
ret = i2c_smbus_write_byte_data(st->client, ADS1119_CMD_WREG, config);
drivers/iio/adc/ti-ads1119.c
131
st->cached_config = config;
drivers/iio/adc/ti-ads1119.c
136
static bool ads1119_data_ready(struct ads1119_state *st)
drivers/iio/adc/ti-ads1119.c
140
status = i2c_smbus_read_byte_data(st->client, ADS1119_CMD_RREG_STATUS);
drivers/iio/adc/ti-ads1119.c
147
static int ads1119_reset(struct ads1119_state *st)
drivers/iio/adc/ti-ads1119.c
149
st->cached_config = 0;
drivers/iio/adc/ti-ads1119.c
151
if (!st->reset_gpio)
drivers/iio/adc/ti-ads1119.c
152
return i2c_smbus_write_byte(st->client, ADS1119_CMD_RESET);
drivers/iio/adc/ti-ads1119.c
154
gpiod_set_value_cansleep(st->reset_gpio, 1);
drivers/iio/adc/ti-ads1119.c
156
gpiod_set_value_cansleep(st->reset_gpio, 0);
drivers/iio/adc/ti-ads1119.c
162
static int ads1119_set_conv_mode(struct ads1119_state *st, bool continuous)
drivers/iio/adc/ti-ads1119.c
171
return ads1119_upd_cfg_reg(st, ADS1119_CONFIG_CM_FIELD,
drivers/iio/adc/ti-ads1119.c
198
static int ads1119_configure_channel(struct ads1119_state *st, int mux,
drivers/iio/adc/ti-ads1119.c
203
ret = ads1119_upd_cfg_reg(st, ADS1119_CONFIG_MUX_FIELD,
drivers/iio/adc/ti-ads1119.c
208
ret = ads1119_upd_cfg_reg(st, ADS1119_CONFIG_GAIN_FIELD,
drivers/iio/adc/ti-ads1119.c
214
return ads1119_upd_cfg_reg(st, ADS1119_CONFIG_DR_FIELD,
drivers/iio/adc/ti-ads1119.c
219
static int ads1119_poll_data_ready(struct ads1119_state *st,
drivers/iio/adc/ti-ads1119.c
222
unsigned int datarate = st->channels_cfg[chan->address].datarate;
drivers/iio/adc/ti-ads1119.c
231
ADS1119_MAX_DRDY_TIMEOUT, false, st);
drivers/iio/adc/ti-ads1119.c
234
static int ads1119_read_data(struct ads1119_state *st,
drivers/iio/adc/ti-ads1119.c
243
if (!st->client->irq) {
drivers/iio/adc/ti-ads1119.c
244
ret = ads1119_poll_data_ready(st, chan);
drivers/iio/adc/ti-ads1119.c
247
} else if (!wait_for_completion_timeout(&st->completion, timeout)) {
drivers/iio/adc/ti-ads1119.c
251
ret = i2c_smbus_read_word_swapped(st->client, ADS1119_CMD_RDATA);
drivers/iio/adc/ti-ads1119.c
260
static int ads1119_single_conversion(struct ads1119_state *st,
drivers/iio/adc/ti-ads1119.c
265
struct device *dev = &st->client->dev;
drivers/iio/adc/ti-ads1119.c
266
int mux = st->channels_cfg[chan->address].mux;
drivers/iio/adc/ti-ads1119.c
267
int gain = st->channels_cfg[chan->address].gain;
drivers/iio/adc/ti-ads1119.c
268
int datarate = st->channels_cfg[chan->address].datarate;
drivers/iio/adc/ti-ads1119.c
279
ret = ads1119_configure_channel(st, mux, gain, datarate);
drivers/iio/adc/ti-ads1119.c
283
if (st->client->irq)
drivers/iio/adc/ti-ads1119.c
284
reinit_completion(&st->completion);
drivers/iio/adc/ti-ads1119.c
286
ret = i2c_smbus_write_byte(st->client, ADS1119_CMD_START_SYNC);
drivers/iio/adc/ti-ads1119.c
290
ret = ads1119_read_data(st, chan, &sample);
drivers/iio/adc/ti-ads1119.c
301
static int ads1119_validate_datarate(struct ads1119_state *st, int datarate)
drivers/iio/adc/ti-ads1119.c
339
struct ads1119_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
343
if (index >= st->num_channels_cfg)
drivers/iio/adc/ti-ads1119.c
350
ret = ads1119_single_conversion(st, chan, val, false);
drivers/iio/adc/ti-ads1119.c
356
ret = ads1119_single_conversion(st, chan, val, true);
drivers/iio/adc/ti-ads1119.c
360
*val = st->vref_uV / 1000;
drivers/iio/adc/ti-ads1119.c
361
*val /= st->channels_cfg[index].gain;
drivers/iio/adc/ti-ads1119.c
365
*val = st->channels_cfg[index].datarate;
drivers/iio/adc/ti-ads1119.c
376
struct ads1119_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
380
if (index >= st->num_channels_cfg)
drivers/iio/adc/ti-ads1119.c
389
st->channels_cfg[index].gain = ret;
drivers/iio/adc/ti-ads1119.c
392
ret = ads1119_validate_datarate(st, val);
drivers/iio/adc/ti-ads1119.c
396
st->channels_cfg[index].datarate = ret;
drivers/iio/adc/ti-ads1119.c
407
struct ads1119_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
414
ret = i2c_smbus_read_byte_data(st->client,
drivers/iio/adc/ti-ads1119.c
426
return i2c_smbus_write_byte_data(st->client, ADS1119_CMD_WREG,
drivers/iio/adc/ti-ads1119.c
439
struct ads1119_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
440
struct device *dev = &st->client->dev;
drivers/iio/adc/ti-ads1119.c
447
ret = ads1119_set_conv_mode(st, true);
drivers/iio/adc/ti-ads1119.c
451
ret = ads1119_configure_channel(st,
drivers/iio/adc/ti-ads1119.c
452
st->channels_cfg[index].mux,
drivers/iio/adc/ti-ads1119.c
453
st->channels_cfg[index].gain,
drivers/iio/adc/ti-ads1119.c
454
st->channels_cfg[index].datarate);
drivers/iio/adc/ti-ads1119.c
462
ret = i2c_smbus_write_byte(st->client, ADS1119_CMD_START_SYNC);
drivers/iio/adc/ti-ads1119.c
471
struct ads1119_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
472
struct device *dev = &st->client->dev;
drivers/iio/adc/ti-ads1119.c
475
ret = ads1119_set_conv_mode(st, false);
drivers/iio/adc/ti-ads1119.c
497
struct ads1119_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
502
complete(&st->completion);
drivers/iio/adc/ti-ads1119.c
511
struct ads1119_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
523
ret = ads1119_poll_data_ready(st, &indio_dev->channels[index]);
drivers/iio/adc/ti-ads1119.c
525
dev_err(&st->client->dev,
drivers/iio/adc/ti-ads1119.c
531
ret = i2c_smbus_read_word_swapped(st->client, ADS1119_CMD_RDATA);
drivers/iio/adc/ti-ads1119.c
533
dev_err(&st->client->dev,
drivers/iio/adc/ti-ads1119.c
547
static int ads1119_init(struct ads1119_state *st, bool vref_external)
drivers/iio/adc/ti-ads1119.c
551
ret = ads1119_reset(st);
drivers/iio/adc/ti-ads1119.c
556
return ads1119_upd_cfg_reg(st,
drivers/iio/adc/ti-ads1119.c
603
struct ads1119_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
605
struct device *dev = &st->client->dev;
drivers/iio/adc/ti-ads1119.c
611
st->num_channels_cfg = device_get_child_node_count(dev);
drivers/iio/adc/ti-ads1119.c
612
if (st->num_channels_cfg > ADS1119_MAX_CHANNELS)
drivers/iio/adc/ti-ads1119.c
615
st->num_channels_cfg,
drivers/iio/adc/ti-ads1119.c
618
st->channels_cfg = devm_kcalloc(dev, st->num_channels_cfg,
drivers/iio/adc/ti-ads1119.c
619
sizeof(*st->channels_cfg), GFP_KERNEL);
drivers/iio/adc/ti-ads1119.c
620
if (!st->channels_cfg)
drivers/iio/adc/ti-ads1119.c
624
num_channels = st->num_channels_cfg + 1;
drivers/iio/adc/ti-ads1119.c
654
st->channels_cfg[i].mux = ret;
drivers/iio/adc/ti-ads1119.c
655
st->channels_cfg[i].gain = ADS1119_DEFAULT_GAIN;
drivers/iio/adc/ti-ads1119.c
656
st->channels_cfg[i].datarate = ADS1119_DEFAULT_DATARATE;
drivers/iio/adc/ti-ads1119.c
669
st->channels_cfg[i].mux);
drivers/iio/adc/ti-ads1119.c
686
struct ads1119_state *st = data;
drivers/iio/adc/ti-ads1119.c
688
i2c_smbus_write_byte(st->client, ADS1119_CMD_POWERDOWN);
drivers/iio/adc/ti-ads1119.c
694
struct ads1119_state *st;
drivers/iio/adc/ti-ads1119.c
699
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/adc/ti-ads1119.c
703
st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
704
st->client = client;
drivers/iio/adc/ti-ads1119.c
719
st->vref_uV = devm_regulator_get_enable_read_voltage(dev, "vref");
drivers/iio/adc/ti-ads1119.c
720
if (st->vref_uV == -ENODEV) {
drivers/iio/adc/ti-ads1119.c
722
st->vref_uV = ADS1119_VREF_INTERNAL_VAL;
drivers/iio/adc/ti-ads1119.c
723
} else if (st->vref_uV < 0) {
drivers/iio/adc/ti-ads1119.c
724
return dev_err_probe(dev, st->vref_uV, "Failed to get vref\n");
drivers/iio/adc/ti-ads1119.c
727
st->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
drivers/iio/adc/ti-ads1119.c
728
if (IS_ERR(st->reset_gpio))
drivers/iio/adc/ti-ads1119.c
729
return dev_err_probe(dev, PTR_ERR(st->reset_gpio),
drivers/iio/adc/ti-ads1119.c
736
init_completion(&st->completion);
drivers/iio/adc/ti-ads1119.c
750
st->trig = devm_iio_trigger_alloc(dev, "%s-dev%d",
drivers/iio/adc/ti-ads1119.c
753
if (!st->trig)
drivers/iio/adc/ti-ads1119.c
756
st->trig->ops = &ads1119_trigger_ops;
drivers/iio/adc/ti-ads1119.c
757
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/iio/adc/ti-ads1119.c
759
ret = devm_iio_trigger_register(dev, st->trig);
drivers/iio/adc/ti-ads1119.c
765
ret = ads1119_init(st, vref_external);
drivers/iio/adc/ti-ads1119.c
779
ret = devm_add_action_or_reset(dev, ads1119_powerdown, st);
drivers/iio/adc/ti-ads1119.c
789
struct ads1119_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads1119.c
791
return i2c_smbus_write_byte(st->client, ADS1119_CMD_POWERDOWN);
drivers/iio/adc/ti-ads131e08.c
162
static int ads131e08_exec_cmd(struct ads131e08_state *st, u8 cmd)
drivers/iio/adc/ti-ads131e08.c
166
ret = spi_write_then_read(st->spi, &cmd, 1, NULL, 0);
drivers/iio/adc/ti-ads131e08.c
168
dev_err(&st->spi->dev, "Exec cmd(%02x) failed\n", cmd);
drivers/iio/adc/ti-ads131e08.c
173
static int ads131e08_read_reg(struct ads131e08_state *st, u8 reg)
drivers/iio/adc/ti-ads131e08.c
178
.tx_buf = &st->tx_buf,
drivers/iio/adc/ti-ads131e08.c
181
.value = st->sdecode_delay_us,
drivers/iio/adc/ti-ads131e08.c
185
.rx_buf = &st->rx_buf,
drivers/iio/adc/ti-ads131e08.c
190
st->tx_buf[0] = ADS131E08_CMD_RREG(reg);
drivers/iio/adc/ti-ads131e08.c
191
st->tx_buf[1] = 0;
drivers/iio/adc/ti-ads131e08.c
193
ret = spi_sync_transfer(st->spi, transfer, ARRAY_SIZE(transfer));
drivers/iio/adc/ti-ads131e08.c
195
dev_err(&st->spi->dev, "Read register failed\n");
drivers/iio/adc/ti-ads131e08.c
199
return st->rx_buf[0];
drivers/iio/adc/ti-ads131e08.c
202
static int ads131e08_write_reg(struct ads131e08_state *st, u8 reg, u8 value)
drivers/iio/adc/ti-ads131e08.c
207
.tx_buf = &st->tx_buf,
drivers/iio/adc/ti-ads131e08.c
210
.value = st->sdecode_delay_us,
drivers/iio/adc/ti-ads131e08.c
216
st->tx_buf[0] = ADS131E08_CMD_WREG(reg);
drivers/iio/adc/ti-ads131e08.c
217
st->tx_buf[1] = 0;
drivers/iio/adc/ti-ads131e08.c
218
st->tx_buf[2] = value;
drivers/iio/adc/ti-ads131e08.c
220
ret = spi_sync_transfer(st->spi, transfer, ARRAY_SIZE(transfer));
drivers/iio/adc/ti-ads131e08.c
222
dev_err(&st->spi->dev, "Write register failed\n");
drivers/iio/adc/ti-ads131e08.c
227
static int ads131e08_read_data(struct ads131e08_state *st, int rx_len)
drivers/iio/adc/ti-ads131e08.c
232
.tx_buf = &st->tx_buf,
drivers/iio/adc/ti-ads131e08.c
235
.rx_buf = &st->rx_buf,
drivers/iio/adc/ti-ads131e08.c
240
st->tx_buf[0] = ADS131E08_CMD_RDATA;
drivers/iio/adc/ti-ads131e08.c
242
ret = spi_sync_transfer(st->spi, transfer, ARRAY_SIZE(transfer));
drivers/iio/adc/ti-ads131e08.c
244
dev_err(&st->spi->dev, "Read data failed\n");
drivers/iio/adc/ti-ads131e08.c
249
static int ads131e08_set_data_rate(struct ads131e08_state *st, int data_rate)
drivers/iio/adc/ti-ads131e08.c
259
dev_err(&st->spi->dev, "invalid data rate value\n");
drivers/iio/adc/ti-ads131e08.c
263
reg = ads131e08_read_reg(st, ADS131E08_ADR_CFG1R);
drivers/iio/adc/ti-ads131e08.c
271
ret = ads131e08_write_reg(st, ADS131E08_ADR_CFG1R, reg);
drivers/iio/adc/ti-ads131e08.c
275
st->data_rate = data_rate;
drivers/iio/adc/ti-ads131e08.c
276
st->readback_len = ADS131E08_NUM_STATUS_BYTES +
drivers/iio/adc/ti-ads131e08.c
277
ADS131E08_NUM_DATA_BYTES(st->data_rate) *
drivers/iio/adc/ti-ads131e08.c
278
st->info->max_channels;
drivers/iio/adc/ti-ads131e08.c
283
static int ads131e08_pga_gain_to_field_value(struct ads131e08_state *st,
drivers/iio/adc/ti-ads131e08.c
294
dev_err(&st->spi->dev, "invalid PGA gain value\n");
drivers/iio/adc/ti-ads131e08.c
301
static int ads131e08_set_pga_gain(struct ads131e08_state *st,
drivers/iio/adc/ti-ads131e08.c
306
field_value = ads131e08_pga_gain_to_field_value(st, pga_gain);
drivers/iio/adc/ti-ads131e08.c
310
reg = ads131e08_read_reg(st, ADS131E08_ADR_CH0R + channel);
drivers/iio/adc/ti-ads131e08.c
317
return ads131e08_write_reg(st, ADS131E08_ADR_CH0R + channel, reg);
drivers/iio/adc/ti-ads131e08.c
320
static int ads131e08_validate_channel_mux(struct ads131e08_state *st,
drivers/iio/adc/ti-ads131e08.c
331
dev_err(&st->spi->dev, "invalid channel mux value\n");
drivers/iio/adc/ti-ads131e08.c
338
static int ads131e08_set_channel_mux(struct ads131e08_state *st,
drivers/iio/adc/ti-ads131e08.c
343
reg = ads131e08_read_reg(st, ADS131E08_ADR_CH0R + channel);
drivers/iio/adc/ti-ads131e08.c
350
return ads131e08_write_reg(st, ADS131E08_ADR_CH0R + channel, reg);
drivers/iio/adc/ti-ads131e08.c
353
static int ads131e08_power_down_channel(struct ads131e08_state *st,
drivers/iio/adc/ti-ads131e08.c
358
reg = ads131e08_read_reg(st, ADS131E08_ADR_CH0R + channel);
drivers/iio/adc/ti-ads131e08.c
365
return ads131e08_write_reg(st, ADS131E08_ADR_CH0R + channel, reg);
drivers/iio/adc/ti-ads131e08.c
368
static int ads131e08_config_reference_voltage(struct ads131e08_state *st)
drivers/iio/adc/ti-ads131e08.c
372
reg = ads131e08_read_reg(st, ADS131E08_ADR_CFG3R);
drivers/iio/adc/ti-ads131e08.c
377
if (!st->vref_reg) {
drivers/iio/adc/ti-ads131e08.c
381
st->vref_mv == ADS131E08_VREF_4V_mV);
drivers/iio/adc/ti-ads131e08.c
384
return ads131e08_write_reg(st, ADS131E08_ADR_CFG3R, reg);
drivers/iio/adc/ti-ads131e08.c
390
struct ads131e08_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
394
ret = ads131e08_exec_cmd(st, ADS131E08_CMD_RESET);
drivers/iio/adc/ti-ads131e08.c
398
udelay(st->reset_delay_us);
drivers/iio/adc/ti-ads131e08.c
401
ret = ads131e08_exec_cmd(st, ADS131E08_CMD_SDATAC);
drivers/iio/adc/ti-ads131e08.c
405
ret = ads131e08_set_data_rate(st, ADS131E08_DEFAULT_DATA_RATE);
drivers/iio/adc/ti-ads131e08.c
409
ret = ads131e08_config_reference_voltage(st);
drivers/iio/adc/ti-ads131e08.c
414
ret = ads131e08_set_pga_gain(st, channel->channel,
drivers/iio/adc/ti-ads131e08.c
415
st->channel_config[i].pga_gain);
drivers/iio/adc/ti-ads131e08.c
419
ret = ads131e08_set_channel_mux(st, channel->channel,
drivers/iio/adc/ti-ads131e08.c
420
st->channel_config[i].mux);
drivers/iio/adc/ti-ads131e08.c
429
for_each_clear_bit(i, &active_channels, st->info->max_channels) {
drivers/iio/adc/ti-ads131e08.c
430
ret = ads131e08_power_down_channel(st, i, true);
drivers/iio/adc/ti-ads131e08.c
436
ret = ads131e08_exec_cmd(st, ADS131E08_CMD_OFFSETCAL);
drivers/iio/adc/ti-ads131e08.c
447
ret = ads131e08_exec_cmd(st, ADS131E08_CMD_START);
drivers/iio/adc/ti-ads131e08.c
453
return ads131e08_exec_cmd(st, ADS131E08_CMD_STOP);
drivers/iio/adc/ti-ads131e08.c
456
static int ads131e08_pool_data(struct ads131e08_state *st)
drivers/iio/adc/ti-ads131e08.c
461
reinit_completion(&st->completion);
drivers/iio/adc/ti-ads131e08.c
463
ret = ads131e08_exec_cmd(st, ADS131E08_CMD_START);
drivers/iio/adc/ti-ads131e08.c
468
ret = wait_for_completion_timeout(&st->completion, timeout);
drivers/iio/adc/ti-ads131e08.c
472
ret = ads131e08_read_data(st, st->readback_len);
drivers/iio/adc/ti-ads131e08.c
476
return ads131e08_exec_cmd(st, ADS131E08_CMD_STOP);
drivers/iio/adc/ti-ads131e08.c
482
struct ads131e08_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
486
ret = ads131e08_pool_data(st);
drivers/iio/adc/ti-ads131e08.c
490
src = st->rx_buf + ADS131E08_NUM_STATUS_BYTES +
drivers/iio/adc/ti-ads131e08.c
491
channel->channel * ADS131E08_NUM_DATA_BYTES(st->data_rate);
drivers/iio/adc/ti-ads131e08.c
493
num_bits = ADS131E08_NUM_DATA_BITS(st->data_rate);
drivers/iio/adc/ti-ads131e08.c
503
struct ads131e08_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
519
if (st->vref_reg) {
drivers/iio/adc/ti-ads131e08.c
520
ret = regulator_get_voltage(st->vref_reg);
drivers/iio/adc/ti-ads131e08.c
526
*value = st->vref_mv;
drivers/iio/adc/ti-ads131e08.c
529
*value /= st->channel_config[channel->address].pga_gain;
drivers/iio/adc/ti-ads131e08.c
530
*value2 = ADS131E08_NUM_DATA_BITS(st->data_rate) - 1;
drivers/iio/adc/ti-ads131e08.c
535
*value = st->data_rate;
drivers/iio/adc/ti-ads131e08.c
548
struct ads131e08_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
556
ret = ads131e08_set_data_rate(st, value);
drivers/iio/adc/ti-ads131e08.c
579
struct ads131e08_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
582
int ret = ads131e08_read_reg(st, reg);
drivers/iio/adc/ti-ads131e08.c
587
return ads131e08_write_reg(st, reg, writeval);
drivers/iio/adc/ti-ads131e08.c
600
struct ads131e08_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
603
return ads131e08_exec_cmd(st, cmd);
drivers/iio/adc/ti-ads131e08.c
615
struct ads131e08_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
627
unsigned int num_bytes = ADS131E08_NUM_DATA_BYTES(st->data_rate);
drivers/iio/adc/ti-ads131e08.c
631
ret = ads131e08_read_data(st, st->readback_len);
drivers/iio/adc/ti-ads131e08.c
633
ret = ads131e08_pool_data(st);
drivers/iio/adc/ti-ads131e08.c
639
src = st->rx_buf + ADS131E08_NUM_STATUS_BYTES + chn * num_bytes;
drivers/iio/adc/ti-ads131e08.c
640
dest = st->tmp_buf.data + i * ADS131E08_NUM_STORAGE_BYTES;
drivers/iio/adc/ti-ads131e08.c
667
iio_push_to_buffers_with_ts(indio_dev, &st->tmp_buf, sizeof(st->tmp_buf),
drivers/iio/adc/ti-ads131e08.c
679
struct ads131e08_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
682
iio_trigger_poll(st->trig);
drivers/iio/adc/ti-ads131e08.c
684
complete(&st->completion);
drivers/iio/adc/ti-ads131e08.c
691
struct ads131e08_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
693
struct device *dev = &st->spi->dev;
drivers/iio/adc/ti-ads131e08.c
704
st->vref_mv = ADS131E08_VREF_2V4_mV;
drivers/iio/adc/ti-ads131e08.c
707
st->vref_mv = ADS131E08_VREF_4V_mV;
drivers/iio/adc/ti-ads131e08.c
710
dev_err(&st->spi->dev, "invalid internal voltage reference\n");
drivers/iio/adc/ti-ads131e08.c
716
dev_err(&st->spi->dev, "no channel children\n");
drivers/iio/adc/ti-ads131e08.c
720
if (num_channels > st->info->max_channels) {
drivers/iio/adc/ti-ads131e08.c
721
dev_err(&st->spi->dev, "num of channel children out of range\n");
drivers/iio/adc/ti-ads131e08.c
725
channels = devm_kcalloc(&st->spi->dev, num_channels,
drivers/iio/adc/ti-ads131e08.c
730
channel_config = devm_kcalloc(&st->spi->dev, num_channels,
drivers/iio/adc/ti-ads131e08.c
745
ret = ads131e08_pga_gain_to_field_value(st, tmp);
drivers/iio/adc/ti-ads131e08.c
756
ret = ads131e08_validate_channel_mux(st, tmp);
drivers/iio/adc/ti-ads131e08.c
781
st->channel_config = channel_config;
drivers/iio/adc/ti-ads131e08.c
789
struct ads131e08_state *st = data;
drivers/iio/adc/ti-ads131e08.c
791
regulator_disable(st->vref_reg);
drivers/iio/adc/ti-ads131e08.c
797
struct ads131e08_state *st;
drivers/iio/adc/ti-ads131e08.c
809
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ti-ads131e08.c
813
st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads131e08.c
814
st->info = info;
drivers/iio/adc/ti-ads131e08.c
815
st->spi = spi;
drivers/iio/adc/ti-ads131e08.c
821
indio_dev->name = st->info->name;
drivers/iio/adc/ti-ads131e08.c
825
init_completion(&st->completion);
drivers/iio/adc/ti-ads131e08.c
840
st->trig = devm_iio_trigger_alloc(&spi->dev, "%s-dev%d",
drivers/iio/adc/ti-ads131e08.c
842
if (!st->trig)
drivers/iio/adc/ti-ads131e08.c
845
st->trig->ops = &ads131e08_trigger_ops;
drivers/iio/adc/ti-ads131e08.c
846
st->trig->dev.parent = &spi->dev;
drivers/iio/adc/ti-ads131e08.c
847
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/iio/adc/ti-ads131e08.c
848
ret = devm_iio_trigger_register(&spi->dev, st->trig);
drivers/iio/adc/ti-ads131e08.c
854
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/adc/ti-ads131e08.c
863
st->vref_reg = devm_regulator_get_optional(&spi->dev, "vref");
drivers/iio/adc/ti-ads131e08.c
864
if (!IS_ERR(st->vref_reg)) {
drivers/iio/adc/ti-ads131e08.c
865
ret = regulator_enable(st->vref_reg);
drivers/iio/adc/ti-ads131e08.c
872
ret = devm_add_action_or_reset(&spi->dev, ads131e08_regulator_disable, st);
drivers/iio/adc/ti-ads131e08.c
876
if (PTR_ERR(st->vref_reg) != -ENODEV)
drivers/iio/adc/ti-ads131e08.c
877
return PTR_ERR(st->vref_reg);
drivers/iio/adc/ti-ads131e08.c
879
st->vref_reg = NULL;
drivers/iio/adc/ti-ads131e08.c
882
st->adc_clk = devm_clk_get_enabled(&spi->dev, "adc-clk");
drivers/iio/adc/ti-ads131e08.c
883
if (IS_ERR(st->adc_clk))
drivers/iio/adc/ti-ads131e08.c
884
return dev_err_probe(&spi->dev, PTR_ERR(st->adc_clk),
drivers/iio/adc/ti-ads131e08.c
887
adc_clk_hz = clk_get_rate(st->adc_clk);
drivers/iio/adc/ti-ads131e08.c
894
st->sdecode_delay_us = DIV_ROUND_UP(
drivers/iio/adc/ti-ads131e08.c
896
st->reset_delay_us = DIV_ROUND_UP(
drivers/iio/adc/ti-ads7950.c
274
struct ti_ads7950_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads7950.c
278
guard(mutex)(&st->slock);
drivers/iio/adc/ti-ads7950.c
280
ret = spi_sync(st->spi, &st->ring_msg);
drivers/iio/adc/ti-ads7950.c
284
iio_push_to_buffers_with_ts_unaligned(indio_dev, &st->rx_buf[2],
drivers/iio/adc/ti-ads7950.c
285
sizeof(*st->rx_buf) *
drivers/iio/adc/ti-ads7950.c
297
struct ti_ads7950_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads7950.c
300
guard(mutex)(&st->slock);
drivers/iio/adc/ti-ads7950.c
303
st->single_tx = cmd;
drivers/iio/adc/ti-ads7950.c
305
ret = spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ti-ads7950.c
309
return st->single_rx;
drivers/iio/adc/ti-ads7950.c
312
static unsigned int ti_ads7950_get_range(struct ti_ads7950_state *st)
drivers/iio/adc/ti-ads7950.c
314
unsigned int vref = st->vref_mv;
drivers/iio/adc/ti-ads7950.c
316
if (st->cmd_settings_bitmask & TI_ADS7950_CR_RANGE_5V)
drivers/iio/adc/ti-ads7950.c
326
struct ti_ads7950_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads7950.c
343
*val = ti_ads7950_get_range(st);
drivers/iio/adc/ti-ads7950.c
358
struct ti_ads7950_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads7950.c
365
st->tx_buf[len++] = cmd;
drivers/iio/adc/ti-ads7950.c
369
st->tx_buf[len++] = 0;
drivers/iio/adc/ti-ads7950.c
370
st->tx_buf[len++] = 0;
drivers/iio/adc/ti-ads7950.c
372
st->ring_xfer.len = len * 2;
drivers/iio/adc/ti-ads7950.c
374
return spi_optimize_message(st->spi, &st->ring_msg);
drivers/iio/adc/ti-ads7950.c
379
struct ti_ads7950_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads7950.c
381
spi_unoptimize_message(&st->ring_msg);
drivers/iio/adc/ti-ads7950.c
394
struct ti_ads7950_state *st = gpiochip_get_data(chip);
drivers/iio/adc/ti-ads7950.c
396
guard(mutex)(&st->slock);
drivers/iio/adc/ti-ads7950.c
399
st->cmd_settings_bitmask |= BIT(offset);
drivers/iio/adc/ti-ads7950.c
401
st->cmd_settings_bitmask &= ~BIT(offset);
drivers/iio/adc/ti-ads7950.c
403
st->single_tx = TI_ADS7950_MAN_CMD_SETTINGS(st);
drivers/iio/adc/ti-ads7950.c
405
return spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ti-ads7950.c
410
struct ti_ads7950_state *st = gpiochip_get_data(chip);
drivers/iio/adc/ti-ads7950.c
414
guard(mutex)(&st->slock);
drivers/iio/adc/ti-ads7950.c
417
if (st->gpio_cmd_settings_bitmask & BIT(offset)) {
drivers/iio/adc/ti-ads7950.c
418
state = st->cmd_settings_bitmask & BIT(offset);
drivers/iio/adc/ti-ads7950.c
423
st->cmd_settings_bitmask |= TI_ADS7950_CR_GPIO_DATA;
drivers/iio/adc/ti-ads7950.c
424
st->single_tx = TI_ADS7950_MAN_CMD_SETTINGS(st);
drivers/iio/adc/ti-ads7950.c
425
ret = spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ti-ads7950.c
429
state = (st->single_rx >> 12) & BIT(offset);
drivers/iio/adc/ti-ads7950.c
432
st->cmd_settings_bitmask &= ~TI_ADS7950_CR_GPIO_DATA;
drivers/iio/adc/ti-ads7950.c
433
st->single_tx = TI_ADS7950_MAN_CMD_SETTINGS(st);
drivers/iio/adc/ti-ads7950.c
434
ret = spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ti-ads7950.c
444
struct ti_ads7950_state *st = gpiochip_get_data(chip);
drivers/iio/adc/ti-ads7950.c
447
return !(st->gpio_cmd_settings_bitmask & BIT(offset));
drivers/iio/adc/ti-ads7950.c
453
struct ti_ads7950_state *st = gpiochip_get_data(chip);
drivers/iio/adc/ti-ads7950.c
455
guard(mutex)(&st->slock);
drivers/iio/adc/ti-ads7950.c
458
if (input && (st->gpio_cmd_settings_bitmask & BIT(offset)))
drivers/iio/adc/ti-ads7950.c
459
st->gpio_cmd_settings_bitmask &= ~BIT(offset);
drivers/iio/adc/ti-ads7950.c
460
else if (!input && !(st->gpio_cmd_settings_bitmask & BIT(offset)))
drivers/iio/adc/ti-ads7950.c
461
st->gpio_cmd_settings_bitmask |= BIT(offset);
drivers/iio/adc/ti-ads7950.c
465
st->single_tx = TI_ADS7950_GPIO_CMD_SETTINGS(st);
drivers/iio/adc/ti-ads7950.c
467
return spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ti-ads7950.c
488
static int ti_ads7950_init_hw(struct ti_ads7950_state *st)
drivers/iio/adc/ti-ads7950.c
492
guard(mutex)(&st->slock);
drivers/iio/adc/ti-ads7950.c
496
st->cmd_settings_bitmask = TI_ADS7950_CR_RANGE_5V;
drivers/iio/adc/ti-ads7950.c
497
st->single_tx = TI_ADS7950_MAN_CMD_SETTINGS(st);
drivers/iio/adc/ti-ads7950.c
498
ret = spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ti-ads7950.c
503
st->gpio_cmd_settings_bitmask = 0x0;
drivers/iio/adc/ti-ads7950.c
504
st->single_tx = TI_ADS7950_GPIO_CMD_SETTINGS(st);
drivers/iio/adc/ti-ads7950.c
505
return spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ti-ads7950.c
510
struct ti_ads7950_state *st;
drivers/iio/adc/ti-ads7950.c
521
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ti-ads7950.c
525
st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads7950.c
527
st->spi = spi;
drivers/iio/adc/ti-ads7950.c
538
spi_message_init(&st->ring_msg);
drivers/iio/adc/ti-ads7950.c
540
st->ring_xfer.tx_buf = &st->tx_buf[0];
drivers/iio/adc/ti-ads7950.c
541
st->ring_xfer.rx_buf = &st->rx_buf[0];
drivers/iio/adc/ti-ads7950.c
544
spi_message_add_tail(&st->ring_xfer, &st->ring_msg);
drivers/iio/adc/ti-ads7950.c
555
st->scan_single_xfer[0].tx_buf = &st->single_tx;
drivers/iio/adc/ti-ads7950.c
556
st->scan_single_xfer[0].len = 2;
drivers/iio/adc/ti-ads7950.c
557
st->scan_single_xfer[0].cs_change = 1;
drivers/iio/adc/ti-ads7950.c
558
st->scan_single_xfer[1].tx_buf = &st->single_tx;
drivers/iio/adc/ti-ads7950.c
559
st->scan_single_xfer[1].len = 2;
drivers/iio/adc/ti-ads7950.c
560
st->scan_single_xfer[1].cs_change = 1;
drivers/iio/adc/ti-ads7950.c
561
st->scan_single_xfer[2].rx_buf = &st->single_rx;
drivers/iio/adc/ti-ads7950.c
562
st->scan_single_xfer[2].len = 2;
drivers/iio/adc/ti-ads7950.c
564
spi_message_init_with_transfers(&st->scan_single_msg,
drivers/iio/adc/ti-ads7950.c
565
st->scan_single_xfer, 3);
drivers/iio/adc/ti-ads7950.c
567
ret = devm_mutex_init(&spi->dev, &st->slock);
drivers/iio/adc/ti-ads7950.c
573
st->vref_mv = TI_ADS7950_VA_MV_ACPI_DEFAULT;
drivers/iio/adc/ti-ads7950.c
58
#define TI_ADS7950_MAN_CMD_SETTINGS(st) \
drivers/iio/adc/ti-ads7950.c
580
st->vref_mv = ret / 1000;
drivers/iio/adc/ti-ads7950.c
59
(TI_ADS7950_MAN_CMD(TI_ADS7950_CR_WRITE | st->cmd_settings_bitmask))
drivers/iio/adc/ti-ads7950.c
590
ret = ti_ads7950_init_hw(st);
drivers/iio/adc/ti-ads7950.c
601
st->chip.label = dev_name(&st->spi->dev);
drivers/iio/adc/ti-ads7950.c
602
st->chip.parent = &st->spi->dev;
drivers/iio/adc/ti-ads7950.c
603
st->chip.owner = THIS_MODULE;
drivers/iio/adc/ti-ads7950.c
604
st->chip.can_sleep = true;
drivers/iio/adc/ti-ads7950.c
605
st->chip.base = -1;
drivers/iio/adc/ti-ads7950.c
606
st->chip.ngpio = TI_ADS7950_NUM_GPIOS;
drivers/iio/adc/ti-ads7950.c
607
st->chip.get_direction = ti_ads7950_get_direction;
drivers/iio/adc/ti-ads7950.c
608
st->chip.direction_input = ti_ads7950_direction_input;
drivers/iio/adc/ti-ads7950.c
609
st->chip.direction_output = ti_ads7950_direction_output;
drivers/iio/adc/ti-ads7950.c
61
#define TI_ADS7950_GPIO_CMD_SETTINGS(st) \
drivers/iio/adc/ti-ads7950.c
610
st->chip.get = ti_ads7950_get;
drivers/iio/adc/ti-ads7950.c
611
st->chip.set = ti_ads7950_set;
drivers/iio/adc/ti-ads7950.c
613
ret = devm_gpiochip_add_data(&spi->dev, &st->chip, st);
drivers/iio/adc/ti-ads7950.c
62
(TI_ADS7950_GPIO_CMD(st->gpio_cmd_settings_bitmask))
drivers/iio/adc/ti-ads8688.c
161
struct ads8688_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads8688.c
166
st->data[0].d32 = cpu_to_be32(tmp);
drivers/iio/adc/ti-ads8688.c
168
return spi_write(st->spi, &st->data[0].d8[1], 3);
drivers/iio/adc/ti-ads8688.c
173
struct ads8688_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads8688.c
178
st->data[0].d32 = cpu_to_be32(tmp);
drivers/iio/adc/ti-ads8688.c
180
return spi_write(st->spi, &st->data[0].d8[0], 4);
drivers/iio/adc/ti-ads8688.c
185
struct ads8688_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads8688.c
190
.tx_buf = &st->data[0].d8[0],
drivers/iio/adc/ti-ads8688.c
194
.tx_buf = &st->data[1].d8[0],
drivers/iio/adc/ti-ads8688.c
195
.rx_buf = &st->data[1].d8[0],
drivers/iio/adc/ti-ads8688.c
202
st->data[0].d32 = cpu_to_be32(tmp);
drivers/iio/adc/ti-ads8688.c
206
st->data[1].d32 = cpu_to_be32(tmp);
drivers/iio/adc/ti-ads8688.c
208
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/adc/ti-ads8688.c
212
return be32_to_cpu(st->data[1].d32) & 0xffff;
drivers/iio/adc/ti-ads8688.c
222
struct ads8688_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads8688.c
224
mutex_lock(&st->lock);
drivers/iio/adc/ti-ads8688.c
228
mutex_unlock(&st->lock);
drivers/iio/adc/ti-ads8688.c
234
scale_mv = st->vref_mv;
drivers/iio/adc/ti-ads8688.c
235
scale_mv *= ads8688_range_def[st->range[chan->channel]].scale;
drivers/iio/adc/ti-ads8688.c
238
mutex_unlock(&st->lock);
drivers/iio/adc/ti-ads8688.c
241
offset = ads8688_range_def[st->range[chan->channel]].offset;
drivers/iio/adc/ti-ads8688.c
243
mutex_unlock(&st->lock);
drivers/iio/adc/ti-ads8688.c
246
mutex_unlock(&st->lock);
drivers/iio/adc/ti-ads8688.c
266
struct ads8688_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads8688.c
270
mutex_lock(&st->lock);
drivers/iio/adc/ti-ads8688.c
274
offset = ads8688_range_def[st->range[chan->channel]].offset;
drivers/iio/adc/ti-ads8688.c
275
if (offset == 0 && val2 == ads8688_range_def[0].scale * st->vref_mv) {
drivers/iio/adc/ti-ads8688.c
276
mutex_unlock(&st->lock);
drivers/iio/adc/ti-ads8688.c
282
if (val2 == ads8688_range_def[i].scale * st->vref_mv &&
drivers/iio/adc/ti-ads8688.c
296
mutex_unlock(&st->lock);
drivers/iio/adc/ti-ads8688.c
305
st->range[chan->channel] == ADS8688_PLUSMINUS25VREF) {
drivers/iio/adc/ti-ads8688.c
306
mutex_unlock(&st->lock);
drivers/iio/adc/ti-ads8688.c
310
scale = ads8688_range_def[st->range[chan->channel]].scale;
drivers/iio/adc/ti-ads8688.c
324
st->range[chan->channel] = ads8688_range_def[i].range;
drivers/iio/adc/ti-ads8688.c
326
mutex_unlock(&st->lock);
drivers/iio/adc/ti-ads8688.c
350
struct ads8688_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads8688.c
354
*vals = (const int *)st->scale_avail;
drivers/iio/adc/ti-ads8688.c
356
*length = ARRAY_SIZE(st->scale_avail) * 2;
drivers/iio/adc/ti-ads8688.c
409
struct ads8688_state *st;
drivers/iio/adc/ti-ads8688.c
413
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ti-ads8688.c
417
st = iio_priv(indio_dev);
drivers/iio/adc/ti-ads8688.c
423
st->vref_mv = ret == -ENODEV ? ADS8688_VREF_MV : ret / 1000;
drivers/iio/adc/ti-ads8688.c
425
for (unsigned int i = 0; i < ARRAY_SIZE(st->scale_avail); i++) {
drivers/iio/adc/ti-ads8688.c
426
st->scale_avail[i][0] = 0;
drivers/iio/adc/ti-ads8688.c
427
st->scale_avail[i][1] = ads8688_range_def[i].scale * st->vref_mv;
drivers/iio/adc/ti-ads8688.c
430
st->chip_info = &ads8688_chip_info_tbl[spi_get_device_id(spi)->driver_data];
drivers/iio/adc/ti-ads8688.c
434
st->spi = spi;
drivers/iio/adc/ti-ads8688.c
438
indio_dev->channels = st->chip_info->channels;
drivers/iio/adc/ti-ads8688.c
439
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/adc/ti-ads8688.c
444
mutex_init(&st->lock);
drivers/iio/adc/ti-tlc4541.c
101
iio_push_to_buffers_with_ts(indio_dev, st->rx_buf, sizeof(st->rx_buf),
drivers/iio/adc/ti-tlc4541.c
109
static int tlc4541_get_range(struct tlc4541_state *st)
drivers/iio/adc/ti-tlc4541.c
113
vref = regulator_get_voltage(st->reg);
drivers/iio/adc/ti-tlc4541.c
129
struct tlc4541_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-tlc4541.c
135
ret = spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/adc/ti-tlc4541.c
139
*val = be16_to_cpu(st->rx_buf[0]);
drivers/iio/adc/ti-tlc4541.c
144
ret = tlc4541_get_range(st);
drivers/iio/adc/ti-tlc4541.c
160
struct tlc4541_state *st;
drivers/iio/adc/ti-tlc4541.c
166
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/adc/ti-tlc4541.c
170
st = iio_priv(indio_dev);
drivers/iio/adc/ti-tlc4541.c
174
st->spi = spi;
drivers/iio/adc/ti-tlc4541.c
188
st->scan_single_xfer[0].rx_buf = &st->rx_buf[0];
drivers/iio/adc/ti-tlc4541.c
189
st->scan_single_xfer[0].len = 3;
drivers/iio/adc/ti-tlc4541.c
190
st->scan_single_xfer[1].delay.value = 3;
drivers/iio/adc/ti-tlc4541.c
191
st->scan_single_xfer[1].delay.unit = SPI_DELAY_UNIT_NSECS;
drivers/iio/adc/ti-tlc4541.c
192
st->scan_single_xfer[2].rx_buf = &st->rx_buf[0];
drivers/iio/adc/ti-tlc4541.c
193
st->scan_single_xfer[2].len = 2;
drivers/iio/adc/ti-tlc4541.c
195
spi_message_init_with_transfers(&st->scan_single_msg,
drivers/iio/adc/ti-tlc4541.c
196
st->scan_single_xfer, 3);
drivers/iio/adc/ti-tlc4541.c
198
st->reg = devm_regulator_get(&spi->dev, "vref");
drivers/iio/adc/ti-tlc4541.c
199
if (IS_ERR(st->reg))
drivers/iio/adc/ti-tlc4541.c
200
return PTR_ERR(st->reg);
drivers/iio/adc/ti-tlc4541.c
202
ret = regulator_enable(st->reg);
drivers/iio/adc/ti-tlc4541.c
220
regulator_disable(st->reg);
drivers/iio/adc/ti-tlc4541.c
228
struct tlc4541_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-tlc4541.c
232
regulator_disable(st->reg);
drivers/iio/adc/ti-tlc4541.c
94
struct tlc4541_state *st = iio_priv(indio_dev);
drivers/iio/adc/ti-tlc4541.c
97
ret = spi_sync(st->spi, &st->scan_single_msg);
drivers/iio/addac/ad74115.c
1000
static int ad74115_get_dac_scale(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
1008
if (st->dac_bipolar)
drivers/iio/addac/ad74115.c
1017
if (st->din_threshold_mode == AD74115_DIN_THRESHOLD_MODE_AVDD) {
drivers/iio/addac/ad74115.c
1018
*val = 196 * st->avdd_mv;
drivers/iio/addac/ad74115.c
1029
static int ad74115_get_dac_offset(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
1033
if (chan->type == IIO_VOLTAGE && st->dac_bipolar)
drivers/iio/addac/ad74115.c
1038
if (st->din_threshold_mode == AD74115_DIN_THRESHOLD_MODE_AVDD)
drivers/iio/addac/ad74115.c
1047
static int ad74115_get_adc_range(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
1052
ret = regmap_read(st->regmap, AD74115_ADC_CONFIG_REG, val);
drivers/iio/addac/ad74115.c
1064
static int ad74115_get_adc_resistance_scale(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
1079
static int ad74115_get_adc_scale(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
1086
ret = ad74115_get_adc_range(st, chan->channel, &range);
drivers/iio/addac/ad74115.c
1091
return ad74115_get_adc_resistance_scale(st, range, val, val2);
drivers/iio/addac/ad74115.c
1102
static int ad74115_get_adc_resistance_offset(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
1116
if (!st->rtd_mode_4_wire) {
drivers/iio/addac/ad74115.c
1133
static int ad74115_get_adc_offset(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
1140
ret = ad74115_get_adc_range(st, chan->channel, &range);
drivers/iio/addac/ad74115.c
1145
return ad74115_get_adc_resistance_offset(st, range, val, val2);
drivers/iio/addac/ad74115.c
1161
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
1167
return ad74115_get_dac_code(st, chan->channel, val);
drivers/iio/addac/ad74115.c
1178
return ad74115_get_dac_scale(st, chan, val, val2);
drivers/iio/addac/ad74115.c
1180
return ad74115_get_adc_scale(st, chan, val, val2);
drivers/iio/addac/ad74115.c
1183
return ad74115_get_dac_offset(st, chan, val);
drivers/iio/addac/ad74115.c
1185
return ad74115_get_adc_offset(st, chan, val, val2);
drivers/iio/addac/ad74115.c
1188
return ad74115_get_dac_rate(st, val);
drivers/iio/addac/ad74115.c
1190
return ad74115_get_adc_rate(st, chan->channel, val);
drivers/iio/addac/ad74115.c
1200
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
1207
return ad74115_set_dac_code(st, chan->channel, val);
drivers/iio/addac/ad74115.c
1210
return ad74115_set_dac_rate(st, val);
drivers/iio/addac/ad74115.c
1212
return ad74115_set_adc_rate(st, chan->channel, val);
drivers/iio/addac/ad74115.c
1243
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
1246
return regmap_read(st->regmap, reg, readval);
drivers/iio/addac/ad74115.c
1248
return regmap_write(st->regmap, reg, writeval);
drivers/iio/addac/ad74115.c
1468
static int ad74115_apply_fw_prop(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
1471
struct device *dev = &st->spi->dev;
drivers/iio/addac/ad74115.c
1505
return regmap_update_bits(st->regmap, prop->reg, prop->mask, val);
drivers/iio/addac/ad74115.c
1508
static int ad74115_setup_adc_conv2_range(struct ad74115_state *st)
drivers/iio/addac/ad74115.c
1516
struct device *dev = &st->spi->dev;
drivers/iio/addac/ad74115.c
1531
return regmap_update_bits(st->regmap, AD74115_ADC_CONFIG_REG,
drivers/iio/addac/ad74115.c
1538
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
1539
struct device *dev = &st->spi->dev;
drivers/iio/addac/ad74115.c
1549
memcpy(channels, ad74115_channels_map[st->ch_func].channels,
drivers/iio/addac/ad74115.c
1550
sizeof(*channels) * ad74115_channels_map[st->ch_func].num_channels);
drivers/iio/addac/ad74115.c
1553
channels[0].type == IIO_VOLTAGE && !st->dac_hart_slew) {
drivers/iio/addac/ad74115.c
1561
static int ad74115_setup_gpio_chip(struct ad74115_state *st)
drivers/iio/addac/ad74115.c
1563
struct device *dev = &st->spi->dev;
drivers/iio/addac/ad74115.c
1565
if (!st->gpio_valid_mask)
drivers/iio/addac/ad74115.c
1568
st->gc = (struct gpio_chip) {
drivers/iio/addac/ad74115.c
1583
return devm_gpiochip_add_data(dev, &st->gc, st);
drivers/iio/addac/ad74115.c
1586
static int ad74115_setup_comp_gpio_chip(struct ad74115_state *st)
drivers/iio/addac/ad74115.c
1588
struct device *dev = &st->spi->dev;
drivers/iio/addac/ad74115.c
1592
ret = regmap_read(st->regmap, AD74115_DIN_CONFIG1_REG, &val);
drivers/iio/addac/ad74115.c
1599
st->comp_gc = (struct gpio_chip) {
drivers/iio/addac/ad74115.c
1611
return devm_gpiochip_add_data(dev, &st->comp_gc, st);
drivers/iio/addac/ad74115.c
1616
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
1617
struct device *dev = &st->spi->dev;
drivers/iio/addac/ad74115.c
1622
ret = ad74115_apply_fw_prop(st, &ad74115_ch_func_fw_prop, &val);
drivers/iio/addac/ad74115.c
1627
st->ch_func = val;
drivers/iio/addac/ad74115.c
1629
ret = ad74115_setup_adc_conv2_range(st);
drivers/iio/addac/ad74115.c
1635
st->dac_hart_slew = val;
drivers/iio/addac/ad74115.c
1637
ret = regmap_update_bits(st->regmap, AD74115_OUTPUT_CONFIG_REG,
drivers/iio/addac/ad74115.c
1645
ret = ad74115_apply_fw_prop(st, &ad74115_din_range_fw_prop,
drivers/iio/addac/ad74115.c
1660
ret = regmap_update_bits(st->regmap, AD74115_DIN_CONFIG1_REG,
drivers/iio/addac/ad74115.c
1667
ret = ad74115_apply_fw_prop(st, &ad74115_din_threshold_mode_fw_prop, &val);
drivers/iio/addac/ad74115.c
1671
if (val == AD74115_DIN_THRESHOLD_MODE_AVDD && !st->avdd_mv)
drivers/iio/addac/ad74115.c
1675
st->din_threshold_mode = val;
drivers/iio/addac/ad74115.c
1677
ret = ad74115_apply_fw_prop(st, &ad74115_dac_bipolar_fw_prop, &val);
drivers/iio/addac/ad74115.c
1681
st->dac_bipolar = val;
drivers/iio/addac/ad74115.c
1683
ret = ad74115_apply_fw_prop(st, &ad74115_rtd_mode_fw_prop, &val);
drivers/iio/addac/ad74115.c
1687
st->rtd_mode_4_wire = val;
drivers/iio/addac/ad74115.c
1689
ret = ad74115_apply_fw_prop(st, &ad74115_ext2_burnout_current_fw_prop, &val);
drivers/iio/addac/ad74115.c
1694
ret = regmap_update_bits(st->regmap, AD74115_BURNOUT_CONFIG_REG,
drivers/iio/addac/ad74115.c
1701
ret = ad74115_apply_fw_prop(st, &ad74115_ext1_burnout_current_fw_prop, &val);
drivers/iio/addac/ad74115.c
1706
ret = regmap_update_bits(st->regmap, AD74115_BURNOUT_CONFIG_REG,
drivers/iio/addac/ad74115.c
1713
ret = ad74115_apply_fw_prop(st, &ad74115_viout_burnout_current_fw_prop, &val);
drivers/iio/addac/ad74115.c
1718
ret = regmap_update_bits(st->regmap, AD74115_BURNOUT_CONFIG_REG,
drivers/iio/addac/ad74115.c
1726
ret = ad74115_apply_fw_prop(st, &ad74115_gpio_mode_fw_props[i], &val);
drivers/iio/addac/ad74115.c
1731
st->gpio_valid_mask |= BIT(i);
drivers/iio/addac/ad74115.c
1735
ret = ad74115_apply_fw_prop(st, &ad74115_fw_props[i], &val);
drivers/iio/addac/ad74115.c
1740
ret = ad74115_setup_gpio_chip(st);
drivers/iio/addac/ad74115.c
1744
ret = ad74115_setup_comp_gpio_chip(st);
drivers/iio/addac/ad74115.c
1751
static int ad74115_reset(struct ad74115_state *st)
drivers/iio/addac/ad74115.c
1753
struct device *dev = &st->spi->dev;
drivers/iio/addac/ad74115.c
1767
ret = regmap_write(st->regmap, AD74115_CMD_KEY_REG,
drivers/iio/addac/ad74115.c
1772
ret = regmap_write(st->regmap, AD74115_CMD_KEY_REG,
drivers/iio/addac/ad74115.c
1785
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
1786
struct device *dev = &st->spi->dev;
drivers/iio/addac/ad74115.c
1789
st->irq = fwnode_irq_get_byname(dev_fwnode(dev), "adc_rdy");
drivers/iio/addac/ad74115.c
1791
if (st->irq == -EPROBE_DEFER)
drivers/iio/addac/ad74115.c
1794
if (st->irq < 0) {
drivers/iio/addac/ad74115.c
1795
st->irq = 0;
drivers/iio/addac/ad74115.c
1799
ret = devm_request_irq(dev, st->irq, ad74115_adc_data_interrupt,
drivers/iio/addac/ad74115.c
1804
st->trig = devm_iio_trigger_alloc(dev, "%s-dev%d", AD74115_NAME,
drivers/iio/addac/ad74115.c
1806
if (!st->trig)
drivers/iio/addac/ad74115.c
1809
st->trig->ops = &ad74115_trigger_ops;
drivers/iio/addac/ad74115.c
1810
iio_trigger_set_drvdata(st->trig, st);
drivers/iio/addac/ad74115.c
1812
ret = devm_iio_trigger_register(dev, st->trig);
drivers/iio/addac/ad74115.c
1816
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/addac/ad74115.c
1827
struct ad74115_state *st;
drivers/iio/addac/ad74115.c
1831
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/addac/ad74115.c
1835
st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
1837
st->spi = spi;
drivers/iio/addac/ad74115.c
1838
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/addac/ad74115.c
1842
init_completion(&st->adc_data_completion);
drivers/iio/addac/ad74115.c
1859
st->avdd_mv = ret / 1000;
drivers/iio/addac/ad74115.c
1867
st->regmap = devm_regmap_init(dev, NULL, st, &ad74115_regmap_config);
drivers/iio/addac/ad74115.c
1868
if (IS_ERR(st->regmap))
drivers/iio/addac/ad74115.c
1869
return PTR_ERR(st->regmap);
drivers/iio/addac/ad74115.c
1871
ret = ad74115_reset(st);
drivers/iio/addac/ad74115.c
426
struct ad74115_state *st = context;
drivers/iio/addac/ad74115.c
428
ad74115_format_reg_write(reg, val, st->reg_tx_buf);
drivers/iio/addac/ad74115.c
430
return spi_write(st->spi, st->reg_tx_buf, AD74115_FRAME_SIZE);
drivers/iio/addac/ad74115.c
433
static int ad74115_crc_check(struct ad74115_state *st, u8 *buf)
drivers/iio/addac/ad74115.c
435
struct device *dev = &st->spi->dev;
drivers/iio/addac/ad74115.c
449
struct ad74115_state *st = context;
drivers/iio/addac/ad74115.c
452
.tx_buf = st->reg_tx_buf,
drivers/iio/addac/ad74115.c
453
.len = sizeof(st->reg_tx_buf),
drivers/iio/addac/ad74115.c
457
.rx_buf = st->reg_rx_buf,
drivers/iio/addac/ad74115.c
458
.len = sizeof(st->reg_rx_buf),
drivers/iio/addac/ad74115.c
463
ad74115_format_reg_write(AD74115_READ_SELECT_REG, reg, st->reg_tx_buf);
drivers/iio/addac/ad74115.c
465
ret = spi_sync_transfer(st->spi, reg_read_xfer, ARRAY_SIZE(reg_read_xfer));
drivers/iio/addac/ad74115.c
469
ret = ad74115_crc_check(st, st->reg_rx_buf);
drivers/iio/addac/ad74115.c
473
*val = get_unaligned_be16(&st->reg_rx_buf[1]);
drivers/iio/addac/ad74115.c
485
static int ad74115_gpio_config_set(struct ad74115_state *st, unsigned int offset,
drivers/iio/addac/ad74115.c
488
return regmap_update_bits(st->regmap, AD74115_GPIO_CONFIG_X_REG(offset),
drivers/iio/addac/ad74115.c
497
struct ad74115_state *st = gpiochip_get_data(gc);
drivers/iio/addac/ad74115.c
499
*valid_mask = st->gpio_valid_mask;
drivers/iio/addac/ad74115.c
506
struct ad74115_state *st = gpiochip_get_data(gc);
drivers/iio/addac/ad74115.c
510
ret = regmap_read(st->regmap, AD74115_GPIO_CONFIG_X_REG(offset), &val);
drivers/iio/addac/ad74115.c
519
struct ad74115_state *st = gpiochip_get_data(gc);
drivers/iio/addac/ad74115.c
521
return ad74115_gpio_config_set(st, offset, AD74115_GPIO_CONFIG_INPUT);
drivers/iio/addac/ad74115.c
527
struct ad74115_state *st = gpiochip_get_data(gc);
drivers/iio/addac/ad74115.c
529
return ad74115_gpio_config_set(st, offset, AD74115_GPIO_CONFIG_OUTPUT_BUFFERED);
drivers/iio/addac/ad74115.c
534
struct ad74115_state *st = gpiochip_get_data(gc);
drivers/iio/addac/ad74115.c
538
ret = regmap_read(st->regmap, AD74115_GPIO_CONFIG_X_REG(offset), &val);
drivers/iio/addac/ad74115.c
548
struct ad74115_state *st = gpiochip_get_data(gc);
drivers/iio/addac/ad74115.c
550
return regmap_update_bits(st->regmap,
drivers/iio/addac/ad74115.c
557
static int ad74115_set_comp_debounce(struct ad74115_state *st, unsigned int val)
drivers/iio/addac/ad74115.c
569
return regmap_update_bits(st->regmap, AD74115_DIN_CONFIG1_REG,
drivers/iio/addac/ad74115.c
584
struct ad74115_state *st = gpiochip_get_data(chip);
drivers/iio/addac/ad74115.c
590
return ad74115_set_comp_debounce(st, arg);
drivers/iio/addac/ad74115.c
598
struct ad74115_state *st = gpiochip_get_data(chip);
drivers/iio/addac/ad74115.c
602
ret = regmap_read(st->regmap, AD74115_DIN_COMP_OUT_REG, &val);
drivers/iio/addac/ad74115.c
613
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
616
ret = spi_sync(st->spi, &st->adc_samples_msg);
drivers/iio/addac/ad74115.c
620
iio_push_to_buffers(indio_dev, st->adc_samples_rx_buf);
drivers/iio/addac/ad74115.c
631
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
634
iio_trigger_poll(st->trig);
drivers/iio/addac/ad74115.c
636
complete(&st->adc_data_completion);
drivers/iio/addac/ad74115.c
641
static int ad74115_set_adc_ch_en(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
646
return regmap_update_bits(st->regmap, AD74115_ADC_CONV_CTRL_REG, mask,
drivers/iio/addac/ad74115.c
650
static int ad74115_set_adc_conv_seq(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
653
return regmap_update_bits(st->regmap, AD74115_ADC_CONV_CTRL_REG,
drivers/iio/addac/ad74115.c
661
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
662
struct spi_transfer *xfer = st->adc_samples_xfer;
drivers/iio/addac/ad74115.c
663
u8 *rx_buf = st->adc_samples_rx_buf;
drivers/iio/addac/ad74115.c
664
u8 *tx_buf = st->adc_samples_tx_buf;
drivers/iio/addac/ad74115.c
668
mutex_lock(&st->lock);
drivers/iio/addac/ad74115.c
670
spi_message_init(&st->adc_samples_msg);
drivers/iio/addac/ad74115.c
673
ret = ad74115_set_adc_ch_en(st, i, false);
drivers/iio/addac/ad74115.c
691
ret = ad74115_set_adc_ch_en(st, i, true);
drivers/iio/addac/ad74115.c
695
if (xfer == st->adc_samples_xfer)
drivers/iio/addac/ad74115.c
707
spi_message_add_tail(xfer, &st->adc_samples_msg);
drivers/iio/addac/ad74115.c
710
if (xfer != st->adc_samples_xfer)
drivers/iio/addac/ad74115.c
720
spi_message_add_tail(xfer, &st->adc_samples_msg);
drivers/iio/addac/ad74115.c
723
mutex_unlock(&st->lock);
drivers/iio/addac/ad74115.c
730
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
732
return ad74115_set_adc_conv_seq(st, AD74115_ADC_CONV_SEQ_CONTINUOUS);
drivers/iio/addac/ad74115.c
737
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
741
mutex_lock(&st->lock);
drivers/iio/addac/ad74115.c
743
ret = ad74115_set_adc_conv_seq(st, AD74115_ADC_CONV_SEQ_STANDBY);
drivers/iio/addac/ad74115.c
752
ret = ad74115_set_adc_ch_en(st, i, false);
drivers/iio/addac/ad74115.c
758
mutex_unlock(&st->lock);
drivers/iio/addac/ad74115.c
772
static int ad74115_get_adc_rate(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
778
ret = regmap_read(st->regmap, AD74115_ADC_CONFIG_REG, &i);
drivers/iio/addac/ad74115.c
792
static int _ad74115_get_adc_code(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
798
reinit_completion(&st->adc_data_completion);
drivers/iio/addac/ad74115.c
800
ret = ad74115_set_adc_ch_en(st, channel, true);
drivers/iio/addac/ad74115.c
804
ret = ad74115_set_adc_conv_seq(st, AD74115_ADC_CONV_SEQ_SINGLE);
drivers/iio/addac/ad74115.c
808
if (st->irq) {
drivers/iio/addac/ad74115.c
809
ret = wait_for_completion_timeout(&st->adc_data_completion,
drivers/iio/addac/ad74115.c
817
ret = ad74115_get_adc_rate(st, channel, &rate);
drivers/iio/addac/ad74115.c
823
ret = regmap_read_poll_timeout(st->regmap, AD74115_LIVE_STATUS_REG,
drivers/iio/addac/ad74115.c
837
ret = regmap_write_bits(st->regmap, AD74115_LIVE_STATUS_REG,
drivers/iio/addac/ad74115.c
844
ret = regmap_read(st->regmap, ad74115_adc_ch_data_regs_tbl[channel], &uval);
drivers/iio/addac/ad74115.c
848
ret = ad74115_set_adc_conv_seq(st, AD74115_ADC_CONV_SEQ_STANDBY);
drivers/iio/addac/ad74115.c
852
ret = ad74115_set_adc_ch_en(st, channel, false);
drivers/iio/addac/ad74115.c
864
struct ad74115_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74115.c
870
mutex_lock(&st->lock);
drivers/iio/addac/ad74115.c
871
ret = _ad74115_get_adc_code(st, channel, val);
drivers/iio/addac/ad74115.c
872
mutex_unlock(&st->lock);
drivers/iio/addac/ad74115.c
890
static int ad74115_set_dac_code(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
900
return regmap_update_bits(st->regmap, AD74115_DIN_CONFIG2_REG,
drivers/iio/addac/ad74115.c
908
return regmap_write(st->regmap, AD74115_DAC_CODE_REG, val);
drivers/iio/addac/ad74115.c
911
static int ad74115_get_dac_code(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
920
ret = regmap_read(st->regmap, AD74115_DAC_ACTIVE_REG, &uval);
drivers/iio/addac/ad74115.c
929
static int ad74115_set_adc_rate(struct ad74115_state *st,
drivers/iio/addac/ad74115.c
940
return regmap_update_bits(st->regmap, AD74115_ADC_CONFIG_REG,
drivers/iio/addac/ad74115.c
944
return regmap_update_bits(st->regmap, AD74115_ADC_CONFIG_REG,
drivers/iio/addac/ad74115.c
949
static int ad74115_get_dac_rate(struct ad74115_state *st, int *val)
drivers/iio/addac/ad74115.c
954
ret = regmap_read(st->regmap, AD74115_OUTPUT_CONFIG_REG, &tmp);
drivers/iio/addac/ad74115.c
976
static int ad74115_set_dac_rate(struct ad74115_state *st, int val)
drivers/iio/addac/ad74115.c
997
return regmap_update_bits(st->regmap, AD74115_OUTPUT_CONFIG_REG, mask, tmp);
drivers/iio/addac/ad74413r.c
1003
return ad74413r_get_input_voltage_offset(st,
drivers/iio/addac/ad74413r.c
1006
return ad74413r_get_input_current_offset(st,
drivers/iio/addac/ad74413r.c
1030
return ad74413r_get_adc_rate(st, chan->channel, val);
drivers/iio/addac/ad74413r.c
1040
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
1048
dev_err(st->dev, "Invalid DAC code\n");
drivers/iio/addac/ad74413r.c
1052
return ad74413r_set_channel_dac_code(st, chan->channel, val);
drivers/iio/addac/ad74413r.c
1054
return ad74413r_set_adc_rate(st, chan->channel, val);
drivers/iio/addac/ad74413r.c
1065
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
1069
if (st->chip_info->hart_support) {
drivers/iio/addac/ad74413r.c
1192
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
1199
dev_err(st->dev, "Failed to read channel reg: %d\n", ret);
drivers/iio/addac/ad74413r.c
1204
dev_err(st->dev, "Channel index %u is too large\n", index);
drivers/iio/addac/ad74413r.c
1208
config = &st->channel_configs[index];
drivers/iio/addac/ad74413r.c
1210
dev_err(st->dev, "Channel %u already initialized\n", index);
drivers/iio/addac/ad74413r.c
1218
dev_err(st->dev, "Invalid channel function %u\n", config->func);
drivers/iio/addac/ad74413r.c
1222
if (!st->chip_info->hart_support &&
drivers/iio/addac/ad74413r.c
1225
dev_err(st->dev, "Unsupported HART function %u\n", config->func);
drivers/iio/addac/ad74413r.c
1231
st->num_comparator_gpios++;
drivers/iio/addac/ad74413r.c
1240
st->num_gpo_gpios++;
drivers/iio/addac/ad74413r.c
1251
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
1254
device_for_each_child_node_scoped(st->dev, channel_node) {
drivers/iio/addac/ad74413r.c
1265
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
1272
channels = devm_kcalloc(st->dev, sizeof(*channels),
drivers/iio/addac/ad74413r.c
1280
config = &st->channel_configs[i];
drivers/iio/addac/ad74413r.c
1296
ret = ad74413r_set_channel_function(st, i, config->func);
drivers/iio/addac/ad74413r.c
1306
static int ad74413r_setup_gpios(struct ad74413r_state *st)
drivers/iio/addac/ad74413r.c
1317
config = &st->channel_configs[i];
drivers/iio/addac/ad74413r.c
1323
st->gpo_gpio_offsets[gpo_gpio_i++] = i;
drivers/iio/addac/ad74413r.c
1328
st->comp_gpio_offsets[comp_gpio_i++] = i;
drivers/iio/addac/ad74413r.c
1331
ret = ad74413r_set_comp_drive_strength(st, i, strength);
drivers/iio/addac/ad74413r.c
1336
ret = ad74413r_set_gpo_config(st, i, gpo_config);
drivers/iio/addac/ad74413r.c
1346
struct ad74413r_state *st;
drivers/iio/addac/ad74413r.c
1350
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/addac/ad74413r.c
1354
st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
1356
st->spi = spi;
drivers/iio/addac/ad74413r.c
1357
st->dev = &spi->dev;
drivers/iio/addac/ad74413r.c
1358
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/addac/ad74413r.c
1359
if (!st->chip_info)
drivers/iio/addac/ad74413r.c
1362
ret = devm_mutex_init(st->dev, &st->lock);
drivers/iio/addac/ad74413r.c
1366
init_completion(&st->adc_data_completion);
drivers/iio/addac/ad74413r.c
1368
st->regmap = devm_regmap_init(st->dev, NULL, st,
drivers/iio/addac/ad74413r.c
1370
if (IS_ERR(st->regmap))
drivers/iio/addac/ad74413r.c
1371
return PTR_ERR(st->regmap);
drivers/iio/addac/ad74413r.c
1373
ret = devm_regulator_get_enable_read_voltage(st->dev, "refin");
drivers/iio/addac/ad74413r.c
1375
return dev_err_probe(st->dev, ret,
drivers/iio/addac/ad74413r.c
1377
st->refin_reg_uv = ret;
drivers/iio/addac/ad74413r.c
1379
st->sense_resistor_ohms = 100000000;
drivers/iio/addac/ad74413r.c
1380
device_property_read_u32(st->dev, "shunt-resistor-micro-ohms",
drivers/iio/addac/ad74413r.c
1381
&st->sense_resistor_ohms);
drivers/iio/addac/ad74413r.c
1382
st->sense_resistor_ohms /= 1000000;
drivers/iio/addac/ad74413r.c
1384
st->trig = devm_iio_trigger_alloc(st->dev, "%s-dev%d",
drivers/iio/addac/ad74413r.c
1385
st->chip_info->name, iio_device_id(indio_dev));
drivers/iio/addac/ad74413r.c
1386
if (!st->trig)
drivers/iio/addac/ad74413r.c
1389
st->trig->ops = &ad74413r_trigger_ops;
drivers/iio/addac/ad74413r.c
1390
iio_trigger_set_drvdata(st->trig, st);
drivers/iio/addac/ad74413r.c
1392
ret = devm_iio_trigger_register(st->dev, st->trig);
drivers/iio/addac/ad74413r.c
1396
indio_dev->name = st->chip_info->name;
drivers/iio/addac/ad74413r.c
1399
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/addac/ad74413r.c
1401
ret = ad74413r_reset(st);
drivers/iio/addac/ad74413r.c
1413
ret = ad74413r_setup_gpios(st);
drivers/iio/addac/ad74413r.c
1417
if (st->num_gpo_gpios) {
drivers/iio/addac/ad74413r.c
1418
st->gpo_gpiochip.owner = THIS_MODULE;
drivers/iio/addac/ad74413r.c
1419
st->gpo_gpiochip.label = st->chip_info->name;
drivers/iio/addac/ad74413r.c
1420
st->gpo_gpiochip.base = -1;
drivers/iio/addac/ad74413r.c
1421
st->gpo_gpiochip.ngpio = st->num_gpo_gpios;
drivers/iio/addac/ad74413r.c
1422
st->gpo_gpiochip.parent = st->dev;
drivers/iio/addac/ad74413r.c
1423
st->gpo_gpiochip.can_sleep = true;
drivers/iio/addac/ad74413r.c
1424
st->gpo_gpiochip.set = ad74413r_gpio_set;
drivers/iio/addac/ad74413r.c
1425
st->gpo_gpiochip.set_multiple = ad74413r_gpio_set_multiple;
drivers/iio/addac/ad74413r.c
1426
st->gpo_gpiochip.set_config = ad74413r_gpio_set_gpo_config;
drivers/iio/addac/ad74413r.c
1427
st->gpo_gpiochip.get_direction =
drivers/iio/addac/ad74413r.c
1430
ret = devm_gpiochip_add_data(st->dev, &st->gpo_gpiochip, st);
drivers/iio/addac/ad74413r.c
1435
if (st->num_comparator_gpios) {
drivers/iio/addac/ad74413r.c
1436
st->comp_gpiochip.owner = THIS_MODULE;
drivers/iio/addac/ad74413r.c
1437
st->comp_gpiochip.label = st->chip_info->name;
drivers/iio/addac/ad74413r.c
1438
st->comp_gpiochip.base = -1;
drivers/iio/addac/ad74413r.c
1439
st->comp_gpiochip.ngpio = st->num_comparator_gpios;
drivers/iio/addac/ad74413r.c
1440
st->comp_gpiochip.parent = st->dev;
drivers/iio/addac/ad74413r.c
1441
st->comp_gpiochip.can_sleep = true;
drivers/iio/addac/ad74413r.c
1442
st->comp_gpiochip.get = ad74413r_gpio_get;
drivers/iio/addac/ad74413r.c
1443
st->comp_gpiochip.get_multiple = ad74413r_gpio_get_multiple;
drivers/iio/addac/ad74413r.c
1444
st->comp_gpiochip.set_config = ad74413r_gpio_set_comp_config;
drivers/iio/addac/ad74413r.c
1445
st->comp_gpiochip.get_direction =
drivers/iio/addac/ad74413r.c
1448
ret = devm_gpiochip_add_data(st->dev, &st->comp_gpiochip, st);
drivers/iio/addac/ad74413r.c
1453
ret = ad74413r_set_adc_conv_seq(st, AD74413R_CONV_SEQ_OFF);
drivers/iio/addac/ad74413r.c
1457
ret = devm_request_irq(st->dev, spi->irq, ad74413r_adc_data_interrupt,
drivers/iio/addac/ad74413r.c
1458
0, st->chip_info->name, indio_dev);
drivers/iio/addac/ad74413r.c
1460
return dev_err_probe(st->dev, ret, "Failed to request irq\n");
drivers/iio/addac/ad74413r.c
1462
ret = devm_iio_triggered_buffer_setup(st->dev, indio_dev,
drivers/iio/addac/ad74413r.c
1469
return devm_iio_device_register(st->dev, indio_dev);
drivers/iio/addac/ad74413r.c
174
struct ad74413r_state *st = context;
drivers/iio/addac/ad74413r.c
176
ad74413r_format_reg_write(reg, val, st->reg_tx_buf);
drivers/iio/addac/ad74413r.c
178
return spi_write(st->spi, st->reg_tx_buf, AD74413R_FRAME_SIZE);
drivers/iio/addac/ad74413r.c
181
static int ad74413r_crc_check(struct ad74413r_state *st, u8 *buf)
drivers/iio/addac/ad74413r.c
186
dev_err(st->dev, "Bad CRC %02x for %02x%02x%02x\n",
drivers/iio/addac/ad74413r.c
196
struct ad74413r_state *st = context;
drivers/iio/addac/ad74413r.c
199
.tx_buf = st->reg_tx_buf,
drivers/iio/addac/ad74413r.c
204
.rx_buf = st->reg_rx_buf,
drivers/iio/addac/ad74413r.c
211
st->reg_tx_buf);
drivers/iio/addac/ad74413r.c
213
ret = spi_sync_transfer(st->spi, reg_read_xfer,
drivers/iio/addac/ad74413r.c
218
ret = ad74413r_crc_check(st, st->reg_rx_buf);
drivers/iio/addac/ad74413r.c
222
*val = get_unaligned_be16(&st->reg_rx_buf[1]);
drivers/iio/addac/ad74413r.c
234
static int ad74413r_set_gpo_config(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
237
return regmap_update_bits(st->regmap, AD74413R_REG_GPO_CONFIG_X(offset),
drivers/iio/addac/ad74413r.c
248
static int ad74413r_set_comp_debounce(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
261
return regmap_update_bits(st->regmap,
drivers/iio/addac/ad74413r.c
267
static int ad74413r_set_comp_drive_strength(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
273
return regmap_update_bits(st->regmap, AD74413R_REG_DIN_CONFIG_X(offset),
drivers/iio/addac/ad74413r.c
282
struct ad74413r_state *st = gpiochip_get_data(chip);
drivers/iio/addac/ad74413r.c
283
unsigned int real_offset = st->gpo_gpio_offsets[offset];
drivers/iio/addac/ad74413r.c
286
ret = ad74413r_set_gpo_config(st, real_offset,
drivers/iio/addac/ad74413r.c
291
return regmap_update_bits(st->regmap,
drivers/iio/addac/ad74413r.c
300
struct ad74413r_state *st = gpiochip_get_data(chip);
drivers/iio/addac/ad74413r.c
307
unsigned int real_offset = st->gpo_gpio_offsets[offset];
drivers/iio/addac/ad74413r.c
309
ret = ad74413r_set_gpo_config(st, real_offset,
drivers/iio/addac/ad74413r.c
319
return regmap_update_bits(st->regmap, AD74413R_REG_GPO_PAR_DATA,
drivers/iio/addac/ad74413r.c
325
struct ad74413r_state *st = gpiochip_get_data(chip);
drivers/iio/addac/ad74413r.c
326
unsigned int real_offset = st->comp_gpio_offsets[offset];
drivers/iio/addac/ad74413r.c
330
ret = regmap_read(st->regmap, AD74413R_REG_DIN_COMP_OUT, &status);
drivers/iio/addac/ad74413r.c
343
struct ad74413r_state *st = gpiochip_get_data(chip);
drivers/iio/addac/ad74413r.c
348
ret = regmap_read(st->regmap, AD74413R_REG_DIN_COMP_OUT, &val);
drivers/iio/addac/ad74413r.c
353
unsigned int real_offset = st->comp_gpio_offsets[offset];
drivers/iio/addac/ad74413r.c
377
struct ad74413r_state *st = gpiochip_get_data(chip);
drivers/iio/addac/ad74413r.c
378
unsigned int real_offset = st->gpo_gpio_offsets[offset];
drivers/iio/addac/ad74413r.c
382
return ad74413r_set_gpo_config(st, real_offset,
drivers/iio/addac/ad74413r.c
385
return ad74413r_set_gpo_config(st, real_offset,
drivers/iio/addac/ad74413r.c
396
struct ad74413r_state *st = gpiochip_get_data(chip);
drivers/iio/addac/ad74413r.c
397
unsigned int real_offset = st->comp_gpio_offsets[offset];
drivers/iio/addac/ad74413r.c
401
return ad74413r_set_comp_debounce(st, real_offset,
drivers/iio/addac/ad74413r.c
408
static int ad74413r_reset(struct ad74413r_state *st)
drivers/iio/addac/ad74413r.c
413
reset_gpio = devm_gpiod_get_optional(st->dev, "reset", GPIOD_OUT_HIGH);
drivers/iio/addac/ad74413r.c
423
ret = regmap_write(st->regmap, AD74413R_REG_CMD_KEY,
drivers/iio/addac/ad74413r.c
428
return regmap_write(st->regmap, AD74413R_REG_CMD_KEY,
drivers/iio/addac/ad74413r.c
432
static int ad74413r_set_channel_dac_code(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
440
return regmap_multi_reg_write(st->regmap, reg_seq, 2);
drivers/iio/addac/ad74413r.c
443
static int ad74413r_set_channel_function(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
448
ret = regmap_update_bits(st->regmap,
drivers/iio/addac/ad74413r.c
456
ret = ad74413r_set_channel_dac_code(st, channel, 0);
drivers/iio/addac/ad74413r.c
463
ret = regmap_update_bits(st->regmap,
drivers/iio/addac/ad74413r.c
473
ret = regmap_set_bits(st->regmap,
drivers/iio/addac/ad74413r.c
480
static int ad74413r_set_adc_conv_seq(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
489
ret = regmap_write_bits(st->regmap, AD74413R_REG_ADC_CONV_CTRL,
drivers/iio/addac/ad74413r.c
503
static int ad74413r_set_adc_channel_enable(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
507
return regmap_update_bits(st->regmap, AD74413R_REG_ADC_CONV_CTRL,
drivers/iio/addac/ad74413r.c
512
static int ad74413r_get_adc_range(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
518
ret = regmap_read(st->regmap, AD74413R_REG_ADC_CONFIG_X(channel), val);
drivers/iio/addac/ad74413r.c
527
static int ad74413r_get_adc_rejection(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
533
ret = regmap_read(st->regmap, AD74413R_REG_ADC_CONFIG_X(channel), val);
drivers/iio/addac/ad74413r.c
542
static int ad74413r_set_adc_rejection(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
546
return regmap_update_bits(st->regmap,
drivers/iio/addac/ad74413r.c
553
static int ad74413r_rejection_to_rate(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
570
dev_err(st->dev, "ADC rejection invalid\n");
drivers/iio/addac/ad74413r.c
575
static int ad74413r_rate_to_rejection(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
592
dev_err(st->dev, "ADC rate invalid\n");
drivers/iio/addac/ad74413r.c
597
static int ad74413r_range_to_voltage_range(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
612
dev_err(st->dev, "ADC range invalid\n");
drivers/iio/addac/ad74413r.c
617
static int ad74413r_range_to_voltage_offset(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
630
dev_err(st->dev, "ADC range invalid\n");
drivers/iio/addac/ad74413r.c
635
static int ad74413r_range_to_voltage_offset_raw(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
650
dev_err(st->dev, "ADC range invalid\n");
drivers/iio/addac/ad74413r.c
655
static int ad74413r_get_output_voltage_scale(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
664
static int ad74413r_get_output_current_scale(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
667
*val = st->refin_reg_uv;
drivers/iio/addac/ad74413r.c
668
*val2 = st->sense_resistor_ohms * AD74413R_DAC_CODE_MAX * 1000;
drivers/iio/addac/ad74413r.c
673
static int ad74413r_get_input_voltage_scale(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
680
ret = ad74413r_get_adc_range(st, channel, &range);
drivers/iio/addac/ad74413r.c
684
ret = ad74413r_range_to_voltage_range(st, range, val);
drivers/iio/addac/ad74413r.c
693
static int ad74413r_get_input_voltage_offset(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
699
ret = ad74413r_get_adc_range(st, channel, &range);
drivers/iio/addac/ad74413r.c
703
ret = ad74413r_range_to_voltage_offset_raw(st, range, val);
drivers/iio/addac/ad74413r.c
710
static int ad74413r_get_input_current_scale(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
717
ret = ad74413r_get_adc_range(st, channel, &range);
drivers/iio/addac/ad74413r.c
721
ret = ad74413r_range_to_voltage_range(st, range, val);
drivers/iio/addac/ad74413r.c
725
*val2 = AD74413R_ADC_RESULT_MAX * st->sense_resistor_ohms;
drivers/iio/addac/ad74413r.c
730
static int ad74413r_get_input_current_offset(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
738
ret = ad74413r_get_adc_range(st, channel, &range);
drivers/iio/addac/ad74413r.c
742
ret = ad74413r_range_to_voltage_range(st, range, &voltage_range);
drivers/iio/addac/ad74413r.c
746
ret = ad74413r_range_to_voltage_offset(st, range, &voltage_offset);
drivers/iio/addac/ad74413r.c
755
static int ad74413r_get_adc_rate(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
761
ret = ad74413r_get_adc_rejection(st, channel, &rejection);
drivers/iio/addac/ad74413r.c
765
ret = ad74413r_rejection_to_rate(st, rejection, val);
drivers/iio/addac/ad74413r.c
772
static int ad74413r_set_adc_rate(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
778
ret = ad74413r_rate_to_rejection(st, val, &rejection);
drivers/iio/addac/ad74413r.c
782
return ad74413r_set_adc_rejection(st, channel, rejection);
drivers/iio/addac/ad74413r.c
789
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
790
u8 *rx_buf = st->adc_samples_buf.rx_buf;
drivers/iio/addac/ad74413r.c
794
ret = spi_sync(st->spi, &st->adc_samples_msg);
drivers/iio/addac/ad74413r.c
798
for (i = 0; i < st->adc_active_channels; i++)
drivers/iio/addac/ad74413r.c
799
ad74413r_crc_check(st, &rx_buf[i * AD74413R_FRAME_SIZE]);
drivers/iio/addac/ad74413r.c
801
iio_push_to_buffers_with_timestamp(indio_dev, &st->adc_samples_buf,
drivers/iio/addac/ad74413r.c
813
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
816
iio_trigger_poll(st->trig);
drivers/iio/addac/ad74413r.c
818
complete(&st->adc_data_completion);
drivers/iio/addac/ad74413r.c
823
static int _ad74413r_get_single_adc_result(struct ad74413r_state *st,
drivers/iio/addac/ad74413r.c
829
guard(mutex)(&st->lock);
drivers/iio/addac/ad74413r.c
831
reinit_completion(&st->adc_data_completion);
drivers/iio/addac/ad74413r.c
833
ret = ad74413r_set_adc_channel_enable(st, channel, true);
drivers/iio/addac/ad74413r.c
837
ret = ad74413r_set_adc_conv_seq(st, AD74413R_CONV_SEQ_SINGLE);
drivers/iio/addac/ad74413r.c
841
if (!wait_for_completion_timeout(&st->adc_data_completion,
drivers/iio/addac/ad74413r.c
845
ret = regmap_read(st->regmap, AD74413R_REG_ADC_RESULT_X(channel),
drivers/iio/addac/ad74413r.c
850
ret = ad74413r_set_adc_conv_seq(st, AD74413R_CONV_SEQ_OFF);
drivers/iio/addac/ad74413r.c
854
ret = ad74413r_set_adc_channel_enable(st, channel, false);
drivers/iio/addac/ad74413r.c
866
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
872
ret = _ad74413r_get_single_adc_result(st, channel, val);
drivers/iio/addac/ad74413r.c
889
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
890
struct spi_transfer *xfer = st->adc_samples_xfer;
drivers/iio/addac/ad74413r.c
891
u8 *rx_buf = st->adc_samples_buf.rx_buf;
drivers/iio/addac/ad74413r.c
892
u8 *tx_buf = st->adc_samples_tx_buf;
drivers/iio/addac/ad74413r.c
896
guard(mutex)(&st->lock);
drivers/iio/addac/ad74413r.c
898
spi_message_init(&st->adc_samples_msg);
drivers/iio/addac/ad74413r.c
899
st->adc_active_channels = 0;
drivers/iio/addac/ad74413r.c
902
ret = ad74413r_set_adc_channel_enable(st, channel, false);
drivers/iio/addac/ad74413r.c
924
ret = ad74413r_set_adc_channel_enable(st, channel, true);
drivers/iio/addac/ad74413r.c
928
st->adc_active_channels++;
drivers/iio/addac/ad74413r.c
930
if (xfer == st->adc_samples_xfer)
drivers/iio/addac/ad74413r.c
943
spi_message_add_tail(xfer, &st->adc_samples_msg);
drivers/iio/addac/ad74413r.c
946
if (xfer != st->adc_samples_xfer)
drivers/iio/addac/ad74413r.c
956
spi_message_add_tail(xfer, &st->adc_samples_msg);
drivers/iio/addac/ad74413r.c
962
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
964
return ad74413r_set_adc_conv_seq(st, AD74413R_CONV_SEQ_CONTINUOUS);
drivers/iio/addac/ad74413r.c
969
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
971
return ad74413r_set_adc_conv_seq(st, AD74413R_CONV_SEQ_OFF);
drivers/iio/addac/ad74413r.c
978
struct ad74413r_state *st = iio_priv(indio_dev);
drivers/iio/addac/ad74413r.c
985
return ad74413r_get_output_voltage_scale(st,
drivers/iio/addac/ad74413r.c
988
return ad74413r_get_input_voltage_scale(st,
drivers/iio/addac/ad74413r.c
992
return ad74413r_get_output_current_scale(st,
drivers/iio/addac/ad74413r.c
995
return ad74413r_get_input_current_scale(st,
drivers/iio/amplifiers/ad8366.c
192
static int ad8366_write_code(struct ad8366_state *st)
drivers/iio/amplifiers/ad8366.c
194
const struct ad8366_info *inf = st->info;
drivers/iio/amplifiers/ad8366.c
198
len = inf->pack_code(st->ch, inf->num_channels, st->data);
drivers/iio/amplifiers/ad8366.c
200
st->data[0] = st->ch[0];
drivers/iio/amplifiers/ad8366.c
202
return spi_write(st->spi, st->data, len);
drivers/iio/amplifiers/ad8366.c
211
struct ad8366_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/ad8366.c
212
const struct ad8366_info *inf = st->info;
drivers/iio/amplifiers/ad8366.c
216
mutex_lock(&st->lock);
drivers/iio/amplifiers/ad8366.c
219
code = st->ch[chan->channel];
drivers/iio/amplifiers/ad8366.c
231
mutex_unlock(&st->lock);
drivers/iio/amplifiers/ad8366.c
242
struct ad8366_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/ad8366.c
243
const struct ad8366_info *inf = st->info;
drivers/iio/amplifiers/ad8366.c
259
mutex_lock(&st->lock);
drivers/iio/amplifiers/ad8366.c
262
st->ch[chan->channel] = code;
drivers/iio/amplifiers/ad8366.c
263
ret = ad8366_write_code(st);
drivers/iio/amplifiers/ad8366.c
268
mutex_unlock(&st->lock);
drivers/iio/amplifiers/ad8366.c
310
struct ad8366_state *st;
drivers/iio/amplifiers/ad8366.c
313
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/amplifiers/ad8366.c
317
st = iio_priv(indio_dev);
drivers/iio/amplifiers/ad8366.c
319
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/amplifiers/ad8366.c
327
st->spi = spi;
drivers/iio/amplifiers/ad8366.c
328
st->info = spi_get_device_match_data(spi);
drivers/iio/amplifiers/ad8366.c
340
indio_dev->name = st->info->name;
drivers/iio/amplifiers/ad8366.c
344
indio_dev->num_channels = st->info->num_channels;
drivers/iio/amplifiers/ad8366.c
346
ret = ad8366_write_code(st);
drivers/iio/amplifiers/ada4250.c
107
if (st->gain == 0)
drivers/iio/amplifiers/ada4250.c
124
max_vos = x[st->gain] * 127 * ((1 << (i + 1)) - 1);
drivers/iio/amplifiers/ada4250.c
128
vlsb = x[st->gain] * ((1 << (i + 1)) - 1);
drivers/iio/amplifiers/ada4250.c
138
mutex_lock(&st->lock);
drivers/iio/amplifiers/ada4250.c
139
ret = regmap_update_bits(st->regmap, ADA4250_REG_SNSR_CAL_CNFG,
drivers/iio/amplifiers/ada4250.c
145
st->offset_uv = offset_raw * vlsb;
drivers/iio/amplifiers/ada4250.c
154
st->offset_uv *= (-1);
drivers/iio/amplifiers/ada4250.c
157
ret = regmap_write(st->regmap, ADA4250_REG_SNSR_CAL_VAL, offset_raw);
drivers/iio/amplifiers/ada4250.c
160
mutex_unlock(&st->lock);
drivers/iio/amplifiers/ada4250.c
169
struct ada4250_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/ada4250.c
174
ret = regmap_read(st->regmap, ADA4250_REG_GAIN_MUX, val);
drivers/iio/amplifiers/ada4250.c
182
*val = st->offset_uv;
drivers/iio/amplifiers/ada4250.c
186
ret = regmap_read(st->regmap, ADA4250_REG_SNSR_CAL_CNFG, val);
drivers/iio/amplifiers/ada4250.c
207
struct ada4250_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/ada4250.c
212
ret = regmap_write(st->regmap, ADA4250_REG_GAIN_MUX,
drivers/iio/amplifiers/ada4250.c
217
st->gain = ilog2(val);
drivers/iio/amplifiers/ada4250.c
223
ret = regmap_update_bits(st->regmap, ADA4250_REG_SNSR_CAL_CNFG,
drivers/iio/amplifiers/ada4250.c
229
st->bias = val;
drivers/iio/amplifiers/ada4250.c
265
struct ada4250_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/ada4250.c
268
return regmap_read(st->regmap, reg, read_val);
drivers/iio/amplifiers/ada4250.c
270
return regmap_write(st->regmap, reg, write_val);
drivers/iio/amplifiers/ada4250.c
295
static int ada4250_init(struct ada4250_state *st)
drivers/iio/amplifiers/ada4250.c
297
struct device *dev = &st->spi->dev;
drivers/iio/amplifiers/ada4250.c
301
st->refbuf_en = device_property_read_bool(dev, "adi,refbuf-enable");
drivers/iio/amplifiers/ada4250.c
303
st->avdd_uv = devm_regulator_get_enable_read_voltage(dev, "avdd");
drivers/iio/amplifiers/ada4250.c
304
if (st->avdd_uv < 0)
drivers/iio/amplifiers/ada4250.c
305
return dev_err_probe(dev, st->avdd_uv,
drivers/iio/amplifiers/ada4250.c
308
ret = regmap_write(st->regmap, ADA4250_REG_RESET,
drivers/iio/amplifiers/ada4250.c
313
ret = regmap_bulk_read(st->regmap, ADA4250_REG_CHIP_ID, &st->reg_val_16,
drivers/iio/amplifiers/ada4250.c
314
sizeof(st->reg_val_16));
drivers/iio/amplifiers/ada4250.c
318
chip_id = le16_to_cpu(st->reg_val_16);
drivers/iio/amplifiers/ada4250.c
323
return regmap_write(st->regmap, ADA4250_REG_REFBUF_EN,
drivers/iio/amplifiers/ada4250.c
324
FIELD_PREP(ADA4250_REFBUF_MSK, st->refbuf_en));
drivers/iio/amplifiers/ada4250.c
331
struct ada4250_state *st;
drivers/iio/amplifiers/ada4250.c
334
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/amplifiers/ada4250.c
342
st = iio_priv(indio_dev);
drivers/iio/amplifiers/ada4250.c
343
st->regmap = regmap;
drivers/iio/amplifiers/ada4250.c
344
st->spi = spi;
drivers/iio/amplifiers/ada4250.c
351
mutex_init(&st->lock);
drivers/iio/amplifiers/ada4250.c
353
ret = ada4250_init(st);
drivers/iio/amplifiers/ada4250.c
86
struct ada4250_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/ada4250.c
92
if (st->bias == 0 || st->bias == 3)
drivers/iio/amplifiers/ada4250.c
95
voltage_v = DIV_ROUND_CLOSEST(st->avdd_uv, MICRO);
drivers/iio/amplifiers/ada4250.c
97
if (st->bias == ADA4250_BIAS_AVDD)
drivers/iio/amplifiers/adl8113.c
104
struct adl8113_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/adl8113.c
110
for (i = 0; i < st->num_gain_configs; i++) {
drivers/iio/amplifiers/adl8113.c
111
if (st->gain_configs[i].path == st->current_path) {
drivers/iio/amplifiers/adl8113.c
112
*val = st->gain_configs[i].gain_db;
drivers/iio/amplifiers/adl8113.c
127
struct adl8113_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/adl8113.c
135
config_idx = adl8113_find_gain_config(st, val);
drivers/iio/amplifiers/adl8113.c
139
return adl8113_set_path(st, st->gain_configs[config_idx].path);
drivers/iio/amplifiers/adl8113.c
150
static int adl8113_init_gain_configs(struct device *dev, struct adl8113_state *st)
drivers/iio/amplifiers/adl8113.c
160
st->gain_configs = devm_kcalloc(dev, 4, sizeof(*st->gain_configs),
drivers/iio/amplifiers/adl8113.c
162
if (!st->gain_configs)
drivers/iio/amplifiers/adl8113.c
169
st->gain_configs[i++] = (struct adl8113_gain_config) {
drivers/iio/amplifiers/adl8113.c
175
st->gain_configs[i++] = (struct adl8113_gain_config) {
drivers/iio/amplifiers/adl8113.c
183
st->gain_configs[i++] = (struct adl8113_gain_config) {
drivers/iio/amplifiers/adl8113.c
192
st->gain_configs[i++] = (struct adl8113_gain_config) {
drivers/iio/amplifiers/adl8113.c
198
st->num_gain_configs = i;
drivers/iio/amplifiers/adl8113.c
206
struct adl8113_state *st;
drivers/iio/amplifiers/adl8113.c
210
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/amplifiers/adl8113.c
214
st = iio_priv(indio_dev);
drivers/iio/amplifiers/adl8113.c
216
st->gpios = devm_gpiod_get_array(dev, "ctrl", GPIOD_OUT_LOW);
drivers/iio/amplifiers/adl8113.c
217
if (IS_ERR(st->gpios))
drivers/iio/amplifiers/adl8113.c
218
return dev_err_probe(dev, PTR_ERR(st->gpios),
drivers/iio/amplifiers/adl8113.c
221
if (st->gpios->ndescs != 2)
drivers/iio/amplifiers/adl8113.c
224
st->gpios->ndescs);
drivers/iio/amplifiers/adl8113.c
234
ret = adl8113_init_gain_configs(dev, st);
drivers/iio/amplifiers/adl8113.c
239
ret = adl8113_set_path(st, ADL8113_INTERNAL_AMP);
drivers/iio/amplifiers/adl8113.c
46
static int adl8113_set_path(struct adl8113_state *st,
drivers/iio/amplifiers/adl8113.c
73
ret = gpiod_set_array_value_cansleep(st->gpios->ndescs, st->gpios->desc,
drivers/iio/amplifiers/adl8113.c
74
st->gpios->info, values);
drivers/iio/amplifiers/adl8113.c
78
st->current_path = path;
drivers/iio/amplifiers/adl8113.c
82
static int adl8113_find_gain_config(struct adl8113_state *st, int gain_db)
drivers/iio/amplifiers/adl8113.c
86
for (i = 0; i < st->num_gain_configs; i++) {
drivers/iio/amplifiers/adl8113.c
87
if (st->gain_configs[i].gain_db == gain_db)
drivers/iio/amplifiers/hmc425a.c
113
static int code_to_gain_dB(struct hmc425a_state *st, int *val, int *val2)
drivers/iio/amplifiers/hmc425a.c
115
if (st->powerdown)
drivers/iio/amplifiers/hmc425a.c
117
return st->chip_info->code_to_gain_dB(st->gain, val, val2);
drivers/iio/amplifiers/hmc425a.c
158
struct hmc425a_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/hmc425a.c
163
gpiod_multi_set_value_cansleep(st->gpios, values);
drivers/iio/amplifiers/hmc425a.c
171
struct hmc425a_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/hmc425a.c
174
mutex_lock(&st->lock);
drivers/iio/amplifiers/hmc425a.c
177
ret = code_to_gain_dB(st, val, val2);
drivers/iio/amplifiers/hmc425a.c
185
mutex_unlock(&st->lock);
drivers/iio/amplifiers/hmc425a.c
194
struct hmc425a_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/hmc425a.c
197
mutex_lock(&st->lock);
drivers/iio/amplifiers/hmc425a.c
200
ret = gain_dB_to_code(st, val, val2, &code);
drivers/iio/amplifiers/hmc425a.c
203
st->gain = code;
drivers/iio/amplifiers/hmc425a.c
205
ret = hmc425a_write(indio_dev, st->gain);
drivers/iio/amplifiers/hmc425a.c
210
mutex_unlock(&st->lock);
drivers/iio/amplifiers/hmc425a.c
238
struct hmc425a_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/hmc425a.c
240
return sysfs_emit(buf, "%d\n", st->powerdown);
drivers/iio/amplifiers/hmc425a.c
249
struct hmc425a_state *st = iio_priv(indio_dev);
drivers/iio/amplifiers/hmc425a.c
257
mutex_lock(&st->lock);
drivers/iio/amplifiers/hmc425a.c
258
st->powerdown = powerdown;
drivers/iio/amplifiers/hmc425a.c
259
code = (powerdown) ? LTC6373_SHUTDOWN : st->gain;
drivers/iio/amplifiers/hmc425a.c
261
mutex_unlock(&st->lock);
drivers/iio/amplifiers/hmc425a.c
354
struct hmc425a_state *st;
drivers/iio/amplifiers/hmc425a.c
357
indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*st));
drivers/iio/amplifiers/hmc425a.c
361
st = iio_priv(indio_dev);
drivers/iio/amplifiers/hmc425a.c
363
st->chip_info = device_get_match_data(&pdev->dev);
drivers/iio/amplifiers/hmc425a.c
364
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/amplifiers/hmc425a.c
365
indio_dev->channels = st->chip_info->channels;
drivers/iio/amplifiers/hmc425a.c
366
indio_dev->name = st->chip_info->name;
drivers/iio/amplifiers/hmc425a.c
367
st->gain = st->chip_info->default_gain;
drivers/iio/amplifiers/hmc425a.c
369
st->gpios = devm_gpiod_get_array(&pdev->dev, "ctrl", GPIOD_OUT_LOW);
drivers/iio/amplifiers/hmc425a.c
370
if (IS_ERR(st->gpios))
drivers/iio/amplifiers/hmc425a.c
371
return dev_err_probe(&pdev->dev, PTR_ERR(st->gpios),
drivers/iio/amplifiers/hmc425a.c
374
if (st->gpios->ndescs != st->chip_info->num_gpios) {
drivers/iio/amplifiers/hmc425a.c
376
st->chip_info->num_gpios);
drivers/iio/amplifiers/hmc425a.c
384
mutex_init(&st->lock);
drivers/iio/amplifiers/hmc425a.c
389
if (st->chip_info->has_powerdown) {
drivers/iio/amplifiers/hmc425a.c
390
st->powerdown = true;
drivers/iio/amplifiers/hmc425a.c
391
hmc425a_write(indio_dev, st->chip_info->powerdown_val);
drivers/iio/amplifiers/hmc425a.c
394
hmc425a_write(indio_dev, st->gain);
drivers/iio/amplifiers/hmc425a.c
67
static int gain_dB_to_code(struct hmc425a_state *st, int val, int val2, int *code)
drivers/iio/amplifiers/hmc425a.c
69
const struct hmc425a_chip_info *inf = st->chip_info;
drivers/iio/amplifiers/hmc425a.c
79
if (st->powerdown)
drivers/iio/amplifiers/hmc425a.c
82
return st->chip_info->gain_dB_to_code(gain, code);
drivers/iio/chemical/mhz19b.c
110
st->buf_idx = 0;
drivers/iio/chemical/mhz19b.c
111
st->buf_overflow = false;
drivers/iio/chemical/mhz19b.c
112
reinit_completion(&st->buf_ready);
drivers/iio/chemical/mhz19b.c
122
ret = wait_for_completion_interruptible_timeout(&st->buf_ready,
drivers/iio/chemical/mhz19b.c
129
if (st->buf_overflow)
drivers/iio/chemical/mhz19b.c
132
if (st->buf[8] != mhz19b_get_checksum(st->buf)) {
drivers/iio/chemical/mhz19b.c
137
return get_unaligned_be16(&st->buf[2]);
drivers/iio/chemical/mhz19b.c
250
struct mhz19b_state *st = iio_priv(indio_dev);
drivers/iio/chemical/mhz19b.c
251
size_t remaining = MHZ19B_CMD_SIZE - st->buf_idx;
drivers/iio/chemical/mhz19b.c
254
st->buf_idx = 0;
drivers/iio/chemical/mhz19b.c
255
st->buf_overflow = true;
drivers/iio/chemical/mhz19b.c
256
complete(&st->buf_ready);
drivers/iio/chemical/mhz19b.c
260
memcpy(st->buf + st->buf_idx, data, len);
drivers/iio/chemical/mhz19b.c
261
st->buf_idx += len;
drivers/iio/chemical/mhz19b.c
263
if (st->buf_idx == MHZ19B_CMD_SIZE) {
drivers/iio/chemical/mhz19b.c
264
st->buf_idx = 0;
drivers/iio/chemical/mhz19b.c
265
complete(&st->buf_ready);
drivers/iio/chemical/mhz19b.c
281
struct mhz19b_state *st;
drivers/iio/chemical/mhz19b.c
293
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/chemical/mhz19b.c
298
st = iio_priv(indio_dev);
drivers/iio/chemical/mhz19b.c
299
st->serdev = serdev;
drivers/iio/chemical/mhz19b.c
301
init_completion(&st->buf_ready);
drivers/iio/chemical/mhz19b.c
84
struct mhz19b_state *st = iio_priv(indio_dev);
drivers/iio/chemical/mhz19b.c
85
struct serdev_device *serdev = st->serdev;
drivers/iio/chemical/scd30_core.c
642
struct scd30_state *st = iio_priv(indio_dev);
drivers/iio/chemical/scd30_core.c
645
enable_irq(st->irq);
drivers/iio/chemical/scd30_core.c
647
disable_irq(st->irq);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
103
return !!(st->core.resp->list_activities.enabled &
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
107
return !!(st->core.resp->list_activities.enabled &
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
127
struct cros_ec_sensors_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
129
guard(mutex)(&st->core.cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
130
st->core.param.cmd = MOTIONSENSE_CMD_SET_ACTIVITY;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
133
st->core.param.set_activity.activity =
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
138
st->core.param.set_activity.activity =
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
150
st->core.param.set_activity.enable = state;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
151
return cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
161
const struct cros_ec_sensors_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
168
index = st->body_detection_channel_index;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
172
index = st->sig_motion_channel_index;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
179
chan = &st->channels[index];
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
211
struct cros_ec_sensors_state *st;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
221
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
231
st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
232
st->core.type = st->core.resp->info.type;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
233
st->core.read_ec_sensors_data = cros_ec_sensors_read_cmd;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
235
st->core.param.cmd = MOTIONSENSE_CMD_LIST_ACTIVITIES;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
236
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
240
activities = st->core.resp->list_activities.enabled |
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
241
st->core.resp->list_activities.disabled;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
247
st->channels = devm_kcalloc(dev, nb_activities,
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
248
sizeof(*st->channels), GFP_KERNEL);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
249
if (!st->channels)
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
252
channel = &st->channels[0];
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
262
st->body_detection_channel_index = index;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
271
st->sig_motion_channel_index = index;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
284
indio_dev->channels = st->channels;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
61
struct cros_ec_sensors_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
67
guard(mutex)(&st->core.cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
68
st->core.param.cmd = MOTIONSENSE_CMD_GET_ACTIVITY;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
69
st->core.param.get_activity.activity =
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
71
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
80
*val = !st->core.resp->get_activity.state;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
89
struct cros_ec_sensors_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
95
guard(mutex)(&st->core.cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
96
st->core.param.cmd = MOTIONSENSE_CMD_LIST_ACTIVITIES;
drivers/iio/common/cros_ec_sensors/cros_ec_activity.c
97
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c
53
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c
56
st->param.cmd = MOTIONSENSE_CMD_LID_ANGLE;
drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c
57
ret = cros_ec_motion_send_host_cmd(st, sizeof(st->resp->lid_angle));
drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c
63
*data = st->resp->lid_angle.value;
drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c
71
struct cros_ec_lid_angle_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c
75
mutex_lock(&st->core.cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c
81
mutex_unlock(&st->core.cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
100
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
104
val64 = st->core.resp->sensor_range.ret;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
105
switch (st->core.type) {
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
140
ret = cros_ec_sensors_core_read(&st->core, chan, val, val2,
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
144
mutex_unlock(&st->core.cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
153
struct cros_ec_sensors_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
158
mutex_lock(&st->core.cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
162
st->core.calib[idx].offset = val;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
165
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_OFFSET;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
166
st->core.param.sensor_offset.flags =
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
169
st->core.param.sensor_offset.offset[i] =
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
170
st->core.calib[i].offset;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
171
st->core.param.sensor_offset.temp =
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
174
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
177
st->core.calib[idx].scale = val;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
180
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_SCALE;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
181
st->core.param.sensor_offset.flags =
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
184
st->core.param.sensor_scale.scale[i] =
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
185
st->core.calib[i].scale;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
186
st->core.param.sensor_scale.temp =
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
189
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
192
if (st->core.type == MOTIONSENSE_TYPE_MAG) {
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
196
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_RANGE;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
197
st->core.param.sensor_range.data = val;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
200
st->core.param.sensor_range.roundup = 1;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
202
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
204
st->core.range_updated = true;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
205
st->core.curr_range = val;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
210
&st->core, chan, val, val2, mask);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
214
mutex_unlock(&st->core.cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
39
struct cros_ec_sensors_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
46
mutex_lock(&st->core.cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
50
ret = st->core.read_ec_sensors_data(indio_dev, 1 << idx, &data);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
57
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_OFFSET;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
58
st->core.param.sensor_offset.flags = 0;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
60
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
66
st->core.calib[i].offset =
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
67
st->core.resp->sensor_offset.offset[i];
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
69
*val = st->core.calib[idx].offset;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
72
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_SCALE;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
73
st->core.param.sensor_offset.flags = 0;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
75
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
88
st->core.calib[i].scale =
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
89
st->core.resp->sensor_scale.scale[i];
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
91
*val = st->core.calib[idx].scale >> 15;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
92
*val2 = ((st->core.calib[idx].scale & 0x7FFF) * 1000000LL) /
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
97
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_RANGE;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
98
st->core.param.sensor_range.data = EC_MOTION_SENSE_NO_VALUE;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
110
mutex_lock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
111
st->param.cmd = MOTIONSENSE_CMD_EC_RATE;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
112
st->param.ec_rate.data = min(U16_MAX, latency);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
113
ret = cros_ec_motion_send_host_cmd(st, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
115
mutex_unlock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
125
st->param.cmd = MOTIONSENSE_CMD_FIFO_FLUSH;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
126
ret = cros_ec_motion_send_host_cmd(st, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
127
mutex_unlock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
139
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
142
mutex_lock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
143
st->param.cmd = MOTIONSENSE_CMD_EC_RATE;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
144
st->param.ec_rate.data = EC_MOTION_SENSE_NO_VALUE;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
146
ret = cros_ec_motion_send_host_cmd(st, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
147
latency = st->resp->ec_rate.ret;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
148
mutex_unlock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
166
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
168
return sprintf(buf, "%d\n", st->fifo_max_event_count);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
183
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
195
out = (s16 *)st->samples;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
206
iio_push_to_buffers_with_timestamp(indio_dev, st->samples,
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
220
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
221
u8 sensor_num = st->param.info.sensor_num;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
437
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
445
mutex_lock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
446
st->param.cmd = MOTIONSENSE_CMD_PERFORM_CALIB;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
447
st->param.perform_calib.enable = calibrate;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
448
ret = cros_ec_motion_send_host_cmd(st, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
455
st->calib[i].offset = st->resp->perform_calib.offset[i];
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
457
mutex_unlock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
466
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
468
return snprintf(buf, PAGE_SIZE, "%d\n", st->param.info.sensor_num);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
504
struct cros_ec_sensors_core_state *st,
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
511
if (st->type == MOTIONSENSE_TYPE_ACCEL)
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
513
(1 + idx + st->param.info.sensor_num *
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
546
struct cros_ec_sensors_core_state *st)
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
548
struct cros_ec_device *ec = st->ec;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
588
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
589
struct cros_ec_device *ec = st->ec;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
596
cros_ec_sensors_idx_to_reg(st, i),
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
601
*data *= st->sign[i];
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
622
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
623
struct cros_ec_device *ec = st->ec;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
640
ret = cros_ec_sensors_read_until_not_busy(st);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
678
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
683
st->param.cmd = MOTIONSENSE_CMD_DATA;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
684
ret = cros_ec_motion_send_host_cmd(st, sizeof(st->resp->data));
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
691
*data = st->resp->data.data[i];
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
715
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
718
mutex_lock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
721
memset(st->samples, 0, indio_dev->scan_bytes);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
724
ret = st->read_ec_sensors_data(indio_dev,
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
726
(s16 *)st->samples);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
730
iio_push_to_buffers_with_timestamp(indio_dev, st->samples,
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
740
mutex_unlock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
756
int cros_ec_sensors_core_read(struct cros_ec_sensors_core_state *st,
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
764
st->param.cmd = MOTIONSENSE_CMD_SENSOR_ODR;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
765
st->param.sensor_odr.data =
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
768
ret = cros_ec_motion_send_host_cmd(st, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
772
frequency = st->resp->sensor_odr.ret;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
828
int cros_ec_sensors_core_write(struct cros_ec_sensors_core_state *st,
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
837
st->param.cmd = MOTIONSENSE_CMD_SENSOR_ODR;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
838
st->param.sensor_odr.data = frequency;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
841
st->param.sensor_odr.roundup = 1;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
843
ret = cros_ec_motion_send_host_cmd(st, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
853
st->param.cmd = MOTIONSENSE_CMD_FIFO_FLUSH;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
854
ret = cros_ec_motion_send_host_cmd(st, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
868
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
871
if (st->range_updated) {
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
872
mutex_lock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
873
st->param.cmd = MOTIONSENSE_CMD_SENSOR_RANGE;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
874
st->param.sensor_range.data = st->curr_range;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
875
st->param.sensor_range.roundup = 1;
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
876
ret = cros_ec_motion_send_host_cmd(st, 0);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
877
mutex_unlock(&st->cmd_lock);
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
99
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
158
s32 hid_sensor_read_poll_value(struct hid_sensor_common *st)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
163
ret = sensor_hub_get_feature(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
164
st->poll.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
165
st->poll.index, sizeof(value), &value);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
170
if (st->poll.units == HID_USAGE_SENSOR_UNITS_SECOND)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
178
int hid_sensor_read_samp_freq_value(struct hid_sensor_common *st,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
184
ret = sensor_hub_get_feature(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
185
st->poll.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
186
st->poll.index, sizeof(value), &value);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
191
if (st->poll.units == HID_USAGE_SENSOR_UNITS_MILLISECOND)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
193
else if (st->poll.units == HID_USAGE_SENSOR_UNITS_SECOND)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
205
int hid_sensor_write_samp_freq_value(struct hid_sensor_common *st,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
216
if (st->poll.units == HID_USAGE_SENSOR_UNITS_MILLISECOND)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
218
else if (st->poll.units == HID_USAGE_SENSOR_UNITS_SECOND)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
223
ret = sensor_hub_set_feature(st->hsdev, st->poll.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
224
st->poll.index, sizeof(value), &value);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
228
ret = sensor_hub_get_feature(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
229
st->poll.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
230
st->poll.index, sizeof(value), &value);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
234
st->poll_interval = value;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
240
int hid_sensor_read_raw_hyst_value(struct hid_sensor_common *st,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
246
ret = sensor_hub_get_feature(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
247
st->sensitivity.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
248
st->sensitivity.index, sizeof(value),
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
254
convert_from_vtf_format(value, st->sensitivity.size,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
255
st->sensitivity.unit_expo,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
263
int hid_sensor_read_raw_hyst_rel_value(struct hid_sensor_common *st, int *val1,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
269
ret = sensor_hub_get_feature(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
270
st->sensitivity_rel.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
271
st->sensitivity_rel.index, sizeof(value),
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
278
convert_from_vtf_format(value, st->sensitivity_rel.size,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
279
st->sensitivity_rel.unit_expo, val1, val2);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
286
int hid_sensor_write_raw_hyst_value(struct hid_sensor_common *st,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
295
value = convert_to_vtf_format(st->sensitivity.size,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
296
st->sensitivity.unit_expo,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
298
ret = sensor_hub_set_feature(st->hsdev, st->sensitivity.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
299
st->sensitivity.index, sizeof(value),
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
304
ret = sensor_hub_get_feature(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
305
st->sensitivity.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
306
st->sensitivity.index, sizeof(value),
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
311
st->raw_hystersis = value;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
317
int hid_sensor_write_raw_hyst_rel_value(struct hid_sensor_common *st,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
326
value = convert_to_vtf_format(st->sensitivity_rel.size,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
327
st->sensitivity_rel.unit_expo,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
329
ret = sensor_hub_set_feature(st->hsdev, st->sensitivity_rel.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
330
st->sensitivity_rel.index, sizeof(value),
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
335
ret = sensor_hub_get_feature(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
336
st->sensitivity_rel.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
337
st->sensitivity_rel.index, sizeof(value),
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
342
st->raw_hystersis = value;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
432
int64_t hid_sensor_convert_timestamp(struct hid_sensor_common *st,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
435
return st->timestamp_ns_scale * raw_value;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
442
struct hid_sensor_common *st)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
447
&st->poll);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
449
if (st->poll.units == 0)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
450
st->poll.units = HID_USAGE_SENSOR_UNITS_MILLISECOND;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
452
st->poll_interval = -1;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
460
struct hid_sensor_common *st)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
465
&st->report_latency);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
468
st->report_latency.index, st->report_latency.report_id);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
471
int hid_sensor_get_report_latency(struct hid_sensor_common *st)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
476
ret = sensor_hub_get_feature(st->hsdev, st->report_latency.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
477
st->report_latency.index, sizeof(value),
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
486
int hid_sensor_set_report_latency(struct hid_sensor_common *st, int latency_ms)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
488
return sensor_hub_set_feature(st->hsdev, st->report_latency.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
489
st->report_latency.index,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
494
bool hid_sensor_batch_mode_supported(struct hid_sensor_common *st)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
496
return st->report_latency.index > 0 && st->report_latency.report_id > 0;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
502
struct hid_sensor_common *st,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
512
hid_sensor_get_reporting_interval(hsdev, usage_id, st);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
517
&st->report_state);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
522
&st->power_state);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
524
st->power_state.logical_minimum = 1;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
525
st->report_state.logical_minimum = 1;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
530
&st->sensitivity);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
535
&st->sensitivity_rel);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
541
if (st->sensitivity.index < 0)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
546
&st->sensitivity);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
548
if (st->sensitivity_rel.index < 0)
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
553
&st->sensitivity_rel);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
556
st->raw_hystersis = -1;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
567
st->timestamp_ns_scale = val0;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
569
st->timestamp_ns_scale = 1000000000;
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
571
hid_sensor_get_report_latency_info(hsdev, usage_id, st);
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
574
st->poll.index, st->poll.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
575
st->report_state.index, st->report_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
576
st->power_state.index, st->power_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
577
st->sensitivity.index, st->sensitivity.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
581
st->power_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-attributes.c
582
st->power_state.index, sizeof(value), &value);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
101
report_val = hid_sensor_get_usage_index(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
102
st->report_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
103
st->report_state.index,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
106
poll_value = hid_sensor_read_poll_value(st);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
110
val = atomic_dec_if_positive(&st->data_ready);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
114
sensor_hub_device_close(st->hsdev);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
115
state_val = hid_sensor_get_usage_index(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
116
st->power_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
117
st->power_state.index,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
119
report_val = hid_sensor_get_usage_index(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
120
st->report_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
121
st->report_state.index,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
126
state_val += st->power_state.logical_minimum;
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
127
sensor_hub_set_feature(st->hsdev, st->power_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
128
st->power_state.index, sizeof(state_val),
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
133
report_val += st->report_state.logical_minimum;
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
134
sensor_hub_set_feature(st->hsdev, st->report_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
135
st->report_state.index,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
141
st->pdev->name, state_val, report_val);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
143
sensor_hub_get_feature(st->hsdev, st->power_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
144
st->power_state.index,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
153
int hid_sensor_power_state(struct hid_sensor_common *st, bool state)
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
159
if (atomic_add_unless(&st->runtime_pm_enable, 1, 1))
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
160
pm_runtime_enable(&st->pdev->dev);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
163
atomic_inc(&st->user_requested_state);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
164
ret = pm_runtime_resume_and_get(&st->pdev->dev);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
166
atomic_dec(&st->user_requested_state);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
167
pm_runtime_use_autosuspend(&st->pdev->dev);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
168
ret = pm_runtime_put_autosuspend(&st->pdev->dev);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
175
atomic_set(&st->user_requested_state, state);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
176
return _hid_sensor_power_state(st, state);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
85
static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state)
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
92
if (sensor_hub_device_open(st->hsdev))
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
95
atomic_inc(&st->data_ready);
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
97
state_val = hid_sensor_get_usage_index(st->hsdev,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
98
st->power_state.report_id,
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
99
st->power_state.index,
drivers/iio/common/hid-sensors/hid-sensor-trigger.h
21
int hid_sensor_power_state(struct hid_sensor_common *st, bool state);
drivers/iio/dac/ad3530r.c
116
struct ad3530r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3530r.c
118
guard(mutex)(&st->lock);
drivers/iio/dac/ad3530r.c
119
return st->chan[chan->channel].powerdown_mode - 1;
drivers/iio/dac/ad3530r.c
126
struct ad3530r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3530r.c
128
guard(mutex)(&st->lock);
drivers/iio/dac/ad3530r.c
129
st->chan[chan->channel].powerdown_mode = mode + 1;
drivers/iio/dac/ad3530r.c
153
struct ad3530r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3530r.c
155
guard(mutex)(&st->lock);
drivers/iio/dac/ad3530r.c
156
return sysfs_emit(buf, "%d\n", st->chan[chan->channel].powerdown);
drivers/iio/dac/ad3530r.c
164
struct ad3530r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3530r.c
173
guard(mutex)(&st->lock);
drivers/iio/dac/ad3530r.c
177
pdmode = powerdown ? st->chan[chan->channel].powerdown_mode : 0;
drivers/iio/dac/ad3530r.c
183
ret = regmap_update_bits(st->regmap, reg, mask, val);
drivers/iio/dac/ad3530r.c
187
st->chan[chan->channel].powerdown = powerdown;
drivers/iio/dac/ad3530r.c
201
static int ad3530r_dac_write(struct ad3530r_state *st, unsigned int chan,
drivers/iio/dac/ad3530r.c
206
guard(mutex)(&st->lock);
drivers/iio/dac/ad3530r.c
207
st->buf = cpu_to_be16(val);
drivers/iio/dac/ad3530r.c
209
ret = regmap_bulk_write(st->regmap, st->chip_info->input_ch_reg(chan),
drivers/iio/dac/ad3530r.c
210
&st->buf, sizeof(st->buf));
drivers/iio/dac/ad3530r.c
214
if (st->ldac_gpio)
drivers/iio/dac/ad3530r.c
215
return ad3530r_trigger_hw_ldac(st->ldac_gpio);
drivers/iio/dac/ad3530r.c
217
return regmap_set_bits(st->regmap, st->chip_info->sw_ldac_trig_reg,
drivers/iio/dac/ad3530r.c
225
struct ad3530r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3530r.c
228
guard(mutex)(&st->lock);
drivers/iio/dac/ad3530r.c
231
ret = regmap_bulk_read(st->regmap,
drivers/iio/dac/ad3530r.c
232
st->chip_info->input_ch_reg(chan->channel),
drivers/iio/dac/ad3530r.c
233
&st->buf, sizeof(st->buf));
drivers/iio/dac/ad3530r.c
237
*val = FIELD_GET(AD3530R_REG_VAL_MASK, be16_to_cpu(st->buf));
drivers/iio/dac/ad3530r.c
241
*val = st->vref_mV;
drivers/iio/dac/ad3530r.c
254
struct ad3530r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3530r.c
261
return ad3530r_dac_write(st, chan->channel, val);
drivers/iio/dac/ad3530r.c
270
struct ad3530r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3530r.c
273
return regmap_read(st->regmap, reg, readval);
drivers/iio/dac/ad3530r.c
275
return regmap_write(st->regmap, reg, writeval);
drivers/iio/dac/ad3530r.c
369
static int ad3530r_setup(struct ad3530r_state *st, int external_vref_uV)
drivers/iio/dac/ad3530r.c
371
struct device *dev = regmap_get_device(st->regmap);
drivers/iio/dac/ad3530r.c
387
ret = regmap_update_bits(st->regmap, AD3530R_INTERFACE_CONFIG_A,
drivers/iio/dac/ad3530r.c
397
ret = regmap_set_bits(st->regmap, AD3530R_OUTPUT_CONTROL_0,
drivers/iio/dac/ad3530r.c
406
st->vref_mV = range_multiplier * external_vref_uV / MILLI;
drivers/iio/dac/ad3530r.c
408
ret = regmap_set_bits(st->regmap, AD3530R_REFERENCE_CONTROL_0,
drivers/iio/dac/ad3530r.c
413
st->vref_mV = range_multiplier * AD3530R_INTERNAL_VREF_mV;
drivers/iio/dac/ad3530r.c
422
ret = regmap_write(st->regmap, AD3530R_OUTPUT_OPERATING_MODE_0, val);
drivers/iio/dac/ad3530r.c
426
if (st->chip_info->num_channels > 4) {
drivers/iio/dac/ad3530r.c
427
ret = regmap_write(st->regmap, AD3530R_OUTPUT_OPERATING_MODE_1,
drivers/iio/dac/ad3530r.c
433
for (i = 0; i < st->chip_info->num_channels; i++)
drivers/iio/dac/ad3530r.c
434
st->chan[i].powerdown_mode = AD3530R_POWERDOWN_32K;
drivers/iio/dac/ad3530r.c
436
st->ldac_gpio = devm_gpiod_get_optional(dev, "ldac", GPIOD_OUT_LOW);
drivers/iio/dac/ad3530r.c
437
if (IS_ERR(st->ldac_gpio))
drivers/iio/dac/ad3530r.c
438
return dev_err_probe(dev, PTR_ERR(st->ldac_gpio),
drivers/iio/dac/ad3530r.c
461
struct ad3530r_state *st;
drivers/iio/dac/ad3530r.c
464
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad3530r.c
468
st = iio_priv(indio_dev);
drivers/iio/dac/ad3530r.c
470
st->regmap = devm_regmap_init_spi(spi, &ad3530r_regmap_config);
drivers/iio/dac/ad3530r.c
471
if (IS_ERR(st->regmap))
drivers/iio/dac/ad3530r.c
472
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/dac/ad3530r.c
475
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/dac/ad3530r.c
479
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/dac/ad3530r.c
480
if (!st->chip_info)
drivers/iio/dac/ad3530r.c
495
if (!st->chip_info->internal_ref_support && external_vref_uV == 0)
drivers/iio/dac/ad3530r.c
498
ret = ad3530r_setup(st, external_vref_uV);
drivers/iio/dac/ad3530r.c
502
indio_dev->name = st->chip_info->name;
drivers/iio/dac/ad3530r.c
505
indio_dev->channels = st->chip_info->channels;
drivers/iio/dac/ad3530r.c
506
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/dac/ad3552r-hs.c
100
ret = ad3552r_hs_reg_read(st, reg, &rval, xfer_size);
drivers/iio/dac/ad3552r-hs.c
106
return st->data->bus_reg_write(st->back, reg, rval, xfer_size);
drivers/iio/dac/ad3552r-hs.c
113
struct ad3552r_hs_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3552r-hs.c
125
*val = DIV_ROUND_CLOSEST(st->data->bus_sample_data_clock_hz *
drivers/iio/dac/ad3552r-hs.c
126
st->model_data->num_spi_data_lanes * 2,
drivers/iio/dac/ad3552r-hs.c
133
ret = ad3552r_hs_reg_read(st,
drivers/iio/dac/ad3552r-hs.c
141
*val = st->ch_data[ch].scale_int;
drivers/iio/dac/ad3552r-hs.c
142
*val2 = st->ch_data[ch].scale_dec;
drivers/iio/dac/ad3552r-hs.c
145
*val = st->ch_data[ch].offset_int;
drivers/iio/dac/ad3552r-hs.c
146
*val2 = st->ch_data[ch].offset_dec;
drivers/iio/dac/ad3552r-hs.c
157
struct ad3552r_hs_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3552r-hs.c
165
ret = st->data->bus_reg_write(st->back,
drivers/iio/dac/ad3552r-hs.c
176
static int ad3552r_hs_set_bus_io_mode_hs(struct ad3552r_hs_state *st)
drivers/iio/dac/ad3552r-hs.c
180
if (st->model_data->num_spi_data_lanes == 4)
drivers/iio/dac/ad3552r-hs.c
185
return st->data->bus_set_io_mode(st->back, bus_mode);
drivers/iio/dac/ad3552r-hs.c
188
static int ad3552r_hs_set_target_io_mode_hs(struct ad3552r_hs_state *st)
drivers/iio/dac/ad3552r-hs.c
196
if (st->model_data->num_spi_data_lanes == 4)
drivers/iio/dac/ad3552r-hs.c
205
return st->data->bus_reg_write(st->back,
drivers/iio/dac/ad3552r-hs.c
214
struct ad3552r_hs_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3552r-hs.c
222
st->single_channel = true;
drivers/iio/dac/ad3552r-hs.c
227
st->single_channel = true;
drivers/iio/dac/ad3552r-hs.c
232
st->single_channel = false;
drivers/iio/dac/ad3552r-hs.c
246
ret = ad3552r_hs_update_reg_bits(st,
drivers/iio/dac/ad3552r-hs.c
257
ret = ad3552r_hs_update_reg_bits(st, AD3552R_REG_ADDR_TRANSFER_REGISTER,
drivers/iio/dac/ad3552r-hs.c
264
ret = st->data->bus_reg_write(st->back,
drivers/iio/dac/ad3552r-hs.c
270
st->config_d |= AD3552R_MASK_SPI_CONFIG_DDR;
drivers/iio/dac/ad3552r-hs.c
271
ret = st->data->bus_reg_write(st->back,
drivers/iio/dac/ad3552r-hs.c
273
st->config_d, 1);
drivers/iio/dac/ad3552r-hs.c
277
ret = iio_backend_ddr_enable(st->back);
drivers/iio/dac/ad3552r-hs.c
287
ret = ad3552r_hs_set_target_io_mode_hs(st);
drivers/iio/dac/ad3552r-hs.c
292
ret = ad3552r_hs_set_bus_io_mode_hs(st);
drivers/iio/dac/ad3552r-hs.c
300
ret = iio_backend_data_transfer_addr(st->back, val);
drivers/iio/dac/ad3552r-hs.c
304
ret = iio_backend_data_format_set(st->back, 0, &fmt);
drivers/iio/dac/ad3552r-hs.c
308
ret = iio_backend_data_stream_enable(st->back);
drivers/iio/dac/ad3552r-hs.c
316
st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_TRANSFER_REGISTER,
drivers/iio/dac/ad3552r-hs.c
325
st->data->bus_set_io_mode(st->back, AD3552R_IO_MODE_SPI);
drivers/iio/dac/ad3552r-hs.c
328
iio_backend_ddr_disable(st->back);
drivers/iio/dac/ad3552r-hs.c
335
st->config_d &= ~AD3552R_MASK_SPI_CONFIG_DDR;
drivers/iio/dac/ad3552r-hs.c
336
st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_INTERFACE_CONFIG_D,
drivers/iio/dac/ad3552r-hs.c
337
st->config_d, 1);
drivers/iio/dac/ad3552r-hs.c
341
st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_INTERFACE_CONFIG_B,
drivers/iio/dac/ad3552r-hs.c
350
struct ad3552r_hs_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3552r-hs.c
353
ret = iio_backend_data_stream_disable(st->back);
drivers/iio/dac/ad3552r-hs.c
361
ret = st->data->bus_set_io_mode(st->back, AD3552R_IO_MODE_SPI);
drivers/iio/dac/ad3552r-hs.c
369
st->config_d &= ~AD3552R_MASK_SPI_CONFIG_DDR;
drivers/iio/dac/ad3552r-hs.c
370
ret = st->data->bus_reg_write(st->back,
drivers/iio/dac/ad3552r-hs.c
372
st->config_d, 1);
drivers/iio/dac/ad3552r-hs.c
376
ret = iio_backend_ddr_disable(st->back);
drivers/iio/dac/ad3552r-hs.c
384
ret = ad3552r_hs_update_reg_bits(st, AD3552R_REG_ADDR_TRANSFER_REGISTER,
drivers/iio/dac/ad3552r-hs.c
391
ret = ad3552r_hs_update_reg_bits(st,
drivers/iio/dac/ad3552r-hs.c
401
static inline int ad3552r_hs_set_output_range(struct ad3552r_hs_state *st,
drivers/iio/dac/ad3552r-hs.c
411
return ad3552r_hs_update_reg_bits(st,
drivers/iio/dac/ad3552r-hs.c
417
static int ad3552r_hs_reset(struct ad3552r_hs_state *st)
drivers/iio/dac/ad3552r-hs.c
421
st->reset_gpio = devm_gpiod_get_optional(st->dev,
drivers/iio/dac/ad3552r-hs.c
423
if (IS_ERR(st->reset_gpio))
drivers/iio/dac/ad3552r-hs.c
424
return PTR_ERR(st->reset_gpio);
drivers/iio/dac/ad3552r-hs.c
426
if (st->reset_gpio) {
drivers/iio/dac/ad3552r-hs.c
428
gpiod_set_value_cansleep(st->reset_gpio, 0);
drivers/iio/dac/ad3552r-hs.c
430
ret = ad3552r_hs_update_reg_bits(st,
drivers/iio/dac/ad3552r-hs.c
442
static int ad3552r_hs_scratch_pad_test(struct ad3552r_hs_state *st)
drivers/iio/dac/ad3552r-hs.c
446
ret = st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_SCRATCH_PAD,
drivers/iio/dac/ad3552r-hs.c
451
ret = st->data->bus_reg_read(st->back, AD3552R_REG_ADDR_SCRATCH_PAD,
drivers/iio/dac/ad3552r-hs.c
457
return dev_err_probe(st->dev, -EIO,
drivers/iio/dac/ad3552r-hs.c
461
ret = st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_SCRATCH_PAD,
drivers/iio/dac/ad3552r-hs.c
466
ret = st->data->bus_reg_read(st->back, AD3552R_REG_ADDR_SCRATCH_PAD,
drivers/iio/dac/ad3552r-hs.c
472
return dev_err_probe(st->dev, -EIO,
drivers/iio/dac/ad3552r-hs.c
479
static int ad3552r_hs_setup_custom_gain(struct ad3552r_hs_state *st,
drivers/iio/dac/ad3552r-hs.c
484
ret = st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_CH_OFFSET(ch),
drivers/iio/dac/ad3552r-hs.c
489
return st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_CH_GAIN(ch),
drivers/iio/dac/ad3552r-hs.c
496
struct ad3552r_hs_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3552r-hs.c
498
if (reg > st->model_data->max_reg_addr)
drivers/iio/dac/ad3552r-hs.c
507
return ad3552r_hs_reg_read(st, reg, readval, 1);
drivers/iio/dac/ad3552r-hs.c
509
return st->data->bus_reg_write(st->back, reg, writeval, 1);
drivers/iio/dac/ad3552r-hs.c
515
struct ad3552r_hs_state *st = file_inode(f)->i_private;
drivers/iio/dac/ad3552r-hs.c
519
guard(mutex)(&st->lock);
drivers/iio/dac/ad3552r-hs.c
521
ret = iio_backend_data_source_get(st->back, 0, &type);
drivers/iio/dac/ad3552r-hs.c
545
struct ad3552r_hs_state *st = file_inode(f)->i_private;
drivers/iio/dac/ad3552r-hs.c
549
guard(mutex)(&st->lock);
drivers/iio/dac/ad3552r-hs.c
577
ret = ad3552r_hs_set_data_source(st, source);
drivers/iio/dac/ad3552r-hs.c
612
static int ad3552r_hs_setup(struct ad3552r_hs_state *st)
drivers/iio/dac/ad3552r-hs.c
619
ret = ad3552r_hs_reset(st);
drivers/iio/dac/ad3552r-hs.c
624
ret = iio_backend_ddr_disable(st->back);
drivers/iio/dac/ad3552r-hs.c
628
ret = st->data->bus_reg_write(st->back,
drivers/iio/dac/ad3552r-hs.c
635
ret = ad3552r_hs_scratch_pad_test(st);
drivers/iio/dac/ad3552r-hs.c
643
ret = st->data->bus_reg_read(st->back,
drivers/iio/dac/ad3552r-hs.c
645
&st->config_d, 1);
drivers/iio/dac/ad3552r-hs.c
649
ret = ad3552r_hs_reg_read(st, AD3552R_REG_ADDR_PRODUCT_ID_L, &val, 1);
drivers/iio/dac/ad3552r-hs.c
655
ret = ad3552r_hs_reg_read(st, AD3552R_REG_ADDR_PRODUCT_ID_H, &val, 1);
drivers/iio/dac/ad3552r-hs.c
660
if (id != st->model_data->chip_id)
drivers/iio/dac/ad3552r-hs.c
661
dev_warn(st->dev,
drivers/iio/dac/ad3552r-hs.c
663
id, st->model_data->chip_id);
drivers/iio/dac/ad3552r-hs.c
665
dev_dbg(st->dev, "chip id %s detected", st->model_data->model_name);
drivers/iio/dac/ad3552r-hs.c
668
ret = st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_ERR_STATUS,
drivers/iio/dac/ad3552r-hs.c
673
ret = st->data->bus_reg_write(st->back,
drivers/iio/dac/ad3552r-hs.c
679
ret = ad3552r_hs_set_data_source(st, IIO_BACKEND_EXTERNAL);
drivers/iio/dac/ad3552r-hs.c
683
ret = ad3552r_get_ref_voltage(st->dev, &val);
drivers/iio/dac/ad3552r-hs.c
689
ret = ad3552r_hs_update_reg_bits(st,
drivers/iio/dac/ad3552r-hs.c
696
ret = ad3552r_get_drive_strength(st->dev, &val);
drivers/iio/dac/ad3552r-hs.c
698
st->config_d |=
drivers/iio/dac/ad3552r-hs.c
701
ret = st->data->bus_reg_write(st->back,
drivers/iio/dac/ad3552r-hs.c
703
st->config_d, 1);
drivers/iio/dac/ad3552r-hs.c
708
device_for_each_child_node_scoped(st->dev, child) {
drivers/iio/dac/ad3552r-hs.c
71
static int ad3552r_hs_reg_read(struct ad3552r_hs_state *st, u32 reg, u32 *val,
drivers/iio/dac/ad3552r-hs.c
711
return dev_err_probe(st->dev, ret,
drivers/iio/dac/ad3552r-hs.c
714
ret = ad3552r_get_output_range(st->dev, st->model_data, child,
drivers/iio/dac/ad3552r-hs.c
719
ret = ad3552r_get_custom_gain(st->dev, child,
drivers/iio/dac/ad3552r-hs.c
720
&st->ch_data[ch].p,
drivers/iio/dac/ad3552r-hs.c
721
&st->ch_data[ch].n,
drivers/iio/dac/ad3552r-hs.c
722
&st->ch_data[ch].rfb,
drivers/iio/dac/ad3552r-hs.c
723
&st->ch_data[ch].gain_offset);
drivers/iio/dac/ad3552r-hs.c
727
gain = ad3552r_calc_custom_gain(st->ch_data[ch].p,
drivers/iio/dac/ad3552r-hs.c
728
st->ch_data[ch].n,
drivers/iio/dac/ad3552r-hs.c
729
st->ch_data[ch].gain_offset);
drivers/iio/dac/ad3552r-hs.c
730
offset = abs(st->ch_data[ch].gain_offset);
drivers/iio/dac/ad3552r-hs.c
732
st->ch_data[ch].range_override = 1;
drivers/iio/dac/ad3552r-hs.c
734
ret = ad3552r_hs_setup_custom_gain(st, ch, gain,
drivers/iio/dac/ad3552r-hs.c
739
st->ch_data[ch].range = range;
drivers/iio/dac/ad3552r-hs.c
741
ret = ad3552r_hs_set_output_range(st, ch, range);
drivers/iio/dac/ad3552r-hs.c
746
ad3552r_calc_gain_and_offset(&st->ch_data[ch], st->model_data);
drivers/iio/dac/ad3552r-hs.c
75
WARN_ON_ONCE(st->config_d & AD3552R_MASK_SPI_CONFIG_DDR);
drivers/iio/dac/ad3552r-hs.c
77
return st->data->bus_reg_read(st->back, reg, val, xfer_size);
drivers/iio/dac/ad3552r-hs.c
788
struct ad3552r_hs_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad3552r-hs.c
796
dev_warn(st->dev, "can't set debugfs in driver dir\n");
drivers/iio/dac/ad3552r-hs.c
80
static int ad3552r_hs_set_data_source(struct ad3552r_hs_state *st,
drivers/iio/dac/ad3552r-hs.c
800
debugfs_create_file("data_source", 0600, d, st,
drivers/iio/dac/ad3552r-hs.c
802
debugfs_create_file("data_source_available", 0600, d, st,
drivers/iio/dac/ad3552r-hs.c
808
struct ad3552r_hs_state *st;
drivers/iio/dac/ad3552r-hs.c
812
indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*st));
drivers/iio/dac/ad3552r-hs.c
816
st = iio_priv(indio_dev);
drivers/iio/dac/ad3552r-hs.c
817
st->dev = &pdev->dev;
drivers/iio/dac/ad3552r-hs.c
819
st->data = dev_get_platdata(st->dev);
drivers/iio/dac/ad3552r-hs.c
820
if (!st->data)
drivers/iio/dac/ad3552r-hs.c
821
return dev_err_probe(st->dev, -ENODEV, "No platform data !");
drivers/iio/dac/ad3552r-hs.c
823
st->back = devm_iio_backend_get(&pdev->dev, NULL);
drivers/iio/dac/ad3552r-hs.c
824
if (IS_ERR(st->back))
drivers/iio/dac/ad3552r-hs.c
825
return PTR_ERR(st->back);
drivers/iio/dac/ad3552r-hs.c
827
ret = devm_iio_backend_enable(&pdev->dev, st->back);
drivers/iio/dac/ad3552r-hs.c
831
st->model_data = device_get_match_data(&pdev->dev);
drivers/iio/dac/ad3552r-hs.c
832
if (!st->model_data)
drivers/iio/dac/ad3552r-hs.c
842
ret = devm_iio_backend_request_buffer(&pdev->dev, st->back, indio_dev);
drivers/iio/dac/ad3552r-hs.c
846
ret = ad3552r_hs_setup(st);
drivers/iio/dac/ad3552r-hs.c
85
for (i = 0; i < st->model_data->num_hw_channels; ++i) {
drivers/iio/dac/ad3552r-hs.c
854
ret = devm_mutex_init(&pdev->dev, &st->lock);
drivers/iio/dac/ad3552r-hs.c
86
ret = iio_backend_data_source_set(st->back, i, type);
drivers/iio/dac/ad3552r-hs.c
94
static int ad3552r_hs_update_reg_bits(struct ad3552r_hs_state *st, u32 reg,
drivers/iio/dac/ad5064.c
192
static int ad5064_write(struct ad5064_state *st, unsigned int cmd,
drivers/iio/dac/ad5064.c
197
return st->write(st, cmd, addr, val);
drivers/iio/dac/ad5064.c
200
static int ad5064_sync_powerdown_mode(struct ad5064_state *st,
drivers/iio/dac/ad5064.c
207
if (st->chip_info->regmap_type == AD5064_REGMAP_LTC) {
drivers/iio/dac/ad5064.c
211
if (st->chip_info->regmap_type == AD5064_REGMAP_ADI2)
drivers/iio/dac/ad5064.c
219
if (st->pwr_down[chan->channel])
drivers/iio/dac/ad5064.c
220
val |= st->pwr_down_mode[chan->channel] << shift;
drivers/iio/dac/ad5064.c
223
ret = ad5064_write(st, AD5064_CMD_POWERDOWN_DAC, address, val, 0);
drivers/iio/dac/ad5064.c
241
struct ad5064_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5064.c
243
return st->pwr_down_mode[chan->channel] - 1;
drivers/iio/dac/ad5064.c
249
struct ad5064_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5064.c
252
mutex_lock(&st->lock);
drivers/iio/dac/ad5064.c
253
st->pwr_down_mode[chan->channel] = mode + 1;
drivers/iio/dac/ad5064.c
255
ret = ad5064_sync_powerdown_mode(st, chan);
drivers/iio/dac/ad5064.c
256
mutex_unlock(&st->lock);
drivers/iio/dac/ad5064.c
278
struct ad5064_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5064.c
280
return sysfs_emit(buf, "%d\n", st->pwr_down[chan->channel]);
drivers/iio/dac/ad5064.c
287
struct ad5064_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5064.c
295
mutex_lock(&st->lock);
drivers/iio/dac/ad5064.c
296
st->pwr_down[chan->channel] = pwr_down;
drivers/iio/dac/ad5064.c
298
ret = ad5064_sync_powerdown_mode(st, chan);
drivers/iio/dac/ad5064.c
299
mutex_unlock(&st->lock);
drivers/iio/dac/ad5064.c
303
static int ad5064_get_vref(struct ad5064_state *st,
drivers/iio/dac/ad5064.c
308
if (st->use_internal_vref)
drivers/iio/dac/ad5064.c
309
return st->chip_info->internal_vref;
drivers/iio/dac/ad5064.c
311
i = st->chip_info->shared_vref ? 0 : chan->channel;
drivers/iio/dac/ad5064.c
312
return regulator_get_voltage(st->vref_reg[i].consumer);
drivers/iio/dac/ad5064.c
321
struct ad5064_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5064.c
326
*val = st->dac_cache[chan->channel];
drivers/iio/dac/ad5064.c
329
scale_uv = ad5064_get_vref(st, chan);
drivers/iio/dac/ad5064.c
345
struct ad5064_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5064.c
353
mutex_lock(&st->lock);
drivers/iio/dac/ad5064.c
354
ret = ad5064_write(st, AD5064_CMD_WRITE_INPUT_N_UPDATE_N,
drivers/iio/dac/ad5064.c
357
st->dac_cache[chan->channel] = val;
drivers/iio/dac/ad5064.c
358
mutex_unlock(&st->lock);
drivers/iio/dac/ad5064.c
778
static inline unsigned int ad5064_num_vref(struct ad5064_state *st)
drivers/iio/dac/ad5064.c
780
return st->chip_info->shared_vref ? 1 : st->chip_info->num_channels;
drivers/iio/dac/ad5064.c
790
static const char *ad5064_vref_name(struct ad5064_state *st,
drivers/iio/dac/ad5064.c
793
return st->chip_info->shared_vref ? "vref" : ad5064_vref_names[vref];
drivers/iio/dac/ad5064.c
796
static int ad5064_set_config(struct ad5064_state *st, unsigned int val)
drivers/iio/dac/ad5064.c
800
switch (st->chip_info->regmap_type) {
drivers/iio/dac/ad5064.c
809
return ad5064_write(st, cmd, 0, val, 0);
drivers/iio/dac/ad5064.c
812
static int ad5064_request_vref(struct ad5064_state *st, struct device *dev)
drivers/iio/dac/ad5064.c
817
for (i = 0; i < ad5064_num_vref(st); ++i)
drivers/iio/dac/ad5064.c
818
st->vref_reg[i].supply = ad5064_vref_name(st, i);
drivers/iio/dac/ad5064.c
820
if (!st->chip_info->internal_vref)
drivers/iio/dac/ad5064.c
821
return devm_regulator_bulk_get(dev, ad5064_num_vref(st),
drivers/iio/dac/ad5064.c
822
st->vref_reg);
drivers/iio/dac/ad5064.c
829
st->vref_reg[0].consumer = devm_regulator_get_optional(dev, "vref");
drivers/iio/dac/ad5064.c
830
if (!IS_ERR(st->vref_reg[0].consumer))
drivers/iio/dac/ad5064.c
833
ret = PTR_ERR(st->vref_reg[0].consumer);
drivers/iio/dac/ad5064.c
838
st->use_internal_vref = true;
drivers/iio/dac/ad5064.c
839
ret = ad5064_set_config(st, AD5064_CONFIG_INT_VREF_ENABLE);
drivers/iio/dac/ad5064.c
848
struct ad5064_state *st = data;
drivers/iio/dac/ad5064.c
850
regulator_bulk_disable(ad5064_num_vref(st), st->vref_reg);
drivers/iio/dac/ad5064.c
857
struct ad5064_state *st;
drivers/iio/dac/ad5064.c
862
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ad5064.c
866
st = iio_priv(indio_dev);
drivers/iio/dac/ad5064.c
867
mutex_init(&st->lock);
drivers/iio/dac/ad5064.c
869
st->chip_info = &ad5064_chip_info_tbl[type];
drivers/iio/dac/ad5064.c
87
typedef int (*ad5064_write_func)(struct ad5064_state *st, unsigned int cmd,
drivers/iio/dac/ad5064.c
870
st->dev = dev;
drivers/iio/dac/ad5064.c
871
st->write = write;
drivers/iio/dac/ad5064.c
873
ret = ad5064_request_vref(st, dev);
drivers/iio/dac/ad5064.c
877
if (!st->use_internal_vref) {
drivers/iio/dac/ad5064.c
878
ret = regulator_bulk_enable(ad5064_num_vref(st), st->vref_reg);
drivers/iio/dac/ad5064.c
882
ret = devm_add_action_or_reset(dev, ad5064_bulk_reg_disable, st);
drivers/iio/dac/ad5064.c
890
indio_dev->channels = st->chip_info->channels;
drivers/iio/dac/ad5064.c
891
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/dac/ad5064.c
895
for (i = 0; i < st->chip_info->num_channels; ++i) {
drivers/iio/dac/ad5064.c
896
st->pwr_down_mode[i] = AD5064_LDAC_PWRDN_1K;
drivers/iio/dac/ad5064.c
897
st->dac_cache[i] = midscale;
drivers/iio/dac/ad5064.c
905
static int ad5064_spi_write(struct ad5064_state *st, unsigned int cmd,
drivers/iio/dac/ad5064.c
908
struct spi_device *spi = to_spi_device(st->dev);
drivers/iio/dac/ad5064.c
910
st->data.spi = cpu_to_be32(AD5064_CMD(cmd) | AD5064_ADDR(addr) | val);
drivers/iio/dac/ad5064.c
911
return spi_write(spi, &st->data.spi, sizeof(st->data.spi));
drivers/iio/dac/ad5064.c
970
static int ad5064_i2c_write(struct ad5064_state *st, unsigned int cmd,
drivers/iio/dac/ad5064.c
973
struct i2c_client *i2c = to_i2c_client(st->dev);
drivers/iio/dac/ad5064.c
977
switch (st->chip_info->regmap_type) {
drivers/iio/dac/ad5064.c
986
st->data.i2c[0] = (cmd << cmd_shift) | addr;
drivers/iio/dac/ad5064.c
987
put_unaligned_be16(val, &st->data.i2c[1]);
drivers/iio/dac/ad5064.c
989
ret = i2c_master_send(i2c, st->data.i2c, 3);
drivers/iio/dac/ad5360.c
170
static unsigned int ad5360_get_channel_vref_index(struct ad5360_state *st,
drivers/iio/dac/ad5360.c
177
i = channel / st->chip_info->channels_per_group;
drivers/iio/dac/ad5360.c
178
if (i >= st->chip_info->num_vrefs)
drivers/iio/dac/ad5360.c
179
i = st->chip_info->num_vrefs - 1;
drivers/iio/dac/ad5360.c
184
static int ad5360_get_channel_vref(struct ad5360_state *st,
drivers/iio/dac/ad5360.c
187
unsigned int i = ad5360_get_channel_vref_index(st, channel);
drivers/iio/dac/ad5360.c
189
return regulator_get_voltage(st->vref_reg[i].consumer);
drivers/iio/dac/ad5360.c
197
struct ad5360_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
201
st->data[0].d32 = cpu_to_be32(val);
drivers/iio/dac/ad5360.c
203
return spi_write(st->spi, &st->data[0].d8[1], 3);
drivers/iio/dac/ad5360.c
209
struct ad5360_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
211
guard(mutex)(&st->lock);
drivers/iio/dac/ad5360.c
218
struct ad5360_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
222
.tx_buf = &st->data[0].d8[1],
drivers/iio/dac/ad5360.c
226
.rx_buf = &st->data[1].d8[1],
drivers/iio/dac/ad5360.c
231
guard(mutex)(&st->lock);
drivers/iio/dac/ad5360.c
233
st->data[0].d32 = cpu_to_be32(AD5360_CMD(AD5360_CMD_SPECIAL_FUNCTION) |
drivers/iio/dac/ad5360.c
238
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/dac/ad5360.c
242
return be32_to_cpu(st->data[1].d32) & 0xffff;
drivers/iio/dac/ad5360.c
250
struct ad5360_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
252
return sysfs_emit(buf, "%d\n", (bool)(st->ctrl & AD5360_SF_CTRL_PWR_DOWN));
drivers/iio/dac/ad5360.c
258
struct ad5360_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
260
guard(mutex)(&st->lock);
drivers/iio/dac/ad5360.c
262
st->ctrl |= set;
drivers/iio/dac/ad5360.c
263
st->ctrl &= ~clr;
drivers/iio/dac/ad5360.c
266
AD5360_REG_SF_CTRL, st->ctrl, 0);
drivers/iio/dac/ad5360.c
308
struct ad5360_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
348
ofs_index = ad5360_get_channel_vref_index(st, chan->channel);
drivers/iio/dac/ad5360.c
364
struct ad5360_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
378
scale_uv = ad5360_get_channel_vref(st, chan->channel);
drivers/iio/dac/ad5360.c
401
ofs_index = ad5360_get_channel_vref_index(st, chan->channel);
drivers/iio/dac/ad5360.c
427
struct ad5360_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
432
st->chip_info->num_channels);
drivers/iio/dac/ad5360.c
437
for (i = 0; i < st->chip_info->num_channels; ++i) {
drivers/iio/dac/ad5360.c
438
channels[i] = st->chip_info->channel_template;
drivers/iio/dac/ad5360.c
452
struct ad5360_state *st;
drivers/iio/dac/ad5360.c
456
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5360.c
462
st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
465
st->chip_info = &ad5360_chip_info_tbl[type];
drivers/iio/dac/ad5360.c
466
st->spi = spi;
drivers/iio/dac/ad5360.c
471
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/dac/ad5360.c
473
mutex_init(&st->lock);
drivers/iio/dac/ad5360.c
481
for (i = 0; i < st->chip_info->num_vrefs; ++i)
drivers/iio/dac/ad5360.c
482
st->vref_reg[i].supply = ad5360_vref_name[i];
drivers/iio/dac/ad5360.c
484
ret = devm_regulator_bulk_get(&st->spi->dev, st->chip_info->num_vrefs,
drivers/iio/dac/ad5360.c
485
st->vref_reg);
drivers/iio/dac/ad5360.c
491
ret = regulator_bulk_enable(st->chip_info->num_vrefs, st->vref_reg);
drivers/iio/dac/ad5360.c
506
regulator_bulk_disable(st->chip_info->num_vrefs, st->vref_reg);
drivers/iio/dac/ad5360.c
516
struct ad5360_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5360.c
522
regulator_bulk_disable(st->chip_info->num_vrefs, st->vref_reg);
drivers/iio/dac/ad5380.c
102
ret = regmap_write(st->regmap, AD5380_REG_SF_PWR_DOWN, 0);
drivers/iio/dac/ad5380.c
104
ret = regmap_write(st->regmap, AD5380_REG_SF_PWR_UP, 0);
drivers/iio/dac/ad5380.c
106
st->pwr_down = pwr_down;
drivers/iio/dac/ad5380.c
108
mutex_unlock(&st->lock);
drivers/iio/dac/ad5380.c
121
struct ad5380_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5380.c
125
ret = regmap_read(st->regmap, AD5380_REG_SF_CTRL, &mode);
drivers/iio/dac/ad5380.c
137
struct ad5380_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5380.c
140
ret = regmap_update_bits(st->regmap, AD5380_REG_SF_CTRL,
drivers/iio/dac/ad5380.c
175
struct ad5380_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5380.c
183
return regmap_write(st->regmap,
drivers/iio/dac/ad5380.c
191
return regmap_write(st->regmap,
drivers/iio/dac/ad5380.c
203
struct ad5380_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5380.c
209
ret = regmap_read(st->regmap, ad5380_info_to_reg(chan, info),
drivers/iio/dac/ad5380.c
216
ret = regmap_read(st->regmap, AD5380_REG_OFFSET(chan->address),
drivers/iio/dac/ad5380.c
224
*val = 2 * st->vref;
drivers/iio/dac/ad5380.c
344
struct ad5380_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5380.c
348
channels = devm_kcalloc(dev, st->chip_info->num_channels,
drivers/iio/dac/ad5380.c
354
for (i = 0; i < st->chip_info->num_channels; ++i) {
drivers/iio/dac/ad5380.c
355
channels[i] = st->chip_info->channel_template;
drivers/iio/dac/ad5380.c
369
struct ad5380_state *st;
drivers/iio/dac/ad5380.c
373
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ad5380.c
377
st = iio_priv(indio_dev);
drivers/iio/dac/ad5380.c
379
st->chip_info = &ad5380_chip_info_tbl[type];
drivers/iio/dac/ad5380.c
380
st->regmap = regmap;
drivers/iio/dac/ad5380.c
385
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/dac/ad5380.c
387
mutex_init(&st->lock);
drivers/iio/dac/ad5380.c
393
if (st->chip_info->int_vref == 2500)
drivers/iio/dac/ad5380.c
400
st->vref = st->chip_info->int_vref;
drivers/iio/dac/ad5380.c
403
st->vref = ret / 1000;
drivers/iio/dac/ad5380.c
406
ret = regmap_write(st->regmap, AD5380_REG_SF_CTRL, ctrl);
drivers/iio/dac/ad5380.c
82
struct ad5380_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5380.c
84
return sysfs_emit(buf, "%d\n", st->pwr_down);
drivers/iio/dac/ad5380.c
91
struct ad5380_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5380.c
99
mutex_lock(&st->lock);
drivers/iio/dac/ad5421.c
137
struct ad5421_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5421.c
139
st->data[0].d32 = cpu_to_be32((reg << 16) | val);
drivers/iio/dac/ad5421.c
141
return spi_write(st->spi, &st->data[0].d8[1], 3);
drivers/iio/dac/ad5421.c
147
struct ad5421_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5421.c
150
mutex_lock(&st->lock);
drivers/iio/dac/ad5421.c
152
mutex_unlock(&st->lock);
drivers/iio/dac/ad5421.c
159
struct ad5421_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5421.c
163
.tx_buf = &st->data[0].d8[1],
drivers/iio/dac/ad5421.c
167
.rx_buf = &st->data[1].d8[1],
drivers/iio/dac/ad5421.c
172
mutex_lock(&st->lock);
drivers/iio/dac/ad5421.c
174
st->data[0].d32 = cpu_to_be32((1 << 23) | (reg << 16));
drivers/iio/dac/ad5421.c
176
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/dac/ad5421.c
178
ret = be32_to_cpu(st->data[1].d32) & 0xffff;
drivers/iio/dac/ad5421.c
180
mutex_unlock(&st->lock);
drivers/iio/dac/ad5421.c
188
struct ad5421_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5421.c
191
mutex_lock(&st->lock);
drivers/iio/dac/ad5421.c
193
st->ctrl &= ~clr;
drivers/iio/dac/ad5421.c
194
st->ctrl |= set;
drivers/iio/dac/ad5421.c
196
ret = ad5421_write_unlocked(indio_dev, AD5421_REG_CTRL, st->ctrl);
drivers/iio/dac/ad5421.c
198
mutex_unlock(&st->lock);
drivers/iio/dac/ad5421.c
206
struct ad5421_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5421.c
239
events &= st->fault_mask;
drivers/iio/dac/ad5421.c
281
static void ad5421_get_current_min_max(struct ad5421_state *st,
drivers/iio/dac/ad5421.c
286
switch (st->current_range) {
drivers/iio/dac/ad5421.c
306
static inline unsigned int ad5421_get_offset(struct ad5421_state *st)
drivers/iio/dac/ad5421.c
310
ad5421_get_current_min_max(st, &min, &max);
drivers/iio/dac/ad5421.c
317
struct ad5421_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5421.c
332
ad5421_get_current_min_max(st, &min, &max);
drivers/iio/dac/ad5421.c
337
*val = ad5421_get_offset(st);
drivers/iio/dac/ad5421.c
389
struct ad5421_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5421.c
406
mutex_lock(&st->lock);
drivers/iio/dac/ad5421.c
408
st->fault_mask |= mask;
drivers/iio/dac/ad5421.c
410
st->fault_mask &= ~mask;
drivers/iio/dac/ad5421.c
411
mutex_unlock(&st->lock);
drivers/iio/dac/ad5421.c
420
struct ad5421_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5421.c
437
return (bool)(st->fault_mask & mask);
drivers/iio/dac/ad5421.c
476
struct ad5421_state *st;
drivers/iio/dac/ad5421.c
479
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5421.c
485
st = iio_priv(indio_dev);
drivers/iio/dac/ad5421.c
488
st->spi = spi;
drivers/iio/dac/ad5421.c
496
mutex_init(&st->lock);
drivers/iio/dac/ad5421.c
498
st->ctrl = AD5421_CTRL_WATCHDOG_DISABLE |
drivers/iio/dac/ad5421.c
502
st->current_range = pdata->current_range;
drivers/iio/dac/ad5421.c
504
st->ctrl |= AD5421_CTRL_PWR_DOWN_INT_VREF;
drivers/iio/dac/ad5421.c
506
st->current_range = AD5421_CURRENT_RANGE_4mA_20mA;
drivers/iio/dac/ad5446-i2c.c
15
static int ad5622_write(struct ad5446_state *st, unsigned int val)
drivers/iio/dac/ad5446-i2c.c
17
struct i2c_client *client = to_i2c_client(st->dev);
drivers/iio/dac/ad5446-i2c.c
20
st->d16 = cpu_to_be16(val);
drivers/iio/dac/ad5446-i2c.c
22
ret = i2c_master_send_dmasafe(client, (char *)&st->d16, sizeof(st->d16));
drivers/iio/dac/ad5446-i2c.c
25
if (ret != sizeof(st->d16))
drivers/iio/dac/ad5446-spi.c
16
static int ad5446_write(struct ad5446_state *st, unsigned int val)
drivers/iio/dac/ad5446-spi.c
18
struct spi_device *spi = to_spi_device(st->dev);
drivers/iio/dac/ad5446-spi.c
20
st->d16 = cpu_to_be16(val);
drivers/iio/dac/ad5446-spi.c
22
return spi_write(spi, &st->d16, sizeof(st->d16));
drivers/iio/dac/ad5446-spi.c
25
static int ad5660_write(struct ad5446_state *st, unsigned int val)
drivers/iio/dac/ad5446-spi.c
27
struct spi_device *spi = to_spi_device(st->dev);
drivers/iio/dac/ad5446-spi.c
29
put_unaligned_be24(val, st->d24);
drivers/iio/dac/ad5446-spi.c
31
return spi_write(spi, st->d24, sizeof(st->d24));
drivers/iio/dac/ad5446.c
117
struct ad5446_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5446.c
121
*val = st->cached_val >> chan->scan_type.shift;
drivers/iio/dac/ad5446.c
124
*val = st->vref_mv;
drivers/iio/dac/ad5446.c
135
struct ad5446_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5446.c
141
guard(mutex)(&st->lock);
drivers/iio/dac/ad5446.c
143
st->cached_val = val;
drivers/iio/dac/ad5446.c
144
if (st->pwr_down)
drivers/iio/dac/ad5446.c
147
return st->chip_info->write(st, val);
drivers/iio/dac/ad5446.c
170
struct ad5446_state *st;
drivers/iio/dac/ad5446.c
174
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ad5446.c
178
st = iio_priv(indio_dev);
drivers/iio/dac/ad5446.c
179
st->chip_info = chip_info;
drivers/iio/dac/ad5446.c
181
st->dev = dev;
drivers/iio/dac/ad5446.c
186
indio_dev->channels = &st->chip_info->channel;
drivers/iio/dac/ad5446.c
189
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/dac/ad5446.c
193
st->pwr_down_mode = MODE_PWRDWN_1k;
drivers/iio/dac/ad5446.c
203
st->vref_mv = chip_info->int_vref_mv;
drivers/iio/dac/ad5446.c
205
st->vref_mv = ret / 1000;
drivers/iio/dac/ad5446.c
34
struct ad5446_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5446.c
36
st->pwr_down_mode = mode + 1;
drivers/iio/dac/ad5446.c
44
struct ad5446_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5446.c
46
return st->pwr_down_mode - 1;
drivers/iio/dac/ad5446.c
61
struct ad5446_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5446.c
63
return sysfs_emit(buf, "%d\n", st->pwr_down);
drivers/iio/dac/ad5446.c
71
struct ad5446_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5446.c
81
guard(mutex)(&st->lock);
drivers/iio/dac/ad5446.c
82
st->pwr_down = powerdown;
drivers/iio/dac/ad5446.c
84
if (st->pwr_down) {
drivers/iio/dac/ad5446.c
86
val = st->pwr_down_mode << shift;
drivers/iio/dac/ad5446.c
88
val = st->cached_val;
drivers/iio/dac/ad5446.c
91
ret = st->chip_info->write(st, val);
drivers/iio/dac/ad5446.h
71
int (*write)(struct ad5446_state *st, unsigned int val);
drivers/iio/dac/ad5449.c
101
struct ad5449 *st = iio_priv(indio_dev);
drivers/iio/dac/ad5449.c
105
.tx_buf = &st->data[0],
drivers/iio/dac/ad5449.c
109
.tx_buf = &st->data[1],
drivers/iio/dac/ad5449.c
110
.rx_buf = &st->data[1],
drivers/iio/dac/ad5449.c
115
mutex_lock(&st->lock);
drivers/iio/dac/ad5449.c
116
st->data[0] = cpu_to_be16(addr << 12);
drivers/iio/dac/ad5449.c
117
st->data[1] = cpu_to_be16(AD5449_CMD_NOOP);
drivers/iio/dac/ad5449.c
119
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/dac/ad5449.c
123
*val = be16_to_cpu(st->data[1]);
drivers/iio/dac/ad5449.c
126
mutex_unlock(&st->lock);
drivers/iio/dac/ad5449.c
133
struct ad5449 *st = iio_priv(indio_dev);
drivers/iio/dac/ad5449.c
140
if (st->has_sdo) {
drivers/iio/dac/ad5449.c
147
*val = st->dac_cache[chan->address];
drivers/iio/dac/ad5449.c
152
reg = &st->vref_reg[chan->channel];
drivers/iio/dac/ad5449.c
171
struct ad5449 *st = iio_priv(indio_dev);
drivers/iio/dac/ad5449.c
183
st->dac_cache[chan->address] = val;
drivers/iio/dac/ad5449.c
256
static const char *ad5449_vref_name(struct ad5449 *st, int n)
drivers/iio/dac/ad5449.c
258
if (st->chip_info->num_channels == 1)
drivers/iio/dac/ad5449.c
271
struct ad5449 *st;
drivers/iio/dac/ad5449.c
275
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5449.c
279
st = iio_priv(indio_dev);
drivers/iio/dac/ad5449.c
282
st->chip_info = &ad5449_chip_info[id->driver_data];
drivers/iio/dac/ad5449.c
283
st->spi = spi;
drivers/iio/dac/ad5449.c
285
for (i = 0; i < st->chip_info->num_channels; ++i)
drivers/iio/dac/ad5449.c
286
st->vref_reg[i].supply = ad5449_vref_name(st, i);
drivers/iio/dac/ad5449.c
288
ret = devm_regulator_bulk_get(&spi->dev, st->chip_info->num_channels,
drivers/iio/dac/ad5449.c
289
st->vref_reg);
drivers/iio/dac/ad5449.c
293
ret = regulator_bulk_enable(st->chip_info->num_channels, st->vref_reg);
drivers/iio/dac/ad5449.c
300
indio_dev->channels = st->chip_info->channels;
drivers/iio/dac/ad5449.c
301
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/dac/ad5449.c
303
mutex_init(&st->lock);
drivers/iio/dac/ad5449.c
305
if (st->chip_info->has_ctrl) {
drivers/iio/dac/ad5449.c
306
st->has_sdo = true;
drivers/iio/dac/ad5449.c
317
regulator_bulk_disable(st->chip_info->num_channels, st->vref_reg);
drivers/iio/dac/ad5449.c
325
struct ad5449 *st = iio_priv(indio_dev);
drivers/iio/dac/ad5449.c
329
regulator_bulk_disable(st->chip_info->num_channels, st->vref_reg);
drivers/iio/dac/ad5449.c
87
struct ad5449 *st = iio_priv(indio_dev);
drivers/iio/dac/ad5449.c
90
mutex_lock(&st->lock);
drivers/iio/dac/ad5449.c
91
st->data[0] = cpu_to_be16((addr << 12) | val);
drivers/iio/dac/ad5449.c
92
ret = spi_write(st->spi, st->data, 2);
drivers/iio/dac/ad5449.c
93
mutex_unlock(&st->lock);
drivers/iio/dac/ad5504.c
104
ret = ad5504_spi_read(st, chan->address);
drivers/iio/dac/ad5504.c
112
*val = st->vref_mv;
drivers/iio/dac/ad5504.c
125
struct ad5504_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5504.c
132
return ad5504_spi_write(st, chan->address, val);
drivers/iio/dac/ad5504.c
146
struct ad5504_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5504.c
148
return st->pwr_down_mode;
drivers/iio/dac/ad5504.c
154
struct ad5504_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5504.c
156
st->pwr_down_mode = mode;
drivers/iio/dac/ad5504.c
171
struct ad5504_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5504.c
174
!(st->pwr_down_mask & (1 << chan->channel)));
drivers/iio/dac/ad5504.c
183
struct ad5504_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5504.c
190
st->pwr_down_mask &= ~(1 << chan->channel);
drivers/iio/dac/ad5504.c
192
st->pwr_down_mask |= (1 << chan->channel);
drivers/iio/dac/ad5504.c
194
ret = ad5504_spi_write(st, AD5504_ADDR_CTRL,
drivers/iio/dac/ad5504.c
195
AD5504_DAC_PWRDWN_MODE(st->pwr_down_mode) |
drivers/iio/dac/ad5504.c
196
AD5504_DAC_PWR(st->pwr_down_mask));
drivers/iio/dac/ad5504.c
199
ad5504_spi_write(st, AD5504_ADDR_NOOP, 0);
drivers/iio/dac/ad5504.c
276
struct ad5504_state *st;
drivers/iio/dac/ad5504.c
279
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ad5504.c
283
st = iio_priv(indio_dev);
drivers/iio/dac/ad5504.c
290
st->vref_mv = pdata->vref_mv;
drivers/iio/dac/ad5504.c
294
st->vref_mv = ret / 1000;
drivers/iio/dac/ad5504.c
297
st->spi = spi;
drivers/iio/dac/ad5504.c
298
indio_dev->name = spi_get_device_id(st->spi)->name;
drivers/iio/dac/ad5504.c
300
if (spi_get_device_id(st->spi)->driver_data == ID_AD5501)
drivers/iio/dac/ad5504.c
312
spi_get_device_id(st->spi)->name,
drivers/iio/dac/ad5504.c
68
static int ad5504_spi_write(struct ad5504_state *st, u8 addr, u16 val)
drivers/iio/dac/ad5504.c
70
st->data[0] = cpu_to_be16(AD5504_CMD_WRITE | AD5504_ADDR(addr) |
drivers/iio/dac/ad5504.c
73
return spi_write(st->spi, &st->data[0], 2);
drivers/iio/dac/ad5504.c
76
static int ad5504_spi_read(struct ad5504_state *st, u8 addr)
drivers/iio/dac/ad5504.c
80
.tx_buf = &st->data[0],
drivers/iio/dac/ad5504.c
81
.rx_buf = &st->data[1],
drivers/iio/dac/ad5504.c
85
st->data[0] = cpu_to_be16(AD5504_CMD_READ | AD5504_ADDR(addr));
drivers/iio/dac/ad5504.c
86
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/dac/ad5504.c
90
return be16_to_cpu(st->data[1]) & AD5504_RES_MASK;
drivers/iio/dac/ad5504.c
99
struct ad5504_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5592r-base.c
104
struct ad5592r_state *st = gpiochip_get_data(chip);
drivers/iio/dac/ad5592r-base.c
106
if (!(st->gpio_map & BIT(offset))) {
drivers/iio/dac/ad5592r-base.c
107
dev_err(st->dev, "GPIO %d is reserved by alternate function\n",
drivers/iio/dac/ad5592r-base.c
119
static int ad5592r_gpio_init(struct ad5592r_state *st)
drivers/iio/dac/ad5592r-base.c
121
if (!st->gpio_map)
drivers/iio/dac/ad5592r-base.c
124
st->gpiochip.label = dev_name(st->dev);
drivers/iio/dac/ad5592r-base.c
125
st->gpiochip.base = -1;
drivers/iio/dac/ad5592r-base.c
126
st->gpiochip.ngpio = 8;
drivers/iio/dac/ad5592r-base.c
127
st->gpiochip.parent = st->dev;
drivers/iio/dac/ad5592r-base.c
128
st->gpiochip.can_sleep = true;
drivers/iio/dac/ad5592r-base.c
129
st->gpiochip.direction_input = ad5592r_gpio_direction_input;
drivers/iio/dac/ad5592r-base.c
130
st->gpiochip.direction_output = ad5592r_gpio_direction_output;
drivers/iio/dac/ad5592r-base.c
131
st->gpiochip.get = ad5592r_gpio_get;
drivers/iio/dac/ad5592r-base.c
132
st->gpiochip.set = ad5592r_gpio_set;
drivers/iio/dac/ad5592r-base.c
133
st->gpiochip.request = ad5592r_gpio_request;
drivers/iio/dac/ad5592r-base.c
134
st->gpiochip.owner = THIS_MODULE;
drivers/iio/dac/ad5592r-base.c
135
st->gpiochip.names = ad5592r_gpio_names;
drivers/iio/dac/ad5592r-base.c
137
mutex_init(&st->gpio_lock);
drivers/iio/dac/ad5592r-base.c
139
return gpiochip_add_data(&st->gpiochip, st);
drivers/iio/dac/ad5592r-base.c
142
static void ad5592r_gpio_cleanup(struct ad5592r_state *st)
drivers/iio/dac/ad5592r-base.c
144
if (st->gpio_map)
drivers/iio/dac/ad5592r-base.c
145
gpiochip_remove(&st->gpiochip);
drivers/iio/dac/ad5592r-base.c
147
mutex_destroy(&st->gpio_lock);
drivers/iio/dac/ad5592r-base.c
150
static int ad5592r_reset(struct ad5592r_state *st)
drivers/iio/dac/ad5592r-base.c
154
gpio = devm_gpiod_get_optional(st->dev, "reset", GPIOD_OUT_LOW);
drivers/iio/dac/ad5592r-base.c
162
scoped_guard(mutex, &st->lock)
drivers/iio/dac/ad5592r-base.c
164
st->ops->reg_write(st, AD5592R_REG_RESET, 0xdac);
drivers/iio/dac/ad5592r-base.c
172
static int ad5592r_get_vref(struct ad5592r_state *st)
drivers/iio/dac/ad5592r-base.c
176
if (st->reg) {
drivers/iio/dac/ad5592r-base.c
177
ret = regulator_get_voltage(st->reg);
drivers/iio/dac/ad5592r-base.c
187
static int ad5592r_set_channel_modes(struct ad5592r_state *st)
drivers/iio/dac/ad5592r-base.c
189
const struct ad5592r_rw_ops *ops = st->ops;
drivers/iio/dac/ad5592r-base.c
195
for (i = 0; i < st->num_channels; i++) {
drivers/iio/dac/ad5592r-base.c
196
switch (st->channel_modes[i]) {
drivers/iio/dac/ad5592r-base.c
211
st->gpio_map |= BIT(i);
drivers/iio/dac/ad5592r-base.c
212
st->gpio_in |= BIT(i); /* Default to input */
drivers/iio/dac/ad5592r-base.c
217
switch (st->channel_offstate[i]) {
drivers/iio/dac/ad5592r-base.c
223
st->gpio_out |= BIT(i);
drivers/iio/dac/ad5592r-base.c
227
st->gpio_out |= BIT(i);
drivers/iio/dac/ad5592r-base.c
228
st->gpio_val |= BIT(i);
drivers/iio/dac/ad5592r-base.c
239
guard(mutex)(&st->lock);
drivers/iio/dac/ad5592r-base.c
242
ret = ops->reg_write(st, AD5592R_REG_PULLDOWN, pulldown);
drivers/iio/dac/ad5592r-base.c
246
ret = ops->reg_write(st, AD5592R_REG_TRISTATE, tristate);
drivers/iio/dac/ad5592r-base.c
251
ret = ops->reg_write(st, AD5592R_REG_DAC_EN, dac);
drivers/iio/dac/ad5592r-base.c
255
ret = ops->reg_write(st, AD5592R_REG_ADC_EN, adc);
drivers/iio/dac/ad5592r-base.c
259
ret = ops->reg_write(st, AD5592R_REG_GPIO_SET, st->gpio_val);
drivers/iio/dac/ad5592r-base.c
26
struct ad5592r_state *st = gpiochip_get_data(chip);
drivers/iio/dac/ad5592r-base.c
263
ret = ops->reg_write(st, AD5592R_REG_GPIO_OUT_EN, st->gpio_out);
drivers/iio/dac/ad5592r-base.c
267
ret = ops->reg_write(st, AD5592R_REG_GPIO_IN_EN, st->gpio_in);
drivers/iio/dac/ad5592r-base.c
272
ret = ops->reg_read(st, AD5592R_REG_ADC_EN, &read_back);
drivers/iio/dac/ad5592r-base.c
279
static int ad5592r_reset_channel_modes(struct ad5592r_state *st)
drivers/iio/dac/ad5592r-base.c
283
for (i = 0; i < ARRAY_SIZE(st->channel_modes); i++)
drivers/iio/dac/ad5592r-base.c
284
st->channel_modes[i] = CH_MODE_UNUSED;
drivers/iio/dac/ad5592r-base.c
286
return ad5592r_set_channel_modes(st);
drivers/iio/dac/ad5592r-base.c
292
struct ad5592r_state *st = iio_priv(iio_dev);
drivers/iio/dac/ad5592r-base.c
30
scoped_guard(mutex, &st->gpio_lock) {
drivers/iio/dac/ad5592r-base.c
304
scoped_guard(mutex, &st->lock) {
drivers/iio/dac/ad5592r-base.c
305
ret = st->ops->write_dac(st, chan->channel, val);
drivers/iio/dac/ad5592r-base.c
307
st->cached_dac[chan->channel] = val;
drivers/iio/dac/ad5592r-base.c
31
if (st->gpio_out & BIT(offset))
drivers/iio/dac/ad5592r-base.c
314
if (val == st->scale_avail[0][0] &&
drivers/iio/dac/ad5592r-base.c
315
val2 == st->scale_avail[0][1])
drivers/iio/dac/ad5592r-base.c
317
else if (val == st->scale_avail[1][0] &&
drivers/iio/dac/ad5592r-base.c
318
val2 == st->scale_avail[1][1])
drivers/iio/dac/ad5592r-base.c
32
val = st->gpio_val;
drivers/iio/dac/ad5592r-base.c
323
guard(mutex)(&st->lock);
drivers/iio/dac/ad5592r-base.c
325
ret = st->ops->reg_read(st, AD5592R_REG_CTRL,
drivers/iio/dac/ad5592r-base.c
326
&st->cached_gp_ctrl);
drivers/iio/dac/ad5592r-base.c
332
st->cached_gp_ctrl |=
drivers/iio/dac/ad5592r-base.c
335
st->cached_gp_ctrl &=
drivers/iio/dac/ad5592r-base.c
339
st->cached_gp_ctrl |=
drivers/iio/dac/ad5592r-base.c
34
ret = st->ops->gpio_read(st, &val);
drivers/iio/dac/ad5592r-base.c
342
st->cached_gp_ctrl &=
drivers/iio/dac/ad5592r-base.c
346
return st->ops->reg_write(st, AD5592R_REG_CTRL,
drivers/iio/dac/ad5592r-base.c
347
st->cached_gp_ctrl);
drivers/iio/dac/ad5592r-base.c
361
struct ad5592r_state *st = iio_priv(iio_dev);
drivers/iio/dac/ad5592r-base.c
368
scoped_guard(mutex, &st->lock)
drivers/iio/dac/ad5592r-base.c
369
ret = st->ops->read_adc(st, chan->channel,
drivers/iio/dac/ad5592r-base.c
375
dev_err(st->dev, "Error while reading channel %u\n",
drivers/iio/dac/ad5592r-base.c
383
scoped_guard(mutex, &st->lock)
drivers/iio/dac/ad5592r-base.c
384
read_val = st->cached_dac[chan->channel];
drivers/iio/dac/ad5592r-base.c
387
dev_dbg(st->dev, "Channel %u read: 0x%04hX\n",
drivers/iio/dac/ad5592r-base.c
393
*val = ad5592r_get_vref(st);
drivers/iio/dac/ad5592r-base.c
402
scoped_guard(mutex, &st->lock) {
drivers/iio/dac/ad5592r-base.c
404
mult = !!(st->cached_gp_ctrl &
drivers/iio/dac/ad5592r-base.c
407
mult = !!(st->cached_gp_ctrl &
drivers/iio/dac/ad5592r-base.c
417
ret = ad5592r_get_vref(st);
drivers/iio/dac/ad5592r-base.c
419
guard(mutex)(&st->lock);
drivers/iio/dac/ad5592r-base.c
421
if (st->cached_gp_ctrl & AD5592R_REG_CTRL_ADC_RANGE)
drivers/iio/dac/ad5592r-base.c
458
struct ad5592r_state *st = iio_priv(iio_dev);
drivers/iio/dac/ad5592r-base.c
46
struct ad5592r_state *st = gpiochip_get_data(chip);
drivers/iio/dac/ad5592r-base.c
461
st->scale_avail[0][0], st->scale_avail[0][1],
drivers/iio/dac/ad5592r-base.c
462
st->scale_avail[1][0], st->scale_avail[1][1]);
drivers/iio/dac/ad5592r-base.c
48
guard(mutex)(&st->gpio_lock);
drivers/iio/dac/ad5592r-base.c
491
struct ad5592r_state *st = iio_priv(iio_dev);
drivers/iio/dac/ad5592r-base.c
493
num_channels = st->num_channels;
drivers/iio/dac/ad5592r-base.c
499
device_for_each_child_node(st->dev, child) {
drivers/iio/dac/ad5592r-base.c
501
if (ret || reg >= ARRAY_SIZE(st->channel_modes))
drivers/iio/dac/ad5592r-base.c
506
st->channel_modes[reg] = tmp;
drivers/iio/dac/ad5592r-base.c
51
st->gpio_val |= BIT(offset);
drivers/iio/dac/ad5592r-base.c
510
st->channel_offstate[reg] = tmp;
drivers/iio/dac/ad5592r-base.c
513
channels = devm_kcalloc(st->dev,
drivers/iio/dac/ad5592r-base.c
520
switch (st->channel_modes[i]) {
drivers/iio/dac/ad5592r-base.c
53
st->gpio_val &= ~BIT(offset);
drivers/iio/dac/ad5592r-base.c
55
return st->ops->reg_write(st, AD5592R_REG_GPIO_SET, st->gpio_val);
drivers/iio/dac/ad5592r-base.c
560
static void ad5592r_init_scales(struct ad5592r_state *st, int vref_mV)
drivers/iio/dac/ad5592r-base.c
564
st->scale_avail[0][0] =
drivers/iio/dac/ad5592r-base.c
565
div_s64_rem(tmp, 1000000000LL, &st->scale_avail[0][1]);
drivers/iio/dac/ad5592r-base.c
566
st->scale_avail[1][0] =
drivers/iio/dac/ad5592r-base.c
567
div_s64_rem(tmp * 2, 1000000000LL, &st->scale_avail[1][1]);
drivers/iio/dac/ad5592r-base.c
574
struct ad5592r_state *st;
drivers/iio/dac/ad5592r-base.c
577
iio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ad5592r-base.c
581
st = iio_priv(iio_dev);
drivers/iio/dac/ad5592r-base.c
582
st->dev = dev;
drivers/iio/dac/ad5592r-base.c
583
st->ops = ops;
drivers/iio/dac/ad5592r-base.c
584
st->num_channels = 8;
drivers/iio/dac/ad5592r-base.c
587
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/dac/ad5592r-base.c
591
st->reg = devm_regulator_get_optional(dev, "vref");
drivers/iio/dac/ad5592r-base.c
592
if (IS_ERR(st->reg)) {
drivers/iio/dac/ad5592r-base.c
593
if ((PTR_ERR(st->reg) != -ENODEV) && dev_fwnode(dev))
drivers/iio/dac/ad5592r-base.c
594
return PTR_ERR(st->reg);
drivers/iio/dac/ad5592r-base.c
596
st->reg = NULL;
drivers/iio/dac/ad5592r-base.c
598
ret = regulator_enable(st->reg);
drivers/iio/dac/ad5592r-base.c
60
struct ad5592r_state *st = gpiochip_get_data(chip);
drivers/iio/dac/ad5592r-base.c
607
ad5592r_init_scales(st, ad5592r_get_vref(st));
drivers/iio/dac/ad5592r-base.c
609
ret = ad5592r_reset(st);
drivers/iio/dac/ad5592r-base.c
613
ret = ops->reg_write(st, AD5592R_REG_PD,
drivers/iio/dac/ad5592r-base.c
614
(st->reg == NULL) ? AD5592R_REG_PD_EN_REF : 0);
drivers/iio/dac/ad5592r-base.c
622
ret = ad5592r_set_channel_modes(st);
drivers/iio/dac/ad5592r-base.c
63
guard(mutex)(&st->gpio_lock);
drivers/iio/dac/ad5592r-base.c
630
ret = ad5592r_gpio_init(st);
drivers/iio/dac/ad5592r-base.c
640
ad5592r_reset_channel_modes(st);
drivers/iio/dac/ad5592r-base.c
643
if (st->reg)
drivers/iio/dac/ad5592r-base.c
644
regulator_disable(st->reg);
drivers/iio/dac/ad5592r-base.c
65
st->gpio_out &= ~BIT(offset);
drivers/iio/dac/ad5592r-base.c
653
struct ad5592r_state *st = iio_priv(iio_dev);
drivers/iio/dac/ad5592r-base.c
656
ad5592r_reset_channel_modes(st);
drivers/iio/dac/ad5592r-base.c
657
ad5592r_gpio_cleanup(st);
drivers/iio/dac/ad5592r-base.c
659
if (st->reg)
drivers/iio/dac/ad5592r-base.c
66
st->gpio_in |= BIT(offset);
drivers/iio/dac/ad5592r-base.c
660
regulator_disable(st->reg);
drivers/iio/dac/ad5592r-base.c
68
ret = st->ops->reg_write(st, AD5592R_REG_GPIO_OUT_EN, st->gpio_out);
drivers/iio/dac/ad5592r-base.c
72
return st->ops->reg_write(st, AD5592R_REG_GPIO_IN_EN, st->gpio_in);
drivers/iio/dac/ad5592r-base.c
78
struct ad5592r_state *st = gpiochip_get_data(chip);
drivers/iio/dac/ad5592r-base.c
81
guard(mutex)(&st->gpio_lock);
drivers/iio/dac/ad5592r-base.c
84
st->gpio_val |= BIT(offset);
drivers/iio/dac/ad5592r-base.c
86
st->gpio_val &= ~BIT(offset);
drivers/iio/dac/ad5592r-base.c
88
st->gpio_in &= ~BIT(offset);
drivers/iio/dac/ad5592r-base.c
89
st->gpio_out |= BIT(offset);
drivers/iio/dac/ad5592r-base.c
91
ret = st->ops->reg_write(st, AD5592R_REG_GPIO_SET, st->gpio_val);
drivers/iio/dac/ad5592r-base.c
95
ret = st->ops->reg_write(st, AD5592R_REG_GPIO_OUT_EN, st->gpio_out);
drivers/iio/dac/ad5592r-base.c
99
return st->ops->reg_write(st, AD5592R_REG_GPIO_IN_EN, st->gpio_in);
drivers/iio/dac/ad5592r-base.h
45
int (*write_dac)(struct ad5592r_state *st, unsigned chan, u16 value);
drivers/iio/dac/ad5592r-base.h
46
int (*read_adc)(struct ad5592r_state *st, unsigned chan, u16 *value);
drivers/iio/dac/ad5592r-base.h
47
int (*reg_write)(struct ad5592r_state *st, u8 reg, u16 value);
drivers/iio/dac/ad5592r-base.h
48
int (*reg_read)(struct ad5592r_state *st, u8 reg, u16 *value);
drivers/iio/dac/ad5592r-base.h
49
int (*gpio_read)(struct ad5592r_state *st, u8 *value);
drivers/iio/dac/ad5592r.c
103
ret = ad5592r_reg_write(st, AD5592R_REG_GPIO_IN_EN,
drivers/iio/dac/ad5592r.c
104
AD5592R_GPIO_READBACK_EN | st->gpio_in);
drivers/iio/dac/ad5592r.c
108
ret = ad5592r_spi_wnop_r16(st, &st->spi_msg);
drivers/iio/dac/ad5592r.c
112
*value = (u8) be16_to_cpu(st->spi_msg);
drivers/iio/dac/ad5592r.c
18
static int ad5592r_spi_wnop_r16(struct ad5592r_state *st, __be16 *buf)
drivers/iio/dac/ad5592r.c
20
struct spi_device *spi = container_of(st->dev, struct spi_device, dev);
drivers/iio/dac/ad5592r.c
22
.tx_buf = &st->spi_msg_nop,
drivers/iio/dac/ad5592r.c
27
st->spi_msg_nop = 0; /* NOP */
drivers/iio/dac/ad5592r.c
32
static int ad5592r_write_dac(struct ad5592r_state *st, unsigned chan, u16 value)
drivers/iio/dac/ad5592r.c
34
struct spi_device *spi = container_of(st->dev, struct spi_device, dev);
drivers/iio/dac/ad5592r.c
36
st->spi_msg = cpu_to_be16(BIT(15) | (chan << 12) | value);
drivers/iio/dac/ad5592r.c
38
return spi_write(spi, &st->spi_msg, sizeof(st->spi_msg));
drivers/iio/dac/ad5592r.c
41
static int ad5592r_read_adc(struct ad5592r_state *st, unsigned chan, u16 *value)
drivers/iio/dac/ad5592r.c
43
struct spi_device *spi = container_of(st->dev, struct spi_device, dev);
drivers/iio/dac/ad5592r.c
46
st->spi_msg = cpu_to_be16((AD5592R_REG_ADC_SEQ << 11) | BIT(chan));
drivers/iio/dac/ad5592r.c
48
ret = spi_write(spi, &st->spi_msg, sizeof(st->spi_msg));
drivers/iio/dac/ad5592r.c
56
ret = ad5592r_spi_wnop_r16(st, &st->spi_msg);
drivers/iio/dac/ad5592r.c
60
ret = ad5592r_spi_wnop_r16(st, &st->spi_msg);
drivers/iio/dac/ad5592r.c
64
*value = be16_to_cpu(st->spi_msg);
drivers/iio/dac/ad5592r.c
69
static int ad5592r_reg_write(struct ad5592r_state *st, u8 reg, u16 value)
drivers/iio/dac/ad5592r.c
71
struct spi_device *spi = container_of(st->dev, struct spi_device, dev);
drivers/iio/dac/ad5592r.c
73
st->spi_msg = cpu_to_be16((reg << 11) | value);
drivers/iio/dac/ad5592r.c
75
return spi_write(spi, &st->spi_msg, sizeof(st->spi_msg));
drivers/iio/dac/ad5592r.c
78
static int ad5592r_reg_read(struct ad5592r_state *st, u8 reg, u16 *value)
drivers/iio/dac/ad5592r.c
80
struct spi_device *spi = container_of(st->dev, struct spi_device, dev);
drivers/iio/dac/ad5592r.c
83
st->spi_msg = cpu_to_be16((AD5592R_REG_LDAC << 11) |
drivers/iio/dac/ad5592r.c
86
ret = spi_write(spi, &st->spi_msg, sizeof(st->spi_msg));
drivers/iio/dac/ad5592r.c
90
ret = ad5592r_spi_wnop_r16(st, &st->spi_msg);
drivers/iio/dac/ad5592r.c
94
*value = be16_to_cpu(st->spi_msg);
drivers/iio/dac/ad5592r.c
99
static int ad5592r_gpio_read(struct ad5592r_state *st, u8 *value)
drivers/iio/dac/ad5593r.c
42
static int ad5593r_write_dac(struct ad5592r_state *st, unsigned chan, u16 value)
drivers/iio/dac/ad5593r.c
44
struct i2c_client *i2c = to_i2c_client(st->dev);
drivers/iio/dac/ad5593r.c
50
static int ad5593r_read_adc(struct ad5592r_state *st, unsigned chan, u16 *value)
drivers/iio/dac/ad5593r.c
52
struct i2c_client *i2c = to_i2c_client(st->dev);
drivers/iio/dac/ad5593r.c
63
static int ad5593r_reg_write(struct ad5592r_state *st, u8 reg, u16 value)
drivers/iio/dac/ad5593r.c
65
struct i2c_client *i2c = to_i2c_client(st->dev);
drivers/iio/dac/ad5593r.c
71
static int ad5593r_reg_read(struct ad5592r_state *st, u8 reg, u16 *value)
drivers/iio/dac/ad5593r.c
73
struct i2c_client *i2c = to_i2c_client(st->dev);
drivers/iio/dac/ad5593r.c
78
static int ad5593r_gpio_read(struct ad5592r_state *st, u8 *value)
drivers/iio/dac/ad5593r.c
80
struct i2c_client *i2c = to_i2c_client(st->dev);
drivers/iio/dac/ad5624r_spi.c
101
struct ad5624r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5624r_spi.c
103
st->pwr_down_mode = mode;
drivers/iio/dac/ad5624r_spi.c
118
struct ad5624r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5624r_spi.c
121
!!(st->pwr_down_mask & (1 << chan->channel)));
drivers/iio/dac/ad5624r_spi.c
130
struct ad5624r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5624r_spi.c
137
st->pwr_down_mask |= (1 << chan->channel);
drivers/iio/dac/ad5624r_spi.c
139
st->pwr_down_mask &= ~(1 << chan->channel);
drivers/iio/dac/ad5624r_spi.c
141
ret = ad5624r_spi_write(st->us, AD5624R_CMD_POWERDOWN_DAC, 0,
drivers/iio/dac/ad5624r_spi.c
142
(st->pwr_down_mode << 4) |
drivers/iio/dac/ad5624r_spi.c
143
st->pwr_down_mask, 16);
drivers/iio/dac/ad5624r_spi.c
224
struct ad5624r_state *st;
drivers/iio/dac/ad5624r_spi.c
229
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5624r_spi.c
232
st = iio_priv(indio_dev);
drivers/iio/dac/ad5624r_spi.c
241
st->vref_mv = external_vref ? ret / 1000 : st->chip_info->int_vref_mv;
drivers/iio/dac/ad5624r_spi.c
243
st->chip_info =
drivers/iio/dac/ad5624r_spi.c
246
st->us = spi;
drivers/iio/dac/ad5624r_spi.c
251
indio_dev->channels = st->chip_info->channels;
drivers/iio/dac/ad5624r_spi.c
51
struct ad5624r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5624r_spi.c
55
*val = st->vref_mv;
drivers/iio/dac/ad5624r_spi.c
68
struct ad5624r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5624r_spi.c
75
return ad5624r_spi_write(st->us,
drivers/iio/dac/ad5624r_spi.c
93
struct ad5624r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5624r_spi.c
95
return st->pwr_down_mode;
drivers/iio/dac/ad5686-spi.c
20
static int ad5686_spi_write(struct ad5686_state *st,
drivers/iio/dac/ad5686-spi.c
23
struct spi_device *spi = to_spi_device(st->dev);
drivers/iio/dac/ad5686-spi.c
26
switch (st->chip_info->regmap_type) {
drivers/iio/dac/ad5686-spi.c
28
st->data[0].d16 = cpu_to_be16(AD5310_CMD(cmd) |
drivers/iio/dac/ad5686-spi.c
30
buf = &st->data[0].d8[0];
drivers/iio/dac/ad5686-spi.c
34
st->data[0].d32 = cpu_to_be32(AD5686_CMD(cmd) |
drivers/iio/dac/ad5686-spi.c
36
buf = &st->data[0].d8[1];
drivers/iio/dac/ad5686-spi.c
40
st->data[0].d32 = cpu_to_be32(AD5686_CMD(cmd) |
drivers/iio/dac/ad5686-spi.c
43
buf = &st->data[0].d8[1];
drivers/iio/dac/ad5686-spi.c
53
static int ad5686_spi_read(struct ad5686_state *st, u8 addr)
drivers/iio/dac/ad5686-spi.c
57
.tx_buf = &st->data[0].d8[1],
drivers/iio/dac/ad5686-spi.c
61
.tx_buf = &st->data[1].d8[1],
drivers/iio/dac/ad5686-spi.c
62
.rx_buf = &st->data[2].d8[1],
drivers/iio/dac/ad5686-spi.c
66
struct spi_device *spi = to_spi_device(st->dev);
drivers/iio/dac/ad5686-spi.c
70
switch (st->chip_info->regmap_type) {
drivers/iio/dac/ad5686-spi.c
83
st->data[0].d32 = cpu_to_be32(AD5686_CMD(cmd) |
drivers/iio/dac/ad5686-spi.c
85
st->data[1].d32 = cpu_to_be32(AD5686_CMD(AD5686_CMD_NOOP));
drivers/iio/dac/ad5686-spi.c
91
return be32_to_cpu(st->data[2].d32);
drivers/iio/dac/ad5686.c
104
struct ad5686_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5686.c
106
guard(mutex)(&st->lock);
drivers/iio/dac/ad5686.c
109
!!ad5686_pd_field_get(chan, st->pwr_down_mask));
drivers/iio/dac/ad5686.c
120
struct ad5686_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5686.c
128
guard(mutex)(&st->lock);
drivers/iio/dac/ad5686.c
131
ad5686_pd_field_set(chan, &st->pwr_down_mask, AD5686_PD_MSK_PWR_DOWN);
drivers/iio/dac/ad5686.c
133
ad5686_pd_field_set(chan, &st->pwr_down_mask, AD5686_PD_MSK_PWR_UP);
drivers/iio/dac/ad5686.c
135
switch (st->chip_info->regmap_type) {
drivers/iio/dac/ad5686.c
137
ret = ad5310_control_sync(st);
drivers/iio/dac/ad5686.c
142
ret = ad5683_control_sync(st);
drivers/iio/dac/ad5686.c
148
val = st->pwr_down_mask & st->pwr_down_mode;
drivers/iio/dac/ad5686.c
156
ret = ad5686_write(st, AD5686_CMD_POWERDOWN_DAC, address, val);
drivers/iio/dac/ad5686.c
173
struct ad5686_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5686.c
178
mutex_lock(&st->lock);
drivers/iio/dac/ad5686.c
179
ret = ad5686_read(st, chan->address);
drivers/iio/dac/ad5686.c
180
mutex_unlock(&st->lock);
drivers/iio/dac/ad5686.c
187
*val = st->vref_mv;
drivers/iio/dac/ad5686.c
200
struct ad5686_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5686.c
208
mutex_lock(&st->lock);
drivers/iio/dac/ad5686.c
209
ret = ad5686_write(st, AD5686_CMD_WRITE_INPUT_N_UPDATE_N,
drivers/iio/dac/ad5686.c
211
mutex_unlock(&st->lock);
drivers/iio/dac/ad5686.c
29
static int ad5310_control_sync(struct ad5686_state *st)
drivers/iio/dac/ad5686.c
31
unsigned int pd_val = st->pwr_down_mask & st->pwr_down_mode;
drivers/iio/dac/ad5686.c
33
return ad5686_write(st, AD5686_CMD_CONTROL_REG, 0,
drivers/iio/dac/ad5686.c
35
FIELD_PREP(AD5310_REF_BIT_MSK, st->use_internal_vref ? 0 : 1));
drivers/iio/dac/ad5686.c
38
static int ad5683_control_sync(struct ad5686_state *st)
drivers/iio/dac/ad5686.c
40
unsigned int pd_val = st->pwr_down_mask & st->pwr_down_mode;
drivers/iio/dac/ad5686.c
42
return ad5686_write(st, AD5686_CMD_CONTROL_REG, 0,
drivers/iio/dac/ad5686.c
44
FIELD_PREP(AD5683_REF_BIT_MSK, st->use_internal_vref ? 0 : 1));
drivers/iio/dac/ad5686.c
473
struct ad5686_state *st;
drivers/iio/dac/ad5686.c
477
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ad5686.c
481
st = iio_priv(indio_dev);
drivers/iio/dac/ad5686.c
483
st->dev = dev;
drivers/iio/dac/ad5686.c
484
st->ops = ops;
drivers/iio/dac/ad5686.c
485
st->chip_info = chip_info;
drivers/iio/dac/ad5686.c
491
st->use_internal_vref = ret == -ENODEV;
drivers/iio/dac/ad5686.c
492
st->vref_mv = st->use_internal_vref ? st->chip_info->int_vref_mv : ret / 1000;
drivers/iio/dac/ad5686.c
495
st->pwr_down_mask = ~0;
drivers/iio/dac/ad5686.c
496
st->pwr_down_mode = ~0;
drivers/iio/dac/ad5686.c
499
for (i = 0; i < st->chip_info->num_channels; i++) {
drivers/iio/dac/ad5686.c
500
ad5686_pd_field_set(&st->chip_info->channels[i],
drivers/iio/dac/ad5686.c
501
&st->pwr_down_mask, AD5686_PD_MSK_PWR_UP);
drivers/iio/dac/ad5686.c
502
ad5686_pd_field_set(&st->chip_info->channels[i],
drivers/iio/dac/ad5686.c
503
&st->pwr_down_mode, AD5686_PD_MODE_1K_TO_GND);
drivers/iio/dac/ad5686.c
509
indio_dev->channels = st->chip_info->channels;
drivers/iio/dac/ad5686.c
510
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/dac/ad5686.c
512
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/dac/ad5686.c
516
switch (st->chip_info->regmap_type) {
drivers/iio/dac/ad5686.c
518
ret = ad5310_control_sync(st);
drivers/iio/dac/ad5686.c
523
ret = ad5683_control_sync(st);
drivers/iio/dac/ad5686.c
528
ret = ad5686_write(st, AD5686_CMD_INTERNAL_REFER_SETUP, 0,
drivers/iio/dac/ad5686.c
529
st->use_internal_vref ? 0 : AD5686_REF_BIT_MSK);
drivers/iio/dac/ad5686.c
75
struct ad5686_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5686.c
77
guard(mutex)(&st->lock);
drivers/iio/dac/ad5686.c
79
return ad5686_pd_field_get(chan, st->pwr_down_mode) - 1;
drivers/iio/dac/ad5686.c
86
struct ad5686_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5686.c
88
guard(mutex)(&st->lock);
drivers/iio/dac/ad5686.c
89
ad5686_pd_field_set(chan, &st->pwr_down_mode, mode + 1);
drivers/iio/dac/ad5686.h
157
static inline int ad5686_write(struct ad5686_state *st, u8 cmd, u8 addr, u16 val)
drivers/iio/dac/ad5686.h
159
return st->ops->write(st, cmd, addr, val);
drivers/iio/dac/ad5686.h
162
static inline int ad5686_read(struct ad5686_state *st, u8 addr)
drivers/iio/dac/ad5686.h
164
return st->ops->read(st, addr);
drivers/iio/dac/ad5686.h
71
int (*read)(struct ad5686_state *st, u8 addr);
drivers/iio/dac/ad5686.h
72
int (*write)(struct ad5686_state *st, u8 cmd, u8 addr, u16 val);
drivers/iio/dac/ad5696-i2c.c
18
static int ad5686_i2c_read(struct ad5686_state *st, u8 addr)
drivers/iio/dac/ad5696-i2c.c
20
struct i2c_client *i2c = to_i2c_client(st->dev);
drivers/iio/dac/ad5696-i2c.c
26
.buf = &st->data[0].d8[1],
drivers/iio/dac/ad5696-i2c.c
32
.buf = (char *)&st->data[0].d16,
drivers/iio/dac/ad5696-i2c.c
37
st->data[0].d32 = cpu_to_be32(AD5686_CMD(AD5686_CMD_NOOP) |
drivers/iio/dac/ad5696-i2c.c
45
return be16_to_cpu(st->data[0].d16);
drivers/iio/dac/ad5696-i2c.c
48
static int ad5686_i2c_write(struct ad5686_state *st,
drivers/iio/dac/ad5696-i2c.c
51
struct i2c_client *i2c = to_i2c_client(st->dev);
drivers/iio/dac/ad5696-i2c.c
54
st->data[0].d32 = cpu_to_be32(AD5686_CMD(cmd) | AD5686_ADDR(addr)
drivers/iio/dac/ad5696-i2c.c
57
ret = i2c_master_send(i2c, &st->data[0].d8[1], 3);
drivers/iio/dac/ad5706r.c
101
put_unaligned_be16(cmd, &st->tx_buf[0]);
drivers/iio/dac/ad5706r.c
102
put_unaligned_be16(0, &st->tx_buf[2]);
drivers/iio/dac/ad5706r.c
104
ret = spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/dac/ad5706r.c
110
val = st->rx_buf[2];
drivers/iio/dac/ad5706r.c
112
val = get_unaligned_be16(&st->rx_buf[2]);
drivers/iio/dac/ad5706r.c
125
struct ad5706r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5706r.c
132
ret = regmap_read(st->regmap, reg, ®_val);
drivers/iio/dac/ad5706r.c
151
struct ad5706r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5706r.c
160
return regmap_write(st->regmap, reg, val);
drivers/iio/dac/ad5706r.c
204
struct ad5706r_state *st;
drivers/iio/dac/ad5706r.c
206
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ad5706r.c
210
st = iio_priv(indio_dev);
drivers/iio/dac/ad5706r.c
211
st->spi = spi;
drivers/iio/dac/ad5706r.c
213
st->regmap = devm_regmap_init(dev, &ad5706r_regmap_bus,
drivers/iio/dac/ad5706r.c
214
st, &ad5706r_regmap_config);
drivers/iio/dac/ad5706r.c
215
if (IS_ERR(st->regmap))
drivers/iio/dac/ad5706r.c
216
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/dac/ad5706r.c
51
struct ad5706r_state *st = context;
drivers/iio/dac/ad5706r.c
63
.tx_buf = st->tx_buf,
drivers/iio/dac/ad5706r.c
67
put_unaligned_be16(reg, &st->tx_buf[0]);
drivers/iio/dac/ad5706r.c
70
st->tx_buf[2] = (u8)val;
drivers/iio/dac/ad5706r.c
72
put_unaligned_be16(val, &st->tx_buf[2]);
drivers/iio/dac/ad5706r.c
76
return spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/dac/ad5706r.c
82
struct ad5706r_state *st = context;
drivers/iio/dac/ad5706r.c
95
.tx_buf = st->tx_buf,
drivers/iio/dac/ad5706r.c
96
.rx_buf = st->rx_buf,
drivers/iio/dac/ad5755.c
255
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
257
st->data[0].d32 = cpu_to_be32((reg << 16) | val);
drivers/iio/dac/ad5755.c
259
return spi_write(st->spi, &st->data[0].d8[1], 3);
drivers/iio/dac/ad5755.c
272
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
275
mutex_lock(&st->lock);
drivers/iio/dac/ad5755.c
277
mutex_unlock(&st->lock);
drivers/iio/dac/ad5755.c
285
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
288
mutex_lock(&st->lock);
drivers/iio/dac/ad5755.c
290
mutex_unlock(&st->lock);
drivers/iio/dac/ad5755.c
297
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
301
.tx_buf = &st->data[0].d8[1],
drivers/iio/dac/ad5755.c
305
.tx_buf = &st->data[1].d8[1],
drivers/iio/dac/ad5755.c
306
.rx_buf = &st->data[1].d8[1],
drivers/iio/dac/ad5755.c
311
mutex_lock(&st->lock);
drivers/iio/dac/ad5755.c
313
st->data[0].d32 = cpu_to_be32(AD5755_READ_FLAG | (addr << 16));
drivers/iio/dac/ad5755.c
314
st->data[1].d32 = cpu_to_be32(AD5755_NOOP);
drivers/iio/dac/ad5755.c
316
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/dac/ad5755.c
318
ret = be32_to_cpu(st->data[1].d32) & 0xffff;
drivers/iio/dac/ad5755.c
320
mutex_unlock(&st->lock);
drivers/iio/dac/ad5755.c
328
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
331
st->ctrl[channel] |= set;
drivers/iio/dac/ad5755.c
332
st->ctrl[channel] &= ~clr;
drivers/iio/dac/ad5755.c
335
AD5755_CTRL_REG_DAC, st->ctrl[channel]);
drivers/iio/dac/ad5755.c
343
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
346
mutex_lock(&st->lock);
drivers/iio/dac/ad5755.c
348
if ((bool)(st->pwr_down & mask) == pwr_down)
drivers/iio/dac/ad5755.c
352
st->pwr_down &= ~mask;
drivers/iio/dac/ad5755.c
359
st->pwr_down |= mask;
drivers/iio/dac/ad5755.c
366
mutex_unlock(&st->lock);
drivers/iio/dac/ad5755.c
381
static void ad5755_get_min_max(struct ad5755_state *st,
drivers/iio/dac/ad5755.c
384
enum ad5755_mode mode = st->ctrl[chan->channel] & 7;
drivers/iio/dac/ad5755.c
389
static inline int ad5755_get_offset(struct ad5755_state *st,
drivers/iio/dac/ad5755.c
394
ad5755_get_min_max(st, chan, &min, &max);
drivers/iio/dac/ad5755.c
398
static int ad5755_chan_reg_info(struct ad5755_state *st,
drivers/iio/dac/ad5755.c
416
*shift = st->chip_info->calib_shift;
drivers/iio/dac/ad5755.c
424
*shift = st->chip_info->calib_shift;
drivers/iio/dac/ad5755.c
437
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
444
ad5755_get_min_max(st, chan, &min, &max);
drivers/iio/dac/ad5755.c
449
*val = ad5755_get_offset(st, chan);
drivers/iio/dac/ad5755.c
452
ret = ad5755_chan_reg_info(st, chan, info, false,
drivers/iio/dac/ad5755.c
472
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
476
ret = ad5755_chan_reg_info(st, chan, info, true,
drivers/iio/dac/ad5755.c
493
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
496
(bool)(st->pwr_down & (1 << chan->channel)));
drivers/iio/dac/ad5755.c
568
static bool ad5755_is_valid_mode(struct ad5755_state *st, enum ad5755_mode mode)
drivers/iio/dac/ad5755.c
575
return st->chip_info->has_voltage_out;
drivers/iio/dac/ad5755.c
588
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
623
if (!ad5755_is_valid_mode(st, pdata->dac[i].mode))
drivers/iio/dac/ad5755.c
657
struct ad5755_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
658
struct iio_chan_spec *channels = st->channels;
drivers/iio/dac/ad5755.c
662
channels[i] = st->chip_info->channel_template;
drivers/iio/dac/ad5755.c
809
struct ad5755_state *st;
drivers/iio/dac/ad5755.c
812
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5755.c
818
st = iio_priv(indio_dev);
drivers/iio/dac/ad5755.c
821
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/dac/ad5755.c
822
st->spi = spi;
drivers/iio/dac/ad5755.c
823
st->pwr_down = 0xf;
drivers/iio/dac/ad5755.c
830
ret = devm_mutex_init(&spi->dev, &st->lock);
drivers/iio/dac/ad5758.c
185
static int ad5758_spi_reg_read(struct ad5758_state *st, unsigned int addr)
drivers/iio/dac/ad5758.c
189
.tx_buf = &st->d32[0],
drivers/iio/dac/ad5758.c
193
.tx_buf = &st->d32[1],
drivers/iio/dac/ad5758.c
194
.rx_buf = &st->d32[2],
drivers/iio/dac/ad5758.c
200
st->d32[0] = cpu_to_be32(
drivers/iio/dac/ad5758.c
203
st->d32[1] = cpu_to_be32(AD5758_WR_FLAG_MSK(AD5758_NOP) << 24);
drivers/iio/dac/ad5758.c
205
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/dac/ad5758.c
209
return (be32_to_cpu(st->d32[2]) >> 8) & 0xFFFF;
drivers/iio/dac/ad5758.c
212
static int ad5758_spi_reg_write(struct ad5758_state *st,
drivers/iio/dac/ad5758.c
216
st->d32[0] = cpu_to_be32((AD5758_WR_FLAG_MSK(addr) << 24) |
drivers/iio/dac/ad5758.c
219
return spi_write(st->spi, &st->d32[0], sizeof(st->d32[0]));
drivers/iio/dac/ad5758.c
222
static int ad5758_spi_write_mask(struct ad5758_state *st,
drivers/iio/dac/ad5758.c
229
regval = ad5758_spi_reg_read(st, addr);
drivers/iio/dac/ad5758.c
236
return ad5758_spi_reg_write(st, addr, regval);
drivers/iio/dac/ad5758.c
257
static int ad5758_wait_for_task_complete(struct ad5758_state *st,
drivers/iio/dac/ad5758.c
266
ret = ad5758_spi_reg_read(st, reg);
drivers/iio/dac/ad5758.c
276
dev_err(&st->spi->dev,
drivers/iio/dac/ad5758.c
282
static int ad5758_calib_mem_refresh(struct ad5758_state *st)
drivers/iio/dac/ad5758.c
286
ret = ad5758_spi_reg_write(st, AD5758_KEY,
drivers/iio/dac/ad5758.c
289
dev_err(&st->spi->dev,
drivers/iio/dac/ad5758.c
295
return ad5758_wait_for_task_complete(st, AD5758_DIGITAL_DIAG_RESULTS,
drivers/iio/dac/ad5758.c
299
static int ad5758_soft_reset(struct ad5758_state *st)
drivers/iio/dac/ad5758.c
303
ret = ad5758_spi_reg_write(st, AD5758_KEY, AD5758_KEY_CODE_RESET_1);
drivers/iio/dac/ad5758.c
307
ret = ad5758_spi_reg_write(st, AD5758_KEY, AD5758_KEY_CODE_RESET_2);
drivers/iio/dac/ad5758.c
315
static int ad5758_set_dc_dc_conv_mode(struct ad5758_state *st,
drivers/iio/dac/ad5758.c
325
ret = ad5758_spi_write_mask(st, AD5758_ADC_CONFIG,
drivers/iio/dac/ad5758.c
332
ret = ad5758_spi_write_mask(st, AD5758_DCDC_CONFIG1,
drivers/iio/dac/ad5758.c
342
ret = ad5758_wait_for_task_complete(st, AD5758_DCDC_CONFIG2,
drivers/iio/dac/ad5758.c
347
st->dc_dc_mode = mode;
drivers/iio/dac/ad5758.c
352
static int ad5758_set_dc_dc_ilim(struct ad5758_state *st, unsigned int ilim)
drivers/iio/dac/ad5758.c
356
ret = ad5758_spi_write_mask(st, AD5758_DCDC_CONFIG2,
drivers/iio/dac/ad5758.c
365
return ad5758_wait_for_task_complete(st, AD5758_DCDC_CONFIG2,
drivers/iio/dac/ad5758.c
369
static int ad5758_slew_rate_set(struct ad5758_state *st,
drivers/iio/dac/ad5758.c
384
ret = ad5758_spi_write_mask(st, AD5758_DAC_CONFIG, mask, mode);
drivers/iio/dac/ad5758.c
389
return ad5758_wait_for_task_complete(st, AD5758_DIGITAL_DIAG_RESULTS,
drivers/iio/dac/ad5758.c
393
static int ad5758_slew_rate_config(struct ad5758_state *st)
drivers/iio/dac/ad5758.c
418
do_div(sr_step, st->slew_time);
drivers/iio/dac/ad5758.c
435
diff_new = abs(st->slew_time - calc_slew_time);
drivers/iio/dac/ad5758.c
443
return ad5758_slew_rate_set(st, sr_clk_idx, sr_step_idx);
drivers/iio/dac/ad5758.c
446
static int ad5758_set_out_range(struct ad5758_state *st, int range)
drivers/iio/dac/ad5758.c
450
ret = ad5758_spi_write_mask(st, AD5758_DAC_CONFIG,
drivers/iio/dac/ad5758.c
457
return ad5758_wait_for_task_complete(st, AD5758_DIGITAL_DIAG_RESULTS,
drivers/iio/dac/ad5758.c
461
static int ad5758_internal_buffers_en(struct ad5758_state *st, bool enable)
drivers/iio/dac/ad5758.c
465
ret = ad5758_spi_write_mask(st, AD5758_DAC_CONFIG,
drivers/iio/dac/ad5758.c
472
return ad5758_wait_for_task_complete(st, AD5758_DIGITAL_DIAG_RESULTS,
drivers/iio/dac/ad5758.c
476
static int ad5758_reset(struct ad5758_state *st)
drivers/iio/dac/ad5758.c
478
if (st->gpio_reset) {
drivers/iio/dac/ad5758.c
479
gpiod_set_value(st->gpio_reset, 0);
drivers/iio/dac/ad5758.c
481
gpiod_set_value(st->gpio_reset, 1);
drivers/iio/dac/ad5758.c
487
return ad5758_soft_reset(st);
drivers/iio/dac/ad5758.c
496
struct ad5758_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5758.c
499
mutex_lock(&st->lock);
drivers/iio/dac/ad5758.c
501
ret = ad5758_spi_reg_read(st, reg);
drivers/iio/dac/ad5758.c
503
mutex_unlock(&st->lock);
drivers/iio/dac/ad5758.c
510
ret = ad5758_spi_reg_write(st, reg, writeval);
drivers/iio/dac/ad5758.c
512
mutex_unlock(&st->lock);
drivers/iio/dac/ad5758.c
521
struct ad5758_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5758.c
526
mutex_lock(&st->lock);
drivers/iio/dac/ad5758.c
527
ret = ad5758_spi_reg_read(st, AD5758_DAC_INPUT);
drivers/iio/dac/ad5758.c
528
mutex_unlock(&st->lock);
drivers/iio/dac/ad5758.c
535
min = st->out_range.min;
drivers/iio/dac/ad5758.c
536
max = st->out_range.max;
drivers/iio/dac/ad5758.c
541
min = st->out_range.min;
drivers/iio/dac/ad5758.c
542
max = st->out_range.max;
drivers/iio/dac/ad5758.c
554
struct ad5758_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5758.c
559
mutex_lock(&st->lock);
drivers/iio/dac/ad5758.c
560
ret = ad5758_spi_reg_write(st, AD5758_DAC_INPUT, val);
drivers/iio/dac/ad5758.c
561
mutex_unlock(&st->lock);
drivers/iio/dac/ad5758.c
573
struct ad5758_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5758.c
575
return sysfs_emit(buf, "%d\n", st->pwr_down);
drivers/iio/dac/ad5758.c
583
struct ad5758_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5758.c
593
mutex_lock(&st->lock);
drivers/iio/dac/ad5758.c
604
ret = ad5758_spi_write_mask(st, AD5758_DAC_CONFIG,
drivers/iio/dac/ad5758.c
610
st->pwr_down = pwr_down;
drivers/iio/dac/ad5758.c
613
mutex_unlock(&st->lock);
drivers/iio/dac/ad5758.c
664
static int ad5758_crc_disable(struct ad5758_state *st)
drivers/iio/dac/ad5758.c
669
st->d32[0] = cpu_to_be32(mask);
drivers/iio/dac/ad5758.c
671
return spi_write(st->spi, &st->d32[0], 4);
drivers/iio/dac/ad5758.c
674
static int ad5758_find_out_range(struct ad5758_state *st,
drivers/iio/dac/ad5758.c
683
st->out_range.reg = range[i].reg;
drivers/iio/dac/ad5758.c
684
st->out_range.min = range[i].min;
drivers/iio/dac/ad5758.c
685
st->out_range.max = range[i].max;
drivers/iio/dac/ad5758.c
694
static int ad5758_parse_dt(struct ad5758_state *st)
drivers/iio/dac/ad5758.c
700
st->dc_dc_ilim = 0;
drivers/iio/dac/ad5758.c
701
ret = device_property_read_u32(&st->spi->dev,
drivers/iio/dac/ad5758.c
704
dev_dbg(&st->spi->dev,
drivers/iio/dac/ad5758.c
711
dev_dbg(&st->spi->dev, "dc-dc-ilim out of range\n");
drivers/iio/dac/ad5758.c
713
st->dc_dc_ilim = index - ad5758_dc_dc_ilim;
drivers/iio/dac/ad5758.c
716
ret = device_property_read_u32(&st->spi->dev, "adi,dc-dc-mode",
drivers/iio/dac/ad5758.c
717
&st->dc_dc_mode);
drivers/iio/dac/ad5758.c
719
dev_err(&st->spi->dev, "Missing \"dc-dc-mode\" property\n");
drivers/iio/dac/ad5758.c
723
if (!ad5758_is_valid_mode(st->dc_dc_mode))
drivers/iio/dac/ad5758.c
726
if (st->dc_dc_mode == AD5758_DCDC_MODE_DPC_VOLTAGE) {
drivers/iio/dac/ad5758.c
727
ret = device_property_read_u32_array(&st->spi->dev,
drivers/iio/dac/ad5758.c
731
dev_err(&st->spi->dev,
drivers/iio/dac/ad5758.c
738
ret = device_property_read_u32_array(&st->spi->dev,
drivers/iio/dac/ad5758.c
742
dev_err(&st->spi->dev,
drivers/iio/dac/ad5758.c
750
ret = ad5758_find_out_range(st, range, size, tmparray[0], tmparray[1]);
drivers/iio/dac/ad5758.c
752
dev_err(&st->spi->dev, "range invalid\n");
drivers/iio/dac/ad5758.c
756
ret = device_property_read_u32(&st->spi->dev, "adi,slew-time-us", &tmp);
drivers/iio/dac/ad5758.c
758
dev_dbg(&st->spi->dev, "Missing \"slew-time-us\" property\n");
drivers/iio/dac/ad5758.c
759
st->slew_time = 0;
drivers/iio/dac/ad5758.c
761
st->slew_time = tmp;
drivers/iio/dac/ad5758.c
767
static int ad5758_init(struct ad5758_state *st)
drivers/iio/dac/ad5758.c
771
st->gpio_reset = devm_gpiod_get_optional(&st->spi->dev, "reset",
drivers/iio/dac/ad5758.c
773
if (IS_ERR(st->gpio_reset))
drivers/iio/dac/ad5758.c
774
return PTR_ERR(st->gpio_reset);
drivers/iio/dac/ad5758.c
777
ret = ad5758_crc_disable(st);
drivers/iio/dac/ad5758.c
782
ret = ad5758_reset(st);
drivers/iio/dac/ad5758.c
787
ret = ad5758_crc_disable(st);
drivers/iio/dac/ad5758.c
792
ret = ad5758_calib_mem_refresh(st);
drivers/iio/dac/ad5758.c
796
regval = ad5758_spi_reg_read(st, AD5758_DIGITAL_DIAG_RESULTS);
drivers/iio/dac/ad5758.c
801
ret = ad5758_spi_reg_write(st, AD5758_DIGITAL_DIAG_RESULTS, regval);
drivers/iio/dac/ad5758.c
806
ret = ad5758_set_dc_dc_ilim(st, st->dc_dc_ilim);
drivers/iio/dac/ad5758.c
811
ret = ad5758_set_dc_dc_conv_mode(st, st->dc_dc_mode);
drivers/iio/dac/ad5758.c
816
ret = ad5758_set_out_range(st, st->out_range.reg);
drivers/iio/dac/ad5758.c
821
if (st->slew_time) {
drivers/iio/dac/ad5758.c
822
ret = ad5758_slew_rate_config(st);
drivers/iio/dac/ad5758.c
828
ret = ad5758_internal_buffers_en(st, 1);
drivers/iio/dac/ad5758.c
833
return ad5758_spi_write_mask(st, AD5758_DAC_CONFIG,
drivers/iio/dac/ad5758.c
840
struct ad5758_state *st;
drivers/iio/dac/ad5758.c
844
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5758.c
848
st = iio_priv(indio_dev);
drivers/iio/dac/ad5758.c
851
st->spi = spi;
drivers/iio/dac/ad5758.c
853
ret = devm_mutex_init(&spi->dev, &st->lock);
drivers/iio/dac/ad5758.c
862
ret = ad5758_parse_dt(st);
drivers/iio/dac/ad5758.c
866
if (st->dc_dc_mode == AD5758_DCDC_MODE_DPC_VOLTAGE)
drivers/iio/dac/ad5758.c
871
ret = ad5758_init(st);
drivers/iio/dac/ad5758.c
877
return devm_iio_device_register(&st->spi->dev, indio_dev);
drivers/iio/dac/ad5761.c
115
static int _ad5761_spi_write(struct ad5761_state *st, u8 addr, u16 val)
drivers/iio/dac/ad5761.c
117
st->data[0].d32 = cpu_to_be32(AD5761_ADDR(addr) | val);
drivers/iio/dac/ad5761.c
119
return spi_write(st->spi, &st->data[0].d8[1], 3);
drivers/iio/dac/ad5761.c
124
struct ad5761_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5761.c
127
mutex_lock(&st->lock);
drivers/iio/dac/ad5761.c
128
ret = _ad5761_spi_write(st, addr, val);
drivers/iio/dac/ad5761.c
129
mutex_unlock(&st->lock);
drivers/iio/dac/ad5761.c
134
static int _ad5761_spi_read(struct ad5761_state *st, u8 addr, u16 *val)
drivers/iio/dac/ad5761.c
139
.tx_buf = &st->data[0].d8[1],
drivers/iio/dac/ad5761.c
143
.tx_buf = &st->data[1].d8[1],
drivers/iio/dac/ad5761.c
144
.rx_buf = &st->data[2].d8[1],
drivers/iio/dac/ad5761.c
149
st->data[0].d32 = cpu_to_be32(AD5761_ADDR(addr));
drivers/iio/dac/ad5761.c
150
st->data[1].d32 = cpu_to_be32(AD5761_ADDR(AD5761_ADDR_NOOP));
drivers/iio/dac/ad5761.c
152
ret = spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/dac/ad5761.c
154
*val = be32_to_cpu(st->data[2].d32);
drivers/iio/dac/ad5761.c
161
struct ad5761_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5761.c
164
mutex_lock(&st->lock);
drivers/iio/dac/ad5761.c
165
ret = _ad5761_spi_read(st, addr, val);
drivers/iio/dac/ad5761.c
166
mutex_unlock(&st->lock);
drivers/iio/dac/ad5761.c
171
static int ad5761_spi_set_range(struct ad5761_state *st,
drivers/iio/dac/ad5761.c
179
if (st->use_intref)
drivers/iio/dac/ad5761.c
182
ret = _ad5761_spi_write(st, AD5761_ADDR_SW_FULL_RESET, 0);
drivers/iio/dac/ad5761.c
186
ret = _ad5761_spi_write(st, AD5761_ADDR_CTRL_WRITE_REG, aux);
drivers/iio/dac/ad5761.c
190
st->range = range;
drivers/iio/dac/ad5761.c
201
struct ad5761_state *st;
drivers/iio/dac/ad5761.c
213
st = iio_priv(indio_dev);
drivers/iio/dac/ad5761.c
214
*val = st->vref * ad5761_range_params[st->range].m;
drivers/iio/dac/ad5761.c
219
st = iio_priv(indio_dev);
drivers/iio/dac/ad5761.c
221
*val *= ad5761_range_params[st->range].c;
drivers/iio/dac/ad5761.c
222
*val /= ad5761_range_params[st->range].m;
drivers/iio/dac/ad5761.c
289
struct ad5761_state *st;
drivers/iio/dac/ad5761.c
296
iio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5761.c
300
st = iio_priv(iio_dev);
drivers/iio/dac/ad5761.c
302
st->spi = spi;
drivers/iio/dac/ad5761.c
314
st->use_intref = true;
drivers/iio/dac/ad5761.c
315
st->vref = chip_info->int_vref;
drivers/iio/dac/ad5761.c
322
st->use_intref = false;
drivers/iio/dac/ad5761.c
323
st->vref = ret / 1000;
drivers/iio/dac/ad5761.c
329
mutex_init(&st->lock);
drivers/iio/dac/ad5761.c
331
ret = ad5761_spi_set_range(st, voltage_range);
drivers/iio/dac/ad5761.c
339
iio_dev->name = spi_get_device_id(st->spi)->name;
drivers/iio/dac/ad5764.c
127
struct ad5764_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5764.c
130
mutex_lock(&st->lock);
drivers/iio/dac/ad5764.c
131
st->data[0].d32 = cpu_to_be32((reg << 16) | val);
drivers/iio/dac/ad5764.c
133
ret = spi_write(st->spi, &st->data[0].d8[1], 3);
drivers/iio/dac/ad5764.c
134
mutex_unlock(&st->lock);
drivers/iio/dac/ad5764.c
142
struct ad5764_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5764.c
146
.tx_buf = &st->data[0].d8[1],
drivers/iio/dac/ad5764.c
150
.rx_buf = &st->data[1].d8[1],
drivers/iio/dac/ad5764.c
155
mutex_lock(&st->lock);
drivers/iio/dac/ad5764.c
157
st->data[0].d32 = cpu_to_be32((1 << 23) | (reg << 16));
drivers/iio/dac/ad5764.c
159
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/dac/ad5764.c
161
*val = be32_to_cpu(st->data[1].d32) & 0xffff;
drivers/iio/dac/ad5764.c
163
mutex_unlock(&st->lock);
drivers/iio/dac/ad5764.c
212
static int ad5764_get_channel_vref(struct ad5764_state *st,
drivers/iio/dac/ad5764.c
215
if (st->chip_info->int_vref)
drivers/iio/dac/ad5764.c
216
return st->chip_info->int_vref;
drivers/iio/dac/ad5764.c
218
return regulator_get_voltage(st->vref_reg[channel / 2].consumer);
drivers/iio/dac/ad5764.c
224
struct ad5764_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5764.c
253
vref = ad5764_get_channel_vref(st, chan->channel);
drivers/iio/dac/ad5764.c
277
struct ad5764_state *st;
drivers/iio/dac/ad5764.c
280
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5764.c
284
st = iio_priv(indio_dev);
drivers/iio/dac/ad5764.c
287
st->spi = spi;
drivers/iio/dac/ad5764.c
288
st->chip_info = &ad5764_chip_infos[type];
drivers/iio/dac/ad5764.c
294
indio_dev->channels = st->chip_info->channels;
drivers/iio/dac/ad5764.c
296
mutex_init(&st->lock);
drivers/iio/dac/ad5764.c
298
if (st->chip_info->int_vref == 0) {
drivers/iio/dac/ad5764.c
299
st->vref_reg[0].supply = "vrefAB";
drivers/iio/dac/ad5764.c
300
st->vref_reg[1].supply = "vrefCD";
drivers/iio/dac/ad5764.c
302
ret = devm_regulator_bulk_get(&st->spi->dev,
drivers/iio/dac/ad5764.c
303
ARRAY_SIZE(st->vref_reg), st->vref_reg);
drivers/iio/dac/ad5764.c
310
ret = regulator_bulk_enable(ARRAY_SIZE(st->vref_reg),
drivers/iio/dac/ad5764.c
311
st->vref_reg);
drivers/iio/dac/ad5764.c
328
if (st->chip_info->int_vref == 0)
drivers/iio/dac/ad5764.c
329
regulator_bulk_disable(ARRAY_SIZE(st->vref_reg), st->vref_reg);
drivers/iio/dac/ad5764.c
336
struct ad5764_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5764.c
340
if (st->chip_info->int_vref == 0)
drivers/iio/dac/ad5764.c
341
regulator_bulk_disable(ARRAY_SIZE(st->vref_reg), st->vref_reg);
drivers/iio/dac/ad5766.c
145
static int __ad5766_spi_read(struct ad5766_state *st, u8 dac, int *val)
drivers/iio/dac/ad5766.c
150
.tx_buf = &st->data[0].d32,
drivers/iio/dac/ad5766.c
154
.tx_buf = &st->data[1].d32,
drivers/iio/dac/ad5766.c
155
.rx_buf = &st->data[2].d32,
drivers/iio/dac/ad5766.c
160
st->data[0].d32 = AD5766_CMD_READBACK_REG(dac);
drivers/iio/dac/ad5766.c
161
st->data[1].d32 = AD5766_CMD_NOP_MUX_OUT;
drivers/iio/dac/ad5766.c
163
ret = spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/dac/ad5766.c
167
*val = st->data[2].w16[1];
drivers/iio/dac/ad5766.c
172
static int __ad5766_spi_write(struct ad5766_state *st, u8 command, u16 data)
drivers/iio/dac/ad5766.c
174
st->data[0].b8[0] = command;
drivers/iio/dac/ad5766.c
175
put_unaligned_be16(data, &st->data[0].b8[1]);
drivers/iio/dac/ad5766.c
177
return spi_write(st->spi, &st->data[0].b8[0], 3);
drivers/iio/dac/ad5766.c
182
struct ad5766_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5766.c
185
mutex_lock(&st->lock);
drivers/iio/dac/ad5766.c
186
ret = __ad5766_spi_read(st, dac, val);
drivers/iio/dac/ad5766.c
187
mutex_unlock(&st->lock);
drivers/iio/dac/ad5766.c
194
struct ad5766_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5766.c
197
mutex_lock(&st->lock);
drivers/iio/dac/ad5766.c
198
ret = __ad5766_spi_write(st, AD5766_CMD_WR_DAC_REG(dac), data);
drivers/iio/dac/ad5766.c
199
mutex_unlock(&st->lock);
drivers/iio/dac/ad5766.c
204
static int ad5766_reset(struct ad5766_state *st)
drivers/iio/dac/ad5766.c
208
if (st->gpio_reset) {
drivers/iio/dac/ad5766.c
209
gpiod_set_value_cansleep(st->gpio_reset, 1);
drivers/iio/dac/ad5766.c
211
gpiod_set_value_cansleep(st->gpio_reset, 0);
drivers/iio/dac/ad5766.c
213
ret = __ad5766_spi_write(st, AD5766_CMD_SW_FULL_RESET,
drivers/iio/dac/ad5766.c
234
struct ad5766_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5766.c
245
*val = ad5766_span_tbl[st->crt_range].min;
drivers/iio/dac/ad5766.c
249
*val = ad5766_span_tbl[st->crt_range].max -
drivers/iio/dac/ad5766.c
250
ad5766_span_tbl[st->crt_range].min;
drivers/iio/dac/ad5766.c
251
*val2 = st->chip_info->channels[0].scan_type.realbits;
drivers/iio/dac/ad5766.c
288
struct ad5766_state *st = iio_priv(dev);
drivers/iio/dac/ad5766.c
291
source = st->dither_source & AD5766_DITHER_SOURCE_MASK(chan->channel);
drivers/iio/dac/ad5766.c
302
struct ad5766_state *st = iio_priv(dev);
drivers/iio/dac/ad5766.c
306
st->dither_source &= ~AD5766_DITHER_SOURCE_MASK(chan->channel);
drivers/iio/dac/ad5766.c
307
st->dither_source |= AD5766_DITHER_SOURCE(chan->channel, source);
drivers/iio/dac/ad5766.c
309
val = FIELD_GET(AD5766_LOWER_WORD_SPI_MASK, st->dither_source);
drivers/iio/dac/ad5766.c
314
val = FIELD_GET(AD5766_UPPER_WORD_SPI_MASK, st->dither_source);
drivers/iio/dac/ad5766.c
322
struct ad5766_state *st = iio_priv(dev);
drivers/iio/dac/ad5766.c
325
scale = st->dither_scale & AD5766_DITHER_SCALE_MASK(chan->channel);
drivers/iio/dac/ad5766.c
335
struct ad5766_state *st = iio_priv(dev);
drivers/iio/dac/ad5766.c
338
st->dither_scale &= ~AD5766_DITHER_SCALE_MASK(chan->channel);
drivers/iio/dac/ad5766.c
339
st->dither_scale |= AD5766_DITHER_SCALE(chan->channel, scale);
drivers/iio/dac/ad5766.c
341
val = FIELD_GET(AD5766_LOWER_WORD_SPI_MASK, st->dither_scale);
drivers/iio/dac/ad5766.c
345
val = FIELD_GET(AD5766_UPPER_WORD_SPI_MASK, st->dither_scale);
drivers/iio/dac/ad5766.c
362
struct ad5766_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5766.c
367
!(st->dither_enable & BIT(chan->channel)));
drivers/iio/dac/ad5766.c
371
!!(st->dither_invert & BIT(chan->channel)));
drivers/iio/dac/ad5766.c
386
struct ad5766_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5766.c
396
st->dither_enable &= ~AD5766_DITHER_ENABLE_MASK(chan->channel);
drivers/iio/dac/ad5766.c
397
st->dither_enable |= AD5766_DITHER_ENABLE(chan->channel,
drivers/iio/dac/ad5766.c
400
st->dither_enable);
drivers/iio/dac/ad5766.c
403
st->dither_invert &= ~AD5766_DITHER_INVERT_MASK(chan->channel);
drivers/iio/dac/ad5766.c
404
st->dither_invert |= AD5766_DITHER_INVERT(chan->channel,
drivers/iio/dac/ad5766.c
407
st->dither_invert);
drivers/iio/dac/ad5766.c
494
static int ad5766_get_output_range(struct ad5766_state *st)
drivers/iio/dac/ad5766.c
498
ret = device_property_read_u32_array(&st->spi->dev,
drivers/iio/dac/ad5766.c
511
st->crt_range = i;
drivers/iio/dac/ad5766.c
519
static int ad5766_default_setup(struct ad5766_state *st)
drivers/iio/dac/ad5766.c
525
ret = ad5766_reset(st);
drivers/iio/dac/ad5766.c
529
ret = ad5766_get_output_range(st);
drivers/iio/dac/ad5766.c
534
st->dither_enable = GENMASK(15, 0);
drivers/iio/dac/ad5766.c
535
ret = __ad5766_spi_write(st, AD5766_CMD_WR_PWR_DITHER,
drivers/iio/dac/ad5766.c
536
st->dither_enable);
drivers/iio/dac/ad5766.c
540
st->dither_source = 0;
drivers/iio/dac/ad5766.c
542
st->dither_source |= AD5766_DITHER_SOURCE(i, 0);
drivers/iio/dac/ad5766.c
543
val = FIELD_GET(AD5766_LOWER_WORD_SPI_MASK, st->dither_source);
drivers/iio/dac/ad5766.c
544
ret = __ad5766_spi_write(st, AD5766_CMD_DITHER_SIG_1, val);
drivers/iio/dac/ad5766.c
548
val = FIELD_GET(AD5766_UPPER_WORD_SPI_MASK, st->dither_source);
drivers/iio/dac/ad5766.c
549
ret = __ad5766_spi_write(st, AD5766_CMD_DITHER_SIG_2, val);
drivers/iio/dac/ad5766.c
553
st->dither_scale = 0;
drivers/iio/dac/ad5766.c
554
val = FIELD_GET(AD5766_LOWER_WORD_SPI_MASK, st->dither_scale);
drivers/iio/dac/ad5766.c
555
ret = __ad5766_spi_write(st, AD5766_CMD_DITHER_SCALE_1, val);
drivers/iio/dac/ad5766.c
559
val = FIELD_GET(AD5766_UPPER_WORD_SPI_MASK, st->dither_scale);
drivers/iio/dac/ad5766.c
560
ret = __ad5766_spi_write(st, AD5766_CMD_DITHER_SCALE_2, val);
drivers/iio/dac/ad5766.c
564
st->dither_invert = 0;
drivers/iio/dac/ad5766.c
565
ret = __ad5766_spi_write(st, AD5766_CMD_INV_DITHER, st->dither_invert);
drivers/iio/dac/ad5766.c
569
return __ad5766_spi_write(st, AD5766_CMD_SPAN_REG, st->crt_range);
drivers/iio/dac/ad5766.c
577
struct ad5766_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5766.c
586
mutex_lock(&st->lock);
drivers/iio/dac/ad5766.c
588
st->chip_info->num_channels - 1)
drivers/iio/dac/ad5766.c
589
__ad5766_spi_write(st, AD5766_CMD_WR_IN_REG(ch), data[i++]);
drivers/iio/dac/ad5766.c
591
__ad5766_spi_write(st, AD5766_CMD_SW_LDAC,
drivers/iio/dac/ad5766.c
593
mutex_unlock(&st->lock);
drivers/iio/dac/ad5766.c
605
struct ad5766_state *st;
drivers/iio/dac/ad5766.c
608
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5766.c
612
st = iio_priv(indio_dev);
drivers/iio/dac/ad5766.c
613
mutex_init(&st->lock);
drivers/iio/dac/ad5766.c
615
st->spi = spi;
drivers/iio/dac/ad5766.c
617
st->chip_info = &ad5766_chip_infos[type];
drivers/iio/dac/ad5766.c
619
indio_dev->channels = st->chip_info->channels;
drivers/iio/dac/ad5766.c
620
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/dac/ad5766.c
625
st->gpio_reset = devm_gpiod_get_optional(&st->spi->dev, "reset",
drivers/iio/dac/ad5766.c
627
if (IS_ERR(st->gpio_reset))
drivers/iio/dac/ad5766.c
628
return PTR_ERR(st->gpio_reset);
drivers/iio/dac/ad5766.c
630
ret = ad5766_default_setup(st);
drivers/iio/dac/ad5770r.c
188
static int ad5770r_set_output_mode(struct ad5770r_state *st,
drivers/iio/dac/ad5770r.c
197
return regmap_write(st->regmap,
drivers/iio/dac/ad5770r.c
201
static int ad5770r_set_reference(struct ad5770r_state *st)
drivers/iio/dac/ad5770r.c
205
regval = AD5770R_REF_RESISTOR_SEL(st->external_res);
drivers/iio/dac/ad5770r.c
207
if (st->internal_ref) {
drivers/iio/dac/ad5770r.c
210
switch (st->vref) {
drivers/iio/dac/ad5770r.c
223
return regmap_write(st->regmap, AD5770R_REFERENCE, regval);
drivers/iio/dac/ad5770r.c
226
static int ad5770r_soft_reset(struct ad5770r_state *st)
drivers/iio/dac/ad5770r.c
228
return regmap_write(st->regmap, ADI_SPI_IF_CONFIG_A,
drivers/iio/dac/ad5770r.c
232
static int ad5770r_reset(struct ad5770r_state *st)
drivers/iio/dac/ad5770r.c
235
if (!st->gpio_reset)
drivers/iio/dac/ad5770r.c
236
return ad5770r_soft_reset(st);
drivers/iio/dac/ad5770r.c
238
gpiod_set_value_cansleep(st->gpio_reset, 0);
drivers/iio/dac/ad5770r.c
240
gpiod_set_value_cansleep(st->gpio_reset, 1);
drivers/iio/dac/ad5770r.c
248
static int ad5770r_get_range(struct ad5770r_state *st,
drivers/iio/dac/ad5770r.c
254
out_range = st->output_mode[ch].out_range_mode;
drivers/iio/dac/ad5770r.c
272
struct ad5770r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5770r.c
276
ret = regmap_read(st->regmap,
drivers/iio/dac/ad5770r.c
296
struct ad5770r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5770r.c
307
return regmap_write(st->regmap, AD5770R_FILTER_RESISTOR(chan->channel),
drivers/iio/dac/ad5770r.c
315
struct ad5770r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5770r.c
321
ret = regmap_bulk_read(st->regmap,
drivers/iio/dac/ad5770r.c
323
st->transf_buf, 2);
drivers/iio/dac/ad5770r.c
327
buf16 = get_unaligned_le16(st->transf_buf);
drivers/iio/dac/ad5770r.c
331
ret = ad5770r_get_range(st, chan->channel, &min, &max);
drivers/iio/dac/ad5770r.c
344
ret = ad5770r_get_range(st, chan->channel, &min, &max);
drivers/iio/dac/ad5770r.c
358
struct ad5770r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5770r.c
362
st->transf_buf[0] = ((u16)val >> 6);
drivers/iio/dac/ad5770r.c
363
st->transf_buf[1] = (val & GENMASK(5, 0)) << 2;
drivers/iio/dac/ad5770r.c
364
return regmap_bulk_write(st->regmap, chan->address,
drivers/iio/dac/ad5770r.c
365
st->transf_buf, 2);
drivers/iio/dac/ad5770r.c
394
struct ad5770r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5770r.c
397
return regmap_read(st->regmap, reg, readval);
drivers/iio/dac/ad5770r.c
399
return regmap_write(st->regmap, reg, writeval);
drivers/iio/dac/ad5770r.c
409
static int ad5770r_store_output_range(struct ad5770r_state *st,
drivers/iio/dac/ad5770r.c
420
st->output_mode[index].out_range_mode = ad5770r_rng_tbl[i].mode;
drivers/iio/dac/ad5770r.c
433
struct ad5770r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5770r.c
435
return sysfs_emit(buf, "%d\n", st->ch_pwr_down[chan->channel]);
drivers/iio/dac/ad5770r.c
443
struct ad5770r_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5770r.c
457
st->output_mode[0].out_range_mode > AD5770R_CH0_0_300) {
drivers/iio/dac/ad5770r.c
463
ret = regmap_update_bits(st->regmap, AD5770R_CHANNEL_CONFIG, mask,
drivers/iio/dac/ad5770r.c
469
ret = regmap_update_bits(st->regmap, AD5770R_CH_ENABLE,
drivers/iio/dac/ad5770r.c
474
st->ch_pwr_down[chan->channel] = !readin;
drivers/iio/dac/ad5770r.c
513
static int ad5770r_channel_config(struct ad5770r_state *st)
drivers/iio/dac/ad5770r.c
518
num = device_get_child_node_count(&st->spi->dev);
drivers/iio/dac/ad5770r.c
522
device_for_each_child_node_scoped(&st->spi->dev, child) {
drivers/iio/dac/ad5770r.c
537
ret = ad5770r_store_output_range(st, min, max, num);
drivers/iio/dac/ad5770r.c
545
static int ad5770r_init(struct ad5770r_state *st)
drivers/iio/dac/ad5770r.c
549
st->gpio_reset = devm_gpiod_get_optional(&st->spi->dev, "reset",
drivers/iio/dac/ad5770r.c
551
if (IS_ERR(st->gpio_reset))
drivers/iio/dac/ad5770r.c
552
return PTR_ERR(st->gpio_reset);
drivers/iio/dac/ad5770r.c
555
ret = ad5770r_reset(st);
drivers/iio/dac/ad5770r.c
560
ret = ad5770r_channel_config(st);
drivers/iio/dac/ad5770r.c
565
ret = ad5770r_set_output_mode(st, &st->output_mode[i], i);
drivers/iio/dac/ad5770r.c
570
st->external_res = fwnode_property_read_bool(st->spi->dev.fwnode,
drivers/iio/dac/ad5770r.c
573
ret = ad5770r_set_reference(st);
drivers/iio/dac/ad5770r.c
578
ret = regmap_write(st->regmap, AD5770R_CHANNEL_CONFIG, 0x00);
drivers/iio/dac/ad5770r.c
582
ret = regmap_write(st->regmap, AD5770R_CH_ENABLE, 0x00);
drivers/iio/dac/ad5770r.c
587
st->ch_pwr_down[i] = true;
drivers/iio/dac/ad5770r.c
594
struct ad5770r_state *st;
drivers/iio/dac/ad5770r.c
599
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5770r.c
603
st = iio_priv(indio_dev);
drivers/iio/dac/ad5770r.c
606
st->spi = spi;
drivers/iio/dac/ad5770r.c
614
st->regmap = regmap;
drivers/iio/dac/ad5770r.c
620
st->internal_ref = ret == -ENODEV;
drivers/iio/dac/ad5770r.c
621
st->vref = st->internal_ref ? AD5770R_LOW_VREF_mV : ret / 1000;
drivers/iio/dac/ad5770r.c
629
ret = ad5770r_init(st);
drivers/iio/dac/ad5770r.c
635
return devm_iio_device_register(&st->spi->dev, indio_dev);
drivers/iio/dac/ad5791.c
122
static int ad5791_spi_write(struct ad5791_state *st, u8 addr, u32 val)
drivers/iio/dac/ad5791.c
124
st->data[0].d32 = cpu_to_be32(AD5791_CMD_WRITE |
drivers/iio/dac/ad5791.c
128
return spi_write(st->spi, &st->data[0].d8[1], 3);
drivers/iio/dac/ad5791.c
131
static int ad5791_spi_read(struct ad5791_state *st, u8 addr, u32 *val)
drivers/iio/dac/ad5791.c
136
.tx_buf = &st->data[0].d8[1],
drivers/iio/dac/ad5791.c
140
.tx_buf = &st->data[1].d8[1],
drivers/iio/dac/ad5791.c
141
.rx_buf = &st->data[2].d8[1],
drivers/iio/dac/ad5791.c
146
st->data[0].d32 = cpu_to_be32(AD5791_CMD_READ |
drivers/iio/dac/ad5791.c
148
st->data[1].d32 = cpu_to_be32(AD5791_ADDR(AD5791_ADDR_NOOP));
drivers/iio/dac/ad5791.c
150
ret = spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/dac/ad5791.c
152
*val = be32_to_cpu(st->data[2].d32);
drivers/iio/dac/ad5791.c
165
struct ad5791_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
167
return st->pwr_down_mode;
drivers/iio/dac/ad5791.c
173
struct ad5791_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
175
st->pwr_down_mode = mode;
drivers/iio/dac/ad5791.c
190
struct ad5791_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
192
return sysfs_emit(buf, "%d\n", st->pwr_down);
drivers/iio/dac/ad5791.c
201
struct ad5791_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
208
st->ctrl &= ~(AD5791_CTRL_OPGND | AD5791_CTRL_DACTRI);
drivers/iio/dac/ad5791.c
210
if (st->pwr_down_mode == AD5791_DAC_PWRDN_6K)
drivers/iio/dac/ad5791.c
211
st->ctrl |= AD5791_CTRL_OPGND;
drivers/iio/dac/ad5791.c
212
else if (st->pwr_down_mode == AD5791_DAC_PWRDN_3STATE)
drivers/iio/dac/ad5791.c
213
st->ctrl |= AD5791_CTRL_DACTRI;
drivers/iio/dac/ad5791.c
215
st->pwr_down = pwr_down;
drivers/iio/dac/ad5791.c
217
ret = ad5791_spi_write(st, AD5791_ADDR_CTRL, st->ctrl);
drivers/iio/dac/ad5791.c
244
static int ad5791_set_sample_freq(struct ad5791_state *st, int val)
drivers/iio/dac/ad5791.c
254
ret = spi_offload_trigger_validate(st->offload_trigger, &config);
drivers/iio/dac/ad5791.c
258
st->offload_trigger_hz = config.periodic.frequency_hz;
drivers/iio/dac/ad5791.c
269
struct ad5791_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
275
ret = ad5791_spi_read(st, chan->address, val);
drivers/iio/dac/ad5791.c
282
*val = st->vref_mv;
drivers/iio/dac/ad5791.c
286
val64 = (((u64)st->vref_neg_mv) << chan->scan_type.realbits);
drivers/iio/dac/ad5791.c
287
do_div(val64, st->vref_mv);
drivers/iio/dac/ad5791.c
291
*val = st->offload_trigger_hz;
drivers/iio/dac/ad5791.c
365
struct ad5791_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
372
return ad5791_spi_write(st, chan->address, val);
drivers/iio/dac/ad5791.c
377
return ad5791_set_sample_freq(st, val);
drivers/iio/dac/ad5791.c
397
struct ad5791_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
401
.frequency_hz = st->offload_trigger_hz,
drivers/iio/dac/ad5791.c
405
if (st->pwr_down)
drivers/iio/dac/ad5791.c
408
return spi_offload_trigger_enable(st->offload, st->offload_trigger,
drivers/iio/dac/ad5791.c
414
struct ad5791_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
416
spi_offload_trigger_disable(st->offload, st->offload_trigger);
drivers/iio/dac/ad5791.c
428
struct ad5791_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
429
struct spi_device *spi = st->spi;
drivers/iio/dac/ad5791.c
433
st->offload_trigger = devm_spi_offload_trigger_get(&spi->dev,
drivers/iio/dac/ad5791.c
434
st->offload, SPI_OFFLOAD_TRIGGER_PERIODIC);
drivers/iio/dac/ad5791.c
435
if (IS_ERR(st->offload_trigger))
drivers/iio/dac/ad5791.c
436
return dev_err_probe(&spi->dev, PTR_ERR(st->offload_trigger),
drivers/iio/dac/ad5791.c
439
ret = ad5791_set_sample_freq(st, 1 * MEGA);
drivers/iio/dac/ad5791.c
445
st->offload);
drivers/iio/dac/ad5791.c
455
st->offload_xfer.len = 4;
drivers/iio/dac/ad5791.c
456
st->offload_xfer.bits_per_word = 24;
drivers/iio/dac/ad5791.c
457
st->offload_xfer.offload_flags = SPI_OFFLOAD_XFER_TX_STREAM;
drivers/iio/dac/ad5791.c
459
spi_message_init_with_transfers(&st->offload_msg, &st->offload_xfer, 1);
drivers/iio/dac/ad5791.c
460
st->offload_msg.offload = st->offload;
drivers/iio/dac/ad5791.c
462
return devm_spi_optimize_message(&spi->dev, st->spi, &st->offload_msg);
drivers/iio/dac/ad5791.c
480
struct ad5791_state *st;
drivers/iio/dac/ad5791.c
484
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad5791.c
487
st = iio_priv(indio_dev);
drivers/iio/dac/ad5791.c
489
st->gpio_reset = devm_gpiod_get_optional(&spi->dev, "reset",
drivers/iio/dac/ad5791.c
491
if (IS_ERR(st->gpio_reset))
drivers/iio/dac/ad5791.c
492
return PTR_ERR(st->gpio_reset);
drivers/iio/dac/ad5791.c
494
st->gpio_clear = devm_gpiod_get_optional(&spi->dev, "clear",
drivers/iio/dac/ad5791.c
496
if (IS_ERR(st->gpio_clear))
drivers/iio/dac/ad5791.c
497
return PTR_ERR(st->gpio_clear);
drivers/iio/dac/ad5791.c
499
st->gpio_ldac = devm_gpiod_get_optional(&spi->dev, "ldac",
drivers/iio/dac/ad5791.c
501
if (IS_ERR(st->gpio_ldac))
drivers/iio/dac/ad5791.c
502
return PTR_ERR(st->gpio_ldac);
drivers/iio/dac/ad5791.c
504
st->pwr_down = true;
drivers/iio/dac/ad5791.c
505
st->spi = spi;
drivers/iio/dac/ad5791.c
524
st->vref_mv = (pos_voltage_uv + neg_voltage_uv) / 1000;
drivers/iio/dac/ad5791.c
525
st->vref_neg_mv = neg_voltage_uv / 1000;
drivers/iio/dac/ad5791.c
527
st->vref_mv = pdata->vref_pos_mv + pdata->vref_neg_mv;
drivers/iio/dac/ad5791.c
528
st->vref_neg_mv = pdata->vref_neg_mv;
drivers/iio/dac/ad5791.c
533
if (st->gpio_reset) {
drivers/iio/dac/ad5791.c
535
gpiod_set_value_cansleep(st->gpio_reset, 0);
drivers/iio/dac/ad5791.c
537
ret = ad5791_spi_write(st, AD5791_ADDR_SW_CTRL, AD5791_SWCTRL_RESET);
drivers/iio/dac/ad5791.c
542
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/dac/ad5791.c
543
if (!st->chip_info)
drivers/iio/dac/ad5791.c
546
st->ctrl = AD5761_CTRL_LINCOMP(st->chip_info->get_lin_comp(st->vref_mv))
drivers/iio/dac/ad5791.c
550
ret = ad5791_spi_write(st, AD5791_ADDR_CTRL, st->ctrl |
drivers/iio/dac/ad5791.c
557
indio_dev->channels = &st->chip_info->channel;
drivers/iio/dac/ad5791.c
559
indio_dev->name = st->chip_info->name;
drivers/iio/dac/ad5791.c
561
st->offload = devm_spi_offload_get(&spi->dev, spi, &ad5791_offload_config);
drivers/iio/dac/ad5791.c
562
ret = PTR_ERR_OR_ZERO(st->offload);
drivers/iio/dac/ad5791.c
567
indio_dev->channels = &st->chip_info->channel_offload;
drivers/iio/dac/ad7293.c
149
static int ad7293_page_select(struct ad7293_state *st, unsigned int reg)
drivers/iio/dac/ad7293.c
153
if (st->page_select != FIELD_GET(AD7293_PAGE_ADDR_MSK, reg)) {
drivers/iio/dac/ad7293.c
154
st->data[0] = FIELD_GET(AD7293_REG_ADDR_MSK, AD7293_REG_PAGE_SELECT);
drivers/iio/dac/ad7293.c
155
st->data[1] = FIELD_GET(AD7293_PAGE_ADDR_MSK, reg);
drivers/iio/dac/ad7293.c
157
ret = spi_write(st->spi, &st->data[0], 2);
drivers/iio/dac/ad7293.c
161
st->page_select = FIELD_GET(AD7293_PAGE_ADDR_MSK, reg);
drivers/iio/dac/ad7293.c
167
static int __ad7293_spi_read(struct ad7293_state *st, unsigned int reg,
drivers/iio/dac/ad7293.c
176
ret = ad7293_page_select(st, reg);
drivers/iio/dac/ad7293.c
180
st->data[0] = AD7293_READ | FIELD_GET(AD7293_REG_ADDR_MSK, reg);
drivers/iio/dac/ad7293.c
181
st->data[1] = 0x0;
drivers/iio/dac/ad7293.c
182
st->data[2] = 0x0;
drivers/iio/dac/ad7293.c
184
t.tx_buf = &st->data[0];
drivers/iio/dac/ad7293.c
185
t.rx_buf = &st->data[0];
drivers/iio/dac/ad7293.c
188
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/dac/ad7293.c
193
*val = st->data[1];
drivers/iio/dac/ad7293.c
195
*val = get_unaligned_be16(&st->data[1]);
drivers/iio/dac/ad7293.c
200
static int ad7293_spi_read(struct ad7293_state *st, unsigned int reg,
drivers/iio/dac/ad7293.c
205
mutex_lock(&st->lock);
drivers/iio/dac/ad7293.c
206
ret = __ad7293_spi_read(st, reg, val);
drivers/iio/dac/ad7293.c
207
mutex_unlock(&st->lock);
drivers/iio/dac/ad7293.c
212
static int __ad7293_spi_write(struct ad7293_state *st, unsigned int reg,
drivers/iio/dac/ad7293.c
220
ret = ad7293_page_select(st, reg);
drivers/iio/dac/ad7293.c
224
st->data[0] = FIELD_GET(AD7293_REG_ADDR_MSK, reg);
drivers/iio/dac/ad7293.c
227
st->data[1] = val;
drivers/iio/dac/ad7293.c
229
put_unaligned_be16(val, &st->data[1]);
drivers/iio/dac/ad7293.c
231
return spi_write(st->spi, &st->data[0], length + 1);
drivers/iio/dac/ad7293.c
234
static int ad7293_spi_write(struct ad7293_state *st, unsigned int reg,
drivers/iio/dac/ad7293.c
239
mutex_lock(&st->lock);
drivers/iio/dac/ad7293.c
240
ret = __ad7293_spi_write(st, reg, val);
drivers/iio/dac/ad7293.c
241
mutex_unlock(&st->lock);
drivers/iio/dac/ad7293.c
246
static int __ad7293_spi_update_bits(struct ad7293_state *st, unsigned int reg,
drivers/iio/dac/ad7293.c
252
ret = __ad7293_spi_read(st, reg, &data);
drivers/iio/dac/ad7293.c
258
return __ad7293_spi_write(st, reg, temp);
drivers/iio/dac/ad7293.c
261
static int ad7293_spi_update_bits(struct ad7293_state *st, unsigned int reg,
drivers/iio/dac/ad7293.c
266
mutex_lock(&st->lock);
drivers/iio/dac/ad7293.c
267
ret = __ad7293_spi_update_bits(st, reg, mask, val);
drivers/iio/dac/ad7293.c
268
mutex_unlock(&st->lock);
drivers/iio/dac/ad7293.c
273
static int ad7293_adc_get_scale(struct ad7293_state *st, unsigned int ch,
drivers/iio/dac/ad7293.c
279
mutex_lock(&st->lock);
drivers/iio/dac/ad7293.c
281
ret = __ad7293_spi_read(st, AD7293_REG_VINX_RANGE1, &data);
drivers/iio/dac/ad7293.c
287
ret = __ad7293_spi_read(st, AD7293_REG_VINX_RANGE0, &data);
drivers/iio/dac/ad7293.c
294
mutex_unlock(&st->lock);
drivers/iio/dac/ad7293.c
299
static int ad7293_adc_set_scale(struct ad7293_state *st, unsigned int ch,
drivers/iio/dac/ad7293.c
305
mutex_lock(&st->lock);
drivers/iio/dac/ad7293.c
306
ret = __ad7293_spi_update_bits(st, AD7293_REG_VINX_RANGE1, ch_msk,
drivers/iio/dac/ad7293.c
311
ret = __ad7293_spi_update_bits(st, AD7293_REG_VINX_RANGE0, ch_msk,
drivers/iio/dac/ad7293.c
315
mutex_unlock(&st->lock);
drivers/iio/dac/ad7293.c
320
static int ad7293_get_offset(struct ad7293_state *st, unsigned int ch,
drivers/iio/dac/ad7293.c
324
return ad7293_spi_read(st, AD7293_REG_VIN0_OFFSET + ch, offset);
drivers/iio/dac/ad7293.c
326
return ad7293_spi_read(st, AD7293_REG_TSENSE_INT_OFFSET + (ch - 4), offset);
drivers/iio/dac/ad7293.c
328
return ad7293_spi_read(st, AD7293_REG_ISENSE0_OFFSET + (ch - 7), offset);
drivers/iio/dac/ad7293.c
330
return ad7293_spi_read(st, AD7293_REG_UNI_VOUT0_OFFSET + (ch - 11), offset);
drivers/iio/dac/ad7293.c
335
static int ad7293_set_offset(struct ad7293_state *st, unsigned int ch,
drivers/iio/dac/ad7293.c
339
return ad7293_spi_write(st, AD7293_REG_VIN0_OFFSET + ch,
drivers/iio/dac/ad7293.c
342
return ad7293_spi_write(st,
drivers/iio/dac/ad7293.c
347
return ad7293_spi_write(st,
drivers/iio/dac/ad7293.c
352
return ad7293_spi_update_bits(st,
drivers/iio/dac/ad7293.c
361
static int ad7293_isense_set_scale(struct ad7293_state *st, unsigned int ch,
drivers/iio/dac/ad7293.c
366
return ad7293_spi_update_bits(st, AD7293_REG_ISENSE_GAIN, ch_msk,
drivers/iio/dac/ad7293.c
370
static int ad7293_isense_get_scale(struct ad7293_state *st, unsigned int ch,
drivers/iio/dac/ad7293.c
375
ret = ad7293_spi_read(st, AD7293_REG_ISENSE_GAIN, gain);
drivers/iio/dac/ad7293.c
384
static int ad7293_dac_write_raw(struct ad7293_state *st, unsigned int ch,
drivers/iio/dac/ad7293.c
389
mutex_lock(&st->lock);
drivers/iio/dac/ad7293.c
391
ret = __ad7293_spi_update_bits(st, AD7293_REG_DAC_EN, BIT(ch), BIT(ch));
drivers/iio/dac/ad7293.c
395
ret = __ad7293_spi_write(st, AD7293_REG_UNI_VOUT0 + ch,
drivers/iio/dac/ad7293.c
399
mutex_unlock(&st->lock);
drivers/iio/dac/ad7293.c
404
static int ad7293_ch_read_raw(struct ad7293_state *st, enum ad7293_ch_type type,
drivers/iio/dac/ad7293.c
437
mutex_lock(&st->lock);
drivers/iio/dac/ad7293.c
441
ret = __ad7293_spi_write(st, AD7293_REG_TSENSE_BG_EN,
drivers/iio/dac/ad7293.c
448
ret = __ad7293_spi_write(st, AD7293_REG_ISENSE_BG_EN,
drivers/iio/dac/ad7293.c
456
ret = __ad7293_spi_write(st, reg_wr, data_wr);
drivers/iio/dac/ad7293.c
460
ret = __ad7293_spi_write(st, AD7293_REG_CONV_CMD, 0x82);
drivers/iio/dac/ad7293.c
465
ret = __ad7293_spi_read(st, reg_rd, raw);
drivers/iio/dac/ad7293.c
470
mutex_unlock(&st->lock);
drivers/iio/dac/ad7293.c
479
struct ad7293_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad7293.c
488
ret = ad7293_ch_read_raw(st, AD7293_DAC,
drivers/iio/dac/ad7293.c
491
ret = ad7293_ch_read_raw(st, AD7293_ADC_VINX,
drivers/iio/dac/ad7293.c
496
ret = ad7293_ch_read_raw(st, AD7293_ADC_ISENSE,
drivers/iio/dac/ad7293.c
501
ret = ad7293_ch_read_raw(st, AD7293_ADC_TSENSE,
drivers/iio/dac/ad7293.c
519
ret = ad7293_get_offset(st,
drivers/iio/dac/ad7293.c
525
ret = ad7293_get_offset(st, chan->channel, &data);
drivers/iio/dac/ad7293.c
530
ret = ad7293_get_offset(st,
drivers/iio/dac/ad7293.c
536
ret = ad7293_get_offset(st,
drivers/iio/dac/ad7293.c
553
ret = ad7293_adc_get_scale(st, chan->channel, &data);
drivers/iio/dac/ad7293.c
561
ret = ad7293_isense_get_scale(st, chan->channel, &data);
drivers/iio/dac/ad7293.c
585
struct ad7293_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad7293.c
594
return ad7293_dac_write_raw(st, chan->channel, val);
drivers/iio/dac/ad7293.c
602
return ad7293_set_offset(st,
drivers/iio/dac/ad7293.c
607
return ad7293_set_offset(st, chan->channel, val);
drivers/iio/dac/ad7293.c
609
return ad7293_set_offset(st,
drivers/iio/dac/ad7293.c
614
return ad7293_set_offset(st,
drivers/iio/dac/ad7293.c
624
return ad7293_adc_set_scale(st, chan->channel, val);
drivers/iio/dac/ad7293.c
626
return ad7293_isense_set_scale(st, chan->channel, val);
drivers/iio/dac/ad7293.c
640
struct ad7293_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad7293.c
645
ret = ad7293_spi_read(st, reg, &temp);
drivers/iio/dac/ad7293.c
648
ret = ad7293_spi_write(st, reg, (u16)write_val);
drivers/iio/dac/ad7293.c
750
static int ad7293_soft_reset(struct ad7293_state *st)
drivers/iio/dac/ad7293.c
754
ret = __ad7293_spi_write(st, AD7293_REG_SOFT_RESET, 0x7293);
drivers/iio/dac/ad7293.c
758
return __ad7293_spi_write(st, AD7293_REG_SOFT_RESET, 0x0000);
drivers/iio/dac/ad7293.c
761
static int ad7293_reset(struct ad7293_state *st)
drivers/iio/dac/ad7293.c
763
if (st->gpio_reset) {
drivers/iio/dac/ad7293.c
764
gpiod_set_value(st->gpio_reset, 0);
drivers/iio/dac/ad7293.c
766
gpiod_set_value(st->gpio_reset, 1);
drivers/iio/dac/ad7293.c
773
return ad7293_soft_reset(st);
drivers/iio/dac/ad7293.c
776
static int ad7293_properties_parse(struct ad7293_state *st)
drivers/iio/dac/ad7293.c
778
struct device *dev = &st->spi->dev;
drivers/iio/dac/ad7293.c
793
st->vrefin_en = ret != -ENODEV;
drivers/iio/dac/ad7293.c
795
st->gpio_reset = devm_gpiod_get_optional(dev, "reset",
drivers/iio/dac/ad7293.c
797
if (IS_ERR(st->gpio_reset))
drivers/iio/dac/ad7293.c
798
return dev_err_probe(dev, PTR_ERR(st->gpio_reset),
drivers/iio/dac/ad7293.c
804
static int ad7293_init(struct ad7293_state *st)
drivers/iio/dac/ad7293.c
808
struct device *dev = &st->spi->dev;
drivers/iio/dac/ad7293.c
810
ret = ad7293_properties_parse(st);
drivers/iio/dac/ad7293.c
814
ret = ad7293_reset(st);
drivers/iio/dac/ad7293.c
819
ret = __ad7293_spi_read(st, AD7293_REG_DEVICE_ID, &chip_id);
drivers/iio/dac/ad7293.c
826
if (!st->vrefin_en)
drivers/iio/dac/ad7293.c
827
return __ad7293_spi_update_bits(st, AD7293_REG_GENERAL,
drivers/iio/dac/ad7293.c
844
struct ad7293_state *st;
drivers/iio/dac/ad7293.c
848
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ad7293.c
852
st = iio_priv(indio_dev);
drivers/iio/dac/ad7293.c
859
st->spi = spi;
drivers/iio/dac/ad7293.c
860
st->page_select = 0;
drivers/iio/dac/ad7293.c
862
mutex_init(&st->lock);
drivers/iio/dac/ad7293.c
864
ret = ad7293_init(st);
drivers/iio/dac/ad7303.c
103
if (st->config & AD7303_CFG_EXTERNAL_VREF)
drivers/iio/dac/ad7303.c
104
return regulator_get_voltage(st->vref_reg);
drivers/iio/dac/ad7303.c
106
ret = regulator_get_voltage(st->vdd_reg);
drivers/iio/dac/ad7303.c
115
struct ad7303_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad7303.c
120
mutex_lock(&st->lock);
drivers/iio/dac/ad7303.c
121
*val = st->dac_cache[chan->channel];
drivers/iio/dac/ad7303.c
122
mutex_unlock(&st->lock);
drivers/iio/dac/ad7303.c
125
vref_uv = ad7303_get_vref(st, chan);
drivers/iio/dac/ad7303.c
142
struct ad7303_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad7303.c
150
mutex_lock(&st->lock);
drivers/iio/dac/ad7303.c
151
ret = ad7303_write(st, chan->address, val);
drivers/iio/dac/ad7303.c
153
st->dac_cache[chan->channel] = val;
drivers/iio/dac/ad7303.c
154
mutex_unlock(&st->lock);
drivers/iio/dac/ad7303.c
209
struct ad7303_state *st;
drivers/iio/dac/ad7303.c
212
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ad7303.c
216
st = iio_priv(indio_dev);
drivers/iio/dac/ad7303.c
218
st->spi = spi;
drivers/iio/dac/ad7303.c
220
ret = devm_mutex_init(&spi->dev, &st->lock);
drivers/iio/dac/ad7303.c
224
st->vdd_reg = devm_regulator_get(&spi->dev, "Vdd");
drivers/iio/dac/ad7303.c
225
if (IS_ERR(st->vdd_reg))
drivers/iio/dac/ad7303.c
226
return PTR_ERR(st->vdd_reg);
drivers/iio/dac/ad7303.c
228
ret = regulator_enable(st->vdd_reg);
drivers/iio/dac/ad7303.c
232
ret = devm_add_action_or_reset(&spi->dev, ad7303_reg_disable, st->vdd_reg);
drivers/iio/dac/ad7303.c
236
st->vref_reg = devm_regulator_get_optional(&spi->dev, "REF");
drivers/iio/dac/ad7303.c
237
if (IS_ERR(st->vref_reg)) {
drivers/iio/dac/ad7303.c
238
ret = PTR_ERR(st->vref_reg);
drivers/iio/dac/ad7303.c
241
st->vref_reg = NULL;
drivers/iio/dac/ad7303.c
244
if (st->vref_reg) {
drivers/iio/dac/ad7303.c
245
ret = regulator_enable(st->vref_reg);
drivers/iio/dac/ad7303.c
250
st->vref_reg);
drivers/iio/dac/ad7303.c
254
st->config |= AD7303_CFG_EXTERNAL_VREF;
drivers/iio/dac/ad7303.c
52
static int ad7303_write(struct ad7303_state *st, unsigned int chan,
drivers/iio/dac/ad7303.c
55
st->data = cpu_to_be16(AD7303_CMD_UPDATE_DAC |
drivers/iio/dac/ad7303.c
57
st->config | val);
drivers/iio/dac/ad7303.c
59
return spi_write(st->spi, &st->data, sizeof(st->data));
drivers/iio/dac/ad7303.c
65
struct ad7303_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad7303.c
67
return sysfs_emit(buf, "%d\n", (bool)(st->config &
drivers/iio/dac/ad7303.c
75
struct ad7303_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad7303.c
83
mutex_lock(&st->lock);
drivers/iio/dac/ad7303.c
86
st->config |= AD7303_CFG_POWER_DOWN(chan->channel);
drivers/iio/dac/ad7303.c
88
st->config &= ~AD7303_CFG_POWER_DOWN(chan->channel);
drivers/iio/dac/ad7303.c
92
ad7303_write(st, chan->channel, st->dac_cache[chan->channel]);
drivers/iio/dac/ad7303.c
94
mutex_unlock(&st->lock);
drivers/iio/dac/ad7303.c
98
static int ad7303_get_vref(struct ad7303_state *st,
drivers/iio/dac/ad9739a.c
106
struct ad9739a_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad9739a.c
115
return regmap_update_bits(st->regmap, AD9739A_REG_DEC_CNT,
drivers/iio/dac/ad9739a.c
123
struct ad9739a_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad9739a.c
127
*val = st->sample_rate;
drivers/iio/dac/ad9739a.c
137
struct ad9739a_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad9739a.c
139
return iio_backend_data_source_set(st->back, 0, IIO_BACKEND_EXTERNAL);
drivers/iio/dac/ad9739a.c
144
struct ad9739a_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad9739a.c
146
return iio_backend_data_source_set(st->back, 0,
drivers/iio/dac/ad9739a.c
160
static int ad9739a_reset(struct device *dev, const struct ad9739a_state *st)
drivers/iio/dac/ad9739a.c
176
ret = regmap_set_bits(st->regmap, AD9739A_REG_MODE, AD9739A_RESET_MASK);
drivers/iio/dac/ad9739a.c
182
return regmap_clear_bits(st->regmap, AD9739A_REG_MODE,
drivers/iio/dac/ad9739a.c
201
static int ad9739a_init(struct device *dev, const struct ad9739a_state *st)
drivers/iio/dac/ad9739a.c
207
ret = regmap_multi_reg_write(st->regmap, ad9739a_clk_mu_ctrl,
drivers/iio/dac/ad9739a.c
217
ret = regmap_write(st->regmap, AD9739A_REG_MU_CNT4,
drivers/iio/dac/ad9739a.c
223
ret = regmap_write(st->regmap, AD9739A_REG_MU_CNT1,
drivers/iio/dac/ad9739a.c
229
ret = regmap_read_poll_timeout(st->regmap, AD9739A_REG_MU_STAT1,
drivers/iio/dac/ad9739a.c
242
ret = regmap_update_bits(st->regmap, AD9739A_REG_LVDS_REC_CNT4,
drivers/iio/dac/ad9739a.c
249
ret = regmap_write(st->regmap, AD9739A_REG_LVDS_REC_CNT1, 0);
drivers/iio/dac/ad9739a.c
257
ret = regmap_set_bits(st->regmap, AD9739A_REG_LVDS_REC_CNT1,
drivers/iio/dac/ad9739a.c
263
ret = regmap_read_poll_timeout(st->regmap,
drivers/iio/dac/ad9739a.c
291
ret = regmap_write(st->regmap, AD9739A_REG_FSC_1, fsc_raw & 0xff);
drivers/iio/dac/ad9739a.c
295
return regmap_update_bits(st->regmap, AD9739A_REG_FSC_2,
drivers/iio/dac/ad9739a.c
365
struct ad9739a_state *st;
drivers/iio/dac/ad9739a.c
370
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ad9739a.c
374
st = iio_priv(indio_dev);
drivers/iio/dac/ad9739a.c
380
st->sample_rate = clk_get_rate(clk);
drivers/iio/dac/ad9739a.c
381
if (!in_range(st->sample_rate, AD9739A_MIN_DAC_CLK,
drivers/iio/dac/ad9739a.c
385
st->sample_rate, AD9739A_MIN_DAC_CLK,
drivers/iio/dac/ad9739a.c
388
st->regmap = devm_regmap_init_spi(spi, &ad9739a_regmap_config);
drivers/iio/dac/ad9739a.c
389
if (IS_ERR(st->regmap))
drivers/iio/dac/ad9739a.c
390
return PTR_ERR(st->regmap);
drivers/iio/dac/ad9739a.c
392
ret = regmap_read(st->regmap, AD9739A_REG_ID, &id);
drivers/iio/dac/ad9739a.c
399
ret = ad9739a_reset(dev, st);
drivers/iio/dac/ad9739a.c
403
ret = ad9739a_init(dev, st);
drivers/iio/dac/ad9739a.c
407
st->back = devm_iio_backend_get(dev, NULL);
drivers/iio/dac/ad9739a.c
408
if (IS_ERR(st->back))
drivers/iio/dac/ad9739a.c
409
return PTR_ERR(st->back);
drivers/iio/dac/ad9739a.c
411
ret = devm_iio_backend_request_buffer(dev, st->back, indio_dev);
drivers/iio/dac/ad9739a.c
415
ret = iio_backend_extend_chan_spec(st->back, &ad9739a_channels[0]);
drivers/iio/dac/ad9739a.c
419
ret = iio_backend_set_sampling_freq(st->back, 0, st->sample_rate);
drivers/iio/dac/ad9739a.c
423
ret = devm_iio_backend_enable(dev, st->back);
drivers/iio/dac/ad9739a.c
437
iio_backend_debugfs_add(st->back, indio_dev);
drivers/iio/dac/ad9739a.c
81
struct ad9739a_state *st = iio_priv(indio_dev);
drivers/iio/dac/ad9739a.c
85
ret = regmap_read(st->regmap, AD9739A_REG_DEC_CNT, &mode);
drivers/iio/dac/adi-axi-dac.c
121
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
125
guard(mutex)(&st->lock);
drivers/iio/dac/adi-axi-dac.c
126
ret = regmap_set_bits(st->regmap, AXI_DAC_RSTN_REG,
drivers/iio/dac/adi-axi-dac.c
135
ret = regmap_read_poll_timeout(st->regmap, AXI_DAC_DRP_STATUS_REG,
drivers/iio/dac/adi-axi-dac.c
142
return regmap_set_bits(st->regmap, AXI_DAC_RSTN_REG,
drivers/iio/dac/adi-axi-dac.c
148
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
150
guard(mutex)(&st->lock);
drivers/iio/dac/adi-axi-dac.c
151
regmap_write(st->regmap, AXI_DAC_RSTN_REG, 0);
drivers/iio/dac/adi-axi-dac.c
157
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
160
if (device_property_read_string(st->dev, "dma-names", &dma_name))
drivers/iio/dac/adi-axi-dac.c
163
return iio_dmaengine_buffer_setup_ext(st->dev, indio_dev, dma_name,
drivers/iio/dac/adi-axi-dac.c
182
static int __axi_dac_frequency_get(struct axi_dac_state *st, unsigned int chan,
drivers/iio/dac/adi-axi-dac.c
191
if (!st->dac_clk) {
drivers/iio/dac/adi-axi-dac.c
192
dev_err(st->dev, "Sampling rate is 0...\n");
drivers/iio/dac/adi-axi-dac.c
201
ret = regmap_read(st->regmap, reg, &raw);
drivers/iio/dac/adi-axi-dac.c
206
*freq = DIV_ROUND_CLOSEST_ULL(raw * st->dac_clk, BIT(16));
drivers/iio/dac/adi-axi-dac.c
211
static int axi_dac_frequency_get(struct axi_dac_state *st,
drivers/iio/dac/adi-axi-dac.c
218
scoped_guard(mutex, &st->lock) {
drivers/iio/dac/adi-axi-dac.c
219
ret = __axi_dac_frequency_get(st, chan->channel, tone_2, &freq);
drivers/iio/dac/adi-axi-dac.c
227
static int axi_dac_scale_get(struct axi_dac_state *st,
drivers/iio/dac/adi-axi-dac.c
243
ret = regmap_read(st->regmap, reg, &raw);
drivers/iio/dac/adi-axi-dac.c
265
static int axi_dac_phase_get(struct axi_dac_state *st,
drivers/iio/dac/adi-axi-dac.c
280
ret = regmap_read(st->regmap, reg, &raw);
drivers/iio/dac/adi-axi-dac.c
294
static int __axi_dac_frequency_set(struct axi_dac_state *st, unsigned int chan,
drivers/iio/dac/adi-axi-dac.c
306
dev_err(st->dev, "Invalid frequency(%u) dac_clk(%llu)\n",
drivers/iio/dac/adi-axi-dac.c
318
ret = regmap_update_bits(st->regmap, reg,
drivers/iio/dac/adi-axi-dac.c
324
return regmap_set_bits(st->regmap, AXI_DAC_CNTRL_1_REG,
drivers/iio/dac/adi-axi-dac.c
328
static int axi_dac_frequency_set(struct axi_dac_state *st,
drivers/iio/dac/adi-axi-dac.c
339
guard(mutex)(&st->lock);
drivers/iio/dac/adi-axi-dac.c
340
ret = __axi_dac_frequency_set(st, chan->channel, st->dac_clk, freq,
drivers/iio/dac/adi-axi-dac.c
348
static int axi_dac_scale_set(struct axi_dac_state *st,
drivers/iio/dac/adi-axi-dac.c
380
guard(mutex)(&st->lock);
drivers/iio/dac/adi-axi-dac.c
381
ret = regmap_write(st->regmap, reg, raw);
drivers/iio/dac/adi-axi-dac.c
386
ret = regmap_set_bits(st->regmap, AXI_DAC_CNTRL_1_REG,
drivers/iio/dac/adi-axi-dac.c
394
static int axi_dac_phase_set(struct axi_dac_state *st,
drivers/iio/dac/adi-axi-dac.c
420
guard(mutex)(&st->lock);
drivers/iio/dac/adi-axi-dac.c
421
ret = regmap_update_bits(st->regmap, reg, AXI_DAC_CHAN_CNTRL_2_PHASE,
drivers/iio/dac/adi-axi-dac.c
427
ret = regmap_set_bits(st->regmap, AXI_DAC_CNTRL_1_REG,
drivers/iio/dac/adi-axi-dac.c
439
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
444
return axi_dac_frequency_set(st, chan, buf, len,
drivers/iio/dac/adi-axi-dac.c
448
return axi_dac_scale_set(st, chan, buf, len,
drivers/iio/dac/adi-axi-dac.c
452
return axi_dac_phase_set(st, chan, buf, len,
drivers/iio/dac/adi-axi-dac.c
462
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
467
return axi_dac_frequency_get(st, chan, buf,
drivers/iio/dac/adi-axi-dac.c
471
return axi_dac_scale_get(st, chan, buf,
drivers/iio/dac/adi-axi-dac.c
475
return axi_dac_phase_get(st, chan, buf,
drivers/iio/dac/adi-axi-dac.c
495
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
499
if (st->reg_config & AXI_DAC_CONFIG_DDS_DISABLE)
drivers/iio/dac/adi-axi-dac.c
511
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
518
return regmap_update_bits(st->regmap,
drivers/iio/dac/adi-axi-dac.c
523
return regmap_update_bits(st->regmap,
drivers/iio/dac/adi-axi-dac.c
528
return regmap_update_bits(st->regmap,
drivers/iio/dac/adi-axi-dac.c
540
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
547
ret = regmap_read(st->regmap, AXI_DAC_CHAN_CNTRL_7_REG(chan), &val);
drivers/iio/dac/adi-axi-dac.c
569
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
577
if (st->reg_config & AXI_DAC_CONFIG_DDS_DISABLE)
drivers/iio/dac/adi-axi-dac.c
581
guard(mutex)(&st->lock);
drivers/iio/dac/adi-axi-dac.c
589
if (!st->dac_clk) {
drivers/iio/dac/adi-axi-dac.c
590
st->dac_clk = sample_rate;
drivers/iio/dac/adi-axi-dac.c
595
ret = __axi_dac_frequency_get(st, chan, tone, &freq);
drivers/iio/dac/adi-axi-dac.c
599
ret = __axi_dac_frequency_set(st, chan, sample_rate, tone, freq);
drivers/iio/dac/adi-axi-dac.c
604
st->dac_clk = sample_rate;
drivers/iio/dac/adi-axi-dac.c
612
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
615
return regmap_read(st->regmap, reg, readval);
drivers/iio/dac/adi-axi-dac.c
617
return regmap_write(st->regmap, reg, writeval);
drivers/iio/dac/adi-axi-dac.c
622
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
624
return regmap_clear_bits(st->regmap, AXI_DAC_CNTRL_2_REG,
drivers/iio/dac/adi-axi-dac.c
630
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
632
return regmap_set_bits(st->regmap, AXI_DAC_CNTRL_2_REG,
drivers/iio/dac/adi-axi-dac.c
636
static int axi_dac_wait_bus_free(struct axi_dac_state *st)
drivers/iio/dac/adi-axi-dac.c
641
ret = regmap_read_poll_timeout(st->regmap, AXI_DAC_UI_STATUS_REG, val,
drivers/iio/dac/adi-axi-dac.c
645
dev_err(st->dev, "AXI bus timeout\n");
drivers/iio/dac/adi-axi-dac.c
652
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
655
ret = axi_dac_wait_bus_free(st);
drivers/iio/dac/adi-axi-dac.c
659
return regmap_set_bits(st->regmap, AXI_DAC_CUSTOM_CTRL_REG,
drivers/iio/dac/adi-axi-dac.c
665
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
667
return regmap_clear_bits(st->regmap, AXI_DAC_CUSTOM_CTRL_REG,
drivers/iio/dac/adi-axi-dac.c
673
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
682
return regmap_update_bits(st->regmap, AXI_DAC_CUSTOM_CTRL_REG,
drivers/iio/dac/adi-axi-dac.c
691
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
695
return regmap_clear_bits(st->regmap, AXI_DAC_CNTRL_2_REG,
drivers/iio/dac/adi-axi-dac.c
705
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
721
ret = regmap_write(st->regmap, AXI_DAC_CUSTOM_WR_REG, ival);
drivers/iio/dac/adi-axi-dac.c
726
ret = regmap_set_bits(st->regmap, AXI_DAC_CNTRL_2_REG,
drivers/iio/dac/adi-axi-dac.c
729
ret = regmap_clear_bits(st->regmap, AXI_DAC_CNTRL_2_REG,
drivers/iio/dac/adi-axi-dac.c
734
ret = regmap_update_bits(st->regmap, AXI_DAC_CUSTOM_CTRL_REG,
drivers/iio/dac/adi-axi-dac.c
740
ret = regmap_update_bits(st->regmap, AXI_DAC_CUSTOM_CTRL_REG,
drivers/iio/dac/adi-axi-dac.c
746
ret = axi_dac_wait_bus_free(st);
drivers/iio/dac/adi-axi-dac.c
751
return regmap_clear_bits(st->regmap, AXI_DAC_CUSTOM_CTRL_REG,
drivers/iio/dac/adi-axi-dac.c
758
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
760
guard(mutex)(&st->lock);
drivers/iio/dac/adi-axi-dac.c
767
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
770
guard(mutex)(&st->lock);
drivers/iio/dac/adi-axi-dac.c
781
ret = axi_dac_wait_bus_free(st);
drivers/iio/dac/adi-axi-dac.c
785
return regmap_read(st->regmap, AXI_DAC_CUSTOM_RD_REG, val);
drivers/iio/dac/adi-axi-dac.c
791
struct axi_dac_state *st = iio_backend_get_priv(back);
drivers/iio/dac/adi-axi-dac.c
797
guard(mutex)(&st->lock);
drivers/iio/dac/adi-axi-dac.c
799
ret = regmap_update_bits(st->regmap, AXI_DAC_CUSTOM_CTRL_REG,
drivers/iio/dac/adi-axi-dac.c
805
return axi_dac_wait_bus_free(st);
drivers/iio/dac/adi-axi-dac.c
813
static int axi_dac_create_platform_device(struct axi_dac_state *st,
drivers/iio/dac/adi-axi-dac.c
820
.bus_sample_data_clock_hz = st->dac_clk_rate,
drivers/iio/dac/adi-axi-dac.c
823
.parent = st->dev,
drivers/iio/dac/adi-axi-dac.c
836
return devm_add_action_or_reset(st->dev, axi_dac_child_remove, pdev);
drivers/iio/dac/adi-axi-dac.c
889
struct axi_dac_state *st;
drivers/iio/dac/adi-axi-dac.c
895
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/iio/dac/adi-axi-dac.c
896
if (!st)
drivers/iio/dac/adi-axi-dac.c
899
st->info = device_get_match_data(dev);
drivers/iio/dac/adi-axi-dac.c
900
if (!st->info)
drivers/iio/dac/adi-axi-dac.c
911
if (st->info->has_dac_clk) {
drivers/iio/dac/adi-axi-dac.c
920
st->dac_clk_rate = clk_get_rate(dac_clk) / 2;
drivers/iio/dac/adi-axi-dac.c
927
st->dev = dev;
drivers/iio/dac/adi-axi-dac.c
928
st->regmap = devm_regmap_init_mmio(dev, base, &axi_dac_regmap_config);
drivers/iio/dac/adi-axi-dac.c
929
if (IS_ERR(st->regmap))
drivers/iio/dac/adi-axi-dac.c
930
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/dac/adi-axi-dac.c
937
ret = regmap_write(st->regmap, AXI_DAC_RSTN_REG, 0);
drivers/iio/dac/adi-axi-dac.c
941
ret = regmap_read(st->regmap, ADI_AXI_REG_VERSION, &ver);
drivers/iio/dac/adi-axi-dac.c
945
if (ADI_AXI_PCORE_VER_MAJOR(ver) != ADI_AXI_PCORE_VER_MAJOR(st->info->version))
drivers/iio/dac/adi-axi-dac.c
948
ADI_AXI_PCORE_VER_MAJOR(st->info->version),
drivers/iio/dac/adi-axi-dac.c
949
ADI_AXI_PCORE_VER_MINOR(st->info->version),
drivers/iio/dac/adi-axi-dac.c
950
ADI_AXI_PCORE_VER_PATCH(st->info->version),
drivers/iio/dac/adi-axi-dac.c
956
ret = regmap_read(st->regmap, AXI_DAC_CONFIG_REG, &st->reg_config);
drivers/iio/dac/adi-axi-dac.c
968
ret = regmap_set_bits(st->regmap, AXI_DAC_CNTRL_2_REG,
drivers/iio/dac/adi-axi-dac.c
973
mutex_init(&st->lock);
drivers/iio/dac/adi-axi-dac.c
975
ret = devm_iio_backend_register(dev, st->info->backend_info, st);
drivers/iio/dac/adi-axi-dac.c
983
if (!st->info->has_child_nodes)
drivers/iio/dac/adi-axi-dac.c
995
ret = axi_dac_create_platform_device(st, child);
drivers/iio/dac/ltc2632.c
101
return ltc2632_spi_write(st->spi_dev,
drivers/iio/dac/ltc2632.c
115
struct ltc2632_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2632.c
118
!!(st->powerdown_cache_mask & (1 << chan->channel)));
drivers/iio/dac/ltc2632.c
129
struct ltc2632_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2632.c
136
st->powerdown_cache_mask |= (1 << chan->channel);
drivers/iio/dac/ltc2632.c
138
st->powerdown_cache_mask &= ~(1 << chan->channel);
drivers/iio/dac/ltc2632.c
140
ret = ltc2632_spi_write(st->spi_dev,
drivers/iio/dac/ltc2632.c
316
struct ltc2632_state *st;
drivers/iio/dac/ltc2632.c
322
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/dac/ltc2632.c
326
st = iio_priv(indio_dev);
drivers/iio/dac/ltc2632.c
328
st->spi_dev = spi;
drivers/iio/dac/ltc2632.c
339
st->vref_mv = has_external_vref ? ret / 1000 : chip_info->vref_mv;
drivers/iio/dac/ltc2632.c
77
const struct ltc2632_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2632.c
81
*val = st->vref_mv;
drivers/iio/dac/ltc2632.c
94
struct ltc2632_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2664.c
131
static int ltc2664_scale_get(const struct ltc2664_state *st, int c)
drivers/iio/dac/ltc2664.c
133
const struct ltc2664_chan *chan = &st->channels[c];
drivers/iio/dac/ltc2664.c
134
const int (*span_helper)[2] = st->chip_info->span_helper;
drivers/iio/dac/ltc2664.c
143
return fs * st->vref_mv / 2500;
drivers/iio/dac/ltc2664.c
146
static int ltc2672_scale_get(const struct ltc2664_state *st, int c)
drivers/iio/dac/ltc2664.c
148
const struct ltc2664_chan *chan = &st->channels[c];
drivers/iio/dac/ltc2664.c
155
fs = 1000 * st->vref_mv;
drivers/iio/dac/ltc2664.c
158
return mul_u64_u32_div(4800, fs, st->rfsadj_ohms);
drivers/iio/dac/ltc2664.c
160
return mul_u64_u32_div(LTC2672_SCALE_MULTIPLIER(span), fs, st->rfsadj_ohms);
drivers/iio/dac/ltc2664.c
163
static int ltc2664_offset_get(const struct ltc2664_state *st, int c)
drivers/iio/dac/ltc2664.c
165
const struct ltc2664_chan *chan = &st->channels[c];
drivers/iio/dac/ltc2664.c
172
if (st->chip_info->span_helper[span][0] < 0)
drivers/iio/dac/ltc2664.c
178
static int ltc2664_dac_code_write(struct ltc2664_state *st, u32 chan, u32 input,
drivers/iio/dac/ltc2664.c
181
struct ltc2664_chan *c = &st->channels[chan];
drivers/iio/dac/ltc2664.c
184
guard(mutex)(&st->lock);
drivers/iio/dac/ltc2664.c
187
ret = regmap_write(st->regmap, LTC2664_CMD_TOGGLE_SEL,
drivers/iio/dac/ltc2664.c
196
if (st->toggle_sel & BIT(chan))
drivers/iio/dac/ltc2664.c
201
ret = regmap_write(st->regmap, reg, code);
drivers/iio/dac/ltc2664.c
208
ret = regmap_write(st->regmap, LTC2664_CMD_TOGGLE_SEL,
drivers/iio/dac/ltc2664.c
209
st->toggle_sel);
drivers/iio/dac/ltc2664.c
217
static void ltc2664_dac_code_read(struct ltc2664_state *st, u32 chan, u32 input,
drivers/iio/dac/ltc2664.c
220
guard(mutex)(&st->lock);
drivers/iio/dac/ltc2664.c
221
*code = st->channels[chan].raw[input];
drivers/iio/dac/ltc2664.c
246
struct ltc2664_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2664.c
250
ltc2664_dac_code_read(st, chan->channel, LTC2664_INPUT_A, val);
drivers/iio/dac/ltc2664.c
254
*val = st->chip_info->offset_get(st, chan->channel);
drivers/iio/dac/ltc2664.c
258
*val = st->chip_info->scale_get(st, chan->channel);
drivers/iio/dac/ltc2664.c
271
struct ltc2664_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2664.c
278
return ltc2664_dac_code_write(st, chan->channel,
drivers/iio/dac/ltc2664.c
290
struct ltc2664_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2664.c
293
guard(mutex)(&st->lock);
drivers/iio/dac/ltc2664.c
296
val = st->channels[chan->channel].powerdown;
drivers/iio/dac/ltc2664.c
302
val = !!(st->toggle_sel & BIT(chan->channel));
drivers/iio/dac/ltc2664.c
306
val = st->global_toggle;
drivers/iio/dac/ltc2664.c
319
struct ltc2664_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2664.c
327
guard(mutex)(&st->lock);
drivers/iio/dac/ltc2664.c
330
ret = regmap_write(st->regmap,
drivers/iio/dac/ltc2664.c
336
st->channels[chan->channel].powerdown = en;
drivers/iio/dac/ltc2664.c
341
st->toggle_sel |= BIT(chan->channel);
drivers/iio/dac/ltc2664.c
343
st->toggle_sel &= ~BIT(chan->channel);
drivers/iio/dac/ltc2664.c
345
ret = regmap_write(st->regmap, LTC2664_CMD_TOGGLE_SEL,
drivers/iio/dac/ltc2664.c
346
st->toggle_sel);
drivers/iio/dac/ltc2664.c
352
ret = regmap_write(st->regmap, LTC2664_CMD_GLOBAL_TOGGLE, en);
drivers/iio/dac/ltc2664.c
356
st->global_toggle = en;
drivers/iio/dac/ltc2664.c
369
struct ltc2664_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2664.c
377
ltc2664_dac_code_read(st, chan->channel, private, &val);
drivers/iio/dac/ltc2664.c
387
struct ltc2664_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2664.c
398
ret = ltc2664_dac_code_write(st, chan->channel, private, val);
drivers/iio/dac/ltc2664.c
410
struct ltc2664_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2664.c
415
return regmap_write(st->regmap, reg, writeval);
drivers/iio/dac/ltc2664.c
491
static int ltc2664_set_span(const struct ltc2664_state *st, int min, int max,
drivers/iio/dac/ltc2664.c
494
const struct ltc2664_chip_info *chip_info = st->chip_info;
drivers/iio/dac/ltc2664.c
506
ret = regmap_write(st->regmap, LTC2664_CMD_SPAN_N(chan), span);
drivers/iio/dac/ltc2664.c
513
static int ltc2664_channel_config(struct ltc2664_state *st)
drivers/iio/dac/ltc2664.c
515
const struct ltc2664_chip_info *chip_info = st->chip_info;
drivers/iio/dac/ltc2664.c
516
struct device *dev = &st->spi->dev;
drivers/iio/dac/ltc2664.c
533
st->rfsadj_ohms = 20000;
drivers/iio/dac/ltc2664.c
534
ret = device_property_read_u32(dev, "adi,rfsadj-ohms", &st->rfsadj_ohms);
drivers/iio/dac/ltc2664.c
540
if (st->rfsadj_ohms < 19000 || st->rfsadj_ohms > 41000)
drivers/iio/dac/ltc2664.c
558
chan = &st->channels[reg];
drivers/iio/dac/ltc2664.c
563
st->iio_channels[reg].ext_info = ltc2664_toggle_sym_ext_info;
drivers/iio/dac/ltc2664.c
570
&st->iio_channels[reg].info_mask_separate);
drivers/iio/dac/ltc2664.c
581
ret = ltc2664_set_span(st, tmp[0] / 1000, tmp[1] / 1000, reg);
drivers/iio/dac/ltc2664.c
591
ret = ltc2664_set_span(st, 0, tmp[1] / 1000, reg);
drivers/iio/dac/ltc2664.c
602
static int ltc2664_setup(struct ltc2664_state *st)
drivers/iio/dac/ltc2664.c
604
const struct ltc2664_chip_info *chip_info = st->chip_info;
drivers/iio/dac/ltc2664.c
609
gpio = devm_gpiod_get_optional(&st->spi->dev, "reset", GPIOD_OUT_HIGH);
drivers/iio/dac/ltc2664.c
611
return dev_err_probe(&st->spi->dev, PTR_ERR(gpio),
drivers/iio/dac/ltc2664.c
622
st->iio_channels = devm_kcalloc(&st->spi->dev,
drivers/iio/dac/ltc2664.c
626
if (!st->iio_channels)
drivers/iio/dac/ltc2664.c
630
st->iio_channels[i] = ltc2664_channel_template;
drivers/iio/dac/ltc2664.c
631
st->iio_channels[i].type = chip_info->measurement_type;
drivers/iio/dac/ltc2664.c
632
st->iio_channels[i].channel = i;
drivers/iio/dac/ltc2664.c
635
ret = ltc2664_channel_config(st);
drivers/iio/dac/ltc2664.c
639
return regmap_set_bits(st->regmap, LTC2664_CMD_CONFIG, LTC2664_REF_DISABLE);
drivers/iio/dac/ltc2664.c
661
struct ltc2664_state *st;
drivers/iio/dac/ltc2664.c
664
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ltc2664.c
668
st = iio_priv(indio_dev);
drivers/iio/dac/ltc2664.c
669
st->spi = spi;
drivers/iio/dac/ltc2664.c
675
st->chip_info = chip_info;
drivers/iio/dac/ltc2664.c
677
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/dac/ltc2664.c
681
st->regmap = devm_regmap_init_spi(spi, <c2664_regmap_config);
drivers/iio/dac/ltc2664.c
682
if (IS_ERR(st->regmap))
drivers/iio/dac/ltc2664.c
683
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/dac/ltc2664.c
695
st->vref_mv = ret > 0 ? ret / 1000 : chip_info->internal_vref_mv;
drivers/iio/dac/ltc2664.c
697
ret = ltc2664_setup(st);
drivers/iio/dac/ltc2664.c
704
indio_dev->channels = st->iio_channels;
drivers/iio/dac/ltc2664.c
75
int (*scale_get)(const struct ltc2664_state *st, int c);
drivers/iio/dac/ltc2664.c
76
int (*offset_get)(const struct ltc2664_state *st, int c);
drivers/iio/dac/ltc2688.c
103
struct ltc2688_state *st = context;
drivers/iio/dac/ltc2688.c
106
.tx_buf = st->tx_data,
drivers/iio/dac/ltc2688.c
110
.tx_buf = st->tx_data + 3,
drivers/iio/dac/ltc2688.c
111
.rx_buf = st->rx_data,
drivers/iio/dac/ltc2688.c
117
memcpy(st->tx_data, reg, reg_size);
drivers/iio/dac/ltc2688.c
119
ret = spi_sync_transfer(st->spi, xfers, ARRAY_SIZE(xfers));
drivers/iio/dac/ltc2688.c
123
memcpy(val, &st->rx_data[1], val_size);
drivers/iio/dac/ltc2688.c
130
struct ltc2688_state *st = context;
drivers/iio/dac/ltc2688.c
132
return spi_write(st->spi, data, count);
drivers/iio/dac/ltc2688.c
135
static int ltc2688_span_get(const struct ltc2688_state *st, int c)
drivers/iio/dac/ltc2688.c
139
ret = regmap_read(st->regmap, LTC2688_CMD_CH_SETTING(c), ®);
drivers/iio/dac/ltc2688.c
155
static int ltc2688_scale_get(const struct ltc2688_state *st, int c, int *val)
drivers/iio/dac/ltc2688.c
157
const struct ltc2688_chan *chan = &st->channels[c];
drivers/iio/dac/ltc2688.c
160
span = ltc2688_span_get(st, c);
drivers/iio/dac/ltc2688.c
168
*val = DIV_ROUND_CLOSEST(fs * st->vref, 4096);
drivers/iio/dac/ltc2688.c
173
static int ltc2688_offset_get(const struct ltc2688_state *st, int c, int *val)
drivers/iio/dac/ltc2688.c
177
span = ltc2688_span_get(st, c);
drivers/iio/dac/ltc2688.c
197
static int ltc2688_dac_code_write(struct ltc2688_state *st, u32 chan, u32 input,
drivers/iio/dac/ltc2688.c
200
struct ltc2688_chan *c = &st->channels[chan];
drivers/iio/dac/ltc2688.c
211
guard(mutex)(&st->lock);
drivers/iio/dac/ltc2688.c
213
ret = regmap_update_bits(st->regmap, LTC2688_CMD_A_B_SELECT, BIT(chan),
drivers/iio/dac/ltc2688.c
227
return regmap_write(st->regmap, reg, code);
drivers/iio/dac/ltc2688.c
230
static int ltc2688_dac_code_read(struct ltc2688_state *st, u32 chan, u32 input,
drivers/iio/dac/ltc2688.c
233
struct ltc2688_chan *c = &st->channels[chan];
drivers/iio/dac/ltc2688.c
236
guard(mutex)(&st->lock);
drivers/iio/dac/ltc2688.c
237
ret = regmap_update_bits(st->regmap, LTC2688_CMD_A_B_SELECT, BIT(chan),
drivers/iio/dac/ltc2688.c
242
ret = regmap_read(st->regmap, LTC2688_CMD_CH_CODE(chan), code);
drivers/iio/dac/ltc2688.c
273
struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
278
ret = ltc2688_dac_code_read(st, chan->channel, LTC2688_INPUT_A,
drivers/iio/dac/ltc2688.c
285
ret = ltc2688_offset_get(st, chan->channel, val);
drivers/iio/dac/ltc2688.c
291
ret = ltc2688_scale_get(st, chan->channel, val);
drivers/iio/dac/ltc2688.c
298
ret = regmap_read(st->regmap,
drivers/iio/dac/ltc2688.c
306
ret = regmap_read(st->regmap,
drivers/iio/dac/ltc2688.c
321
struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
328
return ltc2688_dac_code_write(st, chan->channel,
drivers/iio/dac/ltc2688.c
334
return regmap_write(st->regmap,
drivers/iio/dac/ltc2688.c
338
return regmap_write(st->regmap,
drivers/iio/dac/ltc2688.c
350
struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
351
struct ltc2688_chan *c = &st->channels[chan->channel];
drivers/iio/dac/ltc2688.c
359
guard(mutex)(&st->lock);
drivers/iio/dac/ltc2688.c
360
ret = regmap_update_bits(st->regmap, LTC2688_CMD_TOGGLE_DITHER_EN,
drivers/iio/dac/ltc2688.c
375
const struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
379
ret = regmap_read(st->regmap, private, &val);
drivers/iio/dac/ltc2688.c
391
const struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
399
ret = regmap_update_bits(st->regmap, private, BIT(chan->channel),
drivers/iio/dac/ltc2688.c
407
static ssize_t ltc2688_dither_freq_avail(const struct ltc2688_state *st,
drivers/iio/dac/ltc2688.c
427
const struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
428
const struct ltc2688_chan *c = &st->channels[chan->channel];
drivers/iio/dac/ltc2688.c
433
return ltc2688_dither_freq_avail(st, c, buf);
drivers/iio/dac/ltc2688.c
435
ret = regmap_read(st->regmap, LTC2688_CMD_CH_SETTING(chan->channel),
drivers/iio/dac/ltc2688.c
452
const struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
453
const struct ltc2688_chan *c = &st->channels[chan->channel];
drivers/iio/dac/ltc2688.c
473
ret = regmap_update_bits(st->regmap,
drivers/iio/dac/ltc2688.c
488
struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
500
ret = ltc2688_dac_code_read(st, chan->channel, private, &val);
drivers/iio/dac/ltc2688.c
512
struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
523
ret = ltc2688_dac_code_write(st, chan->channel, private, val);
drivers/iio/dac/ltc2688.c
533
struct ltc2688_state *st = iio_priv(dev);
drivers/iio/dac/ltc2688.c
536
ret = regmap_read(st->regmap, LTC2688_CMD_CH_SETTING(chan->channel),
drivers/iio/dac/ltc2688.c
548
struct ltc2688_state *st = iio_priv(dev);
drivers/iio/dac/ltc2688.c
550
return regmap_update_bits(st->regmap,
drivers/iio/dac/ltc2688.c
561
struct ltc2688_state *st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
564
return regmap_read(st->regmap, reg, readval);
drivers/iio/dac/ltc2688.c
566
return regmap_write(st->regmap, reg, writeval);
drivers/iio/dac/ltc2688.c
694
static int ltc2688_tgp_clk_setup(struct ltc2688_state *st,
drivers/iio/dac/ltc2688.c
698
struct device *dev = &st->spi->dev;
drivers/iio/dac/ltc2688.c
726
static int ltc2688_span_lookup(const struct ltc2688_state *st, int min, int max)
drivers/iio/dac/ltc2688.c
739
static int ltc2688_channel_config(struct ltc2688_state *st)
drivers/iio/dac/ltc2688.c
741
struct device *dev = &st->spi->dev;
drivers/iio/dac/ltc2688.c
759
chan = &st->channels[reg];
drivers/iio/dac/ltc2688.c
763
st->iio_chan[reg].ext_info = ltc2688_toggle_sym_ext_info;
drivers/iio/dac/ltc2688.c
769
&st->iio_chan[reg].info_mask_separate);
drivers/iio/dac/ltc2688.c
775
span = ltc2688_span_lookup(st, (int)tmp[0] / 1000,
drivers/iio/dac/ltc2688.c
794
ret = ltc2688_tgp_clk_setup(st, chan, child, clk_input);
drivers/iio/dac/ltc2688.c
813
st->iio_chan[reg].ext_info = ltc2688_dither_ext_info;
drivers/iio/dac/ltc2688.c
816
st->iio_chan[reg].ext_info = ltc2688_toggle_ext_info;
drivers/iio/dac/ltc2688.c
828
ret = regmap_write(st->regmap, LTC2688_CMD_CH_SETTING(reg),
drivers/iio/dac/ltc2688.c
838
static int ltc2688_setup(struct ltc2688_state *st, bool has_external_vref)
drivers/iio/dac/ltc2688.c
840
struct device *dev = &st->spi->dev;
drivers/iio/dac/ltc2688.c
856
ret = regmap_set_bits(st->regmap, LTC2688_CMD_CONFIG,
drivers/iio/dac/ltc2688.c
868
st->iio_chan = devm_kmemdup(dev, ltc2688_channels,
drivers/iio/dac/ltc2688.c
870
if (!st->iio_chan)
drivers/iio/dac/ltc2688.c
873
ret = ltc2688_channel_config(st);
drivers/iio/dac/ltc2688.c
880
return regmap_set_bits(st->regmap, LTC2688_CMD_CONFIG,
drivers/iio/dac/ltc2688.c
936
struct ltc2688_state *st;
drivers/iio/dac/ltc2688.c
942
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/ltc2688.c
946
st = iio_priv(indio_dev);
drivers/iio/dac/ltc2688.c
947
st->spi = spi;
drivers/iio/dac/ltc2688.c
950
st->tx_data[3] = LTC2688_CMD_NOOP;
drivers/iio/dac/ltc2688.c
951
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/dac/ltc2688.c
955
st->regmap = devm_regmap_init(dev, <c2688_regmap_bus, st,
drivers/iio/dac/ltc2688.c
957
if (IS_ERR(st->regmap))
drivers/iio/dac/ltc2688.c
958
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/dac/ltc2688.c
972
st->vref = has_external_vref ? ret / 1000 : 0;
drivers/iio/dac/ltc2688.c
974
ret = ltc2688_setup(st, has_external_vref);
drivers/iio/dac/ltc2688.c
981
indio_dev->channels = st->iio_chan;
drivers/iio/dac/max22007.c
105
ret = spi_write_then_read(st->spi, ®_byte, 1, rx_buf,
drivers/iio/dac/max22007.c
108
dev_err(&st->spi->dev, "SPI transfer failed: %d\n", ret);
drivers/iio/dac/max22007.c
117
dev_err(&st->spi->dev, "CRC mismatch on read register %02x\n", reg_byte);
drivers/iio/dac/max22007.c
128
struct max22007_state *st = context;
drivers/iio/dac/max22007.c
130
.tx_buf = st->tx_buf,
drivers/iio/dac/max22007.c
131
.rx_buf = st->rx_buf,
drivers/iio/dac/max22007.c
134
if (count + MAX22007_CRC_OVERHEAD > sizeof(st->tx_buf))
drivers/iio/dac/max22007.c
137
memset(st->tx_buf, 0, sizeof(st->tx_buf));
drivers/iio/dac/max22007.c
141
memcpy(st->tx_buf, data, count);
drivers/iio/dac/max22007.c
142
st->tx_buf[count] = crc8(max22007_crc8_table, st->tx_buf,
drivers/iio/dac/max22007.c
143
sizeof(st->tx_buf) - 1, 0x00);
drivers/iio/dac/max22007.c
145
return spi_sync_transfer(st->spi, &xfer, 1);
drivers/iio/dac/max22007.c
204
static int max22007_write_channel_data(struct max22007_state *st,
drivers/iio/dac/max22007.c
214
return regmap_write(st->regmap, MAX22007_DAC_CHANNEL_REG(channel), reg_val);
drivers/iio/dac/max22007.c
217
static int max22007_read_channel_data(struct max22007_state *st,
drivers/iio/dac/max22007.c
223
ret = regmap_read(st->regmap, MAX22007_DAC_CHANNEL_REG(channel), ®_val);
drivers/iio/dac/max22007.c
236
struct max22007_state *st = iio_priv(indio_dev);
drivers/iio/dac/max22007.c
241
ret = max22007_read_channel_data(st, chan->channel, val);
drivers/iio/dac/max22007.c
261
struct max22007_state *st = iio_priv(indio_dev);
drivers/iio/dac/max22007.c
265
return max22007_write_channel_data(st, chan->channel, val);
drivers/iio/dac/max22007.c
281
struct max22007_state *st = iio_priv(indio_dev);
drivers/iio/dac/max22007.c
286
ret = regmap_read(st->regmap, MAX22007_CHANNEL_MODE_REG, ®_val);
drivers/iio/dac/max22007.c
300
struct max22007_state *st = iio_priv(indio_dev);
drivers/iio/dac/max22007.c
308
ret = regmap_update_bits(st->regmap, MAX22007_CHANNEL_MODE_REG,
drivers/iio/dac/max22007.c
327
static int max22007_parse_channel_cfg(struct max22007_state *st, u8 *num_channels)
drivers/iio/dac/max22007.c
329
struct device *dev = &st->spi->dev;
drivers/iio/dac/max22007.c
338
st->iio_chans = devm_kcalloc(dev, num_chan, sizeof(*st->iio_chans), GFP_KERNEL);
drivers/iio/dac/max22007.c
339
if (!st->iio_chans)
drivers/iio/dac/max22007.c
373
st->iio_chans[i++] = (struct iio_chan_spec) {
drivers/iio/dac/max22007.c
383
ret = regmap_update_bits(st->regmap, MAX22007_CHANNEL_MODE_REG,
drivers/iio/dac/max22007.c
390
ret = regmap_update_bits(st->regmap, MAX22007_CONFIG_REG,
drivers/iio/dac/max22007.c
406
struct max22007_state *st;
drivers/iio/dac/max22007.c
411
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/dac/max22007.c
415
st = iio_priv(indio_dev);
drivers/iio/dac/max22007.c
416
st->spi = spi;
drivers/iio/dac/max22007.c
420
st->regmap = devm_regmap_init(dev, &max22007_regmap_bus, st,
drivers/iio/dac/max22007.c
422
if (IS_ERR(st->regmap))
drivers/iio/dac/max22007.c
423
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/dac/max22007.c
442
ret = regmap_write(st->regmap, MAX22007_SOFT_RESET_REG,
drivers/iio/dac/max22007.c
448
ret = regmap_set_bits(st->regmap, MAX22007_CONFIG_REG,
drivers/iio/dac/max22007.c
453
ret = max22007_parse_channel_cfg(st, &num_channels);
drivers/iio/dac/max22007.c
459
indio_dev->channels = st->iio_chans;
drivers/iio/dac/max22007.c
91
struct max22007_state *st = context;
drivers/iio/dac/max5821.c
52
struct max5821_data *st = iio_priv(indio_dev);
drivers/iio/dac/max5821.c
54
return st->powerdown_mode[chan->channel];
drivers/iio/dac/max5821.c
61
struct max5821_data *st = iio_priv(indio_dev);
drivers/iio/dac/max5821.c
63
st->powerdown_mode[chan->channel] = mode;
drivers/iio/dac/max5821.c
80
struct max5821_data *st = iio_priv(indio_dev);
drivers/iio/dac/max5821.c
82
return sysfs_emit(buf, "%d\n", st->powerdown[chan->channel]);
drivers/iio/dummy/iio_simple_dummy.c
274
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy.c
276
guard(mutex)(&st->lock);
drivers/iio/dummy/iio_simple_dummy.c
281
*val = st->dac_val;
drivers/iio/dummy/iio_simple_dummy.c
285
*val = st->differential_adc_val[0];
drivers/iio/dummy/iio_simple_dummy.c
287
*val = st->differential_adc_val[1];
drivers/iio/dummy/iio_simple_dummy.c
290
*val = st->single_ended_adc_val;
drivers/iio/dummy/iio_simple_dummy.c
295
*val = st->accel_val;
drivers/iio/dummy/iio_simple_dummy.c
306
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy.c
308
guard(mutex)(&st->lock);
drivers/iio/dummy/iio_simple_dummy.c
311
*val = st->steps;
drivers/iio/dummy/iio_simple_dummy.c
316
*val = st->activity_running;
drivers/iio/dummy/iio_simple_dummy.c
319
*val = st->activity_walking;
drivers/iio/dummy/iio_simple_dummy.c
344
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy.c
385
guard(mutex)(&st->lock);
drivers/iio/dummy/iio_simple_dummy.c
387
*val = st->accel_calibbias;
drivers/iio/dummy/iio_simple_dummy.c
391
guard(mutex)(&st->lock);
drivers/iio/dummy/iio_simple_dummy.c
392
*val = st->accel_calibscale->val;
drivers/iio/dummy/iio_simple_dummy.c
393
*val2 = st->accel_calibscale->val2;
drivers/iio/dummy/iio_simple_dummy.c
401
guard(mutex)(&st->lock);
drivers/iio/dummy/iio_simple_dummy.c
404
*val = st->steps_enabled;
drivers/iio/dummy/iio_simple_dummy.c
411
guard(mutex)(&st->lock);
drivers/iio/dummy/iio_simple_dummy.c
414
*val = st->height;
drivers/iio/dummy/iio_simple_dummy.c
445
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy.c
454
scoped_guard(mutex, &st->lock) {
drivers/iio/dummy/iio_simple_dummy.c
456
st->dac_val = val;
drivers/iio/dummy/iio_simple_dummy.c
465
scoped_guard(mutex, &st->lock) {
drivers/iio/dummy/iio_simple_dummy.c
466
st->steps = val;
drivers/iio/dummy/iio_simple_dummy.c
476
st->activity_running = val;
drivers/iio/dummy/iio_simple_dummy.c
479
st->activity_walking = val;
drivers/iio/dummy/iio_simple_dummy.c
489
guard(mutex)(&st->lock);
drivers/iio/dummy/iio_simple_dummy.c
497
st->accel_calibscale = &dummy_scales[i];
drivers/iio/dummy/iio_simple_dummy.c
501
scoped_guard(mutex, &st->lock) {
drivers/iio/dummy/iio_simple_dummy.c
502
st->accel_calibbias = val;
drivers/iio/dummy/iio_simple_dummy.c
508
scoped_guard(mutex, &st->lock) {
drivers/iio/dummy/iio_simple_dummy.c
509
st->steps_enabled = val;
drivers/iio/dummy/iio_simple_dummy.c
518
st->height = val;
drivers/iio/dummy/iio_simple_dummy.c
552
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy.c
554
st->dac_val = 0;
drivers/iio/dummy/iio_simple_dummy.c
555
st->single_ended_adc_val = 73;
drivers/iio/dummy/iio_simple_dummy.c
556
st->differential_adc_val[0] = 33;
drivers/iio/dummy/iio_simple_dummy.c
557
st->differential_adc_val[1] = -34;
drivers/iio/dummy/iio_simple_dummy.c
558
st->accel_val = 34;
drivers/iio/dummy/iio_simple_dummy.c
559
st->accel_calibbias = -7;
drivers/iio/dummy/iio_simple_dummy.c
560
st->accel_calibscale = &dummy_scales[0];
drivers/iio/dummy/iio_simple_dummy.c
561
st->steps = 47;
drivers/iio/dummy/iio_simple_dummy.c
562
st->activity_running = 98;
drivers/iio/dummy/iio_simple_dummy.c
563
st->activity_walking = 4;
drivers/iio/dummy/iio_simple_dummy.c
581
struct iio_dummy_state *st;
drivers/iio/dummy/iio_simple_dummy.c
603
indio_dev = iio_device_alloc(parent, sizeof(*st));
drivers/iio/dummy/iio_simple_dummy.c
609
st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy.c
610
mutex_init(&st->lock);
drivers/iio/dummy/iio_simple_dummy_events.c
125
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
127
*val = st->event_val;
drivers/iio/dummy/iio_simple_dummy_events.c
149
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
151
st->event_val = val;
drivers/iio/dummy/iio_simple_dummy_events.c
159
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
161
st->event_timestamp = iio_get_time_ns(indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
178
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
181
st->regs->reg_id, st->regs->reg_data);
drivers/iio/dummy/iio_simple_dummy_events.c
183
switch (st->regs->reg_data) {
drivers/iio/dummy/iio_simple_dummy_events.c
189
st->event_timestamp);
drivers/iio/dummy/iio_simple_dummy_events.c
192
if (st->activity_running > st->event_val)
drivers/iio/dummy/iio_simple_dummy_events.c
198
st->event_timestamp);
drivers/iio/dummy/iio_simple_dummy_events.c
201
if (st->activity_walking < st->event_val)
drivers/iio/dummy/iio_simple_dummy_events.c
207
st->event_timestamp);
drivers/iio/dummy/iio_simple_dummy_events.c
214
st->event_timestamp);
drivers/iio/dummy/iio_simple_dummy_events.c
236
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
240
st->event_irq = iio_dummy_evgen_get_irq();
drivers/iio/dummy/iio_simple_dummy_events.c
241
if (st->event_irq < 0) {
drivers/iio/dummy/iio_simple_dummy_events.c
242
ret = st->event_irq;
drivers/iio/dummy/iio_simple_dummy_events.c
245
st->regs = iio_dummy_evgen_get_regs(st->event_irq);
drivers/iio/dummy/iio_simple_dummy_events.c
247
ret = request_threaded_irq(st->event_irq,
drivers/iio/dummy/iio_simple_dummy_events.c
258
iio_dummy_evgen_release_irq(st->event_irq);
drivers/iio/dummy/iio_simple_dummy_events.c
269
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
271
free_irq(st->event_irq, indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
273
iio_dummy_evgen_release_irq(st->event_irq);
drivers/iio/dummy/iio_simple_dummy_events.c
35
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
37
return st->event_en;
drivers/iio/dummy/iio_simple_dummy_events.c
58
struct iio_dummy_state *st = iio_priv(indio_dev);
drivers/iio/dummy/iio_simple_dummy_events.c
69
st->event_en = state;
drivers/iio/dummy/iio_simple_dummy_events.c
80
st->event_en = state;
drivers/iio/dummy/iio_simple_dummy_events.c
89
st->event_en = state;
drivers/iio/filter/admv8818.c
136
static int __admv8818_hpf_select(struct admv8818_state *st, u64 freq)
drivers/iio/filter/admv8818.c
192
ret = regmap_update_bits(st->regmap, ADMV8818_REG_WR0_SW,
drivers/iio/filter/admv8818.c
200
return regmap_update_bits(st->regmap, ADMV8818_REG_WR0_FILTER,
drivers/iio/filter/admv8818.c
205
static int admv8818_hpf_select(struct admv8818_state *st, u64 freq)
drivers/iio/filter/admv8818.c
209
mutex_lock(&st->lock);
drivers/iio/filter/admv8818.c
210
ret = __admv8818_hpf_select(st, freq);
drivers/iio/filter/admv8818.c
211
mutex_unlock(&st->lock);
drivers/iio/filter/admv8818.c
216
static int __admv8818_lpf_select(struct admv8818_state *st, u64 freq)
drivers/iio/filter/admv8818.c
268
ret = regmap_update_bits(st->regmap, ADMV8818_REG_WR0_SW,
drivers/iio/filter/admv8818.c
276
return regmap_update_bits(st->regmap, ADMV8818_REG_WR0_FILTER,
drivers/iio/filter/admv8818.c
281
static int admv8818_lpf_select(struct admv8818_state *st, u64 freq)
drivers/iio/filter/admv8818.c
285
mutex_lock(&st->lock);
drivers/iio/filter/admv8818.c
286
ret = __admv8818_lpf_select(st, freq);
drivers/iio/filter/admv8818.c
287
mutex_unlock(&st->lock);
drivers/iio/filter/admv8818.c
292
static int admv8818_rfin_band_select(struct admv8818_state *st)
drivers/iio/filter/admv8818.c
297
st->cf_hz = clk_get_rate(st->clkin);
drivers/iio/filter/admv8818.c
300
if (st->cf_hz > st->hpf_margin_hz)
drivers/iio/filter/admv8818.c
301
hpf_corner_target = st->cf_hz - st->hpf_margin_hz;
drivers/iio/filter/admv8818.c
306
lpf_corner_target = st->cf_hz + st->lpf_margin_hz;
drivers/iio/filter/admv8818.c
307
if (lpf_corner_target < st->cf_hz)
drivers/iio/filter/admv8818.c
310
mutex_lock(&st->lock);
drivers/iio/filter/admv8818.c
312
ret = __admv8818_hpf_select(st, hpf_corner_target);
drivers/iio/filter/admv8818.c
316
ret = __admv8818_lpf_select(st, lpf_corner_target);
drivers/iio/filter/admv8818.c
318
mutex_unlock(&st->lock);
drivers/iio/filter/admv8818.c
322
static int __admv8818_read_hpf_freq(struct admv8818_state *st, u64 *hpf_freq)
drivers/iio/filter/admv8818.c
327
ret = regmap_read(st->regmap, ADMV8818_REG_WR0_SW, &data);
drivers/iio/filter/admv8818.c
337
ret = regmap_read(st->regmap, ADMV8818_REG_WR0_FILTER, &data);
drivers/iio/filter/admv8818.c
352
static int admv8818_read_hpf_freq(struct admv8818_state *st, u64 *hpf_freq)
drivers/iio/filter/admv8818.c
356
mutex_lock(&st->lock);
drivers/iio/filter/admv8818.c
357
ret = __admv8818_read_hpf_freq(st, hpf_freq);
drivers/iio/filter/admv8818.c
358
mutex_unlock(&st->lock);
drivers/iio/filter/admv8818.c
363
static int __admv8818_read_lpf_freq(struct admv8818_state *st, u64 *lpf_freq)
drivers/iio/filter/admv8818.c
368
ret = regmap_read(st->regmap, ADMV8818_REG_WR0_SW, &data);
drivers/iio/filter/admv8818.c
378
ret = regmap_read(st->regmap, ADMV8818_REG_WR0_FILTER, &data);
drivers/iio/filter/admv8818.c
393
static int admv8818_read_lpf_freq(struct admv8818_state *st, u64 *lpf_freq)
drivers/iio/filter/admv8818.c
397
mutex_lock(&st->lock);
drivers/iio/filter/admv8818.c
398
ret = __admv8818_read_lpf_freq(st, lpf_freq);
drivers/iio/filter/admv8818.c
399
mutex_unlock(&st->lock);
drivers/iio/filter/admv8818.c
421
struct admv8818_state *st = iio_priv(indio_dev);
drivers/iio/filter/admv8818.c
430
return admv8818_lpf_select(st, freq);
drivers/iio/filter/admv8818.c
432
return admv8818_hpf_select(st, freq);
drivers/iio/filter/admv8818.c
442
struct admv8818_state *st = iio_priv(indio_dev);
drivers/iio/filter/admv8818.c
448
ret = admv8818_read_lpf_freq(st, &freq);
drivers/iio/filter/admv8818.c
457
ret = admv8818_read_hpf_freq(st, &freq);
drivers/iio/filter/admv8818.c
475
struct admv8818_state *st = iio_priv(indio_dev);
drivers/iio/filter/admv8818.c
478
return regmap_read(st->regmap, reg, read_val);
drivers/iio/filter/admv8818.c
480
return regmap_write(st->regmap, reg, write_val);
drivers/iio/filter/admv8818.c
483
static int admv8818_filter_bypass(struct admv8818_state *st)
drivers/iio/filter/admv8818.c
487
mutex_lock(&st->lock);
drivers/iio/filter/admv8818.c
489
ret = regmap_update_bits(st->regmap, ADMV8818_REG_WR0_SW,
drivers/iio/filter/admv8818.c
501
ret = regmap_update_bits(st->regmap, ADMV8818_REG_WR0_FILTER,
drivers/iio/filter/admv8818.c
508
mutex_unlock(&st->lock);
drivers/iio/filter/admv8818.c
516
struct admv8818_state *st = iio_priv(indio_dev);
drivers/iio/filter/admv8818.c
518
return st->filter_mode;
drivers/iio/filter/admv8818.c
525
struct admv8818_state *st = iio_priv(indio_dev);
drivers/iio/filter/admv8818.c
528
if (!st->clkin) {
drivers/iio/filter/admv8818.c
533
ret = admv8818_filter_bypass(st);
drivers/iio/filter/admv8818.c
545
if (st->filter_mode == ADMV8818_AUTO_MODE)
drivers/iio/filter/admv8818.c
548
ret = clk_prepare_enable(st->clkin);
drivers/iio/filter/admv8818.c
552
ret = clk_notifier_register(st->clkin, &st->nb);
drivers/iio/filter/admv8818.c
554
clk_disable_unprepare(st->clkin);
drivers/iio/filter/admv8818.c
562
if (st->filter_mode == ADMV8818_AUTO_MODE) {
drivers/iio/filter/admv8818.c
563
clk_disable_unprepare(st->clkin);
drivers/iio/filter/admv8818.c
565
ret = clk_notifier_unregister(st->clkin, &st->nb);
drivers/iio/filter/admv8818.c
571
ret = admv8818_filter_bypass(st);
drivers/iio/filter/admv8818.c
582
st->filter_mode = mode;
drivers/iio/filter/admv8818.c
632
struct admv8818_state *st = container_of(nb, struct admv8818_state, nb);
drivers/iio/filter/admv8818.c
635
return notifier_from_errno(admv8818_rfin_band_select(st));
drivers/iio/filter/admv8818.c
642
struct admv8818_state *st = data;
drivers/iio/filter/admv8818.c
644
if (st->filter_mode == 0)
drivers/iio/filter/admv8818.c
645
clk_notifier_unregister(st->clkin, &st->nb);
drivers/iio/filter/admv8818.c
650
struct admv8818_state *st = data;
drivers/iio/filter/admv8818.c
652
if (st->filter_mode == 0)
drivers/iio/filter/admv8818.c
653
clk_disable_unprepare(st->clkin);
drivers/iio/filter/admv8818.c
656
static int admv8818_init(struct admv8818_state *st)
drivers/iio/filter/admv8818.c
659
struct device *dev = &st->spi->dev;
drivers/iio/filter/admv8818.c
662
ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
drivers/iio/filter/admv8818.c
667
ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
drivers/iio/filter/admv8818.c
672
ret = regmap_read(st->regmap, ADMV8818_REG_CHIPTYPE, &chip_id);
drivers/iio/filter/admv8818.c
681
ret = regmap_update_bits(st->regmap, ADMV8818_REG_SPI_CONFIG_B,
drivers/iio/filter/admv8818.c
688
if (st->clkin)
drivers/iio/filter/admv8818.c
689
return admv8818_rfin_band_select(st);
drivers/iio/filter/admv8818.c
694
static int admv8818_clk_setup(struct admv8818_state *st)
drivers/iio/filter/admv8818.c
696
struct device *dev = &st->spi->dev;
drivers/iio/filter/admv8818.c
699
st->clkin = devm_clk_get_optional(dev, "rf_in");
drivers/iio/filter/admv8818.c
700
if (IS_ERR(st->clkin))
drivers/iio/filter/admv8818.c
701
return dev_err_probe(dev, PTR_ERR(st->clkin),
drivers/iio/filter/admv8818.c
703
else if (!st->clkin)
drivers/iio/filter/admv8818.c
706
ret = clk_prepare_enable(st->clkin);
drivers/iio/filter/admv8818.c
710
ret = devm_add_action_or_reset(dev, admv8818_clk_disable, st);
drivers/iio/filter/admv8818.c
714
st->nb.notifier_call = admv8818_freq_change;
drivers/iio/filter/admv8818.c
715
ret = clk_notifier_register(st->clkin, &st->nb);
drivers/iio/filter/admv8818.c
719
return devm_add_action_or_reset(dev, admv8818_clk_notifier_unreg, st);
drivers/iio/filter/admv8818.c
722
static int admv8818_read_properties(struct admv8818_state *st)
drivers/iio/filter/admv8818.c
724
struct device *dev = &st->spi->dev;
drivers/iio/filter/admv8818.c
730
st->lpf_margin_hz = (u64)mhz * HZ_PER_MHZ;
drivers/iio/filter/admv8818.c
732
st->lpf_margin_hz = 0;
drivers/iio/filter/admv8818.c
739
st->hpf_margin_hz = (u64)mhz * HZ_PER_MHZ;
drivers/iio/filter/admv8818.c
741
st->hpf_margin_hz = 0;
drivers/iio/filter/admv8818.c
752
struct admv8818_state *st;
drivers/iio/filter/admv8818.c
756
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/filter/admv8818.c
764
st = iio_priv(indio_dev);
drivers/iio/filter/admv8818.c
765
st->regmap = regmap;
drivers/iio/filter/admv8818.c
772
st->spi = spi;
drivers/iio/filter/admv8818.c
774
ret = admv8818_clk_setup(st);
drivers/iio/filter/admv8818.c
778
mutex_init(&st->lock);
drivers/iio/filter/admv8818.c
780
ret = admv8818_read_properties(st);
drivers/iio/filter/admv8818.c
784
ret = admv8818_init(st);
drivers/iio/frequency/ad9523.c
1001
indio_dev->channels = st->ad9523_channels;
drivers/iio/frequency/ad9523.c
300
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
310
.tx_buf = &st->data[0].d8[2],
drivers/iio/frequency/ad9523.c
313
.rx_buf = &st->data[1].d8[4 - AD9523_TRANSF_LEN(addr)],
drivers/iio/frequency/ad9523.c
318
st->data[0].d32 = cpu_to_be32(AD9523_READ |
drivers/iio/frequency/ad9523.c
322
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/frequency/ad9523.c
326
ret = be32_to_cpu(st->data[1].d32) & (0xFFFFFF >>
drivers/iio/frequency/ad9523.c
335
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
339
.tx_buf = &st->data[0].d8[2],
drivers/iio/frequency/ad9523.c
342
.tx_buf = &st->data[1].d8[4 - AD9523_TRANSF_LEN(addr)],
drivers/iio/frequency/ad9523.c
347
st->data[0].d32 = cpu_to_be32(AD9523_WRITE |
drivers/iio/frequency/ad9523.c
350
st->data[1].d32 = cpu_to_be32(val);
drivers/iio/frequency/ad9523.c
352
ret = spi_sync_transfer(st->spi, t, ARRAY_SIZE(t));
drivers/iio/frequency/ad9523.c
368
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
414
st->vco_out_map[ch] = out;
drivers/iio/frequency/ad9523.c
422
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
428
use_alt_clk_src = (freq == st->vco_out_freq[AD9523_VCXO]);
drivers/iio/frequency/ad9523.c
431
tmp1 = st->vco_out_freq[AD9523_VCO1] / freq;
drivers/iio/frequency/ad9523.c
432
tmp2 = st->vco_out_freq[AD9523_VCO2] / freq;
drivers/iio/frequency/ad9523.c
514
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
525
mutex_lock(&st->lock);
drivers/iio/frequency/ad9523.c
536
mutex_unlock(&st->lock);
drivers/iio/frequency/ad9523.c
547
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
550
mutex_lock(&st->lock);
drivers/iio/frequency/ad9523.c
556
mutex_unlock(&st->lock);
drivers/iio/frequency/ad9523.c
615
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
619
mutex_lock(&st->lock);
drivers/iio/frequency/ad9523.c
621
mutex_unlock(&st->lock);
drivers/iio/frequency/ad9523.c
631
*val = st->vco_out_freq[st->vco_out_map[chan->channel]] /
drivers/iio/frequency/ad9523.c
651
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
655
mutex_lock(&st->lock);
drivers/iio/frequency/ad9523.c
677
tmp = st->vco_out_freq[st->vco_out_map[chan->channel]] / val;
drivers/iio/frequency/ad9523.c
701
mutex_unlock(&st->lock);
drivers/iio/frequency/ad9523.c
709
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
712
mutex_lock(&st->lock);
drivers/iio/frequency/ad9523.c
725
mutex_unlock(&st->lock);
drivers/iio/frequency/ad9523.c
739
struct ad9523_state *st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
740
struct ad9523_platform_data *pdata = st->pdata;
drivers/iio/frequency/ad9523.c
747
(st->spi->mode & SPI_3WIRE ? 0 :
drivers/iio/frequency/ad9523.c
841
st->vco_freq = div_u64((unsigned long long)pdata->vcxo_freq *
drivers/iio/frequency/ad9523.c
863
st->vco_out_freq[AD9523_VCO1] =
drivers/iio/frequency/ad9523.c
864
st->vco_freq / pdata->pll2_vco_div_m1;
drivers/iio/frequency/ad9523.c
867
st->vco_out_freq[AD9523_VCO2] =
drivers/iio/frequency/ad9523.c
868
st->vco_freq / pdata->pll2_vco_div_m2;
drivers/iio/frequency/ad9523.c
870
st->vco_out_freq[AD9523_VCXO] = pdata->vcxo_freq;
drivers/iio/frequency/ad9523.c
911
st->ad9523_channels[i].type = IIO_ALTVOLTAGE;
drivers/iio/frequency/ad9523.c
912
st->ad9523_channels[i].output = 1;
drivers/iio/frequency/ad9523.c
913
st->ad9523_channels[i].indexed = 1;
drivers/iio/frequency/ad9523.c
914
st->ad9523_channels[i].channel = chan->channel_num;
drivers/iio/frequency/ad9523.c
915
st->ad9523_channels[i].extend_name =
drivers/iio/frequency/ad9523.c
917
st->ad9523_channels[i].info_mask_separate =
drivers/iio/frequency/ad9523.c
954
struct ad9523_state *st;
drivers/iio/frequency/ad9523.c
961
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/frequency/ad9523.c
965
st = iio_priv(indio_dev);
drivers/iio/frequency/ad9523.c
967
mutex_init(&st->lock);
drivers/iio/frequency/ad9523.c
973
st->pwrdown_gpio = devm_gpiod_get_optional(dev, "powerdown",
drivers/iio/frequency/ad9523.c
975
if (IS_ERR(st->pwrdown_gpio))
drivers/iio/frequency/ad9523.c
976
return PTR_ERR(st->pwrdown_gpio);
drivers/iio/frequency/ad9523.c
978
st->reset_gpio = devm_gpiod_get_optional(dev, "reset",
drivers/iio/frequency/ad9523.c
980
if (IS_ERR(st->reset_gpio))
drivers/iio/frequency/ad9523.c
981
return PTR_ERR(st->reset_gpio);
drivers/iio/frequency/ad9523.c
983
if (st->reset_gpio) {
drivers/iio/frequency/ad9523.c
985
gpiod_direction_output(st->reset_gpio, 1);
drivers/iio/frequency/ad9523.c
988
st->sync_gpio = devm_gpiod_get_optional(dev, "sync",
drivers/iio/frequency/ad9523.c
990
if (IS_ERR(st->sync_gpio))
drivers/iio/frequency/ad9523.c
991
return PTR_ERR(st->sync_gpio);
drivers/iio/frequency/ad9523.c
994
st->spi = spi;
drivers/iio/frequency/ad9523.c
995
st->pdata = pdata;
drivers/iio/frequency/adf4350.c
108
struct adf4350_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4350.c
114
mutex_lock(&st->lock);
drivers/iio/frequency/adf4350.c
116
st->regs[reg] = writeval & ~(BIT(0) | BIT(1) | BIT(2));
drivers/iio/frequency/adf4350.c
117
ret = adf4350_sync_config(st);
drivers/iio/frequency/adf4350.c
119
*readval = st->regs_hw[reg];
drivers/iio/frequency/adf4350.c
122
mutex_unlock(&st->lock);
drivers/iio/frequency/adf4350.c
127
static int adf4350_tune_r_cnt(struct adf4350_state *st, unsigned short r_cnt)
drivers/iio/frequency/adf4350.c
129
struct adf4350_platform_data *pdata = st->pdata;
drivers/iio/frequency/adf4350.c
133
st->fpfd = (st->clkin * (pdata->ref_doubler_en ? 2 : 1)) /
drivers/iio/frequency/adf4350.c
135
} while (st->fpfd > ADF4350_MAX_FREQ_PFD);
drivers/iio/frequency/adf4350.c
140
static int adf4350_set_freq(struct adf4350_state *st, unsigned long long freq)
drivers/iio/frequency/adf4350.c
142
struct adf4350_platform_data *pdata = st->pdata;
drivers/iio/frequency/adf4350.c
148
if (freq > ADF4350_MAX_OUT_FREQ || freq < st->min_out_freq)
drivers/iio/frequency/adf4350.c
151
st->r4_rf_div_sel = 0;
drivers/iio/frequency/adf4350.c
161
st->r4_rf_div_sel++;
drivers/iio/frequency/adf4350.c
179
chspc = st->chspc;
drivers/iio/frequency/adf4350.c
184
r_cnt = adf4350_tune_r_cnt(st, r_cnt);
drivers/iio/frequency/adf4350.c
185
st->r1_mod = st->fpfd / chspc;
drivers/iio/frequency/adf4350.c
191
} while ((st->r1_mod > ADF4350_MAX_MODULUS) && r_cnt);
drivers/iio/frequency/adf4350.c
194
tmp = freq * (u64)st->r1_mod + (st->fpfd >> 1);
drivers/iio/frequency/adf4350.c
195
do_div(tmp, st->fpfd); /* Div round closest (n + d/2)/d */
drivers/iio/frequency/adf4350.c
196
st->r0_fract = do_div(tmp, st->r1_mod);
drivers/iio/frequency/adf4350.c
197
st->r0_int = tmp;
drivers/iio/frequency/adf4350.c
198
} while (mdiv > st->r0_int);
drivers/iio/frequency/adf4350.c
200
band_sel_div = DIV_ROUND_UP(st->fpfd, ADF4350_MAX_BANDSEL_CLK);
drivers/iio/frequency/adf4350.c
202
if (st->r0_fract && st->r1_mod) {
drivers/iio/frequency/adf4350.c
203
div_gcd = gcd(st->r1_mod, st->r0_fract);
drivers/iio/frequency/adf4350.c
204
st->r1_mod /= div_gcd;
drivers/iio/frequency/adf4350.c
205
st->r0_fract /= div_gcd;
drivers/iio/frequency/adf4350.c
207
st->r0_fract = 0;
drivers/iio/frequency/adf4350.c
208
st->r1_mod = 1;
drivers/iio/frequency/adf4350.c
211
dev_dbg(&st->spi->dev, "VCO: %llu Hz, PFD %lu Hz\n"
drivers/iio/frequency/adf4350.c
214
freq, st->fpfd, r_cnt, st->r0_int, st->r0_fract, st->r1_mod,
drivers/iio/frequency/adf4350.c
215
1 << st->r4_rf_div_sel, prescaler ? "8/9" : "4/5",
drivers/iio/frequency/adf4350.c
218
st->regs[ADF4350_REG0] = ADF4350_REG0_INT(st->r0_int) |
drivers/iio/frequency/adf4350.c
219
ADF4350_REG0_FRACT(st->r0_fract);
drivers/iio/frequency/adf4350.c
221
st->regs[ADF4350_REG1] = ADF4350_REG1_PHASE(1) |
drivers/iio/frequency/adf4350.c
222
ADF4350_REG1_MOD(st->r1_mod) |
drivers/iio/frequency/adf4350.c
225
st->regs[ADF4350_REG2] =
drivers/iio/frequency/adf4350.c
235
st->regs[ADF4350_REG3] = pdata->r3_user_settings &
drivers/iio/frequency/adf4350.c
243
st->regs[ADF4350_REG4] =
drivers/iio/frequency/adf4350.c
245
ADF4350_REG4_RF_DIV_SEL(st->r4_rf_div_sel) |
drivers/iio/frequency/adf4350.c
255
st->regs[ADF4350_REG5] = ADF4350_REG5_LD_PIN_MODE_DIGITAL;
drivers/iio/frequency/adf4350.c
256
st->freq_req = freq;
drivers/iio/frequency/adf4350.c
258
return adf4350_sync_config(st);
drivers/iio/frequency/adf4350.c
266
struct adf4350_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4350.c
275
mutex_lock(&st->lock);
drivers/iio/frequency/adf4350.c
278
ret = adf4350_set_freq(st, readin);
drivers/iio/frequency/adf4350.c
286
if (st->clk) {
drivers/iio/frequency/adf4350.c
287
tmp = clk_round_rate(st->clk, readin);
drivers/iio/frequency/adf4350.c
292
ret = clk_set_rate(st->clk, tmp);
drivers/iio/frequency/adf4350.c
296
st->clkin = readin;
drivers/iio/frequency/adf4350.c
297
ret = adf4350_set_freq(st, st->freq_req);
drivers/iio/frequency/adf4350.c
303
st->chspc = readin;
drivers/iio/frequency/adf4350.c
307
st->regs[ADF4350_REG2] |= ADF4350_REG2_POWER_DOWN_EN;
drivers/iio/frequency/adf4350.c
309
st->regs[ADF4350_REG2] &= ~ADF4350_REG2_POWER_DOWN_EN;
drivers/iio/frequency/adf4350.c
311
adf4350_sync_config(st);
drivers/iio/frequency/adf4350.c
316
mutex_unlock(&st->lock);
drivers/iio/frequency/adf4350.c
326
struct adf4350_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4350.c
330
mutex_lock(&st->lock);
drivers/iio/frequency/adf4350.c
333
val = (u64)((st->r0_int * st->r1_mod) + st->r0_fract) *
drivers/iio/frequency/adf4350.c
334
(u64)st->fpfd;
drivers/iio/frequency/adf4350.c
335
do_div(val, st->r1_mod * (1 << st->r4_rf_div_sel));
drivers/iio/frequency/adf4350.c
337
if (st->lock_detect_gpiod)
drivers/iio/frequency/adf4350.c
338
if (!gpiod_get_value(st->lock_detect_gpiod)) {
drivers/iio/frequency/adf4350.c
339
dev_dbg(&st->spi->dev, "PLL un-locked\n");
drivers/iio/frequency/adf4350.c
344
if (st->clk)
drivers/iio/frequency/adf4350.c
345
st->clkin = clk_get_rate(st->clk);
drivers/iio/frequency/adf4350.c
347
val = st->clkin;
drivers/iio/frequency/adf4350.c
350
val = st->chspc;
drivers/iio/frequency/adf4350.c
353
val = !!(st->regs[ADF4350_REG2] & ADF4350_REG2_POWER_DOWN_EN);
drivers/iio/frequency/adf4350.c
359
mutex_unlock(&st->lock);
drivers/iio/frequency/adf4350.c
397
struct adf4350_state *st = data;
drivers/iio/frequency/adf4350.c
399
of_clk_del_provider(st->spi->dev.of_node);
drivers/iio/frequency/adf4350.c
405
struct adf4350_state *st = to_adf4350_state(hw);
drivers/iio/frequency/adf4350.c
408
tmp = (u64)(st->r0_int * st->r1_mod + st->r0_fract) * st->fpfd;
drivers/iio/frequency/adf4350.c
409
do_div(tmp, st->r1_mod * (1 << st->r4_rf_div_sel));
drivers/iio/frequency/adf4350.c
418
struct adf4350_state *st = to_adf4350_state(hw);
drivers/iio/frequency/adf4350.c
423
st->clkin = parent_rate;
drivers/iio/frequency/adf4350.c
425
return adf4350_set_freq(st, rate);
drivers/iio/frequency/adf4350.c
430
struct adf4350_state *st = to_adf4350_state(hw);
drivers/iio/frequency/adf4350.c
432
st->regs[ADF4350_REG2] &= ~ADF4350_REG2_POWER_DOWN_EN;
drivers/iio/frequency/adf4350.c
434
return adf4350_sync_config(st);
drivers/iio/frequency/adf4350.c
439
struct adf4350_state *st = to_adf4350_state(hw);
drivers/iio/frequency/adf4350.c
441
st->regs[ADF4350_REG2] |= ADF4350_REG2_POWER_DOWN_EN;
drivers/iio/frequency/adf4350.c
443
adf4350_sync_config(st);
drivers/iio/frequency/adf4350.c
448
struct adf4350_state *st = to_adf4350_state(hw);
drivers/iio/frequency/adf4350.c
450
return (st->regs[ADF4350_REG2] & ADF4350_REG2_POWER_DOWN_EN);
drivers/iio/frequency/adf4350.c
461
static int adf4350_clk_register(struct adf4350_state *st)
drivers/iio/frequency/adf4350.c
463
struct spi_device *spi = st->spi;
drivers/iio/frequency/adf4350.c
488
st->hw.init = &init;
drivers/iio/frequency/adf4350.c
489
clk = devm_clk_register(&spi->dev, &st->hw);
drivers/iio/frequency/adf4350.c
497
st->clkout = clk;
drivers/iio/frequency/adf4350.c
499
return devm_add_action_or_reset(&spi->dev, adf4350_clk_del_provider, st);
drivers/iio/frequency/adf4350.c
592
struct adf4350_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4350.c
594
st->regs[ADF4350_REG2] |= ADF4350_REG2_POWER_DOWN_EN;
drivers/iio/frequency/adf4350.c
595
adf4350_sync_config(st);
drivers/iio/frequency/adf4350.c
602
struct adf4350_state *st;
drivers/iio/frequency/adf4350.c
625
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/frequency/adf4350.c
629
st = iio_priv(indio_dev);
drivers/iio/frequency/adf4350.c
635
st->spi = spi;
drivers/iio/frequency/adf4350.c
636
st->pdata = pdata;
drivers/iio/frequency/adf4350.c
644
mutex_init(&st->lock);
drivers/iio/frequency/adf4350.c
646
st->chspc = pdata->channel_spacing;
drivers/iio/frequency/adf4350.c
648
st->clk = clk;
drivers/iio/frequency/adf4350.c
649
st->clkin = clk_get_rate(clk);
drivers/iio/frequency/adf4350.c
651
st->clkin = pdata->clkin;
drivers/iio/frequency/adf4350.c
654
st->min_out_freq = spi_get_device_id(spi)->driver_data == 4351 ?
drivers/iio/frequency/adf4350.c
657
memset(st->regs_hw, 0xFF, sizeof(st->regs_hw));
drivers/iio/frequency/adf4350.c
659
st->lock_detect_gpiod = devm_gpiod_get_optional(&spi->dev, NULL,
drivers/iio/frequency/adf4350.c
661
if (IS_ERR(st->lock_detect_gpiod))
drivers/iio/frequency/adf4350.c
662
return PTR_ERR(st->lock_detect_gpiod);
drivers/iio/frequency/adf4350.c
665
ret = adf4350_set_freq(st, pdata->power_up_frequency);
drivers/iio/frequency/adf4350.c
670
ret = adf4350_clk_register(st);
drivers/iio/frequency/adf4350.c
674
if (!st->clkout) {
drivers/iio/frequency/adf4350.c
78
static int adf4350_sync_config(struct adf4350_state *st)
drivers/iio/frequency/adf4350.c
83
if ((st->regs_hw[i] != st->regs[i]) ||
drivers/iio/frequency/adf4350.c
92
st->val = cpu_to_be32(st->regs[i] | i);
drivers/iio/frequency/adf4350.c
93
ret = spi_write(st->spi, &st->val, 4);
drivers/iio/frequency/adf4350.c
96
st->regs_hw[i] = st->regs[i];
drivers/iio/frequency/adf4350.c
97
dev_dbg(&st->spi->dev, "[%d] 0x%X\n",
drivers/iio/frequency/adf4350.c
98
i, (u32)st->regs[i] | i);
drivers/iio/frequency/adf4371.c
193
static unsigned long long adf4371_pll_fract_n_get_rate(struct adf4371_state *st,
drivers/iio/frequency/adf4371.c
199
val = (((u64)st->integer * ADF4371_MODULUS1) + st->fract1) * st->fpfd;
drivers/iio/frequency/adf4371.c
200
tmp = (u64)st->fract2 * st->fpfd;
drivers/iio/frequency/adf4371.c
201
do_div(tmp, st->mod2);
drivers/iio/frequency/adf4371.c
205
ref_div_sel = st->rf_div_sel;
drivers/iio/frequency/adf4371.c
248
static int adf4371_set_freq(struct adf4371_state *st, unsigned long long freq,
drivers/iio/frequency/adf4371.c
261
st->rf_div_sel = 0;
drivers/iio/frequency/adf4371.c
265
st->rf_div_sel++;
drivers/iio/frequency/adf4371.c
286
adf4371_pll_fract_n_compute(freq, st->fpfd, &st->integer, &st->fract1,
drivers/iio/frequency/adf4371.c
287
&st->fract2, &st->mod2);
drivers/iio/frequency/adf4371.c
288
st->buf[0] = st->integer >> 8;
drivers/iio/frequency/adf4371.c
289
st->buf[1] = 0x40; /* REG12 default */
drivers/iio/frequency/adf4371.c
290
st->buf[2] = 0x00;
drivers/iio/frequency/adf4371.c
291
st->buf[3] = st->fract1 & 0xFF;
drivers/iio/frequency/adf4371.c
292
st->buf[4] = st->fract1 >> 8;
drivers/iio/frequency/adf4371.c
293
st->buf[5] = st->fract1 >> 16;
drivers/iio/frequency/adf4371.c
294
st->buf[6] = ADF4371_FRAC2WORD_L(st->fract2 & 0x7F) |
drivers/iio/frequency/adf4371.c
295
ADF4371_FRAC1WORD(st->fract1 >> 24);
drivers/iio/frequency/adf4371.c
296
st->buf[7] = ADF4371_FRAC2WORD_H(st->fract2 >> 7);
drivers/iio/frequency/adf4371.c
297
st->buf[8] = st->mod2 & 0xFF;
drivers/iio/frequency/adf4371.c
298
st->buf[9] = ADF4371_MOD2WORD(st->mod2 >> 8);
drivers/iio/frequency/adf4371.c
300
ret = regmap_bulk_write(st->regmap, ADF4371_REG(0x11), st->buf, 10);
drivers/iio/frequency/adf4371.c
307
ret = regmap_write(st->regmap, ADF4371_REG(0x1F), st->ref_div_factor);
drivers/iio/frequency/adf4371.c
311
ret = regmap_update_bits(st->regmap, ADF4371_REG(0x24),
drivers/iio/frequency/adf4371.c
313
ADF4371_RF_DIV_SEL(st->rf_div_sel));
drivers/iio/frequency/adf4371.c
317
cp_bleed = DIV_ROUND_UP(400 * 1750, st->integer * 375);
drivers/iio/frequency/adf4371.c
319
ret = regmap_write(st->regmap, ADF4371_REG(0x26), cp_bleed);
drivers/iio/frequency/adf4371.c
326
if (st->fract1 == 0 && st->fract2 == 0)
drivers/iio/frequency/adf4371.c
329
ret = regmap_write(st->regmap, ADF4371_REG(0x2B), int_mode);
drivers/iio/frequency/adf4371.c
333
return regmap_write(st->regmap, ADF4371_REG(0x10), st->integer & 0xFF);
drivers/iio/frequency/adf4371.c
341
struct adf4371_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4371.c
348
val = adf4371_pll_fract_n_get_rate(st, chan->channel);
drivers/iio/frequency/adf4371.c
349
ret = regmap_read(st->regmap, ADF4371_REG(0x7C), &readval);
drivers/iio/frequency/adf4371.c
354
dev_dbg(&st->spi->dev, "PLL un-locked\n");
drivers/iio/frequency/adf4371.c
362
ret = regmap_read(st->regmap, reg, &readval);
drivers/iio/frequency/adf4371.c
384
struct adf4371_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4371.c
390
mutex_lock(&st->lock);
drivers/iio/frequency/adf4371.c
397
ret = adf4371_set_freq(st, freq, chan->channel);
drivers/iio/frequency/adf4371.c
406
ret = regmap_read(st->regmap, reg, &readval);
drivers/iio/frequency/adf4371.c
413
ret = regmap_write(st->regmap, reg, readval);
drivers/iio/frequency/adf4371.c
419
mutex_unlock(&st->lock);
drivers/iio/frequency/adf4371.c
476
struct adf4371_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4371.c
479
return regmap_read(st->regmap, reg, readval);
drivers/iio/frequency/adf4371.c
481
return regmap_write(st->regmap, reg, writeval);
drivers/iio/frequency/adf4371.c
488
static int adf4371_setup(struct adf4371_state *st)
drivers/iio/frequency/adf4371.c
495
ret = regmap_write(st->regmap, ADF4371_REG(0x0), ADF4371_RESET_CMD);
drivers/iio/frequency/adf4371.c
499
ret = regmap_multi_reg_write(st->regmap, adf4371_reg_defaults,
drivers/iio/frequency/adf4371.c
505
if (device_property_read_bool(&st->spi->dev, "adi,mute-till-lock-en")) {
drivers/iio/frequency/adf4371.c
506
ret = regmap_update_bits(st->regmap, ADF4371_REG(0x25),
drivers/iio/frequency/adf4371.c
514
ret = regmap_update_bits(st->regmap, ADF4371_REG(0x0),
drivers/iio/frequency/adf4371.c
520
if ((st->ref_diff_en && st->clkin_freq > ADF4371_MAX_FREQ_REFIN) ||
drivers/iio/frequency/adf4371.c
521
(!st->ref_diff_en && st->clkin_freq > ADF4371_MAX_FREQ_REFIN_SE))
drivers/iio/frequency/adf4371.c
524
if (st->clkin_freq < ADF4371_MAX_CLKIN_DOUB_FREQ &&
drivers/iio/frequency/adf4371.c
525
st->clkin_freq > ADF4371_MIN_CLKIN_DOUB_FREQ)
drivers/iio/frequency/adf4371.c
528
ret = regmap_update_bits(st->regmap, ADF4371_REG(0x22),
drivers/iio/frequency/adf4371.c
532
ADF4371_REFIN_MODE(st->ref_diff_en));
drivers/iio/frequency/adf4371.c
544
st->ref_div_factor++;
drivers/iio/frequency/adf4371.c
545
st->fpfd = st->clkin_freq * (1 + ref_doubler_en) /
drivers/iio/frequency/adf4371.c
546
st->ref_div_factor;
drivers/iio/frequency/adf4371.c
547
} while (st->fpfd > ADF4371_MAX_FREQ_PFD);
drivers/iio/frequency/adf4371.c
550
vco_band_div = DIV_ROUND_UP(st->fpfd, 2400000U);
drivers/iio/frequency/adf4371.c
552
tmp = DIV_ROUND_CLOSEST(st->fpfd, 1000000U);
drivers/iio/frequency/adf4371.c
565
st->buf[0] = vco_band_div;
drivers/iio/frequency/adf4371.c
566
st->buf[1] = timeout & 0xFF;
drivers/iio/frequency/adf4371.c
567
st->buf[2] = ADF4371_TIMEOUT(timeout >> 8) | 0x04;
drivers/iio/frequency/adf4371.c
568
st->buf[3] = synth_timeout;
drivers/iio/frequency/adf4371.c
569
st->buf[4] = ADF4371_VCO_ALC_TOUT(vco_alc_timeout);
drivers/iio/frequency/adf4371.c
571
return regmap_bulk_write(st->regmap, ADF4371_REG(0x30), st->buf, 5);
drivers/iio/frequency/adf4371.c
577
struct adf4371_state *st;
drivers/iio/frequency/adf4371.c
582
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/frequency/adf4371.c
591
st = iio_priv(indio_dev);
drivers/iio/frequency/adf4371.c
592
st->spi = spi;
drivers/iio/frequency/adf4371.c
593
st->regmap = regmap;
drivers/iio/frequency/adf4371.c
594
mutex_init(&st->lock);
drivers/iio/frequency/adf4371.c
596
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/frequency/adf4371.c
597
if (!st->chip_info)
drivers/iio/frequency/adf4371.c
600
indio_dev->name = st->chip_info->name;
drivers/iio/frequency/adf4371.c
603
indio_dev->channels = st->chip_info->channels;
drivers/iio/frequency/adf4371.c
604
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/frequency/adf4371.c
606
st->ref_diff_en = false;
drivers/iio/frequency/adf4371.c
614
st->ref_diff_en = true;
drivers/iio/frequency/adf4371.c
617
st->clkin_freq = clk_get_rate(clkin);
drivers/iio/frequency/adf4371.c
619
ret = adf4371_setup(st);
drivers/iio/frequency/adf4377.c
1000
struct spi_device *spi = st->spi;
drivers/iio/frequency/adf4377.c
1024
st->hw.init = &init;
drivers/iio/frequency/adf4377.c
1025
ret = devm_clk_hw_register(dev, &st->hw);
drivers/iio/frequency/adf4377.c
1029
ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, &st->hw);
drivers/iio/frequency/adf4377.c
1033
st->clkout = st->hw.clk;
drivers/iio/frequency/adf4377.c
1052
struct adf4377_state *st;
drivers/iio/frequency/adf4377.c
1056
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/frequency/adf4377.c
1064
st = iio_priv(indio_dev);
drivers/iio/frequency/adf4377.c
1069
st->regmap = regmap;
drivers/iio/frequency/adf4377.c
1070
st->spi = spi;
drivers/iio/frequency/adf4377.c
1071
st->chip_info = spi_get_device_match_data(spi);
drivers/iio/frequency/adf4377.c
1072
mutex_init(&st->lock);
drivers/iio/frequency/adf4377.c
1074
ret = adf4377_properties_parse(st);
drivers/iio/frequency/adf4377.c
1078
st->nb.notifier_call = adf4377_freq_change;
drivers/iio/frequency/adf4377.c
1079
ret = devm_clk_notifier_register(dev, st->clkin, &st->nb);
drivers/iio/frequency/adf4377.c
1083
ret = adf4377_init(st);
drivers/iio/frequency/adf4377.c
1087
ret = adf4377_clk_register(st);
drivers/iio/frequency/adf4377.c
1091
if (!st->clkout) {
drivers/iio/frequency/adf4377.c
486
struct adf4377_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4377.c
489
return regmap_read(st->regmap, reg, read_val);
drivers/iio/frequency/adf4377.c
491
return regmap_write(st->regmap, reg, write_val);
drivers/iio/frequency/adf4377.c
498
static int adf4377_soft_reset(struct adf4377_state *st)
drivers/iio/frequency/adf4377.c
503
ret = regmap_update_bits(st->regmap, 0x0, ADF4377_0000_SOFT_RESET_MSK |
drivers/iio/frequency/adf4377.c
510
return regmap_read_poll_timeout(st->regmap, 0x0, read_val,
drivers/iio/frequency/adf4377.c
515
static int adf4377_get_freq(struct adf4377_state *st, u64 *freq)
drivers/iio/frequency/adf4377.c
521
mutex_lock(&st->lock);
drivers/iio/frequency/adf4377.c
522
ret = regmap_read(st->regmap, 0x12, &ref_div_factor);
drivers/iio/frequency/adf4377.c
526
ret = regmap_bulk_read(st->regmap, 0x10, st->buf, sizeof(st->buf));
drivers/iio/frequency/adf4377.c
530
clkin_freq = clk_get_rate(st->clkin);
drivers/iio/frequency/adf4377.c
533
get_unaligned_le16(&st->buf));
drivers/iio/frequency/adf4377.c
537
mutex_unlock(&st->lock);
drivers/iio/frequency/adf4377.c
542
static int adf4377_set_freq(struct adf4377_state *st, u64 freq)
drivers/iio/frequency/adf4377.c
548
mutex_lock(&st->lock);
drivers/iio/frequency/adf4377.c
555
ret = regmap_update_bits(st->regmap, 0x1C, ADF4377_001C_EN_DNCLK_MSK |
drivers/iio/frequency/adf4377.c
562
ret = regmap_update_bits(st->regmap, 0x11, ADF4377_0011_EN_AUTOCAL_MSK |
drivers/iio/frequency/adf4377.c
565
FIELD_PREP(ADF4377_0011_DCLK_DIV2_MSK, st->dclk_div2));
drivers/iio/frequency/adf4377.c
569
ret = regmap_update_bits(st->regmap, 0x2E, ADF4377_002E_EN_ADC_CNV_MSK |
drivers/iio/frequency/adf4377.c
579
ret = regmap_update_bits(st->regmap, 0x20, ADF4377_0020_EN_ADC_CLK_MSK,
drivers/iio/frequency/adf4377.c
584
ret = regmap_update_bits(st->regmap, 0x2F, ADF4377_002F_DCLK_DIV1_MSK,
drivers/iio/frequency/adf4377.c
585
FIELD_PREP(ADF4377_002F_DCLK_DIV1_MSK, st->dclk_div1));
drivers/iio/frequency/adf4377.c
589
ret = regmap_update_bits(st->regmap, 0x24, ADF4377_0024_DCLK_MODE_MSK,
drivers/iio/frequency/adf4377.c
590
FIELD_PREP(ADF4377_0024_DCLK_MODE_MSK, st->dclk_mode));
drivers/iio/frequency/adf4377.c
594
ret = regmap_write(st->regmap, 0x27,
drivers/iio/frequency/adf4377.c
596
st->synth_lock_timeout));
drivers/iio/frequency/adf4377.c
600
ret = regmap_update_bits(st->regmap, 0x28, ADF4377_0028_SYNTH_LOCK_TO_MSB_MSK,
drivers/iio/frequency/adf4377.c
602
st->synth_lock_timeout >> 8));
drivers/iio/frequency/adf4377.c
606
ret = regmap_write(st->regmap, 0x29,
drivers/iio/frequency/adf4377.c
608
st->vco_alc_timeout));
drivers/iio/frequency/adf4377.c
612
ret = regmap_update_bits(st->regmap, 0x2A, ADF4377_002A_VCO_ALC_TO_MSB_MSK,
drivers/iio/frequency/adf4377.c
614
st->vco_alc_timeout >> 8));
drivers/iio/frequency/adf4377.c
618
ret = regmap_write(st->regmap, 0x26,
drivers/iio/frequency/adf4377.c
619
FIELD_PREP(ADF4377_0026_VCO_BAND_DIV_MSK, st->vco_band_div));
drivers/iio/frequency/adf4377.c
623
ret = regmap_write(st->regmap, 0x2D,
drivers/iio/frequency/adf4377.c
624
FIELD_PREP(ADF4377_002D_ADC_CLK_DIV_MSK, st->adc_clk_div));
drivers/iio/frequency/adf4377.c
628
st->clkout_div_sel = 0;
drivers/iio/frequency/adf4377.c
634
st->clkout_div_sel++;
drivers/iio/frequency/adf4377.c
637
st->n_int = div_u64(freq, st->f_pfd);
drivers/iio/frequency/adf4377.c
639
ret = regmap_update_bits(st->regmap, 0x11, ADF4377_0011_EN_RDBLR_MSK |
drivers/iio/frequency/adf4377.c
642
FIELD_PREP(ADF4377_0011_N_INT_MSB_MSK, st->n_int >> 8));
drivers/iio/frequency/adf4377.c
646
ret = regmap_update_bits(st->regmap, 0x12, ADF4377_0012_R_DIV_MSK |
drivers/iio/frequency/adf4377.c
648
FIELD_PREP(ADF4377_0012_CLKOUT_DIV_MSK, st->clkout_div_sel) |
drivers/iio/frequency/adf4377.c
649
FIELD_PREP(ADF4377_0012_R_DIV_MSK, st->ref_div_factor));
drivers/iio/frequency/adf4377.c
653
ret = regmap_write(st->regmap, 0x10,
drivers/iio/frequency/adf4377.c
654
FIELD_PREP(ADF4377_0010_N_INT_LSB_MSK, st->n_int));
drivers/iio/frequency/adf4377.c
658
ret = regmap_read_poll_timeout(st->regmap, 0x49, read_val,
drivers/iio/frequency/adf4377.c
664
ret = regmap_update_bits(st->regmap, 0x1C, ADF4377_001C_EN_DNCLK_MSK |
drivers/iio/frequency/adf4377.c
672
ret = regmap_update_bits(st->regmap, 0x20, ADF4377_0020_EN_ADC_CLK_MSK,
drivers/iio/frequency/adf4377.c
678
ret = regmap_update_bits(st->regmap, 0x19, ADF4377_0019_CLKOUT2_OP_MSK |
drivers/iio/frequency/adf4377.c
686
mutex_unlock(&st->lock);
drivers/iio/frequency/adf4377.c
691
static void adf4377_gpio_init(struct adf4377_state *st)
drivers/iio/frequency/adf4377.c
693
if (st->gpio_ce) {
drivers/iio/frequency/adf4377.c
694
gpiod_set_value(st->gpio_ce, 1);
drivers/iio/frequency/adf4377.c
700
if (st->gpio_enclk1)
drivers/iio/frequency/adf4377.c
701
gpiod_set_value(st->gpio_enclk1, 1);
drivers/iio/frequency/adf4377.c
703
if (st->gpio_enclk2)
drivers/iio/frequency/adf4377.c
704
gpiod_set_value(st->gpio_enclk2, 1);
drivers/iio/frequency/adf4377.c
707
static int adf4377_init(struct adf4377_state *st)
drivers/iio/frequency/adf4377.c
709
struct device *dev = &st->spi->dev;
drivers/iio/frequency/adf4377.c
712
adf4377_gpio_init(st);
drivers/iio/frequency/adf4377.c
714
ret = adf4377_soft_reset(st);
drivers/iio/frequency/adf4377.c
718
ret = regmap_multi_reg_write(st->regmap, adf4377_reg_defaults,
drivers/iio/frequency/adf4377.c
724
ret = regmap_update_bits(st->regmap, 0x00,
drivers/iio/frequency/adf4377.c
734
st->clkin_freq = clk_get_rate(st->clkin);
drivers/iio/frequency/adf4377.c
737
ret = regmap_write(st->regmap, 0x1a,
drivers/iio/frequency/adf4377.c
751
ret = regmap_update_bits(st->regmap, 0x1D,
drivers/iio/frequency/adf4377.c
753
FIELD_PREP(ADF4377_001D_MUXOUT_MSK, st->muxout_select));
drivers/iio/frequency/adf4377.c
758
st->ref_div_factor = 0;
drivers/iio/frequency/adf4377.c
760
st->ref_div_factor++;
drivers/iio/frequency/adf4377.c
761
st->f_pfd = st->clkin_freq / st->ref_div_factor;
drivers/iio/frequency/adf4377.c
762
} while (st->f_pfd > ADF4377_MAX_FREQ_PFD);
drivers/iio/frequency/adf4377.c
764
if (st->f_pfd > ADF4377_MAX_FREQ_PFD || st->f_pfd < ADF4377_MIN_FREQ_PFD)
drivers/iio/frequency/adf4377.c
767
st->f_div_rclk = st->f_pfd;
drivers/iio/frequency/adf4377.c
769
if (st->f_pfd <= ADF4377_FREQ_PFD_80MHZ) {
drivers/iio/frequency/adf4377.c
770
st->dclk_div1 = ADF4377_002F_DCLK_DIV1_1;
drivers/iio/frequency/adf4377.c
771
st->dclk_div2 = ADF4377_0011_DCLK_DIV2_1;
drivers/iio/frequency/adf4377.c
772
st->dclk_mode = 0;
drivers/iio/frequency/adf4377.c
773
} else if (st->f_pfd <= ADF4377_FREQ_PFD_125MHZ) {
drivers/iio/frequency/adf4377.c
774
st->dclk_div1 = ADF4377_002F_DCLK_DIV1_1;
drivers/iio/frequency/adf4377.c
775
st->dclk_div2 = ADF4377_0011_DCLK_DIV2_1;
drivers/iio/frequency/adf4377.c
776
st->dclk_mode = 1;
drivers/iio/frequency/adf4377.c
777
} else if (st->f_pfd <= ADF4377_FREQ_PFD_160MHZ) {
drivers/iio/frequency/adf4377.c
778
st->dclk_div1 = ADF4377_002F_DCLK_DIV1_2;
drivers/iio/frequency/adf4377.c
779
st->dclk_div2 = ADF4377_0011_DCLK_DIV2_1;
drivers/iio/frequency/adf4377.c
780
st->dclk_mode = 0;
drivers/iio/frequency/adf4377.c
781
st->f_div_rclk /= 2;
drivers/iio/frequency/adf4377.c
782
} else if (st->f_pfd <= ADF4377_FREQ_PFD_250MHZ) {
drivers/iio/frequency/adf4377.c
783
st->dclk_div1 = ADF4377_002F_DCLK_DIV1_2;
drivers/iio/frequency/adf4377.c
784
st->dclk_div2 = ADF4377_0011_DCLK_DIV2_1;
drivers/iio/frequency/adf4377.c
785
st->dclk_mode = 1;
drivers/iio/frequency/adf4377.c
786
st->f_div_rclk /= 2;
drivers/iio/frequency/adf4377.c
787
} else if (st->f_pfd <= ADF4377_FREQ_PFD_320MHZ) {
drivers/iio/frequency/adf4377.c
788
st->dclk_div1 = ADF4377_002F_DCLK_DIV1_2;
drivers/iio/frequency/adf4377.c
789
st->dclk_div2 = ADF4377_0011_DCLK_DIV2_2;
drivers/iio/frequency/adf4377.c
790
st->dclk_mode = 0;
drivers/iio/frequency/adf4377.c
791
st->f_div_rclk /= 4;
drivers/iio/frequency/adf4377.c
793
st->dclk_div1 = ADF4377_002F_DCLK_DIV1_2;
drivers/iio/frequency/adf4377.c
794
st->dclk_div2 = ADF4377_0011_DCLK_DIV2_2;
drivers/iio/frequency/adf4377.c
795
st->dclk_mode = 1;
drivers/iio/frequency/adf4377.c
796
st->f_div_rclk /= 4;
drivers/iio/frequency/adf4377.c
799
st->synth_lock_timeout = DIV_ROUND_UP(st->f_div_rclk, 50000);
drivers/iio/frequency/adf4377.c
800
st->vco_alc_timeout = DIV_ROUND_UP(st->f_div_rclk, 20000);
drivers/iio/frequency/adf4377.c
801
st->vco_band_div = DIV_ROUND_UP(st->f_div_rclk, 150000 * 16 * (1 << st->dclk_mode));
drivers/iio/frequency/adf4377.c
802
st->adc_clk_div = DIV_ROUND_UP((st->f_div_rclk / 400000 - 2), 4);
drivers/iio/frequency/adf4377.c
810
struct adf4377_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4377.c
816
ret = adf4377_get_freq(st, &val);
drivers/iio/frequency/adf4377.c
830
struct adf4377_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adf4377.c
840
ret = adf4377_set_freq(st, freq);
drivers/iio/frequency/adf4377.c
878
static int adf4377_properties_parse(struct adf4377_state *st)
drivers/iio/frequency/adf4377.c
880
struct device *dev = &st->spi->dev;
drivers/iio/frequency/adf4377.c
883
st->clkin = devm_clk_get_enabled(dev, "ref_in");
drivers/iio/frequency/adf4377.c
884
if (IS_ERR(st->clkin))
drivers/iio/frequency/adf4377.c
885
return dev_err_probe(dev, PTR_ERR(st->clkin),
drivers/iio/frequency/adf4377.c
888
st->gpio_ce = devm_gpiod_get_optional(dev, "chip-enable",
drivers/iio/frequency/adf4377.c
890
if (IS_ERR(st->gpio_ce))
drivers/iio/frequency/adf4377.c
891
return dev_err_probe(dev, PTR_ERR(st->gpio_ce),
drivers/iio/frequency/adf4377.c
894
st->gpio_enclk1 = devm_gpiod_get_optional(dev, "clk1-enable",
drivers/iio/frequency/adf4377.c
896
if (IS_ERR(st->gpio_enclk1))
drivers/iio/frequency/adf4377.c
897
return dev_err_probe(dev, PTR_ERR(st->gpio_enclk1),
drivers/iio/frequency/adf4377.c
900
if (st->chip_info->has_gpio_enclk2) {
drivers/iio/frequency/adf4377.c
901
st->gpio_enclk2 = devm_gpiod_get_optional(dev, "clk2-enable",
drivers/iio/frequency/adf4377.c
903
if (IS_ERR(st->gpio_enclk2))
drivers/iio/frequency/adf4377.c
904
return dev_err_probe(dev, PTR_ERR(st->gpio_enclk2),
drivers/iio/frequency/adf4377.c
912
st->muxout_select = ret;
drivers/iio/frequency/adf4377.c
914
st->muxout_select = ADF4377_MUXOUT_HIGH_Z;
drivers/iio/frequency/adf4377.c
921
struct adf4377_state *st = container_of(nb, struct adf4377_state, nb);
drivers/iio/frequency/adf4377.c
925
mutex_lock(&st->lock);
drivers/iio/frequency/adf4377.c
926
ret = notifier_from_errno(adf4377_init(st));
drivers/iio/frequency/adf4377.c
927
mutex_unlock(&st->lock);
drivers/iio/frequency/adf4377.c
937
struct adf4377_state *st = to_adf4377_state(hw);
drivers/iio/frequency/adf4377.c
941
ret = adf4377_get_freq(st, &freq);
drivers/iio/frequency/adf4377.c
952
struct adf4377_state *st = to_adf4377_state(hw);
drivers/iio/frequency/adf4377.c
954
return adf4377_set_freq(st, rate);
drivers/iio/frequency/adf4377.c
959
struct adf4377_state *st = to_adf4377_state(hw);
drivers/iio/frequency/adf4377.c
961
return regmap_update_bits(st->regmap, 0x1a, ADF4377_001A_PD_CLKOUT1_MSK |
drivers/iio/frequency/adf4377.c
969
struct adf4377_state *st = to_adf4377_state(hw);
drivers/iio/frequency/adf4377.c
971
regmap_update_bits(st->regmap, 0x1a, ADF4377_001A_PD_CLKOUT1_MSK |
drivers/iio/frequency/adf4377.c
979
struct adf4377_state *st = to_adf4377_state(hw);
drivers/iio/frequency/adf4377.c
983
ret = regmap_read(st->regmap, 0x1a, &readval);
drivers/iio/frequency/adf4377.c
998
static int adf4377_clk_register(struct adf4377_state *st)
drivers/iio/frequency/admfm2000.c
101
struct admfm2000_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admfm2000.c
114
mutex_lock(&st->lock);
drivers/iio/frequency/admfm2000.c
115
st->gain[chan->channel] = ~((abs(gain) / 1000) & 0x1F);
drivers/iio/frequency/admfm2000.c
118
st->gain[chan->channel]);
drivers/iio/frequency/admfm2000.c
119
mutex_unlock(&st->lock);
drivers/iio/frequency/admfm2000.c
157
static int admfm2000_channel_config(struct admfm2000_state *st,
drivers/iio/frequency/admfm2000.c
185
sw = st->sw1_ch;
drivers/iio/frequency/admfm2000.c
186
dsa = st->dsa1_gpios;
drivers/iio/frequency/admfm2000.c
189
sw = st->sw2_ch;
drivers/iio/frequency/admfm2000.c
190
dsa = st->dsa2_gpios;
drivers/iio/frequency/admfm2000.c
224
struct admfm2000_state *st;
drivers/iio/frequency/admfm2000.c
228
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/frequency/admfm2000.c
232
st = iio_priv(indio_dev);
drivers/iio/frequency/admfm2000.c
240
st->gain[0] = ADMFM2000_DEFAULT_GAIN;
drivers/iio/frequency/admfm2000.c
241
st->gain[1] = ADMFM2000_DEFAULT_GAIN;
drivers/iio/frequency/admfm2000.c
243
mutex_init(&st->lock);
drivers/iio/frequency/admfm2000.c
245
ret = admfm2000_channel_config(st, indio_dev);
drivers/iio/frequency/admfm2000.c
36
struct admfm2000_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admfm2000.c
42
gpiod_set_value_cansleep(st->sw1_ch[i], (chan == 0) ? 1 : 0);
drivers/iio/frequency/admfm2000.c
43
gpiod_set_value_cansleep(st->sw2_ch[i], (chan == 0) ? 0 : 1);
drivers/iio/frequency/admfm2000.c
48
gpiod_set_value_cansleep(st->sw1_ch[i], (chan == 0) ? 0 : 1);
drivers/iio/frequency/admfm2000.c
49
gpiod_set_value_cansleep(st->sw2_ch[i], (chan == 0) ? 1 : 0);
drivers/iio/frequency/admfm2000.c
59
struct admfm2000_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admfm2000.c
65
gpiod_set_value_cansleep(st->dsa1_gpios[i], value & (1 << i));
drivers/iio/frequency/admfm2000.c
69
gpiod_set_value_cansleep(st->dsa2_gpios[i], value & (1 << i));
drivers/iio/frequency/admfm2000.c
80
struct admfm2000_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admfm2000.c
85
mutex_lock(&st->lock);
drivers/iio/frequency/admfm2000.c
86
gain = ~(st->gain[chan->channel]) * -1000;
drivers/iio/frequency/admfm2000.c
89
mutex_unlock(&st->lock);
drivers/iio/frequency/admv1013.c
104
static int __admv1013_spi_read(struct admv1013_state *st, unsigned int reg,
drivers/iio/frequency/admv1013.c
110
st->data[0] = ADMV1013_READ | FIELD_PREP(ADMV1013_REG_ADDR_READ_MSK, reg);
drivers/iio/frequency/admv1013.c
111
st->data[1] = 0x0;
drivers/iio/frequency/admv1013.c
112
st->data[2] = 0x0;
drivers/iio/frequency/admv1013.c
114
t.rx_buf = &st->data[0];
drivers/iio/frequency/admv1013.c
115
t.tx_buf = &st->data[0];
drivers/iio/frequency/admv1013.c
118
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/frequency/admv1013.c
122
*val = FIELD_GET(ADMV1013_REG_DATA_MSK, get_unaligned_be24(&st->data[0]));
drivers/iio/frequency/admv1013.c
127
static int admv1013_spi_read(struct admv1013_state *st, unsigned int reg,
drivers/iio/frequency/admv1013.c
132
mutex_lock(&st->lock);
drivers/iio/frequency/admv1013.c
133
ret = __admv1013_spi_read(st, reg, val);
drivers/iio/frequency/admv1013.c
134
mutex_unlock(&st->lock);
drivers/iio/frequency/admv1013.c
139
static int __admv1013_spi_write(struct admv1013_state *st,
drivers/iio/frequency/admv1013.c
144
FIELD_PREP(ADMV1013_REG_ADDR_WRITE_MSK, reg), &st->data[0]);
drivers/iio/frequency/admv1013.c
146
return spi_write(st->spi, &st->data[0], 3);
drivers/iio/frequency/admv1013.c
149
static int admv1013_spi_write(struct admv1013_state *st, unsigned int reg,
drivers/iio/frequency/admv1013.c
154
mutex_lock(&st->lock);
drivers/iio/frequency/admv1013.c
155
ret = __admv1013_spi_write(st, reg, val);
drivers/iio/frequency/admv1013.c
156
mutex_unlock(&st->lock);
drivers/iio/frequency/admv1013.c
161
static int __admv1013_spi_update_bits(struct admv1013_state *st, unsigned int reg,
drivers/iio/frequency/admv1013.c
167
ret = __admv1013_spi_read(st, reg, &data);
drivers/iio/frequency/admv1013.c
173
return __admv1013_spi_write(st, reg, temp);
drivers/iio/frequency/admv1013.c
176
static int admv1013_spi_update_bits(struct admv1013_state *st, unsigned int reg,
drivers/iio/frequency/admv1013.c
181
mutex_lock(&st->lock);
drivers/iio/frequency/admv1013.c
182
ret = __admv1013_spi_update_bits(st, reg, mask, val);
drivers/iio/frequency/admv1013.c
183
mutex_unlock(&st->lock);
drivers/iio/frequency/admv1013.c
192
struct admv1013_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1013.c
209
ret = admv1013_spi_read(st, addr, &data);
drivers/iio/frequency/admv1013.c
228
struct admv1013_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1013.c
252
return admv1013_spi_update_bits(st, addr, msk, data);
drivers/iio/frequency/admv1013.c
263
struct admv1013_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1013.c
278
ret = admv1013_spi_read(st, addr, &data);
drivers/iio/frequency/admv1013.c
292
struct admv1013_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1013.c
304
ret = admv1013_spi_update_bits(st, ADMV1013_REG_LO_AMP_I,
drivers/iio/frequency/admv1013.c
311
ret = admv1013_spi_update_bits(st, ADMV1013_REG_LO_AMP_Q,
drivers/iio/frequency/admv1013.c
324
static int admv1013_update_quad_filters(struct admv1013_state *st)
drivers/iio/frequency/admv1013.c
327
u64 rate = clk_get_rate(st->clkin);
drivers/iio/frequency/admv1013.c
338
return __admv1013_spi_update_bits(st, ADMV1013_REG_QUAD,
drivers/iio/frequency/admv1013.c
343
static int admv1013_update_mixer_vgate(struct admv1013_state *st, int vcm)
drivers/iio/frequency/admv1013.c
354
return __admv1013_spi_update_bits(st, ADMV1013_REG_LO_AMP_I,
drivers/iio/frequency/admv1013.c
364
struct admv1013_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1013.c
367
return admv1013_spi_read(st, reg, read_val);
drivers/iio/frequency/admv1013.c
369
return admv1013_spi_write(st, reg, write_val);
drivers/iio/frequency/admv1013.c
385
struct admv1013_state *st = container_of(nb, struct admv1013_state, nb);
drivers/iio/frequency/admv1013.c
389
mutex_lock(&st->lock);
drivers/iio/frequency/admv1013.c
390
ret = notifier_from_errno(admv1013_update_quad_filters(st));
drivers/iio/frequency/admv1013.c
391
mutex_unlock(&st->lock);
drivers/iio/frequency/admv1013.c
439
static int admv1013_init(struct admv1013_state *st, int vcm_uv)
drivers/iio/frequency/admv1013.c
443
struct device *dev = &st->spi->dev;
drivers/iio/frequency/admv1013.c
446
ret = __admv1013_spi_update_bits(st, ADMV1013_REG_SPI_CONTROL,
drivers/iio/frequency/admv1013.c
452
ret = __admv1013_spi_update_bits(st, ADMV1013_REG_SPI_CONTROL,
drivers/iio/frequency/admv1013.c
458
ret = __admv1013_spi_read(st, ADMV1013_REG_SPI_CONTROL, &data);
drivers/iio/frequency/admv1013.c
466
ret = __admv1013_spi_write(st, ADMV1013_REG_VVA_TEMP_COMP, 0xE700);
drivers/iio/frequency/admv1013.c
470
switch (st->quad_se_mode) {
drivers/iio/frequency/admv1013.c
484
ret = __admv1013_spi_update_bits(st, ADMV1013_REG_QUAD,
drivers/iio/frequency/admv1013.c
490
ret = admv1013_update_mixer_vgate(st, vcm_uv);
drivers/iio/frequency/admv1013.c
494
ret = admv1013_update_quad_filters(st);
drivers/iio/frequency/admv1013.c
498
return __admv1013_spi_update_bits(st, ADMV1013_REG_ENABLE,
drivers/iio/frequency/admv1013.c
501
st->det_en |
drivers/iio/frequency/admv1013.c
502
st->input_mode);
drivers/iio/frequency/admv1013.c
538
static int admv1013_properties_parse(struct admv1013_state *st)
drivers/iio/frequency/admv1013.c
541
struct device *dev = &st->spi->dev;
drivers/iio/frequency/admv1013.c
543
st->det_en = device_property_read_bool(dev, "adi,detector-enable");
drivers/iio/frequency/admv1013.c
548
st->input_mode = ret >= 0 ? ret : ADMV1013_IQ_MODE;
drivers/iio/frequency/admv1013.c
553
st->quad_se_mode = ret >= 0 ? ret : ADMV1013_SE_MODE_DIFF;
drivers/iio/frequency/admv1013.c
570
struct admv1013_state *st;
drivers/iio/frequency/admv1013.c
574
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/frequency/admv1013.c
578
st = iio_priv(indio_dev);
drivers/iio/frequency/admv1013.c
585
st->spi = spi;
drivers/iio/frequency/admv1013.c
587
ret = admv1013_properties_parse(st);
drivers/iio/frequency/admv1013.c
598
st->clkin = devm_clk_get_enabled(dev, "lo_in");
drivers/iio/frequency/admv1013.c
599
if (IS_ERR(st->clkin))
drivers/iio/frequency/admv1013.c
600
return dev_err_probe(dev, PTR_ERR(st->clkin),
drivers/iio/frequency/admv1013.c
603
st->nb.notifier_call = admv1013_freq_change;
drivers/iio/frequency/admv1013.c
604
ret = devm_clk_notifier_register(dev, st->clkin, &st->nb);
drivers/iio/frequency/admv1013.c
608
mutex_init(&st->lock);
drivers/iio/frequency/admv1013.c
610
ret = admv1013_init(st, vcm_uv);
drivers/iio/frequency/admv1013.c
614
ret = devm_add_action_or_reset(dev, admv1013_powerdown, st);
drivers/iio/frequency/admv1014.c
135
static int __admv1014_spi_read(struct admv1014_state *st, unsigned int reg,
drivers/iio/frequency/admv1014.c
141
st->data[0] = ADMV1014_READ | FIELD_PREP(ADMV1014_REG_ADDR_READ_MSK, reg);
drivers/iio/frequency/admv1014.c
142
st->data[1] = 0;
drivers/iio/frequency/admv1014.c
143
st->data[2] = 0;
drivers/iio/frequency/admv1014.c
145
t.rx_buf = &st->data[0];
drivers/iio/frequency/admv1014.c
146
t.tx_buf = &st->data[0];
drivers/iio/frequency/admv1014.c
147
t.len = sizeof(st->data);
drivers/iio/frequency/admv1014.c
149
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/frequency/admv1014.c
153
*val = FIELD_GET(ADMV1014_REG_DATA_MSK, get_unaligned_be24(&st->data[0]));
drivers/iio/frequency/admv1014.c
158
static int admv1014_spi_read(struct admv1014_state *st, unsigned int reg,
drivers/iio/frequency/admv1014.c
163
mutex_lock(&st->lock);
drivers/iio/frequency/admv1014.c
164
ret = __admv1014_spi_read(st, reg, val);
drivers/iio/frequency/admv1014.c
165
mutex_unlock(&st->lock);
drivers/iio/frequency/admv1014.c
170
static int __admv1014_spi_write(struct admv1014_state *st,
drivers/iio/frequency/admv1014.c
175
FIELD_PREP(ADMV1014_REG_ADDR_WRITE_MSK, reg), &st->data[0]);
drivers/iio/frequency/admv1014.c
177
return spi_write(st->spi, &st->data[0], 3);
drivers/iio/frequency/admv1014.c
180
static int admv1014_spi_write(struct admv1014_state *st, unsigned int reg,
drivers/iio/frequency/admv1014.c
185
mutex_lock(&st->lock);
drivers/iio/frequency/admv1014.c
186
ret = __admv1014_spi_write(st, reg, val);
drivers/iio/frequency/admv1014.c
187
mutex_unlock(&st->lock);
drivers/iio/frequency/admv1014.c
192
static int __admv1014_spi_update_bits(struct admv1014_state *st, unsigned int reg,
drivers/iio/frequency/admv1014.c
198
ret = __admv1014_spi_read(st, reg, &data);
drivers/iio/frequency/admv1014.c
204
return __admv1014_spi_write(st, reg, temp);
drivers/iio/frequency/admv1014.c
207
static int admv1014_spi_update_bits(struct admv1014_state *st, unsigned int reg,
drivers/iio/frequency/admv1014.c
212
mutex_lock(&st->lock);
drivers/iio/frequency/admv1014.c
213
ret = __admv1014_spi_update_bits(st, reg, mask, val);
drivers/iio/frequency/admv1014.c
214
mutex_unlock(&st->lock);
drivers/iio/frequency/admv1014.c
219
static int admv1014_update_quad_filters(struct admv1014_state *st)
drivers/iio/frequency/admv1014.c
222
u64 rate = clk_get_rate(st->clkin);
drivers/iio/frequency/admv1014.c
233
return __admv1014_spi_update_bits(st, ADMV1014_REG_QUAD,
drivers/iio/frequency/admv1014.c
238
static int admv1014_update_vcm_settings(struct admv1014_state *st)
drivers/iio/frequency/admv1014.c
243
vcm_mv = regulator_get_voltage(st->regulators[0].consumer) / 1000;
drivers/iio/frequency/admv1014.c
249
ret = __admv1014_spi_update_bits(st, ADMV1014_REG_MIXER,
drivers/iio/frequency/admv1014.c
259
return __admv1014_spi_update_bits(st, ADMV1014_REG_BB_AMP_AGC,
drivers/iio/frequency/admv1014.c
273
struct admv1014_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1014.c
279
ret = admv1014_spi_read(st, ADMV1014_REG_IF_AMP_BB_AMP, &data);
drivers/iio/frequency/admv1014.c
290
ret = admv1014_spi_read(st, ADMV1014_REG_LO_AMP_PHASE_ADJUST1, &data);
drivers/iio/frequency/admv1014.c
301
ret = admv1014_spi_read(st, ADMV1014_REG_MIXER, &data);
drivers/iio/frequency/admv1014.c
308
ret = admv1014_spi_read(st, ADMV1014_REG_BB_AMP_AGC, &data);
drivers/iio/frequency/admv1014.c
325
struct admv1014_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1014.c
337
return admv1014_spi_update_bits(st, ADMV1014_REG_IF_AMP_BB_AMP, msk, data);
drivers/iio/frequency/admv1014.c
347
return admv1014_spi_update_bits(st, ADMV1014_REG_LO_AMP_PHASE_ADJUST1, msk, data);
drivers/iio/frequency/admv1014.c
349
return admv1014_spi_update_bits(st, ADMV1014_REG_MIXER,
drivers/iio/frequency/admv1014.c
353
return admv1014_spi_update_bits(st, ADMV1014_REG_BB_AMP_AGC,
drivers/iio/frequency/admv1014.c
366
struct admv1014_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1014.c
373
ret = admv1014_spi_read(st, ADMV1014_REG_IF_AMP, &data);
drivers/iio/frequency/admv1014.c
379
ret = admv1014_spi_read(st, ADMV1014_REG_IF_AMP_BB_AMP, &data);
drivers/iio/frequency/admv1014.c
387
ret = admv1014_spi_read(st, ADMV1014_REG_IF_AMP, &data);
drivers/iio/frequency/admv1014.c
408
struct admv1014_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1014.c
443
ret = admv1014_spi_update_bits(st, addr, msk, data);
drivers/iio/frequency/admv1014.c
470
struct admv1014_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv1014.c
473
return admv1014_spi_read(st, reg, read_val);
drivers/iio/frequency/admv1014.c
475
return admv1014_spi_write(st, reg, write_val);
drivers/iio/frequency/admv1014.c
492
struct admv1014_state *st = container_of(nb, struct admv1014_state, nb);
drivers/iio/frequency/admv1014.c
496
mutex_lock(&st->lock);
drivers/iio/frequency/admv1014.c
497
ret = notifier_from_errno(admv1014_update_quad_filters(st));
drivers/iio/frequency/admv1014.c
498
mutex_unlock(&st->lock);
drivers/iio/frequency/admv1014.c
608
static int admv1014_init(struct admv1014_state *st)
drivers/iio/frequency/admv1014.c
611
struct spi_device *spi = st->spi;
drivers/iio/frequency/admv1014.c
615
ret = regulator_bulk_enable(ADMV1014_NUM_REGULATORS, st->regulators);
drivers/iio/frequency/admv1014.c
619
ret = devm_add_action_or_reset(dev, admv1014_reg_disable, st->regulators);
drivers/iio/frequency/admv1014.c
623
ret = clk_prepare_enable(st->clkin);
drivers/iio/frequency/admv1014.c
627
ret = devm_add_action_or_reset(dev, admv1014_clk_disable, st->clkin);
drivers/iio/frequency/admv1014.c
631
st->nb.notifier_call = admv1014_freq_change;
drivers/iio/frequency/admv1014.c
632
ret = devm_clk_notifier_register(dev, st->clkin, &st->nb);
drivers/iio/frequency/admv1014.c
636
ret = devm_add_action_or_reset(dev, admv1014_powerdown, st);
drivers/iio/frequency/admv1014.c
641
ret = __admv1014_spi_update_bits(st, ADMV1014_REG_SPI_CONTROL,
drivers/iio/frequency/admv1014.c
648
ret = __admv1014_spi_update_bits(st, ADMV1014_REG_SPI_CONTROL,
drivers/iio/frequency/admv1014.c
655
ret = __admv1014_spi_write(st, ADMV1014_REG_VVA_TEMP_COMP, 0x727C);
drivers/iio/frequency/admv1014.c
660
ret = __admv1014_spi_read(st, ADMV1014_REG_SPI_CONTROL, &chip_id);
drivers/iio/frequency/admv1014.c
668
ret = __admv1014_spi_update_bits(st, ADMV1014_REG_QUAD,
drivers/iio/frequency/admv1014.c
671
st->quad_se_mode));
drivers/iio/frequency/admv1014.c
676
ret = admv1014_update_quad_filters(st);
drivers/iio/frequency/admv1014.c
681
ret = admv1014_update_vcm_settings(st);
drivers/iio/frequency/admv1014.c
691
enable_reg = FIELD_PREP(ADMV1014_P1DB_COMPENSATION_MSK, st->p1db_comp ? 3 : 0) |
drivers/iio/frequency/admv1014.c
693
(st->input_mode == ADMV1014_IF_MODE) ? 0 : 1) |
drivers/iio/frequency/admv1014.c
695
(st->input_mode == ADMV1014_IF_MODE) ? 1 : 0) |
drivers/iio/frequency/admv1014.c
696
FIELD_PREP(ADMV1014_DET_EN_MSK, st->det_en);
drivers/iio/frequency/admv1014.c
698
return __admv1014_spi_update_bits(st, ADMV1014_REG_ENABLE, enable_reg_msk, enable_reg);
drivers/iio/frequency/admv1014.c
701
static int admv1014_properties_parse(struct admv1014_state *st)
drivers/iio/frequency/admv1014.c
704
struct spi_device *spi = st->spi;
drivers/iio/frequency/admv1014.c
708
st->det_en = device_property_read_bool(dev, "adi,detector-enable");
drivers/iio/frequency/admv1014.c
710
st->p1db_comp = device_property_read_bool(dev, "adi,p1db-compensation-enable");
drivers/iio/frequency/admv1014.c
716
st->input_mode = ret;
drivers/iio/frequency/admv1014.c
718
st->input_mode = ADMV1014_IQ_MODE;
drivers/iio/frequency/admv1014.c
724
st->quad_se_mode = ADMV1014_SE_MODE_POS + (ret * 3);
drivers/iio/frequency/admv1014.c
726
st->quad_se_mode = ADMV1014_SE_MODE_POS;
drivers/iio/frequency/admv1014.c
729
st->regulators[i].supply = admv1014_reg_name[i];
drivers/iio/frequency/admv1014.c
732
st->regulators);
drivers/iio/frequency/admv1014.c
736
st->clkin = devm_clk_get(dev, "lo_in");
drivers/iio/frequency/admv1014.c
737
if (IS_ERR(st->clkin))
drivers/iio/frequency/admv1014.c
738
return dev_err_probe(dev, PTR_ERR(st->clkin),
drivers/iio/frequency/admv1014.c
747
struct admv1014_state *st;
drivers/iio/frequency/admv1014.c
751
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/frequency/admv1014.c
755
st = iio_priv(indio_dev);
drivers/iio/frequency/admv1014.c
757
ret = admv1014_properties_parse(st);
drivers/iio/frequency/admv1014.c
764
if (st->input_mode == ADMV1014_IQ_MODE) {
drivers/iio/frequency/admv1014.c
772
st->spi = spi;
drivers/iio/frequency/admv1014.c
774
mutex_init(&st->lock);
drivers/iio/frequency/admv1014.c
776
ret = admv1014_init(st);
drivers/iio/frequency/admv4420.c
129
struct admv4420_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv4420.c
132
return regmap_read(st->regmap, reg, readval);
drivers/iio/frequency/admv4420.c
134
return regmap_write(st->regmap, reg, writeval);
drivers/iio/frequency/admv4420.c
137
static int admv4420_set_n_counter(struct admv4420_state *st, u32 int_val,
drivers/iio/frequency/admv4420.c
142
put_unaligned_le32(frac_val, st->transf_buf);
drivers/iio/frequency/admv4420.c
143
ret = regmap_bulk_write(st->regmap, ADMV4420_FRAC_L, st->transf_buf, 3);
drivers/iio/frequency/admv4420.c
147
put_unaligned_le32(mod_val, st->transf_buf);
drivers/iio/frequency/admv4420.c
148
ret = regmap_bulk_write(st->regmap, ADMV4420_MOD_L, st->transf_buf, 3);
drivers/iio/frequency/admv4420.c
152
put_unaligned_le32(int_val, st->transf_buf);
drivers/iio/frequency/admv4420.c
153
return regmap_bulk_write(st->regmap, ADMV4420_INT_L, st->transf_buf, 2);
drivers/iio/frequency/admv4420.c
160
struct admv4420_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv4420.c
165
*val = div_u64_rem(st->lo_freq_hz, MICRO, val2);
drivers/iio/frequency/admv4420.c
188
static void admv4420_fw_parse(struct admv4420_state *st)
drivers/iio/frequency/admv4420.c
190
struct device *dev = &st->spi->dev;
drivers/iio/frequency/admv4420.c
196
st->lo_freq_hz = (u64)tmp * KILO;
drivers/iio/frequency/admv4420.c
198
st->ref_block.ref_single_ended = device_property_read_bool(dev,
drivers/iio/frequency/admv4420.c
202
static inline uint64_t admv4420_calc_pfd_vco(struct admv4420_state *st)
drivers/iio/frequency/admv4420.c
204
return div_u64(st->vco_freq_hz * 10, st->n_counter.n_counter);
drivers/iio/frequency/admv4420.c
207
static inline uint32_t admv4420_calc_pfd_ref(struct admv4420_state *st)
drivers/iio/frequency/admv4420.c
212
doubler = st->ref_block.doubler_en ? 2 : 1;
drivers/iio/frequency/admv4420.c
213
divide_by_2 = st->ref_block.divide_by_2_en ? 2 : 1;
drivers/iio/frequency/admv4420.c
216
return (tmp / (st->ref_block.divider * divide_by_2));
drivers/iio/frequency/admv4420.c
219
static int admv4420_calc_parameters(struct admv4420_state *st)
drivers/iio/frequency/admv4420.c
224
st->ref_block.doubler_en = false;
drivers/iio/frequency/admv4420.c
225
st->ref_block.divide_by_2_en = false;
drivers/iio/frequency/admv4420.c
226
st->vco_freq_hz = div_u64(st->lo_freq_hz, 2);
drivers/iio/frequency/admv4420.c
228
for (st->ref_block.divider = 1; st->ref_block.divider < MAX_R_DIVIDER;
drivers/iio/frequency/admv4420.c
229
st->ref_block.divider++) {
drivers/iio/frequency/admv4420.c
230
pfd_ref = admv4420_calc_pfd_ref(st);
drivers/iio/frequency/admv4420.c
231
for (st->n_counter.n_counter = 1; st->n_counter.n_counter < MAX_N_COUNTER;
drivers/iio/frequency/admv4420.c
232
st->n_counter.n_counter++) {
drivers/iio/frequency/admv4420.c
233
pfd_vco = admv4420_calc_pfd_vco(st);
drivers/iio/frequency/admv4420.c
243
st->n_counter.n_counter = 1;
drivers/iio/frequency/admv4420.c
248
st->n_counter.int_val = div_u64_rem(st->n_counter.n_counter, 10, &st->n_counter.frac_val);
drivers/iio/frequency/admv4420.c
249
st->n_counter.mod_val = 10;
drivers/iio/frequency/admv4420.c
256
struct admv4420_state *st = iio_priv(indio_dev);
drivers/iio/frequency/admv4420.c
261
ret = regmap_write(st->regmap, ADMV4420_SPI_CONFIG_1,
drivers/iio/frequency/admv4420.c
266
ret = regmap_write(st->regmap, ADMV4420_SPI_CONFIG_1,
drivers/iio/frequency/admv4420.c
272
ret = regmap_write(st->regmap,
drivers/iio/frequency/admv4420.c
278
ret = regmap_read(st->regmap, ADMV4420_SCRATCHPAD, &val);
drivers/iio/frequency/admv4420.c
286
ret = regmap_write(st->regmap,
drivers/iio/frequency/admv4420.c
292
ret = regmap_read(st->regmap, ADMV4420_SCRATCHPAD, &val);
drivers/iio/frequency/admv4420.c
300
st->mux_sel = ADMV4420_LOCK_DTCT;
drivers/iio/frequency/admv4420.c
301
st->lo_freq_hz = ADMV4420_DEFAULT_LO_FREQ_HZ;
drivers/iio/frequency/admv4420.c
303
admv4420_fw_parse(st);
drivers/iio/frequency/admv4420.c
305
ret = admv4420_calc_parameters(st);
drivers/iio/frequency/admv4420.c
309
st->vco_freq_hz);
drivers/iio/frequency/admv4420.c
311
ret = regmap_write(st->regmap, ADMV4420_R_DIV_L,
drivers/iio/frequency/admv4420.c
312
FIELD_GET(0xFF, st->ref_block.divider));
drivers/iio/frequency/admv4420.c
316
ret = regmap_write(st->regmap, ADMV4420_R_DIV_H,
drivers/iio/frequency/admv4420.c
317
FIELD_GET(0xFF00, st->ref_block.divider));
drivers/iio/frequency/admv4420.c
321
ret = regmap_write(st->regmap, ADMV4420_REFERENCE,
drivers/iio/frequency/admv4420.c
322
st->ref_block.divide_by_2_en |
drivers/iio/frequency/admv4420.c
323
FIELD_PREP(ADMV4420_REFERENCE_MODE_MASK, st->ref_block.ref_single_ended) |
drivers/iio/frequency/admv4420.c
324
FIELD_PREP(ADMV4420_REFERENCE_DOUBLER_MASK, st->ref_block.doubler_en));
drivers/iio/frequency/admv4420.c
328
ret = admv4420_set_n_counter(st, st->n_counter.int_val,
drivers/iio/frequency/admv4420.c
329
st->n_counter.frac_val,
drivers/iio/frequency/admv4420.c
330
st->n_counter.mod_val);
drivers/iio/frequency/admv4420.c
334
ret = regmap_write(st->regmap, ADMV4420_PLL_MUX_SEL, st->mux_sel);
drivers/iio/frequency/admv4420.c
338
return regmap_write(st->regmap, ADMV4420_ENABLES,
drivers/iio/frequency/admv4420.c
347
struct admv4420_state *st;
drivers/iio/frequency/admv4420.c
351
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/frequency/admv4420.c
360
st = iio_priv(indio_dev);
drivers/iio/frequency/admv4420.c
361
st->spi = spi;
drivers/iio/frequency/admv4420.c
362
st->regmap = regmap;
drivers/iio/frequency/adrf6780.c
100
t.rx_buf = &st->data[0];
drivers/iio/frequency/adrf6780.c
101
t.tx_buf = &st->data[0];
drivers/iio/frequency/adrf6780.c
104
ret = spi_sync_transfer(st->spi, &t, 1);
drivers/iio/frequency/adrf6780.c
108
*val = (get_unaligned_be24(&st->data[0]) >> 1) & GENMASK(15, 0);
drivers/iio/frequency/adrf6780.c
113
static int adrf6780_spi_read(struct adrf6780_state *st, unsigned int reg,
drivers/iio/frequency/adrf6780.c
118
mutex_lock(&st->lock);
drivers/iio/frequency/adrf6780.c
119
ret = __adrf6780_spi_read(st, reg, val);
drivers/iio/frequency/adrf6780.c
120
mutex_unlock(&st->lock);
drivers/iio/frequency/adrf6780.c
125
static int __adrf6780_spi_write(struct adrf6780_state *st,
drivers/iio/frequency/adrf6780.c
129
put_unaligned_be24((val << 1) | (reg << 17), &st->data[0]);
drivers/iio/frequency/adrf6780.c
131
return spi_write(st->spi, &st->data[0], 3);
drivers/iio/frequency/adrf6780.c
134
static int adrf6780_spi_write(struct adrf6780_state *st, unsigned int reg,
drivers/iio/frequency/adrf6780.c
139
mutex_lock(&st->lock);
drivers/iio/frequency/adrf6780.c
140
ret = __adrf6780_spi_write(st, reg, val);
drivers/iio/frequency/adrf6780.c
141
mutex_unlock(&st->lock);
drivers/iio/frequency/adrf6780.c
146
static int __adrf6780_spi_update_bits(struct adrf6780_state *st,
drivers/iio/frequency/adrf6780.c
153
ret = __adrf6780_spi_read(st, reg, &data);
drivers/iio/frequency/adrf6780.c
159
return __adrf6780_spi_write(st, reg, temp);
drivers/iio/frequency/adrf6780.c
162
static int adrf6780_spi_update_bits(struct adrf6780_state *st, unsigned int reg,
drivers/iio/frequency/adrf6780.c
167
mutex_lock(&st->lock);
drivers/iio/frequency/adrf6780.c
168
ret = __adrf6780_spi_update_bits(st, reg, mask, val);
drivers/iio/frequency/adrf6780.c
169
mutex_unlock(&st->lock);
drivers/iio/frequency/adrf6780.c
174
static int adrf6780_read_adc_raw(struct adrf6780_state *st, unsigned int *read_val)
drivers/iio/frequency/adrf6780.c
178
mutex_lock(&st->lock);
drivers/iio/frequency/adrf6780.c
180
ret = __adrf6780_spi_update_bits(st, ADRF6780_REG_ADC_CONTROL,
drivers/iio/frequency/adrf6780.c
196
ret = __adrf6780_spi_read(st, ADRF6780_REG_ADC_OUTPUT, read_val);
drivers/iio/frequency/adrf6780.c
205
ret = __adrf6780_spi_update_bits(st, ADRF6780_REG_ADC_CONTROL,
drivers/iio/frequency/adrf6780.c
211
ret = __adrf6780_spi_read(st, ADRF6780_REG_ADC_OUTPUT, read_val);
drivers/iio/frequency/adrf6780.c
214
mutex_unlock(&st->lock);
drivers/iio/frequency/adrf6780.c
271
struct adrf6780_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adrf6780.c
275
return adrf6780_spi_write(st, ADRF6780_REG_LINEARIZE, val);
drivers/iio/frequency/adrf6780.c
279
return adrf6780_spi_update_bits(st,
drivers/iio/frequency/adrf6780.c
284
return adrf6780_spi_update_bits(st,
drivers/iio/frequency/adrf6780.c
301
struct adrf6780_state *st = iio_priv(indio_dev);
drivers/iio/frequency/adrf6780.c
304
return adrf6780_spi_read(st, reg, read_val);
drivers/iio/frequency/adrf6780.c
306
return adrf6780_spi_write(st, reg, write_val);
drivers/iio/frequency/adrf6780.c
348
static int adrf6780_reset(struct adrf6780_state *st)
drivers/iio/frequency/adrf6780.c
351
struct device *dev = &st->spi->dev;
drivers/iio/frequency/adrf6780.c
353
ret = __adrf6780_spi_update_bits(st, ADRF6780_REG_CONTROL,
drivers/iio/frequency/adrf6780.c
360
ret = __adrf6780_spi_update_bits(st, ADRF6780_REG_CONTROL,
drivers/iio/frequency/adrf6780.c
370
static int adrf6780_init(struct adrf6780_state *st)
drivers/iio/frequency/adrf6780.c
374
struct device *dev = &st->spi->dev;
drivers/iio/frequency/adrf6780.c
377
ret = adrf6780_reset(st);
drivers/iio/frequency/adrf6780.c
381
ret = __adrf6780_spi_read(st, ADRF6780_REG_CONTROL, &chip_id);
drivers/iio/frequency/adrf6780.c
400
enable_reg = FIELD_PREP(ADRF6780_VGA_BUFFER_EN_MSK, st->vga_buff_en) |
drivers/iio/frequency/adrf6780.c
402
FIELD_PREP(ADRF6780_LO_BUFFER_EN_MSK, st->lo_buff_en) |
drivers/iio/frequency/adrf6780.c
403
FIELD_PREP(ADRF6780_IF_MODE_EN_MSK, st->if_mode_en) |
drivers/iio/frequency/adrf6780.c
404
FIELD_PREP(ADRF6780_IQ_MODE_EN_MSK, st->iq_mode_en) |
drivers/iio/frequency/adrf6780.c
405
FIELD_PREP(ADRF6780_LO_X2_EN_MSK, st->lo_x2_en) |
drivers/iio/frequency/adrf6780.c
406
FIELD_PREP(ADRF6780_LO_PPF_EN_MSK, st->lo_ppf_en) |
drivers/iio/frequency/adrf6780.c
407
FIELD_PREP(ADRF6780_LO_EN_MSK, st->lo_en) |
drivers/iio/frequency/adrf6780.c
408
FIELD_PREP(ADRF6780_UC_BIAS_EN_MSK, st->uc_bias_en);
drivers/iio/frequency/adrf6780.c
410
ret = __adrf6780_spi_update_bits(st, ADRF6780_REG_ENABLE,
drivers/iio/frequency/adrf6780.c
415
ret = __adrf6780_spi_update_bits(st, ADRF6780_REG_LO_PATH,
drivers/iio/frequency/adrf6780.c
417
FIELD_PREP(ADRF6780_LO_SIDEBAND_MSK, st->lo_sideband));
drivers/iio/frequency/adrf6780.c
421
return __adrf6780_spi_update_bits(st, ADRF6780_REG_ADC_CONTROL,
drivers/iio/frequency/adrf6780.c
423
FIELD_PREP(ADRF6780_VDET_OUTPUT_SELECT_MSK, st->vdet_out_en));
drivers/iio/frequency/adrf6780.c
426
static void adrf6780_properties_parse(struct adrf6780_state *st)
drivers/iio/frequency/adrf6780.c
428
struct device *dev = &st->spi->dev;
drivers/iio/frequency/adrf6780.c
430
st->vga_buff_en = device_property_read_bool(dev, "adi,vga-buff-en");
drivers/iio/frequency/adrf6780.c
431
st->lo_buff_en = device_property_read_bool(dev, "adi,lo-buff-en");
drivers/iio/frequency/adrf6780.c
432
st->if_mode_en = device_property_read_bool(dev, "adi,if-mode-en");
drivers/iio/frequency/adrf6780.c
433
st->iq_mode_en = device_property_read_bool(dev, "adi,iq-mode-en");
drivers/iio/frequency/adrf6780.c
434
st->lo_x2_en = device_property_read_bool(dev, "adi,lo-x2-en");
drivers/iio/frequency/adrf6780.c
435
st->lo_ppf_en = device_property_read_bool(dev, "adi,lo-ppf-en");
drivers/iio/frequency/adrf6780.c
436
st->lo_en = device_property_read_bool(dev, "adi,lo-en");
drivers/iio/frequency/adrf6780.c
437
st->uc_bias_en = device_property_read_bool(dev, "adi,uc-bias-en");
drivers/iio/frequency/adrf6780.c
438
st->lo_sideband = device_property_read_bool(dev, "adi,lo-sideband");
drivers/iio/frequency/adrf6780.c
439
st->vdet_out_en = device_property_read_bool(dev, "adi,vdet-out-en");
drivers/iio/frequency/adrf6780.c
451
struct adrf6780_state *st;
drivers/iio/frequency/adrf6780.c
455
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/frequency/adrf6780.c
459
st = iio_priv(indio_dev);
drivers/iio/frequency/adrf6780.c
466
st->spi = spi;
drivers/iio/frequency/adrf6780.c
468
adrf6780_properties_parse(st);
drivers/iio/frequency/adrf6780.c
470
st->clkin = devm_clk_get_enabled(dev, "lo_in");
drivers/iio/frequency/adrf6780.c
471
if (IS_ERR(st->clkin))
drivers/iio/frequency/adrf6780.c
472
return dev_err_probe(dev, PTR_ERR(st->clkin),
drivers/iio/frequency/adrf6780.c
475
mutex_init(&st->lock);
drivers/iio/frequency/adrf6780.c
477
ret = adrf6780_init(st);
drivers/iio/frequency/adrf6780.c
481
ret = devm_add_action_or_reset(dev, adrf6780_powerdown, st);
drivers/iio/frequency/adrf6780.c
90
static int __adrf6780_spi_read(struct adrf6780_state *st, unsigned int reg,
drivers/iio/frequency/adrf6780.c
96
st->data[0] = 0x80 | (reg << 1);
drivers/iio/frequency/adrf6780.c
97
st->data[1] = 0x0;
drivers/iio/frequency/adrf6780.c
98
st->data[2] = 0x0;
drivers/iio/gyro/adis16080.c
190
struct adis16080_state *st;
drivers/iio/gyro/adis16080.c
194
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/gyro/adis16080.c
197
st = iio_priv(indio_dev);
drivers/iio/gyro/adis16080.c
199
mutex_init(&st->lock);
drivers/iio/gyro/adis16080.c
202
st->us = spi;
drivers/iio/gyro/adis16080.c
203
st->info = &adis16080_chip_info[id->driver_data];
drivers/iio/gyro/adis16080.c
54
struct adis16080_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adis16080.c
58
.tx_buf = &st->buf,
drivers/iio/gyro/adis16080.c
62
.rx_buf = &st->buf,
drivers/iio/gyro/adis16080.c
67
st->buf = cpu_to_be16(addr | ADIS16080_DIN_WRITE);
drivers/iio/gyro/adis16080.c
69
ret = spi_sync_transfer(st->us, t, ARRAY_SIZE(t));
drivers/iio/gyro/adis16080.c
71
*val = sign_extend32(be16_to_cpu(st->buf), 11);
drivers/iio/gyro/adis16080.c
82
struct adis16080_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adis16080.c
87
mutex_lock(&st->lock);
drivers/iio/gyro/adis16080.c
89
mutex_unlock(&st->lock);
drivers/iio/gyro/adis16080.c
94
*val = st->info->scale_val;
drivers/iio/gyro/adis16080.c
95
*val2 = st->info->scale_val2;
drivers/iio/gyro/adis16130.c
143
struct adis16130_state *st;
drivers/iio/gyro/adis16130.c
147
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/gyro/adis16130.c
150
st = iio_priv(indio_dev);
drivers/iio/gyro/adis16130.c
153
st->us = spi;
drivers/iio/gyro/adis16130.c
154
mutex_init(&st->buf_lock);
drivers/iio/gyro/adis16130.c
50
struct adis16130_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adis16130.c
52
.tx_buf = st->buf,
drivers/iio/gyro/adis16130.c
53
.rx_buf = st->buf,
drivers/iio/gyro/adis16130.c
57
mutex_lock(&st->buf_lock);
drivers/iio/gyro/adis16130.c
59
st->buf[0] = ADIS16130_CON_RD | reg_addr;
drivers/iio/gyro/adis16130.c
60
st->buf[1] = st->buf[2] = st->buf[3] = 0;
drivers/iio/gyro/adis16130.c
62
ret = spi_sync_transfer(st->us, &xfer, 1);
drivers/iio/gyro/adis16130.c
64
*val = get_unaligned_be24(&st->buf[1]);
drivers/iio/gyro/adis16130.c
65
mutex_unlock(&st->buf_lock);
drivers/iio/gyro/adxrs290.c
118
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
121
guard(mutex)(&st->lock);
drivers/iio/gyro/adxrs290.c
123
temp = spi_w8r16(st->spi, cmd);
drivers/iio/gyro/adxrs290.c
135
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
138
guard(mutex)(&st->lock);
drivers/iio/gyro/adxrs290.c
140
temp = spi_w8r16(st->spi, cmd);
drivers/iio/gyro/adxrs290.c
153
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
156
guard(mutex)(&st->lock);
drivers/iio/gyro/adxrs290.c
158
temp = spi_w8r8(st->spi, cmd);
drivers/iio/gyro/adxrs290.c
196
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
201
return adxrs290_spi_write_reg(st->spi, ADXRS290_REG_FILTER, val);
drivers/iio/gyro/adxrs290.c
206
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
209
if (st->mode == mode)
drivers/iio/gyro/adxrs290.c
212
guard(mutex)(&st->lock);
drivers/iio/gyro/adxrs290.c
214
ret = spi_w8r8(st->spi, ADXRS290_READ_REG(ADXRS290_REG_POWER_CTL));
drivers/iio/gyro/adxrs290.c
231
ret = adxrs290_spi_write_reg(st->spi, ADXRS290_REG_POWER_CTL, val);
drivers/iio/gyro/adxrs290.c
233
dev_err(&st->spi->dev, "unable to set mode: %d\n", ret);
drivers/iio/gyro/adxrs290.c
238
st->mode = mode;
drivers/iio/gyro/adxrs290.c
252
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
253
struct spi_device *spi = st->spi;
drivers/iio/gyro/adxrs290.c
261
st->mode = ADXRS290_MODE_MEASUREMENT;
drivers/iio/gyro/adxrs290.c
273
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
323
t = st->lpf_3db_freq_idx;
drivers/iio/gyro/adxrs290.c
333
t = st->hpf_3db_freq_idx;
drivers/iio/gyro/adxrs290.c
351
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
368
st->lpf_3db_freq_idx = lpf_idx;
drivers/iio/gyro/adxrs290.c
370
hpf_idx = st->hpf_3db_freq_idx;
drivers/iio/gyro/adxrs290.c
384
st->hpf_3db_freq_idx = hpf_idx;
drivers/iio/gyro/adxrs290.c
386
lpf_idx = st->lpf_3db_freq_idx;
drivers/iio/gyro/adxrs290.c
441
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
444
return adxrs290_reg_access_rw(st->spi, reg, readval);
drivers/iio/gyro/adxrs290.c
446
return adxrs290_spi_write_reg(st->spi, reg, writeval);
drivers/iio/gyro/adxrs290.c
453
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
459
ret = adxrs290_spi_write_reg(st->spi, ADXRS290_REG_DATA_RDY, val);
drivers/iio/gyro/adxrs290.c
461
dev_err(&st->spi->dev, "failed to start data rdy interrupt\n");
drivers/iio/gyro/adxrs290.c
491
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
496
guard(mutex)(&st->lock);
drivers/iio/gyro/adxrs290.c
499
ret = spi_write_then_read(st->spi, &tx, sizeof(tx),
drivers/iio/gyro/adxrs290.c
500
st->buffer.channels,
drivers/iio/gyro/adxrs290.c
501
sizeof(st->buffer.channels));
drivers/iio/gyro/adxrs290.c
505
iio_push_to_buffers_with_timestamp(indio_dev, &st->buffer,
drivers/iio/gyro/adxrs290.c
568
struct adxrs290_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
571
if (!st->spi->irq) {
drivers/iio/gyro/adxrs290.c
572
dev_info(&st->spi->dev, "no irq, using polling\n");
drivers/iio/gyro/adxrs290.c
576
st->dready_trig = devm_iio_trigger_alloc(&st->spi->dev, "%s-dev%d",
drivers/iio/gyro/adxrs290.c
579
if (!st->dready_trig)
drivers/iio/gyro/adxrs290.c
582
st->dready_trig->ops = &adxrs290_trigger_ops;
drivers/iio/gyro/adxrs290.c
583
iio_trigger_set_drvdata(st->dready_trig, indio_dev);
drivers/iio/gyro/adxrs290.c
585
ret = devm_request_irq(&st->spi->dev, st->spi->irq,
drivers/iio/gyro/adxrs290.c
587
IRQF_NO_THREAD, "adxrs290_irq", st->dready_trig);
drivers/iio/gyro/adxrs290.c
589
return dev_err_probe(&st->spi->dev, ret,
drivers/iio/gyro/adxrs290.c
590
"request irq %d failed\n", st->spi->irq);
drivers/iio/gyro/adxrs290.c
592
ret = devm_iio_trigger_register(&st->spi->dev, st->dready_trig);
drivers/iio/gyro/adxrs290.c
594
dev_err(&st->spi->dev, "iio trigger register failed\n");
drivers/iio/gyro/adxrs290.c
598
indio_dev->trig = iio_trigger_get(st->dready_trig);
drivers/iio/gyro/adxrs290.c
606
struct adxrs290_state *st;
drivers/iio/gyro/adxrs290.c
610
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/gyro/adxrs290.c
614
st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs290.c
615
st->spi = spi;
drivers/iio/gyro/adxrs290.c
624
mutex_init(&st->lock);
drivers/iio/gyro/adxrs290.c
645
st->mode = ADXRS290_MODE_STANDBY;
drivers/iio/gyro/adxrs290.c
659
st->lpf_3db_freq_idx = val;
drivers/iio/gyro/adxrs290.c
660
st->hpf_3db_freq_idx = val2;
drivers/iio/gyro/adxrs450.c
101
.rx_buf = &st->rx,
drivers/iio/gyro/adxrs450.c
102
.len = sizeof(st->rx),
drivers/iio/gyro/adxrs450.c
106
mutex_lock(&st->buf_lock);
drivers/iio/gyro/adxrs450.c
112
st->tx = cpu_to_be32(tx);
drivers/iio/gyro/adxrs450.c
113
ret = spi_sync_transfer(st->us, xfers, ARRAY_SIZE(xfers));
drivers/iio/gyro/adxrs450.c
115
dev_err(&st->us->dev, "problem while reading 16 bit register 0x%02x\n",
drivers/iio/gyro/adxrs450.c
120
*val = (be32_to_cpu(st->rx) >> 5) & 0xFFFF;
drivers/iio/gyro/adxrs450.c
123
mutex_unlock(&st->buf_lock);
drivers/iio/gyro/adxrs450.c
138
struct adxrs450_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs450.c
142
mutex_lock(&st->buf_lock);
drivers/iio/gyro/adxrs450.c
148
st->tx = cpu_to_be32(tx);
drivers/iio/gyro/adxrs450.c
149
ret = spi_write(st->us, &st->tx, sizeof(st->tx));
drivers/iio/gyro/adxrs450.c
151
dev_err(&st->us->dev, "problem while writing 16 bit register 0x%02x\n",
drivers/iio/gyro/adxrs450.c
154
mutex_unlock(&st->buf_lock);
drivers/iio/gyro/adxrs450.c
165
struct adxrs450_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs450.c
169
.tx_buf = &st->tx,
drivers/iio/gyro/adxrs450.c
170
.len = sizeof(st->tx),
drivers/iio/gyro/adxrs450.c
173
.rx_buf = &st->rx,
drivers/iio/gyro/adxrs450.c
174
.len = sizeof(st->rx),
drivers/iio/gyro/adxrs450.c
178
mutex_lock(&st->buf_lock);
drivers/iio/gyro/adxrs450.c
179
st->tx = cpu_to_be32(ADXRS450_SENSOR_DATA);
drivers/iio/gyro/adxrs450.c
181
ret = spi_sync_transfer(st->us, xfers, ARRAY_SIZE(xfers));
drivers/iio/gyro/adxrs450.c
183
dev_err(&st->us->dev, "Problem while reading sensor data\n");
drivers/iio/gyro/adxrs450.c
187
*val = (be32_to_cpu(st->rx) >> 10) & 0xFFFF;
drivers/iio/gyro/adxrs450.c
190
mutex_unlock(&st->buf_lock);
drivers/iio/gyro/adxrs450.c
200
static int adxrs450_spi_initial(struct adxrs450_state *st,
drivers/iio/gyro/adxrs450.c
206
.tx_buf = &st->tx,
drivers/iio/gyro/adxrs450.c
207
.rx_buf = &st->rx,
drivers/iio/gyro/adxrs450.c
208
.len = sizeof(st->tx),
drivers/iio/gyro/adxrs450.c
211
mutex_lock(&st->buf_lock);
drivers/iio/gyro/adxrs450.c
215
st->tx = cpu_to_be32(tx);
drivers/iio/gyro/adxrs450.c
216
ret = spi_sync_transfer(st->us, &xfers, 1);
drivers/iio/gyro/adxrs450.c
218
dev_err(&st->us->dev, "Problem while reading initializing data\n");
drivers/iio/gyro/adxrs450.c
222
*val = be32_to_cpu(st->rx);
drivers/iio/gyro/adxrs450.c
225
mutex_unlock(&st->buf_lock);
drivers/iio/gyro/adxrs450.c
235
struct adxrs450_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs450.c
238
ret = adxrs450_spi_initial(st, &t, 1);
drivers/iio/gyro/adxrs450.c
242
dev_warn(&st->us->dev, "The initial power on response is not correct! Restart without reset?\n");
drivers/iio/gyro/adxrs450.c
245
ret = adxrs450_spi_initial(st, &t, 0);
drivers/iio/gyro/adxrs450.c
250
ret = adxrs450_spi_initial(st, &t, 0);
drivers/iio/gyro/adxrs450.c
254
dev_err(&st->us->dev, "The second response is not correct!\n");
drivers/iio/gyro/adxrs450.c
258
ret = adxrs450_spi_initial(st, &t, 0);
drivers/iio/gyro/adxrs450.c
262
dev_err(&st->us->dev, "The third response is not correct!\n");
drivers/iio/gyro/adxrs450.c
270
dev_err(&st->us->dev, "The device is not in normal status!\n");
drivers/iio/gyro/adxrs450.c
409
struct adxrs450_state *st;
drivers/iio/gyro/adxrs450.c
413
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/gyro/adxrs450.c
416
st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs450.c
417
st->us = spi;
drivers/iio/gyro/adxrs450.c
418
mutex_init(&st->buf_lock);
drivers/iio/gyro/adxrs450.c
92
struct adxrs450_state *st = iio_priv(indio_dev);
drivers/iio/gyro/adxrs450.c
97
.tx_buf = &st->tx,
drivers/iio/gyro/adxrs450.c
98
.len = sizeof(st->tx),
drivers/iio/gyro/hid-sensor-gyro-3d.c
237
struct gyro_3d_state *st)
drivers/iio/gyro/hid-sensor-gyro-3d.c
246
&st->gyro[ch]);
drivers/iio/gyro/hid-sensor-gyro-3d.c
251
.realbits = BYTES_TO_BITS(st->gyro[ch].size),
drivers/iio/gyro/hid-sensor-gyro-3d.c
256
st->gyro[0].index,
drivers/iio/gyro/hid-sensor-gyro-3d.c
257
st->gyro[0].report_id,
drivers/iio/gyro/hid-sensor-gyro-3d.c
258
st->gyro[1].index, st->gyro[1].report_id,
drivers/iio/gyro/hid-sensor-gyro-3d.c
259
st->gyro[2].index, st->gyro[2].report_id);
drivers/iio/gyro/hid-sensor-gyro-3d.c
261
st->scale_precision = hid_sensor_format_scale(
drivers/iio/gyro/hid-sensor-gyro-3d.c
263
&st->gyro[CHANNEL_SCAN_INDEX_X],
drivers/iio/gyro/hid-sensor-gyro-3d.c
264
&st->scale_pre_decml, &st->scale_post_decml);
drivers/iio/gyro/itg3200_buffer.c
114
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_buffer.c
116
st->trig = iio_trigger_alloc(&st->i2c->dev, "%s-dev%d", indio_dev->name,
drivers/iio/gyro/itg3200_buffer.c
118
if (!st->trig)
drivers/iio/gyro/itg3200_buffer.c
121
ret = request_irq(st->i2c->irq, &iio_trigger_generic_data_rdy_poll,
drivers/iio/gyro/itg3200_buffer.c
123
"itg3200_data_rdy", st->trig);
drivers/iio/gyro/itg3200_buffer.c
128
st->trig->ops = &itg3200_trigger_ops;
drivers/iio/gyro/itg3200_buffer.c
129
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/iio/gyro/itg3200_buffer.c
130
ret = iio_trigger_register(st->trig);
drivers/iio/gyro/itg3200_buffer.c
135
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/gyro/itg3200_buffer.c
140
free_irq(st->i2c->irq, st->trig);
drivers/iio/gyro/itg3200_buffer.c
142
iio_trigger_free(st->trig);
drivers/iio/gyro/itg3200_buffer.c
148
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_buffer.c
150
iio_trigger_unregister(st->trig);
drivers/iio/gyro/itg3200_buffer.c
151
free_irq(st->i2c->irq, st->trig);
drivers/iio/gyro/itg3200_buffer.c
152
iio_trigger_free(st->trig);
drivers/iio/gyro/itg3200_buffer.c
48
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_buffer.c
58
int ret = itg3200_read_all_channels(st->i2c, scan.buf);
drivers/iio/gyro/itg3200_core.c
137
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_core.c
146
mutex_lock(&st->lock);
drivers/iio/gyro/itg3200_core.c
150
mutex_unlock(&st->lock);
drivers/iio/gyro/itg3200_core.c
159
mutex_unlock(&st->lock);
drivers/iio/gyro/itg3200_core.c
173
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_core.c
176
dev_dbg(&st->i2c->dev, "reset device");
drivers/iio/gyro/itg3200_core.c
182
dev_err(&st->i2c->dev, "error resetting device");
drivers/iio/gyro/itg3200_core.c
197
dev_err(&st->i2c->dev, "error init device");
drivers/iio/gyro/itg3200_core.c
222
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_core.c
235
dev_err(&st->i2c->dev, "invalid reg value 0x%02x", val);
drivers/iio/gyro/itg3200_core.c
303
struct itg3200 *st;
drivers/iio/gyro/itg3200_core.c
308
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st));
drivers/iio/gyro/itg3200_core.c
312
st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_core.c
314
ret = iio_read_mount_matrix(&client->dev, &st->orientation);
drivers/iio/gyro/itg3200_core.c
319
st->i2c = client;
drivers/iio/gyro/itg3200_core.c
342
mutex_init(&st->lock);
drivers/iio/gyro/itg3200_core.c
35
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_core.c
37
return i2c_smbus_write_byte_data(st->i2c, 0x80 | reg_address, val);
drivers/iio/gyro/itg3200_core.c
373
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_core.c
375
dev_dbg(&st->i2c->dev, "suspend device");
drivers/iio/gyro/itg3200_core.c
43
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_core.c
46
ret = i2c_smbus_read_byte_data(st->i2c, reg_address);
drivers/iio/gyro/itg3200_core.c
56
struct itg3200 *st = iio_priv(indio_dev);
drivers/iio/gyro/itg3200_core.c
57
struct i2c_client *client = st->i2c;
drivers/iio/humidity/hid-sensor-humidity.c
164
struct hid_humidity_state *st)
drivers/iio/humidity/hid-sensor-humidity.c
171
&st->humidity_attr);
drivers/iio/humidity/hid-sensor-humidity.c
175
humidity_adjust_channel_bit_mask(channels, 0, st->humidity_attr.size);
drivers/iio/humidity/hid-sensor-humidity.c
177
st->scale_precision = hid_sensor_format_scale(
drivers/iio/humidity/hid-sensor-humidity.c
179
&st->humidity_attr,
drivers/iio/humidity/hid-sensor-humidity.c
180
&st->scale_pre_decml,
drivers/iio/humidity/hid-sensor-humidity.c
181
&st->scale_post_decml);
drivers/iio/imu/adis16400.c
1119
static void adis16400_setup_chan_mask(struct adis16400_state *st)
drivers/iio/imu/adis16400.c
1121
const struct adis16400_chip_info *chip_info = st->variant;
drivers/iio/imu/adis16400.c
1129
st->avail_scan_mask[0] |= BIT(ch->scan_index);
drivers/iio/imu/adis16400.c
1140
struct adis16400_state *st;
drivers/iio/imu/adis16400.c
1145
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/imu/adis16400.c
1149
st = iio_priv(indio_dev);
drivers/iio/imu/adis16400.c
1152
st->variant = spi_get_device_match_data(spi);
drivers/iio/imu/adis16400.c
1154
indio_dev->channels = st->variant->channels;
drivers/iio/imu/adis16400.c
1155
indio_dev->num_channels = st->variant->num_channels;
drivers/iio/imu/adis16400.c
1159
if (!(st->variant->flags & ADIS16400_NO_BURST)) {
drivers/iio/imu/adis16400.c
1160
adis16400_setup_chan_mask(st);
drivers/iio/imu/adis16400.c
1161
indio_dev->available_scan_masks = st->avail_scan_mask;
drivers/iio/imu/adis16400.c
1164
adis16400_data = &st->variant->adis_data;
drivers/iio/imu/adis16400.c
1166
ret = adis_init(&st->adis, indio_dev, spi, adis16400_data);
drivers/iio/imu/adis16400.c
1170
ret = devm_adis_setup_buffer_and_trigger(&st->adis, indio_dev, adis16400_trigger_handler);
drivers/iio/imu/adis16400.c
160
int (*set_freq)(struct adis16400_state *st, unsigned int freq);
drivers/iio/imu/adis16400.c
161
int (*get_freq)(struct adis16400_state *st);
drivers/iio/imu/adis16400.c
208
struct adis16400_state *st = file->private_data;
drivers/iio/imu/adis16400.c
214
ret = adis_read_reg_16(&st->adis, ADIS16334_LOT_ID1, &lot1);
drivers/iio/imu/adis16400.c
218
ret = adis_read_reg_16(&st->adis, ADIS16334_LOT_ID2, &lot2);
drivers/iio/imu/adis16400.c
222
ret = adis_read_reg_16(&st->adis, ADIS16334_SERIAL_NUMBER,
drivers/iio/imu/adis16400.c
242
struct adis16400_state *st = arg;
drivers/iio/imu/adis16400.c
246
ret = adis_read_reg_16(&st->adis, ADIS16400_PRODUCT_ID, &prod_id);
drivers/iio/imu/adis16400.c
259
struct adis16400_state *st = arg;
drivers/iio/imu/adis16400.c
263
ret = adis_read_reg_16(&st->adis, ADIS16400_FLASH_CNT, &flash_count);
drivers/iio/imu/adis16400.c
276
struct adis16400_state *st = iio_priv(indio_dev);
drivers/iio/imu/adis16400.c
282
if (st->variant->flags & ADIS16400_HAS_SERIAL_NUMBER)
drivers/iio/imu/adis16400.c
284
d, st, &adis16400_serial_number_fops);
drivers/iio/imu/adis16400.c
285
if (st->variant->flags & ADIS16400_HAS_PROD_ID)
drivers/iio/imu/adis16400.c
287
d, st, &adis16400_product_id_fops);
drivers/iio/imu/adis16400.c
289
d, st, &adis16400_flash_count_fops);
drivers/iio/imu/adis16400.c
292
static int adis16334_get_freq(struct adis16400_state *st)
drivers/iio/imu/adis16400.c
297
ret = __adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t);
drivers/iio/imu/adis16400.c
306
static int adis16334_set_freq(struct adis16400_state *st, unsigned int freq)
drivers/iio/imu/adis16400.c
321
return __adis_write_reg_16(&st->adis, ADIS16400_SMPL_PRD, t);
drivers/iio/imu/adis16400.c
324
static int adis16400_get_freq(struct adis16400_state *st)
drivers/iio/imu/adis16400.c
329
ret = __adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t);
drivers/iio/imu/adis16400.c
339
static int adis16400_set_freq(struct adis16400_state *st, unsigned int freq)
drivers/iio/imu/adis16400.c
357
st->adis.spi->max_speed_hz = ADIS16400_SPI_SLOW;
drivers/iio/imu/adis16400.c
359
st->adis.spi->max_speed_hz = ADIS16400_SPI_FAST;
drivers/iio/imu/adis16400.c
361
return __adis_write_reg_8(&st->adis, ADIS16400_SMPL_PRD, val);
drivers/iio/imu/adis16400.c
377
struct adis16400_state *st = iio_priv(indio_dev);
drivers/iio/imu/adis16400.c
386
ret = __adis_read_reg_16(&st->adis, ADIS16400_SENS_AVG, &val16);
drivers/iio/imu/adis16400.c
390
ret = __adis_write_reg_16(&st->adis, ADIS16400_SENS_AVG,
drivers/iio/imu/adis16400.c
398
struct adis16400_state *st = iio_priv(indio_dev);
drivers/iio/imu/adis16400.c
401
ret = adis_write_reg_16(&st->adis, ADIS16400_SLP_CNT,
drivers/iio/imu/adis16400.c
412
struct adis16400_state *st = iio_priv(indio_dev);
drivers/iio/imu/adis16400.c
418
if (st->variant->flags & ADIS16400_HAS_SLOW_MODE)
drivers/iio/imu/adis16400.c
419
st->adis.spi->max_speed_hz = ADIS16400_SPI_SLOW;
drivers/iio/imu/adis16400.c
421
st->adis.spi->max_speed_hz = ADIS16400_SPI_FAST;
drivers/iio/imu/adis16400.c
422
st->adis.spi->mode = SPI_MODE_3;
drivers/iio/imu/adis16400.c
423
spi_setup(st->adis.spi);
drivers/iio/imu/adis16400.c
425
ret = __adis_initial_startup(&st->adis);
drivers/iio/imu/adis16400.c
429
if (st->variant->flags & ADIS16400_HAS_PROD_ID) {
drivers/iio/imu/adis16400.c
430
ret = adis_read_reg_16(&st->adis,
drivers/iio/imu/adis16400.c
446
spi_get_chipselect(st->adis.spi, 0), st->adis.spi->irq);
drivers/iio/imu/adis16400.c
449
if (st->variant->flags & ADIS16400_HAS_SLOW_MODE) {
drivers/iio/imu/adis16400.c
450
ret = adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &smp_prd);
drivers/iio/imu/adis16400.c
455
st->adis.spi->max_speed_hz = ADIS16400_SPI_FAST;
drivers/iio/imu/adis16400.c
456
spi_setup(st->adis.spi);
drivers/iio/imu/adis16400.c
476
struct adis16400_state *st = iio_priv(indio_dev);
drivers/iio/imu/adis16400.c
481
return adis_write_reg_16(&st->adis,
drivers/iio/imu/adis16400.c
489
adis_dev_auto_scoped_lock(&st->adis) {
drivers/iio/imu/adis16400.c
490
st->filt_int = val;
drivers/iio/imu/adis16400.c
492
sps = st->variant->get_freq(st);
drivers/iio/imu/adis16400.c
506
adis_dev_auto_scoped_lock(&st->adis)
drivers/iio/imu/adis16400.c
507
return st->variant->set_freq(st, sps);
drivers/iio/imu/adis16400.c
517
struct adis16400_state *st = iio_priv(indio_dev);
drivers/iio/imu/adis16400.c
528
*val2 = st->variant->gyro_scale_micro;
drivers/iio/imu/adis16400.c
542
*val2 = st->variant->accel_scale_micro;
drivers/iio/imu/adis16400.c
549
*val = st->variant->temp_scale_nano / 1000000;
drivers/iio/imu/adis16400.c
550
*val2 = (st->variant->temp_scale_nano % 1000000);
drivers/iio/imu/adis16400.c
561
ret = adis_read_reg_16(&st->adis,
drivers/iio/imu/adis16400.c
570
*val = st->variant->temp_offset;
drivers/iio/imu/adis16400.c
573
adis_dev_auto_scoped_lock(&st->adis) {
drivers/iio/imu/adis16400.c
578
ret = __adis_read_reg_16(&st->adis, ADIS16400_SENS_AVG,
drivers/iio/imu/adis16400.c
583
ret = st->variant->get_freq(st);
drivers/iio/imu/adis16400.c
592
adis_dev_auto_scoped_lock(&st->adis) {
drivers/iio/imu/adis16400.c
593
ret = st->variant->get_freq(st);
drivers/iio/imu/adis16400.c
610
struct adis16400_state *st = iio_priv(indio_dev);
drivers/iio/imu/adis16400.c
611
struct adis *adis = &st->adis;
drivers/iio/imu/adis16400.c
619
if (st->variant->flags & ADIS16400_BURST_DIAG_STAT) {
drivers/iio/imu/adis16460.c
144
struct adis16460 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16460.c
158
return adis_write_reg_16(&st->adis, ADIS16460_REG_DEC_RATE, t);
drivers/iio/imu/adis16460.c
163
struct adis16460 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16460.c
168
ret = adis_read_reg_16(&st->adis, ADIS16460_REG_DEC_RATE, &t);
drivers/iio/imu/adis16460.c
182
struct adis16460 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16460.c
190
*val = st->chip_info->gyro_max_scale;
drivers/iio/imu/adis16460.c
191
*val2 = st->chip_info->gyro_max_val;
drivers/iio/imu/adis16460.c
194
*val = st->chip_info->accel_max_scale;
drivers/iio/imu/adis16460.c
195
*val2 = st->chip_info->accel_max_val;
drivers/iio/imu/adis16460.c
359
struct adis16460 *st;
drivers/iio/imu/adis16460.c
362
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/imu/adis16460.c
366
st = iio_priv(indio_dev);
drivers/iio/imu/adis16460.c
368
st->chip_info = &adis16460_chip_info;
drivers/iio/imu/adis16460.c
370
indio_dev->channels = st->chip_info->channels;
drivers/iio/imu/adis16460.c
371
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/imu/adis16460.c
375
ret = adis_init(&st->adis, indio_dev, spi, &adis16460_data);
drivers/iio/imu/adis16460.c
379
ret = devm_adis_setup_buffer_and_trigger(&st->adis, indio_dev, NULL);
drivers/iio/imu/adis16460.c
383
ret = __adis_initial_startup(&st->adis);
drivers/iio/imu/adis16475.c
1460
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
1462
if (st->info->flags & ADIS16475_HAS_BURST_DELTA_DATA) {
drivers/iio/imu/adis16475.c
1471
ret = __adis_update_bits(&st->adis, ADIS16475_REG_MSG_CTRL,
drivers/iio/imu/adis16475.c
1506
static void adis16475_burst32_check(struct adis16475 *st)
drivers/iio/imu/adis16475.c
1509
struct adis *adis = &st->adis;
drivers/iio/imu/adis16475.c
1512
if (!(st->info->flags & ADIS16475_HAS_BURST32))
drivers/iio/imu/adis16475.c
1515
if (st->info->flags & ADIS16475_HAS_TIMESTAMP32)
drivers/iio/imu/adis16475.c
1518
if (st->lsb_flag && !st->burst32) {
drivers/iio/imu/adis16475.c
1521
ret = __adis_update_bits(&st->adis, ADIS16475_REG_MSG_CTRL,
drivers/iio/imu/adis16475.c
1526
st->burst32 = true;
drivers/iio/imu/adis16475.c
1540
} else if (!st->lsb_flag && st->burst32) {
drivers/iio/imu/adis16475.c
1543
ret = __adis_update_bits(&st->adis, ADIS16475_REG_MSG_CTRL,
drivers/iio/imu/adis16475.c
1548
st->burst32 = false;
drivers/iio/imu/adis16475.c
1561
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
1562
struct adis *adis = &st->adis;
drivers/iio/imu/adis16475.c
1569
u16 start_idx = (st->info->flags & ADIS16475_HAS_TIMESTAMP32) ? 2 : 0;
drivers/iio/imu/adis16475.c
1572
const u8 offset = st->burst32 ? 13 : 7;
drivers/iio/imu/adis16475.c
1574
if (st->burst32) {
drivers/iio/imu/adis16475.c
1575
crc_offset = (st->info->flags & ADIS16475_HAS_TIMESTAMP32) ? 16 : 15;
drivers/iio/imu/adis16475.c
1599
st->data[i++] = buffer[offset];
drivers/iio/imu/adis16475.c
1609
st->data[i++] = 0;
drivers/iio/imu/adis16475.c
1619
if (st->burst32) {
drivers/iio/imu/adis16475.c
1621
st->data[i++] = buffer[(bit - buff_offset) * 2 + 2];
drivers/iio/imu/adis16475.c
1623
st->data[i++] = buffer[(bit - buff_offset) * 2 + 1];
drivers/iio/imu/adis16475.c
1625
st->data[i++] = buffer[(bit - buff_offset) + 1];
drivers/iio/imu/adis16475.c
1632
if (st->lsb_flag && !(st->info->flags & ADIS16475_HAS_BURST32)) {
drivers/iio/imu/adis16475.c
1638
st->data[i++] = cpu_to_be16(val);
drivers/iio/imu/adis16475.c
1641
st->data[i++] = 0;
drivers/iio/imu/adis16475.c
1649
iio_push_to_buffers_with_timestamp(indio_dev, st->data, pf->timestamp);
drivers/iio/imu/adis16475.c
1658
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
1666
adis16475_burst32_check(st);
drivers/iio/imu/adis16475.c
1694
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
1695
struct adis *adis = &st->adis;
drivers/iio/imu/adis16475.c
170
struct adis16475 *st = file->private_data;
drivers/iio/imu/adis16475.c
1723
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
1724
struct adis *adis = &st->adis;
drivers/iio/imu/adis16475.c
1728
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16475.c
176
ret = adis_read_reg_16(&st->adis, ADIS16475_REG_FIRM_REV, &rev);
drivers/iio/imu/adis16475.c
1763
adis16475_burst32_check(st);
drivers/iio/imu/adis16475.c
1769
static int adis16475_config_sync_mode(struct adis16475 *st)
drivers/iio/imu/adis16475.c
1772
struct device *dev = &st->adis.spi->dev;
drivers/iio/imu/adis16475.c
1775
u16 max_sample_rate = st->info->int_clk + 100;
drivers/iio/imu/adis16475.c
1779
if (st->info->int_clk == 4000) {
drivers/iio/imu/adis16475.c
1780
ret = __adis_update_bits(&st->adis, ADIS16475_REG_MSG_CTRL,
drivers/iio/imu/adis16475.c
1788
st->clk_freq = st->info->int_clk * 1000;
drivers/iio/imu/adis16475.c
1794
if (sync_mode >= st->info->num_sync) {
drivers/iio/imu/adis16475.c
1796
st->info->name);
drivers/iio/imu/adis16475.c
1800
sync = &st->info->sync[sync_mode];
drivers/iio/imu/adis16475.c
1801
st->sync_mode = sync->sync_mode;
drivers/iio/imu/adis16475.c
1810
st->clk_freq = clk_get_rate(clk);
drivers/iio/imu/adis16475.c
1811
if (st->clk_freq < sync->min_rate ||
drivers/iio/imu/adis16475.c
1812
st->clk_freq > sync->max_rate) {
drivers/iio/imu/adis16475.c
1815
st->clk_freq, sync->min_rate, sync->max_rate);
drivers/iio/imu/adis16475.c
1827
up_scale = max_sample_rate / st->clk_freq;
drivers/iio/imu/adis16475.c
1829
ret = __adis_write_reg_16(&st->adis,
drivers/iio/imu/adis16475.c
1836
st->clk_freq *= 1000;
drivers/iio/imu/adis16475.c
1847
ret = __adis_update_bits(&st->adis, ADIS16475_REG_MSG_CTRL,
drivers/iio/imu/adis16475.c
1857
static int adis16475_config_irq_pin(struct adis16475 *st)
drivers/iio/imu/adis16475.c
1863
struct spi_device *spi = st->adis.spi;
drivers/iio/imu/adis16475.c
1867
if (st->adis.data->has_fifo) {
drivers/iio/imu/adis16475.c
1875
st->adis.irq_flag = IRQF_TRIGGER_HIGH;
drivers/iio/imu/adis16475.c
1878
st->adis.irq_flag = IRQF_TRIGGER_LOW;
drivers/iio/imu/adis16475.c
1887
ret = adis_update_bits(&st->adis, ADIS16475_REG_FIFO_CTRL,
drivers/iio/imu/adis16475.c
1893
ret = adis_update_bits(&st->adis, ADIS16475_REG_FIFO_CTRL,
drivers/iio/imu/adis16475.c
1906
st->adis.irq_flag = IRQF_TRIGGER_RISING;
drivers/iio/imu/adis16475.c
1909
st->adis.irq_flag = IRQF_TRIGGER_FALLING;
drivers/iio/imu/adis16475.c
1917
ret = __adis_update_bits(&st->adis, ADIS16475_REG_MSG_CTRL,
drivers/iio/imu/adis16475.c
1935
struct adis16475 *st;
drivers/iio/imu/adis16475.c
1939
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/imu/adis16475.c
1943
st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
1945
st->info = spi_get_device_match_data(spi);
drivers/iio/imu/adis16475.c
1946
if (!st->info)
drivers/iio/imu/adis16475.c
1949
ret = adis_init(&st->adis, indio_dev, spi, &st->info->adis_data);
drivers/iio/imu/adis16475.c
1953
indio_dev->name = st->info->name;
drivers/iio/imu/adis16475.c
1954
indio_dev->channels = st->info->channels;
drivers/iio/imu/adis16475.c
1955
indio_dev->num_channels = st->info->num_channels;
drivers/iio/imu/adis16475.c
1956
if (st->adis.data->has_fifo)
drivers/iio/imu/adis16475.c
196
struct adis16475 *st = file->private_data;
drivers/iio/imu/adis16475.c
1962
ret = __adis_initial_startup(&st->adis);
drivers/iio/imu/adis16475.c
1966
ret = adis16475_config_irq_pin(st);
drivers/iio/imu/adis16475.c
1970
ret = adis16475_config_sync_mode(st);
drivers/iio/imu/adis16475.c
1974
if (st->adis.data->has_fifo) {
drivers/iio/imu/adis16475.c
1975
ret = devm_adis_setup_buffer_and_trigger_with_attrs(&st->adis, indio_dev,
drivers/iio/imu/adis16475.c
1984
ret = adis_update_bits(&st->adis, ADIS16475_REG_FIFO_CTRL,
drivers/iio/imu/adis16475.c
1989
ret = devm_adis_setup_buffer_and_trigger(&st->adis, indio_dev,
drivers/iio/imu/adis16475.c
202
ret = adis_read_reg_16(&st->adis, ADIS16475_REG_FIRM_Y, &year);
drivers/iio/imu/adis16475.c
206
ret = adis_read_reg_16(&st->adis, ADIS16475_REG_FIRM_DM, &md);
drivers/iio/imu/adis16475.c
225
struct adis16475 *st = arg;
drivers/iio/imu/adis16475.c
229
ret = adis_read_reg_16(&st->adis, ADIS16475_REG_SERIAL_NUM, &serial);
drivers/iio/imu/adis16475.c
242
struct adis16475 *st = arg;
drivers/iio/imu/adis16475.c
246
ret = adis_read_reg_16(&st->adis, ADIS16475_REG_PROD_ID, &prod_id);
drivers/iio/imu/adis16475.c
259
struct adis16475 *st = arg;
drivers/iio/imu/adis16475.c
263
ret = adis_read_reg_32(&st->adis, ADIS16475_REG_FLASH_CNT,
drivers/iio/imu/adis16475.c
277
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
284
d, st, &adis16475_serial_number_fops);
drivers/iio/imu/adis16475.c
286
d, st, &adis16475_product_id_fops);
drivers/iio/imu/adis16475.c
288
d, st, &adis16475_flash_count_fops);
drivers/iio/imu/adis16475.c
290
d, st, &adis16475_firmware_revision_fops);
drivers/iio/imu/adis16475.c
292
st, &adis16475_firmware_date_fops);
drivers/iio/imu/adis16475.c
295
static int adis16475_get_freq(struct adis16475 *st, u32 *freq)
drivers/iio/imu/adis16475.c
299
u32 sample_rate = st->clk_freq;
drivers/iio/imu/adis16475.c
301
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16475.c
303
if (st->sync_mode == ADIS16475_SYNC_SCALED) {
drivers/iio/imu/adis16475.c
306
ret = __adis_read_reg_16(&st->adis, ADIS16475_REG_UP_SCALE, &sync_scale);
drivers/iio/imu/adis16475.c
310
sample_rate = st->clk_freq * sync_scale;
drivers/iio/imu/adis16475.c
313
ret = __adis_read_reg_16(&st->adis, ADIS16475_REG_DEC_RATE, &dec);
drivers/iio/imu/adis16475.c
322
static int adis16475_set_freq(struct adis16475 *st, const u32 freq)
drivers/iio/imu/adis16475.c
326
u32 sample_rate = st->clk_freq;
drivers/iio/imu/adis16475.c
328
u32 max_sample_rate = st->info->int_clk * 1000 + 100000;
drivers/iio/imu/adis16475.c
329
u32 min_sample_rate = st->info->int_clk * 1000 - 100000;
drivers/iio/imu/adis16475.c
334
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16475.c
348
if (st->sync_mode == ADIS16475_SYNC_SCALED) {
drivers/iio/imu/adis16475.c
349
unsigned long scaled_rate = lcm(st->clk_freq, freq);
drivers/iio/imu/adis16475.c
358
scaled_rate = max_sample_rate / st->clk_freq * st->clk_freq;
drivers/iio/imu/adis16475.c
374
scaled_rate = roundup(min_sample_rate, st->clk_freq);
drivers/iio/imu/adis16475.c
376
sync_scale = scaled_rate / st->clk_freq;
drivers/iio/imu/adis16475.c
377
ret = __adis_write_reg_16(&st->adis, ADIS16475_REG_UP_SCALE, sync_scale);
drivers/iio/imu/adis16475.c
389
if (dec > st->info->max_dec)
drivers/iio/imu/adis16475.c
390
dec = st->info->max_dec;
drivers/iio/imu/adis16475.c
392
ret = __adis_write_reg_16(&st->adis, ADIS16475_REG_DEC_RATE, dec);
drivers/iio/imu/adis16475.c
400
assign_bit(ADIS16475_LSB_DEC_MASK, &st->lsb_flag, dec);
drivers/iio/imu/adis16475.c
416
static int adis16475_get_filter(struct adis16475 *st, u32 *filter)
drivers/iio/imu/adis16475.c
422
ret = adis_read_reg_16(&st->adis, ADIS16475_REG_FILT_CTRL, &filter_sz);
drivers/iio/imu/adis16475.c
431
static int adis16475_set_filter(struct adis16475 *st, const u32 filter)
drivers/iio/imu/adis16475.c
441
ret = adis_write_reg_16(&st->adis, ADIS16475_REG_FILT_CTRL,
drivers/iio/imu/adis16475.c
450
assign_bit(ADIS16475_LSB_FIR_MASK, &st->lsb_flag, i);
drivers/iio/imu/adis16475.c
460
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
464
ret = adis_read_reg_16(&st->adis, ADIS16475_REG_FIFO_CTRL, &val);
drivers/iio/imu/adis16475.c
476
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
480
ret = adis_read_reg_16(&st->adis, ADIS16475_REG_FIFO_CTRL, &val);
drivers/iio/imu/adis16475.c
518
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
519
struct adis *adis = &st->adis;
drivers/iio/imu/adis16475.c
527
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
528
struct adis *adis = &st->adis;
drivers/iio/imu/adis16475.c
531
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16475.c
549
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
553
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16475.c
558
ret = __adis_update_bits(&st->adis, ADIS16475_REG_FIFO_CTRL, ADIS16575_WM_LVL_MASK, wm_lvl);
drivers/iio/imu/adis16475.c
562
st->fifo_watermark = val;
drivers/iio/imu/adis16475.c
580
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
590
*val = st->info->gyro_max_val;
drivers/iio/imu/adis16475.c
591
*val2 = st->info->gyro_max_scale;
drivers/iio/imu/adis16475.c
594
*val = st->info->accel_max_val;
drivers/iio/imu/adis16475.c
595
*val2 = st->info->accel_max_scale;
drivers/iio/imu/adis16475.c
598
*val = st->info->temp_scale;
drivers/iio/imu/adis16475.c
601
*val = st->info->deltang_max_val;
drivers/iio/imu/adis16475.c
605
*val = st->info->deltvel_max_val;
drivers/iio/imu/adis16475.c
612
ret = adis_read_reg_32(&st->adis,
drivers/iio/imu/adis16475.c
620
ret = adis16475_get_filter(st, val);
drivers/iio/imu/adis16475.c
626
ret = adis16475_get_freq(st, &tmp);
drivers/iio/imu/adis16475.c
642
struct adis16475 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16475.c
648
return adis16475_set_freq(st, tmp);
drivers/iio/imu/adis16475.c
650
return adis16475_set_filter(st, val);
drivers/iio/imu/adis16475.c
652
return adis_write_reg_32(&st->adis,
drivers/iio/imu/adis16480.c
1396
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
1397
struct adis *adis = &st->adis;
drivers/iio/imu/adis16480.c
1438
if (curr == st->burst_id && next != st->burst_id) {
drivers/iio/imu/adis16480.c
1464
st->data[i++] = buffer[offset + 1];
drivers/iio/imu/adis16480.c
1474
st->data[i++] = 0;
drivers/iio/imu/adis16480.c
1481
st->data[i++] = buffer[2 * (bit - buff_offset) + offset + 3];
drivers/iio/imu/adis16480.c
1482
st->data[i++] = buffer[2 * (bit - buff_offset) + offset + 2];
drivers/iio/imu/adis16480.c
1487
iio_push_to_buffers_with_timestamp(indio_dev, st->data, pf->timestamp);
drivers/iio/imu/adis16480.c
1505
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
1507
if (st->chip_info->has_burst_delta_data) {
drivers/iio/imu/adis16480.c
1510
st->burst_id = ADIS16495_GYRO_ACCEL_BURST_ID;
drivers/iio/imu/adis16480.c
1513
st->burst_id = ADIS16545_DELTA_ANG_VEL_BURST_ID;
drivers/iio/imu/adis16480.c
1516
ret = __adis_update_bits(&st->adis, ADIS16480_REG_CONFIG,
drivers/iio/imu/adis16480.c
1534
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
1535
struct device *dev = &st->adis.spi->dev;
drivers/iio/imu/adis16480.c
1538
ret = adis_write_reg_16(&st->adis, ADIS16480_REG_SLP_CNT, BIT(9));
drivers/iio/imu/adis16480.c
1560
static int adis16480_config_irq_pin(struct adis16480 *st)
drivers/iio/imu/adis16480.c
1562
struct device *dev = &st->adis.spi->dev;
drivers/iio/imu/adis16480.c
1596
irq_type = irq_get_trigger_type(st->adis.spi->irq);
drivers/iio/imu/adis16480.c
1606
return adis_write_reg_16(&st->adis, ADIS16480_REG_FNCTIO_CTRL, val);
drivers/iio/imu/adis16480.c
1609
static int adis16480_fw_get_ext_clk_pin(struct adis16480 *st)
drivers/iio/imu/adis16480.c
1611
struct device *dev = &st->adis.spi->dev;
drivers/iio/imu/adis16480.c
1630
static int adis16480_ext_clk_config(struct adis16480 *st, bool enable)
drivers/iio/imu/adis16480.c
1632
struct device *dev = &st->adis.spi->dev;
drivers/iio/imu/adis16480.c
1638
ret = adis_read_reg_16(&st->adis, ADIS16480_REG_FNCTIO_CTRL, &val);
drivers/iio/imu/adis16480.c
1642
pin = adis16480_fw_get_ext_clk_pin(st);
drivers/iio/imu/adis16480.c
1654
if (st->chip_info->has_pps_clk_mode) {
drivers/iio/imu/adis16480.c
1655
mode |= ADIS16480_SYNC_MODE(st->clk_mode);
drivers/iio/imu/adis16480.c
1662
ret = adis_write_reg_16(&st->adis, ADIS16480_REG_FNCTIO_CTRL, val);
drivers/iio/imu/adis16480.c
1666
return clk_prepare_enable(st->ext_clk);
drivers/iio/imu/adis16480.c
1669
static int adis16480_get_ext_clocks(struct adis16480 *st)
drivers/iio/imu/adis16480.c
1671
struct device *dev = &st->adis.spi->dev;
drivers/iio/imu/adis16480.c
1673
st->ext_clk = devm_clk_get_optional(dev, "sync");
drivers/iio/imu/adis16480.c
1674
if (IS_ERR(st->ext_clk))
drivers/iio/imu/adis16480.c
1675
return dev_err_probe(dev, PTR_ERR(st->ext_clk), "failed to get ext clk\n");
drivers/iio/imu/adis16480.c
1676
if (st->ext_clk) {
drivers/iio/imu/adis16480.c
1677
st->clk_mode = ADIS16480_CLK_SYNC;
drivers/iio/imu/adis16480.c
1681
if (st->chip_info->has_pps_clk_mode) {
drivers/iio/imu/adis16480.c
1682
st->ext_clk = devm_clk_get_optional(dev, "pps");
drivers/iio/imu/adis16480.c
1683
if (IS_ERR(st->ext_clk))
drivers/iio/imu/adis16480.c
1684
return dev_err_probe(dev, PTR_ERR(st->ext_clk), "failed to get ext clk\n");
drivers/iio/imu/adis16480.c
1685
if (st->ext_clk) {
drivers/iio/imu/adis16480.c
1686
st->clk_mode = ADIS16480_CLK_PPS;
drivers/iio/imu/adis16480.c
1691
st->clk_mode = ADIS16480_CLK_INT;
drivers/iio/imu/adis16480.c
1712
struct adis16480 *st;
drivers/iio/imu/adis16480.c
1715
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/imu/adis16480.c
1719
st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
1721
st->chip_info = &adis16480_chip_info[id->driver_data];
drivers/iio/imu/adis16480.c
1723
indio_dev->channels = st->chip_info->channels;
drivers/iio/imu/adis16480.c
1724
indio_dev->num_channels = st->chip_info->num_channels;
drivers/iio/imu/adis16480.c
1725
if (st->chip_info->has_burst_delta_data)
drivers/iio/imu/adis16480.c
1730
adis16480_data = &st->chip_info->adis_data;
drivers/iio/imu/adis16480.c
1732
ret = adis_init(&st->adis, indio_dev, spi, adis16480_data);
drivers/iio/imu/adis16480.c
1736
ret = __adis_initial_startup(&st->adis);
drivers/iio/imu/adis16480.c
1745
st->burst_id = ADIS16495_GYRO_ACCEL_BURST_ID;
drivers/iio/imu/adis16480.c
1747
if (st->chip_info->has_sleep_cnt) {
drivers/iio/imu/adis16480.c
1753
ret = adis16480_config_irq_pin(st);
drivers/iio/imu/adis16480.c
1757
ret = adis16480_get_ext_clocks(st);
drivers/iio/imu/adis16480.c
1761
if (st->ext_clk) {
drivers/iio/imu/adis16480.c
1762
ret = adis16480_ext_clk_config(st, true);
drivers/iio/imu/adis16480.c
1766
ret = devm_add_action_or_reset(dev, adis16480_clk_disable, st->ext_clk);
drivers/iio/imu/adis16480.c
1770
st->clk_freq = clk_get_rate(st->ext_clk);
drivers/iio/imu/adis16480.c
1771
st->clk_freq *= 1000; /* micro */
drivers/iio/imu/adis16480.c
1772
if (st->clk_mode == ADIS16480_CLK_PPS) {
drivers/iio/imu/adis16480.c
1781
sync_scale = st->chip_info->int_clk / st->clk_freq;
drivers/iio/imu/adis16480.c
1782
ret = __adis_write_reg_16(&st->adis, ADIS16495_REG_SYNC_SCALE, sync_scale);
drivers/iio/imu/adis16480.c
1787
st->clk_freq = st->chip_info->int_clk;
drivers/iio/imu/adis16480.c
1794
ret = devm_adis_setup_buffer_and_trigger(&st->adis, indio_dev,
drivers/iio/imu/adis16480.c
326
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
327
unsigned int t, sample_rate = st->clk_freq;
drivers/iio/imu/adis16480.c
337
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16480.c
350
if (st->clk_mode == ADIS16480_CLK_PPS) {
drivers/iio/imu/adis16480.c
351
unsigned long scaled_rate = lcm(st->clk_freq, t);
drivers/iio/imu/adis16480.c
359
if (scaled_rate > st->chip_info->int_clk)
drivers/iio/imu/adis16480.c
360
scaled_rate = st->chip_info->int_clk / st->clk_freq * st->clk_freq;
drivers/iio/imu/adis16480.c
362
scaled_rate = st->chip_info->int_clk / scaled_rate * scaled_rate;
drivers/iio/imu/adis16480.c
375
scaled_rate = roundup(4000000, st->clk_freq);
drivers/iio/imu/adis16480.c
377
sync_scale = scaled_rate / st->clk_freq;
drivers/iio/imu/adis16480.c
378
ret = __adis_write_reg_16(&st->adis, ADIS16495_REG_SYNC_SCALE, sync_scale);
drivers/iio/imu/adis16480.c
389
if (t > st->chip_info->max_dec_rate)
drivers/iio/imu/adis16480.c
390
t = st->chip_info->max_dec_rate;
drivers/iio/imu/adis16480.c
392
return __adis_write_reg_16(&st->adis, ADIS16480_REG_DEC_RATE, t);
drivers/iio/imu/adis16480.c
397
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
400
unsigned int freq, sample_rate = st->clk_freq;
drivers/iio/imu/adis16480.c
402
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16480.c
404
if (st->clk_mode == ADIS16480_CLK_PPS) {
drivers/iio/imu/adis16480.c
407
ret = __adis_read_reg_16(&st->adis, ADIS16495_REG_SYNC_SCALE, &sync_scale);
drivers/iio/imu/adis16480.c
411
sample_rate = st->clk_freq * sync_scale;
drivers/iio/imu/adis16480.c
414
ret = __adis_read_reg_16(&st->adis, ADIS16480_REG_DEC_RATE, &t);
drivers/iio/imu/adis16480.c
472
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
479
return adis_write_reg_16(&st->adis, reg, bias);
drivers/iio/imu/adis16480.c
482
return adis_write_reg_32(&st->adis, reg, bias);
drivers/iio/imu/adis16480.c
494
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
502
ret = adis_read_reg_16(&st->adis, reg, &val16);
drivers/iio/imu/adis16480.c
508
ret = adis_read_reg_32(&st->adis, reg, &val32);
drivers/iio/imu/adis16480.c
526
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
531
return adis_write_reg_16(&st->adis, reg, scale);
drivers/iio/imu/adis16480.c
538
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
542
ret = adis_read_reg_16(&st->adis, reg, &val16);
drivers/iio/imu/adis16480.c
579
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
588
ret = adis_read_reg_16(&st->adis, reg, &val);
drivers/iio/imu/adis16480.c
595
*freq = st->chip_info->filter_freqs[(val >> offset) & 0x3];
drivers/iio/imu/adis16480.c
603
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
614
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16480.c
616
ret = __adis_read_reg_16(&st->adis, reg, &val);
drivers/iio/imu/adis16480.c
624
best_diff = st->chip_info->filter_freqs[0];
drivers/iio/imu/adis16480.c
626
if (st->chip_info->filter_freqs[i] >= freq) {
drivers/iio/imu/adis16480.c
627
diff = st->chip_info->filter_freqs[i] - freq;
drivers/iio/imu/adis16480.c
640
return __adis_write_reg_16(&st->adis, reg, val);
drivers/iio/imu/adis16480.c
646
struct adis16480 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16480.c
655
*val = st->chip_info->gyro_max_scale;
drivers/iio/imu/adis16480.c
656
*val2 = st->chip_info->gyro_max_val;
drivers/iio/imu/adis16480.c
659
*val = st->chip_info->accel_max_scale;
drivers/iio/imu/adis16480.c
660
*val2 = st->chip_info->accel_max_val;
drivers/iio/imu/adis16480.c
672
*val = st->chip_info->temp_scale / 1000;
drivers/iio/imu/adis16480.c
673
*val2 = (st->chip_info->temp_scale % 1000) * 1000;
drivers/iio/imu/adis16480.c
684
*val = st->chip_info->deltang_max_val;
drivers/iio/imu/adis16480.c
688
*val = st->chip_info->deltvel_max_val;
drivers/iio/imu/adis16480.c
697
*val = DIV_ROUND_CLOSEST_ULL(temp, st->chip_info->temp_scale);
drivers/iio/imu/adis16550.c
1057
struct adis16550 *st;
drivers/iio/imu/adis16550.c
1061
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/imu/adis16550.c
1065
st = iio_priv(indio_dev);
drivers/iio/imu/adis16550.c
1066
st->info = spi_get_device_match_data(spi);
drivers/iio/imu/adis16550.c
1067
if (!st->info)
drivers/iio/imu/adis16550.c
1069
adis = &st->adis;
drivers/iio/imu/adis16550.c
1070
indio_dev->name = st->info->name;
drivers/iio/imu/adis16550.c
1071
indio_dev->channels = st->info->channels;
drivers/iio/imu/adis16550.c
1072
indio_dev->num_channels = st->info->num_channels;
drivers/iio/imu/adis16550.c
1077
st->adis.ops = &adis16550_ops;
drivers/iio/imu/adis16550.c
1078
st->xfer[0].tx_buf = st->buffer + burst_length;
drivers/iio/imu/adis16550.c
1079
st->xfer[0].len = 4;
drivers/iio/imu/adis16550.c
1080
st->xfer[0].cs_change = 1;
drivers/iio/imu/adis16550.c
1081
st->xfer[0].delay.value = 8;
drivers/iio/imu/adis16550.c
1082
st->xfer[0].delay.unit = SPI_DELAY_UNIT_USECS;
drivers/iio/imu/adis16550.c
1083
st->xfer[1].rx_buf = st->buffer;
drivers/iio/imu/adis16550.c
1084
st->xfer[1].len = burst_length;
drivers/iio/imu/adis16550.c
1086
spi_message_init_with_transfers(&adis->msg, st->xfer, 2);
drivers/iio/imu/adis16550.c
1092
ret = adis_init(&st->adis, indio_dev, spi, &adis16550_data);
drivers/iio/imu/adis16550.c
1096
ret = __adis_initial_startup(&st->adis);
drivers/iio/imu/adis16550.c
1100
ret = adis16550_config_sync(st);
drivers/iio/imu/adis16550.c
1104
ret = devm_adis_setup_buffer_and_trigger(&st->adis, indio_dev,
drivers/iio/imu/adis16550.c
201
struct adis16550 *st = container_of(adis, struct adis16550, adis);
drivers/iio/imu/adis16550.c
204
.tx_buf = &st->din[0],
drivers/iio/imu/adis16550.c
208
.tx_buf = &st->din[1],
drivers/iio/imu/adis16550.c
211
.rx_buf = st->dout,
drivers/iio/imu/adis16550.c
213
.tx_buf = &st->din[1],
drivers/iio/imu/adis16550.c
214
.rx_buf = &st->dout[1],
drivers/iio/imu/adis16550.c
224
&st->din[0]);
drivers/iio/imu/adis16550.c
228
adis16550_spi_msg_prepare(reg, wr, writeval, &st->din[1]);
drivers/iio/imu/adis16550.c
247
ret = adis16550_spi_validate(adis, st->dout[0], &data);
drivers/iio/imu/adis16550.c
262
ret = adis16550_spi_validate(adis, st->dout[1], &data);
drivers/iio/imu/adis16550.c
295
struct adis16550 *st = file->private_data;
drivers/iio/imu/adis16550.c
301
ret = adis_read_reg_16(&st->adis, ADIS16550_REG_FW_REV, &rev);
drivers/iio/imu/adis16550.c
321
struct adis16550 *st = file->private_data;
drivers/iio/imu/adis16550.c
327
ret = adis_read_reg_32(&st->adis, ADIS16550_REG_FW_DATE, &date);
drivers/iio/imu/adis16550.c
346
struct adis16550 *st = arg;
drivers/iio/imu/adis16550.c
350
ret = adis_read_reg_32(&st->adis, ADIS16550_REG_SERIAL_NUM, &serial);
drivers/iio/imu/adis16550.c
363
struct adis16550 *st = arg;
drivers/iio/imu/adis16550.c
367
ret = adis_read_reg_16(&st->adis, ADIS16550_REG_PROD_ID, &prod_id);
drivers/iio/imu/adis16550.c
380
struct adis16550 *st = arg;
drivers/iio/imu/adis16550.c
384
ret = adis_read_reg_16(&st->adis, ADIS16550_REG_FLASH_CNT, &flash_count);
drivers/iio/imu/adis16550.c
397
struct adis16550 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16550.c
400
debugfs_create_file_unsafe("serial_number", 0400, d, st,
drivers/iio/imu/adis16550.c
402
debugfs_create_file_unsafe("product_id", 0400, d, st,
drivers/iio/imu/adis16550.c
404
debugfs_create_file("firmware_revision", 0400, d, st,
drivers/iio/imu/adis16550.c
406
debugfs_create_file("firmware_date", 0400, d, st,
drivers/iio/imu/adis16550.c
408
debugfs_create_file_unsafe("flash_count", 0400, d, st,
drivers/iio/imu/adis16550.c
417
static int adis16550_get_freq(struct adis16550 *st, u32 *freq)
drivers/iio/imu/adis16550.c
421
u32 sample_rate = st->clk_freq_hz;
drivers/iio/imu/adis16550.c
423
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16550.c
425
if (st->sync_mode == ADIS16550_SYNC_MODE_SCALED) {
drivers/iio/imu/adis16550.c
428
ret = __adis_read_reg_16(&st->adis, ADIS16550_REG_SYNC_SCALE, &sync_scale);
drivers/iio/imu/adis16550.c
432
sample_rate = st->clk_freq_hz * sync_scale;
drivers/iio/imu/adis16550.c
435
ret = __adis_read_reg_16(&st->adis, ADIS16550_REG_DEC_RATE, &dec);
drivers/iio/imu/adis16550.c
443
static int adis16550_set_freq_hz(struct adis16550 *st, u32 freq_hz)
drivers/iio/imu/adis16550.c
447
u32 sample_rate = st->clk_freq_hz;
drivers/iio/imu/adis16550.c
452
u32 max_sample_rate = st->info->int_clk * 1000 + 500000;
drivers/iio/imu/adis16550.c
453
u32 min_sample_rate = st->info->int_clk * 1000 - 1000000;
drivers/iio/imu/adis16550.c
458
adis_dev_auto_lock(&st->adis);
drivers/iio/imu/adis16550.c
460
if (st->sync_mode == ADIS16550_SYNC_MODE_SCALED) {
drivers/iio/imu/adis16550.c
461
unsigned long scaled_rate = lcm(st->clk_freq_hz, freq_hz);
drivers/iio/imu/adis16550.c
465
scaled_rate = max_sample_rate / st->clk_freq_hz * st->clk_freq_hz;
drivers/iio/imu/adis16550.c
470
scaled_rate = roundup(min_sample_rate, st->clk_freq_hz);
drivers/iio/imu/adis16550.c
472
sync_scale = scaled_rate / st->clk_freq_hz;
drivers/iio/imu/adis16550.c
473
ret = __adis_write_reg_16(&st->adis, ADIS16550_REG_SYNC_SCALE,
drivers/iio/imu/adis16550.c
486
dec = min(dec, st->info->max_dec);
drivers/iio/imu/adis16550.c
488
return __adis_write_reg_16(&st->adis, ADIS16550_REG_DEC_RATE, dec);
drivers/iio/imu/adis16550.c
491
static int adis16550_get_accl_filter_freq(struct adis16550 *st, int *freq_hz)
drivers/iio/imu/adis16550.c
496
ret = adis_read_reg_16(&st->adis, ADIS16550_REG_CONFIG, &config);
drivers/iio/imu/adis16550.c
508
static int adis16550_set_accl_filter_freq(struct adis16550 *st, int freq_hz)
drivers/iio/imu/adis16550.c
513
return __adis_update_bits(&st->adis, ADIS16550_REG_CONFIG,
drivers/iio/imu/adis16550.c
517
static int adis16550_get_gyro_filter_freq(struct adis16550 *st, int *freq_hz)
drivers/iio/imu/adis16550.c
522
ret = adis_read_reg_16(&st->adis, ADIS16550_REG_CONFIG, &config);
drivers/iio/imu/adis16550.c
534
static int adis16550_set_gyro_filter_freq(struct adis16550 *st, int freq_hz)
drivers/iio/imu/adis16550.c
539
return __adis_update_bits(&st->adis, ADIS16550_REG_CONFIG,
drivers/iio/imu/adis16550.c
582
struct adis16550 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16550.c
594
*val = st->info->gyro_max_val;
drivers/iio/imu/adis16550.c
595
*val2 = st->info->gyro_max_scale;
drivers/iio/imu/adis16550.c
598
*val = st->info->accel_max_val;
drivers/iio/imu/adis16550.c
599
*val2 = st->info->accel_max_scale;
drivers/iio/imu/adis16550.c
602
*val = st->info->temp_scale;
drivers/iio/imu/adis16550.c
605
*val = st->info->deltang_max_val;
drivers/iio/imu/adis16550.c
609
*val = st->info->deltvel_max_val;
drivers/iio/imu/adis16550.c
617
*val = DIV_ROUND_CLOSEST(25000, st->info->temp_scale);
drivers/iio/imu/adis16550.c
620
ret = adis_read_reg_32(&st->adis,
drivers/iio/imu/adis16550.c
627
ret = adis_read_reg_16(&st->adis,
drivers/iio/imu/adis16550.c
635
ret = adis16550_get_freq(st, &tmp);
drivers/iio/imu/adis16550.c
645
ret = adis16550_get_gyro_filter_freq(st, val);
drivers/iio/imu/adis16550.c
650
ret = adis16550_get_accl_filter_freq(st, val);
drivers/iio/imu/adis16550.c
666
struct adis16550 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16550.c
673
return adis16550_set_freq_hz(st, tmp);
drivers/iio/imu/adis16550.c
675
return adis_write_reg_32(&st->adis, adis16550_calib_bias[idx],
drivers/iio/imu/adis16550.c
678
return adis_write_reg_16(&st->adis, adis16550_calib_scale[idx],
drivers/iio/imu/adis16550.c
683
return adis16550_set_gyro_filter_freq(st, val);
drivers/iio/imu/adis16550.c
685
return adis16550_set_accl_filter_freq(st, val);
drivers/iio/imu/adis16550.c
840
struct adis16550 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16550.c
842
__be32 *buffer = (__be32 *)st->buffer;
drivers/iio/imu/adis16550.c
851
ret = adis16550_spi_validate(&st->adis, buffer[0], &dummy);
drivers/iio/imu/adis16550.c
882
struct adis16550 *st = iio_priv(indio_dev);
drivers/iio/imu/adis16550.c
886
memset(st->buffer, 0, burst_length + sizeof(u32));
drivers/iio/imu/adis16550.c
893
tx = st->buffer + burst_length;
drivers/iio/imu/adis16550.c
908
static int adis16550_config_sync(struct adis16550 *st)
drivers/iio/imu/adis16550.c
910
struct device *dev = &st->adis.spi->dev;
drivers/iio/imu/adis16550.c
920
st->clk_freq_hz = st->info->int_clk * 1000;
drivers/iio/imu/adis16550.c
924
st->clk_freq_hz = clk_get_rate(clk);
drivers/iio/imu/adis16550.c
926
for (i = 0; i < st->info->num_sync; i++) {
drivers/iio/imu/adis16550.c
927
if (st->clk_freq_hz >= st->info->sync_mode[i].min_rate &&
drivers/iio/imu/adis16550.c
928
st->clk_freq_hz <= st->info->sync_mode[i].max_rate) {
drivers/iio/imu/adis16550.c
929
sync_mode_data = &st->info->sync_mode[i];
drivers/iio/imu/adis16550.c
934
if (i == st->info->num_sync)
drivers/iio/imu/adis16550.c
936
st->clk_freq_hz);
drivers/iio/imu/adis16550.c
945
sync_scale = DIV_ROUND_CLOSEST(st->info->int_clk, st->clk_freq_hz);
drivers/iio/imu/adis16550.c
952
ret = adis_write_reg_16(&st->adis, ADIS16550_REG_SYNC_SCALE,
drivers/iio/imu/adis16550.c
957
st->clk_freq_hz = st->info->int_clk;
drivers/iio/imu/adis16550.c
960
st->clk_freq_hz *= 1000;
drivers/iio/imu/adis16550.c
965
return __adis_update_bits(&st->adis, ADIS16550_REG_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600.h
455
int inv_icm42600_set_accel_conf(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600.h
459
int inv_icm42600_set_gyro_conf(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600.h
463
int inv_icm42600_set_temp_conf(struct inv_icm42600_state *st, bool enable,
drivers/iio/imu/inv_icm42600/inv_icm42600.h
466
int inv_icm42600_enable_wom(struct inv_icm42600_state *st);
drivers/iio/imu/inv_icm42600/inv_icm42600.h
467
int inv_icm42600_disable_wom(struct inv_icm42600_state *st);
drivers/iio/imu/inv_icm42600/inv_icm42600.h
475
struct iio_dev *inv_icm42600_gyro_init(struct inv_icm42600_state *st);
drivers/iio/imu/inv_icm42600/inv_icm42600.h
479
struct iio_dev *inv_icm42600_accel_init(struct inv_icm42600_state *st);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1000
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1006
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1008
ret = inv_icm42600_buffer_hwfifo_flush(st, count);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
101
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1012
return st->fifo.nb.accel;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1020
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1026
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1028
return st->apex.wom.enable ? 1 : 0;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1037
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
104
if (st->conf.accel.mode != INV_ICM42600_SENSOR_MODE_OFF)
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1043
scoped_guard(mutex, &st->lock) {
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1044
if (st->apex.wom.enable == state)
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1061
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1068
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1071
*val = div_u64_rem(st->apex.wom.value, MICRO, &rem);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1076
static int _inv_icm42600_accel_wom_value(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1083
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1085
ret = inv_icm42600_accel_read_odr(st, &accel_hz, &accel_uhz);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1091
return inv_icm42600_accel_set_wom_threshold(st, value,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
110
if (st->conf.accel.odr >= INV_ICM42600_ODR_6_25HZ_LP &&
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1102
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1103
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
111
st->conf.accel.odr <= INV_ICM42600_ODR_1_5625HZ_LP)
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1117
ret = _inv_icm42600_accel_wom_value(st, val, val2);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1140
struct iio_dev *inv_icm42600_accel_init(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1142
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1149
name = devm_kasprintf(dev, GFP_KERNEL, "%s-accel", st->name);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1158
switch (st->chip) {
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
116
if (st->conf.accel.odr <= INV_ICM42600_ODR_1KHZ_LN)
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1178
ts_chip.init_period = inv_icm42600_odr_to_period(st->conf.accel.odr);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1181
iio_device_set_drvdata(indio_dev, st);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1208
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1221
for (i = 0, no = 0; i < st->fifo.count; i += size, ++no) {
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1222
size = inv_icm42600_fifo_decode_packet(&st->fifo.data[i],
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1234
inv_sensors_timestamp_apply_odr(ts, st->fifo.period,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
1235
st->fifo.nb.total, no);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
130
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
138
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
141
switch (st->conf.accel.mode) {
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
144
power_mode = st->conf.accel.mode;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
227
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
236
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
240
ret = inv_icm42600_set_temp_conf(st, true, &sleep_temp);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
250
ret = inv_icm42600_set_accel_conf(st, &conf, &sleep_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
257
ret = inv_icm42600_buffer_set_fifo_en(st, fifo_en | st->fifo.en);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
260
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
272
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
274
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
298
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
303
ret = inv_icm42600_set_accel_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
308
data = (__be16 *)&st->buffer[0];
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
309
ret = regmap_bulk_read(st->map, reg, data, sizeof(*data));
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
317
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
356
static int inv_icm42600_accel_set_wom_threshold(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
367
dev_dbg(regmap_get_device(st->map), "wom_threshold: 0x%x\n", threshold);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
370
st->buffer[0] = threshold;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
371
st->buffer[1] = threshold;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
372
st->buffer[2] = threshold;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
373
ret = regmap_bulk_write(st->map, INV_ICM42600_REG_ACCEL_WOM_X_THR, st->buffer, 3);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
377
st->apex.wom.value = value;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
384
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
390
scoped_guard(mutex, &st->lock) {
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
394
ret = inv_icm42600_set_accel_conf(st, &conf, &sleep_ms);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
402
scoped_guard(mutex, &st->lock) {
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
403
ret = inv_icm42600_enable_wom(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
406
st->apex.on++;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
407
st->apex.wom.enable = true;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
415
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
416
struct device *pdev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
435
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
440
scoped_guard(mutex, &st->lock) {
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
447
st->apex.wom.enable = false;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
448
st->apex.on--;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
449
ret = inv_icm42600_disable_wom(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
453
if (!st->apex.on && !iio_buffer_enabled(indio_dev)) {
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
455
ret = inv_icm42600_set_accel_conf(st, &conf, &sleep_ms);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
469
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
470
struct device *pdev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
485
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
489
if (st->apex.wom.enable && (status2 & INV_ICM42600_INT_STATUS2_WOM_INT)) {
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
532
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
536
idx = st->conf.accel.fs;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
546
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
548
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
565
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
566
ret = inv_icm42600_set_accel_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
613
static int inv_icm42600_accel_read_odr(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
619
odr = st->conf.accel.odr;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
637
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
640
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
654
if (conf.odr == st->conf.accel.odr)
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
658
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
665
ret = inv_icm42600_set_accel_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
669
ret = inv_icm42600_accel_set_wom_threshold(st, st->apex.wom.value, val, val2);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
672
inv_icm42600_buffer_update_fifo_period(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
673
inv_icm42600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
676
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
692
static int inv_icm42600_accel_read_offset(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
696
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
722
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
724
ret = regmap_bulk_read(st->map, reg, st->buffer, sizeof(data));
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
725
memcpy(data, st->buffer, sizeof(data));
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
727
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
767
static int inv_icm42600_accel_write_offset(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
771
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
826
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
831
ret = regmap_read(st->map, INV_ICM42600_REG_OFFSET_USER4,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
835
st->buffer[0] = ((offset & 0xF00) >> 4) | (regval & 0x0F);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
836
st->buffer[1] = offset & 0xFF;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
840
ret = regmap_read(st->map, INV_ICM42600_REG_OFFSET_USER7,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
844
st->buffer[0] = offset & 0xFF;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
845
st->buffer[1] = ((offset & 0xF00) >> 8) | (regval & 0xF0);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
849
ret = regmap_read(st->map, INV_ICM42600_REG_OFFSET_USER7,
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
853
st->buffer[0] = ((offset & 0xF00) >> 4) | (regval & 0x0F);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
854
st->buffer[1] = offset & 0xFF;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
861
ret = regmap_bulk_write(st->map, reg, st->buffer, 2);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
864
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
873
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
88
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
899
return inv_icm42600_accel_read_odr(st, val, val2);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
901
return inv_icm42600_accel_read_offset(st, chan, val, val2);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
941
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
959
ret = inv_icm42600_accel_write_offset(st, chan, val, val2);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
989
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
991
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
993
st->fifo.watermark.accel = val;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
994
return inv_icm42600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
102
void inv_icm42600_buffer_update_fifo_period(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
106
if (st->fifo.en & INV_ICM42600_SENSOR_GYRO)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
107
period_gyro = inv_icm42600_odr_to_period(st->conf.gyro.odr);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
111
if (st->fifo.en & INV_ICM42600_SENSOR_ACCEL)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
112
period_accel = inv_icm42600_odr_to_period(st->conf.accel.odr);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
116
st->fifo.period = min(period_gyro, period_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
119
int inv_icm42600_buffer_set_fifo_en(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
139
ret = regmap_update_bits(st->map, INV_ICM42600_REG_FIFO_CONFIG1, mask, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
143
st->fifo.en = fifo_en;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
144
inv_icm42600_buffer_update_fifo_period(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
199
int inv_icm42600_buffer_update_watermark(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
209
packet_size = inv_icm42600_get_packet_size(st->fifo.en);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
212
wm_gyro = inv_icm42600_wm_truncate(st->fifo.watermark.gyro, packet_size);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
213
wm_accel = inv_icm42600_wm_truncate(st->fifo.watermark.accel, packet_size);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
215
period_gyro = inv_icm42600_odr_to_period(st->conf.gyro.odr) / 1000UL;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
216
period_accel = inv_icm42600_odr_to_period(st->conf.accel.odr) / 1000UL;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
226
st->fifo.watermark.eff_accel = wm_accel;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
229
st->fifo.watermark.eff_gyro = wm_gyro;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
241
st->fifo.watermark.eff_gyro = latency / period_gyro;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
242
if (st->fifo.watermark.eff_gyro < 1)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
243
st->fifo.watermark.eff_gyro = 1;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
244
st->fifo.watermark.eff_accel = latency / period_accel;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
245
if (st->fifo.watermark.eff_accel < 1)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
246
st->fifo.watermark.eff_accel = 1;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
251
st->fifo.watermark.value = watermark;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
254
ret = regmap_update_bits_check(st->map, INV_ICM42600_REG_INT_SOURCE0,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
261
memcpy(st->buffer, &raw_wm, sizeof(raw_wm));
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
262
ret = regmap_bulk_write(st->map, INV_ICM42600_REG_FIFO_WATERMARK,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
263
st->buffer, sizeof(raw_wm));
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
269
ret = regmap_set_bits(st->map, INV_ICM42600_REG_INT_SOURCE0,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
280
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
281
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
287
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
299
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
302
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
304
if (st->fifo.on) {
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
305
st->fifo.on++;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
310
ret = regmap_set_bits(st->map, INV_ICM42600_REG_INT_SOURCE0,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
316
ret = regmap_write(st->map, INV_ICM42600_REG_SIGNAL_PATH_RESET,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
322
ret = regmap_write(st->map, INV_ICM42600_REG_FIFO_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
328
ret = regmap_bulk_read(st->map, INV_ICM42600_REG_FIFO_COUNT, st->buffer, 2);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
332
st->fifo.on++;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
339
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
342
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
344
if (st->fifo.on > 1) {
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
345
st->fifo.on--;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
350
ret = regmap_write(st->map, INV_ICM42600_REG_FIFO_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
356
ret = regmap_write(st->map, INV_ICM42600_REG_SIGNAL_PATH_RESET,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
362
ret = regmap_clear_bits(st->map, INV_ICM42600_REG_INT_SOURCE0,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
367
st->fifo.on--;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
374
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
377
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
386
if (indio_dev == st->indio_gyro) {
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
388
watermark = &st->fifo.watermark.gyro;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
389
} else if (indio_dev == st->indio_accel) {
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
391
watermark = &st->fifo.watermark.accel;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
396
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
400
ret = inv_icm42600_buffer_set_fifo_en(st, st->fifo.en & ~sensor);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
405
ret = inv_icm42600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
411
ret = inv_icm42600_set_gyro_conf(st, &conf, &sleep_sensor);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
412
else if (!st->apex.on)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
413
ret = inv_icm42600_set_accel_conf(st, &conf, &sleep_sensor);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
418
if (!st->fifo.on)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
419
ret = inv_icm42600_set_temp_conf(st, false, &sleep_temp);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
422
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
441
int inv_icm42600_buffer_fifo_read(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
453
st->fifo.count = 0;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
454
st->fifo.nb.gyro = 0;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
455
st->fifo.nb.accel = 0;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
456
st->fifo.nb.total = 0;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
460
max = st->fifo.watermark.value;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
461
max_count = max * inv_icm42600_get_packet_size(st->fifo.en);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
464
raw_fifo_count = (__be16 *)st->buffer;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
465
ret = regmap_bulk_read(st->map, INV_ICM42600_REG_FIFO_COUNT,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
469
st->fifo.count = be16_to_cpup(raw_fifo_count);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
472
if (st->fifo.count == 0)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
474
if (st->fifo.count > max_count)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
475
st->fifo.count = max_count;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
478
ret = regmap_noinc_read(st->map, INV_ICM42600_REG_FIFO_DATA,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
479
st->fifo.data, st->fifo.count);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
484
for (i = 0; i < st->fifo.count; i += size) {
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
485
size = inv_icm42600_fifo_decode_packet(&st->fifo.data[i],
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
490
st->fifo.nb.gyro++;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
492
st->fifo.nb.accel++;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
493
st->fifo.nb.total++;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
499
int inv_icm42600_buffer_fifo_parse(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
501
struct inv_icm42600_sensor_state *gyro_st = iio_priv(st->indio_gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
502
struct inv_icm42600_sensor_state *accel_st = iio_priv(st->indio_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
506
if (st->fifo.nb.total == 0)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
510
if (st->fifo.nb.gyro > 0) {
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
512
inv_sensors_timestamp_interrupt(ts, st->fifo.watermark.eff_gyro,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
513
st->timestamp.gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
514
ret = inv_icm42600_gyro_parse_fifo(st->indio_gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
520
if (st->fifo.nb.accel > 0) {
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
522
inv_sensors_timestamp_interrupt(ts, st->fifo.watermark.eff_accel,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
523
st->timestamp.accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
524
ret = inv_icm42600_accel_parse_fifo(st->indio_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
532
int inv_icm42600_buffer_hwfifo_flush(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
535
struct inv_icm42600_sensor_state *gyro_st = iio_priv(st->indio_gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
536
struct inv_icm42600_sensor_state *accel_st = iio_priv(st->indio_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
541
gyro_ts = iio_get_time_ns(st->indio_gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
542
accel_ts = iio_get_time_ns(st->indio_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
544
ret = inv_icm42600_buffer_fifo_read(st, count);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
548
if (st->fifo.nb.total == 0)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
551
if (st->fifo.nb.gyro > 0) {
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
553
inv_sensors_timestamp_interrupt(ts, st->fifo.nb.gyro, gyro_ts);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
554
ret = inv_icm42600_gyro_parse_fifo(st->indio_gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
559
if (st->fifo.nb.accel > 0) {
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
561
inv_sensors_timestamp_interrupt(ts, st->fifo.nb.accel, accel_ts);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
562
ret = inv_icm42600_accel_parse_fifo(st->indio_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
570
int inv_icm42600_buffer_init(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
575
st->fifo.watermark.eff_gyro = 1;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
576
st->fifo.watermark.eff_accel = 1;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
577
st->fifo.watermark.value = 1;
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
586
ret = regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG0,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
597
return regmap_update_bits(st->map, INV_ICM42600_REG_FIFO_CONFIG1,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h
84
int inv_icm42600_buffer_init(struct inv_icm42600_state *st);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h
86
void inv_icm42600_buffer_update_fifo_period(struct inv_icm42600_state *st);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h
88
int inv_icm42600_buffer_set_fifo_en(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h
91
int inv_icm42600_buffer_update_watermark(struct inv_icm42600_state *st);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h
93
int inv_icm42600_buffer_fifo_read(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h
96
int inv_icm42600_buffer_fifo_parse(struct inv_icm42600_state *st);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h
98
int inv_icm42600_buffer_hwfifo_flush(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
186
const struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
188
return &st->orientation;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
227
static int inv_icm42600_set_pwr_mgmt0(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
232
enum inv_icm42600_sensor_mode oldgyro = st->conf.gyro.mode;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
233
enum inv_icm42600_sensor_mode oldaccel = st->conf.accel.mode;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
234
bool oldtemp = st->conf.temp_en;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
247
ret = regmap_write(st->map, INV_ICM42600_REG_PWR_MGMT0, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
251
st->conf.gyro.mode = gyro;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
252
st->conf.accel.mode = accel;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
253
st->conf.temp_en = temp;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
292
int inv_icm42600_set_accel_conf(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
296
struct inv_icm42600_sensor_conf *oldconf = &st->conf.accel;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
331
ret = regmap_write(st->map, INV_ICM42600_REG_ACCEL_CONFIG0, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
341
INV_ICM42600_GYRO_ACCEL_CONFIG0_GYRO_FILT(st->conf.gyro.filter);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
342
ret = regmap_write(st->map, INV_ICM42600_REG_GYRO_ACCEL_CONFIG0, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
349
return inv_icm42600_set_pwr_mgmt0(st, st->conf.gyro.mode, conf->mode,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
350
st->conf.temp_en, sleep_ms);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
353
int inv_icm42600_set_gyro_conf(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
357
struct inv_icm42600_sensor_conf *oldconf = &st->conf.gyro;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
375
ret = regmap_write(st->map, INV_ICM42600_REG_GYRO_CONFIG0, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
384
val = INV_ICM42600_GYRO_ACCEL_CONFIG0_ACCEL_FILT(st->conf.accel.filter) |
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
386
ret = regmap_write(st->map, INV_ICM42600_REG_GYRO_ACCEL_CONFIG0, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
393
return inv_icm42600_set_pwr_mgmt0(st, conf->mode, st->conf.accel.mode,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
394
st->conf.temp_en, sleep_ms);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
399
int inv_icm42600_set_temp_conf(struct inv_icm42600_state *st, bool enable,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
402
return inv_icm42600_set_pwr_mgmt0(st, st->conf.gyro.mode,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
403
st->conf.accel.mode, enable,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
407
int inv_icm42600_enable_wom(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
412
ret = regmap_write(st->map, INV_ICM42600_REG_SMD_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
419
return regmap_set_bits(st->map, INV_ICM42600_REG_INT_SOURCE1,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
423
int inv_icm42600_disable_wom(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
428
ret = regmap_clear_bits(st->map, INV_ICM42600_REG_INT_SOURCE1,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
434
return regmap_write(st->map, INV_ICM42600_REG_SMD_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
441
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
443
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
446
return regmap_read(st->map, reg, readval);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
448
return regmap_write(st->map, reg, writeval);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
451
static int inv_icm42600_set_conf(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
462
ret = regmap_write(st->map, INV_ICM42600_REG_PWR_MGMT0, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
469
ret = regmap_write(st->map, INV_ICM42600_REG_GYRO_CONFIG0, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
476
ret = regmap_write(st->map, INV_ICM42600_REG_ACCEL_CONFIG0, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
483
ret = regmap_write(st->map, INV_ICM42600_REG_GYRO_ACCEL_CONFIG0, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
488
st->conf = *conf;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
500
static int inv_icm42600_setup(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
503
const struct inv_icm42600_hw *hw = &inv_icm42600_hw[st->chip];
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
504
const struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
509
ret = regmap_read(st->map, INV_ICM42600_REG_WHOAMI, &val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
517
st->name = hw->name;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
520
ret = regmap_write(st->map, INV_ICM42600_REG_DEVICE_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
526
ret = regmap_read(st->map, INV_ICM42600_REG_INT_STATUS, &val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
535
ret = bus_setup(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
540
ret = regmap_set_bits(st->map, INV_ICM42600_REG_INTF_CONFIG0,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
549
ret = regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG1,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
555
return inv_icm42600_set_conf(st, hw->conf);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
560
struct inv_icm42600_state *st = _data;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
562
st->timestamp.gyro = iio_get_time_ns(st->indio_gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
563
st->timestamp.accel = iio_get_time_ns(st->indio_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
570
struct inv_icm42600_state *st = _data;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
571
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
575
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
577
if (st->apex.on) {
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
581
ret = regmap_bulk_read(st->map, INV_ICM42600_REG_INT_STATUS2, st->buffer, 2);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
584
status2 = st->buffer[0];
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
585
status3 = st->buffer[1];
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
586
inv_icm42600_accel_handle_events(st->indio_accel, status2, status3,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
587
st->timestamp.accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
590
ret = regmap_read(st->map, INV_ICM42600_REG_INT_STATUS, &status);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
600
ret = inv_icm42600_buffer_fifo_read(st, 0);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
605
ret = inv_icm42600_buffer_fifo_parse(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
611
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
624
static int inv_icm42600_irq_init(struct inv_icm42600_state *st, int irq,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
627
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
654
ret = regmap_write(st->map, INV_ICM42600_REG_INT_CONFIG, val);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
659
ret = regmap_clear_bits(st->map, INV_ICM42600_REG_INT_CONFIG1,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
667
"inv_icm42600", st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
670
static int inv_icm42600_timestamp_setup(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
677
return regmap_update_bits(st->map, INV_ICM42600_REG_TMST_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
681
static int inv_icm42600_enable_regulator_vddio(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
685
ret = regulator_enable(st->vddio_supply);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
697
struct inv_icm42600_state *st = _data;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
698
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
703
regulator_disable(st->vddio_supply);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
711
struct inv_icm42600_state *st;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
736
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
737
if (!st)
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
740
dev_set_drvdata(dev, st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
741
mutex_init(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
742
st->chip = chip;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
743
st->map = regmap;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
744
st->irq = irq;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
746
ret = iio_read_mount_matrix(dev, &st->orientation);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
759
st->vddio_supply = devm_regulator_get(dev, "vddio");
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
760
if (IS_ERR(st->vddio_supply))
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
761
return PTR_ERR(st->vddio_supply);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
763
ret = inv_icm42600_enable_regulator_vddio(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
767
ret = devm_add_action_or_reset(dev, inv_icm42600_disable_vddio_reg, st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
772
ret = inv_icm42600_setup(st, bus_setup);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
776
ret = inv_icm42600_timestamp_setup(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
780
ret = inv_icm42600_buffer_init(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
784
st->indio_gyro = inv_icm42600_gyro_init(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
785
if (IS_ERR(st->indio_gyro))
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
786
return PTR_ERR(st->indio_gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
788
st->indio_accel = inv_icm42600_accel_init(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
789
if (IS_ERR(st->indio_accel))
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
790
return PTR_ERR(st->indio_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
792
ret = inv_icm42600_irq_init(st, irq, irq_type, open_drain);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
814
struct inv_icm42600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
820
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
822
st->suspended.gyro = st->conf.gyro.mode;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
823
st->suspended.accel = st->conf.accel.mode;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
824
st->suspended.temp = st->conf.temp_en;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
829
if (st->fifo.on) {
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
830
ret = regmap_write(st->map, INV_ICM42600_REG_FIFO_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
837
accel_dev = &st->indio_accel->dev;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
838
wakeup = st->apex.on && device_may_wakeup(accel_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
841
accel_conf = st->conf.accel.mode;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
842
enable_irq_wake(st->irq);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
843
disable_irq(st->irq);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
846
if (st->apex.wom.enable) {
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
847
ret = inv_icm42600_disable_wom(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
854
ret = inv_icm42600_set_pwr_mgmt0(st, INV_ICM42600_SENSOR_MODE_OFF,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
861
regulator_disable(st->vddio_supply);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
872
struct inv_icm42600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
873
struct inv_icm42600_sensor_state *gyro_st = iio_priv(st->indio_gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
874
struct inv_icm42600_sensor_state *accel_st = iio_priv(st->indio_accel);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
879
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
885
accel_dev = &st->indio_accel->dev;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
886
wakeup = st->apex.on && device_may_wakeup(accel_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
889
enable_irq(st->irq);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
890
disable_irq_wake(st->irq);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
892
ret = inv_icm42600_enable_regulator_vddio(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
898
ret = inv_icm42600_set_pwr_mgmt0(st, st->suspended.gyro,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
899
st->suspended.accel,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
900
st->suspended.temp, NULL);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
905
if (!wakeup && st->apex.wom.enable) {
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
906
ret = inv_icm42600_enable_wom(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
912
if (st->fifo.on) {
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
915
ret = regmap_write(st->map, INV_ICM42600_REG_FIFO_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
925
struct inv_icm42600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
928
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
931
ret = inv_icm42600_set_pwr_mgmt0(st, INV_ICM42600_SENSOR_MODE_OFF,
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
937
regulator_disable(st->vddio_supply);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
945
struct inv_icm42600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
947
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
949
return inv_icm42600_enable_regulator_vddio(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
101
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
109
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
113
ret = inv_icm42600_set_temp_conf(st, true, &sleep_temp);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
122
ret = inv_icm42600_set_gyro_conf(st, &conf, &sleep_gyro);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
129
ret = inv_icm42600_buffer_set_fifo_en(st, fifo_en | st->fifo.en);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
132
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
140
static int inv_icm42600_gyro_read_sensor(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
144
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
168
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
172
ret = inv_icm42600_set_gyro_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
177
data = (__be16 *)&st->buffer[0];
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
178
ret = regmap_bulk_read(st->map, reg, data, sizeof(*data));
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
186
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
248
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
252
idx = st->conf.gyro.fs;
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
262
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
264
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
281
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
282
ret = inv_icm42600_set_gyro_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
320
static int inv_icm42600_gyro_read_odr(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
326
odr = st->conf.gyro.odr;
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
344
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
347
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
361
if (conf.odr == st->conf.gyro.odr)
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
365
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
372
ret = inv_icm42600_set_gyro_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
375
inv_icm42600_buffer_update_fifo_period(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
376
inv_icm42600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
379
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
395
static int inv_icm42600_gyro_read_offset(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
399
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
425
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
427
ret = regmap_bulk_read(st->map, reg, st->buffer, sizeof(data));
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
428
memcpy(data, st->buffer, sizeof(data));
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
430
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
470
static int inv_icm42600_gyro_write_offset(struct inv_icm42600_state *st,
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
474
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
528
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
533
ret = regmap_read(st->map, INV_ICM42600_REG_OFFSET_USER1,
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
537
st->buffer[0] = offset & 0xFF;
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
538
st->buffer[1] = (regval & 0xF0) | ((offset & 0xF00) >> 8);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
542
ret = regmap_read(st->map, INV_ICM42600_REG_OFFSET_USER1,
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
546
st->buffer[0] = ((offset & 0xF00) >> 4) | (regval & 0x0F);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
547
st->buffer[1] = offset & 0xFF;
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
551
ret = regmap_read(st->map, INV_ICM42600_REG_OFFSET_USER4,
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
555
st->buffer[0] = offset & 0xFF;
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
556
st->buffer[1] = (regval & 0xF0) | ((offset & 0xF00) >> 8);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
563
ret = regmap_bulk_write(st->map, reg, st->buffer, 2);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
566
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
575
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
592
ret = inv_icm42600_gyro_read_sensor(st, chan, &data);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
601
return inv_icm42600_gyro_read_odr(st, val, val2);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
603
return inv_icm42600_gyro_read_offset(st, chan, val, val2);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
643
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
661
ret = inv_icm42600_gyro_write_offset(st, chan, val, val2);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
691
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
693
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
695
st->fifo.watermark.gyro = val;
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
696
return inv_icm42600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
702
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
708
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
710
ret = inv_icm42600_buffer_hwfifo_flush(st, count);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
714
return st->fifo.nb.gyro;
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
728
struct iio_dev *inv_icm42600_gyro_init(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
730
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
737
name = devm_kasprintf(dev, GFP_KERNEL, "%s-gyro", st->name);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
746
switch (st->chip) {
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
763
ts_chip.init_period = inv_icm42600_odr_to_period(st->conf.accel.odr);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
766
iio_device_set_drvdata(indio_dev, st);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
789
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
802
for (i = 0, no = 0; i < st->fifo.count; i += size, ++no) {
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
803
size = inv_icm42600_fifo_decode_packet(&st->fifo.data[i],
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
815
inv_sensors_timestamp_apply_odr(ts, st->fifo.period,
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
816
st->fifo.nb.total, no);
drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c
15
static int inv_icm42600_i2c_bus_setup(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c
26
regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG6,
drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c
30
ret = regmap_clear_bits(st->map, INV_ICM42600_REG_INTF_CONFIG4,
drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c
40
ret = regmap_update_bits(st->map, INV_ICM42600_REG_DRIVE_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c
46
return regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG0,
drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c
15
static int inv_icm42600_spi_bus_setup(struct inv_icm42600_state *st)
drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c
24
ret = regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG6,
drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c
29
ret = regmap_clear_bits(st->map, INV_ICM42600_REG_INTF_CONFIG4,
drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c
39
ret = regmap_update_bits(st->map, INV_ICM42600_REG_DRIVE_CONFIG,
drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c
45
return regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG0,
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
16
static int inv_icm42600_temp_read(struct inv_icm42600_state *st, s16 *temp)
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
18
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
23
mutex_lock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
25
ret = inv_icm42600_set_temp_conf(st, true, NULL);
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
29
raw = (__be16 *)&st->buffer[0];
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
30
ret = regmap_bulk_read(st->map, INV_ICM42600_REG_TEMP_DATA, raw, sizeof(*raw));
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
43
mutex_unlock(&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
53
struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c
62
ret = inv_icm42600_temp_read(st, &temp);
drivers/iio/imu/inv_icm45600/inv_icm45600.h
362
int inv_icm45600_set_accel_conf(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600.h
366
int inv_icm45600_set_gyro_conf(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600.h
377
struct iio_dev *inv_icm45600_gyro_init(struct inv_icm45600_state *st);
drivers/iio/imu/inv_icm45600/inv_icm45600.h
381
struct iio_dev *inv_icm45600_accel_init(struct inv_icm45600_state *st);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
104
scoped_guard(mutex, &st->lock) {
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
113
ret = inv_icm45600_set_accel_conf(st, &conf, &sleep);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
120
ret = inv_icm45600_buffer_set_fifo_en(st, fifo_en | st->fifo.en);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
130
static int _inv_icm45600_accel_read_sensor(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
139
ret = inv_icm45600_set_accel_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
144
ret = regmap_bulk_read(st->map, reg, &st->buffer.u16, sizeof(st->buffer.u16));
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
148
*val = sign_extend32(le16_to_cpup(&st->buffer.u16), 15);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
159
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
161
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
186
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
187
ret = _inv_icm45600_accel_read_sensor(st, accel_st, reg, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
222
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
226
idx = st->conf.accel.fs;
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
240
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
242
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
265
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
266
ret = inv_icm45600_set_accel_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
306
static int inv_icm45600_accel_read_odr(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
312
odr = st->conf.accel.odr;
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
329
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
341
if (st->conf.accel.mode != INV_ICM45600_SENSOR_MODE_OFF)
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
344
ret = inv_icm45600_set_accel_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
348
inv_icm45600_buffer_update_fifo_period(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
349
inv_icm45600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
357
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
358
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
377
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
395
static int inv_icm45600_accel_read_offset(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
399
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
427
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
428
ret = regmap_bulk_read(st->map, reg, &st->buffer.u16, sizeof(st->buffer.u16));
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
434
offset = le16_to_cpup(&st->buffer.u16) & INV_ICM45600_ACCEL_OFFUSER_MASK;
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
458
static int inv_icm45600_accel_write_offset(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
462
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
517
st->buffer.u16 = cpu_to_le16(offset & INV_ICM45600_ACCEL_OFFUSER_MASK);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
523
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
524
ret = regmap_bulk_write(st->map, reg, &st->buffer.u16, sizeof(st->buffer.u16));
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
534
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
558
return inv_icm45600_accel_read_odr(st, val, val2);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
560
return inv_icm45600_accel_read_offset(st, chan, val, val2);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
600
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
618
ret = inv_icm45600_accel_write_offset(st, chan, val, val2);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
648
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
650
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
652
st->fifo.watermark.accel = val;
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
653
return inv_icm45600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
659
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
665
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
667
ret = inv_icm45600_buffer_hwfifo_flush(st, count);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
671
return st->fifo.nb.accel;
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
685
struct iio_dev *inv_icm45600_accel_init(struct inv_icm45600_state *st)
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
687
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
694
name = devm_kasprintf(dev, GFP_KERNEL, "%s-accel", st->chip_info->name);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
703
accel_st->scales = st->chip_info->accel_scales;
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
704
accel_st->scales_len = st->chip_info->accel_scales_len * 2;
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
708
ret = regmap_set_bits(st->map, INV_ICM45600_REG_SMC_CONTROL_0,
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
719
ts_chip.init_period = inv_icm45600_odr_to_period(st->conf.accel.odr);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
722
iio_device_set_drvdata(indio_dev, st);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
744
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
751
for (i = 0, no = 0; i < st->fifo.count; i += size, ++no) {
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
759
size = inv_icm45600_fifo_decode_packet(&st->fifo.data[i],
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
771
inv_sensors_timestamp_apply_odr(ts, st->fifo.period,
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
772
st->fifo.nb.total, no);
drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c
97
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
102
void inv_icm45600_buffer_update_fifo_period(struct inv_icm45600_state *st)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
106
if (st->fifo.en & INV_ICM45600_SENSOR_GYRO)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
107
period_gyro = inv_icm45600_odr_to_period(st->conf.gyro.odr);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
111
if (st->fifo.en & INV_ICM45600_SENSOR_ACCEL)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
112
period_accel = inv_icm45600_odr_to_period(st->conf.accel.odr);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
116
st->fifo.period = min(period_gyro, period_accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
119
int inv_icm45600_buffer_set_fifo_en(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
128
ret = regmap_assign_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG3, mask,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
134
st->fifo.en = fifo_en;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
135
inv_icm45600_buffer_update_fifo_period(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
177
int inv_icm45600_buffer_update_watermark(struct inv_icm45600_state *st)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
185
wm_gyro = inv_icm45600_wm_truncate(st->fifo.watermark.gyro, packet_size,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
186
st->fifo.period);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
187
wm_accel = inv_icm45600_wm_truncate(st->fifo.watermark.accel, packet_size,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
188
st->fifo.period);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
190
period_gyro = inv_icm45600_odr_to_period(st->conf.gyro.odr) / NSEC_PER_USEC;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
191
period_accel = inv_icm45600_odr_to_period(st->conf.accel.odr) / NSEC_PER_USEC;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
201
st->fifo.watermark.eff_accel = wm_accel;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
204
st->fifo.watermark.eff_gyro = wm_gyro;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
216
st->fifo.watermark.eff_gyro = max(latency / period_gyro, 1);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
217
st->fifo.watermark.eff_accel = max(latency / period_accel, 1);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
220
st->buffer.u16 = cpu_to_le16(watermark);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
221
return regmap_bulk_write(st->map, INV_ICM45600_REG_FIFO_WATERMARK,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
222
&st->buffer.u16, sizeof(st->buffer.u16));
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
227
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
228
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
237
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
249
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
253
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
256
if (st->fifo.on) {
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
257
st->fifo.on++;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
261
ret = regmap_set_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG2,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
266
ret = regmap_set_bits(st->map, INV_ICM45600_REG_INT1_CONFIG0,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
274
ret = regmap_update_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG0,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
280
ret = regmap_set_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG3,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
285
st->fifo.on++;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
291
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
295
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
298
if (st->fifo.on > 1) {
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
299
st->fifo.on--;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
304
ret = regmap_clear_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG3,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
311
ret = regmap_update_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG0,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
316
ret = regmap_clear_bits(st->map, INV_ICM45600_REG_INT1_CONFIG0,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
322
ret = regmap_set_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG2,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
327
st->fifo.on--;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
331
static int _inv_icm45600_buffer_postdisable(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
338
ret = inv_icm45600_buffer_set_fifo_en(st, st->fifo.en & ~sensor);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
343
ret = inv_icm45600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
349
return inv_icm45600_set_gyro_conf(st, &conf, sleep);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
351
return inv_icm45600_set_accel_conf(st, &conf, sleep);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
356
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
357
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
363
if (indio_dev == st->indio_gyro) {
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
365
watermark = &st->fifo.watermark.gyro;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
366
} else if (indio_dev == st->indio_accel) {
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
368
watermark = &st->fifo.watermark.accel;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
374
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
375
ret = _inv_icm45600_buffer_postdisable(st, sensor, watermark, &sleep);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
393
int inv_icm45600_buffer_fifo_read(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
407
st->fifo.count = 0;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
408
st->fifo.nb.gyro = 0;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
409
st->fifo.nb.accel = 0;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
410
st->fifo.nb.total = 0;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
412
raw_fifo_count = &st->buffer.u16;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
413
ret = regmap_bulk_read(st->map, INV_ICM45600_REG_FIFO_COUNT,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
426
st->fifo.count = fifo_nb * packet_size;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
427
ret = regmap_noinc_read(st->map, INV_ICM45600_REG_FIFO_DATA,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
428
st->fifo.data, st->fifo.count);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
432
for (i = 0; i < st->fifo.count && ret == 0; i += packet_size)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
433
ret = regmap_noinc_read(st->map, INV_ICM45600_REG_FIFO_DATA,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
434
&st->fifo.data[i], packet_size);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
439
for (i = 0; i < st->fifo.count; i += size) {
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
440
size = inv_icm45600_fifo_decode_packet(&st->fifo.data[i], &accel, &gyro,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
446
st->fifo.nb.gyro++;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
448
st->fifo.nb.accel++;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
449
st->fifo.nb.total++;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
455
int inv_icm45600_buffer_fifo_parse(struct inv_icm45600_state *st)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
457
struct inv_icm45600_sensor_state *gyro_st = iio_priv(st->indio_gyro);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
458
struct inv_icm45600_sensor_state *accel_st = iio_priv(st->indio_accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
462
if (st->fifo.nb.total == 0)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
466
if (st->fifo.nb.gyro > 0) {
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
468
inv_sensors_timestamp_interrupt(ts, st->fifo.watermark.eff_gyro,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
469
st->timestamp.gyro);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
470
ret = inv_icm45600_gyro_parse_fifo(st->indio_gyro);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
476
if (st->fifo.nb.accel > 0) {
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
478
inv_sensors_timestamp_interrupt(ts, st->fifo.watermark.eff_accel,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
479
st->timestamp.accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
480
ret = inv_icm45600_accel_parse_fifo(st->indio_accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
488
int inv_icm45600_buffer_hwfifo_flush(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
491
struct inv_icm45600_sensor_state *gyro_st = iio_priv(st->indio_gyro);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
492
struct inv_icm45600_sensor_state *accel_st = iio_priv(st->indio_accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
497
gyro_ts = iio_get_time_ns(st->indio_gyro);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
498
accel_ts = iio_get_time_ns(st->indio_accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
500
ret = inv_icm45600_buffer_fifo_read(st, count);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
504
if (st->fifo.nb.total == 0)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
507
if (st->fifo.nb.gyro > 0) {
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
509
inv_sensors_timestamp_interrupt(ts, st->fifo.nb.gyro, gyro_ts);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
510
ret = inv_icm45600_gyro_parse_fifo(st->indio_gyro);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
515
if (st->fifo.nb.accel > 0) {
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
517
inv_sensors_timestamp_interrupt(ts, st->fifo.nb.accel, accel_ts);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
518
ret = inv_icm45600_accel_parse_fifo(st->indio_accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
526
int inv_icm45600_buffer_init(struct inv_icm45600_state *st)
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
531
st->fifo.watermark.eff_gyro = 1;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
532
st->fifo.watermark.eff_accel = 1;
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
535
ret = regmap_write(st->map, INV_ICM45600_REG_FIFO_CONFIG3, 0);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
545
ret = regmap_write(st->map, INV_ICM45600_REG_FIFO_CONFIG0, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
550
ret = regmap_write(st->map, INV_ICM45600_REG_FIFO_CONFIG4,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c
556
return regmap_set_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG2,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.h
84
int inv_icm45600_buffer_init(struct inv_icm45600_state *st);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.h
86
void inv_icm45600_buffer_update_fifo_period(struct inv_icm45600_state *st);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.h
88
int inv_icm45600_buffer_set_fifo_en(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.h
91
int inv_icm45600_buffer_update_watermark(struct inv_icm45600_state *st);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.h
93
int inv_icm45600_buffer_fifo_read(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.h
96
int inv_icm45600_buffer_fifo_parse(struct inv_icm45600_state *st);
drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.h
98
int inv_icm45600_buffer_hwfifo_flush(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
262
const struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
264
return &st->orientation;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
289
static int inv_icm45600_set_pwr_mgmt0(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
294
enum inv_icm45600_sensor_mode oldgyro = st->conf.gyro.mode;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
295
enum inv_icm45600_sensor_mode oldaccel = st->conf.accel.mode;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
306
ret = regmap_write(st->map, INV_ICM45600_REG_PWR_MGMT0, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
310
st->conf.gyro.mode = gyro;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
311
st->conf.accel.mode = accel;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
32
struct inv_icm45600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
348
int inv_icm45600_set_accel_conf(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
352
struct inv_icm45600_sensor_conf *oldconf = &st->conf.accel;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
37
st->buffer.ireg[0] = FIELD_GET(INV_ICM45600_REG_BANK_MASK, reg);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
377
ret = regmap_write(st->map, INV_ICM45600_REG_ACCEL_CONFIG0, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
38
st->buffer.ireg[1] = FIELD_GET(INV_ICM45600_REG_ADDR_MASK, reg);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
386
ret = regmap_write(st->map, INV_ICM45600_IPREG_SYS2_REG_129,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
394
return inv_icm45600_set_pwr_mgmt0(st, st->conf.gyro.mode, conf->mode,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
398
int inv_icm45600_set_gyro_conf(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
402
struct inv_icm45600_sensor_conf *oldconf = &st->conf.gyro;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
41
ret = regmap_bulk_write(map, INV_ICM45600_REG_IREG_ADDR, st->buffer.ireg, 2);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
422
ret = regmap_write(st->map, INV_ICM45600_REG_GYRO_CONFIG0, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
432
ret = regmap_update_bits(st->map, INV_ICM45600_IPREG_SYS1_REG_170,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
440
return inv_icm45600_set_pwr_mgmt0(st, conf->mode, st->conf.accel.mode,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
447
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
449
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
452
return regmap_read(st->map, reg, readval);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
454
return regmap_write(st->map, reg, writeval);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
457
static int inv_icm45600_set_conf(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
465
ret = regmap_write(st->map, INV_ICM45600_REG_PWR_MGMT0, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
471
ret = regmap_write(st->map, INV_ICM45600_REG_GYRO_CONFIG0, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
477
ret = regmap_write(st->map, INV_ICM45600_REG_ACCEL_CONFIG0, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
482
st->conf = *conf;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
496
static int inv_icm45600_setup(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
500
const struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
506
ret = bus_setup(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
512
ret = regmap_read(st->map, INV_ICM45600_REG_WHOAMI, &val);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
529
st->chip_info = chip_info;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
533
ret = regmap_write(st->map, INV_ICM45600_REG_MISC2,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
544
ret = bus_setup(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
549
ret = regmap_read(st->map, INV_ICM45600_REG_INT_STATUS, &val);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
558
return inv_icm45600_set_conf(st, chip_info->conf);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
563
struct inv_icm45600_state *st = _data;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
565
st->timestamp.gyro = iio_get_time_ns(st->indio_gyro);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
566
st->timestamp.accel = iio_get_time_ns(st->indio_accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
573
struct inv_icm45600_state *st = _data;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
574
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
578
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
580
ret = regmap_read(st->map, INV_ICM45600_REG_INT_STATUS, &status);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
587
ret = inv_icm45600_buffer_fifo_read(st, 0);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
592
ret = inv_icm45600_buffer_fifo_parse(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
613
static int inv_icm45600_irq_init(struct inv_icm45600_state *st, int irq,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
616
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
643
ret = regmap_write(st->map, INV_ICM45600_REG_INT1_CONFIG2, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
649
"inv_icm45600", st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
652
static int inv_icm45600_timestamp_setup(struct inv_icm45600_state *st)
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
655
return regmap_set_bits(st->map, INV_ICM45600_REG_SMC_CONTROL_0,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
659
static int inv_icm45600_enable_regulator_vddio(struct inv_icm45600_state *st)
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
663
ret = regulator_enable(st->vddio_supply);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
678
struct inv_icm45600_state *st = _data;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
679
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
684
regulator_disable(st->vddio_supply);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
691
struct inv_icm45600_state *st;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
70
struct inv_icm45600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
713
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
714
if (!st)
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
717
dev_set_drvdata(dev, st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
719
st->fifo.data = devm_kzalloc(dev, 8192, GFP_KERNEL);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
720
if (!st->fifo.data)
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
723
ret = devm_mutex_init(dev, &st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
727
st->map = regmap_custom;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
729
ret = iio_read_mount_matrix(dev, &st->orientation);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
733
st->vddio_supply = devm_regulator_get(dev, "vddio");
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
734
if (IS_ERR(st->vddio_supply))
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
735
return PTR_ERR(st->vddio_supply);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
74
st->buffer.ireg[0] = FIELD_GET(INV_ICM45600_REG_BANK_MASK, reg);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
75
st->buffer.ireg[1] = FIELD_GET(INV_ICM45600_REG_ADDR_MASK, reg);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
752
ret = inv_icm45600_enable_regulator_vddio(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
756
ret = devm_add_action_or_reset(dev, inv_icm45600_disable_vddio_reg, st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
76
st->buffer.ireg[2] = data[0];
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
760
ret = inv_icm45600_setup(st, chip_info, reset, bus_setup);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
764
ret = inv_icm45600_timestamp_setup(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
768
ret = inv_icm45600_buffer_init(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
772
st->indio_gyro = inv_icm45600_gyro_init(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
773
if (IS_ERR(st->indio_gyro))
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
774
return PTR_ERR(st->indio_gyro);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
776
st->indio_accel = inv_icm45600_accel_init(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
777
if (IS_ERR(st->indio_accel))
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
778
return PTR_ERR(st->indio_accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
780
ret = inv_icm45600_irq_init(st, irq, irq_type, open_drain);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
79
ret = regmap_bulk_write(map, INV_ICM45600_REG_IREG_ADDR, st->buffer.ireg, 3);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
802
struct inv_icm45600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
805
scoped_guard(mutex, &st->lock) {
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
807
if (st->fifo.on) {
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
811
ret = regmap_clear_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG3,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
817
ret = regmap_update_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG0,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
824
st->suspended.gyro = st->conf.gyro.mode;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
825
st->suspended.accel = st->conf.accel.mode;
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
837
struct inv_icm45600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
844
scoped_guard(mutex, &st->lock) {
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
846
ret = inv_icm45600_set_pwr_mgmt0(st, st->suspended.gyro,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
847
st->suspended.accel, NULL);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
852
if (st->fifo.on) {
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
853
struct inv_icm45600_sensor_state *gyro_st = iio_priv(st->indio_gyro);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
854
struct inv_icm45600_sensor_state *accel_st = iio_priv(st->indio_accel);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
861
ret = regmap_update_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG0,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
866
ret = regmap_set_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG3,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
879
struct inv_icm45600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
882
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
885
ret = inv_icm45600_set_pwr_mgmt0(st, INV_ICM45600_SENSOR_MODE_OFF,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
890
regulator_disable(st->vddio_supply);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
898
struct inv_icm45600_state *st = dev_get_drvdata(dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
900
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
902
return inv_icm45600_enable_regulator_vddio(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
905
static int _inv_icm45600_temp_read(struct inv_icm45600_state *st, s16 *temp)
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
911
if (st->conf.gyro.mode == INV_ICM45600_SENSOR_MODE_OFF &&
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
912
st->conf.accel.mode == INV_ICM45600_SENSOR_MODE_OFF) {
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
914
ret = inv_icm45600_set_accel_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
919
ret = regmap_bulk_read(st->map, INV_ICM45600_REG_TEMP_DATA,
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
920
&st->buffer.u16, sizeof(st->buffer.u16));
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
924
*temp = (s16)le16_to_cpup(&st->buffer.u16);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
931
static int inv_icm45600_temp_read(struct inv_icm45600_state *st, s16 *temp)
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
933
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
940
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
941
ret = _inv_icm45600_temp_read(st, temp);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
952
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
961
ret = inv_icm45600_temp_read(st, &temp);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
104
scoped_guard(mutex, &st->lock) {
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
113
ret = inv_icm45600_set_gyro_conf(st, &conf, &sleep);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
118
ret = inv_icm45600_buffer_set_fifo_en(st, fifo_en | st->fifo.en);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
126
static int _inv_icm45600_gyro_read_sensor(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
135
ret = inv_icm45600_set_gyro_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
140
ret = regmap_bulk_read(st->map, reg, &st->buffer.u16, sizeof(st->buffer.u16));
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
144
*val = sign_extend32(le16_to_cpup(&st->buffer.u16), 15);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
155
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
157
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
182
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
183
ret = _inv_icm45600_gyro_read_sensor(st, gyro_st, reg, val);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
235
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
239
idx = st->conf.gyro.fs;
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
253
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
255
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
278
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
279
ret = inv_icm45600_set_gyro_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
319
static int inv_icm45600_gyro_read_odr(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
325
odr = st->conf.gyro.odr;
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
342
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
354
if (st->conf.gyro.mode != INV_ICM45600_SENSOR_MODE_OFF)
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
357
ret = inv_icm45600_set_gyro_conf(st, &conf, NULL);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
361
inv_icm45600_buffer_update_fifo_period(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
362
inv_icm45600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
370
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
371
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
390
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
408
static int inv_icm45600_gyro_read_offset(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
412
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
440
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
441
ret = regmap_bulk_read(st->map, reg, &st->buffer.u16, sizeof(st->buffer.u16));
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
447
offset = le16_to_cpup(&st->buffer.u16) & INV_ICM45600_GYRO_OFFUSER_MASK;
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
471
static int inv_icm45600_gyro_write_offset(struct inv_icm45600_state *st,
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
475
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
529
st->buffer.u16 = cpu_to_le16(offset & INV_ICM45600_GYRO_OFFUSER_MASK);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
535
scoped_guard(mutex, &st->lock)
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
536
ret = regmap_bulk_write(st->map, reg, &st->buffer.u16, sizeof(st->buffer.u16));
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
546
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
570
return inv_icm45600_gyro_read_odr(st, val, val2);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
572
return inv_icm45600_gyro_read_offset(st, chan, val, val2);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
612
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
630
ret = inv_icm45600_gyro_write_offset(st, chan, val, val2);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
660
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
662
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
664
st->fifo.watermark.gyro = val;
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
665
return inv_icm45600_buffer_update_watermark(st);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
671
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
677
guard(mutex)(&st->lock);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
679
ret = inv_icm45600_buffer_hwfifo_flush(st, count);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
683
return st->fifo.nb.gyro;
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
697
struct iio_dev *inv_icm45600_gyro_init(struct inv_icm45600_state *st)
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
699
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
706
name = devm_kasprintf(dev, GFP_KERNEL, "%s-gyro", st->chip_info->name);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
715
gyro_st->scales = st->chip_info->gyro_scales;
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
716
gyro_st->scales_len = st->chip_info->gyro_scales_len * 2;
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
727
ts_chip.init_period = inv_icm45600_odr_to_period(st->conf.gyro.odr);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
730
iio_device_set_drvdata(indio_dev, st);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
753
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
760
for (i = 0, no = 0; i < st->fifo.count; i += size, ++no) {
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
768
size = inv_icm45600_fifo_decode_packet(&st->fifo.data[i],
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
780
inv_sensors_timestamp_apply_odr(ts, st->fifo.period,
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
781
st->fifo.nb.total, no);
drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c
97
struct inv_icm45600_state *st = iio_device_get_drvdata(indio_dev);
drivers/iio/imu/inv_icm45600/inv_icm45600_spi.c
19
static int inv_icm45600_spi_bus_setup(struct inv_icm45600_state *st)
drivers/iio/imu/inv_icm45600/inv_icm45600_spi.c
22
return regmap_update_bits(st->map, INV_ICM45600_REG_DRIVE_CONFIG0,
drivers/iio/imu/inv_mpu6050/inv_mpu_acpi.c
128
struct inv_mpu6050_state *st = iio_priv(dev_get_drvdata(&client->dev));
drivers/iio/imu/inv_mpu6050/inv_mpu_acpi.c
131
st->mux_client = NULL;
drivers/iio/imu/inv_mpu6050/inv_mpu_acpi.c
168
mux_client = i2c_new_client_device(st->muxc->adapter[0], &info);
drivers/iio/imu/inv_mpu6050/inv_mpu_acpi.c
171
st->mux_client = mux_client;
drivers/iio/imu/inv_mpu6050/inv_mpu_acpi.c
179
struct inv_mpu6050_state *st = iio_priv(dev_get_drvdata(&client->dev));
drivers/iio/imu/inv_mpu6050/inv_mpu_acpi.c
181
i2c_unregister_device(st->mux_client);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
100
ret = regmap_update_bits(st->map, 0x1, mask, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
108
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_MST_CTRL, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
113
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV4_CTRL, 0);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
122
return regmap_write(st->map, INV_MPU6050_REG_I2C_MST_DELAY_CTRL, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
135
int inv_mpu_aux_read(const struct inv_mpu6050_state *st, uint8_t addr,
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
144
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_ADDR(0),
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
148
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_REG(0), reg);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
151
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_CTRL(0),
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
157
ret = inv_mpu_i2c_master_xfer(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
162
return regmap_bulk_read(st->map, INV_MPU6050_REG_EXT_SENS_DATA,
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
175
int inv_mpu_aux_write(const struct inv_mpu6050_state *st, uint8_t addr,
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
181
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_ADDR(0), addr);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
184
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_REG(0), reg);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
187
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_DO(0), val);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
190
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_CTRL(0),
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
196
ret = inv_mpu_i2c_master_xfer(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
20
static int inv_mpu_i2c_master_xfer(const struct inv_mpu6050_state *st)
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
32
ret = regmap_write(st->map, st->reg->sample_rate_div, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
37
user_ctrl = st->chip_config.user_ctrl | INV_MPU6050_BIT_I2C_MST_EN;
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
38
ret = regmap_write(st->map, st->reg->user_ctrl, user_ctrl);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
46
user_ctrl = st->chip_config.user_ctrl;
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
47
ret = regmap_write(st->map, st->reg->user_ctrl, user_ctrl);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
52
d = st->chip_config.divider;
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
53
ret = regmap_write(st->map, st->reg->sample_rate_div, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
58
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_CTRL(0), 0);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
63
ret = regmap_read(st->map, INV_MPU6050_REG_I2C_MST_STATUS, &status);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
73
regmap_write(st->map, st->reg->user_ctrl, st->chip_config.user_ctrl);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
75
regmap_write(st->map, st->reg->sample_rate_div, st->chip_config.divider);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
77
regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_CTRL(0), 0);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
87
int inv_mpu_aux_init(const struct inv_mpu6050_state *st)
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
96
if (st->chip_type == INV_MPU9150) {
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.c
99
val = st->level_shifter ? mask : 0;
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.h
11
int inv_mpu_aux_init(const struct inv_mpu6050_state *st);
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.h
13
int inv_mpu_aux_read(const struct inv_mpu6050_state *st, uint8_t addr,
drivers/iio/imu/inv_mpu6050/inv_mpu_aux.h
16
int inv_mpu_aux_write(const struct inv_mpu6050_state *st, uint8_t addr,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1001
static int inv_mpu6050_set_wom_threshold(struct inv_mpu6050_state *st, u64 value,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1011
dev_dbg(regmap_get_device(st->map), "wom_threshold: 0x%x\n", threshold);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1013
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1019
st->data[0] = threshold;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1020
st->data[1] = threshold;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1021
st->data[2] = threshold;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1022
result = regmap_bulk_write(st->map, INV_ICM20609_REG_ACCEL_WOM_X_THR,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1023
st->data, 3);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1026
result = regmap_write(st->map, INV_MPU6500_REG_WOM_THRESHOLD, threshold);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1032
st->chip_config.roc_threshold = value;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1037
static int inv_mpu6050_set_lp_odr(struct inv_mpu6050_state *st, unsigned int freq_div,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1049
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1056
*lp_div = INV_MPU6050_FREQ_DIVIDER(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1074
dev_dbg(regmap_get_device(st->map), "lp_odr: 0x%x\n", val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1075
return regmap_write(st->map, INV_MPU6500_REG_LP_ODR, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1078
static int inv_mpu6050_set_wom_lp(struct inv_mpu6050_state *st, bool on)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1085
result = inv_mpu6050_set_lp_odr(st, INV_MPU6050_FREQ_DIVIDER(st), &lp_div);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1089
result = inv_mpu6050_set_accel_lpf_regs(st, INV_MPU6050_FILTER_NOLPF);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1093
result = inv_mpu6050_set_wom_threshold(st, st->chip_config.roc_threshold, lp_div);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1097
result = inv_mpu6050_pwr_mgmt_1_write(st, false, true, -1, -1);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1100
result = inv_mpu6050_pwr_mgmt_1_write(st, false, false, -1, -1);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1104
result = inv_mpu6050_set_wom_threshold(st, st->chip_config.roc_threshold,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1105
INV_MPU6050_FREQ_DIVIDER(st));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1109
result = inv_mpu6050_set_accel_lpf_regs(st, st->chip_config.lpf);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1115
static int inv_mpu6050_enable_wom(struct inv_mpu6050_state *st, bool en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1117
struct device *pdev = regmap_get_device(st->map);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1127
result = inv_mpu6050_switch_engine(st, true, mask);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1131
result = inv_mpu6050_set_wom_int(st, true);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1135
result = inv_mpu6050_set_wom_int(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1140
result = inv_mpu6050_switch_engine(st, false, INV_MPU6050_SENSOR_WOM);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1144
st->chip_config.wom_en = false;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1162
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1169
guard(mutex)(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1171
return st->chip_config.wom_en ? 1 : 0;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1180
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1187
guard(mutex)(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1189
if (st->chip_config.wom_en == state)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1192
return inv_mpu6050_enable_wom(st, state);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1202
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1210
guard(mutex)(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1213
*val = div_u64_rem(st->chip_config.roc_threshold, 1000000U, &rem);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1226
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1227
struct device *pdev = regmap_get_device(st->map);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1239
guard(mutex)(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1246
result = inv_mpu6050_set_wom_threshold(st, value, INV_MPU6050_FREQ_DIVIDER(st));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1264
static int inv_mpu6050_set_lpf(struct inv_mpu6050_state *st, int rate)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1282
result = inv_mpu6050_set_lpf_regs(st, data);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1285
st->chip_config.lpf = data;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1303
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1304
struct device *pdev = regmap_get_device(st->map);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1318
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1319
if (d == st->chip_config.divider) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1324
fifo_on = st->chip_config.accl_fifo_enable ||
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1325
st->chip_config.gyro_fifo_enable ||
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1326
st->chip_config.magn_fifo_enable;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1327
result = inv_sensors_timestamp_update_odr(&st->timestamp, fifo_period, fifo_on);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1335
result = regmap_write(st->map, st->reg->sample_rate_div, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1338
st->chip_config.divider = d;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1340
result = inv_mpu6050_set_lpf(st, fifo_rate);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1345
result = inv_mpu_magn_set_rate(st, fifo_rate);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1350
result = inv_mpu6050_set_wom_threshold(st, st->chip_config.roc_threshold,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1351
INV_MPU6050_FREQ_DIVIDER(st));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1358
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1372
struct inv_mpu6050_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1375
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1376
fifo_rate = INV_MPU6050_DIVIDER_TO_FIFO_RATE(st->chip_config.divider);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1377
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1393
struct inv_mpu6050_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1404
m = st->plat_data.orientation;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1425
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1427
if (st->trig != trig)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1720
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1723
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1725
ret = regmap_read(st->map, reg, readval);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1727
ret = regmap_write(st->map, reg, writeval);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1728
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1749
static int inv_check_and_setup_chip(struct inv_mpu6050_state *st)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1755
st->hw = &hw_info[st->chip_type];
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1756
st->reg = hw_info[st->chip_type].reg;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1757
memcpy(&st->chip_config, hw_info[st->chip_type].config,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1758
sizeof(st->chip_config));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1759
st->data = devm_kzalloc(regmap_get_device(st->map), st->hw->fifo_size, GFP_KERNEL);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1760
if (st->data == NULL)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1764
result = regmap_read(st->map, INV_MPU6050_REG_WHOAMI, ®val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1767
if (regval != st->hw->whoami) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1771
dev_warn(regmap_get_device(st->map),
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1774
st->hw->whoami, st->hw->name);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1779
dev_err(regmap_get_device(st->map),
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1781
regval, st->hw->whoami, st->hw->name);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1787
result = regmap_write(st->map, st->reg->pwr_mgmt_1,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1792
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1802
result = regmap_write(st->map, INV_MPU6050_REG_SIGNAL_PATH_RESET,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1818
result = inv_mpu6050_set_power_itg(st, true);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1823
result = inv_mpu6050_switch_engine(st, false, mask);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1830
inv_mpu6050_set_power_itg(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1834
static int inv_mpu_core_enable_regulator_vddio(struct inv_mpu6050_state *st)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1838
result = regulator_enable(st->vddio_supply);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1840
dev_err(regmap_get_device(st->map),
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1850
static int inv_mpu_core_disable_regulator_vddio(struct inv_mpu6050_state *st)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1854
result = regulator_disable(st->vddio_supply);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1856
dev_err(regmap_get_device(st->map),
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1864
struct inv_mpu6050_state *st = _data;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1867
result = regulator_disable(st->vdd_supply);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1869
dev_err(regmap_get_device(st->map),
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1872
inv_mpu_core_disable_regulator_vddio(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1885
struct inv_mpu6050_state *st;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1892
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1902
st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1903
mutex_init(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1904
st->chip_type = chip_type;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1905
st->irq = irq;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1906
st->map = regmap;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1908
st->level_shifter = device_property_read_bool(dev,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1912
result = iio_read_mount_matrix(dev, &st->orientation);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1919
st->plat_data = *pdata;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1932
st->irq_mask = INV_MPU6050_ACTIVE_HIGH;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1934
st->irq_mask = INV_MPU6050_ACTIVE_LOW;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1936
st->irq_mask = INV_MPU6050_ACTIVE_HIGH |
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1939
st->irq_mask = INV_MPU6050_ACTIVE_LOW |
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1951
if (st->chip_type == INV_MPU9150)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1952
st->irq_mask |= INV_MPU6050_INT_RD_CLEAR;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1956
st->vdd_supply = devm_regulator_get(dev, "vdd");
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1957
if (IS_ERR(st->vdd_supply))
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1958
return dev_err_probe(dev, PTR_ERR(st->vdd_supply),
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1961
st->vddio_supply = devm_regulator_get(dev, "vddio");
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1962
if (IS_ERR(st->vddio_supply))
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1963
return dev_err_probe(dev, PTR_ERR(st->vddio_supply),
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1966
result = regulator_enable(st->vdd_supply);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1973
result = inv_mpu_core_enable_regulator_vddio(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1975
regulator_disable(st->vdd_supply);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1980
st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1988
result = inv_mpu_magn_set_orient(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1993
result = inv_check_and_setup_chip(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2069
if (st->magn_disabled) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2116
inv_mpu6050_set_power_itg(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2124
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2128
guard(mutex)(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2130
wakeup = device_may_wakeup(dev) && st->chip_config.wom_en;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2133
enable_irq(st->irq);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2134
disable_irq_wake(st->irq);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2135
result = inv_mpu6050_set_wom_lp(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2139
result = inv_mpu_core_enable_regulator_vddio(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2142
result = inv_mpu6050_set_power_itg(st, true);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2151
result = inv_mpu6050_switch_engine(st, true, st->suspended_sensors);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2155
if (st->chip_config.wom_en && !wakeup) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2156
result = inv_mpu6050_set_wom_int(st, true);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2162
result = inv_mpu6050_prepare_fifo(st, true);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2170
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2174
guard(mutex)(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2176
st->suspended_sensors = 0;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2181
result = inv_mpu6050_prepare_fifo(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2186
wakeup = device_may_wakeup(dev) && st->chip_config.wom_en;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2188
if (st->chip_config.wom_en && !wakeup) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2189
result = inv_mpu6050_set_wom_int(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2194
if (st->chip_config.accl_en && !wakeup)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2195
st->suspended_sensors |= INV_MPU6050_SENSOR_ACCL;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2196
if (st->chip_config.gyro_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2197
st->suspended_sensors |= INV_MPU6050_SENSOR_GYRO;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2198
if (st->chip_config.temp_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2199
st->suspended_sensors |= INV_MPU6050_SENSOR_TEMP;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2200
if (st->chip_config.magn_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2201
st->suspended_sensors |= INV_MPU6050_SENSOR_MAGN;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2202
if (st->chip_config.wom_en && !wakeup)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2203
st->suspended_sensors |= INV_MPU6050_SENSOR_WOM;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2204
result = inv_mpu6050_switch_engine(st, false, st->suspended_sensors);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2209
result = inv_mpu6050_set_wom_lp(st, true);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2212
enable_irq_wake(st->irq);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2213
disable_irq(st->irq);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2215
result = inv_mpu6050_set_power_itg(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2218
inv_mpu_core_disable_regulator_vddio(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2226
struct inv_mpu6050_state *st = iio_priv(dev_get_drvdata(dev));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2230
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2235
ret = inv_mpu6050_switch_engine(st, false, sensors);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2239
ret = inv_mpu6050_set_power_itg(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2243
inv_mpu_core_disable_regulator_vddio(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2246
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2252
struct inv_mpu6050_state *st = iio_priv(dev_get_drvdata(dev));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2255
ret = inv_mpu_core_enable_regulator_vddio(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
2259
return inv_mpu6050_set_power_itg(st, true);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
317
static int inv_mpu6050_pwr_mgmt_1_write(struct inv_mpu6050_state *st, bool sleep,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
323
clock = st->chip_config.clk;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
325
temp_dis = !st->chip_config.temp_en;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
335
dev_dbg(regmap_get_device(st->map), "pwr_mgmt_1: 0x%x\n", val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
336
return regmap_write(st->map, st->reg->pwr_mgmt_1, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
339
static int inv_mpu6050_clock_switch(struct inv_mpu6050_state *st,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
344
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
349
ret = inv_mpu6050_pwr_mgmt_1_write(st, false, false, clock, -1);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
352
st->chip_config.clk = clock;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
362
int inv_mpu6050_switch_engine(struct inv_mpu6050_state *st, bool en,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
370
if (mask & INV_MPU6050_SENSOR_ACCL && en == st->chip_config.accl_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
372
if (mask & INV_MPU6050_SENSOR_GYRO && en == st->chip_config.gyro_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
374
if (mask & INV_MPU6050_SENSOR_TEMP && en == st->chip_config.temp_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
376
if (mask & INV_MPU6050_SENSOR_MAGN && en == st->chip_config.magn_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
378
if (mask & INV_MPU6050_SENSOR_WOM && en == st->chip_config.wom_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
382
if (!en && (mask & INV_MPU6050_SENSOR_ACCL) && st->chip_config.wom_en &&
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
391
ret = inv_mpu6050_pwr_mgmt_1_write(st, false, false, -1, !en);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
394
st->chip_config.temp_en = en;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
399
user_ctrl = st->chip_config.user_ctrl;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
404
ret = regmap_write(st->map, st->reg->user_ctrl, user_ctrl);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
407
st->chip_config.user_ctrl = user_ctrl;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
408
st->chip_config.magn_en = en;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
415
if (!st->chip_config.accl_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
417
if (!st->chip_config.gyro_en)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
436
ret = inv_mpu6050_clock_switch(st, INV_CLK_INTERNAL);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
442
dev_dbg(regmap_get_device(st->map), "pwr_mgmt_2: 0x%x\n",
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
444
ret = regmap_write(st->map, st->reg->pwr_mgmt_2, pwr_mgmt2);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
448
st->chip_config.accl_en = en;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
450
st->chip_config.gyro_en = en;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
456
if (sleep < st->hw->startup_time.accel)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
457
sleep = st->hw->startup_time.accel;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
460
if (sleep < st->hw->startup_time.gyro)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
461
sleep = st->hw->startup_time.gyro;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
474
ret = inv_mpu6050_clock_switch(st, INV_CLK_PLL);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
484
ret = regmap_write(st->map, INV_MPU6500_REG_ACCEL_INTEL_CTRL, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
487
st->chip_config.wom_en = en;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
493
static int inv_mpu6050_set_power_itg(struct inv_mpu6050_state *st,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
498
result = inv_mpu6050_pwr_mgmt_1_write(st, !power_on, false, -1, -1);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
509
static int inv_mpu6050_set_gyro_fsr(struct inv_mpu6050_state *st,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
515
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
525
return regmap_write(st->map, st->reg->gyro_config, data);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
528
static int inv_mpu6050_set_accel_lpf_regs(struct inv_mpu6050_state *st,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
531
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
548
return regmap_write(st->map, st->reg->accel_lpf, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
557
static int inv_mpu6050_set_lpf_regs(struct inv_mpu6050_state *st,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
562
result = regmap_write(st->map, st->reg->lpf, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
567
return inv_mpu6050_set_accel_lpf_regs(st, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
583
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
586
result = inv_mpu6050_set_gyro_fsr(st, st->chip_config.fsr);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
590
result = inv_mpu6050_set_lpf_regs(st, st->chip_config.lpf);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
594
d = st->chip_config.divider;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
595
result = regmap_write(st->map, st->reg->sample_rate_div, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
599
d = (st->chip_config.accl_fs << INV_MPU6050_ACCL_CONFIG_FSR_SHIFT);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
600
result = regmap_write(st->map, st->reg->accl_config, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
604
result = regmap_write(st->map, st->reg->int_pin_cfg, st->irq_mask);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
612
NSEC_PER_SEC / INV_MPU6050_DIVIDER_TO_FIFO_RATE(st->chip_config.divider);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
613
inv_sensors_timestamp_init(&st->timestamp, ×tamp);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
616
result = inv_mpu_magn_probe(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
623
static int inv_mpu6050_sensor_set(struct inv_mpu6050_state *st, int reg,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
631
return regmap_bulk_write(st->map, reg + ind, &d, sizeof(d));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
634
static int inv_mpu6050_sensor_show(struct inv_mpu6050_state *st, int reg,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
641
result = regmap_bulk_read(st->map, reg + ind, &d, sizeof(d));
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
653
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
654
struct device *pdev = regmap_get_device(st->map);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
660
freq_hz = INV_MPU6050_DIVIDER_TO_FIFO_RATE(st->chip_config.divider);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
669
if (!st->chip_config.gyro_en) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
670
result = inv_mpu6050_switch_engine(st, true,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
679
ret = inv_mpu6050_sensor_show(st, st->reg->raw_gyro,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
683
if (!st->chip_config.accl_en) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
684
result = inv_mpu6050_switch_engine(st, true,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
693
ret = inv_mpu6050_sensor_show(st, st->reg->raw_accl,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
698
if (!st->chip_config.accl_en && !st->chip_config.gyro_en) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
702
if (!st->chip_config.temp_en) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
703
result = inv_mpu6050_switch_engine(st, true,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
712
ret = inv_mpu6050_sensor_show(st, st->reg->temperature,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
716
if (!st->chip_config.magn_en) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
717
result = inv_mpu6050_switch_engine(st, true,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
731
ret = inv_mpu_magn_read(st, chan->channel2, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
752
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
759
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
761
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
767
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
769
*val2 = gyro_scale_6050[st->chip_config.fsr];
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
770
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
774
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
776
*val2 = accel_scale[st->chip_config.accl_fs];
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
777
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
781
*val = st->hw->temp.scale / 1000000;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
782
*val2 = st->hw->temp.scale % 1000000;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
785
return inv_mpu_magn_get_scale(st, chan, val, val2);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
792
*val = st->hw->temp.offset;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
800
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
801
ret = inv_mpu6050_sensor_show(st, st->reg->gyro_offset,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
803
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
806
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
807
ret = inv_mpu6050_sensor_show(st, st->reg->accl_offset,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
809
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
820
static int inv_mpu6050_write_gyro_scale(struct inv_mpu6050_state *st, int val,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
830
result = inv_mpu6050_set_gyro_fsr(st, i);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
834
st->chip_config.fsr = i;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
860
static int inv_mpu6050_write_accel_scale(struct inv_mpu6050_state *st, int val,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
872
result = regmap_write(st->map, st->reg->accl_config, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
876
st->chip_config.accl_fs = i;
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
888
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
889
struct device *pdev = regmap_get_device(st->map);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
899
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
908
result = inv_mpu6050_write_gyro_scale(st, val, val2);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
911
result = inv_mpu6050_write_accel_scale(st, val, val2);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
921
result = inv_mpu6050_sensor_set(st,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
922
st->reg->gyro_offset,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
926
result = inv_mpu6050_sensor_set(st,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
927
st->reg->accl_offset,
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
942
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
976
static int inv_mpu6050_set_wom_int(struct inv_mpu6050_state *st, bool on)
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
980
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
998
return regmap_update_bits(st->map, st->reg->int_enable, reg_val, val);
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
102
struct inv_mpu6050_state *st;
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
136
st = iio_priv(dev_get_drvdata(&client->dev));
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
139
st->muxc = i2c_mux_alloc(client->adapter, &client->dev,
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
142
if (!st->muxc)
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
144
st->muxc->priv = dev_get_drvdata(&client->dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
145
result = i2c_mux_add_adapter(st->muxc, 0, 0);
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
156
i2c_mux_del_adapters(st->muxc);
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
163
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
165
if (st->muxc) {
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
167
i2c_mux_del_adapters(st->muxc);
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
27
struct inv_mpu6050_state *st = iio_priv(dev_get_drvdata(dev));
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
29
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
43
if (st->magn_disabled)
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
54
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
66
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
72
st->magn_disabled = true;
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
83
ret = regmap_write(st->map, st->reg->int_pin_cfg,
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
84
st->irq_mask | INV_MPU6050_BIT_BYPASS_EN);
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
406
#define INV_MPU6050_FREQ_DIVIDER(st) \
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
407
((st)->chip_config.divider + 1)
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
507
int inv_mpu6050_prepare_fifo(struct inv_mpu6050_state *st, bool enable);
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
508
int inv_mpu6050_switch_engine(struct inv_mpu6050_state *st, bool en,
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
102
ret = inv_mpu_aux_write(st, INV_MPU_MAGN_I2C_ADDR,
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
113
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
136
st->magn_raw_to_gauss[0] = (((int32_t)asa[0] + 128) * sensitivity) / 256;
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
137
st->magn_raw_to_gauss[1] = (((int32_t)asa[1] + 128) * sensitivity) / 256;
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
138
st->magn_raw_to_gauss[2] = (((int32_t)asa[2] + 128) * sensitivity) / 256;
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
152
int inv_mpu_magn_probe(struct inv_mpu6050_state *st)
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
158
if (!inv_magn_supported(st))
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
162
ret = inv_mpu_aux_init(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
167
ret = inv_magn_init(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
176
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_ADDR(0),
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
181
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_REG(0),
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
186
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_CTRL(0),
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
195
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_ADDR(1),
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
200
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_REG(1),
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
207
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
215
ret = regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_DO(1), val);
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
219
return regmap_write(st->map, INV_MPU6050_REG_I2C_SLV_CTRL(1),
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
234
int inv_mpu_magn_set_rate(const struct inv_mpu6050_state *st, int fifo_rate)
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
239
if (!inv_magn_supported(st))
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
251
return regmap_write(st->map, INV_MPU6050_REG_I2C_SLV4_CTRL, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
262
int inv_mpu_magn_set_orient(struct inv_mpu6050_state *st)
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
264
struct device *dev = regmap_get_device(st->map);
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
270
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
275
st->magn_orient.rotation[0] = st->orientation.rotation[3];
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
276
st->magn_orient.rotation[1] = st->orientation.rotation[4];
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
277
st->magn_orient.rotation[2] = st->orientation.rotation[5];
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
279
st->magn_orient.rotation[3] = st->orientation.rotation[0];
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
280
st->magn_orient.rotation[4] = st->orientation.rotation[1];
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
281
st->magn_orient.rotation[5] = st->orientation.rotation[2];
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
284
orient = st->orientation.rotation[i];
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
303
st->magn_orient.rotation[i] = str;
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
307
st->magn_orient = st->orientation;
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
322
int inv_mpu_magn_read(struct inv_mpu6050_state *st, int axis, int *val)
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
330
if (!inv_magn_supported(st))
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
350
ret = regmap_read(st->map, INV_MPU6050_REG_I2C_MST_STATUS, &status);
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
358
ret = regmap_bulk_read(st->map, addr, &data, sizeof(data));
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
47
static bool inv_magn_supported(const struct inv_mpu6050_state *st)
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
49
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
60
static int inv_magn_init(struct inv_mpu6050_state *st)
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
68
ret = inv_mpu_aux_read(st, INV_MPU_MAGN_I2C_ADDR, INV_MPU_MAGN_REG_WIA,
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
76
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
79
ret = inv_mpu_aux_write(st, INV_MPU_MAGN_I2C_ADDR,
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
90
ret = inv_mpu_aux_write(st, INV_MPU_MAGN_I2C_ADDR,
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.c
96
ret = inv_mpu_aux_read(st, INV_MPU_MAGN_I2C_ADDR, INV_MPU_MAGN_REG_ASAX,
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.h
16
int inv_mpu_magn_probe(struct inv_mpu6050_state *st);
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.h
24
static inline int inv_mpu_magn_get_scale(const struct inv_mpu6050_state *st,
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.h
29
*val2 = st->magn_raw_to_gauss[chan->address];
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.h
33
int inv_mpu_magn_set_rate(const struct inv_mpu6050_state *st, int fifo_rate);
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.h
35
int inv_mpu_magn_set_orient(struct inv_mpu6050_state *st);
drivers/iio/imu/inv_mpu6050/inv_mpu_magn.h
37
int inv_mpu_magn_read(struct inv_mpu6050_state *st, int axis, int *val);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
103
fifo_period = NSEC_PER_SEC / INV_MPU6050_DIVIDER_TO_FIFO_RATE(st->chip_config.divider);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
104
inv_sensors_timestamp_interrupt(&st->timestamp, 1, pf->timestamp);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
105
inv_sensors_timestamp_apply_odr(&st->timestamp, fifo_period, 1, 0);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
108
result = regmap_noinc_read(st->map, st->reg->fifo_r_w, st->data, fifo_count);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
113
if (st->skip_samples) {
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
114
st->skip_samples--;
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
117
memcpy(data, &st->data[i * bytes_per_datum], bytes_per_datum);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
118
timestamp = inv_sensors_timestamp_pop(&st->timestamp);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
123
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
131
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
24
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
27
inv_mpu6050_prepare_fifo(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
28
result = inv_mpu6050_prepare_fifo(st, true);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
35
dev_err(regmap_get_device(st->map), "reset fifo failed %d\n", result);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
36
return regmap_update_bits(st->map, st->reg->int_enable,
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
47
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
57
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
59
if (!(st->chip_config.accl_fifo_enable |
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
60
st->chip_config.gyro_fifo_enable |
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
61
st->chip_config.magn_fifo_enable))
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
64
if (st->chip_config.accl_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
67
if (st->chip_config.gyro_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
70
if (st->chip_config.temp_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
73
if (st->chip_config.magn_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
80
result = regmap_bulk_read(st->map, st->reg->fifo_count_h,
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
81
st->data, INV_MPU6050_FIFO_COUNT_BYTE);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
84
fifo_count = be16_to_cpup((__be16 *)&st->data[0]);
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
92
if (fifo_count >= st->hw->fifo_size - nb) {
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
93
dev_warn(regmap_get_device(st->map), "fifo overflow reset\n");
drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
19
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
22
if (st->reg->i2c_if) {
drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
23
ret = regmap_write(st->map, st->reg->i2c_if,
drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
26
st->chip_config.user_ctrl |= INV_MPU6050_BIT_I2C_IF_DIS;
drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
27
ret = regmap_write(st->map, st->reg->user_ctrl,
drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
28
st->chip_config.user_ctrl);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
101
if (st->chip_config.magn_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
107
int inv_mpu6050_prepare_fifo(struct inv_mpu6050_state *st, bool enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
114
inv_sensors_timestamp_reset(&st->timestamp);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
116
d = st->chip_config.user_ctrl | INV_MPU6050_BIT_FIFO_RST;
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
117
ret = regmap_write(st->map, st->reg->user_ctrl, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
122
if (st->chip_config.gyro_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
124
if (st->chip_config.accl_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
126
if (st->chip_config.temp_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
128
if (st->chip_config.magn_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
130
ret = regmap_write(st->map, st->reg->fifo_en, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
134
d = st->chip_config.user_ctrl | INV_MPU6050_BIT_FIFO_EN;
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
135
ret = regmap_write(st->map, st->reg->user_ctrl, d);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
139
ret = regmap_update_bits(st->map, st->reg->int_enable,
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
143
ret = regmap_update_bits(st->map, st->reg->int_enable,
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
147
ret = regmap_write(st->map, st->reg->fifo_en, 0);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
15
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
151
ret = regmap_write(st->map, st->reg->user_ctrl,
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
152
st->chip_config.user_ctrl);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
165
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
166
struct device *pdev = regmap_get_device(st->map);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
179
result = inv_mpu6050_switch_engine(st, false, ~scan & ~INV_MPU6050_SENSOR_WOM);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
182
result = inv_mpu6050_switch_engine(st, true, scan);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
185
st->skip_samples = inv_compute_skip_samples(st);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
186
result = inv_mpu6050_prepare_fifo(st, true);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
190
st->chip_config.gyro_fifo_enable = 0;
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
191
st->chip_config.accl_fifo_enable = 0;
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
192
st->chip_config.temp_fifo_enable = 0;
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
193
st->chip_config.magn_fifo_enable = 0;
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
194
result = inv_mpu6050_prepare_fifo(st, false);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
216
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
219
mutex_lock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
221
mutex_unlock(&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
233
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
235
st->it_timestamp = iio_get_time_ns(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
24
st->chip_config.temp_fifo_enable = true;
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
243
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
248
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
275
scoped_guard(mutex, &st->lock) {
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
277
result = regmap_read(st->map, st->reg->int_status, &int_status);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
279
dev_err(regmap_get_device(st->map), "failed to ack interrupt\n");
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
28
st->chip_config.gyro_fifo_enable =
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
284
if (st->chip_config.wom_en && (int_status & wom_bits)) {
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
287
iio_push_event(indio_dev, ev_code, st->it_timestamp);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
294
indio_dev->pollfunc->timestamp = st->it_timestamp;
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
295
iio_trigger_poll_nested(st->trig);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
304
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
306
st->trig = devm_iio_trigger_alloc(&indio_dev->dev,
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
310
if (!st->trig)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
314
ret = devm_request_threaded_irq(&indio_dev->dev, st->irq,
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
321
st->trig->dev.parent = regmap_get_device(st->map);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
322
st->trig->ops = &inv_mpu_trigger_ops;
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
323
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
325
ret = devm_iio_trigger_register(&indio_dev->dev, st->trig);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
329
indio_dev->trig = iio_trigger_get(st->trig);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
36
st->chip_config.accl_fifo_enable =
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
44
st->chip_config.temp_fifo_enable =
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
48
if (st->chip_config.gyro_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
50
if (st->chip_config.accl_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
52
if (st->chip_config.temp_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
60
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
66
if (st->magn_disabled)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
69
st->chip_config.magn_fifo_enable =
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
76
if (st->chip_config.magn_fifo_enable)
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
84
struct inv_mpu6050_state *st = iio_priv(indio_dev);
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
86
switch (st->chip_type) {
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
96
static unsigned int inv_compute_skip_samples(const struct inv_mpu6050_state *st)
drivers/iio/light/cros_ec_light_prox.c
101
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_RANGE;
drivers/iio/light/cros_ec_light_prox.c
102
st->core.param.sensor_range.data = EC_MOTION_SENSE_NO_VALUE;
drivers/iio/light/cros_ec_light_prox.c
104
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/light/cros_ec_light_prox.c
108
val64 = st->core.resp->sensor_range.ret;
drivers/iio/light/cros_ec_light_prox.c
114
ret = cros_ec_sensors_core_read(&st->core, chan, val, val2,
drivers/iio/light/cros_ec_light_prox.c
119
mutex_unlock(&st->core.cmd_lock);
drivers/iio/light/cros_ec_light_prox.c
128
struct cros_ec_light_prox_state *st = iio_priv(indio_dev);
drivers/iio/light/cros_ec_light_prox.c
132
mutex_lock(&st->core.cmd_lock);
drivers/iio/light/cros_ec_light_prox.c
136
st->core.calib[idx].offset = val;
drivers/iio/light/cros_ec_light_prox.c
138
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_OFFSET;
drivers/iio/light/cros_ec_light_prox.c
139
st->core.param.sensor_offset.flags = MOTION_SENSE_SET_OFFSET;
drivers/iio/light/cros_ec_light_prox.c
140
st->core.param.sensor_offset.offset[0] =
drivers/iio/light/cros_ec_light_prox.c
141
st->core.calib[0].offset;
drivers/iio/light/cros_ec_light_prox.c
142
st->core.param.sensor_offset.temp =
drivers/iio/light/cros_ec_light_prox.c
144
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/light/cros_ec_light_prox.c
147
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_RANGE;
drivers/iio/light/cros_ec_light_prox.c
148
st->core.curr_range = (val << 16) | (val2 / 100);
drivers/iio/light/cros_ec_light_prox.c
149
st->core.param.sensor_range.data = st->core.curr_range;
drivers/iio/light/cros_ec_light_prox.c
150
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/light/cros_ec_light_prox.c
152
st->core.range_updated = true;
drivers/iio/light/cros_ec_light_prox.c
155
ret = cros_ec_sensors_core_write(&st->core, chan, val, val2,
drivers/iio/light/cros_ec_light_prox.c
160
mutex_unlock(&st->core.cmd_lock);
drivers/iio/light/cros_ec_light_prox.c
42
struct cros_ec_light_prox_state *st = iio_priv(indio_dev);
drivers/iio/light/cros_ec_light_prox.c
48
mutex_lock(&st->core.cmd_lock);
drivers/iio/light/cros_ec_light_prox.c
81
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_OFFSET;
drivers/iio/light/cros_ec_light_prox.c
82
st->core.param.sensor_offset.flags = 0;
drivers/iio/light/cros_ec_light_prox.c
84
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/light/cros_ec_light_prox.c
89
st->core.calib[0].offset =
drivers/iio/light/cros_ec_light_prox.c
90
st->core.resp->sensor_offset.offset[0];
drivers/iio/light/cros_ec_light_prox.c
92
*val = st->core.calib[idx].offset;
drivers/iio/light/hid-sensor-als.c
308
struct als_state *st)
drivers/iio/light/hid-sensor-als.c
314
channels = st->channels;
drivers/iio/light/hid-sensor-als.c
321
&st->als[i]);
drivers/iio/light/hid-sensor-als.c
326
st->als_scan_mask[0] |= BIT(i);
drivers/iio/light/hid-sensor-als.c
329
.realbits = BYTES_TO_BITS(st->als[i].size),
drivers/iio/light/hid-sensor-als.c
334
dev_dbg(&pdev->dev, "als %x:%x\n", st->als[i].index,
drivers/iio/light/hid-sensor-als.c
335
st->als[i].report_id);
drivers/iio/light/hid-sensor-als.c
338
st->num_channels = index;
drivers/iio/light/hid-sensor-als.c
343
st->scale_precision = hid_sensor_format_scale(usage_id,
drivers/iio/light/hid-sensor-als.c
344
&st->als[CHANNEL_SCAN_INDEX_INTENSITY],
drivers/iio/light/hid-sensor-als.c
345
&st->scale_pre_decml, &st->scale_post_decml);
drivers/iio/light/hid-sensor-prox.c
221
struct prox_state *st)
drivers/iio/light/hid-sensor-prox.c
223
struct iio_chan_spec *channels = st->channels;
drivers/iio/light/hid-sensor-prox.c
235
&st->prox_attr[index]);
drivers/iio/light/hid-sensor-prox.c
238
st->channel2usage[index] = usage_id;
drivers/iio/light/hid-sensor-prox.c
239
st->scan_mask[0] |= BIT(index);
drivers/iio/light/hid-sensor-prox.c
244
.realbits = BYTES_TO_BITS(st->prox_attr[index].size),
drivers/iio/light/hid-sensor-prox.c
247
dev_dbg(&pdev->dev, "prox %x:%x\n", st->prox_attr[index].index,
drivers/iio/light/hid-sensor-prox.c
248
st->prox_attr[index].report_id);
drivers/iio/light/hid-sensor-prox.c
249
st->scale_precision[index] =
drivers/iio/light/hid-sensor-prox.c
250
hid_sensor_format_scale(usage_id, &st->prox_attr[index],
drivers/iio/light/hid-sensor-prox.c
251
&st->scale_pre_decml[index],
drivers/iio/light/hid-sensor-prox.c
252
&st->scale_post_decml[index]);
drivers/iio/light/hid-sensor-prox.c
259
st->num_channels = index;
drivers/iio/magnetometer/hid-sensor-magn-3d.c
343
struct magn_3d_state *st)
drivers/iio/magnetometer/hid-sensor-magn-3d.c
359
&(st->magn[i]));
drivers/iio/magnetometer/hid-sensor-magn-3d.c
373
st->magn[0].index,
drivers/iio/magnetometer/hid-sensor-magn-3d.c
374
st->magn[0].report_id,
drivers/iio/magnetometer/hid-sensor-magn-3d.c
375
st->magn[1].index, st->magn[1].report_id,
drivers/iio/magnetometer/hid-sensor-magn-3d.c
376
st->magn[2].index, st->magn[2].report_id);
drivers/iio/magnetometer/hid-sensor-magn-3d.c
389
st->iio_vals = devm_kcalloc(&pdev->dev,
drivers/iio/magnetometer/hid-sensor-magn-3d.c
392
if (!st->iio_vals) {
drivers/iio/magnetometer/hid-sensor-magn-3d.c
401
if (st->magn[i].index >= 0) {
drivers/iio/magnetometer/hid-sensor-magn-3d.c
409
st->magn_val_addr[i] = &st->iio_vals[*chan_count];
drivers/iio/magnetometer/hid-sensor-magn-3d.c
412
.realbits = BYTES_TO_BITS(st->magn[i].size),
drivers/iio/magnetometer/hid-sensor-magn-3d.c
431
st->magn_flux_attr.scale_precision = hid_sensor_format_scale(
drivers/iio/magnetometer/hid-sensor-magn-3d.c
433
&st->magn[CHANNEL_SCAN_INDEX_X],
drivers/iio/magnetometer/hid-sensor-magn-3d.c
434
&st->magn_flux_attr.scale_pre_decml,
drivers/iio/magnetometer/hid-sensor-magn-3d.c
435
&st->magn_flux_attr.scale_post_decml);
drivers/iio/magnetometer/hid-sensor-magn-3d.c
436
st->rot_attr.scale_precision
drivers/iio/magnetometer/hid-sensor-magn-3d.c
439
&st->magn[CHANNEL_SCAN_INDEX_NORTH_MAGN_TILT_COMP],
drivers/iio/magnetometer/hid-sensor-magn-3d.c
440
&st->rot_attr.scale_pre_decml,
drivers/iio/magnetometer/hid-sensor-magn-3d.c
441
&st->rot_attr.scale_post_decml);
drivers/iio/magnetometer/hid-sensor-magn-3d.c
443
if (st->rot_attributes.sensitivity.index < 0) {
drivers/iio/magnetometer/hid-sensor-magn-3d.c
448
&st->rot_attributes.sensitivity);
drivers/iio/magnetometer/hid-sensor-magn-3d.c
450
st->rot_attributes.sensitivity.index,
drivers/iio/magnetometer/hid-sensor-magn-3d.c
451
st->rot_attributes.sensitivity.report_id);
drivers/iio/orientation/hid-sensor-incl-3d.c
250
struct incl_3d_state *st)
drivers/iio/orientation/hid-sensor-incl-3d.c
258
&st->incl[CHANNEL_SCAN_INDEX_X]);
drivers/iio/orientation/hid-sensor-incl-3d.c
262
st->incl[CHANNEL_SCAN_INDEX_X].size);
drivers/iio/orientation/hid-sensor-incl-3d.c
268
&st->incl[CHANNEL_SCAN_INDEX_Y]);
drivers/iio/orientation/hid-sensor-incl-3d.c
272
st->incl[CHANNEL_SCAN_INDEX_Y].size);
drivers/iio/orientation/hid-sensor-incl-3d.c
278
&st->incl[CHANNEL_SCAN_INDEX_Z]);
drivers/iio/orientation/hid-sensor-incl-3d.c
282
st->incl[CHANNEL_SCAN_INDEX_Z].size);
drivers/iio/orientation/hid-sensor-incl-3d.c
285
st->incl[0].index,
drivers/iio/orientation/hid-sensor-incl-3d.c
286
st->incl[0].report_id,
drivers/iio/orientation/hid-sensor-incl-3d.c
287
st->incl[1].index, st->incl[1].report_id,
drivers/iio/orientation/hid-sensor-incl-3d.c
288
st->incl[2].index, st->incl[2].report_id);
drivers/iio/orientation/hid-sensor-incl-3d.c
290
st->scale_precision = hid_sensor_format_scale(
drivers/iio/orientation/hid-sensor-incl-3d.c
292
&st->incl[CHANNEL_SCAN_INDEX_X],
drivers/iio/orientation/hid-sensor-incl-3d.c
293
&st->scale_pre_decml, &st->scale_post_decml);
drivers/iio/orientation/hid-sensor-rotation.c
279
struct dev_rot_state *st)
drivers/iio/orientation/hid-sensor-rotation.c
287
&st->quaternion);
drivers/iio/orientation/hid-sensor-rotation.c
291
dev_dbg(&pdev->dev, "dev_rot %x:%x\n", st->quaternion.index,
drivers/iio/orientation/hid-sensor-rotation.c
292
st->quaternion.report_id);
drivers/iio/orientation/hid-sensor-rotation.c
295
st->quaternion.size);
drivers/iio/orientation/hid-sensor-rotation.c
297
st->scale_precision = hid_sensor_format_scale(
drivers/iio/orientation/hid-sensor-rotation.c
299
&st->quaternion,
drivers/iio/orientation/hid-sensor-rotation.c
300
&st->scale_pre_decml, &st->scale_post_decml);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
112
struct hinge_state *st = iio_priv(indio_dev);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
117
hsdev = st->common_attributes.hsdev;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
120
hid_sensor_power_state(&st->common_attributes, true);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
121
report_id = st->hinge[chan->scan_index].report_id;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
122
min = st->hinge[chan->scan_index].logical_minimum;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
124
hid_sensor_power_state(&st->common_attributes, false);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
128
*val = sensor_hub_input_attr_get_raw_value(st->common_attributes.hsdev,
drivers/iio/position/hid-sensor-custom-intel-hinge.c
134
hid_sensor_power_state(&st->common_attributes, false);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
137
*val = st->scale_pre_decml;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
138
*val2 = st->scale_post_decml;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
139
return st->scale_precision;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
141
*val = st->value_offset;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
144
return hid_sensor_read_samp_freq_value(&st->common_attributes,
drivers/iio/position/hid-sensor-custom-intel-hinge.c
147
return hid_sensor_read_raw_hyst_value(&st->common_attributes,
drivers/iio/position/hid-sensor-custom-intel-hinge.c
159
struct hinge_state *st = iio_priv(indio_dev);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
163
return hid_sensor_write_samp_freq_value(&st->common_attributes,
drivers/iio/position/hid-sensor-custom-intel-hinge.c
166
return hid_sensor_write_raw_hyst_value(&st->common_attributes,
drivers/iio/position/hid-sensor-custom-intel-hinge.c
176
struct hinge_state *st = iio_priv(indio_dev);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
178
return sysfs_emit(label, "%s\n", st->labels[chan->channel]);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
195
struct hinge_state *st = iio_priv(indio_dev);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
197
if (atomic_read(&st->common_attributes.data_ready)) {
drivers/iio/position/hid-sensor-custom-intel-hinge.c
198
if (!st->timestamp)
drivers/iio/position/hid-sensor-custom-intel-hinge.c
199
st->timestamp = iio_get_time_ns(indio_dev);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
201
iio_push_to_buffers_with_timestamp(indio_dev, &st->scan,
drivers/iio/position/hid-sensor-custom-intel-hinge.c
202
st->timestamp);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
204
st->timestamp = 0;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
215
struct hinge_state *st = iio_priv(indio_dev);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
223
st->scan.hinge_val[offset] = *(u32 *)raw_data;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
226
st->timestamp = hid_sensor_convert_timestamp(&st->common_attributes,
drivers/iio/position/hid-sensor-custom-intel-hinge.c
238
unsigned int usage_id, struct hinge_state *st)
drivers/iio/position/hid-sensor-custom-intel-hinge.c
248
&st->hinge[i]);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
252
hinge_adjust_channel_realbits(channels, i, st->hinge[i].size);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
255
st->scale_precision = hid_sensor_format_scale(HID_USAGE_SENSOR_HINGE,
drivers/iio/position/hid-sensor-custom-intel-hinge.c
256
&st->hinge[CHANNEL_SCAN_INDEX_HINGE_ANGLE],
drivers/iio/position/hid-sensor-custom-intel-hinge.c
257
&st->scale_pre_decml, &st->scale_post_decml);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
266
struct hinge_state *st;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
271
indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*st));
drivers/iio/position/hid-sensor-custom-intel-hinge.c
277
st = iio_priv(indio_dev);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
278
st->common_attributes.hsdev = hsdev;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
279
st->common_attributes.pdev = pdev;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
280
st->indio_dev = indio_dev;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
282
st->labels[i] = hinge_labels[i];
drivers/iio/position/hid-sensor-custom-intel-hinge.c
285
&st->common_attributes,
drivers/iio/position/hid-sensor-custom-intel-hinge.c
301
hsdev->usage, st);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
311
atomic_set(&st->common_attributes.data_ready, 0);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
313
&st->common_attributes);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
319
st->callbacks.send_event = hinge_proc_event;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
320
st->callbacks.capture_sample = hinge_capture_sample;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
321
st->callbacks.pdev = pdev;
drivers/iio/position/hid-sensor-custom-intel-hinge.c
322
ret = sensor_hub_register_callback(hsdev, hsdev->usage, &st->callbacks);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
339
hid_sensor_remove_trigger(indio_dev, &st->common_attributes);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
348
struct hinge_state *st = iio_priv(indio_dev);
drivers/iio/position/hid-sensor-custom-intel-hinge.c
352
hid_sensor_remove_trigger(indio_dev, &st->common_attributes);
drivers/iio/pressure/cros_ec_baro.c
101
st->core.range_updated = true;
drivers/iio/pressure/cros_ec_baro.c
102
st->core.curr_range = val;
drivers/iio/pressure/cros_ec_baro.c
106
ret = cros_ec_sensors_core_write(&st->core, chan, val, val2,
drivers/iio/pressure/cros_ec_baro.c
111
mutex_unlock(&st->core.cmd_lock);
drivers/iio/pressure/cros_ec_baro.c
40
struct cros_ec_baro_state *st = iio_priv(indio_dev);
drivers/iio/pressure/cros_ec_baro.c
45
mutex_lock(&st->core.cmd_lock);
drivers/iio/pressure/cros_ec_baro.c
58
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_RANGE;
drivers/iio/pressure/cros_ec_baro.c
59
st->core.param.sensor_range.data = EC_MOTION_SENSE_NO_VALUE;
drivers/iio/pressure/cros_ec_baro.c
61
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/pressure/cros_ec_baro.c
65
*val = st->core.resp->sensor_range.ret;
drivers/iio/pressure/cros_ec_baro.c
72
ret = cros_ec_sensors_core_read(&st->core, chan, val, val2,
drivers/iio/pressure/cros_ec_baro.c
77
mutex_unlock(&st->core.cmd_lock);
drivers/iio/pressure/cros_ec_baro.c
86
struct cros_ec_baro_state *st = iio_priv(indio_dev);
drivers/iio/pressure/cros_ec_baro.c
89
mutex_lock(&st->core.cmd_lock);
drivers/iio/pressure/cros_ec_baro.c
93
st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_RANGE;
drivers/iio/pressure/cros_ec_baro.c
94
st->core.param.sensor_range.data = val;
drivers/iio/pressure/cros_ec_baro.c
97
st->core.param.sensor_range.roundup = 1;
drivers/iio/pressure/cros_ec_baro.c
99
ret = cros_ec_motion_send_host_cmd(&st->core, 0);
drivers/iio/pressure/dlhl60d.c
100
ret = dlh_cmd_start_single(st);
drivers/iio/pressure/dlhl60d.c
104
if (st->use_interrupt) {
drivers/iio/pressure/dlhl60d.c
105
ret = wait_for_completion_timeout(&st->completion,
drivers/iio/pressure/dlhl60d.c
108
dev_err(&st->client->dev,
drivers/iio/pressure/dlhl60d.c
116
return dlh_cmd_read_data(st);
drivers/iio/pressure/dlhl60d.c
119
static int dlh_read_direct(struct dlh_state *st,
drivers/iio/pressure/dlhl60d.c
124
ret = dlh_start_capture_and_read(st);
drivers/iio/pressure/dlhl60d.c
128
*pressure = get_unaligned_be24(&st->rx_buf[1]);
drivers/iio/pressure/dlhl60d.c
129
*temperature = get_unaligned_be24(&st->rx_buf[4]);
drivers/iio/pressure/dlhl60d.c
138
struct dlh_state *st = iio_priv(indio_dev);
drivers/iio/pressure/dlhl60d.c
149
ret = dlh_read_direct(st, &pressure, &temperature);
drivers/iio/pressure/dlhl60d.c
169
tmp = div_s64(125LL * st->info->fss * 24909 * 100,
drivers/iio/pressure/dlhl60d.c
187
*value = -125 * st->info->fss * 24909;
drivers/iio/pressure/dlhl60d.c
188
*value2 = 100 * st->info->osdig * 100000;
drivers/iio/pressure/dlhl60d.c
245
struct dlh_state *st = iio_priv(indio_dev);
drivers/iio/pressure/dlhl60d.c
250
ret = dlh_start_capture_and_read(st);
drivers/iio/pressure/dlhl60d.c
256
&st->rx_buf[1] + chn * DLH_NUM_DATA_BYTES,
drivers/iio/pressure/dlhl60d.c
271
struct dlh_state *st = iio_priv(indio_dev);
drivers/iio/pressure/dlhl60d.c
273
complete(&st->completion);
drivers/iio/pressure/dlhl60d.c
280
struct dlh_state *st;
drivers/iio/pressure/dlhl60d.c
291
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st));
drivers/iio/pressure/dlhl60d.c
297
st = iio_priv(indio_dev);
drivers/iio/pressure/dlhl60d.c
298
st->info = i2c_get_match_data(client);
drivers/iio/pressure/dlhl60d.c
299
st->client = client;
drivers/iio/pressure/dlhl60d.c
300
st->use_interrupt = false;
drivers/iio/pressure/dlhl60d.c
302
indio_dev->name = st->info->name;
drivers/iio/pressure/dlhl60d.c
311
st->info->name, indio_dev);
drivers/iio/pressure/dlhl60d.c
317
st->use_interrupt = true;
drivers/iio/pressure/dlhl60d.c
318
init_completion(&st->completion);
drivers/iio/pressure/dlhl60d.c
61
static int dlh_cmd_start_single(struct dlh_state *st)
drivers/iio/pressure/dlhl60d.c
65
ret = i2c_smbus_write_byte(st->client, DLH_START_SINGLE);
drivers/iio/pressure/dlhl60d.c
67
dev_err(&st->client->dev,
drivers/iio/pressure/dlhl60d.c
73
static int dlh_cmd_read_data(struct dlh_state *st)
drivers/iio/pressure/dlhl60d.c
77
ret = i2c_master_recv(st->client, st->rx_buf, DLH_NUM_READ_BYTES);
drivers/iio/pressure/dlhl60d.c
79
dev_err(&st->client->dev,
drivers/iio/pressure/dlhl60d.c
84
if (st->rx_buf[0] != DLH_STATUS_OK) {
drivers/iio/pressure/dlhl60d.c
85
dev_err(&st->client->dev,
drivers/iio/pressure/dlhl60d.c
86
"%s: invalid status 0x%02x\n", __func__, st->rx_buf[0]);
drivers/iio/pressure/dlhl60d.c
93
static int dlh_start_capture_and_read(struct dlh_state *st)
drivers/iio/pressure/dlhl60d.c
97
if (st->use_interrupt)
drivers/iio/pressure/dlhl60d.c
98
reinit_completion(&st->completion);
drivers/iio/pressure/hid-sensor-press.c
207
struct press_state *st)
drivers/iio/pressure/hid-sensor-press.c
214
&st->press_attr);
drivers/iio/pressure/hid-sensor-press.c
219
.realbits = BYTES_TO_BITS(st->press_attr.size),
drivers/iio/pressure/hid-sensor-press.c
223
dev_dbg(&pdev->dev, "press %x:%x\n", st->press_attr.index,
drivers/iio/pressure/hid-sensor-press.c
224
st->press_attr.report_id);
drivers/iio/pressure/hid-sensor-press.c
226
st->scale_precision = hid_sensor_format_scale(
drivers/iio/pressure/hid-sensor-press.c
228
&st->press_attr,
drivers/iio/pressure/hid-sensor-press.c
229
&st->scale_pre_decml, &st->scale_post_decml);
drivers/iio/pressure/icp10100.c
119
static int icp10100_send_cmd(struct icp10100_state *st,
drivers/iio/pressure/icp10100.c
129
.addr = st->client->addr,
drivers/iio/pressure/icp10100.c
134
.addr = st->client->addr,
drivers/iio/pressure/icp10100.c
151
dev_dbg(&st->client->dev, "sending cmd %#x\n", be16_to_cpu(cmd->cmd));
drivers/iio/pressure/icp10100.c
155
ret = icp10100_i2c_xfer(st->client->adapter, msgs,
drivers/iio/pressure/icp10100.c
161
ret = icp10100_i2c_xfer(st->client->adapter, &msgs[0], 1);
drivers/iio/pressure/icp10100.c
168
ret = icp10100_i2c_xfer(st->client->adapter, &msgs[1], 1);
drivers/iio/pressure/icp10100.c
182
dev_err(&st->client->dev, "crc error recv=%#x calc=%#x\n",
drivers/iio/pressure/icp10100.c
193
static int icp10100_read_cal_otp(struct icp10100_state *st)
drivers/iio/pressure/icp10100.c
200
ret = i2c_master_send(st->client, icp10100_switch_mode_otp,
drivers/iio/pressure/icp10100.c
209
ret = icp10100_send_cmd(st, &icp10100_cmd_read_otp,
drivers/iio/pressure/icp10100.c
213
st->cal[i] = be16_to_cpu(val);
drivers/iio/pressure/icp10100.c
214
dev_dbg(&st->client->dev, "cal[%d] = %d\n", i, st->cal[i]);
drivers/iio/pressure/icp10100.c
220
static int icp10100_init_chip(struct icp10100_state *st)
drivers/iio/pressure/icp10100.c
227
ret = icp10100_send_cmd(st, &icp10100_cmd_read_id, &val, sizeof(val));
drivers/iio/pressure/icp10100.c
232
dev_err(&st->client->dev, "invalid id %#x\n", id);
drivers/iio/pressure/icp10100.c
237
ret = icp10100_read_cal_otp(st);
drivers/iio/pressure/icp10100.c
242
return icp10100_send_cmd(st, &icp10100_cmd_soft_reset, NULL, 0);
drivers/iio/pressure/icp10100.c
245
static int icp10100_get_measures(struct icp10100_state *st,
drivers/iio/pressure/icp10100.c
252
ret = pm_runtime_resume_and_get(&st->client->dev);
drivers/iio/pressure/icp10100.c
256
mutex_lock(&st->lock);
drivers/iio/pressure/icp10100.c
257
cmd = &icp10100_cmd_measure[st->mode];
drivers/iio/pressure/icp10100.c
258
ret = icp10100_send_cmd(st, cmd, measures, sizeof(measures));
drivers/iio/pressure/icp10100.c
259
mutex_unlock(&st->lock);
drivers/iio/pressure/icp10100.c
268
pm_runtime_put_autosuspend(&st->client->dev);
drivers/iio/pressure/icp10100.c
272
static uint32_t icp10100_get_pressure(struct icp10100_state *st,
drivers/iio/pressure/icp10100.c
286
dev_dbg(&st->client->dev, "raw: pressure = %u, temp = %u\n",
drivers/iio/pressure/icp10100.c
292
val1 = (int64_t)st->cal[0] * (int64_t)t_square;
drivers/iio/pressure/icp10100.c
294
val1 = (int64_t)st->cal[1] * (int64_t)t_square;
drivers/iio/pressure/icp10100.c
295
p_lut[1] = offset_factor * st->cal[3] +
drivers/iio/pressure/icp10100.c
297
val1 = (int64_t)st->cal[2] * (int64_t)t_square;
drivers/iio/pressure/icp10100.c
299
dev_dbg(&st->client->dev, "p_lut = [%d, %d, %d]\n",
drivers/iio/pressure/icp10100.c
313
dev_dbg(&st->client->dev, "val1 = %lld, val2 = %lld, c = %lld\n",
drivers/iio/pressure/icp10100.c
320
dev_dbg(&st->client->dev, "val1 = %lld, val2 = %lld, a = %lld\n",
drivers/iio/pressure/icp10100.c
323
dev_dbg(&st->client->dev, "b = %lld\n", b);
drivers/iio/pressure/icp10100.c
338
struct icp10100_state *st = iio_priv(indio_dev);
drivers/iio/pressure/icp10100.c
347
ret = icp10100_get_measures(st, &raw_pressure, &raw_temp);
drivers/iio/pressure/icp10100.c
353
pressure_mPa = icp10100_get_pressure(st, raw_pressure,
drivers/iio/pressure/icp10100.c
378
struct icp10100_state *st = iio_priv(indio_dev);
drivers/iio/pressure/icp10100.c
406
mutex_lock(&st->lock);
drivers/iio/pressure/icp10100.c
407
*val = 1 << st->mode;
drivers/iio/pressure/icp10100.c
408
mutex_unlock(&st->lock);
drivers/iio/pressure/icp10100.c
437
struct icp10100_state *st = iio_priv(indio_dev);
drivers/iio/pressure/icp10100.c
450
mutex_lock(&st->lock);
drivers/iio/pressure/icp10100.c
451
st->mode = mode;
drivers/iio/pressure/icp10100.c
452
mutex_unlock(&st->lock);
drivers/iio/pressure/icp10100.c
499
static int icp10100_enable_regulator(struct icp10100_state *st)
drivers/iio/pressure/icp10100.c
503
ret = regulator_enable(st->vdd);
drivers/iio/pressure/icp10100.c
513
struct icp10100_state *st = data;
drivers/iio/pressure/icp10100.c
516
ret = regulator_disable(st->vdd);
drivers/iio/pressure/icp10100.c
518
dev_err(&st->client->dev, "error %d disabling vdd\n", ret);
drivers/iio/pressure/icp10100.c
531
struct icp10100_state *st;
drivers/iio/pressure/icp10100.c
539
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st));
drivers/iio/pressure/icp10100.c
550
st = iio_priv(indio_dev);
drivers/iio/pressure/icp10100.c
551
mutex_init(&st->lock);
drivers/iio/pressure/icp10100.c
552
st->client = client;
drivers/iio/pressure/icp10100.c
553
st->mode = ICP10100_MODE_N;
drivers/iio/pressure/icp10100.c
555
st->vdd = devm_regulator_get(&client->dev, "vdd");
drivers/iio/pressure/icp10100.c
556
if (IS_ERR(st->vdd))
drivers/iio/pressure/icp10100.c
557
return PTR_ERR(st->vdd);
drivers/iio/pressure/icp10100.c
559
ret = icp10100_enable_regulator(st);
drivers/iio/pressure/icp10100.c
564
icp10100_disable_regulator_action, st);
drivers/iio/pressure/icp10100.c
571
ret = icp10100_init_chip(st);
drivers/iio/pressure/icp10100.c
594
struct icp10100_state *st = iio_priv(dev_get_drvdata(dev));
drivers/iio/pressure/icp10100.c
597
mutex_lock(&st->lock);
drivers/iio/pressure/icp10100.c
598
ret = regulator_disable(st->vdd);
drivers/iio/pressure/icp10100.c
599
mutex_unlock(&st->lock);
drivers/iio/pressure/icp10100.c
606
struct icp10100_state *st = iio_priv(dev_get_drvdata(dev));
drivers/iio/pressure/icp10100.c
609
mutex_lock(&st->lock);
drivers/iio/pressure/icp10100.c
611
ret = icp10100_enable_regulator(st);
drivers/iio/pressure/icp10100.c
616
ret = icp10100_send_cmd(st, &icp10100_cmd_soft_reset, NULL, 0);
drivers/iio/pressure/icp10100.c
619
mutex_unlock(&st->lock);
drivers/iio/pressure/ms5611.h
46
int (*reset)(struct ms5611_state *st);
drivers/iio/pressure/ms5611.h
47
int (*read_prom_word)(struct ms5611_state *st, int index, u16 *word);
drivers/iio/pressure/ms5611.h
48
int (*read_adc_temp_and_pressure)(struct ms5611_state *st,
drivers/iio/pressure/ms5611.h
51
int (*compensate_temp_and_pressure)(struct ms5611_state *st, s32 *temp,
drivers/iio/pressure/ms5611_core.c
108
struct ms5611_state *st = iio_priv(indio_dev);
drivers/iio/pressure/ms5611_core.c
110
ret = st->read_adc_temp_and_pressure(st, temp, pressure);
drivers/iio/pressure/ms5611_core.c
117
return st->compensate_temp_and_pressure(st, temp, pressure);
drivers/iio/pressure/ms5611_core.c
120
static int ms5611_temp_and_pressure_compensate(struct ms5611_state *st,
drivers/iio/pressure/ms5611_core.c
126
dt = t - (st->prom[5] << 8);
drivers/iio/pressure/ms5611_core.c
127
off = ((s64)st->prom[2] << 16) + ((st->prom[4] * dt) >> 7);
drivers/iio/pressure/ms5611_core.c
128
sens = ((s64)st->prom[1] << 15) + ((st->prom[3] * dt) >> 8);
drivers/iio/pressure/ms5611_core.c
130
t = 2000 + ((st->prom[6] * dt) >> 23);
drivers/iio/pressure/ms5611_core.c
156
static int ms5607_temp_and_pressure_compensate(struct ms5611_state *st,
drivers/iio/pressure/ms5611_core.c
162
dt = t - (st->prom[5] << 8);
drivers/iio/pressure/ms5611_core.c
163
off = ((s64)st->prom[2] << 17) + ((st->prom[4] * dt) >> 6);
drivers/iio/pressure/ms5611_core.c
164
sens = ((s64)st->prom[1] << 16) + ((st->prom[3] * dt) >> 7);
drivers/iio/pressure/ms5611_core.c
166
t = 2000 + ((st->prom[6] * dt) >> 23);
drivers/iio/pressure/ms5611_core.c
195
struct ms5611_state *st = iio_priv(indio_dev);
drivers/iio/pressure/ms5611_core.c
197
ret = st->reset(st);
drivers/iio/pressure/ms5611_core.c
212
struct ms5611_state *st = iio_priv(indio_dev);
drivers/iio/pressure/ms5611_core.c
220
mutex_lock(&st->lock);
drivers/iio/pressure/ms5611_core.c
223
mutex_unlock(&st->lock);
drivers/iio/pressure/ms5611_core.c
242
struct ms5611_state *st = iio_priv(indio_dev);
drivers/iio/pressure/ms5611_core.c
246
mutex_lock(&st->lock);
drivers/iio/pressure/ms5611_core.c
249
mutex_unlock(&st->lock);
drivers/iio/pressure/ms5611_core.c
279
mutex_lock(&st->lock);
drivers/iio/pressure/ms5611_core.c
281
*val = (int)st->temp_osr->rate;
drivers/iio/pressure/ms5611_core.c
283
*val = (int)st->pressure_osr->rate;
drivers/iio/pressure/ms5611_core.c
284
mutex_unlock(&st->lock);
drivers/iio/pressure/ms5611_core.c
309
struct ms5611_state *st = iio_priv(indio_dev);
drivers/iio/pressure/ms5611_core.c
327
mutex_lock(&st->lock);
drivers/iio/pressure/ms5611_core.c
330
st->temp_osr = osr;
drivers/iio/pressure/ms5611_core.c
332
st->pressure_osr = osr;
drivers/iio/pressure/ms5611_core.c
334
mutex_unlock(&st->lock);
drivers/iio/pressure/ms5611_core.c
402
struct ms5611_state *st = iio_priv(indio_dev);
drivers/iio/pressure/ms5611_core.c
404
mutex_init(&st->lock);
drivers/iio/pressure/ms5611_core.c
408
st->compensate_temp_and_pressure =
drivers/iio/pressure/ms5611_core.c
412
st->compensate_temp_and_pressure =
drivers/iio/pressure/ms5611_core.c
419
st->temp_osr =
drivers/iio/pressure/ms5611_core.c
421
st->pressure_osr =
drivers/iio/pressure/ms5611_core.c
85
struct ms5611_state *st = iio_priv(indio_dev);
drivers/iio/pressure/ms5611_core.c
88
ret = st->read_prom_word(st, i, &st->prom[i]);
drivers/iio/pressure/ms5611_core.c
96
if (!ms5611_prom_is_valid(st->prom, MS5611_PROM_WORDS_NB)) {
drivers/iio/pressure/ms5611_i2c.c
100
st->read_prom_word = ms5611_i2c_read_prom_word;
drivers/iio/pressure/ms5611_i2c.c
101
st->read_adc_temp_and_pressure = ms5611_i2c_read_adc_temp_and_pressure;
drivers/iio/pressure/ms5611_i2c.c
102
st->client = client;
drivers/iio/pressure/ms5611_i2c.c
22
static int ms5611_i2c_reset(struct ms5611_state *st)
drivers/iio/pressure/ms5611_i2c.c
24
return i2c_smbus_write_byte(st->client, MS5611_RESET);
drivers/iio/pressure/ms5611_i2c.c
27
static int ms5611_i2c_read_prom_word(struct ms5611_state *st, int index,
drivers/iio/pressure/ms5611_i2c.c
32
ret = i2c_smbus_read_word_swapped(st->client,
drivers/iio/pressure/ms5611_i2c.c
42
static int ms5611_i2c_read_adc(struct ms5611_state *st, s32 *val)
drivers/iio/pressure/ms5611_i2c.c
47
ret = i2c_smbus_read_i2c_block_data(st->client, MS5611_READ_ADC,
drivers/iio/pressure/ms5611_i2c.c
57
static int ms5611_i2c_read_adc_temp_and_pressure(struct ms5611_state *st,
drivers/iio/pressure/ms5611_i2c.c
61
const struct ms5611_osr *osr = st->temp_osr;
drivers/iio/pressure/ms5611_i2c.c
63
ret = i2c_smbus_write_byte(st->client, osr->cmd);
drivers/iio/pressure/ms5611_i2c.c
68
ret = ms5611_i2c_read_adc(st, temp);
drivers/iio/pressure/ms5611_i2c.c
72
osr = st->pressure_osr;
drivers/iio/pressure/ms5611_i2c.c
73
ret = i2c_smbus_write_byte(st->client, osr->cmd);
drivers/iio/pressure/ms5611_i2c.c
78
return ms5611_i2c_read_adc(st, pressure);
drivers/iio/pressure/ms5611_i2c.c
84
struct ms5611_state *st;
drivers/iio/pressure/ms5611_i2c.c
93
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st));
drivers/iio/pressure/ms5611_i2c.c
97
st = iio_priv(indio_dev);
drivers/iio/pressure/ms5611_i2c.c
99
st->reset = ms5611_i2c_reset;
drivers/iio/pressure/ms5611_spi.c
100
st->read_prom_word = ms5611_spi_read_prom_word;
drivers/iio/pressure/ms5611_spi.c
101
st->read_adc_temp_and_pressure = ms5611_spi_read_adc_temp_and_pressure;
drivers/iio/pressure/ms5611_spi.c
102
st->client = spi;
drivers/iio/pressure/ms5611_spi.c
17
static int ms5611_spi_reset(struct ms5611_state *st)
drivers/iio/pressure/ms5611_spi.c
21
return spi_write_then_read(st->client, &cmd, 1, NULL, 0);
drivers/iio/pressure/ms5611_spi.c
24
static int ms5611_spi_read_prom_word(struct ms5611_state *st, int index,
drivers/iio/pressure/ms5611_spi.c
29
ret = spi_w8r16be(st->client, MS5611_READ_PROM_WORD + (index << 1));
drivers/iio/pressure/ms5611_spi.c
38
static int ms5611_spi_read_adc(struct ms5611_state *st, s32 *val)
drivers/iio/pressure/ms5611_spi.c
43
ret = spi_write_then_read(st->client, buf, 1, buf, 3);
drivers/iio/pressure/ms5611_spi.c
52
static int ms5611_spi_read_adc_temp_and_pressure(struct ms5611_state *st,
drivers/iio/pressure/ms5611_spi.c
56
const struct ms5611_osr *osr = st->temp_osr;
drivers/iio/pressure/ms5611_spi.c
62
ret = spi_write_then_read(st->client, &osr->cmd, 1, NULL, 0);
drivers/iio/pressure/ms5611_spi.c
67
ret = ms5611_spi_read_adc(st, temp);
drivers/iio/pressure/ms5611_spi.c
71
osr = st->pressure_osr;
drivers/iio/pressure/ms5611_spi.c
72
ret = spi_write_then_read(st->client, &osr->cmd, 1, NULL, 0);
drivers/iio/pressure/ms5611_spi.c
77
return ms5611_spi_read_adc(st, pressure);
drivers/iio/pressure/ms5611_spi.c
83
struct ms5611_state *st;
drivers/iio/pressure/ms5611_spi.c
86
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/pressure/ms5611_spi.c
98
st = iio_priv(indio_dev);
drivers/iio/pressure/ms5611_spi.c
99
st->reset = ms5611_spi_reset;
drivers/iio/proximity/as3935.c
101
static int as3935_write(struct as3935_state *st,
drivers/iio/proximity/as3935.c
105
u8 *buf = st->buf;
drivers/iio/proximity/as3935.c
110
return spi_write(st->spi, buf, 2);
drivers/iio/proximity/as3935.c
117
struct as3935_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/proximity/as3935.c
120
ret = as3935_read(st, AS3935_AFE_GAIN, &val);
drivers/iio/proximity/as3935.c
132
struct as3935_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/proximity/as3935.c
143
as3935_write(st, AS3935_AFE_GAIN, val << 1);
drivers/iio/proximity/as3935.c
152
struct as3935_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/proximity/as3935.c
155
mutex_lock(&st->lock);
drivers/iio/proximity/as3935.c
156
ret = sysfs_emit(buf, "%d\n", !time_after(jiffies, st->noise_tripped + HZ));
drivers/iio/proximity/as3935.c
157
mutex_unlock(&st->lock);
drivers/iio/proximity/as3935.c
184
struct as3935_state *st = iio_priv(indio_dev);
drivers/iio/proximity/as3935.c
192
ret = as3935_read(st, AS3935_DATA, val);
drivers/iio/proximity/as3935.c
225
struct as3935_state *st = iio_priv(indio_dev);
drivers/iio/proximity/as3935.c
228
ret = as3935_read(st, AS3935_DATA, &val);
drivers/iio/proximity/as3935.c
232
st->scan.chan = val & AS3935_DATA_MASK;
drivers/iio/proximity/as3935.c
233
iio_push_to_buffers_with_ts(indio_dev, &st->scan, sizeof(st->scan),
drivers/iio/proximity/as3935.c
243
struct as3935_state *st;
drivers/iio/proximity/as3935.c
247
st = container_of(work, struct as3935_state, work.work);
drivers/iio/proximity/as3935.c
249
ret = as3935_read(st, AS3935_INT, &val);
drivers/iio/proximity/as3935.c
251
dev_warn(&st->spi->dev, "read error\n");
drivers/iio/proximity/as3935.c
259
iio_trigger_poll_nested(st->trig);
drivers/iio/proximity/as3935.c
263
mutex_lock(&st->lock);
drivers/iio/proximity/as3935.c
264
st->noise_tripped = jiffies;
drivers/iio/proximity/as3935.c
265
mutex_unlock(&st->lock);
drivers/iio/proximity/as3935.c
266
dev_warn(&st->spi->dev, "noise level is too high\n");
drivers/iio/proximity/as3935.c
274
struct as3935_state *st = iio_priv(indio_dev);
drivers/iio/proximity/as3935.c
281
schedule_delayed_work(&st->work, msecs_to_jiffies(3));
drivers/iio/proximity/as3935.c
286
static void calibrate_as3935(struct as3935_state *st)
drivers/iio/proximity/as3935.c
288
as3935_write(st, AS3935_DEFAULTS, 0x96);
drivers/iio/proximity/as3935.c
289
as3935_write(st, AS3935_CALIBRATE, 0x96);
drivers/iio/proximity/as3935.c
290
as3935_write(st, AS3935_TUNE_CAP,
drivers/iio/proximity/as3935.c
291
BIT(5) | (st->tune_cap / TUNE_CAP_DIV));
drivers/iio/proximity/as3935.c
294
as3935_write(st, AS3935_TUNE_CAP, (st->tune_cap / TUNE_CAP_DIV));
drivers/iio/proximity/as3935.c
295
as3935_write(st, AS3935_NFLWDTH, st->nflwdth_reg);
drivers/iio/proximity/as3935.c
301
struct as3935_state *st = iio_priv(indio_dev);
drivers/iio/proximity/as3935.c
304
mutex_lock(&st->lock);
drivers/iio/proximity/as3935.c
305
ret = as3935_read(st, AS3935_AFE_GAIN, &val);
drivers/iio/proximity/as3935.c
310
ret = as3935_write(st, AS3935_AFE_GAIN, val);
drivers/iio/proximity/as3935.c
313
mutex_unlock(&st->lock);
drivers/iio/proximity/as3935.c
321
struct as3935_state *st = iio_priv(indio_dev);
drivers/iio/proximity/as3935.c
324
mutex_lock(&st->lock);
drivers/iio/proximity/as3935.c
325
ret = as3935_read(st, AS3935_AFE_GAIN, &val);
drivers/iio/proximity/as3935.c
329
ret = as3935_write(st, AS3935_AFE_GAIN, val);
drivers/iio/proximity/as3935.c
331
calibrate_as3935(st);
drivers/iio/proximity/as3935.c
334
mutex_unlock(&st->lock);
drivers/iio/proximity/as3935.c
346
struct as3935_state *st;
drivers/iio/proximity/as3935.c
355
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/proximity/as3935.c
359
st = iio_priv(indio_dev);
drivers/iio/proximity/as3935.c
360
st->spi = spi;
drivers/iio/proximity/as3935.c
363
mutex_init(&st->lock);
drivers/iio/proximity/as3935.c
366
"ams,tuning-capacitor-pf", &st->tune_cap);
drivers/iio/proximity/as3935.c
368
st->tune_cap = 0;
drivers/iio/proximity/as3935.c
370
st->tune_cap);
drivers/iio/proximity/as3935.c
373
if (st->tune_cap > MAX_PF_CAP) {
drivers/iio/proximity/as3935.c
375
st->tune_cap);
drivers/iio/proximity/as3935.c
380
"ams,nflwdth", &st->nflwdth_reg);
drivers/iio/proximity/as3935.c
381
if (!ret && st->nflwdth_reg > AS3935_NFLWDTH_MASK) {
drivers/iio/proximity/as3935.c
383
st->nflwdth_reg);
drivers/iio/proximity/as3935.c
400
st->trig = trig;
drivers/iio/proximity/as3935.c
401
st->noise_tripped = jiffies - HZ;
drivers/iio/proximity/as3935.c
419
calibrate_as3935(st);
drivers/iio/proximity/as3935.c
421
ret = devm_delayed_work_autocancel(dev, &st->work, as3935_event_work);
drivers/iio/proximity/as3935.c
87
static int as3935_read(struct as3935_state *st, unsigned int reg, int *val)
drivers/iio/proximity/as3935.c
93
ret = spi_w8r8(st->spi, cmd);
drivers/iio/resolver/ad2s1200.c
100
mutex_unlock(&st->lock);
drivers/iio/resolver/ad2s1200.c
132
struct ad2s1200_state *st;
drivers/iio/resolver/ad2s1200.c
136
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/resolver/ad2s1200.c
141
st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1200.c
142
mutex_init(&st->lock);
drivers/iio/resolver/ad2s1200.c
143
st->sdev = spi;
drivers/iio/resolver/ad2s1200.c
145
st->sample = devm_gpiod_get(&spi->dev, "adi,sample", GPIOD_OUT_LOW);
drivers/iio/resolver/ad2s1200.c
146
if (IS_ERR(st->sample)) {
drivers/iio/resolver/ad2s1200.c
148
PTR_ERR(st->sample));
drivers/iio/resolver/ad2s1200.c
149
return PTR_ERR(st->sample);
drivers/iio/resolver/ad2s1200.c
152
st->rdvel = devm_gpiod_get(&spi->dev, "adi,rdvel", GPIOD_OUT_LOW);
drivers/iio/resolver/ad2s1200.c
153
if (IS_ERR(st->rdvel)) {
drivers/iio/resolver/ad2s1200.c
155
PTR_ERR(st->rdvel));
drivers/iio/resolver/ad2s1200.c
156
return PTR_ERR(st->rdvel);
drivers/iio/resolver/ad2s1200.c
51
struct ad2s1200_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1200.c
72
mutex_lock(&st->lock);
drivers/iio/resolver/ad2s1200.c
73
gpiod_set_value(st->sample, 0);
drivers/iio/resolver/ad2s1200.c
77
gpiod_set_value(st->sample, 1);
drivers/iio/resolver/ad2s1200.c
78
gpiod_set_value(st->rdvel, !!(chan->type == IIO_ANGL));
drivers/iio/resolver/ad2s1200.c
80
ret = spi_read(st->sdev, &st->rx, 2);
drivers/iio/resolver/ad2s1200.c
82
mutex_unlock(&st->lock);
drivers/iio/resolver/ad2s1200.c
88
*val = be16_to_cpup(&st->rx) >> 4;
drivers/iio/resolver/ad2s1200.c
91
*val = sign_extend32(be16_to_cpup(&st->rx) >> 4, 11);
drivers/iio/resolver/ad2s1200.c
94
mutex_unlock(&st->lock);
drivers/iio/resolver/ad2s1210.c
1012
struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/resolver/ad2s1210.c
1017
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
1018
ret = regmap_read(st->regmap, iattr->address, &value);
drivers/iio/resolver/ad2s1210.c
1029
struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/resolver/ad2s1210.c
1038
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
1039
ret = regmap_write(st->regmap, iattr->address,
drivers/iio/resolver/ad2s1210.c
1052
struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/resolver/ad2s1210.c
1053
int step = ad2s1210_lot_threshold_urad_per_lsb[st->resolution];
drivers/iio/resolver/ad2s1210.c
1063
struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev));
drivers/iio/resolver/ad2s1210.c
1064
int step = ad2s1210_lot_threshold_urad_per_lsb[st->resolution];
drivers/iio/resolver/ad2s1210.c
1109
static int ad2s1210_initial(struct ad2s1210_state *st)
drivers/iio/resolver/ad2s1210.c
1114
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
1120
data |= FIELD_PREP(AD2S1210_SET_RES, st->resolution);
drivers/iio/resolver/ad2s1210.c
1122
ret = regmap_write(st->regmap, AD2S1210_REG_CONTROL, data);
drivers/iio/resolver/ad2s1210.c
1126
return ad2s1210_reinit_excitation_frequency(st, AD2S1210_DEF_EXCIT);
drivers/iio/resolver/ad2s1210.c
1164
struct ad2s1210_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
1170
return ad2s1210_get_lot_high_threshold(st, val, val2);
drivers/iio/resolver/ad2s1210.c
1172
return ad2s1210_get_lot_low_threshold(st, val, val2);
drivers/iio/resolver/ad2s1210.c
1180
return ad2s1210_get_voltage_threshold(st,
drivers/iio/resolver/ad2s1210.c
1183
return ad2s1210_get_voltage_threshold(st,
drivers/iio/resolver/ad2s1210.c
1186
return ad2s1210_get_voltage_threshold(st,
drivers/iio/resolver/ad2s1210.c
1190
return ad2s1210_get_phase_lock_range(st, val, val2);
drivers/iio/resolver/ad2s1210.c
1203
struct ad2s1210_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
1209
return ad2s1210_set_lot_high_threshold(st, val, val2);
drivers/iio/resolver/ad2s1210.c
1211
return ad2s1210_set_lot_low_threshold(st, val, val2);
drivers/iio/resolver/ad2s1210.c
1219
return ad2s1210_set_voltage_threshold(st,
drivers/iio/resolver/ad2s1210.c
1222
return ad2s1210_set_voltage_threshold(st,
drivers/iio/resolver/ad2s1210.c
1225
return ad2s1210_set_voltage_threshold(st,
drivers/iio/resolver/ad2s1210.c
1229
return ad2s1210_set_phase_lock_range(st, val, val2);
drivers/iio/resolver/ad2s1210.c
1269
struct ad2s1210_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
1271
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
1274
return regmap_read(st->regmap, reg, readval);
drivers/iio/resolver/ad2s1210.c
1276
return regmap_write(st->regmap, reg, writeval);
drivers/iio/resolver/ad2s1210.c
1283
struct ad2s1210_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
1287
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
1289
memset(&st->scan, 0, sizeof(st->scan));
drivers/iio/resolver/ad2s1210.c
1290
ad2s1210_toggle_sample_line(st);
drivers/iio/resolver/ad2s1210.c
1293
if (st->fixed_mode == MOD_CONFIG) {
drivers/iio/resolver/ad2s1210.c
1294
ret = regmap_bulk_read(st->regmap,
drivers/iio/resolver/ad2s1210.c
1296
&st->sample.raw, 2);
drivers/iio/resolver/ad2s1210.c
1300
ret = ad2s1210_set_mode(st, MOD_POS);
drivers/iio/resolver/ad2s1210.c
1304
ret = spi_read(st->sdev, &st->sample, 3);
drivers/iio/resolver/ad2s1210.c
1309
memcpy(&st->scan.chan[chan++], &st->sample.raw, 2);
drivers/iio/resolver/ad2s1210.c
1313
if (st->fixed_mode == MOD_CONFIG) {
drivers/iio/resolver/ad2s1210.c
1314
ret = regmap_bulk_read(st->regmap,
drivers/iio/resolver/ad2s1210.c
1316
&st->sample.raw, 2);
drivers/iio/resolver/ad2s1210.c
1320
ret = ad2s1210_set_mode(st, MOD_VEL);
drivers/iio/resolver/ad2s1210.c
1324
ret = spi_read(st->sdev, &st->sample, 3);
drivers/iio/resolver/ad2s1210.c
1329
memcpy(&st->scan.chan[chan++], &st->sample.raw, 2);
drivers/iio/resolver/ad2s1210.c
1332
if (st->fixed_mode == MOD_CONFIG) {
drivers/iio/resolver/ad2s1210.c
1335
ret = regmap_read(st->regmap, AD2S1210_REG_FAULT, ®_val);
drivers/iio/resolver/ad2s1210.c
1339
st->sample.fault = reg_val;
drivers/iio/resolver/ad2s1210.c
1342
ad2s1210_push_events(indio_dev, st->sample.fault, pf->timestamp);
drivers/iio/resolver/ad2s1210.c
1343
iio_push_to_buffers_with_ts(indio_dev, &st->scan, sizeof(st->scan),
drivers/iio/resolver/ad2s1210.c
1364
static int ad2s1210_setup_properties(struct ad2s1210_state *st)
drivers/iio/resolver/ad2s1210.c
1366
struct device *dev = &st->sdev->dev;
drivers/iio/resolver/ad2s1210.c
1373
st->fixed_mode = -1;
drivers/iio/resolver/ad2s1210.c
1382
st->fixed_mode = MOD_CONFIG;
drivers/iio/resolver/ad2s1210.c
1394
st->resolution = (val - 10) >> 1;
drivers/iio/resolver/ad2s1210.c
1401
st->hysteresis_available[0] = 0;
drivers/iio/resolver/ad2s1210.c
1402
st->hysteresis_available[1] = 1 << (2 * (AD2S1210_RES_16 -
drivers/iio/resolver/ad2s1210.c
1403
st->resolution));
drivers/iio/resolver/ad2s1210.c
1408
static int ad2s1210_setup_clocks(struct ad2s1210_state *st)
drivers/iio/resolver/ad2s1210.c
1410
struct device *dev = &st->sdev->dev;
drivers/iio/resolver/ad2s1210.c
1417
st->clkin_hz = clk_get_rate(clk);
drivers/iio/resolver/ad2s1210.c
1418
if (st->clkin_hz < AD2S1210_MIN_CLKIN || st->clkin_hz > AD2S1210_MAX_CLKIN)
drivers/iio/resolver/ad2s1210.c
1421
st->clkin_hz);
drivers/iio/resolver/ad2s1210.c
1426
static int ad2s1210_setup_gpios(struct ad2s1210_state *st)
drivers/iio/resolver/ad2s1210.c
1428
struct device *dev = &st->sdev->dev;
drivers/iio/resolver/ad2s1210.c
1435
st->sample_gpio = devm_gpiod_get(dev, "sample", GPIOD_OUT_LOW);
drivers/iio/resolver/ad2s1210.c
1436
if (IS_ERR(st->sample_gpio))
drivers/iio/resolver/ad2s1210.c
1437
return dev_err_probe(dev, PTR_ERR(st->sample_gpio),
drivers/iio/resolver/ad2s1210.c
1441
st->mode_gpios = devm_gpiod_get_array_optional(dev, "mode",
drivers/iio/resolver/ad2s1210.c
1443
if (IS_ERR(st->mode_gpios))
drivers/iio/resolver/ad2s1210.c
1444
return dev_err_probe(dev, PTR_ERR(st->mode_gpios),
drivers/iio/resolver/ad2s1210.c
1447
if (!st->mode_gpios && st->fixed_mode == -1)
drivers/iio/resolver/ad2s1210.c
1451
if (st->mode_gpios && st->fixed_mode != -1)
drivers/iio/resolver/ad2s1210.c
1455
if (st->mode_gpios && st->mode_gpios->ndescs != 2)
drivers/iio/resolver/ad2s1210.c
1475
bitmap_write(bitmap, st->resolution, 0, 2);
drivers/iio/resolver/ad2s1210.c
1521
static int ad2s1210_setup_regmap(struct ad2s1210_state *st)
drivers/iio/resolver/ad2s1210.c
1523
struct device *dev = &st->sdev->dev;
drivers/iio/resolver/ad2s1210.c
1535
st->regmap = devm_regmap_init(dev, NULL, st, &config);
drivers/iio/resolver/ad2s1210.c
1536
if (IS_ERR(st->regmap))
drivers/iio/resolver/ad2s1210.c
1537
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/resolver/ad2s1210.c
1546
struct ad2s1210_state *st;
drivers/iio/resolver/ad2s1210.c
1549
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/resolver/ad2s1210.c
1552
st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
1554
mutex_init(&st->lock);
drivers/iio/resolver/ad2s1210.c
1555
st->sdev = spi;
drivers/iio/resolver/ad2s1210.c
1557
ret = ad2s1210_setup_properties(st);
drivers/iio/resolver/ad2s1210.c
1561
ret = ad2s1210_setup_clocks(st);
drivers/iio/resolver/ad2s1210.c
1565
ret = ad2s1210_setup_gpios(st);
drivers/iio/resolver/ad2s1210.c
1569
ret = ad2s1210_setup_regmap(st);
drivers/iio/resolver/ad2s1210.c
1573
ret = ad2s1210_initial(st);
drivers/iio/resolver/ad2s1210.c
176
static int ad2s1210_set_mode(struct ad2s1210_state *st, enum ad2s1210_mode mode)
drivers/iio/resolver/ad2s1210.c
178
struct gpio_descs *gpios = st->mode_gpios;
drivers/iio/resolver/ad2s1210.c
182
return mode == st->fixed_mode ? 0 : -EOPNOTSUPP;
drivers/iio/resolver/ad2s1210.c
198
struct ad2s1210_state *st = context;
drivers/iio/resolver/ad2s1210.c
202
.rx_buf = &st->rx[0],
drivers/iio/resolver/ad2s1210.c
203
.tx_buf = &st->tx[0],
drivers/iio/resolver/ad2s1210.c
207
.rx_buf = &st->rx[1],
drivers/iio/resolver/ad2s1210.c
208
.tx_buf = &st->tx[1],
drivers/iio/resolver/ad2s1210.c
217
st->tx[0] = reg;
drivers/iio/resolver/ad2s1210.c
218
st->tx[1] = val;
drivers/iio/resolver/ad2s1210.c
220
ret = ad2s1210_set_mode(st, MOD_CONFIG);
drivers/iio/resolver/ad2s1210.c
224
ret = spi_sync_transfer(st->sdev, xfers, ARRAY_SIZE(xfers));
drivers/iio/resolver/ad2s1210.c
230
st->prev_fault_flags = 0;
drivers/iio/resolver/ad2s1210.c
244
struct ad2s1210_state *st = context;
drivers/iio/resolver/ad2s1210.c
248
.rx_buf = &st->rx[0],
drivers/iio/resolver/ad2s1210.c
249
.tx_buf = &st->tx[0],
drivers/iio/resolver/ad2s1210.c
253
.rx_buf = &st->rx[1],
drivers/iio/resolver/ad2s1210.c
254
.tx_buf = &st->tx[1],
drivers/iio/resolver/ad2s1210.c
259
ret = ad2s1210_set_mode(st, MOD_CONFIG);
drivers/iio/resolver/ad2s1210.c
263
st->tx[0] = reg;
drivers/iio/resolver/ad2s1210.c
269
st->tx[1] = AD2S1210_REG_CONTROL;
drivers/iio/resolver/ad2s1210.c
271
ret = spi_sync_transfer(st->sdev, xfers, ARRAY_SIZE(xfers));
drivers/iio/resolver/ad2s1210.c
277
st->prev_fault_flags = 0;
drivers/iio/resolver/ad2s1210.c
285
&& st->rx[1] & AD2S1210_ADDRESS_DATA)
drivers/iio/resolver/ad2s1210.c
288
*val = st->rx[1];
drivers/iio/resolver/ad2s1210.c
299
static void ad2s1210_toggle_sample_line(struct ad2s1210_state *st)
drivers/iio/resolver/ad2s1210.c
307
gpiod_set_value(st->sample_gpio, 1);
drivers/iio/resolver/ad2s1210.c
309
gpiod_set_value(st->sample_gpio, 0);
drivers/iio/resolver/ad2s1210.c
318
static int ad2s1210_reinit_excitation_frequency(struct ad2s1210_state *st,
drivers/iio/resolver/ad2s1210.c
327
fcw = fexcit * (1 << 15) / st->clkin_hz;
drivers/iio/resolver/ad2s1210.c
331
ret = regmap_write(st->regmap, AD2S1210_REG_EXCIT_FREQ, fcw);
drivers/iio/resolver/ad2s1210.c
339
ret = regmap_write(st->regmap, AD2S1210_REG_SOFT_RESET, 0);
drivers/iio/resolver/ad2s1210.c
349
msleep(track_time_ms[st->resolution] * 8192000 / st->clkin_hz);
drivers/iio/resolver/ad2s1210.c
352
ret = regmap_read(st->regmap, AD2S1210_REG_FAULT, &ignored);
drivers/iio/resolver/ad2s1210.c
357
ad2s1210_toggle_sample_line(st);
drivers/iio/resolver/ad2s1210.c
365
struct ad2s1210_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
368
if (FAULT_ONESHOT(AD2S1210_FAULT_CLIP, flags, st->prev_fault_flags)) {
drivers/iio/resolver/ad2s1210.c
386
if (FAULT_ONESHOT(AD2S1210_FAULT_LOS, flags, st->prev_fault_flags))
drivers/iio/resolver/ad2s1210.c
394
if (FAULT_ONESHOT(AD2S1210_FAULT_DOS_OVR, flags, st->prev_fault_flags))
drivers/iio/resolver/ad2s1210.c
402
if (FAULT_ONESHOT(AD2S1210_FAULT_DOS_MIS, flags, st->prev_fault_flags))
drivers/iio/resolver/ad2s1210.c
410
if (FAULT_ONESHOT(AD2S1210_FAULT_LOT, flags, st->prev_fault_flags))
drivers/iio/resolver/ad2s1210.c
418
if (FAULT_ONESHOT(AD2S1210_FAULT_VELOCITY, flags, st->prev_fault_flags))
drivers/iio/resolver/ad2s1210.c
426
if (FAULT_ONESHOT(AD2S1210_FAULT_PHASE, flags, st->prev_fault_flags))
drivers/iio/resolver/ad2s1210.c
435
st->prev_fault_flags))
drivers/iio/resolver/ad2s1210.c
443
st->prev_fault_flags = flags;
drivers/iio/resolver/ad2s1210.c
450
struct ad2s1210_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
454
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
456
ad2s1210_toggle_sample_line(st);
drivers/iio/resolver/ad2s1210.c
459
if (st->fixed_mode == MOD_CONFIG) {
drivers/iio/resolver/ad2s1210.c
464
ret = regmap_bulk_read(st->regmap,
drivers/iio/resolver/ad2s1210.c
466
&st->sample.raw, 2);
drivers/iio/resolver/ad2s1210.c
472
ret = regmap_bulk_read(st->regmap,
drivers/iio/resolver/ad2s1210.c
474
&st->sample.raw, 2);
drivers/iio/resolver/ad2s1210.c
483
ret = regmap_read(st->regmap, AD2S1210_REG_FAULT, ®_val);
drivers/iio/resolver/ad2s1210.c
487
st->sample.fault = reg_val;
drivers/iio/resolver/ad2s1210.c
491
ret = ad2s1210_set_mode(st, MOD_POS);
drivers/iio/resolver/ad2s1210.c
494
ret = ad2s1210_set_mode(st, MOD_VEL);
drivers/iio/resolver/ad2s1210.c
502
ret = spi_read(st->sdev, &st->sample, 3);
drivers/iio/resolver/ad2s1210.c
509
*val = be16_to_cpu(st->sample.raw);
drivers/iio/resolver/ad2s1210.c
513
*val = (s16)be16_to_cpu(st->sample.raw);
drivers/iio/resolver/ad2s1210.c
520
ad2s1210_push_events(indio_dev, st->sample.fault, timestamp);
drivers/iio/resolver/ad2s1210.c
525
static int ad2s1210_get_hysteresis(struct ad2s1210_state *st, int *val)
drivers/iio/resolver/ad2s1210.c
529
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
530
ret = regmap_test_bits(st->regmap, AD2S1210_REG_CONTROL,
drivers/iio/resolver/ad2s1210.c
535
*val = ret << (2 * (AD2S1210_RES_16 - st->resolution));
drivers/iio/resolver/ad2s1210.c
539
static int ad2s1210_set_hysteresis(struct ad2s1210_state *st, int val)
drivers/iio/resolver/ad2s1210.c
541
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
542
return regmap_update_bits(st->regmap, AD2S1210_REG_CONTROL,
drivers/iio/resolver/ad2s1210.c
547
static int ad2s1210_get_phase_lock_range(struct ad2s1210_state *st,
drivers/iio/resolver/ad2s1210.c
552
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
553
ret = regmap_test_bits(st->regmap, AD2S1210_REG_CONTROL,
drivers/iio/resolver/ad2s1210.c
571
static int ad2s1210_set_phase_lock_range(struct ad2s1210_state *st,
drivers/iio/resolver/ad2s1210.c
585
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
586
return regmap_update_bits(st->regmap, AD2S1210_REG_CONTROL,
drivers/iio/resolver/ad2s1210.c
599
static int ad2s1210_get_voltage_threshold(struct ad2s1210_state *st,
drivers/iio/resolver/ad2s1210.c
605
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
606
ret = regmap_read(st->regmap, reg, ®_val);
drivers/iio/resolver/ad2s1210.c
614
static int ad2s1210_set_voltage_threshold(struct ad2s1210_state *st,
drivers/iio/resolver/ad2s1210.c
621
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
622
return regmap_write(st->regmap, reg, reg_val);
drivers/iio/resolver/ad2s1210.c
625
static int ad2s1210_get_lot_high_threshold(struct ad2s1210_state *st,
drivers/iio/resolver/ad2s1210.c
631
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
632
ret = regmap_read(st->regmap, AD2S1210_REG_LOT_HIGH_THRD, ®_val);
drivers/iio/resolver/ad2s1210.c
637
*val2 = reg_val * ad2s1210_lot_threshold_urad_per_lsb[st->resolution];
drivers/iio/resolver/ad2s1210.c
641
static int ad2s1210_set_lot_high_threshold(struct ad2s1210_state *st,
drivers/iio/resolver/ad2s1210.c
651
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
656
ret = regmap_read(st->regmap, AD2S1210_REG_LOT_HIGH_THRD, &high_reg_val);
drivers/iio/resolver/ad2s1210.c
660
ret = regmap_read(st->regmap, AD2S1210_REG_LOT_LOW_THRD, &low_reg_val);
drivers/iio/resolver/ad2s1210.c
665
high_reg_val = val2 / ad2s1210_lot_threshold_urad_per_lsb[st->resolution];
drivers/iio/resolver/ad2s1210.c
668
ret = regmap_write(st->regmap, AD2S1210_REG_LOT_HIGH_THRD, high_reg_val);
drivers/iio/resolver/ad2s1210.c
672
return regmap_write(st->regmap, AD2S1210_REG_LOT_LOW_THRD, low_reg_val);
drivers/iio/resolver/ad2s1210.c
675
static int ad2s1210_get_lot_low_threshold(struct ad2s1210_state *st,
drivers/iio/resolver/ad2s1210.c
681
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
683
ret = regmap_read(st->regmap, AD2S1210_REG_LOT_HIGH_THRD, &high_reg_val);
drivers/iio/resolver/ad2s1210.c
687
ret = regmap_read(st->regmap, AD2S1210_REG_LOT_LOW_THRD, &low_reg_val);
drivers/iio/resolver/ad2s1210.c
694
ad2s1210_lot_threshold_urad_per_lsb[st->resolution];
drivers/iio/resolver/ad2s1210.c
698
static int ad2s1210_set_lot_low_threshold(struct ad2s1210_state *st,
drivers/iio/resolver/ad2s1210.c
708
hysteresis = val2 / ad2s1210_lot_threshold_urad_per_lsb[st->resolution];
drivers/iio/resolver/ad2s1210.c
710
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
712
ret = regmap_read(st->regmap, AD2S1210_REG_LOT_HIGH_THRD, ®_val);
drivers/iio/resolver/ad2s1210.c
716
return regmap_write(st->regmap, AD2S1210_REG_LOT_LOW_THRD,
drivers/iio/resolver/ad2s1210.c
720
static int ad2s1210_get_excitation_frequency(struct ad2s1210_state *st, int *val)
drivers/iio/resolver/ad2s1210.c
725
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
727
ret = regmap_read(st->regmap, AD2S1210_REG_EXCIT_FREQ, ®_val);
drivers/iio/resolver/ad2s1210.c
731
*val = reg_val * st->clkin_hz / (1 << 15);
drivers/iio/resolver/ad2s1210.c
735
static int ad2s1210_set_excitation_frequency(struct ad2s1210_state *st, int val)
drivers/iio/resolver/ad2s1210.c
740
guard(mutex)(&st->lock);
drivers/iio/resolver/ad2s1210.c
741
return ad2s1210_reinit_excitation_frequency(st, val);
drivers/iio/resolver/ad2s1210.c
757
struct ad2s1210_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
770
*val = st->clkin_hz;
drivers/iio/resolver/ad2s1210.c
771
*val2 = ad2s1210_velocity_scale[st->resolution];
drivers/iio/resolver/ad2s1210.c
779
return ad2s1210_get_excitation_frequency(st, val);
drivers/iio/resolver/ad2s1210.c
786
return ad2s1210_get_hysteresis(st, val);
drivers/iio/resolver/ad2s1210.c
806
struct ad2s1210_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
821
*vals = st->hysteresis_available;
drivers/iio/resolver/ad2s1210.c
823
*length = ARRAY_SIZE(st->hysteresis_available);
drivers/iio/resolver/ad2s1210.c
837
struct ad2s1210_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s1210.c
843
return ad2s1210_set_excitation_frequency(st, val);
drivers/iio/resolver/ad2s1210.c
850
return ad2s1210_set_hysteresis(st, val);
drivers/iio/resolver/ad2s90.c
37
struct ad2s90_state *st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s90.c
49
mutex_lock(&st->lock);
drivers/iio/resolver/ad2s90.c
50
ret = spi_read(st->sdev, st->rx, 2);
drivers/iio/resolver/ad2s90.c
52
mutex_unlock(&st->lock);
drivers/iio/resolver/ad2s90.c
55
*val = (((u16)(st->rx[0])) << 4) | ((st->rx[1] & 0xF0) >> 4);
drivers/iio/resolver/ad2s90.c
57
mutex_unlock(&st->lock);
drivers/iio/resolver/ad2s90.c
81
struct ad2s90_state *st;
drivers/iio/resolver/ad2s90.c
89
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/iio/resolver/ad2s90.c
92
st = iio_priv(indio_dev);
drivers/iio/resolver/ad2s90.c
95
mutex_init(&st->lock);
drivers/iio/resolver/ad2s90.c
96
st->sdev = spi;
drivers/iio/temperature/hid-sensor-temperature.c
162
struct temperature_state *st)
drivers/iio/temperature/hid-sensor-temperature.c
169
&st->temperature_attr);
drivers/iio/temperature/hid-sensor-temperature.c
174
st->temperature_attr.size);
drivers/iio/temperature/hid-sensor-temperature.c
176
st->scale_precision = hid_sensor_format_scale(
drivers/iio/temperature/hid-sensor-temperature.c
178
&st->temperature_attr,
drivers/iio/temperature/hid-sensor-temperature.c
179
&st->scale_pre_decml, &st->scale_post_decml);
drivers/iio/temperature/ltc2983.c
1015
ltc2983_thermistor_new(const struct fwnode_handle *child, struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
1019
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1068
thermistor->custom = __ltc2983_custom_sensor_new(st, child,
drivers/iio/temperature/ltc2983.c
1147
ltc2983_copper_trace_new(const struct fwnode_handle *child, struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
1150
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1186
ct->custom = __ltc2983_custom_sensor_new(st, child, "adi,custom-copper-trace",
drivers/iio/temperature/ltc2983.c
1245
ltc2983_leak_detector_new(const struct fwnode_handle *child, struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
1248
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1277
ld->custom = __ltc2983_custom_sensor_new(st, child, "adi,custom-leak-detector",
drivers/iio/temperature/ltc2983.c
1336
ltc2983_diode_new(const struct fwnode_handle *child, const struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
1339
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1409
struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
1412
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1446
struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
1449
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1472
struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
1475
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1490
temp->custom = __ltc2983_custom_sensor_new(st, child, "adi,custom-temp",
drivers/iio/temperature/ltc2983.c
1502
static int ltc2983_chan_read(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
1506
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1515
reinit_completion(&st->completion);
drivers/iio/temperature/ltc2983.c
1517
ret = regmap_write(st->regmap, LTC2983_STATUS_REG, start_conversion);
drivers/iio/temperature/ltc2983.c
1526
time = wait_for_completion_timeout(&st->completion,
drivers/iio/temperature/ltc2983.c
1534
ret = regmap_bulk_read(st->regmap, LTC2983_RESULT_ADDR(sensor->chan, base_reg),
drivers/iio/temperature/ltc2983.c
1535
&st->temp, sizeof(st->temp));
drivers/iio/temperature/ltc2983.c
1539
*val = __be32_to_cpu(st->temp);
drivers/iio/temperature/ltc2983.c
1556
ret = sensor->fault_handler(st, *val);
drivers/iio/temperature/ltc2983.c
1568
struct ltc2983_data *st = iio_priv(indio_dev);
drivers/iio/temperature/ltc2983.c
1569
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1573
if (chan->address >= st->num_channels) {
drivers/iio/temperature/ltc2983.c
1580
mutex_lock(&st->lock);
drivers/iio/temperature/ltc2983.c
1583
ret = ltc2983_chan_read(st, st->sensors[chan->address],
drivers/iio/temperature/ltc2983.c
1587
ret = ltc2983_chan_read(st, st->sensors[chan->address],
drivers/iio/temperature/ltc2983.c
1591
mutex_unlock(&st->lock);
drivers/iio/temperature/ltc2983.c
1627
struct ltc2983_data *st = iio_priv(indio_dev);
drivers/iio/temperature/ltc2983.c
1630
return regmap_read(st->regmap, reg, readval);
drivers/iio/temperature/ltc2983.c
1632
return regmap_write(st->regmap, reg, writeval);
drivers/iio/temperature/ltc2983.c
1637
struct ltc2983_data *st = data;
drivers/iio/temperature/ltc2983.c
1639
complete(&st->completion);
drivers/iio/temperature/ltc2983.c
1655
static int ltc2983_parse_fw(struct ltc2983_data *st)
drivers/iio/temperature/ltc2983.c
1657
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1660
device_property_read_u32(dev, "adi,mux-delay-config-us", &st->mux_delay_config);
drivers/iio/temperature/ltc2983.c
1662
device_property_read_u32(dev, "adi,filter-notch-freq", &st->filter_notch_freq);
drivers/iio/temperature/ltc2983.c
1664
st->num_channels = device_get_child_node_count(dev);
drivers/iio/temperature/ltc2983.c
1665
if (!st->num_channels)
drivers/iio/temperature/ltc2983.c
1669
st->sensors = devm_kcalloc(dev, st->num_channels, sizeof(*st->sensors),
drivers/iio/temperature/ltc2983.c
1671
if (!st->sensors)
drivers/iio/temperature/ltc2983.c
1674
st->iio_channels = 0;
drivers/iio/temperature/ltc2983.c
1685
sensor.chan > st->info->max_channels_nr)
drivers/iio/temperature/ltc2983.c
1690
st->info->max_channels_nr);
drivers/iio/temperature/ltc2983.c
1703
!(st->info->supported_sensors & BIT_ULL(sensor.type)))
drivers/iio/temperature/ltc2983.c
1706
sensor.type, st->info->name);
drivers/iio/temperature/ltc2983.c
1713
st->sensors[chan] = ltc2983_thermocouple_new(child, st,
drivers/iio/temperature/ltc2983.c
1717
st->sensors[chan] = ltc2983_rtd_new(child, st, &sensor);
drivers/iio/temperature/ltc2983.c
1720
st->sensors[chan] = ltc2983_thermistor_new(child, st,
drivers/iio/temperature/ltc2983.c
1723
st->sensors[chan] = ltc2983_diode_new(child, st,
drivers/iio/temperature/ltc2983.c
1726
st->sensors[chan] = ltc2983_r_sense_new(child, st,
drivers/iio/temperature/ltc2983.c
1729
st->sensors[chan] = ltc2983_adc_new(child, st, &sensor);
drivers/iio/temperature/ltc2983.c
1731
st->sensors[chan] = ltc2983_temp_new(child, st, &sensor);
drivers/iio/temperature/ltc2983.c
1733
st->sensors[chan] = ltc2983_copper_trace_new(child, st, &sensor);
drivers/iio/temperature/ltc2983.c
1735
st->sensors[chan] = ltc2983_leak_detector_new(child, st, &sensor);
drivers/iio/temperature/ltc2983.c
1742
if (IS_ERR(st->sensors[chan]))
drivers/iio/temperature/ltc2983.c
1743
return dev_err_probe(dev, PTR_ERR(st->sensors[chan]),
drivers/iio/temperature/ltc2983.c
1747
st->sensors[chan]->chan = sensor.chan;
drivers/iio/temperature/ltc2983.c
1748
st->sensors[chan]->type = sensor.type;
drivers/iio/temperature/ltc2983.c
1754
if (!st->sensors[chan]->n_iio_chan) {
drivers/iio/temperature/ltc2983.c
1756
st->sensors[chan]->n_iio_chan = 1;
drivers/iio/temperature/ltc2983.c
1758
st->iio_channels += st->sensors[chan]->n_iio_chan;
drivers/iio/temperature/ltc2983.c
1767
static int ltc2983_eeprom_cmd(struct ltc2983_data *st, unsigned int cmd,
drivers/iio/temperature/ltc2983.c
1771
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1776
ret = regmap_bulk_write(st->regmap, LTC2983_EEPROM_KEY_REG,
drivers/iio/temperature/ltc2983.c
1777
&st->eeprom_key, sizeof(st->eeprom_key));
drivers/iio/temperature/ltc2983.c
1781
reinit_completion(&st->completion);
drivers/iio/temperature/ltc2983.c
1783
ret = regmap_write(st->regmap, LTC2983_STATUS_REG,
drivers/iio/temperature/ltc2983.c
1788
time = wait_for_completion_timeout(&st->completion,
drivers/iio/temperature/ltc2983.c
1794
ret = regmap_read(st->regmap, status_reg, &val);
drivers/iio/temperature/ltc2983.c
1805
static int ltc2983_setup(struct ltc2983_data *st, bool assign_iio)
drivers/iio/temperature/ltc2983.c
1807
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
1813
ret = regmap_read_poll_timeout(st->regmap, LTC2983_STATUS_REG, status,
drivers/iio/temperature/ltc2983.c
1819
ret = regmap_update_bits(st->regmap, LTC2983_GLOBAL_CONFIG_REG,
drivers/iio/temperature/ltc2983.c
1821
LTC2983_NOTCH_FREQ(st->filter_notch_freq));
drivers/iio/temperature/ltc2983.c
1825
ret = regmap_write(st->regmap, LTC2983_MUX_CONFIG_REG,
drivers/iio/temperature/ltc2983.c
1826
st->mux_delay_config);
drivers/iio/temperature/ltc2983.c
1830
if (st->info->has_eeprom && !assign_iio) {
drivers/iio/temperature/ltc2983.c
1831
ret = ltc2983_eeprom_cmd(st, LTC2983_EEPROM_READ_CMD,
drivers/iio/temperature/ltc2983.c
1839
for (chan = 0; chan < st->num_channels; chan++) {
drivers/iio/temperature/ltc2983.c
1842
ret = st->sensors[chan]->assign_chan(st, st->sensors[chan]);
drivers/iio/temperature/ltc2983.c
1851
if (st->sensors[chan]->type == LTC2983_SENSOR_SENSE_RESISTOR ||
drivers/iio/temperature/ltc2983.c
1856
switch (st->sensors[chan]->type) {
drivers/iio/temperature/ltc2983.c
1858
if (st->sensors[chan]->n_iio_chan == 1) {
drivers/iio/temperature/ltc2983.c
1860
st->iio_chan[iio_idx++] =
drivers/iio/temperature/ltc2983.c
1863
st->iio_chan[iio_idx++] =
drivers/iio/temperature/ltc2983.c
1865
st->iio_chan[iio_idx++] =
drivers/iio/temperature/ltc2983.c
1870
st->iio_chan[iio_idx++] =
drivers/iio/temperature/ltc2983.c
1872
st->iio_chan[iio_idx++] =
drivers/iio/temperature/ltc2983.c
1889
st->iio_chan[iio_idx++] = LTC2983_CHAN(chan_type, (*iio_chan)++,
drivers/iio/temperature/ltc2983.c
1940
struct ltc2983_data *st;
drivers/iio/temperature/ltc2983.c
1945
indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
drivers/iio/temperature/ltc2983.c
1949
st = iio_priv(indio_dev);
drivers/iio/temperature/ltc2983.c
1951
st->info = spi_get_device_match_data(spi);
drivers/iio/temperature/ltc2983.c
1952
if (!st->info)
drivers/iio/temperature/ltc2983.c
1955
st->regmap = devm_regmap_init_spi(spi, <c2983_regmap_config);
drivers/iio/temperature/ltc2983.c
1956
if (IS_ERR(st->regmap))
drivers/iio/temperature/ltc2983.c
1957
return dev_err_probe(dev, PTR_ERR(st->regmap),
drivers/iio/temperature/ltc2983.c
1960
mutex_init(&st->lock);
drivers/iio/temperature/ltc2983.c
1961
init_completion(&st->completion);
drivers/iio/temperature/ltc2983.c
1962
st->spi = spi;
drivers/iio/temperature/ltc2983.c
1963
st->eeprom_key = cpu_to_be32(LTC2983_EEPROM_KEY);
drivers/iio/temperature/ltc2983.c
1964
spi_set_drvdata(spi, st);
drivers/iio/temperature/ltc2983.c
1966
ret = ltc2983_parse_fw(st);
drivers/iio/temperature/ltc2983.c
1984
st->iio_chan = devm_kzalloc(dev,
drivers/iio/temperature/ltc2983.c
1985
st->iio_channels * sizeof(*st->iio_chan),
drivers/iio/temperature/ltc2983.c
1987
if (!st->iio_chan)
drivers/iio/temperature/ltc2983.c
1990
ret = ltc2983_setup(st, true);
drivers/iio/temperature/ltc2983.c
1995
IRQF_TRIGGER_RISING, st->info->name, st);
drivers/iio/temperature/ltc2983.c
1999
if (st->info->has_eeprom) {
drivers/iio/temperature/ltc2983.c
2000
ret = ltc2983_eeprom_cmd(st, LTC2983_EEPROM_WRITE_CMD,
drivers/iio/temperature/ltc2983.c
2008
indio_dev->name = st->info->name;
drivers/iio/temperature/ltc2983.c
2009
indio_dev->num_channels = st->iio_channels;
drivers/iio/temperature/ltc2983.c
2010
indio_dev->channels = st->iio_chan;
drivers/iio/temperature/ltc2983.c
2019
struct ltc2983_data *st = spi_get_drvdata(to_spi_device(dev));
drivers/iio/temperature/ltc2983.c
2023
regmap_read(st->regmap, LTC2983_STATUS_REG, &dummy);
drivers/iio/temperature/ltc2983.c
2025
return ltc2983_setup(st, false);
drivers/iio/temperature/ltc2983.c
2030
struct ltc2983_data *st = spi_get_drvdata(to_spi_device(dev));
drivers/iio/temperature/ltc2983.c
2032
return regmap_write(st->regmap, LTC2983_STATUS_REG, LTC2983_SLEEP);
drivers/iio/temperature/ltc2983.c
271
int (*fault_handler)(const struct ltc2983_data *st, const u32 result);
drivers/iio/temperature/ltc2983.c
272
int (*assign_chan)(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
382
static int __ltc2983_fault_handler(const struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
386
const struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
399
static int __ltc2983_chan_assign_common(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
403
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
414
st->chan_val = cpu_to_be32(chan_val);
drivers/iio/temperature/ltc2983.c
415
return regmap_bulk_write(st->regmap, reg, &st->chan_val,
drivers/iio/temperature/ltc2983.c
416
sizeof(st->chan_val));
drivers/iio/temperature/ltc2983.c
419
static int __ltc2983_chan_custom_sensor_assign(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
426
const struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
446
if (st->custom_table_size + custom->size >
drivers/iio/temperature/ltc2983.c
451
st->custom_table_size,
drivers/iio/temperature/ltc2983.c
456
custom->offset = st->custom_table_size /
drivers/iio/temperature/ltc2983.c
458
st->custom_table_size += custom->size;
drivers/iio/temperature/ltc2983.c
469
return regmap_bulk_write(st->regmap, reg, custom->table, custom->size);
drivers/iio/temperature/ltc2983.c
473
__ltc2983_custom_sensor_new(struct ltc2983_data *st, const struct fwnode_handle *fn,
drivers/iio/temperature/ltc2983.c
478
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
508
if (st->custom_table_size + new_custom->size >
drivers/iio/temperature/ltc2983.c
512
st->custom_table_size, new_custom->size);
drivers/iio/temperature/ltc2983.c
575
new_custom->offset = st->custom_table_size /
drivers/iio/temperature/ltc2983.c
577
st->custom_table_size += new_custom->size;
drivers/iio/temperature/ltc2983.c
586
static int ltc2983_thermocouple_fault_handler(const struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
589
return __ltc2983_fault_handler(st, result,
drivers/iio/temperature/ltc2983.c
594
static int ltc2983_common_fault_handler(const struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
597
return __ltc2983_fault_handler(st, result,
drivers/iio/temperature/ltc2983.c
602
static int ltc2983_thermocouple_assign_chan(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
614
ret = __ltc2983_chan_custom_sensor_assign(st, thermo->custom,
drivers/iio/temperature/ltc2983.c
619
return __ltc2983_chan_assign_common(st, sensor, chan_val);
drivers/iio/temperature/ltc2983.c
622
static int ltc2983_rtd_assign_chan(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
636
ret = __ltc2983_chan_custom_sensor_assign(st, rtd->custom,
drivers/iio/temperature/ltc2983.c
641
return __ltc2983_chan_assign_common(st, sensor, chan_val);
drivers/iio/temperature/ltc2983.c
644
static int ltc2983_copper_trace_assign_chan(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
660
ret = __ltc2983_chan_custom_sensor_assign(st, ct->custom,
drivers/iio/temperature/ltc2983.c
666
return __ltc2983_chan_assign_common(st, sensor, chan_val);
drivers/iio/temperature/ltc2983.c
669
static int ltc2983_thermistor_assign_chan(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
683
ret = __ltc2983_chan_custom_sensor_assign(st,
drivers/iio/temperature/ltc2983.c
689
return __ltc2983_chan_assign_common(st, sensor, chan_val);
drivers/iio/temperature/ltc2983.c
692
static int ltc2983_leak_detector_assign_chan(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
704
ret = __ltc2983_chan_custom_sensor_assign(st, ld->custom, &chan_val);
drivers/iio/temperature/ltc2983.c
708
return __ltc2983_chan_assign_common(st, sensor, chan_val);
drivers/iio/temperature/ltc2983.c
711
static int ltc2983_diode_assign_chan(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
721
return __ltc2983_chan_assign_common(st, sensor, chan_val);
drivers/iio/temperature/ltc2983.c
724
static int ltc2983_r_sense_assign_chan(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
732
return __ltc2983_chan_assign_common(st, sensor, chan_val);
drivers/iio/temperature/ltc2983.c
735
static int ltc2983_adc_assign_chan(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
743
return __ltc2983_chan_assign_common(st, sensor, chan_val);
drivers/iio/temperature/ltc2983.c
746
static int ltc2983_temp_assign_chan(struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
755
ret = __ltc2983_chan_custom_sensor_assign(st, temp->custom, &chan_val);
drivers/iio/temperature/ltc2983.c
759
return __ltc2983_chan_assign_common(st, sensor, chan_val);
drivers/iio/temperature/ltc2983.c
763
ltc2983_thermocouple_new(const struct fwnode_handle *child, struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
766
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
837
thermo->custom = __ltc2983_custom_sensor_new(st, child,
drivers/iio/temperature/ltc2983.c
852
ltc2983_rtd_new(const struct fwnode_handle *child, struct ltc2983_data *st,
drivers/iio/temperature/ltc2983.c
857
struct device *dev = &st->spi->dev;
drivers/iio/temperature/ltc2983.c
924
max = st->info->max_channels_nr;
drivers/iio/temperature/ltc2983.c
927
max = st->info->max_channels_nr - 1;
drivers/iio/temperature/ltc2983.c
951
rtd->custom = __ltc2983_custom_sensor_new(st, child,
drivers/infiniband/core/nldev.c
1039
struct rdma_hw_stats *st = counter->stats;
drivers/infiniband/core/nldev.c
1047
mutex_lock(&st->lock);
drivers/infiniband/core/nldev.c
1048
for (i = 0; i < st->num_counters; i++) {
drivers/infiniband/core/nldev.c
1049
if (test_bit(i, st->is_disabled))
drivers/infiniband/core/nldev.c
1051
if (rdma_nl_stat_hwcounter_entry(msg, st->descs[i].name,
drivers/infiniband/core/nldev.c
1052
st->value[i]))
drivers/infiniband/core/nldev.c
1055
mutex_unlock(&st->lock);
drivers/infiniband/core/nldev.c
1061
mutex_unlock(&st->lock);
drivers/infiniband/hw/hfi1/trace_tx.h
582
#define usdma_complete_name(st) { st, #st }
drivers/infiniband/hw/hfi1/trace_tx.h
583
#define show_usdma_complete_state(st) \
drivers/infiniband/hw/hfi1/trace_tx.h
584
__print_symbolic(st, \
drivers/infiniband/hw/mlx5/main.c
4808
if (mdev->st)
drivers/infiniband/hw/mlx5/qp.c
2045
MLX5_SET(qpc, qpc, st, MLX5_QP_ST_XRC);
drivers/infiniband/hw/mlx5/qp.c
2160
MLX5_SET(qpc, qpc, st, mlx5_st);
drivers/infiniband/hw/mlx5/qp.c
2331
MLX5_SET(qpc, qpc, st, mlx5_st);
drivers/infiniband/hw/mlx5/qp.c
2509
MLX5_SET(qpc, qpc, st, mlx5_st);
drivers/infiniband/hw/mlx5/qp.c
4310
MLX5_SET(qpc, qpc, st, mlx5_st);
drivers/input/keyboard/adc-keys.c
106
struct adc_keys_state *st;
drivers/input/keyboard/adc-keys.c
112
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/input/keyboard/adc-keys.c
113
if (!st)
drivers/input/keyboard/adc-keys.c
116
st->channel = devm_iio_channel_get(dev, "buttons");
drivers/input/keyboard/adc-keys.c
117
if (IS_ERR(st->channel))
drivers/input/keyboard/adc-keys.c
118
return PTR_ERR(st->channel);
drivers/input/keyboard/adc-keys.c
120
if (!st->channel->indio_dev)
drivers/input/keyboard/adc-keys.c
123
error = iio_get_channel_type(st->channel, &type);
drivers/input/keyboard/adc-keys.c
133
&st->keyup_voltage)) {
drivers/input/keyboard/adc-keys.c
137
st->keyup_voltage /= 1000;
drivers/input/keyboard/adc-keys.c
139
error = adc_keys_load_keymap(dev, st);
drivers/input/keyboard/adc-keys.c
149
input_set_drvdata(input, st);
drivers/input/keyboard/adc-keys.c
160
for (i = 0; i < st->num_keys; i++)
drivers/input/keyboard/adc-keys.c
161
__set_bit(st->map[i].keycode, input->keybit);
drivers/input/keyboard/adc-keys.c
34
struct adc_keys_state *st = input_get_drvdata(input);
drivers/input/keyboard/adc-keys.c
39
ret = iio_read_channel_processed(st->channel, &value);
drivers/input/keyboard/adc-keys.c
42
value = st->keyup_voltage;
drivers/input/keyboard/adc-keys.c
44
for (i = 0; i < st->num_keys; i++) {
drivers/input/keyboard/adc-keys.c
45
diff = abs(st->map[i].voltage - value);
drivers/input/keyboard/adc-keys.c
48
keycode = st->map[i].keycode;
drivers/input/keyboard/adc-keys.c
53
if (abs(st->keyup_voltage - value) < closest)
drivers/input/keyboard/adc-keys.c
56
if (st->last_key && st->last_key != keycode)
drivers/input/keyboard/adc-keys.c
57
input_report_key(input, st->last_key, 0);
drivers/input/keyboard/adc-keys.c
63
st->last_key = keycode;
drivers/input/keyboard/adc-keys.c
66
static int adc_keys_load_keymap(struct device *dev, struct adc_keys_state *st)
drivers/input/keyboard/adc-keys.c
71
st->num_keys = device_get_child_node_count(dev);
drivers/input/keyboard/adc-keys.c
72
if (st->num_keys == 0) {
drivers/input/keyboard/adc-keys.c
77
map = devm_kmalloc_array(dev, st->num_keys, sizeof(*map), GFP_KERNEL);
drivers/input/keyboard/adc-keys.c
99
st->map = map;
drivers/input/mouse/alps.c
484
int dx = fields->st.x - corner[i].x;
drivers/input/mouse/alps.c
485
int dy = fields->st.y - corner[i].y;
drivers/input/mouse/alps.c
497
fields->mt[0] = fields->st;
drivers/input/mouse/alps.c
533
f->mt[0].x = f->st.x;
drivers/input/mouse/alps.c
534
f->mt[0].y = f->st.y;
drivers/input/mouse/alps.c
650
f->st.x = ((p[1] & 0x7f) << 4) | ((p[4] & 0x30) >> 2) |
drivers/input/mouse/alps.c
652
f->st.y = ((p[2] & 0x7f) << 4) | (p[4] & 0x0f);
drivers/input/mouse/alps.c
678
f->st.x = ((p[1] & 0x7f) << 4) | ((p[4] & 0x30) >> 2) |
drivers/input/mouse/alps.c
680
f->st.y = ((p[2] & 0x7f) << 4) | (p[4] & 0x0f);
drivers/input/mouse/alps.c
699
f->st.x = ((p[1] & 0x7f) | ((p[4] & 0x0f) << 7));
drivers/input/mouse/alps.c
700
f->st.y = ((p[2] & 0x7f) | ((p[4] & 0xf0) << 3));
drivers/input/mouse/alps.c
790
if (f->st.x && f->st.y && !f->pressure)
drivers/input/mouse/alps.c
917
f->st.x = ((packet[1] & 0x7f) << 4) | ((packet[3] & 0x30) >> 2) |
drivers/input/mouse/alps.c
919
f->st.y = ((packet[2] & 0x7f) << 4) | (packet[3] & 0x0f);
drivers/input/mouse/alps.h
238
struct input_mt_pos st;
drivers/input/touchscreen/resistive-adc-touch.c
100
if (st->pressure)
drivers/input/touchscreen/resistive-adc-touch.c
101
input_report_abs(st->input, ABS_PRESSURE, press);
drivers/input/touchscreen/resistive-adc-touch.c
102
input_report_key(st->input, BTN_TOUCH, 1);
drivers/input/touchscreen/resistive-adc-touch.c
103
input_sync(st->input);
drivers/input/touchscreen/resistive-adc-touch.c
111
struct grts_state *st = input_get_drvdata(dev);
drivers/input/touchscreen/resistive-adc-touch.c
113
error = iio_channel_start_all_cb(st->iio_cb);
drivers/input/touchscreen/resistive-adc-touch.c
123
struct grts_state *st = input_get_drvdata(dev);
drivers/input/touchscreen/resistive-adc-touch.c
125
iio_channel_stop_all_cb(st->iio_cb);
drivers/input/touchscreen/resistive-adc-touch.c
133
static int grts_map_channel(struct grts_state *st, struct device *dev,
drivers/input/touchscreen/resistive-adc-touch.c
148
st->ch_map[type] = idx;
drivers/input/touchscreen/resistive-adc-touch.c
152
static int grts_get_properties(struct grts_state *st, struct device *dev)
drivers/input/touchscreen/resistive-adc-touch.c
156
error = grts_map_channel(st, dev, GRTS_CH_X, "x", false);
drivers/input/touchscreen/resistive-adc-touch.c
160
error = grts_map_channel(st, dev, GRTS_CH_Y, "y", false);
drivers/input/touchscreen/resistive-adc-touch.c
165
error = grts_map_channel(st, dev, GRTS_CH_PRESSURE, "pressure", true);
drivers/input/touchscreen/resistive-adc-touch.c
169
if (st->ch_map[GRTS_CH_PRESSURE] < GRTS_MAX_CHANNELS) {
drivers/input/touchscreen/resistive-adc-touch.c
170
st->pressure = true;
drivers/input/touchscreen/resistive-adc-touch.c
175
error = grts_map_channel(st, dev, GRTS_CH_Z1, "z1", true);
drivers/input/touchscreen/resistive-adc-touch.c
179
if (st->ch_map[GRTS_CH_Z1] >= GRTS_MAX_CHANNELS)
drivers/input/touchscreen/resistive-adc-touch.c
183
error = grts_map_channel(st, dev, GRTS_CH_Z2, "z2", true);
drivers/input/touchscreen/resistive-adc-touch.c
189
&st->x_plate_ohms);
drivers/input/touchscreen/resistive-adc-touch.c
195
st->pressure = true;
drivers/input/touchscreen/resistive-adc-touch.c
201
struct grts_state *st;
drivers/input/touchscreen/resistive-adc-touch.c
206
st = devm_kzalloc(dev, sizeof(struct grts_state), GFP_KERNEL);
drivers/input/touchscreen/resistive-adc-touch.c
207
if (!st)
drivers/input/touchscreen/resistive-adc-touch.c
211
st->iio_chans = devm_iio_channel_get_all(dev);
drivers/input/touchscreen/resistive-adc-touch.c
212
if (IS_ERR(st->iio_chans))
drivers/input/touchscreen/resistive-adc-touch.c
213
return dev_err_probe(dev, PTR_ERR(st->iio_chans), "can't get iio channels\n");
drivers/input/touchscreen/resistive-adc-touch.c
218
error = grts_get_properties(st, dev);
drivers/input/touchscreen/resistive-adc-touch.c
224
if (st->pressure) {
drivers/input/touchscreen/resistive-adc-touch.c
227
&st->pressure_min);
drivers/input/touchscreen/resistive-adc-touch.c
230
st->pressure_min = GRTS_DEFAULT_PRESSURE_MIN;
drivers/input/touchscreen/resistive-adc-touch.c
247
if (st->pressure)
drivers/input/touchscreen/resistive-adc-touch.c
248
input_set_abs_params(input, ABS_PRESSURE, st->pressure_min,
drivers/input/touchscreen/resistive-adc-touch.c
254
touchscreen_parse_properties(input, false, &st->prop);
drivers/input/touchscreen/resistive-adc-touch.c
256
st->input = input;
drivers/input/touchscreen/resistive-adc-touch.c
257
input_set_drvdata(input, st);
drivers/input/touchscreen/resistive-adc-touch.c
265
st->iio_cb = iio_channel_get_all_cb(dev, grts_cb, st);
drivers/input/touchscreen/resistive-adc-touch.c
266
if (IS_ERR(st->iio_cb)) {
drivers/input/touchscreen/resistive-adc-touch.c
268
return PTR_ERR(st->iio_cb);
drivers/input/touchscreen/resistive-adc-touch.c
271
error = devm_add_action_or_reset(dev, grts_disable, st->iio_cb);
drivers/input/touchscreen/resistive-adc-touch.c
60
struct grts_state *st = private;
drivers/input/touchscreen/resistive-adc-touch.c
63
x = touch_info[st->ch_map[GRTS_CH_X]];
drivers/input/touchscreen/resistive-adc-touch.c
64
y = touch_info[st->ch_map[GRTS_CH_Y]];
drivers/input/touchscreen/resistive-adc-touch.c
66
if (st->ch_map[GRTS_CH_PRESSURE] < GRTS_MAX_CHANNELS) {
drivers/input/touchscreen/resistive-adc-touch.c
67
press = touch_info[st->ch_map[GRTS_CH_PRESSURE]];
drivers/input/touchscreen/resistive-adc-touch.c
68
} else if (st->ch_map[GRTS_CH_Z1] < GRTS_MAX_CHANNELS) {
drivers/input/touchscreen/resistive-adc-touch.c
69
unsigned int z1 = touch_info[st->ch_map[GRTS_CH_Z1]];
drivers/input/touchscreen/resistive-adc-touch.c
70
unsigned int z2 = touch_info[st->ch_map[GRTS_CH_Z2]];
drivers/input/touchscreen/resistive-adc-touch.c
76
Rt *= st->x_plate_ohms;
drivers/input/touchscreen/resistive-adc-touch.c
91
if ((!x && !y) || (st->pressure && (press < st->pressure_min))) {
drivers/input/touchscreen/resistive-adc-touch.c
93
input_report_key(st->input, BTN_TOUCH, 0);
drivers/input/touchscreen/resistive-adc-touch.c
94
input_sync(st->input);
drivers/input/touchscreen/resistive-adc-touch.c
99
touchscreen_report_pos(st->input, &st->prop, x, y, false);
drivers/input/touchscreen/surface3_spi.c
125
int st = pen->status;
drivers/input/touchscreen/surface3_spi.c
126
int prox = st & 0x01;
drivers/input/touchscreen/surface3_spi.c
127
int rubber = st & 0x18;
drivers/input/touchscreen/surface3_spi.c
137
input_report_key(dev, BTN_TOUCH, st & 0x12);
drivers/input/touchscreen/surface3_spi.c
141
if (st) {
drivers/input/touchscreen/surface3_spi.c
144
st & 0x04);
drivers/input/touchscreen/surface3_spi.c
69
int st = finger->status & 0x01;
drivers/input/touchscreen/surface3_spi.c
78
input_mt_report_slot_state(ts_data->input_dev, MT_TOOL_FINGER, st);
drivers/input/touchscreen/surface3_spi.c
79
if (st) {
drivers/irqchip/irq-renesas-rzv2h.c
750
u32 st;
drivers/irqchip/irq-renesas-rzv2h.c
754
st = readl(base + ICU_BEISR(k));
drivers/irqchip/irq-renesas-rzv2h.c
755
if (!st)
drivers/irqchip/irq-renesas-rzv2h.c
758
writel_relaxed(st, base + ICU_BECLR(k));
drivers/irqchip/irq-renesas-rzv2h.c
759
pr_warn("rzv2h-icu: BUS error k=%u status=0x%08x\n", k, st);
drivers/irqchip/irq-renesas-rzv2h.c
764
st = readl(base + ICU_EREISR(k));
drivers/irqchip/irq-renesas-rzv2h.c
765
if (!st)
drivers/irqchip/irq-renesas-rzv2h.c
768
writel_relaxed(st, base + ICU_ERCLR(k));
drivers/irqchip/irq-renesas-rzv2h.c
769
pr_warn("rzv2h-icu: ECC error k=%u status=0x%08x\n", k, st);
drivers/irqchip/irq-renesas-rzv2h.c
774
st = readl(base + ICU_ERINTA55CTL(k));
drivers/irqchip/irq-renesas-rzv2h.c
775
if (!st)
drivers/irqchip/irq-renesas-rzv2h.c
780
pr_warn("rzv2h-icu: IP/CA55 error k=%u status=0x%08x\n", k, st);
drivers/irqchip/irq-sa11x0.c
100
writel_relaxed(st->icmr & 0xfffff000, iobase + ICMR);
drivers/irqchip/irq-sa11x0.c
107
struct sa1100irq_state *st = &sa1100irq_state;
drivers/irqchip/irq-sa11x0.c
109
if (st->saved) {
drivers/irqchip/irq-sa11x0.c
110
writel_relaxed(st->iccr, iobase + ICCR);
drivers/irqchip/irq-sa11x0.c
111
writel_relaxed(st->iclr, iobase + ICLR);
drivers/irqchip/irq-sa11x0.c
113
writel_relaxed(st->icmr, iobase + ICMR);
drivers/irqchip/irq-sa11x0.c
90
struct sa1100irq_state *st = &sa1100irq_state;
drivers/irqchip/irq-sa11x0.c
92
st->saved = 1;
drivers/irqchip/irq-sa11x0.c
93
st->icmr = readl_relaxed(iobase + ICMR);
drivers/irqchip/irq-sa11x0.c
94
st->iclr = readl_relaxed(iobase + ICLR);
drivers/irqchip/irq-sa11x0.c
95
st->iccr = readl_relaxed(iobase + ICCR);
drivers/macintosh/windfarm_pid.c
100
st->powers[i] = new_power;
drivers/macintosh/windfarm_pid.c
101
st->errors[i] = error;
drivers/macintosh/windfarm_pid.c
103
st->temps[0] = st->temps[1] = new_temp;
drivers/macintosh/windfarm_pid.c
104
st->first = 0;
drivers/macintosh/windfarm_pid.c
105
st->index = st->tindex = 0;
drivers/macintosh/windfarm_pid.c
107
st->index = (st->index + 1) % hlen;
drivers/macintosh/windfarm_pid.c
108
st->powers[st->index] = new_power;
drivers/macintosh/windfarm_pid.c
109
st->errors[st->index] = error;
drivers/macintosh/windfarm_pid.c
110
st->tindex = (st->tindex + 1) % 2;
drivers/macintosh/windfarm_pid.c
111
st->temps[st->tindex] = new_temp;
drivers/macintosh/windfarm_pid.c
116
integ += st->errors[(st->index + hlen - i) % hlen];
drivers/macintosh/windfarm_pid.c
117
integ *= st->param.interval;
drivers/macintosh/windfarm_pid.c
118
integ *= st->param.gr;
drivers/macintosh/windfarm_pid.c
119
sval = st->param.tmax - (s32)(integ >> 20);
drivers/macintosh/windfarm_pid.c
120
adj = min(st->param.ttarget, sval);
drivers/macintosh/windfarm_pid.c
125
deriv = st->temps[st->tindex] -
drivers/macintosh/windfarm_pid.c
126
st->temps[(st->tindex + 2 - 1) % 2];
drivers/macintosh/windfarm_pid.c
127
deriv /= st->param.interval;
drivers/macintosh/windfarm_pid.c
128
deriv *= st->param.gd;
drivers/macintosh/windfarm_pid.c
131
prop = st->last_delta = (new_temp - adj);
drivers/macintosh/windfarm_pid.c
132
prop *= st->param.gp;
drivers/macintosh/windfarm_pid.c
137
target = st->target + (s32)((deriv + prop) >> 36);
drivers/macintosh/windfarm_pid.c
138
target = max(target, st->param.min);
drivers/macintosh/windfarm_pid.c
139
target = min(target, st->param.max);
drivers/macintosh/windfarm_pid.c
140
st->target = target;
drivers/macintosh/windfarm_pid.c
142
return st->target;
drivers/macintosh/windfarm_pid.c
25
void wf_pid_init(struct wf_pid_state *st, struct wf_pid_param *param)
drivers/macintosh/windfarm_pid.c
27
memset(st, 0, sizeof(struct wf_pid_state));
drivers/macintosh/windfarm_pid.c
28
st->param = *param;
drivers/macintosh/windfarm_pid.c
29
st->first = 1;
drivers/macintosh/windfarm_pid.c
33
s32 wf_pid_run(struct wf_pid_state *st, s32 new_sample)
drivers/macintosh/windfarm_pid.c
37
int i, hlen = st->param.history_len;
drivers/macintosh/windfarm_pid.c
40
error = new_sample - st->param.itarget;
drivers/macintosh/windfarm_pid.c
43
if (st->first) {
drivers/macintosh/windfarm_pid.c
45
st->samples[i] = new_sample;
drivers/macintosh/windfarm_pid.c
46
st->errors[i] = error;
drivers/macintosh/windfarm_pid.c
48
st->first = 0;
drivers/macintosh/windfarm_pid.c
49
st->index = 0;
drivers/macintosh/windfarm_pid.c
51
st->index = (st->index + 1) % hlen;
drivers/macintosh/windfarm_pid.c
52
st->samples[st->index] = new_sample;
drivers/macintosh/windfarm_pid.c
53
st->errors[st->index] = error;
drivers/macintosh/windfarm_pid.c
58
integ += st->errors[(st->index + hlen - i) % hlen];
drivers/macintosh/windfarm_pid.c
59
integ *= st->param.interval;
drivers/macintosh/windfarm_pid.c
62
deriv = st->errors[st->index] -
drivers/macintosh/windfarm_pid.c
63
st->errors[(st->index + hlen - 1) % hlen];
drivers/macintosh/windfarm_pid.c
64
deriv /= st->param.interval;
drivers/macintosh/windfarm_pid.c
67
target = (s32)((integ * (s64)st->param.gr + deriv * (s64)st->param.gd +
drivers/macintosh/windfarm_pid.c
68
error * (s64)st->param.gp) >> 36);
drivers/macintosh/windfarm_pid.c
69
if (st->param.additive)
drivers/macintosh/windfarm_pid.c
70
target += st->target;
drivers/macintosh/windfarm_pid.c
71
target = max(target, st->param.min);
drivers/macintosh/windfarm_pid.c
72
target = min(target, st->param.max);
drivers/macintosh/windfarm_pid.c
73
st->target = target;
drivers/macintosh/windfarm_pid.c
75
return st->target;
drivers/macintosh/windfarm_pid.c
79
void wf_cpu_pid_init(struct wf_cpu_pid_state *st,
drivers/macintosh/windfarm_pid.c
82
memset(st, 0, sizeof(struct wf_cpu_pid_state));
drivers/macintosh/windfarm_pid.c
83
st->param = *param;
drivers/macintosh/windfarm_pid.c
84
st->first = 1;
drivers/macintosh/windfarm_pid.c
88
s32 wf_cpu_pid_run(struct wf_cpu_pid_state *st, s32 new_power, s32 new_temp)
drivers/macintosh/windfarm_pid.c
92
int i, hlen = st->param.history_len;
drivers/macintosh/windfarm_pid.c
95
error = st->param.pmaxadj - new_power;
drivers/macintosh/windfarm_pid.c
98
if (st->first) {
drivers/macintosh/windfarm_pid.h
47
extern void wf_pid_init(struct wf_pid_state *st, struct wf_pid_param *param);
drivers/macintosh/windfarm_pid.h
48
extern s32 wf_pid_run(struct wf_pid_state *st, s32 sample);
drivers/macintosh/windfarm_pid.h
85
extern void wf_cpu_pid_init(struct wf_cpu_pid_state *st,
drivers/macintosh/windfarm_pid.h
87
extern s32 wf_cpu_pid_run(struct wf_cpu_pid_state *st, s32 power, s32 temp);
drivers/macintosh/windfarm_pm121.c
583
struct pm121_sys_state *st;
drivers/macintosh/windfarm_pm121.c
590
st = pm121_sys_state[loop_id];
drivers/macintosh/windfarm_pm121.c
594
if (--st->ticks != 0) {
drivers/macintosh/windfarm_pm121.c
599
st->ticks = PM121_SYS_INTERVAL;
drivers/macintosh/windfarm_pm121.c
613
new_setpoint = wf_pid_run(&st->pid, temp);
drivers/macintosh/windfarm_pm121.c
618
st->pid.param.min);
drivers/macintosh/windfarm_pm121.c
622
if (new_setpoint == st->setpoint)
drivers/macintosh/windfarm_pm121.c
624
st->setpoint = new_setpoint;
drivers/macintosh/windfarm_pm121.c
629
rc = control->ops->set_value(control, st->setpoint);
drivers/macintosh/windfarm_pm121.c
717
static void pm121_cpu_fans_tick(struct pm121_cpu_state *st)
drivers/macintosh/windfarm_pm121.c
723
if (--st->ticks != 0) {
drivers/macintosh/windfarm_pm121.c
728
st->ticks = PM121_CPU_INTERVAL;
drivers/macintosh/windfarm_pm121.c
751
if (temp > st->pid.param.tmax)
drivers/macintosh/windfarm_pm121.c
754
new_setpoint = wf_cpu_pid_run(&st->pid, power, temp);
drivers/macintosh/windfarm_pm121.c
759
st->pid.param.min);
drivers/macintosh/windfarm_pm121.c
764
if (st->setpoint == new_setpoint)
drivers/macintosh/windfarm_pm121.c
766
st->setpoint = new_setpoint;
drivers/macintosh/windfarm_pm121.c
771
rc = fan_cpu->ops->set_value(fan_cpu, st->setpoint);
drivers/macintosh/windfarm_pm121.c
972
struct smu_sdbp_sensortree *st =
drivers/macintosh/windfarm_pm121.c
974
pm121_mach_model = st->model_id;
drivers/macintosh/windfarm_pm81.c
328
static void wf_smu_sys_fans_tick(struct wf_smu_sys_fans_state *st)
drivers/macintosh/windfarm_pm81.c
333
if (--st->ticks != 0) {
drivers/macintosh/windfarm_pm81.c
338
st->ticks = WF_SMU_SYS_FANS_INTERVAL;
drivers/macintosh/windfarm_pm81.c
351
if (temp > (st->pid.param.itarget + 0x50000))
drivers/macintosh/windfarm_pm81.c
354
new_setpoint = wf_pid_run(&st->pid, temp);
drivers/macintosh/windfarm_pm81.c
358
scaled = ((((s64)new_setpoint) * (s64)st->scale0) >> 12) + st->offset0;
drivers/macintosh/windfarm_pm81.c
363
cputarget = ((((s64)cputarget) * (s64)st->scale1) >> 12) + st->offset1;
drivers/macintosh/windfarm_pm81.c
365
scaled = max(scaled, st->pid.param.min);
drivers/macintosh/windfarm_pm81.c
366
scaled = min(scaled, st->pid.param.max);
drivers/macintosh/windfarm_pm81.c
370
if (st->sys_setpoint == scaled && new_setpoint == st->hd_setpoint)
drivers/macintosh/windfarm_pm81.c
372
st->sys_setpoint = scaled;
drivers/macintosh/windfarm_pm81.c
373
st->hd_setpoint = new_setpoint;
drivers/macintosh/windfarm_pm81.c
376
rc = wf_control_set(fan_system, st->sys_setpoint);
drivers/macintosh/windfarm_pm81.c
384
rc = wf_control_set(fan_hd, st->hd_setpoint);
drivers/macintosh/windfarm_pm81.c
471
static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st)
drivers/macintosh/windfarm_pm81.c
476
if (--st->ticks != 0) {
drivers/macintosh/windfarm_pm81.c
481
st->ticks = WF_SMU_CPU_FANS_INTERVAL;
drivers/macintosh/windfarm_pm81.c
506
if (temp > st->pid.param.tmax)
drivers/macintosh/windfarm_pm81.c
509
new_setpoint = wf_cpu_pid_run(&st->pid, power, temp);
drivers/macintosh/windfarm_pm81.c
514
systarget = ((((s64)systarget) * (s64)st->scale) >> 12)
drivers/macintosh/windfarm_pm81.c
515
+ st->offset;
drivers/macintosh/windfarm_pm81.c
517
new_setpoint = max(new_setpoint, st->pid.param.min);
drivers/macintosh/windfarm_pm81.c
518
new_setpoint = min(new_setpoint, st->pid.param.max);
drivers/macintosh/windfarm_pm81.c
522
if (st->cpu_setpoint == new_setpoint)
drivers/macintosh/windfarm_pm81.c
524
st->cpu_setpoint = new_setpoint;
drivers/macintosh/windfarm_pm81.c
527
rc = wf_control_set(fan_cpu_main, st->cpu_setpoint);
drivers/macintosh/windfarm_pm81.c
707
struct smu_sdbp_sensortree *st =
drivers/macintosh/windfarm_pm81.c
709
wf_smu_mach_model = st->model_id;
drivers/macintosh/windfarm_pm91.c
218
static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st)
drivers/macintosh/windfarm_pm91.c
223
if (--st->ticks != 0) {
drivers/macintosh/windfarm_pm91.c
228
st->ticks = WF_SMU_CPU_FANS_INTERVAL;
drivers/macintosh/windfarm_pm91.c
253
if (temp > st->pid.param.tmax)
drivers/macintosh/windfarm_pm91.c
256
new_setpoint = wf_cpu_pid_run(&st->pid, power, temp);
drivers/macintosh/windfarm_pm91.c
260
if (st->cpu_setpoint == new_setpoint)
drivers/macintosh/windfarm_pm91.c
262
st->cpu_setpoint = new_setpoint;
drivers/macintosh/windfarm_pm91.c
265
rc = wf_control_set(fan_cpu_main, st->cpu_setpoint);
drivers/macintosh/windfarm_pm91.c
273
rc = wf_control_set(fan_cpu_second, st->cpu_setpoint);
drivers/macintosh/windfarm_pm91.c
281
rc = wf_control_set(fan_cpu_third, st->cpu_setpoint);
drivers/macintosh/windfarm_pm91.c
326
static void wf_smu_drive_fans_tick(struct wf_smu_drive_fans_state *st)
drivers/macintosh/windfarm_pm91.c
331
if (--st->ticks != 0) {
drivers/macintosh/windfarm_pm91.c
336
st->ticks = st->pid.param.interval;
drivers/macintosh/windfarm_pm91.c
349
if (temp > (st->pid.param.itarget + 0x50000))
drivers/macintosh/windfarm_pm91.c
352
new_setpoint = wf_pid_run(&st->pid, temp);
drivers/macintosh/windfarm_pm91.c
356
if (st->setpoint == new_setpoint)
drivers/macintosh/windfarm_pm91.c
358
st->setpoint = new_setpoint;
drivers/macintosh/windfarm_pm91.c
361
rc = wf_control_set(fan_hd, st->setpoint);
drivers/macintosh/windfarm_pm91.c
406
static void wf_smu_slots_fans_tick(struct wf_smu_slots_fans_state *st)
drivers/macintosh/windfarm_pm91.c
411
if (--st->ticks != 0) {
drivers/macintosh/windfarm_pm91.c
416
st->ticks = st->pid.param.interval;
drivers/macintosh/windfarm_pm91.c
430
if (power > (st->pid.param.itarget + 0x50000))
drivers/macintosh/windfarm_pm91.c
434
new_setpoint = wf_pid_run(&st->pid, power);
drivers/macintosh/windfarm_pm91.c
438
if (st->setpoint == new_setpoint)
drivers/macintosh/windfarm_pm91.c
440
st->setpoint = new_setpoint;
drivers/macintosh/windfarm_pm91.c
443
rc = wf_control_set(fan_slots, st->setpoint);
drivers/mailbox/arm_mhuv3.c
162
u32 st;
drivers/mailbox/arm_mhuv3.c
172
u32 st;
drivers/mailbox/arm_mhuv3.c
427
done = !(readl_relaxed(&mhu->pbx->dbcw[priv->ch_idx].st) &
drivers/mailbox/arm_mhuv3.c
631
u32 st;
drivers/mailbox/arm_mhuv3.c
636
st = readl_relaxed_bitmask(&mhu->pbx->dbcw[channel].int_st,
drivers/mailbox/arm_mhuv3.c
638
if (!st)
drivers/mailbox/arm_mhuv3.c
641
active_dbs = readl_relaxed(&mhu->pbx->dbcw[channel].st);
drivers/mailbox/arm_mhuv3.c
657
st = readl_relaxed(&mhu->mbx->dbcw[channel].st_msk);
drivers/mailbox/arm_mhuv3.c
658
if (!st)
drivers/mailbox/arm_mhuv3.c
661
*db = __ffs(st);
drivers/md/dm-ps-historical-service-time.c
498
u64 st;
drivers/md/dm-ps-historical-service-time.c
502
st = path_service_time(pi, start_time);
drivers/md/dm-ps-historical-service-time.c
506
min(st * HST_FIXED_1, HST_FIXED_MAX),
drivers/md/dm-ps-historical-service-time.c
507
hst_weight(ps, st));
drivers/md/dm-stats.h
24
int dm_stats_init(struct dm_stats *st);
drivers/md/dm-stats.h
25
void dm_stats_cleanup(struct dm_stats *st);
drivers/md/dm-stats.h
37
static inline bool dm_stats_used(struct dm_stats *st)
drivers/md/dm-stats.h
39
return !list_empty(&st->list);
drivers/md/md.c
4607
enum array_state st = inactive;
drivers/md/md.c
4612
st = readonly;
drivers/md/md.c
4615
st = read_auto;
drivers/md/md.c
4620
st = write_pending;
drivers/md/md.c
4622
st = clean;
drivers/md/md.c
4624
st = active_idle;
drivers/md/md.c
4626
st = active;
drivers/md/md.c
4630
if (test_bit(MD_BROKEN, &mddev->flags) && st == clean)
drivers/md/md.c
4631
st = broken;
drivers/md/md.c
4636
st = clear;
drivers/md/md.c
4638
st = inactive;
drivers/md/md.c
4640
return sprintf(page, "%s\n", array_states[st]);
drivers/md/md.c
4651
enum array_state st = match_word(buf, array_states);
drivers/md/md.c
4654
switch (st) {
drivers/md/md.c
4676
if (mddev->pers && (st == active || st == clean) &&
drivers/md/md.c
4682
if (st == active) {
drivers/md/md.c
4701
switch (st) {
drivers/md/md.c
4772
if (st == readonly || st == read_auto || st == inactive ||
drivers/md/md.c
4773
(err && st == clear))
drivers/media/common/saa7146/saa7146_video.c
704
static void video_irq_done(struct saa7146_dev *dev, unsigned long st)
drivers/media/dvb-core/dvb_frontend.c
1537
tvp->u.st = c->strength;
drivers/media/dvb-core/dvb_frontend.c
1543
tvp->u.st = c->cnr;
drivers/media/dvb-core/dvb_frontend.c
1549
tvp->u.st = c->pre_bit_error;
drivers/media/dvb-core/dvb_frontend.c
1555
tvp->u.st = c->pre_bit_count;
drivers/media/dvb-core/dvb_frontend.c
1561
tvp->u.st = c->post_bit_error;
drivers/media/dvb-core/dvb_frontend.c
1567
tvp->u.st = c->post_bit_count;
drivers/media/dvb-core/dvb_frontend.c
1573
tvp->u.st = c->block_error;
drivers/media/dvb-core/dvb_frontend.c
1579
tvp->u.st = c->block_count;
drivers/media/dvb-core/dvb_frontend.c
2123
struct dtv_fe_stats st;
drivers/media/dvb-frontends/bcm3510.c
137
static int bcm3510_hab_get_response(struct bcm3510_state *st, u8 *buf, int len)
drivers/media/dvb-frontends/bcm3510.c
143
if ((ret = bcm3510_writeB(st,0xa6,v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
147
if ((ret = bcm3510_readB(st,0xa7,&v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
154
static int bcm3510_hab_send_request(struct bcm3510_state *st, u8 *buf, int len)
drivers/media/dvb-frontends/bcm3510.c
162
if ((ret = bcm3510_readB(st,0xa8,&v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
167
bcm3510_writeB(st,0xa8,v);
drivers/media/dvb-frontends/bcm3510.c
174
if ((ret = bcm3510_writeB(st,0xa6,hab)) < 0)
drivers/media/dvb-frontends/bcm3510.c
179
if ((ret = bcm3510_writeB(st,0xa7,hab)) < 0)
drivers/media/dvb-frontends/bcm3510.c
186
if ((ret = bcm3510_writeB(st,0xa8,v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
194
if ((ret = bcm3510_readB(st,0xa8,&v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
205
static int bcm3510_do_hab_cmd(struct bcm3510_state *st, u8 cmd, u8 msgid, u8 *obuf, u8 olen, u8 *ibuf, u8 ilen)
drivers/media/dvb-frontends/bcm3510.c
228
if (mutex_lock_interruptible(&st->hab_mutex) < 0)
drivers/media/dvb-frontends/bcm3510.c
231
if ((ret = bcm3510_hab_send_request(st, ob, olen+2)) < 0 ||
drivers/media/dvb-frontends/bcm3510.c
232
(ret = bcm3510_hab_get_response(st, ib, ilen+2)) < 0)
drivers/media/dvb-frontends/bcm3510.c
241
mutex_unlock(&st->hab_mutex);
drivers/media/dvb-frontends/bcm3510.c
247
static int bcm3510_is_ap_ready(struct bcm3510_state *st)
drivers/media/dvb-frontends/bcm3510.c
252
if ((ret = bcm3510_readB(st,0xa8,&hab)) < 0 ||
drivers/media/dvb-frontends/bcm3510.c
253
(ret = bcm3510_readB(st,0xa2,&ap) < 0))
drivers/media/dvb-frontends/bcm3510.c
265
static int bcm3510_bert_reset(struct bcm3510_state *st)
drivers/media/dvb-frontends/bcm3510.c
270
if ((ret = bcm3510_readB(st,0xfa,&b)) < 0)
drivers/media/dvb-frontends/bcm3510.c
273
b.BERCTL_fa.RESYNC = 0; bcm3510_writeB(st,0xfa,b);
drivers/media/dvb-frontends/bcm3510.c
274
b.BERCTL_fa.RESYNC = 1; bcm3510_writeB(st,0xfa,b);
drivers/media/dvb-frontends/bcm3510.c
275
b.BERCTL_fa.RESYNC = 0; bcm3510_writeB(st,0xfa,b);
drivers/media/dvb-frontends/bcm3510.c
276
b.BERCTL_fa.CNTCTL = 1; b.BERCTL_fa.BITCNT = 1; bcm3510_writeB(st,0xfa,b);
drivers/media/dvb-frontends/bcm3510.c
282
static int bcm3510_refresh_state(struct bcm3510_state *st)
drivers/media/dvb-frontends/bcm3510.c
284
if (time_after(jiffies,st->next_status_check)) {
drivers/media/dvb-frontends/bcm3510.c
285
bcm3510_do_hab_cmd(st, CMD_STATUS, MSGID_STATUS1, NULL,0, (u8 *)&st->status1, sizeof(st->status1));
drivers/media/dvb-frontends/bcm3510.c
286
bcm3510_do_hab_cmd(st, CMD_STATUS, MSGID_STATUS2, NULL,0, (u8 *)&st->status2, sizeof(st->status2));
drivers/media/dvb-frontends/bcm3510.c
287
st->next_status_check = jiffies + (st->status_check_interval*HZ)/1000;
drivers/media/dvb-frontends/bcm3510.c
294
struct bcm3510_state* st = fe->demodulator_priv;
drivers/media/dvb-frontends/bcm3510.c
295
bcm3510_refresh_state(st);
drivers/media/dvb-frontends/bcm3510.c
298
if (st->status1.STATUS1.RECEIVER_LOCK)
drivers/media/dvb-frontends/bcm3510.c
301
if (st->status1.STATUS1.FEC_LOCK)
drivers/media/dvb-frontends/bcm3510.c
304
if (st->status1.STATUS1.OUT_PLL_LOCK)
drivers/media/dvb-frontends/bcm3510.c
308
st->status_check_interval = 1500;
drivers/media/dvb-frontends/bcm3510.c
310
st->status_check_interval = 500;
drivers/media/dvb-frontends/bcm3510.c
318
struct bcm3510_state* st = fe->demodulator_priv;
drivers/media/dvb-frontends/bcm3510.c
319
bcm3510_refresh_state(st);
drivers/media/dvb-frontends/bcm3510.c
321
*ber = (st->status2.LDBER0 << 16) | (st->status2.LDBER1 << 8) | st->status2.LDBER2;
drivers/media/dvb-frontends/bcm3510.c
327
struct bcm3510_state* st = fe->demodulator_priv;
drivers/media/dvb-frontends/bcm3510.c
328
bcm3510_refresh_state(st);
drivers/media/dvb-frontends/bcm3510.c
329
*unc = (st->status2.LDUERC0 << 8) | st->status2.LDUERC1;
drivers/media/dvb-frontends/bcm3510.c
335
struct bcm3510_state* st = fe->demodulator_priv;
drivers/media/dvb-frontends/bcm3510.c
338
bcm3510_refresh_state(st);
drivers/media/dvb-frontends/bcm3510.c
339
t = st->status2.SIGNAL;
drivers/media/dvb-frontends/bcm3510.c
355
struct bcm3510_state* st = fe->demodulator_priv;
drivers/media/dvb-frontends/bcm3510.c
356
bcm3510_refresh_state(st);
drivers/media/dvb-frontends/bcm3510.c
358
*snr = st->status1.SNR_EST0*1000 + ((st->status1.SNR_EST1*1000) >> 8);
drivers/media/dvb-frontends/bcm3510.c
363
static int bcm3510_tuner_cmd(struct bcm3510_state* st,u8 bc, u16 n, u8 a)
drivers/media/dvb-frontends/bcm3510.c
449
return bcm3510_do_hab_cmd(st,CMD_TUNE, MSGID_TUNE,(u8 *) &c,sizeof(c), NULL, 0);
drivers/media/dvb-frontends/bcm3510.c
452
static int bcm3510_set_freq(struct bcm3510_state* st,u32 freq)
drivers/media/dvb-frontends/bcm3510.c
490
return bcm3510_tuner_cmd(st,bc,n,a);
drivers/media/dvb-frontends/bcm3510.c
498
struct bcm3510_state* st = fe->demodulator_priv;
drivers/media/dvb-frontends/bcm3510.c
561
bcm3510_do_hab_cmd(st, CMD_ACQUIRE, MSGID_EXT_TUNER_ACQUIRE, (u8 *) &cmd, sizeof(cmd), NULL, 0);
drivers/media/dvb-frontends/bcm3510.c
566
bcm3510_do_hab_cmd(st, CMD_STATE_CONTROL, MSGID_BERT_CONTROL, (u8 *) &bert, sizeof(bert), NULL, 0);
drivers/media/dvb-frontends/bcm3510.c
567
bcm3510_do_hab_cmd(st, CMD_STATE_CONTROL, MSGID_BERT_SET, (u8 *) &bert, sizeof(bert), NULL, 0);
drivers/media/dvb-frontends/bcm3510.c
569
bcm3510_bert_reset(st);
drivers/media/dvb-frontends/bcm3510.c
571
ret = bcm3510_set_freq(st, c->frequency);
drivers/media/dvb-frontends/bcm3510.c
575
memset(&st->status1,0,sizeof(st->status1));
drivers/media/dvb-frontends/bcm3510.c
576
memset(&st->status2,0,sizeof(st->status2));
drivers/media/dvb-frontends/bcm3510.c
577
st->status_check_interval = 500;
drivers/media/dvb-frontends/bcm3510.c
610
static int bcm3510_write_ram(struct bcm3510_state *st, u16 addr, const u8 *b,
drivers/media/dvb-frontends/bcm3510.c
618
if ((ret = bcm3510_writeB(st,0xa9,vH)) < 0) return ret;
drivers/media/dvb-frontends/bcm3510.c
619
if ((ret = bcm3510_writeB(st,0xaa,vL)) < 0) return ret;
drivers/media/dvb-frontends/bcm3510.c
623
if ((ret = bcm3510_writeB(st,0xab,vD)) < 0)
drivers/media/dvb-frontends/bcm3510.c
632
struct bcm3510_state* st = fe->demodulator_priv;
drivers/media/dvb-frontends/bcm3510.c
639
if ((ret = st->config->request_firmware(fe, &fw, BCM3510_DEFAULT_FIRMWARE)) < 0) {
drivers/media/dvb-frontends/bcm3510.c
650
if ((ret = bcm3510_write_ram(st,addr,&b[i+4],len)) < 0) {
drivers/media/dvb-frontends/bcm3510.c
662
static int bcm3510_check_firmware_version(struct bcm3510_state *st)
drivers/media/dvb-frontends/bcm3510.c
665
bcm3510_do_hab_cmd(st,CMD_GET_VERSION_INFO,MSGID_GET_VERSION_INFO,NULL,0,(u8*)&ver,sizeof(ver));
drivers/media/dvb-frontends/bcm3510.c
680
static int bcm3510_reset(struct bcm3510_state *st)
drivers/media/dvb-frontends/bcm3510.c
686
bcm3510_readB(st,0xa0,&v); v.HCTL1_a0.RESET = 1;
drivers/media/dvb-frontends/bcm3510.c
687
if ((ret = bcm3510_writeB(st,0xa0,v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
693
if ((ret = bcm3510_readB(st,0xa2,&v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
703
static int bcm3510_clear_reset(struct bcm3510_state *st)
drivers/media/dvb-frontends/bcm3510.c
710
if ((ret = bcm3510_writeB(st,0xa0,v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
716
if ((ret = bcm3510_readB(st,0xa2,&v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
727
static int bcm3510_init_cold(struct bcm3510_state *st)
drivers/media/dvb-frontends/bcm3510.c
733
if ((ret = bcm3510_readB(st,0xa2,&v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
741
if ((ret = bcm3510_reset(st)) < 0)
drivers/media/dvb-frontends/bcm3510.c
747
if ((ret = bcm3510_writeB(st,0x2e,v)) < 0)
drivers/media/dvb-frontends/bcm3510.c
751
if ((ret = bcm3510_download_firmware(&st->frontend)) < 0 ||
drivers/media/dvb-frontends/bcm3510.c
752
(ret = bcm3510_clear_reset(st)) < 0)
drivers/media/dvb-frontends/bcm3510.c
762
struct bcm3510_state* st = fe->demodulator_priv;
drivers/media/dvb-frontends/bcm3510.c
767
if ((ret = bcm3510_readB(st,0xca,&j)) < 0)
drivers/media/dvb-frontends/bcm3510.c
775
if ((ret = bcm3510_init_cold(st)) < 0)
drivers/media/dvb-frontends/bcm3510.c
780
bcm3510_check_firmware_version(st);
drivers/media/dvb-frontends/bcm3510.c
788
bcm3510_do_hab_cmd(st,CMD_AUTO_PARAM,MSGID_SET_RF_AGC_SEL,(u8 *)&c,sizeof(c),NULL,0);
drivers/media/dvb-frontends/cx24117.c
1557
u8 reg, st, inv;
drivers/media/dvb-frontends/cx24117.c
1578
st = buf[5];
drivers/media/dvb-frontends/cx24117.c
1581
inv = (((state->demod == 0) ? ~st : st) >> 6) & 1;
drivers/media/dvb-frontends/cx24117.c
1588
idx = st & 0x3f;
drivers/media/dvb-frontends/dib0090.c
2609
struct dib0090_state *st = kzalloc_obj(struct dib0090_state);
drivers/media/dvb-frontends/dib0090.c
2610
if (st == NULL)
drivers/media/dvb-frontends/dib0090.c
2613
st->config = config;
drivers/media/dvb-frontends/dib0090.c
2614
st->i2c = i2c;
drivers/media/dvb-frontends/dib0090.c
2615
st->fe = fe;
drivers/media/dvb-frontends/dib0090.c
2616
mutex_init(&st->i2c_buffer_lock);
drivers/media/dvb-frontends/dib0090.c
2617
fe->tuner_priv = st;
drivers/media/dvb-frontends/dib0090.c
2620
st->current_wbd_table = dib0090_wbd_table_default;
drivers/media/dvb-frontends/dib0090.c
2622
st->current_wbd_table = config->wbd;
drivers/media/dvb-frontends/dib0090.c
2632
kfree(st);
drivers/media/dvb-frontends/dib0090.c
2641
struct dib0090_fw_state *st = kzalloc_obj(struct dib0090_fw_state);
drivers/media/dvb-frontends/dib0090.c
2642
if (st == NULL)
drivers/media/dvb-frontends/dib0090.c
2645
st->config = config;
drivers/media/dvb-frontends/dib0090.c
2646
st->i2c = i2c;
drivers/media/dvb-frontends/dib0090.c
2647
st->fe = fe;
drivers/media/dvb-frontends/dib0090.c
2648
mutex_init(&st->i2c_buffer_lock);
drivers/media/dvb-frontends/dib0090.c
2649
fe->tuner_priv = st;
drivers/media/dvb-frontends/dib0090.c
2651
if (dib0090_fw_reset_digital(fe, st->config) != 0)
drivers/media/dvb-frontends/dib0090.c
2659
kfree(st);
drivers/media/dvb-frontends/dib3000mc.c
664
struct dib3000mc_state *st = demod->demodulator_priv;
drivers/media/dvb-frontends/dib3000mc.c
665
return dibx000_get_i2c_adapter(&st->i2c_master, DIBX000_I2C_INTERFACE_TUNER, gating);
drivers/media/dvb-frontends/dib3000mc.c
912
struct dib3000mc_state *st;
drivers/media/dvb-frontends/dib3000mc.c
913
st = kzalloc_obj(struct dib3000mc_state);
drivers/media/dvb-frontends/dib3000mc.c
914
if (st == NULL)
drivers/media/dvb-frontends/dib3000mc.c
917
st->cfg = cfg;
drivers/media/dvb-frontends/dib3000mc.c
918
st->i2c_adap = i2c_adap;
drivers/media/dvb-frontends/dib3000mc.c
919
st->i2c_addr = i2c_addr;
drivers/media/dvb-frontends/dib3000mc.c
921
demod = &st->demod;
drivers/media/dvb-frontends/dib3000mc.c
922
demod->demodulator_priv = st;
drivers/media/dvb-frontends/dib3000mc.c
923
memcpy(&st->demod.ops, &dib3000mc_ops, sizeof(struct dvb_frontend_ops));
drivers/media/dvb-frontends/dib3000mc.c
925
if (dib3000mc_identify(st) != 0)
drivers/media/dvb-frontends/dib3000mc.c
928
dibx000_init_i2c_master(&st->i2c_master, DIB3000MC, st->i2c_adap, st->i2c_addr);
drivers/media/dvb-frontends/dib3000mc.c
930
dib3000mc_write_word(st, 1037, 0x3130);
drivers/media/dvb-frontends/dib3000mc.c
935
kfree(st);
drivers/media/dvb-frontends/dib7000m.c
1116
struct dib7000m_state *st = demod->demodulator_priv;
drivers/media/dvb-frontends/dib7000m.c
1117
dib7000m_set_output_mode(st, OUTMODE_HIGH_Z);
drivers/media/dvb-frontends/dib7000m.c
1118
dib7000m_set_power_mode(st, DIB7000M_POWER_INTERFACE_ONLY);
drivers/media/dvb-frontends/dib7000m.c
1119
return dib7000m_set_adc_state(st, DIBX000_SLOW_ADC_OFF) |
drivers/media/dvb-frontends/dib7000m.c
1120
dib7000m_set_adc_state(st, DIBX000_ADC_OFF);
drivers/media/dvb-frontends/dib7000m.c
1320
struct dib7000m_state *st = demod->demodulator_priv;
drivers/media/dvb-frontends/dib7000m.c
1321
dibx000_exit_i2c_master(&st->i2c_master);
drivers/media/dvb-frontends/dib7000m.c
1322
kfree(st);
drivers/media/dvb-frontends/dib7000m.c
1327
struct dib7000m_state *st = demod->demodulator_priv;
drivers/media/dvb-frontends/dib7000m.c
1328
return dibx000_get_i2c_adapter(&st->i2c_master, intf, gating);
drivers/media/dvb-frontends/dib7000m.c
1356
struct dib7000m_state st = { .i2c_adap = i2c };
drivers/media/dvb-frontends/dib7000m.c
1361
st.cfg = cfg[k];
drivers/media/dvb-frontends/dib7000m.c
1365
st.i2c_addr = new_addr;
drivers/media/dvb-frontends/dib7000m.c
1366
if (dib7000m_identify(&st) != 0) {
drivers/media/dvb-frontends/dib7000m.c
1367
st.i2c_addr = default_addr;
drivers/media/dvb-frontends/dib7000m.c
1368
if (dib7000m_identify(&st) != 0) {
drivers/media/dvb-frontends/dib7000m.c
1375
dib7000m_set_output_mode(&st, OUTMODE_DIVERSITY);
drivers/media/dvb-frontends/dib7000m.c
1377
dib7000m_write_word(&st, 1796, 0x0); // select DVB-T output
drivers/media/dvb-frontends/dib7000m.c
1380
dib7000m_write_word(&st, 1794, (new_addr << 2) | 0x2);
drivers/media/dvb-frontends/dib7000m.c
1386
st.cfg = cfg[k];
drivers/media/dvb-frontends/dib7000m.c
1387
st.i2c_addr = (0x40 + k) << 1;
drivers/media/dvb-frontends/dib7000m.c
1390
dib7000m_write_word(&st,1794, st.i2c_addr << 2);
drivers/media/dvb-frontends/dib7000m.c
1393
dib7000m_set_output_mode(&st, OUTMODE_HIGH_Z);
drivers/media/dvb-frontends/dib7000m.c
1405
struct dib7000m_state *st;
drivers/media/dvb-frontends/dib7000m.c
1406
st = kzalloc_obj(struct dib7000m_state);
drivers/media/dvb-frontends/dib7000m.c
1407
if (st == NULL)
drivers/media/dvb-frontends/dib7000m.c
1410
memcpy(&st->cfg, cfg, sizeof(struct dib7000m_config));
drivers/media/dvb-frontends/dib7000m.c
1411
st->i2c_adap = i2c_adap;
drivers/media/dvb-frontends/dib7000m.c
1412
st->i2c_addr = i2c_addr;
drivers/media/dvb-frontends/dib7000m.c
1414
demod = &st->demod;
drivers/media/dvb-frontends/dib7000m.c
1415
demod->demodulator_priv = st;
drivers/media/dvb-frontends/dib7000m.c
1416
memcpy(&st->demod.ops, &dib7000m_ops, sizeof(struct dvb_frontend_ops));
drivers/media/dvb-frontends/dib7000m.c
1417
mutex_init(&st->i2c_buffer_lock);
drivers/media/dvb-frontends/dib7000m.c
1419
st->timf_default = cfg->bw->timf;
drivers/media/dvb-frontends/dib7000m.c
1421
if (dib7000m_identify(st) != 0)
drivers/media/dvb-frontends/dib7000m.c
1424
if (st->revision == 0x4000)
drivers/media/dvb-frontends/dib7000m.c
1425
dibx000_init_i2c_master(&st->i2c_master, DIB7000, st->i2c_adap, st->i2c_addr);
drivers/media/dvb-frontends/dib7000m.c
1427
dibx000_init_i2c_master(&st->i2c_master, DIB7000MC, st->i2c_adap, st->i2c_addr);
drivers/media/dvb-frontends/dib7000m.c
1429
dib7000m_demod_reset(st);
drivers/media/dvb-frontends/dib7000m.c
1434
kfree(st);
drivers/media/dvb-frontends/dib7000m.c
448
static int dib7000m_reset_gpio(struct dib7000m_state *st)
drivers/media/dvb-frontends/dib7000m.c
451
dib7000m_write_word(st, 773, st->cfg.gpio_dir);
drivers/media/dvb-frontends/dib7000m.c
452
dib7000m_write_word(st, 774, st->cfg.gpio_val);
drivers/media/dvb-frontends/dib7000m.c
456
dib7000m_write_word(st, 775, st->cfg.gpio_pwm_pos);
drivers/media/dvb-frontends/dib7000m.c
458
dib7000m_write_word(st, 780, st->cfg.pwm_freq_div);
drivers/media/dvb-frontends/dib7000p.c
1398
static int dib7000p_identify(struct dib7000p_state *st)
drivers/media/dvb-frontends/dib7000p.c
1401
dprintk("checking demod on I2C address: %d (%x)\n", st->i2c_addr, st->i2c_addr);
drivers/media/dvb-frontends/dib7000p.c
1403
if ((value = dib7000p_read_word(st, 768)) != 0x01b3) {
drivers/media/dvb-frontends/dib7000p.c
1408
if ((value = dib7000p_read_word(st, 769)) != 0x4000) {
drivers/media/dvb-frontends/dib7000p.c
2001
struct dib7000p_state *st = demod->demodulator_priv;
drivers/media/dvb-frontends/dib7000p.c
2002
dibx000_exit_i2c_master(&st->i2c_master);
drivers/media/dvb-frontends/dib7000p.c
2003
i2c_del_adapter(&st->dib7090_tuner_adap);
drivers/media/dvb-frontends/dib7000p.c
2004
kfree(st);
drivers/media/dvb-frontends/dib7000p.c
2058
struct dib7000p_state *st = demod->demodulator_priv;
drivers/media/dvb-frontends/dib7000p.c
2059
return dibx000_get_i2c_adapter(&st->i2c_master, intf, gating);
drivers/media/dvb-frontends/dib7000p.c
2404
struct dib7000p_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib7000p.c
2405
return &st->dib7090_tuner_adap;
drivers/media/dvb-frontends/dib7000p.c
2743
struct dib7000p_state *st;
drivers/media/dvb-frontends/dib7000p.c
2744
st = kzalloc_obj(struct dib7000p_state);
drivers/media/dvb-frontends/dib7000p.c
2745
if (st == NULL)
drivers/media/dvb-frontends/dib7000p.c
2748
memcpy(&st->cfg, cfg, sizeof(struct dib7000p_config));
drivers/media/dvb-frontends/dib7000p.c
2749
st->i2c_adap = i2c_adap;
drivers/media/dvb-frontends/dib7000p.c
2750
st->i2c_addr = i2c_addr;
drivers/media/dvb-frontends/dib7000p.c
2751
st->gpio_val = cfg->gpio_val;
drivers/media/dvb-frontends/dib7000p.c
2752
st->gpio_dir = cfg->gpio_dir;
drivers/media/dvb-frontends/dib7000p.c
2757
if ((st->cfg.output_mode != OUTMODE_MPEG2_SERIAL) && (st->cfg.output_mode != OUTMODE_MPEG2_PAR_GATED_CLK))
drivers/media/dvb-frontends/dib7000p.c
2758
st->cfg.output_mode = OUTMODE_MPEG2_FIFO;
drivers/media/dvb-frontends/dib7000p.c
2760
demod = &st->demod;
drivers/media/dvb-frontends/dib7000p.c
2761
demod->demodulator_priv = st;
drivers/media/dvb-frontends/dib7000p.c
2762
memcpy(&st->demod.ops, &dib7000p_ops, sizeof(struct dvb_frontend_ops));
drivers/media/dvb-frontends/dib7000p.c
2763
mutex_init(&st->i2c_buffer_lock);
drivers/media/dvb-frontends/dib7000p.c
2765
dib7000p_write_word(st, 1287, 0x0003); /* sram lead in, rdy */
drivers/media/dvb-frontends/dib7000p.c
2767
if (dib7000p_identify(st) != 0)
drivers/media/dvb-frontends/dib7000p.c
2770
st->version = dib7000p_read_word(st, 897);
drivers/media/dvb-frontends/dib7000p.c
2775
st->i2c_master.gated_tuner_i2c_adap.dev.parent = i2c_adap->dev.parent;
drivers/media/dvb-frontends/dib7000p.c
2777
dibx000_init_i2c_master(&st->i2c_master, DIB7000P, st->i2c_adap, st->i2c_addr);
drivers/media/dvb-frontends/dib7000p.c
2780
strscpy(st->dib7090_tuner_adap.name, "DiB7090 tuner interface",
drivers/media/dvb-frontends/dib7000p.c
2781
sizeof(st->dib7090_tuner_adap.name));
drivers/media/dvb-frontends/dib7000p.c
2782
st->dib7090_tuner_adap.algo = &dib7090_tuner_xfer_algo;
drivers/media/dvb-frontends/dib7000p.c
2783
st->dib7090_tuner_adap.algo_data = NULL;
drivers/media/dvb-frontends/dib7000p.c
2784
st->dib7090_tuner_adap.dev.parent = st->i2c_adap->dev.parent;
drivers/media/dvb-frontends/dib7000p.c
2785
i2c_set_adapdata(&st->dib7090_tuner_adap, st);
drivers/media/dvb-frontends/dib7000p.c
2786
i2c_add_adapter(&st->dib7090_tuner_adap);
drivers/media/dvb-frontends/dib7000p.c
2788
dib7000p_demod_reset(st);
drivers/media/dvb-frontends/dib7000p.c
2792
if (st->version == SOC7090) {
drivers/media/dvb-frontends/dib7000p.c
2793
dib7090_set_output_mode(demod, st->cfg.output_mode);
drivers/media/dvb-frontends/dib7000p.c
2800
kfree(st);
drivers/media/dvb-frontends/dib7000p.c
520
static int dib7000p_reset_gpio(struct dib7000p_state *st)
drivers/media/dvb-frontends/dib7000p.c
523
dprintk("gpio dir: %x: val: %x, pwm_pos: %x\n", st->gpio_dir, st->gpio_val, st->cfg.gpio_pwm_pos);
drivers/media/dvb-frontends/dib7000p.c
525
dib7000p_write_word(st, 1029, st->gpio_dir);
drivers/media/dvb-frontends/dib7000p.c
526
dib7000p_write_word(st, 1030, st->gpio_val);
drivers/media/dvb-frontends/dib7000p.c
530
dib7000p_write_word(st, 1032, st->cfg.gpio_pwm_pos);
drivers/media/dvb-frontends/dib7000p.c
532
dib7000p_write_word(st, 1037, st->cfg.pwm_freq_div);
drivers/media/dvb-frontends/dib7000p.c
536
static int dib7000p_cfg_gpio(struct dib7000p_state *st, u8 num, u8 dir, u8 val)
drivers/media/dvb-frontends/dib7000p.c
538
st->gpio_dir = dib7000p_read_word(st, 1029);
drivers/media/dvb-frontends/dib7000p.c
539
st->gpio_dir &= ~(1 << num); /* reset the direction bit */
drivers/media/dvb-frontends/dib7000p.c
540
st->gpio_dir |= (dir & 0x1) << num; /* set the new direction */
drivers/media/dvb-frontends/dib7000p.c
541
dib7000p_write_word(st, 1029, st->gpio_dir);
drivers/media/dvb-frontends/dib7000p.c
543
st->gpio_val = dib7000p_read_word(st, 1030);
drivers/media/dvb-frontends/dib7000p.c
544
st->gpio_val &= ~(1 << num); /* reset the direction bit */
drivers/media/dvb-frontends/dib7000p.c
545
st->gpio_val |= (val & 0x01) << num; /* set the new value */
drivers/media/dvb-frontends/dib7000p.c
546
dib7000p_write_word(st, 1030, st->gpio_val);
drivers/media/dvb-frontends/dib8000.c
1888
struct dib8000_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib8000.c
1889
return &st->dib8096p_tuner_adap;
drivers/media/dvb-frontends/dib8000.c
4379
struct dib8000_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib8000.c
4382
for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (st->fe[index_frontend] != NULL); index_frontend++)
drivers/media/dvb-frontends/dib8000.c
4383
dvb_frontend_detach(st->fe[index_frontend]);
drivers/media/dvb-frontends/dib8000.c
4385
dibx000_exit_i2c_master(&st->i2c_master);
drivers/media/dvb-frontends/dib8000.c
4386
i2c_del_adapter(&st->dib8096p_tuner_adap);
drivers/media/dvb-frontends/dib8000.c
4387
kfree(st->fe[0]);
drivers/media/dvb-frontends/dib8000.c
4388
kfree(st);
drivers/media/dvb-frontends/dib8000.c
4393
struct dib8000_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib8000.c
4394
return dibx000_get_i2c_adapter(&st->i2c_master, intf, gating);
drivers/media/dvb-frontends/dib8000.c
4399
struct dib8000_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib8000.c
4400
u16 val = dib8000_read_word(st, 299) & 0xffef;
drivers/media/dvb-frontends/dib8000.c
4404
return dib8000_write_word(st, 299, val);
drivers/media/dvb-frontends/dib8000.c
4409
struct dib8000_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib8000.c
4411
return dib8000_write_word(st, 305 + id, onoff ? (1 << 13) | pid : 0);
drivers/media/dvb-frontends/dib8000.c
822
static int dib8000_reset_gpio(struct dib8000_state *st)
drivers/media/dvb-frontends/dib8000.c
825
dib8000_write_word(st, 1029, st->cfg.gpio_dir);
drivers/media/dvb-frontends/dib8000.c
826
dib8000_write_word(st, 1030, st->cfg.gpio_val);
drivers/media/dvb-frontends/dib8000.c
830
dib8000_write_word(st, 1032, st->cfg.gpio_pwm_pos);
drivers/media/dvb-frontends/dib8000.c
832
dib8000_write_word(st, 1037, st->cfg.pwm_freq_div);
drivers/media/dvb-frontends/dib8000.c
836
static int dib8000_cfg_gpio(struct dib8000_state *st, u8 num, u8 dir, u8 val)
drivers/media/dvb-frontends/dib8000.c
838
st->cfg.gpio_dir = dib8000_read_word(st, 1029);
drivers/media/dvb-frontends/dib8000.c
839
st->cfg.gpio_dir &= ~(1 << num); /* reset the direction bit */
drivers/media/dvb-frontends/dib8000.c
840
st->cfg.gpio_dir |= (dir & 0x1) << num; /* set the new direction */
drivers/media/dvb-frontends/dib8000.c
841
dib8000_write_word(st, 1029, st->cfg.gpio_dir);
drivers/media/dvb-frontends/dib8000.c
843
st->cfg.gpio_val = dib8000_read_word(st, 1030);
drivers/media/dvb-frontends/dib8000.c
844
st->cfg.gpio_val &= ~(1 << num); /* reset the direction bit */
drivers/media/dvb-frontends/dib8000.c
845
st->cfg.gpio_val |= (val & 0x01) << num; /* set the new value */
drivers/media/dvb-frontends/dib8000.c
846
dib8000_write_word(st, 1030, st->cfg.gpio_val);
drivers/media/dvb-frontends/dib8000.c
848
dprintk("gpio dir: %x: gpio val: %x\n", st->cfg.gpio_dir, st->cfg.gpio_val);
drivers/media/dvb-frontends/dib9000.c
1726
struct dib9000_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib9000.c
1727
return &st->tuner_adap;
drivers/media/dvb-frontends/dib9000.c
1733
struct dib9000_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib9000.c
1734
return &st->component_bus;
drivers/media/dvb-frontends/dib9000.c
1740
struct dib9000_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib9000.c
1741
return dibx000_get_i2c_adapter(&st->i2c_master, intf, gating);
drivers/media/dvb-frontends/dib9000.c
1747
struct dib9000_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/dib9000.c
1749
st->i2c.i2c_adap = i2c;
drivers/media/dvb-frontends/dib9000.c
1754
static int dib9000_cfg_gpio(struct dib9000_state *st, u8 num, u8 dir, u8 val)
drivers/media/dvb-frontends/dib9000.c
1756
st->gpio_dir = dib9000_read_word(st, 773);
drivers/media/dvb-frontends/dib9000.c
1757
st->gpio_dir &= ~(1 << num); /* reset the direction bit */
drivers/media/dvb-frontends/dib9000.c
1758
st->gpio_dir |= (dir & 0x1) << num; /* set the new direction */
drivers/media/dvb-frontends/dib9000.c
1759
dib9000_write_word(st, 773, st->gpio_dir);
drivers/media/dvb-frontends/dib9000.c
1761
st->gpio_val = dib9000_read_word(st, 774);
drivers/media/dvb-frontends/dib9000.c
1762
st->gpio_val &= ~(1 << num); /* reset the direction bit */
drivers/media/dvb-frontends/dib9000.c
1763
st->gpio_val |= (val & 0x01) << num; /* set the new value */
drivers/media/dvb-frontends/dib9000.c
1764
dib9000_write_word(st, 774, st->gpio_val);
drivers/media/dvb-frontends/dib9000.c
1766
dprintk("gpio dir: %04x: gpio val: %04x\n", st->gpio_dir, st->gpio_val);
drivers/media/dvb-frontends/dib9000.c
1849
struct dib9000_state *st = demod->demodulator_priv;
drivers/media/dvb-frontends/dib9000.c
1852
for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (st->fe[index_frontend] != NULL); index_frontend++)
drivers/media/dvb-frontends/dib9000.c
1853
dvb_frontend_detach(st->fe[index_frontend]);
drivers/media/dvb-frontends/dib9000.c
1855
dibx000_exit_i2c_master(&st->i2c_master);
drivers/media/dvb-frontends/dib9000.c
1857
i2c_del_adapter(&st->tuner_adap);
drivers/media/dvb-frontends/dib9000.c
1858
i2c_del_adapter(&st->component_bus);
drivers/media/dvb-frontends/dib9000.c
1859
kfree(st->fe[0]);
drivers/media/dvb-frontends/dib9000.c
1860
kfree(st);
drivers/media/dvb-frontends/dib9000.c
2476
struct dib9000_state *st;
drivers/media/dvb-frontends/dib9000.c
2477
st = kzalloc_obj(struct dib9000_state);
drivers/media/dvb-frontends/dib9000.c
2478
if (st == NULL)
drivers/media/dvb-frontends/dib9000.c
2482
kfree(st);
drivers/media/dvb-frontends/dib9000.c
2486
memcpy(&st->chip.d9.cfg, cfg, sizeof(struct dib9000_config));
drivers/media/dvb-frontends/dib9000.c
2487
st->i2c.i2c_adap = i2c_adap;
drivers/media/dvb-frontends/dib9000.c
2488
st->i2c.i2c_addr = i2c_addr;
drivers/media/dvb-frontends/dib9000.c
2489
st->i2c.i2c_write_buffer = st->i2c_write_buffer;
drivers/media/dvb-frontends/dib9000.c
2490
st->i2c.i2c_read_buffer = st->i2c_read_buffer;
drivers/media/dvb-frontends/dib9000.c
2492
st->gpio_dir = DIB9000_GPIO_DEFAULT_DIRECTIONS;
drivers/media/dvb-frontends/dib9000.c
2493
st->gpio_val = DIB9000_GPIO_DEFAULT_VALUES;
drivers/media/dvb-frontends/dib9000.c
2494
st->gpio_pwm_pos = DIB9000_GPIO_DEFAULT_PWM_POS;
drivers/media/dvb-frontends/dib9000.c
2496
mutex_init(&st->platform.risc.mbx_if_lock);
drivers/media/dvb-frontends/dib9000.c
2497
mutex_init(&st->platform.risc.mbx_lock);
drivers/media/dvb-frontends/dib9000.c
2498
mutex_init(&st->platform.risc.mem_lock);
drivers/media/dvb-frontends/dib9000.c
2499
mutex_init(&st->platform.risc.mem_mbx_lock);
drivers/media/dvb-frontends/dib9000.c
2500
mutex_init(&st->demod_lock);
drivers/media/dvb-frontends/dib9000.c
2501
st->get_frontend_internal = 0;
drivers/media/dvb-frontends/dib9000.c
2503
st->pid_ctrl_index = -2;
drivers/media/dvb-frontends/dib9000.c
2505
st->fe[0] = fe;
drivers/media/dvb-frontends/dib9000.c
2506
fe->demodulator_priv = st;
drivers/media/dvb-frontends/dib9000.c
2507
memcpy(&st->fe[0]->ops, &dib9000_ops, sizeof(struct dvb_frontend_ops));
drivers/media/dvb-frontends/dib9000.c
2512
if ((st->chip.d9.cfg.output_mode != OUTMODE_MPEG2_SERIAL) && (st->chip.d9.cfg.output_mode != OUTMODE_MPEG2_PAR_GATED_CLK))
drivers/media/dvb-frontends/dib9000.c
2513
st->chip.d9.cfg.output_mode = OUTMODE_MPEG2_FIFO;
drivers/media/dvb-frontends/dib9000.c
2515
if (dib9000_identify(&st->i2c) == 0)
drivers/media/dvb-frontends/dib9000.c
2518
dibx000_init_i2c_master(&st->i2c_master, DIB7000MC, st->i2c.i2c_adap, st->i2c.i2c_addr);
drivers/media/dvb-frontends/dib9000.c
2520
st->tuner_adap.dev.parent = i2c_adap->dev.parent;
drivers/media/dvb-frontends/dib9000.c
2521
strscpy(st->tuner_adap.name, "DIB9000_FW TUNER ACCESS",
drivers/media/dvb-frontends/dib9000.c
2522
sizeof(st->tuner_adap.name));
drivers/media/dvb-frontends/dib9000.c
2523
st->tuner_adap.algo = &dib9000_tuner_algo;
drivers/media/dvb-frontends/dib9000.c
2524
st->tuner_adap.algo_data = NULL;
drivers/media/dvb-frontends/dib9000.c
2525
i2c_set_adapdata(&st->tuner_adap, st);
drivers/media/dvb-frontends/dib9000.c
2526
if (i2c_add_adapter(&st->tuner_adap) < 0)
drivers/media/dvb-frontends/dib9000.c
2529
st->component_bus.dev.parent = i2c_adap->dev.parent;
drivers/media/dvb-frontends/dib9000.c
2530
strscpy(st->component_bus.name, "DIB9000_FW COMPONENT BUS ACCESS",
drivers/media/dvb-frontends/dib9000.c
2531
sizeof(st->component_bus.name));
drivers/media/dvb-frontends/dib9000.c
2532
st->component_bus.algo = &dib9000_component_bus_algo;
drivers/media/dvb-frontends/dib9000.c
2533
st->component_bus.algo_data = NULL;
drivers/media/dvb-frontends/dib9000.c
2534
st->component_bus_speed = 340;
drivers/media/dvb-frontends/dib9000.c
2535
i2c_set_adapdata(&st->component_bus, st);
drivers/media/dvb-frontends/dib9000.c
2536
if (i2c_add_adapter(&st->component_bus) < 0)
drivers/media/dvb-frontends/dib9000.c
2544
i2c_del_adapter(&st->tuner_adap);
drivers/media/dvb-frontends/dib9000.c
2546
kfree(st);
drivers/media/dvb-frontends/drx39xyj/drxj.c
1590
int st = -EIO;
drivers/media/dvb-frontends/drx39xyj/drxj.c
1666
st = drxbsp_i2c_write_read(dev_addr,
drivers/media/dvb-frontends/drx39xyj/drxj.c
1672
if ((st != 0) && (first_err == 0)) {
drivers/media/dvb-frontends/drx39xyj/drxj.c
1674
first_err = st;
drivers/media/dvb-frontends/drx39xyj/drxj.c
1681
st = drxbsp_i2c_write_read(dev_addr,
drivers/media/dvb-frontends/drx39xyj/drxj.c
1687
if ((st != 0) && (first_err == 0)) {
drivers/media/dvb-frontends/drx39xyj/drxj.c
1689
first_err = st;
drivers/media/dvb-frontends/gp8psk-fe.c
103
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
104
gp8psk_fe_update_status(st);
drivers/media/dvb-frontends/gp8psk-fe.c
106
*snr = st->snr;
drivers/media/dvb-frontends/gp8psk-fe.c
112
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
113
gp8psk_fe_update_status(st);
drivers/media/dvb-frontends/gp8psk-fe.c
117
if (st->snr > 0xf00)
drivers/media/dvb-frontends/gp8psk-fe.c
120
*strength = (st->snr << 4) + st->snr; /* snr*17 */
drivers/media/dvb-frontends/gp8psk-fe.c
132
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
176
if (st->is_rev1)
drivers/media/dvb-frontends/gp8psk-fe.c
178
st->ops->reload(st->priv);
drivers/media/dvb-frontends/gp8psk-fe.c
227
if (st->is_rev1)
drivers/media/dvb-frontends/gp8psk-fe.c
229
st->ops->out(st->priv, TUNE_8PSK, 0, 0, cmd, 10);
drivers/media/dvb-frontends/gp8psk-fe.c
231
st->lock = 0;
drivers/media/dvb-frontends/gp8psk-fe.c
232
st->next_status_check = jiffies;
drivers/media/dvb-frontends/gp8psk-fe.c
233
st->status_check_interval = 200;
drivers/media/dvb-frontends/gp8psk-fe.c
241
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
245
if (st->ops->out(st->priv, SEND_DISEQC_COMMAND, m->msg[0], 0,
drivers/media/dvb-frontends/gp8psk-fe.c
255
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
263
if (st->ops->out(st->priv, SEND_DISEQC_COMMAND, cmd, 0,
drivers/media/dvb-frontends/gp8psk-fe.c
273
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
275
if (st->ops->out(st->priv, SET_22KHZ_TONE,
drivers/media/dvb-frontends/gp8psk-fe.c
285
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
287
if (st->ops->out(st->priv, SET_LNB_VOLTAGE,
drivers/media/dvb-frontends/gp8psk-fe.c
296
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
298
return st->ops->out(st->priv, USE_EXTRA_VOLT, onoff, 0, NULL, 0);
drivers/media/dvb-frontends/gp8psk-fe.c
303
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
306
if (st->ops->out(st->priv, SET_DN_SWITCH, cmd, 0, NULL, 0))
drivers/media/dvb-frontends/gp8psk-fe.c
309
if (st->ops->out(st->priv, SET_LNB_VOLTAGE, !!(sw_cmd & 0x80),
drivers/media/dvb-frontends/gp8psk-fe.c
318
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
320
kfree(st);
drivers/media/dvb-frontends/gp8psk-fe.c
328
struct gp8psk_fe_state *st;
drivers/media/dvb-frontends/gp8psk-fe.c
335
st = kzalloc_obj(struct gp8psk_fe_state);
drivers/media/dvb-frontends/gp8psk-fe.c
336
if (!st)
drivers/media/dvb-frontends/gp8psk-fe.c
339
memcpy(&st->fe.ops, &gp8psk_fe_ops, sizeof(struct dvb_frontend_ops));
drivers/media/dvb-frontends/gp8psk-fe.c
340
st->fe.demodulator_priv = st;
drivers/media/dvb-frontends/gp8psk-fe.c
341
st->ops = ops;
drivers/media/dvb-frontends/gp8psk-fe.c
342
st->priv = priv;
drivers/media/dvb-frontends/gp8psk-fe.c
343
st->is_rev1 = is_rev1;
drivers/media/dvb-frontends/gp8psk-fe.c
347
return &st->fe;
drivers/media/dvb-frontends/gp8psk-fe.c
41
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
44
st->ops->in(st->priv, GET_8PSK_CONFIG, 0, 0, &status, 1);
drivers/media/dvb-frontends/gp8psk-fe.c
50
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
52
return st->ops->out(st->priv, SET_8PSK_CONFIG, mode, 0, NULL, 0);
drivers/media/dvb-frontends/gp8psk-fe.c
55
static int gp8psk_fe_update_status(struct gp8psk_fe_state *st)
drivers/media/dvb-frontends/gp8psk-fe.c
58
if (time_after(jiffies,st->next_status_check)) {
drivers/media/dvb-frontends/gp8psk-fe.c
59
st->ops->in(st->priv, GET_SIGNAL_LOCK, 0, 0, &st->lock, 1);
drivers/media/dvb-frontends/gp8psk-fe.c
60
st->ops->in(st->priv, GET_SIGNAL_STRENGTH, 0, 0, buf, 6);
drivers/media/dvb-frontends/gp8psk-fe.c
61
st->snr = (buf[1]) << 8 | buf[0];
drivers/media/dvb-frontends/gp8psk-fe.c
62
st->next_status_check = jiffies + (st->status_check_interval*HZ)/1000;
drivers/media/dvb-frontends/gp8psk-fe.c
70
struct gp8psk_fe_state *st = fe->demodulator_priv;
drivers/media/dvb-frontends/gp8psk-fe.c
71
gp8psk_fe_update_status(st);
drivers/media/dvb-frontends/gp8psk-fe.c
73
if (st->lock)
drivers/media/dvb-frontends/gp8psk-fe.c
79
st->status_check_interval = 1000;
drivers/media/dvb-frontends/gp8psk-fe.c
81
st->status_check_interval = 100;
drivers/media/dvb-frontends/mn88443x.c
475
u32 seqrd, st, flg, tmpu, tmpm, tmpl;
drivers/media/dvb-frontends/mn88443x.c
480
st = seqrd & SSEQRD_T_SSEQSTRD_MASK;
drivers/media/dvb-frontends/mn88443x.c
483
if (st >= SSEQRD_T_SSEQSTRD_SYNC)
drivers/media/dvb-frontends/mn88443x.c
485
if (st >= SSEQRD_T_SSEQSTRD_FRAME_SYNC)
drivers/media/dvb-frontends/stv6111.c
565
static int get_rf_strength(struct dvb_frontend *fe, u16 *st)
drivers/media/dvb-frontends/stv6111.c
568
u16 rfagc = *st;
drivers/media/dvb-frontends/stv6111.c
632
*st = 10000 - gain;
drivers/media/i2c/adv7180.c
202
int (*set_std)(struct adv7180_state *st, unsigned int std);
drivers/media/i2c/adv7180.c
203
int (*select_input)(struct adv7180_state *st, unsigned int input);
drivers/media/i2c/vgxy61.c
1616
u64 st, id = 0;
drivers/media/i2c/vgxy61.c
1634
ret = cci_read(sensor->regmap, VGXY61_REG_NVM, &st, NULL);
drivers/media/i2c/vgxy61.c
1637
if (st != VGXY61_NVM_OK)
drivers/media/i2c/vgxy61.c
1638
dev_warn(&client->dev, "Bad nvm state got %u\n", (u8)st);
drivers/media/pci/hws/hws_pci.c
368
u32 st = readl(hws->bar0_base + HWS_REG_INT_STATUS);
drivers/media/pci/hws/hws_pci.c
370
if (st) {
drivers/media/pci/hws/hws_pci.c
371
writel(st, hws->bar0_base + HWS_REG_INT_STATUS); /* W1C */
drivers/media/pci/hws/hws_video.c
593
u32 st = readl(hws->bar0_base + HWS_REG_INT_STATUS);
drivers/media/pci/hws/hws_video.c
595
if (st) {
drivers/media/pci/hws/hws_video.c
596
writel(st, hws->bar0_base + HWS_REG_INT_STATUS); /* W1C */
drivers/media/pci/mgb4/mgb4_trigger.c
103
mgb4_write_reg(&st->mgbdev->video, 0xB4, 1U << 11);
drivers/media/pci/mgb4/mgb4_trigger.c
111
struct trigger_data *st = iio_priv(indio_dev);
drivers/media/pci/mgb4/mgb4_trigger.c
113
st->trig = iio_trigger_alloc(&st->mgbdev->pdev->dev, "%s-dev%d",
drivers/media/pci/mgb4/mgb4_trigger.c
115
if (!st->trig)
drivers/media/pci/mgb4/mgb4_trigger.c
119
"mgb4-trigger", st->trig);
drivers/media/pci/mgb4/mgb4_trigger.c
123
st->trig->ops = &trigger_ops;
drivers/media/pci/mgb4/mgb4_trigger.c
124
iio_trigger_set_drvdata(st->trig, indio_dev);
drivers/media/pci/mgb4/mgb4_trigger.c
125
ret = iio_trigger_register(st->trig);
drivers/media/pci/mgb4/mgb4_trigger.c
129
indio_dev->trig = iio_trigger_get(st->trig);
drivers/media/pci/mgb4/mgb4_trigger.c
134
free_irq(irq, st->trig);
drivers/media/pci/mgb4/mgb4_trigger.c
136
iio_trigger_free(st->trig);
drivers/media/pci/mgb4/mgb4_trigger.c
143
struct trigger_data *st = iio_priv(indio_dev);
drivers/media/pci/mgb4/mgb4_trigger.c
145
iio_trigger_unregister(st->trig);
drivers/media/pci/mgb4/mgb4_trigger.c
146
free_irq(irq, st->trig);
drivers/media/pci/mgb4/mgb4_trigger.c
147
iio_trigger_free(st->trig);
drivers/media/pci/mgb4/mgb4_trigger.c
203
struct trigger_data *st = iio_priv(indio_dev);
drivers/media/pci/mgb4/mgb4_trigger.c
207
remove_trigger(indio_dev, xdma_get_user_irq(st->mgbdev->xdev, 11));
drivers/media/pci/mgb4/mgb4_trigger.c
33
struct trigger_data *st = iio_priv(indio_dev);
drivers/media/pci/mgb4/mgb4_trigger.c
39
*val = mgb4_read_reg(&st->mgbdev->video, 0xA0);
drivers/media/pci/mgb4/mgb4_trigger.c
50
struct trigger_data *st = iio_priv(indio_dev);
drivers/media/pci/mgb4/mgb4_trigger.c
51
int irq = xdma_get_user_irq(st->mgbdev->xdev, 11);
drivers/media/pci/mgb4/mgb4_trigger.c
54
xdma_enable_user_irq(st->mgbdev->xdev, irq);
drivers/media/pci/mgb4/mgb4_trigger.c
56
xdma_disable_user_irq(st->mgbdev->xdev, irq);
drivers/media/pci/mgb4/mgb4_trigger.c
91
struct trigger_data *st = iio_priv(indio_dev);
drivers/media/pci/mgb4/mgb4_trigger.c
97
scan.data = mgb4_read_reg(&st->mgbdev->video, 0xA0);
drivers/media/pci/mgb4/mgb4_trigger.c
98
mgb4_write_reg(&st->mgbdev->video, 0xA0, scan.data);
drivers/media/pci/saa7134/saa7134-video.c
1817
static const char *st[] = {
drivers/media/pci/saa7134/saa7134-video.c
1826
st[st1 & 0x03]);
drivers/media/platform/microchip/microchip-csi2dc.c
94
#define csi2dc_readl(st, reg) readl_relaxed((st)->base + (reg))
drivers/media/platform/microchip/microchip-csi2dc.c
95
#define csi2dc_writel(st, reg, val) writel_relaxed((val), \
drivers/media/platform/microchip/microchip-csi2dc.c
96
(st)->base + (reg))
drivers/media/test-drivers/visl/visl-trace-hevc.h
362
TP_PROTO(const struct v4l2_ctrl_hevc_ext_sps_st_rps *st),
drivers/media/test-drivers/visl/visl-trace-hevc.h
363
TP_ARGS(st),
drivers/media/test-drivers/visl/visl-trace-hevc.h
364
TP_STRUCT__entry(__field_struct(struct v4l2_ctrl_hevc_ext_sps_st_rps, st)),
drivers/media/test-drivers/visl/visl-trace-hevc.h
365
TP_fast_assign(__entry->st = *st),
drivers/media/test-drivers/visl/visl-trace-hevc.h
376
__print_flags(__entry->st.flags, "|",
drivers/media/test-drivers/visl/visl-trace-hevc.h
379
__entry->st.delta_idx_minus1,
drivers/media/test-drivers/visl/visl-trace-hevc.h
380
__entry->st.delta_rps_sign,
drivers/media/test-drivers/visl/visl-trace-hevc.h
381
__entry->st.abs_delta_rps_minus1,
drivers/media/test-drivers/visl/visl-trace-hevc.h
382
__entry->st.num_negative_pics,
drivers/media/test-drivers/visl/visl-trace-hevc.h
383
__entry->st.num_positive_pics,
drivers/media/test-drivers/visl/visl-trace-hevc.h
384
__entry->st.used_by_curr_pic,
drivers/media/test-drivers/visl/visl-trace-hevc.h
385
__entry->st.use_delta_flag,
drivers/media/test-drivers/visl/visl-trace-hevc.h
386
__print_array(__entry->st.delta_poc_s0_minus1,
drivers/media/test-drivers/visl/visl-trace-hevc.h
387
ARRAY_SIZE(__entry->st.delta_poc_s0_minus1),
drivers/media/test-drivers/visl/visl-trace-hevc.h
388
sizeof(__entry->st.delta_poc_s0_minus1[0])),
drivers/media/test-drivers/visl/visl-trace-hevc.h
389
__print_array(__entry->st.delta_poc_s1_minus1,
drivers/media/test-drivers/visl/visl-trace-hevc.h
390
ARRAY_SIZE(__entry->st.delta_poc_s1_minus1),
drivers/media/test-drivers/visl/visl-trace-hevc.h
391
sizeof(__entry->st.delta_poc_s1_minus1[0]))
drivers/media/test-drivers/visl/visl-trace-hevc.h
449
TP_PROTO(const struct v4l2_ctrl_hevc_ext_sps_st_rps *st),
drivers/media/test-drivers/visl/visl-trace-hevc.h
450
TP_ARGS(st)
drivers/media/tuners/tda18271-priv.h
135
#define tda_printk(st, lvl, fmt, arg...) \
drivers/media/tuners/tda18271-priv.h
136
_tda_printk(st, lvl, __func__, fmt, ##arg)
drivers/media/tuners/tda18271-priv.h
138
#define tda_dprintk(st, lvl, fmt, arg...) \
drivers/media/tuners/tda18271-priv.h
141
tda_printk(st, KERN_DEBUG, fmt, ##arg); \
drivers/media/usb/dvb-usb-v2/az6007.c
128
struct az6007_device_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/az6007.c
131
if (mutex_lock_interruptible(&st->mutex) < 0)
drivers/media/usb/dvb-usb-v2/az6007.c
136
mutex_unlock(&st->mutex);
drivers/media/usb/dvb-usb-v2/az6007.c
175
struct az6007_device_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/az6007.c
178
if (mutex_lock_interruptible(&st->mutex) < 0)
drivers/media/usb/dvb-usb-v2/az6007.c
183
mutex_unlock(&st->mutex);
drivers/media/usb/dvb-usb-v2/az6007.c
201
struct az6007_device_state *st = d_to_priv(d);
drivers/media/usb/dvb-usb-v2/az6007.c
205
if (az6007_read(d, AZ6007_READ_IR, 0, 0, st->data, 10) < 0)
drivers/media/usb/dvb-usb-v2/az6007.c
208
if (st->data[1] == 0x44)
drivers/media/usb/dvb-usb-v2/az6007.c
211
if ((st->data[3] ^ st->data[4]) == 0xff) {
drivers/media/usb/dvb-usb-v2/az6007.c
212
if ((st->data[1] ^ st->data[2]) == 0xff) {
drivers/media/usb/dvb-usb-v2/az6007.c
213
code = RC_SCANCODE_NEC(st->data[1], st->data[3]);
drivers/media/usb/dvb-usb-v2/az6007.c
216
code = RC_SCANCODE_NECX(st->data[1] << 8 | st->data[2],
drivers/media/usb/dvb-usb-v2/az6007.c
217
st->data[3]);
drivers/media/usb/dvb-usb-v2/az6007.c
221
code = RC_SCANCODE_NEC32(st->data[1] << 24 |
drivers/media/usb/dvb-usb-v2/az6007.c
222
st->data[2] << 16 |
drivers/media/usb/dvb-usb-v2/az6007.c
223
st->data[3] << 8 |
drivers/media/usb/dvb-usb-v2/az6007.c
224
st->data[4]);
drivers/media/usb/dvb-usb-v2/az6007.c
228
rc_keydown(d->rc_dev, proto, code, st->data[5]);
drivers/media/usb/dvb-usb-v2/az6007.c
615
struct az6007_device_state *st = adap_to_priv(adap);
drivers/media/usb/dvb-usb-v2/az6007.c
618
ret = az6007_read(d, AZ6007_READ_DATA, 6, 0, st->data, 6);
drivers/media/usb/dvb-usb-v2/az6007.c
619
memcpy(mac, st->data, 6);
drivers/media/usb/dvb-usb-v2/az6007.c
629
struct az6007_device_state *st = adap_to_priv(adap);
drivers/media/usb/dvb-usb-v2/az6007.c
640
st->gate_ctrl = adap->fe[0]->ops.i2c_gate_ctrl;
drivers/media/usb/dvb-usb-v2/az6007.c
650
struct az6007_device_state *st = adap_to_priv(adap);
drivers/media/usb/dvb-usb-v2/az6007.c
661
st->gate_ctrl = adap->fe[0]->ops.i2c_gate_ctrl;
drivers/media/usb/dvb-usb-v2/az6007.c
747
struct az6007_device_state *st = d_to_priv(d);
drivers/media/usb/dvb-usb-v2/az6007.c
755
if (mutex_lock_interruptible(&st->mutex) < 0)
drivers/media/usb/dvb-usb-v2/az6007.c
779
st->data, length);
drivers/media/usb/dvb-usb-v2/az6007.c
78
struct az6007_device_state *st = fe_to_priv(fe);
drivers/media/usb/dvb-usb-v2/az6007.c
782
msgs[i + 1].buf[j] = st->data[j + 5];
drivers/media/usb/dvb-usb-v2/az6007.c
801
st->data[j] = msgs[i].buf[j + 1];
drivers/media/usb/dvb-usb-v2/az6007.c
803
st->data, length);
drivers/media/usb/dvb-usb-v2/az6007.c
819
st->data, length);
drivers/media/usb/dvb-usb-v2/az6007.c
821
msgs[i].buf[j] = st->data[j + 5];
drivers/media/usb/dvb-usb-v2/az6007.c
827
mutex_unlock(&st->mutex);
drivers/media/usb/dvb-usb-v2/az6007.c
84
if (!adap || !st)
drivers/media/usb/dvb-usb-v2/az6007.c
88
status = st->gate_ctrl(fe, 1);
drivers/media/usb/dvb-usb-v2/az6007.c
90
status = st->gate_ctrl(fe, 0);
drivers/media/usb/dvb-usb-v2/lmedm04.c
1005
st->i2c_gate = 5;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1011
st->i2c_tuner_gate_w = 4;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1012
st->i2c_tuner_gate_r = 5;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1013
st->i2c_tuner_addr = 0x60;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1014
st->tuner_config = TUNER_S7395;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1015
if (st->dvb_usb_lme2510_firmware != TUNER_S7395) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
1016
st->dvb_usb_lme2510_firmware = TUNER_S7395;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1023
st->i2c_gate = 5;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1029
st->i2c_tuner_gate_w = 5;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1030
st->i2c_tuner_gate_r = 5;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1031
st->i2c_tuner_addr = 0x60;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1032
st->tuner_config = TUNER_RS2000;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1033
st->fe_set_voltage =
drivers/media/usb/dvb-usb-v2/lmedm04.c
1053
st->fe_read_status = adap->fe[0]->ops.read_status;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1054
st->fe_read_signal_strength = adap->fe[0]->ops.read_signal_strength;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1055
st->fe_read_snr = adap->fe[0]->ops.read_snr;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1056
st->fe_read_ber = adap->fe[0]->ops.read_ber;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1057
st->fe_read_ucblocks = adap->fe[0]->ops.read_ucblocks;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1073
struct lme2510_state *st = adap_to_priv(adap);
drivers/media/usb/dvb-usb-v2/lmedm04.c
1077
switch (st->tuner_config) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
1081
ret = st->tuner_config;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1086
ret = st->tuner_config;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1091
ret = st->tuner_config;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1096
ret = st->tuner_config;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1121
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1131
st->i2c_talk_onoff = 1;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1140
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1148
st->dvb_usb_lme2510_firmware = dvb_usb_lme2510_firmware;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1195
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
1197
if (st->lme_urb) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
1198
usb_kill_urb(st->lme_urb);
drivers/media/usb/dvb-usb-v2/lmedm04.c
1199
usb_free_urb(st->lme_urb);
drivers/media/usb/dvb-usb-v2/lmedm04.c
143
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
146
if (max(wlen, rlen) > sizeof(st->usb_buffer))
drivers/media/usb/dvb-usb-v2/lmedm04.c
153
memcpy(st->usb_buffer, wbuf, wlen);
drivers/media/usb/dvb-usb-v2/lmedm04.c
155
ret = dvb_usbv2_generic_rw_locked(d, st->usb_buffer, wlen,
drivers/media/usb/dvb-usb-v2/lmedm04.c
156
st->usb_buffer, rlen);
drivers/media/usb/dvb-usb-v2/lmedm04.c
159
memcpy(rbuf, st->usb_buffer, rlen);
drivers/media/usb/dvb-usb-v2/lmedm04.c
168
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
172
if (st->pid_off)
drivers/media/usb/dvb-usb-v2/lmedm04.c
182
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
190
if (st->pid_size == 0)
drivers/media/usb/dvb-usb-v2/lmedm04.c
198
if (pid_len > st->pid_size)
drivers/media/usb/dvb-usb-v2/lmedm04.c
199
st->pid_size = pid_len;
drivers/media/usb/dvb-usb-v2/lmedm04.c
200
pid_buff[7] = 0x80 + st->pid_size;
drivers/media/usb/dvb-usb-v2/lmedm04.c
205
if (st->stream_on)
drivers/media/usb/dvb-usb-v2/lmedm04.c
216
struct lme2510_state *st = adap_to_priv(adap);
drivers/media/usb/dvb-usb-v2/lmedm04.c
235
if (st->i2c_talk_onoff) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
243
switch (st->tuner_config) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
245
s_tmp = reg_to_16bits(0xff - st->signal_level);
drivers/media/usb/dvb-usb-v2/lmedm04.c
246
c_tmp = reg_to_16bits(0xff - st->signal_sn);
drivers/media/usb/dvb-usb-v2/lmedm04.c
250
s_tmp = 0xffff - (((st->signal_level * 2) << 8) * 5 / 4);
drivers/media/usb/dvb-usb-v2/lmedm04.c
251
c_tmp = reg_to_16bits((0xff - st->signal_sn - 0xa1) * 3);
drivers/media/usb/dvb-usb-v2/lmedm04.c
254
s_tmp = reg_to_16bits(st->signal_level);
drivers/media/usb/dvb-usb-v2/lmedm04.c
255
c_tmp = reg_to_16bits(st->signal_sn);
drivers/media/usb/dvb-usb-v2/lmedm04.c
270
struct lme2510_state *st = adap_to_priv(adap);
drivers/media/usb/dvb-usb-v2/lmedm04.c
315
switch (st->tuner_config) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
318
st->signal_level = ibuf[4];
drivers/media/usb/dvb-usb-v2/lmedm04.c
319
st->signal_sn = ibuf[3];
drivers/media/usb/dvb-usb-v2/lmedm04.c
320
st->time_key = ibuf[7];
drivers/media/usb/dvb-usb-v2/lmedm04.c
327
st->signal_level = ibuf[3];
drivers/media/usb/dvb-usb-v2/lmedm04.c
328
st->signal_sn = ibuf[4];
drivers/media/usb/dvb-usb-v2/lmedm04.c
330
st->signal_level = ibuf[4];
drivers/media/usb/dvb-usb-v2/lmedm04.c
331
st->signal_sn = ibuf[5];
drivers/media/usb/dvb-usb-v2/lmedm04.c
336
st->signal_level = ibuf[5];
drivers/media/usb/dvb-usb-v2/lmedm04.c
337
st->signal_sn = ibuf[4];
drivers/media/usb/dvb-usb-v2/lmedm04.c
338
st->time_key = ibuf[7];
drivers/media/usb/dvb-usb-v2/lmedm04.c
348
st->lock_status &= ~FE_HAS_LOCK;
drivers/media/usb/dvb-usb-v2/lmedm04.c
368
st->int_urb_due = jiffies + msecs_to_jiffies(200);
drivers/media/usb/dvb-usb-v2/lmedm04.c
416
struct lme2510_state *st = adap_to_priv(adap);
drivers/media/usb/dvb-usb-v2/lmedm04.c
428
st->pid_off = true;
drivers/media/usb/dvb-usb-v2/lmedm04.c
430
st->pid_off = false;
drivers/media/usb/dvb-usb-v2/lmedm04.c
432
st->pid_size = 0;
drivers/media/usb/dvb-usb-v2/lmedm04.c
488
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
490
st->i2c_talk_onoff = 1;
drivers/media/usb/dvb-usb-v2/lmedm04.c
499
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
511
gate = (msg[i].addr == st->i2c_tuner_addr)
drivers/media/usb/dvb-usb-v2/lmedm04.c
512
? (read) ? st->i2c_tuner_gate_r
drivers/media/usb/dvb-usb-v2/lmedm04.c
513
: st->i2c_tuner_gate_w
drivers/media/usb/dvb-usb-v2/lmedm04.c
514
: st->i2c_gate;
drivers/media/usb/dvb-usb-v2/lmedm04.c
571
struct lme2510_state *st = adap_to_priv(adap);
drivers/media/usb/dvb-usb-v2/lmedm04.c
580
st->stream_on = 1;
drivers/media/usb/dvb-usb-v2/lmedm04.c
588
st->stream_on = 0;
drivers/media/usb/dvb-usb-v2/lmedm04.c
589
st->i2c_talk_onoff = 1;
drivers/media/usb/dvb-usb-v2/lmedm04.c
684
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
694
switch (st->dvb_usb_lme2510_firmware) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
700
st->dvb_usb_lme2510_firmware = TUNER_S0194;
drivers/media/usb/dvb-usb-v2/lmedm04.c
709
st->dvb_usb_lme2510_firmware = TUNER_LG;
drivers/media/usb/dvb-usb-v2/lmedm04.c
712
st->dvb_usb_lme2510_firmware = TUNER_DEFAULT;
drivers/media/usb/dvb-usb-v2/lmedm04.c
717
switch (st->dvb_usb_lme2510_firmware) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
723
st->dvb_usb_lme2510_firmware = TUNER_S7395;
drivers/media/usb/dvb-usb-v2/lmedm04.c
732
st->dvb_usb_lme2510_firmware = TUNER_LG;
drivers/media/usb/dvb-usb-v2/lmedm04.c
740
st->dvb_usb_lme2510_firmware = TUNER_S0194;
drivers/media/usb/dvb-usb-v2/lmedm04.c
743
st->dvb_usb_lme2510_firmware = TUNER_DEFAULT;
drivers/media/usb/dvb-usb-v2/lmedm04.c
750
st->dvb_usb_lme2510_firmware = TUNER_RS2000;
drivers/media/usb/dvb-usb-v2/lmedm04.c
759
dvb_usb_lme2510_firmware = st->dvb_usb_lme2510_firmware;
drivers/media/usb/dvb-usb-v2/lmedm04.c
814
struct lme2510_state *st = fe_to_priv(fe);
drivers/media/usb/dvb-usb-v2/lmedm04.c
838
if (st->tuner_config == TUNER_RS2000)
drivers/media/usb/dvb-usb-v2/lmedm04.c
839
if (st->fe_set_voltage)
drivers/media/usb/dvb-usb-v2/lmedm04.c
840
st->fe_set_voltage(fe, voltage);
drivers/media/usb/dvb-usb-v2/lmedm04.c
849
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
852
if (st->i2c_talk_onoff) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
853
if (st->fe_read_status) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
854
ret = st->fe_read_status(fe, status);
drivers/media/usb/dvb-usb-v2/lmedm04.c
859
st->lock_status = *status;
drivers/media/usb/dvb-usb-v2/lmedm04.c
861
if (*status & FE_HAS_LOCK && st->stream_on) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
864
st->i2c_talk_onoff = 0;
drivers/media/usb/dvb-usb-v2/lmedm04.c
874
if (st->tuner_config == TUNER_RS2000 &&
drivers/media/usb/dvb-usb-v2/lmedm04.c
875
time_after(jiffies, st->int_urb_due))
drivers/media/usb/dvb-usb-v2/lmedm04.c
876
st->lock_status &= ~FE_HAS_LOCK;
drivers/media/usb/dvb-usb-v2/lmedm04.c
878
*status = st->lock_status;
drivers/media/usb/dvb-usb-v2/lmedm04.c
883
st->i2c_talk_onoff = 1;
drivers/media/usb/dvb-usb-v2/lmedm04.c
894
struct lme2510_state *st = fe_to_priv(fe);
drivers/media/usb/dvb-usb-v2/lmedm04.c
896
if (st->fe_read_signal_strength && !st->stream_on)
drivers/media/usb/dvb-usb-v2/lmedm04.c
897
return st->fe_read_signal_strength(fe, strength);
drivers/media/usb/dvb-usb-v2/lmedm04.c
910
struct lme2510_state *st = fe_to_priv(fe);
drivers/media/usb/dvb-usb-v2/lmedm04.c
912
if (st->fe_read_snr && !st->stream_on)
drivers/media/usb/dvb-usb-v2/lmedm04.c
913
return st->fe_read_snr(fe, snr);
drivers/media/usb/dvb-usb-v2/lmedm04.c
925
struct lme2510_state *st = fe_to_priv(fe);
drivers/media/usb/dvb-usb-v2/lmedm04.c
927
if (st->fe_read_ber && !st->stream_on)
drivers/media/usb/dvb-usb-v2/lmedm04.c
928
return st->fe_read_ber(fe, ber);
drivers/media/usb/dvb-usb-v2/lmedm04.c
937
struct lme2510_state *st = fe_to_priv(fe);
drivers/media/usb/dvb-usb-v2/lmedm04.c
939
if (st->fe_read_ucblocks && !st->stream_on)
drivers/media/usb/dvb-usb-v2/lmedm04.c
940
return st->fe_read_ucblocks(fe, ucblocks);
drivers/media/usb/dvb-usb-v2/lmedm04.c
950
struct lme2510_state *st = adap_to_priv(adap);
drivers/media/usb/dvb-usb-v2/lmedm04.c
958
strlcat(name, fe_name[st->tuner_config], 128);
drivers/media/usb/dvb-usb-v2/lmedm04.c
966
struct lme2510_state *st = d->priv;
drivers/media/usb/dvb-usb-v2/lmedm04.c
969
st->i2c_talk_onoff = 1;
drivers/media/usb/dvb-usb-v2/lmedm04.c
973
st->i2c_gate = 4;
drivers/media/usb/dvb-usb-v2/lmedm04.c
978
st->i2c_tuner_gate_w = 4;
drivers/media/usb/dvb-usb-v2/lmedm04.c
979
st->i2c_tuner_gate_r = 4;
drivers/media/usb/dvb-usb-v2/lmedm04.c
980
st->i2c_tuner_addr = 0x60;
drivers/media/usb/dvb-usb-v2/lmedm04.c
981
st->tuner_config = TUNER_LG;
drivers/media/usb/dvb-usb-v2/lmedm04.c
982
if (st->dvb_usb_lme2510_firmware != TUNER_LG) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
983
st->dvb_usb_lme2510_firmware = TUNER_LG;
drivers/media/usb/dvb-usb-v2/lmedm04.c
989
st->i2c_gate = 4;
drivers/media/usb/dvb-usb-v2/lmedm04.c
994
st->i2c_tuner_gate_w = 4;
drivers/media/usb/dvb-usb-v2/lmedm04.c
995
st->i2c_tuner_gate_r = 5;
drivers/media/usb/dvb-usb-v2/lmedm04.c
996
st->i2c_tuner_addr = 0x60;
drivers/media/usb/dvb-usb-v2/lmedm04.c
997
st->tuner_config = TUNER_S0194;
drivers/media/usb/dvb-usb-v2/lmedm04.c
998
if (st->dvb_usb_lme2510_firmware != TUNER_S0194) {
drivers/media/usb/dvb-usb-v2/lmedm04.c
999
st->dvb_usb_lme2510_firmware = TUNER_S0194;
drivers/media/usb/dvb-usb/af9005.c
101
if (st->data[3] != 0x0d) {
drivers/media/usb/dvb-usb/af9005.c
106
if (st->data[4] != seq) {
drivers/media/usb/dvb-usb/af9005.c
118
if (st->data[16] != 0x01) {
drivers/media/usb/dvb-usb/af9005.c
126
values[i] = st->data[8 + i];
drivers/media/usb/dvb-usb/af9005.c
456
struct af9005_device_state *st = d->priv;
drivers/media/usb/dvb-usb/af9005.c
477
st->data[0] = (u8) (packet_len & 0xff);
drivers/media/usb/dvb-usb/af9005.c
478
st->data[1] = (u8) ((packet_len & 0xff00) >> 8);
drivers/media/usb/dvb-usb/af9005.c
48
struct af9005_device_state *st = d->priv;
drivers/media/usb/dvb-usb/af9005.c
480
st->data[2] = 0x26; /* packet type */
drivers/media/usb/dvb-usb/af9005.c
481
st->data[3] = wlen + 3;
drivers/media/usb/dvb-usb/af9005.c
482
st->data[4] = seq = st->sequence++;
drivers/media/usb/dvb-usb/af9005.c
483
st->data[5] = command;
drivers/media/usb/dvb-usb/af9005.c
484
st->data[6] = wlen;
drivers/media/usb/dvb-usb/af9005.c
486
st->data[7 + i] = wbuf[i];
drivers/media/usb/dvb-usb/af9005.c
487
ret = dvb_usb_generic_rw(d, st->data, wlen + 7, st->data, rlen + 7, 0);
drivers/media/usb/dvb-usb/af9005.c
488
if (st->data[2] != 0x27) {
drivers/media/usb/dvb-usb/af9005.c
491
} else if (st->data[4] != seq) {
drivers/media/usb/dvb-usb/af9005.c
494
} else if (st->data[5] != 0x01) {
drivers/media/usb/dvb-usb/af9005.c
497
} else if (st->data[6] != rlen) {
drivers/media/usb/dvb-usb/af9005.c
503
rbuf[i] = st->data[i + 7];
drivers/media/usb/dvb-usb/af9005.c
513
struct af9005_device_state *st = d->priv;
drivers/media/usb/dvb-usb/af9005.c
519
memset(st->data, 0, sizeof(st->data));
drivers/media/usb/dvb-usb/af9005.c
521
st->data[0] = 14; /* length of rest of packet low */
drivers/media/usb/dvb-usb/af9005.c
522
st->data[1] = 0; /* length of rest of packer high */
drivers/media/usb/dvb-usb/af9005.c
524
st->data[2] = 0x2a; /* read/write eeprom */
drivers/media/usb/dvb-usb/af9005.c
526
st->data[3] = 12; /* size */
drivers/media/usb/dvb-usb/af9005.c
528
st->data[4] = seq = st->sequence++;
drivers/media/usb/dvb-usb/af9005.c
530
st->data[5] = 0; /* read */
drivers/media/usb/dvb-usb/af9005.c
532
st->data[6] = len;
drivers/media/usb/dvb-usb/af9005.c
533
st->data[7] = address;
drivers/media/usb/dvb-usb/af9005.c
534
ret = dvb_usb_generic_rw(d, st->data, 16, st->data, 14, 0);
drivers/media/usb/dvb-usb/af9005.c
535
if (st->data[2] != 0x2b) {
drivers/media/usb/dvb-usb/af9005.c
538
} else if (st->data[3] != 10) {
drivers/media/usb/dvb-usb/af9005.c
541
} else if (st->data[4] != seq) {
drivers/media/usb/dvb-usb/af9005.c
544
} else if (st->data[5] != 1) {
drivers/media/usb/dvb-usb/af9005.c
551
values[i] = st->data[6 + i];
drivers/media/usb/dvb-usb/af9005.c
62
st->data[0] = 14; /* rest of buffer length low */
drivers/media/usb/dvb-usb/af9005.c
63
st->data[1] = 0; /* rest of buffer length high */
drivers/media/usb/dvb-usb/af9005.c
65
st->data[2] = AF9005_REGISTER_RW; /* register operation */
drivers/media/usb/dvb-usb/af9005.c
66
st->data[3] = 12; /* rest of buffer length */
drivers/media/usb/dvb-usb/af9005.c
68
st->data[4] = seq = st->sequence++; /* sequence number */
drivers/media/usb/dvb-usb/af9005.c
70
st->data[5] = (u8) (reg >> 8); /* register address */
drivers/media/usb/dvb-usb/af9005.c
71
st->data[6] = (u8) (reg & 0xff);
drivers/media/usb/dvb-usb/af9005.c
780
struct af9005_device_state *st = d->priv;
drivers/media/usb/dvb-usb/af9005.c
787
if (st->led_state != temp) {
drivers/media/usb/dvb-usb/af9005.c
800
st->led_state = temp;
drivers/media/usb/dvb-usb/af9005.c
830
struct af9005_device_state *st = d->priv;
drivers/media/usb/dvb-usb/af9005.c
843
st->data[0] = 3; /* rest of packet length low */
drivers/media/usb/dvb-usb/af9005.c
844
st->data[1] = 0; /* rest of packet length high */
drivers/media/usb/dvb-usb/af9005.c
845
st->data[2] = 0x40; /* read remote */
drivers/media/usb/dvb-usb/af9005.c
846
st->data[3] = 1; /* rest of packet length */
drivers/media/usb/dvb-usb/af9005.c
847
st->data[4] = seq = st->sequence++; /* sequence number */
drivers/media/usb/dvb-usb/af9005.c
848
ret = dvb_usb_generic_rw(d, st->data, 5, st->data, 256, 0);
drivers/media/usb/dvb-usb/af9005.c
85
st->data[8 + i] = values[i];
drivers/media/usb/dvb-usb/af9005.c
853
if (st->data[2] != 0x41) {
drivers/media/usb/dvb-usb/af9005.c
857
} else if (st->data[4] != seq) {
drivers/media/usb/dvb-usb/af9005.c
862
len = st->data[5];
drivers/media/usb/dvb-usb/af9005.c
870
debug_dump((st->data + 6), len, deb_rc);
drivers/media/usb/dvb-usb/af9005.c
871
ret = rc_decode(d, &st->data[6], len, event, state);
drivers/media/usb/dvb-usb/af9005.c
88
st->data[8] = values[0];
drivers/media/usb/dvb-usb/af9005.c
89
st->data[7] = command;
drivers/media/usb/dvb-usb/af9005.c
91
ret = dvb_usb_generic_rw(d, st->data, 16, st->data, 17, 0);
drivers/media/usb/dvb-usb/af9005.c
96
if (st->data[2] != AF9005_REGISTER_RW_ACK) {
drivers/media/usb/dvb-usb/cinergyT2-core.c
144
struct cinergyt2_state *st = d->priv;
drivers/media/usb/dvb-usb/cinergyT2-core.c
150
st->data[0] = CINERGYT2_EP1_GET_RC_EVENTS;
drivers/media/usb/dvb-usb/cinergyT2-core.c
152
ret = dvb_usb_generic_rw(d, st->data, 1, st->data, 5, 0);
drivers/media/usb/dvb-usb/cinergyT2-core.c
156
if (st->data[4] == 0xff) {
drivers/media/usb/dvb-usb/cinergyT2-core.c
158
st->rc_counter++;
drivers/media/usb/dvb-usb/cinergyT2-core.c
159
if (st->rc_counter > RC_REPEAT_DELAY) {
drivers/media/usb/dvb-usb/cinergyT2-core.c
175
st->data[2] = ~st->data[1];
drivers/media/usb/dvb-usb/cinergyT2-core.c
176
dvb_usb_nec_rc_key_to_event(d, st->data, event, state);
drivers/media/usb/dvb-usb/cinergyT2-core.c
177
if (st->data[0] != 0) {
drivers/media/usb/dvb-usb/cinergyT2-core.c
179
st->rc_counter = 0;
drivers/media/usb/dvb-usb/cinergyT2-core.c
181
deb_rc("key: %*ph\n", 5, st->data);
drivers/media/usb/dvb-usb/cinergyT2-core.c
38
struct cinergyt2_state *st = d->priv;
drivers/media/usb/dvb-usb/cinergyT2-core.c
42
st->data[0] = CINERGYT2_EP1_CONTROL_STREAM_TRANSFER;
drivers/media/usb/dvb-usb/cinergyT2-core.c
43
st->data[1] = enable ? 1 : 0;
drivers/media/usb/dvb-usb/cinergyT2-core.c
45
ret = dvb_usb_generic_rw(d, st->data, 2, st->data, 64, 0);
drivers/media/usb/dvb-usb/cinergyT2-core.c
53
struct cinergyt2_state *st = d->priv;
drivers/media/usb/dvb-usb/cinergyT2-core.c
57
st->data[0] = CINERGYT2_EP1_SLEEP_MODE;
drivers/media/usb/dvb-usb/cinergyT2-core.c
58
st->data[1] = enable ? 0 : 1;
drivers/media/usb/dvb-usb/cinergyT2-core.c
60
ret = dvb_usb_generic_rw(d, st->data, 2, st->data, 3, 0);
drivers/media/usb/dvb-usb/cinergyT2-core.c
69
struct cinergyt2_state *st = d->priv;
drivers/media/usb/dvb-usb/cinergyT2-core.c
75
st->data[0] = CINERGYT2_EP1_GET_FIRMWARE_VERSION;
drivers/media/usb/dvb-usb/cinergyT2-core.c
77
ret = dvb_usb_generic_rw(d, st->data, 1, st->data, 3, 0);
drivers/media/usb/dvb-usb/cxusb.c
100
st->data[0] = cmd;
drivers/media/usb/dvb-usb/cxusb.c
101
memcpy(&st->data[1], wbuf, wlen);
drivers/media/usb/dvb-usb/cxusb.c
102
ret = dvb_usb_generic_rw(d, st->data, 1 + wlen, st->data, rlen, 0);
drivers/media/usb/dvb-usb/cxusb.c
104
memcpy(rbuf, st->data, rlen);
drivers/media/usb/dvb-usb/cxusb.c
113
struct cxusb_state *st = d->priv;
drivers/media/usb/dvb-usb/cxusb.c
116
if (st->gpio_write_state[GPIO_TUNER] == onoff &&
drivers/media/usb/dvb-usb/cxusb.c
117
!st->gpio_write_refresh[GPIO_TUNER])
drivers/media/usb/dvb-usb/cxusb.c
1189
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/cxusb.c
1197
tun_i2c = st->dib7000p_ops.get_i2c_master(adap->fe_adap[0].fe,
drivers/media/usb/dvb-usb/cxusb.c
1204
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/cxusb.c
126
st->gpio_write_state[GPIO_TUNER] = onoff;
drivers/media/usb/dvb-usb/cxusb.c
127
st->gpio_write_refresh[GPIO_TUNER] = false;
drivers/media/usb/dvb-usb/cxusb.c
1671
struct cxusb_state *st = d->priv;
drivers/media/usb/dvb-usb/cxusb.c
1678
client = st->i2c_client_tuner;
drivers/media/usb/dvb-usb/cxusb.c
1685
client = st->i2c_client_demod;
drivers/media/usb/dvb-usb/cxusb.c
835
struct cxusb_state *st = dvbdev->priv;
drivers/media/usb/dvb-usb/cxusb.c
86
struct cxusb_state *st = d->priv;
drivers/media/usb/dvb-usb/cxusb.c
886
for (i = 0; i < ARRAY_SIZE(st->gpio_write_refresh); i++)
drivers/media/usb/dvb-usb/cxusb.c
887
st->gpio_write_refresh[i] = true;
drivers/media/usb/dvb-usb/dib0700_core.c
110
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
118
st->buf[0] = REQUEST_SET_GPIO;
drivers/media/usb/dvb-usb/dib0700_core.c
119
st->buf[1] = gpio;
drivers/media/usb/dvb-usb/dib0700_core.c
120
st->buf[2] = ((gpio_dir & 0x01) << 7) | ((gpio_val & 0x01) << 6);
drivers/media/usb/dvb-usb/dib0700_core.c
122
ret = dib0700_ctrl_wr(d, st->buf, 3);
drivers/media/usb/dvb-usb/dib0700_core.c
130
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
133
if (st->fw_version >= 0x10201) {
drivers/media/usb/dvb-usb/dib0700_core.c
139
st->buf[0] = REQUEST_SET_USB_XFER_LEN;
drivers/media/usb/dvb-usb/dib0700_core.c
140
st->buf[1] = (nb_ts_packets >> 8) & 0xff;
drivers/media/usb/dvb-usb/dib0700_core.c
141
st->buf[2] = nb_ts_packets & 0xff;
drivers/media/usb/dvb-usb/dib0700_core.c
145
ret = dib0700_ctrl_wr(d, st->buf, 3);
drivers/media/usb/dvb-usb/dib0700_core.c
165
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
210
value, index, st->buf,
drivers/media/usb/dvb-usb/dib0700_core.c
218
if (msg[i].len > sizeof(st->buf)) {
drivers/media/usb/dvb-usb/dib0700_core.c
225
memcpy(msg[i].buf, st->buf, msg[i].len);
drivers/media/usb/dvb-usb/dib0700_core.c
237
st->buf[0] = REQUEST_NEW_I2C_WRITE;
drivers/media/usb/dvb-usb/dib0700_core.c
238
st->buf[1] = msg[i].addr << 1;
drivers/media/usb/dvb-usb/dib0700_core.c
239
st->buf[2] = (en_start << 7) | (en_stop << 6) |
drivers/media/usb/dvb-usb/dib0700_core.c
24
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
242
st->buf[3] = ((gen_mode << 6) & 0xC0) |
drivers/media/usb/dvb-usb/dib0700_core.c
245
if (msg[i].len > sizeof(st->buf) - 4) {
drivers/media/usb/dvb-usb/dib0700_core.c
254
memcpy(&st->buf[4], msg[i].buf, msg[i].len);
drivers/media/usb/dvb-usb/dib0700_core.c
257
debug_dump(st->buf, msg[i].len + 4, deb_data);
drivers/media/usb/dvb-usb/dib0700_core.c
263
0, 0, st->buf, msg[i].len + 4,
drivers/media/usb/dvb-usb/dib0700_core.c
286
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
299
st->buf[1] = msg[i].addr << 1;
drivers/media/usb/dvb-usb/dib0700_core.c
301
if (msg[i].len > sizeof(st->buf) - 2) {
drivers/media/usb/dvb-usb/dib0700_core.c
307
memcpy(&st->buf[2], msg[i].buf, msg[i].len);
drivers/media/usb/dvb-usb/dib0700_core.c
311
st->buf[0] = REQUEST_I2C_READ;
drivers/media/usb/dvb-usb/dib0700_core.c
312
st->buf[1] |= 1;
drivers/media/usb/dvb-usb/dib0700_core.c
315
len = dib0700_ctrl_rd(d, st->buf, msg[i].len + 2,
drivers/media/usb/dvb-usb/dib0700_core.c
316
st->buf, msg[i + 1].len);
drivers/media/usb/dvb-usb/dib0700_core.c
324
if (msg[i + 1].len > sizeof(st->buf)) {
drivers/media/usb/dvb-usb/dib0700_core.c
330
memcpy(msg[i + 1].buf, st->buf, msg[i + 1].len);
drivers/media/usb/dvb-usb/dib0700_core.c
336
st->buf[0] = REQUEST_I2C_WRITE;
drivers/media/usb/dvb-usb/dib0700_core.c
337
result = dib0700_ctrl_wr(d, st->buf, msg[i].len + 2);
drivers/media/usb/dvb-usb/dib0700_core.c
35
st->buf, 16, USB_CTRL_GET_TIMEOUT);
drivers/media/usb/dvb-usb/dib0700_core.c
354
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
356
if (st->fw_use_new_i2c_api == 1) {
drivers/media/usb/dvb-usb/dib0700_core.c
37
*hwversion = (st->buf[0] << 24) | (st->buf[1] << 16) |
drivers/media/usb/dvb-usb/dib0700_core.c
38
(st->buf[2] << 8) | st->buf[3];
drivers/media/usb/dvb-usb/dib0700_core.c
40
*romversion = (st->buf[4] << 24) | (st->buf[5] << 16) |
drivers/media/usb/dvb-usb/dib0700_core.c
404
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
41
(st->buf[6] << 8) | st->buf[7];
drivers/media/usb/dvb-usb/dib0700_core.c
412
st->buf[0] = REQUEST_SET_CLOCK;
drivers/media/usb/dvb-usb/dib0700_core.c
413
st->buf[1] = (en_pll << 7) | (pll_src << 6) |
drivers/media/usb/dvb-usb/dib0700_core.c
415
st->buf[2] = (pll_prediv >> 8) & 0xff; /* MSB */
drivers/media/usb/dvb-usb/dib0700_core.c
416
st->buf[3] = pll_prediv & 0xff; /* LSB */
drivers/media/usb/dvb-usb/dib0700_core.c
417
st->buf[4] = (pll_loopdiv >> 8) & 0xff; /* MSB */
drivers/media/usb/dvb-usb/dib0700_core.c
418
st->buf[5] = pll_loopdiv & 0xff; /* LSB */
drivers/media/usb/dvb-usb/dib0700_core.c
419
st->buf[6] = (free_div >> 8) & 0xff; /* MSB */
drivers/media/usb/dvb-usb/dib0700_core.c
420
st->buf[7] = free_div & 0xff; /* LSB */
drivers/media/usb/dvb-usb/dib0700_core.c
421
st->buf[8] = (dsuScaler >> 8) & 0xff; /* MSB */
drivers/media/usb/dvb-usb/dib0700_core.c
422
st->buf[9] = dsuScaler & 0xff; /* LSB */
drivers/media/usb/dvb-usb/dib0700_core.c
424
ret = dib0700_ctrl_wr(d, st->buf, 10);
drivers/media/usb/dvb-usb/dib0700_core.c
43
*ramversion = (st->buf[8] << 24) | (st->buf[9] << 16) |
drivers/media/usb/dvb-usb/dib0700_core.c
432
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
44
(st->buf[10] << 8) | st->buf[11];
drivers/media/usb/dvb-usb/dib0700_core.c
444
st->buf[0] = REQUEST_SET_I2C_PARAM;
drivers/media/usb/dvb-usb/dib0700_core.c
446
st->buf[1] = 0;
drivers/media/usb/dvb-usb/dib0700_core.c
447
st->buf[2] = (u8) (divider >> 8);
drivers/media/usb/dvb-usb/dib0700_core.c
448
st->buf[3] = (u8) (divider & 0xff);
drivers/media/usb/dvb-usb/dib0700_core.c
450
st->buf[4] = (u8) (divider >> 8);
drivers/media/usb/dvb-usb/dib0700_core.c
451
st->buf[5] = (u8) (divider & 0xff);
drivers/media/usb/dvb-usb/dib0700_core.c
453
st->buf[6] = (u8) (divider >> 8);
drivers/media/usb/dvb-usb/dib0700_core.c
454
st->buf[7] = (u8) (divider & 0xff);
drivers/media/usb/dvb-usb/dib0700_core.c
457
(st->buf[2] << 8) | (st->buf[3]), (st->buf[4] << 8) |
drivers/media/usb/dvb-usb/dib0700_core.c
458
st->buf[5], (st->buf[6] << 8) | st->buf[7], scl_kHz);
drivers/media/usb/dvb-usb/dib0700_core.c
46
*fwtype = (st->buf[12] << 24) | (st->buf[13] << 16) |
drivers/media/usb/dvb-usb/dib0700_core.c
460
ret = dib0700_ctrl_wr(d, st->buf, 8);
drivers/media/usb/dvb-usb/dib0700_core.c
47
(st->buf[14] << 8) | st->buf[15];
drivers/media/usb/dvb-usb/dib0700_core.c
585
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
588
if ((onoff != 0) && (st->fw_version >= 0x10201)) {
drivers/media/usb/dvb-usb/dib0700_core.c
592
st->nb_packet_buffer_size);
drivers/media/usb/dvb-usb/dib0700_core.c
601
st->buf[0] = REQUEST_ENABLE_VIDEO;
drivers/media/usb/dvb-usb/dib0700_core.c
604
st->buf[1] = (onoff << 4) | 0x00;
drivers/media/usb/dvb-usb/dib0700_core.c
606
if (st->disable_streaming_master_mode == 1)
drivers/media/usb/dvb-usb/dib0700_core.c
607
st->buf[2] = 0x00;
drivers/media/usb/dvb-usb/dib0700_core.c
609
st->buf[2] = 0x01 << 4; /* Master mode */
drivers/media/usb/dvb-usb/dib0700_core.c
611
st->buf[3] = 0x00;
drivers/media/usb/dvb-usb/dib0700_core.c
623
st->channel_state |= 1 << adapt_nr;
drivers/media/usb/dvb-usb/dib0700_core.c
625
st->channel_state &= ~(1 << adapt_nr);
drivers/media/usb/dvb-usb/dib0700_core.c
627
st->buf[2] |= st->channel_state;
drivers/media/usb/dvb-usb/dib0700_core.c
630
adapt_nr, onoff ? "ON" : "OFF", 3, st->buf);
drivers/media/usb/dvb-usb/dib0700_core.c
632
ret = dib0700_ctrl_wr(adap->dev, st->buf, 4);
drivers/media/usb/dvb-usb/dib0700_core.c
641
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
649
st->buf[0] = REQUEST_SET_RC;
drivers/media/usb/dvb-usb/dib0700_core.c
650
st->buf[1] = 0;
drivers/media/usb/dvb-usb/dib0700_core.c
651
st->buf[2] = 0;
drivers/media/usb/dvb-usb/dib0700_core.c
661
if (st->fw_version < 0x10200) {
drivers/media/usb/dvb-usb/dib0700_core.c
672
st->buf[1] = new_proto;
drivers/media/usb/dvb-usb/dib0700_core.c
674
ret = dib0700_ctrl_wr(d, st->buf, 3);
drivers/media/usb/dvb-usb/dib0700_core.c
809
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
816
if (st->fw_version < 0x10200 || !intf)
drivers/media/usb/dvb-usb/dib0700_core.c
885
struct dib0700_state *st = dev->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
894
st->fw_version = fw_version;
drivers/media/usb/dvb-usb/dib0700_core.c
895
st->nb_packet_buffer_size = (u32)nb_packet_buffer_size;
drivers/media/usb/dvb-usb/dib0700_core.c
898
if (st->fw_version >= 0x10200)
drivers/media/usb/dvb-usb/dib0700_core.c
914
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_core.c
918
client = st->i2c_client_tuner;
drivers/media/usb/dvb-usb/dib0700_core.c
925
client = st->i2c_client_demod;
drivers/media/usb/dvb-usb/dib0700_devices.c
104
st->mt2060_if1[adap->id] = 1220;
drivers/media/usb/dvb-usb/dib0700_devices.c
1307
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
1308
struct i2c_adapter *tun_i2c = st->dib8000_ops.get_i2c_master(adap->fe_adap[0].fe,
drivers/media/usb/dvb-usb/dib0700_devices.c
1321
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
1738
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
1739
struct i2c_adapter *tun_i2c = st->dib8000_ops.get_i2c_master(adap->fe_adap[0].fe, DIBX000_I2C_INTERFACE_TUNER, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
1745
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
1795
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
1797
struct dvb_frontend *fe_slave = st->dib8000_ops.get_slave_frontend(adap->fe_adap[0].fe, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
1800
tun_i2c = st->dib8000_ops.get_i2c_master(fe_slave, DIBX000_I2C_INTERFACE_TUNER, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
1806
tun_i2c = st->dib8000_ops.get_i2c_master(adap->fe_adap[0].fe, DIBX000_I2C_INTERFACE_TUNER, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
1810
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
2139
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
2148
st->fw_use_new_i2c_api = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
2175
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
2176
struct i2c_adapter *tun_i2c = st->dib8000_ops.get_i2c_tuner(adap->fe_adap[0].fe);
drivers/media/usb/dvb-usb/dib0700_devices.c
2178
tfe8096p_dib0090_config.reset = st->dib8000_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
2179
tfe8096p_dib0090_config.sleep = st->dib8000_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
2186
st->dib8000_ops.set_gpio(adap->fe_adap[0].fe, 8, 0, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
2188
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
2379
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
2385
st->fw_use_new_i2c_api = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
2454
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
2462
st->fw_use_new_i2c_api = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3079
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3080
struct i2c_adapter *tun_i2c = st->dib7000p_ops.get_i2c_tuner(adap->fe_adap[0].fe);
drivers/media/usb/dvb-usb/dib0700_devices.c
3082
nim7090_dib0090_config.reset = st->dib7000p_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
3083
nim7090_dib0090_config.sleep = st->dib7000p_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
3084
nim7090_dib0090_config.get_adc_power = st->dib7000p_ops.get_adc_power;
drivers/media/usb/dvb-usb/dib0700_devices.c
3089
st->dib7000p_ops.set_gpio(adap->fe_adap[0].fe, 8, 0, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
3091
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
3098
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3105
st->disable_streaming_master_mode = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3164
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3165
struct i2c_adapter *tun_i2c = st->dib7000p_ops.get_i2c_tuner(adap->fe_adap[0].fe);
drivers/media/usb/dvb-usb/dib0700_devices.c
3167
tfe7090pvr_dib0090_config[0].reset = st->dib7000p_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
3168
tfe7090pvr_dib0090_config[0].sleep = st->dib7000p_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
3169
tfe7090pvr_dib0090_config[0].get_adc_power = st->dib7000p_ops.get_adc_power;
drivers/media/usb/dvb-usb/dib0700_devices.c
3174
st->dib7000p_ops.set_gpio(adap->fe_adap[0].fe, 8, 0, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
3176
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
3183
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3184
struct i2c_adapter *tun_i2c = st->dib7000p_ops.get_i2c_tuner(adap->fe_adap[0].fe);
drivers/media/usb/dvb-usb/dib0700_devices.c
3186
tfe7090pvr_dib0090_config[1].reset = st->dib7000p_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
3187
tfe7090pvr_dib0090_config[1].sleep = st->dib7000p_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
3188
tfe7090pvr_dib0090_config[1].get_adc_power = st->dib7000p_ops.get_adc_power;
drivers/media/usb/dvb-usb/dib0700_devices.c
3193
st->dib7000p_ops.set_gpio(adap->fe_adap[0].fe, 8, 0, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
3195
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
3202
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3209
st->disable_streaming_master_mode = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3238
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3240
st->dib7000p_ops.get_i2c_tuner(adap->fe_adap[0].fe);
drivers/media/usb/dvb-usb/dib0700_devices.c
3243
tfe7790p_dib0090_config.reset = st->dib7000p_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
3244
tfe7790p_dib0090_config.sleep = st->dib7000p_ops.tuner_sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
3245
tfe7790p_dib0090_config.get_adc_power = st->dib7000p_ops.get_adc_power;
drivers/media/usb/dvb-usb/dib0700_devices.c
3251
st->dib7000p_ops.set_gpio(adap->fe_adap[0].fe, 8, 0, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
3253
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
3379
struct dib0700_state *st = dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3409
st->read_status = adap->fe_adap[0].fe->ops.read_status;
drivers/media/usb/dvb-usb/dib0700_devices.c
3411
st->sleep = adap->fe_adap[0].fe->ops.sleep;
drivers/media/usb/dvb-usb/dib0700_devices.c
3441
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3444
st->fw_use_new_i2c_api = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3447
st->disable_streaming_master_mode = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3603
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3639
st->is_dib7000pc = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3703
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3706
st->fw_use_new_i2c_api = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3708
st->disable_streaming_master_mode = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3740
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
3747
st->fw_use_new_i2c_api = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3748
st->disable_streaming_master_mode = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
3781
st->i2c_client_demod = client_demod;
drivers/media/usb/dvb-usb/dib0700_devices.c
3809
st->i2c_client_tuner = client_tuner;
drivers/media/usb/dvb-usb/dib0700_devices.c
522
struct dib0700_state *st = d->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
524
if (st->fw_version >= 0x10200) {
drivers/media/usb/dvb-usb/dib0700_devices.c
532
st->buf[0] = REQUEST_POLL_RC;
drivers/media/usb/dvb-usb/dib0700_devices.c
533
st->buf[1] = 0;
drivers/media/usb/dvb-usb/dib0700_devices.c
535
i = dib0700_ctrl_rd(d, st->buf, 2, st->buf, 4);
drivers/media/usb/dvb-usb/dib0700_devices.c
542
if (st->buf[0] == 0 && st->buf[1] == 0
drivers/media/usb/dvb-usb/dib0700_devices.c
543
&& st->buf[2] == 0 && st->buf[3] == 0)
drivers/media/usb/dvb-usb/dib0700_devices.c
553
if ((st->buf[3 - 2] == 0x00) && (st->buf[3 - 3] == 0x00) &&
drivers/media/usb/dvb-usb/dib0700_devices.c
554
(st->buf[3] == 0xff)) {
drivers/media/usb/dvb-usb/dib0700_devices.c
560
scancode = RC_SCANCODE_NEC(st->buf[3 - 2], st->buf[3 - 3]);
drivers/media/usb/dvb-usb/dib0700_devices.c
567
scancode = RC_SCANCODE_RC5(st->buf[3 - 2], st->buf[3 - 3]);
drivers/media/usb/dvb-usb/dib0700_devices.c
568
toggle = st->buf[3 - 1];
drivers/media/usb/dvb-usb/dib0700_devices.c
703
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
723
st->mt2060_if1[0] = 1220;
drivers/media/usb/dvb-usb/dib0700_devices.c
727
st->is_dib7000pc = 1;
drivers/media/usb/dvb-usb/dib0700_devices.c
743
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
753
if (st->is_dib7000pc)
drivers/media/usb/dvb-usb/dib0700_devices.c
87
struct dib0700_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
885
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
886
struct i2c_adapter *tun_i2c = st->dib7000p_ops.get_i2c_master(adap->fe_adap[0].fe,
drivers/media/usb/dvb-usb/dib0700_devices.c
893
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
900
struct dib0700_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
901
struct i2c_adapter *tun_i2c = st->dib7000p_ops.get_i2c_master(adap->fe_adap[0].fe, DIBX000_I2C_INTERFACE_TUNER, 1);
drivers/media/usb/dvb-usb/dib0700_devices.c
911
st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params;
drivers/media/usb/dvb-usb/dib0700_devices.c
920
struct dib0700_state *st = adapter->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
922
if (st->is_dib7000pc)
drivers/media/usb/dvb-usb/dib0700_devices.c
929
struct dib0700_state *st = adapter->dev->priv;
drivers/media/usb/dvb-usb/dib0700_devices.c
931
if (st->is_dib7000pc)
drivers/media/usb/dvb-usb/dibusb-common.c
26
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-common.c
27
if (st->ops.fifo_ctrl != NULL)
drivers/media/usb/dvb-usb/dibusb-common.c
28
if (st->ops.fifo_ctrl(adap->fe_adap[0].fe, onoff)) {
drivers/media/usb/dvb-usb/dibusb-common.c
40
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-common.c
41
if (st->ops.pid_ctrl != NULL)
drivers/media/usb/dvb-usb/dibusb-common.c
42
st->ops.pid_ctrl(adap->fe_adap[0].fe,
drivers/media/usb/dvb-usb/dibusb-common.c
52
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-common.c
53
if (st->ops.pid_parse != NULL)
drivers/media/usb/dvb-usb/dibusb-common.c
54
if (st->ops.pid_parse(adap->fe_adap[0].fe, onoff) < 0)
drivers/media/usb/dvb-usb/dibusb-mb.c
19
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-mb.c
21
return st->ops.tuner_pass_ctrl(fe, enable, st->tuner_addr);
drivers/media/usb/dvb-usb/dibusb-mb.c
27
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-mb.c
32
&adap->dev->i2c_adap, &st->ops);
drivers/media/usb/dvb-usb/dibusb-mb.c
43
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-mb.c
45
st->tuner_addr = 0x61;
drivers/media/usb/dvb-usb/dibusb-mb.c
54
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-mb.c
56
st->tuner_addr = 0x60;
drivers/media/usb/dvb-usb/dibusb-mb.c
74
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-mb.c
77
msg[0].addr = msg[1].addr = st->tuner_addr = 0x60;
drivers/media/usb/dvb-usb/dibusb-mc-common.c
103
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-mc-common.c
104
st->ops.pid_parse = dib3000mc_pid_parse;
drivers/media/usb/dvb-usb/dibusb-mc-common.c
105
st->ops.pid_ctrl = dib3000mc_pid_control;
drivers/media/usb/dvb-usb/dibusb-mc-common.c
119
struct dibusb_state *st = adap->priv;
drivers/media/usb/dvb-usb/dibusb-mc-common.c
161
st->mt2060_present = 1;
drivers/media/usb/dvb-usb/digitv.c
147
struct digitv_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/digitv.c
152
st->is_nxt6000 = 0;
drivers/media/usb/dvb-usb/digitv.c
159
st->is_nxt6000 = 1;
drivers/media/usb/dvb-usb/digitv.c
167
struct digitv_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/digitv.c
172
if (st->is_nxt6000)
drivers/media/usb/dvb-usb/digitv.c
28
struct digitv_state *st = d->priv;
drivers/media/usb/dvb-usb/digitv.c
36
memset(st->sndbuf, 0, 7);
drivers/media/usb/dvb-usb/digitv.c
37
memset(st->rcvbuf, 0, 7);
drivers/media/usb/dvb-usb/digitv.c
39
st->sndbuf[0] = cmd;
drivers/media/usb/dvb-usb/digitv.c
40
st->sndbuf[1] = vv;
drivers/media/usb/dvb-usb/digitv.c
41
st->sndbuf[2] = wo ? wlen : rlen;
drivers/media/usb/dvb-usb/digitv.c
44
memcpy(&st->sndbuf[3], wbuf, wlen);
drivers/media/usb/dvb-usb/digitv.c
45
ret = dvb_usb_generic_write(d, st->sndbuf, 7);
drivers/media/usb/dvb-usb/digitv.c
47
ret = dvb_usb_generic_rw(d, st->sndbuf, 7, st->rcvbuf, 7, 10);
drivers/media/usb/dvb-usb/digitv.c
48
memcpy(rbuf, &st->rcvbuf[3], rlen);
drivers/media/usb/dvb-usb/dtt200u.c
102
scancode = st->data[1];
drivers/media/usb/dvb-usb/dtt200u.c
103
if ((u8) ~st->data[1] != st->data[2]) {
drivers/media/usb/dvb-usb/dtt200u.c
106
scancode |= st->data[2];
drivers/media/usb/dvb-usb/dtt200u.c
110
scancode |= st->data[3];
drivers/media/usb/dvb-usb/dtt200u.c
113
if ((u8) ~st->data[3] == st->data[4])
drivers/media/usb/dvb-usb/dtt200u.c
117
} else if (st->data[0] == 2) {
drivers/media/usb/dvb-usb/dtt200u.c
123
if (st->data[0] != 0)
drivers/media/usb/dvb-usb/dtt200u.c
124
deb_info("st->data: %*ph\n", 5, st->data);
drivers/media/usb/dvb-usb/dtt200u.c
26
struct dtt200u_state *st = d->priv;
drivers/media/usb/dvb-usb/dtt200u.c
31
st->data[0] = SET_INIT;
drivers/media/usb/dvb-usb/dtt200u.c
34
ret = dvb_usb_generic_write(d, st->data, 2);
drivers/media/usb/dvb-usb/dtt200u.c
43
struct dtt200u_state *st = d->priv;
drivers/media/usb/dvb-usb/dtt200u.c
47
st->data[0] = SET_STREAMING;
drivers/media/usb/dvb-usb/dtt200u.c
48
st->data[1] = onoff;
drivers/media/usb/dvb-usb/dtt200u.c
50
ret = dvb_usb_generic_write(adap->dev, st->data, 2);
drivers/media/usb/dvb-usb/dtt200u.c
57
st->data[0] = RESET_PID_FILTER;
drivers/media/usb/dvb-usb/dtt200u.c
58
ret = dvb_usb_generic_write(adap->dev, st->data, 1);
drivers/media/usb/dvb-usb/dtt200u.c
69
struct dtt200u_state *st = d->priv;
drivers/media/usb/dvb-usb/dtt200u.c
75
st->data[0] = SET_PID_FILTER;
drivers/media/usb/dvb-usb/dtt200u.c
76
st->data[1] = index;
drivers/media/usb/dvb-usb/dtt200u.c
77
st->data[2] = pid & 0xff;
drivers/media/usb/dvb-usb/dtt200u.c
78
st->data[3] = (pid >> 8) & 0x1f;
drivers/media/usb/dvb-usb/dtt200u.c
80
ret = dvb_usb_generic_write(adap->dev, st->data, 4);
drivers/media/usb/dvb-usb/dtt200u.c
88
struct dtt200u_state *st = d->priv;
drivers/media/usb/dvb-usb/dtt200u.c
93
st->data[0] = GET_RC_CODE;
drivers/media/usb/dvb-usb/dtt200u.c
95
ret = dvb_usb_generic_rw(d, st->data, 1, st->data, 5, 0);
drivers/media/usb/dvb-usb/dtt200u.c
99
if (st->data[0] == 1) {
drivers/media/usb/dvb-usb/dtv5100.c
28
struct dtv5100_state *st = d->priv;
drivers/media/usb/dvb-usb/dtv5100.c
58
if (rlen > sizeof(st->data)) {
drivers/media/usb/dvb-usb/dtv5100.c
63
memcpy(st->data, rbuf, rlen);
drivers/media/usb/dvb-usb/dtv5100.c
66
type, value, index, st->data, rlen,
drivers/media/usb/dvb-usb/dw2102.c
1047
struct dw2102_state *st = d->dev->priv;
drivers/media/usb/dvb-usb/dw2102.c
1050
if (st->old_set_voltage)
drivers/media/usb/dvb-usb/dw2102.c
1051
st->old_set_voltage(fe, voltage);
drivers/media/usb/dvb-usb/dw2102.c
1077
struct dw2102_state *st = d->dev->priv;
drivers/media/usb/dvb-usb/dw2102.c
1080
ret = st->fe_read_status(fe, status);
drivers/media/usb/dvb-usb/dw2102.c
1083
if ((*status & FE_HAS_LOCK) && (!st->last_lock))
drivers/media/usb/dvb-usb/dw2102.c
1086
st->last_lock = (*status & FE_HAS_LOCK) ? 1 : 0;
drivers/media/usb/dvb-usb/dw2102.c
1384
struct dw2102_state *st = d->dev->priv;
drivers/media/usb/dvb-usb/dw2102.c
1396
st->old_set_voltage = d->fe_adap[0].fe->ops.set_voltage;
drivers/media/usb/dvb-usb/dw2102.c
2621
struct dw2102_state *st = d->priv;
drivers/media/usb/dvb-usb/dw2102.c
2625
client = st->i2c_client_tuner;
drivers/media/usb/dvb-usb/dw2102.c
2632
client = st->i2c_client_demod;
drivers/media/usb/dvb-usb/gp8psk.c
32
struct gp8psk_state *st = d->priv;
drivers/media/usb/dvb-usb/gp8psk.c
35
if (blen > sizeof(st->data))
drivers/media/usb/dvb-usb/gp8psk.c
46
value, index, st->data, blen,
drivers/media/usb/dvb-usb/gp8psk.c
57
memcpy(b, st->data, blen);
drivers/media/usb/dvb-usb/gp8psk.c
71
struct gp8psk_state *st = d->priv;
drivers/media/usb/dvb-usb/gp8psk.c
77
if (blen > sizeof(st->data))
drivers/media/usb/dvb-usb/gp8psk.c
83
memcpy(st->data, b, blen);
drivers/media/usb/dvb-usb/gp8psk.c
88
value, index, st->data, blen,
drivers/media/usb/dvb-usb/nova-t-usb2.c
109
if (st->old_toggle == toggle) {
drivers/media/usb/dvb-usb/nova-t-usb2.c
110
if (st->last_repeat_count++ < 2)
drivers/media/usb/dvb-usb/nova-t-usb2.c
113
st->last_repeat_count = 0;
drivers/media/usb/dvb-usb/nova-t-usb2.c
114
st->old_toggle = toggle;
drivers/media/usb/dvb-usb/nova-t-usb2.c
77
struct dibusb_device_state *st = d->priv;
drivers/media/usb/dvb-usb/technisat-usb2.c
227
enum technisat_usb2_led_state st)
drivers/media/usb/dvb-usb/technisat-usb2.c
235
if (disable_led_control && st != TECH_LED_OFF)
drivers/media/usb/dvb-usb/technisat-usb2.c
238
switch (st) {
drivers/media/usb/dvb-usb/ttusb2.c
450
struct ttusb2_state *st = d->priv;
drivers/media/usb/dvb-usb/ttusb2.c
457
st->last_rc_key = RC_SCANCODE_RC5(rx[3], rx[2]);
drivers/media/usb/dvb-usb/ttusb2.c
459
rc_keydown(d->rc_dev, RC_PROTO_RC5, st->last_rc_key, rx[1]);
drivers/media/usb/dvb-usb/ttusb2.c
460
} else if (st->last_rc_key) {
drivers/media/usb/dvb-usb/ttusb2.c
462
st->last_rc_key = 0;
drivers/media/usb/dvb-usb/ttusb2.c
74
struct ttusb2_state *st = d->priv;
drivers/media/usb/dvb-usb/ttusb2.c
92
s[1] = ++st->id;
drivers/media/usb/dvb-usb/vp702x-fe.c
102
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
103
vp702x_fe_refresh_state(st);
drivers/media/usb/dvb-usb/vp702x-fe.c
110
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
111
vp702x_fe_refresh_state(st);
drivers/media/usb/dvb-usb/vp702x-fe.c
113
*strength = (st->sig << 8) | st->sig;
drivers/media/usb/dvb-usb/vp702x-fe.c
120
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
121
vp702x_fe_refresh_state(st);
drivers/media/usb/dvb-usb/vp702x-fe.c
123
_snr = (st->snr & 0x1f) * 0xff / 0x1f;
drivers/media/usb/dvb-usb/vp702x-fe.c
138
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
139
struct vp702x_device_state *dst = st->d->priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
168
if (st->voltage == SEC_VOLTAGE_18)
drivers/media/usb/dvb-usb/vp702x-fe.c
182
st->status_check_interval = 250;
drivers/media/usb/dvb-usb/vp702x-fe.c
183
st->next_status_check = jiffies;
drivers/media/usb/dvb-usb/vp702x-fe.c
185
vp702x_usb_inout_op(st->d, cmd, 8, cmd, 10, 100);
drivers/media/usb/dvb-usb/vp702x-fe.c
199
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
201
vp702x_usb_in_op(st->d, RESET_TUNER, 0, 0, NULL, 0);
drivers/media/usb/dvb-usb/vp702x-fe.c
215
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
216
struct vp702x_device_state *dst = st->d->priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
231
vp702x_usb_inout_op(st->d, cmd, 8, cmd, 10, 100);
drivers/media/usb/dvb-usb/vp702x-fe.c
253
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
254
struct vp702x_device_state *dst = st->d->priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
259
st->tone_mode = tone;
drivers/media/usb/dvb-usb/vp702x-fe.c
262
st->lnb_buf[2] = 0x02;
drivers/media/usb/dvb-usb/vp702x-fe.c
264
st->lnb_buf[2] = 0x00;
drivers/media/usb/dvb-usb/vp702x-fe.c
266
st->lnb_buf[7] = vp702x_chksum(st->lnb_buf, 0, 7);
drivers/media/usb/dvb-usb/vp702x-fe.c
271
memcpy(buf, st->lnb_buf, 8);
drivers/media/usb/dvb-usb/vp702x-fe.c
273
vp702x_usb_inout_op(st->d, buf, 8, buf, 10, 100);
drivers/media/usb/dvb-usb/vp702x-fe.c
287
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
288
struct vp702x_device_state *dst = st->d->priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
292
st->voltage = voltage;
drivers/media/usb/dvb-usb/vp702x-fe.c
295
st->lnb_buf[4] = 0x01;
drivers/media/usb/dvb-usb/vp702x-fe.c
297
st->lnb_buf[4] = 0x00;
drivers/media/usb/dvb-usb/vp702x-fe.c
299
st->lnb_buf[7] = vp702x_chksum(st->lnb_buf, 0, 7);
drivers/media/usb/dvb-usb/vp702x-fe.c
304
memcpy(buf, st->lnb_buf, 8);
drivers/media/usb/dvb-usb/vp702x-fe.c
306
vp702x_usb_inout_op(st->d, buf, 8, buf, 10, 100);
drivers/media/usb/dvb-usb/vp702x-fe.c
318
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
319
kfree(st);
drivers/media/usb/dvb-usb/vp702x-fe.c
38
static int vp702x_fe_refresh_state(struct vp702x_fe_state *st)
drivers/media/usb/dvb-usb/vp702x-fe.c
40
struct vp702x_device_state *dst = st->d->priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
43
if (time_after(jiffies, st->next_status_check)) {
drivers/media/usb/dvb-usb/vp702x-fe.c
47
vp702x_usb_in_op(st->d, READ_STATUS, 0, 0, buf, 10);
drivers/media/usb/dvb-usb/vp702x-fe.c
48
st->lock = buf[4];
drivers/media/usb/dvb-usb/vp702x-fe.c
50
vp702x_usb_in_op(st->d, READ_TUNER_REG_REQ, 0x11, 0, buf, 1);
drivers/media/usb/dvb-usb/vp702x-fe.c
51
st->snr = buf[0];
drivers/media/usb/dvb-usb/vp702x-fe.c
53
vp702x_usb_in_op(st->d, READ_TUNER_REG_REQ, 0x15, 0, buf, 1);
drivers/media/usb/dvb-usb/vp702x-fe.c
54
st->sig = buf[0];
drivers/media/usb/dvb-usb/vp702x-fe.c
57
st->next_status_check = jiffies + (st->status_check_interval*HZ)/1000;
drivers/media/usb/dvb-usb/vp702x-fe.c
74
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
75
vp702x_fe_refresh_state(st);
drivers/media/usb/dvb-usb/vp702x-fe.c
78
if (st->lock == 0)
drivers/media/usb/dvb-usb/vp702x-fe.c
84
st->status_check_interval = 1000;
drivers/media/usb/dvb-usb/vp702x-fe.c
86
st->status_check_interval = 250;
drivers/media/usb/dvb-usb/vp702x-fe.c
93
struct vp702x_fe_state *st = fe->demodulator_priv;
drivers/media/usb/dvb-usb/vp702x-fe.c
94
vp702x_fe_refresh_state(st);
drivers/media/usb/dvb-usb/vp702x.c
116
struct vp702x_device_state *st = d->priv;
drivers/media/usb/dvb-usb/vp702x.c
121
ret = mutex_lock_interruptible(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
125
if (buflen > st->buf_len) {
drivers/media/usb/dvb-usb/vp702x.c
128
mutex_unlock(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
132
kfree(st->buf);
drivers/media/usb/dvb-usb/vp702x.c
133
st->buf = buf;
drivers/media/usb/dvb-usb/vp702x.c
134
st->buf_len = buflen;
drivers/media/usb/dvb-usb/vp702x.c
136
buf = st->buf;
drivers/media/usb/dvb-usb/vp702x.c
147
mutex_unlock(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
155
struct vp702x_device_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/vp702x.c
158
mutex_lock(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
160
buf = st->buf;
drivers/media/usb/dvb-usb/vp702x.c
165
mutex_unlock(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
172
struct vp702x_device_state *st = adap->dev->priv;
drivers/media/usb/dvb-usb/vp702x.c
175
mutex_lock(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
177
buf = st->buf;
drivers/media/usb/dvb-usb/vp702x.c
182
mutex_unlock(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
189
struct vp702x_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/vp702x.c
194
st->pid_filter_state |= (1 << id);
drivers/media/usb/dvb-usb/vp702x.c
196
st->pid_filter_state &= ~(1 << id);
drivers/media/usb/dvb-usb/vp702x.c
202
vp702x_set_pld_state(adap, st->pid_filter_state);
drivers/media/usb/dvb-usb/vp702x.c
219
struct vp702x_adapter_state *st = adap->priv;
drivers/media/usb/dvb-usb/vp702x.c
224
st->pid_filter_count = 8;
drivers/media/usb/dvb-usb/vp702x.c
225
st->pid_filter_can_bypass = 1;
drivers/media/usb/dvb-usb/vp702x.c
226
st->pid_filter_state = 0x00;
drivers/media/usb/dvb-usb/vp702x.c
230
for (i = 0; i < st->pid_filter_count; i++)
drivers/media/usb/dvb-usb/vp702x.c
295
struct vp702x_device_state *st = d->priv;
drivers/media/usb/dvb-usb/vp702x.c
297
mutex_lock(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
298
buf = st->buf;
drivers/media/usb/dvb-usb/vp702x.c
308
mutex_unlock(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
339
struct vp702x_device_state *st;
drivers/media/usb/dvb-usb/vp702x.c
347
st = d->priv;
drivers/media/usb/dvb-usb/vp702x.c
348
st->buf_len = 16;
drivers/media/usb/dvb-usb/vp702x.c
349
st->buf = kmalloc(st->buf_len, GFP_KERNEL);
drivers/media/usb/dvb-usb/vp702x.c
350
if (!st->buf) {
drivers/media/usb/dvb-usb/vp702x.c
355
mutex_init(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
365
struct vp702x_device_state *st = d->priv;
drivers/media/usb/dvb-usb/vp702x.c
366
mutex_lock(&st->buf_mutex);
drivers/media/usb/dvb-usb/vp702x.c
367
kfree(st->buf);
drivers/media/usb/dvb-usb/vp702x.c
368
mutex_unlock(&st->buf_mutex);
drivers/media/usb/gspca/benq.c
144
int i, st;
drivers/media/usb/gspca/benq.c
180
st = urb0->iso_frame_desc[i].status;
drivers/media/usb/gspca/benq.c
181
if (st == 0)
drivers/media/usb/gspca/benq.c
182
st = urb->iso_frame_desc[i].status;
drivers/media/usb/gspca/benq.c
183
if (st) {
drivers/media/usb/gspca/benq.c
185
i, st);
drivers/media/usb/gspca/benq.c
229
st = usb_submit_urb(urb0, GFP_ATOMIC);
drivers/media/usb/gspca/benq.c
230
if (st < 0)
drivers/media/usb/gspca/benq.c
231
pr_err("usb_submit_urb(0) ret %d\n", st);
drivers/media/usb/gspca/benq.c
232
st = usb_submit_urb(urb, GFP_ATOMIC);
drivers/media/usb/gspca/benq.c
233
if (st < 0)
drivers/media/usb/gspca/benq.c
234
pr_err("usb_submit_urb() ret %d\n", st);
drivers/media/usb/gspca/gspca.c
262
int i, len, st;
drivers/media/usb/gspca/gspca.c
281
st = urb->iso_frame_desc[i].status;
drivers/media/usb/gspca/gspca.c
282
if (st) {
drivers/media/usb/gspca/gspca.c
284
i, len, st);
drivers/media/usb/gspca/gspca.c
306
st = usb_submit_urb(urb, GFP_ATOMIC);
drivers/media/usb/gspca/gspca.c
307
if (st < 0)
drivers/media/usb/gspca/gspca.c
308
pr_err("usb_submit_urb() ret %d\n", st);
drivers/media/usb/gspca/gspca.c
332
int st;
drivers/media/usb/gspca/gspca.c
362
st = usb_submit_urb(urb, GFP_ATOMIC);
drivers/media/usb/gspca/gspca.c
363
if (st < 0)
drivers/media/usb/gspca/gspca.c
364
pr_err("usb_submit_urb() ret %d\n", st);
drivers/media/usb/gspca/konica.c
260
int i, st;
drivers/media/usb/gspca/konica.c
274
st = usb_submit_urb(urb, GFP_ATOMIC);
drivers/media/usb/gspca/konica.c
275
if (st < 0)
drivers/media/usb/gspca/konica.c
276
pr_err("resubmit urb error %d\n", st);
drivers/media/usb/gspca/konica.c
320
st = *((u8 *)status_urb->transfer_buffer
drivers/media/usb/gspca/konica.c
335
if (st & 0x80) {
drivers/media/usb/gspca/konica.c
340
u8 button_state = st & 0x40 ? 1 : 0;
drivers/media/usb/gspca/konica.c
349
if (st & 0x01)
drivers/media/usb/gspca/konica.c
358
st = usb_submit_urb(data_urb, GFP_ATOMIC);
drivers/media/usb/gspca/konica.c
359
if (st < 0)
drivers/media/usb/gspca/konica.c
361
st);
drivers/media/usb/gspca/konica.c
363
st = usb_submit_urb(status_urb, GFP_ATOMIC);
drivers/media/usb/gspca/konica.c
364
if (st < 0)
drivers/media/usb/gspca/konica.c
365
gspca_err(gspca_dev, "usb_submit_urb(status_urb) ret %d\n", st);
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1648
static const char *pvr2_get_state_name(unsigned int st)
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1650
if (st < ARRAY_SIZE(pvr2_state_names)) {
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1651
return pvr2_state_names[st];
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1720
int ret,st;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1733
while ((st = hdw->master_state) != PVR2_STATE_RUN) {
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1734
if (st != PVR2_STATE_READY) return -EIO;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1735
if ((ret = pvr2_hdw_wait(hdw,st)) < 0) return ret;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4610
unsigned int st;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4613
st = !(hdw->state_encoder_run ||
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4617
if (!st != !hdw->state_pipeline_idle) {
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4618
hdw->state_pipeline_idle = st;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4912
unsigned int st;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4930
st = PVR2_STATE_DEAD;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4932
st = PVR2_STATE_COLD;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4936
st = PVR2_STATE_WARM;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4939
st = PVR2_STATE_ERROR;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4943
st = PVR2_STATE_RUN;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4945
st = PVR2_STATE_READY;
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4947
if (hdw->master_state != st) {
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4951
pvr2_get_state_name(st));
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4952
pvr2_led_ctrl(hdw,st == PVR2_STATE_RUN);
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
4953
hdw->master_state = st;
drivers/media/usb/pvrusb2/pvrusb2-io.c
87
static const char *pvr2_buffer_state_decode(enum pvr2_buffer_state st)
drivers/media/usb/pvrusb2/pvrusb2-io.c
89
switch (st) {
drivers/memory/omap-gpmc.c
478
#define GPMC_GET_RAW(reg, st, end, field) \
drivers/memory/omap-gpmc.c
479
get_gpmc_timing_reg(cs, (reg), (st), (end), 0, field, GPMC_CD_FCLK, 0, 1, 0)
drivers/memory/omap-gpmc.c
480
#define GPMC_GET_RAW_MAX(reg, st, end, max, field) \
drivers/memory/omap-gpmc.c
481
get_gpmc_timing_reg(cs, (reg), (st), (end), (max), field, GPMC_CD_FCLK, 0, 1, 0)
drivers/memory/omap-gpmc.c
482
#define GPMC_GET_RAW_BOOL(reg, st, end, field) \
drivers/memory/omap-gpmc.c
483
get_gpmc_timing_reg(cs, (reg), (st), (end), 0, field, GPMC_CD_FCLK, 0, 1, 1)
drivers/memory/omap-gpmc.c
484
#define GPMC_GET_RAW_SHIFT_MAX(reg, st, end, shift, max, field) \
drivers/memory/omap-gpmc.c
485
get_gpmc_timing_reg(cs, (reg), (st), (end), (max), field, GPMC_CD_FCLK, (shift), 1, 1)
drivers/memory/omap-gpmc.c
486
#define GPMC_GET_TICKS(reg, st, end, field) \
drivers/memory/omap-gpmc.c
487
get_gpmc_timing_reg(cs, (reg), (st), (end), 0, field, GPMC_CD_FCLK, 0, 0, 0)
drivers/memory/omap-gpmc.c
488
#define GPMC_GET_TICKS_CD(reg, st, end, field, cd) \
drivers/memory/omap-gpmc.c
489
get_gpmc_timing_reg(cs, (reg), (st), (end), 0, field, (cd), 0, 0, 0)
drivers/memory/omap-gpmc.c
490
#define GPMC_GET_TICKS_CD_MAX(reg, st, end, max, field, cd) \
drivers/memory/omap-gpmc.c
491
get_gpmc_timing_reg(cs, (reg), (st), (end), (max), field, (cd), 0, 0, 0)
drivers/misc/fastrpc.c
603
int st = CMP(pa->start, pb->start);
drivers/misc/fastrpc.c
607
return st == 0 ? ed : st;
drivers/mtd/nand/raw/marvell_nand.c
712
u32 st;
drivers/mtd/nand/raw/marvell_nand.c
716
st = readl_relaxed(nfc->regs + NDSR);
drivers/mtd/nand/raw/marvell_nand.c
717
if (st & NDSR_RDY(1))
drivers/mtd/nand/raw/marvell_nand.c
718
st |= NDSR_RDY(0);
drivers/mtd/nand/raw/marvell_nand.c
720
if ((st & mask) == expected_val)
drivers/mtd/nand/raw/marvell_nand.c
797
u32 st = readl_relaxed(nfc->regs + NDSR);
drivers/mtd/nand/raw/marvell_nand.c
804
if (st & NDSR_RDY(1))
drivers/mtd/nand/raw/marvell_nand.c
805
st |= NDSR_RDY(0);
drivers/mtd/nand/raw/marvell_nand.c
807
if (!(st & ien))
drivers/mtd/nand/raw/marvell_nand.c
810
marvell_nfc_disable_int(nfc, st & NDCR_ALL_INT);
drivers/mtd/nand/raw/marvell_nand.c
812
if (st & (NDSR_RDY(0) | NDSR_RDY(1)))
drivers/mtd/nand/raw/sunxi_nand.c
376
u32 st = readl(nfc->regs + NFC_REG_ST);
drivers/mtd/nand/raw/sunxi_nand.c
379
if (!(ien & st))
drivers/mtd/nand/raw/sunxi_nand.c
382
if ((ien & st) == ien)
drivers/mtd/nand/raw/sunxi_nand.c
385
writel(st & NFC_INT_MASK, nfc->regs + NFC_REG_ST);
drivers/mtd/nand/raw/sunxi_nand.c
386
writel(~st & ien & NFC_INT_MASK, nfc->regs + NFC_REG_INT);
drivers/net/can/ctucanfd/ctucanfd_base.c
58
#define CTUCAN_STATE_TO_TEXT_ENTRY(st) \
drivers/net/can/ctucanfd/ctucanfd_base.c
59
[st] = #st
drivers/net/dsa/mv88e6xxx/chip.c
2063
const struct switchdev_mst_state *st)
drivers/net/dsa/mv88e6xxx/chip.c
2074
switch (st->state) {
drivers/net/dsa/mv88e6xxx/chip.c
2092
mst->msti == st->msti) {
drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
219
struct mxl862xx_xpcs_pcs_state st = {};
drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
233
st.mode = cpu_to_le32(FIELD_PREP(MXL862XX_XPCS_ST_PORT_ID,
drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
240
ret = MXL862XX_API_READ(priv, MXL862XX_XPCS_PCS_GET_STATE, st);
drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
246
mode = le32_to_cpu(st.mode);
drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
259
le16_to_cpu(st.lpa.cl37));
drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
266
le16_to_cpu(st.lpa.usx));
drivers/net/dsa/yt921x.c
3728
const struct switchdev_mst_state *st)
drivers/net/dsa/yt921x.c
3736
switch (st->state) {
drivers/net/dsa/yt921x.c
3754
res = yt921x_reg_update_bits(priv, YT921X_STPn(st->msti), mask, ctrl);
drivers/net/ethernet/alacritech/slic.h
284
#define SLIC_INC_STATS_COUNTER(st, counter) \
drivers/net/ethernet/alacritech/slic.h
286
u64_stats_update_begin(&(st)->syncp); \
drivers/net/ethernet/alacritech/slic.h
287
u64_stats_inc(&(st)->counter); \
drivers/net/ethernet/alacritech/slic.h
288
u64_stats_update_end(&(st)->syncp); \
drivers/net/ethernet/alacritech/slic.h
291
#define SLIC_GET_STATS_COUNTER(newst, st, counter) \
drivers/net/ethernet/alacritech/slic.h
295
start = u64_stats_fetch_begin(&(st)->syncp); \
drivers/net/ethernet/alacritech/slic.h
296
newst = u64_stats_read(&(st)->counter); \
drivers/net/ethernet/alacritech/slic.h
297
} while (u64_stats_fetch_retry(&(st)->syncp, start)); \
drivers/net/ethernet/brocade/bna/bfa_cs.h
67
#define bfa_fsm_state_decl(oc, st, otype, etype) \
drivers/net/ethernet/brocade/bna/bfa_cs.h
68
static void oc ## _sm_ ## st(otype * fsm, etype event); \
drivers/net/ethernet/brocade/bna/bfa_cs.h
69
static void oc ## _sm_ ## st ## _entry(otype * fsm)
drivers/net/ethernet/cavium/liquidio/request_manager.c
303
struct iq_post_status st;
drivers/net/ethernet/cavium/liquidio/request_manager.c
305
st.status = IQ_SEND_OK;
drivers/net/ethernet/cavium/liquidio/request_manager.c
311
st.status = IQ_SEND_FAILED;
drivers/net/ethernet/cavium/liquidio/request_manager.c
312
st.index = -1;
drivers/net/ethernet/cavium/liquidio/request_manager.c
313
return st;
drivers/net/ethernet/cavium/liquidio/request_manager.c
317
st.status = IQ_SEND_STOP;
drivers/net/ethernet/cavium/liquidio/request_manager.c
322
st.index = iq->host_write_index;
drivers/net/ethernet/cavium/liquidio/request_manager.c
334
return st;
drivers/net/ethernet/cavium/liquidio/request_manager.c
541
struct iq_post_status st;
drivers/net/ethernet/cavium/liquidio/request_manager.c
550
st = __post_command2(iq, cmd);
drivers/net/ethernet/cavium/liquidio/request_manager.c
552
if (st.status != IQ_SEND_FAILED) {
drivers/net/ethernet/cavium/liquidio/request_manager.c
554
__add_to_request_list(iq, st.index, buf, reqtype);
drivers/net/ethernet/cavium/liquidio/request_manager.c
559
xmit_stopped || st.status == IQ_SEND_STOP)
drivers/net/ethernet/cavium/liquidio/request_manager.c
572
return st.status;
drivers/net/ethernet/chelsio/cxgb/sge.c
1360
struct sge_port_stats *st;
drivers/net/ethernet/chelsio/cxgb/sge.c
1376
st = this_cpu_ptr(sge->port_stats[p->iff]);
drivers/net/ethernet/chelsio/cxgb/sge.c
1383
++st->rx_cso_good;
drivers/net/ethernet/chelsio/cxgb/sge.c
1389
st->vlan_xtract++;
drivers/net/ethernet/chelsio/cxgb/sge.c
1812
struct sge_port_stats *st = this_cpu_ptr(sge->port_stats[dev->if_port]);
drivers/net/ethernet/chelsio/cxgb/sge.c
1826
++st->tx_need_hdrroom;
drivers/net/ethernet/chelsio/cxgb/sge.c
1836
++st->tx_tso;
drivers/net/ethernet/chelsio/cxgb/sge.c
1895
st->tx_cso += (skb->ip_summed == CHECKSUM_PARTIAL);
drivers/net/ethernet/chelsio/cxgb/sge.c
1902
st->vlan_insert++;
drivers/net/ethernet/chelsio/cxgb/sge.c
984
struct sge_port_stats *st = per_cpu_ptr(sge->port_stats[port], cpu);
drivers/net/ethernet/chelsio/cxgb/sge.c
986
ss->rx_cso_good += st->rx_cso_good;
drivers/net/ethernet/chelsio/cxgb/sge.c
987
ss->tx_cso += st->tx_cso;
drivers/net/ethernet/chelsio/cxgb/sge.c
988
ss->tx_tso += st->tx_tso;
drivers/net/ethernet/chelsio/cxgb/sge.c
989
ss->tx_need_hdrroom += st->tx_need_hdrroom;
drivers/net/ethernet/chelsio/cxgb/sge.c
990
ss->vlan_xtract += st->vlan_xtract;
drivers/net/ethernet/chelsio/cxgb/sge.c
991
ss->vlan_insert += st->vlan_insert;
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
1941
void t4_tp_get_err_stats(struct adapter *adap, struct tp_err_stats *st,
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
1943
void t4_tp_get_cpl_stats(struct adapter *adap, struct tp_cpl_stats *st,
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
1945
void t4_tp_get_rdma_stats(struct adapter *adap, struct tp_rdma_stats *st,
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
1947
void t4_get_usm_stats(struct adapter *adap, struct tp_usm_stats *st,
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
1952
struct tp_fcoe_stats *st, bool sleep_ok);
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5627
void t4_tp_get_err_stats(struct adapter *adap, struct tp_err_stats *st,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5632
t4_tp_mib_read(adap, st->mac_in_errs, nchan, TP_MIB_MAC_IN_ERR_0_A,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5634
t4_tp_mib_read(adap, st->hdr_in_errs, nchan, TP_MIB_HDR_IN_ERR_0_A,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5636
t4_tp_mib_read(adap, st->tcp_in_errs, nchan, TP_MIB_TCP_IN_ERR_0_A,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5638
t4_tp_mib_read(adap, st->tnl_cong_drops, nchan,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5640
t4_tp_mib_read(adap, st->ofld_chan_drops, nchan,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5642
t4_tp_mib_read(adap, st->tnl_tx_drops, nchan, TP_MIB_TNL_DROP_0_A,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5644
t4_tp_mib_read(adap, st->ofld_vlan_drops, nchan,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5646
t4_tp_mib_read(adap, st->tcp6_in_errs, nchan,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5648
t4_tp_mib_read(adap, &st->ofld_no_neigh, 2, TP_MIB_OFD_ARP_DROP_A,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5660
void t4_tp_get_cpl_stats(struct adapter *adap, struct tp_cpl_stats *st,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5665
t4_tp_mib_read(adap, st->req, nchan, TP_MIB_CPL_IN_REQ_0_A, sleep_ok);
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5667
t4_tp_mib_read(adap, st->rsp, nchan, TP_MIB_CPL_OUT_RSP_0_A, sleep_ok);
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5678
void t4_tp_get_rdma_stats(struct adapter *adap, struct tp_rdma_stats *st,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5681
t4_tp_mib_read(adap, &st->rqe_dfr_pkt, 2, TP_MIB_RQE_DFR_PKT_A,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5695
struct tp_fcoe_stats *st, bool sleep_ok)
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5699
t4_tp_mib_read(adap, &st->frames_ddp, 1, TP_MIB_FCOE_DDP_0_A + idx,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5702
t4_tp_mib_read(adap, &st->frames_drop, 1,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5708
st->octets_ddp = ((u64)val[0] << 32) | val[1];
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5719
void t4_get_usm_stats(struct adapter *adap, struct tp_usm_stats *st,
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5725
st->frames = val[0];
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5726
st->drops = val[1];
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
5727
st->octets = ((u64)val[2] << 32) | val[3];
drivers/net/ethernet/hisilicon/hns_mdio.c
196
u8 st = is_c45 ? MDIO_ST_CLAUSE_45 : MDIO_ST_CLAUSE_22;
drivers/net/ethernet/hisilicon/hns_mdio.c
198
cmd_reg_value = st << MDIO_CMD_ST_S;
drivers/net/ethernet/huawei/hinic/hinic_hw_if.c
275
u8 st, u8 at, u8 ph,
drivers/net/ethernet/huawei/hinic/hinic_hw_if.c
291
dma_attr_entry = HINIC_DMA_ATTR_SET(st, ST) |
drivers/net/ethernet/huawei/hinic3/hinic3_hw_comm.c
215
int hinic3_set_dma_attr_tbl(struct hinic3_hwdev *hwdev, u8 entry_idx, u8 st,
drivers/net/ethernet/huawei/hinic3/hinic3_hw_comm.c
224
dma_attr.st = st;
drivers/net/ethernet/huawei/hinic3/hinic3_hw_comm.h
38
int hinic3_set_dma_attr_tbl(struct hinic3_hwdev *hwdev, u8 entry_idx, u8 st,
drivers/net/ethernet/huawei/hinic3/hinic3_hw_intf.h
203
u8 st;
drivers/net/ethernet/ibm/emac/core.c
1590
struct emac_error_stats *st = &dev->estats;
drivers/net/ethernet/ibm/emac/core.c
1594
++st->tx_bd_errors;
drivers/net/ethernet/ibm/emac/core.c
1596
++st->tx_bd_bad_fcs;
drivers/net/ethernet/ibm/emac/core.c
1598
++st->tx_bd_carrier_loss;
drivers/net/ethernet/ibm/emac/core.c
1600
++st->tx_bd_excessive_deferral;
drivers/net/ethernet/ibm/emac/core.c
1602
++st->tx_bd_excessive_collisions;
drivers/net/ethernet/ibm/emac/core.c
1604
++st->tx_bd_late_collision;
drivers/net/ethernet/ibm/emac/core.c
1606
++st->tx_bd_multple_collisions;
drivers/net/ethernet/ibm/emac/core.c
1608
++st->tx_bd_single_collision;
drivers/net/ethernet/ibm/emac/core.c
1610
++st->tx_bd_underrun;
drivers/net/ethernet/ibm/emac/core.c
1612
++st->tx_bd_sqe;
drivers/net/ethernet/ibm/emac/core.c
1681
struct emac_error_stats *st = &dev->estats;
drivers/net/ethernet/ibm/emac/core.c
1685
++st->rx_bd_errors;
drivers/net/ethernet/ibm/emac/core.c
1687
++st->rx_bd_overrun;
drivers/net/ethernet/ibm/emac/core.c
1689
++st->rx_bd_bad_packet;
drivers/net/ethernet/ibm/emac/core.c
1691
++st->rx_bd_runt_packet;
drivers/net/ethernet/ibm/emac/core.c
1693
++st->rx_bd_short_event;
drivers/net/ethernet/ibm/emac/core.c
1695
++st->rx_bd_alignment_error;
drivers/net/ethernet/ibm/emac/core.c
1697
++st->rx_bd_bad_fcs;
drivers/net/ethernet/ibm/emac/core.c
1699
++st->rx_bd_packet_too_long;
drivers/net/ethernet/ibm/emac/core.c
1701
++st->rx_bd_out_of_range;
drivers/net/ethernet/ibm/emac/core.c
1703
++st->rx_bd_in_range;
drivers/net/ethernet/ibm/emac/core.c
1913
struct emac_error_stats *st = &dev->estats;
drivers/net/ethernet/ibm/emac/core.c
1924
++st->tx_parity;
drivers/net/ethernet/ibm/emac/core.c
1926
++st->rx_parity;
drivers/net/ethernet/ibm/emac/core.c
1928
++st->tx_underrun;
drivers/net/ethernet/ibm/emac/core.c
1930
++st->rx_fifo_overrun;
drivers/net/ethernet/ibm/emac/core.c
1932
++st->rx_overrun;
drivers/net/ethernet/ibm/emac/core.c
1934
++st->rx_bad_packet;
drivers/net/ethernet/ibm/emac/core.c
1936
++st->rx_runt_packet;
drivers/net/ethernet/ibm/emac/core.c
1938
++st->rx_short_event;
drivers/net/ethernet/ibm/emac/core.c
1940
++st->rx_alignment_error;
drivers/net/ethernet/ibm/emac/core.c
1942
++st->rx_bad_fcs;
drivers/net/ethernet/ibm/emac/core.c
1944
++st->rx_packet_too_long;
drivers/net/ethernet/ibm/emac/core.c
1946
++st->rx_out_of_range;
drivers/net/ethernet/ibm/emac/core.c
1948
++st->rx_in_range;
drivers/net/ethernet/ibm/emac/core.c
1950
++st->tx_sqe;
drivers/net/ethernet/ibm/emac/core.c
1952
++st->tx_errors;
drivers/net/ethernet/ibm/emac/core.c
1962
struct emac_stats *st = &dev->stats;
drivers/net/ethernet/ibm/emac/core.c
1971
nst->rx_packets = (unsigned long)st->rx_packets;
drivers/net/ethernet/ibm/emac/core.c
1972
nst->rx_bytes = (unsigned long)st->rx_bytes;
drivers/net/ethernet/ibm/emac/core.c
1973
nst->tx_packets = (unsigned long)st->tx_packets;
drivers/net/ethernet/ibm/emac/core.c
1974
nst->tx_bytes = (unsigned long)st->tx_bytes;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1586
struct prestera_port_stats *st)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1602
st->good_octets_received =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1604
st->bad_octets_received =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1606
st->mac_trans_error =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1608
st->broadcast_frames_received =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1610
st->multicast_frames_received =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1612
st->frames_64_octets = __le64_to_cpu(hw[PRESTERA_PORT_PKTS_64L_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1613
st->frames_65_to_127_octets =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1615
st->frames_128_to_255_octets =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1617
st->frames_256_to_511_octets =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1619
st->frames_512_to_1023_octets =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1621
st->frames_1024_to_max_octets =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1623
st->excessive_collision =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1625
st->multicast_frames_sent =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1627
st->broadcast_frames_sent =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1629
st->fc_sent = __le64_to_cpu(hw[PRESTERA_PORT_FC_SENT_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1630
st->fc_received = __le64_to_cpu(hw[PRESTERA_PORT_GOOD_FC_RCV_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1631
st->buffer_overrun = __le64_to_cpu(hw[PRESTERA_PORT_DROP_EVENTS_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1632
st->undersize = __le64_to_cpu(hw[PRESTERA_PORT_UNDERSIZE_PKTS_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1633
st->fragments = __le64_to_cpu(hw[PRESTERA_PORT_FRAGMENTS_PKTS_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1634
st->oversize = __le64_to_cpu(hw[PRESTERA_PORT_OVERSIZE_PKTS_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1635
st->jabber = __le64_to_cpu(hw[PRESTERA_PORT_JABBER_PKTS_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1636
st->rx_error_frame_received =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1638
st->bad_crc = __le64_to_cpu(hw[PRESTERA_PORT_BAD_CRC_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1639
st->collisions = __le64_to_cpu(hw[PRESTERA_PORT_COLLISIONS_CNT]);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1640
st->late_collision =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1642
st->unicast_frames_received =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1644
st->unicast_frames_sent =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1646
st->sent_multiple =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1648
st->sent_deferred =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1650
st->good_octets_sent =
drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
371
param = (unsigned long)mlx5_qp_type_str(MLX5_GET(qpc, qpc, st));
drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
337
struct mlx5e_st st = mlx5e_sts[i];
drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
339
if (st.cond_func && st.cond_func(priv))
drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
341
netdev_info(ndev, "\t[%d] %s start..\n", i, st.name);
drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
342
buf[count] = st.st_func(priv);
drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
343
netdev_info(ndev, "\t[%d] %s end: result(%lld)\n", i, st.name, buf[count]);
drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
364
struct mlx5e_st st = mlx5e_sts[i];
drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
366
if (st.cond_func && st.cond_func(priv))
drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
369
ethtool_puts(&data, st.name);
drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.c
561
MLX5_SET(qpc, qpc, st, MLX5_QP_ST_RC);
drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.c
675
MLX5_SET(qpc, qpc, st, MLX5_QP_ST_RC);
drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.c
882
MLX5_SET(fpga_qpc, conn->fpga_qpc, st, MLX5_FPGA_QPC_ST_RC);
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
308
MLX5_SET(qpc, qpc, st, MLX5_QP_ST_UD);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
105
if (!st)
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
112
if (st->direct_mode) {
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
117
mutex_lock(&st->lock);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
119
xa_for_each(&st->idx_xa, index, idx_data) {
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
136
ret = xa_alloc(&st->idx_xa, &xa_id, idx_data, st->index_limit, GFP_KERNEL);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
148
xa_erase(&st->idx_xa, xa_id);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
152
mutex_unlock(&st->lock);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
160
struct mlx5_st *st = dev->st;
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
163
if (!st)
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
166
if (st->direct_mode)
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
169
mutex_lock(&st->lock);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
170
idx_data = xa_load(&st->idx_xa, st_index);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
177
xa_erase(&st->idx_xa, st_index);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
183
mutex_unlock(&st->lock);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
28
struct mlx5_st *st;
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
39
return dev->priv.parent_mdev->st;
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
62
st = kzalloc_obj(*st);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
63
if (!st)
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
66
mutex_init(&st->lock);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
67
xa_init_flags(&st->idx_xa, XA_FLAGS_ALLOC);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
68
st->direct_mode = direct_mode;
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
69
if (st->direct_mode)
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
70
return st;
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
73
st->index_limit.min = MLX5_MKC_PCIE_TPH_NO_STEERING_TAG_INDEX + 1;
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
74
st->index_limit.max = num_entries - 1;
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
76
return st;
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
85
struct mlx5_st *st = dev->st;
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
87
if (mlx5_core_is_sf(dev) || !st)
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
91
WARN_ON_ONCE(!xa_empty(&st->idx_xa));
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
92
kfree(st);
drivers/net/ethernet/mellanox/mlx5/core/lib/st.c
99
struct mlx5_st *st = dev->st;
drivers/net/ethernet/mellanox/mlx5/core/main.c
1028
dev->st = mlx5_st_create(dev);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_send.c
305
MLX5_SET(qpc, qpc, st, MLX5_QP_ST_RC);
drivers/net/ethernet/mellanox/mlxsw/cmd.h
1187
MLXSW_ITEM32(cmd_mbox, sw2hw_cq, st, 0x00, 8, 1);
drivers/net/ethernet/mellanox/mlxsw/cmd.h
1271
MLXSW_ITEM32(cmd_mbox, sw2hw_eq, st, 0x00, 8, 2);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
10
static bool lan966x_tc_is_known_etype(struct vcap_tc_flower_parse_usage *st,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
101
st->l3_proto = be16_to_cpu(match.key->n_proto);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
102
if (!lan966x_tc_is_known_etype(st, st->l3_proto)) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
103
err = vcap_rule_add_key_u32(st->vrule, VCAP_KF_ETYPE,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
104
st->l3_proto, ~0);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
107
} else if (st->l3_proto == ETH_P_IP) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
108
err = vcap_rule_add_key_bit(st->vrule, VCAP_KF_IP4_IS,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
112
} else if (st->l3_proto == ETH_P_IPV6 &&
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
113
st->admin->vtype == VCAP_TYPE_IS1) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
115
} else if (st->l3_proto == ETH_P_SNAP &&
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
116
st->admin->vtype == VCAP_TYPE_IS1) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
117
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
123
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
128
} else if (st->admin->vtype == VCAP_TYPE_IS1) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
129
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
13
switch (st->admin->vtype) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
135
err = vcap_rule_add_key_u32(st->vrule, VCAP_KF_ETYPE,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
136
st->l3_proto, ~0);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
142
st->l4_proto = match.key->ip_proto;
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
144
if (st->l4_proto == IPPROTO_TCP) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
145
if (st->admin->vtype == VCAP_TYPE_IS1) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
146
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
153
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
158
} else if (st->l4_proto == IPPROTO_UDP) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
159
if (st->admin->vtype == VCAP_TYPE_IS1) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
160
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
167
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
173
err = vcap_rule_add_key_u32(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
175
st->l4_proto, ~0);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
181
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_BASIC);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
184
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "ip_proto parse error");
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
189
lan966x_tc_flower_handler_cvlan_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
191
if (st->admin->vtype != VCAP_TYPE_IS1) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
192
NL_SET_ERR_MSG_MOD(st->fco->common.extack,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
197
return vcap_tc_flower_handler_cvlan_usage(st);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
201
lan966x_tc_flower_handler_vlan_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
206
if (st->admin->vtype == VCAP_TYPE_IS1) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
211
return vcap_tc_flower_handler_vlan_usage(st, vid_key, pcp_key);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
215
(*lan966x_tc_flower_handlers_usage[])(struct vcap_tc_flower_parse_usage *st) = {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
37
NL_SET_ERR_MSG_MOD(st->fco->common.extack,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
46
lan966x_tc_flower_handler_control_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
48
struct netlink_ext_ack *extack = st->fco->common.extack;
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
52
flow_rule_match_control(st->frule, &match);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
55
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
59
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
68
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
72
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
84
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_CONTROL);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
94
lan966x_tc_flower_handler_basic_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
99
flow_rule_match_basic(st->frule, &match);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
100
} else if (st->l3_proto == ETH_P_IP) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
101
err = vcap_rule_add_key_bit(st->vrule, VCAP_KF_IP4_IS,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
105
} else if (st->l3_proto == ETH_P_IPV6) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
106
err = vcap_rule_add_key_bit(st->vrule, VCAP_KF_IP4_IS,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
110
if (st->admin->vtype == VCAP_TYPE_IS0) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
111
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
121
st->l4_proto = mt.key->ip_proto;
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
122
if (st->l4_proto == IPPROTO_TCP) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
123
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
128
} else if (st->l4_proto == IPPROTO_UDP) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
129
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
134
if (st->admin->vtype == VCAP_TYPE_IS0) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
135
err = vcap_rule_add_key_bit(st->vrule,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
142
err = vcap_rule_add_key_u32(st->vrule,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
144
st->l4_proto, ~0);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
150
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_BASIC);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
155
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "ip_proto parse error");
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
160
sparx5_tc_flower_handler_control_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
162
struct netlink_ext_ack *extack = st->fco->common.extack;
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
167
flow_rule_match_control(st->frule, &mt);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
191
err = vcap_rule_add_key_u32(st->vrule,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
205
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_CONTROL);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
211
sparx5_tc_flower_handler_cvlan_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
213
if (st->admin->vtype != VCAP_TYPE_IS0) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
214
NL_SET_ERR_MSG_MOD(st->fco->common.extack,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
219
return vcap_tc_flower_handler_cvlan_usage(st);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
223
sparx5_tc_flower_handler_vlan_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
229
if (st->admin->vtype == VCAP_TYPE_IS0) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
234
err = vcap_tc_flower_handler_vlan_usage(st, vid_key, pcp_key);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
238
if (st->admin->vtype == VCAP_TYPE_ES0 && st->tpid)
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
239
err = sparx5_tc_flower_es0_tpid(st);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
244
static int (*sparx5_tc_flower_usage_handlers[])(struct vcap_tc_flower_parse_usage *st) = {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
258
static int sparx5_tc_use_dissectors(struct vcap_tc_flower_parse_usage *st,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
265
if (!flow_rule_match_key(st->frule, idx))
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
269
err = sparx5_tc_flower_usage_handlers[idx](st);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
274
if (st->frule->match.dissector->used_keys ^ st->used_keys) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
275
NL_SET_ERR_MSG_MOD(st->fco->common.extack,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
61
sparx5_tc_flower_es0_tpid(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
65
switch (st->tpid) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
67
err = vcap_rule_add_key_u32(st->vrule,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
72
err = vcap_rule_add_key_u32(st->vrule,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
77
NL_SET_ERR_MSG_MOD(st->fco->common.extack,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
86
sparx5_tc_flower_handler_basic_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
91
flow_rule_match_basic(st->frule, &mt);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
94
st->l3_proto = be16_to_cpu(mt.key->n_proto);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
95
if (!sparx5_vcap_is_known_etype(st->admin, st->l3_proto)) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
96
err = vcap_rule_add_key_u32(st->vrule, VCAP_KF_ETYPE,
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
97
st->l3_proto, ~0);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
103
if (st->l3_proto == ETH_P_IPV6) {
drivers/net/ethernet/microchip/vcap/vcap_tc.c
108
flow_rule_match_ipv6_addrs(st->frule, &mt);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
113
err = vcap_rule_add_key_u128(st->vrule,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
121
err = vcap_rule_add_key_u128(st->vrule,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
127
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_IPV6_ADDRS);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
130
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "ipv6_addr parse error");
drivers/net/ethernet/microchip/vcap/vcap_tc.c
135
int vcap_tc_flower_handler_portnum_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/vcap/vcap_tc.c
141
flow_rule_match_ports(st->frule, &mt);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
146
err = vcap_rule_add_key_u32(st->vrule, VCAP_KF_L4_SPORT, value,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
155
err = vcap_rule_add_key_u32(st->vrule, VCAP_KF_L4_DPORT, value,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
161
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_PORTS);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
166
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "port parse error");
drivers/net/ethernet/microchip/vcap/vcap_tc.c
171
int vcap_tc_flower_handler_cvlan_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/vcap/vcap_tc.c
179
flow_rule_match_cvlan(st->frule, &mt);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
189
err = vcap_rule_add_key_u32(st->vrule, vid_key,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
197
err = vcap_rule_add_key_u32(st->vrule, pcp_key,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
204
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_CVLAN);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
208
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "cvlan parse error");
drivers/net/ethernet/microchip/vcap/vcap_tc.c
213
int vcap_tc_flower_handler_vlan_usage(struct vcap_tc_flower_parse_usage *st,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
220
flow_rule_match_vlan(st->frule, &mt);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
223
err = vcap_rule_add_key_u32(st->vrule, vid_key,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
231
err = vcap_rule_add_key_u32(st->vrule, pcp_key,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
239
st->tpid = be16_to_cpu(mt.key->vlan_tpid);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
241
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_VLAN);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
245
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "vlan parse error");
drivers/net/ethernet/microchip/vcap/vcap_tc.c
250
int vcap_tc_flower_handler_tcp_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/vcap/vcap_tc.c
258
flow_rule_match_tcp(st->frule, &mt);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
266
err = vcap_rule_add_key_bit(st->vrule, VCAP_KF_L4_FIN, val);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
27
int vcap_tc_flower_handler_ethaddr_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/vcap/vcap_tc.c
275
err = vcap_rule_add_key_bit(st->vrule, VCAP_KF_L4_SYN, val);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
284
err = vcap_rule_add_key_bit(st->vrule, VCAP_KF_L4_RST, val);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
293
err = vcap_rule_add_key_bit(st->vrule, VCAP_KF_L4_PSH, val);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
302
err = vcap_rule_add_key_bit(st->vrule, VCAP_KF_L4_ACK, val);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
311
err = vcap_rule_add_key_bit(st->vrule, VCAP_KF_L4_URG, val);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
316
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_TCP);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
321
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "tcp_flags parse error");
drivers/net/ethernet/microchip/vcap/vcap_tc.c
326
int vcap_tc_flower_handler_arp_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/vcap/vcap_tc.c
333
flow_rule_match_arp(st->frule, &mt);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
337
if (st->l3_proto == ETH_P_ARP) {
drivers/net/ethernet/microchip/vcap/vcap_tc.c
346
err = vcap_rule_add_key_u32(st->vrule, VCAP_KF_ARP_OPCODE,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
35
flow_rule_match_eth_addrs(st->frule, &match);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
363
err = vcap_rule_add_key_u32(st->vrule, VCAP_KF_L3_IP4_SIP,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
373
err = vcap_rule_add_key_u32(st->vrule, VCAP_KF_L3_IP4_DIP,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
379
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_ARP);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
384
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "arp parse error");
drivers/net/ethernet/microchip/vcap/vcap_tc.c
389
int vcap_tc_flower_handler_ip_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/vcap/vcap_tc.c
394
flow_rule_match_ip(st->frule, &mt);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
397
err = vcap_rule_add_key_u32(st->vrule, VCAP_KF_L3_TOS,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
40
err = vcap_rule_add_key_u48(st->vrule, smac_key, &smac);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
404
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_IP);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
409
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "ip_tos parse error");
drivers/net/ethernet/microchip/vcap/vcap_tc.c
48
err = vcap_rule_add_key_u48(st->vrule, dmac_key, &dmac);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
53
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_ETH_ADDRS);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
58
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "eth_addr parse error");
drivers/net/ethernet/microchip/vcap/vcap_tc.c
63
int vcap_tc_flower_handler_ipv4_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/vcap/vcap_tc.c
67
if (st->l3_proto == ETH_P_IP) {
drivers/net/ethernet/microchip/vcap/vcap_tc.c
70
flow_rule_match_ipv4_addrs(st->frule, &mt);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
72
err = vcap_rule_add_key_u32(st->vrule,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
80
err = vcap_rule_add_key_u32(st->vrule,
drivers/net/ethernet/microchip/vcap/vcap_tc.c
89
st->used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_IPV4_ADDRS);
drivers/net/ethernet/microchip/vcap/vcap_tc.c
94
NL_SET_ERR_MSG_MOD(st->fco->common.extack, "ipv4_addr parse error");
drivers/net/ethernet/microchip/vcap/vcap_tc.c
99
int vcap_tc_flower_handler_ipv6_usage(struct vcap_tc_flower_parse_usage *st)
drivers/net/ethernet/microchip/vcap/vcap_tc.h
20
int vcap_tc_flower_handler_ethaddr_usage(struct vcap_tc_flower_parse_usage *st);
drivers/net/ethernet/microchip/vcap/vcap_tc.h
21
int vcap_tc_flower_handler_ipv4_usage(struct vcap_tc_flower_parse_usage *st);
drivers/net/ethernet/microchip/vcap/vcap_tc.h
22
int vcap_tc_flower_handler_ipv6_usage(struct vcap_tc_flower_parse_usage *st);
drivers/net/ethernet/microchip/vcap/vcap_tc.h
23
int vcap_tc_flower_handler_portnum_usage(struct vcap_tc_flower_parse_usage *st);
drivers/net/ethernet/microchip/vcap/vcap_tc.h
24
int vcap_tc_flower_handler_cvlan_usage(struct vcap_tc_flower_parse_usage *st);
drivers/net/ethernet/microchip/vcap/vcap_tc.h
25
int vcap_tc_flower_handler_vlan_usage(struct vcap_tc_flower_parse_usage *st,
drivers/net/ethernet/microchip/vcap/vcap_tc.h
28
int vcap_tc_flower_handler_tcp_usage(struct vcap_tc_flower_parse_usage *st);
drivers/net/ethernet/microchip/vcap/vcap_tc.h
29
int vcap_tc_flower_handler_arp_usage(struct vcap_tc_flower_parse_usage *st);
drivers/net/ethernet/microchip/vcap/vcap_tc.h
30
int vcap_tc_flower_handler_ip_usage(struct vcap_tc_flower_parse_usage *st);
drivers/net/ethernet/microsoft/mana/mana_en.c
594
struct rtnl_link_stats64 *st)
drivers/net/ethernet/microsoft/mana/mana_en.c
607
netdev_stats_to_stats64(st, &ndev->stats);
drivers/net/ethernet/microsoft/mana/mana_en.c
612
st->rx_missed_errors = apc->ac->hc_stats.hc_rx_discards_no_wqe;
drivers/net/ethernet/microsoft/mana/mana_en.c
623
st->rx_packets += packets;
drivers/net/ethernet/microsoft/mana/mana_en.c
624
st->rx_bytes += bytes;
drivers/net/ethernet/microsoft/mana/mana_en.c
636
st->tx_packets += packets;
drivers/net/ethernet/microsoft/mana/mana_en.c
637
st->tx_bytes += bytes;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4051
struct bpf_insn *st = &st_meta->insn;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4063
if (BPF_SIZE(ld->code) != BPF_SIZE(st->code))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4066
if (ld->dst_reg != st->src_reg)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4091
struct bpf_insn *st = &st_meta->insn;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4109
if (ld->src_reg != prev_ld_base || st->dst_reg != prev_st_base)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4121
prev_st_off + prev_size == st->off)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4126
st->off + curr_size == prev_st_off)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4195
struct bpf_insn *st = &meta2->insn;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4244
prev_st = st;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4269
prev_st = st;
drivers/net/ethernet/qualcomm/qca_debug.c
180
struct qcaspi_stats *st = &qca->stats;
drivers/net/ethernet/qualcomm/qca_debug.c
182
memcpy(data, st, ARRAY_SIZE(qcaspi_gstrings_stats) * sizeof(u64));
drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c
210
struct rmnet_priv_stats *st = &priv->stats;
drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c
215
memcpy(data, st, ARRAY_SIZE(rmnet_gstrings_stats) * sizeof(u64));
drivers/net/ethernet/sfc/tx_tso.c
169
static int tso_start(struct tso_state *st, struct efx_nic *efx,
drivers/net/ethernet/sfc/tx_tso.c
177
st->ip_off = skb_network_offset(skb);
drivers/net/ethernet/sfc/tx_tso.c
178
st->tcp_off = skb_transport_offset(skb);
drivers/net/ethernet/sfc/tx_tso.c
179
header_len = st->tcp_off + (tcp_hdr(skb)->doff << 2u);
drivers/net/ethernet/sfc/tx_tso.c
181
st->header_len = header_len;
drivers/net/ethernet/sfc/tx_tso.c
182
st->in_len = in_len;
drivers/net/ethernet/sfc/tx_tso.c
183
if (st->protocol == htons(ETH_P_IP)) {
drivers/net/ethernet/sfc/tx_tso.c
184
st->ip_base_len = st->header_len - st->ip_off;
drivers/net/ethernet/sfc/tx_tso.c
185
st->ipv4_id = ntohs(ip_hdr(skb)->id);
drivers/net/ethernet/sfc/tx_tso.c
187
st->ip_base_len = st->header_len - st->tcp_off;
drivers/net/ethernet/sfc/tx_tso.c
188
st->ipv4_id = 0;
drivers/net/ethernet/sfc/tx_tso.c
190
st->seqnum = ntohl(tcp_hdr(skb)->seq);
drivers/net/ethernet/sfc/tx_tso.c
196
st->out_len = skb->len - header_len;
drivers/net/ethernet/sfc/tx_tso.c
200
st->header_dma_addr = dma_addr;
drivers/net/ethernet/sfc/tx_tso.c
201
st->header_unmap_len = skb_headlen(skb);
drivers/net/ethernet/sfc/tx_tso.c
202
st->dma_addr = dma_addr + header_len;
drivers/net/ethernet/sfc/tx_tso.c
203
st->unmap_len = 0;
drivers/net/ethernet/sfc/tx_tso.c
208
static int tso_get_fragment(struct tso_state *st, struct efx_nic *efx,
drivers/net/ethernet/sfc/tx_tso.c
211
st->unmap_addr = skb_frag_dma_map(&efx->pci_dev->dev, frag, 0,
drivers/net/ethernet/sfc/tx_tso.c
213
if (likely(!dma_mapping_error(&efx->pci_dev->dev, st->unmap_addr))) {
drivers/net/ethernet/sfc/tx_tso.c
214
st->unmap_len = skb_frag_size(frag);
drivers/net/ethernet/sfc/tx_tso.c
215
st->in_len = skb_frag_size(frag);
drivers/net/ethernet/sfc/tx_tso.c
216
st->dma_addr = st->unmap_addr;
drivers/net/ethernet/sfc/tx_tso.c
234
struct tso_state *st)
drivers/net/ethernet/sfc/tx_tso.c
239
if (st->in_len == 0)
drivers/net/ethernet/sfc/tx_tso.c
241
if (st->packet_space == 0)
drivers/net/ethernet/sfc/tx_tso.c
244
EFX_WARN_ON_ONCE_PARANOID(st->in_len <= 0);
drivers/net/ethernet/sfc/tx_tso.c
245
EFX_WARN_ON_ONCE_PARANOID(st->packet_space <= 0);
drivers/net/ethernet/sfc/tx_tso.c
247
n = min(st->in_len, st->packet_space);
drivers/net/ethernet/sfc/tx_tso.c
249
st->packet_space -= n;
drivers/net/ethernet/sfc/tx_tso.c
250
st->out_len -= n;
drivers/net/ethernet/sfc/tx_tso.c
251
st->in_len -= n;
drivers/net/ethernet/sfc/tx_tso.c
253
efx_tx_queue_insert(tx_queue, st->dma_addr, n, &buffer);
drivers/net/ethernet/sfc/tx_tso.c
255
if (st->out_len == 0) {
drivers/net/ethernet/sfc/tx_tso.c
259
} else if (st->packet_space != 0) {
drivers/net/ethernet/sfc/tx_tso.c
263
if (st->in_len == 0) {
drivers/net/ethernet/sfc/tx_tso.c
265
buffer->unmap_len = st->unmap_len;
drivers/net/ethernet/sfc/tx_tso.c
267
st->unmap_len = 0;
drivers/net/ethernet/sfc/tx_tso.c
270
st->dma_addr += n;
drivers/net/ethernet/sfc/tx_tso.c
287
struct tso_state *st)
drivers/net/ethernet/sfc/tx_tso.c
291
bool is_last = st->out_len <= skb_shinfo(skb)->gso_size;
drivers/net/ethernet/sfc/tx_tso.c
295
st->packet_space = skb_shinfo(skb)->gso_size;
drivers/net/ethernet/sfc/tx_tso.c
298
st->packet_space = st->out_len;
drivers/net/ethernet/sfc/tx_tso.c
302
if (WARN_ON(!st->header_unmap_len))
drivers/net/ethernet/sfc/tx_tso.c
317
ESF_DZ_TX_TSO_IP_ID, st->ipv4_id,
drivers/net/ethernet/sfc/tx_tso.c
318
ESF_DZ_TX_TSO_TCP_SEQNO, st->seqnum);
drivers/net/ethernet/sfc/tx_tso.c
325
buffer->dma_addr = st->header_dma_addr;
drivers/net/ethernet/sfc/tx_tso.c
326
buffer->len = st->header_len;
drivers/net/ethernet/sfc/tx_tso.c
329
buffer->unmap_len = st->header_unmap_len;
drivers/net/ethernet/sfc/tx_tso.c
334
st->header_unmap_len = 0;
drivers/net/ethernet/sfc/tx_tso.c
341
st->seqnum += skb_shinfo(skb)->gso_size;
drivers/net/ethernet/sfc/tx_tso.c
344
++st->ipv4_id;
drivers/net/ethernet/vertexcom/mse102x.c
622
struct mse102x_stats *st = &mse->stats;
drivers/net/ethernet/vertexcom/mse102x.c
624
memcpy(data, st, ARRAY_SIZE(mse102x_gstrings_stats) * sizeof(u64));
drivers/net/fddi/skfp/drvfbi.c
230
u_short st = inpw(PLC(PB,PL_INTR_EVENT)) ;
drivers/net/fddi/skfp/drvfbi.c
232
plc_irq(smc,PB,st) ;
drivers/net/fddi/skfp/drvfbi.c
241
u_short st = inpw(PLC(PA,PL_INTR_EVENT)) ;
drivers/net/fddi/skfp/drvfbi.c
243
plc_irq(smc,PA,st) ;
drivers/net/fddi/skfp/h/skfbi.h
857
#define DB_MAC(mac,st) {if (debug_mac & 0x1)\
drivers/net/fddi/skfp/h/skfbi.h
860
printf("\tMAC %d status 0x%08lx\n",mac,st) ;\
drivers/net/fddi/skfp/h/skfbi.h
862
dp_mac(mac,st) ;\
drivers/net/fddi/skfp/h/skfbi.h
882
#define DB_MAC(mac,st)
drivers/net/fddi/skfp/pmf.c
440
int st ;
drivers/net/fddi/skfp/pmf.c
446
st = smt_set_para(smc,pa,index,local,1);
drivers/net/fddi/skfp/pmf.c
452
pcon.pc_err = st ;
drivers/net/fddi/skfp/smt.c
1375
static void smt_fill_mac_status(struct s_smc *smc, struct smt_p_mac_status *st)
drivers/net/fddi/skfp/smt.c
1377
SMTSETPARA(st,SMT_P_MAC_STATUS) ;
drivers/net/fddi/skfp/smt.c
1379
st->st_mib_index = INDEX_MAC ;
drivers/net/fddi/skfp/smt.c
1380
st->st_mac_index = mac_index(smc,1) ;
drivers/net/fddi/skfp/smt.c
1387
st->st_t_req = smc->mib.m[MAC0].fddiMACT_Req ;
drivers/net/fddi/skfp/smt.c
1388
st->st_t_neg = smc->mib.m[MAC0].fddiMACT_Neg ;
drivers/net/fddi/skfp/smt.c
1389
st->st_t_max = smc->mib.m[MAC0].fddiMACT_Max ;
drivers/net/fddi/skfp/smt.c
1390
st->st_tvx_value = smc->mib.m[MAC0].fddiMACTvxValue ;
drivers/net/fddi/skfp/smt.c
1391
st->st_t_min = smc->mib.m[MAC0].fddiMACT_Min ;
drivers/net/fddi/skfp/smt.c
1393
st->st_sba = smc->mib.a[PATH0].fddiPATHSbaPayload ;
drivers/net/fddi/skfp/smt.c
1394
st->st_frame_ct = smc->mib.m[MAC0].fddiMACFrame_Ct ;
drivers/net/fddi/skfp/smt.c
1395
st->st_error_ct = smc->mib.m[MAC0].fddiMACError_Ct ;
drivers/net/fddi/skfp/smt.c
1396
st->st_lost_ct = smc->mib.m[MAC0].fddiMACLost_Ct ;
drivers/net/fddi/skfp/smt.c
575
struct smt_p_state *st ;
drivers/net/fddi/skfp/smt.c
598
st = (struct smt_p_state *)
drivers/net/fddi/skfp/smt.c
600
if (st) {
drivers/net/fddi/skfp/smt.c
602
(st->st_dupl_addr & SMT_ST_MY_DUPA) ?
drivers/net/fddi/skfp/smt.c
81
static void smt_fill_mac_status(struct s_smc *smc, struct smt_p_mac_status *st);
drivers/net/fddi/skfp/smtdef.c
278
int st ;
drivers/net/fddi/skfp/smtdef.c
281
st = set_min_max(1,smc->mib.m[MAC0].fddiMACTvxValueMIB,
drivers/net/fddi/skfp/smtdef.c
284
st |= set_min_max(0,smc->mib.m[MAC0].fddiMACT_MaxMIB,
drivers/net/fddi/skfp/smtdef.c
287
st |= (st2 = set_min_max(0,smc->mib.m[MAC0].fddiMACT_ReqMIB,
drivers/net/fddi/skfp/smtdef.c
298
return st;
drivers/net/mdio/mdio-aspeed.c
48
static int aspeed_mdio_op(struct mii_bus *bus, u8 st, u8 op, u8 phyad, u8 regad,
drivers/net/mdio/mdio-aspeed.c
55
__func__, st, op, phyad, regad, data);
drivers/net/mdio/mdio-aspeed.c
58
| FIELD_PREP(ASPEED_MDIO_CTRL_ST, st)
drivers/net/phy/phy.c
48
static const char *phy_state_to_str(enum phy_state st)
drivers/net/phy/phy.c
50
switch (st) {
drivers/net/phy/phylink.c
1004
struct phylink_link_state st = *state;
drivers/net/phy/phylink.c
1007
linkmode_zero(st.lp_advertising);
drivers/net/phy/phylink.c
1008
st.speed = SPEED_UNKNOWN;
drivers/net/phy/phylink.c
1009
st.duplex = DUPLEX_UNKNOWN;
drivers/net/phy/phylink.c
1010
st.an_complete = false;
drivers/net/phy/phylink.c
1011
st.link = false;
drivers/net/phy/phylink.c
1016
phy_modes(st.interface),
drivers/net/phy/phylink.c
1017
phy_rate_matching_to_str(st.rate_matching),
drivers/net/phy/phylink.c
1018
__ETHTOOL_LINK_MODE_MASK_NBITS, st.advertising,
drivers/net/phy/phylink.c
1019
st.pause);
drivers/net/phy/phylink.c
1021
pl->mac_ops->mac_config(pl->config, pl->act_link_an_mode, &st);
drivers/net/ppp/ppp_generic.c
287
static void ppp_get_stats(struct ppp *ppp, struct ppp_stats *st);
drivers/net/ppp/ppp_generic.c
3311
ppp_get_stats(struct ppp *ppp, struct ppp_stats *st)
drivers/net/ppp/ppp_generic.c
3316
memset(st, 0, sizeof(*st));
drivers/net/ppp/ppp_generic.c
3326
st->p.ppp_ipackets += rx_packets;
drivers/net/ppp/ppp_generic.c
3327
st->p.ppp_ibytes += rx_bytes;
drivers/net/ppp/ppp_generic.c
3328
st->p.ppp_opackets += tx_packets;
drivers/net/ppp/ppp_generic.c
3329
st->p.ppp_obytes += tx_bytes;
drivers/net/ppp/ppp_generic.c
3331
st->p.ppp_ierrors = DEV_STATS_READ(ppp->dev, rx_errors);
drivers/net/ppp/ppp_generic.c
3332
st->p.ppp_oerrors = DEV_STATS_READ(ppp->dev, tx_errors);
drivers/net/ppp/ppp_generic.c
3335
st->vj.vjs_packets = vj->sls_o_compressed + vj->sls_o_uncompressed;
drivers/net/ppp/ppp_generic.c
3336
st->vj.vjs_compressed = vj->sls_o_compressed;
drivers/net/ppp/ppp_generic.c
3337
st->vj.vjs_searches = vj->sls_o_searches;
drivers/net/ppp/ppp_generic.c
3338
st->vj.vjs_misses = vj->sls_o_misses;
drivers/net/ppp/ppp_generic.c
3339
st->vj.vjs_errorin = vj->sls_i_error;
drivers/net/ppp/ppp_generic.c
3340
st->vj.vjs_tossed = vj->sls_i_tossed;
drivers/net/ppp/ppp_generic.c
3341
st->vj.vjs_uncompressedin = vj->sls_i_uncompressed;
drivers/net/ppp/ppp_generic.c
3342
st->vj.vjs_compressedin = vj->sls_i_compressed;
drivers/net/wan/hdlc_cisco.c
144
struct cisco_state *st = state(hdlc);
drivers/net/wan/hdlc_cisco.c
208
spin_lock(&st->lock);
drivers/net/wan/hdlc_cisco.c
209
st->rxseq = ntohl(cisco_data->par1);
drivers/net/wan/hdlc_cisco.c
211
if (ack && (ack == st->txseq ||
drivers/net/wan/hdlc_cisco.c
213
ack == st->txseq - 1)) {
drivers/net/wan/hdlc_cisco.c
214
st->last_poll = jiffies;
drivers/net/wan/hdlc_cisco.c
215
if (!st->up) {
drivers/net/wan/hdlc_cisco.c
225
st->up = 1;
drivers/net/wan/hdlc_cisco.c
228
spin_unlock(&st->lock);
drivers/net/wan/hdlc_cisco.c
247
struct cisco_state *st = timer_container_of(st, t, timer);
drivers/net/wan/hdlc_cisco.c
248
struct net_device *dev = st->dev;
drivers/net/wan/hdlc_cisco.c
250
spin_lock(&st->lock);
drivers/net/wan/hdlc_cisco.c
251
if (st->up &&
drivers/net/wan/hdlc_cisco.c
252
time_after(jiffies, st->last_poll + st->settings.timeout * HZ)) {
drivers/net/wan/hdlc_cisco.c
253
st->up = 0;
drivers/net/wan/hdlc_cisco.c
258
cisco_keepalive_send(dev, CISCO_KEEPALIVE_REQ, htonl(++st->txseq),
drivers/net/wan/hdlc_cisco.c
259
htonl(st->rxseq));
drivers/net/wan/hdlc_cisco.c
260
spin_unlock(&st->lock);
drivers/net/wan/hdlc_cisco.c
262
st->timer.expires = jiffies + st->settings.interval * HZ;
drivers/net/wan/hdlc_cisco.c
263
add_timer(&st->timer);
drivers/net/wan/hdlc_cisco.c
269
struct cisco_state *st = state(hdlc);
drivers/net/wan/hdlc_cisco.c
272
spin_lock_irqsave(&st->lock, flags);
drivers/net/wan/hdlc_cisco.c
273
st->up = st->txseq = st->rxseq = 0;
drivers/net/wan/hdlc_cisco.c
274
spin_unlock_irqrestore(&st->lock, flags);
drivers/net/wan/hdlc_cisco.c
276
st->dev = dev;
drivers/net/wan/hdlc_cisco.c
277
timer_setup(&st->timer, cisco_timer, 0);
drivers/net/wan/hdlc_cisco.c
278
st->timer.expires = jiffies + HZ; /* First poll after 1 s */
drivers/net/wan/hdlc_cisco.c
279
add_timer(&st->timer);
drivers/net/wan/hdlc_cisco.c
285
struct cisco_state *st = state(hdlc);
drivers/net/wan/hdlc_cisco.c
288
timer_delete_sync(&st->timer);
drivers/net/wan/hdlc_cisco.c
290
spin_lock_irqsave(&st->lock, flags);
drivers/net/wan/hdlc_cisco.c
292
st->up = st->txseq = 0;
drivers/net/wan/hdlc_cisco.c
293
spin_unlock_irqrestore(&st->lock, flags);
drivers/net/wan/hdlc_fr.c
584
struct frad_state *st = timer_container_of(st, t, timer);
drivers/net/wan/hdlc_fr.c
585
struct net_device *dev = st->dev;
drivers/net/wireless/ath/ath5k/debug.c
530
struct ath5k_statistics *st = &ah->stats;
drivers/net/wireless/ath/ath5k/debug.c
538
st->rxerr_crc,
drivers/net/wireless/ath/ath5k/debug.c
539
st->rx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
540
st->rxerr_crc * 100 / st->rx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
542
st->rxerr_phy,
drivers/net/wireless/ath/ath5k/debug.c
543
st->rx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
544
st->rxerr_phy * 100 / st->rx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
546
if (st->rxerr_phy_code[i])
drivers/net/wireless/ath/ath5k/debug.c
549
i, st->rxerr_phy_code[i]);
drivers/net/wireless/ath/ath5k/debug.c
553
st->rxerr_fifo,
drivers/net/wireless/ath/ath5k/debug.c
554
st->rx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
555
st->rxerr_fifo * 100 / st->rx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
557
st->rxerr_decrypt,
drivers/net/wireless/ath/ath5k/debug.c
558
st->rx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
559
st->rxerr_decrypt * 100 / st->rx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
561
st->rxerr_mic,
drivers/net/wireless/ath/ath5k/debug.c
562
st->rx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
563
st->rxerr_mic * 100 / st->rx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
565
st->rxerr_proc,
drivers/net/wireless/ath/ath5k/debug.c
566
st->rx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
567
st->rxerr_proc * 100 / st->rx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
569
st->rxerr_jumbo,
drivers/net/wireless/ath/ath5k/debug.c
570
st->rx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
571
st->rxerr_jumbo * 100 / st->rx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
573
st->rx_all_count);
drivers/net/wireless/ath/ath5k/debug.c
575
st->rx_bytes_count);
drivers/net/wireless/ath/ath5k/debug.c
580
st->txerr_retry,
drivers/net/wireless/ath/ath5k/debug.c
581
st->tx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
582
st->txerr_retry * 100 / st->tx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
584
st->txerr_fifo,
drivers/net/wireless/ath/ath5k/debug.c
585
st->tx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
586
st->txerr_fifo * 100 / st->tx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
588
st->txerr_filt,
drivers/net/wireless/ath/ath5k/debug.c
589
st->tx_all_count > 0 ?
drivers/net/wireless/ath/ath5k/debug.c
590
st->txerr_filt * 100 / st->tx_all_count : 0);
drivers/net/wireless/ath/ath5k/debug.c
592
st->tx_all_count);
drivers/net/wireless/ath/ath5k/debug.c
594
st->tx_bytes_count);
drivers/net/wireless/ath/ath5k/debug.c
607
struct ath5k_statistics *st = &ah->stats;
drivers/net/wireless/ath/ath5k/debug.c
616
st->rxerr_crc = 0;
drivers/net/wireless/ath/ath5k/debug.c
617
st->rxerr_phy = 0;
drivers/net/wireless/ath/ath5k/debug.c
618
st->rxerr_fifo = 0;
drivers/net/wireless/ath/ath5k/debug.c
619
st->rxerr_decrypt = 0;
drivers/net/wireless/ath/ath5k/debug.c
620
st->rxerr_mic = 0;
drivers/net/wireless/ath/ath5k/debug.c
621
st->rxerr_proc = 0;
drivers/net/wireless/ath/ath5k/debug.c
622
st->rxerr_jumbo = 0;
drivers/net/wireless/ath/ath5k/debug.c
623
st->rx_all_count = 0;
drivers/net/wireless/ath/ath5k/debug.c
624
st->txerr_retry = 0;
drivers/net/wireless/ath/ath5k/debug.c
625
st->txerr_fifo = 0;
drivers/net/wireless/ath/ath5k/debug.c
626
st->txerr_filt = 0;
drivers/net/wireless/ath/ath5k/debug.c
627
st->tx_all_count = 0;
drivers/net/wireless/ath/ath5k/debug.c
648
struct ath5k_statistics *st = &ah->stats;
drivers/net/wireless/ath/ath5k/debug.c
702
st->mib_intr);
drivers/net/wireless/ath/ath6kl/txrx.c
1113
u16 idx, st, cur, end;
drivers/net/wireless/ath/ath6kl/txrx.c
1135
st = rxtid->seq_next;
drivers/net/wireless/ath/ath6kl/txrx.c
1137
end = (st + rxtid->hold_q_sz-1) & ATH6KL_MAX_SEQ_NO;
drivers/net/wireless/ath/ath6kl/txrx.c
1139
if (((st < end) && (cur < st || cur > end)) ||
drivers/net/wireless/ath/ath6kl/txrx.c
1140
((st > end) && (cur > end) && (cur < st))) {
drivers/net/wireless/ath/ath6kl/txrx.c
1162
st = cur - (rxtid->hold_q_sz - 1);
drivers/net/wireless/ath/ath6kl/txrx.c
1164
st = ATH6KL_MAX_SEQ_NO -
drivers/net/wireless/ath/ath6kl/txrx.c
1167
aggr_deque_frms(agg_conn, tid, st, 0);
drivers/net/wireless/ath/wil6210/txrx_edma.c
529
struct wil_rx_status_extended *st;
drivers/net/wireless/ath/wil6210/txrx_edma.c
540
st = wil_skb_rxstatus(skb);
drivers/net/wireless/ath/wil6210/txrx_edma.c
542
cid = wil_rx_status_get_cid(st);
drivers/net/wireless/ath/wil6210/txrx_edma.c
543
tid = wil_rx_status_get_tid(st);
drivers/net/wireless/ath/wil6210/txrx_edma.c
544
key_id = wil_rx_status_get_key_id(st);
drivers/net/wireless/ath/wil6210/txrx_edma.c
545
mc = wil_rx_status_get_mcast(st);
drivers/net/wireless/ath/wil6210/txrx_edma.c
549
pn = (u8 *)&st->ext.pn;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
112
enum nvram_parser_state st = nvp->state;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
119
st = COMMENT;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
121
st = VALUE;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
131
st = COMMENT;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
140
return st;
drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c
109
struct iwl_mvm_smooth_entry *se, *st;
drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c
111
list_for_each_entry_safe(se, st, &mvm->ftm_initiator.smooth.resp,
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
478
struct mt76x02_tx_status *st, int n_frames)
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
483
int retry = st->retry;
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
490
phy = FIELD_GET(MT_RXWI_RATE_PHY, st->rate);
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
492
if (st->pktid & MT_PACKET_ID_HAS_RATE) {
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
493
first_rate = st->rate & ~MT_PKTID_RATE;
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
494
first_rate |= st->pktid & MT_PKTID_RATE;
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
506
mt76x02_mac_process_tx_rate(&last_rate, st->rate,
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
528
info->status.ampdu_ack_len = st->success ? n_frames : 0;
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
530
if (st->aggr)
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
534
if (!st->ack_req)
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
536
else if (st->success)
drivers/net/wireless/mediatek/mt7601u/mac.c
100
else if (st->success)
drivers/net/wireless/mediatek/mt7601u/mac.c
67
struct mt76_tx_status *st)
drivers/net/wireless/mediatek/mt7601u/mac.c
73
last_rate = min_t(int, st->retry, IEEE80211_TX_MAX_RATES - 1);
drivers/net/wireless/mediatek/mt7601u/mac.c
74
mt76_mac_process_tx_rate(&rate[last_rate], st->rate);
drivers/net/wireless/mediatek/mt7601u/mac.c
78
cur_idx = rate[last_rate].idx + st->retry;
drivers/net/wireless/mediatek/mt7601u/mac.c
86
rate[last_rate - 1].count = st->retry + 1 - last_rate;
drivers/net/wireless/mediatek/mt7601u/mac.c
89
info->status.ampdu_ack_len = st->success;
drivers/net/wireless/mediatek/mt7601u/mac.c
91
if (st->is_probe)
drivers/net/wireless/mediatek/mt7601u/mac.c
94
if (st->aggr)
drivers/net/wireless/mediatek/mt7601u/mac.c
98
if (!st->ack_req)
drivers/net/wireless/realtek/rtlwifi/base.c
1654
u8 st, retry;
drivers/net/wireless/realtek/rtlwifi/base.c
1658
st = GET_TX_REPORT_ST_V2(tmp_buf);
drivers/net/wireless/realtek/rtlwifi/base.c
1662
st = GET_TX_REPORT_ST_V1(tmp_buf);
drivers/net/wireless/realtek/rtlwifi/base.c
1672
rtl_tx_status(hw, skb, st == 0);
drivers/net/wireless/realtek/rtlwifi/base.c
1678
st, sn, retry);
drivers/net/wireless/realtek/rtw88/tx.c
240
u8 sn, st;
drivers/net/wireless/realtek/rtw88/tx.c
247
st = GET_CCX_REPORT_STATUS_V0(c2h->payload);
drivers/net/wireless/realtek/rtw88/tx.c
250
st = GET_CCX_REPORT_STATUS_V1(c2h->payload);
drivers/net/wireless/realtek/rtw88/tx.c
258
rtw_tx_report_tx_status(rtwdev, cur, st == 0);
drivers/net/wireless/realtek/rtw89/mac_be.c
726
u8 st;
drivers/net/wireless/realtek/rtw89/mac_be.c
750
st = u32_get_bits(val32, B_BE_WCPU_FWDL_STATUS_MASK);
drivers/net/wireless/realtek/rtw89/mac_be.c
751
if (st < ARRAY_SIZE(fwdl_status_map))
drivers/net/wireless/realtek/rtw89/mac_be.c
752
return fwdl_status_map[st];
drivers/net/wireless/realtek/rtw89/mac_be.c
754
return st;
drivers/net/wireless/silabs/wfx/debug.c
154
struct wfx_hif_rx_stats *st = &wdev->rx_stats;
drivers/net/wireless/silabs/wfx/debug.c
158
seq_printf(seq, "Timestamp: %dus\n", st->date);
drivers/net/wireless/silabs/wfx/debug.c
160
le32_to_cpu(st->pwr_clk_freq), st->is_ext_pwr_clk ? "yes" : "no");
drivers/net/wireless/silabs/wfx/debug.c
162
st->nb_rx_frame, st->per_total, st->throughput);
drivers/net/wireless/silabs/wfx/debug.c
169
le32_to_cpu(st->nb_rx_by_rate[i]),
drivers/net/wireless/silabs/wfx/debug.c
170
le16_to_cpu(st->per[i]),
drivers/net/wireless/silabs/wfx/debug.c
171
(s16)le16_to_cpu(st->rssi[i]) / 100,
drivers/net/wireless/silabs/wfx/debug.c
172
(s16)le16_to_cpu(st->snr[i]) / 100,
drivers/net/wireless/silabs/wfx/debug.c
173
(s16)le16_to_cpu(st->cfo[i]));
drivers/net/wireless/silabs/wfx/debug.c
184
struct wfx_hif_tx_power_loop_info *st = &wdev->tx_power_loop_info;
drivers/net/wireless/silabs/wfx/debug.c
188
tmp = le16_to_cpu(st->tx_gain_dig);
drivers/net/wireless/silabs/wfx/debug.c
190
tmp = le16_to_cpu(st->tx_gain_pa);
drivers/net/wireless/silabs/wfx/debug.c
192
tmp = (s16)le16_to_cpu(st->target_pout);
drivers/net/wireless/silabs/wfx/debug.c
194
tmp = (s16)le16_to_cpu(st->p_estimation);
drivers/net/wireless/silabs/wfx/debug.c
196
tmp = le16_to_cpu(st->vpdet);
drivers/net/wireless/silabs/wfx/debug.c
198
seq_printf(seq, "Measure index: %d\n", st->measurement_index);
drivers/pinctrl/actions/pinctrl-owl.c
240
if (!info->st)
drivers/pinctrl/actions/pinctrl-owl.c
242
*reg = info->st->reg;
drivers/pinctrl/actions/pinctrl-owl.c
243
*bit = info->st->shift;
drivers/pinctrl/actions/pinctrl-owl.c
244
*width = info->st->width;
drivers/pinctrl/actions/pinctrl-owl.h
102
.st = NULL, \
drivers/pinctrl/actions/pinctrl-owl.h
109
.st = &name##_st_conf, \
drivers/pinctrl/actions/pinctrl-owl.h
116
.st = NULL, \
drivers/pinctrl/actions/pinctrl-owl.h
123
.st = &name##_st_conf, \
drivers/pinctrl/actions/pinctrl-owl.h
237
struct owl_st *st;
drivers/pmdomain/core.c
3646
struct genpd_power_state *st;
drivers/pmdomain/core.c
3659
st = kzalloc_objs(*st, ret);
drivers/pmdomain/core.c
3660
if (!st)
drivers/pmdomain/core.c
3663
ret = genpd_iterate_idle_states(dn, st);
drivers/pmdomain/core.c
3665
kfree(st);
drivers/pmdomain/core.c
3669
*states = st;
drivers/pmdomain/renesas/rcar-gen4-sysc.c
181
unsigned int st;
drivers/pmdomain/renesas/rcar-gen4-sysc.c
183
st = ioread32(rcar_gen4_sysc_base + PDRSR(pdr));
drivers/pmdomain/renesas/rcar-gen4-sysc.c
185
if (st & PDRSR_OFF)
drivers/pmdomain/renesas/rcar-sysc.c
172
unsigned int st;
drivers/pmdomain/renesas/rcar-sysc.c
174
st = ioread32(rcar_sysc_base + pd->chan_offs + PWRSR_OFFS);
drivers/pmdomain/renesas/rcar-sysc.c
175
if (st & BIT(pd->chan_bit))
drivers/pmdomain/ti/omap_prm.c
141
{ .rst = 0, .st = 0 },
drivers/pmdomain/ti/omap_prm.c
146
{ .rst = 0, .st = 0 },
drivers/pmdomain/ti/omap_prm.c
147
{ .rst = 1, .st = 1 },
drivers/pmdomain/ti/omap_prm.c
152
{ .rst = 0, .st = 0 },
drivers/pmdomain/ti/omap_prm.c
153
{ .rst = 1, .st = 1 },
drivers/pmdomain/ti/omap_prm.c
154
{ .rst = 2, .st = 2 },
drivers/pmdomain/ti/omap_prm.c
401
{ .rst = 3, .st = 5 },
drivers/pmdomain/ti/omap_prm.c
445
{ .rst = 1, .st = 0 },
drivers/pmdomain/ti/omap_prm.c
450
{ .rst = 0, .st = 1 },
drivers/pmdomain/ti/omap_prm.c
451
{ .rst = 1, .st = 0 },
drivers/pmdomain/ti/omap_prm.c
52
s8 st;
drivers/pmdomain/ti/omap_prm.c
744
return map->st;
drivers/power/supply/adp5061.c
156
static int adp5061_get_status(struct adp5061_state *st,
drivers/power/supply/adp5061.c
163
ret = regmap_bulk_read(st->regmap, ADP5061_CHG_STATUS_1,
drivers/power/supply/adp5061.c
174
static int adp5061_get_input_current_limit(struct adp5061_state *st,
drivers/power/supply/adp5061.c
180
ret = regmap_read(st->regmap, ADP5061_VINX_SET, ®val);
drivers/power/supply/adp5061.c
190
static int adp5061_set_input_current_limit(struct adp5061_state *st, int val)
drivers/power/supply/adp5061.c
202
return regmap_update_bits(st->regmap, ADP5061_VINX_SET,
drivers/power/supply/adp5061.c
207
static int adp5061_set_min_voltage(struct adp5061_state *st, int val)
drivers/power/supply/adp5061.c
219
return regmap_update_bits(st->regmap, ADP5061_VOLTAGE_TH,
drivers/power/supply/adp5061.c
224
static int adp5061_get_min_voltage(struct adp5061_state *st,
drivers/power/supply/adp5061.c
230
ret = regmap_read(st->regmap, ADP5061_VOLTAGE_TH, ®val);
drivers/power/supply/adp5061.c
240
static int adp5061_get_chg_volt_lim(struct adp5061_state *st,
drivers/power/supply/adp5061.c
246
ret = regmap_read(st->regmap, ADP5061_TERM_SET, ®val);
drivers/power/supply/adp5061.c
256
static int adp5061_get_max_voltage(struct adp5061_state *st,
drivers/power/supply/adp5061.c
262
ret = regmap_read(st->regmap, ADP5061_TERM_SET, ®val);
drivers/power/supply/adp5061.c
275
static int adp5061_set_max_voltage(struct adp5061_state *st, int val)
drivers/power/supply/adp5061.c
291
return regmap_update_bits(st->regmap, ADP5061_TERM_SET,
drivers/power/supply/adp5061.c
296
static int adp5061_set_const_chg_vmax(struct adp5061_state *st, int val)
drivers/power/supply/adp5061.c
308
return regmap_update_bits(st->regmap, ADP5061_TERM_SET,
drivers/power/supply/adp5061.c
313
static int adp5061_set_const_chg_current(struct adp5061_state *st, int val)
drivers/power/supply/adp5061.c
329
return regmap_update_bits(st->regmap, ADP5061_CHG_CURR,
drivers/power/supply/adp5061.c
334
static int adp5061_get_const_chg_current(struct adp5061_state *st,
drivers/power/supply/adp5061.c
340
ret = regmap_read(st->regmap, ADP5061_CHG_CURR, ®val);
drivers/power/supply/adp5061.c
353
static int adp5061_get_prechg_current(struct adp5061_state *st,
drivers/power/supply/adp5061.c
359
ret = regmap_read(st->regmap, ADP5061_CHG_CURR, ®val);
drivers/power/supply/adp5061.c
369
static int adp5061_set_prechg_current(struct adp5061_state *st, int val)
drivers/power/supply/adp5061.c
381
return regmap_update_bits(st->regmap, ADP5061_CHG_CURR,
drivers/power/supply/adp5061.c
386
static int adp5061_get_vweak_th(struct adp5061_state *st,
drivers/power/supply/adp5061.c
392
ret = regmap_read(st->regmap, ADP5061_VOLTAGE_TH, ®val);
drivers/power/supply/adp5061.c
402
static int adp5061_set_vweak_th(struct adp5061_state *st, int val)
drivers/power/supply/adp5061.c
414
return regmap_update_bits(st->regmap, ADP5061_VOLTAGE_TH,
drivers/power/supply/adp5061.c
419
static int adp5061_get_chg_type(struct adp5061_state *st,
drivers/power/supply/adp5061.c
425
ret = adp5061_get_status(st, &status1, &status2);
drivers/power/supply/adp5061.c
438
static int adp5061_get_charger_status(struct adp5061_state *st,
drivers/power/supply/adp5061.c
444
ret = adp5061_get_status(st, &status1, &status2);
drivers/power/supply/adp5061.c
471
static int adp5061_get_battery_status(struct adp5061_state *st,
drivers/power/supply/adp5061.c
477
ret = adp5061_get_status(st, &status1, &status2);
drivers/power/supply/adp5061.c
503
static int adp5061_get_termination_current(struct adp5061_state *st,
drivers/power/supply/adp5061.c
509
ret = regmap_read(st->regmap, ADP5061_IEND, ®val);
drivers/power/supply/adp5061.c
519
static int adp5061_set_termination_current(struct adp5061_state *st, int val)
drivers/power/supply/adp5061.c
529
return regmap_update_bits(st->regmap, ADP5061_IEND,
drivers/power/supply/adp5061.c
538
struct adp5061_state *st = power_supply_get_drvdata(psy);
drivers/power/supply/adp5061.c
544
ret = adp5061_get_status(st, &status1, &status2);
drivers/power/supply/adp5061.c
555
return adp5061_get_chg_type(st, val);
drivers/power/supply/adp5061.c
560
return adp5061_get_input_current_limit(st, val);
drivers/power/supply/adp5061.c
565
return adp5061_get_max_voltage(st, val);
drivers/power/supply/adp5061.c
571
return adp5061_get_min_voltage(st, val);
drivers/power/supply/adp5061.c
576
return adp5061_get_chg_volt_lim(st, val);
drivers/power/supply/adp5061.c
582
return adp5061_get_const_chg_current(st, val);
drivers/power/supply/adp5061.c
588
return adp5061_get_prechg_current(st, val);
drivers/power/supply/adp5061.c
595
return adp5061_get_vweak_th(st, val);
drivers/power/supply/adp5061.c
601
return adp5061_get_charger_status(st, val);
drivers/power/supply/adp5061.c
607
return adp5061_get_battery_status(st, val);
drivers/power/supply/adp5061.c
610
return adp5061_get_termination_current(st, val);
drivers/power/supply/adp5061.c
622
struct adp5061_state *st = power_supply_get_drvdata(psy);
drivers/power/supply/adp5061.c
626
return adp5061_set_input_current_limit(st, val->intval);
drivers/power/supply/adp5061.c
628
return adp5061_set_max_voltage(st, val->intval);
drivers/power/supply/adp5061.c
630
return adp5061_set_min_voltage(st, val->intval);
drivers/power/supply/adp5061.c
632
return adp5061_set_const_chg_vmax(st, val->intval);
drivers/power/supply/adp5061.c
634
return adp5061_set_const_chg_current(st, val->intval);
drivers/power/supply/adp5061.c
636
return adp5061_set_prechg_current(st, val->intval);
drivers/power/supply/adp5061.c
638
return adp5061_set_vweak_th(st, val->intval);
drivers/power/supply/adp5061.c
640
return adp5061_set_termination_current(st, val->intval);
drivers/power/supply/adp5061.c
699
struct adp5061_state *st;
drivers/power/supply/adp5061.c
701
st = devm_kzalloc(&client->dev, sizeof(*st), GFP_KERNEL);
drivers/power/supply/adp5061.c
702
if (!st)
drivers/power/supply/adp5061.c
705
st->client = client;
drivers/power/supply/adp5061.c
706
st->regmap = devm_regmap_init_i2c(client,
drivers/power/supply/adp5061.c
708
if (IS_ERR(st->regmap)) {
drivers/power/supply/adp5061.c
713
i2c_set_clientdata(client, st);
drivers/power/supply/adp5061.c
714
psy_cfg.drv_data = st;
drivers/power/supply/adp5061.c
716
st->psy = devm_power_supply_register(&client->dev,
drivers/power/supply/adp5061.c
720
if (IS_ERR(st->psy)) {
drivers/power/supply/adp5061.c
722
return PTR_ERR(st->psy);
drivers/ptp/ptp_vmclock.c
116
seq = le32_to_cpu(st->clk->seq_count) & ~1ULL;
drivers/ptp/ptp_vmclock.c
124
if (st->clk->clock_status == VMCLOCK_STATUS_UNRELIABLE)
drivers/ptp/ptp_vmclock.c
140
if (sts->pre_sts.cs_id == st->cs_id) {
drivers/ptp/ptp_vmclock.c
143
} else if (sts->pre_sts.hw_csid == st->cs_id &&
drivers/ptp/ptp_vmclock.c
155
delta = cycle - le64_to_cpu(st->clk->counter_value);
drivers/ptp/ptp_vmclock.c
158
le64_to_cpu(st->clk->counter_period_frac_sec),
drivers/ptp/ptp_vmclock.c
159
st->clk->counter_period_shift,
drivers/ptp/ptp_vmclock.c
160
le64_to_cpu(st->clk->time_frac_sec));
drivers/ptp/ptp_vmclock.c
162
tspec->tv_sec += le64_to_cpu(st->clk->time_sec);
drivers/ptp/ptp_vmclock.c
164
if (!tai_adjust(st->clk, &tspec->tv_sec))
drivers/ptp/ptp_vmclock.c
172
if (seq == le32_to_cpu(st->clk->seq_count))
drivers/ptp/ptp_vmclock.c
181
system_counter->cs_id = st->cs_id;
drivers/ptp/ptp_vmclock.c
193
static int vmclock_get_crosststamp_kvmclock(struct vmclock_state *st,
drivers/ptp/ptp_vmclock.c
207
ret = vmclock_get_crosststamp(st, sts, system_counter, tspec);
drivers/ptp/ptp_vmclock.c
236
struct vmclock_state *st = ctx;
drivers/ptp/ptp_vmclock.c
241
if (READ_ONCE(st->sys_cs_id) == CSID_X86_KVM_CLK)
drivers/ptp/ptp_vmclock.c
242
ret = vmclock_get_crosststamp_kvmclock(st, NULL, system_counter,
drivers/ptp/ptp_vmclock.c
246
ret = vmclock_get_crosststamp(st, NULL, system_counter, &tspec);
drivers/ptp/ptp_vmclock.c
257
struct vmclock_state *st = container_of(ptp, struct vmclock_state,
drivers/ptp/ptp_vmclock.c
259
int ret = get_device_system_crosststamp(ptp_vmclock_get_time_fn, st,
drivers/ptp/ptp_vmclock.c
274
WRITE_ONCE(st->sys_cs_id, systime_snapshot.cs_id);
drivers/ptp/ptp_vmclock.c
276
st, NULL, xtstamp);
drivers/ptp/ptp_vmclock.c
306
struct vmclock_state *st = container_of(ptp, struct vmclock_state,
drivers/ptp/ptp_vmclock.c
309
return vmclock_get_crosststamp(st, sts, NULL, ts);
drivers/ptp/ptp_vmclock.c
333
struct vmclock_state *st)
drivers/ptp/ptp_vmclock.c
338
st->clk->counter_id == VMCLOCK_COUNTER_ARM_VCNT) {
drivers/ptp/ptp_vmclock.c
342
st->clk->counter_id == VMCLOCK_COUNTER_X86_TSC) {
drivers/ptp/ptp_vmclock.c
349
if (!tai_adjust(st->clk, NULL)) {
drivers/ptp/ptp_vmclock.c
354
st->sys_cs_id = cs_id;
drivers/ptp/ptp_vmclock.c
355
st->cs_id = cs_id;
drivers/ptp/ptp_vmclock.c
356
st->ptp_clock_info = ptp_vmclock_info;
drivers/ptp/ptp_vmclock.c
357
strscpy(st->ptp_clock_info.name, st->name);
drivers/ptp/ptp_vmclock.c
359
return ptp_clock_register(&st->ptp_clock_info, dev);
drivers/ptp/ptp_vmclock.c
363
struct vmclock_state *st;
drivers/ptp/ptp_vmclock.c
370
struct vmclock_state *st = fst->st;
drivers/ptp/ptp_vmclock.c
379
st->res.start >> PAGE_SHIFT, PAGE_SIZE,
drivers/ptp/ptp_vmclock.c
391
struct vmclock_state *st = fst->st;
drivers/ptp/ptp_vmclock.c
404
seq = le32_to_cpu(st->clk->seq_count) & ~1U;
drivers/ptp/ptp_vmclock.c
408
if (copy_to_user(buf, ((char *)st->clk) + *ppos, count))
drivers/ptp/ptp_vmclock.c
413
if (seq == le32_to_cpu(st->clk->seq_count)) {
drivers/ptp/ptp_vmclock.c
435
struct vmclock_state *st = fst->st;
drivers/ptp/ptp_vmclock.c
442
if (!(le64_to_cpu(st->clk->flags) & VMCLOCK_FLAG_NOTIFICATION_PRESENT))
drivers/ptp/ptp_vmclock.c
445
poll_wait(fp, &st->disrupt_wait, wait);
drivers/ptp/ptp_vmclock.c
447
seq = le32_to_cpu(st->clk->seq_count);
drivers/ptp/ptp_vmclock.c
456
struct vmclock_state *st = container_of(fp->private_data,
drivers/ptp/ptp_vmclock.c
463
fst->st = st;
drivers/ptp/ptp_vmclock.c
491
struct vmclock_state *st = data;
drivers/ptp/ptp_vmclock.c
499
if (resource_type(&st->res) == IORESOURCE_MEM)
drivers/ptp/ptp_vmclock.c
506
resource_size(res) < sizeof(st->clk))
drivers/ptp/ptp_vmclock.c
509
st->res = *res;
drivers/ptp/ptp_vmclock.c
521
struct vmclock_state *st = device->driver_data;
drivers/ptp/ptp_vmclock.c
523
wake_up_interruptible(&st->disrupt_wait);
drivers/ptp/ptp_vmclock.c
550
static int vmclock_probe_acpi(struct device *dev, struct vmclock_state *st)
drivers/ptp/ptp_vmclock.c
564
vmclock_acpi_resources, st);
drivers/ptp/ptp_vmclock.c
565
if (ACPI_FAILURE(status) || resource_type(&st->res) != IORESOURCE_MEM) {
drivers/ptp/ptp_vmclock.c
576
struct vmclock_state *st = _st;
drivers/ptp/ptp_vmclock.c
578
wake_up_interruptible(&st->disrupt_wait);
drivers/ptp/ptp_vmclock.c
582
static int vmclock_probe_dt(struct device *dev, struct vmclock_state *st)
drivers/ptp/ptp_vmclock.c
591
st->res = *res;
drivers/ptp/ptp_vmclock.c
610
struct vmclock_state *st)
drivers/ptp/ptp_vmclock.c
613
if (!(le64_to_cpu(st->clk->flags) & VMCLOCK_FLAG_NOTIFICATION_PRESENT))
drivers/ptp/ptp_vmclock.c
626
struct vmclock_state *st = dev->driver_data;
drivers/ptp/ptp_vmclock.c
628
if (!st) {
drivers/ptp/ptp_vmclock.c
640
if (st->ptp_clock)
drivers/ptp/ptp_vmclock.c
641
ptp_clock_unregister(st->ptp_clock);
drivers/ptp/ptp_vmclock.c
643
if (st->miscdev.minor != MISC_DYNAMIC_MINOR)
drivers/ptp/ptp_vmclock.c
644
misc_deregister(&st->miscdev);
drivers/ptp/ptp_vmclock.c
651
struct vmclock_state *st = data;
drivers/ptp/ptp_vmclock.c
653
ida_free(&vmclock_ida, st->index);
drivers/ptp/ptp_vmclock.c
659
struct vmclock_state *st;
drivers/ptp/ptp_vmclock.c
662
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/ptp/ptp_vmclock.c
663
if (!st)
drivers/ptp/ptp_vmclock.c
668
ret = vmclock_probe_acpi(dev, st);
drivers/ptp/ptp_vmclock.c
671
ret = vmclock_probe_dt(dev, st);
drivers/ptp/ptp_vmclock.c
678
if (resource_size(&st->res) < VMCLOCK_MIN_SIZE) {
drivers/ptp/ptp_vmclock.c
680
resource_size(&st->res));
drivers/ptp/ptp_vmclock.c
683
st->clk = devm_memremap(dev, st->res.start, resource_size(&st->res),
drivers/ptp/ptp_vmclock.c
685
if (IS_ERR(st->clk)) {
drivers/ptp/ptp_vmclock.c
686
ret = PTR_ERR(st->clk);
drivers/ptp/ptp_vmclock.c
688
st->clk = NULL;
drivers/ptp/ptp_vmclock.c
692
if (le32_to_cpu(st->clk->magic) != VMCLOCK_MAGIC ||
drivers/ptp/ptp_vmclock.c
693
le32_to_cpu(st->clk->size) > resource_size(&st->res) ||
drivers/ptp/ptp_vmclock.c
694
le16_to_cpu(st->clk->version) != 1) {
drivers/ptp/ptp_vmclock.c
703
st->index = ret;
drivers/ptp/ptp_vmclock.c
704
ret = devm_add_action_or_reset(&pdev->dev, vmclock_put_idx, st);
drivers/ptp/ptp_vmclock.c
708
st->name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "vmclock%d", st->index);
drivers/ptp/ptp_vmclock.c
709
if (!st->name)
drivers/ptp/ptp_vmclock.c
712
st->miscdev.minor = MISC_DYNAMIC_MINOR;
drivers/ptp/ptp_vmclock.c
714
init_waitqueue_head(&st->disrupt_wait);
drivers/ptp/ptp_vmclock.c
715
dev->driver_data = st;
drivers/ptp/ptp_vmclock.c
721
ret = vmclock_setup_notification(dev, st);
drivers/ptp/ptp_vmclock.c
731
if (le32_to_cpu(st->clk->size) >= PAGE_SIZE) {
drivers/ptp/ptp_vmclock.c
732
st->miscdev.fops = &vmclock_miscdev_fops;
drivers/ptp/ptp_vmclock.c
733
st->miscdev.name = st->name;
drivers/ptp/ptp_vmclock.c
735
ret = misc_register(&st->miscdev);
drivers/ptp/ptp_vmclock.c
741
if (VMCLOCK_FIELD_PRESENT(st->clk, time_frac_sec)) {
drivers/ptp/ptp_vmclock.c
743
st->ptp_clock = vmclock_ptp_register(dev, st);
drivers/ptp/ptp_vmclock.c
744
if (IS_ERR(st->ptp_clock)) {
drivers/ptp/ptp_vmclock.c
745
ret = PTR_ERR(st->ptp_clock);
drivers/ptp/ptp_vmclock.c
746
st->ptp_clock = NULL;
drivers/ptp/ptp_vmclock.c
751
if (!st->miscdev.minor && !st->ptp_clock) {
drivers/ptp/ptp_vmclock.c
757
dev_info(dev, "%s: registered %s%s%s\n", st->name,
drivers/ptp/ptp_vmclock.c
758
st->miscdev.minor ? "miscdev" : "",
drivers/ptp/ptp_vmclock.c
759
(st->miscdev.minor && st->ptp_clock) ? ", " : "",
drivers/ptp/ptp_vmclock.c
760
st->ptp_clock ? "PTP" : "");
drivers/ptp/ptp_vmclock.c
98
static int vmclock_get_crosststamp(struct vmclock_state *st,
drivers/regulator/tps62360-regulator.c
465
int st;
drivers/regulator/tps62360-regulator.c
471
st = regmap_update_bits(tps->regmap, REG_RAMPCTRL, BIT(2), BIT(2));
drivers/regulator/tps62360-regulator.c
472
if (st < 0)
drivers/regulator/tps62360-regulator.c
475
__func__, REG_RAMPCTRL, st);
drivers/s390/cio/chsc.c
105
u8 st : 3; /* subchannel type */
drivers/s390/cio/chsc.c
154
if ((ssd_area->st != SUBCHANNEL_TYPE_IO) &&
drivers/s390/cio/chsc.c
155
(ssd_area->st != SUBCHANNEL_TYPE_MSG))
drivers/s390/cio/cio.c
619
if ((schib.pmcw.st == SUBCHANNEL_TYPE_IO) && schib.pmcw.dnv &&
drivers/s390/cio/cio.c
637
(schib.pmcw.st != SUBCHANNEL_TYPE_IO) || !schib.pmcw.dnv)
drivers/s390/cio/cio.h
40
u32 st : 3; /* subchannel type */
drivers/s390/cio/cio.h
93
} st; /* subchannel type */
drivers/s390/cio/css.c
1338
if (sch->st == id->type)
drivers/s390/cio/css.c
1382
ret = add_uevent_var(env, "ST=%01X", sch->st);
drivers/s390/cio/css.c
1385
ret = add_uevent_var(env, "MODALIAS=css:t%01X", sch->st);
drivers/s390/cio/css.c
170
switch (schib->pmcw.st) {
drivers/s390/cio/css.c
190
schid.ssid, schid.sch_no, schib->pmcw.st);
drivers/s390/cio/css.c
211
sch->st = schib->pmcw.st;
drivers/s390/cio/css.c
310
return sysfs_emit(buf, "%01x\n", sch->st);
drivers/s390/cio/css.c
320
return sysfs_emit(buf, "css:t%01X\n", sch->st);
drivers/s390/cio/css.c
381
if ((pmcw->st == SUBCHANNEL_TYPE_IO && pmcw->dnv) ||
drivers/s390/cio/css.c
382
(pmcw->st == SUBCHANNEL_TYPE_MSG && pmcw->w))
drivers/s390/cio/css.c
411
if (sch->st == SUBCHANNEL_TYPE_IO)
drivers/s390/cio/css.c
468
if ((schib->pmcw.st == SUBCHANNEL_TYPE_IO) && !schib->pmcw.dnv)
drivers/s390/cio/css.c
470
if ((schib->pmcw.st == SUBCHANNEL_TYPE_MSG) && !schib->pmcw.w)
drivers/s390/cio/css.c
715
if (sch->st == SUBCHANNEL_TYPE_IO &&
drivers/s390/cio/css.c
727
if (sch->st == SUBCHANNEL_TYPE_IO && sch->config.ena)
drivers/s390/cio/device.c
1323
if (sch->st != SUBCHANNEL_TYPE_IO || !sch->schib.pmcw.dnv)
drivers/s390/cio/trace.h
53
__entry->pmcw_st = schib->pmcw.st;
drivers/s390/net/fsm.c
127
int st = atomic_read(&fi->state);
drivers/s390/net/fsm.c
128
if (st >= fi->f->nr_states)
drivers/s390/net/fsm.c
130
return fi->f->state_names[st];
drivers/scsi/aha1740.h
121
st:1, /* Suppress Transfer */
drivers/scsi/arm/fas216.c
1391
#define STATE(st,ph) ((ph) << 3 | (st))
drivers/scsi/bfa/bfa_cs.h
187
#define bfa_sm_state_decl(oc, st, otype, etype) \
drivers/scsi/bfa/bfa_cs.h
188
static void oc ## _sm_ ## st(otype * fsm, etype event)
drivers/scsi/bfa/bfa_cs.h
216
#define bfa_fsm_state_decl(oc, st, otype, etype) \
drivers/scsi/bfa/bfa_cs.h
217
static void oc ## _sm_ ## st(otype * fsm, etype event); \
drivers/scsi/bfa/bfa_cs.h
218
static void oc ## _sm_ ## st ## _entry(otype * fsm)
drivers/scsi/device_handler/scsi_dh_emc.c
429
unsigned int hr = 0, st = 0, argc;
drivers/scsi/device_handler/scsi_dh_emc.c
438
if ((sscanf(p, "%u", &st) != 1) || (st > 1))
drivers/scsi/device_handler/scsi_dh_emc.c
446
if (st)
drivers/scsi/libfc/fc_exch.c
2363
struct fc_host_statistics *st;
drivers/scsi/libfc/fc_exch.c
2367
st = &lport->host_stats;
drivers/scsi/libfc/fc_exch.c
2371
st->fc_no_free_exch += atomic_read(&mp->stats.no_free_exch);
drivers/scsi/libfc/fc_exch.c
2372
st->fc_no_free_exch_xid +=
drivers/scsi/libfc/fc_exch.c
2374
st->fc_xid_not_found += atomic_read(&mp->stats.xid_not_found);
drivers/scsi/libfc/fc_exch.c
2375
st->fc_xid_busy += atomic_read(&mp->stats.xid_busy);
drivers/scsi/libfc/fc_exch.c
2376
st->fc_seq_not_found += atomic_read(&mp->stats.seq_not_found);
drivers/scsi/libfc/fc_exch.c
2377
st->fc_non_bls_resp += atomic_read(&mp->stats.non_bls_resp);
drivers/scsi/mpt3sas/mpt3sas_base.c
1567
struct scsiio_tracker *st;
drivers/scsi/mpt3sas/mpt3sas_base.c
1570
st = _get_st_from_smid(ioc, smid);
drivers/scsi/mpt3sas/mpt3sas_base.c
1571
if (st)
drivers/scsi/mpt3sas/mpt3sas_base.c
1572
cb_idx = st->cb_idx;
drivers/scsi/mpt3sas/mpt3sas_base.c
2156
struct scsiio_tracker *st = scsi_cmd_priv(scmd);
drivers/scsi/mpt3sas/mpt3sas_base.c
2157
u16 smid = st->smid;
drivers/scsi/mpt3sas/mpt3sas_base.c
4036
struct scsiio_tracker *st)
drivers/scsi/mpt3sas/mpt3sas_base.c
4038
if (WARN_ON(st->smid == 0))
drivers/scsi/mpt3sas/mpt3sas_base.c
4040
st->cb_idx = 0xFF;
drivers/scsi/mpt3sas/mpt3sas_base.c
4041
st->direct_io = 0;
drivers/scsi/mpt3sas/mpt3sas_base.c
4042
st->scmd = NULL;
drivers/scsi/mpt3sas/mpt3sas_base.c
4043
atomic_set(&ioc->chain_lookup[st->smid - 1].chain_offset, 0);
drivers/scsi/mpt3sas/mpt3sas_base.c
4044
st->smid = 0;
drivers/scsi/mpt3sas/mpt3sas_base.c
4059
struct scsiio_tracker *st;
drivers/scsi/mpt3sas/mpt3sas_base.c
4062
st = _get_st_from_smid(ioc, smid);
drivers/scsi/mpt3sas/mpt3sas_base.c
4063
if (!st) {
drivers/scsi/mpt3sas/mpt3sas_base.c
4072
mpt3sas_base_clear_st(ioc, st);
drivers/scsi/mpt3sas/mpt3sas_base.c
4153
struct scsiio_tracker *st = NULL;
drivers/scsi/mpt3sas/mpt3sas_base.c
4156
st = _get_st_from_smid(ioc, smid);
drivers/scsi/mpt3sas/mpt3sas_base.c
4158
if (st == NULL)
drivers/scsi/mpt3sas/mpt3sas_base.c
4161
st->msix_io = ioc->get_msix_index_for_smlio(ioc, st->scmd);
drivers/scsi/mpt3sas/mpt3sas_base.c
4162
return st->msix_io;
drivers/scsi/mpt3sas/mpt3sas_base.h
1729
struct scsiio_tracker *st);
drivers/scsi/mpt3sas/mpt3sas_ctl.c
605
struct scsiio_tracker *st;
drivers/scsi/mpt3sas/mpt3sas_ctl.c
618
st = scsi_cmd_priv(scmd);
drivers/scsi/mpt3sas/mpt3sas_ctl.c
625
task_mid = cpu_to_le16(st->smid);
drivers/scsi/mpt3sas/mpt3sas_scsih.c
10003
st->smid, st->msix_io, 30, 0);
drivers/scsi/mpt3sas/mpt3sas_scsih.c
10004
if (r == FAILED || st->cb_idx != 0xFF) {
drivers/scsi/mpt3sas/mpt3sas_scsih.c
1815
struct scsiio_tracker *st;
drivers/scsi/mpt3sas/mpt3sas_scsih.c
1837
st = scsi_cmd_priv(scmd);
drivers/scsi/mpt3sas/mpt3sas_scsih.c
1838
if (st->cb_idx == 0xFF || st->smid == 0)
drivers/scsi/mpt3sas/mpt3sas_scsih.c
3373
struct scsiio_tracker *st = scsi_cmd_priv(scmd);
drivers/scsi/mpt3sas/mpt3sas_scsih.c
3397
if (st == NULL || st->cb_idx == 0xFF) {
drivers/scsi/mpt3sas/mpt3sas_scsih.c
3424
st->smid, st->msix_io, timeout, 0);
drivers/scsi/mpt3sas/mpt3sas_scsih.c
3426
if (r == SUCCESS && st->cb_idx != 0xFF)
drivers/scsi/mpt3sas/mpt3sas_scsih.c
5327
struct scsiio_tracker *st;
drivers/scsi/mpt3sas/mpt3sas_scsih.c
5337
st = scsi_cmd_priv(scmd);
drivers/scsi/mpt3sas/mpt3sas_scsih.c
5338
mpt3sas_base_clear_st(ioc, st);
drivers/scsi/mpt3sas/mpt3sas_scsih.c
6022
struct scsiio_tracker *st;
drivers/scsi/mpt3sas/mpt3sas_scsih.c
6058
st = scsi_cmd_priv(scmd);
drivers/scsi/mpt3sas/mpt3sas_scsih.c
6059
if (st->direct_io &&
drivers/scsi/mpt3sas/mpt3sas_scsih.c
6062
st->direct_io = 0;
drivers/scsi/mpt3sas/mpt3sas_scsih.c
6063
st->scmd = scmd;
drivers/scsi/mpt3sas/mpt3sas_scsih.c
9891
struct scsiio_tracker *st;
drivers/scsi/mpt3sas/mpt3sas_scsih.c
9934
st = scsi_cmd_priv(scmd);
drivers/scsi/mpt3sas/mpt3sas_scsih.c
9961
MPI2_SCSITASKMGMT_TASKTYPE_QUERY_TASK, st->smid,
drivers/scsi/mpt3sas/mpt3sas_scsih.c
9962
st->msix_io, 30, 0);
drivers/scsi/mpt3sas/mpt3sas_warpdrive.c
261
struct scsiio_tracker *st = scsi_cmd_priv(scmd);
drivers/scsi/mpt3sas/mpt3sas_warpdrive.c
297
st->direct_io = 1;
drivers/scsi/mvumi.c
44
static void tag_init(struct mvumi_tag *st, unsigned short size)
drivers/scsi/mvumi.c
47
BUG_ON(size != st->size);
drivers/scsi/mvumi.c
48
st->top = size;
drivers/scsi/mvumi.c
50
st->stack[i] = size - 1 - i;
drivers/scsi/mvumi.c
53
static unsigned short tag_get_one(struct mvumi_hba *mhba, struct mvumi_tag *st)
drivers/scsi/mvumi.c
55
BUG_ON(st->top <= 0);
drivers/scsi/mvumi.c
56
return st->stack[--st->top];
drivers/scsi/mvumi.c
59
static void tag_release_one(struct mvumi_hba *mhba, struct mvumi_tag *st,
drivers/scsi/mvumi.c
62
BUG_ON(st->top >= st->size);
drivers/scsi/mvumi.c
63
st->stack[st->top++] = tag;
drivers/scsi/mvumi.c
66
static bool tag_is_empty(struct mvumi_tag *st)
drivers/scsi/mvumi.c
68
if (st->top == 0)
drivers/scsi/qla2xxx/qla_init.c
5165
char *st, *en;
drivers/scsi/qla2xxx/qla_init.c
5176
st = en = ha->model_number;
drivers/scsi/qla2xxx/qla_init.c
5178
while (en > st) {
drivers/scsi/snic/snic_disc.h
92
#define starget_to_tgt(st) \
drivers/scsi/snic/snic_disc.h
93
(is_snic_target(((struct scsi_target *) st)->dev.parent) ? \
drivers/scsi/snic/snic_disc.h
94
dev_to_tgt(st->dev.parent) : NULL)
drivers/scsi/snic/snic_scsi.c
957
struct snic_stats *st = &snic->s_stats;
drivers/scsi/snic/snic_scsi.c
964
act_ios = atomic64_read(&st->io.active);
drivers/scsi/snic/snic_scsi.c
965
atomic64_add(act_ios, &st->io.compl);
drivers/scsi/snic/snic_scsi.c
966
atomic64_sub(act_ios, &st->io.active);
drivers/scsi/snic/snic_scsi.c
968
act_fwreqs = atomic64_read(&st->fw.actv_reqs);
drivers/scsi/snic/snic_scsi.c
969
atomic64_sub(act_fwreqs, &st->fw.actv_reqs);
drivers/soc/qcom/rpmh-rsc.c
1017
if (st + tcs->num_tcs > max_tcs ||
drivers/soc/qcom/rpmh-rsc.c
1018
st + tcs->num_tcs >= BITS_PER_BYTE * sizeof(tcs->mask))
drivers/soc/qcom/rpmh-rsc.c
1021
tcs->mask = ((1 << tcs->num_tcs) - 1) << st;
drivers/soc/qcom/rpmh-rsc.c
1022
tcs->offset = st;
drivers/soc/qcom/rpmh-rsc.c
1023
st += tcs->num_tcs;
drivers/soc/qcom/rpmh-rsc.c
1026
drv->num_tcs = st;
drivers/soc/qcom/rpmh-rsc.c
968
int i, ret, n, st = 0;
drivers/spi/spi-axi-spi-engine.c
518
struct spi_engine_message_state *st = msg->state;
drivers/spi/spi-axi-spi-engine.c
519
struct spi_transfer *xfer = st->tx_xfer;
drivers/spi/spi-axi-spi-engine.c
525
st->tx_xfer = xfer;
drivers/spi/spi-axi-spi-engine.c
527
st->tx_length = xfer->len;
drivers/spi/spi-axi-spi-engine.c
528
st->tx_buf = xfer->tx_buf;
drivers/spi/spi-axi-spi-engine.c
530
st->tx_buf = NULL;
drivers/spi/spi-axi-spi-engine.c
536
struct spi_engine_message_state *st = msg->state;
drivers/spi/spi-axi-spi-engine.c
537
struct spi_transfer *xfer = st->rx_xfer;
drivers/spi/spi-axi-spi-engine.c
543
st->rx_xfer = xfer;
drivers/spi/spi-axi-spi-engine.c
545
st->rx_length = xfer->len;
drivers/spi/spi-axi-spi-engine.c
546
st->rx_buf = xfer->rx_buf;
drivers/spi/spi-axi-spi-engine.c
548
st->rx_buf = NULL;
drivers/spi/spi-axi-spi-engine.c
556
struct spi_engine_message_state *st = msg->state;
drivers/spi/spi-axi-spi-engine.c
561
while (n && st->cmd_length) {
drivers/spi/spi-axi-spi-engine.c
562
m = min(n, st->cmd_length);
drivers/spi/spi-axi-spi-engine.c
563
buf = st->cmd_buf;
drivers/spi/spi-axi-spi-engine.c
566
st->cmd_buf += m;
drivers/spi/spi-axi-spi-engine.c
567
st->cmd_length -= m;
drivers/spi/spi-axi-spi-engine.c
571
return st->cmd_length != 0;
drivers/spi/spi-axi-spi-engine.c
578
struct spi_engine_message_state *st = msg->state;
drivers/spi/spi-axi-spi-engine.c
582
while (n && st->tx_length) {
drivers/spi/spi-axi-spi-engine.c
583
if (st->tx_xfer->bits_per_word <= 8) {
drivers/spi/spi-axi-spi-engine.c
584
const u8 *buf = st->tx_buf;
drivers/spi/spi-axi-spi-engine.c
586
m = min(n, st->tx_length);
drivers/spi/spi-axi-spi-engine.c
589
st->tx_buf += m;
drivers/spi/spi-axi-spi-engine.c
590
st->tx_length -= m;
drivers/spi/spi-axi-spi-engine.c
591
} else if (st->tx_xfer->bits_per_word <= 16) {
drivers/spi/spi-axi-spi-engine.c
592
const u16 *buf = (const u16 *)st->tx_buf;
drivers/spi/spi-axi-spi-engine.c
594
m = min(n, st->tx_length / 2);
drivers/spi/spi-axi-spi-engine.c
597
st->tx_buf += m * 2;
drivers/spi/spi-axi-spi-engine.c
598
st->tx_length -= m * 2;
drivers/spi/spi-axi-spi-engine.c
600
const u32 *buf = (const u32 *)st->tx_buf;
drivers/spi/spi-axi-spi-engine.c
602
m = min(n, st->tx_length / 4);
drivers/spi/spi-axi-spi-engine.c
605
st->tx_buf += m * 4;
drivers/spi/spi-axi-spi-engine.c
606
st->tx_length -= m * 4;
drivers/spi/spi-axi-spi-engine.c
609
if (st->tx_length == 0)
drivers/spi/spi-axi-spi-engine.c
613
return st->tx_length != 0;
drivers/spi/spi-axi-spi-engine.c
620
struct spi_engine_message_state *st = msg->state;
drivers/spi/spi-axi-spi-engine.c
624
while (n && st->rx_length) {
drivers/spi/spi-axi-spi-engine.c
625
if (st->rx_xfer->bits_per_word <= 8) {
drivers/spi/spi-axi-spi-engine.c
626
u8 *buf = st->rx_buf;
drivers/spi/spi-axi-spi-engine.c
628
m = min(n, st->rx_length);
drivers/spi/spi-axi-spi-engine.c
631
st->rx_buf += m;
drivers/spi/spi-axi-spi-engine.c
632
st->rx_length -= m;
drivers/spi/spi-axi-spi-engine.c
633
} else if (st->rx_xfer->bits_per_word <= 16) {
drivers/spi/spi-axi-spi-engine.c
634
u16 *buf = (u16 *)st->rx_buf;
drivers/spi/spi-axi-spi-engine.c
636
m = min(n, st->rx_length / 2);
drivers/spi/spi-axi-spi-engine.c
639
st->rx_buf += m * 2;
drivers/spi/spi-axi-spi-engine.c
640
st->rx_length -= m * 2;
drivers/spi/spi-axi-spi-engine.c
642
u32 *buf = (u32 *)st->rx_buf;
drivers/spi/spi-axi-spi-engine.c
644
m = min(n, st->rx_length / 4);
drivers/spi/spi-axi-spi-engine.c
647
st->rx_buf += m * 4;
drivers/spi/spi-axi-spi-engine.c
648
st->rx_length -= m * 4;
drivers/spi/spi-axi-spi-engine.c
651
if (st->rx_length == 0)
drivers/spi/spi-axi-spi-engine.c
655
return st->rx_length != 0;
drivers/spi/spi-axi-spi-engine.c
933
struct spi_engine_message_state *st = &spi_engine->msg_state;
drivers/spi/spi-axi-spi-engine.c
945
memset(st, 0, sizeof(*st));
drivers/spi/spi-axi-spi-engine.c
946
st->cmd_buf = p->instructions;
drivers/spi/spi-axi-spi-engine.c
947
st->cmd_length = p->length;
drivers/spi/spi-axi-spi-engine.c
948
msg->state = st;
drivers/spi/spi-axi-spi-engine.c
969
if (st->rx_length != 0)
drivers/spi/spi-offload-trigger-pwm.c
100
ret = pwm_set_waveform_might_sleep(st->pwm, &wf, false);
drivers/spi/spi-offload-trigger-pwm.c
102
dev_err(st->dev, "failed to disable PWM: %d\n", ret);
drivers/spi/spi-offload-trigger-pwm.c
124
struct spi_offload_trigger_pwm_state *st;
drivers/spi/spi-offload-trigger-pwm.c
128
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
drivers/spi/spi-offload-trigger-pwm.c
129
if (!st)
drivers/spi/spi-offload-trigger-pwm.c
132
info.priv = st;
drivers/spi/spi-offload-trigger-pwm.c
133
st->dev = dev;
drivers/spi/spi-offload-trigger-pwm.c
135
st->pwm = devm_pwm_get(dev, NULL);
drivers/spi/spi-offload-trigger-pwm.c
136
if (IS_ERR(st->pwm))
drivers/spi/spi-offload-trigger-pwm.c
137
return dev_err_probe(dev, PTR_ERR(st->pwm), "failed to get PWM\n");
drivers/spi/spi-offload-trigger-pwm.c
140
pwm_init_state(st->pwm, &state);
drivers/spi/spi-offload-trigger-pwm.c
143
ret = pwm_apply_might_sleep(st->pwm, &state);
drivers/spi/spi-offload-trigger-pwm.c
147
ret = devm_add_action_or_reset(dev, spi_offload_trigger_pwm_release, st->pwm);
drivers/spi/spi-offload-trigger-pwm.c
39
struct spi_offload_trigger_pwm_state *st = spi_offload_trigger_get_priv(trigger);
drivers/spi/spi-offload-trigger-pwm.c
55
ret = pwm_round_waveform_might_sleep(st->pwm, &wf);
drivers/spi/spi-offload-trigger-pwm.c
68
struct spi_offload_trigger_pwm_state *st = spi_offload_trigger_get_priv(trigger);
drivers/spi/spi-offload-trigger-pwm.c
83
return pwm_set_waveform_might_sleep(st->pwm, &wf, false);
drivers/spi/spi-offload-trigger-pwm.c
88
struct spi_offload_trigger_pwm_state *st = spi_offload_trigger_get_priv(trigger);
drivers/spi/spi-offload-trigger-pwm.c
92
ret = pwm_get_waveform_might_sleep(st->pwm, &wf);
drivers/spi/spi-offload-trigger-pwm.c
94
dev_err(st->dev, "failed to get waveform: %d\n", ret);
drivers/spi/spi-tle62x0.c
101
unsigned char *buff = st->rx_buff;
drivers/spi/spi-tle62x0.c
106
mutex_lock(&st->lock);
drivers/spi/spi-tle62x0.c
107
ret = tle62x0_read(st);
drivers/spi/spi-tle62x0.c
110
mutex_unlock(&st->lock);
drivers/spi/spi-tle62x0.c
114
for (ptr = 0; ptr < (st->nr_gpio * 2)/8; ptr += 1) {
drivers/spi/spi-tle62x0.c
121
for (ptr = 0; ptr < st->nr_gpio; ptr++) {
drivers/spi/spi-tle62x0.c
127
mutex_unlock(&st->lock);
drivers/spi/spi-tle62x0.c
136
struct tle62x0_state *st = dev_get_drvdata(dev);
drivers/spi/spi-tle62x0.c
140
mutex_lock(&st->lock);
drivers/spi/spi-tle62x0.c
141
value = (st->gpio_state >> gpio_num) & 1;
drivers/spi/spi-tle62x0.c
142
mutex_unlock(&st->lock);
drivers/spi/spi-tle62x0.c
151
struct tle62x0_state *st = dev_get_drvdata(dev);
drivers/spi/spi-tle62x0.c
162
mutex_lock(&st->lock);
drivers/spi/spi-tle62x0.c
165
st->gpio_state |= 1 << gpio_num;
drivers/spi/spi-tle62x0.c
167
st->gpio_state &= ~(1 << gpio_num);
drivers/spi/spi-tle62x0.c
169
tle62x0_write(st);
drivers/spi/spi-tle62x0.c
170
mutex_unlock(&st->lock);
drivers/spi/spi-tle62x0.c
241
struct tle62x0_state *st;
drivers/spi/spi-tle62x0.c
252
st = kzalloc_obj(struct tle62x0_state);
drivers/spi/spi-tle62x0.c
253
if (st == NULL)
drivers/spi/spi-tle62x0.c
256
st->us = spi;
drivers/spi/spi-tle62x0.c
257
st->nr_gpio = pdata->gpio_count;
drivers/spi/spi-tle62x0.c
258
st->gpio_state = pdata->init_state;
drivers/spi/spi-tle62x0.c
260
mutex_init(&st->lock);
drivers/spi/spi-tle62x0.c
277
spi_set_drvdata(spi, st);
drivers/spi/spi-tle62x0.c
287
kfree(st);
drivers/spi/spi-tle62x0.c
293
struct tle62x0_state *st = spi_get_drvdata(spi);
drivers/spi/spi-tle62x0.c
296
for (ptr = 0; ptr < st->nr_gpio; ptr++)
drivers/spi/spi-tle62x0.c
300
kfree(st);
drivers/spi/spi-tle62x0.c
38
static inline int tle62x0_write(struct tle62x0_state *st)
drivers/spi/spi-tle62x0.c
40
unsigned char *buff = st->tx_buff;
drivers/spi/spi-tle62x0.c
41
unsigned int gpio_state = st->gpio_state;
drivers/spi/spi-tle62x0.c
45
if (st->nr_gpio == 16) {
drivers/spi/spi-tle62x0.c
52
dev_dbg(&st->us->dev, "buff %3ph\n", buff);
drivers/spi/spi-tle62x0.c
54
return spi_write(st->us, buff, (st->nr_gpio == 16) ? 3 : 2);
drivers/spi/spi-tle62x0.c
57
static inline int tle62x0_read(struct tle62x0_state *st)
drivers/spi/spi-tle62x0.c
59
unsigned char *txbuff = st->tx_buff;
drivers/spi/spi-tle62x0.c
62
.rx_buf = st->rx_buff,
drivers/spi/spi-tle62x0.c
63
.len = (st->nr_gpio * 2) / 8,
drivers/spi/spi-tle62x0.c
75
return spi_sync(st->us, &msg);
drivers/spi/spi-tle62x0.c
99
struct tle62x0_state *st = dev_get_drvdata(dev);
drivers/staging/iio/accel/adis16203.c
150
struct adis *st = iio_priv(indio_dev);
drivers/staging/iio/accel/adis16203.c
154
return adis_write_reg_16(st, addr, val & 0x3FFF);
drivers/staging/iio/accel/adis16203.c
162
struct adis *st = iio_priv(indio_dev);
drivers/staging/iio/accel/adis16203.c
198
ret = adis_read_reg_16(st, addr, &val16);
drivers/staging/iio/accel/adis16203.c
263
struct adis *st;
drivers/staging/iio/accel/adis16203.c
266
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/staging/iio/accel/adis16203.c
269
st = iio_priv(indio_dev);
drivers/staging/iio/accel/adis16203.c
279
ret = adis_init(st, indio_dev, spi, &adis16203_data);
drivers/staging/iio/accel/adis16203.c
283
ret = devm_adis_setup_buffer_and_trigger(st, indio_dev, NULL);
drivers/staging/iio/accel/adis16203.c
288
ret = __adis_initial_startup(st);
drivers/staging/iio/frequency/ad9832.c
125
static int ad9832_write_frequency(struct ad9832_state *st,
drivers/staging/iio/frequency/ad9832.c
133
clk_freq = clk_get_rate(st->mclk);
drivers/staging/iio/frequency/ad9832.c
144
st->freq_data[i] = cpu_to_be16(FIELD_PREP(AD9832_CMD_MSK, freq_cmd) |
drivers/staging/iio/frequency/ad9832.c
149
return spi_sync(st->spi, &st->freq_msg);
drivers/staging/iio/frequency/ad9832.c
152
static int ad9832_write_phase(struct ad9832_state *st,
drivers/staging/iio/frequency/ad9832.c
166
st->phase_data[i] = cpu_to_be16(FIELD_PREP(AD9832_CMD_MSK, phase_cmd) |
drivers/staging/iio/frequency/ad9832.c
171
return spi_sync(st->spi, &st->phase_msg);
drivers/staging/iio/frequency/ad9832.c
178
struct ad9832_state *st = iio_priv(indio_dev);
drivers/staging/iio/frequency/ad9832.c
187
mutex_lock(&st->lock);
drivers/staging/iio/frequency/ad9832.c
191
ret = ad9832_write_frequency(st, this_attr->address, val);
drivers/staging/iio/frequency/ad9832.c
197
ret = ad9832_write_phase(st, this_attr->address, val);
drivers/staging/iio/frequency/ad9832.c
200
st->ctrl_ss &= ~AD9832_SELSRC;
drivers/staging/iio/frequency/ad9832.c
201
st->ctrl_ss |= FIELD_PREP(AD9832_SELSRC, val ? 0 : 1);
drivers/staging/iio/frequency/ad9832.c
203
st->data = cpu_to_be16(FIELD_PREP(AD9832_CMD_MSK, AD9832_CMD_SYNCSELSRC) |
drivers/staging/iio/frequency/ad9832.c
204
st->ctrl_ss);
drivers/staging/iio/frequency/ad9832.c
205
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9832.c
209
st->ctrl_fp &= ~AD9832_FREQ;
drivers/staging/iio/frequency/ad9832.c
210
st->ctrl_fp |= FIELD_PREP(AD9832_FREQ, val ? 1 : 0);
drivers/staging/iio/frequency/ad9832.c
215
st->data = cpu_to_be16(FIELD_PREP(AD9832_CMD_MSK, AD9832_CMD_FPSELECT) |
drivers/staging/iio/frequency/ad9832.c
216
st->ctrl_fp);
drivers/staging/iio/frequency/ad9832.c
217
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9832.c
225
st->ctrl_fp &= ~AD9832_PHASE_MASK;
drivers/staging/iio/frequency/ad9832.c
226
st->ctrl_fp |= FIELD_PREP(AD9832_PHASE_MASK, val);
drivers/staging/iio/frequency/ad9832.c
228
st->data = cpu_to_be16(FIELD_PREP(AD9832_CMD_MSK, AD9832_CMD_FPSELECT) |
drivers/staging/iio/frequency/ad9832.c
229
st->ctrl_fp);
drivers/staging/iio/frequency/ad9832.c
230
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9832.c
234
st->ctrl_src &= ~(AD9832_RESET | AD9832_SLEEP | AD9832_CLR);
drivers/staging/iio/frequency/ad9832.c
236
st->ctrl_src |= FIELD_PREP(AD9832_RESET, 1);
drivers/staging/iio/frequency/ad9832.c
238
st->data = cpu_to_be16(FIELD_PREP(AD9832_CMD_MSK, AD9832_CMD_SLEEPRESCLR) |
drivers/staging/iio/frequency/ad9832.c
239
st->ctrl_src);
drivers/staging/iio/frequency/ad9832.c
240
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9832.c
245
mutex_unlock(&st->lock);
drivers/staging/iio/frequency/ad9832.c
300
struct ad9832_state *st;
drivers/staging/iio/frequency/ad9832.c
303
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/staging/iio/frequency/ad9832.c
307
st = iio_priv(indio_dev);
drivers/staging/iio/frequency/ad9832.c
317
st->mclk = devm_clk_get_enabled(&spi->dev, "mclk");
drivers/staging/iio/frequency/ad9832.c
318
if (IS_ERR(st->mclk))
drivers/staging/iio/frequency/ad9832.c
319
return PTR_ERR(st->mclk);
drivers/staging/iio/frequency/ad9832.c
321
st->spi = spi;
drivers/staging/iio/frequency/ad9832.c
322
mutex_init(&st->lock);
drivers/staging/iio/frequency/ad9832.c
329
st->xfer.tx_buf = &st->data;
drivers/staging/iio/frequency/ad9832.c
330
st->xfer.len = 2;
drivers/staging/iio/frequency/ad9832.c
332
spi_message_init(&st->msg);
drivers/staging/iio/frequency/ad9832.c
333
spi_message_add_tail(&st->xfer, &st->msg);
drivers/staging/iio/frequency/ad9832.c
335
st->freq_xfer[0].tx_buf = &st->freq_data[0];
drivers/staging/iio/frequency/ad9832.c
336
st->freq_xfer[0].len = 2;
drivers/staging/iio/frequency/ad9832.c
337
st->freq_xfer[0].cs_change = 1;
drivers/staging/iio/frequency/ad9832.c
338
st->freq_xfer[1].tx_buf = &st->freq_data[1];
drivers/staging/iio/frequency/ad9832.c
339
st->freq_xfer[1].len = 2;
drivers/staging/iio/frequency/ad9832.c
340
st->freq_xfer[1].cs_change = 1;
drivers/staging/iio/frequency/ad9832.c
341
st->freq_xfer[2].tx_buf = &st->freq_data[2];
drivers/staging/iio/frequency/ad9832.c
342
st->freq_xfer[2].len = 2;
drivers/staging/iio/frequency/ad9832.c
343
st->freq_xfer[2].cs_change = 1;
drivers/staging/iio/frequency/ad9832.c
344
st->freq_xfer[3].tx_buf = &st->freq_data[3];
drivers/staging/iio/frequency/ad9832.c
345
st->freq_xfer[3].len = 2;
drivers/staging/iio/frequency/ad9832.c
347
spi_message_init(&st->freq_msg);
drivers/staging/iio/frequency/ad9832.c
348
spi_message_add_tail(&st->freq_xfer[0], &st->freq_msg);
drivers/staging/iio/frequency/ad9832.c
349
spi_message_add_tail(&st->freq_xfer[1], &st->freq_msg);
drivers/staging/iio/frequency/ad9832.c
350
spi_message_add_tail(&st->freq_xfer[2], &st->freq_msg);
drivers/staging/iio/frequency/ad9832.c
351
spi_message_add_tail(&st->freq_xfer[3], &st->freq_msg);
drivers/staging/iio/frequency/ad9832.c
353
st->phase_xfer[0].tx_buf = &st->phase_data[0];
drivers/staging/iio/frequency/ad9832.c
354
st->phase_xfer[0].len = 2;
drivers/staging/iio/frequency/ad9832.c
355
st->phase_xfer[0].cs_change = 1;
drivers/staging/iio/frequency/ad9832.c
356
st->phase_xfer[1].tx_buf = &st->phase_data[1];
drivers/staging/iio/frequency/ad9832.c
357
st->phase_xfer[1].len = 2;
drivers/staging/iio/frequency/ad9832.c
359
spi_message_init(&st->phase_msg);
drivers/staging/iio/frequency/ad9832.c
360
spi_message_add_tail(&st->phase_xfer[0], &st->phase_msg);
drivers/staging/iio/frequency/ad9832.c
361
spi_message_add_tail(&st->phase_xfer[1], &st->phase_msg);
drivers/staging/iio/frequency/ad9832.c
363
st->ctrl_src = AD9832_SLEEP | AD9832_RESET | AD9832_CLR;
drivers/staging/iio/frequency/ad9832.c
364
st->data = cpu_to_be16(FIELD_PREP(AD9832_CMD_MSK, AD9832_CMD_SLEEPRESCLR) |
drivers/staging/iio/frequency/ad9832.c
365
st->ctrl_src);
drivers/staging/iio/frequency/ad9832.c
366
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9834.c
110
static int ad9834_write_frequency(struct ad9834_state *st,
drivers/staging/iio/frequency/ad9834.c
116
clk_freq = clk_get_rate(st->mclk);
drivers/staging/iio/frequency/ad9834.c
123
st->freq_data[0] = cpu_to_be16(addr | (regval &
drivers/staging/iio/frequency/ad9834.c
125
st->freq_data[1] = cpu_to_be16(addr | ((regval >>
drivers/staging/iio/frequency/ad9834.c
129
return spi_sync(st->spi, &st->freq_msg);
drivers/staging/iio/frequency/ad9834.c
132
static int ad9834_write_phase(struct ad9834_state *st,
drivers/staging/iio/frequency/ad9834.c
137
st->data = cpu_to_be16(addr | phase);
drivers/staging/iio/frequency/ad9834.c
139
return spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9834.c
148
struct ad9834_state *st = iio_priv(indio_dev);
drivers/staging/iio/frequency/ad9834.c
157
mutex_lock(&st->lock);
drivers/staging/iio/frequency/ad9834.c
161
ret = ad9834_write_frequency(st, this_attr->address, val);
drivers/staging/iio/frequency/ad9834.c
165
ret = ad9834_write_phase(st, this_attr->address, val);
drivers/staging/iio/frequency/ad9834.c
168
if (st->control & AD9834_MODE) {
drivers/staging/iio/frequency/ad9834.c
174
st->control |= AD9834_OPBITEN;
drivers/staging/iio/frequency/ad9834.c
176
st->control &= ~AD9834_OPBITEN;
drivers/staging/iio/frequency/ad9834.c
178
st->data = cpu_to_be16(AD9834_REG_CMD | st->control);
drivers/staging/iio/frequency/ad9834.c
179
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9834.c
183
st->control |= AD9834_PIN_SW;
drivers/staging/iio/frequency/ad9834.c
185
st->control &= ~AD9834_PIN_SW;
drivers/staging/iio/frequency/ad9834.c
186
st->data = cpu_to_be16(AD9834_REG_CMD | st->control);
drivers/staging/iio/frequency/ad9834.c
187
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9834.c
192
st->control &= ~(this_attr->address | AD9834_PIN_SW);
drivers/staging/iio/frequency/ad9834.c
194
st->control |= this_attr->address;
drivers/staging/iio/frequency/ad9834.c
195
st->control &= ~AD9834_PIN_SW;
drivers/staging/iio/frequency/ad9834.c
200
st->data = cpu_to_be16(AD9834_REG_CMD | st->control);
drivers/staging/iio/frequency/ad9834.c
201
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9834.c
205
st->control &= ~AD9834_RESET;
drivers/staging/iio/frequency/ad9834.c
207
st->control |= AD9834_RESET;
drivers/staging/iio/frequency/ad9834.c
209
st->data = cpu_to_be16(AD9834_REG_CMD | st->control);
drivers/staging/iio/frequency/ad9834.c
210
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9834.c
215
mutex_unlock(&st->lock);
drivers/staging/iio/frequency/ad9834.c
226
struct ad9834_state *st = iio_priv(indio_dev);
drivers/staging/iio/frequency/ad9834.c
229
bool is_ad9833_7 = (st->devid == ID_AD9833) || (st->devid == ID_AD9837);
drivers/staging/iio/frequency/ad9834.c
231
mutex_lock(&st->lock);
drivers/staging/iio/frequency/ad9834.c
236
st->control &= ~AD9834_MODE;
drivers/staging/iio/frequency/ad9834.c
238
st->control &= ~AD9834_OPBITEN;
drivers/staging/iio/frequency/ad9834.c
241
st->control &= ~AD9834_OPBITEN;
drivers/staging/iio/frequency/ad9834.c
242
st->control |= AD9834_MODE;
drivers/staging/iio/frequency/ad9834.c
243
} else if (st->control & AD9834_OPBITEN) {
drivers/staging/iio/frequency/ad9834.c
246
st->control |= AD9834_MODE;
drivers/staging/iio/frequency/ad9834.c
249
st->control &= ~AD9834_MODE;
drivers/staging/iio/frequency/ad9834.c
250
st->control |= AD9834_OPBITEN;
drivers/staging/iio/frequency/ad9834.c
258
!(st->control & AD9834_MODE)) {
drivers/staging/iio/frequency/ad9834.c
259
st->control &= ~AD9834_MODE;
drivers/staging/iio/frequency/ad9834.c
260
st->control |= AD9834_OPBITEN;
drivers/staging/iio/frequency/ad9834.c
271
st->data = cpu_to_be16(AD9834_REG_CMD | st->control);
drivers/staging/iio/frequency/ad9834.c
272
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9834.c
274
mutex_unlock(&st->lock);
drivers/staging/iio/frequency/ad9834.c
285
struct ad9834_state *st = iio_priv(indio_dev);
drivers/staging/iio/frequency/ad9834.c
287
if (st->devid == ID_AD9833 || st->devid == ID_AD9837)
drivers/staging/iio/frequency/ad9834.c
289
if (st->control & AD9834_OPBITEN)
drivers/staging/iio/frequency/ad9834.c
303
struct ad9834_state *st = iio_priv(indio_dev);
drivers/staging/iio/frequency/ad9834.c
305
if (st->control & AD9834_MODE)
drivers/staging/iio/frequency/ad9834.c
385
struct ad9834_state *st;
drivers/staging/iio/frequency/ad9834.c
393
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
drivers/staging/iio/frequency/ad9834.c
396
st = iio_priv(indio_dev);
drivers/staging/iio/frequency/ad9834.c
397
mutex_init(&st->lock);
drivers/staging/iio/frequency/ad9834.c
398
st->mclk = devm_clk_get_enabled(&spi->dev, NULL);
drivers/staging/iio/frequency/ad9834.c
399
if (IS_ERR(st->mclk))
drivers/staging/iio/frequency/ad9834.c
400
return dev_err_probe(&spi->dev, PTR_ERR(st->mclk),
drivers/staging/iio/frequency/ad9834.c
403
st->spi = spi;
drivers/staging/iio/frequency/ad9834.c
404
st->devid = spi_get_device_id(spi)->driver_data;
drivers/staging/iio/frequency/ad9834.c
406
switch (st->devid) {
drivers/staging/iio/frequency/ad9834.c
419
st->xfer.tx_buf = &st->data;
drivers/staging/iio/frequency/ad9834.c
420
st->xfer.len = 2;
drivers/staging/iio/frequency/ad9834.c
422
spi_message_init(&st->msg);
drivers/staging/iio/frequency/ad9834.c
423
spi_message_add_tail(&st->xfer, &st->msg);
drivers/staging/iio/frequency/ad9834.c
425
st->freq_xfer[0].tx_buf = &st->freq_data[0];
drivers/staging/iio/frequency/ad9834.c
426
st->freq_xfer[0].len = 2;
drivers/staging/iio/frequency/ad9834.c
427
st->freq_xfer[0].cs_change = 1;
drivers/staging/iio/frequency/ad9834.c
428
st->freq_xfer[1].tx_buf = &st->freq_data[1];
drivers/staging/iio/frequency/ad9834.c
429
st->freq_xfer[1].len = 2;
drivers/staging/iio/frequency/ad9834.c
431
spi_message_init(&st->freq_msg);
drivers/staging/iio/frequency/ad9834.c
432
spi_message_add_tail(&st->freq_xfer[0], &st->freq_msg);
drivers/staging/iio/frequency/ad9834.c
433
spi_message_add_tail(&st->freq_xfer[1], &st->freq_msg);
drivers/staging/iio/frequency/ad9834.c
435
st->control = AD9834_B28 | AD9834_RESET;
drivers/staging/iio/frequency/ad9834.c
436
st->control |= AD9834_DIV2;
drivers/staging/iio/frequency/ad9834.c
438
if (st->devid == ID_AD9834)
drivers/staging/iio/frequency/ad9834.c
439
st->control |= AD9834_SIGN_PIB;
drivers/staging/iio/frequency/ad9834.c
441
st->data = cpu_to_be16(AD9834_REG_CMD | st->control);
drivers/staging/iio/frequency/ad9834.c
442
ret = spi_sync(st->spi, &st->msg);
drivers/staging/iio/frequency/ad9834.c
447
ret = ad9834_write_frequency(st, AD9834_REG_FREQ0, 1000000);
drivers/staging/iio/frequency/ad9834.c
451
ret = ad9834_write_frequency(st, AD9834_REG_FREQ1, 5000000);
drivers/staging/iio/frequency/ad9834.c
455
ret = ad9834_write_phase(st, AD9834_REG_PHASE0, 512);
drivers/staging/iio/frequency/ad9834.c
459
ret = ad9834_write_phase(st, AD9834_REG_PHASE1, 1024);
drivers/staging/iio/impedance-analyzer/ad5933.c
155
static int ad5933_cmd(struct ad5933_state *st, unsigned char cmd)
drivers/staging/iio/impedance-analyzer/ad5933.c
157
unsigned char dat = st->ctrl_hb | cmd;
drivers/staging/iio/impedance-analyzer/ad5933.c
159
return ad5933_i2c_write(st->client,
drivers/staging/iio/impedance-analyzer/ad5933.c
163
static int ad5933_reset(struct ad5933_state *st)
drivers/staging/iio/impedance-analyzer/ad5933.c
165
unsigned char dat = st->ctrl_lb | AD5933_CTRL_RESET;
drivers/staging/iio/impedance-analyzer/ad5933.c
167
return ad5933_i2c_write(st->client,
drivers/staging/iio/impedance-analyzer/ad5933.c
171
static int ad5933_wait_busy(struct ad5933_state *st, unsigned char event)
drivers/staging/iio/impedance-analyzer/ad5933.c
177
ret = ad5933_i2c_read(st->client, AD5933_REG_STATUS, 1, &val);
drivers/staging/iio/impedance-analyzer/ad5933.c
189
static int ad5933_set_freq(struct ad5933_state *st,
drivers/staging/iio/impedance-analyzer/ad5933.c
198
freqreg = div64_ul(BIT_ULL(27) * freq, st->mclk_hz / 4);
drivers/staging/iio/impedance-analyzer/ad5933.c
202
st->freq_start = freq;
drivers/staging/iio/impedance-analyzer/ad5933.c
205
st->freq_inc = freq;
drivers/staging/iio/impedance-analyzer/ad5933.c
212
return ad5933_i2c_write(st->client, reg, 3, &dat.d8[1]);
drivers/staging/iio/impedance-analyzer/ad5933.c
215
static int ad5933_setup(struct ad5933_state *st)
drivers/staging/iio/impedance-analyzer/ad5933.c
220
ret = ad5933_reset(st);
drivers/staging/iio/impedance-analyzer/ad5933.c
224
ret = ad5933_set_freq(st, AD5933_REG_FREQ_START, 10000);
drivers/staging/iio/impedance-analyzer/ad5933.c
228
ret = ad5933_set_freq(st, AD5933_REG_FREQ_INC, 200);
drivers/staging/iio/impedance-analyzer/ad5933.c
232
st->settling_cycles = 10;
drivers/staging/iio/impedance-analyzer/ad5933.c
233
dat = cpu_to_be16(st->settling_cycles);
drivers/staging/iio/impedance-analyzer/ad5933.c
235
ret = ad5933_i2c_write(st->client,
drivers/staging/iio/impedance-analyzer/ad5933.c
241
st->freq_points = 100;
drivers/staging/iio/impedance-analyzer/ad5933.c
242
dat = cpu_to_be16(st->freq_points);
drivers/staging/iio/impedance-analyzer/ad5933.c
244
return ad5933_i2c_write(st->client, AD5933_REG_INC_NUM, 2, (u8 *)&dat);
drivers/staging/iio/impedance-analyzer/ad5933.c
247
static void ad5933_calc_out_ranges(struct ad5933_state *st)
drivers/staging/iio/impedance-analyzer/ad5933.c
253
st->range_avail[i] = normalized_3v3[i] * st->vref_mv / 3300;
drivers/staging/iio/impedance-analyzer/ad5933.c
265
struct ad5933_state *st = iio_priv(indio_dev);
drivers/staging/iio/impedance-analyzer/ad5933.c
277
ret = ad5933_i2c_read(st->client, this_attr->address, 3, &dat.d8[1]);
drivers/staging/iio/impedance-analyzer/ad5933.c
285
freqreg = (u64)freqreg * (u64)(st->mclk_hz / 4);
drivers/staging/iio/impedance-analyzer/ad5933.c
297
struct ad5933_state *st = iio_priv(indio_dev);
drivers/staging/iio/impedance-analyzer/ad5933.c
312
ret = ad5933_set_freq(st, this_attr->address, val);
drivers/staging/iio/impedance-analyzer/ad5933.c
334
struct ad5933_state *st = iio_priv(indio_dev);
drivers/staging/iio/impedance-analyzer/ad5933.c
338
mutex_lock(&st->lock);
drivers/staging/iio/impedance-analyzer/ad5933.c
342
st->range_avail[(st->ctrl_hb >> 1) & 0x3]);
drivers/staging/iio/impedance-analyzer/ad5933.c
345
len = sysfs_emit(buf, "%u %u %u %u\n", st->range_avail[0],
drivers/staging/iio/impedance-analyzer/ad5933.c
346
st->range_avail[3], st->range_avail[2],
drivers/staging/iio/impedance-analyzer/ad5933.c
347
st->range_avail[1]);
drivers/staging/iio/impedance-analyzer/ad5933.c
350
len = sysfs_emit(buf, "%d\n", st->settling_cycles);
drivers/staging/iio/impedance-analyzer/ad5933.c
354
(st->ctrl_hb & AD5933_CTRL_PGA_GAIN_1) ?
drivers/staging/iio/impedance-analyzer/ad5933.c
361
len = sysfs_emit(buf, "%d\n", st->freq_points);
drivers/staging/iio/impedance-analyzer/ad5933.c
367
mutex_unlock(&st->lock);
drivers/staging/iio/impedance-analyzer/ad5933.c
377
struct ad5933_state *st = iio_priv(indio_dev);
drivers/staging/iio/impedance-analyzer/ad5933.c
392
mutex_lock(&st->lock);
drivers/staging/iio/impedance-analyzer/ad5933.c
397
if (val == st->range_avail[i]) {
drivers/staging/iio/impedance-analyzer/ad5933.c
398
st->ctrl_hb &= ~AD5933_CTRL_RANGE(0x3);
drivers/staging/iio/impedance-analyzer/ad5933.c
399
st->ctrl_hb |= AD5933_CTRL_RANGE(i);
drivers/staging/iio/impedance-analyzer/ad5933.c
400
ret = ad5933_cmd(st, 0);
drivers/staging/iio/impedance-analyzer/ad5933.c
406
st->ctrl_hb |= AD5933_CTRL_PGA_GAIN_1;
drivers/staging/iio/impedance-analyzer/ad5933.c
408
st->ctrl_hb &= ~AD5933_CTRL_PGA_GAIN_1;
drivers/staging/iio/impedance-analyzer/ad5933.c
413
ret = ad5933_cmd(st, 0);
drivers/staging/iio/impedance-analyzer/ad5933.c
417
st->settling_cycles = val;
drivers/staging/iio/impedance-analyzer/ad5933.c
426
ret = ad5933_i2c_write(st->client,
drivers/staging/iio/impedance-analyzer/ad5933.c
432
st->freq_points = val;
drivers/staging/iio/impedance-analyzer/ad5933.c
435
ret = ad5933_i2c_write(st->client, AD5933_REG_INC_NUM, 2,
drivers/staging/iio/impedance-analyzer/ad5933.c
442
mutex_unlock(&st->lock);
drivers/staging/iio/impedance-analyzer/ad5933.c
506
struct ad5933_state *st = iio_priv(indio_dev);
drivers/staging/iio/impedance-analyzer/ad5933.c
515
ret = ad5933_cmd(st, AD5933_CTRL_MEASURE_TEMP);
drivers/staging/iio/impedance-analyzer/ad5933.c
518
ret = ad5933_wait_busy(st, AD5933_STAT_TEMP_VALID);
drivers/staging/iio/impedance-analyzer/ad5933.c
522
ret = ad5933_i2c_read(st->client,
drivers/staging/iio/impedance-analyzer/ad5933.c
551
struct ad5933_state *st = iio_priv(indio_dev);
drivers/staging/iio/impedance-analyzer/ad5933.c
558
ret = ad5933_reset(st);
drivers/staging/iio/impedance-analyzer/ad5933.c
562
ret = ad5933_cmd(st, AD5933_CTRL_STANDBY);
drivers/staging/iio/impedance-analyzer/ad5933.c
566
ret = ad5933_cmd(st, AD5933_CTRL_INIT_START_FREQ);
drivers/staging/iio/impedance-analyzer/ad5933.c
570
st->state = AD5933_CTRL_INIT_START_FREQ;
drivers/staging/iio/impedance-analyzer/ad5933.c
577
struct ad5933_state *st = iio_priv(indio_dev);
drivers/staging/iio/impedance-analyzer/ad5933.c
590
schedule_delayed_work(&st->work,
drivers/staging/iio/impedance-analyzer/ad5933.c
597
struct ad5933_state *st = iio_priv(indio_dev);
drivers/staging/iio/impedance-analyzer/ad5933.c
599
cancel_delayed_work_sync(&st->work);
drivers/staging/iio/impedance-analyzer/ad5933.c
600
return ad5933_cmd(st, AD5933_CTRL_POWER_DOWN);
drivers/staging/iio/impedance-analyzer/ad5933.c
611
struct ad5933_state *st = container_of(work,
drivers/staging/iio/impedance-analyzer/ad5933.c
613
struct iio_dev *indio_dev = i2c_get_clientdata(st->client);
drivers/staging/iio/impedance-analyzer/ad5933.c
619
if (st->state == AD5933_CTRL_INIT_START_FREQ) {
drivers/staging/iio/impedance-analyzer/ad5933.c
621
ad5933_cmd(st, AD5933_CTRL_START_SWEEP);
drivers/staging/iio/impedance-analyzer/ad5933.c
622
st->state = AD5933_CTRL_START_SWEEP;
drivers/staging/iio/impedance-analyzer/ad5933.c
623
schedule_delayed_work(&st->work, st->poll_time_jiffies);
drivers/staging/iio/impedance-analyzer/ad5933.c
627
ret = ad5933_i2c_read(st->client, AD5933_REG_STATUS, 1, &status);
drivers/staging/iio/impedance-analyzer/ad5933.c
634
ret = ad5933_i2c_read(st->client,
drivers/staging/iio/impedance-analyzer/ad5933.c
650
schedule_delayed_work(&st->work, st->poll_time_jiffies);
drivers/staging/iio/impedance-analyzer/ad5933.c
659
ad5933_cmd(st, AD5933_CTRL_POWER_DOWN);
drivers/staging/iio/impedance-analyzer/ad5933.c
662
ad5933_cmd(st, AD5933_CTRL_INC_FREQ);
drivers/staging/iio/impedance-analyzer/ad5933.c
663
schedule_delayed_work(&st->work, st->poll_time_jiffies);
drivers/staging/iio/impedance-analyzer/ad5933.c
671
struct ad5933_state *st;
drivers/staging/iio/impedance-analyzer/ad5933.c
675
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st));
drivers/staging/iio/impedance-analyzer/ad5933.c
679
st = iio_priv(indio_dev);
drivers/staging/iio/impedance-analyzer/ad5933.c
681
st->client = client;
drivers/staging/iio/impedance-analyzer/ad5933.c
683
mutex_init(&st->lock);
drivers/staging/iio/impedance-analyzer/ad5933.c
689
st->vref_mv = ret / 1000;
drivers/staging/iio/impedance-analyzer/ad5933.c
691
st->mclk = devm_clk_get_enabled(&client->dev, "mclk");
drivers/staging/iio/impedance-analyzer/ad5933.c
692
if (IS_ERR(st->mclk) && PTR_ERR(st->mclk) != -ENOENT)
drivers/staging/iio/impedance-analyzer/ad5933.c
693
return PTR_ERR(st->mclk);
drivers/staging/iio/impedance-analyzer/ad5933.c
695
if (!IS_ERR(st->mclk))
drivers/staging/iio/impedance-analyzer/ad5933.c
696
ext_clk_hz = clk_get_rate(st->mclk);
drivers/staging/iio/impedance-analyzer/ad5933.c
699
st->mclk_hz = ext_clk_hz;
drivers/staging/iio/impedance-analyzer/ad5933.c
700
st->ctrl_lb = AD5933_CTRL_EXT_SYSCLK;
drivers/staging/iio/impedance-analyzer/ad5933.c
702
st->mclk_hz = AD5933_INT_OSC_FREQ_Hz;
drivers/staging/iio/impedance-analyzer/ad5933.c
703
st->ctrl_lb = AD5933_CTRL_INT_SYSCLK;
drivers/staging/iio/impedance-analyzer/ad5933.c
706
ad5933_calc_out_ranges(st);
drivers/staging/iio/impedance-analyzer/ad5933.c
707
INIT_DELAYED_WORK(&st->work, ad5933_work);
drivers/staging/iio/impedance-analyzer/ad5933.c
708
st->poll_time_jiffies = msecs_to_jiffies(AD5933_POLL_TIME_ms);
drivers/staging/iio/impedance-analyzer/ad5933.c
721
ret = ad5933_setup(st);
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2342
struct atomisp_shading_table *st, dest_st;
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2360
st = &dest_st;
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2362
st = source_st;
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2368
if (!st->enable) {
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2379
if (!st->data[i]) {
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2386
if (st->width > SH_CSS_MAX_SCTBL_WIDTH_PER_COLOR ||
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2387
st->height > SH_CSS_MAX_SCTBL_HEIGHT_PER_COLOR) {
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2392
shading_table = atomisp_css_shading_table_alloc(st->width, st->height);
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2396
len_table = st->width * st->height * ATOMISP_SC_TYPE_SIZE;
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2399
st->data[i], len_table, from_user)) {
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2404
shading_table->sensor_width = st->sensor_width;
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2405
shading_table->sensor_height = st->sensor_height;
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2406
shading_table->fraction_bits = st->fraction_bits;
drivers/staging/media/atomisp/pci/atomisp_cmd.c
2407
shading_table->enable = st->enable;
drivers/staging/most/dim2/dim2.c
166
struct dim_ch_state st;
drivers/staging/most/dim2/dim2.c
177
if (!dim_get_channel_state(&hdm_ch->ch, &st)->ready) {
drivers/staging/most/dim2/dim2.c
267
struct dim_ch_state st;
drivers/staging/most/dim2/dim2.c
279
done_buffers = dim_get_channel_state(&hdm_ch->ch, &st)->done_buffers;
drivers/target/iscsi/cxgbit/cxgbit_target.c
814
struct skb_seq_state st;
drivers/target/iscsi/cxgbit/cxgbit_target.c
821
&st);
drivers/target/iscsi/cxgbit/cxgbit_target.c
824
buf_len = skb_seq_read(consumed, &buf, &st);
drivers/target/iscsi/cxgbit/cxgbit_target.c
826
skb_abort_seq_read(&st);
drivers/thermal/tegra/soctherm.c
1002
u32 st, ex, oc1, oc2, oc3, oc4;
drivers/thermal/tegra/soctherm.c
1004
st = readl(ts->regs + OC_INTR_STATUS);
drivers/thermal/tegra/soctherm.c
1007
oc1 = st & OC_INTR_OC1_MASK;
drivers/thermal/tegra/soctherm.c
1008
oc2 = st & OC_INTR_OC2_MASK;
drivers/thermal/tegra/soctherm.c
1009
oc3 = st & OC_INTR_OC3_MASK;
drivers/thermal/tegra/soctherm.c
1010
oc4 = st & OC_INTR_OC4_MASK;
drivers/thermal/tegra/soctherm.c
1015
writel(st, ts->regs + OC_INTR_STATUS);
drivers/thermal/tegra/soctherm.c
1016
st &= ~ex;
drivers/thermal/tegra/soctherm.c
1047
if (st) {
drivers/thermal/tegra/soctherm.c
1048
pr_err("soctherm: Ignored unexpected OC ALARM 0x%08x\n", st);
drivers/thermal/tegra/soctherm.c
1049
writel(st, ts->regs + OC_INTR_STATUS);
drivers/thermal/tegra/soctherm.c
841
u32 st, ex = 0, cp = 0, gp = 0, pl = 0, me = 0;
drivers/thermal/tegra/soctherm.c
843
st = readl(ts->regs + THERMCTL_INTR_STATUS);
drivers/thermal/tegra/soctherm.c
846
cp |= st & TH_INTR_CD0_MASK;
drivers/thermal/tegra/soctherm.c
847
cp |= st & TH_INTR_CU0_MASK;
drivers/thermal/tegra/soctherm.c
849
gp |= st & TH_INTR_GD0_MASK;
drivers/thermal/tegra/soctherm.c
850
gp |= st & TH_INTR_GU0_MASK;
drivers/thermal/tegra/soctherm.c
852
pl |= st & TH_INTR_PD0_MASK;
drivers/thermal/tegra/soctherm.c
853
pl |= st & TH_INTR_PU0_MASK;
drivers/thermal/tegra/soctherm.c
855
me |= st & TH_INTR_MD0_MASK;
drivers/thermal/tegra/soctherm.c
856
me |= st & TH_INTR_MU0_MASK;
drivers/thermal/tegra/soctherm.c
861
st &= ~ex;
drivers/thermal/tegra/soctherm.c
890
st &= ~ex;
drivers/thermal/tegra/soctherm.c
892
if (st) {
drivers/thermal/tegra/soctherm.c
894
pr_err("soctherm: Ignored unexpected INTRs 0x%08x\n", st);
drivers/thermal/tegra/soctherm.c
895
writel(st, ts->regs + THERMCTL_INTR_STATUS);
drivers/thunderbolt/switch.c
40
struct nvm_auth_status *st;
drivers/thunderbolt/switch.c
42
list_for_each_entry(st, &nvm_auth_status_cache, list) {
drivers/thunderbolt/switch.c
43
if (uuid_equal(&st->uuid, sw->uuid))
drivers/thunderbolt/switch.c
44
return st;
drivers/thunderbolt/switch.c
52
struct nvm_auth_status *st;
drivers/thunderbolt/switch.c
55
st = __nvm_get_auth_status(sw);
drivers/thunderbolt/switch.c
58
*status = st ? st->status : 0;
drivers/thunderbolt/switch.c
63
struct nvm_auth_status *st;
drivers/thunderbolt/switch.c
69
st = __nvm_get_auth_status(sw);
drivers/thunderbolt/switch.c
71
if (!st) {
drivers/thunderbolt/switch.c
72
st = kzalloc_obj(*st);
drivers/thunderbolt/switch.c
73
if (!st)
drivers/thunderbolt/switch.c
76
memcpy(&st->uuid, sw->uuid, sizeof(st->uuid));
drivers/thunderbolt/switch.c
77
INIT_LIST_HEAD(&st->list);
drivers/thunderbolt/switch.c
78
list_add_tail(&st->list, &nvm_auth_status_cache);
drivers/thunderbolt/switch.c
81
st->status = status;
drivers/thunderbolt/switch.c
88
struct nvm_auth_status *st;
drivers/thunderbolt/switch.c
91
st = __nvm_get_auth_status(sw);
drivers/thunderbolt/switch.c
92
if (st) {
drivers/thunderbolt/switch.c
93
list_del(&st->list);
drivers/thunderbolt/switch.c
94
kfree(st);
drivers/tty/serial/mvebu-uart.c
188
unsigned int st;
drivers/tty/serial/mvebu-uart.c
191
st = readl(port->membase + UART_STAT);
drivers/tty/serial/mvebu-uart.c
194
return (st & STAT_TX_EMP) ? TIOCSER_TEMT : 0;
drivers/tty/serial/mvebu-uart.c
346
unsigned int st = readl(port->membase + UART_STAT);
drivers/tty/serial/mvebu-uart.c
348
if (st & (STAT_RX_RDY(port) | STAT_OVR_ERR | STAT_FRM_ERR |
drivers/tty/serial/mvebu-uart.c
350
mvebu_uart_rx_chars(port, st);
drivers/tty/serial/mvebu-uart.c
352
if (st & STAT_TX_RDY(port))
drivers/tty/serial/mvebu-uart.c
353
mvebu_uart_tx_chars(port, st);
drivers/tty/serial/mvebu-uart.c
361
unsigned int st = readl(port->membase + UART_STAT);
drivers/tty/serial/mvebu-uart.c
363
if (st & (STAT_RX_RDY(port) | STAT_OVR_ERR | STAT_FRM_ERR |
drivers/tty/serial/mvebu-uart.c
365
mvebu_uart_rx_chars(port, st);
drivers/tty/serial/mvebu-uart.c
373
unsigned int st = readl(port->membase + UART_STAT);
drivers/tty/serial/mvebu-uart.c
375
if (st & STAT_TX_RDY(port))
drivers/tty/serial/mvebu-uart.c
376
mvebu_uart_tx_chars(port, st);
drivers/tty/serial/mvebu-uart.c
611
unsigned int st = readl(port->membase + UART_STAT);
drivers/tty/serial/mvebu-uart.c
613
if (!(st & STAT_RX_RDY(port)))
drivers/tty/serial/mvebu-uart.c
621
unsigned int st;
drivers/tty/serial/mvebu-uart.c
624
st = readl(port->membase + UART_STAT);
drivers/tty/serial/mvebu-uart.c
626
if (!(st & STAT_TX_FIFO_FUL))
drivers/tty/serial/mvebu-uart.c
662
unsigned int st;
drivers/tty/serial/mvebu-uart.c
665
st = readl(port->membase + UART_STAT);
drivers/tty/serial/mvebu-uart.c
666
if (!(st & STAT_TX_FIFO_FUL))
drivers/tty/serial/mvebu-uart.c
674
st = readl(port->membase + UART_STAT);
drivers/tty/serial/mvebu-uart.c
675
if (st & STAT_TX_FIFO_EMP)
drivers/usb/atm/ueagle-atm.c
410
#define E4_MAKEFUNCTION(t, st, s) (((t) & 0xf) << 8 | \
drivers/usb/atm/ueagle-atm.c
411
((st) & 0xf) << 4 | ((s) & 0xf))
drivers/usb/serial/iuu_phoenix.c
210
u8 *st;
drivers/usb/serial/iuu_phoenix.c
219
st = urb->transfer_buffer;
drivers/usb/serial/iuu_phoenix.c
222
switch (st[0]) {
drivers/usb/typec/tipd/core.c
646
static void cd321x_typec_update_mode(struct tps6598x *tps, struct cd321x_status *st)
drivers/usb/typec/tipd/core.c
650
if (!(st->data_status & TPS_DATA_STATUS_DATA_CONNECTION)) {
drivers/usb/typec/tipd/core.c
657
} else if (st->data_status & TPS_DATA_STATUS_DP_CONNECTION) {
drivers/usb/typec/tipd/core.c
661
switch (TPS_DATA_STATUS_DP_SPEC_PIN_ASSIGNMENT(st->data_status)) {
drivers/usb/typec/tipd/core.c
690
dp_data.status = le32_to_cpu(st->dp_sid_status.status_rx);
drivers/usb/typec/tipd/core.c
691
dp_data.conf = le32_to_cpu(st->dp_sid_status.configure);
drivers/usb/typec/tipd/core.c
696
} else if (st->data_status & TPS_DATA_STATUS_TBT_CONNECTION) {
drivers/usb/typec/tipd/core.c
703
tbt_data.cable_mode = le16_to_cpu(st->intel_vid_status.cable_mode);
drivers/usb/typec/tipd/core.c
704
tbt_data.device_mode = le16_to_cpu(st->intel_vid_status.device_mode);
drivers/usb/typec/tipd/core.c
705
tbt_data.enter_vdo = le16_to_cpu(st->intel_vid_status.enter_vdo);
drivers/usb/typec/tipd/core.c
710
} else if (st->data_status & CD321X_DATA_STATUS_USB4_CONNECTION) {
drivers/usb/typec/tipd/core.c
716
eusb_data.eudo = le32_to_cpu(st->usb4_status.eudo);
drivers/usb/typec/tipd/core.c
718
!!(st->data_status & TPS_DATA_STATUS_ACTIVE_LINK_TRAIN);
drivers/usb/typec/tipd/core.c
742
struct cd321x_status st;
drivers/usb/typec/tipd/core.c
746
st = cd321x->update_status;
drivers/usb/typec/tipd/core.c
750
bool new_connected = st.status & TPS_STATUS_PLUG_PRESENT;
drivers/usb/typec/tipd/core.c
751
bool was_disconnected = st.status_changed & TPS_STATUS_PLUG_PRESENT;
drivers/usb/typec/tipd/core.c
753
bool usb_connection = st.data_status &
drivers/usb/typec/tipd/core.c
769
pwr_opmode = TPS_POWER_STATUS_PWROPMODE(st.pwr_status);
drivers/usb/typec/tipd/core.c
770
orientation = TPS_STATUS_TO_UPSIDE_DOWN(st.status) ?
drivers/usb/typec/tipd/core.c
777
(is_pd && memcmp(&st.partner_identity,
drivers/usb/typec/tipd/core.c
801
typec_set_pwr_role(tps->port, TPS_STATUS_TO_TYPEC_PORTROLE(st.status));
drivers/usb/typec/tipd/core.c
802
typec_set_vconn_role(tps->port, TPS_STATUS_TO_TYPEC_VCONN(st.status));
drivers/usb/typec/tipd/core.c
804
typec_set_data_role(tps->port, TPS_STATUS_TO_TYPEC_DATAROLE(st.status));
drivers/usb/typec/tipd/core.c
820
desc.identity = &st.partner_identity;
drivers/usb/typec/tipd/core.c
830
cd321x->cur_partner_identity = st.partner_identity;
drivers/usb/typec/tipd/core.c
835
cd321x_typec_update_mode(tps, &st);
drivers/vdpa/mlx5/core/mr.c
451
u64 st;
drivers/vdpa/mlx5/core/mr.c
455
st = start;
drivers/vdpa/mlx5/core/mr.c
464
dmr->start = st;
drivers/vdpa/mlx5/core/mr.c
465
dmr->end = st + sz;
drivers/vdpa/mlx5/core/mr.c
477
st += sz;
drivers/vdpa/mlx5/net/mlx5_vnet.c
393
MLX5_SET(qpc, qpc, st, MLX5_QP_ST_RC);
drivers/vdpa/mlx5/net/mlx5_vnet.c
449
MLX5_SET(qpc, qpc, st, MLX5_QP_ST_RC);
drivers/vfio/pci/mlx5/cmd.c
1284
MLX5_SET(qpc, qpc, st, MLX5_QP_ST_RC);
drivers/video/backlight/lms283gf05.c
126
struct lms283gf05_state *st = lcd_get_data(ld);
drivers/video/backlight/lms283gf05.c
127
struct spi_device *spi = st->spi;
drivers/video/backlight/lms283gf05.c
130
if (st->reset)
drivers/video/backlight/lms283gf05.c
131
lms283gf05_reset(st->reset);
drivers/video/backlight/lms283gf05.c
135
if (st->reset)
drivers/video/backlight/lms283gf05.c
136
gpiod_set_value(st->reset, 1); /* Asserted */
drivers/video/backlight/lms283gf05.c
149
struct lms283gf05_state *st;
drivers/video/backlight/lms283gf05.c
152
st = devm_kzalloc(&spi->dev, sizeof(struct lms283gf05_state),
drivers/video/backlight/lms283gf05.c
154
if (st == NULL)
drivers/video/backlight/lms283gf05.c
157
st->reset = gpiod_get_optional(&spi->dev, "reset", GPIOD_OUT_LOW);
drivers/video/backlight/lms283gf05.c
158
if (IS_ERR(st->reset))
drivers/video/backlight/lms283gf05.c
159
return PTR_ERR(st->reset);
drivers/video/backlight/lms283gf05.c
160
gpiod_set_consumer_name(st->reset, "LMS283GF05 RESET");
drivers/video/backlight/lms283gf05.c
162
ld = devm_lcd_device_register(&spi->dev, "lms283gf05", &spi->dev, st,
drivers/video/backlight/lms283gf05.c
167
st->spi = spi;
drivers/video/backlight/lms283gf05.c
168
st->ld = ld;
drivers/video/backlight/lms283gf05.c
170
spi_set_drvdata(spi, st);
drivers/video/backlight/lms283gf05.c
173
if (st->reset)
drivers/video/backlight/lms283gf05.c
174
lms283gf05_reset(st->reset);
drivers/video/fbdev/atafb.c
105
} tt, st;
drivers/video/fbdev/atafb.c
1779
mode = par->hw.st.mode & 3;
drivers/video/fbdev/atafb.c
1810
par->hw.st.mode = ST_HIGH;
drivers/video/fbdev/atafb.c
1820
par->hw.st.mode = ST_LOW;
drivers/video/fbdev/atafb.c
1827
par->hw.st.mode = ST_MID;
drivers/video/fbdev/atafb.c
1839
par->hw.st.sync = (par->hw.st.sync & ~1) | 1;
drivers/video/fbdev/atafb.c
1841
par->hw.st.sync = (par->hw.st.sync & ~1);
drivers/video/fbdev/atafb.c
1876
if (!(par->hw.st.sync & 1))
drivers/video/fbdev/atafb.c
1881
switch (par->hw.st.mode & 3) {
drivers/video/fbdev/atafb.c
1934
par->hw.st.mode = shifter_tt.st_shiftmode;
drivers/video/fbdev/atafb.c
1935
par->hw.st.sync = shifter_st.syncmode;
drivers/video/fbdev/atafb.c
1945
shifter_tt.st_shiftmode = par->hw.st.mode;
drivers/video/fbdev/atafb.c
1946
shifter_st.syncmode = par->hw.st.sync;
drivers/video/fbdev/savage/savagefb.h
249
#define BCI_BD_SET_STRIDE(bd, st) ((bd) |= ((st) & 0xFFFF))
drivers/w1/masters/ds2490.c
269
static int ds_recv_status(struct ds_device *dev, struct ds_status *st)
drivers/w1/masters/ds2490.c
273
if (st)
drivers/w1/masters/ds2490.c
274
memset(st, 0, sizeof(*st));
drivers/w1/masters/ds2490.c
289
if (st && count >= sizeof(*st))
drivers/w1/masters/ds2490.c
290
memcpy(st, dev->st_buf, sizeof(*st));
drivers/w1/masters/ds2490.c
377
struct ds_status st;
drivers/w1/masters/ds2490.c
387
err = ds_recv_status(dev, &st);
drivers/w1/masters/ds2490.c
391
if ((st.status & ST_SPUA) == 0) {
drivers/w1/masters/ds2490.c
401
int ds_detect(struct ds_device *dev, struct ds_status *st)
drivers/w1/masters/ds2490.c
421
err = ds_dump_status(dev, st);
drivers/w1/masters/ds2490.c
428
static int ds_wait_status(struct ds_device *dev, struct ds_status *st)
drivers/w1/masters/ds2490.c
433
st->status = 0;
drivers/w1/masters/ds2490.c
434
err = ds_recv_status(dev, st);
drivers/w1/masters/ds2490.c
444
} while (!(st->status & ST_IDLE) && !(err < 0) && ++count < 100);
drivers/w1/masters/ds2490.c
446
if (err >= 16 && st->status & ST_EPOF) {
drivers/w1/masters/ds2490.c
540
struct ds_status st;
drivers/w1/masters/ds2490.c
547
ds_wait_status(dev, &st);
drivers/w1/masters/ds2490.c
560
struct ds_status st;
drivers/w1/masters/ds2490.c
571
ds_wait_status(dev, &st);
drivers/w1/masters/ds2490.c
580
struct ds_status st;
drivers/w1/masters/ds2490.c
589
err = ds_wait_status(dev, &st);
drivers/w1/masters/ds2490.c
603
struct ds_status st;
drivers/w1/masters/ds2490.c
609
ds_wait_status(dev, &st);
drivers/w1/masters/ds2490.c
620
struct ds_status st;
drivers/w1/masters/ds2490.c
633
ds_wait_status(dev, &st);
drivers/w1/masters/ds2490.c
662
struct ds_status st;
drivers/w1/masters/ds2490.c
675
ds_wait_status(dev, &st);
drivers/w1/masters/ds2490.c
698
struct ds_status st;
drivers/w1/masters/ds2490.c
746
err = ds_recv_status(dev, &st);
drivers/w1/masters/ds2490.c
747
if (err < 0 || err < sizeof(st))
drivers/w1/masters/ds2490.c
750
if (st.data_in_buffer_status) {
drivers/w1/masters/ds2490.c
777
} while (!(st.status & (ST_IDLE | ST_HALT)));
drivers/w1/masters/ds2490.c
814
struct ds_status st;
drivers/w1/masters/ds2490.c
820
ds_wait_status(dev, &st);
drivers/w1/masters/ds2490.c
826
ds_wait_status(dev, &st);
drivers/w1/masters/ds2490.c
834
struct ds_status st;
drivers/w1/masters/ds2490.c
844
ds_wait_status(dev, &st);
drivers/w1/masters/ds2490.c
850
ds_wait_status(dev, &st);
drivers/xen/balloon.c
577
enum bp_state st;
drivers/xen/balloon.c
580
st = reserve_additional_memory();
drivers/xen/balloon.c
581
if (st != BP_ECANCELED) {
drivers/xen/balloon.c
595
st = decrease_reservation(nr_pages, GFP_USER);
drivers/xen/balloon.c
596
if (st != BP_DONE)
drivers/xen/privcmd.c
251
struct mmap_gfn_state *st = state;
drivers/xen/privcmd.c
252
struct vm_area_struct *vma = st->vma;
drivers/xen/privcmd.c
257
((unsigned long)(msg->npages << PAGE_SHIFT) >= -st->va))
drivers/xen/privcmd.c
261
if ((msg->va != st->va) ||
drivers/xen/privcmd.c
269
st->domain, NULL);
drivers/xen/privcmd.c
273
st->va += msg->npages << PAGE_SHIFT;
drivers/xen/privcmd.c
365
struct mmap_batch_state *st = state;
drivers/xen/privcmd.c
366
struct vm_area_struct *vma = st->vma;
drivers/xen/privcmd.c
372
cur_pages = &pages[st->index];
drivers/xen/privcmd.c
375
ret = xen_remap_domain_gfn_array(st->vma, st->va & PAGE_MASK, gfnp, nr,
drivers/xen/privcmd.c
376
(int *)gfnp, st->vma->vm_page_prot,
drivers/xen/privcmd.c
377
st->domain, cur_pages);
drivers/xen/privcmd.c
382
st->global_error = -ENOENT;
drivers/xen/privcmd.c
385
if (st->global_error == 0)
drivers/xen/privcmd.c
386
st->global_error = 1;
drivers/xen/privcmd.c
389
st->va += XEN_PAGE_SIZE * nr;
drivers/xen/privcmd.c
390
st->index += nr / XEN_PFN_PER_PAGE;
drivers/xen/privcmd.c
395
static int mmap_return_error(int err, struct mmap_batch_state *st)
drivers/xen/privcmd.c
399
if (st->version == 1) {
drivers/xen/privcmd.c
403
ret = get_user(gfn, st->user_gfn);
drivers/xen/privcmd.c
414
return __put_user(gfn, st->user_gfn++);
drivers/xen/privcmd.c
416
st->user_gfn++;
drivers/xen/privcmd.c
419
return __put_user(err, st->user_err++);
drivers/xen/privcmd.c
421
st->user_err++;
drivers/xen/privcmd.c
429
struct mmap_batch_state *st = state;
drivers/xen/privcmd.c
435
ret = mmap_return_error(errs[i], st);
fs/9p/vfs_dir.c
129
rdir->tail - rdir->head, &st);
fs/9p/vfs_dir.c
135
over = !dir_emit(ctx, st.name, strlen(st.name),
fs/9p/vfs_dir.c
136
QID2INO(&st.qid), dt_type(&st));
fs/9p/vfs_dir.c
137
p9stat_free(&st);
fs/9p/vfs_dir.c
89
struct p9_wstat st;
fs/9p/vfs_inode.c
1000
return PTR_ERR(st);
fs/9p/vfs_inode.c
1002
v9fs_stat2inode(st, d_inode(dentry), dentry->d_sb, 0);
fs/9p/vfs_inode.c
1005
p9stat_free(st);
fs/9p/vfs_inode.c
1006
kfree(st);
fs/9p/vfs_inode.c
1173
struct p9_wstat *st;
fs/9p/vfs_inode.c
1189
st = p9_client_stat(fid);
fs/9p/vfs_inode.c
1191
if (IS_ERR(st))
fs/9p/vfs_inode.c
1192
return ERR_CAST(st);
fs/9p/vfs_inode.c
1194
if (!(st->mode & P9_DMSYMLINK)) {
fs/9p/vfs_inode.c
1195
p9stat_free(st);
fs/9p/vfs_inode.c
1196
kfree(st);
fs/9p/vfs_inode.c
1199
res = st->extension;
fs/9p/vfs_inode.c
1200
st->extension = NULL;
fs/9p/vfs_inode.c
1204
p9stat_free(st);
fs/9p/vfs_inode.c
1205
kfree(st);
fs/9p/vfs_inode.c
1338
struct p9_wstat *st;
fs/9p/vfs_inode.c
1343
st = p9_client_stat(fid);
fs/9p/vfs_inode.c
1344
if (IS_ERR(st))
fs/9p/vfs_inode.c
1345
return PTR_ERR(st);
fs/9p/vfs_inode.c
1349
umode = p9mode2unixmode(v9ses, st, &rdev);
fs/9p/vfs_inode.c
1359
v9fs_stat2inode(st, inode, inode->i_sb, flags);
fs/9p/vfs_inode.c
1361
p9stat_free(st);
fs/9p/vfs_inode.c
1362
kfree(st);
fs/9p/vfs_inode.c
372
struct p9_wstat *st = (struct p9_wstat *)data;
fs/9p/vfs_inode.c
375
umode = p9mode2unixmode(v9ses, st, &rdev);
fs/9p/vfs_inode.c
382
&st->qid.version, sizeof(v9inode->qid.version)))
fs/9p/vfs_inode.c
385
if (v9inode->qid.type != st->qid.type)
fs/9p/vfs_inode.c
388
if (v9inode->qid.path != st->qid.path)
fs/9p/vfs_inode.c
401
struct p9_wstat *st = (struct p9_wstat *)data;
fs/9p/vfs_inode.c
403
memcpy(&v9inode->qid, &st->qid, sizeof(st->qid));
fs/9p/vfs_inode.c
409
struct p9_wstat *st,
fs/9p/vfs_inode.c
424
inode = iget5_locked(sb, QID2INO(qid), test, v9fs_set_inode, st);
fs/9p/vfs_inode.c
435
umode = p9mode2unixmode(v9ses, st, &rdev);
fs/9p/vfs_inode.c
440
v9fs_stat2inode(st, inode, sb, 0);
fs/9p/vfs_inode.c
455
struct p9_wstat *st;
fs/9p/vfs_inode.c
458
st = p9_client_stat(fid);
fs/9p/vfs_inode.c
459
if (IS_ERR(st))
fs/9p/vfs_inode.c
460
return ERR_CAST(st);
fs/9p/vfs_inode.c
462
inode = v9fs_qid_iget(sb, &st->qid, st, new);
fs/9p/vfs_inode.c
463
p9stat_free(st);
fs/9p/vfs_inode.c
464
kfree(st);
fs/9p/vfs_inode.c
977
struct p9_wstat *st;
fs/9p/vfs_inode.c
997
st = p9_client_stat(fid);
fs/9p/vfs_inode.c
999
if (IS_ERR(st))
fs/9p/vfs_inode_dotl.c
112
inode = iget5_locked(sb, QID2INO(qid), test, v9fs_set_inode_dotl, st);
fs/9p/vfs_inode_dotl.c
124
st->st_mode, new_decode_dev(st->st_rdev));
fs/9p/vfs_inode_dotl.c
128
v9fs_stat2inode_dotl(st, inode, 0);
fs/9p/vfs_inode_dotl.c
147
struct p9_stat_dotl *st;
fs/9p/vfs_inode_dotl.c
150
st = p9_client_getattr_dotl(fid, P9_STATS_BASIC | P9_STATS_GEN);
fs/9p/vfs_inode_dotl.c
151
if (IS_ERR(st))
fs/9p/vfs_inode_dotl.c
152
return ERR_CAST(st);
fs/9p/vfs_inode_dotl.c
154
inode = v9fs_qid_iget_dotl(sb, &st->qid, fid, st, new);
fs/9p/vfs_inode_dotl.c
155
kfree(st);
fs/9p/vfs_inode_dotl.c
427
struct p9_stat_dotl *st;
fs/9p/vfs_inode_dotl.c
451
st = p9_client_getattr_dotl(fid, P9_STATS_ALL);
fs/9p/vfs_inode_dotl.c
453
if (IS_ERR(st))
fs/9p/vfs_inode_dotl.c
454
return PTR_ERR(st);
fs/9p/vfs_inode_dotl.c
456
v9fs_stat2inode_dotl(st, d_inode(dentry), 0);
fs/9p/vfs_inode_dotl.c
459
stat->blksize = st->st_blksize;
fs/9p/vfs_inode_dotl.c
461
kfree(st);
fs/9p/vfs_inode_dotl.c
58
struct p9_stat_dotl *st = (struct p9_stat_dotl *)data;
fs/9p/vfs_inode_dotl.c
61
if (inode_wrong_type(inode, st->st_mode))
fs/9p/vfs_inode_dotl.c
64
if (inode->i_generation != st->st_gen)
fs/9p/vfs_inode_dotl.c
69
&st->qid.version, sizeof(v9inode->qid.version)))
fs/9p/vfs_inode_dotl.c
72
if (v9inode->qid.type != st->qid.type)
fs/9p/vfs_inode_dotl.c
75
if (v9inode->qid.path != st->qid.path)
fs/9p/vfs_inode_dotl.c
89
struct p9_stat_dotl *st = (struct p9_stat_dotl *)data;
fs/9p/vfs_inode_dotl.c
91
memcpy(&v9inode->qid, &st->qid, sizeof(st->qid));
fs/9p/vfs_inode_dotl.c
92
inode->i_generation = st->st_gen;
fs/9p/vfs_inode_dotl.c
937
struct p9_stat_dotl *st;
fs/9p/vfs_inode_dotl.c
942
st = p9_client_getattr_dotl(fid, P9_STATS_ALL);
fs/9p/vfs_inode_dotl.c
943
if (IS_ERR(st))
fs/9p/vfs_inode_dotl.c
944
return PTR_ERR(st);
fs/9p/vfs_inode_dotl.c
948
if (inode_wrong_type(inode, st->st_mode))
fs/9p/vfs_inode_dotl.c
957
v9fs_stat2inode_dotl(st, inode, flags);
fs/9p/vfs_inode_dotl.c
959
kfree(st);
fs/9p/vfs_inode_dotl.c
99
struct p9_stat_dotl *st,
fs/ceph/debugfs.c
400
struct ceph_client_reset_state *st;
fs/ceph/debugfs.c
413
st = &mdsc->reset_state;
fs/ceph/debugfs.c
415
spin_lock(&st->lock);
fs/ceph/debugfs.c
416
trigger = st->trigger_count;
fs/ceph/debugfs.c
417
success = st->success_count;
fs/ceph/debugfs.c
418
failure = st->failure_count;
fs/ceph/debugfs.c
419
last_start = st->last_start;
fs/ceph/debugfs.c
420
last_finish = st->last_finish;
fs/ceph/debugfs.c
421
last_errno = st->last_errno;
fs/ceph/debugfs.c
422
phase = st->phase;
fs/ceph/debugfs.c
423
drain_timed_out = st->drain_timed_out;
fs/ceph/debugfs.c
424
sessions_reset = st->sessions_reset;
fs/ceph/debugfs.c
425
strscpy(reason, st->last_reason, sizeof(reason));
fs/ceph/debugfs.c
426
spin_unlock(&st->lock);
fs/ceph/debugfs.c
428
blocked_requests = atomic_read(&st->blocked_requests);
fs/ceph/mds_client.c
5325
struct ceph_client_reset_state *st = &mdsc->reset_state;
fs/ceph/mds_client.c
5333
if (ceph_reset_is_idle(st))
fs/ceph/mds_client.c
5336
blocked_count = atomic_inc_return(&st->blocked_requests);
fs/ceph/mds_client.c
5343
wait_ret = wait_event_interruptible_timeout(st->blocked_wq,
fs/ceph/mds_client.c
5344
ceph_reset_is_idle(st),
fs/ceph/mds_client.c
5348
atomic_dec(&st->blocked_requests);
fs/ceph/mds_client.c
5354
atomic_dec(&st->blocked_requests);
fs/ceph/mds_client.c
5364
spin_lock(&st->lock);
fs/ceph/mds_client.c
5365
if (st->phase != CEPH_CLIENT_RESET_IDLE) {
fs/ceph/mds_client.c
5366
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5369
atomic_dec(&st->blocked_requests);
fs/ceph/mds_client.c
5373
ret = st->last_errno;
fs/ceph/mds_client.c
5374
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5376
atomic_dec(&st->blocked_requests);
fs/ceph/mds_client.c
5383
struct ceph_client_reset_state *st = &mdsc->reset_state;
fs/ceph/mds_client.c
5385
spin_lock(&st->lock);
fs/ceph/mds_client.c
5391
if (st->shutdown) {
fs/ceph/mds_client.c
5392
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5395
st->last_finish = jiffies;
fs/ceph/mds_client.c
5396
st->last_errno = ret;
fs/ceph/mds_client.c
5397
st->phase = CEPH_CLIENT_RESET_IDLE;
fs/ceph/mds_client.c
5399
st->failure_count++;
fs/ceph/mds_client.c
5401
st->success_count++;
fs/ceph/mds_client.c
5402
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5405
wake_up_all(&st->blocked_wq);
fs/ceph/mds_client.c
5414
struct ceph_client_reset_state *st = &mdsc->reset_state;
fs/ceph/mds_client.c
5422
spin_lock(&st->lock);
fs/ceph/mds_client.c
5423
strscpy(reason, st->last_reason, sizeof(reason));
fs/ceph/mds_client.c
5424
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5485
spin_lock(&st->lock);
fs/ceph/mds_client.c
5486
if (st->shutdown) {
fs/ceph/mds_client.c
5487
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5490
st->phase = CEPH_CLIENT_RESET_DRAINING;
fs/ceph/mds_client.c
5491
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5566
WRITE_ONCE(st->drain_timed_out, true);
fs/ceph/mds_client.c
5599
WRITE_ONCE(st->drain_timed_out, true);
fs/ceph/mds_client.c
5607
spin_lock(&st->lock);
fs/ceph/mds_client.c
5608
if (st->shutdown) {
fs/ceph/mds_client.c
5609
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5612
st->phase = CEPH_CLIENT_RESET_TEARDOWN;
fs/ceph/mds_client.c
5613
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5710
spin_lock(&st->lock);
fs/ceph/mds_client.c
5711
st->sessions_reset = torn_down;
fs/ceph/mds_client.c
5712
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5728
struct ceph_client_reset_state *st = &mdsc->reset_state;
fs/ceph/mds_client.c
5741
spin_lock(&st->lock);
fs/ceph/mds_client.c
5742
if (st->phase != CEPH_CLIENT_RESET_IDLE) {
fs/ceph/mds_client.c
5743
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5747
st->phase = CEPH_CLIENT_RESET_QUIESCING;
fs/ceph/mds_client.c
5748
st->last_start = jiffies;
fs/ceph/mds_client.c
5749
st->last_errno = 0;
fs/ceph/mds_client.c
5750
st->drain_timed_out = false;
fs/ceph/mds_client.c
5751
st->sessions_reset = 0;
fs/ceph/mds_client.c
5752
st->trigger_count++;
fs/ceph/mds_client.c
5753
strscpy(st->last_reason, msg, sizeof(st->last_reason));
fs/ceph/mds_client.c
5754
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5757
spin_lock(&st->lock);
fs/ceph/mds_client.c
5758
st->phase = CEPH_CLIENT_RESET_IDLE;
fs/ceph/mds_client.c
5759
st->last_errno = -EALREADY;
fs/ceph/mds_client.c
5760
st->last_finish = jiffies;
fs/ceph/mds_client.c
5761
st->failure_count++;
fs/ceph/mds_client.c
5762
spin_unlock(&st->lock);
fs/ceph/mds_client.c
5763
wake_up_all(&st->blocked_wq);
fs/ceph/mds_client.h
121
static inline bool ceph_reset_is_idle(struct ceph_client_reset_state *st)
fs/ceph/mds_client.h
123
return READ_ONCE(st->phase) == CEPH_CLIENT_RESET_IDLE;
fs/ceph/super.c
107
buf->f_files = le64_to_cpu(st.num_objects);
fs/ceph/super.c
63
struct ceph_statfs st;
fs/ceph/super.c
74
err = ceph_monc_do_statfs(monc, data_pool, &st);
fs/ceph/super.c
94
buf->f_blocks = le64_to_cpu(st.kb) >> (CEPH_BLOCK_SHIFT-10);
fs/ceph/super.c
95
buf->f_bfree = le64_to_cpu(st.kb_avail) >> (CEPH_BLOCK_SHIFT-10);
fs/ceph/super.c
96
buf->f_bavail = le64_to_cpu(st.kb_avail) >> (CEPH_BLOCK_SHIFT-10);
fs/fuse/inode.c
668
convert_fuse_statfs(buf, &outarg.st);
fs/gfs2/rgrp.c
1927
struct gfs2_lkstats *st;
fs/gfs2/rgrp.c
1937
st = &per_cpu_ptr(sdp->sd_lkstats, cpu)->lkstats[LM_TYPE_RGRP];
fs/gfs2/rgrp.c
1938
if (st->stats[GFS2_LKS_SRTTB]) {
fs/gfs2/rgrp.c
1939
a_srttb += st->stats[GFS2_LKS_SRTTB];
fs/gfs2/rgrp.c
1943
st = &this_cpu_ptr(sdp->sd_lkstats)->lkstats[LM_TYPE_RGRP];
fs/gfs2/rgrp.c
1946
r_dcount = st->stats[GFS2_LKS_DCOUNT];
fs/gfs2/rgrp.c
1947
var = st->stats[GFS2_LKS_SRTTVARB] +
fs/hostfs/hostfs_kern.c
500
static int hostfs_inode_update(struct inode *ino, const struct hostfs_stat *st)
fs/hostfs/hostfs_kern.c
502
set_nlink(ino, st->nlink);
fs/hostfs/hostfs_kern.c
503
i_uid_write(ino, st->uid);
fs/hostfs/hostfs_kern.c
504
i_gid_write(ino, st->gid);
fs/hostfs/hostfs_kern.c
506
st->atime.tv_sec,
fs/hostfs/hostfs_kern.c
507
st->atime.tv_nsec,
fs/hostfs/hostfs_kern.c
510
st->mtime.tv_sec,
fs/hostfs/hostfs_kern.c
511
st->mtime.tv_nsec,
fs/hostfs/hostfs_kern.c
513
inode_set_ctime(ino, st->ctime.tv_sec, st->ctime.tv_nsec);
fs/hostfs/hostfs_kern.c
514
ino->i_size = st->size;
fs/hostfs/hostfs_kern.c
515
ino->i_blocks = st->blocks;
fs/hostfs/hostfs_kern.c
521
struct hostfs_stat *st = data;
fs/hostfs/hostfs_kern.c
525
rdev = MKDEV(st->rdev.maj, st->rdev.min);
fs/hostfs/hostfs_kern.c
526
dev = MKDEV(st->dev.maj, st->dev.min);
fs/hostfs/hostfs_kern.c
528
switch (st->mode & S_IFMT) {
fs/hostfs/hostfs_kern.c
540
init_special_inode(ino, st->mode & S_IFMT, rdev);
fs/hostfs/hostfs_kern.c
553
HOSTFS_I(ino)->btime = st->btime;
fs/hostfs/hostfs_kern.c
554
ino->i_ino = st->ino;
fs/hostfs/hostfs_kern.c
555
ino->i_mode = st->mode;
fs/hostfs/hostfs_kern.c
556
return hostfs_inode_update(ino, st);
fs/hostfs/hostfs_kern.c
561
const struct hostfs_stat *st = data;
fs/hostfs/hostfs_kern.c
562
dev_t dev = MKDEV(st->dev.maj, st->dev.min);
fs/hostfs/hostfs_kern.c
564
return inode->i_ino == st->ino && HOSTFS_I(inode)->dev == dev &&
fs/hostfs/hostfs_kern.c
565
(inode->i_mode & S_IFMT) == (st->mode & S_IFMT) &&
fs/hostfs/hostfs_kern.c
566
HOSTFS_I(inode)->btime.tv_sec == st->btime.tv_sec &&
fs/hostfs/hostfs_kern.c
567
HOSTFS_I(inode)->btime.tv_nsec == st->btime.tv_nsec;
fs/hostfs/hostfs_kern.c
573
struct hostfs_stat st;
fs/hostfs/hostfs_kern.c
574
int err = stat_file(name, &st, -1);
fs/hostfs/hostfs_kern.c
579
inode = iget5_locked(sb, st.ino, hostfs_inode_test, hostfs_inode_set,
fs/hostfs/hostfs_kern.c
580
&st);
fs/hostfs/hostfs_kern.c
588
hostfs_inode_update(inode, &st);
fs/hostfs/hostfs_user.c
207
struct hostfs_stat st;
fs/hostfs/hostfs_user.c
251
err = stat_file(file, &st, fd);
fs/hostfs/hostfs_user.c
255
times[0].tv_sec = st.atime.tv_sec;
fs/hostfs/hostfs_user.c
256
times[0].tv_usec = st.atime.tv_nsec / 1000;
fs/hostfs/hostfs_user.c
257
times[1].tv_sec = st.mtime.tv_sec;
fs/hostfs/hostfs_user.c
258
times[1].tv_usec = st.mtime.tv_nsec / 1000;
fs/hostfs/hostfs_user.c
279
err = stat_file(file, &st, fd);
fs/hostfs/hostfs_user.c
280
attrs->ia_atime = st.atime;
fs/hostfs/hostfs_user.c
281
attrs->ia_mtime = st.mtime;
fs/nfsd/nfs4proc.c
1229
struct nfs4_stid *st = NULL;
fs/nfsd/nfs4proc.c
1249
flags, NULL, &st);
fs/nfsd/nfs4proc.c
1256
if (st->sc_type & SC_TYPE_DELEG) {
fs/nfsd/nfs4proc.c
1257
struct nfs4_delegation *dp = delegstateid(st);
fs/nfsd/nfs4proc.c
1266
if (st)
fs/nfsd/nfs4proc.c
1267
nfs4_put_stid(st);
fs/nfsd/nfs4state.c
3026
static int nfs4_show_open(struct seq_file *s, struct nfs4_stid *st)
fs/nfsd/nfs4state.c
3034
ols = openlockstateid(st);
fs/nfsd/nfs4state.c
3036
nf = st->sc_file;
fs/nfsd/nfs4state.c
3039
nfs4_show_stateid(s, &st->sc_stateid);
fs/nfsd/nfs4state.c
3065
if (st->sc_status & SC_STATUS_ADMIN_REVOKED)
fs/nfsd/nfs4state.c
3071
static int nfs4_show_lock(struct seq_file *s, struct nfs4_stid *st)
fs/nfsd/nfs4state.c
3078
ols = openlockstateid(st);
fs/nfsd/nfs4state.c
3080
nf = st->sc_file;
fs/nfsd/nfs4state.c
3083
nfs4_show_stateid(s, &st->sc_stateid);
fs/nfsd/nfs4state.c
3103
if (st->sc_status & SC_STATUS_ADMIN_REVOKED)
fs/nfsd/nfs4state.c
3125
static int nfs4_show_deleg(struct seq_file *s, struct nfs4_stid *st)
fs/nfsd/nfs4state.c
3131
ds = delegstateid(st);
fs/nfsd/nfs4state.c
3132
nf = st->sc_file;
fs/nfsd/nfs4state.c
3135
nfs4_show_stateid(s, &st->sc_stateid);
fs/nfsd/nfs4state.c
3151
if (st->sc_status & SC_STATUS_ADMIN_REVOKED)
fs/nfsd/nfs4state.c
3157
static int nfs4_show_layout(struct seq_file *s, struct nfs4_stid *st)
fs/nfsd/nfs4state.c
3162
ls = container_of(st, struct nfs4_layout_stateid, ls_stid);
fs/nfsd/nfs4state.c
3165
nfs4_show_stateid(s, &st->sc_stateid);
fs/nfsd/nfs4state.c
3179
if (st->sc_status & SC_STATUS_ADMIN_REVOKED)
fs/nfsd/nfs4state.c
3188
struct nfs4_stid *st = v;
fs/nfsd/nfs4state.c
3190
switch (st->sc_type) {
fs/nfsd/nfs4state.c
3192
return nfs4_show_open(s, st);
fs/nfsd/nfs4state.c
3194
return nfs4_show_lock(s, st);
fs/nfsd/nfs4state.c
3196
return nfs4_show_deleg(s, st);
fs/nfsd/nfs4state.c
3198
return nfs4_show_layout(s, st);
fs/nfsd/nfs4state.c
5201
struct nfs4_stid *st;
fs/nfsd/nfs4state.c
5204
st = find_stateid_locked(cl, stid);
fs/nfsd/nfs4state.c
5205
if (st)
fs/nfsd/nfs4state.c
5206
nfsd4_drop_revoked_stid(st);
fs/nfsd/nfs4state.c
6065
struct nfs4_ol_stateid *st;
fs/nfsd/nfs4state.c
6103
list_for_each_entry(st, &fp->fi_stateids, st_perfile) {
fs/nfsd/nfs4state.c
6104
if (st->st_openstp == NULL /* it's an open */ &&
fs/nfsd/nfs4state.c
6105
access_permit_write(st) &&
fs/nfsd/nfs4state.c
6106
st->st_stid.sc_client != clp) {
fs/nfsd/nfs4state.c
717
struct nfs4_ol_stateid *st;
fs/nfsd/nfs4state.c
724
list_for_each_entry(st, &fp->fi_stateids, st_perfile) {
fs/nfsd/nfs4state.c
726
if (st->st_openstp)
fs/nfsd/nfs4state.c
728
if (st == stp && new_stp)
fs/nfsd/nfs4state.c
731
bmap = share_access ? st->st_deny_bmap : st->st_access_bmap;
fs/nfsd/nfs4state.c
734
clp = st->st_stid.sc_client;
fs/nfsd/nfs4state.c
7482
__be32 manage_cpntf_state(struct nfsd_net *nn, stateid_t *st,
fs/nfsd/nfs4state.c
7489
if (st->si_opaque.so_clid.cl_id != nn->s2s_cp_cl_id)
fs/nfsd/nfs4state.c
7492
cps_t = idr_find(&nn->s2s_cp_stateids, st->si_opaque.so_id);
fs/nfsd/nfs4state.c
7514
static __be32 find_cpntf_state(struct nfsd_net *nn, stateid_t *st,
fs/nfsd/nfs4state.c
7521
status = manage_cpntf_state(nn, st, NULL, &cps);
fs/nfsd/state.h
855
extern __be32 manage_cpntf_state(struct nfsd_net *nn, stateid_t *st,
fs/ntfs3/file.c
343
u32 st = folio_pos(folio) < from ?
fs/ntfs3/file.c
348
folio_zero_segment(folio, st, folio_size(folio));
fs/ocfs2/cluster/masklog.h
174
#define mlog_errno(st) ({ \
fs/ocfs2/cluster/masklog.h
175
int _st = (st); \
fs/ocfs2/dlm/dlmapi.h
72
#define dlm_error(st) do { \
fs/ocfs2/dlm/dlmapi.h
73
if ((st) != DLM_RECOVERING && \
fs/ocfs2/dlm/dlmapi.h
74
(st) != DLM_MIGRATING && \
fs/ocfs2/dlm/dlmapi.h
75
(st) != DLM_FORWARD) \
fs/ocfs2/dlm/dlmapi.h
76
mlog(ML_ERROR, "dlm status = %s\n", dlm_errname((st))); \
fs/ocfs2/dlm/dlmrecovery.c
239
char *st = "unknown";
fs/ocfs2/dlm/dlmrecovery.c
242
st = "init";
fs/ocfs2/dlm/dlmrecovery.c
245
st = "requesting";
fs/ocfs2/dlm/dlmrecovery.c
248
st = "dead";
fs/ocfs2/dlm/dlmrecovery.c
251
st = "receiving";
fs/ocfs2/dlm/dlmrecovery.c
2526
static void dlm_reco_unlock_ast(void *astdata, enum dlm_status st)
fs/ocfs2/dlm/dlmrecovery.c
254
st = "requested";
fs/ocfs2/dlm/dlmrecovery.c
257
st = "done";
fs/ocfs2/dlm/dlmrecovery.c
260
st = "finalize-sent";
fs/ocfs2/dlm/dlmrecovery.c
263
st = "bad";
fs/ocfs2/dlm/dlmrecovery.c
267
dlm->name, ndata->node_num, st);
fs/ocfs2/dlm/dlmrecovery.c
73
static void dlm_reco_unlock_ast(void *astdata, enum dlm_status st);
fs/smb/client/netmisc.c
166
SMB_TIME *st = (SMB_TIME *)&time;
fs/smb/client/netmisc.c
171
sec = 2 * st->TwoSeconds;
fs/smb/client/netmisc.c
172
min = st->Minutes;
fs/smb/client/netmisc.c
176
sec += 60 * 60 * st->Hours;
fs/smb/client/netmisc.c
177
if (st->Hours > 24)
fs/smb/client/netmisc.c
178
cifs_dbg(VFS, "Invalid hours %d\n", st->Hours);
fs/smb/server/misc.c
213
int get_nlink(struct kstat *st)
fs/smb/server/misc.c
217
nlink = st->nlink;
fs/smb/server/misc.c
218
if (S_ISDIR(st->mode))
fs/smb/server/misc.h
22
int get_nlink(struct kstat *st);
fs/smb/server/transport_rdma.c
224
struct smb_direct_transport *st = SMBD_TRANS(t);
fs/smb/server/transport_rdma.c
225
struct smbdirect_socket *sc = st->socket;
fs/smb/server/transport_rdma.c
245
struct smb_direct_transport *st = SMBD_TRANS(t);
fs/smb/server/transport_rdma.c
246
struct smbdirect_socket *sc = st->socket;
fs/smb/server/transport_rdma.c
260
struct smb_direct_transport *st = SMBD_TRANS(t);
fs/smb/server/transport_rdma.c
261
struct smbdirect_socket *sc = st->socket;
fs/smb/server/transport_rdma.c
272
struct smb_direct_transport *st = SMBD_TRANS(t);
fs/smb/server/transport_rdma.c
273
struct smbdirect_socket *sc = st->socket;
fs/smb/server/transport_rdma.c
281
struct smb_direct_transport *st = SMBD_TRANS(t);
fs/smb/server/transport_rdma.c
282
struct smbdirect_socket *sc = st->socket;
fs/smb/server/transport_rdma.c
286
free_transport(st);
fs/smb/server/transport_rdma.c
291
struct smb_direct_transport *st = SMBD_TRANS(t);
fs/smb/server/transport_rdma.c
292
struct smbdirect_socket *sc = st->socket;
fs/stat.c
463
# define INIT_STRUCT_STAT_PADDING(st) memset(&st, 0, sizeof(st))
fs/stat.c
613
# define INIT_STRUCT_STAT64_PADDING(st) memset(&st, 0, sizeof(st))
fs/statfs.c
106
error = vfs_statfs(&path, st);
fs/statfs.c
116
int fd_statfs(int fd, struct kstatfs *st)
fs/statfs.c
122
return vfs_statfs(&fd_file(f)->f_path, st);
fs/statfs.c
125
static int do_statfs_native(struct kstatfs *st, struct statfs __user *p)
fs/statfs.c
129
if (sizeof(buf) == sizeof(*st))
fs/statfs.c
130
memcpy(&buf, st, sizeof(*st));
fs/statfs.c
134
if ((st->f_blocks | st->f_bfree | st->f_bavail |
fs/statfs.c
135
st->f_bsize | st->f_frsize) &
fs/statfs.c
142
if (st->f_files != -1 &&
fs/statfs.c
143
(st->f_files & 0xffffffff00000000ULL))
fs/statfs.c
145
if (st->f_ffree != -1 &&
fs/statfs.c
146
(st->f_ffree & 0xffffffff00000000ULL))
fs/statfs.c
150
buf.f_type = st->f_type;
fs/statfs.c
151
buf.f_bsize = st->f_bsize;
fs/statfs.c
152
buf.f_blocks = st->f_blocks;
fs/statfs.c
153
buf.f_bfree = st->f_bfree;
fs/statfs.c
154
buf.f_bavail = st->f_bavail;
fs/statfs.c
155
buf.f_files = st->f_files;
fs/statfs.c
156
buf.f_ffree = st->f_ffree;
fs/statfs.c
157
buf.f_fsid = st->f_fsid;
fs/statfs.c
158
buf.f_namelen = st->f_namelen;
fs/statfs.c
159
buf.f_frsize = st->f_frsize;
fs/statfs.c
160
buf.f_flags = st->f_flags;
fs/statfs.c
167
static int do_statfs64(struct kstatfs *st, struct statfs64 __user *p)
fs/statfs.c
170
if (sizeof(buf) == sizeof(*st))
fs/statfs.c
171
memcpy(&buf, st, sizeof(*st));
fs/statfs.c
174
buf.f_type = st->f_type;
fs/statfs.c
175
buf.f_bsize = st->f_bsize;
fs/statfs.c
176
buf.f_blocks = st->f_blocks;
fs/statfs.c
177
buf.f_bfree = st->f_bfree;
fs/statfs.c
178
buf.f_bavail = st->f_bavail;
fs/statfs.c
179
buf.f_files = st->f_files;
fs/statfs.c
180
buf.f_ffree = st->f_ffree;
fs/statfs.c
181
buf.f_fsid = st->f_fsid;
fs/statfs.c
182
buf.f_namelen = st->f_namelen;
fs/statfs.c
183
buf.f_frsize = st->f_frsize;
fs/statfs.c
184
buf.f_flags = st->f_flags;
fs/statfs.c
193
struct kstatfs st;
fs/statfs.c
194
int error = user_statfs(pathname, &st);
fs/statfs.c
196
error = do_statfs_native(&st, buf);
fs/statfs.c
202
struct kstatfs st;
fs/statfs.c
206
error = user_statfs(pathname, &st);
fs/statfs.c
208
error = do_statfs64(&st, buf);
fs/statfs.c
214
struct kstatfs st;
fs/statfs.c
215
int error = fd_statfs(fd, &st);
fs/statfs.c
217
error = do_statfs_native(&st, buf);
fs/statfs.c
223
struct kstatfs st;
fs/statfs.c
229
error = fd_statfs(fd, &st);
fs/statfs.c
231
error = do_statfs64(&st, buf);
fs/statfs.c
74
struct kstatfs st;
fs/statfs.c
77
error = statfs_by_dentry(dentry, &st);
fs/statfs.c
81
*fsid = st.f_fsid;
fs/statfs.c
97
int user_statfs(const char __user *pathname, struct kstatfs *st)
fs/udf/partition.c
111
struct sparingTable *st = NULL;
fs/udf/partition.c
123
st = (struct sparingTable *)
fs/udf/partition.c
129
if (st) {
fs/udf/partition.c
130
for (i = 0; i < le16_to_cpu(st->reallocationTableLen); i++) {
fs/udf/partition.c
131
struct sparingEntry *entry = &st->mapEntry[i];
fs/udf/partition.c
150
struct sparingTable *st = NULL;
fs/udf/partition.c
170
st = (struct sparingTable *)
fs/udf/partition.c
175
if (!st) {
fs/udf/partition.c
181
le16_to_cpu(st->reallocationTableLen);
fs/udf/partition.c
183
struct sparingEntry *entry = &st->mapEntry[k];
fs/udf/partition.c
193
st = (struct sparingTable *)
fs/udf/partition.c
201
udf_update_tag((char *)st, len);
fs/udf/partition.c
224
struct sparingEntry *entry = &st->mapEntry[l];
fs/udf/partition.c
235
st = (struct sparingTable *)bh->b_data;
fs/udf/partition.c
236
mapEntry = st->mapEntry[l];
fs/udf/partition.c
239
memmove(&st->mapEntry[k + 1],
fs/udf/partition.c
240
&st->mapEntry[k],
fs/udf/partition.c
243
st->mapEntry[k] = mapEntry;
fs/udf/partition.c
244
udf_update_tag((char *)st,
fs/udf/partition.c
252
st->mapEntry[k].mappedLocation) +
fs/udf/super.c
1398
struct sparingTable *st;
fs/udf/super.c
1430
st = (struct sparingTable *)bh->b_data;
fs/udf/super.c
1432
strncmp(st->sparingIdent.ident, UDF_ID_SPARING,
fs/udf/super.c
1434
struct_size(st, mapEntry,
fs/udf/super.c
1435
le16_to_cpu(st->reallocationTableLen)) >
fs/xfs/xfs_ioctl.c
1248
struct kstat st;
fs/xfs/xfs_ioctl.c
1251
error = vfs_getattr(&filp->f_path, &st, STATX_DIOALIGN, 0);
fs/xfs/xfs_ioctl.c
1260
da.d_mem = roundup(st.dio_mem_align, sizeof(void *));
fs/xfs/xfs_ioctl.c
1261
da.d_miniosz = st.dio_offset_align;
fs/xfs/xfs_super.c
866
struct kstatfs *st)
fs/xfs/xfs_super.c
872
st->f_bfree = max(0LL,
fs/xfs/xfs_super.c
879
st->f_blocks = mp->m_sb.sb_dblocks - xfs_internal_log_size(mp);
fs/xfs/xfs_super.c
890
struct kstatfs *st)
fs/xfs/xfs_super.c
892
st->f_bfree = xfs_rtbxlen_to_blen(mp,
fs/xfs/xfs_super.c
894
st->f_blocks = mp->m_sb.sb_rblocks - xfs_rtbxlen_to_blen(mp,
fs/xfs/xfs_super.c
901
struct kstatfs *st)
fs/xfs/xfs_super.c
905
uint64_t fakeinos = XFS_FSB_TO_INO(mp, st->f_bfree);
fs/xfs/xfs_super.c
907
st->f_files = min(icount + fakeinos, (uint64_t)XFS_MAXINUMBER);
fs/xfs/xfs_super.c
909
st->f_files = min_t(typeof(st->f_files), st->f_files,
fs/xfs/xfs_super.c
913
st->f_files = max_t(typeof(st->f_files), st->f_files,
fs/xfs/xfs_super.c
917
st->f_ffree = max_t(int64_t, 0, st->f_files - (icount - ifree));
fs/xfs/xfs_super.c
923
struct kstatfs *st)
fs/xfs/xfs_super.c
934
st->f_type = XFS_SUPER_MAGIC;
fs/xfs/xfs_super.c
935
st->f_namelen = MAXNAMELEN - 1;
fs/xfs/xfs_super.c
936
st->f_bsize = mp->m_sb.sb_blocksize;
fs/xfs/xfs_super.c
937
st->f_fsid = u64_to_fsid(huge_encode_dev(mp->m_ddev_targp->bt_dev));
fs/xfs/xfs_super.c
939
xfs_statfs_data(mp, st);
fs/xfs/xfs_super.c
940
xfs_statfs_inodes(mp, st);
fs/xfs/xfs_super.c
944
xfs_statfs_rt(mp, st);
fs/xfs/xfs_super.c
949
xfs_qm_statvfs(ip, st);
fs/xfs/xfs_super.c
955
st->f_bavail = st->f_bfree;
include/asm-generic/vmlinux.lds.h
120
.text.st[_0-9A-Zb-z]* .text.st .text.st.* \
include/drm/drm_cache.h
41
void drm_clflush_sg(struct sg_table *st);
include/drm/intel/intel-gtt.h
27
void intel_gmch_gtt_insert_sg_entries(struct sg_table *st,
include/drm/ttm/ttm_resource.h
369
struct sg_table *st;
include/drm/ttm/ttm_resource.h
509
struct sg_table *st,
include/linux/bpf_verifier.h
1174
int bpf_update_branch_counts(struct bpf_verifier_env *env, struct bpf_verifier_state *st);
include/linux/bpf_verifier.h
1189
struct bpf_verifier_state *st);
include/linux/bpf_verifier.h
1190
void bpf_clear_singular_ids(struct bpf_verifier_env *env, struct bpf_verifier_state *st);
include/linux/bpf_verifier.h
1209
static inline u32 bpf_frame_insn_idx(struct bpf_verifier_state *st, u32 frame)
include/linux/bpf_verifier.h
1211
return frame == st->curframe
include/linux/bpf_verifier.h
1212
? st->insn_idx
include/linux/bpf_verifier.h
1213
: st->frame[frame + 1]->callsite;
include/linux/bpf_verifier.h
1524
int bpf_live_stack_query_init(struct bpf_verifier_env *env, struct bpf_verifier_state *st);
include/linux/ceph/ceph_fs.h
203
struct ceph_statfs st;
include/linux/ceph/mon_client.h
65
struct ceph_statfs *st;
include/linux/dmaengine.h
1507
dma_set_tx_state(struct dma_tx_state *st, dma_cookie_t last, dma_cookie_t used, u32 residue)
include/linux/dmaengine.h
1509
if (!st)
include/linux/dmaengine.h
1512
st->last = last;
include/linux/dmaengine.h
1513
st->used = used;
include/linux/dmaengine.h
1514
st->residue = residue;
include/linux/hid-sensor-hub.h
278
struct hid_sensor_common *st,
include/linux/hid-sensor-hub.h
281
int hid_sensor_write_raw_hyst_value(struct hid_sensor_common *st,
include/linux/hid-sensor-hub.h
283
int hid_sensor_write_raw_hyst_rel_value(struct hid_sensor_common *st, int val1,
include/linux/hid-sensor-hub.h
285
int hid_sensor_read_raw_hyst_value(struct hid_sensor_common *st,
include/linux/hid-sensor-hub.h
287
int hid_sensor_read_raw_hyst_rel_value(struct hid_sensor_common *st,
include/linux/hid-sensor-hub.h
289
int hid_sensor_write_samp_freq_value(struct hid_sensor_common *st,
include/linux/hid-sensor-hub.h
291
int hid_sensor_read_samp_freq_value(struct hid_sensor_common *st,
include/linux/hid-sensor-hub.h
301
s32 hid_sensor_read_poll_value(struct hid_sensor_common *st);
include/linux/hid-sensor-hub.h
303
int64_t hid_sensor_convert_timestamp(struct hid_sensor_common *st,
include/linux/hid-sensor-hub.h
305
bool hid_sensor_batch_mode_supported(struct hid_sensor_common *st);
include/linux/hid-sensor-hub.h
306
int hid_sensor_set_report_latency(struct hid_sensor_common *st, int latency);
include/linux/hid-sensor-hub.h
307
int hid_sensor_get_report_latency(struct hid_sensor_common *st);
include/linux/iio/common/cros_ec_sensors_core.h
107
int cros_ec_motion_send_host_cmd(struct cros_ec_sensors_core_state *st,
include/linux/iio/common/cros_ec_sensors_core.h
110
int cros_ec_sensors_core_read(struct cros_ec_sensors_core_state *st,
include/linux/iio/common/cros_ec_sensors_core.h
121
int cros_ec_sensors_core_write(struct cros_ec_sensors_core_state *st,
include/linux/mlx5/driver.h
773
struct mlx5_st *st;
include/linux/mlx5/mlx5_ifc.h
3655
u8 st[0x8];
include/linux/mlx5/mlx5_ifc.h
4680
u8 st[0x4];
include/linux/mlx5/mlx5_ifc.h
4834
u8 st[0x4];
include/linux/mlx5/mlx5_ifc_fpga.h
187
u8 st[0x4];
include/linux/ptdump.h
14
void (*note_page_pte)(struct ptdump_state *st, unsigned long addr, pte_t pte);
include/linux/ptdump.h
15
void (*note_page_pmd)(struct ptdump_state *st, unsigned long addr, pmd_t pmd);
include/linux/ptdump.h
16
void (*note_page_pud)(struct ptdump_state *st, unsigned long addr, pud_t pud);
include/linux/ptdump.h
17
void (*note_page_p4d)(struct ptdump_state *st, unsigned long addr, p4d_t p4d);
include/linux/ptdump.h
18
void (*note_page_pgd)(struct ptdump_state *st, unsigned long addr, pgd_t pgd);
include/linux/ptdump.h
19
void (*note_page_flush)(struct ptdump_state *st);
include/linux/ptdump.h
20
void (*effective_prot_pte)(struct ptdump_state *st, pte_t pte);
include/linux/ptdump.h
21
void (*effective_prot_pmd)(struct ptdump_state *st, pmd_t pmd);
include/linux/ptdump.h
22
void (*effective_prot_pud)(struct ptdump_state *st, pud_t pud);
include/linux/ptdump.h
23
void (*effective_prot_p4d)(struct ptdump_state *st, p4d_t p4d);
include/linux/ptdump.h
24
void (*effective_prot_pgd)(struct ptdump_state *st, pgd_t pgd);
include/linux/ptdump.h
31
void ptdump_walk_pgd(struct ptdump_state *st, struct mm_struct *mm, pgd_t *pgd);
include/linux/sched/cputime.h
48
extern void task_cputime_adjusted(struct task_struct *p, u64 *ut, u64 *st);
include/linux/sched/cputime.h
49
extern void thread_group_cputime_adjusted(struct task_struct *p, u64 *ut, u64 *st);
include/linux/sched/cputime.h
51
u64 *ut, u64 *st);
include/linux/skbuff.h
1496
unsigned int to, struct skb_seq_state *st);
include/linux/skbuff.h
1498
struct skb_seq_state *st);
include/linux/skbuff.h
1499
void skb_abort_seq_read(struct skb_seq_state *st);
include/linux/skbuff.h
1500
int skb_copy_seq_read(struct skb_seq_state *st, int offset, void *to, int len);
include/linux/sunrpc/stats.h
73
const struct svc_stat *st) {}
include/linux/usb/musb.h
44
#define MUSB_EP_FIFO(ep, st, m, pkt) \
include/linux/usb/musb.h
47
.style = st, \
include/linux/usb/musb.h
52
#define MUSB_EP_FIFO_SINGLE(ep, st, pkt) \
include/linux/usb/musb.h
53
MUSB_EP_FIFO(ep, st, BUF_SINGLE, pkt)
include/linux/usb/musb.h
55
#define MUSB_EP_FIFO_DOUBLE(ep, st, pkt) \
include/linux/usb/musb.h
56
MUSB_EP_FIFO(ep, st, BUF_DOUBLE, pkt)
include/net/9p/client.h
386
struct p9_wstat *st);
include/net/cfg802154.h
135
wpan_phy_supported_bool(bool b, enum nl802154_supported_bool_states st)
include/net/cfg802154.h
137
switch (st) {
include/net/gen_stats.h
66
int gnet_stats_copy_app(struct gnet_dump *d, void *st, int len);
include/net/mac80211.h
7343
void *priv_sta, struct ieee80211_tx_status *st);
include/soc/fsl/qman.h
461
struct qm_fqd_stashing *st = &fqd->context_a.stashing;
include/soc/fsl/qman.h
463
st->cl = ((as & QM_FQD_XS_MASK) << QM_FQD_AS_OFF) |
include/uapi/linux/dvb/frontend.h
901
struct dtv_fe_stats st;
include/uapi/linux/fuse.h
857
struct fuse_kstatfs st;
init/initramfs.c
343
struct kstat st;
init/initramfs.c
345
if (!init_stat(path, &st, AT_SYMLINK_NOFOLLOW) &&
init/initramfs.c
346
(st.mode ^ fmode) & S_IFMT) {
init/initramfs.c
347
if (S_ISDIR(st.mode))
init/initramfs_test.c
127
KUNIT_EXPECT_EQ(test, init_stat(c[0].fname, &st, 0), 0);
init/initramfs_test.c
128
KUNIT_EXPECT_TRUE(test, S_ISREG(st.mode));
init/initramfs_test.c
129
KUNIT_EXPECT_TRUE(test, uid_eq(st.uid, KUIDT_INIT(c[0].uid)));
init/initramfs_test.c
130
KUNIT_EXPECT_TRUE(test, gid_eq(st.gid, KGIDT_INIT(c[0].gid)));
init/initramfs_test.c
131
KUNIT_EXPECT_EQ(test, st.nlink, 1);
init/initramfs_test.c
133
KUNIT_EXPECT_EQ(test, st.mtime.tv_sec, c[0].mtime);
init/initramfs_test.c
135
KUNIT_EXPECT_GE(test, st.mtime.tv_sec, ts_before.tv_sec);
init/initramfs_test.c
136
KUNIT_EXPECT_LE(test, st.mtime.tv_sec, ts_after.tv_sec);
init/initramfs_test.c
138
KUNIT_EXPECT_EQ(test, st.blocks, c[0].filesize);
init/initramfs_test.c
140
KUNIT_EXPECT_EQ(test, init_stat(c[1].fname, &st, 0), 0);
init/initramfs_test.c
141
KUNIT_EXPECT_TRUE(test, S_ISDIR(st.mode));
init/initramfs_test.c
143
KUNIT_EXPECT_EQ(test, st.mtime.tv_sec, c[1].mtime);
init/initramfs_test.c
145
KUNIT_EXPECT_GE(test, st.mtime.tv_sec, ts_before.tv_sec);
init/initramfs_test.c
146
KUNIT_EXPECT_LE(test, st.mtime.tv_sec, ts_after.tv_sec);
init/initramfs_test.c
82
struct kstat st = {};
kernel/bpf/backtrack.c
105
static struct bpf_jmp_history_entry *get_jmp_hist_entry(struct bpf_verifier_state *st,
kernel/bpf/backtrack.c
108
if (hist_end > 0 && st->jmp_history[hist_end - 1].idx == insn_idx)
kernel/bpf/backtrack.c
109
return &st->jmp_history[hist_end - 1];
kernel/bpf/backtrack.c
657
struct bpf_verifier_state *st)
kernel/bpf/backtrack.c
665
st->curframe);
kernel/bpf/backtrack.c
674
for (st = st->parent; st; st = st->parent) {
kernel/bpf/backtrack.c
675
for (i = 0; i <= st->curframe; i++) {
kernel/bpf/backtrack.c
676
func = st->frame[i];
kernel/bpf/backtrack.c
795
struct bpf_verifier_state *st = starting_state;
kernel/bpf/backtrack.c
797
int first_idx = st->first_insn_idx;
kernel/bpf/backtrack.c
816
func = st->frame[bt->frame];
kernel/bpf/backtrack.c
831
u32 history = st->jmp_history_cnt;
kernel/bpf/backtrack.c
84
static int get_prev_insn_idx(struct bpf_verifier_state *st, int i,
kernel/bpf/backtrack.c
845
if (st->curframe == 0 &&
kernel/bpf/backtrack.c
846
st->frame[0]->subprogno > 0 &&
kernel/bpf/backtrack.c
847
st->frame[0]->callsite == BPF_MAIN_FUNC &&
kernel/bpf/backtrack.c
852
reg = &st->frame[0]->regs[i];
kernel/bpf/backtrack.c
863
st->frame[0]->subprogno, bt_reg_mask(bt), bt_stack_mask(bt));
kernel/bpf/backtrack.c
872
hist = get_jmp_hist_entry(st, history, i);
kernel/bpf/backtrack.c
889
i = get_prev_insn_idx(st, i, &history);
kernel/bpf/backtrack.c
89
if (i == st->first_insn_idx) {
kernel/bpf/backtrack.c
903
st = st->parent;
kernel/bpf/backtrack.c
904
if (!st)
kernel/bpf/backtrack.c
908
func = st->frame[fr];
kernel/bpf/backtrack.c
92
if (cnt == 1 && st->jmp_history[0].idx == i)
kernel/bpf/backtrack.c
96
if (cnt && st->jmp_history[cnt - 1].idx == i) {
kernel/bpf/backtrack.c
962
print_verifier_state(env, st, fr, true);
kernel/bpf/backtrack.c
97
i = st->jmp_history[cnt - 1].prev_idx;
kernel/bpf/backtrack.c
970
last_idx = st->last_insn_idx;
kernel/bpf/backtrack.c
971
first_idx = st->first_insn_idx;
kernel/bpf/cnum_defs.h
177
void FN(intersect_with_srange)(struct cnum_t *dst, st min, st max)
kernel/bpf/cnum_defs.h
28
struct cnum_t FN(from_srange)(st min, st max)
kernel/bpf/cnum_defs.h
71
st FN(smin)(struct cnum_t cnum)
kernel/bpf/cnum_defs.h
75
: min((st)cnum.base, (st)(cnum.base + cnum.size));
kernel/bpf/cnum_defs.h
78
st FN(smax)(struct cnum_t cnum)
kernel/bpf/cnum_defs.h
82
: max((st)cnum.base, (st)(cnum.base + cnum.size));
kernel/bpf/liveness.c
102
struct bpf_verifier_state *st,
kernel/bpf/liveness.c
109
subprog_start = env->subprog_info[st->frame[frameno]->subprogno].start;
kernel/bpf/liveness.c
110
callsite = frameno > 0 ? st->frame[frameno]->callsite : subprog_start;
kernel/bpf/liveness.c
339
int bpf_live_stack_query_init(struct bpf_verifier_env *env, struct bpf_verifier_state *st)
kernel/bpf/liveness.c
346
for (frame = 0; frame <= st->curframe; frame++) {
kernel/bpf/liveness.c
347
instance = lookup_instance(env, st, frame);
kernel/bpf/liveness.c
352
if (frame < st->curframe)
kernel/bpf/liveness.c
353
q->callsites[frame] = st->frame[frame + 1]->callsite;
kernel/bpf/liveness.c
355
q->curframe = st->curframe;
kernel/bpf/liveness.c
356
q->insn_idx = st->insn_idx;
kernel/bpf/states.c
1087
struct bpf_verifier_state *st;
kernel/bpf/states.c
1102
st = &backedge->state;
kernel/bpf/states.c
1103
err = propagate_precision(env, st->equal_state, st, &changed);
kernel/bpf/states.c
1213
static void mark_all_scalars_imprecise(struct bpf_verifier_env *env, struct bpf_verifier_state *st)
kernel/bpf/states.c
1219
for (i = 0; i <= st->curframe; i++) {
kernel/bpf/states.c
1220
func = st->frame[i];
kernel/bpf/states.c
160
static int maybe_enter_scc(struct bpf_verifier_env *env, struct bpf_verifier_state *st)
kernel/bpf/states.c
165
if (!compute_scc_callchain(env, st, callchain))
kernel/bpf/states.c
172
visit->entry_state = st;
kernel/bpf/states.c
185
static int maybe_exit_scc(struct bpf_verifier_env *env, struct bpf_verifier_state *st)
kernel/bpf/states.c
190
if (!compute_scc_callchain(env, st, callchain))
kernel/bpf/states.c
206
if (!st->speculative) {
kernel/bpf/states.c
213
if (visit->entry_state != st)
kernel/bpf/states.c
228
struct bpf_verifier_state *st,
kernel/bpf/states.c
234
if (!compute_scc_callchain(env, st, callchain)) {
kernel/bpf/states.c
236
st->insn_idx);
kernel/bpf/states.c
260
struct bpf_verifier_state *st)
kernel/bpf/states.c
265
if (!compute_scc_callchain(env, st, callchain))
kernel/bpf/states.c
273
int bpf_update_branch_counts(struct bpf_verifier_env *env, struct bpf_verifier_state *st)
kernel/bpf/states.c
279
while (st) {
kernel/bpf/states.c
280
u32 br = --st->branches;
kernel/bpf/states.c
288
err = maybe_exit_scc(env, st);
kernel/bpf/states.c
291
parent = st->parent;
kernel/bpf/states.c
292
parent_sl = state_parent_as_list(st);
kernel/bpf/states.c
295
st = parent;
kernel/bpf/states.c
34
static struct bpf_verifier_state_list *state_parent_as_list(struct bpf_verifier_state *st)
kernel/bpf/states.c
36
if (st->parent)
kernel/bpf/states.c
37
return container_of(st->parent, struct bpf_verifier_state_list, state);
kernel/bpf/states.c
399
struct bpf_func_state *st,
kernel/bpf/states.c
410
bpf_mark_reg_not_init(env, &st->regs[i]);
kernel/bpf/states.c
418
for (i = 0; i < st->allocated_stack / BPF_REG_SIZE; i++) {
kernel/bpf/states.c
42
struct bpf_verifier_state *st);
kernel/bpf/states.c
425
u8 stype = st->stack[i].slot_type[7];
kernel/bpf/states.c
445
struct bpf_reg_state *spill = &st->stack[i].spilled_ptr;
kernel/bpf/states.c
460
u8 *t = &st->stack[i].slot_type[j];
kernel/bpf/states.c
469
st->stack[i].slot_type[j] = STACK_POISON;
kernel/bpf/states.c
475
struct bpf_verifier_state *st)
kernel/bpf/states.c
479
err = bpf_live_stack_query_init(env, st);
kernel/bpf/states.c
482
for (i = 0; i <= st->curframe; i++) {
kernel/bpf/states.c
483
u32 ip = bpf_frame_insn_idx(st, i);
kernel/bpf/states.c
486
__clean_func_state(env, st->frame[i], live_regs, i);
kernel/bpf/states.c
75
struct bpf_verifier_state *st,
kernel/bpf/states.c
81
for (i = 0; i <= st->curframe; i++) {
kernel/bpf/states.c
82
insn_idx = bpf_frame_insn_idx(st, i);
kernel/bpf/states.c
87
} else if (i < st->curframe) {
kernel/bpf/syscall.c
2538
const struct bpf_prog_stats *st;
kernel/bpf/syscall.c
2542
st = per_cpu_ptr(prog->stats, cpu);
kernel/bpf/syscall.c
2544
start = u64_stats_fetch_begin(&st->syncp);
kernel/bpf/syscall.c
2545
tnsecs = u64_stats_read(&st->nsecs);
kernel/bpf/syscall.c
2546
tcnt = u64_stats_read(&st->cnt);
kernel/bpf/syscall.c
2547
tmisses = u64_stats_read(&st->misses);
kernel/bpf/syscall.c
2548
} while (u64_stats_fetch_retry(&st->syncp, start));
kernel/bpf/verifier.c
1042
struct bpf_reg_state *st = &slot->spilled_ptr;
kernel/bpf/verifier.c
1044
if (st->type & PTR_UNTRUSTED)
kernel/bpf/verifier.c
1047
if (i == 0 && !st->id)
kernel/bpf/verifier.c
1049
if (i != 0 && st->id)
kernel/bpf/verifier.c
1051
if (st->iter.btf != btf || st->iter.btf_id != btf_id)
kernel/bpf/verifier.c
1072
struct bpf_reg_state *st;
kernel/bpf/verifier.c
1084
st = &slot->spilled_ptr;
kernel/bpf/verifier.c
1086
__mark_reg_known_zero(st);
kernel/bpf/verifier.c
1087
st->type = PTR_TO_STACK; /* we don't have dedicated reg type */
kernel/bpf/verifier.c
1088
st->id = id;
kernel/bpf/verifier.c
1089
st->irq.kfunc_class = kfunc_class;
kernel/bpf/verifier.c
1103
struct bpf_reg_state *st;
kernel/bpf/verifier.c
1111
st = &slot->spilled_ptr;
kernel/bpf/verifier.c
1113
if (st->irq.kfunc_class != kfunc_class) {
kernel/bpf/verifier.c
1114
const char *flag_kfunc = st->irq.kfunc_class == IRQ_NATIVE_KFUNC ? "native" : "lock";
kernel/bpf/verifier.c
1122
err = release_irq_state(env->cur_state, st->id);
kernel/bpf/verifier.c
1139
bpf_mark_reg_not_init(env, st);
kernel/bpf/verifier.c
1176
struct bpf_reg_state *st;
kernel/bpf/verifier.c
1184
st = &slot->spilled_ptr;
kernel/bpf/verifier.c
1186
if (!st->id)
kernel/bpf/verifier.c
16953
struct bpf_verifier_state *st)
kernel/bpf/verifier.c
16961
bpf_for_each_reg_in_vstate(st, func, reg, ({
kernel/bpf/verifier.c
16969
bpf_for_each_reg_in_vstate(st, func, reg, ({
kernel/bpf/verifier.c
1716
err = bpf_copy_verifier_state(cur, &head->st);
kernel/bpf/verifier.c
1727
bpf_free_verifier_state(&head->st, false);
kernel/bpf/verifier.c
1764
err = bpf_copy_verifier_state(&elem->st, cur);
kernel/bpf/verifier.c
1767
elem->st.speculative |= speculative;
kernel/bpf/verifier.c
1773
if (elem->st.parent) {
kernel/bpf/verifier.c
1774
++elem->st.parent->branches;
kernel/bpf/verifier.c
1785
return &elem->st;
kernel/bpf/verifier.c
188
struct bpf_verifier_state st;
kernel/bpf/verifier.c
2299
elem->st.branches = 1;
kernel/bpf/verifier.c
2300
elem->st.in_sleepable = is_sleepable;
kernel/bpf/verifier.c
2308
elem->st.frame[0] = frame;
kernel/bpf/verifier.c
2309
return &elem->st;
kernel/bpf/verifier.c
7453
struct bpf_verifier_state *st;
kernel/bpf/verifier.c
7463
st = &sl->state;
kernel/bpf/verifier.c
7464
if (st->insn_idx == insn_idx && st->branches && same_callsites(st, cur) &&
kernel/bpf/verifier.c
7465
st->dfs_depth < cur->dfs_depth)
kernel/bpf/verifier.c
7466
return st;
kernel/bpf/verifier.c
950
struct bpf_reg_state *st = &slot->spilled_ptr;
kernel/bpf/verifier.c
952
__mark_reg_known_zero(st);
kernel/bpf/verifier.c
953
st->type = PTR_TO_STACK; /* we don't have dedicated reg type */
kernel/bpf/verifier.c
956
st->type |= MEM_RCU;
kernel/bpf/verifier.c
958
st->type |= PTR_UNTRUSTED;
kernel/bpf/verifier.c
960
st->id = i == 0 ? id : 0;
kernel/bpf/verifier.c
961
st->iter.btf = btf;
kernel/bpf/verifier.c
962
st->iter.btf_id = btf_id;
kernel/bpf/verifier.c
963
st->iter.state = BPF_ITER_STATE_ACTIVE;
kernel/bpf/verifier.c
964
st->iter.depth = 0;
kernel/bpf/verifier.c
987
struct bpf_reg_state *st = &slot->spilled_ptr;
kernel/bpf/verifier.c
990
WARN_ON_ONCE(release_reference(env, st->id));
kernel/bpf/verifier.c
992
bpf_mark_reg_not_init(env, st);
kernel/cpu.c
1001
struct cpuhp_cpu_state *st,
kernel/cpu.c
1004
__cpuhp_invoke_callback_range(bringup, cpu, st, target, true);
kernel/cpu.c
1007
static inline bool can_rollback_cpu(struct cpuhp_cpu_state *st)
kernel/cpu.c
1018
return st->state <= CPUHP_BRINGUP_CPU;
kernel/cpu.c
1021
static int cpuhp_up_callbacks(unsigned int cpu, struct cpuhp_cpu_state *st,
kernel/cpu.c
1024
enum cpuhp_state prev_state = st->state;
kernel/cpu.c
1027
ret = cpuhp_invoke_callback_range(true, cpu, st, target);
kernel/cpu.c
1030
ret, cpu, cpuhp_get_step(st->state)->name,
kernel/cpu.c
1031
st->state);
kernel/cpu.c
1033
cpuhp_reset_state(cpu, st, prev_state);
kernel/cpu.c
1034
if (can_rollback_cpu(st))
kernel/cpu.c
1035
WARN_ON(cpuhp_invoke_callback_range(false, cpu, st,
kernel/cpu.c
1046
struct cpuhp_cpu_state *st = this_cpu_ptr(&cpuhp_state);
kernel/cpu.c
1048
return st->should_run;
kernel/cpu.c
1067
struct cpuhp_cpu_state *st = this_cpu_ptr(&cpuhp_state);
kernel/cpu.c
1068
bool bringup = st->bringup;
kernel/cpu.c
1071
if (WARN_ON_ONCE(!st->should_run))
kernel/cpu.c
1088
if (st->single) {
kernel/cpu.c
1089
state = st->cb_state;
kernel/cpu.c
1090
st->should_run = false;
kernel/cpu.c
1092
st->should_run = cpuhp_next_state(bringup, &state, st, st->target);
kernel/cpu.c
1093
if (!st->should_run)
kernel/cpu.c
1101
st->result = cpuhp_invoke_callback(cpu, state, bringup, st->node, &st->last);
kernel/cpu.c
1107
WARN_ON_ONCE(st->result);
kernel/cpu.c
1109
st->result = cpuhp_invoke_callback(cpu, state, bringup, st->node, &st->last);
kernel/cpu.c
1112
if (st->result) {
kernel/cpu.c
1118
WARN_ON_ONCE(st->rollback);
kernel/cpu.c
1119
st->should_run = false;
kernel/cpu.c
1126
if (!st->should_run)
kernel/cpu.c
1127
complete_ap_thread(st, bringup);
kernel/cpu.c
1135
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
1151
if (!st->thread)
kernel/cpu.c
1154
st->rollback = false;
kernel/cpu.c
1155
st->last = NULL;
kernel/cpu.c
1157
st->node = node;
kernel/cpu.c
1158
st->bringup = bringup;
kernel/cpu.c
1159
st->cb_state = state;
kernel/cpu.c
1160
st->single = true;
kernel/cpu.c
1162
__cpuhp_kick_ap(st);
kernel/cpu.c
1167
if ((ret = st->result) && st->last) {
kernel/cpu.c
1168
st->rollback = true;
kernel/cpu.c
1169
st->bringup = !bringup;
kernel/cpu.c
1171
__cpuhp_kick_ap(st);
kernel/cpu.c
1178
st->node = st->last = NULL;
kernel/cpu.c
1184
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
1185
enum cpuhp_state prev_state = st->state;
kernel/cpu.c
1194
trace_cpuhp_enter(cpu, st->target, prev_state, cpuhp_kick_ap_work);
kernel/cpu.c
1195
ret = cpuhp_kick_ap(cpu, st, st->target);
kernel/cpu.c
1196
trace_cpuhp_exit(cpu, st->state, prev_state, ret);
kernel/cpu.c
1211
struct cpuhp_cpu_state *st;
kernel/cpu.c
1215
st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
1216
init_completion(&st->done_up);
kernel/cpu.c
1217
init_completion(&st->done_down);
kernel/cpu.c
1277
struct cpuhp_cpu_state *st = this_cpu_ptr(&cpuhp_state);
kernel/cpu.c
1278
enum cpuhp_state target = max((int)st->target, CPUHP_AP_OFFLINE);
kernel/cpu.c
1290
WARN_ON(st->state != (CPUHP_TEARDOWN_CPU - 1));
kernel/cpu.c
1295
cpuhp_invoke_callback_range_nofail(false, cpu, st, target);
kernel/cpu.c
1304
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
1308
kthread_park(st->thread);
kernel/cpu.c
1321
kthread_unpark(st->thread);
kernel/cpu.c
1333
wait_for_ap_thread(st, false);
kernel/cpu.c
1334
BUG_ON(st->state != CPUHP_AP_IDLE_DEAD);
kernel/cpu.c
1359
struct cpuhp_cpu_state *st = arg;
kernel/cpu.c
1361
complete_ap_thread(st, false);
kernel/cpu.c
1366
struct cpuhp_cpu_state *st = this_cpu_ptr(&cpuhp_state);
kernel/cpu.c
1368
BUG_ON(st->state != CPUHP_AP_OFFLINE);
kernel/cpu.c
1371
st->state = CPUHP_AP_IDLE_DEAD;
kernel/cpu.c
1377
cpuhp_complete_idle_dead, st, 0);
kernel/cpu.c
1380
static int cpuhp_down_callbacks(unsigned int cpu, struct cpuhp_cpu_state *st,
kernel/cpu.c
1383
enum cpuhp_state prev_state = st->state;
kernel/cpu.c
1386
ret = cpuhp_invoke_callback_range(false, cpu, st, target);
kernel/cpu.c
1389
ret, cpu, cpuhp_get_step(st->state)->name,
kernel/cpu.c
1390
st->state);
kernel/cpu.c
1392
cpuhp_reset_state(cpu, st, prev_state);
kernel/cpu.c
1394
if (st->state < prev_state)
kernel/cpu.c
1395
WARN_ON(cpuhp_invoke_callback_range(true, cpu, st,
kernel/cpu.c
1406
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
1429
prev_state = cpuhp_set_state(cpu, st, target);
kernel/cpu.c
1434
if (st->state > CPUHP_TEARDOWN_CPU) {
kernel/cpu.c
1435
st->target = max((int)target, CPUHP_TEARDOWN_CPU);
kernel/cpu.c
1448
if (st->state > CPUHP_TEARDOWN_CPU)
kernel/cpu.c
1451
st->target = target;
kernel/cpu.c
1457
ret = cpuhp_down_callbacks(cpu, st, target);
kernel/cpu.c
1458
if (ret && st->state < prev_state) {
kernel/cpu.c
1459
if (st->state == CPUHP_TEARDOWN_CPU) {
kernel/cpu.c
1460
cpuhp_reset_state(cpu, st, prev_state);
kernel/cpu.c
1461
__cpuhp_kick_ap(st);
kernel/cpu.c
1578
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
1579
enum cpuhp_state target = min((int)st->target, CPUHP_AP_ONLINE);
kernel/cpu.c
1587
cpuhp_invoke_callback_range_nofail(true, cpu, st, target);
kernel/cpu.c
1597
struct cpuhp_cpu_state *st = this_cpu_ptr(&cpuhp_state);
kernel/cpu.c
1611
st->state = CPUHP_AP_ONLINE_IDLE;
kernel/cpu.c
1612
complete_ap_thread(st, true);
kernel/cpu.c
1618
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
1633
if (st->state >= target)
kernel/cpu.c
1636
if (st->state == CPUHP_OFFLINE) {
kernel/cpu.c
1653
cpuhp_set_state(cpu, st, target);
kernel/cpu.c
1658
if (st->state > CPUHP_BRINGUP_CPU) {
kernel/cpu.c
1674
ret = cpuhp_up_callbacks(cpu, st, target);
kernel/cpu.c
173
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
1770
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
1772
if (cpu_up(cpu, target) && can_rollback_cpu(st)) {
kernel/cpu.c
1778
WARN_ON(cpuhp_invoke_callback_range(false, cpu, st, CPUHP_OFFLINE));
kernel/cpu.c
179
if (st->fail == state) {
kernel/cpu.c
180
st->fail = CPUHP_INVALID;
kernel/cpu.c
193
trace_cpuhp_enter(cpu, st->target, state, cb);
kernel/cpu.c
195
trace_cpuhp_exit(cpu, st->state, state, ret);
kernel/cpu.c
203
trace_cpuhp_multi_enter(cpu, st->target, state, cbm, node);
kernel/cpu.c
205
trace_cpuhp_exit(cpu, st->state, state, ret);
kernel/cpu.c
215
trace_cpuhp_multi_enter(cpu, st->target, state, cbm, node);
kernel/cpu.c
217
trace_cpuhp_exit(cpu, st->state, state, ret);
kernel/cpu.c
2381
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
2382
int cpustate = st->state;
kernel/cpu.c
240
trace_cpuhp_multi_enter(cpu, st->target, state, cbm, node);
kernel/cpu.c
2417
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
2418
int cpustate = st->state;
kernel/cpu.c
242
trace_cpuhp_exit(cpu, st->state, state, rollback_ret);
kernel/cpu.c
2501
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
2502
int cpustate = st->state;
kernel/cpu.c
2565
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
2566
int cpustate = st->state;
kernel/cpu.c
2617
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
2618
int cpustate = st->state;
kernel/cpu.c
269
static inline void wait_for_ap_thread(struct cpuhp_cpu_state *st, bool bringup)
kernel/cpu.c
271
struct completion *done = bringup ? &st->done_up : &st->done_down;
kernel/cpu.c
2729
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, dev->id);
kernel/cpu.c
2731
return sprintf(buf, "%d\n", st->state);
kernel/cpu.c
2738
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, dev->id);
kernel/cpu.c
275
static inline void complete_ap_thread(struct cpuhp_cpu_state *st, bool bringup)
kernel/cpu.c
2765
if (st->state < target)
kernel/cpu.c
2767
else if (st->state > target)
kernel/cpu.c
2769
else if (WARN_ON(st->target != target))
kernel/cpu.c
277
struct completion *done = bringup ? &st->done_up : &st->done_down;
kernel/cpu.c
2770
st->target = target;
kernel/cpu.c
2779
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, dev->id);
kernel/cpu.c
2781
return sprintf(buf, "%d\n", st->target);
kernel/cpu.c
2788
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, dev->id);
kernel/cpu.c
2797
st->fail = fail;
kernel/cpu.c
2816
if (fail <= CPUHP_BRINGUP_CPU && st->state > CPUHP_BRINGUP_CPU)
kernel/cpu.c
2830
st->fail = fail;
kernel/cpu.c
2838
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, dev->id);
kernel/cpu.c
2840
return sprintf(buf, "%d\n", st->fail);
kernel/cpu.c
301
atomic_t *st = this_cpu_ptr(&cpuhp_state.ap_sync_state);
kernel/cpu.c
303
(void)atomic_xchg(st, state);
kernel/cpu.c
311
atomic_t *st = per_cpu_ptr(&cpuhp_state.ap_sync_state, cpu);
kernel/cpu.c
317
sync = atomic_read(st);
kernel/cpu.c
320
if (!atomic_try_cmpxchg(st, &sync, next_state))
kernel/cpu.c
335
sync = atomic_read(st);
kernel/cpu.c
362
atomic_t *st = per_cpu_ptr(&cpuhp_state.ap_sync_state, cpu);
kernel/cpu.c
363
int sync = atomic_read(st);
kernel/cpu.c
369
} while (!atomic_try_cmpxchg(st, &sync, SYNC_STATE_SHOULD_DIE));
kernel/cpu.c
393
atomic_t *st = this_cpu_ptr(&cpuhp_state.ap_sync_state);
kernel/cpu.c
398
while (atomic_read(st) != SYNC_STATE_SHOULD_ONLINE)
kernel/cpu.c
404
atomic_t *st = per_cpu_ptr(&cpuhp_state.ap_sync_state, cpu);
kernel/cpu.c
405
int sync = atomic_read(st);
kernel/cpu.c
424
if (!atomic_try_cmpxchg(st, &sync, SYNC_STATE_KICKED))
kernel/cpu.c
715
cpuhp_set_state(int cpu, struct cpuhp_cpu_state *st, enum cpuhp_state target)
kernel/cpu.c
717
enum cpuhp_state prev_state = st->state;
kernel/cpu.c
718
bool bringup = st->state < target;
kernel/cpu.c
720
st->rollback = false;
kernel/cpu.c
721
st->last = NULL;
kernel/cpu.c
723
st->target = target;
kernel/cpu.c
724
st->single = false;
kernel/cpu.c
725
st->bringup = bringup;
kernel/cpu.c
733
cpuhp_reset_state(int cpu, struct cpuhp_cpu_state *st,
kernel/cpu.c
736
bool bringup = !st->bringup;
kernel/cpu.c
738
st->target = prev_state;
kernel/cpu.c
744
if (st->rollback)
kernel/cpu.c
747
st->rollback = true;
kernel/cpu.c
753
if (!st->last) {
kernel/cpu.c
754
if (st->bringup)
kernel/cpu.c
755
st->state--;
kernel/cpu.c
757
st->state++;
kernel/cpu.c
760
st->bringup = bringup;
kernel/cpu.c
766
static void __cpuhp_kick_ap(struct cpuhp_cpu_state *st)
kernel/cpu.c
768
if (!st->single && st->state == st->target)
kernel/cpu.c
771
st->result = 0;
kernel/cpu.c
777
st->should_run = true;
kernel/cpu.c
778
wake_up_process(st->thread);
kernel/cpu.c
779
wait_for_ap_thread(st, st->bringup);
kernel/cpu.c
782
static int cpuhp_kick_ap(int cpu, struct cpuhp_cpu_state *st,
kernel/cpu.c
788
prev_state = cpuhp_set_state(cpu, st, target);
kernel/cpu.c
789
__cpuhp_kick_ap(st);
kernel/cpu.c
790
if ((ret = st->result)) {
kernel/cpu.c
791
cpuhp_reset_state(cpu, st, prev_state);
kernel/cpu.c
792
__cpuhp_kick_ap(st);
kernel/cpu.c
800
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
803
wait_for_ap_thread(st, true);
kernel/cpu.c
808
kthread_unpark(st->thread);
kernel/cpu.c
833
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
853
if (st->target <= CPUHP_AP_ONLINE_IDLE)
kernel/cpu.c
856
return cpuhp_kick_ap(cpu, st, st->target);
kernel/cpu.c
865
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
kernel/cpu.c
897
if (st->target <= CPUHP_AP_ONLINE_IDLE)
kernel/cpu.c
900
return cpuhp_kick_ap(cpu, st, st->target);
kernel/cpu.c
937
struct cpuhp_cpu_state *st,
kernel/cpu.c
942
if (st->state >= target)
kernel/cpu.c
945
*state_to_run = ++st->state;
kernel/cpu.c
947
if (st->state <= target)
kernel/cpu.c
950
*state_to_run = st->state--;
kernel/cpu.c
962
struct cpuhp_cpu_state *st,
kernel/cpu.c
969
while (cpuhp_next_state(bringup, &state, st, target)) {
kernel/cpu.c
979
cpuhp_get_step(st->state)->name,
kernel/cpu.c
980
st->state, err);
kernel/cpu.c
993
struct cpuhp_cpu_state *st,
kernel/cpu.c
996
return __cpuhp_invoke_callback_range(bringup, cpu, st, target, false);
kernel/rseq.c
586
struct slice_timer *st = container_of(tmr, struct slice_timer, timer);
kernel/rseq.c
593
if (st->cookie == current && current->rseq.slice.state.granted) {
kernel/rseq.c
602
struct slice_timer *st = this_cpu_ptr(&slice_timer);
kernel/rseq.c
624
st->cookie = curr;
kernel/rseq.c
625
hrtimer_start(&st->timer, curr->rseq.slice.expires, HRTIMER_MODE_ABS_PINNED_HARD);
kernel/rseq.c
633
struct slice_timer *st = this_cpu_ptr(&slice_timer);
kernel/rseq.c
648
if (st->cookie == current)
kernel/rseq.c
649
hrtimer_try_to_cancel(&st->timer);
kernel/sched/cputime.c
658
u64 *ut, u64 *st)
kernel/sched/cputime.c
661
*st = curr->stime;
kernel/sched/cputime.c
664
void task_cputime_adjusted(struct task_struct *p, u64 *ut, u64 *st)
kernel/sched/cputime.c
667
*st = p->stime;
kernel/sched/cputime.c
671
void thread_group_cputime_adjusted(struct task_struct *p, u64 *ut, u64 *st)
kernel/sched/cputime.c
678
*st = cputime.stime;
kernel/sched/cputime.c
740
u64 *ut, u64 *st)
kernel/sched/cputime.c
807
*st = prev->stime;
kernel/sched/cputime.c
811
void task_cputime_adjusted(struct task_struct *p, u64 *ut, u64 *st)
kernel/sched/cputime.c
819
cputime_adjust(&cputime, &p->prev_cputime, ut, st);
kernel/sched/cputime.c
823
void thread_group_cputime_adjusted(struct task_struct *p, u64 *ut, u64 *st)
kernel/sched/cputime.c
828
cputime_adjust(&cputime, &p->signal->prev_cputime, ut, st);
lib/crypto/sha3.c
100
bc[ 1] = ~st[ 2] & st[ 3];
lib/crypto/sha3.c
101
bc[ 2] = ~st[ 3] & st[ 4];
lib/crypto/sha3.c
102
bc[ 3] = ~st[ 4] & st[ 0];
lib/crypto/sha3.c
103
bc[ 4] = ~st[ 0] & st[ 1];
lib/crypto/sha3.c
104
st[ 0] ^= bc[ 0];
lib/crypto/sha3.c
105
st[ 1] ^= bc[ 1];
lib/crypto/sha3.c
106
st[ 2] ^= bc[ 2];
lib/crypto/sha3.c
107
st[ 3] ^= bc[ 3];
lib/crypto/sha3.c
108
st[ 4] ^= bc[ 4];
lib/crypto/sha3.c
110
bc[ 0] = ~st[ 6] & st[ 7];
lib/crypto/sha3.c
111
bc[ 1] = ~st[ 7] & st[ 8];
lib/crypto/sha3.c
112
bc[ 2] = ~st[ 8] & st[ 9];
lib/crypto/sha3.c
113
bc[ 3] = ~st[ 9] & st[ 5];
lib/crypto/sha3.c
114
bc[ 4] = ~st[ 5] & st[ 6];
lib/crypto/sha3.c
115
st[ 5] ^= bc[ 0];
lib/crypto/sha3.c
116
st[ 6] ^= bc[ 1];
lib/crypto/sha3.c
117
st[ 7] ^= bc[ 2];
lib/crypto/sha3.c
118
st[ 8] ^= bc[ 3];
lib/crypto/sha3.c
119
st[ 9] ^= bc[ 4];
lib/crypto/sha3.c
121
bc[ 0] = ~st[11] & st[12];
lib/crypto/sha3.c
122
bc[ 1] = ~st[12] & st[13];
lib/crypto/sha3.c
123
bc[ 2] = ~st[13] & st[14];
lib/crypto/sha3.c
124
bc[ 3] = ~st[14] & st[10];
lib/crypto/sha3.c
125
bc[ 4] = ~st[10] & st[11];
lib/crypto/sha3.c
126
st[10] ^= bc[ 0];
lib/crypto/sha3.c
127
st[11] ^= bc[ 1];
lib/crypto/sha3.c
128
st[12] ^= bc[ 2];
lib/crypto/sha3.c
129
st[13] ^= bc[ 3];
lib/crypto/sha3.c
130
st[14] ^= bc[ 4];
lib/crypto/sha3.c
132
bc[ 0] = ~st[16] & st[17];
lib/crypto/sha3.c
133
bc[ 1] = ~st[17] & st[18];
lib/crypto/sha3.c
134
bc[ 2] = ~st[18] & st[19];
lib/crypto/sha3.c
135
bc[ 3] = ~st[19] & st[15];
lib/crypto/sha3.c
136
bc[ 4] = ~st[15] & st[16];
lib/crypto/sha3.c
137
st[15] ^= bc[ 0];
lib/crypto/sha3.c
138
st[16] ^= bc[ 1];
lib/crypto/sha3.c
139
st[17] ^= bc[ 2];
lib/crypto/sha3.c
140
st[18] ^= bc[ 3];
lib/crypto/sha3.c
141
st[19] ^= bc[ 4];
lib/crypto/sha3.c
143
bc[ 0] = ~st[21] & st[22];
lib/crypto/sha3.c
144
bc[ 1] = ~st[22] & st[23];
lib/crypto/sha3.c
145
bc[ 2] = ~st[23] & st[24];
lib/crypto/sha3.c
146
bc[ 3] = ~st[24] & st[20];
lib/crypto/sha3.c
147
bc[ 4] = ~st[20] & st[21];
lib/crypto/sha3.c
148
st[20] ^= bc[ 0];
lib/crypto/sha3.c
149
st[21] ^= bc[ 1];
lib/crypto/sha3.c
150
st[22] ^= bc[ 2];
lib/crypto/sha3.c
151
st[23] ^= bc[ 3];
lib/crypto/sha3.c
152
st[24] ^= bc[ 4];
lib/crypto/sha3.c
155
st[0] ^= sha3_keccakf_rndc[round];
lib/crypto/sha3.c
52
static SHA3_INLINE void sha3_keccakf_one_round_generic(u64 st[25], int round)
lib/crypto/sha3.c
57
bc[0] = st[0] ^ st[5] ^ st[10] ^ st[15] ^ st[20];
lib/crypto/sha3.c
58
bc[1] = st[1] ^ st[6] ^ st[11] ^ st[16] ^ st[21];
lib/crypto/sha3.c
59
bc[2] = st[2] ^ st[7] ^ st[12] ^ st[17] ^ st[22];
lib/crypto/sha3.c
60
bc[3] = st[3] ^ st[8] ^ st[13] ^ st[18] ^ st[23];
lib/crypto/sha3.c
61
bc[4] = st[4] ^ st[9] ^ st[14] ^ st[19] ^ st[24];
lib/crypto/sha3.c
69
st[0] ^= t[0];
lib/crypto/sha3.c
72
tt = st[1];
lib/crypto/sha3.c
73
st[ 1] = rol64(st[ 6] ^ t[1], 44);
lib/crypto/sha3.c
74
st[ 6] = rol64(st[ 9] ^ t[4], 20);
lib/crypto/sha3.c
75
st[ 9] = rol64(st[22] ^ t[2], 61);
lib/crypto/sha3.c
76
st[22] = rol64(st[14] ^ t[4], 39);
lib/crypto/sha3.c
77
st[14] = rol64(st[20] ^ t[0], 18);
lib/crypto/sha3.c
78
st[20] = rol64(st[ 2] ^ t[2], 62);
lib/crypto/sha3.c
79
st[ 2] = rol64(st[12] ^ t[2], 43);
lib/crypto/sha3.c
80
st[12] = rol64(st[13] ^ t[3], 25);
lib/crypto/sha3.c
81
st[13] = rol64(st[19] ^ t[4], 8);
lib/crypto/sha3.c
82
st[19] = rol64(st[23] ^ t[3], 56);
lib/crypto/sha3.c
83
st[23] = rol64(st[15] ^ t[0], 41);
lib/crypto/sha3.c
84
st[15] = rol64(st[ 4] ^ t[4], 27);
lib/crypto/sha3.c
85
st[ 4] = rol64(st[24] ^ t[4], 14);
lib/crypto/sha3.c
86
st[24] = rol64(st[21] ^ t[1], 2);
lib/crypto/sha3.c
87
st[21] = rol64(st[ 8] ^ t[3], 55);
lib/crypto/sha3.c
88
st[ 8] = rol64(st[16] ^ t[1], 45);
lib/crypto/sha3.c
89
st[16] = rol64(st[ 5] ^ t[0], 36);
lib/crypto/sha3.c
90
st[ 5] = rol64(st[ 3] ^ t[3], 28);
lib/crypto/sha3.c
91
st[ 3] = rol64(st[18] ^ t[3], 21);
lib/crypto/sha3.c
92
st[18] = rol64(st[17] ^ t[2], 15);
lib/crypto/sha3.c
93
st[17] = rol64(st[11] ^ t[1], 10);
lib/crypto/sha3.c
94
st[11] = rol64(st[ 7] ^ t[2], 6);
lib/crypto/sha3.c
95
st[ 7] = rol64(st[10] ^ t[0], 3);
lib/crypto/sha3.c
96
st[10] = rol64( tt ^ t[1], 1);
lib/crypto/sha3.c
99
bc[ 0] = ~st[ 1] & st[ 2];
lib/textsearch.c
208
struct ts_linear_state *st = (struct ts_linear_state *) state->cb;
lib/textsearch.c
210
if (likely(consumed < st->len)) {
lib/textsearch.c
211
*dst = st->data + consumed;
lib/textsearch.c
212
return st->len - consumed;
lib/textsearch.c
235
struct ts_linear_state *st = (struct ts_linear_state *) state->cb;
lib/textsearch.c
238
st->data = data;
lib/textsearch.c
239
st->len = len;
mm/damon/sysfs.c
2006
struct damon_sysfs_target *st = sysfs_targets->targets_arr[i];
mm/damon/sysfs.c
2008
err = damon_sysfs_add_target(st, ctx);
mm/ptdump.c
102
struct ptdump_state *st = walk->private;
mm/ptdump.c
110
if (st->effective_prot_pmd)
mm/ptdump.c
111
st->effective_prot_pmd(st, val);
mm/ptdump.c
113
st->note_page_pmd(st, addr, val);
mm/ptdump.c
123
struct ptdump_state *st = walk->private;
mm/ptdump.c
126
if (st->effective_prot_pte)
mm/ptdump.c
127
st->effective_prot_pte(st, val);
mm/ptdump.c
129
st->note_page_pte(st, addr, val);
mm/ptdump.c
137
struct ptdump_state *st = walk->private;
mm/ptdump.c
146
st->note_page_pte(st, addr, pte_zero);
mm/ptdump.c
149
st->note_page_pmd(st, addr, pmd_zero);
mm/ptdump.c
152
st->note_page_pud(st, addr, pud_zero);
mm/ptdump.c
155
st->note_page_p4d(st, addr, p4d_zero);
mm/ptdump.c
158
st->note_page_pgd(st, addr, pgd_zero);
mm/ptdump.c
175
void ptdump_walk_pgd(struct ptdump_state *st, struct mm_struct *mm, pgd_t *pgd)
mm/ptdump.c
177
const struct ptdump_range *range = st->range;
mm/ptdump.c
183
&ptdump_ops, pgd, st);
mm/ptdump.c
190
st->note_page_flush(st);
mm/ptdump.c
20
struct ptdump_state *st = walk->private;
mm/ptdump.c
22
st->note_page_pte(st, addr, kasan_early_shadow_pte[0]);
mm/ptdump.c
33
struct ptdump_state *st = walk->private;
mm/ptdump.c
42
if (st->effective_prot_pgd)
mm/ptdump.c
43
st->effective_prot_pgd(st, val);
mm/ptdump.c
46
st->note_page_pgd(st, addr, val);
mm/ptdump.c
56
struct ptdump_state *st = walk->private;
mm/ptdump.c
65
if (st->effective_prot_p4d)
mm/ptdump.c
66
st->effective_prot_p4d(st, val);
mm/ptdump.c
69
st->note_page_p4d(st, addr, val);
mm/ptdump.c
79
struct ptdump_state *st = walk->private;
mm/ptdump.c
88
if (st->effective_prot_pud)
mm/ptdump.c
89
st->effective_prot_pud(st, val);
mm/ptdump.c
92
st->note_page_pud(st, addr, val);
net/9p/protocol.c
719
int p9stat_read(struct p9_client *clnt, char *buf, int len, struct p9_wstat *st)
net/9p/protocol.c
729
ret = p9pdu_readf(&fake_pdu, clnt->proto_version, "S", st);
net/bridge/netfilter/ebt_stp.c
141
const struct stp_config_pdu *st;
net/bridge/netfilter/ebt_stp.c
144
st = skb_header_pointer(skb, sizeof(_stph),
net/bridge/netfilter/ebt_stp.c
146
if (st == NULL)
net/bridge/netfilter/ebt_stp.c
148
return ebt_filter_config(info, st);
net/ceph/mon_client.c
760
*req->u.st = reply->st; /* struct */
net/ceph/mon_client.c
795
req->u.st = buf;
net/core/gen_stats.c
425
gnet_stats_copy_app(struct gnet_dump *d, void *st, int len)
net/core/gen_stats.c
428
d->xstats = kmemdup(st, len, GFP_ATOMIC);
net/core/gen_stats.c
435
return gnet_stats_copy(d, TCA_STATS_APP, st, len,
net/core/neighbour.c
2291
struct neigh_statistics *st;
net/core/neighbour.c
2293
st = per_cpu_ptr(tbl->stats, cpu);
net/core/neighbour.c
2294
ndst.ndts_allocs += READ_ONCE(st->allocs);
net/core/neighbour.c
2295
ndst.ndts_destroys += READ_ONCE(st->destroys);
net/core/neighbour.c
2296
ndst.ndts_hash_grows += READ_ONCE(st->hash_grows);
net/core/neighbour.c
2297
ndst.ndts_res_failed += READ_ONCE(st->res_failed);
net/core/neighbour.c
2298
ndst.ndts_lookups += READ_ONCE(st->lookups);
net/core/neighbour.c
2299
ndst.ndts_hits += READ_ONCE(st->hits);
net/core/neighbour.c
2300
ndst.ndts_rcv_probes_mcast += READ_ONCE(st->rcv_probes_mcast);
net/core/neighbour.c
2301
ndst.ndts_rcv_probes_ucast += READ_ONCE(st->rcv_probes_ucast);
net/core/neighbour.c
2302
ndst.ndts_periodic_gc_runs += READ_ONCE(st->periodic_gc_runs);
net/core/neighbour.c
2303
ndst.ndts_forced_gc_runs += READ_ONCE(st->forced_gc_runs);
net/core/neighbour.c
2304
ndst.ndts_table_fulls += READ_ONCE(st->table_fulls);
net/core/neighbour.c
3516
struct neigh_statistics *st = v;
net/core/neighbour.c
3528
st->allocs,
net/core/neighbour.c
3529
st->destroys,
net/core/neighbour.c
3530
st->hash_grows,
net/core/neighbour.c
3532
st->lookups,
net/core/neighbour.c
3533
st->hits,
net/core/neighbour.c
3535
st->res_failed,
net/core/neighbour.c
3537
st->rcv_probes_mcast,
net/core/neighbour.c
3538
st->rcv_probes_ucast,
net/core/neighbour.c
3540
st->periodic_gc_runs,
net/core/neighbour.c
3541
st->forced_gc_runs,
net/core/neighbour.c
3542
st->unres_discards,
net/core/neighbour.c
3543
st->table_fulls
net/core/secure_seq.c
112
union tcp_seq_and_ts_off st;
net/core/secure_seq.c
116
st.hash64 = siphash_3u32((__force u32)saddr, (__force u32)daddr,
net/core/secure_seq.c
120
st.ts_off = 0;
net/core/secure_seq.c
122
st.seq = seq_scale(st.seq);
net/core/secure_seq.c
123
return st;
net/core/secure_seq.c
65
union tcp_seq_and_ts_off st;
net/core/secure_seq.c
69
st.hash64 = siphash(&combined, offsetofend(typeof(combined), dport),
net/core/secure_seq.c
73
st.ts_off = 0;
net/core/secure_seq.c
75
st.seq = seq_scale(st.seq);
net/core/secure_seq.c
76
return st;
net/core/skbuff.c
4404
unsigned int to, struct skb_seq_state *st)
net/core/skbuff.c
4406
st->lower_offset = from;
net/core/skbuff.c
4407
st->upper_offset = to;
net/core/skbuff.c
4408
st->root_skb = st->cur_skb = skb;
net/core/skbuff.c
4409
st->frag_idx = st->stepped_offset = 0;
net/core/skbuff.c
4410
st->frag_data = NULL;
net/core/skbuff.c
4411
st->frag_off = 0;
net/core/skbuff.c
4441
struct skb_seq_state *st)
net/core/skbuff.c
4443
unsigned int block_limit, abs_offset = consumed + st->lower_offset;
net/core/skbuff.c
4446
if (unlikely(abs_offset >= st->upper_offset)) {
net/core/skbuff.c
4447
if (st->frag_data) {
net/core/skbuff.c
4448
kunmap_atomic(st->frag_data);
net/core/skbuff.c
4449
st->frag_data = NULL;
net/core/skbuff.c
4455
block_limit = skb_headlen(st->cur_skb) + st->stepped_offset;
net/core/skbuff.c
4457
if (abs_offset < block_limit && !st->frag_data) {
net/core/skbuff.c
4458
*data = st->cur_skb->data + (abs_offset - st->stepped_offset);
net/core/skbuff.c
4462
if (!skb_frags_readable(st->cur_skb))
net/core/skbuff.c
4465
if (st->frag_idx == 0 && !st->frag_data)
net/core/skbuff.c
4466
st->stepped_offset += skb_headlen(st->cur_skb);
net/core/skbuff.c
4468
while (st->frag_idx < skb_shinfo(st->cur_skb)->nr_frags) {
net/core/skbuff.c
4471
frag = &skb_shinfo(st->cur_skb)->frags[st->frag_idx];
net/core/skbuff.c
4478
pg_idx = (pg_off + st->frag_off) >> PAGE_SHIFT;
net/core/skbuff.c
4479
pg_off = offset_in_page(pg_off + st->frag_off);
net/core/skbuff.c
4480
pg_sz = min_t(unsigned int, pg_sz - st->frag_off,
net/core/skbuff.c
4484
block_limit = pg_sz + st->stepped_offset;
net/core/skbuff.c
4486
if (!st->frag_data)
net/core/skbuff.c
4487
st->frag_data = kmap_atomic(skb_frag_page(frag) + pg_idx);
net/core/skbuff.c
4489
*data = (u8 *)st->frag_data + pg_off +
net/core/skbuff.c
4490
(abs_offset - st->stepped_offset);
net/core/skbuff.c
4495
if (st->frag_data) {
net/core/skbuff.c
4496
kunmap_atomic(st->frag_data);
net/core/skbuff.c
4497
st->frag_data = NULL;
net/core/skbuff.c
4500
st->stepped_offset += pg_sz;
net/core/skbuff.c
4501
st->frag_off += pg_sz;
net/core/skbuff.c
4502
if (st->frag_off == skb_frag_size(frag)) {
net/core/skbuff.c
4503
st->frag_off = 0;
net/core/skbuff.c
4504
st->frag_idx++;
net/core/skbuff.c
4508
if (st->frag_data) {
net/core/skbuff.c
4509
kunmap_atomic(st->frag_data);
net/core/skbuff.c
4510
st->frag_data = NULL;
net/core/skbuff.c
4513
if (st->root_skb == st->cur_skb && skb_has_frag_list(st->root_skb)) {
net/core/skbuff.c
4514
st->cur_skb = skb_shinfo(st->root_skb)->frag_list;
net/core/skbuff.c
4515
st->frag_idx = 0;
net/core/skbuff.c
4517
} else if (st->cur_skb->next) {
net/core/skbuff.c
4518
st->cur_skb = st->cur_skb->next;
net/core/skbuff.c
4519
st->frag_idx = 0;
net/core/skbuff.c
4534
void skb_abort_seq_read(struct skb_seq_state *st)
net/core/skbuff.c
4536
if (st->frag_data)
net/core/skbuff.c
4537
kunmap_atomic(st->frag_data);
net/core/skbuff.c
4555
int skb_copy_seq_read(struct skb_seq_state *st, int offset, void *to, int len)
net/core/skbuff.c
4561
sqlen = skb_seq_read(offset, &data, st);
net/ethtool/pse-pd.c
100
if (st->c33_actual_pw > 0)
net/ethtool/pse-pd.c
102
if (st->c33_ext_state_info.c33_pse_ext_state > 0) {
net/ethtool/pse-pd.c
104
if (st->c33_ext_state_info.__c33_pse_ext_substate > 0)
net/ethtool/pse-pd.c
108
if (st->c33_avail_pw_limit > 0)
net/ethtool/pse-pd.c
111
if (st->c33_pw_limit_nb_ranges > 0)
net/ethtool/pse-pd.c
113
len += st->c33_pw_limit_nb_ranges *
net/ethtool/pse-pd.c
116
if (st->prio_max)
net/ethtool/pse-pd.c
124
const struct ethtool_pse_control_status *st)
net/ethtool/pse-pd.c
129
pw_limit_ranges = st->c33_pw_limit_ranges;
net/ethtool/pse-pd.c
130
for (i = 0; i < st->c33_pw_limit_nb_ranges; i++) {
net/ethtool/pse-pd.c
156
const struct ethtool_pse_control_status *st = &data->status;
net/ethtool/pse-pd.c
158
if (st->pw_d_id &&
net/ethtool/pse-pd.c
160
st->pw_d_id))
net/ethtool/pse-pd.c
163
if (st->podl_admin_state > 0 &&
net/ethtool/pse-pd.c
165
st->podl_admin_state))
net/ethtool/pse-pd.c
168
if (st->podl_pw_status > 0 &&
net/ethtool/pse-pd.c
170
st->podl_pw_status))
net/ethtool/pse-pd.c
173
if (st->c33_admin_state > 0 &&
net/ethtool/pse-pd.c
175
st->c33_admin_state))
net/ethtool/pse-pd.c
178
if (st->c33_pw_status > 0 &&
net/ethtool/pse-pd.c
180
st->c33_pw_status))
net/ethtool/pse-pd.c
183
if (st->c33_pw_class > 0 &&
net/ethtool/pse-pd.c
185
st->c33_pw_class))
net/ethtool/pse-pd.c
188
if (st->c33_actual_pw > 0 &&
net/ethtool/pse-pd.c
190
st->c33_actual_pw))
net/ethtool/pse-pd.c
193
if (st->c33_ext_state_info.c33_pse_ext_state > 0) {
net/ethtool/pse-pd.c
195
st->c33_ext_state_info.c33_pse_ext_state))
net/ethtool/pse-pd.c
198
if (st->c33_ext_state_info.__c33_pse_ext_substate > 0 &&
net/ethtool/pse-pd.c
200
st->c33_ext_state_info.__c33_pse_ext_substate))
net/ethtool/pse-pd.c
204
if (st->c33_avail_pw_limit > 0 &&
net/ethtool/pse-pd.c
206
st->c33_avail_pw_limit))
net/ethtool/pse-pd.c
209
if (st->c33_pw_limit_nb_ranges > 0 &&
net/ethtool/pse-pd.c
210
pse_put_pw_limit_ranges(skb, st))
net/ethtool/pse-pd.c
213
if (st->prio_max &&
net/ethtool/pse-pd.c
214
(nla_put_u32(skb, ETHTOOL_A_PSE_PRIO_MAX, st->prio_max) ||
net/ethtool/pse-pd.c
215
nla_put_u32(skb, ETHTOOL_A_PSE_PRIO, st->prio)))
net/ethtool/pse-pd.c
85
const struct ethtool_pse_control_status *st = &data->status;
net/ethtool/pse-pd.c
88
if (st->pw_d_id)
net/ethtool/pse-pd.c
90
if (st->podl_admin_state > 0)
net/ethtool/pse-pd.c
92
if (st->podl_pw_status > 0)
net/ethtool/pse-pd.c
94
if (st->c33_admin_state > 0)
net/ethtool/pse-pd.c
96
if (st->c33_pw_status > 0)
net/ethtool/pse-pd.c
98
if (st->c33_pw_class > 0)
net/ipv4/ip_input.c
420
struct ip_rt_acct *st = this_cpu_ptr(ip_rt_acct);
net/ipv4/ip_input.c
422
st[idx&0xFF].o_packets++;
net/ipv4/ip_input.c
423
st[idx&0xFF].o_bytes += skb->len;
net/ipv4/ip_input.c
424
st[(idx>>16)&0xFF].i_packets++;
net/ipv4/ip_input.c
425
st[(idx>>16)&0xFF].i_bytes += skb->len;
net/ipv4/route.c
272
struct rt_cache_stat *st = v;
net/ipv4/route.c
284
st->in_slow_tot,
net/ipv4/route.c
285
st->in_slow_mc,
net/ipv4/route.c
286
st->in_no_route,
net/ipv4/route.c
287
st->in_brd,
net/ipv4/route.c
288
st->in_martian_dst,
net/ipv4/route.c
289
st->in_martian_src,
net/ipv4/route.c
292
st->out_slow_tot,
net/ipv4/route.c
293
st->out_slow_mc,
net/ipv4/syncookies.c
381
union tcp_seq_and_ts_off st;
net/ipv4/syncookies.c
383
st = secure_tcp_seq_and_ts_off(net,
net/ipv4/syncookies.c
388
tsoff = st.ts_off;
net/ipv4/tcp_input.c
7630
union tcp_seq_and_ts_off st;
net/ipv4/tcp_input.c
7706
st = INDIRECT_CALL_INET(af_ops->init_seq_and_ts_off,
net/ipv4/tcp_input.c
7713
tcp_rsk(req)->ts_off = st.ts_off;
net/ipv4/tcp_input.c
7735
isn = st.seq;
net/ipv4/tcp_ipv4.c
2482
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2484
st->offset = 0;
net/ipv4/tcp_ipv4.c
2485
for (; st->bucket <= hinfo->lhash2_mask; st->bucket++) {
net/ipv4/tcp_ipv4.c
2490
ilb2 = &hinfo->lhash2[st->bucket];
net/ipv4/tcp_ipv4.c
2512
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2518
++st->num;
net/ipv4/tcp_ipv4.c
2519
++st->offset;
net/ipv4/tcp_ipv4.c
2528
ilb2 = &hinfo->lhash2[st->bucket];
net/ipv4/tcp_ipv4.c
2530
++st->bucket;
net/ipv4/tcp_ipv4.c
2536
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2539
st->bucket = 0;
net/ipv4/tcp_ipv4.c
2540
st->offset = 0;
net/ipv4/tcp_ipv4.c
2551
const struct tcp_iter_state *st)
net/ipv4/tcp_ipv4.c
2553
return hlist_nulls_empty(&hinfo->ehash[st->bucket].chain);
net/ipv4/tcp_ipv4.c
2563
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2565
st->offset = 0;
net/ipv4/tcp_ipv4.c
2566
for (; st->bucket <= hinfo->ehash_mask; ++st->bucket) {
net/ipv4/tcp_ipv4.c
2569
spinlock_t *lock = inet_ehash_lockp(hinfo, st->bucket);
net/ipv4/tcp_ipv4.c
2574
if (empty_bucket(hinfo, st))
net/ipv4/tcp_ipv4.c
2578
sk_nulls_for_each(sk, node, &hinfo->ehash[st->bucket].chain) {
net/ipv4/tcp_ipv4.c
2591
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2595
++st->num;
net/ipv4/tcp_ipv4.c
2596
++st->offset;
net/ipv4/tcp_ipv4.c
2605
spin_unlock_bh(inet_ehash_lockp(hinfo, st->bucket));
net/ipv4/tcp_ipv4.c
2606
++st->bucket;
net/ipv4/tcp_ipv4.c
2612
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2615
st->bucket = 0;
net/ipv4/tcp_ipv4.c
2628
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2630
st->state = TCP_SEQ_STATE_LISTENING;
net/ipv4/tcp_ipv4.c
2634
st->state = TCP_SEQ_STATE_ESTABLISHED;
net/ipv4/tcp_ipv4.c
2644
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2645
int bucket = st->bucket;
net/ipv4/tcp_ipv4.c
2646
int offset = st->offset;
net/ipv4/tcp_ipv4.c
2647
int orig_num = st->num;
net/ipv4/tcp_ipv4.c
2650
switch (st->state) {
net/ipv4/tcp_ipv4.c
2652
if (st->bucket > hinfo->lhash2_mask)
net/ipv4/tcp_ipv4.c
2655
while (offset-- && rc && bucket == st->bucket)
net/ipv4/tcp_ipv4.c
2659
st->bucket = 0;
net/ipv4/tcp_ipv4.c
2660
st->state = TCP_SEQ_STATE_ESTABLISHED;
net/ipv4/tcp_ipv4.c
2663
if (st->bucket > hinfo->ehash_mask)
net/ipv4/tcp_ipv4.c
2666
while (offset-- && rc && bucket == st->bucket)
net/ipv4/tcp_ipv4.c
2670
st->num = orig_num;
net/ipv4/tcp_ipv4.c
2677
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2680
if (*pos && *pos == st->last_pos) {
net/ipv4/tcp_ipv4.c
2686
st->state = TCP_SEQ_STATE_LISTENING;
net/ipv4/tcp_ipv4.c
2687
st->num = 0;
net/ipv4/tcp_ipv4.c
2688
st->bucket = 0;
net/ipv4/tcp_ipv4.c
2689
st->offset = 0;
net/ipv4/tcp_ipv4.c
2693
st->last_pos = *pos;
net/ipv4/tcp_ipv4.c
2699
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2707
switch (st->state) {
net/ipv4/tcp_ipv4.c
2711
st->state = TCP_SEQ_STATE_ESTABLISHED;
net/ipv4/tcp_ipv4.c
2712
st->bucket = 0;
net/ipv4/tcp_ipv4.c
2713
st->offset = 0;
net/ipv4/tcp_ipv4.c
2723
st->last_pos = *pos;
net/ipv4/tcp_ipv4.c
2730
struct tcp_iter_state *st = seq->private;
net/ipv4/tcp_ipv4.c
2732
switch (st->state) {
net/ipv4/tcp_ipv4.c
2735
spin_unlock(&hinfo->lhash2[st->bucket].lock);
net/ipv4/tcp_ipv4.c
2739
spin_unlock_bh(inet_ehash_lockp(hinfo, st->bucket));
net/ipv4/tcp_ipv4.c
2857
struct tcp_iter_state *st;
net/ipv4/tcp_ipv4.c
2867
st = seq->private;
net/ipv4/tcp_ipv4.c
2870
get_timewait4_sock(v, seq, st->num);
net/ipv4/tcp_ipv4.c
2872
get_openreq4(v, seq, st->num);
net/ipv4/tcp_ipv4.c
2874
get_tcp4_sock(v, seq, st->num);
net/ipv4/tcp_ipv4.c
2969
struct tcp_iter_state *st = &iter->state;
net/ipv4/tcp_ipv4.c
2972
int resume_bucket = st->bucket;
net/ipv4/tcp_ipv4.c
2976
++st->bucket;
net/ipv4/tcp_ipv4.c
2982
if (sk && st->bucket == resume_bucket && end_cookie) {
net/ipv4/tcp_ipv4.c
2986
spin_unlock(&hinfo->lhash2[st->bucket].lock);
net/ipv4/tcp_ipv4.c
2987
++st->bucket;
net/ipv4/tcp_ipv4.c
2999
struct tcp_iter_state *st = &iter->state;
net/ipv4/tcp_ipv4.c
3002
int resume_bucket = st->bucket;
net/ipv4/tcp_ipv4.c
3006
++st->bucket;
net/ipv4/tcp_ipv4.c
3012
if (sk && st->bucket == resume_bucket && end_cookie) {
net/ipv4/tcp_ipv4.c
3016
spin_unlock_bh(inet_ehash_lockp(hinfo, st->bucket));
net/ipv4/tcp_ipv4.c
3017
++st->bucket;
net/ipv4/tcp_ipv4.c
3028
struct tcp_iter_state *st = &iter->state;
net/ipv4/tcp_ipv4.c
3031
switch (st->state) {
net/ipv4/tcp_ipv4.c
3036
st->bucket = 0;
net/ipv4/tcp_ipv4.c
3037
st->state = TCP_SEQ_STATE_ESTABLISHED;
net/ipv4/tcp_ipv4.c
3109
struct tcp_iter_state *st = &iter->state;
net/ipv4/tcp_ipv4.c
3111
if (st->state == TCP_SEQ_STATE_LISTENING)
net/ipv4/tcp_ipv4.c
3121
struct tcp_iter_state *st = &iter->state;
net/ipv4/tcp_ipv4.c
3123
if (st->state == TCP_SEQ_STATE_LISTENING)
net/ipv4/tcp_ipv4.c
3124
spin_unlock(&hinfo->lhash2[st->bucket].lock);
net/ipv4/tcp_ipv4.c
3126
spin_unlock_bh(inet_ehash_lockp(hinfo, st->bucket));
net/ipv4/tcp_ipv4.c
3194
struct tcp_iter_state *st = &iter->state;
net/ipv4/tcp_ipv4.c
3206
st->num++;
net/ipv4/tcp_ipv4.c
3219
st->last_pos = *pos;
net/ipv4/tcp_ipv4.c
326
union tcp_seq_and_ts_off st;
net/ipv4/tcp_ipv4.c
328
st = secure_tcp_seq_and_ts_off(net,
net/ipv4/tcp_ipv4.c
334
WRITE_ONCE(tp->write_seq, st.seq);
net/ipv4/tcp_ipv4.c
335
WRITE_ONCE(tp->tsoffset, st.ts_off);
net/ipv6/addrconf_core.c
39
__be32 st;
net/ipv6/addrconf_core.c
41
st = addr->s6_addr32[0];
net/ipv6/addrconf_core.c
46
if ((st & htonl(0xE0000000)) != htonl(0x00000000) &&
net/ipv6/addrconf_core.c
47
(st & htonl(0xE0000000)) != htonl(0xE0000000))
net/ipv6/addrconf_core.c
51
if ((st & htonl(0xFF000000)) == htonl(0xFF000000)) {
net/ipv6/addrconf_core.c
58
if ((st & htonl(0xFFC00000)) == htonl(0xFE800000))
net/ipv6/addrconf_core.c
61
if ((st & htonl(0xFFC00000)) == htonl(0xFEC00000))
net/ipv6/addrconf_core.c
64
if ((st & htonl(0xFE000000)) == htonl(0xFC000000))
net/ipv6/syncookies.c
154
union tcp_seq_and_ts_off st;
net/ipv6/syncookies.c
156
st = secure_tcpv6_seq_and_ts_off(net,
net/ipv6/syncookies.c
161
tsoff = st.ts_off;
net/ipv6/tcp_ipv6.c
2227
struct tcp_iter_state *st;
net/ipv6/tcp_ipv6.c
2239
st = seq->private;
net/ipv6/tcp_ipv6.c
2242
get_timewait6_sock(seq, v, st->num);
net/ipv6/tcp_ipv6.c
2244
get_openreq6(seq, v, st->num);
net/ipv6/tcp_ipv6.c
2246
get_tcp6_sock(seq, v, st->num);
net/ipv6/tcp_ipv6.c
329
union tcp_seq_and_ts_off st;
net/ipv6/tcp_ipv6.c
331
st = secure_tcpv6_seq_and_ts_off(net,
net/ipv6/tcp_ipv6.c
337
WRITE_ONCE(tp->write_seq, st.seq);
net/ipv6/tcp_ipv6.c
338
WRITE_ONCE(tp->tsoffset, st.ts_off);
net/mac80211/mesh.h
276
struct ieee80211_tx_status *st);
net/mac80211/mesh_hwmp.c
250
struct ieee80211_tx_status *st)
net/mac80211/mesh_hwmp.c
252
struct ieee80211_tx_info *txinfo = st->info;
net/mac80211/mesh_hwmp.c
267
if (st->n_rates)
net/mac80211/rate.c
102
sband = local->hw.wiphy->bands[st->info->band];
net/mac80211/rate.c
106
ref->ops->tx_status_ext(ref->priv, sband, priv_sta, st);
net/mac80211/rate.c
107
else if (st->skb)
net/mac80211/rate.c
108
ref->ops->tx_status(ref->priv, sband, st->sta, priv_sta, st->skb);
net/mac80211/rate.c
89
struct ieee80211_tx_status *st)
net/mac80211/rate.c
92
struct sta_info *sta = container_of(st->sta, struct sta_info, sta);
net/mac80211/rate.c
99
if (st->info->band >= NUM_NL80211_BANDS)
net/mac80211/rate.h
30
struct ieee80211_tx_status *st);
net/mac80211/rc80211_minstrel_ht.c
1283
void *priv_sta, struct ieee80211_tx_status *st)
net/mac80211/rc80211_minstrel_ht.c
1285
struct ieee80211_tx_info *info = st->info;
net/mac80211/rc80211_minstrel_ht.c
1322
if (st->rates && st->n_rates) {
net/mac80211/rc80211_minstrel_ht.c
1323
last = !minstrel_ht_ri_txstat_valid(mp, mi, &(st->rates[0]));
net/mac80211/rc80211_minstrel_ht.c
1325
last = (i == st->n_rates - 1) ||
net/mac80211/rc80211_minstrel_ht.c
1327
&(st->rates[i + 1]));
net/mac80211/rc80211_minstrel_ht.c
1330
&(st->rates[i]));
net/mac80211/rc80211_minstrel_ht.c
1335
rate->attempts += st->rates[i].try_count *
net/netfilter/nf_conntrack_expect.c
640
struct ct_expect_iter_state *st = seq->private;
net/netfilter/nf_conntrack_expect.c
643
for (st->bucket = 0; st->bucket < nf_ct_expect_hsize; st->bucket++) {
net/netfilter/nf_conntrack_expect.c
644
n = rcu_dereference(hlist_first_rcu(&nf_ct_expect_hash[st->bucket]));
net/netfilter/nf_conntrack_expect.c
654
struct ct_expect_iter_state *st = seq->private;
net/netfilter/nf_conntrack_expect.c
658
if (++st->bucket >= nf_ct_expect_hsize)
net/netfilter/nf_conntrack_expect.c
660
head = rcu_dereference(hlist_first_rcu(&nf_ct_expect_hash[st->bucket]));
net/netfilter/nf_conntrack_netlink.c
2485
__u16 cpu, const struct ip_conntrack_stat *st)
net/netfilter/nf_conntrack_netlink.c
2497
if (nla_put_be32(skb, CTA_STATS_FOUND, htonl(st->found)) ||
net/netfilter/nf_conntrack_netlink.c
2498
nla_put_be32(skb, CTA_STATS_INVALID, htonl(st->invalid)) ||
net/netfilter/nf_conntrack_netlink.c
2499
nla_put_be32(skb, CTA_STATS_INSERT, htonl(st->insert)) ||
net/netfilter/nf_conntrack_netlink.c
2501
htonl(st->insert_failed)) ||
net/netfilter/nf_conntrack_netlink.c
2502
nla_put_be32(skb, CTA_STATS_DROP, htonl(st->drop)) ||
net/netfilter/nf_conntrack_netlink.c
2503
nla_put_be32(skb, CTA_STATS_EARLY_DROP, htonl(st->early_drop)) ||
net/netfilter/nf_conntrack_netlink.c
2504
nla_put_be32(skb, CTA_STATS_ERROR, htonl(st->error)) ||
net/netfilter/nf_conntrack_netlink.c
2506
htonl(st->search_restart)) ||
net/netfilter/nf_conntrack_netlink.c
2508
htonl(st->clash_resolve)) ||
net/netfilter/nf_conntrack_netlink.c
2510
htonl(st->chaintoolong)))
net/netfilter/nf_conntrack_netlink.c
2532
const struct ip_conntrack_stat *st;
net/netfilter/nf_conntrack_netlink.c
2537
st = per_cpu_ptr(net->ct.stat, cpu);
net/netfilter/nf_conntrack_netlink.c
2541
cpu, st) < 0)
net/netfilter/nf_conntrack_netlink.c
3685
const struct ip_conntrack_stat *st)
net/netfilter/nf_conntrack_netlink.c
3697
if (nla_put_be32(skb, CTA_STATS_EXP_NEW, htonl(st->expect_new)) ||
net/netfilter/nf_conntrack_netlink.c
3698
nla_put_be32(skb, CTA_STATS_EXP_CREATE, htonl(st->expect_create)) ||
net/netfilter/nf_conntrack_netlink.c
3699
nla_put_be32(skb, CTA_STATS_EXP_DELETE, htonl(st->expect_delete)))
net/netfilter/nf_conntrack_netlink.c
3721
const struct ip_conntrack_stat *st;
net/netfilter/nf_conntrack_netlink.c
3726
st = per_cpu_ptr(net->ct.stat, cpu);
net/netfilter/nf_conntrack_netlink.c
3729
cpu, st) < 0)
net/netfilter/nf_conntrack_standalone.c
102
struct ct_iter_state *st)
net/netfilter/nf_conntrack_standalone.c
108
for (i = st->bucket; i < st->htable_size; i++) {
net/netfilter/nf_conntrack_standalone.c
112
hlist_nulls_for_each_entry_rcu(h, n, &st->hash[i], hnnode) {
net/netfilter/nf_conntrack_standalone.c
119
if (++skip <= st->skip_elems)
net/netfilter/nf_conntrack_standalone.c
132
st->skip_elems = skip;
net/netfilter/nf_conntrack_standalone.c
133
st->bucket = i;
net/netfilter/nf_conntrack_standalone.c
141
st->skip_elems = 0;
net/netfilter/nf_conntrack_standalone.c
144
st->bucket = i;
net/netfilter/nf_conntrack_standalone.c
151
struct ct_iter_state *st = seq->private;
net/netfilter/nf_conntrack_standalone.c
154
st->time_now = ktime_get_real_ns();
net/netfilter/nf_conntrack_standalone.c
157
nf_conntrack_get_ht(&st->hash, &st->htable_size);
net/netfilter/nf_conntrack_standalone.c
160
st->skip_elems = 0;
net/netfilter/nf_conntrack_standalone.c
161
st->bucket = 0;
net/netfilter/nf_conntrack_standalone.c
162
} else if (st->skip_elems) {
net/netfilter/nf_conntrack_standalone.c
164
st->skip_elems--;
net/netfilter/nf_conntrack_standalone.c
167
return ct_get_next(net, st);
net/netfilter/nf_conntrack_standalone.c
172
struct ct_iter_state *st = s->private;
net/netfilter/nf_conntrack_standalone.c
176
return ct_get_next(net, st);
net/netfilter/nf_conntrack_standalone.c
237
struct ct_iter_state *st = s->private;
net/netfilter/nf_conntrack_standalone.c
243
delta_time = st->time_now - tstamp->start;
net/netfilter/nf_conntrack_standalone.c
318
struct ct_iter_state *st = s->private;
net/netfilter/nf_conntrack_standalone.c
320
st->skip_elems--;
net/netfilter/nf_conntrack_standalone.c
440
const struct ip_conntrack_stat *st = v;
net/netfilter/nf_conntrack_standalone.c
453
st->clash_resolve,
net/netfilter/nf_conntrack_standalone.c
454
st->found,
net/netfilter/nf_conntrack_standalone.c
456
st->invalid,
net/netfilter/nf_conntrack_standalone.c
459
st->chaintoolong,
net/netfilter/nf_conntrack_standalone.c
460
st->insert,
net/netfilter/nf_conntrack_standalone.c
461
st->insert_failed,
net/netfilter/nf_conntrack_standalone.c
462
st->drop,
net/netfilter/nf_conntrack_standalone.c
463
st->early_drop,
net/netfilter/nf_conntrack_standalone.c
464
st->error,
net/netfilter/nf_conntrack_standalone.c
466
st->expect_new,
net/netfilter/nf_conntrack_standalone.c
467
st->expect_create,
net/netfilter/nf_conntrack_standalone.c
468
st->expect_delete,
net/netfilter/nf_conntrack_standalone.c
469
st->search_restart
net/netfilter/nf_flow_table_procfs.c
45
const struct nf_flow_table_stat *st = v;
net/netfilter/nf_flow_table_procfs.c
53
st->count_wq_add,
net/netfilter/nf_flow_table_procfs.c
54
st->count_wq_del,
net/netfilter/nf_flow_table_procfs.c
55
st->count_wq_stats
net/netfilter/nfnetlink_log.c
1058
static struct hlist_node *get_first(struct net *net, struct iter_state *st)
net/netfilter/nfnetlink_log.c
1061
if (!st)
net/netfilter/nfnetlink_log.c
1066
for (st->bucket = 0; st->bucket < INSTANCE_BUCKETS; st->bucket++) {
net/netfilter/nfnetlink_log.c
1067
struct hlist_head *head = &log->instance_table[st->bucket];
net/netfilter/nfnetlink_log.c
1075
static struct hlist_node *get_next(struct net *net, struct iter_state *st,
net/netfilter/nfnetlink_log.c
1083
if (++st->bucket >= INSTANCE_BUCKETS)
net/netfilter/nfnetlink_log.c
1087
head = &log->instance_table[st->bucket];
net/netfilter/nfnetlink_log.c
1093
static struct hlist_node *get_idx(struct net *net, struct iter_state *st,
net/netfilter/nfnetlink_log.c
1097
head = get_first(net, st);
net/netfilter/nfnetlink_log.c
1100
while (pos && (head = get_next(net, st, head)))
net/netfilter/nfnetlink_queue.c
1966
struct iter_state *st = seq->private;
net/netfilter/nfnetlink_queue.c
1970
if (!st)
net/netfilter/nfnetlink_queue.c
1975
for (st->bucket = 0; st->bucket < INSTANCE_BUCKETS; st->bucket++) {
net/netfilter/nfnetlink_queue.c
1976
if (!hlist_empty(&q->instance_table[st->bucket]))
net/netfilter/nfnetlink_queue.c
1977
return q->instance_table[st->bucket].first;
net/netfilter/nfnetlink_queue.c
1984
struct iter_state *st = seq->private;
net/netfilter/nfnetlink_queue.c
1991
if (++st->bucket >= INSTANCE_BUCKETS)
net/netfilter/nfnetlink_queue.c
1995
h = q->instance_table[st->bucket].first;
net/netfilter/x_tables.c
892
const struct compat_xt_standard_target *st = (const void *)t;
net/netfilter/x_tables.c
894
if (COMPAT_XT_ALIGN(target_offset + sizeof(*st)) != next_offset)
net/netfilter/x_tables.c
897
if (!verdict_ok(st->verdict))
net/netfilter/x_tables.c
986
const struct xt_standard_target *st = (const void *)t;
net/netfilter/x_tables.c
988
if (XT_ALIGN(target_offset + sizeof(*st)) != next_offset)
net/netfilter/x_tables.c
991
if (!verdict_ok(st->verdict))
net/netfilter/xt_recent.c
482
struct recent_iter_state *st = seq->private;
net/netfilter/xt_recent.c
483
const struct recent_table *t = st->table;
net/netfilter/xt_recent.c
489
for (st->bucket = 0; st->bucket < ip_list_hash_size; st->bucket++)
net/netfilter/xt_recent.c
490
list_for_each_entry(e, &t->iphash[st->bucket], list)
net/netfilter/xt_recent.c
498
struct recent_iter_state *st = seq->private;
net/netfilter/xt_recent.c
499
const struct recent_table *t = st->table;
net/netfilter/xt_recent.c
504
while (head == &t->iphash[st->bucket]) {
net/netfilter/xt_recent.c
505
if (++st->bucket >= ip_list_hash_size)
net/netfilter/xt_recent.c
507
head = t->iphash[st->bucket].next;
net/netfilter/xt_recent.c
521
struct recent_iter_state *st = seq->private;
net/netfilter/xt_recent.c
522
const struct recent_table *t = st->table;
net/netfilter/xt_recent.c
548
struct recent_iter_state *st;
net/netfilter/xt_recent.c
550
st = __seq_open_private(file, &recent_seq_ops, sizeof(*st));
net/netfilter/xt_recent.c
551
if (st == NULL)
net/netfilter/xt_recent.c
554
st->table = pde_data(inode);
net/packet/af_packet.c
4067
union tpacket_stats_u st;
net/packet/af_packet.c
4082
memcpy(&st, &po->stats, sizeof(st));
net/packet/af_packet.c
4089
st.stats3.tp_drops = drops;
net/packet/af_packet.c
4090
st.stats3.tp_packets += drops;
net/packet/af_packet.c
4091
data = &st.stats3;
net/packet/af_packet.c
4094
st.stats1.tp_drops = drops;
net/packet/af_packet.c
4095
st.stats1.tp_packets += drops;
net/packet/af_packet.c
4096
data = &st.stats1;
net/sched/sch_choke.c
467
struct tc_choke_xstats st = {
net/sched/sch_choke.c
476
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_codel.c
261
struct tc_codel_xstats st = {
net/sched/sch_codel.c
272
if (st.dropping) {
net/sched/sch_codel.c
276
st.drop_next = codel_time_to_us(delta);
net/sched/sch_codel.c
278
st.drop_next = -codel_time_to_us(-delta);
net/sched/sch_codel.c
281
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_dualpi2.c
1083
struct tc_dualpi2_xstats st = {
net/sched/sch_dualpi2.c
1098
st.delay_l = convert_ns_to_usec(ql);
net/sched/sch_dualpi2.c
1099
st.delay_c = convert_ns_to_usec(qc);
net/sched/sch_dualpi2.c
1100
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_fq.c
1343
struct tc_fq_qd_stats st;
net/sched/sch_fq.c
1346
st.pad = 0;
net/sched/sch_fq.c
1350
st.gc_flows = q->stat_gc_flows;
net/sched/sch_fq.c
1351
st.highprio_packets = 0;
net/sched/sch_fq.c
1352
st.fastpath_packets = q->internal.stat_fastpath_packets;
net/sched/sch_fq.c
1353
st.tcp_retrans = 0;
net/sched/sch_fq.c
1354
st.throttled = q->stat_throttled;
net/sched/sch_fq.c
1355
st.flows_plimit = q->stat_flows_plimit;
net/sched/sch_fq.c
1356
st.pkts_too_long = q->stat_pkts_too_long;
net/sched/sch_fq.c
1357
st.allocation_errors = q->stat_allocation_errors;
net/sched/sch_fq.c
1358
st.time_next_delayed_flow = q->time_next_delayed_flow + q->timer_slack -
net/sched/sch_fq.c
1360
st.flows = q->flows;
net/sched/sch_fq.c
1361
st.inactive_flows = q->inactive_flows;
net/sched/sch_fq.c
1362
st.throttled_flows = q->throttled_flows;
net/sched/sch_fq.c
1363
st.unthrottle_latency_ns = min_t(unsigned long,
net/sched/sch_fq.c
1365
st.ce_mark = q->stat_ce_mark;
net/sched/sch_fq.c
1366
st.horizon_drops = q->stat_horizon_drops;
net/sched/sch_fq.c
1367
st.horizon_caps = q->stat_horizon_caps;
net/sched/sch_fq.c
1369
st.band_drops[i] = q->stat_band_drops[i];
net/sched/sch_fq.c
1370
st.band_pkt_count[i] = q->band_pkt_count[i];
net/sched/sch_fq.c
1374
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_fq_codel.c
622
struct tc_fq_codel_xstats st = {
net/sched/sch_fq_codel.c
629
st.qdisc_stats.maxpacket = q->cstats.maxpacket;
net/sched/sch_fq_codel.c
630
st.qdisc_stats.drop_overlimit = q->drop_overlimit;
net/sched/sch_fq_codel.c
631
st.qdisc_stats.ecn_mark = q->cstats.ecn_mark;
net/sched/sch_fq_codel.c
632
st.qdisc_stats.new_flow_count = q->new_flow_count;
net/sched/sch_fq_codel.c
633
st.qdisc_stats.ce_mark = q->cstats.ce_mark;
net/sched/sch_fq_codel.c
634
st.qdisc_stats.memory_usage = q->memory_usage;
net/sched/sch_fq_codel.c
635
st.qdisc_stats.drop_overmemory = q->drop_overmemory;
net/sched/sch_fq_codel.c
638
st.qdisc_stats.new_flows_len++;
net/sched/sch_fq_codel.c
641
st.qdisc_stats.old_flows_len++;
net/sched/sch_fq_codel.c
644
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_fq_pie.c
512
struct tc_fq_pie_xstats st = { 0 };
net/sched/sch_fq_pie.c
517
st.packets_in = q->stats.packets_in;
net/sched/sch_fq_pie.c
518
st.overlimit = q->stats.overlimit;
net/sched/sch_fq_pie.c
519
st.overmemory = q->overmemory;
net/sched/sch_fq_pie.c
520
st.dropped = q->stats.dropped;
net/sched/sch_fq_pie.c
521
st.ecn_mark = q->stats.ecn_mark;
net/sched/sch_fq_pie.c
522
st.new_flow_count = q->new_flow_count;
net/sched/sch_fq_pie.c
523
st.memory_usage = q->memory_usage;
net/sched/sch_fq_pie.c
526
st.new_flows_len++;
net/sched/sch_fq_pie.c
529
st.old_flows_len++;
net/sched/sch_fq_pie.c
532
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_hhf.c
717
struct tc_hhf_xstats st = {
net/sched/sch_hhf.c
724
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_netem.c
1339
struct tc_netem_xstats st = {
net/sched/sch_netem.c
1349
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_pie.c
501
struct tc_pie_xstats st = {
net/sched/sch_pie.c
513
st.dq_rate_estimating = READ_ONCE(q->params.dq_rate_estimator);
net/sched/sch_pie.c
516
if (st.dq_rate_estimating)
net/sched/sch_pie.c
517
st.avg_dq_rate = READ_ONCE(q->vars.avg_dq_rate) *
net/sched/sch_pie.c
520
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_red.c
459
struct tc_red_xstats st = {0};
net/sched/sch_red.c
473
st.early = READ_ONCE(q->stats.prob_drop) +
net/sched/sch_red.c
476
st.pdrop = READ_ONCE(q->stats.pdrop);
net/sched/sch_red.c
478
st.marked = READ_ONCE(q->stats.prob_mark) +
net/sched/sch_red.c
481
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sched/sch_sfb.c
611
struct tc_sfb_xstats st = {
net/sched/sch_sfb.c
620
st.maxqlen = sfb_compute_qlen(&st.maxprob, &st.avgprob, q);
net/sched/sch_sfb.c
622
return gnet_stats_copy_app(d, &st, sizeof(st));
net/sunrpc/xprtsock.c
1796
struct sockaddr_storage st;
net/xfrm/xfrm_iptfs.c
1963
static struct sk_buff *iptfs_copy_create_frag(struct skb_seq_state *st, u32 offset, u32 copy_len)
net/xfrm/xfrm_iptfs.c
1965
struct sk_buff *src = st->root_skb;
net/xfrm/xfrm_iptfs.c
1974
err = skb_copy_seq_read(st, offset, skb_put(skb, copy_len), copy_len);
net/xfrm/xfrm_iptfs.c
534
u32 off, u32 len, struct skb_seq_state *st, u32 copy_len)
net/xfrm/xfrm_iptfs.c
550
skb_copy_seq_read(st, off, skb_put(skb, copy_len), copy_len)) {
net/xfrm/xfrm_iptfs.c
551
XFRM_INC_STATS(dev_net(st->root_skb->dev),
net/xfrm/xfrm_iptfs.c
578
iptfs_pskb_extract_seq(u32 skblen, struct skb_seq_state *st, u32 off, int len)
net/xfrm/xfrm_iptfs.c
580
struct sk_buff *skb = iptfs_alloc_skb(st->root_skb, skblen, false);
net/xfrm/xfrm_iptfs.c
584
if (skb_copy_seq_read(st, off, skb_put(skb, len), len)) {
net/xfrm/xfrm_iptfs.c
585
XFRM_INC_STATS(dev_net(st->root_skb->dev), LINUX_MIB_XFRMINERROR);
net/xfrm/xfrm_iptfs.c
743
struct skb_seq_state *st, struct sk_buff *skb,
net/xfrm/xfrm_iptfs.c
812
if (skb_copy_seq_read(st, data, &xtfs->ra_runt[runtlen],
net/xfrm/xfrm_iptfs.c
871
if (skb_copy_seq_read(st, data, skb_put(newskb, copylen),
net/xfrm/xfrm_iptfs.c
912
if (skb_copy_seq_read(st, data, skb_put(newskb, copylen),
samples/bpf/xdp_sample_user.c
1242
sigset_t st;
samples/bpf/xdp_sample_user.c
1244
sigemptyset(&st);
samples/bpf/xdp_sample_user.c
1245
sigaddset(&st, SIGQUIT);
samples/bpf/xdp_sample_user.c
1246
sigaddset(&st, SIGINT);
samples/bpf/xdp_sample_user.c
1247
sigaddset(&st, SIGTERM);
samples/bpf/xdp_sample_user.c
1249
if (sigprocmask(SIG_BLOCK, &st, NULL) < 0)
samples/bpf/xdp_sample_user.c
1252
sample_sig_fd = signalfd(-1, &st, SFD_CLOEXEC | SFD_NONBLOCK);
scripts/asn1_compiler.c
562
struct stat st;
scripts/asn1_compiler.c
600
if (fstat(fd, &st) < 0) {
scripts/asn1_compiler.c
605
if (!(buffer = malloc(st.st_size + 1))) {
scripts/asn1_compiler.c
610
if ((readlen = read(fd, buffer, st.st_size)) < 0) {
scripts/asn1_compiler.c
620
if (readlen != st.st_size) {
scripts/basic/fixdep.c
215
struct stat st;
scripts/basic/fixdep.c
225
if (fstat(fd, &st) < 0) {
scripts/basic/fixdep.c
230
buf = xmalloc(st.st_size + 1);
scripts/basic/fixdep.c
231
if (read(fd, buf, st.st_size) != st.st_size) {
scripts/basic/fixdep.c
235
buf[st.st_size] = '\0';
scripts/dtc/fstree.c
15
struct stat st;
scripts/dtc/fstree.c
33
if (stat(tmpname, &st) < 0)
scripts/dtc/fstree.c
36
if (S_ISREG(st.st_mode)) {
scripts/dtc/fstree.c
48
st.st_size),
scripts/dtc/fstree.c
53
} else if (S_ISDIR(st.st_mode)) {
scripts/insert-sys-cert.c
203
struct stat st;
scripts/insert-sys-cert.c
212
if (fstat(fd, &st)) {
scripts/insert-sys-cert.c
217
*size = st.st_size;
scripts/insert-sys-cert.c
230
struct stat st;
scripts/insert-sys-cert.c
239
if (fstat(fd, &st)) {
scripts/insert-sys-cert.c
244
*size = st.st_size;
scripts/kconfig/confdata.c
30
struct stat st;
scripts/kconfig/confdata.c
32
return !stat(path, &st);
scripts/kconfig/confdata.c
38
struct stat st;
scripts/kconfig/confdata.c
40
if (stat(path, &st))
scripts/kconfig/confdata.c
43
return S_ISDIR(st.st_mode);
scripts/kconfig/expr.h
201
#define for_all_properties(sym, st, tok) \
scripts/kconfig/expr.h
202
for (st = sym->prop; st; st = st->next) \
scripts/kconfig/expr.h
203
if (st->type == (tok))
scripts/kconfig/expr.h
204
#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT)
scripts/kconfig/expr.h
205
#define for_all_prompts(sym, st) \
scripts/kconfig/expr.h
206
for (st = sym->prop; st; st = st->next) \
scripts/kconfig/expr.h
207
if (st->text)
scripts/mod/modpost.c
117
struct stat st;
scripts/mod/modpost.c
128
if (fstat(fd, &st) < 0) {
scripts/mod/modpost.c
133
buf = xmalloc(st.st_size + 1);
scripts/mod/modpost.c
135
nbytes = st.st_size;
scripts/mod/modpost.c
148
buf[st.st_size] = '\0';
scripts/mod/modpost.c
2073
struct stat st;
scripts/mod/modpost.c
2079
if (fstat(fileno(file), &st) < 0)
scripts/mod/modpost.c
2082
if (st.st_size != b->pos)
scripts/mod/modpost.c
385
struct stat st;
scripts/mod/modpost.c
392
if (fstat(fd, &st))
scripts/mod/modpost.c
395
*size = st.st_size;
security/selinux/selinuxfs.c
1429
struct avc_cache_stats *st = v;
security/selinux/selinuxfs.c
1435
unsigned int lookups = st->lookups;
security/selinux/selinuxfs.c
1436
unsigned int misses = st->misses;
security/selinux/selinuxfs.c
1439
hits, misses, st->allocations,
security/selinux/selinuxfs.c
1440
st->reclaims, st->frees);
sound/firewire/fireworks/fireworks_command.c
154
u32 st = be32_to_cpu(header->status);
sound/firewire/fireworks/fireworks_command.c
159
st < ARRAY_SIZE(efr_status_names) ?
sound/firewire/fireworks/fireworks_command.c
160
efr_status_names[st] : "unknown");
sound/parisc/harmony.c
153
harmony_write(h, HARMONY_GAINCTL, h->st.gain);
sound/parisc/harmony.c
164
(h->st.format << 6) |
sound/parisc/harmony.c
165
(h->st.stereo << 5) |
sound/parisc/harmony.c
166
(h->st.rate));
sound/parisc/harmony.c
185
if (h->psubs && h->st.playing) {
sound/parisc/harmony.c
204
if (h->csubs && h->st.capturing) {
sound/parisc/harmony.c
288
if (h->st.capturing)
sound/parisc/harmony.c
294
h->st.playing = 1;
sound/parisc/harmony.c
301
h->st.playing = 0;
sound/parisc/harmony.c
322
if (h->st.playing)
sound/parisc/harmony.c
328
h->st.capturing = 1;
sound/parisc/harmony.c
335
h->st.capturing = 0;
sound/parisc/harmony.c
354
int o = h->st.format;
sound/parisc/harmony.c
387
if (h->st.capturing)
sound/parisc/harmony.c
394
h->st.playing = 0;
sound/parisc/harmony.c
396
h->st.rate = snd_harmony_rate_bits(rt->rate);
sound/parisc/harmony.c
397
h->st.format = snd_harmony_set_data_format(h, rt->format, 0);
sound/parisc/harmony.c
400
h->st.stereo = HARMONY_SS_STEREO;
sound/parisc/harmony.c
402
h->st.stereo = HARMONY_SS_MONO;
sound/parisc/harmony.c
417
if (h->st.playing)
sound/parisc/harmony.c
424
h->st.capturing = 0;
sound/parisc/harmony.c
426
h->st.rate = snd_harmony_rate_bits(rt->rate);
sound/parisc/harmony.c
427
h->st.format = snd_harmony_set_data_format(h, rt->format, 0);
sound/parisc/harmony.c
430
h->st.stereo = HARMONY_SS_STEREO;
sound/parisc/harmony.c
432
h->st.stereo = HARMONY_SS_MONO;
sound/parisc/harmony.c
449
if (!(h->st.playing) || (h->psubs == NULL))
sound/parisc/harmony.c
478
if (!(h->st.capturing) || (h->csubs == NULL))
sound/parisc/harmony.c
623
h->st.format = snd_harmony_set_data_format(h,
sound/parisc/harmony.c
633
harmony_write(h, HARMONY_GAINCTL, h->st.gain);
sound/parisc/harmony.c
666
left = (h->st.gain >> shift_left) & mask;
sound/parisc/harmony.c
667
right = (h->st.gain >> shift_right) & mask;
sound/parisc/harmony.c
690
int old_gain = h->st.gain;
sound/parisc/harmony.c
697
h->st.gain &= ~( (mask << shift_left ) );
sound/parisc/harmony.c
698
h->st.gain |= (left << shift_left);
sound/parisc/harmony.c
704
h->st.gain &= ~( (mask << shift_right) );
sound/parisc/harmony.c
705
h->st.gain |= (right << shift_right);
sound/parisc/harmony.c
710
return h->st.gain != old_gain;
sound/parisc/harmony.c
731
value = (h->st.gain >> HARMONY_GAIN_IS_SHIFT) & 1;
sound/parisc/harmony.c
743
int old_gain = h->st.gain;
sound/parisc/harmony.c
748
h->st.gain &= ~HARMONY_GAIN_IS_MASK;
sound/parisc/harmony.c
749
h->st.gain |= value << HARMONY_GAIN_IS_SHIFT;
sound/parisc/harmony.c
753
return h->st.gain != old_gain;
sound/parisc/harmony.c
792
h->st.gain = HARMONY_GAIN_DEFAULT;
sound/parisc/harmony.h
32
} st;
sound/pci/ad1889.c
123
u16 st;
sound/pci/ad1889.c
124
st = ad1889_readw(chip, AD_DS_WADA) &
sound/pci/ad1889.c
126
ad1889_writew(chip, AD_DS_WADA, st);
sound/pci/ad1889.c
133
u16 st;
sound/pci/ad1889.c
134
st = ad1889_readw(chip, AD_DS_WADA) | AD_DS_WADA_RWAM | AD_DS_WADA_LWAM;
sound/pci/ad1889.c
135
ad1889_writew(chip, AD_DS_WADA, st);
sound/pci/ad1889.c
562
unsigned long st;
sound/pci/ad1889.c
565
st = ad1889_readl(chip, AD_DMA_DISR);
sound/pci/ad1889.c
568
ad1889_writel(chip, AD_DMA_DISR, st);
sound/pci/ad1889.c
570
st &= AD_INTR_MASK;
sound/pci/ad1889.c
572
if (unlikely(!st))
sound/pci/ad1889.c
575
if (st & (AD_DMA_DISR_PMAI|AD_DMA_DISR_PTAI))
sound/pci/ad1889.c
579
if ((st & AD_DMA_DISR_WAVI) && chip->psubs)
sound/pci/ad1889.c
581
if ((st & AD_DMA_DISR_ADCI) && chip->csubs)
sound/pci/ctxfi/cthardware.h
98
int (*src_set_st)(void *blk, unsigned int st);
sound/pci/ctxfi/cthw20k1.c
248
static int src_set_st(void *blk, unsigned int st)
sound/pci/ctxfi/cthw20k1.c
252
set_field(&ctl->ctl, SRCCTL_ST, st);
sound/pci/ctxfi/cthw20k2.c
248
static int src_set_st(void *blk, unsigned int st)
sound/pci/ctxfi/cthw20k2.c
252
set_field(&ctl->ctl, SRCCTL_ST, st);
sound/pci/ctxfi/ctsrc.c
94
static int src_set_st(struct src *src, unsigned int st)
sound/pci/ctxfi/ctsrc.c
99
hw->src_set_st(src->rsc.ctrl_blk, st);
sound/pci/ctxfi/ctsrc.h
60
int (*set_st)(struct src *src, unsigned int st);
sound/pci/echoaudio/echoaudio.c
1811
int ss, st;
sound/pci/echoaudio/echoaudio.c
1814
st = service_irq(chip);
sound/pci/echoaudio/echoaudio.c
1815
if (st < 0) {
sound/pci/echoaudio/echoaudio.c
1834
if (st > 0 && chip->midi_in) {
sound/pci/echoaudio/echoaudio.c
1835
snd_rawmidi_receive(chip->midi_in, chip->midi_buffer, st);
sound/pci/echoaudio/echoaudio.c
1836
dev_dbg(chip->card->dev, "rawmidi_iread=%d\n", st);
sound/pci/echoaudio/echoaudio_dsp.c
1012
int st;
sound/pci/echoaudio/echoaudio_dsp.c
1016
st = 0;
sound/pci/echoaudio/echoaudio_dsp.c
1020
st = midi_service_irq(chip); /* Returns how many midi bytes we received */
sound/pci/echoaudio/echoaudio_dsp.c
1025
return st;
sound/pci/ice1712/psc724.c
108
u32 st, bits;
sound/pci/ice1712/psc724.c
113
st = ((addr & 0x7f) << 9) | (data & 0x1ff);
sound/pci/ice1712/psc724.c
123
st <<= 1;
sound/pci/ice1712/psc724.c
124
if (st & 0x10000)
sound/pci/ice1712/se.c
122
unsigned int st;
sound/pci/ice1712/se.c
132
st = ((addr & 0x7f) << 9) | (data & 0x1ff);
sound/pci/ice1712/se.c
141
st = (st << 1);
sound/pci/ice1712/se.c
142
if (st & 0x10000)
sound/soc/codecs/adau7118.c
129
struct adau7118_data *st =
sound/soc/codecs/adau7118.c
133
dev_dbg(st->dev, "Set channel map, %d", tx_num);
sound/soc/codecs/adau7118.c
149
struct adau7118_data *st =
sound/soc/codecs/adau7118.c
154
dev_dbg(st->dev, "Set format, fmt:%d\n", fmt);
sound/soc/codecs/adau7118.c
170
st->right_j = true;
sound/soc/codecs/adau7118.c
179
dev_err(st->dev, "Invalid format %d",
sound/soc/codecs/adau7118.c
201
dev_err(st->dev, "Invalid Inv mask %d",
sound/soc/codecs/adau7118.c
218
struct adau7118_data *st =
sound/soc/codecs/adau7118.c
222
dev_dbg(st->dev, "Set tristate, %d\n", tristate);
sound/soc/codecs/adau7118.c
238
struct adau7118_data *st =
sound/soc/codecs/adau7118.c
243
dev_dbg(st->dev, "Set tdm, slots:%d width:%d\n", slots, slot_width);
sound/soc/codecs/adau7118.c
256
dev_err(st->dev, "Invalid slot width:%d\n", slot_width);
sound/soc/codecs/adau7118.c
266
st->slot_width = slot_width;
sound/soc/codecs/adau7118.c
267
st->slots = slots;
sound/soc/codecs/adau7118.c
276
struct adau7118_data *st =
sound/soc/codecs/adau7118.c
282
if (!st->slots) {
sound/soc/codecs/adau7118.c
293
slots_width = st->slot_width;
sound/soc/codecs/adau7118.c
297
dev_err(st->dev, "Invalid data_width:%d, slots_width:%d",
sound/soc/codecs/adau7118.c
302
if (st->right_j) {
sound/soc/codecs/adau7118.c
317
dev_err(st->dev,
sound/soc/codecs/adau7118.c
337
struct adau7118_data *st = snd_soc_component_get_drvdata(component);
sound/soc/codecs/adau7118.c
341
dev_dbg(st->dev, "Set bias level %d\n", level);
sound/soc/codecs/adau7118.c
351
ret = regulator_enable(st->iovdd);
sound/soc/codecs/adau7118.c
356
ret = regulator_enable(st->dvdd);
sound/soc/codecs/adau7118.c
358
regulator_disable(st->iovdd);
sound/soc/codecs/adau7118.c
362
if (st->hw_mode)
sound/soc/codecs/adau7118.c
365
regcache_cache_only(st->map, false);
sound/soc/codecs/adau7118.c
372
ret = regulator_disable(st->dvdd);
sound/soc/codecs/adau7118.c
376
ret = regulator_disable(st->iovdd);
sound/soc/codecs/adau7118.c
380
if (st->hw_mode)
sound/soc/codecs/adau7118.c
384
regcache_mark_dirty(st->map);
sound/soc/codecs/adau7118.c
385
regcache_cache_only(st->map, true);
sound/soc/codecs/adau7118.c
395
struct adau7118_data *st = snd_soc_component_get_drvdata(component);
sound/soc/codecs/adau7118.c
399
if (st->hw_mode) {
sound/soc/codecs/adau7118.c
408
snd_soc_component_init_regmap(component, st->map);
sound/soc/codecs/adau7118.c
454
static int adau7118_regulator_setup(struct adau7118_data *st)
sound/soc/codecs/adau7118.c
456
st->iovdd = devm_regulator_get(st->dev, "iovdd");
sound/soc/codecs/adau7118.c
457
if (IS_ERR(st->iovdd)) {
sound/soc/codecs/adau7118.c
458
dev_err(st->dev, "Could not get iovdd: %ld\n",
sound/soc/codecs/adau7118.c
459
PTR_ERR(st->iovdd));
sound/soc/codecs/adau7118.c
460
return PTR_ERR(st->iovdd);
sound/soc/codecs/adau7118.c
463
st->dvdd = devm_regulator_get(st->dev, "dvdd");
sound/soc/codecs/adau7118.c
464
if (IS_ERR(st->dvdd)) {
sound/soc/codecs/adau7118.c
465
dev_err(st->dev, "Could not get dvdd: %ld\n",
sound/soc/codecs/adau7118.c
466
PTR_ERR(st->dvdd));
sound/soc/codecs/adau7118.c
467
return PTR_ERR(st->dvdd);
sound/soc/codecs/adau7118.c
470
if (!st->hw_mode) {
sound/soc/codecs/adau7118.c
471
regcache_mark_dirty(st->map);
sound/soc/codecs/adau7118.c
472
regcache_cache_only(st->map, true);
sound/soc/codecs/adau7118.c
478
static int adau7118_parset_dt(const struct adau7118_data *st)
sound/soc/codecs/adau7118.c
485
if (st->hw_mode)
sound/soc/codecs/adau7118.c
488
ret = device_property_read_u32(st->dev, "adi,decimation-ratio",
sound/soc/codecs/adau7118.c
502
dev_err(st->dev, "Invalid dec ratio: %u", dec_ratio);
sound/soc/codecs/adau7118.c
506
ret = regmap_update_bits(st->map,
sound/soc/codecs/adau7118.c
513
ret = device_property_read_u32_array(st->dev, "adi,pdm-clk-map",
sound/soc/codecs/adau7118.c
522
ret = regmap_update_bits(st->map,
sound/soc/codecs/adau7118.c
534
struct adau7118_data *st;
sound/soc/codecs/adau7118.c
537
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
sound/soc/codecs/adau7118.c
538
if (!st)
sound/soc/codecs/adau7118.c
541
st->dev = dev;
sound/soc/codecs/adau7118.c
542
st->hw_mode = hw_mode;
sound/soc/codecs/adau7118.c
543
dev_set_drvdata(dev, st);
sound/soc/codecs/adau7118.c
546
st->map = map;
sound/soc/codecs/adau7118.c
559
ret = adau7118_parset_dt(st);
sound/soc/codecs/adau7118.c
563
ret = adau7118_regulator_setup(st);
sound/soc/img/img-i2s-in.c
394
static int img_i2s_in_dma_prepare_slave_config(struct snd_pcm_substream *st,
sound/soc/img/img-i2s-in.c
398
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(st);
sound/soc/img/img-i2s-in.c
402
dma_data = snd_soc_dai_get_dma_data(snd_soc_rtd_to_cpu(rtd, 0), st);
sound/soc/img/img-i2s-in.c
404
ret = snd_hwparams_to_dma_slave_config(st, params, sc);
sound/soc/img/img-i2s-out.c
400
static int img_i2s_out_dma_prepare_slave_config(struct snd_pcm_substream *st,
sound/soc/img/img-i2s-out.c
404
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(st);
sound/soc/img/img-i2s-out.c
408
dma_data = snd_soc_dai_get_dma_data(snd_soc_rtd_to_cpu(rtd, 0), st);
sound/soc/img/img-i2s-out.c
410
ret = snd_hwparams_to_dma_slave_config(st, params, sc);
tools/bootconfig/main.c
327
struct stat st;
tools/bootconfig/main.c
329
ret = stat(path, &st);
tools/bootconfig/main.c
350
if (ret == 0 && st.st_size <= XBC_DATA_MAX) {
tools/bpf/bpf_exp.y
199
st
tools/bpf/bpf_exp.y
92
| st
tools/bpf/bpftool/common.c
661
struct stat st;
tools/bpf/bpftool/common.c
664
err = stat("/proc/self/ns/net", &st);
tools/bpf/bpftool/common.c
670
if (st.st_dev != ns_dev || st.st_ino != ns_ino)
tools/bpf/bpftool/gen.c
1230
struct stat st;
tools/bpf/bpftool/gen.c
1265
if (stat(file, &st)) {
tools/bpf/bpftool/gen.c
1269
file_sz = st.st_size;
tools/bpf/bpftool/gen.c
1645
struct stat st;
tools/bpf/bpftool/gen.c
1685
if (stat(file, &st)) {
tools/bpf/bpftool/gen.c
1689
file_sz = st.st_size;
tools/bpf/resolve_btfids/main.c
1370
struct stat st;
tools/bpf/resolve_btfids/main.c
1423
if (stat(btfids_path, &st) < 0) {
tools/bpf/resolve_btfids/main.c
1428
if ((size_t)st.st_size != data->d_size) {
tools/bpf/resolve_btfids/main.c
1430
BTF_IDS_SECTION, elf_path, data->d_size, btfids_path, (size_t)st.st_size);
tools/build/fixdep.c
123
struct stat st;
tools/build/fixdep.c
133
if (fstat(fd, &st) < 0) {
tools/build/fixdep.c
138
if (st.st_size == 0) {
tools/build/fixdep.c
143
map = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
tools/build/fixdep.c
150
parse_dep_file(map, st.st_size);
tools/build/fixdep.c
152
munmap(map, st.st_size);
tools/firmware/ihex2fw.c
107
if (fstat(infd, &st)) {
tools/firmware/ihex2fw.c
111
data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, infd, 0);
tools/firmware/ihex2fw.c
126
if (process_ihex(data, st.st_size))
tools/firmware/ihex2fw.c
75
struct stat st;
tools/hv/hv_fcopy_uio_daemon.c
58
struct stat st;
tools/hv/hv_fcopy_uio_daemon.c
80
if (stat(ring_path, &st) == 0) {
tools/hv/hv_fcopy_uio_daemon.c
85
ring_size = (uint32_t)st.st_size / 2;
tools/iio/iio_generic_buffer.c
405
struct stat st;
tools/iio/iio_generic_buffer.c
673
if (stat(buf_dir_name, &st)) {
tools/iio/iio_generic_buffer.c
680
if (!S_ISDIR(st.st_mode)) {
tools/include/linux/init.h
25
int (*setup_func)(char *st);
tools/laptop/freefall/freefall.c
109
struct stat st;
tools/laptop/freefall/freefall.c
131
if (stat("/sys/class/leds/hp::hddprotect/brightness", &st))
tools/lib/api/io_dir.h
92
struct stat st;
tools/lib/api/io_dir.h
94
if (fstatat(iod->dirfd, dent->d_name, &st, /*flags=*/0))
tools/lib/api/io_dir.h
97
if (S_ISDIR(st.st_mode)) {
tools/lib/bpf/btf.c
1634
struct stat st;
tools/lib/bpf/btf.c
1643
if (fstat(fd, &st) < 0) {
tools/lib/bpf/btf.c
1649
data = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
tools/lib/bpf/btf.c
1656
btf = btf_new(data, st.st_size, base_btf, true);
tools/lib/bpf/btf.c
1658
munmap(data, st.st_size);
tools/lib/subcmd/help.c
169
struct stat st;
tools/lib/subcmd/help.c
171
if (stat(name, &st) || /* stat, not lstat */
tools/lib/subcmd/help.c
172
!S_ISREG(st.st_mode))
tools/lib/subcmd/help.c
175
return st.st_mode & S_IXUSR;
tools/mm/page-types.c
1046
static void walk_file(const char *name, const struct stat *st)
tools/mm/page-types.c
1054
add_addr_range(0, st->st_size / page_size);
tools/mm/page-types.c
1063
int walk_tree(const char *name, const struct stat *st, int type, struct FTW *f)
tools/mm/page-types.c
1068
if (S_ISREG(st->st_mode))
tools/mm/page-types.c
1069
walk_file(name, st);
tools/mm/page-types.c
1078
struct stat st;
tools/mm/page-types.c
1086
if (stat(opt_file, &st))
tools/mm/page-types.c
1089
if (S_ISREG(st.st_mode)) {
tools/mm/page-types.c
1090
walk_file(opt_file, &st);
tools/mm/page-types.c
1091
} else if (S_ISDIR(st.st_mode)) {
tools/mm/page-types.c
1115
struct stat st;
tools/mm/page-types.c
1117
if (stat(path, &st))
tools/mm/page-types.c
1120
if (!S_ISDIR(st.st_mode))
tools/mm/page-types.c
1123
opt_cgroup = st.st_ino;
tools/mm/page-types.c
1379
show_file(opt_file, &st);
tools/mm/page-types.c
937
static void show_file(const char *name, const struct stat *st)
tools/mm/page-types.c
939
unsigned long long size = st->st_size;
tools/mm/page-types.c
944
name, (unsigned)st->st_ino,
tools/mm/page-types.c
947
strftime(atime, sizeof(atime), "%c", localtime(&st->st_atime));
tools/mm/page-types.c
948
strftime(mtime, sizeof(mtime), "%c", localtime(&st->st_mtime));
tools/mm/page-types.c
951
mtime, now - st->st_mtime,
tools/mm/page-types.c
952
atime, now - st->st_atime);
tools/mm/page_owner_sort.c
668
struct stat st;
tools/mm/page_owner_sort.c
809
fstat(fileno(fin), &st);
tools/mm/page_owner_sort.c
810
max_size = st.st_size / 100; /* hack ... */
tools/perf/builtin-c2c.c
858
int tot = 0, st = 0;
tools/perf/builtin-c2c.c
867
st = stats->rmt_hitm;
tools/perf/builtin-c2c.c
871
st = stats->lcl_hitm;
tools/perf/builtin-c2c.c
875
st = stats->tot_hitm;
tools/perf/builtin-c2c.c
879
st = stats->tot_peer;
tools/perf/builtin-c2c.c
886
p = tot ? (double) st / tot : 0;
tools/perf/builtin-c2c.c
952
static double percent(u32 st, u32 tot)
tools/perf/builtin-c2c.c
954
return tot ? 100. * (double) st / (double) tot : 0;
tools/perf/builtin-daemon.c
250
struct stat st;
tools/perf/builtin-daemon.c
257
if (stat(daemon->base, &st)) {
tools/perf/builtin-daemon.c
273
if ((st.st_mode & S_IFMT) != S_IFDIR) {
tools/perf/builtin-ftrace.c
1226
struct stats st;
tools/perf/builtin-ftrace.c
1245
init_stats(&prof->st);
tools/perf/builtin-ftrace.c
1249
update_stats(&prof->st, time_ns);
tools/perf/builtin-ftrace.c
1351
v1 = p1->st.mean;
tools/perf/builtin-ftrace.c
1352
v2 = p2->st.mean;
tools/perf/builtin-ftrace.c
1355
v1 = p1->st.max;
tools/perf/builtin-ftrace.c
1356
v2 = p2->st.max;
tools/perf/builtin-ftrace.c
1359
v1 = p1->st.n;
tools/perf/builtin-ftrace.c
1360
v2 = p2->st.n;
tools/perf/builtin-ftrace.c
1364
v1 = p1->st.n * p1->st.mean;
tools/perf/builtin-ftrace.c
1365
v2 = p2->st.n * p2->st.mean;
tools/perf/builtin-ftrace.c
1408
p->st.n * p->st.mean / 1000, p->st.mean / 1000,
tools/perf/builtin-ftrace.c
1409
p->st.max / 1000, p->st.max % 1000, p->st.n, name);
tools/perf/builtin-help.c
432
struct stat st;
tools/perf/builtin-help.c
437
if (stat(mkpath(path, sizeof(path), "%s/perf.html", html_path), &st)
tools/perf/builtin-help.c
438
|| !S_ISREG(st.st_mode)) {
tools/perf/builtin-kvm.c
237
static double percent(u64 st, u64 tot)
tools/perf/builtin-kvm.c
239
return tot ? 100. * (double) st / (double) tot : 0;
tools/perf/builtin-lock.c
115
struct thread_stat *st;
tools/perf/builtin-lock.c
117
st = thread_stat_find(tid);
tools/perf/builtin-lock.c
118
if (st)
tools/perf/builtin-lock.c
119
return st;
tools/perf/builtin-lock.c
121
st = zalloc(sizeof(struct thread_stat));
tools/perf/builtin-lock.c
122
if (!st) {
tools/perf/builtin-lock.c
127
st->tid = tid;
tools/perf/builtin-lock.c
1275
struct lock_stat *st;
tools/perf/builtin-lock.c
128
INIT_LIST_HEAD(&st->seq_list);
tools/perf/builtin-lock.c
1288
while ((st = pop_from_result())) {
tools/perf/builtin-lock.c
1290
if (st->broken)
tools/perf/builtin-lock.c
1292
if (!st->nr_acquired)
tools/perf/builtin-lock.c
1297
if (strlen(st->name) < 20) {
tools/perf/builtin-lock.c
1299
const char *name = st->name;
tools/perf/builtin-lock.c
130
thread_stat_insert(st);
tools/perf/builtin-lock.c
1305
t = perf_session__findnew(session, st->addr);
tools/perf/builtin-lock.c
1311
strncpy(cut_name, st->name, 16);
tools/perf/builtin-lock.c
132
return st;
tools/perf/builtin-lock.c
1321
key->print(key, st);
tools/perf/builtin-lock.c
1337
struct thread_stat *st;
tools/perf/builtin-lock.c
1345
st = container_of(node, struct thread_stat, rb);
tools/perf/builtin-lock.c
1346
t = perf_session__findnew(session, st->tid);
tools/perf/builtin-lock.c
1347
fprintf(lock_output, "%10d: %s\n", st->tid, thread__comm_str(t));
tools/perf/builtin-lock.c
1371
struct lock_stat *st;
tools/perf/builtin-lock.c
1375
hlist_for_each_entry(st, &lockhash_table[i], hash_entry) {
tools/perf/builtin-lock.c
1376
insert_to_result(st, compare_maps);
tools/perf/builtin-lock.c
1380
while ((st = pop_from_result()))
tools/perf/builtin-lock.c
1381
fprintf(lock_output, " %#llx: %s\n", (unsigned long long)st->addr, st->name);
tools/perf/builtin-lock.c
141
struct thread_stat *st;
tools/perf/builtin-lock.c
143
st = zalloc(sizeof(struct thread_stat));
tools/perf/builtin-lock.c
144
if (!st) {
tools/perf/builtin-lock.c
1456
struct lock_stat *st;
tools/perf/builtin-lock.c
1462
hlist_for_each_entry(st, &lockhash_table[i], hash_entry) {
tools/perf/builtin-lock.c
1463
combine_lock_stats(st);
tools/perf/builtin-lock.c
1471
struct lock_stat *st;
tools/perf/builtin-lock.c
1474
hlist_for_each_entry(st, &lockhash_table[i], hash_entry) {
tools/perf/builtin-lock.c
1475
insert_to_result(st, compare);
tools/perf/builtin-lock.c
148
st->tid = tid;
tools/perf/builtin-lock.c
149
INIT_LIST_HEAD(&st->seq_list);
tools/perf/builtin-lock.c
151
rb_link_node(&st->rb, NULL, &thread_stats.rb_node);
tools/perf/builtin-lock.c
152
rb_insert_color(&st->rb, &thread_stats);
tools/perf/builtin-lock.c
155
return st;
tools/perf/builtin-lock.c
1624
static void print_lock_stat_stdio(struct lock_contention *con, struct lock_stat *st)
tools/perf/builtin-lock.c
1631
key->print(key, st);
tools/perf/builtin-lock.c
1637
fprintf(lock_output, " %10s %s\n", get_type_flags_name(st->flags), st->name);
tools/perf/builtin-lock.c
1640
pid = st->addr;
tools/perf/builtin-lock.c
1646
fprintf(lock_output, " %016llx %s (%s)\n", (unsigned long long)st->addr,
tools/perf/builtin-lock.c
1647
st->name, get_type_lock_name(st->flags));
tools/perf/builtin-lock.c
1650
fprintf(lock_output, " %s\n", st->name);
tools/perf/builtin-lock.c
1663
if (!st->callstack || !st->callstack[i])
tools/perf/builtin-lock.c
1666
ip = st->callstack[i];
tools/perf/builtin-lock.c
1674
static void print_lock_stat_csv(struct lock_contention *con, struct lock_stat *st,
tools/perf/builtin-lock.c
1682
key->print(key, st);
tools/perf/builtin-lock.c
1688
fprintf(lock_output, "%s%s %s", get_type_flags_name(st->flags), sep, st->name);
tools/perf/builtin-lock.c
1693
pid = st->addr;
tools/perf/builtin-lock.c
1699
fprintf(lock_output, "%llx%s %s%s %s\n", (unsigned long long)st->addr, sep,
tools/perf/builtin-lock.c
1700
st->name, sep, get_type_lock_name(st->flags));
tools/perf/builtin-lock.c
1703
fprintf(lock_output, "%s\n",st->name);
tools/perf/builtin-lock.c
1716
if (!st->callstack || !st->callstack[i])
tools/perf/builtin-lock.c
1719
ip = st->callstack[i];
tools/perf/builtin-lock.c
1728
static void print_lock_stat(struct lock_contention *con, struct lock_stat *st)
tools/perf/builtin-lock.c
1731
print_lock_stat_csv(con, st, symbol_conf.field_sep);
tools/perf/builtin-lock.c
1733
print_lock_stat_stdio(con, st);
tools/perf/builtin-lock.c
1797
struct lock_stat *st;
tools/perf/builtin-lock.c
1805
while ((st = pop_from_result())) {
tools/perf/builtin-lock.c
1806
total += use_bpf ? st->nr_contended : 1;
tools/perf/builtin-lock.c
1807
if (st->broken)
tools/perf/builtin-lock.c
1810
if (!st->wait_time_total)
tools/perf/builtin-lock.c
1813
print_lock_stat(con, st);
tools/perf/builtin-lock.c
1826
while ((st = pop_owner_stack_trace(con)))
tools/perf/builtin-lock.c
1827
insert_to(&root, st, compare);
tools/perf/builtin-lock.c
1829
while ((st = pop_from(&root))) {
tools/perf/builtin-lock.c
1830
print_lock_stat(con, st);
tools/perf/builtin-lock.c
1831
free(st);
tools/perf/builtin-lock.c
1837
while ((st = pop_from_result())) {
tools/perf/builtin-lock.c
1838
total += use_bpf ? st->nr_contended : 1;
tools/perf/builtin-lock.c
1839
if (st->broken)
tools/perf/builtin-lock.c
381
static void combine_lock_stats(struct lock_stat *st)
tools/perf/builtin-lock.c
392
if (st->name && p->name)
tools/perf/builtin-lock.c
393
ret = strcmp(st->name, p->name);
tools/perf/builtin-lock.c
395
ret = !!st->name - !!p->name;
tools/perf/builtin-lock.c
398
p->nr_acquired += st->nr_acquired;
tools/perf/builtin-lock.c
399
p->nr_contended += st->nr_contended;
tools/perf/builtin-lock.c
400
p->wait_time_total += st->wait_time_total;
tools/perf/builtin-lock.c
405
if (p->wait_time_min > st->wait_time_min)
tools/perf/builtin-lock.c
406
p->wait_time_min = st->wait_time_min;
tools/perf/builtin-lock.c
407
if (p->wait_time_max < st->wait_time_max)
tools/perf/builtin-lock.c
408
p->wait_time_max = st->wait_time_max;
tools/perf/builtin-lock.c
410
p->broken |= st->broken;
tools/perf/builtin-lock.c
411
st->combined = 1;
tools/perf/builtin-lock.c
421
rb_link_node(&st->rb, parent, rb);
tools/perf/builtin-lock.c
422
rb_insert_color(&st->rb, &sorted);
tools/perf/builtin-lock.c
425
static void insert_to(struct rb_root *rr, struct lock_stat *st,
tools/perf/builtin-lock.c
436
if (bigger(st, p))
tools/perf/builtin-lock.c
442
rb_link_node(&st->rb, parent, rb);
tools/perf/builtin-lock.c
443
rb_insert_color(&st->rb, rr);
tools/perf/builtin-lock.c
446
static inline void insert_to_result(struct lock_stat *st,
tools/perf/builtin-lock.c
450
if (combine_locks && st->combined)
tools/perf/builtin-lock.c
452
insert_to(&result, st, bigger);
tools/perf/builtin-lock.c
75
struct thread_stat *st;
tools/perf/builtin-lock.c
79
st = container_of(node, struct thread_stat, rb);
tools/perf/builtin-lock.c
80
if (st->tid == tid)
tools/perf/builtin-lock.c
81
return st;
tools/perf/builtin-lock.c
82
else if (tid < st->tid)
tools/perf/builtin-mem.c
473
struct stat st;
tools/perf/builtin-mem.c
535
if (!fstat(STDIN_FILENO, &st) && S_ISFIFO(st.st_mode))
tools/perf/builtin-report.c
1307
struct stat st;
tools/perf/builtin-report.c
1588
if (!fstat(STDIN_FILENO, &st) && S_ISFIFO(st.st_mode))
tools/perf/builtin-script.c
379
struct stat st;
tools/perf/builtin-script.c
381
fstat(fileno(es->fp), &st);
tools/perf/builtin-script.c
383
st.st_size / 1024.0 / 1024.0, es->filename, es->samples);
tools/perf/builtin-stat.c
1898
static int perf_stat_init_aggr_mode_file(struct perf_stat *st)
tools/perf/builtin-stat.c
1900
struct perf_env *env = perf_session__env(st->session);
tools/perf/builtin-stat.c
2240
struct perf_stat *st = container_of(tool, struct perf_stat, tool);
tools/perf/builtin-stat.c
2244
if (perf_cpu_map__is_empty(st->cpus)) {
tools/perf/builtin-stat.c
2245
if (st->aggr_mode != AGGR_UNSET)
tools/perf/builtin-stat.c
2247
} else if (st->aggr_mode != AGGR_UNSET) {
tools/perf/builtin-stat.c
2248
stat_config.aggr_mode = st->aggr_mode;
tools/perf/builtin-stat.c
2254
perf_stat_init_aggr_mode_file(st);
tools/perf/builtin-stat.c
2267
static int set_maps(struct perf_stat *st)
tools/perf/builtin-stat.c
2269
if (!st->cpus || !st->threads)
tools/perf/builtin-stat.c
2272
if (WARN_ONCE(st->maps_allocated, "stats double allocation\n"))
tools/perf/builtin-stat.c
2275
perf_evlist__set_maps(&evsel_list->core, st->cpus, st->threads);
tools/perf/builtin-stat.c
2280
st->maps_allocated = true;
tools/perf/builtin-stat.c
2289
struct perf_stat *st = container_of(tool, struct perf_stat, tool);
tools/perf/builtin-stat.c
2291
if (st->threads) {
tools/perf/builtin-stat.c
2296
st->threads = thread_map__new_event(&event->thread_map);
tools/perf/builtin-stat.c
2297
if (!st->threads)
tools/perf/builtin-stat.c
2300
return set_maps(st);
tools/perf/builtin-stat.c
2308
struct perf_stat *st = container_of(tool, struct perf_stat, tool);
tools/perf/builtin-stat.c
2311
if (st->cpus) {
tools/perf/builtin-stat.c
2320
st->cpus = cpus;
tools/perf/builtin-stat.c
2321
return set_maps(st);
tools/perf/builtin-stat.c
2356
struct stat st;
tools/perf/builtin-stat.c
2366
if (!fstat(STDIN_FILENO, &st) && S_ISFIFO(st.st_mode))
tools/perf/builtin-stat.c
555
struct stat st;
tools/perf/builtin-stat.c
567
if (!stat(path, &st))
tools/perf/builtin-trace.c
1692
struct stat st;
tools/perf/builtin-trace.c
1694
if (stat(pathname, &st) == 0)
tools/perf/builtin-trace.c
1695
file->dev_maj = major(st.st_rdev);
tools/perf/builtin-trace.c
1707
struct stat st;
tools/perf/builtin-trace.c
1719
if (lstat(linkname, &st) < 0 || st.st_size + 1 > (off_t)sizeof(pathname))
tools/perf/builtin-trace.c
1724
if (ret < 0 || ret > st.st_size)
tools/perf/builtin-trace.c
4885
struct stats *st = &ss->stats;
tools/perf/builtin-trace.c
4888
entry[i].msecs = (u64)st->n * (avg_stats(st) / NSEC_PER_MSEC);
tools/perf/builtin-trace.c
5107
struct stat st;
tools/perf/builtin-trace.c
5109
if (!stat(filename, &st) && st.st_size) {
tools/perf/perf.c
337
struct stat st;
tools/perf/perf.c
356
if (fstat(fileno(stdout), &st))
tools/perf/perf.c
359
if (S_ISFIFO(st.st_mode) || S_ISSOCK(st.st_mode))
tools/perf/tests/parse-events.c
2697
struct stat st;
tools/perf/tests/parse-events.c
2711
err = stat(path, &st);
tools/perf/tests/pe-file-parsing.c
75
struct stat st;
tools/perf/tests/pe-file-parsing.c
79
if (!lstat("./tests", &st))
tools/perf/tests/pe-file-parsing.c
85
if (!lstat(path_dir, &st))
tools/perf/tests/stat.c
72
struct perf_record_stat *st = &event->stat;
tools/perf/tests/stat.c
74
TEST_ASSERT_VAL("wrong cpu", st->cpu == 1);
tools/perf/tests/stat.c
75
TEST_ASSERT_VAL("wrong thread", st->thread == 2);
tools/perf/tests/stat.c
76
TEST_ASSERT_VAL("wrong id", st->id == 3);
tools/perf/tests/stat.c
77
TEST_ASSERT_VAL("wrong val", st->val == 100);
tools/perf/tests/stat.c
78
TEST_ASSERT_VAL("wrong run", st->ena == 200);
tools/perf/tests/stat.c
79
TEST_ASSERT_VAL("wrong ena", st->run == 300);
tools/perf/tests/tests-scripts.c
263
struct stat st;
tools/perf/tests/tests-scripts.c
267
fstatat(dir_fd, ent->d_name, &st, 0);
tools/perf/tests/tests-scripts.c
268
if (!S_ISDIR(st.st_mode))
tools/perf/tests/tests-scripts.c
32
struct stat st;
tools/perf/tests/tests-scripts.c
56
if (lstat(path2, &st) == 0 && (st.st_mode & S_IFMT) == S_IFLNK) {
tools/perf/util/bpf-filter.c
70
#define __PERF_SAMPLE_TYPE(tt, st, opt) { tt, #st, opt }
tools/perf/util/bpf_lock_contention.c
676
struct lock_stat *st = NULL;
tools/perf/util/bpf_lock_contention.c
694
st = zalloc(sizeof(struct lock_stat));
tools/perf/util/bpf_lock_contention.c
695
if (!st)
tools/perf/util/bpf_lock_contention.c
698
st->name = strdup(stack_trace[0] ? lock_contention_get_name(con, NULL, stack_trace, 0) :
tools/perf/util/bpf_lock_contention.c
700
if (!st->name)
tools/perf/util/bpf_lock_contention.c
703
st->flags = cdata.flags;
tools/perf/util/bpf_lock_contention.c
704
st->nr_contended = cdata.count;
tools/perf/util/bpf_lock_contention.c
705
st->wait_time_total = cdata.total_time;
tools/perf/util/bpf_lock_contention.c
706
st->wait_time_max = cdata.max_time;
tools/perf/util/bpf_lock_contention.c
707
st->wait_time_min = cdata.min_time;
tools/perf/util/bpf_lock_contention.c
708
st->callstack = stack_trace;
tools/perf/util/bpf_lock_contention.c
711
st->avg_wait_time = cdata.total_time / cdata.count;
tools/perf/util/bpf_lock_contention.c
716
return st;
tools/perf/util/bpf_lock_contention.c
720
free(st);
tools/perf/util/bpf_lock_contention.c
730
struct lock_stat *st = NULL;
tools/perf/util/bpf_lock_contention.c
798
st = lock_stat_find(ls_key);
tools/perf/util/bpf_lock_contention.c
799
if (st != NULL) {
tools/perf/util/bpf_lock_contention.c
800
st->wait_time_total += data.total_time;
tools/perf/util/bpf_lock_contention.c
801
if (st->wait_time_max < data.max_time)
tools/perf/util/bpf_lock_contention.c
802
st->wait_time_max = data.max_time;
tools/perf/util/bpf_lock_contention.c
803
if (st->wait_time_min > data.min_time)
tools/perf/util/bpf_lock_contention.c
804
st->wait_time_min = data.min_time;
tools/perf/util/bpf_lock_contention.c
806
st->nr_contended += data.count;
tools/perf/util/bpf_lock_contention.c
807
if (st->nr_contended)
tools/perf/util/bpf_lock_contention.c
808
st->avg_wait_time = st->wait_time_total / st->nr_contended;
tools/perf/util/bpf_lock_contention.c
813
st = lock_stat_findnew(ls_key, name, data.flags);
tools/perf/util/bpf_lock_contention.c
814
if (st == NULL)
tools/perf/util/bpf_lock_contention.c
817
st->nr_contended = data.count;
tools/perf/util/bpf_lock_contention.c
818
st->wait_time_total = data.total_time;
tools/perf/util/bpf_lock_contention.c
819
st->wait_time_max = data.max_time;
tools/perf/util/bpf_lock_contention.c
820
st->wait_time_min = data.min_time;
tools/perf/util/bpf_lock_contention.c
823
st->avg_wait_time = data.total_time / data.count;
tools/perf/util/bpf_lock_contention.c
826
st->callstack = memdup(stack_trace, stack_size);
tools/perf/util/bpf_lock_contention.c
827
if (st->callstack == NULL)
tools/perf/util/bpf_skel/syscall_summary.bpf.c
106
struct syscall_trace st;
tools/perf/util/bpf_skel/syscall_summary.bpf.c
111
st.nr = ctx[1]; /* syscall number */
tools/perf/util/bpf_skel/syscall_summary.bpf.c
112
st.unused = 0;
tools/perf/util/bpf_skel/syscall_summary.bpf.c
113
st.timestamp = bpf_ktime_get_ns();
tools/perf/util/bpf_skel/syscall_summary.bpf.c
116
bpf_map_update_elem(&syscall_trace_map, &tid, &st, BPF_ANY);
tools/perf/util/bpf_skel/syscall_summary.bpf.c
126
struct syscall_trace *st;
tools/perf/util/bpf_skel/syscall_summary.bpf.c
133
st = bpf_map_lookup_elem(&syscall_trace_map, &tid);
tools/perf/util/bpf_skel/syscall_summary.bpf.c
134
if (st == NULL)
tools/perf/util/bpf_skel/syscall_summary.bpf.c
144
delta = bpf_ktime_get_ns() - st->timestamp;
tools/perf/util/bpf_skel/syscall_summary.bpf.c
145
update_stats(key, cgroup, st->nr, delta, ret);
tools/perf/util/branch.c
112
void branch_type_stat_display(FILE *fp, const struct branch_type_stat *st)
tools/perf/util/branch.c
118
total += st->counts[i];
tools/perf/util/branch.c
127
if (st->cond_fwd > 0) {
tools/perf/util/branch.c
130
100.0 * (double)st->cond_fwd / (double)total);
tools/perf/util/branch.c
133
if (st->cond_bwd > 0) {
tools/perf/util/branch.c
136
100.0 * (double)st->cond_bwd / (double)total);
tools/perf/util/branch.c
139
if (st->cross_4k > 0) {
tools/perf/util/branch.c
142
100.0 * (double)st->cross_4k / (double)total);
tools/perf/util/branch.c
145
if (st->cross_2m > 0) {
tools/perf/util/branch.c
148
100.0 * (double)st->cross_2m / (double)total);
tools/perf/util/branch.c
152
if (st->counts[i] > 0)
tools/perf/util/branch.c
156
(double)st->counts[i] / (double)total);
tools/perf/util/branch.c
160
if (st->new_counts[i] > 0)
tools/perf/util/branch.c
164
(double)st->new_counts[i] / (double)total);
tools/perf/util/branch.c
174
int branch_type_str(const struct branch_type_stat *st, char *bf, int size)
tools/perf/util/branch.c
18
void branch_type_count(struct branch_type_stat *st, struct branch_flags *flags,
tools/perf/util/branch.c
180
total += st->counts[i];
tools/perf/util/branch.c
183
total += st->new_counts[i];
tools/perf/util/branch.c
188
if (st->cond_fwd > 0)
tools/perf/util/branch.c
191
if (st->cond_bwd > 0)
tools/perf/util/branch.c
198
if (st->counts[i] > 0)
tools/perf/util/branch.c
203
if (st->new_counts[i] > 0)
tools/perf/util/branch.c
207
if (st->cross_4k > 0)
tools/perf/util/branch.c
210
if (st->cross_2m > 0)
tools/perf/util/branch.c
25
st->new_counts[flags->new_type]++;
tools/perf/util/branch.c
27
st->counts[flags->type]++;
tools/perf/util/branch.c
31
st->cond_fwd++;
tools/perf/util/branch.c
33
st->cond_bwd++;
tools/perf/util/branch.c
37
st->cross_2m++;
tools/perf/util/branch.c
39
st->cross_4k++;
tools/perf/util/branch.h
88
void branch_type_count(struct branch_type_stat *st, struct branch_flags *flags,
tools/perf/util/branch.h
94
void branch_type_stat_display(FILE *fp, const struct branch_type_stat *st);
tools/perf/util/branch.h
95
int branch_type_str(const struct branch_type_stat *st, char *bf, int bfsize);
tools/perf/util/config.c
582
struct stat st;
tools/perf/util/config.c
601
if (stat(config, &st) < 0)
tools/perf/util/config.c
604
if (st.st_uid && (st.st_uid != geteuid())) {
tools/perf/util/config.c
609
if (st.st_size)
tools/perf/util/copyfile.c
104
if (st.st_size == 0) { /* /proc? do it slowly... */
tools/perf/util/copyfile.c
120
err = copyfile_offset(fromfd, 0, tofd, 0, st.st_size);
tools/perf/util/copyfile.c
77
struct stat st;
tools/perf/util/copyfile.c
83
err = stat(from, &st);
tools/perf/util/data-convert-json.c
275
struct stat st;
tools/perf/util/data-convert-json.c
285
ret = fstat(fd, &st);
tools/perf/util/data-convert-json.c
287
time_t stctime = st.st_mtime;
tools/perf/util/data.c
132
struct stat st;
tools/perf/util/data.c
135
if (stat(path, &st))
tools/perf/util/data.c
138
if (!S_ISREG(st.st_mode) || strncmp(dent->d_name, "data.", 5))
tools/perf/util/data.c
153
.size = st.st_size,
tools/perf/util/data.c
183
struct stat st;
tools/perf/util/data.c
189
if (!fstat(fd, &st) && S_ISFIFO(st.st_mode))
tools/perf/util/data.c
222
struct stat st;
tools/perf/util/data.c
227
if (!stat(data->path, &st) && st.st_size) {
tools/perf/util/data.c
254
struct stat st;
tools/perf/util/data.c
256
if (stat(data->path, &st))
tools/perf/util/data.c
259
return (st.st_mode & S_IFMT) == S_IFDIR;
tools/perf/util/data.c
265
struct stat st;
tools/perf/util/data.c
279
if (fstat(fd, &st) < 0)
tools/perf/util/data.c
282
if (!data->force && st.st_uid && (st.st_uid != geteuid())) {
tools/perf/util/data.c
288
if (!st.st_size) {
tools/perf/util/data.c
294
data->file.size = st.st_size;
tools/perf/util/data.c
528
struct stat st;
tools/perf/util/data.c
536
if (stat(kallsyms_name, &st)) {
tools/perf/util/data.c
547
struct stat st;
tools/perf/util/data.c
555
if (stat(kallsyms_name, &st)) {
tools/perf/util/demangle-rust-v0.c
1162
overflow_status st;
tools/perf/util/demangle-rust-v0.c
1185
if ((st = printer_print_path(printer, in_value)) != OverflowOk) {
tools/perf/util/demangle-rust-v0.c
1186
return st;
tools/perf/util/demangle-rust-v0.c
1936
demangle_status st = rust_demangle_legacy_demangle(s, s_len, &legacy, &suffix);
tools/perf/util/demangle-rust-v0.c
1937
if (st == DemangleOk) {
tools/perf/util/demangle-rust-v0.c
1950
st = rust_demangle_v0_demangle(s, s_len, &v0, &suffix);
tools/perf/util/demangle-rust-v0.c
1951
if (st == DemangleOk) {
tools/perf/util/dso.c
1138
struct stat st;
tools/perf/util/dso.c
1154
if (fstat(dso__data(dso)->fd, &st) < 0) {
tools/perf/util/dso.c
1160
dso__data(dso)->file_size = st.st_size;
tools/perf/util/header.c
1236
struct stat st;
tools/perf/util/header.c
1242
if (stat(file, &st))
tools/perf/util/header.c
4321
struct stat st;
tools/perf/util/header.c
4328
ret = fstat(fd, &st);
tools/perf/util/header.c
4332
stctime = st.st_mtime;
tools/perf/util/header.c
4665
struct stat st;
tools/perf/util/header.c
4683
if (fstat(fd, &st) < 0) {
tools/perf/util/header.c
4697
if (S_ISREG(st.st_mode) &&
tools/perf/util/header.c
4698
(sec->offset > (u64)st.st_size ||
tools/perf/util/header.c
4699
sec->size > (u64)st.st_size - sec->offset)) {
tools/perf/util/header.c
4702
sec->offset, sec->size, (u64)st.st_size);
tools/perf/util/intel-pt.c
2929
struct intel_pt_state *st = (struct intel_pt_state *)state;
tools/perf/util/intel-pt.c
2930
u64 to_ip = st->to_ip;
tools/perf/util/intel-pt.c
2931
u64 from_ip = st->from_ip;
tools/perf/util/intel-pt.c
2937
st->to_ip = 0;
tools/perf/util/intel-pt.c
2941
st->from_ip = 0;
tools/perf/util/intel-pt.c
2942
st->to_ip = to_ip;
tools/perf/util/intel-pt.c
2944
st->from_ip = from_ip;
tools/perf/util/jitdump.c
433
struct stat st;
tools/perf/util/jitdump.c
489
if (nsinfo__stat(filename, &st, jd->nsi))
tools/perf/util/jitdump.c
490
memset(&st, 0, sizeof(st));
tools/perf/util/jitdump.c
502
event->mmap2.ino = st.st_ino;
tools/perf/util/jitdump.c
503
event->mmap2.maj = major(st.st_dev);
tools/perf/util/jitdump.c
504
event->mmap2.min = minor(st.st_dev);
tools/perf/util/jitdump.c
505
event->mmap2.prot = st.st_mode;
tools/perf/util/jitdump.c
567
struct stat st;
tools/perf/util/jitdump.c
598
if (nsinfo__stat(filename, &st, jd->nsi))
tools/perf/util/jitdump.c
599
memset(&st, 0, sizeof(st));
tools/perf/util/jitdump.c
613
event->mmap2.ino = st.st_ino;
tools/perf/util/jitdump.c
614
event->mmap2.maj = major(st.st_dev);
tools/perf/util/jitdump.c
615
event->mmap2.min = minor(st.st_dev);
tools/perf/util/jitdump.c
616
event->mmap2.prot = st.st_mode;
tools/perf/util/mem-events.c
185
struct stat st;
tools/perf/util/mem-events.c
192
return !stat(path, &st);
tools/perf/util/namespaces.c
361
int nsinfo__stat(const char *filename, struct stat *st, struct nsinfo *nsi)
tools/perf/util/namespaces.c
367
ret = stat(filename, st);
tools/perf/util/namespaces.h
68
int nsinfo__stat(const char *filename, struct stat *st, struct nsinfo *nsi);
tools/perf/util/path.c
50
struct stat st;
tools/perf/util/path.c
52
if (stat(file, &st))
tools/perf/util/path.c
55
return S_ISREG(st.st_mode);
tools/perf/util/path.c
62
struct stat st;
tools/perf/util/path.c
65
if (stat(path, &st))
tools/perf/util/path.c
68
return S_ISDIR(st.st_mode);
tools/perf/util/path.c
73
struct stat st;
tools/perf/util/path.c
75
if (fstatat(dir_fd, path, &st, /*flags=*/0))
tools/perf/util/path.c
78
return S_ISDIR(st.st_mode);
tools/perf/util/pmu.c
297
struct stat st;
tools/perf/util/pmu.c
313
if (fstat(fd, &st) < 0)
tools/perf/util/probe-file.c
953
struct stat st;
tools/perf/util/probe-file.c
958
ret = fstat(fd, &st);
tools/perf/util/probe-file.c
984
if (ftruncate(fd, st.st_size) < 0)
tools/perf/util/srccode.c
114
if (fd < 0 || fstat(fd, &st) < 0) {
tools/perf/util/srccode.c
127
h->maplen = st.st_size;
tools/perf/util/srccode.c
91
struct stat st;
tools/perf/util/stat.c
655
struct perf_record_stat *st = &event->stat;
tools/perf/util/stat.c
659
count.val = st->val;
tools/perf/util/stat.c
660
count.ena = st->ena;
tools/perf/util/stat.c
661
count.run = st->run;
tools/perf/util/stat.c
663
counter = evlist__id2evsel(session->evlist, st->id);
tools/perf/util/stat.c
668
cpu_map_idx = perf_cpu_map__idx(evsel__cpus(counter), (struct perf_cpu){.cpu = st->cpu});
tools/perf/util/stat.c
670
pr_err("Invalid CPU %d for event %s.\n", st->cpu, evsel__name(counter));
tools/perf/util/stat.c
673
ptr = perf_counts(counter->counts, cpu_map_idx, st->thread);
tools/perf/util/stat.c
676
st->cpu, st->thread, evsel__name(counter));
tools/perf/util/stat.c
686
struct perf_record_stat *st = (struct perf_record_stat *)event;
tools/perf/util/stat.c
690
st->id, st->cpu, st->thread);
tools/perf/util/stat.c
692
st->val, st->ena, st->run);
tools/perf/util/synthetic-events.c
212
struct stat64 st;
tools/perf/util/synthetic-events.c
216
if (stat64(proc_ns, &st) == 0) {
tools/perf/util/synthetic-events.c
217
ns_link_info->dev = st.st_dev;
tools/perf/util/synthetic-events.c
218
ns_link_info->ino = st.st_ino;
tools/perf/util/trace-event-info.c
123
if (stat(path, &st) < 0) {
tools/perf/util/trace-event-info.c
164
struct stat st;
tools/perf/util/trace-event-info.c
185
ret = stat(format, &st);
tools/perf/util/trace-event-info.c
207
ret = stat(format, &st);
tools/perf/util/trace-event-info.c
256
struct stat st;
tools/perf/util/trace-event-info.c
301
ret = stat(sys, &st);
tools/perf/util/trace-event-info.c
339
struct stat st;
tools/perf/util/trace-event-info.c
348
ret = stat(path, &st);
tools/perf/util/trace-event-info.c
367
struct stat st;
tools/perf/util/trace-event-info.c
376
ret = stat(path, &st);
tools/perf/util/trace-event-info.c
91
struct stat st;
tools/perf/util/trace-event-info.c
99
if (stat(path, &st) < 0) {
tools/perf/util/util.c
101
struct stat st;
tools/perf/util/util.c
108
if (stat(path, &st) == 0)
tools/perf/util/util.c
115
err = stat(path, &st) && mkdir(path, mode);
tools/perf/util/util.c
122
return (stat(path, &st) && mkdir(path, mode)) ? -1 : 0;
tools/power/acpi/tools/pfrut/pfrut.c
205
struct stat st;
tools/power/acpi/tools/pfrut/pfrut.c
337
if (fstat(fd_capsule, &st) < 0) {
tools/power/acpi/tools/pfrut/pfrut.c
346
addr_map_capsule = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED,
tools/power/acpi/tools/pfrut/pfrut.c
357
ret = write(fd_update, (char *)addr_map_capsule, st.st_size);
tools/power/acpi/tools/pfrut/pfrut.c
363
munmap(addr_map_capsule, st.st_size);
tools/power/acpi/tools/pfrut/pfrut.c
371
munmap(addr_map_capsule, st.st_size);
tools/power/cpupower/lib/powercap.c
219
struct stat st;
tools/power/cpupower/lib/powercap.c
224
if (stat(dent->d_name, &st) != 0 || !S_ISDIR(st.st_mode))
tools/power/cpupower/lib/powercap.c
225
if (fstatat(dirfd(zone_dir), dent->d_name, &st, 0) < 0)
tools/power/x86/intel-speed-select/isst-daemon.c
151
struct stat st;
tools/power/x86/intel-speed-select/isst-daemon.c
210
if (fstat(pid_file_handle, &st) == -1)
tools/power/x86/intel-speed-select/isst-daemon.c
213
if (!S_ISREG(st.st_mode))
tools/power/x86/turbostat/turbostat.c
10153
struct stat st;
tools/power/x86/turbostat/turbostat.c
10161
if (stat(SYSFS_TELEM_PATH, &st) == -1)
tools/power/x86/turbostat/turbostat.c
10172
if (fstatat(dirfd(pmt_iter.dir), entry->d_name, &st, 0) == -1)
tools/power/x86/turbostat/turbostat.c
10175
if (!S_ISDIR(st.st_mode))
tools/sched_ext/scx_qmap.c
125
struct stat st;
tools/sched_ext/scx_qmap.c
126
if (stat(optarg, &st) < 0) {
tools/sched_ext/scx_qmap.c
130
skel->struct_ops.qmap_ops->sub_cgroup_id = st.st_ino;
tools/sched_ext/scx_qmap.c
131
skel->rodata->sub_cgroup_id = st.st_ino;
tools/testing/scatterlist/main.c
30
static void fail(struct test *test, struct sg_table *st, const char *cond)
tools/testing/scatterlist/main.c
37
test->size, test->max_seg, test->expected_segments, st->nents,
tools/testing/scatterlist/main.c
38
st->orig_nents);
tools/testing/scatterlist/main.c
48
#define VALIDATE(cond, st, test) \
tools/testing/scatterlist/main.c
50
fail((test), (st), #cond);
tools/testing/selftests/bpf/prog_tests/btf_sysfs.c
13
struct stat st;
tools/testing/selftests/bpf/prog_tests/btf_sysfs.c
24
if (!ASSERT_OK(stat(path, &st), "stat_btf"))
tools/testing/selftests/bpf/prog_tests/btf_sysfs.c
27
btf_size = st.st_size;
tools/testing/selftests/bpf/prog_tests/dummy_st_ops.c
101
struct bpf_dummy_ops_state st = { 7 };
tools/testing/selftests/bpf/prog_tests/dummy_st_ops.c
102
__u64 args[5] = {(__u64)&st, -100, 0x8a5f, 'c', 0x1234567887654321ULL};
tools/testing/selftests/bpf/prog_tests/dummy_st_ops.c
130
struct bpf_dummy_ops_state st;
tools/testing/selftests/bpf/prog_tests/dummy_st_ops.c
131
__u64 args[1] = {(__u64)&st};
tools/testing/selftests/bpf/prog_tests/ksyms.c
14
struct stat st;
tools/testing/selftests/bpf/prog_tests/ksyms.c
30
if (!ASSERT_OK(stat(btf_path, &st), "stat_btf"))
tools/testing/selftests/bpf/prog_tests/ksyms.c
32
btf_size = st.st_size;
tools/testing/selftests/bpf/prog_tests/lsm_bdev.c
172
if (!ASSERT_OK(stat(DM_DEV_PATH, &st), "stat dm dev"))
tools/testing/selftests/bpf/prog_tests/lsm_bdev.c
175
dev_key = (__u32)st.st_rdev;
tools/testing/selftests/bpf/prog_tests/lsm_bdev.c
95
struct stat st;
tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c
23
struct stat st;
tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c
29
err = stat("/proc/self/ns/pid", &st);
tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c
33
bss->dev = st.st_dev;
tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c
34
bss->ino = st.st_ino;
tools/testing/selftests/bpf/prog_tests/signed_loader.c
177
struct stat st;
tools/testing/selftests/bpf/prog_tests/signed_loader.c
212
if (stat(sigpath, &st) < 0) {
tools/testing/selftests/bpf/prog_tests/signed_loader.c
216
if (st.st_size > (off_t)*sig_sz) {
tools/testing/selftests/bpf/prog_tests/signed_loader.c
225
if (read(fd, sig, st.st_size) != st.st_size) {
tools/testing/selftests/bpf/prog_tests/signed_loader.c
231
*sig_sz = st.st_size;
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
125
ret = stat(path, &st);
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
131
if (st.st_size > sizeof(data_item->sig)) {
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
136
data_item->sig_len = st.st_size;
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
164
struct stat st;
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
172
if (stat("/lib/modules", &st) == -1)
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
192
if (stat(mod_path, &st) == -1)
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
195
modlen = st.st_size;
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
202
mod = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
238
munmap(mod, st.st_size);
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
391
struct stat st;
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
393
if (stat(sig_path, &st) == -1)
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
396
return st.st_size;
tools/testing/selftests/bpf/prog_tests/verify_pkcs7_sig.c
82
struct stat st;
tools/testing/selftests/bpf/progs/refcounted_kptr.c
725
struct uninit_head_val *st;
tools/testing/selftests/bpf/progs/refcounted_kptr.c
729
st = bpf_map_lookup_elem(&uninit_head_map, &key);
tools/testing/selftests/bpf/progs/refcounted_kptr.c
730
if (!st)
tools/testing/selftests/bpf/progs/refcounted_kptr.c
737
bpf_spin_lock(&st->lock);
tools/testing/selftests/bpf/progs/refcounted_kptr.c
738
ret = bpf_list_push_back(&st->head, &node->l);
tools/testing/selftests/bpf/progs/refcounted_kptr.c
739
bpf_spin_unlock(&st->lock);
tools/testing/selftests/bpf/progs/xdp_lb_bench.c
251
struct lb_stats *st = bpf_map_lookup_elem(map, &key);
tools/testing/selftests/bpf/progs/xdp_lb_bench.c
253
if (st) {
tools/testing/selftests/bpf/progs/xdp_lb_bench.c
254
st->v1 += 1;
tools/testing/selftests/bpf/progs/xdp_lb_bench.c
255
st->v2 += bytes;
tools/testing/selftests/bpf/progs/xdp_lb_bench.c
261
struct lb_stats *st;
tools/testing/selftests/bpf/progs/xdp_lb_bench.c
271
st = bpf_map_lookup_elem(&stats, &key);
tools/testing/selftests/bpf/progs/xdp_lb_bench.c
272
if (st)
tools/testing/selftests/bpf/progs/xdp_lb_bench.c
273
st->v1 += 1;
tools/testing/selftests/bpf/veristat.c
2577
static int parse_stat_value(const char *str, enum stat_id id, struct verif_stats *st)
tools/testing/selftests/bpf/veristat.c
2581
st->file_name = strdup(str);
tools/testing/selftests/bpf/veristat.c
2582
if (!st->file_name)
tools/testing/selftests/bpf/veristat.c
2586
st->prog_name = strdup(str);
tools/testing/selftests/bpf/veristat.c
2587
if (!st->prog_name)
tools/testing/selftests/bpf/veristat.c
2592
st->stats[VERDICT] = true;
tools/testing/selftests/bpf/veristat.c
2594
st->stats[VERDICT] = false;
tools/testing/selftests/bpf/veristat.c
2620
st->stats[id] = val;
tools/testing/selftests/bpf/veristat.c
2629
st->stats[id] = prog_type;
tools/testing/selftests/bpf/veristat.c
2647
st->stats[id] = attach_type;
tools/testing/selftests/bpf/veristat.c
2685
struct verif_stats *st = NULL;
tools/testing/selftests/bpf/veristat.c
2698
st = &(*statsp)[*stat_cntp];
tools/testing/selftests/bpf/veristat.c
2699
memset(st, 0, sizeof(*st));
tools/testing/selftests/bpf/veristat.c
2720
err = parse_stat_value(next, specs->ids[col], st);
tools/testing/selftests/bpf/veristat.c
2738
if (!st->file_name || !st->prog_name) {
tools/testing/selftests/bpf/veristat.c
2749
if (!should_process_file_prog(st->file_name, st->prog_name)) {
tools/testing/selftests/bpf/veristat.c
2750
free(st->file_name);
tools/testing/selftests/bpf/veristat.c
2751
free(st->prog_name);
tools/testing/selftests/cgroup/test_kmem.c
34
struct stat st;
tools/testing/selftests/cgroup/test_kmem.c
41
stat(buf, &st);
tools/testing/selftests/cgroup/test_memcontrol.c
39
struct stat st;
tools/testing/selftests/cgroup/test_memcontrol.c
42
if (fstat(fd, &st))
tools/testing/selftests/cgroup/test_memcontrol.c
45
size += st.st_size;
tools/testing/selftests/coredump/coredump_socket_protocol_test.c
232
ASSERT_EQ(stat("/tmp/coredump.file", &st), 0);
tools/testing/selftests/coredump/coredump_socket_protocol_test.c
233
ASSERT_GT(st.st_size, 0);
tools/testing/selftests/coredump/coredump_socket_protocol_test.c
84
struct stat st;
tools/testing/selftests/coredump/coredump_socket_test.c
205
ASSERT_EQ(stat("/tmp/coredump.file", &st), 0);
tools/testing/selftests/coredump/coredump_socket_test.c
206
ASSERT_GT(st.st_size, 0);
tools/testing/selftests/coredump/coredump_socket_test.c
213
struct stat st;
tools/testing/selftests/coredump/coredump_socket_test.c
337
ASSERT_NE(stat("/tmp/coredump.file", &st), 0);
tools/testing/selftests/coredump/coredump_socket_test.c
82
struct stat st;
tools/testing/selftests/fchmodat2/fchmodat2_test.c
80
struct stat st;
tools/testing/selftests/fchmodat2/fchmodat2_test.c
81
int ret = fstatat(dfd, filename, &st, AT_SYMLINK_NOFOLLOW);
tools/testing/selftests/fchmodat2/fchmodat2_test.c
88
return (st.st_mode == expect_mode);
tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
132
struct stat st = {};
tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
136
st.st_ino = FUSE_ROOT_ID;
tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
137
st.st_mode = S_IFDIR | 0755;
tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
138
st.st_nlink = 2;
tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
140
st.st_ino = FILE_INO;
tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
141
st.st_mode = S_IFREG | 0644;
tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
142
st.st_nlink = 1;
tools/testing/selftests/filesystems/fuse/fuse_acl_cache_test.c
147
fuse_reply_attr(req, &st, 10);
tools/testing/selftests/filesystems/fuse/fuse_mnt.c
23
static int test_getattr(const char *path, struct stat *st)
tools/testing/selftests/filesystems/fuse/fuse_mnt.c
25
memset(st, 0, sizeof(*st));
tools/testing/selftests/filesystems/fuse/fuse_mnt.c
28
st->st_mode = S_IFDIR | 0755;
tools/testing/selftests/filesystems/fuse/fuse_mnt.c
29
st->st_nlink = 2;
tools/testing/selftests/filesystems/fuse/fuse_mnt.c
34
st->st_mode = S_IFREG | 0664;
tools/testing/selftests/filesystems/fuse/fuse_mnt.c
35
st->st_nlink = 1;
tools/testing/selftests/filesystems/fuse/fuse_mnt.c
36
st->st_size = content_size;
tools/testing/selftests/filesystems/idmapped_tmpfile.c
136
struct stat st;
tools/testing/selftests/filesystems/idmapped_tmpfile.c
147
ASSERT_EQ(fstat(fd, &st), 0);
tools/testing/selftests/filesystems/idmapped_tmpfile.c
148
EXPECT_EQ(st.st_uid, 0);
tools/testing/selftests/filesystems/idmapped_tmpfile.c
149
EXPECT_EQ(st.st_gid, 0);
tools/testing/selftests/filesystems/idmapped_tmpfile.c
155
ASSERT_EQ(fstatat(mfd, "linked", &st, 0), 0);
tools/testing/selftests/filesystems/idmapped_tmpfile.c
156
EXPECT_EQ(st.st_uid, 0);
tools/testing/selftests/filesystems/idmapped_tmpfile.c
157
EXPECT_EQ(st.st_gid, 0);
tools/testing/selftests/filesystems/idmapped_tmpfile.c
161
ASSERT_EQ(stat(path, &st), 0);
tools/testing/selftests/filesystems/idmapped_tmpfile.c
162
EXPECT_EQ(st.st_uid, MAP_HOST);
tools/testing/selftests/filesystems/idmapped_tmpfile.c
163
EXPECT_EQ(st.st_gid, MAP_HOST);
tools/testing/selftests/kvm/lib/test_util.c
426
struct stat st;
tools/testing/selftests/kvm/lib/test_util.c
432
TEST_ASSERT(!fstat(fileno(fp), &st), "failed to stat clocksource file, errno: %d",
tools/testing/selftests/kvm/lib/test_util.c
435
clk_name = malloc(st.st_size);
tools/testing/selftests/kvm/lib/test_util.c
438
TEST_ASSERT(fgets(clk_name, st.st_size, fp), "failed to read clocksource file: %d",
tools/testing/selftests/kvm/steal_time.c
134
static void check_status(struct st_time *st)
tools/testing/selftests/kvm/steal_time.c
136
GUEST_ASSERT_EQ(READ_ONCE(st->rev), 0);
tools/testing/selftests/kvm/steal_time.c
137
GUEST_ASSERT_EQ(READ_ONCE(st->attr), 0);
tools/testing/selftests/kvm/steal_time.c
142
struct st_time *st;
tools/testing/selftests/kvm/steal_time.c
156
st = (struct st_time *)status;
tools/testing/selftests/kvm/steal_time.c
159
check_status(st);
tools/testing/selftests/kvm/steal_time.c
160
WRITE_ONCE(guest_stolen_time[cpu], st->st_time);
tools/testing/selftests/kvm/steal_time.c
163
check_status(st);
tools/testing/selftests/kvm/steal_time.c
164
WRITE_ONCE(guest_stolen_time[cpu], st->st_time);
tools/testing/selftests/kvm/steal_time.c
199
struct st_time *st = addr_gva2hva(vm, (ulong)st_gva[vcpu_idx]);
tools/testing/selftests/kvm/steal_time.c
202
ksft_print_msg(" rev: %d\n", st->rev);
tools/testing/selftests/kvm/steal_time.c
203
ksft_print_msg(" attr: %d\n", st->attr);
tools/testing/selftests/kvm/steal_time.c
204
ksft_print_msg(" st_time: %ld\n", st->st_time);
tools/testing/selftests/kvm/steal_time.c
267
static void check_status(struct sta_struct *st)
tools/testing/selftests/kvm/steal_time.c
269
GUEST_ASSERT(!(READ_ONCE(st->sequence) & 1));
tools/testing/selftests/kvm/steal_time.c
270
GUEST_ASSERT(READ_ONCE(st->flags) == 0);
tools/testing/selftests/kvm/steal_time.c
271
GUEST_ASSERT(READ_ONCE(st->preempted) == 0);
tools/testing/selftests/kvm/steal_time.c
276
struct sta_struct *st = st_gva[cpu];
tools/testing/selftests/kvm/steal_time.c
287
check_status(st);
tools/testing/selftests/kvm/steal_time.c
288
WRITE_ONCE(guest_stolen_time[cpu], st->steal);
tools/testing/selftests/kvm/steal_time.c
289
sequence = READ_ONCE(st->sequence);
tools/testing/selftests/kvm/steal_time.c
290
check_status(st);
tools/testing/selftests/kvm/steal_time.c
293
check_status(st);
tools/testing/selftests/kvm/steal_time.c
294
GUEST_ASSERT(sequence < READ_ONCE(st->sequence));
tools/testing/selftests/kvm/steal_time.c
295
WRITE_ONCE(guest_stolen_time[cpu], st->steal);
tools/testing/selftests/kvm/steal_time.c
296
check_status(st);
tools/testing/selftests/kvm/steal_time.c
321
struct sta_struct *st = addr_gva2hva(vm, (ulong)st_gva[vcpu_idx]);
tools/testing/selftests/kvm/steal_time.c
325
pr_info(" sequence: %d\n", st->sequence);
tools/testing/selftests/kvm/steal_time.c
326
pr_info(" flags: %d\n", st->flags);
tools/testing/selftests/kvm/steal_time.c
327
pr_info(" steal: %"PRIu64"\n", st->steal);
tools/testing/selftests/kvm/steal_time.c
328
pr_info(" preempted: %d\n", st->preempted);
tools/testing/selftests/kvm/steal_time.c
331
pr_info("%d", st->pad[i]);
tools/testing/selftests/kvm/steal_time.c
35
static void check_status(struct kvm_steal_time *st)
tools/testing/selftests/kvm/steal_time.c
37
GUEST_ASSERT(!(READ_ONCE(st->version) & 1));
tools/testing/selftests/kvm/steal_time.c
38
GUEST_ASSERT_EQ(READ_ONCE(st->flags), 0);
tools/testing/selftests/kvm/steal_time.c
384
static void check_status(struct kvm_steal_time *st)
tools/testing/selftests/kvm/steal_time.c
386
GUEST_ASSERT(!(READ_ONCE(st->version) & 1));
tools/testing/selftests/kvm/steal_time.c
387
GUEST_ASSERT_EQ(READ_ONCE(st->flags), 0);
tools/testing/selftests/kvm/steal_time.c
388
GUEST_ASSERT_EQ(READ_ONCE(st->preempted), 0);
tools/testing/selftests/kvm/steal_time.c
39
GUEST_ASSERT_EQ(READ_ONCE(st->preempted), 0);
tools/testing/selftests/kvm/steal_time.c
394
struct kvm_steal_time *st = st_gva[cpu];
tools/testing/selftests/kvm/steal_time.c
396
memset(st, 0, sizeof(*st));
tools/testing/selftests/kvm/steal_time.c
399
check_status(st);
tools/testing/selftests/kvm/steal_time.c
400
WRITE_ONCE(guest_stolen_time[cpu], st->steal);
tools/testing/selftests/kvm/steal_time.c
401
version = READ_ONCE(st->version);
tools/testing/selftests/kvm/steal_time.c
402
check_status(st);
tools/testing/selftests/kvm/steal_time.c
405
check_status(st);
tools/testing/selftests/kvm/steal_time.c
406
GUEST_ASSERT(version < READ_ONCE(st->version));
tools/testing/selftests/kvm/steal_time.c
407
WRITE_ONCE(guest_stolen_time[cpu], st->steal);
tools/testing/selftests/kvm/steal_time.c
408
check_status(st);
tools/testing/selftests/kvm/steal_time.c
44
struct kvm_steal_time *st = st_gva[cpu];
tools/testing/selftests/kvm/steal_time.c
458
struct kvm_steal_time *st = addr_gva2hva(vm, (ulong)st_gva[vcpu_idx]);
tools/testing/selftests/kvm/steal_time.c
461
ksft_print_msg(" steal: %lld\n", st->steal);
tools/testing/selftests/kvm/steal_time.c
462
ksft_print_msg(" flags: %d\n", st->flags);
tools/testing/selftests/kvm/steal_time.c
463
ksft_print_msg(" version: %d\n", st->version);
tools/testing/selftests/kvm/steal_time.c
464
ksft_print_msg(" preempted: %d\n", st->preempted);
tools/testing/selftests/kvm/steal_time.c
49
memset(st, 0, sizeof(*st));
tools/testing/selftests/kvm/steal_time.c
52
check_status(st);
tools/testing/selftests/kvm/steal_time.c
53
WRITE_ONCE(guest_stolen_time[cpu], st->steal);
tools/testing/selftests/kvm/steal_time.c
54
version = READ_ONCE(st->version);
tools/testing/selftests/kvm/steal_time.c
55
check_status(st);
tools/testing/selftests/kvm/steal_time.c
58
check_status(st);
tools/testing/selftests/kvm/steal_time.c
59
GUEST_ASSERT(version < READ_ONCE(st->version));
tools/testing/selftests/kvm/steal_time.c
60
WRITE_ONCE(guest_stolen_time[cpu], st->steal);
tools/testing/selftests/kvm/steal_time.c
61
check_status(st);
tools/testing/selftests/kvm/steal_time.c
81
struct kvm_steal_time *st = addr_gva2hva(vm, (ulong)st_gva[vcpu_idx]);
tools/testing/selftests/kvm/steal_time.c
84
ksft_print_msg(" steal: %lld\n", st->steal);
tools/testing/selftests/kvm/steal_time.c
85
ksft_print_msg(" version: %d\n", st->version);
tools/testing/selftests/kvm/steal_time.c
86
ksft_print_msg(" flags: %d\n", st->flags);
tools/testing/selftests/kvm/steal_time.c
87
ksft_print_msg(" preempted: %d\n", st->preempted);
tools/testing/selftests/kvm/steal_time.c
89
st->u8_pad[0], st->u8_pad[1], st->u8_pad[2]);
tools/testing/selftests/kvm/steal_time.c
91
st->pad[0], st->pad[1], st->pad[2], st->pad[3],
tools/testing/selftests/kvm/steal_time.c
92
st->pad[4], st->pad[5], st->pad[6], st->pad[7],
tools/testing/selftests/kvm/steal_time.c
93
st->pad[8], st->pad[9], st->pad[10]);
tools/testing/selftests/kvm/x86/xen_shinfo_test.c
1080
struct kvm_xen_vcpu_attr st = {
tools/testing/selftests/kvm/x86/xen_shinfo_test.c
1084
vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &st);
tools/testing/selftests/kvm/x86/xen_shinfo_test.c
540
struct kvm_xen_vcpu_attr st = {
tools/testing/selftests/kvm/x86/xen_shinfo_test.c
544
vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &st);
tools/testing/selftests/membarrier/membarrier_rseq_stress.c
227
struct stat st;
tools/testing/selftests/membarrier/membarrier_rseq_stress.c
229
if (stat("/sys/fs/cgroup/cpu", &st) == 0) {
tools/testing/selftests/membarrier/membarrier_rseq_stress.c
233
} else if (stat("/dev/cgroup/cpu", &st) == 0) {
tools/testing/selftests/membarrier/membarrier_rseq_stress.c
237
} else if (stat("/cgroup/cpu", &st) == 0) {
tools/testing/selftests/membarrier/membarrier_rseq_stress.c
241
} else if (stat("/sys/fs/cgroup/cgroup.controllers", &st) == 0) {
tools/testing/selftests/memfd/fuse_mnt.c
27
static int memfd_getattr(const char *path, struct stat *st)
tools/testing/selftests/memfd/fuse_mnt.c
29
memset(st, 0, sizeof(*st));
tools/testing/selftests/memfd/fuse_mnt.c
32
st->st_mode = S_IFDIR | 0755;
tools/testing/selftests/memfd/fuse_mnt.c
33
st->st_nlink = 2;
tools/testing/selftests/memfd/fuse_mnt.c
35
st->st_mode = S_IFREG | 0444;
tools/testing/selftests/memfd/fuse_mnt.c
36
st->st_nlink = 1;
tools/testing/selftests/memfd/fuse_mnt.c
37
st->st_size = strlen(memfd_content);
tools/testing/selftests/memfd/memfd_test.c
257
struct stat st;
tools/testing/selftests/memfd/memfd_test.c
260
r = fstat(fd, &st);
tools/testing/selftests/memfd/memfd_test.c
264
} else if (st.st_size != size) {
tools/testing/selftests/memfd/memfd_test.c
266
(long long)st.st_size, (long long)size);
tools/testing/selftests/memfd/memfd_test.c
730
struct stat st;
tools/testing/selftests/memfd/memfd_test.c
735
if (fstat(fd, &st) < 0) {
tools/testing/selftests/memfd/memfd_test.c
740
if ((st.st_mode & 07777) != mode) {
tools/testing/selftests/memfd/memfd_test.c
742
buf, (int)st.st_mode & 07777, mode);
tools/testing/selftests/memfd/memfd_test.c
763
struct stat st;
tools/testing/selftests/memfd/memfd_test.c
768
if (fstat(fd, &st) < 0) {
tools/testing/selftests/memfd/memfd_test.c
780
mfd_assert_mode(fd, st.st_mode & 07777);
tools/testing/selftests/mount_setattr/mount_setattr_test.c
1366
struct stat st;
tools/testing/selftests/mount_setattr/mount_setattr_test.c
1368
ret = fstatat(dfd, path, &st, flags);
tools/testing/selftests/mount_setattr/mount_setattr_test.c
1372
return st.st_uid == expected_uid && st.st_gid == expected_gid;
tools/testing/selftests/namespaces/init_ino_test.c
35
struct stat st;
tools/testing/selftests/namespaces/init_ino_test.c
38
int ret = stat(namespaces[i].proc_path, &st);
tools/testing/selftests/namespaces/init_ino_test.c
52
ASSERT_EQ(st.st_ino, namespaces[i].expected_ino)
tools/testing/selftests/namespaces/init_ino_test.c
54
namespaces[i].name, st.st_ino, namespaces[i].expected_ino);
tools/testing/selftests/namespaces/init_ino_test.c
57
namespaces[i].name, st.st_ino, namespaces[i].expected_ino);
tools/testing/selftests/namespaces/siocgskns_test.c
1104
ASSERT_EQ(fstat(netns_fd, &st), 0);
tools/testing/selftests/namespaces/siocgskns_test.c
1105
netns_ino = st.st_ino;
tools/testing/selftests/namespaces/siocgskns_test.c
177
ASSERT_EQ(fstat(netns_fd, &st), 0);
tools/testing/selftests/namespaces/siocgskns_test.c
345
struct stat st;
tools/testing/selftests/namespaces/siocgskns_test.c
374
ASSERT_EQ(fstat(netns_fds[0], &st), 0);
tools/testing/selftests/namespaces/siocgskns_test.c
375
netns_ino = st.st_ino;
tools/testing/selftests/namespaces/siocgskns_test.c
378
ASSERT_EQ(fstat(netns_fds[i], &st), 0);
tools/testing/selftests/namespaces/siocgskns_test.c
379
ASSERT_EQ(st.st_ino, netns_ino);
tools/testing/selftests/namespaces/siocgskns_test.c
416
struct stat st;
tools/testing/selftests/namespaces/siocgskns_test.c
516
ASSERT_EQ(fstat(netns_fd, &st), 0);
tools/testing/selftests/namespaces/siocgskns_test.c
517
netns_ino = st.st_ino;
tools/testing/selftests/namespaces/siocgskns_test.c
83
struct stat st;
tools/testing/selftests/namespaces/siocgskns_test.c
988
struct stat st;
tools/testing/selftests/net/tcp_ao/bench-lookups.c
112
if (st->nr == 0) {
tools/testing/selftests/net/tcp_ao/bench-lookups.c
113
st->min = st->max = nsec;
tools/testing/selftests/net/tcp_ao/bench-lookups.c
115
if (st->min > nsec)
tools/testing/selftests/net/tcp_ao/bench-lookups.c
116
st->min = nsec;
tools/testing/selftests/net/tcp_ao/bench-lookups.c
117
if (st->max < nsec)
tools/testing/selftests/net/tcp_ao/bench-lookups.c
118
st->max = nsec;
tools/testing/selftests/net/tcp_ao/bench-lookups.c
122
st->nr++;
tools/testing/selftests/net/tcp_ao/bench-lookups.c
123
delta = (double)nsec - st->mean;
tools/testing/selftests/net/tcp_ao/bench-lookups.c
124
st->mean += delta / st->nr;
tools/testing/selftests/net/tcp_ao/bench-lookups.c
125
st->s2 += delta * ((double)nsec - st->mean);
tools/testing/selftests/net/tcp_ao/bench-lookups.c
91
static void measure_call(struct bench_stats *st,
tools/testing/selftests/net/tls.c
437
struct stat st;
tools/testing/selftests/net/tls.c
440
fstat(filefd, &st);
tools/testing/selftests/net/tls.c
441
EXPECT_GE(sendfile(self->fd, filefd, 0, st.st_size), 0);
tools/testing/selftests/net/tls.c
452
struct stat st;
tools/testing/selftests/net/tls.c
456
fstat(filefd, &st);
tools/testing/selftests/net/tls.c
457
buf = (char *)malloc(st.st_size);
tools/testing/selftests/net/tls.c
463
EXPECT_GE(sendfile(self->fd, filefd, 0, st.st_size), 0);
tools/testing/selftests/net/tls.c
464
EXPECT_EQ(recv(self->cfd, buf, st.st_size, MSG_WAITALL), st.st_size);
tools/testing/selftests/nolibc/nolibc-test.c
1073
struct stat st;
tools/testing/selftests/nolibc/nolibc-test.c
1075
if (sizeof(st.st_atim.tv_sec) != sizeof(st.st_atime))
tools/testing/selftests/nolibc/nolibc-test.c
1078
if (stat("/proc/self/", &st) && stat(argv0, &st) && stat("/", &st))
tools/testing/selftests/nolibc/nolibc-test.c
1081
if (st.st_atim.tv_sec != st.st_atime || st.st_atim.tv_nsec > 1000000000)
tools/testing/selftests/nolibc/nolibc-test.c
1084
if (st.st_mtim.tv_sec != st.st_mtime || st.st_mtim.tv_nsec > 1000000000)
tools/testing/selftests/nolibc/nolibc-test.c
1087
if (st.st_ctim.tv_sec != st.st_ctime || st.st_ctim.tv_nsec > 1000000000)
tools/testing/selftests/proc/fd-001-lookup.c
35
struct stat st;
tools/testing/selftests/proc/fd-001-lookup.c
38
memset(&st, 0, sizeof(struct stat));
tools/testing/selftests/proc/fd-001-lookup.c
39
rv = lstat(pathname, &st);
tools/testing/selftests/proc/fd-001-lookup.c
41
assert(S_ISLNK(st.st_mode));
tools/testing/selftests/proc/fd-001-lookup.c
46
struct stat st;
tools/testing/selftests/proc/fd-001-lookup.c
49
rv = lstat(pathname, &st);
tools/testing/selftests/proc/proc-pid-vm.c
341
struct stat st;
tools/testing/selftests/proc/proc-pid-vm.c
342
if (fstat(exec_fd, &st) == -1) {
tools/testing/selftests/proc/proc-pid-vm.c
352
MAJOR(st.st_dev), MINOR(st.st_dev),
tools/testing/selftests/proc/proc-pid-vm.c
353
(unsigned long long)st.st_ino);
tools/testing/selftests/proc/proc-pid-vm.c
356
"/tmp/#%llu (deleted)\n", (unsigned long long)st.st_ino);
tools/testing/selftests/proc/proc-pid-vm.c
531
assert(q.inode == st.st_ino);
tools/testing/selftests/proc/proc-pid-vm.c
532
assert(q.dev_major == MAJOR(st.st_dev));
tools/testing/selftests/proc/proc-pid-vm.c
533
assert(q.dev_minor == MINOR(st.st_dev));
tools/testing/selftests/proc/proc-pid-vm.c
536
"/tmp/#%llu (deleted)", (unsigned long long)st.st_ino);
tools/testing/selftests/ublk/common.c
24
struct stat st;
tools/testing/selftests/ublk/common.c
35
if (fstat(fd, &st) < 0) {
tools/testing/selftests/ublk/common.c
40
if (S_ISREG(st.st_mode))
tools/testing/selftests/ublk/common.c
41
bytes = st.st_size;
tools/testing/selftests/ublk/common.c
42
else if (S_ISBLK(st.st_mode)) {
tools/testing/selftests/ublk/kublk.c
1347
struct stat st;
tools/testing/selftests/ublk/kublk.c
1356
if (fstat(fd, &st) < 0 || st.st_size <= 0) {
tools/testing/selftests/ublk/kublk.c
1362
base = mmap(NULL, st.st_size,
tools/testing/selftests/ublk/kublk.c
1371
ret = ublk_ctrl_reg_buf(dev, base, st.st_size,
tools/testing/selftests/ublk/kublk.c
1375
munmap(base, st.st_size);
tools/testing/selftests/ublk/kublk.c
1381
munmap(base, st.st_size);
tools/testing/selftests/ublk/kublk.c
1389
shmem_table[idx].size = st.st_size;
tools/testing/selftests/ublk/kublk.c
1392
idx, (size_t)st.st_size);
tools/testing/selftests/x86/lam.c
671
struct stat st;
tools/testing/selftests/x86/lam.c
684
if (fstat(file_fd, &st) < 0)
tools/testing/selftests/x86/lam.c
687
off_t file_sz = st.st_size;
tools/testing/vsock/vsock_diag_test.c
100
sock_type_str(st->msg.vdiag_type),
tools/testing/vsock/vsock_diag_test.c
101
sock_state_str(st->msg.vdiag_state),
tools/testing/vsock/vsock_diag_test.c
102
sock_shutdown_str(st->msg.vdiag_shutdown),
tools/testing/vsock/vsock_diag_test.c
103
st->msg.vdiag_ino);
tools/testing/vsock/vsock_diag_test.c
108
struct vsock_stat *st;
tools/testing/vsock/vsock_diag_test.c
110
list_for_each_entry(st, head, list)
tools/testing/vsock/vsock_diag_test.c
111
print_vsock_stat(fp, st);
tools/testing/vsock/vsock_diag_test.c
116
struct vsock_stat *st;
tools/testing/vsock/vsock_diag_test.c
124
list_for_each_entry(st, head, list)
tools/testing/vsock/vsock_diag_test.c
125
if (st->msg.vdiag_ino == stat.st_ino)
tools/testing/vsock/vsock_diag_test.c
126
return st;
tools/testing/vsock/vsock_diag_test.c
157
static void check_socket_state(struct vsock_stat *st, __u8 state)
tools/testing/vsock/vsock_diag_test.c
159
if (st->msg.vdiag_state != state) {
tools/testing/vsock/vsock_diag_test.c
161
state, st->msg.vdiag_state);
tools/testing/vsock/vsock_diag_test.c
241
struct vsock_stat *st;
tools/testing/vsock/vsock_diag_test.c
243
st = malloc(sizeof(*st));
tools/testing/vsock/vsock_diag_test.c
244
if (!st) {
tools/testing/vsock/vsock_diag_test.c
249
st->msg = *resp;
tools/testing/vsock/vsock_diag_test.c
250
list_add_tail(&st->list, sockets);
tools/testing/vsock/vsock_diag_test.c
323
struct vsock_stat *st;
tools/testing/vsock/vsock_diag_test.c
326
list_for_each_entry_safe(st, next, sockets, list)
tools/testing/vsock/vsock_diag_test.c
327
free(st);
tools/testing/vsock/vsock_diag_test.c
352
struct vsock_stat *st;
tools/testing/vsock/vsock_diag_test.c
370
st = find_vsock_stat(&sockets, fd);
tools/testing/vsock/vsock_diag_test.c
371
check_socket_state(st, TCP_LISTEN);
tools/testing/vsock/vsock_diag_test.c
381
struct vsock_stat *st;
tools/testing/vsock/vsock_diag_test.c
392
st = find_vsock_stat(&sockets, fd);
tools/testing/vsock/vsock_diag_test.c
393
check_socket_state(st, TCP_ESTABLISHED);
tools/testing/vsock/vsock_diag_test.c
404
struct vsock_stat *st;
tools/testing/vsock/vsock_diag_test.c
417
st = find_vsock_stat(&sockets, client_fd);
tools/testing/vsock/vsock_diag_test.c
418
check_socket_state(st, TCP_ESTABLISHED);
tools/testing/vsock/vsock_diag_test.c
94
static void print_vsock_stat(FILE *fp, struct vsock_stat *st)
tools/testing/vsock/vsock_diag_test.c
96
print_vsock_addr(fp, st->msg.vdiag_src_cid, st->msg.vdiag_src_port);
tools/testing/vsock/vsock_diag_test.c
98
print_vsock_addr(fp, st->msg.vdiag_dst_cid, st->msg.vdiag_dst_port);