The Linux Kernel
  • Linux Kernel Documentation
    • Introduction
    • Sphinx Build
    • Writing Documentation
      • Specific guidelines for the kernel documentation
      • list tables
    • Including kernel-doc comments
    • Writing kernel-doc comments
      • How to format kernel-doc comments
      • Highlights and cross-references
        • Cross-referencing from reStructuredText
      • Function documentation
      • Structure, union, and enumeration documentation
        • In-line member documentation comments
        • Private members
      • Typedef documentation
      • Overview documentation comments
      • Recommendations
    • DocBook XML [DEPRECATED]
      • Converting DocBook to Sphinx
      • Components of the kernel-doc system
      • How to use kernel-doc comments in DocBook XML template files
  • Linux Media Infrastructure userspace API
    • Introduction
    • Part I - Video for Linux API
      • 1. Common API Elements
        • 1.1. Opening and Closing Devices
        • 1.2. Querying Capabilities
        • 1.3. Application Priority
        • 1.4. Video Inputs and Outputs
        • 1.5. Audio Inputs and Outputs
        • 1.6. Tuners and Modulators
        • 1.7. Video Standards
        • 1.8. Digital Video (DV) Timings
        • 1.9. User Controls
        • 1.10. Extended Controls
        • 1.11. Data Formats
        • 1.12. Single- and multi-planar APIs
        • 1.13. Image Cropping, Insertion and Scaling
        • 1.14. API for cropping, composing and scaling
        • 1.15. Streaming Parameters
      • 2. Image Formats
        • 2.1. Single-planar format structure
        • 2.2. Multi-planar format structures
        • 2.3. Standard Image Formats
        • 2.4. Colorspaces
        • 2.5. Defining Colorspaces in V4L2
        • 2.6. Detailed Colorspace Descriptions
        • 2.7. Detailed Transfer Function Descriptions
        • 2.8. Indexed Format
        • 2.9. RGB Formats
        • 2.10. YUV Formats
        • 2.11. Depth Formats
        • 2.12. Compressed Formats
        • 2.13. SDR Formats
        • 2.14. Reserved Format Identifiers
      • 3. Input/Output
        • 3.1. Read/Write
        • 3.2. Streaming I/O (Memory Mapping)
        • 3.3. Streaming I/O (User Pointers)
        • 3.4. Streaming I/O (DMA buffer importing)
        • 3.5. Asynchronous I/O
        • 3.6. Buffers
        • 3.7. Field Order
      • 4. Interfaces
        • 4.1. Video Capture Interface
        • 4.2. Video Overlay Interface
        • 4.3. Video Output Interface
        • 4.4. Video Output Overlay Interface
        • 4.5. Codec Interface
        • 4.6. Effect Devices Interface
        • 4.7. Raw VBI Data Interface
        • 4.8. Sliced VBI Data Interface
        • 4.9. Teletext Interface
        • 4.10. Radio Interface
        • 4.11. RDS Interface
        • 4.12. Software Defined Radio Interface (SDR)
        • 4.13. Event Interface
        • 4.14. Sub-device Interface
      • 5. V4L2 Driver Programming
      • 6. Libv4l Userspace Library
        • 6.1. Introduction
      • 7. Changes
        • 7.1. Differences between V4L and V4L2
        • 7.2. Changes of the V4L2 API
      • 8. Function Reference
        • 8.1. V4L2 close()
        • 8.2. V4L2 ioctl()
        • 8.3. ioctl VIDIOC_CREATE_BUFS
        • 8.4. ioctl VIDIOC_CROPCAP
        • 8.5. ioctl VIDIOC_DBG_G_CHIP_INFO
        • 8.6. ioctl VIDIOC_DBG_G_REGISTER, VIDIOC_DBG_S_REGISTER
        • 8.7. ioctl VIDIOC_DECODER_CMD, VIDIOC_TRY_DECODER_CMD
        • 8.8. ioctl VIDIOC_DQEVENT
        • 8.9. ioctl VIDIOC_DV_TIMINGS_CAP, VIDIOC_SUBDEV_DV_TIMINGS_CAP
        • 8.10. ioctl VIDIOC_ENCODER_CMD, VIDIOC_TRY_ENCODER_CMD
        • 8.11. ioctl VIDIOC_ENUMAUDIO
        • 8.12. ioctl VIDIOC_ENUMAUDOUT
        • 8.13. ioctl VIDIOC_ENUM_DV_TIMINGS, VIDIOC_SUBDEV_ENUM_DV_TIMINGS
        • 8.14. ioctl VIDIOC_ENUM_FMT
        • 8.15. ioctl VIDIOC_ENUM_FRAMESIZES
        • 8.16. ioctl VIDIOC_ENUM_FRAMEINTERVALS
        • 8.17. ioctl VIDIOC_ENUM_FREQ_BANDS
        • 8.18. ioctl VIDIOC_ENUMINPUT
        • 8.19. ioctl VIDIOC_ENUMOUTPUT
        • 8.20. ioctl VIDIOC_ENUMSTD
        • 8.21. ioctl VIDIOC_EXPBUF
        • 8.22. ioctl VIDIOC_G_AUDIO, VIDIOC_S_AUDIO
        • 8.23. ioctl VIDIOC_G_AUDOUT, VIDIOC_S_AUDOUT
        • 8.24. ioctl VIDIOC_G_CROP, VIDIOC_S_CROP
        • 8.25. ioctl VIDIOC_G_CTRL, VIDIOC_S_CTRL
        • 8.26. ioctl VIDIOC_G_DV_TIMINGS, VIDIOC_S_DV_TIMINGS
        • 8.27. ioctl VIDIOC_G_EDID, VIDIOC_S_EDID, VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_S_EDID
        • 8.28. ioctl VIDIOC_G_ENC_INDEX
        • 8.29. ioctl VIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS, VIDIOC_TRY_EXT_CTRLS
        • 8.30. ioctl VIDIOC_G_FBUF, VIDIOC_S_FBUF
        • 8.31. ioctl VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT
        • 8.32. ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY
        • 8.33. ioctl VIDIOC_G_INPUT, VIDIOC_S_INPUT
        • 8.34. ioctl VIDIOC_G_JPEGCOMP, VIDIOC_S_JPEGCOMP
        • 8.35. ioctl VIDIOC_G_MODULATOR, VIDIOC_S_MODULATOR
        • 8.36. ioctl VIDIOC_G_OUTPUT, VIDIOC_S_OUTPUT
        • 8.37. ioctl VIDIOC_G_PARM, VIDIOC_S_PARM
        • 8.38. ioctl VIDIOC_G_PRIORITY, VIDIOC_S_PRIORITY
        • 8.39. ioctl VIDIOC_G_SELECTION, VIDIOC_S_SELECTION
        • 8.40. ioctl VIDIOC_G_SLICED_VBI_CAP
        • 8.41. ioctl VIDIOC_G_STD, VIDIOC_S_STD
        • 8.42. ioctl VIDIOC_G_TUNER, VIDIOC_S_TUNER
        • 8.43. ioctl VIDIOC_LOG_STATUS
        • 8.44. ioctl VIDIOC_OVERLAY
        • 8.45. ioctl VIDIOC_PREPARE_BUF
        • 8.46. ioctl VIDIOC_QBUF, VIDIOC_DQBUF
        • 8.47. ioctl VIDIOC_QUERYBUF
        • 8.48. ioctl VIDIOC_QUERYCAP
        • 8.49. ioctls VIDIOC_QUERYCTRL, VIDIOC_QUERY_EXT_CTRL and VIDIOC_QUERYMENU
        • 8.50. ioctl VIDIOC_QUERY_DV_TIMINGS
        • 8.51. ioctl VIDIOC_QUERYSTD
        • 8.52. ioctl VIDIOC_REQBUFS
        • 8.53. ioctl VIDIOC_S_HW_FREQ_SEEK
        • 8.54. ioctl VIDIOC_STREAMON, VIDIOC_STREAMOFF
        • 8.55. ioctl VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL
        • 8.56. ioctl VIDIOC_SUBDEV_ENUM_FRAME_SIZE
        • 8.57. ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE
        • 8.58. ioctl VIDIOC_SUBDEV_G_CROP, VIDIOC_SUBDEV_S_CROP
        • 8.59. ioctl VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT
        • 8.60. ioctl VIDIOC_SUBDEV_G_FRAME_INTERVAL, VIDIOC_SUBDEV_S_FRAME_INTERVAL
        • 8.61. ioctl VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION
        • 8.62. ioctl VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT
        • 8.63. V4L2 mmap()
        • 8.64. V4L2 munmap()
        • 8.65. V4L2 open()
        • 8.66. V4L2 poll()
        • 8.67. V4L2 read()
        • 8.68. V4L2 select()
        • 8.69. V4L2 write()
      • 9. Common definitions for V4L2 and V4L2 subdev interfaces
        • 9.1. Common selection definitions
      • 10. Video For Linux Two Header File
        • 10.1. videodev2.h
      • 11. Video Capture Example
        • 11.1. file: media/v4l/capture.c
      • 12. Video Grabber example using libv4l
        • 12.1. file: media/v4l/v4l2grab.c
      • 13. References
        • 13.1. CEA 608-E
        • 13.2. EN 300 294
        • 13.3. ETS 300 231
        • 13.4. ETS 300 706
        • 13.5. ISO 13818-1
        • 13.6. ISO 13818-2
        • 13.7. ITU BT.470
        • 13.8. ITU BT.601
        • 13.9. ITU BT.653
        • 13.10. ITU BT.709
        • 13.11. ITU BT.1119
        • 13.12. JFIF
        • 13.13. ITU-T.81
        • 13.14. W3C JPEG JFIF
        • 13.15. SMPTE 12M
        • 13.16. SMPTE 170M
        • 13.17. SMPTE 240M
        • 13.18. SMPTE RP 431-2
        • 13.19. SMPTE ST 2084
        • 13.20. sRGB
        • 13.21. sYCC
        • 13.22. xvYCC
        • 13.23. AdobeRGB
        • 13.24. opRGB
        • 13.25. ITU BT.2020
        • 13.26. EBU Tech 3213
        • 13.27. IEC 62106
        • 13.28. NRSC-4-B
        • 13.29. ISO 12232:2006
        • 13.30. CEA-861-E
        • 13.31. VESA DMT
        • 13.32. EDID
        • 13.33. HDCP
        • 13.34. HDMI
        • 13.35. HDMI2
        • 13.36. DP
        • 13.37. poynton
        • 13.38. colimg
      • Revision and Copyright
      • Revision History
    • Part II - Digital TV API
      • 1. Introduction
        • 1.1. What you need to know
        • 1.2. History
        • 1.3. Overview
        • 1.4. Linux DVB Devices
        • 1.5. API include files
      • 2. DVB Frontend API
        • 2.1. Querying frontend information
        • 2.2. Querying frontend status and statistics
        • 2.3. DVB Frontend properties
        • 2.4. Example: Setting digital TV frontend properties
        • 2.5. Frontend Function Calls
        • 2.6. DVB Frontend legacy API (a. k. a. DVBv3)
      • 3. DVB Demux Device
        • 3.1. Demux Data Types
        • 3.2. Demux Function Calls
      • 4. DVB CA Device
        • 4.1. CA Data Types
        • 4.2. CA Function Calls
      • 5. DVB Network API
      • 6. DVB net Function Calls
        • 6.1. ioctl NET_ADD_IF
        • 6.2. ioctl NET_REMOVE_IF
        • 6.3. ioctl NET_GET_IF
      • 7. DVB Deprecated APIs
        • 7.1. DVB Video Device
        • 7.2. DVB Audio Device
      • 8. Examples
        • 8.1. Example: Tuning
        • 8.2. Example: The DVR device
      • 9. DVB Audio Header File
        • 9.1. audio.h
      • 10. DVB Conditional Access Header File
        • 10.1. ca.h
      • 11. DVB Demux Header File
        • 11.1. dmx.h
      • 12. DVB Frontend Header File
        • 12.1. frontend.h
      • 13. DVB Network Header File
        • 13.1. net.h
      • 14. DVB Video Header File
        • 14.1. video.h
      • Revision and Copyright
      • Revision History
    • Part III - Remote Controller API
      • 1. Introduction
      • 2. Remote Controller’s sysfs nodes
        • 2.1. /sys/class/rc/
        • 2.2. /sys/class/rc/rcN/
        • 2.3. /sys/class/rc/rcN/protocols
        • 2.4. /sys/class/rc/rcN/filter
        • 2.5. /sys/class/rc/rcN/filter_mask
        • 2.6. /sys/class/rc/rcN/wakeup_protocols
        • 2.7. /sys/class/rc/rcN/wakeup_filter
        • 2.8. /sys/class/rc/rcN/wakeup_filter_mask
      • 3. Remote controller tables
      • 4. Changing default Remote Controller mappings
        • 4.1. file: uapi/v4l/keytable.c
      • 5. LIRC Device Interface
        • 5.1. Introduction
        • 5.2. LIRC modes
        • 5.3. LIRC Function Reference
        • 5.4. LIRC Header File
      • Revision and Copyright
      • Revision History
    • Part IV - Media Controller API
      • 1. Introduction
      • 2. Media device model
      • 3. Types and flags used to represent the media graph elements
      • 4. Function Reference
        • 4.1. media open()
        • 4.2. media close()
        • 4.3. media ioctl()
        • 4.4. ioctl MEDIA_IOC_DEVICE_INFO
        • 4.5. ioctl MEDIA_IOC_G_TOPOLOGY
        • 4.6. ioctl MEDIA_IOC_ENUM_ENTITIES
        • 4.7. ioctl MEDIA_IOC_ENUM_LINKS
        • 4.8. ioctl MEDIA_IOC_SETUP_LINK
      • 5. Media Controller Header File
        • 5.1. media.h
      • Revision and Copyright
      • Revision History
    • Part V - Consumer Electronics Control API
      • 1. Introduction
      • 2. Function Reference
        • 2.1. cec open()
        • 2.2. cec close()
        • 2.3. cec ioctl()
        • 2.4. cec poll()
        • 2.5. ioctl CEC_ADAP_G_CAPS
        • 2.6. ioctls CEC_ADAP_G_LOG_ADDRS and CEC_ADAP_S_LOG_ADDRS
        • 2.7. ioctls CEC_ADAP_G_PHYS_ADDR and CEC_ADAP_S_PHYS_ADDR
        • 2.8. ioctl CEC_DQEVENT
        • 2.9. ioctls CEC_G_MODE and CEC_S_MODE
        • 2.10. ioctls CEC_RECEIVE and CEC_TRANSMIT
      • 3. CEC Header File
        • 3.1. cec.h
      • Revision and Copyright
      • Revision History
    • Generic Error Codes
    • GNU Free Documentation License
      • 0. PREAMBLE
      • 1. APPLICABILITY AND DEFINITIONS
      • 2. VERBATIM COPYING
      • 3. COPYING IN QUANTITY
      • 4. MODIFICATIONS
      • 5. COMBINING DOCUMENTS
      • 6. COLLECTIONS OF DOCUMENTS
      • 7. AGGREGATION WITH INDEPENDENT WORKS
      • 8. TRANSLATION
      • 9. TERMINATION
      • 10. FUTURE REVISIONS OF THIS LICENSE
      • Addendum
  • Media subsystem kernel internal API
    • 1. Video2Linux devices
      • 1.1. Introduction
      • 1.2. Structure of a V4L driver
      • 1.3. Structure of the V4L2 framework
      • 1.4. Video device’ s internal representation
        • 1.4.1. ioctls and locking
        • 1.4.2. Video device registration
        • 1.4.3. video device debugging
        • 1.4.4. Video device cleanup
        • 1.4.5. helper functions
        • 1.4.6. video_device functions and data structures
      • 1.5. V4L2 device instance
        • 1.5.1. v4l2_device functions and data structures
      • 1.6. V4L2 File handlers
        • 1.6.1. V4L2 fh functions and data structures
      • 1.7. V4L2 sub-devices
      • 1.8. V4L2 sub-device userspace API
      • 1.9. I2C sub-device drivers
      • 1.10. V4L2 sub-device functions and data structures
      • 1.11. V4L2 events
        • 1.11.1. Event subscription
        • 1.11.2. Unsubscribing an event
        • 1.11.3. Check if there’s a pending event
        • 1.11.4. How events work
      • 1.12. V4L2 Controls
        • 1.12.1. Introduction
        • 1.12.2. Objects in the framework
        • 1.12.3. Basic usage for V4L2 and sub-device drivers
        • 1.12.4. Inheriting Controls
        • 1.12.5. Accessing Control Values
        • 1.12.6. Menu Controls
        • 1.12.7. Custom Controls
        • 1.12.8. Active and Grabbed Controls
        • 1.12.9. Control Clusters
        • 1.12.10. Handling autogain/gain-type Controls with Auto Clusters
        • 1.12.11. VIDIOC_LOG_STATUS Support
        • 1.12.12. Different Handlers for Different Video Nodes
        • 1.12.13. Finding Controls
        • 1.12.14. Inheriting Controls
        • 1.12.15. V4L2_CTRL_TYPE_CTRL_CLASS Controls
        • 1.12.16. Adding Notify Callbacks
        • 1.12.17. v4l2_ctrl functions and data structures
      • 1.13. Videobuf Framework
        • 1.13.1. Introduction
        • 1.13.2. Buffer types
        • 1.13.3. Data structures, callbacks, and initialization
        • 1.13.4. File operations
        • 1.13.5. ioctl() operations
        • 1.13.6. Buffer allocation
        • 1.13.7. Filling the buffers
      • 1.14. V4L2 videobuf2 functions and data structures
      • 1.15. V4L2 clocks
      • 1.16. V4L2 DV Timings functions
      • 1.17. V4L2 flash functions and data structures
      • 1.18. V4L2 Media Controller functions and data structures
      • 1.19. V4L2 Media Bus functions and data structures
      • 1.20. V4L2 Memory to Memory functions and data structures
      • 1.21. V4L2 Open Firmware kAPI
      • 1.22. V4L2 rect helper functions
      • 1.23. Tuner functions and data structures
      • 1.24. V4L2 common functions and data structures
      • 1.25. Hauppauge TV EEPROM functions and data structures
    • 2. Digital TV (DVB) devices
    • 3. Digital TV Common functions
    • 4. Digital TV Frontend kABI
      • 4.1. Digital TV Frontend
    • 5. Digital TV Demux kABI
      • 5.1. Digital TV Demux
    • 6. Demux Callback API
      • 6.1. Demux Callback
    • 7. Digital TV Conditional Access kABI
    • 8. Remote Controller devices
      • 8.1. Remote Controller core
      • 8.2. LIRC
    • 9. Media Controller devices
      • 9.1. Media Controller
        • 9.1.1. Abstract media device model
        • 9.1.2. Media device
        • 9.1.3. Entities
        • 9.1.4. Interfaces
        • 9.1.5. Pads
        • 9.1.6. Links
        • 9.1.7. Graph traversal
        • 9.1.8. Use count and power handling
        • 9.1.9. Links setup
        • 9.1.10. Pipelines and media streams
        • 9.1.11. Link validation
  • Linux Digital TV driver-specific documentation
    • 1. Introdution
    • 2. HOWTO: Get An Avermedia DVB-T working under Linux
      • 2.1. Assumptions and Introduction
      • 2.2. The Avermedia DVB-T
      • 2.3. Getting the card going
      • 2.4. Receiving DVB-T in Australia
      • 2.5. Known Limitations
      • 2.6. Further Update
    • 3. How to get the bt8xx cards working
      • 3.1. General information
      • 3.2. Loading Modules
        • 3.2.1. Running TwinHan and Clones
        • 3.2.2. Running multiple cards
        • 3.2.3. Probing the cards with broken PCI subsystem ID
    • 4. Hardware supported by the linuxtv.org DVB drivers
    • 5. Digital TV Conditional Access Interface (CI API)
      • 5.1. ca_zap
      • 5.2. Cards that fall in this category
      • 5.3. CI modules that are supported
      • 5.4. The High level CI API
        • 5.4.1. For the programmer
      • 5.5. Why the need for another CI interface?
    • 6. Idea behind the dvb-usb-framework
      • 6.1. Supported devices
      • 6.2. How to use?
        • 6.2.1. Firmware
        • 6.2.2. Compiling
        • 6.2.3. Loading the drivers
      • 6.3. Known problems and bugs
        • 6.3.1. Adding support for devices
        • 6.3.2. USB1.1 Bandwidth limitation
        • 6.3.3. Comments
      • 6.4. 3. Acknowledgements
    • 7. FAQ
    • 8. Firmware files for lmedm04 cards
      • 8.1. For DM04+/QQBOX LME2510C (Sharp 7395 Tuner)
      • 8.2. For DM04 LME2510 (LG Tuner)
      • 8.3. For DM04 LME2510C (LG Tuner)
      • 8.4. For LME2510
      • 8.5. For LME2510C
    • 9. Opera firmware
    • 10. How to set up the Technisat/B2C2 Flexcop devices
      • 10.1. Find out what device you have
      • 10.2. Kernel compilation:
    • 11. TechnoTrend/Hauppauge DEC USB Driver
      • 11.1. Driver Status
      • 11.2. Getting the Firmware
      • 11.3. Hotplug Firmware Loading
    • 12. UDEV rules for DVB
    • 13. Contributors
  • Video4Linux (V4L) driver-specific documentation
    • 1. Guidelines for Linux4Linux pixel format 4CCs
      • 1.1. Raw bayer
    • 2. Infrared remote control support in video4linux drivers
      • 2.1. Basics
      • 2.2. How it works
    • 3. Using with lircd
    • 4. Using without lircd
    • 5. Tuner drivers
      • 5.1. Simple tuner Programming
      • 5.2. Tuner Manufacturers
    • 6. Cards List
      • 6.1. AU0828 cards list
      • 6.2. BTTV cards list
      • 6.3. cx23885 cards list
      • 6.4. CX88 cards list
      • 6.5. EM28xx cards list
      • 6.6. IVTV cards list
      • 6.7. SAA7134 cards list
      • 6.8. SAA7134 cards list
      • 6.9. TM6000 cards list
      • 6.10. Tuner cards list
      • 6.11. Usbvision cards list
      • 6.12. The gspca cards list
    • 7. The bttv driver
      • 7.1. Release notes for bttv
      • 7.2. Make bttv work with your card
      • 7.3. Autodetecting cards
      • 7.4. Still doesn’t work?
      • 7.5. Modprobe options
      • 7.6. If the box freezes hard with bttv
        • 7.6.1. bttv bugs
        • 7.6.2. hardware bugs
        • 7.6.3. other
      • 7.7. Bttv quirks
        • 7.7.1. Normal PCI Mode
        • 7.7.2. 430FX Compatibility Mode
        • 7.7.3. Interfacing with Non-PCI 2.1 Compliant Core Logic
      • 7.8. bttv and sound mini howto
        • 7.8.1. How sound works in detail
        • 7.8.2. Other elements of the tvcards array
      • 7.9. Cards
        • 7.9.1. Supported cards: Bt848/Bt848a/Bt849/Bt878/Bt879 cards
        • 7.9.2. MATRIX Vision
        • 7.9.3. Miro/Pinnacle PCTV
        • 7.9.4. Hauppauge Win/TV pci
        • 7.9.5. Askey CPH-Series
        • 7.9.6. Lifeview Flyvideo Series:
        • 7.9.7. Typhoon TV card series:
        • 7.9.8. Guillemot
        • 7.9.9. Mentor
        • 7.9.10. Prolink
        • 7.9.11. Dynalink
        • 7.9.12. Phoebemicro
        • 7.9.13. Genius/Kye
        • 7.9.14. Tekram
        • 7.9.15. Lucky Star
        • 7.9.16. Leadtek
        • 7.9.17. KNC One
        • 7.9.18. Provideo
        • 7.9.19. Highscreen
        • 7.9.20. Zoltrix
        • 7.9.21. AVerMedia
        • 7.9.22. Aimslab
        • 7.9.23. IXMicro (former: IMS=Integrated Micro Solutions)
        • 7.9.24. Lifetec/Medion/Tevion/Aldi
        • 7.9.25. Modular Technologies (www.modulartech.com) UK
        • 7.9.26. Terratec
        • 7.9.27. Technisat
        • 7.9.28. Siemens
        • 7.9.29. Powercolor
        • 7.9.30. Pinnacle
        • 7.9.31. Lenco
        • 7.9.32. Iomega
        • 7.9.33. LML
        • 7.9.34. Grandtec
        • 7.9.35. Koutech
        • 7.9.36. IODATA (jp)
        • 7.9.37. Canopus (jp)
        • 7.9.38. www.sigmacom.co.kr
        • 7.9.39. www.sasem.co.kr
        • 7.9.40. hama
        • 7.9.41. Sigma Designs
        • 7.9.42. Formac
        • 7.9.43. ATI
        • 7.9.44. Diamond Multimedia
        • 7.9.45. Aopen
        • 7.9.46. Intel
        • 7.9.47. STB
        • 7.9.48. Videologic
        • 7.9.49. Technotrend
        • 7.9.50. Teles
        • 7.9.51. Remote Vision
        • 7.9.52. Boeder
        • 7.9.53. Media-Surfer (esc-kathrein.de)
        • 7.9.54. Jetway (www.jetway.com.tw)
        • 7.9.55. Galaxis
        • 7.9.56. Hauppauge
        • 7.9.57. Matrix-Vision
        • 7.9.58. Conceptronic (.net)
        • 7.9.59. BestData
        • 7.9.60. Gallant (www.gallantcom.com) www.minton.com.tw
        • 7.9.61. Asonic (www.asonic.com.cn) (website down)
        • 7.9.62. Hoontech
        • 7.9.63. Teppro (www.itcteppro.com.tw)
        • 7.9.64. Kworld (www.kworld.com.tw)
        • 7.9.65. JTT/ Justy Corp.(http://www.jtt.ne.jp/)
        • 7.9.66. ADS www.adstech.com
        • 7.9.67. AVEC www.prochips.com
        • 7.9.68. NoBrand
        • 7.9.69. Mach www.machspeed.com
        • 7.9.70. Eline www.eline-net.com/
        • 7.9.71. Spirit
        • 7.9.72. Boser www.boser.com.tw
        • 7.9.73. Satelco www.citycom-gmbh.de, www.satelco.de
        • 7.9.74. Sensoray www.sensoray.com
        • 7.9.75. CEI (Chartered Electronics Industries Pte Ltd [CEI] [FCC ID HBY])
        • 7.9.76. AITech
        • 7.9.77. MAXRON
        • 7.9.78. www.ids-imaging.de
        • 7.9.79. www.sknet-web.co.jp
        • 7.9.80. A-Max www.amaxhk.com (Colormax, Amax, Napa)
        • 7.9.81. Cybertainment
        • 7.9.82. VCR (http://www.vcrinc.com/)
        • 7.9.83. Twinhan
        • 7.9.84. MSI
        • 7.9.85. Focus www.focusinfo.com
        • 7.9.86. Sdisilk www.sdisilk.com/
        • 7.9.87. www.euresys.com
        • 7.9.88. PMC/Pace
        • 7.9.89. Mercury www.kobian.com (UK and FR)
        • 7.9.90. TEC sound
        • 7.9.91. Lorenzen www.lorenzen.de
        • 7.9.92. Origo (.uk) www.origo2000.com
        • 7.9.93. I/O Magic www.iomagic.com
        • 7.9.94. Arowana
        • 7.9.95. iTVC15 boards
        • 7.9.96. Asus www.asuscom.com
        • 7.9.97. Hoontech
      • 7.10. Chips used at bttv devices
      • 7.11. Specs
      • 7.12. Thanks
      • 7.13. Contributors
    • 8. The cafe_ccic driver
      • 8.1. Introdution
      • 8.2. Load time options
    • 9. The cpia2 driver
      • 9.1. Introduction
      • 9.2. Features
      • 9.3. Making and installing the stv672 driver modules
        • 9.3.1. Requirements
        • 9.3.2. Setup
        • 9.3.3. Driver options
        • 9.3.4. Setting the options
        • 9.3.5. What buffer size should I use?
        • 9.3.6. How many buffers should I use?
        • 9.3.7. Using the camera
        • 9.3.8. Notes to developers
        • 9.3.9. Programmer’s overview of cpia2 driver
    • 10. The cx18 driver
    • 11. The cx2341x driver
      • 11.1. Memory at cx2341x chips
        • 11.1.1. Memory Map
        • 11.1.2. Registers
        • 11.1.3. Interrupt Status Register
      • 11.2. Missing documentation
      • 11.3. The cx2341x firmware upload
        • 11.3.1. How to find
        • 11.3.2. How to load
      • 11.4. How to call the firmware API
      • 11.5. OSD firmware API description
        • 11.5.1. CX2341X_OSD_GET_FRAMEBUFFER
        • 11.5.2. CX2341X_OSD_GET_PIXEL_FORMAT
        • 11.5.3. CX2341X_OSD_SET_PIXEL_FORMAT
        • 11.5.4. CX2341X_OSD_GET_STATE
        • 11.5.5. CX2341X_OSD_SET_STATE
        • 11.5.6. CX2341X_OSD_GET_OSD_COORDS
        • 11.5.7. CX2341X_OSD_SET_OSD_COORDS
        • 11.5.8. CX2341X_OSD_GET_SCREEN_COORDS
        • 11.5.9. CX2341X_OSD_SET_SCREEN_COORDS
        • 11.5.10. CX2341X_OSD_GET_GLOBAL_ALPHA
        • 11.5.11. CX2341X_OSD_SET_GLOBAL_ALPHA
        • 11.5.12. CX2341X_OSD_SET_BLEND_COORDS
        • 11.5.13. CX2341X_OSD_GET_FLICKER_STATE
        • 11.5.14. CX2341X_OSD_SET_FLICKER_STATE
        • 11.5.15. CX2341X_OSD_BLT_COPY
        • 11.5.16. CX2341X_OSD_BLT_FILL
        • 11.5.17. CX2341X_OSD_BLT_TEXT
        • 11.5.18. CX2341X_OSD_SET_FRAMEBUFFER_WINDOW
        • 11.5.19. CX2341X_OSD_SET_CHROMA_KEY
        • 11.5.20. CX2341X_OSD_GET_ALPHA_CONTENT_INDEX
        • 11.5.21. CX2341X_OSD_SET_ALPHA_CONTENT_INDEX
      • 11.6. Encoder firmware API description
        • 11.6.1. CX2341X_ENC_PING_FW
        • 11.6.2. CX2341X_ENC_START_CAPTURE
        • 11.6.3. CX2341X_ENC_STOP_CAPTURE
        • 11.6.4. CX2341X_ENC_SET_AUDIO_ID
        • 11.6.5. CX2341X_ENC_SET_VIDEO_ID
        • 11.6.6. CX2341X_ENC_SET_PCR_ID
        • 11.6.7. CX2341X_ENC_SET_FRAME_RATE
        • 11.6.8. CX2341X_ENC_SET_FRAME_SIZE
        • 11.6.9. CX2341X_ENC_SET_BIT_RATE
        • 11.6.10. CX2341X_ENC_SET_GOP_PROPERTIES
        • 11.6.11. CX2341X_ENC_SET_ASPECT_RATIO
        • 11.6.12. CX2341X_ENC_SET_DNR_FILTER_MODE
        • 11.6.13. CX2341X_ENC_SET_DNR_FILTER_PROPS
        • 11.6.14. CX2341X_ENC_SET_CORING_LEVELS
        • 11.6.15. CX2341X_ENC_SET_SPATIAL_FILTER_TYPE
        • 11.6.16. CX2341X_ENC_SET_VBI_LINE
        • 11.6.17. CX2341X_ENC_SET_STREAM_TYPE
        • 11.6.18. CX2341X_ENC_SET_OUTPUT_PORT
        • 11.6.19. CX2341X_ENC_SET_AUDIO_PROPERTIES
        • 11.6.20. CX2341X_ENC_HALT_FW
        • 11.6.21. CX2341X_ENC_GET_VERSION
        • 11.6.22. CX2341X_ENC_SET_GOP_CLOSURE
        • 11.6.23. CX2341X_ENC_GET_SEQ_END
        • 11.6.24. CX2341X_ENC_SET_PGM_INDEX_INFO
        • 11.6.25. CX2341X_ENC_SET_VBI_CONFIG
        • 11.6.26. CX2341X_ENC_SET_DMA_BLOCK_SIZE
        • 11.6.27. CX2341X_ENC_GET_PREV_DMA_INFO_MB_10
        • 11.6.28. CX2341X_ENC_GET_PREV_DMA_INFO_MB_9
        • 11.6.29. CX2341X_ENC_SCHED_DMA_TO_HOST
        • 11.6.30. CX2341X_ENC_INITIALIZE_INPUT
        • 11.6.31. CX2341X_ENC_SET_FRAME_DROP_RATE
        • 11.6.32. CX2341X_ENC_PAUSE_ENCODER
        • 11.6.33. CX2341X_ENC_REFRESH_INPUT
        • 11.6.34. CX2341X_ENC_SET_COPYRIGHT
        • 11.6.35. CX2341X_ENC_SET_EVENT_NOTIFICATION
        • 11.6.36. CX2341X_ENC_SET_NUM_VSYNC_LINES
        • 11.6.37. CX2341X_ENC_SET_PLACEHOLDER
        • 11.6.38. CX2341X_ENC_MUTE_VIDEO
        • 11.6.39. CX2341X_ENC_MUTE_AUDIO
        • 11.6.40. CX2341X_ENC_SET_VERT_CROP_LINE
        • 11.6.41. CX2341X_ENC_MISC
      • 11.7. Decoder firmware API description
        • 11.7.1. CX2341X_DEC_PING_FW
        • 11.7.2. CX2341X_DEC_START_PLAYBACK
        • 11.7.3. CX2341X_DEC_STOP_PLAYBACK
        • 11.7.4. CX2341X_DEC_SET_PLAYBACK_SPEED
        • 11.7.5. CX2341X_DEC_STEP_VIDEO
        • 11.7.6. CX2341X_DEC_SET_DMA_BLOCK_SIZE
        • 11.7.7. CX2341X_DEC_GET_XFER_INFO
        • 11.7.8. CX2341X_DEC_GET_DMA_STATUS
        • 11.7.9. CX2341X_DEC_SCHED_DMA_FROM_HOST
        • 11.7.10. CX2341X_DEC_PAUSE_PLAYBACK
        • 11.7.11. CX2341X_DEC_HALT_FW
        • 11.7.12. CX2341X_DEC_SET_STANDARD
        • 11.7.13. CX2341X_DEC_GET_VERSION
        • 11.7.14. CX2341X_DEC_SET_STREAM_INPUT
        • 11.7.15. CX2341X_DEC_GET_TIMING_INFO
        • 11.7.16. CX2341X_DEC_SET_AUDIO_MODE
        • 11.7.17. CX2341X_DEC_SET_EVENT_NOTIFICATION
        • 11.7.18. CX2341X_DEC_SET_DISPLAY_BUFFERS
        • 11.7.19. CX2341X_DEC_EXTRACT_VBI
        • 11.7.20. CX2341X_DEC_SET_DECODER_SOURCE
        • 11.7.21. CX2341X_DEC_SET_PREBUFFERING
      • 11.8. PVR350 Video decoder registers 0x02002800 -> 0x02002B00
      • 11.9. The cx231xx DMA engine
        • 11.9.1. Introduction
        • 11.9.2. Flow
        • 11.9.3. Mailbox #10
        • 11.9.4. Scatter-Gather Array
        • 11.9.5. DMA Transfer Status
      • 11.10. Non-compressed file format
        • 11.10.1. Raw format c example
      • 11.11. Format of embedded V4L2_MPEG_STREAM_VBI_FMT_IVTV VBI data
    • 12. The cx88 driver
      • 12.1. Current status
      • 12.2. How to add support for new cards
      • 12.3. Documentation missing at the cx88 datasheet
      • 12.4. Hauppauge WinTV cx88 IR information
        • 12.4.1. Additional info
    • 13. The VPBE V4L2 driver design
      • 13.1. File partitioning
      • 13.2. Functional partitioning
      • 13.3. Current status
      • 13.4. To be done
    • 14. The Samsung S5P/EXYNOS4 FIMC driver
      • 14.1. Supported SoCs
      • 14.2. Supported features
      • 14.3. Not currently supported
      • 14.4. Files partitioning
      • 14.5. User space interfaces
        • 14.5.1. Media device interface
        • 14.5.2. Memory-to-memory video node
        • 14.5.3. Capture video node
        • 14.5.4. Camera capture subdevs
        • 14.5.5. sysfs
      • 14.6. 5. Device mapping to video and subdev device nodes
      • 14.7. 7. Build
    • 15. The ivtv driver
      • 15.1. Features
      • 15.2. Additional features for the PVR-350 (CX23415 based)
      • 15.3. See also
      • 15.4. IRC
      • 15.5. Devices
      • 15.6. Base devices
    • 16. Vaio Picturebook Motion Eye Camera Driver
      • 16.1. Hardware supported
      • 16.2. Driver options
      • 16.3. Module use
      • 16.4. Usage:
      • 16.5. Private API
      • 16.6. Bugs / Todo
    • 17. OMAP 3 Image Signal Processor (ISP) driver
      • 17.1. Introduction
      • 17.2. Split to subdevs
      • 17.3. Controlling the OMAP 3 ISP
      • 17.4. Events
      • 17.5. Private IOCTLs
      • 17.6. CCDC and preview block IOCTLs
      • 17.7. Statistic blocks IOCTLs
      • 17.8. VIDIOC_OMAP3ISP_STAT_EN
      • 17.9. VIDIOC_OMAP3ISP_AEWB_CFG, VIDIOC_OMAP3ISP_HIST_CFG and VIDIOC_OMAP3ISP_AF_CFG
      • 17.10. VIDIOC_OMAP3ISP_STAT_REQ
      • 17.11. Technical reference manuals (TRMs) and other documentation
      • 17.12. References
    • 18. OMAP4 ISS Driver
      • 18.1. Introduction
      • 18.2. Tested platforms
      • 18.3. File list
      • 18.4. References
    • 19. The pvrusb2 driver
      • 19.1. Background
      • 19.2. Building
      • 19.3. Source file list / functional overview
    • 20. PXA-Camera Host Driver
      • 20.1. Constraints
      • 20.2. Global video workflow
      • 20.3. DMA usage
    • 21. The Radiotrack radio driver
      • 21.1. ACKNOWLEDGMENTS
      • 21.2. WHY THIS DOCUMENT?
      • 21.3. PHYSICAL DESCRIPTION
      • 21.4. CONTROLLING THE CARD WITH IOPORT
      • 21.5. PROGRAMMING EXAMPLES
    • 22. The saa7134 driver
      • 22.1. Status
      • 22.2. Build
      • 22.3. Changes / Fixes
      • 22.4. Known Problems
      • 22.5. Card Variations:
      • 22.6. LifeView GPIOs
      • 22.7. Credits
    • 23. Cropping and Scaling algorithm, used in the sh_mobile_ceu_camera driver
      • 23.1. Terminology
      • 23.2. Generic scaling / cropping scheme
      • 23.3. S_FMT
      • 23.4. S_CROP
    • 24. The Silicon Labs Si470x FM Radio Receivers driver
      • 24.1. Information from Silicon Labs
      • 24.2. Supported ICs
      • 24.3. Supported USB devices
      • 24.4. Software
      • 24.5. Audio Listing
      • 24.6. Module Parameters
      • 24.7. Errors
      • 24.8. Open Issues
      • 24.9. Other useful information and links
    • 25. The Silicon Labs Si4713 FM Radio Transmitter Driver
      • 25.1. Information about the Device
      • 25.2. Device driver description
      • 25.3. Properties description
      • 25.4. RNL
      • 25.5. Stereo/Mono and RDS subchannels
      • 25.6. Testing
    • 26. The SI476x Driver
      • 26.1. TODO for the driver
      • 26.2. Parameters exposed over debugfs
    • 27. The Soc-Camera Drivers
      • 27.1. Terminology
      • 27.2. Purpose of the soc-camera subsystem
      • 27.3. Existing drivers
      • 27.4. Camera host API
      • 27.5. Camera API
      • 27.6. VIDIOC_S_CROP and VIDIOC_S_FMT behaviour
      • 27.7. Format conversion
    • 28. The Linux USB Video Class (UVC) driver
      • 28.1. Extension Unit (XU) support
        • 28.1.1. Introduction
        • 28.1.2. Control mappings
        • 28.1.3. Security
        • 28.1.4. Debugging
        • 28.1.5. IOCTL reference
    • 29. The Virtual Video Test Driver (vivid)
      • 29.1. Configuring the driver
      • 29.2. Video Capture
        • 29.2.1. Webcam Input
        • 29.2.2. TV and S-Video Inputs
        • 29.2.3. HDMI Input
      • 29.3. Video Output
        • 29.3.1. S-Video Output
        • 29.3.2. HDMI Output
      • 29.4. VBI Capture
      • 29.5. VBI Output
      • 29.6. Radio Receiver
      • 29.7. Radio Transmitter
      • 29.8. Software Defined Radio Receiver
      • 29.9. Controls
        • 29.9.1. User Controls - Test Controls
        • 29.9.2. User Controls - Video Capture
        • 29.9.3. User Controls - Audio
        • 29.9.4. Vivid Controls
        • 29.9.5. Digital Video Controls
        • 29.9.6. FM Radio Receiver Controls
        • 29.9.7. FM Radio Modulator Controls
      • 29.10. Video, VBI and RDS Looping
        • 29.10.1. Video and Sliced VBI looping
        • 29.10.2. Radio & RDS Looping
      • 29.11. Cropping, Composing, Scaling
      • 29.12. Formats
      • 29.13. Capture Overlay
      • 29.14. Output Overlay
      • 29.15. CEC (Consumer Electronics Control)
      • 29.16. Some Future Improvements
    • 30. The Zoran driver
      • 30.1. Frequently Asked Questions
      • 30.2. What cards are supported
        • 30.2.1. Iomega Buz
        • 30.2.2. AverMedia 6 Eyes AVS6EYES
        • 30.2.3. Linux Media Labs LML33
        • 30.2.4. Linux Media Labs LML33R10
        • 30.2.5. Pinnacle/Miro DC10(new)
        • 30.2.6. Pinnacle/Miro DC10+
        • 30.2.7. Pinnacle/Miro DC10(old)
        • 30.2.8. Pinnacle/Miro DC30
        • 30.2.9. Pinnacle/Miro DC30+
      • 30.3. 1.1 What the TV decoder can do an what not
        • 30.3.1. Philips saa7111 TV decoder
        • 30.3.2. Philips saa7110a TV decoder
        • 30.3.3. Philips saa7114 TV decoder
        • 30.3.4. Brooktree bt819 TV decoder
        • 30.3.5. Micronas vpx3220a TV decoder
        • 30.3.6. Samsung ks0127 TV decoder
      • 30.4. What the TV encoder can do an what not
        • 30.4.1. Philips saa7185 TV Encoder
        • 30.4.2. Brooktree bt856 TV Encoder
        • 30.4.3. Analog Devices adv7170 TV Encoder
        • 30.4.4. Analog Devices adv7175 TV Encoder
        • 30.4.5. ITT mse3000 TV encoder
        • 30.4.6. Conexant bt866 TV encoder
      • 30.5. How do I get this damn thing to work
      • 30.6. What mainboard should I use (or why doesn’t my card work)
      • 30.7. Programming interface
      • 30.8. Applications
      • 30.9. Concerning buffer sizes, quality, output size etc.
      • 30.10. It hangs/crashes/fails/whatevers! Help!
      • 30.11. Maintainers/Contacting
      • 30.12. Driver’s License
    • 31. Zoran 364xx based USB webcam module
      • 31.1. Introduction
      • 31.2. Install
      • 31.3. Usage
      • 31.4. links
      • 31.5. Supported devices
  • Linux GPU Driver Developer’s Guide
    • Introduction
      • Style Guidelines
    • DRM Internals
      • Driver Initialization
        • Driver Information
        • Device Instance and Driver Handling
        • Driver Load
        • Bus-specific Device Registration and PCI Support
      • Open/Close, File Operations and IOCTLs
        • Open and Close
        • File Operations
        • IOCTLs
      • Legacy Support Code
        • Legacy Suspend/Resume
        • Legacy DMA Services
    • DRM Memory Management
      • The Translation Table Manager (TTM)
        • TTM initialization
      • The Graphics Execution Manager (GEM)
        • GEM Initialization
        • GEM Objects Creation
        • GEM Objects Lifetime
        • GEM Objects Naming
        • GEM Objects Mapping
        • Memory Coherency
        • Command Execution
      • GEM Function Reference
      • VMA Offset Manager
      • PRIME Buffer Sharing
        • Overview and Driver Interface
        • PRIME Helper Functions
      • PRIME Function References
      • DRM MM Range Allocator
        • Overview
        • LRU Scan/Eviction Support
      • DRM MM Range Allocator Function References
      • CMA Helper Functions Reference
    • Kernel Mode Setting (KMS)
      • Mode Setting
        • Display Modes Function Reference
        • Atomic Mode Setting Function Reference
        • Frame Buffer Abstraction
        • DRM Format Handling
        • Dumb Buffer Objects
        • Output Polling
      • KMS Initialization and Cleanup
        • CRTCs (struct drm_crtc)
        • Planes (struct drm_plane)
        • Encoders (struct drm_encoder)
        • Connectors (struct drm_connector)
        • Cleanup
        • Output discovery and initialization example
        • KMS API Functions
        • KMS Data Structures
        • KMS Locking
      • KMS Properties
        • Existing KMS Properties
      • Vertical Blanking
        • Vertical Blanking and Interrupt Handling Functions Reference
    • Mode Setting Helper Functions
      • Atomic Modeset Helper Functions Reference
        • Overview
        • Implementing Asynchronous Atomic Commit
        • Atomic State Reset and Initialization
      • Modeset Helper Reference for Common Vtables
      • Legacy CRTC/Modeset Helper Functions Reference
      • Output Probing Helper Functions Reference
      • fbdev Helper Functions Reference
      • Framebuffer CMA Helper Functions Reference
      • Display Port Helper Functions Reference
      • Display Port Dual Mode Adaptor Helper Functions Reference
      • Display Port MST Helper Functions Reference
      • MIPI DSI Helper Functions Reference
      • EDID Helper Functions Reference
      • Rectangle Utilities Reference
      • Flip-work Helper Reference
      • HDMI Infoframes Helper Reference
      • Plane Helper Reference
        • Tile group
      • Bridges
        • Overview
        • Default bridge callback sequence
      • Panel Helper Reference
      • Simple KMS Helper Reference
    • Userland interfaces
      • libdrm Device Lookup
      • Primary Nodes, DRM Master and Authentication
      • Render nodes
      • VBlank event handling
    • drm/i915 Intel GFX Driver
      • Core Driver Infrastructure
        • Runtime Power Management
        • Interrupt Handling
        • Intel GVT-g Guest Support(vGPU)
      • Display Hardware Handling
        • Mode Setting Infrastructure
        • Frontbuffer Tracking
        • Display FIFO Underrun Reporting
        • Plane Configuration
        • Atomic Plane Helpers
        • Output Probing
        • Hotplug
        • High Definition Audio
        • Panel Self Refresh PSR (PSR/SRD)
        • Frame Buffer Compression (FBC)
        • Display Refresh Rate Switching (DRRS)
        • DPIO
        • CSR firmware support for DMC
        • Video BIOS Table (VBT)
      • Memory Management and Command Submission
        • Batchbuffer Parsing
        • Batchbuffer Pools
        • Logical Rings, Logical Ring Contexts and Execlists
        • Global GTT views
        • GTT Fences and Swizzling
        • Object Tiling IOCTLs
        • Buffer Object Eviction
        • Buffer Object Memory Shrinking
      • GuC
        • GuC-specific firmware loader
        • GuC-based command submission
        • GuC Firmware Layout
      • Tracing
        • i915_ppgtt_create and i915_ppgtt_release
        • i915_context_create and i915_context_free
        • switch_mm
    • VGA Switcheroo
      • Modes of Use
        • Manual switching and manual power control
        • Driver power control
      • API
        • Public functions
        • Public structures
        • Public constants
        • Private structures
      • Handlers
        • apple-gmux Handler
 
The Linux Kernel
  • Docs »
  • Linux Media Infrastructure userspace API »
  • Part IV - Media Controller API »
  • 4. Function Reference »
  • 4.8. ioctl MEDIA_IOC_SETUP_LINK
  • View page source

4.8. ioctl MEDIA_IOC_SETUP_LINK¶

4.8.1. Name¶

MEDIA_IOC_SETUP_LINK - Modify the properties of a link

4.8.2. Synopsis¶

int ioctl(int fd, int request, struct media_link_desc *argp)¶

4.8.3. Arguments¶

fd
File descriptor returned by open().
request
MEDIA_IOC_SETUP_LINK

argp

4.8.4. Description¶

To change link properties applications fill a struct media_link_desc with link identification information (source and sink pad) and the new requested link flags. They then call the MEDIA_IOC_SETUP_LINK ioctl with a pointer to that structure.

The only configurable property is the ENABLED link flag to enable/disable a link. Links marked with the IMMUTABLE link flag can not be enabled or disabled.

Link configuration has no side effect on other links. If an enabled link at the sink pad prevents the link from being enabled, the driver returns with an EBUSY error code.

Only links marked with the DYNAMIC link flag can be enabled/disabled while streaming media data. Attempting to enable or disable a streaming non-dynamic link will return an EBUSY error code.

If the specified link can’t be found the driver returns with an EINVAL error code.

4.8.5. Return Value¶

On success 0 is returned, on error -1 and the errno variable is set appropriately. The generic error codes are described at the Generic Error Codes chapter.

EINVAL
The struct media_link_desc references a non-existing link, or the link is immutable and an attempt to modify its configuration was made.
Next Previous

© Copyright 2016, The kernel development community.

Built with Sphinx using a theme provided by Read the Docs.