/usr/src/kernels/4.18.0-553.121.1.el8_10.x86_64/include/linux
NameSizeModeActions
amba/-0755rm
avf/-0755rm
bcma/-0755rm
byteorder/-0755rm
can/-0755rm
ceph/-0755rm
clk/-0755rm
crush/-0755rm
decompress/-0755rm
dma/-0755rm
dsa/-0755rm
extcon/-0755rm
firmware/-0755rm
fpga/-0755rm
fsl/-0755rm
gpio/-0755rm
hsi/-0755rm
iio/-0755rm
input/-0755rm
irqchip/-0755rm
isdn/-0755rm
lockd/-0755rm
mailbox/-0755rm
mfd/-0755rm
mlx4/-0755rm
mlx5/-0755rm
mmc/-0755rm
mtd/-0755rm
mux/-0755rm
net/-0755rm
netfilter/-0755rm
netfilter_arp/-0755rm
netfilter_bridge/-0755rm
netfilter_ipv4/-0755rm
netfilter_ipv6/-0755rm
pcs/-0755rm
perf/-0755rm
phy/-0755rm
pinctrl/-0755rm
platform_data/-0755rm
power/-0755rm
qed/-0755rm
raid/-0755rm
regulator/-0755rm
remoteproc/-0755rm
reset/-0755rm
rpmsg/-0755rm
rtc/-0755rm
sched/-0755rm
soc/-0755rm
soundwire/-0755rm
spi/-0755rm
ssb/-0755rm
sunrpc/-0755rm
ulpi/-0755rm
unaligned/-0755rm
usb/-0755rm
uwb/-0755rm
wimax/-0755rm
8250_pci.h10380644editdlrm
a.out.h3540644editdlrm
acct.h25510644editdlrm
acpi.h431300644editdlrm
acpi_apmt.h3670644editdlrm
acpi_dma.h33000644editdlrm
acpi_iort.h32350644editdlrm
acpi_pmtmr.h6740644editdlrm
adb.h18320644editdlrm
adfs_fs.h5740644editdlrm
adxl.h3100644editdlrm
aer.h18220644editdlrm
agpgart.h39080644editdlrm
agp_backend.h35340644editdlrm
ahci-remap.h6070644editdlrm
ahci_platform.h17720644editdlrm
aio.h6510644editdlrm
alarmtimer.h18750644editdlrm
altera_jtaguart.h3790644editdlrm
altera_uart.h3970644editdlrm
amd-iommu.h69310644editdlrm
amd-pstate.h33560644editdlrm
anon_inodes.h4940644editdlrm
aperture.h16190644editdlrm
apm-emulation.h15750644editdlrm
apm_bios.h27460644editdlrm
apple-gmux.h14590644editdlrm
apple_bl.h4980644editdlrm
arch_topology.h19830644editdlrm
arm-cci.h20580644editdlrm
arm-smccc.h160660644editdlrm
arm_sdei.h26410644editdlrm
ascii85.h5320644editdlrm
asn1.h20390644editdlrm
asn1_ber_bytecode.h27830644editdlrm
asn1_decoder.h6750644editdlrm
assoc_array.h31560644editdlrm
assoc_array_priv.h56300644editdlrm
async.h45910644editdlrm
async_tx.h74870644editdlrm
ata.h339800644editdlrm
atalk.h45500644editdlrm
ata_platform.h7290644editdlrm
ath9k_platform.h14770644editdlrm
atm.h2870644editdlrm
atmdev.h104570644editdlrm
atmel-mci.h14290644editdlrm
atmel-ssc.h99710644editdlrm
atmel_pdc.h15020644editdlrm
atmel_tc.h116000644editdlrm
atm_suni.h2530644editdlrm
atm_tcp.h5110644editdlrm
atomic.h375460644editdlrm
attribute_container.h27990644editdlrm
audit.h203320644editdlrm
audit_arch.h5590644editdlrm
auto_dev-ioctl.h4540644editdlrm
auto_fs.h4360644editdlrm
auxiliary_bus.h27870644editdlrm
auxvec.h3040644editdlrm
average.h24810644editdlrm
b1pcmcia.h6660644editdlrm
backing-dev-defs.h103270644editdlrm
backing-dev.h122600644editdlrm
backlight.h134470644editdlrm
badblocks.h21880644editdlrm
balloon_compaction.h67450644editdlrm
bcd.h5590644editdlrm
bch.h26600644editdlrm
bcm47xx_nvram.h12470644editdlrm
bcm47xx_sprom.h6000644editdlrm
bcm47xx_wdt.h5550644editdlrm
bcm963xx_nvram.h30360644editdlrm
bcm963xx_tag.h36850644editdlrm
binfmts.h54430644editdlrm
bio.h206900644editdlrm
bitfield.h58990644editdlrm
bitmap.h214960644editdlrm
bitops.h88700644editdlrm
bitrev.h25410644editdlrm
bits.h15120644editdlrm
bit_spinlock.h23600644editdlrm
blk-cgroup.h227280644editdlrm
blk-mq-pci.h2690644editdlrm
blk-mq-rdma.h2340644editdlrm
blk-mq-virtio.h2930644editdlrm
blk-mq.h160740644editdlrm
blk-pm.h7170644editdlrm
blkdev.h588980644editdlrm
blkpg.h4360644editdlrm
blktrace_api.h37770644editdlrm
blk_types.h153420644editdlrm
blockgroup_lock.h8100644editdlrm
bma150.h19380644editdlrm
bottom_half.h8030644editdlrm
bpf-cgroup.h198180644editdlrm
bpf-netns.h15590644editdlrm
bpf.h728240644editdlrm
bpfilter.h7910644editdlrm
bpfptr.h17330644editdlrm
bpf_lirc.h6980644editdlrm
bpf_local_storage.h53490644editdlrm
bpf_lsm.h14310644editdlrm
bpf_trace.h1660644editdlrm
bpf_types.h53950644editdlrm
bpf_verifier.h187910644editdlrm
brcmphy.h140230644editdlrm
bsearch.h2750644editdlrm
bsg-lib.h24550644editdlrm
bsg.h10940644editdlrm
btf.h73630644editdlrm
btf_ids.h51740644editdlrm
btree-128.h27370644editdlrm
btree-type.h39910644editdlrm
btree.h69990644editdlrm
btrfs.h1450644editdlrm
buffer_head.h143790644editdlrm
bug.h19670644editdlrm
buildid.h2480644editdlrm
build_bug.h30660644editdlrm
bvec.h41190644editdlrm
c2port.h15290644editdlrm
cache.h21820644editdlrm
cacheinfo.h47960644editdlrm
capability.h81790644editdlrm
cb710.h58270644editdlrm
cciss_ioctl.h10530644editdlrm
ccp.h186970644editdlrm
cc_platform.h31400644editdlrm
cdev.h8450644editdlrm
cdrom.h91930644editdlrm
cfag12864b.h14990644editdlrm
cgroup-defs.h272420644editdlrm
cgroup.h288800644editdlrm
cgroup_rdma.h13580644editdlrm
cgroup_subsys.h12590644editdlrm
circ_buf.h11200644editdlrm
cleancache.h39820644editdlrm
cleanup.h142150644editdlrm
clk-provider.h375420644editdlrm
clk.h251570644editdlrm
clkdev.h16980644editdlrm
clockchips.h74450644editdlrm
clocksource.h91880644editdlrm
clock_cooling.h21060644editdlrm
cm4000_cs.h1990644editdlrm
cma.h12120644editdlrm
cmdline-parser.h12380644editdlrm
cnt32_to_63.h36910644editdlrm
cn_proc.h18900644editdlrm
coda.h22440644editdlrm
coda_psdev.h26920644editdlrm
compaction.h76540644editdlrm
compat.h357390644editdlrm
compat_time.h4990644editdlrm
compiler-clang.h24460644editdlrm
compiler-gcc.h57560644editdlrm
compiler-intel.h9490644editdlrm
compiler.h157180644editdlrm
compiler_attributes.h106000644editdlrm
compiler_types.h69310644editdlrm
completion.h42010644editdlrm
component.h44590644editdlrm
concap.h37780644editdlrm
configfs.h94410644editdlrm
connector.h24900644editdlrm
console.h75040644editdlrm
consolemap.h10680644editdlrm
console_struct.h69660644editdlrm
const.h4210644editdlrm
container.h6680644editdlrm
container_of.h12780644editdlrm
context_tracking.h51680644editdlrm
context_tracking_state.h15290644editdlrm
cookie.h12540644editdlrm
cordic.h17940644editdlrm
coredump.h7970644editdlrm
coresight-pmu.h9890644editdlrm
coresight-stm.h1520644editdlrm
coresight.h96760644editdlrm
counter.h154970644editdlrm
counter_enum.h14630644editdlrm
count_zeros.h16600644editdlrm
cper.h168260644editdlrm
cpu.h79590644editdlrm
cpufeature.h18820644editdlrm
cpufreq.h342480644editdlrm
cpuhotplug.h142690644editdlrm
cpuidle.h130610644editdlrm
cpuidle_haltpoll.h3120644editdlrm
cpumask.h297210644editdlrm
cpuset.h82970644editdlrm
cpu_cooling.h23890644editdlrm
cpu_pm.h28500644editdlrm
cpu_rmap.h19020644editdlrm
crash_core.h32920644editdlrm
crash_dump.h51930644editdlrm
crc-ccitt.h6090644editdlrm
crc-itu-t.h6130644editdlrm
crc-t10dif.h4530644editdlrm
crc4.h1920644editdlrm
crc7.h3160644editdlrm
crc8.h37470644editdlrm
crc16.h6220644editdlrm
crc32.h28940644editdlrm
crc32c.h3310644editdlrm
crc32poly.h6100644editdlrm
cred.h127490644editdlrm
crypto.h593930644editdlrm
cryptohash.h5460644editdlrm
cs5535.h64260644editdlrm
ctype.h17910644editdlrm
cuda.h5010644editdlrm
cxl_err.h4680644editdlrm
cyclades.h106070644editdlrm
damon.h196160644editdlrm
davinci_emac.h11500644editdlrm
dax.h75530644editdlrm
dca.h26980644editdlrm
dcache.h196210644editdlrm
dccp.h109890644editdlrm
dcookies.h13290644editdlrm
debugfs.h119210644editdlrm
debugobjects.h39880644editdlrm
debug_locks.h16270644editdlrm
delay.h23350644editdlrm
delayacct.h62850644editdlrm
delayed_call.h7090644editdlrm
dell-led.h1280644editdlrm
devcoredump.h28490644editdlrm
devfreq-event.h57780644editdlrm
devfreq.h129870644editdlrm
devfreq_cooling.h36080644editdlrm
device-mapper.h195290644editdlrm
device.h672750644editdlrm
device_cgroup.h16800644editdlrm
devm-helpers.h27400644editdlrm
devpts_fs.h13140644editdlrm
dev_printk.h77310644editdlrm
digsig.h13790644editdlrm
dim.h89510644editdlrm
dio.h112290644editdlrm
dirent.h2160644editdlrm
dlm.h72400644editdlrm
dlm_plock.h6780644editdlrm
dm-bufio.h45740644editdlrm
dm-dirty-log.h40380644editdlrm
dm-io.h19800644editdlrm
dm-kcopyd.h30130644editdlrm
dm-region-hash.h31820644editdlrm
dm9000.h11360644editdlrm
dma-buf.h215470644editdlrm
dma-contiguous.h50700644editdlrm
dma-direct.h36810644editdlrm
dma-direction.h4070644editdlrm
dma-fence-array.h29830644editdlrm
dma-fence-chain.h35760644editdlrm
dma-fence-unwrap.h22980644editdlrm
dma-fence.h211620644editdlrm
dma-iommu.h30200644editdlrm
dma-map-ops.h108630644editdlrm
dma-mapping.h231700644editdlrm
dma-resv.h172450644editdlrm
dmaengine.h548910644editdlrm
dmapool.h18320644editdlrm
dmar.h87910644editdlrm
dmi.h43750644editdlrm
dnotify.h10470644editdlrm
dns_resolver.h13390644editdlrm
dqblk_qtree.h22380644editdlrm
dqblk_v1.h3270644editdlrm
dqblk_v2.h4060644editdlrm
drbd.h109230644editdlrm
drbd_genl.h220100644editdlrm
drbd_genl_api.h18080644editdlrm
drbd_limits.h80030644editdlrm
ds2782_battery.h1580644editdlrm
dtlk.h35840644editdlrm
dw_apb_timer.h17430644editdlrm
dynamic_debug.h58310644editdlrm
dynamic_queue_limits.h38120644editdlrm
earlycpio.h3590644editdlrm
ecryptfs.h39150644editdlrm
edac.h207180644editdlrm
edd.h14690644editdlrm
edma.h8070644editdlrm
eeprom_93cx6.h30080644editdlrm
eeprom_93xx46.h7760644editdlrm
efi-bgrt.h6440644editdlrm
efi.h628130644editdlrm
efs_vh.h15850644editdlrm
eisa.h30310644editdlrm
elevator.h60590644editdlrm
elf-fdpic.h22370644editdlrm
elf-randomize.h5830644editdlrm
elf.h15650644editdlrm
elfcore-compat.h12670644editdlrm
elfcore.h21600644editdlrm
elfnote.h36250644editdlrm
enclosure.h47110644editdlrm
energy_model.h59940644editdlrm
err.h15830644editdlrm
errname.h2830644editdlrm
errno.h14240644editdlrm
error-injection.h6070644editdlrm
errqueue.h5240644editdlrm
errseq.h3820644editdlrm
etherdevice.h169170644editdlrm
ethtool.h355800644editdlrm
ethtool_netlink.h19200644editdlrm
eventfd.h21670644editdlrm
eventpoll.h24570644editdlrm
evm.h29850644editdlrm
export.h36970644editdlrm
exportfs.h76920644editdlrm
ext2_fs.h9670644editdlrm
extable.h13090644editdlrm
extcon-provider.h44310644editdlrm
extcon.h102700644editdlrm
f2fs_fs.h185260644editdlrm
f75375s.h5410644editdlrm
falloc.h17190644editdlrm
fanotify.h23360644editdlrm
fault-inject.h19750644editdlrm
fb.h287120644editdlrm
fbcon.h21360644editdlrm
fcdevice.h9880644editdlrm
fcntl.h18080644editdlrm
fd.h4900644editdlrm
fddidevice.h10440644editdlrm
fdtable.h36160644editdlrm
fec.h6090644editdlrm
file.h31470644editdlrm
filter.h427810644editdlrm
fips.h1670644editdlrm
firewire.h138680644editdlrm
firmware-map.h13510644editdlrm
firmware.h58740644editdlrm
fixp-arith.h45160644editdlrm
flat.h16530644editdlrm
flex_array.h44120644editdlrm
flex_proportions.h28810644editdlrm
fmc-sdb.h13190644editdlrm
fmc.h98770644editdlrm
font.h15980644editdlrm
fortify-string.h165500644editdlrm
freezer.h92570644editdlrm
frontswap.h31210644editdlrm
fs.h1177400644editdlrm
fscache-cache.h192540644editdlrm
fscache.h295770644editdlrm
fscrypt.h94410644editdlrm
fscrypt_notsupp.h50770644editdlrm
fscrypt_supp.h74210644editdlrm
fsi.h24240644editdlrm
fsl-diu-fb.h41790644editdlrm
fsldma.h3980644editdlrm
fsl_devices.h44300644editdlrm
fsl_hypervisor.h28240644editdlrm
fsl_ifc.h256580644editdlrm
fsnotify.h77960644editdlrm
fsnotify_backend.h205950644editdlrm
fs_context.h90970644editdlrm
fs_enet_pd.h34570644editdlrm
fs_parser.h47500644editdlrm
fs_pin.h6190644editdlrm
fs_stack.h8110644editdlrm
fs_struct.h17510644editdlrm
fs_uart_pd.h15230644editdlrm
ftrace.h336190644editdlrm
ftrace_irq.h11630644editdlrm
futex.h24970644editdlrm
fwnode.h75790644editdlrm
gameport.h56950644editdlrm
gcd.h1930644editdlrm
genalloc.h79500644editdlrm
generic-radix-tree.h66710644editdlrm
genetlink.h13790644editdlrm
genhd.h160760644editdlrm
genl_magic_func.h118690644editdlrm
genl_magic_struct.h78050644editdlrm
getcpu.h6410644editdlrm
gfp.h242080644editdlrm
glob.h2560644editdlrm
goldfish.h6050644editdlrm
gpio-pxa.h5710644editdlrm
gpio.h54780644editdlrm
gpio_keys.h17820644editdlrm
hardirq.h32640644editdlrm
hash.h29980644editdlrm
hashtable.h68050644editdlrm
hdlc.h34130644editdlrm
hdlcdrv.h64700644editdlrm
hdmi.h128510644editdlrm
hid-debug.h14580644editdlrm
hid-roccat.h4840644editdlrm
hid-sensor-hub.h91900644editdlrm
hid-sensor-ids.h76170644editdlrm
hid.h383390644editdlrm
hidden.h9660644editdlrm
hiddev.h14580644editdlrm
hidraw.h11460644editdlrm
highmem-internal.h49520644editdlrm
highmem.h82350644editdlrm
highuid.h31940644editdlrm
hil.h188570644editdlrm
hil_mlc.h52490644editdlrm
hippidevice.h12630644editdlrm
hmm.h46560644editdlrm
host1x.h86180644editdlrm
hpet.h26150644editdlrm
hp_sdc.h143520644editdlrm
hrtimer.h166510644editdlrm
hrtimer_defs.h6600644editdlrm
htcpld.h6170644editdlrm
hugetlb.h274960644editdlrm
hugetlb_cgroup.h70560644editdlrm
hugetlb_inline.h3740644editdlrm
huge_mm.h157430644editdlrm
hwmon-sysfs.h20240644editdlrm
hwmon-vid.h15180644editdlrm
hwmon.h140840644editdlrm
hwspinlock.h130440644editdlrm
hw_breakpoint.h44050644editdlrm
hw_random.h23770644editdlrm
hyperv.h500100644editdlrm
hypervisor.h7480644editdlrm
i2c-algo-bit.h23220644editdlrm
i2c-algo-pca.h25990644editdlrm
i2c-algo-pcf.h19260644editdlrm
i2c-dev.h3710644editdlrm
i2c-mux.h16680644editdlrm
i2c-pxa.h4380644editdlrm
i2c-smbus.h19910644editdlrm
i2c.h378740644editdlrm
i8042.h21910644editdlrm
i8253.h8090644editdlrm
icmp.h10850644editdlrm
icmpv6.h17320644editdlrm
ide.h474030644editdlrm
idr.h97150644editdlrm
ieee80211.h1530580644editdlrm
ieee802154.h117800644editdlrm
if_arp.h19000644editdlrm
if_bridge.h53800644editdlrm
if_eql.h11000644editdlrm
if_ether.h15060644editdlrm
if_fddi.h35260644editdlrm
if_frad.h29370644editdlrm
if_link.h5920644editdlrm
if_ltalk.h1880644editdlrm
if_macvlan.h27570644editdlrm
if_phonet.h3190644editdlrm
if_pppol2tp.h7270644editdlrm
if_pppox.h29790644editdlrm
if_tap.h22880644editdlrm
if_team.h82970644editdlrm
if_tun.h20500644editdlrm
if_tunnel.h4090644editdlrm
if_vlan.h211240644editdlrm
igmp.h47530644editdlrm
ihex.h20010644editdlrm
ima.h34960644editdlrm
imx-media.h8110644editdlrm
in.h25920644editdlrm
in6.h18930644editdlrm
indirect_call_wrapper.h21910644editdlrm
inet.h29180644editdlrm
inetdevice.h86580644editdlrm
inet_diag.h26060644editdlrm
init.h97780644editdlrm
initrd.h7890644editdlrm
init_ohci1394_dma.h1960644editdlrm
init_task.h14070644editdlrm
inotify.h7130644editdlrm
input-polldev.h20740644editdlrm
input.h190020644editdlrm
instrumented.h28680644editdlrm
integrity.h10740644editdlrm
intel-iommu.h320630644editdlrm
intel-ish-client-if.h40910644editdlrm
intel-pti.h16000644editdlrm
intel_rapl.h42650644editdlrm
intel_th.h25010644editdlrm
interrupt.h247770644editdlrm
interval_tree.h8310644editdlrm
interval_tree_generic.h75130644editdlrm
io-64-nonatomic-hi-lo.h24560644editdlrm
io-64-nonatomic-lo-hi.h24560644editdlrm
io-mapping.h52220644editdlrm
io-pgtable.h84980644editdlrm
io.h62010644editdlrm
ioasid.h21740644editdlrm
ioc3.h32140644editdlrm
ioc4.h59200644editdlrm
iocontext.h48780644editdlrm
iomap.h138930644editdlrm
iommu-helper.h11460644editdlrm
iommu.h370000644editdlrm
iopoll.h81750644editdlrm
ioport.h126860644editdlrm
ioprio.h24640644editdlrm
iosys-map.h153110644editdlrm
iova.h42650644editdlrm
ip.h12350644editdlrm
ipack.h90620644editdlrm
ipc.h6130644editdlrm
ipc_namespace.h46820644editdlrm
ipmi-fru.h36940644editdlrm
ipmi.h116330644editdlrm
ipmi_smi.h110220644editdlrm
ipv6.h92830644editdlrm
ipv6_route.h5940644editdlrm
irq.h417830644editdlrm
irqbypass.h36810644editdlrm
irqchip.h15970644editdlrm
irqdesc.h84600644editdlrm
irqdomain.h206450644editdlrm
irqflags.h81050644editdlrm
irqhandler.h3620644editdlrm
irqnr.h8560644editdlrm
irqreturn.h5030644editdlrm
irq_cpustat.h8450644editdlrm
irq_poll.h5750644editdlrm
irq_sim.h9710644editdlrm
irq_work.h19240644editdlrm
isa.h21660644editdlrm
isapnp.h38960644editdlrm
iscsi_boot_sysfs.h41850644editdlrm
iscsi_ibft.h13060644editdlrm
isdn.h235450644editdlrm
isdnif.h197230644editdlrm
isdn_divertif.h13010644editdlrm
isdn_ppp.h67970644editdlrm
isicom.h15280644editdlrm
ism.h22730644editdlrm
iversion.h126700644editdlrm
jbd2.h479710644editdlrm
jhash.h47350644editdlrm
jiffies.h163400644editdlrm
journal-head.h29340644editdlrm
joystick.h4370644editdlrm
jump_label.h153760644editdlrm
jump_label_ratelimit.h28670644editdlrm
jz4740-adc.h10230644editdlrm
jz4780-nemc.h11850644editdlrm
kallsyms.h43350644editdlrm
kasan-checks.h14950644editdlrm
kasan.h126780644editdlrm
kbd_diacr.h1980644editdlrm
kbd_kern.h39310644editdlrm
kbuild.h3800644editdlrm
kconfig.h24810644editdlrm
kcore.h8910644editdlrm
kcov.h24630644editdlrm
kcsan-checks.h88590644editdlrm
kcsan.h19480644editdlrm
kdb.h74780644editdlrm
kdebug.h4870644editdlrm
kdev_t.h17440644editdlrm
kernel-page-flags.h5050644editdlrm
kernel.h207590644editdlrm
kernelcapi.h45520644editdlrm
kernel_stat.h30310644editdlrm
kernfs.h193360644editdlrm
kern_levels.h16110644editdlrm
kexec.h108960644editdlrm
key-type.h65830644editdlrm
key.h131490644editdlrm
keyboard.h6650644editdlrm
kfifo.h254310644editdlrm
kgdb.h115690644editdlrm
khugepaged.h28320644editdlrm
klist.h19260644editdlrm
kmemleak.h39540644editdlrm
kmod.h17520644editdlrm
kmsg_dump.h26270644editdlrm
kobject.h77270644editdlrm
kobject_ns.h19340644editdlrm
kobj_map.h5450644editdlrm
kprobes.h132220644editdlrm
kref.h33610644editdlrm
ks0108.h9600644editdlrm
ks8842.h12230644editdlrm
ks8851_mll.h10630644editdlrm
ksm.h27530644editdlrm
kstrtox.h67510644editdlrm
kthread.h79240644editdlrm
ktime.h66070644editdlrm
kvm_dirty_ring.h26330644editdlrm
kvm_host.h655830644editdlrm
kvm_irqfd.h24580644editdlrm
kvm_para.h4020644editdlrm
kvm_types.h32640644editdlrm
l2tp.h2610644editdlrm
lapb.h17520644editdlrm
latencytop.h12070644editdlrm
lcd.h38670644editdlrm
lcm.h2750644editdlrm
led-class-flash.h56190644editdlrm
led-lm3530.h37930644editdlrm
leds-bd2802.h6420644editdlrm
leds-lp3944.h10990644editdlrm
leds-lp3952.h25590644editdlrm
leds-pca9532.h10310644editdlrm
leds-regulator.h13170644editdlrm
leds-tca6507.h10420644editdlrm
leds.h156230644editdlrm
leds_pwm.h4070644editdlrm
libata.h685400644editdlrm
libfdt.h2020644editdlrm
libfdt_env.h4910644editdlrm
libgcc.h10990644editdlrm
libnvdimm.h98730644editdlrm
libps2.h20770644editdlrm
license.h3740644editdlrm
lightnvm.h119800644editdlrm
limits.h7150644editdlrm
linear_range.h16450644editdlrm
linkage.h93310644editdlrm
linkmode.h25590644editdlrm
linux_logo.h19560644editdlrm
lis3lv02d.h51250644editdlrm
list.h321050644editdlrm
list_bl.h49050644editdlrm
list_lru.h81930644editdlrm
list_nulls.h43220644editdlrm
list_sort.h3070644editdlrm
livepatch.h91090644editdlrm
llc.h7490644editdlrm
llist.h93680644editdlrm
local_lock.h13620644editdlrm
local_lock_internal.h34990644editdlrm
lockdep.h215850644editdlrm
lockdep_types.h53080644editdlrm
lockref.h14400644editdlrm
log2.h65420644editdlrm
logic_pio.h32570644editdlrm
lp.h28270644editdlrm
lru_cache.h127220644editdlrm
lsm_audit.h27850644editdlrm
lsm_hooks.h707950644editdlrm
lsm_hook_defs.h201670644editdlrm
lz4.h270720644editdlrm
lzo.h14040644editdlrm
mailbox_client.h18370644editdlrm
mailbox_controller.h55020644editdlrm
maple.h27750644editdlrm
marvell_phy.h16910644editdlrm
math.h51850644editdlrm
math64.h76620644editdlrm
max17040_battery.h4740644editdlrm
mbcache.h22080644editdlrm
mbus.h31680644editdlrm
mc6821.h12090644editdlrm
mc146818rtc.h45670644editdlrm
mcb.h39750644editdlrm
mdev.h58590644editdlrm
mdio-bitbang.h11490644editdlrm
mdio-gpio.h1770644editdlrm
mdio-mux.h10210644editdlrm
mdio.h137300644editdlrm
mei_aux.h9290644editdlrm
mei_cl_bus.h41960644editdlrm
memblock.h210090644editdlrm
memcontrol.h462430644editdlrm
memfd.h3650644editdlrm
memory.h40800644editdlrm
memory_hotplug.h109810644editdlrm
mempolicy.h80840644editdlrm
mempool.h34300644editdlrm
memregion.h4170644editdlrm
memremap.h78180644editdlrm
memstick.h99820644editdlrm
mem_encrypt.h9260644editdlrm
mhi.h269080644editdlrm
mhi_ep.h98660644editdlrm
micrel_phy.h15220644editdlrm
microchipphy.h33100644editdlrm
mic_bus.h32720644editdlrm
migrate.h62780644editdlrm
migrate_mode.h7580644editdlrm
mii.h162830644editdlrm
mii_timestamper.h36530644editdlrm
minmax.h63730644editdlrm
min_heap.h33770644editdlrm
miscdevice.h28640644editdlrm
misc_cgroup.h30070644editdlrm
mISDNdsp.h12170644editdlrm
mISDNhw.h59210644editdlrm
mISDNif.h152760644editdlrm
mm-arch-hooks.h6790644editdlrm
mm.h1015570644editdlrm
mman.h33570644editdlrm
mmap_lock.h20860644editdlrm
mmdebug.h23790644editdlrm
mmiotrace.h31220644editdlrm
mmu_context.h4650644editdlrm
mmu_notifier.h284620644editdlrm
mmzone.h516150644editdlrm
mm_inline.h30590644editdlrm
mm_types.h268440644editdlrm
mm_types_task.h24570644editdlrm
mnt_namespace.h5470644editdlrm
module.h236590644editdlrm
moduleloader.h31700644editdlrm
moduleparam.h202750644editdlrm
module_signature.h12500644editdlrm
mod_devicetable.h225130644editdlrm
mount.h37080644editdlrm
mpage.h7370644editdlrm
mpi.h33810644editdlrm
mpls.h3940644editdlrm
mpls_iptunnel.h1780644editdlrm
mroute.h19980644editdlrm
mroute6.h24490644editdlrm
mroute_base.h124330644editdlrm
msdos_fs.h2730644editdlrm
msdos_partition.h16550644editdlrm
msg.h3950644editdlrm
msi.h156650644editdlrm
mutex.h78370644editdlrm
mv643xx.h536570644editdlrm
mv643xx_eth.h20010644editdlrm
mv643xx_i2c.h5450644editdlrm
mvebu-pmsu.h5200644editdlrm
mxm-wmi.h10780644editdlrm
namei.h39460644editdlrm
nd.h76010644editdlrm
net.h124050644editdlrm
netdevice.h1695260644editdlrm
netdev_features.h105190644editdlrm
netfilter.h126770644editdlrm
netfilter_bridge.h19770644editdlrm
netfilter_defs.h4860644editdlrm
netfilter_ingress.h14720644editdlrm
netfilter_ipv4.h10770644editdlrm
netfilter_ipv6.h36980644editdlrm
netlink.h91700644editdlrm
netpoll.h26010644editdlrm
nfs.h11450644editdlrm
nfs3.h2600644editdlrm
nfs4.h195270644editdlrm
nfsacl.h14350644editdlrm
nfs_fs.h185780644editdlrm
nfs_fs_i.h3080644editdlrm
nfs_fs_sb.h105370644editdlrm
nfs_iostat.h42850644editdlrm
nfs_page.h69910644editdlrm
nfs_xdr.h425020644editdlrm
nitro_enclaves.h2670644editdlrm
nl802154.h43360644editdlrm
nls.h31620644editdlrm
nmi.h67580644editdlrm
node.h43990644editdlrm
nodemask.h174400644editdlrm
nospec.h21870644editdlrm
notifier.h84180644editdlrm
nsc_gpio.h14590644editdlrm
nsproxy.h26760644editdlrm
ns_common.h3010644editdlrm
ntb.h536910644editdlrm
ntb_transport.h38920644editdlrm
nubus.h56740644editdlrm
numa.h10040644editdlrm
nvme-fc-driver.h472160644editdlrm
nvme-fc.h99550644editdlrm
nvme-rdma.h25350644editdlrm
nvme-tcp.h45380644editdlrm
nvme.h391280644editdlrm
nvmem-consumer.h44540644editdlrm
nvmem-provider.h32670644editdlrm
nvram.h4950644editdlrm
n_r3964.h41550644editdlrm
objagg.h19830644editdlrm
objtool.h11550644editdlrm
of.h433070644editdlrm
of_address.h46030644editdlrm
of_clk.h7530644editdlrm
of_device.h32270644editdlrm
of_dma.h23530644editdlrm
of_fdt.h41880644editdlrm
of_gpio.h40530644editdlrm
of_graph.h36360644editdlrm
of_iommu.h5050644editdlrm
of_irq.h36910644editdlrm
of_mdio.h32130644editdlrm
of_net.h8870644editdlrm
of_pci.h9150644editdlrm
of_pdt.h12220644editdlrm
of_platform.h39740644editdlrm
of_reserved_mem.h24030644editdlrm
oid_registry.h39660644editdlrm
olpc-ec.h11040644editdlrm
omap-dma.h107540644editdlrm
omap-dmaengine.h5830644editdlrm
omap-gpmc.h30110644editdlrm
omap-iommu.h6850644editdlrm
omap-mailbox.h7770644editdlrm
omapfb.h12460644editdlrm
once.h18800644editdlrm
oom.h33410644editdlrm
openvswitch.h10190644editdlrm
oprofile.h62460644editdlrm
osq_lock.h10660644editdlrm
overflow.h122690644editdlrm
padata.h74310644editdlrm
page-flags-layout.h35010644editdlrm
page-flags.h281560644editdlrm
page-isolation.h21240644editdlrm
pageblock-flags.h33570644editdlrm
pagemap.h246490644editdlrm
pagevec.h23830644editdlrm
pagewalk.h41670644editdlrm
page_counter.h34470644editdlrm
page_ext.h17220644editdlrm
page_idle.h26830644editdlrm
page_owner.h23610644editdlrm
page_ref.h53610644editdlrm
page_reporting.h8340644editdlrm
parman.h29340644editdlrm
parport.h182730644editdlrm
parport_pc.h67130644editdlrm
parser.h11410644editdlrm
pata_arasan_cf_data.h12500644editdlrm
patchkey.h7570644editdlrm
path.h5720644editdlrm
pch_dma.h9990644editdlrm
pci-acpi.h42800644editdlrm
pci-ats.h18020644editdlrm
pci-dma-compat.h37500644editdlrm
pci-ecam.h33580644editdlrm
pci-ep-cfs.h9570644editdlrm
pci-epc.h73360644editdlrm
pci-epf.h48680644editdlrm
pci-p2pdma.h40490644editdlrm
pci.h917980644editdlrm
pci_hotplug.h47520644editdlrm
pci_ids.h1282480644editdlrm
pda_power.h11510644editdlrm
pe.h162040644editdlrm
percpu-defs.h186090644editdlrm
percpu-refcount.h111690644editdlrm
percpu-rwsem.h45730644editdlrm
percpu.h48490644editdlrm
percpu_counter.h43720644editdlrm
perf_event.h507870644editdlrm
perf_regs.h10760644editdlrm
personality.h3930644editdlrm
pfn.h6660644editdlrm
pfn_t.h33100644editdlrm
phonet.h11460644editdlrm
phy.h563860644editdlrm
phylink.h237070644editdlrm
phy_fixed.h18140644editdlrm
phy_led_triggers.h14910644editdlrm
pid.h60590644editdlrm
pid_namespace.h23860644editdlrm
pim.h27370644editdlrm
pipe_fs_i.h64710644editdlrm
pkeys.h9610644editdlrm
pktcdvd.h60110644editdlrm
pl320-ipc.h7580644editdlrm
platform_device.h141600644editdlrm
platform_profile.h11550644editdlrm
pldmfw.h48790644editdlrm
plist.h88940644editdlrm
pm-trace.h9400644editdlrm
pm.h374800644editdlrm
pm2301_charger.h17230644editdlrm
pmbus.h16210644editdlrm
pmu.h23920644editdlrm
pm_clock.h26380644editdlrm
pm_domain.h132930644editdlrm
pm_opp.h115360644editdlrm
pm_qos.h106620644editdlrm
pm_runtime.h103290644editdlrm
pm_wakeirq.h15180644editdlrm
pm_wakeup.h73540644editdlrm
pnfs_osd_xdr.h94900644editdlrm
pnp.h157650644editdlrm
poison.h26510644editdlrm
poll.h41090644editdlrm
posix-clock.h46600644editdlrm
posix-timers.h64600644editdlrm
posix_acl.h31670644editdlrm
posix_acl_xattr.h16210644editdlrm
powercap.h128890644editdlrm
power_supply.h150250644editdlrm
ppp-comp.h31720644editdlrm
ppp_channel.h31460644editdlrm
ppp_defs.h8120644editdlrm
pps-gpio.h10330644editdlrm
pps_kernel.h36200644editdlrm
pr.h5660644editdlrm
prandom.h38860644editdlrm
preempt.h122320644editdlrm
prefetch.h17400644editdlrm
prime_numbers.h13840644editdlrm
printk.h169080644editdlrm
prmt.h1430644editdlrm
processor.h18890644editdlrm
proc_fs.h61380644editdlrm
proc_ns.h28970644editdlrm
profile.h27430644editdlrm
projid.h22690644editdlrm
property.h174100644editdlrm
psci.h19510644editdlrm
pseudo_fs.h3550644editdlrm
psi.h17060644editdlrm
psi_types.h39940644editdlrm
psp-platform-access.h17220644editdlrm
psp-sev.h189210644editdlrm
psp-tee.h23160644editdlrm
psp.h6970644editdlrm
pstore.h77640644editdlrm
pstore_ram.h29800644editdlrm
pti.h1980644editdlrm
ptp_classify.h50070644editdlrm
ptp_clock_kernel.h124310644editdlrm
ptrace.h152100644editdlrm
ptr_ring.h168900644editdlrm
purgatory.h5890644editdlrm
pvclock_gtod.h5480644editdlrm
pwm.h173410644editdlrm
pwm_backlight.h8020644editdlrm
pxa2xx_ssp.h104700644editdlrm
pxa168_eth.h7280644editdlrm
qcom-geni-se.h124710644editdlrm
qcom_scm.h43810644editdlrm
qnx6_fs.h33490644editdlrm
quicklist.h21860644editdlrm
quota.h192310644editdlrm
quotaops.h105530644editdlrm
radix-tree.h179780644editdlrm
raid_class.h21490644editdlrm
ramfs.h6950644editdlrm
random.h38550644editdlrm
range.h7750644editdlrm
ras.h12110644editdlrm
ratelimit.h17610644editdlrm
ratelimit_types.h11700644editdlrm
rational.h6390644editdlrm
rbtree.h97890644editdlrm
rbtree_augmented.h104850644editdlrm
rbtree_latch.h68150644editdlrm
rbtree_types.h9460644editdlrm
rculist.h284440644editdlrm
rculist_bl.h33740644editdlrm
rculist_nulls.h55130644editdlrm
rcupdate.h385480644editdlrm
rcupdate_trace.h28820644editdlrm
rcupdate_wait.h17690644editdlrm
rcutiny.h42320644editdlrm
rcutree.h30770644editdlrm
rcuwait.h19000644editdlrm
rcu_node_tree.h44680644editdlrm
rcu_segcblist.h112920644editdlrm
rcu_sync.h23120644editdlrm
reboot-mode.h6000644editdlrm
reboot.h20980644editdlrm
reciprocal_div.h33560644editdlrm
refcount.h27990644editdlrm
regmap.h544470644editdlrm
regset.h155270644editdlrm
relay.h89080644editdlrm
remoteproc.h200780644editdlrm
resctrl.h88910644editdlrm
reservation.h92260644editdlrm
reset-controller.h30670644editdlrm
reset.h137390644editdlrm
resource.h3390644editdlrm
resource_ext.h25420644editdlrm
restart_block.h11140644editdlrm
rfkill.h110400644editdlrm
rhashtable-types.h37420644editdlrm
rhashtable.h352780644editdlrm
rh_flags.h9050644editdlrm
rh_kabi.h226330644editdlrm
rh_kabi_attributes.h5010644editdlrm
rh_kabi_aux.h9170644editdlrm
rh_kabi_memcg.h37600644editdlrm
rh_tasklist_lock.h9590644editdlrm
rh_waived.h4410644editdlrm
ring_buffer.h73710644editdlrm
rio.h196870644editdlrm
rio_drv.h150610644editdlrm
rio_ids.h13170644editdlrm
rio_regs.h197370644editdlrm
rmap.h110370644editdlrm
rmi.h124790644editdlrm
rndis.h172690644editdlrm
rodata_test.h5590644editdlrm
root_dev.h6190644editdlrm
rpmsg.h71170644editdlrm
rslib.h37540644editdlrm
rtc.h94270644editdlrm
rtmutex.h31470644editdlrm
rtnetlink.h46040644editdlrm
rtsx_common.h14750644editdlrm
rtsx_pci.h411350644editdlrm
rtsx_usb.h163340644editdlrm
rwbase_rt.h8760644editdlrm
rwlock.h40540644editdlrm
rwlock_api_smp.h77360644editdlrm
rwlock_rt.h30530644editdlrm
rwlock_types.h18140644editdlrm
rwsem.h74050644editdlrm
s3c_adc_battery.h9710644editdlrm
sa11x0-dma.h5720644editdlrm
sbitmap.h202030644editdlrm
scatterlist.h180030644editdlrm
scc.h29050644editdlrm
sched.h644870644editdlrm
sched_clock.h16170644editdlrm
scif.h602800644editdlrm
scmi_protocol.h92840644editdlrm
scpi_protocol.h26420644editdlrm
screen_info.h1910644editdlrm
scs.h18280644editdlrm
sctp.h241240644editdlrm
scx200.h18630644editdlrm
scx200_gpio.h24380644editdlrm
sdb.h42700644editdlrm
sdla.h70660644editdlrm
seccomp.h29720644editdlrm
securebits.h2390644editdlrm
security.h515320644editdlrm
sed-opal.h19850644editdlrm
seg6.h1210644editdlrm
seg6_genl.h1360644editdlrm
seg6_hmac.h1360644editdlrm
seg6_iptunnel.h1480644editdlrm
seg6_local.h1000644editdlrm
selection.h15950644editdlrm
sem.h5990644editdlrm
semaphore.h14000644editdlrm
seqlock.h392440644editdlrm
seqno-fence.h40500644editdlrm
seq_buf.h34050644editdlrm
seq_file.h82910644editdlrm
seq_file_net.h7300644editdlrm
serdev.h101010644editdlrm
serial.h6300644editdlrm
serial_8250.h65810644editdlrm
serial_bcm63xx.h48430644editdlrm
serial_core.h180580644editdlrm
serial_max3100.h14230644editdlrm
serial_pnx8xxx.h26700644editdlrm
serial_s3c.h87840644editdlrm
serial_sci.h16110644editdlrm
serio.h45280644editdlrm
set_memory.h14970644editdlrm
sfi.h58900644editdlrm
sfi_acpi.h34720644editdlrm
sfp.h162160644editdlrm
shdma-base.h45200644editdlrm
shm.h9680644editdlrm
shmem_fs.h57790644editdlrm
shrinker.h33650644editdlrm
sh_clk.h60980644editdlrm
sh_dma.h36960644editdlrm
sh_eth.h3690644editdlrm
sh_intc.h35060644editdlrm
sh_timer.h1720644editdlrm
signal.h135130644editdlrm
signalfd.h8170644editdlrm
signal_types.h12410644editdlrm
siox.h20750644editdlrm
siphash.h47380644editdlrm
sirfsoc_dma.h1620644editdlrm
sizes.h14510644editdlrm
skbuff.h1388220644editdlrm
skb_array.h55120644editdlrm
skmsg.h135570644editdlrm
slab.h250990644editdlrm
slab_def.h30090644editdlrm
slimbus.h54100644editdlrm
slub_def.h65880644editdlrm
sm501-regs.h120460644editdlrm
sm501.h47430644editdlrm
smc91x.h16040644editdlrm
smc911x.h2940644editdlrm
smp.h70850644editdlrm
smpboot.h22150644editdlrm
smp_types.h13400644editdlrm
smsc911x.h23400644editdlrm
smscphy.h12830644editdlrm
socket.h144270644editdlrm
sockptr.h22790644editdlrm
sock_diag.h23700644editdlrm
sonet.h4690644editdlrm
sony-laptop.h14410644editdlrm
sonypi.h24100644editdlrm
sort.h2470644editdlrm
sound.h6850644editdlrm
soundcard.h16310644editdlrm
spinlock.h159330644editdlrm
spinlock_api_smp.h53460644editdlrm
spinlock_api_up.h33940644editdlrm
spinlock_rt.h42090644editdlrm
spinlock_types.h18260644editdlrm
spinlock_types_raw.h17260644editdlrm
spinlock_types_up.h7260644editdlrm
spinlock_up.h21260644editdlrm
splice.h29810644editdlrm
spmi.h60940644editdlrm
sram.h8440644editdlrm
srcu.h78580644editdlrm
srcutiny.h34110644editdlrm
srcutree.h54370644editdlrm
ssbi.h11400644editdlrm
stackdepot.h13090644editdlrm
stackprotector.h3610644editdlrm
stacktrace.h43010644editdlrm
start_kernel.h3340644editdlrm
stat.h12120644editdlrm
statfs.h13460644editdlrm
static_call.h70340644editdlrm
static_call_types.h5350644editdlrm
static_key.h300644editdlrm
stddef.h32750644editdlrm
stm.h44530644editdlrm
stmmac.h76070644editdlrm
stmp3xxx_rtc_wdt.h3320644editdlrm
stmp_device.h6190644editdlrm
stop_machine.h48420644editdlrm
string.h99090644editdlrm
stringhash.h27150644editdlrm
stringify.h3410644editdlrm
string_helpers.h30820644editdlrm
sudmac.h12690644editdlrm
sungem_phy.h40310644editdlrm
sunserialcore.h11020644editdlrm
sunxi-rsb.h29550644editdlrm
superhyway.h28780644editdlrm
suspend.h214830644editdlrm
svga.h38370644editdlrm
sw842.h3280644editdlrm
swab.h5690644editdlrm
swait.h102840644editdlrm
swap.h231090644editdlrm
swapfile.h5560644editdlrm
swapops.h88950644editdlrm
swap_cgroup.h9710644editdlrm
swap_slots.h8410644editdlrm
swiotlb.h54720644editdlrm
switchtec.h115300644editdlrm
sxgbe_platform.h13710644editdlrm
synclink.h9890644editdlrm
sync_core.h5810644editdlrm
sync_file.h16060644editdlrm
sys.h9600644editdlrm
syscalls.h519130644editdlrm
syscore_ops.h6350644editdlrm
sysctl.h77700644editdlrm
sysfs.h180900644editdlrm
syslog.h19310644editdlrm
sysrq.h18960644editdlrm
sysv_fs.h92500644editdlrm
sys_soc.h12630644editdlrm
t10-pi.h15380644editdlrm
taskstats_kern.h9570644editdlrm
task_io_accounting.h11590644editdlrm
task_io_accounting_ops.h26100644editdlrm
task_work.h7180644editdlrm
tboot.h40890644editdlrm
tc.h34890644editdlrm
tca6416_keypad.h8470644editdlrm
tcp.h180920644editdlrm
tee_drv.h166850644editdlrm
textsearch.h48420644editdlrm
textsearch_fsm.h12140644editdlrm
tfrc.h19330644editdlrm
thermal.h199280644editdlrm
thinkpad_acpi.h3200644editdlrm
threads.h13090644editdlrm
thread_info.h48690644editdlrm
thunderbolt.h214350644editdlrm
ti-emif-sram.h51500644editdlrm
tick.h96120644editdlrm
tifm.h49200644editdlrm
timb_dma.h17840644editdlrm
timb_gpio.h13080644editdlrm
time.h39160644editdlrm
time32.h60680644editdlrm
time64.h40550644editdlrm
timecounter.h46930644editdlrm
timekeeper_internal.h54550644editdlrm
timekeeping.h73810644editdlrm
timekeeping32.h20550644editdlrm
timer.h70920644editdlrm
timerfd.h5080644editdlrm
timeriomem-rng.h4750644editdlrm
timerqueue.h14980644editdlrm
timex.h64660644editdlrm
time_namespace.h32170644editdlrm
ti_wilink_st.h144040644editdlrm
tnum.h34670644editdlrm
topology.h62840644editdlrm
torture.h49530644editdlrm
toshiba.h9040644editdlrm
tpm.h113450644editdlrm
tpm_command.h8470644editdlrm
tpm_eventlog.h66860644editdlrm
trace.h13110644editdlrm
tracefs.h12210644editdlrm
tracehook.h72330644editdlrm
tracepoint-defs.h9050644editdlrm
tracepoint.h180030644editdlrm
trace_clock.h6670644editdlrm
trace_events.h210350644editdlrm
trace_seq.h41850644editdlrm
transport_class.h25700644editdlrm
ts-nbus.h5320644editdlrm
tsacct_kern.h12300644editdlrm
tty.h288220644editdlrm
tty_driver.h160170644editdlrm
tty_flip.h15450644editdlrm
tty_ldisc.h79370644editdlrm
typecheck.h7820644editdlrm
types.h56600644editdlrm
u64_stats_sync.h59570644editdlrm
uaccess.h137150644editdlrm
ucb1400.h43670644editdlrm
ucs2_string.h6620644editdlrm
udp.h55520644editdlrm
uidgid.h41710644editdlrm
uio.h97560644editdlrm
uio_driver.h41910644editdlrm
umh.h18370644editdlrm
units.h26850644editdlrm
uprobes.h67830644editdlrm
usb.h817210644editdlrm
usbdevice_fs.h22340644editdlrm
usb_usual.h36710644editdlrm
user-return-notifier.h12050644editdlrm
user.h220644editdlrm
userfaultfd_k.h46510644editdlrm
usermode_driver.h5150644editdlrm
user_namespace.h50840644editdlrm
util_macros.h11970644editdlrm
uts.h3880644editdlrm
utsname.h18280644editdlrm
uuid.h28330644editdlrm
uwb.h258270644editdlrm
vbox_utils.h16750644editdlrm
vdpa.h157560644editdlrm
verification.h19960644editdlrm
vermagic.h11590644editdlrm
vexpress.h14770644editdlrm
vfio.h73320644editdlrm
vfs.h1160644editdlrm
vgaarb.h39720644editdlrm
vga_switcheroo.h88280644editdlrm
vhost_iotlb.h13690644editdlrm
via-core.h74420644editdlrm
via-gpio.h3340644editdlrm
via.h9320644editdlrm
via_i2c.h15160644editdlrm
videodev2.h27690644editdlrm
virtio.h69150644editdlrm
virtio_byteorder.h14910644editdlrm
virtio_caif.h4920644editdlrm
virtio_config.h155170644editdlrm
virtio_console.h19740644editdlrm
virtio_dma_buf.h11470644editdlrm
virtio_net.h49640644editdlrm
virtio_pci_modern.h33790644editdlrm
virtio_ring.h30350644editdlrm
virtio_vsock.h46030644editdlrm
visorbus.h125250644editdlrm
vlynq.h39690644editdlrm
vmacache.h7220644editdlrm
vmalloc.h83670644editdlrm
vme.h57940644editdlrm
vmpressure.h17360644editdlrm
vmstat.h147390644editdlrm
vmw_vmci_api.h29540644editdlrm
vmw_vmci_defs.h309280644editdlrm
vm_event_item.h33850644editdlrm
vringh.h94860644editdlrm
vt.h6110644editdlrm
vtime.h41740644editdlrm
vt_buffer.h15240644editdlrm
vt_kern.h61790644editdlrm
w1-gpio.h6390644editdlrm
w1.h93450644editdlrm
wait.h432920644editdlrm
wait_bit.h115000644editdlrm
wanrouter.h2100644editdlrm
watchdog.h80020644editdlrm
win_minmax.h8320644editdlrm
wireless.h16070644editdlrm
wkup_m3_ipc.h15650644editdlrm
wl12xx.h14220644editdlrm
wm97xx.h108600644editdlrm
wmi.h19890644editdlrm
workqueue.h218560644editdlrm
writeback.h133740644editdlrm
ww_mutex.h130370644editdlrm
xarray.h591010644editdlrm
xattr.h35720644editdlrm
xxhash.h78290644editdlrm
xz.h114310644editdlrm
yam.h28880644editdlrm
z2_battery.h3180644editdlrm
zbud.h7400644editdlrm
zconf.h17700644editdlrm
zlib.h287840644editdlrm
zorro.h40300644editdlrm
zpool.h31020644editdlrm
zsmalloc.h17300644editdlrm
zstd.h498060644editdlrm
zutil.h27930644editdlrm
Edit: /usr/src/kernels/4.18.0-553.121.1.el8_10.x86_64/include/linux/ide.h (47403B)
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _IDE_H #define _IDE_H /* * linux/include/linux/ide.h * * Copyright (C) 1994-2002 Linus Torvalds & authors */ #include #include #include #include #include #include #include #include #include #include #include #include /* for request_sense */ #include #include #include #include /* * Probably not wise to fiddle with these */ #define SUPPORT_VLB_SYNC 1 #define IDE_DEFAULT_MAX_FAILURES 1 #define ERROR_MAX 8 /* Max read/write errors per sector */ #define ERROR_RESET 3 /* Reset controller every 4th retry */ #define ERROR_RECAL 1 /* Recalibrate every 2nd retry */ struct device; /* values for ide_request.type */ enum ata_priv_type { ATA_PRIV_MISC, ATA_PRIV_TASKFILE, ATA_PRIV_PC, ATA_PRIV_SENSE, /* sense request */ ATA_PRIV_PM_SUSPEND, /* suspend request */ ATA_PRIV_PM_RESUME, /* resume request */ }; struct ide_request { struct scsi_request sreq; u8 sense[SCSI_SENSE_BUFFERSIZE]; u8 type; void *special; }; static inline struct ide_request *ide_req(struct request *rq) { return blk_mq_rq_to_pdu(rq); } static inline bool ata_misc_request(struct request *rq) { return blk_rq_is_private(rq) && ide_req(rq)->type == ATA_PRIV_MISC; } static inline bool ata_taskfile_request(struct request *rq) { return blk_rq_is_private(rq) && ide_req(rq)->type == ATA_PRIV_TASKFILE; } static inline bool ata_pc_request(struct request *rq) { return blk_rq_is_private(rq) && ide_req(rq)->type == ATA_PRIV_PC; } static inline bool ata_sense_request(struct request *rq) { return blk_rq_is_private(rq) && ide_req(rq)->type == ATA_PRIV_SENSE; } static inline bool ata_pm_request(struct request *rq) { return blk_rq_is_private(rq) && (ide_req(rq)->type == ATA_PRIV_PM_SUSPEND || ide_req(rq)->type == ATA_PRIV_PM_RESUME); } /* Error codes returned in result to the higher part of the driver. */ enum { IDE_DRV_ERROR_GENERAL = 101, IDE_DRV_ERROR_FILEMARK = 102, IDE_DRV_ERROR_EOD = 103, }; /* * Definitions for accessing IDE controller registers */ #define IDE_NR_PORTS (10) struct ide_io_ports { unsigned long data_addr; union { unsigned long error_addr; /* read: error */ unsigned long feature_addr; /* write: feature */ }; unsigned long nsect_addr; unsigned long lbal_addr; unsigned long lbam_addr; unsigned long lbah_addr; unsigned long device_addr; union { unsigned long status_addr; /*  read: status  */ unsigned long command_addr; /* write: command */ }; unsigned long ctl_addr; unsigned long irq_addr; }; #define OK_STAT(stat,good,bad) (((stat)&((good)|(bad)))==(good)) #define BAD_R_STAT (ATA_BUSY | ATA_ERR) #define BAD_W_STAT (BAD_R_STAT | ATA_DF) #define BAD_STAT (BAD_R_STAT | ATA_DRQ) #define DRIVE_READY (ATA_DRDY | ATA_DSC) #define BAD_CRC (ATA_ABORTED | ATA_ICRC) #define SATA_NR_PORTS (3) /* 16 possible ?? */ #define SATA_STATUS_OFFSET (0) #define SATA_ERROR_OFFSET (1) #define SATA_CONTROL_OFFSET (2) /* * Our Physical Region Descriptor (PRD) table should be large enough * to handle the biggest I/O request we are likely to see. Since requests * can have no more than 256 sectors, and since the typical blocksize is * two or more sectors, we could get by with a limit of 128 entries here for * the usual worst case. Most requests seem to include some contiguous blocks, * further reducing the number of table entries required. * * The driver reverts to PIO mode for individual requests that exceed * this limit (possible with 512 byte blocksizes, eg. MSDOS f/s), so handling * 100% of all crazy scenarios here is not necessary. * * As it turns out though, we must allocate a full 4KB page for this, * so the two PRD tables (ide0 & ide1) will each get half of that, * allowing each to have about 256 entries (8 bytes each) from this. */ #define PRD_BYTES 8 #define PRD_ENTRIES 256 /* * Some more useful definitions */ #define PARTN_BITS 6 /* number of minor dev bits for partitions */ #define MAX_DRIVES 2 /* per interface; 2 assumed by lots of code */ /* * Timeouts for various operations: */ enum { /* spec allows up to 20ms, but CF cards and SSD drives need more */ WAIT_DRQ = 1 * HZ, /* 1s */ /* some laptops are very slow */ WAIT_READY = 5 * HZ, /* 5s */ /* should be less than 3ms (?), if all ATAPI CD is closed at boot */ WAIT_PIDENTIFY = 10 * HZ, /* 10s */ /* worst case when spinning up */ WAIT_WORSTCASE = 30 * HZ, /* 30s */ /* maximum wait for an IRQ to happen */ WAIT_CMD = 10 * HZ, /* 10s */ /* Some drives require a longer IRQ timeout. */ WAIT_FLOPPY_CMD = 50 * HZ, /* 50s */ /* * Some drives (for example, Seagate STT3401A Travan) require a very * long timeout, because they don't return an interrupt or clear their * BSY bit until after the command completes (even retension commands). */ WAIT_TAPE_CMD = 900 * HZ, /* 900s */ /* minimum sleep time */ WAIT_MIN_SLEEP = HZ / 50, /* 20ms */ }; /* * Op codes for special requests to be handled by ide_special_rq(). * Values should be in the range of 0x20 to 0x3f. */ #define REQ_DRIVE_RESET 0x20 #define REQ_DEVSET_EXEC 0x21 #define REQ_PARK_HEADS 0x22 #define REQ_UNPARK_HEADS 0x23 /* * hwif_chipset_t is used to keep track of the specific hardware * chipset used by each IDE interface, if known. */ enum { ide_unknown, ide_generic, ide_pci, ide_cmd640, ide_dtc2278, ide_ali14xx, ide_qd65xx, ide_umc8672, ide_ht6560b, ide_4drives, ide_pmac, ide_acorn, ide_au1xxx, ide_palm3710 }; typedef u8 hwif_chipset_t; /* * Structure to hold all information about the location of this port */ struct ide_hw { union { struct ide_io_ports io_ports; unsigned long io_ports_array[IDE_NR_PORTS]; }; int irq; /* our irq number */ struct device *dev, *parent; unsigned long config; }; static inline void ide_std_init_ports(struct ide_hw *hw, unsigned long io_addr, unsigned long ctl_addr) { unsigned int i; for (i = 0; i <= 7; i++) hw->io_ports_array[i] = io_addr++; hw->io_ports.ctl_addr = ctl_addr; } #define MAX_HWIFS 10 /* * Now for the data we need to maintain per-drive: ide_drive_t */ #define ide_scsi 0x21 #define ide_disk 0x20 #define ide_optical 0x7 #define ide_cdrom 0x5 #define ide_tape 0x1 #define ide_floppy 0x0 /* * Special Driver Flags */ enum { IDE_SFLAG_SET_GEOMETRY = (1 << 0), IDE_SFLAG_RECALIBRATE = (1 << 1), IDE_SFLAG_SET_MULTMODE = (1 << 2), }; /* * Status returned from various ide_ functions */ typedef enum { ide_stopped, /* no drive operation was started */ ide_started, /* a drive operation was started, handler was set */ } ide_startstop_t; enum { IDE_VALID_ERROR = (1 << 1), IDE_VALID_FEATURE = IDE_VALID_ERROR, IDE_VALID_NSECT = (1 << 2), IDE_VALID_LBAL = (1 << 3), IDE_VALID_LBAM = (1 << 4), IDE_VALID_LBAH = (1 << 5), IDE_VALID_DEVICE = (1 << 6), IDE_VALID_LBA = IDE_VALID_LBAL | IDE_VALID_LBAM | IDE_VALID_LBAH, IDE_VALID_OUT_TF = IDE_VALID_FEATURE | IDE_VALID_NSECT | IDE_VALID_LBA, IDE_VALID_IN_TF = IDE_VALID_NSECT | IDE_VALID_LBA, IDE_VALID_OUT_HOB = IDE_VALID_OUT_TF, IDE_VALID_IN_HOB = IDE_VALID_ERROR | IDE_VALID_NSECT | IDE_VALID_LBA, }; enum { IDE_TFLAG_LBA48 = (1 << 0), IDE_TFLAG_WRITE = (1 << 1), IDE_TFLAG_CUSTOM_HANDLER = (1 << 2), IDE_TFLAG_DMA_PIO_FALLBACK = (1 << 3), /* force 16-bit I/O operations */ IDE_TFLAG_IO_16BIT = (1 << 4), /* struct ide_cmd was allocated using kmalloc() */ IDE_TFLAG_DYN = (1 << 5), IDE_TFLAG_FS = (1 << 6), IDE_TFLAG_MULTI_PIO = (1 << 7), IDE_TFLAG_SET_XFER = (1 << 8), }; enum { IDE_FTFLAG_FLAGGED = (1 << 0), IDE_FTFLAG_SET_IN_FLAGS = (1 << 1), IDE_FTFLAG_OUT_DATA = (1 << 2), IDE_FTFLAG_IN_DATA = (1 << 3), }; struct ide_taskfile { u8 data; /* 0: data byte (for TASKFILE ioctl) */ union { /* 1: */ u8 error; /* read: error */ u8 feature; /* write: feature */ }; u8 nsect; /* 2: number of sectors */ u8 lbal; /* 3: LBA low */ u8 lbam; /* 4: LBA mid */ u8 lbah; /* 5: LBA high */ u8 device; /* 6: device select */ union { /* 7: */ u8 status; /* read: status */ u8 command; /* write: command */ }; }; struct ide_cmd { struct ide_taskfile tf; struct ide_taskfile hob; struct { struct { u8 tf; u8 hob; } out, in; } valid; u16 tf_flags; u8 ftf_flags; /* for TASKFILE ioctl */ int protocol; int sg_nents; /* number of sg entries */ int orig_sg_nents; int sg_dma_direction; /* DMA transfer direction */ unsigned int nbytes; unsigned int nleft; unsigned int last_xfer_len; struct scatterlist *cursg; unsigned int cursg_ofs; struct request *rq; /* copy of request */ }; /* ATAPI packet command flags */ enum { /* set when an error is considered normal - no retry (ide-tape) */ PC_FLAG_ABORT = (1 << 0), PC_FLAG_SUPPRESS_ERROR = (1 << 1), PC_FLAG_WAIT_FOR_DSC = (1 << 2), PC_FLAG_DMA_OK = (1 << 3), PC_FLAG_DMA_IN_PROGRESS = (1 << 4), PC_FLAG_DMA_ERROR = (1 << 5), PC_FLAG_WRITING = (1 << 6), }; #define ATAPI_WAIT_PC (60 * HZ) struct ide_atapi_pc { /* actual packet bytes */ u8 c[12]; /* incremented on each retry */ int retries; int error; /* bytes to transfer */ int req_xfer; /* the corresponding request */ struct request *rq; unsigned long flags; /* * those are more or less driver-specific and some of them are subject * to change/removal later. */ unsigned long timeout; }; struct ide_devset; struct ide_driver; #ifdef CONFIG_BLK_DEV_IDEACPI struct ide_acpi_drive_link; struct ide_acpi_hwif_link; #endif struct ide_drive_s; struct ide_disk_ops { int (*check)(struct ide_drive_s *, const char *); int (*get_capacity)(struct ide_drive_s *); void (*unlock_native_capacity)(struct ide_drive_s *); void (*setup)(struct ide_drive_s *); void (*flush)(struct ide_drive_s *); int (*init_media)(struct ide_drive_s *, struct gendisk *); int (*set_doorlock)(struct ide_drive_s *, struct gendisk *, int); ide_startstop_t (*do_request)(struct ide_drive_s *, struct request *, sector_t); int (*ioctl)(struct ide_drive_s *, struct block_device *, fmode_t, unsigned int, unsigned long); }; /* ATAPI device flags */ enum { IDE_AFLAG_DRQ_INTERRUPT = (1 << 0), /* ide-cd */ /* Drive cannot eject the disc. */ IDE_AFLAG_NO_EJECT = (1 << 1), /* Drive is a pre ATAPI 1.2 drive. */ IDE_AFLAG_PRE_ATAPI12 = (1 << 2), /* TOC addresses are in BCD. */ IDE_AFLAG_TOCADDR_AS_BCD = (1 << 3), /* TOC track numbers are in BCD. */ IDE_AFLAG_TOCTRACKS_AS_BCD = (1 << 4), /* Saved TOC information is current. */ IDE_AFLAG_TOC_VALID = (1 << 6), /* We think that the drive door is locked. */ IDE_AFLAG_DOOR_LOCKED = (1 << 7), /* SET_CD_SPEED command is unsupported. */ IDE_AFLAG_NO_SPEED_SELECT = (1 << 8), IDE_AFLAG_VERTOS_300_SSD = (1 << 9), IDE_AFLAG_VERTOS_600_ESD = (1 << 10), IDE_AFLAG_SANYO_3CD = (1 << 11), IDE_AFLAG_FULL_CAPS_PAGE = (1 << 12), IDE_AFLAG_PLAY_AUDIO_OK = (1 << 13), IDE_AFLAG_LE_SPEED_FIELDS = (1 << 14), /* ide-floppy */ /* Avoid commands not supported in Clik drive */ IDE_AFLAG_CLIK_DRIVE = (1 << 15), /* Requires BH algorithm for packets */ IDE_AFLAG_ZIP_DRIVE = (1 << 16), /* Supports format progress report */ IDE_AFLAG_SRFP = (1 << 17), /* ide-tape */ IDE_AFLAG_IGNORE_DSC = (1 << 18), /* 0 When the tape position is unknown */ IDE_AFLAG_ADDRESS_VALID = (1 << 19), /* Device already opened */ IDE_AFLAG_BUSY = (1 << 20), /* Attempt to auto-detect the current user block size */ IDE_AFLAG_DETECT_BS = (1 << 21), /* Currently on a filemark */ IDE_AFLAG_FILEMARK = (1 << 22), /* 0 = no tape is loaded, so we don't rewind after ejecting */ IDE_AFLAG_MEDIUM_PRESENT = (1 << 23), IDE_AFLAG_NO_AUTOCLOSE = (1 << 24), }; /* device flags */ enum { /* restore settings after device reset */ IDE_DFLAG_KEEP_SETTINGS = (1 << 0), /* device is using DMA for read/write */ IDE_DFLAG_USING_DMA = (1 << 1), /* okay to unmask other IRQs */ IDE_DFLAG_UNMASK = (1 << 2), /* don't attempt flushes */ IDE_DFLAG_NOFLUSH = (1 << 3), /* DSC overlap */ IDE_DFLAG_DSC_OVERLAP = (1 << 4), /* give potential excess bandwidth */ IDE_DFLAG_NICE1 = (1 << 5), /* device is physically present */ IDE_DFLAG_PRESENT = (1 << 6), /* disable Host Protected Area */ IDE_DFLAG_NOHPA = (1 << 7), /* id read from device (synthetic if not set) */ IDE_DFLAG_ID_READ = (1 << 8), IDE_DFLAG_NOPROBE = (1 << 9), /* need to do check_media_change() */ IDE_DFLAG_REMOVABLE = (1 << 10), /* needed for removable devices */ IDE_DFLAG_ATTACH = (1 << 11), IDE_DFLAG_FORCED_GEOM = (1 << 12), /* disallow setting unmask bit */ IDE_DFLAG_NO_UNMASK = (1 << 13), /* disallow enabling 32-bit I/O */ IDE_DFLAG_NO_IO_32BIT = (1 << 14), /* for removable only: door lock/unlock works */ IDE_DFLAG_DOORLOCKING = (1 << 15), /* disallow DMA */ IDE_DFLAG_NODMA = (1 << 16), /* powermanagement told us not to do anything, so sleep nicely */ IDE_DFLAG_BLOCKED = (1 << 17), /* sleeping & sleep field valid */ IDE_DFLAG_SLEEPING = (1 << 18), IDE_DFLAG_POST_RESET = (1 << 19), IDE_DFLAG_UDMA33_WARNED = (1 << 20), IDE_DFLAG_LBA48 = (1 << 21), /* status of write cache */ IDE_DFLAG_WCACHE = (1 << 22), /* used for ignoring ATA_DF */ IDE_DFLAG_NOWERR = (1 << 23), /* retrying in PIO */ IDE_DFLAG_DMA_PIO_RETRY = (1 << 24), IDE_DFLAG_LBA = (1 << 25), /* don't unload heads */ IDE_DFLAG_NO_UNLOAD = (1 << 26), /* heads unloaded, please don't reset port */ IDE_DFLAG_PARKED = (1 << 27), IDE_DFLAG_MEDIA_CHANGED = (1 << 28), /* write protect */ IDE_DFLAG_WP = (1 << 29), IDE_DFLAG_FORMAT_IN_PROGRESS = (1 << 30), IDE_DFLAG_NIEN_QUIRK = (1 << 31), }; struct ide_drive_s { char name[4]; /* drive name, such as "hda" */ char driver_req[10]; /* requests specific driver */ struct request_queue *queue; /* request queue */ bool (*prep_rq)(struct ide_drive_s *, struct request *); struct blk_mq_tag_set tag_set; struct request *rq; /* current request */ void *driver_data; /* extra driver data */ u16 *id; /* identification info */ #ifdef CONFIG_IDE_PROC_FS struct proc_dir_entry *proc; /* /proc/ide/ directory entry */ const struct ide_proc_devset *settings; /* /proc/ide/ drive settings */ #endif struct hwif_s *hwif; /* actually (ide_hwif_t *) */ const struct ide_disk_ops *disk_ops; unsigned long dev_flags; unsigned long sleep; /* sleep until this time */ unsigned long timeout; /* max time to wait for irq */ u8 special_flags; /* special action flags */ u8 select; /* basic drive/head select reg value */ u8 retry_pio; /* retrying dma capable host in pio */ u8 waiting_for_dma; /* dma currently in progress */ u8 dma; /* atapi dma flag */ u8 init_speed; /* transfer rate set at boot */ u8 current_speed; /* current transfer rate set */ u8 desired_speed; /* desired transfer rate set */ u8 pio_mode; /* for ->set_pio_mode _only_ */ u8 dma_mode; /* for ->set_dma_mode _only_ */ u8 dn; /* now wide spread use */ u8 acoustic; /* acoustic management */ u8 media; /* disk, cdrom, tape, floppy, ... */ u8 ready_stat; /* min status value for drive ready */ u8 mult_count; /* current multiple sector setting */ u8 mult_req; /* requested multiple sector setting */ u8 io_32bit; /* 0=16-bit, 1=32-bit, 2/3=32bit+sync */ u8 bad_wstat; /* used for ignoring ATA_DF */ u8 head; /* "real" number of heads */ u8 sect; /* "real" sectors per track */ u8 bios_head; /* BIOS/fdisk/LILO number of heads */ u8 bios_sect; /* BIOS/fdisk/LILO sectors per track */ /* delay this long before sending packet command */ u8 pc_delay; unsigned int bios_cyl; /* BIOS/fdisk/LILO number of cyls */ unsigned int cyl; /* "real" number of cyls */ void *drive_data; /* used by set_pio_mode/dev_select() */ unsigned int failures; /* current failure count */ unsigned int max_failures; /* maximum allowed failure count */ u64 probed_capacity;/* initial/native media capacity */ u64 capacity64; /* total number of sectors */ int lun; /* logical unit */ int crc_count; /* crc counter to reduce drive speed */ unsigned long debug_mask; /* debugging levels switch */ #ifdef CONFIG_BLK_DEV_IDEACPI struct ide_acpi_drive_link *acpidata; #endif struct list_head list; struct device gendev; struct completion gendev_rel_comp; /* to deal with device release() */ /* current packet command */ struct ide_atapi_pc *pc; /* last failed packet command */ struct ide_atapi_pc *failed_pc; /* callback for packet commands */ int (*pc_callback)(struct ide_drive_s *, int); ide_startstop_t (*irq_handler)(struct ide_drive_s *); unsigned long atapi_flags; struct ide_atapi_pc request_sense_pc; /* current sense rq and buffer */ bool sense_rq_armed; struct request *sense_rq; struct request_sense sense_data; /* async sense insertion */ struct work_struct rq_work; struct list_head rq_list; }; typedef struct ide_drive_s ide_drive_t; #define to_ide_device(dev) container_of(dev, ide_drive_t, gendev) #define to_ide_drv(obj, cont_type) \ container_of(obj, struct cont_type, dev) #define ide_drv_g(disk, cont_type) \ container_of((disk)->private_data, struct cont_type, driver) struct ide_port_info; struct ide_tp_ops { void (*exec_command)(struct hwif_s *, u8); u8 (*read_status)(struct hwif_s *); u8 (*read_altstatus)(struct hwif_s *); void (*write_devctl)(struct hwif_s *, u8); void (*dev_select)(ide_drive_t *); void (*tf_load)(ide_drive_t *, struct ide_taskfile *, u8); void (*tf_read)(ide_drive_t *, struct ide_taskfile *, u8); void (*input_data)(ide_drive_t *, struct ide_cmd *, void *, unsigned int); void (*output_data)(ide_drive_t *, struct ide_cmd *, void *, unsigned int); }; extern const struct ide_tp_ops default_tp_ops; /** * struct ide_port_ops - IDE port operations * * @init_dev: host specific initialization of a device * @set_pio_mode: routine to program host for PIO mode * @set_dma_mode: routine to program host for DMA mode * @reset_poll: chipset polling based on hba specifics * @pre_reset: chipset specific changes to default for device-hba resets * @resetproc: routine to reset controller after a disk reset * @maskproc: special host masking for drive selection * @quirkproc: check host's drive quirk list * @clear_irq: clear IRQ * * @mdma_filter: filter MDMA modes * @udma_filter: filter UDMA modes * * @cable_detect: detect cable type */ struct ide_port_ops { void (*init_dev)(ide_drive_t *); void (*set_pio_mode)(struct hwif_s *, ide_drive_t *); void (*set_dma_mode)(struct hwif_s *, ide_drive_t *); blk_status_t (*reset_poll)(ide_drive_t *); void (*pre_reset)(ide_drive_t *); void (*resetproc)(ide_drive_t *); void (*maskproc)(ide_drive_t *, int); void (*quirkproc)(ide_drive_t *); void (*clear_irq)(ide_drive_t *); int (*test_irq)(struct hwif_s *); u8 (*mdma_filter)(ide_drive_t *); u8 (*udma_filter)(ide_drive_t *); u8 (*cable_detect)(struct hwif_s *); }; struct ide_dma_ops { void (*dma_host_set)(struct ide_drive_s *, int); int (*dma_setup)(struct ide_drive_s *, struct ide_cmd *); void (*dma_start)(struct ide_drive_s *); int (*dma_end)(struct ide_drive_s *); int (*dma_test_irq)(struct ide_drive_s *); void (*dma_lost_irq)(struct ide_drive_s *); /* below ones are optional */ int (*dma_check)(struct ide_drive_s *, struct ide_cmd *); int (*dma_timer_expiry)(struct ide_drive_s *); void (*dma_clear)(struct ide_drive_s *); /* * The following method is optional and only required to be * implemented for the SFF-8038i compatible controllers. */ u8 (*dma_sff_read_status)(struct hwif_s *); }; enum { IDE_PFLAG_PROBING = (1 << 0), }; struct ide_host; typedef struct hwif_s { struct hwif_s *mate; /* other hwif from same PCI chip */ struct proc_dir_entry *proc; /* /proc/ide/ directory entry */ struct ide_host *host; char name[6]; /* name of interface, eg. "ide0" */ struct ide_io_ports io_ports; unsigned long sata_scr[SATA_NR_PORTS]; ide_drive_t *devices[MAX_DRIVES + 1]; unsigned long port_flags; u8 major; /* our major number */ u8 index; /* 0 for ide0; 1 for ide1; ... */ u8 channel; /* for dual-port chips: 0=primary, 1=secondary */ u32 host_flags; u8 pio_mask; u8 ultra_mask; u8 mwdma_mask; u8 swdma_mask; u8 cbl; /* cable type */ hwif_chipset_t chipset; /* sub-module for tuning.. */ struct device *dev; void (*rw_disk)(ide_drive_t *, struct request *); const struct ide_tp_ops *tp_ops; const struct ide_port_ops *port_ops; const struct ide_dma_ops *dma_ops; /* dma physical region descriptor table (cpu view) */ unsigned int *dmatable_cpu; /* dma physical region descriptor table (dma view) */ dma_addr_t dmatable_dma; /* maximum number of PRD table entries */ int prd_max_nents; /* PRD entry size in bytes */ int prd_ent_size; /* Scatter-gather list used to build the above */ struct scatterlist *sg_table; int sg_max_nents; /* Maximum number of entries in it */ struct ide_cmd cmd; /* current command */ int rqsize; /* max sectors per request */ int irq; /* our irq number */ unsigned long dma_base; /* base addr for dma ports */ unsigned long config_data; /* for use by chipset-specific code */ unsigned long select_data; /* for use by chipset-specific code */ unsigned long extra_base; /* extra addr for dma ports */ unsigned extra_ports; /* number of extra dma ports */ unsigned present : 1; /* this interface exists */ unsigned busy : 1; /* serializes devices on a port */ struct device gendev; struct device *portdev; struct completion gendev_rel_comp; /* To deal with device release() */ void *hwif_data; /* extra hwif data */ #ifdef CONFIG_BLK_DEV_IDEACPI struct ide_acpi_hwif_link *acpidata; #endif /* IRQ handler, if active */ ide_startstop_t (*handler)(ide_drive_t *); /* BOOL: polling active & poll_timeout field valid */ unsigned int polling : 1; /* current drive */ ide_drive_t *cur_dev; /* current request */ struct request *rq; /* failsafe timer */ struct timer_list timer; /* timeout value during long polls */ unsigned long poll_timeout; /* queried upon timeouts */ int (*expiry)(ide_drive_t *); int req_gen; int req_gen_timer; spinlock_t lock; } ____cacheline_internodealigned_in_smp ide_hwif_t; #define MAX_HOST_PORTS 4 struct ide_host { ide_hwif_t *ports[MAX_HOST_PORTS + 1]; unsigned int n_ports; struct device *dev[2]; int (*init_chipset)(struct pci_dev *); void (*get_lock)(irq_handler_t, void *); void (*release_lock)(void); irq_handler_t irq_handler; unsigned long host_flags; int irq_flags; void *host_priv; ide_hwif_t *cur_port; /* for hosts requiring serialization */ /* used for hosts requiring serialization */ volatile unsigned long host_busy; }; #define IDE_HOST_BUSY 0 /* * internal ide interrupt handler type */ typedef ide_startstop_t (ide_handler_t)(ide_drive_t *); typedef int (ide_expiry_t)(ide_drive_t *); /* used by ide-cd, ide-floppy, etc. */ typedef void (xfer_func_t)(ide_drive_t *, struct ide_cmd *, void *, unsigned); extern struct mutex ide_setting_mtx; /* * configurable drive settings */ #define DS_SYNC (1 << 0) struct ide_devset { int (*get)(ide_drive_t *); int (*set)(ide_drive_t *, int); unsigned int flags; }; #define __DEVSET(_flags, _get, _set) { \ .flags = _flags, \ .get = _get, \ .set = _set, \ } #define ide_devset_get(name, field) \ static int get_##name(ide_drive_t *drive) \ { \ return drive->field; \ } #define ide_devset_set(name, field) \ static int set_##name(ide_drive_t *drive, int arg) \ { \ drive->field = arg; \ return 0; \ } #define ide_devset_get_flag(name, flag) \ static int get_##name(ide_drive_t *drive) \ { \ return !!(drive->dev_flags & flag); \ } #define ide_devset_set_flag(name, flag) \ static int set_##name(ide_drive_t *drive, int arg) \ { \ if (arg) \ drive->dev_flags |= flag; \ else \ drive->dev_flags &= ~flag; \ return 0; \ } #define __IDE_DEVSET(_name, _flags, _get, _set) \ const struct ide_devset ide_devset_##_name = \ __DEVSET(_flags, _get, _set) #define IDE_DEVSET(_name, _flags, _get, _set) \ static __IDE_DEVSET(_name, _flags, _get, _set) #define ide_devset_rw(_name, _func) \ IDE_DEVSET(_name, 0, get_##_func, set_##_func) #define ide_devset_w(_name, _func) \ IDE_DEVSET(_name, 0, NULL, set_##_func) #define ide_ext_devset_rw(_name, _func) \ __IDE_DEVSET(_name, 0, get_##_func, set_##_func) #define ide_ext_devset_rw_sync(_name, _func) \ __IDE_DEVSET(_name, DS_SYNC, get_##_func, set_##_func) #define ide_decl_devset(_name) \ extern const struct ide_devset ide_devset_##_name ide_decl_devset(io_32bit); ide_decl_devset(keepsettings); ide_decl_devset(pio_mode); ide_decl_devset(unmaskirq); ide_decl_devset(using_dma); #ifdef CONFIG_IDE_PROC_FS /* * /proc/ide interface */ #define ide_devset_rw_field(_name, _field) \ ide_devset_get(_name, _field); \ ide_devset_set(_name, _field); \ IDE_DEVSET(_name, DS_SYNC, get_##_name, set_##_name) #define ide_devset_rw_flag(_name, _field) \ ide_devset_get_flag(_name, _field); \ ide_devset_set_flag(_name, _field); \ IDE_DEVSET(_name, DS_SYNC, get_##_name, set_##_name) struct ide_proc_devset { const char *name; const struct ide_devset *setting; int min, max; int (*mulf)(ide_drive_t *); int (*divf)(ide_drive_t *); }; #define __IDE_PROC_DEVSET(_name, _min, _max, _mulf, _divf) { \ .name = __stringify(_name), \ .setting = &ide_devset_##_name, \ .min = _min, \ .max = _max, \ .mulf = _mulf, \ .divf = _divf, \ } #define IDE_PROC_DEVSET(_name, _min, _max) \ __IDE_PROC_DEVSET(_name, _min, _max, NULL, NULL) typedef struct { const char *name; umode_t mode; int (*show)(struct seq_file *, void *); } ide_proc_entry_t; void proc_ide_create(void); void proc_ide_destroy(void); void ide_proc_register_port(ide_hwif_t *); void ide_proc_port_register_devices(ide_hwif_t *); void ide_proc_unregister_device(ide_drive_t *); void ide_proc_unregister_port(ide_hwif_t *); void ide_proc_register_driver(ide_drive_t *, struct ide_driver *); void ide_proc_unregister_driver(ide_drive_t *, struct ide_driver *); int ide_capacity_proc_show(struct seq_file *m, void *v); int ide_geometry_proc_show(struct seq_file *m, void *v); #else static inline void proc_ide_create(void) { ; } static inline void proc_ide_destroy(void) { ; } static inline void ide_proc_register_port(ide_hwif_t *hwif) { ; } static inline void ide_proc_port_register_devices(ide_hwif_t *hwif) { ; } static inline void ide_proc_unregister_device(ide_drive_t *drive) { ; } static inline void ide_proc_unregister_port(ide_hwif_t *hwif) { ; } static inline void ide_proc_register_driver(ide_drive_t *drive, struct ide_driver *driver) { ; } static inline void ide_proc_unregister_driver(ide_drive_t *drive, struct ide_driver *driver) { ; } #endif enum { /* enter/exit functions */ IDE_DBG_FUNC = (1 << 0), /* sense key/asc handling */ IDE_DBG_SENSE = (1 << 1), /* packet commands handling */ IDE_DBG_PC = (1 << 2), /* request handling */ IDE_DBG_RQ = (1 << 3), /* driver probing/setup */ IDE_DBG_PROBE = (1 << 4), }; /* DRV_NAME has to be defined in the driver before using the macro below */ #define __ide_debug_log(lvl, fmt, args...) \ { \ if (unlikely(drive->debug_mask & lvl)) \ printk(KERN_INFO DRV_NAME ": %s: " fmt "\n", \ __func__, ## args); \ } /* * Power Management state machine (rq->pm->pm_step). * * For each step, the core calls ide_start_power_step() first. * This can return: * - ide_stopped : In this case, the core calls us back again unless * step have been set to ide_power_state_completed. * - ide_started : In this case, the channel is left busy until an * async event (interrupt) occurs. * Typically, ide_start_power_step() will issue a taskfile request with * do_rw_taskfile(). * * Upon reception of the interrupt, the core will call ide_complete_power_step() * with the error code if any. This routine should update the step value * and return. It should not start a new request. The core will call * ide_start_power_step() for the new step value, unless step have been * set to IDE_PM_COMPLETED. */ enum { IDE_PM_START_SUSPEND, IDE_PM_FLUSH_CACHE = IDE_PM_START_SUSPEND, IDE_PM_STANDBY, IDE_PM_START_RESUME, IDE_PM_RESTORE_PIO = IDE_PM_START_RESUME, IDE_PM_IDLE, IDE_PM_RESTORE_DMA, IDE_PM_COMPLETED, }; int generic_ide_suspend(struct device *, pm_message_t); int generic_ide_resume(struct device *); void ide_complete_power_step(ide_drive_t *, struct request *); ide_startstop_t ide_start_power_step(ide_drive_t *, struct request *); void ide_complete_pm_rq(ide_drive_t *, struct request *); void ide_check_pm_state(ide_drive_t *, struct request *); /* * Subdrivers support. * * The gendriver.owner field should be set to the module owner of this driver. * The gendriver.name field should be set to the name of this driver */ struct ide_driver { const char *version; ide_startstop_t (*do_request)(ide_drive_t *, struct request *, sector_t); struct device_driver gen_driver; int (*probe)(ide_drive_t *); void (*remove)(ide_drive_t *); void (*resume)(ide_drive_t *); void (*shutdown)(ide_drive_t *); #ifdef CONFIG_IDE_PROC_FS ide_proc_entry_t * (*proc_entries)(ide_drive_t *); const struct ide_proc_devset * (*proc_devsets)(ide_drive_t *); #endif }; #define to_ide_driver(drv) container_of(drv, struct ide_driver, gen_driver) int ide_device_get(ide_drive_t *); void ide_device_put(ide_drive_t *); struct ide_ioctl_devset { unsigned int get_ioctl; unsigned int set_ioctl; const struct ide_devset *setting; }; int ide_setting_ioctl(ide_drive_t *, struct block_device *, unsigned int, unsigned long, const struct ide_ioctl_devset *); int generic_ide_ioctl(ide_drive_t *, struct block_device *, unsigned, unsigned long); extern int ide_vlb_clk; extern int ide_pci_clk; int ide_end_rq(ide_drive_t *, struct request *, blk_status_t, unsigned int); void ide_kill_rq(ide_drive_t *, struct request *); void ide_insert_request_head(ide_drive_t *, struct request *); void __ide_set_handler(ide_drive_t *, ide_handler_t *, unsigned int); void ide_set_handler(ide_drive_t *, ide_handler_t *, unsigned int); void ide_execute_command(ide_drive_t *, struct ide_cmd *, ide_handler_t *, unsigned int); void ide_pad_transfer(ide_drive_t *, int, int); ide_startstop_t ide_error(ide_drive_t *, const char *, u8); void ide_fix_driveid(u16 *); extern void ide_fixstring(u8 *, const int, const int); int ide_busy_sleep(ide_drive_t *, unsigned long, int); int __ide_wait_stat(ide_drive_t *, u8, u8, unsigned long, u8 *); int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long); ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *); ide_startstop_t ide_do_devset(ide_drive_t *, struct request *); extern ide_startstop_t ide_do_reset (ide_drive_t *); extern int ide_devset_execute(ide_drive_t *drive, const struct ide_devset *setting, int arg); void ide_complete_cmd(ide_drive_t *, struct ide_cmd *, u8, u8); int ide_complete_rq(ide_drive_t *, blk_status_t, unsigned int); void ide_tf_readback(ide_drive_t *drive, struct ide_cmd *cmd); void ide_tf_dump(const char *, struct ide_cmd *); void ide_exec_command(ide_hwif_t *, u8); u8 ide_read_status(ide_hwif_t *); u8 ide_read_altstatus(ide_hwif_t *); void ide_write_devctl(ide_hwif_t *, u8); void ide_dev_select(ide_drive_t *); void ide_tf_load(ide_drive_t *, struct ide_taskfile *, u8); void ide_tf_read(ide_drive_t *, struct ide_taskfile *, u8); void ide_input_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int); void ide_output_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int); void SELECT_MASK(ide_drive_t *, int); u8 ide_read_error(ide_drive_t *); void ide_read_bcount_and_ireason(ide_drive_t *, u16 *, u8 *); int ide_check_ireason(ide_drive_t *, struct request *, int, int, int); int ide_check_atapi_device(ide_drive_t *, const char *); void ide_init_pc(struct ide_atapi_pc *); /* Disk head parking */ extern wait_queue_head_t ide_park_wq; ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, char *buf); ssize_t ide_park_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t len); /* * Special requests for ide-tape block device strategy routine. * * In order to service a character device command, we add special requests to * the tail of our block device request queue and wait for their completion. */ enum { REQ_IDETAPE_PC1 = (1 << 0), /* packet command (first stage) */ REQ_IDETAPE_PC2 = (1 << 1), /* packet command (second stage) */ REQ_IDETAPE_READ = (1 << 2), REQ_IDETAPE_WRITE = (1 << 3), }; int ide_queue_pc_tail(ide_drive_t *, struct gendisk *, struct ide_atapi_pc *, void *, unsigned int); int ide_do_test_unit_ready(ide_drive_t *, struct gendisk *); int ide_do_start_stop(ide_drive_t *, struct gendisk *, int); int ide_set_media_lock(ide_drive_t *, struct gendisk *, int); void ide_create_request_sense_cmd(ide_drive_t *, struct ide_atapi_pc *); void ide_retry_pc(ide_drive_t *drive); void ide_prep_sense(ide_drive_t *drive, struct request *rq); int ide_queue_sense_rq(ide_drive_t *drive, void *special); int ide_cd_expiry(ide_drive_t *); int ide_cd_get_xferlen(struct request *); ide_startstop_t ide_issue_pc(ide_drive_t *, struct ide_cmd *); ide_startstop_t do_rw_taskfile(ide_drive_t *, struct ide_cmd *); void ide_pio_bytes(ide_drive_t *, struct ide_cmd *, unsigned int, unsigned int); void ide_finish_cmd(ide_drive_t *, struct ide_cmd *, u8); int ide_raw_taskfile(ide_drive_t *, struct ide_cmd *, u8 *, u16); int ide_no_data_taskfile(ide_drive_t *, struct ide_cmd *); int ide_taskfile_ioctl(ide_drive_t *, unsigned long); int ide_dev_read_id(ide_drive_t *, u8, u16 *, int); extern int ide_driveid_update(ide_drive_t *); extern int ide_config_drive_speed(ide_drive_t *, u8); extern u8 eighty_ninty_three (ide_drive_t *); extern int taskfile_lib_get_identify(ide_drive_t *drive, u8 *); extern int ide_wait_not_busy(ide_hwif_t *hwif, unsigned long timeout); extern void ide_stall_queue(ide_drive_t *drive, unsigned long timeout); extern void ide_timer_expiry(struct timer_list *t); extern irqreturn_t ide_intr(int irq, void *dev_id); extern blk_status_t ide_queue_rq(struct blk_mq_hw_ctx *, const struct blk_mq_queue_data *); extern void ide_requeue_and_plug(ide_drive_t *drive, struct request *rq); void ide_init_disk(struct gendisk *, ide_drive_t *); #ifdef CONFIG_IDEPCI_PCIBUS_ORDER extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner, const char *mod_name); #define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE, KBUILD_MODNAME) #else #define ide_pci_register_driver(d) pci_register_driver(d) #endif static inline int ide_pci_is_in_compatibility_mode(struct pci_dev *dev) { if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE && (dev->class & 5) != 5) return 1; return 0; } void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, struct ide_hw *, struct ide_hw **); void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *); #ifdef CONFIG_BLK_DEV_IDEDMA_PCI int ide_pci_set_master(struct pci_dev *, const char *); unsigned long ide_pci_dma_base(ide_hwif_t *, const struct ide_port_info *); int ide_pci_check_simplex(ide_hwif_t *, const struct ide_port_info *); int ide_hwif_setup_dma(ide_hwif_t *, const struct ide_port_info *); #else static inline int ide_hwif_setup_dma(ide_hwif_t *hwif, const struct ide_port_info *d) { return -EINVAL; } #endif struct ide_pci_enablebit { u8 reg; /* byte pci reg holding the enable-bit */ u8 mask; /* mask to isolate the enable-bit */ u8 val; /* value of masked reg when "enabled" */ }; enum { /* Uses ISA control ports not PCI ones. */ IDE_HFLAG_ISA_PORTS = (1 << 0), /* single port device */ IDE_HFLAG_SINGLE = (1 << 1), /* don't use legacy PIO blacklist */ IDE_HFLAG_PIO_NO_BLACKLIST = (1 << 2), /* set for the second port of QD65xx */ IDE_HFLAG_QD_2ND_PORT = (1 << 3), /* use PIO8/9 for prefetch off/on */ IDE_HFLAG_ABUSE_PREFETCH = (1 << 4), /* use PIO6/7 for fast-devsel off/on */ IDE_HFLAG_ABUSE_FAST_DEVSEL = (1 << 5), /* use 100-102 and 200-202 PIO values to set DMA modes */ IDE_HFLAG_ABUSE_DMA_MODES = (1 << 6), /* * keep DMA setting when programming PIO mode, may be used only * for hosts which have separate PIO and DMA timings (ie. PMAC) */ IDE_HFLAG_SET_PIO_MODE_KEEP_DMA = (1 << 7), /* program host for the transfer mode after programming device */ IDE_HFLAG_POST_SET_MODE = (1 << 8), /* don't program host/device for the transfer mode ("smart" hosts) */ IDE_HFLAG_NO_SET_MODE = (1 << 9), /* trust BIOS for programming chipset/device for DMA */ IDE_HFLAG_TRUST_BIOS_FOR_DMA = (1 << 10), /* host is CS5510/CS5520 */ IDE_HFLAG_CS5520 = (1 << 11), /* ATAPI DMA is unsupported */ IDE_HFLAG_NO_ATAPI_DMA = (1 << 12), /* set if host is a "non-bootable" controller */ IDE_HFLAG_NON_BOOTABLE = (1 << 13), /* host doesn't support DMA */ IDE_HFLAG_NO_DMA = (1 << 14), /* check if host is PCI IDE device before allowing DMA */ IDE_HFLAG_NO_AUTODMA = (1 << 15), /* host uses MMIO */ IDE_HFLAG_MMIO = (1 << 16), /* no LBA48 */ IDE_HFLAG_NO_LBA48 = (1 << 17), /* no LBA48 DMA */ IDE_HFLAG_NO_LBA48_DMA = (1 << 18), /* data FIFO is cleared by an error */ IDE_HFLAG_ERROR_STOPS_FIFO = (1 << 19), /* serialize ports */ IDE_HFLAG_SERIALIZE = (1 << 20), /* host is DTC2278 */ IDE_HFLAG_DTC2278 = (1 << 21), /* 4 devices on a single set of I/O ports */ IDE_HFLAG_4DRIVES = (1 << 22), /* host is TRM290 */ IDE_HFLAG_TRM290 = (1 << 23), /* use 32-bit I/O ops */ IDE_HFLAG_IO_32BIT = (1 << 24), /* unmask IRQs */ IDE_HFLAG_UNMASK_IRQS = (1 << 25), IDE_HFLAG_BROKEN_ALTSTATUS = (1 << 26), /* serialize ports if DMA is possible (for sl82c105) */ IDE_HFLAG_SERIALIZE_DMA = (1 << 27), /* force host out of "simplex" mode */ IDE_HFLAG_CLEAR_SIMPLEX = (1 << 28), /* DSC overlap is unsupported */ IDE_HFLAG_NO_DSC = (1 << 29), /* never use 32-bit I/O ops */ IDE_HFLAG_NO_IO_32BIT = (1 << 30), /* never unmask IRQs */ IDE_HFLAG_NO_UNMASK_IRQS = (1 << 31), }; #ifdef CONFIG_BLK_DEV_OFFBOARD # define IDE_HFLAG_OFF_BOARD 0 #else # define IDE_HFLAG_OFF_BOARD IDE_HFLAG_NON_BOOTABLE #endif struct ide_port_info { char *name; int (*init_chipset)(struct pci_dev *); void (*get_lock)(irq_handler_t, void *); void (*release_lock)(void); void (*init_iops)(ide_hwif_t *); void (*init_hwif)(ide_hwif_t *); int (*init_dma)(ide_hwif_t *, const struct ide_port_info *); const struct ide_tp_ops *tp_ops; const struct ide_port_ops *port_ops; const struct ide_dma_ops *dma_ops; struct ide_pci_enablebit enablebits[2]; hwif_chipset_t chipset; u16 max_sectors; /* if < than the default one */ u32 host_flags; int irq_flags; u8 pio_mask; u8 swdma_mask; u8 mwdma_mask; u8 udma_mask; }; /* * State information carried for REQ_TYPE_ATA_PM_SUSPEND and REQ_TYPE_ATA_PM_RESUME * requests. */ struct ide_pm_state { /* PM state machine step value, currently driver specific */ int pm_step; /* requested PM state value (S1, S2, S3, S4, ...) */ u32 pm_state; void* data; /* for driver use */ }; int ide_pci_init_one(struct pci_dev *, const struct ide_port_info *, void *); int ide_pci_init_two(struct pci_dev *, struct pci_dev *, const struct ide_port_info *, void *); void ide_pci_remove(struct pci_dev *); #ifdef CONFIG_PM int ide_pci_suspend(struct pci_dev *, pm_message_t); int ide_pci_resume(struct pci_dev *); #else #define ide_pci_suspend NULL #define ide_pci_resume NULL #endif void ide_map_sg(ide_drive_t *, struct ide_cmd *); void ide_init_sg_cmd(struct ide_cmd *, unsigned int); #define BAD_DMA_DRIVE 0 #define GOOD_DMA_DRIVE 1 struct drive_list_entry { const char *id_model; const char *id_firmware; }; int ide_in_drive_list(u16 *, const struct drive_list_entry *); #ifdef CONFIG_BLK_DEV_IDEDMA int ide_dma_good_drive(ide_drive_t *); int __ide_dma_bad_drive(ide_drive_t *); u8 ide_find_dma_mode(ide_drive_t *, u8); static inline u8 ide_max_dma_mode(ide_drive_t *drive) { return ide_find_dma_mode(drive, XFER_UDMA_6); } void ide_dma_off_quietly(ide_drive_t *); void ide_dma_off(ide_drive_t *); void ide_dma_on(ide_drive_t *); int ide_set_dma(ide_drive_t *); void ide_check_dma_crc(ide_drive_t *); ide_startstop_t ide_dma_intr(ide_drive_t *); int ide_allocate_dma_engine(ide_hwif_t *); void ide_release_dma_engine(ide_hwif_t *); int ide_dma_prepare(ide_drive_t *, struct ide_cmd *); void ide_dma_unmap_sg(ide_drive_t *, struct ide_cmd *); #ifdef CONFIG_BLK_DEV_IDEDMA_SFF int config_drive_for_dma(ide_drive_t *); int ide_build_dmatable(ide_drive_t *, struct ide_cmd *); void ide_dma_host_set(ide_drive_t *, int); int ide_dma_setup(ide_drive_t *, struct ide_cmd *); extern void ide_dma_start(ide_drive_t *); int ide_dma_end(ide_drive_t *); int ide_dma_test_irq(ide_drive_t *); int ide_dma_sff_timer_expiry(ide_drive_t *); u8 ide_dma_sff_read_status(ide_hwif_t *); extern const struct ide_dma_ops sff_dma_ops; #else static inline int config_drive_for_dma(ide_drive_t *drive) { return 0; } #endif /* CONFIG_BLK_DEV_IDEDMA_SFF */ void ide_dma_lost_irq(ide_drive_t *); ide_startstop_t ide_dma_timeout_retry(ide_drive_t *, int); #else static inline u8 ide_find_dma_mode(ide_drive_t *drive, u8 speed) { return 0; } static inline u8 ide_max_dma_mode(ide_drive_t *drive) { return 0; } static inline void ide_dma_off_quietly(ide_drive_t *drive) { ; } static inline void ide_dma_off(ide_drive_t *drive) { ; } static inline void ide_dma_on(ide_drive_t *drive) { ; } static inline void ide_dma_verbose(ide_drive_t *drive) { ; } static inline int ide_set_dma(ide_drive_t *drive) { return 1; } static inline void ide_check_dma_crc(ide_drive_t *drive) { ; } static inline ide_startstop_t ide_dma_intr(ide_drive_t *drive) { return ide_stopped; } static inline ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error) { return ide_stopped; } static inline void ide_release_dma_engine(ide_hwif_t *hwif) { ; } static inline int ide_dma_prepare(ide_drive_t *drive, struct ide_cmd *cmd) { return 1; } static inline void ide_dma_unmap_sg(ide_drive_t *drive, struct ide_cmd *cmd) { ; } #endif /* CONFIG_BLK_DEV_IDEDMA */ #ifdef CONFIG_BLK_DEV_IDEACPI int ide_acpi_init(void); bool ide_port_acpi(ide_hwif_t *hwif); extern int ide_acpi_exec_tfs(ide_drive_t *drive); extern void ide_acpi_get_timing(ide_hwif_t *hwif); extern void ide_acpi_push_timing(ide_hwif_t *hwif); void ide_acpi_init_port(ide_hwif_t *); void ide_acpi_port_init_devices(ide_hwif_t *); extern void ide_acpi_set_state(ide_hwif_t *hwif, int on); #else static inline int ide_acpi_init(void) { return 0; } static inline bool ide_port_acpi(ide_hwif_t *hwif) { return 0; } static inline int ide_acpi_exec_tfs(ide_drive_t *drive) { return 0; } static inline void ide_acpi_get_timing(ide_hwif_t *hwif) { ; } static inline void ide_acpi_push_timing(ide_hwif_t *hwif) { ; } static inline void ide_acpi_init_port(ide_hwif_t *hwif) { ; } static inline void ide_acpi_port_init_devices(ide_hwif_t *hwif) { ; } static inline void ide_acpi_set_state(ide_hwif_t *hwif, int on) {} #endif void ide_check_nien_quirk_list(ide_drive_t *); void ide_undecoded_slave(ide_drive_t *); void ide_port_apply_params(ide_hwif_t *); int ide_sysfs_register_port(ide_hwif_t *); struct ide_host *ide_host_alloc(const struct ide_port_info *, struct ide_hw **, unsigned int); void ide_host_free(struct ide_host *); int ide_host_register(struct ide_host *, const struct ide_port_info *, struct ide_hw **); int ide_host_add(const struct ide_port_info *, struct ide_hw **, unsigned int, struct ide_host **); void ide_host_remove(struct ide_host *); int ide_legacy_device_add(const struct ide_port_info *, unsigned long); void ide_port_unregister_devices(ide_hwif_t *); void ide_port_scan(ide_hwif_t *); static inline void *ide_get_hwifdata (ide_hwif_t * hwif) { return hwif->hwif_data; } static inline void ide_set_hwifdata (ide_hwif_t * hwif, void *data) { hwif->hwif_data = data; } u64 ide_get_lba_addr(struct ide_cmd *, int); u8 ide_dump_status(ide_drive_t *, const char *, u8); struct ide_timing { u8 mode; u8 setup; /* t1 */ u16 act8b; /* t2 for 8-bit io */ u16 rec8b; /* t2i for 8-bit io */ u16 cyc8b; /* t0 for 8-bit io */ u16 active; /* t2 or tD */ u16 recover; /* t2i or tK */ u16 cycle; /* t0 */ u16 udma; /* t2CYCTYP/2 */ }; enum { IDE_TIMING_SETUP = (1 << 0), IDE_TIMING_ACT8B = (1 << 1), IDE_TIMING_REC8B = (1 << 2), IDE_TIMING_CYC8B = (1 << 3), IDE_TIMING_8BIT = IDE_TIMING_ACT8B | IDE_TIMING_REC8B | IDE_TIMING_CYC8B, IDE_TIMING_ACTIVE = (1 << 4), IDE_TIMING_RECOVER = (1 << 5), IDE_TIMING_CYCLE = (1 << 6), IDE_TIMING_UDMA = (1 << 7), IDE_TIMING_ALL = IDE_TIMING_SETUP | IDE_TIMING_8BIT | IDE_TIMING_ACTIVE | IDE_TIMING_RECOVER | IDE_TIMING_CYCLE | IDE_TIMING_UDMA, }; struct ide_timing *ide_timing_find_mode(u8); u16 ide_pio_cycle_time(ide_drive_t *, u8); void ide_timing_merge(struct ide_timing *, struct ide_timing *, struct ide_timing *, unsigned int); int ide_timing_compute(ide_drive_t *, u8, struct ide_timing *, int, int); #ifdef CONFIG_IDE_XFER_MODE int ide_scan_pio_blacklist(char *); const char *ide_xfer_verbose(u8); int ide_pio_need_iordy(ide_drive_t *, const u8); int ide_set_pio_mode(ide_drive_t *, u8); int ide_set_dma_mode(ide_drive_t *, u8); void ide_set_pio(ide_drive_t *, u8); int ide_set_xfer_rate(ide_drive_t *, u8); #else static inline void ide_set_pio(ide_drive_t *drive, u8 pio) { ; } static inline int ide_set_xfer_rate(ide_drive_t *drive, u8 rate) { return -1; } #endif static inline void ide_set_max_pio(ide_drive_t *drive) { ide_set_pio(drive, 255); } char *ide_media_string(ide_drive_t *); extern const struct attribute_group *ide_dev_groups[]; extern struct bus_type ide_bus_type; extern struct class *ide_port_class; static inline void ide_dump_identify(u8 *id) { print_hex_dump(KERN_INFO, "", DUMP_PREFIX_NONE, 16, 2, id, 512, 0); } static inline int hwif_to_node(ide_hwif_t *hwif) { return hwif->dev ? dev_to_node(hwif->dev) : -1; } static inline ide_drive_t *ide_get_pair_dev(ide_drive_t *drive) { ide_drive_t *peer = drive->hwif->devices[(drive->dn ^ 1) & 1]; return (peer->dev_flags & IDE_DFLAG_PRESENT) ? peer : NULL; } static inline void *ide_get_drivedata(ide_drive_t *drive) { return drive->drive_data; } static inline void ide_set_drivedata(ide_drive_t *drive, void *data) { drive->drive_data = data; } #define ide_port_for_each_dev(i, dev, port) \ for ((i) = 0; ((dev) = (port)->devices[i]) || (i) < MAX_DRIVES; (i)++) #define ide_port_for_each_present_dev(i, dev, port) \ for ((i) = 0; ((dev) = (port)->devices[i]) || (i) < MAX_DRIVES; (i)++) \ if ((dev)->dev_flags & IDE_DFLAG_PRESENT) #define ide_host_for_each_port(i, port, host) \ for ((i) = 0; ((port) = (host)->ports[i]) || (i) < MAX_HOST_PORTS; (i)++) #endif /* _IDE_H */