提交 06be5eef 编写于 作者: R Russell King

Merge branches 'fixes' and 'ioremap' into for-linus

要显示的变更太多。

To preserve performance only 1000 of 1000+ files are displayed.
...@@ -84,6 +84,7 @@ Mayuresh Janorkar <mayur@ti.com> ...@@ -84,6 +84,7 @@ Mayuresh Janorkar <mayur@ti.com>
Michael Buesch <m@bues.ch> Michael Buesch <m@bues.ch>
Michel Dänzer <michel@tungstengraphics.com> Michel Dänzer <michel@tungstengraphics.com>
Mitesh shah <mshah@teja.com> Mitesh shah <mshah@teja.com>
Mohit Kumar <mohit.kumar@st.com> <mohit.kumar.dhaka@gmail.com>
Morten Welinder <terra@gnome.org> Morten Welinder <terra@gnome.org>
Morten Welinder <welinder@anemone.rentec.com> Morten Welinder <welinder@anemone.rentec.com>
Morten Welinder <welinder@darter.rentec.com> Morten Welinder <welinder@darter.rentec.com>
...@@ -95,10 +96,12 @@ Patrick Mochel <mochel@digitalimplant.org> ...@@ -95,10 +96,12 @@ Patrick Mochel <mochel@digitalimplant.org>
Peter A Jonsson <pj@ludd.ltu.se> Peter A Jonsson <pj@ludd.ltu.se>
Peter Oruba <peter@oruba.de> Peter Oruba <peter@oruba.de>
Peter Oruba <peter.oruba@amd.com> Peter Oruba <peter.oruba@amd.com>
Pratyush Anand <pratyush.anand@gmail.com> <pratyush.anand@st.com>
Praveen BP <praveenbp@ti.com> Praveen BP <praveenbp@ti.com>
Rajesh Shah <rajesh.shah@intel.com> Rajesh Shah <rajesh.shah@intel.com>
Ralf Baechle <ralf@linux-mips.org> Ralf Baechle <ralf@linux-mips.org>
Ralf Wildenhues <Ralf.Wildenhues@gmx.de> Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Randy Dunlap <rdunlap@infradead.org> <rdunlap@xenotime.net>
Rémi Denis-Courmont <rdenis@simphalempin.com> Rémi Denis-Courmont <rdenis@simphalempin.com>
Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Rudolf Marek <R.Marek@sh.cvut.cz> Rudolf Marek <R.Marek@sh.cvut.cz>
......
...@@ -3219,11 +3219,6 @@ N: Dipankar Sarma ...@@ -3219,11 +3219,6 @@ N: Dipankar Sarma
E: dipankar@in.ibm.com E: dipankar@in.ibm.com
D: RCU D: RCU
N: Yoshinori Sato
E: ysato@users.sourceforge.jp
D: uClinux for Renesas H8/300 (H8300)
D: http://uclinux-h8.sourceforge.jp/
N: Hannu Savolainen N: Hannu Savolainen
E: hannu@opensound.com E: hannu@opensound.com
D: Maintainer of the sound drivers until 2.1.x days. D: Maintainer of the sound drivers until 2.1.x days.
......
What: /sys/bus/w1/devices/.../w1_master_timeout_us
Date: April 2015
Contact: Dmitry Khromov <dk@icelogic.net>
Description: Bus scanning interval, microseconds component.
Some of 1-Wire devices commonly associated with physical access
control systems are attached/generate presence for as short as
100 ms - hence the tens-to-hundreds milliseconds scan intervals
are required.
see Documentation/w1/w1.generic for detailed information.
Users: any user space application which wants to know bus scanning
interval
What: /sys/bus/w1/devices/.../w1_seq
Date: Apr 2015
Contact: Matt Campbell <mattrcampbell@gmail.com>
Description: Support for the DS28EA00 chain sequence function
see Documentation/w1/slaves/w1_therm for detailed information
Users: any user space application which wants to communicate with DS28EA00
What: /config/pcie-gadget What: /config/pcie-gadget
Date: Feb 2011 Date: Feb 2011
KernelVersion: 2.6.37 KernelVersion: 2.6.37
Contact: Pratyush Anand <pratyush.anand@st.com> Contact: Pratyush Anand <pratyush.anand@gmail.com>
Description: Description:
Interface is used to configure selected dual mode PCIe controller Interface is used to configure selected dual mode PCIe controller
......
...@@ -98,4 +98,13 @@ Description: The /dev/kmsg character device node provides userspace access ...@@ -98,4 +98,13 @@ Description: The /dev/kmsg character device node provides userspace access
logic is used internally when messages are printed to the logic is used internally when messages are printed to the
console, /proc/kmsg or the syslog() syscall. console, /proc/kmsg or the syslog() syscall.
By default, kernel tries to avoid fragments by concatenating
when it can and fragments are rare; however, when extended
console support is enabled, the in-kernel concatenation is
disabled and /dev/kmsg output will contain more fragments. If
the log consumer performs concatenation, the end result
should be the same. In the future, the in-kernel concatenation
may be removed entirely and /dev/kmsg users are recommended to
implement fragment handling.
Users: dmesg(1), userspace kernel log consumers Users: dmesg(1), userspace kernel log consumers
...@@ -20,17 +20,19 @@ Description: ...@@ -20,17 +20,19 @@ Description:
action: measure | dont_measure | appraise | dont_appraise | audit action: measure | dont_measure | appraise | dont_appraise | audit
condition:= base | lsm [option] condition:= base | lsm [option]
base: [[func=] [mask=] [fsmagic=] [fsuuid=] [uid=] base: [[func=] [mask=] [fsmagic=] [fsuuid=] [uid=]
[fowner]] [euid=] [fowner=]]
lsm: [[subj_user=] [subj_role=] [subj_type=] lsm: [[subj_user=] [subj_role=] [subj_type=]
[obj_user=] [obj_role=] [obj_type=]] [obj_user=] [obj_role=] [obj_type=]]
option: [[appraise_type=]] [permit_directio] option: [[appraise_type=]] [permit_directio]
base: func:= [BPRM_CHECK][MMAP_CHECK][FILE_CHECK][MODULE_CHECK] base: func:= [BPRM_CHECK][MMAP_CHECK][FILE_CHECK][MODULE_CHECK]
[FIRMWARE_CHECK] [FIRMWARE_CHECK]
mask:= [MAY_READ] [MAY_WRITE] [MAY_APPEND] [MAY_EXEC] mask:= [[^]MAY_READ] [[^]MAY_WRITE] [[^]MAY_APPEND]
[[^]MAY_EXEC]
fsmagic:= hex value fsmagic:= hex value
fsuuid:= file system UUID (e.g 8bcbe394-4f13-4144-be8e-5aa9ea2ce2f6) fsuuid:= file system UUID (e.g 8bcbe394-4f13-4144-be8e-5aa9ea2ce2f6)
uid:= decimal value uid:= decimal value
euid:= decimal value
fowner:=decimal value fowner:=decimal value
lsm: are LSM specific lsm: are LSM specific
option: appraise_type:= [imasig] option: appraise_type:= [imasig]
...@@ -49,11 +51,25 @@ Description: ...@@ -49,11 +51,25 @@ Description:
dont_measure fsmagic=0x01021994 dont_measure fsmagic=0x01021994
dont_appraise fsmagic=0x01021994 dont_appraise fsmagic=0x01021994
# RAMFS_MAGIC # RAMFS_MAGIC
dont_measure fsmagic=0x858458f6
dont_appraise fsmagic=0x858458f6 dont_appraise fsmagic=0x858458f6
# DEVPTS_SUPER_MAGIC
dont_measure fsmagic=0x1cd1
dont_appraise fsmagic=0x1cd1
# BINFMTFS_MAGIC
dont_measure fsmagic=0x42494e4d
dont_appraise fsmagic=0x42494e4d
# SECURITYFS_MAGIC # SECURITYFS_MAGIC
dont_measure fsmagic=0x73636673 dont_measure fsmagic=0x73636673
dont_appraise fsmagic=0x73636673 dont_appraise fsmagic=0x73636673
# SELINUX_MAGIC
dont_measure fsmagic=0xf97cff8c
dont_appraise fsmagic=0xf97cff8c
# CGROUP_SUPER_MAGIC
dont_measure fsmagic=0x27e0eb
dont_appraise fsmagic=0x27e0eb
# NSFS_MAGIC
dont_measure fsmagic=0x6e736673
dont_appraise fsmagic=0x6e736673
measure func=BPRM_CHECK measure func=BPRM_CHECK
measure func=FILE_MMAP mask=MAY_EXEC measure func=FILE_MMAP mask=MAY_EXEC
...@@ -70,10 +86,6 @@ Description: ...@@ -70,10 +86,6 @@ Description:
Examples of LSM specific definitions: Examples of LSM specific definitions:
SELinux: SELinux:
# SELINUX_MAGIC
dont_measure fsmagic=0xf97cff8c
dont_appraise fsmagic=0xf97cff8c
dont_measure obj_type=var_log_t dont_measure obj_type=var_log_t
dont_appraise obj_type=var_log_t dont_appraise obj_type=var_log_t
dont_measure obj_type=auditd_log_t dont_measure obj_type=auditd_log_t
......
...@@ -90,6 +90,17 @@ gscr ...@@ -90,6 +90,17 @@ gscr
130: SATA_PMP_GSCR_SII_GPIO 130: SATA_PMP_GSCR_SII_GPIO
Only valid if the device is a PM. Only valid if the device is a PM.
trim
Shows the DSM TRIM mode currently used by the device. Valid
values are:
unsupported: Drive does not support DSM TRIM
unqueued: Drive supports unqueued DSM TRIM only
queued: Drive supports queued DSM TRIM
forced_unqueued: Drive's queued DSM support is known to be
buggy and only unqueued TRIM commands
are sent
spdn_cnt spdn_cnt
Number of time libata decided to lower the speed of link due to errors. Number of time libata decided to lower the speed of link due to errors.
......
What: /sys/bus/coresight/devices/<memory_map>.etm/enable_source
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Enable/disable tracing on this specific trace entiry.
Enabling a source implies the source has been configured
properly and a sink has been identidifed for it. The path
of coresight components linking the source to the sink is
configured and managed automatically by the coresight framework.
What: /sys/bus/coresight/devices/<memory_map>.etm/cpu
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) The CPU this tracing entity is associated with.
What: /sys/bus/coresight/devices/<memory_map>.etm/nr_pe_cmp
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Indicates the number of PE comparator inputs that are
available for tracing.
What: /sys/bus/coresight/devices/<memory_map>.etm/nr_addr_cmp
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Indicates the number of address comparator pairs that are
available for tracing.
What: /sys/bus/coresight/devices/<memory_map>.etm/nr_cntr
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Indicates the number of counters that are available for
tracing.
What: /sys/bus/coresight/devices/<memory_map>.etm/nr_ext_inp
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Indicates how many external inputs are implemented.
What: /sys/bus/coresight/devices/<memory_map>.etm/numcidc
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Indicates the number of Context ID comparators that are
available for tracing.
What: /sys/bus/coresight/devices/<memory_map>.etm/numvmidc
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Indicates the number of VMID comparators that are available
for tracing.
What: /sys/bus/coresight/devices/<memory_map>.etm/nrseqstate
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Indicates the number of sequencer states that are
implemented.
What: /sys/bus/coresight/devices/<memory_map>.etm/nr_resource
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Indicates the number of resource selection pairs that are
available for tracing.
What: /sys/bus/coresight/devices/<memory_map>.etm/nr_ss_cmp
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Indicates the number of single-shot comparator controls that
are available for tracing.
What: /sys/bus/coresight/devices/<memory_map>.etm/reset
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (W) Cancels all configuration on a trace unit and set it back
to its boot configuration.
What: /sys/bus/coresight/devices/<memory_map>.etm/mode
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls various modes supported by this ETM, for example
P0 instruction tracing, branch broadcast, cycle counting and
context ID tracing.
What: /sys/bus/coresight/devices/<memory_map>.etm/pe
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls which PE to trace.
What: /sys/bus/coresight/devices/<memory_map>.etm/event
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls the tracing of arbitrary events from bank 0 to 3.
What: /sys/bus/coresight/devices/<memory_map>.etm/event_instren
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls the behavior of the events in bank 0 to 3.
What: /sys/bus/coresight/devices/<memory_map>.etm/event_ts
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls the insertion of global timestamps in the trace
streams.
What: /sys/bus/coresight/devices/<memory_map>.etm/syncfreq
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls how often trace synchronization requests occur.
What: /sys/bus/coresight/devices/<memory_map>.etm/cyc_threshold
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Sets the threshold value for cycle counting.
What: /sys/bus/coresight/devices/<memory_map>.etm/bb_ctrl
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls which regions in the memory map are enabled to
use branch broadcasting.
What: /sys/bus/coresight/devices/<memory_map>.etm/event_vinst
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls instruction trace filtering.
What: /sys/bus/coresight/devices/<memory_map>.etm/s_exlevel_vinst
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) In Secure state, each bit controls whether instruction
tracing is enabled for the corresponding exception level.
What: /sys/bus/coresight/devices/<memory_map>.etm/ns_exlevel_vinst
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) In non-secure state, each bit controls whether instruction
tracing is enabled for the corresponding exception level.
What: /sys/bus/coresight/devices/<memory_map>.etm/addr_idx
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Select which address comparator or pair (of comparators) to
work with.
What: /sys/bus/coresight/devices/<memory_map>.etm/addr_instdatatype
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls what type of comparison the trace unit performs.
What: /sys/bus/coresight/devices/<memory_map>.etm/addr_single
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Used to setup single address comparator values.
What: /sys/bus/coresight/devices/<memory_map>.etm/addr_range
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Used to setup address range comparator values.
What: /sys/bus/coresight/devices/<memory_map>.etm/seq_idx
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Select which sequensor.
What: /sys/bus/coresight/devices/<memory_map>.etm/seq_state
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Use this to set, or read, the sequencer state.
What: /sys/bus/coresight/devices/<memory_map>.etm/seq_event
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Moves the sequencer state to a specific state.
What: /sys/bus/coresight/devices/<memory_map>.etm/seq_reset_event
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Moves the sequencer to state 0 when a programmed event
occurs.
What: /sys/bus/coresight/devices/<memory_map>.etm/cntr_idx
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Select which counter unit to work with.
What: /sys/bus/coresight/devices/<memory_map>.etm/cntrldvr
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) This sets or returns the reload count value of the
specific counter.
What: /sys/bus/coresight/devices/<memory_map>.etm/cntr_val
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) This sets or returns the current count value of the
specific counter.
What: /sys/bus/coresight/devices/<memory_map>.etm/cntr_ctrl
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls the operation of the selected counter.
What: /sys/bus/coresight/devices/<memory_map>.etm/res_idx
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Select which resource selection unit to work with.
What: /sys/bus/coresight/devices/<memory_map>.etm/res_ctrl
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Controls the selection of the resources in the trace unit.
What: /sys/bus/coresight/devices/<memory_map>.etm/ctxid_idx
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Select which context ID comparator to work with.
What: /sys/bus/coresight/devices/<memory_map>.etm/ctxid_val
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Get/Set the context ID comparator value to trigger on.
What: /sys/bus/coresight/devices/<memory_map>.etm/ctxid_masks
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Mask for all 8 context ID comparator value
registers (if implemented).
What: /sys/bus/coresight/devices/<memory_map>.etm/vmid_idx
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Select which virtual machine ID comparator to work with.
What: /sys/bus/coresight/devices/<memory_map>.etm/vmid_val
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Get/Set the virtual machine ID comparator value to
trigger on.
What: /sys/bus/coresight/devices/<memory_map>.etm/vmid_masks
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (RW) Mask for all 8 virtual machine ID comparator value
registers (if implemented).
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcoslsr
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the OS Lock Status Register (0x304).
The value it taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcpdcr
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the Power Down Control Register
(0x310). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcpdsr
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the Power Down Status Register
(0x314). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trclsr
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the SW Lock Status Register
(0xFB4). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcauthstatus
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the Authentication Status Register
(0xFB8). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcdevid
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the Device ID Register
(0xFC8). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcdevtype
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the Device Type Register
(0xFCC). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcpidr0
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the Peripheral ID0 Register
(0xFE0). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcpidr1
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the Peripheral ID1 Register
(0xFE4). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcpidr2
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the Peripheral ID2 Register
(0xFE8). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/mgmt/trcpidr3
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Print the content of the Peripheral ID3 Register
(0xFEC). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr0
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the tracing capabilities of the trace unit (0x1E0).
The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr1
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the tracing capabilities of the trace unit (0x1E4).
The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr2
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the maximum size of the data value, data address,
VMID, context ID and instuction address in the trace unit
(0x1E8). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr3
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the value associated with various resources
available to the trace unit. See the Trace Macrocell
architecture specification for more details (0x1E8).
The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr4
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns how many resources the trace unit supports (0x1F0).
The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr5
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns how many resources the trace unit supports (0x1F4).
The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr8
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the maximum speculation depth of the instruction
trace stream. (0x180). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr9
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the number of P0 right-hand keys that the trace unit
can use (0x184). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr10
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the number of P1 right-hand keys that the trace unit
can use (0x188). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr11
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the number of special P1 right-hand keys that the
trace unit can use (0x18C). The value is taken directly from
the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr12
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the number of conditional P1 right-hand keys that
the trace unit can use (0x190). The value is taken directly
from the HW.
What: /sys/bus/coresight/devices/<memory_map>.etm/trcidr/trcidr13
Date: April 2015
KernelVersion: 4.01
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (R) Returns the number of special conditional P1 right-hand keys
that the trace unit can use (0x194). The value is taken
directly from the HW.
...@@ -32,7 +32,7 @@ Description: 'FCoE Controller' instances on the fcoe bus. ...@@ -32,7 +32,7 @@ Description: 'FCoE Controller' instances on the fcoe bus.
Attributes: Attributes:
fcf_dev_loss_tmo: Device loss timeout peroid (see below). Changing fcf_dev_loss_tmo: Device loss timeout period (see below). Changing
this value will change the dev_loss_tmo for all this value will change the dev_loss_tmo for all
FCFs discovered by this controller. FCFs discovered by this controller.
...@@ -61,7 +61,7 @@ Attributes: ...@@ -61,7 +61,7 @@ Attributes:
lesb/err_block: Link Error Status Block (LESB) block error count. lesb/err_block: Link Error Status Block (LESB) block error count.
lesb/fcs_error: Link Error Status Block (LESB) Fibre Channel lesb/fcs_error: Link Error Status Block (LESB) Fibre Channel
Serivces error count. Services error count.
Notes: ctlr_X (global increment starting at 0) Notes: ctlr_X (global increment starting at 0)
...@@ -85,7 +85,7 @@ Attributes: ...@@ -85,7 +85,7 @@ Attributes:
fabric. fabric.
selected: 1 indicates that the switch has been selected for use; selected: 1 indicates that the switch has been selected for use;
0 indicates that the swich will not be used. 0 indicates that the switch will not be used.
fc_map: The Fibre Channel MAP fc_map: The Fibre Channel MAP
...@@ -93,7 +93,7 @@ Attributes: ...@@ -93,7 +93,7 @@ Attributes:
mac: The FCF's MAC address mac: The FCF's MAC address
fka_peroid: The FIP Keep-Alive peroid fka_period: The FIP Keep-Alive period
fabric_state: The internal kernel state fabric_state: The internal kernel state
"Unknown" - Initialization value "Unknown" - Initialization value
...@@ -101,9 +101,9 @@ Attributes: ...@@ -101,9 +101,9 @@ Attributes:
"Connected" - Host is connected to the FCF "Connected" - Host is connected to the FCF
"Deleted" - FCF is being removed from the system "Deleted" - FCF is being removed from the system
dev_loss_tmo: The device loss timeout peroid for this FCF. dev_loss_tmo: The device loss timeout period for this FCF.
Notes: A device loss infrastructre similar to the FC Transport's Notes: A device loss infrastructure similar to the FC Transport's
is present in fcoe_sysfs. It is nice to have so that a is present in fcoe_sysfs. It is nice to have so that a
link flapping adapter doesn't continually advance the count link flapping adapter doesn't continually advance the count
used to identify the discovered FCF. FCFs will exist in a used to identify the discovered FCF. FCFs will exist in a
......
...@@ -71,6 +71,8 @@ Description: ...@@ -71,6 +71,8 @@ Description:
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_raw What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_raw
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_raw What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_raw
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_raw
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_raw
KernelVersion: 2.6.35 KernelVersion: 2.6.35
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
Description: Description:
...@@ -81,6 +83,11 @@ Description: ...@@ -81,6 +83,11 @@ Description:
unique to allow association with event codes. Units after unique to allow association with event codes. Units after
application of scale and offset are millivolts. application of scale and offset are millivolts.
Channels with 'i' and 'q' modifiers always exist in pairs and both
channels refer to the same signal. The 'i' channel contains the in-phase
component of the signal while the 'q' channel contains the quadrature
component.
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw
KernelVersion: 2.6.35 KernelVersion: 2.6.35
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
...@@ -246,8 +253,16 @@ What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset ...@@ -246,8 +253,16 @@ What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset
What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_offset
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_offset
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_offset
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_offset
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_offset What: /sys/bus/iio/devices/iio:deviceX/in_currentY_offset
What: /sys/bus/iio/devices/iio:deviceX/in_current_offset What: /sys/bus/iio/devices/iio:deviceX/in_current_offset
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_i_offset
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_q_offset
What: /sys/bus/iio/devices/iio:deviceX/in_current_q_offset
What: /sys/bus/iio/devices/iio:deviceX/in_current_i_offset
What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset
What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset
What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset
...@@ -273,14 +288,22 @@ Description: ...@@ -273,14 +288,22 @@ Description:
to the _raw output. to the _raw output.
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_scale What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_scale
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_scale
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_scale
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_scale What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_scale
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_scale
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_scale
What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale
What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_scale What: /sys/bus/iio/devices/iio:deviceX/in_currentY_scale
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_scale What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_scale
What: /sys/bus/iio/devices/iio:deviceX/in_current_scale What: /sys/bus/iio/devices/iio:deviceX/in_current_scale
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_i_scale
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_q_scale
What: /sys/bus/iio/devices/iio:deviceX/in_current_i_scale
What: /sys/bus/iio/devices/iio:deviceX/in_current_q_scale
What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale
What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale
...@@ -328,6 +351,10 @@ Description: ...@@ -328,6 +351,10 @@ Description:
What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale What /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltage_i_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltage_q_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale What /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale What /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale What /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale
...@@ -420,6 +447,16 @@ Description: ...@@ -420,6 +447,16 @@ Description:
to the underlying data channel, then this parameter to the underlying data channel, then this parameter
gives the 3dB frequency of the filter in Hz. gives the 3dB frequency of the filter in Hz.
What: /sys/.../in_accel_filter_high_pass_3db_frequency
What: /sys/.../in_anglvel_filter_high_pass_3db_frequency
What: /sys/.../in_magn_filter_high_pass_3db_frequency
KernelVersion: 4.2
Contact: linux-iio@vger.kernel.org
Description:
If a known or controllable high pass filter is applied
to the underlying data channel, then this parameter
gives the 3dB frequency of the filter in Hz.
What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_raw What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_raw
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_raw What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_raw
KernelVersion: 2.6.37 KernelVersion: 2.6.37
...@@ -880,6 +917,26 @@ Description: ...@@ -880,6 +917,26 @@ Description:
met before an event is generated. If direction is not met before an event is generated. If direction is not
specified then this period applies to both directions. specified then this period applies to both directions.
What: /sys/.../events/in_accel_thresh_rising_low_pass_filter_3db
What: /sys/.../events/in_anglvel_thresh_rising_low_pass_filter_3db
What: /sys/.../events/in_magn_thresh_rising_low_pass_filter_3db
KernelVersion: 4.2
Contact: linux-iio@vger.kernel.org
Description:
If a low pass filter can be applied to the event generation
this property gives its 3db frequency in Hz.
A value of zero disables the filter.
What: /sys/.../events/in_accel_thresh_rising_high_pass_filter_3db
What: /sys/.../events/in_anglvel_thresh_rising_high_pass_filter_3db
What: /sys/.../events/in_magn_thresh_rising_high_pass_filter_3db
KernelVersion: 4.2
Contact: linux-iio@vger.kernel.org
Description:
If a high pass filter can be applied to the event generation
this property gives its 3db frequency in Hz.
A value of zero disables the filter.
What: /sys/.../events/in_activity_still_thresh_rising_en What: /sys/.../events/in_activity_still_thresh_rising_en
What: /sys/.../events/in_activity_still_thresh_falling_en What: /sys/.../events/in_activity_still_thresh_falling_en
What: /sys/.../events/in_activity_walking_thresh_rising_en What: /sys/.../events/in_activity_walking_thresh_rising_en
...@@ -1016,6 +1073,10 @@ What: /sys/.../iio:deviceX/scan_elements/in_timestamp_en ...@@ -1016,6 +1073,10 @@ What: /sys/.../iio:deviceX/scan_elements/in_timestamp_en
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_en What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_en
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_en What: /sys/.../iio:deviceX/scan_elements/in_voltageY_en
What: /sys/.../iio:deviceX/scan_elements/in_voltageY-voltageZ_en What: /sys/.../iio:deviceX/scan_elements/in_voltageY-voltageZ_en
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_en
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_en
What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_en
What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_en
What: /sys/.../iio:deviceX/scan_elements/in_incli_x_en What: /sys/.../iio:deviceX/scan_elements/in_incli_x_en
What: /sys/.../iio:deviceX/scan_elements/in_incli_y_en What: /sys/.../iio:deviceX/scan_elements/in_incli_y_en
What: /sys/.../iio:deviceX/scan_elements/in_pressureY_en What: /sys/.../iio:deviceX/scan_elements/in_pressureY_en
...@@ -1034,6 +1095,10 @@ What: /sys/.../iio:deviceX/scan_elements/in_incli_type ...@@ -1034,6 +1095,10 @@ What: /sys/.../iio:deviceX/scan_elements/in_incli_type
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_type What: /sys/.../iio:deviceX/scan_elements/in_voltageY_type
What: /sys/.../iio:deviceX/scan_elements/in_voltage_type What: /sys/.../iio:deviceX/scan_elements/in_voltage_type
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_type What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_type
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_type
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_type
What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_type
What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_type
What: /sys/.../iio:deviceX/scan_elements/in_timestamp_type What: /sys/.../iio:deviceX/scan_elements/in_timestamp_type
What: /sys/.../iio:deviceX/scan_elements/in_pressureY_type What: /sys/.../iio:deviceX/scan_elements/in_pressureY_type
What: /sys/.../iio:deviceX/scan_elements/in_pressure_type What: /sys/.../iio:deviceX/scan_elements/in_pressure_type
...@@ -1071,6 +1136,10 @@ Description: ...@@ -1071,6 +1136,10 @@ Description:
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_index What: /sys/.../iio:deviceX/scan_elements/in_voltageY_index
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_index What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_index
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_index
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_index
What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_index
What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_index
What: /sys/.../iio:deviceX/scan_elements/in_accel_x_index What: /sys/.../iio:deviceX/scan_elements/in_accel_x_index
What: /sys/.../iio:deviceX/scan_elements/in_accel_y_index What: /sys/.../iio:deviceX/scan_elements/in_accel_y_index
What: /sys/.../iio:deviceX/scan_elements/in_accel_z_index What: /sys/.../iio:deviceX/scan_elements/in_accel_z_index
...@@ -1230,6 +1299,8 @@ Description: ...@@ -1230,6 +1299,8 @@ Description:
or without compensation from tilt sensors. or without compensation from tilt sensors.
What: /sys/bus/iio/devices/iio:deviceX/in_currentX_raw What: /sys/bus/iio/devices/iio:deviceX/in_currentX_raw
What: /sys/bus/iio/devices/iio:deviceX/in_currentX_i_raw
What: /sys/bus/iio/devices/iio:deviceX/in_currentX_q_raw
KernelVersion: 3.18 KernelVersion: 3.18
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
Description: Description:
...@@ -1238,6 +1309,11 @@ Description: ...@@ -1238,6 +1309,11 @@ Description:
present, output should be considered as processed with the present, output should be considered as processed with the
unit in milliamps. unit in milliamps.
Channels with 'i' and 'q' modifiers always exist in pairs and both
channels refer to the same signal. The 'i' channel contains the in-phase
component of the signal while the 'q' channel contains the quadrature
component.
What: /sys/.../iio:deviceX/in_energy_en What: /sys/.../iio:deviceX/in_energy_en
What: /sys/.../iio:deviceX/in_distance_en What: /sys/.../iio:deviceX/in_distance_en
What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_en What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_en
...@@ -1364,3 +1440,26 @@ Description: ...@@ -1364,3 +1440,26 @@ Description:
hwfifo_watermak_min but not equal to any of the values in this hwfifo_watermak_min but not equal to any of the values in this
list, the driver will chose an appropriate value for the list, the driver will chose an appropriate value for the
hardware fifo watermark level. hardware fifo watermark level.
What: /sys/bus/iio/devices/iio:deviceX/in_temp_calibemissivity
What: /sys/bus/iio/devices/iio:deviceX/in_tempX_calibemissivity
What: /sys/bus/iio/devices/iio:deviceX/in_temp_object_calibemissivity
What: /sys/bus/iio/devices/iio:deviceX/in_tempX_object_calibemissivity
KernelVersion: 4.1
Contact: linux-iio@vger.kernel.org
Description:
The emissivity ratio of the surface in the field of view of the
contactless temperature sensor. Emissivity varies from 0 to 1,
with 1 being the emissivity of a black body.
What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_oversampling_ratio
What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_oversampling_ratio
What: /sys/bus/iio/devices/iio:deviceX/in_magn_z_oversampling_ratio
KernelVersion: 4.2
Contact: linux-iio@vger.kernel.org
Description:
Hardware applied number of measurements for acquiring one
data point. The HW will do <type>[_name]_oversampling_ratio
measurements and return the average value as output data. Each
value resulted from <type>[_name]_oversampling_ratio measurements
is considered as one sample for <type>[_name]_sampling_frequency.
What: /sys/bus/iio/devices/iio:deviceX/conversion_mode
KernelVersion: 4.2
Contact: linux-iio@vger.kernel.org
Description:
Specifies the hardware conversion mode used. The three
available modes are "normal", "high-speed" and "low-power",
where the last is the default mode.
...@@ -4,4 +4,18 @@ KernelVersion: 3.10 ...@@ -4,4 +4,18 @@ KernelVersion: 3.10
Contact: Samuel Ortiz <sameo@linux.intel.com> Contact: Samuel Ortiz <sameo@linux.intel.com>
linux-mei@linux.intel.com linux-mei@linux.intel.com
Description: Stores the same MODALIAS value emitted by uevent Description: Stores the same MODALIAS value emitted by uevent
Format: mei:<mei device name> Format: mei:<mei device name>:<device uuid>:
What: /sys/bus/mei/devices/.../name
Date: May 2015
KernelVersion: 4.2
Contact: Tomas Winkler <tomas.winkler@intel.com>
Description: Stores mei client device name
Format: string
What: /sys/bus/mei/devices/.../uuid
Date: May 2015
KernelVersion: 4.2
Contact: Tomas Winkler <tomas.winkler@intel.com>
Description: Stores mei client device uuid
Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
What: /sys/bus/pci/drivers/janz-cmodio/.../modulbus_number
Date: May 2010
KernelVersion: 2.6.35
Contact: Ira W. Snyder <ira.snyder@gmail.com>
Description:
Value representing the HEX switch S2 of the janz carrier board CMOD-IO or CAN-PCI2
Read-only: value of the configuration switch (0..15)
...@@ -4,14 +4,14 @@ driver is bound with root hub device. ...@@ -4,14 +4,14 @@ driver is bound with root hub device.
What: /sys/bus/usb/devices/.../get_dev_desc What: /sys/bus/usb/devices/.../get_dev_desc
Date: March 2014 Date: March 2014
Contact: Pratyush Anand <pratyush.anand@st.com> Contact: Pratyush Anand <pratyush.anand@gmail.com>
Description: Description:
Write to this node to issue "Get Device Descriptor" Write to this node to issue "Get Device Descriptor"
for Link Layer Validation device. It is needed for TD.7.06. for Link Layer Validation device. It is needed for TD.7.06.
What: /sys/bus/usb/devices/.../u1_timeout What: /sys/bus/usb/devices/.../u1_timeout
Date: March 2014 Date: March 2014
Contact: Pratyush Anand <pratyush.anand@st.com> Contact: Pratyush Anand <pratyush.anand@gmail.com>
Description: Description:
Set "U1 timeout" for the downstream port where Link Layer Set "U1 timeout" for the downstream port where Link Layer
Validation device is connected. Timeout value must be between 0 Validation device is connected. Timeout value must be between 0
...@@ -19,7 +19,7 @@ Description: ...@@ -19,7 +19,7 @@ Description:
What: /sys/bus/usb/devices/.../u2_timeout What: /sys/bus/usb/devices/.../u2_timeout
Date: March 2014 Date: March 2014
Contact: Pratyush Anand <pratyush.anand@st.com> Contact: Pratyush Anand <pratyush.anand@gmail.com>
Description: Description:
Set "U2 timeout" for the downstream port where Link Layer Set "U2 timeout" for the downstream port where Link Layer
Validation device is connected. Timeout value must be between 0 Validation device is connected. Timeout value must be between 0
...@@ -27,21 +27,21 @@ Description: ...@@ -27,21 +27,21 @@ Description:
What: /sys/bus/usb/devices/.../hot_reset What: /sys/bus/usb/devices/.../hot_reset
Date: March 2014 Date: March 2014
Contact: Pratyush Anand <pratyush.anand@st.com> Contact: Pratyush Anand <pratyush.anand@gmail.com>
Description: Description:
Write to this node to issue "Reset" for Link Layer Validation Write to this node to issue "Reset" for Link Layer Validation
device. It is needed for TD.7.29, TD.7.31, TD.7.34 and TD.7.35. device. It is needed for TD.7.29, TD.7.31, TD.7.34 and TD.7.35.
What: /sys/bus/usb/devices/.../u3_entry What: /sys/bus/usb/devices/.../u3_entry
Date: March 2014 Date: March 2014
Contact: Pratyush Anand <pratyush.anand@st.com> Contact: Pratyush Anand <pratyush.anand@gmail.com>
Description: Description:
Write to this node to issue "U3 entry" for Link Layer Write to this node to issue "U3 entry" for Link Layer
Validation device. It is needed for TD.7.35 and TD.7.36. Validation device. It is needed for TD.7.35 and TD.7.36.
What: /sys/bus/usb/devices/.../u3_exit What: /sys/bus/usb/devices/.../u3_exit
Date: March 2014 Date: March 2014
Contact: Pratyush Anand <pratyush.anand@st.com> Contact: Pratyush Anand <pratyush.anand@gmail.com>
Description: Description:
Write to this node to issue "U3 exit" for Link Layer Write to this node to issue "U3 exit" for Link Layer
Validation device. It is needed for TD.7.36. Validation device. It is needed for TD.7.36.
...@@ -6,6 +6,17 @@ Example: The real path of the attribute /sys/class/cxl/afu0.0s/irqs_max is ...@@ -6,6 +6,17 @@ Example: The real path of the attribute /sys/class/cxl/afu0.0s/irqs_max is
Slave contexts (eg. /sys/class/cxl/afu0.0s): Slave contexts (eg. /sys/class/cxl/afu0.0s):
What: /sys/class/cxl/<afu>/afu_err_buf
Date: September 2014
Contact: linuxppc-dev@lists.ozlabs.org
Description: read only
AFU Error Buffer contents. The contents of this file are
application specific and depends on the AFU being used.
Applications interacting with the AFU can use this attribute
to know about the current error condition and take appropriate
action like logging the event etc.
What: /sys/class/cxl/<afu>/irqs_max What: /sys/class/cxl/<afu>/irqs_max
Date: September 2014 Date: September 2014
Contact: linuxppc-dev@lists.ozlabs.org Contact: linuxppc-dev@lists.ozlabs.org
...@@ -15,6 +26,7 @@ Description: read/write ...@@ -15,6 +26,7 @@ Description: read/write
that hardware can support (eg. 2037). Write values will limit that hardware can support (eg. 2037). Write values will limit
userspace applications to that many userspace interrupts. Must userspace applications to that many userspace interrupts. Must
be >= irqs_min. be >= irqs_min.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/irqs_min What: /sys/class/cxl/<afu>/irqs_min
Date: September 2014 Date: September 2014
...@@ -24,6 +36,7 @@ Description: read only ...@@ -24,6 +36,7 @@ Description: read only
userspace must request on a CXL_START_WORK ioctl. Userspace may userspace must request on a CXL_START_WORK ioctl. Userspace may
omit the num_interrupts field in the START_WORK IOCTL to get omit the num_interrupts field in the START_WORK IOCTL to get
this minimum automatically. this minimum automatically.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/mmio_size What: /sys/class/cxl/<afu>/mmio_size
Date: September 2014 Date: September 2014
...@@ -31,6 +44,7 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -31,6 +44,7 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Decimal value of the size of the MMIO space that may be mmaped Decimal value of the size of the MMIO space that may be mmaped
by userspace. by userspace.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/modes_supported What: /sys/class/cxl/<afu>/modes_supported
Date: September 2014 Date: September 2014
...@@ -38,6 +52,7 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -38,6 +52,7 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
List of the modes this AFU supports. One per line. List of the modes this AFU supports. One per line.
Valid entries are: "dedicated_process" and "afu_directed" Valid entries are: "dedicated_process" and "afu_directed"
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/mode What: /sys/class/cxl/<afu>/mode
Date: September 2014 Date: September 2014
...@@ -46,6 +61,7 @@ Description: read/write ...@@ -46,6 +61,7 @@ Description: read/write
The current mode the AFU is using. Will be one of the modes The current mode the AFU is using. Will be one of the modes
given in modes_supported. Writing will change the mode given in modes_supported. Writing will change the mode
provided that no user contexts are attached. provided that no user contexts are attached.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/prefault_mode What: /sys/class/cxl/<afu>/prefault_mode
...@@ -59,6 +75,7 @@ Description: read/write ...@@ -59,6 +75,7 @@ Description: read/write
descriptor as an effective address and descriptor as an effective address and
prefault what it points to. prefault what it points to.
all: all segments process calling START_WORK maps. all: all segments process calling START_WORK maps.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/reset What: /sys/class/cxl/<afu>/reset
Date: September 2014 Date: September 2014
...@@ -66,12 +83,14 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -66,12 +83,14 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: write only Description: write only
Writing 1 here will reset the AFU provided there are not Writing 1 here will reset the AFU provided there are not
contexts active on the AFU. contexts active on the AFU.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/api_version What: /sys/class/cxl/<afu>/api_version
Date: September 2014 Date: September 2014
Contact: linuxppc-dev@lists.ozlabs.org Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Decimal value of the current version of the kernel/user API. Decimal value of the current version of the kernel/user API.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/api_version_compatible What: /sys/class/cxl/<afu>/api_version_compatible
Date: September 2014 Date: September 2014
...@@ -79,6 +98,7 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -79,6 +98,7 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Decimal value of the the lowest version of the userspace API Decimal value of the the lowest version of the userspace API
this this kernel supports. this this kernel supports.
Users: https://github.com/ibm-capi/libcxl
AFU configuration records (eg. /sys/class/cxl/afu0.0/cr0): AFU configuration records (eg. /sys/class/cxl/afu0.0/cr0):
...@@ -92,6 +112,7 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -92,6 +112,7 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Hexadecimal value of the vendor ID found in this AFU Hexadecimal value of the vendor ID found in this AFU
configuration record. configuration record.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/cr<config num>/device What: /sys/class/cxl/<afu>/cr<config num>/device
Date: February 2015 Date: February 2015
...@@ -99,6 +120,7 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -99,6 +120,7 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Hexadecimal value of the device ID found in this AFU Hexadecimal value of the device ID found in this AFU
configuration record. configuration record.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/cr<config num>/class What: /sys/class/cxl/<afu>/cr<config num>/class
Date: February 2015 Date: February 2015
...@@ -106,6 +128,7 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -106,6 +128,7 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Hexadecimal value of the class code found in this AFU Hexadecimal value of the class code found in this AFU
configuration record. configuration record.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>/cr<config num>/config What: /sys/class/cxl/<afu>/cr<config num>/config
Date: February 2015 Date: February 2015
...@@ -115,6 +138,7 @@ Description: read only ...@@ -115,6 +138,7 @@ Description: read only
record. The format is expected to match the either the standard record. The format is expected to match the either the standard
or extended configuration space defined by the PCIe or extended configuration space defined by the PCIe
specification. specification.
Users: https://github.com/ibm-capi/libcxl
...@@ -126,18 +150,21 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -126,18 +150,21 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Decimal value of the size of the MMIO space that may be mmaped Decimal value of the size of the MMIO space that may be mmaped
by userspace. This includes all slave contexts space also. by userspace. This includes all slave contexts space also.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>m/pp_mmio_len What: /sys/class/cxl/<afu>m/pp_mmio_len
Date: September 2014 Date: September 2014
Contact: linuxppc-dev@lists.ozlabs.org Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Decimal value of the Per Process MMIO space length. Decimal value of the Per Process MMIO space length.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<afu>m/pp_mmio_off What: /sys/class/cxl/<afu>m/pp_mmio_off
Date: September 2014 Date: September 2014
Contact: linuxppc-dev@lists.ozlabs.org Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Decimal value of the Per Process MMIO space offset. Decimal value of the Per Process MMIO space offset.
Users: https://github.com/ibm-capi/libcxl
Card info (eg. /sys/class/cxl/card0) Card info (eg. /sys/class/cxl/card0)
...@@ -147,12 +174,14 @@ Date: September 2014 ...@@ -147,12 +174,14 @@ Date: September 2014
Contact: linuxppc-dev@lists.ozlabs.org Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Identifies the CAIA Version the card implements. Identifies the CAIA Version the card implements.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<card>/psl_revision What: /sys/class/cxl/<card>/psl_revision
Date: September 2014 Date: September 2014
Contact: linuxppc-dev@lists.ozlabs.org Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Identifies the revision level of the PSL. Identifies the revision level of the PSL.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<card>/base_image What: /sys/class/cxl/<card>/base_image
Date: September 2014 Date: September 2014
...@@ -162,6 +191,7 @@ Description: read only ...@@ -162,6 +191,7 @@ Description: read only
that support loadable PSLs. For FPGAs this field identifies that support loadable PSLs. For FPGAs this field identifies
the image contained in the on-adapter flash which is loaded the image contained in the on-adapter flash which is loaded
during the initial program load. during the initial program load.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<card>/image_loaded What: /sys/class/cxl/<card>/image_loaded
Date: September 2014 Date: September 2014
...@@ -169,6 +199,7 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -169,6 +199,7 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: read only Description: read only
Will return "user" or "factory" depending on the image loaded Will return "user" or "factory" depending on the image loaded
onto the card. onto the card.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<card>/load_image_on_perst What: /sys/class/cxl/<card>/load_image_on_perst
Date: December 2014 Date: December 2014
...@@ -183,6 +214,7 @@ Description: read/write ...@@ -183,6 +214,7 @@ Description: read/write
user or factory image to be loaded. user or factory image to be loaded.
Default is to reload on PERST whichever image the card has Default is to reload on PERST whichever image the card has
loaded. loaded.
Users: https://github.com/ibm-capi/libcxl
What: /sys/class/cxl/<card>/reset What: /sys/class/cxl/<card>/reset
Date: October 2014 Date: October 2014
...@@ -190,3 +222,4 @@ Contact: linuxppc-dev@lists.ozlabs.org ...@@ -190,3 +222,4 @@ Contact: linuxppc-dev@lists.ozlabs.org
Description: write only Description: write only
Writing 1 will issue a PERST to card which may cause the card Writing 1 will issue a PERST to card which may cause the card
to reload the FPGA depending on load_image_on_perst. to reload the FPGA depending on load_image_on_perst.
Users: https://github.com/ibm-capi/libcxl
...@@ -39,6 +39,25 @@ Description: ...@@ -39,6 +39,25 @@ Description:
Format is a string, e.g: 00:11:22:33:44:55 for an Ethernet MAC Format is a string, e.g: 00:11:22:33:44:55 for an Ethernet MAC
address. address.
What: /sys/class/net/<bridge iface>/bridge/group_fwd_mask
Date: January 2012
KernelVersion: 3.2
Contact: netdev@vger.kernel.org
Description:
Bitmask to allow forwarding of link local frames with address
01-80-C2-00-00-0X on a bridge device. Only values that set bits
not matching BR_GROUPFWD_RESTRICTED in net/bridge/br_private.h
allowed.
Default value 0 does not forward any link local frames.
Restricted bits:
0: 01-80-C2-00-00-00 Bridge Group Address used for STP
1: 01-80-C2-00-00-01 (MAC Control) 802.3 used for MAC PAUSE
2: 01-80-C2-00-00-02 (Link Aggregation) 802.3ad
Any values not setting these bits can be used. Take special
care when forwarding control frames e.g. 802.1X-PAE or LLDP.
What: /sys/class/net/<iface>/broadcast What: /sys/class/net/<iface>/broadcast
Date: April 2005 Date: April 2005
KernelVersion: 2.6.12 KernelVersion: 2.6.12
......
What: /sys/class/net/<iface>/termination
Date: May 2010
KernelVersion: 2.6.35
Contact: Ira W. Snyder <ira.snyder@gmail.com>
Description:
Value representing the can bus termination
Default: 1 (termination active)
Reading: get actual termination state
Writing: set actual termination state (0=no termination, 1=termination active)
What: /sys/class/net/<iface>/fwinfo
Date: May 2015
KernelVersion: 3.19
Contact: Andreas Gröger <andreas24groeger@gmail.com>
Description:
Firmware stamp of ican3 module
Read-only: 32 byte string identification of the ICAN3 module
(known values: "JANZ-ICAN3 ICANOS 1.xx", "JANZ-ICAN3 CAL/CANopen 1.xx")
What: /sys/class/scsi_tape/*/stats/in_flight
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
Show the number of I/Os currently in-flight between the st
module and the SCSI mid-layer.
Users:
What: /sys/class/scsi_tape/*/stats/io_ns
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
Shows the total amount of time spent waiting for all I/O
to and from the tape drive to complete. This includes all
reads, writes, and other SCSI commands issued to the tape
drive. An example of other SCSI commands would be tape
movement such as a rewind when a rewind tape device is
closed. This item is measured in nanoseconds.
To determine the amount of time spent waiting for other I/O
to complete subtract read_ns and write_ns from this value.
Users:
What: /sys/class/scsi_tape/*/stats/other_cnt
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
The number of I/O requests issued to the tape drive other
than SCSI read/write requests.
Users:
What: /sys/class/scsi_tape/*/stats/read_byte_cnt
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
Shows the total number of bytes requested from the tape drive.
This value is presented in bytes because tape drives support
variable length block sizes.
Users:
What: /sys/class/scsi_tape/*/stats/read_cnt
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
Shows the total number of read requests issued to the tape
drive.
Users:
What: /sys/class/scsi_tape/*/stats/read_ns
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
Shows the total amount of time in nanoseconds waiting for
read I/O requests to complete.
Users:
What: /sys/class/scsi_tape/*/stats/write_byte_cnt
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
Shows the total number of bytes written to the tape drive.
This value is presented in bytes because tape drives support
variable length block sizes.
Users:
What: /sys/class/scsi_tape/*/stats/write_cnt
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
Shows the total number of write requests issued to the tape
drive.
Users:
What: /sys/class/scsi_tape/*/stats/write_ms
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
Shows the total amount of time in nanoseconds waiting for
write I/O requests to complete.
Users:
What: /sys/class/scsi_tape/*/stats/resid_cnt
Date: Apr 2015
KernelVersion: 4.2
Contact: Shane Seymour <shane.seymour@hp.com>
Description:
Shows the number of times we found that a residual >0
was found when the SCSI midlayer indicated that there was
an error. For reads this may be a case of someone issuing
reads greater than the block size.
Users:
What: /sys/class/zram-control/
Date: August 2015
KernelVersion: 4.2
Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Description:
The zram-control/ class sub-directory belongs to zram
device class
What: /sys/class/zram-control/hot_add
Date: August 2015
KernelVersion: 4.2
Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Description:
RO attribute. Read operation will cause zram to add a new
device and return its device id back to user (so one can
use /dev/zram<id>), or error code.
What: /sys/class/zram-control/hot_remove
Date: August 2015
KernelVersion: 4.2
Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Description:
WO attribute. Remove a specific /dev/zramX device, where X
is a device_id provided by user.
...@@ -243,7 +243,7 @@ Description: Parameters for the CPU cache attributes ...@@ -243,7 +243,7 @@ Description: Parameters for the CPU cache attributes
coherency_line_size: the minimum amount of data in bytes that gets coherency_line_size: the minimum amount of data in bytes that gets
transferred from memory to cache transferred from memory to cache
level: the cache hierarcy in the multi-level cache configuration level: the cache hierarchy in the multi-level cache configuration
number_of_sets: total number of sets in the cache, a set is a number_of_sets: total number of sets in the cache, a set is a
collection of cache lines with the same cache index collection of cache lines with the same cache index
......
What: /sys/module/hid_logitech/drivers/hid:logitech/<dev>/range. What: /sys/bus/hid/drivers/logitech/<dev>/range
Date: July 2011 Date: July 2011
KernelVersion: 3.2 KernelVersion: 3.2
Contact: Michal Malý <madcatxster@gmail.com> Contact: Michal Malý <madcatxster@devoid-pointer.net>
Description: Display minimum, maximum and current range of the steering Description: Display minimum, maximum and current range of the steering
wheel. Writing a value within min and max boundaries sets the wheel. Writing a value within min and max boundaries sets the
range of the wheel. range of the wheel.
...@@ -9,7 +9,7 @@ Description: Display minimum, maximum and current range of the steering ...@@ -9,7 +9,7 @@ Description: Display minimum, maximum and current range of the steering
What: /sys/bus/hid/drivers/logitech/<dev>/alternate_modes What: /sys/bus/hid/drivers/logitech/<dev>/alternate_modes
Date: Feb 2015 Date: Feb 2015
KernelVersion: 4.1 KernelVersion: 4.1
Contact: Michal Malý <madcatxster@gmail.com> Contact: Michal Malý <madcatxster@devoid-pointer.net>
Description: Displays a set of alternate modes supported by a wheel. Each Description: Displays a set of alternate modes supported by a wheel. Each
mode is listed as follows: mode is listed as follows:
Tag: Mode Name Tag: Mode Name
...@@ -45,7 +45,7 @@ Description: Displays a set of alternate modes supported by a wheel. Each ...@@ -45,7 +45,7 @@ Description: Displays a set of alternate modes supported by a wheel. Each
What: /sys/bus/hid/drivers/logitech/<dev>/real_id What: /sys/bus/hid/drivers/logitech/<dev>/real_id
Date: Feb 2015 Date: Feb 2015
KernelVersion: 4.1 KernelVersion: 4.1
Contact: Michal Malý <madcatxster@gmail.com> Contact: Michal Malý <madcatxster@devoid-pointer.net>
Description: Displays the real model of the wheel regardless of any Description: Displays the real model of the wheel regardless of any
alternate mode the wheel might be switched to. alternate mode the wheel might be switched to.
It is a read-only value. It is a read-only value.
......
What: /sys/firmware/dmi/
Date: February 2011
Contact: Mike Waychison <mikew@google.com>
Description:
Many machines' firmware (x86 and ia64) export DMI /
SMBIOS tables to the operating system. Getting at this
information is often valuable to userland, especially in
cases where there are OEM extensions used.
The kernel itself does not rely on the majority of the
information in these tables being correct. It equally
cannot ensure that the data as exported to userland is
without error either.
DMI is structured as a large table of entries, where
each entry has a common header indicating the type and
length of the entry, as well as a firmware-provided
'handle' that is supposed to be unique amongst all
entries.
Some entries are required by the specification, but many
others are optional. In general though, users should
never expect to find a specific entry type on their
system unless they know for certain what their firmware
is doing. Machine to machine experiences will vary.
Multiple entries of the same type are allowed. In order
to handle these duplicate entry types, each entry is
assigned by the operating system an 'instance', which is
derived from an entry type's ordinal position. That is
to say, if there are 'N' multiple entries with the same type
'T' in the DMI tables (adjacent or spread apart, it
doesn't matter), they will be represented in sysfs as
entries "T-0" through "T-(N-1)":
Example entry directories:
/sys/firmware/dmi/entries/17-0
/sys/firmware/dmi/entries/17-1
/sys/firmware/dmi/entries/17-2
/sys/firmware/dmi/entries/17-3
...
Instance numbers are used in lieu of the firmware
assigned entry handles as the kernel itself makes no
guarantees that handles as exported are unique, and
there are likely firmware images that get this wrong in
the wild.
Each DMI entry in sysfs has the common header values
exported as attributes:
handle : The 16bit 'handle' that is assigned to this
entry by the firmware. This handle may be
referred to by other entries.
length : The length of the entry, as presented in the
entry itself. Note that this is _not the
total count of bytes associated with the
entry_. This value represents the length of
the "formatted" portion of the entry. This
"formatted" region is sometimes followed by
the "unformatted" region composed of nul
terminated strings, with termination signalled
by a two nul characters in series.
raw : The raw bytes of the entry. This includes the
"formatted" portion of the entry, the
"unformatted" strings portion of the entry,
and the two terminating nul characters.
type : The type of the entry. This value is the same
as found in the directory name. It indicates
how the rest of the entry should be interpreted.
instance: The instance ordinal of the entry for the
given type. This value is the same as found
in the parent directory name.
position: The ordinal position (zero-based) of the entry
within the entirety of the DMI entry table.
=== Entry Specialization ===
Some entry types may have other information available in
sysfs. Not all types are specialized.
--- Type 15 - System Event Log ---
This entry allows the firmware to export a log of
events the system has taken. This information is
typically backed by nvram, but the implementation
details are abstracted by this table. This entry's data
is exported in the directory:
/sys/firmware/dmi/entries/15-0/system_event_log
and has the following attributes (documented in the
SMBIOS / DMI specification under "System Event Log (Type 15)":
area_length
header_start_offset
data_start_offset
access_method
status
change_token
access_method_address
header_format
per_log_type_descriptor_length
type_descriptors_supported_count
As well, the kernel exports the binary attribute:
raw_event_log : The raw binary bits of the event log
as described by the DMI entry.
What: /sys/firmware/dmi/entries/
Date: February 2011
Contact: Mike Waychison <mikew@google.com>
Description:
Many machines' firmware (x86 and ia64) export DMI /
SMBIOS tables to the operating system. Getting at this
information is often valuable to userland, especially in
cases where there are OEM extensions used.
The kernel itself does not rely on the majority of the
information in these tables being correct. It equally
cannot ensure that the data as exported to userland is
without error either.
DMI is structured as a large table of entries, where
each entry has a common header indicating the type and
length of the entry, as well as a firmware-provided
'handle' that is supposed to be unique amongst all
entries.
Some entries are required by the specification, but many
others are optional. In general though, users should
never expect to find a specific entry type on their
system unless they know for certain what their firmware
is doing. Machine to machine experiences will vary.
Multiple entries of the same type are allowed. In order
to handle these duplicate entry types, each entry is
assigned by the operating system an 'instance', which is
derived from an entry type's ordinal position. That is
to say, if there are 'N' multiple entries with the same type
'T' in the DMI tables (adjacent or spread apart, it
doesn't matter), they will be represented in sysfs as
entries "T-0" through "T-(N-1)":
Example entry directories:
/sys/firmware/dmi/entries/17-0
/sys/firmware/dmi/entries/17-1
/sys/firmware/dmi/entries/17-2
/sys/firmware/dmi/entries/17-3
...
Instance numbers are used in lieu of the firmware
assigned entry handles as the kernel itself makes no
guarantees that handles as exported are unique, and
there are likely firmware images that get this wrong in
the wild.
Each DMI entry in sysfs has the common header values
exported as attributes:
handle : The 16bit 'handle' that is assigned to this
entry by the firmware. This handle may be
referred to by other entries.
length : The length of the entry, as presented in the
entry itself. Note that this is _not the
total count of bytes associated with the
entry_. This value represents the length of
the "formatted" portion of the entry. This
"formatted" region is sometimes followed by
the "unformatted" region composed of nul
terminated strings, with termination signalled
by a two nul characters in series.
raw : The raw bytes of the entry. This includes the
"formatted" portion of the entry, the
"unformatted" strings portion of the entry,
and the two terminating nul characters.
type : The type of the entry. This value is the same
as found in the directory name. It indicates
how the rest of the entry should be interpreted.
instance: The instance ordinal of the entry for the
given type. This value is the same as found
in the parent directory name.
position: The ordinal position (zero-based) of the entry
within the entirety of the DMI entry table.
=== Entry Specialization ===
Some entry types may have other information available in
sysfs. Not all types are specialized.
--- Type 15 - System Event Log ---
This entry allows the firmware to export a log of
events the system has taken. This information is
typically backed by nvram, but the implementation
details are abstracted by this table. This entry's data
is exported in the directory:
/sys/firmware/dmi/entries/15-0/system_event_log
and has the following attributes (documented in the
SMBIOS / DMI specification under "System Event Log (Type 15)":
area_length
header_start_offset
data_start_offset
access_method
status
change_token
access_method_address
header_format
per_log_type_descriptor_length
type_descriptors_supported_count
As well, the kernel exports the binary attribute:
raw_event_log : The raw binary bits of the event log
as described by the DMI entry.
What: /sys/firmware/dmi/tables/
Date: April 2015
Contact: Ivan Khoronzhuk <ivan.khoronzhuk@globallogic.com>
Description:
The firmware provides DMI structures as a packed list of
data referenced by a SMBIOS table entry point. The SMBIOS
entry point contains general information, like SMBIOS
version, DMI table size, etc. The structure, content and
size of SMBIOS entry point is dependent on SMBIOS version.
The format of SMBIOS entry point and DMI structures
can be read in SMBIOS specification.
The dmi/tables provides raw SMBIOS entry point and DMI tables
through sysfs as an alternative to utilities reading them
from /dev/mem. The raw SMBIOS entry point and DMI table are
presented as binary attributes and are accessible via:
/sys/firmware/dmi/tables/smbios_entry_point
/sys/firmware/dmi/tables/DMI
The complete DMI information can be obtained using these two
tables.
...@@ -18,3 +18,13 @@ Contact: Dave Young <dyoung@redhat.com> ...@@ -18,3 +18,13 @@ Contact: Dave Young <dyoung@redhat.com>
Description: It shows the physical address of config table entry in the EFI Description: It shows the physical address of config table entry in the EFI
system table. system table.
Users: Kexec Users: Kexec
What: /sys/firmware/efi/systab
Date: April 2005
Contact: linux-efi@vger.kernel.org
Description: Displays the physical addresses of all EFI Configuration
Tables found via the EFI System Table. The order in
which the tables are printed forms an ABI and newer
versions are always printed first, i.e. ACPI20 comes
before ACPI.
Users: dmidecode
What: /sys/firmware/efi/esrt/
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: Provides userland access to read the EFI System Resource Table
(ESRT), a catalog of firmware for which can be updated with
the UEFI UpdateCapsule mechanism described in section 7.5 of
the UEFI Standard.
Users: fwupdate - https://github.com/rhinstaller/fwupdate
What: /sys/firmware/efi/esrt/fw_resource_count
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: The number of entries in the ESRT
What: /sys/firmware/efi/esrt/fw_resource_count_max
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: The maximum number of entries that /could/ be registered
in the allocation the table is currently in. This is
really only useful to the system firmware itself.
What: /sys/firmware/efi/esrt/fw_resource_version
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: The version of the ESRT structure provided by the firmware.
What: /sys/firmware/efi/esrt/entries/entry$N/
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: Each ESRT entry is identified by a GUID, and each gets a
subdirectory under entries/ .
example: /sys/firmware/efi/esrt/entries/entry0/
What: /sys/firmware/efi/esrt/entries/entry$N/fw_type
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: What kind of firmware entry this is:
0 - Unknown
1 - System Firmware
2 - Device Firmware
3 - UEFI Driver
What: /sys/firmware/efi/esrt/entries/entry$N/fw_class
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: This is the entry's guid, and will match the directory name.
What: /sys/firmware/efi/esrt/entries/entry$N/fw_version
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: The version of the firmware currently installed. This is a
32-bit unsigned integer.
What: /sys/firmware/efi/esrt/entries/entry$N/lowest_supported_fw_version
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: The lowest version of the firmware that can be installed.
What: /sys/firmware/efi/esrt/entries/entry$N/capsule_flags
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: Flags that must be passed to UpdateCapsule()
What: /sys/firmware/efi/esrt/entries/entry$N/last_attempt_version
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: The last firmware version for which an update was attempted.
What: /sys/firmware/efi/esrt/entries/entry$N/last_attempt_status
Date: February 2015
Contact: Peter Jones <pjones@redhat.com>
Description: The result of the last firmware update attempt for the
firmware resource entry.
0 - Success
1 - Insufficient resources
2 - Incorrect version
3 - Invalid format
4 - Authentication error
5 - AC power event
6 - Battery power event
What: /sys/bus/platform/devices/*twl4030-usb/vbus
Description:
Read-only status reporting if VBUS (approx 5V)
is being supplied by the USB bus.
Possible values: "on", "off".
Changes are notified via select/poll.
...@@ -670,7 +670,7 @@ functions: ...@@ -670,7 +670,7 @@ functions:
typeof(x) ret; \ typeof(x) ret; \
ret = calc_ret(x); \ ret = calc_ret(x); \
(ret); \ (ret); \
)} })
ret is a common name for a local variable - __foo_ret is less likely ret is a common name for a local variable - __foo_ret is less likely
to collide with an existing variable. to collide with an existing variable.
......
...@@ -25,13 +25,18 @@ physical addresses. These are the addresses in /proc/iomem. The physical ...@@ -25,13 +25,18 @@ physical addresses. These are the addresses in /proc/iomem. The physical
address is not directly useful to a driver; it must use ioremap() to map address is not directly useful to a driver; it must use ioremap() to map
the space and produce a virtual address. the space and produce a virtual address.
I/O devices use a third kind of address: a "bus address" or "DMA address". I/O devices use a third kind of address: a "bus address". If a device has
If a device has registers at an MMIO address, or if it performs DMA to read registers at an MMIO address, or if it performs DMA to read or write system
or write system memory, the addresses used by the device are bus addresses. memory, the addresses used by the device are bus addresses. In some
In some systems, bus addresses are identical to CPU physical addresses, but systems, bus addresses are identical to CPU physical addresses, but in
in general they are not. IOMMUs and host bridges can produce arbitrary general they are not. IOMMUs and host bridges can produce arbitrary
mappings between physical and bus addresses. mappings between physical and bus addresses.
From a device's point of view, DMA uses the bus address space, but it may
be restricted to a subset of that space. For example, even if a system
supports 64-bit addresses for main memory and PCI BARs, it may use an IOMMU
so devices only need to use 32-bit DMA addresses.
Here's a picture and some examples: Here's a picture and some examples:
CPU CPU Bus CPU CPU Bus
...@@ -72,11 +77,11 @@ can use virtual address X to access the buffer, but the device itself ...@@ -72,11 +77,11 @@ can use virtual address X to access the buffer, but the device itself
cannot because DMA doesn't go through the CPU virtual memory system. cannot because DMA doesn't go through the CPU virtual memory system.
In some simple systems, the device can do DMA directly to physical address In some simple systems, the device can do DMA directly to physical address
Y. But in many others, there is IOMMU hardware that translates bus Y. But in many others, there is IOMMU hardware that translates DMA
addresses to physical addresses, e.g., it translates Z to Y. This is part addresses to physical addresses, e.g., it translates Z to Y. This is part
of the reason for the DMA API: the driver can give a virtual address X to of the reason for the DMA API: the driver can give a virtual address X to
an interface like dma_map_single(), which sets up any required IOMMU an interface like dma_map_single(), which sets up any required IOMMU
mapping and returns the bus address Z. The driver then tells the device to mapping and returns the DMA address Z. The driver then tells the device to
do DMA to Z, and the IOMMU maps it to the buffer at address Y in system do DMA to Z, and the IOMMU maps it to the buffer at address Y in system
RAM. RAM.
...@@ -98,7 +103,7 @@ First of all, you should make sure ...@@ -98,7 +103,7 @@ First of all, you should make sure
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
is in your driver, which provides the definition of dma_addr_t. This type is in your driver, which provides the definition of dma_addr_t. This type
can hold any valid DMA or bus address for the platform and should be used can hold any valid DMA address for the platform and should be used
everywhere you hold a DMA address returned from the DMA mapping functions. everywhere you hold a DMA address returned from the DMA mapping functions.
What memory is DMA'able? What memory is DMA'able?
...@@ -240,7 +245,7 @@ the case would look like this: ...@@ -240,7 +245,7 @@ the case would look like this:
if (!dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64))) { if (!dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64))) {
using_dac = 1; using_dac = 1;
consistent_using_dac = 1; consistent_using_dac = 1;
} else if (!dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32))) { } else if (!dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32))) {
using_dac = 0; using_dac = 0;
consistent_using_dac = 0; consistent_using_dac = 0;
...@@ -316,7 +321,7 @@ There are two types of DMA mappings: ...@@ -316,7 +321,7 @@ There are two types of DMA mappings:
Think of "consistent" as "synchronous" or "coherent". Think of "consistent" as "synchronous" or "coherent".
The current default is to return consistent memory in the low 32 The current default is to return consistent memory in the low 32
bits of the bus space. However, for future compatibility you should bits of the DMA space. However, for future compatibility you should
set the consistent mask even if this default is fine for your set the consistent mask even if this default is fine for your
driver. driver.
...@@ -353,7 +358,7 @@ There are two types of DMA mappings: ...@@ -353,7 +358,7 @@ There are two types of DMA mappings:
transfer, unmapped right after it (unless you use dma_sync_* below) transfer, unmapped right after it (unless you use dma_sync_* below)
and for which hardware can optimize for sequential accesses. and for which hardware can optimize for sequential accesses.
This of "streaming" as "asynchronous" or "outside the coherency Think of "streaming" as "asynchronous" or "outside the coherency
domain". domain".
Good examples of what to use streaming mappings for are: Good examples of what to use streaming mappings for are:
...@@ -403,7 +408,7 @@ dma_alloc_coherent() returns two values: the virtual address which you ...@@ -403,7 +408,7 @@ dma_alloc_coherent() returns two values: the virtual address which you
can use to access it from the CPU and dma_handle which you pass to the can use to access it from the CPU and dma_handle which you pass to the
card. card.
The CPU virtual address and the DMA bus address are both The CPU virtual address and the DMA address are both
guaranteed to be aligned to the smallest PAGE_SIZE order which guaranteed to be aligned to the smallest PAGE_SIZE order which
is greater than or equal to the requested size. This invariant is greater than or equal to the requested size. This invariant
exists (for example) to guarantee that if you allocate a chunk exists (for example) to guarantee that if you allocate a chunk
...@@ -645,8 +650,8 @@ PLEASE NOTE: The 'nents' argument to the dma_unmap_sg call must be ...@@ -645,8 +650,8 @@ PLEASE NOTE: The 'nents' argument to the dma_unmap_sg call must be
dma_map_sg call. dma_map_sg call.
Every dma_map_{single,sg}() call should have its dma_unmap_{single,sg}() Every dma_map_{single,sg}() call should have its dma_unmap_{single,sg}()
counterpart, because the bus address space is a shared resource and counterpart, because the DMA address space is a shared resource and
you could render the machine unusable by consuming all bus addresses. you could render the machine unusable by consuming all DMA addresses.
If you need to use the same streaming DMA region multiple times and touch If you need to use the same streaming DMA region multiple times and touch
the data in between the DMA transfers, the buffer needs to be synced the data in between the DMA transfers, the buffer needs to be synced
......
...@@ -18,10 +18,10 @@ Part I - dma_ API ...@@ -18,10 +18,10 @@ Part I - dma_ API
To get the dma_ API, you must #include <linux/dma-mapping.h>. This To get the dma_ API, you must #include <linux/dma-mapping.h>. This
provides dma_addr_t and the interfaces described below. provides dma_addr_t and the interfaces described below.
A dma_addr_t can hold any valid DMA or bus address for the platform. It A dma_addr_t can hold any valid DMA address for the platform. It can be
can be given to a device to use as a DMA source or target. A CPU cannot given to a device to use as a DMA source or target. A CPU cannot reference
reference a dma_addr_t directly because there may be translation between a dma_addr_t directly because there may be translation between its physical
its physical address space and the bus address space. address space and the DMA address space.
Part Ia - Using large DMA-coherent buffers Part Ia - Using large DMA-coherent buffers
------------------------------------------ ------------------------------------------
...@@ -42,7 +42,7 @@ It returns a pointer to the allocated region (in the processor's virtual ...@@ -42,7 +42,7 @@ It returns a pointer to the allocated region (in the processor's virtual
address space) or NULL if the allocation failed. address space) or NULL if the allocation failed.
It also returns a <dma_handle> which may be cast to an unsigned integer the It also returns a <dma_handle> which may be cast to an unsigned integer the
same width as the bus and given to the device as the bus address base of same width as the bus and given to the device as the DMA address base of
the region. the region.
Note: consistent memory can be expensive on some platforms, and the Note: consistent memory can be expensive on some platforms, and the
...@@ -193,7 +193,7 @@ dma_map_single(struct device *dev, void *cpu_addr, size_t size, ...@@ -193,7 +193,7 @@ dma_map_single(struct device *dev, void *cpu_addr, size_t size,
enum dma_data_direction direction) enum dma_data_direction direction)
Maps a piece of processor virtual memory so it can be accessed by the Maps a piece of processor virtual memory so it can be accessed by the
device and returns the bus address of the memory. device and returns the DMA address of the memory.
The direction for both APIs may be converted freely by casting. The direction for both APIs may be converted freely by casting.
However the dma_ API uses a strongly typed enumerator for its However the dma_ API uses a strongly typed enumerator for its
...@@ -212,20 +212,20 @@ contiguous piece of memory. For this reason, memory to be mapped by ...@@ -212,20 +212,20 @@ contiguous piece of memory. For this reason, memory to be mapped by
this API should be obtained from sources which guarantee it to be this API should be obtained from sources which guarantee it to be
physically contiguous (like kmalloc). physically contiguous (like kmalloc).
Further, the bus address of the memory must be within the Further, the DMA address of the memory must be within the
dma_mask of the device (the dma_mask is a bit mask of the dma_mask of the device (the dma_mask is a bit mask of the
addressable region for the device, i.e., if the bus address of addressable region for the device, i.e., if the DMA address of
the memory ANDed with the dma_mask is still equal to the bus the memory ANDed with the dma_mask is still equal to the DMA
address, then the device can perform DMA to the memory). To address, then the device can perform DMA to the memory). To
ensure that the memory allocated by kmalloc is within the dma_mask, ensure that the memory allocated by kmalloc is within the dma_mask,
the driver may specify various platform-dependent flags to restrict the driver may specify various platform-dependent flags to restrict
the bus address range of the allocation (e.g., on x86, GFP_DMA the DMA address range of the allocation (e.g., on x86, GFP_DMA
guarantees to be within the first 16MB of available bus addresses, guarantees to be within the first 16MB of available DMA addresses,
as required by ISA devices). as required by ISA devices).
Note also that the above constraints on physical contiguity and Note also that the above constraints on physical contiguity and
dma_mask may not apply if the platform has an IOMMU (a device which dma_mask may not apply if the platform has an IOMMU (a device which
maps an I/O bus address to a physical memory address). However, to be maps an I/O DMA address to a physical memory address). However, to be
portable, device driver writers may *not* assume that such an IOMMU portable, device driver writers may *not* assume that such an IOMMU
exists. exists.
...@@ -296,7 +296,7 @@ reduce current DMA mapping usage or delay and try again later). ...@@ -296,7 +296,7 @@ reduce current DMA mapping usage or delay and try again later).
dma_map_sg(struct device *dev, struct scatterlist *sg, dma_map_sg(struct device *dev, struct scatterlist *sg,
int nents, enum dma_data_direction direction) int nents, enum dma_data_direction direction)
Returns: the number of bus address segments mapped (this may be shorter Returns: the number of DMA address segments mapped (this may be shorter
than <nents> passed in if some elements of the scatter/gather list are than <nents> passed in if some elements of the scatter/gather list are
physically or virtually adjacent and an IOMMU maps them with a single physically or virtually adjacent and an IOMMU maps them with a single
entry). entry).
...@@ -340,7 +340,7 @@ must be the same as those and passed in to the scatter/gather mapping ...@@ -340,7 +340,7 @@ must be the same as those and passed in to the scatter/gather mapping
API. API.
Note: <nents> must be the number you passed in, *not* the number of Note: <nents> must be the number you passed in, *not* the number of
bus address entries returned. DMA address entries returned.
void void
dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size, dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size,
...@@ -507,7 +507,7 @@ it's asked for coherent memory for this device. ...@@ -507,7 +507,7 @@ it's asked for coherent memory for this device.
phys_addr is the CPU physical address to which the memory is currently phys_addr is the CPU physical address to which the memory is currently
assigned (this will be ioremapped so the CPU can access the region). assigned (this will be ioremapped so the CPU can access the region).
device_addr is the bus address the device needs to be programmed device_addr is the DMA address the device needs to be programmed
with to actually address this memory (this will be handed out as the with to actually address this memory (this will be handed out as the
dma_addr_t in dma_alloc_coherent()). dma_addr_t in dma_alloc_coherent()).
......
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
<para> <para>
Note: The terms "transformation" and cipher algorithm are used Note: The terms "transformation" and cipher algorithm are used
interchangably. interchangeably.
</para> </para>
</sect1> </sect1>
...@@ -536,8 +536,8 @@ ...@@ -536,8 +536,8 @@
<para> <para>
For other use cases of AEAD ciphers, the ASCII art applies as For other use cases of AEAD ciphers, the ASCII art applies as
well, but the caller may not use the GIVCIPHER interface. In well, but the caller may not use the AEAD cipher with a separate
this case, the caller must generate the IV. IV generator. In this case, the caller must generate the IV.
</para> </para>
<para> <para>
...@@ -584,8 +584,8 @@ kernel crypto API | IPSEC Layer ...@@ -584,8 +584,8 @@ kernel crypto API | IPSEC Layer
| |
+-----------+ | +-----------+ |
| | (1) | | (1)
| givcipher | <----------------------------------- esp_output | aead | <----------------------------------- esp_output
| (seqiv) | ---+ | (seqniv) | ---+
+-----------+ | +-----------+ |
| (2) | (2)
+-----------+ | +-----------+ |
...@@ -620,8 +620,8 @@ kernel crypto API | IPSEC Layer ...@@ -620,8 +620,8 @@ kernel crypto API | IPSEC Layer
<orderedlist> <orderedlist>
<listitem> <listitem>
<para> <para>
esp_output() invokes crypto_aead_givencrypt() to trigger an encryption esp_output() invokes crypto_aead_encrypt() to trigger an encryption
operation of the GIVCIPHER implementation. operation of the AEAD cipher with IV generator.
</para> </para>
<para> <para>
...@@ -1563,7 +1563,7 @@ struct sockaddr_alg sa = { ...@@ -1563,7 +1563,7 @@ struct sockaddr_alg sa = {
<sect1><title>Zero-Copy Interface</title> <sect1><title>Zero-Copy Interface</title>
<para> <para>
In addition to the send/write/read/recv system call familty, the AF_ALG In addition to the send/write/read/recv system call family, the AF_ALG
interface can be accessed with the zero-copy interface of splice/vmsplice. interface can be accessed with the zero-copy interface of splice/vmsplice.
As the name indicates, the kernel tries to avoid a copy operation into As the name indicates, the kernel tries to avoid a copy operation into
kernel space. kernel space.
...@@ -1669,9 +1669,19 @@ read(opfd, out, outlen); ...@@ -1669,9 +1669,19 @@ read(opfd, out, outlen);
</chapter> </chapter>
<chapter id="API"><title>Programming Interface</title> <chapter id="API"><title>Programming Interface</title>
<para>
Please note that the kernel crypto API contains the AEAD givcrypt
API (crypto_aead_giv* and aead_givcrypt_* function calls in
include/crypto/aead.h). This API is obsolete and will be removed
in the future. To obtain the functionality of an AEAD cipher with
internal IV generation, use the IV generator as a regular cipher.
For example, rfc4106(gcm(aes)) is the AEAD cipher with external
IV generation and seqniv(rfc4106(gcm(aes))) implies that the kernel
crypto API generates the IV. Different IV generators are available.
</para>
<sect1><title>Block Cipher Context Data Structures</title> <sect1><title>Block Cipher Context Data Structures</title>
!Pinclude/linux/crypto.h Block Cipher Context Data Structures !Pinclude/linux/crypto.h Block Cipher Context Data Structures
!Finclude/linux/crypto.h aead_request !Finclude/crypto/aead.h aead_request
</sect1> </sect1>
<sect1><title>Block Cipher Algorithm Definitions</title> <sect1><title>Block Cipher Algorithm Definitions</title>
!Pinclude/linux/crypto.h Block Cipher Algorithm Definitions !Pinclude/linux/crypto.h Block Cipher Algorithm Definitions
...@@ -1680,7 +1690,7 @@ read(opfd, out, outlen); ...@@ -1680,7 +1690,7 @@ read(opfd, out, outlen);
!Finclude/linux/crypto.h aead_alg !Finclude/linux/crypto.h aead_alg
!Finclude/linux/crypto.h blkcipher_alg !Finclude/linux/crypto.h blkcipher_alg
!Finclude/linux/crypto.h cipher_alg !Finclude/linux/crypto.h cipher_alg
!Finclude/linux/crypto.h rng_alg !Finclude/crypto/rng.h rng_alg
</sect1> </sect1>
<sect1><title>Asynchronous Block Cipher API</title> <sect1><title>Asynchronous Block Cipher API</title>
!Pinclude/linux/crypto.h Asynchronous Block Cipher API !Pinclude/linux/crypto.h Asynchronous Block Cipher API
...@@ -1704,26 +1714,27 @@ read(opfd, out, outlen); ...@@ -1704,26 +1714,27 @@ read(opfd, out, outlen);
!Finclude/linux/crypto.h ablkcipher_request_set_crypt !Finclude/linux/crypto.h ablkcipher_request_set_crypt
</sect1> </sect1>
<sect1><title>Authenticated Encryption With Associated Data (AEAD) Cipher API</title> <sect1><title>Authenticated Encryption With Associated Data (AEAD) Cipher API</title>
!Pinclude/linux/crypto.h Authenticated Encryption With Associated Data (AEAD) Cipher API !Pinclude/crypto/aead.h Authenticated Encryption With Associated Data (AEAD) Cipher API
!Finclude/linux/crypto.h crypto_alloc_aead !Finclude/crypto/aead.h crypto_alloc_aead
!Finclude/linux/crypto.h crypto_free_aead !Finclude/crypto/aead.h crypto_free_aead
!Finclude/linux/crypto.h crypto_aead_ivsize !Finclude/crypto/aead.h crypto_aead_ivsize
!Finclude/linux/crypto.h crypto_aead_authsize !Finclude/crypto/aead.h crypto_aead_authsize
!Finclude/linux/crypto.h crypto_aead_blocksize !Finclude/crypto/aead.h crypto_aead_blocksize
!Finclude/linux/crypto.h crypto_aead_setkey !Finclude/crypto/aead.h crypto_aead_setkey
!Finclude/linux/crypto.h crypto_aead_setauthsize !Finclude/crypto/aead.h crypto_aead_setauthsize
!Finclude/linux/crypto.h crypto_aead_encrypt !Finclude/crypto/aead.h crypto_aead_encrypt
!Finclude/linux/crypto.h crypto_aead_decrypt !Finclude/crypto/aead.h crypto_aead_decrypt
</sect1> </sect1>
<sect1><title>Asynchronous AEAD Request Handle</title> <sect1><title>Asynchronous AEAD Request Handle</title>
!Pinclude/linux/crypto.h Asynchronous AEAD Request Handle !Pinclude/crypto/aead.h Asynchronous AEAD Request Handle
!Finclude/linux/crypto.h crypto_aead_reqsize !Finclude/crypto/aead.h crypto_aead_reqsize
!Finclude/linux/crypto.h aead_request_set_tfm !Finclude/crypto/aead.h aead_request_set_tfm
!Finclude/linux/crypto.h aead_request_alloc !Finclude/crypto/aead.h aead_request_alloc
!Finclude/linux/crypto.h aead_request_free !Finclude/crypto/aead.h aead_request_free
!Finclude/linux/crypto.h aead_request_set_callback !Finclude/crypto/aead.h aead_request_set_callback
!Finclude/linux/crypto.h aead_request_set_crypt !Finclude/crypto/aead.h aead_request_set_crypt
!Finclude/linux/crypto.h aead_request_set_assoc !Finclude/crypto/aead.h aead_request_set_assoc
!Finclude/crypto/aead.h aead_request_set_ad
</sect1> </sect1>
<sect1><title>Synchronous Block Cipher API</title> <sect1><title>Synchronous Block Cipher API</title>
!Pinclude/linux/crypto.h Synchronous Block Cipher API !Pinclude/linux/crypto.h Synchronous Block Cipher API
......
...@@ -2439,6 +2439,18 @@ void intel_crt_init(struct drm_device *dev) ...@@ -2439,6 +2439,18 @@ void intel_crt_init(struct drm_device *dev)
<title>Tile group</title> <title>Tile group</title>
!Pdrivers/gpu/drm/drm_crtc.c Tile group !Pdrivers/gpu/drm/drm_crtc.c Tile group
</sect2> </sect2>
<sect2>
<title>Bridges</title>
<sect3>
<title>Overview</title>
!Pdrivers/gpu/drm/drm_bridge.c overview
</sect3>
<sect3>
<title>Default bridge callback sequence</title>
!Pdrivers/gpu/drm/drm_bridge.c bridge callbacks
</sect3>
!Edrivers/gpu/drm/drm_bridge.c
</sect2>
</sect1> </sect1>
<!-- Internals: kms properties --> <!-- Internals: kms properties -->
...@@ -2573,7 +2585,22 @@ void intel_crt_init(struct drm_device *dev) ...@@ -2573,7 +2585,22 @@ void intel_crt_init(struct drm_device *dev)
<td valign="top" >Description/Restrictions</td> <td valign="top" >Description/Restrictions</td>
</tr> </tr>
<tr> <tr>
<td rowspan="36" valign="top" >DRM</td> <td rowspan="37" valign="top" >DRM</td>
<td valign="top" >Generic</td>
<td valign="top" >“rotation”</td>
<td valign="top" >BITMASK</td>
<td valign="top" >{ 0, "rotate-0" },
{ 1, "rotate-90" },
{ 2, "rotate-180" },
{ 3, "rotate-270" },
{ 4, "reflect-x" },
{ 5, "reflect-y" }</td>
<td valign="top" >CRTC, Plane</td>
<td valign="top" >rotate-(degrees) rotates the image by the specified amount in degrees
in counter clockwise direction. reflect-x and reflect-y reflects the
image along the specified axis prior to rotation</td>
</tr>
<tr>
<td rowspan="5" valign="top" >Connector</td> <td rowspan="5" valign="top" >Connector</td>
<td valign="top" >“EDID”</td> <td valign="top" >“EDID”</td>
<td valign="top" >BLOB | IMMUTABLE</td> <td valign="top" >BLOB | IMMUTABLE</td>
...@@ -2834,7 +2861,7 @@ void intel_crt_init(struct drm_device *dev) ...@@ -2834,7 +2861,7 @@ void intel_crt_init(struct drm_device *dev)
<td valign="top" >TBD</td> <td valign="top" >TBD</td>
</tr> </tr>
<tr> <tr>
<td rowspan="21" valign="top" >i915</td> <td rowspan="20" valign="top" >i915</td>
<td rowspan="2" valign="top" >Generic</td> <td rowspan="2" valign="top" >Generic</td>
<td valign="top" >"Broadcast RGB"</td> <td valign="top" >"Broadcast RGB"</td>
<td valign="top" >ENUM</td> <td valign="top" >ENUM</td>
...@@ -2850,14 +2877,6 @@ void intel_crt_init(struct drm_device *dev) ...@@ -2850,14 +2877,6 @@ void intel_crt_init(struct drm_device *dev)
<td valign="top" >TBD</td> <td valign="top" >TBD</td>
</tr> </tr>
<tr> <tr>
<td rowspan="1" valign="top" >Plane</td>
<td valign="top" >“rotation”</td>
<td valign="top" >BITMASK</td>
<td valign="top" >{ 0, "rotate-0" }, { 2, "rotate-180" }</td>
<td valign="top" >Plane</td>
<td valign="top" >TBD</td>
</tr>
<tr>
<td rowspan="17" valign="top" >SDVO-TV</td> <td rowspan="17" valign="top" >SDVO-TV</td>
<td valign="top" >“mode”</td> <td valign="top" >“mode”</td>
<td valign="top" >ENUM</td> <td valign="top" >ENUM</td>
...@@ -3365,19 +3384,7 @@ void intel_crt_init(struct drm_device *dev) ...@@ -3365,19 +3384,7 @@ void intel_crt_init(struct drm_device *dev)
</tr> </tr>
<tr> <tr>
<td rowspan="2" valign="top" >omap</td> <td rowspan="2" valign="top" >omap</td>
<td rowspan="2" valign="top" >Generic</td> <td valign="top" >Generic</td>
<td valign="top" >“rotation”</td>
<td valign="top" >BITMASK</td>
<td valign="top" >{ 0, "rotate-0" },
{ 1, "rotate-90" },
{ 2, "rotate-180" },
{ 3, "rotate-270" },
{ 4, "reflect-x" },
{ 5, "reflect-y" }</td>
<td valign="top" >CRTC, Plane</td>
<td valign="top" >TBD</td>
</tr>
<tr>
<td valign="top" >“zorder”</td> <td valign="top" >“zorder”</td>
<td valign="top" >RANGE</td> <td valign="top" >RANGE</td>
<td valign="top" >Min=0, Max=3</td> <td valign="top" >Min=0, Max=3</td>
...@@ -4067,7 +4074,7 @@ int num_ioctls;</synopsis> ...@@ -4067,7 +4074,7 @@ int num_ioctls;</synopsis>
<title>DPIO</title> <title>DPIO</title>
!Pdrivers/gpu/drm/i915/i915_reg.h DPIO !Pdrivers/gpu/drm/i915/i915_reg.h DPIO
<table id="dpiox2"> <table id="dpiox2">
<title>Dual channel PHY (VLV/CHV)</title> <title>Dual channel PHY (VLV/CHV/BXT)</title>
<tgroup cols="8"> <tgroup cols="8">
<colspec colname="c0" /> <colspec colname="c0" />
<colspec colname="c1" /> <colspec colname="c1" />
...@@ -4118,7 +4125,7 @@ int num_ioctls;</synopsis> ...@@ -4118,7 +4125,7 @@ int num_ioctls;</synopsis>
</tgroup> </tgroup>
</table> </table>
<table id="dpiox1"> <table id="dpiox1">
<title>Single channel PHY (CHV)</title> <title>Single channel PHY (CHV/BXT)</title>
<tgroup cols="4"> <tgroup cols="4">
<colspec colname="c0" /> <colspec colname="c0" />
<colspec colname="c1" /> <colspec colname="c1" />
...@@ -4153,6 +4160,12 @@ int num_ioctls;</synopsis> ...@@ -4153,6 +4160,12 @@ int num_ioctls;</synopsis>
</tgroup> </tgroup>
</table> </table>
</sect2> </sect2>
<sect2>
<title>CSR firmware support for DMC</title>
!Pdrivers/gpu/drm/i915/intel_csr.c csr support for dmc
!Idrivers/gpu/drm/i915/intel_csr.c
</sect2>
</sect1> </sect1>
<sect1> <sect1>
...@@ -4204,7 +4217,6 @@ int num_ioctls;</synopsis> ...@@ -4204,7 +4217,6 @@ int num_ioctls;</synopsis>
!Idrivers/gpu/drm/i915/i915_gem_shrinker.c !Idrivers/gpu/drm/i915/i915_gem_shrinker.c
</sect2> </sect2>
</sect1> </sect1>
<sect1> <sect1>
<title> Tracing </title> <title> Tracing </title>
<para> <para>
......
...@@ -954,6 +954,8 @@ printk(KERN_INFO "my ip: %pI4\n", &amp;ipaddress); ...@@ -954,6 +954,8 @@ printk(KERN_INFO "my ip: %pI4\n", &amp;ipaddress);
<function>MODULE_LICENSE()</function> that specifies a GPL <function>MODULE_LICENSE()</function> that specifies a GPL
compatible license. It implies that the function is considered compatible license. It implies that the function is considered
an internal implementation issue, and not really an interface. an internal implementation issue, and not really an interface.
Some maintainers and developers may however
require EXPORT_SYMBOL_GPL() when adding any new APIs or functionality.
</para> </para>
</sect1> </sect1>
</chapter> </chapter>
......
...@@ -65,29 +65,31 @@ IOCTLS = \ ...@@ -65,29 +65,31 @@ IOCTLS = \
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/video.h) \ $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/video.h) \
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/media.h) \ $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/media.h) \
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \ $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \
VIDIOC_SUBDEV_G_FRAME_INTERVAL \
VIDIOC_SUBDEV_S_FRAME_INTERVAL \ DEFINES = \
VIDIOC_SUBDEV_ENUM_MBUS_CODE \ $(shell perl -ne 'print "$$1 " if /\#define\s+(DTV_[^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/frontend.h) \
VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
VIDIOC_SUBDEV_G_SELECTION \
VIDIOC_SUBDEV_S_SELECTION \
TYPES = \ TYPES = \
$(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/uapi/linux/videodev2.h) \ $(shell perl -ne 'print "$$1 " if /^typedef\s+.*\s+(\S+)\;/' $(srctree)/include/uapi/linux/videodev2.h) \
$(shell perl -ne 'print "$$1 " if /^}\s+([a-z0-9_]+_t)/' $(srctree)/include/uapi/linux/dvb/frontend.h) $(shell perl -ne 'print "$$1 " if /^typedef\s+.*\s+(\S+)\;/' $(srctree)/include/uapi/linux/dvb/frontend.h)
ENUMS = \ ENUMS = \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/videodev2.h) \ $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/audio.h) \ $(srctree)/include/uapi/linux/videodev2.h \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/ca.h) \ $(srctree)/include/uapi/linux/dvb/audio.h \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/dmx.h) \ $(srctree)/include/uapi/linux/dvb/ca.h \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/frontend.h) \ $(srctree)/include/uapi/linux/dvb/dmx.h \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/net.h) \ $(srctree)/include/uapi/linux/dvb/frontend.h \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/video.h) \ $(srctree)/include/uapi/linux/dvb/net.h \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/media.h) \ $(srctree)/include/uapi/linux/dvb/video.h \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-mediabus.h) \ $(srctree)/include/uapi/linux/media.h \
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-subdev.h) $(srctree)/include/uapi/linux/v4l2-mediabus.h \
$(srctree)/include/uapi/linux/v4l2-subdev.h)
ENUM_DEFS = \
$(shell perl -e 'open IN,"cat @ARGV| cpp -fpreprocessed |"; while (<IN>) { if ($$enum) {print "$$1\n" if (/\s*([A-Z]\S+)\b/); } $$enum = 0 if ($$enum && /^\}/); $$enum = 1 if(/^\s*enum\s/); }; close IN;' \
$(srctree)/include/uapi/linux/dvb/dmx.h \
$(srctree)/include/uapi/linux/dvb/frontend.h)
STRUCTS = \ STRUCTS = \
$(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/videodev2.h) \ $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/videodev2.h) \
...@@ -95,7 +97,7 @@ STRUCTS = \ ...@@ -95,7 +97,7 @@ STRUCTS = \
$(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/ca.h) \ $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/ca.h) \
$(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/dmx.h) \ $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/dmx.h) \
$(shell perl -ne 'print "$$1 " if (!/dtv\_cmds\_h/ && /^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/frontend.h) \ $(shell perl -ne 'print "$$1 " if (!/dtv\_cmds\_h/ && /^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/frontend.h) \
$(shell perl -ne 'print "$$1 " if (/^struct\s+([A-Z][^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/net.h) \ $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/ && !/_old/)' $(srctree)/include/uapi/linux/dvb/net.h) \
$(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/video.h) \ $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/video.h) \
$(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/media.h) \ $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/media.h) \
$(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \ $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \
...@@ -179,7 +181,6 @@ DOCUMENTED = \ ...@@ -179,7 +181,6 @@ DOCUMENTED = \
-e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g" -e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g"
DVB_DOCUMENTED = \ DVB_DOCUMENTED = \
-e "s/\(linkend\=\"\)FE_SET_PROPERTY/\1FE_GET_PROPERTY/g" \
-e "s,\(struct\s\+\)\([a-z0-9_]\+\)\(\s\+{\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \ -e "s,\(struct\s\+\)\([a-z0-9_]\+\)\(\s\+{\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
-e "s,\(}\s\+\)\([a-z0-9_]\+_t\+\),\1\<link linkend=\"\2\">\2\<\/link\>,g" \ -e "s,\(}\s\+\)\([a-z0-9_]\+_t\+\),\1\<link linkend=\"\2\">\2\<\/link\>,g" \
-e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+[0-9]\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \ -e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+[0-9]\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
...@@ -188,14 +189,17 @@ DVB_DOCUMENTED = \ ...@@ -188,14 +189,17 @@ DVB_DOCUMENTED = \
-e "s,\(audio-mixer\|audio-karaoke\|audio-status\|ca-slot-info\|ca-descr-info\|ca-caps\|ca-msg\|ca-descr\|ca-pid\|dmx-filter\|dmx-caps\|video-system\|video-highlight\|video-spu\|video-spu-palette\|video-navi-pack\)-t,\1,g" \ -e "s,\(audio-mixer\|audio-karaoke\|audio-status\|ca-slot-info\|ca-descr-info\|ca-caps\|ca-msg\|ca-descr\|ca-pid\|dmx-filter\|dmx-caps\|video-system\|video-highlight\|video-spu\|video-spu-palette\|video-navi-pack\)-t,\1,g" \
-e "s,DTV-ISDBT-LAYER[A-C],DTV-ISDBT-LAYER,g" \ -e "s,DTV-ISDBT-LAYER[A-C],DTV-ISDBT-LAYER,g" \
-e "s,\(define\s\+\)\([A-Z0-9_]\+\)\(\s\+_IO\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \ -e "s,\(define\s\+\)\([A-Z0-9_]\+\)\(\s\+_IO\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
-e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
-e "s,<link\s\+linkend=\".*\">\(__.*_OLD\)<\/link>,\1,g" \ -e "s,<link\s\+linkend=\".*\">\(__.*_OLD\)<\/link>,\1,g" \
-e "s/\(linkend\=\"\)FE_SET_PROPERTY/\1FE_GET_PROPERTY/g" \
-e "s,<link\s\+linkend=\".*\">\(DTV_ISDBS_TS_ID_LEGACY\|DTV_MAX_COMMAND\|DTV_IOCTL_MAX_MSGS\)<\/link>,\1,g" \
# #
# Media targets and dependencies # Media targets and dependencies
# #
install_media_images = \ install_media_images = \
$(Q)-cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api $(Q)-cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/*.svg $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 $(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64
$(Q)base64 -d $< >$@ $(Q)base64 -d $< >$@
...@@ -243,9 +247,14 @@ $(MEDIA_OBJ_DIR)/dmx.h.xml: $(srctree)/include/uapi/linux/dvb/dmx.h $(MEDIA_OBJ_ ...@@ -243,9 +247,14 @@ $(MEDIA_OBJ_DIR)/dmx.h.xml: $(srctree)/include/uapi/linux/dvb/dmx.h $(MEDIA_OBJ_
@( \ @( \
echo "<programlisting>") > $@ echo "<programlisting>") > $@
@( \ @( \
for ident in $(ENUM_DEFS) ; do \
entity=`echo $$ident | tr _ -` ; \
r="$$r s/([^\w\-])$$ident([^\w\-])/\1\&$$entity\;\2/g;";\
done; \
expand --tabs=8 < $< | \ expand --tabs=8 < $< | \
sed $(ESCAPE) $(DVB_DOCUMENTED) | \ sed $(ESCAPE) $(DVB_DOCUMENTED) | \
sed 's/i\.e\./&ie;/') >> $@ sed 's/i\.e\./&ie;/' | \
perl -ne "$$r print $$_;") >> $@
@( \ @( \
echo "</programlisting>") >> $@ echo "</programlisting>") >> $@
...@@ -254,9 +263,14 @@ $(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/uapi/linux/dvb/frontend.h $( ...@@ -254,9 +263,14 @@ $(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/uapi/linux/dvb/frontend.h $(
@( \ @( \
echo "<programlisting>") > $@ echo "<programlisting>") > $@
@( \ @( \
for ident in $(ENUM_DEFS) ; do \
entity=`echo $$ident | tr _ -` ; \
r="$$r s/([^\w\-])$$ident([^\w\-])/\1\&$$entity\;\2/g;";\
done; \
expand --tabs=8 < $< | \ expand --tabs=8 < $< | \
sed $(ESCAPE) $(DVB_DOCUMENTED) | \ sed $(ESCAPE) $(DVB_DOCUMENTED) | \
sed 's/i\.e\./&ie;/') >> $@ sed 's/i\.e\./&ie;/' | \
perl -ne "$$r print $$_;") >> $@
@( \ @( \
echo "</programlisting>") >> $@ echo "</programlisting>") >> $@
...@@ -298,11 +312,22 @@ $(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml ...@@ -298,11 +312,22 @@ $(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
@( \ @( \
echo -e "\n<!-- Ioctls -->") >>$@ echo -e "\n<!-- Ioctls -->") >>$@
@( \ @( \
for ident in $(IOCTLS) ; do \ for ident in `echo $(IOCTLS) | sed -e "s,VIDIOC_RESERVED,,"`; do\
entity=`echo $$ident | tr _ -` ; \ entity=`echo $$ident | tr _ -` ; \
id=`grep "<refname>$$ident" $(MEDIA_OBJ_DIR)/vidioc-*.xml $(MEDIA_OBJ_DIR)/media-ioc-*.xml | sed -r s,"^.*/(.*).xml.*","\1",` ; \ id=`grep -e "<refname>$$ident" -e "<section id=\"$$ident\"" $$(find $(MEDIA_SRC_DIR) -name *.xml -type f)| sed -r s,"^.*/(.*).xml.*","\1",` ; \
echo "<!ENTITY $$entity \"<link" \ if [ "$$id" != "" ]; then echo "<!ENTITY $$entity \"<link" \
"linkend='$$id'><constant>$$ident</constant></link>\">" \ "linkend='$$id'><constant>$$ident</constant></link>\">" \
>>$@ ; else \
echo "Warning: undocumented ioctl: $$ident. Please document it at the media DocBook!" >&2; \
fi; \
done)
@( \
echo -e "\n<!-- Defines -->") >>$@
@( \
for ident in $(DEFINES) ; do \
entity=`echo $$ident | tr _ -` ; \
echo "<!ENTITY $$entity \"<link" \
"linkend='$$entity'><constant>$$ident</constant></link>\">" \
>>$@ ; \ >>$@ ; \
done) done)
@( \ @( \
...@@ -322,6 +347,15 @@ $(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml ...@@ -322,6 +347,15 @@ $(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
"linkend='$$entity'>$$ident</link>\">" >>$@ ; \ "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
done) done)
@( \ @( \
echo -e "\n<!-- Enum definitions -->") >>$@
@( \
for ident in $(ENUM_DEFS) ; do \
entity=`echo $$ident | tr _ -` ; \
echo "<!ENTITY $$entity \"<link" \
"linkend='$$entity'><constant>$$ident</constant></link>\">" \
>>$@ ; \
done)
@( \
echo -e "\n<!-- Structures -->") >>$@ echo -e "\n<!-- Structures -->") >>$@
@( \ @( \
for ident in $(STRUCTS) ; do \ for ident in $(STRUCTS) ; do \
......
<title>DVB Audio Device</title> <title>DVB Audio Device</title>
<para>The DVB audio device controls the MPEG2 audio decoder of the DVB hardware. It <para>The DVB audio device controls the MPEG2 audio decoder of the DVB hardware. It
can be accessed through <emphasis role="tt">/dev/dvb/adapter0/audio0</emphasis>. Data types and and can be accessed through <constant>/dev/dvb/adapter?/audio?</constant>. Data types and and
ioctl definitions can be accessed by including <emphasis role="tt">linux/dvb/audio.h</emphasis> in your ioctl definitions can be accessed by including <constant>linux/dvb/audio.h</constant> in your
application. application.
</para> </para>
<para>Please note that some DVB cards don&#8217;t have their own MPEG decoder, which results in <para>Please note that some DVB cards don&#8217;t have their own MPEG decoder, which results in
...@@ -32,7 +32,7 @@ typedef enum { ...@@ -32,7 +32,7 @@ typedef enum {
</programlisting> </programlisting>
<para>AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the <para>AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY
is selected the stream comes from the application through the <emphasis role="tt">write()</emphasis> system is selected the stream comes from the application through the <constant>write()</constant> system
call. call.
</para> </para>
......
<title>DVB CA Device</title> <title>DVB CA Device</title>
<para>The DVB CA device controls the conditional access hardware. It can be accessed through <para>The DVB CA device controls the conditional access hardware. It can be accessed through
<emphasis role="tt">/dev/dvb/adapter0/ca0</emphasis>. Data types and and ioctl definitions can be accessed by <constant>/dev/dvb/adapter?/ca?</constant>. Data types and and ioctl definitions can be accessed by
including <emphasis role="tt">linux/dvb/ca.h</emphasis> in your application. including <constant>linux/dvb/ca.h</constant> in your application.
</para> </para>
<section id="ca_data_types"> <section id="ca_data_types">
......
<title>DVB Demux Device</title> <title>DVB Demux Device</title>
<para>The DVB demux device controls the filters of the DVB hardware/software. It can be <para>The DVB demux device controls the filters of the DVB hardware/software. It can be
accessed through <emphasis role="tt">/dev/adapter0/demux0</emphasis>. Data types and and ioctl definitions can be accessed through <constant>/dev/adapter?/demux?</constant>. Data types and and ioctl definitions can be
accessed by including <emphasis role="tt">linux/dvb/dmx.h</emphasis> in your application. accessed by including <constant>linux/dvb/dmx.h</constant> in your application.
</para> </para>
<section id="dmx_types"> <section id="dmx_types">
<title>Demux Data Types</title> <title>Demux Data Types</title>
<section id="dmx-output-t"> <section id="dmx-output-t">
<title>dmx_output_t</title> <title>Output for the demux</title>
<programlisting>
typedef enum <table pgwide="1" frame="none" id="dmx-output">
{ <title>enum dmx_output</title>
DMX_OUT_DECODER, /&#x22C6; Streaming directly to decoder. &#x22C6;/ <tgroup cols="2">
DMX_OUT_TAP, /&#x22C6; Output going to a memory buffer &#x22C6;/ &cs-def;
/&#x22C6; (to be retrieved via the read command).&#x22C6;/ <thead>
DMX_OUT_TS_TAP, /&#x22C6; Output multiplexed into a new TS &#x22C6;/ <row>
/&#x22C6; (to be retrieved by reading from the &#x22C6;/ <entry>ID</entry>
/&#x22C6; logical DVR device). &#x22C6;/ <entry>Description</entry>
DMX_OUT_TSDEMUX_TAP /&#x22C6; Like TS_TAP but retrieved from the DMX device &#x22C6;/ </row>
} dmx_output_t; </thead>
</programlisting> <tbody valign="top">
<para><emphasis role="tt">DMX_OUT_TAP</emphasis> delivers the stream output to the demux device on which the ioctl is <row>
called. <entry align="char" id="DMX-OUT-DECODER">DMX_OUT_DECODER</entry>
</para> <entry>Streaming directly to decoder.</entry>
<para><emphasis role="tt">DMX_OUT_TS_TAP</emphasis> routes output to the logical DVR device <emphasis role="tt">/dev/dvb/adapter0/dvr0</emphasis>, </row><row>
which delivers a TS multiplexed from all filters for which <emphasis role="tt">DMX_OUT_TS_TAP</emphasis> was <entry align="char" id="DMX-OUT-TAP">DMX_OUT_TAP</entry>
specified. <entry>Output going to a memory buffer (to be retrieved via the
</para> read command). Delivers the stream output to the demux
device on which the ioctl is called.</entry>
</row><row>
<entry align="char" id="DMX-OUT-TS-TAP">DMX_OUT_TS_TAP</entry>
<entry>Output multiplexed into a new TS (to be retrieved by
reading from the logical DVR device). Routes output to the
logical DVR device <constant>/dev/dvb/adapter?/dvr?</constant>,
which delivers a TS multiplexed from all filters for which
<constant>DMX_OUT_TS_TAP</constant> was specified.</entry>
</row><row>
<entry align="char" id="DMX-OUT-TSDEMUX-TAP">DMX_OUT_TSDEMUX_TAP</entry>
<entry>Like &DMX-OUT-TS-TAP; but retrieved from the DMX
device.</entry>
</row>
</tbody>
</tgroup>
</table>
</section> </section>
<section id="dmx-input-t"> <section id="dmx-input-t">
......
...@@ -28,12 +28,22 @@ ...@@ -28,12 +28,22 @@
<holder>Convergence GmbH</holder> <holder>Convergence GmbH</holder>
</copyright> </copyright>
<copyright> <copyright>
<year>2009-2014</year> <year>2009-2015</year>
<holder>Mauro Carvalho Chehab</holder> <holder>Mauro Carvalho Chehab</holder>
</copyright> </copyright>
<revhistory> <revhistory>
<!-- Put document revisions here, newest first. --> <!-- Put document revisions here, newest first. -->
<revision>
<revnumber>2.1.0</revnumber>
<date>2015-05-29</date>
<authorinitials>mcc</authorinitials>
<revremark>
DocBook improvements and cleanups, in order to document the
system calls on a more standard way and provide more description
about the current DVB API.
</revremark>
</revision>
<revision> <revision>
<revnumber>2.0.4</revnumber> <revnumber>2.0.4</revnumber>
<date>2011-05-06</date> <date>2011-05-06</date>
...@@ -95,18 +105,26 @@ Added ISDB-T test originally written by Patrick Boettcher ...@@ -95,18 +105,26 @@ Added ISDB-T test originally written by Patrick Boettcher
<chapter id="dvb_demux"> <chapter id="dvb_demux">
&sub-demux; &sub-demux;
</chapter> </chapter>
<chapter id="dvb_video">
&sub-video;
</chapter>
<chapter id="dvb_audio">
&sub-audio;
</chapter>
<chapter id="dvb_ca"> <chapter id="dvb_ca">
&sub-ca; &sub-ca;
</chapter> </chapter>
<chapter id="dvb_net"> <chapter id="net">
&sub-net; &sub-net;
</chapter> </chapter>
<chapter id="legacy_dvb_apis">
<title>DVB Deprecated APIs</title>
<para>The APIs described here are kept only for historical reasons. There's
just one driver for a very legacy hardware that uses this API. No
modern drivers should use it. Instead, audio and video should be using
the V4L2 and ALSA APIs, and the pipelines should be set using the
Media Controller API</para>
<section id="dvb_video">
&sub-video;
</section>
<section id="dvb_audio">
&sub-audio;
</section>
</chapter>
<chapter id="dvb_kdapi"> <chapter id="dvb_kdapi">
&sub-kdapi; &sub-kdapi;
</chapter> </chapter>
......
<title>Examples</title> <title>Examples</title>
<para>In this section we would like to present some examples for using the DVB API. <para>In this section we would like to present some examples for using the DVB API.
</para> </para>
<para>Maintainer note: This section is out of date. Please refer to the sample programs packaged <para>NOTE: This section is out of date, and the code below won't even
with the driver distribution from <ulink url="http://linuxtv.org/hg/dvb-apps" />. compile. Please refer to the
<ulink url="http://linuxtv.org/docs/libdvbv5/index.html">libdvbv5</ulink>
for updated/recommended examples.
</para> </para>
<section id="tuning"> <section id="tuning">
......
<refentry id="FE_DISEQC_RECV_SLAVE_REPLY">
<refmeta>
<refentrytitle>ioctl FE_DISEQC_RECV_SLAVE_REPLY</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_DISEQC_RECV_SLAVE_REPLY</refname>
<refpurpose>Receives reply from a DiSEqC 2.0 command</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>struct dvb_diseqc_slave_reply *<parameter>argp</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_DISEQC_RECV_SLAVE_REPLY</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>argp</parameter></term>
<listitem>
<para>pointer to &dvb-diseqc-slave-reply;</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>Receives reply from a DiSEqC 2.0 command.</para>
&return-value-dvb;
<table pgwide="1" frame="none" id="dvb-diseqc-slave-reply">
<title>struct <structname>dvb_diseqc_slave_reply</structname></title>
<tgroup cols="3">
&cs-str;
<tbody valign="top">
<row>
<entry>uint8_t</entry>
<entry>msg[4]</entry>
<entry>DiSEqC message (framing, data[3])</entry>
</row><row>
<entry>uint8_t</entry>
<entry>msg_len</entry>
<entry>Length of the DiSEqC message. Valid values are 0 to 4,
where 0 means no msg</entry>
</row><row>
<entry>int</entry>
<entry>timeout</entry>
<entry>Return from ioctl after timeout ms with errorcode when no
message was received</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
</refentry>
<refentry id="FE_DISEQC_RESET_OVERLOAD">
<refmeta>
<refentrytitle>ioctl FE_DISEQC_RESET_OVERLOAD</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_DISEQC_RESET_OVERLOAD</refname>
<refpurpose>Restores the power to the antenna subsystem, if it was powered
off due to power overload.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>NULL</paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_DISEQC_RESET_OVERLOAD</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>If the bus has been automatically powered off due to power overload, this ioctl
call restores the power to the bus. The call requires read/write access to the
device. This call has no effect if the device is manually powered off. Not all
DVB adapters support this ioctl.</para>
&return-value-dvb;
</refsect1>
</refentry>
<refentry id="FE_DISEQC_SEND_BURST">
<refmeta>
<refentrytitle>ioctl FE_DISEQC_SEND_BURST</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_DISEQC_SEND_BURST</refname>
<refpurpose>Sends a 22KHz tone burst for 2x1 mini DiSEqC satellite selection.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>enum fe_sec_mini_cmd *<parameter>tone</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_DISEQC_SEND_BURST</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>tone</parameter></term>
<listitem>
<para>pointer to &fe-sec-mini-cmd;</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>This ioctl is used to set the generation of a 22kHz tone burst for mini
DiSEqC satellite
selection for 2x1 switches.
This call requires read/write permissions.</para>
<para>It provides support for what's specified at
<ulink url="http://www.eutelsat.com/files/contributed/satellites/pdf/Diseqc/associated%20docs/simple_tone_burst_detec.pdf">Digital Satellite Equipment Control
(DiSEqC) - Simple "ToneBurst" Detection Circuit specification.</ulink>
</para>
&return-value-dvb;
</refsect1>
<refsect1 id="fe-sec-mini-cmd-t">
<title>enum fe_sec_mini_cmd</title>
<table pgwide="1" frame="none" id="fe-sec-mini-cmd">
<title>enum fe_sec_mini_cmd</title>
<tgroup cols="2">
&cs-def;
<thead>
<row>
<entry>ID</entry>
<entry>Description</entry>
</row>
</thead>
<tbody valign="top">
<row>
<entry align="char" id="SEC-MINI-A"><constant>SEC_MINI_A</constant></entry>
<entry align="char">Sends a mini-DiSEqC 22kHz '0' Tone Burst to
select satellite-A</entry>
</row><row>
<entry align="char" id="SEC-MINI-B"><constant>SEC_MINI_B</constant></entry>
<entry align="char">Sends a mini-DiSEqC 22kHz '1' Data Burst to
select satellite-B</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
</refentry>
<refentry id="FE_DISEQC_SEND_MASTER_CMD">
<refmeta>
<refentrytitle>ioctl FE_DISEQC_SEND_MASTER_CMD</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_DISEQC_SEND_MASTER_CMD</refname>
<refpurpose>Sends a DiSEqC command</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>struct dvb_diseqc_master_cmd *<parameter>argp</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_DISEQC_SEND_MASTER_CMD</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>argp</parameter></term>
<listitem>
<para>pointer to &dvb-diseqc-master-cmd;</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>Sends a DiSEqC command to the antenna subsystem.</para>
&return-value-dvb;
<table pgwide="1" frame="none" id="dvb-diseqc-master-cmd">
<title>struct <structname>dvb_diseqc_master_cmd</structname></title>
<tgroup cols="3">
&cs-str;
<tbody valign="top">
<row>
<entry>uint8_t</entry>
<entry>msg[6]</entry>
<entry>DiSEqC message (framing, address, command, data[3])</entry>
</row><row>
<entry>uint8_t</entry>
<entry>msg_len</entry>
<entry>Length of the DiSEqC message. Valid values are 3 to 6</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
</refentry>
<refentry id="FE_ENABLE_HIGH_LNB_VOLTAGE">
<refmeta>
<refentrytitle>ioctl FE_ENABLE_HIGH_LNB_VOLTAGE</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_ENABLE_HIGH_LNB_VOLTAGE</refname>
<refpurpose>Select output DC level between normal LNBf voltages or higher
LNBf voltages.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>unsigned int <parameter>high</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_ENABLE_HIGH_LNB_VOLTAGE</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>high</parameter></term>
<listitem>
<para>Valid flags:</para>
<itemizedlist>
<listitem><para>0 - normal 13V and 18V.</para></listitem>
<listitem><para>&gt;0 - enables slightly higher voltages instead of
13/18V, in order to compensate for long antenna cables.</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>Select output DC level between normal LNBf voltages or higher
LNBf voltages between 0 (normal) or a value grater than 0 for higher
voltages.</para>
&return-value-dvb;
</refsect1>
</refentry>
<refentry id="FE_GET_INFO">
<refmeta>
<refentrytitle>ioctl FE_GET_INFO</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_GET_INFO</refname>
<refpurpose>Query DVB frontend capabilities and returns information about
the front-end. This call only requires read-only access to the device</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>struct dvb_frontend_info *<parameter>argp</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_GET_INFO</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>argp</parameter></term>
<listitem>
<para>pointer to struct &dvb-frontend-info;</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>All DVB frontend devices support the
<constant>FE_GET_INFO</constant> ioctl. It is used to identify
kernel devices compatible with this specification and to obtain
information about driver and hardware capabilities. The ioctl takes a
pointer to dvb_frontend_info which is filled by the driver. When the
driver is not compatible with this specification the ioctl returns an error.
</para>
&return-value-dvb;
<table pgwide="1" frame="none" id="dvb-frontend-info">
<title>struct <structname>dvb_frontend_info</structname></title>
<tgroup cols="3">
&cs-str;
<tbody valign="top">
<row>
<entry>char</entry>
<entry>name[128]</entry>
<entry>Name of the frontend</entry>
</row><row>
<entry>fe_type_t</entry>
<entry>type</entry>
<entry><emphasis role="bold">DEPRECATED</emphasis>. DVBv3 type. Should not be used on modern programs, as a
frontend may have more than one type. So, the DVBv5 API should
be used instead to enumerate and select the frontend type.</entry>
</row><row>
<entry>uint32_t</entry>
<entry>frequency_min</entry>
<entry>Minimal frequency supported by the frontend</entry>
</row><row>
<entry>uint32_t</entry>
<entry>frequency_max</entry>
<entry>Maximal frequency supported by the frontend</entry>
</row><row>
<entry>uint32_t</entry>
<entry>frequency_stepsize</entry>
<entry>Frequency step - all frequencies are multiple of this value</entry>
</row><row>
<entry>uint32_t</entry>
<entry>frequency_tolerance</entry>
<entry>Tolerance of the frequency</entry>
</row><row>
<entry>uint32_t</entry>
<entry>symbol_rate_min</entry>
<entry>Minimal symbol rate (for Cable/Satellite systems), in bauds</entry>
</row><row>
<entry>uint32_t</entry>
<entry>symbol_rate_max</entry>
<entry>Maximal symbol rate (for Cable/Satellite systems), in bauds</entry>
</row><row>
<entry>uint32_t</entry>
<entry>symbol_rate_tolerance</entry>
<entry>Maximal symbol rate tolerance, in ppm</entry>
</row><row>
<entry>uint32_t</entry>
<entry>notifier_delay</entry>
<entry><emphasis role="bold">DEPRECATED</emphasis>. Not used by any driver.</entry>
</row><row>
<entry>&fe-caps;</entry>
<entry>caps</entry>
<entry>Capabilities supported by the frontend</entry>
</row>
</tbody>
</tgroup>
</table>
<para>NOTE: The frequencies are specified in Hz for Terrestrial and Cable
systems. They're specified in kHz for Satellite systems</para>
</refsect1>
<refsect1 id="fe-caps-t">
<title>frontend capabilities</title>
<para>Capabilities describe what a frontend can do. Some capabilities are
supported only on some specific frontend types.</para>
<table pgwide="1" frame="none" id="fe-caps">
<title>enum fe_caps</title>
<tgroup cols="2">
&cs-def;
<thead>
<row>
<entry>ID</entry>
<entry>Description</entry>
</row>
</thead>
<tbody valign="top">
<row>
<entry id="FE-IS-STUPID"><constant>FE_IS_STUPID</constant></entry>
<entry>There's something wrong at the frontend, and it can't
report its capabilities</entry>
</row>
<row>
<entry id="FE-CAN-INVERSION-AUTO"><constant>FE_CAN_INVERSION_AUTO</constant></entry>
<entry>The frontend is capable of auto-detecting inversion</entry>
</row>
<row>
<entry id="FE-CAN-FEC-1-2"><constant>FE_CAN_FEC_1_2</constant></entry>
<entry>The frontend supports FEC 1/2</entry>
</row>
<row>
<entry id="FE-CAN-FEC-2-3"><constant>FE_CAN_FEC_2_3</constant></entry>
<entry>The frontend supports FEC 2/3</entry>
</row>
<row>
<entry id="FE-CAN-FEC-3-4"><constant>FE_CAN_FEC_3_4</constant></entry>
<entry>The frontend supports FEC 3/4</entry>
</row>
<row>
<entry id="FE-CAN-FEC-4-5"><constant>FE_CAN_FEC_4_5</constant></entry>
<entry>The frontend supports FEC 4/5</entry>
</row>
<row>
<entry id="FE-CAN-FEC-5-6"><constant>FE_CAN_FEC_5_6</constant></entry>
<entry>The frontend supports FEC 5/6</entry>
</row>
<row>
<entry id="FE-CAN-FEC-6-7"><constant>FE_CAN_FEC_6_7</constant></entry>
<entry>The frontend supports FEC 6/7</entry>
</row>
<row>
<entry id="FE-CAN-FEC-7-8"><constant>FE_CAN_FEC_7_8</constant></entry>
<entry>The frontend supports FEC 7/8</entry>
</row>
<row>
<entry id="FE-CAN-FEC-8-9"><constant>FE_CAN_FEC_8_9</constant></entry>
<entry>The frontend supports FEC 8/9</entry>
</row>
<row>
<entry id="FE-CAN-FEC-AUTO"><constant>FE_CAN_FEC_AUTO</constant></entry>
<entry>The frontend can autodetect FEC.</entry>
</row>
<row>
<entry id="FE-CAN-QPSK"><constant>FE_CAN_QPSK</constant></entry>
<entry>The frontend supports QPSK modulation</entry>
</row>
<row>
<entry id="FE-CAN-QAM-16"><constant>FE_CAN_QAM_16</constant></entry>
<entry>The frontend supports 16-QAM modulation</entry>
</row>
<row>
<entry id="FE-CAN-QAM-32"><constant>FE_CAN_QAM_32</constant></entry>
<entry>The frontend supports 32-QAM modulation</entry>
</row>
<row>
<entry id="FE-CAN-QAM-64"><constant>FE_CAN_QAM_64</constant></entry>
<entry>The frontend supports 64-QAM modulation</entry>
</row>
<row>
<entry id="FE-CAN-QAM-128"><constant>FE_CAN_QAM_128</constant></entry>
<entry>The frontend supports 128-QAM modulation</entry>
</row>
<row>
<entry id="FE-CAN-QAM-256"><constant>FE_CAN_QAM_256</constant></entry>
<entry>The frontend supports 256-QAM modulation</entry>
</row>
<row>
<entry id="FE-CAN-QAM-AUTO"><constant>FE_CAN_QAM_AUTO</constant></entry>
<entry>The frontend can autodetect modulation</entry>
</row>
<row>
<entry id="FE-CAN-TRANSMISSION-MODE-AUTO"><constant>FE_CAN_TRANSMISSION_MODE_AUTO</constant></entry>
<entry>The frontend can autodetect the transmission mode</entry>
</row>
<row>
<entry id="FE-CAN-BANDWIDTH-AUTO"><constant>FE_CAN_BANDWIDTH_AUTO</constant></entry>
<entry>The frontend can autodetect the bandwidth</entry>
</row>
<row>
<entry id="FE-CAN-GUARD-INTERVAL-AUTO"><constant>FE_CAN_GUARD_INTERVAL_AUTO</constant></entry>
<entry>The frontend can autodetect the guard interval</entry>
</row>
<row>
<entry id="FE-CAN-HIERARCHY-AUTO"><constant>FE_CAN_HIERARCHY_AUTO</constant></entry>
<entry>The frontend can autodetect hierarch</entry>
</row>
<row>
<entry id="FE-CAN-8VSB"><constant>FE_CAN_8VSB</constant></entry>
<entry>The frontend supports 8-VSB modulation</entry>
</row>
<row>
<entry id="FE-CAN-16VSB"><constant>FE_CAN_16VSB</constant></entry>
<entry>The frontend supports 16-VSB modulation</entry>
</row>
<row>
<entry id="FE-HAS-EXTENDED-CAPS"><constant>FE_HAS_EXTENDED_CAPS</constant></entry>
<entry>Currently, unused</entry>
</row>
<row>
<entry id="FE-CAN-MULTISTREAM"><constant>FE_CAN_MULTISTREAM</constant></entry>
<entry>The frontend supports multistream filtering</entry>
</row>
<row>
<entry id="FE-CAN-TURBO-FEC"><constant>FE_CAN_TURBO_FEC</constant></entry>
<entry>The frontend supports turbo FEC modulation</entry>
</row>
<row>
<entry id="FE-CAN-2G-MODULATION"><constant>FE_CAN_2G_MODULATION</constant></entry>
<entry>The frontend supports "2nd generation modulation" (DVB-S2/T2)></entry>
</row>
<row>
<entry id="FE-NEEDS-BENDING"><constant>FE_NEEDS_BENDING</constant></entry>
<entry>Not supported anymore, don't use it</entry>
</row>
<row>
<entry id="FE-CAN-RECOVER"><constant>FE_CAN_RECOVER</constant></entry>
<entry>The frontend can recover from a cable unplug automatically</entry>
</row>
<row>
<entry id="FE-CAN-MUTE-TS"><constant>FE_CAN_MUTE_TS</constant></entry>
<entry>The frontend can stop spurious TS data output</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
</refentry>
<refentry id="FE_GET_PROPERTY">
<refmeta>
<refentrytitle>ioctl FE_SET_PROPERTY, FE_GET_PROPERTY</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_SET_PROPERTY</refname>
<refname>FE_GET_PROPERTY</refname>
<refpurpose>FE_SET_PROPERTY sets one or more frontend properties.
FE_GET_PROPERTY returns one or more frontend properties.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>struct dtv_properties *<parameter>argp</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_SET_PROPERTY, FE_GET_PROPERTY</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>argp</parameter></term>
<listitem>
<para>pointer to &dtv-properties;</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>All DVB frontend devices support the
<constant>FE_SET_PROPERTY</constant> and <constant>FE_GET_PROPERTY</constant>
ioctls. The supported properties and statistics depends on the delivery system
and on the device:</para>
<itemizedlist>
<listitem>
<para><constant>FE_SET_PROPERTY:</constant></para>
<itemizedlist>
<listitem><para>This ioctl is used to set one or more
frontend properties.</para></listitem>
<listitem><para>This is the basic command to request the frontend to tune into some
frequency and to start decoding the digital TV signal.</para></listitem>
<listitem><para>This call requires read/write access to the device.</para></listitem>
<listitem><para>At return, the values are updated to reflect the
actual parameters used.</para></listitem>
</itemizedlist>
</listitem>
<listitem>
<para><constant>FE_GET_PROPERTY:</constant></para>
<itemizedlist>
<listitem><para>This ioctl is used to get properties and
statistics from the frontend.</para></listitem>
<listitem><para>No properties are changed, and statistics aren't reset.</para></listitem>
<listitem><para>This call only requires read-only access to the device.</para></listitem>
</itemizedlist>
</listitem>
</itemizedlist>
&return-value-dvb;
</refsect1>
</refentry>
<refentry id="FE_READ_STATUS">
<refmeta>
<refentrytitle>ioctl FE_READ_STATUS</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_READ_STATUS</refname>
<refpurpose>Returns status information about the front-end. This call only
requires read-only access to the device</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>unsigned int *<parameter>status</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_READ_STATUS</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>status</parameter></term>
<listitem>
<para>pointer to a bitmask integer filled with the values defined by
&fe-status;.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>All DVB frontend devices support the
<constant>FE_READ_STATUS</constant> ioctl. It is used to check about the
locking status of the frontend after being tuned. The ioctl takes a
pointer to an integer where the status will be written.
</para>
<para>NOTE: the size of status is actually sizeof(enum fe_status), with varies
according with the architecture. This needs to be fixed in the future.</para>
&return-value-dvb;
</refsect1>
<refsect1 id="fe-status-t">
<title>int fe_status</title>
<para>The fe_status parameter is used to indicate the current state
and/or state changes of the frontend hardware. It is produced using
the &fe-status; values on a bitmask</para>
<table pgwide="1" frame="none" id="fe-status">
<title>enum fe_status</title>
<tgroup cols="2">
&cs-def;
<thead>
<row>
<entry>ID</entry>
<entry>Description</entry>
</row>
</thead>
<tbody valign="top">
<row>
<entry align="char" id="FE-HAS-SIGNAL"><constant>FE_HAS_SIGNAL</constant></entry>
<entry align="char">The frontend has found something above the noise level</entry>
</row><row>
<entry align="char" id="FE-HAS-CARRIER"><constant>FE_HAS_CARRIER</constant></entry>
<entry align="char">The frontend has found a DVB signal</entry>
</row><row>
<entry align="char" id="FE-HAS-VITERBI"><constant>FE_HAS_VITERBI</constant></entry>
<entry align="char">The frontend FEC inner coding (Viterbi, LDPC or other inner code) is stable</entry>
</row><row>
<entry align="char" id="FE-HAS-SYNC"><constant>FE_HAS_SYNC</constant></entry>
<entry align="char">Synchronization bytes was found</entry>
</row><row>
<entry align="char" id="FE-HAS-LOCK"><constant>FE_HAS_LOCK</constant></entry>
<entry align="char">The DVB were locked and everything is working</entry>
</row><row>
<entry align="char" id="FE-TIMEDOUT"><constant>FE_TIMEDOUT</constant></entry>
<entry align="char">no lock within the last about 2 seconds</entry>
</row><row>
<entry align="char" id="FE-REINIT"><constant>FE_REINIT</constant></entry>
<entry align="char">The frontend was reinitialized, application is
recommended to reset DiSEqC, tone and parameters</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
</refentry>
<refentry id="FE_SET_FRONTEND_TUNE_MODE">
<refmeta>
<refentrytitle>ioctl FE_SET_FRONTEND_TUNE_MODE</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_SET_FRONTEND_TUNE_MODE</refname>
<refpurpose>Allow setting tuner mode flags to the frontend.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>unsigned int <parameter>flags</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_SET_FRONTEND_TUNE_MODE</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<para>Valid flags:</para>
<itemizedlist>
<listitem><para>0 - normal tune mode</para></listitem>
<listitem><para>FE_TUNE_MODE_ONESHOT - When set, this flag will
disable any zigzagging or other "normal" tuning behaviour.
Additionally, there will be no automatic monitoring of the
lock status, and hence no frontend events will be
generated. If a frontend device is closed, this flag will
be automatically turned off when the device is reopened
read-write.</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>Allow setting tuner mode flags to the frontend, between 0 (normal)
or FE_TUNE_MODE_ONESHOT mode</para>
&return-value-dvb;
</refsect1>
</refentry>
<refentry id="FE_SET_TONE">
<refmeta>
<refentrytitle>ioctl FE_SET_TONE</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_SET_TONE</refname>
<refpurpose>Sets/resets the generation of the continuous 22kHz tone.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>enum fe_sec_tone_mode *<parameter>tone</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_SET_TONE</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>tone</parameter></term>
<listitem>
<para>pointer to &fe-sec-tone-mode;</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>This ioctl is used to set the generation of the continuous 22kHz tone.
This call requires read/write permissions.</para>
<para>Usually, satellite antenna subsystems require that the digital TV
device to send a 22kHz tone in order to select between high/low band on
some dual-band LNBf. It is also used to send signals to DiSEqC equipment,
but this is done using the DiSEqC ioctls.</para>
<para>NOTE: if more than one device is connected to the same antenna,
setting a tone may interfere on other devices, as they may lose
the capability of selecting the band. So, it is recommended that
applications would change to SEC_TONE_OFF when the device is not used.</para>
&return-value-dvb;
</refsect1>
<refsect1 id="fe-sec-tone-mode-t">
<title>enum fe_sec_tone_mode</title>
<table pgwide="1" frame="none" id="fe-sec-tone-mode">
<title>enum fe_sec_tone_mode</title>
<tgroup cols="2">
&cs-def;
<thead>
<row>
<entry>ID</entry>
<entry>Description</entry>
</row>
</thead>
<tbody valign="top">
<row>
<entry align="char" id="SEC-TONE-ON"><constant>SEC_TONE_ON</constant></entry>
<entry align="char">Sends a 22kHz tone burst to the antenna</entry>
</row><row>
<entry align="char" id="SEC-TONE-OFF"><constant>SEC_TONE_OFF</constant></entry>
<entry align="char">Don't send a 22kHz tone to the antenna
(except if the FE_DISEQC_* ioctls are called)</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
</refentry>
<refentry id="FE_SET_VOLTAGE">
<refmeta>
<refentrytitle>ioctl FE_SET_VOLTAGE</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>FE_SET_VOLTAGE</refname>
<refpurpose>Allow setting the DC level sent to the antenna subsystem.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>enum fe_sec_voltage *<parameter>voltage</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
<variablelist>
<varlistentry>
<term><parameter>fd</parameter></term>
<listitem>
<para>&fe_fd;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>request</parameter></term>
<listitem>
<para>FE_SET_VOLTAGE</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>voltage</parameter></term>
<listitem>
<para>pointer to &fe-sec-voltage;</para>
<para>Valid values are described at &fe-sec-voltage;.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>This ioctl allows to set the DC voltage level sent through the antenna
cable to 13V, 18V or off.</para>
<para>Usually, a satellite antenna subsystems require that the digital TV
device to send a DC voltage to feed power to the LNBf. Depending on the
LNBf type, the polarization or the intermediate frequency (IF) of the LNBf
can controlled by the voltage level. Other devices (for example, the ones
that implement DISEqC and multipoint LNBf's don't need to control the
voltage level, provided that either 13V or 18V is sent to power up the
LNBf.</para>
<para>NOTE: if more than one device is connected to the same antenna,
setting a voltage level may interfere on other devices, as they may lose
the capability of setting polarization or IF. So, on those
cases, setting the voltage to SEC_VOLTAGE_OFF while the device is not is
used is recommended.</para>
&return-value-dvb;
</refsect1>
</refentry>
此差异已折叠。
...@@ -129,41 +129,41 @@ hardware. It can depend on the individual security requirements of the ...@@ -129,41 +129,41 @@ hardware. It can depend on the individual security requirements of the
platform, if and how many of the CA functions are made available to the platform, if and how many of the CA functions are made available to the
application through this device.</para> application through this device.</para>
<para>All devices can be found in the <emphasis role="tt">/dev</emphasis> <para>All devices can be found in the <constant>/dev</constant>
tree under <emphasis role="tt">/dev/dvb</emphasis>. The individual devices tree under <constant>/dev/dvb</constant>. The individual devices
are called:</para> are called:</para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para><emphasis role="tt">/dev/dvb/adapterN/audioM</emphasis>,</para> <para><constant>/dev/dvb/adapterN/audioM</constant>,</para>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="tt">/dev/dvb/adapterN/videoM</emphasis>,</para> <para><constant>/dev/dvb/adapterN/videoM</constant>,</para>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="tt">/dev/dvb/adapterN/frontendM</emphasis>,</para> <para><constant>/dev/dvb/adapterN/frontendM</constant>,</para>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="tt">/dev/dvb/adapterN/netM</emphasis>,</para> <para><constant>/dev/dvb/adapterN/netM</constant>,</para>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="tt">/dev/dvb/adapterN/demuxM</emphasis>,</para> <para><constant>/dev/dvb/adapterN/demuxM</constant>,</para>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="tt">/dev/dvb/adapterN/dvrM</emphasis>,</para> <para><constant>/dev/dvb/adapterN/dvrM</constant>,</para>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="tt">/dev/dvb/adapterN/caM</emphasis>,</para></listitem></itemizedlist> <para><constant>/dev/dvb/adapterN/caM</constant>,</para></listitem></itemizedlist>
<para>where N enumerates the DVB PCI cards in a system starting <para>where N enumerates the DVB PCI cards in a system starting
from&#x00A0;0, and M enumerates the devices of each type within each from&#x00A0;0, and M enumerates the devices of each type within each
adapter, starting from&#x00A0;0, too. We will omit the &#8220;<emphasis adapter, starting from&#x00A0;0, too. We will omit the &#8220;
role="tt">/dev/dvb/adapterN/</emphasis>&#8221; in the further dicussion <constant>/dev/dvb/adapterN/</constant>&#8221; in the further dicussion
of these devices. The naming scheme for the devices is the same wheter of these devices. The naming scheme for the devices is the same wheter
devfs is used or not.</para> devfs is used or not.</para>
...@@ -202,10 +202,10 @@ a partial path like:</para> ...@@ -202,10 +202,10 @@ a partial path like:</para>
</programlisting> </programlisting>
<para>To enable applications to support different API version, an <para>To enable applications to support different API version, an
additional include file <emphasis additional include file
role="tt">linux/dvb/version.h</emphasis> exists, which defines the <constant>linux/dvb/version.h</constant> exists, which defines the
constant <emphasis role="tt">DVB_API_VERSION</emphasis>. This document constant <constant>DVB_API_VERSION</constant>. This document
describes <emphasis role="tt">DVB_API_VERSION 5.8</emphasis>. describes <constant>DVB_API_VERSION 5.10</constant>.
</para> </para>
</section> </section>
......
<title>Kernel Demux API</title> <title>Kernel Demux API</title>
<para>The kernel demux API defines a driver-internal interface for registering low-level, <para>The kernel demux API defines a driver-internal interface for registering low-level,
hardware specific driver to a hardware independent demux layer. It is only of interest for hardware specific driver to a hardware independent demux layer. It is only of interest for
DVB device driver writers. The header file for this API is named <emphasis role="tt">demux.h</emphasis> and located in DVB device driver writers. The header file for this API is named <constant>demux.h</constant> and located in
<emphasis role="tt">drivers/media/dvb-core</emphasis>. <constant>">drivers/media/dvb-core</constant>.
</para> </para>
<para>Maintainer note: This section must be reviewed. It is probably out of date. <para>Maintainer note: This section must be reviewed. It is probably out of date.
</para> </para>
......
<title>DVB Video Device</title> <title>DVB Video Device</title>
<para>The DVB video device controls the MPEG2 video decoder of the DVB hardware. It <para>The DVB video device controls the MPEG2 video decoder of the DVB hardware. It
can be accessed through <emphasis role="tt">/dev/dvb/adapter0/video0</emphasis>. Data types and and can be accessed through <emphasis role="bold">/dev/dvb/adapter0/video0</emphasis>. Data types and and
ioctl definitions can be accessed by including <emphasis role="tt">linux/dvb/video.h</emphasis> in your ioctl definitions can be accessed by including <emphasis role="bold">linux/dvb/video.h</emphasis> in your
application. application.
</para> </para>
<para>Note that the DVB video device only controls decoding of the MPEG video stream, not <para>Note that the DVB video device only controls decoding of the MPEG video stream, not
its presentation on the TV or computer screen. On PCs this is typically handled by an its presentation on the TV or computer screen. On PCs this is typically handled by an
associated video4linux device, e.g. <emphasis role="tt">/dev/video</emphasis>, which allows scaling and defining output associated video4linux device, e.g. <emphasis role="bold">/dev/video</emphasis>, which allows scaling and defining output
windows. windows.
</para> </para>
<para>Some DVB cards don&#8217;t have their own MPEG decoder, which results in the omission of <para>Some DVB cards don&#8217;t have their own MPEG decoder, which results in the omission of
...@@ -24,7 +24,7 @@ have been created to replace that functionality.</para> ...@@ -24,7 +24,7 @@ have been created to replace that functionality.</para>
<section id="video-format-t"> <section id="video-format-t">
<title>video_format_t</title> <title>video_format_t</title>
<para>The <emphasis role="tt">video_format_t</emphasis> data type defined by <para>The <constant>video_format_t</constant> data type defined by
</para> </para>
<programlisting> <programlisting>
typedef enum { typedef enum {
...@@ -74,7 +74,7 @@ typedef enum { ...@@ -74,7 +74,7 @@ typedef enum {
</programlisting> </programlisting>
<para>VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the <para>VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
DVR device) as the source of the video stream. If VIDEO_SOURCE_MEMORY DVR device) as the source of the video stream. If VIDEO_SOURCE_MEMORY
is selected the stream comes from the application through the <emphasis role="tt">write()</emphasis> system is selected the stream comes from the application through the <emphasis role="bold">write()</emphasis> system
call. call.
</para> </para>
</section> </section>
......
此差异已折叠。
...@@ -4863,7 +4863,7 @@ interface and may change in the future.</para> ...@@ -4863,7 +4863,7 @@ interface and may change in the future.</para>
</note> </note>
<para> <para>
The Image Source control class is intended for low-level control of The Image Process control class is intended for low-level control of
image processing functions. Unlike image processing functions. Unlike
<constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant>, the controls in <constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant>, the controls in
this class affect processing the image, and do not control capturing this class affect processing the image, and do not control capturing
...@@ -4871,7 +4871,7 @@ interface and may change in the future.</para> ...@@ -4871,7 +4871,7 @@ interface and may change in the future.</para>
</para> </para>
<table pgwide="1" frame="none" id="image-process-control-id"> <table pgwide="1" frame="none" id="image-process-control-id">
<title>Image Source Control IDs</title> <title>Image Process Control IDs</title>
<tgroup cols="4"> <tgroup cols="4">
<colspec colname="c1" colwidth="1*" /> <colspec colname="c1" colwidth="1*" />
......
...@@ -841,15 +841,15 @@ is the file descriptor associated with a DMABUF buffer.</entry> ...@@ -841,15 +841,15 @@ is the file descriptor associated with a DMABUF buffer.</entry>
<entry>__u32</entry> <entry>__u32</entry>
<entry><structfield>reserved2</structfield></entry> <entry><structfield>reserved2</structfield></entry>
<entry></entry> <entry></entry>
<entry>A place holder for future extensions. Applications <entry>A place holder for future extensions. Drivers and applications
should set this to 0.</entry> must set this to 0.</entry>
</row> </row>
<row> <row>
<entry>__u32</entry> <entry>__u32</entry>
<entry><structfield>reserved</structfield></entry> <entry><structfield>reserved</structfield></entry>
<entry></entry> <entry></entry>
<entry>A place holder for future extensions. Applications <entry>A place holder for future extensions. Drivers and applications
should set this to 0.</entry> must set this to 0.</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
...@@ -930,8 +930,8 @@ should set this to 0.</entry> ...@@ -930,8 +930,8 @@ should set this to 0.</entry>
<entry>__u32</entry> <entry>__u32</entry>
<entry><structfield>reserved[11]</structfield></entry> <entry><structfield>reserved[11]</structfield></entry>
<entry></entry> <entry></entry>
<entry>Reserved for future use. Should be zeroed by an <entry>Reserved for future use. Should be zeroed by drivers and
application.</entry> applications.</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
...@@ -1127,6 +1127,18 @@ passed on to a DMA-capable hardware unit for further processing or output. ...@@ -1127,6 +1127,18 @@ passed on to a DMA-capable hardware unit for further processing or output.
Typically applications shall use this flag for output buffers if the data Typically applications shall use this flag for output buffers if the data
in this buffer has not been created by the CPU but by some DMA-capable unit, in this buffer has not been created by the CPU but by some DMA-capable unit,
in which case caches have not been used.</entry> in which case caches have not been used.</entry>
</row>
<row>
<entry><constant>V4L2_BUF_FLAG_LAST</constant></entry>
<entry>0x00100000</entry>
<entry>Last buffer produced by the hardware. mem2mem codec drivers
set this flag on the capture queue for the last buffer when the
<link linkend="vidioc-querybuf">VIDIOC_QUERYBUF</link> or
<link linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl is called. Due to hardware
limitations, the last buffer may be empty. In this case the driver will set the
<structfield>bytesused</structfield> field to 0, regardless of the format. Any
Any subsequent call to the <link linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl
will not block anymore, but return an &EPIPE;.</entry>
</row> </row>
<row> <row>
<entry><constant>V4L2_BUF_FLAG_TIMESTAMP_MASK</constant></entry> <entry><constant>V4L2_BUF_FLAG_TIMESTAMP_MASK</constant></entry>
...@@ -1155,7 +1167,7 @@ in which case caches have not been used.</entry> ...@@ -1155,7 +1167,7 @@ in which case caches have not been used.</entry>
<entry>The buffer timestamp has been taken from the <entry>The buffer timestamp has been taken from the
<constant>CLOCK_MONOTONIC</constant> clock. To access the <constant>CLOCK_MONOTONIC</constant> clock. To access the
same clock outside V4L2, use same clock outside V4L2, use
<function>clock_gettime(2)</function> .</entry> <function>clock_gettime(2)</function>.</entry>
</row> </row>
<row> <row>
<entry><constant>V4L2_BUF_FLAG_TIMESTAMP_COPY</constant></entry> <entry><constant>V4L2_BUF_FLAG_TIMESTAMP_COPY</constant></entry>
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<para>To open a media device applications call <function>open()</function> <para>To open a media device applications call <function>open()</function>
with the desired device name. The function has no side effects; the device with the desired device name. The function has no side effects; the device
configuration remain unchanged.</para> configuration remain unchanged.</para>
<para>When the device is opened in read-only mode, attemps to modify its <para>When the device is opened in read-only mode, attempts to modify its
configuration will result in an error, and <varname>errno</varname> will be configuration will result in an error, and <varname>errno</varname> will be
set to <errorcode>EBADF</errorcode>.</para> set to <errorcode>EBADF</errorcode>.</para>
</refsect1> </refsect1>
......
此差异已折叠。
...@@ -284,7 +284,7 @@ different IR's. Due to that, V4L2 API now specifies a standard for mapping Media ...@@ -284,7 +284,7 @@ different IR's. Due to that, V4L2 API now specifies a standard for mapping Media
</tgroup> </tgroup>
</table> </table>
<para>It should be noticed that, sometimes, there some fundamental missing keys at some cheaper IR's. Due to that, it is recommended to:</para> <para>It should be noted that, sometimes, there some fundamental missing keys at some cheaper IR's. Due to that, it is recommended to:</para>
<table pgwide="1" frame="none" id="rc_keymap_notes"> <table pgwide="1" frame="none" id="rc_keymap_notes">
<title>Notes</title> <title>Notes</title>
......
...@@ -50,8 +50,16 @@ capture streams and by the application for output streams, ...@@ -50,8 +50,16 @@ capture streams and by the application for output streams,
see <xref linkend="colorspaces" />.</entry> see <xref linkend="colorspaces" />.</entry>
</row> </row>
<row> <row>
<entry>__u32</entry> <entry>&v4l2-xfer-func;</entry>
<entry><structfield>reserved</structfield>[6]</entry> <entry><structfield>xfer_func</structfield></entry>
<entry>This information supplements the
<structfield>colorspace</structfield> and must be set by the driver for
capture streams and by the application for output streams,
see <xref linkend="colorspaces" />.</entry>
</row>
<row>
<entry>__u16</entry>
<entry><structfield>reserved</structfield>[11]</entry>
<entry>Reserved for future extensions. Applications and drivers must <entry>Reserved for future extensions. Applications and drivers must
set the array to zero.</entry> set the array to zero.</entry>
</row> </row>
......
...@@ -134,7 +134,8 @@ information.</para> ...@@ -134,7 +134,8 @@ information.</para>
<row> <row>
<entry>__u32</entry> <entry>__u32</entry>
<entry><structfield>reserved</structfield>[8]</entry> <entry><structfield>reserved</structfield>[8]</entry>
<entry>A place holder for future extensions.</entry> <entry>A place holder for future extensions. Drivers and applications
must set the array to zero.</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
......
...@@ -197,7 +197,17 @@ be muted when playing back at a non-standard speed. ...@@ -197,7 +197,17 @@ be muted when playing back at a non-standard speed.
this command does nothing. This command has two flags: this command does nothing. This command has two flags:
if <constant>V4L2_DEC_CMD_STOP_TO_BLACK</constant> is set, then the decoder will if <constant>V4L2_DEC_CMD_STOP_TO_BLACK</constant> is set, then the decoder will
set the picture to black after it stopped decoding. Otherwise the last image will set the picture to black after it stopped decoding. Otherwise the last image will
repeat. If <constant>V4L2_DEC_CMD_STOP_IMMEDIATELY</constant> is set, then the decoder repeat. mem2mem decoders will stop producing new frames altogether. They will send
a <constant>V4L2_EVENT_EOS</constant> event when the last frame has been decoded
and all frames are ready to be dequeued and will set the
<constant>V4L2_BUF_FLAG_LAST</constant> buffer flag on the last buffer of the
capture queue to indicate there will be no new buffers produced to dequeue. This
buffer may be empty, indicated by the driver setting the
<structfield>bytesused</structfield> field to 0. Once the
<constant>V4L2_BUF_FLAG_LAST</constant> flag was set, the
<link linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl will not block anymore,
but return an &EPIPE;.
If <constant>V4L2_DEC_CMD_STOP_IMMEDIATELY</constant> is set, then the decoder
stops immediately (ignoring the <structfield>pts</structfield> value), otherwise it stops immediately (ignoring the <structfield>pts</structfield> value), otherwise it
will keep decoding until timestamp >= pts or until the last of the pending data from will keep decoding until timestamp >= pts or until the last of the pending data from
its internal buffers was decoded. its internal buffers was decoded.
......
...@@ -217,7 +217,8 @@ enumerated.</entry> ...@@ -217,7 +217,8 @@ enumerated.</entry>
<entry>__u32</entry> <entry>__u32</entry>
<entry><structfield>reserved[2]</structfield></entry> <entry><structfield>reserved[2]</structfield></entry>
<entry></entry> <entry></entry>
<entry>Reserved space for future use.</entry> <entry>Reserved space for future use. Must be zeroed by drivers and
applications.</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册