Linux cpanel.rrshost.in 5.15.0-25-generic #25-Ubuntu SMP Wed Mar 30 15:54:22 UTC 2022 x86_64
Apache
: 109.123.238.221 | : 108.162.241.157
128 Domain
8.2.28
aev999
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
src /
linux-headers-5.15.0-25 /
include /
linux /
[ HOME SHELL ]
Name
Size
Permission
Action
amba
[ DIR ]
drwxr-xr-x
atomic
[ DIR ]
drwxr-xr-x
avf
[ DIR ]
drwxr-xr-x
bcma
[ DIR ]
drwxr-xr-x
byteorder
[ DIR ]
drwxr-xr-x
can
[ DIR ]
drwxr-xr-x
ceph
[ DIR ]
drwxr-xr-x
clk
[ DIR ]
drwxr-xr-x
crush
[ DIR ]
drwxr-xr-x
decompress
[ DIR ]
drwxr-xr-x
device
[ DIR ]
drwxr-xr-x
dma
[ DIR ]
drwxr-xr-x
dsa
[ DIR ]
drwxr-xr-x
extcon
[ DIR ]
drwxr-xr-x
firmware
[ DIR ]
drwxr-xr-x
fpga
[ DIR ]
drwxr-xr-x
fsl
[ DIR ]
drwxr-xr-x
gpio
[ DIR ]
drwxr-xr-x
greybus
[ DIR ]
drwxr-xr-x
hsi
[ DIR ]
drwxr-xr-x
i3c
[ DIR ]
drwxr-xr-x
iio
[ DIR ]
drwxr-xr-x
input
[ DIR ]
drwxr-xr-x
irqchip
[ DIR ]
drwxr-xr-x
isdn
[ DIR ]
drwxr-xr-x
lockd
[ DIR ]
drwxr-xr-x
mailbox
[ DIR ]
drwxr-xr-x
mdio
[ DIR ]
drwxr-xr-x
mfd
[ DIR ]
drwxr-xr-x
mlx4
[ DIR ]
drwxr-xr-x
mlx5
[ DIR ]
drwxr-xr-x
mmc
[ DIR ]
drwxr-xr-x
mtd
[ DIR ]
drwxr-xr-x
mux
[ DIR ]
drwxr-xr-x
net
[ DIR ]
drwxr-xr-x
netfilter
[ DIR ]
drwxr-xr-x
netfilter_arp
[ DIR ]
drwxr-xr-x
netfilter_bridge
[ DIR ]
drwxr-xr-x
netfilter_ipv4
[ DIR ]
drwxr-xr-x
netfilter_ipv6
[ DIR ]
drwxr-xr-x
pcs
[ DIR ]
drwxr-xr-x
perf
[ DIR ]
drwxr-xr-x
phy
[ DIR ]
drwxr-xr-x
pinctrl
[ DIR ]
drwxr-xr-x
platform_data
[ DIR ]
drwxr-xr-x
power
[ DIR ]
drwxr-xr-x
qed
[ DIR ]
drwxr-xr-x
raid
[ DIR ]
drwxr-xr-x
regulator
[ DIR ]
drwxr-xr-x
remoteproc
[ DIR ]
drwxr-xr-x
reset
[ DIR ]
drwxr-xr-x
rpmsg
[ DIR ]
drwxr-xr-x
rtc
[ DIR ]
drwxr-xr-x
sched
[ DIR ]
drwxr-xr-x
soc
[ DIR ]
drwxr-xr-x
soundwire
[ DIR ]
drwxr-xr-x
spi
[ DIR ]
drwxr-xr-x
ssb
[ DIR ]
drwxr-xr-x
sunrpc
[ DIR ]
drwxr-xr-x
surface_aggregator
[ DIR ]
drwxr-xr-x
ulpi
[ DIR ]
drwxr-xr-x
unaligned
[ DIR ]
drwxr-xr-x
usb
[ DIR ]
drwxr-xr-x
8250_pci.h
1.01
KB
-rw-r--r--
a.out.h
354
B
-rw-r--r--
acct.h
2.49
KB
-rw-r--r--
acpi.h
39.5
KB
-rw-r--r--
acpi_dma.h
3.08
KB
-rw-r--r--
acpi_iort.h
2.27
KB
-rw-r--r--
acpi_mdio.h
631
B
-rw-r--r--
acpi_pmtmr.h
674
B
-rw-r--r--
acpi_viot.h
389
B
-rw-r--r--
adb.h
1.79
KB
-rw-r--r--
adfs_fs.h
574
B
-rw-r--r--
adreno-smmu-priv.h
2.74
KB
-rw-r--r--
adxl.h
310
B
-rw-r--r--
aer.h
1.78
KB
-rw-r--r--
agp_backend.h
3.45
KB
-rw-r--r--
agpgart.h
3.79
KB
-rw-r--r--
ahci-remap.h
607
B
-rw-r--r--
ahci_platform.h
1.54
KB
-rw-r--r--
aio.h
651
B
-rw-r--r--
alarmtimer.h
1.94
KB
-rw-r--r--
alcor_pci.h
8.83
KB
-rw-r--r--
align.h
552
B
-rw-r--r--
altera_jtaguart.h
379
B
-rw-r--r--
altera_uart.h
397
B
-rw-r--r--
amd-iommu.h
6.18
KB
-rw-r--r--
anon_inodes.h
670
B
-rw-r--r--
apm-emulation.h
1.56
KB
-rw-r--r--
apm_bios.h
2.25
KB
-rw-r--r--
apple-gmux.h
918
B
-rw-r--r--
apple_bl.h
498
B
-rw-r--r--
arch_topology.h
2.49
KB
-rw-r--r--
arm-cci.h
1.36
KB
-rw-r--r--
arm-smccc.h
17.7
KB
-rw-r--r--
arm_ffa.h
7.36
KB
-rw-r--r--
arm_sdei.h
2.51
KB
-rw-r--r--
armada-37xx-rwtm-mailbox.h
431
B
-rw-r--r--
ascii85.h
555
B
-rw-r--r--
asn1.h
1.79
KB
-rw-r--r--
asn1_ber_bytecode.h
2.52
KB
-rw-r--r--
asn1_decoder.h
468
B
-rw-r--r--
asn1_encoder.h
1006
B
-rw-r--r--
assoc_array.h
2.88
KB
-rw-r--r--
assoc_array_priv.h
5.3
KB
-rw-r--r--
async.h
4.26
KB
-rw-r--r--
async_tx.h
6.7
KB
-rw-r--r--
ata.h
32.52
KB
-rw-r--r--
ata_platform.h
749
B
-rw-r--r--
atalk.h
4.48
KB
-rw-r--r--
ath9k_platform.h
1.44
KB
-rw-r--r--
atm.h
287
B
-rw-r--r--
atm_tcp.h
511
B
-rw-r--r--
atmdev.h
9.99
KB
-rw-r--r--
atmel-isc-media.h
2.07
KB
-rw-r--r--
atmel-mci.h
1.4
KB
-rw-r--r--
atmel-ssc.h
9.74
KB
-rw-r--r--
atmel_pdc.h
1.26
KB
-rw-r--r--
atomic.h
2.58
KB
-rw-r--r--
attribute_container.h
2.74
KB
-rw-r--r--
audit.h
19.45
KB
-rw-r--r--
auto_dev-ioctl.h
296
B
-rw-r--r--
auto_fs.h
278
B
-rw-r--r--
auxiliary_bus.h
2.48
KB
-rw-r--r--
auxvec.h
304
B
-rw-r--r--
average.h
2.42
KB
-rw-r--r--
backing-dev-defs.h
8.55
KB
-rw-r--r--
backing-dev.h
11.81
KB
-rw-r--r--
backlight.h
13.13
KB
-rw-r--r--
badblocks.h
2.14
KB
-rw-r--r--
balloon_compaction.h
6.59
KB
-rw-r--r--
bcd.h
559
B
-rw-r--r--
bch.h
2.1
KB
-rw-r--r--
bcm47xx_nvram.h
1.01
KB
-rw-r--r--
bcm47xx_sprom.h
616
B
-rw-r--r--
bcm47xx_wdt.h
555
B
-rw-r--r--
bcm963xx_nvram.h
2.96
KB
-rw-r--r--
bcm963xx_tag.h
3.6
KB
-rw-r--r--
binfmts.h
4.48
KB
-rw-r--r--
bio.h
19.64
KB
-rw-r--r--
bit_spinlock.h
2.3
KB
-rw-r--r--
bitfield.h
4.75
KB
-rw-r--r--
bitmap.h
21.62
KB
-rw-r--r--
bitops.h
8.53
KB
-rw-r--r--
bitrev.h
2.53
KB
-rw-r--r--
bits.h
1.35
KB
-rw-r--r--
blk-cgroup.h
21.4
KB
-rw-r--r--
blk-crypto.h
4.02
KB
-rw-r--r--
blk-mq-pci.h
269
B
-rw-r--r--
blk-mq-rdma.h
273
B
-rw-r--r--
blk-mq-virtio.h
293
B
-rw-r--r--
blk-mq.h
19.37
KB
-rw-r--r--
blk-pm.h
708
B
-rw-r--r--
blk_types.h
15.42
KB
-rw-r--r--
blkdev.h
56.35
KB
-rw-r--r--
blkpg.h
436
B
-rw-r--r--
blktrace_api.h
3.77
KB
-rw-r--r--
blockgroup_lock.h
810
B
-rw-r--r--
bma150.h
1.26
KB
-rw-r--r--
bootconfig.h
8.51
KB
-rw-r--r--
bootmem_info.h
1.61
KB
-rw-r--r--
bottom_half.h
974
B
-rw-r--r--
bpf-cgroup.h
18.52
KB
-rw-r--r--
bpf-netns.h
1.52
KB
-rw-r--r--
bpf.h
69.46
KB
-rw-r--r--
bpf_lirc.h
698
B
-rw-r--r--
bpf_local_storage.h
5.23
KB
-rw-r--r--
bpf_lsm.h
1.42
KB
-rw-r--r--
bpf_trace.h
166
B
-rw-r--r--
bpf_types.h
5.41
KB
-rw-r--r--
bpf_verifier.h
18.45
KB
-rw-r--r--
bpfilter.h
791
B
-rw-r--r--
bpfptr.h
1.83
KB
-rw-r--r--
brcmphy.h
13.67
KB
-rw-r--r--
bsearch.h
624
B
-rw-r--r--
bsg-lib.h
1.72
KB
-rw-r--r--
bsg.h
492
B
-rw-r--r--
btf.h
7.26
KB
-rw-r--r--
btf_ids.h
5.32
KB
-rw-r--r--
btree-128.h
2.67
KB
-rw-r--r--
btree-type.h
3.9
KB
-rw-r--r--
btree.h
6.84
KB
-rw-r--r--
btrfs.h
145
B
-rw-r--r--
buffer_head.h
13.54
KB
-rw-r--r--
bug.h
2.17
KB
-rw-r--r--
build-salt.h
375
B
-rw-r--r--
build_bug.h
2.76
KB
-rw-r--r--
buildid.h
561
B
-rw-r--r--
bvec.h
6.17
KB
-rw-r--r--
c2port.h
1.35
KB
-rw-r--r--
cache.h
2.55
KB
-rw-r--r--
cacheinfo.h
3.75
KB
-rw-r--r--
capability.h
8.29
KB
-rw-r--r--
cb710.h
5.36
KB
-rw-r--r--
cc_platform.h
2.32
KB
-rw-r--r--
cciss_ioctl.h
1.03
KB
-rw-r--r--
ccp.h
18.14
KB
-rw-r--r--
cdev.h
845
B
-rw-r--r--
cdrom.h
8.98
KB
-rw-r--r--
cfag12864b.h
1.47
KB
-rw-r--r--
cfi.h
1.13
KB
-rw-r--r--
cgroup-defs.h
24.1
KB
-rw-r--r--
cgroup.h
28.19
KB
-rw-r--r--
cgroup_rdma.h
1.18
KB
-rw-r--r--
cgroup_subsys.h
1.23
KB
-rw-r--r--
circ_buf.h
1.09
KB
-rw-r--r--
cleancache.h
3.89
KB
-rw-r--r--
clk-provider.h
56.38
KB
-rw-r--r--
clk.h
29.59
KB
-rw-r--r--
clkdev.h
1.29
KB
-rw-r--r--
clockchips.h
7.27
KB
-rw-r--r--
clocksource.h
9.57
KB
-rw-r--r--
clocksource_ids.h
247
B
-rw-r--r--
cm4000_cs.h
199
B
-rw-r--r--
cma.h
1.59
KB
-rw-r--r--
cn_proc.h
1.85
KB
-rw-r--r--
cnt32_to_63.h
3.46
KB
-rw-r--r--
coda.h
2.16
KB
-rw-r--r--
compaction.h
7.15
KB
-rw-r--r--
compat.h
31.35
KB
-rw-r--r--
compiler-clang.h
2.27
KB
-rw-r--r--
compiler-gcc.h
4.44
KB
-rw-r--r--
compiler-intel.h
949
B
-rw-r--r--
compiler-version.h
517
B
-rw-r--r--
compiler.h
7.78
KB
-rw-r--r--
compiler_attributes.h
12.15
KB
-rw-r--r--
compiler_types.h
10.46
KB
-rw-r--r--
completion.h
4
KB
-rw-r--r--
component.h
4.07
KB
-rw-r--r--
configfs.h
8.48
KB
-rw-r--r--
connector.h
3.83
KB
-rw-r--r--
console.h
7.28
KB
-rw-r--r--
console_struct.h
7.08
KB
-rw-r--r--
consolemap.h
1.05
KB
-rw-r--r--
const.h
421
B
-rw-r--r--
container.h
610
B
-rw-r--r--
context_tracking.h
3.28
KB
-rw-r--r--
context_tracking_state.h
1.58
KB
-rw-r--r--
cookie.h
1.22
KB
-rw-r--r--
cordic.h
2.08
KB
-rw-r--r--
coredump.h
1.23
KB
-rw-r--r--
coresight-pmu.h
1.32
KB
-rw-r--r--
coresight-stm.h
152
B
-rw-r--r--
coresight.h
17.81
KB
-rw-r--r--
count_zeros.h
1.42
KB
-rw-r--r--
counter.h
15.13
KB
-rw-r--r--
counter_enum.h
1.43
KB
-rw-r--r--
cper.h
16.41
KB
-rw-r--r--
cpu.h
7.31
KB
-rw-r--r--
cpu_cooling.h
1.86
KB
-rw-r--r--
cpu_pm.h
2.38
KB
-rw-r--r--
cpu_rmap.h
1.68
KB
-rw-r--r--
cpufeature.h
1.71
KB
-rw-r--r--
cpufreq.h
32.57
KB
-rw-r--r--
cpuhotplug.h
16.47
KB
-rw-r--r--
cpuidle.h
10.27
KB
-rw-r--r--
cpuidle_haltpoll.h
312
B
-rw-r--r--
cpumask.h
28.61
KB
-rw-r--r--
cpuset.h
7.34
KB
-rw-r--r--
crash_core.h
3.38
KB
-rw-r--r--
crash_dump.h
4.05
KB
-rw-r--r--
crc-ccitt.h
609
B
-rw-r--r--
crc-itu-t.h
531
B
-rw-r--r--
crc-t10dif.h
453
B
-rw-r--r--
crc16.h
540
B
-rw-r--r--
crc32.h
2.83
KB
-rw-r--r--
crc32c.h
331
B
-rw-r--r--
crc32poly.h
610
B
-rw-r--r--
crc4.h
192
B
-rw-r--r--
crc64.h
280
B
-rw-r--r--
crc7.h
316
B
-rw-r--r--
crc8.h
3.66
KB
-rw-r--r--
cred.h
12.48
KB
-rw-r--r--
crypto.h
27.08
KB
-rw-r--r--
cs5535.h
6.13
KB
-rw-r--r--
ctype.h
1.87
KB
-rw-r--r--
cuda.h
613
B
-rw-r--r--
damon.h
10.35
KB
-rw-r--r--
dasd_mod.h
204
B
-rw-r--r--
davinci_emac.h
1.05
KB
-rw-r--r--
dax.h
6.56
KB
-rw-r--r--
dca.h
1.88
KB
-rw-r--r--
dcache.h
18.63
KB
-rw-r--r--
dccp.h
10.73
KB
-rw-r--r--
debug_locks.h
1.59
KB
-rw-r--r--
debugfs.h
11.22
KB
-rw-r--r--
debugobjects.h
3.99
KB
-rw-r--r--
delay.h
2.43
KB
-rw-r--r--
delayacct.h
5.45
KB
-rw-r--r--
delayed_call.h
709
B
-rw-r--r--
dev_printk.h
9.05
KB
-rw-r--r--
devcoredump.h
2.21
KB
-rw-r--r--
devfreq-event.h
5.95
KB
-rw-r--r--
devfreq.h
13.98
KB
-rw-r--r--
devfreq_cooling.h
2.7
KB
-rw-r--r--
device-mapper.h
18.92
KB
-rw-r--r--
device.h
32.89
KB
-rw-r--r--
device_cgroup.h
1.57
KB
-rw-r--r--
devm-helpers.h
2.68
KB
-rw-r--r--
devpts_fs.h
1.13
KB
-rw-r--r--
dfl.h
2.38
KB
-rw-r--r--
digsig.h
1.18
KB
-rw-r--r--
dim.h
9.13
KB
-rw-r--r--
dio.h
10.76
KB
-rw-r--r--
dirent.h
215
B
-rw-r--r--
dlm.h
5.86
KB
-rw-r--r--
dlm_plock.h
532
B
-rw-r--r--
dm-bufio.h
4.88
KB
-rw-r--r--
dm-dirty-log.h
3.94
KB
-rw-r--r--
dm-io.h
1.93
KB
-rw-r--r--
dm-kcopyd.h
2.94
KB
-rw-r--r--
dm-region-hash.h
3.11
KB
-rw-r--r--
dm9000.h
987
B
-rw-r--r--
dma-buf-map.h
8.12
KB
-rw-r--r--
dma-buf.h
20.47
KB
-rw-r--r--
dma-direct.h
3.59
KB
-rw-r--r--
dma-direction.h
407
B
-rw-r--r--
dma-fence-array.h
2.14
KB
-rw-r--r--
dma-fence-chain.h
3.07
KB
-rw-r--r--
dma-fence.h
20.25
KB
-rw-r--r--
dma-heap.h
1.58
KB
-rw-r--r--
dma-iommu.h
2.21
KB
-rw-r--r--
dma-map-ops.h
12.73
KB
-rw-r--r--
dma-mapping.h
19.81
KB
-rw-r--r--
dma-resv.h
9.05
KB
-rw-r--r--
dmaengine.h
53.53
KB
-rw-r--r--
dmapool.h
1.79
KB
-rw-r--r--
dmar.h
7.74
KB
-rw-r--r--
dmi.h
4.27
KB
-rw-r--r--
dnotify.h
1.02
KB
-rw-r--r--
dns_resolver.h
1.36
KB
-rw-r--r--
dqblk_qtree.h
2.19
KB
-rw-r--r--
dqblk_v1.h
327
B
-rw-r--r--
dqblk_v2.h
406
B
-rw-r--r--
drbd.h
10.07
KB
-rw-r--r--
drbd_genl.h
21.49
KB
-rw-r--r--
drbd_genl_api.h
1.77
KB
-rw-r--r--
drbd_limits.h
7.82
KB
-rw-r--r--
ds2782_battery.h
158
B
-rw-r--r--
dtlk.h
3.5
KB
-rw-r--r--
dtpm.h
1.64
KB
-rw-r--r--
dw_apb_timer.h
1.53
KB
-rw-r--r--
dynamic_debug.h
6.6
KB
-rw-r--r--
dynamic_queue_limits.h
3.72
KB
-rw-r--r--
earlycpio.h
359
B
-rw-r--r--
ecryptfs.h
3.82
KB
-rw-r--r--
edac.h
19.46
KB
-rw-r--r--
edd.h
1.05
KB
-rw-r--r--
eeprom_93cx6.h
2.31
KB
-rw-r--r--
eeprom_93xx46.h
1.04
KB
-rw-r--r--
efi-bgrt.h
644
B
-rw-r--r--
efi.h
42.25
KB
-rw-r--r--
efi_embedded_fw.h
1.04
KB
-rw-r--r--
efs_vh.h
1.55
KB
-rw-r--r--
eisa.h
2.96
KB
-rw-r--r--
elevator.h
5.52
KB
-rw-r--r--
elf-fdpic.h
1.98
KB
-rw-r--r--
elf-randomize.h
583
B
-rw-r--r--
elf.h
2.96
KB
-rw-r--r--
elfcore-compat.h
1.27
KB
-rw-r--r--
elfcore.h
4.11
KB
-rw-r--r--
elfnote-lto.h
314
B
-rw-r--r--
elfnote.h
3.54
KB
-rw-r--r--
enclosure.h
4.02
KB
-rw-r--r--
energy_model.h
8.17
KB
-rw-r--r--
entry-common.h
16.95
KB
-rw-r--r--
entry-kvm.h
2.75
KB
-rw-r--r--
err.h
1.49
KB
-rw-r--r--
errname.h
283
B
-rw-r--r--
errno.h
1.45
KB
-rw-r--r--
error-injection.h
607
B
-rw-r--r--
errqueue.h
524
B
-rw-r--r--
errseq.h
382
B
-rw-r--r--
etherdevice.h
16.41
KB
-rw-r--r--
ethtool.h
31.72
KB
-rw-r--r--
ethtool_netlink.h
1.98
KB
-rw-r--r--
eventfd.h
2.1
KB
-rw-r--r--
eventpoll.h
2.4
KB
-rw-r--r--
evm.h
3.42
KB
-rw-r--r--
export.h
5.24
KB
-rw-r--r--
exportfs.h
8.25
KB
-rw-r--r--
ext2_fs.h
967
B
-rw-r--r--
extable.h
1.28
KB
-rw-r--r--
extcon-provider.h
3.83
KB
-rw-r--r--
extcon.h
10.17
KB
-rw-r--r--
f2fs_fs.h
19
KB
-rw-r--r--
f75375s.h
541
B
-rw-r--r--
falloc.h
1.59
KB
-rw-r--r--
fanotify.h
3.85
KB
-rw-r--r--
fault-inject-usercopy.h
496
B
-rw-r--r--
fault-inject.h
1.93
KB
-rw-r--r--
fb.h
27.83
KB
-rw-r--r--
fbcon.h
1.88
KB
-rw-r--r--
fcdevice.h
774
B
-rw-r--r--
fcntl.h
1.66
KB
-rw-r--r--
fd.h
490
B
-rw-r--r--
fddidevice.h
833
B
-rw-r--r--
fdtable.h
3.58
KB
-rw-r--r--
fec.h
463
B
-rw-r--r--
fiemap.h
713
B
-rw-r--r--
file.h
2.89
KB
-rw-r--r--
fileattr.h
1.91
KB
-rw-r--r--
filter.h
42.08
KB
-rw-r--r--
fips.h
303
B
-rw-r--r--
firewire.h
13.4
KB
-rw-r--r--
firmware-map.h
959
B
-rw-r--r--
firmware.h
3.27
KB
-rw-r--r--
fixp-arith.h
4.19
KB
-rw-r--r--
flat.h
2.57
KB
-rw-r--r--
flex_proportions.h
2.81
KB
-rw-r--r--
font.h
1.67
KB
-rw-r--r--
fortify-string.h
9.11
KB
-rw-r--r--
freelist.h
3.8
KB
-rw-r--r--
freezer.h
8.98
KB
-rw-r--r--
frontswap.h
3.04
KB
-rw-r--r--
fs.h
120.45
KB
-rw-r--r--
fs_context.h
8.68
KB
-rw-r--r--
fs_enet_pd.h
3.38
KB
-rw-r--r--
fs_parser.h
4.44
KB
-rw-r--r--
fs_pin.h
539
B
-rw-r--r--
fs_stack.h
811
B
-rw-r--r--
fs_struct.h
1.04
KB
-rw-r--r--
fs_types.h
2.02
KB
-rw-r--r--
fs_uart_pd.h
1.49
KB
-rw-r--r--
fscache-cache.h
18.58
KB
-rw-r--r--
fscache.h
29.59
KB
-rw-r--r--
fscrypt.h
29.89
KB
-rw-r--r--
fsi-occ.h
681
B
-rw-r--r--
fsi-sbefifo.h
629
B
-rw-r--r--
fsi.h
2.26
KB
-rw-r--r--
fsl-diu-fb.h
3.87
KB
-rw-r--r--
fsl_devices.h
4.16
KB
-rw-r--r--
fsl_hypervisor.h
2.76
KB
-rw-r--r--
fsl_ifc.h
24.48
KB
-rw-r--r--
fsldma.h
202
B
-rw-r--r--
fsnotify.h
8.85
KB
-rw-r--r--
fsnotify_backend.h
22.93
KB
-rw-r--r--
fsverity.h
6.75
KB
-rw-r--r--
ftrace.h
34.75
KB
-rw-r--r--
ftrace_irq.h
884
B
-rw-r--r--
futex.h
2.44
KB
-rw-r--r--
fwnode.h
6.8
KB
-rw-r--r--
fwnode_mdio.h
858
B
-rw-r--r--
gameport.h
5.42
KB
-rw-r--r--
gcd.h
193
B
-rw-r--r--
genalloc.h
7.68
KB
-rw-r--r--
generic-radix-tree.h
6.35
KB
-rw-r--r--
genetlink.h
589
B
-rw-r--r--
genhd.h
9.23
KB
-rw-r--r--
genl_magic_func.h
11.53
KB
-rw-r--r--
genl_magic_struct.h
7.61
KB
-rw-r--r--
getcpu.h
641
B
-rw-r--r--
gfp.h
26.01
KB
-rw-r--r--
glob.h
256
B
-rw-r--r--
gnss.h
1.56
KB
-rw-r--r--
goldfish.h
762
B
-rw-r--r--
gpio-pxa.h
571
B
-rw-r--r--
gpio.h
5.3
KB
-rw-r--r--
gpio_keys.h
1.74
KB
-rw-r--r--
greybus.h
4.14
KB
-rw-r--r--
hardirq.h
3.43
KB
-rw-r--r--
hash.h
3
KB
-rw-r--r--
hashtable.h
6.67
KB
-rw-r--r--
hdlc.h
3.19
KB
-rw-r--r--
hdlcdrv.h
6.32
KB
-rw-r--r--
hdmi.h
12.41
KB
-rw-r--r--
hid-debug.h
1.42
KB
-rw-r--r--
hid-roccat.h
484
B
-rw-r--r--
hid-sensor-hub.h
8.97
KB
-rw-r--r--
hid-sensor-ids.h
7.44
KB
-rw-r--r--
hid.h
37.67
KB
-rw-r--r--
hidden.h
966
B
-rw-r--r--
hiddev.h
1.42
KB
-rw-r--r--
hidraw.h
1.12
KB
-rw-r--r--
highmem-internal.h
5.06
KB
-rw-r--r--
highmem.h
8.95
KB
-rw-r--r--
highuid.h
3.12
KB
-rw-r--r--
hil.h
18.42
KB
-rw-r--r--
hil_mlc.h
5.13
KB
-rw-r--r--
hippidevice.h
1.03
KB
-rw-r--r--
hmm.h
4.07
KB
-rw-r--r--
host1x.h
10.74
KB
-rw-r--r--
hp_sdc.h
14.02
KB
-rw-r--r--
hpet.h
2.55
KB
-rw-r--r--
hrtimer.h
16.01
KB
-rw-r--r--
hrtimer_defs.h
660
B
-rw-r--r--
htcpld.h
617
B
-rw-r--r--
huge_mm.h
13.27
KB
-rw-r--r--
hugetlb.h
29.09
KB
-rw-r--r--
hugetlb_cgroup.h
7.07
KB
-rw-r--r--
hugetlb_inline.h
374
B
-rw-r--r--
hw_breakpoint.h
4.15
KB
-rw-r--r--
hw_random.h
2.24
KB
-rw-r--r--
hwmon-sysfs.h
2.77
KB
-rw-r--r--
hwmon-vid.h
862
B
-rw-r--r--
hwmon.h
14.78
KB
-rw-r--r--
hwspinlock.h
15.64
KB
-rw-r--r--
hyperv.h
47.93
KB
-rw-r--r--
hypervisor.h
608
B
-rw-r--r--
i2c-algo-bit.h
1.4
KB
-rw-r--r--
i2c-algo-pca.h
2.89
KB
-rw-r--r--
i2c-algo-pcf.h
1.21
KB
-rw-r--r--
i2c-dev.h
371
B
-rw-r--r--
i2c-mux.h
1.63
KB
-rw-r--r--
i2c-smbus.h
1.73
KB
-rw-r--r--
i2c.h
37.74
KB
-rw-r--r--
i8042.h
1.99
KB
-rw-r--r--
i8253.h
809
B
-rw-r--r--
icmp.h
1
KB
-rw-r--r--
icmpv6.h
2.7
KB
-rw-r--r--
idle_inject.h
932
B
-rw-r--r--
idr.h
9.58
KB
-rw-r--r--
ieee80211.h
123.96
KB
-rw-r--r--
ieee802154.h
11.12
KB
-rw-r--r--
if_arp.h
1.63
KB
-rw-r--r--
if_bridge.h
4.9
KB
-rw-r--r--
if_eql.h
1.07
KB
-rw-r--r--
if_ether.h
1.26
KB
-rw-r--r--
if_fddi.h
3.24
KB
-rw-r--r--
if_hsr.h
586
B
-rw-r--r--
if_link.h
592
B
-rw-r--r--
if_ltalk.h
188
B
-rw-r--r--
if_macvlan.h
2.69
KB
-rw-r--r--
if_phonet.h
319
B
-rw-r--r--
if_pppol2tp.h
516
B
-rw-r--r--
if_pppox.h
2.84
KB
-rw-r--r--
if_rmnet.h
2.04
KB
-rw-r--r--
if_tap.h
2.21
KB
-rw-r--r--
if_team.h
7.84
KB
-rw-r--r--
if_tun.h
1.55
KB
-rw-r--r--
if_tunnel.h
409
B
-rw-r--r--
if_vlan.h
20.37
KB
-rw-r--r--
igmp.h
4.33
KB
-rw-r--r--
ihex.h
2.15
KB
-rw-r--r--
ima.h
5.7
KB
-rw-r--r--
imx-media.h
605
B
-rw-r--r--
in.h
2.29
KB
-rw-r--r--
in6.h
1.63
KB
-rw-r--r--
indirect_call_wrapper.h
2.23
KB
-rw-r--r--
inet.h
2.64
KB
-rw-r--r--
inet_diag.h
2.74
KB
-rw-r--r--
inetdevice.h
8.87
KB
-rw-r--r--
init.h
11.39
KB
-rw-r--r--
init_ohci1394_dma.h
196
B
-rw-r--r--
init_syscalls.h
1.01
KB
-rw-r--r--
init_task.h
1.3
KB
-rw-r--r--
initrd.h
1.02
KB
-rw-r--r--
inotify.h
713
B
-rw-r--r--
input.h
19.88
KB
-rw-r--r--
instrumentation.h
1.93
KB
-rw-r--r--
instrumented.h
3.6
KB
-rw-r--r--
integrity.h
1.15
KB
-rw-r--r--
intel-iommu.h
27.48
KB
-rw-r--r--
intel-ish-client-if.h
3.97
KB
-rw-r--r--
intel-svm.h
1.54
KB
-rw-r--r--
intel_rapl.h
4.14
KB
-rw-r--r--
intel_th.h
2.44
KB
-rw-r--r--
interconnect-provider.h
5.51
KB
-rw-r--r--
interconnect.h
2.88
KB
-rw-r--r--
interrupt.h
23.81
KB
-rw-r--r--
interval_tree.h
831
B
-rw-r--r--
interval_tree_generic.h
6.7
KB
-rw-r--r--
io-64-nonatomic-hi-lo.h
2.41
KB
-rw-r--r--
io-64-nonatomic-lo-hi.h
2.41
KB
-rw-r--r--
io-mapping.h
4.65
KB
-rw-r--r--
io-pgtable.h
8.39
KB
-rw-r--r--
io.h
5.02
KB
-rw-r--r--
io_uring.h
902
B
-rw-r--r--
ioam6.h
226
B
-rw-r--r--
ioam6_genl.h
266
B
-rw-r--r--
ioam6_iptunnel.h
285
B
-rw-r--r--
ioasid.h
2.07
KB
-rw-r--r--
iocontext.h
4.59
KB
-rw-r--r--
iomap.h
11.67
KB
-rw-r--r--
iommu-helper.h
1.12
KB
-rw-r--r--
iommu.h
34.04
KB
-rw-r--r--
iopoll.h
7.58
KB
-rw-r--r--
ioport.h
12.16
KB
-rw-r--r--
ioprio.h
1.74
KB
-rw-r--r--
iova.h
6.15
KB
-rw-r--r--
ip.h
1
KB
-rw-r--r--
ipack.h
8.69
KB
-rw-r--r--
ipc.h
613
B
-rw-r--r--
ipc_namespace.h
4.98
KB
-rw-r--r--
ipmi.h
10.88
KB
-rw-r--r--
ipmi_smi.h
7.98
KB
-rw-r--r--
ipv6.h
8.67
KB
-rw-r--r--
ipv6_route.h
372
B
-rw-r--r--
irq.h
41.58
KB
-rw-r--r--
irq_poll.h
575
B
-rw-r--r--
irq_sim.h
789
B
-rw-r--r--
irq_work.h
1.79
KB
-rw-r--r--
irqbypass.h
3.45
KB
-rw-r--r--
irqchip.h
2.33
KB
-rw-r--r--
irqdesc.h
7.75
KB
-rw-r--r--
irqdomain.h
19.98
KB
-rw-r--r--
irqflags.h
7.7
KB
-rw-r--r--
irqhandler.h
300
B
-rw-r--r--
irqnr.h
856
B
-rw-r--r--
irqreturn.h
503
B
-rw-r--r--
isa.h
2.12
KB
-rw-r--r--
isapnp.h
2.88
KB
-rw-r--r--
iscsi_boot_sysfs.h
3.71
KB
-rw-r--r--
iscsi_ibft.h
847
B
-rw-r--r--
iversion.h
12.37
KB
-rw-r--r--
jbd2.h
51.42
KB
-rw-r--r--
jhash.h
4.56
KB
-rw-r--r--
jiffies.h
15.07
KB
-rw-r--r--
journal-head.h
2.91
KB
-rw-r--r--
joystick.h
437
B
-rw-r--r--
jump_label.h
16.04
KB
-rw-r--r--
jump_label_ratelimit.h
2.77
KB
-rw-r--r--
jz4740-adc.h
1023
B
-rw-r--r--
jz4780-nemc.h
976
B
-rw-r--r--
kallsyms.h
4.5
KB
-rw-r--r--
kasan-checks.h
1.46
KB
-rw-r--r--
kasan-tags.h
487
B
-rw-r--r--
kasan.h
13.31
KB
-rw-r--r--
kbd_diacr.h
198
B
-rw-r--r--
kbd_kern.h
3.6
KB
-rw-r--r--
kbuild.h
380
B
-rw-r--r--
kconfig.h
2.63
KB
-rw-r--r--
kcore.h
891
B
-rw-r--r--
kcov.h
2.41
KB
-rw-r--r--
kcsan-checks.h
15.86
KB
-rw-r--r--
kcsan.h
1.88
KB
-rw-r--r--
kdb.h
7.33
KB
-rw-r--r--
kdebug.h
487
B
-rw-r--r--
kdev_t.h
1.8
KB
-rw-r--r--
kern_levels.h
1.57
KB
-rw-r--r--
kernel-page-flags.h
528
B
-rw-r--r--
kernel.h
17.14
KB
-rw-r--r--
kernel_read_file.h
1.64
KB
-rw-r--r--
kernel_stat.h
2.97
KB
-rw-r--r--
kernelcapi.h
1.45
KB
-rw-r--r--
kernfs.h
18.11
KB
-rw-r--r--
kexec.h
11.37
KB
-rw-r--r--
key-type.h
6.53
KB
-rw-r--r--
key.h
15.75
KB
-rw-r--r--
keyboard.h
665
B
-rw-r--r--
keyctl.h
1.25
KB
-rw-r--r--
keyslot-manager.h
3.78
KB
-rw-r--r--
kfence.h
8
KB
-rw-r--r--
kfifo.h
26.18
KB
-rw-r--r--
kgdb.h
12.05
KB
-rw-r--r--
khugepaged.h
2.74
KB
-rw-r--r--
klist.h
1.88
KB
-rw-r--r--
kmemleak.h
3.27
KB
-rw-r--r--
kmod.h
1.02
KB
-rw-r--r--
kmsg_dump.h
2.71
KB
-rw-r--r--
kobj_map.h
545
B
-rw-r--r--
kobject.h
7.69
KB
-rw-r--r--
kobject_ns.h
1.9
KB
-rw-r--r--
kprobes.h
13.95
KB
-rw-r--r--
kref.h
3.08
KB
-rw-r--r--
ks0108.h
970
B
-rw-r--r--
ks8842.h
632
B
-rw-r--r--
ks8851_mll.h
472
B
-rw-r--r--
ksm.h
2.47
KB
-rw-r--r--
kstrtox.h
6.59
KB
-rw-r--r--
kthread.h
6.9
KB
-rw-r--r--
ktime.h
5.38
KB
-rw-r--r--
kvm_dirty_ring.h
2.73
KB
-rw-r--r--
kvm_host.h
58.09
KB
-rw-r--r--
kvm_irqfd.h
2
KB
-rw-r--r--
kvm_para.h
402
B
-rw-r--r--
kvm_types.h
2.17
KB
-rw-r--r--
l2tp.h
261
B
-rw-r--r--
lantiq.h
365
B
-rw-r--r--
lapb.h
1.71
KB
-rw-r--r--
latencytop.h
1.16
KB
-rw-r--r--
lcd.h
3.78
KB
-rw-r--r--
lcm.h
275
B
-rw-r--r--
led-class-flash.h
6.74
KB
-rw-r--r--
led-class-multicolor.h
3.26
KB
-rw-r--r--
led-lm3530.h
3.7
KB
-rw-r--r--
leds-bd2802.h
476
B
-rw-r--r--
leds-lp3944.h
950
B
-rw-r--r--
leds-lp3952.h
2.35
KB
-rw-r--r--
leds-pca9532.h
866
B
-rw-r--r--
leds-regulator.h
1.14
KB
-rw-r--r--
leds-ti-lmu-common.h
1.12
KB
-rw-r--r--
leds.h
18.26
KB
-rw-r--r--
libata.h
66.97
KB
-rw-r--r--
libfdt.h
202
B
-rw-r--r--
libfdt_env.h
491
B
-rw-r--r--
libgcc.h
463
B
-rw-r--r--
libnvdimm.h
10.38
KB
-rw-r--r--
libps2.h
1.89
KB
-rw-r--r--
license.h
418
B
-rw-r--r--
limits.h
715
B
-rw-r--r--
linear_range.h
1.72
KB
-rw-r--r--
linkage.h
9.57
KB
-rw-r--r--
linkmode.h
2.5
KB
-rw-r--r--
linux_logo.h
1.91
KB
-rw-r--r--
lis3lv02d.h
5
KB
-rw-r--r--
list.h
29.78
KB
-rw-r--r--
list_bl.h
4.79
KB
-rw-r--r--
list_lru.h
7.29
KB
-rw-r--r--
list_nulls.h
4.22
KB
-rw-r--r--
list_sort.h
374
B
-rw-r--r--
litex.h
2.06
KB
-rw-r--r--
livepatch.h
8.22
KB
-rw-r--r--
llc.h
749
B
-rw-r--r--
llist.h
9.06
KB
-rw-r--r--
local_lock.h
1.33
KB
-rw-r--r--
local_lock_internal.h
3.42
KB
-rw-r--r--
lockdep.h
21.34
KB
-rw-r--r--
lockdep_types.h
5.18
KB
-rw-r--r--
lockref.h
1.5
KB
-rw-r--r--
log2.h
6.22
KB
-rw-r--r--
logic_iomem.h
2.07
KB
-rw-r--r--
logic_pio.h
3.23
KB
-rw-r--r--
lp.h
2.76
KB
-rw-r--r--
lru_cache.h
11.83
KB
-rw-r--r--
lsm_audit.h
2.81
KB
-rw-r--r--
lsm_hook_defs.h
20.89
KB
-rw-r--r--
lsm_hooks.h
74.39
KB
-rw-r--r--
lz4.h
26.44
KB
-rw-r--r--
lzo.h
1.55
KB
-rw-r--r--
mISDNdsp.h
1.19
KB
-rw-r--r--
mISDNhw.h
5.39
KB
-rw-r--r--
mISDNif.h
14.89
KB
-rw-r--r--
mailbox_client.h
1.71
KB
-rw-r--r--
mailbox_controller.h
5.67
KB
-rw-r--r--
maple.h
2.71
KB
-rw-r--r--
marvell_phy.h
1.69
KB
-rw-r--r--
math.h
5.06
KB
-rw-r--r--
math64.h
7.48
KB
-rw-r--r--
mbcache.h
1.57
KB
-rw-r--r--
mbus.h
3.09
KB
-rw-r--r--
mc146818rtc.h
4.46
KB
-rw-r--r--
mc6821.h
1.18
KB
-rw-r--r--
mcb.h
3.72
KB
-rw-r--r--
mdev.h
5.94
KB
-rw-r--r--
mdio-bitbang.h
1.31
KB
-rw-r--r--
mdio-gpio.h
177
B
-rw-r--r--
mdio-mux.h
1021
B
-rw-r--r--
mdio.h
12.42
KB
-rw-r--r--
mei_cl_bus.h
3.75
KB
-rw-r--r--
mem_encrypt.h
885
B
-rw-r--r--
memblock.h
20.08
KB
-rw-r--r--
memcontrol.h
43.18
KB
-rw-r--r--
memfd.h
365
B
-rw-r--r--
memory.h
5.99
KB
-rw-r--r--
memory_hotplug.h
11.42
KB
-rw-r--r--
mempolicy.h
7.37
KB
-rw-r--r--
mempool.h
3.35
KB
-rw-r--r--
memregion.h
403
B
-rw-r--r--
memremap.h
5.97
KB
-rw-r--r--
memstick.h
9.6
KB
-rw-r--r--
mhi.h
26.04
KB
-rw-r--r--
micrel_phy.h
1.85
KB
-rw-r--r--
microchipphy.h
2.65
KB
-rw-r--r--
migrate.h
5.41
KB
-rw-r--r--
migrate_mode.h
758
B
-rw-r--r--
mii.h
16.33
KB
-rw-r--r--
mii_timestamper.h
3.57
KB
-rw-r--r--
min_heap.h
3.3
KB
-rw-r--r--
minmax.h
4.02
KB
-rw-r--r--
misc_cgroup.h
2.95
KB
-rw-r--r--
miscdevice.h
3.2
KB
-rw-r--r--
mm.h
104.32
KB
-rw-r--r--
mm_inline.h
2.92
KB
-rw-r--r--
mm_types.h
25.06
KB
-rw-r--r--
mm_types_task.h
2.5
KB
-rw-r--r--
mman.h
3.91
KB
-rw-r--r--
mmap_lock.h
4.25
KB
-rw-r--r--
mmdebug.h
2.25
KB
-rw-r--r--
mmiotrace.h
3.05
KB
-rw-r--r--
mmu_context.h
855
B
-rw-r--r--
mmu_notifier.h
24.64
KB
-rw-r--r--
mmzone.h
46.64
KB
-rw-r--r--
mnt_namespace.h
697
B
-rw-r--r--
mod_devicetable.h
23.42
KB
-rw-r--r--
module.h
23.58
KB
-rw-r--r--
module_signature.h
1.22
KB
-rw-r--r--
moduleloader.h
3.1
KB
-rw-r--r--
moduleparam.h
22.34
KB
-rw-r--r--
most.h
12.2
KB
-rw-r--r--
mount.h
3.93
KB
-rw-r--r--
moxtet.h
2.36
KB
-rw-r--r--
mpage.h
737
B
-rw-r--r--
mpi.h
8.41
KB
-rw-r--r--
mpls.h
394
B
-rw-r--r--
mpls_iptunnel.h
178
B
-rw-r--r--
mroute.h
1.97
KB
-rw-r--r--
mroute6.h
2.41
KB
-rw-r--r--
mroute_base.h
12.17
KB
-rw-r--r--
msdos_fs.h
273
B
-rw-r--r--
msdos_partition.h
1.62
KB
-rw-r--r--
msg.h
395
B
-rw-r--r--
msi.h
15.36
KB
-rw-r--r--
mtio.h
1.29
KB
-rw-r--r--
mutex.h
6.65
KB
-rw-r--r--
mv643xx.h
51.05
KB
-rw-r--r--
mv643xx_eth.h
1.95
KB
-rw-r--r--
mv643xx_i2c.h
335
B
-rw-r--r--
mvebu-pmsu.h
520
B
-rw-r--r--
mxm-wmi.h
399
B
-rw-r--r--
namei.h
3.85
KB
-rw-r--r--
nd.h
5.55
KB
-rw-r--r--
ndctl.h
674
B
-rw-r--r--
net.h
11.43
KB
-rw-r--r--
netdev_features.h
10.75
KB
-rw-r--r--
netdevice.h
167.19
KB
-rw-r--r--
netfilter.h
13.47
KB
-rw-r--r--
netfilter_bridge.h
2.08
KB
-rw-r--r--
netfilter_defs.h
486
B
-rw-r--r--
netfilter_ingress.h
1.44
KB
-rw-r--r--
netfilter_ipv4.h
1.05
KB
-rw-r--r--
netfilter_ipv6.h
5.85
KB
-rw-r--r--
netfs.h
7.93
KB
-rw-r--r--
netlink.h
7.88
KB
-rw-r--r--
netpoll.h
2.4
KB
-rw-r--r--
nfs.h
1.31
KB
-rw-r--r--
nfs3.h
260
B
-rw-r--r--
nfs4.h
18.95
KB
-rw-r--r--
nfs_fs.h
17.83
KB
-rw-r--r--
nfs_fs_i.h
308
B
-rw-r--r--
nfs_fs_sb.h
10.05
KB
-rw-r--r--
nfs_iostat.h
4.18
KB
-rw-r--r--
nfs_page.h
6.75
KB
-rw-r--r--
nfs_ssc.h
2.01
KB
-rw-r--r--
nfs_xdr.h
42.12
KB
-rw-r--r--
nfsacl.h
1.4
KB
-rw-r--r--
nitro_enclaves.h
267
B
-rw-r--r--
nl802154.h
3.85
KB
-rw-r--r--
nls.h
3.08
KB
-rw-r--r--
nmi.h
6.72
KB
-rw-r--r--
node.h
4.67
KB
-rw-r--r--
nodemask.h
16.99
KB
-rw-r--r--
nospec.h
2.16
KB
-rw-r--r--
notifier.h
7.84
KB
-rw-r--r--
ns_common.h
283
B
-rw-r--r--
nsc_gpio.h
1.42
KB
-rw-r--r--
nsproxy.h
3.09
KB
-rw-r--r--
ntb.h
52.43
KB
-rw-r--r--
ntb_transport.h
3.8
KB
-rw-r--r--
nubus.h
5.54
KB
-rw-r--r--
numa.h
1.25
KB
-rw-r--r--
nvme-fc-driver.h
45.86
KB
-rw-r--r--
nvme-fc.h
9.72
KB
-rw-r--r--
nvme-rdma.h
2.04
KB
-rw-r--r--
nvme-tcp.h
4.4
KB
-rw-r--r--
nvme.h
37.72
KB
-rw-r--r--
nvmem-consumer.h
6.78
KB
-rw-r--r--
nvmem-provider.h
4.72
KB
-rw-r--r--
nvram.h
3.47
KB
-rw-r--r--
objagg.h
1.99
KB
-rw-r--r--
objtool.h
4.35
KB
-rw-r--r--
of.h
43.24
KB
-rw-r--r--
of_address.h
4.17
KB
-rw-r--r--
of_clk.h
819
B
-rw-r--r--
of_device.h
2.93
KB
-rw-r--r--
of_dma.h
2.3
KB
-rw-r--r--
of_fdt.h
3.65
KB
-rw-r--r--
of_gpio.h
4.07
KB
-rw-r--r--
of_graph.h
3.55
KB
-rw-r--r--
of_iommu.h
505
B
-rw-r--r--
of_irq.h
3.75
KB
-rw-r--r--
of_mdio.h
3.51
KB
-rw-r--r--
of_net.h
824
B
-rw-r--r--
of_pci.h
915
B
-rw-r--r--
of_pdt.h
1.14
KB
-rw-r--r--
of_platform.h
3.88
KB
-rw-r--r--
of_reserved_mem.h
2.24
KB
-rw-r--r--
oid_registry.h
5.63
KB
-rw-r--r--
olpc-ec.h
1.95
KB
-rw-r--r--
omap-dma.h
9.79
KB
-rw-r--r--
omap-gpmc.h
2.64
KB
-rw-r--r--
omap-iommu.h
880
B
-rw-r--r--
omap-mailbox.h
689
B
-rw-r--r--
omapfb.h
576
B
-rw-r--r--
once.h
1.87
KB
-rw-r--r--
once_lite.h
677
B
-rw-r--r--
oom.h
3.26
KB
-rw-r--r--
openvswitch.h
403
B
-rw-r--r--
osq_lock.h
1.04
KB
-rw-r--r--
overflow.h
6.42
KB
-rw-r--r--
packing.h
1.76
KB
-rw-r--r--
padata.h
6.12
KB
-rw-r--r--
page-flags-layout.h
3.21
KB
-rw-r--r--
page-flags.h
28
KB
-rw-r--r--
page-isolation.h
1.64
KB
-rw-r--r--
page_counter.h
2.3
KB
-rw-r--r--
page_ext.h
1.83
KB
-rw-r--r--
page_idle.h
2.61
KB
-rw-r--r--
page_owner.h
2.31
KB
-rw-r--r--
page_ref.h
4.95
KB
-rw-r--r--
page_reporting.h
895
B
-rw-r--r--
pageblock-flags.h
2.31
KB
-rw-r--r--
pagemap.h
31.48
KB
-rw-r--r--
pagevec.h
2.04
KB
-rw-r--r--
pagewalk.h
4.07
KB
-rw-r--r--
panic.h
2.69
KB
-rw-r--r--
panic_notifier.h
296
B
-rw-r--r--
parman.h
2.87
KB
-rw-r--r--
parport.h
19.09
KB
-rw-r--r--
parport_pc.h
6.56
KB
-rw-r--r--
parser.h
1.17
KB
-rw-r--r--
part_stat.h
2.38
KB
-rw-r--r--
pata_arasan_cf_data.h
1.22
KB
-rw-r--r--
patchkey.h
757
B
-rw-r--r--
path.h
572
B
-rw-r--r--
pch_dma.h
408
B
-rw-r--r--
pci-acpi.h
3.85
KB
-rw-r--r--
pci-ats.h
1.76
KB
-rw-r--r--
pci-dma-compat.h
3.66
KB
-rw-r--r--
pci-ecam.h
3.2
KB
-rw-r--r--
pci-ep-cfs.h
956
B
-rw-r--r--
pci-epc.h
9.47
KB
-rw-r--r--
pci-epf.h
7.06
KB
-rw-r--r--
pci-p2pdma.h
3.95
KB
-rw-r--r--
pci.h
89.14
KB
-rw-r--r--
pci_hotplug.h
4.35
KB
-rw-r--r--
pci_ids.h
120.69
KB
-rw-r--r--
pcs-lynx.h
425
B
-rw-r--r--
pda_power.h
1005
B
-rw-r--r--
pe.h
16.17
KB
-rw-r--r--
percpu-defs.h
18.12
KB
-rw-r--r--
percpu-refcount.h
10.84
KB
-rw-r--r--
percpu-rwsem.h
4.16
KB
-rw-r--r--
percpu.h
4.65
KB
-rw-r--r--
percpu_counter.h
4.39
KB
-rw-r--r--
perf_event.h
46.38
KB
-rw-r--r--
perf_regs.h
1.05
KB
-rw-r--r--
personality.h
393
B
-rw-r--r--
pfn.h
666
B
-rw-r--r--
pfn_t.h
3.21
KB
-rw-r--r--
pgtable.h
43.89
KB
-rw-r--r--
phonet.h
537
B
-rw-r--r--
phy.h
57.75
KB
-rw-r--r--
phy_fixed.h
1.77
KB
-rw-r--r--
phy_led_triggers.h
1.01
KB
-rw-r--r--
phylink.h
19.37
KB
-rw-r--r--
pid.h
6.29
KB
-rw-r--r--
pid_namespace.h
2.08
KB
-rw-r--r--
pim.h
2.67
KB
-rw-r--r--
pipe_fs_i.h
8.68
KB
-rw-r--r--
pkeys.h
990
B
-rw-r--r--
pktcdvd.h
5.87
KB
-rw-r--r--
pl320-ipc.h
209
B
-rw-r--r--
platform_device.h
12.21
KB
-rw-r--r--
platform_profile.h
1.12
KB
-rw-r--r--
pldmfw.h
4.76
KB
-rw-r--r--
plist.h
8.66
KB
-rw-r--r--
pm-trace.h
940
B
-rw-r--r--
pm.h
32.64
KB
-rw-r--r--
pm_clock.h
2.58
KB
-rw-r--r--
pm_domain.h
13.18
KB
-rw-r--r--
pm_opp.h
15.1
KB
-rw-r--r--
pm_qos.h
10.41
KB
-rw-r--r--
pm_runtime.h
18.5
KB
-rw-r--r--
pm_wakeirq.h
1.31
KB
-rw-r--r--
pm_wakeup.h
6.28
KB
-rw-r--r--
pmbus.h
2.48
KB
-rw-r--r--
pmu.h
2.44
KB
-rw-r--r--
pnfs_osd_xdr.h
9.27
KB
-rw-r--r--
pnp.h
14.9
KB
-rw-r--r--
poison.h
2.48
KB
-rw-r--r--
poll.h
4.07
KB
-rw-r--r--
posix-clock.h
3.91
KB
-rw-r--r--
posix-timers.h
7.01
KB
-rw-r--r--
posix_acl.h
3.27
KB
-rw-r--r--
posix_acl_xattr.h
1.75
KB
-rw-r--r--
power_supply.h
17.74
KB
-rw-r--r--
powercap.h
11.98
KB
-rw-r--r--
ppp-comp.h
2.95
KB
-rw-r--r--
ppp_channel.h
2.99
KB
-rw-r--r--
ppp_defs.h
305
B
-rw-r--r--
pps_kernel.h
2.9
KB
-rw-r--r--
pr.h
566
B
-rw-r--r--
prandom.h
3.75
KB
-rw-r--r--
preempt.h
11.99
KB
-rw-r--r--
prefetch.h
1.7
KB
-rw-r--r--
prime_numbers.h
1.35
KB
-rw-r--r--
printk.h
22.19
KB
-rw-r--r--
prmt.h
143
B
-rw-r--r--
proc_fs.h
8.35
KB
-rw-r--r--
proc_ns.h
2.57
KB
-rw-r--r--
processor.h
1.84
KB
-rw-r--r--
profile.h
2.65
KB
-rw-r--r--
projid.h
2.22
KB
-rw-r--r--
property.h
17.28
KB
-rw-r--r--
pruss_driver.h
1.27
KB
-rw-r--r--
psci.h
1.52
KB
-rw-r--r--
pseudo_fs.h
355
B
-rw-r--r--
psi.h
1.56
KB
-rw-r--r--
psi_types.h
4.31
KB
-rw-r--r--
psp-sev.h
17.76
KB
-rw-r--r--
psp-tee.h
2.65
KB
-rw-r--r--
pstore.h
7.63
KB
-rw-r--r--
pstore_blk.h
1.53
KB
-rw-r--r--
pstore_ram.h
3.82
KB
-rw-r--r--
pstore_zone.h
2.28
KB
-rw-r--r--
ptdump.h
567
B
-rw-r--r--
pti.h
240
B
-rw-r--r--
ptp_classify.h
4.35
KB
-rw-r--r--
ptp_clock_kernel.h
12.2
KB
-rw-r--r--
ptp_kvm.h
430
B
-rw-r--r--
ptp_pch.h
623
B
-rw-r--r--
ptr_ring.h
16.29
KB
-rw-r--r--
ptrace.h
14.92
KB
-rw-r--r--
purgatory.h
590
B
-rw-r--r--
pvclock_gtod.h
548
B
-rw-r--r--
pwm.h
16.37
KB
-rw-r--r--
pwm_backlight.h
722
B
-rw-r--r--
pxa168_eth.h
728
B
-rw-r--r--
pxa2xx_ssp.h
11.13
KB
-rw-r--r--
qcom-geni-se.h
13.74
KB
-rw-r--r--
qcom_scm.h
3.81
KB
-rw-r--r--
qnx6_fs.h
3.27
KB
-rw-r--r--
quota.h
18.67
KB
-rw-r--r--
quotaops.h
10.28
KB
-rw-r--r--
radix-tree.h
15.63
KB
-rw-r--r--
raid_class.h
2.1
KB
-rw-r--r--
ramfs.h
695
B
-rw-r--r--
random.h
4.12
KB
-rw-r--r--
randomize_kstack.h
1.92
KB
-rw-r--r--
range.h
775
B
-rw-r--r--
ras.h
1.02
KB
-rw-r--r--
ratelimit.h
1.72
KB
-rw-r--r--
ratelimit_types.h
1.14
KB
-rw-r--r--
rational.h
639
B
-rw-r--r--
rbtree.h
8.93
KB
-rw-r--r--
rbtree_augmented.h
9.53
KB
-rw-r--r--
rbtree_latch.h
6.66
KB
-rw-r--r--
rbtree_types.h
946
B
-rw-r--r--
rcu_node_tree.h
3.73
KB
-rw-r--r--
rcu_segcblist.h
10.03
KB
-rw-r--r--
rcu_sync.h
1.46
KB
-rw-r--r--
rculist.h
28.56
KB
-rw-r--r--
rculist_bl.h
3.29
KB
-rw-r--r--
rculist_nulls.h
6.57
KB
-rw-r--r--
rcupdate.h
36.33
KB
-rw-r--r--
rcupdate_trace.h
3.08
KB
-rw-r--r--
rcupdate_wait.h
1.73
KB
-rw-r--r--
rcutiny.h
3.32
KB
-rw-r--r--
rcutree.h
2.34
KB
-rw-r--r--
rcuwait.h
1.84
KB
-rw-r--r--
reboot-mode.h
600
B
-rw-r--r--
reboot.h
2.18
KB
-rw-r--r--
reciprocal_div.h
3.28
KB
-rw-r--r--
refcount.h
12.02
KB
-rw-r--r--
regmap.h
62.95
KB
-rw-r--r--
regset.h
11.35
KB
-rw-r--r--
relay.h
8.47
KB
-rw-r--r--
remoteproc.h
24.77
KB
-rw-r--r--
resctrl.h
6.5
KB
-rw-r--r--
reset-controller.h
3.57
KB
-rw-r--r--
reset.h
30.24
KB
-rw-r--r--
resource.h
339
B
-rw-r--r--
resource_ext.h
2.08
KB
-rw-r--r--
restart_block.h
1.11
KB
-rw-r--r--
rfkill.h
10.52
KB
-rw-r--r--
rhashtable-types.h
3.45
KB
-rw-r--r--
rhashtable.h
37.59
KB
-rw-r--r--
ring_buffer.h
7.43
KB
-rw-r--r--
rio.h
19.02
KB
-rw-r--r--
rio_drv.h
14.32
KB
-rw-r--r--
rio_ids.h
1.08
KB
-rw-r--r--
rio_regs.h
19.07
KB
-rw-r--r--
rmap.h
8.96
KB
-rw-r--r--
rmi.h
12.04
KB
-rw-r--r--
rndis.h
16.86
KB
-rw-r--r--
rodata_test.h
394
B
-rw-r--r--
root_dev.h
619
B
-rw-r--r--
rpmsg.h
8.4
KB
-rw-r--r--
rslib.h
3.67
KB
-rw-r--r--
rtc.h
8.65
KB
-rw-r--r--
rtmutex.h
2.97
KB
-rw-r--r--
rtnetlink.h
4.46
KB
-rw-r--r--
rtsx_common.h
890
B
-rw-r--r--
rtsx_pci.h
39.82
KB
-rw-r--r--
rtsx_usb.h
15.42
KB
-rw-r--r--
rwbase_rt.h
876
B
-rw-r--r--
rwlock.h
4.55
KB
-rw-r--r--
rwlock_api_smp.h
7.65
KB
-rw-r--r--
rwlock_rt.h
2.98
KB
-rw-r--r--
rwlock_types.h
1.77
KB
-rw-r--r--
rwsem.h
7.32
KB
-rw-r--r--
s3c_adc_battery.h
923
B
-rw-r--r--
sbitmap.h
16.9
KB
-rw-r--r--
scatterlist.h
17.56
KB
-rw-r--r--
scc.h
2.84
KB
-rw-r--r--
sched.h
64.44
KB
-rw-r--r--
sched_clock.h
1.44
KB
-rw-r--r--
scmi_protocol.h
26.03
KB
-rw-r--r--
scpi_protocol.h
2.67
KB
-rw-r--r--
screen_info.h
191
B
-rw-r--r--
scs.h
1.83
KB
-rw-r--r--
sctp.h
22.88
KB
-rw-r--r--
scx200.h
1.82
KB
-rw-r--r--
scx200_gpio.h
2.38
KB
-rw-r--r--
sdb.h
4.17
KB
-rw-r--r--
seccomp.h
3.45
KB
-rw-r--r--
secretmem.h
1.17
KB
-rw-r--r--
securebits.h
239
B
-rw-r--r--
security.h
58.64
KB
-rw-r--r--
sed-opal.h
1.66
KB
-rw-r--r--
seg6.h
121
B
-rw-r--r--
seg6_genl.h
136
B
-rw-r--r--
seg6_hmac.h
136
B
-rw-r--r--
seg6_iptunnel.h
148
B
-rw-r--r--
seg6_local.h
100
B
-rw-r--r--
selection.h
1.81
KB
-rw-r--r--
sem.h
599
B
-rw-r--r--
semaphore.h
1.35
KB
-rw-r--r--
seq_buf.h
3.94
KB
-rw-r--r--
seq_file.h
8.75
KB
-rw-r--r--
seq_file_net.h
730
B
-rw-r--r--
seqlock.h
38.18
KB
-rw-r--r--
seqno-fence.h
3.57
KB
-rw-r--r--
serdev.h
9.82
KB
-rw-r--r--
serial.h
630
B
-rw-r--r--
serial_8250.h
6.57
KB
-rw-r--r--
serial_bcm63xx.h
4.73
KB
-rw-r--r--
serial_core.h
17.65
KB
-rw-r--r--
serial_max3100.h
1.19
KB
-rw-r--r--
serial_s3c.h
9.42
KB
-rw-r--r--
serial_sci.h
1.6
KB
-rw-r--r--
serio.h
4.28
KB
-rw-r--r--
set_memory.h
1.66
KB
-rw-r--r--
sfp.h
15.87
KB
-rw-r--r--
sh_clk.h
5.96
KB
-rw-r--r--
sh_dma.h
3.47
KB
-rw-r--r--
sh_eth.h
369
B
-rw-r--r--
sh_intc.h
3.42
KB
-rw-r--r--
sh_timer.h
172
B
-rw-r--r--
shdma-base.h
4.27
KB
-rw-r--r--
shm.h
968
B
-rw-r--r--
shmem_fs.h
5.81
KB
-rw-r--r--
shrinker.h
3.25
KB
-rw-r--r--
signal.h
13.56
KB
-rw-r--r--
signal_types.h
1.68
KB
-rw-r--r--
signalfd.h
817
B
-rw-r--r--
siox.h
2.26
KB
-rw-r--r--
siphash.h
4.53
KB
-rw-r--r--
sizes.h
1.27
KB
-rw-r--r--
skb_array.h
5.18
KB
-rw-r--r--
skbuff.h
133.77
KB
-rw-r--r--
skmsg.h
13.29
KB
-rw-r--r--
slab.h
22.32
KB
-rw-r--r--
slab_def.h
3.02
KB
-rw-r--r--
slimbus.h
6.93
KB
-rw-r--r--
slub_def.h
6.22
KB
-rw-r--r--
sm501-regs.h
11.62
KB
-rw-r--r--
sm501.h
4.02
KB
-rw-r--r--
smc911x.h
294
B
-rw-r--r--
smc91x.h
1.57
KB
-rw-r--r--
smp.h
7.63
KB
-rw-r--r--
smp_types.h
1.35
KB
-rw-r--r--
smpboot.h
1.68
KB
-rw-r--r--
smsc911x.h
1.63
KB
-rw-r--r--
smscphy.h
1.25
KB
-rw-r--r--
sock_diag.h
2.31
KB
-rw-r--r--
socket.h
15.04
KB
-rw-r--r--
sockptr.h
2.23
KB
-rw-r--r--
sonet.h
469
B
-rw-r--r--
sony-laptop.h
1.41
KB
-rw-r--r--
sonypi.h
1.71
KB
-rw-r--r--
sort.h
346
B
-rw-r--r--
sound.h
685
B
-rw-r--r--
soundcard.h
1.59
KB
-rw-r--r--
spinlock.h
14.07
KB
-rw-r--r--
spinlock_api_smp.h
5.47
KB
-rw-r--r--
spinlock_api_up.h
3.31
KB
-rw-r--r--
spinlock_rt.h
4.11
KB
-rw-r--r--
spinlock_types.h
1.78
KB
-rw-r--r--
spinlock_types_raw.h
1.69
KB
-rw-r--r--
spinlock_types_up.h
726
B
-rw-r--r--
spinlock_up.h
2.16
KB
-rw-r--r--
splice.h
3.24
KB
-rw-r--r--
spmi.h
5.59
KB
-rw-r--r--
sram.h
844
B
-rw-r--r--
srcu.h
6.93
KB
-rw-r--r--
srcutiny.h
2.75
KB
-rw-r--r--
srcutree.h
4.8
KB
-rw-r--r--
ssbi.h
726
B
-rw-r--r--
stackdepot.h
768
B
-rw-r--r--
stackleak.h
902
B
-rw-r--r--
stackprotector.h
361
B
-rw-r--r--
stacktrace.h
3.89
KB
-rw-r--r--
start_kernel.h
415
B
-rw-r--r--
stat.h
1.33
KB
-rw-r--r--
statfs.h
1.78
KB
-rw-r--r--
static_call.h
10.17
KB
-rw-r--r--
static_call_types.h
2.74
KB
-rw-r--r--
static_key.h
30
B
-rw-r--r--
stdarg.h
313
B
-rw-r--r--
stddef.h
827
B
-rw-r--r--
stm.h
4.34
KB
-rw-r--r--
stmmac.h
6.75
KB
-rw-r--r--
stmp3xxx_rtc_wdt.h
331
B
-rw-r--r--
stmp_device.h
412
B
-rw-r--r--
stop_machine.h
4.41
KB
-rw-r--r--
string.h
8.66
KB
-rw-r--r--
string_helpers.h
2.69
KB
-rw-r--r--
stringhash.h
2.65
KB
-rw-r--r--
stringify.h
341
B
-rw-r--r--
sungem_phy.h
3.94
KB
-rw-r--r--
sunserialcore.h
1.08
KB
-rw-r--r--
sunxi-rsb.h
2.89
KB
-rw-r--r--
superhyway.h
2.81
KB
-rw-r--r--
surface_acpi_notify.h
1.07
KB
-rw-r--r--
suspend.h
20.02
KB
-rw-r--r--
svga.h
3.75
KB
-rw-r--r--
sw842.h
328
B
-rw-r--r--
swab.h
569
B
-rw-r--r--
swait.h
9.45
KB
-rw-r--r--
swap.h
23.51
KB
-rw-r--r--
swap_cgroup.h
971
B
-rw-r--r--
swap_slots.h
841
B
-rw-r--r--
swapfile.h
556
B
-rw-r--r--
swapops.h
9.61
KB
-rw-r--r--
swiotlb.h
5.33
KB
-rw-r--r--
switchtec.h
10.9
KB
-rw-r--r--
sxgbe_platform.h
1.23
KB
-rw-r--r--
sync_core.h
581
B
-rw-r--r--
sync_file.h
1.57
KB
-rw-r--r--
synclink.h
989
B
-rw-r--r--
sys.h
960
B
-rw-r--r--
sys_soc.h
1.26
KB
-rw-r--r--
syscall_user_dispatch.h
930
B
-rw-r--r--
syscalls.h
55.31
KB
-rw-r--r--
syscore_ops.h
633
B
-rw-r--r--
sysctl.h
7.73
KB
-rw-r--r--
sysfb.h
2.39
KB
-rw-r--r--
sysfs.h
17.64
KB
-rw-r--r--
syslog.h
1.24
KB
-rw-r--r--
sysrq.h
1.96
KB
-rw-r--r--
sysv_fs.h
9.03
KB
-rw-r--r--
t10-pi.h
1.5
KB
-rw-r--r--
task_io_accounting.h
1.13
KB
-rw-r--r--
task_io_accounting_ops.h
2.55
KB
-rw-r--r--
task_work.h
854
B
-rw-r--r--
taskstats_kern.h
957
B
-rw-r--r--
tboot.h
3.33
KB
-rw-r--r--
tc.h
3.45
KB
-rw-r--r--
tca6416_keypad.h
701
B
-rw-r--r--
tcp.h
17.13
KB
-rw-r--r--
tee_drv.h
18.35
KB
-rw-r--r--
textsearch.h
4.73
KB
-rw-r--r--
textsearch_fsm.h
1.19
KB
-rw-r--r--
tfrc.h
1.68
KB
-rw-r--r--
thermal.h
15.41
KB
-rw-r--r--
thread_info.h
6.51
KB
-rw-r--r--
threads.h
1.28
KB
-rw-r--r--
thunderbolt.h
20.78
KB
-rw-r--r--
ti-emif-sram.h
5.15
KB
-rw-r--r--
ti_wilink_st.h
13.46
KB
-rw-r--r--
tick.h
9.74
KB
-rw-r--r--
tifm.h
4.66
KB
-rw-r--r--
timb_dma.h
1.17
KB
-rw-r--r--
timb_gpio.h
717
B
-rw-r--r--
time.h
3.14
KB
-rw-r--r--
time32.h
1.75
KB
-rw-r--r--
time64.h
4.49
KB
-rw-r--r--
time_namespace.h
3.82
KB
-rw-r--r--
timecounter.h
4.14
KB
-rw-r--r--
timekeeper_internal.h
5.33
KB
-rw-r--r--
timekeeping.h
7.61
KB
-rw-r--r--
timer.h
7.35
KB
-rw-r--r--
timerfd.h
508
B
-rw-r--r--
timeriomem-rng.h
432
B
-rw-r--r--
timerqueue.h
1.39
KB
-rw-r--r--
timex.h
6.41
KB
-rw-r--r--
tnum.h
3.39
KB
-rw-r--r--
topology.h
5.25
KB
-rw-r--r--
torture.h
4.2
KB
-rw-r--r--
toshiba.h
460
B
-rw-r--r--
tpm.h
10.98
KB
-rw-r--r--
tpm_command.h
847
B
-rw-r--r--
tpm_eventlog.h
6.54
KB
-rw-r--r--
trace.h
1.65
KB
-rw-r--r--
trace_clock.h
667
B
-rw-r--r--
trace_events.h
27.51
KB
-rw-r--r--
trace_recursion.h
5.63
KB
-rw-r--r--
trace_seq.h
3.92
KB
-rw-r--r--
tracefs.h
1018
B
-rw-r--r--
tracehook.h
7.97
KB
-rw-r--r--
tracepoint-defs.h
2.34
KB
-rw-r--r--
tracepoint.h
18.16
KB
-rw-r--r--
transport_class.h
2.51
KB
-rw-r--r--
ts-nbus.h
532
B
-rw-r--r--
tsacct_kern.h
1.2
KB
-rw-r--r--
tty.h
14.52
KB
-rw-r--r--
tty_buffer.h
1.28
KB
-rw-r--r--
tty_driver.h
15.69
KB
-rw-r--r--
tty_flip.h
1.74
KB
-rw-r--r--
tty_ldisc.h
8.46
KB
-rw-r--r--
tty_port.h
7.24
KB
-rw-r--r--
typecheck.h
782
B
-rw-r--r--
types.h
5.64
KB
-rw-r--r--
u64_stats_sync.h
5.69
KB
-rw-r--r--
uacce.h
3.74
KB
-rw-r--r--
uaccess.h
12.93
KB
-rw-r--r--
ucb1400.h
4.12
KB
-rw-r--r--
ucs2_string.h
662
B
-rw-r--r--
udp.h
4.53
KB
-rw-r--r--
uidgid.h
4.07
KB
-rw-r--r--
uio.h
9.01
KB
-rw-r--r--
uio_driver.h
4.71
KB
-rw-r--r--
umh.h
1.79
KB
-rw-r--r--
unicode.h
1.02
KB
-rw-r--r--
units.h
2.59
KB
-rw-r--r--
uprobes.h
6
KB
-rw-r--r--
usb.h
77.55
KB
-rw-r--r--
usb_usual.h
3.58
KB
-rw-r--r--
usbdevice_fs.h
2.18
KB
-rw-r--r--
user-return-notifier.h
1.18
KB
-rw-r--r--
user.h
22
B
-rw-r--r--
user_namespace.h
6.03
KB
-rw-r--r--
userfaultfd_k.h
6.44
KB
-rw-r--r--
usermode_driver.h
515
B
-rw-r--r--
util_macros.h
1.17
KB
-rw-r--r--
uts.h
388
B
-rw-r--r--
utsname.h
1.78
KB
-rw-r--r--
uuid.h
2.34
KB
-rw-r--r--
vbox_utils.h
1.75
KB
-rw-r--r--
vdpa.h
14.02
KB
-rw-r--r--
verification.h
1.77
KB
-rw-r--r--
vermagic.h
1.28
KB
-rw-r--r--
vexpress.h
297
B
-rw-r--r--
vfio.h
8.21
KB
-rw-r--r--
vfio_pci_core.h
7.46
KB
-rw-r--r--
vfs.h
116
B
-rw-r--r--
vga_switcheroo.h
8.62
KB
-rw-r--r--
vgaarb.h
3.88
KB
-rw-r--r--
vhost_iotlb.h
1.34
KB
-rw-r--r--
via-core.h
6.57
KB
-rw-r--r--
via-gpio.h
310
B
-rw-r--r--
via.h
932
B
-rw-r--r--
via_i2c.h
844
B
-rw-r--r--
videodev2.h
2.7
KB
-rw-r--r--
virtio.h
6.7
KB
-rw-r--r--
virtio_byteorder.h
1.46
KB
-rw-r--r--
virtio_caif.h
513
B
-rw-r--r--
virtio_config.h
16.26
KB
-rw-r--r--
virtio_console.h
1.93
KB
-rw-r--r--
virtio_dma_buf.h
1.12
KB
-rw-r--r--
virtio_net.h
5.38
KB
-rw-r--r--
virtio_pci_modern.h
3.25
KB
-rw-r--r--
virtio_ring.h
2.95
KB
-rw-r--r--
virtio_vsock.h
4.79
KB
-rw-r--r--
visorbus.h
12.23
KB
-rw-r--r--
vlynq.h
3.22
KB
-rw-r--r--
vm_event_item.h
3.46
KB
-rw-r--r--
vmacache.h
722
B
-rw-r--r--
vmalloc.h
8.61
KB
-rw-r--r--
vme.h
5.66
KB
-rw-r--r--
vmpressure.h
1.68
KB
-rw-r--r--
vmstat.h
14.76
KB
-rw-r--r--
vmw_vmci_api.h
2.88
KB
-rw-r--r--
vmw_vmci_defs.h
27.5
KB
-rw-r--r--
vringh.h
8.62
KB
-rw-r--r--
vt.h
611
B
-rw-r--r--
vt_buffer.h
1.49
KB
-rw-r--r--
vt_kern.h
5.31
KB
-rw-r--r--
vtime.h
4.6
KB
-rw-r--r--
w1-gpio.h
493
B
-rw-r--r--
w1.h
8.93
KB
-rw-r--r--
wait.h
41.93
KB
-rw-r--r--
wait_bit.h
11.2
KB
-rw-r--r--
watch_queue.h
3.82
KB
-rw-r--r--
watchdog.h
8.21
KB
-rw-r--r--
win_minmax.h
832
B
-rw-r--r--
wireless.h
1.4
KB
-rw-r--r--
wkup_m3_ipc.h
1.75
KB
-rw-r--r--
wl12xx.h
810
B
-rw-r--r--
wm97xx.h
10.59
KB
-rw-r--r--
wmi.h
1.56
KB
-rw-r--r--
workqueue.h
21.38
KB
-rw-r--r--
writeback.h
12.83
KB
-rw-r--r--
ww_mutex.h
13.11
KB
-rw-r--r--
wwan.h
5.13
KB
-rw-r--r--
xarray.h
56.17
KB
-rw-r--r--
xattr.h
3.97
KB
-rw-r--r--
xxhash.h
8.27
KB
-rw-r--r--
xz.h
11.16
KB
-rw-r--r--
yam.h
2.18
KB
-rw-r--r--
z2_battery.h
299
B
-rw-r--r--
zconf.h
1.73
KB
-rw-r--r--
zlib.h
28.11
KB
-rw-r--r--
zorro.h
3.57
KB
-rw-r--r--
zpool.h
3.24
KB
-rw-r--r--
zsmalloc.h
1.63
KB
-rw-r--r--
zstd.h
48.58
KB
-rw-r--r--
zutil.h
2.73
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : phy.h
/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Framework and drivers for configuring and reading different PHYs * Based on code in sungem_phy.c and (long-removed) gianfar_phy.c * * Author: Andy Fleming * * Copyright (c) 2004 Freescale Semiconductor, Inc. */ #ifndef __PHY_H #define __PHY_H #include <linux/compiler.h> #include <linux/spinlock.h> #include <linux/ethtool.h> #include <linux/linkmode.h> #include <linux/netlink.h> #include <linux/mdio.h> #include <linux/mii.h> #include <linux/mii_timestamper.h> #include <linux/module.h> #include <linux/timer.h> #include <linux/workqueue.h> #include <linux/mod_devicetable.h> #include <linux/u64_stats_sync.h> #include <linux/irqreturn.h> #include <linux/iopoll.h> #include <linux/refcount.h> #include <linux/atomic.h> #define PHY_DEFAULT_FEATURES (SUPPORTED_Autoneg | \ SUPPORTED_TP | \ SUPPORTED_MII) #define PHY_10BT_FEATURES (SUPPORTED_10baseT_Half | \ SUPPORTED_10baseT_Full) #define PHY_100BT_FEATURES (SUPPORTED_100baseT_Half | \ SUPPORTED_100baseT_Full) #define PHY_1000BT_FEATURES (SUPPORTED_1000baseT_Half | \ SUPPORTED_1000baseT_Full) extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_basic_features) __ro_after_init; extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_basic_t1_features) __ro_after_init; extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_features) __ro_after_init; extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_fibre_features) __ro_after_init; extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_all_ports_features) __ro_after_init; extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_features) __ro_after_init; extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_fec_features) __ro_after_init; extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_full_features) __ro_after_init; #define PHY_BASIC_FEATURES ((unsigned long *)&phy_basic_features) #define PHY_BASIC_T1_FEATURES ((unsigned long *)&phy_basic_t1_features) #define PHY_GBIT_FEATURES ((unsigned long *)&phy_gbit_features) #define PHY_GBIT_FIBRE_FEATURES ((unsigned long *)&phy_gbit_fibre_features) #define PHY_GBIT_ALL_PORTS_FEATURES ((unsigned long *)&phy_gbit_all_ports_features) #define PHY_10GBIT_FEATURES ((unsigned long *)&phy_10gbit_features) #define PHY_10GBIT_FEC_FEATURES ((unsigned long *)&phy_10gbit_fec_features) #define PHY_10GBIT_FULL_FEATURES ((unsigned long *)&phy_10gbit_full_features) extern const int phy_basic_ports_array[3]; extern const int phy_fibre_port_array[1]; extern const int phy_all_ports_features_array[7]; extern const int phy_10_100_features_array[4]; extern const int phy_basic_t1_features_array[2]; extern const int phy_gbit_features_array[2]; extern const int phy_10gbit_features_array[1]; /* * Set phydev->irq to PHY_POLL if interrupts are not supported, * or not desired for this PHY. Set to PHY_MAC_INTERRUPT if * the attached MAC driver handles the interrupt */ #define PHY_POLL -1 #define PHY_MAC_INTERRUPT -2 #define PHY_IS_INTERNAL 0x00000001 #define PHY_RST_AFTER_CLK_EN 0x00000002 #define PHY_POLL_CABLE_TEST 0x00000004 #define MDIO_DEVICE_IS_PHY 0x80000000 /** * enum phy_interface_t - Interface Mode definitions * * @PHY_INTERFACE_MODE_NA: Not Applicable - don't touch * @PHY_INTERFACE_MODE_INTERNAL: No interface, MAC and PHY combined * @PHY_INTERFACE_MODE_MII: Median-independent interface * @PHY_INTERFACE_MODE_GMII: Gigabit median-independent interface * @PHY_INTERFACE_MODE_SGMII: Serial gigabit media-independent interface * @PHY_INTERFACE_MODE_TBI: Ten Bit Interface * @PHY_INTERFACE_MODE_REVMII: Reverse Media Independent Interface * @PHY_INTERFACE_MODE_RMII: Reduced Media Independent Interface * @PHY_INTERFACE_MODE_REVRMII: Reduced Media Independent Interface in PHY role * @PHY_INTERFACE_MODE_RGMII: Reduced gigabit media-independent interface * @PHY_INTERFACE_MODE_RGMII_ID: RGMII with Internal RX+TX delay * @PHY_INTERFACE_MODE_RGMII_RXID: RGMII with Internal RX delay * @PHY_INTERFACE_MODE_RGMII_TXID: RGMII with Internal RX delay * @PHY_INTERFACE_MODE_RTBI: Reduced TBI * @PHY_INTERFACE_MODE_SMII: ??? MII * @PHY_INTERFACE_MODE_XGMII: 10 gigabit media-independent interface * @PHY_INTERFACE_MODE_XLGMII:40 gigabit media-independent interface * @PHY_INTERFACE_MODE_MOCA: Multimedia over Coax * @PHY_INTERFACE_MODE_QSGMII: Quad SGMII * @PHY_INTERFACE_MODE_TRGMII: Turbo RGMII * @PHY_INTERFACE_MODE_100BASEX: 100 BaseX * @PHY_INTERFACE_MODE_1000BASEX: 1000 BaseX * @PHY_INTERFACE_MODE_2500BASEX: 2500 BaseX * @PHY_INTERFACE_MODE_5GBASER: 5G BaseR * @PHY_INTERFACE_MODE_RXAUI: Reduced XAUI * @PHY_INTERFACE_MODE_XAUI: 10 Gigabit Attachment Unit Interface * @PHY_INTERFACE_MODE_10GBASER: 10G BaseR * @PHY_INTERFACE_MODE_25GBASER: 25G BaseR * @PHY_INTERFACE_MODE_USXGMII: Universal Serial 10GE MII * @PHY_INTERFACE_MODE_10GKR: 10GBASE-KR - with Clause 73 AN * @PHY_INTERFACE_MODE_MAX: Book keeping * * Describes the interface between the MAC and PHY. */ typedef enum { PHY_INTERFACE_MODE_NA, PHY_INTERFACE_MODE_INTERNAL, PHY_INTERFACE_MODE_MII, PHY_INTERFACE_MODE_GMII, PHY_INTERFACE_MODE_SGMII, PHY_INTERFACE_MODE_TBI, PHY_INTERFACE_MODE_REVMII, PHY_INTERFACE_MODE_RMII, PHY_INTERFACE_MODE_REVRMII, PHY_INTERFACE_MODE_RGMII, PHY_INTERFACE_MODE_RGMII_ID, PHY_INTERFACE_MODE_RGMII_RXID, PHY_INTERFACE_MODE_RGMII_TXID, PHY_INTERFACE_MODE_RTBI, PHY_INTERFACE_MODE_SMII, PHY_INTERFACE_MODE_XGMII, PHY_INTERFACE_MODE_XLGMII, PHY_INTERFACE_MODE_MOCA, PHY_INTERFACE_MODE_QSGMII, PHY_INTERFACE_MODE_TRGMII, PHY_INTERFACE_MODE_100BASEX, PHY_INTERFACE_MODE_1000BASEX, PHY_INTERFACE_MODE_2500BASEX, PHY_INTERFACE_MODE_5GBASER, PHY_INTERFACE_MODE_RXAUI, PHY_INTERFACE_MODE_XAUI, /* 10GBASE-R, XFI, SFI - single lane 10G Serdes */ PHY_INTERFACE_MODE_10GBASER, PHY_INTERFACE_MODE_25GBASER, PHY_INTERFACE_MODE_USXGMII, /* 10GBASE-KR - with Clause 73 AN */ PHY_INTERFACE_MODE_10GKR, PHY_INTERFACE_MODE_MAX, } phy_interface_t; /* * phy_supported_speeds - return all speeds currently supported by a PHY device */ unsigned int phy_supported_speeds(struct phy_device *phy, unsigned int *speeds, unsigned int size); /** * phy_modes - map phy_interface_t enum to device tree binding of phy-mode * @interface: enum phy_interface_t value * * Description: maps enum &phy_interface_t defined in this file * into the device tree binding of 'phy-mode', so that Ethernet * device driver can get PHY interface from device tree. */ static inline const char *phy_modes(phy_interface_t interface) { switch (interface) { case PHY_INTERFACE_MODE_NA: return ""; case PHY_INTERFACE_MODE_INTERNAL: return "internal"; case PHY_INTERFACE_MODE_MII: return "mii"; case PHY_INTERFACE_MODE_GMII: return "gmii"; case PHY_INTERFACE_MODE_SGMII: return "sgmii"; case PHY_INTERFACE_MODE_TBI: return "tbi"; case PHY_INTERFACE_MODE_REVMII: return "rev-mii"; case PHY_INTERFACE_MODE_RMII: return "rmii"; case PHY_INTERFACE_MODE_REVRMII: return "rev-rmii"; case PHY_INTERFACE_MODE_RGMII: return "rgmii"; case PHY_INTERFACE_MODE_RGMII_ID: return "rgmii-id"; case PHY_INTERFACE_MODE_RGMII_RXID: return "rgmii-rxid"; case PHY_INTERFACE_MODE_RGMII_TXID: return "rgmii-txid"; case PHY_INTERFACE_MODE_RTBI: return "rtbi"; case PHY_INTERFACE_MODE_SMII: return "smii"; case PHY_INTERFACE_MODE_XGMII: return "xgmii"; case PHY_INTERFACE_MODE_XLGMII: return "xlgmii"; case PHY_INTERFACE_MODE_MOCA: return "moca"; case PHY_INTERFACE_MODE_QSGMII: return "qsgmii"; case PHY_INTERFACE_MODE_TRGMII: return "trgmii"; case PHY_INTERFACE_MODE_1000BASEX: return "1000base-x"; case PHY_INTERFACE_MODE_2500BASEX: return "2500base-x"; case PHY_INTERFACE_MODE_5GBASER: return "5gbase-r"; case PHY_INTERFACE_MODE_RXAUI: return "rxaui"; case PHY_INTERFACE_MODE_XAUI: return "xaui"; case PHY_INTERFACE_MODE_10GBASER: return "10gbase-r"; case PHY_INTERFACE_MODE_25GBASER: return "25gbase-r"; case PHY_INTERFACE_MODE_USXGMII: return "usxgmii"; case PHY_INTERFACE_MODE_10GKR: return "10gbase-kr"; case PHY_INTERFACE_MODE_100BASEX: return "100base-x"; default: return "unknown"; } } #define PHY_INIT_TIMEOUT 100000 #define PHY_FORCE_TIMEOUT 10 #define PHY_MAX_ADDR 32 /* Used when trying to connect to a specific phy (mii bus id:phy device id) */ #define PHY_ID_FMT "%s:%02x" #define MII_BUS_ID_SIZE 61 struct device; struct phylink; struct sfp_bus; struct sfp_upstream_ops; struct sk_buff; /** * struct mdio_bus_stats - Statistics counters for MDIO busses * @transfers: Total number of transfers, i.e. @writes + @reads * @errors: Number of MDIO transfers that returned an error * @writes: Number of write transfers * @reads: Number of read transfers * @syncp: Synchronisation for incrementing statistics */ struct mdio_bus_stats { u64_stats_t transfers; u64_stats_t errors; u64_stats_t writes; u64_stats_t reads; /* Must be last, add new statistics above */ struct u64_stats_sync syncp; }; /** * struct phy_package_shared - Shared information in PHY packages * @addr: Common PHY address used to combine PHYs in one package * @refcnt: Number of PHYs connected to this shared data * @flags: Initialization of PHY package * @priv_size: Size of the shared private data @priv * @priv: Driver private data shared across a PHY package * * Represents a shared structure between different phydev's in the same * package, for example a quad PHY. See phy_package_join() and * phy_package_leave(). */ struct phy_package_shared { int addr; refcount_t refcnt; unsigned long flags; size_t priv_size; /* private data pointer */ /* note that this pointer is shared between different phydevs and * the user has to take care of appropriate locking. It is allocated * and freed automatically by phy_package_join() and * phy_package_leave(). */ void *priv; }; /* used as bit number in atomic bitops */ #define PHY_SHARED_F_INIT_DONE 0 #define PHY_SHARED_F_PROBE_DONE 1 /** * struct mii_bus - Represents an MDIO bus * * @owner: Who owns this device * @name: User friendly name for this MDIO device, or driver name * @id: Unique identifier for this bus, typical from bus hierarchy * @priv: Driver private data * * The Bus class for PHYs. Devices which provide access to * PHYs should register using this structure */ struct mii_bus { struct module *owner; const char *name; char id[MII_BUS_ID_SIZE]; void *priv; /** @read: Perform a read transfer on the bus */ int (*read)(struct mii_bus *bus, int addr, int regnum); /** @write: Perform a write transfer on the bus */ int (*write)(struct mii_bus *bus, int addr, int regnum, u16 val); /** @reset: Perform a reset of the bus */ int (*reset)(struct mii_bus *bus); /** @stats: Statistic counters per device on the bus */ struct mdio_bus_stats stats[PHY_MAX_ADDR]; /** * @mdio_lock: A lock to ensure that only one thing can read/write * the MDIO bus at a time */ struct mutex mdio_lock; /** @parent: Parent device of this bus */ struct device *parent; /** @state: State of bus structure */ enum { MDIOBUS_ALLOCATED = 1, MDIOBUS_REGISTERED, MDIOBUS_UNREGISTERED, MDIOBUS_RELEASED, } state; /** @dev: Kernel device representation */ struct device dev; /** @mdio_map: list of all MDIO devices on bus */ struct mdio_device *mdio_map[PHY_MAX_ADDR]; /** @phy_mask: PHY addresses to be ignored when probing */ u32 phy_mask; /** @phy_ignore_ta_mask: PHY addresses to ignore the TA/read failure */ u32 phy_ignore_ta_mask; /** * @irq: An array of interrupts, each PHY's interrupt at the index * matching its address */ int irq[PHY_MAX_ADDR]; /** @reset_delay_us: GPIO reset pulse width in microseconds */ int reset_delay_us; /** @reset_post_delay_us: GPIO reset deassert delay in microseconds */ int reset_post_delay_us; /** @reset_gpiod: Reset GPIO descriptor pointer */ struct gpio_desc *reset_gpiod; /** @probe_capabilities: bus capabilities, used for probing */ enum { MDIOBUS_NO_CAP = 0, MDIOBUS_C22, MDIOBUS_C45, MDIOBUS_C22_C45, } probe_capabilities; /** @shared_lock: protect access to the shared element */ struct mutex shared_lock; /** @shared: shared state across different PHYs */ struct phy_package_shared *shared[PHY_MAX_ADDR]; }; #define to_mii_bus(d) container_of(d, struct mii_bus, dev) struct mii_bus *mdiobus_alloc_size(size_t size); /** * mdiobus_alloc - Allocate an MDIO bus structure * * The internal state of the MDIO bus will be set of MDIOBUS_ALLOCATED ready * for the driver to register the bus. */ static inline struct mii_bus *mdiobus_alloc(void) { return mdiobus_alloc_size(0); } int __mdiobus_register(struct mii_bus *bus, struct module *owner); int __devm_mdiobus_register(struct device *dev, struct mii_bus *bus, struct module *owner); #define mdiobus_register(bus) __mdiobus_register(bus, THIS_MODULE) #define devm_mdiobus_register(dev, bus) \ __devm_mdiobus_register(dev, bus, THIS_MODULE) void mdiobus_unregister(struct mii_bus *bus); void mdiobus_free(struct mii_bus *bus); struct mii_bus *devm_mdiobus_alloc_size(struct device *dev, int sizeof_priv); static inline struct mii_bus *devm_mdiobus_alloc(struct device *dev) { return devm_mdiobus_alloc_size(dev, 0); } struct mii_bus *mdio_find_bus(const char *mdio_name); struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr); #define PHY_INTERRUPT_DISABLED false #define PHY_INTERRUPT_ENABLED true /** * enum phy_state - PHY state machine states: * * @PHY_DOWN: PHY device and driver are not ready for anything. probe * should be called if and only if the PHY is in this state, * given that the PHY device exists. * - PHY driver probe function will set the state to @PHY_READY * * @PHY_READY: PHY is ready to send and receive packets, but the * controller is not. By default, PHYs which do not implement * probe will be set to this state by phy_probe(). * - start will set the state to UP * * @PHY_UP: The PHY and attached device are ready to do work. * Interrupts should be started here. * - timer moves to @PHY_NOLINK or @PHY_RUNNING * * @PHY_NOLINK: PHY is up, but not currently plugged in. * - irq or timer will set @PHY_RUNNING if link comes back * - phy_stop moves to @PHY_HALTED * * @PHY_RUNNING: PHY is currently up, running, and possibly sending * and/or receiving packets * - irq or timer will set @PHY_NOLINK if link goes down * - phy_stop moves to @PHY_HALTED * * @PHY_CABLETEST: PHY is performing a cable test. Packet reception/sending * is not expected to work, carrier will be indicated as down. PHY will be * poll once per second, or on interrupt for it current state. * Once complete, move to UP to restart the PHY. * - phy_stop aborts the running test and moves to @PHY_HALTED * * @PHY_HALTED: PHY is up, but no polling or interrupts are done. Or * PHY is in an error state. * - phy_start moves to @PHY_UP */ enum phy_state { PHY_DOWN = 0, PHY_READY, PHY_HALTED, PHY_UP, PHY_RUNNING, PHY_NOLINK, PHY_CABLETEST, }; #define MDIO_MMD_NUM 32 /** * struct phy_c45_device_ids - 802.3-c45 Device Identifiers * @devices_in_package: IEEE 802.3 devices in package register value. * @mmds_present: bit vector of MMDs present. * @device_ids: The device identifer for each present device. */ struct phy_c45_device_ids { u32 devices_in_package; u32 mmds_present; u32 device_ids[MDIO_MMD_NUM]; }; struct macsec_context; struct macsec_ops; /** * struct phy_device - An instance of a PHY * * @mdio: MDIO bus this PHY is on * @drv: Pointer to the driver for this PHY instance * @phy_id: UID for this device found during discovery * @c45_ids: 802.3-c45 Device Identifiers if is_c45. * @is_c45: Set to true if this PHY uses clause 45 addressing. * @is_internal: Set to true if this PHY is internal to a MAC. * @is_pseudo_fixed_link: Set to true if this PHY is an Ethernet switch, etc. * @is_gigabit_capable: Set to true if PHY supports 1000Mbps * @has_fixups: Set to true if this PHY has fixups/quirks. * @suspended: Set to true if this PHY has been suspended successfully. * @suspended_by_mdio_bus: Set to true if this PHY was suspended by MDIO bus. * @sysfs_links: Internal boolean tracking sysfs symbolic links setup/removal. * @loopback_enabled: Set true if this PHY has been loopbacked successfully. * @downshifted_rate: Set true if link speed has been downshifted. * @is_on_sfp_module: Set true if PHY is located on an SFP module. * @mac_managed_pm: Set true if MAC driver takes of suspending/resuming PHY * @state: State of the PHY for management purposes * @dev_flags: Device-specific flags used by the PHY driver. * Bits [15:0] are free to use by the PHY driver to communicate * driver specific behavior. * Bits [23:16] are currently reserved for future use. * Bits [31:24] are reserved for defining generic * PHY driver behavior. * @irq: IRQ number of the PHY's interrupt (-1 if none) * @phy_timer: The timer for handling the state machine * @phylink: Pointer to phylink instance for this PHY * @sfp_bus_attached: Flag indicating whether the SFP bus has been attached * @sfp_bus: SFP bus attached to this PHY's fiber port * @attached_dev: The attached enet driver's device instance ptr * @adjust_link: Callback for the enet controller to respond to changes: in the * link state. * @phy_link_change: Callback for phylink for notification of link change * @macsec_ops: MACsec offloading ops. * * @speed: Current link speed * @duplex: Current duplex * @port: Current port * @pause: Current pause * @asym_pause: Current asymmetric pause * @supported: Combined MAC/PHY supported linkmodes * @advertising: Currently advertised linkmodes * @adv_old: Saved advertised while power saving for WoL * @lp_advertising: Current link partner advertised linkmodes * @eee_broken_modes: Energy efficient ethernet modes which should be prohibited * @autoneg: Flag autoneg being used * @link: Current link state * @autoneg_complete: Flag auto negotiation of the link has completed * @mdix: Current crossover * @mdix_ctrl: User setting of crossover * @interrupts: Flag interrupts have been enabled * @interface: enum phy_interface_t value * @skb: Netlink message for cable diagnostics * @nest: Netlink nest used for cable diagnostics * @ehdr: nNtlink header for cable diagnostics * @phy_led_triggers: Array of LED triggers * @phy_num_led_triggers: Number of triggers in @phy_led_triggers * @led_link_trigger: LED trigger for link up/down * @last_triggered: last LED trigger for link speed * @master_slave_set: User requested master/slave configuration * @master_slave_get: Current master/slave advertisement * @master_slave_state: Current master/slave configuration * @mii_ts: Pointer to time stamper callbacks * @lock: Mutex for serialization access to PHY * @state_queue: Work queue for state machine * @shared: Pointer to private data shared by phys in one package * @priv: Pointer to driver private data * * interrupts currently only supports enabled or disabled, * but could be changed in the future to support enabling * and disabling specific interrupts * * Contains some infrastructure for polling and interrupt * handling, as well as handling shifts in PHY hardware state */ struct phy_device { struct mdio_device mdio; /* Information about the PHY type */ /* And management functions */ struct phy_driver *drv; u32 phy_id; struct phy_c45_device_ids c45_ids; unsigned is_c45:1; unsigned is_internal:1; unsigned is_pseudo_fixed_link:1; unsigned is_gigabit_capable:1; unsigned has_fixups:1; unsigned suspended:1; unsigned suspended_by_mdio_bus:1; unsigned sysfs_links:1; unsigned loopback_enabled:1; unsigned downshifted_rate:1; unsigned is_on_sfp_module:1; unsigned mac_managed_pm:1; unsigned autoneg:1; /* The most recently read link state */ unsigned link:1; unsigned autoneg_complete:1; /* Interrupts are enabled */ unsigned interrupts:1; enum phy_state state; u32 dev_flags; phy_interface_t interface; /* * forced speed & duplex (no autoneg) * partner speed & duplex & pause (autoneg) */ int speed; int duplex; int port; int pause; int asym_pause; u8 master_slave_get; u8 master_slave_set; u8 master_slave_state; /* Union of PHY and Attached devices' supported link modes */ /* See ethtool.h for more info */ __ETHTOOL_DECLARE_LINK_MODE_MASK(supported); __ETHTOOL_DECLARE_LINK_MODE_MASK(advertising); __ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising); /* used with phy_speed_down */ __ETHTOOL_DECLARE_LINK_MODE_MASK(adv_old); /* Energy efficient ethernet modes which should be prohibited */ u32 eee_broken_modes; #ifdef CONFIG_LED_TRIGGER_PHY struct phy_led_trigger *phy_led_triggers; unsigned int phy_num_led_triggers; struct phy_led_trigger *last_triggered; struct phy_led_trigger *led_link_trigger; #endif /* * Interrupt number for this PHY * -1 means no interrupt */ int irq; /* private data pointer */ /* For use by PHYs to maintain extra state */ void *priv; /* shared data pointer */ /* For use by PHYs inside the same package that need a shared state. */ struct phy_package_shared *shared; /* Reporting cable test results */ struct sk_buff *skb; void *ehdr; struct nlattr *nest; /* Interrupt and Polling infrastructure */ struct delayed_work state_queue; struct mutex lock; /* This may be modified under the rtnl lock */ bool sfp_bus_attached; struct sfp_bus *sfp_bus; struct phylink *phylink; struct net_device *attached_dev; struct mii_timestamper *mii_ts; u8 mdix; u8 mdix_ctrl; void (*phy_link_change)(struct phy_device *phydev, bool up); void (*adjust_link)(struct net_device *dev); #if IS_ENABLED(CONFIG_MACSEC) /* MACsec management functions */ const struct macsec_ops *macsec_ops; #endif }; static inline struct phy_device *to_phy_device(const struct device *dev) { return container_of(to_mdio_device(dev), struct phy_device, mdio); } /** * struct phy_tdr_config - Configuration of a TDR raw test * * @first: Distance for first data collection point * @last: Distance for last data collection point * @step: Step between data collection points * @pair: Bitmap of cable pairs to collect data for * * A structure containing possible configuration parameters * for a TDR cable test. The driver does not need to implement * all the parameters, but should report what is actually used. * All distances are in centimeters. */ struct phy_tdr_config { u32 first; u32 last; u32 step; s8 pair; }; #define PHY_PAIR_ALL -1 /** * struct phy_driver - Driver structure for a particular PHY type * * @mdiodrv: Data common to all MDIO devices * @phy_id: The result of reading the UID registers of this PHY * type, and ANDing them with the phy_id_mask. This driver * only works for PHYs with IDs which match this field * @name: The friendly name of this PHY type * @phy_id_mask: Defines the important bits of the phy_id * @features: A mandatory list of features (speed, duplex, etc) * supported by this PHY * @flags: A bitfield defining certain other features this PHY * supports (like interrupts) * @driver_data: Static driver data * * All functions are optional. If config_aneg or read_status * are not implemented, the phy core uses the genphy versions. * Note that none of these functions should be called from * interrupt time. The goal is for the bus read/write functions * to be able to block when the bus transaction is happening, * and be freed up by an interrupt (The MPC85xx has this ability, * though it is not currently supported in the driver). */ struct phy_driver { struct mdio_driver_common mdiodrv; u32 phy_id; char *name; u32 phy_id_mask; const unsigned long * const features; u32 flags; const void *driver_data; /** * @soft_reset: Called to issue a PHY software reset */ int (*soft_reset)(struct phy_device *phydev); /** * @config_init: Called to initialize the PHY, * including after a reset */ int (*config_init)(struct phy_device *phydev); /** * @probe: Called during discovery. Used to set * up device-specific structures, if any */ int (*probe)(struct phy_device *phydev); /** * @get_features: Probe the hardware to determine what * abilities it has. Should only set phydev->supported. */ int (*get_features)(struct phy_device *phydev); /* PHY Power Management */ /** @suspend: Suspend the hardware, saving state if needed */ int (*suspend)(struct phy_device *phydev); /** @resume: Resume the hardware, restoring state if needed */ int (*resume)(struct phy_device *phydev); /** * @config_aneg: Configures the advertisement and resets * autonegotiation if phydev->autoneg is on, * forces the speed to the current settings in phydev * if phydev->autoneg is off */ int (*config_aneg)(struct phy_device *phydev); /** @aneg_done: Determines the auto negotiation result */ int (*aneg_done)(struct phy_device *phydev); /** @read_status: Determines the negotiated speed and duplex */ int (*read_status)(struct phy_device *phydev); /** * @config_intr: Enables or disables interrupts. * It should also clear any pending interrupts prior to enabling the * IRQs and after disabling them. */ int (*config_intr)(struct phy_device *phydev); /** @handle_interrupt: Override default interrupt handling */ irqreturn_t (*handle_interrupt)(struct phy_device *phydev); /** @remove: Clears up any memory if needed */ void (*remove)(struct phy_device *phydev); /** * @match_phy_device: Returns true if this is a suitable * driver for the given phydev. If NULL, matching is based on * phy_id and phy_id_mask. */ int (*match_phy_device)(struct phy_device *phydev); /** * @set_wol: Some devices (e.g. qnap TS-119P II) require PHY * register changes to enable Wake on LAN, so set_wol is * provided to be called in the ethernet driver's set_wol * function. */ int (*set_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); /** * @get_wol: See set_wol, but for checking whether Wake on LAN * is enabled. */ void (*get_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); /** * @link_change_notify: Called to inform a PHY device driver * when the core is about to change the link state. This * callback is supposed to be used as fixup hook for drivers * that need to take action when the link state * changes. Drivers are by no means allowed to mess with the * PHY device structure in their implementations. */ void (*link_change_notify)(struct phy_device *dev); /** * @read_mmd: PHY specific driver override for reading a MMD * register. This function is optional for PHY specific * drivers. When not provided, the default MMD read function * will be used by phy_read_mmd(), which will use either a * direct read for Clause 45 PHYs or an indirect read for * Clause 22 PHYs. devnum is the MMD device number within the * PHY device, regnum is the register within the selected MMD * device. */ int (*read_mmd)(struct phy_device *dev, int devnum, u16 regnum); /** * @write_mmd: PHY specific driver override for writing a MMD * register. This function is optional for PHY specific * drivers. When not provided, the default MMD write function * will be used by phy_write_mmd(), which will use either a * direct write for Clause 45 PHYs, or an indirect write for * Clause 22 PHYs. devnum is the MMD device number within the * PHY device, regnum is the register within the selected MMD * device. val is the value to be written. */ int (*write_mmd)(struct phy_device *dev, int devnum, u16 regnum, u16 val); /** @read_page: Return the current PHY register page number */ int (*read_page)(struct phy_device *dev); /** @write_page: Set the current PHY register page number */ int (*write_page)(struct phy_device *dev, int page); /** * @module_info: Get the size and type of the eeprom contained * within a plug-in module */ int (*module_info)(struct phy_device *dev, struct ethtool_modinfo *modinfo); /** * @module_eeprom: Get the eeprom information from the plug-in * module */ int (*module_eeprom)(struct phy_device *dev, struct ethtool_eeprom *ee, u8 *data); /** @cable_test_start: Start a cable test */ int (*cable_test_start)(struct phy_device *dev); /** @cable_test_tdr_start: Start a raw TDR cable test */ int (*cable_test_tdr_start)(struct phy_device *dev, const struct phy_tdr_config *config); /** * @cable_test_get_status: Once per second, or on interrupt, * request the status of the test. */ int (*cable_test_get_status)(struct phy_device *dev, bool *finished); /* Get statistics from the PHY using ethtool */ /** @get_sset_count: Number of statistic counters */ int (*get_sset_count)(struct phy_device *dev); /** @get_strings: Names of the statistic counters */ void (*get_strings)(struct phy_device *dev, u8 *data); /** @get_stats: Return the statistic counter values */ void (*get_stats)(struct phy_device *dev, struct ethtool_stats *stats, u64 *data); /* Get and Set PHY tunables */ /** @get_tunable: Return the value of a tunable */ int (*get_tunable)(struct phy_device *dev, struct ethtool_tunable *tuna, void *data); /** @set_tunable: Set the value of a tunable */ int (*set_tunable)(struct phy_device *dev, struct ethtool_tunable *tuna, const void *data); /** @set_loopback: Set the loopback mood of the PHY */ int (*set_loopback)(struct phy_device *dev, bool enable); /** @get_sqi: Get the signal quality indication */ int (*get_sqi)(struct phy_device *dev); /** @get_sqi_max: Get the maximum signal quality indication */ int (*get_sqi_max)(struct phy_device *dev); }; #define to_phy_driver(d) container_of(to_mdio_common_driver(d), \ struct phy_driver, mdiodrv) #define PHY_ANY_ID "MATCH ANY PHY" #define PHY_ANY_UID 0xffffffff #define PHY_ID_MATCH_EXACT(id) .phy_id = (id), .phy_id_mask = GENMASK(31, 0) #define PHY_ID_MATCH_MODEL(id) .phy_id = (id), .phy_id_mask = GENMASK(31, 4) #define PHY_ID_MATCH_VENDOR(id) .phy_id = (id), .phy_id_mask = GENMASK(31, 10) /* A Structure for boards to register fixups with the PHY Lib */ struct phy_fixup { struct list_head list; char bus_id[MII_BUS_ID_SIZE + 3]; u32 phy_uid; u32 phy_uid_mask; int (*run)(struct phy_device *phydev); }; const char *phy_speed_to_str(int speed); const char *phy_duplex_to_str(unsigned int duplex); /* A structure for mapping a particular speed and duplex * combination to a particular SUPPORTED and ADVERTISED value */ struct phy_setting { u32 speed; u8 duplex; u8 bit; }; const struct phy_setting * phy_lookup_setting(int speed, int duplex, const unsigned long *mask, bool exact); size_t phy_speeds(unsigned int *speeds, size_t size, unsigned long *mask); void of_set_phy_supported(struct phy_device *phydev); void of_set_phy_eee_broken(struct phy_device *phydev); int phy_speed_down_core(struct phy_device *phydev); /** * phy_is_started - Convenience function to check whether PHY is started * @phydev: The phy_device struct */ static inline bool phy_is_started(struct phy_device *phydev) { return phydev->state >= PHY_UP; } void phy_resolve_aneg_pause(struct phy_device *phydev); void phy_resolve_aneg_linkmode(struct phy_device *phydev); void phy_check_downshift(struct phy_device *phydev); /** * phy_read - Convenience function for reading a given PHY register * @phydev: the phy_device struct * @regnum: register number to read * * NOTE: MUST NOT be called from interrupt context, * because the bus read/write functions may wait for an interrupt * to conclude the operation. */ static inline int phy_read(struct phy_device *phydev, u32 regnum) { return mdiobus_read(phydev->mdio.bus, phydev->mdio.addr, regnum); } #define phy_read_poll_timeout(phydev, regnum, val, cond, sleep_us, \ timeout_us, sleep_before_read) \ ({ \ int __ret = read_poll_timeout(phy_read, val, (cond) || val < 0, \ sleep_us, timeout_us, sleep_before_read, phydev, regnum); \ if (val < 0) \ __ret = val; \ if (__ret) \ phydev_err(phydev, "%s failed: %d\n", __func__, __ret); \ __ret; \ }) /** * __phy_read - convenience function for reading a given PHY register * @phydev: the phy_device struct * @regnum: register number to read * * The caller must have taken the MDIO bus lock. */ static inline int __phy_read(struct phy_device *phydev, u32 regnum) { return __mdiobus_read(phydev->mdio.bus, phydev->mdio.addr, regnum); } /** * phy_write - Convenience function for writing a given PHY register * @phydev: the phy_device struct * @regnum: register number to write * @val: value to write to @regnum * * NOTE: MUST NOT be called from interrupt context, * because the bus read/write functions may wait for an interrupt * to conclude the operation. */ static inline int phy_write(struct phy_device *phydev, u32 regnum, u16 val) { return mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, regnum, val); } /** * __phy_write - Convenience function for writing a given PHY register * @phydev: the phy_device struct * @regnum: register number to write * @val: value to write to @regnum * * The caller must have taken the MDIO bus lock. */ static inline int __phy_write(struct phy_device *phydev, u32 regnum, u16 val) { return __mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, regnum, val); } /** * __phy_modify_changed() - Convenience function for modifying a PHY register * @phydev: a pointer to a &struct phy_device * @regnum: register number * @mask: bit mask of bits to clear * @set: bit mask of bits to set * * Unlocked helper function which allows a PHY register to be modified as * new register value = (old register value & ~mask) | set * * Returns negative errno, 0 if there was no change, and 1 in case of change */ static inline int __phy_modify_changed(struct phy_device *phydev, u32 regnum, u16 mask, u16 set) { return __mdiobus_modify_changed(phydev->mdio.bus, phydev->mdio.addr, regnum, mask, set); } /* * phy_read_mmd - Convenience function for reading a register * from an MMD on a given PHY. */ int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum); /** * phy_read_mmd_poll_timeout - Periodically poll a PHY register until a * condition is met or a timeout occurs * * @phydev: The phy_device struct * @devaddr: The MMD to read from * @regnum: The register on the MMD to read * @val: Variable to read the register into * @cond: Break condition (usually involving @val) * @sleep_us: Maximum time to sleep between reads in us (0 * tight-loops). Should be less than ~20ms since usleep_range * is used (see Documentation/timers/timers-howto.rst). * @timeout_us: Timeout in us, 0 means never timeout * @sleep_before_read: if it is true, sleep @sleep_us before read. * Returns 0 on success and -ETIMEDOUT upon a timeout. In either * case, the last read value at @args is stored in @val. Must not * be called from atomic context if sleep_us or timeout_us are used. */ #define phy_read_mmd_poll_timeout(phydev, devaddr, regnum, val, cond, \ sleep_us, timeout_us, sleep_before_read) \ ({ \ int __ret = read_poll_timeout(phy_read_mmd, val, (cond) || val < 0, \ sleep_us, timeout_us, sleep_before_read, \ phydev, devaddr, regnum); \ if (val < 0) \ __ret = val; \ if (__ret) \ phydev_err(phydev, "%s failed: %d\n", __func__, __ret); \ __ret; \ }) /* * __phy_read_mmd - Convenience function for reading a register * from an MMD on a given PHY. */ int __phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum); /* * phy_write_mmd - Convenience function for writing a register * on an MMD on a given PHY. */ int phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val); /* * __phy_write_mmd - Convenience function for writing a register * on an MMD on a given PHY. */ int __phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val); int __phy_modify_changed(struct phy_device *phydev, u32 regnum, u16 mask, u16 set); int phy_modify_changed(struct phy_device *phydev, u32 regnum, u16 mask, u16 set); int __phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set); int phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set); int __phy_modify_mmd_changed(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set); int phy_modify_mmd_changed(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set); int __phy_modify_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set); int phy_modify_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set); /** * __phy_set_bits - Convenience function for setting bits in a PHY register * @phydev: the phy_device struct * @regnum: register number to write * @val: bits to set * * The caller must have taken the MDIO bus lock. */ static inline int __phy_set_bits(struct phy_device *phydev, u32 regnum, u16 val) { return __phy_modify(phydev, regnum, 0, val); } /** * __phy_clear_bits - Convenience function for clearing bits in a PHY register * @phydev: the phy_device struct * @regnum: register number to write * @val: bits to clear * * The caller must have taken the MDIO bus lock. */ static inline int __phy_clear_bits(struct phy_device *phydev, u32 regnum, u16 val) { return __phy_modify(phydev, regnum, val, 0); } /** * phy_set_bits - Convenience function for setting bits in a PHY register * @phydev: the phy_device struct * @regnum: register number to write * @val: bits to set */ static inline int phy_set_bits(struct phy_device *phydev, u32 regnum, u16 val) { return phy_modify(phydev, regnum, 0, val); } /** * phy_clear_bits - Convenience function for clearing bits in a PHY register * @phydev: the phy_device struct * @regnum: register number to write * @val: bits to clear */ static inline int phy_clear_bits(struct phy_device *phydev, u32 regnum, u16 val) { return phy_modify(phydev, regnum, val, 0); } /** * __phy_set_bits_mmd - Convenience function for setting bits in a register * on MMD * @phydev: the phy_device struct * @devad: the MMD containing register to modify * @regnum: register number to modify * @val: bits to set * * The caller must have taken the MDIO bus lock. */ static inline int __phy_set_bits_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) { return __phy_modify_mmd(phydev, devad, regnum, 0, val); } /** * __phy_clear_bits_mmd - Convenience function for clearing bits in a register * on MMD * @phydev: the phy_device struct * @devad: the MMD containing register to modify * @regnum: register number to modify * @val: bits to clear * * The caller must have taken the MDIO bus lock. */ static inline int __phy_clear_bits_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) { return __phy_modify_mmd(phydev, devad, regnum, val, 0); } /** * phy_set_bits_mmd - Convenience function for setting bits in a register * on MMD * @phydev: the phy_device struct * @devad: the MMD containing register to modify * @regnum: register number to modify * @val: bits to set */ static inline int phy_set_bits_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) { return phy_modify_mmd(phydev, devad, regnum, 0, val); } /** * phy_clear_bits_mmd - Convenience function for clearing bits in a register * on MMD * @phydev: the phy_device struct * @devad: the MMD containing register to modify * @regnum: register number to modify * @val: bits to clear */ static inline int phy_clear_bits_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) { return phy_modify_mmd(phydev, devad, regnum, val, 0); } /** * phy_interrupt_is_valid - Convenience function for testing a given PHY irq * @phydev: the phy_device struct * * NOTE: must be kept in sync with addition/removal of PHY_POLL and * PHY_MAC_INTERRUPT */ static inline bool phy_interrupt_is_valid(struct phy_device *phydev) { return phydev->irq != PHY_POLL && phydev->irq != PHY_MAC_INTERRUPT; } /** * phy_polling_mode - Convenience function for testing whether polling is * used to detect PHY status changes * @phydev: the phy_device struct */ static inline bool phy_polling_mode(struct phy_device *phydev) { if (phydev->state == PHY_CABLETEST) if (phydev->drv->flags & PHY_POLL_CABLE_TEST) return true; return phydev->irq == PHY_POLL; } /** * phy_has_hwtstamp - Tests whether a PHY time stamp configuration. * @phydev: the phy_device struct */ static inline bool phy_has_hwtstamp(struct phy_device *phydev) { return phydev && phydev->mii_ts && phydev->mii_ts->hwtstamp; } /** * phy_has_rxtstamp - Tests whether a PHY supports receive time stamping. * @phydev: the phy_device struct */ static inline bool phy_has_rxtstamp(struct phy_device *phydev) { return phydev && phydev->mii_ts && phydev->mii_ts->rxtstamp; } /** * phy_has_tsinfo - Tests whether a PHY reports time stamping and/or * PTP hardware clock capabilities. * @phydev: the phy_device struct */ static inline bool phy_has_tsinfo(struct phy_device *phydev) { return phydev && phydev->mii_ts && phydev->mii_ts->ts_info; } /** * phy_has_txtstamp - Tests whether a PHY supports transmit time stamping. * @phydev: the phy_device struct */ static inline bool phy_has_txtstamp(struct phy_device *phydev) { return phydev && phydev->mii_ts && phydev->mii_ts->txtstamp; } static inline int phy_hwtstamp(struct phy_device *phydev, struct ifreq *ifr) { return phydev->mii_ts->hwtstamp(phydev->mii_ts, ifr); } static inline bool phy_rxtstamp(struct phy_device *phydev, struct sk_buff *skb, int type) { return phydev->mii_ts->rxtstamp(phydev->mii_ts, skb, type); } static inline int phy_ts_info(struct phy_device *phydev, struct ethtool_ts_info *tsinfo) { return phydev->mii_ts->ts_info(phydev->mii_ts, tsinfo); } static inline void phy_txtstamp(struct phy_device *phydev, struct sk_buff *skb, int type) { phydev->mii_ts->txtstamp(phydev->mii_ts, skb, type); } /** * phy_is_internal - Convenience function for testing if a PHY is internal * @phydev: the phy_device struct */ static inline bool phy_is_internal(struct phy_device *phydev) { return phydev->is_internal; } /** * phy_on_sfp - Convenience function for testing if a PHY is on an SFP module * @phydev: the phy_device struct */ static inline bool phy_on_sfp(struct phy_device *phydev) { return phydev->is_on_sfp_module; } /** * phy_interface_mode_is_rgmii - Convenience function for testing if a * PHY interface mode is RGMII (all variants) * @mode: the &phy_interface_t enum */ static inline bool phy_interface_mode_is_rgmii(phy_interface_t mode) { return mode >= PHY_INTERFACE_MODE_RGMII && mode <= PHY_INTERFACE_MODE_RGMII_TXID; }; /** * phy_interface_mode_is_8023z() - does the PHY interface mode use 802.3z * negotiation * @mode: one of &enum phy_interface_t * * Returns true if the PHY interface mode uses the 16-bit negotiation * word as defined in 802.3z. (See 802.3-2015 37.2.1 Config_Reg encoding) */ static inline bool phy_interface_mode_is_8023z(phy_interface_t mode) { return mode == PHY_INTERFACE_MODE_1000BASEX || mode == PHY_INTERFACE_MODE_2500BASEX; } /** * phy_interface_is_rgmii - Convenience function for testing if a PHY interface * is RGMII (all variants) * @phydev: the phy_device struct */ static inline bool phy_interface_is_rgmii(struct phy_device *phydev) { return phy_interface_mode_is_rgmii(phydev->interface); }; /** * phy_is_pseudo_fixed_link - Convenience function for testing if this * PHY is the CPU port facing side of an Ethernet switch, or similar. * @phydev: the phy_device struct */ static inline bool phy_is_pseudo_fixed_link(struct phy_device *phydev) { return phydev->is_pseudo_fixed_link; } int phy_save_page(struct phy_device *phydev); int phy_select_page(struct phy_device *phydev, int page); int phy_restore_page(struct phy_device *phydev, int oldpage, int ret); int phy_read_paged(struct phy_device *phydev, int page, u32 regnum); int phy_write_paged(struct phy_device *phydev, int page, u32 regnum, u16 val); int phy_modify_paged_changed(struct phy_device *phydev, int page, u32 regnum, u16 mask, u16 set); int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, u16 mask, u16 set); struct phy_device *phy_device_create(struct mii_bus *bus, int addr, u32 phy_id, bool is_c45, struct phy_c45_device_ids *c45_ids); #if IS_ENABLED(CONFIG_PHYLIB) int fwnode_get_phy_id(struct fwnode_handle *fwnode, u32 *phy_id); struct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode); struct phy_device *fwnode_phy_find_device(struct fwnode_handle *phy_fwnode); struct phy_device *device_phy_find_device(struct device *dev); struct fwnode_handle *fwnode_get_phy_node(struct fwnode_handle *fwnode); struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45); int phy_device_register(struct phy_device *phy); void phy_device_free(struct phy_device *phydev); #else static inline int fwnode_get_phy_id(struct fwnode_handle *fwnode, u32 *phy_id) { return 0; } static inline struct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode) { return 0; } static inline struct phy_device *fwnode_phy_find_device(struct fwnode_handle *phy_fwnode) { return NULL; } static inline struct phy_device *device_phy_find_device(struct device *dev) { return NULL; } static inline struct fwnode_handle *fwnode_get_phy_node(struct fwnode_handle *fwnode) { return NULL; } static inline struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45) { return NULL; } static inline int phy_device_register(struct phy_device *phy) { return 0; } static inline void phy_device_free(struct phy_device *phydev) { } #endif /* CONFIG_PHYLIB */ void phy_device_remove(struct phy_device *phydev); int phy_get_c45_ids(struct phy_device *phydev); int phy_init_hw(struct phy_device *phydev); int phy_suspend(struct phy_device *phydev); int phy_resume(struct phy_device *phydev); int __phy_resume(struct phy_device *phydev); int phy_loopback(struct phy_device *phydev, bool enable); void phy_sfp_attach(void *upstream, struct sfp_bus *bus); void phy_sfp_detach(void *upstream, struct sfp_bus *bus); int phy_sfp_probe(struct phy_device *phydev, const struct sfp_upstream_ops *ops); struct phy_device *phy_attach(struct net_device *dev, const char *bus_id, phy_interface_t interface); struct phy_device *phy_find_first(struct mii_bus *bus); int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, u32 flags, phy_interface_t interface); int phy_connect_direct(struct net_device *dev, struct phy_device *phydev, void (*handler)(struct net_device *), phy_interface_t interface); struct phy_device *phy_connect(struct net_device *dev, const char *bus_id, void (*handler)(struct net_device *), phy_interface_t interface); void phy_disconnect(struct phy_device *phydev); void phy_detach(struct phy_device *phydev); void phy_start(struct phy_device *phydev); void phy_stop(struct phy_device *phydev); int phy_config_aneg(struct phy_device *phydev); int phy_start_aneg(struct phy_device *phydev); int phy_aneg_done(struct phy_device *phydev); int phy_speed_down(struct phy_device *phydev, bool sync); int phy_speed_up(struct phy_device *phydev); int phy_restart_aneg(struct phy_device *phydev); int phy_reset_after_clk_enable(struct phy_device *phydev); #if IS_ENABLED(CONFIG_PHYLIB) int phy_start_cable_test(struct phy_device *phydev, struct netlink_ext_ack *extack); int phy_start_cable_test_tdr(struct phy_device *phydev, struct netlink_ext_ack *extack, const struct phy_tdr_config *config); #else static inline int phy_start_cable_test(struct phy_device *phydev, struct netlink_ext_ack *extack) { NL_SET_ERR_MSG(extack, "Kernel not compiled with PHYLIB support"); return -EOPNOTSUPP; } static inline int phy_start_cable_test_tdr(struct phy_device *phydev, struct netlink_ext_ack *extack, const struct phy_tdr_config *config) { NL_SET_ERR_MSG(extack, "Kernel not compiled with PHYLIB support"); return -EOPNOTSUPP; } #endif int phy_cable_test_result(struct phy_device *phydev, u8 pair, u16 result); int phy_cable_test_fault_length(struct phy_device *phydev, u8 pair, u16 cm); static inline void phy_device_reset(struct phy_device *phydev, int value) { mdio_device_reset(&phydev->mdio, value); } #define phydev_err(_phydev, format, args...) \ dev_err(&_phydev->mdio.dev, format, ##args) #define phydev_info(_phydev, format, args...) \ dev_info(&_phydev->mdio.dev, format, ##args) #define phydev_warn(_phydev, format, args...) \ dev_warn(&_phydev->mdio.dev, format, ##args) #define phydev_dbg(_phydev, format, args...) \ dev_dbg(&_phydev->mdio.dev, format, ##args) static inline const char *phydev_name(const struct phy_device *phydev) { return dev_name(&phydev->mdio.dev); } static inline void phy_lock_mdio_bus(struct phy_device *phydev) { mutex_lock(&phydev->mdio.bus->mdio_lock); } static inline void phy_unlock_mdio_bus(struct phy_device *phydev) { mutex_unlock(&phydev->mdio.bus->mdio_lock); } void phy_attached_print(struct phy_device *phydev, const char *fmt, ...) __printf(2, 3); char *phy_attached_info_irq(struct phy_device *phydev) __malloc; void phy_attached_info(struct phy_device *phydev); /* Clause 22 PHY */ int genphy_read_abilities(struct phy_device *phydev); int genphy_setup_forced(struct phy_device *phydev); int genphy_restart_aneg(struct phy_device *phydev); int genphy_check_and_restart_aneg(struct phy_device *phydev, bool restart); int genphy_config_eee_advert(struct phy_device *phydev); int __genphy_config_aneg(struct phy_device *phydev, bool changed); int genphy_aneg_done(struct phy_device *phydev); int genphy_update_link(struct phy_device *phydev); int genphy_read_lpa(struct phy_device *phydev); int genphy_read_status_fixed(struct phy_device *phydev); int genphy_read_status(struct phy_device *phydev); int genphy_suspend(struct phy_device *phydev); int genphy_resume(struct phy_device *phydev); int genphy_loopback(struct phy_device *phydev, bool enable); int genphy_soft_reset(struct phy_device *phydev); irqreturn_t genphy_handle_interrupt_no_ack(struct phy_device *phydev); static inline int genphy_config_aneg(struct phy_device *phydev) { return __genphy_config_aneg(phydev, false); } static inline int genphy_no_config_intr(struct phy_device *phydev) { return 0; } int genphy_read_mmd_unsupported(struct phy_device *phdev, int devad, u16 regnum); int genphy_write_mmd_unsupported(struct phy_device *phdev, int devnum, u16 regnum, u16 val); /* Clause 37 */ int genphy_c37_config_aneg(struct phy_device *phydev); int genphy_c37_read_status(struct phy_device *phydev); /* Clause 45 PHY */ int genphy_c45_restart_aneg(struct phy_device *phydev); int genphy_c45_check_and_restart_aneg(struct phy_device *phydev, bool restart); int genphy_c45_aneg_done(struct phy_device *phydev); int genphy_c45_read_link(struct phy_device *phydev); int genphy_c45_read_lpa(struct phy_device *phydev); int genphy_c45_read_pma(struct phy_device *phydev); int genphy_c45_pma_setup_forced(struct phy_device *phydev); int genphy_c45_an_config_aneg(struct phy_device *phydev); int genphy_c45_an_disable_aneg(struct phy_device *phydev); int genphy_c45_read_mdix(struct phy_device *phydev); int genphy_c45_pma_read_abilities(struct phy_device *phydev); int genphy_c45_read_status(struct phy_device *phydev); int genphy_c45_config_aneg(struct phy_device *phydev); int genphy_c45_loopback(struct phy_device *phydev, bool enable); int genphy_c45_pma_resume(struct phy_device *phydev); int genphy_c45_pma_suspend(struct phy_device *phydev); /* Generic C45 PHY driver */ extern struct phy_driver genphy_c45_driver; /* The gen10g_* functions are the old Clause 45 stub */ int gen10g_config_aneg(struct phy_device *phydev); static inline int phy_read_status(struct phy_device *phydev) { if (!phydev->drv) return -EIO; if (phydev->drv->read_status) return phydev->drv->read_status(phydev); else return genphy_read_status(phydev); } void phy_driver_unregister(struct phy_driver *drv); void phy_drivers_unregister(struct phy_driver *drv, int n); int phy_driver_register(struct phy_driver *new_driver, struct module *owner); int phy_drivers_register(struct phy_driver *new_driver, int n, struct module *owner); void phy_error(struct phy_device *phydev); void phy_state_machine(struct work_struct *work); void phy_queue_state_machine(struct phy_device *phydev, unsigned long jiffies); void phy_trigger_machine(struct phy_device *phydev); void phy_mac_interrupt(struct phy_device *phydev); void phy_start_machine(struct phy_device *phydev); void phy_stop_machine(struct phy_device *phydev); void phy_ethtool_ksettings_get(struct phy_device *phydev, struct ethtool_link_ksettings *cmd); int phy_ethtool_ksettings_set(struct phy_device *phydev, const struct ethtool_link_ksettings *cmd); int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd); int phy_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); int phy_do_ioctl_running(struct net_device *dev, struct ifreq *ifr, int cmd); int phy_disable_interrupts(struct phy_device *phydev); void phy_request_interrupt(struct phy_device *phydev); void phy_free_interrupt(struct phy_device *phydev); void phy_print_status(struct phy_device *phydev); int phy_set_max_speed(struct phy_device *phydev, u32 max_speed); void phy_remove_link_mode(struct phy_device *phydev, u32 link_mode); void phy_advertise_supported(struct phy_device *phydev); void phy_support_sym_pause(struct phy_device *phydev); void phy_support_asym_pause(struct phy_device *phydev); void phy_set_sym_pause(struct phy_device *phydev, bool rx, bool tx, bool autoneg); void phy_set_asym_pause(struct phy_device *phydev, bool rx, bool tx); bool phy_validate_pause(struct phy_device *phydev, struct ethtool_pauseparam *pp); void phy_get_pause(struct phy_device *phydev, bool *tx_pause, bool *rx_pause); s32 phy_get_internal_delay(struct phy_device *phydev, struct device *dev, const int *delay_values, int size, bool is_rx); void phy_resolve_pause(unsigned long *local_adv, unsigned long *partner_adv, bool *tx_pause, bool *rx_pause); int phy_register_fixup(const char *bus_id, u32 phy_uid, u32 phy_uid_mask, int (*run)(struct phy_device *)); int phy_register_fixup_for_id(const char *bus_id, int (*run)(struct phy_device *)); int phy_register_fixup_for_uid(u32 phy_uid, u32 phy_uid_mask, int (*run)(struct phy_device *)); int phy_unregister_fixup(const char *bus_id, u32 phy_uid, u32 phy_uid_mask); int phy_unregister_fixup_for_id(const char *bus_id); int phy_unregister_fixup_for_uid(u32 phy_uid, u32 phy_uid_mask); int phy_init_eee(struct phy_device *phydev, bool clk_stop_enable); int phy_get_eee_err(struct phy_device *phydev); int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data); int phy_ethtool_get_eee(struct phy_device *phydev, struct ethtool_eee *data); int phy_ethtool_set_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol); void phy_ethtool_get_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol); int phy_ethtool_get_link_ksettings(struct net_device *ndev, struct ethtool_link_ksettings *cmd); int phy_ethtool_set_link_ksettings(struct net_device *ndev, const struct ethtool_link_ksettings *cmd); int phy_ethtool_nway_reset(struct net_device *ndev); int phy_package_join(struct phy_device *phydev, int addr, size_t priv_size); void phy_package_leave(struct phy_device *phydev); int devm_phy_package_join(struct device *dev, struct phy_device *phydev, int addr, size_t priv_size); #if IS_ENABLED(CONFIG_PHYLIB) int __init mdio_bus_init(void); void mdio_bus_exit(void); #endif int phy_ethtool_get_strings(struct phy_device *phydev, u8 *data); int phy_ethtool_get_sset_count(struct phy_device *phydev); int phy_ethtool_get_stats(struct phy_device *phydev, struct ethtool_stats *stats, u64 *data); static inline int phy_package_read(struct phy_device *phydev, u32 regnum) { struct phy_package_shared *shared = phydev->shared; if (!shared) return -EIO; return mdiobus_read(phydev->mdio.bus, shared->addr, regnum); } static inline int __phy_package_read(struct phy_device *phydev, u32 regnum) { struct phy_package_shared *shared = phydev->shared; if (!shared) return -EIO; return __mdiobus_read(phydev->mdio.bus, shared->addr, regnum); } static inline int phy_package_write(struct phy_device *phydev, u32 regnum, u16 val) { struct phy_package_shared *shared = phydev->shared; if (!shared) return -EIO; return mdiobus_write(phydev->mdio.bus, shared->addr, regnum, val); } static inline int __phy_package_write(struct phy_device *phydev, u32 regnum, u16 val) { struct phy_package_shared *shared = phydev->shared; if (!shared) return -EIO; return __mdiobus_write(phydev->mdio.bus, shared->addr, regnum, val); } static inline bool __phy_package_set_once(struct phy_device *phydev, unsigned int b) { struct phy_package_shared *shared = phydev->shared; if (!shared) return false; return !test_and_set_bit(b, &shared->flags); } static inline bool phy_package_init_once(struct phy_device *phydev) { return __phy_package_set_once(phydev, PHY_SHARED_F_INIT_DONE); } static inline bool phy_package_probe_once(struct phy_device *phydev) { return __phy_package_set_once(phydev, PHY_SHARED_F_PROBE_DONE); } extern struct bus_type mdio_bus_type; struct mdio_board_info { const char *bus_id; char modalias[MDIO_NAME_SIZE]; int mdio_addr; const void *platform_data; }; #if IS_ENABLED(CONFIG_MDIO_DEVICE) int mdiobus_register_board_info(const struct mdio_board_info *info, unsigned int n); #else static inline int mdiobus_register_board_info(const struct mdio_board_info *i, unsigned int n) { return 0; } #endif /** * phy_module_driver() - Helper macro for registering PHY drivers * @__phy_drivers: array of PHY drivers to register * @__count: Numbers of members in array * * Helper macro for PHY drivers which do not do anything special in module * init/exit. Each module may only use this macro once, and calling it * replaces module_init() and module_exit(). */ #define phy_module_driver(__phy_drivers, __count) \ static int __init phy_module_init(void) \ { \ return phy_drivers_register(__phy_drivers, __count, THIS_MODULE); \ } \ module_init(phy_module_init); \ static void __exit phy_module_exit(void) \ { \ phy_drivers_unregister(__phy_drivers, __count); \ } \ module_exit(phy_module_exit) #define module_phy_driver(__phy_drivers) \ phy_module_driver(__phy_drivers, ARRAY_SIZE(__phy_drivers)) bool phy_driver_is_genphy(struct phy_device *phydev); bool phy_driver_is_genphy_10g(struct phy_device *phydev); #endif /* __PHY_H */
Close