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
802
unsigned short sw;
arch/mips/alchemy/devboards/db1200.c
871
sw = bcsr_read(BCSR_SWITCHES);
arch/mips/alchemy/devboards/db1200.c
872
if (sw & BCSR_SWITCHES_DIP_8) {
arch/mips/alchemy/devboards/db1200.c
894
sw &= BCSR_SWITCHES_DIP_8 | BCSR_SWITCHES_DIP_7;
arch/mips/alchemy/devboards/db1200.c
895
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
929
struct mmp_pdma_desc_sw *sw;
drivers/dma/mmp_pdma.c
951
list_for_each_entry(sw, &chan->chain_running, node) {
drivers/dma/mmp_pdma.c
956
start = pdev->ops->get_desc_dst_addr(&sw->desc);
drivers/dma/mmp_pdma.c
958
start = pdev->ops->get_desc_src_addr(&sw->desc);
drivers/dma/mmp_pdma.c
960
len = sw->desc.dcmd & DCMD_LENGTH;
drivers/dma/mmp_pdma.c
991
if (cyclic || !(sw->desc.dcmd & DCMD_ENDIRQEN))
drivers/dma/mmp_pdma.c
994
if (sw->async_tx.cookie == cookie) {
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
515
bitmap_gather(sw, hw, chip->map, 64);
drivers/gpio/gpio-xilinx.c
516
for_each_set_bit(irq_offset, sw, 64)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
2820
if (!adev->ip_blocks[i].status.sw)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
2850
if (!adev->ip_blocks[i].status.sw)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
2885
if (!adev->ip_blocks[i].status.sw)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
3019
adev->ip_blocks[i].status.sw = true;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
3578
if (!adev->ip_blocks[i].status.sw)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
3602
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
563
u32 sw;
drivers/gpu/drm/i915/display/intel_overlay.c
566
sw = ALIGN((offset & 31) + width, 32);
drivers/gpu/drm/i915/display/intel_overlay.c
568
sw = ALIGN((offset & 63) + width, 64);
drivers/gpu/drm/i915/display/intel_overlay.c
570
if (sw == 0)
drivers/gpu/drm/i915/display/intel_overlay.c
573
return (sw - 32) >> 3;
drivers/gpu/drm/i915/display/intel_pps.c
1423
struct intel_pps_delays *sw = &intel_dp->pps.pps_delays;
drivers/gpu/drm/i915/display/intel_pps.c
1427
if (hw.power_up != sw->power_up ||
drivers/gpu/drm/i915/display/intel_pps.c
1428
hw.backlight_on != sw->backlight_on ||
drivers/gpu/drm/i915/display/intel_pps.c
1429
hw.backlight_off != sw->backlight_off ||
drivers/gpu/drm/i915/display/intel_pps.c
1430
hw.power_down != sw->power_down ||
drivers/gpu/drm/i915/display/intel_pps.c
1431
hw.power_cycle != sw->power_cycle) {
drivers/gpu/drm/i915/display/intel_pps.c
1433
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
164
struct gpio_desc **sw;
drivers/iio/frequency/admfm2000.c
186
sw = st->sw1_ch;
drivers/iio/frequency/admfm2000.c
190
sw = st->sw2_ch;
drivers/iio/frequency/admfm2000.c
198
sw[i] = devm_fwnode_gpiod_get_index(dev, child, "switch",
drivers/iio/frequency/admfm2000.c
200
if (IS_ERR(sw[i]))
drivers/iio/frequency/admfm2000.c
201
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
1527
INPUT_DEV_CAP_ATTR(SW, sw);
drivers/input/input.c
2178
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
293
u8 finger_id, sw, w;
drivers/input/touchscreen/hynitron_cstxxx.c
334
sw = (buf[idx] & 0x0f) >> 1;
drivers/input/touchscreen/hynitron_cstxxx.c
344
if (sw == CST3XX_TOUCH_DATA_TOUCH_VAL)
drivers/media/platform/nxp/dw100/dw100.c
382
u32 sw, sh, mw, mh, idx;
drivers/media/platform/nxp/dw100/dw100.c
386
sw = ctx->q_data[DW100_QUEUE_SRC].pix_fmt.width;
drivers/media/platform/nxp/dw100/dw100.c
392
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
123
sw = hisi_hikey_usb->dev_role_sw;
drivers/misc/hisi_hikey_usb.c
127
usb_role_switch_set_role(sw, role);
drivers/misc/hisi_hikey_usb.c
130
static int hub_usb_role_switch_set(struct usb_role_switch *sw, enum usb_role role)
drivers/misc/hisi_hikey_usb.c
132
struct hisi_hikey_usb *hisi_hikey_usb = usb_role_switch_get_drvdata(sw);
drivers/misc/hisi_hikey_usb.c
97
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/bnxt/bnxt.c
10397
static void bnxt_add_one_ctr(u64 hw, u64 *sw, u64 mask)
drivers/net/ethernet/broadcom/bnxt/bnxt.c
10402
sw_tmp = (*sw & ~mask) | hw;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
10403
if (hw < (*sw & mask))
drivers/net/ethernet/broadcom/bnxt/bnxt.c
10405
WRITE_ONCE(*sw, sw_tmp);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13414
u64 *sw = cpr->stats.sw_stats;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13416
stats->rx_packets += BNXT_GET_RING_STATS64(sw, rx_ucast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13417
stats->rx_packets += BNXT_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13418
stats->rx_packets += BNXT_GET_RING_STATS64(sw, rx_bcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13420
stats->tx_packets += BNXT_GET_RING_STATS64(sw, tx_ucast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13421
stats->tx_packets += BNXT_GET_RING_STATS64(sw, tx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13422
stats->tx_packets += BNXT_GET_RING_STATS64(sw, tx_bcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13424
stats->rx_bytes += BNXT_GET_RING_STATS64(sw, rx_ucast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13425
stats->rx_bytes += BNXT_GET_RING_STATS64(sw, rx_mcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13426
stats->rx_bytes += BNXT_GET_RING_STATS64(sw, rx_bcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13428
stats->tx_bytes += BNXT_GET_RING_STATS64(sw, tx_ucast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13429
stats->tx_bytes += BNXT_GET_RING_STATS64(sw, tx_mcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13430
stats->tx_bytes += BNXT_GET_RING_STATS64(sw, tx_bcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13433
BNXT_GET_RING_STATS64(sw, rx_discard_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13435
stats->multicast += BNXT_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
13437
stats->tx_dropped += BNXT_GET_RING_STATS64(sw, tx_error_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15928
u64 *sw;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15934
sw = cpr->stats.sw_stats;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15937
stats->packets += BNXT_GET_RING_STATS64(sw, rx_ucast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15938
stats->packets += BNXT_GET_RING_STATS64(sw, rx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15939
stats->packets += BNXT_GET_RING_STATS64(sw, rx_bcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15942
stats->bytes += BNXT_GET_RING_STATS64(sw, rx_ucast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15943
stats->bytes += BNXT_GET_RING_STATS64(sw, rx_mcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15944
stats->bytes += BNXT_GET_RING_STATS64(sw, rx_bcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15956
u64 *sw;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15962
sw = bnapi->cp_ring.stats.sw_stats;
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15965
stats->packets += BNXT_GET_RING_STATS64(sw, tx_ucast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15966
stats->packets += BNXT_GET_RING_STATS64(sw, tx_mcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15967
stats->packets += BNXT_GET_RING_STATS64(sw, tx_bcast_pkts);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15970
stats->bytes += BNXT_GET_RING_STATS64(sw, tx_ucast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15971
stats->bytes += BNXT_GET_RING_STATS64(sw, tx_mcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.c
15972
stats->bytes += BNXT_GET_RING_STATS64(sw, tx_bcast_bytes);
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2782
#define BNXT_GET_RING_STATS64(sw, counter) \
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2783
(*((sw) + offsetof(struct ctx_hw_stats, counter) / 8))
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2785
#define BNXT_GET_RX_PORT_STATS64(sw, counter) \
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2786
(*((sw) + offsetof(struct rx_port_stats, counter) / 8))
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2788
#define BNXT_GET_TX_PORT_STATS64(sw, counter) \
drivers/net/ethernet/broadcom/bnxt/bnxt.h
2789
(*((sw) + offsetof(struct tx_port_stats, counter) / 8))
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
613
u64 *sw;
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
635
sw = (u64 *)&cpr->sw_stats->rx;
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
638
buf[j] = sw[k];
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
641
sw = (u64 *)&cpr->sw_stats->cmn;
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
643
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
5871
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
5874
list_for_each_entry(list_itr, &sw->recp_list[recp_id].filt_rules,
drivers/net/ethernet/intel/ice/ice_switch.c
6057
struct ice_switch_info *sw;
drivers/net/ethernet/intel/ice/ice_switch.c
6256
sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6257
sw->recp_list[rid].adv_rule = true;
drivers/net/ethernet/intel/ice/ice_switch.c
6258
rule_head = &sw->recp_list[rid].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
6515
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6516
struct ice_sw_recipe *r_list = sw->recp_list;
drivers/net/ethernet/intel/ice/ice_switch.c
6553
struct ice_switch_info *sw;
drivers/net/ethernet/intel/ice/ice_switch.c
6555
sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6556
if (!sw->recp_list[remove_entry->rid].recp_created)
drivers/net/ethernet/intel/ice/ice_switch.c
6558
list_head = &sw->recp_list[remove_entry->rid].filt_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
6613
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6620
head = &sw->recp_list[i].filt_replay_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
6621
if (!sw->recp_list[i].adv_rule)
drivers/net/ethernet/intel/ice/ice_switch.c
6639
struct ice_switch_info *sw = hw->switch_info;
drivers/net/ethernet/intel/ice/ice_switch.c
6642
if (!sw)
drivers/net/ethernet/intel/ice/ice_switch.c
6646
if (!list_empty(&sw->recp_list[i].filt_replay_rules)) {
drivers/net/ethernet/intel/ice/ice_switch.c
6649
l_head = &sw->recp_list[i].filt_replay_rules;
drivers/net/ethernet/intel/ice/ice_switch.c
6650
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
1398
&MLX5E_STATS_GRP(sw),
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
151
data, MLX5E_READ_CTR64_CPU(&priv->stats.sw,
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
157
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
2688
MLX5E_DEFINE_STATS_GRP(sw, 0);
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
2708
&MLX5E_STATS_GRP(sw),
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
516
static MLX5E_DECLARE_STATS_GRP_OP_UPDATE_STATS(sw)
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
518
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
160
memset(&priv->stats.sw, 0, sizeof(s));
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
162
priv->stats.sw.rx_packets = s.rx_packets;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
163
priv->stats.sw.rx_bytes = s.rx_bytes;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
164
priv->stats.sw.tx_packets = s.tx_packets;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
165
priv->stats.sw.tx_bytes = s.tx_bytes;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
166
priv->stats.sw.tx_queue_dropped = s.tx_dropped;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
172
struct mlx5e_sw_stats *sstats = &priv->stats.sw;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
488
&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
1412
il->isr_stats.sw++;
drivers/net/wireless/intel/iwlegacy/4965-mac.c
4455
il->isr_stats.sw++;
drivers/net/wireless/intel/iwlegacy/common.h
1017
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
2034
isr_stats->sw++;
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/rx.c
2383
isr_stats->sw++;
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
2901
isr_stats->sw);
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
2902
if (isr_stats->sw || isr_stats->hw) {
drivers/phy/apple/atc.c
2049
static int atcphy_sw_set(struct typec_switch_dev *sw, enum typec_orientation orientation)
drivers/phy/apple/atc.c
2051
struct apple_atcphy *atcphy = typec_switch_get_drvdata(sw);
drivers/phy/apple/atc.c
631
struct typec_switch *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
4424
static int qmp_combo_typec_switch_set(struct typec_switch_dev *sw,
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4427
struct qmp_combo *qmp = typec_switch_get_drvdata(sw);
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4539
typec_switch_unregister(qmp->sw);
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4559
qmp->sw = typec_switch_register(dev, &sw_desc);
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4560
if (IS_ERR(qmp->sw)) {
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4561
dev_err(dev, "Unable to register typec switch: %pe\n", qmp->sw);
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
4562
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
161
struct typec_switch_dev *sw;
drivers/phy/rockchip/phy-rockchip-usbdp.c
654
static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw,
drivers/phy/rockchip/phy-rockchip-usbdp.c
657
struct rk_udphy *udphy = typec_switch_get_drvdata(sw);
drivers/phy/rockchip/phy-rockchip-usbdp.c
682
typec_switch_unregister(udphy->sw);
drivers/phy/rockchip/phy-rockchip-usbdp.c
693
udphy->sw = typec_switch_register(udphy->dev, &sw_desc);
drivers/phy/rockchip/phy-rockchip-usbdp.c
694
if (IS_ERR(udphy->sw)) {
drivers/phy/rockchip/phy-rockchip-usbdp.c
696
PTR_ERR(udphy->sw));
drivers/phy/rockchip/phy-rockchip-usbdp.c
697
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
229
if (test_bit(SW_LID, generic_inputdev->sw) && !(status & (1 << SW_LID))) {
drivers/platform/loongarch/loongson-laptop.c
231
ke.sw.value = (u8)status;
drivers/platform/loongarch/loongson-laptop.c
232
ke.sw.code = SW_LID;
drivers/platform/loongarch/loongson-laptop.c
486
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
332
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/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
356
int sw;
drivers/staging/media/av7110/av7110_av.c
371
sw = (p[3] & 0x0F);
drivers/staging/media/av7110/av7110_av.c
372
ret = av7110_set_vidmode(av7110, sw2mode[sw]);
drivers/staging/media/av7110/av7110_av.c
374
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
1006
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1027
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1046
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1065
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1081
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1120
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1225
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
1227
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
1245
down_sw = sw;
drivers/thunderbolt/debugfs.c
1247
down_sw = port->remote->sw;
drivers/thunderbolt/debugfs.c
1322
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1413
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1475
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1507
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1532
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1573
struct tb *tb = margining->port->sw->tb;
drivers/thunderbolt/debugfs.c
1602
struct tb *tb = port->sw->tb;
drivers/thunderbolt/debugfs.c
1629
struct tb *tb = port->sw->tb;
drivers/thunderbolt/debugfs.c
1770
parent = debugfs_lookup(dir_name, port->sw->debugfs_dir);
drivers/thunderbolt/debugfs.c
1785
parent = debugfs_lookup(dir_name, port->sw->debugfs_dir);
drivers/thunderbolt/debugfs.c
1793
static void margining_switch_init(struct tb_switch *sw)
drivers/thunderbolt/debugfs.c
1797
u64 route = tb_route(sw);
drivers/thunderbolt/debugfs.c
1802
upstream = tb_upstream_port(sw);
drivers/thunderbolt/debugfs.c
1803
parent_sw = tb_switch_parent(sw);
drivers/thunderbolt/debugfs.c
1810
static void margining_switch_remove(struct tb_switch *sw)
drivers/thunderbolt/debugfs.c
1814
u64 route = tb_route(sw);
drivers/thunderbolt/debugfs.c
1819
upstream = tb_upstream_port(sw);
drivers/thunderbolt/debugfs.c
1820
parent_sw = tb_switch_parent(sw);
drivers/thunderbolt/debugfs.c
1861
static inline void margining_switch_init(struct tb_switch *sw) { }
drivers/thunderbolt/debugfs.c
1862
static inline void margining_switch_remove(struct tb_switch *sw) { }
drivers/thunderbolt/debugfs.c
1892
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
1893
struct tb *tb = port->sw->tb;
drivers/thunderbolt/debugfs.c
1901
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
1927
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
1928
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
1934
static void cap_show_by_dw(struct seq_file *s, struct tb_switch *sw,
drivers/thunderbolt/debugfs.c
1946
ret = tb_sw_read(sw, &data, TB_CFG_SWITCH, cap + offset + i, 1);
drivers/thunderbolt/debugfs.c
1957
static void cap_show(struct seq_file *s, struct tb_switch *sw,
drivers/thunderbolt/debugfs.c
1971
ret = tb_sw_read(sw, data, TB_CFG_SWITCH, cap + offset, dwords);
drivers/thunderbolt/debugfs.c
1973
cap_show_by_dw(s, sw, port, cap, offset, cap_id, vsec_id, length);
drivers/thunderbolt/debugfs.c
2008
if (usb4_switch_version(port->sw) < 2)
drivers/thunderbolt/debugfs.c
2020
if (usb4_switch_version(port->sw) < 2)
drivers/thunderbolt/debugfs.c
2025
if (usb4_switch_version(port->sw) < 2)
drivers/thunderbolt/debugfs.c
2100
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
2101
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2104
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
2122
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2123
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
2129
static void switch_cap_show(struct tb_switch *sw, struct seq_file *s,
drivers/thunderbolt/debugfs.c
2136
ret = tb_sw_read(sw, &header, TB_CFG_SWITCH, cap, 1);
drivers/thunderbolt/debugfs.c
2144
ret = tb_sw_read(sw, (u32 *)&header + 1, TB_CFG_SWITCH,
drivers/thunderbolt/debugfs.c
2166
cap_show(s, sw, NULL, cap, header.basic.cap, vsec_id, length);
drivers/thunderbolt/debugfs.c
2169
static void switch_caps_show(struct tb_switch *sw, struct seq_file *s)
drivers/thunderbolt/debugfs.c
2173
cap = tb_switch_next_cap(sw, 0);
drivers/thunderbolt/debugfs.c
2175
switch_cap_show(sw, s, cap);
drivers/thunderbolt/debugfs.c
2176
cap = tb_switch_next_cap(sw, cap);
drivers/thunderbolt/debugfs.c
2180
static int switch_basic_regs_show(struct tb_switch *sw, struct seq_file *s)
drivers/thunderbolt/debugfs.c
2187
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/debugfs.c
2192
ret = tb_sw_read(sw, data, TB_CFG_SWITCH, 0, dwords);
drivers/thunderbolt/debugfs.c
2204
struct tb_switch *sw = s->private;
drivers/thunderbolt/debugfs.c
2205
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2208
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
221
static ssize_t regs_write(struct tb_switch *sw, struct tb_port *port,
drivers/thunderbolt/debugfs.c
2217
ret = switch_basic_regs_show(sw, s);
drivers/thunderbolt/debugfs.c
2221
switch_caps_show(sw, s);
drivers/thunderbolt/debugfs.c
2226
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2227
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
2256
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
2257
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
226
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2260
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
2287
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2288
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
2319
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
2320
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2323
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
234
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
2341
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2342
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
2379
struct tb_switch *sw = port->sw;
drivers/thunderbolt/debugfs.c
2380
struct tb *tb = sw->tb;
drivers/thunderbolt/debugfs.c
2383
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/debugfs.c
2395
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/debugfs.c
2396
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/debugfs.c
2408
void tb_switch_debugfs_init(struct tb_switch *sw)
drivers/thunderbolt/debugfs.c
2413
debugfs_dir = debugfs_create_dir(dev_name(&sw->dev), tb_debugfs_root);
drivers/thunderbolt/debugfs.c
2414
sw->debugfs_dir = debugfs_dir;
drivers/thunderbolt/debugfs.c
2415
debugfs_create_file("regs", DEBUGFS_MODE, debugfs_dir, sw,
drivers/thunderbolt/debugfs.c
2417
if (sw->drom)
drivers/thunderbolt/debugfs.c
2418
debugfs_create_blob("drom", 0400, debugfs_dir, &sw->drom_blob);
drivers/thunderbolt/debugfs.c
2420
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/debugfs.c
2430
debugfs_dir = debugfs_create_dir(dir_name, sw->debugfs_dir);
drivers/thunderbolt/debugfs.c
2443
margining_switch_init(sw);
drivers/thunderbolt/debugfs.c
2452
void tb_switch_debugfs_remove(struct tb_switch *sw)
drivers/thunderbolt/debugfs.c
2454
margining_switch_remove(sw);
drivers/thunderbolt/debugfs.c
2455
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
974
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
222
dma->sw = sw;
drivers/thunderbolt/dma_port.c
245
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
251
ret = dma_port_read(sw->tb->ctl, &in, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
283
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
287
ret = dma_port_write(sw->tb->ctl, &in, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
296
ret = dma_port_read(sw->tb->ctl, &out, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
308
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
322
return dma_port_read(sw->tb->ctl, buf, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
330
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
335
ret = dma_port_write(sw->tb->ctl, buf, tb_route(sw), dma->port,
drivers/thunderbolt/dma_port.c
431
struct tb_switch *sw = dma->sw;
drivers/thunderbolt/dma_port.c
435
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
635
int tb_domain_disapprove_switch(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/domain.c
640
return tb->cm_ops->disapprove_switch(tb, sw);
drivers/thunderbolt/domain.c
654
int tb_domain_approve_switch(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/domain.c
662
parent_sw = tb_to_switch(sw->dev.parent);
drivers/thunderbolt/domain.c
666
return tb->cm_ops->approve_switch(tb, sw);
drivers/thunderbolt/domain.c
680
int tb_domain_approve_switch_key(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/domain.c
689
parent_sw = tb_to_switch(sw->dev.parent);
drivers/thunderbolt/domain.c
693
ret = tb->cm_ops->add_switch_key(tb, sw);
drivers/thunderbolt/domain.c
697
return tb->cm_ops->approve_switch(tb, sw);
drivers/thunderbolt/domain.c
712
int tb_domain_challenge_switch_key(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/domain.c
724
parent_sw = tb_to_switch(sw->dev.parent);
drivers/thunderbolt/domain.c
729
ret = tb->cm_ops->challenge_switch_key(tb, sw, challenge, response);
drivers/thunderbolt/domain.c
734
hmac_sha256_usingrawkey(sw->key, TB_SWITCH_KEY_SIZE,
drivers/thunderbolt/domain.c
741
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->pdev->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_link_depth(tb, link, depth);
drivers/thunderbolt/icm.c
1001
if (!sw) {
drivers/thunderbolt/icm.c
1007
add_xdomain(sw, route, &pkg->local_uuid, &pkg->remote_uuid, link,
drivers/thunderbolt/icm.c
1009
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1066
static int icm_tr_approve_switch(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/icm.c
1073
memcpy(&request.ep_uuid, sw->uuid, sizeof(request.ep_uuid));
drivers/thunderbolt/icm.c
1075
request.route_lo = sw->config.route_lo;
drivers/thunderbolt/icm.c
1076
request.route_hi = sw->config.route_hi;
drivers/thunderbolt/icm.c
1077
request.connection_id = sw->connection_id;
drivers/thunderbolt/icm.c
1093
static int icm_tr_add_switch_key(struct tb *tb, struct tb_switch *sw)
drivers/thunderbolt/icm.c
1100
memcpy(&request.ep_uuid, sw->uuid, sizeof(request.ep_uuid));
drivers/thunderbolt/icm.c
1102
request.route_lo = sw->config.route_lo;
drivers/thunderbolt/icm.c
1103
request.route_hi = sw->config.route_hi;
drivers/thunderbolt/icm.c
1104
request.connection_id = sw->connection_id;
drivers/thunderbolt/icm.c
1105
memcpy(request.key, sw->key, TB_SWITCH_KEY_SIZE);
drivers/thunderbolt/icm.c
1121
static int icm_tr_challenge_switch_key(struct tb *tb, struct tb_switch *sw,
drivers/thunderbolt/icm.c
1129
memcpy(&request.ep_uuid, sw->uuid, sizeof(request.ep_uuid));
drivers/thunderbolt/icm.c
1131
request.route_lo = sw->config.route_lo;
drivers/thunderbolt/icm.c
1132
request.route_hi = sw->config.route_hi;
drivers/thunderbolt/icm.c
1133
request.connection_id = sw->connection_id;
drivers/thunderbolt/icm.c
1236
struct tb_switch *sw, *parent_sw;
drivers/thunderbolt/icm.c
1264
sw = tb_switch_find_by_uuid(tb, &pkg->ep_uuid);
drivers/thunderbolt/icm.c
1265
if (sw) {
drivers/thunderbolt/icm.c
1267
if (tb_route(sw) == route && !!sw->authorized == authorized) {
drivers/thunderbolt/icm.c
1268
update_switch(sw, route, pkg->connection_id, 0, 0, 0,
drivers/thunderbolt/icm.c
1270
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1274
remove_switch(sw);
drivers/thunderbolt/icm.c
1275
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1279
sw = tb_switch_find_by_route(tb, route);
drivers/thunderbolt/icm.c
1280
if (sw) {
drivers/thunderbolt/icm.c
1281
remove_switch(sw);
drivers/thunderbolt/icm.c
1282
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1300
sw = alloc_switch(parent_sw, route, &pkg->ep_uuid);
drivers/thunderbolt/icm.c
1301
if (!IS_ERR(sw)) {
drivers/thunderbolt/icm.c
1302
sw->connection_id = pkg->connection_id;
drivers/thunderbolt/icm.c
1303
sw->authorized = authorized;
drivers/thunderbolt/icm.c
1304
sw->security_level = security_level;
drivers/thunderbolt/icm.c
1305
sw->boot = boot;
drivers/thunderbolt/icm.c
1306
sw->link_speed = speed_gen3 ? 20 : 10;
drivers/thunderbolt/icm.c
1307
sw->link_width = dual_lane ? TB_LINK_WIDTH_DUAL :
drivers/thunderbolt/icm.c
1309
sw->rpm = force_rtd3;
drivers/thunderbolt/icm.c
1310
if (!sw->rpm)
drivers/thunderbolt/icm.c
1311
sw->rpm = intel_vss_is_rtd3(pkg->ep_name,
drivers/thunderbolt/icm.c
1314
if (add_switch(parent_sw, sw))
drivers/thunderbolt/icm.c
1315
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1335
struct tb_switch *sw;
drivers/thunderbolt/icm.c
1340
sw = tb_switch_find_by_route(tb, route);
drivers/thunderbolt/icm.c
1341
if (!sw) {
drivers/thunderbolt/icm.c
1345
pm_runtime_get_sync(sw->dev.parent);
drivers/thunderbolt/icm.c
1347
remove_switch(sw);
drivers/thunderbolt/icm.c
1349
pm_runtime_mark_last_busy(sw->dev.parent);
drivers/thunderbolt/icm.c
1350
pm_runtime_put_autosuspend(sw->dev.parent);
drivers/thunderbolt/icm.c
1352
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1361
struct tb_switch *sw;
drivers/thunderbolt/icm.c
1393
sw = tb_switch_find_by_route(tb, route);
drivers/thunderbolt/icm.c
1394
if (sw) {
drivers/thunderbolt/icm.c
1395
remove_switch(sw);
drivers/thunderbolt/icm.c
1396
tb_switch_put(sw);
drivers/thunderbolt/icm.c
1399
sw = tb_switch_find_by_route(tb, get_parent_route(route));
drivers/thunderbolt/icm.c
1400
if (!sw) {
drivers/thunderbolt/icm.c
1405
add_xdomain(sw, route, &pkg->local_uuid, &pkg->remote_uuid, 0, 0);
drivers/thunderbolt/icm.c
1406
tb_switch_put(sw);
drivers/thunderbolt/icm.c
2042
static void icm_unplug_children(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2046
if (tb_route(sw))
drivers/thunderbolt/icm.c
2047
sw->is_unplugged = true;
drivers/thunderbolt/icm.c
2049
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/icm.c
2053
icm_unplug_children(port->remote->sw);
drivers/thunderbolt/icm.c
2059
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/icm.c
2061
if (sw)
drivers/thunderbolt/icm.c
2062
complete(&sw->rpm_complete);
drivers/thunderbolt/icm.c
2066
static void remove_unplugged_switch(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2068
struct device *parent = get_device(sw->dev.parent);
drivers/thunderbolt/icm.c
2077
complete_rpm(&sw->dev, NULL);
drivers/thunderbolt/icm.c
2078
bus_for_each_dev(&tb_bus_type, &sw->dev, NULL, complete_rpm);
drivers/thunderbolt/icm.c
2079
tb_switch_remove(sw);
drivers/thunderbolt/icm.c
2087
static void icm_free_unplugged_children(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2091
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/icm.c
2096
if (port->remote->sw->is_unplugged) {
drivers/thunderbolt/icm.c
2097
remove_unplugged_switch(port->remote->sw);
drivers/thunderbolt/icm.c
2100
icm_free_unplugged_children(port->remote->sw);
drivers/thunderbolt/icm.c
2153
static int icm_runtime_suspend_switch(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2155
if (tb_route(sw))
drivers/thunderbolt/icm.c
2156
reinit_completion(&sw->rpm_complete);
drivers/thunderbolt/icm.c
2160
static int icm_runtime_resume_switch(struct tb_switch *sw)
drivers/thunderbolt/icm.c
2162
if (tb_route(sw)) {
drivers/thunderbolt/icm.c
2163
if (!wait_for_completion_timeout(&sw->rpm_complete,
drivers/thunderbolt/icm.c
2165
dev_dbg(&sw->dev, "runtime resuming timed out\n");
drivers/thunderbolt/icm.c
2292
static int icm_usb4_switch_op(struct tb_switch *sw, u16 opcode, u32 *metadata,
drivers/thunderbolt/icm.c
2298
struct tb *tb = sw->tb;
drivers/thunderbolt/icm.c
2300
u64 route = tb_route(sw);
drivers/thunderbolt/icm.c
2354
static int icm_usb4_switch_nvm_authenticate_status(struct tb_switch *sw,
drivers/thunderbolt/icm.c
2358
struct tb *tb = sw->tb;
drivers/thunderbolt/icm.c
2368
if (auth && auth->reply.route_hi == sw->config.route_hi &&
drivers/thunderbolt/icm.c
2369
auth->reply.route_lo == sw->config.route_lo) {
drivers/thunderbolt/icm.c
2371
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
638
struct tb_switch *sw;
drivers/thunderbolt/icm.c
640
sw = tb_switch_alloc(tb, &parent_sw->dev, route);
drivers/thunderbolt/icm.c
641
if (IS_ERR(sw)) {
drivers/thunderbolt/icm.c
643
return sw;
drivers/thunderbolt/icm.c
646
sw->uuid = kmemdup(uuid, sizeof(*uuid), GFP_KERNEL);
drivers/thunderbolt/icm.c
647
if (!sw->uuid) {
drivers/thunderbolt/icm.c
648
tb_switch_put(sw);
drivers/thunderbolt/icm.c
652
init_completion(&sw->rpm_complete);
drivers/thunderbolt/icm.c
653
return sw;
drivers/thunderbolt/icm.c
656
static int add_switch(struct tb_switch *parent_sw, struct tb_switch *sw)
drivers/thunderbolt/icm.c
658
u64 route = tb_route(sw);
drivers/thunderbolt/icm.c
662
tb_port_at(route, parent_sw)->remote = tb_upstream_port(sw);
drivers/thunderbolt/icm.c
663
tb_upstream_port(sw)->remote = tb_port_at(route, parent_sw);
drivers/thunderbolt/icm.c
665
ret = tb_switch_add(sw);
drivers/thunderbolt/icm.c
667
tb_port_at(tb_route(sw), parent_sw)->remote = NULL;
drivers/thunderbolt/icm.c
672
static void update_switch(struct tb_switch *sw, u64 route, u8 connection_id,
drivers/thunderbolt/icm.c
675
struct tb_switch *parent_sw = tb_switch_parent(sw);
drivers/thunderbolt/icm.c
678
tb_switch_downstream_port(sw)->remote = NULL;
drivers/thunderbolt/icm.c
680
tb_port_at(route, parent_sw)->remote = tb_upstream_port(sw);
drivers/thunderbolt/icm.c
683
sw->config.route_hi = upper_32_bits(route);
drivers/thunderbolt/icm.c
684
sw->config.route_lo = lower_32_bits(route);
drivers/thunderbolt/icm.c
685
sw->connection_id = connection_id;
drivers/thunderbolt/icm.c
686
sw->connection_key = connection_key;
drivers/thunderbolt/icm.c
687
sw->link = link;
drivers/thunderbolt/icm.c
688
sw->depth = depth;
drivers/thunderbolt/icm.c
689
sw->boot = boot;
drivers/thunderbolt/icm.c
692
sw->is_unplugged = false;
drivers/thunderbolt/icm.c
695
complete(&sw->rpm_complete);
drivers/thunderbolt/icm.c
698
static void remove_switch(struct tb_switch *sw)
drivers/thunderbolt/icm.c
700
tb_switch_downstream_port(sw)->remote = NULL;
drivers/thunderbolt/icm.c
701
tb_switch_remove(sw);
drivers/thunderbolt/icm.c
704
static void add_xdomain(struct tb_switch *sw, u64 route,
drivers/thunderbolt/icm.c
710
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/icm.c
712
xd = tb_xdomain_alloc(sw->tb, &sw->dev, route, local_uuid, remote_uuid);
drivers/thunderbolt/icm.c
719
tb_port_at(route, sw)->xdomain = xd;
drivers/thunderbolt/icm.c
724
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/icm.c
725
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/icm.c
737
struct tb_switch *sw;
drivers/thunderbolt/icm.c
739
sw = tb_to_switch(xd->dev.parent);
drivers/thunderbolt/icm.c
740
tb_port_at(xd->route, sw)->xdomain = NULL;
drivers/thunderbolt/icm.c
750
struct tb_switch *sw, *parent_sw;
drivers/thunderbolt/icm.c
777
sw = tb_switch_find_by_uuid(tb, &pkg->ep_uuid);
drivers/thunderbolt/icm.c
778
if (sw) {
drivers/thunderbolt/icm.c
781
sw_phy_port = tb_phy_port_from_link(sw->link);
drivers/thunderbolt/icm.c
792
if (sw->depth == depth && sw_phy_port == phy_port &&
drivers/thunderbolt/icm.c
793
!!sw->authorized == authorized) {
drivers/thunderbolt/icm.c
798
if (sw->link != link) {
drivers/thunderbolt/icm.c
803
tb_switch_put(sw);
drivers/thunderbolt/icm.c
807
route = tb_route(sw);
drivers/thunderbolt/icm.c
810
update_switch(sw, route, pkg->connection_id,
drivers/thunderbolt/icm.c
812
tb_switch_put(sw);
drivers/thunderbolt/icm.c
821
remove_switch(sw);
drivers/thunderbolt/icm.c
822
tb_switch_put(sw);
drivers/thunderbolt/icm.c
831
sw = tb_switch_find_by_link_depth(tb, link, depth);
drivers/thunderbolt/icm.c
832
if (!sw) {
drivers/thunderbolt/icm.c
837
sw = tb_switch_find_by_link_depth(tb, dual_link, depth);
drivers/thunderbolt/icm.c
839
if (sw) {
drivers/thunderbolt/icm.c
840
remove_switch(sw);
drivers/thunderbolt/icm.c
841
tb_switch_put(sw);
drivers/thunderbolt/icm.c
868
sw = alloc_switch(parent_sw, route, &pkg->ep_uuid);
drivers/thunderbolt/icm.c
869
if (!IS_ERR(sw)) {
drivers/thunderbolt/icm.c
870
sw->connection_id = pkg->connection_id;
drivers/thunderbolt/icm.c
871
sw->connection_key = pkg->connection_key;
drivers/thunderbolt/icm.c
872
sw->link = link;
drivers/thunderbolt/icm.c
873
sw->depth = depth;
drivers/thunderbolt/icm.c
874
sw->authorized = authorized;
drivers/thunderbolt/icm.c
875
sw->security_level = security_level;
drivers/thunderbolt/icm.c
876
sw->boot = boot;
drivers/thunderbolt/icm.c
877
sw->link_speed = speed_gen3 ? 20 : 10;
drivers/thunderbolt/icm.c
878
sw->link_width = dual_lane ? TB_LINK_WIDTH_DUAL :
drivers/thunderbolt/icm.c
880
sw->rpm = intel_vss_is_rtd3(pkg->ep_name, sizeof(pkg->ep_name));
drivers/thunderbolt/icm.c
882
if (add_switch(parent_sw, sw))
drivers/thunderbolt/icm.c
883
tb_switch_put(sw);
drivers/thunderbolt/icm.c
897
struct tb_switch *sw;
drivers/thunderbolt/icm.c
909
sw = tb_switch_find_by_link_depth(tb, link, depth);
drivers/thunderbolt/icm.c
910
if (!sw) {
drivers/thunderbolt/icm.c
916
pm_runtime_get_sync(sw->dev.parent);
drivers/thunderbolt/icm.c
918
remove_switch(sw);
drivers/thunderbolt/icm.c
920
pm_runtime_mark_last_busy(sw->dev.parent);
drivers/thunderbolt/icm.c
921
pm_runtime_put_autosuspend(sw->dev.parent);
drivers/thunderbolt/icm.c
923
tb_switch_put(sw);
drivers/thunderbolt/icm.c
932
struct tb_switch *sw;
drivers/thunderbolt/icm.c
994
sw = tb_switch_find_by_route(tb, route);
drivers/thunderbolt/icm.c
995
if (sw) {
drivers/thunderbolt/icm.c
996
remove_switch(sw);
drivers/thunderbolt/icm.c
997
tb_switch_put(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
158
path->tb = src->sw->tb;
drivers/thunderbolt/path.c
170
path->name, tb_route(src->sw), src->port);
drivers/thunderbolt/path.c
178
sw = p->sw;
drivers/thunderbolt/path.c
189
out_port = &sw->ports[hop.out_port];
drivers/thunderbolt/path.c
39
struct tb_switch *sw;
drivers/thunderbolt/path.c
429
if (!tb_switch_is_usb4(port->sw)) {
drivers/thunderbolt/path.c
46
sw = port->sw;
drivers/thunderbolt/path.c
487
path->name, tb_route(path->hops[0].in_port->sw),
drivers/thunderbolt/path.c
489
tb_route(path->hops[path->path_length - 1].out_port->sw),
drivers/thunderbolt/path.c
516
path->name, tb_route(path->hops[0].in_port->sw),
drivers/thunderbolt/path.c
518
tb_route(path->hops[path->path_length - 1].out_port->sw),
drivers/thunderbolt/path.c
57
out_port = &sw->ports[hop.out_port];
drivers/thunderbolt/path.c
603
if (path->hops[i].in_port->sw->is_unplugged)
drivers/thunderbolt/path.c
605
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
118
void tb_check_quirks(struct tb_switch *sw)
drivers/thunderbolt/quirks.c
12
sw->quirks |= QUIRK_FORCE_POWER_LINK_CONTROLLER;
drivers/thunderbolt/quirks.c
125
if (q->hw_vendor_id && q->hw_vendor_id != sw->config.vendor_id)
drivers/thunderbolt/quirks.c
127
if (q->hw_device_id && q->hw_device_id != sw->config.device_id)
drivers/thunderbolt/quirks.c
129
if (q->vendor && q->vendor != sw->vendor)
drivers/thunderbolt/quirks.c
13
tb_sw_dbg(sw, "forcing power to link controller\n");
drivers/thunderbolt/quirks.c
131
if (q->device && q->device != sw->device)
drivers/thunderbolt/quirks.c
134
tb_sw_dbg(sw, "running %ps\n", q->hook);
drivers/thunderbolt/quirks.c
135
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
sw->quirks |= QUIRK_NO_CLX;
drivers/thunderbolt/quirks.c
27
tb_sw_dbg(sw, "disabling CL states\n");
drivers/thunderbolt/quirks.c
30
static void quirk_usb3_maximum_bandwidth(struct tb_switch *sw)
drivers/thunderbolt/quirks.c
34
if (tb_switch_is_icm(sw))
drivers/thunderbolt/quirks.c
37
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/quirks.c
46
static void quirk_block_rpm_in_redrive(struct tb_switch *sw)
drivers/thunderbolt/quirks.c
48
sw->quirks |= QUIRK_KEEP_POWER_IN_DP_REDRIVE;
drivers/thunderbolt/quirks.c
49
tb_sw_dbg(sw, "preventing runtime PM in DP redrive mode\n");
drivers/thunderbolt/quirks.c
57
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
1290
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
1481
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
155
if (dma_port_flash_update_auth_status(sw->dma_port, &status) > 0)
drivers/thunderbolt/switch.c
1551
static const char *tb_switch_generation_name(const struct tb_switch *sw)
drivers/thunderbolt/switch.c
1553
switch (sw->generation) {
drivers/thunderbolt/switch.c
156
nvm_set_auth_status(sw, status);
drivers/thunderbolt/switch.c
1567
static void tb_dump_switch(const struct tb *tb, const struct tb_switch *sw)
drivers/thunderbolt/switch.c
1569
const struct tb_regs_switch_header *regs = &sw->config;
drivers/thunderbolt/switch.c
1572
tb_switch_generation_name(sw), regs->vendor_id, regs->device_id,
drivers/thunderbolt/switch.c
1585
static int tb_switch_reset_host(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1587
if (sw->generation > 1) {
drivers/thunderbolt/switch.c
1590
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
163
dma_port_power_cycle(sw->dma_port);
drivers/thunderbolt/switch.c
1630
res.err = tb_sw_write(sw, ((u32 *) &sw->config) + 2,
drivers/thunderbolt/switch.c
1634
res = tb_cfg_reset(sw->tb->ctl, tb_route(sw));
drivers/thunderbolt/switch.c
1644
static int tb_switch_reset_device(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1646
return tb_port_reset(tb_switch_downstream_port(sw));
drivers/thunderbolt/switch.c
1649
static bool tb_switch_enumerated(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1659
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
1680
int tb_switch_reset(struct tb_switch *sw)
drivers/thunderbolt/switch.c
1689
if (!tb_switch_enumerated(sw))
drivers/thunderbolt/switch.c
1692
tb_sw_dbg(sw, "resetting\n");
drivers/thunderbolt/switch.c
1694
if (tb_route(sw))
drivers/thunderbolt/switch.c
1695
ret = tb_switch_reset_device(sw);
drivers/thunderbolt/switch.c
1697
ret = tb_switch_reset_host(sw);
drivers/thunderbolt/switch.c
1700
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
1721
int tb_switch_wait_for_bit(struct tb_switch *sw, u32 offset, u32 bit,
drivers/thunderbolt/switch.c
1730
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
sw->config.plug_events_delay = 0xff;
drivers/thunderbolt/switch.c
1759
res = tb_sw_write(sw, ((u32 *) &sw->config) + 4, TB_CFG_SWITCH, 4, 1);
drivers/thunderbolt/switch.c
1763
res = tb_sw_read(sw, &data, TB_CFG_SWITCH, sw->cap_plug_events + 1, 1);
drivers/thunderbolt/switch.c
1769
switch (sw->config.device_id) {
drivers/thunderbolt/switch.c
1780
if (!tb_switch_is_alpine_ridge(sw))
drivers/thunderbolt/switch.c
1786
return tb_sw_write(sw, &data, TB_CFG_SWITCH,
drivers/thunderbolt/switch.c
1787
sw->cap_plug_events + 1, 1);
drivers/thunderbolt/switch.c
1794
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1796
return sysfs_emit(buf, "%u\n", sw->authorized);
drivers/thunderbolt/switch.c
1802
struct tb_switch *sw;
drivers/thunderbolt/switch.c
1804
sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1805
if (sw && sw->authorized) {
drivers/thunderbolt/switch.c
1809
ret = device_for_each_child_reverse(&sw->dev, NULL, disapprove_switch);
drivers/thunderbolt/switch.c
1813
ret = tb_domain_disapprove_switch(sw->tb, sw);
drivers/thunderbolt/switch.c
1817
sw->authorized = 0;
drivers/thunderbolt/switch.c
1818
kobject_uevent_env(&sw->dev.kobj, KOBJ_CHANGE, envp);
drivers/thunderbolt/switch.c
1824
static int tb_switch_set_authorized(struct tb_switch *sw, unsigned int val)
drivers/thunderbolt/switch.c
1830
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
1833
if (!!sw->authorized == !!val)
drivers/thunderbolt/switch.c
1839
if (tb_route(sw)) {
drivers/thunderbolt/switch.c
1840
ret = disapprove_switch(&sw->dev, NULL);
drivers/thunderbolt/switch.c
1847
if (sw->key)
drivers/thunderbolt/switch.c
1848
ret = tb_domain_approve_switch_key(sw->tb, sw);
drivers/thunderbolt/switch.c
1850
ret = tb_domain_approve_switch(sw->tb, sw);
drivers/thunderbolt/switch.c
1855
if (sw->key)
drivers/thunderbolt/switch.c
1856
ret = tb_domain_challenge_switch_key(sw->tb, sw);
drivers/thunderbolt/switch.c
1864
sw->authorized = val;
drivers/thunderbolt/switch.c
1869
sprintf(envp_string, "AUTHORIZED=%u", sw->authorized);
drivers/thunderbolt/switch.c
1870
kobject_uevent_env(&sw->dev.kobj, KOBJ_CHANGE, envp);
drivers/thunderbolt/switch.c
1874
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
1882
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1892
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/switch.c
1893
ret = tb_switch_set_authorized(sw, val);
drivers/thunderbolt/switch.c
1894
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/switch.c
1895
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
1904
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1906
return sysfs_emit(buf, "%u\n", sw->boot);
drivers/thunderbolt/switch.c
1913
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1915
return sysfs_emit(buf, "%#x\n", sw->device);
drivers/thunderbolt/switch.c
192
ret = dma_port_flash_update_auth_status(sw->dma_port, &status);
drivers/thunderbolt/switch.c
1922
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1924
return sysfs_emit(buf, "%s\n", sw->device_name ?: "");
drivers/thunderbolt/switch.c
1931
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1933
return sysfs_emit(buf, "%u\n", sw->generation);
drivers/thunderbolt/switch.c
1940
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1943
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
1946
if (sw->key)
drivers/thunderbolt/switch.c
1947
ret = sysfs_emit(buf, "%*phN\n", TB_SWITCH_KEY_SIZE, sw->key);
drivers/thunderbolt/switch.c
1951
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
1958
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1968
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
197
tb_sw_warn(sw, "failed to authenticate NVM\n");
drivers/thunderbolt/switch.c
1971
if (sw->authorized) {
drivers/thunderbolt/switch.c
1974
kfree(sw->key);
drivers/thunderbolt/switch.c
1976
sw->key = NULL;
drivers/thunderbolt/switch.c
1978
sw->key = kmemdup(key, sizeof(key), GFP_KERNEL);
drivers/thunderbolt/switch.c
1979
if (!sw->key)
drivers/thunderbolt/switch.c
198
nvm_set_auth_status(sw, status);
drivers/thunderbolt/switch.c
1984
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
1992
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
1994
return sysfs_emit(buf, "%u.0 Gb/s\n", sw->link_speed);
drivers/thunderbolt/switch.c
2007
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
201
tb_sw_info(sw, "power cycling the switch now\n");
drivers/thunderbolt/switch.c
2010
switch (sw->link_width) {
drivers/thunderbolt/switch.c
202
dma_port_power_cycle(sw->dma_port);
drivers/thunderbolt/switch.c
2033
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2036
switch (sw->link_width) {
drivers/thunderbolt/switch.c
2059
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2062
nvm_get_auth_status(sw, &status);
drivers/thunderbolt/switch.c
2069
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2072
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/switch.c
2074
if (!mutex_trylock(&sw->tb->lock)) {
drivers/thunderbolt/switch.c
2079
if (sw->no_nvm_upgrade) {
drivers/thunderbolt/switch.c
2085
if (!sw->nvm) {
drivers/thunderbolt/switch.c
2095
nvm_clear_auth_status(sw);
drivers/thunderbolt/switch.c
2102
ret = nvm_authenticate(sw, true);
drivers/thunderbolt/switch.c
2104
if (!sw->nvm->flushed) {
drivers/thunderbolt/switch.c
2105
if (!sw->nvm->buf) {
drivers/thunderbolt/switch.c
2110
ret = nvm_validate_and_write(sw);
drivers/thunderbolt/switch.c
2116
ret = tb_lc_force_power(sw);
drivers/thunderbolt/switch.c
2118
ret = nvm_authenticate(sw, false);
drivers/thunderbolt/switch.c
212
static void nvm_authenticate_start_dma_port(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2124
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
2126
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/switch.c
2127
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
2161
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2164
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
2167
if (sw->safe_mode)
drivers/thunderbolt/switch.c
2169
else if (!sw->nvm)
drivers/thunderbolt/switch.c
2172
ret = sysfs_emit(buf, "%x.%x\n", sw->nvm->major, sw->nvm->minor);
drivers/thunderbolt/switch.c
2174
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
2183
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2185
return sysfs_emit(buf, "%#x\n", sw->vendor);
drivers/thunderbolt/switch.c
2192
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2194
return sysfs_emit(buf, "%s\n", sw->vendor_name ?: "");
drivers/thunderbolt/switch.c
2201
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2203
return sysfs_emit(buf, "%pUb\n", sw->uuid);
drivers/thunderbolt/switch.c
222
root_port = pcie_find_root_port(sw->tb->nhi->pdev);
drivers/thunderbolt/switch.c
2231
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2234
if (sw->tb->security_level == TB_SECURITY_NOPCIE ||
drivers/thunderbolt/switch.c
2235
sw->tb->security_level == TB_SECURITY_DPONLY)
drivers/thunderbolt/switch.c
2238
if (!sw->device)
drivers/thunderbolt/switch.c
2241
if (!sw->device_name)
drivers/thunderbolt/switch.c
2244
if (!sw->vendor)
drivers/thunderbolt/switch.c
2247
if (!sw->vendor_name)
drivers/thunderbolt/switch.c
2250
if (tb_route(sw) &&
drivers/thunderbolt/switch.c
2251
sw->tb->security_level == TB_SECURITY_SECURE &&
drivers/thunderbolt/switch.c
2252
sw->security_level == TB_SECURITY_SECURE)
drivers/thunderbolt/switch.c
2259
if (tb_route(sw))
drivers/thunderbolt/switch.c
2263
if (nvm_upgradeable(sw))
drivers/thunderbolt/switch.c
2267
if (nvm_readable(sw))
drivers/thunderbolt/switch.c
227
static void nvm_authenticate_complete_dma_port(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2271
if (tb_route(sw))
drivers/thunderbolt/switch.c
2275
if (sw->quirks & QUIRK_FORCE_POWER_LINK_CONTROLLER)
drivers/thunderbolt/switch.c
2280
return sw->safe_mode ? 0 : attr->mode;
drivers/thunderbolt/switch.c
2295
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2298
dma_port_free(sw->dma_port);
drivers/thunderbolt/switch.c
2300
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
2305
kfree(sw->uuid);
drivers/thunderbolt/switch.c
2306
kfree(sw->device_name);
drivers/thunderbolt/switch.c
2307
kfree(sw->vendor_name);
drivers/thunderbolt/switch.c
2308
kfree(sw->ports);
drivers/thunderbolt/switch.c
2309
kfree(sw->drom);
drivers/thunderbolt/switch.c
231
root_port = pcie_find_root_port(sw->tb->nhi->pdev);
drivers/thunderbolt/switch.c
2310
kfree(sw->key);
drivers/thunderbolt/switch.c
2311
kfree(sw);
drivers/thunderbolt/switch.c
2316
const struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2319
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
2321
usb4_switch_version(sw)))
drivers/thunderbolt/switch.c
2325
if (!tb_route(sw)) {
drivers/thunderbolt/switch.c
2332
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
2354
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2355
const struct tb_cm_ops *cm_ops = sw->tb->cm_ops;
drivers/thunderbolt/switch.c
2358
return cm_ops->runtime_suspend_switch(sw);
drivers/thunderbolt/switch.c
236
static inline bool nvm_readable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2365
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
2366
const struct tb_cm_ops *cm_ops = sw->tb->cm_ops;
drivers/thunderbolt/switch.c
2369
return cm_ops->runtime_resume_switch(sw);
drivers/thunderbolt/switch.c
238
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
2385
static int tb_switch_get_generation(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2387
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
2390
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/switch.c
2391
switch (sw->config.device_id) {
drivers/thunderbolt/switch.c
2425
tb_sw_warn(sw, "unsupported switch device id %#x\n",
drivers/thunderbolt/switch.c
2426
sw->config.device_id);
drivers/thunderbolt/switch.c
2430
static bool tb_switch_exceeds_max_depth(const struct tb_switch *sw, int depth)
drivers/thunderbolt/switch.c
2434
if (tb_switch_is_usb4(sw) ||
drivers/thunderbolt/switch.c
2435
(sw->tb->root_switch && tb_switch_is_usb4(sw->tb->root_switch)))
drivers/thunderbolt/switch.c
245
return usb4_switch_nvm_sector_size(sw) > 0;
drivers/thunderbolt/switch.c
2459
struct tb_switch *sw;
drivers/thunderbolt/switch.c
2478
sw = kzalloc_obj(*sw);
drivers/thunderbolt/switch.c
2479
if (!sw)
drivers/thunderbolt/switch.c
2482
sw->tb = tb;
drivers/thunderbolt/switch.c
2483
ret = tb_cfg_read(tb->ctl, &sw->config, route, 0, TB_CFG_SWITCH, 0, 5);
drivers/thunderbolt/switch.c
2487
sw->generation = tb_switch_get_generation(sw);
drivers/thunderbolt/switch.c
249
return !!sw->dma_port;
drivers/thunderbolt/switch.c
2490
tb_dump_switch(tb, sw);
drivers/thunderbolt/switch.c
2493
sw->config.upstream_port_number = upstream_port;
drivers/thunderbolt/switch.c
2494
sw->config.depth = depth;
drivers/thunderbolt/switch.c
2495
sw->config.route_hi = upper_32_bits(route);
drivers/thunderbolt/switch.c
2496
sw->config.route_lo = lower_32_bits(route);
drivers/thunderbolt/switch.c
2497
sw->config.enabled = 0;
drivers/thunderbolt/switch.c
2500
if (tb_switch_exceeds_max_depth(sw, depth)) {
drivers/thunderbolt/switch.c
2506
sw->ports = kzalloc_objs(*sw->ports, sw->config.max_port_number + 1);
drivers/thunderbolt/switch.c
2507
if (!sw->ports) {
drivers/thunderbolt/switch.c
2512
for (i = 0; i <= sw->config.max_port_number; i++) {
drivers/thunderbolt/switch.c
2514
sw->ports[i].sw = sw;
drivers/thunderbolt/switch.c
2515
sw->ports[i].port = i;
drivers/thunderbolt/switch.c
2519
ida_init(&sw->ports[i].in_hopids);
drivers/thunderbolt/switch.c
252
static inline bool nvm_upgradeable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2520
ida_init(&sw->ports[i].out_hopids);
drivers/thunderbolt/switch.c
2524
ret = tb_switch_find_vse_cap(sw, TB_VSE_CAP_PLUG_EVENTS);
drivers/thunderbolt/switch.c
2526
sw->cap_plug_events = ret;
drivers/thunderbolt/switch.c
2528
ret = tb_switch_find_vse_cap(sw, TB_VSE_CAP_TIME2);
drivers/thunderbolt/switch.c
2530
sw->cap_vsec_tmu = ret;
drivers/thunderbolt/switch.c
2532
ret = tb_switch_find_vse_cap(sw, TB_VSE_CAP_LINK_CONTROLLER);
drivers/thunderbolt/switch.c
2534
sw->cap_lc = ret;
drivers/thunderbolt/switch.c
2536
ret = tb_switch_find_vse_cap(sw, TB_VSE_CAP_CP_LP);
drivers/thunderbolt/switch.c
2538
sw->cap_lp = ret;
drivers/thunderbolt/switch.c
254
if (sw->no_nvm_upgrade)
drivers/thunderbolt/switch.c
2542
sw->authorized = true;
drivers/thunderbolt/switch.c
2544
device_initialize(&sw->dev);
drivers/thunderbolt/switch.c
2545
sw->dev.parent = parent;
drivers/thunderbolt/switch.c
2546
sw->dev.bus = &tb_bus_type;
drivers/thunderbolt/switch.c
2547
sw->dev.type = &tb_switch_type;
drivers/thunderbolt/switch.c
2548
sw->dev.groups = switch_groups;
drivers/thunderbolt/switch.c
2549
dev_set_name(&sw->dev, "%u-%llx", tb->index, tb_route(sw));
drivers/thunderbolt/switch.c
2551
return sw;
drivers/thunderbolt/switch.c
2554
kfree(sw->ports);
drivers/thunderbolt/switch.c
2555
kfree(sw);
drivers/thunderbolt/switch.c
256
return nvm_readable(sw);
drivers/thunderbolt/switch.c
2577
struct tb_switch *sw;
drivers/thunderbolt/switch.c
2579
sw = kzalloc_obj(*sw);
drivers/thunderbolt/switch.c
2580
if (!sw)
drivers/thunderbolt/switch.c
2583
sw->tb = tb;
drivers/thunderbolt/switch.c
2584
sw->config.depth = tb_route_length(route);
drivers/thunderbolt/switch.c
2585
sw->config.route_hi = upper_32_bits(route);
drivers/thunderbolt/switch.c
2586
sw->config.route_lo = lower_32_bits(route);
drivers/thunderbolt/switch.c
2587
sw->safe_mode = true;
drivers/thunderbolt/switch.c
2589
device_initialize(&sw->dev);
drivers/thunderbolt/switch.c
259
static int nvm_authenticate(struct tb_switch *sw, bool auth_only)
drivers/thunderbolt/switch.c
2590
sw->dev.parent = parent;
drivers/thunderbolt/switch.c
2591
sw->dev.bus = &tb_bus_type;
drivers/thunderbolt/switch.c
2592
sw->dev.type = &tb_switch_type;
drivers/thunderbolt/switch.c
2593
sw->dev.groups = switch_groups;
drivers/thunderbolt/switch.c
2594
dev_set_name(&sw->dev, "%u-%llx", tb->index, tb_route(sw));
drivers/thunderbolt/switch.c
2596
return sw;
drivers/thunderbolt/switch.c
2610
int tb_switch_configure(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2612
struct tb *tb = sw->tb;
drivers/thunderbolt/switch.c
2616
route = tb_route(sw);
drivers/thunderbolt/switch.c
2619
sw->config.enabled ? "restoring" : "initializing", route,
drivers/thunderbolt/switch.c
2620
tb_route_length(route), sw->config.upstream_port_number);
drivers/thunderbolt/switch.c
2622
sw->config.enabled = 1;
drivers/thunderbolt/switch.c
2624
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
263
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
2631
if (usb4_switch_version(sw) < 2)
drivers/thunderbolt/switch.c
2632
sw->config.cmuv = ROUTER_CS_4_CMUV_V1;
drivers/thunderbolt/switch.c
2634
sw->config.cmuv = ROUTER_CS_4_CMUV_V2;
drivers/thunderbolt/switch.c
2635
sw->config.plug_events_delay = 0xa;
drivers/thunderbolt/switch.c
2638
ret = tb_sw_write(sw, (u32 *)&sw->config + 1, TB_CFG_SWITCH,
drivers/thunderbolt/switch.c
2643
ret = usb4_switch_setup(sw);
drivers/thunderbolt/switch.c
2645
if (sw->config.vendor_id != PCI_VENDOR_ID_INTEL)
drivers/thunderbolt/switch.c
2646
tb_sw_warn(sw, "unknown switch vendor id %#x\n",
drivers/thunderbolt/switch.c
2647
sw->config.vendor_id);
drivers/thunderbolt/switch.c
2649
if (!sw->cap_plug_events) {
drivers/thunderbolt/switch.c
265
ret = usb4_switch_nvm_set_offset(sw, 0);
drivers/thunderbolt/switch.c
2650
tb_sw_warn(sw, "cannot find TB_VSE_CAP_PLUG_EVENTS aborting\n");
drivers/thunderbolt/switch.c
2655
ret = tb_sw_write(sw, (u32 *)&sw->config + 1, TB_CFG_SWITCH,
drivers/thunderbolt/switch.c
2661
return tb_plug_events_active(sw, true);
drivers/thunderbolt/switch.c
2673
int tb_switch_configuration_valid(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2675
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
2676
return usb4_switch_configuration_valid(sw);
drivers/thunderbolt/switch.c
2680
static int tb_switch_set_uuid(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2686
if (sw->uuid)
drivers/thunderbolt/switch.c
2689
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
269
sw->nvm->authenticating = true;
drivers/thunderbolt/switch.c
2690
ret = usb4_switch_read_uid(sw, &sw->uid);
drivers/thunderbolt/switch.c
2699
ret = tb_lc_read_uuid(sw, uuid);
drivers/thunderbolt/switch.c
270
return usb4_switch_nvm_authenticate(sw);
drivers/thunderbolt/switch.c
2714
uuid[0] = sw->uid & 0xffffffff;
drivers/thunderbolt/switch.c
2715
uuid[1] = (sw->uid >> 32) & 0xffffffff;
drivers/thunderbolt/switch.c
2720
sw->uuid = kmemdup(uuid, sizeof(uuid), GFP_KERNEL);
drivers/thunderbolt/switch.c
2721
if (!sw->uuid)
drivers/thunderbolt/switch.c
2726
static int tb_switch_add_dma_port(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2731
switch (sw->generation) {
drivers/thunderbolt/switch.c
2734
if (tb_route(sw))
drivers/thunderbolt/switch.c
2740
ret = tb_switch_set_uuid(sw);
drivers/thunderbolt/switch.c
275
sw->nvm->authenticating = true;
drivers/thunderbolt/switch.c
2750
if (!sw->safe_mode)
drivers/thunderbolt/switch.c
2755
if (sw->no_nvm_upgrade)
drivers/thunderbolt/switch.c
2758
if (tb_switch_is_usb4(sw)) {
drivers/thunderbolt/switch.c
2759
ret = usb4_switch_nvm_authenticate_status(sw, &status);
drivers/thunderbolt/switch.c
276
if (!tb_route(sw)) {
drivers/thunderbolt/switch.c
2764
tb_sw_info(sw, "switch flash authentication failed\n");
drivers/thunderbolt/switch.c
2765
nvm_set_auth_status(sw, status);
drivers/thunderbolt/switch.c
277
nvm_authenticate_start_dma_port(sw);
drivers/thunderbolt/switch.c
2772
if (!tb_route(sw) && !tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
2775
sw->dma_port = dma_port_alloc(sw);
drivers/thunderbolt/switch.c
2776
if (!sw->dma_port)
drivers/thunderbolt/switch.c
278
ret = nvm_authenticate_host_dma_port(sw);
drivers/thunderbolt/switch.c
2785
nvm_get_auth_status(sw, &status);
drivers/thunderbolt/switch.c
2787
if (!tb_route(sw))
drivers/thunderbolt/switch.c
2788
nvm_authenticate_complete_dma_port(sw);
drivers/thunderbolt/switch.c
2797
ret = dma_port_flash_update_auth_status(sw->dma_port, &status);
drivers/thunderbolt/switch.c
280
ret = nvm_authenticate_device_dma_port(sw);
drivers/thunderbolt/switch.c
2802
if (!tb_route(sw))
drivers/thunderbolt/switch.c
2803
nvm_authenticate_complete_dma_port(sw);
drivers/thunderbolt/switch.c
2806
tb_sw_info(sw, "switch flash authentication failed\n");
drivers/thunderbolt/switch.c
2807
nvm_set_auth_status(sw, status);
drivers/thunderbolt/switch.c
2810
tb_sw_info(sw, "power cycling the switch now\n");
drivers/thunderbolt/switch.c
2811
dma_port_power_cycle(sw->dma_port);
drivers/thunderbolt/switch.c
2820
static void tb_switch_default_link_ports(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2824
for (i = 1; i <= sw->config.max_port_number; i++) {
drivers/thunderbolt/switch.c
2825
struct tb_port *port = &sw->ports[i];
drivers/thunderbolt/switch.c
2832
if (i == sw->config.max_port_number ||
drivers/thunderbolt/switch.c
2833
!tb_port_is_null(&sw->ports[i + 1]))
drivers/thunderbolt/switch.c
2837
subordinate = &sw->ports[i + 1];
drivers/thunderbolt/switch.c
2844
tb_sw_dbg(sw, "linked ports %d <-> %d\n",
drivers/thunderbolt/switch.c
2850
static bool tb_switch_lane_bonding_possible(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2852
const struct tb_port *up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
2857
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
2858
return usb4_switch_lane_bonding_possible(sw);
drivers/thunderbolt/switch.c
2859
return tb_lc_lane_bonding_possible(sw);
drivers/thunderbolt/switch.c
2862
static int tb_switch_update_link_attributes(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2868
if (!tb_route(sw) || tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
2871
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
2876
if (sw->link_speed != ret)
drivers/thunderbolt/switch.c
2878
sw->link_speed = ret;
drivers/thunderbolt/switch.c
2883
if (sw->link_width != ret)
drivers/thunderbolt/switch.c
2885
sw->link_width = ret;
drivers/thunderbolt/switch.c
2888
if (device_is_registered(&sw->dev) && change)
drivers/thunderbolt/switch.c
2889
kobject_uevent(&sw->dev.kobj, KOBJ_CHANGE);
drivers/thunderbolt/switch.c
2895
static void tb_switch_link_init(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2900
if (!tb_route(sw) || tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
2903
tb_sw_dbg(sw, "current link speed %u.0 Gb/s\n", sw->link_speed);
drivers/thunderbolt/switch.c
2904
tb_sw_dbg(sw, "current link width %s\n", tb_width_name(sw->link_width));
drivers/thunderbolt/switch.c
2906
bonded = sw->link_width >= TB_LINK_WIDTH_DUAL;
drivers/thunderbolt/switch.c
2912
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
2913
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
2934
sw->preferred_link_width = sw->link_width;
drivers/thunderbolt/switch.c
2935
tb_sw_dbg(sw, "preferred link width %s\n",
drivers/thunderbolt/switch.c
2936
tb_width_name(sw->preferred_link_width));
drivers/thunderbolt/switch.c
2949
static int tb_switch_lane_bonding_enable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
2955
if (!tb_switch_lane_bonding_possible(sw))
drivers/thunderbolt/switch.c
2958
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
2959
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
298
int tb_switch_nvm_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/switch.c
3001
static int tb_switch_lane_bonding_disable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3006
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
301
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
302
return usb4_switch_nvm_read(sw, address, buf, size);
drivers/thunderbolt/switch.c
3021
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
303
return dma_port_flash_read(sw->dma_port, address, buf, size);
drivers/thunderbolt/switch.c
3033
static int tb_switch_asym_enable(struct tb_switch *sw, enum tb_link_width width)
drivers/thunderbolt/switch.c
3039
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3040
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
3062
if (sw->link_width != width) {
drivers/thunderbolt/switch.c
3076
static int tb_switch_asym_disable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3081
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3082
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
309
struct tb_switch *sw = tb_to_switch(nvm->dev);
drivers/thunderbolt/switch.c
3097
if (sw->link_width > TB_LINK_WIDTH_DUAL) {
drivers/thunderbolt/switch.c
3098
if (sw->link_width == TB_LINK_WIDTH_ASYM_TX)
drivers/thunderbolt/switch.c
312
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/switch.c
3126
int tb_switch_set_link_width(struct tb_switch *sw, enum tb_link_width width)
drivers/thunderbolt/switch.c
3131
if (!tb_route(sw))
drivers/thunderbolt/switch.c
3134
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3135
down = tb_switch_downstream_port(sw);
drivers/thunderbolt/switch.c
3139
ret = tb_switch_lane_bonding_disable(sw);
drivers/thunderbolt/switch.c
314
if (!mutex_trylock(&sw->tb->lock)) {
drivers/thunderbolt/switch.c
3143
if (sw->link_width == TB_LINK_WIDTH_ASYM_TX ||
drivers/thunderbolt/switch.c
3144
sw->link_width == TB_LINK_WIDTH_ASYM_RX) {
drivers/thunderbolt/switch.c
3145
ret = tb_switch_asym_disable(sw);
drivers/thunderbolt/switch.c
3149
ret = tb_switch_lane_bonding_enable(sw);
drivers/thunderbolt/switch.c
3154
ret = tb_switch_asym_enable(sw, width);
drivers/thunderbolt/switch.c
3163
tb_sw_warn(sw, "timeout changing link width\n");
drivers/thunderbolt/switch.c
3172
tb_sw_dbg(sw, "failed to change link width: %d\n", ret);
drivers/thunderbolt/switch.c
3179
tb_switch_update_link_attributes(sw);
drivers/thunderbolt/switch.c
3181
tb_sw_dbg(sw, "link width set to %s\n", tb_width_name(width));
drivers/thunderbolt/switch.c
319
ret = tb_switch_nvm_read(sw, offset, val, bytes);
drivers/thunderbolt/switch.c
3197
int tb_switch_configure_link(struct tb_switch *sw)
drivers/thunderbolt/switch.c
320
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
3202
if (!tb_route(sw) || tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
3205
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3206
if (tb_switch_is_usb4(up->sw))
drivers/thunderbolt/switch.c
3214
if (tb_switch_is_usb4(down->sw))
drivers/thunderbolt/switch.c
3226
void tb_switch_unconfigure_link(struct tb_switch *sw)
drivers/thunderbolt/switch.c
323
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/switch.c
3230
if (!tb_route(sw) || tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
3238
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
324
pm_runtime_put_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
3240
if (tb_switch_is_usb4(down->sw))
drivers/thunderbolt/switch.c
3245
if (sw->is_unplugged)
drivers/thunderbolt/switch.c
3248
up = tb_upstream_port(sw);
drivers/thunderbolt/switch.c
3249
if (tb_switch_is_usb4(up->sw))
drivers/thunderbolt/switch.c
3255
static void tb_switch_credits_init(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3257
if (tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
3259
if (!tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3261
if (usb4_switch_credits_init(sw))
drivers/thunderbolt/switch.c
3262
tb_sw_info(sw, "failed to determine preferred buffer allocation, using defaults\n");
drivers/thunderbolt/switch.c
3265
static int tb_switch_port_hotplug_enable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3269
if (tb_switch_is_icm(sw))
drivers/thunderbolt/switch.c
3272
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3297
int tb_switch_add(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3308
ret = tb_switch_add_dma_port(sw);
drivers/thunderbolt/switch.c
3310
dev_err(&sw->dev, "failed to add DMA port\n");
drivers/thunderbolt/switch.c
3314
if (!sw->safe_mode) {
drivers/thunderbolt/switch.c
3315
tb_switch_credits_init(sw);
drivers/thunderbolt/switch.c
3318
ret = tb_drom_read(sw);
drivers/thunderbolt/switch.c
332
struct tb_switch *sw = tb_to_switch(nvm->dev);
drivers/thunderbolt/switch.c
3320
dev_warn(&sw->dev, "reading DROM failed: %d\n", ret);
drivers/thunderbolt/switch.c
3321
tb_sw_dbg(sw, "uid: %#llx\n", sw->uid);
drivers/thunderbolt/switch.c
3323
ret = tb_switch_set_uuid(sw);
drivers/thunderbolt/switch.c
3325
dev_err(&sw->dev, "failed to set UUID\n");
drivers/thunderbolt/switch.c
3329
for (i = 0; i <= sw->config.max_port_number; i++) {
drivers/thunderbolt/switch.c
3330
if (sw->ports[i].disabled) {
drivers/thunderbolt/switch.c
3331
tb_port_dbg(&sw->ports[i], "disabled by eeprom\n");
drivers/thunderbolt/switch.c
3334
ret = tb_init_port(&sw->ports[i]);
drivers/thunderbolt/switch.c
3336
dev_err(&sw->dev, "failed to initialize port %d\n", i);
drivers/thunderbolt/switch.c
3341
tb_check_quirks(sw);
drivers/thunderbolt/switch.c
3343
tb_switch_default_link_ports(sw);
drivers/thunderbolt/switch.c
3345
ret = tb_switch_update_link_attributes(sw);
drivers/thunderbolt/switch.c
3349
tb_switch_link_init(sw);
drivers/thunderbolt/switch.c
335
if (!mutex_trylock(&sw->tb->lock))
drivers/thunderbolt/switch.c
3351
ret = tb_switch_clx_init(sw);
drivers/thunderbolt/switch.c
3355
ret = tb_switch_tmu_init(sw);
drivers/thunderbolt/switch.c
3360
ret = tb_switch_port_hotplug_enable(sw);
drivers/thunderbolt/switch.c
3364
ret = device_add(&sw->dev);
drivers/thunderbolt/switch.c
3366
dev_err(&sw->dev, "failed to add device: %d\n", ret);
drivers/thunderbolt/switch.c
3370
if (tb_route(sw)) {
drivers/thunderbolt/switch.c
3371
dev_info(&sw->dev, "new device found, vendor=%#x device=%#x\n",
drivers/thunderbolt/switch.c
3372
sw->vendor, sw->device);
drivers/thunderbolt/switch.c
3373
if (sw->vendor_name && sw->device_name)
drivers/thunderbolt/switch.c
3374
dev_info(&sw->dev, "%s %s\n", sw->vendor_name,
drivers/thunderbolt/switch.c
3375
sw->device_name);
drivers/thunderbolt/switch.c
3378
ret = usb4_switch_add_ports(sw);
drivers/thunderbolt/switch.c
3380
dev_err(&sw->dev, "failed to add USB4 ports\n");
drivers/thunderbolt/switch.c
3384
ret = tb_switch_nvm_add(sw);
drivers/thunderbolt/switch.c
3386
dev_err(&sw->dev, "failed to add NVM devices\n");
drivers/thunderbolt/switch.c
3395
device_init_wakeup(&sw->dev, true);
drivers/thunderbolt/switch.c
3397
pm_runtime_set_active(&sw->dev);
drivers/thunderbolt/switch.c
3398
if (sw->rpm) {
drivers/thunderbolt/switch.c
3399
pm_runtime_set_autosuspend_delay(&sw->dev, TB_AUTOSUSPEND_DELAY);
drivers/thunderbolt/switch.c
3400
pm_runtime_use_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
3401
pm_runtime_mark_last_busy(&sw->dev);
drivers/thunderbolt/switch.c
3402
pm_runtime_enable(&sw->dev);
drivers/thunderbolt/switch.c
3403
pm_request_autosuspend(&sw->dev);
drivers/thunderbolt/switch.c
3406
tb_switch_debugfs_init(sw);
drivers/thunderbolt/switch.c
3410
usb4_switch_remove_ports(sw);
drivers/thunderbolt/switch.c
3412
device_del(&sw->dev);
drivers/thunderbolt/switch.c
3425
void tb_switch_remove(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3429
tb_switch_debugfs_remove(sw);
drivers/thunderbolt/switch.c
3431
if (sw->rpm) {
drivers/thunderbolt/switch.c
3432
pm_runtime_get_sync(&sw->dev);
drivers/thunderbolt/switch.c
3433
pm_runtime_disable(&sw->dev);
drivers/thunderbolt/switch.c
3437
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3439
tb_switch_remove(port->remote->sw);
drivers/thunderbolt/switch.c
345
mutex_unlock(&sw->tb->lock);
drivers/thunderbolt/switch.c
3451
if (!sw->is_unplugged)
drivers/thunderbolt/switch.c
3452
tb_plug_events_active(sw, false);
drivers/thunderbolt/switch.c
3454
tb_switch_nvm_remove(sw);
drivers/thunderbolt/switch.c
3455
usb4_switch_remove_ports(sw);
drivers/thunderbolt/switch.c
3457
if (tb_route(sw))
drivers/thunderbolt/switch.c
3458
dev_info(&sw->dev, "device disconnected\n");
drivers/thunderbolt/switch.c
3459
device_unregister(&sw->dev);
drivers/thunderbolt/switch.c
3466
void tb_sw_set_unplugged(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3470
if (sw == sw->tb->root_switch) {
drivers/thunderbolt/switch.c
3471
tb_sw_WARN(sw, "cannot unplug root switch\n");
drivers/thunderbolt/switch.c
3474
if (sw->is_unplugged) {
drivers/thunderbolt/switch.c
3475
tb_sw_WARN(sw, "is_unplugged already set\n");
drivers/thunderbolt/switch.c
3478
sw->is_unplugged = true;
drivers/thunderbolt/switch.c
3479
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3481
tb_sw_set_unplugged(port->remote->sw);
drivers/thunderbolt/switch.c
3487
static int tb_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime)
drivers/thunderbolt/switch.c
3490
tb_sw_dbg(sw, "enabling wakeup: %#x\n", flags);
drivers/thunderbolt/switch.c
3492
tb_sw_dbg(sw, "disabling wakeup\n");
drivers/thunderbolt/switch.c
3494
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3495
return usb4_switch_set_wake(sw, flags, runtime);
drivers/thunderbolt/switch.c
3496
return tb_lc_set_wake(sw, flags);
drivers/thunderbolt/switch.c
3499
static void tb_switch_check_wakes(struct tb_switch *sw)
drivers/thunderbolt/switch.c
350
static int tb_switch_nvm_add(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3501
if (device_may_wakeup(&sw->dev)) {
drivers/thunderbolt/switch.c
3502
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3503
usb4_switch_check_wakes(sw);
drivers/thunderbolt/switch.c
3520
int tb_switch_resume(struct tb_switch *sw, bool runtime)
drivers/thunderbolt/switch.c
3525
tb_sw_dbg(sw, "resuming switch\n");
drivers/thunderbolt/switch.c
3531
if (tb_route(sw)) {
drivers/thunderbolt/switch.c
3539
err = tb_cfg_get_upstream_port(sw->tb->ctl, tb_route(sw));
drivers/thunderbolt/switch.c
3541
tb_sw_info(sw, "switch not present anymore\n");
drivers/thunderbolt/switch.c
3546
if (!sw->uid)
drivers/thunderbolt/switch.c
3549
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
355
if (!nvm_readable(sw))
drivers/thunderbolt/switch.c
3550
err = usb4_switch_read_uid(sw, &uid);
drivers/thunderbolt/switch.c
3552
err = tb_drom_read_uid_only(sw, &uid);
drivers/thunderbolt/switch.c
3554
tb_sw_warn(sw, "uid read failed\n");
drivers/thunderbolt/switch.c
3557
if (sw->uid != uid) {
drivers/thunderbolt/switch.c
3558
tb_sw_info(sw,
drivers/thunderbolt/switch.c
3560
sw->uid, uid);
drivers/thunderbolt/switch.c
3565
err = tb_switch_configure(sw);
drivers/thunderbolt/switch.c
3570
tb_switch_check_wakes(sw);
drivers/thunderbolt/switch.c
3573
tb_switch_set_wake(sw, 0, true);
drivers/thunderbolt/switch.c
3575
err = tb_switch_tmu_init(sw);
drivers/thunderbolt/switch.c
358
nvm = tb_nvm_alloc(&sw->dev);
drivers/thunderbolt/switch.c
3580
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3591
tb_sw_set_unplugged(port->remote->sw);
drivers/thunderbolt/switch.c
3602
tb_switch_resume(port->remote->sw, runtime)) {
drivers/thunderbolt/switch.c
3605
tb_sw_set_unplugged(port->remote->sw);
drivers/thunderbolt/switch.c
3622
void tb_switch_suspend(struct tb_switch *sw, bool runtime)
drivers/thunderbolt/switch.c
3628
tb_sw_dbg(sw, "suspending switch\n");
drivers/thunderbolt/switch.c
3634
tb_switch_clx_disable(sw);
drivers/thunderbolt/switch.c
3636
err = tb_plug_events_active(sw, false);
drivers/thunderbolt/switch.c
3640
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3642
tb_switch_suspend(port->remote->sw, runtime);
drivers/thunderbolt/switch.c
3650
} else if (device_may_wakeup(&sw->dev)) {
drivers/thunderbolt/switch.c
3655
tb_switch_set_wake(sw, flags, runtime);
drivers/thunderbolt/switch.c
3657
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3658
usb4_switch_set_sleep(sw);
drivers/thunderbolt/switch.c
3660
tb_lc_set_sleep(sw);
drivers/thunderbolt/switch.c
3673
bool tb_switch_query_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/switch.c
3675
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3676
return usb4_switch_query_dp_resource(sw, in);
drivers/thunderbolt/switch.c
3677
return tb_lc_dp_sink_query(sw, in);
drivers/thunderbolt/switch.c
3690
int tb_switch_alloc_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
ret = usb4_switch_alloc_dp_resource(sw, in);
drivers/thunderbolt/switch.c
3697
ret = tb_lc_dp_sink_alloc(sw, in);
drivers/thunderbolt/switch.c
3700
tb_sw_warn(sw, "failed to allocate DP resource for port %d\n",
drivers/thunderbolt/switch.c
3703
tb_sw_dbg(sw, "allocated DP resource for port %d\n", in->port);
drivers/thunderbolt/switch.c
3716
void tb_switch_dealloc_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/switch.c
3720
if (tb_switch_is_usb4(sw))
drivers/thunderbolt/switch.c
3721
ret = usb4_switch_dealloc_dp_resource(sw, in);
drivers/thunderbolt/switch.c
3723
ret = tb_lc_dp_sink_dealloc(sw, in);
drivers/thunderbolt/switch.c
3726
tb_sw_warn(sw, "failed to de-allocate DP resource for port %d\n",
drivers/thunderbolt/switch.c
3729
tb_sw_dbg(sw, "released DP resource for port %d\n", in->port);
drivers/thunderbolt/switch.c
373
if (!sw->safe_mode) {
drivers/thunderbolt/switch.c
3742
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/switch.c
3745
if (!sw)
drivers/thunderbolt/switch.c
3747
if (sw->tb != lookup->tb)
drivers/thunderbolt/switch.c
3751
return !memcmp(sw->uuid, lookup->uuid, sizeof(*lookup->uuid));
drivers/thunderbolt/switch.c
3754
return sw->config.route_lo == lower_32_bits(lookup->route) &&
drivers/thunderbolt/switch.c
3755
sw->config.route_hi == upper_32_bits(lookup->route);
drivers/thunderbolt/switch.c
3760
return !sw->depth;
drivers/thunderbolt/switch.c
3762
return sw->link == lookup->link && sw->depth == lookup->depth;
drivers/thunderbolt/switch.c
377
tb_sw_dbg(sw, "NVM version %x.%x\n", nvm->major, nvm->minor);
drivers/thunderbolt/switch.c
38
static struct nvm_auth_status *__nvm_get_auth_status(const struct tb_switch *sw)
drivers/thunderbolt/switch.c
380
if (!sw->no_nvm_upgrade) {
drivers/thunderbolt/switch.c
3855
struct tb_port *tb_switch_find_port(struct tb_switch *sw,
drivers/thunderbolt/switch.c
386
sw->nvm = nvm;
drivers/thunderbolt/switch.c
3860
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/switch.c
3872
static int tb_switch_pcie_bridge_write(struct tb_switch *sw, unsigned int bridge,
drivers/thunderbolt/switch.c
3878
if (sw->generation != 3)
drivers/thunderbolt/switch.c
3881
offset = sw->cap_plug_events + TB_PLUG_EVENTS_PCIE_WR_DATA;
drivers/thunderbolt/switch.c
3882
ret = tb_sw_write(sw, &value, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/switch.c
3893
offset = sw->cap_plug_events + TB_PLUG_EVENTS_PCIE_CMD;
drivers/thunderbolt/switch.c
3895
ret = tb_sw_write(sw, &command, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/switch.c
3899
ret = tb_switch_wait_for_bit(sw, offset,
drivers/thunderbolt/switch.c
390
tb_sw_dbg(sw, "NVM upgrade disabled\n");
drivers/thunderbolt/switch.c
3904
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, offset, 1);
drivers/thunderbolt/switch.c
391
sw->no_nvm_upgrade = true;
drivers/thunderbolt/switch.c
3925
int tb_switch_pcie_l1_enable(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3927
struct tb_switch *parent = tb_switch_parent(sw);
drivers/thunderbolt/switch.c
3930
if (!tb_route(sw))
drivers/thunderbolt/switch.c
3933
if (!tb_switch_is_titan_ridge(sw))
drivers/thunderbolt/switch.c
3941
ret = tb_switch_pcie_bridge_write(sw, 5, 0x143, 0x0c7806b1);
drivers/thunderbolt/switch.c
3946
return tb_switch_pcie_bridge_write(sw, 0, 0x143, 0x0c5806b1);
drivers/thunderbolt/switch.c
3961
int tb_switch_xhci_connect(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3966
if (sw->generation != 3)
drivers/thunderbolt/switch.c
3969
port1 = &sw->ports[1];
drivers/thunderbolt/switch.c
3970
port3 = &sw->ports[3];
drivers/thunderbolt/switch.c
3972
if (tb_switch_is_alpine_ridge(sw)) {
drivers/thunderbolt/switch.c
398
static void tb_switch_nvm_remove(struct tb_switch *sw)
drivers/thunderbolt/switch.c
3988
} else if (tb_switch_is_titan_ridge(sw)) {
drivers/thunderbolt/switch.c
4005
void tb_switch_xhci_disconnect(struct tb_switch *sw)
drivers/thunderbolt/switch.c
4007
if (sw->generation == 3) {
drivers/thunderbolt/switch.c
4008
struct tb_port *port1 = &sw->ports[1];
drivers/thunderbolt/switch.c
4009
struct tb_port *port3 = &sw->ports[3];
drivers/thunderbolt/switch.c
402
nvm = sw->nvm;
drivers/thunderbolt/switch.c
403
sw->nvm = NULL;
drivers/thunderbolt/switch.c
410
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
575
if (credits == 0 || port->sw->is_unplugged)
drivers/thunderbolt/switch.c
582
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
626
if (tb_switch_is_icm(port->sw))
drivers/thunderbolt/switch.c
630
if (tb_switch_is_usb4(port->sw))
drivers/thunderbolt/switch.c
65
if (WARN_ON(!sw->uuid))
drivers/thunderbolt/switch.c
69
st = __nvm_get_auth_status(sw);
drivers/thunderbolt/switch.c
691
if (tb_switch_is_usb4(port->sw))
drivers/thunderbolt/switch.c
718
tb_dbg(port->sw->tb, " Port %d: not implemented\n",
drivers/thunderbolt/switch.c
76
memcpy(&st->uuid, sw->uuid, sizeof(st->uuid));
drivers/thunderbolt/switch.c
763
tb_dump_port(port->sw->tb, port);
drivers/thunderbolt/switch.c
843
const struct tb_switch *sw)
drivers/thunderbolt/switch.c
846
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
872
if (prev->sw == end->sw) {
drivers/thunderbolt/switch.c
878
if (tb_switch_is_reachable(prev->sw, end->sw)) {
drivers/thunderbolt/switch.c
879
next = tb_port_at(tb_route(end->sw), prev->sw);
drivers/thunderbolt/switch.c
888
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
2738
struct tb_switch *sw;
drivers/thunderbolt/tb.c
2747
sw = tb_switch_find_by_route(tb, ev->route);
drivers/thunderbolt/tb.c
2748
if (!sw) {
drivers/thunderbolt/tb.c
275
return tb_switch_tmu_enable(sw);
drivers/thunderbolt/tb.c
2754
in = &sw->ports[ev->port];
drivers/thunderbolt/tb.c
283
struct tb_switch *sw;
drivers/thunderbolt/tb.c
2850
tb_switch_put(sw);
drivers/thunderbolt/tb.c
2968
struct tb_switch *sw = tb_to_switch(dev);
drivers/thunderbolt/tb.c
297
sw = tunnel->tb->root_switch;
drivers/thunderbolt/tb.c
2975
if (sw->boot)
drivers/thunderbolt/tb.c
2976
sw->authorized = 1;
drivers/thunderbolt/tb.c
298
device_for_each_child(&sw->dev, NULL, tb_increase_switch_tmu_accuracy);
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
3081
static void tb_restore_children(struct tb_switch *sw)
drivers/thunderbolt/tb.c
3086
if (sw->is_unplugged)
drivers/thunderbolt/tb.c
3089
if (tb_enable_clx(sw))
drivers/thunderbolt/tb.c
3090
tb_sw_warn(sw, "failed to re-enable CL states\n");
drivers/thunderbolt/tb.c
3092
if (tb_enable_tmu(sw))
drivers/thunderbolt/tb.c
3093
tb_sw_warn(sw, "failed to restore TMU configuration\n");
drivers/thunderbolt/tb.c
3095
tb_switch_configuration_valid(sw);
drivers/thunderbolt/tb.c
3097
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
3102
tb_switch_set_link_width(port->remote->sw,
drivers/thunderbolt/tb.c
3103
port->remote->sw->link_width);
drivers/thunderbolt/tb.c
3104
tb_switch_configure_link(port->remote->sw);
drivers/thunderbolt/tb.c
3106
tb_restore_children(port->remote->sw);
drivers/thunderbolt/tb.c
3174
static int tb_free_unplugged_xdomains(struct tb_switch *sw)
drivers/thunderbolt/tb.c
3179
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/tb.c
3189
ret += 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
1021
static inline bool tb_switch_is_icm(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
1023
return !sw->config.enabled;
drivers/thunderbolt/tb.h
1026
int tb_switch_set_link_width(struct tb_switch *sw, enum tb_link_width width);
drivers/thunderbolt/tb.h
1027
int tb_switch_configure_link(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1028
void tb_switch_unconfigure_link(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1030
bool tb_switch_query_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1031
int tb_switch_alloc_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1032
void tb_switch_dealloc_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1034
int tb_switch_tmu_init(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1035
int tb_switch_tmu_post_time(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1036
int tb_switch_tmu_disable(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1037
int tb_switch_tmu_enable(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1038
int tb_switch_tmu_configure(struct tb_switch *sw, enum tb_switch_tmu_mode mode);
drivers/thunderbolt/tb.h
1050
static inline bool tb_switch_tmu_is_configured(const struct tb_switch *sw,
drivers/thunderbolt/tb.h
1053
return sw->tmu.mode_request == mode;
drivers/thunderbolt/tb.h
1063
static inline bool tb_switch_tmu_is_enabled(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
1065
return sw->tmu.mode != TB_SWITCH_TMU_MODE_OFF &&
drivers/thunderbolt/tb.h
1066
sw->tmu.mode == sw->tmu.mode_request;
drivers/thunderbolt/tb.h
1071
int tb_switch_clx_init(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1072
int tb_switch_clx_enable(struct tb_switch *sw, unsigned int clx);
drivers/thunderbolt/tb.h
1073
int tb_switch_clx_disable(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1086
static inline bool tb_switch_clx_is_enabled(const struct tb_switch *sw,
drivers/thunderbolt/tb.h
1089
return sw->clx & clx;
drivers/thunderbolt/tb.h
1092
int tb_switch_pcie_l1_enable(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1094
int tb_switch_xhci_connect(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1095
void tb_switch_xhci_disconnect(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1123
return src->sw->config.depth < dst->sw->config.depth;
drivers/thunderbolt/tb.h
1128
return tb_port_is_null(port) && port->sw->credit_allocation;
drivers/thunderbolt/tb.h
1169
int tb_switch_find_vse_cap(struct tb_switch *sw, enum tb_switch_vse_cap vsec);
drivers/thunderbolt/tb.h
1170
int tb_switch_find_cap(struct tb_switch *sw, enum tb_switch_cap cap);
drivers/thunderbolt/tb.h
1171
int tb_switch_next_cap(struct tb_switch *sw, unsigned int offset);
drivers/thunderbolt/tb.h
1215
int tb_drom_read(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1216
int tb_drom_read_uid_only(struct tb_switch *sw, u64 *uid);
drivers/thunderbolt/tb.h
1218
int tb_lc_read_uuid(struct tb_switch *sw, u32 *uuid);
drivers/thunderbolt/tb.h
1230
int tb_lc_set_wake(struct tb_switch *sw, unsigned int flags);
drivers/thunderbolt/tb.h
1231
int tb_lc_set_sleep(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1232
bool tb_lc_lane_bonding_possible(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1233
bool tb_lc_dp_sink_query(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1234
int tb_lc_dp_sink_alloc(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1235
int tb_lc_dp_sink_dealloc(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1236
int tb_lc_force_power(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1253
return tb_route(port->sw)
drivers/thunderbolt/tb.h
1254
| ((u64) port->port << (port->sw->config.depth * 8));
drivers/thunderbolt/tb.h
1308
static inline unsigned int usb4_switch_version(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
1310
return FIELD_GET(USB4_VERSION_MAJOR_MASK, sw->config.thunderbolt_version);
drivers/thunderbolt/tb.h
1319
static inline bool tb_switch_is_usb4(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
1321
return usb4_switch_version(sw) > 0;
drivers/thunderbolt/tb.h
1324
void usb4_switch_check_wakes(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1325
int usb4_switch_setup(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1326
int usb4_switch_configuration_valid(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1327
int usb4_switch_read_uid(struct tb_switch *sw, u64 *uid);
drivers/thunderbolt/tb.h
1328
int usb4_switch_drom_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/tb.h
1330
bool usb4_switch_lane_bonding_possible(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1331
int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime);
drivers/thunderbolt/tb.h
1332
int usb4_switch_set_sleep(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1333
int usb4_switch_nvm_sector_size(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1334
int usb4_switch_nvm_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/tb.h
1336
int usb4_switch_nvm_set_offset(struct tb_switch *sw, unsigned int address);
drivers/thunderbolt/tb.h
1337
int usb4_switch_nvm_write(struct tb_switch *sw, unsigned int address,
drivers/thunderbolt/tb.h
1339
int usb4_switch_nvm_authenticate(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1340
int usb4_switch_nvm_authenticate_status(struct tb_switch *sw, u32 *status);
drivers/thunderbolt/tb.h
1341
int usb4_switch_credits_init(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1342
bool usb4_switch_query_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1343
int usb4_switch_alloc_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1344
int usb4_switch_dealloc_dp_resource(struct tb_switch *sw, struct tb_port *in);
drivers/thunderbolt/tb.h
1345
struct tb_port *usb4_switch_map_pcie_down(struct tb_switch *sw,
drivers/thunderbolt/tb.h
1347
struct tb_port *usb4_switch_map_usb3_down(struct tb_switch *sw,
drivers/thunderbolt/tb.h
1349
int usb4_switch_add_ports(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1350
void usb4_switch_remove_ports(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1497
int usb4_port_index(const struct tb_switch *sw, const struct tb_port *port);
drivers/thunderbolt/tb.h
1504
void tb_check_quirks(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1537
void tb_switch_debugfs_init(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1538
void tb_switch_debugfs_remove(struct tb_switch *sw);
drivers/thunderbolt/tb.h
1548
static inline void tb_switch_debugfs_init(struct tb_switch *sw) { }
drivers/thunderbolt/tb.h
1549
static inline void tb_switch_debugfs_remove(struct tb_switch *sw) { }
drivers/thunderbolt/tb.h
282
struct tb_switch *sw;
drivers/thunderbolt/tb.h
519
int (*runtime_suspend_switch)(struct tb_switch *sw);
drivers/thunderbolt/tb.h
520
int (*runtime_resume_switch)(struct tb_switch *sw);
drivers/thunderbolt/tb.h
525
int (*disapprove_switch)(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
526
int (*approve_switch)(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
527
int (*add_switch_key)(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
528
int (*challenge_switch_key)(struct tb *tb, struct tb_switch *sw,
drivers/thunderbolt/tb.h
537
int (*usb4_switch_op)(struct tb_switch *sw, u16 opcode, u32 *metadata,
drivers/thunderbolt/tb.h
540
int (*usb4_switch_nvm_authenticate_status)(struct tb_switch *sw,
drivers/thunderbolt/tb.h
564
static inline struct tb_port *tb_upstream_port(struct tb_switch *sw)
drivers/thunderbolt/tb.h
566
return &sw->ports[sw->config.upstream_port_number];
drivers/thunderbolt/tb.h
578
const struct tb_port *upstream_port = tb_upstream_port(port->sw);
drivers/thunderbolt/tb.h
582
static inline u64 tb_route(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
584
return ((u64) sw->config.route_hi) << 32 | sw->config.route_lo;
drivers/thunderbolt/tb.h
587
static inline struct tb_port *tb_port_at(u64 route, struct tb_switch *sw)
drivers/thunderbolt/tb.h
591
port = route >> (sw->config.depth * 8);
drivers/thunderbolt/tb.h
592
if (WARN_ON(port > sw->config.max_port_number))
drivers/thunderbolt/tb.h
594
return &sw->ports[port];
drivers/thunderbolt/tb.h
671
static inline int tb_sw_read(struct tb_switch *sw, void *buffer,
drivers/thunderbolt/tb.h
674
if (sw->is_unplugged)
drivers/thunderbolt/tb.h
676
return tb_cfg_read(sw->tb->ctl,
drivers/thunderbolt/tb.h
678
tb_route(sw),
drivers/thunderbolt/tb.h
685
static inline int tb_sw_write(struct tb_switch *sw, const void *buffer,
drivers/thunderbolt/tb.h
688
if (sw->is_unplugged)
drivers/thunderbolt/tb.h
690
return tb_cfg_write(sw->tb->ctl,
drivers/thunderbolt/tb.h
692
tb_route(sw),
drivers/thunderbolt/tb.h
702
if (port->sw->is_unplugged)
drivers/thunderbolt/tb.h
704
return tb_cfg_read(port->sw->tb->ctl,
drivers/thunderbolt/tb.h
706
tb_route(port->sw),
drivers/thunderbolt/tb.h
716
if (port->sw->is_unplugged)
drivers/thunderbolt/tb.h
718
return tb_cfg_write(port->sw->tb->ctl,
drivers/thunderbolt/tb.h
720
tb_route(port->sw),
drivers/thunderbolt/tb.h
733
#define __TB_SW_PRINT(level, sw, fmt, arg...) \
drivers/thunderbolt/tb.h
735
const struct tb_switch *__sw = (sw); \
drivers/thunderbolt/tb.h
739
#define tb_sw_WARN(sw, fmt, arg...) __TB_SW_PRINT(tb_WARN, sw, fmt, ##arg)
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_info(sw, fmt, arg...) __TB_SW_PRINT(tb_info, sw, fmt, ##arg)
drivers/thunderbolt/tb.h
742
#define tb_sw_dbg(sw, fmt, arg...) __TB_SW_PRINT(tb_dbg, sw, fmt, ##arg)
drivers/thunderbolt/tb.h
747
level(__port->sw->tb, "%llx:%u: " fmt, \
drivers/thunderbolt/tb.h
748
tb_route(__port->sw), __port->port, ## arg); \
drivers/thunderbolt/tb.h
783
int tb_domain_disapprove_switch(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
784
int tb_domain_approve_switch(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
785
int tb_domain_approve_switch_key(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
786
int tb_domain_challenge_switch_key(struct tb *tb, struct tb_switch *sw);
drivers/thunderbolt/tb.h
842
int tb_switch_nvm_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/tb.h
848
int tb_switch_configure(struct tb_switch *sw);
drivers/thunderbolt/tb.h
849
int tb_switch_configuration_valid(struct tb_switch *sw);
drivers/thunderbolt/tb.h
850
int tb_switch_add(struct tb_switch *sw);
drivers/thunderbolt/tb.h
851
void tb_switch_remove(struct tb_switch *sw);
drivers/thunderbolt/tb.h
852
void tb_switch_suspend(struct tb_switch *sw, bool runtime);
drivers/thunderbolt/tb.h
853
int tb_switch_resume(struct tb_switch *sw, bool runtime);
drivers/thunderbolt/tb.h
854
int tb_switch_reset(struct tb_switch *sw);
drivers/thunderbolt/tb.h
855
int tb_switch_wait_for_bit(struct tb_switch *sw, u32 offset, u32 bit,
drivers/thunderbolt/tb.h
857
void tb_sw_set_unplugged(struct tb_switch *sw);
drivers/thunderbolt/tb.h
858
struct tb_port *tb_switch_find_port(struct tb_switch *sw,
drivers/thunderbolt/tb.h
872
#define tb_switch_for_each_port(sw, p) \
drivers/thunderbolt/tb.h
873
for ((p) = &(sw)->ports[1]; \
drivers/thunderbolt/tb.h
874
(p) <= &(sw)->ports[(sw)->config.max_port_number]; (p)++)
drivers/thunderbolt/tb.h
876
static inline struct tb_switch *tb_switch_get(struct tb_switch *sw)
drivers/thunderbolt/tb.h
878
if (sw)
drivers/thunderbolt/tb.h
879
get_device(&sw->dev);
drivers/thunderbolt/tb.h
880
return sw;
drivers/thunderbolt/tb.h
883
static inline void tb_switch_put(struct tb_switch *sw)
drivers/thunderbolt/tb.h
885
put_device(&sw->dev);
drivers/thunderbolt/tb.h
900
static inline struct tb_switch *tb_switch_parent(struct tb_switch *sw)
drivers/thunderbolt/tb.h
902
return tb_to_switch(sw->dev.parent);
drivers/thunderbolt/tb.h
913
static inline struct tb_port *tb_switch_downstream_port(struct tb_switch *sw)
drivers/thunderbolt/tb.h
915
if (WARN_ON(!tb_route(sw)))
drivers/thunderbolt/tb.h
917
return tb_port_at(tb_route(sw), tb_switch_parent(sw));
drivers/thunderbolt/tb.h
926
static inline int tb_switch_depth(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
928
return sw->config.depth;
drivers/thunderbolt/tb.h
931
static inline bool tb_switch_is_light_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
933
return sw->config.vendor_id == PCI_VENDOR_ID_INTEL &&
drivers/thunderbolt/tb.h
934
sw->config.device_id == PCI_DEVICE_ID_INTEL_LIGHT_RIDGE;
drivers/thunderbolt/tb.h
937
static inline bool tb_switch_is_eagle_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
939
return sw->config.vendor_id == PCI_VENDOR_ID_INTEL &&
drivers/thunderbolt/tb.h
940
sw->config.device_id == PCI_DEVICE_ID_INTEL_EAGLE_RIDGE;
drivers/thunderbolt/tb.h
943
static inline bool tb_switch_is_cactus_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
945
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/tb.h
946
switch (sw->config.device_id) {
drivers/thunderbolt/tb.h
955
static inline bool tb_switch_is_falcon_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
957
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/tb.h
958
switch (sw->config.device_id) {
drivers/thunderbolt/tb.h
967
static inline bool tb_switch_is_alpine_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
969
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/tb.h
970
switch (sw->config.device_id) {
drivers/thunderbolt/tb.h
982
static inline bool tb_switch_is_titan_ridge(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
984
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/tb.h
985
switch (sw->config.device_id) {
drivers/thunderbolt/tb.h
995
static inline bool tb_switch_is_tiger_lake(const struct tb_switch *sw)
drivers/thunderbolt/tb.h
997
if (sw->config.vendor_id == PCI_VENDOR_ID_INTEL) {
drivers/thunderbolt/tb.h
998
switch (sw->config.device_id) {
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
1066
if (tb_dp_is_usb4(tunnel->src_port->sw) &&
drivers/thunderbolt/tunnel.c
1101
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
1365
const struct tb_switch *sw = tunnel->src_port->sw;
drivers/thunderbolt/tunnel.c
1369
if (tb_dp_is_usb4(sw)) {
drivers/thunderbolt/tunnel.c
138
spare = min_not_zero(sw->max_dma_credits, dma_credits);
drivers/thunderbolt/tunnel.c
1403
} else if (sw->generation >= 2) {
drivers/thunderbolt/tunnel.c
1428
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
1431
hop->initial_credits = sw->min_dp_aux_credits;
drivers/thunderbolt/tunnel.c
1457
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
1472
if (nfc_credits / sw->min_dp_main_credits > max_dp_streams)
drivers/thunderbolt/tunnel.c
1475
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
1695
pm_support = usb4_switch_version(in->sw) >= 2;
drivers/thunderbolt/tunnel.c
1727
const struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
1732
credits -= sw->max_pcie_credits;
drivers/thunderbolt/tunnel.c
174
usb4_switch_version(in_port->sw) >= 2)
drivers/thunderbolt/tunnel.c
1904
credits = min_not_zero(dma_credits, nhi->sw->max_dma_credits);
drivers/thunderbolt/tunnel.c
2042
struct tb_port *port = tb_upstream_port(tunnel->dst_port->sw);
drivers/thunderbolt/tunnel.c
2134
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
2138
credits = sw->max_usb3_credits;
drivers/thunderbolt/tunnel.c
2232
if (!tb_route(down->sw)) {
drivers/thunderbolt/tunnel.c
2289
if (!tb_route(down->sw) && (max_up > 0 || max_down > 0)) {
drivers/thunderbolt/tunnel.c
2328
if (!tb_route(down->sw)) {
drivers/thunderbolt/tunnel.c
265
tb_route(src_port->sw), src_port->port,
drivers/thunderbolt/tunnel.c
266
tb_route(dst_port->sw), dst_port->port,
drivers/thunderbolt/tunnel.c
301
struct tb_port *port = tb_upstream_port(tunnel->dst_port->sw);
drivers/thunderbolt/tunnel.c
305
if ((usb4_switch_version(tunnel->src_port->sw) < 2) ||
drivers/thunderbolt/tunnel.c
306
(usb4_switch_version(tunnel->dst_port->sw) < 2))
drivers/thunderbolt/tunnel.c
366
struct tb_switch *sw = port->sw;
drivers/thunderbolt/tunnel.c
373
credits = min(sw->max_pcie_credits, available);
drivers/thunderbolt/tunnel.c
570
if (!tb_switch_find_port(port->sw, TB_TYPE_PCIE_UP))
drivers/thunderbolt/tunnel.c
572
if (!tb_switch_find_port(port->remote->sw, TB_TYPE_PCIE_DOWN))
drivers/thunderbolt/tunnel.c
575
if (!tb_switch_find_port(port->sw, TB_TYPE_PCIE_DOWN))
drivers/thunderbolt/tunnel.c
577
if (!tb_switch_find_port(port->remote->sw, TB_TYPE_PCIE_UP))
drivers/thunderbolt/tunnel.c
589
static bool tb_dp_is_usb4(const struct tb_switch *sw)
drivers/thunderbolt/tunnel.c
592
return tb_switch_is_usb4(sw) || tb_switch_is_titan_ridge(sw);
drivers/thunderbolt/tunnel.c
603
if (!tb_dp_is_usb4(in->sw) || !tb_dp_is_usb4(out->sw))
drivers/thunderbolt/tunnel.c
797
if (in->sw->generation < 2 || out->sw->generation < 2)
drivers/thunderbolt/tunnel.c
876
if (tb_route(out->sw) && tb_switch_is_titan_ridge(out->sw)) {
drivers/thunderbolt/tunnel.c
990
struct tb_switch *sw = in->sw;
drivers/thunderbolt/tunnel.c
991
struct tb *tb = in->sw->tb;
drivers/thunderbolt/tunnel.c
998
if (!tb_switch_is_usb4(sw))
drivers/thunderbolt/tunnel.h
227
tb_route(__tunnel->src_port->sw), \
drivers/thunderbolt/tunnel.h
229
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
1010
struct tb_port *usb4_switch_map_pcie_down(struct tb_switch *sw,
drivers/thunderbolt/usb4.c
1013
int usb4_idx = usb4_port_index(sw, port);
drivers/thunderbolt/usb4.c
1018
tb_switch_for_each_port(sw, p) {
drivers/thunderbolt/usb4.c
1043
struct tb_port *usb4_switch_map_usb3_down(struct tb_switch *sw,
drivers/thunderbolt/usb4.c
1046
int usb4_idx = usb4_port_index(sw, port);
drivers/thunderbolt/usb4.c
1051
tb_switch_for_each_port(sw, p) {
drivers/thunderbolt/usb4.c
1073
int usb4_switch_add_ports(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
1077
if (tb_switch_is_icm(sw) || !tb_switch_is_usb4(sw))
drivers/thunderbolt/usb4.c
1080
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
1090
usb4_switch_remove_ports(sw);
drivers/thunderbolt/usb4.c
1106
void usb4_switch_remove_ports(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
1110
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
2225
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
2503
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
return tb_sw_write(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
311
int usb4_switch_configuration_valid(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
316
if (!tb_route(sw))
drivers/thunderbolt/usb4.c
319
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
325
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
329
return tb_switch_wait_for_bit(sw, ROUTER_CS_6, ROUTER_CS_6_CR,
drivers/thunderbolt/usb4.c
342
int usb4_switch_read_uid(struct tb_switch *sw, u64 *uid)
drivers/thunderbolt/usb4.c
344
return tb_sw_read(sw, uid, TB_CFG_SWITCH, ROUTER_CS_7, 2);
drivers/thunderbolt/usb4.c
351
struct tb_switch *sw = data;
drivers/thunderbolt/usb4.c
360
ret = usb4_switch_op_data(sw, USB4_SWITCH_OP_DROM_READ, &metadata,
drivers/thunderbolt/usb4.c
381
int usb4_switch_drom_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/usb4.c
385
usb4_switch_drom_read_block, sw);
drivers/thunderbolt/usb4.c
397
bool usb4_switch_lane_bonding_possible(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
403
up = tb_upstream_port(sw);
drivers/thunderbolt/usb4.c
421
int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime)
drivers/thunderbolt/usb4.c
424
u64 route = tb_route(sw);
drivers/thunderbolt/usb4.c
433
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/usb4.c
473
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
485
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
502
int usb4_switch_set_sleep(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
508
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
514
ret = tb_sw_write(sw, &val, TB_CFG_SWITCH, ROUTER_CS_5, 1);
drivers/thunderbolt/usb4.c
518
return tb_switch_wait_for_bit(sw, ROUTER_CS_6, ROUTER_CS_6_SLPR,
drivers/thunderbolt/usb4.c
531
int usb4_switch_nvm_sector_size(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
537
ret = usb4_switch_op(sw, USB4_SWITCH_OP_NVM_SECTOR_SIZE, &metadata,
drivers/thunderbolt/usb4.c
54
static int usb4_native_switch_op(struct tb_switch *sw, u16 opcode,
drivers/thunderbolt/usb4.c
551
struct tb_switch *sw = data;
drivers/thunderbolt/usb4.c
561
ret = usb4_switch_op_data(sw, USB4_SWITCH_OP_NVM_READ, &metadata,
drivers/thunderbolt/usb4.c
583
int usb4_switch_nvm_read(struct tb_switch *sw, unsigned int address, void *buf,
drivers/thunderbolt/usb4.c
587
usb4_switch_nvm_read_block, sw);
drivers/thunderbolt/usb4.c
600
int usb4_switch_nvm_set_offset(struct tb_switch *sw, unsigned int address)
drivers/thunderbolt/usb4.c
610
ret = usb4_switch_op(sw, USB4_SWITCH_OP_NVM_SET_OFFSET, &metadata,
drivers/thunderbolt/usb4.c
621
struct tb_switch *sw = data;
drivers/thunderbolt/usb4.c
625
ret = usb4_switch_op_data(sw, USB4_SWITCH_OP_NVM_WRITE, NULL, &status,
drivers/thunderbolt/usb4.c
63
ret = tb_sw_write(sw, metadata, TB_CFG_SWITCH, ROUTER_CS_25, 1);
drivers/thunderbolt/usb4.c
647
int usb4_switch_nvm_write(struct tb_switch *sw, unsigned int address,
drivers/thunderbolt/usb4.c
652
ret = usb4_switch_nvm_set_offset(sw, address);
drivers/thunderbolt/usb4.c
657
usb4_switch_nvm_write_next_block, sw);
drivers/thunderbolt/usb4.c
675
int usb4_switch_nvm_authenticate(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
679
ret = usb4_switch_op(sw, USB4_SWITCH_OP_NVM_AUTH, NULL, NULL);
drivers/thunderbolt/usb4.c
68
ret = tb_sw_write(sw, tx_data, TB_CFG_SWITCH, ROUTER_CS_9,
drivers/thunderbolt/usb4.c
709
int usb4_switch_nvm_authenticate_status(struct tb_switch *sw, u32 *status)
drivers/thunderbolt/usb4.c
711
const struct tb_cm_ops *cm_ops = sw->tb->cm_ops;
drivers/thunderbolt/usb4.c
717
ret = cm_ops->usb4_switch_nvm_authenticate_status(sw, status);
drivers/thunderbolt/usb4.c
722
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
753
int usb4_switch_credits_init(struct tb_switch *sw)
drivers/thunderbolt/usb4.c
763
ret = usb4_switch_op_data(sw, USB4_SWITCH_OP_BUFFER_ALLOC, &metadata,
drivers/thunderbolt/usb4.c
780
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
790
tb_sw_dbg(sw, " USB3: %u\n", value);
drivers/thunderbolt/usb4.c
794
tb_sw_dbg(sw, " DP AUX: %u\n", value);
drivers/thunderbolt/usb4.c
798
tb_sw_dbg(sw, " DP main: %u\n", value);
drivers/thunderbolt/usb4.c
802
tb_sw_dbg(sw, " PCIe: %u\n", value);
drivers/thunderbolt/usb4.c
806
tb_sw_dbg(sw, " DMA: %u\n", value);
drivers/thunderbolt/usb4.c
810
tb_sw_dbg(sw, " unknown credit allocation index %#x, skipping\n",
drivers/thunderbolt/usb4.c
823
if (!tb_route(sw) && max_dma < 0) {
drivers/thunderbolt/usb4.c
824
tb_sw_warn(sw, "host router is missing baMaxHI\n");
drivers/thunderbolt/usb4.c
829
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/usb4.c
83
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_26, 1);
drivers/thunderbolt/usb4.c
836
tb_sw_warn(sw, "multiple USB4 ports require baMinDPaux/baMinDPmain\n");
drivers/thunderbolt/usb4.c
840
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/usb4.c
842
tb_sw_warn(sw, "missing baMinDPmain");
drivers/thunderbolt/usb4.c
847
tb_sw_warn(sw, "missing baMinDPaux");
drivers/thunderbolt/usb4.c
852
tb_sw_warn(sw, "missing baMaxUSB3");
drivers/thunderbolt/usb4.c
857
tb_sw_warn(sw, "missing baMaxPCIe");
drivers/thunderbolt/usb4.c
866
sw->credit_allocation = true;
drivers/thunderbolt/usb4.c
868
sw->max_usb3_credits = max_usb3;
drivers/thunderbolt/usb4.c
870
sw->min_dp_aux_credits = min_dp_aux;
drivers/thunderbolt/usb4.c
872
sw->min_dp_main_credits = min_dp_main;
drivers/thunderbolt/usb4.c
874
sw->max_pcie_credits = max_pcie;
drivers/thunderbolt/usb4.c
876
sw->max_dma_credits = max_dma;
drivers/thunderbolt/usb4.c
895
bool usb4_switch_query_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/usb4.c
901
ret = usb4_switch_op(sw, USB4_SWITCH_OP_QUERY_DP_RESOURCE, &metadata,
drivers/thunderbolt/usb4.c
928
int usb4_switch_alloc_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/usb4.c
934
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
953
int usb4_switch_dealloc_dp_resource(struct tb_switch *sw, struct tb_port *in)
drivers/thunderbolt/usb4.c
959
ret = usb4_switch_op(sw, USB4_SWITCH_OP_DEALLOC_DP_RESOURCE, &metadata,
drivers/thunderbolt/usb4.c
977
int usb4_port_index(const struct tb_switch *sw, const struct tb_port *port)
drivers/thunderbolt/usb4.c
983
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
2306
static struct tb_xdomain *switch_find_xdomain(struct tb_switch *sw,
drivers/thunderbolt/xdomain.c
2311
tb_switch_for_each_port(sw, port) {
drivers/thunderbolt/xdomain.c
2329
xd = switch_find_xdomain(port->remote->sw, lookup);
drivers/usb/cdns3/core.c
342
static enum usb_role cdns_role_get(struct usb_role_switch *sw)
drivers/usb/cdns3/core.c
344
struct cdns *cdns = usb_role_switch_get_drvdata(sw);
drivers/usb/cdns3/core.c
358
static int cdns_role_set(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/cdns3/core.c
360
struct cdns *cdns = usb_role_switch_get_drvdata(sw);
drivers/usb/chipidea/core.c
602
static enum usb_role ci_usb_role_switch_get(struct usb_role_switch *sw)
drivers/usb/chipidea/core.c
604
struct ci_hdrc *ci = usb_role_switch_get_drvdata(sw);
drivers/usb/chipidea/core.c
615
static int ci_usb_role_switch_set(struct usb_role_switch *sw,
drivers/usb/chipidea/core.c
618
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
2436
static enum usb_role renesas_usb3_role_switch_get(struct usb_role_switch *sw)
drivers/usb/gadget/udc/renesas_usb3.c
2438
struct renesas_usb3 *usb3 = usb_role_switch_get_drvdata(sw);
drivers/usb/gadget/udc/renesas_usb3.c
2535
static int renesas_usb3_role_switch_set(struct usb_role_switch *sw,
drivers/usb/gadget/udc/renesas_usb3.c
2538
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
2115
typec_switch_put(port->sw);
drivers/usb/typec/class.c
2395
ret = typec_switch_set(port->sw, orientation);
drivers/usb/typec/class.c
2776
port->sw = typec_switch_get(&port->dev);
drivers/usb/typec/class.c
2777
if (IS_ERR(port->sw)) {
drivers/usb/typec/class.c
2778
ret = PTR_ERR(port->sw);
drivers/usb/typec/class.h
68
struct typec_switch *sw;
drivers/usb/typec/mux.c
101
sw->sw_devs[i] = sw_devs[i];
drivers/usb/typec/mux.c
104
sw->num_sw_devs = count;
drivers/usb/typec/mux.c
106
return sw;
drivers/usb/typec/mux.c
114
kfree(sw);
drivers/usb/typec/mux.c
126
void typec_switch_put(struct typec_switch *sw)
drivers/usb/typec/mux.c
131
if (IS_ERR_OR_NULL(sw))
drivers/usb/typec/mux.c
134
for (i = 0; i < sw->num_sw_devs; i++) {
drivers/usb/typec/mux.c
135
sw_dev = sw->sw_devs[i];
drivers/usb/typec/mux.c
140
kfree(sw);
drivers/usb/typec/mux.c
203
int typec_switch_set(struct typec_switch *sw,
drivers/usb/typec/mux.c
210
if (IS_ERR_OR_NULL(sw))
drivers/usb/typec/mux.c
213
for (i = 0; i < sw->num_sw_devs; i++) {
drivers/usb/typec/mux.c
214
sw_dev = sw->sw_devs[i];
drivers/usb/typec/mux.c
74
struct typec_switch *sw;
drivers/usb/typec/mux.c
79
sw = kzalloc_obj(*sw);
drivers/usb/typec/mux.c
80
if (!sw)
drivers/usb/typec/mux.c
88
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
543
static int pmc_usb_set_orientation(struct typec_switch_dev *sw,
drivers/usb/typec/mux/intel_pmc_mux.c
546
struct pmc_usb_port *port = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/intel_pmc_mux.c
555
static int pmc_usb_set_role(struct usb_role_switch *sw, enum usb_role role)
drivers/usb/typec/mux/intel_pmc_mux.c
557
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
177
static int ps883x_sw_set(struct typec_switch_dev *sw,
drivers/usb/typec/mux/ps883x.c
180
struct ps883x_retimer *retimer = typec_switch_get_drvdata(sw);
drivers/usb/typec/mux/ps883x.c
429
retimer->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/ps883x.c
430
if (IS_ERR(retimer->sw)) {
drivers/usb/typec/mux/ps883x.c
431
ret = PTR_ERR(retimer->sw);
drivers/usb/typec/mux/ps883x.c
450
typec_switch_unregister(retimer->sw);
drivers/usb/typec/mux/ps883x.c
469
typec_switch_unregister(retimer->sw);
drivers/usb/typec/mux/ps883x.c
48
struct typec_switch_dev *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
142
priv->sw = typec_switch_register(dev, &sw_desc);
drivers/usb/typec/mux/tusb1046.c
143
if (IS_ERR(priv->sw)) {
drivers/usb/typec/mux/tusb1046.c
144
ret = dev_err_probe(dev, PTR_ERR(priv->sw), "failed to register type-c switch\n");
drivers/usb/typec/mux/tusb1046.c
163
typec_switch_unregister(priv->sw);
drivers/usb/typec/mux/tusb1046.c
173
typec_switch_unregister(priv->sw);
drivers/usb/typec/mux/tusb1046.c
34
struct typec_switch_dev *sw;
drivers/usb/typec/mux/tusb1046.c
91
static int tusb1046_switch_set(struct typec_switch_dev *sw,
drivers/usb/typec/mux/tusb1046.c
94
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
308
struct tls_sw_context_rx sw;
include/scsi/libsas.h
214
static inline void INIT_SAS_WORK(struct sas_work *sw, void (*fn)(struct work_struct *))
include/scsi/libsas.h
216
INIT_WORK(&sw->work, fn);
include/scsi/libsas.h
217
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
2656
sw = snd_cmipci_old_mixer_switches;
sound/pci/cmipci.c
2657
for (idx = 0; idx < ARRAY_SIZE(snd_cmipci_old_mixer_switches); idx++, sw++) {
sound/pci/cmipci.c
2658
err = snd_ctl_add(cm->card, snd_ctl_new1(sw, cm));
sound/pci/cmipci.c
2665
sw = snd_cmipci_extra_mixer_switches;
sound/pci/cmipci.c
2666
for (idx = 0; idx < ARRAY_SIZE(snd_cmipci_extra_mixer_switches); idx++, sw++) {
sound/pci/cmipci.c
2667
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
3132
static int wcd939x_typec_switch_set(struct typec_switch_dev *sw,
sound/soc/codecs/wcd939x.c
3135
struct wcd939x_priv *wcd939x = typec_switch_get_drvdata(sw);
sound/soc/rockchip/rockchip_sai.c
916
int sw = slot_width;
sound/soc/rockchip/rockchip_sai.c
921
sw = 32;
sound/soc/rockchip/rockchip_sai.c
926
if (sw < 16 || sw > 32)
sound/soc/rockchip/rockchip_sai.c
933
SAI_XCR_SBW(sw));
sound/soc/rockchip/rockchip_sai.c
935
SAI_XCR_SBW(sw));
sound/usb/mixer_quirks.c
662
status = test_bit(SW_HEADPHONE_INSERT, handle->dev->sw);
sound/usb/mixer_quirks.c
665
status = test_bit(SW_MICROPHONE_INSERT, handle->dev->sw);