diff options
Diffstat (limited to 'Documentation')
21 files changed, 433 insertions, 225 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 21272e4b4a5c..495858b236b6 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -176,6 +176,18 @@ Who: Richard Knutsson <ricknu-0@student.ltu.se> and Greg Kroah-Hartman <gregkh@s | |||
176 | 176 | ||
177 | --------------------------- | 177 | --------------------------- |
178 | 178 | ||
179 | What: Usage of invalid timevals in setitimer | ||
180 | When: March 2007 | ||
181 | Why: POSIX requires to validate timevals in the setitimer call. This | ||
182 | was never done by Linux. The invalid (e.g. negative timevals) were | ||
183 | silently converted to more or less random timeouts and intervals. | ||
184 | Until the removal a per boot limited number of warnings is printed | ||
185 | and the timevals are sanitized. | ||
186 | |||
187 | Who: Thomas Gleixner <tglx@linutronix.de> | ||
188 | |||
189 | --------------------------- | ||
190 | |||
179 | What: I2C interface of the it87 driver | 191 | What: I2C interface of the it87 driver |
180 | When: January 2007 | 192 | When: January 2007 |
181 | Why: The ISA interface is faster and should be always available. The I2C | 193 | Why: The ISA interface is faster and should be always available. The I2C |
diff --git a/Documentation/filesystems/v9fs.txt b/Documentation/filesystems/9p.txt index 24c7a9c41f0d..43b89c214d20 100644 --- a/Documentation/filesystems/v9fs.txt +++ b/Documentation/filesystems/9p.txt | |||
@@ -1,5 +1,5 @@ | |||
1 | V9FS: 9P2000 for Linux | 1 | v9fs: Plan 9 Resource Sharing for Linux |
2 | ====================== | 2 | ======================================= |
3 | 3 | ||
4 | ABOUT | 4 | ABOUT |
5 | ===== | 5 | ===== |
@@ -9,18 +9,19 @@ v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol. | |||
9 | This software was originally developed by Ron Minnich <rminnich@lanl.gov> | 9 | This software was originally developed by Ron Minnich <rminnich@lanl.gov> |
10 | and Maya Gokhale <maya@lanl.gov>. Additional development by Greg Watson | 10 | and Maya Gokhale <maya@lanl.gov>. Additional development by Greg Watson |
11 | <gwatson@lanl.gov> and most recently Eric Van Hensbergen | 11 | <gwatson@lanl.gov> and most recently Eric Van Hensbergen |
12 | <ericvh@gmail.com> and Latchesar Ionkov <lucho@ionkov.net>. | 12 | <ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox |
13 | <rsc@swtch.com>. | ||
13 | 14 | ||
14 | USAGE | 15 | USAGE |
15 | ===== | 16 | ===== |
16 | 17 | ||
17 | For remote file server: | 18 | For remote file server: |
18 | 19 | ||
19 | mount -t 9P 10.10.1.2 /mnt/9 | 20 | mount -t 9p 10.10.1.2 /mnt/9 |
20 | 21 | ||
21 | For Plan 9 From User Space applications (http://swtch.com/plan9) | 22 | For Plan 9 From User Space applications (http://swtch.com/plan9) |
22 | 23 | ||
23 | mount -t 9P `namespace`/acme /mnt/9 -o proto=unix,name=$USER | 24 | mount -t 9p `namespace`/acme /mnt/9 -o proto=unix,uname=$USER |
24 | 25 | ||
25 | OPTIONS | 26 | OPTIONS |
26 | ======= | 27 | ======= |
@@ -32,7 +33,7 @@ OPTIONS | |||
32 | fd - used passed file descriptors for connection | 33 | fd - used passed file descriptors for connection |
33 | (see rfdno and wfdno) | 34 | (see rfdno and wfdno) |
34 | 35 | ||
35 | name=name user name to attempt mount as on the remote server. The | 36 | uname=name user name to attempt mount as on the remote server. The |
36 | server may override or ignore this value. Certain user | 37 | server may override or ignore this value. Certain user |
37 | names may require authentication. | 38 | names may require authentication. |
38 | 39 | ||
@@ -42,7 +43,7 @@ OPTIONS | |||
42 | debug=n specifies debug level. The debug level is a bitmask. | 43 | debug=n specifies debug level. The debug level is a bitmask. |
43 | 0x01 = display verbose error messages | 44 | 0x01 = display verbose error messages |
44 | 0x02 = developer debug (DEBUG_CURRENT) | 45 | 0x02 = developer debug (DEBUG_CURRENT) |
45 | 0x04 = display 9P trace | 46 | 0x04 = display 9p trace |
46 | 0x08 = display VFS trace | 47 | 0x08 = display VFS trace |
47 | 0x10 = display Marshalling debug | 48 | 0x10 = display Marshalling debug |
48 | 0x20 = display RPC debug | 49 | 0x20 = display RPC debug |
@@ -53,11 +54,11 @@ OPTIONS | |||
53 | 54 | ||
54 | wfdno=n the file descriptor for writing with proto=fd | 55 | wfdno=n the file descriptor for writing with proto=fd |
55 | 56 | ||
56 | maxdata=n the number of bytes to use for 9P packet payload (msize) | 57 | maxdata=n the number of bytes to use for 9p packet payload (msize) |
57 | 58 | ||
58 | port=n port to connect to on the remote server | 59 | port=n port to connect to on the remote server |
59 | 60 | ||
60 | noextend force legacy mode (no 9P2000.u semantics) | 61 | noextend force legacy mode (no 9p2000.u semantics) |
61 | 62 | ||
62 | uid attempt to mount as a particular uid | 63 | uid attempt to mount as a particular uid |
63 | 64 | ||
@@ -72,7 +73,7 @@ OPTIONS | |||
72 | RESOURCES | 73 | RESOURCES |
73 | ========= | 74 | ========= |
74 | 75 | ||
75 | The Linux version of the 9P server is now maintained under the npfs project | 76 | The Linux version of the 9p server is now maintained under the npfs project |
76 | on sourceforge (http://sourceforge.net/projects/npfs). | 77 | on sourceforge (http://sourceforge.net/projects/npfs). |
77 | 78 | ||
78 | There are user and developer mailing lists available through the v9fs project | 79 | There are user and developer mailing lists available through the v9fs project |
diff --git a/Documentation/filesystems/udf.txt b/Documentation/filesystems/udf.txt index e5213bc301f7..511b4230c053 100644 --- a/Documentation/filesystems/udf.txt +++ b/Documentation/filesystems/udf.txt | |||
@@ -26,6 +26,20 @@ The following mount options are supported: | |||
26 | nostrict Unset strict conformance | 26 | nostrict Unset strict conformance |
27 | iocharset= Set the NLS character set | 27 | iocharset= Set the NLS character set |
28 | 28 | ||
29 | The uid= and gid= options need a bit more explaining. They will accept a | ||
30 | decimal numeric value which will be used as the default ID for that mount. | ||
31 | They will also accept the string "ignore" and "forget". For files on the disk | ||
32 | that are owned by nobody ( -1 ), they will instead look as if they are owned | ||
33 | by the default ID. The ignore option causes the default ID to override all | ||
34 | IDs on the disk, not just -1. The forget option causes all IDs to be written | ||
35 | to disk as -1, so when the media is later remounted, they will appear to be | ||
36 | owned by whatever default ID it is mounted with at that time. | ||
37 | |||
38 | For typical desktop use of removable media, you should set the ID to that | ||
39 | of the interactively logged on user, and also specify both the forget and | ||
40 | ignore options. This way the interactive user will always see the files | ||
41 | on the disk as belonging to him. | ||
42 | |||
29 | The remaining are for debugging and disaster recovery: | 43 | The remaining are for debugging and disaster recovery: |
30 | 44 | ||
31 | novrs Skip volume sequence recognition | 45 | novrs Skip volume sequence recognition |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index e56e842847d3..adaa899e5c90 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -230,10 +230,15 @@ only called from a process context (i.e. not from an interrupt handler | |||
230 | or bottom half). | 230 | or bottom half). |
231 | 231 | ||
232 | alloc_inode: this method is called by inode_alloc() to allocate memory | 232 | alloc_inode: this method is called by inode_alloc() to allocate memory |
233 | for struct inode and initialize it. | 233 | for struct inode and initialize it. If this function is not |
234 | defined, a simple 'struct inode' is allocated. Normally | ||
235 | alloc_inode will be used to allocate a larger structure which | ||
236 | contains a 'struct inode' embedded within it. | ||
234 | 237 | ||
235 | destroy_inode: this method is called by destroy_inode() to release | 238 | destroy_inode: this method is called by destroy_inode() to release |
236 | resources allocated for struct inode. | 239 | resources allocated for struct inode. It is only required if |
240 | ->alloc_inode was defined and simply undoes anything done by | ||
241 | ->alloc_inode. | ||
237 | 242 | ||
238 | read_inode: this method is called to read a specific inode from the | 243 | read_inode: this method is called to read a specific inode from the |
239 | mounted filesystem. The i_ino member in the struct inode is | 244 | mounted filesystem. The i_ino member in the struct inode is |
@@ -443,14 +448,81 @@ otherwise noted. | |||
443 | The Address Space Object | 448 | The Address Space Object |
444 | ======================== | 449 | ======================== |
445 | 450 | ||
446 | The address space object is used to identify pages in the page cache. | 451 | The address space object is used to group and manage pages in the page |
447 | 452 | cache. It can be used to keep track of the pages in a file (or | |
453 | anything else) and also track the mapping of sections of the file into | ||
454 | process address spaces. | ||
455 | |||
456 | There are a number of distinct yet related services that an | ||
457 | address-space can provide. These include communicating memory | ||
458 | pressure, page lookup by address, and keeping track of pages tagged as | ||
459 | Dirty or Writeback. | ||
460 | |||
461 | The first can be used independently to the others. The VM can try to | ||
462 | either write dirty pages in order to clean them, or release clean | ||
463 | pages in order to reuse them. To do this it can call the ->writepage | ||
464 | method on dirty pages, and ->releasepage on clean pages with | ||
465 | PagePrivate set. Clean pages without PagePrivate and with no external | ||
466 | references will be released without notice being given to the | ||
467 | address_space. | ||
468 | |||
469 | To achieve this functionality, pages need to be placed on an LRU with | ||
470 | lru_cache_add and mark_page_active needs to be called whenever the | ||
471 | page is used. | ||
472 | |||
473 | Pages are normally kept in a radix tree index by ->index. This tree | ||
474 | maintains information about the PG_Dirty and PG_Writeback status of | ||
475 | each page, so that pages with either of these flags can be found | ||
476 | quickly. | ||
477 | |||
478 | The Dirty tag is primarily used by mpage_writepages - the default | ||
479 | ->writepages method. It uses the tag to find dirty pages to call | ||
480 | ->writepage on. If mpage_writepages is not used (i.e. the address | ||
481 | provides its own ->writepages) , the PAGECACHE_TAG_DIRTY tag is | ||
482 | almost unused. write_inode_now and sync_inode do use it (through | ||
483 | __sync_single_inode) to check if ->writepages has been successful in | ||
484 | writing out the whole address_space. | ||
485 | |||
486 | The Writeback tag is used by filemap*wait* and sync_page* functions, | ||
487 | via wait_on_page_writeback_range, to wait for all writeback to | ||
488 | complete. While waiting ->sync_page (if defined) will be called on | ||
489 | each page that is found to require writeback. | ||
490 | |||
491 | An address_space handler may attach extra information to a page, | ||
492 | typically using the 'private' field in the 'struct page'. If such | ||
493 | information is attached, the PG_Private flag should be set. This will | ||
494 | cause various VM routines to make extra calls into the address_space | ||
495 | handler to deal with that data. | ||
496 | |||
497 | An address space acts as an intermediate between storage and | ||
498 | application. Data is read into the address space a whole page at a | ||
499 | time, and provided to the application either by copying of the page, | ||
500 | or by memory-mapping the page. | ||
501 | Data is written into the address space by the application, and then | ||
502 | written-back to storage typically in whole pages, however the | ||
503 | address_space has finer control of write sizes. | ||
504 | |||
505 | The read process essentially only requires 'readpage'. The write | ||
506 | process is more complicated and uses prepare_write/commit_write or | ||
507 | set_page_dirty to write data into the address_space, and writepage, | ||
508 | sync_page, and writepages to writeback data to storage. | ||
509 | |||
510 | Adding and removing pages to/from an address_space is protected by the | ||
511 | inode's i_mutex. | ||
512 | |||
513 | When data is written to a page, the PG_Dirty flag should be set. It | ||
514 | typically remains set until writepage asks for it to be written. This | ||
515 | should clear PG_Dirty and set PG_Writeback. It can be actually | ||
516 | written at any point after PG_Dirty is clear. Once it is known to be | ||
517 | safe, PG_Writeback is cleared. | ||
518 | |||
519 | Writeback makes use of a writeback_control structure... | ||
448 | 520 | ||
449 | struct address_space_operations | 521 | struct address_space_operations |
450 | ------------------------------- | 522 | ------------------------------- |
451 | 523 | ||
452 | This describes how the VFS can manipulate mapping of a file to page cache in | 524 | This describes how the VFS can manipulate mapping of a file to page cache in |
453 | your filesystem. As of kernel 2.6.13, the following members are defined: | 525 | your filesystem. As of kernel 2.6.16, the following members are defined: |
454 | 526 | ||
455 | struct address_space_operations { | 527 | struct address_space_operations { |
456 | int (*writepage)(struct page *page, struct writeback_control *wbc); | 528 | int (*writepage)(struct page *page, struct writeback_control *wbc); |
@@ -469,47 +541,148 @@ struct address_space_operations { | |||
469 | loff_t offset, unsigned long nr_segs); | 541 | loff_t offset, unsigned long nr_segs); |
470 | struct page* (*get_xip_page)(struct address_space *, sector_t, | 542 | struct page* (*get_xip_page)(struct address_space *, sector_t, |
471 | int); | 543 | int); |
544 | /* migrate the contents of a page to the specified target */ | ||
545 | int (*migratepage) (struct page *, struct page *); | ||
472 | }; | 546 | }; |
473 | 547 | ||
474 | writepage: called by the VM write a dirty page to backing store. | 548 | writepage: called by the VM to write a dirty page to backing store. |
549 | This may happen for data integrity reasons (i.e. 'sync'), or | ||
550 | to free up memory (flush). The difference can be seen in | ||
551 | wbc->sync_mode. | ||
552 | The PG_Dirty flag has been cleared and PageLocked is true. | ||
553 | writepage should start writeout, should set PG_Writeback, | ||
554 | and should make sure the page is unlocked, either synchronously | ||
555 | or asynchronously when the write operation completes. | ||
556 | |||
557 | If wbc->sync_mode is WB_SYNC_NONE, ->writepage doesn't have to | ||
558 | try too hard if there are problems, and may choose to write out | ||
559 | other pages from the mapping if that is easier (e.g. due to | ||
560 | internal dependencies). If it chooses not to start writeout, it | ||
561 | should return AOP_WRITEPAGE_ACTIVATE so that the VM will not keep | ||
562 | calling ->writepage on that page. | ||
563 | |||
564 | See the file "Locking" for more details. | ||
475 | 565 | ||
476 | readpage: called by the VM to read a page from backing store. | 566 | readpage: called by the VM to read a page from backing store. |
567 | The page will be Locked when readpage is called, and should be | ||
568 | unlocked and marked uptodate once the read completes. | ||
569 | If ->readpage discovers that it needs to unlock the page for | ||
570 | some reason, it can do so, and then return AOP_TRUNCATED_PAGE. | ||
571 | In this case, the page will be relocated, relocked and if | ||
572 | that all succeeds, ->readpage will be called again. | ||
477 | 573 | ||
478 | sync_page: called by the VM to notify the backing store to perform all | 574 | sync_page: called by the VM to notify the backing store to perform all |
479 | queued I/O operations for a page. I/O operations for other pages | 575 | queued I/O operations for a page. I/O operations for other pages |
480 | associated with this address_space object may also be performed. | 576 | associated with this address_space object may also be performed. |
481 | 577 | ||
578 | This function is optional and is called only for pages with | ||
579 | PG_Writeback set while waiting for the writeback to complete. | ||
580 | |||
482 | writepages: called by the VM to write out pages associated with the | 581 | writepages: called by the VM to write out pages associated with the |
483 | address_space object. | 582 | address_space object. If wbc->sync_mode is WBC_SYNC_ALL, then |
583 | the writeback_control will specify a range of pages that must be | ||
584 | written out. If it is WBC_SYNC_NONE, then a nr_to_write is given | ||
585 | and that many pages should be written if possible. | ||
586 | If no ->writepages is given, then mpage_writepages is used | ||
587 | instead. This will choose pages from the address space that are | ||
588 | tagged as DIRTY and will pass them to ->writepage. | ||
484 | 589 | ||
485 | set_page_dirty: called by the VM to set a page dirty. | 590 | set_page_dirty: called by the VM to set a page dirty. |
591 | This is particularly needed if an address space attaches | ||
592 | private data to a page, and that data needs to be updated when | ||
593 | a page is dirtied. This is called, for example, when a memory | ||
594 | mapped page gets modified. | ||
595 | If defined, it should set the PageDirty flag, and the | ||
596 | PAGECACHE_TAG_DIRTY tag in the radix tree. | ||
486 | 597 | ||
487 | readpages: called by the VM to read pages associated with the address_space | 598 | readpages: called by the VM to read pages associated with the address_space |
488 | object. | 599 | object. This is essentially just a vector version of |
600 | readpage. Instead of just one page, several pages are | ||
601 | requested. | ||
602 | readpages is only used for read-ahead, so read errors are | ||
603 | ignored. If anything goes wrong, feel free to give up. | ||
489 | 604 | ||
490 | prepare_write: called by the generic write path in VM to set up a write | 605 | prepare_write: called by the generic write path in VM to set up a write |
491 | request for a page. | 606 | request for a page. This indicates to the address space that |
492 | 607 | the given range of bytes is about to be written. The | |
493 | commit_write: called by the generic write path in VM to write page to | 608 | address_space should check that the write will be able to |
494 | its backing store. | 609 | complete, by allocating space if necessary and doing any other |
610 | internal housekeeping. If the write will update parts of | ||
611 | any basic-blocks on storage, then those blocks should be | ||
612 | pre-read (if they haven't been read already) so that the | ||
613 | updated blocks can be written out properly. | ||
614 | The page will be locked. If prepare_write wants to unlock the | ||
615 | page it, like readpage, may do so and return | ||
616 | AOP_TRUNCATED_PAGE. | ||
617 | In this case the prepare_write will be retried one the lock is | ||
618 | regained. | ||
619 | |||
620 | commit_write: If prepare_write succeeds, new data will be copied | ||
621 | into the page and then commit_write will be called. It will | ||
622 | typically update the size of the file (if appropriate) and | ||
623 | mark the inode as dirty, and do any other related housekeeping | ||
624 | operations. It should avoid returning an error if possible - | ||
625 | errors should have been handled by prepare_write. | ||
495 | 626 | ||
496 | bmap: called by the VFS to map a logical block offset within object to | 627 | bmap: called by the VFS to map a logical block offset within object to |
497 | physical block number. This method is use by for the legacy FIBMAP | 628 | physical block number. This method is used by the FIBMAP |
498 | ioctl. Other uses are discouraged. | 629 | ioctl and for working with swap-files. To be able to swap to |
499 | 630 | a file, the file must have a stable mapping to a block | |
500 | invalidatepage: called by the VM on truncate to disassociate a page from its | 631 | device. The swap system does not go through the filesystem |
501 | address_space mapping. | 632 | but instead uses bmap to find out where the blocks in the file |
502 | 633 | are and uses those addresses directly. | |
503 | releasepage: called by the VFS to release filesystem specific metadata from | 634 | |
504 | a page. | 635 | |
505 | 636 | invalidatepage: If a page has PagePrivate set, then invalidatepage | |
506 | direct_IO: called by the VM for direct I/O writes and reads. | 637 | will be called when part or all of the page is to be removed |
638 | from the address space. This generally corresponds to either a | ||
639 | truncation or a complete invalidation of the address space | ||
640 | (in the latter case 'offset' will always be 0). | ||
641 | Any private data associated with the page should be updated | ||
642 | to reflect this truncation. If offset is 0, then | ||
643 | the private data should be released, because the page | ||
644 | must be able to be completely discarded. This may be done by | ||
645 | calling the ->releasepage function, but in this case the | ||
646 | release MUST succeed. | ||
647 | |||
648 | releasepage: releasepage is called on PagePrivate pages to indicate | ||
649 | that the page should be freed if possible. ->releasepage | ||
650 | should remove any private data from the page and clear the | ||
651 | PagePrivate flag. It may also remove the page from the | ||
652 | address_space. If this fails for some reason, it may indicate | ||
653 | failure with a 0 return value. | ||
654 | This is used in two distinct though related cases. The first | ||
655 | is when the VM finds a clean page with no active users and | ||
656 | wants to make it a free page. If ->releasepage succeeds, the | ||
657 | page will be removed from the address_space and become free. | ||
658 | |||
659 | The second case if when a request has been made to invalidate | ||
660 | some or all pages in an address_space. This can happen | ||
661 | through the fadvice(POSIX_FADV_DONTNEED) system call or by the | ||
662 | filesystem explicitly requesting it as nfs and 9fs do (when | ||
663 | they believe the cache may be out of date with storage) by | ||
664 | calling invalidate_inode_pages2(). | ||
665 | If the filesystem makes such a call, and needs to be certain | ||
666 | that all pages are invalidated, then its releasepage will | ||
667 | need to ensure this. Possibly it can clear the PageUptodate | ||
668 | bit if it cannot free private data yet. | ||
669 | |||
670 | direct_IO: called by the generic read/write routines to perform | ||
671 | direct_IO - that is IO requests which bypass the page cache | ||
672 | and transfer data directly between the storage and the | ||
673 | application's address space. | ||
507 | 674 | ||
508 | get_xip_page: called by the VM to translate a block number to a page. | 675 | get_xip_page: called by the VM to translate a block number to a page. |
509 | The page is valid until the corresponding filesystem is unmounted. | 676 | The page is valid until the corresponding filesystem is unmounted. |
510 | Filesystems that want to use execute-in-place (XIP) need to implement | 677 | Filesystems that want to use execute-in-place (XIP) need to implement |
511 | it. An example implementation can be found in fs/ext2/xip.c. | 678 | it. An example implementation can be found in fs/ext2/xip.c. |
512 | 679 | ||
680 | migrate_page: This is used to compact the physical memory usage. | ||
681 | If the VM wants to relocate a page (maybe off a memory card | ||
682 | that is signalling imminent failure) it will pass a new page | ||
683 | and an old page to this function. migrate_page should | ||
684 | transfer any private data across and update any references | ||
685 | that it has to the page. | ||
513 | 686 | ||
514 | The File Object | 687 | The File Object |
515 | =============== | 688 | =============== |
diff --git a/Documentation/firmware_class/firmware_sample_driver.c b/Documentation/firmware_class/firmware_sample_driver.c index d3ad2c24490a..ad3edaba4533 100644 --- a/Documentation/firmware_class/firmware_sample_driver.c +++ b/Documentation/firmware_class/firmware_sample_driver.c | |||
@@ -23,7 +23,6 @@ char __init inkernel_firmware[] = "let's say that this is firmware\n"; | |||
23 | #endif | 23 | #endif |
24 | 24 | ||
25 | static struct device ghost_device = { | 25 | static struct device ghost_device = { |
26 | .name = "Ghost Device", | ||
27 | .bus_id = "ghost0", | 26 | .bus_id = "ghost0", |
28 | }; | 27 | }; |
29 | 28 | ||
@@ -92,7 +91,7 @@ static void sample_probe_async(void) | |||
92 | { | 91 | { |
93 | /* Let's say that I can't sleep */ | 92 | /* Let's say that I can't sleep */ |
94 | int error; | 93 | int error; |
95 | error = request_firmware_nowait (THIS_MODULE, | 94 | error = request_firmware_nowait (THIS_MODULE, FW_ACTION_NOHOTPLUG, |
96 | "sample_driver_fw", &ghost_device, | 95 | "sample_driver_fw", &ghost_device, |
97 | "my device pointer", | 96 | "my device pointer", |
98 | sample_probe_async_cont); | 97 | sample_probe_async_cont); |
diff --git a/Documentation/firmware_class/firmware_sample_firmware_class.c b/Documentation/firmware_class/firmware_sample_firmware_class.c index 57b956aecbc5..9e1b0e4051cd 100644 --- a/Documentation/firmware_class/firmware_sample_firmware_class.c +++ b/Documentation/firmware_class/firmware_sample_firmware_class.c | |||
@@ -172,7 +172,6 @@ static void fw_remove_class_device(struct class_device *class_dev) | |||
172 | static struct class_device *class_dev; | 172 | static struct class_device *class_dev; |
173 | 173 | ||
174 | static struct device my_device = { | 174 | static struct device my_device = { |
175 | .name = "Sample Device", | ||
176 | .bus_id = "my_dev0", | 175 | .bus_id = "my_dev0", |
177 | }; | 176 | }; |
178 | 177 | ||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 44a25f3f51d1..f8cb55c30b0f 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -367,12 +367,17 @@ running once the system is up. | |||
367 | tty<n> Use the virtual console device <n>. | 367 | tty<n> Use the virtual console device <n>. |
368 | 368 | ||
369 | ttyS<n>[,options] | 369 | ttyS<n>[,options] |
370 | ttyUSB0[,options] | ||
370 | Use the specified serial port. The options are of | 371 | Use the specified serial port. The options are of |
371 | the form "bbbbpn", where "bbbb" is the baud rate, | 372 | the form "bbbbpnf", where "bbbb" is the baud rate, |
372 | "p" is parity ("n", "o", or "e"), and "n" is bits. | 373 | "p" is parity ("n", "o", or "e"), "n" is number of |
373 | Default is "9600n8". | 374 | bits, and "f" is flow control ("r" for RTS or |
374 | 375 | omit it). Default is "9600n8". | |
375 | See also Documentation/serial-console.txt. | 376 | |
377 | See Documentation/serial-console.txt for more | ||
378 | information. See | ||
379 | Documentation/networking/netconsole.txt for an | ||
380 | alternative. | ||
376 | 381 | ||
377 | uart,io,<addr>[,options] | 382 | uart,io,<addr>[,options] |
378 | uart,mmio,<addr>[,options] | 383 | uart,mmio,<addr>[,options] |
diff --git a/Documentation/networking/ray_cs.txt b/Documentation/networking/ray_cs.txt index 5427f8c7df95..145d27a52395 100644 --- a/Documentation/networking/ray_cs.txt +++ b/Documentation/networking/ray_cs.txt | |||
@@ -25,7 +25,7 @@ the essid= string parameter is available via the kernel command line. | |||
25 | This will change after the method of sorting out parameters for all | 25 | This will change after the method of sorting out parameters for all |
26 | the PCMCIA drivers is agreed upon. If you must have a built in driver | 26 | the PCMCIA drivers is agreed upon. If you must have a built in driver |
27 | with nondefault parameters, they can be edited in | 27 | with nondefault parameters, they can be edited in |
28 | /usr/src/linux/drivers/net/pcmcia/ray_cs.c. Searching for MODULE_PARM | 28 | /usr/src/linux/drivers/net/pcmcia/ray_cs.c. Searching for module_param |
29 | will find them all. | 29 | will find them all. |
30 | 30 | ||
31 | Information on card services is available at: | 31 | Information on card services is available at: |
diff --git a/Documentation/serial-console.txt b/Documentation/serial-console.txt index 6c689b0df2b8..9a7bc8b3f479 100644 --- a/Documentation/serial-console.txt +++ b/Documentation/serial-console.txt | |||
@@ -17,11 +17,13 @@ The format of this option is: | |||
17 | ttyX for any other virtual console | 17 | ttyX for any other virtual console |
18 | ttySx for a serial port | 18 | ttySx for a serial port |
19 | lp0 for the first parallel port | 19 | lp0 for the first parallel port |
20 | ttyUSB0 for the first USB serial device | ||
20 | 21 | ||
21 | options: depend on the driver. For the serial port this | 22 | options: depend on the driver. For the serial port this |
22 | defines the baudrate/parity/bits of the port, | 23 | defines the baudrate/parity/bits/flow control of |
23 | in the format BBBBPN, where BBBB is the speed, | 24 | the port, in the format BBBBPNF, where BBBB is the |
24 | P is parity (n/o/e), and N is bits. Default is | 25 | speed, P is parity (n/o/e), N is number of bits, |
26 | and F is flow control ('r' for RTS). Default is | ||
25 | 9600n8. The maximum baudrate is 115200. | 27 | 9600n8. The maximum baudrate is 115200. |
26 | 28 | ||
27 | You can specify multiple console= options on the kernel command line. | 29 | You can specify multiple console= options on the kernel command line. |
@@ -45,6 +47,9 @@ become the console. | |||
45 | You will need to create a new device to use /dev/console. The official | 47 | You will need to create a new device to use /dev/console. The official |
46 | /dev/console is now character device 5,1. | 48 | /dev/console is now character device 5,1. |
47 | 49 | ||
50 | (You can also use a network device as a console. See | ||
51 | Documentation/networking/netconsole.txt for information on that.) | ||
52 | |||
48 | Here's an example that will use /dev/ttyS1 (COM2) as the console. | 53 | Here's an example that will use /dev/ttyS1 (COM2) as the console. |
49 | Replace the sample values as needed. | 54 | Replace the sample values as needed. |
50 | 55 | ||
diff --git a/Documentation/sound/oss/Introduction b/Documentation/sound/oss/Introduction index 15d4fb975ac0..f04ba6bb7395 100644 --- a/Documentation/sound/oss/Introduction +++ b/Documentation/sound/oss/Introduction | |||
@@ -69,7 +69,7 @@ are available, for example IRQ, address, DMA. | |||
69 | 69 | ||
70 | Warning, the options for different cards sometime use different names | 70 | Warning, the options for different cards sometime use different names |
71 | for the same or a similar feature (dma1= versus dma16=). As a last | 71 | for the same or a similar feature (dma1= versus dma16=). As a last |
72 | resort, inspect the code (search for MODULE_PARM). | 72 | resort, inspect the code (search for module_param). |
73 | 73 | ||
74 | Notes: | 74 | Notes: |
75 | 75 | ||
diff --git a/Documentation/sound/oss/cs46xx b/Documentation/sound/oss/cs46xx index 88d6cf8b39f3..b54432709863 100644 --- a/Documentation/sound/oss/cs46xx +++ b/Documentation/sound/oss/cs46xx | |||
@@ -88,7 +88,7 @@ parameters. for a copy email: twoller@crystal.cirrus.com | |||
88 | 88 | ||
89 | MODULE_PARMS definitions | 89 | MODULE_PARMS definitions |
90 | ------------------------ | 90 | ------------------------ |
91 | MODULE_PARM(defaultorder, "i"); | 91 | module_param(defaultorder, ulong, 0); |
92 | defaultorder=N | 92 | defaultorder=N |
93 | where N is a value from 1 to 12 | 93 | where N is a value from 1 to 12 |
94 | The buffer order determines the size of the dma buffer for the driver. | 94 | The buffer order determines the size of the dma buffer for the driver. |
@@ -98,18 +98,18 @@ to not underrun the dma buffer as easily. As default, use 32k (order=3) | |||
98 | rather than 64k as some of the games work more responsively. | 98 | rather than 64k as some of the games work more responsively. |
99 | (2^N) * PAGE_SIZE = allocated buffer size | 99 | (2^N) * PAGE_SIZE = allocated buffer size |
100 | 100 | ||
101 | MODULE_PARM(cs_debuglevel, "i"); | 101 | module_param(cs_debuglevel, ulong, 0644); |
102 | MODULE_PARM(cs_debugmask, "i"); | 102 | module_param(cs_debugmask, ulong, 0644); |
103 | cs_debuglevel=N | 103 | cs_debuglevel=N |
104 | cs_debugmask=0xMMMMMMMM | 104 | cs_debugmask=0xMMMMMMMM |
105 | where N is a value from 0 (no debug printfs), to 9 (maximum) | 105 | where N is a value from 0 (no debug printfs), to 9 (maximum) |
106 | 0xMMMMMMMM is a debug mask corresponding to the CS_xxx bits (see driver source). | 106 | 0xMMMMMMMM is a debug mask corresponding to the CS_xxx bits (see driver source). |
107 | 107 | ||
108 | MODULE_PARM(hercules_egpio_disable, "i"); | 108 | module_param(hercules_egpio_disable, ulong, 0); |
109 | hercules_egpio_disable=N | 109 | hercules_egpio_disable=N |
110 | where N is a 0 (enable egpio), or a 1 (disable egpio support) | 110 | where N is a 0 (enable egpio), or a 1 (disable egpio support) |
111 | 111 | ||
112 | MODULE_PARM(initdelay, "i"); | 112 | module_param(initdelay, ulong, 0); |
113 | initdelay=N | 113 | initdelay=N |
114 | This value is used to determine the millescond delay during the initialization | 114 | This value is used to determine the millescond delay during the initialization |
115 | code prior to powering up the PLL. On laptops this value can be used to | 115 | code prior to powering up the PLL. On laptops this value can be used to |
@@ -118,19 +118,19 @@ system is booted under battery power then the mdelay()/udelay() functions fail t | |||
118 | properly delay the required time. Also, if the system is booted under AC power | 118 | properly delay the required time. Also, if the system is booted under AC power |
119 | and then the power removed, the mdelay()/udelay() functions will not delay properly. | 119 | and then the power removed, the mdelay()/udelay() functions will not delay properly. |
120 | 120 | ||
121 | MODULE_PARM(powerdown, "i"); | 121 | module_param(powerdown, ulong, 0); |
122 | powerdown=N | 122 | powerdown=N |
123 | where N is 0 (disable any powerdown of the internal blocks) or 1 (enable powerdown) | 123 | where N is 0 (disable any powerdown of the internal blocks) or 1 (enable powerdown) |
124 | 124 | ||
125 | 125 | ||
126 | MODULE_PARM(external_amp, "i"); | 126 | module_param(external_amp, bool, 0); |
127 | external_amp=1 | 127 | external_amp=1 |
128 | if N is set to 1, then force enabling the EAPD support in the primary AC97 codec. | 128 | if N is set to 1, then force enabling the EAPD support in the primary AC97 codec. |
129 | override the detection logic and force the external amp bit in the AC97 0x26 register | 129 | override the detection logic and force the external amp bit in the AC97 0x26 register |
130 | to be reset (0). EAPD should be 0 for powerup, and 1 for powerdown. The VTB Santa Cruz | 130 | to be reset (0). EAPD should be 0 for powerup, and 1 for powerdown. The VTB Santa Cruz |
131 | card has inverted logic, so there is a special function for these cards. | 131 | card has inverted logic, so there is a special function for these cards. |
132 | 132 | ||
133 | MODULE_PARM(thinkpad, "i"); | 133 | module_param(thinkpad, bool, 0); |
134 | thinkpad=1 | 134 | thinkpad=1 |
135 | if N is set to 1, then force enabling the clkrun functionality. | 135 | if N is set to 1, then force enabling the clkrun functionality. |
136 | Currently, when the part is being used, then clkrun is disabled for the entire system, | 136 | Currently, when the part is being used, then clkrun is disabled for the entire system, |
diff --git a/Documentation/video4linux/CQcam.txt b/Documentation/video4linux/CQcam.txt index e415e3604539..464e4cec94cb 100644 --- a/Documentation/video4linux/CQcam.txt +++ b/Documentation/video4linux/CQcam.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | c-qcam - Connectix Color QuickCam video4linux kernel driver | 1 | c-qcam - Connectix Color QuickCam video4linux kernel driver |
2 | 2 | ||
3 | Copyright (C) 1999 Dave Forrest <drf5n@virginia.edu> | 3 | Copyright (C) 1999 Dave Forrest <drf5n@virginia.edu> |
4 | released under GNU GPL. | 4 | released under GNU GPL. |
5 | 5 | ||
6 | 1999-12-08 Dave Forrest, written with kernel version 2.2.12 in mind | 6 | 1999-12-08 Dave Forrest, written with kernel version 2.2.12 in mind |
7 | 7 | ||
@@ -45,21 +45,21 @@ configuration. The appropriate flags are: | |||
45 | CONFIG_PNP_PARPORT M for autoprobe.o IEEE1284 readback module | 45 | CONFIG_PNP_PARPORT M for autoprobe.o IEEE1284 readback module |
46 | CONFIG_PRINTER_READBACK M for parport_probe.o IEEE1284 readback module | 46 | CONFIG_PRINTER_READBACK M for parport_probe.o IEEE1284 readback module |
47 | CONFIG_VIDEO_DEV M for videodev.o video4linux module | 47 | CONFIG_VIDEO_DEV M for videodev.o video4linux module |
48 | CONFIG_VIDEO_CQCAM M for c-qcam.o Color Quickcam module | 48 | CONFIG_VIDEO_CQCAM M for c-qcam.o Color Quickcam module |
49 | 49 | ||
50 | With these flags, the kernel should compile and install the modules. | 50 | With these flags, the kernel should compile and install the modules. |
51 | To record and monitor the compilation, I use: | 51 | To record and monitor the compilation, I use: |
52 | 52 | ||
53 | (make zlilo ; \ | 53 | (make zlilo ; \ |
54 | make modules; \ | 54 | make modules; \ |
55 | make modules_install ; | 55 | make modules_install ; |
56 | depmod -a ) &>log & | 56 | depmod -a ) &>log & |
57 | less log # then a capital 'F' to watch the progress | 57 | less log # then a capital 'F' to watch the progress |
58 | 58 | ||
59 | But that is my personal preference. | 59 | But that is my personal preference. |
60 | 60 | ||
61 | 2.2 Configuration | 61 | 2.2 Configuration |
62 | 62 | ||
63 | The configuration requires module configuration and device | 63 | The configuration requires module configuration and device |
64 | configuration. I like kmod or kerneld process with the | 64 | configuration. I like kmod or kerneld process with the |
65 | /etc/modprobe.conf file so the modules can automatically load/unload as | 65 | /etc/modprobe.conf file so the modules can automatically load/unload as |
@@ -68,7 +68,7 @@ using MAKEDEV, or need to be created. The following sections detail | |||
68 | these procedures. | 68 | these procedures. |
69 | 69 | ||
70 | 70 | ||
71 | 2.1 Module Configuration | 71 | 2.1 Module Configuration |
72 | 72 | ||
73 | Using modules requires a bit of work to install and pass the | 73 | Using modules requires a bit of work to install and pass the |
74 | parameters. Understand that entries in /etc/modprobe.conf of: | 74 | parameters. Understand that entries in /etc/modprobe.conf of: |
@@ -128,9 +128,9 @@ system (CONFIG_PROC_FS), the parallel printer support | |||
128 | (CONFIG_PRINTER), the IEEE 1284 system,(CONFIG_PRINTER_READBACK), you | 128 | (CONFIG_PRINTER), the IEEE 1284 system,(CONFIG_PRINTER_READBACK), you |
129 | should be able to read some identification from your quickcam with | 129 | should be able to read some identification from your quickcam with |
130 | 130 | ||
131 | modprobe -v parport | 131 | modprobe -v parport |
132 | modprobe -v parport_probe | 132 | modprobe -v parport_probe |
133 | cat /proc/parport/PORTNUMBER/autoprobe | 133 | cat /proc/parport/PORTNUMBER/autoprobe |
134 | Returns: | 134 | Returns: |
135 | CLASS:MEDIA; | 135 | CLASS:MEDIA; |
136 | MODEL:Color QuickCam 2.0; | 136 | MODEL:Color QuickCam 2.0; |
@@ -140,7 +140,7 @@ Returns: | |||
140 | and well. A common problem is that the current driver does not | 140 | and well. A common problem is that the current driver does not |
141 | reliably detect a c-qcam, even though one is attached. In this case, | 141 | reliably detect a c-qcam, even though one is attached. In this case, |
142 | 142 | ||
143 | modprobe -v c-qcam | 143 | modprobe -v c-qcam |
144 | or | 144 | or |
145 | insmod -v c-qcam | 145 | insmod -v c-qcam |
146 | 146 | ||
@@ -152,16 +152,16 @@ video4linux mailing list and archive for more current information. | |||
152 | 3.1 Checklist: | 152 | 3.1 Checklist: |
153 | 153 | ||
154 | Can you get an image? | 154 | Can you get an image? |
155 | v4lgrab >qcam.ppm ; wc qcam.ppm ; xv qcam.ppm | 155 | v4lgrab >qcam.ppm ; wc qcam.ppm ; xv qcam.ppm |
156 | 156 | ||
157 | Is a working c-qcam connected to the port? | 157 | Is a working c-qcam connected to the port? |
158 | grep ^ /proc/parport/?/autoprobe | 158 | grep ^ /proc/parport/?/autoprobe |
159 | 159 | ||
160 | Do the /dev/video* files exist? | 160 | Do the /dev/video* files exist? |
161 | ls -lad /dev/video | 161 | ls -lad /dev/video |
162 | 162 | ||
163 | Is the c-qcam module loaded? | 163 | Is the c-qcam module loaded? |
164 | modprobe -v c-qcam ; lsmod | 164 | modprobe -v c-qcam ; lsmod |
165 | 165 | ||
166 | Does the camera work with alternate programs? cqcam, etc? | 166 | Does the camera work with alternate programs? cqcam, etc? |
167 | 167 | ||
@@ -174,7 +174,7 @@ video4linux mailing list and archive for more current information. | |||
174 | isn't, you might try patching the c-qcam module to add a parport=xxx | 174 | isn't, you might try patching the c-qcam module to add a parport=xxx |
175 | option as in the bw-qcam module so you can specify the parallel port: | 175 | option as in the bw-qcam module so you can specify the parallel port: |
176 | 176 | ||
177 | insmod -v c-qcam parport=0 | 177 | insmod -v c-qcam parport=0 |
178 | 178 | ||
179 | And bypass the detection code, see ../../drivers/char/c-qcam.c and | 179 | And bypass the detection code, see ../../drivers/char/c-qcam.c and |
180 | look for the 'qc_detect' code and call. | 180 | look for the 'qc_detect' code and call. |
@@ -183,12 +183,12 @@ look for the 'qc_detect' code and call. | |||
183 | this work is documented at the video4linux2 site listed below. | 183 | this work is documented at the video4linux2 site listed below. |
184 | 184 | ||
185 | 185 | ||
186 | 9.0 --- A sample program using v4lgrabber, | 186 | 9.0 --- A sample program using v4lgrabber, |
187 | 187 | ||
188 | This program is a simple image grabber that will copy a frame from the | 188 | This program is a simple image grabber that will copy a frame from the |
189 | first video device, /dev/video0 to standard output in portable pixmap | 189 | first video device, /dev/video0 to standard output in portable pixmap |
190 | format (.ppm) Using this like: 'v4lgrab | convert - c-qcam.jpg' | 190 | format (.ppm) Using this like: 'v4lgrab | convert - c-qcam.jpg' |
191 | produced this picture of me at | 191 | produced this picture of me at |
192 | http://mug.sys.virginia.edu/~drf5n/extras/c-qcam.jpg | 192 | http://mug.sys.virginia.edu/~drf5n/extras/c-qcam.jpg |
193 | 193 | ||
194 | -------------------- 8< ---------------- 8< ----------------------------- | 194 | -------------------- 8< ---------------- 8< ----------------------------- |
@@ -202,8 +202,8 @@ produced this picture of me at | |||
202 | * Use as: | 202 | * Use as: |
203 | * v4lgrab >image.ppm | 203 | * v4lgrab >image.ppm |
204 | * | 204 | * |
205 | * Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org> | 205 | * Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org> |
206 | * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c | 206 | * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c |
207 | * with minor modifications (Dave Forrest, drf5n@virginia.edu). | 207 | * with minor modifications (Dave Forrest, drf5n@virginia.edu). |
208 | * | 208 | * |
209 | */ | 209 | */ |
@@ -225,55 +225,55 @@ produced this picture of me at | |||
225 | 225 | ||
226 | #define READ_VIDEO_PIXEL(buf, format, depth, r, g, b) \ | 226 | #define READ_VIDEO_PIXEL(buf, format, depth, r, g, b) \ |
227 | { \ | 227 | { \ |
228 | switch (format) \ | 228 | switch (format) \ |
229 | { \ | 229 | { \ |
230 | case VIDEO_PALETTE_GREY: \ | 230 | case VIDEO_PALETTE_GREY: \ |
231 | switch (depth) \ | 231 | switch (depth) \ |
232 | { \ | 232 | { \ |
233 | case 4: \ | 233 | case 4: \ |
234 | case 6: \ | 234 | case 6: \ |
235 | case 8: \ | 235 | case 8: \ |
236 | (r) = (g) = (b) = (*buf++ << 8);\ | 236 | (r) = (g) = (b) = (*buf++ << 8);\ |
237 | break; \ | 237 | break; \ |
238 | \ | 238 | \ |
239 | case 16: \ | 239 | case 16: \ |
240 | (r) = (g) = (b) = \ | 240 | (r) = (g) = (b) = \ |
241 | *((unsigned short *) buf); \ | 241 | *((unsigned short *) buf); \ |
242 | buf += 2; \ | 242 | buf += 2; \ |
243 | break; \ | 243 | break; \ |
244 | } \ | 244 | } \ |
245 | break; \ | 245 | break; \ |
246 | \ | 246 | \ |
247 | \ | 247 | \ |
248 | case VIDEO_PALETTE_RGB565: \ | 248 | case VIDEO_PALETTE_RGB565: \ |
249 | { \ | 249 | { \ |
250 | unsigned short tmp = *(unsigned short *)buf; \ | 250 | unsigned short tmp = *(unsigned short *)buf; \ |
251 | (r) = tmp&0xF800; \ | 251 | (r) = tmp&0xF800; \ |
252 | (g) = (tmp<<5)&0xFC00; \ | 252 | (g) = (tmp<<5)&0xFC00; \ |
253 | (b) = (tmp<<11)&0xF800; \ | 253 | (b) = (tmp<<11)&0xF800; \ |
254 | buf += 2; \ | 254 | buf += 2; \ |
255 | } \ | 255 | } \ |
256 | break; \ | 256 | break; \ |
257 | \ | 257 | \ |
258 | case VIDEO_PALETTE_RGB555: \ | 258 | case VIDEO_PALETTE_RGB555: \ |
259 | (r) = (buf[0]&0xF8)<<8; \ | 259 | (r) = (buf[0]&0xF8)<<8; \ |
260 | (g) = ((buf[0] << 5 | buf[1] >> 3)&0xF8)<<8; \ | 260 | (g) = ((buf[0] << 5 | buf[1] >> 3)&0xF8)<<8; \ |
261 | (b) = ((buf[1] << 2 ) & 0xF8)<<8; \ | 261 | (b) = ((buf[1] << 2 ) & 0xF8)<<8; \ |
262 | buf += 2; \ | 262 | buf += 2; \ |
263 | break; \ | 263 | break; \ |
264 | \ | 264 | \ |
265 | case VIDEO_PALETTE_RGB24: \ | 265 | case VIDEO_PALETTE_RGB24: \ |
266 | (r) = buf[0] << 8; (g) = buf[1] << 8; \ | 266 | (r) = buf[0] << 8; (g) = buf[1] << 8; \ |
267 | (b) = buf[2] << 8; \ | 267 | (b) = buf[2] << 8; \ |
268 | buf += 3; \ | 268 | buf += 3; \ |
269 | break; \ | 269 | break; \ |
270 | \ | 270 | \ |
271 | default: \ | 271 | default: \ |
272 | fprintf(stderr, \ | 272 | fprintf(stderr, \ |
273 | "Format %d not yet supported\n", \ | 273 | "Format %d not yet supported\n", \ |
274 | format); \ | 274 | format); \ |
275 | } \ | 275 | } \ |
276 | } | 276 | } |
277 | 277 | ||
278 | int get_brightness_adj(unsigned char *image, long size, int *brightness) { | 278 | int get_brightness_adj(unsigned char *image, long size, int *brightness) { |
279 | long i, tot = 0; | 279 | long i, tot = 0; |
@@ -324,40 +324,40 @@ int main(int argc, char ** argv) | |||
324 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | 324 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { |
325 | vpic.depth=6; | 325 | vpic.depth=6; |
326 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | 326 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { |
327 | vpic.depth=4; | 327 | vpic.depth=4; |
328 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | 328 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { |
329 | fprintf(stderr, "Unable to find a supported capture format.\n"); | 329 | fprintf(stderr, "Unable to find a supported capture format.\n"); |
330 | close(fd); | 330 | close(fd); |
331 | exit(1); | 331 | exit(1); |
332 | } | 332 | } |
333 | } | 333 | } |
334 | } | 334 | } |
335 | } else { | 335 | } else { |
336 | vpic.depth=24; | 336 | vpic.depth=24; |
337 | vpic.palette=VIDEO_PALETTE_RGB24; | 337 | vpic.palette=VIDEO_PALETTE_RGB24; |
338 | 338 | ||
339 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | 339 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { |
340 | vpic.palette=VIDEO_PALETTE_RGB565; | 340 | vpic.palette=VIDEO_PALETTE_RGB565; |
341 | vpic.depth=16; | 341 | vpic.depth=16; |
342 | 342 | ||
343 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { | 343 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { |
344 | vpic.palette=VIDEO_PALETTE_RGB555; | 344 | vpic.palette=VIDEO_PALETTE_RGB555; |
345 | vpic.depth=15; | 345 | vpic.depth=15; |
346 | 346 | ||
347 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { | 347 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { |
348 | fprintf(stderr, "Unable to find a supported capture format.\n"); | 348 | fprintf(stderr, "Unable to find a supported capture format.\n"); |
349 | return -1; | 349 | return -1; |
350 | } | 350 | } |
351 | } | 351 | } |
352 | } | 352 | } |
353 | } | 353 | } |
354 | 354 | ||
355 | buffer = malloc(win.width * win.height * bpp); | 355 | buffer = malloc(win.width * win.height * bpp); |
356 | if (!buffer) { | 356 | if (!buffer) { |
357 | fprintf(stderr, "Out of memory.\n"); | 357 | fprintf(stderr, "Out of memory.\n"); |
358 | exit(1); | 358 | exit(1); |
359 | } | 359 | } |
360 | 360 | ||
361 | do { | 361 | do { |
362 | int newbright; | 362 | int newbright; |
363 | read(fd, buffer, win.width * win.height * bpp); | 363 | read(fd, buffer, win.width * win.height * bpp); |
@@ -365,8 +365,8 @@ int main(int argc, char ** argv) | |||
365 | if (f) { | 365 | if (f) { |
366 | vpic.brightness += (newbright << 8); | 366 | vpic.brightness += (newbright << 8); |
367 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { | 367 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { |
368 | perror("VIDIOSPICT"); | 368 | perror("VIDIOSPICT"); |
369 | break; | 369 | break; |
370 | } | 370 | } |
371 | } | 371 | } |
372 | } while (f); | 372 | } while (f); |
@@ -381,7 +381,7 @@ int main(int argc, char ** argv) | |||
381 | fputc(g>>8, stdout); | 381 | fputc(g>>8, stdout); |
382 | fputc(b>>8, stdout); | 382 | fputc(b>>8, stdout); |
383 | } | 383 | } |
384 | 384 | ||
385 | close(fd); | 385 | close(fd); |
386 | return 0; | 386 | return 0; |
387 | } | 387 | } |
diff --git a/Documentation/video4linux/README.cpia b/Documentation/video4linux/README.cpia index c95e7bbc0fdf..19cd3bf24981 100644 --- a/Documentation/video4linux/README.cpia +++ b/Documentation/video4linux/README.cpia | |||
@@ -87,7 +87,7 @@ hardware configuration of the parport. You can give the boot-parameter | |||
87 | at the LILO-prompt or specify it in lilo.conf. I use the following | 87 | at the LILO-prompt or specify it in lilo.conf. I use the following |
88 | append-line in lilo.conf: | 88 | append-line in lilo.conf: |
89 | 89 | ||
90 | append="parport=0x378,7,3" | 90 | append="parport=0x378,7,3" |
91 | 91 | ||
92 | See Documentation/parport.txt for more information about the | 92 | See Documentation/parport.txt for more information about the |
93 | configuration of the parport and the values given above. Do not simply | 93 | configuration of the parport and the values given above. Do not simply |
@@ -175,7 +175,7 @@ THANKS (in no particular order): | |||
175 | - Manuel J. Petit de Gabriel <mpetit@dit.upm.es> for providing help | 175 | - Manuel J. Petit de Gabriel <mpetit@dit.upm.es> for providing help |
176 | with Isabel (http://isabel.dit.upm.es/) | 176 | with Isabel (http://isabel.dit.upm.es/) |
177 | - Bas Huisman <bhuism@cs.utwente.nl> for writing the initial parport code | 177 | - Bas Huisman <bhuism@cs.utwente.nl> for writing the initial parport code |
178 | - Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list | 178 | - Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list |
179 | and maintaining the web-server[3] | 179 | and maintaining the web-server[3] |
180 | - Chris Whiteford <Chris@informinteractive.com> for fixes related to the | 180 | - Chris Whiteford <Chris@informinteractive.com> for fixes related to the |
181 | 1.02 firmware | 181 | 1.02 firmware |
diff --git a/Documentation/video4linux/Zoran b/Documentation/video4linux/Zoran index 52c94bd7dca1..be9f21b84555 100644 --- a/Documentation/video4linux/Zoran +++ b/Documentation/video4linux/Zoran | |||
@@ -28,7 +28,7 @@ Iomega Buz: | |||
28 | * Philips saa7111 TV decoder | 28 | * Philips saa7111 TV decoder |
29 | * Philips saa7185 TV encoder | 29 | * Philips saa7185 TV encoder |
30 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 30 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
31 | videocodec, saa7111, saa7185, zr36060, zr36067 | 31 | videocodec, saa7111, saa7185, zr36060, zr36067 |
32 | Inputs/outputs: Composite and S-video | 32 | Inputs/outputs: Composite and S-video |
33 | Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) | 33 | Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) |
34 | Card number: 7 | 34 | Card number: 7 |
@@ -39,7 +39,7 @@ Linux Media Labs LML33: | |||
39 | * Brooktree bt819 TV decoder | 39 | * Brooktree bt819 TV decoder |
40 | * Brooktree bt856 TV encoder | 40 | * Brooktree bt856 TV encoder |
41 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 41 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
42 | videocodec, bt819, bt856, zr36060, zr36067 | 42 | videocodec, bt819, bt856, zr36060, zr36067 |
43 | Inputs/outputs: Composite and S-video | 43 | Inputs/outputs: Composite and S-video |
44 | Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) | 44 | Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) |
45 | Card number: 5 | 45 | Card number: 5 |
@@ -50,7 +50,7 @@ Linux Media Labs LML33R10: | |||
50 | * Philips saa7114 TV decoder | 50 | * Philips saa7114 TV decoder |
51 | * Analog Devices adv7170 TV encoder | 51 | * Analog Devices adv7170 TV encoder |
52 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 52 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
53 | videocodec, saa7114, adv7170, zr36060, zr36067 | 53 | videocodec, saa7114, adv7170, zr36060, zr36067 |
54 | Inputs/outputs: Composite and S-video | 54 | Inputs/outputs: Composite and S-video |
55 | Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) | 55 | Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) |
56 | Card number: 6 | 56 | Card number: 6 |
@@ -61,7 +61,7 @@ Pinnacle/Miro DC10(new): | |||
61 | * Philips saa7110a TV decoder | 61 | * Philips saa7110a TV decoder |
62 | * Analog Devices adv7176 TV encoder | 62 | * Analog Devices adv7176 TV encoder |
63 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 63 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
64 | videocodec, saa7110, adv7175, zr36060, zr36067 | 64 | videocodec, saa7110, adv7175, zr36060, zr36067 |
65 | Inputs/outputs: Composite, S-video and Internal | 65 | Inputs/outputs: Composite, S-video and Internal |
66 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) | 66 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) |
67 | Card number: 1 | 67 | Card number: 1 |
@@ -84,7 +84,7 @@ Pinnacle/Miro DC10(old): * | |||
84 | * Micronas vpx3220a TV decoder | 84 | * Micronas vpx3220a TV decoder |
85 | * mse3000 TV encoder or Analog Devices adv7176 TV encoder * | 85 | * mse3000 TV encoder or Analog Devices adv7176 TV encoder * |
86 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 86 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
87 | videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067 | 87 | videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067 |
88 | Inputs/outputs: Composite, S-video and Internal | 88 | Inputs/outputs: Composite, S-video and Internal |
89 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) | 89 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) |
90 | Card number: 0 | 90 | Card number: 0 |
@@ -96,7 +96,7 @@ Pinnacle/Miro DC30: * | |||
96 | * Micronas vpx3225d/vpx3220a/vpx3216b TV decoder | 96 | * Micronas vpx3225d/vpx3220a/vpx3216b TV decoder |
97 | * Analog Devices adv7176 TV encoder | 97 | * Analog Devices adv7176 TV encoder |
98 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 98 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
99 | videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067 | 99 | videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067 |
100 | Inputs/outputs: Composite, S-video and Internal | 100 | Inputs/outputs: Composite, S-video and Internal |
101 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) | 101 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) |
102 | Card number: 3 | 102 | Card number: 3 |
@@ -123,11 +123,11 @@ Note: use encoder=X or decoder=X for non-default i2c chips (see i2c-id.h) | |||
123 | 123 | ||
124 | The best know TV standards are NTSC/PAL/SECAM. but for decoding a frame that | 124 | The best know TV standards are NTSC/PAL/SECAM. but for decoding a frame that |
125 | information is not enough. There are several formats of the TV standards. | 125 | information is not enough. There are several formats of the TV standards. |
126 | And not every TV decoder is able to handle every format. Also the every | 126 | And not every TV decoder is able to handle every format. Also the every |
127 | combination is supported by the driver. There are currently 11 different | 127 | combination is supported by the driver. There are currently 11 different |
128 | tv broadcast formats all aver the world. | 128 | tv broadcast formats all aver the world. |
129 | 129 | ||
130 | The CCIR defines parameters needed for broadcasting the signal. | 130 | The CCIR defines parameters needed for broadcasting the signal. |
131 | The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,... | 131 | The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,... |
132 | The CCIR says not much about about the colorsystem used !!! | 132 | The CCIR says not much about about the colorsystem used !!! |
133 | And talking about a colorsystem says not to much about how it is broadcast. | 133 | And talking about a colorsystem says not to much about how it is broadcast. |
@@ -136,18 +136,18 @@ The CCIR standards A,E,F are not used any more. | |||
136 | 136 | ||
137 | When you speak about NTSC, you usually mean the standard: CCIR - M using | 137 | When you speak about NTSC, you usually mean the standard: CCIR - M using |
138 | the NTSC colorsystem which is used in the USA, Japan, Mexico, Canada | 138 | the NTSC colorsystem which is used in the USA, Japan, Mexico, Canada |
139 | and a few others. | 139 | and a few others. |
140 | 140 | ||
141 | When you talk about PAL, you usually mean: CCIR - B/G using the PAL | 141 | When you talk about PAL, you usually mean: CCIR - B/G using the PAL |
142 | colorsystem which is used in many Countries. | 142 | colorsystem which is used in many Countries. |
143 | 143 | ||
144 | When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem | 144 | When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem |
145 | which is used in France, and a few others. | 145 | which is used in France, and a few others. |
146 | 146 | ||
147 | There the other version of SECAM, CCIR - D/K is used in Bulgaria, China, | 147 | There the other version of SECAM, CCIR - D/K is used in Bulgaria, China, |
148 | Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others. | 148 | Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others. |
149 | 149 | ||
150 | The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in | 150 | The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in |
151 | Egypt, Libya, Sri Lanka, Syrain Arab. Rep. | 151 | Egypt, Libya, Sri Lanka, Syrain Arab. Rep. |
152 | 152 | ||
153 | The CCIR - I uses the PAL colorsystem, and is used in Great Britain, Hong Kong, | 153 | The CCIR - I uses the PAL colorsystem, and is used in Great Britain, Hong Kong, |
@@ -158,30 +158,30 @@ and is used in Argentinia, Uruguay, an a few others | |||
158 | 158 | ||
159 | We do not talk about how the audio is broadcast ! | 159 | We do not talk about how the audio is broadcast ! |
160 | 160 | ||
161 | A rather good sites about the TV standards are: | 161 | A rather good sites about the TV standards are: |
162 | http://www.sony.jp/ServiceArea/Voltage_map/ | 162 | http://www.sony.jp/ServiceArea/Voltage_map/ |
163 | http://info.electronicwerkstatt.de/bereiche/fernsehtechnik/frequenzen_und_normen/Fernsehnormen/ | 163 | http://info.electronicwerkstatt.de/bereiche/fernsehtechnik/frequenzen_und_normen/Fernsehnormen/ |
164 | and http://www.cabl.com/restaurant/channel.html | 164 | and http://www.cabl.com/restaurant/channel.html |
165 | 165 | ||
166 | Other weird things around: NTSC 4.43 is a modificated NTSC, which is mainly | 166 | Other weird things around: NTSC 4.43 is a modificated NTSC, which is mainly |
167 | used in PAL VCR's that are able to play back NTSC. PAL 60 seems to be the same | 167 | used in PAL VCR's that are able to play back NTSC. PAL 60 seems to be the same |
168 | as NTSC 4.43 . The Datasheets also talk about NTSC 44, It seems as if it would | 168 | as NTSC 4.43 . The Datasheets also talk about NTSC 44, It seems as if it would |
169 | be the same as NTSC 4.43. | 169 | be the same as NTSC 4.43. |
170 | NTSC Combs seems to be a decoder mode where the decoder uses a comb filter | 170 | NTSC Combs seems to be a decoder mode where the decoder uses a comb filter |
171 | to split coma and luma instead of a Delay line. | 171 | to split coma and luma instead of a Delay line. |
172 | 172 | ||
173 | But I did not defiantly find out what NTSC Comb is. | 173 | But I did not defiantly find out what NTSC Comb is. |
174 | 174 | ||
175 | Philips saa7111 TV decoder | 175 | Philips saa7111 TV decoder |
176 | was introduced in 1997, is used in the BUZ and | 176 | was introduced in 1997, is used in the BUZ and |
177 | can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC N, NTSC 4.43 and SECAM | 177 | can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC N, NTSC 4.43 and SECAM |
178 | 178 | ||
179 | Philips saa7110a TV decoder | 179 | Philips saa7110a TV decoder |
180 | was introduced in 1995, is used in the Pinnacle/Miro DC10(new), DC10+ and | 180 | was introduced in 1995, is used in the Pinnacle/Miro DC10(new), DC10+ and |
181 | can handle: PAL B/G, NTSC M and SECAM | 181 | can handle: PAL B/G, NTSC M and SECAM |
182 | 182 | ||
183 | Philips saa7114 TV decoder | 183 | Philips saa7114 TV decoder |
184 | was introduced in 2000, is used in the LML33R10 and | 184 | was introduced in 2000, is used in the LML33R10 and |
185 | can handle: PAL B/G/D/H/I/N, PAL N, PAL M, NTSC M, NTSC 4.43 and SECAM | 185 | can handle: PAL B/G/D/H/I/N, PAL N, PAL M, NTSC M, NTSC 4.43 and SECAM |
186 | 186 | ||
187 | Brooktree bt819 TV decoder | 187 | Brooktree bt819 TV decoder |
@@ -206,7 +206,7 @@ was introduced in 1996, is used in the BUZ | |||
206 | can generate: PAL B/G, NTSC M | 206 | can generate: PAL B/G, NTSC M |
207 | 207 | ||
208 | Brooktree bt856 TV Encoder | 208 | Brooktree bt856 TV Encoder |
209 | was introduced in 1994, is used in the LML33 | 209 | was introduced in 1994, is used in the LML33 |
210 | can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL-N (Argentina) | 210 | can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL-N (Argentina) |
211 | 211 | ||
212 | Analog Devices adv7170 TV Encoder | 212 | Analog Devices adv7170 TV Encoder |
@@ -221,9 +221,9 @@ ITT mse3000 TV encoder | |||
221 | was introduced in 1991, is used in the DC10 old | 221 | was introduced in 1991, is used in the DC10 old |
222 | can generate: PAL , NTSC , SECAM | 222 | can generate: PAL , NTSC , SECAM |
223 | 223 | ||
224 | The adv717x, should be able to produce PAL N. But you find nothing PAL N | 224 | The adv717x, should be able to produce PAL N. But you find nothing PAL N |
225 | specific in the registers. Seem that you have to reuse a other standard | 225 | specific in the registers. Seem that you have to reuse a other standard |
226 | to generate PAL N, maybe it would work if you use the PAL M settings. | 226 | to generate PAL N, maybe it would work if you use the PAL M settings. |
227 | 227 | ||
228 | ========================== | 228 | ========================== |
229 | 229 | ||
@@ -261,7 +261,7 @@ Here's my experience of using LML33 and Buz on various motherboards: | |||
261 | 261 | ||
262 | VIA MVP3 | 262 | VIA MVP3 |
263 | Forget it. Pointless. Doesn't work. | 263 | Forget it. Pointless. Doesn't work. |
264 | Intel 430FX (Pentium 200) | 264 | Intel 430FX (Pentium 200) |
265 | LML33 perfect, Buz tolerable (3 or 4 frames dropped per movie) | 265 | LML33 perfect, Buz tolerable (3 or 4 frames dropped per movie) |
266 | Intel 440BX (early stepping) | 266 | Intel 440BX (early stepping) |
267 | LML33 tolerable. Buz starting to get annoying (6-10 frames/hour) | 267 | LML33 tolerable. Buz starting to get annoying (6-10 frames/hour) |
@@ -438,52 +438,52 @@ importance of buffer sizes: | |||
438 | > -q 25 -b 128 : 24.655.992 | 438 | > -q 25 -b 128 : 24.655.992 |
439 | > -q 25 -b 256 : 25.859.820 | 439 | > -q 25 -b 256 : 25.859.820 |
440 | 440 | ||
441 | I woke up, and can't go to sleep again. I'll kill some time explaining why | 441 | I woke up, and can't go to sleep again. I'll kill some time explaining why |
442 | this doesn't look strange to me. | 442 | this doesn't look strange to me. |
443 | 443 | ||
444 | Let's do some math using a width of 704 pixels. I'm not sure whether the Buz | 444 | Let's do some math using a width of 704 pixels. I'm not sure whether the Buz |
445 | actually use that number or not, but that's not too important right now. | 445 | actually use that number or not, but that's not too important right now. |
446 | 446 | ||
447 | 704x288 pixels, one field, is 202752 pixels. Divided by 64 pixels per block; | 447 | 704x288 pixels, one field, is 202752 pixels. Divided by 64 pixels per block; |
448 | 3168 blocks per field. Each pixel consist of two bytes; 128 bytes per block; | 448 | 3168 blocks per field. Each pixel consist of two bytes; 128 bytes per block; |
449 | 1024 bits per block. 100% in the new driver mean 1:2 compression; the maximum | 449 | 1024 bits per block. 100% in the new driver mean 1:2 compression; the maximum |
450 | output becomes 512 bits per block. Actually 510, but 512 is simpler to use | 450 | output becomes 512 bits per block. Actually 510, but 512 is simpler to use |
451 | for calculations. | 451 | for calculations. |
452 | 452 | ||
453 | Let's say that we specify d1q50. We thus want 256 bits per block; times 3168 | 453 | Let's say that we specify d1q50. We thus want 256 bits per block; times 3168 |
454 | becomes 811008 bits; 101376 bytes per field. We're talking raw bits and bytes | 454 | becomes 811008 bits; 101376 bytes per field. We're talking raw bits and bytes |
455 | here, so we don't need to do any fancy corrections for bits-per-pixel or such | 455 | here, so we don't need to do any fancy corrections for bits-per-pixel or such |
456 | things. 101376 bytes per field. | 456 | things. 101376 bytes per field. |
457 | 457 | ||
458 | d1 video contains two fields per frame. Those sum up to 202752 bytes per | 458 | d1 video contains two fields per frame. Those sum up to 202752 bytes per |
459 | frame, and one of those frames goes into each buffer. | 459 | frame, and one of those frames goes into each buffer. |
460 | 460 | ||
461 | But wait a second! -b128 gives 128kB buffers! It's not possible to cram | 461 | But wait a second! -b128 gives 128kB buffers! It's not possible to cram |
462 | 202752 bytes of JPEG data into 128kB! | 462 | 202752 bytes of JPEG data into 128kB! |
463 | 463 | ||
464 | This is what the driver notice and automatically compensate for in your | 464 | This is what the driver notice and automatically compensate for in your |
465 | examples. Let's do some math using this information: | 465 | examples. Let's do some math using this information: |
466 | 466 | ||
467 | 128kB is 131072 bytes. In this buffer, we want to store two fields, which | 467 | 128kB is 131072 bytes. In this buffer, we want to store two fields, which |
468 | leaves 65536 bytes for each field. Using 3168 blocks per field, we get | 468 | leaves 65536 bytes for each field. Using 3168 blocks per field, we get |
469 | 20.68686868... available bytes per block; 165 bits. We can't allow the | 469 | 20.68686868... available bytes per block; 165 bits. We can't allow the |
470 | request for 256 bits per block when there's only 165 bits available! The -q50 | 470 | request for 256 bits per block when there's only 165 bits available! The -q50 |
471 | option is silently overridden, and the -b128 option takes precedence, leaving | 471 | option is silently overridden, and the -b128 option takes precedence, leaving |
472 | us with the equivalence of -q32. | 472 | us with the equivalence of -q32. |
473 | 473 | ||
474 | This gives us a data rate of 165 bits per block, which, times 3168, sums up | 474 | This gives us a data rate of 165 bits per block, which, times 3168, sums up |
475 | to 65340 bytes per field, out of the allowed 65536. The current driver has | 475 | to 65340 bytes per field, out of the allowed 65536. The current driver has |
476 | another level of rate limiting; it won't accept -q values that fill more than | 476 | another level of rate limiting; it won't accept -q values that fill more than |
477 | 6/8 of the specified buffers. (I'm not sure why. "Playing it safe" seem to be | 477 | 6/8 of the specified buffers. (I'm not sure why. "Playing it safe" seem to be |
478 | a safe bet. Personally, I think I would have lowered requested-bits-per-block | 478 | a safe bet. Personally, I think I would have lowered requested-bits-per-block |
479 | by one, or something like that.) We can't use 165 bits per block, but have to | 479 | by one, or something like that.) We can't use 165 bits per block, but have to |
480 | lower it again, to 6/8 of the available buffer space: We end up with 124 bits | 480 | lower it again, to 6/8 of the available buffer space: We end up with 124 bits |
481 | per block, the equivalence of -q24. With 128kB buffers, you can't use greater | 481 | per block, the equivalence of -q24. With 128kB buffers, you can't use greater |
482 | than -q24 at -d1. (And PAL, and 704 pixels width...) | 482 | than -q24 at -d1. (And PAL, and 704 pixels width...) |
483 | 483 | ||
484 | The third example is limited to -q24 through the same process. The second | 484 | The third example is limited to -q24 through the same process. The second |
485 | example, using very similar calculations, is limited to -q48. The only | 485 | example, using very similar calculations, is limited to -q48. The only |
486 | example that actually grab at the specified -q value is the last one, which | 486 | example that actually grab at the specified -q value is the last one, which |
487 | is clearly visible, looking at the file size. | 487 | is clearly visible, looking at the file size. |
488 | -- | 488 | -- |
489 | 489 | ||
diff --git a/Documentation/video4linux/bttv/ICs b/Documentation/video4linux/bttv/ICs index 6b7491336967..611315f87c3e 100644 --- a/Documentation/video4linux/bttv/ICs +++ b/Documentation/video4linux/bttv/ICs | |||
@@ -14,13 +14,13 @@ Hauppauge Win/TV pci (version 405): | |||
14 | 14 | ||
15 | Microchip 24LC02B or | 15 | Microchip 24LC02B or |
16 | Philips 8582E2Y: 256 Byte EEPROM with configuration information | 16 | Philips 8582E2Y: 256 Byte EEPROM with configuration information |
17 | I2C 0xa0-0xa1, (24LC02B also responds to 0xa2-0xaf) | 17 | I2C 0xa0-0xa1, (24LC02B also responds to 0xa2-0xaf) |
18 | Philips SAA5246AGP/E: Videotext decoder chip, I2C 0x22-0x23 | 18 | Philips SAA5246AGP/E: Videotext decoder chip, I2C 0x22-0x23 |
19 | TDA9800: sound decoder | 19 | TDA9800: sound decoder |
20 | Winbond W24257AS-35: 32Kx8 CMOS static RAM (Videotext buffer mem) | 20 | Winbond W24257AS-35: 32Kx8 CMOS static RAM (Videotext buffer mem) |
21 | 14052B: analog switch for selection of sound source | 21 | 14052B: analog switch for selection of sound source |
22 | 22 | ||
23 | PAL: | 23 | PAL: |
24 | TDA5737: VHF, hyperband and UHF mixer/oscillator for TV and VCR 3-band tuners | 24 | TDA5737: VHF, hyperband and UHF mixer/oscillator for TV and VCR 3-band tuners |
25 | TSA5522: 1.4 GHz I2C-bus controlled synthesizer, I2C 0xc2-0xc3 | 25 | TSA5522: 1.4 GHz I2C-bus controlled synthesizer, I2C 0xc2-0xc3 |
26 | 26 | ||
diff --git a/Documentation/video4linux/bttv/PROBLEMS b/Documentation/video4linux/bttv/PROBLEMS index 8e31e9e36bf7..2b8b0079f7c7 100644 --- a/Documentation/video4linux/bttv/PROBLEMS +++ b/Documentation/video4linux/bttv/PROBLEMS | |||
@@ -3,7 +3,7 @@ | |||
3 | - Start capturing by pressing "c" or by selecting it via a menu!!! | 3 | - Start capturing by pressing "c" or by selecting it via a menu!!! |
4 | 4 | ||
5 | - The memory of some S3 cards is not recognized right: | 5 | - The memory of some S3 cards is not recognized right: |
6 | 6 | ||
7 | First of all, if you are not using XFree-3.2 or newer, upgrade AT LEAST to | 7 | First of all, if you are not using XFree-3.2 or newer, upgrade AT LEAST to |
8 | XFree-3.2A! This solved the problem for most people. | 8 | XFree-3.2A! This solved the problem for most people. |
9 | 9 | ||
@@ -31,23 +31,23 @@ | |||
31 | (mostly with Trio 64 but also with some others) | 31 | (mostly with Trio 64 but also with some others) |
32 | Get the free demo version of Accelerated X from www.xinside.com and try | 32 | Get the free demo version of Accelerated X from www.xinside.com and try |
33 | bttv with it. bttv seems to work with most S3 cards with Accelerated X. | 33 | bttv with it. bttv seems to work with most S3 cards with Accelerated X. |
34 | 34 | ||
35 | Since I do not know much (better make that almost nothing) about VGA card | 35 | Since I do not know much (better make that almost nothing) about VGA card |
36 | programming I do not know the reason for this. | 36 | programming I do not know the reason for this. |
37 | Looks like XFree does something different when setting up the video memory? | 37 | Looks like XFree does something different when setting up the video memory? |
38 | Maybe somebody can enlighten me? | 38 | Maybe somebody can enlighten me? |
39 | Would be nice if somebody could get this to work with XFree since | 39 | Would be nice if somebody could get this to work with XFree since |
40 | Accelerated X costs more than some of the grabber cards ... | 40 | Accelerated X costs more than some of the grabber cards ... |
41 | 41 | ||
42 | Better linear frame buffer support for S3 cards will probably be in | 42 | Better linear frame buffer support for S3 cards will probably be in |
43 | XFree 4.0. | 43 | XFree 4.0. |
44 | 44 | ||
45 | - Grabbing is not switched off when changing consoles with XFree. | 45 | - Grabbing is not switched off when changing consoles with XFree. |
46 | That's because XFree and some AcceleratedX versions do not send unmap | 46 | That's because XFree and some AcceleratedX versions do not send unmap |
47 | events. | 47 | events. |
48 | 48 | ||
49 | - Some popup windows (e.g. of the window manager) are not refreshed. | 49 | - Some popup windows (e.g. of the window manager) are not refreshed. |
50 | 50 | ||
51 | Disable backing store by starting X with the option "-bs" | 51 | Disable backing store by starting X with the option "-bs" |
52 | 52 | ||
53 | - When using 32 bpp in XFree or 24+8bpp mode in AccelX 3.1 the system | 53 | - When using 32 bpp in XFree or 24+8bpp mode in AccelX 3.1 the system |
diff --git a/Documentation/video4linux/bttv/README.quirks b/Documentation/video4linux/bttv/README.quirks index e8edb87df711..92e03929a6b2 100644 --- a/Documentation/video4linux/bttv/README.quirks +++ b/Documentation/video4linux/bttv/README.quirks | |||
@@ -38,9 +38,9 @@ tolerate. | |||
38 | ------------------------ | 38 | ------------------------ |
39 | 39 | ||
40 | When using the 430FX PCI, the following rules will ensure | 40 | When using the 430FX PCI, the following rules will ensure |
41 | compatibility: | 41 | compatibility: |
42 | 42 | ||
43 | (1) Deassert REQ at the same time as asserting FRAME. | 43 | (1) Deassert REQ at the same time as asserting FRAME. |
44 | (2) Do not reassert REQ to request another bus transaction until after | 44 | (2) Do not reassert REQ to request another bus transaction until after |
45 | finish-ing the previous transaction. | 45 | finish-ing the previous transaction. |
46 | 46 | ||
diff --git a/Documentation/video4linux/bttv/THANKS b/Documentation/video4linux/bttv/THANKS index 2085399da7d4..950aa781c2e9 100644 --- a/Documentation/video4linux/bttv/THANKS +++ b/Documentation/video4linux/bttv/THANKS | |||
@@ -1,6 +1,6 @@ | |||
1 | Many thanks to: | 1 | Many thanks to: |
2 | 2 | ||
3 | - Markus Schroeder <schroedm@uni-duesseldorf.de> for information on the Bt848 | 3 | - Markus Schroeder <schroedm@uni-duesseldorf.de> for information on the Bt848 |
4 | and tuner programming and his control program xtvc. | 4 | and tuner programming and his control program xtvc. |
5 | 5 | ||
6 | - Martin Buck <martin-2.buck@student.uni-ulm.de> for his great Videotext | 6 | - Martin Buck <martin-2.buck@student.uni-ulm.de> for his great Videotext |
@@ -16,7 +16,7 @@ Many thanks to: | |||
16 | - MIRO for providing a free PCTV card and detailed information about the | 16 | - MIRO for providing a free PCTV card and detailed information about the |
17 | components on their cards. (E.g. how the tuner type is detected) | 17 | components on their cards. (E.g. how the tuner type is detected) |
18 | Without their card I could not have debugged the NTSC mode. | 18 | Without their card I could not have debugged the NTSC mode. |
19 | 19 | ||
20 | - Hauppauge for telling how the sound input is selected and what components | 20 | - Hauppauge for telling how the sound input is selected and what components |
21 | they do and will use on their radio cards. | 21 | they do and will use on their radio cards. |
22 | Also many thanks for faxing me the FM1216 data sheet. | 22 | Also many thanks for faxing me the FM1216 data sheet. |
diff --git a/Documentation/video4linux/radiotrack.txt b/Documentation/video4linux/radiotrack.txt index 2b75345f13e3..d1f3ed199186 100644 --- a/Documentation/video4linux/radiotrack.txt +++ b/Documentation/video4linux/radiotrack.txt | |||
@@ -131,17 +131,17 @@ Check Stereo: BASE <-- 0xd8 (current volume, stereo detect, | |||
131 | x=0xff ==> "not stereo", x=0xfd ==> "stereo detected" | 131 | x=0xff ==> "not stereo", x=0xfd ==> "stereo detected" |
132 | 132 | ||
133 | Set Frequency: code = (freq*40) + 10486188 | 133 | Set Frequency: code = (freq*40) + 10486188 |
134 | foreach of the 24 bits in code, | 134 | foreach of the 24 bits in code, |
135 | (from Least to Most Significant): | 135 | (from Least to Most Significant): |
136 | to write a "zero" bit, | 136 | to write a "zero" bit, |
137 | BASE <-- 0x01 (audio mute, no stereo detect, radio | 137 | BASE <-- 0x01 (audio mute, no stereo detect, radio |
138 | disable, "zero" bit phase 1, tuner adjust) | 138 | disable, "zero" bit phase 1, tuner adjust) |
139 | BASE <-- 0x03 (audio mute, no stereo detect, radio | 139 | BASE <-- 0x03 (audio mute, no stereo detect, radio |
140 | disable, "zero" bit phase 2, tuner adjust) | 140 | disable, "zero" bit phase 2, tuner adjust) |
141 | to write a "one" bit, | 141 | to write a "one" bit, |
142 | BASE <-- 0x05 (audio mute, no stereo detect, radio | 142 | BASE <-- 0x05 (audio mute, no stereo detect, radio |
143 | disable, "one" bit phase 1, tuner adjust) | 143 | disable, "one" bit phase 1, tuner adjust) |
144 | BASE <-- 0x07 (audio mute, no stereo detect, radio | 144 | BASE <-- 0x07 (audio mute, no stereo detect, radio |
145 | disable, "one" bit phase 2, tuner adjust) | 145 | disable, "one" bit phase 2, tuner adjust) |
146 | 146 | ||
147 | ---------------------------------------------------------------------------- | 147 | ---------------------------------------------------------------------------- |
diff --git a/Documentation/video4linux/w9966.txt b/Documentation/video4linux/w9966.txt index e7ac33a7eb06..78a651254b84 100644 --- a/Documentation/video4linux/w9966.txt +++ b/Documentation/video4linux/w9966.txt | |||
@@ -26,7 +26,7 @@ is called VIDEO_PALETTE_YUV422 (16 bpp). | |||
26 | A minimal test application (with source) is available from: | 26 | A minimal test application (with source) is available from: |
27 | http://hem.fyristorg.com/mogul/w9966.html | 27 | http://hem.fyristorg.com/mogul/w9966.html |
28 | 28 | ||
29 | The slow framerate is due to missing DMA ECP read support in the | 29 | The slow framerate is due to missing DMA ECP read support in the |
30 | parport drivers. I might add working EPP support later. | 30 | parport drivers. I might add working EPP support later. |
31 | 31 | ||
32 | Good luck! | 32 | Good luck! |
diff --git a/Documentation/video4linux/zr36120.txt b/Documentation/video4linux/zr36120.txt index 5d6357eefde4..ac6d92d01944 100644 --- a/Documentation/video4linux/zr36120.txt +++ b/Documentation/video4linux/zr36120.txt | |||
@@ -2,7 +2,7 @@ Driver for Trust Computer Products Framegrabber, version 0.6.1 | |||
2 | ------ --- ----- -------- -------- ------------ ------- - - - | 2 | ------ --- ----- -------- -------- ------------ ------- - - - |
3 | 3 | ||
4 | - ZORAN ------------------------------------------------------ | 4 | - ZORAN ------------------------------------------------------ |
5 | Author: Pauline Middelink <middelin@polyware.nl> | 5 | Author: Pauline Middelink <middelin@polyware.nl> |
6 | Date: 18 September 1999 | 6 | Date: 18 September 1999 |
7 | Version: 0.6.1 | 7 | Version: 0.6.1 |
8 | 8 | ||
@@ -115,7 +115,7 @@ After making/checking the devices do: | |||
115 | <n> is the cardtype of the card you have. The cardnumber can | 115 | <n> is the cardtype of the card you have. The cardnumber can |
116 | be found in the source of zr36120. Look for tvcards. If your | 116 | be found in the source of zr36120. Look for tvcards. If your |
117 | card is not there, please try if any other card gives some | 117 | card is not there, please try if any other card gives some |
118 | response, and mail me if you got a working tvcard addition. | 118 | response, and mail me if you got a working tvcard addition. |
119 | 119 | ||
120 | PS. <TVCard editors behold!) | 120 | PS. <TVCard editors behold!) |
121 | Dont forget to set video_input to the number of inputs | 121 | Dont forget to set video_input to the number of inputs |