Loading Documentation/feature-removal-schedule.txt +0 −24 Original line number Diff line number Diff line Loading @@ -56,30 +56,6 @@ Who: Mauro Carvalho Chehab <mchehab@infradead.org> --------------------------- What: old tuner-3036 i2c driver When: 2.6.28 Why: This driver is for VERY old i2c-over-parallel port teletext receiver boxes. Rather then spending effort on converting this driver to V4L2, and since it is extremely unlikely that anyone still uses one of these devices, it was decided to drop it. Who: Hans Verkuil <hverkuil@xs4all.nl> Mauro Carvalho Chehab <mchehab@infradead.org> --------------------------- What: V4L2 dpc7146 driver When: 2.6.28 Why: Old driver for the dpc7146 demonstration board that is no longer relevant. The last time this was tested on actual hardware was probably around 2002. Since this is a driver for a demonstration board the decision was made to remove it rather than spending a lot of effort continually updating this driver to stay in sync with the latest internal V4L2 or I2C API. Who: Hans Verkuil <hverkuil@xs4all.nl> Mauro Carvalho Chehab <mchehab@infradead.org> --------------------------- What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl]) When: November 2005 Files: drivers/pcmcia/: pcmcia_ioctl.c Loading Documentation/ftrace.txt +73 −98 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ Copyright 2008 Red Hat Inc. Reviewers: Elias Oltmanns, Randy Dunlap, Andrew Morton, John Kacur, and David Teigland. Written for: 2.6.27-rc1 Written for: 2.6.28-rc2 Introduction ------------ Loading Loading @@ -94,23 +94,20 @@ of ftrace. Here is a list of some of the key files: only be recorded if the latency is greater than the value in this file. (in microseconds) trace_entries : This sets or displays the number of trace entries each CPU buffer can hold. The tracer buffers are the same size for each CPU. The displayed number is the size of the CPU buffer and not total size. The trace_entries: This sets or displays the number of bytes each CPU buffer can hold. The tracer buffers are the same size for each CPU. The displayed number is the size of the CPU buffer and not total size of all buffers. The trace buffers are allocated in pages (blocks of memory that the kernel uses for allocation, usually 4 KB in size). Since each entry is smaller than a page, if the last allocated page has room for more entries than were requested, the rest of the page is used to allocate entries. If the last page allocated has room for more bytes than requested, the rest of the page will be used, making the actual allocation bigger than requested. (Note, the size may not be a multiple of the page size due to buffer managment overhead.) This can only be updated when the current_tracer is set to "none". NOTE: It is planned on changing the allocated buffers from being the number of possible CPUS to the number of online CPUS. is set to "nop". tracing_cpumask: This is a mask that lets the user only trace on specified CPUS. The format is a hex string Loading @@ -130,14 +127,11 @@ of ftrace. Here is a list of some of the key files: be traced. If a function exists in both set_ftrace_filter and set_ftrace_notrace, the function will _not_ be traced. available_filter_functions : When a function is encountered the first time by the dynamic tracer, it is recorded and later the call is converted into a nop. This file lists the functions that have been recorded by the dynamic tracer and these functions can be used to set the ftrace filter by the above "set_ftrace_filter" file. (See the section "dynamic ftrace" below for more details). available_filter_functions: This lists the functions that ftrace has processed and can trace. These are the function names that you can pass to "set_ftrace_filter" or "set_ftrace_notrace". (See the section "dynamic ftrace" below for more details.) The Tracers Loading @@ -145,7 +139,7 @@ The Tracers Here is the list of current tracers that may be configured. ftrace - function tracer that uses mcount to trace all functions. function - function tracer that uses mcount to trace all functions. sched_switch - traces the context switches between tasks. Loading @@ -166,8 +160,8 @@ Here is the list of current tracers that may be configured. the highest priority task to get scheduled after it has been woken up. none - This is not a tracer. To remove all tracers from tracing simply echo "none" into current_tracer. nop - This is not a tracer. To remove all tracers from tracing simply echo "nop" into current_tracer. Examples of using the tracer Loading @@ -182,7 +176,7 @@ Output format: Here is an example of the output format of the file "trace" -------- # tracer: ftrace # tracer: function # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | Loading @@ -192,7 +186,7 @@ Here is an example of the output format of the file "trace" -------- A header is printed with the tracer name that is represented by the trace. In this case the tracer is "ftrace". Then a header showing the format. Task In this case the tracer is "function". Then a header showing the format. Task name "bash", the task PID "4251", the CPU that it was running on "01", the timestamp in <secs>.<usecs> format, the function name that was traced "path_put" and the parent function that called this function Loading Loading @@ -1003,22 +997,20 @@ is the stack for the hard interrupt. This hides the fact that NEED_RESCHED has been set. We do not see the 'N' until we switch back to the task's assigned stack. ftrace ------ function -------- ftrace is not only the name of the tracing infrastructure, but it is also a name of one of the tracers. The tracer is the function tracer. Enabling the function tracer can be done from the debug file system. Make sure the ftrace_enabled is set otherwise this tracer is a nop. This tracer is the function tracer. Enabling the function tracer can be done from the debug file system. Make sure the ftrace_enabled is set; otherwise this tracer is a nop. # sysctl kernel.ftrace_enabled=1 # echo ftrace > /debug/tracing/current_tracer # echo function > /debug/tracing/current_tracer # echo 1 > /debug/tracing/tracing_enabled # usleep 1 # echo 0 > /debug/tracing/tracing_enabled # cat /debug/tracing/trace # tracer: ftrace # tracer: function # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | Loading @@ -1040,10 +1032,10 @@ this tracer is a nop. [...] Note: ftrace uses ring buffers to store the above entries. The newest data may overwrite the oldest data. Sometimes using echo to stop the trace is not sufficient because the tracing could have overwritten the data that you wanted to record. For this reason, it is sometimes better to Note: function tracer uses ring buffers to store the above entries. The newest data may overwrite the oldest data. Sometimes using echo to stop the trace is not sufficient because the tracing could have overwritten the data that you wanted to record. For this reason, it is sometimes better to disable tracing directly from a program. This allows you to stop the tracing at the point that you hit the part that you are interested in. To disable the tracing directly from a C program, something like following Loading Loading @@ -1077,18 +1069,31 @@ every kernel function, produced by the -pg switch in gcc), starts of pointing to a simple return. (Enabling FTRACE will include the -pg switch in the compiling of the kernel.) When dynamic ftrace is initialized, it calls kstop_machine to make the machine act like a uniprocessor so that it can freely modify code without worrying about other processors executing that same code. At initialization, the mcount calls are changed to call a "record_ip" function. After this, the first time a kernel function is called, it has the calling address saved in a hash table. Later on the ftraced kernel thread is awoken and will again call kstop_machine if new functions have been recorded. The ftraced thread will change all calls to mcount to "nop". Just calling mcount and having mcount return has shown a 10% overhead. By converting it to a nop, there is no measurable overhead to the system. At compile time every C file object is run through the recordmcount.pl script (located in the scripts directory). This script will process the C object using objdump to find all the locations in the .text section that call mcount. (Note, only the .text section is processed, since processing other sections like .init.text may cause races due to those sections being freed). A new section called "__mcount_loc" is created that holds references to all the mcount call sites in the .text section. This section is compiled back into the original object. The final linker will add all these references into a single table. On boot up, before SMP is initialized, the dynamic ftrace code scans this table and updates all the locations into nops. It also records the locations, which are added to the available_filter_functions list. Modules are processed as they are loaded and before they are executed. When a module is unloaded, it also removes its functions from the ftrace function list. This is automatic in the module unload code, and the module author does not need to worry about it. When tracing is enabled, kstop_machine is called to prevent races with the CPUS executing code being modified (which can cause the CPU to do undesireable things), and the nops are patched back to calls. But this time, they do not call mcount (which is just a function stub). They now call into the ftrace infrastructure. One special side-effect to the recording of the functions being traced is that we can now selectively choose which functions we Loading Loading @@ -1251,36 +1256,6 @@ Produces: We can see that there's no more lock or preempt tracing. ftraced ------- As mentioned above, when dynamic ftrace is configured in, a kernel thread wakes up once a second and checks to see if there are mcount calls that need to be converted into nops. If there are not any, then it simply goes back to sleep. But if there are some, it will call kstop_machine to convert the calls to nops. There may be a case in which you do not want this added latency. Perhaps you are doing some audio recording and this activity might cause skips in the playback. There is an interface to disable and enable the "ftraced" kernel thread. # echo 0 > /debug/tracing/ftraced_enabled This will disable the calling of kstop_machine to update the mcount calls to nops. Remember that there is a large overhead to calling mcount. Without this kernel thread, that overhead will exist. If there are recorded calls to mcount, any write to the ftraced_enabled file will cause the kstop_machine to run. This means that a user can manually perform the updates when they want to by simply echoing a '0' into the ftraced_enabled file. The updates are also done at the beginning of enabling a tracer that uses ftrace function recording. trace_pipe ---------- Loading @@ -1289,14 +1264,14 @@ on the tracing is different. Every read from trace_pipe is consumed. This means that subsequent reads will be different. The trace is live. # echo ftrace > /debug/tracing/current_tracer # echo function > /debug/tracing/current_tracer # cat /debug/tracing/trace_pipe > /tmp/trace.out & [1] 4153 # echo 1 > /debug/tracing/tracing_enabled # usleep 1 # echo 0 > /debug/tracing/tracing_enabled # cat /debug/tracing/trace # tracer: ftrace # tracer: function # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | Loading @@ -1317,7 +1292,7 @@ is live. Note, reading the trace_pipe file will block until more input is added. By changing the tracer, trace_pipe will issue an EOF. We needed to set the ftrace tracer _before_ cating the trace_pipe file. to set the function tracer _before_ we "cat" the trace_pipe file. trace entries Loading @@ -1334,10 +1309,10 @@ number of entries. 65620 Note, to modify this, you must have tracing completely disabled. To do that, echo "none" into the current_tracer. If the current_tracer is not set to "none", an EINVAL error will be returned. echo "nop" into the current_tracer. If the current_tracer is not set to "nop", an EINVAL error will be returned. # echo none > /debug/tracing/current_tracer # echo nop > /debug/tracing/current_tracer # echo 100000 > /debug/tracing/trace_entries # cat /debug/tracing/trace_entries 100045 Loading Documentation/powerpc/booting-without-of.txt +10 −55 Original line number Diff line number Diff line Loading @@ -41,25 +41,14 @@ Table of Contents VI - System-on-a-chip devices and nodes 1) Defining child nodes of an SOC 2) Representing devices without a current OF specification a) MDIO IO device b) Gianfar-compatible ethernet nodes c) PHY nodes d) Interrupt controllers e) I2C f) Freescale SOC USB controllers g) Freescale SOC SEC Security Engines h) Board Control and Status (BCSR) i) Freescale QUICC Engine module (QE) j) CFI or JEDEC memory-mapped NOR flash k) Global Utilities Block l) Freescale Communications Processor Module m) Chipselect/Local Bus n) 4xx/Axon EMAC ethernet nodes o) Xilinx IP cores p) Freescale Synchronous Serial Interface q) USB EHCI controllers r) MDIO on GPIOs s) SPI busses a) PHY nodes b) Interrupt controllers c) CFI or JEDEC memory-mapped NOR flash d) 4xx/Axon EMAC ethernet nodes e) Xilinx IP cores f) USB EHCI controllers g) MDIO on GPIOs h) SPI busses VII - Marvell Discovery mv64[345]6x System Controller chips 1) The /system-controller node Loading Loading @@ -1830,41 +1819,7 @@ platforms are moved over to use the flattened-device-tree model. big-endian; }; r) Freescale Display Interface Unit The Freescale DIU is a LCD controller, with proper hardware, it can also drive DVI monitors. Required properties: - compatible : should be "fsl-diu". - reg : should contain at least address and length of the DIU register set. - Interrupts : one DIU interrupt should be describe here. Example (MPC8610HPCD) display@2c000 { compatible = "fsl,diu"; reg = <0x2c000 100>; interrupts = <72 2>; interrupt-parent = <&mpic>; }; s) Freescale on board FPGA This is the memory-mapped registers for on board FPGA. Required properities: - compatible : should be "fsl,fpga-pixis". - reg : should contain the address and the lenght of the FPPGA register set. Example (MPC8610HPCD) board-control@e8000000 { compatible = "fsl,fpga-pixis"; reg = <0xe8000000 32>; }; r) MDIO on GPIOs g) MDIO on GPIOs Currently defined compatibles: - virtual,gpio-mdio Loading @@ -1884,7 +1839,7 @@ platforms are moved over to use the flattened-device-tree model. &qe_pio_c 6>; }; s) SPI (Serial Peripheral Interface) busses h) SPI (Serial Peripheral Interface) busses SPI busses can be described with a node for the SPI master device and a set of child nodes for each SPI slave on the bus. For this Loading Documentation/video4linux/README.cx88 +2 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ audio sound card) should be possible, but there is no code yet ... vbi - some code present. Doesn't crash any more, but also doesn't work yet ... - Code present. Works for NTSC closed caption. PAL and other TV norms may or may not work. how to add support for new cards Loading Documentation/video4linux/si470x.txt 0 → 100644 +118 −0 Original line number Diff line number Diff line Driver for USB radios for the Silicon Labs Si470x FM Radio Receivers Copyright (c) 2008 Tobias Lorenz <tobias.lorenz@gmx.net> Information from Silicon Labs ============================= Silicon Laboratories is the manufacturer of the radio ICs, that nowadays are the most often used radio receivers in cell phones. Usually they are connected with I2C. But SiLabs also provides a reference design, which integrates this IC, together with a small microcontroller C8051F321, to form a USB radio. Part of this reference design is also a radio application in binary and source code. The software also contains an automatic firmware upgrade to the most current version. Information on these can be downloaded here: http://www.silabs.com/usbradio Supported ICs ============= The following ICs have a very similar register set, so that they are or will be supported somewhen by the driver: - Si4700: FM radio receiver - Si4701: FM radio receiver, RDS Support - Si4702: FM radio receiver - Si4703: FM radio receiver, RDS Support - Si4704: FM radio receiver, no external antenna required - Si4705: FM radio receiver, no external antenna required, RDS support, Dig I/O - Si4706: Enhanced FM RDS/TMC radio receiver, no external antenna required, RDS Support - Si4707: Dedicated weather band radio receiver with SAME decoder, RDS Support - Si4708: Smallest FM receivers - Si4709: Smallest FM receivers, RDS Support More information on these can be downloaded here: http://www.silabs.com/products/mcu/Pages/USBFMRadioRD.aspx Supported USB devices ===================== Currently the following USB radios (vendor:product) with the Silicon Labs si470x chips are known to work: - 10c4:818a: Silicon Labs USB FM Radio Reference Design - 06e1:a155: ADS/Tech FM Radio Receiver (formerly Instant FM Music) (RDX-155-EF) - 1b80:d700: KWorld USB FM Radio SnapMusic Mobile 700 (FM700) Software ======== Testing is usually done with most application under Debian/testing: - fmtools - Utility for managing FM tuner cards - gnomeradio - FM-radio tuner for the GNOME desktop - gradio - GTK FM radio tuner - kradio - Comfortable Radio Application for KDE - radio - ncurses-based radio application There is also a library libv4l, which can be used. It's going to have a function for frequency seeking, either by using hardware functionality as in radio-si470x or by implementing a function as we currently have in every of the mentioned programs. Somewhen the radio programs should make use of libv4l. For processing RDS information, there is a project ongoing at: http://rdsd.berlios.de/ There is currently no project for making TMC sentences human readable. Audio Listing ============= USB Audio is provided by the ALSA snd_usb_audio module. It is recommended to also select SND_USB_AUDIO, as this is required to get sound from the radio. For listing you have to redirect the sound, for example using one of the following commands. If you just want to test audio (very poor quality): cat /dev/dsp1 > /dev/dsp If you use OSS try: sox -2 --endian little -r 96000 -t oss /dev/dsp1 -t oss /dev/dsp If you use arts try: arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B - Module Parameters ================= After loading the module, you still have access to some of them in the sysfs mount under /sys/module/radio_si470x/parameters. The contents of read-only files (0444) are not updated, even if space, band and de are changed using private video controls. The others are runtime changeable. Errors ====== Increase tune_timeout, if you often get -EIO errors. When timed out or band limit is reached, hw_freq_seek returns -EAGAIN. If you get any errors from snd_usb_audio, please report them to the ALSA people. Open Issues =========== V4L minor device allocation and parameter setting is not perfect. A solution is currently under discussion. There is an USB interface for downloading/uploading new firmware images. Support for it can be implemented using the request_firmware interface. There is a RDS interrupt mode. The driver is already using the same interface for polling RDS information, but is currently not using the interrupt mode. There is a LED interface, which can be used to override the LED control programmed in the firmware. This can be made available using the LED support functions in the kernel. Other useful information and links ================================== http://www.silabs.com/usbradio Loading
Documentation/feature-removal-schedule.txt +0 −24 Original line number Diff line number Diff line Loading @@ -56,30 +56,6 @@ Who: Mauro Carvalho Chehab <mchehab@infradead.org> --------------------------- What: old tuner-3036 i2c driver When: 2.6.28 Why: This driver is for VERY old i2c-over-parallel port teletext receiver boxes. Rather then spending effort on converting this driver to V4L2, and since it is extremely unlikely that anyone still uses one of these devices, it was decided to drop it. Who: Hans Verkuil <hverkuil@xs4all.nl> Mauro Carvalho Chehab <mchehab@infradead.org> --------------------------- What: V4L2 dpc7146 driver When: 2.6.28 Why: Old driver for the dpc7146 demonstration board that is no longer relevant. The last time this was tested on actual hardware was probably around 2002. Since this is a driver for a demonstration board the decision was made to remove it rather than spending a lot of effort continually updating this driver to stay in sync with the latest internal V4L2 or I2C API. Who: Hans Verkuil <hverkuil@xs4all.nl> Mauro Carvalho Chehab <mchehab@infradead.org> --------------------------- What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl]) When: November 2005 Files: drivers/pcmcia/: pcmcia_ioctl.c Loading
Documentation/ftrace.txt +73 −98 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ Copyright 2008 Red Hat Inc. Reviewers: Elias Oltmanns, Randy Dunlap, Andrew Morton, John Kacur, and David Teigland. Written for: 2.6.27-rc1 Written for: 2.6.28-rc2 Introduction ------------ Loading Loading @@ -94,23 +94,20 @@ of ftrace. Here is a list of some of the key files: only be recorded if the latency is greater than the value in this file. (in microseconds) trace_entries : This sets or displays the number of trace entries each CPU buffer can hold. The tracer buffers are the same size for each CPU. The displayed number is the size of the CPU buffer and not total size. The trace_entries: This sets or displays the number of bytes each CPU buffer can hold. The tracer buffers are the same size for each CPU. The displayed number is the size of the CPU buffer and not total size of all buffers. The trace buffers are allocated in pages (blocks of memory that the kernel uses for allocation, usually 4 KB in size). Since each entry is smaller than a page, if the last allocated page has room for more entries than were requested, the rest of the page is used to allocate entries. If the last page allocated has room for more bytes than requested, the rest of the page will be used, making the actual allocation bigger than requested. (Note, the size may not be a multiple of the page size due to buffer managment overhead.) This can only be updated when the current_tracer is set to "none". NOTE: It is planned on changing the allocated buffers from being the number of possible CPUS to the number of online CPUS. is set to "nop". tracing_cpumask: This is a mask that lets the user only trace on specified CPUS. The format is a hex string Loading @@ -130,14 +127,11 @@ of ftrace. Here is a list of some of the key files: be traced. If a function exists in both set_ftrace_filter and set_ftrace_notrace, the function will _not_ be traced. available_filter_functions : When a function is encountered the first time by the dynamic tracer, it is recorded and later the call is converted into a nop. This file lists the functions that have been recorded by the dynamic tracer and these functions can be used to set the ftrace filter by the above "set_ftrace_filter" file. (See the section "dynamic ftrace" below for more details). available_filter_functions: This lists the functions that ftrace has processed and can trace. These are the function names that you can pass to "set_ftrace_filter" or "set_ftrace_notrace". (See the section "dynamic ftrace" below for more details.) The Tracers Loading @@ -145,7 +139,7 @@ The Tracers Here is the list of current tracers that may be configured. ftrace - function tracer that uses mcount to trace all functions. function - function tracer that uses mcount to trace all functions. sched_switch - traces the context switches between tasks. Loading @@ -166,8 +160,8 @@ Here is the list of current tracers that may be configured. the highest priority task to get scheduled after it has been woken up. none - This is not a tracer. To remove all tracers from tracing simply echo "none" into current_tracer. nop - This is not a tracer. To remove all tracers from tracing simply echo "nop" into current_tracer. Examples of using the tracer Loading @@ -182,7 +176,7 @@ Output format: Here is an example of the output format of the file "trace" -------- # tracer: ftrace # tracer: function # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | Loading @@ -192,7 +186,7 @@ Here is an example of the output format of the file "trace" -------- A header is printed with the tracer name that is represented by the trace. In this case the tracer is "ftrace". Then a header showing the format. Task In this case the tracer is "function". Then a header showing the format. Task name "bash", the task PID "4251", the CPU that it was running on "01", the timestamp in <secs>.<usecs> format, the function name that was traced "path_put" and the parent function that called this function Loading Loading @@ -1003,22 +997,20 @@ is the stack for the hard interrupt. This hides the fact that NEED_RESCHED has been set. We do not see the 'N' until we switch back to the task's assigned stack. ftrace ------ function -------- ftrace is not only the name of the tracing infrastructure, but it is also a name of one of the tracers. The tracer is the function tracer. Enabling the function tracer can be done from the debug file system. Make sure the ftrace_enabled is set otherwise this tracer is a nop. This tracer is the function tracer. Enabling the function tracer can be done from the debug file system. Make sure the ftrace_enabled is set; otherwise this tracer is a nop. # sysctl kernel.ftrace_enabled=1 # echo ftrace > /debug/tracing/current_tracer # echo function > /debug/tracing/current_tracer # echo 1 > /debug/tracing/tracing_enabled # usleep 1 # echo 0 > /debug/tracing/tracing_enabled # cat /debug/tracing/trace # tracer: ftrace # tracer: function # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | Loading @@ -1040,10 +1032,10 @@ this tracer is a nop. [...] Note: ftrace uses ring buffers to store the above entries. The newest data may overwrite the oldest data. Sometimes using echo to stop the trace is not sufficient because the tracing could have overwritten the data that you wanted to record. For this reason, it is sometimes better to Note: function tracer uses ring buffers to store the above entries. The newest data may overwrite the oldest data. Sometimes using echo to stop the trace is not sufficient because the tracing could have overwritten the data that you wanted to record. For this reason, it is sometimes better to disable tracing directly from a program. This allows you to stop the tracing at the point that you hit the part that you are interested in. To disable the tracing directly from a C program, something like following Loading Loading @@ -1077,18 +1069,31 @@ every kernel function, produced by the -pg switch in gcc), starts of pointing to a simple return. (Enabling FTRACE will include the -pg switch in the compiling of the kernel.) When dynamic ftrace is initialized, it calls kstop_machine to make the machine act like a uniprocessor so that it can freely modify code without worrying about other processors executing that same code. At initialization, the mcount calls are changed to call a "record_ip" function. After this, the first time a kernel function is called, it has the calling address saved in a hash table. Later on the ftraced kernel thread is awoken and will again call kstop_machine if new functions have been recorded. The ftraced thread will change all calls to mcount to "nop". Just calling mcount and having mcount return has shown a 10% overhead. By converting it to a nop, there is no measurable overhead to the system. At compile time every C file object is run through the recordmcount.pl script (located in the scripts directory). This script will process the C object using objdump to find all the locations in the .text section that call mcount. (Note, only the .text section is processed, since processing other sections like .init.text may cause races due to those sections being freed). A new section called "__mcount_loc" is created that holds references to all the mcount call sites in the .text section. This section is compiled back into the original object. The final linker will add all these references into a single table. On boot up, before SMP is initialized, the dynamic ftrace code scans this table and updates all the locations into nops. It also records the locations, which are added to the available_filter_functions list. Modules are processed as they are loaded and before they are executed. When a module is unloaded, it also removes its functions from the ftrace function list. This is automatic in the module unload code, and the module author does not need to worry about it. When tracing is enabled, kstop_machine is called to prevent races with the CPUS executing code being modified (which can cause the CPU to do undesireable things), and the nops are patched back to calls. But this time, they do not call mcount (which is just a function stub). They now call into the ftrace infrastructure. One special side-effect to the recording of the functions being traced is that we can now selectively choose which functions we Loading Loading @@ -1251,36 +1256,6 @@ Produces: We can see that there's no more lock or preempt tracing. ftraced ------- As mentioned above, when dynamic ftrace is configured in, a kernel thread wakes up once a second and checks to see if there are mcount calls that need to be converted into nops. If there are not any, then it simply goes back to sleep. But if there are some, it will call kstop_machine to convert the calls to nops. There may be a case in which you do not want this added latency. Perhaps you are doing some audio recording and this activity might cause skips in the playback. There is an interface to disable and enable the "ftraced" kernel thread. # echo 0 > /debug/tracing/ftraced_enabled This will disable the calling of kstop_machine to update the mcount calls to nops. Remember that there is a large overhead to calling mcount. Without this kernel thread, that overhead will exist. If there are recorded calls to mcount, any write to the ftraced_enabled file will cause the kstop_machine to run. This means that a user can manually perform the updates when they want to by simply echoing a '0' into the ftraced_enabled file. The updates are also done at the beginning of enabling a tracer that uses ftrace function recording. trace_pipe ---------- Loading @@ -1289,14 +1264,14 @@ on the tracing is different. Every read from trace_pipe is consumed. This means that subsequent reads will be different. The trace is live. # echo ftrace > /debug/tracing/current_tracer # echo function > /debug/tracing/current_tracer # cat /debug/tracing/trace_pipe > /tmp/trace.out & [1] 4153 # echo 1 > /debug/tracing/tracing_enabled # usleep 1 # echo 0 > /debug/tracing/tracing_enabled # cat /debug/tracing/trace # tracer: ftrace # tracer: function # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | Loading @@ -1317,7 +1292,7 @@ is live. Note, reading the trace_pipe file will block until more input is added. By changing the tracer, trace_pipe will issue an EOF. We needed to set the ftrace tracer _before_ cating the trace_pipe file. to set the function tracer _before_ we "cat" the trace_pipe file. trace entries Loading @@ -1334,10 +1309,10 @@ number of entries. 65620 Note, to modify this, you must have tracing completely disabled. To do that, echo "none" into the current_tracer. If the current_tracer is not set to "none", an EINVAL error will be returned. echo "nop" into the current_tracer. If the current_tracer is not set to "nop", an EINVAL error will be returned. # echo none > /debug/tracing/current_tracer # echo nop > /debug/tracing/current_tracer # echo 100000 > /debug/tracing/trace_entries # cat /debug/tracing/trace_entries 100045 Loading
Documentation/powerpc/booting-without-of.txt +10 −55 Original line number Diff line number Diff line Loading @@ -41,25 +41,14 @@ Table of Contents VI - System-on-a-chip devices and nodes 1) Defining child nodes of an SOC 2) Representing devices without a current OF specification a) MDIO IO device b) Gianfar-compatible ethernet nodes c) PHY nodes d) Interrupt controllers e) I2C f) Freescale SOC USB controllers g) Freescale SOC SEC Security Engines h) Board Control and Status (BCSR) i) Freescale QUICC Engine module (QE) j) CFI or JEDEC memory-mapped NOR flash k) Global Utilities Block l) Freescale Communications Processor Module m) Chipselect/Local Bus n) 4xx/Axon EMAC ethernet nodes o) Xilinx IP cores p) Freescale Synchronous Serial Interface q) USB EHCI controllers r) MDIO on GPIOs s) SPI busses a) PHY nodes b) Interrupt controllers c) CFI or JEDEC memory-mapped NOR flash d) 4xx/Axon EMAC ethernet nodes e) Xilinx IP cores f) USB EHCI controllers g) MDIO on GPIOs h) SPI busses VII - Marvell Discovery mv64[345]6x System Controller chips 1) The /system-controller node Loading Loading @@ -1830,41 +1819,7 @@ platforms are moved over to use the flattened-device-tree model. big-endian; }; r) Freescale Display Interface Unit The Freescale DIU is a LCD controller, with proper hardware, it can also drive DVI monitors. Required properties: - compatible : should be "fsl-diu". - reg : should contain at least address and length of the DIU register set. - Interrupts : one DIU interrupt should be describe here. Example (MPC8610HPCD) display@2c000 { compatible = "fsl,diu"; reg = <0x2c000 100>; interrupts = <72 2>; interrupt-parent = <&mpic>; }; s) Freescale on board FPGA This is the memory-mapped registers for on board FPGA. Required properities: - compatible : should be "fsl,fpga-pixis". - reg : should contain the address and the lenght of the FPPGA register set. Example (MPC8610HPCD) board-control@e8000000 { compatible = "fsl,fpga-pixis"; reg = <0xe8000000 32>; }; r) MDIO on GPIOs g) MDIO on GPIOs Currently defined compatibles: - virtual,gpio-mdio Loading @@ -1884,7 +1839,7 @@ platforms are moved over to use the flattened-device-tree model. &qe_pio_c 6>; }; s) SPI (Serial Peripheral Interface) busses h) SPI (Serial Peripheral Interface) busses SPI busses can be described with a node for the SPI master device and a set of child nodes for each SPI slave on the bus. For this Loading
Documentation/video4linux/README.cx88 +2 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ audio sound card) should be possible, but there is no code yet ... vbi - some code present. Doesn't crash any more, but also doesn't work yet ... - Code present. Works for NTSC closed caption. PAL and other TV norms may or may not work. how to add support for new cards Loading
Documentation/video4linux/si470x.txt 0 → 100644 +118 −0 Original line number Diff line number Diff line Driver for USB radios for the Silicon Labs Si470x FM Radio Receivers Copyright (c) 2008 Tobias Lorenz <tobias.lorenz@gmx.net> Information from Silicon Labs ============================= Silicon Laboratories is the manufacturer of the radio ICs, that nowadays are the most often used radio receivers in cell phones. Usually they are connected with I2C. But SiLabs also provides a reference design, which integrates this IC, together with a small microcontroller C8051F321, to form a USB radio. Part of this reference design is also a radio application in binary and source code. The software also contains an automatic firmware upgrade to the most current version. Information on these can be downloaded here: http://www.silabs.com/usbradio Supported ICs ============= The following ICs have a very similar register set, so that they are or will be supported somewhen by the driver: - Si4700: FM radio receiver - Si4701: FM radio receiver, RDS Support - Si4702: FM radio receiver - Si4703: FM radio receiver, RDS Support - Si4704: FM radio receiver, no external antenna required - Si4705: FM radio receiver, no external antenna required, RDS support, Dig I/O - Si4706: Enhanced FM RDS/TMC radio receiver, no external antenna required, RDS Support - Si4707: Dedicated weather band radio receiver with SAME decoder, RDS Support - Si4708: Smallest FM receivers - Si4709: Smallest FM receivers, RDS Support More information on these can be downloaded here: http://www.silabs.com/products/mcu/Pages/USBFMRadioRD.aspx Supported USB devices ===================== Currently the following USB radios (vendor:product) with the Silicon Labs si470x chips are known to work: - 10c4:818a: Silicon Labs USB FM Radio Reference Design - 06e1:a155: ADS/Tech FM Radio Receiver (formerly Instant FM Music) (RDX-155-EF) - 1b80:d700: KWorld USB FM Radio SnapMusic Mobile 700 (FM700) Software ======== Testing is usually done with most application under Debian/testing: - fmtools - Utility for managing FM tuner cards - gnomeradio - FM-radio tuner for the GNOME desktop - gradio - GTK FM radio tuner - kradio - Comfortable Radio Application for KDE - radio - ncurses-based radio application There is also a library libv4l, which can be used. It's going to have a function for frequency seeking, either by using hardware functionality as in radio-si470x or by implementing a function as we currently have in every of the mentioned programs. Somewhen the radio programs should make use of libv4l. For processing RDS information, there is a project ongoing at: http://rdsd.berlios.de/ There is currently no project for making TMC sentences human readable. Audio Listing ============= USB Audio is provided by the ALSA snd_usb_audio module. It is recommended to also select SND_USB_AUDIO, as this is required to get sound from the radio. For listing you have to redirect the sound, for example using one of the following commands. If you just want to test audio (very poor quality): cat /dev/dsp1 > /dev/dsp If you use OSS try: sox -2 --endian little -r 96000 -t oss /dev/dsp1 -t oss /dev/dsp If you use arts try: arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B - Module Parameters ================= After loading the module, you still have access to some of them in the sysfs mount under /sys/module/radio_si470x/parameters. The contents of read-only files (0444) are not updated, even if space, band and de are changed using private video controls. The others are runtime changeable. Errors ====== Increase tune_timeout, if you often get -EIO errors. When timed out or band limit is reached, hw_freq_seek returns -EAGAIN. If you get any errors from snd_usb_audio, please report them to the ALSA people. Open Issues =========== V4L minor device allocation and parameter setting is not perfect. A solution is currently under discussion. There is an USB interface for downloading/uploading new firmware images. Support for it can be implemented using the request_firmware interface. There is a RDS interrupt mode. The driver is already using the same interface for polling RDS information, but is currently not using the interrupt mode. There is a LED interface, which can be used to override the LED control programmed in the firmware. This can be made available using the LED support functions in the kernel. Other useful information and links ================================== http://www.silabs.com/usbradio