Symbol: sw
arch/alpha/include/uapi/asm/fpu.h
102
fp |= (~sw & (IEEE_TRAP_ENABLE_UNF | IEEE_TRAP_ENABLE_INE)) << 57;
arch/alpha/include/uapi/asm/fpu.h
103
fp |= (sw & IEEE_MAP_UMZ ? FPCR_UNDZ | FPCR_UNFD : 0);
arch/alpha/include/uapi/asm/fpu.h
104
fp |= (~sw & IEEE_TRAP_ENABLE_DNO) << 41;
arch/alpha/include/uapi/asm/fpu.h
111
unsigned long sw;
arch/alpha/include/uapi/asm/fpu.h
112
sw = (fp >> 35) & IEEE_STATUS_MASK;
arch/alpha/include/uapi/asm/fpu.h
113
sw |= (fp >> 36) & IEEE_MAP_DMZ;
arch/alpha/include/uapi/asm/fpu.h
114
sw |= (~fp >> 48) & (IEEE_TRAP_ENABLE_INV
arch/alpha/include/uapi/asm/fpu.h
117
sw |= (~fp >> 57) & (IEEE_TRAP_ENABLE_UNF | IEEE_TRAP_ENABLE_INE);
arch/alpha/include/uapi/asm/fpu.h
118
sw |= (fp >> 47) & IEEE_MAP_UMZ;
arch/alpha/include/uapi/asm/fpu.h
119
sw |= (~fp >> 41) & IEEE_TRAP_ENABLE_DNO;
arch/alpha/include/uapi/asm/fpu.h
120
return sw;
arch/alpha/include/uapi/asm/fpu.h
93
ieee_swcr_to_fpcr(unsigned long sw)
arch/alpha/include/uapi/asm/fpu.h
96
fp = (sw & IEEE_STATUS_MASK) << 35;
arch/alpha/include/uapi/asm/fpu.h
97
fp |= (sw & IEEE_MAP_DMZ) << 36;
arch/alpha/include/uapi/asm/fpu.h
98
fp |= (sw & IEEE_STATUS_MASK ? FPCR_SUM : 0);
arch/alpha/include/uapi/asm/fpu.h
99
fp |= (~sw & (IEEE_TRAP_ENABLE_INV
arch/alpha/kernel/process.c
289
struct switch_stack * sw = ((struct switch_stack *) pt) - 1;
arch/alpha/kernel/process.c
300
dest[ 9] = sw->r9;
arch/alpha/kernel/process.c
301
dest[10] = sw->r10;
arch/alpha/kernel/process.c
302
dest[11] = sw->r11;
arch/alpha/kernel/process.c
303
dest[12] = sw->r12;
arch/alpha/kernel/process.c
304
dest[13] = sw->r13;
arch/alpha/kernel/process.c
305
dest[14] = sw->r14;
arch/alpha/kernel/process.c
306
dest[15] = sw->r15;
arch/alpha/kernel/signal.c
152
struct switch_stack *sw = (struct switch_stack *)regs - 1;
arch/alpha/kernel/signal.c
158
sw->r26 = (unsigned long) ret_from_sys_call;
arch/alpha/kernel/signal.c
169
err |= __get_user(sw->r9, sc->sc_regs+9);
arch/alpha/kernel/signal.c
170
err |= __get_user(sw->r10, sc->sc_regs+10);
arch/alpha/kernel/signal.c
171
err |= __get_user(sw->r11, sc->sc_regs+11);
arch/alpha/kernel/signal.c
172
err |= __get_user(sw->r12, sc->sc_regs+12);
arch/alpha/kernel/signal.c
173
err |= __get_user(sw->r13, sc->sc_regs+13);
arch/alpha/kernel/signal.c
174
err |= __get_user(sw->r14, sc->sc_regs+14);
arch/alpha/kernel/signal.c
175
err |= __get_user(sw->r15, sc->sc_regs+15);
arch/alpha/kernel/signal.c
275
struct switch_stack *sw = (struct switch_stack *)regs - 1;
arch/alpha/kernel/signal.c
292
err |= __put_user(sw->r9 , sc->sc_regs+9);
arch/alpha/kernel/signal.c
293
err |= __put_user(sw->r10 , sc->sc_regs+10);
arch/alpha/kernel/signal.c
294
err |= __put_user(sw->r11 , sc->sc_regs+11);
arch/alpha/kernel/signal.c
295
err |= __put_user(sw->r12 , sc->sc_regs+12);
arch/alpha/kernel/signal.c
296
err |= __put_user(sw->r13 , sc->sc_regs+13);
arch/alpha/kernel/signal.c
297
err |= __put_user(sw->r14 , sc->sc_regs+14);
arch/alpha/kernel/signal.c
298
err |= __put_user(sw->r15 , sc->sc_regs+15);
arch/arm/mach-imx/common.h
40
void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw);
arch/arm/mach-imx/common.h
41
void imx_gpc_set_arm_power_down_timing(u32 sw2iso, u32 sw);
arch/arm/mach-imx/gpc.c
34
void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw)
arch/arm/mach-imx/gpc.c
37
(sw << GPC_PGC_SW_SHIFT), gpc_base + GPC_PGC_CPU_PUPSCR);
arch/arm/mach-imx/gpc.c
40
void imx_gpc_set_arm_power_down_timing(u32 sw2iso, u32 sw)
arch/arm/mach-imx/gpc.c
43
(sw << GPC_PGC_SW_SHIFT), gpc_base + GPC_PGC_CPU_PDNSCR);
arch/m68k/include/asm/elf.h
104
struct switch_stack *sw = ((struct switch_stack *)regs) - 1; \
arch/m68k/include/asm/elf.h
105
pr_reg[5] = sw->d6; \
arch/m68k/include/asm/elf.h
106
pr_reg[6] = sw->d7; \
arch/m68k/include/asm/elf.h
107
pr_reg[10] = sw->a3; \
arch/m68k/include/asm/elf.h
108
pr_reg[11] = sw->a4; \
arch/m68k/include/asm/elf.h
109
pr_reg[12] = sw->a5; \
arch/m68k/include/asm/elf.h
110
pr_reg[13] = sw->a6; \
arch/m68k/kernel/process.c
148
struct switch_stack sw;
arch/m68k/kernel/process.c
167
frame->sw.a3 = (unsigned long)args->fn;
arch/m68k/kernel/process.c
168
frame->sw.d7 = (unsigned long)args->fn_arg;
arch/m68k/kernel/process.c
169
frame->sw.retpc = (unsigned long)ret_from_kernel_thread;
arch/m68k/kernel/process.c
176
frame->sw.retpc = (unsigned long)ret_from_fork;
arch/m68k/kernel/signal.c
711
rt_restore_ucontext(struct pt_regs *regs, struct switch_stack *sw,
arch/m68k/kernel/signal.c
732
err |= __get_user(sw->d6, &gregs[6]);
arch/m68k/kernel/signal.c
733
err |= __get_user(sw->d7, &gregs[7]);
arch/m68k/kernel/signal.c
737
err |= __get_user(sw->a3, &gregs[11]);
arch/m68k/kernel/signal.c
738
err |= __get_user(sw->a4, &gregs[12]);
arch/m68k/kernel/signal.c
739
err |= __get_user(sw->a5, &gregs[13]);
arch/m68k/kernel/signal.c
740
err |= __get_user(sw->a6, &gregs[14]);
arch/m68k/kernel/signal.c
758
asmlinkage void *do_sigreturn(struct pt_regs *regs, struct switch_stack *sw)
arch/m68k/kernel/signal.c
778
return (void *)sw - size;
arch/m68k/kernel/signal.c
782
return sw;
arch/m68k/kernel/signal.c
785
asmlinkage void *do_rt_sigreturn(struct pt_regs *regs, struct switch_stack *sw)
arch/m68k/kernel/signal.c
799
size = rt_restore_ucontext(regs, sw, &frame->uc);
arch/m68k/kernel/signal.c
802
return (void *)sw - size;
arch/m68k/kernel/signal.c
806
return sw;
arch/m68k/kernel/signal.c
833
struct switch_stack *sw = (struct switch_stack *)regs - 1;
arch/m68k/kernel/signal.c
845
err |= __put_user(sw->d6, &gregs[6]);
arch/m68k/kernel/signal.c
846
err |= __put_user(sw->d7, &gregs[7]);
arch/m68k/kernel/signal.c
850
err |= __put_user(sw->a3, &gregs[11]);
arch/m68k/kernel/signal.c
851
err |= __put_user(sw->a4, &gregs[12]);
arch/m68k/kernel/signal.c
852
err |= __put_user(sw->a5, &gregs[13]);
arch/m68k/kernel/signal.c
853
err |= __put_user(sw->a6, &gregs[14]);
arch/m68k/kernel/signal.h
6
asmlinkage void *do_sigreturn(struct pt_regs *regs, struct switch_stack *sw);
arch/m68k/kernel/signal.h
7
asmlinkage void *do_rt_sigreturn(struct pt_regs *regs, struct switch_stack *sw);
arch/mips/alchemy/devboards/db1200.c
803
unsigned short sw;
arch/mips/alchemy/devboards/db1200.c
872
sw = bcsr_read(BCSR_SWITCHES);
arch/mips/alchemy/devboards/db1200.c
873
if (sw & BCSR_SWITCHES_DIP_8) {
arch/mips/alchemy/devboards/db1200.c
895
sw &= BCSR_SWITCHES_DIP_8 | BCSR_SWITCHES_DIP_7;
arch/mips/alchemy/devboards/db1200.c
896
if (sw == BCSR_SWITCHES_DIP_8) {
arch/mips/include/asm/asm-eva.h
114
#define kernel_sw(reg, addr) sw reg, addr
arch/mips/include/asm/asm.h
158
#define REG_S sw
arch/mips/include/asm/asm.h
181
#define INT_S sw
arch/mips/include/asm/asm.h
220
#define LONG_S sw
arch/mips/include/asm/asm.h
279
#define PTR_S sw
arch/mips/include/asm/asmmacro-32.h
36
sw \tmp, THREAD_FCR31(\thread)
arch/mips/include/asm/asmmacro.h
104
sw \tmp, THREAD_FCR31(\thread)
arch/mips/include/asm/asmmacro.h
564
sw $1, THREAD_MSA_CSR(\thread)
arch/mips/include/asm/asmmacro.h
69
sw \reg, TI_PRE_COUNT($28)
arch/mips/include/asm/asmmacro.h
79
sw \reg, TI_PRE_COUNT($28)
arch/mips/include/asm/ftrace.h
69
safe_store(STR(sw), src, dst, error)
arch/mips/net/bpf_jit_comp.c
135
emit(ctx, sw, reg, depth, MIPS_R_SP);
arch/mips/net/bpf_jit_comp32.c
1320
emit(ctx, sw, t2, ctx->stack_size, MIPS_R_SP); /* *(SP + size) = t2 */
arch/mips/net/bpf_jit_comp32.c
1393
emit(ctx, sw, MIPS_R_T9, 0, MIPS_R_SP);
arch/mips/net/bpf_jit_comp32.c
703
emit(ctx, sw, lo(src), off, dst);
arch/mips/net/bpf_jit_comp32.c
707
emit(ctx, sw, src[1], off, dst);
arch/mips/net/bpf_jit_comp32.c
708
emit(ctx, sw, src[0], off + 4, dst);
arch/mips/net/bpf_jit_comp64.c
371
emit(ctx, sw, src, off, dst);
arch/nios2/include/asm/elf.h
62
struct switch_stack *sw = ((struct switch_stack *)regs) - 1; \
arch/nios2/include/asm/elf.h
63
pr_reg[23] = sw->r16; \
arch/nios2/include/asm/elf.h
64
pr_reg[24] = sw->r17; \
arch/nios2/include/asm/elf.h
65
pr_reg[25] = sw->r18; \
arch/nios2/include/asm/elf.h
66
pr_reg[26] = sw->r19; \
arch/nios2/include/asm/elf.h
67
pr_reg[27] = sw->r20; \
arch/nios2/include/asm/elf.h
68
pr_reg[28] = sw->r21; \
arch/nios2/include/asm/elf.h
69
pr_reg[29] = sw->r22; \
arch/nios2/include/asm/elf.h
70
pr_reg[30] = sw->r23; \
arch/nios2/include/asm/elf.h
71
pr_reg[31] = sw->fp; \
arch/nios2/include/asm/elf.h
72
pr_reg[32] = sw->gp; \
arch/nios2/include/asm/elf.h
73
pr_reg[33] = sw->ra; \
arch/nios2/kernel/ptrace.c
26
const struct switch_stack *sw = (struct switch_stack *)regs - 1;
arch/nios2/kernel/ptrace.c
31
membuf_write(&to, sw, 8 * 4); // R16..R23
arch/nios2/kernel/ptrace.c
52
const struct switch_stack *sw = (struct switch_stack *)regs - 1;
arch/nios2/kernel/ptrace.c
73
REG_IN_RANGE(sw, PTR_R16, PTR_R23);
arch/nios2/kernel/signal.c
101
asmlinkage int do_rt_sigreturn(struct switch_stack *sw)
arch/nios2/kernel/signal.c
103
struct pt_regs *regs = (struct pt_regs *)(sw + 1);
arch/nios2/kernel/signal.c
118
if (rt_restore_ucontext(regs, sw, &frame->uc, &rval))
arch/nios2/kernel/signal.c
130
struct switch_stack *sw = (struct switch_stack *)regs - 1;
arch/nios2/kernel/signal.c
150
err |= __put_user(sw->r16, &gregs[15]);
arch/nios2/kernel/signal.c
151
err |= __put_user(sw->r17, &gregs[16]);
arch/nios2/kernel/signal.c
152
err |= __put_user(sw->r18, &gregs[17]);
arch/nios2/kernel/signal.c
153
err |= __put_user(sw->r19, &gregs[18]);
arch/nios2/kernel/signal.c
154
err |= __put_user(sw->r20, &gregs[19]);
arch/nios2/kernel/signal.c
155
err |= __put_user(sw->r21, &gregs[20]);
arch/nios2/kernel/signal.c
156
err |= __put_user(sw->r22, &gregs[21]);
arch/nios2/kernel/signal.c
157
err |= __put_user(sw->r23, &gregs[22]);
arch/nios2/kernel/signal.c
159
err |= __put_user(sw->fp, &gregs[24]);
arch/nios2/kernel/signal.c
160
err |= __put_user(sw->gp, &gregs[25]);
arch/nios2/kernel/signal.c
38
struct switch_stack *sw,
arch/nios2/kernel/signal.c
67
err |= __get_user(sw->r16, &gregs[15]);
arch/nios2/kernel/signal.c
68
err |= __get_user(sw->r17, &gregs[16]);
arch/nios2/kernel/signal.c
69
err |= __get_user(sw->r18, &gregs[17]);
arch/nios2/kernel/signal.c
70
err |= __get_user(sw->r19, &gregs[18]);
arch/nios2/kernel/signal.c
71
err |= __get_user(sw->r20, &gregs[19]);
arch/nios2/kernel/signal.c
72
err |= __get_user(sw->r21, &gregs[20]);
arch/nios2/kernel/signal.c
73
err |= __get_user(sw->r22, &gregs[21]);
arch/nios2/kernel/signal.c
74
err |= __get_user(sw->r23, &gregs[22]);
arch/nios2/kernel/signal.c
76
err |= __get_user(sw->fp, &gregs[24]); /* Verify, should this be
arch/nios2/kernel/signal.c
78
err |= __get_user(sw->gp, &gregs[25]); /* Verify, should this be
arch/parisc/kernel/traps.c
104
struct { u32 sw[2]; } s;
arch/parisc/kernel/traps.c
118
printbinary(buf, s.sw[0], 32);
arch/parisc/kernel/traps.c
120
printk("%sFPER1: %08x\n", level, s.sw[1]);
arch/parisc/math-emu/driver.c
65
unsigned int orig_sw, sw;
arch/parisc/math-emu/driver.c
90
memcpy(&sw, frcopy, sizeof(sw));
arch/parisc/math-emu/driver.c
94
printbinary(sw, 32);
arch/riscv/include/asm/asm.h
30
#define REG_S __REG_SEL(sd, sw)
arch/sh/boards/mach-se/7724/setup.c
680
u16 sw = __raw_readw(SW4140); /* select camera, monitor */
arch/sh/boards/mach-se/7724/setup.c
905
if (sw & SW41_B) {
arch/sh/boards/mach-se/7724/setup.c
915
if (sw & SW41_A) {
arch/x86/include/uapi/asm/sigcontext.h
110
__u32 sw;
arch/x86/platform/olpc/olpc-xo1-sci.c
126
if (!!test_bit(SW_LID, lid_switch_idev->sw) == !lid_open)
arch/x86/platform/olpc/olpc-xo1-sci.c
82
if (test_bit(SW_TABLET_MODE, ebook_switch_idev->sw) == !!state)
drivers/block/swim3.c
1010
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
1019
out_8(&sw->control_bic, 0xff);
drivers/block/swim3.c
1035
struct swim3 __iomem *sw;
drivers/block/swim3.c
1042
sw = fs->swim3;
drivers/block/swim3.c
1044
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
1045
out_8(&sw->control_bis, DRIVE_ENABLE);
drivers/block/swim3.c
1086
struct swim3 __iomem *sw;
drivers/block/swim3.c
1091
sw = fs->swim3;
drivers/block/swim3.c
1097
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
1098
in_8(&sw->intr);
drivers/block/swim3.c
1099
in_8(&sw->error);
drivers/block/swim3.c
274
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
276
out_8(&sw->select, RELAX);
drivers/block/swim3.c
278
out_8(&sw->control_bis, SELECT);
drivers/block/swim3.c
280
out_8(&sw->control_bic, SELECT);
drivers/block/swim3.c
281
out_8(&sw->select, sel & CA_MASK);
drivers/block/swim3.c
286
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
290
out_8(&sw->select, sw->select | LSTRB);
drivers/block/swim3.c
292
out_8(&sw->select, sw->select & ~LSTRB);
drivers/block/swim3.c
298
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
303
stat = in_8(&sw->status);
drivers/block/swim3.c
374
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
377
in_8(&sw->intr); /* clear SEEN_SECTOR bit */
drivers/block/swim3.c
378
in_8(&sw->error);
drivers/block/swim3.c
379
out_8(&sw->intr_enable, SEEN_SECTOR);
drivers/block/swim3.c
380
out_8(&sw->control_bis, DO_ACTION);
drivers/block/swim3.c
387
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
391
sw->nseek = n;
drivers/block/swim3.c
394
sw->nseek = -n;
drivers/block/swim3.c
398
in_8(&sw->error);
drivers/block/swim3.c
400
out_8(&sw->intr_enable, SEEK_DONE);
drivers/block/swim3.c
401
out_8(&sw->control_bis, DO_SEEK);
drivers/block/swim3.c
434
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
456
out_8(&sw->sector, fs->req_sector);
drivers/block/swim3.c
457
out_8(&sw->nsect, n);
drivers/block/swim3.c
458
out_8(&sw->gap3, 0);
drivers/block/swim3.c
474
out_8(&sw->control_bic, DO_ACTION | WRITE_SECTORS);
drivers/block/swim3.c
475
in_8(&sw->error);
drivers/block/swim3.c
476
out_8(&sw->control_bic, DO_ACTION | WRITE_SECTORS);
drivers/block/swim3.c
478
out_8(&sw->control_bis, WRITE_SECTORS);
drivers/block/swim3.c
479
in_8(&sw->intr);
drivers/block/swim3.c
482
out_8(&sw->intr_enable, TRANSFER_DONE);
drivers/block/swim3.c
483
out_8(&sw->control_bis, DO_ACTION);
drivers/block/swim3.c
559
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
566
out_8(&sw->control_bic, DO_ACTION | WRITE_SECTORS);
drivers/block/swim3.c
567
out_8(&sw->select, RELAX);
drivers/block/swim3.c
568
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
583
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
590
out_8(&sw->control_bic, DO_SEEK);
drivers/block/swim3.c
591
out_8(&sw->select, RELAX);
drivers/block/swim3.c
592
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
602
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
610
out_8(&sw->select, RELAX);
drivers/block/swim3.c
615
out_8(&sw->select, RELAX);
drivers/block/swim3.c
631
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
644
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
645
out_8(&sw->control_bic, WRITE_SECTORS | DO_ACTION);
drivers/block/swim3.c
646
out_8(&sw->select, RELAX);
drivers/block/swim3.c
658
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
669
intr = in_8(&sw->intr);
drivers/block/swim3.c
670
err = (intr & ERROR_INTR)? in_8(&sw->error): 0;
drivers/block/swim3.c
677
out_8(&sw->control_bic, DO_ACTION | WRITE_SECTORS);
drivers/block/swim3.c
678
out_8(&sw->select, RELAX);
drivers/block/swim3.c
679
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
682
if (sw->ctrack == 0xff) {
drivers/block/swim3.c
694
fs->cur_cyl = sw->ctrack;
drivers/block/swim3.c
695
fs->cur_sector = sw->csect;
drivers/block/swim3.c
705
if (sw->nseek == 0) {
drivers/block/swim3.c
706
out_8(&sw->control_bic, DO_SEEK);
drivers/block/swim3.c
707
out_8(&sw->select, RELAX);
drivers/block/swim3.c
708
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
718
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
726
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
727
out_8(&sw->control_bic, WRITE_SECTORS | DO_ACTION);
drivers/block/swim3.c
728
out_8(&sw->select, RELAX);
drivers/block/swim3.c
929
struct swim3 __iomem *sw = fs->swim3;
drivers/block/swim3.c
936
out_8(&sw->setup, S_IBM_DRIVE | S_FCLK_DIV2);
drivers/block/swim3.c
937
out_8(&sw->control_bic, 0xff);
drivers/block/swim3.c
938
out_8(&sw->mode, 0x95);
drivers/block/swim3.c
940
out_8(&sw->intr_enable, 0);
drivers/block/swim3.c
941
out_8(&sw->control_bis, DRIVE_ENABLE | INTR_ENABLE);
drivers/block/swim3.c
982
out_8(&sw->control_bic, DRIVE_ENABLE | INTR_ENABLE);
drivers/dma/mmp_pdma.c
1003
if (cyclic || !(sw->desc.dcmd & DCMD_ENDIRQEN))
drivers/dma/mmp_pdma.c
1006
if (sw->async_tx.cookie == cookie) {
drivers/dma/mmp_pdma.c
941
struct mmp_pdma_desc_sw *sw;
drivers/dma/mmp_pdma.c
963
list_for_each_entry(sw, &chan->chain_running, node) {
drivers/dma/mmp_pdma.c
968
start = pdev->ops->get_desc_dst_addr(&sw->desc);
drivers/dma/mmp_pdma.c
970
start = pdev->ops->get_desc_src_addr(&sw->desc);
drivers/dma/mmp_pdma.c
972
len = sw->desc.dcmd & DCMD_LENGTH;
drivers/edac/cpc925_edac.c
288
int len, sw, aw;
drivers/edac/cpc925_edac.c
296
sw = of_n_size_cells(np);
drivers/edac/cpc925_edac.c
304
size = of_read_number(reg, sw);
drivers/edac/cpc925_edac.c
305
reg += sw;
drivers/gpio/gpio-xilinx.c
485
DECLARE_BITMAP(sw, 64);
drivers/gpio/gpio-xilinx.c
513
bitmap_gather(sw, hw, chip->map, 64);
drivers/gpio/gpio-xilinx.c
514
for_each_set_bit(irq_offset, sw, 64)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
2151
if (!adev->ip_blocks[i].status.sw)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
2181
if (!adev->ip_blocks[i].status.sw)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
2216
if (!adev->ip_blocks[i].status.sw)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
2349
adev->ip_blocks[i].status.sw = true;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
2910
if (!adev->ip_blocks[i].status.sw)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
2934
adev->ip_blocks[i].status.sw = false;
drivers/gpu/drm/amd/amdgpu/amdgpu_ip.h
102
bool sw;
drivers/gpu/drm/i915/display/intel_overlay.c
257
u32 sw;
drivers/gpu/drm/i915/display/intel_overlay.c
260
sw = ALIGN((offset & 31) + width, 32);
drivers/gpu/drm/i915/display/intel_overlay.c
262
sw = ALIGN((offset & 63) + width, 64);
drivers/gpu/drm/i915/display/intel_overlay.c
264
if (sw == 0)
drivers/gpu/drm/i915/display/intel_overlay.c
267
return (sw - 32) >> 3;
drivers/gpu/drm/i915/display/intel_pps.c
1422
struct intel_pps_delays *sw = &intel_dp->pps.pps_delays;
drivers/gpu/drm/i915/display/intel_pps.c
1426
if (hw.power_up != sw->power_up ||
drivers/gpu/drm/i915/display/intel_pps.c
1427
hw.backlight_on != sw->backlight_on ||
drivers/gpu/drm/i915/display/intel_pps.c
1428
hw.backlight_off != sw->backlight_off ||
drivers/gpu/drm/i915/display/intel_pps.c
1429
hw.power_down != sw->power_down ||
drivers/gpu/drm/i915/display/intel_pps.c
1430
hw.power_cycle != sw->power_cycle) {
drivers/gpu/drm/i915/display/intel_pps.c
1432
intel_pps_dump_state(intel_dp, "sw", sw);
drivers/gpu/drm/i915/gem/selftests/i915_gem_client_blt.c
685
static bool has_bit17_swizzle(int sw)
drivers/gpu/drm/i915/gem/selftests/i915_gem_client_blt.c
687
return (sw == I915_BIT_6_SWIZZLE_9_10_17 ||
drivers/gpu/drm/i915/gem/selftests/i915_gem_client_blt.c
688
sw == I915_BIT_6_SWIZZLE_9_17);
drivers/gpu/drm/nouveau/dispnv50/atom.h
248
u16 sw;
drivers/gpu/drm/nouveau/dispnv50/ovly507e.c
47
NVVAL(NV507E, SET_SIZE_IN, WIDTH, asyw->scale.sw) |
drivers/gpu/drm/nouveau/dispnv50/wndw.c
333
asyw->scale.sw = asyw->state.src_w >> 16;
drivers/gpu/drm/nouveau/include/nvkm/core/layout.h
52
NVKM_LAYOUT_ONCE(NVKM_ENGINE_SW , struct nvkm_sw , sw)
drivers/gpu/drm/nouveau/include/nvkm/engine/sw.h
13
bool nvkm_sw_mthd(struct nvkm_sw *sw, int chid, int subc, u32 mthd, u32 data);
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1030
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1062
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1092
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1126
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1158
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1190
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1221
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1252
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1284
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1319
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1354
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
137
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1389
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1424
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1459
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1494
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1529
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1563
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
159
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1598
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1634
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1670
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1706
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1730
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1766
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1802
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
181
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1838
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1874
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1909
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1942
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
1977
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2012
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
203
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2047
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2072
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2105
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2139
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2173
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2207
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2241
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
225
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2274
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
2299
.sw = { 0x00000001, gf100_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
247
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
269
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
291
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
313
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
335
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
357
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
380
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
403
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
425
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
448
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
473
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
498
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
523
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
548
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
573
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
598
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
623
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
648
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
673
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
698
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
723
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
74
.sw = { 0x00000001, nv04_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
748
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
773
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
801
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
826
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
851
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
876
.sw = { 0x00000001, nv10_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
906
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
937
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
95
.sw = { 0x00000001, nv04_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
968
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
999
.sw = { 0x00000001, nv50_sw_new },
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.c
327
if (device->sw) {
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.c
328
if (nvkm_sw_mthd(device->sw, chid, subc, mthd, data))
drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
276
struct nvkm_sw *sw = device->sw;
drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
292
if (!(engine & mask) && sw)
drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
293
handled = nvkm_sw_mthd(sw, chid, subc, mthd, data);
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
101
struct nvkm_sw *sw;
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
103
if (!(sw = *psw = kzalloc_obj(*sw)))
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
105
INIT_LIST_HEAD(&sw->chan);
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
106
sw->func = func;
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
108
return nvkm_engine_ctor(&nvkm_sw, device, type, inst, true, &sw->engine);
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
30
nvkm_sw_mthd(struct nvkm_sw *sw, int chid, int subc, u32 mthd, u32 data)
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
36
spin_lock_irqsave(&sw->engine.lock, flags);
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
37
list_for_each_entry(chan, &sw->chan, head) {
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
41
list_add(&chan->head, &sw->chan);
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
45
spin_unlock_irqrestore(&sw->engine.lock, flags);
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
61
struct nvkm_sw *sw = nvkm_sw(oclass->engine);
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
64
while (sw->func->sclass[c].ctor) {
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
66
oclass->engn = &sw->func->sclass[index];
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
67
oclass->base = sw->func->sclass[index].base;
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
80
struct nvkm_sw *sw = nvkm_sw(oclass->engine);
drivers/gpu/drm/nouveau/nvkm/engine/sw/base.c
81
return sw->func->chan_new(sw, fifoch, oclass, pobject);
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.c
56
struct nvkm_sw *sw = chan->sw;
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.c
64
spin_lock_irqsave(&sw->engine.lock, flags);
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.c
66
spin_unlock_irqrestore(&sw->engine.lock, flags);
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.c
76
nvkm_sw_chan_ctor(const struct nvkm_sw_chan_func *func, struct nvkm_sw *sw,
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.c
84
chan->sw = sw;
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.c
86
spin_lock_irqsave(&sw->engine.lock, flags);
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.c
87
list_add(&chan->head, &sw->chan);
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.c
88
spin_unlock_irqrestore(&sw->engine.lock, flags);
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.c
90
return nvkm_event_init(&nvkm_sw_chan_event, &sw->engine.subdev, 1, 1, &chan->event);
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h
13
struct nvkm_sw *sw;
drivers/gpu/drm/nouveau/nvkm/engine/sw/gf100.c
105
gf100_sw_chan_new(struct nvkm_sw *sw, struct nvkm_chan *fifoch,
drivers/gpu/drm/nouveau/nvkm/engine/sw/gf100.c
109
struct nvkm_disp *disp = sw->engine.subdev.device->disp;
drivers/gpu/drm/nouveau/nvkm/engine/sw/gf100.c
117
ret = nvkm_sw_chan_ctor(&gf100_sw_chan, sw, fifoch, oclass,
drivers/gpu/drm/nouveau/nvkm/engine/sw/gf100.c
43
struct nvkm_sw *sw = chan->base.sw;
drivers/gpu/drm/nouveau/nvkm/engine/sw/gf100.c
44
struct nvkm_device *device = sw->engine.subdev.device;
drivers/gpu/drm/nouveau/nvkm/engine/sw/nv04.c
109
nv04_sw_chan_new(struct nvkm_sw *sw, struct nvkm_chan *fifo,
drivers/gpu/drm/nouveau/nvkm/engine/sw/nv04.c
119
return nvkm_sw_chan_ctor(&nv04_sw_chan, sw, fifo, oclass, &chan->base);
drivers/gpu/drm/nouveau/nvkm/engine/sw/nv10.c
39
nv10_sw_chan_new(struct nvkm_sw *sw, struct nvkm_chan *fifo,
drivers/gpu/drm/nouveau/nvkm/engine/sw/nv10.c
48
return nvkm_sw_chan_ctor(&nv10_sw_chan, sw, fifo, oclass, chan);
drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.c
102
nv50_sw_chan_new(struct nvkm_sw *sw, struct nvkm_chan *fifoch,
drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.c
105
struct nvkm_disp *disp = sw->engine.subdev.device->disp;
drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.c
113
ret = nvkm_sw_chan_ctor(&nv50_sw_chan, sw, fifoch, oclass, &chan->base);
drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.c
43
struct nvkm_sw *sw = chan->base.sw;
drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.c
44
struct nvkm_device *device = sw->engine.subdev.device;
drivers/iio/frequency/admfm2000.c
163
struct gpio_desc **sw;
drivers/iio/frequency/admfm2000.c
185
sw = st->sw1_ch;
drivers/iio/frequency/admfm2000.c
189
sw = st->sw2_ch;
drivers/iio/frequency/admfm2000.c
197
sw[i] = devm_fwnode_gpiod_get_index(dev, child, "switch",
drivers/iio/frequency/admfm2000.c
199
if (IS_ERR(sw[i]))
drivers/iio/frequency/admfm2000.c
200
return dev_err_probe(dev, PTR_ERR(sw[i]),
drivers/input/evdev.c
1165
return evdev_handle_get_val(client, dev, EV_SW, dev->sw,
drivers/input/input.c
1544
INPUT_DEV_CAP_ATTR(SW, sw);
drivers/input/input.c
2195
INPUT_CLEANSE_BITMASK(dev, SW, sw);
drivers/input/input.c
254
!!test_bit(code, dev->sw) != !!value) {
drivers/input/input.c
256
__change_bit(code, dev->sw);
drivers/input/joystick/sidewinder.c
197
#define GB(pos,num) sw_get_bits(buf, pos, num, sw->bits)
drivers/input/joystick/sidewinder.c
283
static int sw_parse(unsigned char *buf, struct sw *sw)
drivers/input/joystick/sidewinder.c
288
switch (sw->type) {
drivers/input/joystick/sidewinder.c
295
dev = sw->dev[0];
drivers/input/joystick/sidewinder.c
317
for (i = 0; i < sw->number; i ++) {
drivers/input/joystick/sidewinder.c
322
input_report_abs(sw->dev[i], ABS_X, GB(i*15+3,1) - GB(i*15+2,1));
drivers/input/joystick/sidewinder.c
323
input_report_abs(sw->dev[i], ABS_Y, GB(i*15+0,1) - GB(i*15+1,1));
drivers/input/joystick/sidewinder.c
326
input_report_key(sw->dev[i], sw_btn[SW_ID_GP][j], !GB(i*15+j+4,1));
drivers/input/joystick/sidewinder.c
328
input_sync(sw->dev[i]);
drivers/input/joystick/sidewinder.c
339
dev = sw->dev[0];
drivers/input/joystick/sidewinder.c
360
dev = sw->dev[0];
drivers/input/joystick/sidewinder.c
385
dev = sw->dev[0];
drivers/input/joystick/sidewinder.c
407
static int sw_read(struct sw *sw)
drivers/input/joystick/sidewinder.c
412
i = sw_read_packet(sw->gameport, buf, sw->length, 0);
drivers/input/joystick/sidewinder.c
414
if (sw->type == SW_ID_3DP && sw->length == 66 && i != 66) { /* Broken packet, try to fix */
drivers/input/joystick/sidewinder.c
418
" - going to reinitialize.\n", sw->gameport->phys);
drivers/input/joystick/sidewinder.c
419
sw->fail = SW_FAIL; /* Reinitialize */
drivers/input/joystick/sidewinder.c
435
if (i == sw->length && !sw_parse(buf, sw)) { /* Parse data */
drivers/input/joystick/sidewinder.c
437
sw->fail = 0;
drivers/input/joystick/sidewinder.c
438
sw->ok++;
drivers/input/joystick/sidewinder.c
440
if (sw->type == SW_ID_3DP && sw->length == 66 /* Many packets OK */
drivers/input/joystick/sidewinder.c
441
&& sw->ok > SW_OK) {
drivers/input/joystick/sidewinder.c
444
" - enabling optimization again.\n", sw->gameport->phys);
drivers/input/joystick/sidewinder.c
445
sw->length = 22;
drivers/input/joystick/sidewinder.c
451
sw->ok = 0;
drivers/input/joystick/sidewinder.c
452
sw->fail++;
drivers/input/joystick/sidewinder.c
454
if (sw->type == SW_ID_3DP && sw->length == 22 && sw->fail > SW_BAD) { /* Consecutive bad packets */
drivers/input/joystick/sidewinder.c
457
" - disabling optimization.\n", sw->gameport->phys);
drivers/input/joystick/sidewinder.c
458
sw->length = 66;
drivers/input/joystick/sidewinder.c
461
if (sw->fail < SW_FAIL)
drivers/input/joystick/sidewinder.c
465
" - reinitializing joystick.\n", sw->gameport->phys);
drivers/input/joystick/sidewinder.c
467
if (!i && sw->type == SW_ID_3DP) { /* 3D Pro can be in analog mode */
drivers/input/joystick/sidewinder.c
469
sw_init_digital(sw->gameport);
drivers/input/joystick/sidewinder.c
473
i = sw_read_packet(sw->gameport, buf, SW_LENGTH, 0); /* Read normal data packet */
drivers/input/joystick/sidewinder.c
475
sw_read_packet(sw->gameport, buf, SW_LENGTH, i); /* Read ID packet, this initializes the stick */
drivers/input/joystick/sidewinder.c
477
sw->fail = SW_FAIL;
drivers/input/joystick/sidewinder.c
484
struct sw *sw = gameport_get_drvdata(gameport);
drivers/input/joystick/sidewinder.c
486
sw->reads++;
drivers/input/joystick/sidewinder.c
487
if (sw_read(sw))
drivers/input/joystick/sidewinder.c
488
sw->bads++;
drivers/input/joystick/sidewinder.c
493
struct sw *sw = input_get_drvdata(dev);
drivers/input/joystick/sidewinder.c
495
gameport_start_polling(sw->gameport);
drivers/input/joystick/sidewinder.c
501
struct sw *sw = input_get_drvdata(dev);
drivers/input/joystick/sidewinder.c
503
gameport_stop_polling(sw->gameport);
drivers/input/joystick/sidewinder.c
570
struct sw *sw;
drivers/input/joystick/sidewinder.c
581
sw = kzalloc_obj(*sw);
drivers/input/joystick/sidewinder.c
584
if (!sw || !buf || !idbuf) {
drivers/input/joystick/sidewinder.c
589
sw->gameport = gameport;
drivers/input/joystick/sidewinder.c
591
gameport_set_drvdata(gameport, sw);
drivers/input/joystick/sidewinder.c
634
sw->type = -1;
drivers/input/joystick/sidewinder.c
648
sw->number = 1;
drivers/input/joystick/sidewinder.c
649
sw->gameport = gameport;
drivers/input/joystick/sidewinder.c
650
sw->length = i;
drivers/input/joystick/sidewinder.c
651
sw->bits = m;
drivers/input/joystick/sidewinder.c
657
sw->number++;
drivers/input/joystick/sidewinder.c
663
sw->type = SW_ID_FSP;
drivers/input/joystick/sidewinder.c
666
sw->number++;
drivers/input/joystick/sidewinder.c
669
sw->number++;
drivers/input/joystick/sidewinder.c
672
sw->type = SW_ID_GP;
drivers/input/joystick/sidewinder.c
676
sw->type = SW_ID_FFW;
drivers/input/joystick/sidewinder.c
680
sw->type = SW_ID_FFP;
drivers/input/joystick/sidewinder.c
683
sw->type = SW_ID_PP;
drivers/input/joystick/sidewinder.c
686
sw->bits = 3;
drivers/input/joystick/sidewinder.c
689
sw->length = 22;
drivers/input/joystick/sidewinder.c
692
sw->type = SW_ID_3DP;
drivers/input/joystick/sidewinder.c
699
} while (k && sw->type == -1);
drivers/input/joystick/sidewinder.c
701
if (sw->type == -1) {
drivers/input/joystick/sidewinder.c
721
for (i = 0; i < sw->number; i++) {
drivers/input/joystick/sidewinder.c
724
snprintf(sw->name, sizeof(sw->name),
drivers/input/joystick/sidewinder.c
725
"Microsoft SideWinder %s", sw_name[sw->type]);
drivers/input/joystick/sidewinder.c
726
snprintf(sw->phys[i], sizeof(sw->phys[i]),
drivers/input/joystick/sidewinder.c
729
sw->dev[i] = input_dev = input_allocate_device();
drivers/input/joystick/sidewinder.c
735
input_dev->name = sw->name;
drivers/input/joystick/sidewinder.c
736
input_dev->phys = sw->phys[i];
drivers/input/joystick/sidewinder.c
739
input_dev->id.product = sw->type;
drivers/input/joystick/sidewinder.c
743
input_set_drvdata(input_dev, sw);
drivers/input/joystick/sidewinder.c
750
for (j = 0; (bits = sw_bit[sw->type][j]); j++) {
drivers/input/joystick/sidewinder.c
753
code = sw_abs[sw->type][j];
drivers/input/joystick/sidewinder.c
764
for (j = 0; (code = sw_btn[sw->type][j]); j++)
drivers/input/joystick/sidewinder.c
767
dbg("%s%s [%d-bit id %d data %d]\n", sw->name, comment, m, l, k);
drivers/input/joystick/sidewinder.c
769
err = input_register_device(sw->dev[i]);
drivers/input/joystick/sidewinder.c
779
fail4: input_free_device(sw->dev[i]);
drivers/input/joystick/sidewinder.c
781
input_unregister_device(sw->dev[i]);
drivers/input/joystick/sidewinder.c
784
kfree(sw);
drivers/input/joystick/sidewinder.c
790
struct sw *sw = gameport_get_drvdata(gameport);
drivers/input/joystick/sidewinder.c
793
for (i = 0; i < sw->number; i++)
drivers/input/joystick/sidewinder.c
794
input_unregister_device(sw->dev[i]);
drivers/input/joystick/sidewinder.c
797
kfree(sw);
drivers/input/misc/ad714x.c
1004
ad714x->sw = drv_mem;
drivers/input/misc/ad714x.c
1005
drv_mem += sizeof(*ad714x->sw);
drivers/input/misc/ad714x.c
1006
ad714x->sw->slider = sd_drv = drv_mem;
drivers/input/misc/ad714x.c
1008
ad714x->sw->wheel = wl_drv = drv_mem;
drivers/input/misc/ad714x.c
1010
ad714x->sw->touchpad = tp_drv = drv_mem;
drivers/input/misc/ad714x.c
1012
ad714x->sw->button = bt_drv = drv_mem;
drivers/input/misc/ad714x.c
217
struct ad714x_button_drv *sw = &ad714x->sw->button[idx];
drivers/input/misc/ad714x.c
219
switch (sw->state) {
drivers/input/misc/ad714x.c
224
input_report_key(sw->input, hw->keycode, 1);
drivers/input/misc/ad714x.c
225
input_sync(sw->input);
drivers/input/misc/ad714x.c
226
sw->state = ACTIVE;
drivers/input/misc/ad714x.c
234
input_report_key(sw->input, hw->keycode, 0);
drivers/input/misc/ad714x.c
235
input_sync(sw->input);
drivers/input/misc/ad714x.c
236
sw->state = IDLE;
drivers/input/misc/ad714x.c
270
struct ad714x_slider_drv *sw = &ad714x->sw->slider[idx];
drivers/input/misc/ad714x.c
272
sw->highest_stage = ad714x_cal_highest_stage(ad714x, hw->start_stage,
drivers/input/misc/ad714x.c
276
sw->highest_stage);
drivers/input/misc/ad714x.c
295
struct ad714x_slider_drv *sw = &ad714x->sw->slider[idx];
drivers/input/misc/ad714x.c
297
sw->abs_pos = ad714x_cal_abs_pos(ad714x, hw->start_stage, hw->end_stage,
drivers/input/misc/ad714x.c
298
sw->highest_stage, hw->max_coord);
drivers/input/misc/ad714x.c
301
sw->abs_pos);
drivers/input/misc/ad714x.c
316
struct ad714x_slider_drv *sw = &ad714x->sw->slider[idx];
drivers/input/misc/ad714x.c
318
sw->flt_pos = (sw->flt_pos * (10 - 4) +
drivers/input/misc/ad714x.c
319
sw->abs_pos * 4)/10;
drivers/input/misc/ad714x.c
322
sw->flt_pos);
drivers/input/misc/ad714x.c
342
struct ad714x_slider_drv *sw = &ad714x->sw->slider[idx];
drivers/input/misc/ad714x.c
351
switch (sw->state) {
drivers/input/misc/ad714x.c
354
sw->state = JITTER;
drivers/input/misc/ad714x.c
368
sw->flt_pos = sw->abs_pos;
drivers/input/misc/ad714x.c
369
sw->state = ACTIVE;
drivers/input/misc/ad714x.c
380
input_report_abs(sw->input, ABS_X, sw->flt_pos);
drivers/input/misc/ad714x.c
381
input_report_key(sw->input, BTN_TOUCH, 1);
drivers/input/misc/ad714x.c
387
sw->state = IDLE;
drivers/input/misc/ad714x.c
388
input_report_key(sw->input, BTN_TOUCH, 0);
drivers/input/misc/ad714x.c
392
input_sync(sw->input);
drivers/input/misc/ad714x.c
411
struct ad714x_wheel_drv *sw = &ad714x->sw->wheel[idx];
drivers/input/misc/ad714x.c
413
sw->pre_highest_stage = sw->highest_stage;
drivers/input/misc/ad714x.c
414
sw->highest_stage = ad714x_cal_highest_stage(ad714x, hw->start_stage,
drivers/input/misc/ad714x.c
418
sw->highest_stage);
drivers/input/misc/ad714x.c
453
struct ad714x_wheel_drv *sw = &ad714x->sw->wheel[idx];
drivers/input/misc/ad714x.c
458
first_before = (sw->highest_stage + stage_num - 1) % stage_num;
drivers/input/misc/ad714x.c
459
highest = sw->highest_stage;
drivers/input/misc/ad714x.c
460
first_after = (sw->highest_stage + stage_num + 1) % stage_num;
drivers/input/misc/ad714x.c
472
sw->abs_pos = ((hw->max_coord / (hw->end_stage - hw->start_stage)) *
drivers/input/misc/ad714x.c
475
if (sw->abs_pos > hw->max_coord)
drivers/input/misc/ad714x.c
476
sw->abs_pos = hw->max_coord;
drivers/input/misc/ad714x.c
477
else if (sw->abs_pos < 0)
drivers/input/misc/ad714x.c
478
sw->abs_pos = 0;
drivers/input/misc/ad714x.c
484
struct ad714x_wheel_drv *sw = &ad714x->sw->wheel[idx];
drivers/input/misc/ad714x.c
485
if (((sw->pre_highest_stage == hw->end_stage) &&
drivers/input/misc/ad714x.c
486
(sw->highest_stage == hw->start_stage)) ||
drivers/input/misc/ad714x.c
487
((sw->pre_highest_stage == hw->start_stage) &&
drivers/input/misc/ad714x.c
488
(sw->highest_stage == hw->end_stage)))
drivers/input/misc/ad714x.c
489
sw->flt_pos = sw->abs_pos;
drivers/input/misc/ad714x.c
491
sw->flt_pos = ((sw->flt_pos * 30) + (sw->abs_pos * 71)) / 100;
drivers/input/misc/ad714x.c
493
if (sw->flt_pos > hw->max_coord)
drivers/input/misc/ad714x.c
494
sw->flt_pos = hw->max_coord;
drivers/input/misc/ad714x.c
514
struct ad714x_wheel_drv *sw = &ad714x->sw->wheel[idx];
drivers/input/misc/ad714x.c
523
switch (sw->state) {
drivers/input/misc/ad714x.c
526
sw->state = JITTER;
drivers/input/misc/ad714x.c
540
sw->flt_pos = sw->abs_pos;
drivers/input/misc/ad714x.c
541
sw->state = ACTIVE;
drivers/input/misc/ad714x.c
552
input_report_abs(sw->input, ABS_WHEEL,
drivers/input/misc/ad714x.c
553
sw->flt_pos);
drivers/input/misc/ad714x.c
554
input_report_key(sw->input, BTN_TOUCH, 1);
drivers/input/misc/ad714x.c
560
sw->state = IDLE;
drivers/input/misc/ad714x.c
561
input_report_key(sw->input, BTN_TOUCH, 0);
drivers/input/misc/ad714x.c
566
input_sync(sw->input);
drivers/input/misc/ad714x.c
598
struct ad714x_touchpad_drv *sw = &ad714x->sw->touchpad[idx];
drivers/input/misc/ad714x.c
600
sw->x_highest_stage = ad714x_cal_highest_stage(ad714x,
drivers/input/misc/ad714x.c
602
sw->y_highest_stage = ad714x_cal_highest_stage(ad714x,
drivers/input/misc/ad714x.c
607
idx, sw->x_highest_stage, sw->y_highest_stage);
drivers/input/misc/ad714x.c
619
struct ad714x_touchpad_drv *sw = &ad714x->sw->touchpad[idx];
drivers/input/misc/ad714x.c
622
for (i = hw->x_start_stage; i < sw->x_highest_stage; i++) {
drivers/input/misc/ad714x.c
628
for (i = sw->x_highest_stage; i < hw->x_end_stage; i++) {
drivers/input/misc/ad714x.c
634
for (i = hw->y_start_stage; i < sw->y_highest_stage; i++) {
drivers/input/misc/ad714x.c
640
for (i = sw->y_highest_stage; i < hw->y_end_stage; i++) {
drivers/input/misc/ad714x.c
658
struct ad714x_touchpad_drv *sw = &ad714x->sw->touchpad[idx];
drivers/input/misc/ad714x.c
660
sw->x_abs_pos = ad714x_cal_abs_pos(ad714x, hw->x_start_stage,
drivers/input/misc/ad714x.c
661
hw->x_end_stage, sw->x_highest_stage, hw->x_max_coord);
drivers/input/misc/ad714x.c
662
sw->y_abs_pos = ad714x_cal_abs_pos(ad714x, hw->y_start_stage,
drivers/input/misc/ad714x.c
663
hw->y_end_stage, sw->y_highest_stage, hw->y_max_coord);
drivers/input/misc/ad714x.c
666
sw->x_abs_pos, sw->y_abs_pos);
drivers/input/misc/ad714x.c
671
struct ad714x_touchpad_drv *sw = &ad714x->sw->touchpad[idx];
drivers/input/misc/ad714x.c
673
sw->x_flt_pos = (sw->x_flt_pos * (10 - 4) +
drivers/input/misc/ad714x.c
674
sw->x_abs_pos * 4)/10;
drivers/input/misc/ad714x.c
675
sw->y_flt_pos = (sw->y_flt_pos * (10 - 4) +
drivers/input/misc/ad714x.c
676
sw->y_abs_pos * 4)/10;
drivers/input/misc/ad714x.c
679
idx, sw->x_flt_pos, sw->y_flt_pos);
drivers/input/misc/ad714x.c
703
struct ad714x_touchpad_drv *sw = &ad714x->sw->touchpad[idx];
drivers/input/misc/ad714x.c
710
if (!sw->left_ep) {
drivers/input/misc/ad714x.c
712
sw->left_ep = 1;
drivers/input/misc/ad714x.c
713
sw->left_ep_val =
drivers/input/misc/ad714x.c
719
LEFT_RIGHT_END_POINT_DEAVTIVALION_LEVEL + sw->left_ep_val))
drivers/input/misc/ad714x.c
720
sw->left_ep = 0;
drivers/input/misc/ad714x.c
727
if (!sw->right_ep) {
drivers/input/misc/ad714x.c
729
sw->right_ep = 1;
drivers/input/misc/ad714x.c
730
sw->right_ep_val =
drivers/input/misc/ad714x.c
736
LEFT_RIGHT_END_POINT_DEAVTIVALION_LEVEL + sw->right_ep_val))
drivers/input/misc/ad714x.c
737
sw->right_ep = 0;
drivers/input/misc/ad714x.c
744
if (!sw->top_ep) {
drivers/input/misc/ad714x.c
746
sw->top_ep = 1;
drivers/input/misc/ad714x.c
747
sw->top_ep_val =
drivers/input/misc/ad714x.c
753
TOP_BOTTOM_END_POINT_DEAVTIVALION_LEVEL + sw->top_ep_val))
drivers/input/misc/ad714x.c
754
sw->top_ep = 0;
drivers/input/misc/ad714x.c
761
if (!sw->bottom_ep) {
drivers/input/misc/ad714x.c
763
sw->bottom_ep = 1;
drivers/input/misc/ad714x.c
764
sw->bottom_ep_val =
drivers/input/misc/ad714x.c
770
TOP_BOTTOM_END_POINT_DEAVTIVALION_LEVEL + sw->bottom_ep_val))
drivers/input/misc/ad714x.c
771
sw->bottom_ep = 0;
drivers/input/misc/ad714x.c
774
return sw->left_ep || sw->right_ep || sw->top_ep || sw->bottom_ep;
drivers/input/misc/ad714x.c
795
struct ad714x_touchpad_drv *sw = &ad714x->sw->touchpad[idx];
drivers/input/misc/ad714x.c
807
switch (sw->state) {
drivers/input/misc/ad714x.c
810
sw->state = JITTER;
drivers/input/misc/ad714x.c
829
sw->x_flt_pos = sw->x_abs_pos;
drivers/input/misc/ad714x.c
830
sw->y_flt_pos = sw->y_abs_pos;
drivers/input/misc/ad714x.c
831
sw->state = ACTIVE;
drivers/input/misc/ad714x.c
845
input_report_abs(sw->input, ABS_X,
drivers/input/misc/ad714x.c
846
sw->x_flt_pos);
drivers/input/misc/ad714x.c
847
input_report_abs(sw->input, ABS_Y,
drivers/input/misc/ad714x.c
848
sw->y_flt_pos);
drivers/input/misc/ad714x.c
849
input_report_key(sw->input, BTN_TOUCH,
drivers/input/misc/ad714x.c
857
sw->state = IDLE;
drivers/input/misc/ad714x.c
858
input_report_key(sw->input, BTN_TOUCH, 0);
drivers/input/misc/ad714x.c
862
input_sync(sw->input);
drivers/input/misc/ad714x.c
991
ad714x = devm_kzalloc(dev, sizeof(*ad714x) + sizeof(*ad714x->sw) +
drivers/input/misc/ad714x.h
33
struct ad714x_driver_data *sw;
drivers/input/misc/wistron_btns.c
388
{ KE_SW, 0x4a, {.sw = {SW_LID, 1}} }, /* lid close */
drivers/input/misc/wistron_btns.c
389
{ KE_SW, 0x4b, {.sw = {SW_LID, 0}} }, /* lid open */
drivers/input/misc/wistron_btns.c
589
{ KE_SW, 0x4a, {.sw = {SW_LID, 1}} }, /* lid close */
drivers/input/misc/wistron_btns.c
590
{ KE_SW, 0x4b, {.sw = {SW_LID, 0}} }, /* lid open */
drivers/input/sparse-keymap.c
202
__set_bit(entry->sw.code, dev->swbit);
drivers/input/sparse-keymap.c
249
value = ke->sw.value;
drivers/input/sparse-keymap.c
253
input_report_switch(dev, ke->sw.code, value);
drivers/input/touchscreen/hynitron_cstxxx.c
292
u8 finger_id, sw, w;
drivers/input/touchscreen/hynitron_cstxxx.c
333
sw = (buf[idx] & 0x0f) >> 1;
drivers/input/touchscreen/hynitron_cstxxx.c
343
if (sw == CST3XX_TOUCH_DATA_TOUCH_VAL)
drivers/media/platform/nxp/dw100/dw100.c
388
u32 sw, sh, mw, mh, idx;
drivers/media/platform/nxp/dw100/dw100.c
392
sw = ctx->q_data[DW100_QUEUE_SRC].pix_fmt.width;
drivers/media/platform/nxp/dw100/dw100.c
398
qsw = dw100_map_convert_to_uq12_4(sw);
drivers/media/platform/samsung/exynos-gsc/gsc-core.c
605
int gsc_check_scaler_ratio(struct gsc_variant *var, int sw, int sh, int dw,
drivers/media/platform/samsung/exynos-gsc/gsc-core.c
623
if ((sw / tmp_w) > sc_down_max ||
drivers/media/platform/samsung/exynos-gsc/gsc-core.c
625
(tmp_w / sw) > var->sc_up_max ||
drivers/media/platform/samsung/exynos-gsc/gsc-core.h
408
int gsc_check_scaler_ratio(struct gsc_variant *var, int sw, int sh, int dw,
drivers/media/platform/samsung/exynos4-is/fimc-core.c
191
int fimc_check_scaler_ratio(struct fimc_ctx *ctx, int sw, int sh,
drivers/media/platform/samsung/exynos4-is/fimc-core.c
198
return (sw == dw && sh == dh) ? 0 : -EINVAL;
drivers/media/platform/samsung/exynos4-is/fimc-core.c
200
if ((sw >= SCALER_MAX_HRATIO * dw) || (sh >= SCALER_MAX_VRATIO * dh))
drivers/media/platform/samsung/exynos4-is/fimc-core.h
628
int fimc_check_scaler_ratio(struct fimc_ctx *ctx, int sw, int sh,
drivers/misc/hisi_hikey_usb.c
122
sw = hisi_hikey_usb->dev_role_sw;
drivers/misc/hisi_hikey_usb.c
126
usb_role_switch_set_role(sw, role);
drivers/misc/hisi_hikey_usb.c
129
static int hub_usb_role_switch_set(struct usb_role_switch *sw, enum usb_role role)
drivers/misc/hisi_hikey_usb.c
131
struct hisi_hikey_usb *hisi_hikey_usb = usb_role_switch_get_drvdata(sw);
drivers/misc/hisi_hikey_usb.c
96
struct usb_role_switch *sw;
drivers/mtd/nand/onenand/onenand_omap2.c
103
if (sw)
drivers/mtd/nand/onenand/onenand_omap2.c
71
bool sr, bool sw,
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
517
struct aq_hw_atl_utils_fw_rpc_tid_s sw;
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
530
sw.tid = 0xFFFFU & (++self->rpc_tid);
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
531
sw.len = (u16)rpc_size;
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
532
aq_hw_write_reg(self, HW_ATL_RPC_CONTROL_ADR, sw.val);
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
541
struct aq_hw_atl_utils_fw_rpc_tid_s sw;
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
546
sw.val = aq_hw_read_reg(self, HW_ATL_RPC_CONTROL_ADR);
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
548
self->rpc_tid = sw.tid;
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
552
sw.tid == fw.tid,
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
562
if (sw.len > sizeof(self->rpc)) {
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
563
printk(KERN_INFO "Invalid sw len: %x\n", sw.len);
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
567
err = hw_atl_utils_fw_rpc_call(self, sw.len);
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
571
} while (sw.tid != fw.tid || 0xFFFFU == fw.len);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2930
u64 *sw;
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2933
sw = nqr->stats.sw_stats;
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2938
rx_packets = BNGE_GET_RING_STATS64(sw, rx_ucast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2939
rx_packets += BNGE_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2940
rx_packets += BNGE_GET_RING_STATS64(sw, rx_bcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2942
tx_packets = BNGE_GET_RING_STATS64(sw, tx_ucast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2943
tx_packets += BNGE_GET_RING_STATS64(sw, tx_mcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2944
tx_packets += BNGE_GET_RING_STATS64(sw, tx_bcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2946
rx_bytes = BNGE_GET_RING_STATS64(sw, rx_ucast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2947
rx_bytes += BNGE_GET_RING_STATS64(sw, rx_mcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2948
rx_bytes += BNGE_GET_RING_STATS64(sw, rx_bcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2950
tx_bytes = BNGE_GET_RING_STATS64(sw, tx_ucast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2951
tx_bytes += BNGE_GET_RING_STATS64(sw, tx_mcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2952
tx_bytes += BNGE_GET_RING_STATS64(sw, tx_bcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2954
multicast = BNGE_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2956
BNGE_GET_RING_STATS64(sw, rx_discard_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
2958
BNGE_GET_RING_STATS64(sw, tx_error_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3048
u64 *sw;
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3051
sw = nqr->stats.sw_stats;
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3053
rx_save->packets += BNGE_GET_RING_STATS64(sw, rx_ucast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3054
rx_save->packets += BNGE_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3055
rx_save->packets += BNGE_GET_RING_STATS64(sw, rx_bcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3056
rx_save->bytes += BNGE_GET_RING_STATS64(sw, rx_ucast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3057
rx_save->bytes += BNGE_GET_RING_STATS64(sw, rx_mcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3058
rx_save->bytes += BNGE_GET_RING_STATS64(sw, rx_bcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3059
rx_save->hw_drop_overruns += BNGE_GET_RING_STATS64(sw, rx_discard_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
306
static void bnge_add_one_ctr(u64 hw, u64 *sw, u64 mask)
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3060
rx_save->hw_drops += BNGE_GET_RING_STATS64(sw, rx_error_pkts) +
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3061
BNGE_GET_RING_STATS64(sw, rx_discard_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3063
tx_save->packets += BNGE_GET_RING_STATS64(sw, tx_ucast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3064
tx_save->packets += BNGE_GET_RING_STATS64(sw, tx_mcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3065
tx_save->packets += BNGE_GET_RING_STATS64(sw, tx_bcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3066
tx_save->bytes += BNGE_GET_RING_STATS64(sw, tx_ucast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3067
tx_save->bytes += BNGE_GET_RING_STATS64(sw, tx_mcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3068
tx_save->bytes += BNGE_GET_RING_STATS64(sw, tx_bcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3069
tx_save->hw_drop_errors += BNGE_GET_RING_STATS64(sw, tx_error_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3070
tx_save->hw_drops += BNGE_GET_RING_STATS64(sw, tx_discard_pkts) +
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3071
BNGE_GET_RING_STATS64(sw, tx_error_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3074
BNGE_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
311
sw_val = READ_ONCE(*sw);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3119
u64 *sw;
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3125
sw = nqr->stats.sw_stats;
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3128
stats->packets += BNGE_GET_RING_STATS64(sw, rx_ucast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3129
stats->packets += BNGE_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3130
stats->packets += BNGE_GET_RING_STATS64(sw, rx_bcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3133
stats->bytes += BNGE_GET_RING_STATS64(sw, rx_ucast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3134
stats->bytes += BNGE_GET_RING_STATS64(sw, rx_mcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3135
stats->bytes += BNGE_GET_RING_STATS64(sw, rx_bcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3137
stats->hw_drop_overruns = BNGE_GET_RING_STATS64(sw, rx_discard_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3138
stats->hw_drops = BNGE_GET_RING_STATS64(sw, rx_error_pkts) +
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3147
u64 *sw;
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
315
WRITE_ONCE(*sw, sw_tmp);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3153
sw = bnapi->nq_ring.stats.sw_stats;
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3156
stats->packets += BNGE_GET_RING_STATS64(sw, tx_ucast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3157
stats->packets += BNGE_GET_RING_STATS64(sw, tx_mcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3158
stats->packets += BNGE_GET_RING_STATS64(sw, tx_bcast_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3161
stats->bytes += BNGE_GET_RING_STATS64(sw, tx_ucast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3162
stats->bytes += BNGE_GET_RING_STATS64(sw, tx_mcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3163
stats->bytes += BNGE_GET_RING_STATS64(sw, tx_bcast_bytes);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3165
stats->hw_drop_errors = BNGE_GET_RING_STATS64(sw, tx_error_pkts);
drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
3166
stats->hw_drops = BNGE_GET_RING_STATS64(sw, tx_discard_pkts) +
drivers/net/ethernet/broadcom/bnge/bnge_netdev.h
229
#define BNGE_GET_RING_STATS64(sw, counter) \
drivers/net/ethernet/broadcom/bnge/bnge_netdev.h
230
(*((sw) + offsetof(struct ctx_hw_stats, counter) / 8))
drivers/net/ethernet/broadcom/bnge/bnge_netdev.h
232
#define BNGE_GET_RX_PORT_STATS64(sw, counter) \
drivers/net/ethernet/broadcom/bnge/bnge_netdev.h
233
(*((sw) + offsetof(struct rx_port_stats, counter) / 8))
drivers/net/ethernet/broadcom/bnge/bnge_netdev.h
235
#define BNGE_GET_TX_PORT_STATS64(sw, counter) \
drivers/net/ethernet/broadcom/bnge/bnge_netdev.h
236
(*((sw) + offsetof(struct tx_port_stats, counter) / 8))
drivers/net/ethernet/broadcom/bnxt/bnxt.c
10495
static void bnxt_add_one_ctr(u64 hw, u64 *sw, u64 mask)
drivers/net/ethernet/broadcom/bnxt/bnxt.c
10500
sw_tmp = (*sw & ~mask) | hw;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
10501
if (hw < (*sw & mask))
drivers/net/ethernet/broadcom/bnxt/bnxt.c
10503
WRITE_ONCE(*sw, sw_tmp);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13557
u64 *sw = cpr->stats.sw_stats;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13559
stats->rx_packets += BNXT_GET_RING_STATS64(sw, rx_ucast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13560
stats->rx_packets += BNXT_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13561
stats->rx_packets += BNXT_GET_RING_STATS64(sw, rx_bcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13563
stats->tx_packets += BNXT_GET_RING_STATS64(sw, tx_ucast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13564
stats->tx_packets += BNXT_GET_RING_STATS64(sw, tx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13565
stats->tx_packets += BNXT_GET_RING_STATS64(sw, tx_bcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13567
stats->rx_bytes += BNXT_GET_RING_STATS64(sw, rx_ucast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13568
stats->rx_bytes += BNXT_GET_RING_STATS64(sw, rx_mcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13569
stats->rx_bytes += BNXT_GET_RING_STATS64(sw, rx_bcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13571
stats->tx_bytes += BNXT_GET_RING_STATS64(sw, tx_ucast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13572
stats->tx_bytes += BNXT_GET_RING_STATS64(sw, tx_mcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13573
stats->tx_bytes += BNXT_GET_RING_STATS64(sw, tx_bcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13576
BNXT_GET_RING_STATS64(sw, rx_discard_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13578
stats->multicast += BNXT_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13580
stats->tx_dropped += BNXT_GET_RING_STATS64(sw, tx_error_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16098
u64 *sw;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16105
sw = cpr->stats.sw_stats;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16108
stats->packets += BNXT_GET_RING_STATS64(sw, rx_ucast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16109
stats->packets += BNXT_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16110
stats->packets += BNXT_GET_RING_STATS64(sw, rx_bcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16113
stats->bytes += BNXT_GET_RING_STATS64(sw, rx_ucast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16114
stats->bytes += BNXT_GET_RING_STATS64(sw, rx_mcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16115
stats->bytes += BNXT_GET_RING_STATS64(sw, rx_bcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16127
u64 *sw;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16134
sw = bnapi->cp_ring.stats.sw_stats;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16137
stats->packets += BNXT_GET_RING_STATS64(sw, tx_ucast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16138
stats->packets += BNXT_GET_RING_STATS64(sw, tx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16139
stats->packets += BNXT_GET_RING_STATS64(sw, tx_bcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16142
stats->bytes += BNXT_GET_RING_STATS64(sw, tx_ucast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16143
stats->bytes += BNXT_GET_RING_STATS64(sw, tx_mcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
16144
stats->bytes += BNXT_GET_RING_STATS64(sw, tx_bcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2801
#define BNXT_GET_RING_STATS64(sw, counter) \
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2802
(*((sw) + offsetof(struct ctx_hw_stats, counter) / 8))
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2804
#define BNXT_GET_RX_PORT_STATS64(sw, counter) \
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2805
(*((sw) + offsetof(struct rx_port_stats, counter) / 8))
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2807
#define BNXT_GET_TX_PORT_STATS64(sw, counter) \
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2808
(*((sw) + offsetof(struct tx_port_stats, counter) / 8))
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
615
u64 *sw;
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
637
sw = (u64 *)&cpr->sw_stats->rx;
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
640
buf[j] = sw[k];
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
643
sw = (u64 *)&cpr->sw_stats->cmn;
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
645
buf[j] = sw[k];
drivers/net/ethernet/emulex/benet/be_hw.h
320
u8 sw; /* dword 1 */
drivers/net/ethernet/emulex/benet/be_hw.h
353
u8 sw; /* dword 1 */
drivers/net/ethernet/intel/ice/ice_common.c
5769
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_common.c
5779
list_replace_init(&sw->recp_list[i].filt_rules,
drivers/net/ethernet/intel/ice/ice_common.c
5780
&sw->recp_list[i].filt_replay_rules);
drivers/net/ethernet/intel/ice/ice_common.c
824
struct ice_switch_info *sw;
drivers/net/ethernet/intel/ice/ice_common.c
829
sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_common.c
831
if (!sw)
drivers/net/ethernet/intel/ice/ice_common.c
834
INIT_LIST_HEAD(&sw->vsi_list_map_head);
drivers/net/ethernet/intel/ice/ice_common.c
835
sw->prof_res_bm_init = 0;
drivers/net/ethernet/intel/ice/ice_common.c
838
sw->recp_cnt = ICE_SW_LKUP_LAST;
drivers/net/ethernet/intel/ice/ice_common.c
854
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_common.c
860
list_for_each_entry_safe(v_pos_map, v_tmp_map, &sw->vsi_list_map_head,
drivers/net/ethernet/intel/ice/ice_common.c
865
recps = sw->recp_list;
drivers/net/ethernet/intel/ice/ice_common.c
894
devm_kfree(ice_hw_to_dev(hw), sw->recp_list);
drivers/net/ethernet/intel/ice/ice_common.c
895
devm_kfree(ice_hw_to_dev(hw), sw);
drivers/net/ethernet/intel/ice/ice_switch.c
2232
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
2263
sw->recp_list[rid].recp_created = false;
drivers/net/ethernet/intel/ice/ice_switch.c
2264
sw->recp_list[rid].adv_rule = false;
drivers/net/ethernet/intel/ice/ice_switch.c
2265
memset(&sw->recp_list[rid].lkup_exts, 0,
drivers/net/ethernet/intel/ice/ice_switch.c
2266
sizeof(sw->recp_list[rid].lkup_exts));
drivers/net/ethernet/intel/ice/ice_switch.c
2852
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
2865
list_add(&v_map->list_entry, &sw->vsi_list_map_head);
drivers/net/ethernet/intel/ice/ice_switch.c
3068
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
3074
rule_lock = &sw->recp_list[ICE_SW_LKUP_MAC].filt_rule_lock;
drivers/net/ethernet/intel/ice/ice_switch.c
3075
rule_head = &sw->recp_list[ICE_SW_LKUP_MAC].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
3231
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
3234
list_head = &sw->recp_list[recp_id].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
3262
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
3266
list_head = &sw->recp_list[recp_id].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
3291
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
3302
rule_lock = &sw->recp_list[recp_id].filt_rule_lock;
drivers/net/ethernet/intel/ice/ice_switch.c
3457
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
3469
rule_lock = &sw->recp_list[recp_id].filt_rule_lock;
drivers/net/ethernet/intel/ice/ice_switch.c
3548
struct ice_switch_info *sw;
drivers/net/ethernet/intel/ice/ice_switch.c
3559
sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
3560
rule_head = &sw->recp_list[ICE_SW_LKUP_VLAN].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
3564
rule_lock = &sw->recp_list[ICE_SW_LKUP_VLAN].filt_rule_lock;
drivers/net/ethernet/intel/ice/ice_switch.c
3658
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
3683
rule_lock = &sw->recp_list[ICE_SW_LKUP_VLAN].filt_rule_lock;
drivers/net/ethernet/intel/ice/ice_switch.c
4248
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
4265
rule_head = &sw->recp_list[recipe_id].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
4266
rule_lock = &sw->recp_list[recipe_id].filt_rule_lock;
drivers/net/ethernet/intel/ice/ice_switch.c
4435
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
4444
vlan_lock = &sw->recp_list[ICE_SW_LKUP_VLAN].filt_rule_lock;
drivers/net/ethernet/intel/ice/ice_switch.c
4445
vlan_head = &sw->recp_list[ICE_SW_LKUP_VLAN].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
4490
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
4499
rule_lock = &sw->recp_list[lkup].filt_rule_lock;
drivers/net/ethernet/intel/ice/ice_switch.c
4500
rule_head = &sw->recp_list[lkup].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
5869
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
5872
list_for_each_entry(list_itr, &sw->recp_list[recp_id].filt_rules,
drivers/net/ethernet/intel/ice/ice_switch.c
6055
struct ice_switch_info *sw;
drivers/net/ethernet/intel/ice/ice_switch.c
6254
sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6255
sw->recp_list[rid].adv_rule = true;
drivers/net/ethernet/intel/ice/ice_switch.c
6256
rule_head = &sw->recp_list[rid].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
6513
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6514
struct ice_sw_recipe *r_list = sw->recp_list;
drivers/net/ethernet/intel/ice/ice_switch.c
6551
struct ice_switch_info *sw;
drivers/net/ethernet/intel/ice/ice_switch.c
6553
sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6554
if (!sw->recp_list[remove_entry->rid].recp_created)
drivers/net/ethernet/intel/ice/ice_switch.c
6556
list_head = &sw->recp_list[remove_entry->rid].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
6611
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6618
head = &sw->recp_list[i].filt_replay_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
6619
if (!sw->recp_list[i].adv_rule)
drivers/net/ethernet/intel/ice/ice_switch.c
6637
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6640
if (!sw)
drivers/net/ethernet/intel/ice/ice_switch.c
6644
if (!list_empty(&sw->recp_list[i].filt_replay_rules)) {
drivers/net/ethernet/intel/ice/ice_switch.c
6647
l_head = &sw->recp_list[i].filt_replay_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
6648
if (!sw->recp_list[i].adv_rule)
drivers/net/ethernet/marvell/prestera/prestera.h
131
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera.h
25
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera.h
31
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera.h
313
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera.h
337
#define prestera_dev(sw) ((sw)->dev->dev)
drivers/net/ethernet/marvell/prestera/prestera.h
339
static inline void prestera_write(const struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera.h
342
writel(val, sw->dev->pp_regs + reg);
drivers/net/ethernet/marvell/prestera/prestera.h
345
static inline u32 prestera_read(const struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera.h
348
return readl(sw->dev->pp_regs + reg);
drivers/net/ethernet/marvell/prestera/prestera.h
354
struct prestera_port *prestera_port_find_by_hwid(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera.h
359
int prestera_router_init(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera.h
360
void prestera_router_fini(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera.h
362
struct prestera_port *prestera_find_port(struct prestera_switch *sw, u32 id);
drivers/net/ethernet/marvell/prestera/prestera.h
391
int prestera_lag_id(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera.h
394
struct prestera_lag *prestera_lag_by_id(struct prestera_switch *sw, u16 id);
drivers/net/ethernet/marvell/prestera/prestera.h
399
prestera_mdb_entry_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera.h
404
prestera_flood_domain_create(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
15
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
224
err = prestera_hw_vtcam_iface_bind(ruleset->acl->sw, &iface,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
255
err = prestera_hw_vtcam_iface_unbind(acl->sw, &iface,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
329
return prestera_hw_vtcam_iface_bind(port->sw, &iface, ruleset->vtcam_id,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
341
return prestera_hw_vtcam_iface_unbind(port->sw, &iface,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
477
int prestera_acl_rule_add(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
494
rule->re = prestera_acl_rule_entry_find(sw->acl, &rule->re_key);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
499
rule->re = prestera_acl_rule_entry_create(sw->acl, &rule->re_key,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
514
list_add_tail(&rule->list, &sw->acl->rules);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
520
prestera_acl_rule_entry_destroy(sw->acl, rule->re);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
529
void prestera_acl_rule_del(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
540
prestera_acl_rule_entry_destroy(sw->acl, rule->re);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
541
prestera_acl_ruleset_prio_refresh(sw->acl, ruleset);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
556
err = prestera_counter_stats_get(acl->sw->counter,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
578
static int __prestera_acl_rule_entry2hw_del(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
581
return prestera_hw_vtcam_rule_del(sw, e->vtcam_id, e->hw_id);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
584
static int __prestera_acl_rule_entry2hw_add(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
627
return prestera_hw_vtcam_rule_add(sw, e->vtcam_id, e->key.prio,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
633
__prestera_acl_rule_entry_act_destruct(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
637
prestera_counter_put(sw->counter, e->counter.block, e->counter.id);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
640
prestera_hw_policer_release(sw, e->police.i.id);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
651
ret = __prestera_acl_rule_entry2hw_del(acl->sw, e);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
654
__prestera_acl_rule_entry_act_destruct(acl->sw, e);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
659
__prestera_acl_rule_entry_act_construct(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
679
err = prestera_hw_policer_create(sw, type, &e->police.i.id);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
683
err = prestera_hw_policer_sr_tcm_set(sw, e->police.i.id,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
687
prestera_hw_policer_release(sw, e->police.i.id);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
694
err = prestera_counter_get(sw->counter, arg->count.client,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
704
__prestera_acl_rule_entry_act_destruct(sw, e);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
722
err = __prestera_acl_rule_entry_act_construct(acl->sw, e, arg);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
726
err = __prestera_acl_rule_entry2hw_add(acl->sw, e);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
738
WARN_ON(__prestera_acl_rule_entry2hw_del(acl->sw, e));
drivers/net/ethernet/marvell/prestera/prestera_acl.c
740
__prestera_acl_rule_entry_act_destruct(acl->sw, e);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
823
err = prestera_hw_vtcam_create(acl->sw, lookup, keymask, &new_vtcam_id,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
864
err = prestera_hw_vtcam_destroy(acl->sw, vtcam->id);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
878
int prestera_acl_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
887
acl->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
902
sw->acl = acl;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
913
void prestera_acl_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
915
struct prestera_acl *acl = sw->acl;
drivers/net/ethernet/marvell/prestera/prestera_acl.h
152
int prestera_acl_init(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_acl.h
153
void prestera_acl_fini(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_acl.h
164
int prestera_acl_rule_add(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_acl.h
166
void prestera_acl_rule_del(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_counter.c
14
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_counter.c
154
err = prestera_hw_counter_block_get(counter->sw, client,
drivers/net/ethernet/marvell/prestera/prestera_counter.c
192
prestera_hw_counter_block_release(counter->sw, block->id);
drivers/net/ethernet/marvell/prestera/prestera_counter.c
218
prestera_hw_counter_block_release(counter->sw, block->id);
drivers/net/ethernet/marvell/prestera/prestera_counter.c
295
prestera_hw_counter_clear(counter->sw, block->id, counter_id);
drivers/net/ethernet/marvell/prestera/prestera_counter.c
357
err = prestera_hw_counter_trigger(counter->sw, block->id);
drivers/net/ethernet/marvell/prestera/prestera_counter.c
372
err = prestera_hw_counters_get(counter->sw, counter->total_read,
drivers/net/ethernet/marvell/prestera/prestera_counter.c
400
prestera_hw_counter_abort(counter->sw);
drivers/net/ethernet/marvell/prestera/prestera_counter.c
435
int prestera_counter_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_counter.c
451
counter->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_counter.c
452
sw->counter = counter;
drivers/net/ethernet/marvell/prestera/prestera_counter.c
460
void prestera_counter_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_counter.c
462
struct prestera_counter *counter = sw->counter;
drivers/net/ethernet/marvell/prestera/prestera_counter.h
18
int prestera_counter_init(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_counter.h
19
void prestera_counter_fini(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
127
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
356
struct prestera_switch *sw = devlink_priv(dl);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
360
sw->dev->fw_rev.maj,
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
361
sw->dev->fw_rev.min,
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
362
sw->dev->fw_rev.sub);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
396
void prestera_devlink_free(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
398
struct devlink *dl = priv_to_devlink(sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
403
void prestera_devlink_register(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
405
struct devlink *dl = priv_to_devlink(sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
410
void prestera_devlink_unregister(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
412
struct devlink *dl = priv_to_devlink(sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
419
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
420
struct devlink *dl = priv_to_devlink(sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
426
attrs.switch_id.id_len = sizeof(sw->id);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
427
memcpy(attrs.switch_id.id, &sw->id, attrs.switch_id.id_len);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
433
dev_err(prestera_dev(sw), "devlink_port_register failed: %d\n", err);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
445
int prestera_devlink_traps_register(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
449
struct devlink *devlink = priv_to_devlink(sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
465
trap_data->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
467
sw->trap_data = trap_data;
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
477
sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
499
prestera_get_trap_item_by_cpu_code(struct prestera_switch *sw, u8 cpu_code)
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
501
struct prestera_trap_data *trap_data = sw->trap_data;
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
522
trap_item = prestera_get_trap_item_by_cpu_code(port->sw, cpu_code);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
531
prestera_devlink_trap_item_lookup(struct prestera_switch *sw, u16 trap_id)
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
533
struct prestera_trap_data *trap_data = sw->trap_data;
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
547
struct prestera_switch *sw = devlink_priv(devlink);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
550
trap_item = prestera_devlink_trap_item_lookup(sw, trap->id);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
573
struct prestera_switch *sw = devlink_priv(devlink);
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
579
return prestera_hw_cpu_code_counters_get(sw, prestera_trap->cpu_code,
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
583
void prestera_devlink_traps_unregister(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
585
struct prestera_trap_data *trap_data = sw->trap_data;
drivers/net/ethernet/marvell/prestera/prestera_devlink.c
586
struct devlink *dl = priv_to_devlink(sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.h
10
void prestera_devlink_free(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.h
12
void prestera_devlink_register(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.h
13
void prestera_devlink_unregister(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.h
20
int prestera_devlink_traps_register(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_devlink.h
21
void prestera_devlink_traps_unregister(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_ethtool.c
301
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_ethtool.c
304
strscpy(drvinfo->bus_info, dev_name(prestera_dev(sw)),
drivers/net/ethernet/marvell/prestera/prestera_ethtool.c
308
sw->dev->fw_rev.maj,
drivers/net/ethernet/marvell/prestera/prestera_ethtool.c
309
sw->dev->fw_rev.min,
drivers/net/ethernet/marvell/prestera/prestera_ethtool.c
310
sw->dev->fw_rev.sub);
drivers/net/ethernet/marvell/prestera/prestera_flow.c
173
prestera_flow_block_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_flow.c
182
prestera_flow_block_cb, sw);
drivers/net/ethernet/marvell/prestera/prestera_flow.c
184
block = prestera_flow_block_create(sw, f->net, ingress);
drivers/net/ethernet/marvell/prestera/prestera_flow.c
189
sw, block,
drivers/net/ethernet/marvell/prestera/prestera_flow.c
222
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_flow.c
228
block = prestera_flow_block_get(sw, f, &register_block, ingress);
drivers/net/ethernet/marvell/prestera/prestera_flow.c
259
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_flow.c
264
block_cb = flow_block_cb_lookup(f->block, prestera_flow_block_cb, sw);
drivers/net/ethernet/marvell/prestera/prestera_flow.c
79
prestera_flow_block_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_flow.c
92
block->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_flow.h
20
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
409
ruleset = prestera_acl_ruleset_lookup(block->sw->acl, block, chain_index);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
421
struct prestera_acl *acl = block->sw->acl;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
451
err = prestera_acl_rule_add(block->sw, rule);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
472
ruleset = prestera_acl_ruleset_lookup(block->sw->acl, block,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
479
prestera_acl_rule_del(block->sw, rule);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
48
ruleset = prestera_acl_ruleset_get(block->sw->acl, block,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
505
ruleset = prestera_acl_ruleset_get(block->sw->acl, block,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
563
ruleset = prestera_acl_ruleset_lookup(block->sw->acl, block,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
574
err = prestera_acl_rule_get_stats(block->sw->acl, rule, &packets,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1032
err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_INFO_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1044
int prestera_hw_switch_mac_set(struct prestera_switch *sw, const char *mac)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1052
return prestera_cmd(sw, PRESTERA_CMD_TYPE_SWITCH_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1056
int prestera_hw_switch_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1062
INIT_LIST_HEAD(&sw->event_handlers);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1066
err = prestera_cmd_ret_wait(sw, PRESTERA_CMD_TYPE_SWITCH_INIT,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1073
sw->dev->recv_msg = prestera_evt_recv;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1074
sw->dev->recv_pkt = prestera_pkt_recv;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1075
sw->port_count = __le32_to_cpu(resp.port_count);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1076
sw->mtu_min = PRESTERA_MIN_MTU;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1077
sw->mtu_max = __le32_to_cpu(resp.mtu_max);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1078
sw->id = resp.switch_id;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1079
sw->lag_member_max = resp.lag_member_max;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1080
sw->lag_max = resp.lag_max;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1081
sw->size_tbl_router_nexthop =
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1087
void prestera_hw_switch_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1089
WARN_ON(!list_empty(&sw->event_handlers));
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1092
int prestera_hw_switch_ageing_set(struct prestera_switch *sw, u32 ageing_ms)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1101
return prestera_cmd(sw, PRESTERA_CMD_TYPE_SWITCH_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1116
err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1158
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1174
err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1214
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1229
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1243
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1259
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1274
err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1308
int prestera_hw_vtcam_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1324
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_VTCAM_CREATE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1333
int prestera_hw_vtcam_destroy(struct prestera_switch *sw, u32 vtcam_id)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1339
return prestera_cmd(sw, PRESTERA_CMD_TYPE_VTCAM_DESTROY,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1371
int prestera_hw_vtcam_rule_add(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1404
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_VTCAM_RULE_ADD,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1415
int prestera_hw_vtcam_rule_del(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1423
return prestera_cmd(sw, PRESTERA_CMD_TYPE_VTCAM_RULE_DELETE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1427
int prestera_hw_vtcam_iface_bind(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1444
return prestera_cmd(sw, PRESTERA_CMD_TYPE_VTCAM_IFACE_BIND,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1448
int prestera_hw_vtcam_iface_unbind(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1464
return prestera_cmd(sw, PRESTERA_CMD_TYPE_VTCAM_IFACE_UNBIND,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1477
err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_SPAN_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1502
return prestera_cmd(port->sw, cmd_type, &req.cmd, sizeof(req));
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1519
return prestera_cmd(port->sw, cmd_type, &req.cmd, sizeof(req));
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1522
int prestera_hw_span_release(struct prestera_switch *sw, u8 span_id)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1528
return prestera_cmd(sw, PRESTERA_CMD_TYPE_SPAN_RELEASE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1542
err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1562
err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1581
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1597
err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1667
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1685
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1703
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1719
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1723
int prestera_hw_vlan_create(struct prestera_switch *sw, u16 vid)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1729
return prestera_cmd(sw, PRESTERA_CMD_TYPE_VLAN_CREATE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1733
int prestera_hw_vlan_delete(struct prestera_switch *sw, u16 vid)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1739
return prestera_cmd(sw, PRESTERA_CMD_TYPE_VLAN_DELETE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1754
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_VLAN_PORT_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1766
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_VLAN_PVID_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1779
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_STP_PORT_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1797
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_FDB_ADD,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1814
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_FDB_DELETE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1818
int prestera_hw_lag_fdb_add(struct prestera_switch *sw, u16 lag_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1832
return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_ADD,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1836
int prestera_hw_lag_fdb_del(struct prestera_switch *sw, u16 lag_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1849
return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_DELETE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1863
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_FDB_FLUSH_PORT,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1867
int prestera_hw_fdb_flush_vlan(struct prestera_switch *sw, u16 vid, u32 mode)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1874
return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_FLUSH_VLAN,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1890
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_FDB_FLUSH_PORT_VLAN,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1894
int prestera_hw_fdb_flush_lag(struct prestera_switch *sw, u16 lag_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1905
return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_FLUSH_PORT,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1909
int prestera_hw_fdb_flush_lag_vlan(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1921
return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_FLUSH_PORT_VLAN,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1925
int prestera_hw_bridge_create(struct prestera_switch *sw, u16 *bridge_id)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1931
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_BRIDGE_CREATE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1942
int prestera_hw_bridge_delete(struct prestera_switch *sw, u16 bridge_id)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1948
return prestera_cmd(sw, PRESTERA_CMD_TYPE_BRIDGE_DELETE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1960
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_BRIDGE_PORT_ADD,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1972
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_BRIDGE_PORT_DELETE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
1998
int prestera_hw_rif_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2011
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_ROUTER_RIF_CREATE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2020
int prestera_hw_rif_delete(struct prestera_switch *sw, u16 rif_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2032
return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_RIF_DELETE, &req.cmd,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2036
int prestera_hw_vr_create(struct prestera_switch *sw, u16 *vr_id)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2042
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_ROUTER_VR_CREATE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2051
int prestera_hw_vr_delete(struct prestera_switch *sw, u16 vr_id)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2057
return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_VR_DELETE, &req.cmd,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2061
int prestera_hw_lpm_add(struct prestera_switch *sw, u16 vr_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2071
return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_LPM_ADD, &req.cmd,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2075
int prestera_hw_lpm_del(struct prestera_switch *sw, u16 vr_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2084
return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_LPM_DELETE, &req.cmd,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2088
int prestera_hw_nh_entries_set(struct prestera_switch *sw, int count,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2103
return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_NH_GRP_SET, &req.cmd,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2107
int prestera_hw_nhgrp_blk_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2123
err = prestera_cmd_ret(sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2139
int prestera_hw_nh_group_create(struct prestera_switch *sw, u16 nh_count,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2146
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_ROUTER_NH_GRP_ADD,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2155
int prestera_hw_nh_group_delete(struct prestera_switch *sw, u16 nh_count,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2163
return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_NH_GRP_DELETE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2167
int prestera_hw_rxtx_init(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2176
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_RXTX_INIT,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2194
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_LAG_MEMBER_ADD,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2206
return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_LAG_MEMBER_DELETE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2223
return prestera_cmd(port->sw, cmd, &req.cmd, sizeof(req));
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2227
prestera_hw_cpu_code_counters_get(struct prestera_switch *sw, u8 code,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2238
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_CPU_CODE_COUNTERS_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2248
int prestera_hw_event_handler_register(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2255
eh = __find_event_handler(sw, type);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2269
list_add_rcu(&eh->list, &sw->event_handlers);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2274
void prestera_hw_event_handler_unregister(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2280
eh = __find_event_handler(sw, type);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2288
int prestera_hw_counter_trigger(struct prestera_switch *sw, u32 block_id)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2294
return prestera_cmd(sw, PRESTERA_CMD_TYPE_COUNTER_TRIGGER,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2298
int prestera_hw_counter_abort(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2302
return prestera_cmd(sw, PRESTERA_CMD_TYPE_COUNTER_ABORT,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2306
int prestera_hw_counters_get(struct prestera_switch *sw, u32 idx,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2322
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_COUNTER_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2340
int prestera_hw_counter_block_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2350
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_COUNTER_BLOCK_GET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2362
int prestera_hw_counter_block_release(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2369
return prestera_cmd(sw, PRESTERA_CMD_TYPE_COUNTER_BLOCK_RELEASE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2373
int prestera_hw_counter_clear(struct prestera_switch *sw, u32 block_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2381
return prestera_cmd(sw, PRESTERA_CMD_TYPE_COUNTER_CLEAR,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2385
int prestera_hw_policer_create(struct prestera_switch *sw, u8 type,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2394
err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_POLICER_CREATE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2403
int prestera_hw_policer_release(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2410
return prestera_cmd(sw, PRESTERA_CMD_TYPE_POLICER_RELEASE,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2414
int prestera_hw_policer_sr_tcm_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2426
return prestera_cmd(sw, PRESTERA_CMD_TYPE_POLICER_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2436
err = prestera_cmd_ret(domain->sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2453
return prestera_cmd(domain->sw, PRESTERA_CMD_TYPE_FLOOD_DOMAIN_DESTROY,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2461
struct prestera_switch *sw = domain->sw;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2487
if (prestera_lag_id(sw, flood_domain_port->dev,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2509
err = prestera_cmd(sw, PRESTERA_CMD_TYPE_FLOOD_DOMAIN_PORTS_SET,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2523
return prestera_cmd(domain->sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2537
return prestera_cmd(mdb->sw, PRESTERA_CMD_TYPE_MDB_CREATE, &req.cmd,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
2550
return prestera_cmd(mdb->sw, PRESTERA_CMD_TYPE_MDB_DESTROY, &req.cmd,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
813
static int __prestera_cmd_ret(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
819
struct prestera_device *dev = sw->dev;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
836
static int prestera_cmd_ret(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
841
return __prestera_cmd_ret(sw, type, cmd, clen, ret, rlen, 0);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
844
static int prestera_cmd_ret_wait(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
850
return __prestera_cmd_ret(sw, type, cmd, clen, ret, rlen, waitms);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
853
static int prestera_cmd(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
859
return prestera_cmd_ret(sw, type, cmd, clen, &resp.ret, sizeof(resp));
drivers/net/ethernet/marvell/prestera/prestera_hw.c
918
__find_event_handler(const struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
923
list_for_each_entry_rcu(eh, &sw->event_handlers, list) {
drivers/net/ethernet/marvell/prestera/prestera_hw.c
931
static int prestera_find_event_handler(const struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.c
939
tmp = __find_event_handler(sw, type);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
951
struct prestera_switch *sw = dev->priv;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
964
err = prestera_find_event_handler(sw, msg_type, &eh);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
974
eh.func(sw, &evt, eh.arg);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
981
struct prestera_switch *sw = dev->priv;
drivers/net/ethernet/marvell/prestera/prestera_hw.c
988
err = prestera_find_event_handler(sw, PRESTERA_EVENT_TYPE_RXTX, &eh);
drivers/net/ethernet/marvell/prestera/prestera_hw.c
992
eh.func(sw, &ev, eh.arg);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
140
(struct prestera_switch *sw, struct prestera_event *evt, void *arg);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
152
int prestera_hw_switch_init(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
153
void prestera_hw_switch_fini(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
154
int prestera_hw_switch_ageing_set(struct prestera_switch *sw, u32 ageing_ms);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
155
int prestera_hw_switch_mac_set(struct prestera_switch *sw, const char *mac);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
192
int prestera_hw_vlan_create(struct prestera_switch *sw, u16 vid);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
193
int prestera_hw_vlan_delete(struct prestera_switch *sw, u16 vid);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
205
int prestera_hw_fdb_flush_vlan(struct prestera_switch *sw, u16 vid, u32 mode);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
210
int prestera_hw_bridge_create(struct prestera_switch *sw, u16 *bridge_id);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
211
int prestera_hw_bridge_delete(struct prestera_switch *sw, u16 bridge_id);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
216
int prestera_hw_vtcam_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
219
int prestera_hw_vtcam_rule_add(struct prestera_switch *sw, u32 vtcam_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
223
int prestera_hw_vtcam_rule_del(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
225
int prestera_hw_vtcam_destroy(struct prestera_switch *sw, u32 vtcam_id);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
226
int prestera_hw_vtcam_iface_bind(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
229
int prestera_hw_vtcam_iface_unbind(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
234
int prestera_hw_counter_trigger(struct prestera_switch *sw, u32 block_id);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
235
int prestera_hw_counter_abort(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
236
int prestera_hw_counters_get(struct prestera_switch *sw, u32 idx,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
239
int prestera_hw_counter_block_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
242
int prestera_hw_counter_block_release(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
244
int prestera_hw_counter_clear(struct prestera_switch *sw, u32 block_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
252
int prestera_hw_span_release(struct prestera_switch *sw, u8 span_id);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
255
int prestera_hw_rif_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
257
int prestera_hw_rif_delete(struct prestera_switch *sw, u16 rif_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
261
int prestera_hw_vr_create(struct prestera_switch *sw, u16 *vr_id);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
262
int prestera_hw_vr_delete(struct prestera_switch *sw, u16 vr_id);
drivers/net/ethernet/marvell/prestera/prestera_hw.h
265
int prestera_hw_lpm_add(struct prestera_switch *sw, u16 vr_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
267
int prestera_hw_lpm_del(struct prestera_switch *sw, u16 vr_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
271
int prestera_hw_nh_entries_set(struct prestera_switch *sw, int count,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
273
int prestera_hw_nhgrp_blk_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
275
int prestera_hw_nh_group_create(struct prestera_switch *sw, u16 nh_count,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
277
int prestera_hw_nh_group_delete(struct prestera_switch *sw, u16 nh_count,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
281
int prestera_hw_event_handler_register(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
285
void prestera_hw_event_handler_unregister(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
290
int prestera_hw_rxtx_init(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
298
int prestera_hw_lag_fdb_add(struct prestera_switch *sw, u16 lag_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
300
int prestera_hw_lag_fdb_del(struct prestera_switch *sw, u16 lag_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
302
int prestera_hw_fdb_flush_lag(struct prestera_switch *sw, u16 lag_id,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
304
int prestera_hw_fdb_flush_lag_vlan(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
309
prestera_hw_cpu_code_counters_get(struct prestera_switch *sw, u8 code,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
314
int prestera_hw_policer_create(struct prestera_switch *sw, u8 type,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
316
int prestera_hw_policer_release(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_hw.h
318
int prestera_hw_policer_sr_tcm_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_main.c
1013
static int prestera_lag_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1017
sw->lags = kzalloc_objs(*sw->lags, sw->lag_max);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1018
if (!sw->lags)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1021
for (id = 0; id < sw->lag_max; id++)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1022
sw->lags[id].lag_id = id;
drivers/net/ethernet/marvell/prestera/prestera_main.c
1027
static void prestera_lag_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1031
for (idx = 0; idx < sw->lag_max; idx++)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1032
WARN_ON(sw->lags[idx].member_count);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1034
kfree(sw->lags);
drivers/net/ethernet/marvell/prestera/prestera_main.c
105
read_unlock(&sw->port_list_lock);
drivers/net/ethernet/marvell/prestera/prestera_main.c
110
struct prestera_port *prestera_find_port(struct prestera_switch *sw, u32 id)
drivers/net/ethernet/marvell/prestera/prestera_main.c
114
read_lock(&sw->port_list_lock);
drivers/net/ethernet/marvell/prestera/prestera_main.c
115
list_for_each_entry(tmp, &sw->port_list, list) {
drivers/net/ethernet/marvell/prestera/prestera_main.c
1206
prestera_mdb_entry_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_main.c
121
read_unlock(&sw->port_list_lock);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1216
flood_domain = prestera_flood_domain_create(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1220
mdb_entry->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_main.c
1246
prestera_flood_domain_create(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1254
domain->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_main.c
131
return port ? port->sw : NULL;
drivers/net/ethernet/marvell/prestera/prestera_main.c
1349
static int prestera_netdev_event_handler_register(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1351
sw->netdev_nb.notifier_call = prestera_netdev_event_handler;
drivers/net/ethernet/marvell/prestera/prestera_main.c
1353
return register_netdevice_notifier(&sw->netdev_nb);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1356
static void prestera_netdev_event_handler_unregister(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1358
unregister_netdevice_notifier(&sw->netdev_nb);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1361
static int prestera_switch_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1365
sw->np = sw->dev->dev->of_node;
drivers/net/ethernet/marvell/prestera/prestera_main.c
1367
err = prestera_hw_switch_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1369
dev_err(prestera_dev(sw), "Failed to init Switch device\n");
drivers/net/ethernet/marvell/prestera/prestera_main.c
1373
rwlock_init(&sw->port_list_lock);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1374
INIT_LIST_HEAD(&sw->port_list);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1376
err = prestera_switch_set_base_mac_addr(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1380
err = prestera_netdev_event_handler_register(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1384
err = prestera_router_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1388
err = prestera_switchdev_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1392
err = prestera_rxtx_switch_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1396
err = prestera_event_handlers_register(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1400
err = prestera_counter_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1404
err = prestera_acl_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1408
err = prestera_span_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1412
err = prestera_devlink_traps_register(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1416
err = prestera_lag_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1420
err = prestera_create_ports(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1424
prestera_devlink_register(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1428
prestera_lag_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1430
prestera_devlink_traps_unregister(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1432
prestera_span_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1434
prestera_acl_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1436
prestera_counter_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1438
prestera_event_handlers_unregister(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1440
prestera_rxtx_switch_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1442
prestera_switchdev_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1444
prestera_router_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1446
prestera_netdev_event_handler_unregister(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1447
prestera_hw_switch_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1452
static void prestera_switch_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1454
prestera_devlink_unregister(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1455
prestera_destroy_ports(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1456
prestera_lag_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1457
prestera_devlink_traps_unregister(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1458
prestera_span_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1459
prestera_acl_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1460
prestera_counter_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1461
prestera_event_handlers_unregister(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1462
prestera_rxtx_switch_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1463
prestera_switchdev_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1464
prestera_router_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1465
prestera_netdev_event_handler_unregister(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1466
prestera_hw_switch_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1467
of_node_put(sw->np);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1472
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_main.c
1475
sw = prestera_devlink_alloc(dev);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1476
if (!sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
1479
dev->priv = sw;
drivers/net/ethernet/marvell/prestera/prestera_main.c
1480
sw->dev = dev;
drivers/net/ethernet/marvell/prestera/prestera_main.c
1482
err = prestera_switch_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1484
prestera_devlink_free(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1494
struct prestera_switch *sw = dev->priv;
drivers/net/ethernet/marvell/prestera/prestera_main.c
1496
prestera_switch_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
1497
prestera_devlink_free(sw);
drivers/net/ethernet/marvell/prestera/prestera_main.c
372
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_main.c
378
if (!sw->np)
drivers/net/ethernet/marvell/prestera/prestera_main.c
381
of_node_get(sw->np);
drivers/net/ethernet/marvell/prestera/prestera_main.c
382
ports = of_find_node_by_name(sw->np, "ports");
drivers/net/ethernet/marvell/prestera/prestera_main.c
389
dev_err(sw->dev->dev,
drivers/net/ethernet/marvell/prestera/prestera_main.c
458
if (memcmp(port->sw->base_mac, addr, ETH_ALEN - 1))
drivers/net/ethernet/marvell/prestera/prestera_main.c
591
write_lock(&port->sw->port_list_lock);
drivers/net/ethernet/marvell/prestera/prestera_main.c
592
list_add(&port->list, &port->sw->port_list);
drivers/net/ethernet/marvell/prestera/prestera_main.c
593
write_unlock(&port->sw->port_list_lock);
drivers/net/ethernet/marvell/prestera/prestera_main.c
598
write_lock(&port->sw->port_list_lock);
drivers/net/ethernet/marvell/prestera/prestera_main.c
600
write_unlock(&port->sw->port_list_lock);
drivers/net/ethernet/marvell/prestera/prestera_main.c
603
static int prestera_port_create(struct prestera_switch *sw, u32 id)
drivers/net/ethernet/marvell/prestera/prestera_main.c
621
port->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_main.c
628
dev_err(prestera_dev(sw), "Failed to get port(%u) info\n", id);
drivers/net/ethernet/marvell/prestera/prestera_main.c
640
SET_NETDEV_DEV(dev, sw->dev->dev);
drivers/net/ethernet/marvell/prestera/prestera_main.c
646
dev->mtu = min_t(unsigned int, sw->mtu_max, PRESTERA_MTU_DEFAULT);
drivers/net/ethernet/marvell/prestera/prestera_main.c
647
dev->min_mtu = sw->mtu_min;
drivers/net/ethernet/marvell/prestera/prestera_main.c
648
dev->max_mtu = sw->mtu_max;
drivers/net/ethernet/marvell/prestera/prestera_main.c
652
dev_err(prestera_dev(sw), "Failed to set port(%u) mtu(%d)\n",
drivers/net/ethernet/marvell/prestera/prestera_main.c
662
eth_hw_addr_gen(dev, sw->base_mac, port->fp_id);
drivers/net/ethernet/marvell/prestera/prestera_main.c
666
if (memcmp(dev->dev_addr, sw->base_mac, ETH_ALEN - 1)) {
drivers/net/ethernet/marvell/prestera/prestera_main.c
667
dev_warn(prestera_dev(sw), "Port MAC address wraps for port(%u)\n", id);
drivers/net/ethernet/marvell/prestera/prestera_main.c
668
dev_addr_mod(dev, 0, sw->base_mac, ETH_ALEN - 1);
drivers/net/ethernet/marvell/prestera/prestera_main.c
673
dev_err(prestera_dev(sw), "Failed to set port(%u) mac addr\n", id);
drivers/net/ethernet/marvell/prestera/prestera_main.c
679
dev_err(prestera_dev(sw), "Failed to get port(%u) caps\n", id);
drivers/net/ethernet/marvell/prestera/prestera_main.c
702
dev_err(prestera_dev(sw),
drivers/net/ethernet/marvell/prestera/prestera_main.c
716
dev_err(prestera_dev(sw),
drivers/net/ethernet/marvell/prestera/prestera_main.c
764
static void prestera_destroy_ports(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
768
list_for_each_entry_safe(port, tmp, &sw->port_list, list)
drivers/net/ethernet/marvell/prestera/prestera_main.c
772
static int prestera_create_ports(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
778
for (port_idx = 0; port_idx < sw->port_count; port_idx++) {
drivers/net/ethernet/marvell/prestera/prestera_main.c
779
err = prestera_port_create(sw, port_idx);
drivers/net/ethernet/marvell/prestera/prestera_main.c
787
list_for_each_entry_safe(port, tmp, &sw->port_list, list) {
drivers/net/ethernet/marvell/prestera/prestera_main.c
795
static void prestera_port_handle_event(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_main.c
805
port = prestera_find_port(sw, pevt->port_id);
drivers/net/ethernet/marvell/prestera/prestera_main.c
843
static int prestera_event_handlers_register(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
845
return prestera_hw_event_handler_register(sw, PRESTERA_EVENT_TYPE_PORT,
drivers/net/ethernet/marvell/prestera/prestera_main.c
850
static void prestera_event_handlers_unregister(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
852
prestera_hw_event_handler_unregister(sw, PRESTERA_EVENT_TYPE_PORT,
drivers/net/ethernet/marvell/prestera/prestera_main.c
856
static int prestera_switch_set_base_mac_addr(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_main.c
860
if (sw->np)
drivers/net/ethernet/marvell/prestera/prestera_main.c
861
ret = of_get_mac_address(sw->np, sw->base_mac);
drivers/net/ethernet/marvell/prestera/prestera_main.c
862
if (!is_valid_ether_addr(sw->base_mac) || ret) {
drivers/net/ethernet/marvell/prestera/prestera_main.c
863
eth_random_addr(sw->base_mac);
drivers/net/ethernet/marvell/prestera/prestera_main.c
864
dev_info(prestera_dev(sw), "using random base mac address\n");
drivers/net/ethernet/marvell/prestera/prestera_main.c
867
return prestera_hw_switch_mac_set(sw, sw->base_mac);
drivers/net/ethernet/marvell/prestera/prestera_main.c
870
struct prestera_lag *prestera_lag_by_id(struct prestera_switch *sw, u16 id)
drivers/net/ethernet/marvell/prestera/prestera_main.c
872
return id < sw->lag_max ? &sw->lags[id] : NULL;
drivers/net/ethernet/marvell/prestera/prestera_main.c
875
static struct prestera_lag *prestera_lag_by_dev(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_main.c
881
for (id = 0; id < sw->lag_max; id++) {
drivers/net/ethernet/marvell/prestera/prestera_main.c
882
lag = &sw->lags[id];
drivers/net/ethernet/marvell/prestera/prestera_main.c
890
int prestera_lag_id(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_main.c
897
for (id = 0; id < sw->lag_max; id++) {
drivers/net/ethernet/marvell/prestera/prestera_main.c
898
lag = prestera_lag_by_id(sw, id);
drivers/net/ethernet/marvell/prestera/prestera_main.c
914
static struct prestera_lag *prestera_lag_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_main.c
920
for (id = 0; id < sw->lag_max; id++) {
drivers/net/ethernet/marvell/prestera/prestera_main.c
921
lag = &sw->lags[id];
drivers/net/ethernet/marvell/prestera/prestera_main.c
93
struct prestera_port *prestera_port_find_by_hwid(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_main.c
933
static void prestera_lag_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_main.c
944
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_main.c
948
lag = prestera_lag_by_dev(sw, lag_dev);
drivers/net/ethernet/marvell/prestera/prestera_main.c
950
lag = prestera_lag_create(sw, lag_dev);
drivers/net/ethernet/marvell/prestera/prestera_main.c
955
if (lag->member_count >= sw->lag_member_max)
drivers/net/ethernet/marvell/prestera/prestera_main.c
961
prestera_lag_destroy(sw, lag);
drivers/net/ethernet/marvell/prestera/prestera_main.c
974
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_main.c
98
read_lock(&sw->port_list_lock);
drivers/net/ethernet/marvell/prestera/prestera_main.c
99
list_for_each_entry(tmp, &sw->port_list, list) {
drivers/net/ethernet/marvell/prestera/prestera_main.c
998
prestera_lag_destroy(sw, lag);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1004
rfc = prestera_kern_fib_cache_find(sw, &fc_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1011
__prestera_k_arb_util_fib_overlapped(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1022
rfc = prestera_kern_fib_cache_find(sw, &fc_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1028
static void __prestera_k_arb_hw_state_upd(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1037
nh_neigh = prestera_nh_neigh_find(sw, &nh_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1044
hw_active = prestera_nh_neigh_util_hw_state(sw, nh_neigh);
drivers/net/ethernet/marvell/prestera/prestera_router.c
106
static int prestera_util_nhc2nc_key(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1076
static void prestera_k_arb_hw_evt(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_router.c
1081
rhashtable_walk_enter(&sw->router->kern_neigh_cache_ht, &iter);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1093
__prestera_k_arb_hw_state_upd(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1101
static void prestera_k_arb_n_evt(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1108
err = prestera_util_neigh2nc_key(sw, n, &n_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1112
n_cache = prestera_kern_neigh_cache_find(sw, &n_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1114
n_cache = prestera_kern_neigh_cache_get(sw, &n_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1117
__prestera_k_arb_nc_kern_fib_fetch(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1120
__prestera_k_arb_nc_kern_n_fetch(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1121
__prestera_k_arb_nc_apply(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1123
prestera_kern_neigh_cache_put(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1126
static void __prestera_k_arb_fib_evt2nc(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_router.c
1131
rhashtable_walk_enter(&sw->router->kern_neigh_cache_ht, &iter);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1143
__prestera_k_arb_nc_kern_fib_fetch(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1144
__prestera_k_arb_nc_apply(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1152
prestera_k_arb_fib_evt(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1162
fib_cache = prestera_kern_fib_cache_find(sw, &fc_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1165
err = __prestera_k_arb_fc_apply(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1167
dev_err(sw->dev->dev,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1170
bfib_cache = __prestera_k_arb_util_fib_overlaps(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1171
tfib_cache = __prestera_k_arb_util_fib_overlapped(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1174
err = __prestera_k_arb_fc_apply(sw, bfib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1176
dev_err(sw->dev->dev,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1180
prestera_kern_fib_cache_destroy(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1184
fib_cache = prestera_kern_fib_cache_create(sw, &fc_key, info);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1186
dev_err(sw->dev->dev, "fib_cache == NULL");
drivers/net/ethernet/marvell/prestera/prestera_router.c
1190
bfib_cache = __prestera_k_arb_util_fib_overlaps(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1191
tfib_cache = __prestera_k_arb_util_fib_overlapped(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1197
err = __prestera_k_arb_fc_apply(sw, bfib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1199
dev_err(sw->dev->dev,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1203
err = __prestera_k_arb_fc_apply(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1205
dev_err(sw->dev->dev, "Applying fib_cache failed");
drivers/net/ethernet/marvell/prestera/prestera_router.c
1209
__prestera_k_arb_fib_evt2nc(sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1217
struct prestera_switch *sw = arg;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1223
__prestera_k_arb_n_offload_set(sw, n_cache, false);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1228
__prestera_kern_neigh_cache_destruct(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1235
struct prestera_switch *sw = arg;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1237
__prestera_k_arb_fib_lpm_offload_set(sw, fib_cache,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1240
__prestera_k_arb_fib_nh_offload_set(sw, fib_cache, NULL,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1245
__prestera_kern_fib_cache_destruct(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1249
static void prestera_k_arb_abort(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_router.c
1259
rhashtable_free_and_destroy(&sw->router->kern_fib_cache_ht,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1261
sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1262
rhashtable_free_and_destroy(&sw->router->kern_neigh_cache_ht,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1264
sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1287
re = prestera_rif_entry_find(port->sw, &re_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1295
re = prestera_rif_entry_create(port->sw, &re_key,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1309
prestera_rif_entry_destroy(port->sw, re);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1317
static int __prestera_inetaddr_event(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
133
prestera_util_nhc_eq_n_cache_key(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1348
err = __prestera_inetaddr_event(router->sw, dev, event, NULL);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1379
err = __prestera_inetaddr_event(router->sw, dev, event, ivi->extack);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1386
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1395
struct prestera_switch *sw = fib_work->sw;
drivers/net/ethernet/marvell/prestera/prestera_router.c
140
err = prestera_util_nhc2nc_key(sw, nhc, &tk);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1402
err = prestera_k_arb_fib_evt(sw, true,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1409
err = prestera_k_arb_fib_evt(sw, false,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1420
dev_err(sw->dev->dev, "Error when processing %pI4h/%d",
drivers/net/ethernet/marvell/prestera/prestera_router.c
1458
fib_work->sw = router->sw;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1471
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1479
struct prestera_switch *sw = net_work->sw;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1485
prestera_k_arb_n_evt(sw, n);
drivers/net/ethernet/marvell/prestera/prestera_router.c
151
prestera_util_neigh2nc_key(struct prestera_switch *sw, struct neighbour *n,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1512
net_work->sw = router->sw;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1528
prestera_k_arb_hw_evt(router->sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1535
static int prestera_neigh_work_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_router.c
1537
INIT_DELAYED_WORK(&sw->router->neighs_update.dw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
1539
prestera_queue_delayed_work(&sw->router->neighs_update.dw, 0);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1543
static void prestera_neigh_work_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_router.c
1545
cancel_delayed_work_sync(&sw->router->neighs_update.dw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1548
int prestera_router_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_router.c
1553
router = kzalloc_obj(*sw->router);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1557
sw->router = router;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1558
router->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1560
err = prestera_router_hw_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1574
nhgrp_cache_bytes = sw->size_tbl_router_nexthop / 8 + 1;
drivers/net/ethernet/marvell/prestera/prestera_router.c
1581
err = prestera_neigh_work_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1615
prestera_neigh_work_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1623
prestera_router_hw_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1625
kfree(sw->router);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1629
void prestera_router_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_router.c
1631
unregister_fib_notifier(&init_net, &sw->router->fib_nb);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1632
unregister_netevent_notifier(&sw->router->netevent_nb);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1633
unregister_inetaddr_notifier(&sw->router->inetaddr_nb);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1634
unregister_inetaddr_validator_notifier(&sw->router->inetaddr_valid_nb);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1635
prestera_neigh_work_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1638
prestera_k_arb_abort(sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1640
kfree(sw->router->nhgrp_hw_state_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1641
rhashtable_destroy(&sw->router->kern_fib_cache_ht);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1642
prestera_router_hw_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1643
kfree(sw->router);
drivers/net/ethernet/marvell/prestera/prestera_router.c
1644
sw->router = NULL;
drivers/net/ethernet/marvell/prestera/prestera_router.c
430
prestera_neigh_iface_init(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
452
prestera_kern_neigh_cache_find(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
458
rhashtable_lookup_fast(&sw->router->kern_neigh_cache_ht, key,
drivers/net/ethernet/marvell/prestera/prestera_router.c
464
__prestera_kern_neigh_cache_destruct(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
471
__prestera_kern_neigh_cache_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
474
rhashtable_remove_fast(&sw->router->kern_neigh_cache_ht,
drivers/net/ethernet/marvell/prestera/prestera_router.c
477
__prestera_kern_neigh_cache_destruct(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
482
__prestera_kern_neigh_cache_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
496
err = rhashtable_insert_fast(&sw->router->kern_neigh_cache_ht,
drivers/net/ethernet/marvell/prestera/prestera_router.c
512
prestera_kern_neigh_cache_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
517
n_cache = prestera_kern_neigh_cache_find(sw, key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
519
n_cache = __prestera_kern_neigh_cache_create(sw, key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
525
prestera_kern_neigh_cache_put(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
530
__prestera_kern_neigh_cache_destroy(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
538
prestera_kern_fib_cache_find(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
544
rhashtable_lookup_fast(&sw->router->kern_fib_cache_ht, key,
drivers/net/ethernet/marvell/prestera/prestera_router.c
550
__prestera_kern_fib_cache_destruct(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
560
prestera_kern_neigh_cache_put(sw, n_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
568
prestera_kern_fib_cache_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
571
rhashtable_remove_fast(&sw->router->kern_fib_cache_ht,
drivers/net/ethernet/marvell/prestera/prestera_router.c
574
__prestera_kern_fib_cache_destruct(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
579
__prestera_kern_fib_cache_create_nhs(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
596
err = prestera_util_nhc2nc_key(sw, nhc, &nc_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
600
n_cache = prestera_kern_neigh_cache_get(sw, &nc_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
617
prestera_kern_fib_cache_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
634
err = rhashtable_insert_fast(&sw->router->kern_fib_cache_ht,
drivers/net/ethernet/marvell/prestera/prestera_router.c
641
err = __prestera_kern_fib_cache_create_nhs(sw, fib_cache);
drivers/net/ethernet/marvell/prestera/prestera_router.c
656
__prestera_k_arb_fib_nh_offload_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
672
if (prestera_util_nhc_eq_n_cache_key(sw, nhc, &nc->key)) {
drivers/net/ethernet/marvell/prestera/prestera_router.c
680
__prestera_k_arb_n_offload_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
696
__prestera_k_arb_fib_lpm_offload_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
724
__prestera_k_arb_n_lpm_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
745
fib_cache = prestera_kern_fib_cache_find(sw, &fc_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
750
fib_node = prestera_fib_node_find(sw, &fib_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
754
prestera_fib_node_destroy(sw, fib_node);
drivers/net/ethernet/marvell/prestera/prestera_router.c
763
fib_node = prestera_fib_node_create(sw, &fib_key,
drivers/net/ethernet/marvell/prestera/prestera_router.c
774
__prestera_k_arb_nc_kern_fib_fetch(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
786
__prestera_k_arb_nc_kern_n_fetch(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
799
err = prestera_neigh_iface_init(sw, &nc->nh_neigh_info.iface,
drivers/net/ethernet/marvell/prestera/prestera_router.c
817
__prestera_k_arb_nc_apply(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
825
__prestera_k_arb_n_lpm_set(sw, nc, nc->reachable && nc->in_kernel);
drivers/net/ethernet/marvell/prestera/prestera_router.c
826
__prestera_k_arb_n_offload_set(sw, nc, nc->reachable && nc->in_kernel);
drivers/net/ethernet/marvell/prestera/prestera_router.c
829
nh_neigh = prestera_nh_neigh_find(sw, &nh_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
838
err = prestera_nh_neigh_set(sw, nh_neigh);
drivers/net/ethernet/marvell/prestera/prestera_router.c
850
__prestera_k_arb_fib_nh_offload_set(sw, nhead->this, nc,
drivers/net/ethernet/marvell/prestera/prestera_router.c
857
__prestera_pr_k_arb_fc_lpm_info_calc(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
918
dev_err(sw->dev->dev, "Unsupported fib_type");
drivers/net/ethernet/marvell/prestera/prestera_router.c
929
static int __prestera_k_arb_f_lpm_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
935
fib_node = prestera_fib_node_find(sw, &fc->lpm_info.fib_key);
drivers/net/ethernet/marvell/prestera/prestera_router.c
937
prestera_fib_node_destroy(sw, fib_node);
drivers/net/ethernet/marvell/prestera/prestera_router.c
942
fib_node = prestera_fib_node_create(sw, &fc->lpm_info.fib_key,
drivers/net/ethernet/marvell/prestera/prestera_router.c
947
dev_err(sw->dev->dev, "fib_node=NULL %pI4n/%d kern_tb_id = %d",
drivers/net/ethernet/marvell/prestera/prestera_router.c
956
static int __prestera_k_arb_fc_apply(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router.c
961
err = __prestera_pr_k_arb_fc_lpm_info_calc(sw, fc);
drivers/net/ethernet/marvell/prestera/prestera_router.c
965
err = __prestera_k_arb_f_lpm_set(sw, fc, fc->reachable);
drivers/net/ethernet/marvell/prestera/prestera_router.c
967
__prestera_k_arb_fib_lpm_offload_set(sw, fc,
drivers/net/ethernet/marvell/prestera/prestera_router.c
974
__prestera_k_arb_fib_lpm_offload_set(sw, fc, false,
drivers/net/ethernet/marvell/prestera/prestera_router.c
978
__prestera_k_arb_fib_lpm_offload_set(sw, fc, false,
drivers/net/ethernet/marvell/prestera/prestera_router.c
982
__prestera_k_arb_fib_lpm_offload_set(sw, fc, false, true,
drivers/net/ethernet/marvell/prestera/prestera_router.c
993
__prestera_k_arb_util_fib_overlaps(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
101
rhashtable_free_and_destroy(&sw->router->fib_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
102
prestera_fib_node_destroy_ht_cb, sw);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
103
WARN_ON(!list_empty(&sw->router->vr_list));
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
104
WARN_ON(!list_empty(&sw->router->rif_entry_list));
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
105
rhashtable_destroy(&sw->router->fib_ht);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
106
rhashtable_destroy(&sw->router->nexthop_group_ht);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
107
rhashtable_destroy(&sw->router->nh_neigh_ht);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
110
static struct prestera_vr *__prestera_vr_find(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
115
list_for_each_entry(vr, &sw->router->vr_list, router_node) {
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
123
static struct prestera_vr *__prestera_vr_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
138
err = prestera_hw_vr_create(sw, &vr->hw_vr_id);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
142
list_add(&vr->router_node, &sw->router->vr_list);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
152
static void __prestera_vr_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
156
prestera_hw_vr_delete(sw, vr->hw_vr_id);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
160
static struct prestera_vr *prestera_vr_get(struct prestera_switch *sw, u32 tb_id,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
165
vr = __prestera_vr_find(sw, tb_id);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
169
vr = __prestera_vr_create(sw, tb_id, extack);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
179
static void prestera_vr_put(struct prestera_switch *sw, struct prestera_vr *vr)
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
182
__prestera_vr_destroy(sw, vr);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
213
prestera_rif_entry_find(const struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
222
list_for_each_entry(rif_entry, &sw->router->rif_entry_list,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
231
void prestera_rif_entry_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
240
prestera_hw_rif_delete(sw, e->hw_id, &iface);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
242
prestera_vr_put(sw, e->vr);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
247
prestera_rif_entry_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
262
e->vr = prestera_vr_get(sw, tb_id, NULL);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
271
err = prestera_hw_rif_create(sw, &iface, e->addr, &e->hw_id);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
275
list_add(&e->router_node, &sw->router->rif_entry_list);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
280
prestera_vr_put(sw, e->vr);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
288
static void __prestera_nh_neigh_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
291
rhashtable_remove_fast(&sw->router->nh_neigh_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
298
__prestera_nh_neigh_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
311
err = rhashtable_insert_fast(&sw->router->nh_neigh_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
326
prestera_nh_neigh_find(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
331
nh_neigh = rhashtable_lookup_fast(&sw->router->nh_neigh_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
337
prestera_nh_neigh_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
342
neigh = prestera_nh_neigh_find(sw, key);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
344
return __prestera_nh_neigh_create(sw, key);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
349
void prestera_nh_neigh_put(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
353
__prestera_nh_neigh_destroy(sw, neigh);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
357
int prestera_nh_neigh_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
366
err = prestera_nexthop_group_set(sw, nh_grp);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
374
bool prestera_nh_neigh_util_hw_state(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
383
state = prestera_nexthop_group_util_hw_state(sw, nh_head->this);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
393
__prestera_nexthop_group_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
409
nh_neigh = prestera_nh_neigh_get(sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
420
err = prestera_hw_nh_group_create(sw, nh_cnt, &nh_grp->grp_id);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
424
err = prestera_nexthop_group_set(sw, nh_grp);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
428
err = rhashtable_insert_fast(&sw->router->nexthop_group_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
436
sw->router->nhgrp_hw_state_cache[gid / 8] &= ~BIT(gid % 8);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
442
prestera_hw_nh_group_delete(sw, nh_cnt, nh_grp->grp_id);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
447
prestera_nh_neigh_put(sw, nh_grp->nh_neigh_head[nh_cnt].neigh);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
456
__prestera_nexthop_group_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
462
rhashtable_remove_fast(&sw->router->nexthop_group_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
472
prestera_nh_neigh_put(sw, nh_neigh);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
475
prestera_hw_nh_group_delete(sw, nh_cnt, nh_grp->grp_id);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
480
__prestera_nexthop_group_find(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
485
nh_grp = rhashtable_lookup_fast(&sw->router->nexthop_group_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
491
prestera_nexthop_group_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
496
nh_grp = __prestera_nexthop_group_find(sw, key);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
500
nh_grp = __prestera_nexthop_group_create(sw, key);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
510
static void prestera_nexthop_group_put(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
514
__prestera_nexthop_group_destroy(sw, nh_grp);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
518
static int prestera_nexthop_group_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
534
return prestera_hw_nh_entries_set(sw, nh_cnt, &info[0], nh_grp->grp_id);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
538
prestera_nexthop_group_util_hw_state(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
54
static int prestera_nexthop_group_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
542
u32 buf_size = sw->size_tbl_router_nexthop / 8 + 1;
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
544
u8 *cache = sw->router->nhgrp_hw_state_cache;
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
551
if (!time_before(jiffies, sw->router->nhgrp_hw_cache_kick +
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
553
err = prestera_hw_nhgrp_blk_get(sw, cache, buf_size);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
559
sw->router->nhgrp_hw_cache_kick = jiffies;
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
569
prestera_fib_node_find(struct prestera_switch *sw, struct prestera_fib_key *key)
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
57
prestera_nexthop_group_util_hw_state(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
573
fib_node = rhashtable_lookup_fast(&sw->router->fib_ht, key,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
578
static void __prestera_fib_node_destruct(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
584
prestera_hw_lpm_del(sw, vr->hw_vr_id, fib_node->key.addr.u.ipv4,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
588
prestera_nexthop_group_put(sw, fib_node->info.nh_grp);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
599
prestera_vr_put(sw, vr);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
602
void prestera_fib_node_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
605
__prestera_fib_node_destruct(sw, fib_node);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
606
rhashtable_remove_fast(&sw->router->fib_ht, &fib_node->ht_node,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
614
struct prestera_switch *sw = arg;
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
616
__prestera_fib_node_destruct(sw, node);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
621
prestera_fib_node_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
638
vr = prestera_vr_get(sw, key->tb_id, NULL);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
652
fib_node->info.nh_grp = prestera_nexthop_group_get(sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
664
err = prestera_hw_lpm_add(sw, vr->hw_vr_id, key->addr.u.ipv4,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
669
err = rhashtable_insert_fast(&sw->router->fib_ht, &fib_node->ht_node,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
67
int prestera_router_hw_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
677
prestera_hw_lpm_del(sw, vr->hw_vr_id, key->addr.u.ipv4,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
681
prestera_nexthop_group_put(sw, fib_node->info.nh_grp);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
683
prestera_vr_put(sw, vr);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
71
err = rhashtable_init(&sw->router->nh_neigh_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
76
err = rhashtable_init(&sw->router->nexthop_group_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
81
err = rhashtable_init(&sw->router->fib_ht,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
86
INIT_LIST_HEAD(&sw->router->vr_list);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
87
INIT_LIST_HEAD(&sw->router->rif_entry_list);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
92
rhashtable_destroy(&sw->router->nexthop_group_ht);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
94
rhashtable_destroy(&sw->router->nh_neigh_ht);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c
99
void prestera_router_hw_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
123
prestera_rif_entry_find(const struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
125
void prestera_rif_entry_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
128
prestera_rif_entry_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
132
prestera_nh_neigh_find(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
135
prestera_nh_neigh_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
137
void prestera_nh_neigh_put(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
139
int prestera_nh_neigh_set(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
141
bool prestera_nh_neigh_util_hw_state(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
143
struct prestera_fib_node *prestera_fib_node_find(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
145
void prestera_fib_node_destroy(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
148
prestera_fib_node_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
152
int prestera_router_hw_init(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_router_hw.h
153
void prestera_router_hw_fini(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
160
struct device *dev = sdma->sw->dev->dev;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
231
port = prestera_port_find_by_hwid(sdma->sw, dev_id, hw_port);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
233
dev_warn_ratelimited(prestera_dev(sdma->sw), "received pkt for non-existent port(%u, %u)\n",
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
325
prestera_write(sdma->sw, PRESTERA_SDMA_RX_INTR_MASK_REG,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
339
prestera_write(sdma->sw, PRESTERA_SDMA_RX_QUEUE_STATUS_REG,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
359
dma_unmap_single(sdma->sw->dev->dev,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
375
prestera_write(sdma->sw, PRESTERA_SDMA_RX_QUEUE_STATUS_REG,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
415
prestera_write(sdma->sw, PRESTERA_SDMA_RX_QUEUE_DESC_REG(q),
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
422
prestera_write(sdma->sw, PRESTERA_SDMA_RX_QUEUE_STATUS_REG,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
470
struct device *dma_dev = sdma->sw->dev->dev;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
486
struct device *dma_dev = sdma->sw->dev->dev;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
567
prestera_write(sdma->sw, PRESTERA_SDMA_TX_QUEUE_DESC_REG,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
594
dma_unmap_single(sdma->sw->dev->dev, buf->buf_dma,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
601
static void prestera_rxtx_handle_event(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
610
prestera_write(sdma->sw, PRESTERA_SDMA_RX_INTR_MASK_REG, 0);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
614
static int prestera_sdma_switch_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
616
struct prestera_sdma *sdma = &sw->rxtx->sdma;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
617
struct device *dev = sw->dev->dev;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
623
err = prestera_hw_rxtx_init(sw, &p);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
631
sdma->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
651
err = prestera_hw_event_handler_register(sw, PRESTERA_EVENT_TYPE_RXTX,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
670
prestera_hw_event_handler_unregister(sw, PRESTERA_EVENT_TYPE_RXTX,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
682
static void prestera_sdma_switch_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
684
struct prestera_sdma *sdma = &sw->rxtx->sdma;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
689
prestera_hw_event_handler_unregister(sw, PRESTERA_EVENT_TYPE_RXTX,
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
698
return !(prestera_read(sdma->sw, PRESTERA_SDMA_TX_QUEUE_START_REG) & 1);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
718
prestera_write(sdma->sw, PRESTERA_SDMA_TX_QUEUE_START_REG, 1);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
725
struct device *dma_dev = sdma->sw->dev->dev;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
782
int prestera_rxtx_switch_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
791
sw->rxtx = rxtx;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
793
err = prestera_sdma_switch_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
800
void prestera_rxtx_switch_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
802
prestera_sdma_switch_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
803
kfree(sw->rxtx);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
828
return prestera_sdma_xmit(&port->sw->rxtx->sdma, skb);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
95
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.h
12
int prestera_rxtx_switch_init(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_rxtx.h
13
void prestera_rxtx_switch_fini(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_span.c
103
static int prestera_span_put(struct prestera_switch *sw, u8 span_id)
drivers/net/ethernet/marvell/prestera/prestera_span.c
108
entry = prestera_span_entry_find_by_id(sw->span, span_id);
drivers/net/ethernet/marvell/prestera/prestera_span.c
115
err = prestera_hw_span_release(sw, span_id);
drivers/net/ethernet/marvell/prestera/prestera_span.c
127
struct prestera_switch *sw = binding->port->sw;
drivers/net/ethernet/marvell/prestera/prestera_span.c
141
prestera_span_put(sw, span_id);
drivers/net/ethernet/marvell/prestera/prestera_span.c
161
err = prestera_span_put(binding->port->sw, binding->span_id);
drivers/net/ethernet/marvell/prestera/prestera_span.c
169
int prestera_span_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_span.c
179
sw->span = span;
drivers/net/ethernet/marvell/prestera/prestera_span.c
180
span->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_span.c
185
void prestera_span_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_span.c
187
struct prestera_span *span = sw->span;
drivers/net/ethernet/marvell/prestera/prestera_span.c
21
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_span.c
37
list_add_tail(&entry->list, &port->sw->span->entries);
drivers/net/ethernet/marvell/prestera/prestera_span.c
78
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_span.c
82
entry = prestera_span_entry_find_by_port(sw->span, port);
drivers/net/ethernet/marvell/prestera/prestera_span.c
95
prestera_hw_span_release(sw, new_span_id);
drivers/net/ethernet/marvell/prestera/prestera_span.h
15
int prestera_span_init(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_span.h
16
void prestera_span_fini(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
102
list_for_each_entry(bridge, &sw->swdev->bridge_list, head)
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1094
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1097
br_dev = prestera_bridge_find(sw, orig_dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1134
br_port = prestera_bridge_port_find(port->sw, orig_dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1220
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1226
br_port = prestera_bridge_port_by_dev(sw->swdev, port->dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
123
prestera_bridge_port_find(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
132
bridge = prestera_bridge_find(sw, br_dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1474
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1480
br_port = prestera_bridge_port_by_dev(sw->swdev, port->dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1494
prestera_br_mdb_entry_create(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1505
mdb_entry = prestera_mdb_entry_create(sw, addr, vid);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1560
prestera_br_mdb_entry_get(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1570
return prestera_br_mdb_entry_create(sw, br_dev, addr, vid);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1579
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1583
sw = prestera_switch_get(mdb->obj.orig_dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1586
br_port = prestera_bridge_port_find(sw, mdb->obj.orig_dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1596
br_mdb = prestera_br_mdb_entry_get(sw, br_dev, &mdb->addr[0],
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1599
br_mdb = prestera_br_mdb_entry_get(sw, br_dev, &mdb->addr[0],
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1656
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1661
br_port = prestera_bridge_port_by_dev(sw->swdev, port->dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1683
br_port = prestera_bridge_port_find(port->sw, mdb->obj.orig_dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1769
static void prestera_fdb_event(struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1779
port = prestera_find_port(sw, evt->fdb_evt.dest.port_id);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1784
lag = prestera_lag_by_id(sw, evt->fdb_evt.dest.lag_id);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1815
static int prestera_fdb_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1819
err = prestera_hw_event_handler_register(sw, PRESTERA_EVENT_TYPE_FDB,
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1824
err = prestera_hw_switch_ageing_set(sw, PRESTERA_DEFAULT_AGEING_TIME_MS);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1831
prestera_hw_event_handler_unregister(sw, PRESTERA_EVENT_TYPE_FDB,
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1836
static void prestera_fdb_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1838
prestera_hw_event_handler_unregister(sw, PRESTERA_EVENT_TYPE_FDB,
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1871
int prestera_switchdev_init(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1880
sw->swdev = swdev;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1881
swdev->sw = sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1895
err = prestera_fdb_init(sw);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1910
void prestera_switchdev_fini(struct prestera_switch *sw)
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1912
struct prestera_switchdev *swdev = sw->swdev;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
1914
prestera_fdb_fini(sw);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
288
return prestera_hw_lag_fdb_add(port->sw, prestera_port_lag_id(port),
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
298
return prestera_hw_lag_fdb_del(port->sw, prestera_port_lag_id(port),
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
30
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
308
return prestera_hw_fdb_flush_lag_vlan(port->sw, prestera_port_lag_id(port),
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
317
return prestera_hw_fdb_flush_lag(port->sw, prestera_port_lag_id(port),
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
408
prestera_hw_fdb_flush_vlan(port->sw, vid, fdb_flush_mode);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
453
err = prestera_hw_bridge_create(swdev->sw, &bridge_id);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
484
prestera_hw_bridge_delete(swdev->sw, bridge->bridge_id);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
652
struct prestera_switchdev *swdev = port->sw->swdev;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
740
struct prestera_switchdev *swdev = port->sw->swdev;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
774
br_port = prestera_bridge_port_by_dev(port->sw->swdev, dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
788
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
794
return prestera_hw_switch_ageing_set(sw, ageing_time_ms);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
801
struct prestera_switch *sw = port->sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
804
bridge = prestera_bridge_by_dev(sw->swdev, dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
841
br_port = prestera_bridge_port_by_dev(port->sw->swdev, dev);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
879
struct prestera_switch *sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
887
sw = pr_port->sw;
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
888
err = prestera_lag_id(sw, br_port->dev, &lag_id);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
892
list_for_each_entry(pr_port, &sw->port_list, list) {
drivers/net/ethernet/marvell/prestera/prestera_switchdev.c
97
prestera_bridge_find(const struct prestera_switch *sw,
drivers/net/ethernet/marvell/prestera/prestera_switchdev.h
7
int prestera_switchdev_init(struct prestera_switch *sw);
drivers/net/ethernet/marvell/prestera/prestera_switchdev.h
8
void prestera_switchdev_fini(struct prestera_switch *sw);
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
1402
&MLX5E_STATS_GRP(sw),
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
150
data, MLX5E_READ_CTR64_CPU(&priv->stats.sw,
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
156
struct mlx5e_sw_stats *s = &priv->stats.sw;
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
254
static MLX5E_DECLARE_STATS_GRP_OP_NUM_STATS(sw)
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
259
static MLX5E_DECLARE_STATS_GRP_OP_FILL_STRS(sw)
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
267
static MLX5E_DECLARE_STATS_GRP_OP_FILL_STATS(sw)
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
2717
MLX5E_DEFINE_STATS_GRP(sw, 0);
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
273
MLX5E_READ_CTR64_CPU(&priv->stats.sw,
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
2737
&MLX5E_STATS_GRP(sw),
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
515
static MLX5E_DECLARE_STATS_GRP_OP_UPDATE_STATS(sw)
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
517
struct mlx5e_sw_stats *s = &priv->stats.sw;
drivers/net/ethernet/mellanox/mlx5/core/en_stats.h
498
struct mlx5e_sw_stats sw;
drivers/net/ethernet/mellanox/mlx5/core/en_stats.h
521
extern MLX5E_DECLARE_STATS_GRP(sw);
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
161
memset(&priv->stats.sw, 0, sizeof(s));
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
163
priv->stats.sw.rx_packets = s.rx_packets;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
164
priv->stats.sw.rx_bytes = s.rx_bytes;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
165
priv->stats.sw.tx_packets = s.tx_packets;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
166
priv->stats.sw.tx_bytes = s.tx_bytes;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
167
priv->stats.sw.tx_queue_dropped = s.tx_dropped;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
173
struct mlx5e_sw_stats *sstats = &priv->stats.sw;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
489
&MLX5E_STATS_GRP(sw),
drivers/net/ethernet/micrel/ksz884x.c
1524
desc->sw.ctrl.tx.hw_owned = 1;
drivers/net/ethernet/micrel/ksz884x.c
1525
if (desc->sw.buf_size != desc->sw.buf.data) {
drivers/net/ethernet/micrel/ksz884x.c
1526
desc->sw.buf_size = desc->sw.buf.data;
drivers/net/ethernet/micrel/ksz884x.c
1527
desc->phw->buf.data = cpu_to_le32(desc->sw.buf.data);
drivers/net/ethernet/micrel/ksz884x.c
1529
desc->phw->ctrl.data = cpu_to_le32(desc->sw.ctrl.data);
drivers/net/ethernet/micrel/ksz884x.c
1538
(*desc)->sw.buf.data &= ~KS_DESC_RX_MASK;
drivers/net/ethernet/micrel/ksz884x.c
1548
desc->sw.buf.rx.buf_size = len;
drivers/net/ethernet/micrel/ksz884x.c
1558
(*desc)->sw.buf.data &= ~KS_DESC_TX_MASK;
drivers/net/ethernet/micrel/ksz884x.c
1568
desc->sw.buf.tx.buf_size = len;
drivers/net/ethernet/micrel/ksz884x.c
2109
struct ksz_switch *sw = hw->ksz_switch;
drivers/net/ethernet/micrel/ksz884x.c
2113
sw->port_cfg[port].rx_rate[prio] =
drivers/net/ethernet/micrel/ksz884x.c
2114
sw->port_cfg[port].tx_rate[prio] = 0;
drivers/net/ethernet/micrel/ksz884x.c
2288
struct ksz_switch *sw = hw->ksz_switch;
drivers/net/ethernet/micrel/ksz884x.c
2294
sw->p_802_1p[0] = 0;
drivers/net/ethernet/micrel/ksz884x.c
2295
sw->p_802_1p[1] = 0;
drivers/net/ethernet/micrel/ksz884x.c
2296
sw->p_802_1p[2] = 1;
drivers/net/ethernet/micrel/ksz884x.c
2297
sw->p_802_1p[3] = 1;
drivers/net/ethernet/micrel/ksz884x.c
2298
sw->p_802_1p[4] = 2;
drivers/net/ethernet/micrel/ksz884x.c
2299
sw->p_802_1p[5] = 2;
drivers/net/ethernet/micrel/ksz884x.c
2300
sw->p_802_1p[6] = 3;
drivers/net/ethernet/micrel/ksz884x.c
2301
sw->p_802_1p[7] = 3;
drivers/net/ethernet/micrel/ksz884x.c
2308
sw->diffserv[tos] = 0;
drivers/net/ethernet/micrel/ksz884x.c
2317
sw->port_cfg[port].port_prio = 0;
drivers/net/ethernet/micrel/ksz884x.c
2318
sw_cfg_port_based(hw, port, sw->port_cfg[port].port_prio);
drivers/net/ethernet/micrel/ksz884x.c
2350
struct ksz_switch *sw = hw->ksz_switch;
drivers/net/ethernet/micrel/ksz884x.c
2355
&sw->vlan_table[entry].vid,
drivers/net/ethernet/micrel/ksz884x.c
2356
&sw->vlan_table[entry].fid,
drivers/net/ethernet/micrel/ksz884x.c
2357
&sw->vlan_table[entry].member);
drivers/net/ethernet/micrel/ksz884x.c
2361
port_get_def_vid(hw, port, &sw->port_cfg[port].vid);
drivers/net/ethernet/micrel/ksz884x.c
2362
sw->port_cfg[port].member = PORT_MASK;
drivers/net/ethernet/micrel/ksz884x.c
3471
previous->sw.buf.rx.end_of_ring = 1;
drivers/net/ethernet/micrel/ksz884x.c
3472
previous->phw->buf.data = cpu_to_le32(previous->sw.buf.data);
drivers/net/ethernet/micrel/ksz884x.c
3608
hw->tx_desc_info.cur->sw.buf.tx.first_seg = 1;
drivers/net/ethernet/micrel/ksz884x.c
3634
cur->sw.buf.tx.last_seg = 1;
drivers/net/ethernet/micrel/ksz884x.c
3638
cur->sw.buf.tx.intr = 1;
drivers/net/ethernet/micrel/ksz884x.c
3644
cur->sw.buf.tx.dest_port = hw->dst_ports;
drivers/net/ethernet/micrel/ksz884x.c
4337
(desc)->sw.buf.tx.csum_gen_tcp = 1;
drivers/net/ethernet/micrel/ksz884x.c
4338
(desc)->sw.buf.tx.csum_gen_udp = 1;
drivers/net/ethernet/micrel/ksz884x.c
4946
struct ksz_switch *sw = hw->ksz_switch;
drivers/net/ethernet/micrel/ksz884x.c
4949
if (!sw->member) {
drivers/net/ethernet/micrel/ksz884x.c
4954
if (STP_STATE_FORWARDING == sw->port_cfg[port].stp_state)
drivers/net/ethernet/micrel/ksz884x.c
4955
member = HOST_MASK | sw->member;
drivers/net/ethernet/micrel/ksz884x.c
4958
if (member != sw->port_cfg[port].member)
drivers/net/ethernet/micrel/ksz884x.c
5319
struct ksz_switch *sw = hw->ksz_switch;
drivers/net/ethernet/micrel/ksz884x.c
5324
if (sw->member & port) {
drivers/net/ethernet/micrel/ksz884x.c
5325
sw->member &= ~port;
drivers/net/ethernet/micrel/ksz884x.c
6521
struct ksz_switch *sw = hw->ksz_switch;
drivers/net/ethernet/micrel/ksz884x.c
6526
sw->other_addr[5] = (u8) data[0];
drivers/net/ethernet/micrel/ksz884x.c
6527
sw->other_addr[4] = (u8)(data[0] >> 8);
drivers/net/ethernet/micrel/ksz884x.c
6528
sw->other_addr[3] = (u8) data[1];
drivers/net/ethernet/micrel/ksz884x.c
6529
sw->other_addr[2] = (u8)(data[1] >> 8);
drivers/net/ethernet/micrel/ksz884x.c
6530
sw->other_addr[1] = (u8) data[2];
drivers/net/ethernet/micrel/ksz884x.c
6531
sw->other_addr[0] = (u8)(data[2] >> 8);
drivers/net/ethernet/micrel/ksz884x.c
6556
struct ksz_switch *sw = NULL;
drivers/net/ethernet/micrel/ksz884x.c
6636
sw = hw->ksz_switch;
drivers/net/ethernet/micrel/ksz884x.c
6665
memcpy(sw->other_addr, hw->override_addr, ETH_ALEN);
drivers/net/ethernet/micrel/ksz884x.c
6719
ether_addr_copy(addr, sw->other_addr);
drivers/net/ethernet/micrel/ksz884x.c
6720
if (ether_addr_equal(sw->other_addr, hw->override_addr))
drivers/net/ethernet/micrel/ksz884x.c
913
struct ksz_sw_desc sw;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
321
u16 areg, enum shf_op op, u16 breg, bool i8, bool sw, bool wr_both,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
350
FIELD_PREP(OP_SHF_SW, sw) |
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
55
struct nfp_rtsym *sw, struct nfp_rtsym_entry *fw)
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
57
sw->type = fw->type;
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
58
sw->name = cache->strtab + le16_to_cpu(fw->name) % strtab_size;
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
59
sw->addr = ((u64)fw->addr_hi << 32) | le32_to_cpu(fw->addr_lo);
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
60
sw->size = ((u64)fw->size_hi << 32) | le32_to_cpu(fw->size_lo);
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
64
sw->target = NFP_RTSYM_TARGET_LMEM;
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
67
sw->target = NFP_RTSYM_TARGET_EMU_CACHE;
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
70
sw->target = fw->target;
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
75
sw->domain = nfp_meid(fw->island, fw->menum);
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
77
sw->domain = fw->island;
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_rtsym.c
79
sw->domain = -1;
drivers/net/wireless/intel/iwlegacy/3945-mac.c
1413
il->isr_stats.sw++;
drivers/net/wireless/intel/iwlegacy/4965-mac.c
4455
il->isr_stats.sw++;
drivers/net/wireless/intel/iwlegacy/common.h
1019
u32 sw;
drivers/net/wireless/intel/iwlegacy/debug.c
662
il->isr_stats.sw);
drivers/net/wireless/intel/iwlegacy/debug.c
663
if (il->isr_stats.sw || il->isr_stats.hw) {
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
221
const __le16 *sw, *calib, *regulatory, *mac_override, *phy_sku;
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
264
sw = (const __le16 *)sections[NVM_SECTION_TYPE_SW].data;
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
280
return iwl_parse_nvm_data(mvm->trans, mvm->cfg, mvm->fw, hw, sw, calib,
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/internal.h
63
u32 sw;
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/rx.c
2039
isr_stats->sw++;
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/rx.c
2388
isr_stats->sw++;
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
2954
isr_stats->sw);
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
2955
if (isr_stats->sw || isr_stats->hw) {
drivers/phy/apple/atc.c
2046
static int atcphy_sw_set(struct typec_switch_dev *sw, enum typec_orientation orientation)
drivers/phy/apple/atc.c
2048
struct apple_atcphy *atcphy = typec_switch_get_drvdata(sw);
drivers/phy/apple/atc.c
2073
struct typec_switch_dev *sw;
drivers/phy/apple/atc.c
2080
sw = typec_switch_register(atcphy->dev, &sw_desc);
drivers/phy/apple/atc.c
2081
if (IS_ERR(sw))
drivers/phy/apple/atc.c
2082
return PTR_ERR(sw);
drivers/phy/apple/atc.c
2084
return devm_add_action_or_reset(atcphy->dev, atcphy_typec_switch_unregister, sw);
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
108
struct typec_switch_dev *sw;
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
134
static int tca_blk_typec_switch_set(struct typec_switch_dev *sw,
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
137
struct imx8mq_usb_phy *imx_phy = typec_switch_get_drvdata(sw);
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
158
struct typec_switch_dev *sw;
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
166
sw = typec_switch_register(dev, &sw_desc);
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
167
if (IS_ERR(sw)) {
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
169
PTR_ERR(sw));
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
173
return sw;
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
176
static void tca_blk_put_typec_switch(struct typec_switch_dev *sw)
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
178
typec_switch_unregister(sw);
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
267
tca->sw = tca_blk_get_typec_switch(pdev, imx_phy);
drivers/phy/freescale/phy-fsl-imx8mq-usb.c
279
tca_blk_put_typec_switch(tca->sw);
drivers/phy/phy-google-usb.c
261
gphy->sw = typec_switch_register(dev, &sw_desc);
drivers/phy/phy-google-usb.c
262
if (IS_ERR(gphy->sw))
drivers/phy/phy-google-usb.c
263
return dev_err_probe(dev, PTR_ERR(gphy->sw),
drivers/phy/phy-google-usb.c
273
typec_switch_unregister(gphy->sw);
drivers/phy/phy-google-usb.c
60
struct typec_switch_dev *sw;
drivers/phy/phy-google-usb.c
79
static int google_usb_set_orientation(struct typec_switch_dev *sw,
drivers/phy/phy-google-usb.c
82
struct google_usb_phy *gphy = typec_switch_get_drvdata(sw);
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
2313
struct typec_switch_dev *sw;
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4426
static int qmp_combo_typec_switch_set(struct typec_switch_dev *sw,
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4429
struct qmp_combo *qmp = typec_switch_get_drvdata(sw);
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4541
typec_switch_unregister(qmp->sw);
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4561
qmp->sw = typec_switch_register(dev, &sw_desc);
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4562
if (IS_ERR(qmp->sw)) {
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4563
dev_err(dev, "Unable to register typec switch: %pe\n", qmp->sw);
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4564
return PTR_ERR(qmp->sw);
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c
1703
static int qmp_usbc_typec_switch_set(struct typec_switch_dev *sw,
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c
1706
struct qmp_usbc *qmp = typec_switch_get_drvdata(sw);
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c
1732
typec_switch_unregister(qmp->sw);
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c
1743
qmp->sw = typec_switch_register(dev, &sw_desc);
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c
1744
if (IS_ERR(qmp->sw)) {
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c
1745
dev_err(dev, "Unable to register typec switch: %pe\n", qmp->sw);
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c
1746
return PTR_ERR(qmp->sw);
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c
473
struct typec_switch_dev *sw;
drivers/phy/rockchip/phy-rockchip-usbdp.c
160
struct typec_switch_dev *sw;
drivers/phy/rockchip/phy-rockchip-usbdp.c
653
static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw,
drivers/phy/rockchip/phy-rockchip-usbdp.c
656
struct rk_udphy *udphy = typec_switch_get_drvdata(sw);
drivers/phy/rockchip/phy-rockchip-usbdp.c
681
typec_switch_unregister(udphy->sw);
drivers/phy/rockchip/phy-rockchip-usbdp.c
692
udphy->sw = typec_switch_register(udphy->dev, &sw_desc);
drivers/phy/rockchip/phy-rockchip-usbdp.c
693
if (IS_ERR(udphy->sw)) {
drivers/phy/rockchip/phy-rockchip-usbdp.c
695
PTR_ERR(udphy->sw));
drivers/phy/rockchip/phy-rockchip-usbdp.c
696
return PTR_ERR(udphy->sw);
drivers/phy/samsung/phy-exynos5-usbdrd.c
1563
if (!phy_drd->sw) {
drivers/phy/samsung/phy-exynos5-usbdrd.c
1841
static int exynos5_usbdrd_orien_sw_set(struct typec_switch_dev *sw,
drivers/phy/samsung/phy-exynos5-usbdrd.c
1844
struct exynos5_usbdrd_phy *phy_drd = typec_switch_get_drvdata(sw);
drivers/phy/samsung/phy-exynos5-usbdrd.c
1888
typec_switch_unregister(phy_drd->sw);
drivers/phy/samsung/phy-exynos5-usbdrd.c
1905
phy_drd->sw = typec_switch_register(phy_drd->dev, &sw_desc);
drivers/phy/samsung/phy-exynos5-usbdrd.c
1906
if (IS_ERR(phy_drd->sw))
drivers/phy/samsung/phy-exynos5-usbdrd.c
1908
PTR_ERR(phy_drd->sw),
drivers/phy/samsung/phy-exynos5-usbdrd.c
532
struct typec_switch_dev *sw;
drivers/phy/tegra/xusb.c
622
static int tegra_xusb_role_sw_set(struct usb_role_switch *sw,
drivers/phy/tegra/xusb.c
625
struct tegra_xusb_port *port = usb_role_switch_get_drvdata(sw);
drivers/pinctrl/meson/pinctrl-meson-a1.c
865
FUNCTION(sw),
drivers/platform/loongarch/loongson-laptop.c
227
if (test_bit(SW_LID, generic_inputdev->sw) && !(status & (1 << SW_LID))) {
drivers/platform/loongarch/loongson-laptop.c
229
ke.sw.value = (u8)status;
drivers/platform/loongarch/loongson-laptop.c
230
ke.sw.code = SW_LID;
drivers/platform/loongarch/loongson-laptop.c
484
ke->sw.value = !!(status & (1 << ke->sw.code));
drivers/platform/surface/surface_aggregator_tabletsw.c
100
sw->state = state;
drivers/platform/surface/surface_aggregator_tabletsw.c
103
tablet = sw->ops.state_is_tablet_mode(sw, &state);
drivers/platform/surface/surface_aggregator_tabletsw.c
104
input_report_switch(sw->mode_switch, SW_TABLET_MODE, tablet);
drivers/platform/surface/surface_aggregator_tabletsw.c
105
input_sync(sw->mode_switch);
drivers/platform/surface/surface_aggregator_tabletsw.c
110
struct ssam_tablet_sw *sw = dev_get_drvdata(dev);
drivers/platform/surface/surface_aggregator_tabletsw.c
112
schedule_work(&sw->update_work);
drivers/platform/surface/surface_aggregator_tabletsw.c
120
struct ssam_tablet_sw *sw;
drivers/platform/surface/surface_aggregator_tabletsw.c
129
sw = devm_kzalloc(&sdev->dev, sizeof(*sw), GFP_KERNEL);
drivers/platform/surface/surface_aggregator_tabletsw.c
130
if (!sw)
drivers/platform/surface/surface_aggregator_tabletsw.c
133
sw->sdev = sdev;
drivers/platform/surface/surface_aggregator_tabletsw.c
135
sw->ops.get_state = desc->ops.get_state;
drivers/platform/surface/surface_aggregator_tabletsw.c
136
sw->ops.state_name = desc->ops.state_name;
drivers/platform/surface/surface_aggregator_tabletsw.c
137
sw->ops.state_is_tablet_mode = desc->ops.state_is_tablet_mode;
drivers/platform/surface/surface_aggregator_tabletsw.c
139
INIT_WORK(&sw->update_work, ssam_tablet_sw_update_workfn);
drivers/platform/surface/surface_aggregator_tabletsw.c
141
ssam_device_set_drvdata(sdev, sw);
drivers/platform/surface/surface_aggregator_tabletsw.c
144
status = sw->ops.get_state(sw, &sw->state);
drivers/platform/surface/surface_aggregator_tabletsw.c
149
sw->mode_switch = devm_input_allocate_device(&sdev->dev);
drivers/platform/surface/surface_aggregator_tabletsw.c
150
if (!sw->mode_switch)
drivers/platform/surface/surface_aggregator_tabletsw.c
153
sw->mode_switch->name = desc->dev.name;
drivers/platform/surface/surface_aggregator_tabletsw.c
154
sw->mode_switch->phys = desc->dev.phys;
drivers/platform/surface/surface_aggregator_tabletsw.c
155
sw->mode_switch->id.bustype = BUS_HOST;
drivers/platform/surface/surface_aggregator_tabletsw.c
156
sw->mode_switch->dev.parent = &sdev->dev;
drivers/platform/surface/surface_aggregator_tabletsw.c
158
tablet = sw->ops.state_is_tablet_mode(sw, &sw->state);
drivers/platform/surface/surface_aggregator_tabletsw.c
159
input_set_capability(sw->mode_switch, EV_SW, SW_TABLET_MODE);
drivers/platform/surface/surface_aggregator_tabletsw.c
160
input_report_switch(sw->mode_switch, SW_TABLET_MODE, tablet);
drivers/platform/surface/surface_aggregator_tabletsw.c
162
status = input_register_device(sw->mode_switch);
drivers/platform/surface/surface_aggregator_tabletsw.c
167
sw->notif.base.priority = 0;
drivers/platform/surface/surface_aggregator_tabletsw.c
168
sw->notif.base.fn = desc->ops.notify;
drivers/platform/surface/surface_aggregator_tabletsw.c
169
sw->notif.event.reg = desc->event.reg;
drivers/platform/surface/surface_aggregator_tabletsw.c
170
sw->notif.event.id = desc->event.id;
drivers/platform/surface/surface_aggregator_tabletsw.c
171
sw->notif.event.mask = desc->event.mask;
drivers/platform/surface/surface_aggregator_tabletsw.c
172
sw->notif.event.flags = SSAM_EVENT_SEQUENCED;
drivers/platform/surface/surface_aggregator_tabletsw.c
174
status = ssam_device_notifier_register(sdev, &sw->notif);
drivers/platform/surface/surface_aggregator_tabletsw.c
183
schedule_work(&sw->update_work);
drivers/platform/surface/surface_aggregator_tabletsw.c
187
ssam_device_notifier_unregister(sdev, &sw->notif);
drivers/platform/surface/surface_aggregator_tabletsw.c
188
cancel_work_sync(&sw->update_work);
drivers/platform/surface/surface_aggregator_tabletsw.c
194
struct ssam_tablet_sw *sw = ssam_device_get_drvdata(sdev);
drivers/platform/surface/surface_aggregator_tabletsw.c
198
ssam_device_notifier_unregister(sdev, &sw->notif);
drivers/platform/surface/surface_aggregator_tabletsw.c
199
cancel_work_sync(&sw->update_work);
drivers/platform/surface/surface_aggregator_tabletsw.c
216
static const char *ssam_kip_cover_state_name(struct ssam_tablet_sw *sw,
drivers/platform/surface/surface_aggregator_tabletsw.c
239
dev_warn(&sw->sdev->dev, "unknown KIP cover state: %u\n", state->state);
drivers/platform/surface/surface_aggregator_tabletsw.c
244
static bool ssam_kip_cover_state_is_tablet_mode(struct ssam_tablet_sw *sw,
drivers/platform/surface/surface_aggregator_tabletsw.c
259
dev_warn(&sw->sdev->dev, "unknown KIP cover state: %d\n", state->state);
drivers/platform/surface/surface_aggregator_tabletsw.c
271
static int ssam_kip_get_cover_state(struct ssam_tablet_sw *sw, struct ssam_tablet_sw_state *state)
drivers/platform/surface/surface_aggregator_tabletsw.c
276
status = ssam_retry(__ssam_kip_get_cover_state, sw->sdev->ctrl, &raw);
drivers/platform/surface/surface_aggregator_tabletsw.c
278
dev_err(&sw->sdev->dev, "failed to query KIP lid state: %d\n", status);
drivers/platform/surface/surface_aggregator_tabletsw.c
289
struct ssam_tablet_sw *sw = container_of(nf, struct ssam_tablet_sw, notif);
drivers/platform/surface/surface_aggregator_tabletsw.c
29
int (*get_state)(struct ssam_tablet_sw *sw, struct ssam_tablet_sw_state *state);
drivers/platform/surface/surface_aggregator_tabletsw.c
295
dev_warn(&sw->sdev->dev, "unexpected payload size: %u\n", event->length);
drivers/platform/surface/surface_aggregator_tabletsw.c
297
schedule_work(&sw->update_work);
drivers/platform/surface/surface_aggregator_tabletsw.c
30
const char *(*state_name)(struct ssam_tablet_sw *sw,
drivers/platform/surface/surface_aggregator_tabletsw.c
32
bool (*state_is_tablet_mode)(struct ssam_tablet_sw *sw,
drivers/platform/surface/surface_aggregator_tabletsw.c
358
static const char *ssam_pos_state_name_cover(struct ssam_tablet_sw *sw, u32 state)
drivers/platform/surface/surface_aggregator_tabletsw.c
380
dev_warn(&sw->sdev->dev, "unknown device posture for type-cover: %u\n", state);
drivers/platform/surface/surface_aggregator_tabletsw.c
385
static const char *ssam_pos_state_name_sls(struct ssam_tablet_sw *sw, u32 state)
drivers/platform/surface/surface_aggregator_tabletsw.c
401
dev_warn(&sw->sdev->dev, "unknown device posture for SLS: %u\n", state);
drivers/platform/surface/surface_aggregator_tabletsw.c
406
static const char *ssam_pos_state_name(struct ssam_tablet_sw *sw,
drivers/platform/surface/surface_aggregator_tabletsw.c
411
return ssam_pos_state_name_cover(sw, state->state);
drivers/platform/surface/surface_aggregator_tabletsw.c
414
return ssam_pos_state_name_sls(sw, state->state);
drivers/platform/surface/surface_aggregator_tabletsw.c
417
dev_warn(&sw->sdev->dev, "unknown device posture source: %u\n", state->source);
drivers/platform/surface/surface_aggregator_tabletsw.c
422
static bool ssam_pos_state_is_tablet_mode_cover(struct ssam_tablet_sw *sw, u32 state)
drivers/platform/surface/surface_aggregator_tabletsw.c
436
dev_warn(&sw->sdev->dev, "unknown device posture for type-cover: %u\n", state);
drivers/platform/surface/surface_aggregator_tabletsw.c
441
static bool ssam_pos_state_is_tablet_mode_sls(struct ssam_tablet_sw *sw, u32 state)
drivers/platform/surface/surface_aggregator_tabletsw.c
455
dev_warn(&sw->sdev->dev, "unknown device posture for SLS: %u\n", state);
drivers/platform/surface/surface_aggregator_tabletsw.c
460
static bool ssam_pos_state_is_tablet_mode(struct ssam_tablet_sw *sw,
drivers/platform/surface/surface_aggregator_tabletsw.c
465
return ssam_pos_state_is_tablet_mode_cover(sw, state->state);
drivers/platform/surface/surface_aggregator_tabletsw.c
468
return ssam_pos_state_is_tablet_mode_sls(sw, state->state);
drivers/platform/surface/surface_aggregator_tabletsw.c
471
dev_warn(&sw->sdev->dev, "unknown device posture source: %u\n", state->source);
drivers/platform/surface/surface_aggregator_tabletsw.c
476
static int ssam_pos_get_sources_list(struct ssam_tablet_sw *sw, struct ssam_sources_list *sources)
drivers/platform/surface/surface_aggregator_tabletsw.c
494
status = ssam_retry(ssam_request_do_sync_onstack, sw->sdev->ctrl, &rqst, &rsp, 0);
drivers/platform/surface/surface_aggregator_tabletsw.c
500
dev_err(&sw->sdev->dev, "received source list response is too small\n");
drivers/platform/surface/surface_aggregator_tabletsw.c
506
dev_err(&sw->sdev->dev, "mismatch between number of sources and response size\n");
drivers/platform/surface/surface_aggregator_tabletsw.c
513
static int ssam_pos_get_source(struct ssam_tablet_sw *sw, u32 *source_id)
drivers/platform/surface/surface_aggregator_tabletsw.c
518
status = ssam_pos_get_sources_list(sw, &sources);
drivers/platform/surface/surface_aggregator_tabletsw.c
523
dev_err(&sw->sdev->dev, "no posture sources found\n");
drivers/platform/surface/surface_aggregator_tabletsw.c
547
static int ssam_pos_get_posture_for_source(struct ssam_tablet_sw *sw, u32 source_id, u32 *posture)
drivers/platform/surface/surface_aggregator_tabletsw.c
55
int (*get_state)(struct ssam_tablet_sw *sw, struct ssam_tablet_sw_state *state);
drivers/platform/surface/surface_aggregator_tabletsw.c
553
status = ssam_retry(__ssam_pos_get_posture_for_source, sw->sdev->ctrl,
drivers/platform/surface/surface_aggregator_tabletsw.c
56
const char *(*state_name)(struct ssam_tablet_sw *sw,
drivers/platform/surface/surface_aggregator_tabletsw.c
562
static int ssam_pos_get_posture(struct ssam_tablet_sw *sw, struct ssam_tablet_sw_state *state)
drivers/platform/surface/surface_aggregator_tabletsw.c
568
status = ssam_pos_get_source(sw, &source_id);
drivers/platform/surface/surface_aggregator_tabletsw.c
570
dev_err(&sw->sdev->dev, "failed to get posture source ID: %d\n", status);
drivers/platform/surface/surface_aggregator_tabletsw.c
574
status = ssam_pos_get_posture_for_source(sw, source_id, &source_state);
drivers/platform/surface/surface_aggregator_tabletsw.c
576
dev_err(&sw->sdev->dev, "failed to get posture value for source %u: %d\n",
drivers/platform/surface/surface_aggregator_tabletsw.c
58
bool (*state_is_tablet_mode)(struct ssam_tablet_sw *sw,
drivers/platform/surface/surface_aggregator_tabletsw.c
588
struct ssam_tablet_sw *sw = container_of(nf, struct ssam_tablet_sw, notif);
drivers/platform/surface/surface_aggregator_tabletsw.c
594
dev_warn(&sw->sdev->dev, "unexpected payload size: %u\n", event->length);
drivers/platform/surface/surface_aggregator_tabletsw.c
596
schedule_work(&sw->update_work);
drivers/platform/surface/surface_aggregator_tabletsw.c
72
struct ssam_tablet_sw *sw = dev_get_drvdata(dev);
drivers/platform/surface/surface_aggregator_tabletsw.c
73
const char *state = sw->ops.state_name(sw, &sw->state);
drivers/platform/surface/surface_aggregator_tabletsw.c
90
struct ssam_tablet_sw *sw = container_of(work, struct ssam_tablet_sw, update_work);
drivers/platform/surface/surface_aggregator_tabletsw.c
94
status = sw->ops.get_state(sw, &state);
drivers/platform/surface/surface_aggregator_tabletsw.c
98
if (sw->state.source == state.source && sw->state.state == state.state)
drivers/platform/x86/dell/dell-wmi-privacy.c
323
dell_wmi_keymap_type_0012[i].sw.code == SW_CAMERA_LENS_COVER &&
drivers/platform/x86/huawei-wmi.c
734
(key->sw.code == KEY_BRIGHTNESSDOWN ||
drivers/platform/x86/huawei-wmi.c
735
key->sw.code == KEY_BRIGHTNESSUP))
drivers/platform/x86/intel/vbtn.c
63
{ KE_IGNORE, 0xCA, { .sw = { SW_DOCK, 1 } } }, /* Docked */
drivers/platform/x86/intel/vbtn.c
64
{ KE_IGNORE, 0xCB, { .sw = { SW_DOCK, 0 } } }, /* Undocked */
drivers/platform/x86/intel/vbtn.c
65
{ KE_SW, 0xCC, { .sw = { SW_TABLET_MODE, 1 } } }, /* Tablet */
drivers/platform/x86/intel/vbtn.c
66
{ KE_SW, 0xCD, { .sw = { SW_TABLET_MODE, 0 } } }, /* Laptop */
drivers/platform/x86/lenovo/ymc.c
49
{ KE_SW, 0x01, { .sw = { SW_TABLET_MODE, 0 } } },
drivers/platform/x86/lenovo/ymc.c
51
{ KE_SW, 0x02, { .sw = { SW_TABLET_MODE, 1 } } },
drivers/platform/x86/lenovo/ymc.c
53
{ KE_SW, 0x03, { .sw = { SW_TABLET_MODE, 1 } } },
drivers/platform/x86/lenovo/ymc.c
55
{ KE_SW, 0x04, { .sw = { SW_TABLET_MODE, 1 } } },
drivers/platform/x86/samsung-galaxybook.c
1281
!test_bit(SW_CAMERA_LENS_COVER, galaxybook->input->sw));
drivers/power/supply/lp8727_charger.c
174
static inline void lp8727_ctrl_switch(struct lp8727_chg *pchg, u8 sw)
drivers/power/supply/lp8727_charger.c
176
lp8727_write_byte(pchg, LP8727_SWCTRL, sw);
drivers/s390/char/ctrlchar.c
28
void schedule_sysrq_work(struct sysrq_work *sw)
drivers/s390/char/ctrlchar.c
30
INIT_WORK(&sw->work, ctrlchar_handle_sysrq);
drivers/s390/char/ctrlchar.c
31
schedule_work(&sw->work);
drivers/s390/char/ctrlchar.h
31
void schedule_sysrq_work(struct sysrq_work *sw);
drivers/s390/net/ctcm_fsms.c
1815
header->sw.th_last_seq = wch->th_seq_num;
drivers/s390/net/ctcm_main.c
627
header->sw.th_last_seq = ch->th_seq_num;
drivers/s390/net/ctcm_mpc.c
131
__u32 ct, sw, rm, dup;
drivers/s390/net/ctcm_mpc.c
139
sw = 0;
drivers/s390/net/ctcm_mpc.c
146
if (sw == 0) {
drivers/s390/net/ctcm_mpc.c
153
if ((sw == 4) || (sw == 12))
drivers/s390/net/ctcm_mpc.c
155
if (sw == 8)
drivers/s390/net/ctcm_mpc.c
163
basc[sw] = *ptr;
drivers/s390/net/ctcm_mpc.c
165
basc[sw] = '.';
drivers/s390/net/ctcm_mpc.c
167
basc[sw+1] = '\0';
drivers/s390/net/ctcm_mpc.c
168
sw++;
drivers/s390/net/ctcm_mpc.c
170
if (sw != 16)
drivers/s390/net/ctcm_mpc.c
186
sw = 0;
drivers/s390/net/ctcm_mpc.c
190
if (sw != 0) {
drivers/s390/net/ctcm_mpc.c
191
for ( ; rm > 0; rm--, sw++) {
drivers/s390/net/ctcm_mpc.c
192
if ((sw == 4) || (sw == 12))
drivers/s390/net/ctcm_mpc.c
194
if (sw == 8)
drivers/s390/net/ctcm_mpc.c
660
header->sw.th_last_seq = ch->th_seq_num;
drivers/s390/net/ctcm_mpc.h
107
struct th_addon sw;
drivers/scsi/libsas/sas_discover.c
548
static void sas_chain_work(struct sas_ha_struct *ha, struct sas_work *sw)
drivers/scsi/libsas/sas_discover.c
555
queue_work(ha->disco_q, &sw->work);
drivers/scsi/libsas/sas_discover.c
559
struct sas_work *sw,
drivers/scsi/libsas/sas_discover.c
566
sas_chain_work(ha, sw);
drivers/scsi/libsas/sas_event.c
13
bool sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw)
drivers/scsi/libsas/sas_event.c
155
struct sas_work *sw = &ev->work;
drivers/scsi/libsas/sas_event.c
157
list_add_tail(&sw->drain_node, &ha->defer_q);
drivers/scsi/libsas/sas_event.c
20
if (list_empty(&sw->drain_node))
drivers/scsi/libsas/sas_event.c
21
list_add_tail(&sw->drain_node, &ha->defer_q);
drivers/scsi/libsas/sas_event.c
25
return queue_work(ha->event_q, &sw->work);
drivers/scsi/libsas/sas_event.c
43
struct sas_work *sw, *_sw;
drivers/scsi/libsas/sas_event.c
46
list_for_each_entry_safe(sw, _sw, &ha->defer_q, drain_node) {
drivers/scsi/libsas/sas_event.c
47
list_del_init(&sw->drain_node);
drivers/scsi/libsas/sas_event.c
49
if (!sas_queue_work(ha, sw)) {
drivers/scsi/libsas/sas_event.c
51
sas_free_event(to_asd_sas_event(&sw->work));
drivers/scsi/libsas/sas_internal.h
81
bool sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw);
drivers/scsi/qla2xxx/qla_isr.c
1947
uint sw = mb[1] >> 15 & 0x1;
drivers/scsi/qla2xxx/qla_isr.c
1950
results[result], types[type], sw);
drivers/staging/media/av7110/av7110_av.c
378
int sw;
drivers/staging/media/av7110/av7110_av.c
393
sw = (p[3] & 0x0F);
drivers/staging/media/av7110/av7110_av.c
394
ret = av7110_set_vidmode(av7110, sw2mode[sw]);
drivers/staging/media/av7110/av7110_av.c
396
dprintk(2, "playback %dx%d fr=%d\n", hsize, vsize, sw);
drivers/thunderbolt/acpi.c
287
static struct acpi_device *tb_acpi_switch_find_companion(struct tb_switch *sw)
drivers/thunderbolt/acpi.c
289
struct tb_switch *parent_sw = tb_switch_parent(sw);
drivers/thunderbolt/acpi.c
297
struct tb_port *port = tb_switch_downstream_port(sw);
drivers/thunderbolt/acpi.c
305
struct tb_nhi *nhi = sw->tb->nhi;
drivers/thunderbolt/cap.c
154
int tb_switch_next_cap(struct tb_switch *sw, unsigned int offset)
drivers/thunderbolt/cap.c
160
return sw->config.first_cap_offset;
drivers/thunderbolt/cap.c
162
ret = tb_sw_read(sw, &header, TB_CFG_SWITCH, offset, 2);
drivers/thunderbolt/cap.c
179
tb_sw_dbg(sw, "unknown capability %#x at %#x\n",
drivers/thunderbolt/cap.c
198
int tb_switch_find_cap(struct tb_switch *sw, enum tb_switch_cap cap)
drivers/thunderbolt/cap.c
20
struct tb_switch *sw = port->sw;
drivers/thunderbolt/cap.c
206
offset = tb_switch_next_cap(sw, offset);
drivers/thunderbolt/cap.c
210
ret = tb_sw_read(sw, &header, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/cap.c
234
int tb_switch_find_vse_cap(struct tb_switch *sw, enum tb_switch_vse_cap vsec)
drivers/thunderbolt/cap.c
242
offset = tb_switch_next_cap(sw, offset);
drivers/thunderbolt/cap.c
246
ret = tb_sw_read(sw, &header, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/cap.c
28
if (tb_switch_is_light_ridge(sw))
drivers/thunderbolt/cap.c
30
else if (tb_switch_is_eagle_ridge(sw))
drivers/thunderbolt/cap.c
35
ret = tb_sw_read(sw, &value, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/cap.c
44
return tb_sw_write(sw, &value, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/cap.c
55
if (tb_switch_is_light_ridge(port->sw)) {
drivers/thunderbolt/clx.c
184
static bool tb_switch_clx_is_supported(const struct tb_switch *sw)
drivers/thunderbolt/clx.c
189
if (sw->quirks & QUIRK_NO_CLX)
drivers/thunderbolt/clx.c
196
if (tb_switch_is_tiger_lake(sw))
drivers/thunderbolt/clx.c
199
return tb_switch_is_usb4(sw) || tb_switch_is_titan_ridge(sw);
drivers/thunderbolt/clx.c
211
int tb_switch_clx_init(struct tb_switch *sw)
drivers/thunderbolt/clx.c
216
if (tb_switch_is_icm(sw))
drivers/thunderbolt/clx.c
219
if (!tb_route(sw))
drivers/thunderbolt/clx.c
222
if (!tb_switch_clx_is_supported(sw))
drivers/thunderbolt/clx.c
225
up = tb_upstream_port(sw);
drivers/thunderbolt/clx.c
226
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/clx.c
231
tb_sw_warn(sw, "CLx: inconsistent configuration %#x != %#x\n",
drivers/thunderbolt/clx.c
234
tb_sw_dbg(sw, "CLx: current mode: %s\n", clx_name(clx));
drivers/thunderbolt/clx.c
236
sw->clx = clx;
drivers/thunderbolt/clx.c
240
static int tb_switch_pm_secondary_resolve(struct tb_switch *sw)
drivers/thunderbolt/clx.c
245
if (!tb_route(sw))
drivers/thunderbolt/clx.c
248
up = tb_upstream_port(sw);
drivers/thunderbolt/clx.c
249
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/clx.c
257
static int tb_switch_mask_clx_objections(struct tb_switch *sw)
drivers/thunderbolt/clx.c
259
int up_port = sw->config.upstream_port_number;
drivers/thunderbolt/clx.c
264
if (!tb_switch_is_titan_ridge(sw))
drivers/thunderbolt/clx.c
267
if (!tb_route(sw))
drivers/thunderbolt/clx.c
287
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/clx.c
288
sw->cap_lp + offset, ARRAY_SIZE(val));
drivers/thunderbolt/clx.c
297
return tb_sw_write(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/clx.c
298
sw->cap_lp + offset, ARRAY_SIZE(val));
drivers/thunderbolt/clx.c
321
int tb_switch_clx_enable(struct tb_switch *sw, unsigned int clx)
drivers/thunderbolt/clx.c
328
if (!clx || sw->clx == clx)
drivers/thunderbolt/clx.c
334
parent_sw = tb_switch_parent(sw);
drivers/thunderbolt/clx.c
339
!tb_switch_clx_is_supported(sw))
drivers/thunderbolt/clx.c
345
usb4_switch_version(sw) < 2))
drivers/thunderbolt/clx.c
348
ret = tb_switch_pm_secondary_resolve(sw);
drivers/thunderbolt/clx.c
352
up = tb_upstream_port(sw);
drivers/thunderbolt/clx.c
353
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/clx.c
376
ret = tb_switch_mask_clx_objections(sw);
drivers/thunderbolt/clx.c
383
sw->clx |= clx;
drivers/thunderbolt/clx.c
385
tb_sw_dbg(sw, "CLx: %s enabled\n", clx_name(clx));
drivers/thunderbolt/clx.c
398
int tb_switch_clx_disable(struct tb_switch *sw)
drivers/thunderbolt/clx.c
400
unsigned int clx = sw->clx;
drivers/thunderbolt/clx.c
404
if (!tb_switch_clx_is_supported(sw))
drivers/thunderbolt/clx.c
410
if (sw->is_unplugged)
drivers/thunderbolt/clx.c
413
up = tb_upstream_port(sw);
drivers/thunderbolt/clx.c
414
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/clx.c
424
sw->clx = 0;
drivers/thunderbolt/clx.c
426
tb_sw_dbg(sw, "CLx: %s disabled\n", clx_name(clx));
drivers/thunderbolt/clx.c
81
if (tb_switch_is_usb4(port->sw)) {
drivers/thunderbolt/debugfs.c
1012
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1033
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1052
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1071
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1087
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1126
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1231
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
1233
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
1251
down_sw = sw;
drivers/thunderbolt/debugfs.c
1253
down_sw = port->remote->sw;
drivers/thunderbolt/debugfs.c
1328
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1419
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1481
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1513
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1538
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1579
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1608
struct tb *tb = port->sw->tb;
drivers/thunderbolt/debugfs.c
1635
struct tb *tb = port->sw->tb;
drivers/thunderbolt/debugfs.c
1776
parent = debugfs_lookup(dir_name, port->sw->debugfs_dir);
drivers/thunderbolt/debugfs.c
1793
parent = debugfs_lookup(dir_name, port->sw->debugfs_dir);
drivers/thunderbolt/debugfs.c
1801
static void margining_switch_init(struct tb_switch *sw)
drivers/thunderbolt/debugfs.c
1805
u64 route = tb_route(sw);
drivers/thunderbolt/debugfs.c
1810
upstream = tb_upstream_port(sw);
drivers/thunderbolt/debugfs.c
1811
parent_sw = tb_switch_parent(sw);
drivers/thunderbolt/debugfs.c
1818
static void margining_switch_remove(struct tb_switch *sw)
drivers/thunderbolt/debugfs.c
1822
u64 route = tb_route(sw);
drivers/thunderbolt/debugfs.c
1827
upstream = tb_upstream_port(sw);
drivers/thunderbolt/debugfs.c
1828
parent_sw = tb_switch_parent(sw);
drivers/thunderbolt/debugfs.c
1869
static inline void margining_switch_init(struct tb_switch *sw) { }
drivers/thunderbolt/debugfs.c
1870
static inline void margining_switch_remove(struct tb_switch *sw) { }
drivers/thunderbolt/debugfs.c
1900
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
1901
struct tb *tb = port->sw->tb;
drivers/thunderbolt/debugfs.c
1909
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
1935
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
1936
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
1942
static void cap_show_by_dw(struct seq_file *s, struct tb_switch *sw,
drivers/thunderbolt/debugfs.c
1954
ret = tb_sw_read(sw, &data, TB_CFG_SWITCH, cap + offset + i, 1);
drivers/thunderbolt/debugfs.c
1965
static void cap_show(struct seq_file *s, struct tb_switch *sw,
drivers/thunderbolt/debugfs.c
1979
ret = tb_sw_read(sw, data, TB_CFG_SWITCH, cap + offset, dwords);
drivers/thunderbolt/debugfs.c
1981
cap_show_by_dw(s, sw, port, cap, offset, cap_id, vsec_id, length);
drivers/thunderbolt/debugfs.c
2016
if (usb4_switch_version(port->sw) < 2)
drivers/thunderbolt/debugfs.c
2028
if (usb4_switch_version(port->sw) < 2)
drivers/thunderbolt/debugfs.c
2033
if (usb4_switch_version(port->sw) < 2)
drivers/thunderbolt/debugfs.c
2108
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
2109
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2112
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
2130
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2131
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
2137
static void switch_cap_show(struct tb_switch *sw, struct seq_file *s,
drivers/thunderbolt/debugfs.c
2144
ret = tb_sw_read(sw, &header, TB_CFG_SWITCH, cap, 1);
drivers/thunderbolt/debugfs.c
2152
ret = tb_sw_read(sw, (u32 *)&header + 1, TB_CFG_SWITCH,
drivers/thunderbolt/debugfs.c
2174
cap_show(s, sw, NULL, cap, header.basic.cap, vsec_id, length);
drivers/thunderbolt/debugfs.c
2177
static void switch_caps_show(struct tb_switch *sw, struct seq_file *s)
drivers/thunderbolt/debugfs.c
2181
cap = tb_switch_next_cap(sw, 0);
drivers/thunderbolt/debugfs.c
2183
switch_cap_show(sw, s, cap);
drivers/thunderbolt/debugfs.c
2184
cap = tb_switch_next_cap(sw, cap);
drivers/thunderbolt/debugfs.c
2188
static int switch_basic_regs_show(struct tb_switch *sw, struct seq_file *s)
drivers/thunderbolt/debugfs.c
2195
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/debugfs.c
2200
ret = tb_sw_read(sw, data, TB_CFG_SWITCH, 0, dwords);
drivers/thunderbolt/debugfs.c
221
static ssize_t regs_write(struct tb_switch *sw, struct tb_port *port,
drivers/thunderbolt/debugfs.c
2212
struct tb_switch *sw = s->private;
drivers/thunderbolt/debugfs.c
2213
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2216
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
2225
ret = switch_basic_regs_show(sw, s);
drivers/thunderbolt/debugfs.c
2229
switch_caps_show(sw, s);
drivers/thunderbolt/debugfs.c
2234
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2235
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
226
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2264
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
2265
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2268
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
2295
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2296
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
2327
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
2328
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2331
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
234
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
2349
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2350
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
2389
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
2390
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2393
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
2405
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2406
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
2418
void tb_switch_debugfs_init(struct tb_switch *sw)
drivers/thunderbolt/debugfs.c
2423
debugfs_dir = debugfs_create_dir(dev_name(&sw->dev), tb_debugfs_root);
drivers/thunderbolt/debugfs.c
2424
sw->debugfs_dir = debugfs_dir;
drivers/thunderbolt/debugfs.c
2425
debugfs_create_file("regs", DEBUGFS_MODE, debugfs_dir, sw,
drivers/thunderbolt/debugfs.c
2427
if (sw->drom)
drivers/thunderbolt/debugfs.c
2428
debugfs_create_blob("drom", 0400, debugfs_dir, &sw->drom_blob);
drivers/thunderbolt/debugfs.c
2430
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/debugfs.c
2440
debugfs_dir = debugfs_create_dir(dir_name, sw->debugfs_dir);
drivers/thunderbolt/debugfs.c
2453
margining_switch_init(sw);
drivers/thunderbolt/debugfs.c
2462
void tb_switch_debugfs_remove(struct tb_switch *sw)
drivers/thunderbolt/debugfs.c
2464
margining_switch_remove(sw);
drivers/thunderbolt/debugfs.c
2465
debugfs_remove_recursive(sw->debugfs_dir);
drivers/thunderbolt/debugfs.c
257
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/debugfs.c
266
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
267
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
279
return regs_write(port->sw, port, TB_CFG_PORT, user_buf, count, ppos);
drivers/thunderbolt/debugfs.c
288
return regs_write(port->sw, port, TB_CFG_HOPS, user_buf, count, ppos);
drivers/thunderbolt/debugfs.c
295
struct tb_switch *sw = s->private;
drivers/thunderbolt/debugfs.c
297
return regs_write(sw, NULL, TB_CFG_SWITCH, user_buf, count, ppos);
drivers/thunderbolt/debugfs.c
386
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
387
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
395
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
407
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
408
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
621
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
684
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
815
struct tb *tb = port->sw->tb;
drivers/thunderbolt/debugfs.c
857
struct tb *tb = port->sw->tb;
drivers/thunderbolt/debugfs.c
890
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
921
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
941
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
980
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/dma_port.c
168
static int dma_find_port(struct tb_switch *sw)
drivers/thunderbolt/dma_port.c
181
ret = dma_port_read(sw->tb->ctl, &type, tb_route(sw), ports[i],
drivers/thunderbolt/dma_port.c
203
struct tb_dma_port *dma_port_alloc(struct tb_switch *sw)
drivers/thunderbolt/dma_port.c
208
port = dma_find_port(sw);
drivers/thunderbolt/dma_port.c
216
dma->sw = sw;
drivers/thunderbolt/dma_port.c
236
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
242
ret = dma_port_read(sw->tb->ctl, &in, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
274
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
278
ret = dma_port_write(sw->tb->ctl, &in, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
287
ret = dma_port_read(sw->tb->ctl, &out, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
299
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
313
return dma_port_read(sw->tb->ctl, buf, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
321
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
326
ret = dma_port_write(sw->tb->ctl, buf, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
422
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
426
ret = dma_port_read(sw->tb->ctl, &out, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
55
struct tb_switch *sw;
drivers/thunderbolt/dma_port.h
21
struct tb_dma_port *dma_port_alloc(struct tb_switch *sw);
drivers/thunderbolt/domain.c
638
int tb_domain_disapprove_switch(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/domain.c
643
return tb->cm_ops->disapprove_switch(tb, sw);
drivers/thunderbolt/domain.c
657
int tb_domain_approve_switch(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/domain.c
665
parent_sw = tb_to_switch(sw->dev.parent);
drivers/thunderbolt/domain.c
669
return tb->cm_ops->approve_switch(tb, sw);
drivers/thunderbolt/domain.c
683
int tb_domain_approve_switch_key(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/domain.c
692
parent_sw = tb_to_switch(sw->dev.parent);
drivers/thunderbolt/domain.c
696
ret = tb->cm_ops->add_switch_key(tb, sw);
drivers/thunderbolt/domain.c
700
return tb->cm_ops->approve_switch(tb, sw);
drivers/thunderbolt/domain.c
715
int tb_domain_challenge_switch_key(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/domain.c
727
parent_sw = tb_to_switch(sw->dev.parent);
drivers/thunderbolt/domain.c
732
ret = tb->cm_ops->challenge_switch_key(tb, sw, challenge, response);
drivers/thunderbolt/domain.c
737
hmac_sha256_usingrawkey(sw->key, TB_SWITCH_KEY_SIZE,
drivers/thunderbolt/domain.c
744
return tb->cm_ops->approve_switch(tb, sw);
drivers/thunderbolt/eeprom.c
100
int res = tb_eeprom_ctl_read(sw, &ctl);
drivers/thunderbolt/eeprom.c
105
res = tb_eeprom_transfer(sw, &ctl, TB_EEPROM_OUT);
drivers/thunderbolt/eeprom.c
116
static int tb_eeprom_in(struct tb_switch *sw, u8 *val)
drivers/thunderbolt/eeprom.c
120
int res = tb_eeprom_ctl_read(sw, &ctl);
drivers/thunderbolt/eeprom.c
126
res = tb_eeprom_transfer(sw, &ctl, TB_EEPROM_IN);
drivers/thunderbolt/eeprom.c
137
static int tb_eeprom_get_drom_offset(struct tb_switch *sw, u16 *offset)
drivers/thunderbolt/eeprom.c
142
if (!sw->cap_plug_events) {
drivers/thunderbolt/eeprom.c
143
tb_sw_warn(sw, "no TB_CAP_PLUG_EVENTS, cannot read eeprom\n");
drivers/thunderbolt/eeprom.c
146
res = tb_sw_read(sw, &cap, TB_CFG_SWITCH, sw->cap_plug_events,
drivers/thunderbolt/eeprom.c
152
tb_sw_warn(sw, "no NVM\n");
drivers/thunderbolt/eeprom.c
157
tb_sw_warn(sw, "drom offset is larger than 0xffff: %#x\n",
drivers/thunderbolt/eeprom.c
168
static int tb_eeprom_read_n(struct tb_switch *sw, u16 offset, u8 *val,
drivers/thunderbolt/eeprom.c
174
res = tb_eeprom_get_drom_offset(sw, &drom_offset);
drivers/thunderbolt/eeprom.c
18
static int tb_eeprom_ctl_write(struct tb_switch *sw, struct tb_eeprom_ctl *ctl)
drivers/thunderbolt/eeprom.c
180
res = tb_eeprom_active(sw, true);
drivers/thunderbolt/eeprom.c
183
res = tb_eeprom_out(sw, 3);
drivers/thunderbolt/eeprom.c
186
res = tb_eeprom_out(sw, offset >> 8);
drivers/thunderbolt/eeprom.c
189
res = tb_eeprom_out(sw, offset);
drivers/thunderbolt/eeprom.c
193
res = tb_eeprom_in(sw, val + i);
drivers/thunderbolt/eeprom.c
197
return tb_eeprom_active(sw, false);
drivers/thunderbolt/eeprom.c
20
return tb_sw_write(sw, ctl, TB_CFG_SWITCH, sw->cap_plug_events + ROUTER_CS_4, 1);
drivers/thunderbolt/eeprom.c
26
static int tb_eeprom_ctl_read(struct tb_switch *sw, struct tb_eeprom_ctl *ctl)
drivers/thunderbolt/eeprom.c
28
return tb_sw_read(sw, ctl, TB_CFG_SWITCH, sw->cap_plug_events + ROUTER_CS_4, 1);
drivers/thunderbolt/eeprom.c
304
int tb_drom_read_uid_only(struct tb_switch *sw, u64 *uid)
drivers/thunderbolt/eeprom.c
311
res = tb_eeprom_read_n(sw, 0, data, 9);
drivers/thunderbolt/eeprom.c
317
tb_sw_warn(sw, "uid crc8 mismatch (expected: %#x, got: %#x)\n",
drivers/thunderbolt/eeprom.c
326
static int tb_drom_parse_entry_generic(struct tb_switch *sw,
drivers/thunderbolt/eeprom.c
335
sw->vendor_name = kstrndup(entry->data,
drivers/thunderbolt/eeprom.c
337
if (!sw->vendor_name)
drivers/thunderbolt/eeprom.c
342
sw->device_name = kstrndup(entry->data,
drivers/thunderbolt/eeprom.c
344
if (!sw->device_name)
drivers/thunderbolt/eeprom.c
351
if (!sw->vendor && !sw->device) {
drivers/thunderbolt/eeprom.c
352
sw->vendor = desc->idVendor;
drivers/thunderbolt/eeprom.c
353
sw->device = desc->idProduct;
drivers/thunderbolt/eeprom.c
362
static int tb_drom_parse_entry_port(struct tb_switch *sw,
drivers/thunderbolt/eeprom.c
373
if (header->index > sw->config.max_port_number) {
drivers/thunderbolt/eeprom.c
374
dev_info_once(&sw->dev, "ignoring unnecessary extra entries in DROM\n");
drivers/thunderbolt/eeprom.c
378
port = &sw->ports[header->index];
drivers/thunderbolt/eeprom.c
391
tb_sw_warn(sw,
drivers/thunderbolt/eeprom.c
399
&port->sw->ports[entry->dual_link_port_nr];
drivers/thunderbolt/eeprom.c
409
static int tb_drom_parse_entries(struct tb_switch *sw, size_t header_size)
drivers/thunderbolt/eeprom.c
411
struct tb_drom_header *header = (void *) sw->drom;
drivers/thunderbolt/eeprom.c
417
struct tb_drom_entry_header *entry = (void *) (sw->drom + pos);
drivers/thunderbolt/eeprom.c
42
static int tb_eeprom_active(struct tb_switch *sw, bool enable)
drivers/thunderbolt/eeprom.c
420
tb_sw_warn(sw, "DROM buffer overrun\n");
drivers/thunderbolt/eeprom.c
426
res = tb_drom_parse_entry_generic(sw, entry);
drivers/thunderbolt/eeprom.c
429
res = tb_drom_parse_entry_port(sw, entry);
drivers/thunderbolt/eeprom.c
440
static int tb_switch_drom_alloc(struct tb_switch *sw, size_t size)
drivers/thunderbolt/eeprom.c
442
sw->drom = kzalloc(size, GFP_KERNEL);
drivers/thunderbolt/eeprom.c
443
if (!sw->drom)
drivers/thunderbolt/eeprom.c
447
sw->drom_blob.data = sw->drom;
drivers/thunderbolt/eeprom.c
448
sw->drom_blob.size = size;
drivers/thunderbolt/eeprom.c
45
int res = tb_eeprom_ctl_read(sw, &ctl);
drivers/thunderbolt/eeprom.c
453
static void tb_switch_drom_free(struct tb_switch *sw)
drivers/thunderbolt/eeprom.c
456
sw->drom_blob.data = NULL;
drivers/thunderbolt/eeprom.c
457
sw->drom_blob.size = 0;
drivers/thunderbolt/eeprom.c
459
kfree(sw->drom);
drivers/thunderbolt/eeprom.c
460
sw->drom = NULL;
drivers/thunderbolt/eeprom.c
466
static int tb_drom_copy_efi(struct tb_switch *sw, u16 *size)
drivers/thunderbolt/eeprom.c
468
struct device *dev = sw->tb->nhi->dev;
drivers/thunderbolt/eeprom.c
475
res = tb_switch_drom_alloc(sw, len);
drivers/thunderbolt/eeprom.c
479
res = device_property_read_u8_array(dev, "ThunderboltDROM", sw->drom,
drivers/thunderbolt/eeprom.c
484
*size = ((struct tb_drom_header *)sw->drom)->data_len +
drivers/thunderbolt/eeprom.c
492
tb_switch_drom_free(sw);
drivers/thunderbolt/eeprom.c
496
static int tb_drom_copy_nvm(struct tb_switch *sw, u16 *size)
drivers/thunderbolt/eeprom.c
50
res = tb_eeprom_ctl_write(sw, &ctl);
drivers/thunderbolt/eeprom.c
501
if (!sw->dma_port)
drivers/thunderbolt/eeprom.c
504
ret = tb_eeprom_get_drom_offset(sw, &drom_offset);
drivers/thunderbolt/eeprom.c
511
ret = dma_port_flash_read(sw->dma_port, drom_offset + 14, size,
drivers/thunderbolt/eeprom.c
518
ret = tb_switch_drom_alloc(sw, *size);
drivers/thunderbolt/eeprom.c
522
ret = dma_port_flash_read(sw->dma_port, drom_offset, sw->drom, *size);
drivers/thunderbolt/eeprom.c
524
tb_switch_drom_free(sw);
drivers/thunderbolt/eeprom.c
532
tb_drom_read_uid_only(sw, &sw->uid);
drivers/thunderbolt/eeprom.c
536
static int usb4_copy_drom(struct tb_switch *sw, u16 *size)
drivers/thunderbolt/eeprom.c
54
return tb_eeprom_ctl_write(sw, &ctl);
drivers/thunderbolt/eeprom.c
540
ret = usb4_switch_drom_read(sw, 14, size, sizeof(*size));
drivers/thunderbolt/eeprom.c
546
ret = tb_switch_drom_alloc(sw, *size);
drivers/thunderbolt/eeprom.c
550
ret = usb4_switch_drom_read(sw, 0, sw->drom, *size);
drivers/thunderbolt/eeprom.c
552
tb_switch_drom_free(sw);
drivers/thunderbolt/eeprom.c
557
static int tb_drom_bit_bang(struct tb_switch *sw, u16 *size)
drivers/thunderbolt/eeprom.c
561
ret = tb_eeprom_read_n(sw, 14, (u8 *)size, 2);
drivers/thunderbolt/eeprom.c
568
tb_sw_dbg(sw, "reading DROM (length: %#x)\n", *size);
drivers/thunderbolt/eeprom.c
57
res = tb_eeprom_ctl_write(sw, &ctl);
drivers/thunderbolt/eeprom.c
570
tb_sw_warn(sw, "DROM too small, aborting\n");
drivers/thunderbolt/eeprom.c
574
ret = tb_switch_drom_alloc(sw, *size);
drivers/thunderbolt/eeprom.c
578
ret = tb_eeprom_read_n(sw, 0, sw->drom, *size);
drivers/thunderbolt/eeprom.c
580
tb_switch_drom_free(sw);
drivers/thunderbolt/eeprom.c
585
static int tb_drom_parse_v1(struct tb_switch *sw)
drivers/thunderbolt/eeprom.c
588
(const struct tb_drom_header *)sw->drom;
drivers/thunderbolt/eeprom.c
593
tb_sw_warn(sw,
drivers/thunderbolt/eeprom.c
598
if (!sw->uid)
drivers/thunderbolt/eeprom.c
599
sw->uid = header->uid;
drivers/thunderbolt/eeprom.c
600
sw->vendor = header->vendor_id;
drivers/thunderbolt/eeprom.c
601
sw->device = header->model_id;
drivers/thunderbolt/eeprom.c
603
crc = tb_crc32(sw->drom + TB_DROM_DATA_START, header->data_len);
drivers/thunderbolt/eeprom.c
605
tb_sw_warn(sw,
drivers/thunderbolt/eeprom.c
61
return tb_eeprom_ctl_write(sw, &ctl);
drivers/thunderbolt/eeprom.c
610
return tb_drom_parse_entries(sw, TB_DROM_HEADER_SIZE);
drivers/thunderbolt/eeprom.c
613
static int usb4_drom_parse(struct tb_switch *sw)
drivers/thunderbolt/eeprom.c
616
(const struct tb_drom_header *)sw->drom;
drivers/thunderbolt/eeprom.c
619
crc = tb_crc32(sw->drom + TB_DROM_DATA_START, header->data_len);
drivers/thunderbolt/eeprom.c
621
tb_sw_warn(sw,
drivers/thunderbolt/eeprom.c
626
return tb_drom_parse_entries(sw, USB4_DROM_HEADER_SIZE);
drivers/thunderbolt/eeprom.c
629
static int tb_drom_parse(struct tb_switch *sw, u16 size)
drivers/thunderbolt/eeprom.c
631
const struct tb_drom_header *header = (const void *)sw->drom;
drivers/thunderbolt/eeprom.c
635
tb_sw_warn(sw, "DROM size mismatch\n");
drivers/thunderbolt/eeprom.c
640
tb_sw_dbg(sw, "DROM version: %d\n", header->device_rom_revision);
drivers/thunderbolt/eeprom.c
644
ret = usb4_drom_parse(sw);
drivers/thunderbolt/eeprom.c
647
tb_sw_warn(sw, "DROM device_rom_revision %#x unknown\n",
drivers/thunderbolt/eeprom.c
651
ret = tb_drom_parse_v1(sw);
drivers/thunderbolt/eeprom.c
656
tb_sw_warn(sw, "parsing DROM failed\n");
drivers/thunderbolt/eeprom.c
663
tb_switch_drom_free(sw);
drivers/thunderbolt/eeprom.c
667
static int tb_drom_host_read(struct tb_switch *sw)
drivers/thunderbolt/eeprom.c
671
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/eeprom.c
672
usb4_switch_read_uid(sw, &sw->uid);
drivers/thunderbolt/eeprom.c
673
if (!usb4_copy_drom(sw, &size))
drivers/thunderbolt/eeprom.c
674
return tb_drom_parse(sw, size);
drivers/thunderbolt/eeprom.c
676
if (!tb_drom_copy_efi(sw, &size))
drivers/thunderbolt/eeprom.c
677
return tb_drom_parse(sw, size);
drivers/thunderbolt/eeprom.c
679
if (!tb_drom_copy_nvm(sw, &size))
drivers/thunderbolt/eeprom.c
680
return tb_drom_parse(sw, size);
drivers/thunderbolt/eeprom.c
682
tb_drom_read_uid_only(sw, &sw->uid);
drivers/thunderbolt/eeprom.c
688
static int tb_drom_device_read(struct tb_switch *sw)
drivers/thunderbolt/eeprom.c
693
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/eeprom.c
694
usb4_switch_read_uid(sw, &sw->uid);
drivers/thunderbolt/eeprom.c
695
ret = usb4_copy_drom(sw, &size);
drivers/thunderbolt/eeprom.c
697
ret = tb_drom_bit_bang(sw, &size);
drivers/thunderbolt/eeprom.c
703
return tb_drom_parse(sw, size);
drivers/thunderbolt/eeprom.c
71
static int tb_eeprom_transfer(struct tb_switch *sw, struct tb_eeprom_ctl *ctl,
drivers/thunderbolt/eeprom.c
716
int tb_drom_read(struct tb_switch *sw)
drivers/thunderbolt/eeprom.c
718
if (sw->drom)
drivers/thunderbolt/eeprom.c
721
if (!tb_route(sw))
drivers/thunderbolt/eeprom.c
722
return tb_drom_host_read(sw);
drivers/thunderbolt/eeprom.c
723
return tb_drom_device_read(sw);
drivers/thunderbolt/eeprom.c
76
res = tb_eeprom_ctl_write(sw, ctl);
drivers/thunderbolt/eeprom.c
81
res = tb_eeprom_ctl_write(sw, ctl);
drivers/thunderbolt/eeprom.c
85
res = tb_eeprom_ctl_read(sw, ctl);
drivers/thunderbolt/eeprom.c
90
return tb_eeprom_ctl_write(sw, ctl);
drivers/thunderbolt/eeprom.c
96
static int tb_eeprom_out(struct tb_switch *sw, u8 val)
drivers/thunderbolt/icm.c
1000
sw = tb_switch_find_by_route(tb, route);
drivers/thunderbolt/icm.c
1001
if (sw) {
drivers/thunderbolt/icm.c
1002
remove_switch(sw);
drivers/thunderbolt/icm.c
1003
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1006
sw = tb_switch_find_by_link_depth(tb, link, depth);
drivers/thunderbolt/icm.c
1007
if (!sw) {
drivers/thunderbolt/icm.c
1013
add_xdomain(sw, route, &pkg->local_uuid, &pkg->remote_uuid, link,
drivers/thunderbolt/icm.c
1015
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1072
static int icm_tr_approve_switch(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/icm.c
1079
memcpy(&request.ep_uuid, sw->uuid, sizeof(request.ep_uuid));
drivers/thunderbolt/icm.c
1081
request.route_lo = sw->config.route_lo;
drivers/thunderbolt/icm.c
1082
request.route_hi = sw->config.route_hi;
drivers/thunderbolt/icm.c
1083
request.connection_id = sw->connection_id;
drivers/thunderbolt/icm.c
1099
static int icm_tr_add_switch_key(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/icm.c
1106
memcpy(&request.ep_uuid, sw->uuid, sizeof(request.ep_uuid));
drivers/thunderbolt/icm.c
1108
request.route_lo = sw->config.route_lo;
drivers/thunderbolt/icm.c
1109
request.route_hi = sw->config.route_hi;
drivers/thunderbolt/icm.c
1110
request.connection_id = sw->connection_id;
drivers/thunderbolt/icm.c
1111
memcpy(request.key, sw->key, TB_SWITCH_KEY_SIZE);
drivers/thunderbolt/icm.c
1127
static int icm_tr_challenge_switch_key(struct tb *tb, struct tb_switch *sw,
drivers/thunderbolt/icm.c
1135
memcpy(&request.ep_uuid, sw->uuid, sizeof(request.ep_uuid));
drivers/thunderbolt/icm.c
1137
request.route_lo = sw->config.route_lo;
drivers/thunderbolt/icm.c
1138
request.route_hi = sw->config.route_hi;
drivers/thunderbolt/icm.c
1139
request.connection_id = sw->connection_id;
drivers/thunderbolt/icm.c
1247
struct tb_switch *sw, *parent_sw;
drivers/thunderbolt/icm.c
1275
sw = tb_switch_find_by_uuid(tb, &pkg->ep_uuid);
drivers/thunderbolt/icm.c
1276
if (sw) {
drivers/thunderbolt/icm.c
1278
if (tb_route(sw) == route && !!sw->authorized == authorized) {
drivers/thunderbolt/icm.c
1279
update_switch(sw, route, pkg->connection_id, 0, 0, 0,
drivers/thunderbolt/icm.c
1281
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1285
remove_switch(sw);
drivers/thunderbolt/icm.c
1286
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1290
sw = tb_switch_find_by_route(tb, route);
drivers/thunderbolt/icm.c
1291
if (sw) {
drivers/thunderbolt/icm.c
1292
remove_switch(sw);
drivers/thunderbolt/icm.c
1293
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1311
sw = alloc_switch(parent_sw, route, &pkg->ep_uuid);
drivers/thunderbolt/icm.c
1312
if (!IS_ERR(sw)) {
drivers/thunderbolt/icm.c
1313
sw->connection_id = pkg->connection_id;
drivers/thunderbolt/icm.c
1314
sw->authorized = authorized;
drivers/thunderbolt/icm.c
1315
sw->security_level = security_level;
drivers/thunderbolt/icm.c
1316
sw->boot = boot;
drivers/thunderbolt/icm.c
1317
sw->link_speed = speed_gen3 ? 20 : 10;
drivers/thunderbolt/icm.c
1318
sw->link_width = dual_lane ? TB_LINK_WIDTH_DUAL :
drivers/thunderbolt/icm.c
1320
sw->rpm = force_rtd3;
drivers/thunderbolt/icm.c
1321
if (!sw->rpm)
drivers/thunderbolt/icm.c
1322
sw->rpm = intel_vss_is_rtd3(pkg->ep_name,
drivers/thunderbolt/icm.c
1325
if (add_switch(parent_sw, sw))
drivers/thunderbolt/icm.c
1326
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1346
struct tb_switch *sw;
drivers/thunderbolt/icm.c
1351
sw = tb_switch_find_by_route(tb, route);
drivers/thunderbolt/icm.c
1352
if (!sw) {
drivers/thunderbolt/icm.c
1356
pm_runtime_get_sync(sw->dev.parent);
drivers/thunderbolt/icm.c
1358
remove_switch(sw);
drivers/thunderbolt/icm.c
1360
pm_runtime_mark_last_busy(sw->dev.parent);
drivers/thunderbolt/icm.c
1361
pm_runtime_put_autosuspend(sw->dev.parent);
drivers/thunderbolt/icm.c
1363
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1372
struct tb_switch *sw;
drivers/thunderbolt/icm.c
1404
sw = tb_switch_find_by_route(tb, route);
drivers/thunderbolt/icm.c
1405
if (sw) {
drivers/thunderbolt/icm.c
1406
remove_switch(sw);
drivers/thunderbolt/icm.c
1407
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1410
sw = tb_switch_find_by_route(tb, get_parent_route(route));
drivers/thunderbolt/icm.c
1411
if (!sw) {
drivers/thunderbolt/icm.c
1416
add_xdomain(sw, route, &pkg->local_uuid, &pkg->remote_uuid, 0, 0);
drivers/thunderbolt/icm.c
1417
tb_switch_put(sw);
drivers/thunderbolt/icm.c
2056
static void icm_unplug_children(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2060
if (tb_route(sw))
drivers/thunderbolt/icm.c
2061
sw->is_unplugged = true;
drivers/thunderbolt/icm.c
2063
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/icm.c
2067
icm_unplug_children(port->remote->sw);
drivers/thunderbolt/icm.c
2073
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/icm.c
2075
if (sw)
drivers/thunderbolt/icm.c
2076
complete(&sw->rpm_complete);
drivers/thunderbolt/icm.c
2080
static void remove_unplugged_switch(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2082
struct device *parent = get_device(sw->dev.parent);
drivers/thunderbolt/icm.c
2091
complete_rpm(&sw->dev, NULL);
drivers/thunderbolt/icm.c
2092
bus_for_each_dev(&tb_bus_type, &sw->dev, NULL, complete_rpm);
drivers/thunderbolt/icm.c
2093
tb_switch_remove(sw);
drivers/thunderbolt/icm.c
2101
static void icm_free_unplugged_children(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2105
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/icm.c
2110
if (port->remote->sw->is_unplugged) {
drivers/thunderbolt/icm.c
2111
remove_unplugged_switch(port->remote->sw);
drivers/thunderbolt/icm.c
2114
icm_free_unplugged_children(port->remote->sw);
drivers/thunderbolt/icm.c
2169
static int icm_runtime_suspend_switch(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2171
if (tb_route(sw))
drivers/thunderbolt/icm.c
2172
reinit_completion(&sw->rpm_complete);
drivers/thunderbolt/icm.c
2176
static int icm_runtime_resume_switch(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2178
if (tb_route(sw)) {
drivers/thunderbolt/icm.c
2179
if (!wait_for_completion_timeout(&sw->rpm_complete,
drivers/thunderbolt/icm.c
2181
dev_dbg(&sw->dev, "runtime resuming timed out\n");
drivers/thunderbolt/icm.c
2308
static int icm_usb4_switch_op(struct tb_switch *sw, u16 opcode, u32 *metadata,
drivers/thunderbolt/icm.c
2314
struct tb *tb = sw->tb;
drivers/thunderbolt/icm.c
2316
u64 route = tb_route(sw);
drivers/thunderbolt/icm.c
2370
static int icm_usb4_switch_nvm_authenticate_status(struct tb_switch *sw,
drivers/thunderbolt/icm.c
2374
struct tb *tb = sw->tb;
drivers/thunderbolt/icm.c
2384
if (auth && auth->reply.route_hi == sw->config.route_hi &&
drivers/thunderbolt/icm.c
2385
auth->reply.route_lo == sw->config.route_lo) {
drivers/thunderbolt/icm.c
2387
tb_route(sw), auth->reply.hdr.flags, auth->reply.status);
drivers/thunderbolt/icm.c
422
struct icm_fr_pkg_get_topology_response *switches, *sw;
drivers/thunderbolt/icm.c
439
sw = &switches[0];
drivers/thunderbolt/icm.c
440
index = icm_fr_get_switch_index(sw->ports[link]);
drivers/thunderbolt/icm.c
446
sw = &switches[index];
drivers/thunderbolt/icm.c
450
if (!(sw->first_data & ICM_SWITCH_USED)) {
drivers/thunderbolt/icm.c
455
for (j = 0; j < ARRAY_SIZE(sw->ports); j++) {
drivers/thunderbolt/icm.c
456
index = icm_fr_get_switch_index(sw->ports[j]);
drivers/thunderbolt/icm.c
457
if (index > sw->switch_index) {
drivers/thunderbolt/icm.c
458
sw = &switches[index];
drivers/thunderbolt/icm.c
464
*route = get_route(sw->route_hi, sw->route_lo);
drivers/thunderbolt/icm.c
498
static int icm_fr_approve_switch(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/icm.c
505
memcpy(&request.ep_uuid, sw->uuid, sizeof(request.ep_uuid));
drivers/thunderbolt/icm.c
507
request.connection_id = sw->connection_id;
drivers/thunderbolt/icm.c
508
request.connection_key = sw->connection_key;
drivers/thunderbolt/icm.c
525
static int icm_fr_add_switch_key(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/icm.c
532
memcpy(&request.ep_uuid, sw->uuid, sizeof(request.ep_uuid));
drivers/thunderbolt/icm.c
534
request.connection_id = sw->connection_id;
drivers/thunderbolt/icm.c
535
request.connection_key = sw->connection_key;
drivers/thunderbolt/icm.c
536
memcpy(request.key, sw->key, TB_SWITCH_KEY_SIZE);
drivers/thunderbolt/icm.c
552
static int icm_fr_challenge_switch_key(struct tb *tb, struct tb_switch *sw,
drivers/thunderbolt/icm.c
560
memcpy(&request.ep_uuid, sw->uuid, sizeof(request.ep_uuid));
drivers/thunderbolt/icm.c
562
request.connection_id = sw->connection_id;
drivers/thunderbolt/icm.c
563
request.connection_key = sw->connection_key;
drivers/thunderbolt/icm.c
643
struct tb_switch *sw;
drivers/thunderbolt/icm.c
645
sw = tb_switch_alloc(tb, &parent_sw->dev, route);
drivers/thunderbolt/icm.c
646
if (IS_ERR(sw)) {
drivers/thunderbolt/icm.c
648
return sw;
drivers/thunderbolt/icm.c
651
sw->uuid = kmemdup(uuid, sizeof(*uuid), GFP_KERNEL);
drivers/thunderbolt/icm.c
652
if (!sw->uuid) {
drivers/thunderbolt/icm.c
653
tb_switch_put(sw);
drivers/thunderbolt/icm.c
657
init_completion(&sw->rpm_complete);
drivers/thunderbolt/icm.c
658
return sw;
drivers/thunderbolt/icm.c
661
static int add_switch(struct tb_switch *parent_sw, struct tb_switch *sw)
drivers/thunderbolt/icm.c
663
u64 route = tb_route(sw);
drivers/thunderbolt/icm.c
667
tb_port_at(route, parent_sw)->remote = tb_upstream_port(sw);
drivers/thunderbolt/icm.c
668
tb_upstream_port(sw)->remote = tb_port_at(route, parent_sw);
drivers/thunderbolt/icm.c
670
ret = tb_switch_add(sw);
drivers/thunderbolt/icm.c
672
tb_port_at(tb_route(sw), parent_sw)->remote = NULL;
drivers/thunderbolt/icm.c
677
static void update_switch(struct tb_switch *sw, u64 route, u8 connection_id,
drivers/thunderbolt/icm.c
680
struct tb_switch *parent_sw = tb_switch_parent(sw);
drivers/thunderbolt/icm.c
683
tb_switch_downstream_port(sw)->remote = NULL;
drivers/thunderbolt/icm.c
685
tb_port_at(route, parent_sw)->remote = tb_upstream_port(sw);
drivers/thunderbolt/icm.c
688
sw->config.route_hi = upper_32_bits(route);
drivers/thunderbolt/icm.c
689
sw->config.route_lo = lower_32_bits(route);
drivers/thunderbolt/icm.c
690
sw->connection_id = connection_id;
drivers/thunderbolt/icm.c
691
sw->connection_key = connection_key;
drivers/thunderbolt/icm.c
692
sw->link = link;
drivers/thunderbolt/icm.c
693
sw->depth = depth;
drivers/thunderbolt/icm.c
694
sw->boot = boot;
drivers/thunderbolt/icm.c
697
sw->is_unplugged = false;
drivers/thunderbolt/icm.c
700
complete(&sw->rpm_complete);
drivers/thunderbolt/icm.c
703
static void remove_switch(struct tb_switch *sw)
drivers/thunderbolt/icm.c
705
tb_switch_downstream_port(sw)->remote = NULL;
drivers/thunderbolt/icm.c
706
tb_switch_remove(sw);
drivers/thunderbolt/icm.c
709
static void add_xdomain(struct tb_switch *sw, u64 route,
drivers/thunderbolt/icm.c
715
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/icm.c
717
xd = tb_xdomain_alloc(sw->tb, &sw->dev, route, local_uuid, remote_uuid);
drivers/thunderbolt/icm.c
724
tb_port_at(route, sw)->xdomain = xd;
drivers/thunderbolt/icm.c
729
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/icm.c
730
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/icm.c
742
struct tb_switch *sw;
drivers/thunderbolt/icm.c
744
sw = tb_to_switch(xd->dev.parent);
drivers/thunderbolt/icm.c
745
tb_port_at(xd->route, sw)->xdomain = NULL;
drivers/thunderbolt/icm.c
756
struct tb_switch *sw, *parent_sw;
drivers/thunderbolt/icm.c
783
sw = tb_switch_find_by_uuid(tb, &pkg->ep_uuid);
drivers/thunderbolt/icm.c
784
if (sw) {
drivers/thunderbolt/icm.c
787
sw_phy_port = tb_phy_port_from_link(sw->link);
drivers/thunderbolt/icm.c
798
if (sw->depth == depth && sw_phy_port == phy_port &&
drivers/thunderbolt/icm.c
799
!!sw->authorized == authorized) {
drivers/thunderbolt/icm.c
804
if (sw->link != link) {
drivers/thunderbolt/icm.c
809
tb_switch_put(sw);
drivers/thunderbolt/icm.c
813
route = tb_route(sw);
drivers/thunderbolt/icm.c
816
update_switch(sw, route, pkg->connection_id,
drivers/thunderbolt/icm.c
818
tb_switch_put(sw);
drivers/thunderbolt/icm.c
827
remove_switch(sw);
drivers/thunderbolt/icm.c
828
tb_switch_put(sw);
drivers/thunderbolt/icm.c
837
sw = tb_switch_find_by_link_depth(tb, link, depth);
drivers/thunderbolt/icm.c
838
if (!sw) {
drivers/thunderbolt/icm.c
843
sw = tb_switch_find_by_link_depth(tb, dual_link, depth);
drivers/thunderbolt/icm.c
845
if (sw) {
drivers/thunderbolt/icm.c
846
remove_switch(sw);
drivers/thunderbolt/icm.c
847
tb_switch_put(sw);
drivers/thunderbolt/icm.c
874
sw = alloc_switch(parent_sw, route, &pkg->ep_uuid);
drivers/thunderbolt/icm.c
875
if (!IS_ERR(sw)) {
drivers/thunderbolt/icm.c
876
sw->connection_id = pkg->connection_id;
drivers/thunderbolt/icm.c
877
sw->connection_key = pkg->connection_key;
drivers/thunderbolt/icm.c
878
sw->link = link;
drivers/thunderbolt/icm.c
879
sw->depth = depth;
drivers/thunderbolt/icm.c
880
sw->authorized = authorized;
drivers/thunderbolt/icm.c
881
sw->security_level = security_level;
drivers/thunderbolt/icm.c
882
sw->boot = boot;
drivers/thunderbolt/icm.c
883
sw->link_speed = speed_gen3 ? 20 : 10;
drivers/thunderbolt/icm.c
884
sw->link_width = dual_lane ? TB_LINK_WIDTH_DUAL :
drivers/thunderbolt/icm.c
886
sw->rpm = intel_vss_is_rtd3(pkg->ep_name, sizeof(pkg->ep_name));
drivers/thunderbolt/icm.c
888
if (add_switch(parent_sw, sw))
drivers/thunderbolt/icm.c
889
tb_switch_put(sw);
drivers/thunderbolt/icm.c
903
struct tb_switch *sw;
drivers/thunderbolt/icm.c
915
sw = tb_switch_find_by_link_depth(tb, link, depth);
drivers/thunderbolt/icm.c
916
if (!sw) {
drivers/thunderbolt/icm.c
922
pm_runtime_get_sync(sw->dev.parent);
drivers/thunderbolt/icm.c
924
remove_switch(sw);
drivers/thunderbolt/icm.c
926
pm_runtime_mark_last_busy(sw->dev.parent);
drivers/thunderbolt/icm.c
927
pm_runtime_put_autosuspend(sw->dev.parent);
drivers/thunderbolt/icm.c
929
tb_switch_put(sw);
drivers/thunderbolt/icm.c
938
struct tb_switch *sw;
drivers/thunderbolt/lc.c
103
if (sw->generation < 2)
drivers/thunderbolt/lc.c
110
ret = tb_sw_read(sw, &ctrl, TB_CFG_SWITCH, cap + TB_LC_SX_CTRL, 1);
drivers/thunderbolt/lc.c
130
return tb_sw_write(sw, &ctrl, TB_CFG_SWITCH, cap + TB_LC_SX_CTRL, 1);
drivers/thunderbolt/lc.c
161
struct tb_switch *sw = port->sw;
drivers/thunderbolt/lc.c
165
if (sw->generation < 2)
drivers/thunderbolt/lc.c
172
ret = tb_sw_read(sw, &ctrl, TB_CFG_SWITCH, cap + TB_LC_SX_CTRL, 1);
drivers/thunderbolt/lc.c
187
return tb_sw_write(sw, &ctrl, TB_CFG_SWITCH, cap + TB_LC_SX_CTRL, 1);
drivers/thunderbolt/lc.c
20
int tb_lc_read_uuid(struct tb_switch *sw, u32 *uuid)
drivers/thunderbolt/lc.c
22
if (!sw->cap_lc)
drivers/thunderbolt/lc.c
227
struct tb_switch *sw = port->sw;
drivers/thunderbolt/lc.c
231
if (!tb_route(sw))
drivers/thunderbolt/lc.c
234
if (sw->generation < 2)
drivers/thunderbolt/lc.c
24
return tb_sw_read(sw, uuid, TB_CFG_SWITCH, sw->cap_lc + TB_LC_FUSE, 4);
drivers/thunderbolt/lc.c
241
ret = tb_sw_read(sw, &ctrl, TB_CFG_SWITCH, cap + TB_LC_SX_CTRL, 1);
drivers/thunderbolt/lc.c
247
return tb_sw_write(sw, &ctrl, TB_CFG_SWITCH, cap + TB_LC_SX_CTRL, 1);
drivers/thunderbolt/lc.c
261
struct tb_switch *sw = port->sw;
drivers/thunderbolt/lc.c
269
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, cap + TB_LC_LINK_ATTR, 1);
drivers/thunderbolt/lc.c
27
static int read_lc_desc(struct tb_switch *sw, u32 *desc)
drivers/thunderbolt/lc.c
285
struct tb_switch *sw = port->sw;
drivers/thunderbolt/lc.c
289
if (sw->generation != 3)
drivers/thunderbolt/lc.c
29
if (!sw->cap_lc)
drivers/thunderbolt/lc.c
296
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, cap + TB_LC_CS_42, 1);
drivers/thunderbolt/lc.c
31
return tb_sw_read(sw, desc, TB_CFG_SWITCH, sw->cap_lc + TB_LC_DESC, 1);
drivers/thunderbolt/lc.c
312
struct tb_switch *sw = port->sw;
drivers/thunderbolt/lc.c
316
if (sw->generation != 3)
drivers/thunderbolt/lc.c
323
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, cap + TB_LC_LINK_REQ, 1);
drivers/thunderbolt/lc.c
332
struct tb_switch *sw = port->sw;
drivers/thunderbolt/lc.c
336
if (sw->generation != 3)
drivers/thunderbolt/lc.c
343
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, cap + TB_LC_LINK_REQ, 1);
drivers/thunderbolt/lc.c
352
return tb_sw_write(sw, &val, TB_CFG_SWITCH, cap + TB_LC_LINK_REQ, 1);
drivers/thunderbolt/lc.c
36
struct tb_switch *sw = port->sw;
drivers/thunderbolt/lc.c
389
static int tb_lc_set_wake_one(struct tb_switch *sw, unsigned int offset,
drivers/thunderbolt/lc.c
399
ret = tb_sw_read(sw, &ctrl, TB_CFG_SWITCH,
drivers/thunderbolt/lc.c
40
ret = read_lc_desc(sw, &desc);
drivers/thunderbolt/lc.c
416
return tb_sw_write(sw, &ctrl, TB_CFG_SWITCH, offset + TB_LC_SX_CTRL, 1);
drivers/thunderbolt/lc.c
428
int tb_lc_set_wake(struct tb_switch *sw, unsigned int flags)
drivers/thunderbolt/lc.c
433
if (sw->generation < 2)
drivers/thunderbolt/lc.c
436
if (!tb_route(sw))
drivers/thunderbolt/lc.c
439
ret = read_lc_desc(sw, &desc);
drivers/thunderbolt/lc.c
450
unsigned int offset = sw->cap_lc + start + i * size;
drivers/thunderbolt/lc.c
452
ret = tb_lc_set_wake_one(sw, offset, flags);
drivers/thunderbolt/lc.c
469
int tb_lc_set_sleep(struct tb_switch *sw)
drivers/thunderbolt/lc.c
474
if (sw->generation < 2)
drivers/thunderbolt/lc.c
477
ret = read_lc_desc(sw, &desc);
drivers/thunderbolt/lc.c
488
unsigned int offset = sw->cap_lc + start + i * size;
drivers/thunderbolt/lc.c
49
return sw->cap_lc + start + phys * size;
drivers/thunderbolt/lc.c
491
ret = tb_sw_read(sw, &ctrl, TB_CFG_SWITCH,
drivers/thunderbolt/lc.c
497
ret = tb_sw_write(sw, &ctrl, TB_CFG_SWITCH,
drivers/thunderbolt/lc.c
515
bool tb_lc_lane_bonding_possible(struct tb_switch *sw)
drivers/thunderbolt/lc.c
521
if (sw->generation < 2)
drivers/thunderbolt/lc.c
524
up = tb_upstream_port(sw);
drivers/thunderbolt/lc.c
529
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, cap + TB_LC_PORT_ATTR, 1);
drivers/thunderbolt/lc.c
536
static int tb_lc_dp_sink_from_port(const struct tb_switch *sw,
drivers/thunderbolt/lc.c
542
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/lc.c
550
static int tb_lc_dp_sink_available(struct tb_switch *sw, int sink)
drivers/thunderbolt/lc.c
555
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/lc.c
556
sw->cap_lc + TB_LC_SNK_ALLOCATION, 1);
drivers/thunderbolt/lc.c
588
bool tb_lc_dp_sink_query(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/lc.c
596
if (sw->generation < 3)
drivers/thunderbolt/lc.c
599
sink = tb_lc_dp_sink_from_port(sw, in);
drivers/thunderbolt/lc.c
603
return !tb_lc_dp_sink_available(sw, sink);
drivers/thunderbolt/lc.c
618
int tb_lc_dp_sink_alloc(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/lc.c
623
if (sw->generation < 3)
drivers/thunderbolt/lc.c
626
sink = tb_lc_dp_sink_from_port(sw, in);
drivers/thunderbolt/lc.c
630
ret = tb_lc_dp_sink_available(sw, sink);
drivers/thunderbolt/lc.c
634
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/lc.c
635
sw->cap_lc + TB_LC_SNK_ALLOCATION, 1);
drivers/thunderbolt/lc.c
64
struct tb_switch *sw = port->sw;
drivers/thunderbolt/lc.c
648
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/lc.c
649
sw->cap_lc + TB_LC_SNK_ALLOCATION, 1);
drivers/thunderbolt/lc.c
667
int tb_lc_dp_sink_dealloc(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/lc.c
672
if (sw->generation < 3)
drivers/thunderbolt/lc.c
675
sink = tb_lc_dp_sink_from_port(sw, in);
drivers/thunderbolt/lc.c
68
if (sw->generation < 2)
drivers/thunderbolt/lc.c
680
ret = tb_lc_dp_sink_available(sw, sink);
drivers/thunderbolt/lc.c
684
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/lc.c
685
sw->cap_lc + TB_LC_SNK_ALLOCATION, 1);
drivers/thunderbolt/lc.c
694
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/lc.c
695
sw->cap_lc + TB_LC_SNK_ALLOCATION, 1);
drivers/thunderbolt/lc.c
712
int tb_lc_force_power(struct tb_switch *sw)
drivers/thunderbolt/lc.c
716
return tb_sw_write(sw, &in, TB_CFG_SWITCH, TB_LC_POWER, 1);
drivers/thunderbolt/lc.c
75
ret = tb_sw_read(sw, &mode, TB_CFG_SWITCH, cap + TB_LC_PORT_MODE, 1);
drivers/thunderbolt/lc.c
81
ret = tb_sw_write(sw, &mode, TB_CFG_SWITCH, cap + TB_LC_PORT_MODE, 1);
drivers/thunderbolt/lc.c
87
ret = tb_sw_read(sw, &mode, TB_CFG_SWITCH, cap + TB_LC_PORT_MODE, 1);
drivers/thunderbolt/lc.c
93
return tb_sw_write(sw, &mode, TB_CFG_SWITCH, cap + TB_LC_PORT_MODE, 1);
drivers/thunderbolt/lc.c
99
struct tb_switch *sw = port->sw;
drivers/thunderbolt/nvm.c
118
if (sw->safe_mode)
drivers/thunderbolt/nvm.c
126
if (device_id != sw->config.device_id)
drivers/thunderbolt/nvm.c
138
struct tb_switch *sw = tb_to_switch(nvm->dev);
drivers/thunderbolt/nvm.c
140
if (sw->generation < 3) {
drivers/thunderbolt/nvm.c
144
ret = dma_port_flash_write(sw->dma_port,
drivers/thunderbolt/nvm.c
162
struct tb_switch *sw = tb_to_switch(nvm->dev);
drivers/thunderbolt/nvm.c
166
ret = tb_switch_nvm_read(sw, ASMEDIA_NVM_VERSION, &val, sizeof(val));
drivers/thunderbolt/nvm.c
174
ret = tb_switch_nvm_read(sw, ASMEDIA_NVM_DATE, &val, sizeof(val));
drivers/thunderbolt/nvm.c
296
const struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/nvm.c
301
if (v->vendor == sw->config.vendor_id) {
drivers/thunderbolt/nvm.c
308
tb_sw_dbg(sw, "router NVM format of vendor %#x unknown\n",
drivers/thunderbolt/nvm.c
309
sw->config.vendor_id);
drivers/thunderbolt/nvm.c
58
struct tb_switch *sw = tb_to_switch(nvm->dev);
drivers/thunderbolt/nvm.c
67
if (sw->safe_mode)
drivers/thunderbolt/nvm.c
70
ret = tb_switch_nvm_read(sw, INTEL_NVM_FLASH_SIZE, &val, sizeof(val));
drivers/thunderbolt/nvm.c
74
hdr_size = sw->generation < 3 ? SZ_8K : SZ_16K;
drivers/thunderbolt/nvm.c
78
ret = tb_switch_nvm_read(sw, INTEL_NVM_VERSION, &val, sizeof(val));
drivers/thunderbolt/nvm.c
91
struct tb_switch *sw = tb_to_switch(nvm->dev);
drivers/thunderbolt/path.c
109
struct tb_switch *sw;
drivers/thunderbolt/path.c
132
sw = p->sw;
drivers/thunderbolt/path.c
144
out_port = &sw->ports[hop.out_port];
drivers/thunderbolt/path.c
160
path->tb = src->sw->tb;
drivers/thunderbolt/path.c
165
path->name, tb_route(src->sw), src->port);
drivers/thunderbolt/path.c
173
sw = p->sw;
drivers/thunderbolt/path.c
184
out_port = &sw->ports[hop.out_port];
drivers/thunderbolt/path.c
39
struct tb_switch *sw;
drivers/thunderbolt/path.c
416
!tb_switch_is_usb4(port->sw)) {
drivers/thunderbolt/path.c
46
sw = port->sw;
drivers/thunderbolt/path.c
474
path->name, tb_route(path->hops[0].in_port->sw),
drivers/thunderbolt/path.c
476
tb_route(path->hops[path->path_length - 1].out_port->sw),
drivers/thunderbolt/path.c
503
path->name, tb_route(path->hops[0].in_port->sw),
drivers/thunderbolt/path.c
505
tb_route(path->hops[path->path_length - 1].out_port->sw),
drivers/thunderbolt/path.c
565
!tb_switch_is_usb4(path->hops[i].in_port->sw)) {
drivers/thunderbolt/path.c
57
out_port = &sw->ports[hop.out_port];
drivers/thunderbolt/path.c
602
if (path->hops[i].in_port->sw->is_unplugged)
drivers/thunderbolt/path.c
604
if (path->hops[i].out_port->sw->is_unplugged)
drivers/thunderbolt/quirks.c
10
static void quirk_force_power_link(struct tb_switch *sw)
drivers/thunderbolt/quirks.c
12
sw->quirks |= QUIRK_FORCE_POWER_LINK_CONTROLLER;
drivers/thunderbolt/quirks.c
125
void tb_check_quirks(struct tb_switch *sw)
drivers/thunderbolt/quirks.c
13
tb_sw_dbg(sw, "forcing power to link controller\n");
drivers/thunderbolt/quirks.c
132
if (q->hw_vendor_id && q->hw_vendor_id != sw->config.vendor_id)
drivers/thunderbolt/quirks.c
134
if (q->hw_device_id && q->hw_device_id != sw->config.device_id)
drivers/thunderbolt/quirks.c
136
if (q->vendor && q->vendor != sw->vendor)
drivers/thunderbolt/quirks.c
138
if (q->device && q->device != sw->device)
drivers/thunderbolt/quirks.c
141
tb_sw_dbg(sw, "running %ps\n", q->hook);
drivers/thunderbolt/quirks.c
142
q->hook(sw);
drivers/thunderbolt/quirks.c
16
static void quirk_dp_credit_allocation(struct tb_switch *sw)
drivers/thunderbolt/quirks.c
18
if (sw->credit_allocation && sw->min_dp_main_credits == 56) {
drivers/thunderbolt/quirks.c
19
sw->min_dp_main_credits = 18;
drivers/thunderbolt/quirks.c
20
tb_sw_dbg(sw, "quirked DP main: %u\n", sw->min_dp_main_credits);
drivers/thunderbolt/quirks.c
24
static void quirk_clx_disable(struct tb_switch *sw)
drivers/thunderbolt/quirks.c
26
if (tb_switch_is_titan_ridge(sw) && sw->nvm && sw->nvm->major >= 0x65)
drivers/thunderbolt/quirks.c
29
sw->quirks |= QUIRK_NO_CLX;
drivers/thunderbolt/quirks.c
30
tb_sw_dbg(sw, "disabling CL states\n");
drivers/thunderbolt/quirks.c
33
static void quirk_usb3_maximum_bandwidth(struct tb_switch *sw)
drivers/thunderbolt/quirks.c
37
if (tb_switch_is_icm(sw))
drivers/thunderbolt/quirks.c
40
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/quirks.c
49
static void quirk_block_rpm_in_redrive(struct tb_switch *sw)
drivers/thunderbolt/quirks.c
51
sw->quirks |= QUIRK_KEEP_POWER_IN_DP_REDRIVE;
drivers/thunderbolt/quirks.c
52
tb_sw_dbg(sw, "preventing runtime PM in DP redrive mode\n");
drivers/thunderbolt/quirks.c
60
void (*hook)(struct tb_switch *sw);
drivers/thunderbolt/retimer.c
422
rt->tb = port->sw->tb;
drivers/thunderbolt/retimer.c
434
dev_set_name(&rt->dev, "%s:%u.%u", dev_name(&port->sw->dev),
drivers/thunderbolt/switch.c
105
ret = tb_nvm_validate(sw->nvm);
drivers/thunderbolt/switch.c
109
ret = tb_nvm_write_headers(sw->nvm);
drivers/thunderbolt/switch.c
113
buf = sw->nvm->buf_data_start;
drivers/thunderbolt/switch.c
114
image_size = sw->nvm->buf_data_size;
drivers/thunderbolt/switch.c
116
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
117
ret = usb4_switch_nvm_write(sw, 0, buf, image_size);
drivers/thunderbolt/switch.c
119
ret = dma_port_flash_write(sw->dma_port, 0, buf, image_size);
drivers/thunderbolt/switch.c
123
sw->nvm->flushed = true;
drivers/thunderbolt/switch.c
127
static int nvm_authenticate_host_dma_port(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1286
if (tb_switch_is_usb4(port->sw))
drivers/thunderbolt/switch.c
136
if (!sw->safe_mode) {
drivers/thunderbolt/switch.c
139
ret = tb_domain_disconnect_all_paths(sw->tb);
drivers/thunderbolt/switch.c
146
ret = dma_port_flash_update_auth(sw->dma_port);
drivers/thunderbolt/switch.c
1477
if (tb_switch_is_usb4(port->sw))
drivers/thunderbolt/switch.c
154
tb_sw_warn(sw, "failed to authenticate NVM, power cycling\n");
drivers/thunderbolt/switch.c
1547
static const char *tb_switch_generation_name(const struct tb_switch *sw)
drivers/thunderbolt/switch.c
1549
switch (sw->generation) {
drivers/thunderbolt/switch.c
155
if (dma_port_flash_update_auth_status(sw->dma_port, &status) > 0)
drivers/thunderbolt/switch.c
156
nvm_set_auth_status(sw, status);
drivers/thunderbolt/switch.c
1563
static void tb_dump_switch(const struct tb *tb, const struct tb_switch *sw)
drivers/thunderbolt/switch.c
1565
const struct tb_regs_switch_header *regs = &sw->config;
drivers/thunderbolt/switch.c
1568
tb_switch_generation_name(sw), regs->vendor_id, regs->device_id,
drivers/thunderbolt/switch.c
1581
static int tb_switch_reset_host(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1583
if (sw->generation > 1) {
drivers/thunderbolt/switch.c
1586
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
1605
if (tb_switch_is_usb4(sw) && !port->usb4)
drivers/thunderbolt/switch.c
163
dma_port_power_cycle(sw->dma_port);
drivers/thunderbolt/switch.c
1632
res.err = tb_sw_write(sw, ((u32 *) &sw->config) + 2,
drivers/thunderbolt/switch.c
1636
res = tb_cfg_reset(sw->tb->ctl, tb_route(sw));
drivers/thunderbolt/switch.c
1646
static int tb_switch_reset_device(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1648
return tb_port_reset(tb_switch_downstream_port(sw));
drivers/thunderbolt/switch.c
1651
static bool tb_switch_enumerated(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1661
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_3, 1);
drivers/thunderbolt/switch.c
167
static int nvm_authenticate_device_dma_port(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1682
int tb_switch_reset(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1691
if (!tb_switch_enumerated(sw))
drivers/thunderbolt/switch.c
1694
tb_sw_dbg(sw, "resetting\n");
drivers/thunderbolt/switch.c
1696
if (tb_route(sw))
drivers/thunderbolt/switch.c
1697
ret = tb_switch_reset_device(sw);
drivers/thunderbolt/switch.c
1699
ret = tb_switch_reset_host(sw);
drivers/thunderbolt/switch.c
1702
tb_sw_warn(sw, "failed to reset\n");
drivers/thunderbolt/switch.c
171
ret = dma_port_flash_update_auth(sw->dma_port);
drivers/thunderbolt/switch.c
1723
int tb_switch_wait_for_bit(struct tb_switch *sw, u32 offset, u32 bit,
drivers/thunderbolt/switch.c
1732
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/switch.c
1750
static int tb_plug_events_active(struct tb_switch *sw, bool active)
drivers/thunderbolt/switch.c
1755
if (tb_switch_is_icm(sw) || tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
1758
res = tb_sw_read(sw, &data, TB_CFG_SWITCH, sw->cap_plug_events + 1, 1);
drivers/thunderbolt/switch.c
1764
switch (sw->config.device_id) {
drivers/thunderbolt/switch.c
1775
if (!tb_switch_is_alpine_ridge(sw))
drivers/thunderbolt/switch.c
1781
return tb_sw_write(sw, &data, TB_CFG_SWITCH,
drivers/thunderbolt/switch.c
1782
sw->cap_plug_events + 1, 1);
drivers/thunderbolt/switch.c
1789
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1791
return sysfs_emit(buf, "%u\n", sw->authorized);
drivers/thunderbolt/switch.c
1797
struct tb_switch *sw;
drivers/thunderbolt/switch.c
1799
sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1800
if (sw && sw->authorized) {
drivers/thunderbolt/switch.c
1804
ret = device_for_each_child_reverse(&sw->dev, NULL, disapprove_switch);
drivers/thunderbolt/switch.c
1808
ret = tb_domain_disapprove_switch(sw->tb, sw);
drivers/thunderbolt/switch.c
1812
sw->authorized = 0;
drivers/thunderbolt/switch.c
1813
kobject_uevent_env(&sw->dev.kobj, KOBJ_CHANGE, envp);
drivers/thunderbolt/switch.c
1819
static int tb_switch_set_authorized(struct tb_switch *sw, unsigned int val)
drivers/thunderbolt/switch.c
1825
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
1828
if (!!sw->authorized == !!val)
drivers/thunderbolt/switch.c
1834
if (tb_route(sw)) {
drivers/thunderbolt/switch.c
1835
ret = disapprove_switch(&sw->dev, NULL);
drivers/thunderbolt/switch.c
1842
if (sw->key)
drivers/thunderbolt/switch.c
1843
ret = tb_domain_approve_switch_key(sw->tb, sw);
drivers/thunderbolt/switch.c
1845
ret = tb_domain_approve_switch(sw->tb, sw);
drivers/thunderbolt/switch.c
1850
if (sw->key)
drivers/thunderbolt/switch.c
1851
ret = tb_domain_challenge_switch_key(sw->tb, sw);
drivers/thunderbolt/switch.c
1859
sw->authorized = val;
drivers/thunderbolt/switch.c
1864
sprintf(envp_string, "AUTHORIZED=%u", sw->authorized);
drivers/thunderbolt/switch.c
1865
kobject_uevent_env(&sw->dev.kobj, KOBJ_CHANGE, envp);
drivers/thunderbolt/switch.c
1869
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
1877
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1887
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/switch.c
1888
ret = tb_switch_set_authorized(sw, val);
drivers/thunderbolt/switch.c
1889
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/switch.c
1890
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
1899
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1901
return sysfs_emit(buf, "%u\n", sw->boot);
drivers/thunderbolt/switch.c
1908
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1910
return sysfs_emit(buf, "%#x\n", sw->device);
drivers/thunderbolt/switch.c
1917
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1919
return sysfs_emit(buf, "%s\n", sw->device_name ?: "");
drivers/thunderbolt/switch.c
192
ret = dma_port_flash_update_auth_status(sw->dma_port, &status);
drivers/thunderbolt/switch.c
1926
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1928
return sysfs_emit(buf, "%u\n", sw->generation);
drivers/thunderbolt/switch.c
1935
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1938
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
1941
if (sw->key)
drivers/thunderbolt/switch.c
1942
ret = sysfs_emit(buf, "%*phN\n", TB_SWITCH_KEY_SIZE, sw->key);
drivers/thunderbolt/switch.c
1946
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
1953
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1963
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
1966
if (sw->authorized) {
drivers/thunderbolt/switch.c
1969
kfree(sw->key);
drivers/thunderbolt/switch.c
197
tb_sw_warn(sw, "failed to authenticate NVM\n");
drivers/thunderbolt/switch.c
1971
sw->key = NULL;
drivers/thunderbolt/switch.c
1973
sw->key = kmemdup(key, sizeof(key), GFP_KERNEL);
drivers/thunderbolt/switch.c
1974
if (!sw->key)
drivers/thunderbolt/switch.c
1979
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
198
nvm_set_auth_status(sw, status);
drivers/thunderbolt/switch.c
1987
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1989
return sysfs_emit(buf, "%u.0 Gb/s\n", sw->link_speed);
drivers/thunderbolt/switch.c
2002
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2005
switch (sw->link_width) {
drivers/thunderbolt/switch.c
201
tb_sw_info(sw, "power cycling the switch now\n");
drivers/thunderbolt/switch.c
202
dma_port_power_cycle(sw->dma_port);
drivers/thunderbolt/switch.c
2028
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2031
switch (sw->link_width) {
drivers/thunderbolt/switch.c
2054
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2057
nvm_get_auth_status(sw, &status);
drivers/thunderbolt/switch.c
2064
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2067
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/switch.c
2069
if (!mutex_trylock(&sw->tb->lock)) {
drivers/thunderbolt/switch.c
2074
if (sw->no_nvm_upgrade) {
drivers/thunderbolt/switch.c
2080
if (!sw->nvm) {
drivers/thunderbolt/switch.c
2090
nvm_clear_auth_status(sw);
drivers/thunderbolt/switch.c
2097
ret = nvm_authenticate(sw, true);
drivers/thunderbolt/switch.c
2099
if (!sw->nvm->flushed) {
drivers/thunderbolt/switch.c
2100
if (!sw->nvm->buf) {
drivers/thunderbolt/switch.c
2105
ret = nvm_validate_and_write(sw);
drivers/thunderbolt/switch.c
2111
ret = tb_lc_force_power(sw);
drivers/thunderbolt/switch.c
2113
ret = nvm_authenticate(sw, false);
drivers/thunderbolt/switch.c
2119
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
212
static inline bool nvm_readable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2121
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/switch.c
2122
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
214
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
2156
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2159
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
2162
if (sw->safe_mode)
drivers/thunderbolt/switch.c
2164
else if (!sw->nvm)
drivers/thunderbolt/switch.c
2167
ret = sysfs_emit(buf, "%x.%x\n", sw->nvm->major, sw->nvm->minor);
drivers/thunderbolt/switch.c
2169
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
2178
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2180
return sysfs_emit(buf, "%#x\n", sw->vendor);
drivers/thunderbolt/switch.c
2187
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2189
return sysfs_emit(buf, "%s\n", sw->vendor_name ?: "");
drivers/thunderbolt/switch.c
2196
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2198
return sysfs_emit(buf, "%pUb\n", sw->uuid);
drivers/thunderbolt/switch.c
221
return usb4_switch_nvm_sector_size(sw) > 0;
drivers/thunderbolt/switch.c
2226
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2229
if (sw->tb->security_level == TB_SECURITY_NOPCIE ||
drivers/thunderbolt/switch.c
2230
sw->tb->security_level == TB_SECURITY_DPONLY)
drivers/thunderbolt/switch.c
2233
if (!sw->device)
drivers/thunderbolt/switch.c
2236
if (!sw->device_name)
drivers/thunderbolt/switch.c
2239
if (!sw->vendor)
drivers/thunderbolt/switch.c
2242
if (!sw->vendor_name)
drivers/thunderbolt/switch.c
2245
if (tb_route(sw) &&
drivers/thunderbolt/switch.c
2246
sw->tb->security_level == TB_SECURITY_SECURE &&
drivers/thunderbolt/switch.c
2247
sw->security_level == TB_SECURITY_SECURE)
drivers/thunderbolt/switch.c
225
return !!sw->dma_port;
drivers/thunderbolt/switch.c
2254
if (tb_route(sw))
drivers/thunderbolt/switch.c
2258
if (nvm_upgradeable(sw))
drivers/thunderbolt/switch.c
2262
if (nvm_readable(sw))
drivers/thunderbolt/switch.c
2266
if (tb_route(sw))
drivers/thunderbolt/switch.c
2270
if (sw->quirks & QUIRK_FORCE_POWER_LINK_CONTROLLER)
drivers/thunderbolt/switch.c
2275
return sw->safe_mode ? 0 : attr->mode;
drivers/thunderbolt/switch.c
228
static inline bool nvm_upgradeable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2290
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2293
dma_port_free(sw->dma_port);
drivers/thunderbolt/switch.c
2295
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
230
if (sw->no_nvm_upgrade)
drivers/thunderbolt/switch.c
2300
kfree(sw->uuid);
drivers/thunderbolt/switch.c
2301
kfree(sw->device_name);
drivers/thunderbolt/switch.c
2302
kfree(sw->vendor_name);
drivers/thunderbolt/switch.c
2303
kfree(sw->ports);
drivers/thunderbolt/switch.c
2304
kfree(sw->drom);
drivers/thunderbolt/switch.c
2305
kfree(sw->key);
drivers/thunderbolt/switch.c
2306
kfree(sw);
drivers/thunderbolt/switch.c
2311
const struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2314
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
2316
usb4_switch_version(sw)))
drivers/thunderbolt/switch.c
232
return nvm_readable(sw);
drivers/thunderbolt/switch.c
2320
if (!tb_route(sw)) {
drivers/thunderbolt/switch.c
2327
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
2349
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
235
static int nvm_authenticate(struct tb_switch *sw, bool auth_only)
drivers/thunderbolt/switch.c
2350
const struct tb_cm_ops *cm_ops = sw->tb->cm_ops;
drivers/thunderbolt/switch.c
2353
return cm_ops->runtime_suspend_switch(sw);
drivers/thunderbolt/switch.c
2360
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2361
const struct tb_cm_ops *cm_ops = sw->tb->cm_ops;
drivers/thunderbolt/switch.c
2364
return cm_ops->runtime_resume_switch(sw);
drivers/thunderbolt/switch.c
237
struct tb_nhi *nhi = sw->tb->nhi;
drivers/thunderbolt/switch.c
2380
static int tb_switch_get_generation(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2382
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
2385
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/switch.c
2386
switch (sw->config.device_id) {
drivers/thunderbolt/switch.c
240
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
242
ret = usb4_switch_nvm_set_offset(sw, 0);
drivers/thunderbolt/switch.c
2420
tb_sw_warn(sw, "unsupported switch device id %#x\n",
drivers/thunderbolt/switch.c
2421
sw->config.device_id);
drivers/thunderbolt/switch.c
2425
static bool tb_switch_exceeds_max_depth(const struct tb_switch *sw, int depth)
drivers/thunderbolt/switch.c
2429
if (tb_switch_is_usb4(sw) ||
drivers/thunderbolt/switch.c
2430
(sw->tb->root_switch && tb_switch_is_usb4(sw->tb->root_switch)))
drivers/thunderbolt/switch.c
2454
struct tb_switch *sw;
drivers/thunderbolt/switch.c
246
sw->nvm->authenticating = true;
drivers/thunderbolt/switch.c
247
return usb4_switch_nvm_authenticate(sw);
drivers/thunderbolt/switch.c
2473
sw = kzalloc_obj(*sw);
drivers/thunderbolt/switch.c
2474
if (!sw)
drivers/thunderbolt/switch.c
2477
sw->tb = tb;
drivers/thunderbolt/switch.c
2478
ret = tb_cfg_read(tb->ctl, &sw->config, route, 0, TB_CFG_SWITCH, 0, 5);
drivers/thunderbolt/switch.c
2482
sw->generation = tb_switch_get_generation(sw);
drivers/thunderbolt/switch.c
2485
tb_dump_switch(tb, sw);
drivers/thunderbolt/switch.c
2488
sw->config.upstream_port_number = upstream_port;
drivers/thunderbolt/switch.c
2489
sw->config.depth = depth;
drivers/thunderbolt/switch.c
2490
sw->config.route_hi = upper_32_bits(route);
drivers/thunderbolt/switch.c
2491
sw->config.route_lo = lower_32_bits(route);
drivers/thunderbolt/switch.c
2492
sw->config.enabled = 0;
drivers/thunderbolt/switch.c
2495
if (tb_switch_exceeds_max_depth(sw, depth)) {
drivers/thunderbolt/switch.c
2501
sw->ports = kzalloc_objs(*sw->ports, sw->config.max_port_number + 1);
drivers/thunderbolt/switch.c
2502
if (!sw->ports) {
drivers/thunderbolt/switch.c
2507
for (i = 0; i <= sw->config.max_port_number; i++) {
drivers/thunderbolt/switch.c
2509
sw->ports[i].sw = sw;
drivers/thunderbolt/switch.c
2510
sw->ports[i].port = i;
drivers/thunderbolt/switch.c
2514
ida_init(&sw->ports[i].in_hopids);
drivers/thunderbolt/switch.c
2515
ida_init(&sw->ports[i].out_hopids);
drivers/thunderbolt/switch.c
2519
ret = tb_switch_find_vse_cap(sw, TB_VSE_CAP_PLUG_EVENTS);
drivers/thunderbolt/switch.c
252
sw->nvm->authenticating = true;
drivers/thunderbolt/switch.c
2521
sw->cap_plug_events = ret;
drivers/thunderbolt/switch.c
2523
ret = tb_switch_find_vse_cap(sw, TB_VSE_CAP_TIME2);
drivers/thunderbolt/switch.c
2525
sw->cap_vsec_tmu = ret;
drivers/thunderbolt/switch.c
2527
ret = tb_switch_find_vse_cap(sw, TB_VSE_CAP_LINK_CONTROLLER);
drivers/thunderbolt/switch.c
2529
sw->cap_lc = ret;
drivers/thunderbolt/switch.c
253
if (!tb_route(sw)) {
drivers/thunderbolt/switch.c
2531
ret = tb_switch_find_vse_cap(sw, TB_VSE_CAP_CP_LP);
drivers/thunderbolt/switch.c
2533
sw->cap_lp = ret;
drivers/thunderbolt/switch.c
2537
sw->authorized = true;
drivers/thunderbolt/switch.c
2539
device_initialize(&sw->dev);
drivers/thunderbolt/switch.c
2540
sw->dev.parent = parent;
drivers/thunderbolt/switch.c
2541
sw->dev.bus = &tb_bus_type;
drivers/thunderbolt/switch.c
2542
sw->dev.type = &tb_switch_type;
drivers/thunderbolt/switch.c
2543
sw->dev.groups = switch_groups;
drivers/thunderbolt/switch.c
2544
dev_set_name(&sw->dev, "%u-%llx", tb->index, tb_route(sw));
drivers/thunderbolt/switch.c
2546
return sw;
drivers/thunderbolt/switch.c
2549
kfree(sw->ports);
drivers/thunderbolt/switch.c
2550
kfree(sw);
drivers/thunderbolt/switch.c
256
ret = nvm_authenticate_host_dma_port(sw);
drivers/thunderbolt/switch.c
2572
struct tb_switch *sw;
drivers/thunderbolt/switch.c
2574
sw = kzalloc_obj(*sw);
drivers/thunderbolt/switch.c
2575
if (!sw)
drivers/thunderbolt/switch.c
2578
sw->tb = tb;
drivers/thunderbolt/switch.c
2579
sw->config.depth = tb_route_length(route);
drivers/thunderbolt/switch.c
258
ret = nvm_authenticate_device_dma_port(sw);
drivers/thunderbolt/switch.c
2580
sw->config.route_hi = upper_32_bits(route);
drivers/thunderbolt/switch.c
2581
sw->config.route_lo = lower_32_bits(route);
drivers/thunderbolt/switch.c
2582
sw->safe_mode = true;
drivers/thunderbolt/switch.c
2584
device_initialize(&sw->dev);
drivers/thunderbolt/switch.c
2585
sw->dev.parent = parent;
drivers/thunderbolt/switch.c
2586
sw->dev.bus = &tb_bus_type;
drivers/thunderbolt/switch.c
2587
sw->dev.type = &tb_switch_type;
drivers/thunderbolt/switch.c
2588
sw->dev.groups = switch_groups;
drivers/thunderbolt/switch.c
2589
dev_set_name(&sw->dev, "%u-%llx", tb->index, tb_route(sw));
drivers/thunderbolt/switch.c
2591
return sw;
drivers/thunderbolt/switch.c
2605
int tb_switch_configure(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2607
struct tb *tb = sw->tb;
drivers/thunderbolt/switch.c
2611
route = tb_route(sw);
drivers/thunderbolt/switch.c
2614
sw->config.enabled ? "restoring" : "initializing", route,
drivers/thunderbolt/switch.c
2615
tb_route_length(route), sw->config.upstream_port_number);
drivers/thunderbolt/switch.c
2617
sw->config.enabled = 1;
drivers/thunderbolt/switch.c
2620
sw->config.plug_events_delay = 0xff;
drivers/thunderbolt/switch.c
2621
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
2628
if (usb4_switch_version(sw) < 2)
drivers/thunderbolt/switch.c
2629
sw->config.cmuv = ROUTER_CS_4_CMUV_V1;
drivers/thunderbolt/switch.c
2631
sw->config.cmuv = ROUTER_CS_4_CMUV_V2;
drivers/thunderbolt/switch.c
2634
ret = tb_sw_write(sw, (u32 *)&sw->config + 1, TB_CFG_SWITCH,
drivers/thunderbolt/switch.c
2639
ret = usb4_switch_setup(sw);
drivers/thunderbolt/switch.c
2641
if (sw->config.vendor_id != PCI_VENDOR_ID_INTEL)
drivers/thunderbolt/switch.c
2642
tb_sw_warn(sw, "unknown switch vendor id %#x\n",
drivers/thunderbolt/switch.c
2643
sw->config.vendor_id);
drivers/thunderbolt/switch.c
2645
if (!sw->cap_plug_events) {
drivers/thunderbolt/switch.c
2646
tb_sw_warn(sw, "cannot find TB_VSE_CAP_PLUG_EVENTS aborting\n");
drivers/thunderbolt/switch.c
2651
ret = tb_sw_write(sw, (u32 *)&sw->config + 1, TB_CFG_SWITCH,
drivers/thunderbolt/switch.c
2657
return tb_plug_events_active(sw, true);
drivers/thunderbolt/switch.c
2669
int tb_switch_configuration_valid(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2671
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
2672
return usb4_switch_configuration_valid(sw);
drivers/thunderbolt/switch.c
2676
static int tb_switch_set_uuid(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2682
if (sw->uuid)
drivers/thunderbolt/switch.c
2685
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
2686
ret = usb4_switch_read_uid(sw, &sw->uid);
drivers/thunderbolt/switch.c
2695
ret = tb_lc_read_uuid(sw, uuid);
drivers/thunderbolt/switch.c
2710
uuid[0] = sw->uid & 0xffffffff;
drivers/thunderbolt/switch.c
2711
uuid[1] = (sw->uid >> 32) & 0xffffffff;
drivers/thunderbolt/switch.c
2716
sw->uuid = kmemdup(uuid, sizeof(uuid), GFP_KERNEL);
drivers/thunderbolt/switch.c
2717
if (!sw->uuid)
drivers/thunderbolt/switch.c
2722
static int tb_switch_add_dma_port(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2724
struct tb_nhi *nhi = sw->tb->nhi;
drivers/thunderbolt/switch.c
2728
switch (sw->generation) {
drivers/thunderbolt/switch.c
2731
if (tb_route(sw))
drivers/thunderbolt/switch.c
2737
ret = tb_switch_set_uuid(sw);
drivers/thunderbolt/switch.c
2747
if (!sw->safe_mode)
drivers/thunderbolt/switch.c
2752
if (sw->no_nvm_upgrade)
drivers/thunderbolt/switch.c
2755
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
2756
ret = usb4_switch_nvm_authenticate_status(sw, &status);
drivers/thunderbolt/switch.c
276
int tb_switch_nvm_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/switch.c
2761
tb_sw_info(sw, "switch flash authentication failed\n");
drivers/thunderbolt/switch.c
2762
nvm_set_auth_status(sw, status);
drivers/thunderbolt/switch.c
2769
if (!tb_route(sw) && !tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
2772
sw->dma_port = dma_port_alloc(sw);
drivers/thunderbolt/switch.c
2773
if (!sw->dma_port)
drivers/thunderbolt/switch.c
2782
nvm_get_auth_status(sw, &status);
drivers/thunderbolt/switch.c
2784
if (!tb_route(sw)) {
drivers/thunderbolt/switch.c
279
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
2796
ret = dma_port_flash_update_auth_status(sw->dma_port, &status);
drivers/thunderbolt/switch.c
280
return usb4_switch_nvm_read(sw, address, buf, size);
drivers/thunderbolt/switch.c
2801
if (!tb_route(sw)) {
drivers/thunderbolt/switch.c
2807
tb_sw_info(sw, "switch flash authentication failed\n");
drivers/thunderbolt/switch.c
2808
nvm_set_auth_status(sw, status);
drivers/thunderbolt/switch.c
281
return dma_port_flash_read(sw->dma_port, address, buf, size);
drivers/thunderbolt/switch.c
2811
tb_sw_info(sw, "power cycling the switch now\n");
drivers/thunderbolt/switch.c
2812
dma_port_power_cycle(sw->dma_port);
drivers/thunderbolt/switch.c
2821
static void tb_switch_default_link_ports(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2825
for (i = 1; i <= sw->config.max_port_number; i++) {
drivers/thunderbolt/switch.c
2826
struct tb_port *port = &sw->ports[i];
drivers/thunderbolt/switch.c
2833
if (i == sw->config.max_port_number ||
drivers/thunderbolt/switch.c
2834
!tb_port_is_null(&sw->ports[i + 1]))
drivers/thunderbolt/switch.c
2838
subordinate = &sw->ports[i + 1];
drivers/thunderbolt/switch.c
2845
tb_sw_dbg(sw, "linked ports %d <-> %d\n",
drivers/thunderbolt/switch.c
2851
static bool tb_switch_lane_bonding_possible(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2853
const struct tb_port *up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
2858
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
2859
return usb4_switch_lane_bonding_possible(sw);
drivers/thunderbolt/switch.c
2860
return tb_lc_lane_bonding_possible(sw);
drivers/thunderbolt/switch.c
2863
static int tb_switch_update_link_attributes(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2869
if (!tb_route(sw) || tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
287
struct tb_switch *sw = tb_to_switch(nvm->dev);
drivers/thunderbolt/switch.c
2872
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
2877
if (sw->link_speed != ret)
drivers/thunderbolt/switch.c
2879
sw->link_speed = ret;
drivers/thunderbolt/switch.c
2884
if (sw->link_width != ret)
drivers/thunderbolt/switch.c
2886
sw->link_width = ret;
drivers/thunderbolt/switch.c
2889
if (device_is_registered(&sw->dev) && change)
drivers/thunderbolt/switch.c
2890
kobject_uevent(&sw->dev.kobj, KOBJ_CHANGE);
drivers/thunderbolt/switch.c
2896
static void tb_switch_link_init(struct tb_switch *sw)
drivers/thunderbolt/switch.c
290
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/switch.c
2901
if (!tb_route(sw) || tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
2904
tb_sw_dbg(sw, "current link speed %u.0 Gb/s\n", sw->link_speed);
drivers/thunderbolt/switch.c
2905
tb_sw_dbg(sw, "current link width %s\n", tb_width_name(sw->link_width));
drivers/thunderbolt/switch.c
2907
bonded = sw->link_width >= TB_LINK_WIDTH_DUAL;
drivers/thunderbolt/switch.c
2913
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
2914
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
292
if (!mutex_trylock(&sw->tb->lock)) {
drivers/thunderbolt/switch.c
2935
sw->preferred_link_width = sw->link_width;
drivers/thunderbolt/switch.c
2936
tb_sw_dbg(sw, "preferred link width %s\n",
drivers/thunderbolt/switch.c
2937
tb_width_name(sw->preferred_link_width));
drivers/thunderbolt/switch.c
2950
static int tb_switch_lane_bonding_enable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2956
if (!tb_switch_lane_bonding_possible(sw))
drivers/thunderbolt/switch.c
2959
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
2960
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
297
ret = tb_switch_nvm_read(sw, offset, val, bytes);
drivers/thunderbolt/switch.c
298
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
3002
static int tb_switch_lane_bonding_disable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3007
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
301
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/switch.c
302
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
3022
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
3034
static int tb_switch_asym_enable(struct tb_switch *sw, enum tb_link_width width)
drivers/thunderbolt/switch.c
3040
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3041
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
3063
if (sw->link_width != width) {
drivers/thunderbolt/switch.c
3077
static int tb_switch_asym_disable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3082
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3083
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
3098
if (sw->link_width > TB_LINK_WIDTH_DUAL) {
drivers/thunderbolt/switch.c
3099
if (sw->link_width == TB_LINK_WIDTH_ASYM_TX)
drivers/thunderbolt/switch.c
310
struct tb_switch *sw = tb_to_switch(nvm->dev);
drivers/thunderbolt/switch.c
3127
int tb_switch_set_link_width(struct tb_switch *sw, enum tb_link_width width)
drivers/thunderbolt/switch.c
313
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
3132
if (!tb_route(sw))
drivers/thunderbolt/switch.c
3135
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3136
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
3140
ret = tb_switch_lane_bonding_disable(sw);
drivers/thunderbolt/switch.c
3144
if (sw->link_width == TB_LINK_WIDTH_ASYM_TX ||
drivers/thunderbolt/switch.c
3145
sw->link_width == TB_LINK_WIDTH_ASYM_RX) {
drivers/thunderbolt/switch.c
3146
ret = tb_switch_asym_disable(sw);
drivers/thunderbolt/switch.c
3150
ret = tb_switch_lane_bonding_enable(sw);
drivers/thunderbolt/switch.c
3155
ret = tb_switch_asym_enable(sw, width);
drivers/thunderbolt/switch.c
3164
tb_sw_warn(sw, "timeout changing link width\n");
drivers/thunderbolt/switch.c
3173
tb_sw_dbg(sw, "failed to change link width: %d\n", ret);
drivers/thunderbolt/switch.c
3180
tb_switch_update_link_attributes(sw);
drivers/thunderbolt/switch.c
3182
tb_sw_dbg(sw, "link width set to %s\n", tb_width_name(width));
drivers/thunderbolt/switch.c
3198
int tb_switch_configure_link(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3203
if (!tb_route(sw) || tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
3206
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3207
if (tb_switch_is_usb4(up->sw))
drivers/thunderbolt/switch.c
3215
if (tb_switch_is_usb4(down->sw))
drivers/thunderbolt/switch.c
3227
void tb_switch_unconfigure_link(struct tb_switch *sw)
drivers/thunderbolt/switch.c
323
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
3231
if (!tb_route(sw) || tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
3239
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3241
if (tb_switch_is_usb4(down->sw))
drivers/thunderbolt/switch.c
3246
if (sw->is_unplugged)
drivers/thunderbolt/switch.c
3249
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3250
if (tb_switch_is_usb4(up->sw))
drivers/thunderbolt/switch.c
3256
static void tb_switch_credits_init(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3258
if (tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
3260
if (!tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3262
if (usb4_switch_credits_init(sw))
drivers/thunderbolt/switch.c
3263
tb_sw_info(sw, "failed to determine preferred buffer allocation, using defaults\n");
drivers/thunderbolt/switch.c
3266
static int tb_switch_port_hotplug_enable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3270
if (tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
3273
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
328
static int tb_switch_nvm_init(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3298
int tb_switch_add(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3309
ret = tb_switch_add_dma_port(sw);
drivers/thunderbolt/switch.c
3311
dev_err(&sw->dev, "failed to add DMA port\n");
drivers/thunderbolt/switch.c
3315
ret = tb_switch_nvm_init(sw);
drivers/thunderbolt/switch.c
3319
if (!sw->safe_mode) {
drivers/thunderbolt/switch.c
3320
tb_switch_credits_init(sw);
drivers/thunderbolt/switch.c
3323
ret = tb_drom_read(sw);
drivers/thunderbolt/switch.c
3325
dev_warn(&sw->dev, "reading DROM failed: %d\n", ret);
drivers/thunderbolt/switch.c
3326
tb_sw_dbg(sw, "uid: %#llx\n", sw->uid);
drivers/thunderbolt/switch.c
3328
ret = tb_switch_set_uuid(sw);
drivers/thunderbolt/switch.c
333
if (!nvm_readable(sw))
drivers/thunderbolt/switch.c
3330
dev_err(&sw->dev, "failed to set UUID\n");
drivers/thunderbolt/switch.c
3334
for (i = 0; i <= sw->config.max_port_number; i++) {
drivers/thunderbolt/switch.c
3335
if (sw->ports[i].disabled) {
drivers/thunderbolt/switch.c
3336
tb_port_dbg(&sw->ports[i], "disabled by eeprom\n");
drivers/thunderbolt/switch.c
3339
ret = tb_init_port(&sw->ports[i]);
drivers/thunderbolt/switch.c
3341
dev_err(&sw->dev, "failed to initialize port %d\n", i);
drivers/thunderbolt/switch.c
3346
tb_check_quirks(sw);
drivers/thunderbolt/switch.c
3348
tb_switch_default_link_ports(sw);
drivers/thunderbolt/switch.c
3350
ret = tb_switch_update_link_attributes(sw);
drivers/thunderbolt/switch.c
3354
tb_switch_link_init(sw);
drivers/thunderbolt/switch.c
3356
ret = tb_switch_clx_init(sw);
drivers/thunderbolt/switch.c
336
nvm = tb_nvm_alloc(&sw->dev);
drivers/thunderbolt/switch.c
3360
ret = tb_switch_tmu_init(sw);
drivers/thunderbolt/switch.c
3365
ret = tb_switch_port_hotplug_enable(sw);
drivers/thunderbolt/switch.c
3369
ret = device_add(&sw->dev);
drivers/thunderbolt/switch.c
3371
dev_err(&sw->dev, "failed to add device: %d\n", ret);
drivers/thunderbolt/switch.c
3375
if (tb_route(sw)) {
drivers/thunderbolt/switch.c
3376
dev_info(&sw->dev, "new device found, vendor=%#x device=%#x\n",
drivers/thunderbolt/switch.c
3377
sw->vendor, sw->device);
drivers/thunderbolt/switch.c
3378
if (sw->vendor_name && sw->device_name)
drivers/thunderbolt/switch.c
3379
dev_info(&sw->dev, "%s %s\n", sw->vendor_name,
drivers/thunderbolt/switch.c
3380
sw->device_name);
drivers/thunderbolt/switch.c
3383
ret = usb4_switch_add_ports(sw);
drivers/thunderbolt/switch.c
3385
dev_err(&sw->dev, "failed to add USB4 ports\n");
drivers/thunderbolt/switch.c
3389
ret = tb_switch_nvm_add(sw);
drivers/thunderbolt/switch.c
3391
dev_err(&sw->dev, "failed to add NVM devices\n");
drivers/thunderbolt/switch.c
3400
device_init_wakeup(&sw->dev, true);
drivers/thunderbolt/switch.c
3402
pm_runtime_set_active(&sw->dev);
drivers/thunderbolt/switch.c
3403
if (sw->rpm) {
drivers/thunderbolt/switch.c
3404
pm_runtime_set_autosuspend_delay(&sw->dev, TB_AUTOSUSPEND_DELAY);
drivers/thunderbolt/switch.c
3405
pm_runtime_use_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
3406
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/switch.c
3407
pm_runtime_enable(&sw->dev);
drivers/thunderbolt/switch.c
3408
pm_request_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
3411
tb_switch_debugfs_init(sw);
drivers/thunderbolt/switch.c
3415
usb4_switch_remove_ports(sw);
drivers/thunderbolt/switch.c
3417
device_del(&sw->dev);
drivers/thunderbolt/switch.c
3430
void tb_switch_remove(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3434
tb_switch_debugfs_remove(sw);
drivers/thunderbolt/switch.c
3436
if (sw->rpm) {
drivers/thunderbolt/switch.c
3437
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/switch.c
3438
pm_runtime_disable(&sw->dev);
drivers/thunderbolt/switch.c
3442
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3444
tb_switch_remove(port->remote->sw);
drivers/thunderbolt/switch.c
3456
if (!sw->is_unplugged)
drivers/thunderbolt/switch.c
3457
tb_plug_events_active(sw, false);
drivers/thunderbolt/switch.c
3459
tb_switch_nvm_remove(sw);
drivers/thunderbolt/switch.c
346
sw->nvm = nvm;
drivers/thunderbolt/switch.c
3460
usb4_switch_remove_ports(sw);
drivers/thunderbolt/switch.c
3462
if (tb_route(sw))
drivers/thunderbolt/switch.c
3463
dev_info(&sw->dev, "device disconnected\n");
drivers/thunderbolt/switch.c
3464
device_unregister(&sw->dev);
drivers/thunderbolt/switch.c
3471
void tb_sw_set_unplugged(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3475
if (sw == sw->tb->root_switch) {
drivers/thunderbolt/switch.c
3476
tb_sw_WARN(sw, "cannot unplug root switch\n");
drivers/thunderbolt/switch.c
3479
if (sw->is_unplugged) {
drivers/thunderbolt/switch.c
3480
tb_sw_WARN(sw, "is_unplugged already set\n");
drivers/thunderbolt/switch.c
3483
sw->is_unplugged = true;
drivers/thunderbolt/switch.c
3484
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3486
tb_sw_set_unplugged(port->remote->sw);
drivers/thunderbolt/switch.c
3492
static int tb_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime)
drivers/thunderbolt/switch.c
3495
tb_sw_dbg(sw, "enabling wakeup: %#x\n", flags);
drivers/thunderbolt/switch.c
3497
tb_sw_dbg(sw, "disabling wakeup\n");
drivers/thunderbolt/switch.c
3499
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
350
tb_sw_dbg(sw, "NVM upgrade disabled\n");
drivers/thunderbolt/switch.c
3500
return usb4_switch_set_wake(sw, flags, runtime);
drivers/thunderbolt/switch.c
3501
return tb_lc_set_wake(sw, flags);
drivers/thunderbolt/switch.c
3504
static void tb_switch_check_wakes(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3506
if (device_may_wakeup(&sw->dev)) {
drivers/thunderbolt/switch.c
3507
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3508
usb4_switch_check_wakes(sw);
drivers/thunderbolt/switch.c
351
sw->no_nvm_upgrade = true;
drivers/thunderbolt/switch.c
3525
int tb_switch_resume(struct tb_switch *sw, bool runtime)
drivers/thunderbolt/switch.c
3530
tb_sw_dbg(sw, "resuming switch\n");
drivers/thunderbolt/switch.c
3536
if (tb_route(sw)) {
drivers/thunderbolt/switch.c
3544
err = tb_cfg_get_upstream_port(sw->tb->ctl, tb_route(sw));
drivers/thunderbolt/switch.c
3546
tb_sw_info(sw, "switch not present anymore\n");
drivers/thunderbolt/switch.c
3551
if (!sw->uid)
drivers/thunderbolt/switch.c
3554
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3555
err = usb4_switch_read_uid(sw, &uid);
drivers/thunderbolt/switch.c
3557
err = tb_drom_read_uid_only(sw, &uid);
drivers/thunderbolt/switch.c
3559
tb_sw_warn(sw, "uid read failed\n");
drivers/thunderbolt/switch.c
3562
if (sw->uid != uid) {
drivers/thunderbolt/switch.c
3563
tb_sw_info(sw,
drivers/thunderbolt/switch.c
3565
sw->uid, uid);
drivers/thunderbolt/switch.c
3570
err = tb_switch_configure(sw);
drivers/thunderbolt/switch.c
3575
tb_switch_check_wakes(sw);
drivers/thunderbolt/switch.c
3578
tb_switch_set_wake(sw, 0, true);
drivers/thunderbolt/switch.c
358
static int tb_switch_nvm_add(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3580
err = tb_switch_tmu_init(sw);
drivers/thunderbolt/switch.c
3585
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3596
tb_sw_set_unplugged(port->remote->sw);
drivers/thunderbolt/switch.c
360
struct tb_nvm *nvm = sw->nvm;
drivers/thunderbolt/switch.c
3607
tb_switch_resume(port->remote->sw, runtime)) {
drivers/thunderbolt/switch.c
3610
tb_sw_set_unplugged(port->remote->sw);
drivers/thunderbolt/switch.c
3618
err = tb_cfg_get_upstream_port(sw->tb->ctl,
drivers/thunderbolt/switch.c
3641
void tb_switch_suspend(struct tb_switch *sw, bool runtime)
drivers/thunderbolt/switch.c
3647
tb_sw_dbg(sw, "suspending switch\n");
drivers/thunderbolt/switch.c
3653
tb_switch_clx_disable(sw);
drivers/thunderbolt/switch.c
3655
err = tb_plug_events_active(sw, false);
drivers/thunderbolt/switch.c
3659
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3661
tb_switch_suspend(port->remote->sw, runtime);
drivers/thunderbolt/switch.c
3669
} else if (device_may_wakeup(&sw->dev)) {
drivers/thunderbolt/switch.c
3674
tb_switch_set_wake(sw, flags, runtime);
drivers/thunderbolt/switch.c
3676
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3677
usb4_switch_set_sleep(sw);
drivers/thunderbolt/switch.c
3679
tb_lc_set_sleep(sw);
drivers/thunderbolt/switch.c
3692
bool tb_switch_query_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/switch.c
3694
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3695
return usb4_switch_query_dp_resource(sw, in);
drivers/thunderbolt/switch.c
3696
return tb_lc_dp_sink_query(sw, in);
drivers/thunderbolt/switch.c
3709
int tb_switch_alloc_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/switch.c
371
if (!sw->safe_mode) {
drivers/thunderbolt/switch.c
3713
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3714
ret = usb4_switch_alloc_dp_resource(sw, in);
drivers/thunderbolt/switch.c
3716
ret = tb_lc_dp_sink_alloc(sw, in);
drivers/thunderbolt/switch.c
3719
tb_sw_warn(sw, "failed to allocate DP resource for port %d\n",
drivers/thunderbolt/switch.c
3722
tb_sw_dbg(sw, "allocated DP resource for port %d\n", in->port);
drivers/thunderbolt/switch.c
3735
void tb_switch_dealloc_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/switch.c
3739
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3740
ret = usb4_switch_dealloc_dp_resource(sw, in);
drivers/thunderbolt/switch.c
3742
ret = tb_lc_dp_sink_dealloc(sw, in);
drivers/thunderbolt/switch.c
3745
tb_sw_warn(sw, "failed to de-allocate DP resource for port %d\n",
drivers/thunderbolt/switch.c
3748
tb_sw_dbg(sw, "released DP resource for port %d\n", in->port);
drivers/thunderbolt/switch.c
375
tb_sw_dbg(sw, "NVM version %x.%x\n", nvm->major, nvm->minor);
drivers/thunderbolt/switch.c
3761
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
3764
if (!sw)
drivers/thunderbolt/switch.c
3766
if (sw->tb != lookup->tb)
drivers/thunderbolt/switch.c
3770
return !memcmp(sw->uuid, lookup->uuid, sizeof(*lookup->uuid));
drivers/thunderbolt/switch.c
3773
return sw->config.route_lo == lower_32_bits(lookup->route) &&
drivers/thunderbolt/switch.c
3774
sw->config.route_hi == upper_32_bits(lookup->route);
drivers/thunderbolt/switch.c
3779
return !sw->depth;
drivers/thunderbolt/switch.c
378
if (!sw->no_nvm_upgrade) {
drivers/thunderbolt/switch.c
3781
return sw->link == lookup->link && sw->depth == lookup->depth;
drivers/thunderbolt/switch.c
38
static struct nvm_auth_status *__nvm_get_auth_status(const struct tb_switch *sw)
drivers/thunderbolt/switch.c
387
tb_sw_dbg(sw, "NVM upgrade disabled\n");
drivers/thunderbolt/switch.c
3874
struct tb_port *tb_switch_find_port(struct tb_switch *sw,
drivers/thunderbolt/switch.c
3879
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
388
sw->no_nvm_upgrade = true;
drivers/thunderbolt/switch.c
3891
static int tb_switch_pcie_bridge_write(struct tb_switch *sw, unsigned int bridge,
drivers/thunderbolt/switch.c
3897
if (sw->generation != 3)
drivers/thunderbolt/switch.c
3900
offset = sw->cap_plug_events + TB_PLUG_EVENTS_PCIE_WR_DATA;
drivers/thunderbolt/switch.c
3901
ret = tb_sw_write(sw, &value, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/switch.c
3912
offset = sw->cap_plug_events + TB_PLUG_EVENTS_PCIE_CMD;
drivers/thunderbolt/switch.c
3914
ret = tb_sw_write(sw, &command, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/switch.c
3918
ret = tb_switch_wait_for_bit(sw, offset,
drivers/thunderbolt/switch.c
3923
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/switch.c
394
static void tb_switch_nvm_remove(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3944
int tb_switch_pcie_l1_enable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3946
struct tb_switch *parent = tb_switch_parent(sw);
drivers/thunderbolt/switch.c
3949
if (!tb_route(sw))
drivers/thunderbolt/switch.c
3952
if (!tb_switch_is_titan_ridge(sw))
drivers/thunderbolt/switch.c
3960
ret = tb_switch_pcie_bridge_write(sw, 5, 0x143, 0x0c7806b1);
drivers/thunderbolt/switch.c
3965
return tb_switch_pcie_bridge_write(sw, 0, 0x143, 0x0c5806b1);
drivers/thunderbolt/switch.c
398
nvm = sw->nvm;
drivers/thunderbolt/switch.c
3980
int tb_switch_xhci_connect(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3985
if (sw->generation != 3)
drivers/thunderbolt/switch.c
3988
port1 = &sw->ports[1];
drivers/thunderbolt/switch.c
3989
port3 = &sw->ports[3];
drivers/thunderbolt/switch.c
399
sw->nvm = NULL;
drivers/thunderbolt/switch.c
3991
if (tb_switch_is_alpine_ridge(sw)) {
drivers/thunderbolt/switch.c
4007
} else if (tb_switch_is_titan_ridge(sw)) {
drivers/thunderbolt/switch.c
4024
void tb_switch_xhci_disconnect(struct tb_switch *sw)
drivers/thunderbolt/switch.c
4026
if (sw->generation == 3) {
drivers/thunderbolt/switch.c
4027
struct tb_port *port1 = &sw->ports[1];
drivers/thunderbolt/switch.c
4028
struct tb_port *port3 = &sw->ports[3];
drivers/thunderbolt/switch.c
406
nvm_clear_auth_status(sw);
drivers/thunderbolt/switch.c
43
if (uuid_equal(&st->uuid, sw->uuid))
drivers/thunderbolt/switch.c
50
static void nvm_get_auth_status(const struct tb_switch *sw, u32 *status)
drivers/thunderbolt/switch.c
55
st = __nvm_get_auth_status(sw);
drivers/thunderbolt/switch.c
571
if (credits == 0 || port->sw->is_unplugged)
drivers/thunderbolt/switch.c
578
if (tb_switch_is_usb4(port->sw) && !tb_port_is_null(port))
drivers/thunderbolt/switch.c
61
static void nvm_set_auth_status(const struct tb_switch *sw, u32 status)
drivers/thunderbolt/switch.c
622
if (tb_switch_is_icm(port->sw))
drivers/thunderbolt/switch.c
626
if (tb_switch_is_usb4(port->sw))
drivers/thunderbolt/switch.c
65
if (WARN_ON(!sw->uuid))
drivers/thunderbolt/switch.c
687
if (tb_switch_is_usb4(port->sw))
drivers/thunderbolt/switch.c
69
st = __nvm_get_auth_status(sw);
drivers/thunderbolt/switch.c
714
tb_dbg(port->sw->tb, " Port %d: not implemented\n",
drivers/thunderbolt/switch.c
759
tb_dump_port(port->sw->tb, port);
drivers/thunderbolt/switch.c
76
memcpy(&st->uuid, sw->uuid, sizeof(st->uuid));
drivers/thunderbolt/switch.c
839
const struct tb_switch *sw)
drivers/thunderbolt/switch.c
842
return (tb_route(parent) & mask) == (tb_route(sw) & mask);
drivers/thunderbolt/switch.c
86
static void nvm_clear_auth_status(const struct tb_switch *sw)
drivers/thunderbolt/switch.c
868
if (prev->sw == end->sw) {
drivers/thunderbolt/switch.c
874
if (tb_switch_is_reachable(prev->sw, end->sw)) {
drivers/thunderbolt/switch.c
875
next = tb_port_at(tb_route(end->sw), prev->sw);
drivers/thunderbolt/switch.c
884
next = tb_upstream_port(prev->sw);
drivers/thunderbolt/switch.c
91
st = __nvm_get_auth_status(sw);
drivers/thunderbolt/switch.c
99
static int nvm_validate_and_write(struct tb_switch *sw)
drivers/thunderbolt/tb.c
1005
if (tb_route(sw)) {
drivers/thunderbolt/tb.c
1006
ret = tb_tunnel_usb3(sw->tb, sw);
drivers/thunderbolt/tb.c
1011
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
1014
ret = tb_create_usb3_tunnels(port->remote->sw);
drivers/thunderbolt/tb.c
1044
struct tb_switch *sw;
drivers/thunderbolt/tb.c
1054
sw = dst_port->sw;
drivers/thunderbolt/tb.c
1056
sw = src_port->sw;
drivers/thunderbolt/tb.c
1059
struct tb_port *down = tb_switch_downstream_port(up->sw);
drivers/thunderbolt/tb.c
1097
if (up->sw->link_width == width_up)
drivers/thunderbolt/tb.c
111
static void tb_add_dp_resources(struct tb_switch *sw)
drivers/thunderbolt/tb.c
1110
clx = tb_disable_clx(sw);
drivers/thunderbolt/tb.c
1114
tb_sw_dbg(up->sw, "configuring asymmetric link\n");
drivers/thunderbolt/tb.c
1120
ret = tb_switch_set_link_width(up->sw, width_up);
drivers/thunderbolt/tb.c
1122
tb_sw_warn(up->sw, "failed to set link width\n");
drivers/thunderbolt/tb.c
1129
tb_enable_clx(sw);
drivers/thunderbolt/tb.c
113
struct tb_cm *tcm = tb_priv(sw->tb);
drivers/thunderbolt/tb.c
1151
struct tb_switch *sw;
drivers/thunderbolt/tb.c
116
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
1161
sw = dst_port->sw;
drivers/thunderbolt/tb.c
1163
sw = src_port->sw;
drivers/thunderbolt/tb.c
1169
if (up->sw->link_width <= TB_LINK_WIDTH_DUAL)
drivers/thunderbolt/tb.c
1172
if (up->sw->is_unplugged)
drivers/thunderbolt/tb.c
1194
if (up->sw->link_width == TB_LINK_WIDTH_DUAL)
drivers/thunderbolt/tb.c
120
if (!tb_switch_query_dp_resource(sw, port))
drivers/thunderbolt/tb.c
1205
up->sw->preferred_link_width > TB_LINK_WIDTH_DUAL) {
drivers/thunderbolt/tb.c
1206
tb_sw_dbg(up->sw, "keeping preferred asymmetric link\n");
drivers/thunderbolt/tb.c
1212
clx = tb_disable_clx(sw);
drivers/thunderbolt/tb.c
1216
tb_sw_dbg(up->sw, "configuring symmetric link\n");
drivers/thunderbolt/tb.c
1218
ret = tb_switch_set_link_width(up->sw, TB_LINK_WIDTH_DUAL);
drivers/thunderbolt/tb.c
1220
tb_sw_warn(up->sw, "failed to set link width\n");
drivers/thunderbolt/tb.c
1227
tb_enable_clx(sw);
drivers/thunderbolt/tb.c
1233
struct tb_switch *sw)
drivers/thunderbolt/tb.c
1235
struct tb *tb = sw->tb;
drivers/thunderbolt/tb.c
1249
if (sw->link_width < TB_LINK_WIDTH_DUAL)
drivers/thunderbolt/tb.c
1250
tb_switch_set_link_width(sw, TB_LINK_WIDTH_DUAL);
drivers/thunderbolt/tb.c
1257
if (tb_switch_depth(sw) > 1 &&
drivers/thunderbolt/tb.c
1259
up->sw->link_width == TB_LINK_WIDTH_DUAL) {
drivers/thunderbolt/tb.c
1262
host_port = tb_port_at(tb_route(sw), tb->root_switch);
drivers/thunderbolt/tb.c
1267
tb_switch_configure_link(sw);
drivers/thunderbolt/tb.c
1273
static void tb_scan_switch(struct tb_switch *sw)
drivers/thunderbolt/tb.c
1277
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/tb.c
1279
tb_switch_for_each_port(sw, port)
drivers/thunderbolt/tb.c
1282
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/tb.c
1283
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/tb.c
129
if (tb_route(sw))
drivers/thunderbolt/tb.c
1291
struct tb_cm *tcm = tb_priv(port->sw->tb);
drivers/thunderbolt/tb.c
1294
struct tb_switch *sw;
drivers/thunderbolt/tb.c
1302
tb_queue_hotplug(port->sw->tb, tb_route(port->sw), port->port,
drivers/thunderbolt/tb.c
1325
sw = tb_switch_alloc(port->sw->tb, &port->sw->dev,
drivers/thunderbolt/tb.c
1327
if (IS_ERR(sw)) {
drivers/thunderbolt/tb.c
1339
if (PTR_ERR(sw) == -EIO || PTR_ERR(sw) == -EADDRNOTAVAIL)
drivers/thunderbolt/tb.c
1344
if (tb_switch_configure(sw)) {
drivers/thunderbolt/tb.c
1345
tb_switch_put(sw);
drivers/thunderbolt/tb.c
1365
dev_set_uevent_suppress(&sw->dev, true);
drivers/thunderbolt/tb.c
1373
sw->rpm = sw->generation > 1;
drivers/thunderbolt/tb.c
1375
if (tb_switch_add(sw)) {
drivers/thunderbolt/tb.c
1376
tb_switch_put(sw);
drivers/thunderbolt/tb.c
138
static void tb_remove_dp_resources(struct tb_switch *sw)
drivers/thunderbolt/tb.c
1380
upstream_port = tb_upstream_port(sw);
drivers/thunderbolt/tb.c
1381
tb_configure_link(port, upstream_port, sw);
drivers/thunderbolt/tb.c
1396
tb_sw_dbg(sw, "discovery, not touching CL states\n");
drivers/thunderbolt/tb.c
1397
else if (tb_enable_clx(sw))
drivers/thunderbolt/tb.c
1398
tb_sw_warn(sw, "failed to enable CL states\n");
drivers/thunderbolt/tb.c
140
struct tb_cm *tcm = tb_priv(sw->tb);
drivers/thunderbolt/tb.c
1400
if (tb_enable_tmu(sw))
drivers/thunderbolt/tb.c
1401
tb_sw_warn(sw, "failed to enable TMU\n");
drivers/thunderbolt/tb.c
1407
tb_switch_configuration_valid(sw);
drivers/thunderbolt/tb.c
1418
if (tcm->hotplug_active && tb_tunnel_usb3(sw->tb, sw))
drivers/thunderbolt/tb.c
1419
tb_sw_warn(sw, "USB3 tunnel creation failed\n");
drivers/thunderbolt/tb.c
1421
tb_add_dp_resources(sw);
drivers/thunderbolt/tb.c
1422
tb_scan_switch(sw);
drivers/thunderbolt/tb.c
144
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
146
tb_remove_dp_resources(port->remote->sw);
drivers/thunderbolt/tb.c
150
if (port->sw == sw) {
drivers/thunderbolt/tb.c
1638
if (tunnel->src_port->sw == in->sw &&
drivers/thunderbolt/tb.c
1639
tunnel->dst_port->sw == out->sw) {
drivers/thunderbolt/tb.c
1703
struct tb_switch *parent = tunnel->dst_port->sw;
drivers/thunderbolt/tb.c
1705
while (parent != tunnel->src_port->sw) {
drivers/thunderbolt/tb.c
1714
pm_runtime_get_sync(&in->sw->dev);
drivers/thunderbolt/tb.c
1715
pm_runtime_get_sync(&out->sw->dev);
drivers/thunderbolt/tb.c
1744
tb_switch_dealloc_dp_resource(src_port->sw, src_port);
drivers/thunderbolt/tb.c
1751
pm_runtime_mark_last_busy(&dst_port->sw->dev);
drivers/thunderbolt/tb.c
1752
pm_runtime_put_autosuspend(&dst_port->sw->dev);
drivers/thunderbolt/tb.c
1753
pm_runtime_mark_last_busy(&src_port->sw->dev);
drivers/thunderbolt/tb.c
1754
pm_runtime_put_autosuspend(&src_port->sw->dev);
drivers/thunderbolt/tb.c
1790
static void tb_free_unplugged_children(struct tb_switch *sw)
drivers/thunderbolt/tb.c
1794
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
1798
if (port->remote->sw->is_unplugged) {
drivers/thunderbolt/tb.c
1800
tb_remove_dp_resources(port->remote->sw);
drivers/thunderbolt/tb.c
1801
tb_switch_unconfigure_link(port->remote->sw);
drivers/thunderbolt/tb.c
1802
tb_switch_set_link_width(port->remote->sw,
drivers/thunderbolt/tb.c
1804
tb_switch_remove(port->remote->sw);
drivers/thunderbolt/tb.c
1809
tb_free_unplugged_children(port->remote->sw);
drivers/thunderbolt/tb.c
1814
static struct tb_port *tb_find_pcie_down(struct tb_switch *sw,
drivers/thunderbolt/tb.c
1823
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/tb.c
1824
down = usb4_switch_map_pcie_down(sw, port);
drivers/thunderbolt/tb.c
1825
} else if (!tb_route(sw)) {
drivers/thunderbolt/tb.c
1833
if (tb_switch_is_cactus_ridge(sw) ||
drivers/thunderbolt/tb.c
1834
tb_switch_is_alpine_ridge(sw))
drivers/thunderbolt/tb.c
1836
else if (tb_switch_is_falcon_ridge(sw))
drivers/thunderbolt/tb.c
1838
else if (tb_switch_is_titan_ridge(sw))
drivers/thunderbolt/tb.c
184
static int tb_enable_clx(struct tb_switch *sw)
drivers/thunderbolt/tb.c
1844
if (WARN_ON(index > sw->config.max_port_number))
drivers/thunderbolt/tb.c
1847
down = &sw->ports[index];
drivers/thunderbolt/tb.c
186
struct tb_cm *tcm = tb_priv(sw->tb);
drivers/thunderbolt/tb.c
1860
return tb_find_unused_port(sw, TB_TYPE_PCIE_DOWN);
drivers/thunderbolt/tb.c
1868
host_port = tb_route(in->sw) ?
drivers/thunderbolt/tb.c
1869
tb_port_at(tb_route(in->sw), tb->root_switch) : NULL;
drivers/thunderbolt/tb.c
1881
if (in->sw == port->sw) {
drivers/thunderbolt/tb.c
1892
if (host_port && tb_route(port->sw)) {
drivers/thunderbolt/tb.c
1895
p = tb_port_at(tb_route(port->sw), tb->root_switch);
drivers/thunderbolt/tb.c
198
while (sw && tb_switch_depth(sw) > 1)
drivers/thunderbolt/tb.c
199
sw = tb_switch_parent(sw);
drivers/thunderbolt/tb.c
2000
pm_runtime_get_sync(&in->sw->dev);
drivers/thunderbolt/tb.c
2001
pm_runtime_get_sync(&out->sw->dev);
drivers/thunderbolt/tb.c
2003
if (tb_switch_alloc_dp_resource(in->sw, in)) {
drivers/thunderbolt/tb.c
201
if (!sw)
drivers/thunderbolt/tb.c
204
if (tb_switch_depth(sw) != 1)
drivers/thunderbolt/tb.c
2055
tb_switch_dealloc_dp_resource(in->sw, in);
drivers/thunderbolt/tb.c
2057
pm_runtime_mark_last_busy(&out->sw->dev);
drivers/thunderbolt/tb.c
2058
pm_runtime_put_autosuspend(&out->sw->dev);
drivers/thunderbolt/tb.c
2059
pm_runtime_mark_last_busy(&in->sw->dev);
drivers/thunderbolt/tb.c
2060
pm_runtime_put_autosuspend(&in->sw->dev);
drivers/thunderbolt/tb.c
2106
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tb.c
2108
if (!(sw->quirks & QUIRK_KEEP_POWER_IN_DP_REDRIVE))
drivers/thunderbolt/tb.c
2120
if (tb_route(sw))
drivers/thunderbolt/tb.c
2122
if (!tb_switch_query_dp_resource(sw, port)) {
drivers/thunderbolt/tb.c
2124
pm_runtime_get(&sw->dev);
drivers/thunderbolt/tb.c
213
if (tb_tunnel_port_on_path(tunnel, tb_upstream_port(sw)))
drivers/thunderbolt/tb.c
2131
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tb.c
2133
if (!(sw->quirks & QUIRK_KEEP_POWER_IN_DP_REDRIVE))
drivers/thunderbolt/tb.c
2138
if (tb_route(sw))
drivers/thunderbolt/tb.c
2140
if (port->redrive && tb_switch_query_dp_resource(sw, port)) {
drivers/thunderbolt/tb.c
2142
pm_runtime_put(&sw->dev);
drivers/thunderbolt/tb.c
2147
static void tb_switch_enter_redrive(struct tb_switch *sw)
drivers/thunderbolt/tb.c
2151
tb_switch_for_each_port(sw, port)
drivers/thunderbolt/tb.c
2159
static void tb_switch_exit_redrive(struct tb_switch *sw)
drivers/thunderbolt/tb.c
2163
if (!(sw->quirks & QUIRK_KEEP_POWER_IN_DP_REDRIVE))
drivers/thunderbolt/tb.c
2166
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
2172
pm_runtime_put(&sw->dev);
drivers/thunderbolt/tb.c
222
ret = tb_switch_clx_enable(sw, clx | TB_CL2);
drivers/thunderbolt/tb.c
224
ret = tb_switch_clx_enable(sw, clx);
drivers/thunderbolt/tb.c
2254
static int tb_disconnect_pci(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/tb.c
2259
up = tb_switch_find_port(sw, TB_TYPE_PCIE_UP);
drivers/thunderbolt/tb.c
2267
tb_switch_xhci_disconnect(sw);
drivers/thunderbolt/tb.c
2275
static int tb_tunnel_pci(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/tb.c
2281
up = tb_switch_find_port(sw, TB_TYPE_PCIE_UP);
drivers/thunderbolt/tb.c
2289
port = tb_switch_downstream_port(sw);
drivers/thunderbolt/tb.c
2290
down = tb_find_pcie_down(tb_switch_parent(sw), port);
drivers/thunderbolt/tb.c
2309
if (tb_switch_pcie_l1_enable(sw))
drivers/thunderbolt/tb.c
2310
tb_sw_warn(sw, "failed to enable PCIe L1 for Titan Ridge\n");
drivers/thunderbolt/tb.c
2312
if (tb_switch_xhci_connect(sw))
drivers/thunderbolt/tb.c
2313
tb_sw_warn(sw, "failed to connect xHCI\n");
drivers/thunderbolt/tb.c
2326
struct tb_switch *sw;
drivers/thunderbolt/tb.c
2329
sw = tb_to_switch(xd->dev.parent);
drivers/thunderbolt/tb.c
2330
dst_port = tb_port_at(xd->route, sw);
drivers/thunderbolt/tb.c
2339
tb_disable_clx(sw);
drivers/thunderbolt/tb.c
235
static bool tb_disable_clx(struct tb_switch *sw)
drivers/thunderbolt/tb.c
2362
tb_enable_clx(sw);
drivers/thunderbolt/tb.c
2375
struct tb_switch *sw;
drivers/thunderbolt/tb.c
2377
sw = tb_to_switch(xd->dev.parent);
drivers/thunderbolt/tb.c
2378
dst_port = tb_port_at(xd->route, sw);
drivers/thunderbolt/tb.c
2397
tb_enable_clx(sw);
drivers/thunderbolt/tb.c
242
ret = tb_switch_clx_disable(sw);
drivers/thunderbolt/tb.c
2426
struct tb_switch *sw;
drivers/thunderbolt/tb.c
2436
sw = tb_switch_find_by_route(tb, ev->route);
drivers/thunderbolt/tb.c
2437
if (!sw) {
drivers/thunderbolt/tb.c
2443
if (ev->port > sw->config.max_port_number) {
drivers/thunderbolt/tb.c
2449
port = &sw->ports[ev->port];
drivers/thunderbolt/tb.c
2456
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/tb.c
246
tb_sw_warn(sw, "failed to disable CL states\n");
drivers/thunderbolt/tb.c
2463
tb_sw_set_unplugged(port->remote->sw);
drivers/thunderbolt/tb.c
2465
tb_remove_dp_resources(port->remote->sw);
drivers/thunderbolt/tb.c
2466
tb_switch_tmu_disable(port->remote->sw);
drivers/thunderbolt/tb.c
2467
tb_switch_unconfigure_link(port->remote->sw);
drivers/thunderbolt/tb.c
2468
tb_switch_set_link_width(port->remote->sw,
drivers/thunderbolt/tb.c
2470
tb_switch_remove(port->remote->sw);
drivers/thunderbolt/tb.c
248
sw = tb_switch_parent(sw);
drivers/thunderbolt/tb.c
249
} while (sw);
drivers/thunderbolt/tb.c
2497
tb_sw_dbg(sw, "xHCI disconnect request\n");
drivers/thunderbolt/tb.c
2498
tb_switch_xhci_disconnect(sw);
drivers/thunderbolt/tb.c
2505
} else if (!port->port && sw->authorized) {
drivers/thunderbolt/tb.c
2506
tb_sw_dbg(sw, "xHCI connect request\n");
drivers/thunderbolt/tb.c
2507
tb_switch_xhci_connect(sw);
drivers/thunderbolt/tb.c
2519
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/tb.c
2520
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/tb.c
2523
tb_switch_put(sw);
drivers/thunderbolt/tb.c
256
struct tb_switch *sw;
drivers/thunderbolt/tb.c
258
sw = tb_to_switch(dev);
drivers/thunderbolt/tb.c
259
if (!sw)
drivers/thunderbolt/tb.c
262
if (tb_switch_tmu_is_configured(sw, TB_SWITCH_TMU_MODE_LOWRES)) {
drivers/thunderbolt/tb.c
266
if (tb_switch_clx_is_enabled(sw, TB_CL1))
drivers/thunderbolt/tb.c
271
ret = tb_switch_tmu_configure(sw, mode);
drivers/thunderbolt/tb.c
2743
struct tb_switch *sw;
drivers/thunderbolt/tb.c
275
return tb_switch_tmu_enable(sw);
drivers/thunderbolt/tb.c
2752
sw = tb_switch_find_by_route(tb, ev->route);
drivers/thunderbolt/tb.c
2753
if (!sw) {
drivers/thunderbolt/tb.c
2759
in = &sw->ports[ev->port];
drivers/thunderbolt/tb.c
283
struct tb_switch *sw;
drivers/thunderbolt/tb.c
2858
tb_switch_put(sw);
drivers/thunderbolt/tb.c
297
sw = tunnel->tb->root_switch;
drivers/thunderbolt/tb.c
2977
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/tb.c
298
device_for_each_child(&sw->dev, NULL, tb_increase_switch_tmu_accuracy);
drivers/thunderbolt/tb.c
2984
if (sw->boot)
drivers/thunderbolt/tb.c
2985
sw->authorized = 1;
drivers/thunderbolt/tb.c
303
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/tb.c
305
if (sw && tb_switch_tmu_is_enabled(sw) &&
drivers/thunderbolt/tb.c
306
tb_switch_tmu_is_configured(sw, TB_SWITCH_TMU_MODE_HIFI_UNI))
drivers/thunderbolt/tb.c
3091
static void tb_restore_children(struct tb_switch *sw)
drivers/thunderbolt/tb.c
3096
if (sw->is_unplugged)
drivers/thunderbolt/tb.c
3099
if (tb_enable_clx(sw))
drivers/thunderbolt/tb.c
3100
tb_sw_warn(sw, "failed to re-enable CL states\n");
drivers/thunderbolt/tb.c
3102
if (tb_enable_tmu(sw))
drivers/thunderbolt/tb.c
3103
tb_sw_warn(sw, "failed to restore TMU configuration\n");
drivers/thunderbolt/tb.c
3105
tb_switch_configuration_valid(sw);
drivers/thunderbolt/tb.c
3107
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
3112
tb_switch_set_link_width(port->remote->sw,
drivers/thunderbolt/tb.c
3113
port->remote->sw->link_width);
drivers/thunderbolt/tb.c
3114
tb_switch_configure_link(port->remote->sw);
drivers/thunderbolt/tb.c
3116
tb_restore_children(port->remote->sw);
drivers/thunderbolt/tb.c
3123
static void tb_free_unplugged_xdomains(struct tb_switch *sw)
drivers/thunderbolt/tb.c
3127
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
3136
tb_free_unplugged_xdomains(port->remote->sw);
drivers/thunderbolt/tb.c
319
static int tb_enable_tmu(struct tb_switch *sw)
drivers/thunderbolt/tb.c
330
ret = tb_switch_tmu_configure(sw,
drivers/thunderbolt/tb.c
333
if (tb_switch_clx_is_enabled(sw, TB_CL1)) {
drivers/thunderbolt/tb.c
344
if (tb_tmu_hifi_uni_required(sw->tb))
drivers/thunderbolt/tb.c
345
ret = tb_switch_tmu_configure(sw,
drivers/thunderbolt/tb.c
348
ret = tb_switch_tmu_configure(sw,
drivers/thunderbolt/tb.c
351
ret = tb_switch_tmu_configure(sw, TB_SWITCH_TMU_MODE_HIFI_BI);
drivers/thunderbolt/tb.c
356
ret = tb_switch_tmu_configure(sw, TB_SWITCH_TMU_MODE_HIFI_BI);
drivers/thunderbolt/tb.c
362
if (tb_switch_tmu_is_enabled(sw))
drivers/thunderbolt/tb.c
365
ret = tb_switch_tmu_disable(sw);
drivers/thunderbolt/tb.c
369
ret = tb_switch_tmu_post_time(sw);
drivers/thunderbolt/tb.c
373
return tb_switch_tmu_enable(sw);
drivers/thunderbolt/tb.c
376
static void tb_switch_discover_tunnels(struct tb_switch *sw,
drivers/thunderbolt/tb.c
380
struct tb *tb = sw->tb;
drivers/thunderbolt/tb.c
383
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
408
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
410
tb_switch_discover_tunnels(port->remote->sw, list,
drivers/thunderbolt/tb.c
418
if (tb_switch_is_usb4(port->sw))
drivers/thunderbolt/tb.c
425
if (tb_switch_is_usb4(port->sw))
drivers/thunderbolt/tb.c
433
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tb.c
434
struct tb *tb = sw->tb;
drivers/thunderbolt/tb.c
448
xd = tb_xdomain_alloc(tb, &sw->dev, route, tb->root_switch->uuid,
drivers/thunderbolt/tb.c
451
tb_port_at(route, sw)->xdomain = xd;
drivers/thunderbolt/tb.c
460
static struct tb_port *tb_find_unused_port(struct tb_switch *sw,
drivers/thunderbolt/tb.c
465
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
479
static struct tb_port *tb_find_usb3_down(struct tb_switch *sw,
drivers/thunderbolt/tb.c
484
down = usb4_switch_map_usb3_down(sw, port);
drivers/thunderbolt/tb.c
513
struct tb_switch *sw;
drivers/thunderbolt/tb.c
517
sw = dst_port->sw;
drivers/thunderbolt/tb.c
519
sw = src_port->sw;
drivers/thunderbolt/tb.c
522
if (sw == tb->root_switch)
drivers/thunderbolt/tb.c
526
port = tb_port_at(tb_route(sw), tb->root_switch);
drivers/thunderbolt/tb.c
722
link_speed = port->sw->link_speed;
drivers/thunderbolt/tb.c
727
if (port->sw->link_width == TB_LINK_WIDTH_ASYM_TX) {
drivers/thunderbolt/tb.c
730
} else if (port->sw->link_width == TB_LINK_WIDTH_ASYM_RX) {
drivers/thunderbolt/tb.c
748
up_bw = link_speed * port->sw->link_width * 1000;
drivers/thunderbolt/tb.c
905
static int tb_tunnel_usb3(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/tb.c
907
struct tb_switch *parent = tb_switch_parent(sw);
drivers/thunderbolt/tb.c
918
up = tb_switch_find_port(sw, TB_TYPE_USB3_UP);
drivers/thunderbolt/tb.c
922
if (!sw->link_usb4)
drivers/thunderbolt/tb.c
929
port = tb_switch_downstream_port(sw);
drivers/thunderbolt/tb.c
997
static int tb_create_usb3_tunnels(struct tb_switch *sw)
drivers/thunderbolt/tb.h
1000
switch (sw->config.device_id) {
drivers/thunderbolt/tb.h
1023
static inline bool tb_switch_is_icm(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
1025
return !sw->config.enabled;
drivers/thunderbolt/tb.h
1028
int tb_switch_set_link_width(struct tb_switch *sw, enum tb_link_width width);
drivers/thunderbolt/tb.h
1029
int tb_switch_configure_link(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1030
void tb_switch_unconfigure_link(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1032
bool tb_switch_query_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1033
int tb_switch_alloc_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1034
void tb_switch_dealloc_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1036
int tb_switch_tmu_init(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1037
int tb_switch_tmu_post_time(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1038
int tb_switch_tmu_disable(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1039
int tb_switch_tmu_enable(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1040
int tb_switch_tmu_configure(struct tb_switch *sw, enum tb_switch_tmu_mode mode);
drivers/thunderbolt/tb.h
1052
static inline bool tb_switch_tmu_is_configured(const struct tb_switch *sw,
drivers/thunderbolt/tb.h
1055
return sw->tmu.mode_request == mode;
drivers/thunderbolt/tb.h
1065
static inline bool tb_switch_tmu_is_enabled(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
1067
return sw->tmu.mode != TB_SWITCH_TMU_MODE_OFF &&
drivers/thunderbolt/tb.h
1068
sw->tmu.mode == sw->tmu.mode_request;
drivers/thunderbolt/tb.h
1073
int tb_switch_clx_init(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1074
int tb_switch_clx_enable(struct tb_switch *sw, unsigned int clx);
drivers/thunderbolt/tb.h
1075
int tb_switch_clx_disable(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1088
static inline bool tb_switch_clx_is_enabled(const struct tb_switch *sw,
drivers/thunderbolt/tb.h
1091
return sw->clx & clx;
drivers/thunderbolt/tb.h
1094
int tb_switch_pcie_l1_enable(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1096
int tb_switch_xhci_connect(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1097
void tb_switch_xhci_disconnect(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1125
return src->sw->config.depth < dst->sw->config.depth;
drivers/thunderbolt/tb.h
1130
return tb_port_is_null(port) && port->sw->credit_allocation;
drivers/thunderbolt/tb.h
1171
int tb_switch_find_vse_cap(struct tb_switch *sw, enum tb_switch_vse_cap vsec);
drivers/thunderbolt/tb.h
1172
int tb_switch_find_cap(struct tb_switch *sw, enum tb_switch_cap cap);
drivers/thunderbolt/tb.h
1173
int tb_switch_next_cap(struct tb_switch *sw, unsigned int offset);
drivers/thunderbolt/tb.h
1217
int tb_drom_read(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1218
int tb_drom_read_uid_only(struct tb_switch *sw, u64 *uid);
drivers/thunderbolt/tb.h
1220
int tb_lc_read_uuid(struct tb_switch *sw, u32 *uuid);
drivers/thunderbolt/tb.h
1232
int tb_lc_set_wake(struct tb_switch *sw, unsigned int flags);
drivers/thunderbolt/tb.h
1233
int tb_lc_set_sleep(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1234
bool tb_lc_lane_bonding_possible(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1235
bool tb_lc_dp_sink_query(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1236
int tb_lc_dp_sink_alloc(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1237
int tb_lc_dp_sink_dealloc(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1238
int tb_lc_force_power(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1255
return tb_route(port->sw)
drivers/thunderbolt/tb.h
1256
| ((u64) port->port << (port->sw->config.depth * 8));
drivers/thunderbolt/tb.h
1311
static inline unsigned int usb4_switch_version(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
1313
return FIELD_GET(USB4_VERSION_MAJOR_MASK, sw->config.thunderbolt_version);
drivers/thunderbolt/tb.h
1322
static inline bool tb_switch_is_usb4(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
1324
return usb4_switch_version(sw) > 0;
drivers/thunderbolt/tb.h
1327
void usb4_switch_check_wakes(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1328
int usb4_switch_setup(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1329
int usb4_switch_configuration_valid(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1330
int usb4_switch_read_uid(struct tb_switch *sw, u64 *uid);
drivers/thunderbolt/tb.h
1331
int usb4_switch_drom_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/tb.h
1333
bool usb4_switch_lane_bonding_possible(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1334
int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime);
drivers/thunderbolt/tb.h
1335
int usb4_switch_set_sleep(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1336
int usb4_switch_nvm_sector_size(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1337
int usb4_switch_nvm_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/tb.h
1339
int usb4_switch_nvm_set_offset(struct tb_switch *sw, unsigned int address);
drivers/thunderbolt/tb.h
1340
int usb4_switch_nvm_write(struct tb_switch *sw, unsigned int address,
drivers/thunderbolt/tb.h
1342
int usb4_switch_nvm_authenticate(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1343
int usb4_switch_nvm_authenticate_status(struct tb_switch *sw, u32 *status);
drivers/thunderbolt/tb.h
1344
int usb4_switch_credits_init(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1345
bool usb4_switch_query_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1346
int usb4_switch_alloc_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1347
int usb4_switch_dealloc_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1348
struct tb_port *usb4_switch_map_pcie_down(struct tb_switch *sw,
drivers/thunderbolt/tb.h
1350
struct tb_port *usb4_switch_map_usb3_down(struct tb_switch *sw,
drivers/thunderbolt/tb.h
1352
int usb4_switch_add_ports(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1353
void usb4_switch_remove_ports(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1501
int usb4_port_index(const struct tb_switch *sw, const struct tb_port *port);
drivers/thunderbolt/tb.h
1508
void tb_check_quirks(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1541
void tb_switch_debugfs_init(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1542
void tb_switch_debugfs_remove(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1552
static inline void tb_switch_debugfs_init(struct tb_switch *sw) { }
drivers/thunderbolt/tb.h
1553
static inline void tb_switch_debugfs_remove(struct tb_switch *sw) { }
drivers/thunderbolt/tb.h
282
struct tb_switch *sw;
drivers/thunderbolt/tb.h
520
int (*runtime_suspend_switch)(struct tb_switch *sw);
drivers/thunderbolt/tb.h
521
int (*runtime_resume_switch)(struct tb_switch *sw);
drivers/thunderbolt/tb.h
526
int (*disapprove_switch)(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
527
int (*approve_switch)(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
528
int (*add_switch_key)(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
529
int (*challenge_switch_key)(struct tb *tb, struct tb_switch *sw,
drivers/thunderbolt/tb.h
538
int (*usb4_switch_op)(struct tb_switch *sw, u16 opcode, u32 *metadata,
drivers/thunderbolt/tb.h
541
int (*usb4_switch_nvm_authenticate_status)(struct tb_switch *sw,
drivers/thunderbolt/tb.h
565
static inline struct tb_port *tb_upstream_port(struct tb_switch *sw)
drivers/thunderbolt/tb.h
567
return &sw->ports[sw->config.upstream_port_number];
drivers/thunderbolt/tb.h
579
const struct tb_port *upstream_port = tb_upstream_port(port->sw);
drivers/thunderbolt/tb.h
583
static inline u64 tb_route(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
585
return ((u64) sw->config.route_hi) << 32 | sw->config.route_lo;
drivers/thunderbolt/tb.h
588
static inline struct tb_port *tb_port_at(u64 route, struct tb_switch *sw)
drivers/thunderbolt/tb.h
592
port = route >> (sw->config.depth * 8);
drivers/thunderbolt/tb.h
593
if (WARN_ON(port > sw->config.max_port_number))
drivers/thunderbolt/tb.h
595
return &sw->ports[port];
drivers/thunderbolt/tb.h
672
static inline int tb_sw_read(struct tb_switch *sw, void *buffer,
drivers/thunderbolt/tb.h
675
if (sw->is_unplugged)
drivers/thunderbolt/tb.h
677
return tb_cfg_read(sw->tb->ctl,
drivers/thunderbolt/tb.h
679
tb_route(sw),
drivers/thunderbolt/tb.h
686
static inline int tb_sw_write(struct tb_switch *sw, const void *buffer,
drivers/thunderbolt/tb.h
689
if (sw->is_unplugged)
drivers/thunderbolt/tb.h
691
return tb_cfg_write(sw->tb->ctl,
drivers/thunderbolt/tb.h
693
tb_route(sw),
drivers/thunderbolt/tb.h
703
if (port->sw->is_unplugged)
drivers/thunderbolt/tb.h
705
return tb_cfg_read(port->sw->tb->ctl,
drivers/thunderbolt/tb.h
707
tb_route(port->sw),
drivers/thunderbolt/tb.h
717
if (port->sw->is_unplugged)
drivers/thunderbolt/tb.h
719
return tb_cfg_write(port->sw->tb->ctl,
drivers/thunderbolt/tb.h
721
tb_route(port->sw),
drivers/thunderbolt/tb.h
734
#define __TB_SW_PRINT(level, sw, fmt, arg...) \
drivers/thunderbolt/tb.h
736
const struct tb_switch *__sw = (sw); \
drivers/thunderbolt/tb.h
740
#define tb_sw_WARN(sw, fmt, arg...) __TB_SW_PRINT(tb_WARN, sw, fmt, ##arg)
drivers/thunderbolt/tb.h
741
#define tb_sw_warn(sw, fmt, arg...) __TB_SW_PRINT(tb_warn, sw, fmt, ##arg)
drivers/thunderbolt/tb.h
742
#define tb_sw_info(sw, fmt, arg...) __TB_SW_PRINT(tb_info, sw, fmt, ##arg)
drivers/thunderbolt/tb.h
743
#define tb_sw_dbg(sw, fmt, arg...) __TB_SW_PRINT(tb_dbg, sw, fmt, ##arg)
drivers/thunderbolt/tb.h
748
level(__port->sw->tb, "%llx:%u: " fmt, \
drivers/thunderbolt/tb.h
749
tb_route(__port->sw), __port->port, ## arg); \
drivers/thunderbolt/tb.h
784
int tb_domain_disapprove_switch(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
785
int tb_domain_approve_switch(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
786
int tb_domain_approve_switch_key(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
787
int tb_domain_challenge_switch_key(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
844
int tb_switch_nvm_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/tb.h
850
int tb_switch_configure(struct tb_switch *sw);
drivers/thunderbolt/tb.h
851
int tb_switch_configuration_valid(struct tb_switch *sw);
drivers/thunderbolt/tb.h
852
int tb_switch_add(struct tb_switch *sw);
drivers/thunderbolt/tb.h
853
void tb_switch_remove(struct tb_switch *sw);
drivers/thunderbolt/tb.h
854
void tb_switch_suspend(struct tb_switch *sw, bool runtime);
drivers/thunderbolt/tb.h
855
int tb_switch_resume(struct tb_switch *sw, bool runtime);
drivers/thunderbolt/tb.h
856
int tb_switch_reset(struct tb_switch *sw);
drivers/thunderbolt/tb.h
857
int tb_switch_wait_for_bit(struct tb_switch *sw, u32 offset, u32 bit,
drivers/thunderbolt/tb.h
859
void tb_sw_set_unplugged(struct tb_switch *sw);
drivers/thunderbolt/tb.h
860
struct tb_port *tb_switch_find_port(struct tb_switch *sw,
drivers/thunderbolt/tb.h
874
#define tb_switch_for_each_port(sw, p) \
drivers/thunderbolt/tb.h
875
for ((p) = &(sw)->ports[1]; \
drivers/thunderbolt/tb.h
876
(p) <= &(sw)->ports[(sw)->config.max_port_number]; (p)++)
drivers/thunderbolt/tb.h
878
static inline struct tb_switch *tb_switch_get(struct tb_switch *sw)
drivers/thunderbolt/tb.h
880
if (sw)
drivers/thunderbolt/tb.h
881
get_device(&sw->dev);
drivers/thunderbolt/tb.h
882
return sw;
drivers/thunderbolt/tb.h
885
static inline void tb_switch_put(struct tb_switch *sw)
drivers/thunderbolt/tb.h
887
put_device(&sw->dev);
drivers/thunderbolt/tb.h
902
static inline struct tb_switch *tb_switch_parent(struct tb_switch *sw)
drivers/thunderbolt/tb.h
904
return tb_to_switch(sw->dev.parent);
drivers/thunderbolt/tb.h
915
static inline struct tb_port *tb_switch_downstream_port(struct tb_switch *sw)
drivers/thunderbolt/tb.h
917
if (WARN_ON(!tb_route(sw)))
drivers/thunderbolt/tb.h
919
return tb_port_at(tb_route(sw), tb_switch_parent(sw));
drivers/thunderbolt/tb.h
928
static inline int tb_switch_depth(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
930
return sw->config.depth;
drivers/thunderbolt/tb.h
933
static inline bool tb_switch_is_light_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
935
return sw->config.vendor_id == PCI_VENDOR_ID_INTEL &&
drivers/thunderbolt/tb.h
936
sw->config.device_id == PCI_DEVICE_ID_INTEL_LIGHT_RIDGE;
drivers/thunderbolt/tb.h
939
static inline bool tb_switch_is_eagle_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
941
return sw->config.vendor_id == PCI_VENDOR_ID_INTEL &&
drivers/thunderbolt/tb.h
942
sw->config.device_id == PCI_DEVICE_ID_INTEL_EAGLE_RIDGE;
drivers/thunderbolt/tb.h
945
static inline bool tb_switch_is_cactus_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
947
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/tb.h
948
switch (sw->config.device_id) {
drivers/thunderbolt/tb.h
957
static inline bool tb_switch_is_falcon_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
959
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/tb.h
960
switch (sw->config.device_id) {
drivers/thunderbolt/tb.h
969
static inline bool tb_switch_is_alpine_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
971
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/tb.h
972
switch (sw->config.device_id) {
drivers/thunderbolt/tb.h
984
static inline bool tb_switch_is_titan_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
986
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/tb.h
987
switch (sw->config.device_id) {
drivers/thunderbolt/tb.h
997
static inline bool tb_switch_is_tiger_lake(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
999
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/test.c
100
sw->ports[2].link_nr = 1;
drivers/thunderbolt/test.c
102
sw->ports[3].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
103
sw->ports[3].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
104
sw->ports[3].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
105
sw->ports[3].total_credits = 60;
drivers/thunderbolt/test.c
1058
KUNIT_EXPECT_EQ(test, tb_route(in_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
106
sw->ports[3].ctl_credits = 2;
drivers/thunderbolt/test.c
1062
KUNIT_EXPECT_EQ(test, tb_route(out_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
107
sw->ports[3].dual_link_port = &sw->ports[4];
drivers/thunderbolt/test.c
109
sw->ports[4].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
110
sw->ports[4].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
111
sw->ports[4].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
112
sw->ports[4].total_credits = 60;
drivers/thunderbolt/test.c
113
sw->ports[4].ctl_credits = 2;
drivers/thunderbolt/test.c
1138
KUNIT_EXPECT_EQ(test, tb_route(in_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
114
sw->ports[4].dual_link_port = &sw->ports[3];
drivers/thunderbolt/test.c
1142
KUNIT_EXPECT_EQ(test, tb_route(out_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
115
sw->ports[4].link_nr = 1;
drivers/thunderbolt/test.c
117
sw->ports[5].config.type = TB_TYPE_DP_HDMI_IN;
drivers/thunderbolt/test.c
118
sw->ports[5].config.max_in_hop_id = 9;
drivers/thunderbolt/test.c
119
sw->ports[5].config.max_out_hop_id = 9;
drivers/thunderbolt/test.c
120
sw->ports[5].cap_adap = -1;
drivers/thunderbolt/test.c
122
sw->ports[6].config.type = TB_TYPE_DP_HDMI_IN;
drivers/thunderbolt/test.c
123
sw->ports[6].config.max_in_hop_id = 9;
drivers/thunderbolt/test.c
1230
KUNIT_EXPECT_EQ(test, tb_route(in_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
1234
KUNIT_EXPECT_EQ(test, tb_route(out_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
124
sw->ports[6].config.max_out_hop_id = 9;
drivers/thunderbolt/test.c
125
sw->ports[6].cap_adap = -1;
drivers/thunderbolt/test.c
127
sw->ports[7].config.type = TB_TYPE_NHI;
drivers/thunderbolt/test.c
128
sw->ports[7].config.max_in_hop_id = 11;
drivers/thunderbolt/test.c
129
sw->ports[7].config.max_out_hop_id = 11;
drivers/thunderbolt/test.c
130
sw->ports[7].config.nfc_credits = 0x41800000;
drivers/thunderbolt/test.c
132
sw->ports[8].config.type = TB_TYPE_PCIE_DOWN;
drivers/thunderbolt/test.c
1322
KUNIT_EXPECT_EQ(test, tb_route(in_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
1326
KUNIT_EXPECT_EQ(test, tb_route(out_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
133
sw->ports[8].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
134
sw->ports[8].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
136
sw->ports[9].config.type = TB_TYPE_PCIE_DOWN;
drivers/thunderbolt/test.c
137
sw->ports[9].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
138
sw->ports[9].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
140
sw->ports[10].disabled = true;
drivers/thunderbolt/test.c
141
sw->ports[11].disabled = true;
drivers/thunderbolt/test.c
143
sw->ports[12].config.type = TB_TYPE_USB3_DOWN;
drivers/thunderbolt/test.c
144
sw->ports[12].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
145
sw->ports[12].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
147
sw->ports[13].config.type = TB_TYPE_USB3_DOWN;
drivers/thunderbolt/test.c
148
sw->ports[13].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
149
sw->ports[13].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
151
return sw;
drivers/thunderbolt/test.c
156
struct tb_switch *sw;
drivers/thunderbolt/test.c
158
sw = alloc_host(test);
drivers/thunderbolt/test.c
159
if (!sw)
drivers/thunderbolt/test.c
162
sw->generation = 4;
drivers/thunderbolt/test.c
163
sw->credit_allocation = true;
drivers/thunderbolt/test.c
164
sw->max_usb3_credits = 32;
drivers/thunderbolt/test.c
165
sw->min_dp_aux_credits = 1;
drivers/thunderbolt/test.c
166
sw->min_dp_main_credits = 0;
drivers/thunderbolt/test.c
167
sw->max_pcie_credits = 64;
drivers/thunderbolt/test.c
168
sw->max_dma_credits = 14;
drivers/thunderbolt/test.c
170
return sw;
drivers/thunderbolt/test.c
175
struct tb_switch *sw;
drivers/thunderbolt/test.c
177
sw = alloc_host_usb4(test);
drivers/thunderbolt/test.c
178
if (!sw)
drivers/thunderbolt/test.c
181
sw->ports[10].config.type = TB_TYPE_DP_HDMI_IN;
drivers/thunderbolt/test.c
182
sw->ports[10].config.max_in_hop_id = 9;
drivers/thunderbolt/test.c
183
sw->ports[10].config.max_out_hop_id = 9;
drivers/thunderbolt/test.c
184
sw->ports[10].cap_adap = -1;
drivers/thunderbolt/test.c
185
sw->ports[10].disabled = false;
drivers/thunderbolt/test.c
187
return sw;
drivers/thunderbolt/test.c
195
struct tb_switch *sw;
drivers/thunderbolt/test.c
197
sw = alloc_switch(test, route, 1, 19);
drivers/thunderbolt/test.c
198
if (!sw)
drivers/thunderbolt/test.c
201
sw->config.vendor_id = 0x8086;
drivers/thunderbolt/test.c
202
sw->config.device_id = 0x15ef;
drivers/thunderbolt/test.c
204
sw->ports[0].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
205
sw->ports[0].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
206
sw->ports[0].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
208
sw->ports[1].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
209
sw->ports[1].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
210
sw->ports[1].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
211
sw->ports[1].total_credits = 60;
drivers/thunderbolt/test.c
212
sw->ports[1].ctl_credits = 2;
drivers/thunderbolt/test.c
213
sw->ports[1].dual_link_port = &sw->ports[2];
drivers/thunderbolt/test.c
215
sw->ports[2].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
216
sw->ports[2].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
217
sw->ports[2].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
218
sw->ports[2].total_credits = 60;
drivers/thunderbolt/test.c
219
sw->ports[2].ctl_credits = 2;
drivers/thunderbolt/test.c
220
sw->ports[2].dual_link_port = &sw->ports[1];
drivers/thunderbolt/test.c
221
sw->ports[2].link_nr = 1;
drivers/thunderbolt/test.c
223
sw->ports[3].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
224
sw->ports[3].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
225
sw->ports[3].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
226
sw->ports[3].total_credits = 60;
drivers/thunderbolt/test.c
227
sw->ports[3].ctl_credits = 2;
drivers/thunderbolt/test.c
228
sw->ports[3].dual_link_port = &sw->ports[4];
drivers/thunderbolt/test.c
230
sw->ports[4].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
231
sw->ports[4].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
232
sw->ports[4].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
233
sw->ports[4].total_credits = 60;
drivers/thunderbolt/test.c
234
sw->ports[4].ctl_credits = 2;
drivers/thunderbolt/test.c
235
sw->ports[4].dual_link_port = &sw->ports[3];
drivers/thunderbolt/test.c
236
sw->ports[4].link_nr = 1;
drivers/thunderbolt/test.c
238
sw->ports[5].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
239
sw->ports[5].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
240
sw->ports[5].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
241
sw->ports[5].total_credits = 60;
drivers/thunderbolt/test.c
242
sw->ports[5].ctl_credits = 2;
drivers/thunderbolt/test.c
243
sw->ports[5].dual_link_port = &sw->ports[6];
drivers/thunderbolt/test.c
245
sw->ports[6].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
246
sw->ports[6].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
247
sw->ports[6].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
248
sw->ports[6].total_credits = 60;
drivers/thunderbolt/test.c
249
sw->ports[6].ctl_credits = 2;
drivers/thunderbolt/test.c
250
sw->ports[6].dual_link_port = &sw->ports[5];
drivers/thunderbolt/test.c
251
sw->ports[6].link_nr = 1;
drivers/thunderbolt/test.c
253
sw->ports[7].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
254
sw->ports[7].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
255
sw->ports[7].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
256
sw->ports[7].total_credits = 60;
drivers/thunderbolt/test.c
257
sw->ports[7].ctl_credits = 2;
drivers/thunderbolt/test.c
258
sw->ports[7].dual_link_port = &sw->ports[8];
drivers/thunderbolt/test.c
260
sw->ports[8].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
261
sw->ports[8].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
262
sw->ports[8].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
263
sw->ports[8].total_credits = 60;
drivers/thunderbolt/test.c
264
sw->ports[8].ctl_credits = 2;
drivers/thunderbolt/test.c
265
sw->ports[8].dual_link_port = &sw->ports[7];
drivers/thunderbolt/test.c
266
sw->ports[8].link_nr = 1;
drivers/thunderbolt/test.c
268
sw->ports[9].config.type = TB_TYPE_PCIE_UP;
drivers/thunderbolt/test.c
269
sw->ports[9].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
270
sw->ports[9].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
272
sw->ports[10].config.type = TB_TYPE_PCIE_DOWN;
drivers/thunderbolt/test.c
273
sw->ports[10].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
274
sw->ports[10].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
276
sw->ports[11].config.type = TB_TYPE_PCIE_DOWN;
drivers/thunderbolt/test.c
277
sw->ports[11].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
278
sw->ports[11].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
280
sw->ports[12].config.type = TB_TYPE_PCIE_DOWN;
drivers/thunderbolt/test.c
281
sw->ports[12].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
282
sw->ports[12].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
284
sw->ports[13].config.type = TB_TYPE_DP_HDMI_OUT;
drivers/thunderbolt/test.c
285
sw->ports[13].config.max_in_hop_id = 9;
drivers/thunderbolt/test.c
286
sw->ports[13].config.max_out_hop_id = 9;
drivers/thunderbolt/test.c
287
sw->ports[13].cap_adap = -1;
drivers/thunderbolt/test.c
289
sw->ports[14].config.type = TB_TYPE_DP_HDMI_OUT;
drivers/thunderbolt/test.c
290
sw->ports[14].config.max_in_hop_id = 9;
drivers/thunderbolt/test.c
291
sw->ports[14].config.max_out_hop_id = 9;
drivers/thunderbolt/test.c
292
sw->ports[14].cap_adap = -1;
drivers/thunderbolt/test.c
294
sw->ports[15].disabled = true;
drivers/thunderbolt/test.c
296
sw->ports[16].config.type = TB_TYPE_USB3_UP;
drivers/thunderbolt/test.c
297
sw->ports[16].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
298
sw->ports[16].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
300
sw->ports[17].config.type = TB_TYPE_USB3_DOWN;
drivers/thunderbolt/test.c
301
sw->ports[17].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
302
sw->ports[17].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
304
sw->ports[18].config.type = TB_TYPE_USB3_DOWN;
drivers/thunderbolt/test.c
305
sw->ports[18].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
306
sw->ports[18].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
308
sw->ports[19].config.type = TB_TYPE_USB3_DOWN;
drivers/thunderbolt/test.c
309
sw->ports[19].config.max_in_hop_id = 8;
drivers/thunderbolt/test.c
310
sw->ports[19].config.max_out_hop_id = 8;
drivers/thunderbolt/test.c
313
return sw;
drivers/thunderbolt/test.c
316
upstream_port = tb_upstream_port(sw);
drivers/thunderbolt/test.c
337
return sw;
drivers/thunderbolt/test.c
344
struct tb_switch *sw;
drivers/thunderbolt/test.c
346
sw = alloc_dev_default(test, parent, route, bonded);
drivers/thunderbolt/test.c
347
if (!sw)
drivers/thunderbolt/test.c
350
sw->ports[13].config.type = TB_TYPE_DP_HDMI_IN;
drivers/thunderbolt/test.c
351
sw->ports[13].config.max_in_hop_id = 9;
drivers/thunderbolt/test.c
352
sw->ports[13].config.max_out_hop_id = 9;
drivers/thunderbolt/test.c
354
sw->ports[14].config.type = TB_TYPE_DP_HDMI_IN;
drivers/thunderbolt/test.c
355
sw->ports[14].config.max_in_hop_id = 9;
drivers/thunderbolt/test.c
356
sw->ports[14].config.max_out_hop_id = 9;
drivers/thunderbolt/test.c
358
return sw;
drivers/thunderbolt/test.c
365
struct tb_switch *sw;
drivers/thunderbolt/test.c
368
sw = alloc_dev_default(test, parent, route, bonded);
drivers/thunderbolt/test.c
369
if (!sw)
drivers/thunderbolt/test.c
380
sw->ports[i].disabled = true;
drivers/thunderbolt/test.c
383
sw->ports[i].disabled = true;
drivers/thunderbolt/test.c
385
sw->ports[13].cap_adap = 0;
drivers/thunderbolt/test.c
386
sw->ports[14].cap_adap = 0;
drivers/thunderbolt/test.c
389
sw->ports[i].disabled = true;
drivers/thunderbolt/test.c
39
struct tb_switch *sw;
drivers/thunderbolt/test.c
391
sw->generation = 4;
drivers/thunderbolt/test.c
392
sw->credit_allocation = true;
drivers/thunderbolt/test.c
393
sw->max_usb3_credits = 109;
drivers/thunderbolt/test.c
394
sw->min_dp_aux_credits = 0;
drivers/thunderbolt/test.c
395
sw->min_dp_main_credits = 0;
drivers/thunderbolt/test.c
396
sw->max_pcie_credits = 30;
drivers/thunderbolt/test.c
397
sw->max_dma_credits = 1;
drivers/thunderbolt/test.c
399
return sw;
drivers/thunderbolt/test.c
406
struct tb_switch *sw;
drivers/thunderbolt/test.c
408
sw = alloc_dev_default(test, parent, route, bonded);
drivers/thunderbolt/test.c
409
if (!sw)
drivers/thunderbolt/test.c
412
sw->generation = 4;
drivers/thunderbolt/test.c
413
sw->credit_allocation = true;
drivers/thunderbolt/test.c
414
sw->max_usb3_credits = 14;
drivers/thunderbolt/test.c
415
sw->min_dp_aux_credits = 1;
drivers/thunderbolt/test.c
416
sw->min_dp_main_credits = 18;
drivers/thunderbolt/test.c
417
sw->max_pcie_credits = 32;
drivers/thunderbolt/test.c
418
sw->max_dma_credits = 14;
drivers/thunderbolt/test.c
420
return sw;
drivers/thunderbolt/test.c
43
sw = kunit_kzalloc(test, sizeof(*sw), GFP_KERNEL);
drivers/thunderbolt/test.c
44
if (!sw)
drivers/thunderbolt/test.c
47
sw->config.upstream_port_number = upstream_port;
drivers/thunderbolt/test.c
48
sw->config.depth = tb_route_length(route);
drivers/thunderbolt/test.c
49
sw->config.route_hi = upper_32_bits(route);
drivers/thunderbolt/test.c
50
sw->config.route_lo = lower_32_bits(route);
drivers/thunderbolt/test.c
51
sw->config.enabled = 0;
drivers/thunderbolt/test.c
511
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
52
sw->config.max_port_number = max_port_number;
drivers/thunderbolt/test.c
523
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
54
size = (sw->config.max_port_number + 1) * sizeof(*sw->ports);
drivers/thunderbolt/test.c
55
sw->ports = kunit_kzalloc(test, size, GFP_KERNEL);
drivers/thunderbolt/test.c
56
if (!sw->ports)
drivers/thunderbolt/test.c
570
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
582
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
59
for (i = 0; i <= sw->config.max_port_number; i++) {
drivers/thunderbolt/test.c
60
sw->ports[i].sw = sw;
drivers/thunderbolt/test.c
61
sw->ports[i].port = i;
drivers/thunderbolt/test.c
62
sw->ports[i].config.port_number = i;
drivers/thunderbolt/test.c
633
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
64
kunit_ida_init(test, &sw->ports[i].in_hopids);
drivers/thunderbolt/test.c
645
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
65
kunit_ida_init(test, &sw->ports[i].out_hopids);
drivers/thunderbolt/test.c
69
return sw;
drivers/thunderbolt/test.c
717
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
729
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
74
struct tb_switch *sw;
drivers/thunderbolt/test.c
76
sw = alloc_switch(test, 0, 7, 13);
drivers/thunderbolt/test.c
77
if (!sw)
drivers/thunderbolt/test.c
80
sw->config.vendor_id = 0x8086;
drivers/thunderbolt/test.c
81
sw->config.device_id = 0x9a1b;
drivers/thunderbolt/test.c
820
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
83
sw->ports[0].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
832
KUNIT_EXPECT_EQ(test, tb_route(p->sw), test_data[i].route);
drivers/thunderbolt/test.c
84
sw->ports[0].config.max_in_hop_id = 7;
drivers/thunderbolt/test.c
85
sw->ports[0].config.max_out_hop_id = 7;
drivers/thunderbolt/test.c
87
sw->ports[1].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
88
sw->ports[1].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
89
sw->ports[1].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
90
sw->ports[1].total_credits = 60;
drivers/thunderbolt/test.c
91
sw->ports[1].ctl_credits = 2;
drivers/thunderbolt/test.c
916
KUNIT_EXPECT_EQ(test, tb_route(in_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
92
sw->ports[1].dual_link_port = &sw->ports[2];
drivers/thunderbolt/test.c
920
KUNIT_EXPECT_EQ(test, tb_route(out_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
94
sw->ports[2].config.type = TB_TYPE_PORT;
drivers/thunderbolt/test.c
95
sw->ports[2].config.max_in_hop_id = 19;
drivers/thunderbolt/test.c
96
sw->ports[2].config.max_out_hop_id = 19;
drivers/thunderbolt/test.c
97
sw->ports[2].total_credits = 60;
drivers/thunderbolt/test.c
978
KUNIT_EXPECT_EQ(test, tb_route(in_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
98
sw->ports[2].ctl_credits = 2;
drivers/thunderbolt/test.c
982
KUNIT_EXPECT_EQ(test, tb_route(out_port->sw), test_data[i].route);
drivers/thunderbolt/test.c
99
sw->ports[2].dual_link_port = &sw->ports[1];
drivers/thunderbolt/tmu.c
100
sw->tmu.cap + TMU_RTR_CS_15, 1);
drivers/thunderbolt/tmu.c
1006
ret = tb_switch_tmu_rate_write(sw, tmu_rates[sw->tmu.mode_request]);
drivers/thunderbolt/tmu.c
1010
tb_sw_warn(sw, "TMU: failed to enable mode %s: %d\n",
drivers/thunderbolt/tmu.c
1011
tmu_mode_name(sw->tmu.mode_request), ret);
drivers/thunderbolt/tmu.c
1013
sw->tmu.mode = sw->tmu.mode_request;
drivers/thunderbolt/tmu.c
1014
tb_sw_dbg(sw, "TMU: mode set to: %s\n", tmu_mode_name(sw->tmu.mode));
drivers/thunderbolt/tmu.c
1017
return tb_switch_tmu_set_time_disruption(sw, false);
drivers/thunderbolt/tmu.c
1034
int tb_switch_tmu_configure(struct tb_switch *sw, enum tb_switch_tmu_mode mode)
drivers/thunderbolt/tmu.c
104
if (tb_switch_tmu_enhanced_is_supported(sw)) {
drivers/thunderbolt/tmu.c
1042
if (!sw->tmu.has_ucap)
drivers/thunderbolt/tmu.c
1050
const struct tb_switch *parent_sw = tb_switch_parent(sw);
drivers/thunderbolt/tmu.c
1054
if (!tb_switch_tmu_enhanced_is_supported(sw))
drivers/thunderbolt/tmu.c
1061
tb_sw_warn(sw, "TMU: unsupported mode %u\n", mode);
drivers/thunderbolt/tmu.c
1065
if (sw->tmu.mode_request != mode) {
drivers/thunderbolt/tmu.c
1066
tb_sw_dbg(sw, "TMU: mode change %s -> %s requested\n",
drivers/thunderbolt/tmu.c
1067
tmu_mode_name(sw->tmu.mode), tmu_mode_name(mode));
drivers/thunderbolt/tmu.c
1068
sw->tmu.mode_request = mode;
drivers/thunderbolt/tmu.c
107
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
108
sw->tmu.cap + TMU_RTR_CS_18, 1);
drivers/thunderbolt/tmu.c
115
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
116
sw->tmu.cap + TMU_RTR_CS_18, 1);
drivers/thunderbolt/tmu.c
122
static bool tb_switch_tmu_ucap_is_supported(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
127
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
128
sw->tmu.cap + TMU_RTR_CS_0, 1);
drivers/thunderbolt/tmu.c
135
static int tb_switch_tmu_rate_read(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
140
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
141
sw->tmu.cap + TMU_RTR_CS_3, 1);
drivers/thunderbolt/tmu.c
149
static int tb_switch_tmu_rate_write(struct tb_switch *sw, int rate)
drivers/thunderbolt/tmu.c
154
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
155
sw->tmu.cap + TMU_RTR_CS_3, 1);
drivers/thunderbolt/tmu.c
162
return tb_sw_write(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
163
sw->tmu.cap + TMU_RTR_CS_3, 1);
drivers/thunderbolt/tmu.c
188
if (!port->sw->tmu.has_ucap)
drivers/thunderbolt/tmu.c
237
if (!tb_switch_tmu_enhanced_is_supported(port->sw))
drivers/thunderbolt/tmu.c
300
if (!tb_switch_tmu_enhanced_is_supported(port->sw))
drivers/thunderbolt/tmu.c
332
static int tb_switch_tmu_set_time_disruption(struct tb_switch *sw, bool set)
drivers/thunderbolt/tmu.c
337
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/tmu.c
338
offset = sw->tmu.cap + TMU_RTR_CS_0;
drivers/thunderbolt/tmu.c
341
offset = sw->cap_vsec_tmu + TB_TIME_VSEC_3_CS_26;
drivers/thunderbolt/tmu.c
345
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/tmu.c
354
return tb_sw_write(sw, &val, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/tmu.c
357
static int tmu_mode_init(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
362
ucap = tb_switch_tmu_ucap_is_supported(sw);
drivers/thunderbolt/tmu.c
364
tb_sw_dbg(sw, "TMU: supports uni-directional mode\n");
drivers/thunderbolt/tmu.c
365
enhanced = tb_switch_tmu_enhanced_is_supported(sw);
drivers/thunderbolt/tmu.c
367
tb_sw_dbg(sw, "TMU: supports enhanced uni-directional mode\n");
drivers/thunderbolt/tmu.c
369
ret = tb_switch_tmu_rate_read(sw);
drivers/thunderbolt/tmu.c
375
sw->tmu.mode = TB_SWITCH_TMU_MODE_OFF;
drivers/thunderbolt/tmu.c
377
if (tb_route(sw)) {
drivers/thunderbolt/tmu.c
378
struct tb_port *up = tb_upstream_port(sw);
drivers/thunderbolt/tmu.c
381
sw->tmu.mode = TB_SWITCH_TMU_MODE_MEDRES_ENHANCED_UNI;
drivers/thunderbolt/tmu.c
384
sw->tmu.mode = TB_SWITCH_TMU_MODE_LOWRES;
drivers/thunderbolt/tmu.c
386
sw->tmu.mode = TB_SWITCH_TMU_MODE_HIFI_UNI;
drivers/thunderbolt/tmu.c
388
sw->tmu.mode = TB_SWITCH_TMU_MODE_HIFI_BI;
drivers/thunderbolt/tmu.c
391
sw->tmu.mode = TB_SWITCH_TMU_MODE_HIFI_BI;
drivers/thunderbolt/tmu.c
395
sw->tmu.mode_request = sw->tmu.mode;
drivers/thunderbolt/tmu.c
396
sw->tmu.has_ucap = ucap;
drivers/thunderbolt/tmu.c
411
int tb_switch_tmu_init(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
416
if (tb_switch_is_icm(sw))
drivers/thunderbolt/tmu.c
419
ret = tb_switch_find_cap(sw, TB_SWITCH_CAP_TMU);
drivers/thunderbolt/tmu.c
421
sw->tmu.cap = ret;
drivers/thunderbolt/tmu.c
423
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tmu.c
431
ret = tmu_mode_init(sw);
drivers/thunderbolt/tmu.c
435
tb_sw_dbg(sw, "TMU: current mode: %s\n", tmu_mode_name(sw->tmu.mode));
drivers/thunderbolt/tmu.c
447
int tb_switch_tmu_post_time(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
451
struct tb_switch *root_switch = sw->tb->root_switch;
drivers/thunderbolt/tmu.c
456
if (!tb_route(sw))
drivers/thunderbolt/tmu.c
459
if (!tb_switch_is_usb4(sw))
drivers/thunderbolt/tmu.c
484
ret = tb_switch_tmu_set_time_disruption(sw, true);
drivers/thunderbolt/tmu.c
488
post_local_time_offset = sw->tmu.cap + TMU_RTR_CS_22;
drivers/thunderbolt/tmu.c
489
post_time_offset = sw->tmu.cap + TMU_RTR_CS_24;
drivers/thunderbolt/tmu.c
490
post_time_high_offset = sw->tmu.cap + TMU_RTR_CS_25;
drivers/thunderbolt/tmu.c
496
ret = tb_sw_write(sw, &local_time, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
511
ret = tb_sw_write(sw, &post_time, TB_CFG_SWITCH, post_time_offset, 2);
drivers/thunderbolt/tmu.c
515
ret = tb_sw_write(sw, &post_time_high, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
522
ret = tb_sw_read(sw, &post_time, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
533
tb_sw_dbg(sw, "TMU: updated local time to %#llx\n", local_time);
drivers/thunderbolt/tmu.c
536
tb_switch_tmu_set_time_disruption(sw, false);
drivers/thunderbolt/tmu.c
565
int tb_switch_tmu_disable(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
568
if (sw->tmu.mode == TB_SWITCH_TMU_MODE_OFF)
drivers/thunderbolt/tmu.c
571
if (tb_route(sw)) {
drivers/thunderbolt/tmu.c
575
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/tmu.c
576
up = tb_upstream_port(sw);
drivers/thunderbolt/tmu.c
58
static bool tb_switch_tmu_enhanced_is_supported(const struct tb_switch *sw)
drivers/thunderbolt/tmu.c
588
ret = tb_switch_tmu_rate_write(sw, tmu_rates[TB_SWITCH_TMU_MODE_OFF]);
drivers/thunderbolt/tmu.c
597
switch (sw->tmu.mode) {
drivers/thunderbolt/tmu.c
60
return usb4_switch_version(sw) > 1;
drivers/thunderbolt/tmu.c
617
tb_switch_tmu_rate_write(sw, tmu_rates[TB_SWITCH_TMU_MODE_OFF]);
drivers/thunderbolt/tmu.c
620
sw->tmu.mode = TB_SWITCH_TMU_MODE_OFF;
drivers/thunderbolt/tmu.c
622
tb_sw_dbg(sw, "TMU: disabled\n");
drivers/thunderbolt/tmu.c
627
static void tb_switch_tmu_off(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
63
static int tb_switch_set_tmu_mode_params(struct tb_switch *sw,
drivers/thunderbolt/tmu.c
632
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/tmu.c
633
up = tb_upstream_port(sw);
drivers/thunderbolt/tmu.c
644
switch (sw->tmu.mode_request) {
drivers/thunderbolt/tmu.c
647
tb_switch_tmu_rate_write(tb_switch_parent(sw), rate);
drivers/thunderbolt/tmu.c
657
tb_switch_tmu_rate_write(sw, rate);
drivers/thunderbolt/tmu.c
659
tb_switch_set_tmu_mode_params(sw, sw->tmu.mode);
drivers/thunderbolt/tmu.c
668
static int tb_switch_tmu_enable_bidirectional(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
673
up = tb_upstream_port(sw);
drivers/thunderbolt/tmu.c
674
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/tmu.c
684
ret = tb_switch_tmu_rate_write(sw, tmu_rates[TB_SWITCH_TMU_MODE_HIFI_BI]);
drivers/thunderbolt/tmu.c
699
tb_switch_tmu_off(sw);
drivers/thunderbolt/tmu.c
704
static int tb_switch_tmu_disable_objections(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
706
struct tb_port *up = tb_upstream_port(sw);
drivers/thunderbolt/tmu.c
710
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
711
sw->cap_vsec_tmu + TB_TIME_VSEC_3_CS_9, 1);
drivers/thunderbolt/tmu.c
717
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
718
sw->cap_vsec_tmu + TB_TIME_VSEC_3_CS_9, 1);
drivers/thunderbolt/tmu.c
72
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
73
sw->tmu.cap + TMU_RTR_CS_0, 1);
drivers/thunderbolt/tmu.c
732
static int tb_switch_tmu_enable_unidirectional(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
737
up = tb_upstream_port(sw);
drivers/thunderbolt/tmu.c
738
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/tmu.c
739
ret = tb_switch_tmu_rate_write(tb_switch_parent(sw),
drivers/thunderbolt/tmu.c
740
tmu_rates[sw->tmu.mode_request]);
drivers/thunderbolt/tmu.c
744
ret = tb_switch_set_tmu_mode_params(sw, sw->tmu.mode_request);
drivers/thunderbolt/tmu.c
767
tb_switch_tmu_off(sw);
drivers/thunderbolt/tmu.c
775
static int tb_switch_tmu_enable_enhanced(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
777
unsigned int rate = tmu_rates[sw->tmu.mode_request];
drivers/thunderbolt/tmu.c
782
ret = tb_switch_set_tmu_mode_params(sw, sw->tmu.mode_request);
drivers/thunderbolt/tmu.c
786
up = tb_upstream_port(sw);
drivers/thunderbolt/tmu.c
787
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/tmu.c
789
ret = tb_port_set_tmu_mode_params(up, sw->tmu.mode_request);
drivers/thunderbolt/tmu.c
80
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
801
ret = tb_port_set_tmu_mode_params(down, sw->tmu.mode_request);
drivers/thunderbolt/tmu.c
81
sw->tmu.cap + TMU_RTR_CS_0, 1);
drivers/thunderbolt/tmu.c
816
tb_switch_tmu_off(sw);
drivers/thunderbolt/tmu.c
820
static void tb_switch_tmu_change_mode_prev(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
822
unsigned int rate = tmu_rates[sw->tmu.mode];
drivers/thunderbolt/tmu.c
825
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/tmu.c
826
up = tb_upstream_port(sw);
drivers/thunderbolt/tmu.c
833
switch (sw->tmu.mode) {
drivers/thunderbolt/tmu.c
837
tb_switch_tmu_rate_write(tb_switch_parent(sw), rate);
drivers/thunderbolt/tmu.c
842
tb_switch_tmu_rate_write(sw, rate);
drivers/thunderbolt/tmu.c
849
tb_switch_set_tmu_mode_params(sw, sw->tmu.mode);
drivers/thunderbolt/tmu.c
85
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
851
switch (sw->tmu.mode) {
drivers/thunderbolt/tmu.c
86
sw->tmu.cap + TMU_RTR_CS_15, 1);
drivers/thunderbolt/tmu.c
866
static int tb_switch_tmu_change_mode(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
868
unsigned int rate = tmu_rates[sw->tmu.mode_request];
drivers/thunderbolt/tmu.c
872
up = tb_upstream_port(sw);
drivers/thunderbolt/tmu.c
873
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/tmu.c
876
switch (sw->tmu.mode_request) {
drivers/thunderbolt/tmu.c
882
ret = tb_switch_tmu_rate_write(tb_switch_parent(sw), rate);
drivers/thunderbolt/tmu.c
891
ret = tb_switch_tmu_rate_write(sw, rate);
drivers/thunderbolt/tmu.c
901
ret = tb_switch_set_tmu_mode_params(sw, sw->tmu.mode_request);
drivers/thunderbolt/tmu.c
906
switch (sw->tmu.mode_request) {
drivers/thunderbolt/tmu.c
936
tb_switch_tmu_change_mode_prev(sw);
drivers/thunderbolt/tmu.c
950
int tb_switch_tmu_enable(struct tb_switch *sw)
drivers/thunderbolt/tmu.c
954
if (tb_switch_tmu_is_enabled(sw))
drivers/thunderbolt/tmu.c
957
if (tb_switch_is_titan_ridge(sw) &&
drivers/thunderbolt/tmu.c
958
(sw->tmu.mode_request == TB_SWITCH_TMU_MODE_LOWRES ||
drivers/thunderbolt/tmu.c
959
sw->tmu.mode_request == TB_SWITCH_TMU_MODE_HIFI_UNI)) {
drivers/thunderbolt/tmu.c
960
ret = tb_switch_tmu_disable_objections(sw);
drivers/thunderbolt/tmu.c
965
ret = tb_switch_tmu_set_time_disruption(sw, true);
drivers/thunderbolt/tmu.c
969
if (tb_route(sw)) {
drivers/thunderbolt/tmu.c
975
if (sw->tmu.mode == TB_SWITCH_TMU_MODE_OFF) {
drivers/thunderbolt/tmu.c
976
switch (sw->tmu.mode_request) {
drivers/thunderbolt/tmu.c
979
ret = tb_switch_tmu_enable_unidirectional(sw);
drivers/thunderbolt/tmu.c
983
ret = tb_switch_tmu_enable_bidirectional(sw);
drivers/thunderbolt/tmu.c
986
ret = tb_switch_tmu_enable_enhanced(sw);
drivers/thunderbolt/tmu.c
99
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH,
drivers/thunderbolt/tmu.c
992
} else if (sw->tmu.mode == TB_SWITCH_TMU_MODE_LOWRES ||
drivers/thunderbolt/tmu.c
993
sw->tmu.mode == TB_SWITCH_TMU_MODE_HIFI_UNI ||
drivers/thunderbolt/tmu.c
994
sw->tmu.mode == TB_SWITCH_TMU_MODE_HIFI_BI) {
drivers/thunderbolt/tmu.c
995
ret = tb_switch_tmu_change_mode(sw);
drivers/thunderbolt/tunnel.c
1019
struct tb_switch *sw = in->sw;
drivers/thunderbolt/tunnel.c
1020
struct tb *tb = in->sw->tb;
drivers/thunderbolt/tunnel.c
1027
if (!tb_switch_is_usb4(sw))
drivers/thunderbolt/tunnel.c
1095
if (tb_dp_is_usb4(tunnel->src_port->sw) &&
drivers/thunderbolt/tunnel.c
1130
return tb_dp_is_usb4(tunnel->src_port->sw) ?
drivers/thunderbolt/tunnel.c
130
const struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
134
usb3 = tb_acpi_may_tunnel_usb3() ? sw->max_usb3_credits : 0;
drivers/thunderbolt/tunnel.c
135
pcie = tb_acpi_may_tunnel_pcie() ? sw->max_pcie_credits : 0;
drivers/thunderbolt/tunnel.c
138
spare = min_not_zero(sw->max_dma_credits, dma_credits);
drivers/thunderbolt/tunnel.c
1394
const struct tb_switch *sw = tunnel->src_port->sw;
drivers/thunderbolt/tunnel.c
1398
if (tb_dp_is_usb4(sw)) {
drivers/thunderbolt/tunnel.c
1432
} else if (sw->generation >= 2) {
drivers/thunderbolt/tunnel.c
1457
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
1460
hop->initial_credits = sw->min_dp_aux_credits;
drivers/thunderbolt/tunnel.c
1486
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
1501
if (nfc_credits / sw->min_dp_main_credits > max_dp_streams)
drivers/thunderbolt/tunnel.c
1504
hop->nfc_credits = sw->min_dp_main_credits;
drivers/thunderbolt/tunnel.c
151
if (sw->min_dp_aux_credits + sw->min_dp_main_credits)
drivers/thunderbolt/tunnel.c
153
(sw->min_dp_aux_credits + sw->min_dp_main_credits);
drivers/thunderbolt/tunnel.c
159
credits -= ndp * (sw->min_dp_aux_credits + sw->min_dp_main_credits);
drivers/thunderbolt/tunnel.c
1724
pm_support = usb4_switch_version(in->sw) >= 2;
drivers/thunderbolt/tunnel.c
174
usb4_switch_version(in_port->sw) >= 2)
drivers/thunderbolt/tunnel.c
1756
const struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
1761
credits -= sw->max_pcie_credits;
drivers/thunderbolt/tunnel.c
1933
credits = min_not_zero(dma_credits, nhi->sw->max_dma_credits);
drivers/thunderbolt/tunnel.c
2071
struct tb_port *port = tb_upstream_port(tunnel->dst_port->sw);
drivers/thunderbolt/tunnel.c
2163
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
2167
credits = sw->max_usb3_credits;
drivers/thunderbolt/tunnel.c
2261
if (!tb_route(down->sw)) {
drivers/thunderbolt/tunnel.c
2318
if (!tb_route(down->sw) && (max_up > 0 || max_down > 0)) {
drivers/thunderbolt/tunnel.c
2357
if (!tb_route(down->sw)) {
drivers/thunderbolt/tunnel.c
259
tb_route(src_port->sw), src_port->port,
drivers/thunderbolt/tunnel.c
260
tb_route(dst_port->sw), dst_port->port,
drivers/thunderbolt/tunnel.c
318
ret = tb_switch_is_usb4(down->sw) ?
drivers/thunderbolt/tunnel.c
323
return tb_switch_is_usb4(up->sw) ?
drivers/thunderbolt/tunnel.c
329
struct tb_port *port = tb_upstream_port(tunnel->dst_port->sw);
drivers/thunderbolt/tunnel.c
333
if ((usb4_switch_version(tunnel->src_port->sw) < 2) ||
drivers/thunderbolt/tunnel.c
334
(usb4_switch_version(tunnel->dst_port->sw) < 2))
drivers/thunderbolt/tunnel.c
394
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
401
credits = min(sw->max_pcie_credits, available);
drivers/thunderbolt/tunnel.c
599
if (!tb_switch_find_port(port->sw, TB_TYPE_PCIE_UP))
drivers/thunderbolt/tunnel.c
601
if (!tb_switch_find_port(port->remote->sw, TB_TYPE_PCIE_DOWN))
drivers/thunderbolt/tunnel.c
604
if (!tb_switch_find_port(port->sw, TB_TYPE_PCIE_DOWN))
drivers/thunderbolt/tunnel.c
606
if (!tb_switch_find_port(port->remote->sw, TB_TYPE_PCIE_UP))
drivers/thunderbolt/tunnel.c
618
static bool tb_dp_is_usb4(const struct tb_switch *sw)
drivers/thunderbolt/tunnel.c
621
return tb_switch_is_usb4(sw) || tb_switch_is_titan_ridge(sw);
drivers/thunderbolt/tunnel.c
632
if (!tb_dp_is_usb4(in->sw) || !tb_dp_is_usb4(out->sw))
drivers/thunderbolt/tunnel.c
826
if (in->sw->generation < 2 || out->sw->generation < 2)
drivers/thunderbolt/tunnel.c
905
if (tb_route(out->sw) && tb_switch_is_titan_ridge(out->sw)) {
drivers/thunderbolt/tunnel.h
228
tb_route(__tunnel->src_port->sw), \
drivers/thunderbolt/tunnel.h
230
tb_route(__tunnel->dst_port->sw), \
drivers/thunderbolt/usb4.c
100
ret = tb_sw_read(sw, rx_data, TB_CFG_SWITCH, ROUTER_CS_9,
drivers/thunderbolt/usb4.c
1015
struct tb_port *usb4_switch_map_pcie_down(struct tb_switch *sw,
drivers/thunderbolt/usb4.c
1018
int usb4_idx = usb4_port_index(sw, port);
drivers/thunderbolt/usb4.c
1023
tb_switch_for_each_port(sw, p) {
drivers/thunderbolt/usb4.c
1048
struct tb_port *usb4_switch_map_usb3_down(struct tb_switch *sw,
drivers/thunderbolt/usb4.c
1051
int usb4_idx = usb4_port_index(sw, port);
drivers/thunderbolt/usb4.c
1056
tb_switch_for_each_port(sw, p) {
drivers/thunderbolt/usb4.c
1078
int usb4_switch_add_ports(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
1082
if (tb_switch_is_icm(sw) || !tb_switch_is_usb4(sw))
drivers/thunderbolt/usb4.c
1085
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/usb4.c
109
static int __usb4_switch_op(struct tb_switch *sw, u16 opcode, u32 *metadata,
drivers/thunderbolt/usb4.c
1095
usb4_switch_remove_ports(sw);
drivers/thunderbolt/usb4.c
1111
void usb4_switch_remove_ports(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
1115
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/usb4.c
113
const struct tb_cm_ops *cm_ops = sw->tb->cm_ops;
drivers/thunderbolt/usb4.c
126
ret = cm_ops->usb4_switch_op(sw, opcode, metadata, status,
drivers/thunderbolt/usb4.c
138
return usb4_native_switch_op(sw, opcode, metadata, status, tx_data,
drivers/thunderbolt/usb4.c
142
static inline int usb4_switch_op(struct tb_switch *sw, u16 opcode,
drivers/thunderbolt/usb4.c
145
return __usb4_switch_op(sw, opcode, metadata, status, NULL, 0, NULL, 0);
drivers/thunderbolt/usb4.c
148
static inline int usb4_switch_op_data(struct tb_switch *sw, u16 opcode,
drivers/thunderbolt/usb4.c
153
return __usb4_switch_op(sw, opcode, metadata, status, tx_data,
drivers/thunderbolt/usb4.c
163
void usb4_switch_check_wakes(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
171
if (tb_route(sw)) {
drivers/thunderbolt/usb4.c
172
if (tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_6, 1))
drivers/thunderbolt/usb4.c
175
tb_sw_dbg(sw, "PCIe wake: %s, USB3 wake: %s\n",
drivers/thunderbolt/usb4.c
186
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/usb4.c
210
pm_wakeup_event(&sw->dev, 0);
drivers/thunderbolt/usb4.c
2230
if (tb_route(port->sw))
drivers/thunderbolt/usb4.c
243
int usb4_switch_setup(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
245
struct tb_switch *parent = tb_switch_parent(sw);
drivers/thunderbolt/usb4.c
2508
if (!tb_switch_is_usb4(port->sw))
drivers/thunderbolt/usb4.c
251
if (!tb_route(sw))
drivers/thunderbolt/usb4.c
254
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_6, 1);
drivers/thunderbolt/usb4.c
258
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/usb4.c
259
sw->link_usb4 = link_is_usb4(down);
drivers/thunderbolt/usb4.c
260
tb_sw_dbg(sw, "link: %s\n", sw->link_usb4 ? "USB4" : "TBT");
drivers/thunderbolt/usb4.c
265
tb_sw_dbg(sw, "TBT3 support: %s, xHCI: %s\n",
drivers/thunderbolt/usb4.c
268
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
272
if (tb_acpi_may_tunnel_usb3() && sw->link_usb4 &&
drivers/thunderbolt/usb4.c
297
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
301
return tb_switch_wait_for_bit(sw, ROUTER_CS_6, ROUTER_CS_6_RR,
drivers/thunderbolt/usb4.c
316
int usb4_switch_configuration_valid(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
321
if (!tb_route(sw))
drivers/thunderbolt/usb4.c
324
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
330
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
334
return tb_switch_wait_for_bit(sw, ROUTER_CS_6, ROUTER_CS_6_CR,
drivers/thunderbolt/usb4.c
347
int usb4_switch_read_uid(struct tb_switch *sw, u64 *uid)
drivers/thunderbolt/usb4.c
349
return tb_sw_read(sw, uid, TB_CFG_SWITCH, ROUTER_CS_7, 2);
drivers/thunderbolt/usb4.c
356
struct tb_switch *sw = data;
drivers/thunderbolt/usb4.c
365
ret = usb4_switch_op_data(sw, USB4_SWITCH_OP_DROM_READ, &metadata,
drivers/thunderbolt/usb4.c
386
int usb4_switch_drom_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/usb4.c
390
usb4_switch_drom_read_block, sw);
drivers/thunderbolt/usb4.c
402
bool usb4_switch_lane_bonding_possible(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
408
up = tb_upstream_port(sw);
drivers/thunderbolt/usb4.c
426
int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime)
drivers/thunderbolt/usb4.c
429
u64 route = tb_route(sw);
drivers/thunderbolt/usb4.c
438
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/usb4.c
478
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
490
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
507
int usb4_switch_set_sleep(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
513
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
519
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
523
return tb_switch_wait_for_bit(sw, ROUTER_CS_6, ROUTER_CS_6_SLPR,
drivers/thunderbolt/usb4.c
536
int usb4_switch_nvm_sector_size(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
54
static int usb4_native_switch_op(struct tb_switch *sw, u16 opcode,
drivers/thunderbolt/usb4.c
542
ret = usb4_switch_op(sw, USB4_SWITCH_OP_NVM_SECTOR_SIZE, &metadata,
drivers/thunderbolt/usb4.c
556
struct tb_switch *sw = data;
drivers/thunderbolt/usb4.c
566
ret = usb4_switch_op_data(sw, USB4_SWITCH_OP_NVM_READ, &metadata,
drivers/thunderbolt/usb4.c
588
int usb4_switch_nvm_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/usb4.c
592
usb4_switch_nvm_read_block, sw);
drivers/thunderbolt/usb4.c
605
int usb4_switch_nvm_set_offset(struct tb_switch *sw, unsigned int address)
drivers/thunderbolt/usb4.c
615
ret = usb4_switch_op(sw, USB4_SWITCH_OP_NVM_SET_OFFSET, &metadata,
drivers/thunderbolt/usb4.c
626
struct tb_switch *sw = data;
drivers/thunderbolt/usb4.c
63
ret = tb_sw_write(sw, metadata, TB_CFG_SWITCH, ROUTER_CS_25, 1);
drivers/thunderbolt/usb4.c
630
ret = usb4_switch_op_data(sw, USB4_SWITCH_OP_NVM_WRITE, NULL, &status,
drivers/thunderbolt/usb4.c
652
int usb4_switch_nvm_write(struct tb_switch *sw, unsigned int address,
drivers/thunderbolt/usb4.c
657
ret = usb4_switch_nvm_set_offset(sw, address);
drivers/thunderbolt/usb4.c
662
usb4_switch_nvm_write_next_block, sw);
drivers/thunderbolt/usb4.c
68
ret = tb_sw_write(sw, tx_data, TB_CFG_SWITCH, ROUTER_CS_9,
drivers/thunderbolt/usb4.c
680
int usb4_switch_nvm_authenticate(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
684
ret = usb4_switch_op(sw, USB4_SWITCH_OP_NVM_AUTH, NULL, NULL);
drivers/thunderbolt/usb4.c
714
int usb4_switch_nvm_authenticate_status(struct tb_switch *sw, u32 *status)
drivers/thunderbolt/usb4.c
716
const struct tb_cm_ops *cm_ops = sw->tb->cm_ops;
drivers/thunderbolt/usb4.c
722
ret = cm_ops->usb4_switch_nvm_authenticate_status(sw, status);
drivers/thunderbolt/usb4.c
727
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_26, 1);
drivers/thunderbolt/usb4.c
75
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH, ROUTER_CS_26, 1);
drivers/thunderbolt/usb4.c
758
int usb4_switch_credits_init(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
768
ret = usb4_switch_op_data(sw, USB4_SWITCH_OP_BUFFER_ALLOC, &metadata,
drivers/thunderbolt/usb4.c
785
tb_sw_dbg(sw, "credit allocation parameters:\n");
drivers/thunderbolt/usb4.c
79
ret = tb_switch_wait_for_bit(sw, ROUTER_CS_26, ROUTER_CS_26_OV, 0, 500);
drivers/thunderbolt/usb4.c
795
tb_sw_dbg(sw, " USB3: %u\n", value);
drivers/thunderbolt/usb4.c
799
tb_sw_dbg(sw, " DP AUX: %u\n", value);
drivers/thunderbolt/usb4.c
803
tb_sw_dbg(sw, " DP main: %u\n", value);
drivers/thunderbolt/usb4.c
807
tb_sw_dbg(sw, " PCIe: %u\n", value);
drivers/thunderbolt/usb4.c
811
tb_sw_dbg(sw, " DMA: %u\n", value);
drivers/thunderbolt/usb4.c
815
tb_sw_dbg(sw, " unknown credit allocation index %#x, skipping\n",
drivers/thunderbolt/usb4.c
828
if (!tb_route(sw) && max_dma < 0) {
drivers/thunderbolt/usb4.c
829
tb_sw_warn(sw, "host router is missing baMaxHI\n");
drivers/thunderbolt/usb4.c
83
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_26, 1);
drivers/thunderbolt/usb4.c
834
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/usb4.c
841
tb_sw_warn(sw, "multiple USB4 ports require baMinDPaux/baMinDPmain\n");
drivers/thunderbolt/usb4.c
845
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/usb4.c
847
tb_sw_warn(sw, "missing baMinDPmain");
drivers/thunderbolt/usb4.c
852
tb_sw_warn(sw, "missing baMinDPaux");
drivers/thunderbolt/usb4.c
857
tb_sw_warn(sw, "missing baMaxUSB3");
drivers/thunderbolt/usb4.c
862
tb_sw_warn(sw, "missing baMaxPCIe");
drivers/thunderbolt/usb4.c
871
sw->credit_allocation = true;
drivers/thunderbolt/usb4.c
873
sw->max_usb3_credits = max_usb3;
drivers/thunderbolt/usb4.c
875
sw->min_dp_aux_credits = min_dp_aux;
drivers/thunderbolt/usb4.c
877
sw->min_dp_main_credits = min_dp_main;
drivers/thunderbolt/usb4.c
879
sw->max_pcie_credits = max_pcie;
drivers/thunderbolt/usb4.c
881
sw->max_dma_credits = max_dma;
drivers/thunderbolt/usb4.c
900
bool usb4_switch_query_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/usb4.c
906
ret = usb4_switch_op(sw, USB4_SWITCH_OP_QUERY_DP_RESOURCE, &metadata,
drivers/thunderbolt/usb4.c
933
int usb4_switch_alloc_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/usb4.c
939
ret = usb4_switch_op(sw, USB4_SWITCH_OP_ALLOC_DP_RESOURCE, &metadata,
drivers/thunderbolt/usb4.c
95
ret = tb_sw_read(sw, metadata, TB_CFG_SWITCH, ROUTER_CS_25, 1);
drivers/thunderbolt/usb4.c
958
int usb4_switch_dealloc_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/usb4.c
964
ret = usb4_switch_op(sw, USB4_SWITCH_OP_DEALLOC_DP_RESOURCE, &metadata,
drivers/thunderbolt/usb4.c
982
int usb4_port_index(const struct tb_switch *sw, const struct tb_port *port)
drivers/thunderbolt/usb4.c
988
tb_switch_for_each_port(sw, p) {
drivers/thunderbolt/usb4_port.c
123
struct tb_switch *sw;
drivers/thunderbolt/usb4_port.c
132
sw = usb4->port->sw;
drivers/thunderbolt/usb4_port.c
133
tb = sw->tb;
drivers/thunderbolt/usb4_port.c
147
return usb4_port_index(sw, usb4->port) == usb4_port_num;
drivers/thunderbolt/usb4_port.c
164
struct tb *tb = port->sw->tb;
drivers/thunderbolt/usb4_port.c
215
struct tb *tb = port->sw->tb;
drivers/thunderbolt/usb4_port.c
314
usb4->dev.parent = &port->sw->dev;
drivers/thunderbolt/usb4_port.c
46
struct tb *tb = port->sw->tb;
drivers/thunderbolt/usb4_port.c
53
link = port->sw->link_usb4 ? "usb4" : "tbt";
drivers/thunderbolt/usb4_port.c
55
link = port->remote->sw->link_usb4 ? "usb4" : "tbt";
drivers/thunderbolt/xdomain.c
2493
static struct tb_xdomain *switch_find_xdomain(struct tb_switch *sw,
drivers/thunderbolt/xdomain.c
2498
if (!sw)
drivers/thunderbolt/xdomain.c
2501
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/xdomain.c
2519
xd = switch_find_xdomain(port->remote->sw, lookup);
drivers/usb/cdns3/core.c
332
static enum usb_role cdns_role_get(struct usb_role_switch *sw)
drivers/usb/cdns3/core.c
334
struct cdns *cdns = usb_role_switch_get_drvdata(sw);
drivers/usb/cdns3/core.c
348
static int cdns_role_set(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/cdns3/core.c
350
struct cdns *cdns = usb_role_switch_get_drvdata(sw);
drivers/usb/chipidea/core.c
603
static enum usb_role ci_usb_role_switch_get(struct usb_role_switch *sw)
drivers/usb/chipidea/core.c
605
struct ci_hdrc *ci = usb_role_switch_get_drvdata(sw);
drivers/usb/chipidea/core.c
616
static int ci_usb_role_switch_set(struct usb_role_switch *sw,
drivers/usb/chipidea/core.c
619
struct ci_hdrc *ci = usb_role_switch_get_drvdata(sw);
drivers/usb/class/cdc-wdm.c
272
goto sw; /* halt is cleared in work */
drivers/usb/class/cdc-wdm.c
327
sw:
drivers/usb/dwc2/drd.c
86
static int dwc2_drd_role_sw_set(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/dwc2/drd.c
88
struct dwc2_hsotg *hsotg = usb_role_switch_get_drvdata(sw);
drivers/usb/dwc3/drd.c
450
static int dwc3_usb_role_switch_set(struct usb_role_switch *sw,
drivers/usb/dwc3/drd.c
453
struct dwc3 *dwc = usb_role_switch_get_drvdata(sw);
drivers/usb/dwc3/drd.c
476
static enum usb_role dwc3_usb_role_switch_get(struct usb_role_switch *sw)
drivers/usb/dwc3/drd.c
478
struct dwc3 *dwc = usb_role_switch_get_drvdata(sw);
drivers/usb/dwc3/dwc3-apple.c
353
static int dwc3_usb_role_switch_set(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/dwc3/dwc3-apple.c
355
struct dwc3_apple *appledwc = usb_role_switch_get_drvdata(sw);
drivers/usb/dwc3/dwc3-apple.c
399
static enum usb_role dwc3_usb_role_switch_get(struct usb_role_switch *sw)
drivers/usb/dwc3/dwc3-apple.c
401
struct dwc3_apple *appledwc = usb_role_switch_get_drvdata(sw);
drivers/usb/dwc3/dwc3-meson-g12a.c
515
static int dwc3_meson_g12a_role_set(struct usb_role_switch *sw,
drivers/usb/dwc3/dwc3-meson-g12a.c
518
struct dwc3_meson_g12a *priv = usb_role_switch_get_drvdata(sw);
drivers/usb/dwc3/dwc3-meson-g12a.c
536
static enum usb_role dwc3_meson_g12a_role_get(struct usb_role_switch *sw)
drivers/usb/dwc3/dwc3-meson-g12a.c
538
struct dwc3_meson_g12a *priv = usb_role_switch_get_drvdata(sw);
drivers/usb/dwc3/dwc3-rtk.c
118
static int dwc3_usb_role_switch_set(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/dwc3/dwc3-rtk.c
120
struct dwc3_rtk *rtk = usb_role_switch_get_drvdata(sw);
drivers/usb/dwc3/dwc3-rtk.c
127
static enum usb_role dwc3_usb_role_switch_get(struct usb_role_switch *sw)
drivers/usb/dwc3/dwc3-rtk.c
129
struct dwc3_rtk *rtk = usb_role_switch_get_drvdata(sw);
drivers/usb/gadget/function/f_midi2.c
1536
__be32 sw;
drivers/usb/gadget/function/f_midi2.c
1569
sw = cpu_to_be32(ep->info.sw_revision);
drivers/usb/gadget/function/f_midi2.c
1570
memcpy(ump->info.sw_revision, &sw, 4);
drivers/usb/gadget/udc/renesas_usb3.c
2441
static enum usb_role renesas_usb3_role_switch_get(struct usb_role_switch *sw)
drivers/usb/gadget/udc/renesas_usb3.c
2443
struct renesas_usb3 *usb3 = usb_role_switch_get_drvdata(sw);
drivers/usb/gadget/udc/renesas_usb3.c
2540
static int renesas_usb3_role_switch_set(struct usb_role_switch *sw,
drivers/usb/gadget/udc/renesas_usb3.c
2543
struct renesas_usb3 *usb3 = usb_role_switch_get_drvdata(sw);
drivers/usb/mtu3/mtu3_dr.c
261
static int ssusb_role_sw_set(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/mtu3/mtu3_dr.c
263
struct ssusb_mtk *ssusb = usb_role_switch_get_drvdata(sw);
drivers/usb/mtu3/mtu3_dr.c
271
static enum usb_role ssusb_role_sw_get(struct usb_role_switch *sw)
drivers/usb/mtu3/mtu3_dr.c
273
struct ssusb_mtk *ssusb = usb_role_switch_get_drvdata(sw);
drivers/usb/musb/jz4740.c
79
static int jz4740_musb_role_switch_set(struct usb_role_switch *sw,
drivers/usb/musb/jz4740.c
82
struct jz4740_glue *glue = usb_role_switch_get_drvdata(sw);
drivers/usb/musb/mediatek.c
118
static int musb_usb_role_sx_set(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/musb/mediatek.c
120
return mtk_otg_switch_set(usb_role_switch_get_drvdata(sw), role);
drivers/usb/musb/mediatek.c
123
static enum usb_role musb_usb_role_sx_get(struct usb_role_switch *sw)
drivers/usb/musb/mediatek.c
125
struct mtk_glue *glue = usb_role_switch_get_drvdata(sw);
drivers/usb/roles/class.c
106
enum usb_role usb_role_switch_get_role(struct usb_role_switch *sw)
drivers/usb/roles/class.c
110
if (IS_ERR_OR_NULL(sw) || !sw->registered)
drivers/usb/roles/class.c
113
mutex_lock(&sw->lock);
drivers/usb/roles/class.c
115
if (sw->get)
drivers/usb/roles/class.c
116
role = sw->get(sw);
drivers/usb/roles/class.c
118
role = sw->role;
drivers/usb/roles/class.c
120
mutex_unlock(&sw->lock);
drivers/usb/roles/class.c
169
struct usb_role_switch *sw;
drivers/usb/roles/class.c
171
sw = usb_role_switch_is_parent(dev_fwnode(dev));
drivers/usb/roles/class.c
172
if (!sw)
drivers/usb/roles/class.c
173
sw = device_connection_find_match(dev, "usb-role-switch", NULL,
drivers/usb/roles/class.c
176
if (!IS_ERR_OR_NULL(sw))
drivers/usb/roles/class.c
177
WARN_ON(!try_module_get(sw->module));
drivers/usb/roles/class.c
179
return sw;
drivers/usb/roles/class.c
192
struct usb_role_switch *sw;
drivers/usb/roles/class.c
194
sw = usb_role_switch_is_parent(fwnode);
drivers/usb/roles/class.c
195
if (!sw)
drivers/usb/roles/class.c
196
sw = fwnode_connection_find_match(fwnode, "usb-role-switch",
drivers/usb/roles/class.c
198
if (!IS_ERR_OR_NULL(sw))
drivers/usb/roles/class.c
199
WARN_ON(!try_module_get(sw->module));
drivers/usb/roles/class.c
201
return sw;
drivers/usb/roles/class.c
211
void usb_role_switch_put(struct usb_role_switch *sw)
drivers/usb/roles/class.c
213
if (!IS_ERR_OR_NULL(sw)) {
drivers/usb/roles/class.c
214
module_put(sw->module);
drivers/usb/roles/class.c
215
put_device(&sw->dev);
drivers/usb/roles/class.c
231
struct usb_role_switch *sw = NULL;
drivers/usb/roles/class.c
238
sw = to_role_switch(dev);
drivers/usb/roles/class.c
239
WARN_ON(!try_module_get(sw->module));
drivers/usb/roles/class.c
242
return sw;
drivers/usb/roles/class.c
250
struct usb_role_switch *sw = to_role_switch(dev);
drivers/usb/roles/class.c
252
if (sw->allow_userspace_control)
drivers/usb/roles/class.c
276
struct usb_role_switch *sw = to_role_switch(dev);
drivers/usb/roles/class.c
277
enum usb_role role = usb_role_switch_get_role(sw);
drivers/usb/roles/class.c
285
struct usb_role_switch *sw = to_role_switch(dev);
drivers/usb/roles/class.c
298
ret = usb_role_switch_set_role(sw, ret);
drivers/usb/roles/class.c
334
struct usb_role_switch *sw = to_role_switch(dev);
drivers/usb/roles/class.c
336
mutex_destroy(&sw->lock);
drivers/usb/roles/class.c
337
lockdep_unregister_key(&sw->key);
drivers/usb/roles/class.c
338
kfree(sw);
drivers/usb/roles/class.c
366
struct usb_role_switch *sw;
drivers/usb/roles/class.c
372
sw = kzalloc_obj(*sw);
drivers/usb/roles/class.c
373
if (!sw)
drivers/usb/roles/class.c
376
lockdep_register_key(&sw->key);
drivers/usb/roles/class.c
377
mutex_init_with_key(&sw->lock, &sw->key);
drivers/usb/roles/class.c
379
sw->allow_userspace_control = desc->allow_userspace_control;
drivers/usb/roles/class.c
380
sw->usb2_port = desc->usb2_port;
drivers/usb/roles/class.c
381
sw->usb3_port = desc->usb3_port;
drivers/usb/roles/class.c
382
sw->udc = desc->udc;
drivers/usb/roles/class.c
383
sw->set = desc->set;
drivers/usb/roles/class.c
384
sw->get = desc->get;
drivers/usb/roles/class.c
386
sw->module = parent->driver->owner;
drivers/usb/roles/class.c
387
sw->dev.parent = parent;
drivers/usb/roles/class.c
388
sw->dev.fwnode = desc->fwnode;
drivers/usb/roles/class.c
389
sw->dev.class = &role_class;
drivers/usb/roles/class.c
390
sw->dev.type = &usb_role_dev_type;
drivers/usb/roles/class.c
391
dev_set_drvdata(&sw->dev, desc->driver_data);
drivers/usb/roles/class.c
392
dev_set_name(&sw->dev, "%s-role-switch",
drivers/usb/roles/class.c
395
sw->registered = true;
drivers/usb/roles/class.c
397
ret = device_register(&sw->dev);
drivers/usb/roles/class.c
399
sw->registered = false;
drivers/usb/roles/class.c
400
put_device(&sw->dev);
drivers/usb/roles/class.c
404
if (dev_fwnode(&sw->dev)) {
drivers/usb/roles/class.c
405
ret = component_add(&sw->dev, &connector_ops);
drivers/usb/roles/class.c
407
dev_warn(&sw->dev, "failed to add component\n");
drivers/usb/roles/class.c
412
return sw;
drivers/usb/roles/class.c
422
void usb_role_switch_unregister(struct usb_role_switch *sw)
drivers/usb/roles/class.c
424
if (IS_ERR_OR_NULL(sw))
drivers/usb/roles/class.c
426
sw->registered = false;
drivers/usb/roles/class.c
427
if (dev_fwnode(&sw->dev))
drivers/usb/roles/class.c
428
component_del(&sw->dev, &connector_ops);
drivers/usb/roles/class.c
429
device_unregister(&sw->dev);
drivers/usb/roles/class.c
438
void usb_role_switch_set_drvdata(struct usb_role_switch *sw, void *data)
drivers/usb/roles/class.c
440
dev_set_drvdata(&sw->dev, data);
drivers/usb/roles/class.c
448
void *usb_role_switch_get_drvdata(struct usb_role_switch *sw)
drivers/usb/roles/class.c
450
return dev_get_drvdata(&sw->dev);
drivers/usb/roles/class.c
75
int usb_role_switch_set_role(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/roles/class.c
79
if (IS_ERR_OR_NULL(sw))
drivers/usb/roles/class.c
82
if (!sw->registered)
drivers/usb/roles/class.c
85
mutex_lock(&sw->lock);
drivers/usb/roles/class.c
87
ret = sw->set(sw, role);
drivers/usb/roles/class.c
89
sw->role = role;
drivers/usb/roles/class.c
90
kobject_uevent(&sw->dev.kobj, KOBJ_CHANGE);
drivers/usb/roles/class.c
93
mutex_unlock(&sw->lock);
drivers/usb/roles/intel-xhci-usb-role-switch.c
131
static enum usb_role intel_xhci_usb_get_role(struct usb_role_switch *sw)
drivers/usb/roles/intel-xhci-usb-role-switch.c
133
struct intel_xhci_usb_data *data = usb_role_switch_get_drvdata(sw);
drivers/usb/roles/intel-xhci-usb-role-switch.c
55
static int intel_xhci_usb_set_role(struct usb_role_switch *sw,
drivers/usb/roles/intel-xhci-usb-role-switch.c
58
struct intel_xhci_usb_data *data = usb_role_switch_get_drvdata(sw);
drivers/usb/typec/anx7411.c
1051
static int anx7411_usb_set_orientation(struct typec_switch_dev *sw,
drivers/usb/typec/class.c
2116
typec_switch_put(port->sw);
drivers/usb/typec/class.c
2396
ret = typec_switch_set(port->sw, orientation);
drivers/usb/typec/class.c
2777
port->sw = typec_switch_get(&port->dev);
drivers/usb/typec/class.c
2778
if (IS_ERR(port->sw)) {
drivers/usb/typec/class.c
2779
ret = PTR_ERR(port->sw);
drivers/usb/typec/class.h
68
struct typec_switch *sw;
drivers/usb/typec/mux.c
111
sw->sw_devs[i] = sw_devs[i];
drivers/usb/typec/mux.c
114
sw->num_sw_devs = count;
drivers/usb/typec/mux.c
116
return sw;
drivers/usb/typec/mux.c
124
kfree(sw);
drivers/usb/typec/mux.c
136
void typec_switch_put(struct typec_switch *sw)
drivers/usb/typec/mux.c
141
if (IS_ERR_OR_NULL(sw))
drivers/usb/typec/mux.c
144
for (i = 0; i < sw->num_sw_devs; i++) {
drivers/usb/typec/mux.c
145
sw_dev = sw->sw_devs[i];
drivers/usb/typec/mux.c
150
kfree(sw);
drivers/usb/typec/mux.c
213
int typec_switch_set(struct typec_switch *sw,
drivers/usb/typec/mux.c
220
if (IS_ERR_OR_NULL(sw))
drivers/usb/typec/mux.c
223
for (i = 0; i < sw->num_sw_devs; i++) {
drivers/usb/typec/mux.c
224
sw_dev = sw->sw_devs[i];
drivers/usb/typec/mux.c
83
struct typec_switch *sw;
drivers/usb/typec/mux.c
88
sw = kzalloc_obj(*sw);
drivers/usb/typec/mux.c
89
if (!sw)
drivers/usb/typec/mux.c
98
kfree(sw);
drivers/usb/typec/mux/fsa4480.c
149
static int fsa4480_switch_set(struct typec_switch_dev *sw,
drivers/usb/typec/mux/fsa4480.c
152
struct fsa4480 *fsa = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/fsa4480.c
312
fsa->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/fsa4480.c
313
if (IS_ERR(fsa->sw))
drivers/usb/typec/mux/fsa4480.c
314
return dev_err_probe(dev, PTR_ERR(fsa->sw), "failed to register typec switch\n");
drivers/usb/typec/mux/fsa4480.c
322
typec_switch_unregister(fsa->sw);
drivers/usb/typec/mux/fsa4480.c
335
typec_switch_unregister(fsa->sw);
drivers/usb/typec/mux/fsa4480.c
58
struct typec_switch_dev *sw;
drivers/usb/typec/mux/gpio-sbu-mux.c
123
sbu_mux->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/gpio-sbu-mux.c
124
if (IS_ERR(sbu_mux->sw))
drivers/usb/typec/mux/gpio-sbu-mux.c
125
return dev_err_probe(dev, PTR_ERR(sbu_mux->sw),
drivers/usb/typec/mux/gpio-sbu-mux.c
134
typec_switch_unregister(sbu_mux->sw);
drivers/usb/typec/mux/gpio-sbu-mux.c
151
typec_switch_unregister(sbu_mux->sw);
drivers/usb/typec/mux/gpio-sbu-mux.c
18
struct typec_switch_dev *sw;
drivers/usb/typec/mux/gpio-sbu-mux.c
26
static int gpio_sbu_switch_set(struct typec_switch_dev *sw,
drivers/usb/typec/mux/gpio-sbu-mux.c
29
struct gpio_sbu_mux *sbu_mux = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/intel_pmc_mux.c
544
static int pmc_usb_set_orientation(struct typec_switch_dev *sw,
drivers/usb/typec/mux/intel_pmc_mux.c
547
struct pmc_usb_port *port = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/intel_pmc_mux.c
556
static int pmc_usb_set_role(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/typec/mux/intel_pmc_mux.c
558
struct pmc_usb_port *port = usb_role_switch_get_drvdata(sw);
drivers/usb/typec/mux/it5205.c
226
it->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/it5205.c
227
if (IS_ERR(it->sw))
drivers/usb/typec/mux/it5205.c
228
return dev_err_probe(dev, PTR_ERR(it->sw),
drivers/usb/typec/mux/it5205.c
237
typec_switch_unregister(it->sw);
drivers/usb/typec/mux/it5205.c
252
typec_switch_unregister(it->sw);
drivers/usb/typec/mux/it5205.c
265
typec_switch_unregister(it->sw);
drivers/usb/typec/mux/it5205.c
65
struct typec_switch_dev *sw;
drivers/usb/typec/mux/it5205.c
69
static int it5205_switch_set(struct typec_switch_dev *sw, enum typec_orientation orientation)
drivers/usb/typec/mux/it5205.c
71
struct it5205 *it = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/nb7vpq904m.c
254
static int nb7vpq904m_sw_set(struct typec_switch_dev *sw, enum typec_orientation orientation)
drivers/usb/typec/mux/nb7vpq904m.c
256
struct nb7vpq904m *nb7 = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/nb7vpq904m.c
450
nb7->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/nb7vpq904m.c
451
if (IS_ERR(nb7->sw)) {
drivers/usb/typec/mux/nb7vpq904m.c
452
ret = dev_err_probe(dev, PTR_ERR(nb7->sw),
drivers/usb/typec/mux/nb7vpq904m.c
471
typec_switch_unregister(nb7->sw);
drivers/usb/typec/mux/nb7vpq904m.c
491
typec_switch_unregister(nb7->sw);
drivers/usb/typec/mux/nb7vpq904m.c
67
struct typec_switch_dev *sw;
drivers/usb/typec/mux/pi3usb30532.c
140
pi->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/pi3usb30532.c
141
if (IS_ERR(pi->sw)) {
drivers/usb/typec/mux/pi3usb30532.c
143
PTR_ERR(pi->sw));
drivers/usb/typec/mux/pi3usb30532.c
144
return PTR_ERR(pi->sw);
drivers/usb/typec/mux/pi3usb30532.c
153
typec_switch_unregister(pi->sw);
drivers/usb/typec/mux/pi3usb30532.c
168
typec_switch_unregister(pi->sw);
drivers/usb/typec/mux/pi3usb30532.c
26
struct typec_switch_dev *sw;
drivers/usb/typec/mux/pi3usb30532.c
48
static int pi3usb30532_sw_set(struct typec_switch_dev *sw,
drivers/usb/typec/mux/pi3usb30532.c
51
struct pi3usb30532 *pi = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/ps883x.c
269
static int ps883x_sw_set(struct typec_switch_dev *sw,
drivers/usb/typec/mux/ps883x.c
272
struct ps883x_retimer *retimer = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/ps883x.c
461
retimer->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/ps883x.c
462
if (IS_ERR(retimer->sw)) {
drivers/usb/typec/mux/ps883x.c
463
ret = PTR_ERR(retimer->sw);
drivers/usb/typec/mux/ps883x.c
48
struct typec_switch_dev *sw;
drivers/usb/typec/mux/ps883x.c
483
typec_switch_unregister(retimer->sw);
drivers/usb/typec/mux/ps883x.c
502
typec_switch_unregister(retimer->sw);
drivers/usb/typec/mux/ptn36502.c
214
static int ptn36502_sw_set(struct typec_switch_dev *sw, enum typec_orientation orientation)
drivers/usb/typec/mux/ptn36502.c
216
struct ptn36502 *ptn = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/ptn36502.c
358
ptn->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/ptn36502.c
359
if (IS_ERR(ptn->sw)) {
drivers/usb/typec/mux/ptn36502.c
360
ret = dev_err_probe(dev, PTR_ERR(ptn->sw),
drivers/usb/typec/mux/ptn36502.c
379
typec_switch_unregister(ptn->sw);
drivers/usb/typec/mux/ptn36502.c
398
typec_switch_unregister(ptn->sw);
drivers/usb/typec/mux/ptn36502.c
66
struct typec_switch_dev *sw;
drivers/usb/typec/mux/tusb1046.c
141
priv->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/tusb1046.c
142
if (IS_ERR(priv->sw)) {
drivers/usb/typec/mux/tusb1046.c
143
ret = dev_err_probe(dev, PTR_ERR(priv->sw), "failed to register type-c switch\n");
drivers/usb/typec/mux/tusb1046.c
162
typec_switch_unregister(priv->sw);
drivers/usb/typec/mux/tusb1046.c
172
typec_switch_unregister(priv->sw);
drivers/usb/typec/mux/tusb1046.c
33
struct typec_switch_dev *sw;
drivers/usb/typec/mux/tusb1046.c
90
static int tusb1046_switch_set(struct typec_switch_dev *sw,
drivers/usb/typec/mux/tusb1046.c
93
struct tusb1046_priv *priv = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/wcd939x-usbss.c
189
struct typec_switch_dev *sw;
drivers/usb/typec/mux/wcd939x-usbss.c
534
static int wcd939x_usbss_switch_set(struct typec_switch_dev *sw,
drivers/usb/typec/mux/wcd939x-usbss.c
537
struct wcd939x_usbss *usbss = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/wcd939x-usbss.c
707
usbss->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/wcd939x-usbss.c
708
if (IS_ERR(usbss->sw)) {
drivers/usb/typec/mux/wcd939x-usbss.c
709
ret = dev_err_probe(dev, PTR_ERR(usbss->sw), "failed to register typec switch\n");
drivers/usb/typec/mux/wcd939x-usbss.c
728
typec_switch_unregister(usbss->sw);
drivers/usb/typec/mux/wcd939x-usbss.c
747
typec_switch_unregister(usbss->sw);
drivers/video/fbdev/mb862xx/mb862xxfb.h
8
unsigned short sw;
drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
324
if ((l1_cfg->sw >= l1_cfg->dw) && (l1_cfg->sh >= l1_cfg->dh)) {
drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
328
(l1_cfg->sw << 11) / l1_cfg->dw));
drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
331
} else if ((l1_cfg->sw <= l1_cfg->dw) &&
drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
336
(l1_cfg->sw << 11) / l1_cfg->dw));
drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
338
pack(l1_cfg->sw >> 1, l1_cfg->sh));
drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
363
pack(l1_cfg->sh, l1_cfg->sw));
drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
518
par->l1_cfg.sw = 720;
drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
524
stride = par->l1_cfg.sw * (fbi->var.bits_per_pixel / 8);
include/linux/console.h
137
int do_take_over_console(const struct consw *sw, int first, int last, int deflt);
include/linux/console.h
138
void give_up_console(const struct consw *sw);
include/linux/input.h
183
unsigned long sw[BITS_TO_LONGS(SW_CNT)];
include/linux/input/sparse-keymap.h
41
} sw;
include/linux/rfkill.h
224
void rfkill_set_states(struct rfkill *rfkill, bool sw, bool hw);
include/linux/rfkill.h
303
static inline void rfkill_set_states(struct rfkill *rfkill, bool sw, bool hw)
include/linux/usb/role.h
107
static inline void usb_role_switch_unregister(struct usb_role_switch *sw) { }
include/linux/usb/role.h
114
static inline void *usb_role_switch_get_drvdata(struct usb_role_switch *sw)
include/linux/usb/role.h
16
typedef int (*usb_role_switch_set_t)(struct usb_role_switch *sw,
include/linux/usb/role.h
76
static inline enum usb_role usb_role_switch_get_role(struct usb_role_switch *sw)
include/linux/usb/role.h
92
static inline void usb_role_switch_put(struct usb_role_switch *sw) { }
include/linux/usb/typec_mux.h
18
typedef int (*typec_switch_set_fn_t)(struct typec_switch_dev *sw,
include/linux/usb/typec_mux.h
31
void typec_switch_put(struct typec_switch *sw);
include/linux/usb/typec_mux.h
32
int typec_switch_set(struct typec_switch *sw,
include/linux/usb/typec_mux.h
38
void typec_switch_unregister(struct typec_switch_dev *sw);
include/linux/usb/typec_mux.h
40
void typec_switch_set_drvdata(struct typec_switch_dev *sw, void *data);
include/linux/usb/typec_mux.h
41
void *typec_switch_get_drvdata(struct typec_switch_dev *sw);
include/linux/usb/typec_mux.h
51
static inline void typec_switch_put(struct typec_switch *sw) {}
include/linux/usb/typec_mux.h
53
static inline int typec_switch_set(struct typec_switch *sw,
include/linux/usb/typec_mux.h
66
static inline void typec_switch_unregister(struct typec_switch_dev *sw) {}
include/linux/usb/typec_mux.h
68
static inline void typec_switch_set_drvdata(struct typec_switch_dev *sw, void *data) {}
include/linux/usb/typec_mux.h
69
static inline void *typec_switch_get_drvdata(struct typec_switch_dev *sw)
include/net/tls.h
312
struct tls_sw_context_rx sw;
include/scsi/libsas.h
210
static inline void INIT_SAS_WORK(struct sas_work *sw, void (*fn)(struct work_struct *))
include/scsi/libsas.h
212
INIT_WORK(&sw->work, fn);
include/scsi/libsas.h
213
INIT_LIST_HEAD(&sw->drain_node);
lib/crypto/x86/curve25519.h
1091
u64 sw = swap2[0U] ^ bit;
lib/crypto/x86/curve25519.h
1092
cswap2(sw, nq2, nq_p12);
net/rfkill/core.c
642
void rfkill_set_states(struct rfkill *rfkill, bool sw, bool hw)
net/rfkill/core.c
657
__rfkill_set_sw_state(rfkill, sw);
net/rfkill/core.c
668
if (swprev != sw || hwprev != hw)
net/rfkill/input.c
262
handle->dev->sw));
sound/hda/codecs/generic.c
3780
int vol, sw;
sound/hda/codecs/generic.c
3782
vol = sw = 0;
sound/hda/codecs/generic.c
3797
if (!sw)
sound/hda/codecs/generic.c
3798
sw = path->ctls[NID_PATH_MUTE_CTL];
sound/hda/codecs/generic.c
3799
else if (sw != path->ctls[NID_PATH_MUTE_CTL]) {
sound/hda/codecs/generic.c
3801
if (!same_amp_caps(codec, sw,
sound/hda/codecs/generic.c
3810
err = create_single_cap_vol_ctl(codec, n, vol, sw,
sound/hda/codecs/generic.c
3813
err = create_bind_cap_vol_ctl(codec, n, vol, sw);
sound/pci/azt3328.c
1163
const struct snd_kcontrol_new *sw;
sound/pci/azt3328.c
1183
sw = snd_azf3328_mixer_controls;
sound/pci/azt3328.c
1185
++idx, ++sw) {
sound/pci/azt3328.c
1186
err = snd_ctl_add(chip->card, snd_ctl_new1(sw, chip));
sound/pci/cmipci.c
2591
const struct snd_kcontrol_new *sw;
sound/pci/cmipci.c
2619
sw = snd_cmipci_mixer_switches;
sound/pci/cmipci.c
2620
for (idx = 0; idx < ARRAY_SIZE(snd_cmipci_mixer_switches); idx++, sw++) {
sound/pci/cmipci.c
2621
err = snd_ctl_add(cm->card, snd_ctl_new1(sw, cm));
sound/pci/cmipci.c
2632
sw = snd_cmipci_8738_mixer_switches;
sound/pci/cmipci.c
2633
for (idx = 0; idx < ARRAY_SIZE(snd_cmipci_8738_mixer_switches); idx++, sw++) {
sound/pci/cmipci.c
2634
err = snd_ctl_add(cm->card, snd_ctl_new1(sw, cm));
sound/pci/cmipci.c
2662
sw = snd_cmipci_old_mixer_switches;
sound/pci/cmipci.c
2663
for (idx = 0; idx < ARRAY_SIZE(snd_cmipci_old_mixer_switches); idx++, sw++) {
sound/pci/cmipci.c
2664
err = snd_ctl_add(cm->card, snd_ctl_new1(sw, cm));
sound/pci/cmipci.c
2671
sw = snd_cmipci_extra_mixer_switches;
sound/pci/cmipci.c
2672
for (idx = 0; idx < ARRAY_SIZE(snd_cmipci_extra_mixer_switches); idx++, sw++) {
sound/pci/cmipci.c
2673
err = snd_ctl_add(cm->card, snd_ctl_new1(sw, cm));
sound/pci/emu10k1/emufx.c
1531
#define _A_SWITCH(icode, ptr, dst, src, sw) \
sound/pci/emu10k1/emufx.c
1532
A_OP((icode), ptr, iMACINT0, dst, A_C_00000000, src, sw);
sound/pci/emu10k1/emufx.c
1533
#define A_SWITCH(icode, ptr, dst, src, sw) \
sound/pci/emu10k1/emufx.c
1534
_A_SWITCH(icode, ptr, A_GPR(dst), A_GPR(src), A_GPR(sw))
sound/pci/emu10k1/emufx.c
1779
#define _SWITCH(icode, ptr, dst, src, sw) \
sound/pci/emu10k1/emufx.c
1780
OP((icode), ptr, iMACINT0, dst, C_00000000, src, sw);
sound/pci/emu10k1/emufx.c
1781
#define SWITCH(icode, ptr, dst, src, sw) \
sound/pci/emu10k1/emufx.c
1782
_SWITCH(icode, ptr, GPR(dst), GPR(src), GPR(sw))
sound/pci/emu10k1/emufx.c
1783
#define SWITCH_IN(icode, ptr, dst, src, sw) \
sound/pci/emu10k1/emufx.c
1784
_SWITCH(icode, ptr, GPR(dst), EXTIN(src), GPR(sw))
sound/pci/emu10k1/emumixer.c
1871
unsigned int reg, val, sw;
sound/pci/emu10k1/emumixer.c
1874
sw = ucontrol->value.integer.value[0];
sound/pci/emu10k1/emumixer.c
1876
sw = !sw;
sound/pci/emu10k1/emumixer.c
1882
val = sw ? A_IOCFG_GPOUT0 : 0;
sound/pci/emu10k1/emumixer.c
1891
val = sw ? HCFG_GPOUT0 : 0;
sound/pci/ice1712/quartet.c
751
QTET_CONTROL("Analog In 1/2 to Monitor 1/2", sw, IN12_MON12),
sound/pci/ice1712/quartet.c
752
QTET_CONTROL("Analog In 1/2 to Monitor 3/4", sw, IN12_MON34),
sound/pci/ice1712/quartet.c
753
QTET_CONTROL("Analog In 3/4 to Monitor 1/2", sw, IN34_MON12),
sound/pci/ice1712/quartet.c
754
QTET_CONTROL("Analog In 3/4 to Monitor 3/4", sw, IN34_MON34),
sound/pci/ice1712/quartet.c
755
QTET_CONTROL("Output 1/2 to Monitor 3/4", sw, OUT12_MON34),
sound/pci/ice1712/quartet.c
756
QTET_CONTROL("Output 3/4 to Monitor 1/2", sw, OUT34_MON12),
sound/ppc/tumbler.c
955
struct snd_kcontrol *sw)
sound/ppc/tumbler.c
961
&sw->id);
sound/soc/codecs/wcd939x.c
3127
static int wcd939x_typec_switch_set(struct typec_switch_dev *sw,
sound/soc/codecs/wcd939x.c
3130
struct wcd939x_priv *wcd939x = typec_switch_get_drvdata(sw);
sound/soc/rockchip/rockchip_sai.c
921
int sw = slot_width;
sound/soc/rockchip/rockchip_sai.c
926
sw = 32;
sound/soc/rockchip/rockchip_sai.c
931
if (sw < 16 || sw > 32)
sound/soc/rockchip/rockchip_sai.c
938
SAI_XCR_SBW(sw));
sound/soc/rockchip/rockchip_sai.c
940
SAI_XCR_SBW(sw));
sound/usb/mixer_quirks.c
656
status = test_bit(SW_HEADPHONE_INSERT, handle->dev->sw);
sound/usb/mixer_quirks.c
659
status = test_bit(SW_MICROPHONE_INSERT, handle->dev->sw);