~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/admin-guide/media/building.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/admin-guide/media/building.rst (Version linux-6.12-rc7) and /Documentation/admin-guide/media/building.rst (Version linux-2.6.0)


  1 .. SPDX-License-Identifier: GPL-2.0               
  2                                                   
  3 ===================================               
  4 Building support for a media device               
  5 ===================================               
  6                                                   
  7 The first step is to download the Kernel's sou    
  8 distribution-specific source file or via the K    
  9                                                   
 10 Please notice, however, that, if:                 
 11                                                   
 12 - you're a braveheart and want to experiment w    
 13 - if you want to report a bug;                    
 14 - if you're developing new patches                
 15                                                   
 16 you should use the main media development tree    
 17                                                   
 18     https://git.linuxtv.org/media_tree.git/       
 19                                                   
 20 In this case, you may find some useful informa    
 21 `LinuxTv wiki pages <https://linuxtv.org/wiki>    
 22                                                   
 23     https://linuxtv.org/wiki/index.php/How_to_    
 24                                                   
 25 .. [1] The upstream Linux Kernel development t    
 26                                                   
 27        https://git.kernel.org/pub/scm/li  nux/    
 28                                                   
 29 Configuring the Linux Kernel                      
 30 ============================                      
 31                                                   
 32 You can access a menu of Kernel building optio    
 33                                                   
 34     $ make menuconfig                             
 35                                                   
 36 Then, select all desired options and exit it,     
 37                                                   
 38 The changed configuration will be at the ``.co    
 39 look like::                                       
 40                                                   
 41     ...                                           
 42     # CONFIG_RC_CORE is not set                   
 43     # CONFIG_CEC_CORE is not set                  
 44     CONFIG_MEDIA_SUPPORT=m                        
 45     CONFIG_MEDIA_SUPPORT_FILTER=y                 
 46     ...                                           
 47                                                   
 48 The media subsystem is controlled by those men    
 49                                                   
 50     Device Drivers --->                           
 51         <M> Remote Controller support  --->       
 52         [ ] HDMI CEC RC integration               
 53         [ ] Enable CEC error injection support    
 54         [*] HDMI CEC drivers  --->                
 55         <*> Multimedia support  --->              
 56                                                   
 57 The ``Remote Controller support`` option enabl    
 58 remote controllers\ [2]_.                         
 59                                                   
 60 The ``HDMI CEC RC integration`` option enables    
 61 with Linux, allowing to receive data via HDMI     
 62 by a remote controller directly connected to t    
 63                                                   
 64 The ``HDMI CEC drivers`` option allow selectin    
 65 that receives and/or transmits CEC codes via H    
 66                                                   
 67 The last option (``Multimedia support``) enabl    
 68 audio/video grabbers and TV.                      
 69                                                   
 70 The media subsystem support can either be buil    
 71 Kernel or as a module. For most use cases, it     
 72 built as modules.                                 
 73                                                   
 74 .. note::                                         
 75                                                   
 76    Instead of using a menu, the Kernel provide    
 77    enabling configuration options directly. To    
 78    and remote controller support using Kernel     
 79                                                   
 80         $ scripts/config -m RC_CORE               
 81         $ scripts/config -m MEDIA_SUPPORT         
 82                                                   
 83 .. [2] ``Remote Controller support`` should al    
 84        want to use some TV card drivers that m    
 85        controller core support.                   
 86                                                   
 87 .. [3] Please notice that the DRM subsystem al    
 88        that use the media HDMI CEC support.       
 89                                                   
 90        Those GPU-specific drivers are selected    
 91        menu, under ``Device Drivers``.            
 92                                                   
 93        When a GPU driver supports HDMI CEC, it    
 94        enable the CEC core support at the medi    
 95                                                   
 96 Media dependencies                                
 97 ------------------                                
 98                                                   
 99 It should be noticed that enabling the above f    
100 usually not enough. The media subsystem depend    
101 core support in order to work.                    
102                                                   
103 For example, most media devices use a serial c    
104 order to talk with some peripherals. Such bus     
105 (Inter-Integrated Circuit). In order to be abl    
106 for such hardware, the I²C bus support should    
107 menu or with::                                    
108                                                   
109     ./scripts/config -m I2C                       
110                                                   
111 Another example: the remote controller core re    
112 input devices, with can be enabled with::         
113                                                   
114     ./scripts/config -m INPUT                     
115                                                   
116 Other core functionality may also be needed (l    
117 depending on the specific driver(s) you would     
118                                                   
119 Enabling Remote Controller Support                
120 ----------------------------------                
121                                                   
122 The remote controller menu allows selecting dr    
123 It's menu looks like this::                       
124                                                   
125          --- Remote Controller support            
126          <M>   Compile Remote Controller keyma    
127          [*]   LIRC user interface                
128          [*]     Support for eBPF programs att    
129          [*]   Remote controller decoders  ---    
130          [*]   Remote Controller devices  --->    
131                                                   
132 The ``Compile Remote Controller keymap modules    
133 several popular remote controllers.               
134                                                   
135 The ``LIRC user interface`` option adds enhanc    
136 ``lirc`` program, by enabling an API that allo    
137 from remote controllers.                          
138                                                   
139 The ``Support for eBPF programs attached to li    
140 the usage of special programs (called eBPF) th    
141 to add extra remote controller decoding functi    
142                                                   
143 The ``Remote controller decoders`` option allo    
144 protocols that will be recognized by the Linux    
145 want to disable some specific decoder, it is s    
146 sub-options enabled.                              
147                                                   
148 The ``Remote Controller devices`` allows you t    
149 that would be needed to support your device.      
150                                                   
151 The same configuration can also be set via the    
152 script. So, for instance, in order to support     
153 driver (found on Intel NUCs and on some ASUS x    
154                                                   
155         $ scripts/config -e INPUT                 
156         $ scripts/config -e ACPI                  
157         $ scripts/config -e MODULES               
158         $ scripts/config -m RC_CORE               
159         $ scripts/config -e RC_DEVICES            
160         $ scripts/config -e RC_DECODERS           
161         $ scripts/config -m IR_RC5_DECODER        
162         $ scripts/config -m IR_ITE_CIR            
163                                                   
164 Enabling HDMI CEC Support                         
165 -------------------------                         
166                                                   
167 The HDMI CEC support is set automatically when    
168 all you need to do is to enable support either    
169 that needs it or by one of the existing HDMI d    
170                                                   
171 The HDMI-specific drivers are available at the    
172 menu\ [4]_::                                      
173                                                   
174         --- HDMI CEC drivers                      
175         < >   ChromeOS EC CEC driver              
176         < >   Amlogic Meson AO CEC driver         
177         < >   Amlogic Meson G12A AO CEC driver    
178         < >   Generic GPIO-based CEC driver       
179         < >   Samsung S5P CEC driver              
180         < >   STMicroelectronics STiH4xx HDMI     
181         < >   STMicroelectronics STM32 HDMI CE    
182         < >   Tegra HDMI CEC driver               
183         < >   SECO Boards HDMI CEC driver         
184         [ ]     SECO Boards IR RC5 support        
185         < >   Pulse Eight HDMI CEC                
186         < >   RainShadow Tech HDMI CEC            
187                                                   
188 .. [4] The above contents is just an example.     
189        HDMI devices depends on the system's ar    
190        on new Kernels.                            
191                                                   
192 Enabling Media Support                            
193 ----------------------                            
194                                                   
195 The Media menu has a lot more options than the    
196 Once selected, you should see the following op    
197                                                   
198         --- Media support                         
199         [ ] Filter media drivers                  
200         [*] Autoselect ancillary drivers          
201             Media device types --->               
202             Media core support --->               
203             Video4Linux options --->              
204             Media controller options --->         
205             Digital TV options --->               
206             HDMI CEC options --->                 
207             Media drivers --->                    
208             Media ancillary drivers --->          
209                                                   
210 Except if you know exactly what you're doing,     
211 a driver for a SoC platform, it is strongly re    
212 ``Autoselect ancillary drivers`` option turned    
213 the needed I²C ancillary drivers.                
214                                                   
215 There are now two ways to select media device     
216 below.                                            
217                                                   
218 ``Filter media drivers`` menu                     
219 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                     
220                                                   
221 This menu is meant to easy setup for PC and La    
222 by letting the user to specify what kind of me    
223 with those options::                              
224                                                   
225         [ ] Cameras and video grabbers            
226         [ ] Analog TV                             
227         [ ] Digital TV                            
228         [ ] AM/FM radio receivers/transmitters    
229         [ ] Software defined radio                
230         [ ] Platform-specific devices             
231         [ ] Test drivers                          
232                                                   
233 So, if you want to add support to a camera or     
234 select just the first option. Multiple options    
235                                                   
236 Once the options on this menu are selected, th    
237 auto-select the needed core drivers in order t    
238 functionality.                                    
239                                                   
240 .. note::                                         
241                                                   
242    Most TV cards are hybrid: they support both    
243                                                   
244    If you have an hybrid card, you may need to    
245    and ``Digital TV`` at the menu.                
246                                                   
247 When using this option, the defaults for the m    
248 functionality are usually good enough to provi    
249 for the driver. Yet, you could manually enable    
250 functionality using the settings under each of    
251 ``Media support`` sub-menus::                     
252                                                   
253             Media core support --->               
254             Video4Linux options --->              
255             Media controller options --->         
256             Digital TV options --->               
257             HDMI CEC options --->                 
258                                                   
259 Once you select the desired filters, the drive    
260 criteria will be available at the ``Media supp    
261                                                   
262 ``Media Core Support`` menu without filtering     
263 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     
264                                                   
265 If you disable the ``Filter media drivers`` me    
266 for your system whose dependencies are met sho    
267 ``Media drivers`` menu.                           
268                                                   
269 Please notice, however, that you should first     
270 ``Media Core Support`` menu has all the core f    
271 would need, as otherwise the corresponding dev    
272                                                   
273 Example                                           
274 -------                                           
275                                                   
276 In order to enable modular support for one of     
277 :doc:`this table <cx231xx-cardlist>`, with mod    
278 ``.config`` file should contain those lines::     
279                                                   
280     CONFIG_MODULES=y                              
281     CONFIG_USB=y                                  
282     CONFIG_I2C=y                                  
283     CONFIG_INPUT=y                                
284     CONFIG_RC_CORE=m                              
285     CONFIG_MEDIA_SUPPORT=m                        
286     CONFIG_MEDIA_SUPPORT_FILTER=y                 
287     CONFIG_MEDIA_ANALOG_TV_SUPPORT=y              
288     CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y             
289     CONFIG_MEDIA_USB_SUPPORT=y                    
290     CONFIG_VIDEO_CX231XX=y                        
291     CONFIG_VIDEO_CX231XX_DVB=y                    
292                                                   
293 Building and installing a new Kernel              
294 ====================================              
295                                                   
296 Once the ``.config`` file has everything neede    
297 is to run the ``make`` command::                  
298                                                   
299     $ make                                        
300                                                   
301 And then install the new Kernel and its module    
302                                                   
303     $ sudo make modules_install                   
304     $ sudo make install                           
305                                                   
306 Building just the new media drivers and core      
307 ============================================      
308                                                   
309 Running a new development Kernel from the deve    
310 because it may have experimental changes that     
311 some ways to build just the new drivers, using    
312                                                   
313 There is the `Linux Kernel backports project      
314 <https://backports.wiki.kernel.org/index.php/M    
315 newer drivers meant to be compiled against sta    
316                                                   
317 The LinuxTV developers, with are responsible f    
318 subsystem also maintains a backport tree, with    
319 daily updated from the newest kernel. Such tre    
320                                                   
321 https://git.linuxtv.org/media_build.git/          
322                                                   
323 It should be noticed that, while it should be     
324 ``media_build`` tree for testing purposes, the    
325 it would work (or even build) on a random Kern    
326 using a "best-efforts" principle, as time perm    
327                                                   
328 If you notice anything wrong on it, feel free     
329 Linux media subsystem's mailing list: media@vg    
330 add ``[PATCH media-build]`` at the e-mail's su    
331 patch for the media-build.                        
332                                                   
333 Before using it, you should run::                 
334                                                   
335     $ ./build                                     
336                                                   
337 .. note::                                         
338                                                   
339     1) you may need to run it twice if the ``m    
340        updated;                                   
341     2) you may need to do a ``make distclean``    
342        in the past for a different Kernel vers    
343        currently using;                           
344     3) by default, it will use the same config    
345        the ones defined on the Kernel you're r    
346                                                   
347 In order to select different drivers or differ    
348 use::                                             
349                                                   
350     $ make menuconfig                             
351                                                   
352 Then, you can build and install the new driver    
353                                                   
354     $ make && sudo make install                   
355                                                   
356 This will override the previous media drivers     
357 using.                                            
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php