History

Merge branch 'linus' into timers/urgent, to pick up fixes

Ingo Molnar committed 10 years ago

Commit fdbdfef2 parents 6731b0d a0cba214843 files · +205309 −138546Browse files

Unified · Split

2581 files
  1. .cocciconfig +3 −0
  2. .gitignore +2 −0
  3. .mailmap +13 −2
  4. Documentation/ABI/testing/sysfs-class-pwm +9 −0
  5. Documentation/DMA-API.txt +14 −19
  6. Documentation/DMA-attributes.txt +1 −1
  7. Documentation/DocBook/Makefile +11 −20
  8. Documentation/DocBook/device-drivers.tmpl +4 −0
  9. Documentation/DocBook/gpu.tmpl +0 −3540
  10. Documentation/DocBook/media/.gitignore +0 −1
  11. Documentation/DocBook/media/Makefile +0 −427
  12. Documentation/DocBook/media/bayer.png.b64 +0 −171
  13. Documentation/DocBook/media/constraints.png.b64 +0 −59
  14. Documentation/DocBook/media/crop.gif.b64 +0 −105
  15. Documentation/DocBook/media/dvb/.gitignore +0 −1
  16. Documentation/DocBook/media/dvb/audio.xml +0 −1314
  17. Documentation/DocBook/media/dvb/ca.xml +0 −582
  18. Documentation/DocBook/media/dvb/demux.xml +0 −1162
  19. Documentation/DocBook/media/dvb/dvbapi.xml +0 −156
  20. Documentation/DocBook/media/dvb/dvbproperty.xml +0 −1680
  21. Documentation/DocBook/media/dvb/dvbstb.pdf +0 −0
  22. Documentation/DocBook/media/dvb/examples.xml +0 −367
  23. Documentation/DocBook/media/dvb/fe-diseqc-recv-slave-reply.xml +0 −78
  24. Documentation/DocBook/media/dvb/fe-diseqc-reset-overload.xml +0 −51
  25. Documentation/DocBook/media/dvb/fe-diseqc-send-burst.xml +0 −89
  26. Documentation/DocBook/media/dvb/fe-diseqc-send-master-cmd.xml +0 −72
  27. Documentation/DocBook/media/dvb/fe-enable-high-lnb-voltage.xml +0 −61
  28. Documentation/DocBook/media/dvb/fe-get-info.xml +0 −266
  29. Documentation/DocBook/media/dvb/fe-get-property.xml +0 −81
  30. Documentation/DocBook/media/dvb/fe-read-status.xml +0 −107
  31. Documentation/DocBook/media/dvb/fe-set-frontend-tune-mode.xml +0 −64
  32. Documentation/DocBook/media/dvb/fe-set-tone.xml +0 −91
  33. Documentation/DocBook/media/dvb/fe-set-voltage.xml +0 −69
  34. Documentation/DocBook/media/dvb/frontend.xml +0 −269
  35. Documentation/DocBook/media/dvb/frontend_legacy_api.xml +0 −654
  36. Documentation/DocBook/media/dvb/intro.xml +0 −211
  37. Documentation/DocBook/media/dvb/net.xml +0 −238
  38. Documentation/DocBook/media/dvb/video.xml +0 −1968
  39. Documentation/DocBook/media/dvbstb.png.b64 +0 −398
  40. Documentation/DocBook/media/fieldseq_bt.gif.b64 +0 −447
  41. Documentation/DocBook/media/fieldseq_tb.gif.b64 +0 −445
  42. Documentation/DocBook/media/nv12mt.gif.b64 +0 −37
  43. Documentation/DocBook/media/nv12mt_example.gif.b64 +0 −121
  44. Documentation/DocBook/media/pipeline.png.b64 +0 −213
  45. Documentation/DocBook/media/selection.png.b64 +0 −206
  46. Documentation/DocBook/media/typical_media_device.svg +0 −28
  47. Documentation/DocBook/media/v4l/.gitignore +0 −1
  48. Documentation/DocBook/media/v4l/biblio.xml +0 −381
  49. Documentation/DocBook/media/v4l/capture.c.xml +0 −659
  50. Documentation/DocBook/media/v4l/cec-api.xml +0 −75
  51. Documentation/DocBook/media/v4l/cec-func-close.xml +0 −64
  52. Documentation/DocBook/media/v4l/cec-func-ioctl.xml +0 −78
  53. Documentation/DocBook/media/v4l/cec-func-open.xml +0 −104
  54. Documentation/DocBook/media/v4l/cec-func-poll.xml +0 −94
  55. Documentation/DocBook/media/v4l/cec-ioc-adap-g-caps.xml +0 −151
  56. Documentation/DocBook/media/v4l/cec-ioc-adap-g-log-addrs.xml +0 −329
  57. Documentation/DocBook/media/v4l/cec-ioc-adap-g-phys-addr.xml +0 −86
  58. Documentation/DocBook/media/v4l/cec-ioc-dqevent.xml +0 −202
  59. Documentation/DocBook/media/v4l/cec-ioc-g-mode.xml +0 −255
  60. Documentation/DocBook/media/v4l/cec-ioc-receive.xml +0 −274
  61. Documentation/DocBook/media/v4l/common.xml +0 −1102
  62. Documentation/DocBook/media/v4l/compat.xml +0 −2723
  63. Documentation/DocBook/media/v4l/controls.xml +0 −5505
  64. Documentation/DocBook/media/v4l/crop.pdf +0 −0
  65. Documentation/DocBook/media/v4l/dev-capture.xml +0 −110
  66. Documentation/DocBook/media/v4l/dev-codec.xml +0 −27
  67. Documentation/DocBook/media/v4l/dev-effect.xml +0 −17
  68. Documentation/DocBook/media/v4l/dev-event.xml +0 −43
  69. Documentation/DocBook/media/v4l/dev-osd.xml +0 −149
  70. Documentation/DocBook/media/v4l/dev-output.xml +0 −106
  71. Documentation/DocBook/media/v4l/dev-overlay.xml +0 −368
  72. Documentation/DocBook/media/v4l/dev-radio.xml +0 −49
  73. Documentation/DocBook/media/v4l/dev-raw-vbi.xml +0 −345
  74. Documentation/DocBook/media/v4l/dev-rds.xml +0 −196
  75. Documentation/DocBook/media/v4l/dev-sdr.xml +0 −126
  76. Documentation/DocBook/media/v4l/dev-sliced-vbi.xml +0 −706
  77. Documentation/DocBook/media/v4l/dev-subdev.xml +0 −478
  78. Documentation/DocBook/media/v4l/dev-teletext.xml +0 −29
  79. Documentation/DocBook/media/v4l/driver.xml +0 −200
  80. Documentation/DocBook/media/v4l/fdl-appendix.xml +0 −671
  81. Documentation/DocBook/media/v4l/fieldseq_bt.pdf +0 −0
  82. Documentation/DocBook/media/v4l/fieldseq_tb.pdf +0 −0
  83. Documentation/DocBook/media/v4l/func-close.xml +0 −62
  84. Documentation/DocBook/media/v4l/func-ioctl.xml +0 −71
  85. Documentation/DocBook/media/v4l/func-mmap.xml +0 −183
  86. Documentation/DocBook/media/v4l/func-munmap.xml +0 −76
  87. Documentation/DocBook/media/v4l/func-open.xml +0 −113
  88. Documentation/DocBook/media/v4l/func-poll.xml +0 −142
  89. Documentation/DocBook/media/v4l/func-read.xml +0 −181
  90. Documentation/DocBook/media/v4l/func-select.xml +0 −130
  91. Documentation/DocBook/media/v4l/func-write.xml +0 −128
  92. Documentation/DocBook/media/v4l/gen-errors.xml +0 −77
  93. Documentation/DocBook/media/v4l/io.xml +0 −1545
  94. Documentation/DocBook/media/v4l/keytable.c.xml +0 −172
  95. Documentation/DocBook/media/v4l/libv4l.xml +0 −160
  96. Documentation/DocBook/media/v4l/lirc_device_interface.xml +0 −255
  97. Documentation/DocBook/media/v4l/media-controller.xml +0 −105
  98. Documentation/DocBook/media/v4l/media-func-close.xml +0 −59
  99. Documentation/DocBook/media/v4l/media-func-ioctl.xml +0 −73
  100. Documentation/DocBook/media/v4l/media-func-open.xml +0 −94
  101. Documentation/DocBook/media/v4l/media-ioc-device-info.xml +0 −132
  102. Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml +0 −180
  103. Documentation/DocBook/media/v4l/media-ioc-enum-links.xml +0 −160
  104. Documentation/DocBook/media/v4l/media-ioc-g-topology.xml +0 −391
  105. Documentation/DocBook/media/v4l/media-ioc-setup-link.xml +0 −84
  106. Documentation/DocBook/media/v4l/media-types.xml +0 −379
  107. Documentation/DocBook/media/v4l/pipeline.pdf +0 −0
  108. Documentation/DocBook/media/v4l/pixfmt-grey.xml +0 −62
  109. Documentation/DocBook/media/v4l/pixfmt-m420.xml +0 −139
  110. Documentation/DocBook/media/v4l/pixfmt-nv12.xml +0 −143
  111. Documentation/DocBook/media/v4l/pixfmt-nv12m.xml +0 −153
  112. Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml +0 −66
  113. Documentation/DocBook/media/v4l/pixfmt-nv16.xml +0 −166
  114. Documentation/DocBook/media/v4l/pixfmt-nv16m.xml +0 −170
  115. Documentation/DocBook/media/v4l/pixfmt-nv24.xml +0 −121
  116. Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml +0 −937
  117. Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml +0 −236
  118. Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml +0 −83
  119. Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml +0 −67
  120. Documentation/DocBook/media/v4l/pixfmt-sdr-cs08.xml +0 −44
  121. Documentation/DocBook/media/v4l/pixfmt-sdr-cs14le.xml +0 −47
  122. Documentation/DocBook/media/v4l/pixfmt-sdr-cu08.xml +0 −44
  123. Documentation/DocBook/media/v4l/pixfmt-sdr-cu16le.xml +0 −46
  124. Documentation/DocBook/media/v4l/pixfmt-sdr-ru12le.xml +0 −40
  125. Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml +0 −67
  126. Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml +0 −67
  127. Documentation/DocBook/media/v4l/pixfmt-srggb10.xml +0 −90
  128. Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml +0 −34
  129. Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml +0 −28
  130. Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml +0 −99
  131. Documentation/DocBook/media/v4l/pixfmt-srggb12.xml +0 −90
  132. Documentation/DocBook/media/v4l/pixfmt-srggb8.xml +0 −67
  133. Documentation/DocBook/media/v4l/pixfmt-uv8.xml +0 −62
  134. Documentation/DocBook/media/v4l/pixfmt-uyvy.xml +0 −120
  135. Documentation/DocBook/media/v4l/pixfmt-vyuy.xml +0 −120
  136. Documentation/DocBook/media/v4l/pixfmt-y10.xml +0 −79
  137. Documentation/DocBook/media/v4l/pixfmt-y10b.xml +0 −43
  138. Documentation/DocBook/media/v4l/pixfmt-y12.xml +0 −79
  139. Documentation/DocBook/media/v4l/pixfmt-y12i.xml +0 −49
  140. Documentation/DocBook/media/v4l/pixfmt-y16-be.xml +0 −81
  141. Documentation/DocBook/media/v4l/pixfmt-y16.xml +0 −81
  142. Documentation/DocBook/media/v4l/pixfmt-y41p.xml +0 −149
  143. Documentation/DocBook/media/v4l/pixfmt-y8i.xml +0 −80
  144. Documentation/DocBook/media/v4l/pixfmt-yuv410.xml +0 −133
  145. Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml +0 −147
  146. Documentation/DocBook/media/v4l/pixfmt-yuv420.xml +0 −149
  147. Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml +0 −162
  148. Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml +0 −166
  149. Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml +0 −153
  150. Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml +0 −177
  151. Documentation/DocBook/media/v4l/pixfmt-yuyv.xml +0 −120
  152. Documentation/DocBook/media/v4l/pixfmt-yvyu.xml +0 −120
  153. Documentation/DocBook/media/v4l/pixfmt-z16.xml +0 −81
  154. Documentation/DocBook/media/v4l/pixfmt.xml +0 −2003
  155. Documentation/DocBook/media/v4l/planar-apis.xml +0 −62
  156. Documentation/DocBook/media/v4l/remote_controllers.xml +0 −320
  157. Documentation/DocBook/media/v4l/selection-api.xml +0 −317
  158. Documentation/DocBook/media/v4l/selections-common.xml +0 −180
  159. Documentation/DocBook/media/v4l/subdev-formats.xml +0 −4040
  160. Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia +0 −614
  161. Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg +0 −63
  162. Documentation/DocBook/media/v4l/subdev-image-processing-full.dia +0 −1588
  163. Documentation/DocBook/media/v4l/subdev-image-processing-full.svg +0 −163
  164. Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia +0 −1152
  165. Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg +0 −116
  166. Documentation/DocBook/media/v4l/v4l2.xml +0 −728
  167. Documentation/DocBook/media/v4l/v4l2grab.c.xml +0 −164
  168. Documentation/DocBook/media/v4l/vbi_525.pdf +0 −0
  169. Documentation/DocBook/media/v4l/vbi_625.pdf +0 −0
  170. Documentation/DocBook/media/v4l/vbi_hsync.pdf +0 −0
  171. Documentation/DocBook/media/v4l/vidioc-create-bufs.xml +0 −158
  172. Documentation/DocBook/media/v4l/vidioc-cropcap.xml +0 −166
  173. Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml +0 −207
  174. Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml +0 −227
  175. Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml +0 −259
  176. Documentation/DocBook/media/v4l/vidioc-dqevent.xml +0 −471
  177. Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml +0 −210
  178. Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml +0 −197
  179. Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml +0 −128
  180. Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml +0 −159
  181. Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml +0 −260
  182. Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml +0 −265
  183. Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml +0 −175
  184. Documentation/DocBook/media/v4l/vidioc-enumaudio.xml +0 −76
  185. Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml +0 −79
  186. Documentation/DocBook/media/v4l/vidioc-enuminput.xml +0 −316
  187. Documentation/DocBook/media/v4l/vidioc-enumoutput.xml +0 −201
  188. Documentation/DocBook/media/v4l/vidioc-enumstd.xml +0 −389
  189. Documentation/DocBook/media/v4l/vidioc-expbuf.xml +0 −205
  190. Documentation/DocBook/media/v4l/vidioc-g-audio.xml +0 −172
  191. Documentation/DocBook/media/v4l/vidioc-g-audioout.xml +0 −138
  192. Documentation/DocBook/media/v4l/vidioc-g-crop.xml +0 −129
  193. Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml +0 −133
  194. Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml +0 −343
  195. Documentation/DocBook/media/v4l/vidioc-g-edid.xml +0 −173
  196. Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml +0 −189
  197. Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml +0 −456
  198. Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml +0 −459
  199. Documentation/DocBook/media/v4l/vidioc-g-fmt.xml +0 −204
  200. Documentation/DocBook/media/v4l/vidioc-g-frequency.xml +0 −148
  201. Documentation/DocBook/media/v4l/vidioc-g-input.xml +0 −83
  202. Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml +0 −175
  203. Documentation/DocBook/media/v4l/vidioc-g-modulator.xml +0 −252
  204. Documentation/DocBook/media/v4l/vidioc-g-output.xml +0 −85
  205. Documentation/DocBook/media/v4l/vidioc-g-parm.xml +0 −314
  206. Documentation/DocBook/media/v4l/vidioc-g-priority.xml +0 −135
  207. Documentation/DocBook/media/v4l/vidioc-g-selection.xml +0 −233
  208. Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml +0 −255
  209. Documentation/DocBook/media/v4l/vidioc-g-std.xml +0 −98
  210. Documentation/DocBook/media/v4l/vidioc-g-tuner.xml +0 −594
  211. Documentation/DocBook/media/v4l/vidioc-log-status.xml +0 −41
  212. Documentation/DocBook/media/v4l/vidioc-overlay.xml +0 −74
  213. Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml +0 −88
  214. Documentation/DocBook/media/v4l/vidioc-qbuf.xml +0 −202
  215. Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml +0 −115
  216. Documentation/DocBook/media/v4l/vidioc-querybuf.xml +0 −106
  217. Documentation/DocBook/media/v4l/vidioc-querycap.xml +0 −350
  218. Documentation/DocBook/media/v4l/vidioc-queryctrl.xml +0 −661
  219. Documentation/DocBook/media/v4l/vidioc-querystd.xml +0 −85
  220. Documentation/DocBook/media/v4l/vidioc-reqbufs.xml +0 −137
  221. Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml +0 −188
  222. Documentation/DocBook/media/v4l/vidioc-streamon.xml +0 −136
  223. Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml +0 −151
  224. Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml +0 −153
  225. Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml +0 −118
  226. Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml +0 −158
  227. Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml +0 −177
  228. Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml +0 −135
  229. Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml +0 −159
  230. Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml +0 −130
  231. Documentation/DocBook/media/vbi_525.gif.b64 +0 −84
  232. Documentation/DocBook/media/vbi_625.gif.b64 +0 −90
  233. Documentation/DocBook/media/vbi_hsync.gif.b64 +0 −43
  234. Documentation/DocBook/media_api.tmpl +0 −121
  235. Documentation/Makefile.sphinx +2 −3
  236. Documentation/PCI/MSI-HOWTO.txt +79 −390
  237. Documentation/arm/Atmel/README +8 −2
  238. Documentation/binfmt_misc.txt +7 −0
  239. Documentation/block/biodoc.txt +2 −2
  240. Documentation/cgroup-v1/cgroups.txt +2 −2
  241. Documentation/cgroup-v1/cpusets.txt +1 −1
  242. Documentation/cgroup-v1/memcg_test.txt +2 −2
  243. Documentation/coccinelle.txt +147 −1
  244. Documentation/device-mapper/dm-flakey.txt +1 −1
  245. Documentation/devicetree/bindings/arm/arm,scpi.txt +34 −0
  246. Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method.txt +3 −3
  247. Documentation/devicetree/bindings/arm/bcm/brcm,bcm23550-cpu-method.txt +36 −0
  248. Documentation/devicetree/bindings/arm/bcm/brcm,bcm23550.txt +15 −0
  249. Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt +4 −0
  250. Documentation/devicetree/bindings/arm/cpus.txt +3 −0
  251. Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt +14 −0
  252. Documentation/devicetree/bindings/arm/mediatek.txt +4 −0
  253. Documentation/devicetree/bindings/arm/olimex.txt +6 −2
  254. Documentation/devicetree/bindings/arm/rockchip.txt +3 −0
  255. Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt +1 −0
  256. Documentation/devicetree/bindings/arm/shmobile.txt +6 −0
  257. Documentation/devicetree/bindings/arm/tegra.txt +4 −0
  258. Documentation/devicetree/bindings/ata/ahci-platform.txt +1 −0
  259. Documentation/devicetree/bindings/bus/nvidia,tegra210-aconnect.txt +45 −0
  260. Documentation/devicetree/bindings/clock/clps711x-clock.txt +2 −2
  261. Documentation/devicetree/bindings/display/arm,malidp.txt +65 −0
  262. Documentation/devicetree/bindings/display/bridge/adi,adv7511.txt +21 −5
  263. Documentation/devicetree/bindings/display/bridge/analogix_dp.txt +1 −0
  264. Documentation/devicetree/bindings/display/bridge/sii902x.txt +35 −0
  265. Documentation/devicetree/bindings/display/bridge/toshiba,tc358767.txt +53 −0
  266. Documentation/devicetree/bindings/display/cirrus,clps711x-fb.txt +2 −2
  267. Documentation/devicetree/bindings/display/connector/hdmi-connector.txt +1 −0
  268. Documentation/devicetree/bindings/display/fsl,dcu.txt +7 −2
  269. Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.txt +148 −0
  270. Documentation/devicetree/bindings/display/msm/dsi.txt +77 −40
  271. Documentation/devicetree/bindings/display/msm/mdp.txt +0 −59
  272. Documentation/devicetree/bindings/display/msm/mdp4.txt +112 −0
  273. Documentation/devicetree/bindings/display/msm/mdp5.txt +160 −0
  274. Documentation/devicetree/bindings/display/panel/lg,lp079qx1-sp0v.txt +7 −0
  275. Documentation/devicetree/bindings/display/panel/lg,lp097qx1-spa1.txt +7 −0
  276. Documentation/devicetree/bindings/display/panel/panel-dpi.txt +2 −0
  277. Documentation/devicetree/bindings/display/panel/samsung,lsn122dl01-c01.txt +7 −0
  278. Documentation/devicetree/bindings/display/panel/sharp,lq101k1ly04.txt +7 −0
  279. Documentation/devicetree/bindings/display/panel/sharp,lq123p1jx31.txt +7 −0
  280. Documentation/devicetree/bindings/display/panel/starry,kr122ea0sra.txt +7 −0
  281. Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt +8 −1
  282. Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt +10 −3
  283. Documentation/devicetree/bindings/dma/ti-edma.txt +2 −2
  284. Documentation/devicetree/bindings/firmware/qcom,scm.txt +28 −0
  285. Documentation/devicetree/bindings/iio/adc/at91_adc.txt +4 −8
  286. Documentation/devicetree/bindings/input/clps711x-keypad.txt +2 −2
  287. Documentation/devicetree/bindings/input/rotary-encoder.txt +4 −0
  288. Documentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt +36 −0
  289. Documentation/devicetree/bindings/input/touchscreen/sis_i2c.txt +33 −0
  290. Documentation/devicetree/bindings/interrupt-controller/cirrus,clps711x-intc.txt +2 −2
  291. Documentation/devicetree/bindings/interrupt-controller/mediatek,sysirq.txt +1 −0
  292. Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt +1 −1
  293. Documentation/devicetree/bindings/iommu/mediatek,iommu.txt +9 −4
  294. Documentation/devicetree/bindings/iommu/msm,iommu-v0.txt +64 −0
  295. Documentation/devicetree/bindings/leds/backlight/lp855x.txt +2 −0
  296. Documentation/devicetree/bindings/mailbox/brcm,iproc-pdc-mbox.txt +23 −0
  297. Documentation/devicetree/bindings/media/nokia,n900-ir +20 −0
  298. Documentation/devicetree/bindings/memory-controllers/atmel,ebi.txt +136 −0
  299. Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt +18 −3
  300. Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt +3 −1
  301. Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt +6 −1
  302. Documentation/devicetree/bindings/mfd/twl6040.txt +2 −2
  303. Documentation/devicetree/bindings/mmc/arasan,sdhci.txt +33 −2
  304. Documentation/devicetree/bindings/mmc/brcm,bcm2835-sdhci.txt +0 −18
  305. Documentation/devicetree/bindings/mmc/brcm,bcm7425-sdhci.txt +36 −0
  306. Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt +2 −0
  307. Documentation/devicetree/bindings/mmc/mmc.txt +4 −0
  308. Documentation/devicetree/bindings/mtd/atmel-quadspi.txt +32 −0
  309. Documentation/devicetree/bindings/mtd/brcm,brcmnand.txt +1 −0
  310. Documentation/devicetree/bindings/mtd/cadence-quadspi.txt +56 −0
  311. Documentation/devicetree/bindings/mtd/gpmc-nand.txt +1 −1
  312. Documentation/devicetree/bindings/mtd/hisilicon,fmc-spi-nor.txt +24 −0
  313. Documentation/devicetree/bindings/mtd/mtk-nand.txt +160 −0
  314. Documentation/devicetree/bindings/mtd/sunxi-nand.txt +6 −0
  315. Documentation/devicetree/bindings/net/apm-xgene-enet.txt +2 −2
  316. Documentation/devicetree/bindings/net/fsl-fec.txt +3 −0
  317. Documentation/devicetree/bindings/pci/aardvark-pci.txt +56 −0
  318. Documentation/devicetree/bindings/pci/axis,artpec6-pcie.txt +46 −0
  319. Documentation/devicetree/bindings/pci/layerscape-pci.txt +4 −0
  320. Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt +1 −1
  321. Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt +9 −0
  322. Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt +2 −0
  323. Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-dpaux-padctl.txt +60 −0
  324. Documentation/devicetree/bindings/power/renesas,apmu.txt +31 −0
  325. Documentation/devicetree/bindings/power/renesas,rcar-sysc.txt +1 −0
  326. Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt +0 −43
  327. Documentation/devicetree/bindings/powerpc/opal/oppanel-opal.txt +14 −0
  328. Documentation/devicetree/bindings/pwm/brcm,iproc-pwm.txt +21 −0
  329. Documentation/devicetree/bindings/pwm/cirrus,clps711x-pwm.txt +2 −3
  330. Documentation/devicetree/bindings/pwm/google,cros-ec-pwm.txt +23 −0
  331. Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt +8 −4
  332. Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt +4 −0
  333. Documentation/devicetree/bindings/pwm/pwm-tiecap.txt +29 −9
  334. Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt +29 −9
  335. Documentation/devicetree/bindings/pwm/pwm-tipwmss.txt +31 −2
  336. Documentation/devicetree/bindings/pwm/renesas,pwm-rcar.txt +1 −0
  337. Documentation/devicetree/bindings/pwm/st,stmpe-pwm.txt +18 −0
  338. Documentation/devicetree/bindings/regulator/pwm-regulator.txt +19 −0
  339. Documentation/devicetree/bindings/reserved-memory/ramoops.txt +4 −4
  340. Documentation/devicetree/bindings/reset/amlogic,meson-reset.txt +18 −0
  341. Documentation/devicetree/bindings/reset/hisilicon,hi6220-reset.txt +3 −1
  342. Documentation/devicetree/bindings/reset/ti-syscon-reset.txt +91 −0
  343. Documentation/devicetree/bindings/rng/amlogic,meson-rng.txt +14 −0
  344. Documentation/devicetree/bindings/rtc/rtc-opal.txt +1 −1
  345. Documentation/devicetree/bindings/serial/cirrus,clps711x-uart.txt +2 −2
  346. Documentation/devicetree/bindings/serial/mtk-uart.txt +1 −0
  347. Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm.txt +0 −0
  348. Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm/brg.txt +0 −0
  349. Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm/i2c.txt +0 −0
  350. Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm/pic.txt +0 −0
  351. Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm/usb.txt +0 −0
  352. Documentation/devicetree/bindings/soc/fsl/cpm_qe/gpio.txt +0 −0
  353. Documentation/devicetree/bindings/soc/fsl/cpm_qe/network.txt +124 −0
  354. Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe.txt +52 −0
  355. Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/firmware.txt +0 −0
  356. Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/par_io.txt +0 −0
  357. Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/pincfg.txt +0 −0
  358. Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/ucc.txt +0 −0
  359. Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/usb.txt +0 −0
  360. Documentation/devicetree/bindings/soc/fsl/cpm_qe/serial.txt +0 −0
  361. Documentation/devicetree/bindings/soc/fsl/cpm_qe/uqe_serial.txt +17 −0
  362. Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.txt +2 −2
  363. Documentation/devicetree/bindings/soc/qcom/qcom,smsm.txt +2 −2
  364. Documentation/devicetree/bindings/soc/qcom/qcom,wcnss.txt +116 −0
  365. Documentation/devicetree/bindings/sound/adi,adau17x1.txt +8 −0
  366. Documentation/devicetree/bindings/sound/adi,adau7002.txt +19 −0
  367. Documentation/devicetree/bindings/sound/brcm,cygnus-audio.txt +67 −0
  368. Documentation/devicetree/bindings/sound/bt-sco.txt +1 −1
  369. Documentation/devicetree/bindings/sound/cs35l33.txt +126 −0
  370. Documentation/devicetree/bindings/sound/cs53l30.txt +44 −0
  371. Documentation/devicetree/bindings/sound/designware-i2s.txt +4 −0
  372. Documentation/devicetree/bindings/sound/fsl-asoc-card.txt +1 −1
  373. Documentation/devicetree/bindings/sound/max98504.txt +44 −0
  374. Documentation/devicetree/bindings/sound/max9860.txt +28 −0
  375. Documentation/devicetree/bindings/sound/mt2701-afe-pcm.txt +150 −0
  376. Documentation/devicetree/bindings/sound/mt2701-cs42448.txt +43 −0
  377. Documentation/devicetree/bindings/sound/mt8173-rt5650.txt +8 −2
  378. Documentation/devicetree/bindings/sound/omap-mcpdm.txt +10 −0
  379. Documentation/devicetree/bindings/sound/renesas,rsnd.txt +2 −0
  380. Documentation/devicetree/bindings/sound/rockchip-i2s.txt +5 −0
  381. Documentation/devicetree/bindings/sound/rt5514.txt +5 −0
  382. Documentation/devicetree/bindings/sound/samsung,odroidx2-max98090.txt +0 −35
  383. Documentation/devicetree/bindings/sound/sgtl5000.txt +9 −9
  384. Documentation/devicetree/bindings/sound/st,sti-asoc-card.txt +10 −10
  385. Documentation/devicetree/bindings/sound/sun4i-i2s.txt +34 −0
  386. Documentation/devicetree/bindings/timer/cirrus,clps711x-timer.txt +3 −3
  387. Documentation/devicetree/bindings/usb/atmel-usb.txt +7 −7
  388. Documentation/devicetree/bindings/usb/nvidia,tegra124-xusb.txt +4 −4
  389. Documentation/devicetree/bindings/vendor-prefixes.txt +2 −0
  390. Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt +16 −0
  391. Documentation/devicetree/bindings/watchdog/meson-gxbb-wdt.txt +16 −0
  392. Documentation/devicetree/bindings/watchdog/qcom-wdt.txt +4 −0
  393. Documentation/devicetree/bindings/watchdog/renesas-wdt.txt +5 −1
  394. Documentation/dontdiff +1 −0
  395. Documentation/driver-model/devres.txt +7 −0
  396. Documentation/filesystems/Locking +1 −1
  397. Documentation/filesystems/nilfs2.txt +2 −1
  398. Documentation/filesystems/orangefs.txt +46 −4
  399. Documentation/filesystems/porting +7 −0
  400. Documentation/filesystems/tmpfs.txt +1 −1
  401. Documentation/filesystems/vfs.txt +1 −1
  402. Documentation/gcc-plugins.txt +87 −0
  403. Documentation/gpu/drm-internals.rst +381 −0
  404. Documentation/gpu/drm-kms-helpers.rst +260 −0
  405. Documentation/gpu/drm-kms.rst +653 −0
  406. Documentation/gpu/drm-mm.rst +454 −0
  407. Documentation/gpu/drm-uapi.rst +111 −0
  408. Documentation/gpu/i915.rst +347 −0
  409. Documentation/gpu/index.rst +14 −0
  410. Documentation/gpu/introduction.rst +51 −0
  411. Documentation/gpu/kms-properties.csv +129 −0
  412. Documentation/gpu/vga-switcheroo.rst +98 −0
  413. Documentation/index.rst +1 −0
  414. Documentation/ioctl/ioctl-number.txt +1 −1
  415. Documentation/kernel-parameters.txt +36 −2
  416. Documentation/kernel-per-CPU-kthreads.txt +1 −1
  417. Documentation/mmc/mmc-dev-attrs.txt +2 −0
  418. Documentation/module-signing.txt +6 −0
  419. Documentation/ramoops.txt +27 −11
  420. Documentation/rapidio/mport_cdev.txt +1 −2
  421. Documentation/rapidio/rio_cm.txt +119 −0
  422. Documentation/rapidio/tsi721.txt +26 −0
  423. Documentation/scheduler/sched-deadline.txt +1 −1
  424. Documentation/scheduler/sched-design-CFS.txt +1 −1
  425. Documentation/scheduler/sched-rt-group.txt +1 −1
  426. Documentation/sound/alsa/soc/machine.txt +1 −1
  427. Documentation/sound/alsa/timestamping.txt +6 −6
  428. Documentation/sysctl/kernel.txt +14 −0
  429. Documentation/virtual/kvm/api.txt +106 −9
  430. Documentation/virtual/kvm/devices/arm-vgic.txt +19 −6
  431. Documentation/virtual/kvm/devices/vm.txt +86 −1
  432. Documentation/virtual/kvm/locking.txt +2 −2
  433. Documentation/vm/numa +2 −2
  434. Documentation/vm/numa_memory_policy.txt +1 −1
  435. Documentation/vm/page_migration +1 −1
  436. Documentation/vm/unevictable-lru.txt +1 −1
  437. Documentation/watchdog/hpwdt.txt +2 −3
  438. Documentation/watchdog/src/watchdog-test.c +23 −16
  439. Documentation/watchdog/watchdog-kernel-api.txt +7 −2
  440. Documentation/x86/x86_64/fake-numa-for-cpusets +2 −2
  441. MAINTAINERS +200 −33
  442. Makefile +19 −26
  443. arch/Kconfig +46 −0
  444. arch/alpha/boot/Makefile +1 −1
  445. arch/alpha/include/asm/dma-mapping.h +0 −2
  446. arch/alpha/include/asm/rtc.h +0 −1
  447. arch/alpha/include/asm/thread_info.h +0 −27
  448. arch/alpha/kernel/core_marvel.c +0 −1
  449. arch/alpha/kernel/machvec_impl.h +1 −1
  450. arch/alpha/kernel/pci-noop.c +1 −1
  451. arch/alpha/kernel/pci_iommu.c +6 −6
  452. arch/alpha/kernel/rtc.c +2 −4
  453. arch/arc/boot/dts/nsimosci.dts +11 −3
  454. arch/arc/boot/dts/nsimosci_hs.dts +11 −3
  455. arch/arc/boot/dts/nsimosci_hs_idu.dts +11 −3
  456. arch/arc/boot/dts/vdk_axs10x_mb.dtsi +9 −4
  457. arch/arc/boot/dts/vdk_hs38_smp.dts +1 −1
  458. arch/arc/configs/nsimosci_defconfig +2 −1
  459. arch/arc/configs/nsimosci_hs_defconfig +2 −1
  460. arch/arc/configs/nsimosci_hs_smp_defconfig +2 −1
  461. arch/arc/configs/vdk_hs38_smp_defconfig +2 −5
  462. arch/arc/mm/dma.c +6 −6
  463. arch/arc/mm/init.c +1 −1
  464. arch/arm/Kconfig +19 −33
  465. arch/arm/Kconfig.debug +48 −17
  466. arch/arm/Makefile +0 −1
  467. arch/arm/boot/dts/Makefile +35 −8
  468. arch/arm/boot/dts/aks-cdu.dts +1 −1
  469. arch/arm/boot/dts/am335x-bone-common.dtsi +6 −6
  470. arch/arm/boot/dts/am335x-boneblack.dts +11 −0
  471. arch/arm/boot/dts/am335x-evm.dts +1 −1
  472. arch/arm/boot/dts/am335x-evmsk.dts +1 −1
  473. arch/arm/boot/dts/am335x-icev2.dts +7 −0
  474. arch/arm/boot/dts/am33xx.dtsi +100 −26
  475. arch/arm/boot/dts/am3517-craneboard.dts +1 −1
  476. arch/arm/boot/dts/am4372.dtsi +92 −19
  477. arch/arm/boot/dts/am437x-gp-evm.dts +5 −1
  478. arch/arm/boot/dts/am437x-idk-evm.dts +1 −0
  479. arch/arm/boot/dts/am437x-sbc-t43.dts +1 −1
  480. arch/arm/boot/dts/am43x-epos-evm.dts +1 −1
  481. arch/arm/boot/dts/am43xx-clocks.dtsi +8 −0
  482. arch/arm/boot/dts/am57xx-sbc-am57x.dts +1 −1
  483. arch/arm/boot/dts/animeo_ip.dts +1 −10
  484. arch/arm/boot/dts/armada-388-clearfog.dts +0 −16
  485. arch/arm/boot/dts/at91-ariag25.dts +1 −10
  486. arch/arm/boot/dts/at91-cosino.dtsi +0 −9
  487. arch/arm/boot/dts/at91-foxg20.dts +2 −11
  488. arch/arm/boot/dts/at91-kizbox.dts +2 −2
  489. arch/arm/boot/dts/at91-qil_a9260.dts +2 −11
  490. arch/arm/boot/dts/at91-sam9_l9260.dts +121 −0
  491. arch/arm/boot/dts/at91-sama5d2_xplained.dts +32 −9
  492. arch/arm/boot/dts/at91-sama5d3_xplained.dts +1 −1
  493. arch/arm/boot/dts/at91-sama5d4_ma5d4.dtsi +7 −4
  494. arch/arm/boot/dts/at91-sama5d4_ma5d4evk.dts +1 −1
  495. arch/arm/boot/dts/at91-sama5d4_xplained.dts +2 −2
  496. arch/arm/boot/dts/at91-sama5d4ek.dts +0 −20
  497. arch/arm/boot/dts/at91-vinco.dts +1 −1
  498. arch/arm/boot/dts/at91rm9200.dtsi +1 −1
  499. arch/arm/boot/dts/at91sam9260.dtsi +6 −10
  500. arch/arm/boot/dts/at91sam9260ek.dts +211 −0
  501. arch/arm/boot/dts/at91sam9261.dtsi +1 −1
  502. arch/arm/boot/dts/at91sam9263.dtsi +1 −1
  503. arch/arm/boot/dts/at91sam9263ek.dts +1 −1
  504. arch/arm/boot/dts/at91sam9g20ek_common.dtsi +2 −2
  505. arch/arm/boot/dts/at91sam9g25ek.dts +26 −0
  506. arch/arm/boot/dts/at91sam9g45.dtsi +12 −16
  507. arch/arm/boot/dts/at91sam9n12.dtsi +1 −1
  508. arch/arm/boot/dts/at91sam9rl.dtsi +13 −17
  509. arch/arm/boot/dts/at91sam9rlek.dts +2 −2
  510. arch/arm/boot/dts/at91sam9x5.dtsi +14 −18
  511. arch/arm/boot/dts/at91sam9x5ek.dtsi +0 −33
  512. arch/arm/boot/dts/axp209.dtsi +1 −0
  513. arch/arm/boot/dts/axp22x.dtsi +12 −0
  514. arch/arm/boot/dts/axp809.dtsi +53 −0
  515. arch/arm/boot/dts/bcm-cygnus.dtsi +11 −0
  516. arch/arm/boot/dts/bcm-nsp.dtsi +54 −1
  517. arch/arm/boot/dts/bcm11351.dtsi +1 −1
  518. arch/arm/boot/dts/bcm21664.dtsi +1 −1
  519. arch/arm/boot/dts/bcm23550-sparrow.dts +80 −0
  520. arch/arm/boot/dts/bcm23550.dtsi +415 −0
  521. arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +1 −0
  522. arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts +1 −0
  523. arch/arm/boot/dts/bcm2835-rpi-b.dts +1 −0
  524. arch/arm/boot/dts/bcm2836-rpi-2-b.dts +1 −0
  525. arch/arm/boot/dts/bcm283x-rpi-smsc9512.dtsi +19 −0
  526. arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi +19 −0
  527. arch/arm/boot/dts/bcm283x.dtsi +2 −0
  528. arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts +4 −0
  529. arch/arm/boot/dts/bcm4708-netgear-r6250.dts +4 −0
  530. arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts +4 −0
  531. arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts +40 −0
  532. arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts +4 −0
  533. arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts +5 −1
  534. arch/arm/boot/dts/bcm5301x-nand-cs0-bch1.dtsi +15 −0
  535. arch/arm/boot/dts/bcm5301x-nand-cs0-bch8.dtsi +5 −11
  536. arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi +18 −0
  537. arch/arm/boot/dts/bcm5301x.dtsi +47 −0
  538. arch/arm/boot/dts/bcm953012er.dts +104 −0
  539. arch/arm/boot/dts/bcm958525xmc.dts +109 −0
  540. arch/arm/boot/dts/bcm958625hr.dts +111 −0
  541. arch/arm/boot/dts/compulab-sb-som.dtsi +1 −1
  542. arch/arm/boot/dts/dm814x.dtsi +1 −1
  543. arch/arm/boot/dts/dra7.dtsi +240 −2
  544. arch/arm/boot/dts/dra72-evm-common.dtsi +6 −6
  545. arch/arm/boot/dts/dra72x.dtsi +0 −16
  546. arch/arm/boot/dts/dra74x.dtsi +1 −24
  547. arch/arm/boot/dts/emev2-kzm9d.dts +14 −10
  548. arch/arm/boot/dts/emev2.dtsi +13 −13
  549. arch/arm/boot/dts/ep7209.dtsi +191 −0
  550. arch/arm/boot/dts/ep7211-edb7211.dts +100 −0
  551. arch/arm/boot/dts/ep7211.dtsi +12 −0
  552. arch/arm/boot/dts/ethernut5.dts +2 −2
  553. arch/arm/boot/dts/evk-pro3.dts +2 −2
  554. arch/arm/boot/dts/exynos-mfc-reserved-memory.dtsi +35 −0
  555. arch/arm/boot/dts/exynos3250-rinato.dts +0 −4
  556. arch/arm/boot/dts/exynos3250.dtsi +0 −1
  557. arch/arm/boot/dts/exynos4.dtsi +0 −1
  558. arch/arm/boot/dts/exynos4210-origen.dts +1 −6
  559. arch/arm/boot/dts/exynos4210-smdkv310.dts +1 −6
  560. arch/arm/boot/dts/exynos4412-odroid-common.dtsi +20 −9
  561. arch/arm/boot/dts/exynos4412-odroidu3.dts +18 −0
  562. arch/arm/boot/dts/exynos4412-odroidx.dts +11 −0
  563. arch/arm/boot/dts/exynos4412-odroidx2.dts +11 −0
  564. arch/arm/boot/dts/exynos4412-origen.dts +17 −6
  565. arch/arm/boot/dts/exynos4412-smdk4412.dts +1 −6
  566. arch/arm/boot/dts/exynos4412-trats2.dts +2 −2
  567. arch/arm/boot/dts/exynos5.dtsi +139 −76
  568. arch/arm/boot/dts/exynos5250-arndale.dts +1 −5
  569. arch/arm/boot/dts/exynos5250-smdk5250.dts +1 −5
  570. arch/arm/boot/dts/exynos5250-snow-common.dtsi +1 −1
  571. arch/arm/boot/dts/exynos5250-spring.dts +1 −5
  572. arch/arm/boot/dts/exynos5250.dtsi +832 −869
  573. arch/arm/boot/dts/exynos5410-odroidxu.dts +580 −0
  574. arch/arm/boot/dts/exynos5410-pinctrl.dtsi +210 −0
  575. arch/arm/boot/dts/exynos5410-smdk5410.dts +3 −3
  576. arch/arm/boot/dts/exynos5410.dtsi +214 −119
  577. arch/arm/boot/dts/exynos5420-arndale-octa.dts +1 −5
  578. arch/arm/boot/dts/exynos5420-peach-pit.dts +21 −11
  579. arch/arm/boot/dts/exynos5420-pinctrl.dtsi +6 −6
  580. arch/arm/boot/dts/exynos5420-smdk5420.dts +1 −5
  581. arch/arm/boot/dts/exynos5420.dtsi +1303 −1467
  582. arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi +0 −103
  583. arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi +92 −12
  584. arch/arm/boot/dts/exynos5422-odroidxu3-lite.dts +1 −34
  585. arch/arm/boot/dts/exynos5422-odroidxu3.dts +1 −34
  586. arch/arm/boot/dts/exynos54xx-odroidxu-leds.dtsi +50 −0
  587. arch/arm/boot/dts/exynos54xx.dtsi +199 −0
  588. arch/arm/boot/dts/exynos5800-peach-pi.dts +21 −11
  589. arch/arm/boot/dts/ge863-pro3.dtsi +0 −9
  590. arch/arm/boot/dts/hi3519-demb.dts +42 −0
  591. arch/arm/boot/dts/hi3519.dtsi +187 −0
  592. arch/arm/boot/dts/imx1-ads.dts +2 −2
  593. arch/arm/boot/dts/imx1-apf9328.dts +2 −2
  594. arch/arm/boot/dts/imx23-sansa.dts +207 −0
  595. arch/arm/boot/dts/imx23-xfi3.dts +179 −0
  596. arch/arm/boot/dts/imx23.dtsi +48 −0
  597. arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts +2 −2
  598. arch/arm/boot/dts/imx25-pdk.dts +1 −1
  599. arch/arm/boot/dts/imx25-pinfunc.h +318 −309
  600. arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi +1 −1
  601. arch/arm/boot/dts/imx27-eukrea-mbimxsd27-baseboard.dts +3 −3
  602. arch/arm/boot/dts/imx27-pdk.dts +1 −1
  603. arch/arm/boot/dts/imx27-phytec-phycard-s-rdk.dts +3 −3
  604. arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts +2 −2
  605. arch/arm/boot/dts/imx28-apf28dev.dts +1 −1
  606. arch/arm/boot/dts/imx28-cfa10049.dts +1 −1
  607. arch/arm/boot/dts/imx28-eukrea-mbmx28lc.dtsi +4 −0
  608. arch/arm/boot/dts/imx28-evk.dts +1 −1
  609. arch/arm/boot/dts/imx28-tx28.dts +1 −1
  610. arch/arm/boot/dts/imx28.dtsi +5 −0
  611. arch/arm/boot/dts/imx31-bug.dts +1 −1
  612. arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts +2 −2
  613. arch/arm/boot/dts/imx35-pdk.dts +1 −1
  614. arch/arm/boot/dts/imx51-babbage.dts +2 −2
  615. arch/arm/boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts +2 −2
  616. arch/arm/boot/dts/imx51-ts4800.dts +27 −0
  617. arch/arm/boot/dts/imx53-smd.dts +1 −1
  618. arch/arm/boot/dts/imx53-tqma53.dtsi +1 −1
  619. arch/arm/boot/dts/imx53-tx53.dtsi +3 −3
  620. arch/arm/boot/dts/imx6dl-riotboard.dts +1 −0
  621. arch/arm/boot/dts/imx6q-apalis-ixora.dts +2 −2
  622. arch/arm/boot/dts/imx6q-arm2.dts +2 −1
  623. arch/arm/boot/dts/imx6q-ba16.dtsi +1 −1
  624. arch/arm/boot/dts/imx6q-bx50v3.dtsi +6 −0
  625. arch/arm/boot/dts/imx6q-cm-fx6.dts +228 −53
  626. arch/arm/boot/dts/imx6q-h100.dts +395 −0
  627. arch/arm/boot/dts/imx6q-tbs2910.dts +1 −1
  628. arch/arm/boot/dts/imx6q-utilite-pro.dts +197 −0
  629. arch/arm/boot/dts/imx6qdl-apalis.dtsi +2 −2
  630. arch/arm/boot/dts/imx6qdl-apf6dev.dtsi +1 −1
  631. arch/arm/boot/dts/imx6qdl-aristainetos.dtsi +2 −2
  632. arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi +2 −2
  633. arch/arm/boot/dts/imx6qdl-microsom.dtsi +1 −1
  634. arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi +2 −1
  635. arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi +1 −0
  636. arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi +1 −0
  637. arch/arm/boot/dts/imx6qdl-sabreauto.dtsi +1 −0
  638. arch/arm/boot/dts/imx6qdl-sabrelite.dtsi +1 −0
  639. arch/arm/boot/dts/imx6qdl-sabresd.dtsi +18 −1
  640. arch/arm/boot/dts/imx6qdl-tx6.dtsi +3 −3
  641. arch/arm/boot/dts/imx6qdl-wandboard.dtsi +2 −1
  642. arch/arm/boot/dts/imx6qdl.dtsi +3 −1
  643. arch/arm/boot/dts/imx6sl-warp.dts +1 −1
  644. arch/arm/boot/dts/imx6sl.dtsi +7 −6
  645. arch/arm/boot/dts/imx6sx-nitrogen6sx.dts +1 −1
  646. arch/arm/boot/dts/imx6sx-sdb.dtsi +13 −1
  647. arch/arm/boot/dts/imx6sx.dtsi +6 −6
  648. arch/arm/boot/dts/imx6ul-14x14-evk.dts +62 −1
  649. arch/arm/boot/dts/imx6ul-pico-hobbit.dts +3 −3
  650. arch/arm/boot/dts/imx6ul-tx6ul-mainboard.dts +2 −2
  651. arch/arm/boot/dts/imx6ul-tx6ul.dtsi +3 −3
  652. arch/arm/boot/dts/imx6ul.dtsi +6 −3
  653. arch/arm/boot/dts/imx7-colibri-eval-v3.dtsi +148 −0
  654. arch/arm/boot/dts/imx7-colibri.dtsi +571 −0
  655. arch/arm/boot/dts/imx7d-cl-som-imx7.dts +0 −1
  656. arch/arm/boot/dts/imx7d-colibri-eval-v3.dts +66 −0
  657. arch/arm/boot/dts/imx7d-colibri.dtsi +54 −0
  658. arch/arm/boot/dts/imx7d-nitrogen7.dts +1 −2
  659. arch/arm/boot/dts/imx7d-pinfunc.h +1 −1
  660. arch/arm/boot/dts/imx7d-sdb.dts +130 −1
  661. arch/arm/boot/dts/imx7d.dtsi +48 −875
  662. arch/arm/boot/dts/imx7s-colibri-eval-v3.dts +51 −0
  663. arch/arm/boot/dts/imx7s-colibri.dtsi +50 −0
  664. arch/arm/boot/dts/imx7s.dtsi +933 −0
  665. arch/arm/boot/dts/keystone-k2e.dtsi +5 −2
  666. arch/arm/boot/dts/keystone-k2g-evm.dts +11 −0
  667. arch/arm/boot/dts/keystone-k2g.dtsi +8 −0
  668. arch/arm/boot/dts/keystone-k2l.dtsi +149 −0
  669. arch/arm/boot/dts/keystone.dtsi +13 −2
  670. arch/arm/boot/dts/logicpd-torpedo-37xx-devkit.dts +2 −2
  671. arch/arm/boot/dts/ls1021a.dtsi +1 −0
  672. arch/arm/boot/dts/meson8b.dtsi +7 −0
  673. arch/arm/boot/dts/mpa1600.dts +1 −10
  674. arch/arm/boot/dts/omap24xx-clocks.dtsi +1 −1
  675. arch/arm/boot/dts/omap3-beagle-xm.dts +5 −5
  676. arch/arm/boot/dts/omap3-beagle.dts +5 −5
  677. arch/arm/boot/dts/omap3-cm-t3x.dtsi +1 −1
  678. arch/arm/boot/dts/omap3-devkit8000-common.dtsi +6 −6
  679. arch/arm/boot/dts/omap3-devkit8000-lcd-common.dtsi +2 −2
  680. arch/arm/boot/dts/omap3-devkit8000-lcd43.dts +1 −1
  681. arch/arm/boot/dts/omap3-devkit8000-lcd70.dts +1 −1
  682. arch/arm/boot/dts/omap3-gta04.dtsi +66 −6
  683. arch/arm/boot/dts/omap3-ha-lcd.dts +1 −1
  684. arch/arm/boot/dts/omap3-igep0020-common.dtsi +4 −4
  685. arch/arm/boot/dts/omap3-n900.dts +12 −0
  686. arch/arm/boot/dts/omap3-overo-common-dvi.dtsi +4 −4
  687. arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi +1 −1
  688. arch/arm/boot/dts/omap3-overo-common-lcd43.dtsi +1 −1
  689. arch/arm/boot/dts/omap3-pandora-common.dtsi +1 −1
  690. arch/arm/boot/dts/omap3-sb-t35.dtsi +4 −4
  691. arch/arm/boot/dts/omap3-thunder.dts +1 −1
  692. arch/arm/boot/dts/omap3.dtsi +10 −0
  693. arch/arm/boot/dts/omap4-duovero-parlor.dts +1 −1
  694. arch/arm/boot/dts/omap4-duovero.dtsi +5 −0
  695. arch/arm/boot/dts/omap4-panda-common.dtsi +13 −8
  696. arch/arm/boot/dts/omap4-sdp.dts +9 −4
  697. arch/arm/boot/dts/omap4-var-om44customboard.dtsi +1 −1
  698. arch/arm/boot/dts/omap4-var-som-om44.dtsi +5 −0
  699. arch/arm/boot/dts/omap5-board-common.dtsi +9 −4
  700. arch/arm/boot/dts/omap5-cm-t54.dts +10 −5
  701. arch/arm/boot/dts/pm9g45.dts +0 −9
  702. arch/arm/boot/dts/pxa27x.dtsi +7 −0
  703. arch/arm/boot/dts/pxa2xx.dtsi +8 −0
  704. arch/arm/boot/dts/pxa3xx.dtsi +132 −1
  705. arch/arm/boot/dts/qcom-apq8060-dragonboard.dts +626 −0
  706. arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval-pins.dtsi +0 −0
  707. arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts +6 −4
  708. arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts +0 −6
  709. arch/arm/boot/dts/qcom-apq8064-pins.dtsi +40 −0
  710. arch/arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts +1 −43
  711. arch/arm/boot/dts/qcom-apq8064.dtsi +11 −2
  712. arch/arm/boot/dts/qcom-apq8074-dragonboard.dts +247 −0
  713. arch/arm/boot/dts/qcom-apq8084.dtsi +8 −0
  714. arch/arm/boot/dts/qcom-ipq4019.dtsi +7 −1
  715. arch/arm/boot/dts/qcom-ipq8064.dtsi +2 −1
  716. arch/arm/boot/dts/qcom-msm8660-surf.dts +11 −0
  717. arch/arm/boot/dts/qcom-msm8660.dtsi +154 −12
  718. arch/arm/boot/dts/qcom-msm8960.dtsi +2 −1
  719. arch/arm/boot/dts/qcom-msm8974-sony-xperia-honami.dts +4 −0
  720. arch/arm/boot/dts/qcom-msm8974.dtsi +24 −4
  721. arch/arm/boot/dts/qcom-pma8084.dtsi +14 −6
  722. arch/arm/boot/dts/r7s72100-genmai.dts +3 −3
  723. arch/arm/boot/dts/r8a73a4-ape6evm.dts +6 −6
  724. arch/arm/boot/dts/r8a73a4.dtsi +18 −16
  725. arch/arm/boot/dts/r8a7740-armadillo800eva.dts +10 −10
  726. arch/arm/boot/dts/r8a7740.dtsi +1 −1
  727. arch/arm/boot/dts/r8a7778-bockw.dts +4 −3
  728. arch/arm/boot/dts/r8a7778.dtsi +14 −14
  729. arch/arm/boot/dts/r8a7779-marzen.dts +5 −5
  730. arch/arm/boot/dts/r8a7790-lager.dts +15 −15
  731. arch/arm/boot/dts/r8a7790.dtsi +139 −98
  732. arch/arm/boot/dts/r8a7791-koelsch.dts +10 −10
  733. arch/arm/boot/dts/r8a7791-porter.dts +6 −6
  734. arch/arm/boot/dts/r8a7791.dtsi +132 −95
  735. arch/arm/boot/dts/r8a7792-blanche.dts +66 −0
  736. arch/arm/boot/dts/r8a7792.dtsi +385 −0
  737. arch/arm/boot/dts/r8a7793-gose.dts +9 −9
  738. arch/arm/boot/dts/r8a7793.dtsi +134 −79
  739. arch/arm/boot/dts/r8a7794-alt.dts +2 −2
  740. arch/arm/boot/dts/r8a7794-silk.dts +17 −5
  741. arch/arm/boot/dts/r8a7794.dtsi +82 −50
  742. arch/arm/boot/dts/rk3228-evb.dts +1 −1
  743. arch/arm/boot/dts/rk3229-evb.dts +90 −0
  744. arch/arm/boot/dts/rk322x.dtsi +116 −2
  745. arch/arm/boot/dts/rk3288-firefly.dtsi +15 −16
  746. arch/arm/boot/dts/rk3288-miqi.dts +13 −13
  747. arch/arm/boot/dts/rk3288-popmetal.dts +15 −16
  748. arch/arm/boot/dts/rk3288-rock2-som.dtsi +15 −16
  749. arch/arm/boot/dts/rk3288-veyron-analog-audio.dtsi +101 −0
  750. arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi +1 −0
  751. arch/arm/boot/dts/rk3288-veyron.dtsi +18 −13
  752. arch/arm/boot/dts/rk3288.dtsi +5 −0
  753. arch/arm/boot/dts/sama5d2.dtsi +21 −16
  754. arch/arm/boot/dts/sama5d3.dtsi +20 −24
  755. arch/arm/boot/dts/sama5d31ek.dts +1 −0
  756. arch/arm/boot/dts/sama5d33ek.dts +1 −0
  757. arch/arm/boot/dts/sama5d34ek.dts +1 −0
  758. arch/arm/boot/dts/sama5d35ek.dts +2 −0
  759. arch/arm/boot/dts/sama5d36ek.dts +2 −0
  760. arch/arm/boot/dts/sama5d3xcm.dtsi +0 −34
  761. arch/arm/boot/dts/sama5d3xmb.dtsi +0 −12
  762. arch/arm/boot/dts/sama5d3xmb_emac.dtsi +26 −0
  763. arch/arm/boot/dts/sama5d3xmb_gmac.dtsi +48 −0
  764. arch/arm/boot/dts/sama5d4.dtsi +20 −20
  765. arch/arm/boot/dts/sh73a0-kzm9g.dts +10 −9
  766. arch/arm/boot/dts/sh73a0.dtsi +1 −1
  767. arch/arm/boot/dts/socfpga_arria10.dtsi +13 −11
  768. arch/arm/boot/dts/socfpga_arria10_socdk.dtsi +6 −1
  769. arch/arm/boot/dts/ste-dbx5x0.dtsi +1 −0
  770. arch/arm/boot/dts/ste-href-tvk1281618.dtsi +43 −19
  771. arch/arm/boot/dts/ste-href.dtsi +0 −1
  772. arch/arm/boot/dts/ste-hrefv60plus.dtsi +120 −0
  773. arch/arm/boot/dts/ste-snowball.dts +83 −1
  774. arch/arm/boot/dts/stih410-clock.dtsi +9 −0
  775. arch/arm/boot/dts/sun4i-a10-a1000.dts +3 −1
  776. arch/arm/boot/dts/sun4i-a10-hackberry.dts +1 −0
  777. arch/arm/boot/dts/sun4i-a10-jesurun-q5.dts +1 −0
  778. arch/arm/boot/dts/sun4i-a10.dtsi +158 −69
  779. arch/arm/boot/dts/sun5i-a10s-auxtek-t004.dts +19 −0
  780. arch/arm/boot/dts/sun5i-a10s-mk802.dts +32 −0
  781. arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts +7 −0
  782. arch/arm/boot/dts/sun5i-a10s-wobo-i5.dts +9 −1
  783. arch/arm/boot/dts/sun5i-a10s.dtsi +14 −0
  784. arch/arm/boot/dts/sun5i-a13-difrnce-dit4350.dts +1 −177
  785. arch/arm/boot/dts/sun5i-a13-q8-tablet.dts +33 −7
  786. arch/arm/boot/dts/sun5i-a13-utoo-p66.dts +21 −159
  787. arch/arm/boot/dts/sun5i-a13.dtsi +122 −0
  788. arch/arm/boot/dts/sun5i-r8.dtsi +5 −115
  789. arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi +33 −3
  790. arch/arm/boot/dts/sun5i.dtsi +1 −1
  791. arch/arm/boot/dts/sun6i-a31-m9.dts +94 −2
  792. arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts +94 −2
  793. arch/arm/boot/dts/sun7i-a20-bananapi-m1-plus.dts +229 −0
  794. arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts +67 −13
  795. arch/arm/boot/dts/sun7i-a20.dtsi +323 −151
  796. arch/arm/boot/dts/sun8i-a23-inet86dz.dts +58 −0
  797. arch/arm/boot/dts/sun8i-a23-polaroid-mid2407pxe03.dts +50 −0
  798. arch/arm/boot/dts/sun8i-a23-polaroid-mid2809pxe04.dts +1 −194
  799. arch/arm/boot/dts/sun8i-a23-q8-tablet.dts +0 −15
  800. arch/arm/boot/dts/sun8i-a33-ga10h-v1.1.dts +1 −76
  801. arch/arm/boot/dts/sun8i-a33-q8-tablet.dts +0 −15
  802. arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts +195 −0
  803. arch/arm/boot/dts/sun8i-h3.dtsi +14 −7
  804. arch/arm/boot/dts/sun8i-q8-common.dtsi +6 −133
  805. arch/arm/boot/dts/sun8i-r16-parrot.dts +351 −0
  806. arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi +216 −0
  807. arch/arm/boot/dts/sun9i-a80-cubieboard4.dts +145 −19
  808. arch/arm/boot/dts/sun9i-a80-optimus.dts +163 −32
  809. arch/arm/boot/dts/sunxi-reference-design-tablet.dtsi +0 −0
  810. arch/arm/boot/dts/tegra114-dalmore.dts +1 −1
  811. arch/arm/boot/dts/tegra114-roth.dts +2 −2
  812. arch/arm/boot/dts/tegra114-tn7.dts +1 −1
  813. arch/arm/boot/dts/tegra124-apalis-emc.dtsi +1502 −0
  814. arch/arm/boot/dts/tegra124-apalis-eval.dts +284 −0
  815. arch/arm/boot/dts/tegra124-apalis.dtsi +2100 −0
  816. arch/arm/boot/dts/tegra124-jetson-tk1-emc.dtsi +3 −3
  817. arch/arm/boot/dts/tegra124-jetson-tk1.dts +42 −46
  818. arch/arm/boot/dts/tegra124-nyan-big-emc.dtsi +3 −3
  819. arch/arm/boot/dts/tegra124-nyan-big.dts +2 −2
  820. arch/arm/boot/dts/tegra124-nyan-blaze-emc.dtsi +3 −3
  821. arch/arm/boot/dts/tegra124-nyan-blaze.dts +1 −1
  822. arch/arm/boot/dts/tegra124-nyan.dtsi +30 −30
  823. arch/arm/boot/dts/tegra124-venice2.dts +35 −35
  824. arch/arm/boot/dts/tegra124.dtsi +65 −60
  825. arch/arm/boot/dts/tegra20-colibri-512.dtsi +1 −1
  826. arch/arm/boot/dts/tegra20-harmony.dts +1 −1
  827. arch/arm/boot/dts/tegra20-paz00.dts +1 −1
  828. arch/arm/boot/dts/tegra20-seaboard.dts +1 −1
  829. arch/arm/boot/dts/tegra20-tamonten.dtsi +1 −1
  830. arch/arm/boot/dts/tegra20-trimslice.dts +1 −1
  831. arch/arm/boot/dts/tegra20-ventana.dts +1 −1
  832. arch/arm/boot/dts/tegra20-whistler.dts +1 −1
  833. arch/arm/boot/dts/tegra30-apalis.dtsi +4 −3
  834. arch/arm/boot/dts/tegra30-beaver.dts +1 −1
  835. arch/arm/boot/dts/tegra30-cardhu.dtsi +1 −1
  836. arch/arm/boot/dts/tegra30-colibri-eval-v3.dts +1 −1
  837. arch/arm/boot/dts/tegra30-colibri.dtsi +1 −1
  838. arch/arm/boot/dts/tny_a9260_common.dtsi +0 −9
  839. arch/arm/boot/dts/tny_a9263.dts +1 −10
  840. arch/arm/boot/dts/uniphier-common32.dtsi +9 −3
  841. arch/arm/boot/dts/uniphier-ph1-ld4.dtsi +1 −1
  842. arch/arm/boot/dts/uniphier-ph1-ld6b.dtsi +1 −1
  843. arch/arm/boot/dts/uniphier-ph1-pro4.dtsi +1 −1
  844. arch/arm/boot/dts/uniphier-ph1-pro5.dtsi +1 −1
  845. arch/arm/boot/dts/uniphier-ph1-sld8.dtsi +1 −1
  846. arch/arm/boot/dts/uniphier-pinctrl.dtsi +5 −0
  847. arch/arm/boot/dts/uniphier-proxstream2-gentil.dts +4 −4
  848. arch/arm/boot/dts/uniphier-proxstream2-vodka.dts +4 −4
  849. arch/arm/boot/dts/uniphier-proxstream2.dtsi +1 −1
  850. arch/arm/boot/dts/usb_a9260_common.dtsi +2 −11
  851. arch/arm/boot/dts/usb_a9263.dts +1 −10
  852. arch/arm/boot/dts/usb_a9g20_common.dtsi +3 −2
  853. arch/arm/common/dmabounce.c +2 −2
  854. arch/arm/configs/bcm_defconfig +0 −141
  855. arch/arm/configs/exynos_defconfig +17 −12
  856. arch/arm/configs/imx_v6_v7_defconfig +3 −1
  857. arch/arm/configs/keystone_defconfig +1 −0
  858. arch/arm/configs/lpc18xx_defconfig +2 −0
  859. arch/arm/configs/multi_v4t_defconfig +106 −0
  860. arch/arm/configs/multi_v5_defconfig +53 −1
  861. arch/arm/configs/multi_v7_defconfig +47 −5
  862. arch/arm/configs/omap2plus_defconfig +4 −1
  863. arch/arm/configs/qcom_defconfig +8 −0
  864. arch/arm/configs/sama5_defconfig +3 −0
  865. arch/arm/configs/shmobile_defconfig +1 −0
  866. arch/arm/configs/socfpga_defconfig +15 −1
  867. arch/arm/configs/sunxi_defconfig +2 −0
  868. arch/arm/include/asm/dma-mapping.h +6 −7
  869. arch/arm/include/asm/kexec.h +24 −0
  870. arch/arm/include/asm/kvm_asm.h +2 −0
  871. arch/arm/include/asm/kvm_host.h +9 −18
  872. arch/arm/include/asm/kvm_hyp.h +0 −3
  873. arch/arm/include/asm/kvm_mmu.h +2 −13
  874. arch/arm/include/asm/mach/pci.h +1 −0
  875. arch/arm/include/asm/pgtable.h +3 −1
  876. arch/arm/include/asm/uaccess.h +9 −2
  877. arch/arm/include/asm/virt.h +4 −0
  878. arch/arm/include/asm/xen/page-coherent.h +6 −10
  879. arch/arm/include/debug/at91.S +1 −9
  880. arch/arm/include/debug/clps711x.S +2 −2
  881. arch/arm/include/debug/exynos.S +5 −1
  882. arch/arm/include/debug/samsung.S +8 −0
  883. arch/arm/kernel/bios32.c +20 −25
  884. arch/arm/kernel/machine_kexec.c +1 −1
  885. arch/arm/kernel/setup.c +37 −2
  886. arch/arm/kernel/vmlinux.lds.S +1 −1
  887. arch/arm/kvm/Kconfig +2 −7
  888. arch/arm/kvm/Makefile +1 −6
  889. arch/arm/kvm/arm.c +18 −28
  890. arch/arm/kvm/emulate.c +1 −1
  891. arch/arm/kvm/guest.c +1 −1
  892. arch/arm/kvm/init.S +20 −36
  893. arch/arm/kvm/irq.h +19 −0
  894. arch/arm/kvm/mmu.c +63 −79
  895. arch/arm/kvm/reset.c +1 −1
  896. arch/arm/mach-at91/Kconfig +1 −1
  897. arch/arm/mach-at91/pm.c +3 −2
  898. arch/arm/mach-bcm/Kconfig +13 −6
  899. arch/arm/mach-bcm/Makefile +4 −1
  900. arch/arm/mach-bcm/board_bcm21664.c +0 −43
  901. arch/arm/mach-bcm/board_bcm23550.c +25 −0
  902. arch/arm/mach-bcm/kona_l2_cache.c +1 −0
  903. arch/arm/mach-bcm/platsmp.c +95 −79
  904. arch/arm/mach-berlin/Kconfig +1 −1
  905. arch/arm/mach-clps711x/Kconfig +15 −38
  906. arch/arm/mach-clps711x/Makefile +1 −13
  907. arch/arm/mach-clps711x/Makefile.boot +0 −5
  908. arch/arm/mach-clps711x/board-dt.c +82 −0
  909. arch/arm/mach-clps711x/common.c +2 −2
  910. arch/arm/mach-clps711x/include/mach/clps711x.h +0 −204
  911. arch/arm/mach-clps711x/include/mach/hardware.h +0 −53
  912. arch/arm/mach-clps711x/include/mach/uncompress.h +0 −55
  913. arch/arm/mach-davinci/board-dm355-evm.c +1 −3
  914. arch/arm/mach-davinci/board-dm365-evm.c +2 −6
  915. arch/arm/mach-davinci/board-dm644x-evm.c +1 −3
  916. arch/arm/mach-davinci/board-neuros-osd2.c +1 −3
  917. arch/arm/mach-davinci/da850.c +16 −0
  918. arch/arm/mach-davinci/davinci.h +4 −4
  919. arch/arm/mach-davinci/dm355.c +1 −2
  920. arch/arm/mach-davinci/dm365.c +2 −4
  921. arch/arm/mach-davinci/dm644x.c +1 −2
  922. arch/arm/mach-davinci/psc.h +2 −0
  923. arch/arm/mach-digicolor/Kconfig +1 −1
  924. arch/arm/mach-ep93xx/ts72xx.c +1 −1
  925. arch/arm/mach-exynos/Kconfig +2 −1
  926. arch/arm/mach-exynos/Makefile +0 −3
  927. arch/arm/mach-exynos/common.h +2 −3
  928. arch/arm/mach-exynos/exynos.c +1 −19
  929. arch/arm/mach-exynos/firmware.c +9 −9
  930. arch/arm/mach-exynos/headsmp.S +3 −0
  931. arch/arm/mach-exynos/mfc.h +0 −16
  932. arch/arm/mach-exynos/platsmp.c +2 −2
  933. arch/arm/mach-exynos/pm.c +3 −3
  934. arch/arm/mach-exynos/s5p-dev-mfc.c +0 −93
  935. arch/arm/mach-exynos/suspend.c +6 −6
  936. arch/arm/mach-hisi/hisilicon.c +0 −28
  937. arch/arm/mach-hisi/platsmp.c +2 −2
  938. arch/arm/mach-imx/Kconfig +1 −5
  939. arch/arm/mach-imx/Makefile +2 −2
  940. arch/arm/mach-imx/avic.c +8 −11
  941. arch/arm/mach-imx/common.h +2 −1
  942. arch/arm/mach-imx/cpu-imx5.c +0 −8
  943. arch/arm/mach-imx/cpu.c +0 −2
  944. arch/arm/mach-imx/cpuidle-imx6q.c +20 −0
  945. arch/arm/mach-imx/devices/Kconfig +0 −4
  946. arch/arm/mach-imx/devices/devices.c +3 −0
  947. arch/arm/mach-imx/devices/platform-gpio-mxc.c +1 −0
  948. arch/arm/mach-imx/devices/platform-mxc_rnga.c +0 −53
  949. arch/arm/mach-imx/eukrea-baseboards.h +0 −42
  950. arch/arm/mach-imx/imx27-dt.c +1 −0
  951. arch/arm/mach-imx/imx31-dt.c +12 −0
  952. arch/arm/mach-imx/imx35-dt.c +3 −7
  953. arch/arm/mach-imx/irq-common.c +4 −2
  954. arch/arm/mach-imx/mach-imx50.c +0 −1
  955. arch/arm/mach-imx/mach-imx51.c +2 −1
  956. arch/arm/mach-imx/mach-imx53.c +0 −1
  957. arch/arm/mach-imx/mach-imx6q.c +3 −1
  958. arch/arm/mach-imx/mach-imx6sl.c +2 −0
  959. arch/arm/mach-imx/mach-imx6sx.c +2 −0
  960. arch/arm/mach-imx/mach-imx7d.c +1 −0
  961. arch/arm/mach-imx/mm-imx1.c +1 −1
  962. arch/arm/mach-imx/mm-imx27.c +2 −0
  963. arch/arm/mach-imx/mm-imx3.c +28 −4
  964. arch/arm/mach-imx/mxc.h +0 −101
  965. arch/arm/mach-imx/pm-imx27.c +1 −7
  966. arch/arm/mach-imx/pm-imx3.c +0 −38
  967. arch/arm/mach-imx/system.c +25 −33
  968. arch/arm/mach-imx/tzic.c +8 −8
  969. arch/arm/mach-integrator/Kconfig +2 −2
  970. arch/arm/mach-integrator/impd1.c +2 −2
  971. arch/arm/mach-keystone/Kconfig +1 −1
  972. arch/arm/mach-keystone/pm_domain.c +2 −0
  973. arch/arm/mach-meson/Kconfig +4 −1
  974. arch/arm/mach-mmp/Kconfig +1 −1
  975. arch/arm/mach-moxart/Kconfig +1 −1
  976. arch/arm/mach-mv78xx0/Kconfig +1 −1
  977. arch/arm/mach-mv78xx0/common.c +1 −1
  978. arch/arm/mach-mvebu/Kconfig +2 −2
  979. arch/arm/mach-mvebu/coherency.h +1 −0
  980. arch/arm/mach-mvebu/cpu-reset.c +2 −0
  981. arch/arm/mach-mvebu/kirkwood-pm.c +2 −2
  982. arch/arm/mach-mvebu/kirkwood.c +1 −1
  983. arch/arm/mach-mvebu/pm.c +1 −0
  984. arch/arm/mach-mvebu/pmsu.c +2 −1
  985. arch/arm/mach-mvebu/system-controller.c +1 −1
  986. arch/arm/mach-mxs/Kconfig +1 −1
  987. arch/arm/mach-nomadik/Kconfig +1 −1
  988. arch/arm/mach-omap1/ams-delta-fiq.c +1 −1
  989. arch/arm/mach-omap1/include/mach/mtd-xip.h +1 −1
  990. arch/arm/mach-omap2/Kconfig +1 −1
  991. arch/arm/mach-omap2/Makefile +6 −3
  992. arch/arm/mach-omap2/board-ldp.c +2 −1
  993. arch/arm/mach-omap2/board-rx51-peripherals.c +0 −5
  994. arch/arm/mach-omap2/board-rx51-video.c +2 −2
  995. arch/arm/mach-omap2/clockdomain.c +24 −12
  996. arch/arm/mach-omap2/clockdomain.h +2 −0
  997. arch/arm/mach-omap2/cm33xx.c +3 −0
  998. arch/arm/mach-omap2/cm3xxx.c +1 −1
  999. arch/arm/mach-omap2/common.h +6 −2
  1000. arch/arm/mach-omap2/cpuidle44xx.c +1 −1
  1001. arch/arm/mach-omap2/display.c +1 −1
  1002. arch/arm/mach-omap2/display.h +5 −0
  1003. arch/arm/mach-omap2/dss-common.c +1 −1
  1004. arch/arm/mach-omap2/io.c +3 −0
  1005. arch/arm/mach-omap2/mcbsp.c +17 −14
  1006. arch/arm/mach-omap2/mux34xx.c +2 −2
  1007. arch/arm/mach-omap2/omap-headsmp.S +14 −4
  1008. arch/arm/mach-omap2/omap-hotplug.c +6 −0
  1009. arch/arm/mach-omap2/omap-mpuss-lowpower.c +26 −5
  1010. arch/arm/mach-omap2/omap-smp.c +71 −27
  1011. arch/arm/mach-omap2/omap4-common.c +7 −9
  1012. arch/arm/mach-omap2/omap_device.c +18 −3
  1013. arch/arm/mach-omap2/omap_hwmod.c +62 −20
  1014. arch/arm/mach-omap2/omap_hwmod_33xx_43xx_common_data.h +0 −18
  1015. arch/arm/mach-omap2/omap_hwmod_33xx_43xx_interconnect_data.c +0 −64
  1016. arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c +1 −84
  1017. arch/arm/mach-omap2/omap_hwmod_33xx_data.c +0 −9
  1018. arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +4 −20
  1019. arch/arm/mach-omap2/omap_hwmod_43xx_data.c +0 −54
  1020. arch/arm/mach-omap2/omap_hwmod_7xx_data.c +0 −41
  1021. arch/arm/mach-omap2/omap_hwmod_81xx_data.c +1 −1
  1022. arch/arm/mach-omap2/pdata-quirks.c +19 −9
  1023. arch/arm/mach-omap2/pm.c +1 −7
  1024. arch/arm/mach-omap2/powerdomain.c +6 −14
  1025. arch/arm/mach-omap2/prcm43xx.h +1 −0
  1026. arch/arm/mach-omap2/prm33xx.h +0 −2
  1027. arch/arm/mach-omap2/sdrc.h +2 −2
  1028. arch/arm/mach-omap2/timer.c +2 −1
  1029. arch/arm/mach-orion5x/Kconfig +1 −1
  1030. arch/arm/mach-orion5x/irq.c +1 −1
  1031. arch/arm/mach-orion5x/ts78xx-setup.c +1 −1
  1032. arch/arm/mach-oxnas/Kconfig +2 −2
  1033. arch/arm/mach-picoxcell/Kconfig +1 −1
  1034. arch/arm/mach-prima2/Kconfig +1 −1
  1035. arch/arm/mach-pxa/cm-x270.c +1 −1
  1036. arch/arm/mach-pxa/cm-x300.c +1 −1
  1037. arch/arm/mach-pxa/em-x270.c +1 −1
  1038. arch/arm/mach-qcom/Kconfig +4 −0
  1039. arch/arm/mach-qcom/board.c +1 −0
  1040. arch/arm/mach-rockchip/Kconfig +1 −1
  1041. arch/arm/mach-s3c24xx/Kconfig +1 −1
  1042. arch/arm/mach-s3c24xx/include/mach/regs-gpio.h +1 −1
  1043. arch/arm/mach-s3c24xx/iotiming-s3c2410.c +1 −1
  1044. arch/arm/mach-s3c24xx/mach-n30.c +1 −1
  1045. arch/arm/mach-s3c24xx/mach-osiris-dvs.c +1 −1
  1046. arch/arm/mach-s3c24xx/pll-s3c2410.c +2 −1
  1047. arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c +1 −0
  1048. arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c +1 −0
  1049. arch/arm/mach-s3c64xx/Kconfig +1 −1
  1050. arch/arm/mach-s3c64xx/common.h +1 −0
  1051. arch/arm/mach-s3c64xx/include/mach/map.h +1 −1
  1052. arch/arm/mach-s3c64xx/mach-smartq.c +1 −0
  1053. arch/arm/mach-s5pv210/Kconfig +1 −1
  1054. arch/arm/mach-shmobile/Kconfig +5 −1
  1055. arch/arm/mach-shmobile/Makefile +1 −0
  1056. arch/arm/mach-shmobile/common.h +1 −0
  1057. arch/arm/mach-shmobile/platsmp-apmu.c +89 −5
  1058. arch/arm/mach-shmobile/platsmp.c +6 −0
  1059. arch/arm/mach-shmobile/pm-r8a7779.c +1 −5
  1060. arch/arm/mach-shmobile/pm-rcar-gen2.c +5 −14
  1061. arch/arm/mach-shmobile/pm-rmobile.c +1 −1
  1062. arch/arm/mach-shmobile/setup-r8a7790.c +1 −0
  1063. arch/arm/mach-shmobile/setup-r8a7791.c +1 −0
  1064. arch/arm/mach-shmobile/setup-r8a7792.c +35 −0
  1065. arch/arm/mach-shmobile/setup-rcar-gen2.c +24 −21
  1066. arch/arm/mach-spear/Kconfig +1 −1
  1067. arch/arm/mach-sti/Kconfig +1 −1
  1068. arch/arm/mach-sti/board-dt.c +10 −1
  1069. arch/arm/mach-sunxi/Kconfig +1 −1
  1070. arch/arm/mach-tango/Makefile +1 −0
  1071. arch/arm/mach-tango/platsmp.c +35 −0
  1072. arch/arm/mach-tango/pm.c +32 −0
  1073. arch/arm/mach-tango/smc.h +4 −1
  1074. arch/arm/mach-tegra/Kconfig +1 −1
  1075. arch/arm/mach-tegra/common.h +22 −0
  1076. arch/arm/mach-tegra/cpuidle-tegra114.c +1 −0
  1077. arch/arm/mach-tegra/cpuidle-tegra20.c +1 −0
  1078. arch/arm/mach-tegra/cpuidle-tegra30.c +1 −0
  1079. arch/arm/mach-tegra/cpuidle.h +2 −0
  1080. arch/arm/mach-tegra/hotplug.c +1 −0
  1081. arch/arm/mach-tegra/irq.c +1 −0
  1082. arch/arm/mach-tegra/pm.h +1 −1
  1083. arch/arm/mach-tegra/tegra.c +3 −21
  1084. arch/arm/mach-u300/Kconfig +1 −1
  1085. arch/arm/mach-uniphier/Makefile +0 −1
  1086. arch/arm/mach-uniphier/platsmp.c +5 −13
  1087. arch/arm/mach-uniphier/uniphier.c +0 −30
  1088. arch/arm/mach-ux500/Kconfig +1 −1
  1089. arch/arm/mach-ux500/Makefile +2 −4
  1090. arch/arm/mach-ux500/board-mop500-regulators.c +0 −1065
  1091. arch/arm/mach-ux500/board-mop500-regulators.h +0 −24
  1092. arch/arm/mach-ux500/cache-l2x0.c +0 −67
  1093. arch/arm/mach-ux500/cpu-db8500.c +88 −51
  1094. arch/arm/mach-ux500/cpu.c +0 −148
  1095. arch/arm/mach-ux500/id.c +0 −116
  1096. arch/arm/mach-ux500/id.h +0 −144
  1097. arch/arm/mach-ux500/platsmp.c +0 −1
  1098. arch/arm/mach-ux500/setup.h +0 −12
  1099. arch/arm/mach-vexpress/Kconfig +1 −1
  1100. arch/arm/mach-vexpress/hotplug.c +2 −0
  1101. arch/arm/mach-vexpress/spc.c +3 −3
  1102. arch/arm/mach-vt8500/Kconfig +1 −1
  1103. arch/arm/mm/dma-mapping.c +63 −66
  1104. arch/arm/plat-iop/setup.c +2 −2
  1105. arch/arm/plat-samsung/cpu.c +5 −5
  1106. arch/arm/plat-samsung/include/plat/cpu-freq-core.h +1 −1
  1107. arch/arm/plat-samsung/include/plat/cpu.h +1 −0
  1108. arch/arm/plat-samsung/include/plat/fb-s3c2410.h +1 −1
  1109. arch/arm/plat-samsung/include/plat/gpio-cfg.h +1 −1
  1110. arch/arm/plat-samsung/pm-check.c +1 −1
  1111. arch/arm/plat-samsung/pm-common.c +4 −4
  1112. arch/arm/plat-samsung/watchdog-reset.c +1 −1
  1113. arch/arm/plat-versatile/platsmp.c +2 −0
  1114. arch/arm/xen/mm.c +4 −4
  1115. arch/arm64/Kconfig +6 −2
  1116. arch/arm64/Kconfig.platforms +28 −0
  1117. arch/arm64/Makefile +1 −1
  1118. arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +20 −0
  1119. arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi +9 −0
  1120. arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi +3 −0
  1121. arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi +169 −1
  1122. arch/arm64/boot/dts/apm/apm-shadowcat.dtsi +34 −34
  1123. arch/arm64/boot/dts/apm/apm-storm.dtsi +17 −27
  1124. arch/arm64/boot/dts/arm/juno-base.dtsi +357 −0
  1125. arch/arm64/boot/dts/arm/juno-r1.dts +40 −0
  1126. arch/arm64/boot/dts/arm/juno-r2.dts +40 −0
  1127. arch/arm64/boot/dts/arm/juno.dts +24 −0
  1128. arch/arm64/boot/dts/broadcom/Makefile +1 −0
  1129. arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts +30 −0
  1130. arch/arm64/boot/dts/broadcom/bcm2837.dtsi +76 −0
  1131. arch/arm64/boot/dts/broadcom/ns2-svk.dts +37 −0
  1132. arch/arm64/boot/dts/broadcom/ns2.dtsi +119 −0
  1133. arch/arm64/boot/dts/exynos/exynos7-espresso.dts +1 −1
  1134. arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi +19 −5
  1135. arch/arm64/boot/dts/freescale/fsl-ls2080a.dtsi +35 −9
  1136. arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts +143 −0
  1137. arch/arm64/boot/dts/hisilicon/hi6220.dtsi +18 −0
  1138. arch/arm64/boot/dts/lg/Makefile +1 −0
  1139. arch/arm64/boot/dts/lg/lg1313-ref.dts +36 −0
  1140. arch/arm64/boot/dts/lg/lg1313.dtsi +351 −0
  1141. arch/arm64/boot/dts/marvell/armada-3720-db.dts +5 −0
  1142. arch/arm64/boot/dts/marvell/armada-37xx.dtsi +60 −0
  1143. arch/arm64/boot/dts/marvell/armada-ap806.dtsi +4 −4
  1144. arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi +18 −0
  1145. arch/arm64/boot/dts/mediatek/Makefile +1 −0
  1146. arch/arm64/boot/dts/mediatek/mt6755-evb.dts +38 −0
  1147. arch/arm64/boot/dts/mediatek/mt6755.dtsi +145 −0
  1148. arch/arm64/boot/dts/mediatek/mt8173.dtsi +223 −0
  1149. arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi +249 −0
  1150. arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts +45 −0
  1151. arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi +319 −0
  1152. arch/arm64/boot/dts/nvidia/tegra210-smaug.dts +314 −0
  1153. arch/arm64/boot/dts/nvidia/tegra210.dtsi +291 −1
  1154. arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +16 −0
  1155. arch/arm64/boot/dts/qcom/msm8916.dtsi +75 −3
  1156. arch/arm64/boot/dts/qcom/msm8996-pins.dtsi +303 −0
  1157. arch/arm64/boot/dts/qcom/msm8996.dtsi +102 −1
  1158. arch/arm64/boot/dts/renesas/Makefile +1 −0
  1159. arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts +10 −4
  1160. arch/arm64/boot/dts/renesas/r8a7795.dtsi +87 −37
  1161. arch/arm64/boot/dts/renesas/r8a7796-salvator-x.dts +50 −0
  1162. arch/arm64/boot/dts/renesas/r8a7796.dtsi +138 −0
  1163. arch/arm64/boot/dts/rockchip/rk3368-r88.dts +16 −0
  1164. arch/arm64/boot/dts/rockchip/rk3368.dtsi +13 −3
  1165. arch/arm64/boot/dts/rockchip/rk3399-evb.dts +12 −0
  1166. arch/arm64/boot/dts/rockchip/rk3399.dtsi +311 −2
  1167. arch/arm64/boot/dts/socionext/uniphier-ph1-ld20.dtsi +13 −7
  1168. arch/arm64/configs/defconfig +48 −1
  1169. arch/arm64/include/asm/cpufeature.h +2 −1
  1170. arch/arm64/include/asm/dma-mapping.h +15 −2
  1171. arch/arm64/include/asm/elf.h +1 −0
  1172. arch/arm64/include/asm/kvm_arm.h +1 −1
  1173. arch/arm64/include/asm/kvm_host.h +6 −13
  1174. arch/arm64/include/asm/kvm_hyp.h +0 −23
  1175. arch/arm64/include/asm/kvm_mmu.h +78 −18
  1176. arch/arm64/include/asm/pgtable-hwdef.h +1 −0
  1177. arch/arm64/include/asm/pgtable-prot.h +3 −1
  1178. arch/arm64/include/asm/pgtable.h +17 −0
  1179. arch/arm64/include/asm/uaccess.h +10 −5
  1180. arch/arm64/include/asm/virt.h +4 −0
  1181. arch/arm64/include/uapi/asm/auxvec.h +2 −0
  1182. arch/arm64/include/uapi/asm/kvm.h +2 −0
  1183. arch/arm64/kernel/cpufeature.c +19 −0
  1184. arch/arm64/kernel/head.S +3 −18
  1185. arch/arm64/kernel/pci.c +138 −21
  1186. arch/arm64/kernel/vmlinux.lds.S +2 −11
  1187. arch/arm64/kvm/Kconfig +3 −7
  1188. arch/arm64/kvm/Makefile +2 −8
  1189. arch/arm64/kvm/guest.c +1 −1
  1190. arch/arm64/kvm/hyp-init.S +8 −53
  1191. arch/arm64/kvm/hyp/entry.S +0 −19
  1192. arch/arm64/kvm/hyp/hyp-entry.S +15 −0
  1193. arch/arm64/kvm/hyp/switch.c +9 −2
  1194. arch/arm64/kvm/inject_fault.c +5 −7
  1195. arch/arm64/kvm/irq.h +19 −0
  1196. arch/arm64/kvm/reset.c +8 −30
  1197. arch/arm64/kvm/sys_regs.c +2 −2
  1198. arch/arm64/mm/dma-mapping.c +33 −33
  1199. arch/arm64/mm/mmu.c +4 −4
  1200. arch/avr32/mm/dma-coherent.c +6 −6
  1201. arch/blackfin/kernel/dma-mapping.c +4 −4
  1202. arch/blackfin/mm/init.c +1 −1
  1203. arch/c6x/include/asm/dma-mapping.h +2 −2
  1204. arch/c6x/kernel/dma.c +4 −5
  1205. arch/c6x/mm/dma-coherent.c +2 −2
  1206. arch/cris/arch-v10/drivers/axisflashmap.c +1 −1
  1207. arch/cris/arch-v32/drivers/axisflashmap.c +1 −1
  1208. arch/cris/arch-v32/drivers/pci/dma.c +4 −5
  1209. arch/frv/include/asm/mc146818rtc.h +0 −16
  1210. arch/frv/mb93090-mb00/pci-dma-nommu.c +4 −4
  1211. arch/frv/mb93090-mb00/pci-dma.c +4 −5
  1212. arch/h8300/include/asm/mc146818rtc.h +0 −9
  1213. arch/h8300/kernel/dma.c +4 −4
  1214. arch/hexagon/include/asm/dma-mapping.h +0 −1
  1215. arch/hexagon/kernel/dma.c +4 −4
  1216. arch/hexagon/mm/init.c +1 −1
  1217. arch/ia64/Kconfig +1 −0
  1218. arch/ia64/hp/common/sba_iommu.c +11 −11
  1219. arch/ia64/include/asm/machvec.h +0 −1
  1220. arch/ia64/include/asm/mc146818rtc.h +0 −10
  1221. arch/ia64/include/asm/thread_info.h +0 −28
  1222. arch/ia64/include/asm/uaccess.h +15 −3
  1223. arch/ia64/kernel/efi.c +2 −2
  1224. arch/ia64/kernel/machine_kexec.c +1 −1
  1225. arch/ia64/kernel/mca.c +1 −1
  1226. arch/ia64/kernel/pci-swiotlb.c +2 −2
  1227. arch/ia64/kernel/salinfo.c +10 −28
  1228. arch/ia64/kernel/time.c +1 −1
  1229. arch/ia64/sn/pci/pci_dma.c +8 −14
  1230. arch/m68k/amiga/config.c +0 −1
  1231. arch/m68k/apollo/config.c +0 −1
  1232. arch/m68k/bvme6000/config.c +0 −1
  1233. arch/m68k/hp300/config.c +1 −1
  1234. arch/m68k/include/asm/flat.h +10 −3
  1235. arch/m68k/include/asm/processor.h +1 −14
  1236. arch/m68k/include/asm/rtc.h +0 −79
  1237. arch/m68k/kernel/dma.c +6 −6
  1238. arch/m68k/kernel/time.c +46 −2
  1239. arch/m68k/mac/config.c +2 −1
  1240. arch/m68k/mac/misc.c +0 −1
  1241. arch/m68k/mvme147/config.c +0 −1
  1242. arch/m68k/mvme16x/config.c +0 −1
  1243. arch/m68k/q40/config.c +1 −1
  1244. arch/m68k/sun3/config.c +0 −1
  1245. arch/m68k/sun3/intersil.c +1 −1
  1246. arch/m68k/sun3x/time.c +1 −1
  1247. arch/metag/include/asm/cmpxchg_lnkget.h +1 −1
  1248. arch/metag/include/asm/metag_mem.h +1 −1
  1249. arch/metag/include/asm/metag_regs.h +1 −1
  1250. arch/metag/kernel/cachepart.c +1 −1
  1251. arch/metag/kernel/dma.c +8 −8
  1252. arch/metag/lib/divsi3.S +2 −2
  1253. arch/metag/mm/fault.c +1 −1
  1254. arch/microblaze/include/asm/dma-mapping.h +0 −1
  1255. arch/microblaze/include/asm/pci.h +0 −3
  1256. arch/microblaze/include/asm/thread_info.h +0 −27
  1257. arch/microblaze/kernel/dma.c +6 −6
  1258. arch/microblaze/mm/init.c +2 −2
  1259. arch/microblaze/mm/pgtable.c +1 −1
  1260. arch/microblaze/pci/pci-common.c +15 −58
  1261. arch/mips/Kconfig +16 −33
  1262. arch/mips/ath79/setup.c +2 −2
  1263. arch/mips/bmips/setup.c +2 −2
  1264. arch/mips/boot/compressed/decompress.c +17 −0
  1265. arch/mips/boot/compressed/head.S +0 −16
  1266. arch/mips/boot/dts/cavium-octeon/dlink_dsr-1000n.dts +18 −2
  1267. arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dts +0 −12
  1268. arch/mips/boot/tools/relocs_64.c +11 −8
  1269. arch/mips/cavium-octeon/dma-octeon.c +4 −4
  1270. arch/mips/cavium-octeon/executive/cvmx-bootmem.c +1 −1
  1271. arch/mips/cavium-octeon/executive/cvmx-helper-board.c +0 −22
  1272. arch/mips/cavium-octeon/octeon-irq.c +1 −13
  1273. arch/mips/cavium-octeon/octeon-platform.c +69 −56
  1274. arch/mips/cavium-octeon/setup.c +19 −1
  1275. arch/mips/cavium-octeon/smp.c +1 −0
  1276. arch/mips/cobalt/setup.c +2 −2
  1277. arch/mips/configs/ath25_defconfig +119 −0
  1278. arch/mips/configs/cavium_octeon_defconfig +2 −0
  1279. arch/mips/include/asm/addrspace.h +1 −1
  1280. arch/mips/include/asm/bootinfo.h +4 −0
  1281. arch/mips/include/asm/dsemul.h +92 −0
  1282. arch/mips/include/asm/elf.h +4 −0
  1283. arch/mips/include/asm/fpu_emulator.h +3 −14
  1284. arch/mips/include/asm/kvm_host.h +125 −190
  1285. arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h +1 −1
  1286. arch/mips/include/asm/mach-cavium-octeon/irq.h +0 −2
  1287. arch/mips/include/asm/mach-cavium-octeon/mangle-port.h +13 −29
  1288. arch/mips/include/asm/mips-cm.h +1 −1
  1289. arch/mips/include/asm/mipsregs.h +20 −1
  1290. arch/mips/include/asm/mmu.h +9 −0
  1291. arch/mips/include/asm/mmu_context.h +6 −0
  1292. arch/mips/include/asm/msa.h +2 −0
  1293. arch/mips/include/asm/page.h +32 −12
  1294. arch/mips/include/asm/pci.h +0 −10
  1295. arch/mips/include/asm/pgtable.h +8 −8
  1296. arch/mips/include/asm/processor.h +17 −1
  1297. arch/mips/include/asm/r4kcache.h +4 −0
  1298. arch/mips/include/asm/seccomp.h +2 −2
  1299. arch/mips/include/asm/setup.h +1 −0
  1300. arch/mips/include/asm/signal.h +3 −3
  1301. arch/mips/include/asm/smp.h +3 −1
  1302. arch/mips/include/asm/syscall.h +1 −1
  1303. arch/mips/include/asm/uaccess.h +1 −1
  1304. arch/mips/include/asm/uasm.h +7 −0
  1305. arch/mips/include/uapi/asm/auxvec.h +2 −0
  1306. arch/mips/include/uapi/asm/inst.h +108 −6
  1307. arch/mips/jz4740/setup.c +1 −1
  1308. arch/mips/kernel/Makefile +1 −1
  1309. arch/mips/kernel/asm-offsets.c +0 −70
  1310. arch/mips/kernel/branch.c +4 −4
  1311. arch/mips/kernel/cevt-r4k.c +1 −6
  1312. arch/mips/kernel/cpu-bugs64.c +3 −3
  1313. arch/mips/kernel/csrc-r4k.c +3 −1
  1314. arch/mips/kernel/elf.c +21 −2
  1315. arch/mips/kernel/head.S +14 −7
  1316. arch/mips/kernel/mips-cm.c +1 −1
  1317. arch/mips/kernel/mips-r2-to-r6-emul.c +21 −21
  1318. arch/mips/kernel/pm-cps.c +2 −2
  1319. arch/mips/kernel/process.c +14 −0
  1320. arch/mips/kernel/scall64-n32.S +1 −1
  1321. arch/mips/kernel/scall64-o32.S +1 −1
  1322. arch/mips/kernel/segment.c +8 −5
  1323. arch/mips/kernel/setup.c +4 −0
  1324. arch/mips/kernel/signal.c +13 −5
  1325. arch/mips/kernel/signal32.c +6 −282
  1326. arch/mips/kernel/signal_o32.c +285 −0
  1327. arch/mips/kernel/smp-bmips.c +1 −0
  1328. arch/mips/kernel/smp-cps.c +35 −11
  1329. arch/mips/kernel/smp.c +21 −13
  1330. arch/mips/kernel/traps.c +18 −9
  1331. arch/mips/kernel/unaligned.c +5 −5
  1332. arch/mips/kernel/vdso.c +10 −0
  1333. arch/mips/kvm/Kconfig +1 −0
  1334. arch/mips/kvm/Makefile +2 −1
  1335. arch/mips/kvm/commpage.c +1 −1
  1336. arch/mips/kvm/dyntrans.c +86 −96
  1337. arch/mips/kvm/emulate.c +259 −226
  1338. arch/mips/kvm/entry.c +701 −0
  1339. arch/mips/kvm/fpu.S +5 −2
  1340. arch/mips/kvm/interrupt.c +6 −6
  1341. arch/mips/kvm/interrupt.h +5 −9
  1342. arch/mips/kvm/locore.S +0 −605
  1343. arch/mips/kvm/mips.c +256 −111
  1344. arch/mips/kvm/mmu.c +375 −0
  1345. arch/mips/kvm/stats.c +0 −21
  1346. arch/mips/kvm/tlb.c +42 −456
  1347. arch/mips/kvm/trace.h +233 −3
  1348. arch/mips/kvm/trap_emul.c +87 −91
  1349. arch/mips/lantiq/irq.c +16 −15
  1350. arch/mips/lantiq/prom.c +2 −2
  1351. arch/mips/loongson64/common/dma-swiotlb.c +5 −5
  1352. arch/mips/loongson64/loongson-3/hpet.c +7 −7
  1353. arch/mips/loongson64/loongson-3/smp.c +1 −0
  1354. arch/mips/math-emu/cp1emu.c +11 −11
  1355. arch/mips/math-emu/dsemul.c +223 −110
  1356. arch/mips/mm/c-r4k.c +228 −58
  1357. arch/mips/mm/dma-default.c +10 −10
  1358. arch/mips/mm/init.c +1 −1
  1359. arch/mips/mm/sc-debugfs.c +2 −2
  1360. arch/mips/mm/sc-rm7k.c +1 −1
  1361. arch/mips/mm/tlbex.c +6 −6
  1362. arch/mips/mm/uasm-micromips.c +11 −2
  1363. arch/mips/mm/uasm-mips.c +12 −1
  1364. arch/mips/mm/uasm.c +17 −13
  1365. arch/mips/mti-malta/malta-dtshim.c +2 −2
  1366. arch/mips/mti-malta/malta-memory.c +1 −1
  1367. arch/mips/mti-malta/malta-setup.c +1 −1
  1368. arch/mips/net/bpf_jit.c +3 −3
  1369. arch/mips/netlogic/common/nlm-dma.c +2 −2
  1370. arch/mips/pci/pci.c +18 −1
  1371. arch/mips/pic32/pic32mzda/init.c +2 −2
  1372. arch/mips/pistachio/init.c +0 −25
  1373. arch/mips/ralink/mt7620.c +1 −1
  1374. arch/mips/sgi-ip22/ip22-reset.c +1 −1
  1375. arch/mips/sni/time.c +0 −1
  1376. arch/mips/txx9/generic/pci.c +1 −1
  1377. arch/mn10300/Kconfig +3 −1
  1378. arch/mn10300/include/asm/rtc-regs.h +2 −2
  1379. arch/mn10300/include/asm/rtc.h +0 −2
  1380. arch/mn10300/kernel/rtc.c +9 −95
  1381. arch/mn10300/mm/dma-alloc.c +4 −4
  1382. arch/mn10300/proc-mn103e010/proc-init.c +3 −0
  1383. arch/mn10300/proc-mn2ws0050/proc-init.c +1 −0
  1384. arch/nios2/mm/dma-mapping.c +6 −6
  1385. arch/nios2/mm/init.c +1 −1
  1386. arch/openrisc/kernel/dma.c +10 −11
  1387. arch/openrisc/mm/ioremap.c +2 −2
  1388. arch/parisc/Kconfig +1 −0
  1389. arch/parisc/include/asm/hash.h +146 −0
  1390. arch/parisc/include/asm/mc146818rtc.h +0 −9
  1391. arch/parisc/include/asm/rtc.h +0 −131
  1392. arch/parisc/kernel/firmware.c +3 −3
  1393. arch/parisc/kernel/pci-dma.c +9 −9
  1394. arch/parisc/kernel/time.c +35 −1
  1395. arch/parisc/lib/iomap.c +32 −32
  1396. arch/powerpc/Kconfig +33 −39
  1397. arch/powerpc/Kconfig.debug +21 −3
  1398. arch/powerpc/Makefile +6 −1
  1399. arch/powerpc/boot/Makefile +7 −3
  1400. arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi +1 −0
  1401. arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi +1 −0
  1402. arch/powerpc/boot/dts/fsl/kmcoge4.dts +37 −0
  1403. arch/powerpc/boot/dts/fsl/mvme7100.dts +153 −0
  1404. arch/powerpc/boot/dts/fsl/qonverge-usb2-dr-0.dtsi +1 −1
  1405. arch/powerpc/boot/dts/fsl/t1040si-post.dtsi +47 −2
  1406. arch/powerpc/boot/dts/fsl/t104xd4rdb.dtsi +38 −0
  1407. arch/powerpc/boot/dts/fsl/t104xqds.dtsi +38 −0
  1408. arch/powerpc/boot/dts/fsl/t104xrdb.dtsi +38 −0
  1409. arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi +2 −0
  1410. arch/powerpc/boot/motload-head.S +11 −0
  1411. arch/powerpc/boot/mvme7100.c +59 −0
  1412. arch/powerpc/boot/opal-calls.S +58 −0
  1413. arch/powerpc/boot/opal.c +98 −0
  1414. arch/powerpc/boot/ops.h +1 −0
  1415. arch/powerpc/boot/ppc_asm.h +4 −0
  1416. arch/powerpc/boot/ppcboot.h +1 −1
  1417. arch/powerpc/boot/serial.c +2 −0
  1418. arch/powerpc/boot/types.h +10 −0
  1419. arch/powerpc/boot/wrapper +5 −0
  1420. arch/powerpc/configs/40x/acadia_defconfig +0 −1
  1421. arch/powerpc/configs/40x/ep405_defconfig +0 −1
  1422. arch/powerpc/configs/40x/kilauea_defconfig +0 −1
  1423. arch/powerpc/configs/40x/klondike_defconfig +0 −3
  1424. arch/powerpc/configs/40x/makalu_defconfig +0 −1
  1425. arch/powerpc/configs/40x/obs600_defconfig +0 −1
  1426. arch/powerpc/configs/40x/virtex_defconfig +0 −1
  1427. arch/powerpc/configs/40x/walnut_defconfig +0 −1
  1428. arch/powerpc/configs/44x/akebono_defconfig +3 −5
  1429. arch/powerpc/configs/44x/arches_defconfig +0 −1
  1430. arch/powerpc/configs/44x/bamboo_defconfig +0 −1
  1431. arch/powerpc/configs/44x/bluestone_defconfig +1 −1
  1432. arch/powerpc/configs/44x/canyonlands_defconfig +0 −1
  1433. arch/powerpc/configs/44x/currituck_defconfig +3 −5
  1434. arch/powerpc/configs/44x/ebony_defconfig +0 −1
  1435. arch/powerpc/configs/44x/eiger_defconfig +0 −2
  1436. arch/powerpc/configs/44x/icon_defconfig +1 −3
  1437. arch/powerpc/configs/44x/iss476-smp_defconfig +3 −5
  1438. arch/powerpc/configs/44x/katmai_defconfig +0 −1
  1439. arch/powerpc/configs/44x/rainier_defconfig +0 −1
  1440. arch/powerpc/configs/44x/redwood_defconfig +0 −2
  1441. arch/powerpc/configs/44x/sam440ep_defconfig +2 −4
  1442. arch/powerpc/configs/44x/sequoia_defconfig +0 −1
  1443. arch/powerpc/configs/44x/taishan_defconfig +0 −1
  1444. arch/powerpc/configs/44x/virtex5_defconfig +0 −1
  1445. arch/powerpc/configs/44x/warp_defconfig +1 −4
  1446. arch/powerpc/configs/52xx/cm5200_defconfig +1 −3
  1447. arch/powerpc/configs/52xx/lite5200b_defconfig +1 −3
  1448. arch/powerpc/configs/52xx/motionpro_defconfig +1 −3
  1449. arch/powerpc/configs/52xx/pcm030_defconfig +1 −3
  1450. arch/powerpc/configs/52xx/tqm5200_defconfig +1 −3
  1451. arch/powerpc/configs/83xx/asp8347_defconfig +1 −3
  1452. arch/powerpc/configs/83xx/kmeter1_defconfig +0 −1
  1453. arch/powerpc/configs/83xx/mpc8313_rdb_defconfig +1 −3
  1454. arch/powerpc/configs/83xx/mpc8315_rdb_defconfig +1 −3
  1455. arch/powerpc/configs/83xx/mpc832x_mds_defconfig +1 −3
  1456. arch/powerpc/configs/83xx/mpc832x_rdb_defconfig +1 −3
  1457. arch/powerpc/configs/83xx/mpc834x_itx_defconfig +1 −3
  1458. arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig +1 −3
  1459. arch/powerpc/configs/83xx/mpc834x_mds_defconfig +1 −3
  1460. arch/powerpc/configs/83xx/mpc836x_mds_defconfig +1 −3
  1461. arch/powerpc/configs/83xx/mpc836x_rdk_defconfig +1 −3
  1462. arch/powerpc/configs/83xx/mpc837x_mds_defconfig +1 −3
  1463. arch/powerpc/configs/83xx/mpc837x_rdb_defconfig +1 −3
  1464. arch/powerpc/configs/83xx/sbc834x_defconfig +1 −4
  1465. arch/powerpc/configs/85xx/ge_imp3a_defconfig +1 −3
  1466. arch/powerpc/configs/85xx/kmp204x_defconfig +1 −2
  1467. arch/powerpc/configs/85xx/ksi8560_defconfig +1 −3
  1468. arch/powerpc/configs/85xx/mpc8540_ads_defconfig +1 −3
  1469. arch/powerpc/configs/85xx/mpc8560_ads_defconfig +1 −3
  1470. arch/powerpc/configs/85xx/mpc85xx_cds_defconfig +1 −3
  1471. arch/powerpc/configs/85xx/sbc8548_defconfig +0 −1
  1472. arch/powerpc/configs/85xx/socrates_defconfig +1 −3
  1473. arch/powerpc/configs/85xx/stx_gp3_defconfig +1 −3
  1474. arch/powerpc/configs/85xx/tqm8540_defconfig +1 −3
  1475. arch/powerpc/configs/85xx/tqm8541_defconfig +1 −3
  1476. arch/powerpc/configs/85xx/tqm8548_defconfig +0 −1
  1477. arch/powerpc/configs/85xx/tqm8555_defconfig +1 −3
  1478. arch/powerpc/configs/85xx/tqm8560_defconfig +1 −3
  1479. arch/powerpc/configs/85xx/xes_mpc85xx_defconfig +1 −3
  1480. arch/powerpc/configs/86xx-hw.config +2 −2
  1481. arch/powerpc/configs/adder875_defconfig +0 −1
  1482. arch/powerpc/configs/amigaone_defconfig +0 −2
  1483. arch/powerpc/configs/c2k_defconfig +3 −5
  1484. arch/powerpc/configs/cell_defconfig +1 −1
  1485. arch/powerpc/configs/chrp32_defconfig +0 −1
  1486. arch/powerpc/configs/ep8248e_defconfig +1 −4
  1487. arch/powerpc/configs/ep88xc_defconfig +0 −1
  1488. arch/powerpc/configs/fsl-emb-nonhw.config +1 −3
  1489. arch/powerpc/configs/g5_defconfig +3 −4
  1490. arch/powerpc/configs/gamecube_defconfig +1 −4
  1491. arch/powerpc/configs/holly_defconfig +1 −2
  1492. arch/powerpc/configs/linkstation_defconfig +1 −3
  1493. arch/powerpc/configs/maple_defconfig +1 −4
  1494. arch/powerpc/configs/mgcoge_defconfig +0 −1
  1495. arch/powerpc/configs/mpc512x_defconfig +3 −5
  1496. arch/powerpc/configs/mpc5200_defconfig +1 −3
  1497. arch/powerpc/configs/mpc7448_hpc2_defconfig +1 −3
  1498. arch/powerpc/configs/mpc8272_ads_defconfig +1 −3
  1499. arch/powerpc/configs/mpc83xx_defconfig +1 −3
  1500. arch/powerpc/configs/mpc866_ads_defconfig +1 −3
  1501. arch/powerpc/configs/mpc86xx_basic_defconfig +1 −0
  1502. arch/powerpc/configs/mpc885_ads_defconfig +0 −1
  1503. arch/powerpc/configs/mvme5100_defconfig +1 −3
  1504. arch/powerpc/configs/pasemi_defconfig +1 −2
  1505. arch/powerpc/configs/pmac32_defconfig +1 −4
  1506. arch/powerpc/configs/powernv_defconfig +5 −3
  1507. arch/powerpc/configs/ppc40x_defconfig +1 −3
  1508. arch/powerpc/configs/ppc44x_defconfig +1 −3
  1509. arch/powerpc/configs/ppc64_defconfig +1 −5
  1510. arch/powerpc/configs/ppc64e_defconfig +1 −5
  1511. arch/powerpc/configs/ppc6xx_defconfig +4 −5
  1512. arch/powerpc/configs/pq2fads_defconfig +1 −4
  1513. arch/powerpc/configs/ps3_defconfig +0 −1
  1514. arch/powerpc/configs/pseries_defconfig +2 −5
  1515. arch/powerpc/configs/storcenter_defconfig +1 −3
  1516. arch/powerpc/configs/tqm8xx_defconfig +0 −1
  1517. arch/powerpc/configs/wii_defconfig +1 −4
  1518. arch/powerpc/include/asm/accounting.h +24 −0
  1519. arch/powerpc/include/asm/asm-compat.h +2 −0
  1520. arch/powerpc/include/asm/asm-prototypes.h +75 −0
  1521. arch/powerpc/include/asm/book3s/64/hugetlb-radix.h +15 −0
  1522. arch/powerpc/include/asm/book3s/64/mmu-hash.h +56 −4
  1523. arch/powerpc/include/asm/book3s/64/mmu.h +8 −3
  1524. arch/powerpc/include/asm/book3s/64/pgtable-4k.h +3 −3
  1525. arch/powerpc/include/asm/book3s/64/pgtable-64k.h +3 −3
  1526. arch/powerpc/include/asm/book3s/64/pgtable.h +70 −29
  1527. arch/powerpc/include/asm/book3s/64/tlbflush-hash.h +0 −5
  1528. arch/powerpc/include/asm/book3s/64/tlbflush-radix.h +14 −6
  1529. arch/powerpc/include/asm/book3s/64/tlbflush.h +19 −8
  1530. arch/powerpc/include/asm/cacheflush.h +1 −0
  1531. arch/powerpc/include/asm/code-patching.h +4 −6
  1532. arch/powerpc/include/asm/cpu_has_feature.h +53 −0
  1533. arch/powerpc/include/asm/cpufeature.h +40 −0
  1534. arch/powerpc/include/asm/cpuidle.h +2 −0
  1535. arch/powerpc/include/asm/cputable.h +7 −8
  1536. arch/powerpc/include/asm/cputime.h +12 −3
  1537. arch/powerpc/include/asm/dbell.h +1 −0
  1538. arch/powerpc/include/asm/dcr-native.h +1 −0
  1539. arch/powerpc/include/asm/dma-mapping.h +3 −4
  1540. arch/powerpc/include/asm/eeh.h +2 −2
  1541. arch/powerpc/include/asm/exception-64s.h +3 −1
  1542. arch/powerpc/include/asm/feature-fixups.h +4 −0
  1543. arch/powerpc/include/asm/firmware.h +6 −0
  1544. arch/powerpc/include/asm/fixmap.h +7 −0
  1545. arch/powerpc/include/asm/ftrace.h +5 −3
  1546. arch/powerpc/include/asm/hmi.h +45 −0
  1547. arch/powerpc/include/asm/hugetlb.h +1 −1
  1548. arch/powerpc/include/asm/hvcall.h +0 −11
  1549. arch/powerpc/include/asm/hw_irq.h +2 −0
  1550. arch/powerpc/include/asm/iommu.h +5 −6
  1551. arch/powerpc/include/asm/jump_label.h +3 −2
  1552. arch/powerpc/include/asm/kprobes.h +3 −5
  1553. arch/powerpc/include/asm/kvm_book3s_64.h +1 −2
  1554. arch/powerpc/include/asm/kvm_book3s_asm.h +1 −1
  1555. arch/powerpc/include/asm/linkage.h +3 −3
  1556. arch/powerpc/include/asm/machdep.h +2 −40
  1557. arch/powerpc/include/asm/mman.h +5 −4
  1558. arch/powerpc/include/asm/mmu-8xx.h +3 −0
  1559. arch/powerpc/include/asm/mmu.h +91 −16
  1560. arch/powerpc/include/asm/mpc52xx.h +1 −1
  1561. arch/powerpc/include/asm/nohash/32/pte-44x.h +1 −1
  1562. arch/powerpc/include/asm/nohash/64/pgtable-64k.h +1 −0
  1563. arch/powerpc/include/asm/opal-api.h +41 −5
  1564. arch/powerpc/include/asm/opal.h +32 −2
  1565. arch/powerpc/include/asm/paca.h +8 −7
  1566. arch/powerpc/include/asm/page.h +3 −3
  1567. arch/powerpc/include/asm/pci-bridge.h +2 −0
  1568. arch/powerpc/include/asm/pci.h +0 −3
  1569. arch/powerpc/include/asm/pgtable-be-types.h +15 −0
  1570. arch/powerpc/include/asm/pmac_feature.h +1 −1
  1571. arch/powerpc/include/asm/pnv-pci.h +47 −0
  1572. arch/powerpc/include/asm/ppc-opcode.h +46 −1
  1573. arch/powerpc/include/asm/ppc-pci.h +0 −2
  1574. arch/powerpc/include/asm/ppc4xx.h +1 −1
  1575. arch/powerpc/include/asm/ppc_asm.h +14 −14
  1576. arch/powerpc/include/asm/processor.h +6 −1
  1577. arch/powerpc/include/asm/ps3.h +2 −0
  1578. arch/powerpc/include/asm/ps3av.h +1 −1
  1579. arch/powerpc/include/asm/pte-common.h +1 −1
  1580. arch/powerpc/include/asm/ptrace.h +1 −1
  1581. arch/powerpc/include/asm/reg.h +54 −43
  1582. arch/powerpc/include/asm/rtas.h +4 −3
  1583. arch/powerpc/include/asm/rtc.h +0 −78
  1584. arch/powerpc/include/asm/sections.h +2 −2
  1585. arch/powerpc/include/asm/setup.h +12 −0
  1586. arch/powerpc/include/asm/smp.h +6 −3
  1587. arch/powerpc/include/asm/smu.h +1 −8
  1588. arch/powerpc/include/asm/spinlock.h +32 −6
  1589. arch/powerpc/include/asm/string.h +0 −4
  1590. arch/powerpc/include/asm/switch_to.h +8 −0
  1591. arch/powerpc/include/asm/synch.h +0 −1
  1592. arch/powerpc/include/asm/tce.h +0 −3
  1593. arch/powerpc/include/asm/thread_info.h +4 −25
  1594. arch/powerpc/include/asm/time.h +5 −4
  1595. arch/powerpc/include/asm/tlb.h +13 −0
  1596. arch/powerpc/include/asm/tlbflush.h +0 −1
  1597. arch/powerpc/include/asm/tsi108.h +1 −1
  1598. arch/powerpc/include/asm/types.h +8 −0
  1599. arch/powerpc/include/asm/uaccess.h +19 −2
  1600. arch/powerpc/include/asm/xics.h +6 −0
  1601. arch/powerpc/include/asm/xor.h +1 −0
  1602. arch/powerpc/include/uapi/asm/elf.h +5 −0
  1603. arch/powerpc/kernel/Makefile +3 −4
  1604. arch/powerpc/kernel/align.c +16 −3
  1605. arch/powerpc/kernel/asm-offsets.c +27 −53
  1606. arch/powerpc/kernel/cpu_setup_6xx.S +1 −1
  1607. arch/powerpc/kernel/cpu_setup_power.S +19 −1
  1608. arch/powerpc/kernel/cputable.c +39 −2
  1609. arch/powerpc/kernel/crash.c +10 −5
  1610. arch/powerpc/kernel/dma-iommu.c +6 −6
  1611. arch/powerpc/kernel/dma.c +9 −9
  1612. arch/powerpc/kernel/eeh_cache.c +4 −4
  1613. arch/powerpc/kernel/eeh_dev.c +3 −14
  1614. arch/powerpc/kernel/eeh_driver.c +1 −1
  1615. arch/powerpc/kernel/entry_32.S +17 −0
  1616. arch/powerpc/kernel/entry_64.S +5 −5
  1617. arch/powerpc/kernel/exceptions-64e.S +3 −3
  1618. arch/powerpc/kernel/exceptions-64s.S +40 −38
  1619. arch/powerpc/kernel/fadump.c +1 −2
  1620. arch/powerpc/kernel/ftrace.c +20 −19
  1621. arch/powerpc/kernel/head_64.S +2 −5
  1622. arch/powerpc/kernel/head_8xx.S +80 −79
  1623. arch/powerpc/kernel/hmi.c +56 −0
  1624. arch/powerpc/kernel/ibmebus.c +6 −6
  1625. arch/powerpc/kernel/idle_book3s.S +261 −112
  1626. arch/powerpc/kernel/iommu.c +6 −6
  1627. arch/powerpc/kernel/irq.c +17 −1
  1628. arch/powerpc/kernel/kprobes.c +7 −10
  1629. arch/powerpc/kernel/machine_kexec_64.c +8 −2
  1630. arch/powerpc/kernel/misc_32.S +0 −14
  1631. arch/powerpc/kernel/misc_64.S +2 −2
  1632. arch/powerpc/kernel/module_64.c +5 −4
  1633. arch/powerpc/kernel/paca.c +1 −1
  1634. arch/powerpc/kernel/pci-common.c +90 −71
  1635. arch/powerpc/kernel/pci_64.c +1 −1
  1636. arch/powerpc/kernel/pci_dn.c +28 −6
  1637. arch/powerpc/kernel/process.c +56 −13
  1638. arch/powerpc/kernel/prom.c +15 −1
  1639. arch/powerpc/kernel/ptrace.c +1616 −124
  1640. arch/powerpc/kernel/rtas-proc.c +1 −1
  1641. arch/powerpc/kernel/rtas.c +4 −4
  1642. arch/powerpc/kernel/rtasd.c +20 −8
  1643. arch/powerpc/kernel/setup-common.c +189 −1
  1644. arch/powerpc/kernel/setup.h +58 −0
  1645. arch/powerpc/kernel/setup_32.c +24 −90
  1646. arch/powerpc/kernel/setup_64.c +60 −225
  1647. arch/powerpc/kernel/signal_64.c +8 −3
  1648. arch/powerpc/kernel/smp.c +4 −0
  1649. arch/powerpc/kernel/sysfs.c +1 −1
  1650. arch/powerpc/kernel/time.c +141 −36
  1651. arch/powerpc/kernel/tm.S +1 −2
  1652. arch/powerpc/kernel/traps.c +17 −1
  1653. arch/powerpc/kernel/vector.S +5 −4
  1654. arch/powerpc/kernel/vio.c +6 −6
  1655. arch/powerpc/kernel/vmlinux.lds.S +1 −1
  1656. arch/powerpc/kvm/Makefile +1 −1
  1657. arch/powerpc/kvm/book3s_64_mmu_host.c +10 −8
  1658. arch/powerpc/kvm/book3s_64_vio.c +2 −1
  1659. arch/powerpc/kvm/book3s_hv.c +39 −2
  1660. arch/powerpc/kvm/book3s_hv_ras.c +176 −0
  1661. arch/powerpc/kvm/book3s_hv_rmhandlers.S +316 −215
  1662. arch/powerpc/kvm/book3s_interrupts.S +1 −1
  1663. arch/powerpc/kvm/book3s_pr.c +16 −6
  1664. arch/powerpc/kvm/book3s_rmhandlers.S +1 −1
  1665. arch/powerpc/kvm/booke.c +2 −2
  1666. arch/powerpc/kvm/emulate.c +0 −1
  1667. arch/powerpc/kvm/mpic.c +2 −1
  1668. arch/powerpc/kvm/powerpc.c +5 −1
  1669. arch/powerpc/lib/alloc.c +1 −1
  1670. arch/powerpc/lib/checksum_64.S +6 −6
  1671. arch/powerpc/lib/feature-fixups.c +65 −2
  1672. arch/powerpc/lib/locks.c +0 −16
  1673. arch/powerpc/lib/ppc_ksyms.c +0 −4
  1674. arch/powerpc/lib/rheap.c +1 −1
  1675. arch/powerpc/lib/string.S +3 −41
  1676. arch/powerpc/lib/vmx-helper.c +1 −0
  1677. arch/powerpc/mm/8xx_mmu.c +90 −41
  1678. arch/powerpc/mm/hash64_4k.c +10 −8
  1679. arch/powerpc/mm/hash64_64k.c +22 −17
  1680. arch/powerpc/mm/hash_native_64.c +24 −18
  1681. arch/powerpc/mm/hash_utils_64.c +108 −98
  1682. arch/powerpc/mm/hugepage-hash64.c +9 −8
  1683. arch/powerpc/mm/hugetlbpage-hash64.c +2 −2
  1684. arch/powerpc/mm/hugetlbpage-radix.c +17 −22
  1685. arch/powerpc/mm/hugetlbpage.c +7 −0
  1686. arch/powerpc/mm/init_32.c +1 −4
  1687. arch/powerpc/mm/init_64.c +22 −0
  1688. arch/powerpc/mm/mem.c +17 −1
  1689. arch/powerpc/mm/mmu_context_book3s64.c +4 −1
  1690. arch/powerpc/mm/mmu_decl.h +2 −1
  1691. arch/powerpc/mm/numa.c +26 −10
  1692. arch/powerpc/mm/pgtable-book3s64.c +5 −2
  1693. arch/powerpc/mm/pgtable-radix.c +12 −8
  1694. arch/powerpc/mm/pgtable.c +1 −1
  1695. arch/powerpc/mm/pgtable_32.c +1 −1
  1696. arch/powerpc/mm/tlb-radix.c +132 −23
  1697. arch/powerpc/mm/tlb_hash32.c +0 −11
  1698. arch/powerpc/mm/tlb_nohash.c +0 −6
  1699. arch/powerpc/net/Makefile +4 −0
  1700. arch/powerpc/net/bpf_jit.h +92 −143
  1701. arch/powerpc/net/bpf_jit32.h +139 −0
  1702. arch/powerpc/net/bpf_jit64.h +102 −0
  1703. arch/powerpc/net/bpf_jit_asm.S +1 −1
  1704. arch/powerpc/net/bpf_jit_asm64.S +180 −0
  1705. arch/powerpc/net/bpf_jit_comp.c +5 −5
  1706. arch/powerpc/net/bpf_jit_comp64.c +954 −0
  1707. arch/powerpc/oprofile/cell/spu_task_sync.c +1 −1
  1708. arch/powerpc/perf/Makefile +1 −1
  1709. arch/powerpc/perf/core-book3s.c +1 −1
  1710. arch/powerpc/perf/hv-24x7.c +1 −1
  1711. arch/powerpc/perf/hv-24x7.h +1 −1
  1712. arch/powerpc/perf/isa207-common.c +263 −0
  1713. arch/powerpc/perf/isa207-common.h +236 −0
  1714. arch/powerpc/perf/power8-pmu.c +7 −470
  1715. arch/powerpc/perf/power9-events-list.h +55 −0
  1716. arch/powerpc/perf/power9-pmu.c +330 −0
  1717. arch/powerpc/platforms/40x/ep405.c +1 −3
  1718. arch/powerpc/platforms/40x/ppc40x_simple.c +1 −1
  1719. arch/powerpc/platforms/40x/virtex.c +1 −3
  1720. arch/powerpc/platforms/40x/walnut.c +1 −3
  1721. arch/powerpc/platforms/44x/canyonlands.c +2 −3
  1722. arch/powerpc/platforms/44x/ebony.c +1 −3
  1723. arch/powerpc/platforms/44x/iss4xx.c +1 −3
  1724. arch/powerpc/platforms/44x/ppc44x_simple.c +1 −2
  1725. arch/powerpc/platforms/44x/ppc476.c +4 −6
  1726. arch/powerpc/platforms/44x/sam440ep.c +1 −3
  1727. arch/powerpc/platforms/44x/virtex.c +1 −3
  1728. arch/powerpc/platforms/44x/warp.c +1 −3
  1729. arch/powerpc/platforms/512x/clock-commonclk.c +1 −1
  1730. arch/powerpc/platforms/512x/mpc5121_ads.c +5 −3
  1731. arch/powerpc/platforms/512x/mpc512x.h +1 −1
  1732. arch/powerpc/platforms/512x/mpc512x_generic.c +6 −2
  1733. arch/powerpc/platforms/512x/mpc512x_shared.c +1 −1
  1734. arch/powerpc/platforms/512x/pdm360ng.c +5 −3
  1735. arch/powerpc/platforms/52xx/efika.c +1 −2
  1736. arch/powerpc/platforms/52xx/lite5200.c +1 −1
  1737. arch/powerpc/platforms/52xx/media5200.c +1 −1
  1738. arch/powerpc/platforms/52xx/mpc5200_simple.c +1 −1
  1739. arch/powerpc/platforms/52xx/mpc52xx_common.c +1 −2
  1740. arch/powerpc/platforms/82xx/ep8248e.c +1 −2
  1741. arch/powerpc/platforms/82xx/km82xx.c +1 −2
  1742. arch/powerpc/platforms/82xx/mpc8272_ads.c +1 −2
  1743. arch/powerpc/platforms/82xx/pq2.c +1 −1
  1744. arch/powerpc/platforms/82xx/pq2.h +1 −1
  1745. arch/powerpc/platforms/82xx/pq2fads.c +1 −2
  1746. arch/powerpc/platforms/83xx/asp834x.c +1 −2
  1747. arch/powerpc/platforms/83xx/km83xx.c +1 −2
  1748. arch/powerpc/platforms/83xx/misc.c +1 −1
  1749. arch/powerpc/platforms/83xx/mpc830x_rdb.c +1 −1
  1750. arch/powerpc/platforms/83xx/mpc831x_rdb.c +1 −1
  1751. arch/powerpc/platforms/83xx/mpc832x_mds.c +1 −3
  1752. arch/powerpc/platforms/83xx/mpc832x_rdb.c +1 −3
  1753. arch/powerpc/platforms/83xx/mpc834x_itx.c +1 −3
  1754. arch/powerpc/platforms/83xx/mpc834x_mds.c +1 −3
  1755. arch/powerpc/platforms/83xx/mpc836x_mds.c +1 −3
  1756. arch/powerpc/platforms/83xx/mpc836x_rdk.c +1 −3
  1757. arch/powerpc/platforms/83xx/mpc837x_mds.c +1 −3
  1758. arch/powerpc/platforms/83xx/mpc837x_rdb.c +1 −1
  1759. arch/powerpc/platforms/83xx/mpc83xx.h +1 −1
  1760. arch/powerpc/platforms/83xx/sbc834x.c +1 −3
  1761. arch/powerpc/platforms/85xx/bsc913x_qds.c +1 −3
  1762. arch/powerpc/platforms/85xx/bsc913x_rdb.c +1 −3
  1763. arch/powerpc/platforms/85xx/c293pcie.c +1 −3
  1764. arch/powerpc/platforms/85xx/corenet_generic.c +2 −3
  1765. arch/powerpc/platforms/85xx/ge_imp3a.c +2 −5
  1766. arch/powerpc/platforms/85xx/ksi8560.c +2 −4
  1767. arch/powerpc/platforms/85xx/mpc8536_ds.c +1 −3
  1768. arch/powerpc/platforms/85xx/mpc85xx_ads.c +1 −3
  1769. arch/powerpc/platforms/85xx/mpc85xx_cds.c +2 −4
  1770. arch/powerpc/platforms/85xx/mpc85xx_ds.c +4 −12
  1771. arch/powerpc/platforms/85xx/mpc85xx_mds.c +3 −9
  1772. arch/powerpc/platforms/85xx/mpc85xx_rdb.c +11 −32
  1773. arch/powerpc/platforms/85xx/mvme2500.c +1 −3
  1774. arch/powerpc/platforms/85xx/p1010rdb.c +2 −4
  1775. arch/powerpc/platforms/85xx/p1022_ds.c +1 −3
  1776. arch/powerpc/platforms/85xx/p1022_rdk.c +1 −3
  1777. arch/powerpc/platforms/85xx/p1023_rdb.c +1 −3
  1778. arch/powerpc/platforms/85xx/ppa8548.c +1 −3
  1779. arch/powerpc/platforms/85xx/qemu_e500.c +1 −3
  1780. arch/powerpc/platforms/85xx/sbc8548.c +1 −3
  1781. arch/powerpc/platforms/85xx/socrates.c +1 −3
  1782. arch/powerpc/platforms/85xx/stx_gp3.c +1 −3
  1783. arch/powerpc/platforms/85xx/tqm85xx.c +1 −1
  1784. arch/powerpc/platforms/85xx/twr_p102x.c +1 −3
  1785. arch/powerpc/platforms/85xx/xes_mpc85xx.c +3 −9
  1786. arch/powerpc/platforms/86xx/Kconfig +7 −1
  1787. arch/powerpc/platforms/86xx/Makefile +1 −0
  1788. arch/powerpc/platforms/86xx/gef_ppc9a.c +1 −3
  1789. arch/powerpc/platforms/86xx/gef_sbc310.c +1 −3
  1790. arch/powerpc/platforms/86xx/gef_sbc610.c +1 −3
  1791. arch/powerpc/platforms/86xx/mpc8610_hpcd.c +1 −3
  1792. arch/powerpc/platforms/86xx/mpc86xx_hpcn.c +2 −4
  1793. arch/powerpc/platforms/86xx/mvme7100.c +121 −0
  1794. arch/powerpc/platforms/86xx/sbc8641d.c +1 −3
  1795. arch/powerpc/platforms/8xx/adder875.c +1 −2
  1796. arch/powerpc/platforms/8xx/ep88xc.c +1 −2
  1797. arch/powerpc/platforms/8xx/m8xx_setup.c +1 −1
  1798. arch/powerpc/platforms/8xx/mpc86xads_setup.c +1 −2
  1799. arch/powerpc/platforms/8xx/mpc885ads_setup.c +1 −2
  1800. arch/powerpc/platforms/8xx/mpc8xx.h +1 −1
  1801. arch/powerpc/platforms/8xx/tqm8xx_setup.c +1 −3
  1802. arch/powerpc/platforms/Kconfig +11 −0
  1803. arch/powerpc/platforms/Kconfig.cputype +0 −1
  1804. arch/powerpc/platforms/amigaone/setup.c +2 −4
  1805. arch/powerpc/platforms/cell/iommu.c +16 −16
  1806. arch/powerpc/platforms/cell/pervasive.c +1 −0
  1807. arch/powerpc/platforms/cell/setup.c +2 −5
  1808. arch/powerpc/platforms/cell/spider-pic.c +1 −1
  1809. arch/powerpc/platforms/cell/spu_base.c +2 −2
  1810. arch/powerpc/platforms/cell/spu_manage.c +1 −2
  1811. arch/powerpc/platforms/cell/spufs/file.c +1 −1
  1812. arch/powerpc/platforms/cell/spufs/run.c +1 −1
  1813. arch/powerpc/platforms/cell/spufs/sched.c +1 −1
  1814. arch/powerpc/platforms/chrp/setup.c +4 −3
  1815. arch/powerpc/platforms/embedded6xx/c2k.c +5 −5
  1816. arch/powerpc/platforms/embedded6xx/gamecube.c +6 −13
  1817. arch/powerpc/platforms/embedded6xx/holly.c +2 −4
  1818. arch/powerpc/platforms/embedded6xx/linkstation.c +4 −8
  1819. arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c +2 −4
  1820. arch/powerpc/platforms/embedded6xx/mvme5100.c +2 −4
  1821. arch/powerpc/platforms/embedded6xx/storcenter.c +2 −4
  1822. arch/powerpc/platforms/embedded6xx/wii.c +6 −13
  1823. arch/powerpc/platforms/maple/pci.c +21 −13
  1824. arch/powerpc/platforms/maple/setup.c +9 −28
  1825. arch/powerpc/platforms/pasemi/iommu.c +6 −11
  1826. arch/powerpc/platforms/pasemi/pasemi.h +0 −1
  1827. arch/powerpc/platforms/pasemi/pci.c +0 −3
  1828. arch/powerpc/platforms/pasemi/setup.c +4 −14
  1829. arch/powerpc/platforms/powermac/low_i2c.c +1 −1
  1830. arch/powerpc/platforms/powermac/pci.c +24 −14
  1831. arch/powerpc/platforms/powermac/setup.c +14 −44
  1832. arch/powerpc/platforms/powermac/smp.c +1 −2
  1833. arch/powerpc/platforms/powernv/Makefile +1 −0
  1834. arch/powerpc/platforms/powernv/eeh-powernv.c +44 −5
  1835. arch/powerpc/platforms/powernv/idle.c +159 −29
  1836. arch/powerpc/platforms/powernv/npu-dma.c +8 −8
  1837. arch/powerpc/platforms/powernv/opal-async.c +5 −0
  1838. arch/powerpc/platforms/powernv/opal-memory-errors.c +1 −1
  1839. arch/powerpc/platforms/powernv/opal-sensor.c +1 −1
  1840. arch/powerpc/platforms/powernv/opal-sysparam.c +2 −2
  1841. arch/powerpc/platforms/powernv/opal-tracepoints.c +1 −0
  1842. arch/powerpc/platforms/powernv/opal-wrappers.S +40 −34
  1843. arch/powerpc/platforms/powernv/opal.c +20 −10
  1844. arch/powerpc/platforms/powernv/pci-cxl.c +385 −0
  1845. arch/powerpc/platforms/powernv/pci-ioda.c +513 −396
  1846. arch/powerpc/platforms/powernv/pci.c +126 −8
  1847. arch/powerpc/platforms/powernv/pci.h +30 −15
  1848. arch/powerpc/platforms/powernv/powernv.h +1 −0
  1849. arch/powerpc/platforms/powernv/setup.c +5 −11
  1850. arch/powerpc/platforms/powernv/smp.c +3 −1
  1851. arch/powerpc/platforms/ps3/device-init.c +1 −1
  1852. arch/powerpc/platforms/ps3/htab.c +6 −6
  1853. arch/powerpc/platforms/ps3/repository.c +1 −1
  1854. arch/powerpc/platforms/ps3/setup.c +12 −11
  1855. arch/powerpc/platforms/ps3/system-bus.c +9 −9
  1856. arch/powerpc/platforms/ps3/time.c +1 −1
  1857. arch/powerpc/platforms/pseries/cmm.c +1 −1
  1858. arch/powerpc/platforms/pseries/dlpar.c +55 −1
  1859. arch/powerpc/platforms/pseries/eeh_pseries.c +1 −1
  1860. arch/powerpc/platforms/pseries/event_sources.c +13 −40
  1861. arch/powerpc/platforms/pseries/firmware.c +46 −2
  1862. arch/powerpc/platforms/pseries/hotplug-cpu.c +0 −13
  1863. arch/powerpc/platforms/pseries/hotplug-memory.c +104 −80
  1864. arch/powerpc/platforms/pseries/io_event_irq.c +1 −1
  1865. arch/powerpc/platforms/pseries/iommu.c +4 −55
  1866. arch/powerpc/platforms/pseries/kexec.c +1 −22
  1867. arch/powerpc/platforms/pseries/lpar.c +13 −28
  1868. arch/powerpc/platforms/pseries/nvram.c +0 −2
  1869. arch/powerpc/platforms/pseries/power.c +2 −0
  1870. arch/powerpc/platforms/pseries/pseries.h +5 −16
  1871. arch/powerpc/platforms/pseries/pseries_energy.c +4 −4
  1872. arch/powerpc/platforms/pseries/ras.c +39 −0
  1873. arch/powerpc/platforms/pseries/setup.c +58 −183
  1874. arch/powerpc/platforms/pseries/smp.c +5 −26
  1875. arch/powerpc/sysdev/cpm_common.c +17 −5
  1876. arch/powerpc/sysdev/dart_iommu.c +89 −97
  1877. arch/powerpc/sysdev/fsl_85xx_l2ctlr.c +2 −6
  1878. arch/powerpc/sysdev/fsl_rio.c +8 −17
  1879. arch/powerpc/sysdev/fsl_soc.c +5 −3
  1880. arch/powerpc/sysdev/fsl_soc.h +3 −3
  1881. arch/powerpc/sysdev/msi_bitmap.c +1 −1
  1882. arch/powerpc/sysdev/xics/Makefile +1 −1
  1883. arch/powerpc/sysdev/xics/icp-opal.c +144 −0
  1884. arch/powerpc/sysdev/xics/xics-common.c +4 −1
  1885. arch/powerpc/xmon/ppc-dis.c +1 −0
  1886. arch/powerpc/xmon/xmon.c +89 −18
  1887. arch/s390/Kconfig +1 −0
  1888. arch/s390/boot/compressed/Makefile +3 −3
  1889. arch/s390/hypfs/hypfs_diag.c +107 −270
  1890. arch/s390/include/asm/cpacf.h +10 −0
  1891. arch/s390/include/asm/diag.h +149 −0
  1892. arch/s390/include/asm/dma-mapping.h +0 −1
  1893. arch/s390/include/asm/elf.h +1 −0
  1894. arch/s390/include/asm/gmap.h +76 −6
  1895. arch/s390/include/asm/kvm_host.h +30 −3
  1896. arch/s390/include/asm/mmu.h +7 −4
  1897. arch/s390/include/asm/mmu_context.h +2 −1
  1898. arch/s390/include/asm/page.h +6 −3
  1899. arch/s390/include/asm/pgalloc.h +2 −0
  1900. arch/s390/include/asm/pgtable.h +25 −12
  1901. arch/s390/include/asm/processor.h +2 −0
  1902. arch/s390/include/asm/sclp.h +20 −3
  1903. arch/s390/include/uapi/asm/auxvec.h +2 −0
  1904. arch/s390/include/uapi/asm/kvm.h +41 −0
  1905. arch/s390/include/uapi/asm/sie.h +1 −0
  1906. arch/s390/kernel/Makefile +8 −3
  1907. arch/s390/kernel/als.c +124 −0
  1908. arch/s390/kernel/diag.c +39 −0
  1909. arch/s390/kernel/entry.h +2 −0
  1910. arch/s390/kernel/head.S +4 −39
  1911. arch/s390/kernel/kprobes.c +12 −0
  1912. arch/s390/kernel/sclp.c +3 −2
  1913. arch/s390/kvm/Makefile +1 −1
  1914. arch/s390/kvm/diag.c +5 −0
  1915. arch/s390/kvm/gaccess.c +320 −67
  1916. arch/s390/kvm/gaccess.h +3 −0
  1917. arch/s390/kvm/guestdbg.c +18 −1
  1918. arch/s390/kvm/intercept.c +31 −2
  1919. arch/s390/kvm/interrupt.c +22 −12
  1920. arch/s390/kvm/kvm-s390.c +346 −58
  1921. arch/s390/kvm/kvm-s390.h +21 −1
  1922. arch/s390/kvm/priv.c +193 −33
  1923. arch/s390/kvm/sigp.c +5 −5
  1924. arch/s390/kvm/sthyi.c +471 −0
  1925. arch/s390/kvm/trace.h +46 −3
  1926. arch/s390/kvm/vsie.c +1091 −0
  1927. arch/s390/lib/uaccess.c +2 −0
  1928. arch/s390/mm/fault.c +2 −0
  1929. arch/s390/mm/gmap.c +1514 −88
  1930. arch/s390/mm/hugetlbpage.c +38 −14
  1931. arch/s390/mm/pgalloc.c +31 −8
  1932. arch/s390/mm/pgtable.c +174 −35
  1933. arch/s390/numa/mode_emu.c +4 −0
  1934. arch/s390/numa/numa.c +7 −1
  1935. arch/s390/pci/pci_dma.c +12 −11
  1936. arch/s390/tools/gen_facilities.c +0 −1
  1937. arch/score/mm/init.c +1 −1
  1938. arch/sh/Kconfig +34 −0
  1939. arch/sh/Makefile +3 −0
  1940. arch/sh/boards/Kconfig +1 −0
  1941. arch/sh/boards/board-secureedge5410.c +1 −2
  1942. arch/sh/boards/of-generic.c +12 −3
  1943. arch/sh/boot/dts/Makefile +3 −0
  1944. arch/sh/boot/dts/j2_mimas_v2.dts +96 −0
  1945. arch/sh/configs/j2_defconfig +40 −0
  1946. arch/sh/drivers/heartbeat.c +3 −29
  1947. arch/sh/drivers/pci/pci.c +2 −2
  1948. arch/sh/include/asm/atomic.h +8 −0
  1949. arch/sh/include/asm/barrier.h +5 −0
  1950. arch/sh/include/asm/bitops-cas.h +93 −0
  1951. arch/sh/include/asm/bitops.h +2 −0
  1952. arch/sh/include/asm/cmpxchg-cas.h +24 −0
  1953. arch/sh/include/asm/cmpxchg-xchg.h +1 −1
  1954. arch/sh/include/asm/cmpxchg.h +2 −0
  1955. arch/sh/include/asm/dma-mapping.h +2 −2
  1956. arch/sh/include/asm/futex-cas.h +34 −0
  1957. arch/sh/include/asm/futex-irq.h +0 −86
  1958. arch/sh/include/asm/futex-llsc.h +41 −0
  1959. arch/sh/include/asm/futex.h +59 −38
  1960. arch/sh/include/asm/mc146818rtc.h +0 −7
  1961. arch/sh/include/asm/processor.h +1 −1
  1962. arch/sh/include/asm/rtc.h +0 −11
  1963. arch/sh/include/asm/spinlock-cas.h +117 −0
  1964. arch/sh/include/asm/spinlock-llsc.h +224 −0
  1965. arch/sh/include/asm/spinlock.h +6 −216
  1966. arch/sh/include/asm/thread_info.h +0 −26
  1967. arch/sh/include/uapi/asm/cpu-features.h +1 −0
  1968. arch/sh/include/uapi/asm/sigcontext.h +0 −3
  1969. arch/sh/include/uapi/asm/unistd_32.h +15 −1
  1970. arch/sh/include/uapi/asm/unistd_64.h +15 −1
  1971. arch/sh/kernel/cpu/clock.c +4 −0
  1972. arch/sh/kernel/cpu/init.c +5 −1
  1973. arch/sh/kernel/cpu/proc.c +1 −0
  1974. arch/sh/kernel/cpu/sh2/Makefile +4 −0
  1975. arch/sh/kernel/cpu/sh2/entry.S +55 −0
  1976. arch/sh/kernel/cpu/sh2/probe.c +38 −1
  1977. arch/sh/kernel/cpu/sh2/smp-j2.c +139 −0
  1978. arch/sh/kernel/dma-nommu.c +2 −2
  1979. arch/sh/kernel/dwarf.c +2 −4
  1980. arch/sh/kernel/head_32.S +3 −3
  1981. arch/sh/kernel/setup.c +5 −1
  1982. arch/sh/kernel/syscalls_32.S +14 −0
  1983. arch/sh/kernel/syscalls_64.S +14 −0
  1984. arch/sh/kernel/time.c +21 −15
  1985. arch/sh/mm/Makefile +2 −1
  1986. arch/sh/mm/asids-debugfs.c +1 −4
  1987. arch/sh/mm/cache-j2.c +65 −0
  1988. arch/sh/mm/cache.c +12 −1
  1989. arch/sh/mm/consistent.c +2 −2
  1990. arch/sh/mm/ioremap.c +1 −1
  1991. arch/sparc/Kconfig +1 −0
  1992. arch/sparc/include/asm/io_32.h +0 −10
  1993. arch/sparc/include/asm/pci_64.h +0 −3
  1994. arch/sparc/include/asm/thread_info_64.h +0 −24
  1995. arch/sparc/include/asm/uaccess_32.h +10 −4
  1996. arch/sparc/include/asm/uaccess_64.h +9 −2
  1997. arch/sparc/kernel/iommu.c +6 −6
  1998. arch/sparc/kernel/ioport.c +12 −12
  1999. arch/sparc/kernel/pci.c +11 −9
  2000. arch/sparc/kernel/pci_sun4v.c +6 −6
  2001. arch/sparc/kernel/vmlinux.lds.S +7 −0
  2002. arch/tile/include/asm/thread_info.h +0 −27
  2003. arch/tile/kernel/pci-dma.c +14 −14
  2004. arch/tile/kernel/vmlinux.lds.S +12 −0
  2005. arch/um/Kconfig.common +4 −2
  2006. arch/um/Makefile +2 −2
  2007. arch/um/include/asm/irqflags.h +7 −11
  2008. arch/um/kernel/Makefile +5 −0
  2009. arch/um/kernel/initrd.c +0 −2
  2010. arch/um/kernel/um_arch.c +4 −4
  2011. arch/um/os-Linux/Makefile +3 −0
  2012. arch/um/os-Linux/signal.c +3 −2
  2013. arch/unicore32/kernel/pci.c +2 −7
  2014. arch/unicore32/mm/dma-swiotlb.c +2 −2
  2015. arch/x86/Kconfig +4 −0
  2016. arch/x86/boot/Makefile +1 −1
  2017. arch/x86/entry/common.c +5 −1
  2018. arch/x86/entry/syscalls/syscall_32.tbl +1 −1
  2019. arch/x86/entry/vdso/Makefile +2 −1
  2020. arch/x86/entry/vdso/vclock_gettime.c +5 −20
  2021. arch/x86/entry/vdso/vdso2c.h +6 −0
  2022. arch/x86/events/amd/ibs.c +2 −1
  2023. arch/x86/events/amd/iommu.c +1 −1
  2024. arch/x86/events/core.c +9 −5
  2025. arch/x86/events/intel/uncore.c +2 −0
  2026. arch/x86/events/intel/uncore.h +0 −1
  2027. arch/x86/include/asm/dma-mapping.h +2 −3
  2028. arch/x86/include/asm/elf.h +2 −2
  2029. arch/x86/include/asm/fpu/internal.h +8 −8
  2030. arch/x86/include/asm/kvm_host.h +24 −7
  2031. arch/x86/include/asm/livepatch.h +0 −1
  2032. arch/x86/include/asm/mc146818rtc.h +0 −1
  2033. arch/x86/include/asm/mmu_context.h +1 −1
  2034. arch/x86/include/asm/pvclock.h +23 −16
  2035. arch/x86/include/asm/rtc.h +0 −1
  2036. arch/x86/include/asm/svm.h +0 −1
  2037. arch/x86/include/asm/swiotlb.h +2 −2
  2038. arch/x86/include/asm/syscall.h +1 −4
  2039. arch/x86/include/asm/thread_info.h +47 −24
  2040. arch/x86/include/asm/topology.h +1 −0
  2041. arch/x86/include/asm/uaccess.h +14 −12
  2042. arch/x86/include/asm/uaccess_32.h +2 −0
  2043. arch/x86/include/asm/uaccess_64.h +2 −0
  2044. arch/x86/include/asm/virtext.h +2 −6
  2045. arch/x86/include/asm/xen/page-coherent.h +4 −5
  2046. arch/x86/kernel/acpi/boot.c +1 −1
  2047. arch/x86/kernel/acpi/cstate.c +1 −1
  2048. arch/x86/kernel/amd_gart_64.c +10 −11
  2049. arch/x86/kernel/amd_nb.c +1 −1
  2050. arch/x86/kernel/apic/apic.c +2 −2
  2051. arch/x86/kernel/apic/apic_flat_64.c +1 −1
  2052. arch/x86/kernel/apic/apic_noop.c +0 −1
  2053. arch/x86/kernel/apic/hw_nmi.c +1 −1
  2054. arch/x86/kernel/apic/io_apic.c +1 −1
  2055. arch/x86/kernel/apic/ipi.c +0 −1
  2056. arch/x86/kernel/apic/probe_32.c +1 −1
  2057. arch/x86/kernel/apic/probe_64.c +1 −2
  2058. arch/x86/kernel/apic/vector.c +1 −1
  2059. arch/x86/kernel/apic/x2apic_uv_x.c +1 −1
  2060. arch/x86/kernel/cpu/common.c +1 −1
  2061. arch/x86/kernel/cpu/hypervisor.c +2 −1
  2062. arch/x86/kernel/cpu/intel.c +1 −1
  2063. arch/x86/kernel/cpu/match.c +1 −1
  2064. arch/x86/kernel/cpu/mshyperv.c +2 −1
  2065. arch/x86/kernel/cpu/mtrr/cleanup.c +0 −1
  2066. arch/x86/kernel/cpu/mtrr/generic.c +1 −1
  2067. arch/x86/kernel/cpu/mtrr/if.c +0 −1
  2068. arch/x86/kernel/cpu/mtrr/main.c +1 −1
  2069. arch/x86/kernel/cpu/perfctr-watchdog.c +1 −1
  2070. arch/x86/kernel/cpu/vmware.c +2 −1
  2071. arch/x86/kernel/crash.c +1 −1
  2072. arch/x86/kernel/dumpstack_32.c +1 −1
  2073. arch/x86/kernel/dumpstack_64.c +1 −1
  2074. arch/x86/kernel/early-quirks.c +194 −210
  2075. arch/x86/kernel/fpu/signal.c +6 −6
  2076. arch/x86/kernel/hpet.c +1 −2
  2077. arch/x86/kernel/hw_breakpoint.c +2 −1
  2078. arch/x86/kernel/i386_ksyms_32.c +2 −1
  2079. arch/x86/kernel/i8253.c +1 −1
  2080. arch/x86/kernel/io_delay.c +1 −1
  2081. arch/x86/kernel/irq_32.c +0 −1
  2082. arch/x86/kernel/irq_64.c +0 −1
  2083. arch/x86/kernel/kdebugfs.c +1 −1
  2084. arch/x86/kernel/kvm.c +1 −1
  2085. arch/x86/kernel/mpparse.c +0 −1
  2086. arch/x86/kernel/nmi.c +1 −0
  2087. arch/x86/kernel/paravirt-spinlocks.c +1 −1
  2088. arch/x86/kernel/paravirt.c +2 −1
  2089. arch/x86/kernel/pci-calgary_64.c +7 −7
  2090. arch/x86/kernel/pci-dma.c +2 −2
  2091. arch/x86/kernel/pci-nommu.c +2 −2
  2092. arch/x86/kernel/pci-swiotlb.c +3 −3
  2093. arch/x86/kernel/pmem.c +1 −1
  2094. arch/x86/kernel/process.c +2 −1
  2095. arch/x86/kernel/process_32.c +1 −1
  2096. arch/x86/kernel/process_64.c +1 −1
  2097. arch/x86/kernel/ptrace.c +9 −6
  2098. arch/x86/kernel/pvclock.c +6 −11
  2099. arch/x86/kernel/reboot.c +1 −1
  2100. arch/x86/kernel/rtc.c +1 −2
  2101. arch/x86/kernel/setup.c +1 −1
  2102. arch/x86/kernel/signal.c +31 −9
  2103. arch/x86/kernel/smpboot.c +1 −1
  2104. arch/x86/kernel/stacktrace.c +1 −1
  2105. arch/x86/kernel/test_rodata.c +0 −5
  2106. arch/x86/kernel/traps.c +1 −1
  2107. arch/x86/kernel/tsc.c +1 −1
  2108. arch/x86/kernel/x8664_ksyms_64.c +2 −1
  2109. arch/x86/kernel/x86_init.c +1 −1
  2110. arch/x86/kvm/Kconfig +0 −1
  2111. arch/x86/kvm/cpuid.c +1 −1
  2112. arch/x86/kvm/emulate.c +0 −1
  2113. arch/x86/kvm/i8254.c +3 −1
  2114. arch/x86/kvm/iommu.c +1 −3
  2115. arch/x86/kvm/irq.c +1 −1
  2116. arch/x86/kvm/irq.h +3 −0
  2117. arch/x86/kvm/irq_comm.c +32 −17
  2118. arch/x86/kvm/lapic.c +331 −213
  2119. arch/x86/kvm/lapic.h +15 −4
  2120. arch/x86/kvm/mmu.c +19 −13
  2121. arch/x86/kvm/mmu.h +0 −5
  2122. arch/x86/kvm/paging_tmpl.h +8 −2
  2123. arch/x86/kvm/pmu_intel.c +1 −1
  2124. arch/x86/kvm/svm.c +7 −1
  2125. arch/x86/kvm/trace.h +15 −0
  2126. arch/x86/kvm/vmx.c +347 −54
  2127. arch/x86/kvm/x86.c +105 −73
  2128. arch/x86/lib/cache-smp.c +1 −1
  2129. arch/x86/lib/cpu.c +2 −1
  2130. arch/x86/lib/csum-partial_64.c +1 −1
  2131. arch/x86/lib/csum-wrappers_64.c +1 −1
  2132. arch/x86/lib/delay.c +1 −1
  2133. arch/x86/lib/hweight.S +2 −0
  2134. arch/x86/lib/memcpy_32.c +1 −1
  2135. arch/x86/lib/mmx_32.c +1 −1
  2136. arch/x86/lib/msr-reg-export.c +1 −1
  2137. arch/x86/lib/msr-smp.c +1 −1
  2138. arch/x86/lib/msr.c +2 −1
  2139. arch/x86/lib/string_32.c +1 −1
  2140. arch/x86/lib/usercopy.c +1 −1
  2141. arch/x86/lib/usercopy_32.c +1 −1
  2142. arch/x86/lib/usercopy_64.c +1 −1
  2143. arch/x86/mm/amdtopology.c +0 −1
  2144. arch/x86/mm/dump_pagetables.c +1 −5
  2145. arch/x86/mm/highmem_32.c +1 −1
  2146. arch/x86/mm/init.c +2 −2
  2147. arch/x86/mm/init_32.c +0 −1
  2148. arch/x86/mm/init_64.c +0 −1
  2149. arch/x86/mm/iomap_32.c +1 −1
  2150. arch/x86/mm/ioremap.c +0 −1
  2151. arch/x86/mm/kmemcheck/kmemcheck.c +0 −1
  2152. arch/x86/mm/kmemcheck/shadow.c +1 −1
  2153. arch/x86/mm/kmmio.c +1 −1
  2154. arch/x86/mm/mmio-mod.c +1 −1
  2155. arch/x86/mm/numa.c +0 −1
  2156. arch/x86/mm/numa_32.c +1 −1
  2157. arch/x86/mm/pat.c +0 −1
  2158. arch/x86/mm/pat_rbtree.c +0 −1
  2159. arch/x86/mm/pf_in.c +0 −1
  2160. arch/x86/mm/pgtable_32.c +0 −1
  2161. arch/x86/mm/physaddr.c +1 −1
  2162. arch/x86/mm/srat.c +1 −1
  2163. arch/x86/mm/tlb.c +1 −1
  2164. arch/x86/pci/common.c +1 −1
  2165. arch/x86/pci/sta2x11-fixup.c +1 −1
  2166. arch/x86/pci/vmd.c +33 −24
  2167. arch/x86/pci/xen.c +1 −1
  2168. arch/x86/platform/ce4100/ce4100.c +0 −2
  2169. arch/x86/platform/efi/early_printk.c +2 −2
  2170. arch/x86/platform/efi/efi.c +0 −1
  2171. arch/x86/platform/efi/efi_64.c +2 −1
  2172. arch/x86/platform/intel-mid/intel-mid.c +1 −1
  2173. arch/x86/platform/intel-mid/intel_mid_vrtc.c +1 −0
  2174. arch/x86/platform/intel-mid/pwr.c +1 −3
  2175. arch/x86/platform/intel-mid/sfi.c +1 −1
  2176. arch/x86/platform/olpc/olpc.c +1 −1
  2177. arch/x86/platform/olpc/olpc_ofw.c +4 −1
  2178. arch/x86/platform/ts5500/ts5500.c +1 −5
  2179. arch/x86/platform/uv/uv_irq.c +1 −1
  2180. arch/x86/platform/uv/uv_nmi.c +1 −1
  2181. arch/x86/power/hibernate_64.c +9 −9
  2182. arch/x86/power/hibernate_asm_64.S +0 −2
  2183. arch/x86/purgatory/Makefile +2 −0
  2184. arch/x86/realmode/rm/Makefile +1 −1
  2185. arch/x86/um/delay.c +1 −1
  2186. arch/x86/um/vdso/Makefile +3 −0
  2187. arch/x86/xen/debugfs.c +0 −1
  2188. arch/x86/xen/enlighten.c +3 −4
  2189. arch/x86/xen/mmu.c +2 −1
  2190. arch/x86/xen/p2m.c +1 −1
  2191. arch/x86/xen/platform-pci-unplug.c +1 −1
  2192. arch/x86/xen/setup.c +1 −1
  2193. arch/xtensa/kernel/pci-dma.c +6 −6
  2194. block/Kconfig +0 −13
  2195. block/bio-integrity.c +1 −1
  2196. block/bio.c +18 −3
  2197. block/blk-core.c +13 −13
  2198. block/blk-merge.c +4 −4
  2199. block/blk-mq-sysfs.c +8 −4
  2200. block/blk-mq.c +19 −6
  2201. block/blk-throttle.c +4 −9
  2202. block/cfq-iosched.c +2 −2
  2203. block/genhd.c +2 −1
  2204. drivers/Makefile +1 −0
  2205. drivers/acpi/Kconfig +3 −0
  2206. drivers/acpi/Makefile +1 −0
  2207. drivers/acpi/acpi_cmos_rtc.c +1 −1
  2208. drivers/acpi/button.c +4 −0
  2209. drivers/acpi/ec.c +37 −4
  2210. drivers/acpi/osl.c +2 −3
  2211. drivers/acpi/pci_mcfg.c +92 −0
  2212. drivers/acpi/pci_root.c +35 −0
  2213. drivers/base/firmware_class.c +127 −56
  2214. drivers/base/node.c +1 −1
  2215. drivers/base/power/opp/core.c +19 −12
  2216. drivers/base/power/trace.c +3 −3
  2217. drivers/base/power/wakeup.c +7 −11
  2218. drivers/base/property.c +28 −0
  2219. drivers/block/brd.c +8 −11
  2220. drivers/block/drbd/drbd_actlog.c +0 −1
  2221. drivers/block/drbd/drbd_int.h +1 −0
  2222. drivers/block/drbd/drbd_main.c +4 −4
  2223. drivers/block/drbd/drbd_receiver.c +1 −1
  2224. drivers/block/drbd/drbd_req.c +3 −3
  2225. drivers/block/drbd/drbd_worker.c +1 −1
  2226. drivers/block/floppy.c +9 −12
  2227. drivers/block/loop.c +30 −37
  2228. drivers/block/nbd.c +4 −8
  2229. drivers/block/pktcdvd.c +1 −1
  2230. drivers/block/rbd.c +8 −7
  2231. drivers/block/umem.c +1 −1
  2232. drivers/block/zram/zram_drv.c +16 −13
  2233. drivers/bus/Kconfig +13 −0
  2234. drivers/bus/Makefile +1 −0
  2235. drivers/bus/mvebu-mbus.c +5 −5
  2236. drivers/bus/tegra-aconnect.c +112 −0
  2237. drivers/char/Kconfig +15 −27
  2238. drivers/char/Makefile +1 −1
  2239. drivers/char/agp/intel-gtt.c +8 −0
  2240. drivers/char/genrtc.c +0 −539
  2241. drivers/char/powernv-op-panel.c +223 −0
  2242. drivers/char/random.c +2 −3
  2243. drivers/clk/clk-clps711x.c +1 −1
  2244. drivers/clk/clkdev.c +2 −2
  2245. drivers/clk/ti/clk-33xx.c +3 −0
  2246. drivers/clk/ti/clk-43xx.c +7 −0
  2247. drivers/clk/ux500/u8500_of_clk.c +2 −14
  2248. drivers/clk/ux500/u8540_clk.c +2 −14
  2249. drivers/clk/ux500/u9540_clk.c +2 −2
  2250. drivers/clocksource/clps711x-timer.c +1 −1
  2251. drivers/cpufreq/Kconfig +0 −1
  2252. drivers/cpufreq/intel_pstate.c +2 −0
  2253. drivers/cpufreq/s5pv210-cpufreq.c +34 −34
  2254. drivers/cpuidle/cpuidle-powernv.c +81 −20
  2255. drivers/crypto/marvell/cesa.c +4 −3
  2256. drivers/crypto/marvell/cipher.c +7 −18
  2257. drivers/crypto/marvell/hash.c +6 −6
  2258. drivers/crypto/vmx/Kconfig +1 −1
  2259. drivers/crypto/vmx/vmx.c +2 −4
  2260. drivers/dma-buf/Kconfig +12 −3
  2261. drivers/dma-buf/Makefile +1 −1
  2262. drivers/dma-buf/dma-buf.c +25 −34
  2263. drivers/dma-buf/fence-array.c +144 −0
  2264. drivers/dma-buf/fence.c +4 −4
  2265. drivers/dma-buf/sync_file.c +1 −1
  2266. drivers/firmware/Kconfig +11 −1
  2267. drivers/firmware/Makefile +1 −0
  2268. drivers/firmware/arm_scpi.c +34 −8
  2269. drivers/firmware/broadcom/bcm47xx_sprom.c +1 −1
  2270. drivers/firmware/qcom_scm-32.c +194 −133
  2271. drivers/firmware/qcom_scm-64.c +302 −5
  2272. drivers/firmware/qcom_scm.c +342 −11
  2273. drivers/firmware/qcom_scm.h +43 −4
  2274. drivers/firmware/scpi_pm_domain.c +163 −0
  2275. drivers/fpga/Kconfig +1 −0
  2276. drivers/gpu/drm/Makefile +3 −2
  2277. drivers/gpu/drm/amd/amdgpu/amdgpu.h +77 −35
  2278. drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +2 −2
  2279. drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c +8 −17
  2280. drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c +50 −18
  2281. drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c +7 −7
  2282. drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c +3 −0
  2283. drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +35 −22
  2284. drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +4 −3
  2285. drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +22 −19
  2286. drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +235 −52
  2287. drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +8 −10
  2288. drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +26 −5
  2289. drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +13 −4
  2290. drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +1 −1
  2291. drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +44 −0
  2292. drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h +2 −0
  2293. drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +7 −15
  2294. drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +12 −0
  2295. drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h +1 −0
  2296. drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +36 −44
  2297. drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +204 −60
  2298. drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +3 −0
  2299. drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +153 −26
  2300. drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c +1 −0
  2301. drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +84 −146
  2302. drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c +1 −1
  2303. drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c +24 −66
  2304. drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h +104 −11
  2305. drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +13 −6
  2306. drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +78 −20
  2307. drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.h +3 −0
  2308. drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +91 −79
  2309. drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h +3 −1
  2310. drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +224 −110
  2311. drivers/gpu/drm/amd/amdgpu/atombios_encoders.c +1 −0
  2312. drivers/gpu/drm/amd/amdgpu/ci_dpm.c +211 −6
  2313. drivers/gpu/drm/amd/amdgpu/ci_dpm.h +1 −0
  2314. drivers/gpu/drm/amd/amdgpu/cik.c +15 −10
  2315. drivers/gpu/drm/amd/amdgpu/cik_sdma.c +18 −32
  2316. drivers/gpu/drm/amd/amdgpu/cz_dpm.c +2 −1
  2317. drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +9 −7
  2318. drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +11 −10
  2319. drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +16 −67
  2320. drivers/gpu/drm/amd/amdgpu/fiji_smc.c +1 −1
  2321. drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +74 −63
  2322. drivers/gpu/drm/amd/amdgpu/gfx_v7_0.h +0 −7
  2323. drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +363 −117
  2324. drivers/gpu/drm/amd/amdgpu/gfx_v8_0.h +0 −1
  2325. drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c +10 −32
  2326. drivers/gpu/drm/amd/amdgpu/gmc_v7_0.h +0 −7
  2327. drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c +17 −37
  2328. drivers/gpu/drm/amd/amdgpu/gmc_v8_0.h +0 −7
  2329. drivers/gpu/drm/amd/amdgpu/iceland_dpm.c +1 −1
  2330. drivers/gpu/drm/amd/amdgpu/iceland_smc.c +2 −2
  2331. drivers/gpu/drm/amd/amdgpu/iceland_smum.h +2 −2
  2332. drivers/gpu/drm/amd/amdgpu/kv_dpm.c +5 −3
  2333. drivers/gpu/drm/amd/amdgpu/ppsmc.h +4 −0
  2334. drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c +31 −46
  2335. drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +16 −32
  2336. drivers/gpu/drm/amd/amdgpu/tonga_smc.c +1 −1
  2337. drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c +33 −44
  2338. drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c +32 −44
  2339. drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c +135 −47
  2340. drivers/gpu/drm/amd/amdgpu/vce_v2_0.c +2 −0
  2341. drivers/gpu/drm/amd/amdgpu/vce_v3_0.c +114 −46
  2342. drivers/gpu/drm/amd/amdgpu/vi.c +45 −12
  2343. drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h +2 −2
  2344. drivers/gpu/drm/amd/amdkfd/kfd_priv.h +0 −3
  2345. drivers/gpu/drm/amd/amdkfd/kfd_process.c +2 −2
  2346. drivers/gpu/drm/amd/include/amd_pcie.h +14 −0
  2347. drivers/gpu/drm/amd/include/amd_shared.h +2 −9
  2348. drivers/gpu/drm/amd/include/asic_reg/bif/bif_5_0_d.h +1 −0
  2349. drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_0_d.h +3 −0
  2350. drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_0_sh_mask.h +84 −24
  2351. drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_6_0_d.h +2 −0
  2352. drivers/gpu/drm/amd/include/cgs_common.h +13 −6
  2353. drivers/gpu/drm/amd/powerplay/amd_powerplay.c +143 −10
  2354. drivers/gpu/drm/amd/powerplay/eventmgr/eventactionchains.c +0 −2
  2355. drivers/gpu/drm/amd/powerplay/eventmgr/eventtasks.c +1 −2
  2356. drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c +9 −8
  2357. drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c +11 −12
  2358. drivers/gpu/drm/amd/powerplay/hwmgr/fiji_clockpowergating.c +1 −1
  2359. drivers/gpu/drm/amd/powerplay/hwmgr/fiji_hwmgr.c +333 −71
  2360. drivers/gpu/drm/amd/powerplay/hwmgr/fiji_hwmgr.h +0 −3
  2361. drivers/gpu/drm/amd/powerplay/hwmgr/fiji_powertune.c +67 −7
  2362. drivers/gpu/drm/amd/powerplay/hwmgr/fiji_powertune.h +15 −0
  2363. drivers/gpu/drm/amd/powerplay/hwmgr/functiontables.c +5 −4
  2364. drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c +25 −1
  2365. drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c +7 −3
  2366. drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_clockpowergating.c +17 −3
  2367. drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.c +347 −117
  2368. drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.h +1 −5
  2369. drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_powertune.c +590 −0
  2370. drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_powertune.h +25 −1
  2371. drivers/gpu/drm/amd/powerplay/hwmgr/pp_acpi.c +1 −1
  2372. drivers/gpu/drm/amd/powerplay/hwmgr/ppatomctrl.c +177 −126
  2373. drivers/gpu/drm/amd/powerplay/hwmgr/ppatomctrl.h +1 −0
  2374. drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h +54 −111
  2375. drivers/gpu/drm/amd/powerplay/hwmgr/processpptables.c +22 −11
  2376. drivers/gpu/drm/amd/powerplay/hwmgr/processpptables.h +10 −7
  2377. drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c +156 −116
  2378. drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.h +0 −3
  2379. drivers/gpu/drm/amd/powerplay/hwmgr/tonga_processpptables.c +9 −18
  2380. drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h +7 −0
  2381. drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h +1 −0
  2382. drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +8 −2
  2383. drivers/gpu/drm/amd/powerplay/inc/smumgr.h +29 −0
  2384. drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c +3 −2
  2385. drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c +1 −2
  2386. drivers/gpu/drm/amd/scheduler/gpu_sched_trace.h +2 −2
  2387. drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +131 −59
  2388. drivers/gpu/drm/amd/scheduler/gpu_scheduler.h +21 −39
  2389. drivers/gpu/drm/amd/scheduler/sched_fence.c +50 −31
  2390. drivers/gpu/drm/arc/Kconfig +0 −1
  2391. drivers/gpu/drm/arc/Makefile +1 −1
  2392. drivers/gpu/drm/arc/arcpgu.h +1 −1
  2393. drivers/gpu/drm/arc/arcpgu_crtc.c +5 −11
  2394. drivers/gpu/drm/arc/arcpgu_drv.c +15 −49
  2395. drivers/gpu/drm/arc/arcpgu_hdmi.c +0 −18
  2396. drivers/gpu/drm/arc/arcpgu_sim.c +128 −0
  2397. drivers/gpu/drm/arm/Kconfig +16 −1
  2398. drivers/gpu/drm/arm/Makefile +2 −0
  2399. drivers/gpu/drm/arm/hdlcd_crtc.c +0 −19
  2400. drivers/gpu/drm/arm/hdlcd_drv.c +3 −10
  2401. drivers/gpu/drm/arm/malidp_crtc.c +216 −0
  2402. drivers/gpu/drm/arm/malidp_drv.c +519 −0
  2403. drivers/gpu/drm/arm/malidp_drv.h +54 −0
  2404. drivers/gpu/drm/arm/malidp_hw.c +691 −0
  2405. drivers/gpu/drm/arm/malidp_hw.h +241 −0
  2406. drivers/gpu/drm/arm/malidp_planes.c +298 −0
  2407. drivers/gpu/drm/arm/malidp_regs.h +172 −0
  2408. drivers/gpu/drm/armada/Kconfig +0 −4
  2409. drivers/gpu/drm/armada/armada_crtc.c +8 −8
  2410. drivers/gpu/drm/armada/armada_drv.c +1 −2
  2411. drivers/gpu/drm/armada/armada_overlay.c +1 −0
  2412. drivers/gpu/drm/ast/Kconfig +0 −4
  2413. drivers/gpu/drm/ast/ast_drv.c +1 −1
  2414. drivers/gpu/drm/ast/ast_fb.c +0 −3
  2415. drivers/gpu/drm/ast/ast_main.c +1 −2
  2416. drivers/gpu/drm/ast/ast_mode.c +6 −4
  2417. drivers/gpu/drm/ast/ast_ttm.c +1 −12
  2418. drivers/gpu/drm/atmel-hlcdc/Kconfig +0 −1
  2419. drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c +3 −3
  2420. drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c +2 −17
  2421. drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c +0 −12
  2422. drivers/gpu/drm/bochs/Kconfig +0 −4
  2423. drivers/gpu/drm/bochs/bochs_drv.c +1 −1
  2424. drivers/gpu/drm/bochs/bochs_mm.c +3 −12
  2425. drivers/gpu/drm/bridge/Kconfig +19 −0
  2426. drivers/gpu/drm/bridge/Makefile +3 −0
  2427. drivers/gpu/drm/bridge/adv7511/Kconfig +15 −0
  2428. drivers/gpu/drm/bridge/adv7511/Makefile +3 −0
  2429. drivers/gpu/drm/bridge/adv7511/adv7511.h +103 −0
  2430. drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +212 −112
  2431. drivers/gpu/drm/bridge/adv7511/adv7533.c +265 −0
  2432. drivers/gpu/drm/bridge/analogix-anx78xx.c +0 −8
  2433. drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +2 −1
  2434. drivers/gpu/drm/bridge/analogix/analogix_dp_core.h +4 −4
  2435. drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c +8 −4
  2436. drivers/gpu/drm/bridge/analogix/analogix_dp_reg.h +3 −2
  2437. drivers/gpu/drm/bridge/dw-hdmi.c +4 −26
  2438. drivers/gpu/drm/bridge/nxp-ptn3460.c +0 −8
  2439. drivers/gpu/drm/bridge/parade-ps8622.c +1 −13
  2440. drivers/gpu/drm/bridge/sii902x.c +467 −0
  2441. drivers/gpu/drm/bridge/tc358767.c +1413 −0
  2442. drivers/gpu/drm/cirrus/Kconfig +0 −4
  2443. drivers/gpu/drm/cirrus/cirrus_drv.c +1 −1
  2444. drivers/gpu/drm/cirrus/cirrus_main.c +13 −4
  2445. drivers/gpu/drm/cirrus/cirrus_mode.c +5 −6
  2446. drivers/gpu/drm/cirrus/cirrus_ttm.c +1 −12
  2447. drivers/gpu/drm/drm_atomic.c +61 −48
  2448. drivers/gpu/drm/drm_atomic_helper.c +484 −89
  2449. drivers/gpu/drm/drm_auth.c +263 −22
  2450. drivers/gpu/drm/drm_blend.c +238 −0
  2451. drivers/gpu/drm/drm_bridge.c +1 −1
  2452. drivers/gpu/drm/drm_bufs.c +4 −4
  2453. drivers/gpu/drm/drm_cache.c +1 −0
  2454. drivers/gpu/drm/drm_crtc.c +302 −423
  2455. drivers/gpu/drm/drm_crtc_helper.c +3 −33
  2456. drivers/gpu/drm/drm_crtc_internal.h +91 −1
  2457. drivers/gpu/drm/drm_debugfs.c +0 −3
  2458. drivers/gpu/drm/drm_dp_aux_dev.c +1 −2
  2459. drivers/gpu/drm/drm_dp_helper.c +80 −10
  2460. drivers/gpu/drm/drm_dp_mst_topology.c +4 −10
  2461. drivers/gpu/drm/drm_drv.c +83 −162
  2462. drivers/gpu/drm/drm_edid.c +22 −0
  2463. drivers/gpu/drm/drm_edid_load.c +1 −1
  2464. drivers/gpu/drm/drm_fb_cma_helper.c +36 −7
  2465. drivers/gpu/drm/drm_fb_helper.c +18 −38
  2466. drivers/gpu/drm/drm_fops.c +23 −126
  2467. drivers/gpu/drm/drm_fourcc.c +320 −0
  2468. drivers/gpu/drm/drm_gem.c +1 −1
  2469. drivers/gpu/drm/drm_info.c +17 −100
  2470. drivers/gpu/drm/drm_internal.h +6 −15
  2471. drivers/gpu/drm/drm_ioctl.c +90 −86
  2472. drivers/gpu/drm/drm_irq.c +71 −172
  2473. drivers/gpu/drm/drm_legacy.h +2 −6
  2474. drivers/gpu/drm/drm_lock.c +123 −117
  2475. drivers/gpu/drm/drm_memory.c +1 −1
  2476. drivers/gpu/drm/drm_mipi_dsi.c +38 −0
  2477. drivers/gpu/drm/drm_mm.c +3 −1
  2478. drivers/gpu/drm/drm_modes.c +3 −1
  2479. drivers/gpu/drm/drm_modeset_lock.c +10 −3
  2480. drivers/gpu/drm/drm_pci.c +0 −51
  2481. drivers/gpu/drm/drm_plane_helper.c +24 −14
  2482. drivers/gpu/drm/drm_platform.c +0 −18
  2483. drivers/gpu/drm/drm_prime.c +6 −4
  2484. drivers/gpu/drm/drm_probe_helper.c +19 −2
  2485. drivers/gpu/drm/drm_scatter.c +1 −1
  2486. drivers/gpu/drm/drm_simple_kms_helper.c +206 −0
  2487. drivers/gpu/drm/drm_sysfs.c +0 −71
  2488. drivers/gpu/drm/drm_vm.c +2 −56
  2489. drivers/gpu/drm/drm_vma_manager.c +3 −0
  2490. drivers/gpu/drm/etnaviv/etnaviv_drv.c +1 −4
  2491. drivers/gpu/drm/etnaviv/etnaviv_gem.c +5 −11
  2492. drivers/gpu/drm/etnaviv/etnaviv_gpu.c +52 −2
  2493. drivers/gpu/drm/etnaviv/etnaviv_gpu.h +1 −1
  2494. drivers/gpu/drm/etnaviv/state_hi.xml.h +7 −0
  2495. drivers/gpu/drm/exynos/Kconfig +1 −5
  2496. drivers/gpu/drm/exynos/exynos_dp.c +2 −2
  2497. drivers/gpu/drm/exynos/exynos_drm_dpi.c +0 −9
  2498. drivers/gpu/drm/exynos/exynos_drm_drv.c +6 −12
  2499. drivers/gpu/drm/exynos/exynos_drm_drv.h +0 −4
  2500. drivers/gpu/drm/exynos/exynos_drm_dsi.c +0 −9
  2501. drivers/gpu/drm/exynos/exynos_drm_fbdev.c +2 −3
  2502. drivers/gpu/drm/exynos/exynos_drm_g2d.c +5 −7
  2503. drivers/gpu/drm/exynos/exynos_drm_gem.c +10 −10
  2504. drivers/gpu/drm/exynos/exynos_drm_gem.h +1 −1
  2505. drivers/gpu/drm/exynos/exynos_drm_iommu.c +33 −44
  2506. drivers/gpu/drm/exynos/exynos_drm_iommu.h +91 −0
  2507. drivers/gpu/drm/exynos/exynos_drm_plane.c +9 −58
  2508. drivers/gpu/drm/exynos/exynos_drm_vidi.c +0 −8
  2509. drivers/gpu/drm/exynos/exynos_hdmi.c +2 −8
  2510. drivers/gpu/drm/exynos/exynos_mixer.c +4 −2
  2511. drivers/gpu/drm/fsl-dcu/Kconfig +0 −5
  2512. drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c +17 −27
  2513. drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +36 −13
  2514. drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h +2 −0
  2515. drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c +7 −8
  2516. drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_output.h +1 −2
  2517. drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c +16 −0
  2518. drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.h +1 −0
  2519. drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c +58 −29
  2520. drivers/gpu/drm/fsl-dcu/fsl_tcon.c +1 −0
  2521. drivers/gpu/drm/gma500/Kconfig +0 −4
  2522. drivers/gpu/drm/gma500/cdv_intel_hdmi.c +1 −2
  2523. drivers/gpu/drm/gma500/cdv_intel_lvds.c +3 −6
  2524. drivers/gpu/drm/gma500/framebuffer.c +0 −9
  2525. drivers/gpu/drm/gma500/gma_display.c +6 −5
  2526. drivers/gpu/drm/gma500/gma_display.h +2 −2
  2527. drivers/gpu/drm/gma500/psb_drv.c +2 −4
  2528. drivers/gpu/drm/gma500/psb_intel_display.c +0 −7
  2529. drivers/gpu/drm/gma500/psb_intel_lvds.c +3 −6
  2530. drivers/gpu/drm/hisilicon/kirin/Kconfig +1 −0
  2531. drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +20 −14
  2532. drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +1 −10
  2533. drivers/gpu/drm/i2c/Kconfig +0 −6
  2534. drivers/gpu/drm/i2c/Makefile +0 −2
  2535. drivers/gpu/drm/i2c/ch7006_drv.c +2 −7
  2536. drivers/gpu/drm/i915/Kconfig +22 −0
  2537. drivers/gpu/drm/i915/Kconfig.debug +3 −0
  2538. drivers/gpu/drm/i915/Makefile +10 −2
  2539. drivers/gpu/drm/i915/gvt/Makefile +5 −0
  2540. drivers/gpu/drm/i915/gvt/debug.h +34 −0
  2541. drivers/gpu/drm/i915/gvt/gvt.c +145 −0
  2542. drivers/gpu/drm/i915/gvt/gvt.h +69 −0
  2543. drivers/gpu/drm/i915/gvt/hypercall.h +38 −0
  2544. drivers/gpu/drm/i915/gvt/mpt.h +49 −0
  2545. drivers/gpu/drm/i915/i915_cmd_parser.c +40 −13
  2546. drivers/gpu/drm/i915/i915_debugfs.c +291 −279
  2547. drivers/gpu/drm/i915/i915_dma.c +0 −1587
  2548. drivers/gpu/drm/i915/i915_drv.c +1480 −640
  2549. drivers/gpu/drm/i915/i915_drv.h +557 −229
  2550. drivers/gpu/drm/i915/i915_gem.c +727 −535
  2551. drivers/gpu/drm/i915/i915_gem_batch_pool.c +3 −3
  2552. drivers/gpu/drm/i915/i915_gem_context.c +321 −194
  2553. drivers/gpu/drm/i915/i915_gem_dmabuf.h +45 −0
  2554. drivers/gpu/drm/i915/i915_gem_evict.c +51 −4
  2555. drivers/gpu/drm/i915/i915_gem_execbuffer.c +21 −23
  2556. drivers/gpu/drm/i915/i915_gem_fence.c +20 −18
  2557. drivers/gpu/drm/i915/i915_gem_gtt.c +228 −162
  2558. drivers/gpu/drm/i915/i915_gem_gtt.h +61 −23
  2559. drivers/gpu/drm/i915/i915_gem_render_state.c +37 −8
  2560. drivers/gpu/drm/i915/i915_gem_shrinker.c +46 −12
  2561. drivers/gpu/drm/i915/i915_gem_stolen.c +5 −5
  2562. drivers/gpu/drm/i915/i915_gem_tiling.c +4 −4
  2563. drivers/gpu/drm/i915/i915_gem_userptr.c +4 −8
  2564. drivers/gpu/drm/i915/i915_gpu_error.c +125 −78
  2565. drivers/gpu/drm/i915/i915_guc_reg.h +3 −3
  2566. drivers/gpu/drm/i915/i915_guc_submission.c +306 −232
  2567. drivers/gpu/drm/i915/i915_irq.c +367 −440
  2568. drivers/gpu/drm/i915/i915_params.c +20 −3
  2569. drivers/gpu/drm/i915/i915_params.h +4 −1
  2570. drivers/gpu/drm/i915/i915_pci.c +503 −0
  2571. drivers/gpu/drm/i915/i915_pvinfo.h +113 −0
  2572. drivers/gpu/drm/i915/i915_reg.h +59 −6
  2573. drivers/gpu/drm/i915/i915_suspend.c +4 −4
  2574. drivers/gpu/drm/i915/i915_sysfs.c +16 −24
  2575. drivers/gpu/drm/i915/i915_trace.h +24 −30
  2576. drivers/gpu/drm/i915/i915_vgpu.c +24 −20
  2577. drivers/gpu/drm/i915/i915_vgpu.h +4 −88
  2578. drivers/gpu/drm/i915/intel_atomic.c +3 −2
  2579. drivers/gpu/drm/i915/intel_audio.c +22 −28
  2580. drivers/gpu/drm/i915/intel_bios.c +21 −2
  2581. drivers/gpu/drm/i915/intel_bios.h +15 −1
.cocciconfig+3−0
@@ -0,0 +1,3 @@
1[spatch]
2 options = --timeout 200
3 options = --use-gitgrep
.gitignore+2−0
@@ -37,6 +37,7 @@ modules.builtin · 36 unmodified lines
37Module.symvers37Module.symvers
38*.dwo38*.dwo
39*.su39*.su
40*.c.[012]*.*
40 41
41#42#
42# Top-level generic files43# Top-level generic files
@@ -66,6 +67,7 @@ Module.symvers · 23 unmodified lines
66#67#
67!.gitignore68!.gitignore
68!.mailmap69!.mailmap
70!.cocciconfig
69 71
70#72#
71# Generated include files73# Generated include files
.mailmap+13−2
@@ -92,9 +92,17 @@ Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski.k@gmail.com> · 91 unmodified lines
92Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>92Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
93Leonid I Ananiev <leonid.i.ananiev@intel.com>93Leonid I Ananiev <leonid.i.ananiev@intel.com>
94Linas Vepstas <linas@austin.ibm.com>94Linas Vepstas <linas@austin.ibm.com>
95Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@web.de>
96Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@ascom.ch>
95Mark Brown <broonie@sirena.org.uk>97Mark Brown <broonie@sirena.org.uk>
96Matthieu CASTET <castet.matthieu@free.fr>98Matthieu CASTET <castet.matthieu@free.fr>
97Mauro Carvalho Chehab <mchehab@kernel.org> <maurochehab@gmail.com> <mchehab@infradead.org> <mchehab@redhat.com> <m.chehab@samsung.com> <mchehab@osg.samsung.com> <mchehab@s-opensource.com>99Mauro Carvalho Chehab <mchehab@kernel.org> <mchehab@brturbo.com.br>
100Mauro Carvalho Chehab <mchehab@kernel.org> <maurochehab@gmail.com>
101Mauro Carvalho Chehab <mchehab@kernel.org> <mchehab@infradead.org>
102Mauro Carvalho Chehab <mchehab@kernel.org> <mchehab@redhat.com>
103Mauro Carvalho Chehab <mchehab@kernel.org> <m.chehab@samsung.com>
104Mauro Carvalho Chehab <mchehab@kernel.org> <mchehab@osg.samsung.com>
105Mauro Carvalho Chehab <mchehab@kernel.org> <mchehab@s-opensource.com>
98Matt Ranostay <mranostay@gmail.com> Matthew Ranostay <mranostay@embeddedalley.com>106Matt Ranostay <mranostay@gmail.com> Matthew Ranostay <mranostay@embeddedalley.com>
99Matt Ranostay <mranostay@gmail.com> <matt.ranostay@intel.com>107Matt Ranostay <mranostay@gmail.com> <matt.ranostay@intel.com>
100Mayuresh Janorkar <mayur@ti.com>108Mayuresh Janorkar <mayur@ti.com>
@@ -130,7 +138,10 @@ Santosh Shilimkar <santosh.shilimkar@oracle.org> · 29 unmodified lines
130Sascha Hauer <s.hauer@pengutronix.de>138Sascha Hauer <s.hauer@pengutronix.de>
131S.Çağlar Onur <caglar@pardus.org.tr>139S.Çağlar Onur <caglar@pardus.org.tr>
132Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>140Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>
133Shuah Khan <shuah@kernel.org> <shuahkhan@gmail.com> <shuah.khan@hp.com> <shuahkh@osg.samsung.com> <shuah.kh@samsung.com>141Shuah Khan <shuah@kernel.org> <shuahkhan@gmail.com>
142Shuah Khan <shuah@kernel.org> <shuah.khan@hp.com>
143Shuah Khan <shuah@kernel.org> <shuahkh@osg.samsung.com>
144Shuah Khan <shuah@kernel.org> <shuah.kh@samsung.com>
134Simon Kelley <simon@thekelleys.org.uk>145Simon Kelley <simon@thekelleys.org.uk>
135Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>146Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
136Stephen Hemminger <shemminger@osdl.org>147Stephen Hemminger <shemminger@osdl.org>
Documentation/ABI/testing/sysfs-class-pwm+9−0
@@ -77,3 +77,12 @@ Description: · 76 unmodified lines
77 Enable/disable the PWM signal.77 Enable/disable the PWM signal.
78 0 is disabled78 0 is disabled
79 1 is enabled79 1 is enabled
80
81What: /sys/class/pwm/pwmchipN/pwmX/capture
82Date: June 2016
83KernelVersion: 4.8
84Contact: Lee Jones <lee.jones@linaro.org>
85Description:
86 Capture information about a PWM signal. The output format is a
87 pair unsigned integers (period and duty cycle), separated by a
88 single space.
Documentation/DMA-API.txt+14−19
@@ -369,35 +369,32 @@ See also dma_map_single(). · 368 unmodified lines
369dma_addr_t369dma_addr_t
370dma_map_single_attrs(struct device *dev, void *cpu_addr, size_t size,370dma_map_single_attrs(struct device *dev, void *cpu_addr, size_t size,
371 enum dma_data_direction dir,371 enum dma_data_direction dir,
372 struct dma_attrs *attrs)372 unsigned long attrs)
373 373
374void374void
375dma_unmap_single_attrs(struct device *dev, dma_addr_t dma_addr,375dma_unmap_single_attrs(struct device *dev, dma_addr_t dma_addr,
376 size_t size, enum dma_data_direction dir,376 size_t size, enum dma_data_direction dir,
377 struct dma_attrs *attrs)377 unsigned long attrs)
378 378
379int379int
380dma_map_sg_attrs(struct device *dev, struct scatterlist *sgl,380dma_map_sg_attrs(struct device *dev, struct scatterlist *sgl,
381 int nents, enum dma_data_direction dir,381 int nents, enum dma_data_direction dir,
382 struct dma_attrs *attrs)382 unsigned long attrs)
383 383
384void384void
385dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sgl,385dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sgl,
386 int nents, enum dma_data_direction dir,386 int nents, enum dma_data_direction dir,
387 struct dma_attrs *attrs)387 unsigned long attrs)
388 388
389The four functions above are just like the counterpart functions389The four functions above are just like the counterpart functions
390without the _attrs suffixes, except that they pass an optional390without the _attrs suffixes, except that they pass an optional
391struct dma_attrs*.391dma_attrs.
392
393struct dma_attrs encapsulates a set of "DMA attributes". For the
394definition of struct dma_attrs see linux/dma-attrs.h.
395 392
396The interpretation of DMA attributes is architecture-specific, and393The interpretation of DMA attributes is architecture-specific, and
397each attribute should be documented in Documentation/DMA-attributes.txt.394each attribute should be documented in Documentation/DMA-attributes.txt.
398 395
399If struct dma_attrs* is NULL, the semantics of each of these396If dma_attrs are 0, the semantics of each of these functions
400functions is identical to those of the corresponding function397is identical to those of the corresponding function
401without the _attrs suffix. As a result dma_map_single_attrs()398without the _attrs suffix. As a result dma_map_single_attrs()
402can generally replace dma_map_single(), etc.399can generally replace dma_map_single(), etc.
403 400
@@ -405,15 +402,15 @@ As an example of the use of the *_attrs functions, here's how · 1 unmodified line
405you could pass an attribute DMA_ATTR_FOO when mapping memory402you could pass an attribute DMA_ATTR_FOO when mapping memory
406for DMA:403for DMA:
407 404
408#include <linux/dma-attrs.h>405#include <linux/dma-mapping.h>
409/* DMA_ATTR_FOO should be defined in linux/dma-attrs.h and406/* DMA_ATTR_FOO should be defined in linux/dma-mapping.h and
410 * documented in Documentation/DMA-attributes.txt */407 * documented in Documentation/DMA-attributes.txt */
411...408...
412 409
413 DEFINE_DMA_ATTRS(attrs);410 unsigned long attr;
414 dma_set_attr(DMA_ATTR_FOO, &attrs);411 attr |= DMA_ATTR_FOO;
415 ....412 ....
416 n = dma_map_sg_attrs(dev, sg, nents, DMA_TO_DEVICE, &attr);413 n = dma_map_sg_attrs(dev, sg, nents, DMA_TO_DEVICE, attr);
417 ....414 ....
418 415
419Architectures that care about DMA_ATTR_FOO would check for its416Architectures that care about DMA_ATTR_FOO would check for its
@@ -422,12 +419,10 @@ routines, e.g.: · 2 unmodified lines
422 419
423void whizco_dma_map_sg_attrs(struct device *dev, dma_addr_t dma_addr,420void whizco_dma_map_sg_attrs(struct device *dev, dma_addr_t dma_addr,
424 size_t size, enum dma_data_direction dir,421 size_t size, enum dma_data_direction dir,
425 struct dma_attrs *attrs)422 unsigned long attrs)
426{423{
427 ....424 ....
428 int foo = dma_get_attr(DMA_ATTR_FOO, attrs);425 if (attrs & DMA_ATTR_FOO)
429 ....
430 if (foo)
431 /* twizzle the frobnozzle */426 /* twizzle the frobnozzle */
432 ....427 ....
433 428
Documentation/DMA-attributes.txt+1−1
@@ -2,7 +2,7 @@ · 1 unmodified line
2 ==============2 ==============
3 3
4This document describes the semantics of the DMA attributes that are4This document describes the semantics of the DMA attributes that are
5defined in linux/dma-attrs.h.5defined in linux/dma-mapping.h.
6 6
7DMA_ATTR_WRITE_BARRIER7DMA_ATTR_WRITE_BARRIER
8----------------------8----------------------
Documentation/DocBook/Makefile+11−20
@@ -6,8 +6,6 @@ · 5 unmodified lines
6# To add a new book the only step required is to add the book to the6# To add a new book the only step required is to add the book to the
7# list of DOCBOOKS.7# list of DOCBOOKS.
8 8
9ifeq ($(IGNORE_DOCBOOKS),)
10
11DOCBOOKS := z8530book.xml device-drivers.xml \9DOCBOOKS := z8530book.xml device-drivers.xml \
12 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \10 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
13 writing_usb_driver.xml networking.xml \11 writing_usb_driver.xml networking.xml \
@@ -16,10 +14,16 @@ DOCBOOKS := z8530book.xml device-drivers.xml \ · 2 unmodified lines
16 genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \14 genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
17 80211.xml debugobjects.xml sh.xml regulator.xml \15 80211.xml debugobjects.xml sh.xml regulator.xml \
18 alsa-driver-api.xml writing-an-alsa-driver.xml \16 alsa-driver-api.xml writing-an-alsa-driver.xml \
19 tracepoint.xml gpu.xml media_api.xml w1.xml \17 tracepoint.xml w1.xml \
20 writing_musb_glue_layer.xml crypto-API.xml iio.xml18 writing_musb_glue_layer.xml crypto-API.xml iio.xml
21 19
22include Documentation/DocBook/media/Makefile20ifeq ($(DOCBOOKS),)
21
22# Skip DocBook build if the user explicitly requested no DOCBOOKS.
23.DEFAULT:
24 @echo " SKIP DocBook $@ target (DOCBOOKS=\"\" specified)."
25
26else
23 27
24###28###
25# The build process is as follows (targets):29# The build process is as follows (targets):
@@ -49,7 +53,6 @@ pdfdocs: $(PDF) · 23 unmodified lines
49HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS)))53HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS)))
50htmldocs: $(HTML)54htmldocs: $(HTML)
51 $(call cmd,build_main_index)55 $(call cmd,build_main_index)
52 $(call install_media_images)
53 56
54MAN := $(patsubst %.xml, %.9, $(BOOKS))57MAN := $(patsubst %.xml, %.9, $(BOOKS))
55mandocs: $(MAN)58mandocs: $(MAN)
@@ -217,19 +220,7 @@ silent_gen_xml = : · 161 unmodified lines
217 -e "s/>/\\&gt;/g"; \220 -e "s/>/\\&gt;/g"; \
218 echo "</programlisting>") > $@221 echo "</programlisting>") > $@
219 222
220else223endif # DOCBOOKS=""
221
222# Needed, due to cleanmediadocs
223include Documentation/DocBook/media/Makefile
224
225htmldocs:
226pdfdocs:
227psdocs:
228xmldocs:
229installmandocs:
230
231endif # IGNORE_DOCBOOKS
232
233 224
234###225###
235# Help targets as used by the top-level makefile226# Help targets as used by the top-level makefile
@@ -246,7 +237,7 @@ dochelp: · 10 unmodified lines
246 @echo ' make DOCBOOKS="s1.xml s2.xml" [target] Generate only docs s1.xml s2.xml'237 @echo ' make DOCBOOKS="s1.xml s2.xml" [target] Generate only docs s1.xml s2.xml'
247 @echo ' valid values for DOCBOOKS are: $(DOCBOOKS)'238 @echo ' valid values for DOCBOOKS are: $(DOCBOOKS)'
248 @echo239 @echo
249 @echo " make IGNORE_DOCBOOKS=1 [target] Don't generate docs from Docbook"240 @echo " make DOCBOOKS=\"\" [target] Don't generate docs from Docbook"
250 @echo ' This is useful to generate only the ReST docs (Sphinx)'241 @echo ' This is useful to generate only the ReST docs (Sphinx)'
251 242
252 243
@@ -269,7 +260,7 @@ clean-files := $(DOCBOOKS) \ · 16 unmodified lines
269 260
270clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man261clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
271 262
272cleandocs: cleanmediadocs263cleandocs:
273 $(Q)rm -f $(call objectify, $(clean-files))264 $(Q)rm -f $(call objectify, $(clean-files))
274 $(Q)rm -rf $(call objectify, $(clean-dirs))265 $(Q)rm -rf $(call objectify, $(clean-dirs))
275 266
Documentation/DocBook/device-drivers.tmpl+4−0
@@ -161,6 +161,10 @@ X!Edrivers/base/interface.c · 160 unmodified lines
161!Iinclude/linux/fence.h161!Iinclude/linux/fence.h
162!Edrivers/dma-buf/seqno-fence.c162!Edrivers/dma-buf/seqno-fence.c
163!Iinclude/linux/seqno-fence.h163!Iinclude/linux/seqno-fence.h
164!Edrivers/dma-buf/fence-array.c
165!Iinclude/linux/fence-array.h
166!Edrivers/dma-buf/reservation.c
167!Iinclude/linux/reservation.h
164!Edrivers/dma-buf/sync_file.c168!Edrivers/dma-buf/sync_file.c
165!Iinclude/linux/sync_file.h169!Iinclude/linux/sync_file.h
166 </sect2>170 </sect2>
Documentation/DocBook/gpu.tmpl+0−3540
@@ -1,3540 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
4
5<book id="gpuDevelopersGuide">
6 <bookinfo>
7 <title>Linux GPU Driver Developer's Guide</title>
8
9 <authorgroup>
10 <author>
11 <firstname>Jesse</firstname>
12 <surname>Barnes</surname>
13 <contrib>Initial version</contrib>
14 <affiliation>
15 <orgname>Intel Corporation</orgname>
16 <address>
17 <email>jesse.barnes@intel.com</email>
18 </address>
19 </affiliation>
20 </author>
21 <author>
22 <firstname>Laurent</firstname>
23 <surname>Pinchart</surname>
24 <contrib>Driver internals</contrib>
25 <affiliation>
26 <orgname>Ideas on board SPRL</orgname>
27 <address>
28 <email>laurent.pinchart@ideasonboard.com</email>
29 </address>
30 </affiliation>
31 </author>
32 <author>
33 <firstname>Daniel</firstname>
34 <surname>Vetter</surname>
35 <contrib>Contributions all over the place</contrib>
36 <affiliation>
37 <orgname>Intel Corporation</orgname>
38 <address>
39 <email>daniel.vetter@ffwll.ch</email>
40 </address>
41 </affiliation>
42 </author>
43 <author>
44 <firstname>Lukas</firstname>
45 <surname>Wunner</surname>
46 <contrib>vga_switcheroo documentation</contrib>
47 <affiliation>
48 <address>
49 <email>lukas@wunner.de</email>
50 </address>
51 </affiliation>
52 </author>
53 </authorgroup>
54
55 <copyright>
56 <year>2008-2009</year>
57 <year>2013-2014</year>
58 <holder>Intel Corporation</holder>
59 </copyright>
60 <copyright>
61 <year>2012</year>
62 <holder>Laurent Pinchart</holder>
63 </copyright>
64 <copyright>
65 <year>2015</year>
66 <holder>Lukas Wunner</holder>
67 </copyright>
68
69 <legalnotice>
70 <para>
71 The contents of this file may be used under the terms of the GNU
72 General Public License version 2 (the "GPL") as distributed in
73 the kernel source COPYING file.
74 </para>
75 </legalnotice>
76
77 <revhistory>
78 <!-- Put document revisions here, newest first. -->
79 <revision>
80 <revnumber>1.0</revnumber>
81 <date>2012-07-13</date>
82 <authorinitials>LP</authorinitials>
83 <revremark>Added extensive documentation about driver internals.
84 </revremark>
85 </revision>
86 <revision>
87 <revnumber>1.1</revnumber>
88 <date>2015-10-11</date>
89 <authorinitials>LW</authorinitials>
90 <revremark>Added vga_switcheroo documentation.
91 </revremark>
92 </revision>
93 </revhistory>
94 </bookinfo>
95
96<toc></toc>
97
98<part id="drmCore">
99 <title>DRM Core</title>
100 <partintro>
101 <para>
102 This first part of the GPU Driver Developer's Guide documents core DRM
103 code, helper libraries for writing drivers and generic userspace
104 interfaces exposed by DRM drivers.
105 </para>
106 </partintro>
107
108 <chapter id="drmIntroduction">
109 <title>Introduction</title>
110 <para>
111 The Linux DRM layer contains code intended to support the needs
112 of complex graphics devices, usually containing programmable
113 pipelines well suited to 3D graphics acceleration. Graphics
114 drivers in the kernel may make use of DRM functions to make
115 tasks like memory management, interrupt handling and DMA easier,
116 and provide a uniform interface to applications.
117 </para>
118 <para>
119 A note on versions: this guide covers features found in the DRM
120 tree, including the TTM memory manager, output configuration and
121 mode setting, and the new vblank internals, in addition to all
122 the regular features found in current kernels.
123 </para>
124 <para>
125 [Insert diagram of typical DRM stack here]
126 </para>
127 <sect1>
128 <title>Style Guidelines</title>
129 <para>
130 For consistency this documentation uses American English. Abbreviations
131 are written as all-uppercase, for example: DRM, KMS, IOCTL, CRTC, and so
132 on. To aid in reading, documentations make full use of the markup
133 characters kerneldoc provides: @parameter for function parameters, @member
134 for structure members, &amp;structure to reference structures and
135 function() for functions. These all get automatically hyperlinked if
136 kerneldoc for the referenced objects exists. When referencing entries in
137 function vtables please use -&gt;vfunc(). Note that kerneldoc does
138 not support referencing struct members directly, so please add a reference
139 to the vtable struct somewhere in the same paragraph or at least section.
140 </para>
141 <para>
142 Except in special situations (to separate locked from unlocked variants)
143 locking requirements for functions aren't documented in the kerneldoc.
144 Instead locking should be check at runtime using e.g.
145 <code>WARN_ON(!mutex_is_locked(...));</code>. Since it's much easier to
146 ignore documentation than runtime noise this provides more value. And on
147 top of that runtime checks do need to be updated when the locking rules
148 change, increasing the chances that they're correct. Within the
149 documentation the locking rules should be explained in the relevant
150 structures: Either in the comment for the lock explaining what it
151 protects, or data fields need a note about which lock protects them, or
152 both.
153 </para>
154 <para>
155 Functions which have a non-<code>void</code> return value should have a
156 section called "Returns" explaining the expected return values in
157 different cases and their meanings. Currently there's no consensus whether
158 that section name should be all upper-case or not, and whether it should
159 end in a colon or not. Go with the file-local style. Other common section
160 names are "Notes" with information for dangerous or tricky corner cases,
161 and "FIXME" where the interface could be cleaned up.
162 </para>
163 </sect1>
164 </chapter>
165
166 <!-- Internals -->
167
168 <chapter id="drmInternals">
169 <title>DRM Internals</title>
170 <para>
171 This chapter documents DRM internals relevant to driver authors
172 and developers working to add support for the latest features to
173 existing drivers.
174 </para>
175 <para>
176 First, we go over some typical driver initialization
177 requirements, like setting up command buffers, creating an
178 initial output configuration, and initializing core services.
179 Subsequent sections cover core internals in more detail,
180 providing implementation notes and examples.
181 </para>
182 <para>
183 The DRM layer provides several services to graphics drivers,
184 many of them driven by the application interfaces it provides
185 through libdrm, the library that wraps most of the DRM ioctls.
186 These include vblank event handling, memory
187 management, output management, framebuffer management, command
188 submission &amp; fencing, suspend/resume support, and DMA
189 services.
190 </para>
191
192 <!-- Internals: driver init -->
193
194 <sect1>
195 <title>Driver Initialization</title>
196 <para>
197 At the core of every DRM driver is a <structname>drm_driver</structname>
198 structure. Drivers typically statically initialize a drm_driver structure,
199 and then pass it to <function>drm_dev_alloc()</function> to allocate a
200 device instance. After the device instance is fully initialized it can be
201 registered (which makes it accessible from userspace) using
202 <function>drm_dev_register()</function>.
203 </para>
204 <para>
205 The <structname>drm_driver</structname> structure contains static
206 information that describes the driver and features it supports, and
207 pointers to methods that the DRM core will call to implement the DRM API.
208 We will first go through the <structname>drm_driver</structname> static
209 information fields, and will then describe individual operations in
210 details as they get used in later sections.
211 </para>
212 <sect2>
213 <title>Driver Information</title>
214 <sect3>
215 <title>Driver Features</title>
216 <para>
217 Drivers inform the DRM core about their requirements and supported
218 features by setting appropriate flags in the
219 <structfield>driver_features</structfield> field. Since those flags
220 influence the DRM core behaviour since registration time, most of them
221 must be set to registering the <structname>drm_driver</structname>
222 instance.
223 </para>
224 <synopsis>u32 driver_features;</synopsis>
225 <variablelist>
226 <title>Driver Feature Flags</title>
227 <varlistentry>
228 <term>DRIVER_USE_AGP</term>
229 <listitem><para>
230 Driver uses AGP interface, the DRM core will manage AGP resources.
231 </para></listitem>
232 </varlistentry>
233 <varlistentry>
234 <term>DRIVER_REQUIRE_AGP</term>
235 <listitem><para>
236 Driver needs AGP interface to function. AGP initialization failure
237 will become a fatal error.
238 </para></listitem>
239 </varlistentry>
240 <varlistentry>
241 <term>DRIVER_PCI_DMA</term>
242 <listitem><para>
243 Driver is capable of PCI DMA, mapping of PCI DMA buffers to
244 userspace will be enabled. Deprecated.
245 </para></listitem>
246 </varlistentry>
247 <varlistentry>
248 <term>DRIVER_SG</term>
249 <listitem><para>
250 Driver can perform scatter/gather DMA, allocation and mapping of
251 scatter/gather buffers will be enabled. Deprecated.
252 </para></listitem>
253 </varlistentry>
254 <varlistentry>
255 <term>DRIVER_HAVE_DMA</term>
256 <listitem><para>
257 Driver supports DMA, the userspace DMA API will be supported.
258 Deprecated.
259 </para></listitem>
260 </varlistentry>
261 <varlistentry>
262 <term>DRIVER_HAVE_IRQ</term><term>DRIVER_IRQ_SHARED</term>
263 <listitem><para>
264 DRIVER_HAVE_IRQ indicates whether the driver has an IRQ handler
265 managed by the DRM Core. The core will support simple IRQ handler
266 installation when the flag is set. The installation process is
267 described in <xref linkend="drm-irq-registration"/>.</para>
268 <para>DRIVER_IRQ_SHARED indicates whether the device &amp; handler
269 support shared IRQs (note that this is required of PCI drivers).
270 </para></listitem>
271 </varlistentry>
272 <varlistentry>
273 <term>DRIVER_GEM</term>
274 <listitem><para>
275 Driver use the GEM memory manager.
276 </para></listitem>
277 </varlistentry>
278 <varlistentry>
279 <term>DRIVER_MODESET</term>
280 <listitem><para>
281 Driver supports mode setting interfaces (KMS).
282 </para></listitem>
283 </varlistentry>
284 <varlistentry>
285 <term>DRIVER_PRIME</term>
286 <listitem><para>
287 Driver implements DRM PRIME buffer sharing.
288 </para></listitem>
289 </varlistentry>
290 <varlistentry>
291 <term>DRIVER_RENDER</term>
292 <listitem><para>
293 Driver supports dedicated render nodes.
294 </para></listitem>
295 </varlistentry>
296 <varlistentry>
297 <term>DRIVER_ATOMIC</term>
298 <listitem><para>
299 Driver supports atomic properties. In this case the driver
300 must implement appropriate obj->atomic_get_property() vfuncs
301 for any modeset objects with driver specific properties.
302 </para></listitem>
303 </varlistentry>
304 </variablelist>
305 </sect3>
306 <sect3>
307 <title>Major, Minor and Patchlevel</title>
308 <synopsis>int major;
309int minor;
310int patchlevel;</synopsis>
311 <para>
312 The DRM core identifies driver versions by a major, minor and patch
313 level triplet. The information is printed to the kernel log at
314 initialization time and passed to userspace through the
315 DRM_IOCTL_VERSION ioctl.
316 </para>
317 <para>
318 The major and minor numbers are also used to verify the requested driver
319 API version passed to DRM_IOCTL_SET_VERSION. When the driver API changes
320 between minor versions, applications can call DRM_IOCTL_SET_VERSION to
321 select a specific version of the API. If the requested major isn't equal
322 to the driver major, or the requested minor is larger than the driver
323 minor, the DRM_IOCTL_SET_VERSION call will return an error. Otherwise
324 the driver's set_version() method will be called with the requested
325 version.
326 </para>
327 </sect3>
328 <sect3>
329 <title>Name, Description and Date</title>
330 <synopsis>char *name;
331char *desc;
332char *date;</synopsis>
333 <para>
334 The driver name is printed to the kernel log at initialization time,
335 used for IRQ registration and passed to userspace through
336 DRM_IOCTL_VERSION.
337 </para>
338 <para>
339 The driver description is a purely informative string passed to
340 userspace through the DRM_IOCTL_VERSION ioctl and otherwise unused by
341 the kernel.
342 </para>
343 <para>
344 The driver date, formatted as YYYYMMDD, is meant to identify the date of
345 the latest modification to the driver. However, as most drivers fail to
346 update it, its value is mostly useless. The DRM core prints it to the
347 kernel log at initialization time and passes it to userspace through the
348 DRM_IOCTL_VERSION ioctl.
349 </para>
350 </sect3>
351 </sect2>
352 <sect2>
353 <title>Device Instance and Driver Handling</title>
354!Pdrivers/gpu/drm/drm_drv.c driver instance overview
355!Edrivers/gpu/drm/drm_drv.c
356 </sect2>
357 <sect2>
358 <title>Driver Load</title>
359 <sect3 id="drm-irq-registration">
360 <title>IRQ Registration</title>
361 <para>
362 The DRM core tries to facilitate IRQ handler registration and
363 unregistration by providing <function>drm_irq_install</function> and
364 <function>drm_irq_uninstall</function> functions. Those functions only
365 support a single interrupt per device, devices that use more than one
366 IRQs need to be handled manually.
367 </para>
368 <sect4>
369 <title>Managed IRQ Registration</title>
370 <para>
371 <function>drm_irq_install</function> starts by calling the
372 <methodname>irq_preinstall</methodname> driver operation. The operation
373 is optional and must make sure that the interrupt will not get fired by
374 clearing all pending interrupt flags or disabling the interrupt.
375 </para>
376 <para>
377 The passed-in IRQ will then be requested by a call to
378 <function>request_irq</function>. If the DRIVER_IRQ_SHARED driver
379 feature flag is set, a shared (IRQF_SHARED) IRQ handler will be
380 requested.
381 </para>
382 <para>
383 The IRQ handler function must be provided as the mandatory irq_handler
384 driver operation. It will get passed directly to
385 <function>request_irq</function> and thus has the same prototype as all
386 IRQ handlers. It will get called with a pointer to the DRM device as the
387 second argument.
388 </para>
389 <para>
390 Finally the function calls the optional
391 <methodname>irq_postinstall</methodname> driver operation. The operation
392 usually enables interrupts (excluding the vblank interrupt, which is
393 enabled separately), but drivers may choose to enable/disable interrupts
394 at a different time.
395 </para>
396 <para>
397 <function>drm_irq_uninstall</function> is similarly used to uninstall an
398 IRQ handler. It starts by waking up all processes waiting on a vblank
399 interrupt to make sure they don't hang, and then calls the optional
400 <methodname>irq_uninstall</methodname> driver operation. The operation
401 must disable all hardware interrupts. Finally the function frees the IRQ
402 by calling <function>free_irq</function>.
403 </para>
404 </sect4>
405 <sect4>
406 <title>Manual IRQ Registration</title>
407 <para>
408 Drivers that require multiple interrupt handlers can't use the managed
409 IRQ registration functions. In that case IRQs must be registered and
410 unregistered manually (usually with the <function>request_irq</function>
411 and <function>free_irq</function> functions, or their devm_* equivalent).
412 </para>
413 <para>
414 When manually registering IRQs, drivers must not set the DRIVER_HAVE_IRQ
415 driver feature flag, and must not provide the
416 <methodname>irq_handler</methodname> driver operation. They must set the
417 <structname>drm_device</structname> <structfield>irq_enabled</structfield>
418 field to 1 upon registration of the IRQs, and clear it to 0 after
419 unregistering the IRQs.
420 </para>
421 </sect4>
422 </sect3>
423 <sect3>
424 <title>Memory Manager Initialization</title>
425 <para>
426 Every DRM driver requires a memory manager which must be initialized at
427 load time. DRM currently contains two memory managers, the Translation
428 Table Manager (TTM) and the Graphics Execution Manager (GEM).
429 This document describes the use of the GEM memory manager only. See
430 <xref linkend="drm-memory-management"/> for details.
431 </para>
432 </sect3>
433 <sect3>
434 <title>Miscellaneous Device Configuration</title>
435 <para>
436 Another task that may be necessary for PCI devices during configuration
437 is mapping the video BIOS. On many devices, the VBIOS describes device
438 configuration, LCD panel timings (if any), and contains flags indicating
439 device state. Mapping the BIOS can be done using the pci_map_rom() call,
440 a convenience function that takes care of mapping the actual ROM,
441 whether it has been shadowed into memory (typically at address 0xc0000)
442 or exists on the PCI device in the ROM BAR. Note that after the ROM has
443 been mapped and any necessary information has been extracted, it should
444 be unmapped; on many devices, the ROM address decoder is shared with
445 other BARs, so leaving it mapped could cause undesired behaviour like
446 hangs or memory corruption.
447 <!--!Fdrivers/pci/rom.c pci_map_rom-->
448 </para>
449 </sect3>
450 </sect2>
451 <sect2>
452 <title>Bus-specific Device Registration and PCI Support</title>
453 <para>
454 A number of functions are provided to help with device registration.
455 The functions deal with PCI and platform devices respectively and are
456 only provided for historical reasons. These are all deprecated and
457 shouldn't be used in new drivers. Besides that there's a few
458 helpers for pci drivers.
459 </para>
460!Edrivers/gpu/drm/drm_pci.c
461!Edrivers/gpu/drm/drm_platform.c
462 </sect2>
463 </sect1>
464
465 <!-- Internals: memory management -->
466
467 <sect1 id="drm-memory-management">
468 <title>Memory management</title>
469 <para>
470 Modern Linux systems require large amount of graphics memory to store
471 frame buffers, textures, vertices and other graphics-related data. Given
472 the very dynamic nature of many of that data, managing graphics memory
473 efficiently is thus crucial for the graphics stack and plays a central
474 role in the DRM infrastructure.
475 </para>
476 <para>
477 The DRM core includes two memory managers, namely Translation Table Maps
478 (TTM) and Graphics Execution Manager (GEM). TTM was the first DRM memory
479 manager to be developed and tried to be a one-size-fits-them all
480 solution. It provides a single userspace API to accommodate the need of
481 all hardware, supporting both Unified Memory Architecture (UMA) devices
482 and devices with dedicated video RAM (i.e. most discrete video cards).
483 This resulted in a large, complex piece of code that turned out to be
484 hard to use for driver development.
485 </para>
486 <para>
487 GEM started as an Intel-sponsored project in reaction to TTM's
488 complexity. Its design philosophy is completely different: instead of
489 providing a solution to every graphics memory-related problems, GEM
490 identified common code between drivers and created a support library to
491 share it. GEM has simpler initialization and execution requirements than
492 TTM, but has no video RAM management capabilities and is thus limited to
493 UMA devices.
494 </para>
495 <sect2>
496 <title>The Translation Table Manager (TTM)</title>
497 <para>
498 TTM design background and information belongs here.
499 </para>
500 <sect3>
501 <title>TTM initialization</title>
502 <warning><para>This section is outdated.</para></warning>
503 <para>
504 Drivers wishing to support TTM must fill out a drm_bo_driver
505 structure. The structure contains several fields with function
506 pointers for initializing the TTM, allocating and freeing memory,
507 waiting for command completion and fence synchronization, and memory
508 migration. See the radeon_ttm.c file for an example of usage.
509 </para>
510 <para>
511 The ttm_global_reference structure is made up of several fields:
512 </para>
513 <programlisting>
514 struct ttm_global_reference {
515 enum ttm_global_types global_type;
516 size_t size;
517 void *object;
518 int (*init) (struct ttm_global_reference *);
519 void (*release) (struct ttm_global_reference *);
520 };
521 </programlisting>
522 <para>
523 There should be one global reference structure for your memory
524 manager as a whole, and there will be others for each object
525 created by the memory manager at runtime. Your global TTM should
526 have a type of TTM_GLOBAL_TTM_MEM. The size field for the global
527 object should be sizeof(struct ttm_mem_global), and the init and
528 release hooks should point at your driver-specific init and
529 release routines, which probably eventually call
530 ttm_mem_global_init and ttm_mem_global_release, respectively.
531 </para>
532 <para>
533 Once your global TTM accounting structure is set up and initialized
534 by calling ttm_global_item_ref() on it,
535 you need to create a buffer object TTM to
536 provide a pool for buffer object allocation by clients and the
537 kernel itself. The type of this object should be TTM_GLOBAL_TTM_BO,
538 and its size should be sizeof(struct ttm_bo_global). Again,
539 driver-specific init and release functions may be provided,
540 likely eventually calling ttm_bo_global_init() and
541 ttm_bo_global_release(), respectively. Also, like the previous
542 object, ttm_global_item_ref() is used to create an initial reference
543 count for the TTM, which will call your initialization function.
544 </para>
545 </sect3>
546 </sect2>
547 <sect2 id="drm-gem">
548 <title>The Graphics Execution Manager (GEM)</title>
549 <para>
550 The GEM design approach has resulted in a memory manager that doesn't
551 provide full coverage of all (or even all common) use cases in its
552 userspace or kernel API. GEM exposes a set of standard memory-related
553 operations to userspace and a set of helper functions to drivers, and let
554 drivers implement hardware-specific operations with their own private API.
555 </para>
556 <para>
557 The GEM userspace API is described in the
558 <ulink url="http://lwn.net/Articles/283798/"><citetitle>GEM - the Graphics
559 Execution Manager</citetitle></ulink> article on LWN. While slightly
560 outdated, the document provides a good overview of the GEM API principles.
561 Buffer allocation and read and write operations, described as part of the
562 common GEM API, are currently implemented using driver-specific ioctls.
563 </para>
564 <para>
565 GEM is data-agnostic. It manages abstract buffer objects without knowing
566 what individual buffers contain. APIs that require knowledge of buffer
567 contents or purpose, such as buffer allocation or synchronization
568 primitives, are thus outside of the scope of GEM and must be implemented
569 using driver-specific ioctls.
570 </para>
571 <para>
572 On a fundamental level, GEM involves several operations:
573 <itemizedlist>
574 <listitem>Memory allocation and freeing</listitem>
575 <listitem>Command execution</listitem>
576 <listitem>Aperture management at command execution time</listitem>
577 </itemizedlist>
578 Buffer object allocation is relatively straightforward and largely
579 provided by Linux's shmem layer, which provides memory to back each
580 object.
581 </para>
582 <para>
583 Device-specific operations, such as command execution, pinning, buffer
584 read &amp; write, mapping, and domain ownership transfers are left to
585 driver-specific ioctls.
586 </para>
587 <sect3>
588 <title>GEM Initialization</title>
589 <para>
590 Drivers that use GEM must set the DRIVER_GEM bit in the struct
591 <structname>drm_driver</structname>
592 <structfield>driver_features</structfield> field. The DRM core will
593 then automatically initialize the GEM core before calling the
594 <methodname>load</methodname> operation. Behind the scene, this will
595 create a DRM Memory Manager object which provides an address space
596 pool for object allocation.
597 </para>
598 <para>
599 In a KMS configuration, drivers need to allocate and initialize a
600 command ring buffer following core GEM initialization if required by
601 the hardware. UMA devices usually have what is called a "stolen"
602 memory region, which provides space for the initial framebuffer and
603 large, contiguous memory regions required by the device. This space is
604 typically not managed by GEM, and must be initialized separately into
605 its own DRM MM object.
606 </para>
607 </sect3>
608 <sect3>
609 <title>GEM Objects Creation</title>
610 <para>
611 GEM splits creation of GEM objects and allocation of the memory that
612 backs them in two distinct operations.
613 </para>
614 <para>
615 GEM objects are represented by an instance of struct
616 <structname>drm_gem_object</structname>. Drivers usually need to extend
617 GEM objects with private information and thus create a driver-specific
618 GEM object structure type that embeds an instance of struct
619 <structname>drm_gem_object</structname>.
620 </para>
621 <para>
622 To create a GEM object, a driver allocates memory for an instance of its
623 specific GEM object type and initializes the embedded struct
624 <structname>drm_gem_object</structname> with a call to
625 <function>drm_gem_object_init</function>. The function takes a pointer to
626 the DRM device, a pointer to the GEM object and the buffer object size
627 in bytes.
628 </para>
629 <para>
630 GEM uses shmem to allocate anonymous pageable memory.
631 <function>drm_gem_object_init</function> will create an shmfs file of
632 the requested size and store it into the struct
633 <structname>drm_gem_object</structname> <structfield>filp</structfield>
634 field. The memory is used as either main storage for the object when the
635 graphics hardware uses system memory directly or as a backing store
636 otherwise.
637 </para>
638 <para>
639 Drivers are responsible for the actual physical pages allocation by
640 calling <function>shmem_read_mapping_page_gfp</function> for each page.
641 Note that they can decide to allocate pages when initializing the GEM
642 object, or to delay allocation until the memory is needed (for instance
643 when a page fault occurs as a result of a userspace memory access or
644 when the driver needs to start a DMA transfer involving the memory).
645 </para>
646 <para>
647 Anonymous pageable memory allocation is not always desired, for instance
648 when the hardware requires physically contiguous system memory as is
649 often the case in embedded devices. Drivers can create GEM objects with
650 no shmfs backing (called private GEM objects) by initializing them with
651 a call to <function>drm_gem_private_object_init</function> instead of
652 <function>drm_gem_object_init</function>. Storage for private GEM
653 objects must be managed by drivers.
654 </para>
655 </sect3>
656 <sect3>
657 <title>GEM Objects Lifetime</title>
658 <para>
659 All GEM objects are reference-counted by the GEM core. References can be
660 acquired and release by <function>calling drm_gem_object_reference</function>
661 and <function>drm_gem_object_unreference</function> respectively. The
662 caller must hold the <structname>drm_device</structname>
663 <structfield>struct_mutex</structfield> lock when calling
664 <function>drm_gem_object_reference</function>. As a convenience, GEM
665 provides <function>drm_gem_object_unreference_unlocked</function>
666 functions that can be called without holding the lock.
667 </para>
668 <para>
669 When the last reference to a GEM object is released the GEM core calls
670 the <structname>drm_driver</structname>
671 <methodname>gem_free_object</methodname> operation. That operation is
672 mandatory for GEM-enabled drivers and must free the GEM object and all
673 associated resources.
674 </para>
675 <para>
676 <synopsis>void (*gem_free_object) (struct drm_gem_object *obj);</synopsis>
677 Drivers are responsible for freeing all GEM object resources. This includes
678 the resources created by the GEM core, which need to be released with
679 <function>drm_gem_object_release</function>.
680 </para>
681 </sect3>
682 <sect3>
683 <title>GEM Objects Naming</title>
684 <para>
685 Communication between userspace and the kernel refers to GEM objects
686 using local handles, global names or, more recently, file descriptors.
687 All of those are 32-bit integer values; the usual Linux kernel limits
688 apply to the file descriptors.
689 </para>
690 <para>
691 GEM handles are local to a DRM file. Applications get a handle to a GEM
692 object through a driver-specific ioctl, and can use that handle to refer
693 to the GEM object in other standard or driver-specific ioctls. Closing a
694 DRM file handle frees all its GEM handles and dereferences the
695 associated GEM objects.
696 </para>
697 <para>
698 To create a handle for a GEM object drivers call
699 <function>drm_gem_handle_create</function>. The function takes a pointer
700 to the DRM file and the GEM object and returns a locally unique handle.
701 When the handle is no longer needed drivers delete it with a call to
702 <function>drm_gem_handle_delete</function>. Finally the GEM object
703 associated with a handle can be retrieved by a call to
704 <function>drm_gem_object_lookup</function>.
705 </para>
706 <para>
707 Handles don't take ownership of GEM objects, they only take a reference
708 to the object that will be dropped when the handle is destroyed. To
709 avoid leaking GEM objects, drivers must make sure they drop the
710 reference(s) they own (such as the initial reference taken at object
711 creation time) as appropriate, without any special consideration for the
712 handle. For example, in the particular case of combined GEM object and
713 handle creation in the implementation of the
714 <methodname>dumb_create</methodname> operation, drivers must drop the
715 initial reference to the GEM object before returning the handle.
716 </para>
717 <para>
718 GEM names are similar in purpose to handles but are not local to DRM
719 files. They can be passed between processes to reference a GEM object
720 globally. Names can't be used directly to refer to objects in the DRM
721 API, applications must convert handles to names and names to handles
722 using the DRM_IOCTL_GEM_FLINK and DRM_IOCTL_GEM_OPEN ioctls
723 respectively. The conversion is handled by the DRM core without any
724 driver-specific support.
725 </para>
726 <para>
727 GEM also supports buffer sharing with dma-buf file descriptors through
728 PRIME. GEM-based drivers must use the provided helpers functions to
729 implement the exporting and importing correctly. See <xref linkend="drm-prime-support" />.
730 Since sharing file descriptors is inherently more secure than the
731 easily guessable and global GEM names it is the preferred buffer
732 sharing mechanism. Sharing buffers through GEM names is only supported
733 for legacy userspace. Furthermore PRIME also allows cross-device
734 buffer sharing since it is based on dma-bufs.
735 </para>
736 </sect3>
737 <sect3 id="drm-gem-objects-mapping">
738 <title>GEM Objects Mapping</title>
739 <para>
740 Because mapping operations are fairly heavyweight GEM favours
741 read/write-like access to buffers, implemented through driver-specific
742 ioctls, over mapping buffers to userspace. However, when random access
743 to the buffer is needed (to perform software rendering for instance),
744 direct access to the object can be more efficient.
745 </para>
746 <para>
747 The mmap system call can't be used directly to map GEM objects, as they
748 don't have their own file handle. Two alternative methods currently
749 co-exist to map GEM objects to userspace. The first method uses a
750 driver-specific ioctl to perform the mapping operation, calling
751 <function>do_mmap</function> under the hood. This is often considered
752 dubious, seems to be discouraged for new GEM-enabled drivers, and will
753 thus not be described here.
754 </para>
755 <para>
756 The second method uses the mmap system call on the DRM file handle.
757 <synopsis>void *mmap(void *addr, size_t length, int prot, int flags, int fd,
758 off_t offset);</synopsis>
759 DRM identifies the GEM object to be mapped by a fake offset passed
760 through the mmap offset argument. Prior to being mapped, a GEM object
761 must thus be associated with a fake offset. To do so, drivers must call
762 <function>drm_gem_create_mmap_offset</function> on the object.
763 </para>
764 <para>
765 Once allocated, the fake offset value
766 must be passed to the application in a driver-specific way and can then
767 be used as the mmap offset argument.
768 </para>
769 <para>
770 The GEM core provides a helper method <function>drm_gem_mmap</function>
771 to handle object mapping. The method can be set directly as the mmap
772 file operation handler. It will look up the GEM object based on the
773 offset value and set the VMA operations to the
774 <structname>drm_driver</structname> <structfield>gem_vm_ops</structfield>
775 field. Note that <function>drm_gem_mmap</function> doesn't map memory to
776 userspace, but relies on the driver-provided fault handler to map pages
777 individually.
778 </para>
779 <para>
780 To use <function>drm_gem_mmap</function>, drivers must fill the struct
781 <structname>drm_driver</structname> <structfield>gem_vm_ops</structfield>
782 field with a pointer to VM operations.
783 </para>
784 <para>
785 <synopsis>struct vm_operations_struct *gem_vm_ops
786
787 struct vm_operations_struct {
788 void (*open)(struct vm_area_struct * area);
789 void (*close)(struct vm_area_struct * area);
790 int (*fault)(struct vm_area_struct *vma, struct vm_fault *vmf);
791 };</synopsis>
792 </para>
793 <para>
794 The <methodname>open</methodname> and <methodname>close</methodname>
795 operations must update the GEM object reference count. Drivers can use
796 the <function>drm_gem_vm_open</function> and
797 <function>drm_gem_vm_close</function> helper functions directly as open
798 and close handlers.
799 </para>
800 <para>
801 The fault operation handler is responsible for mapping individual pages
802 to userspace when a page fault occurs. Depending on the memory
803 allocation scheme, drivers can allocate pages at fault time, or can
804 decide to allocate memory for the GEM object at the time the object is
805 created.
806 </para>
807 <para>
808 Drivers that want to map the GEM object upfront instead of handling page
809 faults can implement their own mmap file operation handler.
810 </para>
811 </sect3>
812 <sect3>
813 <title>Memory Coherency</title>
814 <para>
815 When mapped to the device or used in a command buffer, backing pages
816 for an object are flushed to memory and marked write combined so as to
817 be coherent with the GPU. Likewise, if the CPU accesses an object
818 after the GPU has finished rendering to the object, then the object
819 must be made coherent with the CPU's view of memory, usually involving
820 GPU cache flushing of various kinds. This core CPU&lt;-&gt;GPU
821 coherency management is provided by a device-specific ioctl, which
822 evaluates an object's current domain and performs any necessary
823 flushing or synchronization to put the object into the desired
824 coherency domain (note that the object may be busy, i.e. an active
825 render target; in that case, setting the domain blocks the client and
826 waits for rendering to complete before performing any necessary
827 flushing operations).
828 </para>
829 </sect3>
830 <sect3>
831 <title>Command Execution</title>
832 <para>
833 Perhaps the most important GEM function for GPU devices is providing a
834 command execution interface to clients. Client programs construct
835 command buffers containing references to previously allocated memory
836 objects, and then submit them to GEM. At that point, GEM takes care to
837 bind all the objects into the GTT, execute the buffer, and provide
838 necessary synchronization between clients accessing the same buffers.
839 This often involves evicting some objects from the GTT and re-binding
840 others (a fairly expensive operation), and providing relocation
841 support which hides fixed GTT offsets from clients. Clients must take
842 care not to submit command buffers that reference more objects than
843 can fit in the GTT; otherwise, GEM will reject them and no rendering
844 will occur. Similarly, if several objects in the buffer require fence
845 registers to be allocated for correct rendering (e.g. 2D blits on
846 pre-965 chips), care must be taken not to require more fence registers
847 than are available to the client. Such resource management should be
848 abstracted from the client in libdrm.
849 </para>
850 </sect3>
851 </sect2>
852 <sect2>
853 <title>GEM Function Reference</title>
854!Edrivers/gpu/drm/drm_gem.c
855!Iinclude/drm/drm_gem.h
856 </sect2>
857 <sect2>
858 <title>VMA Offset Manager</title>
859!Pdrivers/gpu/drm/drm_vma_manager.c vma offset manager
860!Edrivers/gpu/drm/drm_vma_manager.c
861!Iinclude/drm/drm_vma_manager.h
862 </sect2>
863 <sect2 id="drm-prime-support">
864 <title>PRIME Buffer Sharing</title>
865 <para>
866 PRIME is the cross device buffer sharing framework in drm, originally
867 created for the OPTIMUS range of multi-gpu platforms. To userspace
868 PRIME buffers are dma-buf based file descriptors.
869 </para>
870 <sect3>
871 <title>Overview and Driver Interface</title>
872 <para>
873 Similar to GEM global names, PRIME file descriptors are
874 also used to share buffer objects across processes. They offer
875 additional security: as file descriptors must be explicitly sent over
876 UNIX domain sockets to be shared between applications, they can't be
877 guessed like the globally unique GEM names.
878 </para>
879 <para>
880 Drivers that support the PRIME
881 API must set the DRIVER_PRIME bit in the struct
882 <structname>drm_driver</structname>
883 <structfield>driver_features</structfield> field, and implement the
884 <methodname>prime_handle_to_fd</methodname> and
885 <methodname>prime_fd_to_handle</methodname> operations.
886 </para>
887 <para>
888 <synopsis>int (*prime_handle_to_fd)(struct drm_device *dev,
889 struct drm_file *file_priv, uint32_t handle,
890 uint32_t flags, int *prime_fd);
891int (*prime_fd_to_handle)(struct drm_device *dev,
892 struct drm_file *file_priv, int prime_fd,
893 uint32_t *handle);</synopsis>
894 Those two operations convert a handle to a PRIME file descriptor and
895 vice versa. Drivers must use the kernel dma-buf buffer sharing framework
896 to manage the PRIME file descriptors. Similar to the mode setting
897 API PRIME is agnostic to the underlying buffer object manager, as
898 long as handles are 32bit unsigned integers.
899 </para>
900 <para>
901 While non-GEM drivers must implement the operations themselves, GEM
902 drivers must use the <function>drm_gem_prime_handle_to_fd</function>
903 and <function>drm_gem_prime_fd_to_handle</function> helper functions.
904 Those helpers rely on the driver
905 <methodname>gem_prime_export</methodname> and
906 <methodname>gem_prime_import</methodname> operations to create a dma-buf
907 instance from a GEM object (dma-buf exporter role) and to create a GEM
908 object from a dma-buf instance (dma-buf importer role).
909 </para>
910 <para>
911 <synopsis>struct dma_buf * (*gem_prime_export)(struct drm_device *dev,
912 struct drm_gem_object *obj,
913 int flags);
914struct drm_gem_object * (*gem_prime_import)(struct drm_device *dev,
915 struct dma_buf *dma_buf);</synopsis>
916 These two operations are mandatory for GEM drivers that support
917 PRIME.
918 </para>
919 </sect3>
920 <sect3>
921 <title>PRIME Helper Functions</title>
922!Pdrivers/gpu/drm/drm_prime.c PRIME Helpers
923 </sect3>
924 </sect2>
925 <sect2>
926 <title>PRIME Function References</title>
927!Edrivers/gpu/drm/drm_prime.c
928 </sect2>
929 <sect2>
930 <title>DRM MM Range Allocator</title>
931 <sect3>
932 <title>Overview</title>
933!Pdrivers/gpu/drm/drm_mm.c Overview
934 </sect3>
935 <sect3>
936 <title>LRU Scan/Eviction Support</title>
937!Pdrivers/gpu/drm/drm_mm.c lru scan roaster
938 </sect3>
939 </sect2>
940 <sect2>
941 <title>DRM MM Range Allocator Function References</title>
942!Edrivers/gpu/drm/drm_mm.c
943!Iinclude/drm/drm_mm.h
944 </sect2>
945 <sect2>
946 <title>CMA Helper Functions Reference</title>
947!Pdrivers/gpu/drm/drm_gem_cma_helper.c cma helpers
948!Edrivers/gpu/drm/drm_gem_cma_helper.c
949!Iinclude/drm/drm_gem_cma_helper.h
950 </sect2>
951 </sect1>
952
953 <!-- Internals: mode setting -->
954
955 <sect1 id="drm-mode-setting">
956 <title>Mode Setting</title>
957 <para>
958 Drivers must initialize the mode setting core by calling
959 <function>drm_mode_config_init</function> on the DRM device. The function
960 initializes the <structname>drm_device</structname>
961 <structfield>mode_config</structfield> field and never fails. Once done,
962 mode configuration must be setup by initializing the following fields.
963 </para>
964 <itemizedlist>
965 <listitem>
966 <synopsis>int min_width, min_height;
967int max_width, max_height;</synopsis>
968 <para>
969 Minimum and maximum width and height of the frame buffers in pixel
970 units.
971 </para>
972 </listitem>
973 <listitem>
974 <synopsis>struct drm_mode_config_funcs *funcs;</synopsis>
975 <para>Mode setting functions.</para>
976 </listitem>
977 </itemizedlist>
978 <sect2>
979 <title>Display Modes Function Reference</title>
980!Iinclude/drm/drm_modes.h
981!Edrivers/gpu/drm/drm_modes.c
982 </sect2>
983 <sect2>
984 <title>Atomic Mode Setting Function Reference</title>
985!Edrivers/gpu/drm/drm_atomic.c
986!Idrivers/gpu/drm/drm_atomic.c
987 </sect2>
988 <sect2>
989 <title>Frame Buffer Abstraction</title>
990 <para>
991 Frame buffers are abstract memory objects that provide a source of
992 pixels to scanout to a CRTC. Applications explicitly request the
993 creation of frame buffers through the DRM_IOCTL_MODE_ADDFB(2) ioctls and
994 receive an opaque handle that can be passed to the KMS CRTC control,
995 plane configuration and page flip functions.
996 </para>
997 <para>
998 Frame buffers rely on the underneath memory manager for low-level memory
999 operations. When creating a frame buffer applications pass a memory
1000 handle (or a list of memory handles for multi-planar formats) through
1001 the <parameter>drm_mode_fb_cmd2</parameter> argument. For drivers using
1002 GEM as their userspace buffer management interface this would be a GEM
1003 handle. Drivers are however free to use their own backing storage object
1004 handles, e.g. vmwgfx directly exposes special TTM handles to userspace
1005 and so expects TTM handles in the create ioctl and not GEM handles.
1006 </para>
1007 <para>
1008 The lifetime of a drm framebuffer is controlled with a reference count,
1009 drivers can grab additional references with
1010 <function>drm_framebuffer_reference</function>and drop them
1011 again with <function>drm_framebuffer_unreference</function>. For
1012 driver-private framebuffers for which the last reference is never
1013 dropped (e.g. for the fbdev framebuffer when the struct
1014 <structname>drm_framebuffer</structname> is embedded into the fbdev
1015 helper struct) drivers can manually clean up a framebuffer at module
1016 unload time with
1017 <function>drm_framebuffer_unregister_private</function>.
1018 </para>
1019 </sect2>
1020 <sect2>
1021 <title>Dumb Buffer Objects</title>
1022 <para>
1023 The KMS API doesn't standardize backing storage object creation and
1024 leaves it to driver-specific ioctls. Furthermore actually creating a
1025 buffer object even for GEM-based drivers is done through a
1026 driver-specific ioctl - GEM only has a common userspace interface for
1027 sharing and destroying objects. While not an issue for full-fledged
1028 graphics stacks that include device-specific userspace components (in
1029 libdrm for instance), this limit makes DRM-based early boot graphics
1030 unnecessarily complex.
1031 </para>
1032 <para>
1033 Dumb objects partly alleviate the problem by providing a standard
1034 API to create dumb buffers suitable for scanout, which can then be used
1035 to create KMS frame buffers.
1036 </para>
1037 <para>
1038 To support dumb objects drivers must implement the
1039 <methodname>dumb_create</methodname>,
1040 <methodname>dumb_destroy</methodname> and
1041 <methodname>dumb_map_offset</methodname> operations.
1042 </para>
1043 <itemizedlist>
1044 <listitem>
1045 <synopsis>int (*dumb_create)(struct drm_file *file_priv, struct drm_device *dev,
1046 struct drm_mode_create_dumb *args);</synopsis>
1047 <para>
1048 The <methodname>dumb_create</methodname> operation creates a driver
1049 object (GEM or TTM handle) suitable for scanout based on the
1050 width, height and depth from the struct
1051 <structname>drm_mode_create_dumb</structname> argument. It fills the
1052 argument's <structfield>handle</structfield>,
1053 <structfield>pitch</structfield> and <structfield>size</structfield>
1054 fields with a handle for the newly created object and its line
1055 pitch and size in bytes.
1056 </para>
1057 </listitem>
1058 <listitem>
1059 <synopsis>int (*dumb_destroy)(struct drm_file *file_priv, struct drm_device *dev,
1060 uint32_t handle);</synopsis>
1061 <para>
1062 The <methodname>dumb_destroy</methodname> operation destroys a dumb
1063 object created by <methodname>dumb_create</methodname>.
1064 </para>
1065 </listitem>
1066 <listitem>
1067 <synopsis>int (*dumb_map_offset)(struct drm_file *file_priv, struct drm_device *dev,
1068 uint32_t handle, uint64_t *offset);</synopsis>
1069 <para>
1070 The <methodname>dumb_map_offset</methodname> operation associates an
1071 mmap fake offset with the object given by the handle and returns
1072 it. Drivers must use the
1073 <function>drm_gem_create_mmap_offset</function> function to
1074 associate the fake offset as described in
1075 <xref linkend="drm-gem-objects-mapping"/>.
1076 </para>
1077 </listitem>
1078 </itemizedlist>
1079 <para>
1080 Note that dumb objects may not be used for gpu acceleration, as has been
1081 attempted on some ARM embedded platforms. Such drivers really must have
1082 a hardware-specific ioctl to allocate suitable buffer objects.
1083 </para>
1084 </sect2>
1085 <sect2>
1086 <title>Output Polling</title>
1087 <synopsis>void (*output_poll_changed)(struct drm_device *dev);</synopsis>
1088 <para>
1089 This operation notifies the driver that the status of one or more
1090 connectors has changed. Drivers that use the fb helper can just call the
1091 <function>drm_fb_helper_hotplug_event</function> function to handle this
1092 operation.
1093 </para>
1094 </sect2>
1095 <sect2>
1096 <title>Locking</title>
1097 <para>
1098 Beside some lookup structures with their own locking (which is hidden
1099 behind the interface functions) most of the modeset state is protected
1100 by the <code>dev-&lt;mode_config.lock</code> mutex and additionally
1101 per-crtc locks to allow cursor updates, pageflips and similar operations
1102 to occur concurrently with background tasks like output detection.
1103 Operations which cross domains like a full modeset always grab all
1104 locks. Drivers there need to protect resources shared between crtcs with
1105 additional locking. They also need to be careful to always grab the
1106 relevant crtc locks if a modset functions touches crtc state, e.g. for
1107 load detection (which does only grab the <code>mode_config.lock</code>
1108 to allow concurrent screen updates on live crtcs).
1109 </para>
1110 </sect2>
1111 </sect1>
1112
1113 <!-- Internals: kms initialization and cleanup -->
1114
1115 <sect1 id="drm-kms-init">
1116 <title>KMS Initialization and Cleanup</title>
1117 <para>
1118 A KMS device is abstracted and exposed as a set of planes, CRTCs, encoders
1119 and connectors. KMS drivers must thus create and initialize all those
1120 objects at load time after initializing mode setting.
1121 </para>
1122 <sect2>
1123 <title>CRTCs (struct <structname>drm_crtc</structname>)</title>
1124 <para>
1125 A CRTC is an abstraction representing a part of the chip that contains a
1126 pointer to a scanout buffer. Therefore, the number of CRTCs available
1127 determines how many independent scanout buffers can be active at any
1128 given time. The CRTC structure contains several fields to support this:
1129 a pointer to some video memory (abstracted as a frame buffer object), a
1130 display mode, and an (x, y) offset into the video memory to support
1131 panning or configurations where one piece of video memory spans multiple
1132 CRTCs.
1133 </para>
1134 <sect3>
1135 <title>CRTC Initialization</title>
1136 <para>
1137 A KMS device must create and register at least one struct
1138 <structname>drm_crtc</structname> instance. The instance is allocated
1139 and zeroed by the driver, possibly as part of a larger structure, and
1140 registered with a call to <function>drm_crtc_init</function> with a
1141 pointer to CRTC functions.
1142 </para>
1143 </sect3>
1144 </sect2>
1145 <sect2>
1146 <title>Planes (struct <structname>drm_plane</structname>)</title>
1147 <para>
1148 A plane represents an image source that can be blended with or overlayed
1149 on top of a CRTC during the scanout process. Planes are associated with
1150 a frame buffer to crop a portion of the image memory (source) and
1151 optionally scale it to a destination size. The result is then blended
1152 with or overlayed on top of a CRTC.
1153 </para>
1154 <para>
1155 The DRM core recognizes three types of planes:
1156 <itemizedlist>
1157 <listitem>
1158 DRM_PLANE_TYPE_PRIMARY represents a "main" plane for a CRTC. Primary
1159 planes are the planes operated upon by CRTC modesetting and flipping
1160 operations described in the page_flip hook in <structname>drm_crtc_funcs</structname>.
1161 </listitem>
1162 <listitem>
1163 DRM_PLANE_TYPE_CURSOR represents a "cursor" plane for a CRTC. Cursor
1164 planes are the planes operated upon by the DRM_IOCTL_MODE_CURSOR and
1165 DRM_IOCTL_MODE_CURSOR2 ioctls.
1166 </listitem>
1167 <listitem>
1168 DRM_PLANE_TYPE_OVERLAY represents all non-primary, non-cursor planes.
1169 Some drivers refer to these types of planes as "sprites" internally.
1170 </listitem>
1171 </itemizedlist>
1172 For compatibility with legacy userspace, only overlay planes are made
1173 available to userspace by default. Userspace clients may set the
1174 DRM_CLIENT_CAP_UNIVERSAL_PLANES client capability bit to indicate that
1175 they wish to receive a universal plane list containing all plane types.
1176 </para>
1177 <sect3>
1178 <title>Plane Initialization</title>
1179 <para>
1180 To create a plane, a KMS drivers allocates and
1181 zeroes an instances of struct <structname>drm_plane</structname>
1182 (possibly as part of a larger structure) and registers it with a call
1183 to <function>drm_universal_plane_init</function>. The function takes a bitmask
1184 of the CRTCs that can be associated with the plane, a pointer to the
1185 plane functions, a list of format supported formats, and the type of
1186 plane (primary, cursor, or overlay) being initialized.
1187 </para>
1188 <para>
1189 Cursor and overlay planes are optional. All drivers should provide
1190 one primary plane per CRTC (although this requirement may change in
1191 the future); drivers that do not wish to provide special handling for
1192 primary planes may make use of the helper functions described in
1193 <xref linkend="drm-kms-planehelpers"/> to create and register a
1194 primary plane with standard capabilities.
1195 </para>
1196 </sect3>
1197 </sect2>
1198 <sect2>
1199 <title>Encoders (struct <structname>drm_encoder</structname>)</title>
1200 <para>
1201 An encoder takes pixel data from a CRTC and converts it to a format
1202 suitable for any attached connectors. On some devices, it may be
1203 possible to have a CRTC send data to more than one encoder. In that
1204 case, both encoders would receive data from the same scanout buffer,
1205 resulting in a "cloned" display configuration across the connectors
1206 attached to each encoder.
1207 </para>
1208 <sect3>
1209 <title>Encoder Initialization</title>
1210 <para>
1211 As for CRTCs, a KMS driver must create, initialize and register at
1212 least one struct <structname>drm_encoder</structname> instance. The
1213 instance is allocated and zeroed by the driver, possibly as part of a
1214 larger structure.
1215 </para>
1216 <para>
1217 Drivers must initialize the struct <structname>drm_encoder</structname>
1218 <structfield>possible_crtcs</structfield> and
1219 <structfield>possible_clones</structfield> fields before registering the
1220 encoder. Both fields are bitmasks of respectively the CRTCs that the
1221 encoder can be connected to, and sibling encoders candidate for cloning.
1222 </para>
1223 <para>
1224 After being initialized, the encoder must be registered with a call to
1225 <function>drm_encoder_init</function>. The function takes a pointer to
1226 the encoder functions and an encoder type. Supported types are
1227 <itemizedlist>
1228 <listitem>
1229 DRM_MODE_ENCODER_DAC for VGA and analog on DVI-I/DVI-A
1230 </listitem>
1231 <listitem>
1232 DRM_MODE_ENCODER_TMDS for DVI, HDMI and (embedded) DisplayPort
1233 </listitem>
1234 <listitem>
1235 DRM_MODE_ENCODER_LVDS for display panels
1236 </listitem>
1237 <listitem>
1238 DRM_MODE_ENCODER_TVDAC for TV output (Composite, S-Video, Component,
1239 SCART)
1240 </listitem>
1241 <listitem>
1242 DRM_MODE_ENCODER_VIRTUAL for virtual machine displays
1243 </listitem>
1244 </itemizedlist>
1245 </para>
1246 <para>
1247 Encoders must be attached to a CRTC to be used. DRM drivers leave
1248 encoders unattached at initialization time. Applications (or the fbdev
1249 compatibility layer when implemented) are responsible for attaching the
1250 encoders they want to use to a CRTC.
1251 </para>
1252 </sect3>
1253 </sect2>
1254 <sect2>
1255 <title>Connectors (struct <structname>drm_connector</structname>)</title>
1256 <para>
1257 A connector is the final destination for pixel data on a device, and
1258 usually connects directly to an external display device like a monitor
1259 or laptop panel. A connector can only be attached to one encoder at a
1260 time. The connector is also the structure where information about the
1261 attached display is kept, so it contains fields for display data, EDID
1262 data, DPMS &amp; connection status, and information about modes
1263 supported on the attached displays.
1264 </para>
1265 <sect3>
1266 <title>Connector Initialization</title>
1267 <para>
1268 Finally a KMS driver must create, initialize, register and attach at
1269 least one struct <structname>drm_connector</structname> instance. The
1270 instance is created as other KMS objects and initialized by setting the
1271 following fields.
1272 </para>
1273 <variablelist>
1274 <varlistentry>
1275 <term><structfield>interlace_allowed</structfield></term>
1276 <listitem><para>
1277 Whether the connector can handle interlaced modes.
1278 </para></listitem>
1279 </varlistentry>
1280 <varlistentry>
1281 <term><structfield>doublescan_allowed</structfield></term>
1282 <listitem><para>
1283 Whether the connector can handle doublescan.
1284 </para></listitem>
1285 </varlistentry>
1286 <varlistentry>
1287 <term><structfield>display_info
1288 </structfield></term>
1289 <listitem><para>
1290 Display information is filled from EDID information when a display
1291 is detected. For non hot-pluggable displays such as flat panels in
1292 embedded systems, the driver should initialize the
1293 <structfield>display_info</structfield>.<structfield>width_mm</structfield>
1294 and
1295 <structfield>display_info</structfield>.<structfield>height_mm</structfield>
1296 fields with the physical size of the display.
1297 </para></listitem>
1298 </varlistentry>
1299 <varlistentry>
1300 <term id="drm-kms-connector-polled"><structfield>polled</structfield></term>
1301 <listitem><para>
1302 Connector polling mode, a combination of
1303 <variablelist>
1304 <varlistentry>
1305 <term>DRM_CONNECTOR_POLL_HPD</term>
1306 <listitem><para>
1307 The connector generates hotplug events and doesn't need to be
1308 periodically polled. The CONNECT and DISCONNECT flags must not
1309 be set together with the HPD flag.
1310 </para></listitem>
1311 </varlistentry>
1312 <varlistentry>
1313 <term>DRM_CONNECTOR_POLL_CONNECT</term>
1314 <listitem><para>
1315 Periodically poll the connector for connection.
1316 </para></listitem>
1317 </varlistentry>
1318 <varlistentry>
1319 <term>DRM_CONNECTOR_POLL_DISCONNECT</term>
1320 <listitem><para>
1321 Periodically poll the connector for disconnection.
1322 </para></listitem>
1323 </varlistentry>
1324 </variablelist>
1325 Set to 0 for connectors that don't support connection status
1326 discovery.
1327 </para></listitem>
1328 </varlistentry>
1329 </variablelist>
1330 <para>
1331 The connector is then registered with a call to
1332 <function>drm_connector_init</function> with a pointer to the connector
1333 functions and a connector type, and exposed through sysfs with a call to
1334 <function>drm_connector_register</function>.
1335 </para>
1336 <para>
1337 Supported connector types are
1338 <itemizedlist>
1339 <listitem>DRM_MODE_CONNECTOR_VGA</listitem>
1340 <listitem>DRM_MODE_CONNECTOR_DVII</listitem>
1341 <listitem>DRM_MODE_CONNECTOR_DVID</listitem>
1342 <listitem>DRM_MODE_CONNECTOR_DVIA</listitem>
1343 <listitem>DRM_MODE_CONNECTOR_Composite</listitem>
1344 <listitem>DRM_MODE_CONNECTOR_SVIDEO</listitem>
1345 <listitem>DRM_MODE_CONNECTOR_LVDS</listitem>
1346 <listitem>DRM_MODE_CONNECTOR_Component</listitem>
1347 <listitem>DRM_MODE_CONNECTOR_9PinDIN</listitem>
1348 <listitem>DRM_MODE_CONNECTOR_DisplayPort</listitem>
1349 <listitem>DRM_MODE_CONNECTOR_HDMIA</listitem>
1350 <listitem>DRM_MODE_CONNECTOR_HDMIB</listitem>
1351 <listitem>DRM_MODE_CONNECTOR_TV</listitem>
1352 <listitem>DRM_MODE_CONNECTOR_eDP</listitem>
1353 <listitem>DRM_MODE_CONNECTOR_VIRTUAL</listitem>
1354 </itemizedlist>
1355 </para>
1356 <para>
1357 Connectors must be attached to an encoder to be used. For devices that
1358 map connectors to encoders 1:1, the connector should be attached at
1359 initialization time with a call to
1360 <function>drm_mode_connector_attach_encoder</function>. The driver must
1361 also set the <structname>drm_connector</structname>
1362 <structfield>encoder</structfield> field to point to the attached
1363 encoder.
1364 </para>
1365 <para>
1366 Finally, drivers must initialize the connectors state change detection
1367 with a call to <function>drm_kms_helper_poll_init</function>. If at
1368 least one connector is pollable but can't generate hotplug interrupts
1369 (indicated by the DRM_CONNECTOR_POLL_CONNECT and
1370 DRM_CONNECTOR_POLL_DISCONNECT connector flags), a delayed work will
1371 automatically be queued to periodically poll for changes. Connectors
1372 that can generate hotplug interrupts must be marked with the
1373 DRM_CONNECTOR_POLL_HPD flag instead, and their interrupt handler must
1374 call <function>drm_helper_hpd_irq_event</function>. The function will
1375 queue a delayed work to check the state of all connectors, but no
1376 periodic polling will be done.
1377 </para>
1378 </sect3>
1379 <sect3>
1380 <title>Connector Operations</title>
1381 <note><para>
1382 Unless otherwise state, all operations are mandatory.
1383 </para></note>
1384 <sect4>
1385 <title>DPMS</title>
1386 <synopsis>void (*dpms)(struct drm_connector *connector, int mode);</synopsis>
1387 <para>
1388 The DPMS operation sets the power state of a connector. The mode
1389 argument is one of
1390 <itemizedlist>
1391 <listitem><para>DRM_MODE_DPMS_ON</para></listitem>
1392 <listitem><para>DRM_MODE_DPMS_STANDBY</para></listitem>
1393 <listitem><para>DRM_MODE_DPMS_SUSPEND</para></listitem>
1394 <listitem><para>DRM_MODE_DPMS_OFF</para></listitem>
1395 </itemizedlist>
1396 </para>
1397 <para>
1398 In all but DPMS_ON mode the encoder to which the connector is attached
1399 should put the display in low-power mode by driving its signals
1400 appropriately. If more than one connector is attached to the encoder
1401 care should be taken not to change the power state of other displays as
1402 a side effect. Low-power mode should be propagated to the encoders and
1403 CRTCs when all related connectors are put in low-power mode.
1404 </para>
1405 </sect4>
1406 <sect4>
1407 <title>Modes</title>
1408 <synopsis>int (*fill_modes)(struct drm_connector *connector, uint32_t max_width,
1409 uint32_t max_height);</synopsis>
1410 <para>
1411 Fill the mode list with all supported modes for the connector. If the
1412 <parameter>max_width</parameter> and <parameter>max_height</parameter>
1413 arguments are non-zero, the implementation must ignore all modes wider
1414 than <parameter>max_width</parameter> or higher than
1415 <parameter>max_height</parameter>.
1416 </para>
1417 <para>
1418 The connector must also fill in this operation its
1419 <structfield>display_info</structfield>
1420 <structfield>width_mm</structfield> and
1421 <structfield>height_mm</structfield> fields with the connected display
1422 physical size in millimeters. The fields should be set to 0 if the value
1423 isn't known or is not applicable (for instance for projector devices).
1424 </para>
1425 </sect4>
1426 <sect4>
1427 <title>Connection Status</title>
1428 <para>
1429 The connection status is updated through polling or hotplug events when
1430 supported (see <xref linkend="drm-kms-connector-polled"/>). The status
1431 value is reported to userspace through ioctls and must not be used
1432 inside the driver, as it only gets initialized by a call to
1433 <function>drm_mode_getconnector</function> from userspace.
1434 </para>
1435 <synopsis>enum drm_connector_status (*detect)(struct drm_connector *connector,
1436 bool force);</synopsis>
1437 <para>
1438 Check to see if anything is attached to the connector. The
1439 <parameter>force</parameter> parameter is set to false whilst polling or
1440 to true when checking the connector due to user request.
1441 <parameter>force</parameter> can be used by the driver to avoid
1442 expensive, destructive operations during automated probing.
1443 </para>
1444 <para>
1445 Return connector_status_connected if something is connected to the
1446 connector, connector_status_disconnected if nothing is connected and
1447 connector_status_unknown if the connection state isn't known.
1448 </para>
1449 <para>
1450 Drivers should only return connector_status_connected if the connection
1451 status has really been probed as connected. Connectors that can't detect
1452 the connection status, or failed connection status probes, should return
1453 connector_status_unknown.
1454 </para>
1455 </sect4>
1456 </sect3>
1457 </sect2>
1458 <sect2>
1459 <title>Cleanup</title>
1460 <para>
1461 The DRM core manages its objects' lifetime. When an object is not needed
1462 anymore the core calls its destroy function, which must clean up and
1463 free every resource allocated for the object. Every
1464 <function>drm_*_init</function> call must be matched with a
1465 corresponding <function>drm_*_cleanup</function> call to cleanup CRTCs
1466 (<function>drm_crtc_cleanup</function>), planes
1467 (<function>drm_plane_cleanup</function>), encoders
1468 (<function>drm_encoder_cleanup</function>) and connectors
1469 (<function>drm_connector_cleanup</function>). Furthermore, connectors
1470 that have been added to sysfs must be removed by a call to
1471 <function>drm_connector_unregister</function> before calling
1472 <function>drm_connector_cleanup</function>.
1473 </para>
1474 <para>
1475 Connectors state change detection must be cleanup up with a call to
1476 <function>drm_kms_helper_poll_fini</function>.
1477 </para>
1478 </sect2>
1479 <sect2>
1480 <title>Output discovery and initialization example</title>
1481 <programlisting><![CDATA[
1482void intel_crt_init(struct drm_device *dev)
1483{
1484 struct drm_connector *connector;
1485 struct intel_output *intel_output;
1486
1487 intel_output = kzalloc(sizeof(struct intel_output), GFP_KERNEL);
1488 if (!intel_output)
1489 return;
1490
1491 connector = &intel_output->base;
1492 drm_connector_init(dev, &intel_output->base,
1493 &intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA);
1494
1495 drm_encoder_init(dev, &intel_output->enc, &intel_crt_enc_funcs,
1496 DRM_MODE_ENCODER_DAC);
1497
1498 drm_mode_connector_attach_encoder(&intel_output->base,
1499 &intel_output->enc);
1500
1501 /* Set up the DDC bus. */
1502 intel_output->ddc_bus = intel_i2c_create(dev, GPIOA, "CRTDDC_A");
1503 if (!intel_output->ddc_bus) {
1504 dev_printk(KERN_ERR, &dev->pdev->dev, "DDC bus registration "
1505 "failed.\n");
1506 return;
1507 }
1508
1509 intel_output->type = INTEL_OUTPUT_ANALOG;
1510 connector->interlace_allowed = 0;
1511 connector->doublescan_allowed = 0;
1512
1513 drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs);
1514 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
1515
1516 drm_connector_register(connector);
1517}]]></programlisting>
1518 <para>
1519 In the example above (taken from the i915 driver), a CRTC, connector and
1520 encoder combination is created. A device-specific i2c bus is also
1521 created for fetching EDID data and performing monitor detection. Once
1522 the process is complete, the new connector is registered with sysfs to
1523 make its properties available to applications.
1524 </para>
1525 </sect2>
1526 <sect2>
1527 <title>KMS API Functions</title>
1528!Edrivers/gpu/drm/drm_crtc.c
1529 </sect2>
1530 <sect2>
1531 <title>KMS Data Structures</title>
1532!Iinclude/drm/drm_crtc.h
1533 </sect2>
1534 <sect2>
1535 <title>KMS Locking</title>
1536!Pdrivers/gpu/drm/drm_modeset_lock.c kms locking
1537!Iinclude/drm/drm_modeset_lock.h
1538!Edrivers/gpu/drm/drm_modeset_lock.c
1539 </sect2>
1540 </sect1>
1541
1542 <!-- Internals: kms helper functions -->
1543
1544 <sect1>
1545 <title>Mode Setting Helper Functions</title>
1546 <para>
1547 The plane, CRTC, encoder and connector functions provided by the drivers
1548 implement the DRM API. They're called by the DRM core and ioctl handlers
1549 to handle device state changes and configuration request. As implementing
1550 those functions often requires logic not specific to drivers, mid-layer
1551 helper functions are available to avoid duplicating boilerplate code.
1552 </para>
1553 <para>
1554 The DRM core contains one mid-layer implementation. The mid-layer provides
1555 implementations of several plane, CRTC, encoder and connector functions
1556 (called from the top of the mid-layer) that pre-process requests and call
1557 lower-level functions provided by the driver (at the bottom of the
1558 mid-layer). For instance, the
1559 <function>drm_crtc_helper_set_config</function> function can be used to
1560 fill the struct <structname>drm_crtc_funcs</structname>
1561 <structfield>set_config</structfield> field. When called, it will split
1562 the <methodname>set_config</methodname> operation in smaller, simpler
1563 operations and call the driver to handle them.
1564 </para>
1565 <para>
1566 To use the mid-layer, drivers call <function>drm_crtc_helper_add</function>,
1567 <function>drm_encoder_helper_add</function> and
1568 <function>drm_connector_helper_add</function> functions to install their
1569 mid-layer bottom operations handlers, and fill the
1570 <structname>drm_crtc_funcs</structname>,
1571 <structname>drm_encoder_funcs</structname> and
1572 <structname>drm_connector_funcs</structname> structures with pointers to
1573 the mid-layer top API functions. Installing the mid-layer bottom operation
1574 handlers is best done right after registering the corresponding KMS object.
1575 </para>
1576 <para>
1577 The mid-layer is not split between CRTC, encoder and connector operations.
1578 To use it, a driver must provide bottom functions for all of the three KMS
1579 entities.
1580 </para>
1581 <sect2>
1582 <title>Atomic Modeset Helper Functions Reference</title>
1583 <sect3>
1584 <title>Overview</title>
1585!Pdrivers/gpu/drm/drm_atomic_helper.c overview
1586 </sect3>
1587 <sect3>
1588 <title>Implementing Asynchronous Atomic Commit</title>
1589!Pdrivers/gpu/drm/drm_atomic_helper.c implementing async commit
1590 </sect3>
1591 <sect3>
1592 <title>Atomic State Reset and Initialization</title>
1593!Pdrivers/gpu/drm/drm_atomic_helper.c atomic state reset and initialization
1594 </sect3>
1595!Iinclude/drm/drm_atomic_helper.h
1596!Edrivers/gpu/drm/drm_atomic_helper.c
1597 </sect2>
1598 <sect2>
1599 <title>Modeset Helper Reference for Common Vtables</title>
1600!Iinclude/drm/drm_modeset_helper_vtables.h
1601!Pinclude/drm/drm_modeset_helper_vtables.h overview
1602 </sect2>
1603 <sect2>
1604 <title>Legacy CRTC/Modeset Helper Functions Reference</title>
1605!Edrivers/gpu/drm/drm_crtc_helper.c
1606!Pdrivers/gpu/drm/drm_crtc_helper.c overview
1607 </sect2>
1608 <sect2>
1609 <title>Output Probing Helper Functions Reference</title>
1610!Pdrivers/gpu/drm/drm_probe_helper.c output probing helper overview
1611!Edrivers/gpu/drm/drm_probe_helper.c
1612 </sect2>
1613 <sect2>
1614 <title>fbdev Helper Functions Reference</title>
1615!Pdrivers/gpu/drm/drm_fb_helper.c fbdev helpers
1616!Edrivers/gpu/drm/drm_fb_helper.c
1617!Iinclude/drm/drm_fb_helper.h
1618 </sect2>
1619 <sect2>
1620 <title>Framebuffer CMA Helper Functions Reference</title>
1621!Pdrivers/gpu/drm/drm_fb_cma_helper.c framebuffer cma helper functions
1622!Edrivers/gpu/drm/drm_fb_cma_helper.c
1623 </sect2>
1624 <sect2>
1625 <title>Display Port Helper Functions Reference</title>
1626!Pdrivers/gpu/drm/drm_dp_helper.c dp helpers
1627!Iinclude/drm/drm_dp_helper.h
1628!Edrivers/gpu/drm/drm_dp_helper.c
1629 </sect2>
1630 <sect2>
1631 <title>Display Port Dual Mode Adaptor Helper Functions Reference</title>
1632!Pdrivers/gpu/drm/drm_dp_dual_mode_helper.c dp dual mode helpers
1633!Iinclude/drm/drm_dp_dual_mode_helper.h
1634!Edrivers/gpu/drm/drm_dp_dual_mode_helper.c
1635 </sect2>
1636 <sect2>
1637 <title>Display Port MST Helper Functions Reference</title>
1638!Pdrivers/gpu/drm/drm_dp_mst_topology.c dp mst helper
1639!Iinclude/drm/drm_dp_mst_helper.h
1640!Edrivers/gpu/drm/drm_dp_mst_topology.c
1641 </sect2>
1642 <sect2>
1643 <title>MIPI DSI Helper Functions Reference</title>
1644!Pdrivers/gpu/drm/drm_mipi_dsi.c dsi helpers
1645!Iinclude/drm/drm_mipi_dsi.h
1646!Edrivers/gpu/drm/drm_mipi_dsi.c
1647 </sect2>
1648 <sect2>
1649 <title>EDID Helper Functions Reference</title>
1650!Edrivers/gpu/drm/drm_edid.c
1651 </sect2>
1652 <sect2>
1653 <title>Rectangle Utilities Reference</title>
1654!Pinclude/drm/drm_rect.h rect utils
1655!Iinclude/drm/drm_rect.h
1656!Edrivers/gpu/drm/drm_rect.c
1657 </sect2>
1658 <sect2>
1659 <title>Flip-work Helper Reference</title>
1660!Pinclude/drm/drm_flip_work.h flip utils
1661!Iinclude/drm/drm_flip_work.h
1662!Edrivers/gpu/drm/drm_flip_work.c
1663 </sect2>
1664 <sect2>
1665 <title>HDMI Infoframes Helper Reference</title>
1666 <para>
1667 Strictly speaking this is not a DRM helper library but generally useable
1668 by any driver interfacing with HDMI outputs like v4l or alsa drivers.
1669 But it nicely fits into the overall topic of mode setting helper
1670 libraries and hence is also included here.
1671 </para>
1672!Iinclude/linux/hdmi.h
1673!Edrivers/video/hdmi.c
1674 </sect2>
1675 <sect2>
1676 <title id="drm-kms-planehelpers">Plane Helper Reference</title>
1677!Edrivers/gpu/drm/drm_plane_helper.c
1678!Pdrivers/gpu/drm/drm_plane_helper.c overview
1679 </sect2>
1680 <sect2>
1681 <title>Tile group</title>
1682!Pdrivers/gpu/drm/drm_crtc.c Tile group
1683 </sect2>
1684 <sect2>
1685 <title>Bridges</title>
1686 <sect3>
1687 <title>Overview</title>
1688!Pdrivers/gpu/drm/drm_bridge.c overview
1689 </sect3>
1690 <sect3>
1691 <title>Default bridge callback sequence</title>
1692!Pdrivers/gpu/drm/drm_bridge.c bridge callbacks
1693 </sect3>
1694!Edrivers/gpu/drm/drm_bridge.c
1695 </sect2>
1696 <sect2>
1697 <title>Panel Helper Reference</title>
1698!Iinclude/drm/drm_panel.h
1699!Edrivers/gpu/drm/drm_panel.c
1700!Pdrivers/gpu/drm/drm_panel.c drm panel
1701 </sect2>
1702 </sect1>
1703
1704 <!-- Internals: kms properties -->
1705
1706 <sect1 id="drm-kms-properties">
1707 <title>KMS Properties</title>
1708 <para>
1709 Drivers may need to expose additional parameters to applications than
1710 those described in the previous sections. KMS supports attaching
1711 properties to CRTCs, connectors and planes and offers a userspace API to
1712 list, get and set the property values.
1713 </para>
1714 <para>
1715 Properties are identified by a name that uniquely defines the property
1716 purpose, and store an associated value. For all property types except blob
1717 properties the value is a 64-bit unsigned integer.
1718 </para>
1719 <para>
1720 KMS differentiates between properties and property instances. Drivers
1721 first create properties and then create and associate individual instances
1722 of those properties to objects. A property can be instantiated multiple
1723 times and associated with different objects. Values are stored in property
1724 instances, and all other property information are stored in the property
1725 and shared between all instances of the property.
1726 </para>
1727 <para>
1728 Every property is created with a type that influences how the KMS core
1729 handles the property. Supported property types are
1730 <variablelist>
1731 <varlistentry>
1732 <term>DRM_MODE_PROP_RANGE</term>
1733 <listitem><para>Range properties report their minimum and maximum
1734 admissible values. The KMS core verifies that values set by
1735 application fit in that range.</para></listitem>
1736 </varlistentry>
1737 <varlistentry>
1738 <term>DRM_MODE_PROP_ENUM</term>
1739 <listitem><para>Enumerated properties take a numerical value that
1740 ranges from 0 to the number of enumerated values defined by the
1741 property minus one, and associate a free-formed string name to each
1742 value. Applications can retrieve the list of defined value-name pairs
1743 and use the numerical value to get and set property instance values.
1744 </para></listitem>
1745 </varlistentry>
1746 <varlistentry>
1747 <term>DRM_MODE_PROP_BITMASK</term>
1748 <listitem><para>Bitmask properties are enumeration properties that
1749 additionally restrict all enumerated values to the 0..63 range.
1750 Bitmask property instance values combine one or more of the
1751 enumerated bits defined by the property.</para></listitem>
1752 </varlistentry>
1753 <varlistentry>
1754 <term>DRM_MODE_PROP_BLOB</term>
1755 <listitem><para>Blob properties store a binary blob without any format
1756 restriction. The binary blobs are created as KMS standalone objects,
1757 and blob property instance values store the ID of their associated
1758 blob object.</para>
1759 <para>Blob properties are only used for the connector EDID property
1760 and cannot be created by drivers.</para></listitem>
1761 </varlistentry>
1762 </variablelist>
1763 </para>
1764 <para>
1765 To create a property drivers call one of the following functions depending
1766 on the property type. All property creation functions take property flags
1767 and name, as well as type-specific arguments.
1768 <itemizedlist>
1769 <listitem>
1770 <synopsis>struct drm_property *drm_property_create_range(struct drm_device *dev, int flags,
1771 const char *name,
1772 uint64_t min, uint64_t max);</synopsis>
1773 <para>Create a range property with the given minimum and maximum
1774 values.</para>
1775 </listitem>
1776 <listitem>
1777 <synopsis>struct drm_property *drm_property_create_enum(struct drm_device *dev, int flags,
1778 const char *name,
1779 const struct drm_prop_enum_list *props,
1780 int num_values);</synopsis>
1781 <para>Create an enumerated property. The <parameter>props</parameter>
1782 argument points to an array of <parameter>num_values</parameter>
1783 value-name pairs.</para>
1784 </listitem>
1785 <listitem>
1786 <synopsis>struct drm_property *drm_property_create_bitmask(struct drm_device *dev,
1787 int flags, const char *name,
1788 const struct drm_prop_enum_list *props,
1789 int num_values);</synopsis>
1790 <para>Create a bitmask property. The <parameter>props</parameter>
1791 argument points to an array of <parameter>num_values</parameter>
1792 value-name pairs.</para>
1793 </listitem>
1794 </itemizedlist>
1795 </para>
1796 <para>
1797 Properties can additionally be created as immutable, in which case they
1798 will be read-only for applications but can be modified by the driver. To
1799 create an immutable property drivers must set the DRM_MODE_PROP_IMMUTABLE
1800 flag at property creation time.
1801 </para>
1802 <para>
1803 When no array of value-name pairs is readily available at property
1804 creation time for enumerated or range properties, drivers can create
1805 the property using the <function>drm_property_create</function> function
1806 and manually add enumeration value-name pairs by calling the
1807 <function>drm_property_add_enum</function> function. Care must be taken to
1808 properly specify the property type through the <parameter>flags</parameter>
1809 argument.
1810 </para>
1811 <para>
1812 After creating properties drivers can attach property instances to CRTC,
1813 connector and plane objects by calling the
1814 <function>drm_object_attach_property</function>. The function takes a
1815 pointer to the target object, a pointer to the previously created property
1816 and an initial instance value.
1817 </para>
1818 <sect2>
1819 <title>Existing KMS Properties</title>
1820 <para>
1821 The following table gives description of drm properties exposed by various
1822 modules/drivers.
1823 </para>
1824 <table border="1" cellpadding="0" cellspacing="0">
1825 <tbody>
1826 <tr style="font-weight: bold;">
1827 <td valign="top" >Owner Module/Drivers</td>
1828 <td valign="top" >Group</td>
1829 <td valign="top" >Property Name</td>
1830 <td valign="top" >Type</td>
1831 <td valign="top" >Property Values</td>
1832 <td valign="top" >Object attached</td>
1833 <td valign="top" >Description/Restrictions</td>
1834 </tr>
1835 <tr>
1836 <td rowspan="42" valign="top" >DRM</td>
1837 <td rowspan="2" valign="top" >Generic</td>
1838 <td valign="top" >“rotation”</td>
1839 <td valign="top" >BITMASK</td>
1840 <td valign="top" >{ 0, "rotate-0" },
1841 { 1, "rotate-90" },
1842 { 2, "rotate-180" },
1843 { 3, "rotate-270" },
1844 { 4, "reflect-x" },
1845 { 5, "reflect-y" }</td>
1846 <td valign="top" >CRTC, Plane</td>
1847 <td valign="top" >rotate-(degrees) rotates the image by the specified amount in degrees
1848 in counter clockwise direction. reflect-x and reflect-y reflects the
1849 image along the specified axis prior to rotation</td>
1850 </tr>
1851 <tr>
1852 <td valign="top" >“scaling mode”</td>
1853 <td valign="top" >ENUM</td>
1854 <td valign="top" >{ "None", "Full", "Center", "Full aspect" }</td>
1855 <td valign="top" >Connector</td>
1856 <td valign="top" >Supported by: amdgpu, gma500, i915, nouveau and radeon.</td>
1857 </tr>
1858 <tr>
1859 <td rowspan="5" valign="top" >Connector</td>
1860 <td valign="top" >“EDID”</td>
1861 <td valign="top" >BLOB | IMMUTABLE</td>
1862 <td valign="top" >0</td>
1863 <td valign="top" >Connector</td>
1864 <td valign="top" >Contains id of edid blob ptr object.</td>
1865 </tr>
1866 <tr>
1867 <td valign="top" >“DPMS”</td>
1868 <td valign="top" >ENUM</td>
1869 <td valign="top" >{ “On”, “Standby”, “Suspend”, “Off” }</td>
1870 <td valign="top" >Connector</td>
1871 <td valign="top" >Contains DPMS operation mode value.</td>
1872 </tr>
1873 <tr>
1874 <td valign="top" >“PATH”</td>
1875 <td valign="top" >BLOB | IMMUTABLE</td>
1876 <td valign="top" >0</td>
1877 <td valign="top" >Connector</td>
1878 <td valign="top" >Contains topology path to a connector.</td>
1879 </tr>
1880 <tr>
1881 <td valign="top" >“TILE”</td>
1882 <td valign="top" >BLOB | IMMUTABLE</td>
1883 <td valign="top" >0</td>
1884 <td valign="top" >Connector</td>
1885 <td valign="top" >Contains tiling information for a connector.</td>
1886 </tr>
1887 <tr>
1888 <td valign="top" >“CRTC_ID”</td>
1889 <td valign="top" >OBJECT</td>
1890 <td valign="top" >DRM_MODE_OBJECT_CRTC</td>
1891 <td valign="top" >Connector</td>
1892 <td valign="top" >CRTC that connector is attached to (atomic)</td>
1893 </tr>
1894 <tr>
1895 <td rowspan="11" valign="top" >Plane</td>
1896 <td valign="top" >“type”</td>
1897 <td valign="top" >ENUM | IMMUTABLE</td>
1898 <td valign="top" >{ "Overlay", "Primary", "Cursor" }</td>
1899 <td valign="top" >Plane</td>
1900 <td valign="top" >Plane type</td>
1901 </tr>
1902 <tr>
1903 <td valign="top" >“SRC_X”</td>
1904 <td valign="top" >RANGE</td>
1905 <td valign="top" >Min=0, Max=UINT_MAX</td>
1906 <td valign="top" >Plane</td>
1907 <td valign="top" >Scanout source x coordinate in 16.16 fixed point (atomic)</td>
1908 </tr>
1909 <tr>
1910 <td valign="top" >“SRC_Y”</td>
1911 <td valign="top" >RANGE</td>
1912 <td valign="top" >Min=0, Max=UINT_MAX</td>
1913 <td valign="top" >Plane</td>
1914 <td valign="top" >Scanout source y coordinate in 16.16 fixed point (atomic)</td>
1915 </tr>
1916 <tr>
1917 <td valign="top" >“SRC_W”</td>
1918 <td valign="top" >RANGE</td>
1919 <td valign="top" >Min=0, Max=UINT_MAX</td>
1920 <td valign="top" >Plane</td>
1921 <td valign="top" >Scanout source width in 16.16 fixed point (atomic)</td>
1922 </tr>
1923 <tr>
1924 <td valign="top" >“SRC_H”</td>
1925 <td valign="top" >RANGE</td>
1926 <td valign="top" >Min=0, Max=UINT_MAX</td>
1927 <td valign="top" >Plane</td>
1928 <td valign="top" >Scanout source height in 16.16 fixed point (atomic)</td>
1929 </tr>
1930 <tr>
1931 <td valign="top" >“CRTC_X”</td>
1932 <td valign="top" >SIGNED_RANGE</td>
1933 <td valign="top" >Min=INT_MIN, Max=INT_MAX</td>
1934 <td valign="top" >Plane</td>
1935 <td valign="top" >Scanout CRTC (destination) x coordinate (atomic)</td>
1936 </tr>
1937 <tr>
1938 <td valign="top" >“CRTC_Y”</td>
1939 <td valign="top" >SIGNED_RANGE</td>
1940 <td valign="top" >Min=INT_MIN, Max=INT_MAX</td>
1941 <td valign="top" >Plane</td>
1942 <td valign="top" >Scanout CRTC (destination) y coordinate (atomic)</td>
1943 </tr>
1944 <tr>
1945 <td valign="top" >“CRTC_W”</td>
1946 <td valign="top" >RANGE</td>
1947 <td valign="top" >Min=0, Max=UINT_MAX</td>
1948 <td valign="top" >Plane</td>
1949 <td valign="top" >Scanout CRTC (destination) width (atomic)</td>
1950 </tr>
1951 <tr>
1952 <td valign="top" >“CRTC_H”</td>
1953 <td valign="top" >RANGE</td>
1954 <td valign="top" >Min=0, Max=UINT_MAX</td>
1955 <td valign="top" >Plane</td>
1956 <td valign="top" >Scanout CRTC (destination) height (atomic)</td>
1957 </tr>
1958 <tr>
1959 <td valign="top" >“FB_ID”</td>
1960 <td valign="top" >OBJECT</td>
1961 <td valign="top" >DRM_MODE_OBJECT_FB</td>
1962 <td valign="top" >Plane</td>
1963 <td valign="top" >Scanout framebuffer (atomic)</td>
1964 </tr>
1965 <tr>
1966 <td valign="top" >“CRTC_ID”</td>
1967 <td valign="top" >OBJECT</td>
1968 <td valign="top" >DRM_MODE_OBJECT_CRTC</td>
1969 <td valign="top" >Plane</td>
1970 <td valign="top" >CRTC that plane is attached to (atomic)</td>
1971 </tr>
1972 <tr>
1973 <td rowspan="2" valign="top" >DVI-I</td>
1974 <td valign="top" >“subconnector”</td>
1975 <td valign="top" >ENUM</td>
1976 <td valign="top" >{ “Unknown”, “DVI-D”, “DVI-A” }</td>
1977 <td valign="top" >Connector</td>
1978 <td valign="top" >TBD</td>
1979 </tr>
1980 <tr>
1981 <td valign="top" >“select subconnector”</td>
1982 <td valign="top" >ENUM</td>
1983 <td valign="top" >{ “Automatic”, “DVI-D”, “DVI-A” }</td>
1984 <td valign="top" >Connector</td>
1985 <td valign="top" >TBD</td>
1986 </tr>
1987 <tr>
1988 <td rowspan="13" valign="top" >TV</td>
1989 <td valign="top" >“subconnector”</td>
1990 <td valign="top" >ENUM</td>
1991 <td valign="top" >{ "Unknown", "Composite", "SVIDEO", "Component", "SCART" }</td>
1992 <td valign="top" >Connector</td>
1993 <td valign="top" >TBD</td>
1994 </tr>
1995 <tr>
1996 <td valign="top" >“select subconnector”</td>
1997 <td valign="top" >ENUM</td>
1998 <td valign="top" >{ "Automatic", "Composite", "SVIDEO", "Component", "SCART" }</td>
1999 <td valign="top" >Connector</td>
2000 <td valign="top" >TBD</td>
2001 </tr>
2002 <tr>
2003 <td valign="top" >“mode”</td>
2004 <td valign="top" >ENUM</td>
2005 <td valign="top" >{ "NTSC_M", "NTSC_J", "NTSC_443", "PAL_B" } etc.</td>
2006 <td valign="top" >Connector</td>
2007 <td valign="top" >TBD</td>
2008 </tr>
2009 <tr>
2010 <td valign="top" >“left margin”</td>
2011 <td valign="top" >RANGE</td>
2012 <td valign="top" >Min=0, Max=100</td>
2013 <td valign="top" >Connector</td>
2014 <td valign="top" >TBD</td>
2015 </tr>
2016 <tr>
2017 <td valign="top" >“right margin”</td>
2018 <td valign="top" >RANGE</td>
2019 <td valign="top" >Min=0, Max=100</td>
2020 <td valign="top" >Connector</td>
2021 <td valign="top" >TBD</td>
2022 </tr>
2023 <tr>
2024 <td valign="top" >“top margin”</td>
2025 <td valign="top" >RANGE</td>
2026 <td valign="top" >Min=0, Max=100</td>
2027 <td valign="top" >Connector</td>
2028 <td valign="top" >TBD</td>
2029 </tr>
2030 <tr>
2031 <td valign="top" >“bottom margin”</td>
2032 <td valign="top" >RANGE</td>
2033 <td valign="top" >Min=0, Max=100</td>
2034 <td valign="top" >Connector</td>
2035 <td valign="top" >TBD</td>
2036 </tr>
2037 <tr>
2038 <td valign="top" >“brightness”</td>
2039 <td valign="top" >RANGE</td>
2040 <td valign="top" >Min=0, Max=100</td>
2041 <td valign="top" >Connector</td>
2042 <td valign="top" >TBD</td>
2043 </tr>
2044 <tr>
2045 <td valign="top" >“contrast”</td>
2046 <td valign="top" >RANGE</td>
2047 <td valign="top" >Min=0, Max=100</td>
2048 <td valign="top" >Connector</td>
2049 <td valign="top" >TBD</td>
2050 </tr>
2051 <tr>
2052 <td valign="top" >“flicker reduction”</td>
2053 <td valign="top" >RANGE</td>
2054 <td valign="top" >Min=0, Max=100</td>
2055 <td valign="top" >Connector</td>
2056 <td valign="top" >TBD</td>
2057 </tr>
2058 <tr>
2059 <td valign="top" >“overscan”</td>
2060 <td valign="top" >RANGE</td>
2061 <td valign="top" >Min=0, Max=100</td>
2062 <td valign="top" >Connector</td>
2063 <td valign="top" >TBD</td>
2064 </tr>
2065 <tr>
2066 <td valign="top" >“saturation”</td>
2067 <td valign="top" >RANGE</td>
2068 <td valign="top" >Min=0, Max=100</td>
2069 <td valign="top" >Connector</td>
2070 <td valign="top" >TBD</td>
2071 </tr>
2072 <tr>
2073 <td valign="top" >“hue”</td>
2074 <td valign="top" >RANGE</td>
2075 <td valign="top" >Min=0, Max=100</td>
2076 <td valign="top" >Connector</td>
2077 <td valign="top" >TBD</td>
2078 </tr>
2079 <tr>
2080 <td rowspan="2" valign="top" >Virtual GPU</td>
2081 <td valign="top" >“suggested X”</td>
2082 <td valign="top" >RANGE</td>
2083 <td valign="top" >Min=0, Max=0xffffffff</td>
2084 <td valign="top" >Connector</td>
2085 <td valign="top" >property to suggest an X offset for a connector</td>
2086 </tr>
2087 <tr>
2088 <td valign="top" >“suggested Y”</td>
2089 <td valign="top" >RANGE</td>
2090 <td valign="top" >Min=0, Max=0xffffffff</td>
2091 <td valign="top" >Connector</td>
2092 <td valign="top" >property to suggest an Y offset for a connector</td>
2093 </tr>
2094 <tr>
2095 <td rowspan="7" valign="top" >Optional</td>
2096 <td valign="top" >"aspect ratio"</td>
2097 <td valign="top" >ENUM</td>
2098 <td valign="top" >{ "None", "4:3", "16:9" }</td>
2099 <td valign="top" >Connector</td>
2100 <td valign="top" >TDB</td>
2101 </tr>
2102 <tr>
2103 <td valign="top" >“dirty”</td>
2104 <td valign="top" >ENUM | IMMUTABLE</td>
2105 <td valign="top" >{ "Off", "On", "Annotate" }</td>
2106 <td valign="top" >Connector</td>
2107 <td valign="top" >TBD</td>
2108 </tr>
2109 <tr>
2110 <td valign="top" >“DEGAMMA_LUT”</td>
2111 <td valign="top" >BLOB</td>
2112 <td valign="top" >0</td>
2113 <td valign="top" >CRTC</td>
2114 <td valign="top" >DRM property to set the degamma lookup table
2115 (LUT) mapping pixel data from the framebuffer before it is
2116 given to the transformation matrix. The data is an interpreted
2117 as an array of struct drm_color_lut elements. Hardware might
2118 choose not to use the full precision of the LUT elements nor
2119 use all the elements of the LUT (for example the hardware
2120 might choose to interpolate between LUT[0] and LUT[4]). </td>
2121 </tr>
2122 <tr>
2123 <td valign="top" >“DEGAMMA_LUT_SIZE”</td>
2124 <td valign="top" >RANGE | IMMUTABLE</td>
2125 <td valign="top" >Min=0, Max=UINT_MAX</td>
2126 <td valign="top" >CRTC</td>
2127 <td valign="top" >DRM property to gives the size of the lookup
2128 table to be set on the DEGAMMA_LUT property (the size depends
2129 on the underlying hardware).</td>
2130 </tr>
2131 <tr>
2132 <td valign="top" >“CTM”</td>
2133 <td valign="top" >BLOB</td>
2134 <td valign="top" >0</td>
2135 <td valign="top" >CRTC</td>
2136 <td valign="top" >DRM property to set the current
2137 transformation matrix (CTM) apply to pixel data after the
2138 lookup through the degamma LUT and before the lookup through
2139 the gamma LUT. The data is an interpreted as a struct
2140 drm_color_ctm.</td>
2141 </tr>
2142 <tr>
2143 <td valign="top" >“GAMMA_LUT”</td>
2144 <td valign="top" >BLOB</td>
2145 <td valign="top" >0</td>
2146 <td valign="top" >CRTC</td>
2147 <td valign="top" >DRM property to set the gamma lookup table
2148 (LUT) mapping pixel data after to the transformation matrix to
2149 data sent to the connector. The data is an interpreted as an
2150 array of struct drm_color_lut elements. Hardware might choose
2151 not to use the full precision of the LUT elements nor use all
2152 the elements of the LUT (for example the hardware might choose
2153 to interpolate between LUT[0] and LUT[4]).</td>
2154 </tr>
2155 <tr>
2156 <td valign="top" >“GAMMA_LUT_SIZE”</td>
2157 <td valign="top" >RANGE | IMMUTABLE</td>
2158 <td valign="top" >Min=0, Max=UINT_MAX</td>
2159 <td valign="top" >CRTC</td>
2160 <td valign="top" >DRM property to gives the size of the lookup
2161 table to be set on the GAMMA_LUT property (the size depends on
2162 the underlying hardware).</td>
2163 </tr>
2164 <tr>
2165 <td rowspan="20" valign="top" >i915</td>
2166 <td rowspan="2" valign="top" >Generic</td>
2167 <td valign="top" >"Broadcast RGB"</td>
2168 <td valign="top" >ENUM</td>
2169 <td valign="top" >{ "Automatic", "Full", "Limited 16:235" }</td>
2170 <td valign="top" >Connector</td>
2171 <td valign="top" >When this property is set to Limited 16:235
2172 and CTM is set, the hardware will be programmed with the
2173 result of the multiplication of CTM by the limited range
2174 matrix to ensure the pixels normaly in the range 0..1.0 are
2175 remapped to the range 16/255..235/255.</td>
2176 </tr>
2177 <tr>
2178 <td valign="top" >“audio”</td>
2179 <td valign="top" >ENUM</td>
2180 <td valign="top" >{ "force-dvi", "off", "auto", "on" }</td>
2181 <td valign="top" >Connector</td>
2182 <td valign="top" >TBD</td>
2183 </tr>
2184 <tr>
2185 <td rowspan="17" valign="top" >SDVO-TV</td>
2186 <td valign="top" >“mode”</td>
2187 <td valign="top" >ENUM</td>
2188 <td valign="top" >{ "NTSC_M", "NTSC_J", "NTSC_443", "PAL_B" } etc.</td>
2189 <td valign="top" >Connector</td>
2190 <td valign="top" >TBD</td>
2191 </tr>
2192 <tr>
2193 <td valign="top" >"left_margin"</td>
2194 <td valign="top" >RANGE</td>
2195 <td valign="top" >Min=0, Max= SDVO dependent</td>
2196 <td valign="top" >Connector</td>
2197 <td valign="top" >TBD</td>
2198 </tr>
2199 <tr>
2200 <td valign="top" >"right_margin"</td>
2201 <td valign="top" >RANGE</td>
2202 <td valign="top" >Min=0, Max= SDVO dependent</td>
2203 <td valign="top" >Connector</td>
2204 <td valign="top" >TBD</td>
2205 </tr>
2206 <tr>
2207 <td valign="top" >"top_margin"</td>
2208 <td valign="top" >RANGE</td>
2209 <td valign="top" >Min=0, Max= SDVO dependent</td>
2210 <td valign="top" >Connector</td>
2211 <td valign="top" >TBD</td>
2212 </tr>
2213 <tr>
2214 <td valign="top" >"bottom_margin"</td>
2215 <td valign="top" >RANGE</td>
2216 <td valign="top" >Min=0, Max= SDVO dependent</td>
2217 <td valign="top" >Connector</td>
2218 <td valign="top" >TBD</td>
2219 </tr>
2220 <tr>
2221 <td valign="top" >“hpos”</td>
2222 <td valign="top" >RANGE</td>
2223 <td valign="top" >Min=0, Max= SDVO dependent</td>
2224 <td valign="top" >Connector</td>
2225 <td valign="top" >TBD</td>
2226 </tr>
2227 <tr>
2228 <td valign="top" >“vpos”</td>
2229 <td valign="top" >RANGE</td>
2230 <td valign="top" >Min=0, Max= SDVO dependent</td>
2231 <td valign="top" >Connector</td>
2232 <td valign="top" >TBD</td>
2233 </tr>
2234 <tr>
2235 <td valign="top" >“contrast”</td>
2236 <td valign="top" >RANGE</td>
2237 <td valign="top" >Min=0, Max= SDVO dependent</td>
2238 <td valign="top" >Connector</td>
2239 <td valign="top" >TBD</td>
2240 </tr>
2241 <tr>
2242 <td valign="top" >“saturation”</td>
2243 <td valign="top" >RANGE</td>
2244 <td valign="top" >Min=0, Max= SDVO dependent</td>
2245 <td valign="top" >Connector</td>
2246 <td valign="top" >TBD</td>
2247 </tr>
2248 <tr>
2249 <td valign="top" >“hue”</td>
2250 <td valign="top" >RANGE</td>
2251 <td valign="top" >Min=0, Max= SDVO dependent</td>
2252 <td valign="top" >Connector</td>
2253 <td valign="top" >TBD</td>
2254 </tr>
2255 <tr>
2256 <td valign="top" >“sharpness”</td>
2257 <td valign="top" >RANGE</td>
2258 <td valign="top" >Min=0, Max= SDVO dependent</td>
2259 <td valign="top" >Connector</td>
2260 <td valign="top" >TBD</td>
2261 </tr>
2262 <tr>
2263 <td valign="top" >“flicker_filter”</td>
2264 <td valign="top" >RANGE</td>
2265 <td valign="top" >Min=0, Max= SDVO dependent</td>
2266 <td valign="top" >Connector</td>
2267 <td valign="top" >TBD</td>
2268 </tr>
2269 <tr>
2270 <td valign="top" >“flicker_filter_adaptive”</td>
2271 <td valign="top" >RANGE</td>
2272 <td valign="top" >Min=0, Max= SDVO dependent</td>
2273 <td valign="top" >Connector</td>
2274 <td valign="top" >TBD</td>
2275 </tr>
2276 <tr>
2277 <td valign="top" >“flicker_filter_2d”</td>
2278 <td valign="top" >RANGE</td>
2279 <td valign="top" >Min=0, Max= SDVO dependent</td>
2280 <td valign="top" >Connector</td>
2281 <td valign="top" >TBD</td>
2282 </tr>
2283 <tr>
2284 <td valign="top" >“tv_chroma_filter”</td>
2285 <td valign="top" >RANGE</td>
2286 <td valign="top" >Min=0, Max= SDVO dependent</td>
2287 <td valign="top" >Connector</td>
2288 <td valign="top" >TBD</td>
2289 </tr>
2290 <tr>
2291 <td valign="top" >“tv_luma_filter”</td>
2292 <td valign="top" >RANGE</td>
2293 <td valign="top" >Min=0, Max= SDVO dependent</td>
2294 <td valign="top" >Connector</td>
2295 <td valign="top" >TBD</td>
2296 </tr>
2297 <tr>
2298 <td valign="top" >“dot_crawl”</td>
2299 <td valign="top" >RANGE</td>
2300 <td valign="top" >Min=0, Max=1</td>
2301 <td valign="top" >Connector</td>
2302 <td valign="top" >TBD</td>
2303 </tr>
2304 <tr>
2305 <td valign="top" >SDVO-TV/LVDS</td>
2306 <td valign="top" >“brightness”</td>
2307 <td valign="top" >RANGE</td>
2308 <td valign="top" >Min=0, Max= SDVO dependent</td>
2309 <td valign="top" >Connector</td>
2310 <td valign="top" >TBD</td>
2311 </tr>
2312 <tr>
2313 <td rowspan="2" valign="top" >CDV gma-500</td>
2314 <td rowspan="2" valign="top" >Generic</td>
2315 <td valign="top" >"Broadcast RGB"</td>
2316 <td valign="top" >ENUM</td>
2317 <td valign="top" >{ “Full”, “Limited 16:235” }</td>
2318 <td valign="top" >Connector</td>
2319 <td valign="top" >TBD</td>
2320 </tr>
2321 <tr>
2322 <td valign="top" >"Broadcast RGB"</td>
2323 <td valign="top" >ENUM</td>
2324 <td valign="top" >{ “off”, “auto”, “on” }</td>
2325 <td valign="top" >Connector</td>
2326 <td valign="top" >TBD</td>
2327 </tr>
2328 <tr>
2329 <td rowspan="19" valign="top" >Poulsbo</td>
2330 <td rowspan="1" valign="top" >Generic</td>
2331 <td valign="top" >“backlight”</td>
2332 <td valign="top" >RANGE</td>
2333 <td valign="top" >Min=0, Max=100</td>
2334 <td valign="top" >Connector</td>
2335 <td valign="top" >TBD</td>
2336 </tr>
2337 <tr>
2338 <td rowspan="17" valign="top" >SDVO-TV</td>
2339 <td valign="top" >“mode”</td>
2340 <td valign="top" >ENUM</td>
2341 <td valign="top" >{ "NTSC_M", "NTSC_J", "NTSC_443", "PAL_B" } etc.</td>
2342 <td valign="top" >Connector</td>
2343 <td valign="top" >TBD</td>
2344 </tr>
2345 <tr>
2346 <td valign="top" >"left_margin"</td>
2347 <td valign="top" >RANGE</td>
2348 <td valign="top" >Min=0, Max= SDVO dependent</td>
2349 <td valign="top" >Connector</td>
2350 <td valign="top" >TBD</td>
2351 </tr>
2352 <tr>
2353 <td valign="top" >"right_margin"</td>
2354 <td valign="top" >RANGE</td>
2355 <td valign="top" >Min=0, Max= SDVO dependent</td>
2356 <td valign="top" >Connector</td>
2357 <td valign="top" >TBD</td>
2358 </tr>
2359 <tr>
2360 <td valign="top" >"top_margin"</td>
2361 <td valign="top" >RANGE</td>
2362 <td valign="top" >Min=0, Max= SDVO dependent</td>
2363 <td valign="top" >Connector</td>
2364 <td valign="top" >TBD</td>
2365 </tr>
2366 <tr>
2367 <td valign="top" >"bottom_margin"</td>
2368 <td valign="top" >RANGE</td>
2369 <td valign="top" >Min=0, Max= SDVO dependent</td>
2370 <td valign="top" >Connector</td>
2371 <td valign="top" >TBD</td>
2372 </tr>
2373 <tr>
2374 <td valign="top" >“hpos”</td>
2375 <td valign="top" >RANGE</td>
2376 <td valign="top" >Min=0, Max= SDVO dependent</td>
2377 <td valign="top" >Connector</td>
2378 <td valign="top" >TBD</td>
2379 </tr>
2380 <tr>
2381 <td valign="top" >“vpos”</td>
2382 <td valign="top" >RANGE</td>
2383 <td valign="top" >Min=0, Max= SDVO dependent</td>
2384 <td valign="top" >Connector</td>
2385 <td valign="top" >TBD</td>
2386 </tr>
2387 <tr>
2388 <td valign="top" >“contrast”</td>
2389 <td valign="top" >RANGE</td>
2390 <td valign="top" >Min=0, Max= SDVO dependent</td>
2391 <td valign="top" >Connector</td>
2392 <td valign="top" >TBD</td>
2393 </tr>
2394 <tr>
2395 <td valign="top" >“saturation”</td>
2396 <td valign="top" >RANGE</td>
2397 <td valign="top" >Min=0, Max= SDVO dependent</td>
2398 <td valign="top" >Connector</td>
2399 <td valign="top" >TBD</td>
2400 </tr>
2401 <tr>
2402 <td valign="top" >“hue”</td>
2403 <td valign="top" >RANGE</td>
2404 <td valign="top" >Min=0, Max= SDVO dependent</td>
2405 <td valign="top" >Connector</td>
2406 <td valign="top" >TBD</td>
2407 </tr>
2408 <tr>
2409 <td valign="top" >“sharpness”</td>
2410 <td valign="top" >RANGE</td>
2411 <td valign="top" >Min=0, Max= SDVO dependent</td>
2412 <td valign="top" >Connector</td>
2413 <td valign="top" >TBD</td>
2414 </tr>
2415 <tr>
2416 <td valign="top" >“flicker_filter”</td>
2417 <td valign="top" >RANGE</td>
2418 <td valign="top" >Min=0, Max= SDVO dependent</td>
2419 <td valign="top" >Connector</td>
2420 <td valign="top" >TBD</td>
2421 </tr>
2422 <tr>
2423 <td valign="top" >“flicker_filter_adaptive”</td>
2424 <td valign="top" >RANGE</td>
2425 <td valign="top" >Min=0, Max= SDVO dependent</td>
2426 <td valign="top" >Connector</td>
2427 <td valign="top" >TBD</td>
2428 </tr>
2429 <tr>
2430 <td valign="top" >“flicker_filter_2d”</td>
2431 <td valign="top" >RANGE</td>
2432 <td valign="top" >Min=0, Max= SDVO dependent</td>
2433 <td valign="top" >Connector</td>
2434 <td valign="top" >TBD</td>
2435 </tr>
2436 <tr>
2437 <td valign="top" >“tv_chroma_filter”</td>
2438 <td valign="top" >RANGE</td>
2439 <td valign="top" >Min=0, Max= SDVO dependent</td>
2440 <td valign="top" >Connector</td>
2441 <td valign="top" >TBD</td>
2442 </tr>
2443 <tr>
2444 <td valign="top" >“tv_luma_filter”</td>
2445 <td valign="top" >RANGE</td>
2446 <td valign="top" >Min=0, Max= SDVO dependent</td>
2447 <td valign="top" >Connector</td>
2448 <td valign="top" >TBD</td>
2449 </tr>
2450 <tr>
2451 <td valign="top" >“dot_crawl”</td>
2452 <td valign="top" >RANGE</td>
2453 <td valign="top" >Min=0, Max=1</td>
2454 <td valign="top" >Connector</td>
2455 <td valign="top" >TBD</td>
2456 </tr>
2457 <tr>
2458 <td valign="top" >SDVO-TV/LVDS</td>
2459 <td valign="top" >“brightness”</td>
2460 <td valign="top" >RANGE</td>
2461 <td valign="top" >Min=0, Max= SDVO dependent</td>
2462 <td valign="top" >Connector</td>
2463 <td valign="top" >TBD</td>
2464 </tr>
2465 <tr>
2466 <td rowspan="11" valign="top" >armada</td>
2467 <td rowspan="2" valign="top" >CRTC</td>
2468 <td valign="top" >"CSC_YUV"</td>
2469 <td valign="top" >ENUM</td>
2470 <td valign="top" >{ "Auto" , "CCIR601", "CCIR709" }</td>
2471 <td valign="top" >CRTC</td>
2472 <td valign="top" >TBD</td>
2473 </tr>
2474 <tr>
2475 <td valign="top" >"CSC_RGB"</td>
2476 <td valign="top" >ENUM</td>
2477 <td valign="top" >{ "Auto", "Computer system", "Studio" }</td>
2478 <td valign="top" >CRTC</td>
2479 <td valign="top" >TBD</td>
2480 </tr>
2481 <tr>
2482 <td rowspan="9" valign="top" >Overlay</td>
2483 <td valign="top" >"colorkey"</td>
2484 <td valign="top" >RANGE</td>
2485 <td valign="top" >Min=0, Max=0xffffff</td>
2486 <td valign="top" >Plane</td>
2487 <td valign="top" >TBD</td>
2488 </tr>
2489 <tr>
2490 <td valign="top" >"colorkey_min"</td>
2491 <td valign="top" >RANGE</td>
2492 <td valign="top" >Min=0, Max=0xffffff</td>
2493 <td valign="top" >Plane</td>
2494 <td valign="top" >TBD</td>
2495 </tr>
2496 <tr>
2497 <td valign="top" >"colorkey_max"</td>
2498 <td valign="top" >RANGE</td>
2499 <td valign="top" >Min=0, Max=0xffffff</td>
2500 <td valign="top" >Plane</td>
2501 <td valign="top" >TBD</td>
2502 </tr>
2503 <tr>
2504 <td valign="top" >"colorkey_val"</td>
2505 <td valign="top" >RANGE</td>
2506 <td valign="top" >Min=0, Max=0xffffff</td>
2507 <td valign="top" >Plane</td>
2508 <td valign="top" >TBD</td>
2509 </tr>
2510 <tr>
2511 <td valign="top" >"colorkey_alpha"</td>
2512 <td valign="top" >RANGE</td>
2513 <td valign="top" >Min=0, Max=0xffffff</td>
2514 <td valign="top" >Plane</td>
2515 <td valign="top" >TBD</td>
2516 </tr>
2517 <tr>
2518 <td valign="top" >"colorkey_mode"</td>
2519 <td valign="top" >ENUM</td>
2520 <td valign="top" >{ "disabled", "Y component", "U component"
2521 , "V component", "RGB", “R component", "G component", "B component" }</td>
2522 <td valign="top" >Plane</td>
2523 <td valign="top" >TBD</td>
2524 </tr>
2525 <tr>
2526 <td valign="top" >"brightness"</td>
2527 <td valign="top" >RANGE</td>
2528 <td valign="top" >Min=0, Max=256 + 255</td>
2529 <td valign="top" >Plane</td>
2530 <td valign="top" >TBD</td>
2531 </tr>
2532 <tr>
2533 <td valign="top" >"contrast"</td>
2534 <td valign="top" >RANGE</td>
2535 <td valign="top" >Min=0, Max=0x7fff</td>
2536 <td valign="top" >Plane</td>
2537 <td valign="top" >TBD</td>
2538 </tr>
2539 <tr>
2540 <td valign="top" >"saturation"</td>
2541 <td valign="top" >RANGE</td>
2542 <td valign="top" >Min=0, Max=0x7fff</td>
2543 <td valign="top" >Plane</td>
2544 <td valign="top" >TBD</td>
2545 </tr>
2546 <tr>
2547 <td rowspan="2" valign="top" >exynos</td>
2548 <td valign="top" >CRTC</td>
2549 <td valign="top" >“mode”</td>
2550 <td valign="top" >ENUM</td>
2551 <td valign="top" >{ "normal", "blank" }</td>
2552 <td valign="top" >CRTC</td>
2553 <td valign="top" >TBD</td>
2554 </tr>
2555 <tr>
2556 <td valign="top" >Overlay</td>
2557 <td valign="top" >“zpos”</td>
2558 <td valign="top" >RANGE</td>
2559 <td valign="top" >Min=0, Max=MAX_PLANE-1</td>
2560 <td valign="top" >Plane</td>
2561 <td valign="top" >TBD</td>
2562 </tr>
2563 <tr>
2564 <td rowspan="2" valign="top" >i2c/ch7006_drv</td>
2565 <td valign="top" >Generic</td>
2566 <td valign="top" >“scale”</td>
2567 <td valign="top" >RANGE</td>
2568 <td valign="top" >Min=0, Max=2</td>
2569 <td valign="top" >Connector</td>
2570 <td valign="top" >TBD</td>
2571 </tr>
2572 <tr>
2573 <td rowspan="1" valign="top" >TV</td>
2574 <td valign="top" >“mode”</td>
2575 <td valign="top" >ENUM</td>
2576 <td valign="top" >{ "PAL", "PAL-M","PAL-N"}, ”PAL-Nc"
2577 , "PAL-60", "NTSC-M", "NTSC-J" }</td>
2578 <td valign="top" >Connector</td>
2579 <td valign="top" >TBD</td>
2580 </tr>
2581 <tr>
2582 <td rowspan="15" valign="top" >nouveau</td>
2583 <td rowspan="6" valign="top" >NV10 Overlay</td>
2584 <td valign="top" >"colorkey"</td>
2585 <td valign="top" >RANGE</td>
2586 <td valign="top" >Min=0, Max=0x01ffffff</td>
2587 <td valign="top" >Plane</td>
2588 <td valign="top" >TBD</td>
2589 </tr>
2590 <tr>
2591 <td valign="top" >“contrast”</td>
2592 <td valign="top" >RANGE</td>
2593 <td valign="top" >Min=0, Max=8192-1</td>
2594 <td valign="top" >Plane</td>
2595 <td valign="top" >TBD</td>
2596 </tr>
2597 <tr>
2598 <td valign="top" >“brightness”</td>
2599 <td valign="top" >RANGE</td>
2600 <td valign="top" >Min=0, Max=1024</td>
2601 <td valign="top" >Plane</td>
2602 <td valign="top" >TBD</td>
2603 </tr>
2604 <tr>
2605 <td valign="top" >“hue”</td>
2606 <td valign="top" >RANGE</td>
2607 <td valign="top" >Min=0, Max=359</td>
2608 <td valign="top" >Plane</td>
2609 <td valign="top" >TBD</td>
2610 </tr>
2611 <tr>
2612 <td valign="top" >“saturation”</td>
2613 <td valign="top" >RANGE</td>
2614 <td valign="top" >Min=0, Max=8192-1</td>
2615 <td valign="top" >Plane</td>
2616 <td valign="top" >TBD</td>
2617 </tr>
2618 <tr>
2619 <td valign="top" >“iturbt_709”</td>
2620 <td valign="top" >RANGE</td>
2621 <td valign="top" >Min=0, Max=1</td>
2622 <td valign="top" >Plane</td>
2623 <td valign="top" >TBD</td>
2624 </tr>
2625 <tr>
2626 <td rowspan="2" valign="top" >Nv04 Overlay</td>
2627 <td valign="top" >“colorkey”</td>
2628 <td valign="top" >RANGE</td>
2629 <td valign="top" >Min=0, Max=0x01ffffff</td>
2630 <td valign="top" >Plane</td>
2631 <td valign="top" >TBD</td>
2632 </tr>
2633 <tr>
2634 <td valign="top" >“brightness”</td>
2635 <td valign="top" >RANGE</td>
2636 <td valign="top" >Min=0, Max=1024</td>
2637 <td valign="top" >Plane</td>
2638 <td valign="top" >TBD</td>
2639 </tr>
2640 <tr>
2641 <td rowspan="7" valign="top" >Display</td>
2642 <td valign="top" >“dithering mode”</td>
2643 <td valign="top" >ENUM</td>
2644 <td valign="top" >{ "auto", "off", "on" }</td>
2645 <td valign="top" >Connector</td>
2646 <td valign="top" >TBD</td>
2647 </tr>
2648 <tr>
2649 <td valign="top" >“dithering depth”</td>
2650 <td valign="top" >ENUM</td>
2651 <td valign="top" >{ "auto", "off", "on", "static 2x2", "dynamic 2x2", "temporal" }</td>
2652 <td valign="top" >Connector</td>
2653 <td valign="top" >TBD</td>
2654 </tr>
2655 <tr>
2656 <td valign="top" >“underscan”</td>
2657 <td valign="top" >ENUM</td>
2658 <td valign="top" >{ "auto", "6 bpc", "8 bpc" }</td>
2659 <td valign="top" >Connector</td>
2660 <td valign="top" >TBD</td>
2661 </tr>
2662 <tr>
2663 <td valign="top" >“underscan hborder”</td>
2664 <td valign="top" >RANGE</td>
2665 <td valign="top" >Min=0, Max=128</td>
2666 <td valign="top" >Connector</td>
2667 <td valign="top" >TBD</td>
2668 </tr>
2669 <tr>
2670 <td valign="top" >“underscan vborder”</td>
2671 <td valign="top" >RANGE</td>
2672 <td valign="top" >Min=0, Max=128</td>
2673 <td valign="top" >Connector</td>
2674 <td valign="top" >TBD</td>
2675 </tr>
2676 <tr>
2677 <td valign="top" >“vibrant hue”</td>
2678 <td valign="top" >RANGE</td>
2679 <td valign="top" >Min=0, Max=180</td>
2680 <td valign="top" >Connector</td>
2681 <td valign="top" >TBD</td>
2682 </tr>
2683 <tr>
2684 <td valign="top" >“color vibrance”</td>
2685 <td valign="top" >RANGE</td>
2686 <td valign="top" >Min=0, Max=200</td>
2687 <td valign="top" >Connector</td>
2688 <td valign="top" >TBD</td>
2689 </tr>
2690 <tr>
2691 <td valign="top" >omap</td>
2692 <td valign="top" >Generic</td>
2693 <td valign="top" >“zorder”</td>
2694 <td valign="top" >RANGE</td>
2695 <td valign="top" >Min=0, Max=3</td>
2696 <td valign="top" >CRTC, Plane</td>
2697 <td valign="top" >TBD</td>
2698 </tr>
2699 <tr>
2700 <td valign="top" >qxl</td>
2701 <td valign="top" >Generic</td>
2702 <td valign="top" >“hotplug_mode_update"</td>
2703 <td valign="top" >RANGE</td>
2704 <td valign="top" >Min=0, Max=1</td>
2705 <td valign="top" >Connector</td>
2706 <td valign="top" >TBD</td>
2707 </tr>
2708 <tr>
2709 <td rowspan="9" valign="top" >radeon</td>
2710 <td valign="top" >DVI-I</td>
2711 <td valign="top" >“coherent”</td>
2712 <td valign="top" >RANGE</td>
2713 <td valign="top" >Min=0, Max=1</td>
2714 <td valign="top" >Connector</td>
2715 <td valign="top" >TBD</td>
2716 </tr>
2717 <tr>
2718 <td valign="top" >DAC enable load detect</td>
2719 <td valign="top" >“load detection”</td>
2720 <td valign="top" >RANGE</td>
2721 <td valign="top" >Min=0, Max=1</td>
2722 <td valign="top" >Connector</td>
2723 <td valign="top" >TBD</td>
2724 </tr>
2725 <tr>
2726 <td valign="top" >TV Standard</td>
2727 <td valign="top" >"tv standard"</td>
2728 <td valign="top" >ENUM</td>
2729 <td valign="top" >{ "ntsc", "pal", "pal-m", "pal-60", "ntsc-j"
2730 , "scart-pal", "pal-cn", "secam" }</td>
2731 <td valign="top" >Connector</td>
2732 <td valign="top" >TBD</td>
2733 </tr>
2734 <tr>
2735 <td valign="top" >legacy TMDS PLL detect</td>
2736 <td valign="top" >"tmds_pll"</td>
2737 <td valign="top" >ENUM</td>
2738 <td valign="top" >{ "driver", "bios" }</td>
2739 <td valign="top" >-</td>
2740 <td valign="top" >TBD</td>
2741 </tr>
2742 <tr>
2743 <td rowspan="3" valign="top" >Underscan</td>
2744 <td valign="top" >"underscan"</td>
2745 <td valign="top" >ENUM</td>
2746 <td valign="top" >{ "off", "on", "auto" }</td>
2747 <td valign="top" >Connector</td>
2748 <td valign="top" >TBD</td>
2749 </tr>
2750 <tr>
2751 <td valign="top" >"underscan hborder"</td>
2752 <td valign="top" >RANGE</td>
2753 <td valign="top" >Min=0, Max=128</td>
2754 <td valign="top" >Connector</td>
2755 <td valign="top" >TBD</td>
2756 </tr>
2757 <tr>
2758 <td valign="top" >"underscan vborder"</td>
2759 <td valign="top" >RANGE</td>
2760 <td valign="top" >Min=0, Max=128</td>
2761 <td valign="top" >Connector</td>
2762 <td valign="top" >TBD</td>
2763 </tr>
2764 <tr>
2765 <td valign="top" >Audio</td>
2766 <td valign="top" >“audio”</td>
2767 <td valign="top" >ENUM</td>
2768 <td valign="top" >{ "off", "on", "auto" }</td>
2769 <td valign="top" >Connector</td>
2770 <td valign="top" >TBD</td>
2771 </tr>
2772 <tr>
2773 <td valign="top" >FMT Dithering</td>
2774 <td valign="top" >“dither”</td>
2775 <td valign="top" >ENUM</td>
2776 <td valign="top" >{ "off", "on" }</td>
2777 <td valign="top" >Connector</td>
2778 <td valign="top" >TBD</td>
2779 </tr>
2780 <tr>
2781 <td rowspan="3" valign="top" >rcar-du</td>
2782 <td rowspan="3" valign="top" >Generic</td>
2783 <td valign="top" >"alpha"</td>
2784 <td valign="top" >RANGE</td>
2785 <td valign="top" >Min=0, Max=255</td>
2786 <td valign="top" >Plane</td>
2787 <td valign="top" >TBD</td>
2788 </tr>
2789 <tr>
2790 <td valign="top" >"colorkey"</td>
2791 <td valign="top" >RANGE</td>
2792 <td valign="top" >Min=0, Max=0x01ffffff</td>
2793 <td valign="top" >Plane</td>
2794 <td valign="top" >TBD</td>
2795 </tr>
2796 <tr>
2797 <td valign="top" >"zpos"</td>
2798 <td valign="top" >RANGE</td>
2799 <td valign="top" >Min=1, Max=7</td>
2800 <td valign="top" >Plane</td>
2801 <td valign="top" >TBD</td>
2802 </tr>
2803 </tbody>
2804 </table>
2805 </sect2>
2806 </sect1>
2807
2808 <!-- Internals: vertical blanking -->
2809
2810 <sect1 id="drm-vertical-blank">
2811 <title>Vertical Blanking</title>
2812 <para>
2813 Vertical blanking plays a major role in graphics rendering. To achieve
2814 tear-free display, users must synchronize page flips and/or rendering to
2815 vertical blanking. The DRM API offers ioctls to perform page flips
2816 synchronized to vertical blanking and wait for vertical blanking.
2817 </para>
2818 <para>
2819 The DRM core handles most of the vertical blanking management logic, which
2820 involves filtering out spurious interrupts, keeping race-free blanking
2821 counters, coping with counter wrap-around and resets and keeping use
2822 counts. It relies on the driver to generate vertical blanking interrupts
2823 and optionally provide a hardware vertical blanking counter. Drivers must
2824 implement the following operations.
2825 </para>
2826 <itemizedlist>
2827 <listitem>
2828 <synopsis>int (*enable_vblank) (struct drm_device *dev, int crtc);
2829void (*disable_vblank) (struct drm_device *dev, int crtc);</synopsis>
2830 <para>
2831 Enable or disable vertical blanking interrupts for the given CRTC.
2832 </para>
2833 </listitem>
2834 <listitem>
2835 <synopsis>u32 (*get_vblank_counter) (struct drm_device *dev, int crtc);</synopsis>
2836 <para>
2837 Retrieve the value of the vertical blanking counter for the given
2838 CRTC. If the hardware maintains a vertical blanking counter its value
2839 should be returned. Otherwise drivers can use the
2840 <function>drm_vblank_count</function> helper function to handle this
2841 operation.
2842 </para>
2843 </listitem>
2844 </itemizedlist>
2845 <para>
2846 Drivers must initialize the vertical blanking handling core with a call to
2847 <function>drm_vblank_init</function> in their
2848 <methodname>load</methodname> operation. The function will set the struct
2849 <structname>drm_device</structname>
2850 <structfield>vblank_disable_allowed</structfield> field to 0. This will
2851 keep vertical blanking interrupts enabled permanently until the first mode
2852 set operation, where <structfield>vblank_disable_allowed</structfield> is
2853 set to 1. The reason behind this is not clear. Drivers can set the field
2854 to 1 after <function>calling drm_vblank_init</function> to make vertical
2855 blanking interrupts dynamically managed from the beginning.
2856 </para>
2857 <para>
2858 Vertical blanking interrupts can be enabled by the DRM core or by drivers
2859 themselves (for instance to handle page flipping operations). The DRM core
2860 maintains a vertical blanking use count to ensure that the interrupts are
2861 not disabled while a user still needs them. To increment the use count,
2862 drivers call <function>drm_vblank_get</function>. Upon return vertical
2863 blanking interrupts are guaranteed to be enabled.
2864 </para>
2865 <para>
2866 To decrement the use count drivers call
2867 <function>drm_vblank_put</function>. Only when the use count drops to zero
2868 will the DRM core disable the vertical blanking interrupts after a delay
2869 by scheduling a timer. The delay is accessible through the vblankoffdelay
2870 module parameter or the <varname>drm_vblank_offdelay</varname> global
2871 variable and expressed in milliseconds. Its default value is 5000 ms.
2872 Zero means never disable, and a negative value means disable immediately.
2873 Drivers may override the behaviour by setting the
2874 <structname>drm_device</structname>
2875 <structfield>vblank_disable_immediate</structfield> flag, which when set
2876 causes vblank interrupts to be disabled immediately regardless of the
2877 drm_vblank_offdelay value. The flag should only be set if there's a
2878 properly working hardware vblank counter present.
2879 </para>
2880 <para>
2881 When a vertical blanking interrupt occurs drivers only need to call the
2882 <function>drm_handle_vblank</function> function to account for the
2883 interrupt.
2884 </para>
2885 <para>
2886 Resources allocated by <function>drm_vblank_init</function> must be freed
2887 with a call to <function>drm_vblank_cleanup</function> in the driver
2888 <methodname>unload</methodname> operation handler.
2889 </para>
2890 <sect2>
2891 <title>Vertical Blanking and Interrupt Handling Functions Reference</title>
2892!Edrivers/gpu/drm/drm_irq.c
2893!Finclude/drm/drmP.h drm_crtc_vblank_waitqueue
2894 </sect2>
2895 </sect1>
2896
2897 <!-- Internals: open/close, file operations and ioctls -->
2898
2899 <sect1>
2900 <title>Open/Close, File Operations and IOCTLs</title>
2901 <sect2>
2902 <title>Open and Close</title>
2903 <synopsis>int (*firstopen) (struct drm_device *);
2904void (*lastclose) (struct drm_device *);
2905int (*open) (struct drm_device *, struct drm_file *);
2906void (*preclose) (struct drm_device *, struct drm_file *);
2907void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
2908 <abstract>Open and close handlers. None of those methods are mandatory.
2909 </abstract>
2910 <para>
2911 The <methodname>firstopen</methodname> method is called by the DRM core
2912 for legacy UMS (User Mode Setting) drivers only when an application
2913 opens a device that has no other opened file handle. UMS drivers can
2914 implement it to acquire device resources. KMS drivers can't use the
2915 method and must acquire resources in the <methodname>load</methodname>
2916 method instead.
2917 </para>
2918 <para>
2919 Similarly the <methodname>lastclose</methodname> method is called when
2920 the last application holding a file handle opened on the device closes
2921 it, for both UMS and KMS drivers. Additionally, the method is also
2922 called at module unload time or, for hot-pluggable devices, when the
2923 device is unplugged. The <methodname>firstopen</methodname> and
2924 <methodname>lastclose</methodname> calls can thus be unbalanced.
2925 </para>
2926 <para>
2927 The <methodname>open</methodname> method is called every time the device
2928 is opened by an application. Drivers can allocate per-file private data
2929 in this method and store them in the struct
2930 <structname>drm_file</structname> <structfield>driver_priv</structfield>
2931 field. Note that the <methodname>open</methodname> method is called
2932 before <methodname>firstopen</methodname>.
2933 </para>
2934 <para>
2935 The close operation is split into <methodname>preclose</methodname> and
2936 <methodname>postclose</methodname> methods. Drivers must stop and
2937 cleanup all per-file operations in the <methodname>preclose</methodname>
2938 method. For instance pending vertical blanking and page flip events must
2939 be cancelled. No per-file operation is allowed on the file handle after
2940 returning from the <methodname>preclose</methodname> method.
2941 </para>
2942 <para>
2943 Finally the <methodname>postclose</methodname> method is called as the
2944 last step of the close operation, right before calling the
2945 <methodname>lastclose</methodname> method if no other open file handle
2946 exists for the device. Drivers that have allocated per-file private data
2947 in the <methodname>open</methodname> method should free it here.
2948 </para>
2949 <para>
2950 The <methodname>lastclose</methodname> method should restore CRTC and
2951 plane properties to default value, so that a subsequent open of the
2952 device will not inherit state from the previous user. It can also be
2953 used to execute delayed power switching state changes, e.g. in
2954 conjunction with the vga_switcheroo infrastructure (see
2955 <xref linkend="vga_switcheroo"/>). Beyond that KMS drivers should not
2956 do any further cleanup. Only legacy UMS drivers might need to clean up
2957 device state so that the vga console or an independent fbdev driver
2958 could take over.
2959 </para>
2960 </sect2>
2961 <sect2>
2962 <title>File Operations</title>
2963!Pdrivers/gpu/drm/drm_fops.c file operations
2964!Edrivers/gpu/drm/drm_fops.c
2965 </sect2>
2966 <sect2>
2967 <title>IOCTLs</title>
2968 <synopsis>struct drm_ioctl_desc *ioctls;
2969int num_ioctls;</synopsis>
2970 <abstract>Driver-specific ioctls descriptors table.</abstract>
2971 <para>
2972 Driver-specific ioctls numbers start at DRM_COMMAND_BASE. The ioctls
2973 descriptors table is indexed by the ioctl number offset from the base
2974 value. Drivers can use the DRM_IOCTL_DEF_DRV() macro to initialize the
2975 table entries.
2976 </para>
2977 <para>
2978 <programlisting>DRM_IOCTL_DEF_DRV(ioctl, func, flags)</programlisting>
2979 <para>
2980 <parameter>ioctl</parameter> is the ioctl name. Drivers must define
2981 the DRM_##ioctl and DRM_IOCTL_##ioctl macros to the ioctl number
2982 offset from DRM_COMMAND_BASE and the ioctl number respectively. The
2983 first macro is private to the device while the second must be exposed
2984 to userspace in a public header.
2985 </para>
2986 <para>
2987 <parameter>func</parameter> is a pointer to the ioctl handler function
2988 compatible with the <type>drm_ioctl_t</type> type.
2989 <programlisting>typedef int drm_ioctl_t(struct drm_device *dev, void *data,
2990 struct drm_file *file_priv);</programlisting>
2991 </para>
2992 <para>
2993 <parameter>flags</parameter> is a bitmask combination of the following
2994 values. It restricts how the ioctl is allowed to be called.
2995 <itemizedlist>
2996 <listitem><para>
2997 DRM_AUTH - Only authenticated callers allowed
2998 </para></listitem>
2999 <listitem><para>
3000 DRM_MASTER - The ioctl can only be called on the master file
3001 handle
3002 </para></listitem>
3003 <listitem><para>
3004 DRM_ROOT_ONLY - Only callers with the SYSADMIN capability allowed
3005 </para></listitem>
3006 <listitem><para>
3007 DRM_CONTROL_ALLOW - The ioctl can only be called on a control
3008 device
3009 </para></listitem>
3010 <listitem><para>
3011 DRM_UNLOCKED - The ioctl handler will be called without locking
3012 the DRM global mutex. This is the enforced default for kms drivers
3013 (i.e. using the DRIVER_MODESET flag) and hence shouldn't be used
3014 any more for new drivers.
3015 </para></listitem>
3016 </itemizedlist>
3017 </para>
3018 </para>
3019!Edrivers/gpu/drm/drm_ioctl.c
3020 </sect2>
3021 </sect1>
3022 <sect1>
3023 <title>Legacy Support Code</title>
3024 <para>
3025 The section very briefly covers some of the old legacy support code which
3026 is only used by old DRM drivers which have done a so-called shadow-attach
3027 to the underlying device instead of registering as a real driver. This
3028 also includes some of the old generic buffer management and command
3029 submission code. Do not use any of this in new and modern drivers.
3030 </para>
3031
3032 <sect2>
3033 <title>Legacy Suspend/Resume</title>
3034 <para>
3035 The DRM core provides some suspend/resume code, but drivers wanting full
3036 suspend/resume support should provide save() and restore() functions.
3037 These are called at suspend, hibernate, or resume time, and should perform
3038 any state save or restore required by your device across suspend or
3039 hibernate states.
3040 </para>
3041 <synopsis>int (*suspend) (struct drm_device *, pm_message_t state);
3042 int (*resume) (struct drm_device *);</synopsis>
3043 <para>
3044 Those are legacy suspend and resume methods which
3045 <emphasis>only</emphasis> work with the legacy shadow-attach driver
3046 registration functions. New driver should use the power management
3047 interface provided by their bus type (usually through
3048 the struct <structname>device_driver</structname> dev_pm_ops) and set
3049 these methods to NULL.
3050 </para>
3051 </sect2>
3052
3053 <sect2>
3054 <title>Legacy DMA Services</title>
3055 <para>
3056 This should cover how DMA mapping etc. is supported by the core.
3057 These functions are deprecated and should not be used.
3058 </para>
3059 </sect2>
3060 </sect1>
3061 </chapter>
3062
3063<!-- TODO
3064
3065- Add a glossary
3066- Document the struct_mutex catch-all lock
3067- Document connector properties
3068
3069- Why is the load method optional?
3070- What are drivers supposed to set the initial display state to, and how?
3071 Connector's DPMS states are not initialized and are thus equal to
3072 DRM_MODE_DPMS_ON. The fbcon compatibility layer calls
3073 drm_helper_disable_unused_functions(), which disables unused encoders and
3074 CRTCs, but doesn't touch the connectors' DPMS state, and
3075 drm_helper_connector_dpms() in reaction to fbdev blanking events. Do drivers
3076 that don't implement (or just don't use) fbcon compatibility need to call
3077 those functions themselves?
3078- KMS drivers must call drm_vblank_pre_modeset() and drm_vblank_post_modeset()
3079 around mode setting. Should this be done in the DRM core?
3080- vblank_disable_allowed is set to 1 in the first drm_vblank_post_modeset()
3081 call and never set back to 0. It seems to be safe to permanently set it to 1
3082 in drm_vblank_init() for KMS driver, and it might be safe for UMS drivers as
3083 well. This should be investigated.
3084- crtc and connector .save and .restore operations are only used internally in
3085 drivers, should they be removed from the core?
3086- encoder mid-layer .save and .restore operations are only used internally in
3087 drivers, should they be removed from the core?
3088- encoder mid-layer .detect operation is only used internally in drivers,
3089 should it be removed from the core?
3090-->
3091
3092 <!-- External interfaces -->
3093
3094 <chapter id="drmExternals">
3095 <title>Userland interfaces</title>
3096 <para>
3097 The DRM core exports several interfaces to applications,
3098 generally intended to be used through corresponding libdrm
3099 wrapper functions. In addition, drivers export device-specific
3100 interfaces for use by userspace drivers &amp; device-aware
3101 applications through ioctls and sysfs files.
3102 </para>
3103 <para>
3104 External interfaces include: memory mapping, context management,
3105 DMA operations, AGP management, vblank control, fence
3106 management, memory management, and output management.
3107 </para>
3108 <para>
3109 Cover generic ioctls and sysfs layout here. We only need high-level
3110 info, since man pages should cover the rest.
3111 </para>
3112
3113 <!-- External: render nodes -->
3114
3115 <sect1>
3116 <title>Render nodes</title>
3117 <para>
3118 DRM core provides multiple character-devices for user-space to use.
3119 Depending on which device is opened, user-space can perform a different
3120 set of operations (mainly ioctls). The primary node is always created
3121 and called card&lt;num&gt;. Additionally, a currently
3122 unused control node, called controlD&lt;num&gt; is also
3123 created. The primary node provides all legacy operations and
3124 historically was the only interface used by userspace. With KMS, the
3125 control node was introduced. However, the planned KMS control interface
3126 has never been written and so the control node stays unused to date.
3127 </para>
3128 <para>
3129 With the increased use of offscreen renderers and GPGPU applications,
3130 clients no longer require running compositors or graphics servers to
3131 make use of a GPU. But the DRM API required unprivileged clients to
3132 authenticate to a DRM-Master prior to getting GPU access. To avoid this
3133 step and to grant clients GPU access without authenticating, render
3134 nodes were introduced. Render nodes solely serve render clients, that
3135 is, no modesetting or privileged ioctls can be issued on render nodes.
3136 Only non-global rendering commands are allowed. If a driver supports
3137 render nodes, it must advertise it via the DRIVER_RENDER
3138 DRM driver capability. If not supported, the primary node must be used
3139 for render clients together with the legacy drmAuth authentication
3140 procedure.
3141 </para>
3142 <para>
3143 If a driver advertises render node support, DRM core will create a
3144 separate render node called renderD&lt;num&gt;. There will
3145 be one render node per device. No ioctls except PRIME-related ioctls
3146 will be allowed on this node. Especially GEM_OPEN will be
3147 explicitly prohibited. Render nodes are designed to avoid the
3148 buffer-leaks, which occur if clients guess the flink names or mmap
3149 offsets on the legacy interface. Additionally to this basic interface,
3150 drivers must mark their driver-dependent render-only ioctls as
3151 DRM_RENDER_ALLOW so render clients can use them. Driver
3152 authors must be careful not to allow any privileged ioctls on render
3153 nodes.
3154 </para>
3155 <para>
3156 With render nodes, user-space can now control access to the render node
3157 via basic file-system access-modes. A running graphics server which
3158 authenticates clients on the privileged primary/legacy node is no longer
3159 required. Instead, a client can open the render node and is immediately
3160 granted GPU access. Communication between clients (or servers) is done
3161 via PRIME. FLINK from render node to legacy node is not supported. New
3162 clients must not use the insecure FLINK interface.
3163 </para>
3164 <para>
3165 Besides dropping all modeset/global ioctls, render nodes also drop the
3166 DRM-Master concept. There is no reason to associate render clients with
3167 a DRM-Master as they are independent of any graphics server. Besides,
3168 they must work without any running master, anyway.
3169 Drivers must be able to run without a master object if they support
3170 render nodes. If, on the other hand, a driver requires shared state
3171 between clients which is visible to user-space and accessible beyond
3172 open-file boundaries, they cannot support render nodes.
3173 </para>
3174 </sect1>
3175
3176 <!-- External: vblank handling -->
3177
3178 <sect1>
3179 <title>VBlank event handling</title>
3180 <para>
3181 The DRM core exposes two vertical blank related ioctls:
3182 <variablelist>
3183 <varlistentry>
3184 <term>DRM_IOCTL_WAIT_VBLANK</term>
3185 <listitem>
3186 <para>
3187 This takes a struct drm_wait_vblank structure as its argument,
3188 and it is used to block or request a signal when a specified
3189 vblank event occurs.
3190 </para>
3191 </listitem>
3192 </varlistentry>
3193 <varlistentry>
3194 <term>DRM_IOCTL_MODESET_CTL</term>
3195 <listitem>
3196 <para>
3197 This was only used for user-mode-settind drivers around
3198 modesetting changes to allow the kernel to update the vblank
3199 interrupt after mode setting, since on many devices the vertical
3200 blank counter is reset to 0 at some point during modeset. Modern
3201 drivers should not call this any more since with kernel mode
3202 setting it is a no-op.
3203 </para>
3204 </listitem>
3205 </varlistentry>
3206 </variablelist>
3207 </para>
3208 </sect1>
3209
3210 </chapter>
3211</part>
3212<part id="drmDrivers">
3213 <title>DRM Drivers</title>
3214
3215 <partintro>
3216 <para>
3217 This second part of the GPU Driver Developer's Guide documents driver
3218 code, implementation details and also all the driver-specific userspace
3219 interfaces. Especially since all hardware-acceleration interfaces to
3220 userspace are driver specific for efficiency and other reasons these
3221 interfaces can be rather substantial. Hence every driver has its own
3222 chapter.
3223 </para>
3224 </partintro>
3225
3226 <chapter id="drmI915">
3227 <title>drm/i915 Intel GFX Driver</title>
3228 <para>
3229 The drm/i915 driver supports all (with the exception of some very early
3230 models) integrated GFX chipsets with both Intel display and rendering
3231 blocks. This excludes a set of SoC platforms with an SGX rendering unit,
3232 those have basic support through the gma500 drm driver.
3233 </para>
3234 <sect1>
3235 <title>Core Driver Infrastructure</title>
3236 <para>
3237 This section covers core driver infrastructure used by both the display
3238 and the GEM parts of the driver.
3239 </para>
3240 <sect2>
3241 <title>Runtime Power Management</title>
3242!Pdrivers/gpu/drm/i915/intel_runtime_pm.c runtime pm
3243!Idrivers/gpu/drm/i915/intel_runtime_pm.c
3244!Idrivers/gpu/drm/i915/intel_uncore.c
3245 </sect2>
3246 <sect2>
3247 <title>Interrupt Handling</title>
3248!Pdrivers/gpu/drm/i915/i915_irq.c interrupt handling
3249!Fdrivers/gpu/drm/i915/i915_irq.c intel_irq_init intel_irq_init_hw intel_hpd_init
3250!Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_disable_interrupts
3251!Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_enable_interrupts
3252 </sect2>
3253 <sect2>
3254 <title>Intel GVT-g Guest Support(vGPU)</title>
3255!Pdrivers/gpu/drm/i915/i915_vgpu.c Intel GVT-g guest support
3256!Idrivers/gpu/drm/i915/i915_vgpu.c
3257 </sect2>
3258 </sect1>
3259 <sect1>
3260 <title>Display Hardware Handling</title>
3261 <para>
3262 This section covers everything related to the display hardware including
3263 the mode setting infrastructure, plane, sprite and cursor handling and
3264 display, output probing and related topics.
3265 </para>
3266 <sect2>
3267 <title>Mode Setting Infrastructure</title>
3268 <para>
3269 The i915 driver is thus far the only DRM driver which doesn't use the
3270 common DRM helper code to implement mode setting sequences. Thus it
3271 has its own tailor-made infrastructure for executing a display
3272 configuration change.
3273 </para>
3274 </sect2>
3275 <sect2>
3276 <title>Frontbuffer Tracking</title>
3277!Pdrivers/gpu/drm/i915/intel_frontbuffer.c frontbuffer tracking
3278!Idrivers/gpu/drm/i915/intel_frontbuffer.c
3279!Fdrivers/gpu/drm/i915/i915_gem.c i915_gem_track_fb
3280 </sect2>
3281 <sect2>
3282 <title>Display FIFO Underrun Reporting</title>
3283!Pdrivers/gpu/drm/i915/intel_fifo_underrun.c fifo underrun handling
3284!Idrivers/gpu/drm/i915/intel_fifo_underrun.c
3285 </sect2>
3286 <sect2>
3287 <title>Plane Configuration</title>
3288 <para>
3289 This section covers plane configuration and composition with the
3290 primary plane, sprites, cursors and overlays. This includes the
3291 infrastructure to do atomic vsync'ed updates of all this state and
3292 also tightly coupled topics like watermark setup and computation,
3293 framebuffer compression and panel self refresh.
3294 </para>
3295 </sect2>
3296 <sect2>
3297 <title>Atomic Plane Helpers</title>
3298!Pdrivers/gpu/drm/i915/intel_atomic_plane.c atomic plane helpers
3299!Idrivers/gpu/drm/i915/intel_atomic_plane.c
3300 </sect2>
3301 <sect2>
3302 <title>Output Probing</title>
3303 <para>
3304 This section covers output probing and related infrastructure like the
3305 hotplug interrupt storm detection and mitigation code. Note that the
3306 i915 driver still uses most of the common DRM helper code for output
3307 probing, so those sections fully apply.
3308 </para>
3309 </sect2>
3310 <sect2>
3311 <title>Hotplug</title>
3312!Pdrivers/gpu/drm/i915/intel_hotplug.c Hotplug
3313!Idrivers/gpu/drm/i915/intel_hotplug.c
3314 </sect2>
3315 <sect2>
3316 <title>High Definition Audio</title>
3317!Pdrivers/gpu/drm/i915/intel_audio.c High Definition Audio over HDMI and Display Port
3318!Idrivers/gpu/drm/i915/intel_audio.c
3319!Iinclude/drm/i915_component.h
3320 </sect2>
3321 <sect2>
3322 <title>Panel Self Refresh PSR (PSR/SRD)</title>
3323!Pdrivers/gpu/drm/i915/intel_psr.c Panel Self Refresh (PSR/SRD)
3324!Idrivers/gpu/drm/i915/intel_psr.c
3325 </sect2>
3326 <sect2>
3327 <title>Frame Buffer Compression (FBC)</title>
3328!Pdrivers/gpu/drm/i915/intel_fbc.c Frame Buffer Compression (FBC)
3329!Idrivers/gpu/drm/i915/intel_fbc.c
3330 </sect2>
3331 <sect2>
3332 <title>Display Refresh Rate Switching (DRRS)</title>
3333!Pdrivers/gpu/drm/i915/intel_dp.c Display Refresh Rate Switching (DRRS)
3334!Fdrivers/gpu/drm/i915/intel_dp.c intel_dp_set_drrs_state
3335!Fdrivers/gpu/drm/i915/intel_dp.c intel_edp_drrs_enable
3336!Fdrivers/gpu/drm/i915/intel_dp.c intel_edp_drrs_disable
3337!Fdrivers/gpu/drm/i915/intel_dp.c intel_edp_drrs_invalidate
3338!Fdrivers/gpu/drm/i915/intel_dp.c intel_edp_drrs_flush
3339!Fdrivers/gpu/drm/i915/intel_dp.c intel_dp_drrs_init
3340
3341 </sect2>
3342 <sect2>
3343 <title>DPIO</title>
3344!Pdrivers/gpu/drm/i915/i915_reg.h DPIO
3345 </sect2>
3346
3347 <sect2>
3348 <title>CSR firmware support for DMC</title>
3349!Pdrivers/gpu/drm/i915/intel_csr.c csr support for dmc
3350!Idrivers/gpu/drm/i915/intel_csr.c
3351 </sect2>
3352 <sect2>
3353 <title>Video BIOS Table (VBT)</title>
3354!Pdrivers/gpu/drm/i915/intel_bios.c Video BIOS Table (VBT)
3355!Idrivers/gpu/drm/i915/intel_bios.c
3356!Idrivers/gpu/drm/i915/intel_vbt_defs.h
3357 </sect2>
3358 </sect1>
3359
3360 <sect1>
3361 <title>Memory Management and Command Submission</title>
3362 <para>
3363 This sections covers all things related to the GEM implementation in the
3364 i915 driver.
3365 </para>
3366 <sect2>
3367 <title>Batchbuffer Parsing</title>
3368!Pdrivers/gpu/drm/i915/i915_cmd_parser.c batch buffer command parser
3369!Idrivers/gpu/drm/i915/i915_cmd_parser.c
3370 </sect2>
3371 <sect2>
3372 <title>Batchbuffer Pools</title>
3373!Pdrivers/gpu/drm/i915/i915_gem_batch_pool.c batch pool
3374!Idrivers/gpu/drm/i915/i915_gem_batch_pool.c
3375 </sect2>
3376 <sect2>
3377 <title>Logical Rings, Logical Ring Contexts and Execlists</title>
3378!Pdrivers/gpu/drm/i915/intel_lrc.c Logical Rings, Logical Ring Contexts and Execlists
3379!Idrivers/gpu/drm/i915/intel_lrc.c
3380 </sect2>
3381 <sect2>
3382 <title>Global GTT views</title>
3383!Pdrivers/gpu/drm/i915/i915_gem_gtt.c Global GTT views
3384!Idrivers/gpu/drm/i915/i915_gem_gtt.c
3385 </sect2>
3386 <sect2>
3387 <title>GTT Fences and Swizzling</title>
3388!Idrivers/gpu/drm/i915/i915_gem_fence.c
3389 <sect3>
3390 <title>Global GTT Fence Handling</title>
3391!Pdrivers/gpu/drm/i915/i915_gem_fence.c fence register handling
3392 </sect3>
3393 <sect3>
3394 <title>Hardware Tiling and Swizzling Details</title>
3395!Pdrivers/gpu/drm/i915/i915_gem_fence.c tiling swizzling details
3396 </sect3>
3397 </sect2>
3398 <sect2>
3399 <title>Object Tiling IOCTLs</title>
3400!Idrivers/gpu/drm/i915/i915_gem_tiling.c
3401!Pdrivers/gpu/drm/i915/i915_gem_tiling.c buffer object tiling
3402 </sect2>
3403 <sect2>
3404 <title>Buffer Object Eviction</title>
3405 <para>
3406 This section documents the interface functions for evicting buffer
3407 objects to make space available in the virtual gpu address spaces.
3408 Note that this is mostly orthogonal to shrinking buffer objects
3409 caches, which has the goal to make main memory (shared with the gpu
3410 through the unified memory architecture) available.
3411 </para>
3412!Idrivers/gpu/drm/i915/i915_gem_evict.c
3413 </sect2>
3414 <sect2>
3415 <title>Buffer Object Memory Shrinking</title>
3416 <para>
3417 This section documents the interface function for shrinking memory
3418 usage of buffer object caches. Shrinking is used to make main memory
3419 available. Note that this is mostly orthogonal to evicting buffer
3420 objects, which has the goal to make space in gpu virtual address
3421 spaces.
3422 </para>
3423!Idrivers/gpu/drm/i915/i915_gem_shrinker.c
3424 </sect2>
3425 </sect1>
3426 <sect1>
3427 <title>GuC</title>
3428 <sect2>
3429 <title>GuC-specific firmware loader</title>
3430!Pdrivers/gpu/drm/i915/intel_guc_loader.c GuC-specific firmware loader
3431!Idrivers/gpu/drm/i915/intel_guc_loader.c
3432 </sect2>
3433 <sect2>
3434 <title>GuC-based command submission</title>
3435!Pdrivers/gpu/drm/i915/i915_guc_submission.c GuC-based command submission
3436!Idrivers/gpu/drm/i915/i915_guc_submission.c
3437 </sect2>
3438 <sect2>
3439 <title>GuC Firmware Layout</title>
3440!Pdrivers/gpu/drm/i915/intel_guc_fwif.h GuC Firmware Layout
3441 </sect2>
3442 </sect1>
3443
3444 <sect1>
3445 <title> Tracing </title>
3446 <para>
3447 This sections covers all things related to the tracepoints implemented in
3448 the i915 driver.
3449 </para>
3450 <sect2>
3451 <title> i915_ppgtt_create and i915_ppgtt_release </title>
3452!Pdrivers/gpu/drm/i915/i915_trace.h i915_ppgtt_create and i915_ppgtt_release tracepoints
3453 </sect2>
3454 <sect2>
3455 <title> i915_context_create and i915_context_free </title>
3456!Pdrivers/gpu/drm/i915/i915_trace.h i915_context_create and i915_context_free tracepoints
3457 </sect2>
3458 <sect2>
3459 <title> switch_mm </title>
3460!Pdrivers/gpu/drm/i915/i915_trace.h switch_mm tracepoint
3461 </sect2>
3462 </sect1>
3463
3464 </chapter>
3465!Cdrivers/gpu/drm/i915/i915_irq.c
3466</part>
3467
3468<part id="vga_switcheroo">
3469 <title>vga_switcheroo</title>
3470 <partintro>
3471!Pdrivers/gpu/vga/vga_switcheroo.c Overview
3472 </partintro>
3473
3474 <chapter id="modes_of_use">
3475 <title>Modes of Use</title>
3476 <sect1>
3477 <title>Manual switching and manual power control</title>
3478!Pdrivers/gpu/vga/vga_switcheroo.c Manual switching and manual power control
3479 </sect1>
3480 <sect1>
3481 <title>Driver power control</title>
3482!Pdrivers/gpu/vga/vga_switcheroo.c Driver power control
3483 </sect1>
3484 </chapter>
3485
3486 <chapter id="api">
3487 <title>API</title>
3488 <sect1>
3489 <title>Public functions</title>
3490!Edrivers/gpu/vga/vga_switcheroo.c
3491 </sect1>
3492 <sect1>
3493 <title>Public structures</title>
3494!Finclude/linux/vga_switcheroo.h vga_switcheroo_handler
3495!Finclude/linux/vga_switcheroo.h vga_switcheroo_client_ops
3496 </sect1>
3497 <sect1>
3498 <title>Public constants</title>
3499!Finclude/linux/vga_switcheroo.h vga_switcheroo_handler_flags_t
3500!Finclude/linux/vga_switcheroo.h vga_switcheroo_client_id
3501!Finclude/linux/vga_switcheroo.h vga_switcheroo_state
3502 </sect1>
3503 <sect1>
3504 <title>Private structures</title>
3505!Fdrivers/gpu/vga/vga_switcheroo.c vgasr_priv
3506!Fdrivers/gpu/vga/vga_switcheroo.c vga_switcheroo_client
3507 </sect1>
3508 </chapter>
3509
3510 <chapter id="handlers">
3511 <title>Handlers</title>
3512 <sect1>
3513 <title>apple-gmux Handler</title>
3514!Pdrivers/platform/x86/apple-gmux.c Overview
3515!Pdrivers/platform/x86/apple-gmux.c Interrupt
3516 <sect2>
3517 <title>Graphics mux</title>
3518!Pdrivers/platform/x86/apple-gmux.c Graphics mux
3519 </sect2>
3520 <sect2>
3521 <title>Power control</title>
3522!Pdrivers/platform/x86/apple-gmux.c Power control
3523 </sect2>
3524 <sect2>
3525 <title>Backlight control</title>
3526!Pdrivers/platform/x86/apple-gmux.c Backlight control
3527 </sect2>
3528 <sect2>
3529 <title>Public functions</title>
3530!Iinclude/linux/apple-gmux.h
3531 </sect2>
3532 </sect1>
3533 </chapter>
3534
3535!Cdrivers/gpu/vga/vga_switcheroo.c
3536!Cinclude/linux/vga_switcheroo.h
3537!Cdrivers/platform/x86/apple-gmux.c
3538</part>
3539
3540</book>
Documentation/DocBook/media/.gitignore+0−1
@@ -1 +0,0 @@
1!*.svg
Documentation/DocBook/media/Makefile+0−427
@@ -1,427 +0,0 @@
1###
2# Media build rules - Auto-generates media contents/indexes and *.h xml's
3#
4
5SHELL=/bin/bash
6
7MEDIA_OBJ_DIR=$(objtree)/Documentation/DocBook/
8MEDIA_SRC_DIR=$(srctree)/Documentation/DocBook/media
9
10MEDIA_TEMP = media-entities.tmpl \
11 media-indices.tmpl \
12 videodev2.h.xml \
13 v4l2.xml \
14 audio.h.xml \
15 ca.h.xml \
16 dmx.h.xml \
17 frontend.h.xml \
18 net.h.xml \
19 video.h.xml \
20
21IMGFILES := $(patsubst %.b64,%, $(notdir $(shell ls $(MEDIA_SRC_DIR)/*.b64)))
22OBJIMGFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(IMGFILES))
23GENFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(MEDIA_TEMP))
24
25PHONY += cleanmediadocs
26
27cleanmediadocs:
28 -@rm -f `find $(MEDIA_OBJ_DIR) -type l` $(GENFILES) $(OBJIMGFILES) 2>/dev/null
29
30$(obj)/media_api.xml: $(GENFILES) FORCE
31
32#$(MEDIA_OBJ_DIR)/media_api.html: $(MEDIA_OBJ_DIR)/media_api.xml
33#$(MEDIA_OBJ_DIR)/media_api.pdf: $(MEDIA_OBJ_DIR)/media_api.xml
34#$(MEDIA_OBJ_DIR)/media_api.ps: $(MEDIA_OBJ_DIR)/media_api.xml
35
36V4L_SGMLS = \
37 $(shell ls $(MEDIA_SRC_DIR)/v4l/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)') \
38 capture.c.xml \
39 keytable.c.xml \
40 v4l2grab.c.xml
41
42DVB_SGMLS = \
43 $(shell ls $(MEDIA_SRC_DIR)/dvb/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)')
44
45MEDIA_SGMLS = $(addprefix ./,$(V4L_SGMLS)) $(addprefix ./,$(DVB_SGMLS)) $(addprefix ./,$(MEDIA_TEMP))
46
47FUNCS = \
48 close \
49 ioctl \
50 mmap \
51 munmap \
52 open \
53 poll \
54 read \
55 select \
56 write \
57
58IOCTLS = \
59 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/videodev2.h) \
60 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/audio.h) \
61 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/ca.h) \
62 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/dmx.h) \
63 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/frontend.h) \
64 $(shell perl -ne 'print "$$1 " if /\#define\s+([A-Z][^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/net.h) \
65 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/video.h) \
66 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/media.h) \
67 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/cec.h) \
68 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \
69
70DEFINES = \
71 $(shell perl -ne 'print "$$1 " if /\#define\s+(DTV_[^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/frontend.h) \
72
73TYPES = \
74 $(shell perl -ne 'print "$$1 " if /^typedef\s+.*\s+(\S+)\;/' $(srctree)/include/uapi/linux/videodev2.h) \
75 $(shell perl -ne 'print "$$1 " if /^typedef\s+.*\s+(\S+)\;/' $(srctree)/include/uapi/linux/dvb/frontend.h)
76
77ENUMS = \
78 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' \
79 $(srctree)/include/uapi/linux/videodev2.h \
80 $(srctree)/include/uapi/linux/dvb/audio.h \
81 $(srctree)/include/uapi/linux/dvb/ca.h \
82 $(srctree)/include/uapi/linux/dvb/dmx.h \
83 $(srctree)/include/uapi/linux/dvb/frontend.h \
84 $(srctree)/include/uapi/linux/dvb/net.h \
85 $(srctree)/include/uapi/linux/dvb/video.h \
86 $(srctree)/include/uapi/linux/media.h \
87 $(srctree)/include/uapi/linux/v4l2-mediabus.h \
88 $(srctree)/include/uapi/linux/v4l2-subdev.h)
89
90ENUM_DEFS = \
91 $(shell perl -e 'open IN,"cat @ARGV| cpp -fpreprocessed |"; while (<IN>) { if ($$enum) {print "$$1\n" if (/\s*([A-Z]\S+)\b/); } $$enum = 0 if ($$enum && /^\}/); $$enum = 1 if(/^\s*enum\s/); }; close IN;' \
92 $(srctree)/include/uapi/linux/dvb/dmx.h \
93 $(srctree)/include/uapi/linux/dvb/frontend.h)
94
95STRUCTS = \
96 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/videodev2.h) \
97 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s\{]+)\s*/)' $(srctree)/include/uapi/linux/dvb/audio.h) \
98 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/ca.h) \
99 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/dmx.h) \
100 $(shell perl -ne 'print "$$1 " if (!/dtv\_cmds\_h/ && /^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/frontend.h) \
101 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/ && !/_old/)' $(srctree)/include/uapi/linux/dvb/net.h) \
102 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/video.h) \
103 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/media.h) \
104 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/cec.h) \
105 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \
106 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-mediabus.h)
107
108ERRORS = \
109 E2BIG \
110 EACCES \
111 EAGAIN \
112 EBADF \
113 EBADFD \
114 EBADR \
115 EBADRQC \
116 EBUSY \
117 ECHILD \
118 ECONNRESET \
119 EDEADLK \
120 EDOM \
121 EEXIST \
122 EFAULT \
123 EFBIG \
124 EILSEQ \
125 EINIT \
126 EINPROGRESS \
127 EINTR \
128 EINVAL \
129 EIO \
130 EMFILE \
131 ENFILE \
132 ENOBUFS \
133 ENODATA \
134 ENODEV \
135 ENOENT \
136 ENOIOCTLCMD \
137 ENOMEM \
138 ENOSPC \
139 ENOSR \
140 ENOSYS \
141 ENOTSUP \
142 ENOTSUPP \
143 ENOTTY \
144 ENXIO \
145 EOPNOTSUPP \
146 EOVERFLOW \
147 EPERM \
148 EPIPE \
149 EPROTO \
150 ERANGE \
151 EREMOTE \
152 EREMOTEIO \
153 ERESTART \
154 ERESTARTSYS \
155 ESHUTDOWN \
156 ESPIPE \
157 ETIME \
158 ETIMEDOUT \
159 EUSERS \
160 EWOULDBLOCK \
161 EXDEV \
162
163ESCAPE = \
164 -e "s/&/\\&amp;/g" \
165 -e "s/</\\&lt;/g" \
166 -e "s/>/\\&gt;/g"
167
168FILENAME = \
169 -e s,"^[^\/]*/",, \
170 -e s/"\\.xml"// \
171 -e s/"\\.tmpl"// \
172 -e s/\\\./-/g \
173 -e s/"^func-"// \
174 -e s/"^pixfmt-"// \
175 -e s/"^vidioc-"//
176
177# Generate references to these structs in videodev2.h.xml.
178DOCUMENTED = \
179 -e "s/\(enum *\)v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1<link linkend=\"\2\">v4l2_mpeg_cx2341x_video_\2<\/link>/g" \
180 -e "s/\(\(enum\|struct\) *\)\(v4l2_[a-zA-Z0-9_]*\)/\1<link linkend=\"\3\">\3<\/link>/g" \
181 -e "s/\(V4L2_PIX_FMT_[A-Z0-9_]\+\)\(\s\+v4l2_fourcc\)/<link linkend=\"\1\">\1<\/link>\2/g" \
182 -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \
183 -e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g"
184
185DVB_DOCUMENTED = \
186 -e "s,\(struct\s\+\)\([a-z0-9_]\+\)\(\s\+{\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
187 -e "s,\(}\s\+\)\([a-z0-9_]\+_t\+\),\1\<link linkend=\"\2\">\2\<\/link\>,g" \
188 -e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+[0-9]\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
189 -e "s,<link\s\+linkend=\".*\">\(DTV_IOCTL_MAX_MSGS\|dtv_cmds_h\|__.*_old\)<\/link>,\1,g" \
190 -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \
191 -e "s,\(audio-mixer\|audio-karaoke\|audio-status\|ca-slot-info\|ca-descr-info\|ca-caps\|ca-msg\|ca-descr\|ca-pid\|dmx-filter\|dmx-caps\|video-system\|video-highlight\|video-spu\|video-spu-palette\|video-navi-pack\)-t,\1,g" \
192 -e "s,DTV-ISDBT-LAYER[A-C],DTV-ISDBT-LAYER,g" \
193 -e "s,\(define\s\+\)\([A-Z0-9_]\+\)\(\s\+_IO\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
194 -e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
195 -e "s,<link\s\+linkend=\".*\">\(__.*_OLD\)<\/link>,\1,g" \
196 -e "s/\(linkend\=\"\)FE_SET_PROPERTY/\1FE_GET_PROPERTY/g" \
197 -e "s,<link\s\+linkend=\".*\">\(DTV_ISDBS_TS_ID_LEGACY\|DTV_MAX_COMMAND\|DTV_IOCTL_MAX_MSGS\)<\/link>,\1,g" \
198
199#
200# Media targets and dependencies
201#
202
203install_media_images = \
204 $(Q)if [ "x$(findstring media_api.xml,$(DOCBOOKS))" != "x" ]; then \
205 mkdir -p $(MEDIA_OBJ_DIR)/media_api; \
206 cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/*.svg $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api; \
207 fi
208
209$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64
210 $(Q)base64 -d $< >$@
211
212$(MEDIA_OBJ_DIR)/v4l2.xml: $(OBJIMGFILES)
213 @$($(quiet)gen_xml)
214 @(ln -sf `cd $(MEDIA_SRC_DIR) && /bin/pwd`/v4l/*xml $(MEDIA_OBJ_DIR)/)
215 @(ln -sf `cd $(MEDIA_SRC_DIR) && /bin/pwd`/dvb/*xml $(MEDIA_OBJ_DIR)/)
216
217$(MEDIA_OBJ_DIR)/videodev2.h.xml: $(srctree)/include/uapi/linux/videodev2.h $(MEDIA_OBJ_DIR)/v4l2.xml
218 @$($(quiet)gen_xml)
219 @( \
220 echo "<programlisting>") > $@
221 @( \
222 expand --tabs=8 < $< | \
223 sed $(ESCAPE) $(DOCUMENTED) | \
224 sed 's/i\.e\./&ie;/') >> $@
225 @( \
226 echo "</programlisting>") >> $@
227
228$(MEDIA_OBJ_DIR)/audio.h.xml: $(srctree)/include/uapi/linux/dvb/audio.h $(MEDIA_OBJ_DIR)/v4l2.xml
229 @$($(quiet)gen_xml)
230 @( \
231 echo "<programlisting>") > $@
232 @( \
233 expand --tabs=8 < $< | \
234 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
235 sed 's/i\.e\./&ie;/') >> $@
236 @( \
237 echo "</programlisting>") >> $@
238
239$(MEDIA_OBJ_DIR)/ca.h.xml: $(srctree)/include/uapi/linux/dvb/ca.h $(MEDIA_OBJ_DIR)/v4l2.xml
240 @$($(quiet)gen_xml)
241 @( \
242 echo "<programlisting>") > $@
243 @( \
244 expand --tabs=8 < $< | \
245 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
246 sed 's/i\.e\./&ie;/') >> $@
247 @( \
248 echo "</programlisting>") >> $@
249
250$(MEDIA_OBJ_DIR)/dmx.h.xml: $(srctree)/include/uapi/linux/dvb/dmx.h $(MEDIA_OBJ_DIR)/v4l2.xml
251 @$($(quiet)gen_xml)
252 @( \
253 echo "<programlisting>") > $@
254 @( \
255 for ident in $(ENUM_DEFS) ; do \
256 entity=`echo $$ident | tr _ -` ; \
257 r="$$r s/([^\w\-])$$ident([^\w\-])/\1\&$$entity\;\2/g;";\
258 done; \
259 expand --tabs=8 < $< | \
260 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
261 sed 's/i\.e\./&ie;/' | \
262 perl -ne "$$r print $$_;") >> $@
263 @( \
264 echo "</programlisting>") >> $@
265
266$(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/uapi/linux/dvb/frontend.h $(MEDIA_OBJ_DIR)/v4l2.xml
267 @$($(quiet)gen_xml)
268 @( \
269 echo "<programlisting>") > $@
270 @( \
271 for ident in $(ENUM_DEFS) ; do \
272 entity=`echo $$ident | tr _ -` ; \
273 r="$$r s/([^\w\-])$$ident([^\w\-])/\1\&$$entity\;\2/g;";\
274 done; \
275 expand --tabs=8 < $< | \
276 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
277 sed 's/i\.e\./&ie;/' | \
278 perl -ne "$$r print $$_;") >> $@
279 @( \
280 echo "</programlisting>") >> $@
281
282$(MEDIA_OBJ_DIR)/net.h.xml: $(srctree)/include/uapi/linux/dvb/net.h $(MEDIA_OBJ_DIR)/v4l2.xml
283 @$($(quiet)gen_xml)
284 @( \
285 echo "<programlisting>") > $@
286 @( \
287 expand --tabs=8 < $< | \
288 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
289 sed 's/i\.e\./&ie;/') >> $@
290 @( \
291 echo "</programlisting>") >> $@
292
293$(MEDIA_OBJ_DIR)/video.h.xml: $(srctree)/include/uapi/linux/dvb/video.h $(MEDIA_OBJ_DIR)/v4l2.xml
294 @$($(quiet)gen_xml)
295 @( \
296 echo "<programlisting>") > $@
297 @( \
298 expand --tabs=8 < $< | \
299 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
300 sed 's/i\.e\./&ie;/') >> $@
301 @( \
302 echo "</programlisting>") >> $@
303
304$(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
305 @$($(quiet)gen_xml)
306 @( \
307 echo "<!-- Generated file! Do not edit. -->") >$@
308 @( \
309 echo -e "\n<!-- Functions -->") >>$@
310 @( \
311 for ident in $(FUNCS) ; do \
312 entity=`echo $$ident | tr _ -` ; \
313 echo "<!ENTITY func-$$entity \"<link" \
314 "linkend='func-$$entity'><function>$$ident()</function></link>\">" \
315 >>$@ ; \
316 done)
317 @( \
318 echo -e "\n<!-- Ioctls -->") >>$@
319 @( \
320 for ident in `echo $(IOCTLS) | sed -e "s,VIDIOC_RESERVED,,"`; do\
321 entity=`echo $$ident | tr _ -` ; \
322 id=`grep -e "<refname>$$ident" -e "<section id=\"$$ident\"" $$(find $(MEDIA_SRC_DIR) -name *.xml -type f)| sed -r s,"^.*/(.*).xml.*","\1",` ; \
323 if [ "$$id" != "" ]; then echo "<!ENTITY $$entity \"<link" \
324 "linkend='$$id'><constant>$$ident</constant></link>\">" \
325 >>$@ ; else \
326 echo "Warning: undocumented ioctl: $$ident. Please document it at the media DocBook!" >&2; \
327 fi; \
328 done)
329 @( \
330 echo -e "\n<!-- Defines -->") >>$@
331 @( \
332 for ident in $(DEFINES) ; do \
333 entity=`echo $$ident | tr _ -` ; \
334 echo "<!ENTITY $$entity \"<link" \
335 "linkend='$$entity'><constant>$$ident</constant></link>\">" \
336 >>$@ ; \
337 done)
338 @( \
339 echo -e "\n<!-- Types -->") >>$@
340 @( \
341 for ident in $(TYPES) ; do \
342 entity=`echo $$ident | tr _ -` ; \
343 echo "<!ENTITY $$entity \"<link" \
344 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
345 done)
346 @( \
347 echo -e "\n<!-- Enums -->") >>$@
348 @( \
349 for ident in $(ENUMS) ; do \
350 entity=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -` ; \
351 echo "<!ENTITY $$entity \"enum&nbsp;<link" \
352 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
353 done)
354 @( \
355 echo -e "\n<!-- Enum definitions -->") >>$@
356 @( \
357 for ident in $(ENUM_DEFS) ; do \
358 entity=`echo $$ident | tr _ -` ; \
359 echo "<!ENTITY $$entity \"<link" \
360 "linkend='$$entity'><constant>$$ident</constant></link>\">" \
361 >>$@ ; \
362 done)
363 @( \
364 echo -e "\n<!-- Structures -->") >>$@
365 @( \
366 for ident in $(STRUCTS) ; do \
367 entity=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
368 echo "<!ENTITY $$entity \"struct&nbsp;<link" \
369 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
370 done)
371 @( \
372 echo -e "\n<!-- Error Codes -->") >>$@
373 @( \
374 for ident in $(ERRORS) ; do \
375 echo "<!ENTITY $$ident \"<errorcode>$$ident</errorcode>" \
376 "error code\">" >>$@ ; \
377 done)
378 @( \
379 echo -e "\n<!-- Subsections -->") >>$@
380 @( \
381 for file in $(MEDIA_SGMLS) ; do \
382 entity=`echo "$$file" | sed $(FILENAME) -e s/"^([^-]*)"/sub\1/` ; \
383 if ! echo "$$file" | \
384 grep -q -E -e '^(func|vidioc|pixfmt)-' ; then \
385 echo "<!ENTITY sub-$$entity SYSTEM \"$$file\">" >>$@ ; \
386 fi ; \
387 done)
388 @( \
389 echo -e "\n<!-- Function Reference -->") >>$@
390 @( \
391 for file in $(MEDIA_SGMLS) ; do \
392 if echo "$$file" | \
393 grep -q -E -e '(func|vidioc|pixfmt)-' ; then \
394 entity=`echo "$$file" |sed $(FILENAME)` ; \
395 echo "<!ENTITY $$entity SYSTEM \"$$file\">" >>$@ ; \
396 fi ; \
397 done)
398
399# Jade can auto-generate a list-of-tables, which includes all structs,
400# but we only want data types, all types, and sorted please.
401$(MEDIA_OBJ_DIR)/media-indices.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
402 @$($(quiet)gen_xml)
403 @( \
404 echo "<!-- Generated file! Do not edit. -->") >$@
405 @( \
406 echo -e "\n<index><title>List of Types</title>") >>$@
407 @( \
408 for ident in $(TYPES) ; do \
409 id=`echo $$ident | tr _ -` ; \
410 echo "<indexentry><primaryie><link" \
411 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
412 done)
413 @( \
414 for ident in $(ENUMS) ; do \
415 id=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -`; \
416 echo "<indexentry><primaryie>enum&nbsp;<link" \
417 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
418 done)
419 @( \
420 for ident in $(STRUCTS) ; do \
421 id=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
422 echo "<indexentry><primaryie>struct&nbsp;<link" \
423 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
424 done)
425 @( \
426 echo "</index>") >>$@
427
Documentation/DocBook/media/bayer.png.b64+0−171
@@ -1,171 +0,0 @@
1iVBORw0KGgoAAAANSUhEUgAAAlgAAACqCAMAAABGfcHVAAAAAXNSR0IArs4c6QAAAwBQTFRFAAIA
2CAICAAQVEQEBAgsAJgECAAogAwsTAQopHQYBNAEAAAxNARQAERIQAhoDABwAABZEHRQKGRYKQw0F
3ACMBACUAERwpHR4cVRAFBR5rZhADACR2JiIhBDAGAiWGgQ4AcxQABDYACSeQMSYlJykmESxYlQ4A
4PSYZIS05OSsJHS5JOC8kAEMDUC8SADXLNDUzADbEAEsAADX/2RABCFIAAD/qxB0AAD//BFgAK0Vp
5WT4r3hwA3RsTRERAAEf/5CIA2iYCCUv+WUgz7iIAOk5g3CgVSU5SiD8uB2sABm8AE1X/U1RQOFyL
64jkfIlz/RV98M1j+G2H/fVk23jtD4T0pXl9ieFtGcV894UIiYWJfAIwA50gOV2p+4kssO2j+dGZx
7bG1qVmj/OHH/aHJzfnBX5lQ7B50AZnahdXd0AKUG5V1ARnz/6mErCqgAAKsAent46GBIW4GhAK0A
8AK8B42FtALIOin9/ALUAiIOBALkAVIf/6WxWg4eBi4SKJrEAmoVtdY2geoP/rYVXhoyOqYVuJbUh
9IrgWX5D/jo6J7nszP7gAsI9S63xnN70zZqO/fZzCOb4+cZr+64dy8otYnJ6b7ImDRcM56IqcWMEo
10oJb/N8ZoTMRL7Y9/QchcsaOTo6eohaj/7ZqKXspXj6v9xal+oK+7d7vTUM+Afco5r7CumLTVStKV
11bs9ukbb/9qx/9q9l8queoLv/e9R66beG7rDImNRhi9aDwsPAs8bWzcK2cd67jtqP5MWUodyB8b+1
12tMr/z8L/j9+kbOXWnN2ZstD7yc7Rzs7Ly9xb183UwdD/+si/qeOmvuKIx9fj4tPCtuWiqOrL+tS2
13y9v++NPK2dvZt+m0ueq80+Wo3OeSwuy/yezG+d7f/eS/z/DS3uf/6Ono4PC71O39xPb02vPZ/+nR
14+Ori6e399+vt+PGz+ur65fL55/Xb4vbh7ffX/PPY8vP9+vLy6Pf36fjr/PfM8vjr//f+/vn48P36
159vv+/vzf+fv4/fvu//z7+v7//P/7/v/8//QpxAAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAFY8AABWW
16AQ2TT8cAAAAHdElNRQfaCRQXGSltwbPRAAAgAElEQVR42u2dDXwU1bXAZwEJtEaNH1nbh68fpoWK
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
Documentation/DocBook/media/constraints.png.b64+0−59
@@ -1,59 +0,0 @@
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
59RU5ErkJggg==
Documentation/DocBook/media/crop.gif.b64+0−105
@@ -1,105 +0,0 @@
1R0lGODlhuQJGAeMAAAAAAH9/fwCvAP8AANEA0dEAAK8Ar////wCOAAAA0QAA////////////////
2/////ywAAAAAuQJGAQAE/vDISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqP
3yKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaH
4iImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6gQC9vr/A
5wcLDxMXGx8jJysvMzc7P0NHS09TV1tfYxbth2d3e3+DRAePk5ebn6Onl4ezt7u3q8fLqANtg7/j5
6+s/z/f4B+wIKHAjsn8F09ex5IciwobuDEM1Bi0ixosWLGDNqrJhQIZdk/htDihxJsiTJiSZTqlzJ
7MmNHj1q+tRznsKbNmzhzDoz3EiYWmTN7+vQJgOfQmN5mAjzKtCg9pj+TBoU61ClCqlaAthSKVZdV
8dFy7NtHKMqxYW1/PmT2bhOzKtWxlpZUYF4pblXDrvpq7Tq+Tu+UGCB5MuLDhw4gTK17MuLHjx5Aj
9S55MubLly5gza95MmVxev0EAkxsg8jNoVXNJ0zy9RPQ41RtNsz6V2vPstlLTwdYo+zap2qt9G3Ed
10YLdL4bGAL0VOhLhxjL2Zf1IeXboM56Wtt6KuPXRudM8vVu+eiTt5H9hDjj9vyfyIXrTW80gfO4OC
11+/jz69/Pv7///wAG/ijggAQWaOCBCCao4IIMNujggRe4J4IwBxBg4YUYZqjhhhx26OGHIIYo4ogk
12loihMBbi1k084VlklgLsWQKjBRJqgIwEBJRyY4UqZsNidhjMGOMkQlLgnjERwkdBjuVpk2QFTB5B
13H2/2DUlJkRNYhWQKUTKyJQpdFjHlcUFaSaQxo9nGQph/fCkDm0OMCV2VZh7iZpbnwCYfBnDKcecO
14fXq3ojotckRnnXr8SQGWEtQIphuKEhEoEHKKdygHCUiQ6QEJdDrEphWA2oGo3UXaAaMHOHrCpFmY
152gSr6H2XJ5AXoHqBp5xyuimpPfCa6we+6uWqCaiqagKsTAxrBbLz/slqTqEUvWgBqLviSqqvnXpq
16rbbZTpDtt9ziSsG3unKraabkltutWMq+UOyswa3A7A/tfjGvDpW6eKm3v+a667i38vvvuQLzW7Cm
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
Documentation/DocBook/media/dvb/.gitignore+0−1
@@ -1 +0,0 @@
1!*.xml
Documentation/DocBook/media/dvb/audio.xml+0−1314
@@ -1,1314 +0,0 @@
1<title>DVB Audio Device</title>
2<para>The DVB audio device controls the MPEG2 audio decoder of the DVB hardware. It
3can be accessed through <constant>/dev/dvb/adapter?/audio?</constant>. Data types and and
4ioctl definitions can be accessed by including <constant>linux/dvb/audio.h</constant> in your
5application.
6</para>
7<para>Please note that some DVB cards don&#8217;t have their own MPEG decoder, which results in
8the omission of the audio and video device.
9</para>
10<para>
11These ioctls were also used by V4L2 to control MPEG decoders implemented in V4L2. The use
12of these ioctls for that purpose has been made obsolete and proper V4L2 ioctls or controls
13have been created to replace that functionality.</para>
14
15<section id="audio_data_types">
16<title>Audio Data Types</title>
17<para>This section describes the structures, data types and defines used when talking to the
18audio device.
19</para>
20
21<section id="audio-stream-source-t">
22<title>audio_stream_source_t</title>
23<para>The audio stream source is set through the AUDIO_SELECT_SOURCE call and can take
24the following values, depending on whether we are replaying from an internal (demux) or
25external (user write) source.
26</para>
27<programlisting>
28typedef enum {
29 AUDIO_SOURCE_DEMUX,
30 AUDIO_SOURCE_MEMORY
31} audio_stream_source_t;
32</programlisting>
33<para>AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
34DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY
35is selected the stream comes from the application through the <constant>write()</constant> system
36call.
37</para>
38
39</section>
40<section id="audio-play-state-t">
41<title>audio_play_state_t</title>
42<para>The following values can be returned by the AUDIO_GET_STATUS call representing the
43state of audio playback.
44</para>
45<programlisting>
46typedef enum {
47 AUDIO_STOPPED,
48 AUDIO_PLAYING,
49 AUDIO_PAUSED
50} audio_play_state_t;
51</programlisting>
52
53</section>
54<section id="audio-channel-select-t">
55<title>audio_channel_select_t</title>
56<para>The audio channel selected via AUDIO_CHANNEL_SELECT is determined by the
57following values.
58</para>
59<programlisting>
60typedef enum {
61 AUDIO_STEREO,
62 AUDIO_MONO_LEFT,
63 AUDIO_MONO_RIGHT,
64 AUDIO_MONO,
65 AUDIO_STEREO_SWAPPED
66} audio_channel_select_t;
67</programlisting>
68
69</section>
70<section id="audio-status">
71<title>struct audio_status</title>
72<para>The AUDIO_GET_STATUS call returns the following structure informing about various
73states of the playback operation.
74</para>
75<programlisting>
76typedef struct audio_status {
77 boolean AV_sync_state;
78 boolean mute_state;
79 audio_play_state_t play_state;
80 audio_stream_source_t stream_source;
81 audio_channel_select_t channel_select;
82 boolean bypass_mode;
83 audio_mixer_t mixer_state;
84} audio_status_t;
85</programlisting>
86
87</section>
88<section id="audio-mixer">
89<title>struct audio_mixer</title>
90<para>The following structure is used by the AUDIO_SET_MIXER call to set the audio
91volume.
92</para>
93<programlisting>
94typedef struct audio_mixer {
95 unsigned int volume_left;
96 unsigned int volume_right;
97} audio_mixer_t;
98</programlisting>
99
100</section>
101<section id="audio_encodings">
102<title>audio encodings</title>
103<para>A call to AUDIO_GET_CAPABILITIES returns an unsigned integer with the following
104bits set according to the hardwares capabilities.
105</para>
106<programlisting>
107 #define AUDIO_CAP_DTS 1
108 #define AUDIO_CAP_LPCM 2
109 #define AUDIO_CAP_MP1 4
110 #define AUDIO_CAP_MP2 8
111 #define AUDIO_CAP_MP3 16
112 #define AUDIO_CAP_AAC 32
113 #define AUDIO_CAP_OGG 64
114 #define AUDIO_CAP_SDDS 128
115 #define AUDIO_CAP_AC3 256
116</programlisting>
117
118</section>
119<section id="audio-karaoke">
120<title>struct audio_karaoke</title>
121<para>The ioctl AUDIO_SET_KARAOKE uses the following format:
122</para>
123<programlisting>
124typedef
125struct audio_karaoke {
126 int vocal1;
127 int vocal2;
128 int melody;
129} audio_karaoke_t;
130</programlisting>
131<para>If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t at 70% each. If both,
132Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and Vocal2 into the
133right channel at 100% each. Ff Melody is non-zero, the melody channel gets mixed into left
134and right.
135</para>
136
137</section>
138<section id="audio-attributes-t">
139<title>audio attributes</title>
140<para>The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES:
141</para>
142<programlisting>
143 typedef uint16_t audio_attributes_t;
144 /&#x22C6; bits: descr. &#x22C6;/
145 /&#x22C6; 15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, &#x22C6;/
146 /&#x22C6; 12 multichannel extension &#x22C6;/
147 /&#x22C6; 11-10 audio type (0=not spec, 1=language included) &#x22C6;/
148 /&#x22C6; 9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) &#x22C6;/
149 /&#x22C6; 7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, &#x22C6;/
150 /&#x22C6; 5- 4 Sample frequency fs (0=48kHz, 1=96kHz) &#x22C6;/
151 /&#x22C6; 2- 0 number of audio channels (n+1 channels) &#x22C6;/
152</programlisting>
153 </section></section>
154<section id="audio_function_calls">
155<title>Audio Function Calls</title>
156
157
158<section id="audio_fopen">
159<title>open()</title>
160<para>DESCRIPTION
161</para>
162<informaltable><tgroup cols="1"><tbody><row><entry
163 align="char">
164<para>This system call opens a named audio device (e.g. /dev/dvb/adapter0/audio0)
165 for subsequent use. When an open() call has succeeded, the device will be ready
166 for use. The significance of blocking or non-blocking mode is described in the
167 documentation for functions where there is a difference. It does not affect the
168 semantics of the open() call itself. A device opened in blocking mode can later
169 be put into non-blocking mode (and vice versa) using the F_SETFL command
170 of the fcntl system call. This is a standard system call, documented in the Linux
171 manual page for fcntl. Only one user can open the Audio Device in O_RDWR
172 mode. All other attempts to open the device in this mode will fail, and an error
173 code will be returned. If the Audio Device is opened in O_RDONLY mode, the
174 only ioctl call that can be used is AUDIO_GET_STATUS. All other call will
175 return with an error code.</para>
176</entry>
177 </row></tbody></tgroup></informaltable>
178<para>SYNOPSIS
179</para>
180<informaltable><tgroup cols="1"><tbody><row><entry
181 align="char">
182<para>int open(const char &#x22C6;deviceName, int flags);</para>
183</entry>
184 </row></tbody></tgroup></informaltable>
185<para>PARAMETERS
186</para>
187<informaltable><tgroup cols="2"><tbody><row><entry
188 align="char">
189<para>const char
190 *deviceName</para>
191</entry><entry
192 align="char">
193<para>Name of specific audio device.</para>
194</entry>
195 </row><row><entry
196 align="char">
197<para>int flags</para>
198</entry><entry
199 align="char">
200<para>A bit-wise OR of the following flags:</para>
201</entry>
202 </row><row><entry
203 align="char">
204</entry><entry
205 align="char">
206<para>O_RDONLY read-only access</para>
207</entry>
208 </row><row><entry
209 align="char">
210</entry><entry
211 align="char">
212<para>O_RDWR read/write access</para>
213</entry>
214 </row><row><entry
215 align="char">
216</entry><entry
217 align="char">
218<para>O_NONBLOCK open in non-blocking mode</para>
219</entry>
220 </row><row><entry
221 align="char">
222</entry><entry
223 align="char">
224<para>(blocking mode is the default)</para>
225</entry>
226 </row></tbody></tgroup></informaltable>
227<para>RETURN VALUE</para>
228<informaltable><tgroup cols="2"><tbody><row><entry
229 align="char">
230<para>ENODEV</para>
231</entry><entry
232 align="char">
233<para>Device driver not loaded/available.</para>
234</entry>
235 </row><row><entry
236 align="char">
237<para>EBUSY</para>
238</entry><entry
239 align="char">
240<para>Device or resource busy.</para>
241</entry>
242 </row><row><entry
243 align="char">
244<para>EINVAL</para>
245</entry><entry
246 align="char">
247<para>Invalid argument.</para>
248</entry>
249 </row></tbody></tgroup></informaltable>
250
251</section>
252<section id="audio_fclose">
253<title>close()</title>
254<para>DESCRIPTION
255</para>
256<informaltable><tgroup cols="1"><tbody><row><entry
257 align="char">
258<para>This system call closes a previously opened audio device.</para>
259</entry>
260 </row></tbody></tgroup></informaltable>
261<para>SYNOPSIS
262</para>
263<informaltable><tgroup cols="1"><tbody><row><entry
264 align="char">
265<para>int close(int fd);</para>
266</entry>
267 </row></tbody></tgroup></informaltable>
268<para>PARAMETERS
269</para>
270<informaltable><tgroup cols="2"><tbody><row><entry
271 align="char">
272<para>int fd</para>
273</entry><entry
274 align="char">
275<para>File descriptor returned by a previous call to open().</para>
276</entry>
277 </row></tbody></tgroup></informaltable>
278<para>RETURN VALUE</para>
279<informaltable><tgroup cols="2"><tbody><row><entry
280 align="char">
281<para>EBADF</para>
282</entry><entry
283 align="char">
284<para>fd is not a valid open file descriptor.</para>
285</entry>
286 </row></tbody></tgroup></informaltable>
287
288</section>
289<section id="audio_fwrite">
290<title>write()</title>
291<para>DESCRIPTION
292</para>
293<informaltable><tgroup cols="1"><tbody><row><entry
294 align="char">
295<para>This system call can only be used if AUDIO_SOURCE_MEMORY is selected
296 in the ioctl call AUDIO_SELECT_SOURCE. The data provided shall be in
297 PES format. If O_NONBLOCK is not specified the function will block until
298 buffer space is available. The amount of data to be transferred is implied by
299 count.</para>
300</entry>
301 </row></tbody></tgroup></informaltable>
302<para>SYNOPSIS
303</para>
304<informaltable><tgroup cols="1"><tbody><row><entry
305 align="char">
306<para>size_t write(int fd, const void &#x22C6;buf, size_t count);</para>
307</entry>
308 </row></tbody></tgroup></informaltable>
309<para>PARAMETERS
310</para>
311<informaltable><tgroup cols="2"><tbody><row><entry
312 align="char">
313<para>int fd</para>
314</entry><entry
315 align="char">
316<para>File descriptor returned by a previous call to open().</para>
317</entry>
318 </row><row><entry
319 align="char">
320<para>void *buf</para>
321</entry><entry
322 align="char">
323<para>Pointer to the buffer containing the PES data.</para>
324</entry>
325 </row><row><entry
326 align="char">
327<para>size_t count</para>
328</entry><entry
329 align="char">
330<para>Size of buf.</para>
331</entry>
332 </row></tbody></tgroup></informaltable>
333<para>RETURN VALUE</para>
334<informaltable><tgroup cols="2"><tbody><row><entry
335 align="char">
336<para>EPERM</para>
337</entry><entry
338 align="char">
339<para>Mode AUDIO_SOURCE_MEMORY not selected.</para>
340</entry>
341 </row><row><entry
342 align="char">
343<para>ENOMEM</para>
344</entry><entry
345 align="char">
346<para>Attempted to write more data than the internal buffer can
347 hold.</para>
348</entry>
349 </row><row><entry
350 align="char">
351<para>EBADF</para>
352</entry><entry
353 align="char">
354<para>fd is not a valid open file descriptor.</para>
355</entry>
356 </row></tbody></tgroup></informaltable>
357
358</section><section id="AUDIO_STOP"
359role="subsection"><title>AUDIO_STOP</title>
360<para>DESCRIPTION
361</para>
362<informaltable><tgroup cols="1"><tbody><row><entry
363 align="char">
364<para>This ioctl call asks the Audio Device to stop playing the current stream.</para>
365</entry>
366 </row></tbody></tgroup></informaltable>
367<para>SYNOPSIS
368</para>
369<informaltable><tgroup cols="1"><tbody><row><entry
370 align="char">
371<para>int ioctl(int fd, int request = AUDIO_STOP);</para>
372</entry>
373 </row></tbody></tgroup></informaltable>
374<para>PARAMETERS
375</para>
376<informaltable><tgroup cols="2"><tbody><row><entry
377 align="char">
378<para>int fd</para>
379</entry><entry
380 align="char">
381<para>File descriptor returned by a previous call to open().</para>
382</entry>
383 </row><row><entry
384 align="char">
385<para>int request</para>
386</entry><entry
387 align="char">
388<para>Equals AUDIO_STOP for this command.</para>
389</entry>
390 </row></tbody></tgroup></informaltable>
391&return-value-dvb;
392
393</section><section id="AUDIO_PLAY"
394role="subsection"><title>AUDIO_PLAY</title>
395<para>DESCRIPTION
396</para>
397<informaltable><tgroup cols="1"><tbody><row><entry
398 align="char">
399<para>This ioctl call asks the Audio Device to start playing an audio stream from the
400 selected source.</para>
401</entry>
402 </row></tbody></tgroup></informaltable>
403<para>SYNOPSIS
404</para>
405<informaltable><tgroup cols="1"><tbody><row><entry
406 align="char">
407<para>int ioctl(int fd, int request = AUDIO_PLAY);</para>
408</entry>
409 </row></tbody></tgroup></informaltable>
410<para>PARAMETERS
411</para>
412<informaltable><tgroup cols="2"><tbody><row><entry
413 align="char">
414<para>int fd</para>
415</entry><entry
416 align="char">
417<para>File descriptor returned by a previous call to open().</para>
418</entry>
419 </row><row><entry
420 align="char">
421<para>int request</para>
422</entry><entry
423 align="char">
424<para>Equals AUDIO_PLAY for this command.</para>
425</entry>
426 </row></tbody></tgroup></informaltable>
427&return-value-dvb;
428
429</section><section id="AUDIO_PAUSE"
430role="subsection"><title>AUDIO_PAUSE</title>
431<para>DESCRIPTION
432</para>
433<informaltable><tgroup cols="1"><tbody><row><entry
434 align="char">
435<para>This ioctl call suspends the audio stream being played. Decoding and playing
436 are paused. It is then possible to restart again decoding and playing process of
437 the audio stream using AUDIO_CONTINUE command.</para>
438</entry>
439 </row><row><entry
440 align="char">
441<para>If AUDIO_SOURCE_MEMORY is selected in the ioctl call
442 AUDIO_SELECT_SOURCE, the DVB-subsystem will not decode (consume)
443 any more data until the ioctl call AUDIO_CONTINUE or AUDIO_PLAY is
444 performed.</para>
445</entry>
446 </row></tbody></tgroup></informaltable>
447<para>SYNOPSIS
448</para>
449<informaltable><tgroup cols="1"><tbody><row><entry
450 align="char">
451<para>int ioctl(int fd, int request = AUDIO_PAUSE);</para>
452</entry>
453 </row></tbody></tgroup></informaltable>
454<para>PARAMETERS
455</para>
456<informaltable><tgroup cols="2"><tbody><row><entry
457 align="char">
458<para>int fd</para>
459</entry><entry
460 align="char">
461<para>File descriptor returned by a previous call to open().</para>
462</entry>
463 </row><row><entry
464 align="char">
465<para>int request</para>
466</entry><entry
467 align="char">
468<para>Equals AUDIO_PAUSE for this command.</para>
469</entry>
470 </row></tbody></tgroup></informaltable>
471&return-value-dvb;
472
473</section><section id="AUDIO_CONTINUE"
474role="subsection"><title>AUDIO_CONTINUE</title>
475<para>DESCRIPTION
476</para>
477<informaltable><tgroup cols="1"><tbody><row><entry
478 align="char">
479<para>This ioctl restarts the decoding and playing process previously paused
480with AUDIO_PAUSE command.</para>
481</entry>
482 </row><row><entry
483 align="char">
484<para>It only works if the stream were previously stopped with AUDIO_PAUSE</para>
485</entry>
486 </row></tbody></tgroup></informaltable>
487<para>SYNOPSIS
488</para>
489<informaltable><tgroup cols="1"><tbody><row><entry
490 align="char">
491<para>int ioctl(int fd, int request = AUDIO_CONTINUE);</para>
492</entry>
493 </row></tbody></tgroup></informaltable>
494<para>PARAMETERS
495</para>
496<informaltable><tgroup cols="2"><tbody><row><entry
497 align="char">
498<para>int fd</para>
499</entry><entry
500 align="char">
501<para>File descriptor returned by a previous call to open().</para>
502</entry>
503 </row><row><entry
504 align="char">
505<para>int request</para>
506</entry><entry
507 align="char">
508<para>Equals AUDIO_CONTINUE for this command.</para>
509</entry>
510 </row></tbody></tgroup></informaltable>
511&return-value-dvb;
512
513</section><section id="AUDIO_SELECT_SOURCE"
514role="subsection"><title>AUDIO_SELECT_SOURCE</title>
515<para>DESCRIPTION
516</para>
517<informaltable><tgroup cols="1"><tbody><row><entry
518 align="char">
519<para>This ioctl call informs the audio device which source shall be used
520 for the input data. The possible sources are demux or memory. If
521 AUDIO_SOURCE_MEMORY is selected, the data is fed to the Audio Device
522 through the write command.</para>
523</entry>
524 </row></tbody></tgroup></informaltable>
525<para>SYNOPSIS
526</para>
527<informaltable><tgroup cols="1"><tbody><row><entry
528 align="char">
529<para>int ioctl(int fd, int request = AUDIO_SELECT_SOURCE,
530 audio_stream_source_t source);</para>
531</entry>
532 </row></tbody></tgroup></informaltable>
533<para>PARAMETERS
534</para>
535<informaltable><tgroup cols="2"><tbody><row><entry
536 align="char">
537<para>int fd</para>
538</entry><entry
539 align="char">
540<para>File descriptor returned by a previous call to open().</para>
541</entry>
542 </row><row><entry
543 align="char">
544<para>int request</para>
545</entry><entry
546 align="char">
547<para>Equals AUDIO_SELECT_SOURCE for this command.</para>
548</entry>
549 </row><row><entry
550 align="char">
551<para>audio_stream_source_t
552 source</para>
553</entry><entry
554 align="char">
555<para>Indicates the source that shall be used for the Audio
556 stream.</para>
557</entry>
558 </row></tbody></tgroup></informaltable>
559&return-value-dvb;
560
561</section><section id="AUDIO_SET_MUTE"
562role="subsection"><title>AUDIO_SET_MUTE</title>
563<para>DESCRIPTION
564</para>
565<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
566&VIDIOC-DECODER-CMD; with the <constant>V4L2_DEC_CMD_START_MUTE_AUDIO</constant> flag instead.</para>
567<informaltable><tgroup cols="1"><tbody><row><entry
568 align="char">
569<para>This ioctl call asks the audio device to mute the stream that is currently being
570 played.</para>
571</entry>
572 </row></tbody></tgroup></informaltable>
573<para>SYNOPSIS
574</para>
575<informaltable><tgroup cols="1"><tbody><row><entry
576 align="char">
577<para>int ioctl(int fd, int request = AUDIO_SET_MUTE,
578 boolean state);</para>
579</entry>
580 </row></tbody></tgroup></informaltable>
581<para>PARAMETERS
582</para>
583<informaltable><tgroup cols="2"><tbody><row><entry
584 align="char">
585<para>int fd</para>
586</entry><entry
587 align="char">
588<para>File descriptor returned by a previous call to open().</para>
589</entry>
590 </row><row><entry
591 align="char">
592<para>int request</para>
593</entry><entry
594 align="char">
595<para>Equals AUDIO_SET_MUTE for this command.</para>
596</entry>
597 </row><row><entry
598 align="char">
599<para>boolean state</para>
600</entry><entry
601 align="char">
602<para>Indicates if audio device shall mute or not.</para>
603</entry>
604 </row><row><entry
605 align="char">
606</entry><entry
607 align="char">
608<para>TRUE Audio Mute</para>
609</entry>
610 </row><row><entry
611 align="char">
612</entry><entry
613 align="char">
614<para>FALSE Audio Un-mute</para>
615</entry>
616 </row></tbody></tgroup></informaltable>
617&return-value-dvb;
618
619</section><section id="AUDIO_SET_AV_SYNC"
620role="subsection"><title>AUDIO_SET_AV_SYNC</title>
621<para>DESCRIPTION
622</para>
623<informaltable><tgroup cols="1"><tbody><row><entry
624 align="char">
625<para>This ioctl call asks the Audio Device to turn ON or OFF A/V synchronization.</para>
626</entry>
627 </row></tbody></tgroup></informaltable>
628<para>SYNOPSIS
629</para>
630<informaltable><tgroup cols="1"><tbody><row><entry
631 align="char">
632<para>int ioctl(int fd, int request = AUDIO_SET_AV_SYNC,
633 boolean state);</para>
634</entry>
635 </row></tbody></tgroup></informaltable>
636<para>PARAMETERS
637</para>
638<informaltable><tgroup cols="2"><tbody><row><entry
639 align="char">
640<para>int fd</para>
641</entry><entry
642 align="char">
643<para>File descriptor returned by a previous call to open().</para>
644</entry>
645 </row><row><entry
646 align="char">
647<para>int request</para>
648</entry><entry
649 align="char">
650<para>Equals AUDIO_AV_SYNC for this command.</para>
651</entry>
652 </row><row><entry
653 align="char">
654<para>boolean state</para>
655</entry><entry
656 align="char">
657<para>Tells the DVB subsystem if A/V synchronization shall be
658 ON or OFF.</para>
659</entry>
660 </row><row><entry
661 align="char">
662</entry><entry
663 align="char">
664<para>TRUE AV-sync ON</para>
665</entry>
666 </row><row><entry
667 align="char">
668</entry><entry
669 align="char">
670<para>FALSE AV-sync OFF</para>
671</entry>
672 </row></tbody></tgroup></informaltable>
673&return-value-dvb;
674
675</section><section id="AUDIO_SET_BYPASS_MODE"
676role="subsection"><title>AUDIO_SET_BYPASS_MODE</title>
677<para>DESCRIPTION
678</para>
679<informaltable><tgroup cols="1"><tbody><row><entry
680 align="char">
681<para>This ioctl call asks the Audio Device to bypass the Audio decoder and forward
682 the stream without decoding. This mode shall be used if streams that can&#8217;t be
683 handled by the DVB system shall be decoded. Dolby DigitalTM streams are
684 automatically forwarded by the DVB subsystem if the hardware can handle it.</para>
685</entry>
686 </row></tbody></tgroup></informaltable>
687<para>SYNOPSIS
688</para>
689<informaltable><tgroup cols="1"><tbody><row><entry
690 align="char">
691<para>int ioctl(int fd, int request =
692 AUDIO_SET_BYPASS_MODE, boolean mode);</para>
693</entry>
694 </row></tbody></tgroup></informaltable>
695<para>PARAMETERS
696</para>
697<informaltable><tgroup cols="2"><tbody><row><entry
698 align="char">
699<para>int fd</para>
700</entry><entry
701 align="char">
702<para>File descriptor returned by a previous call to open().</para>
703</entry>
704 </row><row><entry
705 align="char">
706<para>int request</para>
707</entry><entry
708 align="char">
709<para>Equals AUDIO_SET_BYPASS_MODE for this
710 command.</para>
711</entry>
712 </row><row><entry
713 align="char">
714<para>boolean mode</para>
715</entry><entry
716 align="char">
717<para>Enables or disables the decoding of the current Audio
718 stream in the DVB subsystem.</para>
719</entry>
720 </row><row><entry
721 align="char">
722</entry><entry
723 align="char">
724<para>TRUE Bypass is disabled</para>
725</entry>
726 </row><row><entry
727 align="char">
728</entry><entry
729 align="char">
730<para>FALSE Bypass is enabled</para>
731</entry>
732 </row></tbody></tgroup></informaltable>
733&return-value-dvb;
734
735</section><section id="AUDIO_CHANNEL_SELECT"
736role="subsection"><title>AUDIO_CHANNEL_SELECT</title>
737<para>DESCRIPTION
738</para>
739<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
740<constant>V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK</constant> control instead.</para>
741<informaltable><tgroup cols="1"><tbody><row><entry
742 align="char">
743<para>This ioctl call asks the Audio Device to select the requested channel if possible.</para>
744</entry>
745 </row></tbody></tgroup></informaltable>
746<para>SYNOPSIS
747</para>
748<informaltable><tgroup cols="1"><tbody><row><entry
749 align="char">
750<para>int ioctl(int fd, int request =
751 AUDIO_CHANNEL_SELECT, audio_channel_select_t);</para>
752</entry>
753 </row></tbody></tgroup></informaltable>
754<para>PARAMETERS
755</para>
756<informaltable><tgroup cols="2"><tbody><row><entry
757 align="char">
758<para>int fd</para>
759</entry><entry
760 align="char">
761<para>File descriptor returned by a previous call to open().</para>
762</entry>
763 </row><row><entry
764 align="char">
765<para>int request</para>
766</entry><entry
767 align="char">
768<para>Equals AUDIO_CHANNEL_SELECT for this
769 command.</para>
770</entry>
771 </row><row><entry
772 align="char">
773<para>audio_channel_select_t
774 ch</para>
775</entry><entry
776 align="char">
777<para>Select the output format of the audio (mono left/right,
778 stereo).</para>
779</entry>
780 </row></tbody></tgroup></informaltable>
781&return-value-dvb;
782
783</section><section id="AUDIO_BILINGUAL_CHANNEL_SELECT"
784role="subsection"><title>AUDIO_BILINGUAL_CHANNEL_SELECT</title>
785<para>DESCRIPTION
786</para>
787<para>This ioctl is obsolete. Do not use in new drivers. It has been replaced by
788the V4L2 <constant>V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK</constant> control
789for MPEG decoders controlled through V4L2.</para>
790<informaltable><tgroup cols="1"><tbody><row><entry
791 align="char">
792<para>This ioctl call asks the Audio Device to select the requested channel for bilingual streams if possible.</para>
793</entry>
794 </row></tbody></tgroup></informaltable>
795<para>SYNOPSIS
796</para>
797<informaltable><tgroup cols="1"><tbody><row><entry
798 align="char">
799<para>int ioctl(int fd, int request =
800 AUDIO_BILINGUAL_CHANNEL_SELECT, audio_channel_select_t);</para>
801</entry>
802 </row></tbody></tgroup></informaltable>
803<para>PARAMETERS
804</para>
805<informaltable><tgroup cols="2"><tbody><row><entry
806 align="char">
807<para>int fd</para>
808</entry><entry
809 align="char">
810<para>File descriptor returned by a previous call to open().</para>
811</entry>
812 </row><row><entry
813 align="char">
814<para>int request</para>
815</entry><entry
816 align="char">
817<para>Equals AUDIO_BILINGUAL_CHANNEL_SELECT for this
818 command.</para>
819</entry>
820 </row><row><entry
821 align="char">
822<para>audio_channel_select_t
823ch</para>
824</entry><entry
825 align="char">
826<para>Select the output format of the audio (mono left/right,
827 stereo).</para>
828</entry>
829 </row>
830</tbody></tgroup></informaltable>
831&return-value-dvb;
832
833</section><section id="AUDIO_GET_PTS"
834role="subsection"><title>AUDIO_GET_PTS</title>
835<para>DESCRIPTION
836</para>
837<para>This ioctl is obsolete. Do not use in new drivers. If you need this functionality,
838then please contact the linux-media mailing list (&v4l-ml;).</para>
839<informaltable><tgroup cols="1"><tbody><row><entry
840 align="char">
841<para>This ioctl call asks the Audio Device to return the current PTS timestamp.</para>
842</entry>
843 </row></tbody></tgroup></informaltable>
844<para>SYNOPSIS
845</para>
846<informaltable><tgroup cols="1"><tbody><row><entry
847 align="char">
848<para>int ioctl(int fd, int request =
849 AUDIO_GET_PTS, __u64 *pts);</para>
850</entry>
851 </row></tbody></tgroup></informaltable>
852<para>PARAMETERS
853</para>
854<informaltable><tgroup cols="2"><tbody><row><entry
855 align="char">
856<para>int fd</para>
857</entry><entry
858 align="char">
859<para>File descriptor returned by a previous call to open().</para>
860</entry>
861 </row><row><entry
862 align="char">
863<para>int request</para>
864</entry><entry
865 align="char">
866<para>Equals AUDIO_GET_PTS for this
867 command.</para>
868</entry>
869 </row><row><entry
870 align="char">
871<para>__u64 *pts
872</para>
873</entry><entry
874 align="char">
875<para>Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 / ISO/IEC 13818-1.
876</para>
877<para>
878The PTS should belong to the currently played
879frame if possible, but may also be a value close to it
880like the PTS of the last decoded frame or the last PTS
881extracted by the PES parser.</para>
882</entry>
883 </row></tbody></tgroup></informaltable>
884&return-value-dvb;
885
886</section><section id="AUDIO_GET_STATUS"
887role="subsection"><title>AUDIO_GET_STATUS</title>
888<para>DESCRIPTION
889</para>
890<informaltable><tgroup cols="1"><tbody><row><entry
891 align="char">
892<para>This ioctl call asks the Audio Device to return the current state of the Audio
893 Device.</para>
894</entry>
895 </row></tbody></tgroup></informaltable>
896<para>SYNOPSIS
897</para>
898<informaltable><tgroup cols="1"><tbody><row><entry
899 align="char">
900<para>int ioctl(int fd, int request = AUDIO_GET_STATUS,
901 struct audio_status &#x22C6;status);</para>
902</entry>
903 </row></tbody></tgroup></informaltable>
904<para>PARAMETERS
905</para>
906<informaltable><tgroup cols="2"><tbody><row><entry
907 align="char">
908<para>int fd</para>
909</entry><entry
910 align="char">
911<para>File descriptor returned by a previous call to open().</para>
912</entry>
913 </row><row><entry
914 align="char">
915<para>int request</para>
916</entry><entry
917 align="char">
918<para>Equals AUDIO_GET_STATUS for this command.</para>
919</entry>
920 </row><row><entry
921 align="char">
922<para>struct audio_status
923 *status</para>
924</entry><entry
925 align="char">
926<para>Returns the current state of Audio Device.</para>
927</entry>
928 </row></tbody></tgroup></informaltable>
929&return-value-dvb;
930
931</section><section id="AUDIO_GET_CAPABILITIES"
932role="subsection"><title>AUDIO_GET_CAPABILITIES</title>
933<para>DESCRIPTION
934</para>
935<informaltable><tgroup cols="1"><tbody><row><entry
936 align="char">
937<para>This ioctl call asks the Audio Device to tell us about the decoding capabilities
938 of the audio hardware.</para>
939</entry>
940 </row></tbody></tgroup></informaltable>
941<para>SYNOPSIS
942</para>
943<informaltable><tgroup cols="1"><tbody><row><entry
944 align="char">
945<para>int ioctl(int fd, int request =
946 AUDIO_GET_CAPABILITIES, unsigned int &#x22C6;cap);</para>
947</entry>
948 </row></tbody></tgroup></informaltable>
949<para>PARAMETERS
950</para>
951<informaltable><tgroup cols="2"><tbody><row><entry
952 align="char">
953<para>int fd</para>
954</entry><entry
955 align="char">
956<para>File descriptor returned by a previous call to open().</para>
957</entry>
958 </row><row><entry
959 align="char">
960<para>int request</para>
961</entry><entry
962 align="char">
963<para>Equals AUDIO_GET_CAPABILITIES for this
964 command.</para>
965</entry>
966 </row><row><entry
967 align="char">
968<para>unsigned int *cap</para>
969</entry><entry
970 align="char">
971<para>Returns a bit array of supported sound formats.</para>
972</entry>
973 </row></tbody></tgroup></informaltable>
974&return-value-dvb;
975
976</section><section id="AUDIO_CLEAR_BUFFER"
977role="subsection"><title>AUDIO_CLEAR_BUFFER</title>
978<para>DESCRIPTION
979</para>
980<informaltable><tgroup cols="1"><tbody><row><entry
981 align="char">
982<para>This ioctl call asks the Audio Device to clear all software and hardware buffers
983 of the audio decoder device.</para>
984</entry>
985 </row></tbody></tgroup></informaltable>
986<para>SYNOPSIS
987</para>
988<informaltable><tgroup cols="1"><tbody><row><entry
989 align="char">
990<para>int ioctl(int fd, int request = AUDIO_CLEAR_BUFFER);</para>
991</entry>
992 </row></tbody></tgroup></informaltable>
993<para>PARAMETERS
994</para>
995<informaltable><tgroup cols="2"><tbody><row><entry
996 align="char">
997<para>int fd</para>
998</entry><entry
999 align="char">
1000<para>File descriptor returned by a previous call to open().</para>
1001</entry>
1002 </row><row><entry
1003 align="char">
1004<para>int request</para>
1005</entry><entry
1006 align="char">
1007<para>Equals AUDIO_CLEAR_BUFFER for this command.</para>
1008</entry>
1009 </row></tbody></tgroup></informaltable>
1010&return-value-dvb;
1011
1012</section><section id="AUDIO_SET_ID"
1013role="subsection"><title>AUDIO_SET_ID</title>
1014<para>DESCRIPTION
1015</para>
1016<informaltable><tgroup cols="1"><tbody><row><entry
1017 align="char">
1018<para>This ioctl selects which sub-stream is to be decoded if a program or system
1019 stream is sent to the video device. If no audio stream type is set the id has to be
1020 in [0xC0,0xDF] for MPEG sound, in [0x80,0x87] for AC3 and in [0xA0,0xA7]
1021 for LPCM. More specifications may follow for other stream types. If the stream
1022 type is set the id just specifies the substream id of the audio stream and only
1023 the first 5 bits are recognized.</para>
1024</entry>
1025 </row></tbody></tgroup></informaltable>
1026<para>SYNOPSIS
1027</para>
1028<informaltable><tgroup cols="1"><tbody><row><entry
1029 align="char">
1030<para>int ioctl(int fd, int request = AUDIO_SET_ID, int
1031 id);</para>
1032</entry>
1033 </row></tbody></tgroup></informaltable>
1034<para>PARAMETERS
1035</para>
1036<informaltable><tgroup cols="2"><tbody><row><entry
1037 align="char">
1038<para>int fd</para>
1039</entry><entry
1040 align="char">
1041<para>File descriptor returned by a previous call to open().</para>
1042</entry>
1043 </row><row><entry
1044 align="char">
1045<para>int request</para>
1046</entry><entry
1047 align="char">
1048<para>Equals AUDIO_SET_ID for this command.</para>
1049</entry>
1050 </row><row><entry
1051 align="char">
1052<para>int id</para>
1053</entry><entry
1054 align="char">
1055<para>audio sub-stream id</para>
1056</entry>
1057 </row></tbody></tgroup></informaltable>
1058&return-value-dvb;
1059
1060</section><section id="AUDIO_SET_MIXER"
1061role="subsection"><title>AUDIO_SET_MIXER</title>
1062<para>DESCRIPTION
1063</para>
1064<informaltable><tgroup cols="1"><tbody><row><entry
1065 align="char">
1066<para>This ioctl lets you adjust the mixer settings of the audio decoder.</para>
1067</entry>
1068 </row></tbody></tgroup></informaltable>
1069<para>SYNOPSIS
1070</para>
1071<informaltable><tgroup cols="1"><tbody><row><entry
1072 align="char">
1073<para>int ioctl(int fd, int request = AUDIO_SET_MIXER,
1074 audio_mixer_t &#x22C6;mix);</para>
1075</entry>
1076 </row></tbody></tgroup></informaltable>
1077<para>PARAMETERS
1078</para>
1079<informaltable><tgroup cols="2"><tbody><row><entry
1080 align="char">
1081<para>int fd</para>
1082</entry><entry
1083 align="char">
1084<para>File descriptor returned by a previous call to open().</para>
1085</entry>
1086 </row><row><entry
1087 align="char">
1088<para>int request</para>
1089</entry><entry
1090 align="char">
1091<para>Equals AUDIO_SET_ID for this command.</para>
1092</entry>
1093 </row><row><entry
1094 align="char">
1095<para>audio_mixer_t *mix</para>
1096</entry><entry
1097 align="char">
1098<para>mixer settings.</para>
1099</entry>
1100 </row></tbody></tgroup></informaltable>
1101&return-value-dvb;
1102
1103</section><section id="AUDIO_SET_STREAMTYPE"
1104role="subsection"><title>AUDIO_SET_STREAMTYPE</title>
1105<para>DESCRIPTION
1106</para>
1107<informaltable><tgroup cols="1"><tbody><row><entry
1108 align="char">
1109<para>This ioctl tells the driver which kind of audio stream to expect. This is useful
1110 if the stream offers several audio sub-streams like LPCM and AC3.</para>
1111</entry>
1112 </row></tbody></tgroup></informaltable>
1113<para>SYNOPSIS
1114</para>
1115<informaltable><tgroup cols="1"><tbody><row><entry
1116 align="char">
1117<para>int ioctl(fd, int request = AUDIO_SET_STREAMTYPE,
1118 int type);</para>
1119</entry>
1120 </row></tbody></tgroup></informaltable>
1121<para>PARAMETERS
1122</para>
1123<informaltable><tgroup cols="2"><tbody><row><entry
1124 align="char">
1125<para>int fd</para>
1126</entry><entry
1127 align="char">
1128<para>File descriptor returned by a previous call to open().</para>
1129</entry>
1130 </row><row><entry
1131 align="char">
1132<para>int request</para>
1133</entry><entry
1134 align="char">
1135<para>Equals AUDIO_SET_STREAMTYPE for this
1136 command.</para>
1137</entry>
1138 </row><row><entry
1139 align="char">
1140<para>int type</para>
1141</entry><entry
1142 align="char">
1143<para>stream type</para>
1144</entry>
1145 </row></tbody></tgroup></informaltable>
1146&return-value-dvb;
1147<informaltable><tgroup cols="2"><tbody><row><entry
1148 align="char">
1149<para>EINVAL</para>
1150</entry><entry
1151 align="char">
1152<para>type is not a valid or supported stream type.</para>
1153</entry>
1154 </row></tbody></tgroup></informaltable>
1155
1156</section><section id="AUDIO_SET_EXT_ID"
1157role="subsection"><title>AUDIO_SET_EXT_ID</title>
1158<para>DESCRIPTION
1159</para>
1160<informaltable><tgroup cols="1"><tbody><row><entry
1161 align="char">
1162<para>This ioctl can be used to set the extension id for MPEG streams in DVD
1163 playback. Only the first 3 bits are recognized.</para>
1164</entry>
1165 </row></tbody></tgroup></informaltable>
1166<para>SYNOPSIS
1167</para>
1168<informaltable><tgroup cols="1"><tbody><row><entry
1169 align="char">
1170<para>int ioctl(fd, int request = AUDIO_SET_EXT_ID, int
1171 id);</para>
1172</entry>
1173 </row></tbody></tgroup></informaltable>
1174<para>PARAMETERS
1175</para>
1176<informaltable><tgroup cols="2"><tbody><row><entry
1177 align="char">
1178<para>int fd</para>
1179</entry><entry
1180 align="char">
1181<para>File descriptor returned by a previous call to open().</para>
1182</entry>
1183 </row><row><entry
1184 align="char">
1185<para>int request</para>
1186</entry><entry
1187 align="char">
1188<para>Equals AUDIO_SET_EXT_ID for this command.</para>
1189</entry>
1190 </row><row><entry
1191 align="char">
1192<para>int id</para>
1193</entry><entry
1194 align="char">
1195<para>audio sub_stream_id</para>
1196</entry>
1197 </row></tbody></tgroup></informaltable>
1198&return-value-dvb;
1199<informaltable><tgroup cols="2"><tbody><row><entry
1200 align="char">
1201<para>EINVAL</para>
1202</entry><entry
1203 align="char">
1204<para>id is not a valid id.</para>
1205</entry>
1206 </row></tbody></tgroup></informaltable>
1207
1208</section><section id="AUDIO_SET_ATTRIBUTES"
1209role="subsection"><title>AUDIO_SET_ATTRIBUTES</title>
1210<para>DESCRIPTION
1211</para>
1212<informaltable><tgroup cols="1"><tbody><row><entry
1213 align="char">
1214<para>This ioctl is intended for DVD playback and allows you to set certain
1215 information about the audio stream.</para>
1216</entry>
1217 </row></tbody></tgroup></informaltable>
1218<para>SYNOPSIS
1219</para>
1220<informaltable><tgroup cols="1"><tbody><row><entry
1221 align="char">
1222<para>int ioctl(fd, int request = AUDIO_SET_ATTRIBUTES,
1223 audio_attributes_t attr );</para>
1224</entry>
1225 </row></tbody></tgroup></informaltable>
1226<para>PARAMETERS
1227</para>
1228<informaltable><tgroup cols="2"><tbody><row><entry
1229 align="char">
1230<para>int fd</para>
1231</entry><entry
1232 align="char">
1233<para>File descriptor returned by a previous call to open().</para>
1234</entry>
1235 </row><row><entry
1236 align="char">
1237<para>int request</para>
1238</entry><entry
1239 align="char">
1240<para>Equals AUDIO_SET_ATTRIBUTES for this command.</para>
1241</entry>
1242 </row><row><entry
1243 align="char">
1244<para>audio_attributes_t
1245 attr</para>
1246</entry><entry
1247 align="char">
1248<para>audio attributes according to section ??</para>
1249</entry>
1250 </row></tbody></tgroup></informaltable>
1251&return-value-dvb;
1252<informaltable><tgroup cols="2"><tbody><row><entry
1253 align="char">
1254<para>EINVAL</para>
1255</entry><entry
1256 align="char">
1257<para>attr is not a valid or supported attribute setting.</para>
1258</entry>
1259 </row></tbody></tgroup></informaltable>
1260
1261</section><section id="AUDIO_SET_KARAOKE"
1262role="subsection"><title>AUDIO_SET_KARAOKE</title>
1263<para>DESCRIPTION
1264</para>
1265<informaltable><tgroup cols="1"><tbody><row><entry
1266 align="char">
1267<para>This ioctl allows one to set the mixer settings for a karaoke DVD.</para>
1268</entry>
1269 </row></tbody></tgroup></informaltable>
1270<para>SYNOPSIS
1271</para>
1272<informaltable><tgroup cols="1"><tbody><row><entry
1273 align="char">
1274<para>int ioctl(fd, int request = AUDIO_SET_KARAOKE,
1275 audio_karaoke_t &#x22C6;karaoke);</para>
1276</entry>
1277 </row></tbody></tgroup></informaltable>
1278<para>PARAMETERS
1279</para>
1280<informaltable><tgroup cols="2"><tbody><row><entry
1281 align="char">
1282<para>int fd</para>
1283</entry><entry
1284 align="char">
1285<para>File descriptor returned by a previous call to open().</para>
1286</entry>
1287 </row><row><entry
1288 align="char">
1289<para>int request</para>
1290</entry><entry
1291 align="char">
1292<para>Equals AUDIO_SET_KARAOKE for this
1293 command.</para>
1294</entry>
1295 </row><row><entry
1296 align="char">
1297<para>audio_karaoke_t
1298 *karaoke</para>
1299</entry><entry
1300 align="char">
1301<para>karaoke settings according to section ??.</para>
1302</entry>
1303 </row></tbody></tgroup></informaltable>
1304&return-value-dvb;
1305<informaltable><tgroup cols="2"><tbody><row><entry
1306 align="char">
1307<para>EINVAL</para>
1308</entry><entry
1309 align="char">
1310<para>karaoke is not a valid or supported karaoke setting.</para>
1311</entry>
1312 </row></tbody></tgroup></informaltable>
1313 </section>
1314</section>
Documentation/DocBook/media/dvb/ca.xml+0−582
@@ -1,582 +0,0 @@
1<title>DVB CA Device</title>
2<para>The DVB CA device controls the conditional access hardware. It can be accessed through
3<constant>/dev/dvb/adapter?/ca?</constant>. Data types and and ioctl definitions can be accessed by
4including <constant>linux/dvb/ca.h</constant> in your application.
5</para>
6
7<section id="ca_data_types">
8<title>CA Data Types</title>
9
10
11<section id="ca-slot-info">
12<title>ca_slot_info_t</title>
13 <programlisting>
14typedef struct ca_slot_info {
15 int num; /&#x22C6; slot number &#x22C6;/
16
17 int type; /&#x22C6; CA interface this slot supports &#x22C6;/
18#define CA_CI 1 /&#x22C6; CI high level interface &#x22C6;/
19#define CA_CI_LINK 2 /&#x22C6; CI link layer level interface &#x22C6;/
20#define CA_CI_PHYS 4 /&#x22C6; CI physical layer level interface &#x22C6;/
21#define CA_DESCR 8 /&#x22C6; built-in descrambler &#x22C6;/
22#define CA_SC 128 /&#x22C6; simple smart card interface &#x22C6;/
23
24 unsigned int flags;
25#define CA_CI_MODULE_PRESENT 1 /&#x22C6; module (or card) inserted &#x22C6;/
26#define CA_CI_MODULE_READY 2
27} ca_slot_info_t;
28</programlisting>
29
30</section>
31<section id="ca-descr-info">
32<title>ca_descr_info_t</title>
33<programlisting>
34typedef struct ca_descr_info {
35 unsigned int num; /&#x22C6; number of available descramblers (keys) &#x22C6;/
36 unsigned int type; /&#x22C6; type of supported scrambling system &#x22C6;/
37#define CA_ECD 1
38#define CA_NDS 2
39#define CA_DSS 4
40} ca_descr_info_t;
41</programlisting>
42
43</section>
44<section id="ca-caps">
45<title>ca_caps_t</title>
46<programlisting>
47typedef struct ca_caps {
48 unsigned int slot_num; /&#x22C6; total number of CA card and module slots &#x22C6;/
49 unsigned int slot_type; /&#x22C6; OR of all supported types &#x22C6;/
50 unsigned int descr_num; /&#x22C6; total number of descrambler slots (keys) &#x22C6;/
51 unsigned int descr_type;/&#x22C6; OR of all supported types &#x22C6;/
52 } ca_cap_t;
53</programlisting>
54
55</section>
56<section id="ca-msg">
57<title>ca_msg_t</title>
58<programlisting>
59/&#x22C6; a message to/from a CI-CAM &#x22C6;/
60typedef struct ca_msg {
61 unsigned int index;
62 unsigned int type;
63 unsigned int length;
64 unsigned char msg[256];
65} ca_msg_t;
66</programlisting>
67
68</section>
69<section id="ca-descr">
70<title>ca_descr_t</title>
71<programlisting>
72typedef struct ca_descr {
73 unsigned int index;
74 unsigned int parity;
75 unsigned char cw[8];
76} ca_descr_t;
77</programlisting>
78</section>
79
80<section id="ca-pid">
81<title>ca-pid</title>
82<programlisting>
83typedef struct ca_pid {
84 unsigned int pid;
85 int index; /&#x22C6; -1 == disable&#x22C6;/
86} ca_pid_t;
87</programlisting>
88</section></section>
89
90<section id="ca_function_calls">
91<title>CA Function Calls</title>
92
93
94<section id="ca_fopen">
95<title>open()</title>
96<para>DESCRIPTION
97</para>
98<informaltable><tgroup cols="1"><tbody><row><entry
99 align="char">
100<para>This system call opens a named ca device (e.g. /dev/ost/ca) for subsequent use.</para>
101<para>When an open() call has succeeded, the device will be ready for use.
102 The significance of blocking or non-blocking mode is described in the
103 documentation for functions where there is a difference. It does not affect the
104 semantics of the open() call itself. A device opened in blocking mode can later
105 be put into non-blocking mode (and vice versa) using the F_SETFL command
106 of the fcntl system call. This is a standard system call, documented in the Linux
107 manual page for fcntl. Only one user can open the CA Device in O_RDWR
108 mode. All other attempts to open the device in this mode will fail, and an error
109 code will be returned.</para>
110</entry>
111 </row></tbody></tgroup></informaltable>
112<para>SYNOPSIS
113</para>
114<informaltable><tgroup cols="1"><tbody><row><entry
115 align="char">
116<para>int open(const char &#x22C6;deviceName, int flags);</para>
117</entry>
118 </row></tbody></tgroup></informaltable>
119<para>PARAMETERS
120</para>
121<informaltable><tgroup cols="2"><tbody><row><entry
122 align="char">
123<para>const char
124 *deviceName</para>
125</entry><entry
126 align="char">
127<para>Name of specific video device.</para>
128</entry>
129 </row><row><entry
130 align="char">
131<para>int flags</para>
132</entry><entry
133 align="char">
134<para>A bit-wise OR of the following flags:</para>
135</entry>
136 </row><row><entry
137 align="char">
138</entry><entry
139 align="char">
140<para>O_RDONLY read-only access</para>
141</entry>
142 </row><row><entry
143 align="char">
144</entry><entry
145 align="char">
146<para>O_RDWR read/write access</para>
147</entry>
148 </row><row><entry
149 align="char">
150</entry><entry
151 align="char">
152<para>O_NONBLOCK open in non-blocking mode</para>
153</entry>
154 </row><row><entry
155 align="char">
156</entry><entry
157 align="char">
158<para>(blocking mode is the default)</para>
159</entry>
160 </row></tbody></tgroup></informaltable>
161<para>RETURN VALUE</para>
162<informaltable><tgroup cols="2"><tbody><row><entry
163 align="char">
164<para>ENODEV</para>
165</entry><entry
166 align="char">
167<para>Device driver not loaded/available.</para>
168</entry>
169 </row><row><entry
170 align="char">
171<para>EINTERNAL</para>
172</entry><entry
173 align="char">
174<para>Internal error.</para>
175</entry>
176 </row><row><entry
177 align="char">
178<para>EBUSY</para>
179</entry><entry
180 align="char">
181<para>Device or resource busy.</para>
182</entry>
183 </row><row><entry
184 align="char">
185<para>EINVAL</para>
186</entry><entry
187 align="char">
188<para>Invalid argument.</para>
189</entry>
190 </row></tbody></tgroup></informaltable>
191
192</section>
193<section id="ca_fclose">
194<title>close()</title>
195<para>DESCRIPTION
196</para>
197<informaltable><tgroup cols="1"><tbody><row><entry
198 align="char">
199<para>This system call closes a previously opened audio device.</para>
200</entry>
201 </row></tbody></tgroup></informaltable>
202<para>SYNOPSIS
203</para>
204<informaltable><tgroup cols="1"><tbody><row><entry
205 align="char">
206<para>int close(int fd);</para>
207</entry>
208 </row></tbody></tgroup></informaltable>
209<para>PARAMETERS
210</para>
211<informaltable><tgroup cols="2"><tbody><row><entry
212 align="char">
213<para>int fd</para>
214</entry><entry
215 align="char">
216<para>File descriptor returned by a previous call to open().</para>
217</entry>
218 </row></tbody></tgroup></informaltable>
219<para>RETURN VALUE</para>
220<informaltable><tgroup cols="2"><tbody><row><entry
221 align="char">
222<para>EBADF</para>
223</entry><entry
224 align="char">
225<para>fd is not a valid open file descriptor.</para>
226</entry>
227 </row></tbody></tgroup></informaltable>
228 </section>
229
230<section id="CA_RESET"
231role="subsection"><title>CA_RESET</title>
232<para>DESCRIPTION
233</para>
234<informaltable><tgroup cols="1"><tbody><row><entry
235 align="char">
236<para>This ioctl is undocumented. Documentation is welcome.</para>
237</entry>
238 </row></tbody></tgroup></informaltable>
239<para>SYNOPSIS
240</para>
241<informaltable><tgroup cols="1"><tbody><row><entry
242 align="char">
243<para>int ioctl(fd, int request = CA_RESET);
244</para>
245</entry>
246 </row></tbody></tgroup></informaltable>
247<para>PARAMETERS
248</para>
249<informaltable><tgroup cols="2"><tbody><row><entry
250 align="char">
251<para>int fd</para>
252</entry><entry
253 align="char">
254<para>File descriptor returned by a previous call to open().</para>
255</entry>
256 </row><row><entry
257 align="char">
258<para>int request</para>
259</entry><entry
260 align="char">
261<para>Equals CA_RESET for this command.</para>
262</entry>
263 </row></tbody></tgroup></informaltable>
264&return-value-dvb;
265</section>
266
267<section id="CA_GET_CAP"
268role="subsection"><title>CA_GET_CAP</title>
269<para>DESCRIPTION
270</para>
271<informaltable><tgroup cols="1"><tbody><row><entry
272 align="char">
273<para>This ioctl is undocumented. Documentation is welcome.</para>
274</entry>
275 </row></tbody></tgroup></informaltable>
276<para>SYNOPSIS
277</para>
278<informaltable><tgroup cols="1"><tbody><row><entry
279 align="char">
280<para>int ioctl(fd, int request = CA_GET_CAP,
281 ca_caps_t *);</para>
282</entry>
283 </row></tbody></tgroup></informaltable>
284<para>PARAMETERS
285</para>
286<informaltable><tgroup cols="2"><tbody><row><entry
287 align="char">
288<para>int fd</para>
289</entry><entry
290 align="char">
291<para>File descriptor returned by a previous call to open().</para>
292</entry>
293 </row><row><entry
294 align="char">
295<para>int request</para>
296</entry><entry
297 align="char">
298<para>Equals CA_GET_CAP for this command.</para>
299</entry>
300 </row><row><entry
301 align="char">
302<para>ca_caps_t *
303</para>
304</entry><entry
305 align="char">
306<para>Undocumented.</para>
307</entry>
308 </row></tbody></tgroup></informaltable>
309&return-value-dvb;
310</section>
311
312<section id="CA_GET_SLOT_INFO"
313role="subsection"><title>CA_GET_SLOT_INFO</title>
314<para>DESCRIPTION
315</para>
316<informaltable><tgroup cols="1"><tbody><row><entry
317 align="char">
318<para>This ioctl is undocumented. Documentation is welcome.</para>
319</entry>
320 </row></tbody></tgroup></informaltable>
321<para>SYNOPSIS
322</para>
323<informaltable><tgroup cols="1"><tbody><row><entry
324 align="char">
325<para>int ioctl(fd, int request = CA_GET_SLOT_INFO,
326 ca_slot_info_t *);</para>
327</entry>
328 </row></tbody></tgroup></informaltable>
329<para>PARAMETERS
330</para>
331<informaltable><tgroup cols="2"><tbody><row><entry
332 align="char">
333<para>int fd</para>
334</entry><entry
335 align="char">
336<para>File descriptor returned by a previous call to open().</para>
337</entry>
338 </row><row><entry
339 align="char">
340<para>int request</para>
341</entry><entry
342 align="char">
343<para>Equals CA_GET_SLOT_INFO for this command.</para>
344</entry>
345 </row><row><entry
346 align="char">
347<para>ca_slot_info_t *
348</para>
349</entry><entry
350 align="char">
351<para>Undocumented.</para>
352</entry>
353 </row></tbody></tgroup></informaltable>
354&return-value-dvb;
355</section>
356
357<section id="CA_GET_DESCR_INFO"
358role="subsection"><title>CA_GET_DESCR_INFO</title>
359<para>DESCRIPTION
360</para>
361<informaltable><tgroup cols="1"><tbody><row><entry
362 align="char">
363<para>This ioctl is undocumented. Documentation is welcome.</para>
364</entry>
365 </row></tbody></tgroup></informaltable>
366<para>SYNOPSIS
367</para>
368<informaltable><tgroup cols="1"><tbody><row><entry
369 align="char">
370<para>int ioctl(fd, int request = CA_GET_DESCR_INFO,
371 ca_descr_info_t *);</para>
372</entry>
373 </row></tbody></tgroup></informaltable>
374<para>PARAMETERS
375</para>
376<informaltable><tgroup cols="2"><tbody><row><entry
377 align="char">
378<para>int fd</para>
379</entry><entry
380 align="char">
381<para>File descriptor returned by a previous call to open().</para>
382</entry>
383 </row><row><entry
384 align="char">
385<para>int request</para>
386</entry><entry
387 align="char">
388<para>Equals CA_GET_DESCR_INFO for this command.</para>
389</entry>
390 </row><row><entry
391 align="char">
392<para>ca_descr_info_t *
393</para>
394</entry><entry
395 align="char">
396<para>Undocumented.</para>
397</entry>
398 </row></tbody></tgroup></informaltable>
399&return-value-dvb;
400</section>
401
402<section id="CA_GET_MSG"
403role="subsection"><title>CA_GET_MSG</title>
404<para>DESCRIPTION
405</para>
406<informaltable><tgroup cols="1"><tbody><row><entry
407 align="char">
408<para>This ioctl is undocumented. Documentation is welcome.</para>
409</entry>
410 </row></tbody></tgroup></informaltable>
411<para>SYNOPSIS
412</para>
413<informaltable><tgroup cols="1"><tbody><row><entry
414 align="char">
415<para>int ioctl(fd, int request = CA_GET_MSG,
416 ca_msg_t *);</para>
417</entry>
418 </row></tbody></tgroup></informaltable>
419<para>PARAMETERS
420</para>
421<informaltable><tgroup cols="2"><tbody><row><entry
422 align="char">
423<para>int fd</para>
424</entry><entry
425 align="char">
426<para>File descriptor returned by a previous call to open().</para>
427</entry>
428 </row><row><entry
429 align="char">
430<para>int request</para>
431</entry><entry
432 align="char">
433<para>Equals CA_GET_MSG for this command.</para>
434</entry>
435 </row><row><entry
436 align="char">
437<para>ca_msg_t *
438</para>
439</entry><entry
440 align="char">
441<para>Undocumented.</para>
442</entry>
443 </row></tbody></tgroup></informaltable>
444&return-value-dvb;
445</section>
446
447<section id="CA_SEND_MSG"
448role="subsection"><title>CA_SEND_MSG</title>
449<para>DESCRIPTION
450</para>
451<informaltable><tgroup cols="1"><tbody><row><entry
452 align="char">
453<para>This ioctl is undocumented. Documentation is welcome.</para>
454</entry>
455 </row></tbody></tgroup></informaltable>
456<para>SYNOPSIS
457</para>
458<informaltable><tgroup cols="1"><tbody><row><entry
459 align="char">
460<para>int ioctl(fd, int request = CA_SEND_MSG,
461 ca_msg_t *);</para>
462</entry>
463 </row></tbody></tgroup></informaltable>
464<para>PARAMETERS
465</para>
466<informaltable><tgroup cols="2"><tbody><row><entry
467 align="char">
468<para>int fd</para>
469</entry><entry
470 align="char">
471<para>File descriptor returned by a previous call to open().</para>
472</entry>
473 </row><row><entry
474 align="char">
475<para>int request</para>
476</entry><entry
477 align="char">
478<para>Equals CA_SEND_MSG for this command.</para>
479</entry>
480 </row><row><entry
481 align="char">
482<para>ca_msg_t *
483</para>
484</entry><entry
485 align="char">
486<para>Undocumented.</para>
487</entry>
488 </row></tbody></tgroup></informaltable>
489&return-value-dvb;
490</section>
491
492<section id="CA_SET_DESCR"
493role="subsection"><title>CA_SET_DESCR</title>
494<para>DESCRIPTION
495</para>
496<informaltable><tgroup cols="1"><tbody><row><entry
497 align="char">
498<para>This ioctl is undocumented. Documentation is welcome.</para>
499</entry>
500 </row></tbody></tgroup></informaltable>
501<para>SYNOPSIS
502</para>
503<informaltable><tgroup cols="1"><tbody><row><entry
504 align="char">
505<para>int ioctl(fd, int request = CA_SET_DESCR,
506 ca_descr_t *);</para>
507</entry>
508 </row></tbody></tgroup></informaltable>
509<para>PARAMETERS
510</para>
511<informaltable><tgroup cols="2"><tbody><row><entry
512 align="char">
513<para>int fd</para>
514</entry><entry
515 align="char">
516<para>File descriptor returned by a previous call to open().</para>
517</entry>
518 </row><row><entry
519 align="char">
520<para>int request</para>
521</entry><entry
522 align="char">
523<para>Equals CA_SET_DESCR for this command.</para>
524</entry>
525 </row><row><entry
526 align="char">
527<para>ca_descr_t *
528</para>
529</entry><entry
530 align="char">
531<para>Undocumented.</para>
532</entry>
533 </row></tbody></tgroup></informaltable>
534&return-value-dvb;
535</section>
536
537<section id="CA_SET_PID"
538role="subsection"><title>CA_SET_PID</title>
539<para>DESCRIPTION
540</para>
541<informaltable><tgroup cols="1"><tbody><row><entry
542 align="char">
543<para>This ioctl is undocumented. Documentation is welcome.</para>
544</entry>
545 </row></tbody></tgroup></informaltable>
546<para>SYNOPSIS
547</para>
548<informaltable><tgroup cols="1"><tbody><row><entry
549 align="char">
550<para>int ioctl(fd, int request = CA_SET_PID,
551 ca_pid_t *);</para>
552</entry>
553 </row></tbody></tgroup></informaltable>
554<para>PARAMETERS
555</para>
556<informaltable><tgroup cols="2"><tbody><row><entry
557 align="char">
558<para>int fd</para>
559</entry><entry
560 align="char">
561<para>File descriptor returned by a previous call to open().</para>
562</entry>
563 </row><row><entry
564 align="char">
565<para>int request</para>
566</entry><entry
567 align="char">
568<para>Equals CA_SET_PID for this command.</para>
569</entry>
570 </row><row><entry
571 align="char">
572<para>ca_pid_t *
573</para>
574</entry><entry
575 align="char">
576<para>Undocumented.</para>
577</entry>
578 </row></tbody></tgroup></informaltable>
579&return-value-dvb;
580</section>
581
582</section>
Documentation/DocBook/media/dvb/demux.xml+0−1162
@@ -1,1162 +0,0 @@
1<title>DVB Demux Device</title>
2
3<para>The DVB demux device controls the filters of the DVB hardware/software. It can be
4accessed through <constant>/dev/adapter?/demux?</constant>. Data types and and ioctl definitions can be
5accessed by including <constant>linux/dvb/dmx.h</constant> in your application.
6</para>
7<section id="dmx_types">
8<title>Demux Data Types</title>
9
10<section id="dmx-output-t">
11<title>Output for the demux</title>
12
13<table pgwide="1" frame="none" id="dmx-output">
14 <title>enum dmx_output</title>
15 <tgroup cols="2">
16 &cs-def;
17 <thead>
18 <row>
19 <entry>ID</entry>
20 <entry>Description</entry>
21 </row>
22 </thead>
23 <tbody valign="top">
24 <row>
25 <entry align="char" id="DMX-OUT-DECODER">DMX_OUT_DECODER</entry>
26 <entry>Streaming directly to decoder.</entry>
27 </row><row>
28 <entry align="char" id="DMX-OUT-TAP">DMX_OUT_TAP</entry>
29 <entry>Output going to a memory buffer (to be retrieved via the
30 read command). Delivers the stream output to the demux
31 device on which the ioctl is called.</entry>
32 </row><row>
33 <entry align="char" id="DMX-OUT-TS-TAP">DMX_OUT_TS_TAP</entry>
34 <entry>Output multiplexed into a new TS (to be retrieved by
35 reading from the logical DVR device). Routes output to the
36 logical DVR device <constant>/dev/dvb/adapter?/dvr?</constant>,
37 which delivers a TS multiplexed from all filters for which
38 <constant>DMX_OUT_TS_TAP</constant> was specified.</entry>
39 </row><row>
40 <entry align="char" id="DMX-OUT-TSDEMUX-TAP">DMX_OUT_TSDEMUX_TAP</entry>
41 <entry>Like &DMX-OUT-TS-TAP; but retrieved from the DMX
42 device.</entry>
43 </row>
44 </tbody>
45 </tgroup>
46</table>
47
48</section>
49
50<section id="dmx-input-t">
51<title>dmx_input_t</title>
52<programlisting>
53typedef enum
54{
55 DMX_IN_FRONTEND, /&#x22C6; Input from a front-end device. &#x22C6;/
56 DMX_IN_DVR /&#x22C6; Input from the logical DVR device. &#x22C6;/
57} dmx_input_t;
58</programlisting>
59</section>
60
61<section id="dmx-pes-type-t">
62<title>dmx_pes_type_t</title>
63<programlisting>
64typedef enum
65{
66 DMX_PES_AUDIO0,
67 DMX_PES_VIDEO0,
68 DMX_PES_TELETEXT0,
69 DMX_PES_SUBTITLE0,
70 DMX_PES_PCR0,
71
72 DMX_PES_AUDIO1,
73 DMX_PES_VIDEO1,
74 DMX_PES_TELETEXT1,
75 DMX_PES_SUBTITLE1,
76 DMX_PES_PCR1,
77
78 DMX_PES_AUDIO2,
79 DMX_PES_VIDEO2,
80 DMX_PES_TELETEXT2,
81 DMX_PES_SUBTITLE2,
82 DMX_PES_PCR2,
83
84 DMX_PES_AUDIO3,
85 DMX_PES_VIDEO3,
86 DMX_PES_TELETEXT3,
87 DMX_PES_SUBTITLE3,
88 DMX_PES_PCR3,
89
90 DMX_PES_OTHER
91} dmx_pes_type_t;
92</programlisting>
93</section>
94
95<section id="dmx-filter">
96<title>struct dmx_filter</title>
97 <programlisting>
98 typedef struct dmx_filter
99{
100 __u8 filter[DMX_FILTER_SIZE];
101 __u8 mask[DMX_FILTER_SIZE];
102 __u8 mode[DMX_FILTER_SIZE];
103} dmx_filter_t;
104</programlisting>
105</section>
106
107<section id="dmx-sct-filter-params">
108<title>struct dmx_sct_filter_params</title>
109<programlisting>
110struct dmx_sct_filter_params
111{
112 __u16 pid;
113 dmx_filter_t filter;
114 __u32 timeout;
115 __u32 flags;
116#define DMX_CHECK_CRC 1
117#define DMX_ONESHOT 2
118#define DMX_IMMEDIATE_START 4
119#define DMX_KERNEL_CLIENT 0x8000
120};
121</programlisting>
122</section>
123
124<section id="dmx-pes-filter-params">
125<title>struct dmx_pes_filter_params</title>
126<programlisting>
127struct dmx_pes_filter_params
128{
129 __u16 pid;
130 dmx_input_t input;
131 dmx_output_t output;
132 dmx_pes_type_t pes_type;
133 __u32 flags;
134};
135</programlisting>
136</section>
137
138<section id="dmx-event">
139<title>struct dmx_event</title>
140 <programlisting>
141 struct dmx_event
142 {
143 dmx_event_t event;
144 time_t timeStamp;
145 union
146 {
147 dmx_scrambling_status_t scrambling;
148 } u;
149 };
150</programlisting>
151</section>
152
153<section id="dmx-stc">
154<title>struct dmx_stc</title>
155<programlisting>
156struct dmx_stc {
157 unsigned int num; /&#x22C6; input : which STC? 0..N &#x22C6;/
158 unsigned int base; /&#x22C6; output: divisor for stc to get 90 kHz clock &#x22C6;/
159 __u64 stc; /&#x22C6; output: stc in 'base'&#x22C6;90 kHz units &#x22C6;/
160};
161</programlisting>
162</section>
163
164<section id="dmx-caps">
165<title>struct dmx_caps</title>
166<programlisting>
167 typedef struct dmx_caps {
168 __u32 caps;
169 int num_decoders;
170} dmx_caps_t;
171</programlisting>
172</section>
173
174<section id="dmx-source-t">
175<title>enum dmx_source_t</title>
176<programlisting>
177typedef enum {
178 DMX_SOURCE_FRONT0 = 0,
179 DMX_SOURCE_FRONT1,
180 DMX_SOURCE_FRONT2,
181 DMX_SOURCE_FRONT3,
182 DMX_SOURCE_DVR0 = 16,
183 DMX_SOURCE_DVR1,
184 DMX_SOURCE_DVR2,
185 DMX_SOURCE_DVR3
186} dmx_source_t;
187</programlisting>
188</section>
189
190</section>
191<section id="dmx_fcalls">
192<title>Demux Function Calls</title>
193
194<section id="dmx_fopen">
195<title>open()</title>
196<para>DESCRIPTION
197</para>
198<informaltable><tgroup cols="1"><tbody><row><entry
199 align="char">
200<para>This system call, used with a device name of /dev/dvb/adapter0/demux0,
201 allocates a new filter and returns a handle which can be used for subsequent
202 control of that filter. This call has to be made for each filter to be used, i.e. every
203 returned file descriptor is a reference to a single filter. /dev/dvb/adapter0/dvr0
204 is a logical device to be used for retrieving Transport Streams for digital
205 video recording. When reading from this device a transport stream containing
206 the packets from all PES filters set in the corresponding demux device
207 (/dev/dvb/adapter0/demux0) having the output set to DMX_OUT_TS_TAP. A
208 recorded Transport Stream is replayed by writing to this device. </para>
209<para>The significance of blocking or non-blocking mode is described in the
210 documentation for functions where there is a difference. It does not affect the
211 semantics of the open() call itself. A device opened in blocking mode can later
212 be put into non-blocking mode (and vice versa) using the F_SETFL command
213 of the fcntl system call.</para>
214</entry>
215 </row></tbody></tgroup></informaltable>
216<para>SYNOPSIS
217</para>
218<informaltable><tgroup cols="1"><tbody><row><entry
219 align="char">
220<para>int open(const char &#x22C6;deviceName, int flags);</para>
221</entry>
222 </row></tbody></tgroup></informaltable>
223<para>PARAMETERS
224</para>
225<informaltable><tgroup cols="2"><tbody><row><entry
226 align="char">
227<para>const char
228 *deviceName</para>
229</entry><entry
230 align="char">
231<para>Name of demux device.</para>
232</entry>
233 </row><row><entry
234 align="char">
235<para>int flags</para>
236</entry><entry
237 align="char">
238<para>A bit-wise OR of the following flags:</para>
239</entry>
240 </row><row><entry
241 align="char">
242</entry><entry
243 align="char">
244<para>O_RDWR read/write access</para>
245</entry>
246 </row><row><entry
247 align="char">
248</entry><entry
249 align="char">
250<para>O_NONBLOCK open in non-blocking mode</para>
251</entry>
252 </row><row><entry
253 align="char">
254</entry><entry
255 align="char">
256<para>(blocking mode is the default)</para>
257</entry>
258 </row></tbody></tgroup></informaltable>
259<para>RETURN VALUE</para>
260<informaltable><tgroup cols="2"><tbody><row><entry
261 align="char">
262<para>ENODEV</para>
263</entry><entry
264 align="char">
265<para>Device driver not loaded/available.</para>
266</entry>
267 </row><row><entry
268 align="char">
269<para>EINVAL</para>
270</entry><entry
271 align="char">
272<para>Invalid argument.</para>
273</entry>
274 </row><row><entry
275 align="char">
276<para>EMFILE</para>
277</entry><entry
278 align="char">
279<para>&#8220;Too many open files&#8221;, i.e. no more filters available.</para>
280</entry>
281 </row><row><entry
282 align="char">
283<para>ENOMEM</para>
284</entry><entry
285 align="char">
286<para>The driver failed to allocate enough memory.</para>
287</entry>
288 </row></tbody></tgroup></informaltable>
289</section>
290
291<section id="dmx_fclose">
292<title>close()</title>
293<para>DESCRIPTION
294</para>
295<informaltable><tgroup cols="1"><tbody><row><entry
296 align="char">
297<para>This system call deactivates and deallocates a filter that was previously
298 allocated via the open() call.</para>
299</entry>
300 </row></tbody></tgroup></informaltable>
301<para>SYNOPSIS
302</para>
303<informaltable><tgroup cols="1"><tbody><row><entry
304 align="char">
305<para>int close(int fd);</para>
306</entry>
307 </row></tbody></tgroup></informaltable>
308<para>PARAMETERS
309</para>
310<informaltable><tgroup cols="2"><tbody><row><entry
311 align="char">
312<para>int fd</para>
313</entry><entry
314 align="char">
315<para>File descriptor returned by a previous call to open().</para>
316</entry>
317 </row></tbody></tgroup></informaltable>
318<para>RETURN VALUE</para>
319<informaltable><tgroup cols="2"><tbody><row><entry
320 align="char">
321<para>EBADF</para>
322</entry><entry
323 align="char">
324<para>fd is not a valid open file descriptor.</para>
325</entry>
326 </row></tbody></tgroup></informaltable>
327</section>
328
329<section id="dmx_fread">
330<title>read()</title>
331<para>DESCRIPTION
332</para>
333<informaltable><tgroup cols="1"><tbody><row><entry
334 align="char">
335<para>This system call returns filtered data, which might be section or PES data. The
336 filtered data is transferred from the driver&#8217;s internal circular buffer to buf. The
337 maximum amount of data to be transferred is implied by count.</para>
338</entry>
339 </row><row><entry
340 align="char">
341<para>When returning section data the driver always tries to return a complete single
342 section (even though buf would provide buffer space for more data). If the size
343 of the buffer is smaller than the section as much as possible will be returned,
344 and the remaining data will be provided in subsequent calls.</para>
345</entry>
346 </row><row><entry
347 align="char">
348<para>The size of the internal buffer is 2 * 4096 bytes (the size of two maximum
349 sized sections) by default. The size of this buffer may be changed by using the
350 DMX_SET_BUFFER_SIZE function. If the buffer is not large enough, or if
351 the read operations are not performed fast enough, this may result in a buffer
352 overflow error. In this case EOVERFLOW will be returned, and the circular
353 buffer will be emptied. This call is blocking if there is no data to return, i.e. the
354 process will be put to sleep waiting for data, unless the O_NONBLOCK flag
355 is specified.</para>
356</entry>
357 </row><row><entry
358 align="char">
359<para>Note that in order to be able to read, the filtering process has to be started
360 by defining either a section or a PES filter by means of the ioctl functions,
361 and then starting the filtering process via the DMX_START ioctl function
362 or by setting the DMX_IMMEDIATE_START flag. If the reading is done
363 from a logical DVR demux device, the data will constitute a Transport Stream
364 including the packets from all PES filters in the corresponding demux device
365 /dev/dvb/adapter0/demux0 having the output set to DMX_OUT_TS_TAP.</para>
366</entry>
367 </row></tbody></tgroup></informaltable>
368<para>SYNOPSIS
369</para>
370<informaltable><tgroup cols="1"><tbody><row><entry
371 align="char">
372<para>size_t read(int fd, void &#x22C6;buf, size_t count);</para>
373</entry>
374 </row></tbody></tgroup></informaltable>
375<para>PARAMETERS
376</para>
377<informaltable><tgroup cols="2"><tbody><row><entry
378 align="char">
379<para>int fd</para>
380</entry><entry
381 align="char">
382<para>File descriptor returned by a previous call to open().</para>
383</entry>
384 </row><row><entry
385 align="char">
386<para>void *buf</para>
387</entry><entry
388 align="char">
389<para>Pointer to the buffer to be used for returned filtered data.</para>
390</entry>
391 </row><row><entry
392 align="char">
393<para>size_t count</para>
394</entry><entry
395 align="char">
396<para>Size of buf.</para>
397</entry>
398 </row></tbody></tgroup></informaltable>
399<para>RETURN VALUE</para>
400<informaltable><tgroup cols="2"><tbody><row><entry
401 align="char">
402<para>EWOULDBLOCK</para>
403</entry><entry
404 align="char">
405<para>No data to return and O_NONBLOCK was specified.</para>
406</entry>
407 </row><row><entry
408 align="char">
409<para>EBADF</para>
410</entry><entry
411 align="char">
412<para>fd is not a valid open file descriptor.</para>
413</entry>
414 </row><row><entry
415 align="char">
416<para>ECRC</para>
417</entry><entry
418 align="char">
419<para>Last section had a CRC error - no data returned. The
420 buffer is flushed.</para>
421</entry>
422 </row><row><entry
423 align="char">
424<para>EOVERFLOW</para>
425</entry><entry
426 align="char">
427</entry>
428 </row><row><entry
429 align="char">
430</entry><entry
431 align="char">
432<para>The filtered data was not read from the buffer in due
433 time, resulting in non-read data being lost. The buffer is
434 flushed.</para>
435</entry>
436 </row><row><entry
437 align="char">
438<para>ETIMEDOUT</para>
439</entry><entry
440 align="char">
441<para>The section was not loaded within the stated timeout
442 period. See ioctl DMX_SET_FILTER for how to set a
443 timeout.</para>
444</entry>
445 </row><row><entry
446 align="char">
447<para>EFAULT</para>
448</entry><entry
449 align="char">
450<para>The driver failed to write to the callers buffer due to an
451 invalid *buf pointer.</para>
452</entry>
453 </row></tbody></tgroup></informaltable>
454</section>
455
456<section id="dmx_fwrite">
457<title>write()</title>
458<para>DESCRIPTION
459</para>
460<informaltable><tgroup cols="1"><tbody><row><entry
461 align="char">
462<para>This system call is only provided by the logical device /dev/dvb/adapter0/dvr0,
463 associated with the physical demux device that provides the actual DVR
464 functionality. It is used for replay of a digitally recorded Transport Stream.
465 Matching filters have to be defined in the corresponding physical demux
466 device, /dev/dvb/adapter0/demux0. The amount of data to be transferred is
467 implied by count.</para>
468</entry>
469 </row></tbody></tgroup></informaltable>
470<para>SYNOPSIS
471</para>
472<informaltable><tgroup cols="1"><tbody><row><entry
473 align="char">
474<para>ssize_t write(int fd, const void &#x22C6;buf, size_t
475 count);</para>
476</entry>
477 </row></tbody></tgroup></informaltable>
478<para>PARAMETERS
479</para>
480<informaltable><tgroup cols="2"><tbody><row><entry
481 align="char">
482<para>int fd</para>
483</entry><entry
484 align="char">
485<para>File descriptor returned by a previous call to open().</para>
486</entry>
487 </row><row><entry
488 align="char">
489<para>void *buf</para>
490</entry><entry
491 align="char">
492<para>Pointer to the buffer containing the Transport Stream.</para>
493</entry>
494 </row><row><entry
495 align="char">
496<para>size_t count</para>
497</entry><entry
498 align="char">
499<para>Size of buf.</para>
500</entry>
501 </row></tbody></tgroup></informaltable>
502<para>RETURN VALUE</para>
503<informaltable><tgroup cols="2"><tbody><row><entry
504 align="char">
505<para>EWOULDBLOCK</para>
506</entry><entry
507 align="char">
508<para>No data was written. This
509 might happen if O_NONBLOCK was specified and there
510 is no more buffer space available (if O_NONBLOCK is
511 not specified the function will block until buffer space is
512 available).</para>
513</entry>
514 </row><row><entry
515 align="char">
516<para>EBUSY</para>
517</entry><entry
518 align="char">
519<para>This error code indicates that there are conflicting
520 requests. The corresponding demux device is setup to
521 receive data from the front- end. Make sure that these
522 filters are stopped and that the filters with input set to
523 DMX_IN_DVR are started.</para>
524</entry>
525 </row><row><entry
526 align="char">
527<para>EBADF</para>
528</entry><entry
529 align="char">
530<para>fd is not a valid open file descriptor.</para>
531</entry>
532 </row></tbody></tgroup></informaltable>
533</section>
534
535<section id="DMX_START">
536<title>DMX_START</title>
537<para>DESCRIPTION
538</para>
539<informaltable><tgroup cols="1"><tbody><row><entry
540 align="char">
541<para>This ioctl call is used to start the actual filtering operation defined via the ioctl
542 calls DMX_SET_FILTER or DMX_SET_PES_FILTER.</para>
543</entry>
544 </row></tbody></tgroup></informaltable>
545<para>SYNOPSIS
546</para>
547<informaltable><tgroup cols="1"><tbody><row><entry
548 align="char">
549<para>int ioctl( int fd, int request = DMX_START);</para>
550</entry>
551 </row></tbody></tgroup></informaltable>
552<para>PARAMETERS
553</para>
554<informaltable><tgroup cols="2"><tbody><row><entry
555 align="char">
556<para>int fd</para>
557</entry><entry
558 align="char">
559<para>File descriptor returned by a previous call to open().</para>
560</entry>
561 </row><row><entry
562 align="char">
563<para>int request</para>
564</entry><entry
565 align="char">
566<para>Equals DMX_START for this command.</para>
567</entry>
568 </row></tbody></tgroup></informaltable>
569&return-value-dvb;
570<informaltable><tgroup cols="2"><tbody><row><entry
571 align="char">
572<para>EINVAL</para>
573</entry><entry
574 align="char">
575<para>Invalid argument, i.e. no filtering parameters provided via
576 the DMX_SET_FILTER or DMX_SET_PES_FILTER
577 functions.</para>
578</entry>
579 </row><row><entry
580 align="char">
581<para>EBUSY</para>
582</entry><entry
583 align="char">
584<para>This error code indicates that there are conflicting
585 requests. There are active filters filtering data from
586 another input source. Make sure that these filters are
587 stopped before starting this filter.</para>
588</entry>
589 </row></tbody></tgroup></informaltable>
590</section>
591
592<section id="DMX_STOP">
593<title>DMX_STOP</title>
594<para>DESCRIPTION
595</para>
596<informaltable><tgroup cols="1"><tbody><row><entry
597 align="char">
598<para>This ioctl call is used to stop the actual filtering operation defined via the
599 ioctl calls DMX_SET_FILTER or DMX_SET_PES_FILTER and started via
600 the DMX_START command.</para>
601</entry>
602 </row></tbody></tgroup></informaltable>
603<para>SYNOPSIS
604</para>
605<informaltable><tgroup cols="1"><tbody><row><entry
606 align="char">
607<para>int ioctl( int fd, int request = DMX_STOP);</para>
608</entry>
609 </row></tbody></tgroup></informaltable>
610<para>PARAMETERS
611</para>
612<informaltable><tgroup cols="2"><tbody><row><entry
613 align="char">
614<para>int fd</para>
615</entry><entry
616 align="char">
617<para>File descriptor returned by a previous call to open().</para>
618</entry>
619 </row><row><entry
620 align="char">
621<para>int request</para>
622</entry><entry
623 align="char">
624<para>Equals DMX_STOP for this command.</para>
625</entry>
626 </row></tbody></tgroup></informaltable>
627&return-value-dvb;
628</section>
629
630<section id="DMX_SET_FILTER">
631<title>DMX_SET_FILTER</title>
632<para>DESCRIPTION
633</para>
634<informaltable><tgroup cols="1"><tbody><row><entry
635 align="char">
636<para>This ioctl call sets up a filter according to the filter and mask parameters
637 provided. A timeout may be defined stating number of seconds to wait for a
638 section to be loaded. A value of 0 means that no timeout should be applied.
639 Finally there is a flag field where it is possible to state whether a section should
640 be CRC-checked, whether the filter should be a &#8221;one-shot&#8221; filter, i.e. if the
641 filtering operation should be stopped after the first section is received, and
642 whether the filtering operation should be started immediately (without waiting
643 for a DMX_START ioctl call). If a filter was previously set-up, this filter will
644 be canceled, and the receive buffer will be flushed.</para>
645</entry>
646 </row></tbody></tgroup></informaltable>
647<para>SYNOPSIS
648</para>
649<informaltable><tgroup cols="1"><tbody><row><entry
650 align="char">
651<para>int ioctl( int fd, int request = DMX_SET_FILTER,
652 struct dmx_sct_filter_params &#x22C6;params);</para>
653</entry>
654 </row></tbody></tgroup></informaltable>
655<para>PARAMETERS
656</para>
657<informaltable><tgroup cols="2"><tbody><row><entry
658 align="char">
659<para>int fd</para>
660</entry><entry
661 align="char">
662<para>File descriptor returned by a previous call to open().</para>
663</entry>
664 </row><row><entry
665 align="char">
666<para>int request</para>
667</entry><entry
668 align="char">
669<para>Equals DMX_SET_FILTER for this command.</para>
670</entry>
671 </row><row><entry
672 align="char">
673<para>struct
674 dmx_sct_filter_params
675 *params</para>
676</entry><entry
677 align="char">
678<para>Pointer to structure containing filter parameters.</para>
679</entry>
680 </row></tbody></tgroup></informaltable>
681&return-value-dvb;
682</section>
683
684<section id="DMX_SET_PES_FILTER">
685<title>DMX_SET_PES_FILTER</title>
686<para>DESCRIPTION
687</para>
688<informaltable><tgroup cols="1"><tbody><row><entry
689 align="char">
690<para>This ioctl call sets up a PES filter according to the parameters provided. By a
691 PES filter is meant a filter that is based just on the packet identifier (PID), i.e.
692 no PES header or payload filtering capability is supported.</para>
693</entry>
694 </row><row><entry
695 align="char">
696<para>The transport stream destination for the filtered output may be set. Also the
697 PES type may be stated in order to be able to e.g. direct a video stream directly
698 to the video decoder. Finally there is a flag field where it is possible to state
699 whether the filtering operation should be started immediately (without waiting
700 for a DMX_START ioctl call). If a filter was previously set-up, this filter will
701 be cancelled, and the receive buffer will be flushed.</para>
702</entry>
703 </row></tbody></tgroup></informaltable>
704<para>SYNOPSIS
705</para>
706<informaltable><tgroup cols="1"><tbody><row><entry
707 align="char">
708<para>int ioctl( int fd, int request = DMX_SET_PES_FILTER,
709 struct dmx_pes_filter_params &#x22C6;params);</para>
710</entry>
711 </row></tbody></tgroup></informaltable>
712<para>PARAMETERS
713</para>
714<informaltable><tgroup cols="2"><tbody><row><entry
715 align="char">
716<para>int fd</para>
717</entry><entry
718 align="char">
719<para>File descriptor returned by a previous call to open().</para>
720</entry>
721 </row><row><entry
722 align="char">
723<para>int request</para>
724</entry><entry
725 align="char">
726<para>Equals DMX_SET_PES_FILTER for this command.</para>
727</entry>
728 </row><row><entry
729 align="char">
730<para>struct
731 dmx_pes_filter_params
732 *params</para>
733</entry><entry
734 align="char">
735<para>Pointer to structure containing filter parameters.</para>
736</entry>
737 </row></tbody></tgroup></informaltable>
738&return-value-dvb;
739<informaltable><tgroup cols="2"><tbody><row><entry
740 align="char">
741<para>EBUSY</para>
742</entry><entry
743 align="char">
744<para>This error code indicates that there are conflicting
745 requests. There are active filters filtering data from
746 another input source. Make sure that these filters are
747 stopped before starting this filter.</para>
748</entry>
749 </row></tbody></tgroup></informaltable>
750</section>
751
752<section id="DMX_SET_BUFFER_SIZE">
753<title>DMX_SET_BUFFER_SIZE</title>
754<para>DESCRIPTION
755</para>
756<informaltable><tgroup cols="1"><tbody><row><entry
757 align="char">
758<para>This ioctl call is used to set the size of the circular buffer used for filtered data.
759 The default size is two maximum sized sections, i.e. if this function is not called
760 a buffer size of 2 * 4096 bytes will be used.</para>
761</entry>
762 </row></tbody></tgroup></informaltable>
763<para>SYNOPSIS
764</para>
765<informaltable><tgroup cols="1"><tbody><row><entry
766 align="char">
767<para>int ioctl( int fd, int request =
768 DMX_SET_BUFFER_SIZE, unsigned long size);</para>
769</entry>
770 </row></tbody></tgroup></informaltable>
771<para>PARAMETERS
772</para>
773<informaltable><tgroup cols="2"><tbody><row><entry
774 align="char">
775<para>int fd</para>
776</entry><entry
777 align="char">
778<para>File descriptor returned by a previous call to open().</para>
779</entry>
780 </row><row><entry
781 align="char">
782<para>int request</para>
783</entry><entry
784 align="char">
785<para>Equals DMX_SET_BUFFER_SIZE for this command.</para>
786</entry>
787 </row><row><entry
788 align="char">
789<para>unsigned long size</para>
790</entry><entry
791 align="char">
792<para>Size of circular buffer.</para>
793</entry>
794 </row></tbody></tgroup></informaltable>
795&return-value-dvb;
796</section>
797
798<section id="DMX_GET_EVENT">
799<title>DMX_GET_EVENT</title>
800<para>DESCRIPTION
801</para>
802<informaltable><tgroup cols="1"><tbody><row><entry
803 align="char">
804<para>This ioctl call returns an event if available. If an event is not available,
805 the behavior depends on whether the device is in blocking or non-blocking
806 mode. In the latter case, the call fails immediately with errno set to
807 EWOULDBLOCK. In the former case, the call blocks until an event becomes
808 available.</para>
809</entry>
810 </row><row><entry
811 align="char">
812<para>The standard Linux poll() and/or select() system calls can be used with the
813 device file descriptor to watch for new events. For select(), the file descriptor
814 should be included in the exceptfds argument, and for poll(), POLLPRI should
815 be specified as the wake-up condition. Only the latest event for each filter is
816 saved.</para>
817</entry>
818 </row></tbody></tgroup></informaltable>
819<para>SYNOPSIS
820</para>
821<informaltable><tgroup cols="1"><tbody><row><entry
822 align="char">
823<para>int ioctl( int fd, int request = DMX_GET_EVENT,
824 struct dmx_event &#x22C6;ev);</para>
825</entry>
826 </row></tbody></tgroup></informaltable>
827<para>PARAMETERS
828</para>
829<informaltable><tgroup cols="2"><tbody><row><entry
830 align="char">
831<para>int fd</para>
832</entry><entry
833 align="char">
834<para>File descriptor returned by a previous call to open().</para>
835</entry>
836 </row><row><entry
837 align="char">
838<para>int request</para>
839</entry><entry
840 align="char">
841<para>Equals DMX_GET_EVENT for this command.</para>
842</entry>
843 </row><row><entry
844 align="char">
845<para>struct dmx_event *ev</para>
846</entry><entry
847 align="char">
848<para>Pointer to the location where the event is to be stored.</para>
849</entry>
850 </row></tbody></tgroup></informaltable>
851&return-value-dvb;
852<informaltable><tgroup cols="2"><tbody><row><entry
853 align="char">
854<para>EWOULDBLOCK</para>
855</entry><entry
856 align="char">
857<para>There is no event pending, and the device is in
858 non-blocking mode.</para>
859</entry>
860 </row></tbody></tgroup></informaltable>
861</section>
862
863<section id="DMX_GET_STC">
864<title>DMX_GET_STC</title>
865<para>DESCRIPTION
866</para>
867<informaltable><tgroup cols="1"><tbody><row><entry
868 align="char">
869<para>This ioctl call returns the current value of the system time counter (which is driven
870 by a PES filter of type DMX_PES_PCR). Some hardware supports more than one
871 STC, so you must specify which one by setting the num field of stc before the ioctl
872 (range 0...n). The result is returned in form of a ratio with a 64 bit numerator
873 and a 32 bit denominator, so the real 90kHz STC value is stc-&#x003E;stc /
874 stc-&#x003E;base
875 .</para>
876</entry>
877 </row></tbody></tgroup></informaltable>
878<para>SYNOPSIS
879</para>
880<informaltable><tgroup cols="1"><tbody><row><entry
881 align="char">
882<para>int ioctl( int fd, int request = DMX_GET_STC, struct
883 dmx_stc &#x22C6;stc);</para>
884</entry>
885 </row></tbody></tgroup></informaltable>
886<para>PARAMETERS
887</para>
888<informaltable><tgroup cols="2"><tbody><row><entry
889 align="char">
890<para>int fd</para>
891</entry><entry
892 align="char">
893<para>File descriptor returned by a previous call to open().</para>
894</entry>
895 </row><row><entry
896 align="char">
897<para>int request</para>
898</entry><entry
899 align="char">
900<para>Equals DMX_GET_STC for this command.</para>
901</entry>
902 </row><row><entry
903 align="char">
904<para>struct dmx_stc *stc</para>
905</entry><entry
906 align="char">
907<para>Pointer to the location where the stc is to be stored.</para>
908</entry>
909 </row></tbody></tgroup></informaltable>
910&return-value-dvb;
911<informaltable><tgroup cols="2"><tbody><row><entry
912 align="char">
913<para>EINVAL</para>
914</entry><entry
915 align="char">
916<para>Invalid stc number.</para>
917</entry>
918 </row></tbody></tgroup></informaltable>
919 </section>
920
921<section id="DMX_GET_PES_PIDS"
922role="subsection"><title>DMX_GET_PES_PIDS</title>
923<para>DESCRIPTION
924</para>
925<informaltable><tgroup cols="1"><tbody><row><entry
926 align="char">
927<para>This ioctl is undocumented. Documentation is welcome.</para>
928</entry>
929 </row></tbody></tgroup></informaltable>
930<para>SYNOPSIS
931</para>
932<informaltable><tgroup cols="1"><tbody><row><entry
933 align="char">
934<para>int ioctl(fd, int request = DMX_GET_PES_PIDS,
935 __u16[5]);</para>
936</entry>
937 </row></tbody></tgroup></informaltable>
938<para>PARAMETERS
939</para>
940<informaltable><tgroup cols="2"><tbody><row><entry
941 align="char">
942<para>int fd</para>
943</entry><entry
944 align="char">
945<para>File descriptor returned by a previous call to open().</para>
946</entry>
947 </row><row><entry
948 align="char">
949<para>int request</para>
950</entry><entry
951 align="char">
952<para>Equals DMX_GET_PES_PIDS for this command.</para>
953</entry>
954 </row><row><entry
955 align="char">
956<para>__u16[5]
957</para>
958</entry><entry
959 align="char">
960<para>Undocumented.</para>
961</entry>
962 </row></tbody></tgroup></informaltable>
963&return-value-dvb;
964</section>
965
966<section id="DMX_GET_CAPS"
967role="subsection"><title>DMX_GET_CAPS</title>
968<para>DESCRIPTION
969</para>
970<informaltable><tgroup cols="1"><tbody><row><entry
971 align="char">
972<para>This ioctl is undocumented. Documentation is welcome.</para>
973</entry>
974 </row></tbody></tgroup></informaltable>
975<para>SYNOPSIS
976</para>
977<informaltable><tgroup cols="1"><tbody><row><entry
978 align="char">
979<para>int ioctl(fd, int request = DMX_GET_CAPS,
980 dmx_caps_t *);</para>
981</entry>
982 </row></tbody></tgroup></informaltable>
983<para>PARAMETERS
984</para>
985<informaltable><tgroup cols="2"><tbody><row><entry
986 align="char">
987<para>int fd</para>
988</entry><entry
989 align="char">
990<para>File descriptor returned by a previous call to open().</para>
991</entry>
992 </row><row><entry
993 align="char">
994<para>int request</para>
995</entry><entry
996 align="char">
997<para>Equals DMX_GET_CAPS for this command.</para>
998</entry>
999 </row><row><entry
1000 align="char">
1001<para>dmx_caps_t *
1002</para>
1003</entry><entry
1004 align="char">
1005<para>Undocumented.</para>
1006</entry>
1007 </row></tbody></tgroup></informaltable>
1008&return-value-dvb;
1009</section>
1010
1011<section id="DMX_SET_SOURCE"
1012role="subsection"><title>DMX_SET_SOURCE</title>
1013<para>DESCRIPTION
1014</para>
1015<informaltable><tgroup cols="1"><tbody><row><entry
1016 align="char">
1017<para>This ioctl is undocumented. Documentation is welcome.</para>
1018</entry>
1019 </row></tbody></tgroup></informaltable>
1020<para>SYNOPSIS
1021</para>
1022<informaltable><tgroup cols="1"><tbody><row><entry
1023 align="char">
1024<para>int ioctl(fd, int request = DMX_SET_SOURCE,
1025 dmx_source_t *);</para>
1026</entry>
1027 </row></tbody></tgroup></informaltable>
1028<para>PARAMETERS
1029</para>
1030<informaltable><tgroup cols="2"><tbody><row><entry
1031 align="char">
1032<para>int fd</para>
1033</entry><entry
1034 align="char">
1035<para>File descriptor returned by a previous call to open().</para>
1036</entry>
1037 </row><row><entry
1038 align="char">
1039<para>int request</para>
1040</entry><entry
1041 align="char">
1042<para>Equals DMX_SET_SOURCE for this command.</para>
1043</entry>
1044 </row><row><entry
1045 align="char">
1046<para>dmx_source_t *
1047</para>
1048</entry><entry
1049 align="char">
1050<para>Undocumented.</para>
1051</entry>
1052 </row></tbody></tgroup></informaltable>
1053&return-value-dvb;
1054</section>
1055
1056<section id="DMX_ADD_PID"
1057role="subsection"><title>DMX_ADD_PID</title>
1058<para>DESCRIPTION
1059</para>
1060<informaltable><tgroup cols="1"><tbody><row><entry
1061 align="char">
1062<para>This ioctl call allows to add multiple PIDs to a transport stream filter
1063previously set up with DMX_SET_PES_FILTER and output equal to DMX_OUT_TSDEMUX_TAP.
1064</para></entry></row><row><entry align="char"><para>
1065It is used by readers of /dev/dvb/adapterX/demuxY.
1066</para></entry></row><row><entry align="char"><para>
1067It may be called at any time, i.e. before or after the first filter on the
1068shared file descriptor was started. It makes it possible to record multiple
1069services without the need to de-multiplex or re-multiplex TS packets.</para>
1070</entry>
1071 </row></tbody></tgroup></informaltable>
1072<para>SYNOPSIS
1073</para>
1074<informaltable><tgroup cols="1"><tbody><row><entry
1075 align="char">
1076<para>int ioctl(fd, int request = DMX_ADD_PID,
1077 __u16 *);</para>
1078</entry>
1079 </row></tbody></tgroup></informaltable>
1080<para>PARAMETERS
1081</para>
1082<informaltable><tgroup cols="2"><tbody><row><entry
1083 align="char">
1084<para>int fd</para>
1085</entry><entry
1086 align="char">
1087<para>File descriptor returned by a previous call to open().</para>
1088</entry>
1089 </row><row><entry
1090 align="char">
1091<para>int request</para>
1092</entry><entry
1093 align="char">
1094<para>Equals DMX_ADD_PID for this command.</para>
1095</entry>
1096 </row><row><entry
1097 align="char">
1098<para>__u16 *
1099</para>
1100</entry><entry
1101 align="char">
1102<para>PID number to be filtered.</para>
1103</entry>
1104 </row></tbody></tgroup></informaltable>
1105&return-value-dvb;
1106</section>
1107
1108<section id="DMX_REMOVE_PID"
1109role="subsection"><title>DMX_REMOVE_PID</title>
1110<para>DESCRIPTION
1111</para>
1112<informaltable><tgroup cols="1"><tbody><row><entry
1113 align="char">
1114<para>This ioctl call allows to remove a PID when multiple PIDs are set on a
1115transport stream filter, e. g. a filter previously set up with output equal to
1116DMX_OUT_TSDEMUX_TAP, created via either DMX_SET_PES_FILTER or DMX_ADD_PID.
1117</para></entry></row><row><entry align="char"><para>
1118It is used by readers of /dev/dvb/adapterX/demuxY.
1119</para></entry></row><row><entry align="char"><para>
1120It may be called at any time, i.e. before or after the first filter on the
1121shared file descriptor was started. It makes it possible to record multiple
1122services without the need to de-multiplex or re-multiplex TS packets.</para>
1123</entry>
1124 </row></tbody></tgroup></informaltable>
1125<para>SYNOPSIS
1126</para>
1127<informaltable><tgroup cols="1"><tbody><row><entry
1128 align="char">
1129<para>int ioctl(fd, int request = DMX_REMOVE_PID,
1130 __u16 *);</para>
1131</entry>
1132 </row></tbody></tgroup></informaltable>
1133<para>PARAMETERS
1134</para>
1135<informaltable><tgroup cols="2"><tbody><row><entry
1136 align="char">
1137<para>int fd</para>
1138</entry><entry
1139 align="char">
1140<para>File descriptor returned by a previous call to open().</para>
1141</entry>
1142 </row><row><entry
1143 align="char">
1144<para>int request</para>
1145</entry><entry
1146 align="char">
1147<para>Equals DMX_REMOVE_PID for this command.</para>
1148</entry>
1149 </row><row><entry
1150 align="char">
1151<para>__u16 *
1152</para>
1153</entry><entry
1154 align="char">
1155<para>PID of the PES filter to be removed.</para>
1156</entry>
1157 </row></tbody></tgroup></informaltable>
1158&return-value-dvb;
1159</section>
1160
1161
1162</section>
Documentation/DocBook/media/dvb/dvbapi.xml+0−156
@@ -1,156 +0,0 @@
1<partinfo>
2<authorgroup>
3<author>
4<firstname>Ralph</firstname>
5<surname>Metzler</surname>
6<othername role="mi">J. K.</othername>
7<affiliation><address><email>rjkm@metzlerbros.de</email></address></affiliation>
8</author>
9<author>
10<firstname>Marcus</firstname>
11<surname>Metzler</surname>
12<othername role="mi">O. C.</othername>
13<affiliation><address><email>rjkm@metzlerbros.de</email></address></affiliation>
14</author>
15</authorgroup>
16<authorgroup>
17<author>
18<firstname>Mauro</firstname>
19<othername role="mi">Carvalho</othername>
20<surname>Chehab</surname>
21<affiliation><address><email>m.chehab@samsung.com</email></address></affiliation>
22<contrib>Ported document to Docbook XML.</contrib>
23</author>
24</authorgroup>
25<copyright>
26 <year>2002</year>
27 <year>2003</year>
28 <holder>Convergence GmbH</holder>
29</copyright>
30<copyright>
31 <year>2009-2015</year>
32 <holder>Mauro Carvalho Chehab</holder>
33</copyright>
34
35<revhistory>
36<!-- Put document revisions here, newest first. -->
37<revision>
38 <revnumber>2.1.0</revnumber>
39 <date>2015-05-29</date>
40 <authorinitials>mcc</authorinitials>
41 <revremark>
42 DocBook improvements and cleanups, in order to document the
43 system calls on a more standard way and provide more description
44 about the current DVB API.
45 </revremark>
46</revision>
47<revision>
48 <revnumber>2.0.4</revnumber>
49 <date>2011-05-06</date>
50 <authorinitials>mcc</authorinitials>
51 <revremark>
52 Add more information about DVB APIv5, better describing the frontend GET/SET props ioctl's.
53 </revremark>
54</revision>
55<revision>
56 <revnumber>2.0.3</revnumber>
57 <date>2010-07-03</date>
58 <authorinitials>mcc</authorinitials>
59 <revremark>
60 Add some frontend capabilities flags, present on kernel, but missing at the specs.
61 </revremark>
62</revision>
63<revision>
64 <revnumber>2.0.2</revnumber>
65 <date>2009-10-25</date>
66 <authorinitials>mcc</authorinitials>
67 <revremark>
68 documents FE_SET_FRONTEND_TUNE_MODE and FE_DISHETWORK_SEND_LEGACY_CMD ioctls.
69 </revremark>
70</revision>
71<revision>
72<revnumber>2.0.1</revnumber>
73<date>2009-09-16</date>
74<authorinitials>mcc</authorinitials>
75<revremark>
76Added ISDB-T test originally written by Patrick Boettcher
77</revremark>
78</revision>
79<revision>
80<revnumber>2.0.0</revnumber>
81<date>2009-09-06</date>
82<authorinitials>mcc</authorinitials>
83<revremark>Conversion from LaTex to DocBook XML. The
84 contents is the same as the original LaTex version.</revremark>
85</revision>
86<revision>
87<revnumber>1.0.0</revnumber>
88<date>2003-07-24</date>
89<authorinitials>rjkm</authorinitials>
90<revremark>Initial revision on LaTEX.</revremark>
91</revision>
92</revhistory>
93</partinfo>
94
95
96<title>LINUX DVB API</title>
97<subtitle>Version 5.10</subtitle>
98<!-- ADD THE CHAPTERS HERE -->
99 <chapter id="dvb_introdution">
100 &sub-intro;
101 </chapter>
102 <chapter id="dvb_frontend">
103 &sub-frontend;
104 </chapter>
105 <chapter id="dvb_demux">
106 &sub-demux;
107 </chapter>
108 <chapter id="dvb_ca">
109 &sub-ca;
110 </chapter>
111 <chapter id="net">
112 &sub-net;
113 </chapter>
114 <chapter id="legacy_dvb_apis">
115 <title>DVB Deprecated APIs</title>
116 <para>The APIs described here are kept only for historical reasons. There's
117 just one driver for a very legacy hardware that uses this API. No
118 modern drivers should use it. Instead, audio and video should be using
119 the V4L2 and ALSA APIs, and the pipelines should be set using the
120 Media Controller API</para>
121 <section id="dvb_video">
122 &sub-video;
123 </section>
124 <section id="dvb_audio">
125 &sub-audio;
126 </section>
127 </chapter>
128 <chapter id="dvb_examples">
129 &sub-examples;
130 </chapter>
131<!-- END OF CHAPTERS -->
132 <appendix id="audio_h">
133 <title>DVB Audio Header File</title>
134 &sub-audio-h;
135 </appendix>
136 <appendix id="ca_h">
137 <title>DVB Conditional Access Header File</title>
138 &sub-ca-h;
139 </appendix>
140 <appendix id="dmx_h">
141 <title>DVB Demux Header File</title>
142 &sub-dmx-h;
143 </appendix>
144 <appendix id="frontend_h">
145 <title>DVB Frontend Header File</title>
146 &sub-frontend-h;
147 </appendix>
148 <appendix id="net_h">
149 <title>DVB Network Header File</title>
150 &sub-net-h;
151 </appendix>
152 <appendix id="video_h">
153 <title>DVB Video Header File</title>
154 &sub-video-h;
155 </appendix>
156
Documentation/DocBook/media/dvb/dvbproperty.xml+0−1680
@@ -1,1680 +0,0 @@
1<section id="frontend-properties">
2<title>DVB Frontend properties</title>
3<para>Tuning into a Digital TV physical channel and starting decoding it
4 requires changing a set of parameters, in order to control the
5 tuner, the demodulator, the Linear Low-noise Amplifier (LNA) and to set the
6 antenna subsystem via Satellite Equipment Control (SEC), on satellite
7 systems. The actual parameters are specific to each particular digital
8 TV standards, and may change as the digital TV specs evolves.</para>
9<para>In the past, the strategy used was to have a union with the parameters
10 needed to tune for DVB-S, DVB-C, DVB-T and ATSC delivery systems grouped
11 there. The problem is that, as the second generation standards appeared,
12 those structs were not big enough to contain the additional parameters.
13 Also, the union didn't have any space left to be expanded without breaking
14 userspace. So, the decision was to deprecate the legacy union/struct based
15 approach, in favor of a properties set approach.</para>
16
17<para>NOTE: on Linux DVB API version 3, setting a frontend were done via
18 <link linkend="dvb-frontend-parameters">struct <constant>dvb_frontend_parameters</constant></link>.
19 This got replaced on version 5 (also called "S2API", as this API were
20 added originally_enabled to provide support for DVB-S2), because the old
21 API has a very limited support to new standards and new hardware. This
22 section describes the new and recommended way to set the frontend, with
23 suppports all digital TV delivery systems.</para>
24
25<para>Example: with the properties based approach, in order to set the tuner
26 to a DVB-C channel at 651 kHz, modulated with 256-QAM, FEC 3/4 and symbol
27 rate of 5.217 Mbauds, those properties should be sent to
28 <link linkend="FE_GET_PROPERTY"><constant>FE_SET_PROPERTY</constant></link> ioctl:</para>
29 <itemizedlist>
30 <listitem><para>&DTV-DELIVERY-SYSTEM; = SYS_DVBC_ANNEX_A</para></listitem>
31 <listitem><para>&DTV-FREQUENCY; = 651000000</para></listitem>
32 <listitem><para>&DTV-MODULATION; = QAM_256</para></listitem>
33 <listitem><para>&DTV-INVERSION; = INVERSION_AUTO</para></listitem>
34 <listitem><para>&DTV-SYMBOL-RATE; = 5217000</para></listitem>
35 <listitem><para>&DTV-INNER-FEC; = FEC_3_4</para></listitem>
36 <listitem><para>&DTV-TUNE;</para></listitem>
37 </itemizedlist>
38
39<para>The code that would do the above is:</para>
40<programlisting>
41#include &lt;stdio.h&gt;
42#include &lt;fcntl.h&gt;
43#include &lt;sys/ioctl.h&gt;
44#include &lt;linux/dvb/frontend.h&gt;
45
46static struct dtv_property props[] = {
47 { .cmd = DTV_DELIVERY_SYSTEM, .u.data = SYS_DVBC_ANNEX_A },
48 { .cmd = DTV_FREQUENCY, .u.data = 651000000 },
49 { .cmd = DTV_MODULATION, .u.data = QAM_256 },
50 { .cmd = DTV_INVERSION, .u.data = INVERSION_AUTO },
51 { .cmd = DTV_SYMBOL_RATE, .u.data = 5217000 },
52 { .cmd = DTV_INNER_FEC, .u.data = FEC_3_4 },
53 { .cmd = DTV_TUNE }
54};
55
56static struct dtv_properties dtv_prop = {
57 .num = 6, .props = props
58};
59
60int main(void)
61{
62 int fd = open("/dev/dvb/adapter0/frontend0", O_RDWR);
63
64 if (!fd) {
65 perror ("open");
66 return -1;
67 }
68 if (ioctl(fd, FE_SET_PROPERTY, &amp;dtv_prop) == -1) {
69 perror("ioctl");
70 return -1;
71 }
72 printf("Frontend set\n");
73 return 0;
74}
75</programlisting>
76
77<para>NOTE: While it is possible to directly call the Kernel code like the
78 above example, it is strongly recommended to use
79 <ulink url="https://linuxtv.org/docs/libdvbv5/index.html">libdvbv5</ulink>,
80 as it provides abstraction to work with the supported digital TV standards
81 and provides methods for usual operations like program scanning and to
82 read/write channel descriptor files.</para>
83
84<section id="dtv-stats">
85<title>struct <structname>dtv_stats</structname></title>
86<programlisting>
87struct dtv_stats {
88 __u8 scale; /* enum fecap_scale_params type */
89 union {
90 __u64 uvalue; /* for counters and relative scales */
91 __s64 svalue; /* for 1/1000 dB measures */
92 };
93} __packed;
94</programlisting>
95</section>
96<section id="dtv-fe-stats">
97<title>struct <structname>dtv_fe_stats</structname></title>
98<programlisting>
99#define MAX_DTV_STATS 4
100
101struct dtv_fe_stats {
102 __u8 len;
103 &dtv-stats; stat[MAX_DTV_STATS];
104} __packed;
105</programlisting>
106</section>
107
108<section id="dtv-property">
109<title>struct <structname>dtv_property</structname></title>
110<programlisting>
111/* Reserved fields should be set to 0 */
112
113struct dtv_property {
114 __u32 cmd;
115 __u32 reserved[3];
116 union {
117 __u32 data;
118 &dtv-fe-stats; st;
119 struct {
120 __u8 data[32];
121 __u32 len;
122 __u32 reserved1[3];
123 void *reserved2;
124 } buffer;
125 } u;
126 int result;
127} __attribute__ ((packed));
128
129/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
130#define DTV_IOCTL_MAX_MSGS 64
131</programlisting>
132</section>
133<section id="dtv-properties">
134<title>struct <structname>dtv_properties</structname></title>
135<programlisting>
136struct dtv_properties {
137 __u32 num;
138 &dtv-property; *props;
139};
140</programlisting>
141</section>
142
143<section>
144 <title>Property types</title>
145<para>
146On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY and FE_SET_PROPERTY</link>,
147the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to
148get/set up to 64 properties. The actual meaning of each property is described on the next sections.
149</para>
150
151<para>The available frontend property types are shown on the next section.</para>
152</section>
153
154<section id="fe_property_parameters">
155 <title>Digital TV property parameters</title>
156 <section id="DTV-UNDEFINED">
157 <title><constant>DTV_UNDEFINED</constant></title>
158 <para>Used internally. A GET/SET operation for it won't change or return anything.</para>
159 </section>
160 <section id="DTV-TUNE">
161 <title><constant>DTV_TUNE</constant></title>
162 <para>Interpret the cache of data, build either a traditional frontend tunerequest so we can pass validation in the <constant>FE_SET_FRONTEND</constant> ioctl.</para>
163 </section>
164 <section id="DTV-CLEAR">
165 <title><constant>DTV_CLEAR</constant></title>
166 <para>Reset a cache of data specific to the frontend here. This does not effect hardware.</para>
167 </section>
168 <section id="DTV-FREQUENCY">
169 <title><constant>DTV_FREQUENCY</constant></title>
170
171 <para>Central frequency of the channel.</para>
172
173 <para>Notes:</para>
174 <para>1)For satellite delivery systems, it is measured in kHz.
175 For the other ones, it is measured in Hz.</para>
176 <para>2)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
177 E.g. a valid frequency could be 474143 kHz. The stepping is bound to the bandwidth of
178 the channel which is 6MHz.</para>
179
180 <para>3)As in ISDB-Tsb the channel consists of only one or three segments the
181 frequency step is 429kHz, 3*429 respectively. As for ISDB-T the
182 central frequency of the channel is expected.</para>
183 </section>
184 <section id="DTV-MODULATION">
185 <title><constant>DTV_MODULATION</constant></title>
186<para>Specifies the frontend modulation type for delivery systems that supports
187 more than one modulation type. The modulation can be one of the types
188 defined by &fe-modulation;.</para>
189
190
191<section id="fe-modulation-t">
192<title>Modulation property</title>
193
194<para>Most of the digital TV standards currently offers more than one possible
195 modulation (sometimes called as "constellation" on some standards). This
196 enum contains the values used by the Kernel. Please note that not all
197 modulations are supported by a given standard.</para>
198
199<table pgwide="1" frame="none" id="fe-modulation">
200 <title>enum fe_modulation</title>
201 <tgroup cols="2">
202 &cs-def;
203 <thead>
204 <row>
205 <entry>ID</entry>
206 <entry>Description</entry>
207 </row>
208 </thead>
209 <tbody valign="top">
210 <row>
211 <entry id="QPSK"><constant>QPSK</constant></entry>
212 <entry>QPSK modulation</entry>
213 </row><row>
214 <entry id="QAM-16"><constant>QAM_16</constant></entry>
215 <entry>16-QAM modulation</entry>
216 </row><row>
217 <entry id="QAM-32"><constant>QAM_32</constant></entry>
218 <entry>32-QAM modulation</entry>
219 </row><row>
220 <entry id="QAM-64"><constant>QAM_64</constant></entry>
221 <entry>64-QAM modulation</entry>
222 </row><row>
223 <entry id="QAM-128"><constant>QAM_128</constant></entry>
224 <entry>128-QAM modulation</entry>
225 </row><row>
226 <entry id="QAM-256"><constant>QAM_256</constant></entry>
227 <entry>256-QAM modulation</entry>
228 </row><row>
229 <entry id="QAM-AUTO"><constant>QAM_AUTO</constant></entry>
230 <entry>Autodetect QAM modulation</entry>
231 </row><row>
232 <entry id="VSB-8"><constant>VSB_8</constant></entry>
233 <entry>8-VSB modulation</entry>
234 </row><row>
235 <entry id="VSB-16"><constant>VSB_16</constant></entry>
236 <entry>16-VSB modulation</entry>
237 </row><row>
238 <entry id="PSK-8"><constant>PSK_8</constant></entry>
239 <entry>8-PSK modulation</entry>
240 </row><row>
241 <entry id="APSK-16"><constant>APSK_16</constant></entry>
242 <entry>16-APSK modulation</entry>
243 </row><row>
244 <entry id="APSK-32"><constant>APSK_32</constant></entry>
245 <entry>32-APSK modulation</entry>
246 </row><row>
247 <entry id="DQPSK"><constant>DQPSK</constant></entry>
248 <entry>DQPSK modulation</entry>
249 </row><row>
250 <entry id="QAM-4-NR"><constant>QAM_4_NR</constant></entry>
251 <entry>4-QAM-NR modulation</entry>
252 </row>
253 </tbody>
254 </tgroup>
255</table>
256</section>
257
258 </section>
259 <section id="DTV-BANDWIDTH-HZ">
260 <title><constant>DTV_BANDWIDTH_HZ</constant></title>
261
262 <para>Bandwidth for the channel, in HZ.</para>
263
264 <para>Possible values:
265 <constant>1712000</constant>,
266 <constant>5000000</constant>,
267 <constant>6000000</constant>,
268 <constant>7000000</constant>,
269 <constant>8000000</constant>,
270 <constant>10000000</constant>.
271 </para>
272
273 <para>Notes:</para>
274
275 <para>1) For ISDB-T it should be always 6000000Hz (6MHz)</para>
276 <para>2) For ISDB-Tsb it can vary depending on the number of connected segments</para>
277 <para>3) Bandwidth doesn't apply for DVB-C transmissions, as the bandwidth
278 for DVB-C depends on the symbol rate</para>
279 <para>4) Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from
280 other parameters (DTV_ISDBT_SB_SEGMENT_IDX,
281 DTV_ISDBT_SB_SEGMENT_COUNT).</para>
282 <para>5) DVB-T supports 6, 7 and 8MHz.</para>
283 <para>6) In addition, DVB-T2 supports 1.172, 5 and 10MHz.</para>
284 </section>
285 <section id="DTV-INVERSION">
286 <title><constant>DTV_INVERSION</constant></title>
287
288 <para>Specifies if the frontend should do spectral inversion or not.</para>
289
290<section id="fe-spectral-inversion-t">
291<title>enum fe_modulation: Frontend spectral inversion</title>
292
293<para>This parameter indicates if spectral inversion should be presumed or not.
294 In the automatic setting (<constant>INVERSION_AUTO</constant>) the hardware
295 will try to figure out the correct setting by itself. If the hardware
296 doesn't support, the DVB core will try to lock at the carrier first with
297 inversion off. If it fails, it will try to enable inversion.
298</para>
299
300<table pgwide="1" frame="none" id="fe-spectral-inversion">
301 <title>enum fe_modulation</title>
302 <tgroup cols="2">
303 &cs-def;
304 <thead>
305 <row>
306 <entry>ID</entry>
307 <entry>Description</entry>
308 </row>
309 </thead>
310 <tbody valign="top">
311 <row>
312 <entry id="INVERSION-OFF"><constant>INVERSION_OFF</constant></entry>
313 <entry>Don't do spectral band inversion.</entry>
314 </row><row>
315 <entry id="INVERSION-ON"><constant>INVERSION_ON</constant></entry>
316 <entry>Do spectral band inversion.</entry>
317 </row><row>
318 <entry id="INVERSION-AUTO"><constant>INVERSION_AUTO</constant></entry>
319 <entry>Autodetect spectral band inversion.</entry>
320 </row>
321 </tbody>
322 </tgroup>
323</table>
324</section>
325
326 </section>
327 <section id="DTV-DISEQC-MASTER">
328 <title><constant>DTV_DISEQC_MASTER</constant></title>
329 <para>Currently not implemented.</para>
330 </section>
331 <section id="DTV-SYMBOL-RATE">
332 <title><constant>DTV_SYMBOL_RATE</constant></title>
333 <para>Digital TV symbol rate, in bauds (symbols/second). Used on cable standards.</para>
334 </section>
335 <section id="DTV-INNER-FEC">
336 <title><constant>DTV_INNER_FEC</constant></title>
337 <para>Used cable/satellite transmissions. The acceptable values are:
338 </para>
339<section id="fe-code-rate-t">
340<title>enum fe_code_rate: type of the Forward Error Correction.</title>
341
342<table pgwide="1" frame="none" id="fe-code-rate">
343 <title>enum fe_code_rate</title>
344 <tgroup cols="2">
345 &cs-def;
346 <thead>
347 <row>
348 <entry>ID</entry>
349 <entry>Description</entry>
350 </row>
351 </thead>
352 <tbody valign="top">
353 <row>
354 <entry id="FEC-NONE"><constant>FEC_NONE</constant></entry>
355 <entry>No Forward Error Correction Code</entry>
356 </row><row>
357 <entry id="FEC-AUTO"><constant>FEC_AUTO</constant></entry>
358 <entry>Autodetect Error Correction Code</entry>
359 </row><row>
360 <entry id="FEC-1-2"><constant>FEC_1_2</constant></entry>
361 <entry>Forward Error Correction Code 1/2</entry>
362 </row><row>
363 <entry id="FEC-2-3"><constant>FEC_2_3</constant></entry>
364 <entry>Forward Error Correction Code 2/3</entry>
365 </row><row>
366 <entry id="FEC-3-4"><constant>FEC_3_4</constant></entry>
367 <entry>Forward Error Correction Code 3/4</entry>
368 </row><row>
369 <entry id="FEC-4-5"><constant>FEC_4_5</constant></entry>
370 <entry>Forward Error Correction Code 4/5</entry>
371 </row><row>
372 <entry id="FEC-5-6"><constant>FEC_5_6</constant></entry>
373 <entry>Forward Error Correction Code 5/6</entry>
374 </row><row>
375 <entry id="FEC-6-7"><constant>FEC_6_7</constant></entry>
376 <entry>Forward Error Correction Code 6/7</entry>
377 </row><row>
378 <entry id="FEC-7-8"><constant>FEC_7_8</constant></entry>
379 <entry>Forward Error Correction Code 7/8</entry>
380 </row><row>
381 <entry id="FEC-8-9"><constant>FEC_8_9</constant></entry>
382 <entry>Forward Error Correction Code 8/9</entry>
383 </row><row>
384 <entry id="FEC-9-10"><constant>FEC_9_10</constant></entry>
385 <entry>Forward Error Correction Code 9/10</entry>
386 </row><row>
387 <entry id="FEC-2-5"><constant>FEC_2_5</constant></entry>
388 <entry>Forward Error Correction Code 2/5</entry>
389 </row><row>
390 <entry id="FEC-3-5"><constant>FEC_3_5</constant></entry>
391 <entry>Forward Error Correction Code 3/5</entry>
392 </row>
393 </tbody>
394 </tgroup>
395</table>
396</section>
397 </section>
398 <section id="DTV-VOLTAGE">
399 <title><constant>DTV_VOLTAGE</constant></title>
400 <para>The voltage is usually used with non-DiSEqC capable LNBs to switch
401 the polarzation (horizontal/vertical). When using DiSEqC epuipment this
402 voltage has to be switched consistently to the DiSEqC commands as
403 described in the DiSEqC spec.</para>
404
405<table pgwide="1" frame="none" id="fe-sec-voltage">
406 <title id="fe-sec-voltage-t">enum fe_sec_voltage</title>
407 <tgroup cols="2">
408 &cs-def;
409 <thead>
410 <row>
411 <entry>ID</entry>
412 <entry>Description</entry>
413 </row>
414 </thead>
415 <tbody valign="top">
416 <row>
417 <entry align="char" id="SEC-VOLTAGE-13"><constant>SEC_VOLTAGE_13</constant></entry>
418 <entry align="char">Set DC voltage level to 13V</entry>
419 </row><row>
420 <entry align="char" id="SEC-VOLTAGE-18"><constant>SEC_VOLTAGE_18</constant></entry>
421 <entry align="char">Set DC voltage level to 18V</entry>
422 </row><row>
423 <entry align="char" id="SEC-VOLTAGE-OFF"><constant>SEC_VOLTAGE_OFF</constant></entry>
424 <entry align="char">Don't send any voltage to the antenna</entry>
425 </row>
426 </tbody>
427 </tgroup>
428</table>
429 </section>
430 <section id="DTV-TONE">
431 <title><constant>DTV_TONE</constant></title>
432 <para>Currently not used.</para>
433 </section>
434 <section id="DTV-PILOT">
435 <title><constant>DTV_PILOT</constant></title>
436 <para>Sets DVB-S2 pilot</para>
437 <section id="fe-pilot-t">
438 <title>fe_pilot type</title>
439<table pgwide="1" frame="none" id="fe-pilot">
440 <title>enum fe_pilot</title>
441 <tgroup cols="2">
442 &cs-def;
443 <thead>
444 <row>
445 <entry>ID</entry>
446 <entry>Description</entry>
447 </row>
448 </thead>
449 <tbody valign="top">
450 <row>
451 <entry align="char" id="PILOT-ON"><constant>PILOT_ON</constant></entry>
452 <entry align="char">Pilot tones enabled</entry>
453 </row><row>
454 <entry align="char" id="PILOT-OFF"><constant>PILOT_OFF</constant></entry>
455 <entry align="char">Pilot tones disabled</entry>
456 </row><row>
457 <entry align="char" id="PILOT-AUTO"><constant>PILOT_AUTO</constant></entry>
458 <entry align="char">Autodetect pilot tones</entry>
459 </row>
460 </tbody>
461 </tgroup>
462</table>
463 </section>
464 </section>
465 <section id="DTV-ROLLOFF">
466 <title><constant>DTV_ROLLOFF</constant></title>
467 <para>Sets DVB-S2 rolloff</para>
468
469 <section id="fe-rolloff-t">
470 <title>fe_rolloff type</title>
471<table pgwide="1" frame="none" id="fe-rolloff">
472 <title>enum fe_rolloff</title>
473 <tgroup cols="2">
474 &cs-def;
475 <thead>
476 <row>
477 <entry>ID</entry>
478 <entry>Description</entry>
479 </row>
480 </thead>
481 <tbody valign="top">
482 <row>
483 <entry align="char" id="ROLLOFF-35"><constant>ROLLOFF_35</constant></entry>
484 <entry align="char">Roloff factor: &alpha;=35%</entry>
485 </row><row>
486 <entry align="char" id="ROLLOFF-20"><constant>ROLLOFF_20</constant></entry>
487 <entry align="char">Roloff factor: &alpha;=20%</entry>
488 </row><row>
489 <entry align="char" id="ROLLOFF-25"><constant>ROLLOFF_25</constant></entry>
490 <entry align="char">Roloff factor: &alpha;=25%</entry>
491 </row><row>
492 <entry align="char" id="ROLLOFF-AUTO"><constant>ROLLOFF_AUTO</constant></entry>
493 <entry align="char">Auto-detect the roloff factor.</entry>
494 </row>
495 </tbody>
496 </tgroup>
497</table>
498 </section>
499 </section>
500 <section id="DTV-DISEQC-SLAVE-REPLY">
501 <title><constant>DTV_DISEQC_SLAVE_REPLY</constant></title>
502 <para>Currently not implemented.</para>
503 </section>
504 <section id="DTV-FE-CAPABILITY-COUNT">
505 <title><constant>DTV_FE_CAPABILITY_COUNT</constant></title>
506 <para>Currently not implemented.</para>
507 </section>
508 <section id="DTV-FE-CAPABILITY">
509 <title><constant>DTV_FE_CAPABILITY</constant></title>
510 <para>Currently not implemented.</para>
511 </section>
512 <section id="DTV-DELIVERY-SYSTEM">
513 <title><constant>DTV_DELIVERY_SYSTEM</constant></title>
514 <para>Specifies the type of Delivery system</para>
515 <section id="fe-delivery-system-t">
516 <title>fe_delivery_system type</title>
517 <para>Possible values: </para>
518
519<table pgwide="1" frame="none" id="fe-delivery-system">
520 <title>enum fe_delivery_system</title>
521 <tgroup cols="2">
522 &cs-def;
523 <thead>
524 <row>
525 <entry>ID</entry>
526 <entry>Description</entry>
527 </row>
528 </thead>
529 <tbody valign="top">
530 <row>
531 <entry id="SYS-UNDEFINED"><constant>SYS_UNDEFINED</constant></entry>
532 <entry>Undefined standard. Generally, indicates an error</entry>
533 </row><row>
534 <entry id="SYS-DVBC-ANNEX-A"><constant>SYS_DVBC_ANNEX_A</constant></entry>
535 <entry>Cable TV: DVB-C following ITU-T J.83 Annex A spec</entry>
536 </row><row>
537 <entry id="SYS-DVBC-ANNEX-B"><constant>SYS_DVBC_ANNEX_B</constant></entry>
538 <entry>Cable TV: DVB-C following ITU-T J.83 Annex B spec (ClearQAM)</entry>
539 </row><row>
540 <entry id="SYS-DVBC-ANNEX-C"><constant>SYS_DVBC_ANNEX_C</constant></entry>
541 <entry>Cable TV: DVB-C following ITU-T J.83 Annex C spec</entry>
542 </row><row>
543 <entry id="SYS-ISDBC"><constant>SYS_ISDBC</constant></entry>
544 <entry>Cable TV: ISDB-C (no drivers yet)</entry>
545 </row><row>
546 <entry id="SYS-DVBT"><constant>SYS_DVBT</constant></entry>
547 <entry>Terrestral TV: DVB-T</entry>
548 </row><row>
549 <entry id="SYS-DVBT2"><constant>SYS_DVBT2</constant></entry>
550 <entry>Terrestral TV: DVB-T2</entry>
551 </row><row>
552 <entry id="SYS-ISDBT"><constant>SYS_ISDBT</constant></entry>
553 <entry>Terrestral TV: ISDB-T</entry>
554 </row><row>
555 <entry id="SYS-ATSC"><constant>SYS_ATSC</constant></entry>
556 <entry>Terrestral TV: ATSC</entry>
557 </row><row>
558 <entry id="SYS-ATSCMH"><constant>SYS_ATSCMH</constant></entry>
559 <entry>Terrestral TV (mobile): ATSC-M/H</entry>
560 </row><row>
561 <entry id="SYS-DTMB"><constant>SYS_DTMB</constant></entry>
562 <entry>Terrestrial TV: DTMB</entry>
563 </row><row>
564 <entry id="SYS-DVBS"><constant>SYS_DVBS</constant></entry>
565 <entry>Satellite TV: DVB-S</entry>
566 </row><row>
567 <entry id="SYS-DVBS2"><constant>SYS_DVBS2</constant></entry>
568 <entry>Satellite TV: DVB-S2</entry>
569 </row><row>
570 <entry id="SYS-TURBO"><constant>SYS_TURBO</constant></entry>
571 <entry>Satellite TV: DVB-S Turbo</entry>
572 </row><row>
573 <entry id="SYS-ISDBS"><constant>SYS_ISDBS</constant></entry>
574 <entry>Satellite TV: ISDB-S</entry>
575 </row><row>
576 <entry id="SYS-DAB"><constant>SYS_DAB</constant></entry>
577 <entry>Digital audio: DAB (not fully supported)</entry>
578 </row><row>
579 <entry id="SYS-DSS"><constant>SYS_DSS</constant></entry>
580 <entry>Satellite TV:"DSS (not fully supported)</entry>
581 </row><row>
582 <entry id="SYS-CMMB"><constant>SYS_CMMB</constant></entry>
583 <entry>Terrestral TV (mobile):CMMB (not fully supported)</entry>
584 </row><row>
585 <entry id="SYS-DVBH"><constant>SYS_DVBH</constant></entry>
586 <entry>Terrestral TV (mobile): DVB-H (standard deprecated)</entry>
587 </row>
588 </tbody>
589 </tgroup>
590</table>
591
592
593</section>
594 </section>
595 <section id="DTV-ISDBT-PARTIAL-RECEPTION">
596 <title><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></title>
597
598 <para>If <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '0' this bit-field represents whether
599 the channel is in partial reception mode or not.</para>
600
601 <para>If '1' <constant>DTV_ISDBT_LAYERA_*</constant> values are assigned to the center segment and
602 <constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant> has to be '1'.</para>
603
604 <para>If in addition <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'
605 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> represents whether this ISDB-Tsb channel
606 is consisting of one segment and layer or three segments and two layers.</para>
607
608 <para>Possible values: 0, 1, -1 (AUTO)</para>
609 </section>
610 <section id="DTV-ISDBT-SOUND-BROADCASTING">
611 <title><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></title>
612
613 <para>This field represents whether the other DTV_ISDBT_*-parameters are
614 referring to an ISDB-T and an ISDB-Tsb channel. (See also
615 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>).</para>
616
617 <para>Possible values: 0, 1, -1 (AUTO)</para>
618 </section>
619 <section id="DTV-ISDBT-SB-SUBCHANNEL-ID">
620 <title><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></title>
621
622 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
623
624 <para>(Note of the author: This might not be the correct description of the
625 <constant>SUBCHANNEL-ID</constant> in all details, but it is my understanding of the technical
626 background needed to program a device)</para>
627
628 <para>An ISDB-Tsb channel (1 or 3 segments) can be broadcasted alone or in a
629 set of connected ISDB-Tsb channels. In this set of channels every
630 channel can be received independently. The number of connected
631 ISDB-Tsb segment can vary, e.g. depending on the frequency spectrum
632 bandwidth available.</para>
633
634 <para>Example: Assume 8 ISDB-Tsb connected segments are broadcasted. The
635 broadcaster has several possibilities to put those channels in the
636 air: Assuming a normal 13-segment ISDB-T spectrum he can align the 8
637 segments from position 1-8 to 5-13 or anything in between.</para>
638
639 <para>The underlying layer of segments are subchannels: each segment is
640 consisting of several subchannels with a predefined IDs. A sub-channel
641 is used to help the demodulator to synchronize on the channel.</para>
642
643 <para>An ISDB-T channel is always centered over all sub-channels. As for
644 the example above, in ISDB-Tsb it is no longer as simple as that.</para>
645
646 <para><constant>The DTV_ISDBT_SB_SUBCHANNEL_ID</constant> parameter is used to give the
647 sub-channel ID of the segment to be demodulated.</para>
648
649 <para>Possible values: 0 .. 41, -1 (AUTO)</para>
650 </section>
651 <section id="DTV-ISDBT-SB-SEGMENT-IDX">
652 <title><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></title>
653 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
654 <para><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant> gives the index of the segment to be
655 demodulated for an ISDB-Tsb channel where several of them are
656 transmitted in the connected manner.</para>
657 <para>Possible values: 0 .. <constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> - 1</para>
658 <para>Note: This value cannot be determined by an automatic channel search.</para>
659 </section>
660 <section id="DTV-ISDBT-SB-SEGMENT-COUNT">
661 <title><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></title>
662 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
663 <para><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> gives the total count of connected ISDB-Tsb
664 channels.</para>
665 <para>Possible values: 1 .. 13</para>
666 <para>Note: This value cannot be determined by an automatic channel search.</para>
667 </section>
668 <section id="isdb-hierq-layers">
669 <title><constant>DTV-ISDBT-LAYER*</constant> parameters</title>
670 <para>ISDB-T channels can be coded hierarchically. As opposed to DVB-T in
671 ISDB-T hierarchical layers can be decoded simultaneously. For that
672 reason a ISDB-T demodulator has 3 Viterbi and 3 Reed-Solomon decoders.</para>
673 <para>ISDB-T has 3 hierarchical layers which each can use a part of the
674 available segments. The total number of segments over all layers has
675 to 13 in ISDB-T.</para>
676 <para>There are 3 parameter sets, for Layers A, B and C.</para>
677 <section id="DTV-ISDBT-LAYER-ENABLED">
678 <title><constant>DTV_ISDBT_LAYER_ENABLED</constant></title>
679 <para>Hierarchical reception in ISDB-T is achieved by enabling or disabling
680 layers in the decoding process. Setting all bits of
681 <constant>DTV_ISDBT_LAYER_ENABLED</constant> to '1' forces all layers (if applicable) to be
682 demodulated. This is the default.</para>
683 <para>If the channel is in the partial reception mode
684 (<constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> = 1) the central segment can be decoded
685 independently of the other 12 segments. In that mode layer A has to
686 have a <constant>SEGMENT_COUNT</constant> of 1.</para>
687 <para>In ISDB-Tsb only layer A is used, it can be 1 or 3 in ISDB-Tsb
688 according to <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>. <constant>SEGMENT_COUNT</constant> must be filled
689 accordingly.</para>
690 <para>Possible values: 0x1, 0x2, 0x4 (|-able)</para>
691 <para><constant>DTV_ISDBT_LAYER_ENABLED[0:0]</constant> - layer A</para>
692 <para><constant>DTV_ISDBT_LAYER_ENABLED[1:1]</constant> - layer B</para>
693 <para><constant>DTV_ISDBT_LAYER_ENABLED[2:2]</constant> - layer C</para>
694 <para><constant>DTV_ISDBT_LAYER_ENABLED[31:3]</constant> unused</para>
695 </section>
696 <section id="DTV-ISDBT-LAYER-FEC">
697 <title><constant>DTV_ISDBT_LAYER*_FEC</constant></title>
698 <para>Possible values: <constant>FEC_AUTO</constant>, <constant>FEC_1_2</constant>, <constant>FEC_2_3</constant>, <constant>FEC_3_4</constant>, <constant>FEC_5_6</constant>, <constant>FEC_7_8</constant></para>
699 </section>
700 <section id="DTV-ISDBT-LAYER-MODULATION">
701 <title><constant>DTV_ISDBT_LAYER*_MODULATION</constant></title>
702 <para>Possible values: <constant>QAM_AUTO</constant>, QP<constant>SK, QAM_16</constant>, <constant>QAM_64</constant>, <constant>DQPSK</constant></para>
703 <para>Note: If layer C is <constant>DQPSK</constant> layer B has to be <constant>DQPSK</constant>. If layer B is <constant>DQPSK</constant>
704 and <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>=0 layer has to be <constant>DQPSK</constant>.</para>
705 </section>
706 <section id="DTV-ISDBT-LAYER-SEGMENT-COUNT">
707 <title><constant>DTV_ISDBT_LAYER*_SEGMENT_COUNT</constant></title>
708 <para>Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO)</para>
709 <para>Note: Truth table for <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> and
710 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> and <constant>LAYER</constant>*_SEGMENT_COUNT</para>
711 <informaltable id="isdbt-layer_seg-cnt-table">
712 <tgroup cols="6">
713 <tbody>
714 <row>
715 <entry>PR</entry>
716 <entry>SB</entry>
717 <entry>Layer A width</entry>
718 <entry>Layer B width</entry>
719 <entry>Layer C width</entry>
720 <entry>total width</entry>
721 </row>
722 <row>
723 <entry>0</entry>
724 <entry>0</entry>
725 <entry>1 .. 13</entry>
726 <entry>1 .. 13</entry>
727 <entry>1 .. 13</entry>
728 <entry>13</entry>
729 </row>
730 <row>
731 <entry>1</entry>
732 <entry>0</entry>
733 <entry>1</entry>
734 <entry>1 .. 13</entry>
735 <entry>1 .. 13</entry>
736 <entry>13</entry>
737 </row>
738 <row>
739 <entry>0</entry>
740 <entry>1</entry>
741 <entry>1</entry>
742 <entry>0</entry>
743 <entry>0</entry>
744 <entry>1</entry>
745 </row>
746 <row>
747 <entry>1</entry>
748 <entry>1</entry>
749 <entry>1</entry>
750 <entry>2</entry>
751 <entry>0</entry>
752 <entry>13</entry>
753 </row>
754 </tbody>
755 </tgroup>
756 </informaltable>
757 </section>
758 <section id="DTV-ISDBT-LAYER-TIME-INTERLEAVING">
759 <title><constant>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</constant></title>
760 <para>Valid values: 0, 1, 2, 4, -1 (AUTO)</para>
761 <para>when DTV_ISDBT_SOUND_BROADCASTING is active, value 8 is also valid.</para>
762 <para>Note: The real time interleaving length depends on the mode (fft-size). The values
763 here are referring to what can be found in the TMCC-structure, as shown in the table below.</para>
764 <informaltable id="isdbt-layer-interleaving-table">
765 <tgroup cols="4" align="center">
766 <tbody>
767 <row>
768 <entry>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</entry>
769 <entry>Mode 1 (2K FFT)</entry>
770 <entry>Mode 2 (4K FFT)</entry>
771 <entry>Mode 3 (8K FFT)</entry>
772 </row>
773 <row>
774 <entry>0</entry>
775 <entry>0</entry>
776 <entry>0</entry>
777 <entry>0</entry>
778 </row>
779 <row>
780 <entry>1</entry>
781 <entry>4</entry>
782 <entry>2</entry>
783 <entry>1</entry>
784 </row>
785 <row>
786 <entry>2</entry>
787 <entry>8</entry>
788 <entry>4</entry>
789 <entry>2</entry>
790 </row>
791 <row>
792 <entry>4</entry>
793 <entry>16</entry>
794 <entry>8</entry>
795 <entry>4</entry>
796 </row>
797 </tbody>
798 </tgroup>
799 </informaltable>
800 </section>
801 <section id="DTV-ATSCMH-FIC-VER">
802 <title><constant>DTV_ATSCMH_FIC_VER</constant></title>
803 <para>Version number of the FIC (Fast Information Channel) signaling data.</para>
804 <para>FIC is used for relaying information to allow rapid service acquisition by the receiver.</para>
805 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
806 </section>
807 <section id="DTV-ATSCMH-PARADE-ID">
808 <title><constant>DTV_ATSCMH_PARADE_ID</constant></title>
809 <para>Parade identification number</para>
810 <para>A parade is a collection of up to eight MH groups, conveying one or two ensembles.</para>
811 <para>Possible values: 0, 1, 2, 3, ..., 126, 127</para>
812 </section>
813 <section id="DTV-ATSCMH-NOG">
814 <title><constant>DTV_ATSCMH_NOG</constant></title>
815 <para>Number of MH groups per MH subframe for a designated parade.</para>
816 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
817 </section>
818 <section id="DTV-ATSCMH-TNOG">
819 <title><constant>DTV_ATSCMH_TNOG</constant></title>
820 <para>Total number of MH groups including all MH groups belonging to all MH parades in one MH subframe.</para>
821 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
822 </section>
823 <section id="DTV-ATSCMH-SGN">
824 <title><constant>DTV_ATSCMH_SGN</constant></title>
825 <para>Start group number.</para>
826 <para>Possible values: 0, 1, 2, 3, ..., 14, 15</para>
827 </section>
828 <section id="DTV-ATSCMH-PRC">
829 <title><constant>DTV_ATSCMH_PRC</constant></title>
830 <para>Parade repetition cycle.</para>
831 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
832 </section>
833 <section id="DTV-ATSCMH-RS-FRAME-MODE">
834 <title><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></title>
835 <para>Reed Solomon (RS) frame mode.</para>
836 <para>Possible values are:</para>
837<table pgwide="1" frame="none" id="atscmh-rs-frame-mode">
838 <title>enum atscmh_rs_frame_mode</title>
839 <tgroup cols="2">
840 &cs-def;
841 <thead>
842 <row>
843 <entry>ID</entry>
844 <entry>Description</entry>
845 </row>
846 </thead>
847 <tbody valign="top">
848 <row>
849 <entry id="ATSCMH-RSFRAME-PRI-ONLY"><constant>ATSCMH_RSFRAME_PRI_ONLY</constant></entry>
850 <entry>Single Frame: There is only a primary RS Frame for all
851 Group Regions.</entry>
852 </row><row>
853 <entry id="ATSCMH-RSFRAME-PRI-SEC"><constant>ATSCMH_RSFRAME_PRI_SEC</constant></entry>
854 <entry>Dual Frame: There are two separate RS Frames: Primary RS
855 Frame for Group Region A and B and Secondary RS Frame for Group
856 Region C and D.</entry>
857 </row>
858 </tbody>
859 </tgroup>
860</table>
861 </section>
862 <section id="DTV-ATSCMH-RS-FRAME-ENSEMBLE">
863 <title><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></title>
864 <para>Reed Solomon(RS) frame ensemble.</para>
865 <para>Possible values are:</para>
866<table pgwide="1" frame="none" id="atscmh-rs-frame-ensemble">
867 <title>enum atscmh_rs_frame_ensemble</title>
868 <tgroup cols="2">
869 &cs-def;
870 <thead>
871 <row>
872 <entry>ID</entry>
873 <entry>Description</entry>
874 </row>
875 </thead>
876 <tbody valign="top">
877 <row>
878 <entry id="ATSCMH-RSFRAME-ENS-PRI"><constant>ATSCMH_RSFRAME_ENS_PRI</constant></entry>
879 <entry>Primary Ensemble.</entry>
880 </row><row>
881 <entry id="ATSCMH-RSFRAME-ENS-SEC"><constant>AATSCMH_RSFRAME_PRI_SEC</constant></entry>
882 <entry>Secondary Ensemble.</entry>
883 </row><row>
884 <entry id="ATSCMH-RSFRAME-RES"><constant>AATSCMH_RSFRAME_RES</constant></entry>
885 <entry>Reserved. Shouldn't be used.</entry>
886 </row>
887 </tbody>
888 </tgroup>
889</table>
890 </section>
891 <section id="DTV-ATSCMH-RS-CODE-MODE-PRI">
892 <title><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></title>
893 <para>Reed Solomon (RS) code mode (primary).</para>
894 <para>Possible values are:</para>
895<table pgwide="1" frame="none" id="atscmh-rs-code-mode">
896 <title>enum atscmh_rs_code_mode</title>
897 <tgroup cols="2">
898 &cs-def;
899 <thead>
900 <row>
901 <entry>ID</entry>
902 <entry>Description</entry>
903 </row>
904 </thead>
905 <tbody valign="top">
906 <row>
907 <entry id="ATSCMH-RSCODE-211-187"><constant>ATSCMH_RSCODE_211_187</constant></entry>
908 <entry>Reed Solomon code (211,187).</entry>
909 </row><row>
910 <entry id="ATSCMH-RSCODE-223-187"><constant>ATSCMH_RSCODE_223_187</constant></entry>
911 <entry>Reed Solomon code (223,187).</entry>
912 </row><row>
913 <entry id="ATSCMH-RSCODE-235-187"><constant>ATSCMH_RSCODE_235_187</constant></entry>
914 <entry>Reed Solomon code (235,187).</entry>
915 </row><row>
916 <entry id="ATSCMH-RSCODE-RES"><constant>ATSCMH_RSCODE_RES</constant></entry>
917 <entry>Reserved. Shouldn't be used.</entry>
918 </row>
919 </tbody>
920 </tgroup>
921</table>
922 </section>
923 <section id="DTV-ATSCMH-RS-CODE-MODE-SEC">
924 <title><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></title>
925 <para>Reed Solomon (RS) code mode (secondary).</para>
926 <para>Possible values are the same as documented on
927 &atscmh-rs-code-mode;:</para>
928 </section>
929 <section id="DTV-ATSCMH-SCCC-BLOCK-MODE">
930 <title><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></title>
931 <para>Series Concatenated Convolutional Code Block Mode.</para>
932 <para>Possible values are:</para>
933<table pgwide="1" frame="none" id="atscmh-sccc-block-mode">
934 <title>enum atscmh_scc_block_mode</title>
935 <tgroup cols="2">
936 &cs-def;
937 <thead>
938 <row>
939 <entry>ID</entry>
940 <entry>Description</entry>
941 </row>
942 </thead>
943 <tbody valign="top">
944 <row>
945 <entry id="ATSCMH-SCCC-BLK-SEP"><constant>ATSCMH_SCCC_BLK_SEP</constant></entry>
946 <entry>Separate SCCC: the SCCC outer code mode shall be set independently
947 for each Group Region (A, B, C, D)</entry>
948 </row><row>
949 <entry id="ATSCMH-SCCC-BLK-COMB"><constant>ATSCMH_SCCC_BLK_COMB</constant></entry>
950 <entry>Combined SCCC: all four Regions shall have the same SCCC outer
951 code mode.</entry>
952 </row><row>
953 <entry id="ATSCMH-SCCC-BLK-RES"><constant>ATSCMH_SCCC_BLK_RES</constant></entry>
954 <entry>Reserved. Shouldn't be used.</entry>
955 </row>
956 </tbody>
957 </tgroup>
958</table>
959 </section>
960 <section id="DTV-ATSCMH-SCCC-CODE-MODE-A">
961 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></title>
962 <para>Series Concatenated Convolutional Code Rate.</para>
963 <para>Possible values are:</para>
964<table pgwide="1" frame="none" id="atscmh-sccc-code-mode">
965 <title>enum atscmh_sccc_code_mode</title>
966 <tgroup cols="2">
967 &cs-def;
968 <thead>
969 <row>
970 <entry>ID</entry>
971 <entry>Description</entry>
972 </row>
973 </thead>
974 <tbody valign="top">
975 <row>
976 <entry id="ATSCMH-SCCC-CODE-HLF"><constant>ATSCMH_SCCC_CODE_HLF</constant></entry>
977 <entry>The outer code rate of a SCCC Block is 1/2 rate.</entry>
978 </row><row>
979 <entry id="ATSCMH-SCCC-CODE-QTR"><constant>ATSCMH_SCCC_CODE_QTR</constant></entry>
980 <entry>The outer code rate of a SCCC Block is 1/4 rate.</entry>
981 </row><row>
982 <entry id="ATSCMH-SCCC-CODE-RES"><constant>ATSCMH_SCCC_CODE_RES</constant></entry>
983 <entry>to be documented.</entry>
984 </row>
985 </tbody>
986 </tgroup>
987</table>
988 </section>
989 <section id="DTV-ATSCMH-SCCC-CODE-MODE-B">
990 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></title>
991 <para>Series Concatenated Convolutional Code Rate.</para>
992 <para>Possible values are the same as documented on
993 &atscmh-sccc-code-mode;.</para>
994 </section>
995 <section id="DTV-ATSCMH-SCCC-CODE-MODE-C">
996 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></title>
997 <para>Series Concatenated Convolutional Code Rate.</para>
998 <para>Possible values are the same as documented on
999 &atscmh-sccc-code-mode;.</para>
1000 </section>
1001 <section id="DTV-ATSCMH-SCCC-CODE-MODE-D">
1002 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></title>
1003 <para>Series Concatenated Convolutional Code Rate.</para>
1004 <para>Possible values are the same as documented on
1005 &atscmh-sccc-code-mode;.</para>
1006 </section>
1007 </section>
1008 <section id="DTV-API-VERSION">
1009 <title><constant>DTV_API_VERSION</constant></title>
1010 <para>Returns the major/minor version of the DVB API</para>
1011 </section>
1012 <section id="DTV-CODE-RATE-HP">
1013 <title><constant>DTV_CODE_RATE_HP</constant></title>
1014 <para>Used on terrestrial transmissions. The acceptable values are
1015 the ones described at &fe-transmit-mode-t;.
1016 </para>
1017 </section>
1018 <section id="DTV-CODE-RATE-LP">
1019 <title><constant>DTV_CODE_RATE_LP</constant></title>
1020 <para>Used on terrestrial transmissions. The acceptable values are
1021 the ones described at &fe-transmit-mode-t;.
1022 </para>
1023
1024 </section>
1025
1026 <section id="DTV-GUARD-INTERVAL">
1027 <title><constant>DTV_GUARD_INTERVAL</constant></title>
1028
1029 <para>Possible values are:</para>
1030
1031<section id="fe-guard-interval-t">
1032<title>Modulation guard interval</title>
1033
1034<table pgwide="1" frame="none" id="fe-guard-interval">
1035 <title>enum fe_guard_interval</title>
1036 <tgroup cols="2">
1037 &cs-def;
1038 <thead>
1039 <row>
1040 <entry>ID</entry>
1041 <entry>Description</entry>
1042 </row>
1043 </thead>
1044 <tbody valign="top">
1045 <row>
1046 <entry id="GUARD-INTERVAL-AUTO"><constant>GUARD_INTERVAL_AUTO</constant></entry>
1047 <entry>Autodetect the guard interval</entry>
1048 </row><row>
1049 <entry id="GUARD-INTERVAL-1-128"><constant>GUARD_INTERVAL_1_128</constant></entry>
1050 <entry>Guard interval 1/128</entry>
1051 </row><row>
1052 <entry id="GUARD-INTERVAL-1-32"><constant>GUARD_INTERVAL_1_32</constant></entry>
1053 <entry>Guard interval 1/32</entry>
1054 </row><row>
1055 <entry id="GUARD-INTERVAL-1-16"><constant>GUARD_INTERVAL_1_16</constant></entry>
1056 <entry>Guard interval 1/16</entry>
1057 </row><row>
1058 <entry id="GUARD-INTERVAL-1-8"><constant>GUARD_INTERVAL_1_8</constant></entry>
1059 <entry>Guard interval 1/8</entry>
1060 </row><row>
1061 <entry id="GUARD-INTERVAL-1-4"><constant>GUARD_INTERVAL_1_4</constant></entry>
1062 <entry>Guard interval 1/4</entry>
1063 </row><row>
1064 <entry id="GUARD-INTERVAL-19-128"><constant>GUARD_INTERVAL_19_128</constant></entry>
1065 <entry>Guard interval 19/128</entry>
1066 </row><row>
1067 <entry id="GUARD-INTERVAL-19-256"><constant>GUARD_INTERVAL_19_256</constant></entry>
1068 <entry>Guard interval 19/256</entry>
1069 </row><row>
1070 <entry id="GUARD-INTERVAL-PN420"><constant>GUARD_INTERVAL_PN420</constant></entry>
1071 <entry>PN length 420 (1/4)</entry>
1072 </row><row>
1073 <entry id="GUARD-INTERVAL-PN595"><constant>GUARD_INTERVAL_PN595</constant></entry>
1074 <entry>PN length 595 (1/6)</entry>
1075 </row><row>
1076 <entry id="GUARD-INTERVAL-PN945"><constant>GUARD_INTERVAL_PN945</constant></entry>
1077 <entry>PN length 945 (1/9)</entry>
1078 </row>
1079 </tbody>
1080 </tgroup>
1081</table>
1082
1083 <para>Notes:</para>
1084 <para>1) If <constant>DTV_GUARD_INTERVAL</constant> is set the <constant>GUARD_INTERVAL_AUTO</constant> the hardware will
1085 try to find the correct guard interval (if capable) and will use TMCC to fill
1086 in the missing parameters.</para>
1087 <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para>
1088 <para>3) DTMB specifies PN420, PN595 and PN945.</para>
1089</section>
1090 </section>
1091 <section id="DTV-TRANSMISSION-MODE">
1092 <title><constant>DTV_TRANSMISSION_MODE</constant></title>
1093
1094 <para>Specifies the number of carriers used by the standard.
1095 This is used only on OFTM-based standards, e. g.
1096 DVB-T/T2, ISDB-T, DTMB</para>
1097
1098<section id="fe-transmit-mode-t">
1099<title>enum fe_transmit_mode: Number of carriers per channel</title>
1100
1101<table pgwide="1" frame="none" id="fe-transmit-mode">
1102 <title>enum fe_transmit_mode</title>
1103 <tgroup cols="2">
1104 &cs-def;
1105 <thead>
1106 <row>
1107 <entry>ID</entry>
1108 <entry>Description</entry>
1109 </row>
1110 </thead>
1111 <tbody valign="top">
1112 <row>
1113 <entry id="TRANSMISSION-MODE-AUTO"><constant>TRANSMISSION_MODE_AUTO</constant></entry>
1114 <entry>Autodetect transmission mode. The hardware will try to find
1115 the correct FFT-size (if capable) to fill in the missing
1116 parameters.</entry>
1117 </row><row>
1118 <entry id="TRANSMISSION-MODE-1K"><constant>TRANSMISSION_MODE_1K</constant></entry>
1119 <entry>Transmission mode 1K</entry>
1120 </row><row>
1121 <entry id="TRANSMISSION-MODE-2K"><constant>TRANSMISSION_MODE_2K</constant></entry>
1122 <entry>Transmission mode 2K</entry>
1123 </row><row>
1124 <entry id="TRANSMISSION-MODE-8K"><constant>TRANSMISSION_MODE_8K</constant></entry>
1125 <entry>Transmission mode 8K</entry>
1126 </row><row>
1127 <entry id="TRANSMISSION-MODE-4K"><constant>TRANSMISSION_MODE_4K</constant></entry>
1128 <entry>Transmission mode 4K</entry>
1129 </row><row>
1130 <entry id="TRANSMISSION-MODE-16K"><constant>TRANSMISSION_MODE_16K</constant></entry>
1131 <entry>Transmission mode 16K</entry>
1132 </row><row>
1133 <entry id="TRANSMISSION-MODE-32K"><constant>TRANSMISSION_MODE_32K</constant></entry>
1134 <entry>Transmission mode 32K</entry>
1135 </row><row>
1136 <entry id="TRANSMISSION-MODE-C1"><constant>TRANSMISSION_MODE_C1</constant></entry>
1137 <entry>Single Carrier (C=1) transmission mode (DTMB)</entry>
1138 </row><row>
1139 <entry id="TRANSMISSION-MODE-C3780"><constant>TRANSMISSION_MODE_C3780</constant></entry>
1140 <entry>Multi Carrier (C=3780) transmission mode (DTMB)</entry>
1141 </row>
1142 </tbody>
1143 </tgroup>
1144</table>
1145
1146
1147 <para>Notes:</para>
1148 <para>1) ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called
1149 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K</para>
1150
1151 <para>2) If <constant>DTV_TRANSMISSION_MODE</constant> is set the <constant>TRANSMISSION_MODE_AUTO</constant> the
1152 hardware will try to find the correct FFT-size (if capable) and will
1153 use TMCC to fill in the missing parameters.</para>
1154 <para>3) DVB-T specifies 2K and 8K as valid sizes.</para>
1155 <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para>
1156 <para>5) DTMB specifies C1 and C3780.</para>
1157</section>
1158 </section>
1159 <section id="DTV-HIERARCHY">
1160 <title><constant>DTV_HIERARCHY</constant></title>
1161 <para>Frontend hierarchy</para>
1162
1163
1164<section id="fe-hierarchy-t">
1165<title>Frontend hierarchy</title>
1166
1167<table pgwide="1" frame="none" id="fe-hierarchy">
1168 <title>enum fe_hierarchy</title>
1169 <tgroup cols="2">
1170 &cs-def;
1171 <thead>
1172 <row>
1173 <entry>ID</entry>
1174 <entry>Description</entry>
1175 </row>
1176 </thead>
1177 <tbody valign="top">
1178 <row>
1179 <entry id="HIERARCHY-NONE"><constant>HIERARCHY_NONE</constant></entry>
1180 <entry>No hierarchy</entry>
1181 </row><row>
1182 <entry id="HIERARCHY-AUTO"><constant>HIERARCHY_AUTO</constant></entry>
1183 <entry>Autodetect hierarchy (if supported)</entry>
1184 </row><row>
1185 <entry id="HIERARCHY-1"><constant>HIERARCHY_1</constant></entry>
1186 <entry>Hierarchy 1</entry>
1187 </row><row>
1188 <entry id="HIERARCHY-2"><constant>HIERARCHY_2</constant></entry>
1189 <entry>Hierarchy 2</entry>
1190 </row><row>
1191 <entry id="HIERARCHY-4"><constant>HIERARCHY_4</constant></entry>
1192 <entry>Hierarchy 4</entry>
1193 </row>
1194 </tbody>
1195 </tgroup>
1196</table>
1197</section>
1198
1199 </section>
1200 <section id="DTV-STREAM-ID">
1201 <title><constant>DTV_STREAM_ID</constant></title>
1202 <para>DVB-S2, DVB-T2 and ISDB-S support the transmission of several
1203 streams on a single transport stream.
1204 This property enables the DVB driver to handle substream filtering,
1205 when supported by the hardware.
1206 By default, substream filtering is disabled.
1207 </para><para>
1208 For DVB-S2 and DVB-T2, the valid substream id range is from 0 to 255.
1209 </para><para>
1210 For ISDB, the valid substream id range is from 1 to 65535.
1211 </para><para>
1212 To disable it, you should use the special macro NO_STREAM_ID_FILTER.
1213 </para><para>
1214 Note: any value outside the id range also disables filtering.
1215 </para>
1216 </section>
1217 <section id="DTV-DVBT2-PLP-ID-LEGACY">
1218 <title><constant>DTV_DVBT2_PLP_ID_LEGACY</constant></title>
1219 <para>Obsolete, replaced with DTV_STREAM_ID.</para>
1220 </section>
1221 <section id="DTV-ENUM-DELSYS">
1222 <title><constant>DTV_ENUM_DELSYS</constant></title>
1223 <para>A Multi standard frontend needs to advertise the delivery systems provided.
1224 Applications need to enumerate the provided delivery systems, before using
1225 any other operation with the frontend. Prior to it's introduction,
1226 FE_GET_INFO was used to determine a frontend type. A frontend which
1227 provides more than a single delivery system, FE_GET_INFO doesn't help much.
1228 Applications which intends to use a multistandard frontend must enumerate
1229 the delivery systems associated with it, rather than trying to use
1230 FE_GET_INFO. In the case of a legacy frontend, the result is just the same
1231 as with FE_GET_INFO, but in a more structured format </para>
1232 </section>
1233 <section id="DTV-INTERLEAVING">
1234 <title><constant>DTV_INTERLEAVING</constant></title>
1235
1236<para>Time interleaving to be used. Currently, used only on DTMB.</para>
1237
1238<table pgwide="1" frame="none" id="fe-interleaving">
1239 <title>enum fe_interleaving</title>
1240 <tgroup cols="2">
1241 &cs-def;
1242 <thead>
1243 <row>
1244 <entry>ID</entry>
1245 <entry>Description</entry>
1246 </row>
1247 </thead>
1248 <tbody valign="top">
1249 <row>
1250 <entry id="INTERLEAVING-NONE"><constant>INTERLEAVING_NONE</constant></entry>
1251 <entry>No interleaving.</entry>
1252 </row><row>
1253 <entry id="INTERLEAVING-AUTO"><constant>INTERLEAVING_AUTO</constant></entry>
1254 <entry>Auto-detect interleaving.</entry>
1255 </row><row>
1256 <entry id="INTERLEAVING-240"><constant>INTERLEAVING_240</constant></entry>
1257 <entry>Interleaving of 240 symbols.</entry>
1258 </row><row>
1259 <entry id="INTERLEAVING-720"><constant>INTERLEAVING_720</constant></entry>
1260 <entry>Interleaving of 720 symbols.</entry>
1261 </row>
1262 </tbody>
1263 </tgroup>
1264</table>
1265
1266 </section>
1267 <section id="DTV-LNA">
1268 <title><constant>DTV_LNA</constant></title>
1269 <para>Low-noise amplifier.</para>
1270 <para>Hardware might offer controllable LNA which can be set manually
1271 using that parameter. Usually LNA could be found only from
1272 terrestrial devices if at all.</para>
1273 <para>Possible values: 0, 1, LNA_AUTO</para>
1274 <para>0, LNA off</para>
1275 <para>1, LNA on</para>
1276 <para>use the special macro LNA_AUTO to set LNA auto</para>
1277 </section>
1278</section>
1279
1280 <section id="frontend-stat-properties">
1281 <title>Frontend statistics indicators</title>
1282 <para>The values are returned via <constant>dtv_property.stat</constant>.
1283 If the property is supported, <constant>dtv_property.stat.len</constant> is bigger than zero.</para>
1284 <para>For most delivery systems, <constant>dtv_property.stat.len</constant>
1285 will be 1 if the stats is supported, and the properties will
1286 return a single value for each parameter.</para>
1287 <para>It should be noted, however, that new OFDM delivery systems
1288 like ISDB can use different modulation types for each group of
1289 carriers. On such standards, up to 3 groups of statistics can be
1290 provided, and <constant>dtv_property.stat.len</constant> is updated
1291 to reflect the "global" metrics, plus one metric per each carrier
1292 group (called "layer" on ISDB).</para>
1293 <para>So, in order to be consistent with other delivery systems, the first
1294 value at <link linkend="dtv-stats"><constant>dtv_property.stat.dtv_stats</constant></link>
1295 array refers to the global metric. The other elements of the array
1296 represent each layer, starting from layer A(index 1),
1297 layer B (index 2) and so on.</para>
1298 <para>The number of filled elements are stored at <constant>dtv_property.stat.len</constant>.</para>
1299 <para>Each element of the <constant>dtv_property.stat.dtv_stats</constant> array consists on two elements:</para>
1300 <itemizedlist mark='opencircle'>
1301 <listitem><para><constant>svalue</constant> or <constant>uvalue</constant>, where
1302 <constant>svalue</constant> is for signed values of the measure (dB measures)
1303 and <constant>uvalue</constant> is for unsigned values (counters, relative scale)</para></listitem>
1304 <listitem><para><constant>scale</constant> - Scale for the value. It can be:</para>
1305 <itemizedlist mark='bullet' id="fecap-scale-params">
1306 <listitem id="FE-SCALE-NOT-AVAILABLE"><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - The parameter is supported by the frontend, but it was not possible to collect it (could be a transitory or permanent condition)</para></listitem>
1307 <listitem id="FE-SCALE-DECIBEL"><para><constant>FE_SCALE_DECIBEL</constant> - parameter is a signed value, measured in 1/1000 dB</para></listitem>
1308 <listitem id="FE-SCALE-RELATIVE"><para><constant>FE_SCALE_RELATIVE</constant> - parameter is a unsigned value, where 0 means 0% and 65535 means 100%.</para></listitem>
1309 <listitem id="FE-SCALE-COUNTER"><para><constant>FE_SCALE_COUNTER</constant> - parameter is a unsigned value that counts the occurrence of an event, like bit error, block error, or lapsed time.</para></listitem>
1310 </itemizedlist>
1311 </listitem>
1312 </itemizedlist>
1313 <section id="DTV-STAT-SIGNAL-STRENGTH">
1314 <title><constant>DTV_STAT_SIGNAL_STRENGTH</constant></title>
1315 <para>Indicates the signal strength level at the analog part of the tuner or of the demod.</para>
1316 <para>Possible scales for this metric are:</para>
1317 <itemizedlist mark='bullet'>
1318 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1319 <listitem><para><constant>FE_SCALE_DECIBEL</constant> - signal strength is in 0.001 dBm units, power measured in miliwatts. This value is generally negative.</para></listitem>
1320 <listitem><para><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for power (actually, 0 to 65535).</para></listitem>
1321 </itemizedlist>
1322 </section>
1323 <section id="DTV-STAT-CNR">
1324 <title><constant>DTV_STAT_CNR</constant></title>
1325 <para>Indicates the Signal to Noise ratio for the main carrier.</para>
1326 <para>Possible scales for this metric are:</para>
1327 <itemizedlist mark='bullet'>
1328 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1329 <listitem><para><constant>FE_SCALE_DECIBEL</constant> - Signal/Noise ratio is in 0.001 dB units.</para></listitem>
1330 <listitem><para><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for Signal/Noise (actually, 0 to 65535).</para></listitem>
1331 </itemizedlist>
1332 </section>
1333 <section id="DTV-STAT-PRE-ERROR-BIT-COUNT">
1334 <title><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></title>
1335 <para>Measures the number of bit errors before the forward error correction (FEC) on the inner coding block (before Viterbi, LDPC or other inner code).</para>
1336 <para>This measure is taken during the same interval as <constant>DTV_STAT_PRE_TOTAL_BIT_COUNT</constant>.</para>
1337 <para>In order to get the BER (Bit Error Rate) measurement, it should be divided by
1338 <link linkend="DTV-STAT-PRE-TOTAL-BIT-COUNT"><constant>DTV_STAT_PRE_TOTAL_BIT_COUNT</constant></link>.</para>
1339 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1340 The frontend may reset it when a channel/transponder is tuned.</para>
1341 <para>Possible scales for this metric are:</para>
1342 <itemizedlist mark='bullet'>
1343 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1344 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted before the inner coding.</para></listitem>
1345 </itemizedlist>
1346 </section>
1347 <section id="DTV-STAT-PRE-TOTAL-BIT-COUNT">
1348 <title><constant>DTV_STAT_PRE_TOTAL_BIT_COUNT</constant></title>
1349 <para>Measures the amount of bits received before the inner code block, during the same period as
1350 <link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link> measurement was taken.</para>
1351 <para>It should be noted that this measurement can be smaller than the total amount of bits on the transport stream,
1352 as the frontend may need to manually restart the measurement, losing some data between each measurement interval.</para>
1353 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1354 The frontend may reset it when a channel/transponder is tuned.</para>
1355 <para>Possible scales for this metric are:</para>
1356 <itemizedlist mark='bullet'>
1357 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1358 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring
1359 <link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link>.</para></listitem>
1360 </itemizedlist>
1361 </section>
1362 <section id="DTV-STAT-POST-ERROR-BIT-COUNT">
1363 <title><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></title>
1364 <para>Measures the number of bit errors after the forward error correction (FEC) done by inner code block (after Viterbi, LDPC or other inner code).</para>
1365 <para>This measure is taken during the same interval as <constant>DTV_STAT_POST_TOTAL_BIT_COUNT</constant>.</para>
1366 <para>In order to get the BER (Bit Error Rate) measurement, it should be divided by
1367 <link linkend="DTV-STAT-POST-TOTAL-BIT-COUNT"><constant>DTV_STAT_POST_TOTAL_BIT_COUNT</constant></link>.</para>
1368 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1369 The frontend may reset it when a channel/transponder is tuned.</para>
1370 <para>Possible scales for this metric are:</para>
1371 <itemizedlist mark='bullet'>
1372 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1373 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted after the inner coding.</para></listitem>
1374 </itemizedlist>
1375 </section>
1376 <section id="DTV-STAT-POST-TOTAL-BIT-COUNT">
1377 <title><constant>DTV_STAT_POST_TOTAL_BIT_COUNT</constant></title>
1378 <para>Measures the amount of bits received after the inner coding, during the same period as
1379 <link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link> measurement was taken.</para>
1380 <para>It should be noted that this measurement can be smaller than the total amount of bits on the transport stream,
1381 as the frontend may need to manually restart the measurement, losing some data between each measurement interval.</para>
1382 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1383 The frontend may reset it when a channel/transponder is tuned.</para>
1384 <para>Possible scales for this metric are:</para>
1385 <itemizedlist mark='bullet'>
1386 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1387 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring
1388 <link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link>.</para></listitem>
1389 </itemizedlist>
1390 </section>
1391 <section id="DTV-STAT-ERROR-BLOCK-COUNT">
1392 <title><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></title>
1393 <para>Measures the number of block errors after the outer forward error correction coding (after Reed-Solomon or other outer code).</para>
1394 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1395 The frontend may reset it when a channel/transponder is tuned.</para>
1396 <para>Possible scales for this metric are:</para>
1397 <itemizedlist mark='bullet'>
1398 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1399 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of error blocks counted after the outer coding.</para></listitem>
1400 </itemizedlist>
1401 </section>
1402 <section id="DTV-STAT-TOTAL-BLOCK-COUNT">
1403 <title><constant>DTV-STAT_TOTAL_BLOCK_COUNT</constant></title>
1404 <para>Measures the total number of blocks received during the same period as
1405 <link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link> measurement was taken.</para>
1406 <para>It can be used to calculate the PER indicator, by dividing
1407 <link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link>
1408 by <link linkend="DTV-STAT-TOTAL-BLOCK-COUNT"><constant>DTV-STAT-TOTAL-BLOCK-COUNT</constant></link>.</para>
1409 <para>Possible scales for this metric are:</para>
1410 <itemizedlist mark='bullet'>
1411 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1412 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of blocks counted while measuring
1413 <link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link>.</para></listitem>
1414 </itemizedlist>
1415 </section>
1416 </section>
1417
1418 <section id="frontend-property-terrestrial-systems">
1419 <title>Properties used on terrestrial delivery systems</title>
1420 <section id="dvbt-params">
1421 <title>DVB-T delivery system</title>
1422 <para>The following parameters are valid for DVB-T:</para>
1423 <itemizedlist mark='opencircle'>
1424 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1425 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1426 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1427 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1428 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1429 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1430 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1431 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1432 <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
1433 <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
1434 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
1435 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
1436 <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
1437 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1438 </itemizedlist>
1439 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1440 </section>
1441 <section id="dvbt2-params">
1442 <title>DVB-T2 delivery system</title>
1443 <para>DVB-T2 support is currently in the early stages
1444 of development, so expect that this section maygrow and become
1445 more detailed with time.</para>
1446 <para>The following parameters are valid for DVB-T2:</para>
1447 <itemizedlist mark='opencircle'>
1448 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1449 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1450 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1451 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1452 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1453 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1454 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1455 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1456 <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
1457 <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
1458 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
1459 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
1460 <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
1461 <listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
1462 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1463 </itemizedlist>
1464 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1465 </section>
1466 <section id="isdbt">
1467 <title>ISDB-T delivery system</title>
1468 <para>This ISDB-T/ISDB-Tsb API extension should reflect all information
1469 needed to tune any ISDB-T/ISDB-Tsb hardware. Of course it is possible
1470 that some very sophisticated devices won't need certain parameters to
1471 tune.</para>
1472 <para>The information given here should help application writers to know how
1473 to handle ISDB-T and ISDB-Tsb hardware using the Linux DVB-API.</para>
1474 <para>The details given here about ISDB-T and ISDB-Tsb are just enough to
1475 basically show the dependencies between the needed parameter values,
1476 but surely some information is left out. For more detailed information
1477 see the following documents:</para>
1478 <para>ARIB STD-B31 - "Transmission System for Digital Terrestrial
1479 Television Broadcasting" and</para>
1480 <para>ARIB TR-B14 - "Operational Guidelines for Digital Terrestrial
1481 Television Broadcasting".</para>
1482 <para>In order to understand the ISDB specific parameters,
1483 one has to have some knowledge the channel structure in
1484 ISDB-T and ISDB-Tsb. I.e. it has to be known to
1485 the reader that an ISDB-T channel consists of 13 segments,
1486 that it can have up to 3 layer sharing those segments,
1487 and things like that.</para>
1488 <para>The following parameters are valid for ISDB-T:</para>
1489 <itemizedlist mark='opencircle'>
1490 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1491 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1492 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1493 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1494 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1495 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1496 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1497 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
1498 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
1499 <listitem><para><link linkend="DTV-ISDBT-LAYER-ENABLED"><constant>DTV_ISDBT_LAYER_ENABLED</constant></link></para></listitem>
1500 <listitem><para><link linkend="DTV-ISDBT-PARTIAL-RECEPTION"><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></link></para></listitem>
1501 <listitem><para><link linkend="DTV-ISDBT-SOUND-BROADCASTING"><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></link></para></listitem>
1502 <listitem><para><link linkend="DTV-ISDBT-SB-SUBCHANNEL-ID"><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></link></para></listitem>
1503 <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-IDX"><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></link></para></listitem>
1504 <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-COUNT"><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></link></para></listitem>
1505 <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERA_FEC</constant></link></para></listitem>
1506 <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERA_MODULATION</constant></link></para></listitem>
1507 <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant></link></para></listitem>
1508 <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERA_TIME_INTERLEAVING</constant></link></para></listitem>
1509 <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERB_FEC</constant></link></para></listitem>
1510 <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERB_MODULATION</constant></link></para></listitem>
1511 <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERB_SEGMENT_COUNT</constant></link></para></listitem>
1512 <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERB_TIME_INTERLEAVING</constant></link></para></listitem>
1513 <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERC_FEC</constant></link></para></listitem>
1514 <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERC_MODULATION</constant></link></para></listitem>
1515 <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERC_SEGMENT_COUNT</constant></link></para></listitem>
1516 <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERC_TIME_INTERLEAVING</constant></link></para></listitem>
1517 </itemizedlist>
1518 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1519 </section>
1520 <section id="atsc-params">
1521 <title>ATSC delivery system</title>
1522 <para>The following parameters are valid for ATSC:</para>
1523 <itemizedlist mark='opencircle'>
1524 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1525 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1526 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1527 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1528 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1529 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1530 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1531 </itemizedlist>
1532 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1533 </section>
1534 <section id="atscmh-params">
1535 <title>ATSC-MH delivery system</title>
1536 <para>The following parameters are valid for ATSC-MH:</para>
1537 <itemizedlist mark='opencircle'>
1538 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1539 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1540 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1541 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1542 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1543 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1544 <listitem><para><link linkend="DTV-ATSCMH-FIC-VER"><constant>DTV_ATSCMH_FIC_VER</constant></link></para></listitem>
1545 <listitem><para><link linkend="DTV-ATSCMH-PARADE-ID"><constant>DTV_ATSCMH_PARADE_ID</constant></link></para></listitem>
1546 <listitem><para><link linkend="DTV-ATSCMH-NOG"><constant>DTV_ATSCMH_NOG</constant></link></para></listitem>
1547 <listitem><para><link linkend="DTV-ATSCMH-TNOG"><constant>DTV_ATSCMH_TNOG</constant></link></para></listitem>
1548 <listitem><para><link linkend="DTV-ATSCMH-SGN"><constant>DTV_ATSCMH_SGN</constant></link></para></listitem>
1549 <listitem><para><link linkend="DTV-ATSCMH-PRC"><constant>DTV_ATSCMH_PRC</constant></link></para></listitem>
1550 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-MODE"><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></link></para></listitem>
1551 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-ENSEMBLE"><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></link></para></listitem>
1552 <listitem><para><link linkend="DTV-ATSCMH-RS-CODE-MODE-PRI"><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></link></para></listitem>
1553 <listitem><para><link linkend="DTV-ATSCMH-RS-CODE-MODE-SEC"><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></link></para></listitem>
1554 <listitem><para><link linkend="DTV-ATSCMH-SCCC-BLOCK-MODE"><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></link></para></listitem>
1555 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-A"><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></link></para></listitem>
1556 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-B"><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></link></para></listitem>
1557 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-C"><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></link></para></listitem>
1558 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem>
1559 </itemizedlist>
1560 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1561 </section>
1562 <section id="dtmb-params">
1563 <title>DTMB delivery system</title>
1564 <para>The following parameters are valid for DTMB:</para>
1565 <itemizedlist mark='opencircle'>
1566 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1567 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1568 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1569 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1570 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1571 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1572 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1573 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1574 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1575 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
1576 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
1577 <listitem><para><link linkend="DTV-INTERLEAVING"><constant>DTV_INTERLEAVING</constant></link></para></listitem>
1578 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1579 </itemizedlist>
1580 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1581 </section>
1582 </section>
1583 <section id="frontend-property-cable-systems">
1584 <title>Properties used on cable delivery systems</title>
1585 <section id="dvbc-params">
1586 <title>DVB-C delivery system</title>
1587 <para>The DVB-C Annex-A is the widely used cable standard. Transmission uses QAM modulation.</para>
1588 <para>The DVB-C Annex-C is optimized for 6MHz, and is used in Japan. It supports a subset of the Annex A modulation types, and a roll-off of 0.13, instead of 0.15</para>
1589 <para>The following parameters are valid for DVB-C Annex A/C:</para>
1590 <itemizedlist mark='opencircle'>
1591 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1592 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1593 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1594 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1595 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1596 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1597 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1598 <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
1599 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1600 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1601 </itemizedlist>
1602 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1603 </section>
1604 <section id="dvbc-annex-b-params">
1605 <title>DVB-C Annex B delivery system</title>
1606 <para>The DVB-C Annex-B is only used on a few Countries like the United States.</para>
1607 <para>The following parameters are valid for DVB-C Annex B:</para>
1608 <itemizedlist mark='opencircle'>
1609 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1610 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1611 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1612 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1613 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1614 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1615 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1616 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1617 </itemizedlist>
1618 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1619 </section>
1620 </section>
1621 <section id="frontend-property-satellite-systems">
1622 <title>Properties used on satellite delivery systems</title>
1623 <section id="dvbs-params">
1624 <title>DVB-S delivery system</title>
1625 <para>The following parameters are valid for DVB-S:</para>
1626 <itemizedlist mark='opencircle'>
1627 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1628 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1629 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1630 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1631 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1632 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1633 <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
1634 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1635 <listitem><para><link linkend="DTV-VOLTAGE"><constant>DTV_VOLTAGE</constant></link></para></listitem>
1636 <listitem><para><link linkend="DTV-TONE"><constant>DTV_TONE</constant></link></para></listitem>
1637 </itemizedlist>
1638 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1639 <para>Future implementations might add those two missing parameters:</para>
1640 <itemizedlist mark='opencircle'>
1641 <listitem><para><link linkend="DTV-DISEQC-MASTER"><constant>DTV_DISEQC_MASTER</constant></link></para></listitem>
1642 <listitem><para><link linkend="DTV-DISEQC-SLAVE-REPLY"><constant>DTV_DISEQC_SLAVE_REPLY</constant></link></para></listitem>
1643 </itemizedlist>
1644 </section>
1645 <section id="dvbs2-params">
1646 <title>DVB-S2 delivery system</title>
1647 <para>In addition to all parameters valid for DVB-S, DVB-S2 supports the following parameters:</para>
1648 <itemizedlist mark='opencircle'>
1649 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1650 <listitem><para><link linkend="DTV-PILOT"><constant>DTV_PILOT</constant></link></para></listitem>
1651 <listitem><para><link linkend="DTV-ROLLOFF"><constant>DTV_ROLLOFF</constant></link></para></listitem>
1652 <listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
1653 </itemizedlist>
1654 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1655 </section>
1656 <section id="turbo-params">
1657 <title>Turbo code delivery system</title>
1658 <para>In addition to all parameters valid for DVB-S, turbo code supports the following parameters:</para>
1659 <itemizedlist mark='opencircle'>
1660 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1661 </itemizedlist>
1662 </section>
1663 <section id="isdbs-params">
1664 <title>ISDB-S delivery system</title>
1665 <para>The following parameters are valid for ISDB-S:</para>
1666 <itemizedlist mark='opencircle'>
1667 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1668 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1669 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1670 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1671 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1672 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1673 <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
1674 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1675 <listitem><para><link linkend="DTV-VOLTAGE"><constant>DTV_VOLTAGE</constant></link></para></listitem>
1676 <listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
1677 </itemizedlist>
1678 </section>
1679 </section>
1680</section>
Documentation/DocBook/media/dvb/dvbstb.pdf+0−0

Binary file not shown.

Documentation/DocBook/media/dvb/examples.xml+0−367
@@ -1,367 +0,0 @@
1<title>Examples</title>
2<para>In this section we would like to present some examples for using the DVB API.
3</para>
4<para>NOTE: This section is out of date, and the code below won't even
5 compile. Please refer to the
6 <ulink url="https://linuxtv.org/docs/libdvbv5/index.html">libdvbv5</ulink>
7 for updated/recommended examples.
8</para>
9
10<section id="tuning">
11<title>Tuning</title>
12<para>We will start with a generic tuning subroutine that uses the frontend and SEC, as well as
13the demux devices. The example is given for QPSK tuners, but can easily be adjusted for
14QAM.
15</para>
16<programlisting>
17 #include &#x003C;sys/ioctl.h&#x003E;
18 #include &#x003C;stdio.h&#x003E;
19 #include &#x003C;stdint.h&#x003E;
20 #include &#x003C;sys/types.h&#x003E;
21 #include &#x003C;sys/stat.h&#x003E;
22 #include &#x003C;fcntl.h&#x003E;
23 #include &#x003C;time.h&#x003E;
24 #include &#x003C;unistd.h&#x003E;
25
26 #include &#x003C;linux/dvb/dmx.h&#x003E;
27 #include &#x003C;linux/dvb/frontend.h&#x003E;
28 #include &#x003C;linux/dvb/sec.h&#x003E;
29 #include &#x003C;sys/poll.h&#x003E;
30
31 #define DMX "/dev/dvb/adapter0/demux1"
32 #define FRONT "/dev/dvb/adapter0/frontend1"
33 #define SEC "/dev/dvb/adapter0/sec1"
34
35 /&#x22C6; routine for checking if we have a signal and other status information&#x22C6;/
36 int FEReadStatus(int fd, fe_status_t &#x22C6;stat)
37 {
38 int ans;
39
40 if ( (ans = ioctl(fd,FE_READ_STATUS,stat) &#x003C; 0)){
41 perror("FE READ STATUS: ");
42 return -1;
43 }
44
45 if (&#x22C6;stat &amp; FE_HAS_POWER)
46 printf("FE HAS POWER\n");
47
48 if (&#x22C6;stat &amp; FE_HAS_SIGNAL)
49 printf("FE HAS SIGNAL\n");
50
51 if (&#x22C6;stat &amp; FE_SPECTRUM_INV)
52 printf("SPEKTRUM INV\n");
53
54 return 0;
55 }
56
57
58 /&#x22C6; tune qpsk &#x22C6;/
59 /&#x22C6; freq: frequency of transponder &#x22C6;/
60 /&#x22C6; vpid, apid, tpid: PIDs of video, audio and teletext TS packets &#x22C6;/
61 /&#x22C6; diseqc: DiSEqC address of the used LNB &#x22C6;/
62 /&#x22C6; pol: Polarisation &#x22C6;/
63 /&#x22C6; srate: Symbol Rate &#x22C6;/
64 /&#x22C6; fec. FEC &#x22C6;/
65 /&#x22C6; lnb_lof1: local frequency of lower LNB band &#x22C6;/
66 /&#x22C6; lnb_lof2: local frequency of upper LNB band &#x22C6;/
67 /&#x22C6; lnb_slof: switch frequency of LNB &#x22C6;/
68
69 int set_qpsk_channel(int freq, int vpid, int apid, int tpid,
70 int diseqc, int pol, int srate, int fec, int lnb_lof1,
71 int lnb_lof2, int lnb_slof)
72 {
73 struct secCommand scmd;
74 struct secCmdSequence scmds;
75 struct dmx_pes_filter_params pesFilterParams;
76 FrontendParameters frp;
77 struct pollfd pfd[1];
78 FrontendEvent event;
79 int demux1, demux2, demux3, front;
80
81 frequency = (uint32_t) freq;
82 symbolrate = (uint32_t) srate;
83
84 if((front = open(FRONT,O_RDWR)) &#x003C; 0){
85 perror("FRONTEND DEVICE: ");
86 return -1;
87 }
88
89 if((sec = open(SEC,O_RDWR)) &#x003C; 0){
90 perror("SEC DEVICE: ");
91 return -1;
92 }
93
94 if (demux1 &#x003C; 0){
95 if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
96 &#x003C; 0){
97 perror("DEMUX DEVICE: ");
98 return -1;
99 }
100 }
101
102 if (demux2 &#x003C; 0){
103 if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
104 &#x003C; 0){
105 perror("DEMUX DEVICE: ");
106 return -1;
107 }
108 }
109
110 if (demux3 &#x003C; 0){
111 if ((demux3=open(DMX, O_RDWR|O_NONBLOCK))
112 &#x003C; 0){
113 perror("DEMUX DEVICE: ");
114 return -1;
115 }
116 }
117
118 if (freq &#x003C; lnb_slof) {
119 frp.Frequency = (freq - lnb_lof1);
120 scmds.continuousTone = SEC_TONE_OFF;
121 } else {
122 frp.Frequency = (freq - lnb_lof2);
123 scmds.continuousTone = SEC_TONE_ON;
124 }
125 frp.Inversion = INVERSION_AUTO;
126 if (pol) scmds.voltage = SEC_VOLTAGE_18;
127 else scmds.voltage = SEC_VOLTAGE_13;
128
129 scmd.type=0;
130 scmd.u.diseqc.addr=0x10;
131 scmd.u.diseqc.cmd=0x38;
132 scmd.u.diseqc.numParams=1;
133 scmd.u.diseqc.params[0] = 0xF0 | ((diseqc &#x22C6; 4) &amp; 0x0F) |
134 (scmds.continuousTone == SEC_TONE_ON ? 1 : 0) |
135 (scmds.voltage==SEC_VOLTAGE_18 ? 2 : 0);
136
137 scmds.miniCommand=SEC_MINI_NONE;
138 scmds.numCommands=1;
139 scmds.commands=&amp;scmd;
140 if (ioctl(sec, SEC_SEND_SEQUENCE, &amp;scmds) &#x003C; 0){
141 perror("SEC SEND: ");
142 return -1;
143 }
144
145 if (ioctl(sec, SEC_SEND_SEQUENCE, &amp;scmds) &#x003C; 0){
146 perror("SEC SEND: ");
147 return -1;
148 }
149
150 frp.u.qpsk.SymbolRate = srate;
151 frp.u.qpsk.FEC_inner = fec;
152
153 if (ioctl(front, FE_SET_FRONTEND, &amp;frp) &#x003C; 0){
154 perror("QPSK TUNE: ");
155 return -1;
156 }
157
158 pfd[0].fd = front;
159 pfd[0].events = POLLIN;
160
161 if (poll(pfd,1,3000)){
162 if (pfd[0].revents &amp; POLLIN){
163 printf("Getting QPSK event\n");
164 if ( ioctl(front, FE_GET_EVENT, &amp;event)
165
166 == -EOVERFLOW){
167 perror("qpsk get event");
168 return -1;
169 }
170 printf("Received ");
171 switch(event.type){
172 case FE_UNEXPECTED_EV:
173 printf("unexpected event\n");
174 return -1;
175 case FE_FAILURE_EV:
176 printf("failure event\n");
177 return -1;
178
179 case FE_COMPLETION_EV:
180 printf("completion event\n");
181 }
182 }
183 }
184
185
186 pesFilterParams.pid = vpid;
187 pesFilterParams.input = DMX_IN_FRONTEND;
188 pesFilterParams.output = DMX_OUT_DECODER;
189 pesFilterParams.pes_type = DMX_PES_VIDEO;
190 pesFilterParams.flags = DMX_IMMEDIATE_START;
191 if (ioctl(demux1, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
192 perror("set_vpid");
193 return -1;
194 }
195
196 pesFilterParams.pid = apid;
197 pesFilterParams.input = DMX_IN_FRONTEND;
198 pesFilterParams.output = DMX_OUT_DECODER;
199 pesFilterParams.pes_type = DMX_PES_AUDIO;
200 pesFilterParams.flags = DMX_IMMEDIATE_START;
201 if (ioctl(demux2, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
202 perror("set_apid");
203 return -1;
204 }
205
206 pesFilterParams.pid = tpid;
207 pesFilterParams.input = DMX_IN_FRONTEND;
208 pesFilterParams.output = DMX_OUT_DECODER;
209 pesFilterParams.pes_type = DMX_PES_TELETEXT;
210 pesFilterParams.flags = DMX_IMMEDIATE_START;
211 if (ioctl(demux3, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
212 perror("set_tpid");
213 return -1;
214 }
215
216 return has_signal(fds);
217 }
218
219</programlisting>
220<para>The program assumes that you are using a universal LNB and a standard DiSEqC
221switch with up to 4 addresses. Of course, you could build in some more checking if
222tuning was successful and maybe try to repeat the tuning process. Depending on the
223external hardware, i.e. LNB and DiSEqC switch, and weather conditions this may be
224necessary.
225</para>
226</section>
227
228<section id="the_dvr_device">
229<title>The DVR device</title>
230<para>The following program code shows how to use the DVR device for recording.
231</para>
232<programlisting>
233 #include &#x003C;sys/ioctl.h&#x003E;
234 #include &#x003C;stdio.h&#x003E;
235 #include &#x003C;stdint.h&#x003E;
236 #include &#x003C;sys/types.h&#x003E;
237 #include &#x003C;sys/stat.h&#x003E;
238 #include &#x003C;fcntl.h&#x003E;
239 #include &#x003C;time.h&#x003E;
240 #include &#x003C;unistd.h&#x003E;
241
242 #include &#x003C;linux/dvb/dmx.h&#x003E;
243 #include &#x003C;linux/dvb/video.h&#x003E;
244 #include &#x003C;sys/poll.h&#x003E;
245 #define DVR "/dev/dvb/adapter0/dvr1"
246 #define AUDIO "/dev/dvb/adapter0/audio1"
247 #define VIDEO "/dev/dvb/adapter0/video1"
248
249 #define BUFFY (188&#x22C6;20)
250 #define MAX_LENGTH (1024&#x22C6;1024&#x22C6;5) /&#x22C6; record 5MB &#x22C6;/
251
252
253 /&#x22C6; switch the demuxes to recording, assuming the transponder is tuned &#x22C6;/
254
255 /&#x22C6; demux1, demux2: file descriptor of video and audio filters &#x22C6;/
256 /&#x22C6; vpid, apid: PIDs of video and audio channels &#x22C6;/
257
258 int switch_to_record(int demux1, int demux2, uint16_t vpid, uint16_t apid)
259 {
260 struct dmx_pes_filter_params pesFilterParams;
261
262 if (demux1 &#x003C; 0){
263 if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
264 &#x003C; 0){
265 perror("DEMUX DEVICE: ");
266 return -1;
267 }
268 }
269
270 if (demux2 &#x003C; 0){
271 if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
272 &#x003C; 0){
273 perror("DEMUX DEVICE: ");
274 return -1;
275 }
276 }
277
278 pesFilterParams.pid = vpid;
279 pesFilterParams.input = DMX_IN_FRONTEND;
280 pesFilterParams.output = DMX_OUT_TS_TAP;
281 pesFilterParams.pes_type = DMX_PES_VIDEO;
282 pesFilterParams.flags = DMX_IMMEDIATE_START;
283 if (ioctl(demux1, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
284 perror("DEMUX DEVICE");
285 return -1;
286 }
287 pesFilterParams.pid = apid;
288 pesFilterParams.input = DMX_IN_FRONTEND;
289 pesFilterParams.output = DMX_OUT_TS_TAP;
290 pesFilterParams.pes_type = DMX_PES_AUDIO;
291 pesFilterParams.flags = DMX_IMMEDIATE_START;
292 if (ioctl(demux2, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
293 perror("DEMUX DEVICE");
294 return -1;
295 }
296 return 0;
297 }
298
299 /&#x22C6; start recording MAX_LENGTH , assuming the transponder is tuned &#x22C6;/
300
301 /&#x22C6; demux1, demux2: file descriptor of video and audio filters &#x22C6;/
302 /&#x22C6; vpid, apid: PIDs of video and audio channels &#x22C6;/
303 int record_dvr(int demux1, int demux2, uint16_t vpid, uint16_t apid)
304 {
305 int i;
306 int len;
307 int written;
308 uint8_t buf[BUFFY];
309 uint64_t length;
310 struct pollfd pfd[1];
311 int dvr, dvr_out;
312
313 /&#x22C6; open dvr device &#x22C6;/
314 if ((dvr = open(DVR, O_RDONLY|O_NONBLOCK)) &#x003C; 0){
315 perror("DVR DEVICE");
316 return -1;
317 }
318
319 /&#x22C6; switch video and audio demuxes to dvr &#x22C6;/
320 printf ("Switching dvr on\n");
321 i = switch_to_record(demux1, demux2, vpid, apid);
322 printf("finished: ");
323
324 printf("Recording %2.0f MB of test file in TS format\n",
325 MAX_LENGTH/(1024.0&#x22C6;1024.0));
326 length = 0;
327
328 /&#x22C6; open output file &#x22C6;/
329 if ((dvr_out = open(DVR_FILE,O_WRONLY|O_CREAT
330 |O_TRUNC, S_IRUSR|S_IWUSR
331 |S_IRGRP|S_IWGRP|S_IROTH|
332 S_IWOTH)) &#x003C; 0){
333 perror("Can't open file for dvr test");
334 return -1;
335 }
336
337 pfd[0].fd = dvr;
338 pfd[0].events = POLLIN;
339
340 /&#x22C6; poll for dvr data and write to file &#x22C6;/
341 while (length &#x003C; MAX_LENGTH ) {
342 if (poll(pfd,1,1)){
343 if (pfd[0].revents &amp; POLLIN){
344 len = read(dvr, buf, BUFFY);
345 if (len &#x003C; 0){
346 perror("recording");
347 return -1;
348 }
349 if (len &#x003E; 0){
350 written = 0;
351 while (written &#x003C; len)
352 written +=
353 write (dvr_out,
354 buf, len);
355 length += len;
356 printf("written %2.0f MB\r",
357 length/1024./1024.);
358 }
359 }
360 }
361 }
362 return 0;
363 }
364
365</programlisting>
366
367</section>
Documentation/DocBook/media/dvb/fe-diseqc-recv-slave-reply.xml+0−78
@@ -1,78 +0,0 @@
1<refentry id="FE_DISEQC_RECV_SLAVE_REPLY">
2 <refmeta>
3 <refentrytitle>ioctl FE_DISEQC_RECV_SLAVE_REPLY</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_DISEQC_RECV_SLAVE_REPLY</refname>
9 <refpurpose>Receives reply from a DiSEqC 2.0 command</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct dvb_diseqc_slave_reply *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_DISEQC_RECV_SLAVE_REPLY</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>argp</parameter></term>
40 <listitem>
41 <para>pointer to &dvb-diseqc-slave-reply;</para>
42 </listitem>
43 </varlistentry>
44 </variablelist>
45 </refsect1>
46
47 <refsect1>
48 <title>Description</title>
49
50 <para>Receives reply from a DiSEqC 2.0 command.</para>
51&return-value-dvb;
52
53<table pgwide="1" frame="none" id="dvb-diseqc-slave-reply">
54 <title>struct <structname>dvb_diseqc_slave_reply</structname></title>
55 <tgroup cols="3">
56 &cs-str;
57 <tbody valign="top">
58 <row>
59 <entry>uint8_t</entry>
60 <entry>msg[4]</entry>
61 <entry>DiSEqC message (framing, data[3])</entry>
62 </row><row>
63 <entry>uint8_t</entry>
64 <entry>msg_len</entry>
65 <entry>Length of the DiSEqC message. Valid values are 0 to 4,
66 where 0 means no msg</entry>
67 </row><row>
68 <entry>int</entry>
69 <entry>timeout</entry>
70 <entry>Return from ioctl after timeout ms with errorcode when no
71 message was received</entry>
72 </row>
73 </tbody>
74 </tgroup>
75</table>
76
77</refsect1>
78</refentry>
Documentation/DocBook/media/dvb/fe-diseqc-reset-overload.xml+0−51
@@ -1,51 +0,0 @@
1<refentry id="FE_DISEQC_RESET_OVERLOAD">
2 <refmeta>
3 <refentrytitle>ioctl FE_DISEQC_RESET_OVERLOAD</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_DISEQC_RESET_OVERLOAD</refname>
9 <refpurpose>Restores the power to the antenna subsystem, if it was powered
10 off due to power overload.</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>NULL</paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fe_fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>FE_DISEQC_RESET_OVERLOAD</para>
37 </listitem>
38 </varlistentry>
39 </variablelist>
40 </refsect1>
41
42 <refsect1>
43 <title>Description</title>
44
45 <para>If the bus has been automatically powered off due to power overload, this ioctl
46 call restores the power to the bus. The call requires read/write access to the
47 device. This call has no effect if the device is manually powered off. Not all
48 DVB adapters support this ioctl.</para>
49&return-value-dvb;
50</refsect1>
51</refentry>
Documentation/DocBook/media/dvb/fe-diseqc-send-burst.xml+0−89
@@ -1,89 +0,0 @@
1<refentry id="FE_DISEQC_SEND_BURST">
2 <refmeta>
3 <refentrytitle>ioctl FE_DISEQC_SEND_BURST</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_DISEQC_SEND_BURST</refname>
9 <refpurpose>Sends a 22KHz tone burst for 2x1 mini DiSEqC satellite selection.</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>enum fe_sec_mini_cmd *<parameter>tone</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_DISEQC_SEND_BURST</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>tone</parameter></term>
40 <listitem>
41 <para>pointer to &fe-sec-mini-cmd;</para>
42 </listitem>
43 </varlistentry>
44 </variablelist>
45 </refsect1>
46
47 <refsect1>
48 <title>Description</title>
49
50<para>This ioctl is used to set the generation of a 22kHz tone burst for mini
51 DiSEqC satellite
52 selection for 2x1 switches.
53 This call requires read/write permissions.</para>
54<para>It provides support for what's specified at
55 <ulink url="http://www.eutelsat.com/files/contributed/satellites/pdf/Diseqc/associated%20docs/simple_tone_burst_detec.pdf">Digital Satellite Equipment Control
56 (DiSEqC) - Simple "ToneBurst" Detection Circuit specification.</ulink>
57 </para>
58&return-value-dvb;
59</refsect1>
60
61<refsect1 id="fe-sec-mini-cmd-t">
62<title>enum fe_sec_mini_cmd</title>
63
64<table pgwide="1" frame="none" id="fe-sec-mini-cmd">
65 <title>enum fe_sec_mini_cmd</title>
66 <tgroup cols="2">
67 &cs-def;
68 <thead>
69 <row>
70 <entry>ID</entry>
71 <entry>Description</entry>
72 </row>
73 </thead>
74 <tbody valign="top">
75 <row>
76 <entry align="char" id="SEC-MINI-A"><constant>SEC_MINI_A</constant></entry>
77 <entry align="char">Sends a mini-DiSEqC 22kHz '0' Tone Burst to
78 select satellite-A</entry>
79 </row><row>
80 <entry align="char" id="SEC-MINI-B"><constant>SEC_MINI_B</constant></entry>
81 <entry align="char">Sends a mini-DiSEqC 22kHz '1' Data Burst to
82 select satellite-B</entry>
83 </row>
84 </tbody>
85 </tgroup>
86</table>
87</refsect1>
88
89</refentry>
Documentation/DocBook/media/dvb/fe-diseqc-send-master-cmd.xml+0−72
@@ -1,72 +0,0 @@
1<refentry id="FE_DISEQC_SEND_MASTER_CMD">
2 <refmeta>
3 <refentrytitle>ioctl FE_DISEQC_SEND_MASTER_CMD</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_DISEQC_SEND_MASTER_CMD</refname>
9 <refpurpose>Sends a DiSEqC command</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct dvb_diseqc_master_cmd *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_DISEQC_SEND_MASTER_CMD</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>argp</parameter></term>
40 <listitem>
41 <para>pointer to &dvb-diseqc-master-cmd;</para>
42 </listitem>
43 </varlistentry>
44 </variablelist>
45 </refsect1>
46
47 <refsect1>
48 <title>Description</title>
49
50 <para>Sends a DiSEqC command to the antenna subsystem.</para>
51&return-value-dvb;
52
53<table pgwide="1" frame="none" id="dvb-diseqc-master-cmd">
54 <title>struct <structname>dvb_diseqc_master_cmd</structname></title>
55 <tgroup cols="3">
56 &cs-str;
57 <tbody valign="top">
58 <row>
59 <entry>uint8_t</entry>
60 <entry>msg[6]</entry>
61 <entry>DiSEqC message (framing, address, command, data[3])</entry>
62 </row><row>
63 <entry>uint8_t</entry>
64 <entry>msg_len</entry>
65 <entry>Length of the DiSEqC message. Valid values are 3 to 6</entry>
66 </row>
67 </tbody>
68 </tgroup>
69</table>
70
71</refsect1>
72</refentry>
Documentation/DocBook/media/dvb/fe-enable-high-lnb-voltage.xml+0−61
@@ -1,61 +0,0 @@
1<refentry id="FE_ENABLE_HIGH_LNB_VOLTAGE">
2 <refmeta>
3 <refentrytitle>ioctl FE_ENABLE_HIGH_LNB_VOLTAGE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_ENABLE_HIGH_LNB_VOLTAGE</refname>
9 <refpurpose>Select output DC level between normal LNBf voltages or higher
10 LNBf voltages.</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>unsigned int <parameter>high</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fe_fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>FE_ENABLE_HIGH_LNB_VOLTAGE</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>high</parameter></term>
41 <listitem>
42 <para>Valid flags:</para>
43 <itemizedlist>
44 <listitem><para>0 - normal 13V and 18V.</para></listitem>
45 <listitem><para>&gt;0 - enables slightly higher voltages instead of
46 13/18V, in order to compensate for long antenna cables.</para></listitem>
47 </itemizedlist>
48 </listitem>
49 </varlistentry>
50 </variablelist>
51 </refsect1>
52
53 <refsect1>
54 <title>Description</title>
55
56 <para>Select output DC level between normal LNBf voltages or higher
57 LNBf voltages between 0 (normal) or a value grater than 0 for higher
58 voltages.</para>
59&return-value-dvb;
60</refsect1>
61</refentry>
Documentation/DocBook/media/dvb/fe-get-info.xml+0−266
@@ -1,266 +0,0 @@
1<refentry id="FE_GET_INFO">
2 <refmeta>
3 <refentrytitle>ioctl FE_GET_INFO</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_GET_INFO</refname>
9 <refpurpose>Query DVB frontend capabilities and returns information about
10 the front-end. This call only requires read-only access to the device</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct dvb_frontend_info *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fe_fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>FE_GET_INFO</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>argp</parameter></term>
41 <listitem>
42 <para>pointer to struct &dvb-frontend-info;</para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51 <para>All DVB frontend devices support the
52<constant>FE_GET_INFO</constant> ioctl. It is used to identify
53kernel devices compatible with this specification and to obtain
54information about driver and hardware capabilities. The ioctl takes a
55pointer to dvb_frontend_info which is filled by the driver. When the
56driver is not compatible with this specification the ioctl returns an error.
57</para>
58&return-value-dvb;
59
60 <table pgwide="1" frame="none" id="dvb-frontend-info">
61 <title>struct <structname>dvb_frontend_info</structname></title>
62 <tgroup cols="3">
63 &cs-str;
64 <tbody valign="top">
65 <row>
66 <entry>char</entry>
67 <entry>name[128]</entry>
68 <entry>Name of the frontend</entry>
69 </row><row>
70 <entry>fe_type_t</entry>
71 <entry>type</entry>
72 <entry><emphasis role="bold">DEPRECATED</emphasis>. DVBv3 type. Should not be used on modern programs, as a
73 frontend may have more than one type. So, the DVBv5 API should
74 be used instead to enumerate and select the frontend type.</entry>
75 </row><row>
76 <entry>uint32_t</entry>
77 <entry>frequency_min</entry>
78 <entry>Minimal frequency supported by the frontend</entry>
79 </row><row>
80 <entry>uint32_t</entry>
81 <entry>frequency_max</entry>
82 <entry>Maximal frequency supported by the frontend</entry>
83 </row><row>
84 <entry>uint32_t</entry>
85 <entry>frequency_stepsize</entry>
86 <entry>Frequency step - all frequencies are multiple of this value</entry>
87 </row><row>
88 <entry>uint32_t</entry>
89 <entry>frequency_tolerance</entry>
90 <entry>Tolerance of the frequency</entry>
91 </row><row>
92 <entry>uint32_t</entry>
93 <entry>symbol_rate_min</entry>
94 <entry>Minimal symbol rate (for Cable/Satellite systems), in bauds</entry>
95 </row><row>
96 <entry>uint32_t</entry>
97 <entry>symbol_rate_max</entry>
98 <entry>Maximal symbol rate (for Cable/Satellite systems), in bauds</entry>
99 </row><row>
100 <entry>uint32_t</entry>
101 <entry>symbol_rate_tolerance</entry>
102 <entry>Maximal symbol rate tolerance, in ppm</entry>
103 </row><row>
104 <entry>uint32_t</entry>
105 <entry>notifier_delay</entry>
106 <entry><emphasis role="bold">DEPRECATED</emphasis>. Not used by any driver.</entry>
107 </row><row>
108 <entry>&fe-caps;</entry>
109 <entry>caps</entry>
110 <entry>Capabilities supported by the frontend</entry>
111 </row>
112 </tbody>
113 </tgroup>
114 </table>
115
116 <para>NOTE: The frequencies are specified in Hz for Terrestrial and Cable
117 systems. They're specified in kHz for Satellite systems</para>
118 </refsect1>
119
120<refsect1 id="fe-caps-t">
121<title>frontend capabilities</title>
122
123<para>Capabilities describe what a frontend can do. Some capabilities are
124 supported only on some specific frontend types.</para>
125
126<table pgwide="1" frame="none" id="fe-caps">
127 <title>enum fe_caps</title>
128 <tgroup cols="2">
129 &cs-def;
130 <thead>
131 <row>
132 <entry>ID</entry>
133 <entry>Description</entry>
134 </row>
135 </thead>
136 <tbody valign="top">
137 <row>
138 <entry id="FE-IS-STUPID"><constant>FE_IS_STUPID</constant></entry>
139 <entry>There's something wrong at the frontend, and it can't
140 report its capabilities</entry>
141 </row>
142 <row>
143 <entry id="FE-CAN-INVERSION-AUTO"><constant>FE_CAN_INVERSION_AUTO</constant></entry>
144 <entry>The frontend is capable of auto-detecting inversion</entry>
145 </row>
146 <row>
147 <entry id="FE-CAN-FEC-1-2"><constant>FE_CAN_FEC_1_2</constant></entry>
148 <entry>The frontend supports FEC 1/2</entry>
149 </row>
150 <row>
151 <entry id="FE-CAN-FEC-2-3"><constant>FE_CAN_FEC_2_3</constant></entry>
152 <entry>The frontend supports FEC 2/3</entry>
153 </row>
154 <row>
155 <entry id="FE-CAN-FEC-3-4"><constant>FE_CAN_FEC_3_4</constant></entry>
156 <entry>The frontend supports FEC 3/4</entry>
157 </row>
158 <row>
159 <entry id="FE-CAN-FEC-4-5"><constant>FE_CAN_FEC_4_5</constant></entry>
160 <entry>The frontend supports FEC 4/5</entry>
161 </row>
162 <row>
163 <entry id="FE-CAN-FEC-5-6"><constant>FE_CAN_FEC_5_6</constant></entry>
164 <entry>The frontend supports FEC 5/6</entry>
165 </row>
166 <row>
167 <entry id="FE-CAN-FEC-6-7"><constant>FE_CAN_FEC_6_7</constant></entry>
168 <entry>The frontend supports FEC 6/7</entry>
169 </row>
170 <row>
171 <entry id="FE-CAN-FEC-7-8"><constant>FE_CAN_FEC_7_8</constant></entry>
172 <entry>The frontend supports FEC 7/8</entry>
173 </row>
174 <row>
175 <entry id="FE-CAN-FEC-8-9"><constant>FE_CAN_FEC_8_9</constant></entry>
176 <entry>The frontend supports FEC 8/9</entry>
177 </row>
178 <row>
179 <entry id="FE-CAN-FEC-AUTO"><constant>FE_CAN_FEC_AUTO</constant></entry>
180 <entry>The frontend can autodetect FEC.</entry>
181 </row>
182 <row>
183 <entry id="FE-CAN-QPSK"><constant>FE_CAN_QPSK</constant></entry>
184 <entry>The frontend supports QPSK modulation</entry>
185 </row>
186 <row>
187 <entry id="FE-CAN-QAM-16"><constant>FE_CAN_QAM_16</constant></entry>
188 <entry>The frontend supports 16-QAM modulation</entry>
189 </row>
190 <row>
191 <entry id="FE-CAN-QAM-32"><constant>FE_CAN_QAM_32</constant></entry>
192 <entry>The frontend supports 32-QAM modulation</entry>
193 </row>
194 <row>
195 <entry id="FE-CAN-QAM-64"><constant>FE_CAN_QAM_64</constant></entry>
196 <entry>The frontend supports 64-QAM modulation</entry>
197 </row>
198 <row>
199 <entry id="FE-CAN-QAM-128"><constant>FE_CAN_QAM_128</constant></entry>
200 <entry>The frontend supports 128-QAM modulation</entry>
201 </row>
202 <row>
203 <entry id="FE-CAN-QAM-256"><constant>FE_CAN_QAM_256</constant></entry>
204 <entry>The frontend supports 256-QAM modulation</entry>
205 </row>
206 <row>
207 <entry id="FE-CAN-QAM-AUTO"><constant>FE_CAN_QAM_AUTO</constant></entry>
208 <entry>The frontend can autodetect modulation</entry>
209 </row>
210 <row>
211 <entry id="FE-CAN-TRANSMISSION-MODE-AUTO"><constant>FE_CAN_TRANSMISSION_MODE_AUTO</constant></entry>
212 <entry>The frontend can autodetect the transmission mode</entry>
213 </row>
214 <row>
215 <entry id="FE-CAN-BANDWIDTH-AUTO"><constant>FE_CAN_BANDWIDTH_AUTO</constant></entry>
216 <entry>The frontend can autodetect the bandwidth</entry>
217 </row>
218 <row>
219 <entry id="FE-CAN-GUARD-INTERVAL-AUTO"><constant>FE_CAN_GUARD_INTERVAL_AUTO</constant></entry>
220 <entry>The frontend can autodetect the guard interval</entry>
221 </row>
222 <row>
223 <entry id="FE-CAN-HIERARCHY-AUTO"><constant>FE_CAN_HIERARCHY_AUTO</constant></entry>
224 <entry>The frontend can autodetect hierarch</entry>
225 </row>
226 <row>
227 <entry id="FE-CAN-8VSB"><constant>FE_CAN_8VSB</constant></entry>
228 <entry>The frontend supports 8-VSB modulation</entry>
229 </row>
230 <row>
231 <entry id="FE-CAN-16VSB"><constant>FE_CAN_16VSB</constant></entry>
232 <entry>The frontend supports 16-VSB modulation</entry>
233 </row>
234 <row>
235 <entry id="FE-HAS-EXTENDED-CAPS"><constant>FE_HAS_EXTENDED_CAPS</constant></entry>
236 <entry>Currently, unused</entry>
237 </row>
238 <row>
239 <entry id="FE-CAN-MULTISTREAM"><constant>FE_CAN_MULTISTREAM</constant></entry>
240 <entry>The frontend supports multistream filtering</entry>
241 </row>
242 <row>
243 <entry id="FE-CAN-TURBO-FEC"><constant>FE_CAN_TURBO_FEC</constant></entry>
244 <entry>The frontend supports turbo FEC modulation</entry>
245 </row>
246 <row>
247 <entry id="FE-CAN-2G-MODULATION"><constant>FE_CAN_2G_MODULATION</constant></entry>
248 <entry>The frontend supports "2nd generation modulation" (DVB-S2/T2)></entry>
249 </row>
250 <row>
251 <entry id="FE-NEEDS-BENDING"><constant>FE_NEEDS_BENDING</constant></entry>
252 <entry>Not supported anymore, don't use it</entry>
253 </row>
254 <row>
255 <entry id="FE-CAN-RECOVER"><constant>FE_CAN_RECOVER</constant></entry>
256 <entry>The frontend can recover from a cable unplug automatically</entry>
257 </row>
258 <row>
259 <entry id="FE-CAN-MUTE-TS"><constant>FE_CAN_MUTE_TS</constant></entry>
260 <entry>The frontend can stop spurious TS data output</entry>
261 </row>
262 </tbody>
263 </tgroup>
264</table>
265</refsect1>
266</refentry>
Documentation/DocBook/media/dvb/fe-get-property.xml+0−81
@@ -1,81 +0,0 @@
1<refentry id="FE_GET_PROPERTY">
2 <refmeta>
3 <refentrytitle>ioctl FE_SET_PROPERTY, FE_GET_PROPERTY</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_SET_PROPERTY</refname>
9 <refname>FE_GET_PROPERTY</refname>
10 <refpurpose>FE_SET_PROPERTY sets one or more frontend properties.
11 FE_GET_PROPERTY returns one or more frontend properties.</refpurpose>
12 </refnamediv>
13
14 <refsynopsisdiv>
15 <funcsynopsis>
16 <funcprototype>
17 <funcdef>int <function>ioctl</function></funcdef>
18 <paramdef>int <parameter>fd</parameter></paramdef>
19 <paramdef>int <parameter>request</parameter></paramdef>
20 <paramdef>struct dtv_properties *<parameter>argp</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 </refsynopsisdiv>
24
25 <refsect1>
26 <title>Arguments</title>
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fe_fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>FE_SET_PROPERTY, FE_GET_PROPERTY</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para>pointer to &dtv-properties;</para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>All DVB frontend devices support the
53<constant>FE_SET_PROPERTY</constant> and <constant>FE_GET_PROPERTY</constant>
54ioctls. The supported properties and statistics depends on the delivery system
55and on the device:</para>
56<itemizedlist>
57<listitem>
58 <para><constant>FE_SET_PROPERTY:</constant></para>
59<itemizedlist>
60<listitem><para>This ioctl is used to set one or more
61 frontend properties.</para></listitem>
62<listitem><para>This is the basic command to request the frontend to tune into some
63 frequency and to start decoding the digital TV signal.</para></listitem>
64<listitem><para>This call requires read/write access to the device.</para></listitem>
65<listitem><para>At return, the values are updated to reflect the
66 actual parameters used.</para></listitem>
67</itemizedlist>
68</listitem>
69<listitem>
70 <para><constant>FE_GET_PROPERTY:</constant></para>
71<itemizedlist>
72<listitem><para>This ioctl is used to get properties and
73statistics from the frontend.</para></listitem>
74<listitem><para>No properties are changed, and statistics aren't reset.</para></listitem>
75<listitem><para>This call only requires read-only access to the device.</para></listitem>
76</itemizedlist>
77</listitem>
78</itemizedlist>
79&return-value-dvb;
80</refsect1>
81</refentry>
Documentation/DocBook/media/dvb/fe-read-status.xml+0−107
@@ -1,107 +0,0 @@
1<refentry id="FE_READ_STATUS">
2 <refmeta>
3 <refentrytitle>ioctl FE_READ_STATUS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_READ_STATUS</refname>
9 <refpurpose>Returns status information about the front-end. This call only
10 requires read-only access to the device</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>unsigned int *<parameter>status</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fe_fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>FE_READ_STATUS</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>status</parameter></term>
41 <listitem>
42 <para>pointer to a bitmask integer filled with the values defined by
43 &fe-status;.</para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>All DVB frontend devices support the
53<constant>FE_READ_STATUS</constant> ioctl. It is used to check about the
54locking status of the frontend after being tuned. The ioctl takes a
55pointer to an integer where the status will be written.
56</para>
57<para>NOTE: the size of status is actually sizeof(enum fe_status), with varies
58 according with the architecture. This needs to be fixed in the future.</para>
59&return-value-dvb;
60</refsect1>
61
62<refsect1 id="fe-status-t">
63<title>int fe_status</title>
64
65<para>The fe_status parameter is used to indicate the current state
66 and/or state changes of the frontend hardware. It is produced using
67 the &fe-status; values on a bitmask</para>
68
69<table pgwide="1" frame="none" id="fe-status">
70 <title>enum fe_status</title>
71 <tgroup cols="2">
72 &cs-def;
73 <thead>
74 <row>
75 <entry>ID</entry>
76 <entry>Description</entry>
77 </row>
78 </thead>
79 <tbody valign="top">
80 <row>
81 <entry align="char" id="FE-HAS-SIGNAL"><constant>FE_HAS_SIGNAL</constant></entry>
82 <entry align="char">The frontend has found something above the noise level</entry>
83 </row><row>
84 <entry align="char" id="FE-HAS-CARRIER"><constant>FE_HAS_CARRIER</constant></entry>
85 <entry align="char">The frontend has found a DVB signal</entry>
86 </row><row>
87 <entry align="char" id="FE-HAS-VITERBI"><constant>FE_HAS_VITERBI</constant></entry>
88 <entry align="char">The frontend FEC inner coding (Viterbi, LDPC or other inner code) is stable</entry>
89 </row><row>
90 <entry align="char" id="FE-HAS-SYNC"><constant>FE_HAS_SYNC</constant></entry>
91 <entry align="char">Synchronization bytes was found</entry>
92 </row><row>
93 <entry align="char" id="FE-HAS-LOCK"><constant>FE_HAS_LOCK</constant></entry>
94 <entry align="char">The DVB were locked and everything is working</entry>
95 </row><row>
96 <entry align="char" id="FE-TIMEDOUT"><constant>FE_TIMEDOUT</constant></entry>
97 <entry align="char">no lock within the last about 2 seconds</entry>
98 </row><row>
99 <entry align="char" id="FE-REINIT"><constant>FE_REINIT</constant></entry>
100 <entry align="char">The frontend was reinitialized, application is
101 recommended to reset DiSEqC, tone and parameters</entry>
102 </row>
103 </tbody>
104 </tgroup>
105</table>
106</refsect1>
107</refentry>
Documentation/DocBook/media/dvb/fe-set-frontend-tune-mode.xml+0−64
@@ -1,64 +0,0 @@
1<refentry id="FE_SET_FRONTEND_TUNE_MODE">
2 <refmeta>
3 <refentrytitle>ioctl FE_SET_FRONTEND_TUNE_MODE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_SET_FRONTEND_TUNE_MODE</refname>
9 <refpurpose>Allow setting tuner mode flags to the frontend.</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>unsigned int <parameter>flags</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_SET_FRONTEND_TUNE_MODE</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>flags</parameter></term>
40 <listitem>
41 <para>Valid flags:</para>
42 <itemizedlist>
43 <listitem><para>0 - normal tune mode</para></listitem>
44 <listitem><para>FE_TUNE_MODE_ONESHOT - When set, this flag will
45 disable any zigzagging or other "normal" tuning behaviour.
46 Additionally, there will be no automatic monitoring of the
47 lock status, and hence no frontend events will be
48 generated. If a frontend device is closed, this flag will
49 be automatically turned off when the device is reopened
50 read-write.</para></listitem>
51 </itemizedlist>
52 </listitem>
53 </varlistentry>
54 </variablelist>
55 </refsect1>
56
57 <refsect1>
58 <title>Description</title>
59
60 <para>Allow setting tuner mode flags to the frontend, between 0 (normal)
61 or FE_TUNE_MODE_ONESHOT mode</para>
62&return-value-dvb;
63</refsect1>
64</refentry>
Documentation/DocBook/media/dvb/fe-set-tone.xml+0−91
@@ -1,91 +0,0 @@
1<refentry id="FE_SET_TONE">
2 <refmeta>
3 <refentrytitle>ioctl FE_SET_TONE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_SET_TONE</refname>
9 <refpurpose>Sets/resets the generation of the continuous 22kHz tone.</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>enum fe_sec_tone_mode *<parameter>tone</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_SET_TONE</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>tone</parameter></term>
40 <listitem>
41 <para>pointer to &fe-sec-tone-mode;</para>
42 </listitem>
43 </varlistentry>
44 </variablelist>
45 </refsect1>
46
47 <refsect1>
48 <title>Description</title>
49
50<para>This ioctl is used to set the generation of the continuous 22kHz tone.
51 This call requires read/write permissions.</para>
52<para>Usually, satellite antenna subsystems require that the digital TV
53 device to send a 22kHz tone in order to select between high/low band on
54 some dual-band LNBf. It is also used to send signals to DiSEqC equipment,
55 but this is done using the DiSEqC ioctls.</para>
56<para>NOTE: if more than one device is connected to the same antenna,
57 setting a tone may interfere on other devices, as they may lose
58 the capability of selecting the band. So, it is recommended that
59 applications would change to SEC_TONE_OFF when the device is not used.</para>
60
61&return-value-dvb;
62</refsect1>
63
64<refsect1 id="fe-sec-tone-mode-t">
65<title>enum fe_sec_tone_mode</title>
66
67<table pgwide="1" frame="none" id="fe-sec-tone-mode">
68 <title>enum fe_sec_tone_mode</title>
69 <tgroup cols="2">
70 &cs-def;
71 <thead>
72 <row>
73 <entry>ID</entry>
74 <entry>Description</entry>
75 </row>
76 </thead>
77 <tbody valign="top">
78 <row>
79 <entry align="char" id="SEC-TONE-ON"><constant>SEC_TONE_ON</constant></entry>
80 <entry align="char">Sends a 22kHz tone burst to the antenna</entry>
81 </row><row>
82 <entry align="char" id="SEC-TONE-OFF"><constant>SEC_TONE_OFF</constant></entry>
83 <entry align="char">Don't send a 22kHz tone to the antenna
84 (except if the FE_DISEQC_* ioctls are called)</entry>
85 </row>
86 </tbody>
87 </tgroup>
88</table>
89</refsect1>
90
91</refentry>
Documentation/DocBook/media/dvb/fe-set-voltage.xml+0−69
@@ -1,69 +0,0 @@
1<refentry id="FE_SET_VOLTAGE">
2 <refmeta>
3 <refentrytitle>ioctl FE_SET_VOLTAGE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_SET_VOLTAGE</refname>
9 <refpurpose>Allow setting the DC level sent to the antenna subsystem.</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>enum fe_sec_voltage *<parameter>voltage</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_SET_VOLTAGE</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>voltage</parameter></term>
40 <listitem>
41 <para>pointer to &fe-sec-voltage;</para>
42 <para>Valid values are described at &fe-sec-voltage;.</para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51<para>This ioctl allows to set the DC voltage level sent through the antenna
52 cable to 13V, 18V or off.</para>
53<para>Usually, a satellite antenna subsystems require that the digital TV
54 device to send a DC voltage to feed power to the LNBf. Depending on the
55 LNBf type, the polarization or the intermediate frequency (IF) of the LNBf
56 can controlled by the voltage level. Other devices (for example, the ones
57 that implement DISEqC and multipoint LNBf's don't need to control the
58 voltage level, provided that either 13V or 18V is sent to power up the
59 LNBf.</para>
60<para>NOTE: if more than one device is connected to the same antenna,
61 setting a voltage level may interfere on other devices, as they may lose
62 the capability of setting polarization or IF. So, on those
63 cases, setting the voltage to SEC_VOLTAGE_OFF while the device is not is
64 used is recommended.</para>
65
66&return-value-dvb;
67</refsect1>
68
69</refentry>
Documentation/DocBook/media/dvb/frontend.xml+0−269
@@ -1,269 +0,0 @@
1<title>DVB Frontend API</title>
2
3<para>The DVB frontend API was designed to support three types of delivery systems:</para>
4<itemizedlist>
5 <listitem><para>Terrestrial systems: DVB-T, DVB-T2, ATSC, ATSC M/H, ISDB-T, DVB-H, DTMB, CMMB</para></listitem>
6 <listitem><para>Cable systems: DVB-C Annex A/C, ClearQAM (DVB-C Annex B), ISDB-C</para></listitem>
7 <listitem><para>Satellite systems: DVB-S, DVB-S2, DVB Turbo, ISDB-S, DSS</para></listitem>
8</itemizedlist>
9<para>The DVB frontend controls several sub-devices including:</para>
10<itemizedlist>
11 <listitem><para>Tuner</para></listitem>
12 <listitem><para>Digital TV demodulator</para></listitem>
13 <listitem><para>Low noise amplifier (LNA)</para></listitem>
14 <listitem><para>Satellite Equipment Control (SEC) hardware (only for Satellite).</para></listitem>
15</itemizedlist>
16<para>The frontend can be accessed through
17 <constant>/dev/dvb/adapter?/frontend?</constant>. Data types and
18 ioctl definitions can be accessed by including
19 <constant>linux/dvb/frontend.h</constant> in your application.
20</para>
21
22<para>NOTE: Transmission via the internet (DVB-IP)
23 is not yet handled by this API but a future extension is possible.</para>
24<para>On Satellite systems, the API support for the Satellite Equipment Control
25 (SEC) allows to power control and to send/receive signals to control the
26 antenna subsystem, selecting the polarization and choosing the Intermediate
27 Frequency IF) of the Low Noise Block Converter Feed Horn (LNBf). It
28 supports the DiSEqC and V-SEC protocols. The DiSEqC (digital SEC)
29specification is available at
30<ulink url="http://www.eutelsat.com/satellites/4_5_5.html">Eutelsat</ulink>.</para>
31
32<section id="query-dvb-frontend-info">
33<title>Querying frontend information</title>
34
35<para>Usually, the first thing to do when the frontend is opened is to
36 check the frontend capabilities. This is done using <link linkend="FE_GET_INFO">FE_GET_INFO</link>. This ioctl will enumerate
37 the DVB API version and other characteristics about the frontend, and
38 can be opened either in read only or read/write mode.</para>
39</section>
40
41<section id="dvb-fe-read-status">
42<title>Querying frontend status and statistics</title>
43
44<para>Once <link linkend="FE_GET_PROPERTY"><constant>FE_SET_PROPERTY</constant></link>
45 is called, the frontend will run a kernel thread that will periodically
46 check for the tuner lock status and provide statistics about the quality
47 of the signal.</para>
48<para>The information about the frontend tuner locking status can be queried
49 using <link linkend="FE_READ_STATUS">FE_READ_STATUS</link>.</para>
50<para>Signal statistics are provided via <link linkend="FE_GET_PROPERTY"><constant>FE_GET_PROPERTY</constant></link>.
51 Please note that several statistics require the demodulator to be fully
52 locked (e. g. with FE_HAS_LOCK bit set). See
53 <link linkend="frontend-stat-properties">Frontend statistics indicators</link>
54 for more details.</para>
55</section>
56
57&sub-dvbproperty;
58
59<section id="frontend_fcalls">
60<title>Frontend Function Calls</title>
61
62<refentry id="frontend_f_open">
63 <refmeta>
64 <refentrytitle>DVB frontend open()</refentrytitle>
65 &manvol;
66 </refmeta>
67
68 <refnamediv>
69 <refname>fe-open</refname>
70 <refpurpose>Open a frontend device</refpurpose>
71 </refnamediv>
72
73 <refsynopsisdiv>
74 <funcsynopsis>
75 <funcsynopsisinfo>#include &lt;fcntl.h&gt;</funcsynopsisinfo>
76 <funcprototype>
77 <funcdef>int <function>open</function></funcdef>
78 <paramdef>const char *<parameter>device_name</parameter></paramdef>
79 <paramdef>int <parameter>flags</parameter></paramdef>
80 </funcprototype>
81 </funcsynopsis>
82 </refsynopsisdiv>
83
84 <refsect1>
85 <title>Arguments</title>
86
87 <variablelist>
88 <varlistentry>
89 <term><parameter>device_name</parameter></term>
90 <listitem>
91 <para>Device to be opened.</para>
92 </listitem>
93 </varlistentry>
94 <varlistentry>
95 <term><parameter>flags</parameter></term>
96 <listitem>
97 <para>Open flags. Access can either be
98 <constant>O_RDWR</constant> or <constant>O_RDONLY</constant>.</para>
99 <para>Multiple opens are allowed with <constant>O_RDONLY</constant>. In this mode, only query and read ioctls are allowed.</para>
100 <para>Only one open is allowed in <constant>O_RDWR</constant>. In this mode, all ioctls are allowed.</para>
101 <para>When the <constant>O_NONBLOCK</constant> flag is given, the system calls may return &EAGAIN; when no data is available or when the device driver is temporarily busy.</para>
102 <para>Other flags have no effect.</para>
103 </listitem>
104 </varlistentry>
105 </variablelist>
106 </refsect1>
107 <refsect1>
108 <title>Description</title>
109 <para>This system call opens a named frontend device (<constant>/dev/dvb/adapter?/frontend?</constant>)
110 for subsequent use. Usually the first thing to do after a successful open is to
111 find out the frontend type with <link linkend="FE_GET_INFO">FE_GET_INFO</link>.</para>
112<para>The device can be opened in read-only mode, which only allows monitoring of
113 device status and statistics, or read/write mode, which allows any kind of use
114 (e.g. performing tuning operations.)
115</para>
116<para>In a system with multiple front-ends, it is usually the case that multiple devices
117 cannot be open in read/write mode simultaneously. As long as a front-end
118 device is opened in read/write mode, other open() calls in read/write mode will
119 either fail or block, depending on whether non-blocking or blocking mode was
120 specified. A front-end device opened in blocking mode can later be put into
121 non-blocking mode (and vice versa) using the F_SETFL command of the fcntl
122 system call. This is a standard system call, documented in the Linux manual
123 page for fcntl. When an open() call has succeeded, the device will be ready
124 for use in the specified mode. This implies that the corresponding hardware is
125 powered up, and that other front-ends may have been powered down to make
126 that possible.</para>
127 </refsect1>
128
129 <refsect1>
130 <title>Return Value</title>
131
132 <para>On success <function>open</function> returns the new file
133descriptor. On error -1 is returned, and the <varname>errno</varname>
134variable is set appropriately. Possible error codes are:</para>
135
136 <variablelist>
137 <varlistentry>
138 <term><errorcode>EACCES</errorcode></term>
139 <listitem>
140 <para>The caller has no permission to access the
141device.</para>
142 </listitem>
143 </varlistentry>
144 <varlistentry>
145 <term><errorcode>EBUSY</errorcode></term>
146 <listitem>
147 <para>The the device driver is already in use.</para>
148 </listitem>
149 </varlistentry>
150 <varlistentry>
151 <term><errorcode>ENXIO</errorcode></term>
152 <listitem>
153 <para>No device corresponding to this device special file
154exists.</para>
155 </listitem>
156 </varlistentry>
157 <varlistentry>
158 <term><errorcode>ENOMEM</errorcode></term>
159 <listitem>
160 <para>Not enough kernel memory was available to complete the
161request.</para>
162 </listitem>
163 </varlistentry>
164 <varlistentry>
165 <term><errorcode>EMFILE</errorcode></term>
166 <listitem>
167 <para>The process already has the maximum number of
168files open.</para>
169 </listitem>
170 </varlistentry>
171 <varlistentry>
172 <term><errorcode>ENFILE</errorcode></term>
173 <listitem>
174 <para>The limit on the total number of files open on the
175system has been reached.</para>
176 </listitem>
177 </varlistentry>
178 <varlistentry>
179 <term><errorcode>ENODEV</errorcode></term>
180 <listitem>
181 <para>The device got removed.</para>
182 </listitem>
183 </varlistentry>
184 </variablelist>
185 </refsect1>
186</refentry>
187
188<refentry id="frontend_f_close">
189 <refmeta>
190 <refentrytitle>DVB frontend close()</refentrytitle>
191 &manvol;
192 </refmeta>
193
194 <refnamediv>
195 <refname>fe-close</refname>
196 <refpurpose>Close a frontend device</refpurpose>
197 </refnamediv>
198
199 <refsynopsisdiv>
200 <funcsynopsis>
201 <funcsynopsisinfo>#include &lt;unistd.h&gt;</funcsynopsisinfo>
202 <funcprototype>
203 <funcdef>int <function>close</function></funcdef>
204 <paramdef>int <parameter>fd</parameter></paramdef>
205 </funcprototype>
206 </funcsynopsis>
207 </refsynopsisdiv>
208
209 <refsect1>
210 <title>Arguments</title>
211
212 <variablelist>
213 <varlistentry>
214 <term><parameter>fd</parameter></term>
215 <listitem>
216 <para>&fd;</para>
217 </listitem>
218 </varlistentry>
219 </variablelist>
220 </refsect1>
221
222 <refsect1>
223 <title>Description</title>
224<para>This system call closes a previously opened front-end device. After closing
225 a front-end device, its corresponding hardware might be powered down
226 automatically.</para>
227</refsect1>
228 <refsect1>
229 <title>Return Value</title>
230
231 <para>The function returns <returnvalue>0</returnvalue> on
232success, <returnvalue>-1</returnvalue> on failure and the
233<varname>errno</varname> is set appropriately. Possible error
234codes:</para>
235
236 <variablelist>
237 <varlistentry>
238 <term><errorcode>EBADF</errorcode></term>
239 <listitem>
240 <para><parameter>fd</parameter> is not a valid open file
241descriptor.</para>
242 </listitem>
243 </varlistentry>
244 </variablelist>
245 </refsect1>
246</refentry>
247
248&sub-fe-get-info;
249&sub-fe-read-status;
250&sub-fe-get-property;
251&sub-fe-diseqc-reset-overload;
252&sub-fe-diseqc-send-master-cmd;
253&sub-fe-diseqc-recv-slave-reply;
254&sub-fe-diseqc-send-burst;
255&sub-fe-set-tone;
256&sub-fe-set-voltage;
257&sub-fe-enable-high-lnb-voltage;
258&sub-fe-set-frontend-tune-mode;
259
260</section>
261
262<section id="frontend_legacy_dvbv3_api">
263<title>DVB Frontend legacy API (a. k. a. DVBv3)</title>
264<para>The usage of this API is deprecated, as it doesn't support all digital
265 TV standards, doesn't provide good statistics measurements and provides
266 incomplete information. This is kept only to support legacy applications.</para>
267
268&sub-frontend_legacy_api;
269</section>
Documentation/DocBook/media/dvb/frontend_legacy_api.xml+0−654
@@ -1,654 +0,0 @@
1<section id="frontend_legacy_types">
2<title>Frontend Legacy Data Types</title>
3
4<section id="fe-type-t">
5<title>Frontend type</title>
6
7<para>For historical reasons, frontend types are named by the type of modulation
8 used in transmission. The fontend types are given by fe_type_t type, defined as:</para>
9
10<table pgwide="1" frame="none" id="fe-type">
11<title>Frontend types</title>
12<tgroup cols="3">
13 &cs-def;
14 <thead>
15 <row>
16 <entry>fe_type</entry>
17 <entry>Description</entry>
18 <entry><link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> equivalent type</entry>
19 </row>
20 </thead>
21 <tbody valign="top">
22 <row>
23 <entry id="FE-QPSK"><constant>FE_QPSK</constant></entry>
24 <entry>For DVB-S standard</entry>
25 <entry><constant>SYS_DVBS</constant></entry>
26 </row>
27 <row>
28 <entry id="FE-QAM"><constant>FE_QAM</constant></entry>
29 <entry>For DVB-C annex A standard</entry>
30 <entry><constant>SYS_DVBC_ANNEX_A</constant></entry>
31 </row>
32 <row>
33 <entry id="FE-OFDM"><constant>FE_OFDM</constant></entry>
34 <entry>For DVB-T standard</entry>
35 <entry><constant>SYS_DVBT</constant></entry>
36 </row>
37 <row>
38 <entry id="FE-ATSC"><constant>FE_ATSC</constant></entry>
39 <entry>For ATSC standard (terrestrial) or for DVB-C Annex B (cable) used in US.</entry>
40 <entry><constant>SYS_ATSC</constant> (terrestrial) or <constant>SYS_DVBC_ANNEX_B</constant> (cable)</entry>
41 </row>
42</tbody></tgroup></table>
43
44<para>Newer formats like DVB-S2, ISDB-T, ISDB-S and DVB-T2 are not described at the above, as they're
45supported via the new <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY/FE_GET_SET_PROPERTY</link> ioctl's, using the <link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> parameter.
46</para>
47
48<para>In the old days, &dvb-frontend-info; used to contain
49 <constant>fe_type_t</constant> field to indicate the delivery systems,
50 filled with either FE_QPSK, FE_QAM, FE_OFDM or FE_ATSC. While this is
51 still filled to keep backward compatibility, the usage of this
52 field is deprecated, as it can report just one delivery system, but some
53 devices support multiple delivery systems. Please use
54 <link linkend="DTV-ENUM-DELSYS">DTV_ENUM_DELSYS</link> instead.
55</para>
56<para>On devices that support multiple delivery systems,
57 &dvb-frontend-info;::<constant>fe_type_t</constant> is filled with the
58 currently standard, as selected by the last call to
59 <link linkend="FE_GET_PROPERTY">FE_SET_PROPERTY</link>
60 using the &DTV-DELIVERY-SYSTEM; property.</para>
61</section>
62
63<section id="fe-bandwidth-t">
64<title>Frontend bandwidth</title>
65
66<table pgwide="1" frame="none" id="fe-bandwidth">
67 <title>enum fe_bandwidth</title>
68 <tgroup cols="2">
69 &cs-def;
70 <thead>
71 <row>
72 <entry>ID</entry>
73 <entry>Description</entry>
74 </row>
75 </thead>
76 <tbody valign="top">
77 <row>
78 <entry id="BANDWIDTH-AUTO"><constant>BANDWIDTH_AUTO</constant></entry>
79 <entry>Autodetect bandwidth (if supported)</entry>
80 </row><row>
81 <entry id="BANDWIDTH-1-712-MHZ"><constant>BANDWIDTH_1_712_MHZ</constant></entry>
82 <entry>1.712 MHz</entry>
83 </row><row>
84 <entry id="BANDWIDTH-5-MHZ"><constant>BANDWIDTH_5_MHZ</constant></entry>
85 <entry>5 MHz</entry>
86 </row><row>
87 <entry id="BANDWIDTH-6-MHZ"><constant>BANDWIDTH_6_MHZ</constant></entry>
88 <entry>6 MHz</entry>
89 </row><row>
90 <entry id="BANDWIDTH-7-MHZ"><constant>BANDWIDTH_7_MHZ</constant></entry>
91 <entry>7 MHz</entry>
92 </row><row>
93 <entry id="BANDWIDTH-8-MHZ"><constant>BANDWIDTH_8_MHZ</constant></entry>
94 <entry>8 MHz</entry>
95 </row><row>
96 <entry id="BANDWIDTH-10-MHZ"><constant>BANDWIDTH_10_MHZ</constant></entry>
97 <entry>10 MHz</entry>
98 </row>
99 </tbody>
100 </tgroup>
101</table>
102
103</section>
104
105<section id="dvb-frontend-parameters">
106<title>frontend parameters</title>
107<para>The kind of parameters passed to the frontend device for tuning depend on
108the kind of hardware you are using.</para>
109<para>The struct <constant>dvb_frontend_parameters</constant> uses an
110union with specific per-system parameters. However, as newer delivery systems
111required more data, the structure size weren't enough to fit, and just
112extending its size would break the existing applications. So, those parameters
113were replaced by the usage of <link linkend="FE_GET_PROPERTY">
114<constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> ioctl's. The
115new API is flexible enough to add new parameters to existing delivery systems,
116and to add newer delivery systems.</para>
117<para>So, newer applications should use <link linkend="FE_GET_PROPERTY">
118<constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> instead, in
119order to be able to support the newer System Delivery like DVB-S2, DVB-T2,
120DVB-C2, ISDB, etc.</para>
121<para>All kinds of parameters are combined as an union in the FrontendParameters structure:
122<programlisting>
123struct dvb_frontend_parameters {
124 uint32_t frequency; /&#x22C6; (absolute) frequency in Hz for QAM/OFDM &#x22C6;/
125 /&#x22C6; intermediate frequency in kHz for QPSK &#x22C6;/
126 &fe-spectral-inversion-t; inversion;
127 union {
128 struct dvb_qpsk_parameters qpsk;
129 struct dvb_qam_parameters qam;
130 struct dvb_ofdm_parameters ofdm;
131 struct dvb_vsb_parameters vsb;
132 } u;
133};
134</programlisting></para>
135<para>In the case of QPSK frontends the <constant>frequency</constant> field specifies the intermediate
136frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of
137the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and
138OFDM frontends the <constant>frequency</constant> specifies the absolute frequency and is given in Hz.
139</para>
140
141<section id="dvb-qpsk-parameters">
142<title>QPSK parameters</title>
143<para>For satellite QPSK frontends you have to use the <constant>dvb_qpsk_parameters</constant> structure:</para>
144<programlisting>
145 struct dvb_qpsk_parameters {
146 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
147 &fe-code-rate-t; fec_inner; /&#x22C6; forward error correction (see above) &#x22C6;/
148 };
149</programlisting>
150</section>
151
152<section id="dvb-qam-parameters">
153<title>QAM parameters</title>
154<para>for cable QAM frontend you use the <constant>dvb_qam_parameters</constant> structure:</para>
155<programlisting>
156 struct dvb_qam_parameters {
157 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
158 &fe-code-rate-t; fec_inner; /&#x22C6; forward error correction (see above) &#x22C6;/
159 &fe-modulation-t; modulation; /&#x22C6; modulation type (see above) &#x22C6;/
160 };
161</programlisting>
162</section>
163
164<section id="dvb-vsb-parameters">
165<title>VSB parameters</title>
166<para>ATSC frontends are supported by the <constant>dvb_vsb_parameters</constant> structure:</para>
167<programlisting>
168struct dvb_vsb_parameters {
169 &fe-modulation-t; modulation; /&#x22C6; modulation type (see above) &#x22C6;/
170};
171</programlisting>
172</section>
173
174<section id="dvb-ofdm-parameters">
175<title>OFDM parameters</title>
176<para>DVB-T frontends are supported by the <constant>dvb_ofdm_parameters</constant> structure:</para>
177<programlisting>
178 struct dvb_ofdm_parameters {
179 &fe-bandwidth-t; bandwidth;
180 &fe-code-rate-t; code_rate_HP; /&#x22C6; high priority stream code rate &#x22C6;/
181 &fe-code-rate-t; code_rate_LP; /&#x22C6; low priority stream code rate &#x22C6;/
182 &fe-modulation-t; constellation; /&#x22C6; modulation type (see above) &#x22C6;/
183 &fe-transmit-mode-t; transmission_mode;
184 &fe-guard-interval-t; guard_interval;
185 &fe-hierarchy-t; hierarchy_information;
186 };
187</programlisting>
188</section>
189</section>
190
191<section id="dvb-frontend-event">
192<title>frontend events</title>
193 <programlisting>
194 struct dvb_frontend_event {
195 fe_status_t status;
196 struct dvb_frontend_parameters parameters;
197 };
198</programlisting>
199 </section>
200</section>
201
202<section id="frontend_legacy_fcalls">
203<title>Frontend Legacy Function Calls</title>
204
205<para>Those functions are defined at DVB version 3. The support is kept in
206 the kernel due to compatibility issues only. Their usage is strongly
207 not recommended</para>
208
209<section id="FE_READ_BER">
210<title>FE_READ_BER</title>
211<para>DESCRIPTION
212</para>
213<informaltable><tgroup cols="1"><tbody><row><entry
214 align="char">
215<para>This ioctl call returns the bit error rate for the signal currently
216 received/demodulated by the front-end. For this command, read-only access to
217 the device is sufficient.</para>
218</entry>
219 </row></tbody></tgroup></informaltable>
220<para>SYNOPSIS
221</para>
222<informaltable><tgroup cols="1"><tbody><row><entry
223 align="char">
224<para>int ioctl(int fd, int request = <link linkend="FE_READ_BER">FE_READ_BER</link>,
225 uint32_t &#x22C6;ber);</para>
226</entry>
227 </row></tbody></tgroup></informaltable>
228<para>PARAMETERS
229</para>
230<informaltable><tgroup cols="2"><tbody><row><entry
231 align="char">
232<para>int fd</para>
233</entry><entry
234 align="char">
235<para>File descriptor returned by a previous call to open().</para>
236</entry>
237 </row><row><entry
238 align="char">
239<para>int request</para>
240</entry><entry
241 align="char">
242<para>Equals <link linkend="FE_READ_BER">FE_READ_BER</link> for this command.</para>
243</entry>
244 </row><row><entry
245 align="char">
246<para>uint32_t *ber</para>
247</entry><entry
248 align="char">
249<para>The bit error rate is stored into *ber.</para>
250</entry>
251 </row></tbody></tgroup></informaltable>
252
253&return-value-dvb;
254</section>
255
256<section id="FE_READ_SNR">
257<title>FE_READ_SNR</title>
258
259<para>DESCRIPTION
260</para>
261<informaltable><tgroup cols="1"><tbody><row><entry
262 align="char">
263<para>This ioctl call returns the signal-to-noise ratio for the signal currently received
264 by the front-end. For this command, read-only access to the device is sufficient.</para>
265</entry>
266 </row></tbody></tgroup></informaltable>
267<para>SYNOPSIS
268</para>
269<informaltable><tgroup cols="1"><tbody><row><entry
270 align="char">
271<para>int ioctl(int fd, int request = <link linkend="FE_READ_SNR">FE_READ_SNR</link>, uint16_t
272 &#x22C6;snr);</para>
273</entry>
274 </row></tbody></tgroup></informaltable>
275<para>PARAMETERS
276</para>
277<informaltable><tgroup cols="2"><tbody><row><entry
278 align="char">
279<para>int fd</para>
280</entry><entry
281 align="char">
282<para>File descriptor returned by a previous call to open().</para>
283</entry>
284 </row><row><entry
285 align="char">
286<para>int request</para>
287</entry><entry
288 align="char">
289<para>Equals <link linkend="FE_READ_SNR">FE_READ_SNR</link> for this command.</para>
290</entry>
291 </row><row><entry
292 align="char">
293<para>uint16_t *snr</para>
294</entry><entry
295 align="char">
296<para>The signal-to-noise ratio is stored into *snr.</para>
297</entry>
298 </row></tbody></tgroup></informaltable>
299
300&return-value-dvb;
301</section>
302
303<section id="FE_READ_SIGNAL_STRENGTH">
304<title>FE_READ_SIGNAL_STRENGTH</title>
305<para>DESCRIPTION
306</para>
307<informaltable><tgroup cols="1"><tbody><row><entry
308 align="char">
309<para>This ioctl call returns the signal strength value for the signal currently received
310 by the front-end. For this command, read-only access to the device is sufficient.</para>
311</entry>
312 </row></tbody></tgroup></informaltable>
313<para>SYNOPSIS
314</para>
315<informaltable><tgroup cols="1"><tbody><row><entry
316 align="char">
317<para>int ioctl( int fd, int request =
318 <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link>, uint16_t &#x22C6;strength);</para>
319</entry>
320 </row></tbody></tgroup></informaltable>
321
322<para>PARAMETERS
323</para>
324<informaltable><tgroup cols="2"><tbody><row><entry
325 align="char">
326<para>int fd</para>
327</entry><entry
328 align="char">
329<para>File descriptor returned by a previous call to open().</para>
330</entry>
331 </row><row><entry
332 align="char">
333<para>int request</para>
334</entry><entry
335 align="char">
336<para>Equals <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link> for this
337 command.</para>
338</entry>
339 </row><row><entry
340 align="char">
341<para>uint16_t *strength</para>
342</entry><entry
343 align="char">
344<para>The signal strength value is stored into *strength.</para>
345</entry>
346 </row></tbody></tgroup></informaltable>
347
348&return-value-dvb;
349</section>
350
351<section id="FE_READ_UNCORRECTED_BLOCKS">
352<title>FE_READ_UNCORRECTED_BLOCKS</title>
353<para>DESCRIPTION
354</para>
355<informaltable><tgroup cols="1"><tbody><row><entry
356 align="char">
357<para>This ioctl call returns the number of uncorrected blocks detected by the device
358 driver during its lifetime. For meaningful measurements, the increment in block
359 count during a specific time interval should be calculated. For this command,
360 read-only access to the device is sufficient.</para>
361</entry>
362 </row><row><entry
363 align="char">
364<para>Note that the counter will wrap to zero after its maximum count has been
365 reached.</para>
366</entry>
367 </row></tbody></tgroup></informaltable>
368<para>SYNOPSIS
369</para>
370<informaltable><tgroup cols="1"><tbody><row><entry
371 align="char">
372<para>int ioctl( int fd, int request =
373 <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link>, uint32_t &#x22C6;ublocks);</para>
374</entry>
375 </row></tbody></tgroup></informaltable>
376<para>PARAMETERS
377</para>
378<informaltable><tgroup cols="2"><tbody><row><entry
379 align="char">
380<para>int fd</para>
381</entry><entry
382 align="char">
383<para>File descriptor returned by a previous call to open().</para>
384</entry>
385 </row><row><entry
386 align="char">
387<para>int request</para>
388</entry><entry
389 align="char">
390<para>Equals <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link> for this
391 command.</para>
392</entry>
393 </row><row><entry
394 align="char">
395<para>uint32_t *ublocks</para>
396</entry><entry
397 align="char">
398<para>The total number of uncorrected blocks seen by the driver
399 so far.</para>
400</entry>
401 </row></tbody></tgroup></informaltable>
402
403&return-value-dvb;
404</section>
405
406<section id="FE_SET_FRONTEND">
407<title>FE_SET_FRONTEND</title>
408<para>DESCRIPTION
409</para>
410<informaltable><tgroup cols="1"><tbody><row><entry
411 align="char">
412<para>This ioctl call starts a tuning operation using specified parameters. The result
413 of this call will be successful if the parameters were valid and the tuning could
414 be initiated. The result of the tuning operation in itself, however, will arrive
415 asynchronously as an event (see documentation for <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> and
416 FrontendEvent.) If a new <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> operation is initiated before
417 the previous one was completed, the previous operation will be aborted in favor
418 of the new one. This command requires read/write access to the device.</para>
419</entry>
420 </row></tbody></tgroup></informaltable>
421
422<para>SYNOPSIS
423</para>
424<informaltable><tgroup cols="1"><tbody><row><entry
425 align="char">
426<para>int ioctl(int fd, int request = <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link>,
427 struct dvb_frontend_parameters &#x22C6;p);</para>
428</entry>
429 </row></tbody></tgroup></informaltable>
430<para>PARAMETERS
431</para>
432<informaltable><tgroup cols="2"><tbody><row><entry
433 align="char">
434<para>int fd</para>
435</entry><entry
436 align="char">
437<para>File descriptor returned by a previous call to open().</para>
438</entry>
439 </row><row><entry
440 align="char">
441<para>int request</para>
442</entry><entry
443 align="char">
444<para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para>
445</entry>
446 </row><row><entry
447 align="char">
448<para>struct
449 dvb_frontend_parameters
450 *p</para>
451</entry><entry
452 align="char">
453<para>Points to parameters for tuning operation.</para>
454</entry>
455 </row></tbody></tgroup></informaltable>
456
457&return-value-dvb;
458<informaltable><tgroup cols="2"><tbody><row><entry
459 align="char">
460<para>EINVAL</para>
461</entry><entry
462 align="char">
463<para>Maximum supported symbol rate reached.</para>
464</entry>
465</row></tbody></tgroup></informaltable>
466</section>
467
468<section id="FE_GET_FRONTEND">
469<title>FE_GET_FRONTEND</title>
470<para>DESCRIPTION
471</para>
472<informaltable><tgroup cols="1"><tbody><row><entry
473 align="char">
474<para>This ioctl call queries the currently effective frontend parameters. For this
475 command, read-only access to the device is sufficient.</para>
476</entry>
477 </row></tbody></tgroup></informaltable>
478
479<para>SYNOPSIS
480</para>
481<informaltable><tgroup cols="1"><tbody><row><entry
482 align="char">
483<para>int ioctl(int fd, int request = <link linkend="FE_GET_FRONTEND">FE_GET_FRONTEND</link>,
484 struct dvb_frontend_parameters &#x22C6;p);</para>
485</entry>
486 </row></tbody></tgroup></informaltable>
487
488<para>PARAMETERS
489</para>
490<informaltable><tgroup cols="2"><tbody><row><entry
491 align="char">
492<para>int fd</para>
493</entry><entry
494 align="char">
495<para>File descriptor returned by a previous call to open().</para>
496</entry>
497 </row><row><entry
498 align="char">
499<para>int request</para>
500</entry><entry
501 align="char">
502<para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para>
503</entry>
504 </row><row><entry
505 align="char">
506<para>struct
507 dvb_frontend_parameters
508 *p</para>
509</entry><entry
510 align="char">
511<para>Points to parameters for tuning operation.</para>
512</entry>
513 </row></tbody></tgroup></informaltable>
514
515&return-value-dvb;
516<informaltable><tgroup cols="2"><tbody><row><entry
517 align="char">
518<para>EINVAL</para>
519</entry><entry
520 align="char">
521<para>Maximum supported symbol rate reached.</para>
522</entry>
523 </row></tbody></tgroup></informaltable>
524
525</section>
526
527<section id="FE_GET_EVENT">
528<title>FE_GET_EVENT</title>
529<para>DESCRIPTION
530</para>
531<informaltable><tgroup cols="1"><tbody><row><entry
532 align="char">
533<para>This ioctl call returns a frontend event if available. If an event is not
534 available, the behavior depends on whether the device is in blocking or
535 non-blocking mode. In the latter case, the call fails immediately with errno
536 set to EWOULDBLOCK. In the former case, the call blocks until an event
537 becomes available.</para>
538</entry>
539 </row><row><entry
540 align="char">
541<para>The standard Linux poll() and/or select() system calls can be used with the
542 device file descriptor to watch for new events. For select(), the file descriptor
543 should be included in the exceptfds argument, and for poll(), POLLPRI should
544 be specified as the wake-up condition. Since the event queue allocated is
545 rather small (room for 8 events), the queue must be serviced regularly to avoid
546 overflow. If an overflow happens, the oldest event is discarded from the queue,
547 and an error (EOVERFLOW) occurs the next time the queue is read. After
548 reporting the error condition in this fashion, subsequent
549 <link linkend="FE_GET_EVENT">FE_GET_EVENT</link>
550 calls will return events from the queue as usual.</para>
551</entry>
552 </row><row><entry
553 align="char">
554<para>For the sake of implementation simplicity, this command requires read/write
555 access to the device.</para>
556</entry>
557 </row></tbody></tgroup></informaltable>
558
559<para>SYNOPSIS
560</para>
561<informaltable><tgroup cols="1"><tbody><row><entry
562 align="char">
563<para>int ioctl(int fd, int request = QPSK_GET_EVENT,
564 struct dvb_frontend_event &#x22C6;ev);</para>
565</entry>
566 </row></tbody></tgroup></informaltable>
567
568<para>PARAMETERS
569</para>
570<informaltable><tgroup cols="2"><tbody><row><entry
571 align="char">
572<para>int fd</para>
573</entry><entry
574 align="char">
575<para>File descriptor returned by a previous call to open().</para>
576</entry>
577 </row><row><entry
578 align="char">
579<para>int request</para>
580</entry><entry
581 align="char">
582<para>Equals <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> for this command.</para>
583</entry>
584 </row><row><entry
585 align="char">
586<para>struct
587 dvb_frontend_event
588 *ev</para>
589</entry><entry
590 align="char">
591<para>Points to the location where the event,</para>
592</entry>
593 </row><row><entry
594 align="char">
595</entry><entry
596 align="char">
597<para>if any, is to be stored.</para>
598</entry>
599 </row></tbody></tgroup></informaltable>
600
601&return-value-dvb;
602<informaltable><tgroup cols="2"><tbody><row><entry
603 align="char">
604<para>EWOULDBLOCK</para>
605</entry><entry
606 align="char">
607<para>There is no event pending, and the device is in
608 non-blocking mode.</para>
609</entry>
610 </row><row><entry
611 align="char">
612<para>EOVERFLOW</para>
613</entry><entry
614 align="char">
615<para>Overflow in event queue - one or more events were lost.</para>
616</entry>
617</row></tbody></tgroup></informaltable>
618</section>
619
620<section id="FE_DISHNETWORK_SEND_LEGACY_CMD">
621 <title>FE_DISHNETWORK_SEND_LEGACY_CMD</title>
622<para>DESCRIPTION</para>
623<informaltable><tgroup cols="1"><tbody><row>
624<entry align="char">
625<para>WARNING: This is a very obscure legacy command, used only at stv0299 driver. Should not be used on newer drivers.</para>
626<para>It provides a non-standard method for selecting Diseqc voltage on the frontend, for Dish Network legacy switches.</para>
627<para>As support for this ioctl were added in 2004, this means that such dishes were already legacy in 2004.</para>
628</entry>
629</row></tbody></tgroup></informaltable>
630
631<para>SYNOPSIS</para>
632<informaltable><tgroup cols="1"><tbody><row>
633<entry align="char">
634<para>int ioctl(int fd, int request =
635 <link linkend="FE_DISHNETWORK_SEND_LEGACY_CMD">FE_DISHNETWORK_SEND_LEGACY_CMD</link>, unsigned long cmd);</para>
636</entry>
637</row></tbody></tgroup></informaltable>
638
639<para>PARAMETERS</para>
640<informaltable><tgroup cols="2"><tbody><row>
641<entry align="char">
642 <para>unsigned long cmd</para>
643</entry>
644<entry align="char">
645<para>
646sends the specified raw cmd to the dish via DISEqC.
647</para>
648</entry>
649 </row></tbody></tgroup></informaltable>
650
651&return-value-dvb;
652</section>
653
654</section>
Documentation/DocBook/media/dvb/intro.xml+0−211
@@ -1,211 +0,0 @@
1<title>Introduction</title>
2
3<section id="requisites">
4<title>What you need to know</title>
5
6<para>The reader of this document is required to have some knowledge in
7the area of digital video broadcasting (DVB) and should be familiar with
8part I of the MPEG2 specification ISO/IEC 13818 (aka ITU-T H.222), i.e
9you should know what a program/transport stream (PS/TS) is and what is
10meant by a packetized elementary stream (PES) or an I-frame.</para>
11
12<para>Various DVB standards documents are available from
13<ulink url="http://www.dvb.org" /> and/or
14<ulink url="http://www.etsi.org" />.</para>
15
16<para>It is also necessary to know how to access unix/linux devices and
17how to use ioctl calls. This also includes the knowledge of C or C++.
18</para>
19</section>
20
21<section id="history">
22<title>History</title>
23
24<para>The first API for DVB cards we used at Convergence in late 1999
25was an extension of the Video4Linux API which was primarily developed
26for frame grabber cards. As such it was not really well suited to be
27used for DVB cards and their new features like recording MPEG streams
28and filtering several section and PES data streams at the same time.
29</para>
30
31<para>In early 2000, we were approached by Nokia with a proposal for a
32new standard Linux DVB API. As a commitment to the development of
33terminals based on open standards, Nokia and Convergence made it
34available to all Linux developers and published it on
35<ulink url="https://linuxtv.org" /> in September 2000.
36Convergence is the maintainer of the Linux DVB API. Together with the
37LinuxTV community (i.e. you, the reader of this document), the Linux DVB
38API will be constantly reviewed and improved. With the Linux driver for
39the Siemens/Hauppauge DVB PCI card Convergence provides a first
40implementation of the Linux DVB API.</para>
41</section>
42
43<section id="overview">
44<title>Overview</title>
45
46<figure id="stb_components">
47<title>Components of a DVB card/STB</title>
48<mediaobject>
49<imageobject>
50<imagedata fileref="dvbstb.pdf" format="PS" />
51</imageobject>
52<imageobject>
53<imagedata fileref="dvbstb.png" format="PNG" />
54</imageobject>
55</mediaobject>
56</figure>
57
58<para>A DVB PCI card or DVB set-top-box (STB) usually consists of the
59following main hardware components: </para>
60
61<itemizedlist>
62 <listitem>
63
64<para>Frontend consisting of tuner and DVB demodulator</para>
65
66<para>Here the raw signal reaches the DVB hardware from a satellite dish
67or antenna or directly from cable. The frontend down-converts and
68demodulates this signal into an MPEG transport stream (TS). In case of a
69satellite frontend, this includes a facility for satellite equipment
70control (SEC), which allows control of LNB polarization, multi feed
71switches or dish rotors.</para>
72
73</listitem>
74 <listitem>
75
76<para>Conditional Access (CA) hardware like CI adapters and smartcard slots
77</para>
78
79<para>The complete TS is passed through the CA hardware. Programs to
80which the user has access (controlled by the smart card) are decoded in
81real time and re-inserted into the TS.</para>
82
83</listitem>
84 <listitem>
85 <para>Demultiplexer which filters the incoming DVB stream</para>
86
87<para>The demultiplexer splits the TS into its components like audio and
88video streams. Besides usually several of such audio and video streams
89it also contains data streams with information about the programs
90offered in this or other streams of the same provider.</para>
91
92</listitem>
93<listitem>
94
95<para>MPEG2 audio and video decoder</para>
96
97<para>The main targets of the demultiplexer are the MPEG2 audio and
98video decoders. After decoding they pass on the uncompressed audio and
99video to the computer screen or (through a PAL/NTSC encoder) to a TV
100set.</para>
101
102
103</listitem>
104</itemizedlist>
105
106<para><xref linkend="stb_components" /> shows a crude schematic of the control and data flow
107between those components.</para>
108
109<para>On a DVB PCI card not all of these have to be present since some
110functionality can be provided by the main CPU of the PC (e.g. MPEG
111picture and sound decoding) or is not needed (e.g. for data-only uses
112like &#8220;internet over satellite&#8221;). Also not every card or STB
113provides conditional access hardware.</para>
114
115</section>
116
117<section id="dvb_devices">
118<title>Linux DVB Devices</title>
119
120<para>The Linux DVB API lets you control these hardware components
121through currently six Unix-style character devices for video, audio,
122frontend, demux, CA and IP-over-DVB networking. The video and audio
123devices control the MPEG2 decoder hardware, the frontend device the
124tuner and the DVB demodulator. The demux device gives you control over
125the PES and section filters of the hardware. If the hardware does not
126support filtering these filters can be implemented in software. Finally,
127the CA device controls all the conditional access capabilities of the
128hardware. It can depend on the individual security requirements of the
129platform, if and how many of the CA functions are made available to the
130application through this device.</para>
131
132<para>All devices can be found in the <constant>/dev</constant>
133tree under <constant>/dev/dvb</constant>. The individual devices
134are called:</para>
135
136<itemizedlist>
137<listitem>
138
139<para><constant>/dev/dvb/adapterN/audioM</constant>,</para>
140</listitem>
141<listitem>
142<para><constant>/dev/dvb/adapterN/videoM</constant>,</para>
143</listitem>
144<listitem>
145<para><constant>/dev/dvb/adapterN/frontendM</constant>,</para>
146</listitem>
147 <listitem>
148
149<para><constant>/dev/dvb/adapterN/netM</constant>,</para>
150</listitem>
151 <listitem>
152
153<para><constant>/dev/dvb/adapterN/demuxM</constant>,</para>
154</listitem>
155 <listitem>
156
157<para><constant>/dev/dvb/adapterN/dvrM</constant>,</para>
158</listitem>
159 <listitem>
160
161<para><constant>/dev/dvb/adapterN/caM</constant>,</para></listitem></itemizedlist>
162
163<para>where N enumerates the DVB PCI cards in a system starting
164from&#x00A0;0, and M enumerates the devices of each type within each
165adapter, starting from&#x00A0;0, too. We will omit the &#8220;
166<constant>/dev/dvb/adapterN/</constant>&#8221; in the further discussion
167of these devices.</para>
168
169<para>More details about the data structures and function calls of all
170the devices are described in the following chapters.</para>
171
172</section>
173
174<section id="include_files">
175<title>API include files</title>
176
177<para>For each of the DVB devices a corresponding include file exists.
178The DVB API include files should be included in application sources with
179a partial path like:</para>
180
181<programlisting>
182 #include &#x003C;linux/dvb/audio.h&#x003E;
183</programlisting>
184<programlisting>
185 #include &#x003C;linux/dvb/ca.h&#x003E;
186</programlisting>
187<programlisting>
188 #include &#x003C;linux/dvb/dmx.h&#x003E;
189</programlisting>
190<programlisting>
191 #include &#x003C;linux/dvb/frontend.h&#x003E;
192</programlisting>
193<programlisting>
194 #include &#x003C;linux/dvb/net.h&#x003E;
195</programlisting>
196<programlisting>
197 #include &#x003C;linux/dvb/osd.h&#x003E;
198</programlisting>
199<programlisting>
200 #include &#x003C;linux/dvb/video.h&#x003E;
201</programlisting>
202
203<para>To enable applications to support different API version, an
204additional include file
205<constant>linux/dvb/version.h</constant> exists, which defines the
206constant <constant>DVB_API_VERSION</constant>. This document
207describes <constant>DVB_API_VERSION 5.10</constant>.
208</para>
209
210</section>
211
Documentation/DocBook/media/dvb/net.xml+0−238
@@ -1,238 +0,0 @@
1<title>DVB Network API</title>
2<para>The DVB net device controls the mapping of data packages that are
3 part of a transport stream to be mapped into a virtual network interface,
4 visible through the standard Linux network protocol stack.</para>
5<para>Currently, two encapsulations are supported:</para>
6<itemizedlist>
7 <listitem><para><ulink url="http://en.wikipedia.org/wiki/Multiprotocol_Encapsulation">
8 Multi Protocol Encapsulation (MPE)</ulink></para></listitem>
9 <listitem><para><ulink url="http://en.wikipedia.org/wiki/Unidirectional_Lightweight_Encapsulation">
10 Ultra Lightweight Encapsulation (ULE)</ulink></para></listitem>
11</itemizedlist>
12
13<para>In order to create the Linux virtual network interfaces, an application
14 needs to tell to the Kernel what are the PIDs and the encapsulation types
15 that are present on the transport stream. This is done through
16 <constant>/dev/dvb/adapter?/net?</constant> device node.
17 The data will be available via virtual <constant>dvb?_?</constant>
18 network interfaces, and will be controlled/routed via the standard
19 ip tools (like ip, route, netstat, ifconfig, etc).</para>
20<para> Data types and and ioctl definitions are defined via
21 <constant>linux/dvb/net.h</constant> header.</para>
22
23<section id="net_fcalls">
24<title>DVB net Function Calls</title>
25
26
27<refentry id="NET_ADD_IF">
28 <refmeta>
29 <refentrytitle>ioctl NET_ADD_IF</refentrytitle>
30 &manvol;
31 </refmeta>
32
33 <refnamediv>
34 <refname>NET_ADD_IF</refname>
35 <refpurpose>Creates a new network interface for a given Packet ID.</refpurpose>
36 </refnamediv>
37
38 <refsynopsisdiv>
39 <funcsynopsis>
40 <funcprototype>
41 <funcdef>int <function>ioctl</function></funcdef>
42 <paramdef>int <parameter>fd</parameter></paramdef>
43 <paramdef>int <parameter>request</parameter></paramdef>
44 <paramdef>struct dvb_net_if *<parameter>net_if</parameter></paramdef>
45 </funcprototype>
46 </funcsynopsis>
47 </refsynopsisdiv>
48
49 <refsect1>
50 <title>Arguments</title>
51 <variablelist>
52 <varlistentry>
53 <term><parameter>fd</parameter></term>
54 <listitem>
55 <para>&fe_fd;</para>
56 </listitem>
57 </varlistentry>
58 <varlistentry>
59 <term><parameter>request</parameter></term>
60 <listitem>
61 <para>FE_SET_TONE</para>
62 </listitem>
63 </varlistentry>
64 <varlistentry>
65 <term><parameter>net_if</parameter></term>
66 <listitem>
67 <para>pointer to &dvb-net-if;</para>
68 </listitem>
69 </varlistentry>
70 </variablelist>
71 </refsect1>
72
73 <refsect1>
74 <title>Description</title>
75
76<para>The NET_ADD_IF ioctl system call selects the Packet ID (PID) that
77 contains a TCP/IP traffic, the type of encapsulation to be used (MPE or ULE)
78 and the interface number for the new interface to be created. When the
79 system call successfully returns, a new virtual network interface is created.</para>
80<para>The &dvb-net-if;::ifnum field will be filled with the number of the
81 created interface.</para>
82
83&return-value-dvb;
84</refsect1>
85
86<refsect1 id="dvb-net-if-t">
87<title>struct <structname>dvb_net_if</structname> description</title>
88
89<table pgwide="1" frame="none" id="dvb-net-if">
90 <title>struct <structname>dvb_net_if</structname></title>
91 <tgroup cols="2">
92 &cs-def;
93 <thead>
94 <row>
95 <entry>ID</entry>
96 <entry>Description</entry>
97 </row>
98 </thead>
99 <tbody valign="top">
100 <row>
101 <entry align="char">pid</entry>
102 <entry align="char">Packet ID (PID) of the MPEG-TS that contains
103 data</entry>
104 </row><row>
105 <entry align="char">ifnum</entry>
106 <entry align="char">number of the DVB interface.</entry>
107 </row><row>
108 <entry align="char">feedtype</entry>
109 <entry align="char">Encapsulation type of the feed. It can be:
110 <constant>DVB_NET_FEEDTYPE_MPE</constant> for MPE encoding
111 or
112 <constant>DVB_NET_FEEDTYPE_ULE</constant> for ULE encoding.
113 </entry>
114 </row>
115 </tbody>
116 </tgroup>
117</table>
118</refsect1>
119</refentry>
120
121<refentry id="NET_REMOVE_IF">
122 <refmeta>
123 <refentrytitle>ioctl NET_REMOVE_IF</refentrytitle>
124 &manvol;
125 </refmeta>
126
127 <refnamediv>
128 <refname>NET_REMOVE_IF</refname>
129 <refpurpose>Removes a network interface.</refpurpose>
130 </refnamediv>
131
132 <refsynopsisdiv>
133 <funcsynopsis>
134 <funcprototype>
135 <funcdef>int <function>ioctl</function></funcdef>
136 <paramdef>int <parameter>fd</parameter></paramdef>
137 <paramdef>int <parameter>request</parameter></paramdef>
138 <paramdef>int <parameter>ifnum</parameter></paramdef>
139 </funcprototype>
140 </funcsynopsis>
141 </refsynopsisdiv>
142
143 <refsect1>
144 <title>Arguments</title>
145 <variablelist>
146 <varlistentry>
147 <term><parameter>fd</parameter></term>
148 <listitem>
149 <para>&fe_fd;</para>
150 </listitem>
151 </varlistentry>
152 <varlistentry>
153 <term><parameter>request</parameter></term>
154 <listitem>
155 <para>FE_SET_TONE</para>
156 </listitem>
157 </varlistentry>
158 <varlistentry>
159 <term><parameter>net_if</parameter></term>
160 <listitem>
161 <para>number of the interface to be removed</para>
162 </listitem>
163 </varlistentry>
164 </variablelist>
165 </refsect1>
166
167 <refsect1>
168 <title>Description</title>
169
170<para>The NET_REMOVE_IF ioctl deletes an interface previously created
171 via &NET-ADD-IF;.</para>
172
173&return-value-dvb;
174</refsect1>
175</refentry>
176
177
178<refentry id="NET_GET_IF">
179 <refmeta>
180 <refentrytitle>ioctl NET_GET_IF</refentrytitle>
181 &manvol;
182 </refmeta>
183
184 <refnamediv>
185 <refname>NET_GET_IF</refname>
186 <refpurpose>Read the configuration data of an interface created via
187 &NET-ADD-IF;.</refpurpose>
188 </refnamediv>
189
190 <refsynopsisdiv>
191 <funcsynopsis>
192 <funcprototype>
193 <funcdef>int <function>ioctl</function></funcdef>
194 <paramdef>int <parameter>fd</parameter></paramdef>
195 <paramdef>int <parameter>request</parameter></paramdef>
196 <paramdef>struct dvb_net_if *<parameter>net_if</parameter></paramdef>
197 </funcprototype>
198 </funcsynopsis>
199 </refsynopsisdiv>
200
201 <refsect1>
202 <title>Arguments</title>
203 <variablelist>
204 <varlistentry>
205 <term><parameter>fd</parameter></term>
206 <listitem>
207 <para>&fe_fd;</para>
208 </listitem>
209 </varlistentry>
210 <varlistentry>
211 <term><parameter>request</parameter></term>
212 <listitem>
213 <para>FE_SET_TONE</para>
214 </listitem>
215 </varlistentry>
216 <varlistentry>
217 <term><parameter>net_if</parameter></term>
218 <listitem>
219 <para>pointer to &dvb-net-if;</para>
220 </listitem>
221 </varlistentry>
222 </variablelist>
223 </refsect1>
224
225 <refsect1>
226 <title>Description</title>
227
228<para>The NET_GET_IF ioctl uses the interface number given by the
229 &dvb-net-if;::ifnum field and fills the content of &dvb-net-if; with
230 the packet ID and encapsulation type used on such interface. If the
231 interface was not created yet with &NET-ADD-IF;, it will return -1 and
232 fill the <constant>errno</constant> with <constant>EINVAL</constant>
233 error code.</para>
234
235&return-value-dvb;
236</refsect1>
237</refentry>
238</section>
Documentation/DocBook/media/dvb/video.xml+0−1968
@@ -1,1968 +0,0 @@
1<title>DVB Video Device</title>
2<para>The DVB video device controls the MPEG2 video decoder of the DVB hardware. It
3can be accessed through <emphasis role="bold">/dev/dvb/adapter0/video0</emphasis>. Data types and and
4ioctl definitions can be accessed by including <emphasis role="bold">linux/dvb/video.h</emphasis> in your
5application.
6</para>
7<para>Note that the DVB video device only controls decoding of the MPEG video stream, not
8its presentation on the TV or computer screen. On PCs this is typically handled by an
9associated video4linux device, e.g. <emphasis role="bold">/dev/video</emphasis>, which allows scaling and defining output
10windows.
11</para>
12<para>Some DVB cards don&#8217;t have their own MPEG decoder, which results in the omission of
13the audio and video device as well as the video4linux device.
14</para>
15<para>The ioctls that deal with SPUs (sub picture units) and navigation packets are only
16supported on some MPEG decoders made for DVD playback.
17</para>
18<para>
19These ioctls were also used by V4L2 to control MPEG decoders implemented in V4L2. The use
20of these ioctls for that purpose has been made obsolete and proper V4L2 ioctls or controls
21have been created to replace that functionality.</para>
22<section id="video_types">
23<title>Video Data Types</title>
24
25<section id="video-format-t">
26<title>video_format_t</title>
27<para>The <constant>video_format_t</constant> data type defined by
28</para>
29<programlisting>
30typedef enum {
31 VIDEO_FORMAT_4_3, /&#x22C6; Select 4:3 format &#x22C6;/
32 VIDEO_FORMAT_16_9, /&#x22C6; Select 16:9 format. &#x22C6;/
33 VIDEO_FORMAT_221_1 /&#x22C6; 2.21:1 &#x22C6;/
34} video_format_t;
35</programlisting>
36<para>is used in the VIDEO_SET_FORMAT function (??) to tell the driver which aspect ratio
37the output hardware (e.g. TV) has. It is also used in the data structures video_status
38(??) returned by VIDEO_GET_STATUS (??) and video_event (??) returned by
39VIDEO_GET_EVENT (??) which report about the display format of the current video
40stream.
41</para>
42</section>
43
44<section id="video-displayformat-t">
45<title>video_displayformat_t</title>
46<para>In case the display format of the video stream and of the display hardware differ the
47application has to specify how to handle the cropping of the picture. This can be done using
48the VIDEO_SET_DISPLAY_FORMAT call (??) which accepts
49</para>
50<programlisting>
51typedef enum {
52 VIDEO_PAN_SCAN, /&#x22C6; use pan and scan format &#x22C6;/
53 VIDEO_LETTER_BOX, /&#x22C6; use letterbox format &#x22C6;/
54 VIDEO_CENTER_CUT_OUT /&#x22C6; use center cut out format &#x22C6;/
55} video_displayformat_t;
56</programlisting>
57<para>as argument.
58</para>
59</section>
60
61<section id="video-stream-source-t">
62<title>video_stream_source_t</title>
63<para>The video stream source is set through the VIDEO_SELECT_SOURCE call and can take
64the following values, depending on whether we are replaying from an internal (demuxer) or
65external (user write) source.
66</para>
67<programlisting>
68typedef enum {
69 VIDEO_SOURCE_DEMUX, /&#x22C6; Select the demux as the main source &#x22C6;/
70 VIDEO_SOURCE_MEMORY /&#x22C6; If this source is selected, the stream
71 comes from the user through the write
72 system call &#x22C6;/
73} video_stream_source_t;
74</programlisting>
75<para>VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
76DVR device) as the source of the video stream. If VIDEO_SOURCE_MEMORY
77is selected the stream comes from the application through the <emphasis role="bold">write()</emphasis> system
78call.
79</para>
80</section>
81
82<section id="video-play-state-t">
83<title>video_play_state_t</title>
84<para>The following values can be returned by the VIDEO_GET_STATUS call representing the
85state of video playback.
86</para>
87<programlisting>
88typedef enum {
89 VIDEO_STOPPED, /&#x22C6; Video is stopped &#x22C6;/
90 VIDEO_PLAYING, /&#x22C6; Video is currently playing &#x22C6;/
91 VIDEO_FREEZED /&#x22C6; Video is freezed &#x22C6;/
92} video_play_state_t;
93</programlisting>
94</section>
95
96<section id="video-command">
97<title>struct video_command</title>
98<para>The structure must be zeroed before use by the application
99This ensures it can be extended safely in the future.</para>
100<programlisting>
101struct video_command {
102 __u32 cmd;
103 __u32 flags;
104 union {
105 struct {
106 __u64 pts;
107 } stop;
108
109 struct {
110 /&#x22C6; 0 or 1000 specifies normal speed,
111 1 specifies forward single stepping,
112 -1 specifies backward single stepping,
113 &gt;>1: playback at speed/1000 of the normal speed,
114 &lt;-1: reverse playback at (-speed/1000) of the normal speed. &#x22C6;/
115 __s32 speed;
116 __u32 format;
117 } play;
118
119 struct {
120 __u32 data[16];
121 } raw;
122 };
123};
124</programlisting>
125</section>
126
127<section id="video-size-t">
128<title>video_size_t</title>
129<programlisting>
130typedef struct {
131 int w;
132 int h;
133 video_format_t aspect_ratio;
134} video_size_t;
135</programlisting>
136</section>
137
138
139<section id="video-event">
140<title>struct video_event</title>
141<para>The following is the structure of a video event as it is returned by the VIDEO_GET_EVENT
142call.
143</para>
144<programlisting>
145struct video_event {
146 __s32 type;
147#define VIDEO_EVENT_SIZE_CHANGED 1
148#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
149#define VIDEO_EVENT_DECODER_STOPPED 3
150#define VIDEO_EVENT_VSYNC 4
151 __kernel_time_t timestamp;
152 union {
153 video_size_t size;
154 unsigned int frame_rate; /&#x22C6; in frames per 1000sec &#x22C6;/
155 unsigned char vsync_field; /&#x22C6; unknown/odd/even/progressive &#x22C6;/
156 } u;
157};
158</programlisting>
159</section>
160
161<section id="video-status">
162<title>struct video_status</title>
163<para>The VIDEO_GET_STATUS call returns the following structure informing about various
164states of the playback operation.
165</para>
166<programlisting>
167struct video_status {
168 int video_blank; /&#x22C6; blank video on freeze? &#x22C6;/
169 video_play_state_t play_state; /&#x22C6; current state of playback &#x22C6;/
170 video_stream_source_t stream_source; /&#x22C6; current source (demux/memory) &#x22C6;/
171 video_format_t video_format; /&#x22C6; current aspect ratio of stream &#x22C6;/
172 video_displayformat_t display_format;/&#x22C6; selected cropping mode &#x22C6;/
173};
174</programlisting>
175<para>If video_blank is set video will be blanked out if the channel is changed or if playback is
176stopped. Otherwise, the last picture will be displayed. play_state indicates if the video is
177currently frozen, stopped, or being played back. The stream_source corresponds to the seleted
178source for the video stream. It can come either from the demultiplexer or from memory.
179The video_format indicates the aspect ratio (one of 4:3 or 16:9) of the currently
180played video stream. Finally, display_format corresponds to the selected cropping
181mode in case the source video format is not the same as the format of the output
182device.
183</para>
184</section>
185
186<section id="video-still-picture">
187<title>struct video_still_picture</title>
188<para>An I-frame displayed via the VIDEO_STILLPICTURE call is passed on within the
189following structure.
190</para>
191<programlisting>
192/&#x22C6; pointer to and size of a single iframe in memory &#x22C6;/
193struct video_still_picture {
194 char &#x22C6;iFrame; /&#x22C6; pointer to a single iframe in memory &#x22C6;/
195 int32_t size;
196};
197</programlisting>
198</section>
199
200<section id="video_caps">
201<title>video capabilities</title>
202<para>A call to VIDEO_GET_CAPABILITIES returns an unsigned integer with the following
203bits set according to the hardwares capabilities.
204</para>
205<programlisting>
206 /&#x22C6; bit definitions for capabilities: &#x22C6;/
207 /&#x22C6; can the hardware decode MPEG1 and/or MPEG2? &#x22C6;/
208 #define VIDEO_CAP_MPEG1 1
209 #define VIDEO_CAP_MPEG2 2
210 /&#x22C6; can you send a system and/or program stream to video device?
211 (you still have to open the video and the audio device but only
212 send the stream to the video device) &#x22C6;/
213 #define VIDEO_CAP_SYS 4
214 #define VIDEO_CAP_PROG 8
215 /&#x22C6; can the driver also handle SPU, NAVI and CSS encoded data?
216 (CSS API is not present yet) &#x22C6;/
217 #define VIDEO_CAP_SPU 16
218 #define VIDEO_CAP_NAVI 32
219 #define VIDEO_CAP_CSS 64
220</programlisting>
221</section>
222
223<section id="video-system">
224<title>video_system_t</title>
225<para>A call to VIDEO_SET_SYSTEM sets the desired video system for TV output. The
226following system types can be set:
227</para>
228<programlisting>
229typedef enum {
230 VIDEO_SYSTEM_PAL,
231 VIDEO_SYSTEM_NTSC,
232 VIDEO_SYSTEM_PALN,
233 VIDEO_SYSTEM_PALNc,
234 VIDEO_SYSTEM_PALM,
235 VIDEO_SYSTEM_NTSC60,
236 VIDEO_SYSTEM_PAL60,
237 VIDEO_SYSTEM_PALM60
238} video_system_t;
239</programlisting>
240</section>
241
242<section id="video-highlight">
243<title>struct video_highlight</title>
244<para>Calling the ioctl VIDEO_SET_HIGHLIGHTS posts the SPU highlight information. The
245call expects the following format for that information:
246</para>
247<programlisting>
248 typedef
249 struct video_highlight {
250 boolean active; /&#x22C6; 1=show highlight, 0=hide highlight &#x22C6;/
251 uint8_t contrast1; /&#x22C6; 7- 4 Pattern pixel contrast &#x22C6;/
252 /&#x22C6; 3- 0 Background pixel contrast &#x22C6;/
253 uint8_t contrast2; /&#x22C6; 7- 4 Emphasis pixel-2 contrast &#x22C6;/
254 /&#x22C6; 3- 0 Emphasis pixel-1 contrast &#x22C6;/
255 uint8_t color1; /&#x22C6; 7- 4 Pattern pixel color &#x22C6;/
256 /&#x22C6; 3- 0 Background pixel color &#x22C6;/
257 uint8_t color2; /&#x22C6; 7- 4 Emphasis pixel-2 color &#x22C6;/
258 /&#x22C6; 3- 0 Emphasis pixel-1 color &#x22C6;/
259 uint32_t ypos; /&#x22C6; 23-22 auto action mode &#x22C6;/
260 /&#x22C6; 21-12 start y &#x22C6;/
261 /&#x22C6; 9- 0 end y &#x22C6;/
262 uint32_t xpos; /&#x22C6; 23-22 button color number &#x22C6;/
263 /&#x22C6; 21-12 start x &#x22C6;/
264 /&#x22C6; 9- 0 end x &#x22C6;/
265 } video_highlight_t;
266</programlisting>
267
268</section>
269<section id="video-spu">
270<title>struct video_spu</title>
271<para>Calling VIDEO_SET_SPU deactivates or activates SPU decoding, according to the
272following format:
273</para>
274<programlisting>
275 typedef
276 struct video_spu {
277 boolean active;
278 int stream_id;
279 } video_spu_t;
280</programlisting>
281
282</section>
283<section id="video-spu-palette">
284<title>struct video_spu_palette</title>
285<para>The following structure is used to set the SPU palette by calling VIDEO_SPU_PALETTE:
286</para>
287<programlisting>
288 typedef
289 struct video_spu_palette {
290 int length;
291 uint8_t &#x22C6;palette;
292 } video_spu_palette_t;
293</programlisting>
294
295</section>
296<section id="video-navi-pack">
297<title>struct video_navi_pack</title>
298<para>In order to get the navigational data the following structure has to be passed to the ioctl
299VIDEO_GET_NAVI:
300</para>
301<programlisting>
302 typedef
303 struct video_navi_pack {
304 int length; /&#x22C6; 0 ... 1024 &#x22C6;/
305 uint8_t data[1024];
306 } video_navi_pack_t;
307</programlisting>
308</section>
309
310
311<section id="video-attributes-t">
312<title>video_attributes_t</title>
313<para>The following attributes can be set by a call to VIDEO_SET_ATTRIBUTES:
314</para>
315<programlisting>
316 typedef uint16_t video_attributes_t;
317 /&#x22C6; bits: descr. &#x22C6;/
318 /&#x22C6; 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) &#x22C6;/
319 /&#x22C6; 13-12 TV system (0=525/60, 1=625/50) &#x22C6;/
320 /&#x22C6; 11-10 Aspect ratio (0=4:3, 3=16:9) &#x22C6;/
321 /&#x22C6; 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca &#x22C6;/
322 /&#x22C6; 7 line 21-1 data present in GOP (1=yes, 0=no) &#x22C6;/
323 /&#x22C6; 6 line 21-2 data present in GOP (1=yes, 0=no) &#x22C6;/
324 /&#x22C6; 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 &#x22C6;/
325 /&#x22C6; 2 source letterboxed (1=yes, 0=no) &#x22C6;/
326 /&#x22C6; 0 film/camera mode (0=camera, 1=film (625/50 only)) &#x22C6;/
327</programlisting>
328</section></section>
329
330
331<section id="video_function_calls">
332<title>Video Function Calls</title>
333
334
335<section id="video_fopen">
336<title>open()</title>
337<para>DESCRIPTION
338</para>
339<informaltable><tgroup cols="1"><tbody><row><entry
340 align="char">
341<para>This system call opens a named video device (e.g. /dev/dvb/adapter0/video0)
342 for subsequent use.</para>
343<para>When an open() call has succeeded, the device will be ready for use.
344 The significance of blocking or non-blocking mode is described in the
345 documentation for functions where there is a difference. It does not affect the
346 semantics of the open() call itself. A device opened in blocking mode can later
347 be put into non-blocking mode (and vice versa) using the F_SETFL command
348 of the fcntl system call. This is a standard system call, documented in the Linux
349 manual page for fcntl. Only one user can open the Video Device in O_RDWR
350 mode. All other attempts to open the device in this mode will fail, and an
351 error-code will be returned. If the Video Device is opened in O_RDONLY
352 mode, the only ioctl call that can be used is VIDEO_GET_STATUS. All other
353 call will return an error code.</para>
354</entry>
355 </row></tbody></tgroup></informaltable>
356
357<para>SYNOPSIS
358</para>
359<informaltable><tgroup cols="1"><tbody><row><entry
360 align="char">
361<para>int open(const char &#x22C6;deviceName, int flags);</para>
362</entry>
363 </row></tbody></tgroup></informaltable>
364<para>PARAMETERS
365</para>
366<informaltable><tgroup cols="2"><tbody><row><entry
367 align="char">
368<para>const char
369 *deviceName</para>
370</entry><entry
371 align="char">
372<para>Name of specific video device.</para>
373</entry>
374 </row><row><entry
375 align="char">
376<para>int flags</para>
377</entry><entry
378 align="char">
379<para>A bit-wise OR of the following flags:</para>
380</entry>
381 </row><row><entry
382 align="char">
383</entry><entry
384 align="char">
385<para>O_RDONLY read-only access</para>
386</entry>
387 </row><row><entry
388 align="char">
389</entry><entry
390 align="char">
391<para>O_RDWR read/write access</para>
392</entry>
393 </row><row><entry
394 align="char">
395</entry><entry
396 align="char">
397<para>O_NONBLOCK open in non-blocking mode</para>
398</entry>
399 </row><row><entry
400 align="char">
401</entry><entry
402 align="char">
403<para>(blocking mode is the default)</para>
404</entry>
405 </row></tbody></tgroup></informaltable>
406<para>RETURN VALUE</para>
407<informaltable><tgroup cols="2"><tbody><row><entry
408 align="char">
409<para>ENODEV</para>
410</entry><entry
411 align="char">
412<para>Device driver not loaded/available.</para>
413</entry>
414 </row><row><entry
415 align="char">
416<para>EINTERNAL</para>
417</entry><entry
418 align="char">
419<para>Internal error.</para>
420</entry>
421 </row><row><entry
422 align="char">
423<para>EBUSY</para>
424</entry><entry
425 align="char">
426<para>Device or resource busy.</para>
427</entry>
428 </row><row><entry
429 align="char">
430<para>EINVAL</para>
431</entry><entry
432 align="char">
433<para>Invalid argument.</para>
434</entry>
435 </row></tbody></tgroup></informaltable>
436
437</section>
438<section id="video_fclose">
439<title>close()</title>
440<para>DESCRIPTION
441</para>
442<informaltable><tgroup cols="1"><tbody><row><entry
443 align="char">
444<para>This system call closes a previously opened video device.</para>
445</entry>
446 </row></tbody></tgroup></informaltable>
447<para>SYNOPSIS
448</para>
449<informaltable><tgroup cols="1"><tbody><row><entry
450 align="char">
451<para>int close(int fd);</para>
452</entry>
453 </row></tbody></tgroup></informaltable>
454<para>PARAMETERS
455</para>
456<informaltable><tgroup cols="2"><tbody><row><entry
457 align="char">
458<para>int fd</para>
459</entry><entry
460 align="char">
461<para>File descriptor returned by a previous call to open().</para>
462</entry>
463 </row></tbody></tgroup></informaltable>
464<para>RETURN VALUE</para>
465<informaltable><tgroup cols="2"><tbody><row><entry
466 align="char">
467<para>EBADF</para>
468</entry><entry
469 align="char">
470<para>fd is not a valid open file descriptor.</para>
471</entry>
472 </row></tbody></tgroup></informaltable>
473
474</section>
475<section id="video_fwrite">
476<title>write()</title>
477<para>DESCRIPTION
478</para>
479<informaltable><tgroup cols="1"><tbody><row><entry
480 align="char">
481<para>This system call can only be used if VIDEO_SOURCE_MEMORY is selected
482 in the ioctl call VIDEO_SELECT_SOURCE. The data provided shall be in
483 PES format, unless the capability allows other formats. If O_NONBLOCK is
484 not specified the function will block until buffer space is available. The amount
485 of data to be transferred is implied by count.</para>
486</entry>
487 </row></tbody></tgroup></informaltable>
488<para>SYNOPSIS
489</para>
490<informaltable><tgroup cols="1"><tbody><row><entry
491 align="char">
492<para>size_t write(int fd, const void &#x22C6;buf, size_t count);</para>
493</entry>
494 </row></tbody></tgroup></informaltable>
495<para>PARAMETERS
496</para>
497<informaltable><tgroup cols="2"><tbody><row><entry
498 align="char">
499<para>int fd</para>
500</entry><entry
501 align="char">
502<para>File descriptor returned by a previous call to open().</para>
503</entry>
504 </row><row><entry
505 align="char">
506<para>void *buf</para>
507</entry><entry
508 align="char">
509<para>Pointer to the buffer containing the PES data.</para>
510</entry>
511 </row><row><entry
512 align="char">
513<para>size_t count</para>
514</entry><entry
515 align="char">
516<para>Size of buf.</para>
517</entry>
518 </row></tbody></tgroup></informaltable>
519<para>RETURN VALUE</para>
520<informaltable><tgroup cols="2"><tbody><row><entry
521 align="char">
522<para>EPERM</para>
523</entry><entry
524 align="char">
525<para>Mode VIDEO_SOURCE_MEMORY not selected.</para>
526</entry>
527 </row><row><entry
528 align="char">
529<para>ENOMEM</para>
530</entry><entry
531 align="char">
532<para>Attempted to write more data than the internal buffer can
533 hold.</para>
534</entry>
535 </row><row><entry
536 align="char">
537<para>EBADF</para>
538</entry><entry
539 align="char">
540<para>fd is not a valid open file descriptor.</para>
541</entry>
542 </row></tbody></tgroup></informaltable>
543
544</section><section id="VIDEO_STOP"
545role="subsection"><title>VIDEO_STOP</title>
546<para>DESCRIPTION
547</para>
548<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
549&VIDIOC-DECODER-CMD; instead.</para>
550<informaltable><tgroup cols="1"><tbody><row><entry
551 align="char">
552<para>This ioctl call asks the Video Device to stop playing the current stream.
553 Depending on the input parameter, the screen can be blanked out or displaying
554 the last decoded frame.</para>
555</entry>
556 </row></tbody></tgroup></informaltable>
557<para>SYNOPSIS
558</para>
559<informaltable><tgroup cols="1"><tbody><row><entry
560 align="char">
561<para>int ioctl(fd, int request = VIDEO_STOP, boolean
562 mode);</para>
563</entry>
564 </row></tbody></tgroup></informaltable>
565<para>PARAMETERS
566</para>
567<informaltable><tgroup cols="2"><tbody><row><entry
568 align="char">
569<para>int fd</para>
570</entry><entry
571 align="char">
572<para>File descriptor returned by a previous call to open().</para>
573</entry>
574 </row><row><entry
575 align="char">
576<para>int request</para>
577</entry><entry
578 align="char">
579<para>Equals VIDEO_STOP for this command.</para>
580</entry>
581 </row><row><entry
582 align="char">
583<para>Boolean mode</para>
584</entry><entry
585 align="char">
586<para>Indicates how the screen shall be handled.</para>
587</entry>
588 </row><row><entry
589 align="char">
590</entry><entry
591 align="char">
592<para>TRUE: Blank screen when stop.</para>
593</entry>
594 </row><row><entry
595 align="char">
596</entry><entry
597 align="char">
598<para>FALSE: Show last decoded frame.</para>
599</entry>
600 </row></tbody></tgroup></informaltable>
601&return-value-dvb;
602
603</section><section id="VIDEO_PLAY"
604role="subsection"><title>VIDEO_PLAY</title>
605<para>DESCRIPTION
606</para>
607<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
608&VIDIOC-DECODER-CMD; instead.</para>
609<informaltable><tgroup cols="1"><tbody><row><entry
610 align="char">
611<para>This ioctl call asks the Video Device to start playing a video stream from the
612 selected source.</para>
613</entry>
614 </row></tbody></tgroup></informaltable>
615<para>SYNOPSIS
616</para>
617<informaltable><tgroup cols="1"><tbody><row><entry
618 align="char">
619<para>int ioctl(fd, int request = VIDEO_PLAY);</para>
620</entry>
621 </row></tbody></tgroup></informaltable>
622<para>PARAMETERS
623</para>
624<informaltable><tgroup cols="2"><tbody><row><entry
625 align="char">
626<para>int fd</para>
627</entry><entry
628 align="char">
629<para>File descriptor returned by a previous call to open().</para>
630</entry>
631 </row><row><entry
632 align="char">
633<para>int request</para>
634</entry><entry
635 align="char">
636<para>Equals VIDEO_PLAY for this command.</para>
637</entry>
638 </row></tbody></tgroup></informaltable>
639&return-value-dvb;
640
641</section><section id="VIDEO_FREEZE"
642role="subsection"><title>VIDEO_FREEZE</title>
643<para>DESCRIPTION
644</para>
645<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
646&VIDIOC-DECODER-CMD; instead.</para>
647<informaltable><tgroup cols="1"><tbody><row><entry
648 align="char">
649<para>This ioctl call suspends the live video stream being played. Decoding
650 and playing are frozen. It is then possible to restart the decoding
651 and playing process of the video stream using the VIDEO_CONTINUE
652 command. If VIDEO_SOURCE_MEMORY is selected in the ioctl call
653 VIDEO_SELECT_SOURCE, the DVB subsystem will not decode any more
654 data until the ioctl call VIDEO_CONTINUE or VIDEO_PLAY is performed.</para>
655</entry>
656 </row></tbody></tgroup></informaltable>
657<para>SYNOPSIS
658</para>
659<informaltable><tgroup cols="1"><tbody><row><entry
660 align="char">
661<para>int ioctl(fd, int request = VIDEO_FREEZE);</para>
662</entry>
663 </row></tbody></tgroup></informaltable>
664<para>PARAMETERS
665</para>
666<informaltable><tgroup cols="2"><tbody><row><entry
667 align="char">
668<para>int fd</para>
669</entry><entry
670 align="char">
671<para>File descriptor returned by a previous call to open().</para>
672</entry>
673 </row><row><entry
674 align="char">
675<para>int request</para>
676</entry><entry
677 align="char">
678<para>Equals VIDEO_FREEZE for this command.</para>
679</entry>
680 </row></tbody></tgroup></informaltable>
681&return-value-dvb;
682
683</section><section id="VIDEO_CONTINUE"
684role="subsection"><title>VIDEO_CONTINUE</title>
685<para>DESCRIPTION
686</para>
687<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
688&VIDIOC-DECODER-CMD; instead.</para>
689<informaltable><tgroup cols="1"><tbody><row><entry
690 align="char">
691<para>This ioctl call restarts decoding and playing processes of the video stream
692 which was played before a call to VIDEO_FREEZE was made.</para>
693</entry>
694 </row></tbody></tgroup></informaltable>
695<para>SYNOPSIS
696</para>
697<informaltable><tgroup cols="1"><tbody><row><entry
698 align="char">
699<para>int ioctl(fd, int request = VIDEO_CONTINUE);</para>
700</entry>
701 </row></tbody></tgroup></informaltable>
702<para>PARAMETERS
703</para>
704<informaltable><tgroup cols="2"><tbody><row><entry
705 align="char">
706<para>int fd</para>
707</entry><entry
708 align="char">
709<para>File descriptor returned by a previous call to open().</para>
710</entry>
711 </row><row><entry
712 align="char">
713<para>int request</para>
714</entry><entry
715 align="char">
716<para>Equals VIDEO_CONTINUE for this command.</para>
717</entry>
718 </row></tbody></tgroup></informaltable>
719&return-value-dvb;
720
721</section><section id="VIDEO_SELECT_SOURCE"
722role="subsection"><title>VIDEO_SELECT_SOURCE</title>
723<para>DESCRIPTION
724</para>
725<para>This ioctl is for DVB devices only. This ioctl was also supported by the
726V4L2 ivtv driver, but that has been replaced by the ivtv-specific
727<constant>IVTV_IOC_PASSTHROUGH_MODE</constant> ioctl.</para>
728<informaltable><tgroup cols="1"><tbody><row><entry
729 align="char">
730<para>This ioctl call informs the video device which source shall be used for the input
731 data. The possible sources are demux or memory. If memory is selected, the
732 data is fed to the video device through the write command.</para>
733</entry>
734 </row></tbody></tgroup></informaltable>
735<para>SYNOPSIS
736</para>
737<informaltable><tgroup cols="1"><tbody><row><entry
738 align="char">
739<para>int ioctl(fd, int request = VIDEO_SELECT_SOURCE,
740 video_stream_source_t source);</para>
741</entry>
742 </row></tbody></tgroup></informaltable>
743<para>PARAMETERS
744</para>
745<informaltable><tgroup cols="2"><tbody><row><entry
746 align="char">
747<para>int fd</para>
748</entry><entry
749 align="char">
750<para>File descriptor returned by a previous call to open().</para>
751</entry>
752 </row><row><entry
753 align="char">
754<para>int request</para>
755</entry><entry
756 align="char">
757<para>Equals VIDEO_SELECT_SOURCE for this command.</para>
758</entry>
759 </row><row><entry
760 align="char">
761<para>video_stream_source_t
762 source</para>
763</entry><entry
764 align="char">
765<para>Indicates which source shall be used for the Video stream.</para>
766</entry>
767 </row></tbody></tgroup></informaltable>
768&return-value-dvb;
769
770</section><section id="VIDEO_SET_BLANK"
771role="subsection"><title>VIDEO_SET_BLANK</title>
772<para>DESCRIPTION
773</para>
774<informaltable><tgroup cols="1"><tbody><row><entry
775 align="char">
776<para>This ioctl call asks the Video Device to blank out the picture.</para>
777</entry>
778 </row></tbody></tgroup></informaltable>
779<para>SYNOPSIS
780</para>
781<informaltable><tgroup cols="1"><tbody><row><entry
782 align="char">
783<para>int ioctl(fd, int request = VIDEO_SET_BLANK, boolean
784 mode);</para>
785</entry>
786 </row></tbody></tgroup></informaltable>
787<para>PARAMETERS
788</para>
789<informaltable><tgroup cols="2"><tbody><row><entry
790 align="char">
791<para>int fd</para>
792</entry><entry
793 align="char">
794<para>File descriptor returned by a previous call to open().</para>
795</entry>
796 </row><row><entry
797 align="char">
798<para>int request</para>
799</entry><entry
800 align="char">
801<para>Equals VIDEO_SET_BLANK for this command.</para>
802</entry>
803 </row><row><entry
804 align="char">
805<para>boolean mode</para>
806</entry><entry
807 align="char">
808<para>TRUE: Blank screen when stop.</para>
809</entry>
810 </row><row><entry
811 align="char">
812</entry><entry
813 align="char">
814<para>FALSE: Show last decoded frame.</para>
815</entry>
816 </row></tbody></tgroup></informaltable>
817&return-value-dvb;
818
819</section><section id="VIDEO_GET_STATUS"
820role="subsection"><title>VIDEO_GET_STATUS</title>
821<para>DESCRIPTION
822</para>
823<informaltable><tgroup cols="1"><tbody><row><entry
824 align="char">
825<para>This ioctl call asks the Video Device to return the current status of the device.</para>
826</entry>
827 </row></tbody></tgroup></informaltable>
828<para>SYNOPSIS
829</para>
830<informaltable><tgroup cols="1"><tbody><row><entry
831 align="char">
832<para> int ioctl(fd, int request = VIDEO_GET_STATUS, struct
833 video_status &#x22C6;status);</para>
834</entry>
835 </row></tbody></tgroup></informaltable>
836<para>PARAMETERS
837</para>
838<informaltable><tgroup cols="2"><tbody><row><entry
839 align="char">
840<para>int fd</para>
841</entry><entry
842 align="char">
843<para>File descriptor returned by a previous call to open().</para>
844</entry>
845 </row><row><entry
846 align="char">
847<para>int request</para>
848</entry><entry
849 align="char">
850<para>Equals VIDEO_GET_STATUS for this command.</para>
851</entry>
852 </row><row><entry
853 align="char">
854<para>struct video_status
855 *status</para>
856</entry><entry
857 align="char">
858<para>Returns the current status of the Video Device.</para>
859</entry>
860 </row></tbody></tgroup></informaltable>
861&return-value-dvb;
862
863</section><section id="VIDEO_GET_FRAME_COUNT"
864role="subsection"><title>VIDEO_GET_FRAME_COUNT</title>
865<para>DESCRIPTION
866</para>
867<para>This ioctl is obsolete. Do not use in new drivers. For V4L2 decoders this
868ioctl has been replaced by the <constant>V4L2_CID_MPEG_VIDEO_DEC_FRAME</constant> control.</para>
869<informaltable><tgroup cols="1"><tbody><row><entry
870 align="char">
871<para>This ioctl call asks the Video Device to return the number of displayed frames
872since the decoder was started.</para>
873</entry>
874 </row></tbody></tgroup></informaltable>
875<para>SYNOPSIS
876</para>
877<informaltable><tgroup cols="1"><tbody><row><entry
878 align="char">
879<para>int ioctl(int fd, int request =
880 VIDEO_GET_FRAME_COUNT, __u64 *pts);</para>
881</entry>
882 </row></tbody></tgroup></informaltable>
883<para>PARAMETERS
884</para>
885<informaltable><tgroup cols="2"><tbody><row><entry
886 align="char">
887<para>int fd</para>
888</entry><entry
889 align="char">
890<para>File descriptor returned by a previous call to open().</para>
891</entry>
892 </row><row><entry
893 align="char">
894<para>int request</para>
895</entry><entry
896 align="char">
897<para>Equals VIDEO_GET_FRAME_COUNT for this
898 command.</para>
899</entry>
900 </row><row><entry
901 align="char">
902<para>__u64 *pts
903</para>
904</entry><entry
905 align="char">
906<para>Returns the number of frames displayed since the decoder was started.
907</para>
908</entry>
909 </row></tbody></tgroup></informaltable>
910&return-value-dvb;
911
912</section><section id="VIDEO_GET_PTS"
913role="subsection"><title>VIDEO_GET_PTS</title>
914<para>DESCRIPTION
915</para>
916<para>This ioctl is obsolete. Do not use in new drivers. For V4L2 decoders this
917ioctl has been replaced by the <constant>V4L2_CID_MPEG_VIDEO_DEC_PTS</constant> control.</para>
918<informaltable><tgroup cols="1"><tbody><row><entry
919 align="char">
920<para>This ioctl call asks the Video Device to return the current PTS timestamp.</para>
921</entry>
922 </row></tbody></tgroup></informaltable>
923<para>SYNOPSIS
924</para>
925<informaltable><tgroup cols="1"><tbody><row><entry
926 align="char">
927<para>int ioctl(int fd, int request =
928 VIDEO_GET_PTS, __u64 *pts);</para>
929</entry>
930 </row></tbody></tgroup></informaltable>
931<para>PARAMETERS
932</para>
933<informaltable><tgroup cols="2"><tbody><row><entry
934 align="char">
935<para>int fd</para>
936</entry><entry
937 align="char">
938<para>File descriptor returned by a previous call to open().</para>
939</entry>
940 </row><row><entry
941 align="char">
942<para>int request</para>
943</entry><entry
944 align="char">
945<para>Equals VIDEO_GET_PTS for this
946 command.</para>
947</entry>
948 </row><row><entry
949 align="char">
950<para>__u64 *pts
951</para>
952</entry><entry
953 align="char">
954<para>Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 / ISO/IEC 13818-1.
955</para>
956<para>
957The PTS should belong to the currently played
958frame if possible, but may also be a value close to it
959like the PTS of the last decoded frame or the last PTS
960extracted by the PES parser.</para>
961</entry>
962 </row></tbody></tgroup></informaltable>
963&return-value-dvb;
964
965</section><section id="VIDEO_GET_FRAME_RATE"
966role="subsection"><title>VIDEO_GET_FRAME_RATE</title>
967<para>DESCRIPTION
968</para>
969<informaltable><tgroup cols="1"><tbody><row><entry
970 align="char">
971<para>This ioctl call asks the Video Device to return the current framerate.</para>
972</entry>
973 </row></tbody></tgroup></informaltable>
974<para>SYNOPSIS
975</para>
976<informaltable><tgroup cols="1"><tbody><row><entry
977 align="char">
978<para>int ioctl(int fd, int request =
979 VIDEO_GET_FRAME_RATE, unsigned int *rate);</para>
980</entry>
981 </row></tbody></tgroup></informaltable>
982<para>PARAMETERS
983</para>
984<informaltable><tgroup cols="2"><tbody><row><entry
985 align="char">
986<para>int fd</para>
987</entry><entry
988 align="char">
989<para>File descriptor returned by a previous call to open().</para>
990</entry>
991 </row><row><entry
992 align="char">
993<para>int request</para>
994</entry><entry
995 align="char">
996<para>Equals VIDEO_GET_FRAME_RATE for this
997 command.</para>
998</entry>
999 </row><row><entry
1000 align="char">
1001<para>unsigned int *rate
1002</para>
1003</entry><entry
1004 align="char">
1005<para>Returns the framerate in number of frames per 1000 seconds.
1006</para>
1007</entry>
1008 </row></tbody></tgroup></informaltable>
1009&return-value-dvb;
1010
1011</section><section id="VIDEO_GET_EVENT"
1012role="subsection"><title>VIDEO_GET_EVENT</title>
1013<para>DESCRIPTION
1014</para>
1015<para>This ioctl is for DVB devices only. To get events from a V4L2 decoder use the V4L2
1016&VIDIOC-DQEVENT; ioctl instead.</para>
1017<informaltable><tgroup cols="1"><tbody><row><entry
1018 align="char">
1019<para>This ioctl call returns an event of type video_event if available. If an event is
1020 not available, the behavior depends on whether the device is in blocking or
1021 non-blocking mode. In the latter case, the call fails immediately with errno
1022 set to EWOULDBLOCK. In the former case, the call blocks until an event
1023 becomes available. The standard Linux poll() and/or select() system calls can
1024 be used with the device file descriptor to watch for new events. For select(),
1025 the file descriptor should be included in the exceptfds argument, and for
1026 poll(), POLLPRI should be specified as the wake-up condition. Read-only
1027 permissions are sufficient for this ioctl call.</para>
1028</entry>
1029 </row></tbody></tgroup></informaltable>
1030<para>SYNOPSIS
1031</para>
1032<informaltable><tgroup cols="1"><tbody><row><entry
1033 align="char">
1034<para> int ioctl(fd, int request = VIDEO_GET_EVENT, struct
1035 video_event &#x22C6;ev);</para>
1036</entry>
1037 </row></tbody></tgroup></informaltable>
1038<para>PARAMETERS
1039</para>
1040<informaltable><tgroup cols="2"><tbody><row><entry
1041 align="char">
1042<para>int fd</para>
1043</entry><entry
1044 align="char">
1045<para>File descriptor returned by a previous call to open().</para>
1046</entry>
1047 </row><row><entry
1048 align="char">
1049<para>int request</para>
1050</entry><entry
1051 align="char">
1052<para>Equals VIDEO_GET_EVENT for this command.</para>
1053</entry>
1054 </row><row><entry
1055 align="char">
1056<para>struct video_event
1057 *ev</para>
1058</entry><entry
1059 align="char">
1060<para>Points to the location where the event, if any, is to be
1061 stored.</para>
1062</entry>
1063 </row></tbody></tgroup></informaltable>
1064&return-value-dvb;
1065<informaltable><tgroup cols="2"><tbody><row><entry
1066 align="char">
1067<para>EWOULDBLOCK</para>
1068</entry><entry
1069 align="char">
1070<para>There is no event pending, and the device is in
1071 non-blocking mode.</para>
1072</entry>
1073 </row><row><entry
1074 align="char">
1075<para>EOVERFLOW</para>
1076</entry><entry
1077 align="char">
1078<para>Overflow in event queue - one or more events were lost.</para>
1079</entry>
1080 </row></tbody></tgroup></informaltable>
1081
1082</section><section id="VIDEO_COMMAND"
1083role="subsection"><title>VIDEO_COMMAND</title>
1084<para>DESCRIPTION
1085</para>
1086<para>This ioctl is obsolete. Do not use in new drivers. For V4L2 decoders this
1087ioctl has been replaced by the &VIDIOC-DECODER-CMD; ioctl.</para>
1088<informaltable><tgroup cols="1"><tbody><row><entry
1089 align="char">
1090<para>This ioctl commands the decoder. The <constant>video_command</constant> struct
1091is a subset of the <constant>v4l2_decoder_cmd</constant> struct, so refer to the
1092&VIDIOC-DECODER-CMD; documentation for more information.</para>
1093</entry>
1094 </row></tbody></tgroup></informaltable>
1095<para>SYNOPSIS
1096</para>
1097<informaltable><tgroup cols="1"><tbody><row><entry
1098 align="char">
1099<para>int ioctl(int fd, int request =
1100 VIDEO_COMMAND, struct video_command *cmd);</para>
1101</entry>
1102 </row></tbody></tgroup></informaltable>
1103<para>PARAMETERS
1104</para>
1105<informaltable><tgroup cols="2"><tbody><row><entry
1106 align="char">
1107<para>int fd</para>
1108</entry><entry
1109 align="char">
1110<para>File descriptor returned by a previous call to open().</para>
1111</entry>
1112 </row><row><entry
1113 align="char">
1114<para>int request</para>
1115</entry><entry
1116 align="char">
1117<para>Equals VIDEO_COMMAND for this
1118 command.</para>
1119</entry>
1120 </row><row><entry
1121 align="char">
1122<para>struct video_command *cmd
1123</para>
1124</entry><entry
1125 align="char">
1126<para>Commands the decoder.
1127</para>
1128</entry>
1129 </row></tbody></tgroup></informaltable>
1130&return-value-dvb;
1131
1132</section><section id="VIDEO_TRY_COMMAND"
1133role="subsection"><title>VIDEO_TRY_COMMAND</title>
1134<para>DESCRIPTION
1135</para>
1136<para>This ioctl is obsolete. Do not use in new drivers. For V4L2 decoders this
1137ioctl has been replaced by the &VIDIOC-TRY-DECODER-CMD; ioctl.</para>
1138<informaltable><tgroup cols="1"><tbody><row><entry
1139 align="char">
1140<para>This ioctl tries a decoder command. The <constant>video_command</constant> struct
1141is a subset of the <constant>v4l2_decoder_cmd</constant> struct, so refer to the
1142&VIDIOC-TRY-DECODER-CMD; documentation for more information.</para>
1143</entry>
1144 </row></tbody></tgroup></informaltable>
1145<para>SYNOPSIS
1146</para>
1147<informaltable><tgroup cols="1"><tbody><row><entry
1148 align="char">
1149<para>int ioctl(int fd, int request =
1150 VIDEO_TRY_COMMAND, struct video_command *cmd);</para>
1151</entry>
1152 </row></tbody></tgroup></informaltable>
1153<para>PARAMETERS
1154</para>
1155<informaltable><tgroup cols="2"><tbody><row><entry
1156 align="char">
1157<para>int fd</para>
1158</entry><entry
1159 align="char">
1160<para>File descriptor returned by a previous call to open().</para>
1161</entry>
1162 </row><row><entry
1163 align="char">
1164<para>int request</para>
1165</entry><entry
1166 align="char">
1167<para>Equals VIDEO_TRY_COMMAND for this
1168 command.</para>
1169</entry>
1170 </row><row><entry
1171 align="char">
1172<para>struct video_command *cmd
1173</para>
1174</entry><entry
1175 align="char">
1176<para>Try a decoder command.
1177</para>
1178</entry>
1179 </row></tbody></tgroup></informaltable>
1180&return-value-dvb;
1181
1182</section><section id="VIDEO_GET_SIZE"
1183role="subsection"><title>VIDEO_GET_SIZE</title>
1184<para>DESCRIPTION
1185</para>
1186<informaltable><tgroup cols="1"><tbody><row><entry
1187 align="char">
1188<para>This ioctl returns the size and aspect ratio.</para>
1189</entry>
1190 </row></tbody></tgroup></informaltable>
1191<para>SYNOPSIS
1192</para>
1193<informaltable><tgroup cols="1"><tbody><row><entry
1194 align="char">
1195<para>int ioctl(int fd, int request =
1196 VIDEO_GET_SIZE, video_size_t *size);</para>
1197</entry>
1198 </row></tbody></tgroup></informaltable>
1199<para>PARAMETERS
1200</para>
1201<informaltable><tgroup cols="2"><tbody><row><entry
1202 align="char">
1203<para>int fd</para>
1204</entry><entry
1205 align="char">
1206<para>File descriptor returned by a previous call to open().</para>
1207</entry>
1208 </row><row><entry
1209 align="char">
1210<para>int request</para>
1211</entry><entry
1212 align="char">
1213<para>Equals VIDEO_GET_SIZE for this
1214 command.</para>
1215</entry>
1216 </row><row><entry
1217 align="char">
1218<para>video_size_t *size
1219</para>
1220</entry><entry
1221 align="char">
1222<para>Returns the size and aspect ratio.
1223</para>
1224</entry>
1225 </row></tbody></tgroup></informaltable>
1226&return-value-dvb;
1227
1228</section><section id="VIDEO_SET_DISPLAY_FORMAT"
1229role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title>
1230<para>DESCRIPTION
1231</para>
1232<informaltable><tgroup cols="1"><tbody><row><entry
1233 align="char">
1234<para>This ioctl call asks the Video Device to select the video format to be applied
1235 by the MPEG chip on the video.</para>
1236</entry>
1237 </row></tbody></tgroup></informaltable>
1238<para>SYNOPSIS
1239</para>
1240<informaltable><tgroup cols="1"><tbody><row><entry
1241 align="char">
1242<para> int ioctl(fd, int request =
1243 VIDEO_SET_DISPLAY_FORMAT, video_display_format_t
1244 format);</para>
1245</entry>
1246 </row></tbody></tgroup></informaltable>
1247<para>PARAMETERS
1248</para>
1249<informaltable><tgroup cols="2"><tbody><row><entry
1250 align="char">
1251<para>int fd</para>
1252</entry><entry
1253 align="char">
1254<para>File descriptor returned by a previous call to open().</para>
1255</entry>
1256 </row><row><entry
1257 align="char">
1258<para>int request</para>
1259</entry><entry
1260 align="char">
1261<para>Equals VIDEO_SET_DISPLAY_FORMAT for this
1262 command.</para>
1263</entry>
1264 </row><row><entry
1265 align="char">
1266<para>video_display_format_t
1267 format</para>
1268</entry><entry
1269 align="char">
1270<para>Selects the video format to be used.</para>
1271</entry>
1272 </row></tbody></tgroup></informaltable>
1273&return-value-dvb;
1274
1275</section><section id="VIDEO_STILLPICTURE"
1276role="subsection"><title>VIDEO_STILLPICTURE</title>
1277<para>DESCRIPTION
1278</para>
1279<informaltable><tgroup cols="1"><tbody><row><entry
1280 align="char">
1281<para>This ioctl call asks the Video Device to display a still picture (I-frame). The
1282 input data shall contain an I-frame. If the pointer is NULL, then the current
1283 displayed still picture is blanked.</para>
1284</entry>
1285 </row></tbody></tgroup></informaltable>
1286<para>SYNOPSIS
1287</para>
1288<informaltable><tgroup cols="1"><tbody><row><entry
1289 align="char">
1290<para>int ioctl(fd, int request = VIDEO_STILLPICTURE,
1291 struct video_still_picture &#x22C6;sp);</para>
1292</entry>
1293 </row></tbody></tgroup></informaltable>
1294<para>PARAMETERS
1295</para>
1296<informaltable><tgroup cols="2"><tbody><row><entry
1297 align="char">
1298<para>int fd</para>
1299</entry><entry
1300 align="char">
1301<para>File descriptor returned by a previous call to open().</para>
1302</entry>
1303 </row><row><entry
1304 align="char">
1305<para>int request</para>
1306</entry><entry
1307 align="char">
1308<para>Equals VIDEO_STILLPICTURE for this command.</para>
1309</entry>
1310 </row><row><entry
1311 align="char">
1312<para>struct
1313 video_still_picture
1314 *sp</para>
1315</entry><entry
1316 align="char">
1317<para>Pointer to a location where an I-frame and size is stored.</para>
1318</entry>
1319 </row></tbody></tgroup></informaltable>
1320&return-value-dvb;
1321
1322</section><section id="VIDEO_FAST_FORWARD"
1323role="subsection"><title>VIDEO_FAST_FORWARD</title>
1324<para>DESCRIPTION
1325</para>
1326<informaltable><tgroup cols="1"><tbody><row><entry
1327 align="char">
1328<para>This ioctl call asks the Video Device to skip decoding of N number of I-frames.
1329 This call can only be used if VIDEO_SOURCE_MEMORY is selected.</para>
1330</entry>
1331 </row></tbody></tgroup></informaltable>
1332<para>SYNOPSIS
1333</para>
1334<informaltable><tgroup cols="1"><tbody><row><entry
1335 align="char">
1336<para>int ioctl(fd, int request = VIDEO_FAST_FORWARD, int
1337 nFrames);</para>
1338</entry>
1339 </row></tbody></tgroup></informaltable>
1340<para>PARAMETERS
1341</para>
1342<informaltable><tgroup cols="2"><tbody><row><entry
1343 align="char">
1344<para>int fd</para>
1345</entry><entry
1346 align="char">
1347<para>File descriptor returned by a previous call to open().</para>
1348</entry>
1349 </row><row><entry
1350 align="char">
1351<para>int request</para>
1352</entry><entry
1353 align="char">
1354<para>Equals VIDEO_FAST_FORWARD for this command.</para>
1355</entry>
1356 </row><row><entry
1357 align="char">
1358<para>int nFrames</para>
1359</entry><entry
1360 align="char">
1361<para>The number of frames to skip.</para>
1362</entry>
1363 </row></tbody></tgroup></informaltable>
1364&return-value-dvb;
1365<informaltable><tgroup cols="2"><tbody><row><entry
1366 align="char">
1367<para>EPERM</para>
1368</entry><entry
1369 align="char">
1370<para>Mode VIDEO_SOURCE_MEMORY not selected.</para>
1371</entry>
1372 </row></tbody></tgroup></informaltable>
1373
1374</section><section id="VIDEO_SLOWMOTION"
1375role="subsection"><title>VIDEO_SLOWMOTION</title>
1376<para>DESCRIPTION
1377</para>
1378<informaltable><tgroup cols="1"><tbody><row><entry
1379 align="char">
1380<para>This ioctl call asks the video device to repeat decoding frames N number of
1381 times. This call can only be used if VIDEO_SOURCE_MEMORY is selected.</para>
1382</entry>
1383 </row></tbody></tgroup></informaltable>
1384<para>SYNOPSIS
1385</para>
1386<informaltable><tgroup cols="1"><tbody><row><entry
1387 align="char">
1388<para>int ioctl(fd, int request = VIDEO_SLOWMOTION, int
1389 nFrames);</para>
1390</entry>
1391 </row></tbody></tgroup></informaltable>
1392<para>PARAMETERS
1393</para>
1394<informaltable><tgroup cols="2"><tbody><row><entry
1395 align="char">
1396<para>int fd</para>
1397</entry><entry
1398 align="char">
1399<para>File descriptor returned by a previous call to open().</para>
1400</entry>
1401 </row><row><entry
1402 align="char">
1403<para>int request</para>
1404</entry><entry
1405 align="char">
1406<para>Equals VIDEO_SLOWMOTION for this command.</para>
1407</entry>
1408 </row><row><entry
1409 align="char">
1410<para>int nFrames</para>
1411</entry><entry
1412 align="char">
1413<para>The number of times to repeat each frame.</para>
1414</entry>
1415 </row></tbody></tgroup></informaltable>
1416&return-value-dvb;
1417<informaltable><tgroup cols="2"><tbody><row><entry
1418 align="char">
1419<para>EPERM</para>
1420</entry><entry
1421 align="char">
1422<para>Mode VIDEO_SOURCE_MEMORY not selected.</para>
1423</entry>
1424 </row></tbody></tgroup></informaltable>
1425
1426</section><section id="VIDEO_GET_CAPABILITIES"
1427role="subsection"><title>VIDEO_GET_CAPABILITIES</title>
1428<para>DESCRIPTION
1429</para>
1430<informaltable><tgroup cols="1"><tbody><row><entry
1431 align="char">
1432<para>This ioctl call asks the video device about its decoding capabilities. On success
1433 it returns and integer which has bits set according to the defines in section ??.</para>
1434</entry>
1435 </row></tbody></tgroup></informaltable>
1436<para>SYNOPSIS
1437</para>
1438<informaltable><tgroup cols="1"><tbody><row><entry
1439 align="char">
1440<para>int ioctl(fd, int request = VIDEO_GET_CAPABILITIES,
1441 unsigned int &#x22C6;cap);</para>
1442</entry>
1443 </row></tbody></tgroup></informaltable>
1444<para>PARAMETERS
1445</para>
1446<informaltable><tgroup cols="2"><tbody><row><entry
1447 align="char">
1448<para>int fd</para>
1449</entry><entry
1450 align="char">
1451<para>File descriptor returned by a previous call to open().</para>
1452</entry>
1453 </row><row><entry
1454 align="char">
1455<para>int request</para>
1456</entry><entry
1457 align="char">
1458<para>Equals VIDEO_GET_CAPABILITIES for this
1459 command.</para>
1460</entry>
1461 </row><row><entry
1462 align="char">
1463<para>unsigned int *cap</para>
1464</entry><entry
1465 align="char">
1466<para>Pointer to a location where to store the capability
1467 information.</para>
1468</entry>
1469 </row></tbody></tgroup></informaltable>
1470&return-value-dvb;
1471
1472</section><section id="VIDEO_SET_ID"
1473role="subsection"><title>VIDEO_SET_ID</title>
1474<para>DESCRIPTION
1475</para>
1476<informaltable><tgroup cols="1"><tbody><row><entry
1477 align="char">
1478<para>This ioctl selects which sub-stream is to be decoded if a program or system
1479 stream is sent to the video device.</para>
1480</entry>
1481 </row></tbody></tgroup></informaltable>
1482<para>SYNOPSIS
1483</para>
1484<informaltable><tgroup cols="1"><tbody><row><entry
1485 align="char">
1486<para>int ioctl(int fd, int request = VIDEO_SET_ID, int
1487 id);</para>
1488</entry>
1489 </row></tbody></tgroup></informaltable>
1490<para>PARAMETERS
1491</para>
1492<informaltable><tgroup cols="2"><tbody><row><entry
1493 align="char">
1494<para>int fd</para>
1495</entry><entry
1496 align="char">
1497<para>File descriptor returned by a previous call to open().</para>
1498</entry>
1499 </row><row><entry
1500 align="char">
1501<para>int request</para>
1502</entry><entry
1503 align="char">
1504<para>Equals VIDEO_SET_ID for this command.</para>
1505</entry>
1506 </row><row><entry
1507 align="char">
1508<para>int id</para>
1509</entry><entry
1510 align="char">
1511<para>video sub-stream id</para>
1512</entry>
1513 </row></tbody></tgroup></informaltable>
1514&return-value-dvb;
1515<informaltable><tgroup cols="2"><tbody><row><entry
1516 align="char">
1517<para>EINVAL</para>
1518</entry><entry
1519 align="char">
1520<para>Invalid sub-stream id.</para>
1521</entry>
1522 </row></tbody></tgroup></informaltable>
1523
1524</section><section id="VIDEO_CLEAR_BUFFER"
1525role="subsection"><title>VIDEO_CLEAR_BUFFER</title>
1526<para>DESCRIPTION
1527</para>
1528<informaltable><tgroup cols="1"><tbody><row><entry
1529 align="char">
1530<para>This ioctl call clears all video buffers in the driver and in the decoder hardware.</para>
1531</entry>
1532 </row></tbody></tgroup></informaltable>
1533<para>SYNOPSIS
1534</para>
1535<informaltable><tgroup cols="1"><tbody><row><entry
1536 align="char">
1537<para>int ioctl(fd, int request = VIDEO_CLEAR_BUFFER);</para>
1538</entry>
1539 </row></tbody></tgroup></informaltable>
1540<para>PARAMETERS
1541</para>
1542<informaltable><tgroup cols="2"><tbody><row><entry
1543 align="char">
1544<para>int fd</para>
1545</entry><entry
1546 align="char">
1547<para>File descriptor returned by a previous call to open().</para>
1548</entry>
1549 </row><row><entry
1550 align="char">
1551<para>int request</para>
1552</entry><entry
1553 align="char">
1554<para>Equals VIDEO_CLEAR_BUFFER for this command.</para>
1555</entry>
1556 </row></tbody></tgroup></informaltable>
1557&return-value-dvb;
1558
1559</section><section id="VIDEO_SET_STREAMTYPE"
1560role="subsection"><title>VIDEO_SET_STREAMTYPE</title>
1561<para>DESCRIPTION
1562</para>
1563<informaltable><tgroup cols="1"><tbody><row><entry
1564 align="char">
1565<para>This ioctl tells the driver which kind of stream to expect being written to it. If
1566 this call is not used the default of video PES is used. Some drivers might not
1567 support this call and always expect PES.</para>
1568</entry>
1569 </row></tbody></tgroup></informaltable>
1570<para>SYNOPSIS
1571</para>
1572<informaltable><tgroup cols="1"><tbody><row><entry
1573 align="char">
1574<para>int ioctl(fd, int request = VIDEO_SET_STREAMTYPE,
1575 int type);</para>
1576</entry>
1577 </row></tbody></tgroup></informaltable>
1578<para>PARAMETERS
1579</para>
1580<informaltable><tgroup cols="2"><tbody><row><entry
1581 align="char">
1582<para>int fd</para>
1583</entry><entry
1584 align="char">
1585<para>File descriptor returned by a previous call to open().</para>
1586</entry>
1587 </row><row><entry
1588 align="char">
1589<para>int request</para>
1590</entry><entry
1591 align="char">
1592<para>Equals VIDEO_SET_STREAMTYPE for this command.</para>
1593</entry>
1594 </row><row><entry
1595 align="char">
1596<para>int type</para>
1597</entry><entry
1598 align="char">
1599<para>stream type</para>
1600</entry>
1601 </row></tbody></tgroup></informaltable>
1602&return-value-dvb;
1603
1604</section><section id="VIDEO_SET_FORMAT"
1605role="subsection"><title>VIDEO_SET_FORMAT</title>
1606<para>DESCRIPTION
1607</para>
1608<informaltable><tgroup cols="1"><tbody><row><entry
1609 align="char">
1610<para>This ioctl sets the screen format (aspect ratio) of the connected output device
1611 (TV) so that the output of the decoder can be adjusted accordingly.</para>
1612</entry>
1613 </row></tbody></tgroup></informaltable>
1614<para>SYNOPSIS
1615</para>
1616<informaltable><tgroup cols="1"><tbody><row><entry
1617 align="char">
1618<para> int ioctl(fd, int request = VIDEO_SET_FORMAT,
1619 video_format_t format);</para>
1620</entry>
1621 </row></tbody></tgroup></informaltable>
1622<para>PARAMETERS
1623</para>
1624<informaltable><tgroup cols="2"><tbody><row><entry
1625 align="char">
1626<para>int fd</para>
1627</entry><entry
1628 align="char">
1629<para>File descriptor returned by a previous call to open().</para>
1630</entry>
1631 </row><row><entry
1632 align="char">
1633<para>int request</para>
1634</entry><entry
1635 align="char">
1636<para>Equals VIDEO_SET_FORMAT for this command.</para>
1637</entry>
1638 </row><row><entry
1639 align="char">
1640<para>video_format_t
1641 format</para>
1642</entry><entry
1643 align="char">
1644<para>video format of TV as defined in section ??.</para>
1645</entry>
1646 </row></tbody></tgroup></informaltable>
1647&return-value-dvb;
1648<informaltable><tgroup cols="2"><tbody><row><entry
1649 align="char">
1650<para>EINVAL</para>
1651</entry><entry
1652 align="char">
1653<para>format is not a valid video format.</para>
1654</entry>
1655 </row></tbody></tgroup></informaltable>
1656
1657</section><section id="VIDEO_SET_SYSTEM"
1658role="subsection"><title>VIDEO_SET_SYSTEM</title>
1659<para>DESCRIPTION
1660</para>
1661<informaltable><tgroup cols="1"><tbody><row><entry
1662 align="char">
1663<para>This ioctl sets the television output format. The format (see section ??) may
1664 vary from the color format of the displayed MPEG stream. If the hardware is
1665 not able to display the requested format the call will return an error.</para>
1666</entry>
1667 </row></tbody></tgroup></informaltable>
1668<para>SYNOPSIS
1669</para>
1670<informaltable><tgroup cols="1"><tbody><row><entry
1671 align="char">
1672<para> int ioctl(fd, int request = VIDEO_SET_SYSTEM ,
1673 video_system_t system);</para>
1674</entry>
1675 </row></tbody></tgroup></informaltable>
1676<para>PARAMETERS
1677</para>
1678<informaltable><tgroup cols="2"><tbody><row><entry
1679 align="char">
1680<para>int fd</para>
1681</entry><entry
1682 align="char">
1683<para>File descriptor returned by a previous call to open().</para>
1684</entry>
1685 </row><row><entry
1686 align="char">
1687<para>int request</para>
1688</entry><entry
1689 align="char">
1690<para>Equals VIDEO_SET_FORMAT for this command.</para>
1691</entry>
1692 </row><row><entry
1693 align="char">
1694<para>video_system_t
1695 system</para>
1696</entry><entry
1697 align="char">
1698<para>video system of TV output.</para>
1699</entry>
1700 </row></tbody></tgroup></informaltable>
1701&return-value-dvb;
1702<informaltable><tgroup cols="2"><tbody><row><entry
1703 align="char">
1704<para>EINVAL</para>
1705</entry><entry
1706 align="char">
1707<para>system is not a valid or supported video system.</para>
1708</entry>
1709 </row></tbody></tgroup></informaltable>
1710
1711</section><section id="VIDEO_SET_HIGHLIGHT"
1712role="subsection"><title>VIDEO_SET_HIGHLIGHT</title>
1713<para>DESCRIPTION
1714</para>
1715<informaltable><tgroup cols="1"><tbody><row><entry
1716 align="char">
1717<para>This ioctl sets the SPU highlight information for the menu access of a DVD.</para>
1718</entry>
1719 </row></tbody></tgroup></informaltable>
1720<para>SYNOPSIS
1721</para>
1722<informaltable><tgroup cols="1"><tbody><row><entry
1723 align="char">
1724<para> int ioctl(fd, int request = VIDEO_SET_HIGHLIGHT
1725 ,video_highlight_t &#x22C6;vhilite)</para>
1726</entry>
1727 </row></tbody></tgroup></informaltable>
1728<para>PARAMETERS
1729</para>
1730<informaltable><tgroup cols="2"><tbody><row><entry
1731 align="char">
1732<para>int fd</para>
1733</entry><entry
1734 align="char">
1735<para>File descriptor returned by a previous call to open().</para>
1736</entry>
1737 </row><row><entry
1738 align="char">
1739<para>int request</para>
1740</entry><entry
1741 align="char">
1742<para>Equals VIDEO_SET_HIGHLIGHT for this command.</para>
1743</entry>
1744 </row><row><entry
1745 align="char">
1746<para>video_highlight_t
1747 *vhilite</para>
1748</entry><entry
1749 align="char">
1750<para>SPU Highlight information according to section ??.</para>
1751</entry>
1752 </row></tbody></tgroup></informaltable>
1753&return-value-dvb;
1754
1755</section><section id="VIDEO_SET_SPU"
1756role="subsection"><title>VIDEO_SET_SPU</title>
1757<para>DESCRIPTION
1758</para>
1759<informaltable><tgroup cols="1"><tbody><row><entry
1760 align="char">
1761<para>This ioctl activates or deactivates SPU decoding in a DVD input stream. It can
1762 only be used, if the driver is able to handle a DVD stream.</para>
1763</entry>
1764 </row></tbody></tgroup></informaltable>
1765<para>SYNOPSIS
1766</para>
1767<informaltable><tgroup cols="1"><tbody><row><entry
1768 align="char">
1769<para> int ioctl(fd, int request = VIDEO_SET_SPU ,
1770 video_spu_t &#x22C6;spu)</para>
1771</entry>
1772 </row></tbody></tgroup></informaltable>
1773<para>PARAMETERS
1774</para>
1775<informaltable><tgroup cols="2"><tbody><row><entry
1776 align="char">
1777<para>int fd</para>
1778</entry><entry
1779 align="char">
1780<para>File descriptor returned by a previous call to open().</para>
1781</entry>
1782 </row><row><entry
1783 align="char">
1784<para>int request</para>
1785</entry><entry
1786 align="char">
1787<para>Equals VIDEO_SET_SPU for this command.</para>
1788</entry>
1789 </row><row><entry
1790 align="char">
1791<para>video_spu_t *spu</para>
1792</entry><entry
1793 align="char">
1794<para>SPU decoding (de)activation and subid setting according
1795 to section ??.</para>
1796</entry>
1797 </row></tbody></tgroup></informaltable>
1798&return-value-dvb;
1799<informaltable><tgroup cols="2"><tbody><row><entry
1800 align="char">
1801<para>EINVAL</para>
1802</entry><entry
1803 align="char">
1804<para>input is not a valid spu setting or driver cannot handle
1805 SPU.</para>
1806</entry>
1807 </row></tbody></tgroup></informaltable>
1808
1809</section><section id="VIDEO_SET_SPU_PALETTE"
1810role="subsection"><title>VIDEO_SET_SPU_PALETTE</title>
1811<para>DESCRIPTION
1812</para>
1813<informaltable><tgroup cols="1"><tbody><row><entry
1814 align="char">
1815<para>This ioctl sets the SPU color palette.</para>
1816</entry>
1817 </row></tbody></tgroup></informaltable>
1818<para>SYNOPSIS
1819</para>
1820<informaltable><tgroup cols="1"><tbody><row><entry
1821 align="char">
1822<para> int ioctl(fd, int request = VIDEO_SET_SPU_PALETTE
1823 ,video_spu_palette_t &#x22C6;palette )</para>
1824</entry>
1825 </row></tbody></tgroup></informaltable>
1826<para>PARAMETERS
1827</para>
1828<informaltable><tgroup cols="2"><tbody><row><entry
1829 align="char">
1830<para>int fd</para>
1831</entry><entry
1832 align="char">
1833<para>File descriptor returned by a previous call to open().</para>
1834</entry>
1835 </row><row><entry
1836 align="char">
1837<para>int request</para>
1838</entry><entry
1839 align="char">
1840<para>Equals VIDEO_SET_SPU_PALETTE for this command.</para>
1841</entry>
1842 </row><row><entry
1843 align="char">
1844<para>video_spu_palette_t
1845 *palette</para>
1846</entry><entry
1847 align="char">
1848<para>SPU palette according to section ??.</para>
1849</entry>
1850 </row></tbody></tgroup></informaltable>
1851&return-value-dvb;
1852<informaltable><tgroup cols="2"><tbody><row><entry
1853 align="char">
1854<para>EINVAL</para>
1855</entry><entry
1856 align="char">
1857<para>input is not a valid palette or driver doesn&#8217;t handle SPU.</para>
1858</entry>
1859 </row></tbody></tgroup></informaltable>
1860
1861</section><section id="VIDEO_GET_NAVI"
1862role="subsection"><title>VIDEO_GET_NAVI</title>
1863<para>DESCRIPTION
1864</para>
1865<informaltable><tgroup cols="1"><tbody><row><entry
1866 align="char">
1867<para>This ioctl returns navigational information from the DVD stream. This is
1868 especially needed if an encoded stream has to be decoded by the hardware.</para>
1869</entry>
1870 </row></tbody></tgroup></informaltable>
1871<para>SYNOPSIS
1872</para>
1873<informaltable><tgroup cols="1"><tbody><row><entry
1874 align="char">
1875<para> int ioctl(fd, int request = VIDEO_GET_NAVI ,
1876 video_navi_pack_t &#x22C6;navipack)</para>
1877</entry>
1878 </row></tbody></tgroup></informaltable>
1879<para>PARAMETERS
1880</para>
1881<informaltable><tgroup cols="2"><tbody><row><entry
1882 align="char">
1883<para>int fd</para>
1884</entry><entry
1885 align="char">
1886<para>File descriptor returned by a previous call to open().</para>
1887</entry>
1888 </row><row><entry
1889 align="char">
1890<para>int request</para>
1891</entry><entry
1892 align="char">
1893<para>Equals VIDEO_GET_NAVI for this command.</para>
1894</entry>
1895 </row><row><entry
1896 align="char">
1897<para>video_navi_pack_t
1898 *navipack</para>
1899</entry><entry
1900 align="char">
1901<para>PCI or DSI pack (private stream 2) according to section
1902 ??.</para>
1903</entry>
1904 </row></tbody></tgroup></informaltable>
1905&return-value-dvb;
1906<informaltable><tgroup cols="2"><tbody><row><entry
1907 align="char">
1908<para>EFAULT</para>
1909</entry><entry
1910 align="char">
1911<para>driver is not able to return navigational information</para>
1912</entry>
1913 </row></tbody></tgroup></informaltable>
1914
1915</section><section id="VIDEO_SET_ATTRIBUTES"
1916role="subsection"><title>VIDEO_SET_ATTRIBUTES</title>
1917<para>DESCRIPTION
1918</para>
1919<informaltable><tgroup cols="1"><tbody><row><entry
1920 align="char">
1921<para>This ioctl is intended for DVD playback and allows you to set certain
1922 information about the stream. Some hardware may not need this information,
1923 but the call also tells the hardware to prepare for DVD playback.</para>
1924</entry>
1925 </row></tbody></tgroup></informaltable>
1926<para>SYNOPSIS
1927</para>
1928<informaltable><tgroup cols="1"><tbody><row><entry
1929 align="char">
1930<para> int ioctl(fd, int request = VIDEO_SET_ATTRIBUTE
1931 ,video_attributes_t vattr)</para>
1932</entry>
1933 </row></tbody></tgroup></informaltable>
1934<para>PARAMETERS
1935</para>
1936<informaltable><tgroup cols="2"><tbody><row><entry
1937 align="char">
1938<para>int fd</para>
1939</entry><entry
1940 align="char">
1941<para>File descriptor returned by a previous call to open().</para>
1942</entry>
1943 </row><row><entry
1944 align="char">
1945<para>int request</para>
1946</entry><entry
1947 align="char">
1948<para>Equals VIDEO_SET_ATTRIBUTE for this command.</para>
1949</entry>
1950 </row><row><entry
1951 align="char">
1952<para>video_attributes_t
1953 vattr</para>
1954</entry><entry
1955 align="char">
1956<para>video attributes according to section ??.</para>
1957</entry>
1958 </row></tbody></tgroup></informaltable>
1959&return-value-dvb;
1960<informaltable><tgroup cols="2"><tbody><row><entry
1961 align="char">
1962<para>EINVAL</para>
1963</entry><entry
1964 align="char">
1965<para>input is not a valid attribute setting.</para>
1966</entry>
1967 </row></tbody></tgroup></informaltable>
1968 </section></section>
Documentation/DocBook/media/dvbstb.png.b64+0−398
@@ -1,398 +0,0 @@
1iVBORw0KGgoAAAANSUhEUgAAAzMAAAGaCAYAAAA7Jx25AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBI
2WXMAAA3XAAANiQFmEOuiAAAgAElEQVR42uzdd1RU18I28GdgKFZUBE0saFA0KoqFFkEhKhbAQmxJ
3bIkNNEpMEUwsMZarJMZrw4KxRExQczUqil0jRBA1GAjGQqLYC4TemdnfH76cj3HodYDntxaLmTll
4zuw57Zmz9z4yIYQAkYZzcnJCSkoKGjZsyMIgIiIiquPS09PRoEEDyBhmqCaQyWRo06YN3nvvPRYG
5ERERUR137Ngx/Pnnn5CzKKgmMDAwwKpVqxhmiIiIiAj29vZ4//33ocWiICIiIiKimohhhoiIiIiI
6GGaIiIiIiIgYZoiIiIiIiBhmiIiIiIiIYYaIiIiIiIhhhoiIiIiIiGGGiIiIiIgYZoiIiIiIiBhm
7iIiIiIiIGGaIiIiIiIgYZoiIiIiIiGGGiIiIiIiIYYaIiIiIiIhhhoiIiIiIGGaIiIiIiIgYZoiI
8iIiIiBhmiIiIiIiIYYaIiIiIiIhhhoiIiIiIqFLIWQRElSMsLAy2trZo1KgR5HJualTxEhIS8P33
93+PDDz+sM5+5bdu2ePDgAZo2bcoVgCplm3J0dMS5c+fqzGf++uuvsWTJEm5TVClSU1ORk5ODBw8e
10oHXr1gwzRDVJbm4uAGDRokUwMDBggVCFmzlzJrKysurUZ3727BksLCzg4eHBFYAq3IIFC5CQkFCn
11PnNGRgYAYNWqVVwBqMJFRUVh48aNUCqVlfYeDDNElWzGjBkMM1QpNm7cWOc+c8uWLTFjxgzMmDGD
12KwBVuLt37yIkJKTOfW5nZ2duU1SpYaYysc0MERERERHVSAwzRERERETEMENERERERMQwQ0RERERE
13xDBDREREREQMM0RERERERAwzREREREREDDNERERERMQwQ0RERERExDBDRERERETEMENERERERMQw
14Q0REREREDDNEREREREQMM0RERERERAwzRERERETEMENERERERMQwQ0RERERExDBDREREREQMM0RE
15RERERAwzREREREREDDNEREREREQMM0RERERExDBDRERERETEMENERERERMQwQ0REREREDDNERERE
16REQMM0RERERERAwzRERERETEMENERERERMQwQ0REREREVGnkLAKimunBgwdISkoq8/SGhoZ47bXX
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
129/CmZKB8hBPbv3w8AhVYry09XVxdeXl68ISARERERwwxR9ZLJZNi+fTvWr18PLS2tYquO6ejoYMaM
130GSw4IiIiIoYZIs0wZ84cnDlzBo0aNSr0hoe6urr46KOPauUNMYmIiIgYZohqMEdHR4SGhkJbW7vA
131O2wrlUp4enqyoIiIiIgYZog0z6pVq9CsWTO4uLhAW1tbel1XVxeTJ0/Ga6+9xkIiIiIiYpgh0izr
1321q1DQEAA/ve//+Hw4cNYvnw5tLS0IJPJkJ2dDS8vLxYSEREREcMMkWa5cOECPvvsM/j6+sLGxgYy
133mQze3t4IDAyEEAI2Njbo2LEjC4qIiIioGvE+M0SvuH//PsaOHYtp06Zh6tSpKsOGDh2KW7duISsr
134iwVFRERExDBDpDnS09Ph5uYGMzMzrFu3rsBxzMzMWFBEREREDDNEmsXDwwNPnz7F1atXeSNMIiIi
135IoYZopohr8H/r7/+ipYtW7JAiIiIiBhmiDRfXoP/LVu2wMbGhgVCREREVAOwNzOq84pq8E9ERERE
136DDNEGqkkDf6JiIiISDOxmhnVaWzwT0RERFQLwsz333+P77//Hg0aNGCpUIVTKBTIycnB//73Pxgb
137G2vEMrHBPxEREVEtCTMxMTEIDQ2Fl5cXS4UqXFRUFM6fP4/MzEyNWB42+CciIiKqRWEGAJydnbFq
1381SqWClVKmDl+/LhGLAsb/BMRERHVDuwAgOoUNvgnIiIiqj3YAQDVKWzwT0RERMQwQ1TjsME/ERER
139EcMMUY3DBv9EREREtQ/bzFCtxwb/RERERAwzRDUOG/wTERER1V6sZka1Ghv8ExERETHMENU4bPBP
140RERExDBDVOOwwT8RERFR7cc2M1TrsME/EREREcMMUY3DBv9EREREdQermVGtwgb/RERERAwzRDWO
141pjb4X716NQwMDPgFUYWLioqqc5/54cOHWL16NZKTk7kCUKXsr83Nzevc5z527BhWr17NFaAYycnJ
142uH//Ptq1a4eGDRuyQDTkOMUwQ7WCJjb4b9iwIUxMTHDixAloabFGJ1W8Nm3awMjIqE59ZkdHR9y/
143fx8HDhzgCkAVrl27dujZs2ed+sytWrVCmzZtuE29QqlUIi0tTeUvJycHMpkM+vr66NKlCwupBLKz
144s2FqalqptWUYZqjG09QG/xYWFrh37x6/IKIKdObMGRYCUQX66KOP8NFHH9XpMlAoFIiOjkZ4eDgu
145X76My5cv48aNGxBCoHPnznBycoKVlRVsbGwQFRWFhQsX4urVq1x5NATDDNVobPBPREREpfHo0SMp
146tFy+fBnXrhOJlUQAACAASURBVF1DamoqWrZsCWtra4wfPx42Njbo06cPGjdurDLtjRs3WIAMM0QV
147hw3+iYiIqDCpqam4evUqwsPDERYWhvDwcDx69Aj169dH7969YWVlhdmzZ8Pa2hpt27ZlgTHMEFUd
148TW3wT0RERFWvuOpi1tbWWLhwIWxsbNCtWzfI5TwNZpghqiaa2OCfiIiIqk55qosRwwxRtdHUBv9E
149RERUOVhdjBhmqFZgg38iIqLajdXFiGGGai02+CciIqpdWF2MGGaoTjhx4gT27dvHBv9EREQ1FKuL
150EcMM1Um5ubn48ccfsXXrVjb4JyIiqgFYXYwYZojwssF/eno63n77bTb4JyIi0lCsLkYMM0SvyGvw
151r6WlhUmTJrFAiIiINACrixHDDFEJeHh44NmzZ2jQoAEvPxMREVUDVhcjhhmiMli3bh0CAgLw66+/
152YsiQISwQIiKiKlCS6mLW1tawtLRkdTFimCEqyIULF/DZZ59hy5YtbPBPRERUSVhdjBhmiCrY/fv3
153MXbsWEybNo0N/omIiCoIq4sRw0wVCAoKgomJCbp06cJvpw7Ka/BvZmaGdevWsUCIiIjKiNXFiGGm
154iimVSsydOxc2NjbYs2cPv506KK/B/5UrV6Crq8sCISIiKgFWFyOGGQ1w8uRJxMTEIDY2FqtXr8br
155r7/Ob6gOyd/gv2XLliwQIiKiAigUCty4cUPlqgurixHDjAbYsGEDACAnJwe+vr5Yvnx5lb7/qVOn
1564OTkxLWiGrDBPxERUcFYXYyoBoSZO3fuICgoCNra2lAoFNiyZQu+/PJL1KtXr0re/8CBA9i7dy/D
157TDVgg38iIqKXWF2MqIaGGV9fX1hZWeHNN9/E7t27ER8fj71792LatGlVEqSmT58OBwcHrhFVjA3+
158iYiormJ1Mc329OlThISEYPTo0UWOFxMTg3/++Yc/iNflMJOamoqdO3di/fr1UpgBgP/+97+YOnUq
159ZDJZieclhFAbX6lUQktLq8Dxnz17BmdnZyQlJZVqmYUQEEIUOt/yLFNFTfvqfACUqiyrAhv8ExFR
160XcHqYjXLzZs3MW7cOMTFxaFp06aFjrdnzx4cPXqUYaaaaGnCQvj7+0Mul2Ps2LGwtLSEtbU1ACA6
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
193S8/DwsLYXqauhpkrV64gKCgIY8aMUbtnS2Hee+896fGBAwfw999/F7jDK0reSXxBISCvy+fbt29L
194w7Ozs/H48WMAgKenpzTutGnTsH79emRlZUmv3blzBy4uLsjOzoabm1uFLFN5ps3rpezOnTv4888/
195pdczMzOxe/dulV8VyhuqyqJbt2745JNPYGBgAF1dXcTExKBbt2746quvpGUiIiLNdP36ddy5c6dS
1965v3o0SMcPHgQXl5ecHBwQJMmTdC9e3csWrQIL168wPjx43Hy5EkkJCQgOjoaO3bsgLu7OywsLNju
197hSpV3v1m0tPTAbysYtajRw+2l6lrYSYzMxOzZs0CgFLtdPLfUFOhUGDevHlq3QrnDzjPnz9XGSaE
198kE7qk5KSkJycrDLc1tZWmsf8+fNx8OBBvPPOO/j3338BAOPGjcO4ceOkEOHp6YnmzZujR48eMDU1
199hZmZGZKSkuDv768S0MqzTOWZNu/qkBACgwYNwsKFCzF79mz06NEDXbt2lcZbtWoVlixZgh9++KHK
200V7wlS5ZAX18fPXr0wN27dzFr1ixs3rwZXbp0waFDh7hlEhFpmN9//x0jR45Er169EBAQUO75sboY
2011SR57WZu3rwphRlWMdMQ4v94e3sLZ2dnUVn2798vOnfuLAAIAEIul4tRo0aJ48ePFzrNX3/9JSZP
202nizatWsnTZf317t3b/HLL7+I0NBQMX78eJVhXbp0EV9++aUQQoiTJ08KJycnleE9e/YU27Ztk94n
203NjZWtG7dWhr++uuvi/Pnz6ssS05OjliyZIlo1KiRyrwMDAzEwoULRUZGhjRueZapIj5PUlKScHBw
204UBnH2dlZxMTECIVCIczNzaXXR40aJdLT00Vli4yMFABEbGys9NquXbuEvr6+mDx5sqhfv744dOiQ
205mDt3rpDL5WLIkCHi1q1b0rgGBgZi7969goiIqtaVK1eEq6urkMlkwsnJSYSEhJR6Hrm5uSIyMlL4
206+fmJadOmCXNzc6GtrS20tLREly5dxAcffCA2b94sIiIiRE5ODgudNFK/fv3EsGHDRJs2bYSenp44
207cuQIC6UaBQYGCgMDAyET/1fHaMGCBYiKikJgYGCdDHVpaWkICwuDnp4eLC0tC2xvArysmnX9+nUk
208JCTAyMgI3bt3L3Tcag6piIyMxJMnT/Dmm2/CxMREGpaSkoLQ0FA0b94cPXv2LHF1v/KIiopC9+7d
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
273UrAHIMLCwtTGuXLligAg/P39C5xHSdftsm47Qry8fUGfPn3EqFGjhFKpVBm2f/9+6X29vb1r5bZU
274lWGG1cyIWOWsSD179sS1a9fUuq3cs2cPOnfujG3btpWqHr2bmxtsbW1V/vr37w93d3fcu3evwGni
2754uJUnjds2JArHdUYGzduhIuLC9q1aye9pqenh5kzZ6pU4yyOXC4v0/C//voLK1euhKGhYYG9Or32
2762msYMGCA2usNGjSAnp4e7O3ti3zfoKAg7N+/H02bNsXUqVPVhjds2BA+Pj4AgFu3buE///kPVwoq
277s9atW2PcuHHS8++++05tnK1bt6Jp06Z45513CpxHSdftsm47ALBz505cvXoVc+bMUesEZ/jw4dKt
278DrZu3Yrc3FxuS+XAMENUSYHm6tWrteaztW3bFmfOnMG+ffvwxhtvSK+npqZi5syZRd4X5lU3b95E
279RkaG9Jeeno6kpCRcvXoVffv2LdE8imr0SaRJYmNjcfjwYZVG/3lmzpwpddO8a9cuJCQkVMoyrFu3
280DgqFAgMHDoSurm6B4zRq1KjQ6V+9h9Or8u6XY2VlVej8hw0bBmNjY7WTN6Ky+OSTT6THP//8M2Jj
281Y6XnycnJ+OmnnzBx4kSVe6OVZd0uz7bj5+cH4GX30Bs3blT58/PzQ7NmzQAACQkJuHHjBrclhhki
282zQs0RfX+VVM/29ixY3Hjxg0sXbpU5VfgPXv2YPLkySW6QqOnpwd9fX3pr169emjcuDF69+6NzZs3
283FzhN06ZNVZ6/eqWGSFNt2bIFb7zxhkpnGnlatWoFNzc3AC9v6Lp9+/YKf38hhNRIunPnzhU+f6VS
284iQsXLgAAmjdvXuh42tra6N+/P4CXXVJHR0dz5aAy69WrFxwcHKR1MP+VzZI0/K/sbSc5ORnXrl2D
285trY2njx5gpiYGLW/MWPGwNPTE56entDS0uK2VA5ybhJElRNoHj9+XKKeTmoaPT09LF68GEOGDMGI
286ESPw9OlTAMBPP/2EUaNGYcyYMWWed7du3dCqVSu115s0aQJjY2M8f/4cABATE8MVjTReRkYG/Pz8
287oFAoCr1LeHx8vPR4w4YNmDdvXrHVyUrjxYsX0jZa1NWXsoqPj5duXljcL8SdOnWSHj98+BA9evTg
288SkJl9umnn0on/35+fliyZAkaNWqErVu3wtbWFt26dau2befu3btSN8xr1qyRrsAW937clhhmiDQq
2890MyZM6dGh5nU1FQ0aNCg0BteWllZITg4GLa2ttKVEl9f33KFGZlMht9++63AYXZ2djh48CAAIDQ0
290lCsZDE9QJwAAGAdJREFUabyAgACkpqbCx8enyLuEr1ixAk+fPsWDBw9w6NChcm1Dr8p/FTMzM7PC
291P2P+Kp95J36FMTQ0lB6X5OSOqCjDhg1Dp06dcOvWLaSkpGD79u2wt7fH9evXK6Qb/vJsO3mhRAiB
292+/fvl+gGz9yWGGaINDLQ1GTu7u6YNWsW3nrrrULH6dChA3x8fPDhhx8CAP74448KXYaHDx/CyMgI
293enp6GDt2rBRm7ty5g6ioKJibm3NFI40khMCGDRswZswYzJ07t8hx4+Pj8dVXXwF4eRPNigwz+W8W
294+Pfff1f452zevDl0dHSQk5OD6OhoCCEK3fflv/Ff/rZ3RGWhpaWFTz75ROpIY926dYiMjETjxo0r
295ZBsqz7ZTv3596XFISEiJwgy3pXKsC9wciKiwoLJ8+fJix8t/o8yS3GW5pJKSkmBpaSldbndzc1M5
296IBTUgw2Rprh48SIiIiJKVG9/5syZUkPkS5cuITw8vMwB6lWtW7eW5n3hwoVS9TxYEnK5XLoBaFxc
297nNSQuSBPnjwB8LKtUMeOHbmSULlNnDhRal9y//597N69GxMmTECDBg3KPe/ybDumpqZSEPHz8yty
2982ryOdLgtMcwQUSWEmaCgoCLvsAy8bBeQx8bGpsQnWcVZtGgROnfuLB2UdHR0sGnTJmn4rl27cPr0
2996RLPLzExEa6urnj27Bm/XKp0q1evhpmZWbFdvwJAy5YtMXr0aOn52rVrCxwvrzpJenp6gdtYSkqK
3002ut6enpSY+G7d+8iKCioyG20oG21uO33gw8+kB4HBAQUOl5eSHN3d6/xV65JM9SrVw+zZs1Sea00
301Df+LWrfLs+00atRICibBwcHYs2dPgdPm5uZiypQpcHJy4rbEMENElRFm8nauRf1ClL9dUP7uMvNk
302ZmaqXBIv7sQor3rOhg0b1HqAGjp0KNasWSM9d3NzQ2BgYLGfJTQ0FJaWlujXrx9atGjBL5cq1ZUr
303VxAUFIQxY8aU+ETjvffeU9mmCqrWkndl8vLly7h9+7b0ukKhwIoVK6SQk79TAQCYN2+e9NjDwwMP
304Hz5UC/ohISEAXvbClJqaqjI8f7frBTVMnjRpEiwtLQEAmzdvRmJioto4t2/fRnBwMMzMzFSWh6i8
305Zs2aJdUK6NOnDywsLEo8bXHrdnm2HU9PT+nxtGnTsH79emRlZUmv3blzBy4uLsjOzpZ6NeS2xDBD
306RJUQZhISEmBnZ4effvpJpYGiUqnEjh07pBt4LV++vMBfoV8NGzt27EBYWBhiYmJw79493L17Fzdv
3073sTFixexadMm2NvbS20MBg4cqDa/Tz75BPv27UOzZs2QmpoKV1dXuLm54eTJkyq/WKempiIoKAjv
308vPMOXFxcsGzZMnz++ef8YqlSZWZmSr8Ul6ZXsvw31FQoFJg3b57KjwB5PywAQHZ2Nuzs7ODl5QVv
309b2+Ym5tDCCF1VRsWFob3338fx44dA/CyobSHhweAl1VxevXqhRUrViAwMBDbtm2Do6MjDAwMpBO6
3107t27q9zQM/+PGbdu3VJbdrlcjkOHDqFTp06Ij4/HhAkTpAbQefuQiRMnok2bNggMDKyQKkBEeVq0
311aIGJEycCAGbMmFGqaYtbt8uz7YwbN066uWdOTg48PT3RvHlz9OjRA6ampjAzM0NSUhL8/f2lHz24
312LZWRIKoBDAwMxN69e2vUMgcHBwsAIjExsUaWuVKpFAYGBmLJkiXCy8tLmJmZiRYtWoghQ4YIV1dX
3130bZtWwFAmJqaip9//lltej8/PzFgwAChra0tAJT6z8DAQOTm5ha6fHFxcWLJkiXScgAQMplMGBoa
314imbNmgkAok2bNmLRokUiLi6uVm4X5ubmwtfXt07tC9q2bauxn3n//v2ic+fO0vool8vFqFGjxPHj
315xwud5q+//hKTJ08W7dq1U9sGevfuLX755ReVbXLp0qVCLpdL4zRr1kxs27ZNCCGEs7OzaN++vfD2
3169hahoaEq249CoRDffPONaNq0qcp7mJiYiHPnzon33/9/7d1/dNV1/cDxF9vdxgZzTn4VET/q2DIC
317A9EgEaxOBxI9kOmRUA6dOqEQET+UMDrQOXKC6mQHS4qAlHM8mgdPHTMMzBN4GHFU1CUJyVkonFJ+
318jDMYsrGN7dMfftnXxa8pG9y7PR5/7W73fnbv+3Mv7LnPfX12e9KtW7dk2rRpyebNm5OGhoZk06ZN
319yYwZM5Lu3bs3e41NnDgxeeyxx055LEeOHElmz56dFBYWJr17906mTp2afOMb30j69euX3HXXXRnx
320Opw/f34ycuTIDvWamj9/fjJu3LiMfgw7duxICgsLk6qqqhZd//08tz/Ia+ek+vr6ZNGiRUlhYeEp
321/7/94Ac/SGpqak57/9rDa+mkV199NYmIZM+ePa2+7T/96U9JUVFR0ilp7WlAaAOXXnppLF++vNlb
322MdJdaWlpXHfddXH48OGm39xkmqeffjpuuOGGk7/4iF27dkVZWVkcOnQo8vPzY9CgQTF06NCznnb2
323AvxCJnbt2hX/+Mc/oqKiIhobG6Nnz54xcODAKCkpadfvJx48eHBMmzat6TeHHUG/fv1i/vz5Heox
324/6+DBw9GWVlZ5Ofnx7Bhw5r+yvnu3bujf//+Z3091tbWRllZWVRUVETPnj1jyJAhkUqlory8PPr1
32563fOv4jeErW1tfH3v/89Kioqori4OK688spmZ3dKZ/fee2+UlpbG5s2bO8zz6d57743t27e36C27
3266ezll1+OoUOHttn2z+e1U1NTE2VlZVFZWRk9evSIwYMHt+iEOZn8Wjpp+/btMXjw4NizZ0/07du3
327Vbe9bt26uP32252aGTizkyET8e6ppktKSpr9sa50kK73C9pKjx49Tpkni2jZKVrz8vKaBpPf6+Tb
328SltDXl5eXHPNNXYUF1Rbhsz5vnby8/ObnfnTa6l1mZkBAADEDAAAgJgBAAAQMwAAgJgBAAAQMwAA
329AGIGAAAQMwAAAGIGAABAzAAAAIgZAABAzAAAAIgZAAAAMQMAAIgZAAAAMQMAACBmAAAAMQMAACBm
330AAAAxAwAAICYAQAAxAwAAICYAQAAEDMAAICYAQAAEDMAAABiBgAAEDMAAABiBgAAQMwAAACIGQAA
331QMwAAACIGQAAADEDAACIGQAAgDSTsgTQttauXRtFRUUWgla3ffv2DveYKyoqYu3atdG9e/cO85gb
332Ghri+PHj0aVLF096/163iXXr1sXatWs9AVqguro68vPzo1OnThYjTf6fEjPQVi+u1Lsvr9mzZ0dO
333To4FoU3k5eV1qMdbVFQUGzdujLKysg7zmOvq6qK6ujry8vKic+fOfohqQ5WVlTF69OgO9Zjz8/Mj
334IuLOO+/0BDiH2traqKmpiYKCgsjNzbUgLXDkyJGIiMjKars3g4kZaCPDhw+PJEksBLSit956q8M9
3355rq6uli1alUsXbo0qqqqYubMmTFr1qwoLi72hOC8LVy4MBYuXGghzmL9+vUxd+7c2Lt3b9x3330x
336Z86cpgjk4jMzAwBpLDc3N6ZPnx7l5eXxox/9KB566KEYMGBALFq0KCorKy0QtJHy8vIYP358jBs3
337LoYPHx67du2KBQsWCBkxAwCIGkhPhw8fjrvvvjsGDhwYVVVVsW3btli9enV8+MMftjhiBgAQNZB+
338Tpw4EcuXL4/LL7881q5dG2vWrImNGzfGkCFDLI6YAQBEDaSn9evXx5VXXhnf+973YtasWfHPf/4z
339Jk6caGHEDAAgaiA9mYsRMwCAqIGMYi5GzAAAogYyirkYMQMAiBrIOOZixAwAIGogo5iLETMAQDuN
340moULF4oa2iVzMWIGAGjnUfPwww+LGtoVczFiBgAQNZBxzMWIGQBA1IgaMkp5eXlMmDDBXIyYAQBE
341jaghM7x3LubIkSPmYsQMACBqRA3pzVwMYgYAEDVkHHMxiBkAQNSQUczFIGYAAFFDRjEXg5gBAFo9
342apYsWSJqaDPmYhAzAECbRc20adNEDW3CXAwt1SlJksQykPZP1E6dYvDgwTFp0iSLAZCGGhoa4sUX
343X4yNGzdGbW1tXHvttTFy5EjzDLwvhw4dinXr1sXOnTvjqquuijFjxkRhYaGF4RTr1q2LzZs3ixky
344wzXXXBNVVVXRtWtXiwGQxpIkiYqKiti3b180NDREz549o1evXpGdnW1xOGsMv/3223HgwIHo2rVr
3459OnTJwoKCiwMZ1RdXR1du3YVMwBA66urq4vVq1fHkiVLoqqqKmbOnBmzZ8+O4uJii0OTEydOxG9+
34685tYtGhRFBQUxI9//GNvJ+N9ETMAgKjhglu/fn3MnTs39u7dG/Pnz485c+Z4WyJiBgAQNaSv8vLy
347uPvuu+Opp56Kr3/967F48WKnWeYDczYzAKDNOfsZ/l4MbcGRGQDggnOkpuMwF4OYAQBEDRnHXAxi
348BgAQNWQUczFcKGZmAICLzkxN+2AuhgvNkRkAIO04UpNZzMUgZgAARE3GMReDmAEAEDUZxVwM6cDM
349DACQ9szUpA9zMaQTR2YAgIzjSM2FZy4GMQMAIGoyjrkYxAwAgKjJKOZiSHdmZgCAjGempnWZiyFT
350ODIDALQ7jtR8MP87F7N06dL42te+ZmEQMwAAoiZ9mYtBzAAAiJqMYi6GTGZmBgBo98zUnMpcDO2B
351IzMAQIfTHo/UvPnmm/Hmm2/G9ddff9brmYtBzAAAdPCoOXbsWDz77LMxfvz4i/44du3aFSUlJU2P
352KScn57TXMxdDe+NtZgBAh3U+bz/75S9/GRMmTIilS5de1Mewc+fOuPbaayM7OzuysrLigQceOOU6
3535eXlMWHChBg3blwMHz48du3aFQsWLBAyZDxHZgAA/k9Lj9QcO3YsPvrRj0ZlZWVkZ2fHlClTYsWK
354FZFKpS7o/S0rK4svfOELcfTo0Thx4kRERHTp0iXeeOON6NGjRxw+fDgWL14cv/jFL+Jzn/tc3H//
355/TFkyBA7GjEDANBRo+anP/1pLFiwIOrr6yMiIicnJ0aOHBl/+MMfoqio6ILcx5deeik+//nPR3V1
356dTQ0NDR9Pjc3NyZNmhRXX321uRjEDACAqPn/qLnzzjtj0KBBp7wNLTc3NwYMGBDPPPNM9O3bt03v
35715YtW2LMmDFx/PjxZiHzXgUFBfH973/fXAxiBgBA1LwbNQcPHoz6+vrTRkROTk5ccsklsWHDhrjq
358qqva5L5s2rQpvvzlL0ddXV00Njae9jpZWVkxZMiQ2LZtm52HmAEAIKKysjL69OkT1dXVZ7xOdnZ2
359pFKpePzxx1v9TGcbNmyI8ePHR319/RlD5r1B87vf/S5uvfVWO452y9nMAABaaNWqVU1zMmfS0NAQ
360dXV1cfPNN8eyZcta7Xs/9dRTceONN571iMx7JUkS3/3ud+P48eN2HGIGAKAjO3bsWCxZsuScMXMy
361JBobG2POnDnx7W9/+4xzLS31xBNPxM033xwnTpyIlr6pJkmSePvtty/6qaNBzAAAXGTLli2Lo0eP
362vq/bNDY2xsqVK+Omm26Kd9555wN930ceeSRuu+229xVEeXl50alTp4iIeO2118JUAe2VmRkAgHOo
363qamJgoKCiHj3rGV1dXXv6/a5ubnxiU98IjZs2BC9e/du8e1Wr14dU6dObdF8TCqVirq6uhgwYEBM
364mDAhxo4dG6NGjYrOnTvbgYgZAICObN++fbF169bYunVrPPfcc1FWVhZ1dXWRl5fXooH8nJycKC4u
365jmeffTYGDRp0zu/34IMPxne+850zHlXJy8uLurq6yM3NjS9+8Ytx0003xdixY6N///52FmIGAIAz
366q6+vj5dffjmef/75+Nvf/habNm2K/fv3RyqViuzs7KitrT3lNllZWZGXlxe///3vY+zYsWfc9s9+
3679rOYN29es0By9AXEDABAm/nPf/4TL7zwQmzZsiU2bdoUr776atTX10fnzp2jtra22VGWX/3qV3HX
368XXedso377rsvFi5cGBHvnua5sbHR0RcQMwAAF1ZdXV288sorsXXr1ti8eXOUlpbGgQMHmr7+pS99
369KdavXx9ZWe+ek2natGnx61//OiIi+vfvH1/5ylccfQExAwBcKPv27Ys//vGPFuIMDh8+HP/617/i
3706aefjoaGhujbt2/ccccdsX79+vj3v/8dH/rQh2L06NHRrVs3i3UWI0eOjE996lMWQsyIGQCg9ZSW
371lsZ1110XvXr1ii5duliQczj5N2mysrKaTqfM2e3evTuWL18e06ZNsxgdXMoSAABt4fXXX4+ioiIL
372QasbPHiwRSAi/NFMAABAzAAAAIgZAAAAMQMAAIgZAAAAMQMAACBmAAAAMQMAACBmAAAAxAwAAICY
373AQAAxAwAAICYAQAAEDMAAICYAQAAEDMAAABiBgAAEDMAAABiBgAAQMwAAACIGQAAQMwAAACIGQAA
374ADEDAACIGQAAADEDAAAgZgAAADEDAAAgZgAAAMQMAACAmAEAANqBlCUAADh/VVVVsXfv3vP7wSyV
375ik9+8pOxf//+OHjw4BmvV1xcHB/5yEdO+XySJPHaa6+d9jYDBgyILl262FGIGQAAmvvLX/4St9xy
376y3lto2fPnrF///7YvXt3rFy5Mh5++OFIkqTp6yUlJTFx4sQYNWrUGWPmz3/+c2zZsiWefPLJiIgo
377KiqK6dOnx4wZM8QMYgYAgFPV1NRERETv3r1jwYIF8dnPfjYuu+yySKVSUVpaGpMmTYqIiI997GPx
3783HPPRZIkcfz48XjrrbfiySefjGXLljVtY8SIETFixIi44oorYt68eU3f44c//GFMnDjxjPchKysr
3797rnnnrjnnnti4MCBsWPHjnj88cdjzJgxdhBiBgCA06uuro6cnJz461//GiUlJc2+1qNHj6aPc3Jy
380ok+fPk2XL7/88hg9enRceumlsXjx4ma3mz17djz00EOxc+fOiIgoLS09a8yclCRJVFRUxMiRI4UM
3817ZoTAAAAtIKampoYP378KSHTUjNmzIjGxsZoaGho+lwqlYqFCxc2XX7kkUfi2LFj59zWCy+8EAcO
382HIgZM2bYMYgZAADOHTPjxo37wLe/7LLLYtiwYXH8+PFmn7/llluiX79+ERFx5MiR+O1vf3vOba1e
383vTq6d+8eEyZMsGMQMwAAnN28efNiypQp57WNLVu2REFBQbPPpVKpmDVrVtPln//8582O3vyvo0eP
384xqOPPhpTpkyJvLw8OwYxAwDAOX6oysqKTp06ndc2srOzT7uNb37zm1FUVBQREW+88UbTmcpO59FH
385H41jx47Ft771LTsFMQMAwMVVWFgYU6dObbp8//33n/Z6SZLEihUrYtSoUR94dgfEDAAArWrmzJmR
386Sr17ItotW7bE888/f8p1XnrppXjllVeahQ+IGQAALqo+ffrEbbfd1nT5dEdnVqxYEcXFxfHVr37V
387giFmAABIH3PmzGn6+Iknnog9e/Y0Xa6qqorHHnssJk+eHJ07d7ZYiBkAANLH0KFD4/rrr4+IiMbG
388xnjggQeavmbwHzEDAEBamzt3btPHK1eujKqqqqbB/xEjRsSnP/1pi4SYAQAg/dxwww1NZyo7evRo
389rFq1KrZt2xZlZWUG/xEzAACk8Q9vWVnNZmeWLVsWDz74YFxyySVx6623WiDEDAAA6Wvy5MnRvXv3
390iIjYu3dvrFmzJu64447o0qWLxUHMAADQehobG1t1e/n5+TF9+vRmnzP4j5gBAKDVvfPOO00f19TU
391tMo2p0+fHnl5eRERMWzYsPjMZz5joREzAAC0rmeeeabp471798aOHTvOe5u9evWKyZMnR0QY/EfM
392AADQeg4dOhRTpkyJIUOGxIoVK5p97eqrr44bb7wxfvKTn5zX95gzZ04UFhbGxIkTLTgdUsoSAAC0
393vm7dusWaNWva9HtcccUVsWnTpigsLLTgdEiOzAAAZLChQ4daBMQMAACAmAEAABAzAAAAYgYAABAz
394AAAAYgYAAEDMAAAAYgYAAEDMAAAAiBkAAEDMAAAAiBkAAAAxAwAAIGYAAAAxAwAAIGYAAADEDAAA
395IGYAAADEDAAAgJgBAADEjCUAAADEDAAAgJgBAAAQMwAAgJgBAAAQMwAAAGIGAAAQMwAAAGIGAABA
396zAAAAIgZAABAzAAAAIgZAAAAMQMAAIgZAACA9JCyBABAW+jVq1cUFBRYCFpdZWWlRSAiIjolSZJY
397BgCgtVRUVMTGjRstBG1q6NCh8fGPf9xCiBkxAwAAZB4zMwAAQEZKvb79xaYLJYOutiIAAEBGcGQG
398AADISP8FpxZnWS0U37cAAAAASUVORK5CYII=
Documentation/DocBook/media/fieldseq_bt.gif.b64+0−447
@@ -1,447 +0,0 @@
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
447l3O5NwEBADs=
Documentation/DocBook/media/fieldseq_tb.gif.b64+0−445
@@ -1,445 +0,0 @@
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
33piYFuOEUjESzGZUPTfWnQEmOVdYqIAVlxcDMKewvdtKf6aBFtr4s6IWq8p+dBog0xrRFVCx0YbWG
34EyFslU1aLfRKyaa1GHDNMUW3QwtmDOSXa3ltiwF8Q1tw9p12qS+FiCxJoTyXyOkBpz5OkAwZk1Uf
35smgobEI5UmUeMaD8eEUoSFjQlI4SIadlsnEAEsMlP4kToJDliaRkEHWIEkopSeCPSPwfYvIAoLNI
36JpUEwcz7mgIxBqmnQjDsUi89N8lniRIWwIQklKSJyyRxUJokygmhbMm/I6otbH3RijFp5J4JFkR7
37BJFU3rJXwUa6UySgemddxHPEhZBLnij+AVRDVEm097XmBtTBp0AHOrx7ukUeZXOIQQk6klFYqCBj
38QgISbsBBuOiToRjNaHgWCieOarQjhVnIRGsCzriE5aMoTalKV8rSlrr0pTCNqUxnStOa2vSmOM2p
39TnfK05769KdADapQh0rUohr1qEhNqlKXipARSOKpUI2qVKdK1apa9apYzapWocolgxwiGGANq1jH
40StaymvWsaE2rWtca1oTE4BRwjatc50rXutr1rnjNq173CtcYJEQYSwisYAdL2MIa9rCITaxiF8vY
41wAojIVuNrGQnS9mtAgMh0GCrZjfL2c6y9RAOYUQnRkva0pr2tKhNrWpXy9rWuna09Hj+6ALIQdva
422va2uM2tbnfL29769re0bUFCnsCE4hr3uMhNrnKXy9zmOve50C3uExKSi1hY97rYza52t8vd7nr3
43u+ANr3VzkRBIvPa86E2vel17icesArjwja985/vbBYR2vfjNr35ZG1uEzJa+AA6wgHkrXIQQN7oI
44TrCCF/zc6SKkuuKNsIQnTGHwkhch5t2vhjeM3/YeRB7vHbCIRwxg+zZEtBxOsYr5K1sSu/jFvi3w
45QQ7M4Brb+MbMdfBBIFzhHvv4x9298EEyvOIiG7kTHjYIiGHM5CbX1sQMQfGRp8zh/h7kv07OMoll
46bBAa4/jLYF6wjg3CYyCb+cwUFrL+QYhM5TbnN8lFCbGW5yxgKC/EDlPIs573zOc++/nPgA60oAdN
47aD3zASF+cIOiF83oRjv60ZCOtKQnTelKK9oLCfFGNzbN6U57+tOgDrWoR03qUpt6095ISBSawepW
48u/rVsI61rGdN61rb+tasjkJCzFDoXvv618Am9B4QwgdLG/vYyE62pf1wXzc7e71WNgiW6Uxt+XK5
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
2097fo17NiyyyKRAKsXUtxGe/Ui4URMbjG6gw6/Pfs48uSbSeDGDc1Jr99Ciw9trpQ6x+LYlXPv7t3v
210I9t5SMAab11CHljQqPfmDc34bWjYSMyH5lu6QNuw6NuHJcGJE7bhlgd02Gy03XcJKrigWtDcAMso
2110CBhXXHjTScPLPKMAh+FsIjx4HO3AZedcU4gAQs2E8JiIhJvMPgijDGWZd0N71nn4Q3+5E1Hom4d
212StAbCRqxF9989MlzI4IyKrkkk009MoqAvL3xY4ajnFgdhhqu6GGHYpBXG3w8wvdIiUi02CSaaapZ
213FDQAXHmgcaNA15tQAvF2opwCGafbfen1CCdu/zlB3oDQPRjmmokquiijjTr6aFn2EfQepJVaeimm
214mWq6KaedevopqKGKOiqppZp6KqqpqspWHhtu5ARH+iU51Bu83Vgrb8AVh2svb2bXC67A3aejrQFC
2155QSlEpAJC5izTmergLfZSihxvA1KFK7S7QcgecIByxtzuIoHnRN+ugqhs0ORoJ+DscJ53bTw8Spc
216tdHpGJS3uG407IHWjtgUEgZuNMr+iOkhitS8Pca7q62+clTrtfty65+UQH7bi2383nbuKOnWye6h
217/r2blK0Y71kyosXey1G+vJVHrsHF/stUqxzBulHMTPEqL7SI8urwRhDrSGB06f34LXMXCzvxxhx1
218TJXAYrgqj0aI3qffjiQerN1GWhI13LobSUDtq1A9smyN+9640XPRzTwyoFmPDGV1G6kYtn/3ct31
219DSciccORAqPoMb6Hhtd11cXdACDWWmu999yNE8cR3mPD1+5TN4x4sxiJByUPuW+nDPfoVX5d9n76
220WQ432KoTKjg2hLNsuH7Mwb24sXLHPbnjdJ+eYd/MAn55yE1F7WrncIPudt2P667+m9dZwypP8H9j
221yDrlrt8Gu+xFjZJe2H//6TTqz5MOOYLDcT3czU6FGDDOtheHnnrYDTmk45jzjgTZI0MeIUeg0bHv
222ledpTknRit4jvpF5aSOCc9y7IBcm/cltfWwrHlMsVzN0wY0EwKEg9rbGu4NFMISlG10vCNiq7jnw
223RMjykO3C1EAUNU9MI5wgBrUGQLZtSDcgXAoB8WbA4nhQPTncG/789zvc7FA950Lf5FKYnhVSpWYm
2242g+9SKgiWvEmWrDY2QnTB8HmWEtyTEGWhVS0tqBY6FkuO1kXT0hCXL0BQ1B0HHt6ITUIHekp60LC
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
305nXr12OiMPm++faZoWJc6hRc/nnx58+fRp1e/nn14SMq5x69I+AkT+/fx59e/n3/+f///AQzQvifg
306k89AiCqTh572GGzQwQfZuyS7AymkyDvwIMxQww3Te++sCimkT8ARSSzRxAAJ/BBEAxNckMMXYcxQ
307QrtWrBGWC2PMUcf1PIRsORuZE/HEIYks0r8UfQSSuxZ3bNJJ8WbsTDsl5cPxyStz7JEwKm0T0sgv
308wTwRyS25/IxJLNHkMErPytzOO3Wsi1POOV1LpMA2PyNMl+P47NPPP43T5U48JauMAWboTFRROdWZ
309kFA3nUoIKs0opVQwMh89rLbEGuvUU7IewzTTtRK8rNJT/eKMzVEn825SVGGN69LaWMULsU9xzTWl
310UGmtlbLn5DE11mGjUnVKXwv+c5XYZaOa9Udku9pU12mpBYnXZ6FdqlRmuQXK2Gwlc3WVcckt19xz
3110U1X3XXZbdfdcY0YFNylCJMmlHvxzVffffnt199/AQ5Y4HulkXfepBK04N2FGW7YYXe/PTgv78SQ
312x+KLMc5Y44057tjjj0EO+WKDJaaJMJFRTlnllVEmuWSZKkOC5ZlprhlkMRx9OS3vdDa5155jEhVo
313jIQe2qJVjcYI6aRl4pnpi4p+OqKopX6I6qppxPqipbWuyOmuIboaa7GrJltqrsGWMm2YAGjb7bfh
314jlvuuemu2+678c4b27UXytvvvwEPXHC49077psERT1zxwNfOiITHIY9c8sn+Ka/c8ssxz1zzzaFp
315PCJoNg9d9NFJL33yzj232vTVWW+99NRhj1322Wmv3fbbcc9d9915793334EPXvjhiS/e+OORT175
3165Zlv3vnnoY9e+umpr97667HvXQwAUE9olBseygP1hZCK26ms+n7bKfIhgvuG7iVCHwAJHmLocMLT
317d7uh/AHoBecbsbU98D0ECaN4AwCwEakbwa0XCXEf/ML2QP61TYFGgeDUjkUR8rEvWrB4X/ZAmDQn
318POIhb6BfQrbHEQ46JA9OaNsokGChZ8lPIit0IEcK+IYYTkR+OnRIbVZoQ6w4BAk3aCAAJXK4HcIC
319CU4YRefk8QYSIjEikcn+4RIj6BBoOOGIN5zIFi8COpiQT4xc2WAXQ5jGkj3CCSwEwBJ7ERkbQkOK
320sNgiGts3w/1lUIi06kUF8wiZP/4QLUHko3bY9zNYmNCERkGjBLDhxSouZ5A11E4etKPIzgCSXhns
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
401H3727d/7+9cdHn75lXdefQZ+xZ57Ay4Ii3wHPmjTfdUxeN1+/12IYVQBTkihcgVCCOJxZY3W4YDM
402BfJZiiqueNcwlJWoXHbfhEFjjTbeiGOOOu7IY48+/kjjNy/CCJxZfLCIZJIrBoIckfA5GGKUHkk4
403npOlWZhhllpSNaSVpX0oZZgmNenldVCKGSaVZcqG5ZZu/rdhlWv+BSaaUSZI4pzAnWlniGrqaVmb
404bw7aXZyAWlZnnxDieej+njIJNA89kk5KaaWWXopppppuymmnkvbRZaNnZZfNF6aeimqqqq7Kaquu
405vgprrKZmE6qoWZklQCme7sprr752Og+ZtlrG3Dx3HItsssouy2yzzj4LbbTSHktMrcMClZ0WVWzL
406bbfefgtuuOKOS2655m6rhbXX+oQrIdO+C2+88kob7IjrEvtoc4pG+ee9s1XHH6EC42aov1gluq+B
407jBrsF58JG9gvwz4JOnDFGqorsUQIP6zewhlr5TDH6kX8MUsUW4wyUwWX3NLGIkPnMctAMXdAOzbf
408jHPOOu/Mc88+/wx00DbPgbHMgVUHhxxKL810004/DXXUUk9NddVKw1H+tNHmkcgAFEJ/DXbYYgcd
409mr1aq5XvfC+nR/LZDp2cctxc9ua2xiQOt3bHwta9Ush5G9c23wrBLXfKKwvOkMt/sxYz4hH5vThr
410gTtOd22FX87E4ZQjpHjkYjW+OUxpew7d5JQTjvnAmofe3t3okV4c6KwrdKKStt+Ol4uVz747YZH9
411Dnzwwj822e68G4l78srDxaTZvDMEOez2Zc036qkTunronUuPk+zPCxQ99ziZ7rj117+Z/ebbi1+T
41299+Hz35N5CNu/vlbpk/5+vGP5P7z8O8/kvkJrn72yxL+HKc/AIKkf7xjzjkGAMEISnCCFKygBS+I
413wQxqcIMQbAX16pb+HXN0YYQkLKEJT4jCFKpwhSxsoQtHaI4Pug0zzuCgDW+Iwxxu8Bx7+95B/qdA
414kAiwegArIMoOiLgEBrEjDJwdEJfYkSGCsIhGrBgSBadEKGqkiax7ohY1IkW3EbCKcJLh2bL4RS6G
415rli/aqMb37gpUBlvdqSSlR3viMc8xopWc2QdrnQFx0AKso31ap0PF8IcREhhkYxspCMfCclISnKS
416lKykJRdpAzNqLTvXOJcnPwnKUJrrGpo0Gq6occlUqnKVrLQkInp4SC9+UTqllNkYydifK/INjVpU
4174+Zk+cUwnu2WuPSOLuvGSyj6knLA1KIwN0nFYqKvlixL5hKX6Tj+B2pgm9zspje/Cc5winOc5Cyn
418ObfpwT6GLju6aIA73wnPeMpznvSspz3vic98ulMX1CwZDc8J0IAKdKDm5KHzDvnDfC2AHAxtqEMf
419CtGISnSiFK2oRS/K0Bb082PZyUUsPgrSkIp0pCQtqUlPitKUqvSjudhoxoSzCozKdKY0relFFwBL
420HzJnoTbtqU9/SlGNqnNzHV2pUY+K1KSqtKVDzd/dYgrUqEq1pzg9KEIbpNCpanWrFhWqeHxYVKWK
421daxkPSlTv/o9mHJ1rWxtaFUNedWEHoSnba3rVL0qINaFtax87atSz5pX7T3VroSN6lsVhFDm+MEN
422jG2sYx8L2cj+SnaylK2sZS/LWC+4VGLZiUIzPgva0Ip2tKQtrWlPi9rUqvazUdgsw4yE2djKdra0
423xawfcvq+rBZ2tzbFK4f0Wh2P+nW4xEUpYH8rWItAlbfMxehh83TVnTZ3ul11rcH2Wtzsave4clLf
424YKkL3og+N65yFQhdw4tecvi2u6cLrnbfm13u+lCt6U3veMmL1bnWN73rBat74Qvgvso3rd/dL3jv
425S17m8EIcDG6wgx8M4QhLeMIUrrCFL8zgT1jXX9lRwSQ+DOIQi3jEJC6xiU+M4hSr+MMq2PC9MLMC
426DMt4xjSu8YV5gVv/6dbA1O3v97Ab4CAndcDPoy+Pp4vguEr+98jT9fHzgCzkKC/VxesyMpN5m+To
4277vjKu3Uy76As5TCXlMjHKzCXC5vlxOaLADpos5vfDOc4y3nOdK6zne+M5zYbgMrXyo4QqADoQAt6
4280IQutKEPjehEK3rRgBYCn4eFKxrkedKUrrSl8UyAHDcwX6BYhac/DepQi3rUpC61qU+N6lR72giP
429tlV2IhCKWMt61rSuta1vjetc63rXvI51BFotKlxZQNXELraxj51qUGjaiVs+s129TMf/innaYwZ2
430o6zs7LqmOZbNzjZboQ3cqwiX2uQOKZlnh21vr3XbOu22urcK7nVKu9zlPrcfzfxurrI7twe5hSf+
431DfCAC3z+4AQvuMEPjvCEK/zfxbD2obIDhldIfOIUr7jFL47xjGt84xzvuMTB4HBAYSYBCy+5yU+O
432coXfYtlddHe+pRpvos6b3tS2d3K7styXb3XfOtavzrka8/aKm+b0trl3lftzfbN8jS5Pek+DXr6Z
433Ez3MRncq0p0+VZ5v2udYjyrU6Sf1qUe56gjEd9epuvRf5svfKW+7299+8IY3NepXcQAg7o73vOt9
43473zvu9//DvjAC/7uDgi5nkYO98Qr3u0rt6qauX52n359gGEXe5DJnkSzR56mWmc25Ddf08kTceiW
435FzPmsah50Ds37cxsuuorKvopkr70Uj79LlP/+op2vuX+B+k0sn8P/OCbmtVzB/tV1NCG5Ct/+cxv
436vvOfD/3oS3/61E++Ggw/J2ELf/vcB76yHc/tg7D50uQvv/nrvOfiU/4qQui1+98P//jz2tHqv/1B
437BCDp8+t//+TPNPjb/Xm5d1GxJ0aVR3vvZXvIhHsCKFG7x3QByIBBhX1rAmYHiIATWCbpFoET5YBq
438B4EbGFEEOEwGaIHFlYAztIAg6Fasl035Ug9eAIMxKIMzSIM1aIM3iIM5qIM7CIOJgIFekh3rEABD
439SIRFaIRHiIRJqIRLyIRN6IRDuA4/aCWYMQE8aIVXiIVZuIP1wIKIs2QqKIH1J3sHMW4lCGAneEYp
440CIb+Hdh6HwiGDSWC0DR7ZghfaKg1GviGK/h//GZeeThRcWg0FUiHw2WHpqSGKsiGLeiGeQiItkSC
441g8hXhSgzeOiHieiF+bIF9qCJm8iJneiJnwiKoSiKo0iKpaiJgiCFTpIdrpACreiKrwiLsSiLs0iL
442tWiLt4iLregKqUgkZiEGpgiMwSiMw2iKW9CFgsMcX4ZcMsdedDdf0IVu0Bh+P7aMQudfzZh5h4RY
4430/hk1eiM1IiNqKeN0qhTvUAC54iO6aiO68iO7eiO7wiP8SiP7zgK3gh2ozCP+aiP+8iP/XiO9RiO
444t+ePA0mQBamPvUCO7wMAC8mQDemQDwmRESmRE0kokRVpkRYZkFN0kRvJkR3pkR/pkBmJgiBJkiVp
445kh6JXympkivJkm4TEAA7
Documentation/DocBook/media/nv12mt.gif.b64+0−37
@@ -1,37 +0,0 @@
1R0lGODlhFgFnAMZnAAAAAAYCAgAASAwFBQAAdEgAACQODkgASCoQEEgAdHQAADATEjUVFHQASDsX
2F3QAdE0eHVMhIABISABInEhIAIM0Mok2NI84Nk9PT5o9O5xIAHRInFlZWaxEQbhJRgB0v75LSLhQ
3TbRTUcBRTrBXVatcWsJWVKdfXW9vb6VhX0h0v8RcWZhpaJJubpBwb8ZiX8ZiYI5zc4t1dYd4eMhn
4Zb90AIN8fH9/f8pracpta8ttasxzcM51dM52dM53dc94dkic39F+fNOEgpmZmdWJh9ePjdiTkt+c
5SNuamd2gnt6lo3S//5y/nOCqqeKwr+S1tOa7uv+/dOjBwOrGxuzKye3KyuzMy5zf/7/fnO/S0fHX
61//fnPPd3fTe3vXj4vfo6Pnu7r////v09N////35+f//v///3///////////////////////////
7/////////////////////////////////////////////////////////////////////////yH+
8FE5WMTJNVCBtZW1vcnkgbGF5b3V0ACwAAAAAFgFnAAAH/oBngoOEhYaHiImKi4yNjo+QkZKTlJWW
9l5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGmkM3ysvMzc7P
100NHS0CjT1tfY19XZ3N3Y297h4sxDlQDj6OLn6ezZ6+3w0u/x9M0A5r/3vvq9/Lz+kQDqEpiLIC6D
11txAyUliLIS2HsyDKkniIIiyLrzC60tiKoyCPq0CqEpmKJCqQJk+lNLWyVEtSKPPJ3Ddz0stRN0Xl
12DLUTVEyaQPvVlNTzU1FPRzsl5fRTaNB/QwNGHTi1IL6nu5Zu0qqpKVSsVME+4pqJLCazl9Ba8oqp
13jAIA/gTCIOXkVsAVo52OAABgV6kmMxr2Cgbil9LLGh/OIJ6r6QgBLAfuMm48YYzPT1siF7a5qUyD
14u1HibtaUWfLoS55NT+a0+DSklqXPxK5EJkuhm7NdV8pMYW9i3YJsT8q99Wqm2MQn/cihZRBuzasv
15RenrdgnwM8uFQzpSOfrrTcihW5KyogiYM89VF9cUWq7i3+sRTVlB5Lyj6ngNd/58pn0mMUmY4ER6
16+R2nGWCEMbUIGQE2QUYj3Fnm3VibIPgeJ178kEFz4Imn4F8aEJbcWY18EcQLViziVoITOvLSFgXA
175R4iVvxg44045oijByAU0QMIQAYppJAwPHhIFILx/qUeieDFCIB1igjBg45U4nhBlVSaAEIQYiTi
182IzXLbTKF1mUaeaZaJr5RAc5aKeIFStw0RErVehARZp4mrlAnmlCscILU8yp3y5iILECBI7AKaeg
19q3DxQ5cuMgLgCg5uZBwuTpiAhBgQKZqRK45CKqYiftZ30aW1WEFDEF58xIinn4L6aCMIabHDDhye
20OqgtYgSRonOLwBqrrKImglAQUjyEalg0xjlRLKEuotayFIoliLC6whKtsVVFai222Wo7KyLT7kpU
21VeCGK26xhJTLmblZGZKuuutW1C2tUc1Lb7233TuqU9c6m9At2wJrLb68JEEGP/rG4u4iBaPnr7S8
22/ohhgsRnNOxwLgU/LJVh9YR8Qwsl3HCOCyHIIDI986yMjgwkzKBMyy63g1LN8JzAgskoq4wzOzT/
233E0MIIiQggM2CG0ztbW88MUZDAgc7y5aFlHBCDsk4ebA8NryxQsZd7DoV7oIQcQKBpyhRRM/jOCE
24VV3X8kQRcKYtCBnsNsQLFHSLPQjecL+bi9lxApCFEjuM0ASzuXwNtdSMf5yLlkQEAcIOSmzN9S5O
25A6Dxs3HPogUIOSBhRQATy1LEE/d8vq+3t5BhhH0YA6zLFELo47qlocNChhC/unowLRYzDLnevbvy
26e/DC265LEqgPsntITCsPvCEef4fV9CVVz8ry/vYOjzwh3KvkvSrgh+985AGPDbrgvl9PbuoRNev+
276wjHzzz29L8v7/G8g18r0sct8SkrEeXTyfkigaS9sIgRBCwge/bSlzBNAjAV/BACAXgIGAmmOxo8
28lybK8AC5TGdJh4igBAuhOUaUYQOWqQEIMVGb2jVGAh6iRA0N9iYOFmJE8RFhJ/CzIPn9qxDZoYR/
29NLEcBNClAUzIISWWw6FO+XAQQOzKAocjxUKoUBEImY+pIAEY+GhCCh0wT2OAkEVJkMc8EtGYB/cC
30pRBKjjVmTKER85fCBhlpEQ2c4SYGEKC3XWILCQhDGyUBIBNE4BG7O0IGtZg8SkRIEV+k2CJM/oSi
31R0gShWs5Q4aYY4kaiKiLlvDCBUjZCNcRMYh3zMSXFuEDHGAJS1e65Y20xKVGvPJNurTSjUbQox8N
326ZhAosEf3ZIkADxQXsHU0QWI6SNkIrNIKlJAHSkpwEvIUEKK6AKfxrmncZbJT4BSxBZUIIgTlsic
33ZyrnE1bQJkws8gxkgieaIEDPFkaiBlCapR21dxwn7UWQTErEpCqlCMBQEJRrKdQKnkAaVFKiUB2g
34aEEPCk5YEpRshygV7VwRAU3lbRaZQsIA+qc+kBLCVriKhaos0CpcqIpVNpxaNwNXCGTJoldWyJ5C
35fcVDl35Up0blKVJjyT6lNvUgW/TfUp+6jzkhJhWqBqxfJQ+4Pqd6FXZXrepUv8rHsWK1q2e1qlnF
36SlVbsKWt4wurW6O6saxKFa5gZCn+5mrXiijNZn8FWmDTEbTBuqMSHDDsODCgWHEwtrHeeCxkucGB
37Y1j2spjNrGY3y9nOevazoA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2uM3tLQIBADs=
Documentation/DocBook/media/nv12mt_example.gif.b64+0−121
@@ -1,121 +0,0 @@
1R0lGODlhoAHkAOe1AAAAAAAASAAAdEgAAEgASEgAdBgYGHQAABoaGnQASHQAdC0eHigoKEIlJEYm
2JS4uLlssKzY2NgBISFIyMQBInEBAQEhBQUhIAFBBQVhCQkhISF5DQ2NDQmdDQ3NEQ05OToNGRHhJ
3SJxIAItHRY9HRXRInJdIRlpaWppLSaJJRqpJR7BIRa5KR2NfX7JKR2BgYGxdXWleXmZfX31ZWXJc
4XHpaWQB0v29dXLZKSHhbWolXVpVUU5JVU55SUJhUUqdQTrpLSK9OTKRRT6FSULRNS7hMSrVNSr5L
5SL9MSr1OS7xQTsBRTrtTUL5WU7lYVsJWVEh0v7deW4pqab5dW8RcWbdgXrZjYcZgXnd3d8ZiX8Zi
6YL9lY7RoZshnZb90ALJubLFwb8prabBzccpta79wbsttaqx6ecxzcKt8e4aGhr93dc10cs51dM52
7dImJib97ec53dc94dqiEhKeHhkic39F+fKeKiaWPj9OEgqSSkb6PjtWJh5qamqGamqCcnNePjZ+f
8n9iTkr6amtiUktmVk9+cSL6enduamb+jo92gnr+pqd6lo7Ozs7+wsHS//7W1tZy/nOCqqbm5ub+4
9uOKwr+S1tL+/v9+/dOa7uv+/dOjBwOrGxuzKye3KyuzMy5zf/7/fnO/S0d/fnPHX1+Dg4P/fnPPd
103fTe3vXj4vfo6L//v+/v7/nu7r///9//v/v09N//39////35+f//v///3///////////////////
11////////////////////////////////////////////////////////////////////////////
12////////////////////////////////////////////////////////////////////////////
13////////////////////////////////////////////////////////////////////////////
14/////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBH
15SU1QACwAAAAAoAHkAAAI/gBrCRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJ
16sqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtapV
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
121XnvvxTdfffflt19//+03IAA7
Documentation/DocBook/media/pipeline.png.b64+0−213
@@ -1,213 +0,0 @@
1iVBORw0KGgoAAAANSUhEUgAAAlgAAAEcCAMAAAAsmToJAAAAAXNSR0IArs4c6QAAAwBQTFRFAAEA
2EAEBAwUBCgMBCAUKAgkMHQIDCwYXFQYDBgkVDwgFCAsHChASJwkDFA4NEg4TDhANHgwHDg8aExAG
3DBEjBBUZERMQCBNRDxU0ExcZFRgVFRcgCRkzHBcUDRdCNRELIxYTAx4mLBUMEBwcEhsiDxwhExsu
4Dh8XJRkQByAtDCMUHx4bACk0DSsiGScsFCRcJSUiGSZCDiwqGCg1LyQbIycpVhsPDy0wNyQVECxA
5PSIfCS84ADJCEStWRiIULSwpADdHCDkgEy1/BjorEjhADDhXCzZvITNPUysQDzs8MjIvCj04BT1O
6PDEoQjEhMDU3LzY9KTdFTTMYNzk2GD6PAEpfEUVjBExFCEpPB1ArK0FjKEVZYTscdDYXG0d5SkA5
7FEiJQUNAOURPAFhCA1RpP0ZJVEMvYUAyBFtRWkYnDlR+QEleAF1jkTojHlV1AGB4PlN5YU87cUws
8SVRXAGaBWVJKUlRRRVZlAG1PWFNSBGt5AmqVAG+NAHNpK17BWl9ifFs9KWmnSGZ0YGFfp1IuCnWj
9AHuKbWBXoVNAdGBPDniWAHujTWmLk14rAH+ch19XX2aRX2t8AIeLiWgvAIeeAIaqa21rOnehdW1m
10AImspWJYj2tLW3C0AIyvWXaNAo6xb3Z5dXZzent4WIKiQojAen+CkX1pcoSWcYDOoH9fp4E+Y4ur
11hoWCXIvGb4mut3xpqYNYnYdUO5rDyXxdjY6LYJqk0IRGb5azXZnMjJGUgJWqpJB8l5aUyJN4kKK1
12rZ6IYqzge6Xho6GdnaWpgqy6yZ9zvaR0hqzMk6rN5Jxxw6mF26lbq7C2pLTGwrCbs7Owvb+8zcGc
138rp42L2xsMbY3L+jtMfsz8W2nM/yx8jH0MfA7MWU78h/3crIyNTo4NLD6dK1z9bc1dbT3NXOv9vr
14/OKSwur8++Gw4uTh0ef78uPU+OPL3Ojz++bGyfH36evo/+3b6vT88vPw/feu1/v+//bb//nK/PnW
155f/+//ro+fv49/7///37//71//3//v/8sZeTnQAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAFY4AABWO
16AUTUBDsAAAAHdElNRQfaCRQPAiJBEFMLAAAgAElEQVR42u2dD3wU5bX300nWws50shA4lyTGikRE
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
Documentation/DocBook/media/selection.png.b64+0−206
@@ -1,206 +0,0 @@
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
177wiIAAAAAHn5oAgAAgLG1OKcKkI/KIgAAAAAehEUAAAAAPAiLAAAAAHgQFgEAAADwYIJrAAAAivq4
178frz9+7mJtre8/vm1SxN3z71ubl1bl5n6PUe2K3adW4/DWvsfPb5737PlmJrc/T2VRQAAABSzNHB/
179929bX3/W9u/ZzjO2/+gxOrrcrcve856alt8qlUUAAAAUsVb18zpoX3r9/d8+rh+L1Sdbq19itu91
180uXu28/73qapz9tiyjyWWneo9Z+xvb1QWAQAAkF3M7WGxAczSa3Pac9vbnu08M7RYu+3r8/b5eM3W
181dj/aFjmO8xnnUQuERQAAABSzNQhZen3Mv81VK6UOZPZu52i3Qe1p99zhmYqi79yGBgAAABFShjqf
182t88vy4sNsfZMon10H9fmYzozbMndHqMSFgEAANCleyBzDzS2VBWVmDfoXfVTrsqnFPv4/HevYRd9
183ERYBAABApBwhzlxodHRC59T7WGM4pIIoD2ERAAAAxWy9bWntaWdrnquL7v8dY2sIcXQ7n9d55oTd
184e7Z9yzHds2+520OF1HcmuAYAACC7mKdOzT1ZbG0enVqeHrZlO1sLKO5PQXv9s8WeY5b7ONdyHtVG
185ZREAAABFPM9zs6UqaOn1MQP8Ek/T2rOde+ZFamVC55T7lqo9SsxD1QuVRQAAABSz9RHzex9Jb7+O
186i7l1b8utc3uqkfa8p6blt+oyTdO0+U2XSwghhNvtpgUBgOyu12sIIYQd3RZKdix/9xGnRwdcXxEA
187zvbxux91+f3fMf0plUUAAAAAPJizCACA09yrxl7NVbBvef3za5cq4udeN7eurctM/Z4j2xW7ztT7
188eH/t2nGda//YZS7tz1q77DlmAL1SWQQAwCmWBvbv/m3r68/a/j3becb2x+5jDccixTLn9qXm9oc9
189Pq4fi38gRrHKopikvvQvG3vWs+fLxS8yfpEBAOb7DDH9taXX3//ter0u9pP29AvXtu91uXu2c6mP
190d6RftsWWdR89FiXsOWZ7zw+ojcmaSaFIZVGqXx5S/nqzd3v37r9fZAAA1sOGd3+/9votPz6msue2
191tz3bWWvgcsaxOLq81tof4EzZK4u2/mq05XVry1/7ZWPLLw4pvlBTbXcNHQS/yAAAOfoae19/u90W
192K5zvP3jN9V9S9lf2budaFXlpe6uacrRnquW11P4AZ8paWbT1V6PUy6/h1wO/yPjCBQD6kzNcWqrk
193fve61z9792duOTX05e7bkONHyL3tD9CzIreh5f6CWftlo9aORMntzn1Puy9XAKBmr2HDliqSEkHK
1947XYTWpx8fmh/gD9+1LhRZ06SfOQLodQEhEe+BN+VYKdc9mtbqCoCAHqVo5/zroJmy5QKqfclV9+x
195tr7snvYH6NmPkXe+9nCn1Q6T0AgAiO2LbekjrD3tLKav8lwtErvuPU/KPbKdc/2qVo5diW0+crtd
196D+0PkNtfNW7UvQz0tRz0zKdb7Nnu5+2v5YumxPbMlfECALz2tbY+DGTtCbO1PBxky3a21E86eiy2
197PiE4VT+9l/YHKKVIZdHR0s21JyDs/WWjhvmM/CIDAIzouX+3pSpo6fUxfbsSc2nu2c49fdaUUzds
198DWy27mOq45dif1K1P0DPslYWbf3VKPXya3uKQ6rt9osMANCDrQ/7qPmhJr3u17uK8b3bnGo/j94F
1990Op5BVDSZZqmafObLpdNH55rQcJrBcrWx83HLv/19ak+/Pc+Qn7rdqfc19flbA1+UuwLAGz9rt3R
200baFkx/J3H/F+lD59/wPA6T5+96Muv/87pj9VZM6iFGn93mXU8uQGv8gAAAAALShSWQQAcITKokY6
201liqLAKA6eyqLfmg2AADoj2kCANhLWAQAAB0SBgGwl7BohV9kAAAAgJEIi1YIgwAAAICRCIsAAMji
202Y6VCGwCo01+aAAAAAIA7lUUAACR10QQA0PZ3+TRN0+Y3XXQBAIDydnRbKNmx1EcEgC76UyqLAAAo
2031vkEAOq3KyzSEQAAAADokwmuAQAAAHgQFgEAAADwICwCAAAA4EFYBAAAAMCDsAgAAACAB2ERAAAA
204AA/CIgAAAAAehEUAAAAAPAiLAAAAAHgQFgEAAADwICwCAAAA4EFYBAAAAMCDsAgAAACAB2ERAAAA
205AA/CIgAAAAAehEUAAAAAPAiLAAAAAHgQFgEAAADwICwCAAAA4EFYBAAAAMCDsAgAAACAB2ERAAAA
206AA/CIgAAAAAe/g/10lQlA3JSSwAAAABJRU5ErkJggg==
Documentation/DocBook/media/typical_media_device.svg+0−28
@@ -1,28 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg stroke-linejoin="round" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" clip-path="url(#a)" xml:space="preserve" fill-rule="evenodd" height="178.78mm" viewBox="0 0 24285.662 17877.829" width="251.99mm" version="1.2" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" preserveAspectRatio="xMidYMid" stroke-width="28.222"><defs><clipPath id="a" clipPathUnits="userSpaceOnUse"><rect y="0" x="0" width="28000" height="21000"/></clipPath></defs><g transform="matrix(1.004 0 0 1 -2185.6 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#fcf" d="m12231 4800c-516 0-1031 515-1031 1031v4124c0 516 515 1032 1031 1032h8538c516 0 1032-516 1032-1032v-4124c0-516-516-1031-1032-1031h-8538z"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#ffc" d="m3595 15607c-293 0-585 292-585 585v2340c0 293 292 586 585 586h3275c293 0 586-293 586-586v-2340c0-293-293-585-586-585h-3275z"/></g><g transform="translate(-2197.3 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#e6e6e6" d="m2663 2186c-461 0-922 461-922 922v11169c0 461 461 923 922 923h3692c461 0 922-462 922-923v-11169c0-461-461-922-922-922h-3692z"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m4461 8602h-2260v-1086h4520v1086h-2260z"/><path fill="none" d="m4461 8602h-2260v-1086h4520v1086h-2260z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="8275" x="2579" class="TextPosition"><tspan fill="#000000">Audio decoder</tspan></tspan></tspan></text>
3</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m4461 11772h-2260v-1270h4520v1270h-2260z"/><path fill="none" d="m4461 11772h-2260v-1270h4520v1270h-2260z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="11353" x="2617" class="TextPosition"><tspan fill="#000000">Video decoder</tspan></tspan></tspan></text>
4</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m4453 10217h-2269v-1224h4537v1224h-2268z"/><path fill="none" d="m4453 10217h-2269v-1224h4537v1224h-2268z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="9821" x="2571" class="TextPosition"><tspan fill="#000000">Audio encoder</tspan></tspan></tspan></text>
5</g><g transform="translate(-2140.9 -2468.2)" class="com.sun.star.drawing.RectangleShape"><path fill="#cfc" d="m15711 12832h-3810v-1281h7620v1281h-3810z"/><path fill="none" d="m15711 12832h-3810v-1281h7620v1281h-3810z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="12407" x="12377" class="TextPosition"><tspan fill="#000000">Button Key/IR input logic</tspan></tspan></tspan></text>
6</g><g transform="translate(-2140.9 -2411.8)" class="com.sun.star.drawing.RectangleShape"><path fill="#cfe7f5" d="m14169 14572h-2268v-1412h4536v1412h-2268z"/><path fill="none" d="m14169 14572h-2268v-1412h4536v1412h-2268z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="14082" x="12882" class="TextPosition"><tspan fill="#000000">EEPROM</tspan></tspan></tspan></text>
7</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#fc9" d="m5140 17662h-1563v-1715h3126v1715h-1563z"/><path fill="none" d="m5140 17662h-1563v-1715h3126v1715h-1563z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="17020" x="4276" class="TextPosition"><tspan fill="#000000">Sensor</tspan></tspan></tspan></text>
8</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6719 8030 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z"/><path fill="none" d="m6719 8030 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6719 9612 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z"/><path fill="none" d="m6719 9612 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6721 11100 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m6721 11100 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2411.8)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9962 13854 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m9962 13854 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2468.2)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9962 12163 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m9962 12163 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9962 17158 670-353v176h2028v-176l671 353-671 354v-177h-2028v177l-670-354z"/><path fill="none" d="m9962 17158 670-353v176h2028v-176l671 353-671 354v-177h-2028v177l-670-354z" stroke="#3465af"/></g><g transform="matrix(0 .83339 -1.0005 0 30268 -5276.3)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m23229 12779 1009-978 1009 978h-505v2959h505l-1009 979-1009-979h504v-2959h-504z"/><path fill="none" d="m23229 12779 1009-978 1009 978h-505v2959h505l-1009 979-1009-979h504v-2959h-504z" stroke="#3465af"/></g><g transform="translate(-9973.6 -666.6)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="706px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="15832" x="24341" class="TextPosition" transform="matrix(0,-1,1,0,8509,40173)"><tspan fill="#000000">System Bus</tspan></tspan></tspan></text>
9</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#cff" d="m13151 9262h-1250v-875h2499v875h-1249z"/><path fill="none" d="m13151 9262h-1250v-875h2499v875h-1249z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="9040" x="12215" class="TextPosition"><tspan fill="#000000">Demux</tspan></tspan></tspan></text>
10</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9996 8765 373-357v178h1130v-178l374 357-374 358v-179h-1130v179l-373-358z"/><path fill="none" d="m9996 8765 373-357v178h1130v-178l374 357-374 358v-179h-1130v179l-373-358z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9996 7378 373-358v179h1130v-179l374 358-374 358v-179h-1130v179l-373-358z"/><path fill="none" d="m9996 7378 373-358v179h1130v-179l374 358-374 358v-179h-1130v179l-373-358z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#cff" d="m16322 7992h-4421v-1270h8841v1270h-4420z"/><path fill="none" d="m16322 7992h-4421v-1270h8841v1270h-4420z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="7573" x="12786" class="TextPosition"><tspan fill="#000000">Conditional Access Module</tspan></tspan></tspan></text>
11</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m4445 13287h-2269v-1224h4537v1224h-2268z"/><path fill="none" d="m4445 13287h-2269v-1224h4537v1224h-2268z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="12891" x="2601" class="TextPosition"><tspan fill="#000000">Video encoder</tspan></tspan></tspan></text>
12</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6721 12634 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m6721 12634 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m20791 7545 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m20791 7545 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2028 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="14478" x="1990" class="TextPosition"><tspan fill="#000000">Radio / Analog TV</tspan></tspan></tspan></text>
13</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="700" class="TextParagraph"><tspan y="10724" x="14956" class="TextPosition"><tspan fill="#000000">Digital TV</tspan></tspan></tspan></text>
14</g><g transform="translate(-8970.5 -1395.8)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="494px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="19167" x="14724" class="TextPosition"><tspan fill="#000000">PS.: picture is not complete: other blocks may be present</tspan></tspan></tspan></text>
15</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="18561" x="4199" class="TextPosition"><tspan fill="#000000">Webcam</tspan></tspan></tspan></text>
16</g><g transform="translate(-2140.9 -2468.2)" class="com.sun.star.drawing.RectangleShape"><path fill="#f90" d="m14552 16372h-2650v-1412h5299v1412h-2649z"/><path fill="none" d="m14552 16372h-2650v-1412h5299v1412h-2649z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="15882" x="12265" class="TextPosition"><tspan fill="#000000">Processing blocks</tspan></tspan></tspan></text>
17</g><g transform="translate(-2140.9 -2468.2)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9962 15654 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m9962 15654 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6702 16954 397-353v176h1201v-176l398 353-398 354v-177h-1201v177l-397-354z"/><path fill="none" d="m6702 16954 397-353v176h1201v-176l398 353-398 354v-177h-1201v177l-397-354z" stroke="#3465af"/></g><g transform="translate(-2479.5 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="8792" x="22850" class="TextPosition"><tspan fill="#000000">Smartcard</tspan></tspan></tspan></text>
18</g><g transform="matrix(1.0048 0 0 1 -2207.4 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#fcf" d="m2766 2600c-333 0-666 333-666 666v2668c0 333 333 666 666 666h18368c333 0 667-333 667-666v-2668c0-333-334-666-667-666h-18368z"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m5121 5155h-1614v-1816h3227v1816h-1613z"/><path fill="none" d="m5121 5155h-1614v-1816h3227v1816h-1613z" stroke="#3465af"/><text font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextShape"><tspan class="TextParagraph"><tspan y="4111" x="4374" class="TextPosition"><tspan fill="#000000">Tuner</tspan></tspan></tspan><tspan class="TextParagraph"><tspan y="4814" x="4151" class="TextPosition"><tspan fill="#000000">FM/TV</tspan></tspan></tspan></text>
19</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#ff8080" d="m2902 3702c0 111 40 202 88 202h530c48 0 89-91 89-202 0-110-41-202-89-202h-530c-48 0-88 92-88 202z"/><path fill="none" d="m2902 3702c0 111 40 202 88 202h530c48 0 89-91 89-202 0-110-41-202-89-202h-530c-48 0-88 92-88 202z" stroke="#3465af"/><path fill="#ffb3b3" d="m2902 3702c0 111 40 202 88 202s88-91 88-202c0-110-40-202-88-202s-88 92-88 202z"/><path fill="none" d="m2902 3702c0 111 40 202 88 202s88-91 88-202c0-110-40-202-88-202s-88 92-88 202z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#ff8080" d="m2903 4267c0 110 40 202 88 202h530c48 0 89-92 89-202s-41-203-89-203h-530c-48 0-88 93-88 203z"/><path fill="none" d="m2903 4267c0 110 40 202 88 202h530c48 0 89-92 89-202s-41-203-89-203h-530c-48 0-88 93-88 203z" stroke="#3465af"/><path fill="#ffb3b3" d="m2903 4267c0 110 40 202 88 202s88-92 88-202-40-203-88-203-88 93-88 203z"/><path fill="none" d="m2903 4267c0 110 40 202 88 202s88-92 88-202-40-203-88-203-88 93-88 203z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6719 4196 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z"/><path fill="none" d="m6719 4196 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9979 4150 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z"/><path fill="none" d="m9979 4150 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#cff" d="m16500 6189h-4500v-1389h9e3v1389h-4500z"/><path fill="none" d="m16500 6189h-4500v-1389h9e3v1389h-4500z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="5710" x="12051" class="TextPosition"><tspan fill="#000000">Satellite Equipment Control (SEC)</tspan></tspan></tspan></text>
20</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#cff" d="m13400 4600h-1400v-1e3h2800v1e3h-1400z"/><path fill="none" d="m13400 4600h-1400v-1e3h2800v1e3h-1400z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="4316" x="12465" class="TextPosition"><tspan fill="#000000">Demod</tspan></tspan></tspan></text>
21</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9979 5451 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z"/><path fill="none" d="m9979 5451 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z" stroke="#3465af"/></g><path fill="#ff9" d="m7855.1 9099v7302h-1270v-14605h1270v7303z"/><path fill="none" d="m7855.1 9099v7302h-1270v-14605h1270v7303z" stroke="#3465af"/><text y="-6640.4663" x="-20770.572" transform="rotate(-90)" class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="7409.5396" x="-11193.634" class="TextPosition" transform="matrix(0,-1,1,0,-4473,23627)"><tspan fill="#000000">I2C Bus (control bus)</tspan></tspan></tspan></text>
22<g transform="translate(-2197.3 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="3278" x="9391" class="TextPosition"><tspan fill="#000000">Digital TV Frontend</tspan></tspan></tspan></text>
23</g><g transform="matrix(1.015 0 0 .99994 -2233.3 -2185.7)" class="com.sun.star.drawing.CustomShape"><g stroke="#3465af" fill="none"><path d="m3e3 2800c-18 0-35 1-53 3"/><path d="m2915 2808c-17 3-35 7-52 12"/><path d="m2832 2830c-16 6-33 12-49 20"/><path d="m2754 2864c-15 8-31 17-46 27"/><path d="m2681 2909c-14 10-28 21-42 32"/><path d="m2614 2962c-13 12-26 24-38 37"/><path d="m2554 3023c-11 13-22 27-33 41"/><path d="m2502 3091c-10 14-19 29-28 45"/><path d="m2459 3164c-8 16-15 32-22 49"/><path d="m2426 3243c-5 17-10 34-14 51"/><path d="m2406 3326c-3 18-5 35-6 53"/><path d="m2400 3411v53"/><path d="m2400 3497v53"/><path d="m2400 3582v53"/><path d="m2400 3668v53"/><path d="m2400 3753v53"/><path d="m2400 3839v53"/><path d="m2400 3924v53"/><path d="m2400 4009v54"/><path d="m2400 4095v53"/><path d="m2400 4180v53"/><path d="m2400 4266v53"/><path d="m2400 4351v53"/><path d="m2400 4437v53"/><path d="m2400 4522v53"/><path d="m2400 4607v54"/><path d="m2400 4693v53"/><path d="m2400 4778v53"/><path d="m2400 4864v53"/><path d="m2400 4949v53"/><path d="m2400 5035v53"/><path d="m2400 5120v53"/><path d="m2400 5205v54"/><path d="m2400 5291v53"/><path d="m2400 5376v53"/><path d="m2400 5462v53"/><path d="m2400 5547v53"/><path d="m2400 5633v53"/><path d="m2400 5718v53"/><path d="m2400 5803c0 18 1 36 3 53"/><path d="m2408 5888c4 18 8 35 13 52"/><path d="m2431 5971c6 16 13 33 20 49"/><path d="m2466 6049c8 15 17 31 27 46"/><path d="m2511 6122c10 14 21 28 32 42"/><path d="m2564 6188c12 13 25 26 38 38"/><path d="m2626 6248c13 11 27 23 41 33"/><path d="m2694 6300c14 10 29 19 45 27"/><path d="m2768 6343c15 7 32 15 48 21"/><path d="m2847 6375c17 5 34 10 51 14"/><path d="m2930 6395c17 2 35 4 53 5"/><path d="m3015 6400h53"/><path d="m3100 6400h53"/><path d="m3186 6400h53"/><path d="m3271 6400h53"/><path d="m3357 6400h53"/><path d="m3442 6400h53"/><path d="m3527 6400h54"/><path d="m3613 6400h53"/><path d="m3698 6400h53"/><path d="m3784 6400h53"/><path d="m3869 6400h53"/><path d="m3955 6400h53"/><path d="m4040 6400h53"/><path d="m4125 6400h54"/><path d="m4211 6400h53"/><path d="m4296 6400h53"/><path d="m4382 6400h53"/><path d="m4467 6400h53"/><path d="m4553 6400h53"/><path d="m4638 6400h53"/><path d="m4723 6400h54"/><path d="m4809 6400h53"/><path d="m4894 6400h53"/><path d="m4980 6400h53"/><path d="m5065 6400h53"/><path d="m5151 6400h53"/><path d="m5236 6400h53"/><path d="m5322 6400h53"/><path d="m5407 6400h53"/><path d="m5492 6400h53"/><path d="m5578 6400h53"/><path d="m5663 6400h53"/><path d="m5749 6400h53"/><path d="m5834 6400h53"/><path d="m5920 6400h53"/><path d="m6005 6400h53"/><path d="m6090 6400h53"/><path d="m6176 6400h53"/><path d="m6261 6400h53"/><path d="m6347 6400h53"/><path d="m6432 6400h53"/><path d="m6518 6400h53"/><path d="m6603 6400h53"/><path d="m6688 6400h54"/><path d="m6774 6400h53"/><path d="m6859 6400h53"/><path d="m6945 6400h53"/><path d="m7030 6400h53"/><path d="m7116 6400h53"/><path d="m7201 6400h53"/><path d="m7286 6400h54"/><path d="m7372 6400h53"/><path d="m7457 6400h53"/><path d="m7543 6400h53"/><path d="m7628 6400h53"/><path d="m7714 6400h53"/><path d="m7799 6400h53"/><path d="m7884 6400h54"/><path d="m7970 6400h53"/><path d="m8055 6400h53"/><path d="m8141 6400h53"/><path d="m8226 6400h53"/><path d="m8312 6400h53"/><path d="m8397 6400h53"/><path d="m8482 6400h54"/><path d="m8568 6400h53"/><path d="m8653 6400h53"/><path d="m8739 6400h53"/><path d="m8824 6400h53"/><path d="m8910 6400h53"/><path d="m8995 6400h53"/><path d="m9081 6400h53"/><path d="m9166 6400h53"/><path d="m9251 6400h53"/><path d="m9337 6400h53"/><path d="m9422 6400h53"/><path d="m9508 6400h53"/><path d="m9593 6400h53"/><path d="m9679 6400h53"/><path d="m9764 6400h53"/><path d="m9849 6400h53"/><path d="m9935 6400h53"/><path d="m10020 6400h53"/><path d="m10106 6400h53"/><path d="m10191 6400h53"/><path d="m10277 6400h53"/><path d="m10362 6400h53"/><path d="m10447 6400h53"/><path d="m10533 6400h53"/><path d="m10618 6400h53"/><path d="m10704 6400h53"/><path d="m10789 6400h53"/><path d="m10875 6400h53"/><path d="m10960 6400h53"/><path d="m11045 6400h54"/><path d="m11131 6400h53"/><path d="m11216 6400h53"/><path d="m11302 6400h53"/><path d="m11387 6400h53"/><path d="m11473 6400h53"/><path d="m11558 6400h53"/><path d="m11643 6400h54"/><path d="m11729 6400h53"/><path d="m11814 6400h53"/><path d="m11900 6400h53"/><path d="m11985 6400h53"/><path d="m12071 6400h53"/><path d="m12156 6400h53"/><path d="m12241 6400h54"/><path d="m12327 6400h53"/><path d="m12412 6400h53"/><path d="m12498 6400h53"/><path d="m12583 6400h53"/><path d="m12669 6400h53"/><path d="m12754 6400h53"/><path d="m12839 6400h54"/><path d="m12925 6400h53"/><path d="m13010 6400h53"/><path d="m13096 6400h53"/><path d="m13181 6400h53"/><path d="m13267 6400h53"/><path d="m13352 6400h53"/><path d="m13438 6400h53"/><path d="m13523 6400h53"/><path d="m13608 6400h53"/><path d="m13694 6400h53"/><path d="m13779 6400h53"/><path d="m13865 6400h53"/><path d="m13950 6400h53"/><path d="m14036 6400h53"/><path d="m14121 6400h53"/><path d="m14206 6400h53"/><path d="m14292 6400h53"/><path d="m14377 6400h53"/><path d="m14463 6400h53"/><path d="m14548 6400h53"/><path d="m14634 6400h53"/><path d="m14719 6400h53"/><path d="m14804 6400h54"/><path d="m14890 6400h53"/><path d="m14975 6400h53"/><path d="m15061 6400h53"/><path d="m15146 6400h53"/><path d="m15232 6400h53"/><path d="m15317 6400h53"/><path d="m15402 6400h54"/><path d="m15488 6400h53"/><path d="m15573 6400h53"/><path d="m15659 6400h53"/><path d="m15744 6400h53"/><path d="m15830 6400h53"/><path d="m15915 6400h53"/><path d="m16000 6400h54"/><path d="m16086 6400h53"/><path d="m16171 6400h53"/><path d="m16257 6400h53"/><path d="m16342 6400h53"/><path d="m16428 6400h53"/><path d="m16513 6400h53"/><path d="m16598 6400h54"/><path d="m16684 6400h53"/><path d="m16769 6400h53"/><path d="m16855 6400h53"/><path d="m16940 6400h53"/><path d="m17026 6400h53"/><path d="m17111 6400h53"/><path d="m17196 6400h54"/><path d="m17282 6400h53"/><path d="m17367 6400h53"/><path d="m17453 6400h53"/><path d="m17538 6400h53"/><path d="m17624 6400h53"/><path d="m17709 6400h53"/><path d="m17795 6400h53"/><path d="m17880 6400h53"/><path d="m17965 6400h53"/><path d="m18051 6400h53"/><path d="m18136 6400h53"/><path d="m18222 6400h53"/><path d="m18307 6400h53"/><path d="m18393 6400h53"/><path d="m18478 6400h53"/><path d="m18563 6400h53"/><path d="m18649 6400h53"/><path d="m18734 6400h53"/><path d="m18820 6400h53"/><path d="m18905 6400h53"/><path d="m18991 6400h53"/><path d="m19076 6400h53"/><path d="m19161 6400h54"/><path d="m19247 6400h53"/><path d="m19332 6400h53"/><path d="m19418 6400h53"/><path d="m19503 6400h53"/><path d="m19589 6400h53"/><path d="m19674 6400h53"/><path d="m19759 6400h54"/><path d="m19845 6400h53"/><path d="m19930 6400h53"/><path d="m20016 6400h53"/><path d="m20101 6400h53"/><path d="m20187 6400h53"/><path d="m20272 6400h53"/><path d="m20357 6400h54"/><path d="m20443 6400h53"/><path d="m20528 6400h53"/><path d="m20614 6400c17-1 35-2 53-5"/><path d="m20699 6390c17-4 34-9 51-14"/><path d="m20781 6365c16-6 32-13 48-21"/><path d="m20858 6329c15-8 31-17 45-27"/><path d="m20930 6283c14-10 28-21 42-32"/><path d="m20996 6229c13-12 25-25 37-38"/><path d="m21055 6167c11-14 22-28 33-42"/><path d="m21106 6098c10-15 19-30 27-45"/><path d="m21148 6024c7-16 14-33 20-49"/><path d="m21179 5944c5-17 9-34 13-51"/><path d="m21197 5861c2-18 4-35 4-53"/><path d="m21201 5776v-54"/><path d="m21201 5690v-53"/><path d="m21201 5605v-53"/><path d="m21201 5519v-53"/><path d="m21201 5434v-53"/><path d="m21201 5348v-53"/><path d="m21201 5263v-53"/><path d="m21201 5178v-54"/><path d="m21201 5092v-53"/><path d="m21201 5007v-53"/><path d="m21201 4921v-53"/><path d="m21201 4836v-53"/><path d="m21201 4750v-53"/><path d="m21201 4665v-53"/><path d="m21201 4579v-53"/><path d="m21201 4494v-53"/><path d="m21201 4409v-53"/><path d="m21201 4323v-53"/><path d="m21201 4238v-53"/><path d="m21201 4152v-53"/><path d="m21201 4067v-53"/><path d="m21201 3981v-53"/><path d="m21201 3896v-53"/><path d="m21201 3811v-53"/><path d="m21201 3725v-53"/><path d="m21201 3640v-53"/><path d="m21201 3554v-53"/><path d="m21201 3469v-53"/><path d="m21201 3383c-1-17-3-35-5-52"/><path d="m21190 3299c-4-17-8-35-14-51"/><path d="m21165 3217c-6-16-13-33-21-49"/><path d="m21129 3140c-9-16-18-31-28-46"/><path d="m21082 3068c-10-14-21-28-33-42"/><path d="m21027 3002c-12-13-24-25-37-37"/><path d="m20965 2944c-14-12-28-22-42-33"/><path d="m20896 2893c-15-9-30-18-46-27"/><path d="m20821 2852c-16-8-32-14-49-20"/><path d="m20741 2821c-17-5-34-9-51-12"/><path d="m20658 2804c-18-3-35-4-53-4"/><path d="m20573 2800h-53"/><path d="m20487 2800h-53"/><path d="m20402 2800h-53"/><path d="m20316 2800h-53"/><path d="m20231 2800h-53"/><path d="m20146 2800h-54"/><path d="m20060 2800h-53"/><path d="m19975 2800h-53"/><path d="m19889 2800h-53"/><path d="m19804 2800h-53"/><path d="m19718 2800h-53"/><path d="m19633 2800h-53"/><path d="m19548 2800h-54"/><path d="m19462 2800h-53"/><path d="m19377 2800h-53"/><path d="m19291 2800h-53"/><path d="m19206 2800h-53"/><path d="m19120 2800h-53"/><path d="m19035 2800h-53"/><path d="m18950 2800h-54"/><path d="m18864 2800h-53"/><path d="m18779 2800h-53"/><path d="m18693 2800h-53"/><path d="m18608 2800h-53"/><path d="m18522 2800h-53"/><path d="m18437 2800h-53"/><path d="m18352 2800h-54"/><path d="m18266 2800h-53"/><path d="m18181 2800h-53"/><path d="m18095 2800h-53"/><path d="m18010 2800h-53"/><path d="m17924 2800h-53"/><path d="m17839 2800h-53"/><path d="m17753 2800h-53"/><path d="m17668 2800h-53"/><path d="m17583 2800h-53"/><path d="m17497 2800h-53"/><path d="m17412 2800h-53"/><path d="m17326 2800h-53"/><path d="m17241 2800h-53"/><path d="m17155 2800h-53"/><path d="m17070 2800h-53"/><path d="m16985 2800h-53"/><path d="m16899 2800h-53"/><path d="m16814 2800h-53"/><path d="m16728 2800h-53"/><path d="m16643 2800h-53"/><path d="m16557 2800h-53"/><path d="m16472 2800h-53"/><path d="m16387 2800h-54"/><path d="m16301 2800h-53"/><path d="m16216 2800h-53"/><path d="m16130 2800h-53"/><path d="m16045 2800h-53"/><path d="m15959 2800h-53"/><path d="m15874 2800h-53"/><path d="m15789 2800h-54"/><path d="m15703 2800h-53"/><path d="m15618 2800h-53"/><path d="m15532 2800h-53"/><path d="m15447 2800h-53"/><path d="m15361 2800h-53"/><path d="m15276 2800h-53"/><path d="m15191 2800h-54"/><path d="m15105 2800h-53"/><path d="m15020 2800h-53"/><path d="m14934 2800h-53"/><path d="m14849 2800h-53"/><path d="m14763 2800h-53"/><path d="m14678 2800h-53"/><path d="m14593 2800h-54"/><path d="m14507 2800h-53"/><path d="m14422 2800h-53"/><path d="m14336 2800h-53"/><path d="m14251 2800h-53"/><path d="m14165 2800h-53"/><path d="m14080 2800h-53"/><path d="m13994 2800h-53"/><path d="m13909 2800h-53"/><path d="m13824 2800h-53"/><path d="m13738 2800h-53"/><path d="m13653 2800h-53"/><path d="m13567 2800h-53"/><path d="m13482 2800h-53"/><path d="m13396 2800h-53"/><path d="m13311 2800h-53"/><path d="m13226 2800h-53"/><path d="m13140 2800h-53"/><path d="m13055 2800h-53"/><path d="m12969 2800h-53"/><path d="m12884 2800h-53"/><path d="m12798 2800h-53"/><path d="m12713 2800h-53"/><path d="m12628 2800h-53"/><path d="m12542 2800h-53"/><path d="m12457 2800h-53"/><path d="m12371 2800h-53"/><path d="m12286 2800h-53"/><path d="m12200 2800h-53"/><path d="m12115 2800h-53"/><path d="m12030 2800h-54"/><path d="m11944 2800h-53"/><path d="m11859 2800h-53"/><path d="m11773 2800h-53"/><path d="m11688 2800h-53"/><path d="m11602 2800h-53"/><path d="m11517 2800h-53"/><path d="m11432 2800h-54"/><path d="m11346 2800h-53"/><path d="m11261 2800h-53"/><path d="m11175 2800h-53"/><path d="m11090 2800h-53"/><path d="m11004 2800h-53"/><path d="m10919 2800h-53"/><path d="m10834 2800h-54"/><path d="m10748 2800h-53"/><path d="m10663 2800h-53"/><path d="m10577 2800h-53"/><path d="m10492 2800h-53"/><path d="m10406 2800h-53"/><path d="m10321 2800h-53"/><path d="m10236 2800h-54"/><path d="m10150 2800h-53"/><path d="m10065 2800h-53"/><path d="m9979 2800h-53"/><path d="m9894 2800h-53"/><path d="m9808 2800h-53"/><path d="m9723 2800h-53"/><path d="m9637 2800h-53"/><path d="m9552 2800h-53"/><path d="m9467 2800h-53"/><path d="m9381 2800h-53"/><path d="m9296 2800h-53"/><path d="m9210 2800h-53"/><path d="m9125 2800h-53"/><path d="m9039 2800h-53"/><path d="m8954 2800h-53"/><path d="m8869 2800h-53"/><path d="m8783 2800h-53"/><path d="m8698 2800h-53"/><path d="m8612 2800h-53"/><path d="m8527 2800h-53"/><path d="m8441 2800h-53"/><path d="m8356 2800h-53"/><path d="m8271 2800h-54"/><path d="m8185 2800h-53"/><path d="m8100 2800h-53"/><path d="m8014 2800h-53"/><path d="m7929 2800h-53"/><path d="m7843 2800h-53"/><path d="m7758 2800h-53"/><path d="m7673 2800h-54"/><path d="m7587 2800h-53"/><path d="m7502 2800h-53"/><path d="m7416 2800h-53"/><path d="m7331 2800h-53"/><path d="m7245 2800h-53"/><path d="m7160 2800h-53"/><path d="m7075 2800h-54"/><path d="m6989 2800h-53"/><path d="m6904 2800h-53"/><path d="m6818 2800h-53"/><path d="m6733 2800h-53"/><path d="m6647 2800h-53"/><path d="m6562 2800h-53"/><path d="m6477 2800h-54"/><path d="m6391 2800h-53"/><path d="m6306 2800h-53"/><path d="m6220 2800h-53"/><path d="m6135 2800h-53"/><path d="m6049 2800h-53"/><path d="m5964 2800h-53"/><path d="m5879 2800h-54"/><path d="m5793 2800h-53"/><path d="m5708 2800h-53"/><path d="m5622 2800h-53"/><path d="m5537 2800h-53"/><path d="m5451 2800h-53"/><path d="m5366 2800h-53"/><path d="m5280 2800h-53"/><path d="m5195 2800h-53"/><path d="m5110 2800h-53"/><path d="m5024 2800h-53"/><path d="m4939 2800h-53"/><path d="m4853 2800h-53"/><path d="m4768 2800h-53"/><path d="m4682 2800h-53"/><path d="m4597 2800h-53"/><path d="m4512 2800h-53"/><path d="m4426 2800h-53"/><path d="m4341 2800h-53"/><path d="m4255 2800h-53"/><path d="m4170 2800h-53"/><path d="m4084 2800h-53"/><path d="m3999 2800h-53"/><path d="m3914 2800h-54"/><path d="m3828 2800h-53"/><path d="m3743 2800h-53"/><path d="m3657 2800h-53"/><path d="m3572 2800h-53"/><path d="m3486 2800h-53"/><path d="m3401 2800h-53"/><path d="m3316 2800h-54"/><path d="m3230 2800h-53"/><path d="m3145 2800h-53"/><path d="m3059 2800h-53"/></g></g><g transform="translate(-2197.3 -2186)"><rect height="1100.7" width="1213.6" y="6917.1" x="23255" fill="#f3e777"/><path fill="#ca4677" d="m22802 7700.4v-405.46l150.7-169.16c82.886-93.039 170.53-186.62 194.77-207.96l44.069-38.798 783.23-0.086 783.23-0.086v613.5 613.5h-978-978v-405.46zm1027.7 136.98v-78.372l-169.91 4.925-169.91 4.9249-5.09 45.854c-8.249 74.303 46.711 101.04 207.69 101.04h137.21v-78.372zm235.86-262.94 4.495-341.31 207.2-8.6408 207.2-8.6408 5.144-46.443c9.596-86.615-41.863-102.05-322.02-96.607l-246.71 4.7956-4.438 419.08-4.439 419.08h74.537 74.538l4.494-341.31zm391.3 313.72c26.41-19.286 36.255-41.399 32.697-73.447l-5.09-45.854h-174.05-174.05l-5.38 48.984c-9.97 90.771 0.993 97.91 150.36 97.91 99.305 0 148.27-7.6982 175.52-27.594zm-627.16-274.84v-77.768h-174.05-174.05v66.246c0 36.436 4.973 71.431 11.051 77.768 6.078 6.3366 84.401 11.521 174.05 11.521h163v-77.768zm659.89-4.9154 5.125-74.042-179.18 4.9155-179.18 4.9155-5.38 48.984c-10.473 95.348-2.259 99.57 183.28 94.197l170.2-4.9284 5.125-74.042zm-659.89-237.63v-78.372l-169.91 4.925-169.91 4.925-5.097 73.447-5.097 73.447h175 175v-78.372zm659.86 4.925-5.097-73.447h-174.05-174.05l-5.38 48.984c-10.289 93.673-2.146 97.91 188.15 97.91h175.52l-5.097-73.447zm-659.86-228.98v-77.768h-137.21c-97.358 0-147.91 7.8138-174.05 26.902-34.952 25.523-49.645 92.242-25.79 117.11 6.078 6.3366 84.401 11.521 174.05 11.521h163v-77.768z"/></g><g transform="matrix(.84874 0 0 .76147 2408.1 3615.3)"><rect height="3076.2" width="2734.3" y="13264" x="19249" fill="#6076b3"/><g stroke-linejoin="round" fill-rule="evenodd" stroke-width="28.222" fill="#e0ee2c"><rect y="13369" width="356.65" x="18937" height="180.95"/><rect y="13708" width="356.65" x="18937" height="180.95"/><rect y="14048" width="356.65" x="18937" height="180.95"/><rect y="14387" width="356.65" x="18937" height="180.95"/><rect y="14726" width="356.65" x="18937" height="180.95"/><rect y="15066" width="356.65" x="18937" height="180.95"/><rect y="15405" width="356.65" x="18937" height="180.95"/><rect y="15744" width="356.65" x="18937" height="180.95"/><rect y="16083" width="356.65" x="18937" height="180.95"/><rect y="13324" width="356.65" x="21939" height="180.95"/><rect y="13663" width="356.65" x="21939" height="180.95"/><rect y="14002" width="356.65" x="21939" height="180.95"/><rect y="14342" width="356.65" x="21939" height="180.95"/><rect y="14681" width="356.65" x="21939" height="180.95"/><rect y="15020" width="356.65" x="21939" height="180.95"/><rect y="15360" width="356.65" x="21939" height="180.95"/><rect y="15699" width="356.65" x="21939" height="180.95"/><rect y="16038" width="356.65" x="21939" height="180.95"/></g><g stroke-linejoin="round" fill-rule="evenodd" transform="matrix(.98702 0 0 .90336 -2675 7020.8)" class="com.sun.star.drawing.TextShape" stroke-width="28.222"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"/></text>
24<text style="word-spacing:0px;letter-spacing:0px" xml:space="preserve" font-size="1128.9px" y="9042.0264" x="22439.668" font-family="Sans" line-height="125%" fill="#000000"><tspan y="9042.0264" x="22439.668">CPU</tspan></text>
25</g></g><g stroke-linejoin="round" fill-rule="evenodd" transform="translate(-11752 543.6)" class="com.sun.star.drawing.TextShape" stroke-width="28.222"><text class="TextShape"><tspan font-size="706px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="15832" x="24341" class="TextPosition" transform="matrix(0,-1,1,0,8509,40173)"><tspan fill="#000000">PCI, USB, SPI, I2C, ...</tspan></tspan></tspan></text>
26</g><g stroke-linejoin="round" fill-rule="evenodd" transform="translate(-655.31 963.83)" class="com.sun.star.drawing.RectangleShape" stroke-width="28.222"><g transform="matrix(.49166 0 0 1.0059 6045.6 -82.24)"><path fill="#cfe7f5" d="m14169 14572h-2268v-1412h4536v1412h-2268z"/><path fill="none" d="m14169 14572h-2268v-1412h4536v1412h-2268z" stroke="#3465af"/></g><text y="-395.11282" x="-790.22229" class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="13686.9" x="12091.779" class="TextPosition"><tspan fill="#000000">Bridge</tspan></tspan></tspan></text>
27<text y="338.66486" x="-846.66675" class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="14420.677" x="12035.335" class="TextPosition"><tspan fill="#000000"> DMA</tspan></tspan></tspan></text>
28</g></svg>
Documentation/DocBook/media/v4l/.gitignore+0−1
@@ -1 +0,0 @@
1!*.xml
Documentation/DocBook/media/v4l/biblio.xml+0−381
@@ -1,381 +0,0 @@
1 <bibliography>
2 <title>References</title>
3
4 <biblioentry id="cea608">
5 <abbrev>CEA&nbsp;608-E</abbrev>
6 <authorgroup>
7 <corpauthor>Consumer Electronics Association (<ulink
8url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
9 </authorgroup>
10 <title>CEA-608-E R-2014 "Line 21 Data Services"</title>
11 </biblioentry>
12
13 <biblioentry id="en300294">
14 <abbrev>EN&nbsp;300&nbsp;294</abbrev>
15 <authorgroup>
16 <corpauthor>European Telecommunication Standards Institute
17(<ulink url="http://www.etsi.org">http://www.etsi.org</ulink>)</corpauthor>
18 </authorgroup>
19 <title>EN 300 294 "625-line television Wide Screen Signalling
20(WSS)"</title>
21 </biblioentry>
22
23 <biblioentry id="ets300231">
24 <abbrev>ETS&nbsp;300&nbsp;231</abbrev>
25 <authorgroup>
26 <corpauthor>European Telecommunication Standards Institute
27(<ulink
28url="http://www.etsi.org">http://www.etsi.org</ulink>)</corpauthor>
29 </authorgroup>
30 <title>ETS 300 231 "Specification of the domestic video
31Programme Delivery Control system (PDC)"</title>
32 </biblioentry>
33
34 <biblioentry id="ets300706">
35 <abbrev>ETS&nbsp;300&nbsp;706</abbrev>
36 <authorgroup>
37 <corpauthor>European Telecommunication Standards Institute
38(<ulink url="http://www.etsi.org">http://www.etsi.org</ulink>)</corpauthor>
39 </authorgroup>
40 <title>ETS 300 706 "Enhanced Teletext specification"</title>
41 </biblioentry>
42
43 <biblioentry id="mpeg2part1">
44 <abbrev>ISO&nbsp;13818-1</abbrev>
45 <authorgroup>
46 <corpauthor>International Telecommunication Union (<ulink
47url="http://www.itu.ch">http://www.itu.ch</ulink>), International
48Organisation for Standardisation (<ulink
49url="http://www.iso.ch">http://www.iso.ch</ulink>)</corpauthor>
50 </authorgroup>
51 <title>ITU-T Rec. H.222.0 | ISO/IEC 13818-1 "Information
52technology &mdash; Generic coding of moving pictures and associated
53audio information: Systems"</title>
54 </biblioentry>
55
56 <biblioentry id="mpeg2part2">
57 <abbrev>ISO&nbsp;13818-2</abbrev>
58 <authorgroup>
59 <corpauthor>International Telecommunication Union (<ulink
60url="http://www.itu.ch">http://www.itu.ch</ulink>), International
61Organisation for Standardisation (<ulink
62url="http://www.iso.ch">http://www.iso.ch</ulink>)</corpauthor>
63 </authorgroup>
64 <title>ITU-T Rec. H.262 | ISO/IEC 13818-2 "Information
65technology &mdash; Generic coding of moving pictures and associated
66audio information: Video"</title>
67 </biblioentry>
68
69 <biblioentry id="itu470">
70 <abbrev>ITU&nbsp;BT.470</abbrev>
71 <authorgroup>
72 <corpauthor>International Telecommunication Union (<ulink
73url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
74 </authorgroup>
75 <title>ITU-R Recommendation BT.470-6 "Conventional Television
76Systems"</title>
77 </biblioentry>
78
79 <biblioentry id="itu601">
80 <abbrev>ITU&nbsp;BT.601</abbrev>
81 <authorgroup>
82 <corpauthor>International Telecommunication Union (<ulink
83url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
84 </authorgroup>
85 <title>ITU-R Recommendation BT.601-5 "Studio Encoding Parameters
86of Digital Television for Standard 4:3 and Wide-Screen 16:9 Aspect
87Ratios"</title>
88 </biblioentry>
89
90 <biblioentry id="itu653">
91 <abbrev>ITU&nbsp;BT.653</abbrev>
92 <authorgroup>
93 <corpauthor>International Telecommunication Union (<ulink
94url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
95 </authorgroup>
96 <title>ITU-R Recommendation BT.653-3 "Teletext systems"</title>
97 </biblioentry>
98
99 <biblioentry id="itu709">
100 <abbrev>ITU&nbsp;BT.709</abbrev>
101 <authorgroup>
102 <corpauthor>International Telecommunication Union (<ulink
103url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
104 </authorgroup>
105 <title>ITU-R Recommendation BT.709-5 "Parameter values for the
106HDTV standards for production and international programme
107exchange"</title>
108 </biblioentry>
109
110 <biblioentry id="itu1119">
111 <abbrev>ITU&nbsp;BT.1119</abbrev>
112 <authorgroup>
113 <corpauthor>International Telecommunication Union (<ulink
114url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
115 </authorgroup>
116 <title>ITU-R Recommendation BT.1119 "625-line
117television Wide Screen Signalling (WSS)"</title>
118 </biblioentry>
119
120 <biblioentry id="jfif">
121 <abbrev>JFIF</abbrev>
122 <authorgroup>
123 <corpauthor>Independent JPEG Group (<ulink
124url="http://www.ijg.org">http://www.ijg.org</ulink>)</corpauthor>
125 </authorgroup>
126 <title>JPEG File Interchange Format</title>
127 <subtitle>Version 1.02</subtitle>
128 </biblioentry>
129
130 <biblioentry id="itu-t81">
131 <abbrev>ITU-T.81</abbrev>
132 <authorgroup>
133 <corpauthor>International Telecommunication Union
134(<ulink url="http://www.itu.int">http://www.itu.int</ulink>)</corpauthor>
135 </authorgroup>
136 <title>ITU-T Recommendation T.81
137"Information Technology &mdash; Digital Compression and Coding of Continous-Tone
138Still Images &mdash; Requirements and Guidelines"</title>
139 </biblioentry>
140
141 <biblioentry id="w3c-jpeg-jfif">
142 <abbrev>W3C JPEG JFIF</abbrev>
143 <authorgroup>
144 <corpauthor>The World Wide Web Consortium (<ulink
145url="http://www.w3.org/Graphics/JPEG">http://www.w3.org</ulink>)</corpauthor>
146 </authorgroup>
147 <title>JPEG JFIF</title>
148 </biblioentry>
149
150 <biblioentry id="smpte12m">
151 <abbrev>SMPTE&nbsp;12M</abbrev>
152 <authorgroup>
153 <corpauthor>Society of Motion Picture and Television Engineers
154(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
155 </authorgroup>
156 <title>SMPTE 12M-1999 "Television, Audio and Film - Time and
157Control Code"</title>
158 </biblioentry>
159
160 <biblioentry id="smpte170m">
161 <abbrev>SMPTE&nbsp;170M</abbrev>
162 <authorgroup>
163 <corpauthor>Society of Motion Picture and Television Engineers
164(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
165 </authorgroup>
166 <title>SMPTE 170M-1999 "Television - Composite Analog Video
167Signal - NTSC for Studio Applications"</title>
168 </biblioentry>
169
170 <biblioentry id="smpte240m">
171 <abbrev>SMPTE&nbsp;240M</abbrev>
172 <authorgroup>
173 <corpauthor>Society of Motion Picture and Television Engineers
174(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
175 </authorgroup>
176 <title>SMPTE 240M-1999 "Television - Signal Parameters -
1771125-Line High-Definition Production"</title>
178 </biblioentry>
179
180 <biblioentry id="smpte431">
181 <abbrev>SMPTE&nbsp;RP&nbsp;431-2</abbrev>
182 <authorgroup>
183 <corpauthor>Society of Motion Picture and Television Engineers
184(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
185 </authorgroup>
186 <title>SMPTE RP 431-2:2011 "D-Cinema Quality - Reference Projector and Environment"</title>
187 </biblioentry>
188
189 <biblioentry id="smpte2084">
190 <abbrev>SMPTE&nbsp;ST&nbsp;2084</abbrev>
191 <authorgroup>
192 <corpauthor>Society of Motion Picture and Television Engineers
193(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
194 </authorgroup>
195 <title>SMPTE ST 2084:2014 "High Dynamic Range Electro-Optical Transfer Function of Master Reference Displays"</title>
196 </biblioentry>
197
198 <biblioentry id="srgb">
199 <abbrev>sRGB</abbrev>
200 <authorgroup>
201 <corpauthor>International Electrotechnical Commission
202(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
203 </authorgroup>
204 <title>IEC 61966-2-1 ed1.0 "Multimedia systems and equipment - Colour measurement
205and management - Part 2-1: Colour management - Default RGB colour space - sRGB"</title>
206 </biblioentry>
207
208 <biblioentry id="sycc">
209 <abbrev>sYCC</abbrev>
210 <authorgroup>
211 <corpauthor>International Electrotechnical Commission
212(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
213 </authorgroup>
214 <title>IEC 61966-2-1-am1 ed1.0 "Amendment 1 - Multimedia systems and equipment - Colour measurement
215and management - Part 2-1: Colour management - Default RGB colour space - sRGB"</title>
216 </biblioentry>
217
218 <biblioentry id="xvycc">
219 <abbrev>xvYCC</abbrev>
220 <authorgroup>
221 <corpauthor>International Electrotechnical Commission
222(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
223 </authorgroup>
224 <title>IEC 61966-2-4 ed1.0 "Multimedia systems and equipment - Colour measurement
225and management - Part 2-4: Colour management - Extended-gamut YCC colour space for video
226applications - xvYCC"</title>
227 </biblioentry>
228
229 <biblioentry id="adobergb">
230 <abbrev>AdobeRGB</abbrev>
231 <authorgroup>
232 <corpauthor>Adobe Systems Incorporated (<ulink url="http://www.adobe.com">http://www.adobe.com</ulink>)</corpauthor>
233 </authorgroup>
234 <title>Adobe&copy; RGB (1998) Color Image Encoding Version 2005-05</title>
235 </biblioentry>
236
237 <biblioentry id="oprgb">
238 <abbrev>opRGB</abbrev>
239 <authorgroup>
240 <corpauthor>International Electrotechnical Commission
241(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
242 </authorgroup>
243 <title>IEC 61966-2-5 "Multimedia systems and equipment - Colour measurement
244and management - Part 2-5: Colour management - Optional RGB colour space - opRGB"</title>
245 </biblioentry>
246
247 <biblioentry id="itu2020">
248 <abbrev>ITU&nbsp;BT.2020</abbrev>
249 <authorgroup>
250 <corpauthor>International Telecommunication Union (<ulink
251url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
252 </authorgroup>
253 <title>ITU-R Recommendation BT.2020 (08/2012) "Parameter values for ultra-high
254definition television systems for production and international programme exchange"
255</title>
256 </biblioentry>
257
258 <biblioentry id="tech3213">
259 <abbrev>EBU&nbsp;Tech&nbsp;3213</abbrev>
260 <authorgroup>
261 <corpauthor>European Broadcast Union (<ulink
262url="http://www.ebu.ch">http://www.ebu.ch</ulink>)</corpauthor>
263 </authorgroup>
264 <title>E.B.U. Standard for Chromaticity Tolerances for Studio Monitors"</title>
265 </biblioentry>
266
267 <biblioentry id="iec62106">
268 <abbrev>IEC&nbsp;62106</abbrev>
269 <authorgroup>
270 <corpauthor>International Electrotechnical Commission
271(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
272 </authorgroup>
273 <title>Specification of the radio data system (RDS) for VHF/FM sound broadcasting
274in the frequency range from 87,5 to 108,0 MHz</title>
275 </biblioentry>
276
277 <biblioentry id="nrsc4">
278 <abbrev>NRSC-4-B</abbrev>
279 <authorgroup>
280 <corpauthor>National Radio Systems Committee
281(<ulink url="http://www.nrscstandards.org">http://www.nrscstandards.org</ulink>)</corpauthor>
282 </authorgroup>
283 <title>NRSC-4-B: United States RBDS Standard</title>
284 </biblioentry>
285
286 <biblioentry id="iso12232">
287 <abbrev>ISO&nbsp;12232:2006</abbrev>
288 <authorgroup>
289 <corpauthor>International Organization for Standardization
290(<ulink url="http://www.iso.org">http://www.iso.org</ulink>)</corpauthor>
291 </authorgroup>
292 <title>Photography &mdash; Digital still cameras &mdash; Determination
293 of exposure index, ISO speed ratings, standard output sensitivity, and
294 recommended exposure index</title>
295 </biblioentry>
296
297 <biblioentry id="cea861">
298 <abbrev>CEA-861-E</abbrev>
299 <authorgroup>
300 <corpauthor>Consumer Electronics Association
301(<ulink url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
302 </authorgroup>
303 <title>A DTV Profile for Uncompressed High Speed Digital Interfaces</title>
304 </biblioentry>
305
306 <biblioentry id="vesadmt">
307 <abbrev>VESA&nbsp;DMT</abbrev>
308 <authorgroup>
309 <corpauthor>Video Electronics Standards Association
310(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
311 </authorgroup>
312 <title>VESA and Industry Standards and Guidelines for Computer Display Monitor Timing (DMT)</title>
313 </biblioentry>
314
315 <biblioentry id="vesaedid">
316 <abbrev>EDID</abbrev>
317 <authorgroup>
318 <corpauthor>Video Electronics Standards Association
319(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
320 </authorgroup>
321 <title>VESA Enhanced Extended Display Identification Data Standard</title>
322 <subtitle>Release A, Revision 2</subtitle>
323 </biblioentry>
324
325 <biblioentry id="hdcp">
326 <abbrev>HDCP</abbrev>
327 <authorgroup>
328 <corpauthor>Digital Content Protection LLC
329(<ulink url="http://www.digital-cp.com">http://www.digital-cp.com</ulink>)</corpauthor>
330 </authorgroup>
331 <title>High-bandwidth Digital Content Protection System</title>
332 <subtitle>Revision 1.3</subtitle>
333 </biblioentry>
334
335 <biblioentry id="hdmi">
336 <abbrev>HDMI</abbrev>
337 <authorgroup>
338 <corpauthor>HDMI Licensing LLC
339(<ulink url="http://www.hdmi.org">http://www.hdmi.org</ulink>)</corpauthor>
340 </authorgroup>
341 <title>High-Definition Multimedia Interface</title>
342 <subtitle>Specification Version 1.4a</subtitle>
343 </biblioentry>
344
345 <biblioentry id="hdmi2">
346 <abbrev>HDMI2</abbrev>
347 <authorgroup>
348 <corpauthor>HDMI Licensing LLC
349(<ulink url="http://www.hdmi.org">http://www.hdmi.org</ulink>)</corpauthor>
350 </authorgroup>
351 <title>High-Definition Multimedia Interface</title>
352 <subtitle>Specification Version 2.0</subtitle>
353 </biblioentry>
354
355 <biblioentry id="dp">
356 <abbrev>DP</abbrev>
357 <authorgroup>
358 <corpauthor>Video Electronics Standards Association
359(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
360 </authorgroup>
361 <title>VESA DisplayPort Standard</title>
362 <subtitle>Version 1, Revision 2</subtitle>
363 </biblioentry>
364
365 <biblioentry id="poynton">
366 <abbrev>poynton</abbrev>
367 <authorgroup>
368 <corpauthor>Charles Poynton</corpauthor>
369 </authorgroup>
370 <title>Digital Video and HDTV, Algorithms and Interfaces</title>
371 </biblioentry>
372
373 <biblioentry id="colimg">
374 <abbrev>colimg</abbrev>
375 <authorgroup>
376 <corpauthor>Erik Reinhard et al.</corpauthor>
377 </authorgroup>
378 <title>Color Imaging: Fundamentals and Applications</title>
379 </biblioentry>
380
381 </bibliography>
Documentation/DocBook/media/v4l/capture.c.xml+0−659
@@ -1,659 +0,0 @@
1<programlisting>
2/*
3 * V4L2 video capture example
4 *
5 * This program can be used and distributed without restrictions.
6 *
7 * This program is provided with the V4L2 API
8 * see https://linuxtv.org/docs.php for more information
9 */
10
11#include &lt;stdio.h&gt;
12#include &lt;stdlib.h&gt;
13#include &lt;string.h&gt;
14#include &lt;assert.h&gt;
15
16#include &lt;getopt.h&gt; /* getopt_long() */
17
18#include &lt;fcntl.h&gt; /* low-level i/o */
19#include &lt;unistd.h&gt;
20#include &lt;errno.h&gt;
21#include &lt;sys/stat.h&gt;
22#include &lt;sys/types.h&gt;
23#include &lt;sys/time.h&gt;
24#include &lt;sys/mman.h&gt;
25#include &lt;sys/ioctl.h&gt;
26
27#include &lt;linux/videodev2.h&gt;
28
29#define CLEAR(x) memset(&amp;(x), 0, sizeof(x))
30
31enum io_method {
32 IO_METHOD_READ,
33 IO_METHOD_MMAP,
34 IO_METHOD_USERPTR,
35};
36
37struct buffer {
38 void *start;
39 size_t length;
40};
41
42static char *dev_name;
43static enum io_method io = IO_METHOD_MMAP;
44static int fd = -1;
45struct buffer *buffers;
46static unsigned int n_buffers;
47static int out_buf;
48static int force_format;
49static int frame_count = 70;
50
51static void errno_exit(const char *s)
52{
53 fprintf(stderr, "%s error %d, %s\n", s, errno, strerror(errno));
54 exit(EXIT_FAILURE);
55}
56
57static int xioctl(int fh, int request, void *arg)
58{
59 int r;
60
61 do {
62 r = ioctl(fh, request, arg);
63 } while (-1 == r &amp;&amp; EINTR == errno);
64
65 return r;
66}
67
68static void process_image(const void *p, int size)
69{
70 if (out_buf)
71 fwrite(p, size, 1, stdout);
72
73 fflush(stderr);
74 fprintf(stderr, ".");
75 fflush(stdout);
76}
77
78static int read_frame(void)
79{
80 struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf;
81 unsigned int i;
82
83 switch (io) {
84 case IO_METHOD_READ:
85 if (-1 == read(fd, buffers[0].start, buffers[0].length)) {
86 switch (errno) {
87 case EAGAIN:
88 return 0;
89
90 case EIO:
91 /* Could ignore EIO, see spec. */
92
93 /* fall through */
94
95 default:
96 errno_exit("read");
97 }
98 }
99
100 process_image(buffers[0].start, buffers[0].length);
101 break;
102
103 case IO_METHOD_MMAP:
104 CLEAR(buf);
105
106 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
107 buf.memory = V4L2_MEMORY_MMAP;
108
109 if (-1 == xioctl(fd, VIDIOC_DQBUF, &amp;buf)) {
110 switch (errno) {
111 case EAGAIN:
112 return 0;
113
114 case EIO:
115 /* Could ignore EIO, see spec. */
116
117 /* fall through */
118
119 default:
120 errno_exit("VIDIOC_DQBUF");
121 }
122 }
123
124 assert(buf.index &lt; n_buffers);
125
126 process_image(buffers[buf.index].start, buf.bytesused);
127
128 if (-1 == xioctl(fd, VIDIOC_QBUF, &amp;buf))
129 errno_exit("VIDIOC_QBUF");
130 break;
131
132 case IO_METHOD_USERPTR:
133 CLEAR(buf);
134
135 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
136 buf.memory = V4L2_MEMORY_USERPTR;
137
138 if (-1 == xioctl(fd, VIDIOC_DQBUF, &amp;buf)) {
139 switch (errno) {
140 case EAGAIN:
141 return 0;
142
143 case EIO:
144 /* Could ignore EIO, see spec. */
145
146 /* fall through */
147
148 default:
149 errno_exit("VIDIOC_DQBUF");
150 }
151 }
152
153 for (i = 0; i &lt; n_buffers; ++i)
154 if (buf.m.userptr == (unsigned long)buffers[i].start
155 &amp;&amp; buf.length == buffers[i].length)
156 break;
157
158 assert(i &lt; n_buffers);
159
160 process_image((void *)buf.m.userptr, buf.bytesused);
161
162 if (-1 == xioctl(fd, VIDIOC_QBUF, &amp;buf))
163 errno_exit("VIDIOC_QBUF");
164 break;
165 }
166
167 return 1;
168}
169
170static void mainloop(void)
171{
172 unsigned int count;
173
174 count = frame_count;
175
176 while (count-- &gt; 0) {
177 for (;;) {
178 fd_set fds;
179 struct timeval tv;
180 int r;
181
182 FD_ZERO(&amp;fds);
183 FD_SET(fd, &amp;fds);
184
185 /* Timeout. */
186 tv.tv_sec = 2;
187 tv.tv_usec = 0;
188
189 r = select(fd + 1, &amp;fds, NULL, NULL, &amp;tv);
190
191 if (-1 == r) {
192 if (EINTR == errno)
193 continue;
194 errno_exit("select");
195 }
196
197 if (0 == r) {
198 fprintf(stderr, "select timeout\n");
199 exit(EXIT_FAILURE);
200 }
201
202 if (read_frame())
203 break;
204 /* EAGAIN - continue select loop. */
205 }
206 }
207}
208
209static void stop_capturing(void)
210{
211 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
212
213 switch (io) {
214 case IO_METHOD_READ:
215 /* Nothing to do. */
216 break;
217
218 case IO_METHOD_MMAP:
219 case IO_METHOD_USERPTR:
220 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
221 if (-1 == xioctl(fd, VIDIOC_STREAMOFF, &amp;type))
222 errno_exit("VIDIOC_STREAMOFF");
223 break;
224 }
225}
226
227static void start_capturing(void)
228{
229 unsigned int i;
230 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
231
232 switch (io) {
233 case IO_METHOD_READ:
234 /* Nothing to do. */
235 break;
236
237 case IO_METHOD_MMAP:
238 for (i = 0; i &lt; n_buffers; ++i) {
239 struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf;
240
241 CLEAR(buf);
242 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
243 buf.memory = V4L2_MEMORY_MMAP;
244 buf.index = i;
245
246 if (-1 == xioctl(fd, VIDIOC_QBUF, &amp;buf))
247 errno_exit("VIDIOC_QBUF");
248 }
249 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
250 if (-1 == xioctl(fd, VIDIOC_STREAMON, &amp;type))
251 errno_exit("VIDIOC_STREAMON");
252 break;
253
254 case IO_METHOD_USERPTR:
255 for (i = 0; i &lt; n_buffers; ++i) {
256 struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf;
257
258 CLEAR(buf);
259 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
260 buf.memory = V4L2_MEMORY_USERPTR;
261 buf.index = i;
262 buf.m.userptr = (unsigned long)buffers[i].start;
263 buf.length = buffers[i].length;
264
265 if (-1 == xioctl(fd, VIDIOC_QBUF, &amp;buf))
266 errno_exit("VIDIOC_QBUF");
267 }
268 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
269 if (-1 == xioctl(fd, VIDIOC_STREAMON, &amp;type))
270 errno_exit("VIDIOC_STREAMON");
271 break;
272 }
273}
274
275static void uninit_device(void)
276{
277 unsigned int i;
278
279 switch (io) {
280 case IO_METHOD_READ:
281 free(buffers[0].start);
282 break;
283
284 case IO_METHOD_MMAP:
285 for (i = 0; i &lt; n_buffers; ++i)
286 if (-1 == munmap(buffers[i].start, buffers[i].length))
287 errno_exit("munmap");
288 break;
289
290 case IO_METHOD_USERPTR:
291 for (i = 0; i &lt; n_buffers; ++i)
292 free(buffers[i].start);
293 break;
294 }
295
296 free(buffers);
297}
298
299static void init_read(unsigned int buffer_size)
300{
301 buffers = calloc(1, sizeof(*buffers));
302
303 if (!buffers) {
304 fprintf(stderr, "Out of memory\n");
305 exit(EXIT_FAILURE);
306 }
307
308 buffers[0].length = buffer_size;
309 buffers[0].start = malloc(buffer_size);
310
311 if (!buffers[0].start) {
312 fprintf(stderr, "Out of memory\n");
313 exit(EXIT_FAILURE);
314 }
315}
316
317static void init_mmap(void)
318{
319 struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> req;
320
321 CLEAR(req);
322
323 req.count = 4;
324 req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
325 req.memory = V4L2_MEMORY_MMAP;
326
327 if (-1 == xioctl(fd, VIDIOC_REQBUFS, &amp;req)) {
328 if (EINVAL == errno) {
329 fprintf(stderr, "%s does not support "
330 "memory mapping\n", dev_name);
331 exit(EXIT_FAILURE);
332 } else {
333 errno_exit("VIDIOC_REQBUFS");
334 }
335 }
336
337 if (req.count &lt; 2) {
338 fprintf(stderr, "Insufficient buffer memory on %s\n",
339 dev_name);
340 exit(EXIT_FAILURE);
341 }
342
343 buffers = calloc(req.count, sizeof(*buffers));
344
345 if (!buffers) {
346 fprintf(stderr, "Out of memory\n");
347 exit(EXIT_FAILURE);
348 }
349
350 for (n_buffers = 0; n_buffers &lt; req.count; ++n_buffers) {
351 struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf;
352
353 CLEAR(buf);
354
355 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
356 buf.memory = V4L2_MEMORY_MMAP;
357 buf.index = n_buffers;
358
359 if (-1 == xioctl(fd, VIDIOC_QUERYBUF, &amp;buf))
360 errno_exit("VIDIOC_QUERYBUF");
361
362 buffers[n_buffers].length = buf.length;
363 buffers[n_buffers].start =
364 mmap(NULL /* start anywhere */,
365 buf.length,
366 PROT_READ | PROT_WRITE /* required */,
367 MAP_SHARED /* recommended */,
368 fd, buf.m.offset);
369
370 if (MAP_FAILED == buffers[n_buffers].start)
371 errno_exit("mmap");
372 }
373}
374
375static void init_userp(unsigned int buffer_size)
376{
377 struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> req;
378
379 CLEAR(req);
380
381 req.count = 4;
382 req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
383 req.memory = V4L2_MEMORY_USERPTR;
384
385 if (-1 == xioctl(fd, VIDIOC_REQBUFS, &amp;req)) {
386 if (EINVAL == errno) {
387 fprintf(stderr, "%s does not support "
388 "user pointer i/o\n", dev_name);
389 exit(EXIT_FAILURE);
390 } else {
391 errno_exit("VIDIOC_REQBUFS");
392 }
393 }
394
395 buffers = calloc(4, sizeof(*buffers));
396
397 if (!buffers) {
398 fprintf(stderr, "Out of memory\n");
399 exit(EXIT_FAILURE);
400 }
401
402 for (n_buffers = 0; n_buffers &lt; 4; ++n_buffers) {
403 buffers[n_buffers].length = buffer_size;
404 buffers[n_buffers].start = malloc(buffer_size);
405
406 if (!buffers[n_buffers].start) {
407 fprintf(stderr, "Out of memory\n");
408 exit(EXIT_FAILURE);
409 }
410 }
411}
412
413static void init_device(void)
414{
415 struct <link linkend="v4l2-capability">v4l2_capability</link> cap;
416 struct <link linkend="v4l2-cropcap">v4l2_cropcap</link> cropcap;
417 struct <link linkend="v4l2-crop">v4l2_crop</link> crop;
418 struct <link linkend="v4l2-format">v4l2_format</link> fmt;
419 unsigned int min;
420
421 if (-1 == xioctl(fd, VIDIOC_QUERYCAP, &amp;cap)) {
422 if (EINVAL == errno) {
423 fprintf(stderr, "%s is no V4L2 device\n",
424 dev_name);
425 exit(EXIT_FAILURE);
426 } else {
427 errno_exit("VIDIOC_QUERYCAP");
428 }
429 }
430
431 if (!(cap.capabilities &amp; V4L2_CAP_VIDEO_CAPTURE)) {
432 fprintf(stderr, "%s is no video capture device\n",
433 dev_name);
434 exit(EXIT_FAILURE);
435 }
436
437 switch (io) {
438 case IO_METHOD_READ:
439 if (!(cap.capabilities &amp; V4L2_CAP_READWRITE)) {
440 fprintf(stderr, "%s does not support read i/o\n",
441 dev_name);
442 exit(EXIT_FAILURE);
443 }
444 break;
445
446 case IO_METHOD_MMAP:
447 case IO_METHOD_USERPTR:
448 if (!(cap.capabilities &amp; V4L2_CAP_STREAMING)) {
449 fprintf(stderr, "%s does not support streaming i/o\n",
450 dev_name);
451 exit(EXIT_FAILURE);
452 }
453 break;
454 }
455
456
457 /* Select video input, video standard and tune here. */
458
459
460 CLEAR(cropcap);
461
462 cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
463
464 if (0 == xioctl(fd, VIDIOC_CROPCAP, &amp;cropcap)) {
465 crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
466 crop.c = cropcap.defrect; /* reset to default */
467
468 if (-1 == xioctl(fd, VIDIOC_S_CROP, &amp;crop)) {
469 switch (errno) {
470 case EINVAL:
471 /* Cropping not supported. */
472 break;
473 default:
474 /* Errors ignored. */
475 break;
476 }
477 }
478 } else {
479 /* Errors ignored. */
480 }
481
482
483 CLEAR(fmt);
484
485 fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
486 if (force_format) {
487 fmt.fmt.pix.width = 640;
488 fmt.fmt.pix.height = 480;
489 fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
490 fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
491
492 if (-1 == xioctl(fd, VIDIOC_S_FMT, &amp;fmt))
493 errno_exit("VIDIOC_S_FMT");
494
495 /* Note VIDIOC_S_FMT may change width and height. */
496 } else {
497 /* Preserve original settings as set by v4l2-ctl for example */
498 if (-1 == xioctl(fd, VIDIOC_G_FMT, &amp;fmt))
499 errno_exit("VIDIOC_G_FMT");
500 }
501
502 /* Buggy driver paranoia. */
503 min = fmt.fmt.pix.width * 2;
504 if (fmt.fmt.pix.bytesperline &lt; min)
505 fmt.fmt.pix.bytesperline = min;
506 min = fmt.fmt.pix.bytesperline * fmt.fmt.pix.height;
507 if (fmt.fmt.pix.sizeimage &lt; min)
508 fmt.fmt.pix.sizeimage = min;
509
510 switch (io) {
511 case IO_METHOD_READ:
512 init_read(fmt.fmt.pix.sizeimage);
513 break;
514
515 case IO_METHOD_MMAP:
516 init_mmap();
517 break;
518
519 case IO_METHOD_USERPTR:
520 init_userp(fmt.fmt.pix.sizeimage);
521 break;
522 }
523}
524
525static void close_device(void)
526{
527 if (-1 == close(fd))
528 errno_exit("close");
529
530 fd = -1;
531}
532
533static void open_device(void)
534{
535 struct stat st;
536
537 if (-1 == stat(dev_name, &amp;st)) {
538 fprintf(stderr, "Cannot identify '%s': %d, %s\n",
539 dev_name, errno, strerror(errno));
540 exit(EXIT_FAILURE);
541 }
542
543 if (!S_ISCHR(st.st_mode)) {
544 fprintf(stderr, "%s is no device\n", dev_name);
545 exit(EXIT_FAILURE);
546 }
547
548 fd = open(dev_name, O_RDWR /* required */ | O_NONBLOCK, 0);
549
550 if (-1 == fd) {
551 fprintf(stderr, "Cannot open '%s': %d, %s\n",
552 dev_name, errno, strerror(errno));
553 exit(EXIT_FAILURE);
554 }
555}
556
557static void usage(FILE *fp, int argc, char **argv)
558{
559 fprintf(fp,
560 "Usage: %s [options]\n\n"
561 "Version 1.3\n"
562 "Options:\n"
563 "-d | --device name Video device name [%s]\n"
564 "-h | --help Print this message\n"
565 "-m | --mmap Use memory mapped buffers [default]\n"
566 "-r | --read Use read() calls\n"
567 "-u | --userp Use application allocated buffers\n"
568 "-o | --output Outputs stream to stdout\n"
569 "-f | --format Force format to 640x480 YUYV\n"
570 "-c | --count Number of frames to grab [%i]\n"
571 "",
572 argv[0], dev_name, frame_count);
573}
574
575static const char short_options[] = "d:hmruofc:";
576
577static const struct option
578long_options[] = {
579 { "device", required_argument, NULL, 'd' },
580 { "help", no_argument, NULL, 'h' },
581 { "mmap", no_argument, NULL, 'm' },
582 { "read", no_argument, NULL, 'r' },
583 { "userp", no_argument, NULL, 'u' },
584 { "output", no_argument, NULL, 'o' },
585 { "format", no_argument, NULL, 'f' },
586 { "count", required_argument, NULL, 'c' },
587 { 0, 0, 0, 0 }
588};
589
590int main(int argc, char **argv)
591{
592 dev_name = "/dev/video0";
593
594 for (;;) {
595 int idx;
596 int c;
597
598 c = getopt_long(argc, argv,
599 short_options, long_options, &amp;idx);
600
601 if (-1 == c)
602 break;
603
604 switch (c) {
605 case 0: /* getopt_long() flag */
606 break;
607
608 case 'd':
609 dev_name = optarg;
610 break;
611
612 case 'h':
613 usage(stdout, argc, argv);
614 exit(EXIT_SUCCESS);
615
616 case 'm':
617 io = IO_METHOD_MMAP;
618 break;
619
620 case 'r':
621 io = IO_METHOD_READ;
622 break;
623
624 case 'u':
625 io = IO_METHOD_USERPTR;
626 break;
627
628 case 'o':
629 out_buf++;
630 break;
631
632 case 'f':
633 force_format++;
634 break;
635
636 case 'c':
637 errno = 0;
638 frame_count = strtol(optarg, NULL, 0);
639 if (errno)
640 errno_exit(optarg);
641 break;
642
643 default:
644 usage(stderr, argc, argv);
645 exit(EXIT_FAILURE);
646 }
647 }
648
649 open_device();
650 init_device();
651 start_capturing();
652 mainloop();
653 stop_capturing();
654 uninit_device();
655 close_device();
656 fprintf(stderr, "\n");
657 return 0;
658}
659</programlisting>
Documentation/DocBook/media/v4l/cec-api.xml+0−75
@@ -1,75 +0,0 @@
1<partinfo>
2 <authorgroup>
3 <author>
4 <firstname>Hans</firstname>
5 <surname>Verkuil</surname>
6 <affiliation><address><email>hans.verkuil@cisco.com</email></address></affiliation>
7 <contrib>Initial version.</contrib>
8 </author>
9 </authorgroup>
10 <copyright>
11 <year>2016</year>
12 <holder>Hans Verkuil</holder>
13 </copyright>
14
15 <revhistory>
16 <!-- Put document revisions here, newest first. -->
17 <revision>
18 <revnumber>1.0.0</revnumber>
19 <date>2016-03-17</date>
20 <authorinitials>hv</authorinitials>
21 <revremark>Initial revision</revremark>
22 </revision>
23 </revhistory>
24</partinfo>
25
26<title>CEC API</title>
27
28<chapter id="cec-api">
29 <title>CEC: Consumer Electronics Control</title>
30
31 <section id="cec-intro">
32 <title>Introduction</title>
33 <para>
34 Note: this documents the proposed CEC API. This API is not yet finalized and
35 is currently only available as a staging kernel module.
36 </para>
37 <para>HDMI connectors provide a single pin for use by the Consumer Electronics
38 Control protocol. This protocol allows different devices connected by an HDMI cable
39 to communicate. The protocol for CEC version 1.4 is defined in supplements 1 (CEC)
40 and 2 (HEAC or HDMI Ethernet and Audio Return Channel) of the HDMI 1.4a
41 (<xref linkend="hdmi" />) specification and the extensions added to CEC version 2.0
42 are defined in chapter 11 of the HDMI 2.0 (<xref linkend="hdmi2" />) specification.
43 </para>
44
45 <para>The bitrate is very slow (effectively no more than 36 bytes per second) and
46 is based on the ancient AV.link protocol used in old SCART connectors. The protocol
47 closely resembles a crazy Rube Goldberg contraption and is an unholy mix of low and
48 high level messages. Some messages, especially those part of the HEAC protocol layered
49 on top of CEC, need to be handled by the kernel, others can be handled either by the
50 kernel or by userspace.</para>
51
52 <para>In addition, CEC can be implemented in HDMI receivers, transmitters and in USB
53 devices that have an HDMI input and an HDMI output and that control just the CEC pin.</para>
54
55 <para>Drivers that support CEC will create a CEC device node (/dev/cecX)
56 to give userspace access to the CEC adapter. The &CEC-ADAP-G-CAPS; ioctl will tell userspace
57 what it is allowed to do.</para>
58 </section>
59</chapter>
60
61<appendix id="cec-user-func">
62 <title>Function Reference</title>
63 <!-- Keep this alphabetically sorted. -->
64 &sub-cec-func-open;
65 &sub-cec-func-close;
66 &sub-cec-func-ioctl;
67 &sub-cec-func-poll;
68 <!-- All ioctls go here. -->
69 &sub-cec-ioc-adap-g-caps;
70 &sub-cec-ioc-adap-g-log-addrs;
71 &sub-cec-ioc-adap-g-phys-addr;
72 &sub-cec-ioc-dqevent;
73 &sub-cec-ioc-g-mode;
74 &sub-cec-ioc-receive;
75</appendix>
Documentation/DocBook/media/v4l/cec-func-close.xml+0−64
@@ -1,64 +0,0 @@
1<refentry id="cec-func-close">
2 <refmeta>
3 <refentrytitle>cec close()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>cec-close</refname>
9 <refpurpose>Close a cec device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;unistd.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>close</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 </funcprototype>
19 </funcsynopsis>
20 </refsynopsisdiv>
21
22 <refsect1>
23 <title>Arguments</title>
24
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fd;</para>
30 </listitem>
31 </varlistentry>
32 </variablelist>
33 </refsect1>
34
35 <refsect1>
36 <title>Description</title>
37
38 <para>
39 Note: this documents the proposed CEC API. This API is not yet finalized and
40 is currently only available as a staging kernel module.
41 </para>
42
43 <para>Closes the cec device. Resources associated with the file descriptor
44 are freed. The device configuration remain unchanged.</para>
45 </refsect1>
46
47 <refsect1>
48 <title>Return Value</title>
49
50 <para><function>close</function> returns 0 on success. On error, -1 is
51 returned, and <varname>errno</varname> is set appropriately. Possible error
52 codes are:</para>
53
54 <variablelist>
55 <varlistentry>
56 <term><errorcode>EBADF</errorcode></term>
57 <listitem>
58 <para><parameter>fd</parameter> is not a valid open file descriptor.
59 </para>
60 </listitem>
61 </varlistentry>
62 </variablelist>
63 </refsect1>
64</refentry>
Documentation/DocBook/media/v4l/cec-func-ioctl.xml+0−78
@@ -1,78 +0,0 @@
1<refentry id="cec-func-ioctl">
2 <refmeta>
3 <refentrytitle>cec ioctl()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>cec-ioctl</refname>
9 <refpurpose>Control a cec device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;sys/ioctl.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>void *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>CEC ioctl request code as defined in the cec.h header file,
38 for example CEC_ADAP_G_CAPS.</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para>Pointer to a request-specific structure.</para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52 <para>
53 Note: this documents the proposed CEC API. This API is not yet finalized and
54 is currently only available as a staging kernel module.
55 </para>
56
57 <para>The <function>ioctl()</function> function manipulates cec device
58 parameters. The argument <parameter>fd</parameter> must be an open file
59 descriptor.</para>
60 <para>The ioctl <parameter>request</parameter> code specifies the cec
61 function to be called. It has encoded in it whether the argument is an
62 input, output or read/write parameter, and the size of the argument
63 <parameter>argp</parameter> in bytes.</para>
64 <para>Macros and structures definitions specifying cec ioctl requests and
65 their parameters are located in the cec.h header file. All cec ioctl
66 requests, their respective function and parameters are specified in
67 <xref linkend="cec-user-func" />.</para>
68 </refsect1>
69
70 <refsect1>
71 &return-value;
72
73 <para>Request-specific error codes are listed in the
74 individual requests descriptions.</para>
75 <para>When an ioctl that takes an output or read/write parameter fails,
76 the parameter remains unmodified.</para>
77 </refsect1>
78</refentry>
Documentation/DocBook/media/v4l/cec-func-open.xml+0−104
@@ -1,104 +0,0 @@
1<refentry id="cec-func-open">
2 <refmeta>
3 <refentrytitle>cec open()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>cec-open</refname>
9 <refpurpose>Open a cec device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;fcntl.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>open</function></funcdef>
17 <paramdef>const char *<parameter>device_name</parameter></paramdef>
18 <paramdef>int <parameter>flags</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>device_name</parameter></term>
29 <listitem>
30 <para>Device to be opened.</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>flags</parameter></term>
35 <listitem>
36 <para>Open flags. Access mode must be <constant>O_RDWR</constant>.
37 </para>
38 <para>When the <constant>O_NONBLOCK</constant> flag is
39given, the &CEC-RECEIVE; ioctl will return &EAGAIN; when no message is
40available, and the &CEC-TRANSMIT;, &CEC-ADAP-S-PHYS-ADDR; and
41&CEC-ADAP-S-LOG-ADDRS; ioctls all act in non-blocking mode.</para>
42 <para>Other flags have no effect.</para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47 <refsect1>
48 <title>Description</title>
49 <para>
50 Note: this documents the proposed CEC API. This API is not yet finalized and
51 is currently only available as a staging kernel module.
52 </para>
53
54 <para>To open a cec device applications call <function>open()</function>
55 with the desired device name. The function has no side effects; the device
56 configuration remain unchanged.</para>
57 <para>When the device is opened in read-only mode, attempts to modify its
58 configuration will result in an error, and <varname>errno</varname> will be
59 set to <errorcode>EBADF</errorcode>.</para>
60 </refsect1>
61 <refsect1>
62 <title>Return Value</title>
63
64 <para><function>open</function> returns the new file descriptor on success.
65 On error, -1 is returned, and <varname>errno</varname> is set appropriately.
66 Possible error codes include:</para>
67
68 <variablelist>
69 <varlistentry>
70 <term><errorcode>EACCES</errorcode></term>
71 <listitem>
72 <para>The requested access to the file is not allowed.</para>
73 </listitem>
74 </varlistentry>
75 <varlistentry>
76 <term><errorcode>EMFILE</errorcode></term>
77 <listitem>
78 <para>The process already has the maximum number of files open.
79 </para>
80 </listitem>
81 </varlistentry>
82 <varlistentry>
83 <term><errorcode>ENFILE</errorcode></term>
84 <listitem>
85 <para>The system limit on the total number of open files has been
86 reached.</para>
87 </listitem>
88 </varlistentry>
89 <varlistentry>
90 <term><errorcode>ENOMEM</errorcode></term>
91 <listitem>
92 <para>Insufficient kernel memory was available.</para>
93 </listitem>
94 </varlistentry>
95 <varlistentry>
96 <term><errorcode>ENXIO</errorcode></term>
97 <listitem>
98 <para>No device corresponding to this device special file exists.
99 </para>
100 </listitem>
101 </varlistentry>
102 </variablelist>
103 </refsect1>
104</refentry>
Documentation/DocBook/media/v4l/cec-func-poll.xml+0−94
@@ -1,94 +0,0 @@
1<refentry id="cec-func-poll">
2 <refmeta>
3 <refentrytitle>cec poll()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>cec-poll</refname>
9 <refpurpose>Wait for some event on a file descriptor</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;sys/poll.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>poll</function></funcdef>
17 <paramdef>struct pollfd *<parameter>ufds</parameter></paramdef>
18 <paramdef>unsigned int <parameter>nfds</parameter></paramdef>
19 <paramdef>int <parameter>timeout</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Description</title>
26
27 <para>
28 Note: this documents the proposed CEC API. This API is not yet finalized and
29 is currently only available as a staging kernel module.
30 </para>
31
32 <para>With the <function>poll()</function> function applications
33can wait for CEC events.</para>
34
35 <para>On success <function>poll()</function> returns the number of
36file descriptors that have been selected (that is, file descriptors
37for which the <structfield>revents</structfield> field of the
38respective <structname>pollfd</structname> structure is non-zero).
39CEC devices set the <constant>POLLIN</constant> and
40<constant>POLLRDNORM</constant> flags in the
41<structfield>revents</structfield> field if there are messages in the
42receive queue. If the transmit queue has room for new messages, the
43<constant>POLLOUT</constant> and <constant>POLLWRNORM</constant>
44flags are set. If there are events in the event queue, then the
45<constant>POLLPRI</constant> flag is set.
46When the function timed out it returns a value of zero, on
47failure it returns <returnvalue>-1</returnvalue> and the
48<varname>errno</varname> variable is set appropriately.
49</para>
50
51 <para>For more details see the
52<function>poll()</function> manual page.</para>
53 </refsect1>
54
55 <refsect1>
56 <title>Return Value</title>
57
58 <para>On success, <function>poll()</function> returns the number
59structures which have non-zero <structfield>revents</structfield>
60fields, or zero if the call timed out. On error
61<returnvalue>-1</returnvalue> is returned, and the
62<varname>errno</varname> variable is set appropriately:</para>
63
64 <variablelist>
65 <varlistentry>
66 <term><errorcode>EBADF</errorcode></term>
67 <listitem>
68 <para>One or more of the <parameter>ufds</parameter> members
69specify an invalid file descriptor.</para>
70 </listitem>
71 </varlistentry>
72 <varlistentry>
73 <term><errorcode>EFAULT</errorcode></term>
74 <listitem>
75 <para><parameter>ufds</parameter> references an inaccessible
76memory area.</para>
77 </listitem>
78 </varlistentry>
79 <varlistentry>
80 <term><errorcode>EINTR</errorcode></term>
81 <listitem>
82 <para>The call was interrupted by a signal.</para>
83 </listitem>
84 </varlistentry>
85 <varlistentry>
86 <term><errorcode>EINVAL</errorcode></term>
87 <listitem>
88 <para>The <parameter>nfds</parameter> argument is greater
89than <constant>OPEN_MAX</constant>.</para>
90 </listitem>
91 </varlistentry>
92 </variablelist>
93 </refsect1>
94</refentry>
Documentation/DocBook/media/v4l/cec-ioc-adap-g-caps.xml+0−151
@@ -1,151 +0,0 @@
1<refentry id="cec-ioc-adap-g-caps">
2 <refmeta>
3 <refentrytitle>ioctl CEC_ADAP_G_CAPS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_ADAP_G_CAPS</refname>
9 <refpurpose>Query device capabilities</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct cec_caps *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>File descriptor returned by
31 <link linkend='cec-func-open'><function>open()</function></link>.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>CEC_ADAP_G_CAPS</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>
53 Note: this documents the proposed CEC API. This API is not yet finalized and
54 is currently only available as a staging kernel module.
55 </para>
56
57 <para>All cec devices must support the <constant>CEC_ADAP_G_CAPS</constant>
58 ioctl. To query device information, applications call the ioctl with a
59 pointer to a &cec-caps;. The driver fills the structure and returns
60 the information to the application.
61 The ioctl never fails.</para>
62
63 <table pgwide="1" frame="none" id="cec-caps">
64 <title>struct <structname>cec_caps</structname></title>
65 <tgroup cols="3">
66 &cs-str;
67 <tbody valign="top">
68 <row>
69 <entry>char</entry>
70 <entry><structfield>driver[32]</structfield></entry>
71 <entry>The name of the cec adapter driver.</entry>
72 </row>
73 <row>
74 <entry>char</entry>
75 <entry><structfield>name[32]</structfield></entry>
76 <entry>The name of this CEC adapter. The combination <structfield>driver</structfield>
77 and <structfield>name</structfield> must be unique.</entry>
78 </row>
79 <row>
80 <entry>__u32</entry>
81 <entry><structfield>capabilities</structfield></entry>
82 <entry>The capabilities of the CEC adapter, see <xref
83 linkend="cec-capabilities" />.</entry>
84 </row>
85 <row>
86 <entry>__u32</entry>
87 <entry><structfield>version</structfield></entry>
88 <entry>CEC Framework API version, formatted with the
89 <constant>KERNEL_VERSION()</constant> macro.</entry>
90 </row>
91 </tbody>
92 </tgroup>
93 </table>
94
95 <table pgwide="1" frame="none" id="cec-capabilities">
96 <title>CEC Capabilities Flags</title>
97 <tgroup cols="3">
98 &cs-def;
99 <tbody valign="top">
100 <row>
101 <entry><constant>CEC_CAP_PHYS_ADDR</constant></entry>
102 <entry>0x00000001</entry>
103 <entry>Userspace has to configure the physical address by
104 calling &CEC-ADAP-S-PHYS-ADDR;. If this capability isn't set,
105 then setting the physical address is handled by the kernel
106 whenever the EDID is set (for an HDMI receiver) or read (for
107 an HDMI transmitter).</entry>
108 </row>
109 <row>
110 <entry><constant>CEC_CAP_LOG_ADDRS</constant></entry>
111 <entry>0x00000002</entry>
112 <entry>Userspace has to configure the logical addresses by
113 calling &CEC-ADAP-S-LOG-ADDRS;. If this capability isn't set,
114 then the kernel will have configured this.</entry>
115 </row>
116 <row>
117 <entry><constant>CEC_CAP_TRANSMIT</constant></entry>
118 <entry>0x00000004</entry>
119 <entry>Userspace can transmit CEC messages by calling &CEC-TRANSMIT;. This
120 implies that userspace can be a follower as well, since being able to
121 transmit messages is a prerequisite of becoming a follower. If this
122 capability isn't set, then the kernel will handle all CEC transmits
123 and process all CEC messages it receives.
124 </entry>
125 </row>
126 <row>
127 <entry><constant>CEC_CAP_PASSTHROUGH</constant></entry>
128 <entry>0x00000008</entry>
129 <entry>Userspace can use the passthrough mode by
130 calling &CEC-S-MODE;.</entry>
131 </row>
132 <row>
133 <entry><constant>CEC_CAP_RC</constant></entry>
134 <entry>0x00000010</entry>
135 <entry>This adapter supports the remote control protocol.</entry>
136 </row>
137 <row>
138 <entry><constant>CEC_CAP_MONITOR_ALL</constant></entry>
139 <entry>0x00000020</entry>
140 <entry>The CEC hardware can monitor all messages, not just directed and
141 broadcast messages.</entry>
142 </row>
143 </tbody>
144 </tgroup>
145 </table>
146 </refsect1>
147
148 <refsect1>
149 &return-value;
150 </refsect1>
151</refentry>
Documentation/DocBook/media/v4l/cec-ioc-adap-g-log-addrs.xml+0−329
@@ -1,329 +0,0 @@
1<refentry id="cec-ioc-adap-g-log-addrs">
2 <refmeta>
3 <refentrytitle>ioctl CEC_ADAP_G_LOG_ADDRS, CEC_ADAP_S_LOG_ADDRS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_ADAP_G_LOG_ADDRS</refname>
9 <refname>CEC_ADAP_S_LOG_ADDRS</refname>
10 <refpurpose>Get or set the logical addresses</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct cec_log_addrs *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>File descriptor returned by
32 <link linkend='cec-func-open'><function>open()</function></link>.</para>
33 </listitem>
34 </varlistentry>
35 <varlistentry>
36 <term><parameter>request</parameter></term>
37 <listitem>
38 <para>CEC_ADAP_G_LOG_ADDRS, CEC_ADAP_S_LOG_ADDRS</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para></para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52
53 <para>
54 Note: this documents the proposed CEC API. This API is not yet finalized and
55 is currently only available as a staging kernel module.
56 </para>
57
58 <para>To query the current CEC logical addresses, applications call the
59<constant>CEC_ADAP_G_LOG_ADDRS</constant> ioctl with a pointer to a
60<structname>cec_log_addrs</structname> structure where the drivers stores the
61logical addresses.</para>
62
63 <para>To set new logical addresses, applications fill in struct <structname>cec_log_addrs</structname>
64and call the <constant>CEC_ADAP_S_LOG_ADDRS</constant> ioctl with a pointer to this struct.
65The <constant>CEC_ADAP_S_LOG_ADDRS</constant> ioctl is only available if
66<constant>CEC_CAP_LOG_ADDRS</constant> is set (&ENOTTY; is returned otherwise). This ioctl will block until all
67requested logical addresses have been claimed. <constant>CEC_ADAP_S_LOG_ADDRS</constant>
68can only be called by a file handle in initiator mode (see &CEC-S-MODE;).</para>
69
70 <table pgwide="1" frame="none" id="cec-log-addrs">
71 <title>struct <structname>cec_log_addrs</structname></title>
72 <tgroup cols="3">
73 &cs-str;
74 <tbody valign="top">
75 <row>
76 <entry>__u8</entry>
77 <entry><structfield>log_addr</structfield>[CEC_MAX_LOG_ADDRS]</entry>
78 <entry>The actual logical addresses that were claimed. This is set by the
79 driver. If no logical address could be claimed, then it is set to
80 <constant>CEC_LOG_ADDR_INVALID</constant>. If this adapter is Unregistered,
81 then <structfield>log_addr[0]</structfield> is set to 0xf and all others to
82 <constant>CEC_LOG_ADDR_INVALID</constant>.</entry>
83 </row>
84 <row>
85 <entry>__u16</entry>
86 <entry><structfield>log_addr_mask</structfield></entry>
87 <entry>The bitmask of all logical addresses this adapter has claimed.
88 If this adapter is Unregistered then <structfield>log_addr_mask</structfield>
89 sets bit 15 and clears all other bits. If this adapter is not configured at all, then
90 <structfield>log_addr_mask</structfield> is set to 0. Set by the driver.</entry>
91 </row>
92 <row>
93 <entry>__u8</entry>
94 <entry><structfield>cec_version</structfield></entry>
95 <entry>The CEC version that this adapter shall use. See
96 <xref linkend="cec-versions" />.
97 Used to implement the <constant>CEC_MSG_CEC_VERSION</constant> and
98 <constant>CEC_MSG_REPORT_FEATURES</constant> messages. Note that
99 <constant>CEC_OP_CEC_VERSION_1_3A</constant> is not allowed
100 by the CEC framework.
101 </entry>
102 </row>
103 <row>
104 <entry>__u8</entry>
105 <entry><structfield>num_log_addrs</structfield></entry>
106 <entry>Number of logical addresses to set up. Must be &le;
107 <structfield>available_log_addrs</structfield> as returned by
108 &CEC-ADAP-G-CAPS;. All arrays in this structure are only filled up to
109 index <structfield>available_log_addrs</structfield>-1. The remaining
110 array elements will be ignored. Note that the CEC 2.0 standard allows
111 for a maximum of 2 logical addresses, although some hardware has support
112 for more. <constant>CEC_MAX_LOG_ADDRS</constant> is 4. The driver will
113 return the actual number of logical addresses it could claim, which may
114 be less than what was requested. If this field is set to 0, then the
115 CEC adapter shall clear all claimed logical addresses and all other
116 fields will be ignored.</entry>
117 </row>
118 <row>
119 <entry>__u32</entry>
120 <entry><structfield>vendor_id</structfield></entry>
121 <entry>The vendor ID is a 24-bit number that identifies the specific
122 vendor or entity. Based on this ID vendor specific commands may be
123 defined. If you do not want a vendor ID then set it to
124 <constant>CEC_VENDOR_ID_NONE</constant>.</entry>
125 </row>
126 <row>
127 <entry>__u32</entry>
128 <entry><structfield>flags</structfield></entry>
129 <entry>Flags. No flags are defined yet, so set this to 0.</entry>
130 </row>
131 <row>
132 <entry>char</entry>
133 <entry><structfield>osd_name</structfield>[15]</entry>
134 <entry>The On-Screen Display name as is returned by the
135 <constant>CEC_MSG_SET_OSD_NAME</constant> message.</entry>
136 </row>
137 <row>
138 <entry>__u8</entry>
139 <entry><structfield>primary_device_type</structfield>[CEC_MAX_LOG_ADDRS]</entry>
140 <entry>Primary device type for each logical address. See
141 <xref linkend="cec-prim-dev-types" /> for possible types.</entry>
142 </row>
143 <row>
144 <entry>__u8</entry>
145 <entry><structfield>log_addr_type</structfield>[CEC_MAX_LOG_ADDRS]</entry>
146 <entry>Logical address types. See <xref linkend="cec-log-addr-types" /> for
147 possible types. The driver will update this with the actual logical address
148 type that it claimed (e.g. it may have to fallback to
149 <constant>CEC_LOG_ADDR_TYPE_UNREGISTERED</constant>).</entry>
150 </row>
151 <row>
152 <entry>__u8</entry>
153 <entry><structfield>all_device_types</structfield>[CEC_MAX_LOG_ADDRS]</entry>
154 <entry>CEC 2.0 specific: all device types. See <xref linkend="cec-all-dev-types-flags" />.
155 Used to implement the <constant>CEC_MSG_REPORT_FEATURES</constant> message.
156 This field is ignored if <structfield>cec_version</structfield> &lt;
157 <constant>CEC_OP_CEC_VERSION_2_0</constant>.</entry>
158 </row>
159 <row>
160 <entry>__u8</entry>
161 <entry><structfield>features</structfield>[CEC_MAX_LOG_ADDRS][12]</entry>
162 <entry>Features for each logical address. Used to implement the
163 <constant>CEC_MSG_REPORT_FEATURES</constant> message. The 12 bytes include
164 both the RC Profile and the Device Features.
165 This field is ignored if <structfield>cec_version</structfield> &lt;
166 <constant>CEC_OP_CEC_VERSION_2_0</constant>.</entry>
167 </row>
168 </tbody>
169 </tgroup>
170 </table>
171
172 <table pgwide="1" frame="none" id="cec-versions">
173 <title>CEC Versions</title>
174 <tgroup cols="3">
175 &cs-def;
176 <tbody valign="top">
177 <row>
178 <entry><constant>CEC_OP_CEC_VERSION_1_3A</constant></entry>
179 <entry>4</entry>
180 <entry>CEC version according to the HDMI 1.3a standard.</entry>
181 </row>
182 <row>
183 <entry><constant>CEC_OP_CEC_VERSION_1_4B</constant></entry>
184 <entry>5</entry>
185 <entry>CEC version according to the HDMI 1.4b standard.</entry>
186 </row>
187 <row>
188 <entry><constant>CEC_OP_CEC_VERSION_2_0</constant></entry>
189 <entry>6</entry>
190 <entry>CEC version according to the HDMI 2.0 standard.</entry>
191 </row>
192 </tbody>
193 </tgroup>
194 </table>
195
196 <table pgwide="1" frame="none" id="cec-prim-dev-types">
197 <title>CEC Primary Device Types</title>
198 <tgroup cols="3">
199 &cs-def;
200 <tbody valign="top">
201 <row>
202 <entry><constant>CEC_OP_PRIM_DEVTYPE_TV</constant></entry>
203 <entry>0</entry>
204 <entry>Use for a TV.</entry>
205 </row>
206 <row>
207 <entry><constant>CEC_OP_PRIM_DEVTYPE_RECORD</constant></entry>
208 <entry>1</entry>
209 <entry>Use for a recording device.</entry>
210 </row>
211 <row>
212 <entry><constant>CEC_OP_PRIM_DEVTYPE_TUNER</constant></entry>
213 <entry>3</entry>
214 <entry>Use for a device with a tuner.</entry>
215 </row>
216 <row>
217 <entry><constant>CEC_OP_PRIM_DEVTYPE_PLAYBACK</constant></entry>
218 <entry>4</entry>
219 <entry>Use for a playback device.</entry>
220 </row>
221 <row>
222 <entry><constant>CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM</constant></entry>
223 <entry>5</entry>
224 <entry>Use for an audio system (e.g. an audio/video receiver).</entry>
225 </row>
226 <row>
227 <entry><constant>CEC_OP_PRIM_DEVTYPE_SWITCH</constant></entry>
228 <entry>6</entry>
229 <entry>Use for a CEC switch.</entry>
230 </row>
231 <row>
232 <entry><constant>CEC_OP_PRIM_DEVTYPE_VIDEOPROC</constant></entry>
233 <entry>7</entry>
234 <entry>Use for a video processor device.</entry>
235 </row>
236 </tbody>
237 </tgroup>
238 </table>
239
240 <table pgwide="1" frame="none" id="cec-log-addr-types">
241 <title>CEC Logical Address Types</title>
242 <tgroup cols="3">
243 &cs-def;
244 <tbody valign="top">
245 <row>
246 <entry><constant>CEC_LOG_ADDR_TYPE_TV</constant></entry>
247 <entry>0</entry>
248 <entry>Use for a TV.</entry>
249 </row>
250 <row>
251 <entry><constant>CEC_LOG_ADDR_TYPE_RECORD</constant></entry>
252 <entry>1</entry>
253 <entry>Use for a recording device.</entry>
254 </row>
255 <row>
256 <entry><constant>CEC_LOG_ADDR_TYPE_TUNER</constant></entry>
257 <entry>2</entry>
258 <entry>Use for a tuner device.</entry>
259 </row>
260 <row>
261 <entry><constant>CEC_LOG_ADDR_TYPE_PLAYBACK</constant></entry>
262 <entry>3</entry>
263 <entry>Use for a playback device.</entry>
264 </row>
265 <row>
266 <entry><constant>CEC_LOG_ADDR_TYPE_AUDIOSYSTEM</constant></entry>
267 <entry>4</entry>
268 <entry>Use for an audio system device.</entry>
269 </row>
270 <row>
271 <entry><constant>CEC_LOG_ADDR_TYPE_SPECIFIC</constant></entry>
272 <entry>5</entry>
273 <entry>Use for a second TV or for a video processor device.</entry>
274 </row>
275 <row>
276 <entry><constant>CEC_LOG_ADDR_TYPE_UNREGISTERED</constant></entry>
277 <entry>6</entry>
278 <entry>Use this if you just want to remain unregistered.
279 Used for pure CEC switches or CDC-only devices (CDC:
280 Capability Discovery and Control).</entry>
281 </row>
282 </tbody>
283 </tgroup>
284 </table>
285
286 <table pgwide="1" frame="none" id="cec-all-dev-types-flags">
287 <title>CEC All Device Types Flags</title>
288 <tgroup cols="3">
289 &cs-def;
290 <tbody valign="top">
291 <row>
292 <entry><constant>CEC_OP_ALL_DEVTYPE_TV</constant></entry>
293 <entry>0x80</entry>
294 <entry>This supports the TV type.</entry>
295 </row>
296 <row>
297 <entry><constant>CEC_OP_ALL_DEVTYPE_RECORD</constant></entry>
298 <entry>0x40</entry>
299 <entry>This supports the Recording type.</entry>
300 </row>
301 <row>
302 <entry><constant>CEC_OP_ALL_DEVTYPE_TUNER</constant></entry>
303 <entry>0x20</entry>
304 <entry>This supports the Tuner type.</entry>
305 </row>
306 <row>
307 <entry><constant>CEC_OP_ALL_DEVTYPE_PLAYBACK</constant></entry>
308 <entry>0x10</entry>
309 <entry>This supports the Playback type.</entry>
310 </row>
311 <row>
312 <entry><constant>CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM</constant></entry>
313 <entry>0x08</entry>
314 <entry>This supports the Audio System type.</entry>
315 </row>
316 <row>
317 <entry><constant>CEC_OP_ALL_DEVTYPE_SWITCH</constant></entry>
318 <entry>0x04</entry>
319 <entry>This supports the CEC Switch or Video Processing type.</entry>
320 </row>
321 </tbody>
322 </tgroup>
323 </table>
324 </refsect1>
325
326 <refsect1>
327 &return-value;
328 </refsect1>
329</refentry>
Documentation/DocBook/media/v4l/cec-ioc-adap-g-phys-addr.xml+0−86
@@ -1,86 +0,0 @@
1<refentry id="cec-ioc-adap-g-phys-addr">
2 <refmeta>
3 <refentrytitle>ioctl CEC_ADAP_G_PHYS_ADDR, CEC_ADAP_S_PHYS_ADDR</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_ADAP_G_PHYS_ADDR</refname>
9 <refname>CEC_ADAP_S_PHYS_ADDR</refname>
10 <refpurpose>Get or set the physical address</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>__u16 *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>File descriptor returned by
32 <link linkend='cec-func-open'><function>open()</function></link>.</para>
33 </listitem>
34 </varlistentry>
35 <varlistentry>
36 <term><parameter>request</parameter></term>
37 <listitem>
38 <para>CEC_ADAP_G_PHYS_ADDR, CEC_ADAP_S_PHYS_ADDR</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para></para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52
53 <para>
54 Note: this documents the proposed CEC API. This API is not yet finalized and
55 is currently only available as a staging kernel module.
56 </para>
57
58 <para>To query the current physical address applications call the
59<constant>CEC_ADAP_G_PHYS_ADDR</constant> ioctl with a pointer to an __u16
60where the driver stores the physical address.</para>
61
62 <para>To set a new physical address applications store the physical address in
63an __u16 and call the <constant>CEC_ADAP_S_PHYS_ADDR</constant> ioctl with a
64pointer to this integer. <constant>CEC_ADAP_S_PHYS_ADDR</constant> is only
65available if <constant>CEC_CAP_PHYS_ADDR</constant> is set (&ENOTTY; will be returned
66otherwise). <constant>CEC_ADAP_S_PHYS_ADDR</constant>
67can only be called by a file handle in initiator mode (see &CEC-S-MODE;), if not
68&EBUSY; will be returned.</para>
69
70 <para>The physical address is a 16-bit number where each group of 4 bits
71represent a digit of the physical address a.b.c.d where the most significant
724 bits represent 'a'. The CEC root device (usually the TV) has address 0.0.0.0.
73Every device that is hooked up to an input of the TV has address a.0.0.0 (where
74'a' is &ge; 1), devices hooked up to those in turn have addresses a.b.0.0, etc.
75So a topology of up to 5 devices deep is supported. The physical address a
76device shall use is stored in the EDID of the sink.</para>
77
78<para>For example, the EDID for each HDMI input of the TV will have a different
79physical address of the form a.0.0.0 that the sources will read out and use as
80their physical address.</para>
81 </refsect1>
82
83 <refsect1>
84 &return-value;
85 </refsect1>
86</refentry>
Documentation/DocBook/media/v4l/cec-ioc-dqevent.xml+0−202
@@ -1,202 +0,0 @@
1<refentry id="cec-ioc-g-event">
2 <refmeta>
3 <refentrytitle>ioctl CEC_DQEVENT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_DQEVENT</refname>
9 <refpurpose>Dequeue a CEC event</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct cec_event *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>File descriptor returned by
31 <link linkend='cec-func-open'><function>open()</function></link>.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>CEC_DQEVENT</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>
53 Note: this documents the proposed CEC API. This API is not yet finalized and
54 is currently only available as a staging kernel module.
55 </para>
56
57 <para>CEC devices can send asynchronous events. These can be retrieved by calling
58 the <constant>CEC_DQEVENT</constant> ioctl. If the file descriptor is in non-blocking
59 mode and no event is pending, then it will return -1 and set errno to the &EAGAIN;.</para>
60
61 <para>The internal event queues are per-filehandle and per-event type. If there is
62 no more room in a queue then the last event is overwritten with the new one. This
63 means that intermediate results can be thrown away but that the latest event is always
64 available. This also means that is it possible to read two successive events that have
65 the same value (e.g. two CEC_EVENT_STATE_CHANGE events with the same state). In that
66 case the intermediate state changes were lost but it is guaranteed that the state
67 did change in between the two events.</para>
68
69 <table pgwide="1" frame="none" id="cec-event-state-change">
70 <title>struct <structname>cec_event_state_change</structname></title>
71 <tgroup cols="3">
72 &cs-str;
73 <tbody valign="top">
74 <row>
75 <entry>__u16</entry>
76 <entry><structfield>phys_addr</structfield></entry>
77 <entry>The current physical address.</entry>
78 </row>
79 <row>
80 <entry>__u16</entry>
81 <entry><structfield>log_addr_mask</structfield></entry>
82 <entry>The current set of claimed logical addresses.</entry>
83 </row>
84 </tbody>
85 </tgroup>
86 </table>
87
88 <table pgwide="1" frame="none" id="cec-event-lost-msgs">
89 <title>struct <structname>cec_event_lost_msgs</structname></title>
90 <tgroup cols="3">
91 &cs-str;
92 <tbody valign="top">
93 <row>
94 <entry>__u32</entry>
95 <entry><structfield>lost_msgs</structfield></entry>
96 <entry>Set to the number of lost messages since the filehandle
97 was opened or since the last time this event was dequeued for
98 this filehandle. The messages lost are the oldest messages. So
99 when a new message arrives and there is no more room, then the
100 oldest message is discarded to make room for the new one. The
101 internal size of the message queue guarantees that all messages
102 received in the last two seconds will be stored. Since messages
103 should be replied to within a second according to the CEC
104 specification, this is more than enough.
105 </entry>
106 </row>
107 </tbody>
108 </tgroup>
109 </table>
110
111 <table pgwide="1" frame="none" id="cec-event">
112 <title>struct <structname>cec_event</structname></title>
113 <tgroup cols="4">
114 &cs-str;
115 <tbody valign="top">
116 <row>
117 <entry>__u64</entry>
118 <entry><structfield>ts</structfield></entry>
119 <entry>Timestamp of the event in ns.</entry>
120 <entry></entry>
121 </row>
122 <row>
123 <entry>__u32</entry>
124 <entry><structfield>event</structfield></entry>
125 <entry>The CEC event type, see <xref linkend="cec-events" />.</entry>
126 <entry></entry>
127 </row>
128 <row>
129 <entry>__u32</entry>
130 <entry><structfield>flags</structfield></entry>
131 <entry>Event flags, see <xref linkend="cec-event-flags" />.</entry>
132 <entry></entry>
133 </row>
134 <row>
135 <entry>union</entry>
136 <entry>(anonymous)</entry>
137 <entry></entry>
138 <entry></entry>
139 </row>
140 <row>
141 <entry></entry>
142 <entry>struct cec_event_state_change</entry>
143 <entry><structfield>state_change</structfield></entry>
144 <entry>The new adapter state as sent by the <constant>CEC_EVENT_STATE_CHANGE</constant>
145 event.</entry>
146 </row>
147 <row>
148 <entry></entry>
149 <entry>struct cec_event_lost_msgs</entry>
150 <entry><structfield>lost_msgs</structfield></entry>
151 <entry>The number of lost messages as sent by the <constant>CEC_EVENT_LOST_MSGS</constant>
152 event.</entry>
153 </row>
154 </tbody>
155 </tgroup>
156 </table>
157
158 <table pgwide="1" frame="none" id="cec-events">
159 <title>CEC Events Types</title>
160 <tgroup cols="3">
161 &cs-def;
162 <tbody valign="top">
163 <row>
164 <entry><constant>CEC_EVENT_STATE_CHANGE</constant></entry>
165 <entry>1</entry>
166 <entry>Generated when the CEC Adapter's state changes. When open() is
167 called an initial event will be generated for that filehandle with the
168 CEC Adapter's state at that time.
169 </entry>
170 </row>
171 <row>
172 <entry><constant>CEC_EVENT_LOST_MSGS</constant></entry>
173 <entry>2</entry>
174 <entry>Generated if one or more CEC messages were lost because the
175 application didn't dequeue CEC messages fast enough.</entry>
176 </row>
177 </tbody>
178 </tgroup>
179 </table>
180
181 <table pgwide="1" frame="none" id="cec-event-flags">
182 <title>CEC Event Flags</title>
183 <tgroup cols="3">
184 &cs-def;
185 <tbody valign="top">
186 <row>
187 <entry><constant>CEC_EVENT_FL_INITIAL_VALUE</constant></entry>
188 <entry>1</entry>
189 <entry>Set for the initial events that are generated when the device is
190 opened. See the table above for which events do this. This allows
191 applications to learn the initial state of the CEC adapter at open()
192 time.</entry>
193 </row>
194 </tbody>
195 </tgroup>
196 </table>
197 </refsect1>
198
199 <refsect1>
200 &return-value;
201 </refsect1>
202</refentry>
Documentation/DocBook/media/v4l/cec-ioc-g-mode.xml+0−255
@@ -1,255 +0,0 @@
1<refentry id="cec-ioc-g-mode">
2 <refmeta>
3 <refentrytitle>ioctl CEC_G_MODE, CEC_S_MODE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_G_MODE</refname>
9 <refname>CEC_S_MODE</refname>
10 <refpurpose>Get or set exclusive use of the CEC adapter</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>__u32 *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>File descriptor returned by
32 <link linkend='cec-func-open'><function>open()</function></link>.</para>
33 </listitem>
34 </varlistentry>
35 <varlistentry>
36 <term><parameter>request</parameter></term>
37 <listitem>
38 <para>CEC_G_MODE, CEC_S_MODE</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para></para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52
53 <para>
54 Note: this documents the proposed CEC API. This API is not yet finalized and
55 is currently only available as a staging kernel module.
56 </para>
57
58 <para>By default any filehandle can use &CEC-TRANSMIT; and &CEC-RECEIVE;, but
59in order to prevent applications from stepping on each others toes it must be possible
60to obtain exclusive access to the CEC adapter. This ioctl sets the filehandle
61to initiator and/or follower mode which can be exclusive depending on the chosen
62mode. The initiator is the filehandle that is used
63to initiate messages, i.e. it commands other CEC devices. The follower is the filehandle
64that receives messages sent to the CEC adapter and processes them. The same filehandle
65can be both initiator and follower, or this role can be taken by two different
66filehandles.</para>
67
68 <para>When a CEC message is received, then the CEC framework will decide how
69it will be processed. If the message is a reply to an earlier transmitted message,
70then the reply is sent back to the filehandle that is waiting for it. In addition
71the CEC framework will process it.</para>
72
73 <para>If the message is not a reply, then the CEC framework will process it
74first. If there is no follower, then the message is just discarded and a feature
75abort is sent back to the initiator if the framework couldn't process it. If there
76is a follower, then the message is passed on to the follower who will use
77&CEC-RECEIVE; to dequeue the new message. The framework expects the follower to
78make the right decisions.</para>
79
80 <para>The CEC framework will process core messages unless requested otherwise
81by the follower. The follower can enable the passthrough mode. In that case, the
82CEC framework will pass on most core messages without processing them and
83the follower will have to implement those messages. There are some messages
84that the core will always process, regardless of the passthrough mode. See
85<xref linkend="cec-core-processing" /> for details.</para>
86
87 <para>If there is no initiator, then any CEC filehandle can use &CEC-TRANSMIT;.
88If there is an exclusive initiator then only that initiator can call &CEC-TRANSMIT;.
89The follower can of course always call &CEC-TRANSMIT;.</para>
90
91 <para>Available initiator modes are:</para>
92
93 <table pgwide="1" frame="none" id="cec-mode-initiator">
94 <title>Initiator Modes</title>
95 <tgroup cols="3">
96 &cs-def;
97 <tbody valign="top">
98 <row>
99 <entry><constant>CEC_MODE_NO_INITIATOR</constant></entry>
100 <entry>0x0</entry>
101 <entry>This is not an initiator, i.e. it cannot transmit CEC messages
102 or make any other changes to the CEC adapter.</entry>
103 </row>
104 <row>
105 <entry><constant>CEC_MODE_INITIATOR</constant></entry>
106 <entry>0x1</entry>
107 <entry>This is an initiator (the default when the device is opened) and it
108 can transmit CEC messages and make changes to the CEC adapter, unless there
109 is an exclusive initiator.</entry>
110 </row>
111 <row>
112 <entry><constant>CEC_MODE_EXCL_INITIATOR</constant></entry>
113 <entry>0x2</entry>
114 <entry>This is an exclusive initiator and this file descriptor is the only one
115 that can transmit CEC messages and make changes to the CEC adapter. If someone
116 else is already the exclusive initiator then an attempt to become one will return
117 the &EBUSY; error.</entry>
118 </row>
119 </tbody>
120 </tgroup>
121 </table>
122
123 <para>Available follower modes are:</para>
124
125 <table pgwide="1" frame="none" id="cec-mode-follower">
126 <title>Follower Modes</title>
127 <tgroup cols="3">
128 &cs-def;
129 <tbody valign="top">
130 <row>
131 <entry><constant>CEC_MODE_NO_FOLLOWER</constant></entry>
132 <entry>0x00</entry>
133 <entry>This is not a follower (the default when the device is opened).</entry>
134 </row>
135 <row>
136 <entry><constant>CEC_MODE_FOLLOWER</constant></entry>
137 <entry>0x10</entry>
138 <entry>This is a follower and it will receive CEC messages unless there is
139 an exclusive follower. You cannot become a follower if <constant>CEC_CAP_TRANSMIT</constant>
140 is not set or if <constant>CEC_MODE_NO_INITIATOR</constant> was specified,
141 &EINVAL; is returned in that case.</entry>
142 </row>
143 <row>
144 <entry><constant>CEC_MODE_EXCL_FOLLOWER</constant></entry>
145 <entry>0x20</entry>
146 <entry>This is an exclusive follower and only this file descriptor will receive
147 CEC messages for processing. If someone else is already the exclusive follower
148 then an attempt to become one will return the &EBUSY; error. You cannot become
149 a follower if <constant>CEC_CAP_TRANSMIT</constant> is not set or if
150 <constant>CEC_MODE_NO_INITIATOR</constant> was specified, &EINVAL; is returned
151 in that case.</entry>
152 </row>
153 <row>
154 <entry><constant>CEC_MODE_EXCL_FOLLOWER_PASSTHRU</constant></entry>
155 <entry>0x30</entry>
156 <entry>This is an exclusive follower and only this file descriptor will receive
157 CEC messages for processing. In addition it will put the CEC device into
158 passthrough mode, allowing the exclusive follower to handle most core messages
159 instead of relying on the CEC framework for that. If someone else is already the
160 exclusive follower then an attempt to become one will return the &EBUSY; error.
161 You cannot become a follower if <constant>CEC_CAP_TRANSMIT</constant>
162 is not set or if <constant>CEC_MODE_NO_INITIATOR</constant> was specified,
163 &EINVAL; is returned in that case.</entry>
164 </row>
165 <row>
166 <entry><constant>CEC_MODE_MONITOR</constant></entry>
167 <entry>0xe0</entry>
168 <entry>Put the file descriptor into monitor mode. Can only be used in combination
169 with <constant>CEC_MODE_NO_INITIATOR</constant>, otherwise &EINVAL; will be
170 returned. In monitor mode all messages this CEC device transmits and all messages
171 it receives (both broadcast messages and directed messages for one its logical
172 addresses) will be reported. This is very useful for debugging. This is only
173 allowed if the process has the <constant>CAP_NET_ADMIN</constant>
174 capability. If that is not set, then &EPERM; is returned.</entry>
175 </row>
176 <row>
177 <entry><constant>CEC_MODE_MONITOR_ALL</constant></entry>
178 <entry>0xf0</entry>
179 <entry>Put the file descriptor into 'monitor all' mode. Can only be used in combination
180 with <constant>CEC_MODE_NO_INITIATOR</constant>, otherwise &EINVAL; will be
181 returned. In 'monitor all' mode all messages this CEC device transmits and all messages
182 it receives, including directed messages for other CEC devices will be reported. This
183 is very useful for debugging, but not all devices support this. This mode requires that
184 the <constant>CEC_CAP_MONITOR_ALL</constant> capability is set, otherwise &EINVAL; is
185 returned. This is only allowed if the process has the <constant>CAP_NET_ADMIN</constant>
186 capability. If that is not set, then &EPERM; is returned.</entry>
187 </row>
188 </tbody>
189 </tgroup>
190 </table>
191
192 <para>Core message processing details:</para>
193
194 <table pgwide="1" frame="none" id="cec-core-processing">
195 <title>Core Message Processing</title>
196 <tgroup cols="2">
197 &cs-def;
198 <tbody valign="top">
199 <row>
200 <entry><constant>CEC_MSG_GET_CEC_VERSION</constant></entry>
201 <entry>When in passthrough mode this message has to be handled by userspace,
202 otherwise the core will return the CEC version that was set with &CEC-ADAP-S-LOG-ADDRS;.</entry>
203 </row>
204 <row>
205 <entry><constant>CEC_MSG_GIVE_DEVICE_VENDOR_ID</constant></entry>
206 <entry>When in passthrough mode this message has to be handled by userspace,
207 otherwise the core will return the vendor ID that was set with &CEC-ADAP-S-LOG-ADDRS;.</entry>
208 </row>
209 <row>
210 <entry><constant>CEC_MSG_ABORT</constant></entry>
211 <entry>When in passthrough mode this message has to be handled by userspace,
212 otherwise the core will return a feature refused message as per the specification.</entry>
213 </row>
214 <row>
215 <entry><constant>CEC_MSG_GIVE_PHYSICAL_ADDR</constant></entry>
216 <entry>When in passthrough mode this message has to be handled by userspace,
217 otherwise the core will report the current physical address.</entry>
218 </row>
219 <row>
220 <entry><constant>CEC_MSG_GIVE_OSD_NAME</constant></entry>
221 <entry>When in passthrough mode this message has to be handled by userspace,
222 otherwise the core will report the current OSD name as was set with
223 &CEC-ADAP-S-LOG-ADDRS;.</entry>
224 </row>
225 <row>
226 <entry><constant>CEC_MSG_GIVE_FEATURES</constant></entry>
227 <entry>When in passthrough mode this message has to be handled by userspace,
228 otherwise the core will report the current features as was set with
229 &CEC-ADAP-S-LOG-ADDRS; or the message is ignore if the CEC version was
230 older than 2.0.</entry>
231 </row>
232 <row>
233 <entry><constant>CEC_MSG_USER_CONTROL_PRESSED</constant></entry>
234 <entry>If <constant>CEC_CAP_RC</constant> is set, then generate a remote control
235 key press. This message is always passed on to userspace.</entry>
236 </row>
237 <row>
238 <entry><constant>CEC_MSG_USER_CONTROL_RELEASED</constant></entry>
239 <entry>If <constant>CEC_CAP_RC</constant> is set, then generate a remote control
240 key release. This message is always passed on to userspace.</entry>
241 </row>
242 <row>
243 <entry><constant>CEC_MSG_REPORT_PHYSICAL_ADDR</constant></entry>
244 <entry>The CEC framework will make note of the reported physical address
245 and then just pass the message on to userspace.</entry>
246 </row>
247 </tbody>
248 </tgroup>
249 </table>
250 </refsect1>
251
252 <refsect1>
253 &return-value;
254 </refsect1>
255</refentry>
Documentation/DocBook/media/v4l/cec-ioc-receive.xml+0−274
@@ -1,274 +0,0 @@
1<refentry id="cec-ioc-receive">
2 <refmeta>
3 <refentrytitle>ioctl CEC_RECEIVE, CEC_TRANSMIT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_RECEIVE</refname>
9 <refname>CEC_TRANSMIT</refname>
10 <refpurpose>Receive or transmit a CEC message</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct cec_msg *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>File descriptor returned by
32 <link linkend='cec-func-open'><function>open()</function></link>.</para>
33 </listitem>
34 </varlistentry>
35 <varlistentry>
36 <term><parameter>request</parameter></term>
37 <listitem>
38 <para>CEC_RECEIVE, CEC_TRANSMIT</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para></para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52
53 <para>
54 Note: this documents the proposed CEC API. This API is not yet finalized and
55 is currently only available as a staging kernel module.
56 </para>
57
58 <para>To receive a CEC message the application has to fill in the
59 <structname>cec_msg</structname> structure and pass it to the
60 <constant>CEC_RECEIVE</constant> ioctl. <constant>CEC_RECEIVE</constant> is
61 only available if <constant>CEC_CAP_RECEIVE</constant> is set. If the
62 file descriptor is in non-blocking mode and there are no received
63 messages pending, then it will return -1 and set errno to the &EAGAIN;.
64 If the file descriptor is in blocking mode and <structfield>timeout</structfield>
65 is non-zero and no message arrived within <structfield>timeout</structfield>
66 milliseconds, then it will return -1 and set errno to the &ETIMEDOUT;.</para>
67
68 <para>To send a CEC message the application has to fill in the
69 <structname>cec_msg</structname> structure and pass it to the
70 <constant>CEC_TRANSMIT</constant> ioctl. <constant>CEC_TRANSMIT</constant> is
71 only available if <constant>CEC_CAP_TRANSMIT</constant> is set.
72 If there is no more room in the transmit queue, then it will return
73 -1 and set errno to the &EBUSY;.</para>
74
75 <table pgwide="1" frame="none" id="cec-msg">
76 <title>struct <structname>cec_msg</structname></title>
77 <tgroup cols="3">
78 &cs-str;
79 <tbody valign="top">
80 <row>
81 <entry>__u64</entry>
82 <entry><structfield>ts</structfield></entry>
83 <entry>Timestamp of when the message was transmitted in ns in the case
84 of <constant>CEC_TRANSMIT</constant> with <structfield>reply</structfield>
85 set to 0, or the timestamp of the received message in all other cases.</entry>
86 </row>
87 <row>
88 <entry>__u32</entry>
89 <entry><structfield>len</structfield></entry>
90 <entry>The length of the message. For <constant>CEC_TRANSMIT</constant> this
91 is filled in by the application. The driver will fill this in for
92 <constant>CEC_RECEIVE</constant> and for <constant>CEC_TRANSMIT</constant>
93 it will be filled in with the length of the reply message if
94 <structfield>reply</structfield> was set.</entry>
95 </row>
96 <row>
97 <entry>__u32</entry>
98 <entry><structfield>timeout</structfield></entry>
99 <entry>The timeout in milliseconds. This is the time the device will wait for a message to
100 be received before timing out. If it is set to 0, then it will wait indefinitely when it
101 is called by <constant>CEC_RECEIVE</constant>. If it is 0 and it is called by
102 <constant>CEC_TRANSMIT</constant>, then it will be replaced by 1000 if the
103 <structfield>reply</structfield> is non-zero or ignored if <structfield>reply</structfield>
104 is 0.</entry>
105 </row>
106 <row>
107 <entry>__u32</entry>
108 <entry><structfield>sequence</structfield></entry>
109 <entry>The sequence number is automatically assigned by the CEC
110 framework for all transmitted messages. It can be later used by the
111 framework to generate an event if a reply for a message was
112 requested and the message was transmitted in a non-blocking mode.
113 </entry>
114 </row>
115 <row>
116 <entry>__u32</entry>
117 <entry><structfield>flags</structfield></entry>
118 <entry>Flags. No flags are defined yet, so set this to 0.</entry>
119 </row>
120 <row>
121 <entry>__u8</entry>
122 <entry><structfield>rx_status</structfield></entry>
123 <entry>The status bits of the received message. See <xref linkend="cec-rx-status" />
124 for the possible status values. It is 0 if this message was transmitted, not
125 received, unless this is the reply to a transmitted message. In that case both
126 <structfield>rx_status</structfield> and <structfield>tx_status</structfield>
127 are set.</entry>
128 </row>
129 <row>
130 <entry>__u8</entry>
131 <entry><structfield>tx_status</structfield></entry>
132 <entry>The status bits of the transmitted message. See <xref linkend="cec-tx-status" />
133 for the possible status values. It is 0 if this messages was received, not
134 transmitted.</entry>
135 </row>
136 <row>
137 <entry>__u8</entry>
138 <entry><structfield>msg</structfield>[16]</entry>
139 <entry>The message payload. For <constant>CEC_TRANSMIT</constant> this
140 is filled in by the application. The driver will fill this in for
141 <constant>CEC_RECEIVE</constant> and for <constant>CEC_TRANSMIT</constant>
142 it will be filled in with the payload of the reply message if
143 <structfield>reply</structfield> was set.</entry>
144 </row>
145 <row>
146 <entry>__u8</entry>
147 <entry><structfield>reply</structfield></entry>
148 <entry>Wait until this message is replied. If <structfield>reply</structfield>
149 is 0 and the <structfield>timeout</structfield> is 0, then don't wait for a reply but
150 return after transmitting the message. If there was an error as indicated by a non-zero
151 <structfield>tx_status</structfield> field, then <structfield>reply</structfield> and
152 <structfield>timeout</structfield> are both set to 0 by the driver. Ignored by
153 <constant>CEC_RECEIVE</constant>. The case where <structfield>reply</structfield> is 0
154 (this is the opcode for the Feature Abort message) and <structfield>timeout</structfield>
155 is non-zero is specifically allowed to send a message and wait up to <structfield>timeout</structfield>
156 milliseconds for a Feature Abort reply. In this case <structfield>rx_status</structfield>
157 will either be set to <constant>CEC_RX_STATUS_TIMEOUT</constant> or
158 <constant>CEC_RX_STATUS_FEATURE_ABORT</constant>.</entry>
159 </row>
160 <row>
161 <entry>__u8</entry>
162 <entry><structfield>tx_arb_lost_cnt</structfield></entry>
163 <entry>A counter of the number of transmit attempts that resulted in the
164 Arbitration Lost error. This is only set if the hardware supports this, otherwise
165 it is always 0. This counter is only valid if the <constant>CEC_TX_STATUS_ARB_LOST</constant>
166 status bit is set.</entry>
167 </row>
168 <row>
169 <entry>__u8</entry>
170 <entry><structfield>tx_nack_cnt</structfield></entry>
171 <entry>A counter of the number of transmit attempts that resulted in the
172 Not Acknowledged error. This is only set if the hardware supports this, otherwise
173 it is always 0. This counter is only valid if the <constant>CEC_TX_STATUS_NACK</constant>
174 status bit is set.</entry>
175 </row>
176 <row>
177 <entry>__u8</entry>
178 <entry><structfield>tx_low_drive_cnt</structfield></entry>
179 <entry>A counter of the number of transmit attempts that resulted in the
180 Arbitration Lost error. This is only set if the hardware supports this, otherwise
181 it is always 0. This counter is only valid if the <constant>CEC_TX_STATUS_LOW_DRIVE</constant>
182 status bit is set.</entry>
183 </row>
184 <row>
185 <entry>__u8</entry>
186 <entry><structfield>tx_error_cnt</structfield></entry>
187 <entry>A counter of the number of transmit errors other than Arbitration Lost
188 or Not Acknowledged. This is only set if the hardware supports this, otherwise
189 it is always 0. This counter is only valid if the <constant>CEC_TX_STATUS_ERROR</constant>
190 status bit is set.</entry>
191 </row>
192 </tbody>
193 </tgroup>
194 </table>
195
196 <table pgwide="1" frame="none" id="cec-tx-status">
197 <title>CEC Transmit Status</title>
198 <tgroup cols="3">
199 &cs-def;
200 <tbody valign="top">
201 <row>
202 <entry><constant>CEC_TX_STATUS_OK</constant></entry>
203 <entry>0x01</entry>
204 <entry>The message was transmitted successfully. This is mutually exclusive with
205 <constant>CEC_TX_STATUS_MAX_RETRIES</constant>. Other bits can still be set if
206 earlier attempts met with failure before the transmit was eventually successful.</entry>
207 </row>
208 <row>
209 <entry><constant>CEC_TX_STATUS_ARB_LOST</constant></entry>
210 <entry>0x02</entry>
211 <entry>CEC line arbitration was lost.</entry>
212 </row>
213 <row>
214 <entry><constant>CEC_TX_STATUS_NACK</constant></entry>
215 <entry>0x04</entry>
216 <entry>Message was not acknowledged.</entry>
217 </row>
218 <row>
219 <entry><constant>CEC_TX_STATUS_LOW_DRIVE</constant></entry>
220 <entry>0x08</entry>
221 <entry>Low drive was detected on the CEC bus. This indicates that a follower
222 detected an error on the bus and requests a retransmission.</entry>
223 </row>
224 <row>
225 <entry><constant>CEC_TX_STATUS_ERROR</constant></entry>
226 <entry>0x10</entry>
227 <entry>Some error occurred. This is used for any errors that do not
228 fit the previous two, either because the hardware could not tell
229 which error occurred, or because the hardware tested for other conditions
230 besides those two.</entry>
231 </row>
232 <row>
233 <entry><constant>CEC_TX_STATUS_MAX_RETRIES</constant></entry>
234 <entry>0x20</entry>
235 <entry>The transmit failed after one or more retries. This status bit is mutually
236 exclusive with <constant>CEC_TX_STATUS_OK</constant>. Other bits can still be set
237 to explain which failures were seen.</entry>
238 </row>
239 </tbody>
240 </tgroup>
241 </table>
242
243 <table pgwide="1" frame="none" id="cec-rx-status">
244 <title>CEC Receive Status</title>
245 <tgroup cols="3">
246 &cs-def;
247 <tbody valign="top">
248 <row>
249 <entry><constant>CEC_RX_STATUS_OK</constant></entry>
250 <entry>0x01</entry>
251 <entry>The message was received successfully.</entry>
252 </row>
253 <row>
254 <entry><constant>CEC_RX_STATUS_TIMEOUT</constant></entry>
255 <entry>0x02</entry>
256 <entry>The reply to an earlier transmitted message timed out.</entry>
257 </row>
258 <row>
259 <entry><constant>CEC_RX_STATUS_FEATURE_ABORT</constant></entry>
260 <entry>0x04</entry>
261 <entry>The message was received successfully but the reply was
262 <constant>CEC_MSG_FEATURE_ABORT</constant>. This status is only
263 set if this message was the reply to an earlier transmitted
264 message.</entry>
265 </row>
266 </tbody>
267 </tgroup>
268 </table>
269 </refsect1>
270
271 <refsect1>
272 &return-value;
273 </refsect1>
274</refentry>
Documentation/DocBook/media/v4l/common.xml+0−1102
@@ -1,1102 +0,0 @@
1 <title>Common API Elements</title>
2
3 <para>Programming a V4L2 device consists of these
4steps:</para>
5
6 <itemizedlist>
7 <listitem>
8 <para>Opening the device</para>
9 </listitem>
10 <listitem>
11 <para>Changing device properties, selecting a video and audio
12input, video standard, picture brightness a.&nbsp;o.</para>
13 </listitem>
14 <listitem>
15 <para>Negotiating a data format</para>
16 </listitem>
17 <listitem>
18 <para>Negotiating an input/output method</para>
19 </listitem>
20 <listitem>
21 <para>The actual input/output loop</para>
22 </listitem>
23 <listitem>
24 <para>Closing the device</para>
25 </listitem>
26 </itemizedlist>
27
28 <para>In practice most steps are optional and can be executed out of
29order. It depends on the V4L2 device type, you can read about the
30details in <xref linkend="devices" />. In this chapter we will discuss
31the basic concepts applicable to all devices.</para>
32
33 <section id="open">
34 <title>Opening and Closing Devices</title>
35
36 <section>
37 <title>Device Naming</title>
38
39 <para>V4L2 drivers are implemented as kernel modules, loaded
40manually by the system administrator or automatically when a device is
41first discovered. The driver modules plug into the "videodev" kernel
42module. It provides helper functions and a common application
43interface specified in this document.</para>
44
45 <para>Each driver thus loaded registers one or more device nodes
46with major number 81 and a minor number between 0 and 255. Minor numbers
47are allocated dynamically unless the kernel is compiled with the kernel
48option CONFIG_VIDEO_FIXED_MINOR_RANGES. In that case minor numbers are
49allocated in ranges depending on the device node type (video, radio, etc.).</para>
50
51 <para>Many drivers support "video_nr", "radio_nr" or "vbi_nr"
52module options to select specific video/radio/vbi node numbers. This allows
53the user to request that the device node is named e.g. /dev/video5 instead
54of leaving it to chance. When the driver supports multiple devices of the same
55type more than one device node number can be assigned, separated by commas:
56 <informalexample>
57 <screen>
58&gt; modprobe mydriver video_nr=0,1 radio_nr=0,1</screen>
59 </informalexample></para>
60
61 <para>In <filename>/etc/modules.conf</filename> this may be
62written as: <informalexample>
63 <screen>
64options mydriver video_nr=0,1 radio_nr=0,1
65 </screen>
66 </informalexample> When no device node number is given as module
67option the driver supplies a default.</para>
68
69 <para>Normally udev will create the device nodes in /dev automatically
70for you. If udev is not installed, then you need to enable the
71CONFIG_VIDEO_FIXED_MINOR_RANGES kernel option in order to be able to correctly
72relate a minor number to a device node number. I.e., you need to be certain
73that minor number 5 maps to device node name video5. With this kernel option
74different device types have different minor number ranges. These ranges are
75listed in <xref linkend="devices" />.
76</para>
77
78 <para>The creation of character special files (with
79<application>mknod</application>) is a privileged operation and
80devices cannot be opened by major and minor number. That means
81applications cannot <emphasis>reliable</emphasis> scan for loaded or
82installed drivers. The user must enter a device name, or the
83application can try the conventional device names.</para>
84 </section>
85
86 <section id="related">
87 <title>Related Devices</title>
88
89 <para>Devices can support several functions. For example
90video capturing, VBI capturing and radio support.</para>
91
92 <para>The V4L2 API creates different nodes for each of these functions.</para>
93
94 <para>The V4L2 API was designed with the idea that one device node could support
95all functions. However, in practice this never worked: this 'feature'
96was never used by applications and many drivers did not support it and if
97they did it was certainly never tested. In addition, switching a device
98node between different functions only works when using the streaming I/O
99API, not with the read()/write() API.</para>
100
101 <para>Today each device node supports just one function.</para>
102
103 <para>Besides video input or output the hardware may also
104support audio sampling or playback. If so, these functions are
105implemented as ALSA PCM devices with optional ALSA audio mixer
106devices.</para>
107
108 <para>One problem with all these devices is that the V4L2 API
109makes no provisions to find these related devices. Some really
110complex devices use the Media Controller (see <xref linkend="media_controller" />)
111which can be used for this purpose. But most drivers do not use it,
112and while some code exists that uses sysfs to discover related devices
113(see libmedia_dev in the <ulink url="http://git.linuxtv.org/cgit.cgi/v4l-utils.git/">v4l-utils</ulink>
114git repository), there is no library yet that can provide a single API towards
115both Media Controller-based devices and devices that do not use the Media Controller.
116If you want to work on this please write to the linux-media mailing list: &v4l-ml;.</para>
117 </section>
118
119 <section>
120 <title>Multiple Opens</title>
121
122 <para>V4L2 devices can be opened more than once.<footnote><para>
123There are still some old and obscure drivers that have not been updated to
124allow for multiple opens. This implies that for such drivers &func-open; can
125return an &EBUSY; when the device is already in use.</para></footnote>
126When this is supported by the driver, users can for example start a
127"panel" application to change controls like brightness or audio
128volume, while another application captures video and audio. In other words, panel
129applications are comparable to an ALSA audio mixer application.
130Just opening a V4L2 device should not change the state of the device.<footnote>
131<para>Unfortunately, opening a radio device often switches the state of the
132device to radio mode in many drivers. This behavior should be fixed eventually
133as it violates the V4L2 specification.</para></footnote></para>
134
135 <para>Once an application has allocated the memory buffers needed for
136streaming data (by calling the &VIDIOC-REQBUFS; or &VIDIOC-CREATE-BUFS; ioctls,
137or implicitly by calling the &func-read; or &func-write; functions) that
138application (filehandle) becomes the owner of the device. It is no longer
139allowed to make changes that would affect the buffer sizes (e.g. by calling
140the &VIDIOC-S-FMT; ioctl) and other applications are no longer allowed to allocate
141buffers or start or stop streaming. The &EBUSY; will be returned instead.</para>
142
143 <para>Merely opening a V4L2 device does not grant exclusive
144access.<footnote>
145 <para>Drivers could recognize the
146<constant>O_EXCL</constant> open flag. Presently this is not required,
147so applications cannot know if it really works.</para>
148 </footnote> Initiating data exchange however assigns the right
149to read or write the requested type of data, and to change related
150properties, to this file descriptor. Applications can request
151additional access privileges using the priority mechanism described in
152<xref linkend="app-pri" />.</para>
153 </section>
154
155 <section>
156 <title>Shared Data Streams</title>
157
158 <para>V4L2 drivers should not support multiple applications
159reading or writing the same data stream on a device by copying
160buffers, time multiplexing or similar means. This is better handled by
161a proxy application in user space.</para>
162 </section>
163
164 <section>
165 <title>Functions</title>
166
167 <para>To open and close V4L2 devices applications use the
168&func-open; and &func-close; function, respectively. Devices are
169programmed using the &func-ioctl; function as explained in the
170following sections.</para>
171 </section>
172 </section>
173
174 <section id="querycap">
175 <title>Querying Capabilities</title>
176
177 <para>Because V4L2 covers a wide variety of devices not all
178aspects of the API are equally applicable to all types of devices.
179Furthermore devices of the same type have different capabilities and
180this specification permits the omission of a few complicated and less
181important parts of the API.</para>
182
183 <para>The &VIDIOC-QUERYCAP; ioctl is available to check if the kernel
184device is compatible with this specification, and to query the <link
185linkend="devices">functions</link> and <link linkend="io">I/O
186methods</link> supported by the device.</para>
187
188 <para>Starting with kernel version 3.1, VIDIOC-QUERYCAP will return the
189V4L2 API version used by the driver, with generally matches the Kernel version.
190There's no need of using &VIDIOC-QUERYCAP; to check if a specific ioctl is
191supported, the V4L2 core now returns ENOTTY if a driver doesn't provide
192support for an ioctl.</para>
193
194 <para>Other features can be queried
195by calling the respective ioctl, for example &VIDIOC-ENUMINPUT;
196to learn about the number, types and names of video connectors on the
197device. Although abstraction is a major objective of this API, the
198&VIDIOC-QUERYCAP; ioctl also allows driver specific applications to reliably identify
199the driver.</para>
200
201 <para>All V4L2 drivers must support
202<constant>VIDIOC_QUERYCAP</constant>. Applications should always call
203this ioctl after opening the device.</para>
204 </section>
205
206 <section id="app-pri">
207 <title>Application Priority</title>
208
209 <para>When multiple applications share a device it may be
210desirable to assign them different priorities. Contrary to the
211traditional "rm -rf /" school of thought a video recording application
212could for example block other applications from changing video
213controls or switching the current TV channel. Another objective is to
214permit low priority applications working in background, which can be
215preempted by user controlled applications and automatically regain
216control of the device at a later time.</para>
217
218 <para>Since these features cannot be implemented entirely in user
219space V4L2 defines the &VIDIOC-G-PRIORITY; and &VIDIOC-S-PRIORITY;
220ioctls to request and query the access priority associate with a file
221descriptor. Opening a device assigns a medium priority, compatible
222with earlier versions of V4L2 and drivers not supporting these ioctls.
223Applications requiring a different priority will usually call
224<constant>VIDIOC_S_PRIORITY</constant> after verifying the device with
225the &VIDIOC-QUERYCAP; ioctl.</para>
226
227 <para>Ioctls changing driver properties, such as &VIDIOC-S-INPUT;,
228return an &EBUSY; after another application obtained higher priority.</para>
229 </section>
230
231 <section id="video">
232 <title>Video Inputs and Outputs</title>
233
234 <para>Video inputs and outputs are physical connectors of a
235device. These can be for example RF connectors (antenna/cable), CVBS
236a.k.a. Composite Video, S-Video or RGB connectors. Video and VBI
237capture devices have inputs. Video and VBI output devices have outputs,
238at least one each. Radio devices have no video inputs or outputs.</para>
239
240 <para>To learn about the number and attributes of the
241available inputs and outputs applications can enumerate them with the
242&VIDIOC-ENUMINPUT; and &VIDIOC-ENUMOUTPUT; ioctl, respectively. The
243&v4l2-input; returned by the <constant>VIDIOC_ENUMINPUT</constant>
244ioctl also contains signal status information applicable when the
245current video input is queried.</para>
246
247 <para>The &VIDIOC-G-INPUT; and &VIDIOC-G-OUTPUT; ioctls return the
248index of the current video input or output. To select a different
249input or output applications call the &VIDIOC-S-INPUT; and
250&VIDIOC-S-OUTPUT; ioctls. Drivers must implement all the input ioctls
251when the device has one or more inputs, all the output ioctls when the
252device has one or more outputs.</para>
253
254 <example>
255 <title>Information about the current video input</title>
256
257 <programlisting>
258&v4l2-input; input;
259int index;
260
261if (-1 == ioctl(fd, &VIDIOC-G-INPUT;, &amp;index)) {
262 perror("VIDIOC_G_INPUT");
263 exit(EXIT_FAILURE);
264}
265
266memset(&amp;input, 0, sizeof(input));
267input.index = index;
268
269if (-1 == ioctl(fd, &VIDIOC-ENUMINPUT;, &amp;input)) {
270 perror("VIDIOC_ENUMINPUT");
271 exit(EXIT_FAILURE);
272}
273
274printf("Current input: %s\n", input.name);
275 </programlisting>
276 </example>
277
278 <example>
279 <title>Switching to the first video input</title>
280
281 <programlisting>
282int index;
283
284index = 0;
285
286if (-1 == ioctl(fd, &VIDIOC-S-INPUT;, &amp;index)) {
287 perror("VIDIOC_S_INPUT");
288 exit(EXIT_FAILURE);
289}
290 </programlisting>
291 </example>
292 </section>
293
294 <section id="audio">
295 <title>Audio Inputs and Outputs</title>
296
297 <para>Audio inputs and outputs are physical connectors of a
298device. Video capture devices have inputs, output devices have
299outputs, zero or more each. Radio devices have no audio inputs or
300outputs. They have exactly one tuner which in fact
301<emphasis>is</emphasis> an audio source, but this API associates
302tuners with video inputs or outputs only, and radio devices have
303none of these.<footnote>
304 <para>Actually &v4l2-audio; ought to have a
305<structfield>tuner</structfield> field like &v4l2-input;, not only
306making the API more consistent but also permitting radio devices with
307multiple tuners.</para>
308 </footnote> A connector on a TV card to loop back the received
309audio signal to a sound card is not considered an audio output.</para>
310
311 <para>Audio and video inputs and outputs are associated. Selecting
312a video source also selects an audio source. This is most evident when
313the video and audio source is a tuner. Further audio connectors can
314combine with more than one video input or output. Assumed two
315composite video inputs and two audio inputs exist, there may be up to
316four valid combinations. The relation of video and audio connectors
317is defined in the <structfield>audioset</structfield> field of the
318respective &v4l2-input; or &v4l2-output;, where each bit represents
319the index number, starting at zero, of one audio input or output.</para>
320
321 <para>To learn about the number and attributes of the
322available inputs and outputs applications can enumerate them with the
323&VIDIOC-ENUMAUDIO; and &VIDIOC-ENUMAUDOUT; ioctl, respectively. The
324&v4l2-audio; returned by the <constant>VIDIOC_ENUMAUDIO</constant> ioctl
325also contains signal status information applicable when the current
326audio input is queried.</para>
327
328 <para>The &VIDIOC-G-AUDIO; and &VIDIOC-G-AUDOUT; ioctls report
329the current audio input and output, respectively. Note that, unlike
330&VIDIOC-G-INPUT; and &VIDIOC-G-OUTPUT; these ioctls return a structure
331as <constant>VIDIOC_ENUMAUDIO</constant> and
332<constant>VIDIOC_ENUMAUDOUT</constant> do, not just an index.</para>
333
334 <para>To select an audio input and change its properties
335applications call the &VIDIOC-S-AUDIO; ioctl. To select an audio
336output (which presently has no changeable properties) applications
337call the &VIDIOC-S-AUDOUT; ioctl.</para>
338
339 <para>Drivers must implement all audio input ioctls when the device
340has multiple selectable audio inputs, all audio output ioctls when the
341device has multiple selectable audio outputs. When the device has any
342audio inputs or outputs the driver must set the <constant>V4L2_CAP_AUDIO</constant>
343flag in the &v4l2-capability; returned by the &VIDIOC-QUERYCAP; ioctl.</para>
344
345 <example>
346 <title>Information about the current audio input</title>
347
348 <programlisting>
349&v4l2-audio; audio;
350
351memset(&amp;audio, 0, sizeof(audio));
352
353if (-1 == ioctl(fd, &VIDIOC-G-AUDIO;, &amp;audio)) {
354 perror("VIDIOC_G_AUDIO");
355 exit(EXIT_FAILURE);
356}
357
358printf("Current input: %s\n", audio.name);
359 </programlisting>
360 </example>
361
362 <example>
363 <title>Switching to the first audio input</title>
364
365 <programlisting>
366&v4l2-audio; audio;
367
368memset(&amp;audio, 0, sizeof(audio)); /* clear audio.mode, audio.reserved */
369
370audio.index = 0;
371
372if (-1 == ioctl(fd, &VIDIOC-S-AUDIO;, &amp;audio)) {
373 perror("VIDIOC_S_AUDIO");
374 exit(EXIT_FAILURE);
375}
376 </programlisting>
377 </example>
378 </section>
379
380 <section id="tuner">
381 <title>Tuners and Modulators</title>
382
383 <section>
384 <title>Tuners</title>
385
386 <para>Video input devices can have one or more tuners
387demodulating a RF signal. Each tuner is associated with one or more
388video inputs, depending on the number of RF connectors on the tuner.
389The <structfield>type</structfield> field of the respective
390&v4l2-input; returned by the &VIDIOC-ENUMINPUT; ioctl is set to
391<constant>V4L2_INPUT_TYPE_TUNER</constant> and its
392<structfield>tuner</structfield> field contains the index number of
393the tuner.</para>
394
395 <para>Radio input devices have exactly one tuner with index zero, no
396video inputs.</para>
397
398 <para>To query and change tuner properties applications use the
399&VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; ioctls, respectively. The
400&v4l2-tuner; returned by <constant>VIDIOC_G_TUNER</constant> also
401contains signal status information applicable when the tuner of the
402current video or radio input is queried. Note that
403<constant>VIDIOC_S_TUNER</constant> does not switch the current tuner,
404when there is more than one at all. The tuner is solely determined by
405the current video input. Drivers must support both ioctls and set the
406<constant>V4L2_CAP_TUNER</constant> flag in the &v4l2-capability;
407returned by the &VIDIOC-QUERYCAP; ioctl when the device has one or
408more tuners.</para>
409 </section>
410
411 <section>
412 <title>Modulators</title>
413
414 <para>Video output devices can have one or more modulators, uh,
415modulating a video signal for radiation or connection to the antenna
416input of a TV set or video recorder. Each modulator is associated with
417one or more video outputs, depending on the number of RF connectors on
418the modulator. The <structfield>type</structfield> field of the
419respective &v4l2-output; returned by the &VIDIOC-ENUMOUTPUT; ioctl is
420set to <constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> and its
421<structfield>modulator</structfield> field contains the index number
422of the modulator.</para>
423
424 <para>Radio output devices have exactly one modulator with index
425zero, no video outputs.</para>
426
427 <para>A video or radio device cannot support both a tuner and a
428modulator. Two separate device nodes will have to be used for such
429hardware, one that supports the tuner functionality and one that supports
430the modulator functionality. The reason is a limitation with the
431&VIDIOC-S-FREQUENCY; ioctl where you cannot specify whether the frequency
432is for a tuner or a modulator.</para>
433
434 <para>To query and change modulator properties applications use
435the &VIDIOC-G-MODULATOR; and &VIDIOC-S-MODULATOR; ioctl. Note that
436<constant>VIDIOC_S_MODULATOR</constant> does not switch the current
437modulator, when there is more than one at all. The modulator is solely
438determined by the current video output. Drivers must support both
439ioctls and set the <constant>V4L2_CAP_MODULATOR</constant> flag in
440the &v4l2-capability; returned by the &VIDIOC-QUERYCAP; ioctl when the
441device has one or more modulators.</para>
442 </section>
443
444 <section>
445 <title>Radio Frequency</title>
446
447 <para>To get and set the tuner or modulator radio frequency
448applications use the &VIDIOC-G-FREQUENCY; and &VIDIOC-S-FREQUENCY;
449ioctl which both take a pointer to a &v4l2-frequency;. These ioctls
450are used for TV and radio devices alike. Drivers must support both
451ioctls when the tuner or modulator ioctls are supported, or
452when the device is a radio device.</para>
453 </section>
454 </section>
455
456 <section id="standard">
457 <title>Video Standards</title>
458
459 <para>Video devices typically support one or more different video
460standards or variations of standards. Each video input and output may
461support another set of standards. This set is reported by the
462<structfield>std</structfield> field of &v4l2-input; and
463&v4l2-output; returned by the &VIDIOC-ENUMINPUT; and
464&VIDIOC-ENUMOUTPUT; ioctls, respectively.</para>
465
466 <para>V4L2 defines one bit for each analog video standard
467currently in use worldwide, and sets aside bits for driver defined
468standards, &eg; hybrid standards to watch NTSC video tapes on PAL TVs
469and vice versa. Applications can use the predefined bits to select a
470particular standard, although presenting the user a menu of supported
471standards is preferred. To enumerate and query the attributes of the
472supported standards applications use the &VIDIOC-ENUMSTD; ioctl.</para>
473
474 <para>Many of the defined standards are actually just variations
475of a few major standards. The hardware may in fact not distinguish
476between them, or do so internal and switch automatically. Therefore
477enumerated standards also contain sets of one or more standard
478bits.</para>
479
480 <para>Assume a hypothetic tuner capable of demodulating B/PAL,
481G/PAL and I/PAL signals. The first enumerated standard is a set of B
482and G/PAL, switched automatically depending on the selected radio
483frequency in UHF or VHF band. Enumeration gives a "PAL-B/G" or "PAL-I"
484choice. Similar a Composite input may collapse standards, enumerating
485"PAL-B/G/H/I", "NTSC-M" and "SECAM-D/K".<footnote>
486 <para>Some users are already confused by technical terms PAL,
487NTSC and SECAM. There is no point asking them to distinguish between
488B, G, D, or K when the software or hardware can do that
489automatically.</para>
490 </footnote></para>
491
492 <para>To query and select the standard used by the current video
493input or output applications call the &VIDIOC-G-STD; and
494&VIDIOC-S-STD; ioctl, respectively. The <emphasis>received</emphasis>
495standard can be sensed with the &VIDIOC-QUERYSTD; ioctl. Note that the
496parameter of all these ioctls is a pointer to a &v4l2-std-id; type
497(a standard set), <emphasis>not</emphasis> an index into the standard
498enumeration. Drivers must implement all video standard ioctls
499when the device has one or more video inputs or outputs.</para>
500
501 <para>Special rules apply to devices such as USB cameras where the notion of video
502standards makes little sense. More generally for any capture or output device
503which is: <itemizedlist>
504 <listitem>
505 <para>incapable of capturing fields or frames at the nominal
506rate of the video standard, or</para>
507 </listitem>
508 <listitem>
509 <para>that does not support the video standard formats at all.</para>
510 </listitem>
511 </itemizedlist> Here the driver shall set the
512<structfield>std</structfield> field of &v4l2-input; and &v4l2-output;
513to zero and the <constant>VIDIOC_G_STD</constant>,
514<constant>VIDIOC_S_STD</constant>,
515<constant>VIDIOC_QUERYSTD</constant> and
516<constant>VIDIOC_ENUMSTD</constant> ioctls shall return the
517&ENOTTY; or the &EINVAL;.</para>
518 <para>Applications can make use of the <xref linkend="input-capabilities" /> and
519<xref linkend="output-capabilities"/> flags to determine whether the video standard ioctls
520can be used with the given input or output.</para>
521
522 <example>
523 <title>Information about the current video standard</title>
524
525 <programlisting>
526&v4l2-std-id; std_id;
527&v4l2-standard; standard;
528
529if (-1 == ioctl(fd, &VIDIOC-G-STD;, &amp;std_id)) {
530 /* Note when VIDIOC_ENUMSTD always returns ENOTTY this
531 is no video device or it falls under the USB exception,
532 and VIDIOC_G_STD returning ENOTTY is no error. */
533
534 perror("VIDIOC_G_STD");
535 exit(EXIT_FAILURE);
536}
537
538memset(&amp;standard, 0, sizeof(standard));
539standard.index = 0;
540
541while (0 == ioctl(fd, &VIDIOC-ENUMSTD;, &amp;standard)) {
542 if (standard.id &amp; std_id) {
543 printf("Current video standard: %s\n", standard.name);
544 exit(EXIT_SUCCESS);
545 }
546
547 standard.index++;
548}
549
550/* EINVAL indicates the end of the enumeration, which cannot be
551 empty unless this device falls under the USB exception. */
552
553if (errno == EINVAL || standard.index == 0) {
554 perror("VIDIOC_ENUMSTD");
555 exit(EXIT_FAILURE);
556}
557 </programlisting>
558 </example>
559
560 <example>
561 <title>Listing the video standards supported by the current
562input</title>
563
564 <programlisting>
565&v4l2-input; input;
566&v4l2-standard; standard;
567
568memset(&amp;input, 0, sizeof(input));
569
570if (-1 == ioctl(fd, &VIDIOC-G-INPUT;, &amp;input.index)) {
571 perror("VIDIOC_G_INPUT");
572 exit(EXIT_FAILURE);
573}
574
575if (-1 == ioctl(fd, &VIDIOC-ENUMINPUT;, &amp;input)) {
576 perror("VIDIOC_ENUM_INPUT");
577 exit(EXIT_FAILURE);
578}
579
580printf("Current input %s supports:\n", input.name);
581
582memset(&amp;standard, 0, sizeof(standard));
583standard.index = 0;
584
585while (0 == ioctl(fd, &VIDIOC-ENUMSTD;, &amp;standard)) {
586 if (standard.id &amp; input.std)
587 printf("%s\n", standard.name);
588
589 standard.index++;
590}
591
592/* EINVAL indicates the end of the enumeration, which cannot be
593 empty unless this device falls under the USB exception. */
594
595if (errno != EINVAL || standard.index == 0) {
596 perror("VIDIOC_ENUMSTD");
597 exit(EXIT_FAILURE);
598}
599 </programlisting>
600 </example>
601
602 <example>
603 <title>Selecting a new video standard</title>
604
605 <programlisting>
606&v4l2-input; input;
607&v4l2-std-id; std_id;
608
609memset(&amp;input, 0, sizeof(input));
610
611if (-1 == ioctl(fd, &VIDIOC-G-INPUT;, &amp;input.index)) {
612 perror("VIDIOC_G_INPUT");
613 exit(EXIT_FAILURE);
614}
615
616if (-1 == ioctl(fd, &VIDIOC-ENUMINPUT;, &amp;input)) {
617 perror("VIDIOC_ENUM_INPUT");
618 exit(EXIT_FAILURE);
619}
620
621if (0 == (input.std &amp; V4L2_STD_PAL_BG)) {
622 fprintf(stderr, "Oops. B/G PAL is not supported.\n");
623 exit(EXIT_FAILURE);
624}
625
626/* Note this is also supposed to work when only B
627 <emphasis>or</emphasis> G/PAL is supported. */
628
629std_id = V4L2_STD_PAL_BG;
630
631if (-1 == ioctl(fd, &VIDIOC-S-STD;, &amp;std_id)) {
632 perror("VIDIOC_S_STD");
633 exit(EXIT_FAILURE);
634}
635 </programlisting>
636 </example>
637 </section>
638 <section id="dv-timings">
639 <title>Digital Video (DV) Timings</title>
640 <para>
641 The video standards discussed so far have been dealing with Analog TV and the
642corresponding video timings. Today there are many more different hardware interfaces
643such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry
644video signals and there is a need to extend the API to select the video timings
645for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to
646the limited bits available, a new set of ioctls was added to set/get video timings at
647the input and output.</para>
648
649 <para>These ioctls deal with the detailed digital video timings that define
650each video format. This includes parameters such as the active video width and height,
651signal polarities, frontporches, backporches, sync widths etc. The <filename>linux/v4l2-dv-timings.h</filename>
652header can be used to get the timings of the formats in the <xref linkend="cea861" /> and
653<xref linkend="vesadmt" /> standards.
654 </para>
655
656 <para>To enumerate and query the attributes of the DV timings supported by a device
657 applications use the &VIDIOC-ENUM-DV-TIMINGS; and &VIDIOC-DV-TIMINGS-CAP; ioctls.
658 To set DV timings for the device applications use the
659&VIDIOC-S-DV-TIMINGS; ioctl and to get current DV timings they use the
660&VIDIOC-G-DV-TIMINGS; ioctl. To detect the DV timings as seen by the video receiver applications
661use the &VIDIOC-QUERY-DV-TIMINGS; ioctl.</para>
662 <para>Applications can make use of the <xref linkend="input-capabilities" /> and
663<xref linkend="output-capabilities"/> flags to determine whether the digital video ioctls
664can be used with the given input or output.</para>
665 </section>
666
667 &sub-controls;
668
669 <section id="format">
670 <title>Data Formats</title>
671
672 <section>
673 <title>Data Format Negotiation</title>
674
675 <para>Different devices exchange different kinds of data with
676applications, for example video images, raw or sliced VBI data, RDS
677datagrams. Even within one kind many different formats are possible,
678in particular an abundance of image formats. Although drivers must
679provide a default and the selection persists across closing and
680reopening a device, applications should always negotiate a data format
681before engaging in data exchange. Negotiation means the application
682asks for a particular format and the driver selects and reports the
683best the hardware can do to satisfy the request. Of course
684applications can also just query the current selection.</para>
685
686 <para>A single mechanism exists to negotiate all data formats
687using the aggregate &v4l2-format; and the &VIDIOC-G-FMT; and
688&VIDIOC-S-FMT; ioctls. Additionally the &VIDIOC-TRY-FMT; ioctl can be
689used to examine what the hardware <emphasis>could</emphasis> do,
690without actually selecting a new data format. The data formats
691supported by the V4L2 API are covered in the respective device section
692in <xref linkend="devices" />. For a closer look at image formats see
693<xref linkend="pixfmt" />.</para>
694
695 <para>The <constant>VIDIOC_S_FMT</constant> ioctl is a major
696turning-point in the initialization sequence. Prior to this point
697multiple panel applications can access the same device concurrently to
698select the current input, change controls or modify other properties.
699The first <constant>VIDIOC_S_FMT</constant> assigns a logical stream
700(video data, VBI data etc.) exclusively to one file descriptor.</para>
701
702 <para>Exclusive means no other application, more precisely no
703other file descriptor, can grab this stream or change device
704properties inconsistent with the negotiated parameters. A video
705standard change for example, when the new standard uses a different
706number of scan lines, can invalidate the selected image format.
707Therefore only the file descriptor owning the stream can make
708invalidating changes. Accordingly multiple file descriptors which
709grabbed different logical streams prevent each other from interfering
710with their settings. When for example video overlay is about to start
711or already in progress, simultaneous video capturing may be restricted
712to the same cropping and image size.</para>
713
714 <para>When applications omit the
715<constant>VIDIOC_S_FMT</constant> ioctl its locking side effects are
716implied by the next step, the selection of an I/O method with the
717&VIDIOC-REQBUFS; ioctl or implicit with the first &func-read; or
718&func-write; call.</para>
719
720 <para>Generally only one logical stream can be assigned to a
721file descriptor, the exception being drivers permitting simultaneous
722video capturing and overlay using the same file descriptor for
723compatibility with V4L and earlier versions of V4L2. Switching the
724logical stream or returning into "panel mode" is possible by closing
725and reopening the device. Drivers <emphasis>may</emphasis> support a
726switch using <constant>VIDIOC_S_FMT</constant>.</para>
727
728 <para>All drivers exchanging data with
729applications must support the <constant>VIDIOC_G_FMT</constant> and
730<constant>VIDIOC_S_FMT</constant> ioctl. Implementation of the
731<constant>VIDIOC_TRY_FMT</constant> is highly recommended but
732optional.</para>
733 </section>
734
735 <section>
736 <title>Image Format Enumeration</title>
737
738 <para>Apart of the generic format negotiation functions
739a special ioctl to enumerate all image formats supported by video
740capture, overlay or output devices is available.<footnote>
741 <para>Enumerating formats an application has no a-priori
742knowledge of (otherwise it could explicitly ask for them and need not
743enumerate) seems useless, but there are applications serving as proxy
744between drivers and the actual video applications for which this is
745useful.</para>
746 </footnote></para>
747
748 <para>The &VIDIOC-ENUM-FMT; ioctl must be supported
749by all drivers exchanging image data with applications.</para>
750
751 <important>
752 <para>Drivers are not supposed to convert image formats in
753kernel space. They must enumerate only formats directly supported by
754the hardware. If necessary driver writers should publish an example
755conversion routine or library for integration into applications.</para>
756 </important>
757 </section>
758 </section>
759
760 &sub-planar-apis;
761
762 <section id="crop">
763 <title>Image Cropping, Insertion and Scaling</title>
764
765 <para>Some video capture devices can sample a subsection of the
766picture and shrink or enlarge it to an image of arbitrary size. We
767call these abilities cropping and scaling. Some video output devices
768can scale an image up or down and insert it at an arbitrary scan line
769and horizontal offset into a video signal.</para>
770
771 <para>Applications can use the following API to select an area in
772the video signal, query the default area and the hardware limits.
773<emphasis>Despite their name, the &VIDIOC-CROPCAP;, &VIDIOC-G-CROP;
774and &VIDIOC-S-CROP; ioctls apply to input as well as output
775devices.</emphasis></para>
776
777 <para>Scaling requires a source and a target. On a video capture
778or overlay device the source is the video signal, and the cropping
779ioctls determine the area actually sampled. The target are images
780read by the application or overlaid onto the graphics screen. Their
781size (and position for an overlay) is negotiated with the
782&VIDIOC-G-FMT; and &VIDIOC-S-FMT; ioctls.</para>
783
784 <para>On a video output device the source are the images passed in
785by the application, and their size is again negotiated with the
786<constant>VIDIOC_G/S_FMT</constant> ioctls, or may be encoded in a
787compressed video stream. The target is the video signal, and the
788cropping ioctls determine the area where the images are
789inserted.</para>
790
791 <para>Source and target rectangles are defined even if the device
792does not support scaling or the <constant>VIDIOC_G/S_CROP</constant>
793ioctls. Their size (and position where applicable) will be fixed in
794this case. <emphasis>All capture and output device must support the
795<constant>VIDIOC_CROPCAP</constant> ioctl such that applications can
796determine if scaling takes place.</emphasis></para>
797
798 <section>
799 <title>Cropping Structures</title>
800
801 <figure id="crop-scale">
802 <title>Image Cropping, Insertion and Scaling</title>
803 <mediaobject>
804 <imageobject>
805 <imagedata fileref="crop.pdf" format="PS" />
806 </imageobject>
807 <imageobject>
808 <imagedata fileref="crop.gif" format="GIF" />
809 </imageobject>
810 <textobject>
811 <phrase>The cropping, insertion and scaling process</phrase>
812 </textobject>
813 </mediaobject>
814 </figure>
815
816 <para>For capture devices the coordinates of the top left
817corner, width and height of the area which can be sampled is given by
818the <structfield>bounds</structfield> substructure of the
819&v4l2-cropcap; returned by the <constant>VIDIOC_CROPCAP</constant>
820ioctl. To support a wide range of hardware this specification does not
821define an origin or units. However by convention drivers should
822horizontally count unscaled samples relative to 0H (the leading edge
823of the horizontal sync pulse, see <xref linkend="vbi-hsync" />).
824Vertically ITU-R line
825numbers of the first field (<xref linkend="vbi-525" />, <xref
826linkend="vbi-625" />), multiplied by two if the driver can capture both
827fields.</para>
828
829 <para>The top left corner, width and height of the source
830rectangle, that is the area actually sampled, is given by &v4l2-crop;
831using the same coordinate system as &v4l2-cropcap;. Applications can
832use the <constant>VIDIOC_G_CROP</constant> and
833<constant>VIDIOC_S_CROP</constant> ioctls to get and set this
834rectangle. It must lie completely within the capture boundaries and
835the driver may further adjust the requested size and/or position
836according to hardware limitations.</para>
837
838 <para>Each capture device has a default source rectangle, given
839by the <structfield>defrect</structfield> substructure of
840&v4l2-cropcap;. The center of this rectangle shall align with the
841center of the active picture area of the video signal, and cover what
842the driver writer considers the complete picture. Drivers shall reset
843the source rectangle to the default when the driver is first loaded,
844but not later.</para>
845
846 <para>For output devices these structures and ioctls are used
847accordingly, defining the <emphasis>target</emphasis> rectangle where
848the images will be inserted into the video signal.</para>
849
850 </section>
851
852 <section>
853 <title>Scaling Adjustments</title>
854
855 <para>Video hardware can have various cropping, insertion and
856scaling limitations. It may only scale up or down, support only
857discrete scaling factors, or have different scaling abilities in
858horizontal and vertical direction. Also it may not support scaling at
859all. At the same time the &v4l2-crop; rectangle may have to be
860aligned, and both the source and target rectangles may have arbitrary
861upper and lower size limits. In particular the maximum
862<structfield>width</structfield> and <structfield>height</structfield>
863in &v4l2-crop; may be smaller than the
864&v4l2-cropcap;.<structfield>bounds</structfield> area. Therefore, as
865usual, drivers are expected to adjust the requested parameters and
866return the actual values selected.</para>
867
868 <para>Applications can change the source or the target rectangle
869first, as they may prefer a particular image size or a certain area in
870the video signal. If the driver has to adjust both to satisfy hardware
871limitations, the last requested rectangle shall take priority, and the
872driver should preferably adjust the opposite one. The &VIDIOC-TRY-FMT;
873ioctl however shall not change the driver state and therefore only
874adjust the requested rectangle.</para>
875
876 <para>Suppose scaling on a video capture device is restricted to
877a factor 1:1 or 2:1 in either direction and the target image size must
878be a multiple of 16&nbsp;&times;&nbsp;16 pixels. The source cropping
879rectangle is set to defaults, which are also the upper limit in this
880example, of 640&nbsp;&times;&nbsp;400 pixels at offset 0,&nbsp;0. An
881application requests an image size of 300&nbsp;&times;&nbsp;225
882pixels, assuming video will be scaled down from the "full picture"
883accordingly. The driver sets the image size to the closest possible
884values 304&nbsp;&times;&nbsp;224, then chooses the cropping rectangle
885closest to the requested size, that is 608&nbsp;&times;&nbsp;224
886(224&nbsp;&times;&nbsp;2:1 would exceed the limit 400). The offset
8870,&nbsp;0 is still valid, thus unmodified. Given the default cropping
888rectangle reported by <constant>VIDIOC_CROPCAP</constant> the
889application can easily propose another offset to center the cropping
890rectangle.</para>
891
892 <para>Now the application may insist on covering an area using a
893picture aspect ratio closer to the original request, so it asks for a
894cropping rectangle of 608&nbsp;&times;&nbsp;456 pixels. The present
895scaling factors limit cropping to 640&nbsp;&times;&nbsp;384, so the
896driver returns the cropping size 608&nbsp;&times;&nbsp;384 and adjusts
897the image size to closest possible 304&nbsp;&times;&nbsp;192.</para>
898
899 </section>
900
901 <section>
902 <title>Examples</title>
903
904 <para>Source and target rectangles shall remain unchanged across
905closing and reopening a device, such that piping data into or out of a
906device will work without special preparations. More advanced
907applications should ensure the parameters are suitable before starting
908I/O.</para>
909
910 <example>
911 <title>Resetting the cropping parameters</title>
912
913 <para>(A video capture device is assumed; change
914<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> for other
915devices.)</para>
916
917 <programlisting>
918&v4l2-cropcap; cropcap;
919&v4l2-crop; crop;
920
921memset (&amp;cropcap, 0, sizeof (cropcap));
922cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
923
924if (-1 == ioctl (fd, &VIDIOC-CROPCAP;, &amp;cropcap)) {
925 perror ("VIDIOC_CROPCAP");
926 exit (EXIT_FAILURE);
927}
928
929memset (&amp;crop, 0, sizeof (crop));
930crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
931crop.c = cropcap.defrect;
932
933/* Ignore if cropping is not supported (EINVAL). */
934
935if (-1 == ioctl (fd, &VIDIOC-S-CROP;, &amp;crop)
936 &amp;&amp; errno != EINVAL) {
937 perror ("VIDIOC_S_CROP");
938 exit (EXIT_FAILURE);
939}
940 </programlisting>
941 </example>
942
943 <example>
944 <title>Simple downscaling</title>
945
946 <para>(A video capture device is assumed.)</para>
947
948 <programlisting>
949&v4l2-cropcap; cropcap;
950&v4l2-format; format;
951
952reset_cropping_parameters ();
953
954/* Scale down to 1/4 size of full picture. */
955
956memset (&amp;format, 0, sizeof (format)); /* defaults */
957
958format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
959
960format.fmt.pix.width = cropcap.defrect.width &gt;&gt; 1;
961format.fmt.pix.height = cropcap.defrect.height &gt;&gt; 1;
962format.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
963
964if (-1 == ioctl (fd, &VIDIOC-S-FMT;, &amp;format)) {
965 perror ("VIDIOC_S_FORMAT");
966 exit (EXIT_FAILURE);
967}
968
969/* We could check the actual image size now, the actual scaling factor
970 or if the driver can scale at all. */
971 </programlisting>
972 </example>
973
974 <example>
975 <title>Selecting an output area</title>
976
977 <programlisting>
978&v4l2-cropcap; cropcap;
979&v4l2-crop; crop;
980
981memset (&amp;cropcap, 0, sizeof (cropcap));
982cropcap.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
983
984if (-1 == ioctl (fd, VIDIOC_CROPCAP;, &amp;cropcap)) {
985 perror ("VIDIOC_CROPCAP");
986 exit (EXIT_FAILURE);
987}
988
989memset (&amp;crop, 0, sizeof (crop));
990
991crop.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
992crop.c = cropcap.defrect;
993
994/* Scale the width and height to 50 % of their original size
995 and center the output. */
996
997crop.c.width /= 2;
998crop.c.height /= 2;
999crop.c.left += crop.c.width / 2;
1000crop.c.top += crop.c.height / 2;
1001
1002/* Ignore if cropping is not supported (EINVAL). */
1003
1004if (-1 == ioctl (fd, VIDIOC_S_CROP, &amp;crop)
1005 &amp;&amp; errno != EINVAL) {
1006 perror ("VIDIOC_S_CROP");
1007 exit (EXIT_FAILURE);
1008}
1009</programlisting>
1010 </example>
1011
1012 <example>
1013 <title>Current scaling factor and pixel aspect</title>
1014
1015 <para>(A video capture device is assumed.)</para>
1016
1017 <programlisting>
1018&v4l2-cropcap; cropcap;
1019&v4l2-crop; crop;
1020&v4l2-format; format;
1021double hscale, vscale;
1022double aspect;
1023int dwidth, dheight;
1024
1025memset (&amp;cropcap, 0, sizeof (cropcap));
1026cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1027
1028if (-1 == ioctl (fd, &VIDIOC-CROPCAP;, &amp;cropcap)) {
1029 perror ("VIDIOC_CROPCAP");
1030 exit (EXIT_FAILURE);
1031}
1032
1033memset (&amp;crop, 0, sizeof (crop));
1034crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1035
1036if (-1 == ioctl (fd, &VIDIOC-G-CROP;, &amp;crop)) {
1037 if (errno != EINVAL) {
1038 perror ("VIDIOC_G_CROP");
1039 exit (EXIT_FAILURE);
1040 }
1041
1042 /* Cropping not supported. */
1043 crop.c = cropcap.defrect;
1044}
1045
1046memset (&amp;format, 0, sizeof (format));
1047format.fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1048
1049if (-1 == ioctl (fd, &VIDIOC-G-FMT;, &amp;format)) {
1050 perror ("VIDIOC_G_FMT");
1051 exit (EXIT_FAILURE);
1052}
1053
1054/* The scaling applied by the driver. */
1055
1056hscale = format.fmt.pix.width / (double) crop.c.width;
1057vscale = format.fmt.pix.height / (double) crop.c.height;
1058
1059aspect = cropcap.pixelaspect.numerator /
1060 (double) cropcap.pixelaspect.denominator;
1061aspect = aspect * hscale / vscale;
1062
1063/* Devices following ITU-R BT.601 do not capture
1064 square pixels. For playback on a computer monitor
1065 we should scale the images to this size. */
1066
1067dwidth = format.fmt.pix.width / aspect;
1068dheight = format.fmt.pix.height;
1069 </programlisting>
1070 </example>
1071 </section>
1072 </section>
1073
1074 &sub-selection-api;
1075
1076 <section id="streaming-par">
1077 <title>Streaming Parameters</title>
1078
1079 <para>Streaming parameters are intended to optimize the video
1080capture process as well as I/O. Presently applications can request a
1081high quality capture mode with the &VIDIOC-S-PARM; ioctl.</para>
1082
1083 <para>The current video standard determines a nominal number of
1084frames per second. If less than this number of frames is to be
1085captured or output, applications can request frame skipping or
1086duplicating on the driver side. This is especially useful when using
1087the &func-read; or &func-write;, which are not augmented by timestamps
1088or sequence counters, and to avoid unnecessary data copying.</para>
1089
1090 <para>Finally these ioctls can be used to determine the number of
1091buffers used internally by a driver in read/write mode. For
1092implications see the section discussing the &func-read;
1093function.</para>
1094
1095 <para>To get and set the streaming parameters applications call
1096the &VIDIOC-G-PARM; and &VIDIOC-S-PARM; ioctl, respectively. They take
1097a pointer to a &v4l2-streamparm;, which contains a union holding
1098separate parameters for input and output devices.</para>
1099
1100 <para>These ioctls are optional, drivers need not implement
1101them. If so, they return the &EINVAL;.</para>
1102 </section>
Documentation/DocBook/media/v4l/compat.xml+0−2723
@@ -1,2723 +0,0 @@
1 <title>Changes</title>
2
3 <para>The following chapters document the evolution of the V4L2 API,
4errata or extensions. They are also intended to help application and
5driver writers to port or update their code.</para>
6
7 <section id="diff-v4l">
8 <title>Differences between V4L and V4L2</title>
9
10 <para>The Video For Linux API was first introduced in Linux 2.1 to
11unify and replace various TV and radio device related interfaces,
12developed independently by driver writers in prior years. Starting
13with Linux 2.5 the much improved V4L2 API replaces the V4L API.
14The support for the old V4L calls were removed from Kernel, but the
15library <xref linkend="libv4l" /> supports the conversion of a V4L
16API system call into a V4L2 one.</para>
17
18 <section>
19 <title>Opening and Closing Devices</title>
20
21 <para>For compatibility reasons the character device file names
22recommended for V4L2 video capture, overlay, radio and raw
23vbi capture devices did not change from those used by V4L. They are
24listed in <xref linkend="devices" /> and below in <xref
25 linkend="v4l-dev" />.</para>

2698 more lines aren’t shown here.

Documentation/DocBook/media/v4l/controls.xml+0−5505

This diff is large: its 5506 lines aren’t shown here.

Documentation/DocBook/media/v4l/crop.pdf+0−0

Binary file not shown.

Documentation/DocBook/media/v4l/dev-capture.xml+0−110

This diff is large: its 111 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-codec.xml+0−27

This diff is large: its 28 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-effect.xml+0−17

This diff is large: its 18 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-event.xml+0−43

This diff is large: its 44 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-osd.xml+0−149

This diff is large: its 150 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-output.xml+0−106

This diff is large: its 107 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-overlay.xml+0−368

This diff is large: its 369 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-radio.xml+0−49

This diff is large: its 50 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-raw-vbi.xml+0−345

This diff is large: its 346 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-rds.xml+0−196

This diff is large: its 197 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-sdr.xml+0−126

This diff is large: its 127 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-sliced-vbi.xml+0−706

This diff is large: its 707 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-subdev.xml+0−478

This diff is large: its 479 lines aren’t shown here.

Documentation/DocBook/media/v4l/dev-teletext.xml+0−29

This diff is large: its 30 lines aren’t shown here.

Documentation/DocBook/media/v4l/driver.xml+0−200

This diff is large: its 201 lines aren’t shown here.

Documentation/DocBook/media/v4l/fdl-appendix.xml+0−671

This diff is large: its 672 lines aren’t shown here.

Documentation/DocBook/media/v4l/fieldseq_bt.pdf+0−0

Binary file not shown.

Documentation/DocBook/media/v4l/fieldseq_tb.pdf+0−0

Binary file not shown.

Documentation/DocBook/media/v4l/func-close.xml+0−62

This diff is large: its 63 lines aren’t shown here.

Documentation/DocBook/media/v4l/func-ioctl.xml+0−71

This diff is large: its 72 lines aren’t shown here.

Documentation/DocBook/media/v4l/func-mmap.xml+0−183

This diff is large: its 184 lines aren’t shown here.

Documentation/DocBook/media/v4l/func-munmap.xml+0−76

This diff is large: its 77 lines aren’t shown here.

Documentation/DocBook/media/v4l/func-open.xml+0−113

This diff is large: its 114 lines aren’t shown here.

Documentation/DocBook/media/v4l/func-poll.xml+0−142

This diff is large: its 143 lines aren’t shown here.

Documentation/DocBook/media/v4l/func-read.xml+0−181

This diff is large: its 182 lines aren’t shown here.

Documentation/DocBook/media/v4l/func-select.xml+0−130

This diff is large: its 131 lines aren’t shown here.

Documentation/DocBook/media/v4l/func-write.xml+0−128

This diff is large: its 129 lines aren’t shown here.

Documentation/DocBook/media/v4l/gen-errors.xml+0−77

This diff is large: its 78 lines aren’t shown here.

Documentation/DocBook/media/v4l/io.xml+0−1545

This diff is large: its 1546 lines aren’t shown here.

Documentation/DocBook/media/v4l/keytable.c.xml+0−172

This diff is large: its 173 lines aren’t shown here.

Documentation/DocBook/media/v4l/libv4l.xml+0−160

This diff is large: its 161 lines aren’t shown here.

Documentation/DocBook/media/v4l/lirc_device_interface.xml+0−255

This diff is large: its 256 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-controller.xml+0−105

This diff is large: its 106 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-func-close.xml+0−59

This diff is large: its 60 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-func-ioctl.xml+0−73

This diff is large: its 74 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-func-open.xml+0−94

This diff is large: its 95 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-ioc-device-info.xml+0−132

This diff is large: its 133 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml+0−180

This diff is large: its 181 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-ioc-enum-links.xml+0−160

This diff is large: its 161 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-ioc-g-topology.xml+0−391

This diff is large: its 392 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-ioc-setup-link.xml+0−84

This diff is large: its 85 lines aren’t shown here.

Documentation/DocBook/media/v4l/media-types.xml+0−379

This diff is large: its 380 lines aren’t shown here.

Documentation/DocBook/media/v4l/pipeline.pdf+0−0

Binary file not shown.

Documentation/DocBook/media/v4l/pixfmt-grey.xml+0−62

This diff is large: its 63 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-m420.xml+0−139

This diff is large: its 140 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-nv12.xml+0−143

This diff is large: its 144 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-nv12m.xml+0−153

This diff is large: its 154 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml+0−66

This diff is large: its 67 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-nv16.xml+0−166

This diff is large: its 167 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-nv16m.xml+0−170

This diff is large: its 171 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-nv24.xml+0−121

This diff is large: its 122 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml+0−937

This diff is large: its 938 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml+0−236

This diff is large: its 237 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml+0−83

This diff is large: its 84 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml+0−67

This diff is large: its 68 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-sdr-cs08.xml+0−44

This diff is large: its 45 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-sdr-cs14le.xml+0−47

This diff is large: its 48 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-sdr-cu08.xml+0−44

This diff is large: its 45 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-sdr-cu16le.xml+0−46

This diff is large: its 47 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-sdr-ru12le.xml+0−40

This diff is large: its 41 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml+0−67

This diff is large: its 68 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml+0−67

This diff is large: its 68 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-srggb10.xml+0−90

This diff is large: its 91 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml+0−34

This diff is large: its 35 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml+0−28

This diff is large: its 29 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml+0−99

This diff is large: its 100 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-srggb12.xml+0−90

This diff is large: its 91 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-srggb8.xml+0−67

This diff is large: its 68 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-uv8.xml+0−62

This diff is large: its 63 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-uyvy.xml+0−120

This diff is large: its 121 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-vyuy.xml+0−120

This diff is large: its 121 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-y10.xml+0−79

This diff is large: its 80 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-y10b.xml+0−43

This diff is large: its 44 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-y12.xml+0−79

This diff is large: its 80 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-y12i.xml+0−49

This diff is large: its 50 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-y16-be.xml+0−81

This diff is large: its 82 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-y16.xml+0−81

This diff is large: its 82 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-y41p.xml+0−149

This diff is large: its 150 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-y8i.xml+0−80

This diff is large: its 81 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-yuv410.xml+0−133

This diff is large: its 134 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml+0−147

This diff is large: its 148 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-yuv420.xml+0−149

This diff is large: its 150 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml+0−162

This diff is large: its 163 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml+0−166

This diff is large: its 167 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml+0−153

This diff is large: its 154 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml+0−177

This diff is large: its 178 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-yuyv.xml+0−120

This diff is large: its 121 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-yvyu.xml+0−120

This diff is large: its 121 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt-z16.xml+0−81

This diff is large: its 82 lines aren’t shown here.

Documentation/DocBook/media/v4l/pixfmt.xml+0−2003

This diff is large: its 2004 lines aren’t shown here.

Documentation/DocBook/media/v4l/planar-apis.xml+0−62

This diff is large: its 63 lines aren’t shown here.

Documentation/DocBook/media/v4l/remote_controllers.xml+0−320

This diff is large: its 321 lines aren’t shown here.

Documentation/DocBook/media/v4l/selection-api.xml+0−317

This diff is large: its 318 lines aren’t shown here.

Documentation/DocBook/media/v4l/selections-common.xml+0−180

This diff is large: its 181 lines aren’t shown here.

Documentation/DocBook/media/v4l/subdev-formats.xml+0−4040

This diff is large: its 4041 lines aren’t shown here.

Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia+0−614

This diff is large: its 615 lines aren’t shown here.

Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg+0−63

This diff is large: its 64 lines aren’t shown here.

Documentation/DocBook/media/v4l/subdev-image-processing-full.dia+0−1588

This diff is large: its 1589 lines aren’t shown here.

Documentation/DocBook/media/v4l/subdev-image-processing-full.svg+0−163

This diff is large: its 164 lines aren’t shown here.

Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia+0−1152

This diff is large: its 1153 lines aren’t shown here.

Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg+0−116

This diff is large: its 117 lines aren’t shown here.

Documentation/DocBook/media/v4l/v4l2.xml+0−728

This diff is large: its 729 lines aren’t shown here.

Documentation/DocBook/media/v4l/v4l2grab.c.xml+0−164

This diff is large: its 165 lines aren’t shown here.

Documentation/DocBook/media/v4l/vbi_525.pdf+0−0

Binary file not shown.

Documentation/DocBook/media/v4l/vbi_625.pdf+0−0

Binary file not shown.

Documentation/DocBook/media/v4l/vbi_hsync.pdf+0−0

Binary file not shown.

Documentation/DocBook/media/v4l/vidioc-create-bufs.xml+0−158

This diff is large: its 159 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-cropcap.xml+0−166

This diff is large: its 167 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml+0−207

This diff is large: its 208 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml+0−227

This diff is large: its 228 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml+0−259

This diff is large: its 260 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-dqevent.xml+0−471

This diff is large: its 472 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml+0−210

This diff is large: its 211 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml+0−197

This diff is large: its 198 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml+0−128

This diff is large: its 129 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml+0−159

This diff is large: its 160 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml+0−260

This diff is large: its 261 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml+0−265

This diff is large: its 266 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml+0−175

This diff is large: its 176 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enumaudio.xml+0−76

This diff is large: its 77 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml+0−79

This diff is large: its 80 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enuminput.xml+0−316

This diff is large: its 317 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enumoutput.xml+0−201

This diff is large: its 202 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-enumstd.xml+0−389

This diff is large: its 390 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-expbuf.xml+0−205

This diff is large: its 206 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-audio.xml+0−172

This diff is large: its 173 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-audioout.xml+0−138

This diff is large: its 139 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-crop.xml+0−129

This diff is large: its 130 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml+0−133

This diff is large: its 134 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml+0−343

This diff is large: its 344 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-edid.xml+0−173

This diff is large: its 174 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml+0−189

This diff is large: its 190 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml+0−456

This diff is large: its 457 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml+0−459

This diff is large: its 460 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-fmt.xml+0−204

This diff is large: its 205 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-frequency.xml+0−148

This diff is large: its 149 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-input.xml+0−83

This diff is large: its 84 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml+0−175

This diff is large: its 176 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-modulator.xml+0−252

This diff is large: its 253 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-output.xml+0−85

This diff is large: its 86 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-parm.xml+0−314

This diff is large: its 315 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-priority.xml+0−135

This diff is large: its 136 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-selection.xml+0−233

This diff is large: its 234 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml+0−255

This diff is large: its 256 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-std.xml+0−98

This diff is large: its 99 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-g-tuner.xml+0−594

This diff is large: its 595 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-log-status.xml+0−41

This diff is large: its 42 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-overlay.xml+0−74

This diff is large: its 75 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml+0−88

This diff is large: its 89 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-qbuf.xml+0−202

This diff is large: its 203 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml+0−115

This diff is large: its 116 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-querybuf.xml+0−106

This diff is large: its 107 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-querycap.xml+0−350

This diff is large: its 351 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-queryctrl.xml+0−661

This diff is large: its 662 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-querystd.xml+0−85

This diff is large: its 86 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-reqbufs.xml+0−137

This diff is large: its 138 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml+0−188

This diff is large: its 189 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-streamon.xml+0−136

This diff is large: its 137 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml+0−151

This diff is large: its 152 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml+0−153

This diff is large: its 154 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml+0−118

This diff is large: its 119 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml+0−158

This diff is large: its 159 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml+0−177

This diff is large: its 178 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml+0−135

This diff is large: its 136 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml+0−159

This diff is large: its 160 lines aren’t shown here.

Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml+0−130

This diff is large: its 131 lines aren’t shown here.

Documentation/DocBook/media/vbi_525.gif.b64+0−84

This diff is large: its 85 lines aren’t shown here.

Documentation/DocBook/media/vbi_625.gif.b64+0−90

This diff is large: its 91 lines aren’t shown here.

Documentation/DocBook/media/vbi_hsync.gif.b64+0−43

This diff is large: its 44 lines aren’t shown here.

Documentation/DocBook/media_api.tmpl+0−121

This diff is large: its 122 lines aren’t shown here.

Documentation/Makefile.sphinx+2−3

This diff is large: its 20 lines aren’t shown here.

Documentation/PCI/MSI-HOWTO.txt+79−390

This diff is large: its 510 lines aren’t shown here.

Documentation/arm/Atmel/README+8−2

This diff is large: its 18 lines aren’t shown here.

Documentation/binfmt_misc.txt+7−0

This diff is large: its 14 lines aren’t shown here.

Documentation/block/biodoc.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/cgroup-v1/cgroups.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/cgroup-v1/cpusets.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/cgroup-v1/memcg_test.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/coccinelle.txt+147−1

This diff is large: its 189 lines aren’t shown here.

Documentation/device-mapper/dm-flakey.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/arm/arm,scpi.txt+34−0

This diff is large: its 63 lines aren’t shown here.

Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method.txt+3−3

This diff is large: its 26 lines aren’t shown here.

Documentation/devicetree/bindings/arm/bcm/brcm,bcm23550-cpu-method.txt+36−0

This diff is large: its 37 lines aren’t shown here.

Documentation/devicetree/bindings/arm/bcm/brcm,bcm23550.txt+15−0

This diff is large: its 16 lines aren’t shown here.

Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt+4−0

This diff is large: its 11 lines aren’t shown here.

Documentation/devicetree/bindings/arm/cpus.txt+3−0

This diff is large: its 17 lines aren’t shown here.

Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt+14−0

This diff is large: its 15 lines aren’t shown here.

Documentation/devicetree/bindings/arm/mediatek.txt+4−0

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/arm/olimex.txt+6−2

This diff is large: its 12 lines aren’t shown here.

Documentation/devicetree/bindings/arm/rockchip.txt+3−0

This diff is large: its 10 lines aren’t shown here.

Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/arm/shmobile.txt+6−0

This diff is large: its 26 lines aren’t shown here.

Documentation/devicetree/bindings/arm/tegra.txt+4−0

This diff is large: its 12 lines aren’t shown here.

Documentation/devicetree/bindings/ata/ahci-platform.txt+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/bus/nvidia,tegra210-aconnect.txt+45−0

This diff is large: its 46 lines aren’t shown here.

Documentation/devicetree/bindings/clock/clps711x-clock.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/display/arm,malidp.txt+65−0

This diff is large: its 66 lines aren’t shown here.

Documentation/devicetree/bindings/display/bridge/adi,adv7511.txt+21−5

This diff is large: its 56 lines aren’t shown here.

Documentation/devicetree/bindings/display/bridge/analogix_dp.txt+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/display/bridge/sii902x.txt+35−0

This diff is large: its 36 lines aren’t shown here.

Documentation/devicetree/bindings/display/bridge/toshiba,tc358767.txt+53−0

This diff is large: its 54 lines aren’t shown here.

Documentation/devicetree/bindings/display/cirrus,clps711x-fb.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/display/connector/hdmi-connector.txt+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/display/fsl,dcu.txt+7−2

This diff is large: its 22 lines aren’t shown here.

Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.txt+148−0

This diff is large: its 149 lines aren’t shown here.

Documentation/devicetree/bindings/display/msm/dsi.txt+77−40

This diff is large: its 206 lines aren’t shown here.

Documentation/devicetree/bindings/display/msm/mdp.txt+0−59

This diff is large: its 60 lines aren’t shown here.

Documentation/devicetree/bindings/display/msm/mdp4.txt+112−0

This diff is large: its 113 lines aren’t shown here.

Documentation/devicetree/bindings/display/msm/mdp5.txt+160−0

This diff is large: its 161 lines aren’t shown here.

Documentation/devicetree/bindings/display/panel/lg,lp079qx1-sp0v.txt+7−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/display/panel/lg,lp097qx1-spa1.txt+7−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/display/panel/panel-dpi.txt+2−0

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/display/panel/samsung,lsn122dl01-c01.txt+7−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/display/panel/sharp,lq101k1ly04.txt+7−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/display/panel/sharp,lq123p1jx31.txt+7−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/display/panel/starry,kr122ea0sra.txt+7−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt+8−1

This diff is large: its 23 lines aren’t shown here.

Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt+10−3

This diff is large: its 34 lines aren’t shown here.

Documentation/devicetree/bindings/dma/ti-edma.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/firmware/qcom,scm.txt+28−0

This diff is large: its 29 lines aren’t shown here.

Documentation/devicetree/bindings/iio/adc/at91_adc.txt+4−8

This diff is large: its 33 lines aren’t shown here.

Documentation/devicetree/bindings/input/clps711x-keypad.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/input/rotary-encoder.txt+4−0

This diff is large: its 24 lines aren’t shown here.

Documentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt+36−0

This diff is large: its 37 lines aren’t shown here.

Documentation/devicetree/bindings/input/touchscreen/sis_i2c.txt+33−0

This diff is large: its 34 lines aren’t shown here.

Documentation/devicetree/bindings/interrupt-controller/cirrus,clps711x-intc.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/interrupt-controller/mediatek,sysirq.txt+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt+1−1

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/iommu/mediatek,iommu.txt+9−4

This diff is large: its 33 lines aren’t shown here.

Documentation/devicetree/bindings/iommu/msm,iommu-v0.txt+64−0

This diff is large: its 65 lines aren’t shown here.

Documentation/devicetree/bindings/leds/backlight/lp855x.txt+2−0

This diff is large: its 16 lines aren’t shown here.

Documentation/devicetree/bindings/mailbox/brcm,iproc-pdc-mbox.txt+23−0

This diff is large: its 24 lines aren’t shown here.

Documentation/devicetree/bindings/media/nokia,n900-ir+20−0

This diff is large: its 21 lines aren’t shown here.

Documentation/devicetree/bindings/memory-controllers/atmel,ebi.txt+136−0

This diff is large: its 137 lines aren’t shown here.

Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt+18−3

This diff is large: its 35 lines aren’t shown here.

Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt+3−1

This diff is large: its 11 lines aren’t shown here.

Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt+6−1

This diff is large: its 21 lines aren’t shown here.

Documentation/devicetree/bindings/mfd/twl6040.txt+2−2

This diff is large: its 11 lines aren’t shown here.

Documentation/devicetree/bindings/mmc/arasan,sdhci.txt+33−2

This diff is large: its 53 lines aren’t shown here.

Documentation/devicetree/bindings/mmc/brcm,bcm2835-sdhci.txt+0−18

This diff is large: its 19 lines aren’t shown here.

Documentation/devicetree/bindings/mmc/brcm,bcm7425-sdhci.txt+36−0

This diff is large: its 37 lines aren’t shown here.

Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt+2−0

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/mmc/mmc.txt+4−0

This diff is large: its 13 lines aren’t shown here.

Documentation/devicetree/bindings/mtd/atmel-quadspi.txt+32−0

This diff is large: its 33 lines aren’t shown here.

Documentation/devicetree/bindings/mtd/brcm,brcmnand.txt+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/mtd/cadence-quadspi.txt+56−0

This diff is large: its 57 lines aren’t shown here.

Documentation/devicetree/bindings/mtd/gpmc-nand.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/mtd/hisilicon,fmc-spi-nor.txt+24−0

This diff is large: its 25 lines aren’t shown here.

Documentation/devicetree/bindings/mtd/mtk-nand.txt+160−0

This diff is large: its 161 lines aren’t shown here.

Documentation/devicetree/bindings/mtd/sunxi-nand.txt+6−0

This diff is large: its 17 lines aren’t shown here.

Documentation/devicetree/bindings/net/apm-xgene-enet.txt+2−2

This diff is large: its 11 lines aren’t shown here.

Documentation/devicetree/bindings/net/fsl-fec.txt+3−0

This diff is large: its 10 lines aren’t shown here.

Documentation/devicetree/bindings/pci/aardvark-pci.txt+56−0

This diff is large: its 57 lines aren’t shown here.

Documentation/devicetree/bindings/pci/axis,artpec6-pcie.txt+46−0

This diff is large: its 47 lines aren’t shown here.

Documentation/devicetree/bindings/pci/layerscape-pci.txt+4−0

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt+9−0

This diff is large: its 23 lines aren’t shown here.

Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt+2−0

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-dpaux-padctl.txt+60−0

This diff is large: its 61 lines aren’t shown here.

Documentation/devicetree/bindings/power/renesas,apmu.txt+31−0

This diff is large: its 32 lines aren’t shown here.

Documentation/devicetree/bindings/power/renesas,rcar-sysc.txt+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt+0−43

This diff is large: its 44 lines aren’t shown here.

Documentation/devicetree/bindings/powerpc/opal/oppanel-opal.txt+14−0

This diff is large: its 15 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/brcm,iproc-pwm.txt+21−0

This diff is large: its 22 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/cirrus,clps711x-pwm.txt+2−3

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/google,cros-ec-pwm.txt+23−0

This diff is large: its 24 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt+8−4

This diff is large: its 19 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt+4−0

This diff is large: its 11 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/pwm-tiecap.txt+29−9

This diff is large: its 58 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt+29−9

This diff is large: its 58 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/pwm-tipwmss.txt+31−2

This diff is large: its 51 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/renesas,pwm-rcar.txt+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/pwm/st,stmpe-pwm.txt+18−0

This diff is large: its 19 lines aren’t shown here.

Documentation/devicetree/bindings/regulator/pwm-regulator.txt+19−0

This diff is large: its 33 lines aren’t shown here.

Documentation/devicetree/bindings/reserved-memory/ramoops.txtrenamed from Documentation/devicetree/bindings/misc/ramoops.txt+4−4

This diff is large: its 22 lines aren’t shown here.

Documentation/devicetree/bindings/reset/amlogic,meson-reset.txt+18−0

This diff is large: its 19 lines aren’t shown here.

Documentation/devicetree/bindings/reset/hisilicon,hi6220-reset.txt+3−1

This diff is large: its 11 lines aren’t shown here.

Documentation/devicetree/bindings/reset/ti-syscon-reset.txt+91−0

This diff is large: its 92 lines aren’t shown here.

Documentation/devicetree/bindings/rng/amlogic,meson-rng.txt+14−0

This diff is large: its 15 lines aren’t shown here.

Documentation/devicetree/bindings/rtc/rtc-opal.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/serial/cirrus,clps711x-uart.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/serial/mtk-uart.txt+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm/brg.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/brg.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm/i2c.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/i2c.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm/pic.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/pic.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/cpm/usb.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/usb.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/gpio.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/gpio.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/network.txt+124−0

This diff is large: its 125 lines aren’t shown here.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe.txt+52−0

This diff is large: its 59 lines aren’t shown here.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/firmware.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/firmware.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/par_io.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/par_io.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/pincfg.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/ucc.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/ucc.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/qe/usb.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/usb.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/serial.txtrenamed from Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/serial.txt+0−0

File renamed without changes.

Documentation/devicetree/bindings/soc/fsl/cpm_qe/uqe_serial.txt+17−0

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/soc/qcom/qcom,smsm.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/devicetree/bindings/soc/qcom/qcom,wcnss.txt+116−0

This diff is large: its 117 lines aren’t shown here.

Documentation/devicetree/bindings/sound/adi,adau17x1.txt+8−0

This diff is large: its 21 lines aren’t shown here.

Documentation/devicetree/bindings/sound/adi,adau7002.txt+19−0

This diff is large: its 20 lines aren’t shown here.

Documentation/devicetree/bindings/sound/brcm,cygnus-audio.txt+67−0

This diff is large: its 68 lines aren’t shown here.

Documentation/devicetree/bindings/sound/bt-sco.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/sound/cs35l33.txt+126−0

This diff is large: its 127 lines aren’t shown here.

Documentation/devicetree/bindings/sound/cs53l30.txt+44−0

This diff is large: its 45 lines aren’t shown here.

Documentation/devicetree/bindings/sound/designware-i2s.txt+4−0

This diff is large: its 11 lines aren’t shown here.

Documentation/devicetree/bindings/sound/fsl-asoc-card.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/sound/max98504.txt+44−0

This diff is large: its 45 lines aren’t shown here.

Documentation/devicetree/bindings/sound/max9860.txt+28−0

This diff is large: its 29 lines aren’t shown here.

Documentation/devicetree/bindings/sound/mt2701-afe-pcm.txt+150−0

This diff is large: its 151 lines aren’t shown here.

Documentation/devicetree/bindings/sound/mt2701-cs42448.txt+43−0

This diff is large: its 44 lines aren’t shown here.

Documentation/devicetree/bindings/sound/mt8173-rt5650.txt+8−2

This diff is large: its 30 lines aren’t shown here.

Documentation/devicetree/bindings/sound/omap-mcpdm.txt+10−0

This diff is large: its 21 lines aren’t shown here.

Documentation/devicetree/bindings/sound/renesas,rsnd.txt+2−0

This diff is large: its 9 lines aren’t shown here.

Documentation/devicetree/bindings/sound/rockchip-i2s.txt+5−0

This diff is large: its 12 lines aren’t shown here.

Documentation/devicetree/bindings/sound/rt5514.txt+5−0

This diff is large: its 12 lines aren’t shown here.

Documentation/devicetree/bindings/sound/samsung,odroidx2-max98090.txt+0−35

This diff is large: its 36 lines aren’t shown here.

Documentation/devicetree/bindings/sound/sgtl5000.txt+9−9

This diff is large: its 34 lines aren’t shown here.

Documentation/devicetree/bindings/sound/st,sti-asoc-card.txt+10−10

This diff is large: its 58 lines aren’t shown here.

Documentation/devicetree/bindings/sound/sun4i-i2s.txt+34−0

This diff is large: its 35 lines aren’t shown here.

Documentation/devicetree/bindings/timer/cirrus,clps711x-timer.txt+3−3

This diff is large: its 26 lines aren’t shown here.

Documentation/devicetree/bindings/usb/atmel-usb.txt+7−7

This diff is large: its 59 lines aren’t shown here.

Documentation/devicetree/bindings/usb/nvidia,tegra124-xusb.txt+4−4

This diff is large: its 15 lines aren’t shown here.

Documentation/devicetree/bindings/vendor-prefixes.txt+2−0

This diff is large: its 16 lines aren’t shown here.

Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt+16−0

This diff is large: its 17 lines aren’t shown here.

Documentation/devicetree/bindings/watchdog/meson-gxbb-wdt.txt+16−0

This diff is large: its 17 lines aren’t shown here.

Documentation/devicetree/bindings/watchdog/qcom-wdt.txt+4−0

This diff is large: its 11 lines aren’t shown here.

Documentation/devicetree/bindings/watchdog/renesas-wdt.txt+5−1

This diff is large: its 13 lines aren’t shown here.

Documentation/dontdiff+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/driver-model/devres.txt+7−0

This diff is large: its 16 lines aren’t shown here.

Documentation/filesystems/Locking+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/filesystems/nilfs2.txt+2−1

This diff is large: its 10 lines aren’t shown here.

Documentation/filesystems/orangefs.txt+46−4

This diff is large: its 76 lines aren’t shown here.

Documentation/filesystems/porting+7−0

This diff is large: its 11 lines aren’t shown here.

Documentation/filesystems/tmpfs.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/filesystems/vfs.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/gcc-plugins.txt+87−0

This diff is large: its 88 lines aren’t shown here.

Documentation/gpu/drm-internals.rst+381−0

This diff is large: its 382 lines aren’t shown here.

Documentation/gpu/drm-kms-helpers.rst+260−0

This diff is large: its 261 lines aren’t shown here.

Documentation/gpu/drm-kms.rst+653−0

This diff is large: its 654 lines aren’t shown here.

Documentation/gpu/drm-mm.rst+454−0

This diff is large: its 455 lines aren’t shown here.

Documentation/gpu/drm-uapi.rst+111−0

This diff is large: its 112 lines aren’t shown here.

Documentation/gpu/i915.rst+347−0

This diff is large: its 348 lines aren’t shown here.

Documentation/gpu/index.rst+14−0

This diff is large: its 15 lines aren’t shown here.

Documentation/gpu/introduction.rst+51−0

This diff is large: its 52 lines aren’t shown here.

Documentation/gpu/kms-properties.csv+129−0

This diff is large: its 130 lines aren’t shown here.

Documentation/gpu/vga-switcheroo.rst+98−0

This diff is large: its 99 lines aren’t shown here.

Documentation/index.rst+1−0

This diff is large: its 8 lines aren’t shown here.

Documentation/ioctl/ioctl-number.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/kernel-parameters.txt+36−2

This diff is large: its 104 lines aren’t shown here.

Documentation/kernel-per-CPU-kthreads.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/mmc/mmc-dev-attrs.txt+2−0

This diff is large: its 9 lines aren’t shown here.

Documentation/module-signing.txt+6−0

This diff is large: its 10 lines aren’t shown here.

Documentation/ramoops.txt+27−11

This diff is large: its 46 lines aren’t shown here.

Documentation/rapidio/mport_cdev.txt+1−2

This diff is large: its 10 lines aren’t shown here.

Documentation/rapidio/rio_cm.txt+119−0

This diff is large: its 120 lines aren’t shown here.

Documentation/rapidio/tsi721.txt+26−0

This diff is large: its 33 lines aren’t shown here.

Documentation/scheduler/sched-deadline.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/scheduler/sched-design-CFS.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/scheduler/sched-rt-group.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/sound/alsa/soc/machine.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/sound/alsa/timestamping.txt+6−6

This diff is large: its 44 lines aren’t shown here.

Documentation/sysctl/kernel.txt+14−0

This diff is large: its 21 lines aren’t shown here.

Documentation/virtual/kvm/api.txt+106−9

This diff is large: its 209 lines aren’t shown here.

Documentation/virtual/kvm/devices/arm-vgic.txt+19−6

This diff is large: its 52 lines aren’t shown here.

Documentation/virtual/kvm/devices/vm.txt+86−1

This diff is large: its 101 lines aren’t shown here.

Documentation/virtual/kvm/locking.txt+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/vm/numa+2−2

This diff is large: its 18 lines aren’t shown here.

Documentation/vm/numa_memory_policy.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/vm/page_migration+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/vm/unevictable-lru.txt+1−1

This diff is large: its 9 lines aren’t shown here.

Documentation/watchdog/hpwdt.txt+2−3

This diff is large: its 17 lines aren’t shown here.

Documentation/watchdog/src/watchdog-test.c+23−16

This diff is large: its 110 lines aren’t shown here.

Documentation/watchdog/watchdog-kernel-api.txt+7−2

This diff is large: its 23 lines aren’t shown here.

Documentation/x86/x86_64/fake-numa-for-cpusets+2−2

This diff is large: its 18 lines aren’t shown here.

MAINTAINERS+200−33

This diff is large: its 596 lines aren’t shown here.

Makefile+19−26

This diff is large: its 130 lines aren’t shown here.

arch/Kconfig+46−0

This diff is large: its 60 lines aren’t shown here.

arch/alpha/boot/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

arch/alpha/include/asm/dma-mapping.h+0−2

This diff is large: its 9 lines aren’t shown here.

arch/alpha/include/asm/rtc.h+0−1

This diff is large: its 2 lines aren’t shown here.

arch/alpha/include/asm/thread_info.h+0−27

This diff is large: its 34 lines aren’t shown here.

arch/alpha/kernel/core_marvel.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/alpha/kernel/machvec_impl.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/alpha/kernel/pci-noop.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/alpha/kernel/pci_iommu.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/alpha/kernel/rtc.c+2−4

This diff is large: its 27 lines aren’t shown here.

arch/arc/boot/dts/nsimosci.dts+11−3

This diff is large: its 29 lines aren’t shown here.

arch/arc/boot/dts/nsimosci_hs.dts+11−3

This diff is large: its 29 lines aren’t shown here.

arch/arc/boot/dts/nsimosci_hs_idu.dts+11−3

This diff is large: its 29 lines aren’t shown here.

arch/arc/boot/dts/vdk_axs10x_mb.dtsi+9−4

This diff is large: its 28 lines aren’t shown here.

arch/arc/boot/dts/vdk_hs38_smp.dts+1−1

This diff is large: its 8 lines aren’t shown here.

arch/arc/configs/nsimosci_defconfig+2−1

This diff is large: its 10 lines aren’t shown here.

arch/arc/configs/nsimosci_hs_defconfig+2−1

This diff is large: its 10 lines aren’t shown here.

arch/arc/configs/nsimosci_hs_smp_defconfig+2−1

This diff is large: its 10 lines aren’t shown here.

arch/arc/configs/vdk_hs38_smp_defconfig+2−5

This diff is large: its 15 lines aren’t shown here.

arch/arc/mm/dma.c+6−6

This diff is large: its 52 lines aren’t shown here.

arch/arc/mm/init.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/Kconfig+19−33

This diff is large: its 263 lines aren’t shown here.

arch/arm/Kconfig.debug+48−17

This diff is large: its 126 lines aren’t shown here.

arch/arm/Makefile+0−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/Makefile+35−8

This diff is large: its 188 lines aren’t shown here.

arch/arm/boot/dts/aks-cdu.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/am335x-bone-common.dtsi+6−6

This diff is large: its 34 lines aren’t shown here.

arch/arm/boot/dts/am335x-boneblack.dts+11−0

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/am335x-evm.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/am335x-evmsk.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/am335x-icev2.dts+7−0

This diff is large: its 14 lines aren’t shown here.

arch/arm/boot/dts/am33xx.dtsi+100−26

This diff is large: its 198 lines aren’t shown here.

arch/arm/boot/dts/am3517-craneboard.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/am4372.dtsi+92−19

This diff is large: its 208 lines aren’t shown here.

arch/arm/boot/dts/am437x-gp-evm.dts+5−1

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/am437x-idk-evm.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/am437x-sbc-t43.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/am43x-epos-evm.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/am43xx-clocks.dtsi+8−0

This diff is large: its 15 lines aren’t shown here.

arch/arm/boot/dts/am57xx-sbc-am57x.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/animeo_ip.dts+1−10

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/armada-388-clearfog.dts+0−16

This diff is large: its 23 lines aren’t shown here.

arch/arm/boot/dts/at91-ariag25.dts+1−10

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/at91-cosino.dtsi+0−9

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/at91-foxg20.dts+2−11

This diff is large: its 32 lines aren’t shown here.

arch/arm/boot/dts/at91-kizbox.dts+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/at91-qil_a9260.dts+2−11

This diff is large: its 34 lines aren’t shown here.

arch/arm/boot/dts/at91-sam9_l9260.dts+121−0

This diff is large: its 122 lines aren’t shown here.

arch/arm/boot/dts/at91-sama5d2_xplained.dts+32−9

This diff is large: its 96 lines aren’t shown here.

arch/arm/boot/dts/at91-sama5d3_xplained.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/at91-sama5d4_ma5d4.dtsi+7−4

This diff is large: its 32 lines aren’t shown here.

arch/arm/boot/dts/at91-sama5d4_ma5d4evk.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/at91-sama5d4_xplained.dts+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/at91-sama5d4ek.dts+0−20

This diff is large: its 27 lines aren’t shown here.

arch/arm/boot/dts/at91-vinco.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/at91rm9200.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/at91sam9260.dtsi+6−10

This diff is large: its 48 lines aren’t shown here.

arch/arm/boot/dts/at91sam9260ek.dts+211−0

This diff is large: its 212 lines aren’t shown here.

arch/arm/boot/dts/at91sam9261.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/at91sam9263.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/at91sam9263ek.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/at91sam9g20ek_common.dtsi+2−2

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/at91sam9g25ek.dts+26−0

This diff is large: its 41 lines aren’t shown here.

arch/arm/boot/dts/at91sam9g45.dtsi+12−16

This diff is large: its 101 lines aren’t shown here.

arch/arm/boot/dts/at91sam9n12.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/at91sam9rl.dtsi+13−17

This diff is large: its 107 lines aren’t shown here.

arch/arm/boot/dts/at91sam9rlek.dts+2−2

This diff is large: its 14 lines aren’t shown here.

arch/arm/boot/dts/at91sam9x5.dtsi+14−18

This diff is large: its 120 lines aren’t shown here.

arch/arm/boot/dts/at91sam9x5ek.dtsi+0−33

This diff is large: its 47 lines aren’t shown here.

arch/arm/boot/dts/axp209.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/axp22x.dtsi+12−0

This diff is large: its 29 lines aren’t shown here.

arch/arm/boot/dts/axp809.dtsi+53−0

This diff is large: its 54 lines aren’t shown here.

arch/arm/boot/dts/bcm-cygnus.dtsi+11−0

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/bcm-nsp.dtsi+54−1

This diff is large: its 89 lines aren’t shown here.

arch/arm/boot/dts/bcm11351.dtsi+1−1

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/bcm21664.dtsi+1−1

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/bcm23550-sparrow.dts+80−0

This diff is large: its 81 lines aren’t shown here.

arch/arm/boot/dts/bcm23550.dtsi+415−0

This diff is large: its 416 lines aren’t shown here.

arch/arm/boot/dts/bcm2835-rpi-b-plus.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/bcm2835-rpi-b.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/bcm2836-rpi-2-b.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/bcm283x-rpi-smsc9512.dtsi+19−0

This diff is large: its 20 lines aren’t shown here.

arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi+19−0

This diff is large: its 20 lines aren’t shown here.

arch/arm/boot/dts/bcm283x.dtsi+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts+4−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/bcm4708-netgear-r6250.dts+4−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts+4−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts+40−0

This diff is large: its 44 lines aren’t shown here.

arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts+4−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts+5−1

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/bcm5301x-nand-cs0-bch1.dtsi+15−0

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/bcm5301x-nand-cs0-bch8.dtsi+5−11

This diff is large: its 22 lines aren’t shown here.

arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi+18−0

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/bcm5301x.dtsi+47−0

This diff is large: its 68 lines aren’t shown here.

arch/arm/boot/dts/bcm953012er.dts+104−0

This diff is large: its 105 lines aren’t shown here.

arch/arm/boot/dts/bcm958525xmc.dts+109−0

This diff is large: its 110 lines aren’t shown here.

arch/arm/boot/dts/bcm958625hr.dts+111−0

This diff is large: its 112 lines aren’t shown here.

arch/arm/boot/dts/compulab-sb-som.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/dm814x.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/dra7.dtsi+240−2

This diff is large: its 284 lines aren’t shown here.

arch/arm/boot/dts/dra72-evm-common.dtsi+6−6

This diff is large: its 40 lines aren’t shown here.

arch/arm/boot/dts/dra72x.dtsi+0−16

This diff is large: its 23 lines aren’t shown here.

arch/arm/boot/dts/dra74x.dtsi+1−24

This diff is large: its 36 lines aren’t shown here.

arch/arm/boot/dts/emev2-kzm9d.dts+14−10

This diff is large: its 82 lines aren’t shown here.

arch/arm/boot/dts/emev2.dtsi+13−13

This diff is large: its 95 lines aren’t shown here.

arch/arm/boot/dts/ep7209.dtsi+191−0

This diff is large: its 192 lines aren’t shown here.

arch/arm/boot/dts/ep7211-edb7211.dts+100−0

This diff is large: its 101 lines aren’t shown here.

arch/arm/boot/dts/ep7211.dtsi+12−0

This diff is large: its 13 lines aren’t shown here.

arch/arm/boot/dts/ethernut5.dts+2−2

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/evk-pro3.dts+2−2

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/exynos-mfc-reserved-memory.dtsi+35−0

This diff is large: its 36 lines aren’t shown here.

arch/arm/boot/dts/exynos3250-rinato.dts+0−4

This diff is large: its 11 lines aren’t shown here.

arch/arm/boot/dts/exynos3250.dtsi+0−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/exynos4.dtsi+0−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/exynos4210-origen.dts+1−6

This diff is large: its 21 lines aren’t shown here.

arch/arm/boot/dts/exynos4210-smdkv310.dts+1−6

This diff is large: its 21 lines aren’t shown here.

arch/arm/boot/dts/exynos4412-odroid-common.dtsi+20−9

This diff is large: its 72 lines aren’t shown here.

arch/arm/boot/dts/exynos4412-odroidu3.dts+18−0

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/exynos4412-odroidx.dts+11−0

This diff is large: its 24 lines aren’t shown here.

arch/arm/boot/dts/exynos4412-odroidx2.dts+11−0

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/exynos4412-origen.dts+17−6

This diff is large: its 44 lines aren’t shown here.

arch/arm/boot/dts/exynos4412-smdk4412.dts+1−6

This diff is large: its 21 lines aren’t shown here.

arch/arm/boot/dts/exynos4412-trats2.dts+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/exynos5.dtsi+139−76

This diff is large: its 237 lines aren’t shown here.

arch/arm/boot/dts/exynos5250-arndale.dts+1−5

This diff is large: its 20 lines aren’t shown here.

arch/arm/boot/dts/exynos5250-smdk5250.dts+1−5

This diff is large: its 20 lines aren’t shown here.

arch/arm/boot/dts/exynos5250-snow-common.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/exynos5250-spring.dts+1−5

This diff is large: its 20 lines aren’t shown here.

arch/arm/boot/dts/exynos5250.dtsi+832−869

This diff is large: its 1813 lines aren’t shown here.

arch/arm/boot/dts/exynos5410-odroidxu.dts+580−0

This diff is large: its 581 lines aren’t shown here.

arch/arm/boot/dts/exynos5410-pinctrl.dtsi+210−0

This diff is large: its 217 lines aren’t shown here.

arch/arm/boot/dts/exynos5410-smdk5410.dts+3−3

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/exynos5410.dtsi+214−119

This diff is large: its 403 lines aren’t shown here.

arch/arm/boot/dts/exynos5420-arndale-octa.dts+1−5

This diff is large: its 20 lines aren’t shown here.

arch/arm/boot/dts/exynos5420-peach-pit.dts+21−11

This diff is large: its 95 lines aren’t shown here.

arch/arm/boot/dts/exynos5420-pinctrl.dtsi+6−6

This diff is large: its 24 lines aren’t shown here.

arch/arm/boot/dts/exynos5420-smdk5420.dts+1−5

This diff is large: its 20 lines aren’t shown here.

arch/arm/boot/dts/exynos5420.dtsi+1303−1467

This diff is large: its 2895 lines aren’t shown here.

arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi+0−103

This diff is large: its 104 lines aren’t shown here.

arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi+92−12

This diff is large: its 157 lines aren’t shown here.

arch/arm/boot/dts/exynos5422-odroidxu3-lite.dts+1−34

This diff is large: its 46 lines aren’t shown here.

arch/arm/boot/dts/exynos5422-odroidxu3.dts+1−34

This diff is large: its 46 lines aren’t shown here.

arch/arm/boot/dts/exynos54xx-odroidxu-leds.dtsi+50−0

This diff is large: its 51 lines aren’t shown here.

arch/arm/boot/dts/exynos54xx.dtsi+199−0

This diff is large: its 200 lines aren’t shown here.

arch/arm/boot/dts/exynos5800-peach-pi.dts+21−11

This diff is large: its 95 lines aren’t shown here.

arch/arm/boot/dts/ge863-pro3.dtsi+0−9

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/hi3519-demb.dts+42−0

This diff is large: its 43 lines aren’t shown here.

arch/arm/boot/dts/hi3519.dtsi+187−0

This diff is large: its 188 lines aren’t shown here.

arch/arm/boot/dts/imx1-ads.dts+2−2

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx1-apf9328.dts+2−2

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx23-sansa.dts+207−0

This diff is large: its 208 lines aren’t shown here.

arch/arm/boot/dts/imx23-xfi3.dts+179−0

This diff is large: its 180 lines aren’t shown here.

arch/arm/boot/dts/imx23.dtsi+48−0

This diff is large: its 83 lines aren’t shown here.

arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts+2−2

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx25-pdk.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx25-pinfunc.h+318−309

This diff is large: its 802 lines aren’t shown here.

arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx27-eukrea-mbimxsd27-baseboard.dts+3−3

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/imx27-pdk.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx27-phytec-phycard-s-rdk.dts+3−3

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts+2−2

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx28-apf28dev.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx28-cfa10049.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx28-eukrea-mbmx28lc.dtsi+4−0

This diff is large: its 32 lines aren’t shown here.

arch/arm/boot/dts/imx28-evk.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx28-tx28.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx28.dtsi+5−0

This diff is large: its 40 lines aren’t shown here.

arch/arm/boot/dts/imx31-bug.dts+1−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts+2−2

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx35-pdk.dts+1−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/imx51-babbage.dts+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts+2−2

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx51-ts4800.dts+27−0

This diff is large: its 41 lines aren’t shown here.

arch/arm/boot/dts/imx53-smd.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx53-tqma53.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx53-tx53.dtsi+3−3

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/imx6dl-riotboard.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/imx6q-apalis-ixora.dts+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/imx6q-arm2.dts+2−1

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx6q-ba16.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx6q-bx50v3.dtsi+6−0

This diff is large: its 13 lines aren’t shown here.

arch/arm/boot/dts/imx6q-cm-fx6.dts+228−53

This diff is large: its 314 lines aren’t shown here.

arch/arm/boot/dts/imx6q-h100.dts+395−0

This diff is large: its 396 lines aren’t shown here.

arch/arm/boot/dts/imx6q-tbs2910.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx6q-utilite-pro.dts+197−0

This diff is large: its 198 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-apalis.dtsi+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-apf6dev.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-aristainetos.dtsi+2−2

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-microsom.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi+2−1

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-sabreauto.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-sabrelite.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-sabresd.dtsi+18−1

This diff is large: its 37 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-tx6.dtsi+3−3

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl-wandboard.dtsi+2−1

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx6qdl.dtsi+3−1

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/imx6sl-warp.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx6sl.dtsi+7−6

This diff is large: its 62 lines aren’t shown here.

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx6sx-sdb.dtsi+13−1

This diff is large: its 34 lines aren’t shown here.

arch/arm/boot/dts/imx6sx.dtsi+6−6

This diff is large: its 54 lines aren’t shown here.

arch/arm/boot/dts/imx6ul-14x14-evk.dts+62−1

This diff is large: its 103 lines aren’t shown here.

arch/arm/boot/dts/imx6ul-pico-hobbit.dts+3−3

This diff is large: its 20 lines aren’t shown here.

arch/arm/boot/dts/imx6ul-tx6ul-mainboard.dts+2−2

This diff is large: its 15 lines aren’t shown here.

arch/arm/boot/dts/imx6ul-tx6ul.dtsi+3−3

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/imx6ul.dtsi+6−3

This diff is large: its 37 lines aren’t shown here.

arch/arm/boot/dts/imx7-colibri-eval-v3.dtsi+148−0

This diff is large: its 149 lines aren’t shown here.

arch/arm/boot/dts/imx7-colibri.dtsi+571−0

This diff is large: its 572 lines aren’t shown here.

arch/arm/boot/dts/imx7d-cl-som-imx7.dts+0−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/imx7d-colibri-eval-v3.dts+66−0

This diff is large: its 67 lines aren’t shown here.

arch/arm/boot/dts/imx7d-colibri.dtsi+54−0

This diff is large: its 55 lines aren’t shown here.

arch/arm/boot/dts/imx7d-nitrogen7.dts+1−2

This diff is large: its 17 lines aren’t shown here.

arch/arm/boot/dts/imx7d-pinfunc.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/imx7d-sdb.dts+130−1

This diff is large: its 177 lines aren’t shown here.

arch/arm/boot/dts/imx7d.dtsi+48−875

This diff is large: its 958 lines aren’t shown here.

arch/arm/boot/dts/imx7s-colibri-eval-v3.dts+51−0

This diff is large: its 52 lines aren’t shown here.

arch/arm/boot/dts/imx7s-colibri.dtsi+50−0

This diff is large: its 51 lines aren’t shown here.

arch/arm/boot/dts/imx7s.dtsi+933−0

This diff is large: its 934 lines aren’t shown here.

arch/arm/boot/dts/keystone-k2e.dtsi+5−2

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/keystone-k2g-evm.dts+11−0

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/keystone-k2g.dtsi+8−0

This diff is large: its 22 lines aren’t shown here.

arch/arm/boot/dts/keystone-k2l.dtsi+149−0

This diff is large: its 156 lines aren’t shown here.

arch/arm/boot/dts/keystone.dtsi+13−2

This diff is large: its 34 lines aren’t shown here.

arch/arm/boot/dts/logicpd-torpedo-37xx-devkit.dts+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/ls1021a.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/meson8b.dtsi+7−0

This diff is large: its 21 lines aren’t shown here.

arch/arm/boot/dts/mpa1600.dts+1−10

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/omap24xx-clocks.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap3-beagle-xm.dts+5−5

This diff is large: its 44 lines aren’t shown here.

arch/arm/boot/dts/omap3-beagle.dts+5−5

This diff is large: its 44 lines aren’t shown here.

arch/arm/boot/dts/omap3-cm-t3x.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap3-devkit8000-common.dtsi+6−6

This diff is large: its 53 lines aren’t shown here.

arch/arm/boot/dts/omap3-devkit8000-lcd-common.dtsi+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/omap3-devkit8000-lcd43.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap3-devkit8000-lcd70.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap3-gta04.dtsi+66−6

This diff is large: its 154 lines aren’t shown here.

arch/arm/boot/dts/omap3-ha-lcd.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap3-igep0020-common.dtsi+4−4

This diff is large: its 35 lines aren’t shown here.

arch/arm/boot/dts/omap3-n900.dts+12−0

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/omap3-overo-common-dvi.dtsi+4−4

This diff is large: its 35 lines aren’t shown here.

arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap3-overo-common-lcd43.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap3-pandora-common.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap3-sb-t35.dtsi+4−4

This diff is large: its 35 lines aren’t shown here.

arch/arm/boot/dts/omap3-thunder.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap3.dtsi+10−0

This diff is large: its 45 lines aren’t shown here.

arch/arm/boot/dts/omap4-duovero-parlor.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap4-duovero.dtsi+5−0

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/omap4-panda-common.dtsi+13−8

This diff is large: its 89 lines aren’t shown here.

arch/arm/boot/dts/omap4-sdp.dts+9−4

This diff is large: its 54 lines aren’t shown here.

arch/arm/boot/dts/omap4-var-om44customboard.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/omap4-var-som-om44.dtsi+5−0

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/omap5-board-common.dtsi+9−4

This diff is large: its 54 lines aren’t shown here.

arch/arm/boot/dts/omap5-cm-t54.dts+10−5

This diff is large: its 62 lines aren’t shown here.

arch/arm/boot/dts/pm9g45.dts+0−9

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/pxa27x.dtsi+7−0

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/pxa2xx.dtsi+8−0

This diff is large: its 14 lines aren’t shown here.

arch/arm/boot/dts/pxa3xx.dtsi+132−1

This diff is large: its 154 lines aren’t shown here.

arch/arm/boot/dts/qcom-apq8060-dragonboard.dts+626−0

This diff is large: its 627 lines aren’t shown here.

arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval-pins.dtsirenamed from arch/arm/boot/dts/qcom-apq8064-arrow-db600c-pins.dtsi+0−0

File renamed without changes.

arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dtsrenamed from arch/arm/boot/dts/qcom-apq8064-arrow-db600c.dts+6−4

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts+0−6

This diff is large: its 13 lines aren’t shown here.

arch/arm/boot/dts/qcom-apq8064-pins.dtsi+40−0

This diff is large: its 47 lines aren’t shown here.

arch/arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts+1−43

This diff is large: its 65 lines aren’t shown here.

arch/arm/boot/dts/qcom-apq8064.dtsi+11−2

This diff is large: its 41 lines aren’t shown here.

arch/arm/boot/dts/qcom-apq8074-dragonboard.dts+247−0

This diff is large: its 271 lines aren’t shown here.

arch/arm/boot/dts/qcom-apq8084.dtsi+8−0

This diff is large: its 15 lines aren’t shown here.

arch/arm/boot/dts/qcom-ipq4019.dtsi+7−1

This diff is large: its 22 lines aren’t shown here.

arch/arm/boot/dts/qcom-ipq8064.dtsi+2−1

This diff is large: its 10 lines aren’t shown here.

arch/arm/boot/dts/qcom-msm8660-surf.dts+11−0

This diff is large: its 27 lines aren’t shown here.

arch/arm/boot/dts/qcom-msm8660.dtsi+154−12

This diff is large: its 215 lines aren’t shown here.

arch/arm/boot/dts/qcom-msm8960.dtsi+2−1

This diff is large: its 10 lines aren’t shown here.

arch/arm/boot/dts/qcom-msm8974-sony-xperia-honami.dts+4−0

This diff is large: its 11 lines aren’t shown here.

arch/arm/boot/dts/qcom-msm8974.dtsi+24−4

This diff is large: its 76 lines aren’t shown here.

arch/arm/boot/dts/qcom-pma8084.dtsi+14−6

This diff is large: its 54 lines aren’t shown here.

arch/arm/boot/dts/r7s72100-genmai.dts+3−3

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/r8a73a4-ape6evm.dts+6−6

This diff is large: its 51 lines aren’t shown here.

arch/arm/boot/dts/r8a73a4.dtsi+18−16

This diff is large: its 48 lines aren’t shown here.

arch/arm/boot/dts/r8a7740-armadillo800eva.dts+10−10

This diff is large: its 71 lines aren’t shown here.

arch/arm/boot/dts/r8a7740.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/r8a7778-bockw.dts+4−3

This diff is large: its 32 lines aren’t shown here.

arch/arm/boot/dts/r8a7778.dtsi+14−14

This diff is large: its 38 lines aren’t shown here.

arch/arm/boot/dts/r8a7779-marzen.dts+5−5

This diff is large: its 34 lines aren’t shown here.

arch/arm/boot/dts/r8a7790-lager.dts+15−15

This diff is large: its 129 lines aren’t shown here.

arch/arm/boot/dts/r8a7790.dtsi+139−98

This diff is large: its 571 lines aren’t shown here.

arch/arm/boot/dts/r8a7791-koelsch.dts+10−10

This diff is large: its 84 lines aren’t shown here.

arch/arm/boot/dts/r8a7791-porter.dts+6−6

This diff is large: its 54 lines aren’t shown here.

arch/arm/boot/dts/r8a7791.dtsi+132−95

This diff is large: its 552 lines aren’t shown here.

arch/arm/boot/dts/r8a7792-blanche.dts+66−0

This diff is large: its 67 lines aren’t shown here.

arch/arm/boot/dts/r8a7792.dtsi+385−0

This diff is large: its 386 lines aren’t shown here.

arch/arm/boot/dts/r8a7793-gose.dts+9−9

This diff is large: its 78 lines aren’t shown here.

arch/arm/boot/dts/r8a7793.dtsi+134−79

This diff is large: its 506 lines aren’t shown here.

arch/arm/boot/dts/r8a7794-alt.dts+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/r8a7794-silk.dts+17−5

This diff is large: its 71 lines aren’t shown here.

arch/arm/boot/dts/r8a7794.dtsi+82−50

This diff is large: its 315 lines aren’t shown here.

arch/arm/boot/dts/rk3228-evb.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/rk3229-evb.dts+90−0

This diff is large: its 91 lines aren’t shown here.

arch/arm/boot/dts/rk322x.dtsirenamed from arch/arm/boot/dts/rk3228.dtsi+116−2

This diff is large: its 160 lines aren’t shown here.

arch/arm/boot/dts/rk3288-firefly.dtsi+15−16

This diff is large: its 45 lines aren’t shown here.

arch/arm/boot/dts/rk3288-miqi.dts+13−13

This diff is large: its 40 lines aren’t shown here.

arch/arm/boot/dts/rk3288-popmetal.dts+15−16

This diff is large: its 45 lines aren’t shown here.

arch/arm/boot/dts/rk3288-rock2-som.dtsi+15−16

This diff is large: its 45 lines aren’t shown here.

arch/arm/boot/dts/rk3288-veyron-analog-audio.dtsi+101−0

This diff is large: its 102 lines aren’t shown here.

arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/rk3288-veyron.dtsi+18−13

This diff is large: its 52 lines aren’t shown here.

arch/arm/boot/dts/rk3288.dtsi+5−0

This diff is large: its 12 lines aren’t shown here.

arch/arm/boot/dts/sama5d2.dtsi+21−16

This diff is large: its 147 lines aren’t shown here.

arch/arm/boot/dts/sama5d3.dtsi+20−24

This diff is large: its 154 lines aren’t shown here.

arch/arm/boot/dts/sama5d31ek.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/sama5d33ek.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/sama5d34ek.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/sama5d35ek.dts+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/sama5d36ek.dts+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/sama5d3xcm.dtsi+0−34

This diff is large: its 41 lines aren’t shown here.

arch/arm/boot/dts/sama5d3xmb.dtsi+0−12

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/sama5d3xmb_emac.dtsi+26−0

This diff is large: its 27 lines aren’t shown here.

arch/arm/boot/dts/sama5d3xmb_gmac.dtsi+48−0

This diff is large: its 49 lines aren’t shown here.

arch/arm/boot/dts/sama5d4.dtsi+20−20

This diff is large: its 162 lines aren’t shown here.

arch/arm/boot/dts/sh73a0-kzm9g.dts+10−9

This diff is large: its 74 lines aren’t shown here.

arch/arm/boot/dts/sh73a0.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/socfpga_arria10.dtsi+13−11

This diff is large: its 55 lines aren’t shown here.

arch/arm/boot/dts/socfpga_arria10_socdk.dtsi+6−1

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/ste-dbx5x0.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/ste-href-tvk1281618.dtsi+43−19

This diff is large: its 107 lines aren’t shown here.

arch/arm/boot/dts/ste-href.dtsi+0−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/ste-hrefv60plus.dtsi+120−0

This diff is large: its 127 lines aren’t shown here.

arch/arm/boot/dts/ste-snowball.dts+83−1

This diff is large: its 98 lines aren’t shown here.

arch/arm/boot/dts/stih410-clock.dtsi+9−0

This diff is large: its 44 lines aren’t shown here.

arch/arm/boot/dts/sun4i-a10-a1000.dts+3−1

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/sun4i-a10-hackberry.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/sun4i-a10-jesurun-q5.dts+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/boot/dts/sun4i-a10.dtsi+158−69

This diff is large: its 343 lines aren’t shown here.

arch/arm/boot/dts/sun5i-a10s-auxtek-t004.dts+19−0

This diff is large: its 39 lines aren’t shown here.

arch/arm/boot/dts/sun5i-a10s-mk802.dts+32−0

This diff is large: its 57 lines aren’t shown here.

arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts+7−0

This diff is large: its 14 lines aren’t shown here.

arch/arm/boot/dts/sun5i-a10s-wobo-i5.dts+9−1

This diff is large: its 24 lines aren’t shown here.

arch/arm/boot/dts/sun5i-a10s.dtsi+14−0

This diff is large: its 21 lines aren’t shown here.

arch/arm/boot/dts/sun5i-a13-difrnce-dit4350.dts+1−177

This diff is large: its 187 lines aren’t shown here.

arch/arm/boot/dts/sun5i-a13-q8-tablet.dts+33−7

This diff is large: its 53 lines aren’t shown here.

arch/arm/boot/dts/sun5i-a13-utoo-p66.dts+21−159

This diff is large: its 235 lines aren’t shown here.

arch/arm/boot/dts/sun5i-a13.dtsi+122−0

This diff is large: its 144 lines aren’t shown here.

arch/arm/boot/dts/sun5i-r8.dtsi+5−115

This diff is large: its 128 lines aren’t shown here.

arch/arm/boot/dts/sun5i-reference-design-tablet.dtsirenamed from arch/arm/boot/dts/sun5i-q8-common.dtsi+33−3

This diff is large: its 85 lines aren’t shown here.

arch/arm/boot/dts/sun5i.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/sun6i-a31-m9.dts+94−2

This diff is large: its 141 lines aren’t shown here.

arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts+94−2

This diff is large: its 141 lines aren’t shown here.

arch/arm/boot/dts/sun7i-a20-bananapi-m1-plus.dts+229−0

This diff is large: its 230 lines aren’t shown here.

arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts+67−13

This diff is large: its 133 lines aren’t shown here.

arch/arm/boot/dts/sun7i-a20.dtsi+323−151

This diff is large: its 649 lines aren’t shown here.

arch/arm/boot/dts/sun8i-a23-inet86dz.dts+58−0

This diff is large: its 59 lines aren’t shown here.

arch/arm/boot/dts/sun8i-a23-polaroid-mid2407pxe03.dts+50−0

This diff is large: its 51 lines aren’t shown here.

arch/arm/boot/dts/sun8i-a23-polaroid-mid2809pxe04.dts+1−194

This diff is large: its 204 lines aren’t shown here.

arch/arm/boot/dts/sun8i-a23-q8-tablet.dts+0−15

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/sun8i-a33-ga10h-v1.1.dts+1−76

This diff is large: its 102 lines aren’t shown here.

arch/arm/boot/dts/sun8i-a33-q8-tablet.dts+0−15

This diff is large: its 19 lines aren’t shown here.

arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts+195−0

This diff is large: its 196 lines aren’t shown here.

arch/arm/boot/dts/sun8i-h3.dtsi+14−7

This diff is large: its 35 lines aren’t shown here.

arch/arm/boot/dts/sun8i-q8-common.dtsi+6−133

This diff is large: its 147 lines aren’t shown here.

arch/arm/boot/dts/sun8i-r16-parrot.dts+351−0

This diff is large: its 352 lines aren’t shown here.

arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi+216−0

This diff is large: its 217 lines aren’t shown here.

arch/arm/boot/dts/sun9i-a80-cubieboard4.dts+145−19

This diff is large: its 203 lines aren’t shown here.

arch/arm/boot/dts/sun9i-a80-optimus.dts+163−32

This diff is large: its 232 lines aren’t shown here.

arch/arm/boot/dts/sunxi-reference-design-tablet.dtsirenamed from arch/arm/boot/dts/sunxi-q8-common.dtsi+0−0

File renamed without changes.

arch/arm/boot/dts/tegra114-dalmore.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra114-roth.dts+2−2

This diff is large: its 12 lines aren’t shown here.

arch/arm/boot/dts/tegra114-tn7.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra124-apalis-emc.dtsi+1502−0

This diff is large: its 1503 lines aren’t shown here.

arch/arm/boot/dts/tegra124-apalis-eval.dts+284−0

This diff is large: its 285 lines aren’t shown here.

arch/arm/boot/dts/tegra124-apalis.dtsi+2100−0

This diff is large: its 2101 lines aren’t shown here.

arch/arm/boot/dts/tegra124-jetson-tk1-emc.dtsi+3−3

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/tegra124-jetson-tk1.dts+42−46

This diff is large: its 279 lines aren’t shown here.

arch/arm/boot/dts/tegra124-nyan-big-emc.dtsi+3−3

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/tegra124-nyan-big.dts+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/tegra124-nyan-blaze-emc.dtsi+3−3

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/tegra124-nyan-blaze.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra124-nyan.dtsi+30−30

This diff is large: its 195 lines aren’t shown here.

arch/arm/boot/dts/tegra124-venice2.dts+35−35

This diff is large: its 217 lines aren’t shown here.

arch/arm/boot/dts/tegra124.dtsi+65−60

This diff is large: its 544 lines aren’t shown here.

arch/arm/boot/dts/tegra20-colibri-512.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra20-harmony.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra20-paz00.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra20-seaboard.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra20-tamonten.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra20-trimslice.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra20-ventana.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra20-whistler.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra30-apalis.dtsi+4−3

This diff is large: its 26 lines aren’t shown here.

arch/arm/boot/dts/tegra30-beaver.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra30-cardhu.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra30-colibri-eval-v3.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tegra30-colibri.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/boot/dts/tny_a9260_common.dtsi+0−9

This diff is large: its 16 lines aren’t shown here.

arch/arm/boot/dts/tny_a9263.dts+1−10

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/uniphier-common32.dtsi+9−3

This diff is large: its 26 lines aren’t shown here.

arch/arm/boot/dts/uniphier-ph1-ld4.dtsi+1−1

This diff is large: its 7 lines aren’t shown here.

arch/arm/boot/dts/uniphier-ph1-ld6b.dtsi+1−1

This diff is large: its 7 lines aren’t shown here.

arch/arm/boot/dts/uniphier-ph1-pro4.dtsi+1−1

This diff is large: its 7 lines aren’t shown here.

arch/arm/boot/dts/uniphier-ph1-pro5.dtsi+1−1

This diff is large: its 7 lines aren’t shown here.

arch/arm/boot/dts/uniphier-ph1-sld8.dtsi+1−1

This diff is large: its 7 lines aren’t shown here.

arch/arm/boot/dts/uniphier-pinctrl.dtsi+5−0

This diff is large: its 12 lines aren’t shown here.

arch/arm/boot/dts/uniphier-proxstream2-gentil.dts+4−4

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/uniphier-proxstream2-vodka.dts+4−4

This diff is large: its 18 lines aren’t shown here.

arch/arm/boot/dts/uniphier-proxstream2.dtsi+1−1

This diff is large: its 7 lines aren’t shown here.

arch/arm/boot/dts/usb_a9260_common.dtsi+2−11

This diff is large: its 34 lines aren’t shown here.

arch/arm/boot/dts/usb_a9263.dts+1−10

This diff is large: its 25 lines aren’t shown here.

arch/arm/boot/dts/usb_a9g20_common.dtsi+3−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/common/dmabounce.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/configs/bcm_defconfig+0−141

This diff is large: its 142 lines aren’t shown here.

arch/arm/configs/exynos_defconfig+17−12

This diff is large: its 102 lines aren’t shown here.

arch/arm/configs/imx_v6_v7_defconfig+3−1

This diff is large: its 25 lines aren’t shown here.

arch/arm/configs/keystone_defconfig+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/configs/lpc18xx_defconfig+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/configs/multi_v4t_defconfig+106−0

This diff is large: its 107 lines aren’t shown here.

arch/arm/configs/multi_v5_defconfig+53−1

This diff is large: its 156 lines aren’t shown here.

arch/arm/configs/multi_v7_defconfig+47−5

This diff is large: its 246 lines aren’t shown here.

arch/arm/configs/omap2plus_defconfig+4−1

This diff is large: its 24 lines aren’t shown here.

arch/arm/configs/qcom_defconfig+8−0

This diff is large: its 51 lines aren’t shown here.

arch/arm/configs/sama5_defconfig+3−0

This diff is large: its 20 lines aren’t shown here.

arch/arm/configs/shmobile_defconfig+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/configs/socfpga_defconfig+15−1

This diff is large: its 59 lines aren’t shown here.

arch/arm/configs/sunxi_defconfig+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/include/asm/dma-mapping.h+6−7

This diff is large: its 55 lines aren’t shown here.

arch/arm/include/asm/kexec.h+24−0

This diff is large: its 31 lines aren’t shown here.

arch/arm/include/asm/kvm_asm.h+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/include/asm/kvm_host.h+9−18

This diff is large: its 54 lines aren’t shown here.

arch/arm/include/asm/kvm_hyp.h+0−3

This diff is large: its 10 lines aren’t shown here.

arch/arm/include/asm/kvm_mmu.h+2−13

This diff is large: its 37 lines aren’t shown here.

arch/arm/include/asm/mach/pci.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/include/asm/pgtable.h+3−1

This diff is large: its 11 lines aren’t shown here.

arch/arm/include/asm/uaccess.h+9−2

This diff is large: its 29 lines aren’t shown here.

arch/arm/include/asm/virt.h+4−0

This diff is large: its 11 lines aren’t shown here.

arch/arm/include/asm/xen/page-coherent.h+6−10

This diff is large: its 54 lines aren’t shown here.

arch/arm/include/debug/at91.S+1−9

This diff is large: its 24 lines aren’t shown here.

arch/arm/include/debug/clps711x.S+2−2

This diff is large: its 13 lines aren’t shown here.

arch/arm/include/debug/exynos.S+5−1

This diff is large: its 13 lines aren’t shown here.

arch/arm/include/debug/samsung.S+8−0

This diff is large: its 62 lines aren’t shown here.

arch/arm/kernel/bios32.c+20−25

This diff is large: its 88 lines aren’t shown here.

arch/arm/kernel/machine_kexec.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/kernel/setup.c+37−2

This diff is large: its 58 lines aren’t shown here.

arch/arm/kernel/vmlinux.lds.S+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/kvm/Kconfig+2−7

This diff is large: its 23 lines aren’t shown here.

arch/arm/kvm/Makefile+1−6

This diff is large: its 19 lines aren’t shown here.

arch/arm/kvm/arm.c+18−28

This diff is large: its 160 lines aren’t shown here.

arch/arm/kvm/emulate.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/kvm/guest.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/kvm/init.S+20−36

This diff is large: its 88 lines aren’t shown here.

arch/arm/kvm/irq.h+19−0

This diff is large: its 20 lines aren’t shown here.

arch/arm/kvm/mmu.c+63−79

This diff is large: its 233 lines aren’t shown here.

arch/arm/kvm/reset.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-at91/Kconfig+1−1

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-at91/pm.c+3−2

This diff is large: its 26 lines aren’t shown here.

arch/arm/mach-bcm/Kconfig+13−6

This diff is large: its 63 lines aren’t shown here.

arch/arm/mach-bcm/Makefile+4−1

This diff is large: its 12 lines aren’t shown here.

arch/arm/mach-bcm/board_bcm21664.c+0−43

This diff is large: its 60 lines aren’t shown here.

arch/arm/mach-bcm/board_bcm23550.c+25−0

This diff is large: its 26 lines aren’t shown here.

arch/arm/mach-bcm/kona_l2_cache.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-bcm/platsmp.c+95−79

This diff is large: its 253 lines aren’t shown here.

arch/arm/mach-berlin/Kconfig+1−1

This diff is large: its 13 lines aren’t shown here.

arch/arm/mach-clps711x/Kconfig+15−38

This diff is large: its 54 lines aren’t shown here.

arch/arm/mach-clps711x/Makefile+1−13

This diff is large: its 15 lines aren’t shown here.

arch/arm/mach-clps711x/Makefile.boot+0−5

This diff is large: its 6 lines aren’t shown here.

arch/arm/mach-clps711x/board-dt.c+82−0

This diff is large: its 83 lines aren’t shown here.

arch/arm/mach-clps711x/common.c+2−2

This diff is large: its 11 lines aren’t shown here.

arch/arm/mach-clps711x/include/mach/clps711x.h+0−204

This diff is large: its 205 lines aren’t shown here.

arch/arm/mach-clps711x/include/mach/hardware.h+0−53

This diff is large: its 54 lines aren’t shown here.

arch/arm/mach-clps711x/include/mach/uncompress.h+0−55

This diff is large: its 56 lines aren’t shown here.

arch/arm/mach-davinci/board-dm355-evm.c+1−3

This diff is large: its 18 lines aren’t shown here.

arch/arm/mach-davinci/board-dm365-evm.c+2−6

This diff is large: its 23 lines aren’t shown here.

arch/arm/mach-davinci/board-dm644x-evm.c+1−3

This diff is large: its 18 lines aren’t shown here.

arch/arm/mach-davinci/board-neuros-osd2.c+1−3

This diff is large: its 18 lines aren’t shown here.

arch/arm/mach-davinci/da850.c+16−0

This diff is large: its 30 lines aren’t shown here.

arch/arm/mach-davinci/davinci.h+4−4

This diff is large: its 27 lines aren’t shown here.

arch/arm/mach-davinci/dm355.c+1−2

This diff is large: its 17 lines aren’t shown here.

arch/arm/mach-davinci/dm365.c+2−4

This diff is large: its 26 lines aren’t shown here.

arch/arm/mach-davinci/dm644x.c+1−2

This diff is large: its 12 lines aren’t shown here.

arch/arm/mach-davinci/psc.h+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-digicolor/Kconfig+1−1

This diff is large: its 12 lines aren’t shown here.

arch/arm/mach-ep93xx/ts72xx.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-exynos/Kconfig+2−1

This diff is large: its 16 lines aren’t shown here.

arch/arm/mach-exynos/Makefile+0−3

This diff is large: its 14 lines aren’t shown here.

arch/arm/mach-exynos/common.h+2−3

This diff is large: its 23 lines aren’t shown here.

arch/arm/mach-exynos/exynos.c+1−19

This diff is large: its 42 lines aren’t shown here.

arch/arm/mach-exynos/firmware.c+9−9

This diff is large: its 56 lines aren’t shown here.

arch/arm/mach-exynos/headsmp.S+3−0

This diff is large: its 16 lines aren’t shown here.

arch/arm/mach-exynos/mfc.h+0−16

This diff is large: its 17 lines aren’t shown here.

arch/arm/mach-exynos/platsmp.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/mach-exynos/pm.c+3−3

This diff is large: its 13 lines aren’t shown here.

arch/arm/mach-exynos/s5p-dev-mfc.c+0−93

This diff is large: its 94 lines aren’t shown here.

arch/arm/mach-exynos/suspend.c+6−6

This diff is large: its 35 lines aren’t shown here.

arch/arm/mach-hisi/hisilicon.c+0−28

This diff is large: its 32 lines aren’t shown here.

arch/arm/mach-hisi/platsmp.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/mach-imx/Kconfig+1−5

This diff is large: its 30 lines aren’t shown here.

arch/arm/mach-imx/Makefile+2−2

This diff is large: its 11 lines aren’t shown here.

arch/arm/mach-imx/avic.c+8−11

This diff is large: its 32 lines aren’t shown here.

arch/arm/mach-imx/common.h+2−1

This diff is large: its 24 lines aren’t shown here.

arch/arm/mach-imx/cpu-imx5.c+0−8

This diff is large: its 28 lines aren’t shown here.

arch/arm/mach-imx/cpu.c+0−2

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-imx/cpuidle-imx6q.c+20−0

This diff is large: its 34 lines aren’t shown here.

arch/arm/mach-imx/devices/Kconfig+0−4

This diff is large: its 11 lines aren’t shown here.

arch/arm/mach-imx/devices/devices.c+3−0

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-imx/devices/platform-gpio-mxc.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-imx/devices/platform-mxc_rnga.c+0−53

This diff is large: its 54 lines aren’t shown here.

arch/arm/mach-imx/eukrea-baseboards.h+0−42

This diff is large: its 43 lines aren’t shown here.

arch/arm/mach-imx/imx27-dt.c+1−0

This diff is large: its 7 lines aren’t shown here.

arch/arm/mach-imx/imx31-dt.c+12−0

This diff is large: its 23 lines aren’t shown here.

arch/arm/mach-imx/imx35-dt.c+3−7

This diff is large: its 24 lines aren’t shown here.

arch/arm/mach-imx/irq-common.c+4−2

This diff is large: its 13 lines aren’t shown here.

arch/arm/mach-imx/mach-imx50.c+0−1

This diff is large: its 7 lines aren’t shown here.

arch/arm/mach-imx/mach-imx51.c+2−1

This diff is large: its 17 lines aren’t shown here.

arch/arm/mach-imx/mach-imx53.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-imx/mach-imx6q.c+3−1

This diff is large: its 18 lines aren’t shown here.

arch/arm/mach-imx/mach-imx6sl.c+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-imx/mach-imx6sx.c+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-imx/mach-imx7d.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-imx/mm-imx1.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-imx/mm-imx27.c+2−0

This diff is large: its 7 lines aren’t shown here.

arch/arm/mach-imx/mm-imx3.c+28−4

This diff is large: its 82 lines aren’t shown here.

arch/arm/mach-imx/mxc.h+0−101

This diff is large: its 116 lines aren’t shown here.

arch/arm/mach-imx/pm-imx27.c+1−7

This diff is large: its 15 lines aren’t shown here.

arch/arm/mach-imx/pm-imx3.c+0−38

This diff is large: its 39 lines aren’t shown here.

arch/arm/mach-imx/system.c+25−33

This diff is large: its 97 lines aren’t shown here.

arch/arm/mach-imx/tzic.c+8−8

This diff is large: its 58 lines aren’t shown here.

arch/arm/mach-integrator/Kconfig+2−2

This diff is large: its 12 lines aren’t shown here.

arch/arm/mach-integrator/impd1.c+2−2

This diff is large: its 14 lines aren’t shown here.

arch/arm/mach-keystone/Kconfig+1−1

This diff is large: its 16 lines aren’t shown here.

arch/arm/mach-keystone/pm_domain.c+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-meson/Kconfig+4−1

This diff is large: its 23 lines aren’t shown here.

arch/arm/mach-mmp/Kconfig+1−1

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-moxart/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-mv78xx0/Kconfig+1−1

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-mv78xx0/common.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-mvebu/Kconfig+2−2

This diff is large: its 19 lines aren’t shown here.

arch/arm/mach-mvebu/coherency.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-mvebu/cpu-reset.c+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-mvebu/kirkwood-pm.c+2−2

This diff is large: its 21 lines aren’t shown here.

arch/arm/mach-mvebu/kirkwood.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-mvebu/pm.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-mvebu/pmsu.c+2−1

This diff is large: its 17 lines aren’t shown here.

arch/arm/mach-mvebu/system-controller.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-mxs/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-nomadik/Kconfig+1−1

This diff is large: its 14 lines aren’t shown here.

arch/arm/mach-omap1/ams-delta-fiq.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-omap1/include/mach/mtd-xip.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-omap2/Kconfig+1−1

This diff is large: its 11 lines aren’t shown here.

arch/arm/mach-omap2/Makefile+6−3

This diff is large: its 36 lines aren’t shown here.

arch/arm/mach-omap2/board-ldp.c+2−1

This diff is large: its 17 lines aren’t shown here.

arch/arm/mach-omap2/board-rx51-peripherals.c+0−5

This diff is large: its 12 lines aren’t shown here.

arch/arm/mach-omap2/board-rx51-video.c+2−2

This diff is large: its 24 lines aren’t shown here.

arch/arm/mach-omap2/clockdomain.c+24−12

This diff is large: its 59 lines aren’t shown here.

arch/arm/mach-omap2/clockdomain.h+2−0

This diff is large: its 16 lines aren’t shown here.

arch/arm/mach-omap2/cm33xx.c+3−0

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-omap2/cm3xxx.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-omap2/common.h+6−2

This diff is large: its 25 lines aren’t shown here.

arch/arm/mach-omap2/cpuidle44xx.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-omap2/display.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-omap2/display.h+5−0

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-omap2/dss-common.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-omap2/io.c+3−0

This diff is large: its 17 lines aren’t shown here.

arch/arm/mach-omap2/mcbsp.c+17−14

This diff is large: its 54 lines aren’t shown here.

arch/arm/mach-omap2/mux34xx.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm/mach-omap2/omap-headsmp.S+14−4

This diff is large: its 51 lines aren’t shown here.

arch/arm/mach-omap2/omap-hotplug.c+6−0

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-omap2/omap-mpuss-lowpower.c+26−5

This diff is large: its 56 lines aren’t shown here.

arch/arm/mach-omap2/omap-smp.c+71−27

This diff is large: its 159 lines aren’t shown here.

arch/arm/mach-omap2/omap4-common.c+7−9

This diff is large: its 43 lines aren’t shown here.

arch/arm/mach-omap2/omap_device.c+18−3

This diff is large: its 42 lines aren’t shown here.

arch/arm/mach-omap2/omap_hwmod.c+62−20

This diff is large: its 188 lines aren’t shown here.

arch/arm/mach-omap2/omap_hwmod_33xx_43xx_common_data.h+0−18

This diff is large: its 36 lines aren’t shown here.

arch/arm/mach-omap2/omap_hwmod_33xx_43xx_interconnect_data.c+0−64

This diff is large: its 85 lines aren’t shown here.

arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c+1−84

This diff is large: its 120 lines aren’t shown here.

arch/arm/mach-omap2/omap_hwmod_33xx_data.c+0−9

This diff is large: its 18 lines aren’t shown here.

arch/arm/mach-omap2/omap_hwmod_3xxx_data.c+4−20

This diff is large: its 38 lines aren’t shown here.

arch/arm/mach-omap2/omap_hwmod_43xx_data.c+0−54

This diff is large: its 114 lines aren’t shown here.

arch/arm/mach-omap2/omap_hwmod_7xx_data.c+0−41

This diff is large: its 81 lines aren’t shown here.

arch/arm/mach-omap2/omap_hwmod_81xx_data.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-omap2/pdata-quirks.c+19−9

This diff is large: its 82 lines aren’t shown here.

arch/arm/mach-omap2/pm.c+1−7

This diff is large: its 15 lines aren’t shown here.

arch/arm/mach-omap2/powerdomain.c+6−14

This diff is large: its 78 lines aren’t shown here.

arch/arm/mach-omap2/prcm43xx.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-omap2/prm33xx.h+0−2

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-omap2/sdrc.h+2−2

This diff is large: its 11 lines aren’t shown here.

arch/arm/mach-omap2/timer.c+2−1

This diff is large: its 17 lines aren’t shown here.

arch/arm/mach-orion5x/Kconfig+1−1

This diff is large: its 11 lines aren’t shown here.

arch/arm/mach-orion5x/irq.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-orion5x/ts78xx-setup.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-oxnas/Kconfig+2−2

This diff is large: its 21 lines aren’t shown here.

arch/arm/mach-picoxcell/Kconfig+1−1

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-prima2/Kconfig+1−1

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-pxa/cm-x270.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-pxa/cm-x300.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-pxa/em-x270.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-qcom/Kconfig+4−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-qcom/board.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-rockchip/Kconfig+1−1

This diff is large: its 12 lines aren’t shown here.

arch/arm/mach-s3c24xx/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-s3c24xx/include/mach/regs-gpio.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-s3c24xx/iotiming-s3c2410.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-s3c24xx/mach-n30.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-s3c24xx/mach-osiris-dvs.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-s3c24xx/pll-s3c2410.c+2−1

This diff is large: its 14 lines aren’t shown here.

arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-s3c64xx/Kconfig+1−1

This diff is large: its 14 lines aren’t shown here.

arch/arm/mach-s3c64xx/common.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-s3c64xx/include/mach/map.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-s3c64xx/mach-smartq.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-s5pv210/Kconfig+1−1

This diff is large: its 12 lines aren’t shown here.

arch/arm/mach-shmobile/Kconfig+5−1

This diff is large: its 20 lines aren’t shown here.

arch/arm/mach-shmobile/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-shmobile/common.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-shmobile/platsmp-apmu.c+89−5

This diff is large: its 130 lines aren’t shown here.

arch/arm/mach-shmobile/platsmp.c+6−0

This diff is large: its 10 lines aren’t shown here.

arch/arm/mach-shmobile/pm-r8a7779.c+1−5

This diff is large: its 13 lines aren’t shown here.

arch/arm/mach-shmobile/pm-rcar-gen2.c+5−14

This diff is large: its 49 lines aren’t shown here.

arch/arm/mach-shmobile/pm-rmobile.c+1−1

This diff is large: its 15 lines aren’t shown here.

arch/arm/mach-shmobile/setup-r8a7790.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-shmobile/setup-r8a7791.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-shmobile/setup-r8a7792.c+35−0

This diff is large: its 36 lines aren’t shown here.

arch/arm/mach-shmobile/setup-rcar-gen2.c+24−21

This diff is large: its 69 lines aren’t shown here.

arch/arm/mach-spear/Kconfig+1−1

This diff is large: its 11 lines aren’t shown here.

arch/arm/mach-sti/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-sti/board-dt.c+10−1

This diff is large: its 23 lines aren’t shown here.

arch/arm/mach-sunxi/Kconfig+1−1

This diff is large: its 12 lines aren’t shown here.

arch/arm/mach-tango/Makefile+1−0

This diff is large: its 5 lines aren’t shown here.

arch/arm/mach-tango/platsmp.c+35−0

This diff is large: its 48 lines aren’t shown here.

arch/arm/mach-tango/pm.c+32−0

This diff is large: its 33 lines aren’t shown here.

arch/arm/mach-tango/smc.h+4−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-tegra/Kconfig+1−1

This diff is large: its 13 lines aren’t shown here.

arch/arm/mach-tegra/common.h+22−0

This diff is large: its 27 lines aren’t shown here.

arch/arm/mach-tegra/cpuidle-tegra114.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-tegra/cpuidle-tegra20.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-tegra/cpuidle-tegra30.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-tegra/cpuidle.h+2−0

This diff is large: its 11 lines aren’t shown here.

arch/arm/mach-tegra/hotplug.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-tegra/irq.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-tegra/pm.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-tegra/tegra.c+3−21

This diff is large: its 36 lines aren’t shown here.

arch/arm/mach-u300/Kconfig+1−1

This diff is large: its 13 lines aren’t shown here.

arch/arm/mach-uniphier/Makefile+0−1

This diff is large: its 3 lines aren’t shown here.

arch/arm/mach-uniphier/platsmp.c+5−13

This diff is large: its 27 lines aren’t shown here.

arch/arm/mach-uniphier/uniphier.c+0−30

This diff is large: its 31 lines aren’t shown here.

arch/arm/mach-ux500/Kconfig+1−1

This diff is large: its 15 lines aren’t shown here.

arch/arm/mach-ux500/Makefile+2−4

This diff is large: its 14 lines aren’t shown here.

arch/arm/mach-ux500/board-mop500-regulators.c+0−1065

This diff is large: its 1066 lines aren’t shown here.

arch/arm/mach-ux500/board-mop500-regulators.h+0−24

This diff is large: its 25 lines aren’t shown here.

arch/arm/mach-ux500/cache-l2x0.c+0−67

This diff is large: its 68 lines aren’t shown here.

arch/arm/mach-ux500/cpu-db8500.c+88−51

This diff is large: its 207 lines aren’t shown here.

arch/arm/mach-ux500/cpu.c+0−148

This diff is large: its 149 lines aren’t shown here.

arch/arm/mach-ux500/id.c+0−116

This diff is large: its 117 lines aren’t shown here.

arch/arm/mach-ux500/id.h+0−144

This diff is large: its 145 lines aren’t shown here.

arch/arm/mach-ux500/platsmp.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/mach-ux500/setup.h+0−12

This diff is large: its 19 lines aren’t shown here.

arch/arm/mach-vexpress/Kconfig+1−1

This diff is large: its 15 lines aren’t shown here.

arch/arm/mach-vexpress/hotplug.c+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/mach-vexpress/spc.c+3−3

This diff is large: its 28 lines aren’t shown here.

arch/arm/mach-vt8500/Kconfig+1−1

This diff is large: its 8 lines aren’t shown here.

arch/arm/mm/dma-mapping.c+63−66

This diff is large: its 483 lines aren’t shown here.

arch/arm/plat-iop/setup.c+2−2

This diff is large: its 15 lines aren’t shown here.

arch/arm/plat-samsung/cpu.c+5−5

This diff is large: its 30 lines aren’t shown here.

arch/arm/plat-samsung/include/plat/cpu-freq-core.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/plat-samsung/include/plat/cpu.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm/plat-samsung/include/plat/fb-s3c2410.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/plat-samsung/include/plat/gpio-cfg.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/plat-samsung/pm-check.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/plat-samsung/pm-common.c+4−4

This diff is large: its 28 lines aren’t shown here.

arch/arm/plat-samsung/watchdog-reset.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm/plat-versatile/platsmp.c+2−0

This diff is large: its 9 lines aren’t shown here.

arch/arm/xen/mm.c+4−4

This diff is large: its 29 lines aren’t shown here.

arch/arm64/Kconfig+6−2

This diff is large: its 44 lines aren’t shown here.

arch/arm64/Kconfig.platforms+28−0

This diff is large: its 77 lines aren’t shown here.

arch/arm64/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts+20−0

This diff is large: its 36 lines aren’t shown here.

arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi+9−0

This diff is large: its 14 lines aren’t shown here.

arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi+3−0

This diff is large: its 8 lines aren’t shown here.

arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi+169−1

This diff is large: its 210 lines aren’t shown here.

arch/arm64/boot/dts/apm/apm-shadowcat.dtsi+34−34

This diff is large: its 160 lines aren’t shown here.

arch/arm64/boot/dts/apm/apm-storm.dtsi+17−27

This diff is large: its 96 lines aren’t shown here.

arch/arm64/boot/dts/arm/juno-base.dtsi+357−0

This diff is large: its 377 lines aren’t shown here.

arch/arm64/boot/dts/arm/juno-r1.dts+40−0

This diff is large: its 44 lines aren’t shown here.

arch/arm64/boot/dts/arm/juno-r2.dts+40−0

This diff is large: its 44 lines aren’t shown here.

arch/arm64/boot/dts/arm/juno.dts+24−0

This diff is large: its 28 lines aren’t shown here.

arch/arm64/boot/dts/broadcom/Makefile+1−0

This diff is large: its 5 lines aren’t shown here.

arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts+30−0

This diff is large: its 31 lines aren’t shown here.

arch/arm64/boot/dts/broadcom/bcm2837.dtsi+76−0

This diff is large: its 77 lines aren’t shown here.

arch/arm64/boot/dts/broadcom/ns2-svk.dts+37−0

This diff is large: its 66 lines aren’t shown here.

arch/arm64/boot/dts/broadcom/ns2.dtsi+119−0

This diff is large: its 154 lines aren’t shown here.

arch/arm64/boot/dts/exynos/exynos7-espresso.dts+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi+19−5

This diff is large: its 99 lines aren’t shown here.

arch/arm64/boot/dts/freescale/fsl-ls2080a.dtsi+35−9

This diff is large: its 115 lines aren’t shown here.

arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts+143−0

This diff is large: its 150 lines aren’t shown here.

arch/arm64/boot/dts/hisilicon/hi6220.dtsi+18−0

This diff is large: its 39 lines aren’t shown here.

arch/arm64/boot/dts/lg/Makefile+1−0

This diff is large: its 6 lines aren’t shown here.

arch/arm64/boot/dts/lg/lg1313-ref.dts+36−0

This diff is large: its 37 lines aren’t shown here.

arch/arm64/boot/dts/lg/lg1313.dtsi+351−0

This diff is large: its 352 lines aren’t shown here.

arch/arm64/boot/dts/marvell/armada-3720-db.dts+5−0

This diff is large: its 9 lines aren’t shown here.

arch/arm64/boot/dts/marvell/armada-37xx.dtsi+60−0

This diff is large: its 73 lines aren’t shown here.

arch/arm64/boot/dts/marvell/armada-ap806.dtsi+4−4

This diff is large: its 36 lines aren’t shown here.

arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi+18−0

This diff is large: its 25 lines aren’t shown here.

arch/arm64/boot/dts/mediatek/Makefile+1−0

This diff is large: its 5 lines aren’t shown here.

arch/arm64/boot/dts/mediatek/mt6755-evb.dts+38−0

This diff is large: its 39 lines aren’t shown here.

arch/arm64/boot/dts/mediatek/mt6755.dtsi+145−0

This diff is large: its 146 lines aren’t shown here.

arch/arm64/boot/dts/mediatek/mt8173.dtsi+223−0

This diff is large: its 261 lines aren’t shown here.

arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi+249−0

This diff is large: its 271 lines aren’t shown here.

arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts+45−0

This diff is large: its 50 lines aren’t shown here.

arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi+319−0

This diff is large: its 340 lines aren’t shown here.

arch/arm64/boot/dts/nvidia/tegra210-smaug.dts+314−0

This diff is large: its 333 lines aren’t shown here.

arch/arm64/boot/dts/nvidia/tegra210.dtsi+291−1

This diff is large: its 360 lines aren’t shown here.

arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi+16−0

This diff is large: its 30 lines aren’t shown here.

arch/arm64/boot/dts/qcom/msm8916.dtsi+75−3

This diff is large: its 130 lines aren’t shown here.

arch/arm64/boot/dts/qcom/msm8996-pins.dtsi+303−0

This diff is large: its 304 lines aren’t shown here.

arch/arm64/boot/dts/qcom/msm8996.dtsi+102−1

This diff is large: its 121 lines aren’t shown here.

arch/arm64/boot/dts/renesas/Makefile+1−0

This diff is large: its 6 lines aren’t shown here.

arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts+10−4

This diff is large: its 56 lines aren’t shown here.

arch/arm64/boot/dts/renesas/r8a7795.dtsi+87−37

This diff is large: its 315 lines aren’t shown here.

arch/arm64/boot/dts/renesas/r8a7796-salvator-x.dts+50−0

This diff is large: its 51 lines aren’t shown here.

arch/arm64/boot/dts/renesas/r8a7796.dtsi+138−0

This diff is large: its 139 lines aren’t shown here.

arch/arm64/boot/dts/rockchip/rk3368-r88.dts+16−0

This diff is large: its 30 lines aren’t shown here.

arch/arm64/boot/dts/rockchip/rk3368.dtsi+13−3

This diff is large: its 39 lines aren’t shown here.

arch/arm64/boot/dts/rockchip/rk3399-evb.dts+12−0

This diff is large: its 26 lines aren’t shown here.

arch/arm64/boot/dts/rockchip/rk3399.dtsi+311−2

This diff is large: its 382 lines aren’t shown here.

arch/arm64/boot/dts/socionext/uniphier-ph1-ld20.dtsi+13−7

This diff is large: its 62 lines aren’t shown here.

arch/arm64/configs/defconfig+48−1

This diff is large: its 200 lines aren’t shown here.

arch/arm64/include/asm/cpufeature.h+2−1

This diff is large: its 11 lines aren’t shown here.

arch/arm64/include/asm/dma-mapping.h+15−2

This diff is large: its 34 lines aren’t shown here.

arch/arm64/include/asm/elf.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm64/include/asm/kvm_arm.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm64/include/asm/kvm_host.h+6−13

This diff is large: its 44 lines aren’t shown here.

arch/arm64/include/asm/kvm_hyp.h+0−23

This diff is large: its 30 lines aren’t shown here.

arch/arm64/include/asm/kvm_mmu.h+78−18

This diff is large: its 140 lines aren’t shown here.

arch/arm64/include/asm/pgtable-hwdef.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/arm64/include/asm/pgtable-prot.h+3−1

This diff is large: its 11 lines aren’t shown here.

arch/arm64/include/asm/pgtable.h+17−0

This diff is large: its 24 lines aren’t shown here.

arch/arm64/include/asm/uaccess.h+10−5

This diff is large: its 42 lines aren’t shown here.

arch/arm64/include/asm/virt.h+4−0

This diff is large: its 11 lines aren’t shown here.

arch/arm64/include/uapi/asm/auxvec.h+2−0

This diff is large: its 7 lines aren’t shown here.

arch/arm64/include/uapi/asm/kvm.h+2−0

This diff is large: its 12 lines aren’t shown here.

arch/arm64/kernel/cpufeature.c+19−0

This diff is large: its 33 lines aren’t shown here.

arch/arm64/kernel/head.S+3−18

This diff is large: its 44 lines aren’t shown here.

arch/arm64/kernel/pci.c+138−21

This diff is large: its 196 lines aren’t shown here.

arch/arm64/kernel/vmlinux.lds.S+2−11

This diff is large: its 29 lines aren’t shown here.

arch/arm64/kvm/Kconfig+3−7

This diff is large: its 24 lines aren’t shown here.

arch/arm64/kvm/Makefile+2−8

This diff is large: its 23 lines aren’t shown here.

arch/arm64/kvm/guest.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/arm64/kvm/hyp-init.S+8−53

This diff is large: its 91 lines aren’t shown here.

arch/arm64/kvm/hyp/entry.S+0−19

This diff is large: its 23 lines aren’t shown here.

arch/arm64/kvm/hyp/hyp-entry.S+15−0

This diff is large: its 22 lines aren’t shown here.

arch/arm64/kvm/hyp/switch.c+9−2

This diff is large: its 19 lines aren’t shown here.

arch/arm64/kvm/inject_fault.c+5−7

This diff is large: its 34 lines aren’t shown here.

arch/arm64/kvm/irq.h+19−0

This diff is large: its 20 lines aren’t shown here.

arch/arm64/kvm/reset.c+8−30

This diff is large: its 63 lines aren’t shown here.

arch/arm64/kvm/sys_regs.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/arm64/mm/dma-mapping.c+33−33

This diff is large: its 269 lines aren’t shown here.

arch/arm64/mm/mmu.c+4−4

This diff is large: its 22 lines aren’t shown here.

arch/avr32/mm/dma-coherent.c+6−6

This diff is large: its 50 lines aren’t shown here.

arch/blackfin/kernel/dma-mapping.c+4−4

This diff is large: its 36 lines aren’t shown here.

arch/blackfin/mm/init.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/c6x/include/asm/dma-mapping.h+2−2

This diff is large: its 11 lines aren’t shown here.

arch/c6x/kernel/dma.c+4−5

This diff is large: its 35 lines aren’t shown here.

arch/c6x/mm/dma-coherent.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/cris/arch-v10/drivers/axisflashmap.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/cris/arch-v32/drivers/axisflashmap.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/cris/arch-v32/drivers/pci/dma.c+4−5

This diff is large: its 35 lines aren’t shown here.

arch/frv/include/asm/mc146818rtc.h+0−16

This diff is large: its 17 lines aren’t shown here.

arch/frv/mb93090-mb00/pci-dma-nommu.c+4−4

This diff is large: its 36 lines aren’t shown here.

arch/frv/mb93090-mb00/pci-dma.c+4−5

This diff is large: its 36 lines aren’t shown here.

arch/h8300/include/asm/mc146818rtc.h+0−9

This diff is large: its 10 lines aren’t shown here.

arch/h8300/kernel/dma.c+4−4

This diff is large: its 35 lines aren’t shown here.

arch/hexagon/include/asm/dma-mapping.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/hexagon/kernel/dma.c+4−4

This diff is large: its 36 lines aren’t shown here.

arch/hexagon/mm/init.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/ia64/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

arch/ia64/hp/common/sba_iommu.c+11−11

This diff is large: its 93 lines aren’t shown here.

arch/ia64/include/asm/machvec.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/ia64/include/asm/mc146818rtc.h+0−10

This diff is large: its 11 lines aren’t shown here.

arch/ia64/include/asm/thread_info.h+0−28

This diff is large: its 33 lines aren’t shown here.

arch/ia64/include/asm/uaccess.h+15−3

This diff is large: its 46 lines aren’t shown here.

arch/ia64/kernel/efi.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/ia64/kernel/machine_kexec.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/ia64/kernel/mca.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/ia64/kernel/pci-swiotlb.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/ia64/kernel/salinfo.c+10−28

This diff is large: its 98 lines aren’t shown here.

arch/ia64/kernel/time.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/ia64/sn/pci/pci_dma.c+8−14

This diff is large: its 87 lines aren’t shown here.

arch/m68k/amiga/config.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/m68k/apollo/config.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/m68k/bvme6000/config.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/m68k/hp300/config.c+1−1

This diff is large: its 16 lines aren’t shown here.

arch/m68k/include/asm/flat.h+10−3

This diff is large: its 30 lines aren’t shown here.

arch/m68k/include/asm/processor.h+1−14

This diff is large: its 36 lines aren’t shown here.

arch/m68k/include/asm/rtc.h+0−79

This diff is large: its 80 lines aren’t shown here.

arch/m68k/kernel/dma.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/m68k/kernel/time.c+46−2

This diff is large: its 62 lines aren’t shown here.

arch/m68k/mac/config.c+2−1

This diff is large: its 24 lines aren’t shown here.

arch/m68k/mac/misc.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/m68k/mvme147/config.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/m68k/mvme16x/config.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/m68k/q40/config.c+1−1

This diff is large: its 16 lines aren’t shown here.

arch/m68k/sun3/config.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/m68k/sun3/intersil.c+1−1

This diff is large: its 10 lines aren’t shown here.

arch/m68k/sun3x/time.c+1−1

This diff is large: its 12 lines aren’t shown here.

arch/metag/include/asm/cmpxchg_lnkget.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/metag/include/asm/metag_mem.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/metag/include/asm/metag_regs.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/metag/kernel/cachepart.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/metag/kernel/dma.c+8−8

This diff is large: its 69 lines aren’t shown here.

arch/metag/lib/divsi3.S+2−2

This diff is large: its 18 lines aren’t shown here.

arch/metag/mm/fault.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/microblaze/include/asm/dma-mapping.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/microblaze/include/asm/pci.h+0−3

This diff is large: its 10 lines aren’t shown here.

arch/microblaze/include/asm/thread_info.h+0−27

This diff is large: its 34 lines aren’t shown here.

arch/microblaze/kernel/dma.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/microblaze/mm/init.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/microblaze/mm/pgtable.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/microblaze/pci/pci-common.c+15−58

This diff is large: its 99 lines aren’t shown here.

arch/mips/Kconfig+16−33

This diff is large: its 121 lines aren’t shown here.

arch/mips/ath79/setup.c+2−2

This diff is large: its 11 lines aren’t shown here.

arch/mips/bmips/setup.c+2−2

This diff is large: its 11 lines aren’t shown here.

arch/mips/boot/compressed/decompress.c+17−0

This diff is large: its 38 lines aren’t shown here.

arch/mips/boot/compressed/head.S+0−16

This diff is large: its 23 lines aren’t shown here.

arch/mips/boot/dts/cavium-octeon/dlink_dsr-1000n.dts+18−2

This diff is large: its 38 lines aren’t shown here.

arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dts+0−12

This diff is large: its 17 lines aren’t shown here.

arch/mips/boot/tools/relocs_64.c+11−8

This diff is large: its 29 lines aren’t shown here.

arch/mips/cavium-octeon/dma-octeon.c+4−4

This diff is large: its 36 lines aren’t shown here.

arch/mips/cavium-octeon/executive/cvmx-bootmem.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/cavium-octeon/executive/cvmx-helper-board.c+0−22

This diff is large: its 43 lines aren’t shown here.

arch/mips/cavium-octeon/octeon-irq.c+1−13

This diff is large: its 42 lines aren’t shown here.

arch/mips/cavium-octeon/octeon-platform.c+69−56

This diff is large: its 211 lines aren’t shown here.

arch/mips/cavium-octeon/setup.c+19−1

This diff is large: its 29 lines aren’t shown here.

arch/mips/cavium-octeon/smp.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/mips/cobalt/setup.c+2−2

This diff is large: its 11 lines aren’t shown here.

arch/mips/configs/ath25_defconfig+119−0

This diff is large: its 120 lines aren’t shown here.

arch/mips/configs/cavium_octeon_defconfig+2−0

This diff is large: its 9 lines aren’t shown here.

arch/mips/include/asm/addrspace.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/include/asm/bootinfo.h+4−0

This diff is large: its 11 lines aren’t shown here.

arch/mips/include/asm/dsemul.h+92−0

This diff is large: its 93 lines aren’t shown here.

arch/mips/include/asm/elf.h+4−0

This diff is large: its 16 lines aren’t shown here.

arch/mips/include/asm/fpu_emulator.h+3−14

This diff is large: its 39 lines aren’t shown here.

arch/mips/include/asm/kvm_host.h+125−190

This diff is large: its 585 lines aren’t shown here.

arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/include/asm/mach-cavium-octeon/irq.h+0−2

This diff is large: its 9 lines aren’t shown here.

arch/mips/include/asm/mach-cavium-octeon/mangle-port.h+13−29

This diff is large: its 68 lines aren’t shown here.

arch/mips/include/asm/mips-cm.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/include/asm/mipsregs.h+20−1

This diff is large: its 42 lines aren’t shown here.

arch/mips/include/asm/mmu.h+9−0

This diff is large: its 21 lines aren’t shown here.

arch/mips/include/asm/mmu_context.h+6−0

This diff is large: its 27 lines aren’t shown here.

arch/mips/include/asm/msa.h+2−0

This diff is large: its 16 lines aren’t shown here.

arch/mips/include/asm/page.h+32−12

This diff is large: its 58 lines aren’t shown here.

arch/mips/include/asm/pci.h+0−10

This diff is large: its 17 lines aren’t shown here.

arch/mips/include/asm/pgtable.h+8−8

This diff is large: its 72 lines aren’t shown here.

arch/mips/include/asm/processor.h+17−1

This diff is large: its 52 lines aren’t shown here.

arch/mips/include/asm/r4kcache.h+4−0

This diff is large: its 12 lines aren’t shown here.

arch/mips/include/asm/seccomp.h+2−2

This diff is large: its 13 lines aren’t shown here.

arch/mips/include/asm/setup.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/mips/include/asm/signal.h+3−3

This diff is large: its 20 lines aren’t shown here.

arch/mips/include/asm/smp.h+3−1

This diff is large: its 18 lines aren’t shown here.

arch/mips/include/asm/syscall.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/include/asm/uaccess.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/include/asm/uasm.h+7−0

This diff is large: its 23 lines aren’t shown here.

arch/mips/include/uapi/asm/auxvec.h+2−0

This diff is large: its 7 lines aren’t shown here.

arch/mips/include/uapi/asm/inst.h+108−6

This diff is large: its 188 lines aren’t shown here.

arch/mips/jz4740/setup.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/kernel/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/kernel/asm-offsets.c+0−70

This diff is large: its 87 lines aren’t shown here.

arch/mips/kernel/branch.c+4−4

This diff is large: its 29 lines aren’t shown here.

arch/mips/kernel/cevt-r4k.c+1−6

This diff is large: its 22 lines aren’t shown here.

arch/mips/kernel/cpu-bugs64.c+3−3

This diff is large: its 26 lines aren’t shown here.

arch/mips/kernel/csrc-r4k.c+3−1

This diff is large: its 19 lines aren’t shown here.

arch/mips/kernel/elf.c+21−2

This diff is large: its 51 lines aren’t shown here.

arch/mips/kernel/head.S+14−7

This diff is large: its 43 lines aren’t shown here.

arch/mips/kernel/mips-cm.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/kernel/mips-r2-to-r6-emul.c+21−21

This diff is large: its 189 lines aren’t shown here.

arch/mips/kernel/pm-cps.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/mips/kernel/process.c+14−0

This diff is large: its 40 lines aren’t shown here.

arch/mips/kernel/scall64-n32.S+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/kernel/scall64-o32.S+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/kernel/segment.c+8−5

This diff is large: its 26 lines aren’t shown here.

arch/mips/kernel/setup.c+4−0

This diff is large: its 11 lines aren’t shown here.

arch/mips/kernel/signal.c+13−5

This diff is large: its 60 lines aren’t shown here.

arch/mips/kernel/signal32.c+6−282

This diff is large: its 313 lines aren’t shown here.

arch/mips/kernel/signal_o32.c+285−0

This diff is large: its 286 lines aren’t shown here.

arch/mips/kernel/smp-bmips.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/mips/kernel/smp-cps.c+35−11

This diff is large: its 127 lines aren’t shown here.

arch/mips/kernel/smp.c+21−13

This diff is large: its 82 lines aren’t shown here.

arch/mips/kernel/traps.c+18−9

This diff is large: its 83 lines aren’t shown here.

arch/mips/kernel/unaligned.c+5−5

This diff is large: its 45 lines aren’t shown here.

arch/mips/kernel/vdso.c+10−0

This diff is large: its 17 lines aren’t shown here.

arch/mips/kvm/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

arch/mips/kvm/Makefile+2−1

This diff is large: its 12 lines aren’t shown here.

arch/mips/kvm/commpage.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/kvm/dyntrans.c+86−96

This diff is large: its 219 lines aren’t shown here.

arch/mips/kvm/emulate.c+259−226

This diff is large: its 1190 lines aren’t shown here.

arch/mips/kvm/entry.c+701−0

This diff is large: its 702 lines aren’t shown here.

arch/mips/kvm/fpu.S+5−2

This diff is large: its 28 lines aren’t shown here.

arch/mips/kvm/interrupt.c+6−6

This diff is large: its 43 lines aren’t shown here.

arch/mips/kvm/interrupt.h+5−9

This diff is large: its 31 lines aren’t shown here.

arch/mips/kvm/locore.S+0−605

This diff is large: its 606 lines aren’t shown here.

arch/mips/kvm/mips.c+256−111

This diff is large: its 720 lines aren’t shown here.

arch/mips/kvm/mmu.c+375−0

This diff is large: its 376 lines aren’t shown here.

arch/mips/kvm/stats.c+0−21

This diff is large: its 28 lines aren’t shown here.

arch/mips/kvm/tlb.c+42−456

This diff is large: its 687 lines aren’t shown here.

arch/mips/kvm/trace.h+233−3

This diff is large: its 253 lines aren’t shown here.

arch/mips/kvm/trap_emul.c+87−91

This diff is large: its 370 lines aren’t shown here.

arch/mips/lantiq/irq.c+16−15

This diff is large: its 101 lines aren’t shown here.

arch/mips/lantiq/prom.c+2−2

This diff is large: its 11 lines aren’t shown here.

arch/mips/loongson64/common/dma-swiotlb.c+5−5

This diff is large: its 39 lines aren’t shown here.

arch/mips/loongson64/loongson-3/hpet.c+7−7

This diff is large: its 39 lines aren’t shown here.

arch/mips/loongson64/loongson-3/smp.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/mips/math-emu/cp1emu.c+11−11

This diff is large: its 71 lines aren’t shown here.

arch/mips/math-emu/dsemul.c+223−110

This diff is large: its 387 lines aren’t shown here.

arch/mips/mm/c-r4k.c+228−58

This diff is large: its 481 lines aren’t shown here.

arch/mips/mm/dma-default.c+10−10

This diff is large: its 88 lines aren’t shown here.

arch/mips/mm/init.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/mm/sc-debugfs.c+2−2

This diff is large: its 11 lines aren’t shown here.

arch/mips/mm/sc-rm7k.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/mm/tlbex.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/mips/mm/uasm-micromips.c+11−2

This diff is large: its 41 lines aren’t shown here.

arch/mips/mm/uasm-mips.c+12−1

This diff is large: its 32 lines aren’t shown here.

arch/mips/mm/uasm.c+17−13

This diff is large: its 66 lines aren’t shown here.

arch/mips/mti-malta/malta-dtshim.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/mips/mti-malta/malta-memory.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/mti-malta/malta-setup.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/net/bpf_jit.c+3−3

This diff is large: its 27 lines aren’t shown here.

arch/mips/netlogic/common/nlm-dma.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/mips/pci/pci.c+18−1

This diff is large: its 33 lines aren’t shown here.

arch/mips/pic32/pic32mzda/init.c+2−2

This diff is large: its 11 lines aren’t shown here.

arch/mips/pistachio/init.c+0−25

This diff is large: its 39 lines aren’t shown here.

arch/mips/ralink/mt7620.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/sgi-ip22/ip22-reset.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mips/sni/time.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/mips/txx9/generic/pci.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/mn10300/Kconfig+3−1

This diff is large: its 11 lines aren’t shown here.

arch/mn10300/include/asm/rtc-regs.h+2−2

This diff is large: its 12 lines aren’t shown here.

arch/mn10300/include/asm/rtc.h+0−2

This diff is large: its 7 lines aren’t shown here.

arch/mn10300/kernel/rtc.c+9−95

This diff is large: its 122 lines aren’t shown here.

arch/mn10300/mm/dma-alloc.c+4−4

This diff is large: its 36 lines aren’t shown here.

arch/mn10300/proc-mn103e010/proc-init.c+3−0

This diff is large: its 11 lines aren’t shown here.

arch/mn10300/proc-mn2ws0050/proc-init.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/nios2/mm/dma-mapping.c+6−6

This diff is large: its 53 lines aren’t shown here.

arch/nios2/mm/init.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/openrisc/kernel/dma.c+10−11

This diff is large: its 95 lines aren’t shown here.

arch/openrisc/mm/ioremap.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/parisc/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

arch/parisc/include/asm/hash.h+146−0

This diff is large: its 147 lines aren’t shown here.

arch/parisc/include/asm/mc146818rtc.h+0−9

This diff is large: its 10 lines aren’t shown here.

arch/parisc/include/asm/rtc.h+0−131

This diff is large: its 132 lines aren’t shown here.

arch/parisc/kernel/firmware.c+3−3

This diff is large: its 13 lines aren’t shown here.

arch/parisc/kernel/pci-dma.c+9−9

This diff is large: its 77 lines aren’t shown here.

arch/parisc/kernel/time.c+35−1

This diff is large: its 57 lines aren’t shown here.

arch/parisc/lib/iomap.c+32−32

This diff is large: its 78 lines aren’t shown here.

arch/powerpc/Kconfig+33−39

This diff is large: its 110 lines aren’t shown here.

arch/powerpc/Kconfig.debug+21−3

This diff is large: its 51 lines aren’t shown here.

arch/powerpc/Makefile+6−1

This diff is large: its 21 lines aren’t shown here.

arch/powerpc/boot/Makefile+7−3

This diff is large: its 45 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/kmcoge4.dts+37−0

This diff is large: its 44 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/mvme7100.dts+153−0

This diff is large: its 154 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/qonverge-usb2-dr-0.dtsi+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/t1040si-post.dtsi+47−2

This diff is large: its 67 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/t104xd4rdb.dtsi+38−0

This diff is large: its 43 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/t104xqds.dtsi+38−0

This diff is large: its 43 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/t104xrdb.dtsi+38−0

This diff is large: its 43 lines aren’t shown here.

arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi+2−0

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/boot/motload-head.S+11−0

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/boot/mvme7100.c+59−0

This diff is large: its 60 lines aren’t shown here.

arch/powerpc/boot/opal-calls.S+58−0

This diff is large: its 59 lines aren’t shown here.

arch/powerpc/boot/opal.c+98−0

This diff is large: its 99 lines aren’t shown here.

arch/powerpc/boot/ops.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/boot/ppc_asm.h+4−0

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/boot/ppcboot.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/boot/serial.c+2−0

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/boot/types.h+10−0

This diff is large: its 17 lines aren’t shown here.

arch/powerpc/boot/wrapper+5−0

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/configs/40x/acadia_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/40x/ep405_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/40x/kilauea_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/40x/klondike_defconfig+0−3

This diff is large: its 17 lines aren’t shown here.

arch/powerpc/configs/40x/makalu_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/40x/obs600_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/40x/virtex_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/40x/walnut_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/akebono_defconfig+3−5

This diff is large: its 22 lines aren’t shown here.

arch/powerpc/configs/44x/arches_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/bamboo_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/bluestone_defconfig+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/configs/44x/canyonlands_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/currituck_defconfig+3−5

This diff is large: its 22 lines aren’t shown here.

arch/powerpc/configs/44x/ebony_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/eiger_defconfig+0−2

This diff is large: its 16 lines aren’t shown here.

arch/powerpc/configs/44x/icon_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/44x/iss476-smp_defconfig+3−5

This diff is large: its 22 lines aren’t shown here.

arch/powerpc/configs/44x/katmai_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/rainier_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/redwood_defconfig+0−2

This diff is large: its 16 lines aren’t shown here.

arch/powerpc/configs/44x/sam440ep_defconfig+2−4

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/configs/44x/sequoia_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/taishan_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/virtex5_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/44x/warp_defconfig+1−4

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/configs/52xx/cm5200_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/52xx/lite5200b_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/52xx/motionpro_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/52xx/pcm030_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/52xx/tqm5200_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/asp8347_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/kmeter1_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc8313_rdb_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc8315_rdb_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc832x_mds_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc832x_rdb_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc834x_itx_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc834x_mds_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc836x_mds_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc836x_rdk_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc837x_mds_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/mpc837x_rdb_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/83xx/sbc834x_defconfig+1−4

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/configs/85xx/ge_imp3a_defconfig+1−3

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/configs/85xx/kmp204x_defconfig+1−2

This diff is large: its 17 lines aren’t shown here.

arch/powerpc/configs/85xx/ksi8560_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/mpc8540_ads_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/mpc8560_ads_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/mpc85xx_cds_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/sbc8548_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/85xx/socrates_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/stx_gp3_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/tqm8540_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/tqm8541_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/tqm8548_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/85xx/tqm8555_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/tqm8560_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/85xx/xes_mpc85xx_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/86xx-hw.config+2−2

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/configs/adder875_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/amigaone_defconfig+0−2

This diff is large: its 16 lines aren’t shown here.

arch/powerpc/configs/c2k_defconfig+3−5

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/configs/cell_defconfig+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/configs/chrp32_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/ep8248e_defconfig+1−4

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/configs/ep88xc_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/fsl-emb-nonhw.config+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/g5_defconfig+3−4

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/gamecube_defconfig+1−4

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/configs/holly_defconfig+1−2

This diff is large: its 17 lines aren’t shown here.

arch/powerpc/configs/linkstation_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/maple_defconfig+1−4

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/configs/mgcoge_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/mpc512x_defconfig+3−5

This diff is large: its 30 lines aren’t shown here.

arch/powerpc/configs/mpc5200_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/mpc7448_hpc2_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/mpc8272_ads_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/mpc83xx_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/mpc866_ads_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/mpc86xx_basic_defconfig+1−0

This diff is large: its 5 lines aren’t shown here.

arch/powerpc/configs/mpc885_ads_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/mvme5100_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/pasemi_defconfig+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/configs/pmac32_defconfig+1−4

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/configs/powernv_defconfig+5−3

This diff is large: its 29 lines aren’t shown here.

arch/powerpc/configs/ppc40x_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/ppc44x_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/ppc64_defconfig+1−5

This diff is large: its 24 lines aren’t shown here.

arch/powerpc/configs/ppc64e_defconfig+1−5

This diff is large: its 17 lines aren’t shown here.

arch/powerpc/configs/ppc6xx_defconfig+4−5

This diff is large: its 27 lines aren’t shown here.

arch/powerpc/configs/pq2fads_defconfig+1−4

This diff is large: its 26 lines aren’t shown here.

arch/powerpc/configs/ps3_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/pseries_defconfig+2−5

This diff is large: its 32 lines aren’t shown here.

arch/powerpc/configs/storcenter_defconfig+1−3

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/configs/tqm8xx_defconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/configs/wii_defconfig+1−4

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/include/asm/accounting.h+24−0

This diff is large: its 25 lines aren’t shown here.

arch/powerpc/include/asm/asm-compat.h+2−0

This diff is large: its 14 lines aren’t shown here.

arch/powerpc/include/asm/asm-prototypes.h+75−0

This diff is large: its 76 lines aren’t shown here.

arch/powerpc/include/asm/book3s/64/hugetlb-radix.h+15−0

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/include/asm/book3s/64/mmu-hash.h+56−4

This diff is large: its 96 lines aren’t shown here.

arch/powerpc/include/asm/book3s/64/mmu.h+8−3

This diff is large: its 36 lines aren’t shown here.

arch/powerpc/include/asm/book3s/64/pgtable-4k.h+3−3

This diff is large: its 27 lines aren’t shown here.

arch/powerpc/include/asm/book3s/64/pgtable-64k.h+3−3

This diff is large: its 27 lines aren’t shown here.

arch/powerpc/include/asm/book3s/64/pgtable.h+70−29

This diff is large: its 231 lines aren’t shown here.

arch/powerpc/include/asm/book3s/64/tlbflush-hash.h+0−5

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/include/asm/book3s/64/tlbflush-radix.h+14−6

This diff is large: its 42 lines aren’t shown here.

arch/powerpc/include/asm/book3s/64/tlbflush.h+19−8

This diff is large: its 41 lines aren’t shown here.

arch/powerpc/include/asm/cacheflush.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/include/asm/code-patching.h+4−6

This diff is large: its 44 lines aren’t shown here.

arch/powerpc/include/asm/cpu_has_feature.h+53−0

This diff is large: its 54 lines aren’t shown here.

arch/powerpc/include/asm/cpufeature.h+40−0

This diff is large: its 41 lines aren’t shown here.

arch/powerpc/include/asm/cpuidle.h+2−0

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/cputable.h+7−8

This diff is large: its 36 lines aren’t shown here.

arch/powerpc/include/asm/cputime.h+12−3

This diff is large: its 39 lines aren’t shown here.

arch/powerpc/include/asm/dbell.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/include/asm/dcr-native.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/include/asm/dma-mapping.h+3−4

This diff is large: its 26 lines aren’t shown here.

arch/powerpc/include/asm/eeh.h+2−2

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/include/asm/exception-64s.h+3−1

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/include/asm/feature-fixups.h+4−0

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/firmware.h+6−0

This diff is large: its 13 lines aren’t shown here.

arch/powerpc/include/asm/fixmap.h+7−0

This diff is large: its 14 lines aren’t shown here.

arch/powerpc/include/asm/ftrace.h+5−3

This diff is large: its 28 lines aren’t shown here.

arch/powerpc/include/asm/hmi.h+45−0

This diff is large: its 46 lines aren’t shown here.

arch/powerpc/include/asm/hugetlb.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/hvcall.h+0−11

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/include/asm/hw_irq.h+2−0

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/iommu.h+5−6

This diff is large: its 43 lines aren’t shown here.

arch/powerpc/include/asm/jump_label.h+3−2

This diff is large: its 26 lines aren’t shown here.

arch/powerpc/include/asm/kprobes.h+3−5

This diff is large: its 29 lines aren’t shown here.

arch/powerpc/include/asm/kvm_book3s_64.h+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/include/asm/kvm_book3s_asm.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/linkage.h+3−3

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/include/asm/machdep.h+2−40

This diff is large: its 70 lines aren’t shown here.

arch/powerpc/include/asm/mman.h+5−4

This diff is large: its 26 lines aren’t shown here.

arch/powerpc/include/asm/mmu-8xx.h+3−0

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/include/asm/mmu.h+91−16

This diff is large: its 181 lines aren’t shown here.

arch/powerpc/include/asm/mpc52xx.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/nohash/32/pte-44x.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/nohash/64/pgtable-64k.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/include/asm/opal-api.h+41−5

This diff is large: its 96 lines aren’t shown here.

arch/powerpc/include/asm/opal.h+32−2

This diff is large: its 75 lines aren’t shown here.

arch/powerpc/include/asm/paca.h+8−7

This diff is large: its 32 lines aren’t shown here.

arch/powerpc/include/asm/page.h+3−3

This diff is large: its 21 lines aren’t shown here.

arch/powerpc/include/asm/pci-bridge.h+2−0

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/pci.h+0−3

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/include/asm/pgtable-be-types.h+15−0

This diff is large: its 51 lines aren’t shown here.

arch/powerpc/include/asm/pmac_feature.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/pnv-pci.h+47−0

This diff is large: its 62 lines aren’t shown here.

arch/powerpc/include/asm/ppc-opcode.h+46−1

This diff is large: its 164 lines aren’t shown here.

arch/powerpc/include/asm/ppc-pci.h+0−2

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/ppc4xx.h+1−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/include/asm/ppc_asm.h+14−14

This diff is large: its 58 lines aren’t shown here.

arch/powerpc/include/asm/processor.h+6−1

This diff is large: its 35 lines aren’t shown here.

arch/powerpc/include/asm/ps3.h+2−0

This diff is large: its 7 lines aren’t shown here.

arch/powerpc/include/asm/ps3av.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/pte-common.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/ptrace.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/reg.h+54−43

This diff is large: its 159 lines aren’t shown here.

arch/powerpc/include/asm/rtas.h+4−3

This diff is large: its 32 lines aren’t shown here.

arch/powerpc/include/asm/rtc.h+0−78

This diff is large: its 79 lines aren’t shown here.

arch/powerpc/include/asm/sections.h+2−2

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/include/asm/setup.h+12−0

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/include/asm/smp.h+6−3

This diff is large: its 23 lines aren’t shown here.

arch/powerpc/include/asm/smu.h+1−8

This diff is large: its 23 lines aren’t shown here.

arch/powerpc/include/asm/spinlock.h+32−6

This diff is large: its 45 lines aren’t shown here.

arch/powerpc/include/asm/string.h+0−4

This diff is large: its 13 lines aren’t shown here.

arch/powerpc/include/asm/switch_to.h+8−0

This diff is large: its 15 lines aren’t shown here.

arch/powerpc/include/asm/synch.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/include/asm/tce.h+0−3

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/include/asm/thread_info.h+4−25

This diff is large: its 59 lines aren’t shown here.

arch/powerpc/include/asm/time.h+5−4

This diff is large: its 39 lines aren’t shown here.

arch/powerpc/include/asm/tlb.h+13−0

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/include/asm/tlbflush.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/include/asm/tsi108.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/include/asm/types.h+8−0

This diff is large: its 15 lines aren’t shown here.

arch/powerpc/include/asm/uaccess.h+19−2

This diff is large: its 55 lines aren’t shown here.

arch/powerpc/include/asm/xics.h+6−0

This diff is large: its 13 lines aren’t shown here.

arch/powerpc/include/asm/xor.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/include/uapi/asm/elf.h+5−0

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/kernel/Makefile+3−4

This diff is large: its 25 lines aren’t shown here.

arch/powerpc/kernel/align.c+16−3

This diff is large: its 40 lines aren’t shown here.

arch/powerpc/kernel/asm-offsets.c+27−53

This diff is large: its 209 lines aren’t shown here.

arch/powerpc/kernel/cpu_setup_6xx.S+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kernel/cpu_setup_power.S+19−1

This diff is large: its 94 lines aren’t shown here.

arch/powerpc/kernel/cputable.c+39−2

This diff is large: its 66 lines aren’t shown here.

arch/powerpc/kernel/crash.c+10−5

This diff is large: its 45 lines aren’t shown here.

arch/powerpc/kernel/dma-iommu.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/powerpc/kernel/dma.c+9−9

This diff is large: its 81 lines aren’t shown here.

arch/powerpc/kernel/eeh_cache.c+4−4

This diff is large: its 23 lines aren’t shown here.

arch/powerpc/kernel/eeh_dev.c+3−14

This diff is large: its 52 lines aren’t shown here.

arch/powerpc/kernel/eeh_driver.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kernel/entry_32.S+17−0

This diff is large: its 38 lines aren’t shown here.

arch/powerpc/kernel/entry_64.S+5−5

This diff is large: its 45 lines aren’t shown here.

arch/powerpc/kernel/exceptions-64e.S+3−3

This diff is large: its 27 lines aren’t shown here.

arch/powerpc/kernel/exceptions-64s.S+40−38

This diff is large: its 190 lines aren’t shown here.

arch/powerpc/kernel/fadump.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/kernel/ftrace.c+20−19

This diff is large: its 65 lines aren’t shown here.

arch/powerpc/kernel/head_64.S+2−5

This diff is large: its 28 lines aren’t shown here.

arch/powerpc/kernel/head_8xx.S+80−79

This diff is large: its 266 lines aren’t shown here.

arch/powerpc/kernel/hmi.c+56−0

This diff is large: its 57 lines aren’t shown here.

arch/powerpc/kernel/ibmebus.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/powerpc/kernel/idle_book3s.Srenamed from arch/powerpc/kernel/idle_power7.S+261−112

This diff is large: its 570 lines aren’t shown here.

arch/powerpc/kernel/iommu.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/powerpc/kernel/irq.c+17−1

This diff is large: its 39 lines aren’t shown here.

arch/powerpc/kernel/kprobes.c+7−10

This diff is large: its 33 lines aren’t shown here.

arch/powerpc/kernel/machine_kexec_64.c+8−2

This diff is large: its 31 lines aren’t shown here.

arch/powerpc/kernel/misc_32.S+0−14

This diff is large: its 21 lines aren’t shown here.

arch/powerpc/kernel/misc_64.S+2−2

This diff is large: its 16 lines aren’t shown here.

arch/powerpc/kernel/module_64.c+5−4

This diff is large: its 31 lines aren’t shown here.

arch/powerpc/kernel/paca.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kernel/pci-common.c+90−71

This diff is large: its 246 lines aren’t shown here.

arch/powerpc/kernel/pci_64.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kernel/pci_dn.c+28−6

This diff is large: its 121 lines aren’t shown here.

arch/powerpc/kernel/process.c+56−13

This diff is large: its 136 lines aren’t shown here.

arch/powerpc/kernel/prom.c+15−1

This diff is large: its 41 lines aren’t shown here.

arch/powerpc/kernel/ptrace.c+1616−124

This diff is large: its 1930 lines aren’t shown here.

arch/powerpc/kernel/rtas-proc.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kernel/rtas.c+4−4

This diff is large: its 36 lines aren’t shown here.

arch/powerpc/kernel/rtasd.c+20−8

This diff is large: its 69 lines aren’t shown here.

arch/powerpc/kernel/setup-common.c+189−1

This diff is large: its 236 lines aren’t shown here.

arch/powerpc/kernel/setup.h+58−0

This diff is large: its 59 lines aren’t shown here.

arch/powerpc/kernel/setup_32.c+24−90

This diff is large: its 191 lines aren’t shown here.

arch/powerpc/kernel/setup_64.c+60−225

This diff is large: its 428 lines aren’t shown here.

arch/powerpc/kernel/signal_64.c+8−3

This diff is large: its 25 lines aren’t shown here.

arch/powerpc/kernel/smp.c+4−0

This diff is large: its 25 lines aren’t shown here.

arch/powerpc/kernel/sysfs.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kernel/time.c+141−36

This diff is large: its 348 lines aren’t shown here.

arch/powerpc/kernel/tm.S+1−2

This diff is large: its 17 lines aren’t shown here.

arch/powerpc/kernel/traps.c+17−1

This diff is large: its 56 lines aren’t shown here.

arch/powerpc/kernel/vector.S+5−4

This diff is large: its 16 lines aren’t shown here.

arch/powerpc/kernel/vio.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/powerpc/kernel/vmlinux.lds.S+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kvm/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kvm/book3s_64_mmu_host.c+10−8

This diff is large: its 43 lines aren’t shown here.

arch/powerpc/kvm/book3s_64_vio.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/kvm/book3s_hv.c+39−2

This diff is large: its 76 lines aren’t shown here.

arch/powerpc/kvm/book3s_hv_ras.c+176−0

This diff is large: its 187 lines aren’t shown here.

arch/powerpc/kvm/book3s_hv_rmhandlers.S+316−215

This diff is large: its 644 lines aren’t shown here.

arch/powerpc/kvm/book3s_interrupts.S+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kvm/book3s_pr.c+16−6

This diff is large: its 64 lines aren’t shown here.

arch/powerpc/kvm/book3s_rmhandlers.S+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/kvm/booke.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/kvm/emulate.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/kvm/mpic.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/kvm/powerpc.c+5−1

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/lib/alloc.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/lib/checksum_64.S+6−6

This diff is large: its 26 lines aren’t shown here.

arch/powerpc/lib/feature-fixups.c+65−2

This diff is large: its 95 lines aren’t shown here.

arch/powerpc/lib/locks.c+0−16

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/lib/ppc_ksyms.c+0−4

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/lib/rheap.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/lib/string.S+3−41

This diff is large: its 85 lines aren’t shown here.

arch/powerpc/lib/vmx-helper.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/mm/8xx_mmu.c+90−41

This diff is large: its 175 lines aren’t shown here.

arch/powerpc/mm/hash64_4k.c+10−8

This diff is large: its 41 lines aren’t shown here.

arch/powerpc/mm/hash64_64k.c+22−17

This diff is large: its 85 lines aren’t shown here.

arch/powerpc/mm/hash_native_64.c+24−18

This diff is large: its 96 lines aren’t shown here.

arch/powerpc/mm/hash_utils_64.c+108−98

This diff is large: its 457 lines aren’t shown here.

arch/powerpc/mm/hugepage-hash64.c+9−8

This diff is large: its 42 lines aren’t shown here.

arch/powerpc/mm/hugetlbpage-hash64.c+2−2

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/mm/hugetlbpage-radix.c+17−22

This diff is large: its 57 lines aren’t shown here.

arch/powerpc/mm/hugetlbpage.c+7−0

This diff is large: its 14 lines aren’t shown here.

arch/powerpc/mm/init_32.c+1−4

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/mm/init_64.c+22−0

This diff is large: its 26 lines aren’t shown here.

arch/powerpc/mm/mem.c+17−1

This diff is large: its 33 lines aren’t shown here.

arch/powerpc/mm/mmu_context_book3s64.c+4−1

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/mm/mmu_decl.h+2−1

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/mm/numa.c+26−10

This diff is large: its 45 lines aren’t shown here.

arch/powerpc/mm/pgtable-book3s64.c+5−2

This diff is large: its 28 lines aren’t shown here.

arch/powerpc/mm/pgtable-radix.c+12−8

This diff is large: its 72 lines aren’t shown here.

arch/powerpc/mm/pgtable.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/mm/pgtable_32.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/mm/tlb-radix.c+132−23

This diff is large: its 235 lines aren’t shown here.

arch/powerpc/mm/tlb_hash32.c+0−11

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/mm/tlb_nohash.c+0−6

This diff is large: its 13 lines aren’t shown here.

arch/powerpc/net/Makefile+4−0

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/net/bpf_jit.h+92−143

This diff is large: its 353 lines aren’t shown here.

arch/powerpc/net/bpf_jit32.h+139−0

This diff is large: its 140 lines aren’t shown here.

arch/powerpc/net/bpf_jit64.h+102−0

This diff is large: its 103 lines aren’t shown here.

arch/powerpc/net/bpf_jit_asm.S+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/net/bpf_jit_asm64.S+180−0

This diff is large: its 181 lines aren’t shown here.

arch/powerpc/net/bpf_jit_comp.c+5−5

This diff is large: its 44 lines aren’t shown here.

arch/powerpc/net/bpf_jit_comp64.c+954−0

This diff is large: its 955 lines aren’t shown here.

arch/powerpc/oprofile/cell/spu_task_sync.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/perf/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/perf/core-book3s.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/perf/hv-24x7.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/perf/hv-24x7.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/perf/isa207-common.c+263−0

This diff is large: its 264 lines aren’t shown here.

arch/powerpc/perf/isa207-common.h+236−0

This diff is large: its 237 lines aren’t shown here.

arch/powerpc/perf/power8-pmu.c+7−470

This diff is large: its 514 lines aren’t shown here.

arch/powerpc/perf/power9-events-list.h+55−0

This diff is large: its 56 lines aren’t shown here.

arch/powerpc/perf/power9-pmu.c+330−0

This diff is large: its 331 lines aren’t shown here.

arch/powerpc/platforms/40x/ep405.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/40x/ppc40x_simple.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/40x/virtex.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/40x/walnut.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/44x/canyonlands.c+2−3

This diff is large: its 14 lines aren’t shown here.

arch/powerpc/platforms/44x/ebony.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/44x/iss4xx.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/44x/ppc44x_simple.c+1−2

This diff is large: its 13 lines aren’t shown here.

arch/powerpc/platforms/44x/ppc476.c+4−6

This diff is large: its 33 lines aren’t shown here.

arch/powerpc/platforms/44x/sam440ep.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/44x/virtex.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/44x/warp.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/512x/clock-commonclk.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/512x/mpc5121_ads.c+5−3

This diff is large: its 23 lines aren’t shown here.

arch/powerpc/platforms/512x/mpc512x.h+1−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/platforms/512x/mpc512x_generic.c+6−2

This diff is large: its 21 lines aren’t shown here.

arch/powerpc/platforms/512x/mpc512x_shared.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/512x/pdm360ng.c+5−3

This diff is large: its 23 lines aren’t shown here.

arch/powerpc/platforms/52xx/efika.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/52xx/lite5200.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/52xx/media5200.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/52xx/mpc5200_simple.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/52xx/mpc52xx_common.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/82xx/ep8248e.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/82xx/km82xx.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/82xx/mpc8272_ads.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/82xx/pq2.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/82xx/pq2.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/82xx/pq2fads.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/83xx/asp834x.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/83xx/km83xx.c+1−2

This diff is large: its 13 lines aren’t shown here.

arch/powerpc/platforms/83xx/misc.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc830x_rdb.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc831x_rdb.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc832x_mds.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc832x_rdb.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc834x_itx.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc834x_mds.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc836x_mds.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc836x_rdk.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc837x_mds.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc837x_rdb.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/83xx/mpc83xx.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/83xx/sbc834x.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/bsc913x_qds.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/bsc913x_rdb.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/c293pcie.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/corenet_generic.c+2−3

This diff is large: its 23 lines aren’t shown here.

arch/powerpc/platforms/85xx/ge_imp3a.c+2−5

This diff is large: its 22 lines aren’t shown here.

arch/powerpc/platforms/85xx/ksi8560.c+2−4

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/platforms/85xx/mpc8536_ds.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/mpc85xx_ads.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/mpc85xx_cds.c+2−4

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/platforms/85xx/mpc85xx_ds.c+4−12

This diff is large: its 44 lines aren’t shown here.

arch/powerpc/platforms/85xx/mpc85xx_mds.c+3−9

This diff is large: its 33 lines aren’t shown here.

arch/powerpc/platforms/85xx/mpc85xx_rdb.c+11−32

This diff is large: its 106 lines aren’t shown here.

arch/powerpc/platforms/85xx/mvme2500.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/p1010rdb.c+2−4

This diff is large: its 14 lines aren’t shown here.

arch/powerpc/platforms/85xx/p1022_ds.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/p1022_rdk.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/p1023_rdb.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/ppa8548.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/qemu_e500.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/sbc8548.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/socrates.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/stx_gp3.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/tqm85xx.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/85xx/twr_p102x.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/85xx/xes_mpc85xx.c+3−9

This diff is large: its 27 lines aren’t shown here.

arch/powerpc/platforms/86xx/Kconfig+7−1

This diff is large: its 22 lines aren’t shown here.

arch/powerpc/platforms/86xx/Makefile+1−0

This diff is large: its 5 lines aren’t shown here.

arch/powerpc/platforms/86xx/gef_ppc9a.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/86xx/gef_sbc310.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/86xx/gef_sbc610.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/86xx/mpc8610_hpcd.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/86xx/mpc86xx_hpcn.c+2−4

This diff is large: its 16 lines aren’t shown here.

arch/powerpc/platforms/86xx/mvme7100.c+121−0

This diff is large: its 122 lines aren’t shown here.

arch/powerpc/platforms/86xx/sbc8641d.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/8xx/adder875.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/8xx/ep88xc.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/8xx/m8xx_setup.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/8xx/mpc86xads_setup.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/8xx/mpc885ads_setup.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/8xx/mpc8xx.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/8xx/tqm8xx_setup.c+1−3

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/Kconfig+11−0

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/platforms/Kconfig.cputype+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/platforms/amigaone/setup.c+2−4

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/platforms/cell/iommu.c+16−16

This diff is large: its 120 lines aren’t shown here.

arch/powerpc/platforms/cell/pervasive.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/platforms/cell/setup.c+2−5

This diff is large: its 16 lines aren’t shown here.

arch/powerpc/platforms/cell/spider-pic.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/cell/spu_base.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/platforms/cell/spu_manage.c+1−2

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/cell/spufs/file.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/cell/spufs/run.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/cell/spufs/sched.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/chrp/setup.c+4−3

This diff is large: its 35 lines aren’t shown here.

arch/powerpc/platforms/embedded6xx/c2k.c+5−5

This diff is large: its 37 lines aren’t shown here.

arch/powerpc/platforms/embedded6xx/gamecube.c+6−13

This diff is large: its 56 lines aren’t shown here.

arch/powerpc/platforms/embedded6xx/holly.c+2−4

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/platforms/embedded6xx/linkstation.c+4−8

This diff is large: its 40 lines aren’t shown here.

arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c+2−4

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/platforms/embedded6xx/mvme5100.c+2−4

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/platforms/embedded6xx/storcenter.c+2−4

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/platforms/embedded6xx/wii.c+6−13

This diff is large: its 64 lines aren’t shown here.

arch/powerpc/platforms/maple/pci.c+21−13

This diff is large: its 48 lines aren’t shown here.

arch/powerpc/platforms/maple/setup.c+9−28

This diff is large: its 87 lines aren’t shown here.

arch/powerpc/platforms/pasemi/iommu.c+6−11

This diff is large: its 35 lines aren’t shown here.

arch/powerpc/platforms/pasemi/pasemi.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/platforms/pasemi/pci.c+0−3

This diff is large: its 10 lines aren’t shown here.

arch/powerpc/platforms/pasemi/setup.c+4−14

This diff is large: its 48 lines aren’t shown here.

arch/powerpc/platforms/powermac/low_i2c.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/powermac/pci.c+24−14

This diff is large: its 52 lines aren’t shown here.

arch/powerpc/platforms/powermac/setup.c+14−44

This diff is large: its 168 lines aren’t shown here.

arch/powerpc/platforms/powermac/smp.c+1−2

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/powernv/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/platforms/powernv/eeh-powernv.c+44−5

This diff is large: its 95 lines aren’t shown here.

arch/powerpc/platforms/powernv/idle.c+159−29

This diff is large: its 247 lines aren’t shown here.

arch/powerpc/platforms/powernv/npu-dma.c+8−8

This diff is large: its 72 lines aren’t shown here.

arch/powerpc/platforms/powernv/opal-async.c+5−0

This diff is large: its 12 lines aren’t shown here.

arch/powerpc/platforms/powernv/opal-memory-errors.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/powernv/opal-sensor.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/powernv/opal-sysparam.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/powerpc/platforms/powernv/opal-tracepoints.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/platforms/powernv/opal-wrappers.S+40−34

This diff is large: its 139 lines aren’t shown here.

arch/powerpc/platforms/powernv/opal.c+20−10

This diff is large: its 89 lines aren’t shown here.

arch/powerpc/platforms/powernv/pci-cxl.c+385−0

This diff is large: its 386 lines aren’t shown here.

arch/powerpc/platforms/powernv/pci-ioda.c+513−396

This diff is large: its 1336 lines aren’t shown here.

arch/powerpc/platforms/powernv/pci.c+126−8

This diff is large: its 173 lines aren’t shown here.

arch/powerpc/platforms/powernv/pci.h+30−15

This diff is large: its 125 lines aren’t shown here.

arch/powerpc/platforms/powernv/powernv.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/platforms/powernv/setup.c+5−11

This diff is large: its 50 lines aren’t shown here.

arch/powerpc/platforms/powernv/smp.c+3−1

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/ps3/device-init.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/ps3/htab.c+6−6

This diff is large: its 19 lines aren’t shown here.

arch/powerpc/platforms/ps3/repository.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/ps3/setup.c+12−11

This diff is large: its 52 lines aren’t shown here.

arch/powerpc/platforms/ps3/system-bus.c+9−9

This diff is large: its 80 lines aren’t shown here.

arch/powerpc/platforms/ps3/time.c+1−1

This diff is large: its 11 lines aren’t shown here.

arch/powerpc/platforms/pseries/cmm.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/pseries/dlpar.c+55−1

This diff is large: its 88 lines aren’t shown here.

arch/powerpc/platforms/pseries/eeh_pseries.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/pseries/event_sources.c+13−40

This diff is large: its 62 lines aren’t shown here.

arch/powerpc/platforms/pseries/firmware.c+46−2

This diff is large: its 73 lines aren’t shown here.

arch/powerpc/platforms/pseries/hotplug-cpu.c+0−13

This diff is large: its 27 lines aren’t shown here.

arch/powerpc/platforms/pseries/hotplug-memory.c+104−80

This diff is large: its 258 lines aren’t shown here.

arch/powerpc/platforms/pseries/io_event_irq.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/pseries/iommu.c+4−55

This diff is large: its 111 lines aren’t shown here.

arch/powerpc/platforms/pseries/kexec.c+1−22

This diff is large: its 43 lines aren’t shown here.

arch/powerpc/platforms/pseries/lpar.c+13−28

This diff is large: its 63 lines aren’t shown here.

arch/powerpc/platforms/pseries/nvram.c+0−2

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/pseries/power.c+2−0

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/platforms/pseries/pseries.h+5−16

This diff is large: its 44 lines aren’t shown here.

arch/powerpc/platforms/pseries/pseries_energy.c+4−4

This diff is large: its 24 lines aren’t shown here.

arch/powerpc/platforms/pseries/ras.c+39−0

This diff is large: its 60 lines aren’t shown here.

arch/powerpc/platforms/pseries/setup.c+58−183

This diff is large: its 420 lines aren’t shown here.

arch/powerpc/platforms/pseries/smp.c+5−26

This diff is large: its 68 lines aren’t shown here.

arch/powerpc/sysdev/cpm_common.c+17−5

This diff is large: its 50 lines aren’t shown here.

arch/powerpc/sysdev/dart_iommu.c+89−97

This diff is large: its 289 lines aren’t shown here.

arch/powerpc/sysdev/fsl_85xx_l2ctlr.c+2−6

This diff is large: its 15 lines aren’t shown here.

arch/powerpc/sysdev/fsl_rio.c+8−17

This diff is large: its 63 lines aren’t shown here.

arch/powerpc/sysdev/fsl_soc.c+5−3

This diff is large: its 34 lines aren’t shown here.

arch/powerpc/sysdev/fsl_soc.h+3−3

This diff is large: its 20 lines aren’t shown here.

arch/powerpc/sysdev/msi_bitmap.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/powerpc/sysdev/xics/Makefile+1−1

This diff is large: its 6 lines aren’t shown here.

arch/powerpc/sysdev/xics/icp-opal.c+144−0

This diff is large: its 145 lines aren’t shown here.

arch/powerpc/sysdev/xics/xics-common.c+4−1

This diff is large: its 13 lines aren’t shown here.

arch/powerpc/xmon/ppc-dis.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/powerpc/xmon/xmon.c+89−18

This diff is large: its 145 lines aren’t shown here.

arch/s390/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

arch/s390/boot/compressed/Makefile+3−3

This diff is large: its 22 lines aren’t shown here.

arch/s390/hypfs/hypfs_diag.c+107−270

This diff is large: its 566 lines aren’t shown here.

arch/s390/include/asm/cpacf.h+10−0

This diff is large: its 31 lines aren’t shown here.

arch/s390/include/asm/diag.h+149−0

This diff is large: its 154 lines aren’t shown here.

arch/s390/include/asm/dma-mapping.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/s390/include/asm/elf.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/s390/include/asm/gmap.h+76−6

This diff is large: its 127 lines aren’t shown here.

arch/s390/include/asm/kvm_host.h+30−3

This diff is large: its 126 lines aren’t shown here.

arch/s390/include/asm/mmu.h+7−4

This diff is large: its 26 lines aren’t shown here.

arch/s390/include/asm/mmu_context.h+2−1

This diff is large: its 11 lines aren’t shown here.

arch/s390/include/asm/page.h+6−3

This diff is large: its 27 lines aren’t shown here.

arch/s390/include/asm/pgalloc.h+2−0

This diff is large: its 11 lines aren’t shown here.

arch/s390/include/asm/pgtable.h+25−12

This diff is large: its 97 lines aren’t shown here.

arch/s390/include/asm/processor.h+2−0

This diff is large: its 9 lines aren’t shown here.

arch/s390/include/asm/sclp.h+20−3

This diff is large: its 46 lines aren’t shown here.

arch/s390/include/uapi/asm/auxvec.h+2−0

This diff is large: its 7 lines aren’t shown here.

arch/s390/include/uapi/asm/kvm.h+41−0

This diff is large: its 48 lines aren’t shown here.

arch/s390/include/uapi/asm/sie.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/s390/kernel/Makefile+8−3

This diff is large: its 37 lines aren’t shown here.

arch/s390/kernel/als.c+124−0

This diff is large: its 125 lines aren’t shown here.

arch/s390/kernel/diag.c+39−0

This diff is large: its 50 lines aren’t shown here.

arch/s390/kernel/entry.h+2−0

This diff is large: its 7 lines aren’t shown here.

arch/s390/kernel/head.S+4−39

This diff is large: its 54 lines aren’t shown here.

arch/s390/kernel/kprobes.c+12−0

This diff is large: its 26 lines aren’t shown here.

arch/s390/kernel/sclp.c+3−2

This diff is large: its 12 lines aren’t shown here.

arch/s390/kvm/Makefile+1−1

This diff is large: its 8 lines aren’t shown here.

arch/s390/kvm/diag.c+5−0

This diff is large: its 12 lines aren’t shown here.

arch/s390/kvm/gaccess.c+320−67

This diff is large: its 484 lines aren’t shown here.

arch/s390/kvm/gaccess.h+3−0

This diff is large: its 8 lines aren’t shown here.

arch/s390/kvm/guestdbg.c+18−1

This diff is large: its 33 lines aren’t shown here.

arch/s390/kvm/intercept.c+31−2

This diff is large: its 58 lines aren’t shown here.

arch/s390/kvm/interrupt.c+22−12

This diff is large: its 76 lines aren’t shown here.

arch/s390/kvm/kvm-s390.c+346−58

This diff is large: its 826 lines aren’t shown here.

arch/s390/kvm/kvm-s390.h+21−1

This diff is large: its 61 lines aren’t shown here.

arch/s390/kvm/priv.c+193−33

This diff is large: its 313 lines aren’t shown here.

arch/s390/kvm/sigp.c+5−5

This diff is large: its 24 lines aren’t shown here.

arch/s390/kvm/sthyi.c+471−0

This diff is large: its 472 lines aren’t shown here.

arch/s390/kvm/trace.h+46−3

This diff is large: its 70 lines aren’t shown here.

arch/s390/kvm/vsie.c+1091−0

This diff is large: its 1092 lines aren’t shown here.

arch/s390/lib/uaccess.c+2−0

This diff is large: its 16 lines aren’t shown here.

arch/s390/mm/fault.c+2−0

This diff is large: its 9 lines aren’t shown here.

arch/s390/mm/gmap.c+1514−88

This diff is large: its 1784 lines aren’t shown here.

arch/s390/mm/hugetlbpage.c+38−14

This diff is large: its 73 lines aren’t shown here.

arch/s390/mm/pgalloc.c+31−8

This diff is large: its 92 lines aren’t shown here.

arch/s390/mm/pgtable.c+174−35

This diff is large: its 271 lines aren’t shown here.

arch/s390/numa/mode_emu.c+4−0

This diff is large: its 13 lines aren’t shown here.

arch/s390/numa/numa.c+7−1

This diff is large: its 30 lines aren’t shown here.

arch/s390/pci/pci_dma.c+12−11

This diff is large: its 94 lines aren’t shown here.

arch/s390/tools/gen_facilities.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/score/mm/init.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/sh/Kconfig+34−0

This diff is large: its 69 lines aren’t shown here.

arch/sh/Makefile+3−0

This diff is large: its 17 lines aren’t shown here.

arch/sh/boards/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

arch/sh/boards/board-secureedge5410.c+1−2

This diff is large: its 17 lines aren’t shown here.

arch/sh/boards/of-generic.c+12−3

This diff is large: its 26 lines aren’t shown here.

arch/sh/boot/dts/Makefile+3−0

This diff is large: its 4 lines aren’t shown here.

arch/sh/boot/dts/j2_mimas_v2.dts+96−0

This diff is large: its 97 lines aren’t shown here.

arch/sh/configs/j2_defconfig+40−0

This diff is large: its 41 lines aren’t shown here.

arch/sh/drivers/heartbeat.c+3−29

This diff is large: its 53 lines aren’t shown here.

arch/sh/drivers/pci/pci.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/sh/include/asm/atomic.h+8−0

This diff is large: its 20 lines aren’t shown here.

arch/sh/include/asm/barrier.h+5−0

This diff is large: its 12 lines aren’t shown here.

arch/sh/include/asm/bitops-cas.h+93−0

This diff is large: its 94 lines aren’t shown here.

arch/sh/include/asm/bitops.h+2−0

This diff is large: its 9 lines aren’t shown here.

arch/sh/include/asm/cmpxchg-cas.h+24−0

This diff is large: its 25 lines aren’t shown here.

arch/sh/include/asm/cmpxchg-xchg.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/sh/include/asm/cmpxchg.h+2−0

This diff is large: its 9 lines aren’t shown here.

arch/sh/include/asm/dma-mapping.h+2−2

This diff is large: its 12 lines aren’t shown here.

arch/sh/include/asm/futex-cas.h+34−0

This diff is large: its 35 lines aren’t shown here.

arch/sh/include/asm/futex-irq.h+0−86

This diff is large: its 93 lines aren’t shown here.

arch/sh/include/asm/futex-llsc.h+41−0

This diff is large: its 42 lines aren’t shown here.

arch/sh/include/asm/futex.h+59−38

This diff is large: its 130 lines aren’t shown here.

arch/sh/include/asm/mc146818rtc.h+0−7

This diff is large: its 8 lines aren’t shown here.

arch/sh/include/asm/processor.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/sh/include/asm/rtc.h+0−11

This diff is large: its 18 lines aren’t shown here.

arch/sh/include/asm/spinlock-cas.h+117−0

This diff is large: its 118 lines aren’t shown here.

arch/sh/include/asm/spinlock-llsc.h+224−0

This diff is large: its 225 lines aren’t shown here.

arch/sh/include/asm/spinlock.h+6−216

This diff is large: its 229 lines aren’t shown here.

arch/sh/include/asm/thread_info.h+0−26

This diff is large: its 44 lines aren’t shown here.

arch/sh/include/uapi/asm/cpu-features.h+1−0

This diff is large: its 7 lines aren’t shown here.

arch/sh/include/uapi/asm/sigcontext.h+0−3

This diff is large: its 17 lines aren’t shown here.

arch/sh/include/uapi/asm/unistd_32.h+15−1

This diff is large: its 23 lines aren’t shown here.

arch/sh/include/uapi/asm/unistd_64.h+15−1

This diff is large: its 23 lines aren’t shown here.

arch/sh/kernel/cpu/clock.c+4−0

This diff is large: its 28 lines aren’t shown here.

arch/sh/kernel/cpu/init.c+5−1

This diff is large: its 23 lines aren’t shown here.

arch/sh/kernel/cpu/proc.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/sh/kernel/cpu/sh2/Makefile+4−0

This diff is large: its 8 lines aren’t shown here.

arch/sh/kernel/cpu/sh2/entry.S+55−0

This diff is large: its 110 lines aren’t shown here.

arch/sh/kernel/cpu/sh2/probe.c+38−1

This diff is large: its 60 lines aren’t shown here.

arch/sh/kernel/cpu/sh2/smp-j2.c+139−0

This diff is large: its 140 lines aren’t shown here.

arch/sh/kernel/dma-nommu.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/sh/kernel/dwarf.c+2−4

This diff is large: its 13 lines aren’t shown here.

arch/sh/kernel/head_32.S+3−3

This diff is large: its 27 lines aren’t shown here.

arch/sh/kernel/setup.c+5−1

This diff is large: its 21 lines aren’t shown here.

arch/sh/kernel/syscalls_32.S+14−0

This diff is large: its 18 lines aren’t shown here.

arch/sh/kernel/syscalls_64.S+14−0

This diff is large: its 18 lines aren’t shown here.

arch/sh/kernel/time.c+21−15

This diff is large: its 69 lines aren’t shown here.

arch/sh/mm/Makefile+2−1

This diff is large: its 10 lines aren’t shown here.

arch/sh/mm/asids-debugfs.c+1−4

This diff is large: its 16 lines aren’t shown here.

arch/sh/mm/cache-j2.c+65−0

This diff is large: its 66 lines aren’t shown here.

arch/sh/mm/cache.c+12−1

This diff is large: its 42 lines aren’t shown here.

arch/sh/mm/consistent.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/sh/mm/ioremap.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/sparc/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

arch/sparc/include/asm/io_32.h+0−10

This diff is large: its 17 lines aren’t shown here.

arch/sparc/include/asm/pci_64.h+0−3

This diff is large: its 10 lines aren’t shown here.

arch/sparc/include/asm/thread_info_64.h+0−24

This diff is large: its 33 lines aren’t shown here.

arch/sparc/include/asm/uaccess_32.h+10−4

This diff is large: its 33 lines aren’t shown here.

arch/sparc/include/asm/uaccess_64.h+9−2

This diff is large: its 27 lines aren’t shown here.

arch/sparc/kernel/iommu.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/sparc/kernel/ioport.c+12−12

This diff is large: its 104 lines aren’t shown here.

arch/sparc/kernel/pci.c+11−9

This diff is large: its 28 lines aren’t shown here.

arch/sparc/kernel/pci_sun4v.c+6−6

This diff is large: its 54 lines aren’t shown here.

arch/sparc/kernel/vmlinux.lds.S+7−0

This diff is large: its 14 lines aren’t shown here.

arch/tile/include/asm/thread_info.h+0−27

This diff is large: its 33 lines aren’t shown here.

arch/tile/kernel/pci-dma.c+14−14

This diff is large: its 125 lines aren’t shown here.

arch/tile/kernel/vmlinux.lds.S+12−0

This diff is large: its 19 lines aren’t shown here.

arch/um/Kconfig.common+4−2

This diff is large: its 30 lines aren’t shown here.

arch/um/Makefile+2−2

This diff is large: its 11 lines aren’t shown here.

arch/um/include/asm/irqflags.h+7−11

This diff is large: its 45 lines aren’t shown here.

arch/um/kernel/Makefile+5−0

This diff is large: its 12 lines aren’t shown here.

arch/um/kernel/initrd.c+0−2

This diff is large: its 9 lines aren’t shown here.

arch/um/kernel/um_arch.c+4−4

This diff is large: its 29 lines aren’t shown here.

arch/um/os-Linux/Makefile+3−0

This diff is large: its 10 lines aren’t shown here.

arch/um/os-Linux/signal.c+3−2

This diff is large: its 26 lines aren’t shown here.

arch/unicore32/kernel/pci.c+2−7

This diff is large: its 23 lines aren’t shown here.

arch/unicore32/mm/dma-swiotlb.c+2−2

This diff is large: its 17 lines aren’t shown here.

arch/x86/Kconfig+4−0

This diff is large: its 32 lines aren’t shown here.

arch/x86/boot/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/entry/common.c+5−1

This diff is large: its 14 lines aren’t shown here.

arch/x86/entry/syscalls/syscall_32.tbl+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/entry/vdso/Makefile+2−1

This diff is large: its 17 lines aren’t shown here.

arch/x86/entry/vdso/vclock_gettime.c+5−20

This diff is large: its 45 lines aren’t shown here.

arch/x86/entry/vdso/vdso2c.h+6−0

This diff is large: its 20 lines aren’t shown here.

arch/x86/events/amd/ibs.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/x86/events/amd/iommu.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/events/core.c+9−5

This diff is large: its 28 lines aren’t shown here.

arch/x86/events/intel/uncore.c+2−0

This diff is large: its 6 lines aren’t shown here.

arch/x86/events/intel/uncore.h+0−1

This diff is large: its 5 lines aren’t shown here.

arch/x86/include/asm/dma-mapping.h+2−3

This diff is large: its 22 lines aren’t shown here.

arch/x86/include/asm/elf.h+2−2

This diff is large: its 11 lines aren’t shown here.

arch/x86/include/asm/fpu/internal.h+8−8

This diff is large: its 49 lines aren’t shown here.

arch/x86/include/asm/kvm_host.h+24−7

This diff is large: its 87 lines aren’t shown here.

arch/x86/include/asm/livepatch.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/include/asm/mc146818rtc.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/include/asm/mmu_context.h+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/include/asm/pvclock.h+23−16

This diff is large: its 54 lines aren’t shown here.

arch/x86/include/asm/rtc.h+0−1

This diff is large: its 2 lines aren’t shown here.

arch/x86/include/asm/svm.h+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/include/asm/swiotlb.h+2−2

This diff is large: its 12 lines aren’t shown here.

arch/x86/include/asm/syscall.h+1−4

This diff is large: its 19 lines aren’t shown here.

arch/x86/include/asm/thread_info.h+47−24

This diff is large: its 87 lines aren’t shown here.

arch/x86/include/asm/topology.h+1−0

This diff is large: its 8 lines aren’t shown here.

arch/x86/include/asm/uaccess.h+14−12

This diff is large: its 56 lines aren’t shown here.

arch/x86/include/asm/uaccess_32.h+2−0

This diff is large: its 16 lines aren’t shown here.

arch/x86/include/asm/uaccess_64.h+2−0

This diff is large: its 16 lines aren’t shown here.

arch/x86/include/asm/virtext.h+2−6

This diff is large: its 26 lines aren’t shown here.

arch/x86/include/asm/xen/page-coherent.h+4−5

This diff is large: its 36 lines aren’t shown here.

arch/x86/kernel/acpi/boot.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/acpi/cstate.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/amd_gart_64.c+10−11

This diff is large: its 92 lines aren’t shown here.

arch/x86/kernel/amd_nb.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/apic/apic.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/x86/kernel/apic/apic_flat_64.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/apic/apic_noop.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kernel/apic/hw_nmi.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/apic/io_apic.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/apic/ipi.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kernel/apic/probe_32.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/apic/probe_64.c+1−2

This diff is large: its 12 lines aren’t shown here.

arch/x86/kernel/apic/vector.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/apic/x2apic_uv_x.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/cpu/common.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/cpu/hypervisor.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/x86/kernel/cpu/intel.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/cpu/match.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/cpu/mshyperv.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/x86/kernel/cpu/mtrr/cleanup.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kernel/cpu/mtrr/generic.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/cpu/mtrr/if.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kernel/cpu/mtrr/main.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/cpu/perfctr-watchdog.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/cpu/vmware.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/x86/kernel/crash.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/dumpstack_32.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/dumpstack_64.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/early-quirks.c+194−210

This diff is large: its 553 lines aren’t shown here.

arch/x86/kernel/fpu/signal.c+6−6

This diff is large: its 33 lines aren’t shown here.

arch/x86/kernel/hpet.c+1−2

This diff is large: its 17 lines aren’t shown here.

arch/x86/kernel/hw_breakpoint.c+2−1

This diff is large: its 16 lines aren’t shown here.

arch/x86/kernel/i386_ksyms_32.c+2−1

This diff is large: its 7 lines aren’t shown here.

arch/x86/kernel/i8253.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/io_delay.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/irq_32.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kernel/irq_64.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kernel/kdebugfs.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/kvm.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/mpparse.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kernel/nmi.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/x86/kernel/paravirt-spinlocks.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/paravirt.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/x86/kernel/pci-calgary_64.c+7−7

This diff is large: its 63 lines aren’t shown here.

arch/x86/kernel/pci-dma.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/x86/kernel/pci-nommu.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/x86/kernel/pci-swiotlb.c+3−3

This diff is large: its 27 lines aren’t shown here.

arch/x86/kernel/pmem.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/process.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/x86/kernel/process_32.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/process_64.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/ptrace.c+9−6

This diff is large: its 25 lines aren’t shown here.

arch/x86/kernel/pvclock.c+6−11

This diff is large: its 32 lines aren’t shown here.

arch/x86/kernel/reboot.c+1−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kernel/rtc.c+1−2

This diff is large: its 17 lines aren’t shown here.

arch/x86/kernel/setup.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/signal.c+31−9

This diff is large: its 90 lines aren’t shown here.

arch/x86/kernel/smpboot.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/stacktrace.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/test_rodata.c+0−5

This diff is large: its 16 lines aren’t shown here.

arch/x86/kernel/traps.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/tsc.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kernel/x8664_ksyms_64.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/x86/kernel/x86_init.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kvm/Kconfig+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kvm/cpuid.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kvm/emulate.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/kvm/i8254.c+3−1

This diff is large: its 31 lines aren’t shown here.

arch/x86/kvm/iommu.c+1−3

This diff is large: its 14 lines aren’t shown here.

arch/x86/kvm/irq.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kvm/irq.h+3−0

This diff is large: its 8 lines aren’t shown here.

arch/x86/kvm/irq_comm.c+32−17

This diff is large: its 107 lines aren’t shown here.

arch/x86/kvm/lapic.c+331−213

This diff is large: its 757 lines aren’t shown here.

arch/x86/kvm/lapic.h+15−4

This diff is large: its 46 lines aren’t shown here.

arch/x86/kvm/mmu.c+19−13

This diff is large: its 107 lines aren’t shown here.

arch/x86/kvm/mmu.h+0−5

This diff is large: its 12 lines aren’t shown here.

arch/x86/kvm/paging_tmpl.h+8−2

This diff is large: its 30 lines aren’t shown here.

arch/x86/kvm/pmu_intel.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/kvm/svm.c+7−1

This diff is large: its 22 lines aren’t shown here.

arch/x86/kvm/trace.h+15−0

This diff is large: its 22 lines aren’t shown here.

arch/x86/kvm/vmx.c+347−54

This diff is large: its 789 lines aren’t shown here.

arch/x86/kvm/x86.c+105−73

This diff is large: its 520 lines aren’t shown here.

arch/x86/lib/cache-smp.c+1−1

This diff is large: its 7 lines aren’t shown here.

arch/x86/lib/cpu.c+2−1

This diff is large: its 7 lines aren’t shown here.

arch/x86/lib/csum-partial_64.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/lib/csum-wrappers_64.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/lib/delay.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/lib/hweight.S+2−0

This diff is large: its 16 lines aren’t shown here.

arch/x86/lib/memcpy_32.c+1−1

This diff is large: its 7 lines aren’t shown here.

arch/x86/lib/mmx_32.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/lib/msr-reg-export.c+1−1

This diff is large: its 6 lines aren’t shown here.

arch/x86/lib/msr-smp.c+1−1

This diff is large: its 6 lines aren’t shown here.

arch/x86/lib/msr.c+2−1

This diff is large: its 7 lines aren’t shown here.

arch/x86/lib/string_32.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/lib/usercopy.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/lib/usercopy_32.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/lib/usercopy_64.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/mm/amdtopology.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/dump_pagetables.c+1−5

This diff is large: its 18 lines aren’t shown here.

arch/x86/mm/highmem_32.c+1−1

This diff is large: its 7 lines aren’t shown here.

arch/x86/mm/init.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/x86/mm/init_32.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/init_64.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/iomap_32.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/mm/ioremap.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/kmemcheck/kmemcheck.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/kmemcheck/shadow.c+1−1

This diff is large: its 7 lines aren’t shown here.

arch/x86/mm/kmmio.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/mm/mmio-mod.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/mm/numa.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/numa_32.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/mm/pat.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/pat_rbtree.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/pf_in.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/pgtable_32.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/physaddr.c+1−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/mm/srat.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/mm/tlb.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/pci/common.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/pci/sta2x11-fixup.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/pci/vmd.c+33−24

This diff is large: its 187 lines aren’t shown here.

arch/x86/pci/xen.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/platform/ce4100/ce4100.c+0−2

This diff is large: its 12 lines aren’t shown here.

arch/x86/platform/efi/early_printk.c+2−2

This diff is large: its 18 lines aren’t shown here.

arch/x86/platform/efi/efi.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/platform/efi/efi_64.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/x86/platform/intel-mid/intel-mid.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/platform/intel-mid/intel_mid_vrtc.c+1−0

This diff is large: its 8 lines aren’t shown here.

arch/x86/platform/intel-mid/pwr.c+1−3

This diff is large: its 20 lines aren’t shown here.

arch/x86/platform/intel-mid/sfi.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/platform/olpc/olpc.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/platform/olpc/olpc_ofw.c+4−1

This diff is large: its 14 lines aren’t shown here.

arch/x86/platform/ts5500/ts5500.c+1−5

This diff is large: its 17 lines aren’t shown here.

arch/x86/platform/uv/uv_irq.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/platform/uv/uv_nmi.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/power/hibernate_64.c+9−9

This diff is large: its 59 lines aren’t shown here.

arch/x86/power/hibernate_asm_64.S+0−2

This diff is large: its 9 lines aren’t shown here.

arch/x86/purgatory/Makefile+2−0

This diff is large: its 9 lines aren’t shown here.

arch/x86/realmode/rm/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/um/delay.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/um/vdso/Makefile+3−0

This diff is large: its 10 lines aren’t shown here.

arch/x86/xen/debugfs.c+0−1

This diff is large: its 8 lines aren’t shown here.

arch/x86/xen/enlighten.c+3−4

This diff is large: its 29 lines aren’t shown here.

arch/x86/xen/mmu.c+2−1

This diff is large: its 10 lines aren’t shown here.

arch/x86/xen/p2m.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/xen/platform-pci-unplug.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/x86/xen/setup.c+1−1

This diff is large: its 9 lines aren’t shown here.

arch/xtensa/kernel/pci-dma.c+6−6

This diff is large: its 53 lines aren’t shown here.

block/Kconfig+0−13

This diff is large: its 20 lines aren’t shown here.

block/bio-integrity.c+1−1

This diff is large: its 9 lines aren’t shown here.

block/bio.c+18−3

This diff is large: its 58 lines aren’t shown here.

block/blk-core.c+13−13

This diff is large: its 104 lines aren’t shown here.

block/blk-merge.c+4−4

This diff is large: its 22 lines aren’t shown here.

block/blk-mq-sysfs.c+8−4

This diff is large: its 39 lines aren’t shown here.

block/blk-mq.c+19−6

This diff is large: its 53 lines aren’t shown here.

block/blk-throttle.c+4−9

This diff is large: its 41 lines aren’t shown here.

block/cfq-iosched.c+2−2

This diff is large: its 18 lines aren’t shown here.

block/genhd.c+2−1

This diff is large: its 17 lines aren’t shown here.

drivers/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/acpi/Kconfig+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/acpi/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/acpi/acpi_cmos_rtc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/acpi/button.c+4−0

This diff is large: its 21 lines aren’t shown here.

drivers/acpi/ec.c+37−4

This diff is large: its 88 lines aren’t shown here.

drivers/acpi/osl.c+2−3

This diff is large: its 19 lines aren’t shown here.

drivers/acpi/pci_mcfg.c+92−0

This diff is large: its 93 lines aren’t shown here.

drivers/acpi/pci_root.c+35−0

This diff is large: its 56 lines aren’t shown here.

drivers/base/firmware_class.c+127−56

This diff is large: its 390 lines aren’t shown here.

drivers/base/node.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/base/power/opp/core.c+19−12

This diff is large: its 66 lines aren’t shown here.

drivers/base/power/trace.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/base/power/wakeup.c+7−11

This diff is large: its 39 lines aren’t shown here.

drivers/base/property.c+28−0

This diff is large: its 35 lines aren’t shown here.

drivers/block/brd.c+8−11

This diff is large: its 64 lines aren’t shown here.

drivers/block/drbd/drbd_actlog.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/block/drbd/drbd_int.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/block/drbd/drbd_main.c+4−4

This diff is large: its 18 lines aren’t shown here.

drivers/block/drbd/drbd_receiver.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/block/drbd/drbd_req.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/block/drbd/drbd_worker.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/block/floppy.c+9−12

This diff is large: its 35 lines aren’t shown here.

drivers/block/loop.c+30−37

This diff is large: its 95 lines aren’t shown here.

drivers/block/nbd.c+4−8

This diff is large: its 50 lines aren’t shown here.

drivers/block/pktcdvd.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/block/rbd.c+8−7

This diff is large: its 43 lines aren’t shown here.

drivers/block/umem.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/block/zram/zram_drv.c+16−13

This diff is large: its 99 lines aren’t shown here.

drivers/bus/Kconfig+13−0

This diff is large: its 20 lines aren’t shown here.

drivers/bus/Makefile+1−0

This diff is large: its 7 lines aren’t shown here.

drivers/bus/mvebu-mbus.c+5−5

This diff is large: its 45 lines aren’t shown here.

drivers/bus/tegra-aconnect.c+112−0

This diff is large: its 113 lines aren’t shown here.

drivers/char/Kconfig+15−27

This diff is large: its 63 lines aren’t shown here.

drivers/char/Makefile+1−1

This diff is large: its 13 lines aren’t shown here.

drivers/char/agp/intel-gtt.c+8−0

This diff is large: its 15 lines aren’t shown here.

drivers/char/genrtc.c+0−539

This diff is large: its 540 lines aren’t shown here.

drivers/char/powernv-op-panel.c+223−0

This diff is large: its 224 lines aren’t shown here.

drivers/char/random.c+2−3

This diff is large: its 26 lines aren’t shown here.

drivers/clk/clk-clps711x.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/clk/clkdev.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/clk/ti/clk-33xx.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/clk/ti/clk-43xx.c+7−0

This diff is large: its 21 lines aren’t shown here.

drivers/clk/ux500/u8500_of_clk.c+2−14

This diff is large: its 49 lines aren’t shown here.

drivers/clk/ux500/u8540_clk.c+2−14

This diff is large: its 41 lines aren’t shown here.

drivers/clk/ux500/u9540_clk.c+2−2

This diff is large: its 13 lines aren’t shown here.

drivers/clocksource/clps711x-timer.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/cpufreq/Kconfig+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/cpufreq/intel_pstate.c+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/cpufreq/s5pv210-cpufreq.c+34−34

This diff is large: its 204 lines aren’t shown here.

drivers/cpuidle/cpuidle-powernv.c+81−20

This diff is large: its 177 lines aren’t shown here.

drivers/crypto/marvell/cesa.c+4−3

This diff is large: its 15 lines aren’t shown here.

drivers/crypto/marvell/cipher.c+7−18

This diff is large: its 83 lines aren’t shown here.

drivers/crypto/marvell/hash.c+6−6

This diff is large: its 26 lines aren’t shown here.

drivers/crypto/vmx/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/crypto/vmx/vmx.c+2−4

This diff is large: its 27 lines aren’t shown here.

drivers/dma-buf/Kconfig+12−3

This diff is large: its 24 lines aren’t shown here.

drivers/dma-buf/Makefile+1−1

This diff is large: its 4 lines aren’t shown here.

drivers/dma-buf/dma-buf.c+25−34

This diff is large: its 122 lines aren’t shown here.

drivers/dma-buf/fence-array.c+144−0

This diff is large: its 145 lines aren’t shown here.

drivers/dma-buf/fence.c+4−4

This diff is large: its 31 lines aren’t shown here.

drivers/dma-buf/sync_file.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/firmware/Kconfig+11−1

This diff is large: its 33 lines aren’t shown here.

drivers/firmware/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/firmware/arm_scpi.c+34−8

This diff is large: its 86 lines aren’t shown here.

drivers/firmware/broadcom/bcm47xx_sprom.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/firmware/qcom_scm-32.c+194−133

This diff is large: its 445 lines aren’t shown here.

drivers/firmware/qcom_scm-64.c+302−5

This diff is large: its 337 lines aren’t shown here.

drivers/firmware/qcom_scm.c+342−11

This diff is large: its 390 lines aren’t shown here.

drivers/firmware/qcom_scm.h+43−4

This diff is large: its 71 lines aren’t shown here.

drivers/firmware/scpi_pm_domain.c+163−0

This diff is large: its 164 lines aren’t shown here.

drivers/fpga/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/Makefile+3−2

This diff is large: its 19 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu.h+77−35

This diff is large: its 362 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c+2−2

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c+8−17

This diff is large: its 37 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c+50−18

This diff is large: its 132 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c+7−7

This diff is large: its 30 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c+3−0

This diff is large: its 24 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c+35−22

This diff is large: its 208 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c+4−3

This diff is large: its 21 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c+22−19

This diff is large: its 111 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c+235−52

This diff is large: its 561 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_display.c+8−10

This diff is large: its 71 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c+26−5

This diff is large: its 91 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c+13−4

This diff is large: its 38 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c+44−0

This diff is large: its 48 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h+2−0

This diff is large: its 7 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c+7−15

This diff is large: its 67 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c+12−0

This diff is large: its 19 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_job.c+36−44

This diff is large: its 156 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c+204−60

This diff is large: its 316 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_object.c+3−0

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c+153−26

This diff is large: its 279 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c+84−146

This diff is large: its 323 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c+24−66

This diff is large: its 130 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h+104−11

This diff is large: its 179 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c+13−6

This diff is large: its 54 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c+78−20

This diff is large: its 182 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.h+3−0

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c+91−79

This diff is large: its 383 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h+3−1

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c+224−110

This diff is large: its 573 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/atombios_encoders.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/ci_dpm.c+211−6

This diff is large: its 308 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/ci_dpm.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/cik.c+15−10

This diff is large: its 86 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/cik_sdma.c+18−32

This diff is large: its 106 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/cz_dpm.c+2−1

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/dce_v10_0.c+9−7

This diff is large: its 51 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/dce_v11_0.c+11−10

This diff is large: its 65 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/dce_v8_0.c+16−67

This diff is large: its 151 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/fiji_smc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c+74−63

This diff is large: its 337 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/gfx_v7_0.h+0−7

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c+363−117

This diff is large: its 781 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/gfx_v8_0.h+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c+10−32

This diff is large: its 97 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/gmc_v7_0.h+0−7

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c+17−37

This diff is large: its 115 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/gmc_v8_0.h+0−7

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/iceland_dpm.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/iceland_smc.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/iceland_smum.hrenamed from drivers/gpu/drm/amd/amdgpu/iceland_smumgr.h+2−2

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/kv_dpm.c+5−3

This diff is large: its 39 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/ppsmc.h+4−0

This diff is large: its 26 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c+31−46

This diff is large: its 137 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c+16−32

This diff is large: its 100 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/tonga_smc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c+33−44

This diff is large: its 108 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c+32−44

This diff is large: its 107 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c+135−47

This diff is large: its 285 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/vce_v2_0.c+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/vce_v3_0.c+114−46

This diff is large: its 245 lines aren’t shown here.

drivers/gpu/drm/amd/amdgpu/vi.c+45−12

This diff is large: its 129 lines aren’t shown here.

drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h+2−2

This diff is large: its 15 lines aren’t shown here.

drivers/gpu/drm/amd/amdkfd/kfd_priv.h+0−3

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/amd/amdkfd/kfd_process.c+2−2

This diff is large: its 23 lines aren’t shown here.

drivers/gpu/drm/amd/include/amd_pcie.h+14−0

This diff is large: its 26 lines aren’t shown here.

drivers/gpu/drm/amd/include/amd_shared.h+2−9

This diff is large: its 25 lines aren’t shown here.

drivers/gpu/drm/amd/include/asic_reg/bif/bif_5_0_d.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_0_d.h+3−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_0_sh_mask.h+84−24

This diff is large: its 185 lines aren’t shown here.

drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_6_0_d.h+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/include/cgs_common.h+13−6

This diff is large: its 56 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/amd_powerplay.c+143−10

This diff is large: its 205 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/eventmgr/eventactionchains.c+0−2

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/eventmgr/eventtasks.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c+9−8

This diff is large: its 48 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c+11−12

This diff is large: its 52 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/fiji_clockpowergating.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/fiji_hwmgr.c+333−71

This diff is large: its 596 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/fiji_hwmgr.h+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/fiji_powertune.c+67−7

This diff is large: its 100 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/fiji_powertune.h+15−0

This diff is large: its 30 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/functiontables.c+5−4

This diff is large: its 27 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c+25−1

This diff is large: its 40 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c+7−3

This diff is large: its 42 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_clockpowergating.c+17−3

This diff is large: its 41 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.c+347−117

This diff is large: its 762 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.h+1−5

This diff is large: its 19 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_powertune.c+590−0

This diff is large: its 622 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_powertune.h+25−1

This diff is large: its 51 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/pp_acpi.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/ppatomctrl.c+177−126

This diff is large: its 625 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/ppatomctrl.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h+54−111

This diff is large: its 351 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/processpptables.c+22−11

This diff is large: its 62 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/processpptables.h+10−7

This diff is large: its 27 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c+156−116

This diff is large: its 620 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.h+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/hwmgr/tonga_processpptables.c+9−18

This diff is large: its 100 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h+7−0

This diff is large: its 28 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/inc/hwmgr.h+8−2

This diff is large: its 41 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/inc/smumgr.h+29−0

This diff is large: its 55 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c+3−2

This diff is large: its 21 lines aren’t shown here.

drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/amd/scheduler/gpu_sched_trace.h+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/gpu/drm/amd/scheduler/gpu_scheduler.c+131−59

This diff is large: its 304 lines aren’t shown here.

drivers/gpu/drm/amd/scheduler/gpu_scheduler.h+21−39

This diff is large: its 102 lines aren’t shown here.

drivers/gpu/drm/amd/scheduler/sched_fence.c+50−31

This diff is large: its 129 lines aren’t shown here.

drivers/gpu/drm/arc/Kconfig+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/arc/Makefile+1−1

This diff is large: its 4 lines aren’t shown here.

drivers/gpu/drm/arc/arcpgu.h+1−1

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/arc/arcpgu_crtc.c+5−11

This diff is large: its 26 lines aren’t shown here.

drivers/gpu/drm/arc/arcpgu_drv.c+15−49

This diff is large: its 149 lines aren’t shown here.

drivers/gpu/drm/arc/arcpgu_hdmi.c+0−18

This diff is large: its 32 lines aren’t shown here.

drivers/gpu/drm/arc/arcpgu_sim.c+128−0

This diff is large: its 129 lines aren’t shown here.

drivers/gpu/drm/arm/Kconfig+16−1

This diff is large: its 28 lines aren’t shown here.

drivers/gpu/drm/arm/Makefile+2−0

This diff is large: its 5 lines aren’t shown here.

drivers/gpu/drm/arm/hdlcd_crtc.c+0−19

This diff is large: its 31 lines aren’t shown here.

drivers/gpu/drm/arm/hdlcd_drv.c+3−10

This diff is large: its 33 lines aren’t shown here.

drivers/gpu/drm/arm/malidp_crtc.c+216−0

This diff is large: its 217 lines aren’t shown here.

drivers/gpu/drm/arm/malidp_drv.c+519−0

This diff is large: its 520 lines aren’t shown here.

drivers/gpu/drm/arm/malidp_drv.h+54−0

This diff is large: its 55 lines aren’t shown here.

drivers/gpu/drm/arm/malidp_hw.c+691−0

This diff is large: its 692 lines aren’t shown here.

drivers/gpu/drm/arm/malidp_hw.h+241−0

This diff is large: its 242 lines aren’t shown here.

drivers/gpu/drm/arm/malidp_planes.c+298−0

This diff is large: its 299 lines aren’t shown here.

drivers/gpu/drm/arm/malidp_regs.h+172−0

This diff is large: its 173 lines aren’t shown here.

drivers/gpu/drm/armada/Kconfig+0−4

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/armada/armada_crtc.c+8−8

This diff is large: its 66 lines aren’t shown here.

drivers/gpu/drm/armada/armada_drv.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/armada/armada_overlay.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/ast/Kconfig+0−4

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/ast/ast_drv.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/ast/ast_fb.c+0−3

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/ast/ast_main.c+1−2

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/ast/ast_mode.c+6−4

This diff is large: its 26 lines aren’t shown here.

drivers/gpu/drm/ast/ast_ttm.c+1−12

This diff is large: its 27 lines aren’t shown here.

drivers/gpu/drm/atmel-hlcdc/Kconfig+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c+3−3

This diff is large: its 20 lines aren’t shown here.

drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c+2−17

This diff is large: its 56 lines aren’t shown here.

drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c+0−12

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/bochs/Kconfig+0−4

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/bochs/bochs_drv.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/bochs/bochs_mm.c+3−12

This diff is large: its 36 lines aren’t shown here.

drivers/gpu/drm/bridge/Kconfig+19−0

This diff is large: its 26 lines aren’t shown here.

drivers/gpu/drm/bridge/Makefile+3−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/bridge/adv7511/Kconfig+15−0

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/bridge/adv7511/Makefile+3−0

This diff is large: its 4 lines aren’t shown here.

drivers/gpu/drm/bridge/adv7511/adv7511.hrenamed from drivers/gpu/drm/i2c/adv7511.h+103−0

This diff is large: its 115 lines aren’t shown here.

drivers/gpu/drm/bridge/adv7511/adv7511_drv.crenamed from drivers/gpu/drm/i2c/adv7511.c+212−112

This diff is large: its 516 lines aren’t shown here.

drivers/gpu/drm/bridge/adv7511/adv7533.c+265−0

This diff is large: its 266 lines aren’t shown here.

drivers/gpu/drm/bridge/analogix-anx78xx.c+0−8

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/bridge/analogix/analogix_dp_core.c+2−1

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/bridge/analogix/analogix_dp_core.h+4−4

This diff is large: its 15 lines aren’t shown here.

drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c+8−4

This diff is large: its 33 lines aren’t shown here.

drivers/gpu/drm/bridge/analogix/analogix_dp_reg.h+3−2

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/bridge/dw-hdmi.c+4−26

This diff is large: its 58 lines aren’t shown here.

drivers/gpu/drm/bridge/nxp-ptn3460.c+0−8

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/bridge/parade-ps8622.c+1−13

This diff is large: its 30 lines aren’t shown here.

drivers/gpu/drm/bridge/sii902x.c+467−0

This diff is large: its 468 lines aren’t shown here.

drivers/gpu/drm/bridge/tc358767.c+1413−0

This diff is large: its 1414 lines aren’t shown here.

drivers/gpu/drm/cirrus/Kconfig+0−4

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/cirrus/cirrus_drv.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/cirrus/cirrus_main.c+13−4

This diff is large: its 37 lines aren’t shown here.

drivers/gpu/drm/cirrus/cirrus_mode.c+5−6

This diff is large: its 27 lines aren’t shown here.

drivers/gpu/drm/cirrus/cirrus_ttm.c+1−12

This diff is large: its 27 lines aren’t shown here.

drivers/gpu/drm/drm_atomic.c+61−48

This diff is large: its 246 lines aren’t shown here.

drivers/gpu/drm/drm_atomic_helper.c+484−89

This diff is large: its 798 lines aren’t shown here.

drivers/gpu/drm/drm_auth.c+263−22

This diff is large: its 327 lines aren’t shown here.

drivers/gpu/drm/drm_blend.c+238−0

This diff is large: its 239 lines aren’t shown here.

drivers/gpu/drm/drm_bridge.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/drm_bufs.c+4−4

This diff is large: its 33 lines aren’t shown here.

drivers/gpu/drm/drm_cache.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/drm_crtc.c+302−423

This diff is large: its 999 lines aren’t shown here.

drivers/gpu/drm/drm_crtc_helper.c+3−33

This diff is large: its 47 lines aren’t shown here.

drivers/gpu/drm/drm_crtc_internal.h+91−1

This diff is large: its 106 lines aren’t shown here.

drivers/gpu/drm/drm_debugfs.c+0−3

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/drm_dp_aux_dev.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/drm_dp_helper.c+80−10

This diff is large: its 133 lines aren’t shown here.

drivers/gpu/drm/drm_dp_mst_topology.c+4−10

This diff is large: its 50 lines aren’t shown here.

drivers/gpu/drm/drm_drv.c+83−162

This diff is large: its 360 lines aren’t shown here.

drivers/gpu/drm/drm_edid.c+22−0

This diff is large: its 50 lines aren’t shown here.

drivers/gpu/drm/drm_edid_load.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/drm_fb_cma_helper.c+36−7

This diff is large: its 117 lines aren’t shown here.

drivers/gpu/drm/drm_fb_helper.c+18−38

This diff is large: its 114 lines aren’t shown here.

drivers/gpu/drm/drm_fops.c+23−126

This diff is large: its 255 lines aren’t shown here.

drivers/gpu/drm/drm_fourcc.c+320−0

This diff is large: its 321 lines aren’t shown here.

drivers/gpu/drm/drm_gem.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/drm_info.c+17−100

This diff is large: its 140 lines aren’t shown here.

drivers/gpu/drm/drm_internal.h+6−15

This diff is large: its 52 lines aren’t shown here.

drivers/gpu/drm/drm_ioctl.c+90−86

This diff is large: its 274 lines aren’t shown here.

drivers/gpu/drm/drm_irq.c+71−172

This diff is large: its 442 lines aren’t shown here.

drivers/gpu/drm/drm_legacy.h+2−6

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/drm_lock.c+123−117

This diff is large: its 271 lines aren’t shown here.

drivers/gpu/drm/drm_memory.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/drm_mipi_dsi.c+38−0

This diff is large: its 59 lines aren’t shown here.

drivers/gpu/drm/drm_mm.c+3−1

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/drm_modes.c+3−1

This diff is large: its 18 lines aren’t shown here.

drivers/gpu/drm/drm_modeset_lock.c+10−3

This diff is large: its 32 lines aren’t shown here.

drivers/gpu/drm/drm_pci.c+0−51

This diff is large: its 65 lines aren’t shown here.

drivers/gpu/drm/drm_plane_helper.c+24−14

This diff is large: its 80 lines aren’t shown here.

drivers/gpu/drm/drm_platform.c+0−18

This diff is large: its 25 lines aren’t shown here.

drivers/gpu/drm/drm_prime.c+6−4

This diff is large: its 38 lines aren’t shown here.

drivers/gpu/drm/drm_probe_helper.c+19−2

This diff is large: its 33 lines aren’t shown here.

drivers/gpu/drm/drm_scatter.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/drm_simple_kms_helper.c+206−0

This diff is large: its 207 lines aren’t shown here.

drivers/gpu/drm/drm_sysfs.c+0−71

This diff is large: its 85 lines aren’t shown here.

drivers/gpu/drm/drm_vm.c+2−56

This diff is large: its 76 lines aren’t shown here.

drivers/gpu/drm/drm_vma_manager.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/etnaviv/etnaviv_drv.c+1−4

This diff is large: its 20 lines aren’t shown here.

drivers/gpu/drm/etnaviv/etnaviv_gem.c+5−11

This diff is large: its 40 lines aren’t shown here.

drivers/gpu/drm/etnaviv/etnaviv_gpu.c+52−2

This diff is large: its 97 lines aren’t shown here.

drivers/gpu/drm/etnaviv/etnaviv_gpu.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/etnaviv/state_hi.xml.h+7−0

This diff is large: its 14 lines aren’t shown here.

drivers/gpu/drm/exynos/Kconfig+1−5

This diff is large: its 20 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_dp.c+2−2

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_dpi.c+0−9

This diff is large: its 18 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_drv.c+6−12

This diff is large: its 53 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_drv.h+0−4

This diff is large: its 20 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_dsi.c+0−9

This diff is large: its 18 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_fbdev.c+2−3

This diff is large: its 19 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_g2d.c+5−7

This diff is large: its 51 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_gem.c+10−10

This diff is large: its 83 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_gem.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_iommu.c+33−44

This diff is large: its 123 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_iommu.h+91−0

This diff is large: its 98 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_plane.c+9−58

This diff is large: its 112 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_vidi.c+0−8

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_hdmi.c+2−8

This diff is large: its 34 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_mixer.c+4−2

This diff is large: its 34 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/Kconfig+0−5

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c+17−27

This diff is large: its 91 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c+36−13

This diff is large: its 116 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c+7−8

This diff is large: its 31 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_output.h+1−2

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c+16−0

This diff is large: its 23 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c+58−29

This diff is large: its 132 lines aren’t shown here.

drivers/gpu/drm/fsl-dcu/fsl_tcon.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/gma500/Kconfig+0−4

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/gma500/cdv_intel_hdmi.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/gma500/cdv_intel_lvds.c+3−6

This diff is large: its 25 lines aren’t shown here.

drivers/gpu/drm/gma500/framebuffer.c+0−9

This diff is large: its 37 lines aren’t shown here.

drivers/gpu/drm/gma500/gma_display.c+6−5

This diff is large: its 35 lines aren’t shown here.

drivers/gpu/drm/gma500/gma_display.h+2−2

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/gma500/psb_drv.c+2−4

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/gma500/psb_intel_display.c+0−7

This diff is large: its 25 lines aren’t shown here.

drivers/gpu/drm/gma500/psb_intel_lvds.c+3−6

This diff is large: its 24 lines aren’t shown here.

drivers/gpu/drm/hisilicon/kirin/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c+20−14

This diff is large: its 87 lines aren’t shown here.

drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c+1−10

This diff is large: its 39 lines aren’t shown here.

drivers/gpu/drm/i2c/Kconfig+0−6

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/i2c/Makefile+0−2

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/i2c/ch7006_drv.c+2−7

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/i915/Kconfig+22−0

This diff is large: its 29 lines aren’t shown here.

drivers/gpu/drm/i915/Kconfig.debug+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/i915/Makefile+10−2

This diff is large: its 54 lines aren’t shown here.

drivers/gpu/drm/i915/gvt/Makefile+5−0

This diff is large: its 6 lines aren’t shown here.

drivers/gpu/drm/i915/gvt/debug.h+34−0

This diff is large: its 35 lines aren’t shown here.

drivers/gpu/drm/i915/gvt/gvt.c+145−0

This diff is large: its 146 lines aren’t shown here.

drivers/gpu/drm/i915/gvt/gvt.h+69−0

This diff is large: its 70 lines aren’t shown here.

drivers/gpu/drm/i915/gvt/hypercall.h+38−0

This diff is large: its 39 lines aren’t shown here.

drivers/gpu/drm/i915/gvt/mpt.h+49−0

This diff is large: its 50 lines aren’t shown here.

drivers/gpu/drm/i915/i915_cmd_parser.c+40−13

This diff is large: its 161 lines aren’t shown here.

drivers/gpu/drm/i915/i915_debugfs.c+291−279

This diff is large: its 1549 lines aren’t shown here.

drivers/gpu/drm/i915/i915_dma.c+0−1587

This diff is large: its 1588 lines aren’t shown here.

drivers/gpu/drm/i915/i915_drv.c+1480−640

This diff is large: its 2550 lines aren’t shown here.

drivers/gpu/drm/i915/i915_drv.h+557−229

This diff is large: its 1464 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem.c+727−535

This diff is large: its 2365 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_batch_pool.c+3−3

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_context.c+321−194

This diff is large: its 1001 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_dmabuf.h+45−0

This diff is large: its 46 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_evict.c+51−4

This diff is large: its 82 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_execbuffer.c+21−23

This diff is large: its 152 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_fence.c+20−18

This diff is large: its 149 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_gtt.c+228−162

This diff is large: its 872 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_gtt.h+61−23

This diff is large: its 133 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_render_state.c+37−8

This diff is large: its 89 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_shrinker.c+46−12

This diff is large: its 127 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_stolen.c+5−5

This diff is large: its 39 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_tiling.c+4−4

This diff is large: its 36 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gem_userptr.c+4−8

This diff is large: its 34 lines aren’t shown here.

drivers/gpu/drm/i915/i915_gpu_error.c+125−78

This diff is large: its 456 lines aren’t shown here.

drivers/gpu/drm/i915/i915_guc_reg.h+3−3

This diff is large: its 15 lines aren’t shown here.

drivers/gpu/drm/i915/i915_guc_submission.c+306−232

This diff is large: its 861 lines aren’t shown here.

drivers/gpu/drm/i915/i915_irq.c+367−440

This diff is large: its 2352 lines aren’t shown here.

drivers/gpu/drm/i915/i915_params.c+20−3

This diff is large: its 44 lines aren’t shown here.

drivers/gpu/drm/i915/i915_params.h+4−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/i915/i915_pci.c+503−0

This diff is large: its 504 lines aren’t shown here.

drivers/gpu/drm/i915/i915_pvinfo.h+113−0

This diff is large: its 114 lines aren’t shown here.

drivers/gpu/drm/i915/i915_reg.h+59−6

This diff is large: its 182 lines aren’t shown here.

drivers/gpu/drm/i915/i915_suspend.c+4−4

This diff is large: its 36 lines aren’t shown here.

drivers/gpu/drm/i915/i915_sysfs.c+16−24

This diff is large: its 149 lines aren’t shown here.

drivers/gpu/drm/i915/i915_trace.h+24−30

This diff is large: its 153 lines aren’t shown here.

drivers/gpu/drm/i915/i915_vgpu.c+24−20

This diff is large: its 107 lines aren’t shown here.

drivers/gpu/drm/i915/i915_vgpu.h+4−88

This diff is large: its 99 lines aren’t shown here.

drivers/gpu/drm/i915/intel_atomic.c+3−2

This diff is large: its 19 lines aren’t shown here.

drivers/gpu/drm/i915/intel_audio.c+22−28

This diff is large: its 202 lines aren’t shown here.

drivers/gpu/drm/i915/intel_bios.c+21−2

This diff is large: its 51 lines aren’t shown here.

drivers/gpu/drm/i915/intel_bios.h+15−1

This diff is large: its 30 lines aren’t shown here.

This diff is larger than a page shows: the files after these aren’t listed. Clone the repository to see all of it.