You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'next' into for-linus
This commit is contained in:
+2
-6
@@ -22,6 +22,7 @@
|
|||||||
*.lst
|
*.lst
|
||||||
*.symtypes
|
*.symtypes
|
||||||
*.order
|
*.order
|
||||||
|
modules.builtin
|
||||||
*.elf
|
*.elf
|
||||||
*.bin
|
*.bin
|
||||||
*.gz
|
*.gz
|
||||||
@@ -36,6 +37,7 @@
|
|||||||
tags
|
tags
|
||||||
TAGS
|
TAGS
|
||||||
vmlinux
|
vmlinux
|
||||||
|
vmlinuz
|
||||||
System.map
|
System.map
|
||||||
Module.markers
|
Module.markers
|
||||||
Module.symvers
|
Module.symvers
|
||||||
@@ -45,14 +47,8 @@ Module.symvers
|
|||||||
#
|
#
|
||||||
# Generated include files
|
# Generated include files
|
||||||
#
|
#
|
||||||
include/asm
|
|
||||||
include/asm-*/asm-offsets.h
|
|
||||||
include/config
|
include/config
|
||||||
include/linux/autoconf.h
|
|
||||||
include/linux/compile.h
|
|
||||||
include/linux/version.h
|
include/linux/version.h
|
||||||
include/linux/utsrelease.h
|
|
||||||
include/linux/bounds.h
|
|
||||||
include/generated
|
include/generated
|
||||||
|
|
||||||
# stgit generated dirs
|
# stgit generated dirs
|
||||||
|
|||||||
@@ -21,25 +21,27 @@ Contact: Alan Stern <stern@rowland.harvard.edu>
|
|||||||
Description:
|
Description:
|
||||||
Each USB device directory will contain a file named
|
Each USB device directory will contain a file named
|
||||||
power/level. This file holds a power-level setting for
|
power/level. This file holds a power-level setting for
|
||||||
the device, one of "on", "auto", or "suspend".
|
the device, either "on" or "auto".
|
||||||
|
|
||||||
"on" means that the device is not allowed to autosuspend,
|
"on" means that the device is not allowed to autosuspend,
|
||||||
although normal suspends for system sleep will still
|
although normal suspends for system sleep will still
|
||||||
be honored. "auto" means the device will autosuspend
|
be honored. "auto" means the device will autosuspend
|
||||||
and autoresume in the usual manner, according to the
|
and autoresume in the usual manner, according to the
|
||||||
capabilities of its driver. "suspend" means the device
|
capabilities of its driver.
|
||||||
is forced into a suspended state and it will not autoresume
|
|
||||||
in response to I/O requests. However remote-wakeup requests
|
|
||||||
from the device may still be enabled (the remote-wakeup
|
|
||||||
setting is controlled separately by the power/wakeup
|
|
||||||
attribute).
|
|
||||||
|
|
||||||
During normal use, devices should be left in the "auto"
|
During normal use, devices should be left in the "auto"
|
||||||
level. The other levels are meant for administrative uses.
|
level. The "on" level is meant for administrative uses.
|
||||||
If you want to suspend a device immediately but leave it
|
If you want to suspend a device immediately but leave it
|
||||||
free to wake up in response to I/O requests, you should
|
free to wake up in response to I/O requests, you should
|
||||||
write "0" to power/autosuspend.
|
write "0" to power/autosuspend.
|
||||||
|
|
||||||
|
Device not capable of proper suspend and resume should be
|
||||||
|
left in the "on" level. Although the USB spec requires
|
||||||
|
devices to support suspend/resume, many of them do not.
|
||||||
|
In fact so many don't that by default, the USB core
|
||||||
|
initializes all non-hub devices in the "on" level. Some
|
||||||
|
drivers may change this setting when they are bound.
|
||||||
|
|
||||||
What: /sys/bus/usb/devices/.../power/persist
|
What: /sys/bus/usb/devices/.../power/persist
|
||||||
Date: May 2007
|
Date: May 2007
|
||||||
KernelVersion: 2.6.23
|
KernelVersion: 2.6.23
|
||||||
|
|||||||
@@ -60,6 +60,19 @@ Description:
|
|||||||
Users: hotplug memory remove tools
|
Users: hotplug memory remove tools
|
||||||
https://w3.opensource.ibm.com/projects/powerpc-utils/
|
https://w3.opensource.ibm.com/projects/powerpc-utils/
|
||||||
|
|
||||||
|
|
||||||
|
What: /sys/devices/system/memoryX/nodeY
|
||||||
|
Date: October 2009
|
||||||
|
Contact: Linux Memory Management list <linux-mm@kvack.org>
|
||||||
|
Description:
|
||||||
|
When CONFIG_NUMA is enabled, a symbolic link that
|
||||||
|
points to the corresponding NUMA node directory.
|
||||||
|
|
||||||
|
For example, the following symbolic link is created for
|
||||||
|
memory section 9 on node0:
|
||||||
|
/sys/devices/system/memory/memory9/node0 -> ../../node/node0
|
||||||
|
|
||||||
|
|
||||||
What: /sys/devices/system/node/nodeX/memoryY
|
What: /sys/devices/system/node/nodeX/memoryY
|
||||||
Date: September 2008
|
Date: September 2008
|
||||||
Contact: Gary Hade <garyhade@us.ibm.com>
|
Contact: Gary Hade <garyhade@us.ibm.com>
|
||||||
@@ -70,4 +83,3 @@ Description:
|
|||||||
memory section directory. For example, the following symbolic
|
memory section directory. For example, the following symbolic
|
||||||
link is created for memory section 9 on node0.
|
link is created for memory section 9 on node0.
|
||||||
/sys/devices/system/node/node0/memory9 -> ../../memory/memory9
|
/sys/devices/system/node/node0/memory9 -> ../../memory/memory9
|
||||||
|
|
||||||
|
|||||||
@@ -92,6 +92,20 @@ Description: Discover NUMA node a CPU belongs to
|
|||||||
/sys/devices/system/cpu/cpu42/node2 -> ../../node/node2
|
/sys/devices/system/cpu/cpu42/node2 -> ../../node/node2
|
||||||
|
|
||||||
|
|
||||||
|
What: /sys/devices/system/cpu/cpu#/node
|
||||||
|
Date: October 2009
|
||||||
|
Contact: Linux memory management mailing list <linux-mm@kvack.org>
|
||||||
|
Description: Discover NUMA node a CPU belongs to
|
||||||
|
|
||||||
|
When CONFIG_NUMA is enabled, a symbolic link that points
|
||||||
|
to the corresponding NUMA node directory.
|
||||||
|
|
||||||
|
For example, the following symlink is created for cpu42
|
||||||
|
in NUMA node 2:
|
||||||
|
|
||||||
|
/sys/devices/system/cpu/cpu42/node2 -> ../../node/node2
|
||||||
|
|
||||||
|
|
||||||
What: /sys/devices/system/cpu/cpu#/topology/core_id
|
What: /sys/devices/system/cpu/cpu#/topology/core_id
|
||||||
/sys/devices/system/cpu/cpu#/topology/core_siblings
|
/sys/devices/system/cpu/cpu#/topology/core_siblings
|
||||||
/sys/devices/system/cpu/cpu#/topology/core_siblings_list
|
/sys/devices/system/cpu/cpu#/topology/core_siblings_list
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
What: /sys/devices/system/memory/soft_offline_page
|
||||||
|
Date: Sep 2009
|
||||||
|
KernelVersion: 2.6.33
|
||||||
|
Contact: andi@firstfloor.org
|
||||||
|
Description:
|
||||||
|
Soft-offline the memory page containing the physical address
|
||||||
|
written into this file. Input is a hex number specifying the
|
||||||
|
physical address of the page. The kernel will then attempt
|
||||||
|
to soft-offline it, by moving the contents elsewhere or
|
||||||
|
dropping it if possible. The kernel will then be placed
|
||||||
|
on the bad page list and never be reused.
|
||||||
|
|
||||||
|
The offlining is done in kernel specific granuality.
|
||||||
|
Normally it's the base page size of the kernel, but
|
||||||
|
this might change.
|
||||||
|
|
||||||
|
The page must be still accessible, not poisoned. The
|
||||||
|
kernel will never kill anything for this, but rather
|
||||||
|
fail the offline. Return value is the size of the
|
||||||
|
number, or a error when the offlining failed. Reading
|
||||||
|
the file is not allowed.
|
||||||
|
|
||||||
|
What: /sys/devices/system/memory/hard_offline_page
|
||||||
|
Date: Sep 2009
|
||||||
|
KernelVersion: 2.6.33
|
||||||
|
Contact: andi@firstfloor.org
|
||||||
|
Description:
|
||||||
|
Hard-offline the memory page containing the physical
|
||||||
|
address written into this file. Input is a hex number
|
||||||
|
specifying the physical address of the page. The
|
||||||
|
kernel will then attempt to hard-offline the page, by
|
||||||
|
trying to drop the page or killing any owner or
|
||||||
|
triggering IO errors if needed. Note this may kill
|
||||||
|
any processes owning the page. The kernel will avoid
|
||||||
|
to access this page assuming it's poisoned by the
|
||||||
|
hardware.
|
||||||
|
|
||||||
|
The offlining is done in kernel specific granuality.
|
||||||
|
Normally it's the base page size of the kernel, but
|
||||||
|
this might change.
|
||||||
|
|
||||||
|
Return value is the size of the number, or a error when
|
||||||
|
the offlining failed.
|
||||||
|
Reading the file is not allowed.
|
||||||
@@ -49,6 +49,8 @@ o oprofile 0.9 # oprofiled --version
|
|||||||
o udev 081 # udevinfo -V
|
o udev 081 # udevinfo -V
|
||||||
o grub 0.93 # grub --version
|
o grub 0.93 # grub --version
|
||||||
o mcelog 0.6
|
o mcelog 0.6
|
||||||
|
o iptables 1.4.1 # iptables -V
|
||||||
|
|
||||||
|
|
||||||
Kernel compilation
|
Kernel compilation
|
||||||
==================
|
==================
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \
|
DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \
|
||||||
kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
|
kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
|
||||||
procfs-guide.xml writing_usb_driver.xml networking.xml \
|
writing_usb_driver.xml networking.xml \
|
||||||
kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
|
kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
|
||||||
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
|
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
|
||||||
genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
|
genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
|
||||||
@@ -32,10 +32,10 @@ PS_METHOD = $(prefer-db2x)
|
|||||||
|
|
||||||
###
|
###
|
||||||
# The targets that may be used.
|
# The targets that may be used.
|
||||||
PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs media
|
PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs xmldoclinks
|
||||||
|
|
||||||
BOOKS := $(addprefix $(obj)/,$(DOCBOOKS))
|
BOOKS := $(addprefix $(obj)/,$(DOCBOOKS))
|
||||||
xmldocs: $(BOOKS)
|
xmldocs: $(BOOKS) xmldoclinks
|
||||||
sgmldocs: xmldocs
|
sgmldocs: xmldocs
|
||||||
|
|
||||||
PS := $(patsubst %.xml, %.ps, $(BOOKS))
|
PS := $(patsubst %.xml, %.ps, $(BOOKS))
|
||||||
@@ -45,15 +45,24 @@ PDF := $(patsubst %.xml, %.pdf, $(BOOKS))
|
|||||||
pdfdocs: $(PDF)
|
pdfdocs: $(PDF)
|
||||||
|
|
||||||
HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS)))
|
HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS)))
|
||||||
htmldocs: media $(HTML)
|
htmldocs: $(HTML)
|
||||||
$(call build_main_index)
|
$(call build_main_index)
|
||||||
|
$(call build_images)
|
||||||
|
|
||||||
MAN := $(patsubst %.xml, %.9, $(BOOKS))
|
MAN := $(patsubst %.xml, %.9, $(BOOKS))
|
||||||
mandocs: $(MAN)
|
mandocs: $(MAN)
|
||||||
|
|
||||||
media:
|
build_images = mkdir -p $(objtree)/Documentation/DocBook/media/ && \
|
||||||
mkdir -p $(srctree)/Documentation/DocBook/media/
|
cp $(srctree)/Documentation/DocBook/dvb/*.png $(srctree)/Documentation/DocBook/v4l/*.gif $(objtree)/Documentation/DocBook/media/
|
||||||
cp $(srctree)/Documentation/DocBook/dvb/*.png $(srctree)/Documentation/DocBook/v4l/*.gif $(srctree)/Documentation/DocBook/media/
|
|
||||||
|
xmldoclinks:
|
||||||
|
ifneq ($(objtree),$(srctree))
|
||||||
|
for dep in dvb media-entities.tmpl media-indices.tmpl v4l; do \
|
||||||
|
rm -f $(objtree)/Documentation/DocBook/$$dep \
|
||||||
|
&& ln -s $(srctree)/Documentation/DocBook/$$dep $(objtree)/Documentation/DocBook/ \
|
||||||
|
|| exit; \
|
||||||
|
done
|
||||||
|
endif
|
||||||
|
|
||||||
installmandocs: mandocs
|
installmandocs: mandocs
|
||||||
mkdir -p /usr/local/man/man9/
|
mkdir -p /usr/local/man/man9/
|
||||||
@@ -65,7 +74,7 @@ KERNELDOC = $(srctree)/scripts/kernel-doc
|
|||||||
DOCPROC = $(objtree)/scripts/basic/docproc
|
DOCPROC = $(objtree)/scripts/basic/docproc
|
||||||
|
|
||||||
XMLTOFLAGS = -m $(srctree)/Documentation/DocBook/stylesheet.xsl
|
XMLTOFLAGS = -m $(srctree)/Documentation/DocBook/stylesheet.xsl
|
||||||
#XMLTOFLAGS += --skip-validation
|
XMLTOFLAGS += --skip-validation
|
||||||
|
|
||||||
###
|
###
|
||||||
# DOCPROC is used for two purposes:
|
# DOCPROC is used for two purposes:
|
||||||
@@ -101,17 +110,6 @@ endif
|
|||||||
# Changes in kernel-doc force a rebuild of all documentation
|
# Changes in kernel-doc force a rebuild of all documentation
|
||||||
$(BOOKS): $(KERNELDOC)
|
$(BOOKS): $(KERNELDOC)
|
||||||
|
|
||||||
###
|
|
||||||
# procfs guide uses a .c file as example code.
|
|
||||||
# This requires an explicit dependency
|
|
||||||
C-procfs-example = procfs_example.xml
|
|
||||||
C-procfs-example2 = $(addprefix $(obj)/,$(C-procfs-example))
|
|
||||||
$(obj)/procfs-guide.xml: $(C-procfs-example2)
|
|
||||||
|
|
||||||
# List of programs to build
|
|
||||||
##oops, this is a kernel module::hostprogs-y := procfs_example
|
|
||||||
obj-m += procfs_example.o
|
|
||||||
|
|
||||||
# Tell kbuild to always build the programs
|
# Tell kbuild to always build the programs
|
||||||
always := $(hostprogs-y)
|
always := $(hostprogs-y)
|
||||||
|
|
||||||
@@ -238,7 +236,7 @@ clean-files := $(DOCBOOKS) \
|
|||||||
$(patsubst %.xml, %.pdf, $(DOCBOOKS)) \
|
$(patsubst %.xml, %.pdf, $(DOCBOOKS)) \
|
||||||
$(patsubst %.xml, %.html, $(DOCBOOKS)) \
|
$(patsubst %.xml, %.html, $(DOCBOOKS)) \
|
||||||
$(patsubst %.xml, %.9, $(DOCBOOKS)) \
|
$(patsubst %.xml, %.9, $(DOCBOOKS)) \
|
||||||
$(C-procfs-example) $(index)
|
$(index)
|
||||||
|
|
||||||
clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
|
clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
<!ENTITY VIDIOC-ENUMINPUT "<link linkend='vidioc-enuminput'><constant>VIDIOC_ENUMINPUT</constant></link>">
|
<!ENTITY VIDIOC-ENUMINPUT "<link linkend='vidioc-enuminput'><constant>VIDIOC_ENUMINPUT</constant></link>">
|
||||||
<!ENTITY VIDIOC-ENUMOUTPUT "<link linkend='vidioc-enumoutput'><constant>VIDIOC_ENUMOUTPUT</constant></link>">
|
<!ENTITY VIDIOC-ENUMOUTPUT "<link linkend='vidioc-enumoutput'><constant>VIDIOC_ENUMOUTPUT</constant></link>">
|
||||||
<!ENTITY VIDIOC-ENUMSTD "<link linkend='vidioc-enumstd'><constant>VIDIOC_ENUMSTD</constant></link>">
|
<!ENTITY VIDIOC-ENUMSTD "<link linkend='vidioc-enumstd'><constant>VIDIOC_ENUMSTD</constant></link>">
|
||||||
|
<!ENTITY VIDIOC-ENUM-DV-PRESETS "<link linkend='vidioc-enum-dv-presets'><constant>VIDIOC_ENUM_DV_PRESETS</constant></link>">
|
||||||
<!ENTITY VIDIOC-ENUM-FMT "<link linkend='vidioc-enum-fmt'><constant>VIDIOC_ENUM_FMT</constant></link>">
|
<!ENTITY VIDIOC-ENUM-FMT "<link linkend='vidioc-enum-fmt'><constant>VIDIOC_ENUM_FMT</constant></link>">
|
||||||
<!ENTITY VIDIOC-ENUM-FRAMEINTERVALS "<link linkend='vidioc-enum-frameintervals'><constant>VIDIOC_ENUM_FRAMEINTERVALS</constant></link>">
|
<!ENTITY VIDIOC-ENUM-FRAMEINTERVALS "<link linkend='vidioc-enum-frameintervals'><constant>VIDIOC_ENUM_FRAMEINTERVALS</constant></link>">
|
||||||
<!ENTITY VIDIOC-ENUM-FRAMESIZES "<link linkend='vidioc-enum-framesizes'><constant>VIDIOC_ENUM_FRAMESIZES</constant></link>">
|
<!ENTITY VIDIOC-ENUM-FRAMESIZES "<link linkend='vidioc-enum-framesizes'><constant>VIDIOC_ENUM_FRAMESIZES</constant></link>">
|
||||||
@@ -30,6 +31,8 @@
|
|||||||
<!ENTITY VIDIOC-G-AUDOUT "<link linkend='vidioc-g-audioout'><constant>VIDIOC_G_AUDOUT</constant></link>">
|
<!ENTITY VIDIOC-G-AUDOUT "<link linkend='vidioc-g-audioout'><constant>VIDIOC_G_AUDOUT</constant></link>">
|
||||||
<!ENTITY VIDIOC-G-CROP "<link linkend='vidioc-g-crop'><constant>VIDIOC_G_CROP</constant></link>">
|
<!ENTITY VIDIOC-G-CROP "<link linkend='vidioc-g-crop'><constant>VIDIOC_G_CROP</constant></link>">
|
||||||
<!ENTITY VIDIOC-G-CTRL "<link linkend='vidioc-g-ctrl'><constant>VIDIOC_G_CTRL</constant></link>">
|
<!ENTITY VIDIOC-G-CTRL "<link linkend='vidioc-g-ctrl'><constant>VIDIOC_G_CTRL</constant></link>">
|
||||||
|
<!ENTITY VIDIOC-G-DV-PRESET "<link linkend='vidioc-g-dv-preset'><constant>VIDIOC_G_DV_PRESET</constant></link>">
|
||||||
|
<!ENTITY VIDIOC-G-DV-TIMINGS "<link linkend='vidioc-g-dv-timings'><constant>VIDIOC_G_DV_TIMINGS</constant></link>">
|
||||||
<!ENTITY VIDIOC-G-ENC-INDEX "<link linkend='vidioc-g-enc-index'><constant>VIDIOC_G_ENC_INDEX</constant></link>">
|
<!ENTITY VIDIOC-G-ENC-INDEX "<link linkend='vidioc-g-enc-index'><constant>VIDIOC_G_ENC_INDEX</constant></link>">
|
||||||
<!ENTITY VIDIOC-G-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_G_EXT_CTRLS</constant></link>">
|
<!ENTITY VIDIOC-G-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_G_EXT_CTRLS</constant></link>">
|
||||||
<!ENTITY VIDIOC-G-FBUF "<link linkend='vidioc-g-fbuf'><constant>VIDIOC_G_FBUF</constant></link>">
|
<!ENTITY VIDIOC-G-FBUF "<link linkend='vidioc-g-fbuf'><constant>VIDIOC_G_FBUF</constant></link>">
|
||||||
@@ -53,6 +56,7 @@
|
|||||||
<!ENTITY VIDIOC-QUERYCTRL "<link linkend='vidioc-queryctrl'><constant>VIDIOC_QUERYCTRL</constant></link>">
|
<!ENTITY VIDIOC-QUERYCTRL "<link linkend='vidioc-queryctrl'><constant>VIDIOC_QUERYCTRL</constant></link>">
|
||||||
<!ENTITY VIDIOC-QUERYMENU "<link linkend='vidioc-queryctrl'><constant>VIDIOC_QUERYMENU</constant></link>">
|
<!ENTITY VIDIOC-QUERYMENU "<link linkend='vidioc-queryctrl'><constant>VIDIOC_QUERYMENU</constant></link>">
|
||||||
<!ENTITY VIDIOC-QUERYSTD "<link linkend='vidioc-querystd'><constant>VIDIOC_QUERYSTD</constant></link>">
|
<!ENTITY VIDIOC-QUERYSTD "<link linkend='vidioc-querystd'><constant>VIDIOC_QUERYSTD</constant></link>">
|
||||||
|
<!ENTITY VIDIOC-QUERY-DV-PRESET "<link linkend='vidioc-query-dv-preset'><constant>VIDIOC_QUERY_DV_PRESET</constant></link>">
|
||||||
<!ENTITY VIDIOC-REQBUFS "<link linkend='vidioc-reqbufs'><constant>VIDIOC_REQBUFS</constant></link>">
|
<!ENTITY VIDIOC-REQBUFS "<link linkend='vidioc-reqbufs'><constant>VIDIOC_REQBUFS</constant></link>">
|
||||||
<!ENTITY VIDIOC-STREAMOFF "<link linkend='vidioc-streamon'><constant>VIDIOC_STREAMOFF</constant></link>">
|
<!ENTITY VIDIOC-STREAMOFF "<link linkend='vidioc-streamon'><constant>VIDIOC_STREAMOFF</constant></link>">
|
||||||
<!ENTITY VIDIOC-STREAMON "<link linkend='vidioc-streamon'><constant>VIDIOC_STREAMON</constant></link>">
|
<!ENTITY VIDIOC-STREAMON "<link linkend='vidioc-streamon'><constant>VIDIOC_STREAMON</constant></link>">
|
||||||
@@ -60,6 +64,8 @@
|
|||||||
<!ENTITY VIDIOC-S-AUDOUT "<link linkend='vidioc-g-audioout'><constant>VIDIOC_S_AUDOUT</constant></link>">
|
<!ENTITY VIDIOC-S-AUDOUT "<link linkend='vidioc-g-audioout'><constant>VIDIOC_S_AUDOUT</constant></link>">
|
||||||
<!ENTITY VIDIOC-S-CROP "<link linkend='vidioc-g-crop'><constant>VIDIOC_S_CROP</constant></link>">
|
<!ENTITY VIDIOC-S-CROP "<link linkend='vidioc-g-crop'><constant>VIDIOC_S_CROP</constant></link>">
|
||||||
<!ENTITY VIDIOC-S-CTRL "<link linkend='vidioc-g-ctrl'><constant>VIDIOC_S_CTRL</constant></link>">
|
<!ENTITY VIDIOC-S-CTRL "<link linkend='vidioc-g-ctrl'><constant>VIDIOC_S_CTRL</constant></link>">
|
||||||
|
<!ENTITY VIDIOC-S-DV-PRESET "<link linkend='vidioc-g-dv-preset'><constant>VIDIOC_S_DV_PRESET</constant></link>">
|
||||||
|
<!ENTITY VIDIOC-S-DV-TIMINGS "<link linkend='vidioc-g-dv-timings'><constant>VIDIOC_S_DV_TIMINGS</constant></link>">
|
||||||
<!ENTITY VIDIOC-S-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_S_EXT_CTRLS</constant></link>">
|
<!ENTITY VIDIOC-S-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_S_EXT_CTRLS</constant></link>">
|
||||||
<!ENTITY VIDIOC-S-FBUF "<link linkend='vidioc-g-fbuf'><constant>VIDIOC_S_FBUF</constant></link>">
|
<!ENTITY VIDIOC-S-FBUF "<link linkend='vidioc-g-fbuf'><constant>VIDIOC_S_FBUF</constant></link>">
|
||||||
<!ENTITY VIDIOC-S-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_S_FMT</constant></link>">
|
<!ENTITY VIDIOC-S-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_S_FMT</constant></link>">
|
||||||
@@ -118,6 +124,7 @@
|
|||||||
<!-- Structures -->
|
<!-- Structures -->
|
||||||
<!ENTITY v4l2-audio "struct <link linkend='v4l2-audio'>v4l2_audio</link>">
|
<!ENTITY v4l2-audio "struct <link linkend='v4l2-audio'>v4l2_audio</link>">
|
||||||
<!ENTITY v4l2-audioout "struct <link linkend='v4l2-audioout'>v4l2_audioout</link>">
|
<!ENTITY v4l2-audioout "struct <link linkend='v4l2-audioout'>v4l2_audioout</link>">
|
||||||
|
<!ENTITY v4l2-bt-timings "struct <link linkend='v4l2-bt-timings'>v4l2_bt_timings</link>">
|
||||||
<!ENTITY v4l2-buffer "struct <link linkend='v4l2-buffer'>v4l2_buffer</link>">
|
<!ENTITY v4l2-buffer "struct <link linkend='v4l2-buffer'>v4l2_buffer</link>">
|
||||||
<!ENTITY v4l2-capability "struct <link linkend='v4l2-capability'>v4l2_capability</link>">
|
<!ENTITY v4l2-capability "struct <link linkend='v4l2-capability'>v4l2_capability</link>">
|
||||||
<!ENTITY v4l2-captureparm "struct <link linkend='v4l2-captureparm'>v4l2_captureparm</link>">
|
<!ENTITY v4l2-captureparm "struct <link linkend='v4l2-captureparm'>v4l2_captureparm</link>">
|
||||||
@@ -128,6 +135,9 @@
|
|||||||
<!ENTITY v4l2-dbg-chip-ident "struct <link linkend='v4l2-dbg-chip-ident'>v4l2_dbg_chip_ident</link>">
|
<!ENTITY v4l2-dbg-chip-ident "struct <link linkend='v4l2-dbg-chip-ident'>v4l2_dbg_chip_ident</link>">
|
||||||
<!ENTITY v4l2-dbg-match "struct <link linkend='v4l2-dbg-match'>v4l2_dbg_match</link>">
|
<!ENTITY v4l2-dbg-match "struct <link linkend='v4l2-dbg-match'>v4l2_dbg_match</link>">
|
||||||
<!ENTITY v4l2-dbg-register "struct <link linkend='v4l2-dbg-register'>v4l2_dbg_register</link>">
|
<!ENTITY v4l2-dbg-register "struct <link linkend='v4l2-dbg-register'>v4l2_dbg_register</link>">
|
||||||
|
<!ENTITY v4l2-dv-enum-preset "struct <link linkend='v4l2-dv-enum-preset'>v4l2_dv_enum_preset</link>">
|
||||||
|
<!ENTITY v4l2-dv-preset "struct <link linkend='v4l2-dv-preset'>v4l2_dv_preset</link>">
|
||||||
|
<!ENTITY v4l2-dv-timings "struct <link linkend='v4l2-dv-timings'>v4l2_dv_timings</link>">
|
||||||
<!ENTITY v4l2-enc-idx "struct <link linkend='v4l2-enc-idx'>v4l2_enc_idx</link>">
|
<!ENTITY v4l2-enc-idx "struct <link linkend='v4l2-enc-idx'>v4l2_enc_idx</link>">
|
||||||
<!ENTITY v4l2-enc-idx-entry "struct <link linkend='v4l2-enc-idx-entry'>v4l2_enc_idx_entry</link>">
|
<!ENTITY v4l2-enc-idx-entry "struct <link linkend='v4l2-enc-idx-entry'>v4l2_enc_idx_entry</link>">
|
||||||
<!ENTITY v4l2-encoder-cmd "struct <link linkend='v4l2-encoder-cmd'>v4l2_encoder_cmd</link>">
|
<!ENTITY v4l2-encoder-cmd "struct <link linkend='v4l2-encoder-cmd'>v4l2_encoder_cmd</link>">
|
||||||
@@ -243,6 +253,10 @@
|
|||||||
<!ENTITY sub-enumaudioout SYSTEM "v4l/vidioc-enumaudioout.xml">
|
<!ENTITY sub-enumaudioout SYSTEM "v4l/vidioc-enumaudioout.xml">
|
||||||
<!ENTITY sub-enuminput SYSTEM "v4l/vidioc-enuminput.xml">
|
<!ENTITY sub-enuminput SYSTEM "v4l/vidioc-enuminput.xml">
|
||||||
<!ENTITY sub-enumoutput SYSTEM "v4l/vidioc-enumoutput.xml">
|
<!ENTITY sub-enumoutput SYSTEM "v4l/vidioc-enumoutput.xml">
|
||||||
|
<!ENTITY sub-enum-dv-presets SYSTEM "v4l/vidioc-enum-dv-presets.xml">
|
||||||
|
<!ENTITY sub-g-dv-preset SYSTEM "v4l/vidioc-g-dv-preset.xml">
|
||||||
|
<!ENTITY sub-query-dv-preset SYSTEM "v4l/vidioc-query-dv-preset.xml">
|
||||||
|
<!ENTITY sub-g-dv-timings SYSTEM "v4l/vidioc-g-dv-timings.xml">
|
||||||
<!ENTITY sub-enumstd SYSTEM "v4l/vidioc-enumstd.xml">
|
<!ENTITY sub-enumstd SYSTEM "v4l/vidioc-enumstd.xml">
|
||||||
<!ENTITY sub-g-audio SYSTEM "v4l/vidioc-g-audio.xml">
|
<!ENTITY sub-g-audio SYSTEM "v4l/vidioc-g-audio.xml">
|
||||||
<!ENTITY sub-g-audioout SYSTEM "v4l/vidioc-g-audioout.xml">
|
<!ENTITY sub-g-audioout SYSTEM "v4l/vidioc-g-audioout.xml">
|
||||||
@@ -333,6 +347,10 @@
|
|||||||
<!ENTITY enumaudioout SYSTEM "v4l/vidioc-enumaudioout.xml">
|
<!ENTITY enumaudioout SYSTEM "v4l/vidioc-enumaudioout.xml">
|
||||||
<!ENTITY enuminput SYSTEM "v4l/vidioc-enuminput.xml">
|
<!ENTITY enuminput SYSTEM "v4l/vidioc-enuminput.xml">
|
||||||
<!ENTITY enumoutput SYSTEM "v4l/vidioc-enumoutput.xml">
|
<!ENTITY enumoutput SYSTEM "v4l/vidioc-enumoutput.xml">
|
||||||
|
<!ENTITY enum-dv-presets SYSTEM "v4l/vidioc-enum-dv-presets.xml">
|
||||||
|
<!ENTITY g-dv-preset SYSTEM "v4l/vidioc-g-dv-preset.xml">
|
||||||
|
<!ENTITY query-dv-preset SYSTEM "v4l/vidioc-query-dv-preset.xml">
|
||||||
|
<!ENTITY g-dv-timings SYSTEM "v4l/vidioc-g-dv-timings.xml">
|
||||||
<!ENTITY enumstd SYSTEM "v4l/vidioc-enumstd.xml">
|
<!ENTITY enumstd SYSTEM "v4l/vidioc-enumstd.xml">
|
||||||
<!ENTITY g-audio SYSTEM "v4l/vidioc-g-audio.xml">
|
<!ENTITY g-audio SYSTEM "v4l/vidioc-g-audio.xml">
|
||||||
<!ENTITY g-audioout SYSTEM "v4l/vidioc-g-audioout.xml">
|
<!ENTITY g-audioout SYSTEM "v4l/vidioc-g-audioout.xml">
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<indexentry><primaryie>enum <link linkend='v4l2-preemphasis'>v4l2_preemphasis</link></primaryie></indexentry>
|
<indexentry><primaryie>enum <link linkend='v4l2-preemphasis'>v4l2_preemphasis</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-audio'>v4l2_audio</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-audio'>v4l2_audio</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-audioout'>v4l2_audioout</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-audioout'>v4l2_audioout</link></primaryie></indexentry>
|
||||||
|
<indexentry><primaryie>struct <link linkend='v4l2-bt-timings'>v4l2_bt_timings</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-buffer'>v4l2_buffer</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-buffer'>v4l2_buffer</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-capability'>v4l2_capability</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-capability'>v4l2_capability</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-captureparm'>v4l2_captureparm</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-captureparm'>v4l2_captureparm</link></primaryie></indexentry>
|
||||||
@@ -46,6 +47,9 @@
|
|||||||
<indexentry><primaryie>struct <link linkend='v4l2-dbg-chip-ident'>v4l2_dbg_chip_ident</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-dbg-chip-ident'>v4l2_dbg_chip_ident</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-dbg-match'>v4l2_dbg_match</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-dbg-match'>v4l2_dbg_match</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-dbg-register'>v4l2_dbg_register</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-dbg-register'>v4l2_dbg_register</link></primaryie></indexentry>
|
||||||
|
<indexentry><primaryie>struct <link linkend='v4l2-dv-enum-preset'>v4l2_dv_enum_preset</link></primaryie></indexentry>
|
||||||
|
<indexentry><primaryie>struct <link linkend='v4l2-dv-preset'>v4l2_dv_preset</link></primaryie></indexentry>
|
||||||
|
<indexentry><primaryie>struct <link linkend='v4l2-dv-timings'>v4l2_dv_timings</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-enc-idx'>v4l2_enc_idx</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-enc-idx'>v4l2_enc_idx</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-enc-idx-entry'>v4l2_enc_idx_entry</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-enc-idx-entry'>v4l2_enc_idx_entry</link></primaryie></indexentry>
|
||||||
<indexentry><primaryie>struct <link linkend='v4l2-encoder-cmd'>v4l2_encoder_cmd</link></primaryie></indexentry>
|
<indexentry><primaryie>struct <link linkend='v4l2-encoder-cmd'>v4l2_encoder_cmd</link></primaryie></indexentry>
|
||||||
|
|||||||
@@ -174,7 +174,7 @@
|
|||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
static struct mtd_info *board_mtd;
|
static struct mtd_info *board_mtd;
|
||||||
static unsigned long baseaddr;
|
static void __iomem *baseaddr;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
Static example
|
Static example
|
||||||
@@ -182,7 +182,7 @@ static unsigned long baseaddr;
|
|||||||
<programlisting>
|
<programlisting>
|
||||||
static struct mtd_info board_mtd;
|
static struct mtd_info board_mtd;
|
||||||
static struct nand_chip board_chip;
|
static struct nand_chip board_chip;
|
||||||
static unsigned long baseaddr;
|
static void __iomem *baseaddr;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1 id="Partition_defines">
|
<sect1 id="Partition_defines">
|
||||||
@@ -283,8 +283,8 @@ int __init board_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* map physical address */
|
/* map physical address */
|
||||||
baseaddr = (unsigned long)ioremap(CHIP_PHYSICAL_ADDRESS, 1024);
|
baseaddr = ioremap(CHIP_PHYSICAL_ADDRESS, 1024);
|
||||||
if(!baseaddr){
|
if (!baseaddr) {
|
||||||
printk("Ioremap to access NAND chip failed\n");
|
printk("Ioremap to access NAND chip failed\n");
|
||||||
err = -EIO;
|
err = -EIO;
|
||||||
goto out_mtd;
|
goto out_mtd;
|
||||||
@@ -316,7 +316,7 @@ int __init board_init (void)
|
|||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
out_ior:
|
out_ior:
|
||||||
iounmap((void *)baseaddr);
|
iounmap(baseaddr);
|
||||||
out_mtd:
|
out_mtd:
|
||||||
kfree (board_mtd);
|
kfree (board_mtd);
|
||||||
out:
|
out:
|
||||||
@@ -341,7 +341,7 @@ static void __exit board_cleanup (void)
|
|||||||
nand_release (board_mtd);
|
nand_release (board_mtd);
|
||||||
|
|
||||||
/* unmap physical address */
|
/* unmap physical address */
|
||||||
iounmap((void *)baseaddr);
|
iounmap(baseaddr);
|
||||||
|
|
||||||
/* Free the MTD device structure */
|
/* Free the MTD device structure */
|
||||||
kfree (board_mtd);
|
kfree (board_mtd);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,201 +0,0 @@
|
|||||||
/*
|
|
||||||
* procfs_example.c: an example proc interface
|
|
||||||
*
|
|
||||||
* Copyright (C) 2001, Erik Mouw (mouw@nl.linux.org)
|
|
||||||
*
|
|
||||||
* This file accompanies the procfs-guide in the Linux kernel
|
|
||||||
* source. Its main use is to demonstrate the concepts and
|
|
||||||
* functions described in the guide.
|
|
||||||
*
|
|
||||||
* This software has been developed while working on the LART
|
|
||||||
* computing board (http://www.lartmaker.nl), which was sponsored
|
|
||||||
* by the Delt University of Technology projects Mobile Multi-media
|
|
||||||
* Communications and Ubiquitous Communications.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute
|
|
||||||
* it and/or modify it under the terms of the GNU General
|
|
||||||
* Public License as published by the Free Software
|
|
||||||
* Foundation; either version 2 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be
|
|
||||||
* useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
||||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE. See the GNU General Public License for more
|
|
||||||
* details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public
|
|
||||||
* License along with this program; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place,
|
|
||||||
* Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/proc_fs.h>
|
|
||||||
#include <linux/jiffies.h>
|
|
||||||
#include <asm/uaccess.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define MODULE_VERS "1.0"
|
|
||||||
#define MODULE_NAME "procfs_example"
|
|
||||||
|
|
||||||
#define FOOBAR_LEN 8
|
|
||||||
|
|
||||||
struct fb_data_t {
|
|
||||||
char name[FOOBAR_LEN + 1];
|
|
||||||
char value[FOOBAR_LEN + 1];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static struct proc_dir_entry *example_dir, *foo_file,
|
|
||||||
*bar_file, *jiffies_file, *symlink;
|
|
||||||
|
|
||||||
|
|
||||||
struct fb_data_t foo_data, bar_data;
|
|
||||||
|
|
||||||
|
|
||||||
static int proc_read_jiffies(char *page, char **start,
|
|
||||||
off_t off, int count,
|
|
||||||
int *eof, void *data)
|
|
||||||
{
|
|
||||||
int len;
|
|
||||||
|
|
||||||
len = sprintf(page, "jiffies = %ld\n",
|
|
||||||
jiffies);
|
|
||||||
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int proc_read_foobar(char *page, char **start,
|
|
||||||
off_t off, int count,
|
|
||||||
int *eof, void *data)
|
|
||||||
{
|
|
||||||
int len;
|
|
||||||
struct fb_data_t *fb_data = (struct fb_data_t *)data;
|
|
||||||
|
|
||||||
/* DON'T DO THAT - buffer overruns are bad */
|
|
||||||
len = sprintf(page, "%s = '%s'\n",
|
|
||||||
fb_data->name, fb_data->value);
|
|
||||||
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int proc_write_foobar(struct file *file,
|
|
||||||
const char *buffer,
|
|
||||||
unsigned long count,
|
|
||||||
void *data)
|
|
||||||
{
|
|
||||||
int len;
|
|
||||||
struct fb_data_t *fb_data = (struct fb_data_t *)data;
|
|
||||||
|
|
||||||
if(count > FOOBAR_LEN)
|
|
||||||
len = FOOBAR_LEN;
|
|
||||||
else
|
|
||||||
len = count;
|
|
||||||
|
|
||||||
if(copy_from_user(fb_data->value, buffer, len))
|
|
||||||
return -EFAULT;
|
|
||||||
|
|
||||||
fb_data->value[len] = '\0';
|
|
||||||
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int __init init_procfs_example(void)
|
|
||||||
{
|
|
||||||
int rv = 0;
|
|
||||||
|
|
||||||
/* create directory */
|
|
||||||
example_dir = proc_mkdir(MODULE_NAME, NULL);
|
|
||||||
if(example_dir == NULL) {
|
|
||||||
rv = -ENOMEM;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
/* create jiffies using convenience function */
|
|
||||||
jiffies_file = create_proc_read_entry("jiffies",
|
|
||||||
0444, example_dir,
|
|
||||||
proc_read_jiffies,
|
|
||||||
NULL);
|
|
||||||
if(jiffies_file == NULL) {
|
|
||||||
rv = -ENOMEM;
|
|
||||||
goto no_jiffies;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create foo and bar files using same callback
|
|
||||||
* functions
|
|
||||||
*/
|
|
||||||
foo_file = create_proc_entry("foo", 0644, example_dir);
|
|
||||||
if(foo_file == NULL) {
|
|
||||||
rv = -ENOMEM;
|
|
||||||
goto no_foo;
|
|
||||||
}
|
|
||||||
|
|
||||||
strcpy(foo_data.name, "foo");
|
|
||||||
strcpy(foo_data.value, "foo");
|
|
||||||
foo_file->data = &foo_data;
|
|
||||||
foo_file->read_proc = proc_read_foobar;
|
|
||||||
foo_file->write_proc = proc_write_foobar;
|
|
||||||
|
|
||||||
bar_file = create_proc_entry("bar", 0644, example_dir);
|
|
||||||
if(bar_file == NULL) {
|
|
||||||
rv = -ENOMEM;
|
|
||||||
goto no_bar;
|
|
||||||
}
|
|
||||||
|
|
||||||
strcpy(bar_data.name, "bar");
|
|
||||||
strcpy(bar_data.value, "bar");
|
|
||||||
bar_file->data = &bar_data;
|
|
||||||
bar_file->read_proc = proc_read_foobar;
|
|
||||||
bar_file->write_proc = proc_write_foobar;
|
|
||||||
|
|
||||||
/* create symlink */
|
|
||||||
symlink = proc_symlink("jiffies_too", example_dir,
|
|
||||||
"jiffies");
|
|
||||||
if(symlink == NULL) {
|
|
||||||
rv = -ENOMEM;
|
|
||||||
goto no_symlink;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* everything OK */
|
|
||||||
printk(KERN_INFO "%s %s initialised\n",
|
|
||||||
MODULE_NAME, MODULE_VERS);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
no_symlink:
|
|
||||||
remove_proc_entry("bar", example_dir);
|
|
||||||
no_bar:
|
|
||||||
remove_proc_entry("foo", example_dir);
|
|
||||||
no_foo:
|
|
||||||
remove_proc_entry("jiffies", example_dir);
|
|
||||||
no_jiffies:
|
|
||||||
remove_proc_entry(MODULE_NAME, NULL);
|
|
||||||
out:
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void __exit cleanup_procfs_example(void)
|
|
||||||
{
|
|
||||||
remove_proc_entry("jiffies_too", example_dir);
|
|
||||||
remove_proc_entry("bar", example_dir);
|
|
||||||
remove_proc_entry("foo", example_dir);
|
|
||||||
remove_proc_entry("jiffies", example_dir);
|
|
||||||
remove_proc_entry(MODULE_NAME, NULL);
|
|
||||||
|
|
||||||
printk(KERN_INFO "%s %s removed\n",
|
|
||||||
MODULE_NAME, MODULE_VERS);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
module_init(init_procfs_example);
|
|
||||||
module_exit(cleanup_procfs_example);
|
|
||||||
|
|
||||||
MODULE_AUTHOR("Erik Mouw");
|
|
||||||
MODULE_DESCRIPTION("procfs examples");
|
|
||||||
MODULE_LICENSE("GPL");
|
|
||||||
@@ -716,6 +716,41 @@ if (-1 == ioctl (fd, &VIDIOC-S-STD;, &std_id)) {
|
|||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
|
<section id="dv-timings">
|
||||||
|
<title>Digital Video (DV) Timings</title>
|
||||||
|
<para>
|
||||||
|
The video standards discussed so far has been dealing with Analog TV and the
|
||||||
|
corresponding video timings. Today there are many more different hardware interfaces
|
||||||
|
such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry
|
||||||
|
video signals and there is a need to extend the API to select the video timings
|
||||||
|
for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to
|
||||||
|
the limited bits available, a new set of IOCTLs is added to set/get video timings at
|
||||||
|
the input and output: </para><itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>DV Presets: Digital Video (DV) presets. These are IDs representing a
|
||||||
|
video timing at the input/output. Presets are pre-defined timings implemented
|
||||||
|
by the hardware according to video standards. A __u32 data type is used to represent
|
||||||
|
a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions
|
||||||
|
to support as many different presets as needed.</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>Custom DV Timings: This will allow applications to define more detailed
|
||||||
|
custom video timings for the interface. This includes parameters such as width, height,
|
||||||
|
polarities, frontporch, backporch etc.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
<para>To enumerate and query the attributes of DV presets supported by a device,
|
||||||
|
applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset,
|
||||||
|
applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the
|
||||||
|
&VIDIOC-S-DV-PRESET; ioctl.</para>
|
||||||
|
<para>To set custom DV timings for the device, applications use the
|
||||||
|
&VIDIOC-S-DV-TIMINGS; ioctl and to get current custom DV timings they use the
|
||||||
|
&VIDIOC-G-DV-TIMINGS; ioctl.</para>
|
||||||
|
<para>Applications can make use of the <xref linkend="input-capabilities" /> and
|
||||||
|
<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the
|
||||||
|
video timings for the device.</para>
|
||||||
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
&sub-controls;
|
&sub-controls;
|
||||||
|
|||||||
@@ -2291,8 +2291,8 @@ was renamed to <structname id="v4l2-chip-ident-old">v4l2_chip_ident_old</structn
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>New control <constant>V4L2_CID_COLORFX</constant> was added.</para>
|
<para>New control <constant>V4L2_CID_COLORFX</constant> was added.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</orderedlist>
|
</orderedlist>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>V4L2 in Linux 2.6.32</title>
|
<title>V4L2 in Linux 2.6.32</title>
|
||||||
<orderedlist>
|
<orderedlist>
|
||||||
@@ -2322,8 +2322,16 @@ more information.</para>
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>Added Remote Controller chapter, describing the default Remote Controller mapping for media devices.</para>
|
<para>Added Remote Controller chapter, describing the default Remote Controller mapping for media devices.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</orderedlist>
|
</orderedlist>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<title>V4L2 in Linux 2.6.33</title>
|
||||||
|
<orderedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Added support for Digital Video timings in order to support HDTV receivers and transmitters.</para>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="other">
|
<section id="other">
|
||||||
|
|||||||
@@ -74,6 +74,17 @@ Remote Controller chapter.</contrib>
|
|||||||
</address>
|
</address>
|
||||||
</affiliation>
|
</affiliation>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
|
<author>
|
||||||
|
<firstname>Muralidharan</firstname>
|
||||||
|
<surname>Karicheri</surname>
|
||||||
|
<contrib>Documented the Digital Video timings API.</contrib>
|
||||||
|
<affiliation>
|
||||||
|
<address>
|
||||||
|
<email>m-karicheri2@ti.com</email>
|
||||||
|
</address>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
</authorgroup>
|
</authorgroup>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
@@ -89,7 +100,7 @@ Remote Controller chapter.</contrib>
|
|||||||
<year>2008</year>
|
<year>2008</year>
|
||||||
<year>2009</year>
|
<year>2009</year>
|
||||||
<holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
|
<holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
|
||||||
Rubli, Andy Walls, Mauro Carvalho Chehab</holder>
|
Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<legalnotice>
|
<legalnotice>
|
||||||
<para>Except when explicitly stated as GPL, programming examples within
|
<para>Except when explicitly stated as GPL, programming examples within
|
||||||
@@ -102,6 +113,13 @@ structs, ioctls) must be noted in more detail in the history chapter
|
|||||||
(compat.sgml), along with the possible impact on existing drivers and
|
(compat.sgml), along with the possible impact on existing drivers and
|
||||||
applications. -->
|
applications. -->
|
||||||
|
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.33</revnumber>
|
||||||
|
<date>2009-12-03</date>
|
||||||
|
<authorinitials>mk</authorinitials>
|
||||||
|
<revremark>Added documentation for the Digital Video timings API.</revremark>
|
||||||
|
</revision>
|
||||||
|
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6.32</revnumber>
|
<revnumber>2.6.32</revnumber>
|
||||||
<date>2009-08-31</date>
|
<date>2009-08-31</date>
|
||||||
@@ -355,7 +373,7 @@ and discussions on the V4L mailing list.</revremark>
|
|||||||
</partinfo>
|
</partinfo>
|
||||||
|
|
||||||
<title>Video for Linux Two API Specification</title>
|
<title>Video for Linux Two API Specification</title>
|
||||||
<subtitle>Revision 2.6.32</subtitle>
|
<subtitle>Revision 2.6.33</subtitle>
|
||||||
|
|
||||||
<chapter id="common">
|
<chapter id="common">
|
||||||
&sub-common;
|
&sub-common;
|
||||||
@@ -411,6 +429,7 @@ and discussions on the V4L mailing list.</revremark>
|
|||||||
&sub-encoder-cmd;
|
&sub-encoder-cmd;
|
||||||
&sub-enumaudio;
|
&sub-enumaudio;
|
||||||
&sub-enumaudioout;
|
&sub-enumaudioout;
|
||||||
|
&sub-enum-dv-presets;
|
||||||
&sub-enum-fmt;
|
&sub-enum-fmt;
|
||||||
&sub-enum-framesizes;
|
&sub-enum-framesizes;
|
||||||
&sub-enum-frameintervals;
|
&sub-enum-frameintervals;
|
||||||
@@ -421,6 +440,8 @@ and discussions on the V4L mailing list.</revremark>
|
|||||||
&sub-g-audioout;
|
&sub-g-audioout;
|
||||||
&sub-g-crop;
|
&sub-g-crop;
|
||||||
&sub-g-ctrl;
|
&sub-g-ctrl;
|
||||||
|
&sub-g-dv-preset;
|
||||||
|
&sub-g-dv-timings;
|
||||||
&sub-g-enc-index;
|
&sub-g-enc-index;
|
||||||
&sub-g-ext-ctrls;
|
&sub-g-ext-ctrls;
|
||||||
&sub-g-fbuf;
|
&sub-g-fbuf;
|
||||||
@@ -441,6 +462,7 @@ and discussions on the V4L mailing list.</revremark>
|
|||||||
&sub-querybuf;
|
&sub-querybuf;
|
||||||
&sub-querycap;
|
&sub-querycap;
|
||||||
&sub-queryctrl;
|
&sub-queryctrl;
|
||||||
|
&sub-query-dv-preset;
|
||||||
&sub-querystd;
|
&sub-querystd;
|
||||||
&sub-reqbufs;
|
&sub-reqbufs;
|
||||||
&sub-s-hw-freq-seek;
|
&sub-s-hw-freq-seek;
|
||||||
|
|||||||
@@ -733,6 +733,99 @@ struct <link linkend="v4l2-standard">v4l2_standard</link> {
|
|||||||
__u32 reserved[4];
|
__u32 reserved[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* V I D E O T I M I N G S D V P R E S E T
|
||||||
|
*/
|
||||||
|
struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link> {
|
||||||
|
__u32 preset;
|
||||||
|
__u32 reserved[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* D V P R E S E T S E N U M E R A T I O N
|
||||||
|
*/
|
||||||
|
struct <link linkend="v4l2-dv-enum-preset">v4l2_dv_enum_preset</link> {
|
||||||
|
__u32 index;
|
||||||
|
__u32 preset;
|
||||||
|
__u8 name[32]; /* Name of the preset timing */
|
||||||
|
__u32 width;
|
||||||
|
__u32 height;
|
||||||
|
__u32 reserved[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* D V P R E S E T V A L U E S
|
||||||
|
*/
|
||||||
|
#define V4L2_DV_INVALID 0
|
||||||
|
#define V4L2_DV_480P59_94 1 /* BT.1362 */
|
||||||
|
#define V4L2_DV_576P50 2 /* BT.1362 */
|
||||||
|
#define V4L2_DV_720P24 3 /* SMPTE 296M */
|
||||||
|
#define V4L2_DV_720P25 4 /* SMPTE 296M */
|
||||||
|
#define V4L2_DV_720P30 5 /* SMPTE 296M */
|
||||||
|
#define V4L2_DV_720P50 6 /* SMPTE 296M */
|
||||||
|
#define V4L2_DV_720P59_94 7 /* SMPTE 274M */
|
||||||
|
#define V4L2_DV_720P60 8 /* SMPTE 274M/296M */
|
||||||
|
#define V4L2_DV_1080I29_97 9 /* BT.1120/ SMPTE 274M */
|
||||||
|
#define V4L2_DV_1080I30 10 /* BT.1120/ SMPTE 274M */
|
||||||
|
#define V4L2_DV_1080I25 11 /* BT.1120 */
|
||||||
|
#define V4L2_DV_1080I50 12 /* SMPTE 296M */
|
||||||
|
#define V4L2_DV_1080I60 13 /* SMPTE 296M */
|
||||||
|
#define V4L2_DV_1080P24 14 /* SMPTE 296M */
|
||||||
|
#define V4L2_DV_1080P25 15 /* SMPTE 296M */
|
||||||
|
#define V4L2_DV_1080P30 16 /* SMPTE 296M */
|
||||||
|
#define V4L2_DV_1080P50 17 /* BT.1120 */
|
||||||
|
#define V4L2_DV_1080P60 18 /* BT.1120 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* D V B T T I M I N G S
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* BT.656/BT.1120 timing data */
|
||||||
|
struct <link linkend="v4l2-bt-timings">v4l2_bt_timings</link> {
|
||||||
|
__u32 width; /* width in pixels */
|
||||||
|
__u32 height; /* height in lines */
|
||||||
|
__u32 interlaced; /* Interlaced or progressive */
|
||||||
|
__u32 polarities; /* Positive or negative polarity */
|
||||||
|
__u64 pixelclock; /* Pixel clock in HZ. Ex. 74.25MHz->74250000 */
|
||||||
|
__u32 hfrontporch; /* Horizpontal front porch in pixels */
|
||||||
|
__u32 hsync; /* Horizontal Sync length in pixels */
|
||||||
|
__u32 hbackporch; /* Horizontal back porch in pixels */
|
||||||
|
__u32 vfrontporch; /* Vertical front porch in pixels */
|
||||||
|
__u32 vsync; /* Vertical Sync length in lines */
|
||||||
|
__u32 vbackporch; /* Vertical back porch in lines */
|
||||||
|
__u32 il_vfrontporch; /* Vertical front porch for bottom field of
|
||||||
|
* interlaced field formats
|
||||||
|
*/
|
||||||
|
__u32 il_vsync; /* Vertical sync length for bottom field of
|
||||||
|
* interlaced field formats
|
||||||
|
*/
|
||||||
|
__u32 il_vbackporch; /* Vertical back porch for bottom field of
|
||||||
|
* interlaced field formats
|
||||||
|
*/
|
||||||
|
__u32 reserved[16];
|
||||||
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
|
/* Interlaced or progressive format */
|
||||||
|
#define V4L2_DV_PROGRESSIVE 0
|
||||||
|
#define V4L2_DV_INTERLACED 1
|
||||||
|
|
||||||
|
/* Polarities. If bit is not set, it is assumed to be negative polarity */
|
||||||
|
#define V4L2_DV_VSYNC_POS_POL 0x00000001
|
||||||
|
#define V4L2_DV_HSYNC_POS_POL 0x00000002
|
||||||
|
|
||||||
|
|
||||||
|
/* DV timings */
|
||||||
|
struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link> {
|
||||||
|
__u32 type;
|
||||||
|
union {
|
||||||
|
struct <link linkend="v4l2-bt-timings">v4l2_bt_timings</link> bt;
|
||||||
|
__u32 reserved[32];
|
||||||
|
};
|
||||||
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
|
/* Values for the type field */
|
||||||
|
#define V4L2_DV_BT_656_1120 0 /* BT.656/1120 timing type */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* V I D E O I N P U T S
|
* V I D E O I N P U T S
|
||||||
*/
|
*/
|
||||||
@@ -744,7 +837,8 @@ struct <link linkend="v4l2-input">v4l2_input</link> {
|
|||||||
__u32 tuner; /* Associated tuner */
|
__u32 tuner; /* Associated tuner */
|
||||||
v4l2_std_id std;
|
v4l2_std_id std;
|
||||||
__u32 status;
|
__u32 status;
|
||||||
__u32 reserved[4];
|
__u32 capabilities;
|
||||||
|
__u32 reserved[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Values for the 'type' field */
|
/* Values for the 'type' field */
|
||||||
@@ -775,6 +869,11 @@ struct <link linkend="v4l2-input">v4l2_input</link> {
|
|||||||
#define V4L2_IN_ST_NO_ACCESS 0x02000000 /* Conditional access denied */
|
#define V4L2_IN_ST_NO_ACCESS 0x02000000 /* Conditional access denied */
|
||||||
#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */
|
#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */
|
||||||
|
|
||||||
|
/* capabilities flags */
|
||||||
|
#define V4L2_IN_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
|
||||||
|
#define V4L2_IN_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
|
||||||
|
#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* V I D E O O U T P U T S
|
* V I D E O O U T P U T S
|
||||||
*/
|
*/
|
||||||
@@ -785,13 +884,19 @@ struct <link linkend="v4l2-output">v4l2_output</link> {
|
|||||||
__u32 audioset; /* Associated audios (bitfield) */
|
__u32 audioset; /* Associated audios (bitfield) */
|
||||||
__u32 modulator; /* Associated modulator */
|
__u32 modulator; /* Associated modulator */
|
||||||
v4l2_std_id std;
|
v4l2_std_id std;
|
||||||
__u32 reserved[4];
|
__u32 capabilities;
|
||||||
|
__u32 reserved[3];
|
||||||
};
|
};
|
||||||
/* Values for the 'type' field */
|
/* Values for the 'type' field */
|
||||||
#define V4L2_OUTPUT_TYPE_MODULATOR 1
|
#define V4L2_OUTPUT_TYPE_MODULATOR 1
|
||||||
#define V4L2_OUTPUT_TYPE_ANALOG 2
|
#define V4L2_OUTPUT_TYPE_ANALOG 2
|
||||||
#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
|
#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
|
||||||
|
|
||||||
|
/* capabilities flags */
|
||||||
|
#define V4L2_OUT_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
|
||||||
|
#define V4L2_OUT_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
|
||||||
|
#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* C O N T R O L S
|
* C O N T R O L S
|
||||||
*/
|
*/
|
||||||
@@ -1626,6 +1731,13 @@ struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link> {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct <link linkend="v4l2-hw-freq-seek">v4l2_hw_freq_seek</link>)
|
#define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct <link linkend="v4l2-hw-freq-seek">v4l2_hw_freq_seek</link>)
|
||||||
|
#define VIDIOC_ENUM_DV_PRESETS _IOWR('V', 83, struct <link linkend="v4l2-dv-enum-preset">v4l2_dv_enum_preset</link>)
|
||||||
|
#define VIDIOC_S_DV_PRESET _IOWR('V', 84, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>)
|
||||||
|
#define VIDIOC_G_DV_PRESET _IOWR('V', 85, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>)
|
||||||
|
#define VIDIOC_QUERY_DV_PRESET _IOR('V', 86, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>)
|
||||||
|
#define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>)
|
||||||
|
#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>)
|
||||||
|
|
||||||
/* Reminder: when adding new ioctls please add support for them to
|
/* Reminder: when adding new ioctls please add support for them to
|
||||||
drivers/media/video/v4l2-compat-ioctl32.c as well! */
|
drivers/media/video/v4l2-compat-ioctl32.c as well! */
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,238 @@
|
|||||||
|
<refentry id="vidioc-enum-dv-presets">
|
||||||
|
<refmeta>
|
||||||
|
<refentrytitle>ioctl VIDIOC_ENUM_DV_PRESETS</refentrytitle>
|
||||||
|
&manvol;
|
||||||
|
</refmeta>
|
||||||
|
|
||||||
|
<refnamediv>
|
||||||
|
<refname>VIDIOC_ENUM_DV_PRESETS</refname>
|
||||||
|
<refpurpose>Enumerate supported Digital Video presets</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 v4l2_dv_enum_preset *<parameter>argp</parameter></paramdef>
|
||||||
|
</funcprototype>
|
||||||
|
</funcsynopsis>
|
||||||
|
</refsynopsisdiv>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Arguments</title>
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><parameter>fd</parameter></term>
|
||||||
|
<listitem>
|
||||||
|
<para>&fd;</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><parameter>request</parameter></term>
|
||||||
|
<listitem>
|
||||||
|
<para>VIDIOC_ENUM_DV_PRESETS</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><parameter>argp</parameter></term>
|
||||||
|
<listitem>
|
||||||
|
<para></para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Description</title>
|
||||||
|
|
||||||
|
<para>To query the attributes of a DV preset, applications initialize the
|
||||||
|
<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset;
|
||||||
|
and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this
|
||||||
|
structure. Drivers fill the rest of the structure or return an
|
||||||
|
&EINVAL; when the index is out of bounds. To enumerate all DV Presets supported,
|
||||||
|
applications shall begin at index zero, incrementing by one until the
|
||||||
|
driver returns <errorcode>EINVAL</errorcode>. Drivers may enumerate a
|
||||||
|
different set of DV presets after switching the video input or
|
||||||
|
output.</para>
|
||||||
|
|
||||||
|
<table pgwide="1" frame="none" id="v4l2-dv-enum-preset">
|
||||||
|
<title>struct <structname>v4l2_dv_enum_presets</structname></title>
|
||||||
|
<tgroup cols="3">
|
||||||
|
&cs-str;
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>index</structfield></entry>
|
||||||
|
<entry>Number of the DV preset, set by the
|
||||||
|
application.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>preset</structfield></entry>
|
||||||
|
<entry>This field identifies one of the DV preset values listed in <xref linkend="v4l2-dv-presets-vals"/>.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u8</entry>
|
||||||
|
<entry><structfield>name</structfield>[24]</entry>
|
||||||
|
<entry>Name of the preset, a NUL-terminated ASCII string, for example: "720P-60", "1080I-60". This information is
|
||||||
|
intended for the user.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>width</structfield></entry>
|
||||||
|
<entry>Width of the active video in pixels for the DV preset.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>height</structfield></entry>
|
||||||
|
<entry>Height of the active video in lines for the DV preset.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>reserved</structfield>[4]</entry>
|
||||||
|
<entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table pgwide="1" frame="none" id="v4l2-dv-presets-vals">
|
||||||
|
<title>struct <structname>DV Presets</structname></title>
|
||||||
|
<tgroup cols="3">
|
||||||
|
&cs-str;
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry>Preset</entry>
|
||||||
|
<entry>Preset value</entry>
|
||||||
|
<entry>Description</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry></entry>
|
||||||
|
<entry></entry>
|
||||||
|
<entry></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_INVALID</entry>
|
||||||
|
<entry>0</entry>
|
||||||
|
<entry>Invalid preset value.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_480P59_94</entry>
|
||||||
|
<entry>1</entry>
|
||||||
|
<entry>720x480 progressive video at 59.94 fps as per BT.1362.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_576P50</entry>
|
||||||
|
<entry>2</entry>
|
||||||
|
<entry>720x576 progressive video at 50 fps as per BT.1362.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_720P24</entry>
|
||||||
|
<entry>3</entry>
|
||||||
|
<entry>1280x720 progressive video at 24 fps as per SMPTE 296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_720P25</entry>
|
||||||
|
<entry>4</entry>
|
||||||
|
<entry>1280x720 progressive video at 25 fps as per SMPTE 296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_720P30</entry>
|
||||||
|
<entry>5</entry>
|
||||||
|
<entry>1280x720 progressive video at 30 fps as per SMPTE 296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_720P50</entry>
|
||||||
|
<entry>6</entry>
|
||||||
|
<entry>1280x720 progressive video at 50 fps as per SMPTE 296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_720P59_94</entry>
|
||||||
|
<entry>7</entry>
|
||||||
|
<entry>1280x720 progressive video at 59.94 fps as per SMPTE 274M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_720P60</entry>
|
||||||
|
<entry>8</entry>
|
||||||
|
<entry>1280x720 progressive video at 60 fps as per SMPTE 274M/296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080I29_97</entry>
|
||||||
|
<entry>9</entry>
|
||||||
|
<entry>1920x1080 interlaced video at 29.97 fps as per BT.1120/SMPTE 274M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080I30</entry>
|
||||||
|
<entry>10</entry>
|
||||||
|
<entry>1920x1080 interlaced video at 30 fps as per BT.1120/SMPTE 274M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080I25</entry>
|
||||||
|
<entry>11</entry>
|
||||||
|
<entry>1920x1080 interlaced video at 25 fps as per BT.1120.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080I50</entry>
|
||||||
|
<entry>12</entry>
|
||||||
|
<entry>1920x1080 interlaced video at 50 fps as per SMPTE 296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080I60</entry>
|
||||||
|
<entry>13</entry>
|
||||||
|
<entry>1920x1080 interlaced video at 60 fps as per SMPTE 296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080P24</entry>
|
||||||
|
<entry>14</entry>
|
||||||
|
<entry>1920x1080 progressive video at 24 fps as per SMPTE 296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080P25</entry>
|
||||||
|
<entry>15</entry>
|
||||||
|
<entry>1920x1080 progressive video at 25 fps as per SMPTE 296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080P30</entry>
|
||||||
|
<entry>16</entry>
|
||||||
|
<entry>1920x1080 progressive video at 30 fps as per SMPTE 296M.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080P50</entry>
|
||||||
|
<entry>17</entry>
|
||||||
|
<entry>1920x1080 progressive video at 50 fps as per BT.1120.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>V4L2_DV_1080P60</entry>
|
||||||
|
<entry>18</entry>
|
||||||
|
<entry>1920x1080 progressive video at 60 fps as per BT.1120.</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
&return-value;
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><errorcode>EINVAL</errorcode></term>
|
||||||
|
<listitem>
|
||||||
|
<para>The &v4l2-dv-enum-preset; <structfield>index</structfield>
|
||||||
|
is out of bounds.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
</refentry>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Local Variables:
|
||||||
|
mode: sgml
|
||||||
|
sgml-parent-document: "v4l2.sgml"
|
||||||
|
indent-tabs-mode: nil
|
||||||
|
End:
|
||||||
|
-->
|
||||||
@@ -124,7 +124,13 @@ current input.</entry>
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>reserved</structfield>[4]</entry>
|
<entry><structfield>capabilities</structfield></entry>
|
||||||
|
<entry>This field provides capabilities for the
|
||||||
|
input. See <xref linkend="input-capabilities" /> for flags.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>reserved</structfield>[3]</entry>
|
||||||
<entry>Reserved for future extensions. Drivers must set
|
<entry>Reserved for future extensions. Drivers must set
|
||||||
the array to zero.</entry>
|
the array to zero.</entry>
|
||||||
</row>
|
</row>
|
||||||
@@ -261,6 +267,34 @@ flag is set Macrovision has been detected.</entry>
|
|||||||
</tbody>
|
</tbody>
|
||||||
</tgroup>
|
</tgroup>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- Capability flags based on video timings RFC by Muralidharan
|
||||||
|
Karicheri, titled RFC (v1.2): V4L - Support for video timings at the
|
||||||
|
input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
|
||||||
|
-->
|
||||||
|
<table frame="none" pgwide="1" id="input-capabilities">
|
||||||
|
<title>Input capabilities</title>
|
||||||
|
<tgroup cols="3">
|
||||||
|
&cs-def;
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_IN_CAP_PRESETS</constant></entry>
|
||||||
|
<entry>0x00000001</entry>
|
||||||
|
<entry>This input supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry>
|
||||||
|
<entry>0x00000002</entry>
|
||||||
|
<entry>This input supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_IN_CAP_STD</constant></entry>
|
||||||
|
<entry>0x00000004</entry>
|
||||||
|
<entry>This input supports setting the TV standard by using VIDIOC_S_STD.</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
|
|||||||
@@ -114,7 +114,13 @@ details on video standards and how to switch see <xref
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>reserved</structfield>[4]</entry>
|
<entry><structfield>capabilities</structfield></entry>
|
||||||
|
<entry>This field provides capabilities for the
|
||||||
|
output. See <xref linkend="output-capabilities" /> for flags.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>reserved</structfield>[3]</entry>
|
||||||
<entry>Reserved for future extensions. Drivers must set
|
<entry>Reserved for future extensions. Drivers must set
|
||||||
the array to zero.</entry>
|
the array to zero.</entry>
|
||||||
</row>
|
</row>
|
||||||
@@ -147,6 +153,34 @@ CVBS, S-Video, RGB.</entry>
|
|||||||
</tgroup>
|
</tgroup>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- Capabilities flags based on video timings RFC by Muralidharan
|
||||||
|
Karicheri, titled RFC (v1.2): V4L - Support for video timings at the
|
||||||
|
input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
|
||||||
|
-->
|
||||||
|
<table frame="none" pgwide="1" id="output-capabilities">
|
||||||
|
<title>Output capabilities</title>
|
||||||
|
<tgroup cols="3">
|
||||||
|
&cs-def;
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_OUT_CAP_PRESETS</constant></entry>
|
||||||
|
<entry>0x00000001</entry>
|
||||||
|
<entry>This output supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry>
|
||||||
|
<entry>0x00000002</entry>
|
||||||
|
<entry>This output supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_OUT_CAP_STD</constant></entry>
|
||||||
|
<entry>0x00000004</entry>
|
||||||
|
<entry>This output supports setting the TV standard by using VIDIOC_S_STD.</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
|
||||||
</refsect1>
|
</refsect1>
|
||||||
<refsect1>
|
<refsect1>
|
||||||
&return-value;
|
&return-value;
|
||||||
|
|||||||
@@ -0,0 +1,111 @@
|
|||||||
|
<refentry id="vidioc-g-dv-preset">
|
||||||
|
<refmeta>
|
||||||
|
<refentrytitle>ioctl VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET</refentrytitle>
|
||||||
|
&manvol;
|
||||||
|
</refmeta>
|
||||||
|
|
||||||
|
<refnamediv>
|
||||||
|
<refname>VIDIOC_G_DV_PRESET</refname>
|
||||||
|
<refname>VIDIOC_S_DV_PRESET</refname>
|
||||||
|
<refpurpose>Query or select the DV preset of the current input or output</refpurpose>
|
||||||
|
</refnamediv>
|
||||||
|
|
||||||
|
<refsynopsisdiv>
|
||||||
|
<funcsynopsis>
|
||||||
|
<funcprototype>
|
||||||
|
<funcdef>int <function>ioctl</function></funcdef>
|
||||||
|
<paramdef>int <parameter>fd</parameter></paramdef>
|
||||||
|
<paramdef>int <parameter>request</parameter></paramdef>
|
||||||
|
<paramdef>&v4l2-dv-preset;
|
||||||
|
*<parameter>argp</parameter></paramdef>
|
||||||
|
</funcprototype>
|
||||||
|
</funcsynopsis>
|
||||||
|
</refsynopsisdiv>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Arguments</title>
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><parameter>fd</parameter></term>
|
||||||
|
<listitem>
|
||||||
|
<para>&fd;</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><parameter>request</parameter></term>
|
||||||
|
<listitem>
|
||||||
|
<para>VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><parameter>argp</parameter></term>
|
||||||
|
<listitem>
|
||||||
|
<para></para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Description</title>
|
||||||
|
<para>To query and select the current DV preset, applications
|
||||||
|
use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant>
|
||||||
|
ioctls which take a pointer to a &v4l2-dv-preset; type as argument.
|
||||||
|
Applications must zero the reserved array in &v4l2-dv-preset;.
|
||||||
|
<constant>VIDIOC_G_DV_PRESET</constant> returns a dv preset in the field
|
||||||
|
<structfield>preset</structfield> of &v4l2-dv-preset;.</para>
|
||||||
|
|
||||||
|
<para><constant>VIDIOC_S_DV_PRESET</constant> accepts a pointer to a &v4l2-dv-preset;
|
||||||
|
that has the preset value to be set. Applications must zero the reserved array in &v4l2-dv-preset;.
|
||||||
|
If the preset is not supported, it returns an &EINVAL; </para>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
&return-value;
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><errorcode>EINVAL</errorcode></term>
|
||||||
|
<listitem>
|
||||||
|
<para>This ioctl is not supported, or the
|
||||||
|
<constant>VIDIOC_S_DV_PRESET</constant>,<constant>VIDIOC_S_DV_PRESET</constant> parameter was unsuitable.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><errorcode>EBUSY</errorcode></term>
|
||||||
|
<listitem>
|
||||||
|
<para>The device is busy and therefore can not change the preset.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
|
||||||
|
<table pgwide="1" frame="none" id="v4l2-dv-preset">
|
||||||
|
<title>struct <structname>v4l2_dv_preset</structname></title>
|
||||||
|
<tgroup cols="3">
|
||||||
|
&cs-str;
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>preset</structfield></entry>
|
||||||
|
<entry>Preset value to represent the digital video timings</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>reserved[4]</structfield></entry>
|
||||||
|
<entry>Reserved fields for future use</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
</refentry>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Local Variables:
|
||||||
|
mode: sgml
|
||||||
|
sgml-parent-document: "v4l2.sgml"
|
||||||
|
indent-tabs-mode: nil
|
||||||
|
End:
|
||||||
|
-->
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user