diff options
1206 files changed, 19129 insertions, 8183 deletions
@@ -3786,14 +3786,11 @@ S: The Netherlands | |||
3786 | 3786 | ||
3787 | N: David Woodhouse | 3787 | N: David Woodhouse |
3788 | E: dwmw2@infradead.org | 3788 | E: dwmw2@infradead.org |
3789 | D: ARCnet stuff, Applicom board driver, SO_BINDTODEVICE, | 3789 | D: JFFS2 file system, Memory Technology Device subsystem, |
3790 | D: some Alpha platform porting from 2.0, Memory Technology Devices, | ||
3791 | D: Acquire watchdog timer, PC speaker driver maintenance, | ||
3792 | D: various other stuff that annoyed me by not working. | 3790 | D: various other stuff that annoyed me by not working. |
3793 | S: c/o Red Hat Engineering | 3791 | S: c/o Intel Corporation |
3794 | S: Rustat House | 3792 | S: Pipers Way |
3795 | S: 60 Clifton Road | 3793 | S: Swindon. SN3 1RJ |
3796 | S: Cambridge. CB1 7EG | ||
3797 | S: England | 3794 | S: England |
3798 | 3795 | ||
3799 | N: Chris Wright | 3796 | N: Chris Wright |
diff --git a/Documentation/DMA-API.txt b/Documentation/DMA-API.txt index b462bb149543..52441694fe03 100644 --- a/Documentation/DMA-API.txt +++ b/Documentation/DMA-API.txt | |||
@@ -170,16 +170,15 @@ Returns: 0 if successful and a negative error if not. | |||
170 | u64 | 170 | u64 |
171 | dma_get_required_mask(struct device *dev) | 171 | dma_get_required_mask(struct device *dev) |
172 | 172 | ||
173 | After setting the mask with dma_set_mask(), this API returns the | 173 | This API returns the mask that the platform requires to |
174 | actual mask (within that already set) that the platform actually | 174 | operate efficiently. Usually this means the returned mask |
175 | requires to operate efficiently. Usually this means the returned mask | ||
176 | is the minimum required to cover all of memory. Examining the | 175 | is the minimum required to cover all of memory. Examining the |
177 | required mask gives drivers with variable descriptor sizes the | 176 | required mask gives drivers with variable descriptor sizes the |
178 | opportunity to use smaller descriptors as necessary. | 177 | opportunity to use smaller descriptors as necessary. |
179 | 178 | ||
180 | Requesting the required mask does not alter the current mask. If you | 179 | Requesting the required mask does not alter the current mask. If you |
181 | wish to take advantage of it, you should issue another dma_set_mask() | 180 | wish to take advantage of it, you should issue a dma_set_mask() |
182 | call to lower the mask again. | 181 | call to set the mask to the value returned. |
183 | 182 | ||
184 | 183 | ||
185 | Part Id - Streaming DMA mappings | 184 | Part Id - Streaming DMA mappings |
diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c index cc49400b4af8..7ea231172c85 100644 --- a/Documentation/accounting/getdelays.c +++ b/Documentation/accounting/getdelays.c | |||
@@ -392,6 +392,10 @@ int main(int argc, char *argv[]) | |||
392 | goto err; | 392 | goto err; |
393 | } | 393 | } |
394 | } | 394 | } |
395 | if (!maskset && !tid && !containerset) { | ||
396 | usage(); | ||
397 | goto err; | ||
398 | } | ||
395 | 399 | ||
396 | do { | 400 | do { |
397 | int i; | 401 | int i; |
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt index e33ee74eee77..d9e5d6f41b92 100644 --- a/Documentation/cgroups/cgroups.txt +++ b/Documentation/cgroups/cgroups.txt | |||
@@ -1,7 +1,8 @@ | |||
1 | CGROUPS | 1 | CGROUPS |
2 | ------- | 2 | ------- |
3 | 3 | ||
4 | Written by Paul Menage <menage@google.com> based on Documentation/cpusets.txt | 4 | Written by Paul Menage <menage@google.com> based on |
5 | Documentation/cgroups/cpusets.txt | ||
5 | 6 | ||
6 | Original copyright statements from cpusets.txt: | 7 | Original copyright statements from cpusets.txt: |
7 | Portions Copyright (C) 2004 BULL SA. | 8 | Portions Copyright (C) 2004 BULL SA. |
@@ -68,7 +69,7 @@ On their own, the only use for cgroups is for simple job | |||
68 | tracking. The intention is that other subsystems hook into the generic | 69 | tracking. The intention is that other subsystems hook into the generic |
69 | cgroup support to provide new attributes for cgroups, such as | 70 | cgroup support to provide new attributes for cgroups, such as |
70 | accounting/limiting the resources which processes in a cgroup can | 71 | accounting/limiting the resources which processes in a cgroup can |
71 | access. For example, cpusets (see Documentation/cpusets.txt) allows | 72 | access. For example, cpusets (see Documentation/cgroups/cpusets.txt) allows |
72 | you to associate a set of CPUs and a set of memory nodes with the | 73 | you to associate a set of CPUs and a set of memory nodes with the |
73 | tasks in each cgroup. | 74 | tasks in each cgroup. |
74 | 75 | ||
diff --git a/Documentation/controllers/cpuacct.txt b/Documentation/cgroups/cpuacct.txt index bb775fbe43d7..bb775fbe43d7 100644 --- a/Documentation/controllers/cpuacct.txt +++ b/Documentation/cgroups/cpuacct.txt | |||
diff --git a/Documentation/cpusets.txt b/Documentation/cgroups/cpusets.txt index 5c86c258c791..5c86c258c791 100644 --- a/Documentation/cpusets.txt +++ b/Documentation/cgroups/cpusets.txt | |||
diff --git a/Documentation/controllers/devices.txt b/Documentation/cgroups/devices.txt index 7cc6e6a60672..7cc6e6a60672 100644 --- a/Documentation/controllers/devices.txt +++ b/Documentation/cgroups/devices.txt | |||
diff --git a/Documentation/controllers/memcg_test.txt b/Documentation/cgroups/memcg_test.txt index 08d4d3ea0d79..19533f93b7a2 100644 --- a/Documentation/controllers/memcg_test.txt +++ b/Documentation/cgroups/memcg_test.txt | |||
@@ -6,7 +6,7 @@ Because VM is getting complex (one of reasons is memcg...), memcg's behavior | |||
6 | is complex. This is a document for memcg's internal behavior. | 6 | is complex. This is a document for memcg's internal behavior. |
7 | Please note that implementation details can be changed. | 7 | Please note that implementation details can be changed. |
8 | 8 | ||
9 | (*) Topics on API should be in Documentation/controllers/memory.txt) | 9 | (*) Topics on API should be in Documentation/cgroups/memory.txt) |
10 | 10 | ||
11 | 0. How to record usage ? | 11 | 0. How to record usage ? |
12 | 2 objects are used. | 12 | 2 objects are used. |
diff --git a/Documentation/controllers/memory.txt b/Documentation/cgroups/memory.txt index e1501964df1e..e1501964df1e 100644 --- a/Documentation/controllers/memory.txt +++ b/Documentation/cgroups/memory.txt | |||
diff --git a/Documentation/controllers/resource_counter.txt b/Documentation/cgroups/resource_counter.txt index f196ac1d7d25..f196ac1d7d25 100644 --- a/Documentation/controllers/resource_counter.txt +++ b/Documentation/cgroups/resource_counter.txt | |||
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index d105eb45282a..bbebc3a43ac0 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -1371,292 +1371,8 @@ auto_msgmni default value is 1. | |||
1371 | 2.4 /proc/sys/vm - The virtual memory subsystem | 1371 | 2.4 /proc/sys/vm - The virtual memory subsystem |
1372 | ----------------------------------------------- | 1372 | ----------------------------------------------- |
1373 | 1373 | ||
1374 | The files in this directory can be used to tune the operation of the virtual | 1374 | Please see: Documentation/sysctls/vm.txt for a description of these |
1375 | memory (VM) subsystem of the Linux kernel. | 1375 | entries. |
1376 | |||
1377 | vfs_cache_pressure | ||
1378 | ------------------ | ||
1379 | |||
1380 | Controls the tendency of the kernel to reclaim the memory which is used for | ||
1381 | caching of directory and inode objects. | ||
1382 | |||
1383 | At the default value of vfs_cache_pressure=100 the kernel will attempt to | ||
1384 | reclaim dentries and inodes at a "fair" rate with respect to pagecache and | ||
1385 | swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer | ||
1386 | to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100 | ||
1387 | causes the kernel to prefer to reclaim dentries and inodes. | ||
1388 | |||
1389 | dirty_background_bytes | ||
1390 | ---------------------- | ||
1391 | |||
1392 | Contains the amount of dirty memory at which the pdflush background writeback | ||
1393 | daemon will start writeback. | ||
1394 | |||
1395 | If dirty_background_bytes is written, dirty_background_ratio becomes a function | ||
1396 | of its value (dirty_background_bytes / the amount of dirtyable system memory). | ||
1397 | |||
1398 | dirty_background_ratio | ||
1399 | ---------------------- | ||
1400 | |||
1401 | Contains, as a percentage of the dirtyable system memory (free pages + mapped | ||
1402 | pages + file cache, not including locked pages and HugePages), the number of | ||
1403 | pages at which the pdflush background writeback daemon will start writing out | ||
1404 | dirty data. | ||
1405 | |||
1406 | If dirty_background_ratio is written, dirty_background_bytes becomes a function | ||
1407 | of its value (dirty_background_ratio * the amount of dirtyable system memory). | ||
1408 | |||
1409 | dirty_bytes | ||
1410 | ----------- | ||
1411 | |||
1412 | Contains the amount of dirty memory at which a process generating disk writes | ||
1413 | will itself start writeback. | ||
1414 | |||
1415 | If dirty_bytes is written, dirty_ratio becomes a function of its value | ||
1416 | (dirty_bytes / the amount of dirtyable system memory). | ||
1417 | |||
1418 | dirty_ratio | ||
1419 | ----------- | ||
1420 | |||
1421 | Contains, as a percentage of the dirtyable system memory (free pages + mapped | ||
1422 | pages + file cache, not including locked pages and HugePages), the number of | ||
1423 | pages at which a process which is generating disk writes will itself start | ||
1424 | writing out dirty data. | ||
1425 | |||
1426 | If dirty_ratio is written, dirty_bytes becomes a function of its value | ||
1427 | (dirty_ratio * the amount of dirtyable system memory). | ||
1428 | |||
1429 | dirty_writeback_centisecs | ||
1430 | ------------------------- | ||
1431 | |||
1432 | The pdflush writeback daemons will periodically wake up and write `old' data | ||
1433 | out to disk. This tunable expresses the interval between those wakeups, in | ||
1434 | 100'ths of a second. | ||
1435 | |||
1436 | Setting this to zero disables periodic writeback altogether. | ||
1437 | |||
1438 | dirty_expire_centisecs | ||
1439 | ---------------------- | ||
1440 | |||
1441 | This tunable is used to define when dirty data is old enough to be eligible | ||
1442 | for writeout by the pdflush daemons. It is expressed in 100'ths of a second. | ||
1443 | Data which has been dirty in-memory for longer than this interval will be | ||
1444 | written out next time a pdflush daemon wakes up. | ||
1445 | |||
1446 | highmem_is_dirtyable | ||
1447 | -------------------- | ||
1448 | |||
1449 | Only present if CONFIG_HIGHMEM is set. | ||
1450 | |||
1451 | This defaults to 0 (false), meaning that the ratios set above are calculated | ||
1452 | as a percentage of lowmem only. This protects against excessive scanning | ||
1453 | in page reclaim, swapping and general VM distress. | ||
1454 | |||
1455 | Setting this to 1 can be useful on 32 bit machines where you want to make | ||
1456 | random changes within an MMAPed file that is larger than your available | ||
1457 | lowmem without causing large quantities of random IO. Is is safe if the | ||
1458 | behavior of all programs running on the machine is known and memory will | ||
1459 | not be otherwise stressed. | ||
1460 | |||
1461 | legacy_va_layout | ||
1462 | ---------------- | ||
1463 | |||
1464 | If non-zero, this sysctl disables the new 32-bit mmap mmap layout - the kernel | ||
1465 | will use the legacy (2.4) layout for all processes. | ||
1466 | |||
1467 | lowmem_reserve_ratio | ||
1468 | --------------------- | ||
1469 | |||
1470 | For some specialised workloads on highmem machines it is dangerous for | ||
1471 | the kernel to allow process memory to be allocated from the "lowmem" | ||
1472 | zone. This is because that memory could then be pinned via the mlock() | ||
1473 | system call, or by unavailability of swapspace. | ||
1474 | |||
1475 | And on large highmem machines this lack of reclaimable lowmem memory | ||
1476 | can be fatal. | ||
1477 | |||
1478 | So the Linux page allocator has a mechanism which prevents allocations | ||
1479 | which _could_ use highmem from using too much lowmem. This means that | ||
1480 | a certain amount of lowmem is defended from the possibility of being | ||
1481 | captured into pinned user memory. | ||
1482 | |||
1483 | (The same argument applies to the old 16 megabyte ISA DMA region. This | ||
1484 | mechanism will also defend that region from allocations which could use | ||
1485 | highmem or lowmem). | ||
1486 | |||
1487 | The `lowmem_reserve_ratio' tunable determines how aggressive the kernel is | ||
1488 | in defending these lower zones. | ||
1489 | |||
1490 | If you have a machine which uses highmem or ISA DMA and your | ||
1491 | applications are using mlock(), or if you are running with no swap then | ||
1492 | you probably should change the lowmem_reserve_ratio setting. | ||
1493 | |||
1494 | The lowmem_reserve_ratio is an array. You can see them by reading this file. | ||
1495 | - | ||
1496 | % cat /proc/sys/vm/lowmem_reserve_ratio | ||
1497 | 256 256 32 | ||
1498 | - | ||
1499 | Note: # of this elements is one fewer than number of zones. Because the highest | ||
1500 | zone's value is not necessary for following calculation. | ||
1501 | |||
1502 | But, these values are not used directly. The kernel calculates # of protection | ||
1503 | pages for each zones from them. These are shown as array of protection pages | ||
1504 | in /proc/zoneinfo like followings. (This is an example of x86-64 box). | ||
1505 | Each zone has an array of protection pages like this. | ||
1506 | |||
1507 | - | ||
1508 | Node 0, zone DMA | ||
1509 | pages free 1355 | ||
1510 | min 3 | ||
1511 | low 3 | ||
1512 | high 4 | ||
1513 | : | ||
1514 | : | ||
1515 | numa_other 0 | ||
1516 | protection: (0, 2004, 2004, 2004) | ||
1517 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
1518 | pagesets | ||
1519 | cpu: 0 pcp: 0 | ||
1520 | : | ||
1521 | - | ||
1522 | These protections are added to score to judge whether this zone should be used | ||
1523 | for page allocation or should be reclaimed. | ||
1524 | |||
1525 | In this example, if normal pages (index=2) are required to this DMA zone and | ||
1526 | pages_high is used for watermark, the kernel judges this zone should not be | ||
1527 | used because pages_free(1355) is smaller than watermark + protection[2] | ||
1528 | (4 + 2004 = 2008). If this protection value is 0, this zone would be used for | ||
1529 | normal page requirement. If requirement is DMA zone(index=0), protection[0] | ||
1530 | (=0) is used. | ||
1531 | |||
1532 | zone[i]'s protection[j] is calculated by following expression. | ||
1533 | |||
1534 | (i < j): | ||
1535 | zone[i]->protection[j] | ||
1536 | = (total sums of present_pages from zone[i+1] to zone[j] on the node) | ||
1537 | / lowmem_reserve_ratio[i]; | ||
1538 | (i = j): | ||
1539 | (should not be protected. = 0; | ||
1540 | (i > j): | ||
1541 | (not necessary, but looks 0) | ||
1542 | |||
1543 | The default values of lowmem_reserve_ratio[i] are | ||
1544 | 256 (if zone[i] means DMA or DMA32 zone) | ||
1545 | 32 (others). | ||
1546 | As above expression, they are reciprocal number of ratio. | ||
1547 | 256 means 1/256. # of protection pages becomes about "0.39%" of total present | ||
1548 | pages of higher zones on the node. | ||
1549 | |||
1550 | If you would like to protect more pages, smaller values are effective. | ||
1551 | The minimum value is 1 (1/1 -> 100%). | ||
1552 | |||
1553 | page-cluster | ||
1554 | ------------ | ||
1555 | |||
1556 | page-cluster controls the number of pages which are written to swap in | ||
1557 | a single attempt. The swap I/O size. | ||
1558 | |||
1559 | It is a logarithmic value - setting it to zero means "1 page", setting | ||
1560 | it to 1 means "2 pages", setting it to 2 means "4 pages", etc. | ||
1561 | |||
1562 | The default value is three (eight pages at a time). There may be some | ||
1563 | small benefits in tuning this to a different value if your workload is | ||
1564 | swap-intensive. | ||
1565 | |||
1566 | overcommit_memory | ||
1567 | ----------------- | ||
1568 | |||
1569 | Controls overcommit of system memory, possibly allowing processes | ||
1570 | to allocate (but not use) more memory than is actually available. | ||
1571 | |||
1572 | |||
1573 | 0 - Heuristic overcommit handling. Obvious overcommits of | ||
1574 | address space are refused. Used for a typical system. It | ||
1575 | ensures a seriously wild allocation fails while allowing | ||
1576 | overcommit to reduce swap usage. root is allowed to | ||
1577 | allocate slightly more memory in this mode. This is the | ||
1578 | default. | ||
1579 | |||
1580 | 1 - Always overcommit. Appropriate for some scientific | ||
1581 | applications. | ||
1582 | |||
1583 | 2 - Don't overcommit. The total address space commit | ||
1584 | for the system is not permitted to exceed swap plus a | ||
1585 | configurable percentage (default is 50) of physical RAM. | ||
1586 | Depending on the percentage you use, in most situations | ||
1587 | this means a process will not be killed while attempting | ||
1588 | to use already-allocated memory but will receive errors | ||
1589 | on memory allocation as appropriate. | ||
1590 | |||
1591 | overcommit_ratio | ||
1592 | ---------------- | ||
1593 | |||
1594 | Percentage of physical memory size to include in overcommit calculations | ||
1595 | (see above.) | ||
1596 | |||
1597 | Memory allocation limit = swapspace + physmem * (overcommit_ratio / 100) | ||
1598 | |||
1599 | swapspace = total size of all swap areas | ||
1600 | physmem = size of physical memory in system | ||
1601 | |||
1602 | nr_hugepages and hugetlb_shm_group | ||
1603 | ---------------------------------- | ||
1604 | |||
1605 | nr_hugepages configures number of hugetlb page reserved for the system. | ||
1606 | |||
1607 | hugetlb_shm_group contains group id that is allowed to create SysV shared | ||
1608 | memory segment using hugetlb page. | ||
1609 | |||
1610 | hugepages_treat_as_movable | ||
1611 | -------------------------- | ||
1612 | |||
1613 | This parameter is only useful when kernelcore= is specified at boot time to | ||
1614 | create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages | ||
1615 | are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero | ||
1616 | value written to hugepages_treat_as_movable allows huge pages to be allocated | ||
1617 | from ZONE_MOVABLE. | ||
1618 | |||
1619 | Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge | ||
1620 | pages pool can easily grow or shrink within. Assuming that applications are | ||
1621 | not running that mlock() a lot of memory, it is likely the huge pages pool | ||
1622 | can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value | ||
1623 | into nr_hugepages and triggering page reclaim. | ||
1624 | |||
1625 | laptop_mode | ||
1626 | ----------- | ||
1627 | |||
1628 | laptop_mode is a knob that controls "laptop mode". All the things that are | ||
1629 | controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt. | ||
1630 | |||
1631 | block_dump | ||
1632 | ---------- | ||
1633 | |||
1634 | block_dump enables block I/O debugging when set to a nonzero value. More | ||
1635 | information on block I/O debugging is in Documentation/laptops/laptop-mode.txt. | ||
1636 | |||
1637 | swap_token_timeout | ||
1638 | ------------------ | ||
1639 | |||
1640 | This file contains valid hold time of swap out protection token. The Linux | ||
1641 | VM has token based thrashing control mechanism and uses the token to prevent | ||
1642 | unnecessary page faults in thrashing situation. The unit of the value is | ||
1643 | second. The value would be useful to tune thrashing behavior. | ||
1644 | |||
1645 | drop_caches | ||
1646 | ----------- | ||
1647 | |||
1648 | Writing to this will cause the kernel to drop clean caches, dentries and | ||
1649 | inodes from memory, causing that memory to become free. | ||
1650 | |||
1651 | To free pagecache: | ||
1652 | echo 1 > /proc/sys/vm/drop_caches | ||
1653 | To free dentries and inodes: | ||
1654 | echo 2 > /proc/sys/vm/drop_caches | ||
1655 | To free pagecache, dentries and inodes: | ||
1656 | echo 3 > /proc/sys/vm/drop_caches | ||
1657 | |||
1658 | As this is a non-destructive operation and dirty objects are not freeable, the | ||
1659 | user should run `sync' first. | ||
1660 | 1376 | ||
1661 | 1377 | ||
1662 | 2.5 /proc/sys/dev - Device specific parameters | 1378 | 2.5 /proc/sys/dev - Device specific parameters |
diff --git a/Documentation/hwmon/adt7475 b/Documentation/hwmon/adt7475 new file mode 100644 index 000000000000..a2b1abec850e --- /dev/null +++ b/Documentation/hwmon/adt7475 | |||
@@ -0,0 +1,87 @@ | |||
1 | This describes the interface for the ADT7475 driver: | ||
2 | |||
3 | (there are 4 fans, numbered fan1 to fan4): | ||
4 | |||
5 | fanX_input Read the current speed of the fan (in RPMs) | ||
6 | fanX_min Read/write the minimum speed of the fan. Dropping | ||
7 | below this sets an alarm. | ||
8 | |||
9 | (there are three PWMs, numbered pwm1 to pwm3): | ||
10 | |||
11 | pwmX Read/write the current duty cycle of the PWM. Writes | ||
12 | only have effect when auto mode is turned off (see | ||
13 | below). Range is 0 - 255. | ||
14 | |||
15 | pwmX_enable Fan speed control method: | ||
16 | |||
17 | 0 - No control (fan at full speed) | ||
18 | 1 - Manual fan speed control (using pwm[1-*]) | ||
19 | 2 - Automatic fan speed control | ||
20 | |||
21 | pwmX_auto_channels_temp Select which channels affect this PWM | ||
22 | |||
23 | 1 - TEMP1 controls PWM | ||
24 | 2 - TEMP2 controls PWM | ||
25 | 4 - TEMP3 controls PWM | ||
26 | 6 - TEMP2 and TEMP3 control PWM | ||
27 | 7 - All three inputs control PWM | ||
28 | |||
29 | pwmX_freq Read/write the PWM frequency in Hz. The number | ||
30 | should be one of the following: | ||
31 | |||
32 | 11 Hz | ||
33 | 14 Hz | ||
34 | 22 Hz | ||
35 | 29 Hz | ||
36 | 35 Hz | ||
37 | 44 Hz | ||
38 | 58 Hz | ||
39 | 88 Hz | ||
40 | |||
41 | pwmX_auto_point1_pwm Read/write the minimum PWM duty cycle in automatic mode | ||
42 | |||
43 | pwmX_auto_point2_pwm Read/write the maximum PWM duty cycle in automatic mode | ||
44 | |||
45 | (there are three temperature settings numbered temp1 to temp3): | ||
46 | |||
47 | tempX_input Read the current temperature. The value is in milli | ||
48 | degrees of Celsius. | ||
49 | |||
50 | tempX_max Read/write the upper temperature limit - exceeding this | ||
51 | will cause an alarm. | ||
52 | |||
53 | tempX_min Read/write the lower temperature limit - exceeding this | ||
54 | will cause an alarm. | ||
55 | |||
56 | tempX_offset Read/write the temperature adjustment offset | ||
57 | |||
58 | tempX_crit Read/write the THERM limit for remote1. | ||
59 | |||
60 | tempX_crit_hyst Set the temperature value below crit where the | ||
61 | fans will stay on - this helps drive the temperature | ||
62 | low enough so it doesn't stay near the edge and | ||
63 | cause THERM to keep tripping. | ||
64 | |||
65 | tempX_auto_point1_temp Read/write the minimum temperature where the fans will | ||
66 | turn on in automatic mode. | ||
67 | |||
68 | tempX_auto_point2_temp Read/write the maximum temperature over which the fans | ||
69 | will run in automatic mode. tempX_auto_point1_temp | ||
70 | and tempX_auto_point2_temp together define the | ||
71 | range of automatic control. | ||
72 | |||
73 | tempX_alarm Read a 1 if the max/min alarm is set | ||
74 | tempX_fault Read a 1 if either temp1 or temp3 diode has a fault | ||
75 | |||
76 | (There are two voltage settings, in1 and in2): | ||
77 | |||
78 | inX_input Read the current voltage on VCC. Value is in | ||
79 | millivolts. | ||
80 | |||
81 | inX_min read/write the minimum voltage limit. | ||
82 | Dropping below this causes an alarm. | ||
83 | |||
84 | inX_max read/write the maximum voltage limit. | ||
85 | Exceeding this causes an alarm. | ||
86 | |||
87 | inX_alarm Read a 1 if the max/min alarm is set. | ||
diff --git a/Documentation/hwmon/lis3lv02d b/Documentation/hwmon/lis3lv02d index 65dfb0c0fd67..0fcfc4a7ccdc 100644 --- a/Documentation/hwmon/lis3lv02d +++ b/Documentation/hwmon/lis3lv02d | |||
@@ -13,18 +13,21 @@ Author: | |||
13 | Description | 13 | Description |
14 | ----------- | 14 | ----------- |
15 | 15 | ||
16 | This driver provides support for the accelerometer found in various HP laptops | 16 | This driver provides support for the accelerometer found in various HP |
17 | sporting the feature officially called "HP Mobile Data Protection System 3D" or | 17 | laptops sporting the feature officially called "HP Mobile Data |
18 | "HP 3D DriveGuard". It detect automatically laptops with this sensor. Known models | 18 | Protection System 3D" or "HP 3D DriveGuard". It detect automatically |
19 | (for now the HP 2133, nc6420, nc2510, nc8510, nc84x0, nw9440 and nx9420) will | 19 | laptops with this sensor. Known models (for now the HP 2133, nc6420, |
20 | have their axis automatically oriented on standard way (eg: you can directly | 20 | nc2510, nc8510, nc84x0, nw9440 and nx9420) will have their axis |
21 | play neverball). The accelerometer data is readable via | 21 | automatically oriented on standard way (eg: you can directly play |
22 | neverball). The accelerometer data is readable via | ||
22 | /sys/devices/platform/lis3lv02d. | 23 | /sys/devices/platform/lis3lv02d. |
23 | 24 | ||
24 | Sysfs attributes under /sys/devices/platform/lis3lv02d/: | 25 | Sysfs attributes under /sys/devices/platform/lis3lv02d/: |
25 | position - 3D position that the accelerometer reports. Format: "(x,y,z)" | 26 | position - 3D position that the accelerometer reports. Format: "(x,y,z)" |
26 | calibrate - read: values (x, y, z) that are used as the base for input class device operation. | 27 | calibrate - read: values (x, y, z) that are used as the base for input |
27 | write: forces the base to be recalibrated with the current position. | 28 | class device operation. |
29 | write: forces the base to be recalibrated with the current | ||
30 | position. | ||
28 | rate - reports the sampling rate of the accelerometer device in HZ | 31 | rate - reports the sampling rate of the accelerometer device in HZ |
29 | 32 | ||
30 | This driver also provides an absolute input class device, allowing | 33 | This driver also provides an absolute input class device, allowing |
@@ -39,11 +42,12 @@ the accelerometer are converted into a "standard" organisation of the axes | |||
39 | * When the laptop is horizontal the position reported is about 0 for X and Y | 42 | * When the laptop is horizontal the position reported is about 0 for X and Y |
40 | and a positive value for Z | 43 | and a positive value for Z |
41 | * If the left side is elevated, X increases (becomes positive) | 44 | * If the left side is elevated, X increases (becomes positive) |
42 | * If the front side (where the touchpad is) is elevated, Y decreases (becomes negative) | 45 | * If the front side (where the touchpad is) is elevated, Y decreases |
46 | (becomes negative) | ||
43 | * If the laptop is put upside-down, Z becomes negative | 47 | * If the laptop is put upside-down, Z becomes negative |
44 | 48 | ||
45 | If your laptop model is not recognized (cf "dmesg"), you can send an email to the | 49 | If your laptop model is not recognized (cf "dmesg"), you can send an |
46 | authors to add it to the database. When reporting a new laptop, please include | 50 | email to the authors to add it to the database. When reporting a new |
47 | the output of "dmidecode" plus the value of /sys/devices/platform/lis3lv02d/position | 51 | laptop, please include the output of "dmidecode" plus the value of |
48 | in these four cases. | 52 | /sys/devices/platform/lis3lv02d/position in these four cases. |
49 | 53 | ||
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt index 923f9ddee8f6..f3355b6812df 100644 --- a/Documentation/kbuild/kbuild.txt +++ b/Documentation/kbuild/kbuild.txt | |||
@@ -3,7 +3,7 @@ Environment variables | |||
3 | KCPPFLAGS | 3 | KCPPFLAGS |
4 | -------------------------------------------------- | 4 | -------------------------------------------------- |
5 | Additional options to pass when preprocessing. The preprocessing options | 5 | Additional options to pass when preprocessing. The preprocessing options |
6 | will be used in all cases where kbuild do preprocessing including | 6 | will be used in all cases where kbuild does preprocessing including |
7 | building C files and assembler files. | 7 | building C files and assembler files. |
8 | 8 | ||
9 | KAFLAGS | 9 | KAFLAGS |
@@ -16,7 +16,7 @@ Additional options to the C compiler. | |||
16 | 16 | ||
17 | KBUILD_VERBOSE | 17 | KBUILD_VERBOSE |
18 | -------------------------------------------------- | 18 | -------------------------------------------------- |
19 | Set the kbuild verbosity. Can be assinged same values as "V=...". | 19 | Set the kbuild verbosity. Can be assigned same values as "V=...". |
20 | See make help for the full list. | 20 | See make help for the full list. |
21 | Setting "V=..." takes precedence over KBUILD_VERBOSE. | 21 | Setting "V=..." takes precedence over KBUILD_VERBOSE. |
22 | 22 | ||
@@ -35,14 +35,14 @@ KBUILD_OUTPUT | |||
35 | -------------------------------------------------- | 35 | -------------------------------------------------- |
36 | Specify the output directory when building the kernel. | 36 | Specify the output directory when building the kernel. |
37 | The output directory can also be specificed using "O=...". | 37 | The output directory can also be specificed using "O=...". |
38 | Setting "O=..." takes precedence over KBUILD_OUTPUT | 38 | Setting "O=..." takes precedence over KBUILD_OUTPUT. |
39 | 39 | ||
40 | ARCH | 40 | ARCH |
41 | -------------------------------------------------- | 41 | -------------------------------------------------- |
42 | Set ARCH to the architecture to be built. | 42 | Set ARCH to the architecture to be built. |
43 | In most cases the name of the architecture is the same as the | 43 | In most cases the name of the architecture is the same as the |
44 | directory name found in the arch/ directory. | 44 | directory name found in the arch/ directory. |
45 | But some architectures suach as x86 and sparc has aliases. | 45 | But some architectures such as x86 and sparc have aliases. |
46 | x86: i386 for 32 bit, x86_64 for 64 bit | 46 | x86: i386 for 32 bit, x86_64 for 64 bit |
47 | sparc: sparc for 32 bit, sparc64 for 64 bit | 47 | sparc: sparc for 32 bit, sparc64 for 64 bit |
48 | 48 | ||
@@ -63,7 +63,7 @@ CF is often used on the command-line like this: | |||
63 | INSTALL_PATH | 63 | INSTALL_PATH |
64 | -------------------------------------------------- | 64 | -------------------------------------------------- |
65 | INSTALL_PATH specifies where to place the updated kernel and system map | 65 | INSTALL_PATH specifies where to place the updated kernel and system map |
66 | images. Default is /boot, but you can set it to other values | 66 | images. Default is /boot, but you can set it to other values. |
67 | 67 | ||
68 | 68 | ||
69 | MODLIB | 69 | MODLIB |
@@ -90,7 +90,7 @@ INSTALL_MOD_STRIP will used as the options to the strip command. | |||
90 | 90 | ||
91 | INSTALL_FW_PATH | 91 | INSTALL_FW_PATH |
92 | -------------------------------------------------- | 92 | -------------------------------------------------- |
93 | INSTALL_FW_PATH specify where to install the firmware blobs. | 93 | INSTALL_FW_PATH specifies where to install the firmware blobs. |
94 | The default value is: | 94 | The default value is: |
95 | 95 | ||
96 | $(INSTALL_MOD_PATH)/lib/firmware | 96 | $(INSTALL_MOD_PATH)/lib/firmware |
@@ -99,7 +99,7 @@ The value can be overridden in which case the default value is ignored. | |||
99 | 99 | ||
100 | INSTALL_HDR_PATH | 100 | INSTALL_HDR_PATH |
101 | -------------------------------------------------- | 101 | -------------------------------------------------- |
102 | INSTALL_HDR_PATH specify where to install user space headers when | 102 | INSTALL_HDR_PATH specifies where to install user space headers when |
103 | executing "make headers_*". | 103 | executing "make headers_*". |
104 | The default value is: | 104 | The default value is: |
105 | 105 | ||
@@ -112,22 +112,23 @@ The value can be overridden in which case the default value is ignored. | |||
112 | 112 | ||
113 | KBUILD_MODPOST_WARN | 113 | KBUILD_MODPOST_WARN |
114 | -------------------------------------------------- | 114 | -------------------------------------------------- |
115 | KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined | 115 | KBUILD_MODPOST_WARN can be set to avoid errors in case of undefined |
116 | symbols in the final module linking stage. | 116 | symbols in the final module linking stage. It changes such errors |
117 | into warnings. | ||
117 | 118 | ||
118 | KBUILD_MODPOST_FINAL | 119 | KBUILD_MODPOST_NOFINAL |
119 | -------------------------------------------------- | 120 | -------------------------------------------------- |
120 | KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. | 121 | KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. |
121 | This is solely usefull to speed up test compiles. | 122 | This is solely useful to speed up test compiles. |
122 | 123 | ||
123 | KBUILD_EXTRA_SYMBOLS | 124 | KBUILD_EXTRA_SYMBOLS |
124 | -------------------------------------------------- | 125 | -------------------------------------------------- |
125 | For modules use symbols from another modules. | 126 | For modules that use symbols from other modules. |
126 | See more details in modules.txt. | 127 | See more details in modules.txt. |
127 | 128 | ||
128 | ALLSOURCE_ARCHS | 129 | ALLSOURCE_ARCHS |
129 | -------------------------------------------------- | 130 | -------------------------------------------------- |
130 | For tags/TAGS/cscope targets, you can specify more than one archs | 131 | For tags/TAGS/cscope targets, you can specify more than one arch |
131 | to be included in the databases, separated by blankspace. e.g. | 132 | to be included in the databases, separated by blank space. E.g.: |
132 | 133 | ||
133 | $ make ALLSOURCE_ARCHS="x86 mips arm" tags | 134 | $ make ALLSOURCE_ARCHS="x86 mips arm" tags |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 8511d3532c27..d8362cf9909e 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -577,9 +577,6 @@ and is between 256 and 4096 characters. It is defined in the file | |||
577 | a memory unit (amount[KMG]). See also | 577 | a memory unit (amount[KMG]). See also |
578 | Documentation/kdump/kdump.txt for a example. | 578 | Documentation/kdump/kdump.txt for a example. |
579 | 579 | ||
580 | cs4232= [HW,OSS] | ||
581 | Format: <io>,<irq>,<dma>,<dma2>,<mpuio>,<mpuirq> | ||
582 | |||
583 | cs89x0_dma= [HW,NET] | 580 | cs89x0_dma= [HW,NET] |
584 | Format: <dma> | 581 | Format: <dma> |
585 | 582 | ||
@@ -732,10 +729,6 @@ and is between 256 and 4096 characters. It is defined in the file | |||
732 | Default value is 0. | 729 | Default value is 0. |
733 | Value can be changed at runtime via /selinux/enforce. | 730 | Value can be changed at runtime via /selinux/enforce. |
734 | 731 | ||
735 | es1371= [HW,OSS] | ||
736 | Format: <spdif>,[<nomix>,[<amplifier>]] | ||
737 | See also header of sound/oss/es1371.c. | ||
738 | |||
739 | ether= [HW,NET] Ethernet cards parameters | 732 | ether= [HW,NET] Ethernet cards parameters |
740 | This option is obsoleted by the "netdev=" option, which | 733 | This option is obsoleted by the "netdev=" option, which |
741 | has equivalent usage. See its documentation for details. | 734 | has equivalent usage. See its documentation for details. |
diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt index 898b4987bb80..41bc99fa1884 100644 --- a/Documentation/laptops/thinkpad-acpi.txt +++ b/Documentation/laptops/thinkpad-acpi.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | ThinkPad ACPI Extras Driver | 1 | ThinkPad ACPI Extras Driver |
2 | 2 | ||
3 | Version 0.21 | 3 | Version 0.22 |
4 | May 29th, 2008 | 4 | November 23rd, 2008 |
5 | 5 | ||
6 | Borislav Deianov <borislav@users.sf.net> | 6 | Borislav Deianov <borislav@users.sf.net> |
7 | Henrique de Moraes Holschuh <hmh@hmh.eng.br> | 7 | Henrique de Moraes Holschuh <hmh@hmh.eng.br> |
@@ -16,7 +16,8 @@ supported by the generic Linux ACPI drivers. | |||
16 | This driver used to be named ibm-acpi until kernel 2.6.21 and release | 16 | This driver used to be named ibm-acpi until kernel 2.6.21 and release |
17 | 0.13-20070314. It used to be in the drivers/acpi tree, but it was | 17 | 0.13-20070314. It used to be in the drivers/acpi tree, but it was |
18 | moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel | 18 | moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel |
19 | 2.6.22, and release 0.14. | 19 | 2.6.22, and release 0.14. It was moved to drivers/platform/x86 for |
20 | kernel 2.6.29 and release 0.22. | ||
20 | 21 | ||
21 | The driver is named "thinkpad-acpi". In some places, like module | 22 | The driver is named "thinkpad-acpi". In some places, like module |
22 | names, "thinkpad_acpi" is used because of userspace issues. | 23 | names, "thinkpad_acpi" is used because of userspace issues. |
@@ -1412,6 +1413,24 @@ Sysfs notes: | |||
1412 | rfkill controller switch "tpacpi_wwan_sw": refer to | 1413 | rfkill controller switch "tpacpi_wwan_sw": refer to |
1413 | Documentation/rfkill.txt for details. | 1414 | Documentation/rfkill.txt for details. |
1414 | 1415 | ||
1416 | EXPERIMENTAL: UWB | ||
1417 | ----------------- | ||
1418 | |||
1419 | This feature is marked EXPERIMENTAL because it has not been extensively | ||
1420 | tested and validated in various ThinkPad models yet. The feature may not | ||
1421 | work as expected. USE WITH CAUTION! To use this feature, you need to supply | ||
1422 | the experimental=1 parameter when loading the module. | ||
1423 | |||
1424 | sysfs rfkill class: switch "tpacpi_uwb_sw" | ||
1425 | |||
1426 | This feature exports an rfkill controller for the UWB device, if one is | ||
1427 | present and enabled in the BIOS. | ||
1428 | |||
1429 | Sysfs notes: | ||
1430 | |||
1431 | rfkill controller switch "tpacpi_uwb_sw": refer to | ||
1432 | Documentation/rfkill.txt for details. | ||
1433 | |||
1415 | Multiple Commands, Module Parameters | 1434 | Multiple Commands, Module Parameters |
1416 | ------------------------------------ | 1435 | ------------------------------------ |
1417 | 1436 | ||
diff --git a/Documentation/networking/netconsole.txt b/Documentation/networking/netconsole.txt index 3c2f2b328638..8d022073e3ef 100644 --- a/Documentation/networking/netconsole.txt +++ b/Documentation/networking/netconsole.txt | |||
@@ -51,7 +51,8 @@ Built-in netconsole starts immediately after the TCP stack is | |||
51 | initialized and attempts to bring up the supplied dev at the supplied | 51 | initialized and attempts to bring up the supplied dev at the supplied |
52 | address. | 52 | address. |
53 | 53 | ||
54 | The remote host can run either 'netcat -u -l -p <port>' or syslogd. | 54 | The remote host can run either 'netcat -u -l -p <port>', |
55 | 'nc -l -u <port>' or syslogd. | ||
55 | 56 | ||
56 | Dynamic reconfiguration: | 57 | Dynamic reconfiguration: |
57 | ======================== | 58 | ======================== |
diff --git a/Documentation/scheduler/sched-design-CFS.txt b/Documentation/scheduler/sched-design-CFS.txt index 8398ca4ff4ed..6f33593e59e2 100644 --- a/Documentation/scheduler/sched-design-CFS.txt +++ b/Documentation/scheduler/sched-design-CFS.txt | |||
@@ -231,7 +231,7 @@ CPU bandwidth control purposes: | |||
231 | 231 | ||
232 | This options needs CONFIG_CGROUPS to be defined, and lets the administrator | 232 | This options needs CONFIG_CGROUPS to be defined, and lets the administrator |
233 | create arbitrary groups of tasks, using the "cgroup" pseudo filesystem. See | 233 | create arbitrary groups of tasks, using the "cgroup" pseudo filesystem. See |
234 | Documentation/cgroups.txt for more information about this filesystem. | 234 | Documentation/cgroups/cgroups.txt for more information about this filesystem. |
235 | 235 | ||
236 | Only one of these options to group tasks can be chosen and not both. | 236 | Only one of these options to group tasks can be chosen and not both. |
237 | 237 | ||
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index 4b7ac21ea9eb..0f5d26bea80f 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -275,7 +275,8 @@ STAC9200 | |||
275 | dell-m25 Dell Inspiron E1505n | 275 | dell-m25 Dell Inspiron E1505n |
276 | dell-m26 Dell Inspiron 1501 | 276 | dell-m26 Dell Inspiron 1501 |
277 | dell-m27 Dell Inspiron E1705/9400 | 277 | dell-m27 Dell Inspiron E1705/9400 |
278 | gateway Gateway laptops with EAPD control | 278 | gateway-m4 Gateway laptops with EAPD control |
279 | gateway-m4-2 Gateway laptops with EAPD control | ||
279 | panasonic Panasonic CF-74 | 280 | panasonic Panasonic CF-74 |
280 | 281 | ||
281 | STAC9205/9254 | 282 | STAC9205/9254 |
@@ -302,6 +303,7 @@ STAC9220/9221 | |||
302 | macbook-pro Intel Mac Book Pro 2nd generation (eq. type 3) | 303 | macbook-pro Intel Mac Book Pro 2nd generation (eq. type 3) |
303 | imac-intel Intel iMac (eq. type 2) | 304 | imac-intel Intel iMac (eq. type 2) |
304 | imac-intel-20 Intel iMac (newer version) (eq. type 3) | 305 | imac-intel-20 Intel iMac (newer version) (eq. type 3) |
306 | ecs202 ECS/PC chips | ||
305 | dell-d81 Dell (unknown) | 307 | dell-d81 Dell (unknown) |
306 | dell-d82 Dell (unknown) | 308 | dell-d82 Dell (unknown) |
307 | dell-m81 Dell (unknown) | 309 | dell-m81 Dell (unknown) |
@@ -310,9 +312,13 @@ STAC9220/9221 | |||
310 | STAC9202/9250/9251 | 312 | STAC9202/9250/9251 |
311 | ================== | 313 | ================== |
312 | ref Reference board, base config | 314 | ref Reference board, base config |
315 | m1 Some Gateway MX series laptops (NX560XL) | ||
316 | m1-2 Some Gateway MX series laptops (MX6453) | ||
317 | m2 Some Gateway MX series laptops (M255) | ||
313 | m2-2 Some Gateway MX series laptops | 318 | m2-2 Some Gateway MX series laptops |
319 | m3 Some Gateway MX series laptops | ||
320 | m5 Some Gateway MX series laptops (MP6954) | ||
314 | m6 Some Gateway NX series laptops | 321 | m6 Some Gateway NX series laptops |
315 | pa6 Gateway NX860 series | ||
316 | 322 | ||
317 | STAC9227/9228/9229/927x | 323 | STAC9227/9228/9229/927x |
318 | ======================= | 324 | ======================= |
@@ -329,6 +335,7 @@ STAC92HD71B* | |||
329 | dell-m4-1 Dell desktops | 335 | dell-m4-1 Dell desktops |
330 | dell-m4-2 Dell desktops | 336 | dell-m4-2 Dell desktops |
331 | dell-m4-3 Dell desktops | 337 | dell-m4-3 Dell desktops |
338 | hp-m4 HP dv laptops | ||
332 | 339 | ||
333 | STAC92HD73* | 340 | STAC92HD73* |
334 | =========== | 341 | =========== |
@@ -337,10 +344,12 @@ STAC92HD73* | |||
337 | dell-m6-amic Dell desktops/laptops with analog mics | 344 | dell-m6-amic Dell desktops/laptops with analog mics |
338 | dell-m6-dmic Dell desktops/laptops with digital mics | 345 | dell-m6-dmic Dell desktops/laptops with digital mics |
339 | dell-m6 Dell desktops/laptops with both type of mics | 346 | dell-m6 Dell desktops/laptops with both type of mics |
347 | dell-eq Dell desktops/laptops | ||
340 | 348 | ||
341 | STAC92HD83* | 349 | STAC92HD83* |
342 | =========== | 350 | =========== |
343 | ref Reference board | 351 | ref Reference board |
352 | mic-ref Reference board with power managment for ports | ||
344 | 353 | ||
345 | STAC9872 | 354 | STAC9872 |
346 | ======== | 355 | ======== |
diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt index a3415070bcac..3197fc83bc51 100644 --- a/Documentation/sysctl/vm.txt +++ b/Documentation/sysctl/vm.txt | |||
@@ -1,12 +1,13 @@ | |||
1 | Documentation for /proc/sys/vm/* kernel version 2.2.10 | 1 | Documentation for /proc/sys/vm/* kernel version 2.6.29 |
2 | (c) 1998, 1999, Rik van Riel <riel@nl.linux.org> | 2 | (c) 1998, 1999, Rik van Riel <riel@nl.linux.org> |
3 | (c) 2008 Peter W. Morreale <pmorreale@novell.com> | ||
3 | 4 | ||
4 | For general info and legal blurb, please look in README. | 5 | For general info and legal blurb, please look in README. |
5 | 6 | ||
6 | ============================================================== | 7 | ============================================================== |
7 | 8 | ||
8 | This file contains the documentation for the sysctl files in | 9 | This file contains the documentation for the sysctl files in |
9 | /proc/sys/vm and is valid for Linux kernel version 2.2. | 10 | /proc/sys/vm and is valid for Linux kernel version 2.6.29. |
10 | 11 | ||
11 | The files in this directory can be used to tune the operation | 12 | The files in this directory can be used to tune the operation |
12 | of the virtual memory (VM) subsystem of the Linux kernel and | 13 | of the virtual memory (VM) subsystem of the Linux kernel and |
@@ -16,180 +17,274 @@ Default values and initialization routines for most of these | |||
16 | files can be found in mm/swap.c. | 17 | files can be found in mm/swap.c. |
17 | 18 | ||
18 | Currently, these files are in /proc/sys/vm: | 19 | Currently, these files are in /proc/sys/vm: |
19 | - overcommit_memory | 20 | |
20 | - page-cluster | 21 | - block_dump |
21 | - dirty_ratio | 22 | - dirty_background_bytes |
22 | - dirty_background_ratio | 23 | - dirty_background_ratio |
24 | - dirty_bytes | ||
23 | - dirty_expire_centisecs | 25 | - dirty_expire_centisecs |
26 | - dirty_ratio | ||
24 | - dirty_writeback_centisecs | 27 | - dirty_writeback_centisecs |
25 | - highmem_is_dirtyable (only if CONFIG_HIGHMEM set) | 28 | - drop_caches |
29 | - hugepages_treat_as_movable | ||
30 | - hugetlb_shm_group | ||
31 | - laptop_mode | ||
32 | - legacy_va_layout | ||
33 | - lowmem_reserve_ratio | ||
26 | - max_map_count | 34 | - max_map_count |
27 | - min_free_kbytes | 35 | - min_free_kbytes |
28 | - laptop_mode | ||
29 | - block_dump | ||
30 | - drop-caches | ||
31 | - zone_reclaim_mode | ||
32 | - min_unmapped_ratio | ||
33 | - min_slab_ratio | 36 | - min_slab_ratio |
34 | - panic_on_oom | 37 | - min_unmapped_ratio |
35 | - oom_dump_tasks | 38 | - mmap_min_addr |
36 | - oom_kill_allocating_task | ||
37 | - mmap_min_address | ||
38 | - numa_zonelist_order | ||
39 | - nr_hugepages | 39 | - nr_hugepages |
40 | - nr_overcommit_hugepages | 40 | - nr_overcommit_hugepages |
41 | - nr_trim_pages (only if CONFIG_MMU=n) | 41 | - nr_pdflush_threads |
42 | - nr_trim_pages (only if CONFIG_MMU=n) | ||
43 | - numa_zonelist_order | ||
44 | - oom_dump_tasks | ||
45 | - oom_kill_allocating_task | ||
46 | - overcommit_memory | ||
47 | - overcommit_ratio | ||
48 | - page-cluster | ||
49 | - panic_on_oom | ||
50 | - percpu_pagelist_fraction | ||
51 | - stat_interval | ||
52 | - swappiness | ||
53 | - vfs_cache_pressure | ||
54 | - zone_reclaim_mode | ||
55 | |||
42 | 56 | ||
43 | ============================================================== | 57 | ============================================================== |
44 | 58 | ||
45 | dirty_bytes, dirty_ratio, dirty_background_bytes, | 59 | block_dump |
46 | dirty_background_ratio, dirty_expire_centisecs, | ||
47 | dirty_writeback_centisecs, highmem_is_dirtyable, | ||
48 | vfs_cache_pressure, laptop_mode, block_dump, swap_token_timeout, | ||
49 | drop-caches, hugepages_treat_as_movable: | ||
50 | 60 | ||
51 | See Documentation/filesystems/proc.txt | 61 | block_dump enables block I/O debugging when set to a nonzero value. More |
62 | information on block I/O debugging is in Documentation/laptops/laptop-mode.txt. | ||
52 | 63 | ||
53 | ============================================================== | 64 | ============================================================== |
54 | 65 | ||
55 | overcommit_memory: | 66 | dirty_background_bytes |
56 | 67 | ||
57 | This value contains a flag that enables memory overcommitment. | 68 | Contains the amount of dirty memory at which the pdflush background writeback |
69 | daemon will start writeback. | ||
58 | 70 | ||
59 | When this flag is 0, the kernel attempts to estimate the amount | 71 | If dirty_background_bytes is written, dirty_background_ratio becomes a function |
60 | of free memory left when userspace requests more memory. | 72 | of its value (dirty_background_bytes / the amount of dirtyable system memory). |
61 | 73 | ||
62 | When this flag is 1, the kernel pretends there is always enough | 74 | ============================================================== |
63 | memory until it actually runs out. | ||
64 | 75 | ||
65 | When this flag is 2, the kernel uses a "never overcommit" | 76 | dirty_background_ratio |
66 | policy that attempts to prevent any overcommit of memory. | ||
67 | 77 | ||
68 | This feature can be very useful because there are a lot of | 78 | Contains, as a percentage of total system memory, the number of pages at which |
69 | programs that malloc() huge amounts of memory "just-in-case" | 79 | the pdflush background writeback daemon will start writing out dirty data. |
70 | and don't use much of it. | ||
71 | 80 | ||
72 | The default value is 0. | 81 | ============================================================== |
73 | 82 | ||
74 | See Documentation/vm/overcommit-accounting and | 83 | dirty_bytes |
75 | security/commoncap.c::cap_vm_enough_memory() for more information. | 84 | |
85 | Contains the amount of dirty memory at which a process generating disk writes | ||
86 | will itself start writeback. | ||
87 | |||
88 | If dirty_bytes is written, dirty_ratio becomes a function of its value | ||
89 | (dirty_bytes / the amount of dirtyable system memory). | ||
76 | 90 | ||
77 | ============================================================== | 91 | ============================================================== |
78 | 92 | ||
79 | overcommit_ratio: | 93 | dirty_expire_centisecs |
80 | 94 | ||
81 | When overcommit_memory is set to 2, the committed address | 95 | This tunable is used to define when dirty data is old enough to be eligible |
82 | space is not permitted to exceed swap plus this percentage | 96 | for writeout by the pdflush daemons. It is expressed in 100'ths of a second. |
83 | of physical RAM. See above. | 97 | Data which has been dirty in-memory for longer than this interval will be |
98 | written out next time a pdflush daemon wakes up. | ||
99 | |||
100 | ============================================================== | ||
101 | |||
102 | dirty_ratio | ||
103 | |||
104 | Contains, as a percentage of total system memory, the number of pages at which | ||
105 | a process which is generating disk writes will itself start writing out dirty | ||
106 | data. | ||
84 | 107 | ||
85 | ============================================================== | 108 | ============================================================== |
86 | 109 | ||
87 | page-cluster: | 110 | dirty_writeback_centisecs |
88 | 111 | ||
89 | The Linux VM subsystem avoids excessive disk seeks by reading | 112 | The pdflush writeback daemons will periodically wake up and write `old' data |
90 | multiple pages on a page fault. The number of pages it reads | 113 | out to disk. This tunable expresses the interval between those wakeups, in |
91 | is dependent on the amount of memory in your machine. | 114 | 100'ths of a second. |
92 | 115 | ||
93 | The number of pages the kernel reads in at once is equal to | 116 | Setting this to zero disables periodic writeback altogether. |
94 | 2 ^ page-cluster. Values above 2 ^ 5 don't make much sense | ||
95 | for swap because we only cluster swap data in 32-page groups. | ||
96 | 117 | ||
97 | ============================================================== | 118 | ============================================================== |
98 | 119 | ||
99 | max_map_count: | 120 | drop_caches |
100 | 121 | ||
101 | This file contains the maximum number of memory map areas a process | 122 | Writing to this will cause the kernel to drop clean caches, dentries and |
102 | may have. Memory map areas are used as a side-effect of calling | 123 | inodes from memory, causing that memory to become free. |
103 | malloc, directly by mmap and mprotect, and also when loading shared | ||
104 | libraries. | ||
105 | 124 | ||
106 | While most applications need less than a thousand maps, certain | 125 | To free pagecache: |
107 | programs, particularly malloc debuggers, may consume lots of them, | 126 | echo 1 > /proc/sys/vm/drop_caches |
108 | e.g., up to one or two maps per allocation. | 127 | To free dentries and inodes: |
128 | echo 2 > /proc/sys/vm/drop_caches | ||
129 | To free pagecache, dentries and inodes: | ||
130 | echo 3 > /proc/sys/vm/drop_caches | ||
109 | 131 | ||
110 | The default value is 65536. | 132 | As this is a non-destructive operation and dirty objects are not freeable, the |
133 | user should run `sync' first. | ||
111 | 134 | ||
112 | ============================================================== | 135 | ============================================================== |
113 | 136 | ||
114 | min_free_kbytes: | 137 | hugepages_treat_as_movable |
115 | 138 | ||
116 | This is used to force the Linux VM to keep a minimum number | 139 | This parameter is only useful when kernelcore= is specified at boot time to |
117 | of kilobytes free. The VM uses this number to compute a pages_min | 140 | create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages |
118 | value for each lowmem zone in the system. Each lowmem zone gets | 141 | are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero |
119 | a number of reserved free pages based proportionally on its size. | 142 | value written to hugepages_treat_as_movable allows huge pages to be allocated |
143 | from ZONE_MOVABLE. | ||
120 | 144 | ||
121 | Some minimal amount of memory is needed to satisfy PF_MEMALLOC | 145 | Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge |
122 | allocations; if you set this to lower than 1024KB, your system will | 146 | pages pool can easily grow or shrink within. Assuming that applications are |
123 | become subtly broken, and prone to deadlock under high loads. | 147 | not running that mlock() a lot of memory, it is likely the huge pages pool |
124 | 148 | can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value | |
125 | Setting this too high will OOM your machine instantly. | 149 | into nr_hugepages and triggering page reclaim. |
126 | 150 | ||
127 | ============================================================== | 151 | ============================================================== |
128 | 152 | ||
129 | percpu_pagelist_fraction | 153 | hugetlb_shm_group |
130 | 154 | ||
131 | This is the fraction of pages at most (high mark pcp->high) in each zone that | 155 | hugetlb_shm_group contains group id that is allowed to create SysV |
132 | are allocated for each per cpu page list. The min value for this is 8. It | 156 | shared memory segment using hugetlb page. |
133 | means that we don't allow more than 1/8th of pages in each zone to be | ||
134 | allocated in any single per_cpu_pagelist. This entry only changes the value | ||
135 | of hot per cpu pagelists. User can specify a number like 100 to allocate | ||
136 | 1/100th of each zone to each per cpu page list. | ||
137 | 157 | ||
138 | The batch value of each per cpu pagelist is also updated as a result. It is | 158 | ============================================================== |
139 | set to pcp->high/4. The upper limit of batch is (PAGE_SHIFT * 8) | ||
140 | 159 | ||
141 | The initial value is zero. Kernel does not use this value at boot time to set | 160 | laptop_mode |
142 | the high water marks for each per cpu page list. | ||
143 | 161 | ||
144 | =============================================================== | 162 | laptop_mode is a knob that controls "laptop mode". All the things that are |
163 | controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt. | ||
145 | 164 | ||
146 | zone_reclaim_mode: | 165 | ============================================================== |
147 | 166 | ||
148 | Zone_reclaim_mode allows someone to set more or less aggressive approaches to | 167 | legacy_va_layout |
149 | reclaim memory when a zone runs out of memory. If it is set to zero then no | ||
150 | zone reclaim occurs. Allocations will be satisfied from other zones / nodes | ||
151 | in the system. | ||
152 | 168 | ||
153 | This is value ORed together of | 169 | If non-zero, this sysctl disables the new 32-bit mmap mmap layout - the kernel |
170 | will use the legacy (2.4) layout for all processes. | ||
154 | 171 | ||
155 | 1 = Zone reclaim on | 172 | ============================================================== |
156 | 2 = Zone reclaim writes dirty pages out | ||
157 | 4 = Zone reclaim swaps pages | ||
158 | 173 | ||
159 | zone_reclaim_mode is set during bootup to 1 if it is determined that pages | 174 | lowmem_reserve_ratio |
160 | from remote zones will cause a measurable performance reduction. The | 175 | |
161 | page allocator will then reclaim easily reusable pages (those page | 176 | For some specialised workloads on highmem machines it is dangerous for |
162 | cache pages that are currently not used) before allocating off node pages. | 177 | the kernel to allow process memory to be allocated from the "lowmem" |
178 | zone. This is because that memory could then be pinned via the mlock() | ||
179 | system call, or by unavailability of swapspace. | ||
180 | |||
181 | And on large highmem machines this lack of reclaimable lowmem memory | ||
182 | can be fatal. | ||
183 | |||
184 | So the Linux page allocator has a mechanism which prevents allocations | ||
185 | which _could_ use highmem from using too much lowmem. This means that | ||
186 | a certain amount of lowmem is defended from the possibility of being | ||
187 | captured into pinned user memory. | ||
188 | |||
189 | (The same argument applies to the old 16 megabyte ISA DMA region. This | ||
190 | mechanism will also defend that region from allocations which could use | ||
191 | highmem or lowmem). | ||
192 | |||
193 | The `lowmem_reserve_ratio' tunable determines how aggressive the kernel is | ||
194 | in defending these lower zones. | ||
195 | |||
196 | If you have a machine which uses highmem or ISA DMA and your | ||
197 | applications are using mlock(), or if you are running with no swap then | ||
198 | you probably should change the lowmem_reserve_ratio setting. | ||
199 | |||
200 | The lowmem_reserve_ratio is an array. You can see them by reading this file. | ||
201 | - | ||
202 | % cat /proc/sys/vm/lowmem_reserve_ratio | ||
203 | 256 256 32 | ||
204 | - | ||
205 | Note: # of this elements is one fewer than number of zones. Because the highest | ||
206 | zone's value is not necessary for following calculation. | ||
207 | |||
208 | But, these values are not used directly. The kernel calculates # of protection | ||
209 | pages for each zones from them. These are shown as array of protection pages | ||
210 | in /proc/zoneinfo like followings. (This is an example of x86-64 box). | ||
211 | Each zone has an array of protection pages like this. | ||
212 | |||
213 | - | ||
214 | Node 0, zone DMA | ||
215 | pages free 1355 | ||
216 | min 3 | ||
217 | low 3 | ||
218 | high 4 | ||
219 | : | ||
220 | : | ||
221 | numa_other 0 | ||
222 | protection: (0, 2004, 2004, 2004) | ||
223 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
224 | pagesets | ||
225 | cpu: 0 pcp: 0 | ||
226 | : | ||
227 | - | ||
228 | These protections are added to score to judge whether this zone should be used | ||
229 | for page allocation or should be reclaimed. | ||
230 | |||
231 | In this example, if normal pages (index=2) are required to this DMA zone and | ||
232 | pages_high is used for watermark, the kernel judges this zone should not be | ||
233 | used because pages_free(1355) is smaller than watermark + protection[2] | ||
234 | (4 + 2004 = 2008). If this protection value is 0, this zone would be used for | ||
235 | normal page requirement. If requirement is DMA zone(index=0), protection[0] | ||
236 | (=0) is used. | ||
237 | |||
238 | zone[i]'s protection[j] is calculated by following expression. | ||
239 | |||
240 | (i < j): | ||
241 | zone[i]->protection[j] | ||
242 | = (total sums of present_pages from zone[i+1] to zone[j] on the node) | ||
243 | / lowmem_reserve_ratio[i]; | ||
244 | (i = j): | ||
245 | (should not be protected. = 0; | ||
246 | (i > j): | ||
247 | (not necessary, but looks 0) | ||
248 | |||
249 | The default values of lowmem_reserve_ratio[i] are | ||
250 | 256 (if zone[i] means DMA or DMA32 zone) | ||
251 | 32 (others). | ||
252 | As above expression, they are reciprocal number of ratio. | ||
253 | 256 means 1/256. # of protection pages becomes about "0.39%" of total present | ||
254 | pages of higher zones on the node. | ||
255 | |||
256 | If you would like to protect more pages, smaller values are effective. | ||
257 | The minimum value is 1 (1/1 -> 100%). | ||
163 | 258 | ||
164 | It may be beneficial to switch off zone reclaim if the system is | 259 | ============================================================== |
165 | used for a file server and all of memory should be used for caching files | ||
166 | from disk. In that case the caching effect is more important than | ||
167 | data locality. | ||
168 | 260 | ||
169 | Allowing zone reclaim to write out pages stops processes that are | 261 | max_map_count: |
170 | writing large amounts of data from dirtying pages on other nodes. Zone | ||
171 | reclaim will write out dirty pages if a zone fills up and so effectively | ||
172 | throttle the process. This may decrease the performance of a single process | ||
173 | since it cannot use all of system memory to buffer the outgoing writes | ||
174 | anymore but it preserve the memory on other nodes so that the performance | ||
175 | of other processes running on other nodes will not be affected. | ||
176 | 262 | ||
177 | Allowing regular swap effectively restricts allocations to the local | 263 | This file contains the maximum number of memory map areas a process |
178 | node unless explicitly overridden by memory policies or cpuset | 264 | may have. Memory map areas are used as a side-effect of calling |
179 | configurations. | 265 | malloc, directly by mmap and mprotect, and also when loading shared |
266 | libraries. | ||
180 | 267 | ||
181 | ============================================================= | 268 | While most applications need less than a thousand maps, certain |
269 | programs, particularly malloc debuggers, may consume lots of them, | ||
270 | e.g., up to one or two maps per allocation. | ||
182 | 271 | ||
183 | min_unmapped_ratio: | 272 | The default value is 65536. |
184 | 273 | ||
185 | This is available only on NUMA kernels. | 274 | ============================================================== |
186 | 275 | ||
187 | A percentage of the total pages in each zone. Zone reclaim will only | 276 | min_free_kbytes: |
188 | occur if more than this percentage of pages are file backed and unmapped. | ||
189 | This is to insure that a minimal amount of local pages is still available for | ||
190 | file I/O even if the node is overallocated. | ||
191 | 277 | ||
192 | The default is 1 percent. | 278 | This is used to force the Linux VM to keep a minimum number |
279 | of kilobytes free. The VM uses this number to compute a pages_min | ||
280 | value for each lowmem zone in the system. Each lowmem zone gets | ||
281 | a number of reserved free pages based proportionally on its size. | ||
282 | |||
283 | Some minimal amount of memory is needed to satisfy PF_MEMALLOC | ||
284 | allocations; if you set this to lower than 1024KB, your system will | ||
285 | become subtly broken, and prone to deadlock under high loads. | ||
286 | |||
287 | Setting this too high will OOM your machine instantly. | ||
193 | 288 | ||
194 | ============================================================= | 289 | ============================================================= |
195 | 290 | ||
@@ -211,82 +306,73 @@ and may not be fast. | |||
211 | 306 | ||
212 | ============================================================= | 307 | ============================================================= |
213 | 308 | ||
214 | panic_on_oom | 309 | min_unmapped_ratio: |
215 | 310 | ||
216 | This enables or disables panic on out-of-memory feature. | 311 | This is available only on NUMA kernels. |
217 | 312 | ||
218 | If this is set to 0, the kernel will kill some rogue process, | 313 | A percentage of the total pages in each zone. Zone reclaim will only |
219 | called oom_killer. Usually, oom_killer can kill rogue processes and | 314 | occur if more than this percentage of pages are file backed and unmapped. |
220 | system will survive. | 315 | This is to insure that a minimal amount of local pages is still available for |
316 | file I/O even if the node is overallocated. | ||
221 | 317 | ||
222 | If this is set to 1, the kernel panics when out-of-memory happens. | 318 | The default is 1 percent. |
223 | However, if a process limits using nodes by mempolicy/cpusets, | ||
224 | and those nodes become memory exhaustion status, one process | ||
225 | may be killed by oom-killer. No panic occurs in this case. | ||
226 | Because other nodes' memory may be free. This means system total status | ||
227 | may be not fatal yet. | ||
228 | 319 | ||
229 | If this is set to 2, the kernel panics compulsorily even on the | 320 | ============================================================== |
230 | above-mentioned. | ||
231 | 321 | ||
232 | The default value is 0. | 322 | mmap_min_addr |
233 | 1 and 2 are for failover of clustering. Please select either | ||
234 | according to your policy of failover. | ||
235 | 323 | ||
236 | ============================================================= | 324 | This file indicates the amount of address space which a user process will |
325 | be restricted from mmaping. Since kernel null dereference bugs could | ||
326 | accidentally operate based on the information in the first couple of pages | ||
327 | of memory userspace processes should not be allowed to write to them. By | ||
328 | default this value is set to 0 and no protections will be enforced by the | ||
329 | security module. Setting this value to something like 64k will allow the | ||
330 | vast majority of applications to work correctly and provide defense in depth | ||
331 | against future potential kernel bugs. | ||
237 | 332 | ||
238 | oom_dump_tasks | 333 | ============================================================== |
239 | 334 | ||
240 | Enables a system-wide task dump (excluding kernel threads) to be | 335 | nr_hugepages |
241 | produced when the kernel performs an OOM-killing and includes such | ||
242 | information as pid, uid, tgid, vm size, rss, cpu, oom_adj score, and | ||
243 | name. This is helpful to determine why the OOM killer was invoked | ||
244 | and to identify the rogue task that caused it. | ||
245 | 336 | ||
246 | If this is set to zero, this information is suppressed. On very | 337 | Change the minimum size of the hugepage pool. |
247 | large systems with thousands of tasks it may not be feasible to dump | ||
248 | the memory state information for each one. Such systems should not | ||
249 | be forced to incur a performance penalty in OOM conditions when the | ||
250 | information may not be desired. | ||
251 | 338 | ||
252 | If this is set to non-zero, this information is shown whenever the | 339 | See Documentation/vm/hugetlbpage.txt |
253 | OOM killer actually kills a memory-hogging task. | ||
254 | 340 | ||
255 | The default value is 0. | 341 | ============================================================== |
256 | 342 | ||
257 | ============================================================= | 343 | nr_overcommit_hugepages |
258 | 344 | ||
259 | oom_kill_allocating_task | 345 | Change the maximum size of the hugepage pool. The maximum is |
346 | nr_hugepages + nr_overcommit_hugepages. | ||
260 | 347 | ||
261 | This enables or disables killing the OOM-triggering task in | 348 | See Documentation/vm/hugetlbpage.txt |
262 | out-of-memory situations. | ||
263 | 349 | ||
264 | If this is set to zero, the OOM killer will scan through the entire | 350 | ============================================================== |
265 | tasklist and select a task based on heuristics to kill. This normally | ||
266 | selects a rogue memory-hogging task that frees up a large amount of | ||
267 | memory when killed. | ||
268 | 351 | ||
269 | If this is set to non-zero, the OOM killer simply kills the task that | 352 | nr_pdflush_threads |
270 | triggered the out-of-memory condition. This avoids the expensive | ||
271 | tasklist scan. | ||
272 | 353 | ||
273 | If panic_on_oom is selected, it takes precedence over whatever value | 354 | The current number of pdflush threads. This value is read-only. |
274 | is used in oom_kill_allocating_task. | 355 | The value changes according to the number of dirty pages in the system. |
275 | 356 | ||
276 | The default value is 0. | 357 | When neccessary, additional pdflush threads are created, one per second, up to |
358 | nr_pdflush_threads_max. | ||
277 | 359 | ||
278 | ============================================================== | 360 | ============================================================== |
279 | 361 | ||
280 | mmap_min_addr | 362 | nr_trim_pages |
281 | 363 | ||
282 | This file indicates the amount of address space which a user process will | 364 | This is available only on NOMMU kernels. |
283 | be restricted from mmaping. Since kernel null dereference bugs could | 365 | |
284 | accidentally operate based on the information in the first couple of pages | 366 | This value adjusts the excess page trimming behaviour of power-of-2 aligned |
285 | of memory userspace processes should not be allowed to write to them. By | 367 | NOMMU mmap allocations. |
286 | default this value is set to 0 and no protections will be enforced by the | 368 | |
287 | security module. Setting this value to something like 64k will allow the | 369 | A value of 0 disables trimming of allocations entirely, while a value of 1 |
288 | vast majority of applications to work correctly and provide defense in depth | 370 | trims excess pages aggressively. Any value >= 1 acts as the watermark where |
289 | against future potential kernel bugs. | 371 | trimming of allocations is initiated. |
372 | |||
373 | The default value is 1. | ||
374 | |||
375 | See Documentation/nommu-mmap.txt for more information. | ||
290 | 376 | ||
291 | ============================================================== | 377 | ============================================================== |
292 | 378 | ||
@@ -335,34 +421,199 @@ this is causing problems for your system/application. | |||
335 | 421 | ||
336 | ============================================================== | 422 | ============================================================== |
337 | 423 | ||
338 | nr_hugepages | 424 | oom_dump_tasks |
339 | 425 | ||
340 | Change the minimum size of the hugepage pool. | 426 | Enables a system-wide task dump (excluding kernel threads) to be |
427 | produced when the kernel performs an OOM-killing and includes such | ||
428 | information as pid, uid, tgid, vm size, rss, cpu, oom_adj score, and | ||
429 | name. This is helpful to determine why the OOM killer was invoked | ||
430 | and to identify the rogue task that caused it. | ||
341 | 431 | ||
342 | See Documentation/vm/hugetlbpage.txt | 432 | If this is set to zero, this information is suppressed. On very |
433 | large systems with thousands of tasks it may not be feasible to dump | ||
434 | the memory state information for each one. Such systems should not | ||
435 | be forced to incur a performance penalty in OOM conditions when the | ||
436 | information may not be desired. | ||
437 | |||
438 | If this is set to non-zero, this information is shown whenever the | ||
439 | OOM killer actually kills a memory-hogging task. | ||
440 | |||
441 | The default value is 0. | ||
343 | 442 | ||
344 | ============================================================== | 443 | ============================================================== |
345 | 444 | ||
346 | nr_overcommit_hugepages | 445 | oom_kill_allocating_task |
347 | 446 | ||
348 | Change the maximum size of the hugepage pool. The maximum is | 447 | This enables or disables killing the OOM-triggering task in |
349 | nr_hugepages + nr_overcommit_hugepages. | 448 | out-of-memory situations. |
350 | 449 | ||
351 | See Documentation/vm/hugetlbpage.txt | 450 | If this is set to zero, the OOM killer will scan through the entire |
451 | tasklist and select a task based on heuristics to kill. This normally | ||
452 | selects a rogue memory-hogging task that frees up a large amount of | ||
453 | memory when killed. | ||
454 | |||
455 | If this is set to non-zero, the OOM killer simply kills the task that | ||
456 | triggered the out-of-memory condition. This avoids the expensive | ||
457 | tasklist scan. | ||
458 | |||
459 | If panic_on_oom is selected, it takes precedence over whatever value | ||
460 | is used in oom_kill_allocating_task. | ||
461 | |||
462 | The default value is 0. | ||
352 | 463 | ||
353 | ============================================================== | 464 | ============================================================== |
354 | 465 | ||
355 | nr_trim_pages | 466 | overcommit_memory: |
356 | 467 | ||
357 | This is available only on NOMMU kernels. | 468 | This value contains a flag that enables memory overcommitment. |
358 | 469 | ||
359 | This value adjusts the excess page trimming behaviour of power-of-2 aligned | 470 | When this flag is 0, the kernel attempts to estimate the amount |
360 | NOMMU mmap allocations. | 471 | of free memory left when userspace requests more memory. |
361 | 472 | ||
362 | A value of 0 disables trimming of allocations entirely, while a value of 1 | 473 | When this flag is 1, the kernel pretends there is always enough |
363 | trims excess pages aggressively. Any value >= 1 acts as the watermark where | 474 | memory until it actually runs out. |
364 | trimming of allocations is initiated. | ||
365 | 475 | ||
366 | The default value is 1. | 476 | When this flag is 2, the kernel uses a "never overcommit" |
477 | policy that attempts to prevent any overcommit of memory. | ||
367 | 478 | ||
368 | See Documentation/nommu-mmap.txt for more information. | 479 | This feature can be very useful because there are a lot of |
480 | programs that malloc() huge amounts of memory "just-in-case" | ||
481 | and don't use much of it. | ||
482 | |||
483 | The default value is 0. | ||
484 | |||
485 | See Documentation/vm/overcommit-accounting and | ||
486 | security/commoncap.c::cap_vm_enough_memory() for more information. | ||
487 | |||
488 | ============================================================== | ||
489 | |||
490 | overcommit_ratio: | ||
491 | |||
492 | When overcommit_memory is set to 2, the committed address | ||
493 | space is not permitted to exceed swap plus this percentage | ||
494 | of physical RAM. See above. | ||
495 | |||
496 | ============================================================== | ||
497 | |||
498 | page-cluster | ||
499 | |||
500 | page-cluster controls the number of pages which are written to swap in | ||
501 | a single attempt. The swap I/O size. | ||
502 | |||
503 | It is a logarithmic value - setting it to zero means "1 page", setting | ||
504 | it to 1 means "2 pages", setting it to 2 means "4 pages", etc. | ||
505 | |||
506 | The default value is three (eight pages at a time). There may be some | ||
507 | small benefits in tuning this to a different value if your workload is | ||
508 | swap-intensive. | ||
509 | |||
510 | ============================================================= | ||
511 | |||
512 | panic_on_oom | ||
513 | |||
514 | This enables or disables panic on out-of-memory feature. | ||
515 | |||
516 | If this is set to 0, the kernel will kill some rogue process, | ||
517 | called oom_killer. Usually, oom_killer can kill rogue processes and | ||
518 | system will survive. | ||
519 | |||
520 | If this is set to 1, the kernel panics when out-of-memory happens. | ||
521 | However, if a process limits using nodes by mempolicy/cpusets, | ||
522 | and those nodes become memory exhaustion status, one process | ||
523 | may be killed by oom-killer. No panic occurs in this case. | ||
524 | Because other nodes' memory may be free. This means system total status | ||
525 | may be not fatal yet. | ||
526 | |||
527 | If this is set to 2, the kernel panics compulsorily even on the | ||
528 | above-mentioned. | ||
529 | |||
530 | The default value is 0. | ||
531 | 1 and 2 are for failover of clustering. Please select either | ||
532 | according to your policy of failover. | ||
533 | |||
534 | ============================================================= | ||
535 | |||
536 | percpu_pagelist_fraction | ||
537 | |||
538 | This is the fraction of pages at most (high mark pcp->high) in each zone that | ||
539 | are allocated for each per cpu page list. The min value for this is 8. It | ||
540 | means that we don't allow more than 1/8th of pages in each zone to be | ||
541 | allocated in any single per_cpu_pagelist. This entry only changes the value | ||
542 | of hot per cpu pagelists. User can specify a number like 100 to allocate | ||
543 | 1/100th of each zone to each per cpu page list. | ||
544 | |||
545 | The batch value of each per cpu pagelist is also updated as a result. It is | ||
546 | set to pcp->high/4. The upper limit of batch is (PAGE_SHIFT * 8) | ||
547 | |||
548 | The initial value is zero. Kernel does not use this value at boot time to set | ||
549 | the high water marks for each per cpu page list. | ||
550 | |||
551 | ============================================================== | ||
552 | |||
553 | stat_interval | ||
554 | |||
555 | The time interval between which vm statistics are updated. The default | ||
556 | is 1 second. | ||
557 | |||
558 | ============================================================== | ||
559 | |||
560 | swappiness | ||
561 | |||
562 | This control is used to define how aggressive the kernel will swap | ||
563 | memory pages. Higher values will increase agressiveness, lower values | ||
564 | descrease the amount of swap. | ||
565 | |||
566 | The default value is 60. | ||
567 | |||
568 | ============================================================== | ||
569 | |||
570 | vfs_cache_pressure | ||
571 | ------------------ | ||
572 | |||
573 | Controls the tendency of the kernel to reclaim the memory which is used for | ||
574 | caching of directory and inode objects. | ||
575 | |||
576 | At the default value of vfs_cache_pressure=100 the kernel will attempt to | ||
577 | reclaim dentries and inodes at a "fair" rate with respect to pagecache and | ||
578 | swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer | ||
579 | to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100 | ||
580 | causes the kernel to prefer to reclaim dentries and inodes. | ||
581 | |||
582 | ============================================================== | ||
583 | |||
584 | zone_reclaim_mode: | ||
585 | |||
586 | Zone_reclaim_mode allows someone to set more or less aggressive approaches to | ||
587 | reclaim memory when a zone runs out of memory. If it is set to zero then no | ||
588 | zone reclaim occurs. Allocations will be satisfied from other zones / nodes | ||
589 | in the system. | ||
590 | |||
591 | This is value ORed together of | ||
592 | |||
593 | 1 = Zone reclaim on | ||
594 | 2 = Zone reclaim writes dirty pages out | ||
595 | 4 = Zone reclaim swaps pages | ||
596 | |||
597 | zone_reclaim_mode is set during bootup to 1 if it is determined that pages | ||
598 | from remote zones will cause a measurable performance reduction. The | ||
599 | page allocator will then reclaim easily reusable pages (those page | ||
600 | cache pages that are currently not used) before allocating off node pages. | ||
601 | |||
602 | It may be beneficial to switch off zone reclaim if the system is | ||
603 | used for a file server and all of memory should be used for caching files | ||
604 | from disk. In that case the caching effect is more important than | ||
605 | data locality. | ||
606 | |||
607 | Allowing zone reclaim to write out pages stops processes that are | ||
608 | writing large amounts of data from dirtying pages on other nodes. Zone | ||
609 | reclaim will write out dirty pages if a zone fills up and so effectively | ||
610 | throttle the process. This may decrease the performance of a single process | ||
611 | since it cannot use all of system memory to buffer the outgoing writes | ||
612 | anymore but it preserve the memory on other nodes so that the performance | ||
613 | of other processes running on other nodes will not be affected. | ||
614 | |||
615 | Allowing regular swap effectively restricts allocations to the local | ||
616 | node unless explicitly overridden by memory policies or cpuset | ||
617 | configurations. | ||
618 | |||
619 | ============ End of Document ================================= | ||
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt index 10a0263ebb3f..9e592c718afb 100644 --- a/Documentation/sysrq.txt +++ b/Documentation/sysrq.txt | |||
@@ -1,6 +1,5 @@ | |||
1 | Linux Magic System Request Key Hacks | 1 | Linux Magic System Request Key Hacks |
2 | Documentation for sysrq.c | 2 | Documentation for sysrq.c |
3 | Last update: 2007-AUG-04 | ||
4 | 3 | ||
5 | * What is the magic SysRq key? | 4 | * What is the magic SysRq key? |
6 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 5 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
@@ -211,6 +210,24 @@ within a function called by handle_sysrq, you must be aware that you are in | |||
211 | a lock (you are also in an interrupt handler, which means don't sleep!), so | 210 | a lock (you are also in an interrupt handler, which means don't sleep!), so |
212 | you must call __handle_sysrq_nolock instead. | 211 | you must call __handle_sysrq_nolock instead. |
213 | 212 | ||
213 | * When I hit a SysRq key combination only the header appears on the console? | ||
214 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
215 | Sysrq output is subject to the same console loglevel control as all | ||
216 | other console output. This means that if the kernel was booted 'quiet' | ||
217 | as is common on distro kernels the output may not appear on the actual | ||
218 | console, even though it will appear in the dmesg buffer, and be accessible | ||
219 | via the dmesg command and to the consumers of /proc/kmsg. As a specific | ||
220 | exception the header line from the sysrq command is passed to all console | ||
221 | consumers as if the current loglevel was maximum. If only the header | ||
222 | is emitted it is almost certain that the kernel loglevel is too low. | ||
223 | Should you require the output on the console channel then you will need | ||
224 | to temporarily up the console loglevel using alt-sysrq-8 or: | ||
225 | |||
226 | echo 8 > /proc/sysrq-trigger | ||
227 | |||
228 | Remember to return the loglevel to normal after triggering the sysrq | ||
229 | command you are interested in. | ||
230 | |||
214 | * I have more questions, who can I ask? | 231 | * I have more questions, who can I ask? |
215 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 232 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
216 | And I'll answer any questions about the registration system you got, also | 233 | And I'll answer any questions about the registration system you got, also |
diff --git a/MAINTAINERS b/MAINTAINERS index 3f6ef02ad681..d992d407197b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -1581,6 +1581,13 @@ L: bluesmoke-devel@lists.sourceforge.net | |||
1581 | W: bluesmoke.sourceforge.net | 1581 | W: bluesmoke.sourceforge.net |
1582 | S: Maintained | 1582 | S: Maintained |
1583 | 1583 | ||
1584 | EDAC-I5400 | ||
1585 | P: Mauro Carvalho Chehab | ||
1586 | M: mchehab@redhat.com | ||
1587 | L: bluesmoke-devel@lists.sourceforge.net | ||
1588 | W: bluesmoke.sourceforge.net | ||
1589 | S: Maintained | ||
1590 | |||
1584 | EDAC-I82975X | 1591 | EDAC-I82975X |
1585 | P: Ranganathan Desikan | 1592 | P: Ranganathan Desikan |
1586 | P: Arvind R. | 1593 | P: Arvind R. |
@@ -1814,6 +1821,14 @@ M: hch@infradead.org | |||
1814 | W: ftp://ftp.openlinux.org/pub/people/hch/vxfs | 1821 | W: ftp://ftp.openlinux.org/pub/people/hch/vxfs |
1815 | S: Maintained | 1822 | S: Maintained |
1816 | 1823 | ||
1824 | FREEZER | ||
1825 | P: Pavel Machek | ||
1826 | M: pavel@suse.cz | ||
1827 | P: Rafael J. Wysocki | ||
1828 | M: rjw@sisk.pl | ||
1829 | L: linux-pm@lists.linux-foundation.org | ||
1830 | S: Supported | ||
1831 | |||
1817 | FTRACE | 1832 | FTRACE |
1818 | P: Steven Rostedt | 1833 | P: Steven Rostedt |
1819 | M: rostedt@goodmis.org | 1834 | M: rostedt@goodmis.org |
@@ -2087,7 +2102,8 @@ M: khali@linux-fr.org | |||
2087 | P: Ben Dooks (embedded platforms) | 2102 | P: Ben Dooks (embedded platforms) |
2088 | M: ben-linux@fluff.org | 2103 | M: ben-linux@fluff.org |
2089 | L: linux-i2c@vger.kernel.org | 2104 | L: linux-i2c@vger.kernel.org |
2090 | T: quilt http://khali.linux-fr.org/devel/linux-2.6/jdelvare-i2c/ | 2105 | W: http://i2c.wiki.kernel.org/ |
2106 | T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/ | ||
2091 | S: Maintained | 2107 | S: Maintained |
2092 | 2108 | ||
2093 | I2C-TINY-USB DRIVER | 2109 | I2C-TINY-USB DRIVER |
@@ -1,7 +1,7 @@ | |||
1 | VERSION = 2 | 1 | VERSION = 2 |
2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
3 | SUBLEVEL = 29 | 3 | SUBLEVEL = 29 |
4 | EXTRAVERSION = -rc1 | 4 | EXTRAVERSION = -rc2 |
5 | NAME = Erotic Pickled Herring | 5 | NAME = Erotic Pickled Herring |
6 | 6 | ||
7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
@@ -213,6 +213,10 @@ endif | |||
213 | # Where to locate arch specific headers | 213 | # Where to locate arch specific headers |
214 | hdr-arch := $(SRCARCH) | 214 | hdr-arch := $(SRCARCH) |
215 | 215 | ||
216 | ifeq ($(ARCH),m68knommu) | ||
217 | hdr-arch := m68k | ||
218 | endif | ||
219 | |||
216 | KCONFIG_CONFIG ?= .config | 220 | KCONFIG_CONFIG ?= .config |
217 | 221 | ||
218 | # SHELL used by kbuild | 222 | # SHELL used by kbuild |
@@ -606,25 +610,20 @@ export INSTALL_PATH ?= /boot | |||
606 | MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) | 610 | MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) |
607 | export MODLIB | 611 | export MODLIB |
608 | 612 | ||
609 | strip-symbols := $(srctree)/scripts/strip-symbols \ | ||
610 | $(wildcard $(srctree)/arch/$(ARCH)/scripts/strip-symbols) | ||
611 | |||
612 | # | 613 | # |
613 | # INSTALL_MOD_STRIP, if defined, will cause modules to be stripped while | 614 | # INSTALL_MOD_STRIP, if defined, will cause modules to be |
614 | # they get installed. If INSTALL_MOD_STRIP is '1', then the default | 615 | # stripped after they are installed. If INSTALL_MOD_STRIP is '1', then |
615 | # options (see below) will be used. Otherwise, INSTALL_MOD_STRIP will | 616 | # the default option --strip-debug will be used. Otherwise, |
616 | # be used as the option(s) to the objcopy command. | 617 | # INSTALL_MOD_STRIP will used as the options to the strip command. |
618 | |||
617 | ifdef INSTALL_MOD_STRIP | 619 | ifdef INSTALL_MOD_STRIP |
618 | ifeq ($(INSTALL_MOD_STRIP),1) | 620 | ifeq ($(INSTALL_MOD_STRIP),1) |
619 | mod_strip_cmd = $(OBJCOPY) --strip-debug | 621 | mod_strip_cmd = $(STRIP) --strip-debug |
620 | ifeq ($(CONFIG_KALLSYMS_ALL),$(CONFIG_KALLSYMS_STRIP_GENERATED)) | ||
621 | mod_strip_cmd += --wildcard $(addprefix --strip-symbols ,$(strip-symbols)) | ||
622 | endif | ||
623 | else | 622 | else |
624 | mod_strip_cmd = $(OBJCOPY) $(INSTALL_MOD_STRIP) | 623 | mod_strip_cmd = $(STRIP) $(INSTALL_MOD_STRIP) |
625 | endif # INSTALL_MOD_STRIP=1 | 624 | endif # INSTALL_MOD_STRIP=1 |
626 | else | 625 | else |
627 | mod_strip_cmd = false | 626 | mod_strip_cmd = true |
628 | endif # INSTALL_MOD_STRIP | 627 | endif # INSTALL_MOD_STRIP |
629 | export mod_strip_cmd | 628 | export mod_strip_cmd |
630 | 629 | ||
@@ -754,7 +753,6 @@ last_kallsyms := 2 | |||
754 | endif | 753 | endif |
755 | 754 | ||
756 | kallsyms.o := .tmp_kallsyms$(last_kallsyms).o | 755 | kallsyms.o := .tmp_kallsyms$(last_kallsyms).o |
757 | kallsyms.h := $(wildcard include/config/kallsyms/*.h) $(wildcard include/config/kallsyms/*/*.h) | ||
758 | 756 | ||
759 | define verify_kallsyms | 757 | define verify_kallsyms |
760 | $(Q)$(if $($(quiet)cmd_sysmap), \ | 758 | $(Q)$(if $($(quiet)cmd_sysmap), \ |
@@ -779,41 +777,24 @@ endef | |||
779 | 777 | ||
780 | # Generate .S file with all kernel symbols | 778 | # Generate .S file with all kernel symbols |
781 | quiet_cmd_kallsyms = KSYM $@ | 779 | quiet_cmd_kallsyms = KSYM $@ |
782 | cmd_kallsyms = { test $* -eq 0 || $(NM) -n $<; } \ | 780 | cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \ |
783 | | $(KALLSYMS) $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) >$@ | 781 | $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@ |
784 | 782 | ||
785 | quiet_cmd_kstrip = STRIP $@ | 783 | .tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE |
786 | cmd_kstrip = $(OBJCOPY) --wildcard $(addprefix --strip$(if $(CONFIG_RELOCATABLE),-unneeded)-symbols ,$(filter %/scripts/strip-symbols,$^)) $< $@ | ||
787 | |||
788 | $(foreach n,0 1 2 3,.tmp_kallsyms$(n).o): KBUILD_AFLAGS += -Wa,--strip-local-absolute | ||
789 | $(foreach n,0 1 2 3,.tmp_kallsyms$(n).o): %.o: %.S scripts FORCE | ||
790 | $(call if_changed_dep,as_o_S) | 784 | $(call if_changed_dep,as_o_S) |
791 | 785 | ||
792 | ifeq ($(CONFIG_KALLSYMS_STRIP_GENERATED),y) | 786 | .tmp_kallsyms%.S: .tmp_vmlinux% $(KALLSYMS) |
793 | strip-ext := .stripped | ||
794 | endif | ||
795 | |||
796 | .tmp_kallsyms%.S: .tmp_vmlinux%$(strip-ext) $(KALLSYMS) $(kallsyms.h) | ||
797 | $(call cmd,kallsyms) | 787 | $(call cmd,kallsyms) |
798 | 788 | ||
799 | # make -jN seems to have problems with intermediate files, see bug #3330. | ||
800 | .SECONDARY: $(foreach n,1 2 3,.tmp_vmlinux$(n).stripped) | ||
801 | .tmp_vmlinux%.stripped: .tmp_vmlinux% $(strip-symbols) $(kallsyms.h) | ||
802 | $(call cmd,kstrip) | ||
803 | |||
804 | ifneq ($(CONFIG_DEBUG_INFO),y) | ||
805 | .tmp_vmlinux%: LDFLAGS_vmlinux += -S | ||
806 | endif | ||
807 | # .tmp_vmlinux1 must be complete except kallsyms, so update vmlinux version | 789 | # .tmp_vmlinux1 must be complete except kallsyms, so update vmlinux version |
808 | .tmp_vmlinux%: $(vmlinux-lds) $(vmlinux-all) FORCE | 790 | .tmp_vmlinux1: $(vmlinux-lds) $(vmlinux-all) FORCE |
809 | $(if $(filter 1,$*),$(call if_changed_rule,ksym_ld),$(call if_changed,vmlinux__)) | 791 | $(call if_changed_rule,ksym_ld) |
810 | 792 | ||
811 | .tmp_vmlinux0$(strip-ext): | 793 | .tmp_vmlinux2: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms1.o FORCE |
812 | $(Q)echo "placeholder" >$@ | 794 | $(call if_changed,vmlinux__) |
813 | 795 | ||
814 | .tmp_vmlinux1: .tmp_kallsyms0.o | 796 | .tmp_vmlinux3: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms2.o FORCE |
815 | .tmp_vmlinux2: .tmp_kallsyms1.o | 797 | $(call if_changed,vmlinux__) |
816 | .tmp_vmlinux3: .tmp_kallsyms2.o | ||
817 | 798 | ||
818 | # Needs to visit scripts/ before $(KALLSYMS) can be used. | 799 | # Needs to visit scripts/ before $(KALLSYMS) can be used. |
819 | $(KALLSYMS): scripts ; | 800 | $(KALLSYMS): scripts ; |
diff --git a/arch/alpha/include/asm/machvec.h b/arch/alpha/include/asm/machvec.h index a86c083cdf7f..fea4ea75b79d 100644 --- a/arch/alpha/include/asm/machvec.h +++ b/arch/alpha/include/asm/machvec.h | |||
@@ -21,6 +21,7 @@ struct pci_dev; | |||
21 | struct pci_ops; | 21 | struct pci_ops; |
22 | struct pci_controller; | 22 | struct pci_controller; |
23 | struct _alpha_agp_info; | 23 | struct _alpha_agp_info; |
24 | struct rtc_time; | ||
24 | 25 | ||
25 | struct alpha_machine_vector | 26 | struct alpha_machine_vector |
26 | { | 27 | { |
@@ -94,6 +95,9 @@ struct alpha_machine_vector | |||
94 | 95 | ||
95 | struct _alpha_agp_info *(*agp_info)(void); | 96 | struct _alpha_agp_info *(*agp_info)(void); |
96 | 97 | ||
98 | unsigned int (*rtc_get_time)(struct rtc_time *); | ||
99 | int (*rtc_set_time)(struct rtc_time *); | ||
100 | |||
97 | const char *vector_name; | 101 | const char *vector_name; |
98 | 102 | ||
99 | /* NUMA information */ | 103 | /* NUMA information */ |
diff --git a/arch/alpha/include/asm/pgalloc.h b/arch/alpha/include/asm/pgalloc.h index fd090155dccd..bc2a0daf2d92 100644 --- a/arch/alpha/include/asm/pgalloc.h +++ b/arch/alpha/include/asm/pgalloc.h | |||
@@ -50,7 +50,12 @@ pmd_free(struct mm_struct *mm, pmd_t *pmd) | |||
50 | free_page((unsigned long)pmd); | 50 | free_page((unsigned long)pmd); |
51 | } | 51 | } |
52 | 52 | ||
53 | extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr); | 53 | static inline pte_t * |
54 | pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) | ||
55 | { | ||
56 | pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); | ||
57 | return pte; | ||
58 | } | ||
54 | 59 | ||
55 | static inline void | 60 | static inline void |
56 | pte_free_kernel(struct mm_struct *mm, pte_t *pte) | 61 | pte_free_kernel(struct mm_struct *mm, pte_t *pte) |
diff --git a/arch/alpha/include/asm/rtc.h b/arch/alpha/include/asm/rtc.h index 4e854b1333eb..1f7fba671ae6 100644 --- a/arch/alpha/include/asm/rtc.h +++ b/arch/alpha/include/asm/rtc.h | |||
@@ -1,9 +1,15 @@ | |||
1 | #ifndef _ALPHA_RTC_H | 1 | #ifndef _ALPHA_RTC_H |
2 | #define _ALPHA_RTC_H | 2 | #define _ALPHA_RTC_H |
3 | 3 | ||
4 | /* | 4 | #if defined(CONFIG_ALPHA_GENERIC) |
5 | * Alpha uses the default access methods for the RTC. | 5 | # define get_rtc_time alpha_mv.rtc_get_time |
6 | */ | 6 | # define set_rtc_time alpha_mv.rtc_set_time |
7 | #else | ||
8 | # if defined(CONFIG_ALPHA_MARVEL) && defined(CONFIG_SMP) | ||
9 | # define get_rtc_time marvel_get_rtc_time | ||
10 | # define set_rtc_time marvel_set_rtc_time | ||
11 | # endif | ||
12 | #endif | ||
7 | 13 | ||
8 | #include <asm-generic/rtc.h> | 14 | #include <asm-generic/rtc.h> |
9 | 15 | ||
diff --git a/arch/alpha/kernel/.gitignore b/arch/alpha/kernel/.gitignore new file mode 100644 index 000000000000..c5f676c3c224 --- /dev/null +++ b/arch/alpha/kernel/.gitignore | |||
@@ -0,0 +1 @@ | |||
vmlinux.lds | |||
diff --git a/arch/alpha/kernel/core_marvel.c b/arch/alpha/kernel/core_marvel.c index 9cd8dca742a7..e302daecbe56 100644 --- a/arch/alpha/kernel/core_marvel.c +++ b/arch/alpha/kernel/core_marvel.c | |||
@@ -658,16 +658,8 @@ __marvel_rtc_io(u8 b, unsigned long addr, int write) | |||
658 | rtc_access.data = bcd2bin(b); | 658 | rtc_access.data = bcd2bin(b); |
659 | rtc_access.function = 0x48 + !write; /* GET/PUT_TOY */ | 659 | rtc_access.function = 0x48 + !write; /* GET/PUT_TOY */ |
660 | 660 | ||
661 | #ifdef CONFIG_SMP | ||
662 | if (smp_processor_id() != boot_cpuid) | ||
663 | smp_call_function_single(boot_cpuid, | ||
664 | __marvel_access_rtc, | ||
665 | &rtc_access, 1); | ||
666 | else | ||
667 | __marvel_access_rtc(&rtc_access); | ||
668 | #else | ||
669 | __marvel_access_rtc(&rtc_access); | 661 | __marvel_access_rtc(&rtc_access); |
670 | #endif | 662 | |
671 | ret = bin2bcd(rtc_access.data); | 663 | ret = bin2bcd(rtc_access.data); |
672 | break; | 664 | break; |
673 | 665 | ||
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c index 32212014fbe9..a03fbca4940e 100644 --- a/arch/alpha/kernel/irq_srm.c +++ b/arch/alpha/kernel/irq_srm.c | |||
@@ -63,6 +63,8 @@ init_srm_irqs(long max, unsigned long ignore_mask) | |||
63 | { | 63 | { |
64 | long i; | 64 | long i; |
65 | 65 | ||
66 | if (NR_IRQS <= 16) | ||
67 | return; | ||
66 | for (i = 16; i < max; ++i) { | 68 | for (i = 16; i < max; ++i) { |
67 | if (i < 64 && ((ignore_mask >> i) & 1)) | 69 | if (i < 64 && ((ignore_mask >> i) & 1)) |
68 | continue; | 70 | continue; |
diff --git a/arch/alpha/kernel/machvec_impl.h b/arch/alpha/kernel/machvec_impl.h index 466c9dff8181..512685f78097 100644 --- a/arch/alpha/kernel/machvec_impl.h +++ b/arch/alpha/kernel/machvec_impl.h | |||
@@ -40,7 +40,10 @@ | |||
40 | #define CAT1(x,y) x##y | 40 | #define CAT1(x,y) x##y |
41 | #define CAT(x,y) CAT1(x,y) | 41 | #define CAT(x,y) CAT1(x,y) |
42 | 42 | ||
43 | #define DO_DEFAULT_RTC .rtc_port = 0x70 | 43 | #define DO_DEFAULT_RTC \ |
44 | .rtc_port = 0x70, \ | ||
45 | .rtc_get_time = common_get_rtc_time, \ | ||
46 | .rtc_set_time = common_set_rtc_time | ||
44 | 47 | ||
45 | #define DO_EV4_MMU \ | 48 | #define DO_EV4_MMU \ |
46 | .max_asn = EV4_MAX_ASN, \ | 49 | .max_asn = EV4_MAX_ASN, \ |
diff --git a/arch/alpha/kernel/proto.h b/arch/alpha/kernel/proto.h index 708d5ca87782..fe14c6747cd6 100644 --- a/arch/alpha/kernel/proto.h +++ b/arch/alpha/kernel/proto.h | |||
@@ -145,6 +145,8 @@ extern void smp_percpu_timer_interrupt(struct pt_regs *); | |||
145 | extern irqreturn_t timer_interrupt(int irq, void *dev); | 145 | extern irqreturn_t timer_interrupt(int irq, void *dev); |
146 | extern void common_init_rtc(void); | 146 | extern void common_init_rtc(void); |
147 | extern unsigned long est_cycle_freq; | 147 | extern unsigned long est_cycle_freq; |
148 | extern unsigned int common_get_rtc_time(struct rtc_time *time); | ||
149 | extern int common_set_rtc_time(struct rtc_time *time); | ||
148 | 150 | ||
149 | /* smc37c93x.c */ | 151 | /* smc37c93x.c */ |
150 | extern void SMC93x_Init(void); | 152 | extern void SMC93x_Init(void); |
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c index 2c3de97de46c..e2516f9a8967 100644 --- a/arch/alpha/kernel/sys_jensen.c +++ b/arch/alpha/kernel/sys_jensen.c | |||
@@ -261,6 +261,8 @@ struct alpha_machine_vector jensen_mv __initmv = { | |||
261 | .machine_check = jensen_machine_check, | 261 | .machine_check = jensen_machine_check, |
262 | .max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS, | 262 | .max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS, |
263 | .rtc_port = 0x170, | 263 | .rtc_port = 0x170, |
264 | .rtc_get_time = common_get_rtc_time, | ||
265 | .rtc_set_time = common_set_rtc_time, | ||
264 | 266 | ||
265 | .nr_irqs = 16, | 267 | .nr_irqs = 16, |
266 | .device_interrupt = jensen_device_interrupt, | 268 | .device_interrupt = jensen_device_interrupt, |
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c index 828449cd2636..c5a1a2438c67 100644 --- a/arch/alpha/kernel/sys_marvel.c +++ b/arch/alpha/kernel/sys_marvel.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <asm/hwrpb.h> | 23 | #include <asm/hwrpb.h> |
24 | #include <asm/tlbflush.h> | 24 | #include <asm/tlbflush.h> |
25 | #include <asm/vga.h> | 25 | #include <asm/vga.h> |
26 | #include <asm/rtc.h> | ||
26 | 27 | ||
27 | #include "proto.h" | 28 | #include "proto.h" |
28 | #include "err_impl.h" | 29 | #include "err_impl.h" |
@@ -426,6 +427,57 @@ marvel_init_rtc(void) | |||
426 | init_rtc_irq(); | 427 | init_rtc_irq(); |
427 | } | 428 | } |
428 | 429 | ||
430 | struct marvel_rtc_time { | ||
431 | struct rtc_time *time; | ||
432 | int retval; | ||
433 | }; | ||
434 | |||
435 | #ifdef CONFIG_SMP | ||
436 | static void | ||
437 | smp_get_rtc_time(void *data) | ||
438 | { | ||
439 | struct marvel_rtc_time *mrt = data; | ||
440 | mrt->retval = __get_rtc_time(mrt->time); | ||
441 | } | ||
442 | |||
443 | static void | ||
444 | smp_set_rtc_time(void *data) | ||
445 | { | ||
446 | struct marvel_rtc_time *mrt = data; | ||
447 | mrt->retval = __set_rtc_time(mrt->time); | ||
448 | } | ||
449 | #endif | ||
450 | |||
451 | static unsigned int | ||
452 | marvel_get_rtc_time(struct rtc_time *time) | ||
453 | { | ||
454 | #ifdef CONFIG_SMP | ||
455 | struct marvel_rtc_time mrt; | ||
456 | |||
457 | if (smp_processor_id() != boot_cpuid) { | ||
458 | mrt.time = time; | ||
459 | smp_call_function_single(boot_cpuid, smp_get_rtc_time, &mrt, 1); | ||
460 | return mrt.retval; | ||
461 | } | ||
462 | #endif | ||
463 | return __get_rtc_time(time); | ||
464 | } | ||
465 | |||
466 | static int | ||
467 | marvel_set_rtc_time(struct rtc_time *time) | ||
468 | { | ||
469 | #ifdef CONFIG_SMP | ||
470 | struct marvel_rtc_time mrt; | ||
471 | |||
472 | if (smp_processor_id() != boot_cpuid) { | ||
473 | mrt.time = time; | ||
474 | smp_call_function_single(boot_cpuid, smp_set_rtc_time, &mrt, 1); | ||
475 | return mrt.retval; | ||
476 | } | ||
477 | #endif | ||
478 | return __set_rtc_time(time); | ||
479 | } | ||
480 | |||
429 | static void | 481 | static void |
430 | marvel_smp_callin(void) | 482 | marvel_smp_callin(void) |
431 | { | 483 | { |
@@ -466,7 +518,9 @@ marvel_smp_callin(void) | |||
466 | struct alpha_machine_vector marvel_ev7_mv __initmv = { | 518 | struct alpha_machine_vector marvel_ev7_mv __initmv = { |
467 | .vector_name = "MARVEL/EV7", | 519 | .vector_name = "MARVEL/EV7", |
468 | DO_EV7_MMU, | 520 | DO_EV7_MMU, |
469 | DO_DEFAULT_RTC, | 521 | .rtc_port = 0x70, |
522 | .rtc_get_time = marvel_get_rtc_time, | ||
523 | .rtc_set_time = marvel_set_rtc_time, | ||
470 | DO_MARVEL_IO, | 524 | DO_MARVEL_IO, |
471 | .machine_check = marvel_machine_check, | 525 | .machine_check = marvel_machine_check, |
472 | .max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS, | 526 | .max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS, |
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c index a7f23b5ab814..99c0f46f6b9c 100644 --- a/arch/alpha/kernel/sys_nautilus.c +++ b/arch/alpha/kernel/sys_nautilus.c | |||
@@ -245,6 +245,10 @@ nautilus_init_pci(void) | |||
245 | IRONGATE0->pci_mem = pci_mem; | 245 | IRONGATE0->pci_mem = pci_mem; |
246 | 246 | ||
247 | pci_bus_assign_resources(bus); | 247 | pci_bus_assign_resources(bus); |
248 | |||
249 | /* pci_common_swizzle() relies on bus->self being NULL | ||
250 | for the root bus, so just clear it. */ | ||
251 | bus->self = NULL; | ||
248 | pci_fixup_irqs(alpha_mv.pci_swizzle, alpha_mv.pci_map_irq); | 252 | pci_fixup_irqs(alpha_mv.pci_swizzle, alpha_mv.pci_map_irq); |
249 | } | 253 | } |
250 | 254 | ||
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c index e6a231435cba..b04e2cbf23a4 100644 --- a/arch/alpha/kernel/time.c +++ b/arch/alpha/kernel/time.c | |||
@@ -46,6 +46,7 @@ | |||
46 | #include <asm/io.h> | 46 | #include <asm/io.h> |
47 | #include <asm/hwrpb.h> | 47 | #include <asm/hwrpb.h> |
48 | #include <asm/8253pit.h> | 48 | #include <asm/8253pit.h> |
49 | #include <asm/rtc.h> | ||
49 | 50 | ||
50 | #include <linux/mc146818rtc.h> | 51 | #include <linux/mc146818rtc.h> |
51 | #include <linux/time.h> | 52 | #include <linux/time.h> |
@@ -180,6 +181,15 @@ common_init_rtc(void) | |||
180 | init_rtc_irq(); | 181 | init_rtc_irq(); |
181 | } | 182 | } |
182 | 183 | ||
184 | unsigned int common_get_rtc_time(struct rtc_time *time) | ||
185 | { | ||
186 | return __get_rtc_time(time); | ||
187 | } | ||
188 | |||
189 | int common_set_rtc_time(struct rtc_time *time) | ||
190 | { | ||
191 | return __set_rtc_time(time); | ||
192 | } | ||
183 | 193 | ||
184 | /* Validate a computed cycle counter result against the known bounds for | 194 | /* Validate a computed cycle counter result against the known bounds for |
185 | the given processor core. There's too much brokenness in the way of | 195 | the given processor core. There's too much brokenness in the way of |
diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c index 234e42b8ee74..5d7a16eab312 100644 --- a/arch/alpha/mm/init.c +++ b/arch/alpha/mm/init.c | |||
@@ -59,13 +59,6 @@ pgd_alloc(struct mm_struct *mm) | |||
59 | return ret; | 59 | return ret; |
60 | } | 60 | } |
61 | 61 | ||
62 | pte_t * | ||
63 | pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) | ||
64 | { | ||
65 | pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); | ||
66 | return pte; | ||
67 | } | ||
68 | |||
69 | 62 | ||
70 | /* | 63 | /* |
71 | * BAD_PAGE is the page that is used for page faults when linux | 64 | * BAD_PAGE is the page that is used for page faults when linux |
diff --git a/arch/arm/common/clkdev.c b/arch/arm/common/clkdev.c index 17a17b49a45b..1037bba18329 100644 --- a/arch/arm/common/clkdev.c +++ b/arch/arm/common/clkdev.c | |||
@@ -24,6 +24,15 @@ | |||
24 | static LIST_HEAD(clocks); | 24 | static LIST_HEAD(clocks); |
25 | static DEFINE_MUTEX(clocks_mutex); | 25 | static DEFINE_MUTEX(clocks_mutex); |
26 | 26 | ||
27 | /* | ||
28 | * Find the correct struct clk for the device and connection ID. | ||
29 | * We do slightly fuzzy matching here: | ||
30 | * An entry with a NULL ID is assumed to be a wildcard. | ||
31 | * If an entry has a device ID, it must match | ||
32 | * If an entry has a connection ID, it must match | ||
33 | * Then we take the most specific entry - with the following | ||
34 | * order of precidence: dev+con > dev only > con only. | ||
35 | */ | ||
27 | static struct clk *clk_find(const char *dev_id, const char *con_id) | 36 | static struct clk *clk_find(const char *dev_id, const char *con_id) |
28 | { | 37 | { |
29 | struct clk_lookup *p; | 38 | struct clk_lookup *p; |
@@ -31,13 +40,17 @@ static struct clk *clk_find(const char *dev_id, const char *con_id) | |||
31 | int match, best = 0; | 40 | int match, best = 0; |
32 | 41 | ||
33 | list_for_each_entry(p, &clocks, node) { | 42 | list_for_each_entry(p, &clocks, node) { |
34 | if ((p->dev_id && !dev_id) || (p->con_id && !con_id)) | ||
35 | continue; | ||
36 | match = 0; | 43 | match = 0; |
37 | if (p->dev_id) | 44 | if (p->dev_id) { |
38 | match += 2 * (strcmp(p->dev_id, dev_id) == 0); | 45 | if (!dev_id || strcmp(p->dev_id, dev_id)) |
39 | if (p->con_id) | 46 | continue; |
40 | match += 1 * (strcmp(p->con_id, con_id) == 0); | 47 | match += 2; |
48 | } | ||
49 | if (p->con_id) { | ||
50 | if (!con_id || strcmp(p->con_id, con_id)) | ||
51 | continue; | ||
52 | match += 1; | ||
53 | } | ||
41 | if (match == 0) | 54 | if (match == 0) |
42 | continue; | 55 | continue; |
43 | 56 | ||
diff --git a/arch/arm/configs/afeb9260_defconfig b/arch/arm/configs/afeb9260_defconfig index ce909586a34f..f7a272cb3da0 100644 --- a/arch/arm/configs/afeb9260_defconfig +++ b/arch/arm/configs/afeb9260_defconfig | |||
@@ -719,8 +719,8 @@ CONFIG_I2C_GPIO=y | |||
719 | # Miscellaneous I2C Chip support | 719 | # Miscellaneous I2C Chip support |
720 | # | 720 | # |
721 | # CONFIG_DS1682 is not set | 721 | # CONFIG_DS1682 is not set |
722 | CONFIG_AT24=y | 722 | CONFIG_EEPROM_AT24=y |
723 | # CONFIG_SENSORS_EEPROM is not set | 723 | # CONFIG_EEPROM_LEGACY is not set |
724 | # CONFIG_SENSORS_PCF8574 is not set | 724 | # CONFIG_SENSORS_PCF8574 is not set |
725 | # CONFIG_PCF8575 is not set | 725 | # CONFIG_PCF8575 is not set |
726 | # CONFIG_SENSORS_PCA9539 is not set | 726 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -744,7 +744,7 @@ CONFIG_SPI_ATMEL=y | |||
744 | # | 744 | # |
745 | # SPI Protocol Masters | 745 | # SPI Protocol Masters |
746 | # | 746 | # |
747 | # CONFIG_SPI_AT25 is not set | 747 | # CONFIG_EEPROM_AT25 is not set |
748 | CONFIG_SPI_SPIDEV=y | 748 | CONFIG_SPI_SPIDEV=y |
749 | # CONFIG_SPI_TLE62X0 is not set | 749 | # CONFIG_SPI_TLE62X0 is not set |
750 | # CONFIG_W1 is not set | 750 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/ams_delta_defconfig b/arch/arm/configs/ams_delta_defconfig index 2c4aa11f0b0d..764732529ea3 100644 --- a/arch/arm/configs/ams_delta_defconfig +++ b/arch/arm/configs/ams_delta_defconfig | |||
@@ -767,7 +767,7 @@ CONFIG_I2C_OMAP=y | |||
767 | # | 767 | # |
768 | # CONFIG_SENSORS_DS1337 is not set | 768 | # CONFIG_SENSORS_DS1337 is not set |
769 | # CONFIG_SENSORS_DS1374 is not set | 769 | # CONFIG_SENSORS_DS1374 is not set |
770 | # CONFIG_SENSORS_EEPROM is not set | 770 | # CONFIG_EEPROM_LEGACY is not set |
771 | # CONFIG_SENSORS_PCF8574 is not set | 771 | # CONFIG_SENSORS_PCF8574 is not set |
772 | # CONFIG_SENSORS_PCA9539 is not set | 772 | # CONFIG_SENSORS_PCA9539 is not set |
773 | # CONFIG_SENSORS_PCF8591 is not set | 773 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/at91cap9adk_defconfig b/arch/arm/configs/at91cap9adk_defconfig index bf97801a1068..bc6bd9f6174d 100644 --- a/arch/arm/configs/at91cap9adk_defconfig +++ b/arch/arm/configs/at91cap9adk_defconfig | |||
@@ -676,7 +676,7 @@ CONFIG_I2C_CHARDEV=y | |||
676 | # CONFIG_SENSORS_DS1337 is not set | 676 | # CONFIG_SENSORS_DS1337 is not set |
677 | # CONFIG_SENSORS_DS1374 is not set | 677 | # CONFIG_SENSORS_DS1374 is not set |
678 | # CONFIG_DS1682 is not set | 678 | # CONFIG_DS1682 is not set |
679 | # CONFIG_SENSORS_EEPROM is not set | 679 | # CONFIG_EEPROM_LEGACY is not set |
680 | # CONFIG_SENSORS_PCF8574 is not set | 680 | # CONFIG_SENSORS_PCF8574 is not set |
681 | # CONFIG_SENSORS_PCA9539 is not set | 681 | # CONFIG_SENSORS_PCA9539 is not set |
682 | # CONFIG_SENSORS_PCF8591 is not set | 682 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -703,7 +703,7 @@ CONFIG_SPI_ATMEL=y | |||
703 | # | 703 | # |
704 | # SPI Protocol Masters | 704 | # SPI Protocol Masters |
705 | # | 705 | # |
706 | # CONFIG_SPI_AT25 is not set | 706 | # CONFIG_EEPROM_AT25 is not set |
707 | # CONFIG_SPI_SPIDEV is not set | 707 | # CONFIG_SPI_SPIDEV is not set |
708 | # CONFIG_SPI_TLE62X0 is not set | 708 | # CONFIG_SPI_TLE62X0 is not set |
709 | # CONFIG_W1 is not set | 709 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/at91rm9200dk_defconfig b/arch/arm/configs/at91rm9200dk_defconfig index 868fb7b9530b..238b218394e3 100644 --- a/arch/arm/configs/at91rm9200dk_defconfig +++ b/arch/arm/configs/at91rm9200dk_defconfig | |||
@@ -636,7 +636,7 @@ CONFIG_I2C_GPIO=y | |||
636 | # | 636 | # |
637 | # CONFIG_SENSORS_DS1337 is not set | 637 | # CONFIG_SENSORS_DS1337 is not set |
638 | # CONFIG_SENSORS_DS1374 is not set | 638 | # CONFIG_SENSORS_DS1374 is not set |
639 | # CONFIG_SENSORS_EEPROM is not set | 639 | # CONFIG_EEPROM_LEGACY is not set |
640 | # CONFIG_SENSORS_PCF8574 is not set | 640 | # CONFIG_SENSORS_PCF8574 is not set |
641 | # CONFIG_SENSORS_PCA9539 is not set | 641 | # CONFIG_SENSORS_PCA9539 is not set |
642 | # CONFIG_SENSORS_PCF8591 is not set | 642 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/at91rm9200ek_defconfig b/arch/arm/configs/at91rm9200ek_defconfig index de43fc675616..9f7a99ace514 100644 --- a/arch/arm/configs/at91rm9200ek_defconfig +++ b/arch/arm/configs/at91rm9200ek_defconfig | |||
@@ -610,7 +610,7 @@ CONFIG_I2C_GPIO=y | |||
610 | # | 610 | # |
611 | # CONFIG_SENSORS_DS1337 is not set | 611 | # CONFIG_SENSORS_DS1337 is not set |
612 | # CONFIG_SENSORS_DS1374 is not set | 612 | # CONFIG_SENSORS_DS1374 is not set |
613 | # CONFIG_SENSORS_EEPROM is not set | 613 | # CONFIG_EEPROM_LEGACY is not set |
614 | # CONFIG_SENSORS_PCF8574 is not set | 614 | # CONFIG_SENSORS_PCF8574 is not set |
615 | # CONFIG_SENSORS_PCA9539 is not set | 615 | # CONFIG_SENSORS_PCA9539 is not set |
616 | # CONFIG_SENSORS_PCF8591 is not set | 616 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/at91sam9260ek_defconfig b/arch/arm/configs/at91sam9260ek_defconfig index 38e6a0abeb4e..e0ee7060f9aa 100644 --- a/arch/arm/configs/at91sam9260ek_defconfig +++ b/arch/arm/configs/at91sam9260ek_defconfig | |||
@@ -582,7 +582,7 @@ CONFIG_I2C_GPIO=y | |||
582 | # CONFIG_SENSORS_DS1337 is not set | 582 | # CONFIG_SENSORS_DS1337 is not set |
583 | # CONFIG_SENSORS_DS1374 is not set | 583 | # CONFIG_SENSORS_DS1374 is not set |
584 | # CONFIG_DS1682 is not set | 584 | # CONFIG_DS1682 is not set |
585 | # CONFIG_SENSORS_EEPROM is not set | 585 | # CONFIG_EEPROM_LEGACY is not set |
586 | # CONFIG_SENSORS_PCF8574 is not set | 586 | # CONFIG_SENSORS_PCF8574 is not set |
587 | # CONFIG_SENSORS_PCA9539 is not set | 587 | # CONFIG_SENSORS_PCA9539 is not set |
588 | # CONFIG_SENSORS_PCF8591 is not set | 588 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/at91sam9261ek_defconfig b/arch/arm/configs/at91sam9261ek_defconfig index 93b779f94b41..01d1ef97d8be 100644 --- a/arch/arm/configs/at91sam9261ek_defconfig +++ b/arch/arm/configs/at91sam9261ek_defconfig | |||
@@ -660,7 +660,7 @@ CONFIG_I2C_GPIO=y | |||
660 | # CONFIG_SENSORS_DS1337 is not set | 660 | # CONFIG_SENSORS_DS1337 is not set |
661 | # CONFIG_SENSORS_DS1374 is not set | 661 | # CONFIG_SENSORS_DS1374 is not set |
662 | # CONFIG_DS1682 is not set | 662 | # CONFIG_DS1682 is not set |
663 | # CONFIG_SENSORS_EEPROM is not set | 663 | # CONFIG_EEPROM_LEGACY is not set |
664 | # CONFIG_SENSORS_PCF8574 is not set | 664 | # CONFIG_SENSORS_PCF8574 is not set |
665 | # CONFIG_SENSORS_PCA9539 is not set | 665 | # CONFIG_SENSORS_PCA9539 is not set |
666 | # CONFIG_SENSORS_PCF8591 is not set | 666 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -687,7 +687,7 @@ CONFIG_SPI_ATMEL=y | |||
687 | # | 687 | # |
688 | # SPI Protocol Masters | 688 | # SPI Protocol Masters |
689 | # | 689 | # |
690 | # CONFIG_SPI_AT25 is not set | 690 | # CONFIG_EEPROM_AT25 is not set |
691 | # CONFIG_SPI_SPIDEV is not set | 691 | # CONFIG_SPI_SPIDEV is not set |
692 | # CONFIG_SPI_TLE62X0 is not set | 692 | # CONFIG_SPI_TLE62X0 is not set |
693 | # CONFIG_W1 is not set | 693 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/at91sam9263ek_defconfig b/arch/arm/configs/at91sam9263ek_defconfig index a7ddd94363ca..036a126725c1 100644 --- a/arch/arm/configs/at91sam9263ek_defconfig +++ b/arch/arm/configs/at91sam9263ek_defconfig | |||
@@ -670,7 +670,7 @@ CONFIG_I2C_GPIO=y | |||
670 | # CONFIG_SENSORS_DS1337 is not set | 670 | # CONFIG_SENSORS_DS1337 is not set |
671 | # CONFIG_SENSORS_DS1374 is not set | 671 | # CONFIG_SENSORS_DS1374 is not set |
672 | # CONFIG_DS1682 is not set | 672 | # CONFIG_DS1682 is not set |
673 | # CONFIG_SENSORS_EEPROM is not set | 673 | # CONFIG_EEPROM_LEGACY is not set |
674 | # CONFIG_SENSORS_PCF8574 is not set | 674 | # CONFIG_SENSORS_PCF8574 is not set |
675 | # CONFIG_SENSORS_PCA9539 is not set | 675 | # CONFIG_SENSORS_PCA9539 is not set |
676 | # CONFIG_SENSORS_PCF8591 is not set | 676 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -697,7 +697,7 @@ CONFIG_SPI_ATMEL=y | |||
697 | # | 697 | # |
698 | # SPI Protocol Masters | 698 | # SPI Protocol Masters |
699 | # | 699 | # |
700 | # CONFIG_SPI_AT25 is not set | 700 | # CONFIG_EEPROM_AT25 is not set |
701 | # CONFIG_SPI_SPIDEV is not set | 701 | # CONFIG_SPI_SPIDEV is not set |
702 | # CONFIG_SPI_TLE62X0 is not set | 702 | # CONFIG_SPI_TLE62X0 is not set |
703 | # CONFIG_W1 is not set | 703 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/at91sam9g20ek_defconfig b/arch/arm/configs/at91sam9g20ek_defconfig index df0d6ee672b3..7e018a04c31b 100644 --- a/arch/arm/configs/at91sam9g20ek_defconfig +++ b/arch/arm/configs/at91sam9g20ek_defconfig | |||
@@ -665,7 +665,7 @@ CONFIG_SPI_ATMEL=y | |||
665 | # | 665 | # |
666 | # SPI Protocol Masters | 666 | # SPI Protocol Masters |
667 | # | 667 | # |
668 | # CONFIG_SPI_AT25 is not set | 668 | # CONFIG_EEPROM_AT25 is not set |
669 | CONFIG_SPI_SPIDEV=y | 669 | CONFIG_SPI_SPIDEV=y |
670 | # CONFIG_SPI_TLE62X0 is not set | 670 | # CONFIG_SPI_TLE62X0 is not set |
671 | # CONFIG_W1 is not set | 671 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/at91sam9rlek_defconfig b/arch/arm/configs/at91sam9rlek_defconfig index 811bebbdc784..237a2a6a8517 100644 --- a/arch/arm/configs/at91sam9rlek_defconfig +++ b/arch/arm/configs/at91sam9rlek_defconfig | |||
@@ -566,7 +566,7 @@ CONFIG_I2C_GPIO=y | |||
566 | # CONFIG_SENSORS_DS1337 is not set | 566 | # CONFIG_SENSORS_DS1337 is not set |
567 | # CONFIG_SENSORS_DS1374 is not set | 567 | # CONFIG_SENSORS_DS1374 is not set |
568 | # CONFIG_DS1682 is not set | 568 | # CONFIG_DS1682 is not set |
569 | # CONFIG_SENSORS_EEPROM is not set | 569 | # CONFIG_EEPROM_LEGACY is not set |
570 | # CONFIG_SENSORS_PCF8574 is not set | 570 | # CONFIG_SENSORS_PCF8574 is not set |
571 | # CONFIG_SENSORS_PCA9539 is not set | 571 | # CONFIG_SENSORS_PCA9539 is not set |
572 | # CONFIG_SENSORS_PCF8591 is not set | 572 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -593,7 +593,7 @@ CONFIG_SPI_ATMEL=y | |||
593 | # | 593 | # |
594 | # SPI Protocol Masters | 594 | # SPI Protocol Masters |
595 | # | 595 | # |
596 | # CONFIG_SPI_AT25 is not set | 596 | # CONFIG_EEPROM_AT25 is not set |
597 | # CONFIG_SPI_SPIDEV is not set | 597 | # CONFIG_SPI_SPIDEV is not set |
598 | # CONFIG_SPI_TLE62X0 is not set | 598 | # CONFIG_SPI_TLE62X0 is not set |
599 | # CONFIG_W1 is not set | 599 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/ateb9200_defconfig b/arch/arm/configs/ateb9200_defconfig index 85c80f723d8e..a19e824cf7f8 100644 --- a/arch/arm/configs/ateb9200_defconfig +++ b/arch/arm/configs/ateb9200_defconfig | |||
@@ -723,7 +723,7 @@ CONFIG_I2C_GPIO=m | |||
723 | # | 723 | # |
724 | # CONFIG_SENSORS_DS1337 is not set | 724 | # CONFIG_SENSORS_DS1337 is not set |
725 | # CONFIG_SENSORS_DS1374 is not set | 725 | # CONFIG_SENSORS_DS1374 is not set |
726 | # CONFIG_SENSORS_EEPROM is not set | 726 | # CONFIG_EEPROM_LEGACY is not set |
727 | # CONFIG_SENSORS_PCF8574 is not set | 727 | # CONFIG_SENSORS_PCF8574 is not set |
728 | # CONFIG_SENSORS_PCA9539 is not set | 728 | # CONFIG_SENSORS_PCA9539 is not set |
729 | # CONFIG_SENSORS_PCF8591 is not set | 729 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/badge4_defconfig b/arch/arm/configs/badge4_defconfig index b2bbf217c707..80222feb7dad 100644 --- a/arch/arm/configs/badge4_defconfig +++ b/arch/arm/configs/badge4_defconfig | |||
@@ -750,7 +750,7 @@ CONFIG_I2C_ELEKTOR=m | |||
750 | # Other I2C Chip support | 750 | # Other I2C Chip support |
751 | # | 751 | # |
752 | # CONFIG_SENSORS_DS1337 is not set | 752 | # CONFIG_SENSORS_DS1337 is not set |
753 | # CONFIG_SENSORS_EEPROM is not set | 753 | # CONFIG_EEPROM_LEGACY is not set |
754 | # CONFIG_SENSORS_PCF8574 is not set | 754 | # CONFIG_SENSORS_PCF8574 is not set |
755 | # CONFIG_SENSORS_PCF8591 is not set | 755 | # CONFIG_SENSORS_PCF8591 is not set |
756 | # CONFIG_SENSORS_RTC8564 is not set | 756 | # CONFIG_SENSORS_RTC8564 is not set |
diff --git a/arch/arm/configs/cam60_defconfig b/arch/arm/configs/cam60_defconfig index f945105d6cd6..8448108347cf 100644 --- a/arch/arm/configs/cam60_defconfig +++ b/arch/arm/configs/cam60_defconfig | |||
@@ -722,7 +722,7 @@ CONFIG_I2C_ALGOBIT=y | |||
722 | # CONFIG_SENSORS_DS1337 is not set | 722 | # CONFIG_SENSORS_DS1337 is not set |
723 | # CONFIG_SENSORS_DS1374 is not set | 723 | # CONFIG_SENSORS_DS1374 is not set |
724 | # CONFIG_DS1682 is not set | 724 | # CONFIG_DS1682 is not set |
725 | # CONFIG_SENSORS_EEPROM is not set | 725 | # CONFIG_EEPROM_LEGACY is not set |
726 | # CONFIG_SENSORS_PCF8574 is not set | 726 | # CONFIG_SENSORS_PCF8574 is not set |
727 | # CONFIG_SENSORS_PCA9539 is not set | 727 | # CONFIG_SENSORS_PCA9539 is not set |
728 | # CONFIG_SENSORS_PCF8591 is not set | 728 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -749,7 +749,7 @@ CONFIG_SPI_ATMEL=y | |||
749 | # | 749 | # |
750 | # SPI Protocol Masters | 750 | # SPI Protocol Masters |
751 | # | 751 | # |
752 | # CONFIG_SPI_AT25 is not set | 752 | # CONFIG_EEPROM_AT25 is not set |
753 | # CONFIG_SPI_SPIDEV is not set | 753 | # CONFIG_SPI_SPIDEV is not set |
754 | # CONFIG_SPI_TLE62X0 is not set | 754 | # CONFIG_SPI_TLE62X0 is not set |
755 | # CONFIG_W1 is not set | 755 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/cm_x300_defconfig b/arch/arm/configs/cm_x300_defconfig index 46f1c9dc350c..227da0843ead 100644 --- a/arch/arm/configs/cm_x300_defconfig +++ b/arch/arm/configs/cm_x300_defconfig | |||
@@ -763,8 +763,8 @@ CONFIG_I2C_PXA=y | |||
763 | # Miscellaneous I2C Chip support | 763 | # Miscellaneous I2C Chip support |
764 | # | 764 | # |
765 | # CONFIG_DS1682 is not set | 765 | # CONFIG_DS1682 is not set |
766 | # CONFIG_AT24 is not set | 766 | # CONFIG_EEPROM_AT24 is not set |
767 | # CONFIG_SENSORS_EEPROM is not set | 767 | # CONFIG_EEPROM_LEGACY is not set |
768 | # CONFIG_SENSORS_PCF8574 is not set | 768 | # CONFIG_SENSORS_PCF8574 is not set |
769 | # CONFIG_PCF8575 is not set | 769 | # CONFIG_PCF8575 is not set |
770 | # CONFIG_SENSORS_PCF8591 is not set | 770 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/colibri_defconfig b/arch/arm/configs/colibri_defconfig index c3e3418ed4fe..744086fff414 100644 --- a/arch/arm/configs/colibri_defconfig +++ b/arch/arm/configs/colibri_defconfig | |||
@@ -801,7 +801,7 @@ CONFIG_I2C_CHARDEV=y | |||
801 | # CONFIG_SENSORS_DS1337 is not set | 801 | # CONFIG_SENSORS_DS1337 is not set |
802 | # CONFIG_SENSORS_DS1374 is not set | 802 | # CONFIG_SENSORS_DS1374 is not set |
803 | # CONFIG_DS1682 is not set | 803 | # CONFIG_DS1682 is not set |
804 | # CONFIG_SENSORS_EEPROM is not set | 804 | # CONFIG_EEPROM_LEGACY is not set |
805 | # CONFIG_SENSORS_PCF8574 is not set | 805 | # CONFIG_SENSORS_PCF8574 is not set |
806 | # CONFIG_SENSORS_PCA9539 is not set | 806 | # CONFIG_SENSORS_PCA9539 is not set |
807 | # CONFIG_SENSORS_PCF8591 is not set | 807 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/corgi_defconfig b/arch/arm/configs/corgi_defconfig index 98765438048d..d6cd165e9310 100644 --- a/arch/arm/configs/corgi_defconfig +++ b/arch/arm/configs/corgi_defconfig | |||
@@ -982,8 +982,8 @@ CONFIG_I2C_PXA=y | |||
982 | # Miscellaneous I2C Chip support | 982 | # Miscellaneous I2C Chip support |
983 | # | 983 | # |
984 | # CONFIG_DS1682 is not set | 984 | # CONFIG_DS1682 is not set |
985 | # CONFIG_AT24 is not set | 985 | # CONFIG_EEPROM_AT24 is not set |
986 | # CONFIG_SENSORS_EEPROM is not set | 986 | # CONFIG_EEPROM_LEGACY is not set |
987 | # CONFIG_SENSORS_PCF8574 is not set | 987 | # CONFIG_SENSORS_PCF8574 is not set |
988 | # CONFIG_PCF8575 is not set | 988 | # CONFIG_PCF8575 is not set |
989 | # CONFIG_SENSORS_PCA9539 is not set | 989 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -1008,7 +1008,7 @@ CONFIG_SPI_PXA2XX=y | |||
1008 | # | 1008 | # |
1009 | # SPI Protocol Masters | 1009 | # SPI Protocol Masters |
1010 | # | 1010 | # |
1011 | # CONFIG_SPI_AT25 is not set | 1011 | # CONFIG_EEPROM_AT25 is not set |
1012 | # CONFIG_SPI_SPIDEV is not set | 1012 | # CONFIG_SPI_SPIDEV is not set |
1013 | # CONFIG_SPI_TLE62X0 is not set | 1013 | # CONFIG_SPI_TLE62X0 is not set |
1014 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 1014 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/csb337_defconfig b/arch/arm/configs/csb337_defconfig index 67e65e4f0cdc..29f68c2effe6 100644 --- a/arch/arm/configs/csb337_defconfig +++ b/arch/arm/configs/csb337_defconfig | |||
@@ -679,7 +679,7 @@ CONFIG_I2C_GPIO=y | |||
679 | # CONFIG_SENSORS_DS1337 is not set | 679 | # CONFIG_SENSORS_DS1337 is not set |
680 | # CONFIG_SENSORS_DS1374 is not set | 680 | # CONFIG_SENSORS_DS1374 is not set |
681 | # CONFIG_DS1682 is not set | 681 | # CONFIG_DS1682 is not set |
682 | # CONFIG_SENSORS_EEPROM is not set | 682 | # CONFIG_EEPROM_LEGACY is not set |
683 | # CONFIG_SENSORS_PCF8574 is not set | 683 | # CONFIG_SENSORS_PCF8574 is not set |
684 | # CONFIG_SENSORS_PCA9539 is not set | 684 | # CONFIG_SENSORS_PCA9539 is not set |
685 | # CONFIG_SENSORS_PCF8591 is not set | 685 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/csb637_defconfig b/arch/arm/configs/csb637_defconfig index 99702146c9fc..f7b60ceed6c7 100644 --- a/arch/arm/configs/csb637_defconfig +++ b/arch/arm/configs/csb637_defconfig | |||
@@ -704,7 +704,7 @@ CONFIG_I2C_CHARDEV=y | |||
704 | # Miscellaneous I2C Chip support | 704 | # Miscellaneous I2C Chip support |
705 | # | 705 | # |
706 | # CONFIG_DS1682 is not set | 706 | # CONFIG_DS1682 is not set |
707 | # CONFIG_SENSORS_EEPROM is not set | 707 | # CONFIG_EEPROM_LEGACY is not set |
708 | # CONFIG_SENSORS_PCF8574 is not set | 708 | # CONFIG_SENSORS_PCF8574 is not set |
709 | # CONFIG_PCF8575 is not set | 709 | # CONFIG_PCF8575 is not set |
710 | # CONFIG_SENSORS_PCF8591 is not set | 710 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ecbat91_defconfig b/arch/arm/configs/ecbat91_defconfig index cfeb817ad21a..ca520733bdb0 100644 --- a/arch/arm/configs/ecbat91_defconfig +++ b/arch/arm/configs/ecbat91_defconfig | |||
@@ -721,7 +721,7 @@ CONFIG_I2C_GPIO=y | |||
721 | # | 721 | # |
722 | # CONFIG_SENSORS_DS1337 is not set | 722 | # CONFIG_SENSORS_DS1337 is not set |
723 | # CONFIG_SENSORS_DS1374 is not set | 723 | # CONFIG_SENSORS_DS1374 is not set |
724 | # CONFIG_SENSORS_EEPROM is not set | 724 | # CONFIG_EEPROM_LEGACY is not set |
725 | # CONFIG_SENSORS_PCF8574 is not set | 725 | # CONFIG_SENSORS_PCF8574 is not set |
726 | # CONFIG_SENSORS_PCA9539 is not set | 726 | # CONFIG_SENSORS_PCA9539 is not set |
727 | # CONFIG_SENSORS_PCF8591 is not set | 727 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -747,7 +747,7 @@ CONFIG_SPI_AT91=y | |||
747 | # | 747 | # |
748 | # SPI Protocol Masters | 748 | # SPI Protocol Masters |
749 | # | 749 | # |
750 | # CONFIG_SPI_AT25 is not set | 750 | # CONFIG_EEPROM_AT25 is not set |
751 | # CONFIG_SPI_SPIDEV is not set | 751 | # CONFIG_SPI_SPIDEV is not set |
752 | 752 | ||
753 | # | 753 | # |
diff --git a/arch/arm/configs/ep93xx_defconfig b/arch/arm/configs/ep93xx_defconfig index 21aa013793c6..3f89d5f25bce 100644 --- a/arch/arm/configs/ep93xx_defconfig +++ b/arch/arm/configs/ep93xx_defconfig | |||
@@ -681,7 +681,7 @@ CONFIG_I2C_ALGOBIT=y | |||
681 | # | 681 | # |
682 | # CONFIG_SENSORS_DS1337 is not set | 682 | # CONFIG_SENSORS_DS1337 is not set |
683 | # CONFIG_SENSORS_DS1374 is not set | 683 | # CONFIG_SENSORS_DS1374 is not set |
684 | CONFIG_SENSORS_EEPROM=y | 684 | CONFIG_EEPROM_LEGACY=y |
685 | # CONFIG_SENSORS_PCF8574 is not set | 685 | # CONFIG_SENSORS_PCF8574 is not set |
686 | # CONFIG_SENSORS_PCA9539 is not set | 686 | # CONFIG_SENSORS_PCA9539 is not set |
687 | # CONFIG_SENSORS_PCF8591 is not set | 687 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ezx_defconfig b/arch/arm/configs/ezx_defconfig index 2a84d557adc2..d5ee16e6abf3 100644 --- a/arch/arm/configs/ezx_defconfig +++ b/arch/arm/configs/ezx_defconfig | |||
@@ -877,7 +877,7 @@ CONFIG_I2C_PXA=y | |||
877 | # Miscellaneous I2C Chip support | 877 | # Miscellaneous I2C Chip support |
878 | # | 878 | # |
879 | # CONFIG_DS1682 is not set | 879 | # CONFIG_DS1682 is not set |
880 | # CONFIG_SENSORS_EEPROM is not set | 880 | # CONFIG_EEPROM_LEGACY is not set |
881 | # CONFIG_SENSORS_PCF8574 is not set | 881 | # CONFIG_SENSORS_PCF8574 is not set |
882 | # CONFIG_PCF8575 is not set | 882 | # CONFIG_PCF8575 is not set |
883 | # CONFIG_SENSORS_PCF8591 is not set | 883 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -900,7 +900,7 @@ CONFIG_SPI_PXA2XX=m | |||
900 | # | 900 | # |
901 | # SPI Protocol Masters | 901 | # SPI Protocol Masters |
902 | # | 902 | # |
903 | # CONFIG_SPI_AT25 is not set | 903 | # CONFIG_EEPROM_AT25 is not set |
904 | # CONFIG_SPI_SPIDEV is not set | 904 | # CONFIG_SPI_SPIDEV is not set |
905 | # CONFIG_SPI_TLE62X0 is not set | 905 | # CONFIG_SPI_TLE62X0 is not set |
906 | CONFIG_HAVE_GPIO_LIB=y | 906 | CONFIG_HAVE_GPIO_LIB=y |
diff --git a/arch/arm/configs/footbridge_defconfig b/arch/arm/configs/footbridge_defconfig index 299dc22294a0..6ace512fa101 100644 --- a/arch/arm/configs/footbridge_defconfig +++ b/arch/arm/configs/footbridge_defconfig | |||
@@ -801,7 +801,7 @@ CONFIG_I2C=m | |||
801 | # | 801 | # |
802 | # Other I2C Chip support | 802 | # Other I2C Chip support |
803 | # | 803 | # |
804 | # CONFIG_SENSORS_EEPROM is not set | 804 | # CONFIG_EEPROM_LEGACY is not set |
805 | # CONFIG_SENSORS_PCF8574 is not set | 805 | # CONFIG_SENSORS_PCF8574 is not set |
806 | # CONFIG_SENSORS_PCF8591 is not set | 806 | # CONFIG_SENSORS_PCF8591 is not set |
807 | # CONFIG_SENSORS_RTC8564 is not set | 807 | # CONFIG_SENSORS_RTC8564 is not set |
diff --git a/arch/arm/configs/iop13xx_defconfig b/arch/arm/configs/iop13xx_defconfig index 482e57061053..89c17761726b 100644 --- a/arch/arm/configs/iop13xx_defconfig +++ b/arch/arm/configs/iop13xx_defconfig | |||
@@ -744,7 +744,7 @@ CONFIG_I2C_IOP3XX=y | |||
744 | # CONFIG_SENSORS_DS1337 is not set | 744 | # CONFIG_SENSORS_DS1337 is not set |
745 | # CONFIG_SENSORS_DS1374 is not set | 745 | # CONFIG_SENSORS_DS1374 is not set |
746 | # CONFIG_DS1682 is not set | 746 | # CONFIG_DS1682 is not set |
747 | # CONFIG_SENSORS_EEPROM is not set | 747 | # CONFIG_EEPROM_LEGACY is not set |
748 | # CONFIG_SENSORS_PCF8574 is not set | 748 | # CONFIG_SENSORS_PCF8574 is not set |
749 | # CONFIG_SENSORS_PCA9539 is not set | 749 | # CONFIG_SENSORS_PCA9539 is not set |
750 | # CONFIG_SENSORS_PCF8591 is not set | 750 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/iop32x_defconfig b/arch/arm/configs/iop32x_defconfig index 8612f58e1056..d70177b38f5f 100644 --- a/arch/arm/configs/iop32x_defconfig +++ b/arch/arm/configs/iop32x_defconfig | |||
@@ -847,7 +847,7 @@ CONFIG_I2C_IOP3XX=y | |||
847 | # CONFIG_SENSORS_DS1337 is not set | 847 | # CONFIG_SENSORS_DS1337 is not set |
848 | # CONFIG_SENSORS_DS1374 is not set | 848 | # CONFIG_SENSORS_DS1374 is not set |
849 | # CONFIG_DS1682 is not set | 849 | # CONFIG_DS1682 is not set |
850 | # CONFIG_SENSORS_EEPROM is not set | 850 | # CONFIG_EEPROM_LEGACY is not set |
851 | # CONFIG_SENSORS_PCF8574 is not set | 851 | # CONFIG_SENSORS_PCF8574 is not set |
852 | # CONFIG_SENSORS_PCA9539 is not set | 852 | # CONFIG_SENSORS_PCA9539 is not set |
853 | # CONFIG_SENSORS_PCF8591 is not set | 853 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/iop33x_defconfig b/arch/arm/configs/iop33x_defconfig index 8b0098d19d08..eec488298267 100644 --- a/arch/arm/configs/iop33x_defconfig +++ b/arch/arm/configs/iop33x_defconfig | |||
@@ -746,7 +746,7 @@ CONFIG_I2C_IOP3XX=y | |||
746 | # CONFIG_SENSORS_DS1337 is not set | 746 | # CONFIG_SENSORS_DS1337 is not set |
747 | # CONFIG_SENSORS_DS1374 is not set | 747 | # CONFIG_SENSORS_DS1374 is not set |
748 | # CONFIG_DS1682 is not set | 748 | # CONFIG_DS1682 is not set |
749 | # CONFIG_SENSORS_EEPROM is not set | 749 | # CONFIG_EEPROM_LEGACY is not set |
750 | # CONFIG_SENSORS_PCF8574 is not set | 750 | # CONFIG_SENSORS_PCF8574 is not set |
751 | # CONFIG_SENSORS_PCA9539 is not set | 751 | # CONFIG_SENSORS_PCA9539 is not set |
752 | # CONFIG_SENSORS_PCF8591 is not set | 752 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ixp2000_defconfig b/arch/arm/configs/ixp2000_defconfig index 84680db6c615..57526c15e854 100644 --- a/arch/arm/configs/ixp2000_defconfig +++ b/arch/arm/configs/ixp2000_defconfig | |||
@@ -768,7 +768,7 @@ CONFIG_I2C_IXP2000=y | |||
768 | # | 768 | # |
769 | # CONFIG_SENSORS_DS1337 is not set | 769 | # CONFIG_SENSORS_DS1337 is not set |
770 | # CONFIG_SENSORS_DS1374 is not set | 770 | # CONFIG_SENSORS_DS1374 is not set |
771 | CONFIG_SENSORS_EEPROM=y | 771 | CONFIG_EEPROM_LEGACY=y |
772 | # CONFIG_SENSORS_PCF8574 is not set | 772 | # CONFIG_SENSORS_PCF8574 is not set |
773 | # CONFIG_SENSORS_PCA9539 is not set | 773 | # CONFIG_SENSORS_PCA9539 is not set |
774 | # CONFIG_SENSORS_PCF8591 is not set | 774 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ixp23xx_defconfig b/arch/arm/configs/ixp23xx_defconfig index 4a2f7b2372db..ef97561ed75b 100644 --- a/arch/arm/configs/ixp23xx_defconfig +++ b/arch/arm/configs/ixp23xx_defconfig | |||
@@ -900,7 +900,7 @@ CONFIG_I2C_ALGOBIT=y | |||
900 | # | 900 | # |
901 | # CONFIG_SENSORS_DS1337 is not set | 901 | # CONFIG_SENSORS_DS1337 is not set |
902 | # CONFIG_SENSORS_DS1374 is not set | 902 | # CONFIG_SENSORS_DS1374 is not set |
903 | CONFIG_SENSORS_EEPROM=y | 903 | CONFIG_EEPROM_LEGACY=y |
904 | # CONFIG_SENSORS_PCF8574 is not set | 904 | # CONFIG_SENSORS_PCF8574 is not set |
905 | # CONFIG_SENSORS_PCA9539 is not set | 905 | # CONFIG_SENSORS_PCA9539 is not set |
906 | # CONFIG_SENSORS_PCF8591 is not set | 906 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ixp4xx_defconfig b/arch/arm/configs/ixp4xx_defconfig index fc14932e3abd..95cd8dfb5f1e 100644 --- a/arch/arm/configs/ixp4xx_defconfig +++ b/arch/arm/configs/ixp4xx_defconfig | |||
@@ -1083,7 +1083,7 @@ CONFIG_I2C_IXP4XX=y | |||
1083 | # CONFIG_SENSORS_DS1337 is not set | 1083 | # CONFIG_SENSORS_DS1337 is not set |
1084 | # CONFIG_SENSORS_DS1374 is not set | 1084 | # CONFIG_SENSORS_DS1374 is not set |
1085 | # CONFIG_DS1682 is not set | 1085 | # CONFIG_DS1682 is not set |
1086 | CONFIG_SENSORS_EEPROM=y | 1086 | CONFIG_EEPROM_LEGACY=y |
1087 | # CONFIG_SENSORS_PCF8574 is not set | 1087 | # CONFIG_SENSORS_PCF8574 is not set |
1088 | # CONFIG_SENSORS_PCA9539 is not set | 1088 | # CONFIG_SENSORS_PCA9539 is not set |
1089 | # CONFIG_SENSORS_PCF8591 is not set | 1089 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/kafa_defconfig b/arch/arm/configs/kafa_defconfig index 6dd95a2c8d5d..9f92fc527f59 100644 --- a/arch/arm/configs/kafa_defconfig +++ b/arch/arm/configs/kafa_defconfig | |||
@@ -603,7 +603,7 @@ CONFIG_I2C_GPIO=y | |||
603 | # | 603 | # |
604 | # CONFIG_SENSORS_DS1337 is not set | 604 | # CONFIG_SENSORS_DS1337 is not set |
605 | # CONFIG_SENSORS_DS1374 is not set | 605 | # CONFIG_SENSORS_DS1374 is not set |
606 | # CONFIG_SENSORS_EEPROM is not set | 606 | # CONFIG_EEPROM_LEGACY is not set |
607 | # CONFIG_SENSORS_PCF8574 is not set | 607 | # CONFIG_SENSORS_PCF8574 is not set |
608 | # CONFIG_SENSORS_PCA9539 is not set | 608 | # CONFIG_SENSORS_PCA9539 is not set |
609 | # CONFIG_SENSORS_PCF8591 is not set | 609 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig index ab8b1e0d0dac..4bc38078d580 100644 --- a/arch/arm/configs/kirkwood_defconfig +++ b/arch/arm/configs/kirkwood_defconfig | |||
@@ -905,8 +905,8 @@ CONFIG_I2C_MV64XXX=y | |||
905 | # Miscellaneous I2C Chip support | 905 | # Miscellaneous I2C Chip support |
906 | # | 906 | # |
907 | # CONFIG_DS1682 is not set | 907 | # CONFIG_DS1682 is not set |
908 | # CONFIG_AT24 is not set | 908 | # CONFIG_EEPROM_AT24 is not set |
909 | # CONFIG_SENSORS_EEPROM is not set | 909 | # CONFIG_EEPROM_LEGACY is not set |
910 | # CONFIG_SENSORS_PCF8574 is not set | 910 | # CONFIG_SENSORS_PCF8574 is not set |
911 | # CONFIG_PCF8575 is not set | 911 | # CONFIG_PCF8575 is not set |
912 | # CONFIG_SENSORS_PCA9539 is not set | 912 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -930,7 +930,7 @@ CONFIG_SPI_ORION=y | |||
930 | # | 930 | # |
931 | # SPI Protocol Masters | 931 | # SPI Protocol Masters |
932 | # | 932 | # |
933 | # CONFIG_SPI_AT25 is not set | 933 | # CONFIG_EEPROM_AT25 is not set |
934 | # CONFIG_SPI_SPIDEV is not set | 934 | # CONFIG_SPI_SPIDEV is not set |
935 | # CONFIG_SPI_TLE62X0 is not set | 935 | # CONFIG_SPI_TLE62X0 is not set |
936 | # CONFIG_W1 is not set | 936 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/loki_defconfig b/arch/arm/configs/loki_defconfig index 17da7c3b3d53..b720fcffbcd4 100644 --- a/arch/arm/configs/loki_defconfig +++ b/arch/arm/configs/loki_defconfig | |||
@@ -654,7 +654,7 @@ CONFIG_I2C_MV64XXX=y | |||
654 | # Miscellaneous I2C Chip support | 654 | # Miscellaneous I2C Chip support |
655 | # | 655 | # |
656 | # CONFIG_DS1682 is not set | 656 | # CONFIG_DS1682 is not set |
657 | # CONFIG_SENSORS_EEPROM is not set | 657 | # CONFIG_EEPROM_LEGACY is not set |
658 | # CONFIG_SENSORS_PCF8574 is not set | 658 | # CONFIG_SENSORS_PCF8574 is not set |
659 | # CONFIG_PCF8575 is not set | 659 | # CONFIG_PCF8575 is not set |
660 | # CONFIG_SENSORS_PCF8591 is not set | 660 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -675,7 +675,7 @@ CONFIG_SPI_MASTER=y | |||
675 | # | 675 | # |
676 | # SPI Protocol Masters | 676 | # SPI Protocol Masters |
677 | # | 677 | # |
678 | # CONFIG_SPI_AT25 is not set | 678 | # CONFIG_EEPROM_AT25 is not set |
679 | # CONFIG_SPI_SPIDEV is not set | 679 | # CONFIG_SPI_SPIDEV is not set |
680 | # CONFIG_SPI_TLE62X0 is not set | 680 | # CONFIG_SPI_TLE62X0 is not set |
681 | # CONFIG_W1 is not set | 681 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/magician_defconfig b/arch/arm/configs/magician_defconfig index 4d11678584db..73ba62b71063 100644 --- a/arch/arm/configs/magician_defconfig +++ b/arch/arm/configs/magician_defconfig | |||
@@ -678,7 +678,7 @@ CONFIG_I2C_PXA=m | |||
678 | # CONFIG_SENSORS_DS1337 is not set | 678 | # CONFIG_SENSORS_DS1337 is not set |
679 | # CONFIG_SENSORS_DS1374 is not set | 679 | # CONFIG_SENSORS_DS1374 is not set |
680 | # CONFIG_DS1682 is not set | 680 | # CONFIG_DS1682 is not set |
681 | # CONFIG_SENSORS_EEPROM is not set | 681 | # CONFIG_EEPROM_LEGACY is not set |
682 | # CONFIG_SENSORS_PCF8574 is not set | 682 | # CONFIG_SENSORS_PCF8574 is not set |
683 | # CONFIG_SENSORS_PCA9539 is not set | 683 | # CONFIG_SENSORS_PCA9539 is not set |
684 | # CONFIG_SENSORS_PCF8591 is not set | 684 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/msm_defconfig b/arch/arm/configs/msm_defconfig index 3b4ecf2a90dd..cc3b06ee24f9 100644 --- a/arch/arm/configs/msm_defconfig +++ b/arch/arm/configs/msm_defconfig | |||
@@ -580,7 +580,7 @@ CONFIG_I2C_MSM=y | |||
580 | # CONFIG_SENSORS_DS1337 is not set | 580 | # CONFIG_SENSORS_DS1337 is not set |
581 | # CONFIG_SENSORS_DS1374 is not set | 581 | # CONFIG_SENSORS_DS1374 is not set |
582 | # CONFIG_DS1682 is not set | 582 | # CONFIG_DS1682 is not set |
583 | # CONFIG_SENSORS_EEPROM is not set | 583 | # CONFIG_EEPROM_LEGACY is not set |
584 | # CONFIG_SENSORS_PCF8574 is not set | 584 | # CONFIG_SENSORS_PCF8574 is not set |
585 | # CONFIG_SENSORS_PCA9539 is not set | 585 | # CONFIG_SENSORS_PCA9539 is not set |
586 | CONFIG_SENSORS_PCA9633=y | 586 | CONFIG_SENSORS_PCA9633=y |
diff --git a/arch/arm/configs/mv78xx0_defconfig b/arch/arm/configs/mv78xx0_defconfig index d38ebf8721a4..83c817f31bcc 100644 --- a/arch/arm/configs/mv78xx0_defconfig +++ b/arch/arm/configs/mv78xx0_defconfig | |||
@@ -832,7 +832,7 @@ CONFIG_I2C_MV64XXX=y | |||
832 | # Miscellaneous I2C Chip support | 832 | # Miscellaneous I2C Chip support |
833 | # | 833 | # |
834 | # CONFIG_DS1682 is not set | 834 | # CONFIG_DS1682 is not set |
835 | # CONFIG_SENSORS_EEPROM is not set | 835 | # CONFIG_EEPROM_LEGACY is not set |
836 | # CONFIG_SENSORS_PCF8574 is not set | 836 | # CONFIG_SENSORS_PCF8574 is not set |
837 | # CONFIG_PCF8575 is not set | 837 | # CONFIG_PCF8575 is not set |
838 | # CONFIG_SENSORS_PCF8591 is not set | 838 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/n770_defconfig b/arch/arm/configs/n770_defconfig index 568ef1770d5f..672f6db06a52 100644 --- a/arch/arm/configs/n770_defconfig +++ b/arch/arm/configs/n770_defconfig | |||
@@ -767,7 +767,7 @@ CONFIG_I2C_OMAP=y | |||
767 | # CONFIG_SENSORS_DS1337 is not set | 767 | # CONFIG_SENSORS_DS1337 is not set |
768 | # CONFIG_SENSORS_DS1374 is not set | 768 | # CONFIG_SENSORS_DS1374 is not set |
769 | # CONFIG_DS1682 is not set | 769 | # CONFIG_DS1682 is not set |
770 | # CONFIG_SENSORS_EEPROM is not set | 770 | # CONFIG_EEPROM_LEGACY is not set |
771 | # CONFIG_SENSORS_PCF8574 is not set | 771 | # CONFIG_SENSORS_PCF8574 is not set |
772 | # CONFIG_SENSORS_PCA9539 is not set | 772 | # CONFIG_SENSORS_PCA9539 is not set |
773 | # CONFIG_SENSORS_PCF8591 is not set | 773 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -798,7 +798,7 @@ CONFIG_SPI_OMAP_UWIRE=y | |||
798 | # | 798 | # |
799 | # SPI Protocol Masters | 799 | # SPI Protocol Masters |
800 | # | 800 | # |
801 | # CONFIG_SPI_AT25 is not set | 801 | # CONFIG_EEPROM_AT25 is not set |
802 | # CONFIG_SPI_TSC2101 is not set | 802 | # CONFIG_SPI_TSC2101 is not set |
803 | # CONFIG_SPI_TSC2102 is not set | 803 | # CONFIG_SPI_TSC2102 is not set |
804 | # CONFIG_SPI_TSC210X is not set | 804 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/neocore926_defconfig b/arch/arm/configs/neocore926_defconfig index 325f1e105f69..e0e4e98b5aa2 100644 --- a/arch/arm/configs/neocore926_defconfig +++ b/arch/arm/configs/neocore926_defconfig | |||
@@ -774,8 +774,8 @@ CONFIG_I2C_CHARDEV=y | |||
774 | # Miscellaneous I2C Chip support | 774 | # Miscellaneous I2C Chip support |
775 | # | 775 | # |
776 | # CONFIG_DS1682 is not set | 776 | # CONFIG_DS1682 is not set |
777 | # CONFIG_AT24 is not set | 777 | # CONFIG_EEPROM_AT24 is not set |
778 | # CONFIG_SENSORS_EEPROM is not set | 778 | # CONFIG_EEPROM_LEGACY is not set |
779 | # CONFIG_SENSORS_PCF8574 is not set | 779 | # CONFIG_SENSORS_PCF8574 is not set |
780 | # CONFIG_PCF8575 is not set | 780 | # CONFIG_PCF8575 is not set |
781 | # CONFIG_SENSORS_PCA9539 is not set | 781 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -798,7 +798,7 @@ CONFIG_SPI_ATMEL=y | |||
798 | # | 798 | # |
799 | # SPI Protocol Masters | 799 | # SPI Protocol Masters |
800 | # | 800 | # |
801 | # CONFIG_SPI_AT25 is not set | 801 | # CONFIG_EEPROM_AT25 is not set |
802 | # CONFIG_SPI_SPIDEV is not set | 802 | # CONFIG_SPI_SPIDEV is not set |
803 | # CONFIG_SPI_TLE62X0 is not set | 803 | # CONFIG_SPI_TLE62X0 is not set |
804 | # CONFIG_W1 is not set | 804 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/neponset_defconfig b/arch/arm/configs/neponset_defconfig index 92ccdc6492f7..d81ea219c934 100644 --- a/arch/arm/configs/neponset_defconfig +++ b/arch/arm/configs/neponset_defconfig | |||
@@ -737,7 +737,7 @@ CONFIG_I2C_ALGOBIT=y | |||
737 | # | 737 | # |
738 | # Other I2C Chip support | 738 | # Other I2C Chip support |
739 | # | 739 | # |
740 | # CONFIG_SENSORS_EEPROM is not set | 740 | # CONFIG_EEPROM_LEGACY is not set |
741 | # CONFIG_SENSORS_PCF8574 is not set | 741 | # CONFIG_SENSORS_PCF8574 is not set |
742 | # CONFIG_SENSORS_PCF8591 is not set | 742 | # CONFIG_SENSORS_PCF8591 is not set |
743 | # CONFIG_SENSORS_RTC8564 is not set | 743 | # CONFIG_SENSORS_RTC8564 is not set |
diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig index e042d27eae16..4c6fb7e959df 100644 --- a/arch/arm/configs/omap3_beagle_defconfig +++ b/arch/arm/configs/omap3_beagle_defconfig | |||
@@ -687,8 +687,8 @@ CONFIG_I2C_OMAP=y | |||
687 | # Miscellaneous I2C Chip support | 687 | # Miscellaneous I2C Chip support |
688 | # | 688 | # |
689 | # CONFIG_DS1682 is not set | 689 | # CONFIG_DS1682 is not set |
690 | # CONFIG_AT24 is not set | 690 | # CONFIG_EEPROM_AT24 is not set |
691 | # CONFIG_SENSORS_EEPROM is not set | 691 | # CONFIG_EEPROM_LEGACY is not set |
692 | # CONFIG_SENSORS_PCF8574 is not set | 692 | # CONFIG_SENSORS_PCF8574 is not set |
693 | # CONFIG_PCF8575 is not set | 693 | # CONFIG_PCF8575 is not set |
694 | # CONFIG_SENSORS_PCA9539 is not set | 694 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/omap3_pandora_defconfig b/arch/arm/configs/omap3_pandora_defconfig index 09543f4de5bc..b54ad2e2da36 100644 --- a/arch/arm/configs/omap3_pandora_defconfig +++ b/arch/arm/configs/omap3_pandora_defconfig | |||
@@ -713,8 +713,8 @@ CONFIG_I2C_OMAP=y | |||
713 | # Miscellaneous I2C Chip support | 713 | # Miscellaneous I2C Chip support |
714 | # | 714 | # |
715 | # CONFIG_DS1682 is not set | 715 | # CONFIG_DS1682 is not set |
716 | # CONFIG_AT24 is not set | 716 | # CONFIG_EEPROM_AT24 is not set |
717 | # CONFIG_SENSORS_EEPROM is not set | 717 | # CONFIG_EEPROM_LEGACY is not set |
718 | # CONFIG_SENSORS_PCF8574 is not set | 718 | # CONFIG_SENSORS_PCF8574 is not set |
719 | # CONFIG_PCF8575 is not set | 719 | # CONFIG_PCF8575 is not set |
720 | # CONFIG_SENSORS_PCA9539 is not set | 720 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -740,7 +740,7 @@ CONFIG_SPI_OMAP24XX=y | |||
740 | # | 740 | # |
741 | # SPI Protocol Masters | 741 | # SPI Protocol Masters |
742 | # | 742 | # |
743 | # CONFIG_SPI_AT25 is not set | 743 | # CONFIG_EEPROM_AT25 is not set |
744 | # CONFIG_SPI_SPIDEV is not set | 744 | # CONFIG_SPI_SPIDEV is not set |
745 | # CONFIG_SPI_TLE62X0 is not set | 745 | # CONFIG_SPI_TLE62X0 is not set |
746 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 746 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/omap_2430sdp_defconfig b/arch/arm/configs/omap_2430sdp_defconfig index b0617c0da2a1..640e9afc4630 100644 --- a/arch/arm/configs/omap_2430sdp_defconfig +++ b/arch/arm/configs/omap_2430sdp_defconfig | |||
@@ -710,7 +710,7 @@ CONFIG_I2C_OMAP=y | |||
710 | # CONFIG_SENSORS_DS1337 is not set | 710 | # CONFIG_SENSORS_DS1337 is not set |
711 | # CONFIG_SENSORS_DS1374 is not set | 711 | # CONFIG_SENSORS_DS1374 is not set |
712 | # CONFIG_DS1682 is not set | 712 | # CONFIG_DS1682 is not set |
713 | # CONFIG_SENSORS_EEPROM is not set | 713 | # CONFIG_EEPROM_LEGACY is not set |
714 | # CONFIG_SENSORS_PCF8574 is not set | 714 | # CONFIG_SENSORS_PCF8574 is not set |
715 | # CONFIG_SENSORS_PCA9539 is not set | 715 | # CONFIG_SENSORS_PCA9539 is not set |
716 | # CONFIG_SENSORS_PCF8591 is not set | 716 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -743,7 +743,7 @@ CONFIG_SPI_MASTER=y | |||
743 | # | 743 | # |
744 | # SPI Protocol Masters | 744 | # SPI Protocol Masters |
745 | # | 745 | # |
746 | # CONFIG_SPI_AT25 is not set | 746 | # CONFIG_EEPROM_AT25 is not set |
747 | # CONFIG_SPI_TSC2101 is not set | 747 | # CONFIG_SPI_TSC2101 is not set |
748 | # CONFIG_SPI_TSC2102 is not set | 748 | # CONFIG_SPI_TSC2102 is not set |
749 | # CONFIG_SPI_TSC210X is not set | 749 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/omap_apollon_2420_defconfig b/arch/arm/configs/omap_apollon_2420_defconfig index bb39dfc72d69..ac7adf34c54a 100644 --- a/arch/arm/configs/omap_apollon_2420_defconfig +++ b/arch/arm/configs/omap_apollon_2420_defconfig | |||
@@ -612,7 +612,7 @@ CONFIG_SPI_OMAP24XX=y | |||
612 | # | 612 | # |
613 | # SPI Protocol Masters | 613 | # SPI Protocol Masters |
614 | # | 614 | # |
615 | # CONFIG_SPI_AT25 is not set | 615 | # CONFIG_EEPROM_AT25 is not set |
616 | # CONFIG_SPI_TSC2101 is not set | 616 | # CONFIG_SPI_TSC2101 is not set |
617 | # CONFIG_SPI_TSC2102 is not set | 617 | # CONFIG_SPI_TSC2102 is not set |
618 | # CONFIG_SPI_TSC210X is not set | 618 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/omap_generic_1510_defconfig b/arch/arm/configs/omap_generic_1510_defconfig index 4b1c252f2091..ccdc661b5856 100644 --- a/arch/arm/configs/omap_generic_1510_defconfig +++ b/arch/arm/configs/omap_generic_1510_defconfig | |||
@@ -637,7 +637,7 @@ CONFIG_I2C_ALGOBIT=y | |||
637 | # CONFIG_SENSORS_DS1337 is not set | 637 | # CONFIG_SENSORS_DS1337 is not set |
638 | # CONFIG_SENSORS_DS1374 is not set | 638 | # CONFIG_SENSORS_DS1374 is not set |
639 | # CONFIG_DS1682 is not set | 639 | # CONFIG_DS1682 is not set |
640 | # CONFIG_SENSORS_EEPROM is not set | 640 | # CONFIG_EEPROM_LEGACY is not set |
641 | # CONFIG_SENSORS_PCF8574 is not set | 641 | # CONFIG_SENSORS_PCF8574 is not set |
642 | # CONFIG_SENSORS_PCA9539 is not set | 642 | # CONFIG_SENSORS_PCA9539 is not set |
643 | # CONFIG_SENSORS_PCF8591 is not set | 643 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/omap_generic_1610_defconfig b/arch/arm/configs/omap_generic_1610_defconfig index fc66f019d56c..0c42c8955047 100644 --- a/arch/arm/configs/omap_generic_1610_defconfig +++ b/arch/arm/configs/omap_generic_1610_defconfig | |||
@@ -641,7 +641,7 @@ CONFIG_I2C_ALGOBIT=y | |||
641 | # CONFIG_SENSORS_DS1337 is not set | 641 | # CONFIG_SENSORS_DS1337 is not set |
642 | # CONFIG_SENSORS_DS1374 is not set | 642 | # CONFIG_SENSORS_DS1374 is not set |
643 | # CONFIG_DS1682 is not set | 643 | # CONFIG_DS1682 is not set |
644 | # CONFIG_SENSORS_EEPROM is not set | 644 | # CONFIG_EEPROM_LEGACY is not set |
645 | # CONFIG_SENSORS_PCF8574 is not set | 645 | # CONFIG_SENSORS_PCF8574 is not set |
646 | # CONFIG_SENSORS_PCA9539 is not set | 646 | # CONFIG_SENSORS_PCA9539 is not set |
647 | # CONFIG_SENSORS_PCF8591 is not set | 647 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/omap_h2_1610_defconfig b/arch/arm/configs/omap_h2_1610_defconfig index c03507202f3c..74dbdc644d32 100644 --- a/arch/arm/configs/omap_h2_1610_defconfig +++ b/arch/arm/configs/omap_h2_1610_defconfig | |||
@@ -700,7 +700,7 @@ CONFIG_I2C_OMAP=y | |||
700 | # Miscellaneous I2C Chip support | 700 | # Miscellaneous I2C Chip support |
701 | # | 701 | # |
702 | # CONFIG_DS1682 is not set | 702 | # CONFIG_DS1682 is not set |
703 | # CONFIG_SENSORS_EEPROM is not set | 703 | # CONFIG_EEPROM_LEGACY is not set |
704 | # CONFIG_SENSORS_PCF8574 is not set | 704 | # CONFIG_SENSORS_PCF8574 is not set |
705 | # CONFIG_PCF8575 is not set | 705 | # CONFIG_PCF8575 is not set |
706 | # CONFIG_SENSORS_PCF8591 is not set | 706 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -731,7 +731,7 @@ CONFIG_SPI_OMAP_UWIRE=y | |||
731 | # | 731 | # |
732 | # SPI Protocol Masters | 732 | # SPI Protocol Masters |
733 | # | 733 | # |
734 | # CONFIG_SPI_AT25 is not set | 734 | # CONFIG_EEPROM_AT25 is not set |
735 | CONFIG_SPI_TSC2101=y | 735 | CONFIG_SPI_TSC2101=y |
736 | # CONFIG_SPI_TSC2102 is not set | 736 | # CONFIG_SPI_TSC2102 is not set |
737 | # CONFIG_SPI_TSC210X is not set | 737 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/omap_h4_2420_defconfig b/arch/arm/configs/omap_h4_2420_defconfig index 5bc89185a64f..a4aab8e4c29b 100644 --- a/arch/arm/configs/omap_h4_2420_defconfig +++ b/arch/arm/configs/omap_h4_2420_defconfig | |||
@@ -681,7 +681,7 @@ CONFIG_I2C_OMAP=y | |||
681 | # CONFIG_SENSORS_DS1337 is not set | 681 | # CONFIG_SENSORS_DS1337 is not set |
682 | # CONFIG_SENSORS_DS1374 is not set | 682 | # CONFIG_SENSORS_DS1374 is not set |
683 | # CONFIG_DS1682 is not set | 683 | # CONFIG_DS1682 is not set |
684 | # CONFIG_SENSORS_EEPROM is not set | 684 | # CONFIG_EEPROM_LEGACY is not set |
685 | # CONFIG_SENSORS_PCF8574 is not set | 685 | # CONFIG_SENSORS_PCF8574 is not set |
686 | # CONFIG_SENSORS_PCA9539 is not set | 686 | # CONFIG_SENSORS_PCA9539 is not set |
687 | # CONFIG_SENSORS_PCF8591 is not set | 687 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/omap_innovator_1510_defconfig b/arch/arm/configs/omap_innovator_1510_defconfig index 55b2611bd90a..0cfe363e3365 100644 --- a/arch/arm/configs/omap_innovator_1510_defconfig +++ b/arch/arm/configs/omap_innovator_1510_defconfig | |||
@@ -631,7 +631,7 @@ CONFIG_I2C_BOARDINFO=y | |||
631 | # CONFIG_SENSORS_DS1337 is not set | 631 | # CONFIG_SENSORS_DS1337 is not set |
632 | # CONFIG_SENSORS_DS1374 is not set | 632 | # CONFIG_SENSORS_DS1374 is not set |
633 | # CONFIG_DS1682 is not set | 633 | # CONFIG_DS1682 is not set |
634 | # CONFIG_SENSORS_EEPROM is not set | 634 | # CONFIG_EEPROM_LEGACY is not set |
635 | # CONFIG_SENSORS_PCF8574 is not set | 635 | # CONFIG_SENSORS_PCF8574 is not set |
636 | # CONFIG_SENSORS_PCA9539 is not set | 636 | # CONFIG_SENSORS_PCA9539 is not set |
637 | # CONFIG_SENSORS_PCF8591 is not set | 637 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/omap_ldp_defconfig b/arch/arm/configs/omap_ldp_defconfig index b77d054169ee..aa9d34feddc6 100644 --- a/arch/arm/configs/omap_ldp_defconfig +++ b/arch/arm/configs/omap_ldp_defconfig | |||
@@ -629,8 +629,8 @@ CONFIG_I2C_OMAP=y | |||
629 | # Miscellaneous I2C Chip support | 629 | # Miscellaneous I2C Chip support |
630 | # | 630 | # |
631 | # CONFIG_DS1682 is not set | 631 | # CONFIG_DS1682 is not set |
632 | # CONFIG_AT24 is not set | 632 | # CONFIG_EEPROM_AT24 is not set |
633 | # CONFIG_SENSORS_EEPROM is not set | 633 | # CONFIG_EEPROM_LEGACY is not set |
634 | # CONFIG_SENSORS_PCF8574 is not set | 634 | # CONFIG_SENSORS_PCF8574 is not set |
635 | # CONFIG_PCF8575 is not set | 635 | # CONFIG_PCF8575 is not set |
636 | # CONFIG_SENSORS_PCA9539 is not set | 636 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -656,7 +656,7 @@ CONFIG_SPI_OMAP24XX=y | |||
656 | # | 656 | # |
657 | # SPI Protocol Masters | 657 | # SPI Protocol Masters |
658 | # | 658 | # |
659 | # CONFIG_SPI_AT25 is not set | 659 | # CONFIG_EEPROM_AT25 is not set |
660 | # CONFIG_SPI_SPIDEV is not set | 660 | # CONFIG_SPI_SPIDEV is not set |
661 | # CONFIG_SPI_TLE62X0 is not set | 661 | # CONFIG_SPI_TLE62X0 is not set |
662 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 662 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/omap_osk_5912_defconfig b/arch/arm/configs/omap_osk_5912_defconfig index b68e0144cab5..6b3b5c610da0 100644 --- a/arch/arm/configs/omap_osk_5912_defconfig +++ b/arch/arm/configs/omap_osk_5912_defconfig | |||
@@ -711,7 +711,7 @@ CONFIG_I2C_OMAP=y | |||
711 | # CONFIG_SENSORS_DS1337 is not set | 711 | # CONFIG_SENSORS_DS1337 is not set |
712 | # CONFIG_SENSORS_DS1374 is not set | 712 | # CONFIG_SENSORS_DS1374 is not set |
713 | # CONFIG_DS1682 is not set | 713 | # CONFIG_DS1682 is not set |
714 | # CONFIG_SENSORS_EEPROM is not set | 714 | # CONFIG_EEPROM_LEGACY is not set |
715 | # CONFIG_SENSORS_PCF8574 is not set | 715 | # CONFIG_SENSORS_PCF8574 is not set |
716 | # CONFIG_SENSORS_PCA9539 is not set | 716 | # CONFIG_SENSORS_PCA9539 is not set |
717 | # CONFIG_SENSORS_PCF8591 is not set | 717 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/onearm_defconfig b/arch/arm/configs/onearm_defconfig index 418ca2febbe3..f8701fadb600 100644 --- a/arch/arm/configs/onearm_defconfig +++ b/arch/arm/configs/onearm_defconfig | |||
@@ -698,7 +698,7 @@ CONFIG_I2C_CHARDEV=y | |||
698 | # | 698 | # |
699 | # CONFIG_SENSORS_DS1337 is not set | 699 | # CONFIG_SENSORS_DS1337 is not set |
700 | # CONFIG_SENSORS_DS1374 is not set | 700 | # CONFIG_SENSORS_DS1374 is not set |
701 | # CONFIG_SENSORS_EEPROM is not set | 701 | # CONFIG_EEPROM_LEGACY is not set |
702 | # CONFIG_SENSORS_PCF8574 is not set | 702 | # CONFIG_SENSORS_PCF8574 is not set |
703 | # CONFIG_SENSORS_PCA9539 is not set | 703 | # CONFIG_SENSORS_PCA9539 is not set |
704 | # CONFIG_SENSORS_PCF8591 is not set | 704 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/orion5x_defconfig b/arch/arm/configs/orion5x_defconfig index b2456ca544c9..a8ee6984a09e 100644 --- a/arch/arm/configs/orion5x_defconfig +++ b/arch/arm/configs/orion5x_defconfig | |||
@@ -886,8 +886,8 @@ CONFIG_I2C_MV64XXX=y | |||
886 | # Miscellaneous I2C Chip support | 886 | # Miscellaneous I2C Chip support |
887 | # | 887 | # |
888 | # CONFIG_DS1682 is not set | 888 | # CONFIG_DS1682 is not set |
889 | # CONFIG_AT24 is not set | 889 | # CONFIG_EEPROM_AT24 is not set |
890 | # CONFIG_SENSORS_EEPROM is not set | 890 | # CONFIG_EEPROM_LEGACY is not set |
891 | # CONFIG_SENSORS_PCF8574 is not set | 891 | # CONFIG_SENSORS_PCF8574 is not set |
892 | # CONFIG_PCF8575 is not set | 892 | # CONFIG_PCF8575 is not set |
893 | # CONFIG_SENSORS_PCA9539 is not set | 893 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/overo_defconfig b/arch/arm/configs/overo_defconfig index 49200967a153..a57f9e4124fa 100644 --- a/arch/arm/configs/overo_defconfig +++ b/arch/arm/configs/overo_defconfig | |||
@@ -858,8 +858,8 @@ CONFIG_I2C_OMAP=y | |||
858 | # Miscellaneous I2C Chip support | 858 | # Miscellaneous I2C Chip support |
859 | # | 859 | # |
860 | # CONFIG_DS1682 is not set | 860 | # CONFIG_DS1682 is not set |
861 | # CONFIG_AT24 is not set | 861 | # CONFIG_EEPROM_AT24 is not set |
862 | CONFIG_SENSORS_EEPROM=y | 862 | CONFIG_EEPROM_LEGACY=y |
863 | # CONFIG_SENSORS_PCF8574 is not set | 863 | # CONFIG_SENSORS_PCF8574 is not set |
864 | # CONFIG_PCF8575 is not set | 864 | # CONFIG_PCF8575 is not set |
865 | # CONFIG_SENSORS_PCA9539 is not set | 865 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -885,7 +885,7 @@ CONFIG_SPI_OMAP24XX=y | |||
885 | # | 885 | # |
886 | # SPI Protocol Masters | 886 | # SPI Protocol Masters |
887 | # | 887 | # |
888 | # CONFIG_SPI_AT25 is not set | 888 | # CONFIG_EEPROM_AT25 is not set |
889 | # CONFIG_SPI_SPIDEV is not set | 889 | # CONFIG_SPI_SPIDEV is not set |
890 | # CONFIG_SPI_TLE62X0 is not set | 890 | # CONFIG_SPI_TLE62X0 is not set |
891 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 891 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/palmz71_defconfig b/arch/arm/configs/palmz71_defconfig index 6361922e71c1..08e14068fff7 100644 --- a/arch/arm/configs/palmz71_defconfig +++ b/arch/arm/configs/palmz71_defconfig | |||
@@ -554,7 +554,7 @@ CONFIG_SPI_OMAP_UWIRE=y | |||
554 | # | 554 | # |
555 | # SPI Protocol Masters | 555 | # SPI Protocol Masters |
556 | # | 556 | # |
557 | # CONFIG_SPI_AT25 is not set | 557 | # CONFIG_EEPROM_AT25 is not set |
558 | # CONFIG_SPI_TSC2101 is not set | 558 | # CONFIG_SPI_TSC2101 is not set |
559 | # CONFIG_SPI_TSC2102 is not set | 559 | # CONFIG_SPI_TSC2102 is not set |
560 | # CONFIG_SPI_TSC210X is not set | 560 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/palmz72_defconfig b/arch/arm/configs/palmz72_defconfig index 3245f8f33e0a..a0dc37c05dea 100644 --- a/arch/arm/configs/palmz72_defconfig +++ b/arch/arm/configs/palmz72_defconfig | |||
@@ -527,8 +527,8 @@ CONFIG_I2C_PXA=y | |||
527 | # Miscellaneous I2C Chip support | 527 | # Miscellaneous I2C Chip support |
528 | # | 528 | # |
529 | # CONFIG_DS1682 is not set | 529 | # CONFIG_DS1682 is not set |
530 | # CONFIG_AT24 is not set | 530 | # CONFIG_EEPROM_AT24 is not set |
531 | # CONFIG_SENSORS_EEPROM is not set | 531 | # CONFIG_EEPROM_LEGACY is not set |
532 | # CONFIG_SENSORS_PCF8574 is not set | 532 | # CONFIG_SENSORS_PCF8574 is not set |
533 | # CONFIG_PCF8575 is not set | 533 | # CONFIG_PCF8575 is not set |
534 | # CONFIG_SENSORS_PCA9539 is not set | 534 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -552,7 +552,7 @@ CONFIG_SPI_MASTER=y | |||
552 | # | 552 | # |
553 | # SPI Protocol Masters | 553 | # SPI Protocol Masters |
554 | # | 554 | # |
555 | # CONFIG_SPI_AT25 is not set | 555 | # CONFIG_EEPROM_AT25 is not set |
556 | CONFIG_SPI_SPIDEV=y | 556 | CONFIG_SPI_SPIDEV=y |
557 | # CONFIG_SPI_TLE62X0 is not set | 557 | # CONFIG_SPI_TLE62X0 is not set |
558 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 558 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/pcm027_defconfig b/arch/arm/configs/pcm027_defconfig index 17b9b2469570..05ad96a43b1d 100644 --- a/arch/arm/configs/pcm027_defconfig +++ b/arch/arm/configs/pcm027_defconfig | |||
@@ -606,7 +606,7 @@ CONFIG_I2C_PXA=y | |||
606 | # CONFIG_SENSORS_DS1337 is not set | 606 | # CONFIG_SENSORS_DS1337 is not set |
607 | # CONFIG_SENSORS_DS1374 is not set | 607 | # CONFIG_SENSORS_DS1374 is not set |
608 | # CONFIG_DS1682 is not set | 608 | # CONFIG_DS1682 is not set |
609 | CONFIG_SENSORS_EEPROM=y | 609 | CONFIG_EEPROM_LEGACY=y |
610 | # CONFIG_SENSORS_PCF8574 is not set | 610 | # CONFIG_SENSORS_PCF8574 is not set |
611 | # CONFIG_SENSORS_PCA9539 is not set | 611 | # CONFIG_SENSORS_PCA9539 is not set |
612 | # CONFIG_SENSORS_PCF8591 is not set | 612 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/pcm038_defconfig b/arch/arm/configs/pcm038_defconfig index 6b798c215ca8..41429a00f58c 100644 --- a/arch/arm/configs/pcm038_defconfig +++ b/arch/arm/configs/pcm038_defconfig | |||
@@ -604,7 +604,7 @@ CONFIG_I2C_BOARDINFO=y | |||
604 | # Miscellaneous I2C Chip support | 604 | # Miscellaneous I2C Chip support |
605 | # | 605 | # |
606 | # CONFIG_DS1682 is not set | 606 | # CONFIG_DS1682 is not set |
607 | # CONFIG_SENSORS_EEPROM is not set | 607 | # CONFIG_EEPROM_LEGACY is not set |
608 | # CONFIG_SENSORS_PCF8574 is not set | 608 | # CONFIG_SENSORS_PCF8574 is not set |
609 | # CONFIG_PCF8575 is not set | 609 | # CONFIG_PCF8575 is not set |
610 | # CONFIG_SENSORS_PCF8591 is not set | 610 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -626,7 +626,7 @@ CONFIG_SPI_BITBANG=y | |||
626 | # | 626 | # |
627 | # SPI Protocol Masters | 627 | # SPI Protocol Masters |
628 | # | 628 | # |
629 | # CONFIG_SPI_AT25 is not set | 629 | # CONFIG_EEPROM_AT25 is not set |
630 | # CONFIG_SPI_SPIDEV is not set | 630 | # CONFIG_SPI_SPIDEV is not set |
631 | # CONFIG_SPI_TLE62X0 is not set | 631 | # CONFIG_SPI_TLE62X0 is not set |
632 | CONFIG_HAVE_GPIO_LIB=y | 632 | CONFIG_HAVE_GPIO_LIB=y |
diff --git a/arch/arm/configs/picotux200_defconfig b/arch/arm/configs/picotux200_defconfig index 59e4463c2da2..9018f0f298aa 100644 --- a/arch/arm/configs/picotux200_defconfig +++ b/arch/arm/configs/picotux200_defconfig | |||
@@ -744,7 +744,7 @@ CONFIG_I2C_GPIO=m | |||
744 | # | 744 | # |
745 | CONFIG_SENSORS_DS1337=m | 745 | CONFIG_SENSORS_DS1337=m |
746 | CONFIG_SENSORS_DS1374=m | 746 | CONFIG_SENSORS_DS1374=m |
747 | CONFIG_SENSORS_EEPROM=m | 747 | CONFIG_EEPROM_LEGACY=m |
748 | CONFIG_SENSORS_PCF8574=m | 748 | CONFIG_SENSORS_PCF8574=m |
749 | CONFIG_SENSORS_PCA9539=m | 749 | CONFIG_SENSORS_PCA9539=m |
750 | CONFIG_SENSORS_PCF8591=m | 750 | CONFIG_SENSORS_PCF8591=m |
diff --git a/arch/arm/configs/pnx4008_defconfig b/arch/arm/configs/pnx4008_defconfig index 811b8f60d19d..67b5f1e15f4a 100644 --- a/arch/arm/configs/pnx4008_defconfig +++ b/arch/arm/configs/pnx4008_defconfig | |||
@@ -915,7 +915,7 @@ CONFIG_I2C_ALGOPCA=m | |||
915 | # | 915 | # |
916 | # CONFIG_SENSORS_DS1337 is not set | 916 | # CONFIG_SENSORS_DS1337 is not set |
917 | # CONFIG_SENSORS_DS1374 is not set | 917 | # CONFIG_SENSORS_DS1374 is not set |
918 | CONFIG_SENSORS_EEPROM=m | 918 | CONFIG_EEPROM_LEGACY=m |
919 | CONFIG_SENSORS_PCF8574=m | 919 | CONFIG_SENSORS_PCF8574=m |
920 | # CONFIG_SENSORS_PCA9539 is not set | 920 | # CONFIG_SENSORS_PCA9539 is not set |
921 | CONFIG_SENSORS_PCF8591=m | 921 | CONFIG_SENSORS_PCF8591=m |
diff --git a/arch/arm/configs/qil-a9260_defconfig b/arch/arm/configs/qil-a9260_defconfig index 5cbd81589647..cd1d717903ac 100644 --- a/arch/arm/configs/qil-a9260_defconfig +++ b/arch/arm/configs/qil-a9260_defconfig | |||
@@ -687,7 +687,7 @@ CONFIG_I2C_CHARDEV=y | |||
687 | # CONFIG_SENSORS_DS1337 is not set | 687 | # CONFIG_SENSORS_DS1337 is not set |
688 | # CONFIG_SENSORS_DS1374 is not set | 688 | # CONFIG_SENSORS_DS1374 is not set |
689 | # CONFIG_DS1682 is not set | 689 | # CONFIG_DS1682 is not set |
690 | # CONFIG_SENSORS_EEPROM is not set | 690 | # CONFIG_EEPROM_LEGACY is not set |
691 | # CONFIG_SENSORS_PCF8574 is not set | 691 | # CONFIG_SENSORS_PCF8574 is not set |
692 | # CONFIG_SENSORS_PCA9539 is not set | 692 | # CONFIG_SENSORS_PCA9539 is not set |
693 | # CONFIG_SENSORS_PCF8591 is not set | 693 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -714,7 +714,7 @@ CONFIG_SPI_ATMEL=y | |||
714 | # | 714 | # |
715 | # SPI Protocol Masters | 715 | # SPI Protocol Masters |
716 | # | 716 | # |
717 | # CONFIG_SPI_AT25 is not set | 717 | # CONFIG_EEPROM_AT25 is not set |
718 | # CONFIG_SPI_SPIDEV is not set | 718 | # CONFIG_SPI_SPIDEV is not set |
719 | # CONFIG_SPI_TLE62X0 is not set | 719 | # CONFIG_SPI_TLE62X0 is not set |
720 | # CONFIG_W1 is not set | 720 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/rpc_defconfig b/arch/arm/configs/rpc_defconfig index f62d1817d2c6..a29d61fe4c6a 100644 --- a/arch/arm/configs/rpc_defconfig +++ b/arch/arm/configs/rpc_defconfig | |||
@@ -590,7 +590,7 @@ CONFIG_I2C_ACORN=y | |||
590 | # CONFIG_SENSORS_DS1337 is not set | 590 | # CONFIG_SENSORS_DS1337 is not set |
591 | # CONFIG_SENSORS_DS1374 is not set | 591 | # CONFIG_SENSORS_DS1374 is not set |
592 | # CONFIG_DS1682 is not set | 592 | # CONFIG_DS1682 is not set |
593 | # CONFIG_SENSORS_EEPROM is not set | 593 | # CONFIG_EEPROM_LEGACY is not set |
594 | # CONFIG_SENSORS_PCF8574 is not set | 594 | # CONFIG_SENSORS_PCF8574 is not set |
595 | # CONFIG_SENSORS_PCA9539 is not set | 595 | # CONFIG_SENSORS_PCA9539 is not set |
596 | # CONFIG_SENSORS_PCF8591 is not set | 596 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig index 35faaea8623e..65a583ee5df8 100644 --- a/arch/arm/configs/s3c2410_defconfig +++ b/arch/arm/configs/s3c2410_defconfig | |||
@@ -923,7 +923,7 @@ CONFIG_I2C_SIMTEC=y | |||
923 | # Miscellaneous I2C Chip support | 923 | # Miscellaneous I2C Chip support |
924 | # | 924 | # |
925 | # CONFIG_DS1682 is not set | 925 | # CONFIG_DS1682 is not set |
926 | CONFIG_SENSORS_EEPROM=m | 926 | CONFIG_EEPROM_LEGACY=m |
927 | # CONFIG_SENSORS_PCF8574 is not set | 927 | # CONFIG_SENSORS_PCF8574 is not set |
928 | # CONFIG_PCF8575 is not set | 928 | # CONFIG_PCF8575 is not set |
929 | # CONFIG_SENSORS_PCF8591 is not set | 929 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -950,7 +950,7 @@ CONFIG_SPI_S3C24XX_GPIO=m | |||
950 | # | 950 | # |
951 | # SPI Protocol Masters | 951 | # SPI Protocol Masters |
952 | # | 952 | # |
953 | # CONFIG_SPI_AT25 is not set | 953 | # CONFIG_EEPROM_AT25 is not set |
954 | # CONFIG_SPI_SPIDEV is not set | 954 | # CONFIG_SPI_SPIDEV is not set |
955 | # CONFIG_SPI_TLE62X0 is not set | 955 | # CONFIG_SPI_TLE62X0 is not set |
956 | CONFIG_HAVE_GPIO_LIB=y | 956 | CONFIG_HAVE_GPIO_LIB=y |
diff --git a/arch/arm/configs/s3c6400_defconfig b/arch/arm/configs/s3c6400_defconfig index cf3c1b5d7048..2e8fa50e9a09 100644 --- a/arch/arm/configs/s3c6400_defconfig +++ b/arch/arm/configs/s3c6400_defconfig | |||
@@ -465,8 +465,8 @@ CONFIG_I2C_S3C2410=y | |||
465 | # Miscellaneous I2C Chip support | 465 | # Miscellaneous I2C Chip support |
466 | # | 466 | # |
467 | # CONFIG_DS1682 is not set | 467 | # CONFIG_DS1682 is not set |
468 | CONFIG_AT24=y | 468 | CONFIG_EEPROM_AT24=y |
469 | # CONFIG_SENSORS_EEPROM is not set | 469 | # CONFIG_EEPROM_LEGACY is not set |
470 | # CONFIG_SENSORS_PCF8574 is not set | 470 | # CONFIG_SENSORS_PCF8574 is not set |
471 | # CONFIG_PCF8575 is not set | 471 | # CONFIG_PCF8575 is not set |
472 | # CONFIG_SENSORS_PCA9539 is not set | 472 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defconfig index 4df5b4db2aa0..745c68ffb885 100644 --- a/arch/arm/configs/spitz_defconfig +++ b/arch/arm/configs/spitz_defconfig | |||
@@ -977,8 +977,8 @@ CONFIG_I2C_PXA=y | |||
977 | # Miscellaneous I2C Chip support | 977 | # Miscellaneous I2C Chip support |
978 | # | 978 | # |
979 | # CONFIG_DS1682 is not set | 979 | # CONFIG_DS1682 is not set |
980 | # CONFIG_AT24 is not set | 980 | # CONFIG_EEPROM_AT24 is not set |
981 | # CONFIG_SENSORS_EEPROM is not set | 981 | # CONFIG_EEPROM_LEGACY is not set |
982 | # CONFIG_SENSORS_PCF8574 is not set | 982 | # CONFIG_SENSORS_PCF8574 is not set |
983 | # CONFIG_PCF8575 is not set | 983 | # CONFIG_PCF8575 is not set |
984 | # CONFIG_SENSORS_PCA9539 is not set | 984 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -1003,7 +1003,7 @@ CONFIG_SPI_PXA2XX=y | |||
1003 | # | 1003 | # |
1004 | # SPI Protocol Masters | 1004 | # SPI Protocol Masters |
1005 | # | 1005 | # |
1006 | # CONFIG_SPI_AT25 is not set | 1006 | # CONFIG_EEPROM_AT25 is not set |
1007 | # CONFIG_SPI_SPIDEV is not set | 1007 | # CONFIG_SPI_SPIDEV is not set |
1008 | # CONFIG_SPI_TLE62X0 is not set | 1008 | # CONFIG_SPI_TLE62X0 is not set |
1009 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 1009 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/sx1_defconfig b/arch/arm/configs/sx1_defconfig index 853dcdd9f2e0..25b007ff8bab 100644 --- a/arch/arm/configs/sx1_defconfig +++ b/arch/arm/configs/sx1_defconfig | |||
@@ -610,7 +610,7 @@ CONFIG_I2C_OMAP=y | |||
610 | # | 610 | # |
611 | # CONFIG_SENSORS_DS1337 is not set | 611 | # CONFIG_SENSORS_DS1337 is not set |
612 | # CONFIG_SENSORS_DS1374 is not set | 612 | # CONFIG_SENSORS_DS1374 is not set |
613 | # CONFIG_SENSORS_EEPROM is not set | 613 | # CONFIG_EEPROM_LEGACY is not set |
614 | # CONFIG_SENSORS_PCF8574 is not set | 614 | # CONFIG_SENSORS_PCF8574 is not set |
615 | # CONFIG_SENSORS_PCA9539 is not set | 615 | # CONFIG_SENSORS_PCA9539 is not set |
616 | # CONFIG_SENSORS_PCF8591 is not set | 616 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/trizeps4_defconfig b/arch/arm/configs/trizeps4_defconfig index 9033d147f052..b6f838197816 100644 --- a/arch/arm/configs/trizeps4_defconfig +++ b/arch/arm/configs/trizeps4_defconfig | |||
@@ -948,7 +948,7 @@ CONFIG_I2C_PXA_SLAVE=y | |||
948 | # | 948 | # |
949 | # CONFIG_SENSORS_DS1337 is not set | 949 | # CONFIG_SENSORS_DS1337 is not set |
950 | # CONFIG_SENSORS_DS1374 is not set | 950 | # CONFIG_SENSORS_DS1374 is not set |
951 | # CONFIG_SENSORS_EEPROM is not set | 951 | # CONFIG_EEPROM_LEGACY is not set |
952 | # CONFIG_SENSORS_PCF8574 is not set | 952 | # CONFIG_SENSORS_PCF8574 is not set |
953 | # CONFIG_SENSORS_PCA9539 is not set | 953 | # CONFIG_SENSORS_PCA9539 is not set |
954 | # CONFIG_SENSORS_PCF8591 is not set | 954 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/usb-a9260_defconfig b/arch/arm/configs/usb-a9260_defconfig index fcb4aaabd439..fd7774033d64 100644 --- a/arch/arm/configs/usb-a9260_defconfig +++ b/arch/arm/configs/usb-a9260_defconfig | |||
@@ -676,7 +676,7 @@ CONFIG_SPI_ATMEL=y | |||
676 | # | 676 | # |
677 | # SPI Protocol Masters | 677 | # SPI Protocol Masters |
678 | # | 678 | # |
679 | # CONFIG_SPI_AT25 is not set | 679 | # CONFIG_EEPROM_AT25 is not set |
680 | # CONFIG_SPI_SPIDEV is not set | 680 | # CONFIG_SPI_SPIDEV is not set |
681 | # CONFIG_SPI_TLE62X0 is not set | 681 | # CONFIG_SPI_TLE62X0 is not set |
682 | # CONFIG_W1 is not set | 682 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/usb-a9263_defconfig b/arch/arm/configs/usb-a9263_defconfig index b786e0407e8e..e7c19dd92557 100644 --- a/arch/arm/configs/usb-a9263_defconfig +++ b/arch/arm/configs/usb-a9263_defconfig | |||
@@ -668,7 +668,7 @@ CONFIG_SPI_ATMEL=y | |||
668 | # | 668 | # |
669 | # SPI Protocol Masters | 669 | # SPI Protocol Masters |
670 | # | 670 | # |
671 | # CONFIG_SPI_AT25 is not set | 671 | # CONFIG_EEPROM_AT25 is not set |
672 | # CONFIG_SPI_SPIDEV is not set | 672 | # CONFIG_SPI_SPIDEV is not set |
673 | # CONFIG_SPI_TLE62X0 is not set | 673 | # CONFIG_SPI_TLE62X0 is not set |
674 | # CONFIG_W1 is not set | 674 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/versatile_defconfig b/arch/arm/configs/versatile_defconfig index 8355f88f7292..b11c5da3996c 100644 --- a/arch/arm/configs/versatile_defconfig +++ b/arch/arm/configs/versatile_defconfig | |||
@@ -611,7 +611,7 @@ CONFIG_I2C_ALGOBIT=y | |||
611 | # | 611 | # |
612 | # CONFIG_SENSORS_DS1337 is not set | 612 | # CONFIG_SENSORS_DS1337 is not set |
613 | # CONFIG_SENSORS_DS1374 is not set | 613 | # CONFIG_SENSORS_DS1374 is not set |
614 | CONFIG_SENSORS_EEPROM=m | 614 | CONFIG_EEPROM_LEGACY=m |
615 | # CONFIG_SENSORS_PCF8574 is not set | 615 | # CONFIG_SENSORS_PCF8574 is not set |
616 | # CONFIG_SENSORS_PCA9539 is not set | 616 | # CONFIG_SENSORS_PCA9539 is not set |
617 | # CONFIG_SENSORS_PCF8591 is not set | 617 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/viper_defconfig b/arch/arm/configs/viper_defconfig index d01fecb8673e..30f463d2fa8a 100644 --- a/arch/arm/configs/viper_defconfig +++ b/arch/arm/configs/viper_defconfig | |||
@@ -860,8 +860,8 @@ CONFIG_I2C_PXA=y | |||
860 | # Miscellaneous I2C Chip support | 860 | # Miscellaneous I2C Chip support |
861 | # | 861 | # |
862 | # CONFIG_DS1682 is not set | 862 | # CONFIG_DS1682 is not set |
863 | # CONFIG_AT24 is not set | 863 | # CONFIG_EEPROM_AT24 is not set |
864 | # CONFIG_SENSORS_EEPROM is not set | 864 | # CONFIG_EEPROM_LEGACY is not set |
865 | # CONFIG_SENSORS_PCF8574 is not set | 865 | # CONFIG_SENSORS_PCF8574 is not set |
866 | # CONFIG_PCF8575 is not set | 866 | # CONFIG_PCF8575 is not set |
867 | # CONFIG_SENSORS_PCA9539 is not set | 867 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/xm_x2xx_defconfig b/arch/arm/configs/xm_x2xx_defconfig index f891364deceb..1039f366bf8d 100644 --- a/arch/arm/configs/xm_x2xx_defconfig +++ b/arch/arm/configs/xm_x2xx_defconfig | |||
@@ -1009,8 +1009,8 @@ CONFIG_I2C_PXA=y | |||
1009 | # Miscellaneous I2C Chip support | 1009 | # Miscellaneous I2C Chip support |
1010 | # | 1010 | # |
1011 | # CONFIG_DS1682 is not set | 1011 | # CONFIG_DS1682 is not set |
1012 | # CONFIG_AT24 is not set | 1012 | # CONFIG_EEPROM_AT24 is not set |
1013 | # CONFIG_SENSORS_EEPROM is not set | 1013 | # CONFIG_EEPROM_LEGACY is not set |
1014 | # CONFIG_SENSORS_PCF8574 is not set | 1014 | # CONFIG_SENSORS_PCF8574 is not set |
1015 | # CONFIG_PCF8575 is not set | 1015 | # CONFIG_PCF8575 is not set |
1016 | # CONFIG_SENSORS_PCA9539 is not set | 1016 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/yl9200_defconfig b/arch/arm/configs/yl9200_defconfig index a9f41c24c9dc..9192e5977674 100644 --- a/arch/arm/configs/yl9200_defconfig +++ b/arch/arm/configs/yl9200_defconfig | |||
@@ -682,7 +682,7 @@ CONFIG_SPI_ATMEL=y | |||
682 | # | 682 | # |
683 | # SPI Protocol Masters | 683 | # SPI Protocol Masters |
684 | # | 684 | # |
685 | # CONFIG_SPI_AT25 is not set | 685 | # CONFIG_EEPROM_AT25 is not set |
686 | # CONFIG_SPI_TLE62X0 is not set | 686 | # CONFIG_SPI_TLE62X0 is not set |
687 | # CONFIG_W1 is not set | 687 | # CONFIG_W1 is not set |
688 | # CONFIG_POWER_SUPPLY is not set | 688 | # CONFIG_POWER_SUPPLY is not set |
diff --git a/arch/arm/mach-davinci/usb.c b/arch/arm/mach-davinci/usb.c index fe182a85159c..c6fb32c36c52 100644 --- a/arch/arm/mach-davinci/usb.c +++ b/arch/arm/mach-davinci/usb.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <mach/common.h> | 13 | #include <mach/common.h> |
14 | #include <mach/hardware.h> | 14 | #include <mach/hardware.h> |
15 | #include <mach/irqs.h> | ||
15 | 16 | ||
16 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) | 17 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) |
17 | static struct musb_hdrc_eps_bits musb_eps[] = { | 18 | static struct musb_hdrc_eps_bits musb_eps[] = { |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index b240c5f861da..0d784a795092 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -37,16 +37,14 @@ | |||
37 | #include <asm/mach/flash.h> | 37 | #include <asm/mach/flash.h> |
38 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
39 | 39 | ||
40 | #include <mach/gpio-switch.h> | ||
41 | #include <mach/mux.h> | 40 | #include <mach/mux.h> |
41 | #include <mach/dma.h> | ||
42 | #include <mach/tc.h> | 42 | #include <mach/tc.h> |
43 | #include <mach/nand.h> | 43 | #include <mach/nand.h> |
44 | #include <mach/irda.h> | 44 | #include <mach/irda.h> |
45 | #include <mach/usb.h> | 45 | #include <mach/usb.h> |
46 | #include <mach/keypad.h> | 46 | #include <mach/keypad.h> |
47 | #include <mach/common.h> | 47 | #include <mach/common.h> |
48 | #include <mach/mcbsp.h> | ||
49 | #include <mach/omap-alsa.h> | ||
50 | 48 | ||
51 | static int h2_keymap[] = { | 49 | static int h2_keymap[] = { |
52 | KEY(0, 0, KEY_LEFT), | 50 | KEY(0, 0, KEY_LEFT), |
@@ -292,41 +290,6 @@ static struct platform_device h2_lcd_device = { | |||
292 | .id = -1, | 290 | .id = -1, |
293 | }; | 291 | }; |
294 | 292 | ||
295 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
296 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
297 | .spcr1 = RINTM(3) | RRST, | ||
298 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
299 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), | ||
300 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
301 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
302 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, | ||
303 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
304 | .srgr1 = FWID(15), | ||
305 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), | ||
306 | |||
307 | .pcr0 = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, | ||
308 | /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ | ||
309 | }; | ||
310 | |||
311 | static struct omap_alsa_codec_config alsa_config = { | ||
312 | .name = "H2 TSC2101", | ||
313 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
314 | .codec_configure_dev = NULL, /* tsc2101_configure, */ | ||
315 | .codec_set_samplerate = NULL, /* tsc2101_set_samplerate, */ | ||
316 | .codec_clock_setup = NULL, /* tsc2101_clock_setup, */ | ||
317 | .codec_clock_on = NULL, /* tsc2101_clock_on, */ | ||
318 | .codec_clock_off = NULL, /* tsc2101_clock_off, */ | ||
319 | .get_default_samplerate = NULL, /* tsc2101_get_default_samplerate, */ | ||
320 | }; | ||
321 | |||
322 | static struct platform_device h2_mcbsp1_device = { | ||
323 | .name = "omap_alsa_mcbsp", | ||
324 | .id = 1, | ||
325 | .dev = { | ||
326 | .platform_data = &alsa_config, | ||
327 | }, | ||
328 | }; | ||
329 | |||
330 | static struct platform_device *h2_devices[] __initdata = { | 293 | static struct platform_device *h2_devices[] __initdata = { |
331 | &h2_nor_device, | 294 | &h2_nor_device, |
332 | &h2_nand_device, | 295 | &h2_nand_device, |
@@ -334,7 +297,6 @@ static struct platform_device *h2_devices[] __initdata = { | |||
334 | &h2_irda_device, | 297 | &h2_irda_device, |
335 | &h2_kp_device, | 298 | &h2_kp_device, |
336 | &h2_lcd_device, | 299 | &h2_lcd_device, |
337 | &h2_mcbsp1_device, | ||
338 | }; | 300 | }; |
339 | 301 | ||
340 | static void __init h2_init_smc91x(void) | 302 | static void __init h2_init_smc91x(void) |
@@ -409,11 +371,6 @@ static struct omap_board_config_kernel h2_config[] __initdata = { | |||
409 | 371 | ||
410 | #define H2_NAND_RB_GPIO_PIN 62 | 372 | #define H2_NAND_RB_GPIO_PIN 62 |
411 | 373 | ||
412 | static int h2_nand_dev_ready(struct omap_nand_platform_data *data) | ||
413 | { | ||
414 | return gpio_get_value(H2_NAND_RB_GPIO_PIN); | ||
415 | } | ||
416 | |||
417 | static void __init h2_init(void) | 374 | static void __init h2_init(void) |
418 | { | 375 | { |
419 | /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped | 376 | /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 5157eea9be35..bf08b6ad22ee 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -49,8 +49,6 @@ | |||
49 | #include <mach/keypad.h> | 49 | #include <mach/keypad.h> |
50 | #include <mach/dma.h> | 50 | #include <mach/dma.h> |
51 | #include <mach/common.h> | 51 | #include <mach/common.h> |
52 | #include <mach/mcbsp.h> | ||
53 | #include <mach/omap-alsa.h> | ||
54 | 52 | ||
55 | #define H3_TS_GPIO 48 | 53 | #define H3_TS_GPIO 48 |
56 | 54 | ||
@@ -387,41 +385,6 @@ static struct spi_board_info h3_spi_board_info[] __initdata = { | |||
387 | }, | 385 | }, |
388 | }; | 386 | }; |
389 | 387 | ||
390 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
391 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
392 | .spcr1 = RINTM(3) | RRST, | ||
393 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
394 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), | ||
395 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
396 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
397 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, | ||
398 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
399 | .srgr1 = FWID(15), | ||
400 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), | ||
401 | |||
402 | .pcr0 = CLKRM | SCLKME | FSXP | FSRP | CLKXP | CLKRP, | ||
403 | /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ | ||
404 | }; | ||
405 | |||
406 | static struct omap_alsa_codec_config alsa_config = { | ||
407 | .name = "H3 TSC2101", | ||
408 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
409 | .codec_configure_dev = NULL, /* tsc2101_configure, */ | ||
410 | .codec_set_samplerate = NULL, /* tsc2101_set_samplerate, */ | ||
411 | .codec_clock_setup = NULL, /* tsc2101_clock_setup, */ | ||
412 | .codec_clock_on = NULL, /* tsc2101_clock_on, */ | ||
413 | .codec_clock_off = NULL, /* tsc2101_clock_off, */ | ||
414 | .get_default_samplerate = NULL, /* tsc2101_get_default_samplerate, */ | ||
415 | }; | ||
416 | |||
417 | static struct platform_device h3_mcbsp1_device = { | ||
418 | .name = "omap_alsa_mcbsp", | ||
419 | .id = 1, | ||
420 | .dev = { | ||
421 | .platform_data = &alsa_config, | ||
422 | }, | ||
423 | }; | ||
424 | |||
425 | static struct platform_device *devices[] __initdata = { | 388 | static struct platform_device *devices[] __initdata = { |
426 | &nor_device, | 389 | &nor_device, |
427 | &nand_device, | 390 | &nand_device, |
@@ -430,7 +393,6 @@ static struct platform_device *devices[] __initdata = { | |||
430 | &h3_irda_device, | 393 | &h3_irda_device, |
431 | &h3_kp_device, | 394 | &h3_kp_device, |
432 | &h3_lcd_device, | 395 | &h3_lcd_device, |
433 | &h3_mcbsp1_device, | ||
434 | }; | 396 | }; |
435 | 397 | ||
436 | static struct omap_usb_config h3_usb_config __initdata = { | 398 | static struct omap_usb_config h3_usb_config __initdata = { |
@@ -472,18 +434,6 @@ static struct i2c_board_info __initdata h3_i2c_board_info[] = { | |||
472 | }, | 434 | }, |
473 | }; | 435 | }; |
474 | 436 | ||
475 | static struct omap_gpio_switch h3_gpio_switches[] __initdata = { | ||
476 | { | ||
477 | .name = "mmc_slot", | ||
478 | .gpio = OMAP_MPUIO(1), | ||
479 | .type = OMAP_GPIO_SWITCH_TYPE_COVER, | ||
480 | .debounce_rising = 100, | ||
481 | .debounce_falling = 0, | ||
482 | .notify = h3_mmc_slot_cover_handler, | ||
483 | .notify_data = NULL, | ||
484 | }, | ||
485 | }; | ||
486 | |||
487 | #define H3_NAND_RB_GPIO_PIN 10 | 437 | #define H3_NAND_RB_GPIO_PIN 10 |
488 | 438 | ||
489 | static int nand_dev_ready(struct omap_nand_platform_data *data) | 439 | static int nand_dev_ready(struct omap_nand_platform_data *data) |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index af2fb9070083..071cd02a734e 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -37,8 +37,6 @@ | |||
37 | #include <mach/usb.h> | 37 | #include <mach/usb.h> |
38 | #include <mach/keypad.h> | 38 | #include <mach/keypad.h> |
39 | #include <mach/common.h> | 39 | #include <mach/common.h> |
40 | #include <mach/mcbsp.h> | ||
41 | #include <mach/omap-alsa.h> | ||
42 | #include <mach/mmc.h> | 40 | #include <mach/mmc.h> |
43 | 41 | ||
44 | static int innovator_keymap[] = { | 42 | static int innovator_keymap[] = { |
@@ -115,42 +113,6 @@ static struct platform_device innovator_flash_device = { | |||
115 | .resource = &innovator_flash_resource, | 113 | .resource = &innovator_flash_resource, |
116 | }; | 114 | }; |
117 | 115 | ||
118 | #define DEFAULT_BITPERSAMPLE 16 | ||
119 | |||
120 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
121 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
122 | .spcr1 = RINTM(3) | RRST, | ||
123 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
124 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0), | ||
125 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
126 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
127 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG, | ||
128 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
129 | .srgr1 = FWID(DEFAULT_BITPERSAMPLE - 1), | ||
130 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(DEFAULT_BITPERSAMPLE * 2 - 1), | ||
131 | /*.pcr0 = FSXM | FSRM | CLKXM | CLKRM | CLKXP | CLKRP,*/ /* mcbsp: master */ | ||
132 | .pcr0 = CLKXP | CLKRP, /* mcbsp: slave */ | ||
133 | }; | ||
134 | |||
135 | static struct omap_alsa_codec_config alsa_config = { | ||
136 | .name = "OMAP Innovator AIC23", | ||
137 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
138 | .codec_configure_dev = NULL, /* aic23_configure, */ | ||
139 | .codec_set_samplerate = NULL, /* aic23_set_samplerate, */ | ||
140 | .codec_clock_setup = NULL, /* aic23_clock_setup, */ | ||
141 | .codec_clock_on = NULL, /* aic23_clock_on, */ | ||
142 | .codec_clock_off = NULL, /* aic23_clock_off, */ | ||
143 | .get_default_samplerate = NULL, /* aic23_get_default_samplerate, */ | ||
144 | }; | ||
145 | |||
146 | static struct platform_device innovator_mcbsp1_device = { | ||
147 | .name = "omap_alsa_mcbsp", | ||
148 | .id = 1, | ||
149 | .dev = { | ||
150 | .platform_data = &alsa_config, | ||
151 | }, | ||
152 | }; | ||
153 | |||
154 | static struct resource innovator_kp_resources[] = { | 116 | static struct resource innovator_kp_resources[] = { |
155 | [0] = { | 117 | [0] = { |
156 | .start = INT_KEYBOARD, | 118 | .start = INT_KEYBOARD, |
@@ -227,7 +189,6 @@ static struct platform_device innovator1510_spi_device = { | |||
227 | static struct platform_device *innovator1510_devices[] __initdata = { | 189 | static struct platform_device *innovator1510_devices[] __initdata = { |
228 | &innovator_flash_device, | 190 | &innovator_flash_device, |
229 | &innovator1510_smc91x_device, | 191 | &innovator1510_smc91x_device, |
230 | &innovator_mcbsp1_device, | ||
231 | &innovator_kp_device, | 192 | &innovator_kp_device, |
232 | &innovator1510_lcd_device, | 193 | &innovator1510_lcd_device, |
233 | &innovator1510_spi_device, | 194 | &innovator1510_spi_device, |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index 4970c402a594..af51e0b180f2 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <mach/keypad.h> | 32 | #include <mach/keypad.h> |
33 | #include <mach/common.h> | 33 | #include <mach/common.h> |
34 | #include <mach/dsp_common.h> | 34 | #include <mach/dsp_common.h> |
35 | #include <mach/aic23.h> | ||
36 | #include <mach/omapfb.h> | 35 | #include <mach/omapfb.h> |
37 | #include <mach/lcd_mipid.h> | 36 | #include <mach/lcd_mipid.h> |
38 | #include <mach/mmc.h> | 37 | #include <mach/mmc.h> |
@@ -261,6 +260,13 @@ static DEFINE_MUTEX(audio_pwr_lock); | |||
261 | */ | 260 | */ |
262 | static int audio_pwr_state = -1; | 261 | static int audio_pwr_state = -1; |
263 | 262 | ||
263 | static inline void aic23_power_up(void) | ||
264 | { | ||
265 | } | ||
266 | static inline void aic23_power_down(void) | ||
267 | { | ||
268 | } | ||
269 | |||
264 | /* | 270 | /* |
265 | * audio_pwr_up / down should be called under audio_pwr_lock | 271 | * audio_pwr_up / down should be called under audio_pwr_lock |
266 | */ | 272 | */ |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index ff9e67baa5c9..1a16ecb2ccc8 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -51,8 +51,6 @@ | |||
51 | #include <mach/mux.h> | 51 | #include <mach/mux.h> |
52 | #include <mach/tc.h> | 52 | #include <mach/tc.h> |
53 | #include <mach/common.h> | 53 | #include <mach/common.h> |
54 | #include <mach/mcbsp.h> | ||
55 | #include <mach/omap-alsa.h> | ||
56 | 54 | ||
57 | static struct mtd_partition osk_partitions[] = { | 55 | static struct mtd_partition osk_partitions[] = { |
58 | /* bootloader (U-Boot, etc) in first sector */ | 56 | /* bootloader (U-Boot, etc) in first sector */ |
@@ -141,47 +139,10 @@ static struct platform_device osk5912_cf_device = { | |||
141 | .resource = osk5912_cf_resources, | 139 | .resource = osk5912_cf_resources, |
142 | }; | 140 | }; |
143 | 141 | ||
144 | #define DEFAULT_BITPERSAMPLE 16 | ||
145 | |||
146 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
147 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
148 | .spcr1 = RINTM(3) | RRST, | ||
149 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
150 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0), | ||
151 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
152 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
153 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG, | ||
154 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
155 | .srgr1 = FWID(DEFAULT_BITPERSAMPLE - 1), | ||
156 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(DEFAULT_BITPERSAMPLE * 2 - 1), | ||
157 | /*.pcr0 = FSXM | FSRM | CLKXM | CLKRM | CLKXP | CLKRP,*/ /* mcbsp: master */ | ||
158 | .pcr0 = CLKXP | CLKRP, /* mcbsp: slave */ | ||
159 | }; | ||
160 | |||
161 | static struct omap_alsa_codec_config alsa_config = { | ||
162 | .name = "OSK AIC23", | ||
163 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
164 | .codec_configure_dev = NULL, /* aic23_configure, */ | ||
165 | .codec_set_samplerate = NULL, /* aic23_set_samplerate, */ | ||
166 | .codec_clock_setup = NULL, /* aic23_clock_setup, */ | ||
167 | .codec_clock_on = NULL, /* aic23_clock_on, */ | ||
168 | .codec_clock_off = NULL, /* aic23_clock_off, */ | ||
169 | .get_default_samplerate = NULL, /* aic23_get_default_samplerate, */ | ||
170 | }; | ||
171 | |||
172 | static struct platform_device osk5912_mcbsp1_device = { | ||
173 | .name = "omap_alsa_mcbsp", | ||
174 | .id = 1, | ||
175 | .dev = { | ||
176 | .platform_data = &alsa_config, | ||
177 | }, | ||
178 | }; | ||
179 | |||
180 | static struct platform_device *osk5912_devices[] __initdata = { | 142 | static struct platform_device *osk5912_devices[] __initdata = { |
181 | &osk5912_flash_device, | 143 | &osk5912_flash_device, |
182 | &osk5912_smc91x_device, | 144 | &osk5912_smc91x_device, |
183 | &osk5912_cf_device, | 145 | &osk5912_cf_device, |
184 | &osk5912_mcbsp1_device, | ||
185 | }; | 146 | }; |
186 | 147 | ||
187 | static struct gpio_led tps_leds[] = { | 148 | static struct gpio_led tps_leds[] = { |
@@ -259,8 +220,10 @@ static struct i2c_board_info __initdata osk_i2c_board_info[] = { | |||
259 | .platform_data = &tps_board, | 220 | .platform_data = &tps_board, |
260 | 221 | ||
261 | }, | 222 | }, |
223 | { | ||
224 | I2C_BOARD_INFO("tlv320aic23", 0x1B), | ||
225 | }, | ||
262 | /* TODO when driver support is ready: | 226 | /* TODO when driver support is ready: |
263 | * - aic23 audio chip at 0x1a | ||
264 | * - optionally on Mistral, ov9640 camera sensor at 0x30 | 227 | * - optionally on Mistral, ov9640 camera sensor at 0x30 |
265 | */ | 228 | */ |
266 | }; | 229 | }; |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 75e32d35afd9..99f2b43f2541 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -42,8 +42,6 @@ | |||
42 | #include <mach/irda.h> | 42 | #include <mach/irda.h> |
43 | #include <mach/keypad.h> | 43 | #include <mach/keypad.h> |
44 | #include <mach/common.h> | 44 | #include <mach/common.h> |
45 | #include <mach/mcbsp.h> | ||
46 | #include <mach/omap-alsa.h> | ||
47 | 45 | ||
48 | static void __init omap_palmte_init_irq(void) | 46 | static void __init omap_palmte_init_irq(void) |
49 | { | 47 | { |
@@ -195,15 +193,6 @@ static struct omap_usb_config palmte_usb_config __initdata = { | |||
195 | .pins[0] = 2, | 193 | .pins[0] = 2, |
196 | }; | 194 | }; |
197 | 195 | ||
198 | static struct omap_mmc_config palmte_mmc_config __initdata = { | ||
199 | .mmc[0] = { | ||
200 | .enabled = 1, | ||
201 | .wp_pin = PALMTE_MMC_WP_GPIO, | ||
202 | .power_pin = PALMTE_MMC_POWER_GPIO, | ||
203 | .switch_pin = PALMTE_MMC_SWITCH_GPIO, | ||
204 | }, | ||
205 | }; | ||
206 | |||
207 | static struct omap_lcd_config palmte_lcd_config __initdata = { | 196 | static struct omap_lcd_config palmte_lcd_config __initdata = { |
208 | .ctrl_name = "internal", | 197 | .ctrl_name = "internal", |
209 | }; | 198 | }; |
@@ -212,24 +201,6 @@ static struct omap_uart_config palmte_uart_config __initdata = { | |||
212 | .enabled_uarts = (1 << 0) | (1 << 1) | (0 << 2), | 201 | .enabled_uarts = (1 << 0) | (1 << 1) | (0 << 2), |
213 | }; | 202 | }; |
214 | 203 | ||
215 | static struct omap_mcbsp_reg_cfg palmte_mcbsp1_regs = { | ||
216 | .spcr2 = FRST | GRST | XRST | XINTM(3), | ||
217 | .xcr2 = XDATDLY(1) | XFIG, | ||
218 | .xcr1 = XWDLEN1(OMAP_MCBSP_WORD_32), | ||
219 | .pcr0 = SCLKME | FSXP | CLKXP, | ||
220 | }; | ||
221 | |||
222 | static struct omap_alsa_codec_config palmte_alsa_config = { | ||
223 | .name = "TSC2102 audio", | ||
224 | .mcbsp_regs_alsa = &palmte_mcbsp1_regs, | ||
225 | .codec_configure_dev = NULL, /* tsc2102_configure, */ | ||
226 | .codec_set_samplerate = NULL, /* tsc2102_set_samplerate, */ | ||
227 | .codec_clock_setup = NULL, /* tsc2102_clock_setup, */ | ||
228 | .codec_clock_on = NULL, /* tsc2102_clock_on, */ | ||
229 | .codec_clock_off = NULL, /* tsc2102_clock_off, */ | ||
230 | .get_default_samplerate = NULL, /* tsc2102_get_default_samplerate, */ | ||
231 | }; | ||
232 | |||
233 | #ifdef CONFIG_APM | 204 | #ifdef CONFIG_APM |
234 | /* | 205 | /* |
235 | * Values measured in 10 minute intervals averaged over 10 samples. | 206 | * Values measured in 10 minute intervals averaged over 10 samples. |
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 5c001afe8062..1cbc1275c95f 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/mach/flash.h> | 30 | #include <asm/mach/flash.h> |
31 | 31 | ||
32 | #include <mach/led.h> | 32 | #include <mach/led.h> |
33 | #include <mach/mcbsp.h> | ||
34 | #include <mach/gpio.h> | 33 | #include <mach/gpio.h> |
35 | #include <mach/mux.h> | 34 | #include <mach/mux.h> |
36 | #include <mach/usb.h> | 35 | #include <mach/usb.h> |
@@ -40,7 +39,6 @@ | |||
40 | #include <mach/irda.h> | 39 | #include <mach/irda.h> |
41 | #include <mach/keypad.h> | 40 | #include <mach/keypad.h> |
42 | #include <mach/common.h> | 41 | #include <mach/common.h> |
43 | #include <mach/omap-alsa.h> | ||
44 | 42 | ||
45 | #include <linux/spi/spi.h> | 43 | #include <linux/spi/spi.h> |
46 | #include <linux/spi/ads7846.h> | 44 | #include <linux/spi/ads7846.h> |
@@ -122,44 +120,6 @@ static struct platform_device palmtt_flash_device = { | |||
122 | .resource = &palmtt_flash_resource, | 120 | .resource = &palmtt_flash_resource, |
123 | }; | 121 | }; |
124 | 122 | ||
125 | #define DEFAULT_BITPERSAMPLE 16 | ||
126 | |||
127 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
128 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
129 | .spcr1 = RINTM(3) | RRST, | ||
130 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
131 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0), | ||
132 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | | ||
133 | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
134 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
135 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG, | ||
136 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | | ||
137 | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
138 | .srgr1 = FWID(DEFAULT_BITPERSAMPLE - 1), | ||
139 | .srgr2 = GSYNC | CLKSP | FSGM | | ||
140 | FPER(DEFAULT_BITPERSAMPLE * 2 - 1), | ||
141 | .pcr0 = CLKXP | CLKRP, /* mcbsp: slave */ | ||
142 | }; | ||
143 | |||
144 | static struct omap_alsa_codec_config alsa_config = { | ||
145 | .name = "PalmTT AIC23", | ||
146 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
147 | .codec_configure_dev = NULL, /* aic23_configure, */ | ||
148 | .codec_set_samplerate = NULL, /* aic23_set_samplerate, */ | ||
149 | .codec_clock_setup = NULL, /* aic23_clock_setup, */ | ||
150 | .codec_clock_on = NULL, /* aic23_clock_on, */ | ||
151 | .codec_clock_off = NULL, /* aic23_clock_off, */ | ||
152 | .get_default_samplerate = NULL, /* aic23_get_default_samplerate, */ | ||
153 | }; | ||
154 | |||
155 | static struct platform_device palmtt_mcbsp1_device = { | ||
156 | .name = "omap_alsa_mcbsp", | ||
157 | .id = 1, | ||
158 | .dev = { | ||
159 | .platform_data = &alsa_config, | ||
160 | }, | ||
161 | }; | ||
162 | |||
163 | static struct resource palmtt_kp_resources[] = { | 123 | static struct resource palmtt_kp_resources[] = { |
164 | [0] = { | 124 | [0] = { |
165 | .start = INT_KEYBOARD, | 125 | .start = INT_KEYBOARD, |
@@ -257,7 +217,6 @@ static struct platform_device palmtt_led_device = { | |||
257 | 217 | ||
258 | static struct platform_device *palmtt_devices[] __initdata = { | 218 | static struct platform_device *palmtt_devices[] __initdata = { |
259 | &palmtt_flash_device, | 219 | &palmtt_flash_device, |
260 | &palmtt_mcbsp1_device, | ||
261 | &palmtt_kp_device, | 220 | &palmtt_kp_device, |
262 | &palmtt_lcd_device, | 221 | &palmtt_lcd_device, |
263 | &palmtt_irda_device, | 222 | &palmtt_irda_device, |
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index cc05257eb1cd..baf5efbfe3e8 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
33 | #include <asm/mach/flash.h> | 33 | #include <asm/mach/flash.h> |
34 | 34 | ||
35 | #include <mach/mcbsp.h> | ||
36 | #include <mach/gpio.h> | 35 | #include <mach/gpio.h> |
37 | #include <mach/mux.h> | 36 | #include <mach/mux.h> |
38 | #include <mach/usb.h> | 37 | #include <mach/usb.h> |
@@ -179,41 +178,6 @@ static struct platform_device palmz71_spi_device = { | |||
179 | .id = -1, | 178 | .id = -1, |
180 | }; | 179 | }; |
181 | 180 | ||
182 | #define DEFAULT_BITPERSAMPLE 16 | ||
183 | |||
184 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
185 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
186 | .spcr1 = RINTM(3) | RRST, | ||
187 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
188 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0), | ||
189 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
190 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
191 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG, | ||
192 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
193 | .srgr1 = FWID(DEFAULT_BITPERSAMPLE - 1), | ||
194 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(DEFAULT_BITPERSAMPLE * 2 - 1), | ||
195 | .pcr0 = CLKXP | CLKRP, /* mcbsp: slave */ | ||
196 | }; | ||
197 | |||
198 | static struct omap_alsa_codec_config alsa_config = { | ||
199 | .name = "PalmZ71 AIC23", | ||
200 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
201 | .codec_configure_dev = NULL, /* aic23_configure */ | ||
202 | .codec_set_samplerate = NULL, /* aic23_set_samplerate */ | ||
203 | .codec_clock_setup = NULL, /* aic23_clock_setup */ | ||
204 | .codec_clock_on = NULL, /* aic23_clock_on */ | ||
205 | .codec_clock_off = NULL, /* aic23_clock_off */ | ||
206 | .get_default_samplerate = NULL, /* aic23_get_default_samplerate */ | ||
207 | }; | ||
208 | |||
209 | static struct platform_device palmz71_mcbsp1_device = { | ||
210 | .name = "omap_alsa_mcbsp", | ||
211 | .id = 1, | ||
212 | .dev = { | ||
213 | .platform_data = &alsa_config, | ||
214 | }, | ||
215 | }; | ||
216 | |||
217 | static struct omap_backlight_config palmz71_backlight_config = { | 181 | static struct omap_backlight_config palmz71_backlight_config = { |
218 | .default_intensity = 0xa0, | 182 | .default_intensity = 0xa0, |
219 | }; | 183 | }; |
@@ -229,7 +193,6 @@ static struct platform_device palmz71_backlight_device = { | |||
229 | static struct platform_device *devices[] __initdata = { | 193 | static struct platform_device *devices[] __initdata = { |
230 | &palmz71_rom_device, | 194 | &palmz71_rom_device, |
231 | &palmz71_kp_device, | 195 | &palmz71_kp_device, |
232 | &palmz71_mcbsp1_device, | ||
233 | &palmz71_lcd_device, | 196 | &palmz71_lcd_device, |
234 | &palmz71_irda_device, | 197 | &palmz71_irda_device, |
235 | &palmz71_spi_device, | 198 | &palmz71_spi_device, |
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 8171fe0ca082..28c76a1e71c0 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -34,13 +34,12 @@ | |||
34 | 34 | ||
35 | #include <mach/gpio.h> | 35 | #include <mach/gpio.h> |
36 | #include <mach/mux.h> | 36 | #include <mach/mux.h> |
37 | #include <mach/dma.h> | ||
37 | #include <mach/irda.h> | 38 | #include <mach/irda.h> |
38 | #include <mach/usb.h> | 39 | #include <mach/usb.h> |
39 | #include <mach/tc.h> | 40 | #include <mach/tc.h> |
40 | #include <mach/board.h> | 41 | #include <mach/board.h> |
41 | #include <mach/common.h> | 42 | #include <mach/common.h> |
42 | #include <mach/mcbsp.h> | ||
43 | #include <mach/omap-alsa.h> | ||
44 | #include <mach/keypad.h> | 43 | #include <mach/keypad.h> |
45 | 44 | ||
46 | /* Write to I2C device */ | 45 | /* Write to I2C device */ |
@@ -254,35 +253,6 @@ static struct platform_device sx1_irda_device = { | |||
254 | .resource = sx1_irda_resources, | 253 | .resource = sx1_irda_resources, |
255 | }; | 254 | }; |
256 | 255 | ||
257 | /*----------- McBSP & Sound -------------------------*/ | ||
258 | |||
259 | /* Playback interface - McBSP1 */ | ||
260 | static struct omap_mcbsp_reg_cfg mcbsp1_regs = { | ||
261 | .spcr2 = XINTM(3), /* SPCR2=30 */ | ||
262 | .spcr1 = RINTM(3), /* SPCR1=30 */ | ||
263 | .rcr2 = 0, /* RCR2 =00 */ | ||
264 | .rcr1 = RFRLEN1(1) | RWDLEN1(OMAP_MCBSP_WORD_16), /* RCR1=140 */ | ||
265 | .xcr2 = 0, /* XCR2 = 0 */ | ||
266 | .xcr1 = XFRLEN1(1) | XWDLEN1(OMAP_MCBSP_WORD_16), /* XCR1 = 140 */ | ||
267 | .srgr1 = FWID(15) | CLKGDV(12), /* SRGR1=0f0c */ | ||
268 | .srgr2 = FSGM | FPER(31), /* SRGR2=101f */ | ||
269 | .pcr0 = FSXM | FSRM | CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, | ||
270 | /* PCR0 =0f0f */ | ||
271 | }; | ||
272 | |||
273 | static struct omap_alsa_codec_config sx1_alsa_config = { | ||
274 | .name = "SX1 EGold", | ||
275 | .mcbsp_regs_alsa = &mcbsp1_regs, | ||
276 | }; | ||
277 | |||
278 | static struct platform_device sx1_mcbsp1_device = { | ||
279 | .name = "omap_alsa_mcbsp", | ||
280 | .id = 1, | ||
281 | .dev = { | ||
282 | .platform_data = &sx1_alsa_config, | ||
283 | }, | ||
284 | }; | ||
285 | |||
286 | /*----------- MTD -------------------------*/ | 256 | /*----------- MTD -------------------------*/ |
287 | 257 | ||
288 | static struct mtd_partition sx1_partitions[] = { | 258 | static struct mtd_partition sx1_partitions[] = { |
@@ -394,7 +364,6 @@ static struct platform_device *sx1_devices[] __initdata = { | |||
394 | &sx1_flash_device, | 364 | &sx1_flash_device, |
395 | &sx1_kp_device, | 365 | &sx1_kp_device, |
396 | &sx1_lcd_device, | 366 | &sx1_lcd_device, |
397 | &sx1_mcbsp1_device, | ||
398 | &sx1_irda_device, | 367 | &sx1_irda_device, |
399 | }; | 368 | }; |
400 | /*-----------------------------------------*/ | 369 | /*-----------------------------------------*/ |
@@ -423,9 +392,9 @@ static void __init omap_sx1_init(void) | |||
423 | 392 | ||
424 | /* turn on USB power */ | 393 | /* turn on USB power */ |
425 | /* sx1_setusbpower(1); cant do it here because i2c is not ready */ | 394 | /* sx1_setusbpower(1); cant do it here because i2c is not ready */ |
426 | omap_request_gpio(1); /* A_IRDA_OFF */ | 395 | gpio_request(1, "A_IRDA_OFF"); |
427 | omap_request_gpio(11); /* A_SWITCH */ | 396 | gpio_request(11, "A_SWITCH"); |
428 | omap_request_gpio(15); /* A_USB_ON */ | 397 | gpio_request(15, "A_USB_ON"); |
429 | gpio_direction_output(1, 1); /*A_IRDA_OFF = 1 */ | 398 | gpio_direction_output(1, 1); /*A_IRDA_OFF = 1 */ |
430 | gpio_direction_output(11, 0); /*A_SWITCH = 0 */ | 399 | gpio_direction_output(11, 0); /*A_SWITCH = 0 */ |
431 | gpio_direction_output(15, 0); /*A_USB_ON = 0 */ | 400 | gpio_direction_output(15, 0); /*A_USB_ON = 0 */ |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index c224f3c64235..a7653542a2b0 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/reboot.h> | 22 | #include <linux/reboot.h> |
23 | #include <linux/serial_8250.h> | 23 | #include <linux/serial_8250.h> |
24 | #include <linux/serial_reg.h> | 24 | #include <linux/serial_reg.h> |
25 | #include <linux/irq.h> | ||
26 | 25 | ||
27 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
28 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
diff --git a/arch/arm/mach-omap1/mcbsp.c b/arch/arm/mach-omap1/mcbsp.c index 4474da7bc88a..ca7a0cc1707c 100644 --- a/arch/arm/mach-omap1/mcbsp.c +++ b/arch/arm/mach-omap1/mcbsp.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | 19 | ||
20 | #include <mach/irqs.h> | ||
20 | #include <mach/dma.h> | 21 | #include <mach/dma.h> |
21 | #include <mach/irqs.h> | 22 | #include <mach/irqs.h> |
22 | #include <mach/mux.h> | 23 | #include <mach/mux.h> |
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index bf1e5d32c2a3..0a7b24ba1652 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c | |||
@@ -22,8 +22,6 @@ | |||
22 | #include <linux/mtd/mtd.h> | 22 | #include <linux/mtd/mtd.h> |
23 | #include <linux/mtd/partitions.h> | 23 | #include <linux/mtd/partitions.h> |
24 | #include <linux/mtd/onenand.h> | 24 | #include <linux/mtd/onenand.h> |
25 | #include <linux/irq.h> | ||
26 | #include <linux/interrupt.h> | ||
27 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
28 | #include <linux/leds.h> | 26 | #include <linux/leds.h> |
29 | #include <linux/err.h> | 27 | #include <linux/err.h> |
@@ -282,65 +280,16 @@ static void __init apollon_led_init(void) | |||
282 | { | 280 | { |
283 | /* LED0 - AA10 */ | 281 | /* LED0 - AA10 */ |
284 | omap_cfg_reg(AA10_242X_GPIO13); | 282 | omap_cfg_reg(AA10_242X_GPIO13); |
285 | omap_request_gpio(LED0_GPIO13); | 283 | gpio_request(LED0_GPIO13, "LED0"); |
286 | omap_set_gpio_direction(LED0_GPIO13, 0); | 284 | gpio_direction_output(LED0_GPIO13, 0); |
287 | omap_set_gpio_dataout(LED0_GPIO13, 0); | ||
288 | /* LED1 - AA6 */ | 285 | /* LED1 - AA6 */ |
289 | omap_cfg_reg(AA6_242X_GPIO14); | 286 | omap_cfg_reg(AA6_242X_GPIO14); |
290 | omap_request_gpio(LED1_GPIO14); | 287 | gpio_request(LED1_GPIO14, "LED1"); |
291 | omap_set_gpio_direction(LED1_GPIO14, 0); | 288 | gpio_direction_output(LED1_GPIO14, 0); |
292 | omap_set_gpio_dataout(LED1_GPIO14, 0); | ||
293 | /* LED2 - AA4 */ | 289 | /* LED2 - AA4 */ |
294 | omap_cfg_reg(AA4_242X_GPIO15); | 290 | omap_cfg_reg(AA4_242X_GPIO15); |
295 | omap_request_gpio(LED2_GPIO15); | 291 | gpio_request(LED2_GPIO15, "LED2"); |
296 | omap_set_gpio_direction(LED2_GPIO15, 0); | 292 | gpio_direction_output(LED2_GPIO15, 0); |
297 | omap_set_gpio_dataout(LED2_GPIO15, 0); | ||
298 | } | ||
299 | |||
300 | static irqreturn_t apollon_sw_interrupt(int irq, void *ignored) | ||
301 | { | ||
302 | static unsigned int led0, led1, led2; | ||
303 | |||
304 | if (irq == OMAP_GPIO_IRQ(SW_ENTER_GPIO16)) | ||
305 | omap_set_gpio_dataout(LED0_GPIO13, led0 ^= 1); | ||
306 | else if (irq == OMAP_GPIO_IRQ(SW_UP_GPIO17)) | ||
307 | omap_set_gpio_dataout(LED1_GPIO14, led1 ^= 1); | ||
308 | else if (irq == OMAP_GPIO_IRQ(SW_DOWN_GPIO58)) | ||
309 | omap_set_gpio_dataout(LED2_GPIO15, led2 ^= 1); | ||
310 | |||
311 | return IRQ_HANDLED; | ||
312 | } | ||
313 | |||
314 | static void __init apollon_sw_init(void) | ||
315 | { | ||
316 | /* Enter SW - Y11 */ | ||
317 | omap_cfg_reg(Y11_242X_GPIO16); | ||
318 | omap_request_gpio(SW_ENTER_GPIO16); | ||
319 | gpio_direction_input(SW_ENTER_GPIO16); | ||
320 | /* Up SW - AA12 */ | ||
321 | omap_cfg_reg(AA12_242X_GPIO17); | ||
322 | omap_request_gpio(SW_UP_GPIO17); | ||
323 | gpio_direction_input(SW_UP_GPIO17); | ||
324 | /* Down SW - AA8 */ | ||
325 | omap_cfg_reg(AA8_242X_GPIO58); | ||
326 | omap_request_gpio(SW_DOWN_GPIO58); | ||
327 | gpio_direction_input(SW_DOWN_GPIO58); | ||
328 | |||
329 | set_irq_type(OMAP_GPIO_IRQ(SW_ENTER_GPIO16), IRQ_TYPE_EDGE_RISING); | ||
330 | if (request_irq(OMAP_GPIO_IRQ(SW_ENTER_GPIO16), &apollon_sw_interrupt, | ||
331 | IRQF_SHARED, "enter sw", | ||
332 | &apollon_sw_interrupt)) | ||
333 | return; | ||
334 | set_irq_type(OMAP_GPIO_IRQ(SW_UP_GPIO17), IRQ_TYPE_EDGE_RISING); | ||
335 | if (request_irq(OMAP_GPIO_IRQ(SW_UP_GPIO17), &apollon_sw_interrupt, | ||
336 | IRQF_SHARED, "up sw", | ||
337 | &apollon_sw_interrupt)) | ||
338 | return; | ||
339 | set_irq_type(OMAP_GPIO_IRQ(SW_DOWN_GPIO58), IRQ_TYPE_EDGE_RISING); | ||
340 | if (request_irq(OMAP_GPIO_IRQ(SW_DOWN_GPIO58), &apollon_sw_interrupt, | ||
341 | IRQF_SHARED, "down sw", | ||
342 | &apollon_sw_interrupt)) | ||
343 | return; | ||
344 | } | 293 | } |
345 | 294 | ||
346 | static void __init apollon_usb_init(void) | 295 | static void __init apollon_usb_init(void) |
@@ -357,7 +306,6 @@ static void __init omap_apollon_init(void) | |||
357 | u32 v; | 306 | u32 v; |
358 | 307 | ||
359 | apollon_led_init(); | 308 | apollon_led_init(); |
360 | apollon_sw_init(); | ||
361 | apollon_flash_init(); | 309 | apollon_flash_init(); |
362 | apollon_usb_init(); | 310 | apollon_usb_init(); |
363 | 311 | ||
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index aa6972781e4a..f6a13451d1fd 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
@@ -88,7 +88,7 @@ static inline void __init ldp_init_smc911x(void) | |||
88 | 88 | ||
89 | ldp_smc911x_resources[1].start = OMAP_GPIO_IRQ(eth_gpio); | 89 | ldp_smc911x_resources[1].start = OMAP_GPIO_IRQ(eth_gpio); |
90 | 90 | ||
91 | if (omap_request_gpio(eth_gpio) < 0) { | 91 | if (gpio_request(eth_gpio, "smc911x irq") < 0) { |
92 | printk(KERN_ERR "Failed to request GPIO%d for smc911x IRQ\n", | 92 | printk(KERN_ERR "Failed to request GPIO%d for smc911x IRQ\n", |
93 | eth_gpio); | 93 | eth_gpio); |
94 | return; | 94 | return; |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 9e5ada01b5fa..38c88fbe658d 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -28,6 +28,8 @@ | |||
28 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
29 | #include <linux/mtd/nand.h> | 29 | #include <linux/mtd/nand.h> |
30 | 30 | ||
31 | #include <linux/i2c/twl4030.h> | ||
32 | |||
31 | #include <mach/hardware.h> | 33 | #include <mach/hardware.h> |
32 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 35 | #include <asm/mach/arch.h> |
@@ -120,6 +122,9 @@ static int beagle_twl_gpio_setup(struct device *dev, | |||
120 | unsigned gpio, unsigned ngpio) | 122 | unsigned gpio, unsigned ngpio) |
121 | { | 123 | { |
122 | /* gpio + 0 is "mmc0_cd" (input/IRQ) */ | 124 | /* gpio + 0 is "mmc0_cd" (input/IRQ) */ |
125 | omap_cfg_reg(AH8_34XX_GPIO29); | ||
126 | mmc[0].gpio_cd = gpio + 0; | ||
127 | twl4030_mmc_init(mmc); | ||
123 | 128 | ||
124 | /* REVISIT: need ehci-omap hooks for external VBUS | 129 | /* REVISIT: need ehci-omap hooks for external VBUS |
125 | * power switch and overcurrent detect | 130 | * power switch and overcurrent detect |
@@ -304,10 +309,6 @@ static void __init omap3_beagle_init(void) | |||
304 | omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); | 309 | omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); |
305 | omap_serial_init(); | 310 | omap_serial_init(); |
306 | 311 | ||
307 | omap_cfg_reg(AH8_34XX_GPIO29); | ||
308 | mmc[0].gpio_cd = gpio + 0; | ||
309 | twl4030_mmc_init(mmc); | ||
310 | |||
311 | omap_cfg_reg(J25_34XX_GPIO170); | 312 | omap_cfg_reg(J25_34XX_GPIO170); |
312 | gpio_request(170, "DVI_nPD"); | 313 | gpio_request(170, "DVI_nPD"); |
313 | /* REVISIT leave DVI powered down until it's needed ... */ | 314 | /* REVISIT leave DVI powered down until it's needed ... */ |
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c index acdc709901cd..e20023c9d15d 100644 --- a/arch/arm/mach-omap2/mcbsp.c +++ b/arch/arm/mach-omap2/mcbsp.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | 19 | ||
20 | #include <mach/irqs.h> | ||
20 | #include <mach/dma.h> | 21 | #include <mach/dma.h> |
21 | #include <mach/irqs.h> | 22 | #include <mach/irqs.h> |
22 | #include <mach/mux.h> | 23 | #include <mach/mux.h> |
diff --git a/arch/arm/mm/copypage-v4mc.c b/arch/arm/mm/copypage-v4mc.c index bdb5fd983b15..1601698b9800 100644 --- a/arch/arm/mm/copypage-v4mc.c +++ b/arch/arm/mm/copypage-v4mc.c | |||
@@ -68,7 +68,7 @@ mc_copy_user_page(void *from, void *to) | |||
68 | : "r" (from), "r" (to), "I" (PAGE_SIZE / 64)); | 68 | : "r" (from), "r" (to), "I" (PAGE_SIZE / 64)); |
69 | } | 69 | } |
70 | 70 | ||
71 | void v4_mc_copy_user_highpage(struct page *from, struct page *to, | 71 | void v4_mc_copy_user_highpage(struct page *to, struct page *from, |
72 | unsigned long vaddr) | 72 | unsigned long vaddr) |
73 | { | 73 | { |
74 | void *kto = kmap_atomic(to, KM_USER1); | 74 | void *kto = kmap_atomic(to, KM_USER1); |
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 18373f73f2fc..9f88dd3be601 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -138,7 +138,7 @@ void __check_kvm_seq(struct mm_struct *mm) | |||
138 | */ | 138 | */ |
139 | static void unmap_area_sections(unsigned long virt, unsigned long size) | 139 | static void unmap_area_sections(unsigned long virt, unsigned long size) |
140 | { | 140 | { |
141 | unsigned long addr = virt, end = virt + (size & ~SZ_1M); | 141 | unsigned long addr = virt, end = virt + (size & ~(SZ_1M - 1)); |
142 | pgd_t *pgd; | 142 | pgd_t *pgd; |
143 | 143 | ||
144 | flush_cache_vunmap(addr, end); | 144 | flush_cache_vunmap(addr, end); |
@@ -337,10 +337,7 @@ void __iounmap(volatile void __iomem *io_addr) | |||
337 | void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr); | 337 | void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr); |
338 | #ifndef CONFIG_SMP | 338 | #ifndef CONFIG_SMP |
339 | struct vm_struct **p, *tmp; | 339 | struct vm_struct **p, *tmp; |
340 | #endif | ||
341 | unsigned int section_mapping = 0; | ||
342 | 340 | ||
343 | #ifndef CONFIG_SMP | ||
344 | /* | 341 | /* |
345 | * If this is a section based mapping we need to handle it | 342 | * If this is a section based mapping we need to handle it |
346 | * specially as the VM subsystem does not know how to handle | 343 | * specially as the VM subsystem does not know how to handle |
@@ -352,11 +349,8 @@ void __iounmap(volatile void __iomem *io_addr) | |||
352 | for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) { | 349 | for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) { |
353 | if ((tmp->flags & VM_IOREMAP) && (tmp->addr == addr)) { | 350 | if ((tmp->flags & VM_IOREMAP) && (tmp->addr == addr)) { |
354 | if (tmp->flags & VM_ARM_SECTION_MAPPING) { | 351 | if (tmp->flags & VM_ARM_SECTION_MAPPING) { |
355 | *p = tmp->next; | ||
356 | unmap_area_sections((unsigned long)tmp->addr, | 352 | unmap_area_sections((unsigned long)tmp->addr, |
357 | tmp->size); | 353 | tmp->size); |
358 | kfree(tmp); | ||
359 | section_mapping = 1; | ||
360 | } | 354 | } |
361 | break; | 355 | break; |
362 | } | 356 | } |
@@ -364,7 +358,6 @@ void __iounmap(volatile void __iomem *io_addr) | |||
364 | write_unlock(&vmlist_lock); | 358 | write_unlock(&vmlist_lock); |
365 | #endif | 359 | #endif |
366 | 360 | ||
367 | if (!section_mapping) | 361 | vunmap(addr); |
368 | vunmap(addr); | ||
369 | } | 362 | } |
370 | EXPORT_SYMBOL(__iounmap); | 363 | EXPORT_SYMBOL(__iounmap); |
diff --git a/arch/arm/plat-mxc/include/mach/ipu.h b/arch/arm/plat-mxc/include/mach/ipu.h new file mode 100644 index 000000000000..a9221f1cc1a0 --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/ipu.h | |||
@@ -0,0 +1,181 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * Copyright (C) 2005-2007 Freescale Semiconductor, Inc. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #ifndef _IPU_H_ | ||
13 | #define _IPU_H_ | ||
14 | |||
15 | #include <linux/types.h> | ||
16 | #include <linux/dmaengine.h> | ||
17 | |||
18 | /* IPU DMA Controller channel definitions. */ | ||
19 | enum ipu_channel { | ||
20 | IDMAC_IC_0 = 0, /* IC (encoding task) to memory */ | ||
21 | IDMAC_IC_1 = 1, /* IC (viewfinder task) to memory */ | ||
22 | IDMAC_ADC_0 = 1, | ||
23 | IDMAC_IC_2 = 2, | ||
24 | IDMAC_ADC_1 = 2, | ||
25 | IDMAC_IC_3 = 3, | ||
26 | IDMAC_IC_4 = 4, | ||
27 | IDMAC_IC_5 = 5, | ||
28 | IDMAC_IC_6 = 6, | ||
29 | IDMAC_IC_7 = 7, /* IC (sensor data) to memory */ | ||
30 | IDMAC_IC_8 = 8, | ||
31 | IDMAC_IC_9 = 9, | ||
32 | IDMAC_IC_10 = 10, | ||
33 | IDMAC_IC_11 = 11, | ||
34 | IDMAC_IC_12 = 12, | ||
35 | IDMAC_IC_13 = 13, | ||
36 | IDMAC_SDC_0 = 14, /* Background synchronous display data */ | ||
37 | IDMAC_SDC_1 = 15, /* Foreground data (overlay) */ | ||
38 | IDMAC_SDC_2 = 16, | ||
39 | IDMAC_SDC_3 = 17, | ||
40 | IDMAC_ADC_2 = 18, | ||
41 | IDMAC_ADC_3 = 19, | ||
42 | IDMAC_ADC_4 = 20, | ||
43 | IDMAC_ADC_5 = 21, | ||
44 | IDMAC_ADC_6 = 22, | ||
45 | IDMAC_ADC_7 = 23, | ||
46 | IDMAC_PF_0 = 24, | ||
47 | IDMAC_PF_1 = 25, | ||
48 | IDMAC_PF_2 = 26, | ||
49 | IDMAC_PF_3 = 27, | ||
50 | IDMAC_PF_4 = 28, | ||
51 | IDMAC_PF_5 = 29, | ||
52 | IDMAC_PF_6 = 30, | ||
53 | IDMAC_PF_7 = 31, | ||
54 | }; | ||
55 | |||
56 | /* Order significant! */ | ||
57 | enum ipu_channel_status { | ||
58 | IPU_CHANNEL_FREE, | ||
59 | IPU_CHANNEL_INITIALIZED, | ||
60 | IPU_CHANNEL_READY, | ||
61 | IPU_CHANNEL_ENABLED, | ||
62 | }; | ||
63 | |||
64 | #define IPU_CHANNELS_NUM 32 | ||
65 | |||
66 | enum pixel_fmt { | ||
67 | /* 1 byte */ | ||
68 | IPU_PIX_FMT_GENERIC, | ||
69 | IPU_PIX_FMT_RGB332, | ||
70 | IPU_PIX_FMT_YUV420P, | ||
71 | IPU_PIX_FMT_YUV422P, | ||
72 | IPU_PIX_FMT_YUV420P2, | ||
73 | IPU_PIX_FMT_YVU422P, | ||
74 | /* 2 bytes */ | ||
75 | IPU_PIX_FMT_RGB565, | ||
76 | IPU_PIX_FMT_RGB666, | ||
77 | IPU_PIX_FMT_BGR666, | ||
78 | IPU_PIX_FMT_YUYV, | ||
79 | IPU_PIX_FMT_UYVY, | ||
80 | /* 3 bytes */ | ||
81 | IPU_PIX_FMT_RGB24, | ||
82 | IPU_PIX_FMT_BGR24, | ||
83 | /* 4 bytes */ | ||
84 | IPU_PIX_FMT_GENERIC_32, | ||
85 | IPU_PIX_FMT_RGB32, | ||
86 | IPU_PIX_FMT_BGR32, | ||
87 | IPU_PIX_FMT_ABGR32, | ||
88 | IPU_PIX_FMT_BGRA32, | ||
89 | IPU_PIX_FMT_RGBA32, | ||
90 | }; | ||
91 | |||
92 | enum ipu_color_space { | ||
93 | IPU_COLORSPACE_RGB, | ||
94 | IPU_COLORSPACE_YCBCR, | ||
95 | IPU_COLORSPACE_YUV | ||
96 | }; | ||
97 | |||
98 | /* | ||
99 | * Enumeration of IPU rotation modes | ||
100 | */ | ||
101 | enum ipu_rotate_mode { | ||
102 | /* Note the enum values correspond to BAM value */ | ||
103 | IPU_ROTATE_NONE = 0, | ||
104 | IPU_ROTATE_VERT_FLIP = 1, | ||
105 | IPU_ROTATE_HORIZ_FLIP = 2, | ||
106 | IPU_ROTATE_180 = 3, | ||
107 | IPU_ROTATE_90_RIGHT = 4, | ||
108 | IPU_ROTATE_90_RIGHT_VFLIP = 5, | ||
109 | IPU_ROTATE_90_RIGHT_HFLIP = 6, | ||
110 | IPU_ROTATE_90_LEFT = 7, | ||
111 | }; | ||
112 | |||
113 | struct ipu_platform_data { | ||
114 | unsigned int irq_base; | ||
115 | }; | ||
116 | |||
117 | /* | ||
118 | * Enumeration of DI ports for ADC. | ||
119 | */ | ||
120 | enum display_port { | ||
121 | DISP0, | ||
122 | DISP1, | ||
123 | DISP2, | ||
124 | DISP3 | ||
125 | }; | ||
126 | |||
127 | struct idmac_video_param { | ||
128 | unsigned short in_width; | ||
129 | unsigned short in_height; | ||
130 | uint32_t in_pixel_fmt; | ||
131 | unsigned short out_width; | ||
132 | unsigned short out_height; | ||
133 | uint32_t out_pixel_fmt; | ||
134 | unsigned short out_stride; | ||
135 | bool graphics_combine_en; | ||
136 | bool global_alpha_en; | ||
137 | bool key_color_en; | ||
138 | enum display_port disp; | ||
139 | unsigned short out_left; | ||
140 | unsigned short out_top; | ||
141 | }; | ||
142 | |||
143 | /* | ||
144 | * Union of initialization parameters for a logical channel. So far only video | ||
145 | * parameters are used. | ||
146 | */ | ||
147 | union ipu_channel_param { | ||
148 | struct idmac_video_param video; | ||
149 | }; | ||
150 | |||
151 | struct idmac_tx_desc { | ||
152 | struct dma_async_tx_descriptor txd; | ||
153 | struct scatterlist *sg; /* scatterlist for this */ | ||
154 | unsigned int sg_len; /* tx-descriptor. */ | ||
155 | struct list_head list; | ||
156 | }; | ||
157 | |||
158 | struct idmac_channel { | ||
159 | struct dma_chan dma_chan; | ||
160 | dma_cookie_t completed; /* last completed cookie */ | ||
161 | union ipu_channel_param params; | ||
162 | enum ipu_channel link; /* input channel, linked to the output */ | ||
163 | enum ipu_channel_status status; | ||
164 | void *client; /* Only one client per channel */ | ||
165 | unsigned int n_tx_desc; | ||
166 | struct idmac_tx_desc *desc; /* allocated tx-descriptors */ | ||
167 | struct scatterlist *sg[2]; /* scatterlist elements in buffer-0 and -1 */ | ||
168 | struct list_head free_list; /* free tx-descriptors */ | ||
169 | struct list_head queue; /* queued tx-descriptors */ | ||
170 | spinlock_t lock; /* protects sg[0,1], queue */ | ||
171 | struct mutex chan_mutex; /* protects status, cookie, free_list */ | ||
172 | bool sec_chan_en; | ||
173 | int active_buffer; | ||
174 | unsigned int eof_irq; | ||
175 | char eof_name[16]; /* EOF IRQ name for request_irq() */ | ||
176 | }; | ||
177 | |||
178 | #define to_tx_desc(tx) container_of(tx, struct idmac_tx_desc, txd) | ||
179 | #define to_idmac_chan(c) container_of(c, struct idmac_channel, dma_chan) | ||
180 | |||
181 | #endif | ||
diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h index e06d3cb0ee11..c02b8fc2d821 100644 --- a/arch/arm/plat-mxc/include/mach/irqs.h +++ b/arch/arm/plat-mxc/include/mach/irqs.h | |||
@@ -35,7 +35,15 @@ | |||
35 | #define MXC_BOARD_IRQ_START (MXC_INTERNAL_IRQS + MXC_GPIO_IRQS) | 35 | #define MXC_BOARD_IRQ_START (MXC_INTERNAL_IRQS + MXC_GPIO_IRQS) |
36 | #define MXC_BOARD_IRQS 16 | 36 | #define MXC_BOARD_IRQS 16 |
37 | 37 | ||
38 | #define NR_IRQS (MXC_BOARD_IRQ_START + MXC_BOARD_IRQS) | 38 | #define MXC_IPU_IRQ_START (MXC_BOARD_IRQ_START + MXC_BOARD_IRQS) |
39 | |||
40 | #ifdef CONFIG_MX3_IPU_IRQS | ||
41 | #define MX3_IPU_IRQS CONFIG_MX3_IPU_IRQS | ||
42 | #else | ||
43 | #define MX3_IPU_IRQS 0 | ||
44 | #endif | ||
45 | |||
46 | #define NR_IRQS (MXC_IPU_IRQ_START + MX3_IPU_IRQS) | ||
39 | 47 | ||
40 | extern void imx_irq_set_priority(unsigned char irq, unsigned char prio); | 48 | extern void imx_irq_set_priority(unsigned char irq, unsigned char prio); |
41 | 49 | ||
diff --git a/arch/arm/plat-mxc/include/mach/mx3fb.h b/arch/arm/plat-mxc/include/mach/mx3fb.h new file mode 100644 index 000000000000..e391a76ca87d --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/mx3fb.h | |||
@@ -0,0 +1,38 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | |||
10 | #ifndef __ASM_ARCH_MX3FB_H__ | ||
11 | #define __ASM_ARCH_MX3FB_H__ | ||
12 | |||
13 | #include <linux/device.h> | ||
14 | #include <linux/fb.h> | ||
15 | |||
16 | /* Proprietary FB_SYNC_ flags */ | ||
17 | #define FB_SYNC_OE_ACT_HIGH 0x80000000 | ||
18 | #define FB_SYNC_CLK_INVERT 0x40000000 | ||
19 | #define FB_SYNC_DATA_INVERT 0x20000000 | ||
20 | #define FB_SYNC_CLK_IDLE_EN 0x10000000 | ||
21 | #define FB_SYNC_SHARP_MODE 0x08000000 | ||
22 | #define FB_SYNC_SWAP_RGB 0x04000000 | ||
23 | #define FB_SYNC_CLK_SEL_EN 0x02000000 | ||
24 | |||
25 | /** | ||
26 | * struct mx3fb_platform_data - mx3fb platform data | ||
27 | * | ||
28 | * @dma_dev: pointer to the dma-device, used for dma-slave connection | ||
29 | * @mode: pointer to a platform-provided per mxc_register_fb() videomode | ||
30 | */ | ||
31 | struct mx3fb_platform_data { | ||
32 | struct device *dma_dev; | ||
33 | const char *name; | ||
34 | const struct fb_videomode *mode; | ||
35 | int num_modes; | ||
36 | }; | ||
37 | |||
38 | #endif | ||
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 692d2b495af3..e77373c39f8c 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -278,14 +278,11 @@ void omap_set_dma_transfer_params(int lch, int data_type, int elem_count, | |||
278 | u32 val; | 278 | u32 val; |
279 | 279 | ||
280 | val = dma_read(CCR(lch)); | 280 | val = dma_read(CCR(lch)); |
281 | val &= ~(3 << 19); | 281 | |
282 | if (dma_trigger > 63) | 282 | /* DMA_SYNCHRO_CONTROL_UPPER depends on the channel number */ |
283 | val |= 1 << 20; | 283 | val &= ~((3 << 19) | 0x1f); |
284 | if (dma_trigger > 31) | 284 | val |= (dma_trigger & ~0x1f) << 14; |
285 | val |= 1 << 19; | 285 | val |= dma_trigger & 0x1f; |
286 | |||
287 | val &= ~(0x1f); | ||
288 | val |= (dma_trigger & 0x1f); | ||
289 | 286 | ||
290 | if (sync_mode & OMAP_DMA_SYNC_FRAME) | 287 | if (sync_mode & OMAP_DMA_SYNC_FRAME) |
291 | val |= 1 << 5; | 288 | val |= 1 << 5; |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 07b6968a7d16..f856a90b264e 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -1789,6 +1789,8 @@ static int dbg_gpio_show(struct seq_file *s, void *unused) | |||
1789 | /* FIXME for at least omap2, show pullup/pulldown state */ | 1789 | /* FIXME for at least omap2, show pullup/pulldown state */ |
1790 | 1790 | ||
1791 | irqstat = irq_desc[irq].status; | 1791 | irqstat = irq_desc[irq].status; |
1792 | #if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP24XX) || \ | ||
1793 | defined(CONFIG_ARCH_OMAP34XX) | ||
1792 | if (is_in && ((bank->suspend_wakeup & mask) | 1794 | if (is_in && ((bank->suspend_wakeup & mask) |
1793 | || irqstat & IRQ_TYPE_SENSE_MASK)) { | 1795 | || irqstat & IRQ_TYPE_SENSE_MASK)) { |
1794 | char *trigger = NULL; | 1796 | char *trigger = NULL; |
@@ -1818,6 +1820,7 @@ static int dbg_gpio_show(struct seq_file *s, void *unused) | |||
1818 | (bank->suspend_wakeup & mask) | 1820 | (bank->suspend_wakeup & mask) |
1819 | ? " wakeup" : ""); | 1821 | ? " wakeup" : ""); |
1820 | } | 1822 | } |
1823 | #endif | ||
1821 | seq_printf(s, "\n"); | 1824 | seq_printf(s, "\n"); |
1822 | } | 1825 | } |
1823 | 1826 | ||
diff --git a/arch/arm/plat-omap/include/mach/aic23.h b/arch/arm/plat-omap/include/mach/aic23.h deleted file mode 100644 index 5ccedac77526..000000000000 --- a/arch/arm/plat-omap/include/mach/aic23.h +++ /dev/null | |||
@@ -1,116 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/plat-omap/include/mach/aic23.h | ||
3 | * | ||
4 | * Hardware definitions for TI TLV320AIC23 audio codec | ||
5 | * | ||
6 | * Copyright (C) 2002 RidgeRun, Inc. | ||
7 | * Author: Steve Johnson | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify it | ||
10 | * under the terms of the GNU General Public License as published by the | ||
11 | * Free Software Foundation; either version 2 of the License, or (at your | ||
12 | * option) any later version. | ||
13 | * | ||
14 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
15 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
16 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
17 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
18 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
19 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
20 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
21 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
22 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
23 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
24 | * | ||
25 | * You should have received a copy of the GNU General Public License along | ||
26 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
27 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
28 | */ | ||
29 | |||
30 | #ifndef __ASM_ARCH_AIC23_H | ||
31 | #define __ASM_ARCH_AIC23_H | ||
32 | |||
33 | // Codec TLV320AIC23 | ||
34 | #define LEFT_LINE_VOLUME_ADDR 0x00 | ||
35 | #define RIGHT_LINE_VOLUME_ADDR 0x01 | ||
36 | #define LEFT_CHANNEL_VOLUME_ADDR 0x02 | ||
37 | #define RIGHT_CHANNEL_VOLUME_ADDR 0x03 | ||
38 | #define ANALOG_AUDIO_CONTROL_ADDR 0x04 | ||
39 | #define DIGITAL_AUDIO_CONTROL_ADDR 0x05 | ||
40 | #define POWER_DOWN_CONTROL_ADDR 0x06 | ||
41 | #define DIGITAL_AUDIO_FORMAT_ADDR 0x07 | ||
42 | #define SAMPLE_RATE_CONTROL_ADDR 0x08 | ||
43 | #define DIGITAL_INTERFACE_ACT_ADDR 0x09 | ||
44 | #define RESET_CONTROL_ADDR 0x0F | ||
45 | |||
46 | // Left (right) line input volume control register | ||
47 | #define LRS_ENABLED 0x0100 | ||
48 | #define LIM_MUTED 0x0080 | ||
49 | #define LIV_DEFAULT 0x0017 | ||
50 | #define LIV_MAX 0x001f | ||
51 | #define LIV_MIN 0x0000 | ||
52 | |||
53 | // Left (right) channel headphone volume control register | ||
54 | #define LZC_ON 0x0080 | ||
55 | #define LHV_DEFAULT 0x0079 | ||
56 | #define LHV_MAX 0x007f | ||
57 | #define LHV_MIN 0x0000 | ||
58 | |||
59 | // Analog audio path control register | ||
60 | #define STA_REG(x) ((x)<<6) | ||
61 | #define STE_ENABLED 0x0020 | ||
62 | #define DAC_SELECTED 0x0010 | ||
63 | #define BYPASS_ON 0x0008 | ||
64 | #define INSEL_MIC 0x0004 | ||
65 | #define MICM_MUTED 0x0002 | ||
66 | #define MICB_20DB 0x0001 | ||
67 | |||
68 | // Digital audio path control register | ||
69 | #define DACM_MUTE 0x0008 | ||
70 | #define DEEMP_32K 0x0002 | ||
71 | #define DEEMP_44K 0x0004 | ||
72 | #define DEEMP_48K 0x0006 | ||
73 | #define ADCHP_ON 0x0001 | ||
74 | |||
75 | // Power control down register | ||
76 | #define DEVICE_POWER_OFF 0x0080 | ||
77 | #define CLK_OFF 0x0040 | ||
78 | #define OSC_OFF 0x0020 | ||
79 | #define OUT_OFF 0x0010 | ||
80 | #define DAC_OFF 0x0008 | ||
81 | #define ADC_OFF 0x0004 | ||
82 | #define MIC_OFF 0x0002 | ||
83 | #define LINE_OFF 0x0001 | ||
84 | |||
85 | // Digital audio interface register | ||
86 | #define MS_MASTER 0x0040 | ||
87 | #define LRSWAP_ON 0x0020 | ||
88 | #define LRP_ON 0x0010 | ||
89 | #define IWL_16 0x0000 | ||
90 | #define IWL_20 0x0004 | ||
91 | #define IWL_24 0x0008 | ||
92 | #define IWL_32 0x000C | ||
93 | #define FOR_I2S 0x0002 | ||
94 | #define FOR_DSP 0x0003 | ||
95 | |||
96 | // Sample rate control register | ||
97 | #define CLKOUT_HALF 0x0080 | ||
98 | #define CLKIN_HALF 0x0040 | ||
99 | #define BOSR_384fs 0x0002 // BOSR_272fs when in USB mode | ||
100 | #define USB_CLK_ON 0x0001 | ||
101 | #define SR_MASK 0xf | ||
102 | #define CLKOUT_SHIFT 7 | ||
103 | #define CLKIN_SHIFT 6 | ||
104 | #define SR_SHIFT 2 | ||
105 | #define BOSR_SHIFT 1 | ||
106 | |||
107 | // Digital interface register | ||
108 | #define ACT_ON 0x0001 | ||
109 | |||
110 | #define TLV320AIC23ID1 (0x1a) // cs low | ||
111 | #define TLV320AIC23ID2 (0x1b) // cs high | ||
112 | |||
113 | void aic23_power_up(void); | ||
114 | void aic23_power_down(void); | ||
115 | |||
116 | #endif /* __ASM_ARCH_AIC23_H */ | ||
diff --git a/arch/arm/plat-omap/include/mach/board-h3.h b/arch/arm/plat-omap/include/mach/board-h3.h index 14909dc7858a..1888326da7ea 100644 --- a/arch/arm/plat-omap/include/mach/board-h3.h +++ b/arch/arm/plat-omap/include/mach/board-h3.h | |||
@@ -30,7 +30,9 @@ | |||
30 | /* In OMAP1710 H3 the Ethernet is directly connected to CS1 */ | 30 | /* In OMAP1710 H3 the Ethernet is directly connected to CS1 */ |
31 | #define OMAP1710_ETHR_START 0x04000300 | 31 | #define OMAP1710_ETHR_START 0x04000300 |
32 | 32 | ||
33 | #define H3_TPS_GPIO_BASE (OMAP_MAX_GPIO_LINES + 16 /* MPUIO */) | ||
34 | # define H3_TPS_GPIO_MMC_PWR_EN (H3_TPS_GPIO_BASE + 4) | ||
35 | |||
33 | extern void h3_mmc_init(void); | 36 | extern void h3_mmc_init(void); |
34 | extern void h3_mmc_slot_cover_handler(void *arg, int state); | ||
35 | 37 | ||
36 | #endif /* __ASM_ARCH_OMAP_H3_H */ | 38 | #endif /* __ASM_ARCH_OMAP_H3_H */ |
diff --git a/arch/arm/plat-omap/include/mach/gpio.h b/arch/arm/plat-omap/include/mach/gpio.h index 04e68e88f134..8d9dfe314387 100644 --- a/arch/arm/plat-omap/include/mach/gpio.h +++ b/arch/arm/plat-omap/include/mach/gpio.h | |||
@@ -87,16 +87,6 @@ extern void omap_set_gpio_debounce_time(int gpio, int enable); | |||
87 | #include <linux/errno.h> | 87 | #include <linux/errno.h> |
88 | #include <asm-generic/gpio.h> | 88 | #include <asm-generic/gpio.h> |
89 | 89 | ||
90 | static inline int omap_request_gpio(int gpio) | ||
91 | { | ||
92 | return gpio_request(gpio, "FIXME"); | ||
93 | } | ||
94 | |||
95 | static inline void omap_free_gpio(int gpio) | ||
96 | { | ||
97 | gpio_free(gpio); | ||
98 | } | ||
99 | |||
100 | static inline int gpio_get_value(unsigned gpio) | 90 | static inline int gpio_get_value(unsigned gpio) |
101 | { | 91 | { |
102 | return __gpio_get_value(gpio); | 92 | return __gpio_get_value(gpio); |
diff --git a/arch/arm/plat-omap/include/mach/mcbsp.h b/arch/arm/plat-omap/include/mach/mcbsp.h index 6a0d1a0a24a7..eef873db3d48 100644 --- a/arch/arm/plat-omap/include/mach/mcbsp.h +++ b/arch/arm/plat-omap/include/mach/mcbsp.h | |||
@@ -87,6 +87,10 @@ | |||
87 | #define OMAP_MCBSP_REG_XCERG 0x3A | 87 | #define OMAP_MCBSP_REG_XCERG 0x3A |
88 | #define OMAP_MCBSP_REG_XCERH 0x3C | 88 | #define OMAP_MCBSP_REG_XCERH 0x3C |
89 | 89 | ||
90 | /* Dummy defines, these are not available on omap1 */ | ||
91 | #define OMAP_MCBSP_REG_XCCR 0x00 | ||
92 | #define OMAP_MCBSP_REG_RCCR 0x00 | ||
93 | |||
90 | #define AUDIO_MCBSP_DATAWRITE (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DXR1) | 94 | #define AUDIO_MCBSP_DATAWRITE (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DXR1) |
91 | #define AUDIO_MCBSP_DATAREAD (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DRR1) | 95 | #define AUDIO_MCBSP_DATAREAD (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DRR1) |
92 | 96 | ||
@@ -231,11 +235,16 @@ | |||
231 | #define XPBBLK(value) ((value)<<7) /* Bits 7:8 */ | 235 | #define XPBBLK(value) ((value)<<7) /* Bits 7:8 */ |
232 | 236 | ||
233 | /*********************** McBSP XCCR bit definitions *************************/ | 237 | /*********************** McBSP XCCR bit definitions *************************/ |
238 | #define EXTCLKGATE 0x8000 | ||
239 | #define PPCONNECT 0x4000 | ||
240 | #define DXENDLY(value) ((value)<<12) /* Bits 12:13 */ | ||
241 | #define XFULL_CYCLE 0x0800 | ||
234 | #define DILB 0x0020 | 242 | #define DILB 0x0020 |
235 | #define XDMAEN 0x0008 | 243 | #define XDMAEN 0x0008 |
236 | #define XDISABLE 0x0001 | 244 | #define XDISABLE 0x0001 |
237 | 245 | ||
238 | /********************** McBSP RCCR bit definitions *************************/ | 246 | /********************** McBSP RCCR bit definitions *************************/ |
247 | #define RFULL_CYCLE 0x0800 | ||
239 | #define RDMAEN 0x0008 | 248 | #define RDMAEN 0x0008 |
240 | #define RDISABLE 0x0001 | 249 | #define RDISABLE 0x0001 |
241 | 250 | ||
@@ -267,6 +276,8 @@ struct omap_mcbsp_reg_cfg { | |||
267 | u16 rcerh; | 276 | u16 rcerh; |
268 | u16 xcerg; | 277 | u16 xcerg; |
269 | u16 xcerh; | 278 | u16 xcerh; |
279 | u16 xccr; | ||
280 | u16 rccr; | ||
270 | }; | 281 | }; |
271 | 282 | ||
272 | typedef enum { | 283 | typedef enum { |
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c index af33fc713e1a..f2401a831f99 100644 --- a/arch/arm/plat-omap/mcbsp.c +++ b/arch/arm/plat-omap/mcbsp.c | |||
@@ -173,6 +173,10 @@ void omap_mcbsp_config(unsigned int id, const struct omap_mcbsp_reg_cfg *config) | |||
173 | OMAP_MCBSP_WRITE(io_base, MCR2, config->mcr2); | 173 | OMAP_MCBSP_WRITE(io_base, MCR2, config->mcr2); |
174 | OMAP_MCBSP_WRITE(io_base, MCR1, config->mcr1); | 174 | OMAP_MCBSP_WRITE(io_base, MCR1, config->mcr1); |
175 | OMAP_MCBSP_WRITE(io_base, PCR0, config->pcr0); | 175 | OMAP_MCBSP_WRITE(io_base, PCR0, config->pcr0); |
176 | if (cpu_is_omap2430() || cpu_is_omap34xx()) { | ||
177 | OMAP_MCBSP_WRITE(io_base, XCCR, config->xccr); | ||
178 | OMAP_MCBSP_WRITE(io_base, RCCR, config->rccr); | ||
179 | } | ||
176 | } | 180 | } |
177 | EXPORT_SYMBOL(omap_mcbsp_config); | 181 | EXPORT_SYMBOL(omap_mcbsp_config); |
178 | 182 | ||
diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c index add0485703b5..e278de6862ae 100644 --- a/arch/arm/plat-omap/usb.c +++ b/arch/arm/plat-omap/usb.c | |||
@@ -431,15 +431,6 @@ bad: | |||
431 | 431 | ||
432 | /*-------------------------------------------------------------------------*/ | 432 | /*-------------------------------------------------------------------------*/ |
433 | 433 | ||
434 | #if defined(CONFIG_USB_GADGET_OMAP) || \ | ||
435 | defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) || \ | ||
436 | (defined(CONFIG_USB_OTG) && defined(CONFIG_ARCH_OMAP_OTG)) | ||
437 | static void usb_release(struct device *dev) | ||
438 | { | ||
439 | /* normally not freed */ | ||
440 | } | ||
441 | #endif | ||
442 | |||
443 | #ifdef CONFIG_USB_GADGET_OMAP | 434 | #ifdef CONFIG_USB_GADGET_OMAP |
444 | 435 | ||
445 | static struct resource udc_resources[] = { | 436 | static struct resource udc_resources[] = { |
@@ -466,7 +457,6 @@ static struct platform_device udc_device = { | |||
466 | .name = "omap_udc", | 457 | .name = "omap_udc", |
467 | .id = -1, | 458 | .id = -1, |
468 | .dev = { | 459 | .dev = { |
469 | .release = usb_release, | ||
470 | .dma_mask = &udc_dmamask, | 460 | .dma_mask = &udc_dmamask, |
471 | .coherent_dma_mask = 0xffffffff, | 461 | .coherent_dma_mask = 0xffffffff, |
472 | }, | 462 | }, |
@@ -497,7 +487,6 @@ static struct platform_device ohci_device = { | |||
497 | .name = "ohci", | 487 | .name = "ohci", |
498 | .id = -1, | 488 | .id = -1, |
499 | .dev = { | 489 | .dev = { |
500 | .release = usb_release, | ||
501 | .dma_mask = &ohci_dmamask, | 490 | .dma_mask = &ohci_dmamask, |
502 | .coherent_dma_mask = 0xffffffff, | 491 | .coherent_dma_mask = 0xffffffff, |
503 | }, | 492 | }, |
@@ -524,9 +513,6 @@ static struct resource otg_resources[] = { | |||
524 | static struct platform_device otg_device = { | 513 | static struct platform_device otg_device = { |
525 | .name = "omap_otg", | 514 | .name = "omap_otg", |
526 | .id = -1, | 515 | .id = -1, |
527 | .dev = { | ||
528 | .release = usb_release, | ||
529 | }, | ||
530 | .num_resources = ARRAY_SIZE(otg_resources), | 516 | .num_resources = ARRAY_SIZE(otg_resources), |
531 | .resource = otg_resources, | 517 | .resource = otg_resources, |
532 | }; | 518 | }; |
diff --git a/arch/avr32/configs/atngw100_defconfig b/arch/avr32/configs/atngw100_defconfig index 164e2814ae78..574aca975334 100644 --- a/arch/avr32/configs/atngw100_defconfig +++ b/arch/avr32/configs/atngw100_defconfig | |||
@@ -644,8 +644,8 @@ CONFIG_I2C_GPIO=m | |||
644 | # Miscellaneous I2C Chip support | 644 | # Miscellaneous I2C Chip support |
645 | # | 645 | # |
646 | # CONFIG_DS1682 is not set | 646 | # CONFIG_DS1682 is not set |
647 | CONFIG_AT24=m | 647 | CONFIG_EEPROM_AT24=m |
648 | # CONFIG_SENSORS_EEPROM is not set | 648 | # CONFIG_EEPROM_LEGACY is not set |
649 | # CONFIG_SENSORS_PCF8574 is not set | 649 | # CONFIG_SENSORS_PCF8574 is not set |
650 | # CONFIG_PCF8575 is not set | 650 | # CONFIG_PCF8575 is not set |
651 | # CONFIG_SENSORS_PCA9539 is not set | 651 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -670,7 +670,7 @@ CONFIG_SPI_ATMEL=y | |||
670 | # | 670 | # |
671 | # SPI Protocol Masters | 671 | # SPI Protocol Masters |
672 | # | 672 | # |
673 | # CONFIG_SPI_AT25 is not set | 673 | # CONFIG_EEPROM_AT25 is not set |
674 | CONFIG_SPI_SPIDEV=m | 674 | CONFIG_SPI_SPIDEV=m |
675 | # CONFIG_SPI_TLE62X0 is not set | 675 | # CONFIG_SPI_TLE62X0 is not set |
676 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 676 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/avr32/configs/atngw100_evklcd100_defconfig b/arch/avr32/configs/atngw100_evklcd100_defconfig index b0572d213826..86a45b5c9d0d 100644 --- a/arch/avr32/configs/atngw100_evklcd100_defconfig +++ b/arch/avr32/configs/atngw100_evklcd100_defconfig | |||
@@ -671,7 +671,7 @@ CONFIG_I2C_GPIO=m | |||
671 | # Miscellaneous I2C Chip support | 671 | # Miscellaneous I2C Chip support |
672 | # | 672 | # |
673 | # CONFIG_DS1682 is not set | 673 | # CONFIG_DS1682 is not set |
674 | # CONFIG_SENSORS_EEPROM is not set | 674 | # CONFIG_EEPROM_LEGACY is not set |
675 | # CONFIG_SENSORS_PCF8574 is not set | 675 | # CONFIG_SENSORS_PCF8574 is not set |
676 | # CONFIG_PCF8575 is not set | 676 | # CONFIG_PCF8575 is not set |
677 | # CONFIG_SENSORS_PCF8591 is not set | 677 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -699,7 +699,7 @@ CONFIG_SPI_ATMEL=y | |||
699 | # | 699 | # |
700 | # SPI Protocol Masters | 700 | # SPI Protocol Masters |
701 | # | 701 | # |
702 | # CONFIG_SPI_AT25 is not set | 702 | # CONFIG_EEPROM_AT25 is not set |
703 | CONFIG_SPI_SPIDEV=m | 703 | CONFIG_SPI_SPIDEV=m |
704 | # CONFIG_SPI_TLE62X0 is not set | 704 | # CONFIG_SPI_TLE62X0 is not set |
705 | CONFIG_HAVE_GPIO_LIB=y | 705 | CONFIG_HAVE_GPIO_LIB=y |
diff --git a/arch/avr32/configs/atngw100_evklcd101_defconfig b/arch/avr32/configs/atngw100_evklcd101_defconfig index c5b898d21075..a96b68ea5e83 100644 --- a/arch/avr32/configs/atngw100_evklcd101_defconfig +++ b/arch/avr32/configs/atngw100_evklcd101_defconfig | |||
@@ -671,7 +671,7 @@ CONFIG_I2C_GPIO=m | |||
671 | # Miscellaneous I2C Chip support | 671 | # Miscellaneous I2C Chip support |
672 | # | 672 | # |
673 | # CONFIG_DS1682 is not set | 673 | # CONFIG_DS1682 is not set |
674 | # CONFIG_SENSORS_EEPROM is not set | 674 | # CONFIG_EEPROM_LEGACY is not set |
675 | # CONFIG_SENSORS_PCF8574 is not set | 675 | # CONFIG_SENSORS_PCF8574 is not set |
676 | # CONFIG_PCF8575 is not set | 676 | # CONFIG_PCF8575 is not set |
677 | # CONFIG_SENSORS_PCF8591 is not set | 677 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -699,7 +699,7 @@ CONFIG_SPI_ATMEL=y | |||
699 | # | 699 | # |
700 | # SPI Protocol Masters | 700 | # SPI Protocol Masters |
701 | # | 701 | # |
702 | # CONFIG_SPI_AT25 is not set | 702 | # CONFIG_EEPROM_AT25 is not set |
703 | CONFIG_SPI_SPIDEV=m | 703 | CONFIG_SPI_SPIDEV=m |
704 | # CONFIG_SPI_TLE62X0 is not set | 704 | # CONFIG_SPI_TLE62X0 is not set |
705 | CONFIG_HAVE_GPIO_LIB=y | 705 | CONFIG_HAVE_GPIO_LIB=y |
diff --git a/arch/avr32/configs/atstk1002_defconfig b/arch/avr32/configs/atstk1002_defconfig index c9dc64832a19..0abe90adb1a4 100644 --- a/arch/avr32/configs/atstk1002_defconfig +++ b/arch/avr32/configs/atstk1002_defconfig | |||
@@ -663,8 +663,8 @@ CONFIG_I2C_GPIO=m | |||
663 | # Miscellaneous I2C Chip support | 663 | # Miscellaneous I2C Chip support |
664 | # | 664 | # |
665 | # CONFIG_DS1682 is not set | 665 | # CONFIG_DS1682 is not set |
666 | CONFIG_AT24=m | 666 | CONFIG_EEPROM_AT24=m |
667 | # CONFIG_SENSORS_EEPROM is not set | 667 | # CONFIG_EEPROM_LEGACY is not set |
668 | # CONFIG_SENSORS_PCF8574 is not set | 668 | # CONFIG_SENSORS_PCF8574 is not set |
669 | # CONFIG_PCF8575 is not set | 669 | # CONFIG_PCF8575 is not set |
670 | # CONFIG_SENSORS_PCA9539 is not set | 670 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -689,7 +689,7 @@ CONFIG_SPI_ATMEL=y | |||
689 | # | 689 | # |
690 | # SPI Protocol Masters | 690 | # SPI Protocol Masters |
691 | # | 691 | # |
692 | # CONFIG_SPI_AT25 is not set | 692 | # CONFIG_EEPROM_AT25 is not set |
693 | CONFIG_SPI_SPIDEV=m | 693 | CONFIG_SPI_SPIDEV=m |
694 | # CONFIG_SPI_TLE62X0 is not set | 694 | # CONFIG_SPI_TLE62X0 is not set |
695 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 695 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/avr32/configs/atstk1003_defconfig b/arch/avr32/configs/atstk1003_defconfig index 29ea1327b498..101972f40f07 100644 --- a/arch/avr32/configs/atstk1003_defconfig +++ b/arch/avr32/configs/atstk1003_defconfig | |||
@@ -611,8 +611,8 @@ CONFIG_I2C_GPIO=m | |||
611 | # Miscellaneous I2C Chip support | 611 | # Miscellaneous I2C Chip support |
612 | # | 612 | # |
613 | # CONFIG_DS1682 is not set | 613 | # CONFIG_DS1682 is not set |
614 | CONFIG_AT24=m | 614 | CONFIG_EEPROM_AT24=m |
615 | # CONFIG_SENSORS_EEPROM is not set | 615 | # CONFIG_EEPROM_LEGACY is not set |
616 | # CONFIG_SENSORS_PCF8574 is not set | 616 | # CONFIG_SENSORS_PCF8574 is not set |
617 | # CONFIG_PCF8575 is not set | 617 | # CONFIG_PCF8575 is not set |
618 | # CONFIG_SENSORS_PCA9539 is not set | 618 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -637,7 +637,7 @@ CONFIG_SPI_ATMEL=y | |||
637 | # | 637 | # |
638 | # SPI Protocol Masters | 638 | # SPI Protocol Masters |
639 | # | 639 | # |
640 | # CONFIG_SPI_AT25 is not set | 640 | # CONFIG_EEPROM_AT25 is not set |
641 | CONFIG_SPI_SPIDEV=m | 641 | CONFIG_SPI_SPIDEV=m |
642 | # CONFIG_SPI_TLE62X0 is not set | 642 | # CONFIG_SPI_TLE62X0 is not set |
643 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 643 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/avr32/configs/atstk1004_defconfig b/arch/avr32/configs/atstk1004_defconfig index 69e6c0d08ce8..518f7898df75 100644 --- a/arch/avr32/configs/atstk1004_defconfig +++ b/arch/avr32/configs/atstk1004_defconfig | |||
@@ -394,7 +394,7 @@ CONFIG_SPI_ATMEL=y | |||
394 | # | 394 | # |
395 | # SPI Protocol Masters | 395 | # SPI Protocol Masters |
396 | # | 396 | # |
397 | # CONFIG_SPI_AT25 is not set | 397 | # CONFIG_EEPROM_AT25 is not set |
398 | # CONFIG_SPI_SPIDEV is not set | 398 | # CONFIG_SPI_SPIDEV is not set |
399 | # CONFIG_SPI_TLE62X0 is not set | 399 | # CONFIG_SPI_TLE62X0 is not set |
400 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 400 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/avr32/configs/atstk1006_defconfig b/arch/avr32/configs/atstk1006_defconfig index 361c31c2af10..c1603c4860e0 100644 --- a/arch/avr32/configs/atstk1006_defconfig +++ b/arch/avr32/configs/atstk1006_defconfig | |||
@@ -684,8 +684,8 @@ CONFIG_I2C_GPIO=m | |||
684 | # Miscellaneous I2C Chip support | 684 | # Miscellaneous I2C Chip support |
685 | # | 685 | # |
686 | # CONFIG_DS1682 is not set | 686 | # CONFIG_DS1682 is not set |
687 | # CONFIG_AT24 is not set | 687 | # CONFIG_EEPROM_AT24 is not set |
688 | # CONFIG_SENSORS_EEPROM is not set | 688 | # CONFIG_EEPROM_LEGACY is not set |
689 | # CONFIG_SENSORS_PCF8574 is not set | 689 | # CONFIG_SENSORS_PCF8574 is not set |
690 | # CONFIG_PCF8575 is not set | 690 | # CONFIG_PCF8575 is not set |
691 | # CONFIG_SENSORS_PCA9539 is not set | 691 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -710,7 +710,7 @@ CONFIG_SPI_ATMEL=y | |||
710 | # | 710 | # |
711 | # SPI Protocol Masters | 711 | # SPI Protocol Masters |
712 | # | 712 | # |
713 | # CONFIG_SPI_AT25 is not set | 713 | # CONFIG_EEPROM_AT25 is not set |
714 | CONFIG_SPI_SPIDEV=m | 714 | CONFIG_SPI_SPIDEV=m |
715 | # CONFIG_SPI_TLE62X0 is not set | 715 | # CONFIG_SPI_TLE62X0 is not set |
716 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 716 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/avr32/configs/favr-32_defconfig b/arch/avr32/configs/favr-32_defconfig index e2bd9982e2af..4c3ac0643e4a 100644 --- a/arch/avr32/configs/favr-32_defconfig +++ b/arch/avr32/configs/favr-32_defconfig | |||
@@ -633,8 +633,8 @@ CONFIG_I2C_GPIO=m | |||
633 | # Miscellaneous I2C Chip support | 633 | # Miscellaneous I2C Chip support |
634 | # | 634 | # |
635 | # CONFIG_DS1682 is not set | 635 | # CONFIG_DS1682 is not set |
636 | # CONFIG_AT24 is not set | 636 | # CONFIG_EEPROM_AT24 is not set |
637 | # CONFIG_SENSORS_EEPROM is not set | 637 | # CONFIG_EEPROM_LEGACY is not set |
638 | # CONFIG_SENSORS_PCF8574 is not set | 638 | # CONFIG_SENSORS_PCF8574 is not set |
639 | # CONFIG_PCF8575 is not set | 639 | # CONFIG_PCF8575 is not set |
640 | # CONFIG_SENSORS_PCA9539 is not set | 640 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -659,7 +659,7 @@ CONFIG_SPI_ATMEL=y | |||
659 | # | 659 | # |
660 | # SPI Protocol Masters | 660 | # SPI Protocol Masters |
661 | # | 661 | # |
662 | # CONFIG_SPI_AT25 is not set | 662 | # CONFIG_EEPROM_AT25 is not set |
663 | CONFIG_SPI_SPIDEV=m | 663 | CONFIG_SPI_SPIDEV=m |
664 | # CONFIG_SPI_TLE62X0 is not set | 664 | # CONFIG_SPI_TLE62X0 is not set |
665 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 665 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/avr32/configs/hammerhead_defconfig b/arch/avr32/configs/hammerhead_defconfig index 0d3d2982c8f5..3970fcc4d76e 100644 --- a/arch/avr32/configs/hammerhead_defconfig +++ b/arch/avr32/configs/hammerhead_defconfig | |||
@@ -716,8 +716,8 @@ CONFIG_I2C_GPIO=m | |||
716 | # Miscellaneous I2C Chip support | 716 | # Miscellaneous I2C Chip support |
717 | # | 717 | # |
718 | # CONFIG_DS1682 is not set | 718 | # CONFIG_DS1682 is not set |
719 | # CONFIG_AT24 is not set | 719 | # CONFIG_EEPROM_AT24 is not set |
720 | # CONFIG_SENSORS_EEPROM is not set | 720 | # CONFIG_EEPROM_LEGACY is not set |
721 | # CONFIG_SENSORS_PCF8574 is not set | 721 | # CONFIG_SENSORS_PCF8574 is not set |
722 | # CONFIG_PCF8575 is not set | 722 | # CONFIG_PCF8575 is not set |
723 | # CONFIG_SENSORS_PCA9539 is not set | 723 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -742,7 +742,7 @@ CONFIG_SPI_ATMEL=y | |||
742 | # | 742 | # |
743 | # SPI Protocol Masters | 743 | # SPI Protocol Masters |
744 | # | 744 | # |
745 | # CONFIG_SPI_AT25 is not set | 745 | # CONFIG_EEPROM_AT25 is not set |
746 | CONFIG_SPI_SPIDEV=m | 746 | CONFIG_SPI_SPIDEV=m |
747 | # CONFIG_SPI_TLE62X0 is not set | 747 | # CONFIG_SPI_TLE62X0 is not set |
748 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 748 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/avr32/configs/mimc200_defconfig b/arch/avr32/configs/mimc200_defconfig index 981e4f8b8aeb..1a58ffbc752d 100644 --- a/arch/avr32/configs/mimc200_defconfig +++ b/arch/avr32/configs/mimc200_defconfig | |||
@@ -565,8 +565,8 @@ CONFIG_I2C_GPIO=y | |||
565 | # Miscellaneous I2C Chip support | 565 | # Miscellaneous I2C Chip support |
566 | # | 566 | # |
567 | # CONFIG_DS1682 is not set | 567 | # CONFIG_DS1682 is not set |
568 | CONFIG_AT24=y | 568 | CONFIG_EEPROM_AT24=y |
569 | # CONFIG_SENSORS_EEPROM is not set | 569 | # CONFIG_EEPROM_LEGACY is not set |
570 | # CONFIG_SENSORS_PCF8574 is not set | 570 | # CONFIG_SENSORS_PCF8574 is not set |
571 | # CONFIG_PCF8575 is not set | 571 | # CONFIG_PCF8575 is not set |
572 | # CONFIG_SENSORS_PCA9539 is not set | 572 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -592,7 +592,7 @@ CONFIG_SPI_ATMEL=y | |||
592 | # | 592 | # |
593 | # SPI Protocol Masters | 593 | # SPI Protocol Masters |
594 | # | 594 | # |
595 | CONFIG_SPI_AT25=y | 595 | CONFIG_EEPROM_AT25=y |
596 | # CONFIG_SPI_SPIDEV is not set | 596 | # CONFIG_SPI_SPIDEV is not set |
597 | # CONFIG_SPI_TLE62X0 is not set | 597 | # CONFIG_SPI_TLE62X0 is not set |
598 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 598 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/blackfin/configs/BF518F-EZBRD_defconfig b/arch/blackfin/configs/BF518F-EZBRD_defconfig index e0b3f242b555..defb9785c65b 100644 --- a/arch/blackfin/configs/BF518F-EZBRD_defconfig +++ b/arch/blackfin/configs/BF518F-EZBRD_defconfig | |||
@@ -746,9 +746,9 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
746 | # Miscellaneous I2C Chip support | 746 | # Miscellaneous I2C Chip support |
747 | # | 747 | # |
748 | # CONFIG_DS1682 is not set | 748 | # CONFIG_DS1682 is not set |
749 | # CONFIG_AT24 is not set | 749 | # CONFIG_EEPROM_AT24 is not set |
750 | # CONFIG_SENSORS_AD5252 is not set | 750 | # CONFIG_SENSORS_AD5252 is not set |
751 | # CONFIG_SENSORS_EEPROM is not set | 751 | # CONFIG_EEPROM_LEGACY is not set |
752 | # CONFIG_SENSORS_PCF8574 is not set | 752 | # CONFIG_SENSORS_PCF8574 is not set |
753 | # CONFIG_PCF8575 is not set | 753 | # CONFIG_PCF8575 is not set |
754 | # CONFIG_SENSORS_PCA9539 is not set | 754 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/blackfin/configs/BF526-EZBRD_defconfig b/arch/blackfin/configs/BF526-EZBRD_defconfig index 69f66c35b2a5..992424ff3153 100644 --- a/arch/blackfin/configs/BF526-EZBRD_defconfig +++ b/arch/blackfin/configs/BF526-EZBRD_defconfig | |||
@@ -793,9 +793,9 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
793 | # Miscellaneous I2C Chip support | 793 | # Miscellaneous I2C Chip support |
794 | # | 794 | # |
795 | # CONFIG_DS1682 is not set | 795 | # CONFIG_DS1682 is not set |
796 | # CONFIG_AT24 is not set | 796 | # CONFIG_EEPROM_AT24 is not set |
797 | # CONFIG_SENSORS_AD5252 is not set | 797 | # CONFIG_SENSORS_AD5252 is not set |
798 | # CONFIG_SENSORS_EEPROM is not set | 798 | # CONFIG_EEPROM_LEGACY is not set |
799 | # CONFIG_SENSORS_PCF8574 is not set | 799 | # CONFIG_SENSORS_PCF8574 is not set |
800 | # CONFIG_PCF8575 is not set | 800 | # CONFIG_PCF8575 is not set |
801 | # CONFIG_SENSORS_PCA9539 is not set | 801 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -820,7 +820,7 @@ CONFIG_SPI_BFIN=y | |||
820 | # | 820 | # |
821 | # SPI Protocol Masters | 821 | # SPI Protocol Masters |
822 | # | 822 | # |
823 | # CONFIG_SPI_AT25 is not set | 823 | # CONFIG_EEPROM_AT25 is not set |
824 | # CONFIG_SPI_SPIDEV is not set | 824 | # CONFIG_SPI_SPIDEV is not set |
825 | # CONFIG_SPI_TLE62X0 is not set | 825 | # CONFIG_SPI_TLE62X0 is not set |
826 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 826 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig index f92668af00b0..21e3c1af55ba 100644 --- a/arch/blackfin/configs/BF527-EZKIT_defconfig +++ b/arch/blackfin/configs/BF527-EZKIT_defconfig | |||
@@ -837,9 +837,9 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
837 | # Miscellaneous I2C Chip support | 837 | # Miscellaneous I2C Chip support |
838 | # | 838 | # |
839 | # CONFIG_DS1682 is not set | 839 | # CONFIG_DS1682 is not set |
840 | # CONFIG_AT24 is not set | 840 | # CONFIG_EEPROM_AT24 is not set |
841 | # CONFIG_SENSORS_AD5252 is not set | 841 | # CONFIG_SENSORS_AD5252 is not set |
842 | # CONFIG_SENSORS_EEPROM is not set | 842 | # CONFIG_EEPROM_LEGACY is not set |
843 | # CONFIG_SENSORS_PCF8574 is not set | 843 | # CONFIG_SENSORS_PCF8574 is not set |
844 | # CONFIG_PCF8575 is not set | 844 | # CONFIG_PCF8575 is not set |
845 | # CONFIG_SENSORS_PCA9539 is not set | 845 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -864,7 +864,7 @@ CONFIG_SPI_BFIN=y | |||
864 | # | 864 | # |
865 | # SPI Protocol Masters | 865 | # SPI Protocol Masters |
866 | # | 866 | # |
867 | # CONFIG_SPI_AT25 is not set | 867 | # CONFIG_EEPROM_AT25 is not set |
868 | # CONFIG_SPI_SPIDEV is not set | 868 | # CONFIG_SPI_SPIDEV is not set |
869 | # CONFIG_SPI_TLE62X0 is not set | 869 | # CONFIG_SPI_TLE62X0 is not set |
870 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 870 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/blackfin/configs/BF533-EZKIT_defconfig b/arch/blackfin/configs/BF533-EZKIT_defconfig index 92afd988449b..0bdf20a1af61 100644 --- a/arch/blackfin/configs/BF533-EZKIT_defconfig +++ b/arch/blackfin/configs/BF533-EZKIT_defconfig | |||
@@ -719,7 +719,7 @@ CONFIG_SPI_BFIN=y | |||
719 | # | 719 | # |
720 | # SPI Protocol Masters | 720 | # SPI Protocol Masters |
721 | # | 721 | # |
722 | # CONFIG_SPI_AT25 is not set | 722 | # CONFIG_EEPROM_AT25 is not set |
723 | # CONFIG_SPI_SPIDEV is not set | 723 | # CONFIG_SPI_SPIDEV is not set |
724 | # CONFIG_SPI_TLE62X0 is not set | 724 | # CONFIG_SPI_TLE62X0 is not set |
725 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 725 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/blackfin/configs/BF533-STAMP_defconfig b/arch/blackfin/configs/BF533-STAMP_defconfig index 49eabb41e9e5..2f747d6e97e2 100644 --- a/arch/blackfin/configs/BF533-STAMP_defconfig +++ b/arch/blackfin/configs/BF533-STAMP_defconfig | |||
@@ -743,9 +743,9 @@ CONFIG_I2C_HELPER_AUTO=y | |||
743 | # Miscellaneous I2C Chip support | 743 | # Miscellaneous I2C Chip support |
744 | # | 744 | # |
745 | # CONFIG_DS1682 is not set | 745 | # CONFIG_DS1682 is not set |
746 | # CONFIG_AT24 is not set | 746 | # CONFIG_EEPROM_AT24 is not set |
747 | # CONFIG_SENSORS_AD5252 is not set | 747 | # CONFIG_SENSORS_AD5252 is not set |
748 | # CONFIG_SENSORS_EEPROM is not set | 748 | # CONFIG_EEPROM_LEGACY is not set |
749 | # CONFIG_SENSORS_PCF8574 is not set | 749 | # CONFIG_SENSORS_PCF8574 is not set |
750 | # CONFIG_PCF8575 is not set | 750 | # CONFIG_PCF8575 is not set |
751 | # CONFIG_SENSORS_PCA9539 is not set | 751 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -770,7 +770,7 @@ CONFIG_SPI_BFIN=y | |||
770 | # | 770 | # |
771 | # SPI Protocol Masters | 771 | # SPI Protocol Masters |
772 | # | 772 | # |
773 | # CONFIG_SPI_AT25 is not set | 773 | # CONFIG_EEPROM_AT25 is not set |
774 | # CONFIG_SPI_SPIDEV is not set | 774 | # CONFIG_SPI_SPIDEV is not set |
775 | # CONFIG_SPI_TLE62X0 is not set | 775 | # CONFIG_SPI_TLE62X0 is not set |
776 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 776 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/blackfin/configs/BF537-STAMP_defconfig b/arch/blackfin/configs/BF537-STAMP_defconfig index 332142f7f9b4..8b0a81294e65 100644 --- a/arch/blackfin/configs/BF537-STAMP_defconfig +++ b/arch/blackfin/configs/BF537-STAMP_defconfig | |||
@@ -794,9 +794,9 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
794 | # Miscellaneous I2C Chip support | 794 | # Miscellaneous I2C Chip support |
795 | # | 795 | # |
796 | # CONFIG_DS1682 is not set | 796 | # CONFIG_DS1682 is not set |
797 | # CONFIG_AT24 is not set | 797 | # CONFIG_EEPROM_AT24 is not set |
798 | CONFIG_SENSORS_AD5252=m | 798 | CONFIG_SENSORS_AD5252=m |
799 | # CONFIG_SENSORS_EEPROM is not set | 799 | # CONFIG_EEPROM_LEGACY is not set |
800 | # CONFIG_SENSORS_PCF8574 is not set | 800 | # CONFIG_SENSORS_PCF8574 is not set |
801 | # CONFIG_PCF8575 is not set | 801 | # CONFIG_PCF8575 is not set |
802 | # CONFIG_SENSORS_PCA9539 is not set | 802 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -821,7 +821,7 @@ CONFIG_SPI_BFIN=y | |||
821 | # | 821 | # |
822 | # SPI Protocol Masters | 822 | # SPI Protocol Masters |
823 | # | 823 | # |
824 | # CONFIG_SPI_AT25 is not set | 824 | # CONFIG_EEPROM_AT25 is not set |
825 | # CONFIG_SPI_SPIDEV is not set | 825 | # CONFIG_SPI_SPIDEV is not set |
826 | # CONFIG_SPI_TLE62X0 is not set | 826 | # CONFIG_SPI_TLE62X0 is not set |
827 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 827 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/blackfin/configs/BF538-EZKIT_defconfig b/arch/blackfin/configs/BF538-EZKIT_defconfig index ed15934c67c2..a1f766bf7d9b 100644 --- a/arch/blackfin/configs/BF538-EZKIT_defconfig +++ b/arch/blackfin/configs/BF538-EZKIT_defconfig | |||
@@ -796,9 +796,9 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
796 | # Miscellaneous I2C Chip support | 796 | # Miscellaneous I2C Chip support |
797 | # | 797 | # |
798 | # CONFIG_DS1682 is not set | 798 | # CONFIG_DS1682 is not set |
799 | # CONFIG_AT24 is not set | 799 | # CONFIG_EEPROM_AT24 is not set |
800 | # CONFIG_SENSORS_AD5252 is not set | 800 | # CONFIG_SENSORS_AD5252 is not set |
801 | # CONFIG_SENSORS_EEPROM is not set | 801 | # CONFIG_EEPROM_LEGACY is not set |
802 | # CONFIG_SENSORS_PCF8574 is not set | 802 | # CONFIG_SENSORS_PCF8574 is not set |
803 | # CONFIG_PCF8575 is not set | 803 | # CONFIG_PCF8575 is not set |
804 | # CONFIG_SENSORS_PCA9539 is not set | 804 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -823,7 +823,7 @@ CONFIG_SPI_BFIN=y | |||
823 | # | 823 | # |
824 | # SPI Protocol Masters | 824 | # SPI Protocol Masters |
825 | # | 825 | # |
826 | # CONFIG_SPI_AT25 is not set | 826 | # CONFIG_EEPROM_AT25 is not set |
827 | # CONFIG_SPI_SPIDEV is not set | 827 | # CONFIG_SPI_SPIDEV is not set |
828 | # CONFIG_SPI_TLE62X0 is not set | 828 | # CONFIG_SPI_TLE62X0 is not set |
829 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 829 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig index d4ed9ce1f62f..cd2da6b7692c 100644 --- a/arch/blackfin/configs/BF548-EZKIT_defconfig +++ b/arch/blackfin/configs/BF548-EZKIT_defconfig | |||
@@ -928,9 +928,9 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
928 | # Miscellaneous I2C Chip support | 928 | # Miscellaneous I2C Chip support |
929 | # | 929 | # |
930 | # CONFIG_DS1682 is not set | 930 | # CONFIG_DS1682 is not set |
931 | # CONFIG_AT24 is not set | 931 | # CONFIG_EEPROM_AT24 is not set |
932 | # CONFIG_SENSORS_AD5252 is not set | 932 | # CONFIG_SENSORS_AD5252 is not set |
933 | # CONFIG_SENSORS_EEPROM is not set | 933 | # CONFIG_EEPROM_LEGACY is not set |
934 | # CONFIG_SENSORS_PCF8574 is not set | 934 | # CONFIG_SENSORS_PCF8574 is not set |
935 | # CONFIG_PCF8575 is not set | 935 | # CONFIG_PCF8575 is not set |
936 | # CONFIG_SENSORS_PCA9539 is not set | 936 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -955,7 +955,7 @@ CONFIG_SPI_BFIN=y | |||
955 | # | 955 | # |
956 | # SPI Protocol Masters | 956 | # SPI Protocol Masters |
957 | # | 957 | # |
958 | # CONFIG_SPI_AT25 is not set | 958 | # CONFIG_EEPROM_AT25 is not set |
959 | # CONFIG_SPI_SPIDEV is not set | 959 | # CONFIG_SPI_SPIDEV is not set |
960 | # CONFIG_SPI_TLE62X0 is not set | 960 | # CONFIG_SPI_TLE62X0 is not set |
961 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 961 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/blackfin/configs/BF561-EZKIT_defconfig b/arch/blackfin/configs/BF561-EZKIT_defconfig index 1ecb7a38c905..b398ca202dbd 100644 --- a/arch/blackfin/configs/BF561-EZKIT_defconfig +++ b/arch/blackfin/configs/BF561-EZKIT_defconfig | |||
@@ -756,7 +756,7 @@ CONFIG_SPI_BFIN=y | |||
756 | # | 756 | # |
757 | # SPI Protocol Masters | 757 | # SPI Protocol Masters |
758 | # | 758 | # |
759 | # CONFIG_SPI_AT25 is not set | 759 | # CONFIG_EEPROM_AT25 is not set |
760 | # CONFIG_SPI_SPIDEV is not set | 760 | # CONFIG_SPI_SPIDEV is not set |
761 | # CONFIG_SPI_TLE62X0 is not set | 761 | # CONFIG_SPI_TLE62X0 is not set |
762 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 762 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/blackfin/configs/BlackStamp_defconfig b/arch/blackfin/configs/BlackStamp_defconfig index 9683b2e13097..3a20e281d23c 100644 --- a/arch/blackfin/configs/BlackStamp_defconfig +++ b/arch/blackfin/configs/BlackStamp_defconfig | |||
@@ -691,7 +691,7 @@ CONFIG_I2C_GPIO=m | |||
691 | # | 691 | # |
692 | # CONFIG_DS1682 is not set | 692 | # CONFIG_DS1682 is not set |
693 | # CONFIG_SENSORS_AD5252 is not set | 693 | # CONFIG_SENSORS_AD5252 is not set |
694 | # CONFIG_SENSORS_EEPROM is not set | 694 | # CONFIG_EEPROM_LEGACY is not set |
695 | # CONFIG_SENSORS_PCF8574 is not set | 695 | # CONFIG_SENSORS_PCF8574 is not set |
696 | # CONFIG_PCF8575 is not set | 696 | # CONFIG_PCF8575 is not set |
697 | # CONFIG_SENSORS_PCF8591 is not set | 697 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -713,7 +713,7 @@ CONFIG_SPI_BFIN=y | |||
713 | # | 713 | # |
714 | # SPI Protocol Masters | 714 | # SPI Protocol Masters |
715 | # | 715 | # |
716 | CONFIG_SPI_AT25=y | 716 | CONFIG_EEPROM_AT25=y |
717 | CONFIG_SPI_SPIDEV=m | 717 | CONFIG_SPI_SPIDEV=m |
718 | # CONFIG_SPI_TLE62X0 is not set | 718 | # CONFIG_SPI_TLE62X0 is not set |
719 | # CONFIG_W1 is not set | 719 | # CONFIG_W1 is not set |
diff --git a/arch/blackfin/configs/CM-BF527_defconfig b/arch/blackfin/configs/CM-BF527_defconfig index a041e7eba770..95146948166f 100644 --- a/arch/blackfin/configs/CM-BF527_defconfig +++ b/arch/blackfin/configs/CM-BF527_defconfig | |||
@@ -715,7 +715,7 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
715 | # CONFIG_SENSORS_DS1374 is not set | 715 | # CONFIG_SENSORS_DS1374 is not set |
716 | # CONFIG_DS1682 is not set | 716 | # CONFIG_DS1682 is not set |
717 | # CONFIG_SENSORS_AD5252 is not set | 717 | # CONFIG_SENSORS_AD5252 is not set |
718 | # CONFIG_SENSORS_EEPROM is not set | 718 | # CONFIG_EEPROM_LEGACY is not set |
719 | # CONFIG_SENSORS_PCF8574 is not set | 719 | # CONFIG_SENSORS_PCF8574 is not set |
720 | # CONFIG_SENSORS_PCF8575 is not set | 720 | # CONFIG_SENSORS_PCF8575 is not set |
721 | # CONFIG_SENSORS_PCA9539 is not set | 721 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -742,7 +742,7 @@ CONFIG_SPI_BFIN=y | |||
742 | # | 742 | # |
743 | # SPI Protocol Masters | 743 | # SPI Protocol Masters |
744 | # | 744 | # |
745 | # CONFIG_SPI_AT25 is not set | 745 | # CONFIG_EEPROM_AT25 is not set |
746 | # CONFIG_SPI_SPIDEV is not set | 746 | # CONFIG_SPI_SPIDEV is not set |
747 | # CONFIG_SPI_TLE62X0 is not set | 747 | # CONFIG_SPI_TLE62X0 is not set |
748 | # CONFIG_W1 is not set | 748 | # CONFIG_W1 is not set |
diff --git a/arch/blackfin/configs/CM-BF548_defconfig b/arch/blackfin/configs/CM-BF548_defconfig index efd68bc78f35..efe9741b1f14 100644 --- a/arch/blackfin/configs/CM-BF548_defconfig +++ b/arch/blackfin/configs/CM-BF548_defconfig | |||
@@ -798,7 +798,7 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
798 | # CONFIG_SENSORS_DS1374 is not set | 798 | # CONFIG_SENSORS_DS1374 is not set |
799 | # CONFIG_DS1682 is not set | 799 | # CONFIG_DS1682 is not set |
800 | # CONFIG_SENSORS_AD5252 is not set | 800 | # CONFIG_SENSORS_AD5252 is not set |
801 | # CONFIG_SENSORS_EEPROM is not set | 801 | # CONFIG_EEPROM_LEGACY is not set |
802 | # CONFIG_SENSORS_PCF8574 is not set | 802 | # CONFIG_SENSORS_PCF8574 is not set |
803 | # CONFIG_SENSORS_PCF8575 is not set | 803 | # CONFIG_SENSORS_PCF8575 is not set |
804 | # CONFIG_SENSORS_PCA9543 is not set | 804 | # CONFIG_SENSORS_PCA9543 is not set |
@@ -826,7 +826,7 @@ CONFIG_SPI_BFIN=y | |||
826 | # | 826 | # |
827 | # SPI Protocol Masters | 827 | # SPI Protocol Masters |
828 | # | 828 | # |
829 | # CONFIG_SPI_AT25 is not set | 829 | # CONFIG_EEPROM_AT25 is not set |
830 | # CONFIG_SPI_SPIDEV is not set | 830 | # CONFIG_SPI_SPIDEV is not set |
831 | # CONFIG_SPI_TLE62X0 is not set | 831 | # CONFIG_SPI_TLE62X0 is not set |
832 | # CONFIG_W1 is not set | 832 | # CONFIG_W1 is not set |
diff --git a/arch/blackfin/configs/H8606_defconfig b/arch/blackfin/configs/H8606_defconfig index 5d3901d23fd1..bd553da15db8 100644 --- a/arch/blackfin/configs/H8606_defconfig +++ b/arch/blackfin/configs/H8606_defconfig | |||
@@ -750,7 +750,7 @@ CONFIG_SPI_BFIN=y | |||
750 | # | 750 | # |
751 | # SPI Protocol Masters | 751 | # SPI Protocol Masters |
752 | # | 752 | # |
753 | CONFIG_SPI_AT25=y | 753 | CONFIG_EEPROM_AT25=y |
754 | CONFIG_SPI_SPIDEV=y | 754 | CONFIG_SPI_SPIDEV=y |
755 | 755 | ||
756 | # | 756 | # |
diff --git a/arch/blackfin/configs/IP0X_defconfig b/arch/blackfin/configs/IP0X_defconfig index e66f5daaa828..eae83b5de92f 100644 --- a/arch/blackfin/configs/IP0X_defconfig +++ b/arch/blackfin/configs/IP0X_defconfig | |||
@@ -803,7 +803,7 @@ CONFIG_SPI_BFIN=y | |||
803 | # | 803 | # |
804 | # SPI Protocol Masters | 804 | # SPI Protocol Masters |
805 | # | 805 | # |
806 | # CONFIG_SPI_AT25 is not set | 806 | # CONFIG_EEPROM_AT25 is not set |
807 | # CONFIG_SPI_SPIDEV is not set | 807 | # CONFIG_SPI_SPIDEV is not set |
808 | 808 | ||
809 | # | 809 | # |
diff --git a/arch/blackfin/configs/PNAV-10_defconfig b/arch/blackfin/configs/PNAV-10_defconfig index ce5dde9de9db..ad096702ac16 100644 --- a/arch/blackfin/configs/PNAV-10_defconfig +++ b/arch/blackfin/configs/PNAV-10_defconfig | |||
@@ -755,9 +755,9 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
755 | # Miscellaneous I2C Chip support | 755 | # Miscellaneous I2C Chip support |
756 | # | 756 | # |
757 | # CONFIG_DS1682 is not set | 757 | # CONFIG_DS1682 is not set |
758 | # CONFIG_AT24 is not set | 758 | # CONFIG_EEPROM_AT24 is not set |
759 | # CONFIG_SENSORS_AD5252 is not set | 759 | # CONFIG_SENSORS_AD5252 is not set |
760 | # CONFIG_SENSORS_EEPROM is not set | 760 | # CONFIG_EEPROM_LEGACY is not set |
761 | CONFIG_SENSORS_PCF8574=m | 761 | CONFIG_SENSORS_PCF8574=m |
762 | # CONFIG_PCF8575 is not set | 762 | # CONFIG_PCF8575 is not set |
763 | # CONFIG_SENSORS_PCA9539 is not set | 763 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -781,7 +781,7 @@ CONFIG_SPI_BFIN=y | |||
781 | # | 781 | # |
782 | # SPI Protocol Masters | 782 | # SPI Protocol Masters |
783 | # | 783 | # |
784 | # CONFIG_SPI_AT25 is not set | 784 | # CONFIG_EEPROM_AT25 is not set |
785 | # CONFIG_SPI_SPIDEV is not set | 785 | # CONFIG_SPI_SPIDEV is not set |
786 | # CONFIG_SPI_TLE62X0 is not set | 786 | # CONFIG_SPI_TLE62X0 is not set |
787 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 787 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/blackfin/configs/SRV1_defconfig b/arch/blackfin/configs/SRV1_defconfig index 7c8250d6fa66..fa580affc9d6 100644 --- a/arch/blackfin/configs/SRV1_defconfig +++ b/arch/blackfin/configs/SRV1_defconfig | |||
@@ -798,7 +798,7 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | |||
798 | # CONFIG_SENSORS_DS1337 is not set | 798 | # CONFIG_SENSORS_DS1337 is not set |
799 | # CONFIG_SENSORS_DS1374 is not set | 799 | # CONFIG_SENSORS_DS1374 is not set |
800 | # CONFIG_SENSORS_AD5252 is not set | 800 | # CONFIG_SENSORS_AD5252 is not set |
801 | # CONFIG_SENSORS_EEPROM is not set | 801 | # CONFIG_EEPROM_LEGACY is not set |
802 | # CONFIG_SENSORS_PCF8574 is not set | 802 | # CONFIG_SENSORS_PCF8574 is not set |
803 | # CONFIG_SENSORS_PCF8575 is not set | 803 | # CONFIG_SENSORS_PCF8575 is not set |
804 | # CONFIG_SENSORS_PCA9543 is not set | 804 | # CONFIG_SENSORS_PCA9543 is not set |
@@ -826,7 +826,7 @@ CONFIG_SPI_BFIN=y | |||
826 | # | 826 | # |
827 | # SPI Protocol Masters | 827 | # SPI Protocol Masters |
828 | # | 828 | # |
829 | CONFIG_SPI_AT25=m | 829 | CONFIG_EEPROM_AT25=m |
830 | # CONFIG_SPI_SPIDEV is not set | 830 | # CONFIG_SPI_SPIDEV is not set |
831 | 831 | ||
832 | # | 832 | # |
diff --git a/arch/blackfin/configs/TCM-BF537_defconfig b/arch/blackfin/configs/TCM-BF537_defconfig index 9af522c7dadf..97a1f1d20dcf 100644 --- a/arch/blackfin/configs/TCM-BF537_defconfig +++ b/arch/blackfin/configs/TCM-BF537_defconfig | |||
@@ -533,7 +533,7 @@ CONFIG_SPI_BFIN=y | |||
533 | # | 533 | # |
534 | # SPI Protocol Masters | 534 | # SPI Protocol Masters |
535 | # | 535 | # |
536 | # CONFIG_SPI_AT25 is not set | 536 | # CONFIG_EEPROM_AT25 is not set |
537 | # CONFIG_SPI_SPIDEV is not set | 537 | # CONFIG_SPI_SPIDEV is not set |
538 | # CONFIG_SPI_TLE62X0 is not set | 538 | # CONFIG_SPI_TLE62X0 is not set |
539 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 539 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 3d31636cbafb..6183aeccecf1 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -17,6 +17,7 @@ config IA64 | |||
17 | select ACPI if (!IA64_HP_SIM) | 17 | select ACPI if (!IA64_HP_SIM) |
18 | select PM if (!IA64_HP_SIM) | 18 | select PM if (!IA64_HP_SIM) |
19 | select ARCH_SUPPORTS_MSI | 19 | select ARCH_SUPPORTS_MSI |
20 | select HAVE_UNSTABLE_SCHED_CLOCK | ||
20 | select HAVE_IDE | 21 | select HAVE_IDE |
21 | select HAVE_OPROFILE | 22 | select HAVE_OPROFILE |
22 | select HAVE_KPROBES | 23 | select HAVE_KPROBES |
diff --git a/arch/ia64/configs/bigsur_defconfig b/arch/ia64/configs/bigsur_defconfig index 6dd8655664f3..ace41096b47b 100644 --- a/arch/ia64/configs/bigsur_defconfig +++ b/arch/ia64/configs/bigsur_defconfig | |||
@@ -752,7 +752,7 @@ CONFIG_I2C_ALGOBIT=y | |||
752 | # | 752 | # |
753 | # CONFIG_SENSORS_DS1337 is not set | 753 | # CONFIG_SENSORS_DS1337 is not set |
754 | # CONFIG_SENSORS_DS1374 is not set | 754 | # CONFIG_SENSORS_DS1374 is not set |
755 | # CONFIG_SENSORS_EEPROM is not set | 755 | # CONFIG_EEPROM_LEGACY is not set |
756 | # CONFIG_SENSORS_PCF8574 is not set | 756 | # CONFIG_SENSORS_PCF8574 is not set |
757 | # CONFIG_SENSORS_PCA9539 is not set | 757 | # CONFIG_SENSORS_PCA9539 is not set |
758 | # CONFIG_SENSORS_PCF8591 is not set | 758 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/ia64/configs/generic_defconfig b/arch/ia64/configs/generic_defconfig index 27eb67604c53..a109db30ce55 100644 --- a/arch/ia64/configs/generic_defconfig +++ b/arch/ia64/configs/generic_defconfig | |||
@@ -578,7 +578,7 @@ CONFIG_ATA_PIIX=y | |||
578 | # CONFIG_SATA_SIS is not set | 578 | # CONFIG_SATA_SIS is not set |
579 | # CONFIG_SATA_ULI is not set | 579 | # CONFIG_SATA_ULI is not set |
580 | # CONFIG_SATA_VIA is not set | 580 | # CONFIG_SATA_VIA is not set |
581 | # CONFIG_SATA_VITESSE is not set | 581 | CONFIG_SATA_VITESSE=y |
582 | # CONFIG_SATA_INIC162X is not set | 582 | # CONFIG_SATA_INIC162X is not set |
583 | # CONFIG_PATA_ACPI is not set | 583 | # CONFIG_PATA_ACPI is not set |
584 | # CONFIG_PATA_ALI is not set | 584 | # CONFIG_PATA_ALI is not set |
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig index 0a06b1333c95..514f0635dafe 100644 --- a/arch/ia64/configs/zx1_defconfig +++ b/arch/ia64/configs/zx1_defconfig | |||
@@ -841,7 +841,7 @@ CONFIG_I2C_ALGOPCF=y | |||
841 | # | 841 | # |
842 | # CONFIG_SENSORS_DS1337 is not set | 842 | # CONFIG_SENSORS_DS1337 is not set |
843 | # CONFIG_SENSORS_DS1374 is not set | 843 | # CONFIG_SENSORS_DS1374 is not set |
844 | # CONFIG_SENSORS_EEPROM is not set | 844 | # CONFIG_EEPROM_LEGACY is not set |
845 | # CONFIG_SENSORS_PCF8574 is not set | 845 | # CONFIG_SENSORS_PCF8574 is not set |
846 | # CONFIG_SENSORS_PCA9539 is not set | 846 | # CONFIG_SENSORS_PCA9539 is not set |
847 | # CONFIG_SENSORS_PCF8591 is not set | 847 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/ia64/include/asm/dma-mapping.h b/arch/ia64/include/asm/dma-mapping.h index bbab7e2b0fc9..1f912d927585 100644 --- a/arch/ia64/include/asm/dma-mapping.h +++ b/arch/ia64/include/asm/dma-mapping.h | |||
@@ -9,6 +9,8 @@ | |||
9 | #include <linux/scatterlist.h> | 9 | #include <linux/scatterlist.h> |
10 | #include <asm/swiotlb.h> | 10 | #include <asm/swiotlb.h> |
11 | 11 | ||
12 | #define ARCH_HAS_DMA_GET_REQUIRED_MASK | ||
13 | |||
12 | struct dma_mapping_ops { | 14 | struct dma_mapping_ops { |
13 | int (*mapping_error)(struct device *dev, | 15 | int (*mapping_error)(struct device *dev, |
14 | dma_addr_t dma_addr); | 16 | dma_addr_t dma_addr); |
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h index 59c17e446683..fe87b2121707 100644 --- a/arch/ia64/include/asm/machvec.h +++ b/arch/ia64/include/asm/machvec.h | |||
@@ -62,6 +62,7 @@ typedef dma_addr_t ia64_mv_dma_map_single_attrs (struct device *, void *, size_t | |||
62 | typedef void ia64_mv_dma_unmap_single_attrs (struct device *, dma_addr_t, size_t, int, struct dma_attrs *); | 62 | typedef void ia64_mv_dma_unmap_single_attrs (struct device *, dma_addr_t, size_t, int, struct dma_attrs *); |
63 | typedef int ia64_mv_dma_map_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *); | 63 | typedef int ia64_mv_dma_map_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *); |
64 | typedef void ia64_mv_dma_unmap_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *); | 64 | typedef void ia64_mv_dma_unmap_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *); |
65 | typedef u64 ia64_mv_dma_get_required_mask (struct device *); | ||
65 | 66 | ||
66 | /* | 67 | /* |
67 | * WARNING: The legacy I/O space is _architected_. Platforms are | 68 | * WARNING: The legacy I/O space is _architected_. Platforms are |
@@ -159,6 +160,7 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *); | |||
159 | # define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device | 160 | # define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device |
160 | # define platform_dma_mapping_error ia64_mv.dma_mapping_error | 161 | # define platform_dma_mapping_error ia64_mv.dma_mapping_error |
161 | # define platform_dma_supported ia64_mv.dma_supported | 162 | # define platform_dma_supported ia64_mv.dma_supported |
163 | # define platform_dma_get_required_mask ia64_mv.dma_get_required_mask | ||
162 | # define platform_irq_to_vector ia64_mv.irq_to_vector | 164 | # define platform_irq_to_vector ia64_mv.irq_to_vector |
163 | # define platform_local_vector_to_irq ia64_mv.local_vector_to_irq | 165 | # define platform_local_vector_to_irq ia64_mv.local_vector_to_irq |
164 | # define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem | 166 | # define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem |
@@ -213,6 +215,7 @@ struct ia64_machine_vector { | |||
213 | ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device; | 215 | ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device; |
214 | ia64_mv_dma_mapping_error *dma_mapping_error; | 216 | ia64_mv_dma_mapping_error *dma_mapping_error; |
215 | ia64_mv_dma_supported *dma_supported; | 217 | ia64_mv_dma_supported *dma_supported; |
218 | ia64_mv_dma_get_required_mask *dma_get_required_mask; | ||
216 | ia64_mv_irq_to_vector *irq_to_vector; | 219 | ia64_mv_irq_to_vector *irq_to_vector; |
217 | ia64_mv_local_vector_to_irq *local_vector_to_irq; | 220 | ia64_mv_local_vector_to_irq *local_vector_to_irq; |
218 | ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem; | 221 | ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem; |
@@ -263,6 +266,7 @@ struct ia64_machine_vector { | |||
263 | platform_dma_sync_sg_for_device, \ | 266 | platform_dma_sync_sg_for_device, \ |
264 | platform_dma_mapping_error, \ | 267 | platform_dma_mapping_error, \ |
265 | platform_dma_supported, \ | 268 | platform_dma_supported, \ |
269 | platform_dma_get_required_mask, \ | ||
266 | platform_irq_to_vector, \ | 270 | platform_irq_to_vector, \ |
267 | platform_local_vector_to_irq, \ | 271 | platform_local_vector_to_irq, \ |
268 | platform_pci_get_legacy_mem, \ | 272 | platform_pci_get_legacy_mem, \ |
@@ -366,6 +370,9 @@ extern void machvec_init_from_cmdline(const char *cmdline); | |||
366 | #ifndef platform_dma_supported | 370 | #ifndef platform_dma_supported |
367 | # define platform_dma_supported swiotlb_dma_supported | 371 | # define platform_dma_supported swiotlb_dma_supported |
368 | #endif | 372 | #endif |
373 | #ifndef platform_dma_get_required_mask | ||
374 | # define platform_dma_get_required_mask ia64_dma_get_required_mask | ||
375 | #endif | ||
369 | #ifndef platform_irq_to_vector | 376 | #ifndef platform_irq_to_vector |
370 | # define platform_irq_to_vector __ia64_irq_to_vector | 377 | # define platform_irq_to_vector __ia64_irq_to_vector |
371 | #endif | 378 | #endif |
diff --git a/arch/ia64/include/asm/machvec_init.h b/arch/ia64/include/asm/machvec_init.h index ef964b286842..37a469849ab9 100644 --- a/arch/ia64/include/asm/machvec_init.h +++ b/arch/ia64/include/asm/machvec_init.h | |||
@@ -3,6 +3,7 @@ | |||
3 | 3 | ||
4 | extern ia64_mv_send_ipi_t ia64_send_ipi; | 4 | extern ia64_mv_send_ipi_t ia64_send_ipi; |
5 | extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge; | 5 | extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge; |
6 | extern ia64_mv_dma_get_required_mask ia64_dma_get_required_mask; | ||
6 | extern ia64_mv_irq_to_vector __ia64_irq_to_vector; | 7 | extern ia64_mv_irq_to_vector __ia64_irq_to_vector; |
7 | extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq; | 8 | extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq; |
8 | extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem; | 9 | extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem; |
diff --git a/arch/ia64/include/asm/machvec_sn2.h b/arch/ia64/include/asm/machvec_sn2.h index 781308ea7b88..f1a6e0d6dfa5 100644 --- a/arch/ia64/include/asm/machvec_sn2.h +++ b/arch/ia64/include/asm/machvec_sn2.h | |||
@@ -67,6 +67,7 @@ extern ia64_mv_dma_sync_single_for_device sn_dma_sync_single_for_device; | |||
67 | extern ia64_mv_dma_sync_sg_for_device sn_dma_sync_sg_for_device; | 67 | extern ia64_mv_dma_sync_sg_for_device sn_dma_sync_sg_for_device; |
68 | extern ia64_mv_dma_mapping_error sn_dma_mapping_error; | 68 | extern ia64_mv_dma_mapping_error sn_dma_mapping_error; |
69 | extern ia64_mv_dma_supported sn_dma_supported; | 69 | extern ia64_mv_dma_supported sn_dma_supported; |
70 | extern ia64_mv_dma_get_required_mask sn_dma_get_required_mask; | ||
70 | extern ia64_mv_migrate_t sn_migrate; | 71 | extern ia64_mv_migrate_t sn_migrate; |
71 | extern ia64_mv_kernel_launch_event_t sn_kernel_launch_event; | 72 | extern ia64_mv_kernel_launch_event_t sn_kernel_launch_event; |
72 | extern ia64_mv_setup_msi_irq_t sn_setup_msi_irq; | 73 | extern ia64_mv_setup_msi_irq_t sn_setup_msi_irq; |
@@ -123,6 +124,7 @@ extern ia64_mv_pci_fixup_bus_t sn_pci_fixup_bus; | |||
123 | #define platform_dma_sync_sg_for_device sn_dma_sync_sg_for_device | 124 | #define platform_dma_sync_sg_for_device sn_dma_sync_sg_for_device |
124 | #define platform_dma_mapping_error sn_dma_mapping_error | 125 | #define platform_dma_mapping_error sn_dma_mapping_error |
125 | #define platform_dma_supported sn_dma_supported | 126 | #define platform_dma_supported sn_dma_supported |
127 | #define platform_dma_get_required_mask sn_dma_get_required_mask | ||
126 | #define platform_migrate sn_migrate | 128 | #define platform_migrate sn_migrate |
127 | #define platform_kernel_launch_event sn_kernel_launch_event | 129 | #define platform_kernel_launch_event sn_kernel_launch_event |
128 | #ifdef CONFIG_PCI_MSI | 130 | #ifdef CONFIG_PCI_MSI |
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c index f90be51b1123..9adac441ac9b 100644 --- a/arch/ia64/kernel/kprobes.c +++ b/arch/ia64/kernel/kprobes.c | |||
@@ -870,7 +870,7 @@ static int __kprobes pre_kprobes_handler(struct die_args *args) | |||
870 | return 1; | 870 | return 1; |
871 | 871 | ||
872 | ss_probe: | 872 | ss_probe: |
873 | #if !defined(CONFIG_PREEMPT) || defined(CONFIG_PM) | 873 | #if !defined(CONFIG_PREEMPT) || defined(CONFIG_FREEZER) |
874 | if (p->ainsn.inst_flag == INST_FLAG_BOOSTABLE && !p->post_handler) { | 874 | if (p->ainsn.inst_flag == INST_FLAG_BOOSTABLE && !p->post_handler) { |
875 | /* Boost up -- we can execute copied instructions directly */ | 875 | /* Boost up -- we can execute copied instructions directly */ |
876 | ia64_psr(regs)->ri = p->ainsn.slot; | 876 | ia64_psr(regs)->ri = p->ainsn.slot; |
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c index ff0e7c10faa7..6db08599ebbc 100644 --- a/arch/ia64/kernel/unaligned.c +++ b/arch/ia64/kernel/unaligned.c | |||
@@ -59,6 +59,7 @@ dump (const char *str, void *vp, size_t len) | |||
59 | * (i.e. don't allow attacker to fill up logs with unaligned accesses). | 59 | * (i.e. don't allow attacker to fill up logs with unaligned accesses). |
60 | */ | 60 | */ |
61 | int no_unaligned_warning; | 61 | int no_unaligned_warning; |
62 | int unaligned_dump_stack; | ||
62 | static int noprint_warning; | 63 | static int noprint_warning; |
63 | 64 | ||
64 | /* | 65 | /* |
@@ -1371,9 +1372,12 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs) | |||
1371 | } | 1372 | } |
1372 | } | 1373 | } |
1373 | } else { | 1374 | } else { |
1374 | if (within_logging_rate_limit()) | 1375 | if (within_logging_rate_limit()) { |
1375 | printk(KERN_WARNING "kernel unaligned access to 0x%016lx, ip=0x%016lx\n", | 1376 | printk(KERN_WARNING "kernel unaligned access to 0x%016lx, ip=0x%016lx\n", |
1376 | ifa, regs->cr_iip + ipsr->ri); | 1377 | ifa, regs->cr_iip + ipsr->ri); |
1378 | if (unaligned_dump_stack) | ||
1379 | dump_stack(); | ||
1380 | } | ||
1377 | set_fs(KERNEL_DS); | 1381 | set_fs(KERNEL_DS); |
1378 | } | 1382 | } |
1379 | 1383 | ||
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 211fcfd115f9..61f1af5c23c1 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/ioport.h> | 19 | #include <linux/ioport.h> |
20 | #include <linux/slab.h> | 20 | #include <linux/slab.h> |
21 | #include <linux/spinlock.h> | 21 | #include <linux/spinlock.h> |
22 | #include <linux/bootmem.h> | ||
22 | 23 | ||
23 | #include <asm/machvec.h> | 24 | #include <asm/machvec.h> |
24 | #include <asm/page.h> | 25 | #include <asm/page.h> |
@@ -748,6 +749,32 @@ static void __init set_pci_cacheline_size(void) | |||
748 | pci_cache_line_size = (1 << cci.pcci_line_size) / 4; | 749 | pci_cache_line_size = (1 << cci.pcci_line_size) / 4; |
749 | } | 750 | } |
750 | 751 | ||
752 | u64 ia64_dma_get_required_mask(struct device *dev) | ||
753 | { | ||
754 | u32 low_totalram = ((max_pfn - 1) << PAGE_SHIFT); | ||
755 | u32 high_totalram = ((max_pfn - 1) >> (32 - PAGE_SHIFT)); | ||
756 | u64 mask; | ||
757 | |||
758 | if (!high_totalram) { | ||
759 | /* convert to mask just covering totalram */ | ||
760 | low_totalram = (1 << (fls(low_totalram) - 1)); | ||
761 | low_totalram += low_totalram - 1; | ||
762 | mask = low_totalram; | ||
763 | } else { | ||
764 | high_totalram = (1 << (fls(high_totalram) - 1)); | ||
765 | high_totalram += high_totalram - 1; | ||
766 | mask = (((u64)high_totalram) << 32) + 0xffffffff; | ||
767 | } | ||
768 | return mask; | ||
769 | } | ||
770 | EXPORT_SYMBOL_GPL(ia64_dma_get_required_mask); | ||
771 | |||
772 | u64 dma_get_required_mask(struct device *dev) | ||
773 | { | ||
774 | return platform_dma_get_required_mask(dev); | ||
775 | } | ||
776 | EXPORT_SYMBOL_GPL(dma_get_required_mask); | ||
777 | |||
751 | static int __init pcibios_init(void) | 778 | static int __init pcibios_init(void) |
752 | { | 779 | { |
753 | set_pci_cacheline_size(); | 780 | set_pci_cacheline_size(); |
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c index 53ebb6484495..863f5017baae 100644 --- a/arch/ia64/sn/pci/pci_dma.c +++ b/arch/ia64/sn/pci/pci_dma.c | |||
@@ -356,6 +356,12 @@ int sn_dma_mapping_error(struct device *dev, dma_addr_t dma_addr) | |||
356 | } | 356 | } |
357 | EXPORT_SYMBOL(sn_dma_mapping_error); | 357 | EXPORT_SYMBOL(sn_dma_mapping_error); |
358 | 358 | ||
359 | u64 sn_dma_get_required_mask(struct device *dev) | ||
360 | { | ||
361 | return DMA_64BIT_MASK; | ||
362 | } | ||
363 | EXPORT_SYMBOL_GPL(sn_dma_get_required_mask); | ||
364 | |||
359 | char *sn_pci_get_legacy_mem(struct pci_bus *bus) | 365 | char *sn_pci_get_legacy_mem(struct pci_bus *bus) |
360 | { | 366 | { |
361 | if (!SN_PCIBUS_BUSSOFT(bus)) | 367 | if (!SN_PCIBUS_BUSSOFT(bus)) |
diff --git a/arch/ia64/xen/time.c b/arch/ia64/xen/time.c index d15a94c330fb..68d6204c3f16 100644 --- a/arch/ia64/xen/time.c +++ b/arch/ia64/xen/time.c | |||
@@ -129,8 +129,8 @@ consider_steal_time(unsigned long new_itm) | |||
129 | blocked = stolentick; | 129 | blocked = stolentick; |
130 | 130 | ||
131 | if (stolen > 0 || blocked > 0) { | 131 | if (stolen > 0 || blocked > 0) { |
132 | account_steal_time(NULL, jiffies_to_cputime(stolen)); | 132 | account_steal_ticks(stolen); |
133 | account_steal_time(idle_task(cpu), jiffies_to_cputime(blocked)); | 133 | account_idle_ticks(blocked); |
134 | run_local_timers(); | 134 | run_local_timers(); |
135 | 135 | ||
136 | if (rcu_pending(cpu)) | 136 | if (rcu_pending(cpu)) |
diff --git a/arch/m32r/configs/m32104ut_defconfig b/arch/m32r/configs/m32104ut_defconfig index 9b5af6cd2e0b..6f54b00b3838 100644 --- a/arch/m32r/configs/m32104ut_defconfig +++ b/arch/m32r/configs/m32104ut_defconfig | |||
@@ -621,7 +621,7 @@ CONFIG_I2C_ELEKTOR=m | |||
621 | # CONFIG_SENSORS_DS1337 is not set | 621 | # CONFIG_SENSORS_DS1337 is not set |
622 | # CONFIG_SENSORS_DS1374 is not set | 622 | # CONFIG_SENSORS_DS1374 is not set |
623 | # CONFIG_DS1682 is not set | 623 | # CONFIG_DS1682 is not set |
624 | # CONFIG_SENSORS_EEPROM is not set | 624 | # CONFIG_EEPROM_LEGACY is not set |
625 | # CONFIG_SENSORS_PCF8574 is not set | 625 | # CONFIG_SENSORS_PCF8574 is not set |
626 | # CONFIG_SENSORS_PCA9539 is not set | 626 | # CONFIG_SENSORS_PCA9539 is not set |
627 | # CONFIG_SENSORS_PCF8591 is not set | 627 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/include/asm-m68k/Kbuild b/arch/m68k/include/asm/Kbuild index 1a922fad76f7..1a922fad76f7 100644 --- a/include/asm-m68k/Kbuild +++ b/arch/m68k/include/asm/Kbuild | |||
diff --git a/arch/m68knommu/include/asm/MC68328.h b/arch/m68k/include/asm/MC68328.h index a337e56d09bf..a337e56d09bf 100644 --- a/arch/m68knommu/include/asm/MC68328.h +++ b/arch/m68k/include/asm/MC68328.h | |||
diff --git a/arch/m68knommu/include/asm/MC68332.h b/arch/m68k/include/asm/MC68332.h index 6bb8f02685a2..6bb8f02685a2 100644 --- a/arch/m68knommu/include/asm/MC68332.h +++ b/arch/m68k/include/asm/MC68332.h | |||
diff --git a/arch/m68knommu/include/asm/MC68EZ328.h b/arch/m68k/include/asm/MC68EZ328.h index 69b7f9139e5e..69b7f9139e5e 100644 --- a/arch/m68knommu/include/asm/MC68EZ328.h +++ b/arch/m68k/include/asm/MC68EZ328.h | |||
diff --git a/arch/m68knommu/include/asm/MC68VZ328.h b/arch/m68k/include/asm/MC68VZ328.h index 2b9bf626a0a5..2b9bf626a0a5 100644 --- a/arch/m68knommu/include/asm/MC68VZ328.h +++ b/arch/m68k/include/asm/MC68VZ328.h | |||
diff --git a/include/asm-m68k/a.out-core.h b/arch/m68k/include/asm/a.out-core.h index f6bfc1d63ff6..f6bfc1d63ff6 100644 --- a/include/asm-m68k/a.out-core.h +++ b/arch/m68k/include/asm/a.out-core.h | |||
diff --git a/include/asm-m68k/a.out.h b/arch/m68k/include/asm/a.out.h index 3885fe43432a..3885fe43432a 100644 --- a/include/asm-m68k/a.out.h +++ b/arch/m68k/include/asm/a.out.h | |||
diff --git a/include/asm-m68k/adb_iop.h b/arch/m68k/include/asm/adb_iop.h index 8a48e56f2d62..8a48e56f2d62 100644 --- a/include/asm-m68k/adb_iop.h +++ b/arch/m68k/include/asm/adb_iop.h | |||
diff --git a/include/asm-m68k/amigahw.h b/arch/m68k/include/asm/amigahw.h index 5ca5dd951a4a..5ca5dd951a4a 100644 --- a/include/asm-m68k/amigahw.h +++ b/arch/m68k/include/asm/amigahw.h | |||
diff --git a/include/asm-m68k/amigaints.h b/arch/m68k/include/asm/amigaints.h index b1bcdb835ab9..b1bcdb835ab9 100644 --- a/include/asm-m68k/amigaints.h +++ b/arch/m68k/include/asm/amigaints.h | |||
diff --git a/include/asm-m68k/amigayle.h b/arch/m68k/include/asm/amigayle.h index bb5a6aa329f3..bb5a6aa329f3 100644 --- a/include/asm-m68k/amigayle.h +++ b/arch/m68k/include/asm/amigayle.h | |||
diff --git a/include/asm-m68k/amipcmcia.h b/arch/m68k/include/asm/amipcmcia.h index 6f1ec1887d82..6f1ec1887d82 100644 --- a/include/asm-m68k/amipcmcia.h +++ b/arch/m68k/include/asm/amipcmcia.h | |||
diff --git a/arch/m68knommu/include/asm/anchor.h b/arch/m68k/include/asm/anchor.h index 871c0d5cfc3d..871c0d5cfc3d 100644 --- a/arch/m68knommu/include/asm/anchor.h +++ b/arch/m68k/include/asm/anchor.h | |||
diff --git a/include/asm-m68k/apollodma.h b/arch/m68k/include/asm/apollodma.h index 954adc851adb..954adc851adb 100644 --- a/include/asm-m68k/apollodma.h +++ b/arch/m68k/include/asm/apollodma.h | |||
diff --git a/include/asm-m68k/apollohw.h b/arch/m68k/include/asm/apollohw.h index a1373b9aa281..a1373b9aa281 100644 --- a/include/asm-m68k/apollohw.h +++ b/arch/m68k/include/asm/apollohw.h | |||
diff --git a/include/asm-m68k/atafd.h b/arch/m68k/include/asm/atafd.h index 8456889ee7da..8456889ee7da 100644 --- a/include/asm-m68k/atafd.h +++ b/arch/m68k/include/asm/atafd.h | |||
diff --git a/include/asm-m68k/atafdreg.h b/arch/m68k/include/asm/atafdreg.h index bbf80949fd9f..bbf80949fd9f 100644 --- a/include/asm-m68k/atafdreg.h +++ b/arch/m68k/include/asm/atafdreg.h | |||
diff --git a/include/asm-m68k/atari_joystick.h b/arch/m68k/include/asm/atari_joystick.h index 93be7da9f2c7..93be7da9f2c7 100644 --- a/include/asm-m68k/atari_joystick.h +++ b/arch/m68k/include/asm/atari_joystick.h | |||
diff --git a/include/asm-m68k/atari_stdma.h b/arch/m68k/include/asm/atari_stdma.h index 8e389b7fa70c..8e389b7fa70c 100644 --- a/include/asm-m68k/atari_stdma.h +++ b/arch/m68k/include/asm/atari_stdma.h | |||
diff --git a/include/asm-m68k/atari_stram.h b/arch/m68k/include/asm/atari_stram.h index 7546d13963be..7546d13963be 100644 --- a/include/asm-m68k/atari_stram.h +++ b/arch/m68k/include/asm/atari_stram.h | |||
diff --git a/include/asm-m68k/atarihw.h b/arch/m68k/include/asm/atarihw.h index 1412b4ab202f..1412b4ab202f 100644 --- a/include/asm-m68k/atarihw.h +++ b/arch/m68k/include/asm/atarihw.h | |||
diff --git a/include/asm-m68k/atariints.h b/arch/m68k/include/asm/atariints.h index 5748e99f4e26..5748e99f4e26 100644 --- a/include/asm-m68k/atariints.h +++ b/arch/m68k/include/asm/atariints.h | |||
diff --git a/include/asm-m68k/atarikb.h b/arch/m68k/include/asm/atarikb.h index 546e7da5804f..546e7da5804f 100644 --- a/include/asm-m68k/atarikb.h +++ b/arch/m68k/include/asm/atarikb.h | |||
diff --git a/arch/m68k/include/asm/atomic.h b/arch/m68k/include/asm/atomic.h new file mode 100644 index 000000000000..8d29145ebb27 --- /dev/null +++ b/arch/m68k/include/asm/atomic.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "atomic_no.h" | ||
3 | #else | ||
4 | #include "atomic_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/atomic.h b/arch/m68k/include/asm/atomic_mm.h index eb0ab9d4ee77..eb0ab9d4ee77 100644 --- a/include/asm-m68k/atomic.h +++ b/arch/m68k/include/asm/atomic_mm.h | |||
diff --git a/arch/m68knommu/include/asm/atomic.h b/arch/m68k/include/asm/atomic_no.h index 6bb674855a3f..6bb674855a3f 100644 --- a/arch/m68knommu/include/asm/atomic.h +++ b/arch/m68k/include/asm/atomic_no.h | |||
diff --git a/arch/m68knommu/include/asm/auxvec.h b/arch/m68k/include/asm/auxvec.h index 844d6d52204b..844d6d52204b 100644 --- a/arch/m68knommu/include/asm/auxvec.h +++ b/arch/m68k/include/asm/auxvec.h | |||
diff --git a/arch/m68k/include/asm/bitops.h b/arch/m68k/include/asm/bitops.h new file mode 100644 index 000000000000..ce163abddaba --- /dev/null +++ b/arch/m68k/include/asm/bitops.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "bitops_no.h" | ||
3 | #else | ||
4 | #include "bitops_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/bitops.h b/arch/m68k/include/asm/bitops_mm.h index 9bde784e7bad..9bde784e7bad 100644 --- a/include/asm-m68k/bitops.h +++ b/arch/m68k/include/asm/bitops_mm.h | |||
diff --git a/arch/m68knommu/include/asm/bitops.h b/arch/m68k/include/asm/bitops_no.h index 9d3cbe5fad1e..9d3cbe5fad1e 100644 --- a/arch/m68knommu/include/asm/bitops.h +++ b/arch/m68k/include/asm/bitops_no.h | |||
diff --git a/include/asm-m68k/blinken.h b/arch/m68k/include/asm/blinken.h index 1a749cf7b06d..1a749cf7b06d 100644 --- a/include/asm-m68k/blinken.h +++ b/arch/m68k/include/asm/blinken.h | |||
diff --git a/arch/m68k/include/asm/bootinfo.h b/arch/m68k/include/asm/bootinfo.h new file mode 100644 index 000000000000..fedf3e326121 --- /dev/null +++ b/arch/m68k/include/asm/bootinfo.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "bootinfo_no.h" | ||
3 | #else | ||
4 | #include "bootinfo_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/bootinfo.h b/arch/m68k/include/asm/bootinfo_mm.h index fb8a06b9ab6a..fb8a06b9ab6a 100644 --- a/include/asm-m68k/bootinfo.h +++ b/arch/m68k/include/asm/bootinfo_mm.h | |||
diff --git a/arch/m68knommu/include/asm/bootinfo.h b/arch/m68k/include/asm/bootinfo_no.h index c12e526f5189..c12e526f5189 100644 --- a/arch/m68knommu/include/asm/bootinfo.h +++ b/arch/m68k/include/asm/bootinfo_no.h | |||
diff --git a/arch/m68knommu/include/asm/bootstd.h b/arch/m68k/include/asm/bootstd.h index bdc1a4ac4fe9..bdc1a4ac4fe9 100644 --- a/arch/m68knommu/include/asm/bootstd.h +++ b/arch/m68k/include/asm/bootstd.h | |||
diff --git a/arch/m68k/include/asm/bug.h b/arch/m68k/include/asm/bug.h new file mode 100644 index 000000000000..997e0944ebc1 --- /dev/null +++ b/arch/m68k/include/asm/bug.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "bug_no.h" | ||
3 | #else | ||
4 | #include "bug_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/bug.h b/arch/m68k/include/asm/bug_mm.h index e5b528deb8a8..e5b528deb8a8 100644 --- a/include/asm-m68k/bug.h +++ b/arch/m68k/include/asm/bug_mm.h | |||
diff --git a/arch/m68knommu/include/asm/bug.h b/arch/m68k/include/asm/bug_no.h index 70e7dc0af21a..70e7dc0af21a 100644 --- a/arch/m68knommu/include/asm/bug.h +++ b/arch/m68k/include/asm/bug_no.h | |||
diff --git a/arch/m68k/include/asm/bugs.h b/arch/m68k/include/asm/bugs.h new file mode 100644 index 000000000000..01f047d784ec --- /dev/null +++ b/arch/m68k/include/asm/bugs.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "bugs_no.h" | ||
3 | #else | ||
4 | #include "bugs_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/bugs.h b/arch/m68k/include/asm/bugs_mm.h index d01935592410..d01935592410 100644 --- a/include/asm-m68k/bugs.h +++ b/arch/m68k/include/asm/bugs_mm.h | |||
diff --git a/arch/m68knommu/include/asm/bugs.h b/arch/m68k/include/asm/bugs_no.h index 5f382dac3a60..5f382dac3a60 100644 --- a/arch/m68knommu/include/asm/bugs.h +++ b/arch/m68k/include/asm/bugs_no.h | |||
diff --git a/include/asm-m68k/bvme6000hw.h b/arch/m68k/include/asm/bvme6000hw.h index f40d2f8510ee..f40d2f8510ee 100644 --- a/include/asm-m68k/bvme6000hw.h +++ b/arch/m68k/include/asm/bvme6000hw.h | |||
diff --git a/include/asm-m68k/byteorder.h b/arch/m68k/include/asm/byteorder.h index 31b260a88803..31b260a88803 100644 --- a/include/asm-m68k/byteorder.h +++ b/arch/m68k/include/asm/byteorder.h | |||
diff --git a/arch/m68k/include/asm/cache.h b/arch/m68k/include/asm/cache.h new file mode 100644 index 000000000000..599c29bc8f40 --- /dev/null +++ b/arch/m68k/include/asm/cache.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "cache_no.h" | ||
3 | #else | ||
4 | #include "cache_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/cache.h b/arch/m68k/include/asm/cache_mm.h index fed3fd30de7e..fed3fd30de7e 100644 --- a/include/asm-m68k/cache.h +++ b/arch/m68k/include/asm/cache_mm.h | |||
diff --git a/arch/m68knommu/include/asm/cache.h b/arch/m68k/include/asm/cache_no.h index 24e9eace5f8c..24e9eace5f8c 100644 --- a/arch/m68knommu/include/asm/cache.h +++ b/arch/m68k/include/asm/cache_no.h | |||
diff --git a/include/asm-m68k/cachectl.h b/arch/m68k/include/asm/cachectl.h index 525978e959e3..525978e959e3 100644 --- a/include/asm-m68k/cachectl.h +++ b/arch/m68k/include/asm/cachectl.h | |||
diff --git a/arch/m68k/include/asm/cacheflush.h b/arch/m68k/include/asm/cacheflush.h new file mode 100644 index 000000000000..a70d7319630a --- /dev/null +++ b/arch/m68k/include/asm/cacheflush.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "cacheflush_no.h" | ||
3 | #else | ||
4 | #include "cacheflush_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/cacheflush.h b/arch/m68k/include/asm/cacheflush_mm.h index 16bf375fdbe1..16bf375fdbe1 100644 --- a/include/asm-m68k/cacheflush.h +++ b/arch/m68k/include/asm/cacheflush_mm.h | |||
diff --git a/arch/m68knommu/include/asm/cacheflush.h b/arch/m68k/include/asm/cacheflush_no.h index 87e5dc0413b4..87e5dc0413b4 100644 --- a/arch/m68knommu/include/asm/cacheflush.h +++ b/arch/m68k/include/asm/cacheflush_no.h | |||
diff --git a/arch/m68k/include/asm/checksum.h b/arch/m68k/include/asm/checksum.h new file mode 100644 index 000000000000..1cf544767453 --- /dev/null +++ b/arch/m68k/include/asm/checksum.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "checksum_no.h" | ||
3 | #else | ||
4 | #include "checksum_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/checksum.h b/arch/m68k/include/asm/checksum_mm.h index 494f9aec37ea..494f9aec37ea 100644 --- a/include/asm-m68k/checksum.h +++ b/arch/m68k/include/asm/checksum_mm.h | |||
diff --git a/arch/m68knommu/include/asm/checksum.h b/arch/m68k/include/asm/checksum_no.h index 81883482ffb1..81883482ffb1 100644 --- a/arch/m68knommu/include/asm/checksum.h +++ b/arch/m68k/include/asm/checksum_no.h | |||
diff --git a/arch/m68knommu/include/asm/coldfire.h b/arch/m68k/include/asm/coldfire.h index 83a9fa4e618a..83a9fa4e618a 100644 --- a/arch/m68knommu/include/asm/coldfire.h +++ b/arch/m68k/include/asm/coldfire.h | |||
diff --git a/arch/m68knommu/include/asm/commproc.h b/arch/m68k/include/asm/commproc.h index edf5eb6c08d2..edf5eb6c08d2 100644 --- a/arch/m68knommu/include/asm/commproc.h +++ b/arch/m68k/include/asm/commproc.h | |||
diff --git a/include/asm-m68k/contregs.h b/arch/m68k/include/asm/contregs.h index d1ea750bddfe..d1ea750bddfe 100644 --- a/include/asm-m68k/contregs.h +++ b/arch/m68k/include/asm/contregs.h | |||
diff --git a/include/asm-m68k/cputime.h b/arch/m68k/include/asm/cputime.h index c79c5e892305..c79c5e892305 100644 --- a/include/asm-m68k/cputime.h +++ b/arch/m68k/include/asm/cputime.h | |||
diff --git a/arch/m68k/include/asm/current.h b/arch/m68k/include/asm/current.h new file mode 100644 index 000000000000..51b056dfaedd --- /dev/null +++ b/arch/m68k/include/asm/current.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "current_no.h" | ||
3 | #else | ||
4 | #include "current_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/current.h b/arch/m68k/include/asm/current_mm.h index 8de8f8ceda61..8de8f8ceda61 100644 --- a/include/asm-m68k/current.h +++ b/arch/m68k/include/asm/current_mm.h | |||
diff --git a/arch/m68knommu/include/asm/current.h b/arch/m68k/include/asm/current_no.h index 53ee0f9f7cef..53ee0f9f7cef 100644 --- a/arch/m68knommu/include/asm/current.h +++ b/arch/m68k/include/asm/current_no.h | |||
diff --git a/arch/m68knommu/include/asm/dbg.h b/arch/m68k/include/asm/dbg.h index 27af3270f671..27af3270f671 100644 --- a/arch/m68knommu/include/asm/dbg.h +++ b/arch/m68k/include/asm/dbg.h | |||
diff --git a/arch/m68k/include/asm/delay.h b/arch/m68k/include/asm/delay.h new file mode 100644 index 000000000000..d2598e3dd7b2 --- /dev/null +++ b/arch/m68k/include/asm/delay.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "delay_no.h" | ||
3 | #else | ||
4 | #include "delay_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/delay.h b/arch/m68k/include/asm/delay_mm.h index 5ed92851bc6f..5ed92851bc6f 100644 --- a/include/asm-m68k/delay.h +++ b/arch/m68k/include/asm/delay_mm.h | |||
diff --git a/arch/m68knommu/include/asm/delay.h b/arch/m68k/include/asm/delay_no.h index 55cbd6294ab6..55cbd6294ab6 100644 --- a/arch/m68knommu/include/asm/delay.h +++ b/arch/m68k/include/asm/delay_no.h | |||
diff --git a/arch/m68knommu/include/asm/device.h b/arch/m68k/include/asm/device.h index d8f9872b0e2d..d8f9872b0e2d 100644 --- a/arch/m68knommu/include/asm/device.h +++ b/arch/m68k/include/asm/device.h | |||
diff --git a/arch/m68k/include/asm/div64.h b/arch/m68k/include/asm/div64.h new file mode 100644 index 000000000000..d211d9f54276 --- /dev/null +++ b/arch/m68k/include/asm/div64.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "div64_no.h" | ||
3 | #else | ||
4 | #include "div64_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/div64.h b/arch/m68k/include/asm/div64_mm.h index 8243c931b5c0..8243c931b5c0 100644 --- a/include/asm-m68k/div64.h +++ b/arch/m68k/include/asm/div64_mm.h | |||
diff --git a/arch/m68knommu/include/asm/div64.h b/arch/m68k/include/asm/div64_no.h index 6cd978cefb28..6cd978cefb28 100644 --- a/arch/m68knommu/include/asm/div64.h +++ b/arch/m68k/include/asm/div64_no.h | |||
diff --git a/arch/m68k/include/asm/dma-mapping.h b/arch/m68k/include/asm/dma-mapping.h new file mode 100644 index 000000000000..f4a4c7638f89 --- /dev/null +++ b/arch/m68k/include/asm/dma-mapping.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "dma-mapping_no.h" | ||
3 | #else | ||
4 | #include "dma-mapping_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/dma-mapping.h b/arch/m68k/include/asm/dma-mapping_mm.h index 26f505488c11..26f505488c11 100644 --- a/include/asm-m68k/dma-mapping.h +++ b/arch/m68k/include/asm/dma-mapping_mm.h | |||
diff --git a/arch/m68knommu/include/asm/dma-mapping.h b/arch/m68k/include/asm/dma-mapping_no.h index 6aeab18e58bd..6aeab18e58bd 100644 --- a/arch/m68knommu/include/asm/dma-mapping.h +++ b/arch/m68k/include/asm/dma-mapping_no.h | |||
diff --git a/arch/m68k/include/asm/dma.h b/arch/m68k/include/asm/dma.h new file mode 100644 index 000000000000..b82e660cf1c2 --- /dev/null +++ b/arch/m68k/include/asm/dma.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "dma_no.h" | ||
3 | #else | ||
4 | #include "dma_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/dma.h b/arch/m68k/include/asm/dma_mm.h index 4240fbc946f8..4240fbc946f8 100644 --- a/include/asm-m68k/dma.h +++ b/arch/m68k/include/asm/dma_mm.h | |||
diff --git a/arch/m68knommu/include/asm/dma.h b/arch/m68k/include/asm/dma_no.h index 939a02056217..939a02056217 100644 --- a/arch/m68knommu/include/asm/dma.h +++ b/arch/m68k/include/asm/dma_no.h | |||
diff --git a/include/asm-m68k/dsp56k.h b/arch/m68k/include/asm/dsp56k.h index 2d8c0c9f794b..2d8c0c9f794b 100644 --- a/include/asm-m68k/dsp56k.h +++ b/arch/m68k/include/asm/dsp56k.h | |||
diff --git a/include/asm-m68k/dvma.h b/arch/m68k/include/asm/dvma.h index 890bbf7e7758..890bbf7e7758 100644 --- a/include/asm-m68k/dvma.h +++ b/arch/m68k/include/asm/dvma.h | |||
diff --git a/arch/m68k/include/asm/elf.h b/arch/m68k/include/asm/elf.h new file mode 100644 index 000000000000..04ce488bc63f --- /dev/null +++ b/arch/m68k/include/asm/elf.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "elf_no.h" | ||
3 | #else | ||
4 | #include "elf_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/elf.h b/arch/m68k/include/asm/elf_mm.h index 0b0f49eb876b..0b0f49eb876b 100644 --- a/include/asm-m68k/elf.h +++ b/arch/m68k/include/asm/elf_mm.h | |||
diff --git a/arch/m68knommu/include/asm/elf.h b/arch/m68k/include/asm/elf_no.h index b8046837f384..b8046837f384 100644 --- a/arch/m68knommu/include/asm/elf.h +++ b/arch/m68k/include/asm/elf_no.h | |||
diff --git a/arch/m68knommu/include/asm/elia.h b/arch/m68k/include/asm/elia.h index e037d4e2de33..e037d4e2de33 100644 --- a/arch/m68knommu/include/asm/elia.h +++ b/arch/m68k/include/asm/elia.h | |||
diff --git a/arch/m68knommu/include/asm/emergency-restart.h b/arch/m68k/include/asm/emergency-restart.h index 108d8c48e42e..108d8c48e42e 100644 --- a/arch/m68knommu/include/asm/emergency-restart.h +++ b/arch/m68k/include/asm/emergency-restart.h | |||
diff --git a/arch/m68k/include/asm/entry.h b/arch/m68k/include/asm/entry.h new file mode 100644 index 000000000000..876eec6f2b52 --- /dev/null +++ b/arch/m68k/include/asm/entry.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "entry_no.h" | ||
3 | #else | ||
4 | #include "entry_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/entry.h b/arch/m68k/include/asm/entry_mm.h index 5202f5a5b420..5202f5a5b420 100644 --- a/include/asm-m68k/entry.h +++ b/arch/m68k/include/asm/entry_mm.h | |||
diff --git a/arch/m68knommu/include/asm/entry.h b/arch/m68k/include/asm/entry_no.h index c2553d26273d..c2553d26273d 100644 --- a/arch/m68knommu/include/asm/entry.h +++ b/arch/m68k/include/asm/entry_no.h | |||
diff --git a/include/asm-m68k/errno.h b/arch/m68k/include/asm/errno.h index 0d4e188d6ef6..0d4e188d6ef6 100644 --- a/include/asm-m68k/errno.h +++ b/arch/m68k/include/asm/errno.h | |||
diff --git a/arch/m68k/include/asm/fb.h b/arch/m68k/include/asm/fb.h new file mode 100644 index 000000000000..97bcaefd2064 --- /dev/null +++ b/arch/m68k/include/asm/fb.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "fb_no.h" | ||
3 | #else | ||
4 | #include "fb_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/fb.h b/arch/m68k/include/asm/fb_mm.h index 380b97ae8157..380b97ae8157 100644 --- a/include/asm-m68k/fb.h +++ b/arch/m68k/include/asm/fb_mm.h | |||
diff --git a/arch/m68knommu/include/asm/fb.h b/arch/m68k/include/asm/fb_no.h index c7df38030992..c7df38030992 100644 --- a/arch/m68knommu/include/asm/fb.h +++ b/arch/m68k/include/asm/fb_no.h | |||
diff --git a/include/asm-m68k/fbio.h b/arch/m68k/include/asm/fbio.h index b9215a0907d3..b9215a0907d3 100644 --- a/include/asm-m68k/fbio.h +++ b/arch/m68k/include/asm/fbio.h | |||
diff --git a/include/asm-m68k/fcntl.h b/arch/m68k/include/asm/fcntl.h index 1c369b20dc45..1c369b20dc45 100644 --- a/include/asm-m68k/fcntl.h +++ b/arch/m68k/include/asm/fcntl.h | |||
diff --git a/arch/m68knommu/include/asm/flat.h b/arch/m68k/include/asm/flat.h index 814b5174a8e0..814b5174a8e0 100644 --- a/arch/m68knommu/include/asm/flat.h +++ b/arch/m68k/include/asm/flat.h | |||
diff --git a/include/asm-m68k/floppy.h b/arch/m68k/include/asm/floppy.h index 697d50393dd0..697d50393dd0 100644 --- a/include/asm-m68k/floppy.h +++ b/arch/m68k/include/asm/floppy.h | |||
diff --git a/arch/m68k/include/asm/fpu.h b/arch/m68k/include/asm/fpu.h new file mode 100644 index 000000000000..e19bc5ed9c37 --- /dev/null +++ b/arch/m68k/include/asm/fpu.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "fpu_no.h" | ||
3 | #else | ||
4 | #include "fpu_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/fpu.h b/arch/m68k/include/asm/fpu_mm.h index ffb6b8cfc6d5..ffb6b8cfc6d5 100644 --- a/include/asm-m68k/fpu.h +++ b/arch/m68k/include/asm/fpu_mm.h | |||
diff --git a/arch/m68knommu/include/asm/fpu.h b/arch/m68k/include/asm/fpu_no.h index b16b2e4fca2a..b16b2e4fca2a 100644 --- a/arch/m68knommu/include/asm/fpu.h +++ b/arch/m68k/include/asm/fpu_no.h | |||
diff --git a/arch/m68knommu/include/asm/futex.h b/arch/m68k/include/asm/futex.h index 6a332a9f099c..6a332a9f099c 100644 --- a/arch/m68knommu/include/asm/futex.h +++ b/arch/m68k/include/asm/futex.h | |||
diff --git a/arch/m68k/include/asm/hardirq.h b/arch/m68k/include/asm/hardirq.h new file mode 100644 index 000000000000..56d0d5db231c --- /dev/null +++ b/arch/m68k/include/asm/hardirq.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "hardirq_no.h" | ||
3 | #else | ||
4 | #include "hardirq_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/hardirq.h b/arch/m68k/include/asm/hardirq_mm.h index 394ee946015c..394ee946015c 100644 --- a/include/asm-m68k/hardirq.h +++ b/arch/m68k/include/asm/hardirq_mm.h | |||
diff --git a/arch/m68knommu/include/asm/hardirq.h b/arch/m68k/include/asm/hardirq_no.h index bfad28149a49..bfad28149a49 100644 --- a/arch/m68knommu/include/asm/hardirq.h +++ b/arch/m68k/include/asm/hardirq_no.h | |||
diff --git a/include/asm-m68k/hp300hw.h b/arch/m68k/include/asm/hp300hw.h index d998ea67c19c..d998ea67c19c 100644 --- a/include/asm-m68k/hp300hw.h +++ b/arch/m68k/include/asm/hp300hw.h | |||
diff --git a/arch/m68k/include/asm/hw_irq.h b/arch/m68k/include/asm/hw_irq.h new file mode 100644 index 000000000000..e19526015890 --- /dev/null +++ b/arch/m68k/include/asm/hw_irq.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "hw_irq_no.h" | ||
3 | #else | ||
4 | #include "hw_irq_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/hw_irq.h b/arch/m68k/include/asm/hw_irq_mm.h index eacef0951fbf..eacef0951fbf 100644 --- a/include/asm-m68k/hw_irq.h +++ b/arch/m68k/include/asm/hw_irq_mm.h | |||
diff --git a/arch/m68knommu/include/asm/hw_irq.h b/arch/m68k/include/asm/hw_irq_no.h index f3ec9e5ae049..f3ec9e5ae049 100644 --- a/arch/m68knommu/include/asm/hw_irq.h +++ b/arch/m68k/include/asm/hw_irq_no.h | |||
diff --git a/include/asm-m68k/hwtest.h b/arch/m68k/include/asm/hwtest.h index 402c8a4401fe..402c8a4401fe 100644 --- a/include/asm-m68k/hwtest.h +++ b/arch/m68k/include/asm/hwtest.h | |||
diff --git a/include/asm-m68k/ide.h b/arch/m68k/include/asm/ide.h index b996a3c8cff5..b996a3c8cff5 100644 --- a/include/asm-m68k/ide.h +++ b/arch/m68k/include/asm/ide.h | |||
diff --git a/include/asm-m68k/idprom.h b/arch/m68k/include/asm/idprom.h index 160616a89e05..160616a89e05 100644 --- a/include/asm-m68k/idprom.h +++ b/arch/m68k/include/asm/idprom.h | |||
diff --git a/include/asm-m68k/intersil.h b/arch/m68k/include/asm/intersil.h index f482902cac8a..f482902cac8a 100644 --- a/include/asm-m68k/intersil.h +++ b/arch/m68k/include/asm/intersil.h | |||
diff --git a/arch/m68k/include/asm/io.h b/arch/m68k/include/asm/io.h new file mode 100644 index 000000000000..c7210ba184ea --- /dev/null +++ b/arch/m68k/include/asm/io.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "io_no.h" | ||
3 | #else | ||
4 | #include "io_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/io.h b/arch/m68k/include/asm/io_mm.h index 9e673e3bd434..9e673e3bd434 100644 --- a/include/asm-m68k/io.h +++ b/arch/m68k/include/asm/io_mm.h | |||
diff --git a/arch/m68knommu/include/asm/io.h b/arch/m68k/include/asm/io_no.h index 6adef1ee2082..6adef1ee2082 100644 --- a/arch/m68knommu/include/asm/io.h +++ b/arch/m68k/include/asm/io_no.h | |||
diff --git a/arch/m68knommu/include/asm/ioctl.h b/arch/m68k/include/asm/ioctl.h index b279fe06dfe5..b279fe06dfe5 100644 --- a/arch/m68knommu/include/asm/ioctl.h +++ b/arch/m68k/include/asm/ioctl.h | |||
diff --git a/include/asm-m68k/ioctls.h b/arch/m68k/include/asm/ioctls.h index b8d2f4be7fd7..b8d2f4be7fd7 100644 --- a/include/asm-m68k/ioctls.h +++ b/arch/m68k/include/asm/ioctls.h | |||
diff --git a/include/asm-m68k/ipcbuf.h b/arch/m68k/include/asm/ipcbuf.h index a623ea3f0955..a623ea3f0955 100644 --- a/include/asm-m68k/ipcbuf.h +++ b/arch/m68k/include/asm/ipcbuf.h | |||
diff --git a/arch/m68k/include/asm/irq.h b/arch/m68k/include/asm/irq.h new file mode 100644 index 000000000000..d031416595b2 --- /dev/null +++ b/arch/m68k/include/asm/irq.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "irq_no.h" | ||
3 | #else | ||
4 | #include "irq_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/irq.h b/arch/m68k/include/asm/irq_mm.h index 226bfc0f21b1..226bfc0f21b1 100644 --- a/include/asm-m68k/irq.h +++ b/arch/m68k/include/asm/irq_mm.h | |||
diff --git a/arch/m68knommu/include/asm/irq.h b/arch/m68k/include/asm/irq_no.h index 9373c31ac87d..9373c31ac87d 100644 --- a/arch/m68knommu/include/asm/irq.h +++ b/arch/m68k/include/asm/irq_no.h | |||
diff --git a/arch/m68knommu/include/asm/irq_regs.h b/arch/m68k/include/asm/irq_regs.h index 3dd9c0b70270..3dd9c0b70270 100644 --- a/arch/m68knommu/include/asm/irq_regs.h +++ b/arch/m68k/include/asm/irq_regs.h | |||
diff --git a/arch/m68knommu/include/asm/kdebug.h b/arch/m68k/include/asm/kdebug.h index 6ece1b037665..6ece1b037665 100644 --- a/arch/m68knommu/include/asm/kdebug.h +++ b/arch/m68k/include/asm/kdebug.h | |||
diff --git a/arch/m68k/include/asm/kmap_types.h b/arch/m68k/include/asm/kmap_types.h new file mode 100644 index 000000000000..045d9fd122a2 --- /dev/null +++ b/arch/m68k/include/asm/kmap_types.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "kmap_types_no.h" | ||
3 | #else | ||
4 | #include "kmap_types_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/kmap_types.h b/arch/m68k/include/asm/kmap_types_mm.h index c843c63d3801..c843c63d3801 100644 --- a/include/asm-m68k/kmap_types.h +++ b/arch/m68k/include/asm/kmap_types_mm.h | |||
diff --git a/arch/m68knommu/include/asm/kmap_types.h b/arch/m68k/include/asm/kmap_types_no.h index bfb6707575d1..bfb6707575d1 100644 --- a/arch/m68knommu/include/asm/kmap_types.h +++ b/arch/m68k/include/asm/kmap_types_no.h | |||
diff --git a/include/asm-m68k/linkage.h b/arch/m68k/include/asm/linkage.h index 5a822bb790f7..5a822bb790f7 100644 --- a/include/asm-m68k/linkage.h +++ b/arch/m68k/include/asm/linkage.h | |||
diff --git a/include/asm-m68k/local.h b/arch/m68k/include/asm/local.h index 6c259263e1f0..6c259263e1f0 100644 --- a/include/asm-m68k/local.h +++ b/arch/m68k/include/asm/local.h | |||
diff --git a/arch/m68knommu/include/asm/m5206sim.h b/arch/m68k/include/asm/m5206sim.h index 7e3594dea88b..7e3594dea88b 100644 --- a/arch/m68knommu/include/asm/m5206sim.h +++ b/arch/m68k/include/asm/m5206sim.h | |||
diff --git a/arch/m68knommu/include/asm/m520xsim.h b/arch/m68k/include/asm/m520xsim.h index 49d016e6391a..49d016e6391a 100644 --- a/arch/m68knommu/include/asm/m520xsim.h +++ b/arch/m68k/include/asm/m520xsim.h | |||
diff --git a/arch/m68knommu/include/asm/m523xsim.h b/arch/m68k/include/asm/m523xsim.h index bf397313e93f..bf397313e93f 100644 --- a/arch/m68knommu/include/asm/m523xsim.h +++ b/arch/m68k/include/asm/m523xsim.h | |||
diff --git a/arch/m68knommu/include/asm/m5249sim.h b/arch/m68k/include/asm/m5249sim.h index 366eb8602d2f..366eb8602d2f 100644 --- a/arch/m68knommu/include/asm/m5249sim.h +++ b/arch/m68k/include/asm/m5249sim.h | |||
diff --git a/arch/m68knommu/include/asm/m5272sim.h b/arch/m68k/include/asm/m5272sim.h index 6217edc21139..6217edc21139 100644 --- a/arch/m68knommu/include/asm/m5272sim.h +++ b/arch/m68k/include/asm/m5272sim.h | |||
diff --git a/arch/m68knommu/include/asm/m527xsim.h b/arch/m68k/include/asm/m527xsim.h index 1f63ab3fb3e6..1f63ab3fb3e6 100644 --- a/arch/m68knommu/include/asm/m527xsim.h +++ b/arch/m68k/include/asm/m527xsim.h | |||
diff --git a/arch/m68knommu/include/asm/m528xsim.h b/arch/m68k/include/asm/m528xsim.h index 28bf783a5d6d..28bf783a5d6d 100644 --- a/arch/m68knommu/include/asm/m528xsim.h +++ b/arch/m68k/include/asm/m528xsim.h | |||
diff --git a/arch/m68knommu/include/asm/m5307sim.h b/arch/m68k/include/asm/m5307sim.h index 5886728409c0..5886728409c0 100644 --- a/arch/m68knommu/include/asm/m5307sim.h +++ b/arch/m68k/include/asm/m5307sim.h | |||
diff --git a/arch/m68knommu/include/asm/m532xsim.h b/arch/m68k/include/asm/m532xsim.h index 1835fd20a82c..1835fd20a82c 100644 --- a/arch/m68knommu/include/asm/m532xsim.h +++ b/arch/m68k/include/asm/m532xsim.h | |||
diff --git a/arch/m68knommu/include/asm/m5407sim.h b/arch/m68k/include/asm/m5407sim.h index cc22c4a53005..cc22c4a53005 100644 --- a/arch/m68knommu/include/asm/m5407sim.h +++ b/arch/m68k/include/asm/m5407sim.h | |||
diff --git a/arch/m68knommu/include/asm/m68360.h b/arch/m68k/include/asm/m68360.h index eb7d39ef2855..eb7d39ef2855 100644 --- a/arch/m68knommu/include/asm/m68360.h +++ b/arch/m68k/include/asm/m68360.h | |||
diff --git a/arch/m68knommu/include/asm/m68360_enet.h b/arch/m68k/include/asm/m68360_enet.h index c36f4d059203..c36f4d059203 100644 --- a/arch/m68knommu/include/asm/m68360_enet.h +++ b/arch/m68k/include/asm/m68360_enet.h | |||
diff --git a/arch/m68knommu/include/asm/m68360_pram.h b/arch/m68k/include/asm/m68360_pram.h index e6088bbce93d..e6088bbce93d 100644 --- a/arch/m68knommu/include/asm/m68360_pram.h +++ b/arch/m68k/include/asm/m68360_pram.h | |||
diff --git a/arch/m68knommu/include/asm/m68360_quicc.h b/arch/m68k/include/asm/m68360_quicc.h index 6d40f4d18e10..6d40f4d18e10 100644 --- a/arch/m68knommu/include/asm/m68360_quicc.h +++ b/arch/m68k/include/asm/m68360_quicc.h | |||
diff --git a/arch/m68knommu/include/asm/m68360_regs.h b/arch/m68k/include/asm/m68360_regs.h index d57217ca4f27..d57217ca4f27 100644 --- a/arch/m68knommu/include/asm/m68360_regs.h +++ b/arch/m68k/include/asm/m68360_regs.h | |||
diff --git a/include/asm-m68k/mac_asc.h b/arch/m68k/include/asm/mac_asc.h index fc2e5467b41e..fc2e5467b41e 100644 --- a/include/asm-m68k/mac_asc.h +++ b/arch/m68k/include/asm/mac_asc.h | |||
diff --git a/include/asm-m68k/mac_baboon.h b/arch/m68k/include/asm/mac_baboon.h index c2a042b8c349..c2a042b8c349 100644 --- a/include/asm-m68k/mac_baboon.h +++ b/arch/m68k/include/asm/mac_baboon.h | |||
diff --git a/include/asm-m68k/mac_iop.h b/arch/m68k/include/asm/mac_iop.h index a2c7e6fcca38..a2c7e6fcca38 100644 --- a/include/asm-m68k/mac_iop.h +++ b/arch/m68k/include/asm/mac_iop.h | |||
diff --git a/include/asm-m68k/mac_mouse.h b/arch/m68k/include/asm/mac_mouse.h index 39a5c292eaee..39a5c292eaee 100644 --- a/include/asm-m68k/mac_mouse.h +++ b/arch/m68k/include/asm/mac_mouse.h | |||
diff --git a/include/asm-m68k/mac_oss.h b/arch/m68k/include/asm/mac_oss.h index 7221f7251934..7221f7251934 100644 --- a/include/asm-m68k/mac_oss.h +++ b/arch/m68k/include/asm/mac_oss.h | |||
diff --git a/include/asm-m68k/mac_psc.h b/arch/m68k/include/asm/mac_psc.h index 7808bb0b2323..7808bb0b2323 100644 --- a/include/asm-m68k/mac_psc.h +++ b/arch/m68k/include/asm/mac_psc.h | |||
diff --git a/include/asm-m68k/mac_via.h b/arch/m68k/include/asm/mac_via.h index 39afb438b656..39afb438b656 100644 --- a/include/asm-m68k/mac_via.h +++ b/arch/m68k/include/asm/mac_via.h | |||
diff --git a/arch/m68k/include/asm/machdep.h b/arch/m68k/include/asm/machdep.h new file mode 100644 index 000000000000..fc24b6fc5508 --- /dev/null +++ b/arch/m68k/include/asm/machdep.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "machdep_no.h" | ||
3 | #else | ||
4 | #include "machdep_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/machdep.h b/arch/m68k/include/asm/machdep_mm.h index 5637dcef314e..5637dcef314e 100644 --- a/include/asm-m68k/machdep.h +++ b/arch/m68k/include/asm/machdep_mm.h | |||
diff --git a/arch/m68knommu/include/asm/machdep.h b/arch/m68k/include/asm/machdep_no.h index de9f47a51cc2..de9f47a51cc2 100644 --- a/arch/m68knommu/include/asm/machdep.h +++ b/arch/m68k/include/asm/machdep_no.h | |||
diff --git a/include/asm-m68k/machines.h b/arch/m68k/include/asm/machines.h index be667e84f01b..be667e84f01b 100644 --- a/include/asm-m68k/machines.h +++ b/arch/m68k/include/asm/machines.h | |||
diff --git a/include/asm-m68k/machw.h b/arch/m68k/include/asm/machw.h index 2b4de0c2ce4a..2b4de0c2ce4a 100644 --- a/include/asm-m68k/machw.h +++ b/arch/m68k/include/asm/machw.h | |||
diff --git a/include/asm-m68k/macintosh.h b/arch/m68k/include/asm/macintosh.h index 05309f7e3d06..05309f7e3d06 100644 --- a/include/asm-m68k/macintosh.h +++ b/arch/m68k/include/asm/macintosh.h | |||
diff --git a/include/asm-m68k/macints.h b/arch/m68k/include/asm/macints.h index 679c48ab4407..679c48ab4407 100644 --- a/include/asm-m68k/macints.h +++ b/arch/m68k/include/asm/macints.h | |||
diff --git a/include/asm-m68k/math-emu.h b/arch/m68k/include/asm/math-emu.h index ddfab96403cb..ddfab96403cb 100644 --- a/include/asm-m68k/math-emu.h +++ b/arch/m68k/include/asm/math-emu.h | |||
diff --git a/arch/m68k/include/asm/mc146818rtc.h b/arch/m68k/include/asm/mc146818rtc.h new file mode 100644 index 000000000000..fb90dcf78426 --- /dev/null +++ b/arch/m68k/include/asm/mc146818rtc.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "mc146818rtc_no.h" | ||
3 | #else | ||
4 | #include "mc146818rtc_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/mc146818rtc.h b/arch/m68k/include/asm/mc146818rtc_mm.h index 9f70a01f73dc..9f70a01f73dc 100644 --- a/include/asm-m68k/mc146818rtc.h +++ b/arch/m68k/include/asm/mc146818rtc_mm.h | |||
diff --git a/arch/m68knommu/include/asm/mc146818rtc.h b/arch/m68k/include/asm/mc146818rtc_no.h index 907a0481a140..907a0481a140 100644 --- a/arch/m68knommu/include/asm/mc146818rtc.h +++ b/arch/m68k/include/asm/mc146818rtc_no.h | |||
diff --git a/arch/m68knommu/include/asm/mcfcache.h b/arch/m68k/include/asm/mcfcache.h index c042634fadaa..c042634fadaa 100644 --- a/arch/m68knommu/include/asm/mcfcache.h +++ b/arch/m68k/include/asm/mcfcache.h | |||
diff --git a/arch/m68knommu/include/asm/mcfdma.h b/arch/m68k/include/asm/mcfdma.h index 705c52c79cd8..705c52c79cd8 100644 --- a/arch/m68knommu/include/asm/mcfdma.h +++ b/arch/m68k/include/asm/mcfdma.h | |||
diff --git a/arch/m68knommu/include/asm/mcfmbus.h b/arch/m68k/include/asm/mcfmbus.h index 319899c47a2c..319899c47a2c 100644 --- a/arch/m68knommu/include/asm/mcfmbus.h +++ b/arch/m68k/include/asm/mcfmbus.h | |||
diff --git a/arch/m68knommu/include/asm/mcfne.h b/arch/m68k/include/asm/mcfne.h index 431f63aadd0e..431f63aadd0e 100644 --- a/arch/m68knommu/include/asm/mcfne.h +++ b/arch/m68k/include/asm/mcfne.h | |||
diff --git a/arch/m68knommu/include/asm/mcfpci.h b/arch/m68k/include/asm/mcfpci.h index f1507dd06ec6..f1507dd06ec6 100644 --- a/arch/m68knommu/include/asm/mcfpci.h +++ b/arch/m68k/include/asm/mcfpci.h | |||
diff --git a/arch/m68knommu/include/asm/mcfpit.h b/arch/m68k/include/asm/mcfpit.h index f570cf64fd29..f570cf64fd29 100644 --- a/arch/m68knommu/include/asm/mcfpit.h +++ b/arch/m68k/include/asm/mcfpit.h | |||
diff --git a/arch/m68knommu/include/asm/mcfsim.h b/arch/m68k/include/asm/mcfsim.h index da3f2ceff3a4..da3f2ceff3a4 100644 --- a/arch/m68knommu/include/asm/mcfsim.h +++ b/arch/m68k/include/asm/mcfsim.h | |||
diff --git a/arch/m68knommu/include/asm/mcfsmc.h b/arch/m68k/include/asm/mcfsmc.h index 2d7a4dbd9683..2d7a4dbd9683 100644 --- a/arch/m68knommu/include/asm/mcfsmc.h +++ b/arch/m68k/include/asm/mcfsmc.h | |||
diff --git a/arch/m68knommu/include/asm/mcftimer.h b/arch/m68k/include/asm/mcftimer.h index 0f90f6d2227a..0f90f6d2227a 100644 --- a/arch/m68knommu/include/asm/mcftimer.h +++ b/arch/m68k/include/asm/mcftimer.h | |||
diff --git a/arch/m68knommu/include/asm/mcfuart.h b/arch/m68k/include/asm/mcfuart.h index ef2293873612..ef2293873612 100644 --- a/arch/m68knommu/include/asm/mcfuart.h +++ b/arch/m68k/include/asm/mcfuart.h | |||
diff --git a/arch/m68knommu/include/asm/mcfwdebug.h b/arch/m68k/include/asm/mcfwdebug.h index 27f70e45d700..27f70e45d700 100644 --- a/arch/m68knommu/include/asm/mcfwdebug.h +++ b/arch/m68k/include/asm/mcfwdebug.h | |||
diff --git a/include/asm-m68k/md.h b/arch/m68k/include/asm/md.h index d2f78f226f3d..d2f78f226f3d 100644 --- a/include/asm-m68k/md.h +++ b/arch/m68k/include/asm/md.h | |||
diff --git a/include/asm-m68k/mman.h b/arch/m68k/include/asm/mman.h index 1626d37f4898..1626d37f4898 100644 --- a/include/asm-m68k/mman.h +++ b/arch/m68k/include/asm/mman.h | |||
diff --git a/arch/m68k/include/asm/mmu.h b/arch/m68k/include/asm/mmu.h new file mode 100644 index 000000000000..a81d3946675f --- /dev/null +++ b/arch/m68k/include/asm/mmu.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "mmu_no.h" | ||
3 | #else | ||
4 | #include "mmu_mm.h" | ||
5 | #endif | ||
diff --git a/arch/m68k/include/asm/mmu_context.h b/arch/m68k/include/asm/mmu_context.h new file mode 100644 index 000000000000..b440928fc6c7 --- /dev/null +++ b/arch/m68k/include/asm/mmu_context.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "mmu_context_no.h" | ||
3 | #else | ||
4 | #include "mmu_context_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/mmu_context.h b/arch/m68k/include/asm/mmu_context_mm.h index 894dacbcee14..894dacbcee14 100644 --- a/include/asm-m68k/mmu_context.h +++ b/arch/m68k/include/asm/mmu_context_mm.h | |||
diff --git a/arch/m68knommu/include/asm/mmu_context.h b/arch/m68k/include/asm/mmu_context_no.h index 9ccee4278c97..9ccee4278c97 100644 --- a/arch/m68knommu/include/asm/mmu_context.h +++ b/arch/m68k/include/asm/mmu_context_no.h | |||
diff --git a/include/asm-m68k/mmu.h b/arch/m68k/include/asm/mmu_mm.h index ccd36d26615a..ccd36d26615a 100644 --- a/include/asm-m68k/mmu.h +++ b/arch/m68k/include/asm/mmu_mm.h | |||
diff --git a/arch/m68knommu/include/asm/mmu.h b/arch/m68k/include/asm/mmu_no.h index e2da1e6f09fe..e2da1e6f09fe 100644 --- a/arch/m68knommu/include/asm/mmu.h +++ b/arch/m68k/include/asm/mmu_no.h | |||
diff --git a/include/asm-m68k/mmzone.h b/arch/m68k/include/asm/mmzone.h index e1f1ec7b7006..e1f1ec7b7006 100644 --- a/include/asm-m68k/mmzone.h +++ b/arch/m68k/include/asm/mmzone.h | |||
diff --git a/arch/m68k/include/asm/module.h b/arch/m68k/include/asm/module.h new file mode 100644 index 000000000000..79b59d137dd0 --- /dev/null +++ b/arch/m68k/include/asm/module.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "module_no.h" | ||
3 | #else | ||
4 | #include "module_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/module.h b/arch/m68k/include/asm/module_mm.h index 382d20a6fc18..382d20a6fc18 100644 --- a/include/asm-m68k/module.h +++ b/arch/m68k/include/asm/module_mm.h | |||
diff --git a/arch/m68knommu/include/asm/module.h b/arch/m68k/include/asm/module_no.h index 2e45ab50b232..2e45ab50b232 100644 --- a/arch/m68knommu/include/asm/module.h +++ b/arch/m68k/include/asm/module_no.h | |||
diff --git a/include/asm-m68k/motorola_pgalloc.h b/arch/m68k/include/asm/motorola_pgalloc.h index d08bf6261df8..d08bf6261df8 100644 --- a/include/asm-m68k/motorola_pgalloc.h +++ b/arch/m68k/include/asm/motorola_pgalloc.h | |||
diff --git a/include/asm-m68k/motorola_pgtable.h b/arch/m68k/include/asm/motorola_pgtable.h index 8e9a8a754dde..8e9a8a754dde 100644 --- a/include/asm-m68k/motorola_pgtable.h +++ b/arch/m68k/include/asm/motorola_pgtable.h | |||
diff --git a/include/asm-m68k/movs.h b/arch/m68k/include/asm/movs.h index 67dbea36960f..67dbea36960f 100644 --- a/include/asm-m68k/movs.h +++ b/arch/m68k/include/asm/movs.h | |||
diff --git a/include/asm-m68k/msgbuf.h b/arch/m68k/include/asm/msgbuf.h index 243cb798de8f..243cb798de8f 100644 --- a/include/asm-m68k/msgbuf.h +++ b/arch/m68k/include/asm/msgbuf.h | |||
diff --git a/arch/m68knommu/include/asm/mutex.h b/arch/m68k/include/asm/mutex.h index 458c1f7fbc18..458c1f7fbc18 100644 --- a/arch/m68knommu/include/asm/mutex.h +++ b/arch/m68k/include/asm/mutex.h | |||
diff --git a/include/asm-m68k/mvme147hw.h b/arch/m68k/include/asm/mvme147hw.h index b81043108472..b81043108472 100644 --- a/include/asm-m68k/mvme147hw.h +++ b/arch/m68k/include/asm/mvme147hw.h | |||
diff --git a/include/asm-m68k/mvme16xhw.h b/arch/m68k/include/asm/mvme16xhw.h index 6117f56653d2..6117f56653d2 100644 --- a/include/asm-m68k/mvme16xhw.h +++ b/arch/m68k/include/asm/mvme16xhw.h | |||
diff --git a/arch/m68knommu/include/asm/nettel.h b/arch/m68k/include/asm/nettel.h index 0299f6a2deeb..0299f6a2deeb 100644 --- a/arch/m68knommu/include/asm/nettel.h +++ b/arch/m68k/include/asm/nettel.h | |||
diff --git a/include/asm-m68k/nubus.h b/arch/m68k/include/asm/nubus.h index d6be9976f1ae..d6be9976f1ae 100644 --- a/include/asm-m68k/nubus.h +++ b/arch/m68k/include/asm/nubus.h | |||
diff --git a/include/asm-m68k/openprom.h b/arch/m68k/include/asm/openprom.h index d33cdadf78e1..d33cdadf78e1 100644 --- a/include/asm-m68k/openprom.h +++ b/arch/m68k/include/asm/openprom.h | |||
diff --git a/include/asm-m68k/oplib.h b/arch/m68k/include/asm/oplib.h index f082d03336bd..f082d03336bd 100644 --- a/include/asm-m68k/oplib.h +++ b/arch/m68k/include/asm/oplib.h | |||
diff --git a/arch/m68k/include/asm/page.h b/arch/m68k/include/asm/page.h new file mode 100644 index 000000000000..f2b4480cc98a --- /dev/null +++ b/arch/m68k/include/asm/page.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "page_no.h" | ||
3 | #else | ||
4 | #include "page_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/page.h b/arch/m68k/include/asm/page_mm.h index a34b8bad7847..a34b8bad7847 100644 --- a/include/asm-m68k/page.h +++ b/arch/m68k/include/asm/page_mm.h | |||
diff --git a/arch/m68knommu/include/asm/page.h b/arch/m68k/include/asm/page_no.h index 3a1ede4544cb..3a1ede4544cb 100644 --- a/arch/m68knommu/include/asm/page.h +++ b/arch/m68k/include/asm/page_no.h | |||
diff --git a/arch/m68k/include/asm/page_offset.h b/arch/m68k/include/asm/page_offset.h new file mode 100644 index 000000000000..66455c849fbb --- /dev/null +++ b/arch/m68k/include/asm/page_offset.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "page_offset_no.h" | ||
3 | #else | ||
4 | #include "page_offset_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/page_offset.h b/arch/m68k/include/asm/page_offset_mm.h index 1cbdb7f30ac2..1cbdb7f30ac2 100644 --- a/include/asm-m68k/page_offset.h +++ b/arch/m68k/include/asm/page_offset_mm.h | |||
diff --git a/arch/m68knommu/include/asm/page_offset.h b/arch/m68k/include/asm/page_offset_no.h index d4e73e0ba646..d4e73e0ba646 100644 --- a/arch/m68knommu/include/asm/page_offset.h +++ b/arch/m68k/include/asm/page_offset_no.h | |||
diff --git a/arch/m68k/include/asm/param.h b/arch/m68k/include/asm/param.h new file mode 100644 index 000000000000..40d1112a4588 --- /dev/null +++ b/arch/m68k/include/asm/param.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "param_no.h" | ||
3 | #else | ||
4 | #include "param_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/param.h b/arch/m68k/include/asm/param_mm.h index 536a27888358..536a27888358 100644 --- a/include/asm-m68k/param.h +++ b/arch/m68k/include/asm/param_mm.h | |||
diff --git a/arch/m68knommu/include/asm/param.h b/arch/m68k/include/asm/param_no.h index 6044397adb64..6044397adb64 100644 --- a/arch/m68knommu/include/asm/param.h +++ b/arch/m68k/include/asm/param_no.h | |||
diff --git a/include/asm-m68k/parport.h b/arch/m68k/include/asm/parport.h index 646b1872f73b..646b1872f73b 100644 --- a/include/asm-m68k/parport.h +++ b/arch/m68k/include/asm/parport.h | |||
diff --git a/arch/m68k/include/asm/pci.h b/arch/m68k/include/asm/pci.h new file mode 100644 index 000000000000..dbea95373080 --- /dev/null +++ b/arch/m68k/include/asm/pci.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "pci_no.h" | ||
3 | #else | ||
4 | #include "pci_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/pci.h b/arch/m68k/include/asm/pci_mm.h index 4ad0aea48ab4..4ad0aea48ab4 100644 --- a/include/asm-m68k/pci.h +++ b/arch/m68k/include/asm/pci_mm.h | |||
diff --git a/arch/m68knommu/include/asm/pci.h b/arch/m68k/include/asm/pci_no.h index a13f3cc87451..9abbc03c73ee 100644 --- a/arch/m68knommu/include/asm/pci.h +++ b/arch/m68k/include/asm/pci_no.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef M68KNOMMU_PCI_H | 1 | #ifndef M68KNOMMU_PCI_H |
2 | #define M68KNOMMU_PCI_H | 2 | #define M68KNOMMU_PCI_H |
3 | 3 | ||
4 | #include <asm-m68k/pci.h> | 4 | #include <asm/pci_mm.h> |
5 | 5 | ||
6 | #ifdef CONFIG_COMEMPCI | 6 | #ifdef CONFIG_COMEMPCI |
7 | /* | 7 | /* |
diff --git a/include/asm-m68k/percpu.h b/arch/m68k/include/asm/percpu.h index 0859d048faf5..0859d048faf5 100644 --- a/include/asm-m68k/percpu.h +++ b/arch/m68k/include/asm/percpu.h | |||
diff --git a/arch/m68k/include/asm/pgalloc.h b/arch/m68k/include/asm/pgalloc.h new file mode 100644 index 000000000000..059cb73e78fc --- /dev/null +++ b/arch/m68k/include/asm/pgalloc.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "pgalloc_no.h" | ||
3 | #else | ||
4 | #include "pgalloc_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/pgalloc.h b/arch/m68k/include/asm/pgalloc_mm.h index 4cb1a57ab763..4cb1a57ab763 100644 --- a/include/asm-m68k/pgalloc.h +++ b/arch/m68k/include/asm/pgalloc_mm.h | |||
diff --git a/arch/m68knommu/include/asm/pgalloc.h b/arch/m68k/include/asm/pgalloc_no.h index d6352f671ec0..d6352f671ec0 100644 --- a/arch/m68knommu/include/asm/pgalloc.h +++ b/arch/m68k/include/asm/pgalloc_no.h | |||
diff --git a/arch/m68k/include/asm/pgtable.h b/arch/m68k/include/asm/pgtable.h new file mode 100644 index 000000000000..ee6759eb445a --- /dev/null +++ b/arch/m68k/include/asm/pgtable.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "pgtable_no.h" | ||
3 | #else | ||
4 | #include "pgtable_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/pgtable.h b/arch/m68k/include/asm/pgtable_mm.h index 0b604f0f192d..0b604f0f192d 100644 --- a/include/asm-m68k/pgtable.h +++ b/arch/m68k/include/asm/pgtable_mm.h | |||
diff --git a/arch/m68knommu/include/asm/pgtable.h b/arch/m68k/include/asm/pgtable_no.h index 46251016e821..46251016e821 100644 --- a/arch/m68knommu/include/asm/pgtable.h +++ b/arch/m68k/include/asm/pgtable_no.h | |||
diff --git a/include/asm-m68k/poll.h b/arch/m68k/include/asm/poll.h index f080fcdb61bf..f080fcdb61bf 100644 --- a/include/asm-m68k/poll.h +++ b/arch/m68k/include/asm/poll.h | |||
diff --git a/include/asm-m68k/posix_types.h b/arch/m68k/include/asm/posix_types.h index 63cdcc142d93..63cdcc142d93 100644 --- a/include/asm-m68k/posix_types.h +++ b/arch/m68k/include/asm/posix_types.h | |||
diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h new file mode 100644 index 000000000000..fc3f2c22f2b8 --- /dev/null +++ b/arch/m68k/include/asm/processor.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "processor_no.h" | ||
3 | #else | ||
4 | #include "processor_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/processor.h b/arch/m68k/include/asm/processor_mm.h index 1f61ef53f0e0..1f61ef53f0e0 100644 --- a/include/asm-m68k/processor.h +++ b/arch/m68k/include/asm/processor_mm.h | |||
diff --git a/arch/m68knommu/include/asm/processor.h b/arch/m68k/include/asm/processor_no.h index 91cba18acdd3..91cba18acdd3 100644 --- a/arch/m68knommu/include/asm/processor.h +++ b/arch/m68k/include/asm/processor_no.h | |||
diff --git a/arch/m68k/include/asm/ptrace.h b/arch/m68k/include/asm/ptrace.h new file mode 100644 index 000000000000..e83cd2f66101 --- /dev/null +++ b/arch/m68k/include/asm/ptrace.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "ptrace_no.h" | ||
3 | #else | ||
4 | #include "ptrace_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/ptrace.h b/arch/m68k/include/asm/ptrace_mm.h index 57e763d79bf4..57e763d79bf4 100644 --- a/include/asm-m68k/ptrace.h +++ b/arch/m68k/include/asm/ptrace_mm.h | |||
diff --git a/arch/m68knommu/include/asm/ptrace.h b/arch/m68k/include/asm/ptrace_no.h index 8c9194b98548..8c9194b98548 100644 --- a/arch/m68knommu/include/asm/ptrace.h +++ b/arch/m68k/include/asm/ptrace_no.h | |||
diff --git a/include/asm-m68k/q40_master.h b/arch/m68k/include/asm/q40_master.h index 3907a09d4fca..3907a09d4fca 100644 --- a/include/asm-m68k/q40_master.h +++ b/arch/m68k/include/asm/q40_master.h | |||
diff --git a/include/asm-m68k/q40ints.h b/arch/m68k/include/asm/q40ints.h index 3d970afb708f..3d970afb708f 100644 --- a/include/asm-m68k/q40ints.h +++ b/arch/m68k/include/asm/q40ints.h | |||
diff --git a/arch/m68knommu/include/asm/quicc_simple.h b/arch/m68k/include/asm/quicc_simple.h index c3636932d4bc..c3636932d4bc 100644 --- a/arch/m68knommu/include/asm/quicc_simple.h +++ b/arch/m68k/include/asm/quicc_simple.h | |||
diff --git a/include/asm-m68k/raw_io.h b/arch/m68k/include/asm/raw_io.h index d9eb9834ccc8..d9eb9834ccc8 100644 --- a/include/asm-m68k/raw_io.h +++ b/arch/m68k/include/asm/raw_io.h | |||
diff --git a/include/asm-m68k/resource.h b/arch/m68k/include/asm/resource.h index e7d35019f337..e7d35019f337 100644 --- a/include/asm-m68k/resource.h +++ b/arch/m68k/include/asm/resource.h | |||
diff --git a/include/asm-m68k/rtc.h b/arch/m68k/include/asm/rtc.h index 5d3e03859844..5d3e03859844 100644 --- a/include/asm-m68k/rtc.h +++ b/arch/m68k/include/asm/rtc.h | |||
diff --git a/include/asm-m68k/sbus.h b/arch/m68k/include/asm/sbus.h index bfe3ba147f2e..bfe3ba147f2e 100644 --- a/include/asm-m68k/sbus.h +++ b/arch/m68k/include/asm/sbus.h | |||
diff --git a/arch/m68k/include/asm/scatterlist.h b/arch/m68k/include/asm/scatterlist.h new file mode 100644 index 000000000000..b7e528636252 --- /dev/null +++ b/arch/m68k/include/asm/scatterlist.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "scatterlist_no.h" | ||
3 | #else | ||
4 | #include "scatterlist_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/scatterlist.h b/arch/m68k/include/asm/scatterlist_mm.h index d3a7a0edfeca..d3a7a0edfeca 100644 --- a/include/asm-m68k/scatterlist.h +++ b/arch/m68k/include/asm/scatterlist_mm.h | |||
diff --git a/arch/m68knommu/include/asm/scatterlist.h b/arch/m68k/include/asm/scatterlist_no.h index afc4788b0d2c..afc4788b0d2c 100644 --- a/arch/m68knommu/include/asm/scatterlist.h +++ b/arch/m68k/include/asm/scatterlist_no.h | |||
diff --git a/include/asm-m68k/sections.h b/arch/m68k/include/asm/sections.h index d64967ecfec6..d64967ecfec6 100644 --- a/include/asm-m68k/sections.h +++ b/arch/m68k/include/asm/sections.h | |||
diff --git a/arch/m68k/include/asm/segment.h b/arch/m68k/include/asm/segment.h new file mode 100644 index 000000000000..82583bc004bd --- /dev/null +++ b/arch/m68k/include/asm/segment.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "segment_no.h" | ||
3 | #else | ||
4 | #include "segment_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/segment.h b/arch/m68k/include/asm/segment_mm.h index 7b0b2d3127f9..7b0b2d3127f9 100644 --- a/include/asm-m68k/segment.h +++ b/arch/m68k/include/asm/segment_mm.h | |||
diff --git a/arch/m68knommu/include/asm/segment.h b/arch/m68k/include/asm/segment_no.h index 42318ebec7ec..42318ebec7ec 100644 --- a/arch/m68knommu/include/asm/segment.h +++ b/arch/m68k/include/asm/segment_no.h | |||
diff --git a/include/asm-m68k/sembuf.h b/arch/m68k/include/asm/sembuf.h index 2308052a8c24..2308052a8c24 100644 --- a/include/asm-m68k/sembuf.h +++ b/arch/m68k/include/asm/sembuf.h | |||
diff --git a/include/asm-m68k/serial.h b/arch/m68k/include/asm/serial.h index 2b90d6e69070..2b90d6e69070 100644 --- a/include/asm-m68k/serial.h +++ b/arch/m68k/include/asm/serial.h | |||
diff --git a/arch/m68k/include/asm/setup.h b/arch/m68k/include/asm/setup.h new file mode 100644 index 000000000000..842f86f75ccd --- /dev/null +++ b/arch/m68k/include/asm/setup.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "setup_no.h" | ||
3 | #else | ||
4 | #include "setup_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/setup.h b/arch/m68k/include/asm/setup_mm.h index 4dfb3952b375..4dfb3952b375 100644 --- a/include/asm-m68k/setup.h +++ b/arch/m68k/include/asm/setup_mm.h | |||
diff --git a/arch/m68knommu/include/asm/setup.h b/arch/m68k/include/asm/setup_no.h index fb86bb2a6078..45d286ce9398 100644 --- a/arch/m68knommu/include/asm/setup.h +++ b/arch/m68k/include/asm/setup_no.h | |||
@@ -1,6 +1,6 @@ | |||
1 | #ifdef __KERNEL__ | 1 | #ifdef __KERNEL__ |
2 | 2 | ||
3 | #include <asm-m68k/setup.h> | 3 | #include <asm/setup_mm.h> |
4 | 4 | ||
5 | /* We have a bigger command line buffer. */ | 5 | /* We have a bigger command line buffer. */ |
6 | #undef COMMAND_LINE_SIZE | 6 | #undef COMMAND_LINE_SIZE |
diff --git a/include/asm-m68k/shm.h b/arch/m68k/include/asm/shm.h index fa56ec84a126..fa56ec84a126 100644 --- a/include/asm-m68k/shm.h +++ b/arch/m68k/include/asm/shm.h | |||
diff --git a/include/asm-m68k/shmbuf.h b/arch/m68k/include/asm/shmbuf.h index f8928d62f1b7..f8928d62f1b7 100644 --- a/include/asm-m68k/shmbuf.h +++ b/arch/m68k/include/asm/shmbuf.h | |||
diff --git a/include/asm-m68k/shmparam.h b/arch/m68k/include/asm/shmparam.h index 558892a2efb3..558892a2efb3 100644 --- a/include/asm-m68k/shmparam.h +++ b/arch/m68k/include/asm/shmparam.h | |||
diff --git a/arch/m68k/include/asm/sigcontext.h b/arch/m68k/include/asm/sigcontext.h new file mode 100644 index 000000000000..bff6d40345a9 --- /dev/null +++ b/arch/m68k/include/asm/sigcontext.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "sigcontext_no.h" | ||
3 | #else | ||
4 | #include "sigcontext_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/sigcontext.h b/arch/m68k/include/asm/sigcontext_mm.h index 64fbe34cf26f..64fbe34cf26f 100644 --- a/include/asm-m68k/sigcontext.h +++ b/arch/m68k/include/asm/sigcontext_mm.h | |||
diff --git a/arch/m68knommu/include/asm/sigcontext.h b/arch/m68k/include/asm/sigcontext_no.h index 36c293fc133d..36c293fc133d 100644 --- a/arch/m68knommu/include/asm/sigcontext.h +++ b/arch/m68k/include/asm/sigcontext_no.h | |||
diff --git a/arch/m68k/include/asm/siginfo.h b/arch/m68k/include/asm/siginfo.h new file mode 100644 index 000000000000..61219d7affc8 --- /dev/null +++ b/arch/m68k/include/asm/siginfo.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "siginfo_no.h" | ||
3 | #else | ||
4 | #include "siginfo_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/siginfo.h b/arch/m68k/include/asm/siginfo_mm.h index 05a8d6d90b58..05a8d6d90b58 100644 --- a/include/asm-m68k/siginfo.h +++ b/arch/m68k/include/asm/siginfo_mm.h | |||
diff --git a/arch/m68knommu/include/asm/siginfo.h b/arch/m68k/include/asm/siginfo_no.h index b18e5f4064ae..b18e5f4064ae 100644 --- a/arch/m68knommu/include/asm/siginfo.h +++ b/arch/m68k/include/asm/siginfo_no.h | |||
diff --git a/arch/m68k/include/asm/signal.h b/arch/m68k/include/asm/signal.h new file mode 100644 index 000000000000..3c19988bd93c --- /dev/null +++ b/arch/m68k/include/asm/signal.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "signal_no.h" | ||
3 | #else | ||
4 | #include "signal_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/signal.h b/arch/m68k/include/asm/signal_mm.h index 3db8a81942f1..3db8a81942f1 100644 --- a/include/asm-m68k/signal.h +++ b/arch/m68k/include/asm/signal_mm.h | |||
diff --git a/arch/m68knommu/include/asm/signal.h b/arch/m68k/include/asm/signal_no.h index 216c08be54a0..216c08be54a0 100644 --- a/arch/m68knommu/include/asm/signal.h +++ b/arch/m68k/include/asm/signal_no.h | |||
diff --git a/arch/m68knommu/include/asm/smp.h b/arch/m68k/include/asm/smp.h index 9e9bd7e58922..9e9bd7e58922 100644 --- a/arch/m68knommu/include/asm/smp.h +++ b/arch/m68k/include/asm/smp.h | |||
diff --git a/include/asm-m68k/socket.h b/arch/m68k/include/asm/socket.h index dbc64e92c41a..dbc64e92c41a 100644 --- a/include/asm-m68k/socket.h +++ b/arch/m68k/include/asm/socket.h | |||
diff --git a/include/asm-m68k/sockios.h b/arch/m68k/include/asm/sockios.h index c04a23943cb7..c04a23943cb7 100644 --- a/include/asm-m68k/sockios.h +++ b/arch/m68k/include/asm/sockios.h | |||
diff --git a/include/asm-m68k/spinlock.h b/arch/m68k/include/asm/spinlock.h index 20f46e27b534..20f46e27b534 100644 --- a/include/asm-m68k/spinlock.h +++ b/arch/m68k/include/asm/spinlock.h | |||
diff --git a/include/asm-m68k/stat.h b/arch/m68k/include/asm/stat.h index dd38bc2e9f98..dd38bc2e9f98 100644 --- a/include/asm-m68k/stat.h +++ b/arch/m68k/include/asm/stat.h | |||
diff --git a/include/asm-m68k/statfs.h b/arch/m68k/include/asm/statfs.h index 08d93f14e061..08d93f14e061 100644 --- a/include/asm-m68k/statfs.h +++ b/arch/m68k/include/asm/statfs.h | |||
diff --git a/arch/m68k/include/asm/string.h b/arch/m68k/include/asm/string.h new file mode 100644 index 000000000000..2c356f90f171 --- /dev/null +++ b/arch/m68k/include/asm/string.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "string_no.h" | ||
3 | #else | ||
4 | #include "string_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/string.h b/arch/m68k/include/asm/string_mm.h index 2eb7df1e0f5d..2eb7df1e0f5d 100644 --- a/include/asm-m68k/string.h +++ b/arch/m68k/include/asm/string_mm.h | |||
diff --git a/arch/m68knommu/include/asm/string.h b/arch/m68k/include/asm/string_no.h index af09e17000fc..af09e17000fc 100644 --- a/arch/m68knommu/include/asm/string.h +++ b/arch/m68k/include/asm/string_no.h | |||
diff --git a/include/asm-m68k/sun3-head.h b/arch/m68k/include/asm/sun3-head.h index 05af2f18b3bd..05af2f18b3bd 100644 --- a/include/asm-m68k/sun3-head.h +++ b/arch/m68k/include/asm/sun3-head.h | |||
diff --git a/include/asm-m68k/sun3_pgalloc.h b/arch/m68k/include/asm/sun3_pgalloc.h index d4c83f143816..d4c83f143816 100644 --- a/include/asm-m68k/sun3_pgalloc.h +++ b/arch/m68k/include/asm/sun3_pgalloc.h | |||
diff --git a/include/asm-m68k/sun3_pgtable.h b/arch/m68k/include/asm/sun3_pgtable.h index f847ec732d62..f847ec732d62 100644 --- a/include/asm-m68k/sun3_pgtable.h +++ b/arch/m68k/include/asm/sun3_pgtable.h | |||
diff --git a/include/asm-m68k/sun3ints.h b/arch/m68k/include/asm/sun3ints.h index 309d6e6a1374..309d6e6a1374 100644 --- a/include/asm-m68k/sun3ints.h +++ b/arch/m68k/include/asm/sun3ints.h | |||
diff --git a/include/asm-m68k/sun3mmu.h b/arch/m68k/include/asm/sun3mmu.h index d8f17a0d8c9f..d8f17a0d8c9f 100644 --- a/include/asm-m68k/sun3mmu.h +++ b/arch/m68k/include/asm/sun3mmu.h | |||
diff --git a/include/asm-m68k/sun3x.h b/arch/m68k/include/asm/sun3x.h index f5691a1ed7cc..f5691a1ed7cc 100644 --- a/include/asm-m68k/sun3x.h +++ b/arch/m68k/include/asm/sun3x.h | |||
diff --git a/include/asm-m68k/sun3xflop.h b/arch/m68k/include/asm/sun3xflop.h index 32c45f84ac60..32c45f84ac60 100644 --- a/include/asm-m68k/sun3xflop.h +++ b/arch/m68k/include/asm/sun3xflop.h | |||
diff --git a/include/asm-m68k/sun3xprom.h b/arch/m68k/include/asm/sun3xprom.h index 6735efcf5f6d..6735efcf5f6d 100644 --- a/include/asm-m68k/sun3xprom.h +++ b/arch/m68k/include/asm/sun3xprom.h | |||
diff --git a/include/asm-m68k/suspend.h b/arch/m68k/include/asm/suspend.h index 57b3ddb4d269..57b3ddb4d269 100644 --- a/include/asm-m68k/suspend.h +++ b/arch/m68k/include/asm/suspend.h | |||
diff --git a/arch/m68k/include/asm/swab.h b/arch/m68k/include/asm/swab.h new file mode 100644 index 000000000000..7d7dde1c73ec --- /dev/null +++ b/arch/m68k/include/asm/swab.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "swab_no.h" | ||
3 | #else | ||
4 | #include "swab_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/swab.h b/arch/m68k/include/asm/swab_mm.h index 7221e3066825..7221e3066825 100644 --- a/include/asm-m68k/swab.h +++ b/arch/m68k/include/asm/swab_mm.h | |||
diff --git a/arch/m68knommu/include/asm/swab.h b/arch/m68k/include/asm/swab_no.h index e582257db300..e582257db300 100644 --- a/arch/m68knommu/include/asm/swab.h +++ b/arch/m68k/include/asm/swab_no.h | |||
diff --git a/arch/m68k/include/asm/system.h b/arch/m68k/include/asm/system.h new file mode 100644 index 000000000000..ccea925ff4f5 --- /dev/null +++ b/arch/m68k/include/asm/system.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "system_no.h" | ||
3 | #else | ||
4 | #include "system_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/system.h b/arch/m68k/include/asm/system_mm.h index dbb6515ffd5b..dbb6515ffd5b 100644 --- a/include/asm-m68k/system.h +++ b/arch/m68k/include/asm/system_mm.h | |||
diff --git a/arch/m68knommu/include/asm/system.h b/arch/m68k/include/asm/system_no.h index 40f49de69821..40f49de69821 100644 --- a/arch/m68knommu/include/asm/system.h +++ b/arch/m68k/include/asm/system_no.h | |||
diff --git a/include/asm-m68k/termbits.h b/arch/m68k/include/asm/termbits.h index 8c14170996bb..8c14170996bb 100644 --- a/include/asm-m68k/termbits.h +++ b/arch/m68k/include/asm/termbits.h | |||
diff --git a/include/asm-m68k/termios.h b/arch/m68k/include/asm/termios.h index 0823032e4045..0823032e4045 100644 --- a/include/asm-m68k/termios.h +++ b/arch/m68k/include/asm/termios.h | |||
diff --git a/arch/m68k/include/asm/thread_info.h b/arch/m68k/include/asm/thread_info.h new file mode 100644 index 000000000000..f31a3f42b7b3 --- /dev/null +++ b/arch/m68k/include/asm/thread_info.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "thread_info_no.h" | ||
3 | #else | ||
4 | #include "thread_info_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/thread_info.h b/arch/m68k/include/asm/thread_info_mm.h index af0fda46e94b..af0fda46e94b 100644 --- a/include/asm-m68k/thread_info.h +++ b/arch/m68k/include/asm/thread_info_mm.h | |||
diff --git a/arch/m68knommu/include/asm/thread_info.h b/arch/m68k/include/asm/thread_info_no.h index 82529f424ea3..82529f424ea3 100644 --- a/arch/m68knommu/include/asm/thread_info.h +++ b/arch/m68k/include/asm/thread_info_no.h | |||
diff --git a/arch/m68k/include/asm/timex.h b/arch/m68k/include/asm/timex.h new file mode 100644 index 000000000000..719762980578 --- /dev/null +++ b/arch/m68k/include/asm/timex.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "timex_no.h" | ||
3 | #else | ||
4 | #include "timex_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/timex.h b/arch/m68k/include/asm/timex_mm.h index b87f2f278f67..b87f2f278f67 100644 --- a/include/asm-m68k/timex.h +++ b/arch/m68k/include/asm/timex_mm.h | |||
diff --git a/arch/m68knommu/include/asm/timex.h b/arch/m68k/include/asm/timex_no.h index 109050f3fe91..109050f3fe91 100644 --- a/arch/m68knommu/include/asm/timex.h +++ b/arch/m68k/include/asm/timex_no.h | |||
diff --git a/include/asm-m68k/tlb.h b/arch/m68k/include/asm/tlb.h index 1785cff73449..1785cff73449 100644 --- a/include/asm-m68k/tlb.h +++ b/arch/m68k/include/asm/tlb.h | |||
diff --git a/arch/m68k/include/asm/tlbflush.h b/arch/m68k/include/asm/tlbflush.h new file mode 100644 index 000000000000..b6f93b30951e --- /dev/null +++ b/arch/m68k/include/asm/tlbflush.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "tlbflush_no.h" | ||
3 | #else | ||
4 | #include "tlbflush_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/tlbflush.h b/arch/m68k/include/asm/tlbflush_mm.h index acb6bf21a321..acb6bf21a321 100644 --- a/include/asm-m68k/tlbflush.h +++ b/arch/m68k/include/asm/tlbflush_mm.h | |||
diff --git a/arch/m68knommu/include/asm/tlbflush.h b/arch/m68k/include/asm/tlbflush_no.h index a470cfb803eb..a470cfb803eb 100644 --- a/arch/m68knommu/include/asm/tlbflush.h +++ b/arch/m68k/include/asm/tlbflush_no.h | |||
diff --git a/arch/m68knommu/include/asm/topology.h b/arch/m68k/include/asm/topology.h index ca173e9f26ff..ca173e9f26ff 100644 --- a/arch/m68knommu/include/asm/topology.h +++ b/arch/m68k/include/asm/topology.h | |||
diff --git a/arch/m68k/include/asm/traps.h b/arch/m68k/include/asm/traps.h new file mode 100644 index 000000000000..3011ec0f5365 --- /dev/null +++ b/arch/m68k/include/asm/traps.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "traps_no.h" | ||
3 | #else | ||
4 | #include "traps_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/traps.h b/arch/m68k/include/asm/traps_mm.h index 8caef25624c7..8caef25624c7 100644 --- a/include/asm-m68k/traps.h +++ b/arch/m68k/include/asm/traps_mm.h | |||
diff --git a/arch/m68knommu/include/asm/traps.h b/arch/m68k/include/asm/traps_no.h index d0671e5f8e29..d0671e5f8e29 100644 --- a/arch/m68knommu/include/asm/traps.h +++ b/arch/m68k/include/asm/traps_no.h | |||
diff --git a/include/asm-m68k/types.h b/arch/m68k/include/asm/types.h index 6441cb5f8e7c..6441cb5f8e7c 100644 --- a/include/asm-m68k/types.h +++ b/arch/m68k/include/asm/types.h | |||
diff --git a/arch/m68k/include/asm/uaccess.h b/arch/m68k/include/asm/uaccess.h new file mode 100644 index 000000000000..38f92dbb9a45 --- /dev/null +++ b/arch/m68k/include/asm/uaccess.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "uaccess_no.h" | ||
3 | #else | ||
4 | #include "uaccess_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/uaccess.h b/arch/m68k/include/asm/uaccess_mm.h index 7107f3fbdbb6..7107f3fbdbb6 100644 --- a/include/asm-m68k/uaccess.h +++ b/arch/m68k/include/asm/uaccess_mm.h | |||
diff --git a/arch/m68knommu/include/asm/uaccess.h b/arch/m68k/include/asm/uaccess_no.h index 68bbe9b312f1..68bbe9b312f1 100644 --- a/arch/m68knommu/include/asm/uaccess.h +++ b/arch/m68k/include/asm/uaccess_no.h | |||
diff --git a/arch/m68k/include/asm/ucontext.h b/arch/m68k/include/asm/ucontext.h new file mode 100644 index 000000000000..b53cd160c0b3 --- /dev/null +++ b/arch/m68k/include/asm/ucontext.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "ucontext_no.h" | ||
3 | #else | ||
4 | #include "ucontext_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/ucontext.h b/arch/m68k/include/asm/ucontext_mm.h index e4e22669edc0..e4e22669edc0 100644 --- a/include/asm-m68k/ucontext.h +++ b/arch/m68k/include/asm/ucontext_mm.h | |||
diff --git a/arch/m68knommu/include/asm/ucontext.h b/arch/m68k/include/asm/ucontext_no.h index 713a27f901cd..713a27f901cd 100644 --- a/arch/m68knommu/include/asm/ucontext.h +++ b/arch/m68k/include/asm/ucontext_no.h | |||
diff --git a/arch/m68k/include/asm/unaligned.h b/arch/m68k/include/asm/unaligned.h new file mode 100644 index 000000000000..c640bba3bdf4 --- /dev/null +++ b/arch/m68k/include/asm/unaligned.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "unaligned_no.h" | ||
3 | #else | ||
4 | #include "unaligned_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/unaligned.h b/arch/m68k/include/asm/unaligned_mm.h index 77698f2dc33c..77698f2dc33c 100644 --- a/include/asm-m68k/unaligned.h +++ b/arch/m68k/include/asm/unaligned_mm.h | |||
diff --git a/arch/m68knommu/include/asm/unaligned.h b/arch/m68k/include/asm/unaligned_no.h index eb1ea4cb9a59..eb1ea4cb9a59 100644 --- a/arch/m68knommu/include/asm/unaligned.h +++ b/arch/m68k/include/asm/unaligned_no.h | |||
diff --git a/arch/m68k/include/asm/unistd.h b/arch/m68k/include/asm/unistd.h new file mode 100644 index 000000000000..df1d9d4cb1fd --- /dev/null +++ b/arch/m68k/include/asm/unistd.h | |||
@@ -0,0 +1,5 @@ | |||
1 | #ifdef __uClinux__ | ||
2 | #include "unistd_no.h" | ||
3 | #else | ||
4 | #include "unistd_mm.h" | ||
5 | #endif | ||
diff --git a/include/asm-m68k/unistd.h b/arch/m68k/include/asm/unistd_mm.h index 3c19027331fa..3c19027331fa 100644 --- a/include/asm-m68k/unistd.h +++ b/arch/m68k/include/asm/unistd_mm.h | |||
diff --git a/arch/m68knommu/include/asm/unistd.h b/arch/m68k/include/asm/unistd_no.h index b034a2f7b444..b034a2f7b444 100644 --- a/arch/m68knommu/include/asm/unistd.h +++ b/arch/m68k/include/asm/unistd_no.h | |||
diff --git a/include/asm-m68k/user.h b/arch/m68k/include/asm/user.h index f1f478d6e050..f1f478d6e050 100644 --- a/include/asm-m68k/user.h +++ b/arch/m68k/include/asm/user.h | |||
diff --git a/include/asm-m68k/virtconvert.h b/arch/m68k/include/asm/virtconvert.h index 22ab05c9c52b..22ab05c9c52b 100644 --- a/include/asm-m68k/virtconvert.h +++ b/arch/m68k/include/asm/virtconvert.h | |||
diff --git a/include/asm-m68k/xor.h b/arch/m68k/include/asm/xor.h index c82eb12a5b18..c82eb12a5b18 100644 --- a/include/asm-m68k/xor.h +++ b/arch/m68k/include/asm/xor.h | |||
diff --git a/include/asm-m68k/zorro.h b/arch/m68k/include/asm/zorro.h index 5ce97c22b582..5ce97c22b582 100644 --- a/include/asm-m68k/zorro.h +++ b/arch/m68k/include/asm/zorro.h | |||
diff --git a/arch/m68knommu/include/asm/Kbuild b/arch/m68knommu/include/asm/Kbuild deleted file mode 100644 index c68e1680da01..000000000000 --- a/arch/m68knommu/include/asm/Kbuild +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | include include/asm-generic/Kbuild.asm | ||
diff --git a/arch/m68knommu/include/asm/byteorder.h b/arch/m68knommu/include/asm/byteorder.h deleted file mode 100644 index 9c6c76a15041..000000000000 --- a/arch/m68knommu/include/asm/byteorder.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef _M68KNOMMU_BYTEORDER_H | ||
2 | #define _M68KNOMMU_BYTEORDER_H | ||
3 | |||
4 | #include <linux/byteorder/big_endian.h> | ||
5 | |||
6 | #endif /* _M68KNOMMU_BYTEORDER_H */ | ||
diff --git a/arch/m68knommu/include/asm/cachectl.h b/arch/m68knommu/include/asm/cachectl.h deleted file mode 100644 index bcf5a6a9dd52..000000000000 --- a/arch/m68knommu/include/asm/cachectl.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/cachectl.h> | ||
diff --git a/arch/m68knommu/include/asm/cputime.h b/arch/m68knommu/include/asm/cputime.h deleted file mode 100644 index a0c4a660878d..000000000000 --- a/arch/m68knommu/include/asm/cputime.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __M68KNOMMU_CPUTIME_H | ||
2 | #define __M68KNOMMU_CPUTIME_H | ||
3 | |||
4 | #include <asm-generic/cputime.h> | ||
5 | |||
6 | #endif /* __M68KNOMMU_CPUTIME_H */ | ||
diff --git a/arch/m68knommu/include/asm/errno.h b/arch/m68knommu/include/asm/errno.h deleted file mode 100644 index 7e8c22b9a5e6..000000000000 --- a/arch/m68knommu/include/asm/errno.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/errno.h> | ||
diff --git a/arch/m68knommu/include/asm/fcntl.h b/arch/m68knommu/include/asm/fcntl.h deleted file mode 100644 index f6a552cda4cd..000000000000 --- a/arch/m68knommu/include/asm/fcntl.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/fcntl.h> | ||
diff --git a/arch/m68knommu/include/asm/hwtest.h b/arch/m68knommu/include/asm/hwtest.h deleted file mode 100644 index 700626a1b1bf..000000000000 --- a/arch/m68knommu/include/asm/hwtest.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/hwtest.h> | ||
diff --git a/arch/m68knommu/include/asm/ioctls.h b/arch/m68knommu/include/asm/ioctls.h deleted file mode 100644 index 0b1eb4d85059..000000000000 --- a/arch/m68knommu/include/asm/ioctls.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/ioctls.h> | ||
diff --git a/arch/m68knommu/include/asm/ipcbuf.h b/arch/m68knommu/include/asm/ipcbuf.h deleted file mode 100644 index e4a7be6dd706..000000000000 --- a/arch/m68knommu/include/asm/ipcbuf.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/ipcbuf.h> | ||
diff --git a/arch/m68knommu/include/asm/linkage.h b/arch/m68knommu/include/asm/linkage.h deleted file mode 100644 index c288a19ff489..000000000000 --- a/arch/m68knommu/include/asm/linkage.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/linkage.h> | ||
diff --git a/arch/m68knommu/include/asm/local.h b/arch/m68knommu/include/asm/local.h deleted file mode 100644 index 84a39c1b86f8..000000000000 --- a/arch/m68knommu/include/asm/local.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __M68KNOMMU_LOCAL_H | ||
2 | #define __M68KNOMMU_LOCAL_H | ||
3 | |||
4 | #include <asm-generic/local.h> | ||
5 | |||
6 | #endif /* __M68KNOMMU_LOCAL_H */ | ||
diff --git a/arch/m68knommu/include/asm/math-emu.h b/arch/m68knommu/include/asm/math-emu.h deleted file mode 100644 index 7e7090517b72..000000000000 --- a/arch/m68knommu/include/asm/math-emu.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/math-emu.h> | ||
diff --git a/arch/m68knommu/include/asm/md.h b/arch/m68knommu/include/asm/md.h deleted file mode 100644 index d810c78de5ff..000000000000 --- a/arch/m68knommu/include/asm/md.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/md.h> | ||
diff --git a/arch/m68knommu/include/asm/mman.h b/arch/m68knommu/include/asm/mman.h deleted file mode 100644 index 4846c682efed..000000000000 --- a/arch/m68knommu/include/asm/mman.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/mman.h> | ||
diff --git a/arch/m68knommu/include/asm/movs.h b/arch/m68knommu/include/asm/movs.h deleted file mode 100644 index 81a16779e833..000000000000 --- a/arch/m68knommu/include/asm/movs.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/movs.h> | ||
diff --git a/arch/m68knommu/include/asm/msgbuf.h b/arch/m68knommu/include/asm/msgbuf.h deleted file mode 100644 index bdfadec4d52d..000000000000 --- a/arch/m68knommu/include/asm/msgbuf.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/msgbuf.h> | ||
diff --git a/arch/m68knommu/include/asm/openprom.h b/arch/m68knommu/include/asm/openprom.h deleted file mode 100644 index fdba7953ff9f..000000000000 --- a/arch/m68knommu/include/asm/openprom.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/openprom.h> | ||
diff --git a/arch/m68knommu/include/asm/oplib.h b/arch/m68knommu/include/asm/oplib.h deleted file mode 100644 index ce079dc332d9..000000000000 --- a/arch/m68knommu/include/asm/oplib.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/oplib.h> | ||
diff --git a/arch/m68knommu/include/asm/percpu.h b/arch/m68knommu/include/asm/percpu.h deleted file mode 100644 index 5de72c327efd..000000000000 --- a/arch/m68knommu/include/asm/percpu.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __ARCH_M68KNOMMU_PERCPU__ | ||
2 | #define __ARCH_M68KNOMMU_PERCPU__ | ||
3 | |||
4 | #include <asm-generic/percpu.h> | ||
5 | |||
6 | #endif /* __ARCH_M68KNOMMU_PERCPU__ */ | ||
diff --git a/arch/m68knommu/include/asm/poll.h b/arch/m68knommu/include/asm/poll.h deleted file mode 100644 index ee1b6cb549ca..000000000000 --- a/arch/m68knommu/include/asm/poll.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/poll.h> | ||
diff --git a/arch/m68knommu/include/asm/posix_types.h b/arch/m68knommu/include/asm/posix_types.h deleted file mode 100644 index 6205fb9392a3..000000000000 --- a/arch/m68knommu/include/asm/posix_types.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/posix_types.h> | ||
diff --git a/arch/m68knommu/include/asm/resource.h b/arch/m68knommu/include/asm/resource.h deleted file mode 100644 index 7fa63d5ea576..000000000000 --- a/arch/m68knommu/include/asm/resource.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/resource.h> | ||
diff --git a/arch/m68knommu/include/asm/rtc.h b/arch/m68knommu/include/asm/rtc.h deleted file mode 100644 index eaf18ec83c8e..000000000000 --- a/arch/m68knommu/include/asm/rtc.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/rtc.h> | ||
diff --git a/arch/m68knommu/include/asm/sections.h b/arch/m68knommu/include/asm/sections.h deleted file mode 100644 index dd0ecb98ec08..000000000000 --- a/arch/m68knommu/include/asm/sections.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | #ifndef _M68KNOMMU_SECTIONS_H | ||
2 | #define _M68KNOMMU_SECTIONS_H | ||
3 | |||
4 | /* nothing to see, move along */ | ||
5 | #include <asm-generic/sections.h> | ||
6 | |||
7 | #endif | ||
diff --git a/arch/m68knommu/include/asm/sembuf.h b/arch/m68knommu/include/asm/sembuf.h deleted file mode 100644 index 3a634f9ecf50..000000000000 --- a/arch/m68knommu/include/asm/sembuf.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/sembuf.h> | ||
diff --git a/arch/m68knommu/include/asm/shm.h b/arch/m68knommu/include/asm/shm.h deleted file mode 100644 index cc8e522d9050..000000000000 --- a/arch/m68knommu/include/asm/shm.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/shm.h> | ||
diff --git a/arch/m68knommu/include/asm/shmbuf.h b/arch/m68knommu/include/asm/shmbuf.h deleted file mode 100644 index bc34cf8eefce..000000000000 --- a/arch/m68knommu/include/asm/shmbuf.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/shmbuf.h> | ||
diff --git a/arch/m68knommu/include/asm/shmparam.h b/arch/m68knommu/include/asm/shmparam.h deleted file mode 100644 index d7ee69648ebf..000000000000 --- a/arch/m68knommu/include/asm/shmparam.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/shmparam.h> | ||
diff --git a/arch/m68knommu/include/asm/socket.h b/arch/m68knommu/include/asm/socket.h deleted file mode 100644 index ac5478bf6371..000000000000 --- a/arch/m68knommu/include/asm/socket.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/socket.h> | ||
diff --git a/arch/m68knommu/include/asm/sockios.h b/arch/m68knommu/include/asm/sockios.h deleted file mode 100644 index dcc6a8900ce2..000000000000 --- a/arch/m68knommu/include/asm/sockios.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/sockios.h> | ||
diff --git a/arch/m68knommu/include/asm/spinlock.h b/arch/m68knommu/include/asm/spinlock.h deleted file mode 100644 index 6bb1f06c4781..000000000000 --- a/arch/m68knommu/include/asm/spinlock.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/spinlock.h> | ||
diff --git a/arch/m68knommu/include/asm/stat.h b/arch/m68knommu/include/asm/stat.h deleted file mode 100644 index 3d4b260e7c03..000000000000 --- a/arch/m68knommu/include/asm/stat.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/stat.h> | ||
diff --git a/arch/m68knommu/include/asm/statfs.h b/arch/m68knommu/include/asm/statfs.h deleted file mode 100644 index 2ce99eaf0970..000000000000 --- a/arch/m68knommu/include/asm/statfs.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/statfs.h> | ||
diff --git a/arch/m68knommu/include/asm/termbits.h b/arch/m68knommu/include/asm/termbits.h deleted file mode 100644 index 05dd6bc27285..000000000000 --- a/arch/m68knommu/include/asm/termbits.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/termbits.h> | ||
diff --git a/arch/m68knommu/include/asm/termios.h b/arch/m68knommu/include/asm/termios.h deleted file mode 100644 index e7337881a985..000000000000 --- a/arch/m68knommu/include/asm/termios.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/termios.h> | ||
diff --git a/arch/m68knommu/include/asm/tlb.h b/arch/m68knommu/include/asm/tlb.h deleted file mode 100644 index 77a7c51ca299..000000000000 --- a/arch/m68knommu/include/asm/tlb.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/tlb.h> | ||
diff --git a/arch/m68knommu/include/asm/types.h b/arch/m68knommu/include/asm/types.h deleted file mode 100644 index 031238c2d180..000000000000 --- a/arch/m68knommu/include/asm/types.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/types.h> | ||
diff --git a/arch/m68knommu/include/asm/user.h b/arch/m68knommu/include/asm/user.h deleted file mode 100644 index a5a555b761c4..000000000000 --- a/arch/m68knommu/include/asm/user.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/user.h> | ||
diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_defconfig index a3bbbf067a3b..783da855a2e3 100644 --- a/arch/mips/configs/bigsur_defconfig +++ b/arch/mips/configs/bigsur_defconfig | |||
@@ -959,7 +959,7 @@ CONFIG_I2C_SIBYTE=y | |||
959 | # Miscellaneous I2C Chip support | 959 | # Miscellaneous I2C Chip support |
960 | # | 960 | # |
961 | # CONFIG_DS1682 is not set | 961 | # CONFIG_DS1682 is not set |
962 | CONFIG_SENSORS_EEPROM=y | 962 | CONFIG_EEPROM_LEGACY=y |
963 | CONFIG_SENSORS_PCF8574=y | 963 | CONFIG_SENSORS_PCF8574=y |
964 | # CONFIG_PCF8575 is not set | 964 | # CONFIG_PCF8575 is not set |
965 | CONFIG_SENSORS_PCF8591=y | 965 | CONFIG_SENSORS_PCF8591=y |
diff --git a/arch/mips/configs/emma2rh_defconfig b/arch/mips/configs/emma2rh_defconfig index 634bb4eaf132..fea9bc9865a3 100644 --- a/arch/mips/configs/emma2rh_defconfig +++ b/arch/mips/configs/emma2rh_defconfig | |||
@@ -996,7 +996,7 @@ CONFIG_I2C_CHARDEV=y | |||
996 | # | 996 | # |
997 | # CONFIG_SENSORS_DS1337 is not set | 997 | # CONFIG_SENSORS_DS1337 is not set |
998 | # CONFIG_SENSORS_DS1374 is not set | 998 | # CONFIG_SENSORS_DS1374 is not set |
999 | # CONFIG_SENSORS_EEPROM is not set | 999 | # CONFIG_EEPROM_LEGACY is not set |
1000 | # CONFIG_SENSORS_PCF8574 is not set | 1000 | # CONFIG_SENSORS_PCF8574 is not set |
1001 | # CONFIG_SENSORS_PCA9539 is not set | 1001 | # CONFIG_SENSORS_PCA9539 is not set |
1002 | # CONFIG_SENSORS_PCF8591 is not set | 1002 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/mips/configs/fulong_defconfig b/arch/mips/configs/fulong_defconfig index b6698a232ae9..786a9bc9a696 100644 --- a/arch/mips/configs/fulong_defconfig +++ b/arch/mips/configs/fulong_defconfig | |||
@@ -1006,8 +1006,8 @@ CONFIG_I2C_VIAPRO=m | |||
1006 | # Miscellaneous I2C Chip support | 1006 | # Miscellaneous I2C Chip support |
1007 | # | 1007 | # |
1008 | # CONFIG_DS1682 is not set | 1008 | # CONFIG_DS1682 is not set |
1009 | # CONFIG_AT24 is not set | 1009 | # CONFIG_EEPROM_AT24 is not set |
1010 | # CONFIG_SENSORS_EEPROM is not set | 1010 | # CONFIG_EEPROM_LEGACY is not set |
1011 | # CONFIG_SENSORS_PCF8574 is not set | 1011 | # CONFIG_SENSORS_PCF8574 is not set |
1012 | # CONFIG_PCF8575 is not set | 1012 | # CONFIG_PCF8575 is not set |
1013 | # CONFIG_SENSORS_PCA9539 is not set | 1013 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/mips/configs/msp71xx_defconfig b/arch/mips/configs/msp71xx_defconfig index dd13db4d0fb9..84d6491b3d41 100644 --- a/arch/mips/configs/msp71xx_defconfig +++ b/arch/mips/configs/msp71xx_defconfig | |||
@@ -929,7 +929,7 @@ CONFIG_I2C_PMCMSP=y | |||
929 | # | 929 | # |
930 | # CONFIG_SENSORS_DS1337 is not set | 930 | # CONFIG_SENSORS_DS1337 is not set |
931 | # CONFIG_SENSORS_DS1374 is not set | 931 | # CONFIG_SENSORS_DS1374 is not set |
932 | # CONFIG_SENSORS_EEPROM is not set | 932 | # CONFIG_EEPROM_LEGACY is not set |
933 | # CONFIG_SENSORS_PCF8574 is not set | 933 | # CONFIG_SENSORS_PCF8574 is not set |
934 | CONFIG_PMCTWILED=y | 934 | CONFIG_PMCTWILED=y |
935 | # CONFIG_SENSORS_PCA9539 is not set | 935 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/mips/configs/mtx1_defconfig b/arch/mips/configs/mtx1_defconfig index db9272677aa2..8426d3b9501c 100644 --- a/arch/mips/configs/mtx1_defconfig +++ b/arch/mips/configs/mtx1_defconfig | |||
@@ -1845,7 +1845,7 @@ CONFIG_I2C_VOODOO3=m | |||
1845 | CONFIG_SENSORS_DS1337=m | 1845 | CONFIG_SENSORS_DS1337=m |
1846 | CONFIG_SENSORS_DS1374=m | 1846 | CONFIG_SENSORS_DS1374=m |
1847 | # CONFIG_DS1682 is not set | 1847 | # CONFIG_DS1682 is not set |
1848 | CONFIG_SENSORS_EEPROM=m | 1848 | CONFIG_EEPROM_LEGACY=m |
1849 | CONFIG_SENSORS_PCF8574=m | 1849 | CONFIG_SENSORS_PCF8574=m |
1850 | CONFIG_SENSORS_PCA9539=m | 1850 | CONFIG_SENSORS_PCA9539=m |
1851 | CONFIG_SENSORS_PCF8591=m | 1851 | CONFIG_SENSORS_PCF8591=m |
@@ -1872,7 +1872,7 @@ CONFIG_SPI_BUTTERFLY=m | |||
1872 | # | 1872 | # |
1873 | # SPI Protocol Masters | 1873 | # SPI Protocol Masters |
1874 | # | 1874 | # |
1875 | # CONFIG_SPI_AT25 is not set | 1875 | # CONFIG_EEPROM_AT25 is not set |
1876 | # CONFIG_SPI_SPIDEV is not set | 1876 | # CONFIG_SPI_SPIDEV is not set |
1877 | # CONFIG_SPI_TLE62X0 is not set | 1877 | # CONFIG_SPI_TLE62X0 is not set |
1878 | CONFIG_W1=m | 1878 | CONFIG_W1=m |
diff --git a/arch/mips/configs/pnx8335-stb225_defconfig b/arch/mips/configs/pnx8335-stb225_defconfig index d9536522cff5..2728caa6c2fb 100644 --- a/arch/mips/configs/pnx8335-stb225_defconfig +++ b/arch/mips/configs/pnx8335-stb225_defconfig | |||
@@ -640,8 +640,8 @@ CONFIG_I2C_CHARDEV=y | |||
640 | # Miscellaneous I2C Chip support | 640 | # Miscellaneous I2C Chip support |
641 | # | 641 | # |
642 | # CONFIG_DS1682 is not set | 642 | # CONFIG_DS1682 is not set |
643 | # CONFIG_AT24 is not set | 643 | # CONFIG_EEPROM_AT24 is not set |
644 | # CONFIG_SENSORS_EEPROM is not set | 644 | # CONFIG_EEPROM_LEGACY is not set |
645 | # CONFIG_SENSORS_PCF8574 is not set | 645 | # CONFIG_SENSORS_PCF8574 is not set |
646 | # CONFIG_PCF8575 is not set | 646 | # CONFIG_PCF8575 is not set |
647 | # CONFIG_SENSORS_PCA9539 is not set | 647 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/mips/configs/rbtx49xx_defconfig b/arch/mips/configs/rbtx49xx_defconfig index c7c0864b8ce9..83d5c58662c8 100644 --- a/arch/mips/configs/rbtx49xx_defconfig +++ b/arch/mips/configs/rbtx49xx_defconfig | |||
@@ -522,7 +522,7 @@ CONFIG_SPI_TXX9=y | |||
522 | # | 522 | # |
523 | # SPI Protocol Masters | 523 | # SPI Protocol Masters |
524 | # | 524 | # |
525 | CONFIG_SPI_AT25=y | 525 | CONFIG_EEPROM_AT25=y |
526 | # CONFIG_SPI_TLE62X0 is not set | 526 | # CONFIG_SPI_TLE62X0 is not set |
527 | CONFIG_HAVE_GPIO_LIB=y | 527 | CONFIG_HAVE_GPIO_LIB=y |
528 | 528 | ||
diff --git a/arch/powerpc/configs/44x/sam440ep_defconfig b/arch/powerpc/configs/44x/sam440ep_defconfig index 15f48e03ec2e..ce28cd6f0d4f 100644 --- a/arch/powerpc/configs/44x/sam440ep_defconfig +++ b/arch/powerpc/configs/44x/sam440ep_defconfig | |||
@@ -730,8 +730,8 @@ CONFIG_I2C_IBM_IIC=y | |||
730 | # Miscellaneous I2C Chip support | 730 | # Miscellaneous I2C Chip support |
731 | # | 731 | # |
732 | # CONFIG_DS1682 is not set | 732 | # CONFIG_DS1682 is not set |
733 | # CONFIG_AT24 is not set | 733 | # CONFIG_EEPROM_AT24 is not set |
734 | # CONFIG_SENSORS_EEPROM is not set | 734 | # CONFIG_EEPROM_LEGACY is not set |
735 | # CONFIG_SENSORS_PCF8574 is not set | 735 | # CONFIG_SENSORS_PCF8574 is not set |
736 | # CONFIG_PCF8575 is not set | 736 | # CONFIG_PCF8575 is not set |
737 | # CONFIG_SENSORS_PCA9539 is not set | 737 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/44x/warp_defconfig b/arch/powerpc/configs/44x/warp_defconfig index 59cbd2761ed7..031ac6d4212f 100644 --- a/arch/powerpc/configs/44x/warp_defconfig +++ b/arch/powerpc/configs/44x/warp_defconfig | |||
@@ -660,8 +660,8 @@ CONFIG_I2C_HELPER_AUTO=y | |||
660 | # Miscellaneous I2C Chip support | 660 | # Miscellaneous I2C Chip support |
661 | # | 661 | # |
662 | # CONFIG_DS1682 is not set | 662 | # CONFIG_DS1682 is not set |
663 | # CONFIG_AT24 is not set | 663 | # CONFIG_EEPROM_AT24 is not set |
664 | CONFIG_SENSORS_EEPROM=y | 664 | CONFIG_EEPROM_LEGACY=y |
665 | # CONFIG_SENSORS_PCF8574 is not set | 665 | # CONFIG_SENSORS_PCF8574 is not set |
666 | # CONFIG_PCF8575 is not set | 666 | # CONFIG_PCF8575 is not set |
667 | # CONFIG_SENSORS_PCA9539 is not set | 667 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/52xx/cm5200_defconfig b/arch/powerpc/configs/52xx/cm5200_defconfig index 3df627494b65..99c495ad9c75 100644 --- a/arch/powerpc/configs/52xx/cm5200_defconfig +++ b/arch/powerpc/configs/52xx/cm5200_defconfig | |||
@@ -629,8 +629,8 @@ CONFIG_I2C_MPC=y | |||
629 | # Miscellaneous I2C Chip support | 629 | # Miscellaneous I2C Chip support |
630 | # | 630 | # |
631 | # CONFIG_DS1682 is not set | 631 | # CONFIG_DS1682 is not set |
632 | # CONFIG_AT24 is not set | 632 | # CONFIG_EEPROM_AT24 is not set |
633 | # CONFIG_SENSORS_EEPROM is not set | 633 | # CONFIG_EEPROM_LEGACY is not set |
634 | # CONFIG_SENSORS_PCF8574 is not set | 634 | # CONFIG_SENSORS_PCF8574 is not set |
635 | # CONFIG_PCF8575 is not set | 635 | # CONFIG_PCF8575 is not set |
636 | # CONFIG_SENSORS_PCA9539 is not set | 636 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/52xx/lite5200b_defconfig b/arch/powerpc/configs/52xx/lite5200b_defconfig index 5b969f9c925e..9796220032fd 100644 --- a/arch/powerpc/configs/52xx/lite5200b_defconfig +++ b/arch/powerpc/configs/52xx/lite5200b_defconfig | |||
@@ -762,8 +762,8 @@ CONFIG_I2C_MPC=y | |||
762 | # Miscellaneous I2C Chip support | 762 | # Miscellaneous I2C Chip support |
763 | # | 763 | # |
764 | # CONFIG_DS1682 is not set | 764 | # CONFIG_DS1682 is not set |
765 | # CONFIG_AT24 is not set | 765 | # CONFIG_EEPROM_AT24 is not set |
766 | # CONFIG_SENSORS_EEPROM is not set | 766 | # CONFIG_EEPROM_LEGACY is not set |
767 | # CONFIG_SENSORS_PCF8574 is not set | 767 | # CONFIG_SENSORS_PCF8574 is not set |
768 | # CONFIG_PCF8575 is not set | 768 | # CONFIG_PCF8575 is not set |
769 | # CONFIG_SENSORS_PCA9539 is not set | 769 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/52xx/motionpro_defconfig b/arch/powerpc/configs/52xx/motionpro_defconfig index 3c0d4e561726..d081e0031057 100644 --- a/arch/powerpc/configs/52xx/motionpro_defconfig +++ b/arch/powerpc/configs/52xx/motionpro_defconfig | |||
@@ -629,8 +629,8 @@ CONFIG_I2C_MPC=y | |||
629 | # Miscellaneous I2C Chip support | 629 | # Miscellaneous I2C Chip support |
630 | # | 630 | # |
631 | # CONFIG_DS1682 is not set | 631 | # CONFIG_DS1682 is not set |
632 | # CONFIG_AT24 is not set | 632 | # CONFIG_EEPROM_AT24 is not set |
633 | CONFIG_SENSORS_EEPROM=y | 633 | CONFIG_EEPROM_LEGACY=y |
634 | # CONFIG_SENSORS_PCF8574 is not set | 634 | # CONFIG_SENSORS_PCF8574 is not set |
635 | # CONFIG_PCF8575 is not set | 635 | # CONFIG_PCF8575 is not set |
636 | # CONFIG_SENSORS_PCA9539 is not set | 636 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/52xx/pcm030_defconfig b/arch/powerpc/configs/52xx/pcm030_defconfig index 9d0207783d60..b21b8e8c3a78 100644 --- a/arch/powerpc/configs/52xx/pcm030_defconfig +++ b/arch/powerpc/configs/52xx/pcm030_defconfig | |||
@@ -740,8 +740,8 @@ CONFIG_I2C_MPC=y | |||
740 | # Miscellaneous I2C Chip support | 740 | # Miscellaneous I2C Chip support |
741 | # | 741 | # |
742 | # CONFIG_DS1682 is not set | 742 | # CONFIG_DS1682 is not set |
743 | # CONFIG_AT24 is not set | 743 | # CONFIG_EEPROM_AT24 is not set |
744 | CONFIG_SENSORS_EEPROM=m | 744 | CONFIG_EEPROM_LEGACY=m |
745 | # CONFIG_SENSORS_PCF8574 is not set | 745 | # CONFIG_SENSORS_PCF8574 is not set |
746 | # CONFIG_PCF8575 is not set | 746 | # CONFIG_PCF8575 is not set |
747 | # CONFIG_SENSORS_PCA9539 is not set | 747 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/52xx/tqm5200_defconfig b/arch/powerpc/configs/52xx/tqm5200_defconfig index bc190051e8d5..79954579f5ec 100644 --- a/arch/powerpc/configs/52xx/tqm5200_defconfig +++ b/arch/powerpc/configs/52xx/tqm5200_defconfig | |||
@@ -645,8 +645,8 @@ CONFIG_I2C_MPC=y | |||
645 | # Miscellaneous I2C Chip support | 645 | # Miscellaneous I2C Chip support |
646 | # | 646 | # |
647 | # CONFIG_DS1682 is not set | 647 | # CONFIG_DS1682 is not set |
648 | # CONFIG_AT24 is not set | 648 | # CONFIG_EEPROM_AT24 is not set |
649 | # CONFIG_SENSORS_EEPROM is not set | 649 | # CONFIG_EEPROM_LEGACY is not set |
650 | # CONFIG_SENSORS_PCF8574 is not set | 650 | # CONFIG_SENSORS_PCF8574 is not set |
651 | # CONFIG_PCF8575 is not set | 651 | # CONFIG_PCF8575 is not set |
652 | # CONFIG_SENSORS_PCA9539 is not set | 652 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/83xx/asp8347_defconfig b/arch/powerpc/configs/83xx/asp8347_defconfig index cbecaf3d7906..b3d9d1a8dfaf 100644 --- a/arch/powerpc/configs/83xx/asp8347_defconfig +++ b/arch/powerpc/configs/83xx/asp8347_defconfig | |||
@@ -732,8 +732,8 @@ CONFIG_I2C_MPC=y | |||
732 | # Miscellaneous I2C Chip support | 732 | # Miscellaneous I2C Chip support |
733 | # | 733 | # |
734 | # CONFIG_DS1682 is not set | 734 | # CONFIG_DS1682 is not set |
735 | # CONFIG_AT24 is not set | 735 | # CONFIG_EEPROM_AT24 is not set |
736 | # CONFIG_SENSORS_EEPROM is not set | 736 | # CONFIG_EEPROM_LEGACY is not set |
737 | # CONFIG_SENSORS_PCF8574 is not set | 737 | # CONFIG_SENSORS_PCF8574 is not set |
738 | # CONFIG_PCF8575 is not set | 738 | # CONFIG_PCF8575 is not set |
739 | # CONFIG_SENSORS_PCA9539 is not set | 739 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig index bfc32ea265a7..6293bb99b52e 100644 --- a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig | |||
@@ -858,8 +858,8 @@ CONFIG_I2C_MPC=y | |||
858 | # Miscellaneous I2C Chip support | 858 | # Miscellaneous I2C Chip support |
859 | # | 859 | # |
860 | # CONFIG_DS1682 is not set | 860 | # CONFIG_DS1682 is not set |
861 | # CONFIG_AT24 is not set | 861 | # CONFIG_EEPROM_AT24 is not set |
862 | # CONFIG_SENSORS_EEPROM is not set | 862 | # CONFIG_EEPROM_LEGACY is not set |
863 | # CONFIG_SENSORS_PCF8574 is not set | 863 | # CONFIG_SENSORS_PCF8574 is not set |
864 | # CONFIG_PCF8575 is not set | 864 | # CONFIG_PCF8575 is not set |
865 | # CONFIG_SENSORS_PCA9539 is not set | 865 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -884,7 +884,7 @@ CONFIG_SPI_MPC83xx=y | |||
884 | # | 884 | # |
885 | # SPI Protocol Masters | 885 | # SPI Protocol Masters |
886 | # | 886 | # |
887 | # CONFIG_SPI_AT25 is not set | 887 | # CONFIG_EEPROM_AT25 is not set |
888 | # CONFIG_SPI_SPIDEV is not set | 888 | # CONFIG_SPI_SPIDEV is not set |
889 | # CONFIG_SPI_TLE62X0 is not set | 889 | # CONFIG_SPI_TLE62X0 is not set |
890 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 890 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig index aad0e1a98c55..c7cceb4536d8 100644 --- a/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig | |||
@@ -919,8 +919,8 @@ CONFIG_I2C_MPC=y | |||
919 | # Miscellaneous I2C Chip support | 919 | # Miscellaneous I2C Chip support |
920 | # | 920 | # |
921 | # CONFIG_DS1682 is not set | 921 | # CONFIG_DS1682 is not set |
922 | # CONFIG_AT24 is not set | 922 | # CONFIG_EEPROM_AT24 is not set |
923 | # CONFIG_SENSORS_EEPROM is not set | 923 | # CONFIG_EEPROM_LEGACY is not set |
924 | # CONFIG_SENSORS_PCF8574 is not set | 924 | # CONFIG_SENSORS_PCF8574 is not set |
925 | # CONFIG_PCF8575 is not set | 925 | # CONFIG_PCF8575 is not set |
926 | # CONFIG_SENSORS_PCA9539 is not set | 926 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -945,7 +945,7 @@ CONFIG_SPI_MPC83xx=y | |||
945 | # | 945 | # |
946 | # SPI Protocol Masters | 946 | # SPI Protocol Masters |
947 | # | 947 | # |
948 | # CONFIG_SPI_AT25 is not set | 948 | # CONFIG_EEPROM_AT25 is not set |
949 | # CONFIG_SPI_SPIDEV is not set | 949 | # CONFIG_SPI_SPIDEV is not set |
950 | # CONFIG_SPI_TLE62X0 is not set | 950 | # CONFIG_SPI_TLE62X0 is not set |
951 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 951 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/powerpc/configs/83xx/mpc832x_mds_defconfig b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig index 9cb8c8b956e4..5e3cd49a2e9c 100644 --- a/arch/powerpc/configs/83xx/mpc832x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig | |||
@@ -730,8 +730,8 @@ CONFIG_I2C_MPC=y | |||
730 | # Miscellaneous I2C Chip support | 730 | # Miscellaneous I2C Chip support |
731 | # | 731 | # |
732 | # CONFIG_DS1682 is not set | 732 | # CONFIG_DS1682 is not set |
733 | # CONFIG_AT24 is not set | 733 | # CONFIG_EEPROM_AT24 is not set |
734 | # CONFIG_SENSORS_EEPROM is not set | 734 | # CONFIG_EEPROM_LEGACY is not set |
735 | # CONFIG_SENSORS_PCF8574 is not set | 735 | # CONFIG_SENSORS_PCF8574 is not set |
736 | # CONFIG_PCF8575 is not set | 736 | # CONFIG_PCF8575 is not set |
737 | # CONFIG_SENSORS_PCA9539 is not set | 737 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig index 9cc976f010c9..90c482606880 100644 --- a/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig | |||
@@ -745,8 +745,8 @@ CONFIG_I2C_MPC=y | |||
745 | # Miscellaneous I2C Chip support | 745 | # Miscellaneous I2C Chip support |
746 | # | 746 | # |
747 | # CONFIG_DS1682 is not set | 747 | # CONFIG_DS1682 is not set |
748 | # CONFIG_AT24 is not set | 748 | # CONFIG_EEPROM_AT24 is not set |
749 | # CONFIG_SENSORS_EEPROM is not set | 749 | # CONFIG_EEPROM_LEGACY is not set |
750 | # CONFIG_SENSORS_PCF8574 is not set | 750 | # CONFIG_SENSORS_PCF8574 is not set |
751 | # CONFIG_PCF8575 is not set | 751 | # CONFIG_PCF8575 is not set |
752 | # CONFIG_SENSORS_PCA9539 is not set | 752 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -770,7 +770,7 @@ CONFIG_SPI_MPC83xx=y | |||
770 | # | 770 | # |
771 | # SPI Protocol Masters | 771 | # SPI Protocol Masters |
772 | # | 772 | # |
773 | # CONFIG_SPI_AT25 is not set | 773 | # CONFIG_EEPROM_AT25 is not set |
774 | # CONFIG_SPI_SPIDEV is not set | 774 | # CONFIG_SPI_SPIDEV is not set |
775 | # CONFIG_SPI_TLE62X0 is not set | 775 | # CONFIG_SPI_TLE62X0 is not set |
776 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 776 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig index 07a674f5344e..42b7f3403fb0 100644 --- a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig +++ b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig | |||
@@ -898,8 +898,8 @@ CONFIG_I2C_MPC=y | |||
898 | # Miscellaneous I2C Chip support | 898 | # Miscellaneous I2C Chip support |
899 | # | 899 | # |
900 | # CONFIG_DS1682 is not set | 900 | # CONFIG_DS1682 is not set |
901 | # CONFIG_AT24 is not set | 901 | # CONFIG_EEPROM_AT24 is not set |
902 | # CONFIG_SENSORS_EEPROM is not set | 902 | # CONFIG_EEPROM_LEGACY is not set |
903 | CONFIG_SENSORS_PCF8574=y | 903 | CONFIG_SENSORS_PCF8574=y |
904 | # CONFIG_PCF8575 is not set | 904 | # CONFIG_PCF8575 is not set |
905 | # CONFIG_SENSORS_PCA9539 is not set | 905 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -923,7 +923,7 @@ CONFIG_SPI_MPC83xx=y | |||
923 | # | 923 | # |
924 | # SPI Protocol Masters | 924 | # SPI Protocol Masters |
925 | # | 925 | # |
926 | # CONFIG_SPI_AT25 is not set | 926 | # CONFIG_EEPROM_AT25 is not set |
927 | # CONFIG_SPI_SPIDEV is not set | 927 | # CONFIG_SPI_SPIDEV is not set |
928 | # CONFIG_SPI_TLE62X0 is not set | 928 | # CONFIG_SPI_TLE62X0 is not set |
929 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 929 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig b/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig index 426232cb0097..17c903b36576 100644 --- a/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig +++ b/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig | |||
@@ -778,8 +778,8 @@ CONFIG_I2C_MPC=y | |||
778 | # Miscellaneous I2C Chip support | 778 | # Miscellaneous I2C Chip support |
779 | # | 779 | # |
780 | # CONFIG_DS1682 is not set | 780 | # CONFIG_DS1682 is not set |
781 | # CONFIG_AT24 is not set | 781 | # CONFIG_EEPROM_AT24 is not set |
782 | # CONFIG_SENSORS_EEPROM is not set | 782 | # CONFIG_EEPROM_LEGACY is not set |
783 | CONFIG_SENSORS_PCF8574=y | 783 | CONFIG_SENSORS_PCF8574=y |
784 | # CONFIG_PCF8575 is not set | 784 | # CONFIG_PCF8575 is not set |
785 | # CONFIG_SENSORS_PCA9539 is not set | 785 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -803,7 +803,7 @@ CONFIG_SPI_MPC83xx=y | |||
803 | # | 803 | # |
804 | # SPI Protocol Masters | 804 | # SPI Protocol Masters |
805 | # | 805 | # |
806 | # CONFIG_SPI_AT25 is not set | 806 | # CONFIG_EEPROM_AT25 is not set |
807 | # CONFIG_SPI_SPIDEV is not set | 807 | # CONFIG_SPI_SPIDEV is not set |
808 | # CONFIG_SPI_TLE62X0 is not set | 808 | # CONFIG_SPI_TLE62X0 is not set |
809 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 809 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/powerpc/configs/83xx/mpc834x_mds_defconfig b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig index 36e2e93a1c53..728fc95d5870 100644 --- a/arch/powerpc/configs/83xx/mpc834x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig | |||
@@ -673,8 +673,8 @@ CONFIG_I2C_MPC=y | |||
673 | # Miscellaneous I2C Chip support | 673 | # Miscellaneous I2C Chip support |
674 | # | 674 | # |
675 | # CONFIG_DS1682 is not set | 675 | # CONFIG_DS1682 is not set |
676 | # CONFIG_AT24 is not set | 676 | # CONFIG_EEPROM_AT24 is not set |
677 | # CONFIG_SENSORS_EEPROM is not set | 677 | # CONFIG_EEPROM_LEGACY is not set |
678 | # CONFIG_SENSORS_PCF8574 is not set | 678 | # CONFIG_SENSORS_PCF8574 is not set |
679 | # CONFIG_PCF8575 is not set | 679 | # CONFIG_PCF8575 is not set |
680 | # CONFIG_SENSORS_PCA9539 is not set | 680 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/83xx/mpc836x_mds_defconfig b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig index 80eb6c9a05c4..f7546e7cb762 100644 --- a/arch/powerpc/configs/83xx/mpc836x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig | |||
@@ -805,8 +805,8 @@ CONFIG_I2C_MPC=y | |||
805 | # Miscellaneous I2C Chip support | 805 | # Miscellaneous I2C Chip support |
806 | # | 806 | # |
807 | # CONFIG_DS1682 is not set | 807 | # CONFIG_DS1682 is not set |
808 | # CONFIG_AT24 is not set | 808 | # CONFIG_EEPROM_AT24 is not set |
809 | # CONFIG_SENSORS_EEPROM is not set | 809 | # CONFIG_EEPROM_LEGACY is not set |
810 | # CONFIG_SENSORS_PCF8574 is not set | 810 | # CONFIG_SENSORS_PCF8574 is not set |
811 | # CONFIG_PCF8575 is not set | 811 | # CONFIG_PCF8575 is not set |
812 | # CONFIG_SENSORS_PCA9539 is not set | 812 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig b/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig index b9b236806e9f..b94972f52241 100644 --- a/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig +++ b/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig | |||
@@ -723,8 +723,8 @@ CONFIG_I2C_MPC=y | |||
723 | # Miscellaneous I2C Chip support | 723 | # Miscellaneous I2C Chip support |
724 | # | 724 | # |
725 | # CONFIG_DS1682 is not set | 725 | # CONFIG_DS1682 is not set |
726 | # CONFIG_AT24 is not set | 726 | # CONFIG_EEPROM_AT24 is not set |
727 | # CONFIG_SENSORS_EEPROM is not set | 727 | # CONFIG_EEPROM_LEGACY is not set |
728 | # CONFIG_SENSORS_PCF8574 is not set | 728 | # CONFIG_SENSORS_PCF8574 is not set |
729 | # CONFIG_PCF8575 is not set | 729 | # CONFIG_PCF8575 is not set |
730 | # CONFIG_SENSORS_PCA9539 is not set | 730 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -749,7 +749,7 @@ CONFIG_SPI_MPC83xx=y | |||
749 | # | 749 | # |
750 | # SPI Protocol Masters | 750 | # SPI Protocol Masters |
751 | # | 751 | # |
752 | # CONFIG_SPI_AT25 is not set | 752 | # CONFIG_EEPROM_AT25 is not set |
753 | CONFIG_SPI_SPIDEV=y | 753 | CONFIG_SPI_SPIDEV=y |
754 | # CONFIG_SPI_TLE62X0 is not set | 754 | # CONFIG_SPI_TLE62X0 is not set |
755 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 755 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
diff --git a/arch/powerpc/configs/83xx/mpc837x_mds_defconfig b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig index f6350d7e1688..ad97649bdc73 100644 --- a/arch/powerpc/configs/83xx/mpc837x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig | |||
@@ -787,8 +787,8 @@ CONFIG_I2C_MPC=y | |||
787 | # Miscellaneous I2C Chip support | 787 | # Miscellaneous I2C Chip support |
788 | # | 788 | # |
789 | # CONFIG_DS1682 is not set | 789 | # CONFIG_DS1682 is not set |
790 | # CONFIG_AT24 is not set | 790 | # CONFIG_EEPROM_AT24 is not set |
791 | # CONFIG_SENSORS_EEPROM is not set | 791 | # CONFIG_EEPROM_LEGACY is not set |
792 | # CONFIG_SENSORS_PCF8574 is not set | 792 | # CONFIG_SENSORS_PCF8574 is not set |
793 | # CONFIG_PCF8575 is not set | 793 | # CONFIG_PCF8575 is not set |
794 | # CONFIG_SENSORS_PCA9539 is not set | 794 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig index f447de16f75d..2e526beeeb90 100644 --- a/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig | |||
@@ -789,8 +789,8 @@ CONFIG_I2C_MPC=y | |||
789 | # Miscellaneous I2C Chip support | 789 | # Miscellaneous I2C Chip support |
790 | # | 790 | # |
791 | # CONFIG_DS1682 is not set | 791 | # CONFIG_DS1682 is not set |
792 | # CONFIG_AT24 is not set | 792 | # CONFIG_EEPROM_AT24 is not set |
793 | # CONFIG_SENSORS_EEPROM is not set | 793 | # CONFIG_EEPROM_LEGACY is not set |
794 | # CONFIG_SENSORS_PCF8574 is not set | 794 | # CONFIG_SENSORS_PCF8574 is not set |
795 | # CONFIG_PCF8575 is not set | 795 | # CONFIG_PCF8575 is not set |
796 | # CONFIG_SENSORS_PCA9539 is not set | 796 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/83xx/sbc834x_defconfig b/arch/powerpc/configs/83xx/sbc834x_defconfig index 8d2d7eeab5f5..54bb24a5e02a 100644 --- a/arch/powerpc/configs/83xx/sbc834x_defconfig +++ b/arch/powerpc/configs/83xx/sbc834x_defconfig | |||
@@ -640,8 +640,8 @@ CONFIG_I2C_MPC=y | |||
640 | # Miscellaneous I2C Chip support | 640 | # Miscellaneous I2C Chip support |
641 | # | 641 | # |
642 | # CONFIG_DS1682 is not set | 642 | # CONFIG_DS1682 is not set |
643 | # CONFIG_AT24 is not set | 643 | # CONFIG_EEPROM_AT24 is not set |
644 | # CONFIG_SENSORS_EEPROM is not set | 644 | # CONFIG_EEPROM_LEGACY is not set |
645 | # CONFIG_SENSORS_PCF8574 is not set | 645 | # CONFIG_SENSORS_PCF8574 is not set |
646 | # CONFIG_PCF8575 is not set | 646 | # CONFIG_PCF8575 is not set |
647 | # CONFIG_SENSORS_PCA9539 is not set | 647 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/mpc8536_ds_defconfig b/arch/powerpc/configs/85xx/mpc8536_ds_defconfig index e243e14a6708..256055cb6d2f 100644 --- a/arch/powerpc/configs/85xx/mpc8536_ds_defconfig +++ b/arch/powerpc/configs/85xx/mpc8536_ds_defconfig | |||
@@ -849,8 +849,8 @@ CONFIG_I2C_MPC=y | |||
849 | # Miscellaneous I2C Chip support | 849 | # Miscellaneous I2C Chip support |
850 | # | 850 | # |
851 | # CONFIG_DS1682 is not set | 851 | # CONFIG_DS1682 is not set |
852 | # CONFIG_AT24 is not set | 852 | # CONFIG_EEPROM_AT24 is not set |
853 | CONFIG_SENSORS_EEPROM=y | 853 | CONFIG_EEPROM_LEGACY=y |
854 | # CONFIG_SENSORS_PCF8574 is not set | 854 | # CONFIG_SENSORS_PCF8574 is not set |
855 | # CONFIG_PCF8575 is not set | 855 | # CONFIG_PCF8575 is not set |
856 | # CONFIG_SENSORS_PCA9539 is not set | 856 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/mpc8544_ds_defconfig b/arch/powerpc/configs/85xx/mpc8544_ds_defconfig index f6cb01495ea6..5ac7e51e9f14 100644 --- a/arch/powerpc/configs/85xx/mpc8544_ds_defconfig +++ b/arch/powerpc/configs/85xx/mpc8544_ds_defconfig | |||
@@ -848,8 +848,8 @@ CONFIG_I2C_MPC=y | |||
848 | # Miscellaneous I2C Chip support | 848 | # Miscellaneous I2C Chip support |
849 | # | 849 | # |
850 | # CONFIG_DS1682 is not set | 850 | # CONFIG_DS1682 is not set |
851 | # CONFIG_AT24 is not set | 851 | # CONFIG_EEPROM_AT24 is not set |
852 | CONFIG_SENSORS_EEPROM=y | 852 | CONFIG_EEPROM_LEGACY=y |
853 | # CONFIG_SENSORS_PCF8574 is not set | 853 | # CONFIG_SENSORS_PCF8574 is not set |
854 | # CONFIG_PCF8575 is not set | 854 | # CONFIG_PCF8575 is not set |
855 | # CONFIG_SENSORS_PCA9539 is not set | 855 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/mpc8568mds_defconfig b/arch/powerpc/configs/85xx/mpc8568mds_defconfig index 597be8491812..ab5b0b58924c 100644 --- a/arch/powerpc/configs/85xx/mpc8568mds_defconfig +++ b/arch/powerpc/configs/85xx/mpc8568mds_defconfig | |||
@@ -723,8 +723,8 @@ CONFIG_I2C_MPC=y | |||
723 | # Miscellaneous I2C Chip support | 723 | # Miscellaneous I2C Chip support |
724 | # | 724 | # |
725 | # CONFIG_DS1682 is not set | 725 | # CONFIG_DS1682 is not set |
726 | # CONFIG_AT24 is not set | 726 | # CONFIG_EEPROM_AT24 is not set |
727 | # CONFIG_SENSORS_EEPROM is not set | 727 | # CONFIG_EEPROM_LEGACY is not set |
728 | # CONFIG_SENSORS_PCF8574 is not set | 728 | # CONFIG_SENSORS_PCF8574 is not set |
729 | # CONFIG_PCF8575 is not set | 729 | # CONFIG_PCF8575 is not set |
730 | # CONFIG_SENSORS_PCA9539 is not set | 730 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/mpc8572_ds_defconfig b/arch/powerpc/configs/85xx/mpc8572_ds_defconfig index 32aeb79216f7..65ef823e08c6 100644 --- a/arch/powerpc/configs/85xx/mpc8572_ds_defconfig +++ b/arch/powerpc/configs/85xx/mpc8572_ds_defconfig | |||
@@ -861,8 +861,8 @@ CONFIG_I2C_MPC=y | |||
861 | # Miscellaneous I2C Chip support | 861 | # Miscellaneous I2C Chip support |
862 | # | 862 | # |
863 | # CONFIG_DS1682 is not set | 863 | # CONFIG_DS1682 is not set |
864 | # CONFIG_AT24 is not set | 864 | # CONFIG_EEPROM_AT24 is not set |
865 | CONFIG_SENSORS_EEPROM=y | 865 | CONFIG_EEPROM_LEGACY=y |
866 | # CONFIG_SENSORS_PCF8574 is not set | 866 | # CONFIG_SENSORS_PCF8574 is not set |
867 | # CONFIG_PCF8575 is not set | 867 | # CONFIG_PCF8575 is not set |
868 | # CONFIG_SENSORS_PCA9539 is not set | 868 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/stx_gp3_defconfig b/arch/powerpc/configs/85xx/stx_gp3_defconfig index 5a0cf58d2b8c..f1288a0c3040 100644 --- a/arch/powerpc/configs/85xx/stx_gp3_defconfig +++ b/arch/powerpc/configs/85xx/stx_gp3_defconfig | |||
@@ -877,8 +877,8 @@ CONFIG_I2C_HELPER_AUTO=y | |||
877 | # Miscellaneous I2C Chip support | 877 | # Miscellaneous I2C Chip support |
878 | # | 878 | # |
879 | # CONFIG_DS1682 is not set | 879 | # CONFIG_DS1682 is not set |
880 | # CONFIG_AT24 is not set | 880 | # CONFIG_EEPROM_AT24 is not set |
881 | # CONFIG_SENSORS_EEPROM is not set | 881 | # CONFIG_EEPROM_LEGACY is not set |
882 | # CONFIG_SENSORS_PCF8574 is not set | 882 | # CONFIG_SENSORS_PCF8574 is not set |
883 | # CONFIG_PCF8575 is not set | 883 | # CONFIG_PCF8575 is not set |
884 | # CONFIG_SENSORS_PCA9539 is not set | 884 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/tqm8540_defconfig b/arch/powerpc/configs/85xx/tqm8540_defconfig index f3e4f3481fda..b3b1de6a6a85 100644 --- a/arch/powerpc/configs/85xx/tqm8540_defconfig +++ b/arch/powerpc/configs/85xx/tqm8540_defconfig | |||
@@ -787,8 +787,8 @@ CONFIG_I2C_MPC=y | |||
787 | # Miscellaneous I2C Chip support | 787 | # Miscellaneous I2C Chip support |
788 | # | 788 | # |
789 | # CONFIG_DS1682 is not set | 789 | # CONFIG_DS1682 is not set |
790 | # CONFIG_AT24 is not set | 790 | # CONFIG_EEPROM_AT24 is not set |
791 | # CONFIG_SENSORS_EEPROM is not set | 791 | # CONFIG_EEPROM_LEGACY is not set |
792 | # CONFIG_SENSORS_PCF8574 is not set | 792 | # CONFIG_SENSORS_PCF8574 is not set |
793 | # CONFIG_PCF8575 is not set | 793 | # CONFIG_PCF8575 is not set |
794 | # CONFIG_SENSORS_PCA9539 is not set | 794 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/tqm8541_defconfig b/arch/powerpc/configs/85xx/tqm8541_defconfig index c62489394535..a92a639cdf8a 100644 --- a/arch/powerpc/configs/85xx/tqm8541_defconfig +++ b/arch/powerpc/configs/85xx/tqm8541_defconfig | |||
@@ -796,8 +796,8 @@ CONFIG_I2C_MPC=y | |||
796 | # Miscellaneous I2C Chip support | 796 | # Miscellaneous I2C Chip support |
797 | # | 797 | # |
798 | # CONFIG_DS1682 is not set | 798 | # CONFIG_DS1682 is not set |
799 | # CONFIG_AT24 is not set | 799 | # CONFIG_EEPROM_AT24 is not set |
800 | # CONFIG_SENSORS_EEPROM is not set | 800 | # CONFIG_EEPROM_LEGACY is not set |
801 | # CONFIG_SENSORS_PCF8574 is not set | 801 | # CONFIG_SENSORS_PCF8574 is not set |
802 | # CONFIG_PCF8575 is not set | 802 | # CONFIG_PCF8575 is not set |
803 | # CONFIG_SENSORS_PCA9539 is not set | 803 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/tqm8548_defconfig b/arch/powerpc/configs/85xx/tqm8548_defconfig index eef45b97dc3e..397d37fbe7e3 100644 --- a/arch/powerpc/configs/85xx/tqm8548_defconfig +++ b/arch/powerpc/configs/85xx/tqm8548_defconfig | |||
@@ -806,8 +806,8 @@ CONFIG_I2C_MPC=y | |||
806 | # Miscellaneous I2C Chip support | 806 | # Miscellaneous I2C Chip support |
807 | # | 807 | # |
808 | # CONFIG_DS1682 is not set | 808 | # CONFIG_DS1682 is not set |
809 | # CONFIG_AT24 is not set | 809 | # CONFIG_EEPROM_AT24 is not set |
810 | # CONFIG_SENSORS_EEPROM is not set | 810 | # CONFIG_EEPROM_LEGACY is not set |
811 | # CONFIG_SENSORS_PCF8574 is not set | 811 | # CONFIG_SENSORS_PCF8574 is not set |
812 | # CONFIG_PCF8575 is not set | 812 | # CONFIG_PCF8575 is not set |
813 | # CONFIG_SENSORS_PCA9539 is not set | 813 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/tqm8555_defconfig b/arch/powerpc/configs/85xx/tqm8555_defconfig index 11b637e99a54..856ca6ab37b7 100644 --- a/arch/powerpc/configs/85xx/tqm8555_defconfig +++ b/arch/powerpc/configs/85xx/tqm8555_defconfig | |||
@@ -796,8 +796,8 @@ CONFIG_I2C_MPC=y | |||
796 | # Miscellaneous I2C Chip support | 796 | # Miscellaneous I2C Chip support |
797 | # | 797 | # |
798 | # CONFIG_DS1682 is not set | 798 | # CONFIG_DS1682 is not set |
799 | # CONFIG_AT24 is not set | 799 | # CONFIG_EEPROM_AT24 is not set |
800 | # CONFIG_SENSORS_EEPROM is not set | 800 | # CONFIG_EEPROM_LEGACY is not set |
801 | # CONFIG_SENSORS_PCF8574 is not set | 801 | # CONFIG_SENSORS_PCF8574 is not set |
802 | # CONFIG_PCF8575 is not set | 802 | # CONFIG_PCF8575 is not set |
803 | # CONFIG_SENSORS_PCA9539 is not set | 803 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/85xx/tqm8560_defconfig b/arch/powerpc/configs/85xx/tqm8560_defconfig index 2519169b6d4b..56ed4213609c 100644 --- a/arch/powerpc/configs/85xx/tqm8560_defconfig +++ b/arch/powerpc/configs/85xx/tqm8560_defconfig | |||
@@ -796,8 +796,8 @@ CONFIG_I2C_MPC=y | |||
796 | # Miscellaneous I2C Chip support | 796 | # Miscellaneous I2C Chip support |
797 | # | 797 | # |
798 | # CONFIG_DS1682 is not set | 798 | # CONFIG_DS1682 is not set |
799 | # CONFIG_AT24 is not set | 799 | # CONFIG_EEPROM_AT24 is not set |
800 | # CONFIG_SENSORS_EEPROM is not set | 800 | # CONFIG_EEPROM_LEGACY is not set |
801 | # CONFIG_SENSORS_PCF8574 is not set | 801 | # CONFIG_SENSORS_PCF8574 is not set |
802 | # CONFIG_PCF8575 is not set | 802 | # CONFIG_PCF8575 is not set |
803 | # CONFIG_SENSORS_PCA9539 is not set | 803 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/86xx/gef_sbc610_defconfig b/arch/powerpc/configs/86xx/gef_sbc610_defconfig index 391874c7b436..840b09a07282 100644 --- a/arch/powerpc/configs/86xx/gef_sbc610_defconfig +++ b/arch/powerpc/configs/86xx/gef_sbc610_defconfig | |||
@@ -1081,8 +1081,8 @@ CONFIG_I2C_MPC=y | |||
1081 | # Miscellaneous I2C Chip support | 1081 | # Miscellaneous I2C Chip support |
1082 | # | 1082 | # |
1083 | CONFIG_DS1682=y | 1083 | CONFIG_DS1682=y |
1084 | # CONFIG_AT24 is not set | 1084 | # CONFIG_EEPROM_AT24 is not set |
1085 | # CONFIG_SENSORS_EEPROM is not set | 1085 | # CONFIG_EEPROM_LEGACY is not set |
1086 | # CONFIG_SENSORS_PCF8574 is not set | 1086 | # CONFIG_SENSORS_PCF8574 is not set |
1087 | # CONFIG_PCF8575 is not set | 1087 | # CONFIG_PCF8575 is not set |
1088 | # CONFIG_SENSORS_PCA9539 is not set | 1088 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig b/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig index 72854a10dfa1..25bf4e95acb8 100644 --- a/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig +++ b/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig | |||
@@ -905,8 +905,8 @@ CONFIG_I2C_MPC=y | |||
905 | # Miscellaneous I2C Chip support | 905 | # Miscellaneous I2C Chip support |
906 | # | 906 | # |
907 | # CONFIG_DS1682 is not set | 907 | # CONFIG_DS1682 is not set |
908 | # CONFIG_AT24 is not set | 908 | # CONFIG_EEPROM_AT24 is not set |
909 | # CONFIG_SENSORS_EEPROM is not set | 909 | # CONFIG_EEPROM_LEGACY is not set |
910 | # CONFIG_SENSORS_PCF8574 is not set | 910 | # CONFIG_SENSORS_PCF8574 is not set |
911 | # CONFIG_PCF8575 is not set | 911 | # CONFIG_PCF8575 is not set |
912 | # CONFIG_SENSORS_PCA9539 is not set | 912 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig b/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig index 41220ece603d..8e0f0e5180a4 100644 --- a/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig +++ b/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig | |||
@@ -851,8 +851,8 @@ CONFIG_I2C_MPC=y | |||
851 | # Miscellaneous I2C Chip support | 851 | # Miscellaneous I2C Chip support |
852 | # | 852 | # |
853 | # CONFIG_DS1682 is not set | 853 | # CONFIG_DS1682 is not set |
854 | # CONFIG_AT24 is not set | 854 | # CONFIG_EEPROM_AT24 is not set |
855 | CONFIG_SENSORS_EEPROM=y | 855 | CONFIG_EEPROM_LEGACY=y |
856 | # CONFIG_SENSORS_PCF8574 is not set | 856 | # CONFIG_SENSORS_PCF8574 is not set |
857 | # CONFIG_PCF8575 is not set | 857 | # CONFIG_PCF8575 is not set |
858 | # CONFIG_SENSORS_PCA9539 is not set | 858 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/86xx/sbc8641d_defconfig b/arch/powerpc/configs/86xx/sbc8641d_defconfig index a4342862f6ef..37d9f4ed80f5 100644 --- a/arch/powerpc/configs/86xx/sbc8641d_defconfig +++ b/arch/powerpc/configs/86xx/sbc8641d_defconfig | |||
@@ -958,8 +958,8 @@ CONFIG_I2C_MPC=y | |||
958 | # Miscellaneous I2C Chip support | 958 | # Miscellaneous I2C Chip support |
959 | # | 959 | # |
960 | # CONFIG_DS1682 is not set | 960 | # CONFIG_DS1682 is not set |
961 | # CONFIG_AT24 is not set | 961 | # CONFIG_EEPROM_AT24 is not set |
962 | # CONFIG_SENSORS_EEPROM is not set | 962 | # CONFIG_EEPROM_LEGACY is not set |
963 | # CONFIG_SENSORS_PCF8574 is not set | 963 | # CONFIG_SENSORS_PCF8574 is not set |
964 | # CONFIG_PCF8575 is not set | 964 | # CONFIG_PCF8575 is not set |
965 | # CONFIG_SENSORS_PCA9539 is not set | 965 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/c2k_defconfig b/arch/powerpc/configs/c2k_defconfig index 5078594cd1f5..74c6feabdd77 100644 --- a/arch/powerpc/configs/c2k_defconfig +++ b/arch/powerpc/configs/c2k_defconfig | |||
@@ -1124,8 +1124,8 @@ CONFIG_I2C_MV64XXX=m | |||
1124 | # Miscellaneous I2C Chip support | 1124 | # Miscellaneous I2C Chip support |
1125 | # | 1125 | # |
1126 | # CONFIG_DS1682 is not set | 1126 | # CONFIG_DS1682 is not set |
1127 | # CONFIG_AT24 is not set | 1127 | # CONFIG_EEPROM_AT24 is not set |
1128 | CONFIG_SENSORS_EEPROM=m | 1128 | CONFIG_EEPROM_LEGACY=m |
1129 | CONFIG_SENSORS_PCF8574=m | 1129 | CONFIG_SENSORS_PCF8574=m |
1130 | # CONFIG_PCF8575 is not set | 1130 | # CONFIG_PCF8575 is not set |
1131 | # CONFIG_SENSORS_PCA9539 is not set | 1131 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig index c420e47426f8..c6d2baa7aaeb 100644 --- a/arch/powerpc/configs/cell_defconfig +++ b/arch/powerpc/configs/cell_defconfig | |||
@@ -1012,7 +1012,7 @@ CONFIG_I2C_ALGOBIT=y | |||
1012 | # Miscellaneous I2C Chip support | 1012 | # Miscellaneous I2C Chip support |
1013 | # | 1013 | # |
1014 | # CONFIG_DS1682 is not set | 1014 | # CONFIG_DS1682 is not set |
1015 | # CONFIG_SENSORS_EEPROM is not set | 1015 | # CONFIG_EEPROM_LEGACY is not set |
1016 | # CONFIG_SENSORS_PCF8574 is not set | 1016 | # CONFIG_SENSORS_PCF8574 is not set |
1017 | # CONFIG_PCF8575 is not set | 1017 | # CONFIG_PCF8575 is not set |
1018 | # CONFIG_SENSORS_PCF8591 is not set | 1018 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/powerpc/configs/celleb_defconfig b/arch/powerpc/configs/celleb_defconfig index 9ba3c6fc2fef..d2123779512a 100644 --- a/arch/powerpc/configs/celleb_defconfig +++ b/arch/powerpc/configs/celleb_defconfig | |||
@@ -834,7 +834,7 @@ CONFIG_I2C_ALGOBIT=y | |||
834 | # Miscellaneous I2C Chip support | 834 | # Miscellaneous I2C Chip support |
835 | # | 835 | # |
836 | # CONFIG_DS1682 is not set | 836 | # CONFIG_DS1682 is not set |
837 | # CONFIG_SENSORS_EEPROM is not set | 837 | # CONFIG_EEPROM_LEGACY is not set |
838 | # CONFIG_SENSORS_PCF8574 is not set | 838 | # CONFIG_SENSORS_PCF8574 is not set |
839 | # CONFIG_PCF8575 is not set | 839 | # CONFIG_PCF8575 is not set |
840 | # CONFIG_SENSORS_PCF8591 is not set | 840 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/powerpc/configs/chrp32_defconfig b/arch/powerpc/configs/chrp32_defconfig index 63b3c2372ce8..5094a65a4493 100644 --- a/arch/powerpc/configs/chrp32_defconfig +++ b/arch/powerpc/configs/chrp32_defconfig | |||
@@ -941,8 +941,8 @@ CONFIG_I2C_ALGOBIT=y | |||
941 | # Miscellaneous I2C Chip support | 941 | # Miscellaneous I2C Chip support |
942 | # | 942 | # |
943 | # CONFIG_DS1682 is not set | 943 | # CONFIG_DS1682 is not set |
944 | # CONFIG_AT24 is not set | 944 | # CONFIG_EEPROM_AT24 is not set |
945 | # CONFIG_SENSORS_EEPROM is not set | 945 | # CONFIG_EEPROM_LEGACY is not set |
946 | # CONFIG_SENSORS_PCF8574 is not set | 946 | # CONFIG_SENSORS_PCF8574 is not set |
947 | # CONFIG_PCF8575 is not set | 947 | # CONFIG_PCF8575 is not set |
948 | # CONFIG_SENSORS_PCA9539 is not set | 948 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig index f85e71ccb989..fc905924c022 100644 --- a/arch/powerpc/configs/g5_defconfig +++ b/arch/powerpc/configs/g5_defconfig | |||
@@ -994,8 +994,8 @@ CONFIG_I2C_POWERMAC=y | |||
994 | # Miscellaneous I2C Chip support | 994 | # Miscellaneous I2C Chip support |
995 | # | 995 | # |
996 | # CONFIG_DS1682 is not set | 996 | # CONFIG_DS1682 is not set |
997 | # CONFIG_AT24 is not set | 997 | # CONFIG_EEPROM_AT24 is not set |
998 | # CONFIG_SENSORS_EEPROM is not set | 998 | # CONFIG_EEPROM_LEGACY is not set |
999 | # CONFIG_SENSORS_PCF8574 is not set | 999 | # CONFIG_SENSORS_PCF8574 is not set |
1000 | # CONFIG_PCF8575 is not set | 1000 | # CONFIG_PCF8575 is not set |
1001 | # CONFIG_SENSORS_PCA9539 is not set | 1001 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig index 54fa62481373..3a0ffd73b65c 100644 --- a/arch/powerpc/configs/linkstation_defconfig +++ b/arch/powerpc/configs/linkstation_defconfig | |||
@@ -1015,8 +1015,8 @@ CONFIG_I2C_MPC=y | |||
1015 | # Miscellaneous I2C Chip support | 1015 | # Miscellaneous I2C Chip support |
1016 | # | 1016 | # |
1017 | # CONFIG_DS1682 is not set | 1017 | # CONFIG_DS1682 is not set |
1018 | # CONFIG_AT24 is not set | 1018 | # CONFIG_EEPROM_AT24 is not set |
1019 | CONFIG_SENSORS_EEPROM=m | 1019 | CONFIG_EEPROM_LEGACY=m |
1020 | # CONFIG_SENSORS_PCF8574 is not set | 1020 | # CONFIG_SENSORS_PCF8574 is not set |
1021 | # CONFIG_PCF8575 is not set | 1021 | # CONFIG_PCF8575 is not set |
1022 | # CONFIG_SENSORS_PCA9539 is not set | 1022 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/maple_defconfig b/arch/powerpc/configs/maple_defconfig index 045f1b008ce5..8b244003b9e1 100644 --- a/arch/powerpc/configs/maple_defconfig +++ b/arch/powerpc/configs/maple_defconfig | |||
@@ -866,8 +866,8 @@ CONFIG_I2C_AMD8111=y | |||
866 | # Miscellaneous I2C Chip support | 866 | # Miscellaneous I2C Chip support |
867 | # | 867 | # |
868 | # CONFIG_DS1682 is not set | 868 | # CONFIG_DS1682 is not set |
869 | # CONFIG_AT24 is not set | 869 | # CONFIG_EEPROM_AT24 is not set |
870 | # CONFIG_SENSORS_EEPROM is not set | 870 | # CONFIG_EEPROM_LEGACY is not set |
871 | # CONFIG_SENSORS_PCF8574 is not set | 871 | # CONFIG_SENSORS_PCF8574 is not set |
872 | # CONFIG_PCF8575 is not set | 872 | # CONFIG_PCF8575 is not set |
873 | # CONFIG_SENSORS_PCA9539 is not set | 873 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/mpc5200_defconfig b/arch/powerpc/configs/mpc5200_defconfig index 15c5604d0b26..5ff3de205d6a 100644 --- a/arch/powerpc/configs/mpc5200_defconfig +++ b/arch/powerpc/configs/mpc5200_defconfig | |||
@@ -844,8 +844,8 @@ CONFIG_I2C_MPC=y | |||
844 | # Miscellaneous I2C Chip support | 844 | # Miscellaneous I2C Chip support |
845 | # | 845 | # |
846 | # CONFIG_DS1682 is not set | 846 | # CONFIG_DS1682 is not set |
847 | # CONFIG_AT24 is not set | 847 | # CONFIG_EEPROM_AT24 is not set |
848 | # CONFIG_SENSORS_EEPROM is not set | 848 | # CONFIG_EEPROM_LEGACY is not set |
849 | # CONFIG_SENSORS_PCF8574 is not set | 849 | # CONFIG_SENSORS_PCF8574 is not set |
850 | # CONFIG_PCF8575 is not set | 850 | # CONFIG_PCF8575 is not set |
851 | # CONFIG_SENSORS_PCA9539 is not set | 851 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/mpc83xx_defconfig b/arch/powerpc/configs/mpc83xx_defconfig index d582014b0a38..3e1272cfdd91 100644 --- a/arch/powerpc/configs/mpc83xx_defconfig +++ b/arch/powerpc/configs/mpc83xx_defconfig | |||
@@ -902,8 +902,8 @@ CONFIG_I2C_MPC=y | |||
902 | # Miscellaneous I2C Chip support | 902 | # Miscellaneous I2C Chip support |
903 | # | 903 | # |
904 | # CONFIG_DS1682 is not set | 904 | # CONFIG_DS1682 is not set |
905 | # CONFIG_AT24 is not set | 905 | # CONFIG_EEPROM_AT24 is not set |
906 | # CONFIG_SENSORS_EEPROM is not set | 906 | # CONFIG_EEPROM_LEGACY is not set |
907 | # CONFIG_SENSORS_PCF8574 is not set | 907 | # CONFIG_SENSORS_PCF8574 is not set |
908 | # CONFIG_PCF8575 is not set | 908 | # CONFIG_PCF8575 is not set |
909 | # CONFIG_SENSORS_PCA9539 is not set | 909 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/mpc85xx_defconfig b/arch/powerpc/configs/mpc85xx_defconfig index c87b53abc617..55e5ebd91cd0 100644 --- a/arch/powerpc/configs/mpc85xx_defconfig +++ b/arch/powerpc/configs/mpc85xx_defconfig | |||
@@ -860,8 +860,8 @@ CONFIG_I2C_MPC=y | |||
860 | # Miscellaneous I2C Chip support | 860 | # Miscellaneous I2C Chip support |
861 | # | 861 | # |
862 | # CONFIG_DS1682 is not set | 862 | # CONFIG_DS1682 is not set |
863 | # CONFIG_AT24 is not set | 863 | # CONFIG_EEPROM_AT24 is not set |
864 | CONFIG_SENSORS_EEPROM=y | 864 | CONFIG_EEPROM_LEGACY=y |
865 | # CONFIG_SENSORS_PCF8574 is not set | 865 | # CONFIG_SENSORS_PCF8574 is not set |
866 | # CONFIG_PCF8575 is not set | 866 | # CONFIG_PCF8575 is not set |
867 | # CONFIG_SENSORS_PCA9539 is not set | 867 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/mpc86xx_defconfig b/arch/powerpc/configs/mpc86xx_defconfig index 1736bbc281ec..21e0ccbd3f5c 100644 --- a/arch/powerpc/configs/mpc86xx_defconfig +++ b/arch/powerpc/configs/mpc86xx_defconfig | |||
@@ -852,8 +852,8 @@ CONFIG_I2C_MPC=y | |||
852 | # Miscellaneous I2C Chip support | 852 | # Miscellaneous I2C Chip support |
853 | # | 853 | # |
854 | # CONFIG_DS1682 is not set | 854 | # CONFIG_DS1682 is not set |
855 | # CONFIG_AT24 is not set | 855 | # CONFIG_EEPROM_AT24 is not set |
856 | CONFIG_SENSORS_EEPROM=y | 856 | CONFIG_EEPROM_LEGACY=y |
857 | # CONFIG_SENSORS_PCF8574 is not set | 857 | # CONFIG_SENSORS_PCF8574 is not set |
858 | # CONFIG_PCF8575 is not set | 858 | # CONFIG_PCF8575 is not set |
859 | # CONFIG_SENSORS_PCA9539 is not set | 859 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/pasemi_defconfig b/arch/powerpc/configs/pasemi_defconfig index 199e5f59d7a6..4f8681cc8d77 100644 --- a/arch/powerpc/configs/pasemi_defconfig +++ b/arch/powerpc/configs/pasemi_defconfig | |||
@@ -984,7 +984,7 @@ CONFIG_I2C_PASEMI=y | |||
984 | # Miscellaneous I2C Chip support | 984 | # Miscellaneous I2C Chip support |
985 | # | 985 | # |
986 | # CONFIG_DS1682 is not set | 986 | # CONFIG_DS1682 is not set |
987 | CONFIG_SENSORS_EEPROM=y | 987 | CONFIG_EEPROM_LEGACY=y |
988 | # CONFIG_SENSORS_PCF8574 is not set | 988 | # CONFIG_SENSORS_PCF8574 is not set |
989 | # CONFIG_PCF8575 is not set | 989 | # CONFIG_PCF8575 is not set |
990 | # CONFIG_SENSORS_PCF8591 is not set | 990 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig index de9b121820a6..5339bb44cce9 100644 --- a/arch/powerpc/configs/pmac32_defconfig +++ b/arch/powerpc/configs/pmac32_defconfig | |||
@@ -1232,8 +1232,8 @@ CONFIG_I2C_POWERMAC=y | |||
1232 | # Miscellaneous I2C Chip support | 1232 | # Miscellaneous I2C Chip support |
1233 | # | 1233 | # |
1234 | # CONFIG_DS1682 is not set | 1234 | # CONFIG_DS1682 is not set |
1235 | # CONFIG_AT24 is not set | 1235 | # CONFIG_EEPROM_AT24 is not set |
1236 | # CONFIG_SENSORS_EEPROM is not set | 1236 | # CONFIG_EEPROM_LEGACY is not set |
1237 | # CONFIG_SENSORS_PCF8574 is not set | 1237 | # CONFIG_SENSORS_PCF8574 is not set |
1238 | # CONFIG_PCF8575 is not set | 1238 | # CONFIG_PCF8575 is not set |
1239 | # CONFIG_SENSORS_PCA9539 is not set | 1239 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/ppc40x_defconfig b/arch/powerpc/configs/ppc40x_defconfig index 4256e2c4534b..2d72ee7a8d60 100644 --- a/arch/powerpc/configs/ppc40x_defconfig +++ b/arch/powerpc/configs/ppc40x_defconfig | |||
@@ -745,8 +745,8 @@ CONFIG_I2C_IBM_IIC=m | |||
745 | # Miscellaneous I2C Chip support | 745 | # Miscellaneous I2C Chip support |
746 | # | 746 | # |
747 | # CONFIG_DS1682 is not set | 747 | # CONFIG_DS1682 is not set |
748 | # CONFIG_AT24 is not set | 748 | # CONFIG_EEPROM_AT24 is not set |
749 | # CONFIG_SENSORS_EEPROM is not set | 749 | # CONFIG_EEPROM_LEGACY is not set |
750 | # CONFIG_SENSORS_PCF8574 is not set | 750 | # CONFIG_SENSORS_PCF8574 is not set |
751 | # CONFIG_PCF8575 is not set | 751 | # CONFIG_PCF8575 is not set |
752 | # CONFIG_SENSORS_PCA9539 is not set | 752 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/ppc44x_defconfig b/arch/powerpc/configs/ppc44x_defconfig index 034a1fbdc887..358b85f9270e 100644 --- a/arch/powerpc/configs/ppc44x_defconfig +++ b/arch/powerpc/configs/ppc44x_defconfig | |||
@@ -794,8 +794,8 @@ CONFIG_I2C_IBM_IIC=m | |||
794 | # Miscellaneous I2C Chip support | 794 | # Miscellaneous I2C Chip support |
795 | # | 795 | # |
796 | # CONFIG_DS1682 is not set | 796 | # CONFIG_DS1682 is not set |
797 | # CONFIG_AT24 is not set | 797 | # CONFIG_EEPROM_AT24 is not set |
798 | # CONFIG_SENSORS_EEPROM is not set | 798 | # CONFIG_EEPROM_LEGACY is not set |
799 | # CONFIG_SENSORS_PCF8574 is not set | 799 | # CONFIG_SENSORS_PCF8574 is not set |
800 | # CONFIG_PCF8575 is not set | 800 | # CONFIG_PCF8575 is not set |
801 | # CONFIG_SENSORS_PCA9539 is not set | 801 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig index d4685d1c0be8..88c6295b76c1 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_defconfig | |||
@@ -1261,8 +1261,8 @@ CONFIG_I2C_PASEMI=y | |||
1261 | # Miscellaneous I2C Chip support | 1261 | # Miscellaneous I2C Chip support |
1262 | # | 1262 | # |
1263 | # CONFIG_DS1682 is not set | 1263 | # CONFIG_DS1682 is not set |
1264 | # CONFIG_AT24 is not set | 1264 | # CONFIG_EEPROM_AT24 is not set |
1265 | # CONFIG_SENSORS_EEPROM is not set | 1265 | # CONFIG_EEPROM_LEGACY is not set |
1266 | # CONFIG_SENSORS_PCF8574 is not set | 1266 | # CONFIG_SENSORS_PCF8574 is not set |
1267 | # CONFIG_PCF8575 is not set | 1267 | # CONFIG_PCF8575 is not set |
1268 | # CONFIG_SENSORS_PCA9539 is not set | 1268 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/ppc6xx_defconfig b/arch/powerpc/configs/ppc6xx_defconfig index 01f05ec5abf3..7d044dfd9236 100644 --- a/arch/powerpc/configs/ppc6xx_defconfig +++ b/arch/powerpc/configs/ppc6xx_defconfig | |||
@@ -1801,8 +1801,8 @@ CONFIG_I2C_STUB=m | |||
1801 | # Miscellaneous I2C Chip support | 1801 | # Miscellaneous I2C Chip support |
1802 | # | 1802 | # |
1803 | # CONFIG_DS1682 is not set | 1803 | # CONFIG_DS1682 is not set |
1804 | CONFIG_AT24=m | 1804 | CONFIG_EEPROM_AT24=m |
1805 | CONFIG_SENSORS_EEPROM=m | 1805 | CONFIG_EEPROM_LEGACY=m |
1806 | CONFIG_SENSORS_PCF8574=m | 1806 | CONFIG_SENSORS_PCF8574=m |
1807 | CONFIG_PCF8575=m | 1807 | CONFIG_PCF8575=m |
1808 | CONFIG_SENSORS_PCA9539=m | 1808 | CONFIG_SENSORS_PCA9539=m |
diff --git a/arch/powerpc/configs/prpmc2800_defconfig b/arch/powerpc/configs/prpmc2800_defconfig index 6046dc0cbd82..a257da608081 100644 --- a/arch/powerpc/configs/prpmc2800_defconfig +++ b/arch/powerpc/configs/prpmc2800_defconfig | |||
@@ -943,8 +943,8 @@ CONFIG_I2C_MV64XXX=y | |||
943 | # Miscellaneous I2C Chip support | 943 | # Miscellaneous I2C Chip support |
944 | # | 944 | # |
945 | # CONFIG_DS1682 is not set | 945 | # CONFIG_DS1682 is not set |
946 | # CONFIG_AT24 is not set | 946 | # CONFIG_EEPROM_AT24 is not set |
947 | # CONFIG_SENSORS_EEPROM is not set | 947 | # CONFIG_EEPROM_LEGACY is not set |
948 | # CONFIG_SENSORS_PCF8574 is not set | 948 | # CONFIG_SENSORS_PCF8574 is not set |
949 | # CONFIG_PCF8575 is not set | 949 | # CONFIG_PCF8575 is not set |
950 | # CONFIG_SENSORS_PCA9539 is not set | 950 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig index 1e520ab65118..61b100849715 100644 --- a/arch/powerpc/configs/pseries_defconfig +++ b/arch/powerpc/configs/pseries_defconfig | |||
@@ -1055,8 +1055,8 @@ CONFIG_I2C_ALGOBIT=y | |||
1055 | # Miscellaneous I2C Chip support | 1055 | # Miscellaneous I2C Chip support |
1056 | # | 1056 | # |
1057 | # CONFIG_DS1682 is not set | 1057 | # CONFIG_DS1682 is not set |
1058 | # CONFIG_AT24 is not set | 1058 | # CONFIG_EEPROM_AT24 is not set |
1059 | # CONFIG_SENSORS_EEPROM is not set | 1059 | # CONFIG_EEPROM_LEGACY is not set |
1060 | # CONFIG_SENSORS_PCF8574 is not set | 1060 | # CONFIG_SENSORS_PCF8574 is not set |
1061 | # CONFIG_PCF8575 is not set | 1061 | # CONFIG_PCF8575 is not set |
1062 | # CONFIG_SENSORS_PCA9539 is not set | 1062 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/configs/storcenter_defconfig b/arch/powerpc/configs/storcenter_defconfig index b3f5671972a9..7eb16ab7b71b 100644 --- a/arch/powerpc/configs/storcenter_defconfig +++ b/arch/powerpc/configs/storcenter_defconfig | |||
@@ -795,8 +795,8 @@ CONFIG_I2C_MPC=y | |||
795 | # Miscellaneous I2C Chip support | 795 | # Miscellaneous I2C Chip support |
796 | # | 796 | # |
797 | # CONFIG_DS1682 is not set | 797 | # CONFIG_DS1682 is not set |
798 | # CONFIG_AT24 is not set | 798 | # CONFIG_EEPROM_AT24 is not set |
799 | # CONFIG_SENSORS_EEPROM is not set | 799 | # CONFIG_EEPROM_LEGACY is not set |
800 | # CONFIG_SENSORS_PCF8574 is not set | 800 | # CONFIG_SENSORS_PCF8574 is not set |
801 | # CONFIG_PCF8575 is not set | 801 | # CONFIG_PCF8575 is not set |
802 | # CONFIG_SENSORS_PCA9539 is not set | 802 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/powerpc/include/asm/ps3.h b/arch/powerpc/include/asm/ps3.h index eead5c67197a..67f1812698d2 100644 --- a/arch/powerpc/include/asm/ps3.h +++ b/arch/powerpc/include/asm/ps3.h | |||
@@ -103,10 +103,10 @@ struct ps3_dma_region_ops { | |||
103 | int (*map)(struct ps3_dma_region *, | 103 | int (*map)(struct ps3_dma_region *, |
104 | unsigned long virt_addr, | 104 | unsigned long virt_addr, |
105 | unsigned long len, | 105 | unsigned long len, |
106 | unsigned long *bus_addr, | 106 | dma_addr_t *bus_addr, |
107 | u64 iopte_pp); | 107 | u64 iopte_pp); |
108 | int (*unmap)(struct ps3_dma_region *, | 108 | int (*unmap)(struct ps3_dma_region *, |
109 | unsigned long bus_addr, | 109 | dma_addr_t bus_addr, |
110 | unsigned long len); | 110 | unsigned long len); |
111 | }; | 111 | }; |
112 | /** | 112 | /** |
@@ -124,9 +124,9 @@ int ps3_dma_region_init(struct ps3_system_bus_device *dev, | |||
124 | int ps3_dma_region_create(struct ps3_dma_region *r); | 124 | int ps3_dma_region_create(struct ps3_dma_region *r); |
125 | int ps3_dma_region_free(struct ps3_dma_region *r); | 125 | int ps3_dma_region_free(struct ps3_dma_region *r); |
126 | int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr, | 126 | int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr, |
127 | unsigned long len, unsigned long *bus_addr, | 127 | unsigned long len, dma_addr_t *bus_addr, |
128 | u64 iopte_pp); | 128 | u64 iopte_pp); |
129 | int ps3_dma_unmap(struct ps3_dma_region *r, unsigned long bus_addr, | 129 | int ps3_dma_unmap(struct ps3_dma_region *r, dma_addr_t bus_addr, |
130 | unsigned long len); | 130 | unsigned long len); |
131 | 131 | ||
132 | /* mmio routines */ | 132 | /* mmio routines */ |
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index c09cffafb6ee..f00f83109ab3 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
@@ -590,6 +590,11 @@ static void __init check_cpu_slb_size(unsigned long node) | |||
590 | { | 590 | { |
591 | u32 *slb_size_ptr; | 591 | u32 *slb_size_ptr; |
592 | 592 | ||
593 | slb_size_ptr = of_get_flat_dt_prop(node, "slb-size", NULL); | ||
594 | if (slb_size_ptr != NULL) { | ||
595 | mmu_slb_size = *slb_size_ptr; | ||
596 | return; | ||
597 | } | ||
593 | slb_size_ptr = of_get_flat_dt_prop(node, "ibm,slb-size", NULL); | 598 | slb_size_ptr = of_get_flat_dt_prop(node, "ibm,slb-size", NULL); |
594 | if (slb_size_ptr != NULL) { | 599 | if (slb_size_ptr != NULL) { |
595 | mmu_slb_size = *slb_size_ptr; | 600 | mmu_slb_size = *slb_size_ptr; |
diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c index db44e02e045b..ba5194817f8a 100644 --- a/arch/powerpc/mm/slice.c +++ b/arch/powerpc/mm/slice.c | |||
@@ -710,9 +710,18 @@ int is_hugepage_only_range(struct mm_struct *mm, unsigned long addr, | |||
710 | unsigned long len) | 710 | unsigned long len) |
711 | { | 711 | { |
712 | struct slice_mask mask, available; | 712 | struct slice_mask mask, available; |
713 | unsigned int psize = mm->context.user_psize; | ||
713 | 714 | ||
714 | mask = slice_range_to_mask(addr, len); | 715 | mask = slice_range_to_mask(addr, len); |
715 | available = slice_mask_for_size(mm, mm->context.user_psize); | 716 | available = slice_mask_for_size(mm, psize); |
717 | #ifdef CONFIG_PPC_64K_PAGES | ||
718 | /* We need to account for 4k slices too */ | ||
719 | if (psize == MMU_PAGE_64K) { | ||
720 | struct slice_mask compat_mask; | ||
721 | compat_mask = slice_mask_for_size(mm, MMU_PAGE_4K); | ||
722 | or_mask(available, compat_mask); | ||
723 | } | ||
724 | #endif | ||
716 | 725 | ||
717 | #if 0 /* too verbose */ | 726 | #if 0 /* too verbose */ |
718 | slice_dbg("is_hugepage_only_range(mm=%p, addr=%lx, len=%lx)\n", | 727 | slice_dbg("is_hugepage_only_range(mm=%p, addr=%lx, len=%lx)\n", |
diff --git a/arch/powerpc/platforms/ps3/device-init.c b/arch/powerpc/platforms/ps3/device-init.c index ca71a12b764c..bb028f165fb3 100644 --- a/arch/powerpc/platforms/ps3/device-init.c +++ b/arch/powerpc/platforms/ps3/device-init.c | |||
@@ -82,7 +82,7 @@ static int __init ps3_register_lpm_devices(void) | |||
82 | goto fail_rights; | 82 | goto fail_rights; |
83 | } | 83 | } |
84 | 84 | ||
85 | pr_debug("%s:%d: pu_id %lu, rights %lu(%lxh)\n", | 85 | pr_debug("%s:%d: pu_id %llu, rights %llu(%llxh)\n", |
86 | __func__, __LINE__, dev->lpm.pu_id, dev->lpm.rights, | 86 | __func__, __LINE__, dev->lpm.pu_id, dev->lpm.rights, |
87 | dev->lpm.rights); | 87 | dev->lpm.rights); |
88 | 88 | ||
@@ -348,7 +348,7 @@ static int ps3_setup_storage_dev(const struct ps3_repository_device *repo, | |||
348 | return -ENODEV; | 348 | return -ENODEV; |
349 | } | 349 | } |
350 | 350 | ||
351 | pr_debug("%s:%u: (%u:%u:%u): port %lu blk_size %lu num_blocks %lu " | 351 | pr_debug("%s:%u: (%u:%u:%u): port %llu blk_size %llu num_blocks %llu " |
352 | "num_regions %u\n", __func__, __LINE__, repo->bus_index, | 352 | "num_regions %u\n", __func__, __LINE__, repo->bus_index, |
353 | repo->dev_index, repo->dev_type, port, blk_size, num_blocks, | 353 | repo->dev_index, repo->dev_type, port, blk_size, num_blocks, |
354 | num_regions); | 354 | num_regions); |
@@ -394,7 +394,7 @@ static int ps3_setup_storage_dev(const struct ps3_repository_device *repo, | |||
394 | result = -ENODEV; | 394 | result = -ENODEV; |
395 | goto fail_read_region; | 395 | goto fail_read_region; |
396 | } | 396 | } |
397 | pr_debug("%s:%u: region %u: id %u start %lu size %lu\n", | 397 | pr_debug("%s:%u: region %u: id %u start %llu size %llu\n", |
398 | __func__, __LINE__, i, id, start, size); | 398 | __func__, __LINE__, i, id, start, size); |
399 | 399 | ||
400 | p->regions[i].id = id; | 400 | p->regions[i].id = id; |
@@ -662,13 +662,13 @@ static void ps3_find_and_add_device(u64 bus_id, u64 dev_id) | |||
662 | if (rem) | 662 | if (rem) |
663 | break; | 663 | break; |
664 | } | 664 | } |
665 | pr_warning("%s:%u: device %lu:%lu not found\n", __func__, __LINE__, | 665 | pr_warning("%s:%u: device %llu:%llu not found\n", __func__, __LINE__, |
666 | bus_id, dev_id); | 666 | bus_id, dev_id); |
667 | return; | 667 | return; |
668 | 668 | ||
669 | found: | 669 | found: |
670 | if (retries) | 670 | if (retries) |
671 | pr_debug("%s:%u: device %lu:%lu found after %u retries\n", | 671 | pr_debug("%s:%u: device %llu:%llu found after %u retries\n", |
672 | __func__, __LINE__, bus_id, dev_id, retries); | 672 | __func__, __LINE__, bus_id, dev_id, retries); |
673 | 673 | ||
674 | ps3_setup_dynamic_device(&repo); | 674 | ps3_setup_dynamic_device(&repo); |
@@ -715,14 +715,14 @@ static irqreturn_t ps3_notification_interrupt(int irq, void *data) | |||
715 | res = lv1_storage_get_async_status(PS3_NOTIFICATION_DEV_ID, &tag, | 715 | res = lv1_storage_get_async_status(PS3_NOTIFICATION_DEV_ID, &tag, |
716 | &status); | 716 | &status); |
717 | if (tag != dev->tag) | 717 | if (tag != dev->tag) |
718 | pr_err("%s:%u: tag mismatch, got %lx, expected %lx\n", | 718 | pr_err("%s:%u: tag mismatch, got %llx, expected %llx\n", |
719 | __func__, __LINE__, tag, dev->tag); | 719 | __func__, __LINE__, tag, dev->tag); |
720 | 720 | ||
721 | if (res) { | 721 | if (res) { |
722 | pr_err("%s:%u: res %d status 0x%lx\n", __func__, __LINE__, res, | 722 | pr_err("%s:%u: res %d status 0x%llx\n", __func__, __LINE__, res, |
723 | status); | 723 | status); |
724 | } else { | 724 | } else { |
725 | pr_debug("%s:%u: completed, status 0x%lx\n", __func__, | 725 | pr_debug("%s:%u: completed, status 0x%llx\n", __func__, |
726 | __LINE__, status); | 726 | __LINE__, status); |
727 | dev->lv1_status = status; | 727 | dev->lv1_status = status; |
728 | complete(&dev->done); | 728 | complete(&dev->done); |
@@ -761,7 +761,7 @@ static int ps3_notification_read_write(struct ps3_notification_device *dev, | |||
761 | } | 761 | } |
762 | 762 | ||
763 | if (dev->lv1_status) { | 763 | if (dev->lv1_status) { |
764 | pr_err("%s:%u: %s not completed, status 0x%lx\n", __func__, | 764 | pr_err("%s:%u: %s not completed, status 0x%llx\n", __func__, |
765 | __LINE__, op, dev->lv1_status); | 765 | __LINE__, op, dev->lv1_status); |
766 | return -EIO; | 766 | return -EIO; |
767 | } | 767 | } |
@@ -850,16 +850,16 @@ static int ps3_probe_thread(void *data) | |||
850 | if (res) | 850 | if (res) |
851 | break; | 851 | break; |
852 | 852 | ||
853 | pr_debug("%s:%u: notify event type 0x%lx bus id %lu dev id %lu" | 853 | pr_debug("%s:%u: notify event type 0x%llx bus id %llu dev id %llu" |
854 | " type %lu port %lu\n", __func__, __LINE__, | 854 | " type %llu port %llu\n", __func__, __LINE__, |
855 | notify_event->event_type, notify_event->bus_id, | 855 | notify_event->event_type, notify_event->bus_id, |
856 | notify_event->dev_id, notify_event->dev_type, | 856 | notify_event->dev_id, notify_event->dev_type, |
857 | notify_event->dev_port); | 857 | notify_event->dev_port); |
858 | 858 | ||
859 | if (notify_event->event_type != notify_region_probe || | 859 | if (notify_event->event_type != notify_region_probe || |
860 | notify_event->bus_id != dev.sbd.bus_id) { | 860 | notify_event->bus_id != dev.sbd.bus_id) { |
861 | pr_warning("%s:%u: bad notify_event: event %lu, " | 861 | pr_warning("%s:%u: bad notify_event: event %llu, " |
862 | "dev_id %lu, dev_type %lu\n", | 862 | "dev_id %llu, dev_type %llu\n", |
863 | __func__, __LINE__, notify_event->event_type, | 863 | __func__, __LINE__, notify_event->event_type, |
864 | notify_event->dev_id, | 864 | notify_event->dev_id, |
865 | notify_event->dev_type); | 865 | notify_event->dev_type); |
diff --git a/arch/powerpc/platforms/ps3/htab.c b/arch/powerpc/platforms/ps3/htab.c index 6eb1d4d182c9..1e8a1e39dfe8 100644 --- a/arch/powerpc/platforms/ps3/htab.c +++ b/arch/powerpc/platforms/ps3/htab.c | |||
@@ -75,7 +75,7 @@ static long ps3_hpte_insert(unsigned long hpte_group, unsigned long va, | |||
75 | 75 | ||
76 | if (result) { | 76 | if (result) { |
77 | /* all entries bolted !*/ | 77 | /* all entries bolted !*/ |
78 | pr_info("%s:result=%d va=%lx pa=%lx ix=%lx v=%lx r=%lx\n", | 78 | pr_info("%s:result=%d va=%lx pa=%lx ix=%lx v=%llx r=%llx\n", |
79 | __func__, result, va, pa, hpte_group, hpte_v, hpte_r); | 79 | __func__, result, va, pa, hpte_group, hpte_v, hpte_r); |
80 | BUG(); | 80 | BUG(); |
81 | } | 81 | } |
diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c index e59634f7af96..8ec5ccf76b19 100644 --- a/arch/powerpc/platforms/ps3/interrupt.c +++ b/arch/powerpc/platforms/ps3/interrupt.c | |||
@@ -60,6 +60,8 @@ | |||
60 | * gives a usable range of plug values of {NUM_ISA_INTERRUPTS..63}. Note | 60 | * gives a usable range of plug values of {NUM_ISA_INTERRUPTS..63}. Note |
61 | * that there is no constraint on how many in this set an individual thread | 61 | * that there is no constraint on how many in this set an individual thread |
62 | * can acquire. | 62 | * can acquire. |
63 | * | ||
64 | * The mask is declared as unsigned long so we can use set/clear_bit on it. | ||
63 | */ | 65 | */ |
64 | 66 | ||
65 | #define PS3_BMP_MINALIGN 64 | 67 | #define PS3_BMP_MINALIGN 64 |
@@ -68,7 +70,7 @@ struct ps3_bmp { | |||
68 | struct { | 70 | struct { |
69 | u64 status; | 71 | u64 status; |
70 | u64 unused_1[3]; | 72 | u64 unused_1[3]; |
71 | u64 mask; | 73 | unsigned long mask; |
72 | u64 unused_2[3]; | 74 | u64 unused_2[3]; |
73 | }; | 75 | }; |
74 | u64 ipi_debug_brk_mask; | 76 | u64 ipi_debug_brk_mask; |
@@ -102,7 +104,7 @@ static void ps3_chip_mask(unsigned int virq) | |||
102 | struct ps3_private *pd = get_irq_chip_data(virq); | 104 | struct ps3_private *pd = get_irq_chip_data(virq); |
103 | unsigned long flags; | 105 | unsigned long flags; |
104 | 106 | ||
105 | pr_debug("%s:%d: thread_id %lu, virq %d\n", __func__, __LINE__, | 107 | pr_debug("%s:%d: thread_id %llu, virq %d\n", __func__, __LINE__, |
106 | pd->thread_id, virq); | 108 | pd->thread_id, virq); |
107 | 109 | ||
108 | local_irq_save(flags); | 110 | local_irq_save(flags); |
@@ -123,7 +125,7 @@ static void ps3_chip_unmask(unsigned int virq) | |||
123 | struct ps3_private *pd = get_irq_chip_data(virq); | 125 | struct ps3_private *pd = get_irq_chip_data(virq); |
124 | unsigned long flags; | 126 | unsigned long flags; |
125 | 127 | ||
126 | pr_debug("%s:%d: thread_id %lu, virq %d\n", __func__, __LINE__, | 128 | pr_debug("%s:%d: thread_id %llu, virq %d\n", __func__, __LINE__, |
127 | pd->thread_id, virq); | 129 | pd->thread_id, virq); |
128 | 130 | ||
129 | local_irq_save(flags); | 131 | local_irq_save(flags); |
@@ -221,7 +223,7 @@ static int ps3_virq_destroy(unsigned int virq) | |||
221 | { | 223 | { |
222 | const struct ps3_private *pd = get_irq_chip_data(virq); | 224 | const struct ps3_private *pd = get_irq_chip_data(virq); |
223 | 225 | ||
224 | pr_debug("%s:%d: ppe_id %lu, thread_id %lu, virq %u\n", __func__, | 226 | pr_debug("%s:%d: ppe_id %llu, thread_id %llu, virq %u\n", __func__, |
225 | __LINE__, pd->ppe_id, pd->thread_id, virq); | 227 | __LINE__, pd->ppe_id, pd->thread_id, virq); |
226 | 228 | ||
227 | set_irq_chip_data(virq, NULL); | 229 | set_irq_chip_data(virq, NULL); |
@@ -291,7 +293,7 @@ int ps3_irq_plug_destroy(unsigned int virq) | |||
291 | int result; | 293 | int result; |
292 | const struct ps3_private *pd = get_irq_chip_data(virq); | 294 | const struct ps3_private *pd = get_irq_chip_data(virq); |
293 | 295 | ||
294 | pr_debug("%s:%d: ppe_id %lu, thread_id %lu, virq %u\n", __func__, | 296 | pr_debug("%s:%d: ppe_id %llu, thread_id %llu, virq %u\n", __func__, |
295 | __LINE__, pd->ppe_id, pd->thread_id, virq); | 297 | __LINE__, pd->ppe_id, pd->thread_id, virq); |
296 | 298 | ||
297 | ps3_chip_mask(virq); | 299 | ps3_chip_mask(virq); |
@@ -322,7 +324,7 @@ EXPORT_SYMBOL_GPL(ps3_irq_plug_destroy); | |||
322 | int ps3_event_receive_port_setup(enum ps3_cpu_binding cpu, unsigned int *virq) | 324 | int ps3_event_receive_port_setup(enum ps3_cpu_binding cpu, unsigned int *virq) |
323 | { | 325 | { |
324 | int result; | 326 | int result; |
325 | unsigned long outlet; | 327 | u64 outlet; |
326 | 328 | ||
327 | result = lv1_construct_event_receive_port(&outlet); | 329 | result = lv1_construct_event_receive_port(&outlet); |
328 | 330 | ||
@@ -468,7 +470,7 @@ int ps3_io_irq_setup(enum ps3_cpu_binding cpu, unsigned int interrupt_id, | |||
468 | unsigned int *virq) | 470 | unsigned int *virq) |
469 | { | 471 | { |
470 | int result; | 472 | int result; |
471 | unsigned long outlet; | 473 | u64 outlet; |
472 | 474 | ||
473 | result = lv1_construct_io_irq_outlet(interrupt_id, &outlet); | 475 | result = lv1_construct_io_irq_outlet(interrupt_id, &outlet); |
474 | 476 | ||
@@ -525,7 +527,7 @@ int ps3_vuart_irq_setup(enum ps3_cpu_binding cpu, void* virt_addr_bmp, | |||
525 | unsigned int *virq) | 527 | unsigned int *virq) |
526 | { | 528 | { |
527 | int result; | 529 | int result; |
528 | unsigned long outlet; | 530 | u64 outlet; |
529 | u64 lpar_addr; | 531 | u64 lpar_addr; |
530 | 532 | ||
531 | BUG_ON(!is_kernel_addr((u64)virt_addr_bmp)); | 533 | BUG_ON(!is_kernel_addr((u64)virt_addr_bmp)); |
@@ -581,7 +583,7 @@ int ps3_spe_irq_setup(enum ps3_cpu_binding cpu, unsigned long spe_id, | |||
581 | unsigned int class, unsigned int *virq) | 583 | unsigned int class, unsigned int *virq) |
582 | { | 584 | { |
583 | int result; | 585 | int result; |
584 | unsigned long outlet; | 586 | u64 outlet; |
585 | 587 | ||
586 | BUG_ON(class > 2); | 588 | BUG_ON(class > 2); |
587 | 589 | ||
@@ -691,7 +693,7 @@ void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq) | |||
691 | 693 | ||
692 | pd->bmp.ipi_debug_brk_mask = 0x8000000000000000UL >> virq; | 694 | pd->bmp.ipi_debug_brk_mask = 0x8000000000000000UL >> virq; |
693 | 695 | ||
694 | pr_debug("%s:%d: cpu %u, virq %u, mask %lxh\n", __func__, __LINE__, | 696 | pr_debug("%s:%d: cpu %u, virq %u, mask %llxh\n", __func__, __LINE__, |
695 | cpu, virq, pd->bmp.ipi_debug_brk_mask); | 697 | cpu, virq, pd->bmp.ipi_debug_brk_mask); |
696 | } | 698 | } |
697 | 699 | ||
@@ -710,7 +712,7 @@ static unsigned int ps3_get_irq(void) | |||
710 | plug &= 0x3f; | 712 | plug &= 0x3f; |
711 | 713 | ||
712 | if (unlikely(plug == NO_IRQ)) { | 714 | if (unlikely(plug == NO_IRQ)) { |
713 | pr_debug("%s:%d: no plug found: thread_id %lu\n", __func__, | 715 | pr_debug("%s:%d: no plug found: thread_id %llu\n", __func__, |
714 | __LINE__, pd->thread_id); | 716 | __LINE__, pd->thread_id); |
715 | dump_bmp(&per_cpu(ps3_private, 0)); | 717 | dump_bmp(&per_cpu(ps3_private, 0)); |
716 | dump_bmp(&per_cpu(ps3_private, 1)); | 718 | dump_bmp(&per_cpu(ps3_private, 1)); |
@@ -745,7 +747,7 @@ void __init ps3_init_IRQ(void) | |||
745 | pd->thread_id = get_hard_smp_processor_id(cpu); | 747 | pd->thread_id = get_hard_smp_processor_id(cpu); |
746 | spin_lock_init(&pd->bmp.lock); | 748 | spin_lock_init(&pd->bmp.lock); |
747 | 749 | ||
748 | pr_debug("%s:%d: ppe_id %lu, thread_id %lu, bmp %lxh\n", | 750 | pr_debug("%s:%d: ppe_id %llu, thread_id %llu, bmp %lxh\n", |
749 | __func__, __LINE__, pd->ppe_id, pd->thread_id, | 751 | __func__, __LINE__, pd->ppe_id, pd->thread_id, |
750 | ps3_mm_phys_to_lpar(__pa(&pd->bmp))); | 752 | ps3_mm_phys_to_lpar(__pa(&pd->bmp))); |
751 | 753 | ||
@@ -770,6 +772,6 @@ void ps3_shutdown_IRQ(int cpu) | |||
770 | lv1_get_logical_ppe_id(&ppe_id); | 772 | lv1_get_logical_ppe_id(&ppe_id); |
771 | result = lv1_configure_irq_state_bitmap(ppe_id, thread_id, 0); | 773 | result = lv1_configure_irq_state_bitmap(ppe_id, thread_id, 0); |
772 | 774 | ||
773 | DBG("%s:%d: lv1_configure_irq_state_bitmap (%lu:%lu/%d) %s\n", __func__, | 775 | DBG("%s:%d: lv1_configure_irq_state_bitmap (%llu:%llu/%d) %s\n", __func__, |
774 | __LINE__, ppe_id, thread_id, cpu, ps3_result(result)); | 776 | __LINE__, ppe_id, thread_id, cpu, ps3_result(result)); |
775 | } | 777 | } |
diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c index a4d49dd9e8a9..67de6bf3db3d 100644 --- a/arch/powerpc/platforms/ps3/mm.c +++ b/arch/powerpc/platforms/ps3/mm.c | |||
@@ -79,8 +79,8 @@ enum { | |||
79 | */ | 79 | */ |
80 | 80 | ||
81 | struct mem_region { | 81 | struct mem_region { |
82 | unsigned long base; | 82 | u64 base; |
83 | unsigned long size; | 83 | u64 size; |
84 | unsigned long offset; | 84 | unsigned long offset; |
85 | }; | 85 | }; |
86 | 86 | ||
@@ -103,9 +103,9 @@ struct mem_region { | |||
103 | */ | 103 | */ |
104 | 104 | ||
105 | struct map { | 105 | struct map { |
106 | unsigned long total; | 106 | u64 total; |
107 | unsigned long vas_id; | 107 | u64 vas_id; |
108 | unsigned long htab_size; | 108 | u64 htab_size; |
109 | struct mem_region rm; | 109 | struct mem_region rm; |
110 | struct mem_region r1; | 110 | struct mem_region r1; |
111 | }; | 111 | }; |
@@ -114,13 +114,13 @@ struct map { | |||
114 | static void __maybe_unused _debug_dump_map(const struct map *m, | 114 | static void __maybe_unused _debug_dump_map(const struct map *m, |
115 | const char *func, int line) | 115 | const char *func, int line) |
116 | { | 116 | { |
117 | DBG("%s:%d: map.total = %lxh\n", func, line, m->total); | 117 | DBG("%s:%d: map.total = %llxh\n", func, line, m->total); |
118 | DBG("%s:%d: map.rm.size = %lxh\n", func, line, m->rm.size); | 118 | DBG("%s:%d: map.rm.size = %llxh\n", func, line, m->rm.size); |
119 | DBG("%s:%d: map.vas_id = %lu\n", func, line, m->vas_id); | 119 | DBG("%s:%d: map.vas_id = %llu\n", func, line, m->vas_id); |
120 | DBG("%s:%d: map.htab_size = %lxh\n", func, line, m->htab_size); | 120 | DBG("%s:%d: map.htab_size = %llxh\n", func, line, m->htab_size); |
121 | DBG("%s:%d: map.r1.base = %lxh\n", func, line, m->r1.base); | 121 | DBG("%s:%d: map.r1.base = %llxh\n", func, line, m->r1.base); |
122 | DBG("%s:%d: map.r1.offset = %lxh\n", func, line, m->r1.offset); | 122 | DBG("%s:%d: map.r1.offset = %lxh\n", func, line, m->r1.offset); |
123 | DBG("%s:%d: map.r1.size = %lxh\n", func, line, m->r1.size); | 123 | DBG("%s:%d: map.r1.size = %llxh\n", func, line, m->r1.size); |
124 | } | 124 | } |
125 | 125 | ||
126 | static struct map map; | 126 | static struct map map; |
@@ -146,11 +146,11 @@ EXPORT_SYMBOL(ps3_mm_phys_to_lpar); | |||
146 | void __init ps3_mm_vas_create(unsigned long* htab_size) | 146 | void __init ps3_mm_vas_create(unsigned long* htab_size) |
147 | { | 147 | { |
148 | int result; | 148 | int result; |
149 | unsigned long start_address; | 149 | u64 start_address; |
150 | unsigned long size; | 150 | u64 size; |
151 | unsigned long access_right; | 151 | u64 access_right; |
152 | unsigned long max_page_size; | 152 | u64 max_page_size; |
153 | unsigned long flags; | 153 | u64 flags; |
154 | 154 | ||
155 | result = lv1_query_logical_partition_address_region_info(0, | 155 | result = lv1_query_logical_partition_address_region_info(0, |
156 | &start_address, &size, &access_right, &max_page_size, | 156 | &start_address, &size, &access_right, &max_page_size, |
@@ -164,7 +164,7 @@ void __init ps3_mm_vas_create(unsigned long* htab_size) | |||
164 | } | 164 | } |
165 | 165 | ||
166 | if (max_page_size < PAGE_SHIFT_16M) { | 166 | if (max_page_size < PAGE_SHIFT_16M) { |
167 | DBG("%s:%d: bad max_page_size %lxh\n", __func__, __LINE__, | 167 | DBG("%s:%d: bad max_page_size %llxh\n", __func__, __LINE__, |
168 | max_page_size); | 168 | max_page_size); |
169 | goto fail; | 169 | goto fail; |
170 | } | 170 | } |
@@ -208,7 +208,7 @@ void ps3_mm_vas_destroy(void) | |||
208 | { | 208 | { |
209 | int result; | 209 | int result; |
210 | 210 | ||
211 | DBG("%s:%d: map.vas_id = %lu\n", __func__, __LINE__, map.vas_id); | 211 | DBG("%s:%d: map.vas_id = %llu\n", __func__, __LINE__, map.vas_id); |
212 | 212 | ||
213 | if (map.vas_id) { | 213 | if (map.vas_id) { |
214 | result = lv1_select_virtual_address_space(0); | 214 | result = lv1_select_virtual_address_space(0); |
@@ -235,15 +235,14 @@ void ps3_mm_vas_destroy(void) | |||
235 | static int ps3_mm_region_create(struct mem_region *r, unsigned long size) | 235 | static int ps3_mm_region_create(struct mem_region *r, unsigned long size) |
236 | { | 236 | { |
237 | int result; | 237 | int result; |
238 | unsigned long muid; | 238 | u64 muid; |
239 | 239 | ||
240 | r->size = _ALIGN_DOWN(size, 1 << PAGE_SHIFT_16M); | 240 | r->size = _ALIGN_DOWN(size, 1 << PAGE_SHIFT_16M); |
241 | 241 | ||
242 | DBG("%s:%d requested %lxh\n", __func__, __LINE__, size); | 242 | DBG("%s:%d requested %lxh\n", __func__, __LINE__, size); |
243 | DBG("%s:%d actual %lxh\n", __func__, __LINE__, r->size); | 243 | DBG("%s:%d actual %llxh\n", __func__, __LINE__, r->size); |
244 | DBG("%s:%d difference %lxh (%luMB)\n", __func__, __LINE__, | 244 | DBG("%s:%d difference %llxh (%lluMB)\n", __func__, __LINE__, |
245 | (unsigned long)(size - r->size), | 245 | size - r->size, (size - r->size) / 1024 / 1024); |
246 | (size - r->size) / 1024 / 1024); | ||
247 | 246 | ||
248 | if (r->size == 0) { | 247 | if (r->size == 0) { |
249 | DBG("%s:%d: size == 0\n", __func__, __LINE__); | 248 | DBG("%s:%d: size == 0\n", __func__, __LINE__); |
@@ -277,7 +276,7 @@ static void ps3_mm_region_destroy(struct mem_region *r) | |||
277 | { | 276 | { |
278 | int result; | 277 | int result; |
279 | 278 | ||
280 | DBG("%s:%d: r->base = %lxh\n", __func__, __LINE__, r->base); | 279 | DBG("%s:%d: r->base = %llxh\n", __func__, __LINE__, r->base); |
281 | if (r->base) { | 280 | if (r->base) { |
282 | result = lv1_release_memory(r->base); | 281 | result = lv1_release_memory(r->base); |
283 | BUG_ON(result); | 282 | BUG_ON(result); |
@@ -355,7 +354,7 @@ static unsigned long dma_sb_lpar_to_bus(struct ps3_dma_region *r, | |||
355 | static void __maybe_unused _dma_dump_region(const struct ps3_dma_region *r, | 354 | static void __maybe_unused _dma_dump_region(const struct ps3_dma_region *r, |
356 | const char *func, int line) | 355 | const char *func, int line) |
357 | { | 356 | { |
358 | DBG("%s:%d: dev %lu:%lu\n", func, line, r->dev->bus_id, | 357 | DBG("%s:%d: dev %llu:%llu\n", func, line, r->dev->bus_id, |
359 | r->dev->dev_id); | 358 | r->dev->dev_id); |
360 | DBG("%s:%d: page_size %u\n", func, line, r->page_size); | 359 | DBG("%s:%d: page_size %u\n", func, line, r->page_size); |
361 | DBG("%s:%d: bus_addr %lxh\n", func, line, r->bus_addr); | 360 | DBG("%s:%d: bus_addr %lxh\n", func, line, r->bus_addr); |
@@ -390,7 +389,7 @@ struct dma_chunk { | |||
390 | static void _dma_dump_chunk (const struct dma_chunk* c, const char* func, | 389 | static void _dma_dump_chunk (const struct dma_chunk* c, const char* func, |
391 | int line) | 390 | int line) |
392 | { | 391 | { |
393 | DBG("%s:%d: r.dev %lu:%lu\n", func, line, | 392 | DBG("%s:%d: r.dev %llu:%llu\n", func, line, |
394 | c->region->dev->bus_id, c->region->dev->dev_id); | 393 | c->region->dev->bus_id, c->region->dev->dev_id); |
395 | DBG("%s:%d: r.bus_addr %lxh\n", func, line, c->region->bus_addr); | 394 | DBG("%s:%d: r.bus_addr %lxh\n", func, line, c->region->bus_addr); |
396 | DBG("%s:%d: r.page_size %u\n", func, line, c->region->page_size); | 395 | DBG("%s:%d: r.page_size %u\n", func, line, c->region->page_size); |
@@ -596,7 +595,7 @@ static int dma_ioc0_map_pages(struct ps3_dma_region *r, unsigned long phys_addr, | |||
596 | 595 | ||
597 | /* build ioptes for the area */ | 596 | /* build ioptes for the area */ |
598 | pages = len >> r->page_size; | 597 | pages = len >> r->page_size; |
599 | DBG("%s: pgsize=%#x len=%#lx pages=%#x iopteflag=%#lx\n", __func__, | 598 | DBG("%s: pgsize=%#x len=%#lx pages=%#x iopteflag=%#llx\n", __func__, |
600 | r->page_size, r->len, pages, iopte_flag); | 599 | r->page_size, r->len, pages, iopte_flag); |
601 | for (iopage = 0; iopage < pages; iopage++) { | 600 | for (iopage = 0; iopage < pages; iopage++) { |
602 | offset = (1 << r->page_size) * iopage; | 601 | offset = (1 << r->page_size) * iopage; |
@@ -648,13 +647,14 @@ fail_alloc: | |||
648 | static int dma_sb_region_create(struct ps3_dma_region *r) | 647 | static int dma_sb_region_create(struct ps3_dma_region *r) |
649 | { | 648 | { |
650 | int result; | 649 | int result; |
650 | u64 bus_addr; | ||
651 | 651 | ||
652 | DBG(" -> %s:%d:\n", __func__, __LINE__); | 652 | DBG(" -> %s:%d:\n", __func__, __LINE__); |
653 | 653 | ||
654 | BUG_ON(!r); | 654 | BUG_ON(!r); |
655 | 655 | ||
656 | if (!r->dev->bus_id) { | 656 | if (!r->dev->bus_id) { |
657 | pr_info("%s:%d: %lu:%lu no dma\n", __func__, __LINE__, | 657 | pr_info("%s:%d: %llu:%llu no dma\n", __func__, __LINE__, |
658 | r->dev->bus_id, r->dev->dev_id); | 658 | r->dev->bus_id, r->dev->dev_id); |
659 | return 0; | 659 | return 0; |
660 | } | 660 | } |
@@ -671,7 +671,8 @@ static int dma_sb_region_create(struct ps3_dma_region *r) | |||
671 | 671 | ||
672 | result = lv1_allocate_device_dma_region(r->dev->bus_id, r->dev->dev_id, | 672 | result = lv1_allocate_device_dma_region(r->dev->bus_id, r->dev->dev_id, |
673 | roundup_pow_of_two(r->len), r->page_size, r->region_type, | 673 | roundup_pow_of_two(r->len), r->page_size, r->region_type, |
674 | &r->bus_addr); | 674 | &bus_addr); |
675 | r->bus_addr = bus_addr; | ||
675 | 676 | ||
676 | if (result) { | 677 | if (result) { |
677 | DBG("%s:%d: lv1_allocate_device_dma_region failed: %s\n", | 678 | DBG("%s:%d: lv1_allocate_device_dma_region failed: %s\n", |
@@ -685,6 +686,7 @@ static int dma_sb_region_create(struct ps3_dma_region *r) | |||
685 | static int dma_ioc0_region_create(struct ps3_dma_region *r) | 686 | static int dma_ioc0_region_create(struct ps3_dma_region *r) |
686 | { | 687 | { |
687 | int result; | 688 | int result; |
689 | u64 bus_addr; | ||
688 | 690 | ||
689 | INIT_LIST_HEAD(&r->chunk_list.head); | 691 | INIT_LIST_HEAD(&r->chunk_list.head); |
690 | spin_lock_init(&r->chunk_list.lock); | 692 | spin_lock_init(&r->chunk_list.lock); |
@@ -692,7 +694,8 @@ static int dma_ioc0_region_create(struct ps3_dma_region *r) | |||
692 | result = lv1_allocate_io_segment(0, | 694 | result = lv1_allocate_io_segment(0, |
693 | r->len, | 695 | r->len, |
694 | r->page_size, | 696 | r->page_size, |
695 | &r->bus_addr); | 697 | &bus_addr); |
698 | r->bus_addr = bus_addr; | ||
696 | if (result) { | 699 | if (result) { |
697 | DBG("%s:%d: lv1_allocate_io_segment failed: %s\n", | 700 | DBG("%s:%d: lv1_allocate_io_segment failed: %s\n", |
698 | __func__, __LINE__, ps3_result(result)); | 701 | __func__, __LINE__, ps3_result(result)); |
@@ -720,7 +723,7 @@ static int dma_sb_region_free(struct ps3_dma_region *r) | |||
720 | BUG_ON(!r); | 723 | BUG_ON(!r); |
721 | 724 | ||
722 | if (!r->dev->bus_id) { | 725 | if (!r->dev->bus_id) { |
723 | pr_info("%s:%d: %lu:%lu no dma\n", __func__, __LINE__, | 726 | pr_info("%s:%d: %llu:%llu no dma\n", __func__, __LINE__, |
724 | r->dev->bus_id, r->dev->dev_id); | 727 | r->dev->bus_id, r->dev->dev_id); |
725 | return 0; | 728 | return 0; |
726 | } | 729 | } |
@@ -777,7 +780,7 @@ static int dma_ioc0_region_free(struct ps3_dma_region *r) | |||
777 | */ | 780 | */ |
778 | 781 | ||
779 | static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr, | 782 | static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr, |
780 | unsigned long len, unsigned long *bus_addr, | 783 | unsigned long len, dma_addr_t *bus_addr, |
781 | u64 iopte_flag) | 784 | u64 iopte_flag) |
782 | { | 785 | { |
783 | int result; | 786 | int result; |
@@ -800,7 +803,7 @@ static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr, | |||
800 | DBG("%s:%d lpar_addr %lxh\n", __func__, __LINE__, | 803 | DBG("%s:%d lpar_addr %lxh\n", __func__, __LINE__, |
801 | lpar_addr); | 804 | lpar_addr); |
802 | DBG("%s:%d len %lxh\n", __func__, __LINE__, len); | 805 | DBG("%s:%d len %lxh\n", __func__, __LINE__, len); |
803 | DBG("%s:%d bus_addr %lxh (%lxh)\n", __func__, __LINE__, | 806 | DBG("%s:%d bus_addr %llxh (%lxh)\n", __func__, __LINE__, |
804 | *bus_addr, len); | 807 | *bus_addr, len); |
805 | } | 808 | } |
806 | 809 | ||
@@ -832,7 +835,7 @@ static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr, | |||
832 | } | 835 | } |
833 | 836 | ||
834 | static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr, | 837 | static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr, |
835 | unsigned long len, unsigned long *bus_addr, | 838 | unsigned long len, dma_addr_t *bus_addr, |
836 | u64 iopte_flag) | 839 | u64 iopte_flag) |
837 | { | 840 | { |
838 | int result; | 841 | int result; |
@@ -872,7 +875,7 @@ static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr, | |||
872 | return result; | 875 | return result; |
873 | } | 876 | } |
874 | *bus_addr = c->bus_addr + phys_addr - aligned_phys; | 877 | *bus_addr = c->bus_addr + phys_addr - aligned_phys; |
875 | DBG("%s: va=%#lx pa=%#lx a_pa=%#lx bus=%#lx\n", __func__, | 878 | DBG("%s: va=%#lx pa=%#lx a_pa=%#lx bus=%#llx\n", __func__, |
876 | virt_addr, phys_addr, aligned_phys, *bus_addr); | 879 | virt_addr, phys_addr, aligned_phys, *bus_addr); |
877 | c->usage_count = 1; | 880 | c->usage_count = 1; |
878 | 881 | ||
@@ -889,7 +892,7 @@ static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr, | |||
889 | * This is the common dma unmap routine. | 892 | * This is the common dma unmap routine. |
890 | */ | 893 | */ |
891 | 894 | ||
892 | static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr, | 895 | static int dma_sb_unmap_area(struct ps3_dma_region *r, dma_addr_t bus_addr, |
893 | unsigned long len) | 896 | unsigned long len) |
894 | { | 897 | { |
895 | unsigned long flags; | 898 | unsigned long flags; |
@@ -903,7 +906,7 @@ static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr, | |||
903 | 1 << r->page_size); | 906 | 1 << r->page_size); |
904 | unsigned long aligned_len = _ALIGN_UP(len + bus_addr | 907 | unsigned long aligned_len = _ALIGN_UP(len + bus_addr |
905 | - aligned_bus, 1 << r->page_size); | 908 | - aligned_bus, 1 << r->page_size); |
906 | DBG("%s:%d: not found: bus_addr %lxh\n", | 909 | DBG("%s:%d: not found: bus_addr %llxh\n", |
907 | __func__, __LINE__, bus_addr); | 910 | __func__, __LINE__, bus_addr); |
908 | DBG("%s:%d: not found: len %lxh\n", | 911 | DBG("%s:%d: not found: len %lxh\n", |
909 | __func__, __LINE__, len); | 912 | __func__, __LINE__, len); |
@@ -926,12 +929,12 @@ static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr, | |||
926 | } | 929 | } |
927 | 930 | ||
928 | static int dma_ioc0_unmap_area(struct ps3_dma_region *r, | 931 | static int dma_ioc0_unmap_area(struct ps3_dma_region *r, |
929 | unsigned long bus_addr, unsigned long len) | 932 | dma_addr_t bus_addr, unsigned long len) |
930 | { | 933 | { |
931 | unsigned long flags; | 934 | unsigned long flags; |
932 | struct dma_chunk *c; | 935 | struct dma_chunk *c; |
933 | 936 | ||
934 | DBG("%s: start a=%#lx l=%#lx\n", __func__, bus_addr, len); | 937 | DBG("%s: start a=%#llx l=%#lx\n", __func__, bus_addr, len); |
935 | spin_lock_irqsave(&r->chunk_list.lock, flags); | 938 | spin_lock_irqsave(&r->chunk_list.lock, flags); |
936 | c = dma_find_chunk(r, bus_addr, len); | 939 | c = dma_find_chunk(r, bus_addr, len); |
937 | 940 | ||
@@ -941,7 +944,7 @@ static int dma_ioc0_unmap_area(struct ps3_dma_region *r, | |||
941 | unsigned long aligned_len = _ALIGN_UP(len + bus_addr | 944 | unsigned long aligned_len = _ALIGN_UP(len + bus_addr |
942 | - aligned_bus, | 945 | - aligned_bus, |
943 | 1 << r->page_size); | 946 | 1 << r->page_size); |
944 | DBG("%s:%d: not found: bus_addr %lxh\n", | 947 | DBG("%s:%d: not found: bus_addr %llxh\n", |
945 | __func__, __LINE__, bus_addr); | 948 | __func__, __LINE__, bus_addr); |
946 | DBG("%s:%d: not found: len %lxh\n", | 949 | DBG("%s:%d: not found: len %lxh\n", |
947 | __func__, __LINE__, len); | 950 | __func__, __LINE__, len); |
@@ -975,7 +978,8 @@ static int dma_ioc0_unmap_area(struct ps3_dma_region *r, | |||
975 | static int dma_sb_region_create_linear(struct ps3_dma_region *r) | 978 | static int dma_sb_region_create_linear(struct ps3_dma_region *r) |
976 | { | 979 | { |
977 | int result; | 980 | int result; |
978 | unsigned long virt_addr, len, tmp; | 981 | unsigned long virt_addr, len; |
982 | dma_addr_t tmp; | ||
979 | 983 | ||
980 | if (r->len > 16*1024*1024) { /* FIXME: need proper fix */ | 984 | if (r->len > 16*1024*1024) { /* FIXME: need proper fix */ |
981 | /* force 16M dma pages for linear mapping */ | 985 | /* force 16M dma pages for linear mapping */ |
@@ -1027,7 +1031,8 @@ static int dma_sb_region_create_linear(struct ps3_dma_region *r) | |||
1027 | static int dma_sb_region_free_linear(struct ps3_dma_region *r) | 1031 | static int dma_sb_region_free_linear(struct ps3_dma_region *r) |
1028 | { | 1032 | { |
1029 | int result; | 1033 | int result; |
1030 | unsigned long bus_addr, len, lpar_addr; | 1034 | dma_addr_t bus_addr; |
1035 | unsigned long len, lpar_addr; | ||
1031 | 1036 | ||
1032 | if (r->offset < map.rm.size) { | 1037 | if (r->offset < map.rm.size) { |
1033 | /* Unmap (part of) 1st RAM chunk */ | 1038 | /* Unmap (part of) 1st RAM chunk */ |
@@ -1072,7 +1077,7 @@ static int dma_sb_region_free_linear(struct ps3_dma_region *r) | |||
1072 | */ | 1077 | */ |
1073 | 1078 | ||
1074 | static int dma_sb_map_area_linear(struct ps3_dma_region *r, | 1079 | static int dma_sb_map_area_linear(struct ps3_dma_region *r, |
1075 | unsigned long virt_addr, unsigned long len, unsigned long *bus_addr, | 1080 | unsigned long virt_addr, unsigned long len, dma_addr_t *bus_addr, |
1076 | u64 iopte_flag) | 1081 | u64 iopte_flag) |
1077 | { | 1082 | { |
1078 | unsigned long phys_addr = is_kernel_addr(virt_addr) ? __pa(virt_addr) | 1083 | unsigned long phys_addr = is_kernel_addr(virt_addr) ? __pa(virt_addr) |
@@ -1091,7 +1096,7 @@ static int dma_sb_map_area_linear(struct ps3_dma_region *r, | |||
1091 | */ | 1096 | */ |
1092 | 1097 | ||
1093 | static int dma_sb_unmap_area_linear(struct ps3_dma_region *r, | 1098 | static int dma_sb_unmap_area_linear(struct ps3_dma_region *r, |
1094 | unsigned long bus_addr, unsigned long len) | 1099 | dma_addr_t bus_addr, unsigned long len) |
1095 | { | 1100 | { |
1096 | return 0; | 1101 | return 0; |
1097 | }; | 1102 | }; |
@@ -1169,13 +1174,13 @@ int ps3_dma_region_free(struct ps3_dma_region *r) | |||
1169 | EXPORT_SYMBOL(ps3_dma_region_free); | 1174 | EXPORT_SYMBOL(ps3_dma_region_free); |
1170 | 1175 | ||
1171 | int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr, | 1176 | int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr, |
1172 | unsigned long len, unsigned long *bus_addr, | 1177 | unsigned long len, dma_addr_t *bus_addr, |
1173 | u64 iopte_flag) | 1178 | u64 iopte_flag) |
1174 | { | 1179 | { |
1175 | return r->region_ops->map(r, virt_addr, len, bus_addr, iopte_flag); | 1180 | return r->region_ops->map(r, virt_addr, len, bus_addr, iopte_flag); |
1176 | } | 1181 | } |
1177 | 1182 | ||
1178 | int ps3_dma_unmap(struct ps3_dma_region *r, unsigned long bus_addr, | 1183 | int ps3_dma_unmap(struct ps3_dma_region *r, dma_addr_t bus_addr, |
1179 | unsigned long len) | 1184 | unsigned long len) |
1180 | { | 1185 | { |
1181 | return r->region_ops->unmap(r, bus_addr, len); | 1186 | return r->region_ops->unmap(r, bus_addr, len); |
diff --git a/arch/powerpc/platforms/ps3/os-area.c b/arch/powerpc/platforms/ps3/os-area.c index 1d201782d4e5..e1c83c23b435 100644 --- a/arch/powerpc/platforms/ps3/os-area.c +++ b/arch/powerpc/platforms/ps3/os-area.c | |||
@@ -306,7 +306,7 @@ static void _dump_params(const struct os_area_params *p, const char *func, | |||
306 | { | 306 | { |
307 | pr_debug("%s:%d: p.boot_flag: %u\n", func, line, p->boot_flag); | 307 | pr_debug("%s:%d: p.boot_flag: %u\n", func, line, p->boot_flag); |
308 | pr_debug("%s:%d: p.num_params: %u\n", func, line, p->num_params); | 308 | pr_debug("%s:%d: p.num_params: %u\n", func, line, p->num_params); |
309 | pr_debug("%s:%d: p.rtc_diff %ld\n", func, line, p->rtc_diff); | 309 | pr_debug("%s:%d: p.rtc_diff %lld\n", func, line, p->rtc_diff); |
310 | pr_debug("%s:%d: p.av_multi_out %u\n", func, line, p->av_multi_out); | 310 | pr_debug("%s:%d: p.av_multi_out %u\n", func, line, p->av_multi_out); |
311 | pr_debug("%s:%d: p.ctrl_button: %u\n", func, line, p->ctrl_button); | 311 | pr_debug("%s:%d: p.ctrl_button: %u\n", func, line, p->ctrl_button); |
312 | pr_debug("%s:%d: p.static_ip_addr: %u.%u.%u.%u\n", func, line, | 312 | pr_debug("%s:%d: p.static_ip_addr: %u.%u.%u.%u\n", func, line, |
diff --git a/arch/powerpc/platforms/ps3/repository.c b/arch/powerpc/platforms/ps3/repository.c index 22063adeb38b..5e304c292f68 100644 --- a/arch/powerpc/platforms/ps3/repository.c +++ b/arch/powerpc/platforms/ps3/repository.c | |||
@@ -44,7 +44,7 @@ static void _dump_field(const char *hdr, u64 n, const char *func, int line) | |||
44 | s[i] = (in[i] <= 126 && in[i] >= 32) ? in[i] : '.'; | 44 | s[i] = (in[i] <= 126 && in[i] >= 32) ? in[i] : '.'; |
45 | s[i] = 0; | 45 | s[i] = 0; |
46 | 46 | ||
47 | pr_debug("%s:%d: %s%016lx : %s\n", func, line, hdr, n, s); | 47 | pr_debug("%s:%d: %s%016llx : %s\n", func, line, hdr, n, s); |
48 | #endif | 48 | #endif |
49 | } | 49 | } |
50 | 50 | ||
@@ -70,8 +70,8 @@ static void _dump_node(unsigned int lpar_id, u64 n1, u64 n2, u64 n3, u64 n4, | |||
70 | _dump_field("n2: ", n2, func, line); | 70 | _dump_field("n2: ", n2, func, line); |
71 | _dump_field("n3: ", n3, func, line); | 71 | _dump_field("n3: ", n3, func, line); |
72 | _dump_field("n4: ", n4, func, line); | 72 | _dump_field("n4: ", n4, func, line); |
73 | pr_debug("%s:%d: v1: %016lx\n", func, line, v1); | 73 | pr_debug("%s:%d: v1: %016llx\n", func, line, v1); |
74 | pr_debug("%s:%d: v2: %016lx\n", func, line, v2); | 74 | pr_debug("%s:%d: v2: %016llx\n", func, line, v2); |
75 | } | 75 | } |
76 | 76 | ||
77 | /** | 77 | /** |
@@ -149,10 +149,10 @@ static int read_node(unsigned int lpar_id, u64 n1, u64 n2, u64 n3, u64 n4, | |||
149 | *_v2 = v2; | 149 | *_v2 = v2; |
150 | 150 | ||
151 | if (v1 && !_v1) | 151 | if (v1 && !_v1) |
152 | pr_debug("%s:%d: warning: discarding non-zero v1: %016lx\n", | 152 | pr_debug("%s:%d: warning: discarding non-zero v1: %016llx\n", |
153 | __func__, __LINE__, v1); | 153 | __func__, __LINE__, v1); |
154 | if (v2 && !_v2) | 154 | if (v2 && !_v2) |
155 | pr_debug("%s:%d: warning: discarding non-zero v2: %016lx\n", | 155 | pr_debug("%s:%d: warning: discarding non-zero v2: %016llx\n", |
156 | __func__, __LINE__, v2); | 156 | __func__, __LINE__, v2); |
157 | 157 | ||
158 | return 0; | 158 | return 0; |
@@ -327,7 +327,7 @@ int ps3_repository_find_device(struct ps3_repository_device *repo) | |||
327 | return result; | 327 | return result; |
328 | } | 328 | } |
329 | 329 | ||
330 | pr_debug("%s:%d: bus_type %u, bus_index %u, bus_id %lu, num_dev %u\n", | 330 | pr_debug("%s:%d: bus_type %u, bus_index %u, bus_id %llu, num_dev %u\n", |
331 | __func__, __LINE__, tmp.bus_type, tmp.bus_index, tmp.bus_id, | 331 | __func__, __LINE__, tmp.bus_type, tmp.bus_index, tmp.bus_id, |
332 | num_dev); | 332 | num_dev); |
333 | 333 | ||
@@ -353,7 +353,7 @@ int ps3_repository_find_device(struct ps3_repository_device *repo) | |||
353 | return result; | 353 | return result; |
354 | } | 354 | } |
355 | 355 | ||
356 | pr_debug("%s:%d: found: dev_type %u, dev_index %u, dev_id %lu\n", | 356 | pr_debug("%s:%d: found: dev_type %u, dev_index %u, dev_id %llu\n", |
357 | __func__, __LINE__, tmp.dev_type, tmp.dev_index, tmp.dev_id); | 357 | __func__, __LINE__, tmp.dev_type, tmp.dev_index, tmp.dev_id); |
358 | 358 | ||
359 | *repo = tmp; | 359 | *repo = tmp; |
@@ -367,7 +367,7 @@ int ps3_repository_find_device_by_id(struct ps3_repository_device *repo, | |||
367 | struct ps3_repository_device tmp; | 367 | struct ps3_repository_device tmp; |
368 | unsigned int num_dev; | 368 | unsigned int num_dev; |
369 | 369 | ||
370 | pr_debug(" -> %s:%u: find device by id %lu:%lu\n", __func__, __LINE__, | 370 | pr_debug(" -> %s:%u: find device by id %llu:%llu\n", __func__, __LINE__, |
371 | bus_id, dev_id); | 371 | bus_id, dev_id); |
372 | 372 | ||
373 | for (tmp.bus_index = 0; tmp.bus_index < 10; tmp.bus_index++) { | 373 | for (tmp.bus_index = 0; tmp.bus_index < 10; tmp.bus_index++) { |
@@ -382,7 +382,7 @@ int ps3_repository_find_device_by_id(struct ps3_repository_device *repo, | |||
382 | if (tmp.bus_id == bus_id) | 382 | if (tmp.bus_id == bus_id) |
383 | goto found_bus; | 383 | goto found_bus; |
384 | 384 | ||
385 | pr_debug("%s:%u: skip, bus_id %lu\n", __func__, __LINE__, | 385 | pr_debug("%s:%u: skip, bus_id %llu\n", __func__, __LINE__, |
386 | tmp.bus_id); | 386 | tmp.bus_id); |
387 | } | 387 | } |
388 | pr_debug(" <- %s:%u: bus not found\n", __func__, __LINE__); | 388 | pr_debug(" <- %s:%u: bus not found\n", __func__, __LINE__); |
@@ -416,7 +416,7 @@ found_bus: | |||
416 | if (tmp.dev_id == dev_id) | 416 | if (tmp.dev_id == dev_id) |
417 | goto found_dev; | 417 | goto found_dev; |
418 | 418 | ||
419 | pr_debug("%s:%u: skip, dev_id %lu\n", __func__, __LINE__, | 419 | pr_debug("%s:%u: skip, dev_id %llu\n", __func__, __LINE__, |
420 | tmp.dev_id); | 420 | tmp.dev_id); |
421 | } | 421 | } |
422 | pr_debug(" <- %s:%u: dev not found\n", __func__, __LINE__); | 422 | pr_debug(" <- %s:%u: dev not found\n", __func__, __LINE__); |
@@ -430,7 +430,7 @@ found_dev: | |||
430 | return result; | 430 | return result; |
431 | } | 431 | } |
432 | 432 | ||
433 | pr_debug(" <- %s:%u: found: type (%u:%u) index (%u:%u) id (%lu:%lu)\n", | 433 | pr_debug(" <- %s:%u: found: type (%u:%u) index (%u:%u) id (%llu:%llu)\n", |
434 | __func__, __LINE__, tmp.bus_type, tmp.dev_type, tmp.bus_index, | 434 | __func__, __LINE__, tmp.bus_type, tmp.dev_type, tmp.bus_index, |
435 | tmp.dev_index, tmp.bus_id, tmp.dev_id); | 435 | tmp.dev_index, tmp.bus_id, tmp.dev_id); |
436 | *repo = tmp; | 436 | *repo = tmp; |
diff --git a/arch/powerpc/platforms/ps3/setup.c b/arch/powerpc/platforms/ps3/setup.c index 35f3e85cf60e..3331ccbb8d38 100644 --- a/arch/powerpc/platforms/ps3/setup.c +++ b/arch/powerpc/platforms/ps3/setup.c | |||
@@ -186,7 +186,7 @@ early_param("ps3flash", early_parse_ps3flash); | |||
186 | #define prealloc_ps3flash_bounce_buffer() do { } while (0) | 186 | #define prealloc_ps3flash_bounce_buffer() do { } while (0) |
187 | #endif | 187 | #endif |
188 | 188 | ||
189 | static int ps3_set_dabr(u64 dabr) | 189 | static int ps3_set_dabr(unsigned long dabr) |
190 | { | 190 | { |
191 | enum {DABR_USER = 1, DABR_KERNEL = 2,}; | 191 | enum {DABR_USER = 1, DABR_KERNEL = 2,}; |
192 | 192 | ||
diff --git a/arch/powerpc/platforms/ps3/spu.c b/arch/powerpc/platforms/ps3/spu.c index ccae3d446b98..b3c6a993f9f3 100644 --- a/arch/powerpc/platforms/ps3/spu.c +++ b/arch/powerpc/platforms/ps3/spu.c | |||
@@ -149,7 +149,7 @@ EXPORT_SYMBOL_GPL(ps3_get_spe_id); | |||
149 | 149 | ||
150 | static unsigned long get_vas_id(void) | 150 | static unsigned long get_vas_id(void) |
151 | { | 151 | { |
152 | unsigned long id; | 152 | u64 id; |
153 | 153 | ||
154 | lv1_get_logical_ppe_id(&id); | 154 | lv1_get_logical_ppe_id(&id); |
155 | lv1_get_virtual_address_space_id_of_ppe(id, &id); | 155 | lv1_get_virtual_address_space_id_of_ppe(id, &id); |
@@ -160,14 +160,18 @@ static unsigned long get_vas_id(void) | |||
160 | static int __init construct_spu(struct spu *spu) | 160 | static int __init construct_spu(struct spu *spu) |
161 | { | 161 | { |
162 | int result; | 162 | int result; |
163 | unsigned long unused; | 163 | u64 unused; |
164 | u64 problem_phys; | ||
165 | u64 local_store_phys; | ||
164 | 166 | ||
165 | result = lv1_construct_logical_spe(PAGE_SHIFT, PAGE_SHIFT, PAGE_SHIFT, | 167 | result = lv1_construct_logical_spe(PAGE_SHIFT, PAGE_SHIFT, PAGE_SHIFT, |
166 | PAGE_SHIFT, PAGE_SHIFT, get_vas_id(), SPE_TYPE_LOGICAL, | 168 | PAGE_SHIFT, PAGE_SHIFT, get_vas_id(), SPE_TYPE_LOGICAL, |
167 | &spu_pdata(spu)->priv2_addr, &spu->problem_phys, | 169 | &spu_pdata(spu)->priv2_addr, &problem_phys, |
168 | &spu->local_store_phys, &unused, | 170 | &local_store_phys, &unused, |
169 | &spu_pdata(spu)->shadow_addr, | 171 | &spu_pdata(spu)->shadow_addr, |
170 | &spu_pdata(spu)->spe_id); | 172 | &spu_pdata(spu)->spe_id); |
173 | spu->problem_phys = problem_phys; | ||
174 | spu->local_store_phys = local_store_phys; | ||
171 | 175 | ||
172 | if (result) { | 176 | if (result) { |
173 | pr_debug("%s:%d: lv1_construct_logical_spe failed: %s\n", | 177 | pr_debug("%s:%d: lv1_construct_logical_spe failed: %s\n", |
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c index ee0d22911621..58311a867851 100644 --- a/arch/powerpc/platforms/ps3/system-bus.c +++ b/arch/powerpc/platforms/ps3/system-bus.c | |||
@@ -182,7 +182,7 @@ int ps3_open_hv_device(struct ps3_system_bus_device *dev) | |||
182 | case PS3_MATCH_ID_SYSTEM_MANAGER: | 182 | case PS3_MATCH_ID_SYSTEM_MANAGER: |
183 | pr_debug("%s:%d: unsupported match_id: %u\n", __func__, | 183 | pr_debug("%s:%d: unsupported match_id: %u\n", __func__, |
184 | __LINE__, dev->match_id); | 184 | __LINE__, dev->match_id); |
185 | pr_debug("%s:%d: bus_id: %lu\n", __func__, __LINE__, | 185 | pr_debug("%s:%d: bus_id: %llu\n", __func__, __LINE__, |
186 | dev->bus_id); | 186 | dev->bus_id); |
187 | BUG(); | 187 | BUG(); |
188 | return -EINVAL; | 188 | return -EINVAL; |
@@ -220,7 +220,7 @@ int ps3_close_hv_device(struct ps3_system_bus_device *dev) | |||
220 | case PS3_MATCH_ID_SYSTEM_MANAGER: | 220 | case PS3_MATCH_ID_SYSTEM_MANAGER: |
221 | pr_debug("%s:%d: unsupported match_id: %u\n", __func__, | 221 | pr_debug("%s:%d: unsupported match_id: %u\n", __func__, |
222 | __LINE__, dev->match_id); | 222 | __LINE__, dev->match_id); |
223 | pr_debug("%s:%d: bus_id: %lu\n", __func__, __LINE__, | 223 | pr_debug("%s:%d: bus_id: %llu\n", __func__, __LINE__, |
224 | dev->bus_id); | 224 | dev->bus_id); |
225 | BUG(); | 225 | BUG(); |
226 | return -EINVAL; | 226 | return -EINVAL; |
@@ -240,7 +240,7 @@ EXPORT_SYMBOL_GPL(ps3_close_hv_device); | |||
240 | static void _dump_mmio_region(const struct ps3_mmio_region* r, | 240 | static void _dump_mmio_region(const struct ps3_mmio_region* r, |
241 | const char* func, int line) | 241 | const char* func, int line) |
242 | { | 242 | { |
243 | pr_debug("%s:%d: dev %lu:%lu\n", func, line, r->dev->bus_id, | 243 | pr_debug("%s:%d: dev %llu:%llu\n", func, line, r->dev->bus_id, |
244 | r->dev->dev_id); | 244 | r->dev->dev_id); |
245 | pr_debug("%s:%d: bus_addr %lxh\n", func, line, r->bus_addr); | 245 | pr_debug("%s:%d: bus_addr %lxh\n", func, line, r->bus_addr); |
246 | pr_debug("%s:%d: len %lxh\n", func, line, r->len); | 246 | pr_debug("%s:%d: len %lxh\n", func, line, r->len); |
@@ -250,9 +250,11 @@ static void _dump_mmio_region(const struct ps3_mmio_region* r, | |||
250 | static int ps3_sb_mmio_region_create(struct ps3_mmio_region *r) | 250 | static int ps3_sb_mmio_region_create(struct ps3_mmio_region *r) |
251 | { | 251 | { |
252 | int result; | 252 | int result; |
253 | u64 lpar_addr; | ||
253 | 254 | ||
254 | result = lv1_map_device_mmio_region(r->dev->bus_id, r->dev->dev_id, | 255 | result = lv1_map_device_mmio_region(r->dev->bus_id, r->dev->dev_id, |
255 | r->bus_addr, r->len, r->page_size, &r->lpar_addr); | 256 | r->bus_addr, r->len, r->page_size, &lpar_addr); |
257 | r->lpar_addr = lpar_addr; | ||
256 | 258 | ||
257 | if (result) { | 259 | if (result) { |
258 | pr_debug("%s:%d: lv1_map_device_mmio_region failed: %s\n", | 260 | pr_debug("%s:%d: lv1_map_device_mmio_region failed: %s\n", |
@@ -568,7 +570,7 @@ static dma_addr_t ps3_sb_map_page(struct device *_dev, struct page *page, | |||
568 | { | 570 | { |
569 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 571 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
570 | int result; | 572 | int result; |
571 | unsigned long bus_addr; | 573 | dma_addr_t bus_addr; |
572 | void *ptr = page_address(page) + offset; | 574 | void *ptr = page_address(page) + offset; |
573 | 575 | ||
574 | result = ps3_dma_map(dev->d_region, (unsigned long)ptr, size, | 576 | result = ps3_dma_map(dev->d_region, (unsigned long)ptr, size, |
@@ -590,7 +592,7 @@ static dma_addr_t ps3_ioc0_map_page(struct device *_dev, struct page *page, | |||
590 | { | 592 | { |
591 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 593 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
592 | int result; | 594 | int result; |
593 | unsigned long bus_addr; | 595 | dma_addr_t bus_addr; |
594 | u64 iopte_flag; | 596 | u64 iopte_flag; |
595 | void *ptr = page_address(page) + offset; | 597 | void *ptr = page_address(page) + offset; |
596 | 598 | ||
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h index d480f39d65e6..74d0bbb7d955 100644 --- a/arch/s390/include/asm/elf.h +++ b/arch/s390/include/asm/elf.h | |||
@@ -172,14 +172,14 @@ extern char elf_platform[]; | |||
172 | #ifndef __s390x__ | 172 | #ifndef __s390x__ |
173 | #define SET_PERSONALITY(ex) set_personality(PER_LINUX) | 173 | #define SET_PERSONALITY(ex) set_personality(PER_LINUX) |
174 | #else /* __s390x__ */ | 174 | #else /* __s390x__ */ |
175 | #define SET_PERSONALITY(ex) \ | 175 | #define SET_PERSONALITY(ex) \ |
176 | do { \ | 176 | do { \ |
177 | if (current->personality != PER_LINUX32) \ | 177 | if (personality(current->personality) != PER_LINUX32) \ |
178 | set_personality(PER_LINUX); \ | 178 | set_personality(PER_LINUX); \ |
179 | if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ | 179 | if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ |
180 | set_thread_flag(TIF_31BIT); \ | 180 | set_thread_flag(TIF_31BIT); \ |
181 | else \ | 181 | else \ |
182 | clear_thread_flag(TIF_31BIT); \ | 182 | clear_thread_flag(TIF_31BIT); \ |
183 | } while (0) | 183 | } while (0) |
184 | #endif /* __s390x__ */ | 184 | #endif /* __s390x__ */ |
185 | 185 | ||
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 6035cd20c7a7..62c706eb0de6 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
@@ -1767,3 +1767,41 @@ sys_dup3_wrapper: | |||
1767 | sys_epoll_create1_wrapper: | 1767 | sys_epoll_create1_wrapper: |
1768 | lgfr %r2,%r2 # int | 1768 | lgfr %r2,%r2 # int |
1769 | jg sys_epoll_create1 # branch to system call | 1769 | jg sys_epoll_create1 # branch to system call |
1770 | |||
1771 | .globl sys32_readahead_wrapper | ||
1772 | sys32_readahead_wrapper: | ||
1773 | lgfr %r2,%r2 # int | ||
1774 | llgfr %r3,%r3 # u32 | ||
1775 | llgfr %r4,%r4 # u32 | ||
1776 | lgfr %r5,%r5 # s32 | ||
1777 | jg sys32_readahead # branch to system call | ||
1778 | |||
1779 | .globl sys32_sendfile64_wrapper | ||
1780 | sys32_sendfile64_wrapper: | ||
1781 | lgfr %r2,%r2 # int | ||
1782 | lgfr %r3,%r3 # int | ||
1783 | llgtr %r4,%r4 # compat_loff_t * | ||
1784 | lgfr %r5,%r5 # s32 | ||
1785 | jg sys32_sendfile64 # branch to system call | ||
1786 | |||
1787 | .globl sys_tkill_wrapper | ||
1788 | sys_tkill_wrapper: | ||
1789 | lgfr %r2,%r2 # pid_t | ||
1790 | lgfr %r3,%r3 # int | ||
1791 | jg sys_tkill # branch to system call | ||
1792 | |||
1793 | .globl sys_tgkill_wrapper | ||
1794 | sys_tgkill_wrapper: | ||
1795 | lgfr %r2,%r2 # pid_t | ||
1796 | lgfr %r3,%r3 # pid_t | ||
1797 | lgfr %r4,%r4 # int | ||
1798 | jg sys_tgkill # branch to system call | ||
1799 | |||
1800 | .globl compat_sys_keyctl_wrapper | ||
1801 | compat_sys_keyctl_wrapper: | ||
1802 | llgfr %r2,%r2 # u32 | ||
1803 | llgfr %r3,%r3 # u32 | ||
1804 | llgfr %r4,%r4 # u32 | ||
1805 | llgfr %r5,%r5 # u32 | ||
1806 | llgfr %r6,%r6 # u32 | ||
1807 | jg compat_sys_keyctl # branch to system call | ||
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 76d16e0140bb..fe5b25a988ab 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S | |||
@@ -194,7 +194,7 @@ SYSCALL(sys_chown16,sys_ni_syscall,sys32_chown16_wrapper) /* old chown16 syscall | |||
194 | SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) | 194 | SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) |
195 | SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) | 195 | SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) |
196 | SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ | 196 | SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ |
197 | SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack) | 197 | SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack_wrapper) |
198 | SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) | 198 | SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) |
199 | NI_SYSCALL /* streams1 */ | 199 | NI_SYSCALL /* streams1 */ |
200 | NI_SYSCALL /* streams2 */ | 200 | NI_SYSCALL /* streams2 */ |
@@ -230,8 +230,8 @@ SYSCALL(sys_mincore,sys_mincore,sys32_mincore_wrapper) | |||
230 | SYSCALL(sys_madvise,sys_madvise,sys32_madvise_wrapper) | 230 | SYSCALL(sys_madvise,sys_madvise,sys32_madvise_wrapper) |
231 | SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */ | 231 | SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */ |
232 | SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper) | 232 | SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper) |
233 | SYSCALL(sys_readahead,sys_readahead,sys32_readahead) | 233 | SYSCALL(sys_readahead,sys_readahead,sys32_readahead_wrapper) |
234 | SYSCALL(sys_sendfile64,sys_ni_syscall,sys32_sendfile64) | 234 | SYSCALL(sys_sendfile64,sys_ni_syscall,sys32_sendfile64_wrapper) |
235 | SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper) | 235 | SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper) |
236 | SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */ | 236 | SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */ |
237 | SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper) | 237 | SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper) |
@@ -245,11 +245,11 @@ SYSCALL(sys_removexattr,sys_removexattr,sys32_removexattr_wrapper) | |||
245 | SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper) | 245 | SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper) |
246 | SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ | 246 | SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ |
247 | SYSCALL(sys_gettid,sys_gettid,sys_gettid) | 247 | SYSCALL(sys_gettid,sys_gettid,sys_gettid) |
248 | SYSCALL(sys_tkill,sys_tkill,sys_tkill) | 248 | SYSCALL(sys_tkill,sys_tkill,sys_tkill_wrapper) |
249 | SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper) | 249 | SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper) |
250 | SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) | 250 | SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) |
251 | SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ | 251 | SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ |
252 | SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill) | 252 | SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper) |
253 | NI_SYSCALL /* reserved for TUX */ | 253 | NI_SYSCALL /* reserved for TUX */ |
254 | SYSCALL(sys_io_setup,sys_io_setup,sys32_io_setup_wrapper) | 254 | SYSCALL(sys_io_setup,sys_io_setup,sys32_io_setup_wrapper) |
255 | SYSCALL(sys_io_destroy,sys_io_destroy,sys32_io_destroy_wrapper) | 255 | SYSCALL(sys_io_destroy,sys_io_destroy,sys32_io_destroy_wrapper) |
@@ -288,7 +288,7 @@ SYSCALL(sys_mq_getsetattr,sys_mq_getsetattr,compat_sys_mq_getsetattr_wrapper) | |||
288 | SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper) | 288 | SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper) |
289 | SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) | 289 | SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) |
290 | SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) | 290 | SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) |
291 | SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl) /* 280 */ | 291 | SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl_wrapper) /* 280 */ |
292 | SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid_wrapper) | 292 | SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid_wrapper) |
293 | SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) | 293 | SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) |
294 | SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper) | 294 | SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper) |
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index d649600df5b9..fc468cae4460 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c | |||
@@ -399,8 +399,10 @@ static struct workqueue_struct *time_sync_wq; | |||
399 | 399 | ||
400 | static void __init time_init_wq(void) | 400 | static void __init time_init_wq(void) |
401 | { | 401 | { |
402 | if (!time_sync_wq) | 402 | if (time_sync_wq) |
403 | time_sync_wq = create_singlethread_workqueue("timesync"); | 403 | return; |
404 | time_sync_wq = create_singlethread_workqueue("timesync"); | ||
405 | stop_machine_create(); | ||
404 | } | 406 | } |
405 | 407 | ||
406 | /* | 408 | /* |
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c index 2fb36e462194..ecf0304e61c1 100644 --- a/arch/s390/kernel/vtime.c +++ b/arch/s390/kernel/vtime.c | |||
@@ -516,8 +516,12 @@ EXPORT_SYMBOL(del_virt_timer); | |||
516 | */ | 516 | */ |
517 | void init_cpu_vtimer(void) | 517 | void init_cpu_vtimer(void) |
518 | { | 518 | { |
519 | struct thread_info *ti = current_thread_info(); | ||
519 | struct vtimer_queue *vq; | 520 | struct vtimer_queue *vq; |
520 | 521 | ||
522 | S390_lowcore.user_timer = ti->user_timer; | ||
523 | S390_lowcore.system_timer = ti->system_timer; | ||
524 | |||
521 | /* kick the virtual timer */ | 525 | /* kick the virtual timer */ |
522 | asm volatile ("STCK %0" : "=m" (S390_lowcore.last_update_clock)); | 526 | asm volatile ("STCK %0" : "=m" (S390_lowcore.last_update_clock)); |
523 | asm volatile ("STPT %0" : "=m" (S390_lowcore.last_update_timer)); | 527 | asm volatile ("STPT %0" : "=m" (S390_lowcore.last_update_timer)); |
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index f32a5197128d..ebabe518e729 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -644,66 +644,25 @@ endmenu | |||
644 | 644 | ||
645 | menu "Bus options" | 645 | menu "Bus options" |
646 | 646 | ||
647 | # Even on SuperH devices which don't have an ISA bus, | ||
648 | # this variable helps the PCMCIA modules handle | ||
649 | # IRQ requesting properly -- Greg Banks. | ||
650 | # | ||
651 | # Though we're generally not interested in it when | ||
652 | # we're not using PCMCIA, so we make it dependent on | ||
653 | # PCMCIA outright. -- PFM. | ||
654 | config ISA | ||
655 | def_bool y | ||
656 | depends on PCMCIA && HD6446X_SERIES | ||
657 | help | ||
658 | Find out whether you have ISA slots on your motherboard. ISA is the | ||
659 | name of a bus system, i.e. the way the CPU talks to the other stuff | ||
660 | inside your box. Other bus systems are PCI, EISA, MicroChannel | ||
661 | (MCA) or VESA. ISA is an older system, now being displaced by PCI; | ||
662 | newer boards don't support it. If you have ISA, say Y, otherwise N. | ||
663 | |||
664 | config EISA | ||
665 | bool | ||
666 | ---help--- | ||
667 | The Extended Industry Standard Architecture (EISA) bus was | ||
668 | developed as an open alternative to the IBM MicroChannel bus. | ||
669 | |||
670 | The EISA bus provided some of the features of the IBM MicroChannel | ||
671 | bus while maintaining backward compatibility with cards made for | ||
672 | the older ISA bus. The EISA bus saw limited use between 1988 and | ||
673 | 1995 when it was made obsolete by the PCI bus. | ||
674 | |||
675 | Say Y here if you are building a kernel for an EISA-based machine. | ||
676 | |||
677 | Otherwise, say N. | ||
678 | |||
679 | config MCA | ||
680 | bool | ||
681 | help | ||
682 | MicroChannel Architecture is found in some IBM PS/2 machines and | ||
683 | laptops. It is a bus system similar to PCI or ISA. See | ||
684 | <file:Documentation/mca.txt> (and especially the web page given | ||
685 | there) before attempting to build an MCA bus kernel. | ||
686 | |||
687 | config SBUS | ||
688 | bool | ||
689 | |||
690 | config SUPERHYWAY | 647 | config SUPERHYWAY |
691 | tristate "SuperHyway Bus support" | 648 | tristate "SuperHyway Bus support" |
692 | depends on CPU_SUBTYPE_SH4_202 | 649 | depends on CPU_SUBTYPE_SH4_202 |
693 | 650 | ||
694 | config MAPLE | 651 | config MAPLE |
695 | bool "Maple Bus support" | 652 | bool "Maple Bus support" |
696 | depends on SH_DREAMCAST | 653 | depends on SH_DREAMCAST |
697 | help | 654 | help |
698 | The Maple Bus is SEGA's serial communication bus for peripherals | 655 | The Maple Bus is SEGA's serial communication bus for peripherals |
699 | on the Dreamcast. Without this bus support you won't be able to | 656 | on the Dreamcast. Without this bus support you won't be able to |
700 | get your Dreamcast keyboard etc to work, so most users | 657 | get your Dreamcast keyboard etc to work, so most users |
701 | probably want to say 'Y' here, unless you are only using the | 658 | probably want to say 'Y' here, unless you are only using the |
702 | Dreamcast with a serial line terminal or a remote network | 659 | Dreamcast with a serial line terminal or a remote network |
703 | connection. | 660 | connection. |
704 | 661 | ||
705 | source "arch/sh/drivers/pci/Kconfig" | 662 | source "arch/sh/drivers/pci/Kconfig" |
706 | 663 | ||
664 | source "drivers/pci/pcie/Kconfig" | ||
665 | |||
707 | source "drivers/pci/Kconfig" | 666 | source "drivers/pci/Kconfig" |
708 | 667 | ||
709 | source "drivers/pcmcia/Kconfig" | 668 | source "drivers/pcmcia/Kconfig" |
diff --git a/arch/sh/boards/board-ap325rxa.c b/arch/sh/boards/board-ap325rxa.c index 1c67cba6e34f..caf4c33f4e84 100644 --- a/arch/sh/boards/board-ap325rxa.c +++ b/arch/sh/boards/board-ap325rxa.c | |||
@@ -18,8 +18,10 @@ | |||
18 | #include <linux/mtd/sh_flctl.h> | 18 | #include <linux/mtd/sh_flctl.h> |
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/i2c.h> | 20 | #include <linux/i2c.h> |
21 | #include <linux/smc911x.h> | 21 | #include <linux/smsc911x.h> |
22 | #include <linux/gpio.h> | 22 | #include <linux/gpio.h> |
23 | #include <linux/spi/spi.h> | ||
24 | #include <linux/spi/spi_gpio.h> | ||
23 | #include <media/soc_camera_platform.h> | 25 | #include <media/soc_camera_platform.h> |
24 | #include <media/sh_mobile_ceu.h> | 26 | #include <media/sh_mobile_ceu.h> |
25 | #include <video/sh_mobile_lcdc.h> | 27 | #include <video/sh_mobile_lcdc.h> |
@@ -27,12 +29,14 @@ | |||
27 | #include <asm/clock.h> | 29 | #include <asm/clock.h> |
28 | #include <cpu/sh7723.h> | 30 | #include <cpu/sh7723.h> |
29 | 31 | ||
30 | static struct smc911x_platdata smc911x_info = { | 32 | static struct smsc911x_platform_config smsc911x_config = { |
31 | .flags = SMC911X_USE_32BIT, | 33 | .phy_interface = PHY_INTERFACE_MODE_MII, |
32 | .irq_flags = IRQF_TRIGGER_LOW, | 34 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, |
35 | .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, | ||
36 | .flags = SMSC911X_USE_32BIT, | ||
33 | }; | 37 | }; |
34 | 38 | ||
35 | static struct resource smc9118_resources[] = { | 39 | static struct resource smsc9118_resources[] = { |
36 | [0] = { | 40 | [0] = { |
37 | .start = 0xb6080000, | 41 | .start = 0xb6080000, |
38 | .end = 0xb60fffff, | 42 | .end = 0xb60fffff, |
@@ -45,13 +49,13 @@ static struct resource smc9118_resources[] = { | |||
45 | } | 49 | } |
46 | }; | 50 | }; |
47 | 51 | ||
48 | static struct platform_device smc9118_device = { | 52 | static struct platform_device smsc9118_device = { |
49 | .name = "smc911x", | 53 | .name = "smsc911x", |
50 | .id = -1, | 54 | .id = -1, |
51 | .num_resources = ARRAY_SIZE(smc9118_resources), | 55 | .num_resources = ARRAY_SIZE(smsc9118_resources), |
52 | .resource = smc9118_resources, | 56 | .resource = smsc9118_resources, |
53 | .dev = { | 57 | .dev = { |
54 | .platform_data = &smc911x_info, | 58 | .platform_data = &smsc911x_config, |
55 | }, | 59 | }, |
56 | }; | 60 | }; |
57 | 61 | ||
@@ -315,8 +319,22 @@ static struct platform_device ceu_device = { | |||
315 | }, | 319 | }, |
316 | }; | 320 | }; |
317 | 321 | ||
322 | struct spi_gpio_platform_data sdcard_cn3_platform_data = { | ||
323 | .sck = GPIO_PTD0, | ||
324 | .mosi = GPIO_PTD1, | ||
325 | .miso = GPIO_PTD2, | ||
326 | .num_chipselect = 1, | ||
327 | }; | ||
328 | |||
329 | static struct platform_device sdcard_cn3_device = { | ||
330 | .name = "spi_gpio", | ||
331 | .dev = { | ||
332 | .platform_data = &sdcard_cn3_platform_data, | ||
333 | }, | ||
334 | }; | ||
335 | |||
318 | static struct platform_device *ap325rxa_devices[] __initdata = { | 336 | static struct platform_device *ap325rxa_devices[] __initdata = { |
319 | &smc9118_device, | 337 | &smsc9118_device, |
320 | &ap325rxa_nor_flash_device, | 338 | &ap325rxa_nor_flash_device, |
321 | &lcdc_device, | 339 | &lcdc_device, |
322 | &ceu_device, | 340 | &ceu_device, |
@@ -324,6 +342,7 @@ static struct platform_device *ap325rxa_devices[] __initdata = { | |||
324 | &camera_device, | 342 | &camera_device, |
325 | #endif | 343 | #endif |
326 | &nand_flash_device, | 344 | &nand_flash_device, |
345 | &sdcard_cn3_device, | ||
327 | }; | 346 | }; |
328 | 347 | ||
329 | static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = { | 348 | static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = { |
@@ -332,6 +351,15 @@ static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = { | |||
332 | }, | 351 | }, |
333 | }; | 352 | }; |
334 | 353 | ||
354 | static struct spi_board_info ap325rxa_spi_devices[] = { | ||
355 | { | ||
356 | .modalias = "mmc_spi", | ||
357 | .max_speed_hz = 5000000, | ||
358 | .chip_select = 0, | ||
359 | .controller_data = (void *) GPIO_PTD5, | ||
360 | }, | ||
361 | }; | ||
362 | |||
335 | static int __init ap325rxa_devices_setup(void) | 363 | static int __init ap325rxa_devices_setup(void) |
336 | { | 364 | { |
337 | /* LD3 and LD4 LEDs */ | 365 | /* LD3 and LD4 LEDs */ |
@@ -429,6 +457,9 @@ static int __init ap325rxa_devices_setup(void) | |||
429 | i2c_register_board_info(0, ap325rxa_i2c_devices, | 457 | i2c_register_board_info(0, ap325rxa_i2c_devices, |
430 | ARRAY_SIZE(ap325rxa_i2c_devices)); | 458 | ARRAY_SIZE(ap325rxa_i2c_devices)); |
431 | 459 | ||
460 | spi_register_board_info(ap325rxa_spi_devices, | ||
461 | ARRAY_SIZE(ap325rxa_spi_devices)); | ||
462 | |||
432 | return platform_add_devices(ap325rxa_devices, | 463 | return platform_add_devices(ap325rxa_devices, |
433 | ARRAY_SIZE(ap325rxa_devices)); | 464 | ARRAY_SIZE(ap325rxa_devices)); |
434 | } | 465 | } |
diff --git a/arch/sh/boards/board-magicpanelr2.c b/arch/sh/boards/board-magicpanelr2.c index 3de22ccdeb7e..0a37c8bfc959 100644 --- a/arch/sh/boards/board-magicpanelr2.c +++ b/arch/sh/boards/board-magicpanelr2.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
16 | #include <linux/gpio.h> | 16 | #include <linux/gpio.h> |
17 | #include <linux/smsc911x.h> | ||
17 | #include <linux/mtd/mtd.h> | 18 | #include <linux/mtd/mtd.h> |
18 | #include <linux/mtd/partitions.h> | 19 | #include <linux/mtd/partitions.h> |
19 | #include <linux/mtd/physmap.h> | 20 | #include <linux/mtd/physmap.h> |
@@ -242,7 +243,7 @@ static void __init mpr2_setup(char **cmdline_p) | |||
242 | printk(KERN_WARNING "Ethernet not ready\n"); | 243 | printk(KERN_WARNING "Ethernet not ready\n"); |
243 | } | 244 | } |
244 | 245 | ||
245 | static struct resource smc911x_resources[] = { | 246 | static struct resource smsc911x_resources[] = { |
246 | [0] = { | 247 | [0] = { |
247 | .start = 0xa8000000, | 248 | .start = 0xa8000000, |
248 | .end = 0xabffffff, | 249 | .end = 0xabffffff, |
@@ -255,11 +256,21 @@ static struct resource smc911x_resources[] = { | |||
255 | }, | 256 | }, |
256 | }; | 257 | }; |
257 | 258 | ||
258 | static struct platform_device smc911x_device = { | 259 | static struct smsc911x_platform_config smsc911x_config = { |
259 | .name = "smc911x", | 260 | .phy_interface = PHY_INTERFACE_MODE_MII, |
261 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, | ||
262 | .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, | ||
263 | .flags = SMSC911X_USE_32BIT, | ||
264 | }; | ||
265 | |||
266 | static struct platform_device smsc911x_device = { | ||
267 | .name = "smsc911x", | ||
260 | .id = -1, | 268 | .id = -1, |
261 | .num_resources = ARRAY_SIZE(smc911x_resources), | 269 | .num_resources = ARRAY_SIZE(smsc911x_resources), |
262 | .resource = smc911x_resources, | 270 | .resource = smsc911x_resources, |
271 | .dev = { | ||
272 | .platform_data = &smsc911x_config, | ||
273 | }, | ||
263 | }; | 274 | }; |
264 | 275 | ||
265 | static struct resource heartbeat_resources[] = { | 276 | static struct resource heartbeat_resources[] = { |
@@ -360,7 +371,7 @@ static void __init set_mtd_partitions(void) | |||
360 | 371 | ||
361 | static struct platform_device *mpr2_devices[] __initdata = { | 372 | static struct platform_device *mpr2_devices[] __initdata = { |
362 | &heartbeat_device, | 373 | &heartbeat_device, |
363 | &smc911x_device, | 374 | &smsc911x_device, |
364 | &flash_device, | 375 | &flash_device, |
365 | }; | 376 | }; |
366 | 377 | ||
diff --git a/arch/sh/boards/board-sh7785lcr.c b/arch/sh/boards/board-sh7785lcr.c index 408bbddaf325..38a64968d7bf 100644 --- a/arch/sh/boards/board-sh7785lcr.c +++ b/arch/sh/boards/board-sh7785lcr.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/i2c.h> | 18 | #include <linux/i2c.h> |
19 | #include <linux/i2c-pca-platform.h> | 19 | #include <linux/i2c-pca-platform.h> |
20 | #include <linux/i2c-algo-pca.h> | 20 | #include <linux/i2c-algo-pca.h> |
21 | #include <linux/irq.h> | ||
21 | #include <asm/heartbeat.h> | 22 | #include <asm/heartbeat.h> |
22 | #include <mach/sh7785lcr.h> | 23 | #include <mach/sh7785lcr.h> |
23 | 24 | ||
diff --git a/arch/sh/boards/mach-highlander/setup.c b/arch/sh/boards/mach-highlander/setup.c index 806438b42cac..20fe72c515d5 100644 --- a/arch/sh/boards/mach-highlander/setup.c +++ b/arch/sh/boards/mach-highlander/setup.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/ata_platform.h> | 18 | #include <linux/ata_platform.h> |
19 | #include <linux/types.h> | 19 | #include <linux/types.h> |
20 | #include <linux/i2c.h> | 20 | #include <linux/i2c.h> |
21 | #include <linux/irq.h> | ||
21 | #include <net/ax88796.h> | 22 | #include <net/ax88796.h> |
22 | #include <asm/machvec.h> | 23 | #include <asm/machvec.h> |
23 | #include <mach/highlander.h> | 24 | #include <mach/highlander.h> |
diff --git a/arch/sh/boards/mach-hp6xx/setup.c b/arch/sh/boards/mach-hp6xx/setup.c index 48fece78ff54..746742bdc014 100644 --- a/arch/sh/boards/mach-hp6xx/setup.c +++ b/arch/sh/boards/mach-hp6xx/setup.c | |||
@@ -12,9 +12,9 @@ | |||
12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/irq.h> | ||
15 | #include <asm/hd64461.h> | 16 | #include <asm/hd64461.h> |
16 | #include <asm/io.h> | 17 | #include <asm/io.h> |
17 | #include <asm/irq.h> | ||
18 | #include <mach/hp6xx.h> | 18 | #include <mach/hp6xx.h> |
19 | #include <cpu/dac.h> | 19 | #include <cpu/dac.h> |
20 | 20 | ||
diff --git a/arch/sh/boards/mach-migor/setup.c b/arch/sh/boards/mach-migor/setup.c index cc1408119c24..28e56c5809a2 100644 --- a/arch/sh/boards/mach-migor/setup.c +++ b/arch/sh/boards/mach-migor/setup.c | |||
@@ -18,9 +18,12 @@ | |||
18 | #include <linux/delay.h> | 18 | #include <linux/delay.h> |
19 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
20 | #include <linux/gpio.h> | 20 | #include <linux/gpio.h> |
21 | #include <media/soc_camera_platform.h> | 21 | #include <linux/spi/spi.h> |
22 | #include <media/sh_mobile_ceu.h> | 22 | #include <linux/spi/spi_gpio.h> |
23 | #include <video/sh_mobile_lcdc.h> | 23 | #include <video/sh_mobile_lcdc.h> |
24 | #include <media/sh_mobile_ceu.h> | ||
25 | #include <media/ov772x.h> | ||
26 | #include <media/tw9910.h> | ||
24 | #include <asm/clock.h> | 27 | #include <asm/clock.h> |
25 | #include <asm/machvec.h> | 28 | #include <asm/machvec.h> |
26 | #include <asm/io.h> | 29 | #include <asm/io.h> |
@@ -292,9 +295,12 @@ static struct platform_device migor_lcdc_device = { | |||
292 | }; | 295 | }; |
293 | 296 | ||
294 | static struct clk *camera_clk; | 297 | static struct clk *camera_clk; |
298 | static DEFINE_MUTEX(camera_lock); | ||
295 | 299 | ||
296 | static void camera_power_on(void) | 300 | static void camera_power_on(int is_tw) |
297 | { | 301 | { |
302 | mutex_lock(&camera_lock); | ||
303 | |||
298 | /* Use 10 MHz VIO_CKO instead of 24 MHz to work | 304 | /* Use 10 MHz VIO_CKO instead of 24 MHz to work |
299 | * around signal quality issues on Panel Board V2.1. | 305 | * around signal quality issues on Panel Board V2.1. |
300 | */ | 306 | */ |
@@ -304,6 +310,12 @@ static void camera_power_on(void) | |||
304 | 310 | ||
305 | /* use VIO_RST to take camera out of reset */ | 311 | /* use VIO_RST to take camera out of reset */ |
306 | mdelay(10); | 312 | mdelay(10); |
313 | if (is_tw) { | ||
314 | gpio_set_value(GPIO_PTT2, 0); | ||
315 | gpio_set_value(GPIO_PTT0, 0); | ||
316 | } else { | ||
317 | gpio_set_value(GPIO_PTT0, 1); | ||
318 | } | ||
307 | gpio_set_value(GPIO_PTT3, 0); | 319 | gpio_set_value(GPIO_PTT3, 0); |
308 | mdelay(10); | 320 | mdelay(10); |
309 | gpio_set_value(GPIO_PTT3, 1); | 321 | gpio_set_value(GPIO_PTT3, 1); |
@@ -316,107 +328,29 @@ static void camera_power_off(void) | |||
316 | clk_put(camera_clk); | 328 | clk_put(camera_clk); |
317 | 329 | ||
318 | gpio_set_value(GPIO_PTT3, 0); | 330 | gpio_set_value(GPIO_PTT3, 0); |
331 | mutex_unlock(&camera_lock); | ||
319 | } | 332 | } |
320 | 333 | ||
321 | static void camera_power(int mode) | 334 | static int ov7725_power(struct device *dev, int mode) |
322 | { | 335 | { |
323 | if (mode) | 336 | if (mode) |
324 | camera_power_on(); | 337 | camera_power_on(0); |
325 | else | 338 | else |
326 | camera_power_off(); | 339 | camera_power_off(); |
327 | } | ||
328 | 340 | ||
329 | #ifdef CONFIG_I2C | 341 | return 0; |
330 | static unsigned char camera_ov772x_magic[] = | 342 | } |
331 | { | ||
332 | 0x09, 0x01, 0x0c, 0x20, 0x0d, 0x41, 0x0e, 0x01, | ||
333 | 0x12, 0x00, 0x13, 0x8F, 0x14, 0x4A, 0x15, 0x00, | ||
334 | 0x16, 0x00, 0x17, 0x23, 0x18, 0xa0, 0x19, 0x07, | ||
335 | 0x1a, 0xf0, 0x1b, 0x40, 0x1f, 0x00, 0x20, 0x10, | ||
336 | 0x22, 0xff, 0x23, 0x01, 0x28, 0x00, 0x29, 0xa0, | ||
337 | 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0xf0, 0x2d, 0x00, | ||
338 | 0x2e, 0x00, 0x30, 0x80, 0x31, 0x60, 0x32, 0x00, | ||
339 | 0x33, 0x00, 0x34, 0x00, 0x3d, 0x80, 0x3e, 0xe2, | ||
340 | 0x3f, 0x1f, 0x42, 0x80, 0x43, 0x80, 0x44, 0x80, | ||
341 | 0x45, 0x80, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, | ||
342 | 0x49, 0x50, 0x4a, 0x30, 0x4b, 0x50, 0x4c, 0x50, | ||
343 | 0x4d, 0x00, 0x4e, 0xef, 0x4f, 0x10, 0x50, 0x60, | ||
344 | 0x51, 0x00, 0x52, 0x00, 0x53, 0x24, 0x54, 0x7a, | ||
345 | 0x55, 0xfc, 0x62, 0xff, 0x63, 0xf0, 0x64, 0x1f, | ||
346 | 0x65, 0x00, 0x66, 0x10, 0x67, 0x00, 0x68, 0x00, | ||
347 | 0x69, 0x5c, 0x6a, 0x11, 0x6b, 0xa2, 0x6c, 0x01, | ||
348 | 0x6d, 0x50, 0x6e, 0x80, 0x6f, 0x80, 0x70, 0x0f, | ||
349 | 0x71, 0x00, 0x72, 0x00, 0x73, 0x0f, 0x74, 0x0f, | ||
350 | 0x75, 0xff, 0x78, 0x10, 0x79, 0x70, 0x7a, 0x70, | ||
351 | 0x7b, 0xf0, 0x7c, 0xf0, 0x7d, 0xf0, 0x7e, 0x0e, | ||
352 | 0x7f, 0x1a, 0x80, 0x31, 0x81, 0x5a, 0x82, 0x69, | ||
353 | 0x83, 0x75, 0x84, 0x7e, 0x85, 0x88, 0x86, 0x8f, | ||
354 | 0x87, 0x96, 0x88, 0xa3, 0x89, 0xaf, 0x8a, 0xc4, | ||
355 | 0x8b, 0xd7, 0x8c, 0xe8, 0x8d, 0x20, 0x8e, 0x00, | ||
356 | 0x8f, 0x00, 0x90, 0x08, 0x91, 0x10, 0x92, 0x1f, | ||
357 | 0x93, 0x01, 0x94, 0x2c, 0x95, 0x24, 0x96, 0x08, | ||
358 | 0x97, 0x14, 0x98, 0x24, 0x99, 0x38, 0x9a, 0x9e, | ||
359 | 0x9b, 0x00, 0x9c, 0x40, 0x9e, 0x11, 0x9f, 0x02, | ||
360 | 0xa0, 0x00, 0xa1, 0x40, 0xa2, 0x40, 0xa3, 0x06, | ||
361 | 0xa4, 0x00, 0xa6, 0x00, 0xa7, 0x40, 0xa8, 0x40, | ||
362 | 0xa9, 0x80, 0xaa, 0x80, 0xab, 0x06, 0xac, 0xff, | ||
363 | 0x12, 0x06, 0x64, 0x3f, 0x12, 0x46, 0x17, 0x3f, | ||
364 | 0x18, 0x50, 0x19, 0x03, 0x1a, 0x78, 0x29, 0x50, | ||
365 | 0x2c, 0x78, | ||
366 | }; | ||
367 | 343 | ||
368 | static int ov772x_set_capture(struct soc_camera_platform_info *info, | 344 | static int tw9910_power(struct device *dev, int mode) |
369 | int enable) | ||
370 | { | 345 | { |
371 | struct i2c_adapter *a = i2c_get_adapter(0); | 346 | if (mode) |
372 | struct i2c_msg msg; | 347 | camera_power_on(1); |
373 | int ret = 0; | 348 | else |
374 | int i; | 349 | camera_power_off(); |
375 | |||
376 | if (!enable) | ||
377 | return 0; /* camera_power_off() is enough */ | ||
378 | |||
379 | for (i = 0; i < ARRAY_SIZE(camera_ov772x_magic); i += 2) { | ||
380 | u_int8_t buf[8]; | ||
381 | |||
382 | msg.addr = 0x21; | ||
383 | msg.buf = buf; | ||
384 | msg.len = 2; | ||
385 | msg.flags = 0; | ||
386 | |||
387 | buf[0] = camera_ov772x_magic[i]; | ||
388 | buf[1] = camera_ov772x_magic[i + 1]; | ||
389 | |||
390 | ret = (ret < 0) ? ret : i2c_transfer(a, &msg, 1); | ||
391 | } | ||
392 | 350 | ||
393 | return ret; | 351 | return 0; |
394 | } | 352 | } |
395 | 353 | ||
396 | static struct soc_camera_platform_info ov772x_info = { | ||
397 | .iface = 0, | ||
398 | .format_name = "RGB565", | ||
399 | .format_depth = 16, | ||
400 | .format = { | ||
401 | .pixelformat = V4L2_PIX_FMT_RGB565, | ||
402 | .colorspace = V4L2_COLORSPACE_SRGB, | ||
403 | .width = 320, | ||
404 | .height = 240, | ||
405 | }, | ||
406 | .bus_param = SOCAM_PCLK_SAMPLE_RISING | SOCAM_HSYNC_ACTIVE_HIGH | | ||
407 | SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_MASTER | SOCAM_DATAWIDTH_8, | ||
408 | .power = camera_power, | ||
409 | .set_capture = ov772x_set_capture, | ||
410 | }; | ||
411 | |||
412 | static struct platform_device migor_camera_device = { | ||
413 | .name = "soc_camera_platform", | ||
414 | .dev = { | ||
415 | .platform_data = &ov772x_info, | ||
416 | }, | ||
417 | }; | ||
418 | #endif /* CONFIG_I2C */ | ||
419 | |||
420 | static struct sh_mobile_ceu_info sh_mobile_ceu_info = { | 354 | static struct sh_mobile_ceu_info sh_mobile_ceu_info = { |
421 | .flags = SOCAM_MASTER | SOCAM_DATAWIDTH_8 | SOCAM_PCLK_SAMPLE_RISING \ | 355 | .flags = SOCAM_MASTER | SOCAM_DATAWIDTH_8 | SOCAM_PCLK_SAMPLE_RISING \ |
422 | | SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_VSYNC_ACTIVE_HIGH, | 356 | | SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_VSYNC_ACTIVE_HIGH, |
@@ -448,16 +382,43 @@ static struct platform_device migor_ceu_device = { | |||
448 | }, | 382 | }, |
449 | }; | 383 | }; |
450 | 384 | ||
385 | static struct ov772x_camera_info ov7725_info = { | ||
386 | .buswidth = SOCAM_DATAWIDTH_8, | ||
387 | .link = { | ||
388 | .power = ov7725_power, | ||
389 | }, | ||
390 | }; | ||
391 | |||
392 | static struct tw9910_video_info tw9910_info = { | ||
393 | .buswidth = SOCAM_DATAWIDTH_8, | ||
394 | .mpout = TW9910_MPO_FIELD, | ||
395 | .link = { | ||
396 | .power = tw9910_power, | ||
397 | } | ||
398 | }; | ||
399 | |||
400 | struct spi_gpio_platform_data sdcard_cn9_platform_data = { | ||
401 | .sck = GPIO_PTD0, | ||
402 | .mosi = GPIO_PTD1, | ||
403 | .miso = GPIO_PTD2, | ||
404 | .num_chipselect = 1, | ||
405 | }; | ||
406 | |||
407 | static struct platform_device sdcard_cn9_device = { | ||
408 | .name = "spi_gpio", | ||
409 | .dev = { | ||
410 | .platform_data = &sdcard_cn9_platform_data, | ||
411 | }, | ||
412 | }; | ||
413 | |||
451 | static struct platform_device *migor_devices[] __initdata = { | 414 | static struct platform_device *migor_devices[] __initdata = { |
452 | &smc91x_eth_device, | 415 | &smc91x_eth_device, |
453 | &sh_keysc_device, | 416 | &sh_keysc_device, |
454 | &migor_lcdc_device, | 417 | &migor_lcdc_device, |
455 | &migor_ceu_device, | 418 | &migor_ceu_device, |
456 | #ifdef CONFIG_I2C | ||
457 | &migor_camera_device, | ||
458 | #endif | ||
459 | &migor_nor_flash_device, | 419 | &migor_nor_flash_device, |
460 | &migor_nand_flash_device, | 420 | &migor_nand_flash_device, |
421 | &sdcard_cn9_device, | ||
461 | }; | 422 | }; |
462 | 423 | ||
463 | static struct i2c_board_info migor_i2c_devices[] = { | 424 | static struct i2c_board_info migor_i2c_devices[] = { |
@@ -468,6 +429,23 @@ static struct i2c_board_info migor_i2c_devices[] = { | |||
468 | I2C_BOARD_INFO("migor_ts", 0x51), | 429 | I2C_BOARD_INFO("migor_ts", 0x51), |
469 | .irq = 38, /* IRQ6 */ | 430 | .irq = 38, /* IRQ6 */ |
470 | }, | 431 | }, |
432 | { | ||
433 | I2C_BOARD_INFO("ov772x", 0x21), | ||
434 | .platform_data = &ov7725_info, | ||
435 | }, | ||
436 | { | ||
437 | I2C_BOARD_INFO("tw9910", 0x45), | ||
438 | .platform_data = &tw9910_info, | ||
439 | }, | ||
440 | }; | ||
441 | |||
442 | static struct spi_board_info migor_spi_devices[] = { | ||
443 | { | ||
444 | .modalias = "mmc_spi", | ||
445 | .max_speed_hz = 5000000, | ||
446 | .chip_select = 0, | ||
447 | .controller_data = (void *) GPIO_PTD5, | ||
448 | }, | ||
471 | }; | 449 | }; |
472 | 450 | ||
473 | static int __init migor_devices_setup(void) | 451 | static int __init migor_devices_setup(void) |
@@ -592,6 +570,9 @@ static int __init migor_devices_setup(void) | |||
592 | i2c_register_board_info(0, migor_i2c_devices, | 570 | i2c_register_board_info(0, migor_i2c_devices, |
593 | ARRAY_SIZE(migor_i2c_devices)); | 571 | ARRAY_SIZE(migor_i2c_devices)); |
594 | 572 | ||
573 | spi_register_board_info(migor_spi_devices, | ||
574 | ARRAY_SIZE(migor_spi_devices)); | ||
575 | |||
595 | return platform_add_devices(migor_devices, ARRAY_SIZE(migor_devices)); | 576 | return platform_add_devices(migor_devices, ARRAY_SIZE(migor_devices)); |
596 | } | 577 | } |
597 | __initcall(migor_devices_setup); | 578 | __initcall(migor_devices_setup); |
diff --git a/arch/sh/boards/mach-rsk/devices-rsk7203.c b/arch/sh/boards/mach-rsk/devices-rsk7203.c index 73f743b9be8d..d8a65ea91665 100644 --- a/arch/sh/boards/mach-rsk/devices-rsk7203.c +++ b/arch/sh/boards/mach-rsk/devices-rsk7203.c | |||
@@ -15,19 +15,21 @@ | |||
15 | #include <linux/mtd/partitions.h> | 15 | #include <linux/mtd/partitions.h> |
16 | #include <linux/mtd/physmap.h> | 16 | #include <linux/mtd/physmap.h> |
17 | #include <linux/mtd/map.h> | 17 | #include <linux/mtd/map.h> |
18 | #include <linux/smc911x.h> | 18 | #include <linux/smsc911x.h> |
19 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
20 | #include <linux/leds.h> | 20 | #include <linux/leds.h> |
21 | #include <asm/machvec.h> | 21 | #include <asm/machvec.h> |
22 | #include <asm/io.h> | 22 | #include <asm/io.h> |
23 | #include <cpu/sh7203.h> | 23 | #include <cpu/sh7203.h> |
24 | 24 | ||
25 | static struct smc911x_platdata smc911x_info = { | 25 | static struct smsc911x_platform_config smsc911x_config = { |
26 | .flags = SMC911X_USE_16BIT, | 26 | .phy_interface = PHY_INTERFACE_MODE_MII, |
27 | .irq_flags = IRQF_TRIGGER_LOW, | 27 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, |
28 | .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, | ||
29 | .flags = SMSC911X_USE_16BIT, | ||
28 | }; | 30 | }; |
29 | 31 | ||
30 | static struct resource smc911x_resources[] = { | 32 | static struct resource smsc911x_resources[] = { |
31 | [0] = { | 33 | [0] = { |
32 | .start = 0x24000000, | 34 | .start = 0x24000000, |
33 | .end = 0x24000000 + 0x100, | 35 | .end = 0x24000000 + 0x100, |
@@ -40,13 +42,13 @@ static struct resource smc911x_resources[] = { | |||
40 | }, | 42 | }, |
41 | }; | 43 | }; |
42 | 44 | ||
43 | static struct platform_device smc911x_device = { | 45 | static struct platform_device smsc911x_device = { |
44 | .name = "smc911x", | 46 | .name = "smsc911x", |
45 | .id = -1, | 47 | .id = -1, |
46 | .num_resources = ARRAY_SIZE(smc911x_resources), | 48 | .num_resources = ARRAY_SIZE(smsc911x_resources), |
47 | .resource = smc911x_resources, | 49 | .resource = smsc911x_resources, |
48 | .dev = { | 50 | .dev = { |
49 | .platform_data = &smc911x_info, | 51 | .platform_data = &smsc911x_config, |
50 | }, | 52 | }, |
51 | }; | 53 | }; |
52 | 54 | ||
@@ -87,7 +89,7 @@ static struct platform_device led_device = { | |||
87 | }; | 89 | }; |
88 | 90 | ||
89 | static struct platform_device *rsk7203_devices[] __initdata = { | 91 | static struct platform_device *rsk7203_devices[] __initdata = { |
90 | &smc911x_device, | 92 | &smsc911x_device, |
91 | &led_device, | 93 | &led_device, |
92 | }; | 94 | }; |
93 | 95 | ||
diff --git a/arch/sh/boards/mach-x3proto/setup.c b/arch/sh/boards/mach-x3proto/setup.c index a70d23b21788..a340492087fa 100644 --- a/arch/sh/boards/mach-x3proto/setup.c +++ b/arch/sh/boards/mach-x3proto/setup.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/smc91x.h> | 16 | #include <linux/smc91x.h> |
17 | #include <linux/irq.h> | ||
17 | #include <asm/ilsel.h> | 18 | #include <asm/ilsel.h> |
18 | 19 | ||
19 | static struct resource heartbeat_resources[] = { | 20 | static struct resource heartbeat_resources[] = { |
diff --git a/arch/sh/configs/ap325rxa_defconfig b/arch/sh/configs/ap325rxa_defconfig index 874dd9726e52..5c423fa8e6b8 100644 --- a/arch/sh/configs/ap325rxa_defconfig +++ b/arch/sh/configs/ap325rxa_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Tue Oct 21 18:20:06 2008 | 4 | # Fri Jan 9 16:54:19 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | CONFIG_GENERIC_GPIO=y | 16 | CONFIG_GENERIC_GPIO=y |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -75,12 +77,10 @@ CONFIG_EVENTFD=y | |||
75 | CONFIG_SHMEM=y | 77 | CONFIG_SHMEM=y |
76 | CONFIG_AIO=y | 78 | CONFIG_AIO=y |
77 | CONFIG_VM_EVENT_COUNTERS=y | 79 | CONFIG_VM_EVENT_COUNTERS=y |
78 | CONFIG_PCI_QUIRKS=y | ||
79 | CONFIG_SLAB=y | 80 | CONFIG_SLAB=y |
80 | # CONFIG_SLUB is not set | 81 | # CONFIG_SLUB is not set |
81 | # CONFIG_SLOB is not set | 82 | # CONFIG_SLOB is not set |
82 | # CONFIG_PROFILING is not set | 83 | # CONFIG_PROFILING is not set |
83 | # CONFIG_MARKERS is not set | ||
84 | CONFIG_HAVE_OPROFILE=y | 84 | CONFIG_HAVE_OPROFILE=y |
85 | CONFIG_HAVE_IOREMAP_PROT=y | 85 | CONFIG_HAVE_IOREMAP_PROT=y |
86 | CONFIG_HAVE_KPROBES=y | 86 | CONFIG_HAVE_KPROBES=y |
@@ -90,7 +90,6 @@ CONFIG_HAVE_CLK=y | |||
90 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 90 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
91 | CONFIG_SLABINFO=y | 91 | CONFIG_SLABINFO=y |
92 | CONFIG_RT_MUTEXES=y | 92 | CONFIG_RT_MUTEXES=y |
93 | # CONFIG_TINY_SHMEM is not set | ||
94 | CONFIG_BASE_SMALL=0 | 93 | CONFIG_BASE_SMALL=0 |
95 | CONFIG_MODULES=y | 94 | CONFIG_MODULES=y |
96 | # CONFIG_MODULE_FORCE_LOAD is not set | 95 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -98,11 +97,9 @@ CONFIG_MODULE_UNLOAD=y | |||
98 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 97 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
99 | # CONFIG_MODVERSIONS is not set | 98 | # CONFIG_MODVERSIONS is not set |
100 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 99 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
101 | CONFIG_KMOD=y | ||
102 | CONFIG_BLOCK=y | 100 | CONFIG_BLOCK=y |
103 | # CONFIG_LBD is not set | 101 | # CONFIG_LBD is not set |
104 | # CONFIG_BLK_DEV_IO_TRACE is not set | 102 | # CONFIG_BLK_DEV_IO_TRACE is not set |
105 | # CONFIG_LSF is not set | ||
106 | # CONFIG_BLK_DEV_BSG is not set | 103 | # CONFIG_BLK_DEV_BSG is not set |
107 | # CONFIG_BLK_DEV_INTEGRITY is not set | 104 | # CONFIG_BLK_DEV_INTEGRITY is not set |
108 | 105 | ||
@@ -119,6 +116,10 @@ CONFIG_DEFAULT_CFQ=y | |||
119 | # CONFIG_DEFAULT_NOOP is not set | 116 | # CONFIG_DEFAULT_NOOP is not set |
120 | CONFIG_DEFAULT_IOSCHED="cfq" | 117 | CONFIG_DEFAULT_IOSCHED="cfq" |
121 | CONFIG_CLASSIC_RCU=y | 118 | CONFIG_CLASSIC_RCU=y |
119 | # CONFIG_TREE_RCU is not set | ||
120 | # CONFIG_PREEMPT_RCU is not set | ||
121 | # CONFIG_TREE_RCU_TRACE is not set | ||
122 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
122 | # CONFIG_FREEZER is not set | 123 | # CONFIG_FREEZER is not set |
123 | 124 | ||
124 | # | 125 | # |
@@ -128,6 +129,7 @@ CONFIG_CPU_SH4=y | |||
128 | CONFIG_CPU_SH4A=y | 129 | CONFIG_CPU_SH4A=y |
129 | CONFIG_CPU_SHX2=y | 130 | CONFIG_CPU_SHX2=y |
130 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 131 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
132 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
131 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 133 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
132 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 134 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
133 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 135 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -192,7 +194,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
192 | CONFIG_SPARSEMEM_STATIC=y | 194 | CONFIG_SPARSEMEM_STATIC=y |
193 | CONFIG_PAGEFLAGS_EXTENDED=y | 195 | CONFIG_PAGEFLAGS_EXTENDED=y |
194 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 196 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
195 | # CONFIG_RESOURCES_64BIT is not set | ||
196 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 197 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
197 | CONFIG_ZONE_DMA_FLAG=0 | 198 | CONFIG_ZONE_DMA_FLAG=0 |
198 | CONFIG_NR_QUICK=2 | 199 | CONFIG_NR_QUICK=2 |
@@ -269,7 +270,6 @@ CONFIG_SECCOMP=y | |||
269 | # CONFIG_PREEMPT_NONE is not set | 270 | # CONFIG_PREEMPT_NONE is not set |
270 | # CONFIG_PREEMPT_VOLUNTARY is not set | 271 | # CONFIG_PREEMPT_VOLUNTARY is not set |
271 | CONFIG_PREEMPT=y | 272 | CONFIG_PREEMPT=y |
272 | # CONFIG_PREEMPT_RCU is not set | ||
273 | CONFIG_GUSA=y | 273 | CONFIG_GUSA=y |
274 | 274 | ||
275 | # | 275 | # |
@@ -293,11 +293,18 @@ CONFIG_BINFMT_ELF=y | |||
293 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 293 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
294 | # CONFIG_HAVE_AOUT is not set | 294 | # CONFIG_HAVE_AOUT is not set |
295 | # CONFIG_BINFMT_MISC is not set | 295 | # CONFIG_BINFMT_MISC is not set |
296 | |||
297 | # | ||
298 | # Power management options (EXPERIMENTAL) | ||
299 | # | ||
300 | # CONFIG_PM is not set | ||
301 | # CONFIG_CPU_IDLE is not set | ||
296 | CONFIG_NET=y | 302 | CONFIG_NET=y |
297 | 303 | ||
298 | # | 304 | # |
299 | # Networking options | 305 | # Networking options |
300 | # | 306 | # |
307 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
301 | CONFIG_PACKET=y | 308 | CONFIG_PACKET=y |
302 | # CONFIG_PACKET_MMAP is not set | 309 | # CONFIG_PACKET_MMAP is not set |
303 | CONFIG_UNIX=y | 310 | CONFIG_UNIX=y |
@@ -353,6 +360,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
353 | # CONFIG_ECONET is not set | 360 | # CONFIG_ECONET is not set |
354 | # CONFIG_WAN_ROUTER is not set | 361 | # CONFIG_WAN_ROUTER is not set |
355 | # CONFIG_NET_SCHED is not set | 362 | # CONFIG_NET_SCHED is not set |
363 | # CONFIG_DCB is not set | ||
356 | 364 | ||
357 | # | 365 | # |
358 | # Network testing | 366 | # Network testing |
@@ -368,8 +376,8 @@ CONFIG_WIRELESS=y | |||
368 | # CONFIG_CFG80211 is not set | 376 | # CONFIG_CFG80211 is not set |
369 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 377 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
370 | # CONFIG_WIRELESS_EXT is not set | 378 | # CONFIG_WIRELESS_EXT is not set |
379 | # CONFIG_LIB80211 is not set | ||
371 | # CONFIG_MAC80211 is not set | 380 | # CONFIG_MAC80211 is not set |
372 | # CONFIG_IEEE80211 is not set | ||
373 | # CONFIG_RFKILL is not set | 381 | # CONFIG_RFKILL is not set |
374 | # CONFIG_NET_9P is not set | 382 | # CONFIG_NET_9P is not set |
375 | 383 | ||
@@ -447,6 +455,8 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=0 | |||
447 | # | 455 | # |
448 | # Self-contained MTD device drivers | 456 | # Self-contained MTD device drivers |
449 | # | 457 | # |
458 | # CONFIG_MTD_DATAFLASH is not set | ||
459 | # CONFIG_MTD_M25P80 is not set | ||
450 | # CONFIG_MTD_SLRAM is not set | 460 | # CONFIG_MTD_SLRAM is not set |
451 | # CONFIG_MTD_PHRAM is not set | 461 | # CONFIG_MTD_PHRAM is not set |
452 | # CONFIG_MTD_MTDRAM is not set | 462 | # CONFIG_MTD_MTDRAM is not set |
@@ -472,7 +482,15 @@ CONFIG_MTD_NAND_SH_FLCTL=y | |||
472 | # | 482 | # |
473 | # UBI - Unsorted block images | 483 | # UBI - Unsorted block images |
474 | # | 484 | # |
475 | # CONFIG_MTD_UBI is not set | 485 | CONFIG_MTD_UBI=y |
486 | CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||
487 | CONFIG_MTD_UBI_BEB_RESERVE=1 | ||
488 | # CONFIG_MTD_UBI_GLUEBI is not set | ||
489 | |||
490 | # | ||
491 | # UBI debugging options | ||
492 | # | ||
493 | # CONFIG_MTD_UBI_DEBUG is not set | ||
476 | # CONFIG_PARPORT is not set | 494 | # CONFIG_PARPORT is not set |
477 | CONFIG_BLK_DEV=y | 495 | CONFIG_BLK_DEV=y |
478 | # CONFIG_BLK_DEV_COW_COMMON is not set | 496 | # CONFIG_BLK_DEV_COW_COMMON is not set |
@@ -487,7 +505,9 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
487 | # CONFIG_BLK_DEV_HD is not set | 505 | # CONFIG_BLK_DEV_HD is not set |
488 | CONFIG_MISC_DEVICES=y | 506 | CONFIG_MISC_DEVICES=y |
489 | # CONFIG_EEPROM_93CX6 is not set | 507 | # CONFIG_EEPROM_93CX6 is not set |
508 | # CONFIG_ICS932S401 is not set | ||
490 | # CONFIG_ENCLOSURE_SERVICES is not set | 509 | # CONFIG_ENCLOSURE_SERVICES is not set |
510 | # CONFIG_C2PORT is not set | ||
491 | CONFIG_HAVE_IDE=y | 511 | CONFIG_HAVE_IDE=y |
492 | # CONFIG_IDE is not set | 512 | # CONFIG_IDE is not set |
493 | 513 | ||
@@ -530,6 +550,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
530 | # CONFIG_SCSI_SRP_ATTRS is not set | 550 | # CONFIG_SCSI_SRP_ATTRS is not set |
531 | CONFIG_SCSI_LOWLEVEL=y | 551 | CONFIG_SCSI_LOWLEVEL=y |
532 | # CONFIG_ISCSI_TCP is not set | 552 | # CONFIG_ISCSI_TCP is not set |
553 | # CONFIG_LIBFC is not set | ||
533 | # CONFIG_SCSI_DEBUG is not set | 554 | # CONFIG_SCSI_DEBUG is not set |
534 | # CONFIG_SCSI_DH is not set | 555 | # CONFIG_SCSI_DH is not set |
535 | # CONFIG_ATA is not set | 556 | # CONFIG_ATA is not set |
@@ -541,13 +562,34 @@ CONFIG_NETDEVICES=y | |||
541 | # CONFIG_EQUALIZER is not set | 562 | # CONFIG_EQUALIZER is not set |
542 | # CONFIG_TUN is not set | 563 | # CONFIG_TUN is not set |
543 | # CONFIG_VETH is not set | 564 | # CONFIG_VETH is not set |
544 | # CONFIG_PHYLIB is not set | 565 | CONFIG_PHYLIB=y |
566 | |||
567 | # | ||
568 | # MII PHY device drivers | ||
569 | # | ||
570 | # CONFIG_MARVELL_PHY is not set | ||
571 | # CONFIG_DAVICOM_PHY is not set | ||
572 | # CONFIG_QSEMI_PHY is not set | ||
573 | # CONFIG_LXT_PHY is not set | ||
574 | # CONFIG_CICADA_PHY is not set | ||
575 | # CONFIG_VITESSE_PHY is not set | ||
576 | CONFIG_SMSC_PHY=y | ||
577 | # CONFIG_BROADCOM_PHY is not set | ||
578 | # CONFIG_ICPLUS_PHY is not set | ||
579 | # CONFIG_REALTEK_PHY is not set | ||
580 | # CONFIG_NATIONAL_PHY is not set | ||
581 | # CONFIG_STE10XP is not set | ||
582 | # CONFIG_LSI_ET1011C_PHY is not set | ||
583 | # CONFIG_FIXED_PHY is not set | ||
584 | # CONFIG_MDIO_BITBANG is not set | ||
545 | CONFIG_NET_ETHERNET=y | 585 | CONFIG_NET_ETHERNET=y |
546 | CONFIG_MII=y | 586 | CONFIG_MII=y |
547 | # CONFIG_AX88796 is not set | 587 | # CONFIG_AX88796 is not set |
548 | # CONFIG_STNIC is not set | 588 | # CONFIG_STNIC is not set |
549 | # CONFIG_SMC91X is not set | 589 | # CONFIG_SMC91X is not set |
550 | CONFIG_SMC911X=y | 590 | # CONFIG_ENC28J60 is not set |
591 | # CONFIG_SMC911X is not set | ||
592 | CONFIG_SMSC911X=y | ||
551 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 593 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
552 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 594 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
553 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 595 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -630,6 +672,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
630 | CONFIG_SERIAL_CORE=y | 672 | CONFIG_SERIAL_CORE=y |
631 | CONFIG_SERIAL_CORE_CONSOLE=y | 673 | CONFIG_SERIAL_CORE_CONSOLE=y |
632 | CONFIG_UNIX98_PTYS=y | 674 | CONFIG_UNIX98_PTYS=y |
675 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
633 | CONFIG_LEGACY_PTYS=y | 676 | CONFIG_LEGACY_PTYS=y |
634 | CONFIG_LEGACY_PTY_COUNT=256 | 677 | CONFIG_LEGACY_PTY_COUNT=256 |
635 | # CONFIG_IPMI_HANDLER is not set | 678 | # CONFIG_IPMI_HANDLER is not set |
@@ -637,19 +680,102 @@ CONFIG_HW_RANDOM=y | |||
637 | # CONFIG_R3964 is not set | 680 | # CONFIG_R3964 is not set |
638 | # CONFIG_RAW_DRIVER is not set | 681 | # CONFIG_RAW_DRIVER is not set |
639 | # CONFIG_TCG_TPM is not set | 682 | # CONFIG_TCG_TPM is not set |
640 | # CONFIG_I2C is not set | 683 | CONFIG_I2C=y |
641 | # CONFIG_SPI is not set | 684 | CONFIG_I2C_BOARDINFO=y |
685 | CONFIG_I2C_CHARDEV=y | ||
686 | CONFIG_I2C_HELPER_AUTO=y | ||
687 | |||
688 | # | ||
689 | # I2C Hardware Bus support | ||
690 | # | ||
691 | |||
692 | # | ||
693 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
694 | # | ||
695 | # CONFIG_I2C_GPIO is not set | ||
696 | # CONFIG_I2C_OCORES is not set | ||
697 | CONFIG_I2C_SH_MOBILE=y | ||
698 | # CONFIG_I2C_SIMTEC is not set | ||
699 | |||
700 | # | ||
701 | # External I2C/SMBus adapter drivers | ||
702 | # | ||
703 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
704 | # CONFIG_I2C_TAOS_EVM is not set | ||
705 | |||
706 | # | ||
707 | # Other I2C/SMBus bus drivers | ||
708 | # | ||
709 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
710 | # CONFIG_I2C_STUB is not set | ||
711 | |||
712 | # | ||
713 | # Miscellaneous I2C Chip support | ||
714 | # | ||
715 | # CONFIG_DS1682 is not set | ||
716 | # CONFIG_AT24 is not set | ||
717 | # CONFIG_SENSORS_EEPROM is not set | ||
718 | # CONFIG_SENSORS_PCF8574 is not set | ||
719 | # CONFIG_PCF8575 is not set | ||
720 | # CONFIG_SENSORS_PCA9539 is not set | ||
721 | # CONFIG_SENSORS_PCF8591 is not set | ||
722 | # CONFIG_SENSORS_MAX6875 is not set | ||
723 | # CONFIG_SENSORS_TSL2550 is not set | ||
724 | # CONFIG_I2C_DEBUG_CORE is not set | ||
725 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
726 | # CONFIG_I2C_DEBUG_BUS is not set | ||
727 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
728 | CONFIG_SPI=y | ||
729 | CONFIG_SPI_MASTER=y | ||
730 | |||
731 | # | ||
732 | # SPI Master Controller Drivers | ||
733 | # | ||
734 | CONFIG_SPI_BITBANG=y | ||
735 | CONFIG_SPI_GPIO=y | ||
736 | # CONFIG_SPI_SH_SCI is not set | ||
737 | |||
738 | # | ||
739 | # SPI Protocol Masters | ||
740 | # | ||
741 | # CONFIG_SPI_AT25 is not set | ||
742 | # CONFIG_SPI_SPIDEV is not set | ||
743 | # CONFIG_SPI_TLE62X0 is not set | ||
744 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
745 | CONFIG_GPIOLIB=y | ||
746 | # CONFIG_GPIO_SYSFS is not set | ||
747 | |||
748 | # | ||
749 | # Memory mapped GPIO expanders: | ||
750 | # | ||
751 | |||
752 | # | ||
753 | # I2C GPIO expanders: | ||
754 | # | ||
755 | # CONFIG_GPIO_MAX732X is not set | ||
756 | # CONFIG_GPIO_PCA953X is not set | ||
757 | # CONFIG_GPIO_PCF857X is not set | ||
758 | |||
759 | # | ||
760 | # PCI GPIO expanders: | ||
761 | # | ||
762 | |||
763 | # | ||
764 | # SPI GPIO expanders: | ||
765 | # | ||
766 | # CONFIG_GPIO_MAX7301 is not set | ||
767 | # CONFIG_GPIO_MCP23S08 is not set | ||
642 | # CONFIG_W1 is not set | 768 | # CONFIG_W1 is not set |
643 | # CONFIG_POWER_SUPPLY is not set | 769 | # CONFIG_POWER_SUPPLY is not set |
644 | # CONFIG_HWMON is not set | 770 | # CONFIG_HWMON is not set |
645 | # CONFIG_THERMAL is not set | 771 | # CONFIG_THERMAL is not set |
646 | # CONFIG_THERMAL_HWMON is not set | 772 | # CONFIG_THERMAL_HWMON is not set |
647 | # CONFIG_WATCHDOG is not set | 773 | # CONFIG_WATCHDOG is not set |
774 | CONFIG_SSB_POSSIBLE=y | ||
648 | 775 | ||
649 | # | 776 | # |
650 | # Sonics Silicon Backplane | 777 | # Sonics Silicon Backplane |
651 | # | 778 | # |
652 | CONFIG_SSB_POSSIBLE=y | ||
653 | # CONFIG_SSB is not set | 779 | # CONFIG_SSB is not set |
654 | 780 | ||
655 | # | 781 | # |
@@ -658,8 +784,13 @@ CONFIG_SSB_POSSIBLE=y | |||
658 | # CONFIG_MFD_CORE is not set | 784 | # CONFIG_MFD_CORE is not set |
659 | # CONFIG_MFD_SM501 is not set | 785 | # CONFIG_MFD_SM501 is not set |
660 | # CONFIG_HTC_PASIC3 is not set | 786 | # CONFIG_HTC_PASIC3 is not set |
787 | # CONFIG_TPS65010 is not set | ||
788 | # CONFIG_TWL4030_CORE is not set | ||
661 | # CONFIG_MFD_TMIO is not set | 789 | # CONFIG_MFD_TMIO is not set |
790 | # CONFIG_PMIC_DA903X is not set | ||
662 | # CONFIG_MFD_WM8400 is not set | 791 | # CONFIG_MFD_WM8400 is not set |
792 | # CONFIG_MFD_WM8350_I2C is not set | ||
793 | # CONFIG_REGULATOR is not set | ||
663 | 794 | ||
664 | # | 795 | # |
665 | # Multimedia devices | 796 | # Multimedia devices |
@@ -668,13 +799,47 @@ CONFIG_SSB_POSSIBLE=y | |||
668 | # | 799 | # |
669 | # Multimedia core support | 800 | # Multimedia core support |
670 | # | 801 | # |
671 | # CONFIG_VIDEO_DEV is not set | 802 | CONFIG_VIDEO_DEV=y |
803 | CONFIG_VIDEO_V4L2_COMMON=y | ||
804 | # CONFIG_VIDEO_ALLOW_V4L1 is not set | ||
805 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
672 | # CONFIG_DVB_CORE is not set | 806 | # CONFIG_DVB_CORE is not set |
673 | # CONFIG_VIDEO_MEDIA is not set | 807 | CONFIG_VIDEO_MEDIA=y |
674 | 808 | ||
675 | # | 809 | # |
676 | # Multimedia drivers | 810 | # Multimedia drivers |
677 | # | 811 | # |
812 | # CONFIG_MEDIA_ATTACH is not set | ||
813 | CONFIG_MEDIA_TUNER=y | ||
814 | # CONFIG_MEDIA_TUNER_CUSTOMIZE is not set | ||
815 | CONFIG_MEDIA_TUNER_SIMPLE=y | ||
816 | CONFIG_MEDIA_TUNER_TDA8290=y | ||
817 | CONFIG_MEDIA_TUNER_TDA9887=y | ||
818 | CONFIG_MEDIA_TUNER_TEA5761=y | ||
819 | CONFIG_MEDIA_TUNER_TEA5767=y | ||
820 | CONFIG_MEDIA_TUNER_MT20XX=y | ||
821 | CONFIG_MEDIA_TUNER_XC2028=y | ||
822 | CONFIG_MEDIA_TUNER_XC5000=y | ||
823 | CONFIG_VIDEO_V4L2=y | ||
824 | CONFIG_VIDEOBUF_GEN=y | ||
825 | CONFIG_VIDEOBUF_DMA_CONTIG=y | ||
826 | CONFIG_VIDEO_CAPTURE_DRIVERS=y | ||
827 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
828 | # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set | ||
829 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
830 | # CONFIG_VIDEO_VIVI is not set | ||
831 | # CONFIG_VIDEO_SAA5246A is not set | ||
832 | # CONFIG_VIDEO_SAA5249 is not set | ||
833 | CONFIG_SOC_CAMERA=y | ||
834 | # CONFIG_SOC_CAMERA_MT9M001 is not set | ||
835 | # CONFIG_SOC_CAMERA_MT9M111 is not set | ||
836 | # CONFIG_SOC_CAMERA_MT9T031 is not set | ||
837 | # CONFIG_SOC_CAMERA_MT9V022 is not set | ||
838 | # CONFIG_SOC_CAMERA_TW9910 is not set | ||
839 | CONFIG_SOC_CAMERA_PLATFORM=y | ||
840 | # CONFIG_SOC_CAMERA_OV772X is not set | ||
841 | CONFIG_VIDEO_SH_MOBILE_CEU=y | ||
842 | # CONFIG_RADIO_ADAPTERS is not set | ||
678 | # CONFIG_DAB is not set | 843 | # CONFIG_DAB is not set |
679 | 844 | ||
680 | # | 845 | # |
@@ -682,7 +847,34 @@ CONFIG_SSB_POSSIBLE=y | |||
682 | # | 847 | # |
683 | # CONFIG_VGASTATE is not set | 848 | # CONFIG_VGASTATE is not set |
684 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | 849 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set |
685 | # CONFIG_FB is not set | 850 | CONFIG_FB=y |
851 | # CONFIG_FIRMWARE_EDID is not set | ||
852 | # CONFIG_FB_DDC is not set | ||
853 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | ||
854 | # CONFIG_FB_CFB_FILLRECT is not set | ||
855 | # CONFIG_FB_CFB_COPYAREA is not set | ||
856 | # CONFIG_FB_CFB_IMAGEBLIT is not set | ||
857 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
858 | CONFIG_FB_SYS_FILLRECT=y | ||
859 | CONFIG_FB_SYS_COPYAREA=y | ||
860 | CONFIG_FB_SYS_IMAGEBLIT=y | ||
861 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
862 | CONFIG_FB_SYS_FOPS=y | ||
863 | CONFIG_FB_DEFERRED_IO=y | ||
864 | # CONFIG_FB_SVGALIB is not set | ||
865 | # CONFIG_FB_MACMODES is not set | ||
866 | # CONFIG_FB_BACKLIGHT is not set | ||
867 | # CONFIG_FB_MODE_HELPERS is not set | ||
868 | # CONFIG_FB_TILEBLITTING is not set | ||
869 | |||
870 | # | ||
871 | # Frame buffer hardware drivers | ||
872 | # | ||
873 | # CONFIG_FB_S1D13XXX is not set | ||
874 | CONFIG_FB_SH_MOBILE_LCDC=y | ||
875 | # CONFIG_FB_VIRTUAL is not set | ||
876 | # CONFIG_FB_METRONOME is not set | ||
877 | # CONFIG_FB_MB862XX is not set | ||
686 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 878 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
687 | 879 | ||
688 | # | 880 | # |
@@ -694,14 +886,103 @@ CONFIG_SSB_POSSIBLE=y | |||
694 | # Console display driver support | 886 | # Console display driver support |
695 | # | 887 | # |
696 | CONFIG_DUMMY_CONSOLE=y | 888 | CONFIG_DUMMY_CONSOLE=y |
889 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
890 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
891 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
892 | # CONFIG_FONTS is not set | ||
893 | CONFIG_FONT_8x8=y | ||
894 | CONFIG_FONT_8x16=y | ||
895 | CONFIG_LOGO=y | ||
896 | CONFIG_LOGO_LINUX_MONO=y | ||
897 | CONFIG_LOGO_LINUX_VGA16=y | ||
898 | CONFIG_LOGO_LINUX_CLUT224=y | ||
899 | CONFIG_LOGO_SUPERH_MONO=y | ||
900 | CONFIG_LOGO_SUPERH_VGA16=y | ||
901 | CONFIG_LOGO_SUPERH_CLUT224=y | ||
697 | # CONFIG_SOUND is not set | 902 | # CONFIG_SOUND is not set |
698 | # CONFIG_HID_SUPPORT is not set | 903 | # CONFIG_HID_SUPPORT is not set |
699 | # CONFIG_USB_SUPPORT is not set | 904 | # CONFIG_USB_SUPPORT is not set |
700 | # CONFIG_MMC is not set | 905 | CONFIG_MMC=y |
906 | # CONFIG_MMC_DEBUG is not set | ||
907 | # CONFIG_MMC_UNSAFE_RESUME is not set | ||
908 | |||
909 | # | ||
910 | # MMC/SD/SDIO Card Drivers | ||
911 | # | ||
912 | CONFIG_MMC_BLOCK=y | ||
913 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
914 | # CONFIG_SDIO_UART is not set | ||
915 | # CONFIG_MMC_TEST is not set | ||
916 | |||
917 | # | ||
918 | # MMC/SD/SDIO Host Controller Drivers | ||
919 | # | ||
920 | # CONFIG_MMC_SDHCI is not set | ||
921 | CONFIG_MMC_SPI=y | ||
701 | # CONFIG_MEMSTICK is not set | 922 | # CONFIG_MEMSTICK is not set |
702 | # CONFIG_NEW_LEDS is not set | 923 | # CONFIG_NEW_LEDS is not set |
703 | # CONFIG_ACCESSIBILITY is not set | 924 | # CONFIG_ACCESSIBILITY is not set |
704 | # CONFIG_RTC_CLASS is not set | 925 | CONFIG_RTC_LIB=y |
926 | CONFIG_RTC_CLASS=y | ||
927 | CONFIG_RTC_HCTOSYS=y | ||
928 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
929 | # CONFIG_RTC_DEBUG is not set | ||
930 | |||
931 | # | ||
932 | # RTC interfaces | ||
933 | # | ||
934 | CONFIG_RTC_INTF_SYSFS=y | ||
935 | CONFIG_RTC_INTF_PROC=y | ||
936 | CONFIG_RTC_INTF_DEV=y | ||
937 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
938 | # CONFIG_RTC_DRV_TEST is not set | ||
939 | |||
940 | # | ||
941 | # I2C RTC drivers | ||
942 | # | ||
943 | # CONFIG_RTC_DRV_DS1307 is not set | ||
944 | # CONFIG_RTC_DRV_DS1374 is not set | ||
945 | # CONFIG_RTC_DRV_DS1672 is not set | ||
946 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
947 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
948 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
949 | # CONFIG_RTC_DRV_X1205 is not set | ||
950 | CONFIG_RTC_DRV_PCF8563=y | ||
951 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
952 | # CONFIG_RTC_DRV_M41T80 is not set | ||
953 | # CONFIG_RTC_DRV_S35390A is not set | ||
954 | # CONFIG_RTC_DRV_FM3130 is not set | ||
955 | # CONFIG_RTC_DRV_RX8581 is not set | ||
956 | |||
957 | # | ||
958 | # SPI RTC drivers | ||
959 | # | ||
960 | # CONFIG_RTC_DRV_M41T94 is not set | ||
961 | # CONFIG_RTC_DRV_DS1305 is not set | ||
962 | # CONFIG_RTC_DRV_DS1390 is not set | ||
963 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
964 | # CONFIG_RTC_DRV_R9701 is not set | ||
965 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
966 | # CONFIG_RTC_DRV_DS3234 is not set | ||
967 | |||
968 | # | ||
969 | # Platform RTC drivers | ||
970 | # | ||
971 | # CONFIG_RTC_DRV_DS1286 is not set | ||
972 | # CONFIG_RTC_DRV_DS1511 is not set | ||
973 | # CONFIG_RTC_DRV_DS1553 is not set | ||
974 | # CONFIG_RTC_DRV_DS1742 is not set | ||
975 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
976 | # CONFIG_RTC_DRV_M48T86 is not set | ||
977 | # CONFIG_RTC_DRV_M48T35 is not set | ||
978 | # CONFIG_RTC_DRV_M48T59 is not set | ||
979 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
980 | # CONFIG_RTC_DRV_V3020 is not set | ||
981 | |||
982 | # | ||
983 | # on-CPU RTC drivers | ||
984 | # | ||
985 | # CONFIG_RTC_DRV_SH is not set | ||
705 | # CONFIG_DMADEVICES is not set | 986 | # CONFIG_DMADEVICES is not set |
706 | CONFIG_UIO=y | 987 | CONFIG_UIO=y |
707 | # CONFIG_UIO_PDRV is not set | 988 | # CONFIG_UIO_PDRV is not set |
@@ -768,10 +1049,7 @@ CONFIG_TMPFS=y | |||
768 | # CONFIG_HUGETLBFS is not set | 1049 | # CONFIG_HUGETLBFS is not set |
769 | # CONFIG_HUGETLB_PAGE is not set | 1050 | # CONFIG_HUGETLB_PAGE is not set |
770 | # CONFIG_CONFIGFS_FS is not set | 1051 | # CONFIG_CONFIGFS_FS is not set |
771 | 1052 | CONFIG_MISC_FILESYSTEMS=y | |
772 | # | ||
773 | # Miscellaneous filesystems | ||
774 | # | ||
775 | # CONFIG_ADFS_FS is not set | 1053 | # CONFIG_ADFS_FS is not set |
776 | # CONFIG_AFFS_FS is not set | 1054 | # CONFIG_AFFS_FS is not set |
777 | # CONFIG_HFS_FS is not set | 1055 | # CONFIG_HFS_FS is not set |
@@ -780,6 +1058,7 @@ CONFIG_TMPFS=y | |||
780 | # CONFIG_BFS_FS is not set | 1058 | # CONFIG_BFS_FS is not set |
781 | # CONFIG_EFS_FS is not set | 1059 | # CONFIG_EFS_FS is not set |
782 | # CONFIG_JFFS2_FS is not set | 1060 | # CONFIG_JFFS2_FS is not set |
1061 | # CONFIG_UBIFS_FS is not set | ||
783 | # CONFIG_CRAMFS is not set | 1062 | # CONFIG_CRAMFS is not set |
784 | # CONFIG_VXFS_FS is not set | 1063 | # CONFIG_VXFS_FS is not set |
785 | # CONFIG_MINIX_FS is not set | 1064 | # CONFIG_MINIX_FS is not set |
@@ -878,13 +1157,19 @@ CONFIG_FRAME_WARN=1024 | |||
878 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1157 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
879 | # CONFIG_LATENCYTOP is not set | 1158 | # CONFIG_LATENCYTOP is not set |
880 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 1159 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
881 | CONFIG_NOP_TRACER=y | 1160 | CONFIG_HAVE_FUNCTION_TRACER=y |
882 | CONFIG_HAVE_FTRACE=y | 1161 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1162 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1163 | |||
1164 | # | ||
1165 | # Tracers | ||
1166 | # | ||
883 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1167 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
884 | # CONFIG_SAMPLES is not set | 1168 | # CONFIG_SAMPLES is not set |
1169 | CONFIG_HAVE_ARCH_KGDB=y | ||
885 | # CONFIG_SH_STANDARD_BIOS is not set | 1170 | # CONFIG_SH_STANDARD_BIOS is not set |
886 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1171 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
887 | # CONFIG_SH_KGDB is not set | 1172 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
888 | 1173 | ||
889 | # | 1174 | # |
890 | # Security options | 1175 | # Security options |
@@ -900,11 +1185,14 @@ CONFIG_CRYPTO=y | |||
900 | # | 1185 | # |
901 | # CONFIG_CRYPTO_FIPS is not set | 1186 | # CONFIG_CRYPTO_FIPS is not set |
902 | CONFIG_CRYPTO_ALGAPI=y | 1187 | CONFIG_CRYPTO_ALGAPI=y |
903 | CONFIG_CRYPTO_AEAD=y | 1188 | CONFIG_CRYPTO_ALGAPI2=y |
1189 | CONFIG_CRYPTO_AEAD2=y | ||
904 | CONFIG_CRYPTO_BLKCIPHER=y | 1190 | CONFIG_CRYPTO_BLKCIPHER=y |
905 | CONFIG_CRYPTO_HASH=y | 1191 | CONFIG_CRYPTO_BLKCIPHER2=y |
906 | CONFIG_CRYPTO_RNG=y | 1192 | CONFIG_CRYPTO_HASH2=y |
1193 | CONFIG_CRYPTO_RNG2=y | ||
907 | CONFIG_CRYPTO_MANAGER=y | 1194 | CONFIG_CRYPTO_MANAGER=y |
1195 | CONFIG_CRYPTO_MANAGER2=y | ||
908 | # CONFIG_CRYPTO_GF128MUL is not set | 1196 | # CONFIG_CRYPTO_GF128MUL is not set |
909 | # CONFIG_CRYPTO_NULL is not set | 1197 | # CONFIG_CRYPTO_NULL is not set |
910 | # CONFIG_CRYPTO_CRYPTD is not set | 1198 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -987,12 +1275,13 @@ CONFIG_CRYPTO_HW=y | |||
987 | # Library routines | 1275 | # Library routines |
988 | # | 1276 | # |
989 | CONFIG_BITREVERSE=y | 1277 | CONFIG_BITREVERSE=y |
1278 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
990 | # CONFIG_CRC_CCITT is not set | 1279 | # CONFIG_CRC_CCITT is not set |
991 | # CONFIG_CRC16 is not set | 1280 | # CONFIG_CRC16 is not set |
992 | CONFIG_CRC_T10DIF=y | 1281 | CONFIG_CRC_T10DIF=y |
993 | # CONFIG_CRC_ITU_T is not set | 1282 | CONFIG_CRC_ITU_T=y |
994 | CONFIG_CRC32=y | 1283 | CONFIG_CRC32=y |
995 | # CONFIG_CRC7 is not set | 1284 | CONFIG_CRC7=y |
996 | # CONFIG_LIBCRC32C is not set | 1285 | # CONFIG_LIBCRC32C is not set |
997 | CONFIG_PLIST=y | 1286 | CONFIG_PLIST=y |
998 | CONFIG_HAS_IOMEM=y | 1287 | CONFIG_HAS_IOMEM=y |
diff --git a/arch/sh/configs/cayman_defconfig b/arch/sh/configs/cayman_defconfig index e21c0e8e22d9..92895013813d 100644 --- a/arch/sh/configs/cayman_defconfig +++ b/arch/sh/configs/cayman_defconfig | |||
@@ -700,8 +700,8 @@ CONFIG_I2C_HELPER_AUTO=y | |||
700 | # Miscellaneous I2C Chip support | 700 | # Miscellaneous I2C Chip support |
701 | # | 701 | # |
702 | # CONFIG_DS1682 is not set | 702 | # CONFIG_DS1682 is not set |
703 | # CONFIG_AT24 is not set | 703 | # CONFIG_EEPROM_AT24 is not set |
704 | # CONFIG_SENSORS_EEPROM is not set | 704 | # CONFIG_EEPROM_LEGACY is not set |
705 | # CONFIG_SENSORS_PCF8574 is not set | 705 | # CONFIG_SENSORS_PCF8574 is not set |
706 | # CONFIG_PCF8575 is not set | 706 | # CONFIG_PCF8575 is not set |
707 | # CONFIG_SENSORS_PCA9539 is not set | 707 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/sh/configs/dreamcast_defconfig b/arch/sh/configs/dreamcast_defconfig index be4c2e0dbb26..2d86e0487517 100644 --- a/arch/sh/configs/dreamcast_defconfig +++ b/arch/sh/configs/dreamcast_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:18:02 2008 | 4 | # Fri Jan 9 16:54:55 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -78,7 +80,6 @@ CONFIG_SLAB=y | |||
78 | # CONFIG_SLUB is not set | 80 | # CONFIG_SLUB is not set |
79 | # CONFIG_SLOB is not set | 81 | # CONFIG_SLOB is not set |
80 | CONFIG_PROFILING=y | 82 | CONFIG_PROFILING=y |
81 | # CONFIG_MARKERS is not set | ||
82 | # CONFIG_OPROFILE is not set | 83 | # CONFIG_OPROFILE is not set |
83 | CONFIG_HAVE_OPROFILE=y | 84 | CONFIG_HAVE_OPROFILE=y |
84 | # CONFIG_KPROBES is not set | 85 | # CONFIG_KPROBES is not set |
@@ -90,7 +91,6 @@ CONFIG_HAVE_CLK=y | |||
90 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 91 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
91 | CONFIG_SLABINFO=y | 92 | CONFIG_SLABINFO=y |
92 | CONFIG_RT_MUTEXES=y | 93 | CONFIG_RT_MUTEXES=y |
93 | # CONFIG_TINY_SHMEM is not set | ||
94 | CONFIG_BASE_SMALL=0 | 94 | CONFIG_BASE_SMALL=0 |
95 | CONFIG_MODULES=y | 95 | CONFIG_MODULES=y |
96 | # CONFIG_MODULE_FORCE_LOAD is not set | 96 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -98,11 +98,9 @@ CONFIG_MODULE_UNLOAD=y | |||
98 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 98 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
99 | # CONFIG_MODVERSIONS is not set | 99 | # CONFIG_MODVERSIONS is not set |
100 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 100 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
101 | CONFIG_KMOD=y | ||
102 | CONFIG_BLOCK=y | 101 | CONFIG_BLOCK=y |
103 | # CONFIG_LBD is not set | 102 | # CONFIG_LBD is not set |
104 | # CONFIG_BLK_DEV_IO_TRACE is not set | 103 | # CONFIG_BLK_DEV_IO_TRACE is not set |
105 | # CONFIG_LSF is not set | ||
106 | # CONFIG_BLK_DEV_BSG is not set | 104 | # CONFIG_BLK_DEV_BSG is not set |
107 | # CONFIG_BLK_DEV_INTEGRITY is not set | 105 | # CONFIG_BLK_DEV_INTEGRITY is not set |
108 | 106 | ||
@@ -119,6 +117,10 @@ CONFIG_DEFAULT_AS=y | |||
119 | # CONFIG_DEFAULT_NOOP is not set | 117 | # CONFIG_DEFAULT_NOOP is not set |
120 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 118 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
121 | CONFIG_CLASSIC_RCU=y | 119 | CONFIG_CLASSIC_RCU=y |
120 | # CONFIG_TREE_RCU is not set | ||
121 | # CONFIG_PREEMPT_RCU is not set | ||
122 | # CONFIG_TREE_RCU_TRACE is not set | ||
123 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
122 | # CONFIG_FREEZER is not set | 124 | # CONFIG_FREEZER is not set |
123 | 125 | ||
124 | # | 126 | # |
@@ -126,6 +128,7 @@ CONFIG_CLASSIC_RCU=y | |||
126 | # | 128 | # |
127 | CONFIG_CPU_SH4=y | 129 | CONFIG_CPU_SH4=y |
128 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
129 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 132 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
130 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 133 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 134 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -195,7 +198,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
195 | CONFIG_SPARSEMEM_STATIC=y | 198 | CONFIG_SPARSEMEM_STATIC=y |
196 | CONFIG_PAGEFLAGS_EXTENDED=y | 199 | CONFIG_PAGEFLAGS_EXTENDED=y |
197 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 200 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
198 | # CONFIG_RESOURCES_64BIT is not set | ||
199 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 201 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
200 | CONFIG_ZONE_DMA_FLAG=0 | 202 | CONFIG_ZONE_DMA_FLAG=0 |
201 | CONFIG_NR_QUICK=2 | 203 | CONFIG_NR_QUICK=2 |
@@ -290,7 +292,6 @@ CONFIG_SECCOMP=y | |||
290 | # CONFIG_PREEMPT_NONE is not set | 292 | # CONFIG_PREEMPT_NONE is not set |
291 | # CONFIG_PREEMPT_VOLUNTARY is not set | 293 | # CONFIG_PREEMPT_VOLUNTARY is not set |
292 | CONFIG_PREEMPT=y | 294 | CONFIG_PREEMPT=y |
293 | # CONFIG_PREEMPT_RCU is not set | ||
294 | CONFIG_GUSA=y | 295 | CONFIG_GUSA=y |
295 | # CONFIG_GUSA_RB is not set | 296 | # CONFIG_GUSA_RB is not set |
296 | 297 | ||
@@ -310,6 +311,7 @@ CONFIG_MAPLE=y | |||
310 | CONFIG_PCI=y | 311 | CONFIG_PCI=y |
311 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 312 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
312 | CONFIG_PCI_AUTO=y | 313 | CONFIG_PCI_AUTO=y |
314 | # CONFIG_PCIEPORTBUS is not set | ||
313 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 315 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
314 | CONFIG_PCI_LEGACY=y | 316 | CONFIG_PCI_LEGACY=y |
315 | # CONFIG_PCCARD is not set | 317 | # CONFIG_PCCARD is not set |
@@ -322,11 +324,18 @@ CONFIG_BINFMT_ELF=y | |||
322 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 324 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
323 | # CONFIG_HAVE_AOUT is not set | 325 | # CONFIG_HAVE_AOUT is not set |
324 | # CONFIG_BINFMT_MISC is not set | 326 | # CONFIG_BINFMT_MISC is not set |
327 | |||
328 | # | ||
329 | # Power management options (EXPERIMENTAL) | ||
330 | # | ||
331 | # CONFIG_PM is not set | ||
332 | # CONFIG_CPU_IDLE is not set | ||
325 | CONFIG_NET=y | 333 | CONFIG_NET=y |
326 | 334 | ||
327 | # | 335 | # |
328 | # Networking options | 336 | # Networking options |
329 | # | 337 | # |
338 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
330 | CONFIG_PACKET=y | 339 | CONFIG_PACKET=y |
331 | # CONFIG_PACKET_MMAP is not set | 340 | # CONFIG_PACKET_MMAP is not set |
332 | CONFIG_UNIX=y | 341 | CONFIG_UNIX=y |
@@ -379,6 +388,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
379 | # CONFIG_ECONET is not set | 388 | # CONFIG_ECONET is not set |
380 | # CONFIG_WAN_ROUTER is not set | 389 | # CONFIG_WAN_ROUTER is not set |
381 | # CONFIG_NET_SCHED is not set | 390 | # CONFIG_NET_SCHED is not set |
391 | # CONFIG_DCB is not set | ||
382 | 392 | ||
383 | # | 393 | # |
384 | # Network testing | 394 | # Network testing |
@@ -394,8 +404,8 @@ CONFIG_WIRELESS=y | |||
394 | # CONFIG_CFG80211 is not set | 404 | # CONFIG_CFG80211 is not set |
395 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 405 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
396 | # CONFIG_WIRELESS_EXT is not set | 406 | # CONFIG_WIRELESS_EXT is not set |
407 | # CONFIG_LIB80211 is not set | ||
397 | # CONFIG_MAC80211 is not set | 408 | # CONFIG_MAC80211 is not set |
398 | # CONFIG_IEEE80211 is not set | ||
399 | # CONFIG_RFKILL is not set | 409 | # CONFIG_RFKILL is not set |
400 | # CONFIG_NET_9P is not set | 410 | # CONFIG_NET_9P is not set |
401 | 411 | ||
@@ -434,6 +444,7 @@ CONFIG_MISC_DEVICES=y | |||
434 | # CONFIG_TIFM_CORE is not set | 444 | # CONFIG_TIFM_CORE is not set |
435 | # CONFIG_ENCLOSURE_SERVICES is not set | 445 | # CONFIG_ENCLOSURE_SERVICES is not set |
436 | # CONFIG_HP_ILO is not set | 446 | # CONFIG_HP_ILO is not set |
447 | # CONFIG_C2PORT is not set | ||
437 | CONFIG_HAVE_IDE=y | 448 | CONFIG_HAVE_IDE=y |
438 | # CONFIG_IDE is not set | 449 | # CONFIG_IDE is not set |
439 | 450 | ||
@@ -477,6 +488,7 @@ CONFIG_MII=y | |||
477 | # CONFIG_NET_VENDOR_3COM is not set | 488 | # CONFIG_NET_VENDOR_3COM is not set |
478 | # CONFIG_SMC91X is not set | 489 | # CONFIG_SMC91X is not set |
479 | # CONFIG_SMC911X is not set | 490 | # CONFIG_SMC911X is not set |
491 | # CONFIG_SMSC911X is not set | ||
480 | # CONFIG_NET_TULIP is not set | 492 | # CONFIG_NET_TULIP is not set |
481 | # CONFIG_HP100 is not set | 493 | # CONFIG_HP100 is not set |
482 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 494 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -492,7 +504,6 @@ CONFIG_NET_PCI=y | |||
492 | # CONFIG_ADAPTEC_STARFIRE is not set | 504 | # CONFIG_ADAPTEC_STARFIRE is not set |
493 | # CONFIG_B44 is not set | 505 | # CONFIG_B44 is not set |
494 | # CONFIG_FORCEDETH is not set | 506 | # CONFIG_FORCEDETH is not set |
495 | # CONFIG_EEPRO100 is not set | ||
496 | # CONFIG_E100 is not set | 507 | # CONFIG_E100 is not set |
497 | # CONFIG_FEALNX is not set | 508 | # CONFIG_FEALNX is not set |
498 | # CONFIG_NATSEMI is not set | 509 | # CONFIG_NATSEMI is not set |
@@ -506,6 +517,7 @@ CONFIG_8139TOO=y | |||
506 | # CONFIG_R6040 is not set | 517 | # CONFIG_R6040 is not set |
507 | # CONFIG_SIS900 is not set | 518 | # CONFIG_SIS900 is not set |
508 | # CONFIG_EPIC100 is not set | 519 | # CONFIG_EPIC100 is not set |
520 | # CONFIG_SMSC9420 is not set | ||
509 | # CONFIG_SUNDANCE is not set | 521 | # CONFIG_SUNDANCE is not set |
510 | # CONFIG_TLAN is not set | 522 | # CONFIG_TLAN is not set |
511 | # CONFIG_VIA_RHINE is not set | 523 | # CONFIG_VIA_RHINE is not set |
@@ -611,6 +623,7 @@ CONFIG_SERIAL_CORE=y | |||
611 | CONFIG_SERIAL_CORE_CONSOLE=y | 623 | CONFIG_SERIAL_CORE_CONSOLE=y |
612 | # CONFIG_SERIAL_JSM is not set | 624 | # CONFIG_SERIAL_JSM is not set |
613 | CONFIG_UNIX98_PTYS=y | 625 | CONFIG_UNIX98_PTYS=y |
626 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
614 | CONFIG_LEGACY_PTYS=y | 627 | CONFIG_LEGACY_PTYS=y |
615 | CONFIG_LEGACY_PTY_COUNT=256 | 628 | CONFIG_LEGACY_PTY_COUNT=256 |
616 | # CONFIG_IPMI_HANDLER is not set | 629 | # CONFIG_IPMI_HANDLER is not set |
@@ -643,11 +656,11 @@ CONFIG_SH_WDT=y | |||
643 | # | 656 | # |
644 | # CONFIG_PCIPCWATCHDOG is not set | 657 | # CONFIG_PCIPCWATCHDOG is not set |
645 | # CONFIG_WDTPCI is not set | 658 | # CONFIG_WDTPCI is not set |
659 | CONFIG_SSB_POSSIBLE=y | ||
646 | 660 | ||
647 | # | 661 | # |
648 | # Sonics Silicon Backplane | 662 | # Sonics Silicon Backplane |
649 | # | 663 | # |
650 | CONFIG_SSB_POSSIBLE=y | ||
651 | # CONFIG_SSB is not set | 664 | # CONFIG_SSB is not set |
652 | 665 | ||
653 | # | 666 | # |
@@ -657,7 +670,7 @@ CONFIG_SSB_POSSIBLE=y | |||
657 | # CONFIG_MFD_SM501 is not set | 670 | # CONFIG_MFD_SM501 is not set |
658 | # CONFIG_HTC_PASIC3 is not set | 671 | # CONFIG_HTC_PASIC3 is not set |
659 | # CONFIG_MFD_TMIO is not set | 672 | # CONFIG_MFD_TMIO is not set |
660 | # CONFIG_MFD_WM8400 is not set | 673 | # CONFIG_REGULATOR is not set |
661 | 674 | ||
662 | # | 675 | # |
663 | # Multimedia devices | 676 | # Multimedia devices |
@@ -732,6 +745,7 @@ CONFIG_FB_PVR2=y | |||
732 | # CONFIG_FB_SH_MOBILE_LCDC is not set | 745 | # CONFIG_FB_SH_MOBILE_LCDC is not set |
733 | # CONFIG_FB_VIRTUAL is not set | 746 | # CONFIG_FB_VIRTUAL is not set |
734 | # CONFIG_FB_METRONOME is not set | 747 | # CONFIG_FB_METRONOME is not set |
748 | # CONFIG_FB_MB862XX is not set | ||
735 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 749 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
736 | 750 | ||
737 | # | 751 | # |
@@ -788,9 +802,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
788 | # | 802 | # |
789 | 803 | ||
790 | # | 804 | # |
791 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 805 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
792 | # | 806 | # |
793 | # CONFIG_USB_GADGET is not set | 807 | # CONFIG_USB_GADGET is not set |
808 | # CONFIG_UWB is not set | ||
794 | # CONFIG_MMC is not set | 809 | # CONFIG_MMC is not set |
795 | # CONFIG_MEMSTICK is not set | 810 | # CONFIG_MEMSTICK is not set |
796 | # CONFIG_NEW_LEDS is not set | 811 | # CONFIG_NEW_LEDS is not set |
@@ -847,10 +862,7 @@ CONFIG_TMPFS=y | |||
847 | CONFIG_HUGETLBFS=y | 862 | CONFIG_HUGETLBFS=y |
848 | CONFIG_HUGETLB_PAGE=y | 863 | CONFIG_HUGETLB_PAGE=y |
849 | # CONFIG_CONFIGFS_FS is not set | 864 | # CONFIG_CONFIGFS_FS is not set |
850 | 865 | CONFIG_MISC_FILESYSTEMS=y | |
851 | # | ||
852 | # Miscellaneous filesystems | ||
853 | # | ||
854 | # CONFIG_ADFS_FS is not set | 866 | # CONFIG_ADFS_FS is not set |
855 | # CONFIG_AFFS_FS is not set | 867 | # CONFIG_AFFS_FS is not set |
856 | # CONFIG_HFS_FS is not set | 868 | # CONFIG_HFS_FS is not set |
@@ -901,13 +913,19 @@ CONFIG_FRAME_WARN=1024 | |||
901 | # CONFIG_DEBUG_MEMORY_INIT is not set | 913 | # CONFIG_DEBUG_MEMORY_INIT is not set |
902 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 914 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
903 | # CONFIG_LATENCYTOP is not set | 915 | # CONFIG_LATENCYTOP is not set |
904 | CONFIG_NOP_TRACER=y | 916 | CONFIG_HAVE_FUNCTION_TRACER=y |
905 | CONFIG_HAVE_FTRACE=y | 917 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
918 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
919 | |||
920 | # | ||
921 | # Tracers | ||
922 | # | ||
906 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 923 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
907 | # CONFIG_SAMPLES is not set | 924 | # CONFIG_SAMPLES is not set |
925 | CONFIG_HAVE_ARCH_KGDB=y | ||
908 | # CONFIG_SH_STANDARD_BIOS is not set | 926 | # CONFIG_SH_STANDARD_BIOS is not set |
909 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 927 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
910 | # CONFIG_SH_KGDB is not set | 928 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
911 | 929 | ||
912 | # | 930 | # |
913 | # Security options | 931 | # Security options |
@@ -923,6 +941,7 @@ CONFIG_CRYPTO=y | |||
923 | # | 941 | # |
924 | # CONFIG_CRYPTO_FIPS is not set | 942 | # CONFIG_CRYPTO_FIPS is not set |
925 | # CONFIG_CRYPTO_MANAGER is not set | 943 | # CONFIG_CRYPTO_MANAGER is not set |
944 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
926 | # CONFIG_CRYPTO_GF128MUL is not set | 945 | # CONFIG_CRYPTO_GF128MUL is not set |
927 | # CONFIG_CRYPTO_NULL is not set | 946 | # CONFIG_CRYPTO_NULL is not set |
928 | # CONFIG_CRYPTO_CRYPTD is not set | 947 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1006,6 +1025,7 @@ CONFIG_CRYPTO_HW=y | |||
1006 | # Library routines | 1025 | # Library routines |
1007 | # | 1026 | # |
1008 | CONFIG_BITREVERSE=y | 1027 | CONFIG_BITREVERSE=y |
1028 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1009 | # CONFIG_CRC_CCITT is not set | 1029 | # CONFIG_CRC_CCITT is not set |
1010 | # CONFIG_CRC16 is not set | 1030 | # CONFIG_CRC16 is not set |
1011 | # CONFIG_CRC_T10DIF is not set | 1031 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/edosk7705_defconfig b/arch/sh/configs/edosk7705_defconfig index 8f4329fbbd39..461bfb350221 100644 --- a/arch/sh/configs/edosk7705_defconfig +++ b/arch/sh/configs/edosk7705_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.28-rc6 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Dec 17 13:53:02 2008 | 4 | # Fri Jan 9 16:55:29 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -64,7 +64,6 @@ CONFIG_SHMEM=y | |||
64 | CONFIG_SLUB=y | 64 | CONFIG_SLUB=y |
65 | # CONFIG_SLOB is not set | 65 | # CONFIG_SLOB is not set |
66 | # CONFIG_PROFILING is not set | 66 | # CONFIG_PROFILING is not set |
67 | # CONFIG_MARKERS is not set | ||
68 | CONFIG_HAVE_OPROFILE=y | 67 | CONFIG_HAVE_OPROFILE=y |
69 | CONFIG_HAVE_IOREMAP_PROT=y | 68 | CONFIG_HAVE_IOREMAP_PROT=y |
70 | CONFIG_HAVE_KPROBES=y | 69 | CONFIG_HAVE_KPROBES=y |
@@ -72,11 +71,14 @@ CONFIG_HAVE_KRETPROBES=y | |||
72 | CONFIG_HAVE_ARCH_TRACEHOOK=y | 71 | CONFIG_HAVE_ARCH_TRACEHOOK=y |
73 | CONFIG_HAVE_CLK=y | 72 | CONFIG_HAVE_CLK=y |
74 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 73 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
75 | # CONFIG_TINY_SHMEM is not set | ||
76 | CONFIG_BASE_SMALL=1 | 74 | CONFIG_BASE_SMALL=1 |
77 | # CONFIG_MODULES is not set | 75 | # CONFIG_MODULES is not set |
78 | # CONFIG_BLOCK is not set | 76 | # CONFIG_BLOCK is not set |
79 | CONFIG_CLASSIC_RCU=y | 77 | CONFIG_CLASSIC_RCU=y |
78 | # CONFIG_TREE_RCU is not set | ||
79 | # CONFIG_PREEMPT_RCU is not set | ||
80 | # CONFIG_TREE_RCU_TRACE is not set | ||
81 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
80 | # CONFIG_FREEZER is not set | 82 | # CONFIG_FREEZER is not set |
81 | 83 | ||
82 | # | 84 | # |
@@ -151,7 +153,6 @@ CONFIG_SPARSEMEM_STATIC=y | |||
151 | CONFIG_PAGEFLAGS_EXTENDED=y | 153 | CONFIG_PAGEFLAGS_EXTENDED=y |
152 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 154 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
153 | CONFIG_MIGRATION=y | 155 | CONFIG_MIGRATION=y |
154 | # CONFIG_RESOURCES_64BIT is not set | ||
155 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 156 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
156 | CONFIG_ZONE_DMA_FLAG=0 | 157 | CONFIG_ZONE_DMA_FLAG=0 |
157 | CONFIG_NR_QUICK=2 | 158 | CONFIG_NR_QUICK=2 |
@@ -362,7 +363,6 @@ CONFIG_SSB_POSSIBLE=y | |||
362 | # CONFIG_DMADEVICES is not set | 363 | # CONFIG_DMADEVICES is not set |
363 | # CONFIG_UIO is not set | 364 | # CONFIG_UIO is not set |
364 | # CONFIG_STAGING is not set | 365 | # CONFIG_STAGING is not set |
365 | CONFIG_STAGING_EXCLUDE_BUILD=y | ||
366 | 366 | ||
367 | # | 367 | # |
368 | # File systems | 368 | # File systems |
@@ -382,10 +382,7 @@ CONFIG_STAGING_EXCLUDE_BUILD=y | |||
382 | # CONFIG_TMPFS is not set | 382 | # CONFIG_TMPFS is not set |
383 | # CONFIG_HUGETLBFS is not set | 383 | # CONFIG_HUGETLBFS is not set |
384 | # CONFIG_HUGETLB_PAGE is not set | 384 | # CONFIG_HUGETLB_PAGE is not set |
385 | 385 | CONFIG_MISC_FILESYSTEMS=y | |
386 | # | ||
387 | # Miscellaneous filesystems | ||
388 | # | ||
389 | # CONFIG_NLS is not set | 386 | # CONFIG_NLS is not set |
390 | 387 | ||
391 | # | 388 | # |
@@ -426,6 +423,7 @@ CONFIG_HAVE_ARCH_KGDB=y | |||
426 | # | 423 | # |
427 | # Library routines | 424 | # Library routines |
428 | # | 425 | # |
426 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
429 | # CONFIG_CRC_CCITT is not set | 427 | # CONFIG_CRC_CCITT is not set |
430 | # CONFIG_CRC16 is not set | 428 | # CONFIG_CRC16 is not set |
431 | # CONFIG_CRC_T10DIF is not set | 429 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/edosk7760_defconfig b/arch/sh/configs/edosk7760_defconfig index 158006847ad6..14d4b35685a1 100644 --- a/arch/sh/configs/edosk7760_defconfig +++ b/arch/sh/configs/edosk7760_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:20:09 2008 | 4 | # Fri Jan 9 16:55:48 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -59,6 +61,7 @@ CONFIG_UID16=y | |||
59 | CONFIG_SYSCTL_SYSCALL=y | 61 | CONFIG_SYSCTL_SYSCALL=y |
60 | CONFIG_KALLSYMS=y | 62 | CONFIG_KALLSYMS=y |
61 | CONFIG_KALLSYMS_ALL=y | 63 | CONFIG_KALLSYMS_ALL=y |
64 | CONFIG_KALLSYMS_STRIP_GENERATED=y | ||
62 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 65 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
63 | CONFIG_HOTPLUG=y | 66 | CONFIG_HOTPLUG=y |
64 | CONFIG_PRINTK=y | 67 | CONFIG_PRINTK=y |
@@ -75,13 +78,11 @@ CONFIG_EVENTFD=y | |||
75 | CONFIG_SHMEM=y | 78 | CONFIG_SHMEM=y |
76 | CONFIG_AIO=y | 79 | CONFIG_AIO=y |
77 | CONFIG_VM_EVENT_COUNTERS=y | 80 | CONFIG_VM_EVENT_COUNTERS=y |
78 | CONFIG_PCI_QUIRKS=y | ||
79 | CONFIG_SLUB_DEBUG=y | 81 | CONFIG_SLUB_DEBUG=y |
80 | # CONFIG_SLAB is not set | 82 | # CONFIG_SLAB is not set |
81 | CONFIG_SLUB=y | 83 | CONFIG_SLUB=y |
82 | # CONFIG_SLOB is not set | 84 | # CONFIG_SLOB is not set |
83 | # CONFIG_PROFILING is not set | 85 | # CONFIG_PROFILING is not set |
84 | # CONFIG_MARKERS is not set | ||
85 | CONFIG_HAVE_OPROFILE=y | 86 | CONFIG_HAVE_OPROFILE=y |
86 | # CONFIG_KPROBES is not set | 87 | # CONFIG_KPROBES is not set |
87 | CONFIG_HAVE_IOREMAP_PROT=y | 88 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -92,7 +93,6 @@ CONFIG_HAVE_CLK=y | |||
92 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 93 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
93 | CONFIG_SLABINFO=y | 94 | CONFIG_SLABINFO=y |
94 | CONFIG_RT_MUTEXES=y | 95 | CONFIG_RT_MUTEXES=y |
95 | # CONFIG_TINY_SHMEM is not set | ||
96 | CONFIG_BASE_SMALL=0 | 96 | CONFIG_BASE_SMALL=0 |
97 | CONFIG_MODULES=y | 97 | CONFIG_MODULES=y |
98 | # CONFIG_MODULE_FORCE_LOAD is not set | 98 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -100,11 +100,9 @@ CONFIG_MODULE_UNLOAD=y | |||
100 | CONFIG_MODULE_FORCE_UNLOAD=y | 100 | CONFIG_MODULE_FORCE_UNLOAD=y |
101 | # CONFIG_MODVERSIONS is not set | 101 | # CONFIG_MODVERSIONS is not set |
102 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 102 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
103 | CONFIG_KMOD=y | ||
104 | CONFIG_BLOCK=y | 103 | CONFIG_BLOCK=y |
105 | # CONFIG_LBD is not set | 104 | # CONFIG_LBD is not set |
106 | # CONFIG_BLK_DEV_IO_TRACE is not set | 105 | # CONFIG_BLK_DEV_IO_TRACE is not set |
107 | # CONFIG_LSF is not set | ||
108 | # CONFIG_BLK_DEV_BSG is not set | 106 | # CONFIG_BLK_DEV_BSG is not set |
109 | # CONFIG_BLK_DEV_INTEGRITY is not set | 107 | # CONFIG_BLK_DEV_INTEGRITY is not set |
110 | 108 | ||
@@ -121,6 +119,10 @@ CONFIG_DEFAULT_CFQ=y | |||
121 | # CONFIG_DEFAULT_NOOP is not set | 119 | # CONFIG_DEFAULT_NOOP is not set |
122 | CONFIG_DEFAULT_IOSCHED="cfq" | 120 | CONFIG_DEFAULT_IOSCHED="cfq" |
123 | CONFIG_CLASSIC_RCU=y | 121 | CONFIG_CLASSIC_RCU=y |
122 | # CONFIG_TREE_RCU is not set | ||
123 | # CONFIG_PREEMPT_RCU is not set | ||
124 | # CONFIG_TREE_RCU_TRACE is not set | ||
125 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
124 | # CONFIG_FREEZER is not set | 126 | # CONFIG_FREEZER is not set |
125 | 127 | ||
126 | # | 128 | # |
@@ -128,6 +130,7 @@ CONFIG_CLASSIC_RCU=y | |||
128 | # | 130 | # |
129 | CONFIG_CPU_SH4=y | 131 | CONFIG_CPU_SH4=y |
130 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 132 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
133 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
131 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 134 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
132 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 135 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
133 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 136 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -191,7 +194,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
191 | CONFIG_SPARSEMEM_STATIC=y | 194 | CONFIG_SPARSEMEM_STATIC=y |
192 | CONFIG_PAGEFLAGS_EXTENDED=y | 195 | CONFIG_PAGEFLAGS_EXTENDED=y |
193 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 196 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
194 | # CONFIG_RESOURCES_64BIT is not set | ||
195 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 197 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
196 | CONFIG_ZONE_DMA_FLAG=0 | 198 | CONFIG_ZONE_DMA_FLAG=0 |
197 | CONFIG_NR_QUICK=2 | 199 | CONFIG_NR_QUICK=2 |
@@ -272,7 +274,6 @@ CONFIG_SCHED_HRTICK=y | |||
272 | # CONFIG_PREEMPT_NONE is not set | 274 | # CONFIG_PREEMPT_NONE is not set |
273 | # CONFIG_PREEMPT_VOLUNTARY is not set | 275 | # CONFIG_PREEMPT_VOLUNTARY is not set |
274 | CONFIG_PREEMPT=y | 276 | CONFIG_PREEMPT=y |
275 | # CONFIG_PREEMPT_RCU is not set | ||
276 | CONFIG_GUSA=y | 277 | CONFIG_GUSA=y |
277 | # CONFIG_GUSA_RB is not set | 278 | # CONFIG_GUSA_RB is not set |
278 | 279 | ||
@@ -298,11 +299,18 @@ CONFIG_BINFMT_ELF=y | |||
298 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 299 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
299 | # CONFIG_HAVE_AOUT is not set | 300 | # CONFIG_HAVE_AOUT is not set |
300 | # CONFIG_BINFMT_MISC is not set | 301 | # CONFIG_BINFMT_MISC is not set |
302 | |||
303 | # | ||
304 | # Power management options (EXPERIMENTAL) | ||
305 | # | ||
306 | # CONFIG_PM is not set | ||
307 | # CONFIG_CPU_IDLE is not set | ||
301 | CONFIG_NET=y | 308 | CONFIG_NET=y |
302 | 309 | ||
303 | # | 310 | # |
304 | # Networking options | 311 | # Networking options |
305 | # | 312 | # |
313 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
306 | CONFIG_PACKET=y | 314 | CONFIG_PACKET=y |
307 | # CONFIG_PACKET_MMAP is not set | 315 | # CONFIG_PACKET_MMAP is not set |
308 | CONFIG_UNIX=y | 316 | CONFIG_UNIX=y |
@@ -353,6 +361,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
353 | # CONFIG_ECONET is not set | 361 | # CONFIG_ECONET is not set |
354 | # CONFIG_WAN_ROUTER is not set | 362 | # CONFIG_WAN_ROUTER is not set |
355 | # CONFIG_NET_SCHED is not set | 363 | # CONFIG_NET_SCHED is not set |
364 | # CONFIG_DCB is not set | ||
356 | 365 | ||
357 | # | 366 | # |
358 | # Network testing | 367 | # Network testing |
@@ -368,8 +377,8 @@ CONFIG_WIRELESS=y | |||
368 | # CONFIG_CFG80211 is not set | 377 | # CONFIG_CFG80211 is not set |
369 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 378 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
370 | # CONFIG_WIRELESS_EXT is not set | 379 | # CONFIG_WIRELESS_EXT is not set |
380 | # CONFIG_LIB80211 is not set | ||
371 | # CONFIG_MAC80211 is not set | 381 | # CONFIG_MAC80211 is not set |
372 | # CONFIG_IEEE80211 is not set | ||
373 | # CONFIG_RFKILL is not set | 382 | # CONFIG_RFKILL is not set |
374 | # CONFIG_NET_9P is not set | 383 | # CONFIG_NET_9P is not set |
375 | 384 | ||
@@ -510,6 +519,7 @@ CONFIG_MII=y | |||
510 | # CONFIG_STNIC is not set | 519 | # CONFIG_STNIC is not set |
511 | CONFIG_SMC91X=y | 520 | CONFIG_SMC91X=y |
512 | # CONFIG_SMC911X is not set | 521 | # CONFIG_SMC911X is not set |
522 | # CONFIG_SMSC911X is not set | ||
513 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 523 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
514 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 524 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
515 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 525 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -592,6 +602,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
592 | CONFIG_SERIAL_CORE=y | 602 | CONFIG_SERIAL_CORE=y |
593 | CONFIG_SERIAL_CORE_CONSOLE=y | 603 | CONFIG_SERIAL_CORE_CONSOLE=y |
594 | CONFIG_UNIX98_PTYS=y | 604 | CONFIG_UNIX98_PTYS=y |
605 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
595 | CONFIG_LEGACY_PTYS=y | 606 | CONFIG_LEGACY_PTYS=y |
596 | CONFIG_LEGACY_PTY_COUNT=256 | 607 | CONFIG_LEGACY_PTY_COUNT=256 |
597 | # CONFIG_IPMI_HANDLER is not set | 608 | # CONFIG_IPMI_HANDLER is not set |
@@ -632,8 +643,8 @@ CONFIG_I2C_SH7760=y | |||
632 | # Miscellaneous I2C Chip support | 643 | # Miscellaneous I2C Chip support |
633 | # | 644 | # |
634 | # CONFIG_DS1682 is not set | 645 | # CONFIG_DS1682 is not set |
635 | # CONFIG_AT24 is not set | 646 | # CONFIG_EEPROM_AT24 is not set |
636 | # CONFIG_SENSORS_EEPROM is not set | 647 | # CONFIG_EEPROM_LEGACY is not set |
637 | # CONFIG_SENSORS_PCF8574 is not set | 648 | # CONFIG_SENSORS_PCF8574 is not set |
638 | # CONFIG_PCF8575 is not set | 649 | # CONFIG_PCF8575 is not set |
639 | # CONFIG_SENSORS_PCA9539 is not set | 650 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -651,11 +662,11 @@ CONFIG_I2C_DEBUG_CHIP=y | |||
651 | # CONFIG_THERMAL is not set | 662 | # CONFIG_THERMAL is not set |
652 | # CONFIG_THERMAL_HWMON is not set | 663 | # CONFIG_THERMAL_HWMON is not set |
653 | # CONFIG_WATCHDOG is not set | 664 | # CONFIG_WATCHDOG is not set |
665 | CONFIG_SSB_POSSIBLE=y | ||
654 | 666 | ||
655 | # | 667 | # |
656 | # Sonics Silicon Backplane | 668 | # Sonics Silicon Backplane |
657 | # | 669 | # |
658 | CONFIG_SSB_POSSIBLE=y | ||
659 | # CONFIG_SSB is not set | 670 | # CONFIG_SSB is not set |
660 | 671 | ||
661 | # | 672 | # |
@@ -664,9 +675,12 @@ CONFIG_SSB_POSSIBLE=y | |||
664 | # CONFIG_MFD_CORE is not set | 675 | # CONFIG_MFD_CORE is not set |
665 | # CONFIG_MFD_SM501 is not set | 676 | # CONFIG_MFD_SM501 is not set |
666 | # CONFIG_HTC_PASIC3 is not set | 677 | # CONFIG_HTC_PASIC3 is not set |
678 | # CONFIG_TWL4030_CORE is not set | ||
667 | # CONFIG_MFD_TMIO is not set | 679 | # CONFIG_MFD_TMIO is not set |
680 | # CONFIG_PMIC_DA903X is not set | ||
668 | # CONFIG_MFD_WM8400 is not set | 681 | # CONFIG_MFD_WM8400 is not set |
669 | # CONFIG_MFD_WM8350_I2C is not set | 682 | # CONFIG_MFD_WM8350_I2C is not set |
683 | # CONFIG_REGULATOR is not set | ||
670 | 684 | ||
671 | # | 685 | # |
672 | # Multimedia devices | 686 | # Multimedia devices |
@@ -693,15 +707,16 @@ CONFIG_FB=m | |||
693 | # CONFIG_FIRMWARE_EDID is not set | 707 | # CONFIG_FIRMWARE_EDID is not set |
694 | # CONFIG_FB_DDC is not set | 708 | # CONFIG_FB_DDC is not set |
695 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | 709 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set |
696 | CONFIG_FB_CFB_FILLRECT=m | 710 | # CONFIG_FB_CFB_FILLRECT is not set |
697 | CONFIG_FB_CFB_COPYAREA=m | 711 | # CONFIG_FB_CFB_COPYAREA is not set |
698 | CONFIG_FB_CFB_IMAGEBLIT=m | 712 | # CONFIG_FB_CFB_IMAGEBLIT is not set |
699 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 713 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
700 | # CONFIG_FB_SYS_FILLRECT is not set | 714 | CONFIG_FB_SYS_FILLRECT=m |
701 | # CONFIG_FB_SYS_COPYAREA is not set | 715 | CONFIG_FB_SYS_COPYAREA=m |
702 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 716 | CONFIG_FB_SYS_IMAGEBLIT=m |
703 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 717 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
704 | # CONFIG_FB_SYS_FOPS is not set | 718 | CONFIG_FB_SYS_FOPS=m |
719 | CONFIG_FB_DEFERRED_IO=y | ||
705 | # CONFIG_FB_SVGALIB is not set | 720 | # CONFIG_FB_SVGALIB is not set |
706 | # CONFIG_FB_MACMODES is not set | 721 | # CONFIG_FB_MACMODES is not set |
707 | # CONFIG_FB_BACKLIGHT is not set | 722 | # CONFIG_FB_BACKLIGHT is not set |
@@ -716,6 +731,7 @@ CONFIG_FB_SH_MOBILE_LCDC=m | |||
716 | # CONFIG_FB_SH7760 is not set | 731 | # CONFIG_FB_SH7760 is not set |
717 | # CONFIG_FB_VIRTUAL is not set | 732 | # CONFIG_FB_VIRTUAL is not set |
718 | # CONFIG_FB_METRONOME is not set | 733 | # CONFIG_FB_METRONOME is not set |
734 | # CONFIG_FB_MB862XX is not set | ||
719 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 735 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
720 | 736 | ||
721 | # | 737 | # |
@@ -737,6 +753,7 @@ CONFIG_SND_PCM=y | |||
737 | # CONFIG_SND_SEQUENCER is not set | 753 | # CONFIG_SND_SEQUENCER is not set |
738 | # CONFIG_SND_MIXER_OSS is not set | 754 | # CONFIG_SND_MIXER_OSS is not set |
739 | # CONFIG_SND_PCM_OSS is not set | 755 | # CONFIG_SND_PCM_OSS is not set |
756 | # CONFIG_SND_HRTIMER is not set | ||
740 | # CONFIG_SND_DYNAMIC_MINORS is not set | 757 | # CONFIG_SND_DYNAMIC_MINORS is not set |
741 | # CONFIG_SND_SUPPORT_OLD_API is not set | 758 | # CONFIG_SND_SUPPORT_OLD_API is not set |
742 | # CONFIG_SND_VERBOSE_PROCFS is not set | 759 | # CONFIG_SND_VERBOSE_PROCFS is not set |
@@ -753,6 +770,7 @@ CONFIG_SND_SOC=y | |||
753 | # | 770 | # |
754 | # SoC Audio support for SuperH | 771 | # SoC Audio support for SuperH |
755 | # | 772 | # |
773 | CONFIG_SND_SOC_I2C_AND_SPI=y | ||
756 | # CONFIG_SND_SOC_ALL_CODECS is not set | 774 | # CONFIG_SND_SOC_ALL_CODECS is not set |
757 | # CONFIG_SOUND_PRIME is not set | 775 | # CONFIG_SOUND_PRIME is not set |
758 | # CONFIG_HID_SUPPORT is not set | 776 | # CONFIG_HID_SUPPORT is not set |
@@ -823,10 +841,7 @@ CONFIG_TMPFS_POSIX_ACL=y | |||
823 | # CONFIG_HUGETLBFS is not set | 841 | # CONFIG_HUGETLBFS is not set |
824 | # CONFIG_HUGETLB_PAGE is not set | 842 | # CONFIG_HUGETLB_PAGE is not set |
825 | # CONFIG_CONFIGFS_FS is not set | 843 | # CONFIG_CONFIGFS_FS is not set |
826 | 844 | CONFIG_MISC_FILESYSTEMS=y | |
827 | # | ||
828 | # Miscellaneous filesystems | ||
829 | # | ||
830 | # CONFIG_ADFS_FS is not set | 845 | # CONFIG_ADFS_FS is not set |
831 | # CONFIG_AFFS_FS is not set | 846 | # CONFIG_AFFS_FS is not set |
832 | # CONFIG_HFS_FS is not set | 847 | # CONFIG_HFS_FS is not set |
@@ -950,6 +965,7 @@ CONFIG_DEBUG_INFO=y | |||
950 | # CONFIG_DEBUG_MEMORY_INIT is not set | 965 | # CONFIG_DEBUG_MEMORY_INIT is not set |
951 | # CONFIG_DEBUG_LIST is not set | 966 | # CONFIG_DEBUG_LIST is not set |
952 | # CONFIG_DEBUG_SG is not set | 967 | # CONFIG_DEBUG_SG is not set |
968 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
953 | # CONFIG_FRAME_POINTER is not set | 969 | # CONFIG_FRAME_POINTER is not set |
954 | # CONFIG_RCU_TORTURE_TEST is not set | 970 | # CONFIG_RCU_TORTURE_TEST is not set |
955 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 971 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -958,17 +974,25 @@ CONFIG_DEBUG_INFO=y | |||
958 | # CONFIG_FAULT_INJECTION is not set | 974 | # CONFIG_FAULT_INJECTION is not set |
959 | # CONFIG_LATENCYTOP is not set | 975 | # CONFIG_LATENCYTOP is not set |
960 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 976 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
961 | CONFIG_NOP_TRACER=y | 977 | CONFIG_HAVE_FUNCTION_TRACER=y |
962 | CONFIG_HAVE_FTRACE=y | 978 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
963 | # CONFIG_FTRACE is not set | 979 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
980 | |||
981 | # | ||
982 | # Tracers | ||
983 | # | ||
984 | # CONFIG_FUNCTION_TRACER is not set | ||
964 | # CONFIG_IRQSOFF_TRACER is not set | 985 | # CONFIG_IRQSOFF_TRACER is not set |
965 | # CONFIG_PREEMPT_TRACER is not set | 986 | # CONFIG_PREEMPT_TRACER is not set |
966 | # CONFIG_SCHED_TRACER is not set | 987 | # CONFIG_SCHED_TRACER is not set |
967 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 988 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
968 | # CONFIG_BOOT_TRACER is not set | 989 | # CONFIG_BOOT_TRACER is not set |
990 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
969 | # CONFIG_STACK_TRACER is not set | 991 | # CONFIG_STACK_TRACER is not set |
970 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 992 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
971 | # CONFIG_SAMPLES is not set | 993 | # CONFIG_SAMPLES is not set |
994 | CONFIG_HAVE_ARCH_KGDB=y | ||
995 | # CONFIG_KGDB is not set | ||
972 | # CONFIG_SH_STANDARD_BIOS is not set | 996 | # CONFIG_SH_STANDARD_BIOS is not set |
973 | CONFIG_EARLY_SCIF_CONSOLE=y | 997 | CONFIG_EARLY_SCIF_CONSOLE=y |
974 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 | 998 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 |
@@ -978,7 +1002,9 @@ CONFIG_DEBUG_STACKOVERFLOW=y | |||
978 | # CONFIG_DEBUG_STACK_USAGE is not set | 1002 | # CONFIG_DEBUG_STACK_USAGE is not set |
979 | # CONFIG_4KSTACKS is not set | 1003 | # CONFIG_4KSTACKS is not set |
980 | # CONFIG_IRQSTACKS is not set | 1004 | # CONFIG_IRQSTACKS is not set |
981 | # CONFIG_SH_KGDB is not set | 1005 | CONFIG_DUMP_CODE=y |
1006 | # CONFIG_SH_NO_BSS_INIT is not set | ||
1007 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
982 | 1008 | ||
983 | # | 1009 | # |
984 | # Security options | 1010 | # Security options |
@@ -994,7 +1020,11 @@ CONFIG_CRYPTO=y | |||
994 | # | 1020 | # |
995 | # CONFIG_CRYPTO_FIPS is not set | 1021 | # CONFIG_CRYPTO_FIPS is not set |
996 | CONFIG_CRYPTO_ALGAPI=y | 1022 | CONFIG_CRYPTO_ALGAPI=y |
1023 | CONFIG_CRYPTO_ALGAPI2=y | ||
1024 | CONFIG_CRYPTO_HASH=y | ||
1025 | CONFIG_CRYPTO_HASH2=y | ||
997 | # CONFIG_CRYPTO_MANAGER is not set | 1026 | # CONFIG_CRYPTO_MANAGER is not set |
1027 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
998 | # CONFIG_CRYPTO_GF128MUL is not set | 1028 | # CONFIG_CRYPTO_GF128MUL is not set |
999 | # CONFIG_CRYPTO_NULL is not set | 1029 | # CONFIG_CRYPTO_NULL is not set |
1000 | # CONFIG_CRYPTO_CRYPTD is not set | 1030 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1077,6 +1107,7 @@ CONFIG_CRYPTO_HW=y | |||
1077 | # Library routines | 1107 | # Library routines |
1078 | # | 1108 | # |
1079 | CONFIG_BITREVERSE=y | 1109 | CONFIG_BITREVERSE=y |
1110 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1080 | # CONFIG_CRC_CCITT is not set | 1111 | # CONFIG_CRC_CCITT is not set |
1081 | # CONFIG_CRC16 is not set | 1112 | # CONFIG_CRC16 is not set |
1082 | # CONFIG_CRC_T10DIF is not set | 1113 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/hp6xx_defconfig b/arch/sh/configs/hp6xx_defconfig index 1032b235f080..847a25106635 100644 --- a/arch/sh/configs/hp6xx_defconfig +++ b/arch/sh/configs/hp6xx_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:23:53 2008 | 4 | # Fri Jan 9 16:56:55 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,7 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | CONFIG_SYS_SUPPORTS_PM=y | 19 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
20 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 21 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
21 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
22 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -70,12 +71,10 @@ CONFIG_EVENTFD=y | |||
70 | CONFIG_SHMEM=y | 71 | CONFIG_SHMEM=y |
71 | CONFIG_AIO=y | 72 | CONFIG_AIO=y |
72 | CONFIG_VM_EVENT_COUNTERS=y | 73 | CONFIG_VM_EVENT_COUNTERS=y |
73 | CONFIG_PCI_QUIRKS=y | ||
74 | CONFIG_SLAB=y | 74 | CONFIG_SLAB=y |
75 | # CONFIG_SLUB is not set | 75 | # CONFIG_SLUB is not set |
76 | # CONFIG_SLOB is not set | 76 | # CONFIG_SLOB is not set |
77 | # CONFIG_PROFILING is not set | 77 | # CONFIG_PROFILING is not set |
78 | # CONFIG_MARKERS is not set | ||
79 | CONFIG_HAVE_OPROFILE=y | 78 | CONFIG_HAVE_OPROFILE=y |
80 | CONFIG_HAVE_IOREMAP_PROT=y | 79 | CONFIG_HAVE_IOREMAP_PROT=y |
81 | CONFIG_HAVE_KPROBES=y | 80 | CONFIG_HAVE_KPROBES=y |
@@ -85,13 +84,11 @@ CONFIG_HAVE_CLK=y | |||
85 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 84 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
86 | CONFIG_SLABINFO=y | 85 | CONFIG_SLABINFO=y |
87 | CONFIG_RT_MUTEXES=y | 86 | CONFIG_RT_MUTEXES=y |
88 | # CONFIG_TINY_SHMEM is not set | ||
89 | CONFIG_BASE_SMALL=0 | 87 | CONFIG_BASE_SMALL=0 |
90 | # CONFIG_MODULES is not set | 88 | # CONFIG_MODULES is not set |
91 | CONFIG_BLOCK=y | 89 | CONFIG_BLOCK=y |
92 | # CONFIG_LBD is not set | 90 | # CONFIG_LBD is not set |
93 | # CONFIG_BLK_DEV_IO_TRACE is not set | 91 | # CONFIG_BLK_DEV_IO_TRACE is not set |
94 | # CONFIG_LSF is not set | ||
95 | # CONFIG_BLK_DEV_BSG is not set | 92 | # CONFIG_BLK_DEV_BSG is not set |
96 | # CONFIG_BLK_DEV_INTEGRITY is not set | 93 | # CONFIG_BLK_DEV_INTEGRITY is not set |
97 | 94 | ||
@@ -108,6 +105,10 @@ CONFIG_DEFAULT_AS=y | |||
108 | # CONFIG_DEFAULT_NOOP is not set | 105 | # CONFIG_DEFAULT_NOOP is not set |
109 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 106 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
110 | CONFIG_CLASSIC_RCU=y | 107 | CONFIG_CLASSIC_RCU=y |
108 | # CONFIG_TREE_RCU is not set | ||
109 | # CONFIG_PREEMPT_RCU is not set | ||
110 | # CONFIG_TREE_RCU_TRACE is not set | ||
111 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
111 | CONFIG_FREEZER=y | 112 | CONFIG_FREEZER=y |
112 | 113 | ||
113 | # | 114 | # |
@@ -115,6 +116,7 @@ CONFIG_FREEZER=y | |||
115 | # | 116 | # |
116 | CONFIG_CPU_SH3=y | 117 | CONFIG_CPU_SH3=y |
117 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 118 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
119 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
118 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 120 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
119 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 121 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
120 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 122 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -178,7 +180,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
178 | CONFIG_SPARSEMEM_STATIC=y | 180 | CONFIG_SPARSEMEM_STATIC=y |
179 | CONFIG_PAGEFLAGS_EXTENDED=y | 181 | CONFIG_PAGEFLAGS_EXTENDED=y |
180 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 182 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
181 | # CONFIG_RESOURCES_64BIT is not set | ||
182 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 183 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
183 | CONFIG_ZONE_DMA_FLAG=0 | 184 | CONFIG_ZONE_DMA_FLAG=0 |
184 | CONFIG_NR_QUICK=2 | 185 | CONFIG_NR_QUICK=2 |
@@ -236,7 +237,6 @@ CONFIG_NR_ONCHIP_DMA_CHANNELS=4 | |||
236 | # | 237 | # |
237 | CONFIG_HD6446X_SERIES=y | 238 | CONFIG_HD6446X_SERIES=y |
238 | CONFIG_HD64461=y | 239 | CONFIG_HD64461=y |
239 | # CONFIG_HD64465 is not set | ||
240 | CONFIG_HD64461_IRQ=36 | 240 | CONFIG_HD64461_IRQ=36 |
241 | CONFIG_HD64461_IOBASE=0xb0000000 | 241 | CONFIG_HD64461_IOBASE=0xb0000000 |
242 | CONFIG_HD64461_ENABLER=y | 242 | CONFIG_HD64461_ENABLER=y |
@@ -275,7 +275,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000 | |||
275 | # | 275 | # |
276 | # Bus options | 276 | # Bus options |
277 | # | 277 | # |
278 | CONFIG_ISA=y | ||
279 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 278 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
280 | CONFIG_PCCARD=y | 279 | CONFIG_PCCARD=y |
281 | # CONFIG_PCMCIA_DEBUG is not set | 280 | # CONFIG_PCMCIA_DEBUG is not set |
@@ -286,9 +285,6 @@ CONFIG_PCMCIA_IOCTL=y | |||
286 | # | 285 | # |
287 | # PC-card bridges | 286 | # PC-card bridges |
288 | # | 287 | # |
289 | # CONFIG_I82365 is not set | ||
290 | # CONFIG_TCIC is not set | ||
291 | CONFIG_PCMCIA_PROBE=y | ||
292 | 288 | ||
293 | # | 289 | # |
294 | # Executable file formats | 290 | # Executable file formats |
@@ -301,13 +297,13 @@ CONFIG_BINFMT_ELF=y | |||
301 | # | 297 | # |
302 | # Power management options (EXPERIMENTAL) | 298 | # Power management options (EXPERIMENTAL) |
303 | # | 299 | # |
304 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
305 | CONFIG_PM=y | 300 | CONFIG_PM=y |
306 | # CONFIG_PM_DEBUG is not set | 301 | # CONFIG_PM_DEBUG is not set |
307 | CONFIG_PM_SLEEP=y | 302 | CONFIG_PM_SLEEP=y |
308 | CONFIG_SUSPEND=y | 303 | CONFIG_SUSPEND=y |
309 | CONFIG_SUSPEND_FREEZER=y | 304 | CONFIG_SUSPEND_FREEZER=y |
310 | CONFIG_APM_EMULATION=y | 305 | CONFIG_APM_EMULATION=y |
306 | # CONFIG_CPU_IDLE is not set | ||
311 | # CONFIG_NET is not set | 307 | # CONFIG_NET is not set |
312 | 308 | ||
313 | # | 309 | # |
@@ -326,7 +322,6 @@ CONFIG_EXTRA_FIRMWARE="" | |||
326 | # CONFIG_SYS_HYPERVISOR is not set | 322 | # CONFIG_SYS_HYPERVISOR is not set |
327 | # CONFIG_MTD is not set | 323 | # CONFIG_MTD is not set |
328 | # CONFIG_PARPORT is not set | 324 | # CONFIG_PARPORT is not set |
329 | # CONFIG_PNP is not set | ||
330 | CONFIG_BLK_DEV=y | 325 | CONFIG_BLK_DEV=y |
331 | # CONFIG_BLK_DEV_COW_COMMON is not set | 326 | # CONFIG_BLK_DEV_COW_COMMON is not set |
332 | # CONFIG_BLK_DEV_LOOP is not set | 327 | # CONFIG_BLK_DEV_LOOP is not set |
@@ -336,6 +331,7 @@ CONFIG_BLK_DEV=y | |||
336 | CONFIG_MISC_DEVICES=y | 331 | CONFIG_MISC_DEVICES=y |
337 | # CONFIG_EEPROM_93CX6 is not set | 332 | # CONFIG_EEPROM_93CX6 is not set |
338 | # CONFIG_ENCLOSURE_SERVICES is not set | 333 | # CONFIG_ENCLOSURE_SERVICES is not set |
334 | # CONFIG_C2PORT is not set | ||
339 | CONFIG_HAVE_IDE=y | 335 | CONFIG_HAVE_IDE=y |
340 | # CONFIG_IDE is not set | 336 | # CONFIG_IDE is not set |
341 | 337 | ||
@@ -375,18 +371,7 @@ CONFIG_BLK_DEV_SD=y | |||
375 | # CONFIG_SCSI_SAS_LIBSAS is not set | 371 | # CONFIG_SCSI_SAS_LIBSAS is not set |
376 | # CONFIG_SCSI_SRP_ATTRS is not set | 372 | # CONFIG_SCSI_SRP_ATTRS is not set |
377 | CONFIG_SCSI_LOWLEVEL=y | 373 | CONFIG_SCSI_LOWLEVEL=y |
378 | # CONFIG_SCSI_AHA152X is not set | 374 | # CONFIG_LIBFC is not set |
379 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
380 | # CONFIG_SCSI_IN2000 is not set | ||
381 | # CONFIG_SCSI_DTC3280 is not set | ||
382 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
383 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | ||
384 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | ||
385 | # CONFIG_SCSI_NCR53C406A is not set | ||
386 | # CONFIG_SCSI_PAS16 is not set | ||
387 | # CONFIG_SCSI_QLOGIC_FAS is not set | ||
388 | # CONFIG_SCSI_SYM53C416 is not set | ||
389 | # CONFIG_SCSI_T128 is not set | ||
390 | # CONFIG_SCSI_DEBUG is not set | 375 | # CONFIG_SCSI_DEBUG is not set |
391 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set | 376 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
392 | # CONFIG_SCSI_DH is not set | 377 | # CONFIG_SCSI_DH is not set |
@@ -395,10 +380,7 @@ CONFIG_ATA=y | |||
395 | CONFIG_SATA_PMP=y | 380 | CONFIG_SATA_PMP=y |
396 | CONFIG_ATA_SFF=y | 381 | CONFIG_ATA_SFF=y |
397 | # CONFIG_SATA_MV is not set | 382 | # CONFIG_SATA_MV is not set |
398 | # CONFIG_PATA_LEGACY is not set | ||
399 | # CONFIG_PATA_PCMCIA is not set | 383 | # CONFIG_PATA_PCMCIA is not set |
400 | # CONFIG_PATA_QDI is not set | ||
401 | # CONFIG_PATA_WINBOND_VLB is not set | ||
402 | CONFIG_PATA_PLATFORM=y | 384 | CONFIG_PATA_PLATFORM=y |
403 | # CONFIG_MD is not set | 385 | # CONFIG_MD is not set |
404 | # CONFIG_PHONE is not set | 386 | # CONFIG_PHONE is not set |
@@ -438,11 +420,11 @@ CONFIG_INPUT_TOUCHSCREEN=y | |||
438 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | 420 | # CONFIG_TOUCHSCREEN_FUJITSU is not set |
439 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 421 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
440 | # CONFIG_TOUCHSCREEN_ELO is not set | 422 | # CONFIG_TOUCHSCREEN_ELO is not set |
423 | # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set | ||
441 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | 424 | # CONFIG_TOUCHSCREEN_MTOUCH is not set |
442 | # CONFIG_TOUCHSCREEN_INEXIO is not set | 425 | # CONFIG_TOUCHSCREEN_INEXIO is not set |
443 | # CONFIG_TOUCHSCREEN_MK712 is not set | 426 | # CONFIG_TOUCHSCREEN_MK712 is not set |
444 | CONFIG_TOUCHSCREEN_HP600=y | 427 | CONFIG_TOUCHSCREEN_HP600=y |
445 | # CONFIG_TOUCHSCREEN_HTCPEN is not set | ||
446 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set | 428 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set |
447 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set | 429 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set |
448 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | 430 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set |
@@ -484,11 +466,11 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
484 | CONFIG_SERIAL_CORE=y | 466 | CONFIG_SERIAL_CORE=y |
485 | CONFIG_SERIAL_CORE_CONSOLE=y | 467 | CONFIG_SERIAL_CORE_CONSOLE=y |
486 | CONFIG_UNIX98_PTYS=y | 468 | CONFIG_UNIX98_PTYS=y |
469 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
487 | CONFIG_LEGACY_PTYS=y | 470 | CONFIG_LEGACY_PTYS=y |
488 | CONFIG_LEGACY_PTY_COUNT=64 | 471 | CONFIG_LEGACY_PTY_COUNT=64 |
489 | # CONFIG_IPMI_HANDLER is not set | 472 | # CONFIG_IPMI_HANDLER is not set |
490 | CONFIG_HW_RANDOM=y | 473 | CONFIG_HW_RANDOM=y |
491 | # CONFIG_DTLK is not set | ||
492 | # CONFIG_R3964 is not set | 474 | # CONFIG_R3964 is not set |
493 | 475 | ||
494 | # | 476 | # |
@@ -499,7 +481,6 @@ CONFIG_HW_RANDOM=y | |||
499 | # CONFIG_CARDMAN_4040 is not set | 481 | # CONFIG_CARDMAN_4040 is not set |
500 | # CONFIG_RAW_DRIVER is not set | 482 | # CONFIG_RAW_DRIVER is not set |
501 | # CONFIG_TCG_TPM is not set | 483 | # CONFIG_TCG_TPM is not set |
502 | CONFIG_DEVPORT=y | ||
503 | # CONFIG_I2C is not set | 484 | # CONFIG_I2C is not set |
504 | # CONFIG_SPI is not set | 485 | # CONFIG_SPI is not set |
505 | # CONFIG_W1 is not set | 486 | # CONFIG_W1 is not set |
@@ -508,11 +489,11 @@ CONFIG_DEVPORT=y | |||
508 | # CONFIG_THERMAL is not set | 489 | # CONFIG_THERMAL is not set |
509 | # CONFIG_THERMAL_HWMON is not set | 490 | # CONFIG_THERMAL_HWMON is not set |
510 | # CONFIG_WATCHDOG is not set | 491 | # CONFIG_WATCHDOG is not set |
492 | CONFIG_SSB_POSSIBLE=y | ||
511 | 493 | ||
512 | # | 494 | # |
513 | # Sonics Silicon Backplane | 495 | # Sonics Silicon Backplane |
514 | # | 496 | # |
515 | CONFIG_SSB_POSSIBLE=y | ||
516 | # CONFIG_SSB is not set | 497 | # CONFIG_SSB is not set |
517 | 498 | ||
518 | # | 499 | # |
@@ -522,7 +503,7 @@ CONFIG_SSB_POSSIBLE=y | |||
522 | # CONFIG_MFD_SM501 is not set | 503 | # CONFIG_MFD_SM501 is not set |
523 | # CONFIG_HTC_PASIC3 is not set | 504 | # CONFIG_HTC_PASIC3 is not set |
524 | # CONFIG_MFD_TMIO is not set | 505 | # CONFIG_MFD_TMIO is not set |
525 | # CONFIG_MFD_WM8400 is not set | 506 | # CONFIG_REGULATOR is not set |
526 | 507 | ||
527 | # | 508 | # |
528 | # Multimedia devices | 509 | # Multimedia devices |
@@ -552,11 +533,12 @@ CONFIG_FB_CFB_FILLRECT=y | |||
552 | CONFIG_FB_CFB_COPYAREA=y | 533 | CONFIG_FB_CFB_COPYAREA=y |
553 | CONFIG_FB_CFB_IMAGEBLIT=y | 534 | CONFIG_FB_CFB_IMAGEBLIT=y |
554 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 535 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
555 | # CONFIG_FB_SYS_FILLRECT is not set | 536 | CONFIG_FB_SYS_FILLRECT=y |
556 | # CONFIG_FB_SYS_COPYAREA is not set | 537 | CONFIG_FB_SYS_COPYAREA=y |
557 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 538 | CONFIG_FB_SYS_IMAGEBLIT=y |
558 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 539 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
559 | # CONFIG_FB_SYS_FOPS is not set | 540 | CONFIG_FB_SYS_FOPS=y |
541 | CONFIG_FB_DEFERRED_IO=y | ||
560 | # CONFIG_FB_SVGALIB is not set | 542 | # CONFIG_FB_SVGALIB is not set |
561 | # CONFIG_FB_MACMODES is not set | 543 | # CONFIG_FB_MACMODES is not set |
562 | # CONFIG_FB_BACKLIGHT is not set | 544 | # CONFIG_FB_BACKLIGHT is not set |
@@ -571,6 +553,7 @@ CONFIG_FB_HIT=y | |||
571 | CONFIG_FB_SH_MOBILE_LCDC=y | 553 | CONFIG_FB_SH_MOBILE_LCDC=y |
572 | # CONFIG_FB_VIRTUAL is not set | 554 | # CONFIG_FB_VIRTUAL is not set |
573 | # CONFIG_FB_METRONOME is not set | 555 | # CONFIG_FB_METRONOME is not set |
556 | # CONFIG_FB_MB862XX is not set | ||
574 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | 557 | CONFIG_BACKLIGHT_LCD_SUPPORT=y |
575 | CONFIG_LCD_CLASS_DEVICE=y | 558 | CONFIG_LCD_CLASS_DEVICE=y |
576 | # CONFIG_LCD_ILI9320 is not set | 559 | # CONFIG_LCD_ILI9320 is not set |
@@ -587,7 +570,6 @@ CONFIG_BACKLIGHT_HP680=y | |||
587 | # | 570 | # |
588 | # Console display driver support | 571 | # Console display driver support |
589 | # | 572 | # |
590 | # CONFIG_MDA_CONSOLE is not set | ||
591 | CONFIG_DUMMY_CONSOLE=y | 573 | CONFIG_DUMMY_CONSOLE=y |
592 | CONFIG_FRAMEBUFFER_CONSOLE=y | 574 | CONFIG_FRAMEBUFFER_CONSOLE=y |
593 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | 575 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set |
@@ -701,10 +683,7 @@ CONFIG_SYSFS=y | |||
701 | # CONFIG_HUGETLBFS is not set | 683 | # CONFIG_HUGETLBFS is not set |
702 | # CONFIG_HUGETLB_PAGE is not set | 684 | # CONFIG_HUGETLB_PAGE is not set |
703 | # CONFIG_CONFIGFS_FS is not set | 685 | # CONFIG_CONFIGFS_FS is not set |
704 | 686 | CONFIG_MISC_FILESYSTEMS=y | |
705 | # | ||
706 | # Miscellaneous filesystems | ||
707 | # | ||
708 | # CONFIG_ADFS_FS is not set | 687 | # CONFIG_ADFS_FS is not set |
709 | # CONFIG_AFFS_FS is not set | 688 | # CONFIG_AFFS_FS is not set |
710 | # CONFIG_HFS_FS is not set | 689 | # CONFIG_HFS_FS is not set |
@@ -785,13 +764,19 @@ CONFIG_FRAME_WARN=1024 | |||
785 | # CONFIG_DEBUG_MEMORY_INIT is not set | 764 | # CONFIG_DEBUG_MEMORY_INIT is not set |
786 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 765 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
787 | # CONFIG_LATENCYTOP is not set | 766 | # CONFIG_LATENCYTOP is not set |
788 | CONFIG_NOP_TRACER=y | 767 | CONFIG_HAVE_FUNCTION_TRACER=y |
789 | CONFIG_HAVE_FTRACE=y | 768 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
769 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
770 | |||
771 | # | ||
772 | # Tracers | ||
773 | # | ||
790 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 774 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
791 | # CONFIG_SAMPLES is not set | 775 | # CONFIG_SAMPLES is not set |
776 | CONFIG_HAVE_ARCH_KGDB=y | ||
792 | # CONFIG_SH_STANDARD_BIOS is not set | 777 | # CONFIG_SH_STANDARD_BIOS is not set |
793 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 778 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
794 | # CONFIG_SH_KGDB is not set | 779 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
795 | 780 | ||
796 | # | 781 | # |
797 | # Security options | 782 | # Security options |
@@ -807,11 +792,15 @@ CONFIG_CRYPTO=y | |||
807 | # | 792 | # |
808 | # CONFIG_CRYPTO_FIPS is not set | 793 | # CONFIG_CRYPTO_FIPS is not set |
809 | CONFIG_CRYPTO_ALGAPI=y | 794 | CONFIG_CRYPTO_ALGAPI=y |
810 | CONFIG_CRYPTO_AEAD=y | 795 | CONFIG_CRYPTO_ALGAPI2=y |
796 | CONFIG_CRYPTO_AEAD2=y | ||
811 | CONFIG_CRYPTO_BLKCIPHER=y | 797 | CONFIG_CRYPTO_BLKCIPHER=y |
798 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
812 | CONFIG_CRYPTO_HASH=y | 799 | CONFIG_CRYPTO_HASH=y |
813 | CONFIG_CRYPTO_RNG=y | 800 | CONFIG_CRYPTO_HASH2=y |
801 | CONFIG_CRYPTO_RNG2=y | ||
814 | CONFIG_CRYPTO_MANAGER=y | 802 | CONFIG_CRYPTO_MANAGER=y |
803 | CONFIG_CRYPTO_MANAGER2=y | ||
815 | # CONFIG_CRYPTO_GF128MUL is not set | 804 | # CONFIG_CRYPTO_GF128MUL is not set |
816 | # CONFIG_CRYPTO_NULL is not set | 805 | # CONFIG_CRYPTO_NULL is not set |
817 | # CONFIG_CRYPTO_CRYPTD is not set | 806 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -893,6 +882,7 @@ CONFIG_CRYPTO_MD5=y | |||
893 | # Library routines | 882 | # Library routines |
894 | # | 883 | # |
895 | CONFIG_BITREVERSE=y | 884 | CONFIG_BITREVERSE=y |
885 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
896 | # CONFIG_CRC_CCITT is not set | 886 | # CONFIG_CRC_CCITT is not set |
897 | CONFIG_CRC16=y | 887 | CONFIG_CRC16=y |
898 | CONFIG_CRC_T10DIF=y | 888 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/landisk_defconfig b/arch/sh/configs/landisk_defconfig index b82dfb4da3aa..d3bbbb037716 100644 --- a/arch/sh/configs/landisk_defconfig +++ b/arch/sh/configs/landisk_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:25:51 2008 | 4 | # Fri Jan 9 16:58:46 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -76,7 +78,6 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_SLUB is not set | 78 | # CONFIG_SLUB is not set |
77 | # CONFIG_SLOB is not set | 79 | # CONFIG_SLOB is not set |
78 | # CONFIG_PROFILING is not set | 80 | # CONFIG_PROFILING is not set |
79 | # CONFIG_MARKERS is not set | ||
80 | CONFIG_HAVE_OPROFILE=y | 81 | CONFIG_HAVE_OPROFILE=y |
81 | # CONFIG_KPROBES is not set | 82 | # CONFIG_KPROBES is not set |
82 | CONFIG_HAVE_IOREMAP_PROT=y | 83 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -87,7 +88,6 @@ CONFIG_HAVE_CLK=y | |||
87 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 88 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
88 | CONFIG_SLABINFO=y | 89 | CONFIG_SLABINFO=y |
89 | CONFIG_RT_MUTEXES=y | 90 | CONFIG_RT_MUTEXES=y |
90 | # CONFIG_TINY_SHMEM is not set | ||
91 | CONFIG_BASE_SMALL=0 | 91 | CONFIG_BASE_SMALL=0 |
92 | CONFIG_MODULES=y | 92 | CONFIG_MODULES=y |
93 | # CONFIG_MODULE_FORCE_LOAD is not set | 93 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -95,11 +95,9 @@ CONFIG_MODULE_UNLOAD=y | |||
95 | CONFIG_MODULE_FORCE_UNLOAD=y | 95 | CONFIG_MODULE_FORCE_UNLOAD=y |
96 | # CONFIG_MODVERSIONS is not set | 96 | # CONFIG_MODVERSIONS is not set |
97 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 97 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
98 | CONFIG_KMOD=y | ||
99 | CONFIG_BLOCK=y | 98 | CONFIG_BLOCK=y |
100 | # CONFIG_LBD is not set | 99 | # CONFIG_LBD is not set |
101 | # CONFIG_BLK_DEV_IO_TRACE is not set | 100 | # CONFIG_BLK_DEV_IO_TRACE is not set |
102 | # CONFIG_LSF is not set | ||
103 | # CONFIG_BLK_DEV_BSG is not set | 101 | # CONFIG_BLK_DEV_BSG is not set |
104 | # CONFIG_BLK_DEV_INTEGRITY is not set | 102 | # CONFIG_BLK_DEV_INTEGRITY is not set |
105 | 103 | ||
@@ -116,6 +114,10 @@ CONFIG_DEFAULT_AS=y | |||
116 | # CONFIG_DEFAULT_NOOP is not set | 114 | # CONFIG_DEFAULT_NOOP is not set |
117 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 115 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
118 | CONFIG_CLASSIC_RCU=y | 116 | CONFIG_CLASSIC_RCU=y |
117 | # CONFIG_TREE_RCU is not set | ||
118 | # CONFIG_PREEMPT_RCU is not set | ||
119 | # CONFIG_TREE_RCU_TRACE is not set | ||
120 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
119 | # CONFIG_FREEZER is not set | 121 | # CONFIG_FREEZER is not set |
120 | 122 | ||
121 | # | 123 | # |
@@ -123,6 +125,7 @@ CONFIG_CLASSIC_RCU=y | |||
123 | # | 125 | # |
124 | CONFIG_CPU_SH4=y | 126 | CONFIG_CPU_SH4=y |
125 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 127 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
128 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
126 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 129 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
127 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
128 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 131 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -186,7 +189,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
186 | CONFIG_SPARSEMEM_STATIC=y | 189 | CONFIG_SPARSEMEM_STATIC=y |
187 | CONFIG_PAGEFLAGS_EXTENDED=y | 190 | CONFIG_PAGEFLAGS_EXTENDED=y |
188 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 191 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
189 | # CONFIG_RESOURCES_64BIT is not set | ||
190 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 192 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
191 | CONFIG_ZONE_DMA_FLAG=0 | 193 | CONFIG_ZONE_DMA_FLAG=0 |
192 | CONFIG_NR_QUICK=2 | 194 | CONFIG_NR_QUICK=2 |
@@ -285,6 +287,7 @@ CONFIG_PCI=y | |||
285 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 287 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
286 | CONFIG_PCI_AUTO=y | 288 | CONFIG_PCI_AUTO=y |
287 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 289 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
290 | # CONFIG_PCIEPORTBUS is not set | ||
288 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 291 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
289 | CONFIG_PCI_LEGACY=y | 292 | CONFIG_PCI_LEGACY=y |
290 | CONFIG_PCCARD=y | 293 | CONFIG_PCCARD=y |
@@ -315,11 +318,18 @@ CONFIG_BINFMT_ELF=y | |||
315 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 318 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
316 | # CONFIG_HAVE_AOUT is not set | 319 | # CONFIG_HAVE_AOUT is not set |
317 | # CONFIG_BINFMT_MISC is not set | 320 | # CONFIG_BINFMT_MISC is not set |
321 | |||
322 | # | ||
323 | # Power management options (EXPERIMENTAL) | ||
324 | # | ||
325 | # CONFIG_PM is not set | ||
326 | # CONFIG_CPU_IDLE is not set | ||
318 | CONFIG_NET=y | 327 | CONFIG_NET=y |
319 | 328 | ||
320 | # | 329 | # |
321 | # Networking options | 330 | # Networking options |
322 | # | 331 | # |
332 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
323 | CONFIG_PACKET=y | 333 | CONFIG_PACKET=y |
324 | # CONFIG_PACKET_MMAP is not set | 334 | # CONFIG_PACKET_MMAP is not set |
325 | CONFIG_UNIX=y | 335 | CONFIG_UNIX=y |
@@ -401,6 +411,7 @@ CONFIG_ATALK=m | |||
401 | # CONFIG_ECONET is not set | 411 | # CONFIG_ECONET is not set |
402 | # CONFIG_WAN_ROUTER is not set | 412 | # CONFIG_WAN_ROUTER is not set |
403 | # CONFIG_NET_SCHED is not set | 413 | # CONFIG_NET_SCHED is not set |
414 | # CONFIG_DCB is not set | ||
404 | 415 | ||
405 | # | 416 | # |
406 | # Network testing | 417 | # Network testing |
@@ -416,8 +427,8 @@ CONFIG_WIRELESS=y | |||
416 | # CONFIG_CFG80211 is not set | 427 | # CONFIG_CFG80211 is not set |
417 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 428 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
418 | # CONFIG_WIRELESS_EXT is not set | 429 | # CONFIG_WIRELESS_EXT is not set |
430 | # CONFIG_LIB80211 is not set | ||
419 | # CONFIG_MAC80211 is not set | 431 | # CONFIG_MAC80211 is not set |
420 | # CONFIG_IEEE80211 is not set | ||
421 | # CONFIG_RFKILL is not set | 432 | # CONFIG_RFKILL is not set |
422 | # CONFIG_NET_9P is not set | 433 | # CONFIG_NET_9P is not set |
423 | 434 | ||
@@ -462,6 +473,7 @@ CONFIG_MISC_DEVICES=y | |||
462 | # CONFIG_TIFM_CORE is not set | 473 | # CONFIG_TIFM_CORE is not set |
463 | # CONFIG_ENCLOSURE_SERVICES is not set | 474 | # CONFIG_ENCLOSURE_SERVICES is not set |
464 | # CONFIG_HP_ILO is not set | 475 | # CONFIG_HP_ILO is not set |
476 | # CONFIG_C2PORT is not set | ||
465 | CONFIG_HAVE_IDE=y | 477 | CONFIG_HAVE_IDE=y |
466 | CONFIG_IDE=y | 478 | CONFIG_IDE=y |
467 | 479 | ||
@@ -478,7 +490,6 @@ CONFIG_IDE_GD_ATA=y | |||
478 | CONFIG_BLK_DEV_IDECD=y | 490 | CONFIG_BLK_DEV_IDECD=y |
479 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | 491 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y |
480 | # CONFIG_BLK_DEV_IDETAPE is not set | 492 | # CONFIG_BLK_DEV_IDETAPE is not set |
481 | CONFIG_BLK_DEV_IDESCSI=y | ||
482 | # CONFIG_IDE_TASK_IOCTL is not set | 493 | # CONFIG_IDE_TASK_IOCTL is not set |
483 | CONFIG_IDE_PROC_FS=y | 494 | CONFIG_IDE_PROC_FS=y |
484 | 495 | ||
@@ -508,6 +519,7 @@ CONFIG_BLK_DEV_AEC62XX=y | |||
508 | # CONFIG_BLK_DEV_JMICRON is not set | 519 | # CONFIG_BLK_DEV_JMICRON is not set |
509 | # CONFIG_BLK_DEV_SC1200 is not set | 520 | # CONFIG_BLK_DEV_SC1200 is not set |
510 | # CONFIG_BLK_DEV_PIIX is not set | 521 | # CONFIG_BLK_DEV_PIIX is not set |
522 | # CONFIG_BLK_DEV_IT8172 is not set | ||
511 | # CONFIG_BLK_DEV_IT8213 is not set | 523 | # CONFIG_BLK_DEV_IT8213 is not set |
512 | # CONFIG_BLK_DEV_IT821X is not set | 524 | # CONFIG_BLK_DEV_IT821X is not set |
513 | # CONFIG_BLK_DEV_NS87415 is not set | 525 | # CONFIG_BLK_DEV_NS87415 is not set |
@@ -560,6 +572,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
560 | # CONFIG_SCSI_SRP_ATTRS is not set | 572 | # CONFIG_SCSI_SRP_ATTRS is not set |
561 | CONFIG_SCSI_LOWLEVEL=y | 573 | CONFIG_SCSI_LOWLEVEL=y |
562 | # CONFIG_ISCSI_TCP is not set | 574 | # CONFIG_ISCSI_TCP is not set |
575 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
563 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 576 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
564 | # CONFIG_SCSI_3W_9XXX is not set | 577 | # CONFIG_SCSI_3W_9XXX is not set |
565 | # CONFIG_SCSI_ACARD is not set | 578 | # CONFIG_SCSI_ACARD is not set |
@@ -573,6 +586,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
573 | # CONFIG_MEGARAID_LEGACY is not set | 586 | # CONFIG_MEGARAID_LEGACY is not set |
574 | # CONFIG_MEGARAID_SAS is not set | 587 | # CONFIG_MEGARAID_SAS is not set |
575 | # CONFIG_SCSI_HPTIOP is not set | 588 | # CONFIG_SCSI_HPTIOP is not set |
589 | # CONFIG_LIBFC is not set | ||
590 | # CONFIG_FCOE is not set | ||
576 | # CONFIG_SCSI_DMX3191D is not set | 591 | # CONFIG_SCSI_DMX3191D is not set |
577 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 592 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
578 | # CONFIG_SCSI_IPS is not set | 593 | # CONFIG_SCSI_IPS is not set |
@@ -634,6 +649,7 @@ CONFIG_MII=y | |||
634 | # CONFIG_NET_VENDOR_3COM is not set | 649 | # CONFIG_NET_VENDOR_3COM is not set |
635 | # CONFIG_SMC91X is not set | 650 | # CONFIG_SMC91X is not set |
636 | # CONFIG_SMC911X is not set | 651 | # CONFIG_SMC911X is not set |
652 | # CONFIG_SMSC911X is not set | ||
637 | # CONFIG_NET_TULIP is not set | 653 | # CONFIG_NET_TULIP is not set |
638 | # CONFIG_HP100 is not set | 654 | # CONFIG_HP100 is not set |
639 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 655 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -649,7 +665,6 @@ CONFIG_NET_PCI=y | |||
649 | # CONFIG_ADAPTEC_STARFIRE is not set | 665 | # CONFIG_ADAPTEC_STARFIRE is not set |
650 | # CONFIG_B44 is not set | 666 | # CONFIG_B44 is not set |
651 | # CONFIG_FORCEDETH is not set | 667 | # CONFIG_FORCEDETH is not set |
652 | # CONFIG_EEPRO100 is not set | ||
653 | # CONFIG_E100 is not set | 668 | # CONFIG_E100 is not set |
654 | # CONFIG_FEALNX is not set | 669 | # CONFIG_FEALNX is not set |
655 | # CONFIG_NATSEMI is not set | 670 | # CONFIG_NATSEMI is not set |
@@ -659,6 +674,7 @@ CONFIG_8139CP=y | |||
659 | # CONFIG_R6040 is not set | 674 | # CONFIG_R6040 is not set |
660 | # CONFIG_SIS900 is not set | 675 | # CONFIG_SIS900 is not set |
661 | # CONFIG_EPIC100 is not set | 676 | # CONFIG_EPIC100 is not set |
677 | # CONFIG_SMSC9420 is not set | ||
662 | # CONFIG_SUNDANCE is not set | 678 | # CONFIG_SUNDANCE is not set |
663 | # CONFIG_TLAN is not set | 679 | # CONFIG_TLAN is not set |
664 | # CONFIG_VIA_RHINE is not set | 680 | # CONFIG_VIA_RHINE is not set |
@@ -687,6 +703,7 @@ CONFIG_NETDEV_1000=y | |||
687 | # CONFIG_JME is not set | 703 | # CONFIG_JME is not set |
688 | CONFIG_NETDEV_10000=y | 704 | CONFIG_NETDEV_10000=y |
689 | # CONFIG_CHELSIO_T1 is not set | 705 | # CONFIG_CHELSIO_T1 is not set |
706 | CONFIG_CHELSIO_T3_DEPENDS=y | ||
690 | # CONFIG_CHELSIO_T3 is not set | 707 | # CONFIG_CHELSIO_T3 is not set |
691 | # CONFIG_ENIC is not set | 708 | # CONFIG_ENIC is not set |
692 | # CONFIG_IXGBE is not set | 709 | # CONFIG_IXGBE is not set |
@@ -695,6 +712,7 @@ CONFIG_NETDEV_10000=y | |||
695 | # CONFIG_MYRI10GE is not set | 712 | # CONFIG_MYRI10GE is not set |
696 | # CONFIG_NETXEN_NIC is not set | 713 | # CONFIG_NETXEN_NIC is not set |
697 | # CONFIG_NIU is not set | 714 | # CONFIG_NIU is not set |
715 | # CONFIG_MLX4_EN is not set | ||
698 | # CONFIG_MLX4_CORE is not set | 716 | # CONFIG_MLX4_CORE is not set |
699 | # CONFIG_TEHUTI is not set | 717 | # CONFIG_TEHUTI is not set |
700 | # CONFIG_BNX2X is not set | 718 | # CONFIG_BNX2X is not set |
@@ -791,6 +809,7 @@ CONFIG_SERIAL_CORE=y | |||
791 | CONFIG_SERIAL_CORE_CONSOLE=y | 809 | CONFIG_SERIAL_CORE_CONSOLE=y |
792 | # CONFIG_SERIAL_JSM is not set | 810 | # CONFIG_SERIAL_JSM is not set |
793 | CONFIG_UNIX98_PTYS=y | 811 | CONFIG_UNIX98_PTYS=y |
812 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
794 | CONFIG_LEGACY_PTYS=y | 813 | CONFIG_LEGACY_PTYS=y |
795 | CONFIG_LEGACY_PTY_COUNT=256 | 814 | CONFIG_LEGACY_PTY_COUNT=256 |
796 | # CONFIG_IPMI_HANDLER is not set | 815 | # CONFIG_IPMI_HANDLER is not set |
@@ -832,11 +851,11 @@ CONFIG_HWMON=y | |||
832 | # CONFIG_THERMAL is not set | 851 | # CONFIG_THERMAL is not set |
833 | # CONFIG_THERMAL_HWMON is not set | 852 | # CONFIG_THERMAL_HWMON is not set |
834 | # CONFIG_WATCHDOG is not set | 853 | # CONFIG_WATCHDOG is not set |
854 | CONFIG_SSB_POSSIBLE=y | ||
835 | 855 | ||
836 | # | 856 | # |
837 | # Sonics Silicon Backplane | 857 | # Sonics Silicon Backplane |
838 | # | 858 | # |
839 | CONFIG_SSB_POSSIBLE=y | ||
840 | # CONFIG_SSB is not set | 859 | # CONFIG_SSB is not set |
841 | 860 | ||
842 | # | 861 | # |
@@ -846,7 +865,7 @@ CONFIG_SSB_POSSIBLE=y | |||
846 | # CONFIG_MFD_SM501 is not set | 865 | # CONFIG_MFD_SM501 is not set |
847 | # CONFIG_HTC_PASIC3 is not set | 866 | # CONFIG_HTC_PASIC3 is not set |
848 | # CONFIG_MFD_TMIO is not set | 867 | # CONFIG_MFD_TMIO is not set |
849 | # CONFIG_MFD_WM8400 is not set | 868 | # CONFIG_REGULATOR is not set |
850 | 869 | ||
851 | # | 870 | # |
852 | # Multimedia devices | 871 | # Multimedia devices |
@@ -952,11 +971,9 @@ CONFIG_HID_COMPAT=y | |||
952 | CONFIG_HID_A4TECH=m | 971 | CONFIG_HID_A4TECH=m |
953 | CONFIG_HID_APPLE=m | 972 | CONFIG_HID_APPLE=m |
954 | CONFIG_HID_BELKIN=m | 973 | CONFIG_HID_BELKIN=m |
955 | CONFIG_HID_BRIGHT=m | ||
956 | CONFIG_HID_CHERRY=m | 974 | CONFIG_HID_CHERRY=m |
957 | CONFIG_HID_CHICONY=m | 975 | CONFIG_HID_CHICONY=m |
958 | CONFIG_HID_CYPRESS=m | 976 | CONFIG_HID_CYPRESS=m |
959 | CONFIG_HID_DELL=m | ||
960 | CONFIG_HID_EZKEY=m | 977 | CONFIG_HID_EZKEY=m |
961 | CONFIG_HID_GYRATION=m | 978 | CONFIG_HID_GYRATION=m |
962 | CONFIG_HID_LOGITECH=m | 979 | CONFIG_HID_LOGITECH=m |
@@ -964,12 +981,15 @@ CONFIG_HID_LOGITECH=m | |||
964 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 981 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
965 | CONFIG_HID_MICROSOFT=m | 982 | CONFIG_HID_MICROSOFT=m |
966 | CONFIG_HID_MONTEREY=m | 983 | CONFIG_HID_MONTEREY=m |
984 | # CONFIG_HID_NTRIG is not set | ||
967 | CONFIG_HID_PANTHERLORD=m | 985 | CONFIG_HID_PANTHERLORD=m |
968 | # CONFIG_PANTHERLORD_FF is not set | 986 | # CONFIG_PANTHERLORD_FF is not set |
969 | CONFIG_HID_PETALYNX=m | 987 | CONFIG_HID_PETALYNX=m |
970 | CONFIG_HID_SAMSUNG=m | 988 | CONFIG_HID_SAMSUNG=m |
971 | CONFIG_HID_SONY=m | 989 | CONFIG_HID_SONY=m |
972 | CONFIG_HID_SUNPLUS=m | 990 | CONFIG_HID_SUNPLUS=m |
991 | # CONFIG_GREENASIA_FF is not set | ||
992 | # CONFIG_HID_TOPSEED is not set | ||
973 | CONFIG_THRUSTMASTER_FF=m | 993 | CONFIG_THRUSTMASTER_FF=m |
974 | CONFIG_ZEROPLUS_FF=m | 994 | CONFIG_ZEROPLUS_FF=m |
975 | CONFIG_USB_SUPPORT=y | 995 | CONFIG_USB_SUPPORT=y |
@@ -990,6 +1010,8 @@ CONFIG_USB_DEVICE_CLASS=y | |||
990 | # CONFIG_USB_OTG_WHITELIST is not set | 1010 | # CONFIG_USB_OTG_WHITELIST is not set |
991 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 1011 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
992 | CONFIG_USB_MON=y | 1012 | CONFIG_USB_MON=y |
1013 | # CONFIG_USB_WUSB is not set | ||
1014 | # CONFIG_USB_WUSB_CBAF is not set | ||
993 | 1015 | ||
994 | # | 1016 | # |
995 | # USB Host Controller Drivers | 1017 | # USB Host Controller Drivers |
@@ -1007,6 +1029,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1007 | # CONFIG_USB_UHCI_HCD is not set | 1029 | # CONFIG_USB_UHCI_HCD is not set |
1008 | # CONFIG_USB_SL811_HCD is not set | 1030 | # CONFIG_USB_SL811_HCD is not set |
1009 | # CONFIG_USB_R8A66597_HCD is not set | 1031 | # CONFIG_USB_R8A66597_HCD is not set |
1032 | # CONFIG_USB_WHCI_HCD is not set | ||
1033 | # CONFIG_USB_HWA_HCD is not set | ||
1010 | 1034 | ||
1011 | # | 1035 | # |
1012 | # USB Device Class drivers | 1036 | # USB Device Class drivers |
@@ -1017,11 +1041,11 @@ CONFIG_USB_PRINTER=m | |||
1017 | # CONFIG_USB_TMC is not set | 1041 | # CONFIG_USB_TMC is not set |
1018 | 1042 | ||
1019 | # | 1043 | # |
1020 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1044 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
1021 | # | 1045 | # |
1022 | 1046 | ||
1023 | # | 1047 | # |
1024 | # may also be needed; see USB_STORAGE Help for more information | 1048 | # see USB_STORAGE Help for more information |
1025 | # | 1049 | # |
1026 | CONFIG_USB_STORAGE=m | 1050 | CONFIG_USB_STORAGE=m |
1027 | # CONFIG_USB_STORAGE_DEBUG is not set | 1051 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -1119,6 +1143,7 @@ CONFIG_USB_SISUSBVGA_CON=y | |||
1119 | # CONFIG_USB_ISIGHTFW is not set | 1143 | # CONFIG_USB_ISIGHTFW is not set |
1120 | # CONFIG_USB_VST is not set | 1144 | # CONFIG_USB_VST is not set |
1121 | # CONFIG_USB_GADGET is not set | 1145 | # CONFIG_USB_GADGET is not set |
1146 | # CONFIG_UWB is not set | ||
1122 | # CONFIG_MMC is not set | 1147 | # CONFIG_MMC is not set |
1123 | # CONFIG_MEMSTICK is not set | 1148 | # CONFIG_MEMSTICK is not set |
1124 | # CONFIG_NEW_LEDS is not set | 1149 | # CONFIG_NEW_LEDS is not set |
@@ -1192,10 +1217,7 @@ CONFIG_TMPFS=y | |||
1192 | # CONFIG_HUGETLBFS is not set | 1217 | # CONFIG_HUGETLBFS is not set |
1193 | # CONFIG_HUGETLB_PAGE is not set | 1218 | # CONFIG_HUGETLB_PAGE is not set |
1194 | # CONFIG_CONFIGFS_FS is not set | 1219 | # CONFIG_CONFIGFS_FS is not set |
1195 | 1220 | CONFIG_MISC_FILESYSTEMS=y | |
1196 | # | ||
1197 | # Miscellaneous filesystems | ||
1198 | # | ||
1199 | # CONFIG_ADFS_FS is not set | 1221 | # CONFIG_ADFS_FS is not set |
1200 | # CONFIG_AFFS_FS is not set | 1222 | # CONFIG_AFFS_FS is not set |
1201 | # CONFIG_HFS_FS is not set | 1223 | # CONFIG_HFS_FS is not set |
@@ -1302,14 +1324,20 @@ CONFIG_FRAME_WARN=1024 | |||
1302 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1324 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1303 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1325 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1304 | # CONFIG_LATENCYTOP is not set | 1326 | # CONFIG_LATENCYTOP is not set |
1305 | CONFIG_NOP_TRACER=y | 1327 | CONFIG_HAVE_FUNCTION_TRACER=y |
1306 | CONFIG_HAVE_FTRACE=y | 1328 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1329 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1330 | |||
1331 | # | ||
1332 | # Tracers | ||
1333 | # | ||
1307 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1334 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1308 | # CONFIG_SAMPLES is not set | 1335 | # CONFIG_SAMPLES is not set |
1336 | CONFIG_HAVE_ARCH_KGDB=y | ||
1309 | CONFIG_SH_STANDARD_BIOS=y | 1337 | CONFIG_SH_STANDARD_BIOS=y |
1310 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1338 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1311 | # CONFIG_EARLY_PRINTK is not set | 1339 | # CONFIG_EARLY_PRINTK is not set |
1312 | # CONFIG_SH_KGDB is not set | 1340 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1313 | 1341 | ||
1314 | # | 1342 | # |
1315 | # Security options | 1343 | # Security options |
@@ -1325,6 +1353,7 @@ CONFIG_CRYPTO=y | |||
1325 | # | 1353 | # |
1326 | # CONFIG_CRYPTO_FIPS is not set | 1354 | # CONFIG_CRYPTO_FIPS is not set |
1327 | # CONFIG_CRYPTO_MANAGER is not set | 1355 | # CONFIG_CRYPTO_MANAGER is not set |
1356 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1328 | # CONFIG_CRYPTO_GF128MUL is not set | 1357 | # CONFIG_CRYPTO_GF128MUL is not set |
1329 | # CONFIG_CRYPTO_NULL is not set | 1358 | # CONFIG_CRYPTO_NULL is not set |
1330 | # CONFIG_CRYPTO_CRYPTD is not set | 1359 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1408,6 +1437,7 @@ CONFIG_CRYPTO_HW=y | |||
1408 | # Library routines | 1437 | # Library routines |
1409 | # | 1438 | # |
1410 | CONFIG_BITREVERSE=y | 1439 | CONFIG_BITREVERSE=y |
1440 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1411 | # CONFIG_CRC_CCITT is not set | 1441 | # CONFIG_CRC_CCITT is not set |
1412 | # CONFIG_CRC16 is not set | 1442 | # CONFIG_CRC16 is not set |
1413 | CONFIG_CRC_T10DIF=y | 1443 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/lboxre2_defconfig b/arch/sh/configs/lboxre2_defconfig index c3ecedfc1bc7..d5c5a1dbaa62 100644 --- a/arch/sh/configs/lboxre2_defconfig +++ b/arch/sh/configs/lboxre2_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:29:42 2008 | 4 | # Fri Jan 9 17:02:46 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -76,7 +78,6 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_SLUB is not set | 78 | # CONFIG_SLUB is not set |
77 | # CONFIG_SLOB is not set | 79 | # CONFIG_SLOB is not set |
78 | # CONFIG_PROFILING is not set | 80 | # CONFIG_PROFILING is not set |
79 | # CONFIG_MARKERS is not set | ||
80 | CONFIG_HAVE_OPROFILE=y | 81 | CONFIG_HAVE_OPROFILE=y |
81 | # CONFIG_KPROBES is not set | 82 | # CONFIG_KPROBES is not set |
82 | CONFIG_HAVE_IOREMAP_PROT=y | 83 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -87,7 +88,6 @@ CONFIG_HAVE_CLK=y | |||
87 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 88 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
88 | CONFIG_SLABINFO=y | 89 | CONFIG_SLABINFO=y |
89 | CONFIG_RT_MUTEXES=y | 90 | CONFIG_RT_MUTEXES=y |
90 | # CONFIG_TINY_SHMEM is not set | ||
91 | CONFIG_BASE_SMALL=0 | 91 | CONFIG_BASE_SMALL=0 |
92 | CONFIG_MODULES=y | 92 | CONFIG_MODULES=y |
93 | # CONFIG_MODULE_FORCE_LOAD is not set | 93 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -95,11 +95,9 @@ CONFIG_MODULE_UNLOAD=y | |||
95 | CONFIG_MODULE_FORCE_UNLOAD=y | 95 | CONFIG_MODULE_FORCE_UNLOAD=y |
96 | # CONFIG_MODVERSIONS is not set | 96 | # CONFIG_MODVERSIONS is not set |
97 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 97 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
98 | CONFIG_KMOD=y | ||
99 | CONFIG_BLOCK=y | 98 | CONFIG_BLOCK=y |
100 | # CONFIG_LBD is not set | 99 | # CONFIG_LBD is not set |
101 | # CONFIG_BLK_DEV_IO_TRACE is not set | 100 | # CONFIG_BLK_DEV_IO_TRACE is not set |
102 | # CONFIG_LSF is not set | ||
103 | # CONFIG_BLK_DEV_BSG is not set | 101 | # CONFIG_BLK_DEV_BSG is not set |
104 | # CONFIG_BLK_DEV_INTEGRITY is not set | 102 | # CONFIG_BLK_DEV_INTEGRITY is not set |
105 | 103 | ||
@@ -116,6 +114,10 @@ CONFIG_DEFAULT_AS=y | |||
116 | # CONFIG_DEFAULT_NOOP is not set | 114 | # CONFIG_DEFAULT_NOOP is not set |
117 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 115 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
118 | CONFIG_CLASSIC_RCU=y | 116 | CONFIG_CLASSIC_RCU=y |
117 | # CONFIG_TREE_RCU is not set | ||
118 | # CONFIG_PREEMPT_RCU is not set | ||
119 | # CONFIG_TREE_RCU_TRACE is not set | ||
120 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
119 | # CONFIG_FREEZER is not set | 121 | # CONFIG_FREEZER is not set |
120 | 122 | ||
121 | # | 123 | # |
@@ -123,6 +125,7 @@ CONFIG_CLASSIC_RCU=y | |||
123 | # | 125 | # |
124 | CONFIG_CPU_SH4=y | 126 | CONFIG_CPU_SH4=y |
125 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 127 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
128 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
126 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 129 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
127 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
128 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 131 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -186,7 +189,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
186 | CONFIG_SPARSEMEM_STATIC=y | 189 | CONFIG_SPARSEMEM_STATIC=y |
187 | CONFIG_PAGEFLAGS_EXTENDED=y | 190 | CONFIG_PAGEFLAGS_EXTENDED=y |
188 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 191 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
189 | # CONFIG_RESOURCES_64BIT is not set | ||
190 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 192 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
191 | CONFIG_ZONE_DMA_FLAG=0 | 193 | CONFIG_ZONE_DMA_FLAG=0 |
192 | CONFIG_NR_QUICK=2 | 194 | CONFIG_NR_QUICK=2 |
@@ -286,6 +288,7 @@ CONFIG_PCI=y | |||
286 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 288 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
287 | CONFIG_PCI_AUTO=y | 289 | CONFIG_PCI_AUTO=y |
288 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 290 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
291 | # CONFIG_PCIEPORTBUS is not set | ||
289 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 292 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
290 | CONFIG_PCI_LEGACY=y | 293 | CONFIG_PCI_LEGACY=y |
291 | CONFIG_PCCARD=y | 294 | CONFIG_PCCARD=y |
@@ -315,11 +318,18 @@ CONFIG_BINFMT_ELF=y | |||
315 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 318 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
316 | # CONFIG_HAVE_AOUT is not set | 319 | # CONFIG_HAVE_AOUT is not set |
317 | # CONFIG_BINFMT_MISC is not set | 320 | # CONFIG_BINFMT_MISC is not set |
321 | |||
322 | # | ||
323 | # Power management options (EXPERIMENTAL) | ||
324 | # | ||
325 | # CONFIG_PM is not set | ||
326 | # CONFIG_CPU_IDLE is not set | ||
318 | CONFIG_NET=y | 327 | CONFIG_NET=y |
319 | 328 | ||
320 | # | 329 | # |
321 | # Networking options | 330 | # Networking options |
322 | # | 331 | # |
332 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
323 | CONFIG_PACKET=y | 333 | CONFIG_PACKET=y |
324 | # CONFIG_PACKET_MMAP is not set | 334 | # CONFIG_PACKET_MMAP is not set |
325 | CONFIG_UNIX=y | 335 | CONFIG_UNIX=y |
@@ -399,6 +409,7 @@ CONFIG_NETFILTER_ADVANCED=y | |||
399 | # CONFIG_ECONET is not set | 409 | # CONFIG_ECONET is not set |
400 | # CONFIG_WAN_ROUTER is not set | 410 | # CONFIG_WAN_ROUTER is not set |
401 | # CONFIG_NET_SCHED is not set | 411 | # CONFIG_NET_SCHED is not set |
412 | # CONFIG_DCB is not set | ||
402 | 413 | ||
403 | # | 414 | # |
404 | # Network testing | 415 | # Network testing |
@@ -414,8 +425,8 @@ CONFIG_WIRELESS=y | |||
414 | # CONFIG_CFG80211 is not set | 425 | # CONFIG_CFG80211 is not set |
415 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 426 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
416 | # CONFIG_WIRELESS_EXT is not set | 427 | # CONFIG_WIRELESS_EXT is not set |
428 | # CONFIG_LIB80211 is not set | ||
417 | # CONFIG_MAC80211 is not set | 429 | # CONFIG_MAC80211 is not set |
418 | # CONFIG_IEEE80211 is not set | ||
419 | # CONFIG_RFKILL is not set | 430 | # CONFIG_RFKILL is not set |
420 | # CONFIG_NET_9P is not set | 431 | # CONFIG_NET_9P is not set |
421 | 432 | ||
@@ -459,6 +470,7 @@ CONFIG_MISC_DEVICES=y | |||
459 | # CONFIG_TIFM_CORE is not set | 470 | # CONFIG_TIFM_CORE is not set |
460 | # CONFIG_ENCLOSURE_SERVICES is not set | 471 | # CONFIG_ENCLOSURE_SERVICES is not set |
461 | # CONFIG_HP_ILO is not set | 472 | # CONFIG_HP_ILO is not set |
473 | # CONFIG_C2PORT is not set | ||
462 | CONFIG_HAVE_IDE=y | 474 | CONFIG_HAVE_IDE=y |
463 | # CONFIG_IDE is not set | 475 | # CONFIG_IDE is not set |
464 | 476 | ||
@@ -501,6 +513,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
501 | # CONFIG_SCSI_SRP_ATTRS is not set | 513 | # CONFIG_SCSI_SRP_ATTRS is not set |
502 | CONFIG_SCSI_LOWLEVEL=y | 514 | CONFIG_SCSI_LOWLEVEL=y |
503 | # CONFIG_ISCSI_TCP is not set | 515 | # CONFIG_ISCSI_TCP is not set |
516 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
504 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 517 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
505 | # CONFIG_SCSI_3W_9XXX is not set | 518 | # CONFIG_SCSI_3W_9XXX is not set |
506 | # CONFIG_SCSI_ACARD is not set | 519 | # CONFIG_SCSI_ACARD is not set |
@@ -514,6 +527,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
514 | # CONFIG_MEGARAID_LEGACY is not set | 527 | # CONFIG_MEGARAID_LEGACY is not set |
515 | # CONFIG_MEGARAID_SAS is not set | 528 | # CONFIG_MEGARAID_SAS is not set |
516 | # CONFIG_SCSI_HPTIOP is not set | 529 | # CONFIG_SCSI_HPTIOP is not set |
530 | # CONFIG_LIBFC is not set | ||
531 | # CONFIG_FCOE is not set | ||
517 | # CONFIG_SCSI_DMX3191D is not set | 532 | # CONFIG_SCSI_DMX3191D is not set |
518 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 533 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
519 | # CONFIG_SCSI_IPS is not set | 534 | # CONFIG_SCSI_IPS is not set |
@@ -627,6 +642,7 @@ CONFIG_MII=y | |||
627 | # CONFIG_NET_VENDOR_3COM is not set | 642 | # CONFIG_NET_VENDOR_3COM is not set |
628 | # CONFIG_SMC91X is not set | 643 | # CONFIG_SMC91X is not set |
629 | # CONFIG_SMC911X is not set | 644 | # CONFIG_SMC911X is not set |
645 | # CONFIG_SMSC911X is not set | ||
630 | # CONFIG_NET_TULIP is not set | 646 | # CONFIG_NET_TULIP is not set |
631 | # CONFIG_HP100 is not set | 647 | # CONFIG_HP100 is not set |
632 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 648 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -642,7 +658,6 @@ CONFIG_NET_PCI=y | |||
642 | # CONFIG_ADAPTEC_STARFIRE is not set | 658 | # CONFIG_ADAPTEC_STARFIRE is not set |
643 | # CONFIG_B44 is not set | 659 | # CONFIG_B44 is not set |
644 | # CONFIG_FORCEDETH is not set | 660 | # CONFIG_FORCEDETH is not set |
645 | # CONFIG_EEPRO100 is not set | ||
646 | # CONFIG_E100 is not set | 661 | # CONFIG_E100 is not set |
647 | # CONFIG_FEALNX is not set | 662 | # CONFIG_FEALNX is not set |
648 | # CONFIG_NATSEMI is not set | 663 | # CONFIG_NATSEMI is not set |
@@ -656,6 +671,7 @@ CONFIG_8139TOO_TUNE_TWISTER=y | |||
656 | # CONFIG_R6040 is not set | 671 | # CONFIG_R6040 is not set |
657 | # CONFIG_SIS900 is not set | 672 | # CONFIG_SIS900 is not set |
658 | # CONFIG_EPIC100 is not set | 673 | # CONFIG_EPIC100 is not set |
674 | # CONFIG_SMSC9420 is not set | ||
659 | # CONFIG_SUNDANCE is not set | 675 | # CONFIG_SUNDANCE is not set |
660 | # CONFIG_TLAN is not set | 676 | # CONFIG_TLAN is not set |
661 | # CONFIG_VIA_RHINE is not set | 677 | # CONFIG_VIA_RHINE is not set |
@@ -684,6 +700,7 @@ CONFIG_NETDEV_1000=y | |||
684 | # CONFIG_JME is not set | 700 | # CONFIG_JME is not set |
685 | CONFIG_NETDEV_10000=y | 701 | CONFIG_NETDEV_10000=y |
686 | # CONFIG_CHELSIO_T1 is not set | 702 | # CONFIG_CHELSIO_T1 is not set |
703 | CONFIG_CHELSIO_T3_DEPENDS=y | ||
687 | # CONFIG_CHELSIO_T3 is not set | 704 | # CONFIG_CHELSIO_T3 is not set |
688 | # CONFIG_ENIC is not set | 705 | # CONFIG_ENIC is not set |
689 | # CONFIG_IXGBE is not set | 706 | # CONFIG_IXGBE is not set |
@@ -692,6 +709,7 @@ CONFIG_NETDEV_10000=y | |||
692 | # CONFIG_MYRI10GE is not set | 709 | # CONFIG_MYRI10GE is not set |
693 | # CONFIG_NETXEN_NIC is not set | 710 | # CONFIG_NETXEN_NIC is not set |
694 | # CONFIG_NIU is not set | 711 | # CONFIG_NIU is not set |
712 | # CONFIG_MLX4_EN is not set | ||
695 | # CONFIG_MLX4_CORE is not set | 713 | # CONFIG_MLX4_CORE is not set |
696 | # CONFIG_TEHUTI is not set | 714 | # CONFIG_TEHUTI is not set |
697 | # CONFIG_BNX2X is not set | 715 | # CONFIG_BNX2X is not set |
@@ -787,6 +805,7 @@ CONFIG_SERIAL_CORE=y | |||
787 | CONFIG_SERIAL_CORE_CONSOLE=y | 805 | CONFIG_SERIAL_CORE_CONSOLE=y |
788 | # CONFIG_SERIAL_JSM is not set | 806 | # CONFIG_SERIAL_JSM is not set |
789 | CONFIG_UNIX98_PTYS=y | 807 | CONFIG_UNIX98_PTYS=y |
808 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
790 | CONFIG_LEGACY_PTYS=y | 809 | CONFIG_LEGACY_PTYS=y |
791 | CONFIG_LEGACY_PTY_COUNT=256 | 810 | CONFIG_LEGACY_PTY_COUNT=256 |
792 | # CONFIG_IPMI_HANDLER is not set | 811 | # CONFIG_IPMI_HANDLER is not set |
@@ -828,11 +847,11 @@ CONFIG_HWMON=y | |||
828 | # CONFIG_THERMAL is not set | 847 | # CONFIG_THERMAL is not set |
829 | # CONFIG_THERMAL_HWMON is not set | 848 | # CONFIG_THERMAL_HWMON is not set |
830 | # CONFIG_WATCHDOG is not set | 849 | # CONFIG_WATCHDOG is not set |
850 | CONFIG_SSB_POSSIBLE=y | ||
831 | 851 | ||
832 | # | 852 | # |
833 | # Sonics Silicon Backplane | 853 | # Sonics Silicon Backplane |
834 | # | 854 | # |
835 | CONFIG_SSB_POSSIBLE=y | ||
836 | # CONFIG_SSB is not set | 855 | # CONFIG_SSB is not set |
837 | 856 | ||
838 | # | 857 | # |
@@ -842,7 +861,7 @@ CONFIG_SSB_POSSIBLE=y | |||
842 | # CONFIG_MFD_SM501 is not set | 861 | # CONFIG_MFD_SM501 is not set |
843 | # CONFIG_HTC_PASIC3 is not set | 862 | # CONFIG_HTC_PASIC3 is not set |
844 | # CONFIG_MFD_TMIO is not set | 863 | # CONFIG_MFD_TMIO is not set |
845 | # CONFIG_MFD_WM8400 is not set | 864 | # CONFIG_REGULATOR is not set |
846 | 865 | ||
847 | # | 866 | # |
848 | # Multimedia devices | 867 | # Multimedia devices |
@@ -902,9 +921,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
902 | # | 921 | # |
903 | 922 | ||
904 | # | 923 | # |
905 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 924 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
906 | # | 925 | # |
907 | # CONFIG_USB_GADGET is not set | 926 | # CONFIG_USB_GADGET is not set |
927 | # CONFIG_UWB is not set | ||
908 | # CONFIG_MMC is not set | 928 | # CONFIG_MMC is not set |
909 | # CONFIG_MEMSTICK is not set | 929 | # CONFIG_MEMSTICK is not set |
910 | # CONFIG_NEW_LEDS is not set | 930 | # CONFIG_NEW_LEDS is not set |
@@ -1007,10 +1027,7 @@ CONFIG_TMPFS=y | |||
1007 | # CONFIG_HUGETLBFS is not set | 1027 | # CONFIG_HUGETLBFS is not set |
1008 | # CONFIG_HUGETLB_PAGE is not set | 1028 | # CONFIG_HUGETLB_PAGE is not set |
1009 | # CONFIG_CONFIGFS_FS is not set | 1029 | # CONFIG_CONFIGFS_FS is not set |
1010 | 1030 | CONFIG_MISC_FILESYSTEMS=y | |
1011 | # | ||
1012 | # Miscellaneous filesystems | ||
1013 | # | ||
1014 | # CONFIG_ADFS_FS is not set | 1031 | # CONFIG_ADFS_FS is not set |
1015 | # CONFIG_AFFS_FS is not set | 1032 | # CONFIG_AFFS_FS is not set |
1016 | # CONFIG_HFS_FS is not set | 1033 | # CONFIG_HFS_FS is not set |
@@ -1100,14 +1117,20 @@ CONFIG_FRAME_WARN=1024 | |||
1100 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1117 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1101 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1118 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1102 | # CONFIG_LATENCYTOP is not set | 1119 | # CONFIG_LATENCYTOP is not set |
1103 | CONFIG_NOP_TRACER=y | 1120 | CONFIG_HAVE_FUNCTION_TRACER=y |
1104 | CONFIG_HAVE_FTRACE=y | 1121 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1122 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1123 | |||
1124 | # | ||
1125 | # Tracers | ||
1126 | # | ||
1105 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1127 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1106 | # CONFIG_SAMPLES is not set | 1128 | # CONFIG_SAMPLES is not set |
1129 | CONFIG_HAVE_ARCH_KGDB=y | ||
1107 | CONFIG_SH_STANDARD_BIOS=y | 1130 | CONFIG_SH_STANDARD_BIOS=y |
1108 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1131 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1109 | # CONFIG_EARLY_PRINTK is not set | 1132 | # CONFIG_EARLY_PRINTK is not set |
1110 | # CONFIG_SH_KGDB is not set | 1133 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1111 | 1134 | ||
1112 | # | 1135 | # |
1113 | # Security options | 1136 | # Security options |
@@ -1123,6 +1146,7 @@ CONFIG_CRYPTO=y | |||
1123 | # | 1146 | # |
1124 | # CONFIG_CRYPTO_FIPS is not set | 1147 | # CONFIG_CRYPTO_FIPS is not set |
1125 | # CONFIG_CRYPTO_MANAGER is not set | 1148 | # CONFIG_CRYPTO_MANAGER is not set |
1149 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1126 | # CONFIG_CRYPTO_GF128MUL is not set | 1150 | # CONFIG_CRYPTO_GF128MUL is not set |
1127 | # CONFIG_CRYPTO_NULL is not set | 1151 | # CONFIG_CRYPTO_NULL is not set |
1128 | # CONFIG_CRYPTO_CRYPTD is not set | 1152 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1206,6 +1230,7 @@ CONFIG_CRYPTO_HW=y | |||
1206 | # Library routines | 1230 | # Library routines |
1207 | # | 1231 | # |
1208 | CONFIG_BITREVERSE=y | 1232 | CONFIG_BITREVERSE=y |
1233 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1209 | # CONFIG_CRC_CCITT is not set | 1234 | # CONFIG_CRC_CCITT is not set |
1210 | # CONFIG_CRC16 is not set | 1235 | # CONFIG_CRC16 is not set |
1211 | CONFIG_CRC_T10DIF=y | 1236 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/magicpanelr2_defconfig b/arch/sh/configs/magicpanelr2_defconfig index 499ed7204385..125d8019dc2f 100644 --- a/arch/sh/configs/magicpanelr2_defconfig +++ b/arch/sh/configs/magicpanelr2_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:32:23 2008 | 4 | # Fri Jan 9 17:03:37 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | CONFIG_GENERIC_GPIO=y | 16 | CONFIG_GENERIC_GPIO=y |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -58,6 +60,7 @@ CONFIG_UID16=y | |||
58 | CONFIG_SYSCTL_SYSCALL=y | 60 | CONFIG_SYSCTL_SYSCALL=y |
59 | CONFIG_KALLSYMS=y | 61 | CONFIG_KALLSYMS=y |
60 | CONFIG_KALLSYMS_ALL=y | 62 | CONFIG_KALLSYMS_ALL=y |
63 | CONFIG_KALLSYMS_STRIP_GENERATED=y | ||
61 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 64 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
62 | CONFIG_HOTPLUG=y | 65 | CONFIG_HOTPLUG=y |
63 | CONFIG_PRINTK=y | 66 | CONFIG_PRINTK=y |
@@ -74,12 +77,10 @@ CONFIG_EVENTFD=y | |||
74 | CONFIG_SHMEM=y | 77 | CONFIG_SHMEM=y |
75 | CONFIG_AIO=y | 78 | CONFIG_AIO=y |
76 | CONFIG_VM_EVENT_COUNTERS=y | 79 | CONFIG_VM_EVENT_COUNTERS=y |
77 | CONFIG_PCI_QUIRKS=y | ||
78 | CONFIG_SLAB=y | 80 | CONFIG_SLAB=y |
79 | # CONFIG_SLUB is not set | 81 | # CONFIG_SLUB is not set |
80 | # CONFIG_SLOB is not set | 82 | # CONFIG_SLOB is not set |
81 | # CONFIG_PROFILING is not set | 83 | # CONFIG_PROFILING is not set |
82 | # CONFIG_MARKERS is not set | ||
83 | CONFIG_HAVE_OPROFILE=y | 84 | CONFIG_HAVE_OPROFILE=y |
84 | # CONFIG_KPROBES is not set | 85 | # CONFIG_KPROBES is not set |
85 | CONFIG_HAVE_IOREMAP_PROT=y | 86 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -90,7 +91,6 @@ CONFIG_HAVE_CLK=y | |||
90 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 91 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
91 | CONFIG_SLABINFO=y | 92 | CONFIG_SLABINFO=y |
92 | CONFIG_RT_MUTEXES=y | 93 | CONFIG_RT_MUTEXES=y |
93 | # CONFIG_TINY_SHMEM is not set | ||
94 | CONFIG_BASE_SMALL=0 | 94 | CONFIG_BASE_SMALL=0 |
95 | CONFIG_MODULES=y | 95 | CONFIG_MODULES=y |
96 | # CONFIG_MODULE_FORCE_LOAD is not set | 96 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -98,11 +98,9 @@ CONFIG_MODULE_UNLOAD=y | |||
98 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 98 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
99 | CONFIG_MODVERSIONS=y | 99 | CONFIG_MODVERSIONS=y |
100 | CONFIG_MODULE_SRCVERSION_ALL=y | 100 | CONFIG_MODULE_SRCVERSION_ALL=y |
101 | CONFIG_KMOD=y | ||
102 | CONFIG_BLOCK=y | 101 | CONFIG_BLOCK=y |
103 | # CONFIG_LBD is not set | 102 | # CONFIG_LBD is not set |
104 | # CONFIG_BLK_DEV_IO_TRACE is not set | 103 | # CONFIG_BLK_DEV_IO_TRACE is not set |
105 | # CONFIG_LSF is not set | ||
106 | # CONFIG_BLK_DEV_BSG is not set | 104 | # CONFIG_BLK_DEV_BSG is not set |
107 | # CONFIG_BLK_DEV_INTEGRITY is not set | 105 | # CONFIG_BLK_DEV_INTEGRITY is not set |
108 | 106 | ||
@@ -119,6 +117,10 @@ CONFIG_IOSCHED_NOOP=y | |||
119 | CONFIG_DEFAULT_NOOP=y | 117 | CONFIG_DEFAULT_NOOP=y |
120 | CONFIG_DEFAULT_IOSCHED="noop" | 118 | CONFIG_DEFAULT_IOSCHED="noop" |
121 | CONFIG_CLASSIC_RCU=y | 119 | CONFIG_CLASSIC_RCU=y |
120 | # CONFIG_TREE_RCU is not set | ||
121 | # CONFIG_PREEMPT_RCU is not set | ||
122 | # CONFIG_TREE_RCU_TRACE is not set | ||
123 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
122 | # CONFIG_FREEZER is not set | 124 | # CONFIG_FREEZER is not set |
123 | 125 | ||
124 | # | 126 | # |
@@ -126,6 +128,7 @@ CONFIG_CLASSIC_RCU=y | |||
126 | # | 128 | # |
127 | CONFIG_CPU_SH3=y | 129 | CONFIG_CPU_SH3=y |
128 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
129 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 132 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
130 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 133 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 134 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -189,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
189 | CONFIG_SPARSEMEM_STATIC=y | 192 | CONFIG_SPARSEMEM_STATIC=y |
190 | CONFIG_PAGEFLAGS_EXTENDED=y | 193 | CONFIG_PAGEFLAGS_EXTENDED=y |
191 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 194 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
192 | # CONFIG_RESOURCES_64BIT is not set | ||
193 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 195 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
194 | CONFIG_ZONE_DMA_FLAG=0 | 196 | CONFIG_ZONE_DMA_FLAG=0 |
195 | CONFIG_NR_QUICK=2 | 197 | CONFIG_NR_QUICK=2 |
@@ -296,11 +298,18 @@ CONFIG_BINFMT_ELF=y | |||
296 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 298 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
297 | # CONFIG_HAVE_AOUT is not set | 299 | # CONFIG_HAVE_AOUT is not set |
298 | # CONFIG_BINFMT_MISC is not set | 300 | # CONFIG_BINFMT_MISC is not set |
301 | |||
302 | # | ||
303 | # Power management options (EXPERIMENTAL) | ||
304 | # | ||
305 | # CONFIG_PM is not set | ||
306 | # CONFIG_CPU_IDLE is not set | ||
299 | CONFIG_NET=y | 307 | CONFIG_NET=y |
300 | 308 | ||
301 | # | 309 | # |
302 | # Networking options | 310 | # Networking options |
303 | # | 311 | # |
312 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
304 | CONFIG_PACKET=y | 313 | CONFIG_PACKET=y |
305 | CONFIG_PACKET_MMAP=y | 314 | CONFIG_PACKET_MMAP=y |
306 | CONFIG_UNIX=y | 315 | CONFIG_UNIX=y |
@@ -351,6 +360,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
351 | # CONFIG_ECONET is not set | 360 | # CONFIG_ECONET is not set |
352 | # CONFIG_WAN_ROUTER is not set | 361 | # CONFIG_WAN_ROUTER is not set |
353 | # CONFIG_NET_SCHED is not set | 362 | # CONFIG_NET_SCHED is not set |
363 | # CONFIG_DCB is not set | ||
354 | 364 | ||
355 | # | 365 | # |
356 | # Network testing | 366 | # Network testing |
@@ -366,8 +376,8 @@ CONFIG_WIRELESS=y | |||
366 | # CONFIG_CFG80211 is not set | 376 | # CONFIG_CFG80211 is not set |
367 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 377 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
368 | # CONFIG_WIRELESS_EXT is not set | 378 | # CONFIG_WIRELESS_EXT is not set |
379 | # CONFIG_LIB80211 is not set | ||
369 | # CONFIG_MAC80211 is not set | 380 | # CONFIG_MAC80211 is not set |
370 | # CONFIG_IEEE80211 is not set | ||
371 | # CONFIG_RFKILL is not set | 381 | # CONFIG_RFKILL is not set |
372 | # CONFIG_NET_9P is not set | 382 | # CONFIG_NET_9P is not set |
373 | 383 | ||
@@ -483,6 +493,7 @@ CONFIG_BLK_DEV_RAM_SIZE=65536 | |||
483 | CONFIG_MISC_DEVICES=y | 493 | CONFIG_MISC_DEVICES=y |
484 | # CONFIG_EEPROM_93CX6 is not set | 494 | # CONFIG_EEPROM_93CX6 is not set |
485 | # CONFIG_ENCLOSURE_SERVICES is not set | 495 | # CONFIG_ENCLOSURE_SERVICES is not set |
496 | # CONFIG_C2PORT is not set | ||
486 | CONFIG_HAVE_IDE=y | 497 | CONFIG_HAVE_IDE=y |
487 | # CONFIG_IDE is not set | 498 | # CONFIG_IDE is not set |
488 | 499 | ||
@@ -502,13 +513,33 @@ CONFIG_NETDEVICES=y | |||
502 | # CONFIG_EQUALIZER is not set | 513 | # CONFIG_EQUALIZER is not set |
503 | # CONFIG_TUN is not set | 514 | # CONFIG_TUN is not set |
504 | # CONFIG_VETH is not set | 515 | # CONFIG_VETH is not set |
505 | # CONFIG_PHYLIB is not set | 516 | CONFIG_PHYLIB=y |
517 | |||
518 | # | ||
519 | # MII PHY device drivers | ||
520 | # | ||
521 | # CONFIG_MARVELL_PHY is not set | ||
522 | # CONFIG_DAVICOM_PHY is not set | ||
523 | # CONFIG_QSEMI_PHY is not set | ||
524 | # CONFIG_LXT_PHY is not set | ||
525 | # CONFIG_CICADA_PHY is not set | ||
526 | # CONFIG_VITESSE_PHY is not set | ||
527 | CONFIG_SMSC_PHY=y | ||
528 | # CONFIG_BROADCOM_PHY is not set | ||
529 | # CONFIG_ICPLUS_PHY is not set | ||
530 | # CONFIG_REALTEK_PHY is not set | ||
531 | # CONFIG_NATIONAL_PHY is not set | ||
532 | # CONFIG_STE10XP is not set | ||
533 | # CONFIG_LSI_ET1011C_PHY is not set | ||
534 | # CONFIG_FIXED_PHY is not set | ||
535 | # CONFIG_MDIO_BITBANG is not set | ||
506 | CONFIG_NET_ETHERNET=y | 536 | CONFIG_NET_ETHERNET=y |
507 | CONFIG_MII=y | 537 | CONFIG_MII=y |
508 | # CONFIG_AX88796 is not set | 538 | # CONFIG_AX88796 is not set |
509 | # CONFIG_STNIC is not set | 539 | # CONFIG_STNIC is not set |
510 | # CONFIG_SMC91X is not set | 540 | # CONFIG_SMC91X is not set |
511 | CONFIG_SMC911X=y | 541 | # CONFIG_SMC911X is not set |
542 | CONFIG_SMSC911X=y | ||
512 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 543 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
513 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 544 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
514 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 545 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -618,6 +649,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
618 | CONFIG_SERIAL_CORE=y | 649 | CONFIG_SERIAL_CORE=y |
619 | CONFIG_SERIAL_CORE_CONSOLE=y | 650 | CONFIG_SERIAL_CORE_CONSOLE=y |
620 | CONFIG_UNIX98_PTYS=y | 651 | CONFIG_UNIX98_PTYS=y |
652 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
621 | CONFIG_LEGACY_PTYS=y | 653 | CONFIG_LEGACY_PTYS=y |
622 | CONFIG_LEGACY_PTY_COUNT=256 | 654 | CONFIG_LEGACY_PTY_COUNT=256 |
623 | # CONFIG_IPMI_HANDLER is not set | 655 | # CONFIG_IPMI_HANDLER is not set |
@@ -627,17 +659,37 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
627 | # CONFIG_TCG_TPM is not set | 659 | # CONFIG_TCG_TPM is not set |
628 | # CONFIG_I2C is not set | 660 | # CONFIG_I2C is not set |
629 | # CONFIG_SPI is not set | 661 | # CONFIG_SPI is not set |
662 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
663 | CONFIG_GPIOLIB=y | ||
664 | # CONFIG_DEBUG_GPIO is not set | ||
665 | # CONFIG_GPIO_SYSFS is not set | ||
666 | |||
667 | # | ||
668 | # Memory mapped GPIO expanders: | ||
669 | # | ||
670 | |||
671 | # | ||
672 | # I2C GPIO expanders: | ||
673 | # | ||
674 | |||
675 | # | ||
676 | # PCI GPIO expanders: | ||
677 | # | ||
678 | |||
679 | # | ||
680 | # SPI GPIO expanders: | ||
681 | # | ||
630 | # CONFIG_W1 is not set | 682 | # CONFIG_W1 is not set |
631 | # CONFIG_POWER_SUPPLY is not set | 683 | # CONFIG_POWER_SUPPLY is not set |
632 | # CONFIG_HWMON is not set | 684 | # CONFIG_HWMON is not set |
633 | # CONFIG_THERMAL is not set | 685 | # CONFIG_THERMAL is not set |
634 | # CONFIG_THERMAL_HWMON is not set | 686 | # CONFIG_THERMAL_HWMON is not set |
635 | # CONFIG_WATCHDOG is not set | 687 | # CONFIG_WATCHDOG is not set |
688 | CONFIG_SSB_POSSIBLE=y | ||
636 | 689 | ||
637 | # | 690 | # |
638 | # Sonics Silicon Backplane | 691 | # Sonics Silicon Backplane |
639 | # | 692 | # |
640 | CONFIG_SSB_POSSIBLE=y | ||
641 | # CONFIG_SSB is not set | 693 | # CONFIG_SSB is not set |
642 | 694 | ||
643 | # | 695 | # |
@@ -647,7 +699,7 @@ CONFIG_SSB_POSSIBLE=y | |||
647 | # CONFIG_MFD_SM501 is not set | 699 | # CONFIG_MFD_SM501 is not set |
648 | # CONFIG_HTC_PASIC3 is not set | 700 | # CONFIG_HTC_PASIC3 is not set |
649 | # CONFIG_MFD_TMIO is not set | 701 | # CONFIG_MFD_TMIO is not set |
650 | # CONFIG_MFD_WM8400 is not set | 702 | # CONFIG_REGULATOR is not set |
651 | 703 | ||
652 | # | 704 | # |
653 | # Multimedia devices | 705 | # Multimedia devices |
@@ -778,10 +830,7 @@ CONFIG_TMPFS=y | |||
778 | # CONFIG_HUGETLBFS is not set | 830 | # CONFIG_HUGETLBFS is not set |
779 | # CONFIG_HUGETLB_PAGE is not set | 831 | # CONFIG_HUGETLB_PAGE is not set |
780 | # CONFIG_CONFIGFS_FS is not set | 832 | # CONFIG_CONFIGFS_FS is not set |
781 | 833 | CONFIG_MISC_FILESYSTEMS=y | |
782 | # | ||
783 | # Miscellaneous filesystems | ||
784 | # | ||
785 | # CONFIG_ADFS_FS is not set | 834 | # CONFIG_ADFS_FS is not set |
786 | # CONFIG_AFFS_FS is not set | 835 | # CONFIG_AFFS_FS is not set |
787 | # CONFIG_HFS_FS is not set | 836 | # CONFIG_HFS_FS is not set |
@@ -912,6 +961,7 @@ CONFIG_DEBUG_INFO=y | |||
912 | # CONFIG_DEBUG_MEMORY_INIT is not set | 961 | # CONFIG_DEBUG_MEMORY_INIT is not set |
913 | # CONFIG_DEBUG_LIST is not set | 962 | # CONFIG_DEBUG_LIST is not set |
914 | # CONFIG_DEBUG_SG is not set | 963 | # CONFIG_DEBUG_SG is not set |
964 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
915 | CONFIG_FRAME_POINTER=y | 965 | CONFIG_FRAME_POINTER=y |
916 | # CONFIG_RCU_TORTURE_TEST is not set | 966 | # CONFIG_RCU_TORTURE_TEST is not set |
917 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 967 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -920,16 +970,24 @@ CONFIG_FRAME_POINTER=y | |||
920 | # CONFIG_FAULT_INJECTION is not set | 970 | # CONFIG_FAULT_INJECTION is not set |
921 | # CONFIG_LATENCYTOP is not set | 971 | # CONFIG_LATENCYTOP is not set |
922 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 972 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
923 | CONFIG_NOP_TRACER=y | 973 | CONFIG_HAVE_FUNCTION_TRACER=y |
924 | CONFIG_HAVE_FTRACE=y | 974 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
925 | # CONFIG_FTRACE is not set | 975 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
976 | |||
977 | # | ||
978 | # Tracers | ||
979 | # | ||
980 | # CONFIG_FUNCTION_TRACER is not set | ||
926 | # CONFIG_IRQSOFF_TRACER is not set | 981 | # CONFIG_IRQSOFF_TRACER is not set |
927 | # CONFIG_SCHED_TRACER is not set | 982 | # CONFIG_SCHED_TRACER is not set |
928 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 983 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
929 | # CONFIG_BOOT_TRACER is not set | 984 | # CONFIG_BOOT_TRACER is not set |
985 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
930 | # CONFIG_STACK_TRACER is not set | 986 | # CONFIG_STACK_TRACER is not set |
931 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 987 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
932 | # CONFIG_SAMPLES is not set | 988 | # CONFIG_SAMPLES is not set |
989 | CONFIG_HAVE_ARCH_KGDB=y | ||
990 | # CONFIG_KGDB is not set | ||
933 | # CONFIG_SH_STANDARD_BIOS is not set | 991 | # CONFIG_SH_STANDARD_BIOS is not set |
934 | CONFIG_EARLY_SCIF_CONSOLE=y | 992 | CONFIG_EARLY_SCIF_CONSOLE=y |
935 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xa4430000 | 993 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xa4430000 |
@@ -939,25 +997,9 @@ CONFIG_EARLY_PRINTK=y | |||
939 | # CONFIG_DEBUG_STACK_USAGE is not set | 997 | # CONFIG_DEBUG_STACK_USAGE is not set |
940 | # CONFIG_4KSTACKS is not set | 998 | # CONFIG_4KSTACKS is not set |
941 | # CONFIG_IRQSTACKS is not set | 999 | # CONFIG_IRQSTACKS is not set |
942 | CONFIG_SH_KGDB=y | 1000 | CONFIG_DUMP_CODE=y |
943 | 1001 | # CONFIG_SH_NO_BSS_INIT is not set | |
944 | # | ||
945 | # KGDB configuration options | ||
946 | # | ||
947 | # CONFIG_MORE_COMPILE_OPTIONS is not set | 1002 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
948 | # CONFIG_KGDB_NMI is not set | ||
949 | CONFIG_KGDB_SYSRQ=y | ||
950 | |||
951 | # | ||
952 | # Serial port setup | ||
953 | # | ||
954 | CONFIG_KGDB_DEFPORT=0 | ||
955 | CONFIG_KGDB_DEFBAUD=115200 | ||
956 | CONFIG_KGDB_DEFPARITY_N=y | ||
957 | # CONFIG_KGDB_DEFPARITY_E is not set | ||
958 | # CONFIG_KGDB_DEFPARITY_O is not set | ||
959 | CONFIG_KGDB_DEFBITS_8=y | ||
960 | # CONFIG_KGDB_DEFBITS_7 is not set | ||
961 | 1003 | ||
962 | # | 1004 | # |
963 | # Security options | 1005 | # Security options |
@@ -972,6 +1014,7 @@ CONFIG_KGDB_DEFBITS_8=y | |||
972 | # Library routines | 1014 | # Library routines |
973 | # | 1015 | # |
974 | CONFIG_BITREVERSE=y | 1016 | CONFIG_BITREVERSE=y |
1017 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
975 | CONFIG_CRC_CCITT=m | 1018 | CONFIG_CRC_CCITT=m |
976 | CONFIG_CRC16=m | 1019 | CONFIG_CRC16=m |
977 | # CONFIG_CRC_T10DIF is not set | 1020 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/microdev_defconfig b/arch/sh/configs/microdev_defconfig index b8ada8ce98d9..5a1c0485a354 100644 --- a/arch/sh/configs/microdev_defconfig +++ b/arch/sh/configs/microdev_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:37:41 2008 | 4 | # Fri Jan 9 17:06:47 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -72,12 +74,10 @@ CONFIG_EVENTFD=y | |||
72 | CONFIG_SHMEM=y | 74 | CONFIG_SHMEM=y |
73 | CONFIG_AIO=y | 75 | CONFIG_AIO=y |
74 | CONFIG_VM_EVENT_COUNTERS=y | 76 | CONFIG_VM_EVENT_COUNTERS=y |
75 | CONFIG_PCI_QUIRKS=y | ||
76 | CONFIG_SLAB=y | 77 | CONFIG_SLAB=y |
77 | # CONFIG_SLUB is not set | 78 | # CONFIG_SLUB is not set |
78 | # CONFIG_SLOB is not set | 79 | # CONFIG_SLOB is not set |
79 | # CONFIG_PROFILING is not set | 80 | # CONFIG_PROFILING is not set |
80 | # CONFIG_MARKERS is not set | ||
81 | CONFIG_HAVE_OPROFILE=y | 81 | CONFIG_HAVE_OPROFILE=y |
82 | CONFIG_HAVE_IOREMAP_PROT=y | 82 | CONFIG_HAVE_IOREMAP_PROT=y |
83 | CONFIG_HAVE_KPROBES=y | 83 | CONFIG_HAVE_KPROBES=y |
@@ -87,13 +87,11 @@ CONFIG_HAVE_CLK=y | |||
87 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 87 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
88 | CONFIG_SLABINFO=y | 88 | CONFIG_SLABINFO=y |
89 | CONFIG_RT_MUTEXES=y | 89 | CONFIG_RT_MUTEXES=y |
90 | # CONFIG_TINY_SHMEM is not set | ||
91 | CONFIG_BASE_SMALL=0 | 90 | CONFIG_BASE_SMALL=0 |
92 | # CONFIG_MODULES is not set | 91 | # CONFIG_MODULES is not set |
93 | CONFIG_BLOCK=y | 92 | CONFIG_BLOCK=y |
94 | # CONFIG_LBD is not set | 93 | # CONFIG_LBD is not set |
95 | # CONFIG_BLK_DEV_IO_TRACE is not set | 94 | # CONFIG_BLK_DEV_IO_TRACE is not set |
96 | # CONFIG_LSF is not set | ||
97 | # CONFIG_BLK_DEV_BSG is not set | 95 | # CONFIG_BLK_DEV_BSG is not set |
98 | # CONFIG_BLK_DEV_INTEGRITY is not set | 96 | # CONFIG_BLK_DEV_INTEGRITY is not set |
99 | 97 | ||
@@ -110,6 +108,10 @@ CONFIG_DEFAULT_AS=y | |||
110 | # CONFIG_DEFAULT_NOOP is not set | 108 | # CONFIG_DEFAULT_NOOP is not set |
111 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 109 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
112 | CONFIG_CLASSIC_RCU=y | 110 | CONFIG_CLASSIC_RCU=y |
111 | # CONFIG_TREE_RCU is not set | ||
112 | # CONFIG_PREEMPT_RCU is not set | ||
113 | # CONFIG_TREE_RCU_TRACE is not set | ||
114 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
113 | # CONFIG_FREEZER is not set | 115 | # CONFIG_FREEZER is not set |
114 | 116 | ||
115 | # | 117 | # |
@@ -117,6 +119,7 @@ CONFIG_CLASSIC_RCU=y | |||
117 | # | 119 | # |
118 | CONFIG_CPU_SH4=y | 120 | CONFIG_CPU_SH4=y |
119 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 121 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
122 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
120 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 123 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
121 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 124 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
122 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 125 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -186,7 +189,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
186 | CONFIG_SPARSEMEM_STATIC=y | 189 | CONFIG_SPARSEMEM_STATIC=y |
187 | CONFIG_PAGEFLAGS_EXTENDED=y | 190 | CONFIG_PAGEFLAGS_EXTENDED=y |
188 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 191 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
189 | # CONFIG_RESOURCES_64BIT is not set | ||
190 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 192 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
191 | CONFIG_ZONE_DMA_FLAG=0 | 193 | CONFIG_ZONE_DMA_FLAG=0 |
192 | CONFIG_NR_QUICK=2 | 194 | CONFIG_NR_QUICK=2 |
@@ -265,7 +267,6 @@ CONFIG_HZ=250 | |||
265 | # CONFIG_PREEMPT_NONE is not set | 267 | # CONFIG_PREEMPT_NONE is not set |
266 | # CONFIG_PREEMPT_VOLUNTARY is not set | 268 | # CONFIG_PREEMPT_VOLUNTARY is not set |
267 | CONFIG_PREEMPT=y | 269 | CONFIG_PREEMPT=y |
268 | # CONFIG_PREEMPT_RCU is not set | ||
269 | CONFIG_GUSA=y | 270 | CONFIG_GUSA=y |
270 | # CONFIG_GUSA_RB is not set | 271 | # CONFIG_GUSA_RB is not set |
271 | 272 | ||
@@ -292,11 +293,18 @@ CONFIG_BINFMT_ELF=y | |||
292 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 293 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
293 | # CONFIG_HAVE_AOUT is not set | 294 | # CONFIG_HAVE_AOUT is not set |
294 | # CONFIG_BINFMT_MISC is not set | 295 | # CONFIG_BINFMT_MISC is not set |
296 | |||
297 | # | ||
298 | # Power management options (EXPERIMENTAL) | ||
299 | # | ||
300 | # CONFIG_PM is not set | ||
301 | # CONFIG_CPU_IDLE is not set | ||
295 | CONFIG_NET=y | 302 | CONFIG_NET=y |
296 | 303 | ||
297 | # | 304 | # |
298 | # Networking options | 305 | # Networking options |
299 | # | 306 | # |
307 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
300 | # CONFIG_PACKET is not set | 308 | # CONFIG_PACKET is not set |
301 | # CONFIG_UNIX is not set | 309 | # CONFIG_UNIX is not set |
302 | CONFIG_XFRM=y | 310 | CONFIG_XFRM=y |
@@ -351,6 +359,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
351 | # CONFIG_ECONET is not set | 359 | # CONFIG_ECONET is not set |
352 | # CONFIG_WAN_ROUTER is not set | 360 | # CONFIG_WAN_ROUTER is not set |
353 | # CONFIG_NET_SCHED is not set | 361 | # CONFIG_NET_SCHED is not set |
362 | # CONFIG_DCB is not set | ||
354 | 363 | ||
355 | # | 364 | # |
356 | # Network testing | 365 | # Network testing |
@@ -366,8 +375,8 @@ CONFIG_WIRELESS=y | |||
366 | # CONFIG_CFG80211 is not set | 375 | # CONFIG_CFG80211 is not set |
367 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 376 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
368 | # CONFIG_WIRELESS_EXT is not set | 377 | # CONFIG_WIRELESS_EXT is not set |
378 | # CONFIG_LIB80211 is not set | ||
369 | # CONFIG_MAC80211 is not set | 379 | # CONFIG_MAC80211 is not set |
370 | # CONFIG_IEEE80211 is not set | ||
371 | # CONFIG_RFKILL is not set | 380 | # CONFIG_RFKILL is not set |
372 | # CONFIG_NET_9P is not set | 381 | # CONFIG_NET_9P is not set |
373 | 382 | ||
@@ -400,12 +409,14 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
400 | CONFIG_MISC_DEVICES=y | 409 | CONFIG_MISC_DEVICES=y |
401 | # CONFIG_EEPROM_93CX6 is not set | 410 | # CONFIG_EEPROM_93CX6 is not set |
402 | # CONFIG_ENCLOSURE_SERVICES is not set | 411 | # CONFIG_ENCLOSURE_SERVICES is not set |
412 | # CONFIG_C2PORT is not set | ||
403 | CONFIG_HAVE_IDE=y | 413 | CONFIG_HAVE_IDE=y |
404 | CONFIG_IDE=y | 414 | CONFIG_IDE=y |
405 | 415 | ||
406 | # | 416 | # |
407 | # Please see Documentation/ide/ide.txt for help/info on IDE drives | 417 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
408 | # | 418 | # |
419 | CONFIG_IDE_ATAPI=y | ||
409 | # CONFIG_BLK_DEV_IDE_SATA is not set | 420 | # CONFIG_BLK_DEV_IDE_SATA is not set |
410 | CONFIG_IDE_GD=y | 421 | CONFIG_IDE_GD=y |
411 | CONFIG_IDE_GD_ATA=y | 422 | CONFIG_IDE_GD_ATA=y |
@@ -445,6 +456,7 @@ CONFIG_MII=y | |||
445 | # CONFIG_STNIC is not set | 456 | # CONFIG_STNIC is not set |
446 | CONFIG_SMC91X=y | 457 | CONFIG_SMC91X=y |
447 | # CONFIG_SMC911X is not set | 458 | # CONFIG_SMC911X is not set |
459 | # CONFIG_SMSC911X is not set | ||
448 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 460 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
449 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 461 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
450 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 462 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -503,6 +515,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
503 | CONFIG_SERIAL_CORE=y | 515 | CONFIG_SERIAL_CORE=y |
504 | CONFIG_SERIAL_CORE_CONSOLE=y | 516 | CONFIG_SERIAL_CORE_CONSOLE=y |
505 | CONFIG_UNIX98_PTYS=y | 517 | CONFIG_UNIX98_PTYS=y |
518 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
506 | CONFIG_LEGACY_PTYS=y | 519 | CONFIG_LEGACY_PTYS=y |
507 | CONFIG_LEGACY_PTY_COUNT=256 | 520 | CONFIG_LEGACY_PTY_COUNT=256 |
508 | # CONFIG_IPMI_HANDLER is not set | 521 | # CONFIG_IPMI_HANDLER is not set |
@@ -530,11 +543,11 @@ CONFIG_HWMON=y | |||
530 | # CONFIG_THERMAL is not set | 543 | # CONFIG_THERMAL is not set |
531 | # CONFIG_THERMAL_HWMON is not set | 544 | # CONFIG_THERMAL_HWMON is not set |
532 | # CONFIG_WATCHDOG is not set | 545 | # CONFIG_WATCHDOG is not set |
546 | CONFIG_SSB_POSSIBLE=y | ||
533 | 547 | ||
534 | # | 548 | # |
535 | # Sonics Silicon Backplane | 549 | # Sonics Silicon Backplane |
536 | # | 550 | # |
537 | CONFIG_SSB_POSSIBLE=y | ||
538 | # CONFIG_SSB is not set | 551 | # CONFIG_SSB is not set |
539 | 552 | ||
540 | # | 553 | # |
@@ -544,7 +557,7 @@ CONFIG_SSB_POSSIBLE=y | |||
544 | # CONFIG_MFD_SM501 is not set | 557 | # CONFIG_MFD_SM501 is not set |
545 | # CONFIG_HTC_PASIC3 is not set | 558 | # CONFIG_HTC_PASIC3 is not set |
546 | # CONFIG_MFD_TMIO is not set | 559 | # CONFIG_MFD_TMIO is not set |
547 | # CONFIG_MFD_WM8400 is not set | 560 | # CONFIG_REGULATOR is not set |
548 | 561 | ||
549 | # | 562 | # |
550 | # Multimedia devices | 563 | # Multimedia devices |
@@ -588,7 +601,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
588 | # | 601 | # |
589 | 602 | ||
590 | # | 603 | # |
591 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 604 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
592 | # | 605 | # |
593 | # CONFIG_USB_GADGET is not set | 606 | # CONFIG_USB_GADGET is not set |
594 | # CONFIG_MMC is not set | 607 | # CONFIG_MMC is not set |
@@ -656,10 +669,7 @@ CONFIG_TMPFS=y | |||
656 | CONFIG_HUGETLBFS=y | 669 | CONFIG_HUGETLBFS=y |
657 | CONFIG_HUGETLB_PAGE=y | 670 | CONFIG_HUGETLB_PAGE=y |
658 | # CONFIG_CONFIGFS_FS is not set | 671 | # CONFIG_CONFIGFS_FS is not set |
659 | 672 | CONFIG_MISC_FILESYSTEMS=y | |
660 | # | ||
661 | # Miscellaneous filesystems | ||
662 | # | ||
663 | # CONFIG_ADFS_FS is not set | 673 | # CONFIG_ADFS_FS is not set |
664 | # CONFIG_AFFS_FS is not set | 674 | # CONFIG_AFFS_FS is not set |
665 | # CONFIG_HFS_FS is not set | 675 | # CONFIG_HFS_FS is not set |
@@ -761,13 +771,19 @@ CONFIG_FRAME_WARN=1024 | |||
761 | # CONFIG_DEBUG_MEMORY_INIT is not set | 771 | # CONFIG_DEBUG_MEMORY_INIT is not set |
762 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 772 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
763 | # CONFIG_LATENCYTOP is not set | 773 | # CONFIG_LATENCYTOP is not set |
764 | CONFIG_NOP_TRACER=y | 774 | CONFIG_HAVE_FUNCTION_TRACER=y |
765 | CONFIG_HAVE_FTRACE=y | 775 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
776 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
777 | |||
778 | # | ||
779 | # Tracers | ||
780 | # | ||
766 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 781 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
767 | # CONFIG_SAMPLES is not set | 782 | # CONFIG_SAMPLES is not set |
783 | CONFIG_HAVE_ARCH_KGDB=y | ||
768 | # CONFIG_SH_STANDARD_BIOS is not set | 784 | # CONFIG_SH_STANDARD_BIOS is not set |
769 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 785 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
770 | # CONFIG_SH_KGDB is not set | 786 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
771 | 787 | ||
772 | # | 788 | # |
773 | # Security options | 789 | # Security options |
@@ -783,11 +799,15 @@ CONFIG_CRYPTO=y | |||
783 | # | 799 | # |
784 | # CONFIG_CRYPTO_FIPS is not set | 800 | # CONFIG_CRYPTO_FIPS is not set |
785 | CONFIG_CRYPTO_ALGAPI=y | 801 | CONFIG_CRYPTO_ALGAPI=y |
786 | CONFIG_CRYPTO_AEAD=y | 802 | CONFIG_CRYPTO_ALGAPI2=y |
803 | CONFIG_CRYPTO_AEAD2=y | ||
787 | CONFIG_CRYPTO_BLKCIPHER=y | 804 | CONFIG_CRYPTO_BLKCIPHER=y |
805 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
788 | CONFIG_CRYPTO_HASH=y | 806 | CONFIG_CRYPTO_HASH=y |
789 | CONFIG_CRYPTO_RNG=y | 807 | CONFIG_CRYPTO_HASH2=y |
808 | CONFIG_CRYPTO_RNG2=y | ||
790 | CONFIG_CRYPTO_MANAGER=y | 809 | CONFIG_CRYPTO_MANAGER=y |
810 | CONFIG_CRYPTO_MANAGER2=y | ||
791 | # CONFIG_CRYPTO_GF128MUL is not set | 811 | # CONFIG_CRYPTO_GF128MUL is not set |
792 | # CONFIG_CRYPTO_NULL is not set | 812 | # CONFIG_CRYPTO_NULL is not set |
793 | # CONFIG_CRYPTO_CRYPTD is not set | 813 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -869,6 +889,7 @@ CONFIG_CRYPTO_HW=y | |||
869 | # Library routines | 889 | # Library routines |
870 | # | 890 | # |
871 | CONFIG_BITREVERSE=y | 891 | CONFIG_BITREVERSE=y |
892 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
872 | # CONFIG_CRC_CCITT is not set | 893 | # CONFIG_CRC_CCITT is not set |
873 | # CONFIG_CRC16 is not set | 894 | # CONFIG_CRC16 is not set |
874 | # CONFIG_CRC_T10DIF is not set | 895 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/migor_defconfig b/arch/sh/configs/migor_defconfig index 30cac42f25e7..7758263514bc 100644 --- a/arch/sh/configs/migor_defconfig +++ b/arch/sh/configs/migor_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.28-rc2 | 3 | # Linux kernel version: 2.6.28 |
4 | # Fri Oct 31 15:58:06 2008 | 4 | # Fri Jan 9 17:09:35 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | CONFIG_GENERIC_GPIO=y | 16 | CONFIG_GENERIC_GPIO=y |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_NUMA=y | 21 | CONFIG_SYS_SUPPORTS_NUMA=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -77,6 +79,7 @@ CONFIG_SLAB=y | |||
77 | # CONFIG_SLUB is not set | 79 | # CONFIG_SLUB is not set |
78 | # CONFIG_SLOB is not set | 80 | # CONFIG_SLOB is not set |
79 | CONFIG_PROFILING=y | 81 | CONFIG_PROFILING=y |
82 | CONFIG_TRACEPOINTS=y | ||
80 | # CONFIG_MARKERS is not set | 83 | # CONFIG_MARKERS is not set |
81 | CONFIG_OPROFILE=y | 84 | CONFIG_OPROFILE=y |
82 | CONFIG_HAVE_OPROFILE=y | 85 | CONFIG_HAVE_OPROFILE=y |
@@ -89,18 +92,15 @@ CONFIG_HAVE_CLK=y | |||
89 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 92 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
90 | CONFIG_SLABINFO=y | 93 | CONFIG_SLABINFO=y |
91 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
92 | # CONFIG_TINY_SHMEM is not set | ||
93 | CONFIG_BASE_SMALL=0 | 95 | CONFIG_BASE_SMALL=0 |
94 | CONFIG_MODULES=y | 96 | CONFIG_MODULES=y |
95 | # CONFIG_MODULE_FORCE_LOAD is not set | 97 | # CONFIG_MODULE_FORCE_LOAD is not set |
96 | # CONFIG_MODULE_UNLOAD is not set | 98 | # CONFIG_MODULE_UNLOAD is not set |
97 | # CONFIG_MODVERSIONS is not set | 99 | # CONFIG_MODVERSIONS is not set |
98 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 100 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
99 | CONFIG_KMOD=y | ||
100 | CONFIG_BLOCK=y | 101 | CONFIG_BLOCK=y |
101 | # CONFIG_LBD is not set | 102 | # CONFIG_LBD is not set |
102 | # CONFIG_BLK_DEV_IO_TRACE is not set | 103 | # CONFIG_BLK_DEV_IO_TRACE is not set |
103 | # CONFIG_LSF is not set | ||
104 | # CONFIG_BLK_DEV_BSG is not set | 104 | # CONFIG_BLK_DEV_BSG is not set |
105 | # CONFIG_BLK_DEV_INTEGRITY is not set | 105 | # CONFIG_BLK_DEV_INTEGRITY is not set |
106 | 106 | ||
@@ -117,6 +117,10 @@ CONFIG_DEFAULT_AS=y | |||
117 | # CONFIG_DEFAULT_NOOP is not set | 117 | # CONFIG_DEFAULT_NOOP is not set |
118 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 118 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
119 | CONFIG_CLASSIC_RCU=y | 119 | CONFIG_CLASSIC_RCU=y |
120 | # CONFIG_TREE_RCU is not set | ||
121 | # CONFIG_PREEMPT_RCU is not set | ||
122 | # CONFIG_TREE_RCU_TRACE is not set | ||
123 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
120 | # CONFIG_FREEZER is not set | 124 | # CONFIG_FREEZER is not set |
121 | 125 | ||
122 | # | 126 | # |
@@ -127,6 +131,7 @@ CONFIG_CPU_SH4A=y | |||
127 | CONFIG_CPU_SH4AL_DSP=y | 131 | CONFIG_CPU_SH4AL_DSP=y |
128 | CONFIG_CPU_SHX2=y | 132 | CONFIG_CPU_SHX2=y |
129 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 133 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
134 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
130 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 135 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 136 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
132 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 137 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -196,7 +201,6 @@ CONFIG_SPARSEMEM_STATIC=y | |||
196 | # CONFIG_MEMORY_HOTPLUG is not set | 201 | # CONFIG_MEMORY_HOTPLUG is not set |
197 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 202 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
198 | # CONFIG_MIGRATION is not set | 203 | # CONFIG_MIGRATION is not set |
199 | # CONFIG_RESOURCES_64BIT is not set | ||
200 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 204 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
201 | CONFIG_ZONE_DMA_FLAG=0 | 205 | CONFIG_ZONE_DMA_FLAG=0 |
202 | CONFIG_NR_QUICK=2 | 206 | CONFIG_NR_QUICK=2 |
@@ -299,11 +303,18 @@ CONFIG_BINFMT_ELF=y | |||
299 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 303 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
300 | # CONFIG_HAVE_AOUT is not set | 304 | # CONFIG_HAVE_AOUT is not set |
301 | # CONFIG_BINFMT_MISC is not set | 305 | # CONFIG_BINFMT_MISC is not set |
306 | |||
307 | # | ||
308 | # Power management options (EXPERIMENTAL) | ||
309 | # | ||
310 | # CONFIG_PM is not set | ||
311 | # CONFIG_CPU_IDLE is not set | ||
302 | CONFIG_NET=y | 312 | CONFIG_NET=y |
303 | 313 | ||
304 | # | 314 | # |
305 | # Networking options | 315 | # Networking options |
306 | # | 316 | # |
317 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
307 | CONFIG_PACKET=y | 318 | CONFIG_PACKET=y |
308 | # CONFIG_PACKET_MMAP is not set | 319 | # CONFIG_PACKET_MMAP is not set |
309 | CONFIG_UNIX=y | 320 | CONFIG_UNIX=y |
@@ -359,6 +370,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
359 | # CONFIG_ECONET is not set | 370 | # CONFIG_ECONET is not set |
360 | # CONFIG_WAN_ROUTER is not set | 371 | # CONFIG_WAN_ROUTER is not set |
361 | # CONFIG_NET_SCHED is not set | 372 | # CONFIG_NET_SCHED is not set |
373 | # CONFIG_DCB is not set | ||
362 | 374 | ||
363 | # | 375 | # |
364 | # Network testing | 376 | # Network testing |
@@ -375,8 +387,8 @@ CONFIG_WIRELESS=y | |||
375 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 387 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
376 | CONFIG_WIRELESS_EXT=y | 388 | CONFIG_WIRELESS_EXT=y |
377 | CONFIG_WIRELESS_EXT_SYSFS=y | 389 | CONFIG_WIRELESS_EXT_SYSFS=y |
390 | # CONFIG_LIB80211 is not set | ||
378 | # CONFIG_MAC80211 is not set | 391 | # CONFIG_MAC80211 is not set |
379 | # CONFIG_IEEE80211 is not set | ||
380 | # CONFIG_RFKILL is not set | 392 | # CONFIG_RFKILL is not set |
381 | # CONFIG_NET_9P is not set | 393 | # CONFIG_NET_9P is not set |
382 | 394 | ||
@@ -493,7 +505,9 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
493 | # CONFIG_BLK_DEV_HD is not set | 505 | # CONFIG_BLK_DEV_HD is not set |
494 | CONFIG_MISC_DEVICES=y | 506 | CONFIG_MISC_DEVICES=y |
495 | # CONFIG_EEPROM_93CX6 is not set | 507 | # CONFIG_EEPROM_93CX6 is not set |
508 | # CONFIG_ICS932S401 is not set | ||
496 | # CONFIG_ENCLOSURE_SERVICES is not set | 509 | # CONFIG_ENCLOSURE_SERVICES is not set |
510 | # CONFIG_C2PORT is not set | ||
497 | CONFIG_HAVE_IDE=y | 511 | CONFIG_HAVE_IDE=y |
498 | # CONFIG_IDE is not set | 512 | # CONFIG_IDE is not set |
499 | 513 | ||
@@ -536,6 +550,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
536 | # CONFIG_SCSI_SRP_ATTRS is not set | 550 | # CONFIG_SCSI_SRP_ATTRS is not set |
537 | CONFIG_SCSI_LOWLEVEL=y | 551 | CONFIG_SCSI_LOWLEVEL=y |
538 | # CONFIG_ISCSI_TCP is not set | 552 | # CONFIG_ISCSI_TCP is not set |
553 | # CONFIG_LIBFC is not set | ||
539 | # CONFIG_SCSI_DEBUG is not set | 554 | # CONFIG_SCSI_DEBUG is not set |
540 | # CONFIG_SCSI_DH is not set | 555 | # CONFIG_SCSI_DH is not set |
541 | # CONFIG_ATA is not set | 556 | # CONFIG_ATA is not set |
@@ -554,6 +569,7 @@ CONFIG_MII=y | |||
554 | # CONFIG_STNIC is not set | 569 | # CONFIG_STNIC is not set |
555 | CONFIG_SMC91X=y | 570 | CONFIG_SMC91X=y |
556 | # CONFIG_SMC911X is not set | 571 | # CONFIG_SMC911X is not set |
572 | # CONFIG_SMSC911X is not set | ||
557 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 573 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
558 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 574 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
559 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 575 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -644,6 +660,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
644 | CONFIG_SERIAL_CORE=y | 660 | CONFIG_SERIAL_CORE=y |
645 | CONFIG_SERIAL_CORE_CONSOLE=y | 661 | CONFIG_SERIAL_CORE_CONSOLE=y |
646 | CONFIG_UNIX98_PTYS=y | 662 | CONFIG_UNIX98_PTYS=y |
663 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
647 | CONFIG_LEGACY_PTYS=y | 664 | CONFIG_LEGACY_PTYS=y |
648 | CONFIG_LEGACY_PTY_COUNT=256 | 665 | CONFIG_LEGACY_PTY_COUNT=256 |
649 | # CONFIG_IPMI_HANDLER is not set | 666 | # CONFIG_IPMI_HANDLER is not set |
@@ -684,8 +701,8 @@ CONFIG_I2C_SH_MOBILE=y | |||
684 | # Miscellaneous I2C Chip support | 701 | # Miscellaneous I2C Chip support |
685 | # | 702 | # |
686 | # CONFIG_DS1682 is not set | 703 | # CONFIG_DS1682 is not set |
687 | # CONFIG_AT24 is not set | 704 | # CONFIG_EEPROM_AT24 is not set |
688 | # CONFIG_SENSORS_EEPROM is not set | 705 | # CONFIG_EEPROM_LEGACY is not set |
689 | # CONFIG_SENSORS_PCF8574 is not set | 706 | # CONFIG_SENSORS_PCF8574 is not set |
690 | # CONFIG_PCF8575 is not set | 707 | # CONFIG_PCF8575 is not set |
691 | # CONFIG_SENSORS_PCA9539 is not set | 708 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -697,17 +714,39 @@ CONFIG_I2C_SH_MOBILE=y | |||
697 | # CONFIG_I2C_DEBUG_BUS is not set | 714 | # CONFIG_I2C_DEBUG_BUS is not set |
698 | # CONFIG_I2C_DEBUG_CHIP is not set | 715 | # CONFIG_I2C_DEBUG_CHIP is not set |
699 | # CONFIG_SPI is not set | 716 | # CONFIG_SPI is not set |
717 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
718 | CONFIG_GPIOLIB=y | ||
719 | # CONFIG_GPIO_SYSFS is not set | ||
720 | |||
721 | # | ||
722 | # Memory mapped GPIO expanders: | ||
723 | # | ||
724 | |||
725 | # | ||
726 | # I2C GPIO expanders: | ||
727 | # | ||
728 | # CONFIG_GPIO_MAX732X is not set | ||
729 | # CONFIG_GPIO_PCA953X is not set | ||
730 | # CONFIG_GPIO_PCF857X is not set | ||
731 | |||
732 | # | ||
733 | # PCI GPIO expanders: | ||
734 | # | ||
735 | |||
736 | # | ||
737 | # SPI GPIO expanders: | ||
738 | # | ||
700 | # CONFIG_W1 is not set | 739 | # CONFIG_W1 is not set |
701 | # CONFIG_POWER_SUPPLY is not set | 740 | # CONFIG_POWER_SUPPLY is not set |
702 | # CONFIG_HWMON is not set | 741 | # CONFIG_HWMON is not set |
703 | # CONFIG_THERMAL is not set | 742 | # CONFIG_THERMAL is not set |
704 | # CONFIG_THERMAL_HWMON is not set | 743 | # CONFIG_THERMAL_HWMON is not set |
705 | # CONFIG_WATCHDOG is not set | 744 | # CONFIG_WATCHDOG is not set |
745 | CONFIG_SSB_POSSIBLE=y | ||
706 | 746 | ||
707 | # | 747 | # |
708 | # Sonics Silicon Backplane | 748 | # Sonics Silicon Backplane |
709 | # | 749 | # |
710 | CONFIG_SSB_POSSIBLE=y | ||
711 | # CONFIG_SSB is not set | 750 | # CONFIG_SSB is not set |
712 | 751 | ||
713 | # | 752 | # |
@@ -716,10 +755,13 @@ CONFIG_SSB_POSSIBLE=y | |||
716 | # CONFIG_MFD_CORE is not set | 755 | # CONFIG_MFD_CORE is not set |
717 | # CONFIG_MFD_SM501 is not set | 756 | # CONFIG_MFD_SM501 is not set |
718 | # CONFIG_HTC_PASIC3 is not set | 757 | # CONFIG_HTC_PASIC3 is not set |
758 | # CONFIG_TPS65010 is not set | ||
759 | # CONFIG_TWL4030_CORE is not set | ||
719 | # CONFIG_MFD_TMIO is not set | 760 | # CONFIG_MFD_TMIO is not set |
720 | # CONFIG_PMIC_DA903X is not set | 761 | # CONFIG_PMIC_DA903X is not set |
721 | # CONFIG_MFD_WM8400 is not set | 762 | # CONFIG_MFD_WM8400 is not set |
722 | # CONFIG_MFD_WM8350_I2C is not set | 763 | # CONFIG_MFD_WM8350_I2C is not set |
764 | # CONFIG_REGULATOR is not set | ||
723 | 765 | ||
724 | # | 766 | # |
725 | # Multimedia devices | 767 | # Multimedia devices |
@@ -762,8 +804,11 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | |||
762 | CONFIG_SOC_CAMERA=y | 804 | CONFIG_SOC_CAMERA=y |
763 | # CONFIG_SOC_CAMERA_MT9M001 is not set | 805 | # CONFIG_SOC_CAMERA_MT9M001 is not set |
764 | # CONFIG_SOC_CAMERA_MT9M111 is not set | 806 | # CONFIG_SOC_CAMERA_MT9M111 is not set |
807 | # CONFIG_SOC_CAMERA_MT9T031 is not set | ||
765 | # CONFIG_SOC_CAMERA_MT9V022 is not set | 808 | # CONFIG_SOC_CAMERA_MT9V022 is not set |
809 | # CONFIG_SOC_CAMERA_TW9910 is not set | ||
766 | CONFIG_SOC_CAMERA_PLATFORM=y | 810 | CONFIG_SOC_CAMERA_PLATFORM=y |
811 | # CONFIG_SOC_CAMERA_OV772X is not set | ||
767 | CONFIG_VIDEO_SH_MOBILE_CEU=y | 812 | CONFIG_VIDEO_SH_MOBILE_CEU=y |
768 | # CONFIG_RADIO_ADAPTERS is not set | 813 | # CONFIG_RADIO_ADAPTERS is not set |
769 | # CONFIG_DAB is not set | 814 | # CONFIG_DAB is not set |
@@ -806,7 +851,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
806 | # CONFIG_USB_GADGET_MUSB_HDRC is not set | 851 | # CONFIG_USB_GADGET_MUSB_HDRC is not set |
807 | 852 | ||
808 | # | 853 | # |
809 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 854 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
810 | # | 855 | # |
811 | CONFIG_USB_GADGET=y | 856 | CONFIG_USB_GADGET=y |
812 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | 857 | # CONFIG_USB_GADGET_DEBUG_FILES is not set |
@@ -872,6 +917,7 @@ CONFIG_RTC_DRV_RS5C372=y | |||
872 | # CONFIG_RTC_DRV_M41T80 is not set | 917 | # CONFIG_RTC_DRV_M41T80 is not set |
873 | # CONFIG_RTC_DRV_S35390A is not set | 918 | # CONFIG_RTC_DRV_S35390A is not set |
874 | # CONFIG_RTC_DRV_FM3130 is not set | 919 | # CONFIG_RTC_DRV_FM3130 is not set |
920 | # CONFIG_RTC_DRV_RX8581 is not set | ||
875 | 921 | ||
876 | # | 922 | # |
877 | # SPI RTC drivers | 923 | # SPI RTC drivers |
@@ -948,10 +994,7 @@ CONFIG_TMPFS=y | |||
948 | # CONFIG_HUGETLBFS is not set | 994 | # CONFIG_HUGETLBFS is not set |
949 | # CONFIG_HUGETLB_PAGE is not set | 995 | # CONFIG_HUGETLB_PAGE is not set |
950 | # CONFIG_CONFIGFS_FS is not set | 996 | # CONFIG_CONFIGFS_FS is not set |
951 | 997 | CONFIG_MISC_FILESYSTEMS=y | |
952 | # | ||
953 | # Miscellaneous filesystems | ||
954 | # | ||
955 | # CONFIG_ADFS_FS is not set | 998 | # CONFIG_ADFS_FS is not set |
956 | # CONFIG_AFFS_FS is not set | 999 | # CONFIG_AFFS_FS is not set |
957 | # CONFIG_HFS_FS is not set | 1000 | # CONFIG_HFS_FS is not set |
@@ -1008,19 +1051,29 @@ CONFIG_FRAME_WARN=1024 | |||
1008 | CONFIG_DEBUG_FS=y | 1051 | CONFIG_DEBUG_FS=y |
1009 | # CONFIG_HEADERS_CHECK is not set | 1052 | # CONFIG_HEADERS_CHECK is not set |
1010 | # CONFIG_DEBUG_KERNEL is not set | 1053 | # CONFIG_DEBUG_KERNEL is not set |
1054 | CONFIG_STACKTRACE=y | ||
1011 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1055 | # CONFIG_DEBUG_BUGVERBOSE is not set |
1012 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1056 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1013 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1057 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1014 | # CONFIG_LATENCYTOP is not set | 1058 | # CONFIG_LATENCYTOP is not set |
1015 | CONFIG_NOP_TRACER=y | 1059 | CONFIG_NOP_TRACER=y |
1016 | CONFIG_HAVE_FTRACE=y | 1060 | CONFIG_HAVE_FUNCTION_TRACER=y |
1061 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
1062 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1063 | CONFIG_RING_BUFFER=y | ||
1064 | CONFIG_TRACING=y | ||
1065 | |||
1066 | # | ||
1067 | # Tracers | ||
1068 | # | ||
1017 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1069 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1018 | # CONFIG_SAMPLES is not set | 1070 | # CONFIG_SAMPLES is not set |
1071 | CONFIG_HAVE_ARCH_KGDB=y | ||
1019 | # CONFIG_SH_STANDARD_BIOS is not set | 1072 | # CONFIG_SH_STANDARD_BIOS is not set |
1020 | CONFIG_EARLY_SCIF_CONSOLE=y | 1073 | CONFIG_EARLY_SCIF_CONSOLE=y |
1021 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000 | 1074 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000 |
1022 | CONFIG_EARLY_PRINTK=y | 1075 | CONFIG_EARLY_PRINTK=y |
1023 | # CONFIG_SH_KGDB is not set | 1076 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1024 | 1077 | ||
1025 | # | 1078 | # |
1026 | # Security options | 1079 | # Security options |
@@ -1035,12 +1088,13 @@ CONFIG_CRYPTO=y | |||
1035 | # Crypto core or helper | 1088 | # Crypto core or helper |
1036 | # | 1089 | # |
1037 | # CONFIG_CRYPTO_FIPS is not set | 1090 | # CONFIG_CRYPTO_FIPS is not set |
1038 | CONFIG_CRYPTO_ALGAPI=y | 1091 | CONFIG_CRYPTO_ALGAPI2=y |
1039 | CONFIG_CRYPTO_AEAD=y | 1092 | CONFIG_CRYPTO_AEAD2=y |
1040 | CONFIG_CRYPTO_BLKCIPHER=y | 1093 | CONFIG_CRYPTO_BLKCIPHER2=y |
1041 | CONFIG_CRYPTO_HASH=y | 1094 | CONFIG_CRYPTO_HASH2=y |
1042 | CONFIG_CRYPTO_RNG=y | 1095 | CONFIG_CRYPTO_RNG2=y |
1043 | CONFIG_CRYPTO_MANAGER=y | 1096 | CONFIG_CRYPTO_MANAGER=y |
1097 | CONFIG_CRYPTO_MANAGER2=y | ||
1044 | # CONFIG_CRYPTO_GF128MUL is not set | 1098 | # CONFIG_CRYPTO_GF128MUL is not set |
1045 | # CONFIG_CRYPTO_NULL is not set | 1099 | # CONFIG_CRYPTO_NULL is not set |
1046 | # CONFIG_CRYPTO_CRYPTD is not set | 1100 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1123,6 +1177,7 @@ CONFIG_CRYPTO_MANAGER=y | |||
1123 | # Library routines | 1177 | # Library routines |
1124 | # | 1178 | # |
1125 | CONFIG_BITREVERSE=y | 1179 | CONFIG_BITREVERSE=y |
1180 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1126 | # CONFIG_CRC_CCITT is not set | 1181 | # CONFIG_CRC_CCITT is not set |
1127 | # CONFIG_CRC16 is not set | 1182 | # CONFIG_CRC16 is not set |
1128 | CONFIG_CRC_T10DIF=y | 1183 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/r7780mp_defconfig b/arch/sh/configs/r7780mp_defconfig index 2e65149e9502..65b01a9e5934 100644 --- a/arch/sh/configs/r7780mp_defconfig +++ b/arch/sh/configs/r7780mp_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 20:03:46 2008 | 4 | # Fri Jan 9 17:10:19 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -85,6 +87,7 @@ CONFIG_SLAB=y | |||
85 | # CONFIG_SLUB is not set | 87 | # CONFIG_SLUB is not set |
86 | # CONFIG_SLOB is not set | 88 | # CONFIG_SLOB is not set |
87 | CONFIG_PROFILING=y | 89 | CONFIG_PROFILING=y |
90 | CONFIG_TRACEPOINTS=y | ||
88 | # CONFIG_MARKERS is not set | 91 | # CONFIG_MARKERS is not set |
89 | CONFIG_OPROFILE=m | 92 | CONFIG_OPROFILE=m |
90 | CONFIG_HAVE_OPROFILE=y | 93 | CONFIG_HAVE_OPROFILE=y |
@@ -96,7 +99,6 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y | |||
96 | CONFIG_HAVE_CLK=y | 99 | CONFIG_HAVE_CLK=y |
97 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 100 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
98 | CONFIG_SLABINFO=y | 101 | CONFIG_SLABINFO=y |
99 | # CONFIG_TINY_SHMEM is not set | ||
100 | CONFIG_BASE_SMALL=0 | 102 | CONFIG_BASE_SMALL=0 |
101 | CONFIG_MODULES=y | 103 | CONFIG_MODULES=y |
102 | # CONFIG_MODULE_FORCE_LOAD is not set | 104 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -104,11 +106,9 @@ CONFIG_MODULE_UNLOAD=y | |||
104 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 106 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
105 | # CONFIG_MODVERSIONS is not set | 107 | # CONFIG_MODVERSIONS is not set |
106 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 108 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
107 | CONFIG_KMOD=y | ||
108 | CONFIG_BLOCK=y | 109 | CONFIG_BLOCK=y |
109 | # CONFIG_LBD is not set | 110 | # CONFIG_LBD is not set |
110 | # CONFIG_BLK_DEV_IO_TRACE is not set | 111 | # CONFIG_BLK_DEV_IO_TRACE is not set |
111 | # CONFIG_LSF is not set | ||
112 | # CONFIG_BLK_DEV_BSG is not set | 112 | # CONFIG_BLK_DEV_BSG is not set |
113 | # CONFIG_BLK_DEV_INTEGRITY is not set | 113 | # CONFIG_BLK_DEV_INTEGRITY is not set |
114 | 114 | ||
@@ -125,6 +125,10 @@ CONFIG_IOSCHED_NOOP=y | |||
125 | CONFIG_DEFAULT_NOOP=y | 125 | CONFIG_DEFAULT_NOOP=y |
126 | CONFIG_DEFAULT_IOSCHED="noop" | 126 | CONFIG_DEFAULT_IOSCHED="noop" |
127 | CONFIG_CLASSIC_RCU=y | 127 | CONFIG_CLASSIC_RCU=y |
128 | # CONFIG_TREE_RCU is not set | ||
129 | # CONFIG_PREEMPT_RCU is not set | ||
130 | # CONFIG_TREE_RCU_TRACE is not set | ||
131 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
128 | # CONFIG_FREEZER is not set | 132 | # CONFIG_FREEZER is not set |
129 | 133 | ||
130 | # | 134 | # |
@@ -133,6 +137,7 @@ CONFIG_CLASSIC_RCU=y | |||
133 | CONFIG_CPU_SH4=y | 137 | CONFIG_CPU_SH4=y |
134 | CONFIG_CPU_SH4A=y | 138 | CONFIG_CPU_SH4A=y |
135 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 139 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
140 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
136 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 141 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
137 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 142 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
138 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 143 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -203,7 +208,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
203 | CONFIG_SPARSEMEM_STATIC=y | 208 | CONFIG_SPARSEMEM_STATIC=y |
204 | CONFIG_PAGEFLAGS_EXTENDED=y | 209 | CONFIG_PAGEFLAGS_EXTENDED=y |
205 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 210 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
206 | # CONFIG_RESOURCES_64BIT is not set | ||
207 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 211 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
208 | CONFIG_ZONE_DMA_FLAG=0 | 212 | CONFIG_ZONE_DMA_FLAG=0 |
209 | CONFIG_NR_QUICK=2 | 213 | CONFIG_NR_QUICK=2 |
@@ -284,7 +288,6 @@ CONFIG_KEXEC=y | |||
284 | # CONFIG_PREEMPT_NONE is not set | 288 | # CONFIG_PREEMPT_NONE is not set |
285 | # CONFIG_PREEMPT_VOLUNTARY is not set | 289 | # CONFIG_PREEMPT_VOLUNTARY is not set |
286 | CONFIG_PREEMPT=y | 290 | CONFIG_PREEMPT=y |
287 | # CONFIG_PREEMPT_RCU is not set | ||
288 | CONFIG_GUSA=y | 291 | CONFIG_GUSA=y |
289 | 292 | ||
290 | # | 293 | # |
@@ -302,6 +305,7 @@ CONFIG_PCI=y | |||
302 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 305 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
303 | CONFIG_PCI_AUTO=y | 306 | CONFIG_PCI_AUTO=y |
304 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 307 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
308 | # CONFIG_PCIEPORTBUS is not set | ||
305 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 309 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
306 | CONFIG_PCI_LEGACY=y | 310 | CONFIG_PCI_LEGACY=y |
307 | # CONFIG_PCI_DEBUG is not set | 311 | # CONFIG_PCI_DEBUG is not set |
@@ -315,11 +319,18 @@ CONFIG_BINFMT_ELF=y | |||
315 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 319 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
316 | # CONFIG_HAVE_AOUT is not set | 320 | # CONFIG_HAVE_AOUT is not set |
317 | # CONFIG_BINFMT_MISC is not set | 321 | # CONFIG_BINFMT_MISC is not set |
322 | |||
323 | # | ||
324 | # Power management options (EXPERIMENTAL) | ||
325 | # | ||
326 | # CONFIG_PM is not set | ||
327 | # CONFIG_CPU_IDLE is not set | ||
318 | CONFIG_NET=y | 328 | CONFIG_NET=y |
319 | 329 | ||
320 | # | 330 | # |
321 | # Networking options | 331 | # Networking options |
322 | # | 332 | # |
333 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
323 | CONFIG_PACKET=y | 334 | CONFIG_PACKET=y |
324 | # CONFIG_PACKET_MMAP is not set | 335 | # CONFIG_PACKET_MMAP is not set |
325 | CONFIG_UNIX=y | 336 | CONFIG_UNIX=y |
@@ -382,6 +393,7 @@ CONFIG_LLC=m | |||
382 | # CONFIG_ECONET is not set | 393 | # CONFIG_ECONET is not set |
383 | # CONFIG_WAN_ROUTER is not set | 394 | # CONFIG_WAN_ROUTER is not set |
384 | # CONFIG_NET_SCHED is not set | 395 | # CONFIG_NET_SCHED is not set |
396 | # CONFIG_DCB is not set | ||
385 | 397 | ||
386 | # | 398 | # |
387 | # Network testing | 399 | # Network testing |
@@ -398,8 +410,8 @@ CONFIG_WIRELESS=y | |||
398 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 410 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
399 | CONFIG_WIRELESS_EXT=y | 411 | CONFIG_WIRELESS_EXT=y |
400 | CONFIG_WIRELESS_EXT_SYSFS=y | 412 | CONFIG_WIRELESS_EXT_SYSFS=y |
413 | # CONFIG_LIB80211 is not set | ||
401 | # CONFIG_MAC80211 is not set | 414 | # CONFIG_MAC80211 is not set |
402 | # CONFIG_IEEE80211 is not set | ||
403 | # CONFIG_RFKILL is not set | 415 | # CONFIG_RFKILL is not set |
404 | # CONFIG_NET_9P is not set | 416 | # CONFIG_NET_9P is not set |
405 | 417 | ||
@@ -442,8 +454,10 @@ CONFIG_MISC_DEVICES=y | |||
442 | CONFIG_EEPROM_93CX6=y | 454 | CONFIG_EEPROM_93CX6=y |
443 | # CONFIG_SGI_IOC4 is not set | 455 | # CONFIG_SGI_IOC4 is not set |
444 | # CONFIG_TIFM_CORE is not set | 456 | # CONFIG_TIFM_CORE is not set |
457 | # CONFIG_ICS932S401 is not set | ||
445 | # CONFIG_ENCLOSURE_SERVICES is not set | 458 | # CONFIG_ENCLOSURE_SERVICES is not set |
446 | # CONFIG_HP_ILO is not set | 459 | # CONFIG_HP_ILO is not set |
460 | # CONFIG_C2PORT is not set | ||
447 | CONFIG_HAVE_IDE=y | 461 | CONFIG_HAVE_IDE=y |
448 | # CONFIG_IDE is not set | 462 | # CONFIG_IDE is not set |
449 | 463 | ||
@@ -486,6 +500,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
486 | # CONFIG_SCSI_SRP_ATTRS is not set | 500 | # CONFIG_SCSI_SRP_ATTRS is not set |
487 | CONFIG_SCSI_LOWLEVEL=y | 501 | CONFIG_SCSI_LOWLEVEL=y |
488 | # CONFIG_ISCSI_TCP is not set | 502 | # CONFIG_ISCSI_TCP is not set |
503 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
489 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 504 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
490 | # CONFIG_SCSI_3W_9XXX is not set | 505 | # CONFIG_SCSI_3W_9XXX is not set |
491 | # CONFIG_SCSI_ACARD is not set | 506 | # CONFIG_SCSI_ACARD is not set |
@@ -499,6 +514,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
499 | # CONFIG_MEGARAID_LEGACY is not set | 514 | # CONFIG_MEGARAID_LEGACY is not set |
500 | # CONFIG_MEGARAID_SAS is not set | 515 | # CONFIG_MEGARAID_SAS is not set |
501 | # CONFIG_SCSI_HPTIOP is not set | 516 | # CONFIG_SCSI_HPTIOP is not set |
517 | # CONFIG_LIBFC is not set | ||
518 | # CONFIG_FCOE is not set | ||
502 | # CONFIG_SCSI_DMX3191D is not set | 519 | # CONFIG_SCSI_DMX3191D is not set |
503 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 520 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
504 | # CONFIG_SCSI_IPS is not set | 521 | # CONFIG_SCSI_IPS is not set |
@@ -611,6 +628,7 @@ CONFIG_AX88796_93CX6=y | |||
611 | # CONFIG_NET_VENDOR_3COM is not set | 628 | # CONFIG_NET_VENDOR_3COM is not set |
612 | # CONFIG_SMC91X is not set | 629 | # CONFIG_SMC91X is not set |
613 | # CONFIG_SMC911X is not set | 630 | # CONFIG_SMC911X is not set |
631 | # CONFIG_SMSC911X is not set | ||
614 | # CONFIG_NET_TULIP is not set | 632 | # CONFIG_NET_TULIP is not set |
615 | # CONFIG_HP100 is not set | 633 | # CONFIG_HP100 is not set |
616 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 634 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -626,7 +644,6 @@ CONFIG_PCNET32=m | |||
626 | # CONFIG_ADAPTEC_STARFIRE is not set | 644 | # CONFIG_ADAPTEC_STARFIRE is not set |
627 | # CONFIG_B44 is not set | 645 | # CONFIG_B44 is not set |
628 | # CONFIG_FORCEDETH is not set | 646 | # CONFIG_FORCEDETH is not set |
629 | # CONFIG_EEPRO100 is not set | ||
630 | # CONFIG_E100 is not set | 647 | # CONFIG_E100 is not set |
631 | # CONFIG_FEALNX is not set | 648 | # CONFIG_FEALNX is not set |
632 | # CONFIG_NATSEMI is not set | 649 | # CONFIG_NATSEMI is not set |
@@ -640,6 +657,7 @@ CONFIG_8139TOO_8129=y | |||
640 | # CONFIG_R6040 is not set | 657 | # CONFIG_R6040 is not set |
641 | # CONFIG_SIS900 is not set | 658 | # CONFIG_SIS900 is not set |
642 | # CONFIG_EPIC100 is not set | 659 | # CONFIG_EPIC100 is not set |
660 | # CONFIG_SMSC9420 is not set | ||
643 | # CONFIG_SUNDANCE is not set | 661 | # CONFIG_SUNDANCE is not set |
644 | # CONFIG_TLAN is not set | 662 | # CONFIG_TLAN is not set |
645 | CONFIG_VIA_RHINE=m | 663 | CONFIG_VIA_RHINE=m |
@@ -669,6 +687,7 @@ CONFIG_R8169=y | |||
669 | # CONFIG_JME is not set | 687 | # CONFIG_JME is not set |
670 | CONFIG_NETDEV_10000=y | 688 | CONFIG_NETDEV_10000=y |
671 | # CONFIG_CHELSIO_T1 is not set | 689 | # CONFIG_CHELSIO_T1 is not set |
690 | CONFIG_CHELSIO_T3_DEPENDS=y | ||
672 | # CONFIG_CHELSIO_T3 is not set | 691 | # CONFIG_CHELSIO_T3 is not set |
673 | # CONFIG_ENIC is not set | 692 | # CONFIG_ENIC is not set |
674 | # CONFIG_IXGBE is not set | 693 | # CONFIG_IXGBE is not set |
@@ -677,6 +696,7 @@ CONFIG_NETDEV_10000=y | |||
677 | # CONFIG_MYRI10GE is not set | 696 | # CONFIG_MYRI10GE is not set |
678 | # CONFIG_NETXEN_NIC is not set | 697 | # CONFIG_NETXEN_NIC is not set |
679 | # CONFIG_NIU is not set | 698 | # CONFIG_NIU is not set |
699 | # CONFIG_MLX4_EN is not set | ||
680 | # CONFIG_MLX4_CORE is not set | 700 | # CONFIG_MLX4_CORE is not set |
681 | # CONFIG_TEHUTI is not set | 701 | # CONFIG_TEHUTI is not set |
682 | # CONFIG_BNX2X is not set | 702 | # CONFIG_BNX2X is not set |
@@ -771,6 +791,7 @@ CONFIG_SERIAL_CORE=y | |||
771 | CONFIG_SERIAL_CORE_CONSOLE=y | 791 | CONFIG_SERIAL_CORE_CONSOLE=y |
772 | # CONFIG_SERIAL_JSM is not set | 792 | # CONFIG_SERIAL_JSM is not set |
773 | CONFIG_UNIX98_PTYS=y | 793 | CONFIG_UNIX98_PTYS=y |
794 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
774 | CONFIG_LEGACY_PTYS=y | 795 | CONFIG_LEGACY_PTYS=y |
775 | CONFIG_LEGACY_PTY_COUNT=256 | 796 | CONFIG_LEGACY_PTY_COUNT=256 |
776 | # CONFIG_IPMI_HANDLER is not set | 797 | # CONFIG_IPMI_HANDLER is not set |
@@ -836,8 +857,8 @@ CONFIG_I2C_HIGHLANDER=y | |||
836 | # Miscellaneous I2C Chip support | 857 | # Miscellaneous I2C Chip support |
837 | # | 858 | # |
838 | # CONFIG_DS1682 is not set | 859 | # CONFIG_DS1682 is not set |
839 | # CONFIG_AT24 is not set | 860 | # CONFIG_EEPROM_AT24 is not set |
840 | # CONFIG_SENSORS_EEPROM is not set | 861 | # CONFIG_EEPROM_LEGACY is not set |
841 | # CONFIG_SENSORS_PCF8574 is not set | 862 | # CONFIG_SENSORS_PCF8574 is not set |
842 | # CONFIG_PCF8575 is not set | 863 | # CONFIG_PCF8575 is not set |
843 | # CONFIG_SENSORS_PCA9539 is not set | 864 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -861,6 +882,7 @@ CONFIG_HWMON=y | |||
861 | # CONFIG_SENSORS_ADM1029 is not set | 882 | # CONFIG_SENSORS_ADM1029 is not set |
862 | # CONFIG_SENSORS_ADM1031 is not set | 883 | # CONFIG_SENSORS_ADM1031 is not set |
863 | # CONFIG_SENSORS_ADM9240 is not set | 884 | # CONFIG_SENSORS_ADM9240 is not set |
885 | # CONFIG_SENSORS_ADT7462 is not set | ||
864 | # CONFIG_SENSORS_ADT7470 is not set | 886 | # CONFIG_SENSORS_ADT7470 is not set |
865 | # CONFIG_SENSORS_ADT7473 is not set | 887 | # CONFIG_SENSORS_ADT7473 is not set |
866 | # CONFIG_SENSORS_ATXP1 is not set | 888 | # CONFIG_SENSORS_ATXP1 is not set |
@@ -909,11 +931,11 @@ CONFIG_HWMON=y | |||
909 | CONFIG_THERMAL=y | 931 | CONFIG_THERMAL=y |
910 | # CONFIG_THERMAL_HWMON is not set | 932 | # CONFIG_THERMAL_HWMON is not set |
911 | # CONFIG_WATCHDOG is not set | 933 | # CONFIG_WATCHDOG is not set |
934 | CONFIG_SSB_POSSIBLE=y | ||
912 | 935 | ||
913 | # | 936 | # |
914 | # Sonics Silicon Backplane | 937 | # Sonics Silicon Backplane |
915 | # | 938 | # |
916 | CONFIG_SSB_POSSIBLE=y | ||
917 | # CONFIG_SSB is not set | 939 | # CONFIG_SSB is not set |
918 | 940 | ||
919 | # | 941 | # |
@@ -922,9 +944,12 @@ CONFIG_SSB_POSSIBLE=y | |||
922 | # CONFIG_MFD_CORE is not set | 944 | # CONFIG_MFD_CORE is not set |
923 | # CONFIG_MFD_SM501 is not set | 945 | # CONFIG_MFD_SM501 is not set |
924 | # CONFIG_HTC_PASIC3 is not set | 946 | # CONFIG_HTC_PASIC3 is not set |
947 | # CONFIG_TWL4030_CORE is not set | ||
925 | # CONFIG_MFD_TMIO is not set | 948 | # CONFIG_MFD_TMIO is not set |
949 | # CONFIG_PMIC_DA903X is not set | ||
926 | # CONFIG_MFD_WM8400 is not set | 950 | # CONFIG_MFD_WM8400 is not set |
927 | # CONFIG_MFD_WM8350_I2C is not set | 951 | # CONFIG_MFD_WM8350_I2C is not set |
952 | # CONFIG_REGULATOR is not set | ||
928 | 953 | ||
929 | # | 954 | # |
930 | # Multimedia devices | 955 | # Multimedia devices |
@@ -982,9 +1007,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
982 | # | 1007 | # |
983 | 1008 | ||
984 | # | 1009 | # |
985 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1010 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
986 | # | 1011 | # |
987 | # CONFIG_USB_GADGET is not set | 1012 | # CONFIG_USB_GADGET is not set |
1013 | # CONFIG_UWB is not set | ||
988 | # CONFIG_MMC is not set | 1014 | # CONFIG_MMC is not set |
989 | # CONFIG_MEMSTICK is not set | 1015 | # CONFIG_MEMSTICK is not set |
990 | # CONFIG_NEW_LEDS is not set | 1016 | # CONFIG_NEW_LEDS is not set |
@@ -1020,6 +1046,7 @@ CONFIG_RTC_DRV_RS5C372=y | |||
1020 | # CONFIG_RTC_DRV_M41T80 is not set | 1046 | # CONFIG_RTC_DRV_M41T80 is not set |
1021 | # CONFIG_RTC_DRV_S35390A is not set | 1047 | # CONFIG_RTC_DRV_S35390A is not set |
1022 | # CONFIG_RTC_DRV_FM3130 is not set | 1048 | # CONFIG_RTC_DRV_FM3130 is not set |
1049 | # CONFIG_RTC_DRV_RX8581 is not set | ||
1023 | 1050 | ||
1024 | # | 1051 | # |
1025 | # SPI RTC drivers | 1052 | # SPI RTC drivers |
@@ -1106,10 +1133,7 @@ CONFIG_TMPFS=y | |||
1106 | CONFIG_HUGETLBFS=y | 1133 | CONFIG_HUGETLBFS=y |
1107 | CONFIG_HUGETLB_PAGE=y | 1134 | CONFIG_HUGETLB_PAGE=y |
1108 | CONFIG_CONFIGFS_FS=m | 1135 | CONFIG_CONFIGFS_FS=m |
1109 | 1136 | CONFIG_MISC_FILESYSTEMS=y | |
1110 | # | ||
1111 | # Miscellaneous filesystems | ||
1112 | # | ||
1113 | # CONFIG_ADFS_FS is not set | 1137 | # CONFIG_ADFS_FS is not set |
1114 | # CONFIG_AFFS_FS is not set | 1138 | # CONFIG_AFFS_FS is not set |
1115 | # CONFIG_HFS_FS is not set | 1139 | # CONFIG_HFS_FS is not set |
@@ -1228,6 +1252,7 @@ CONFIG_SCHED_DEBUG=y | |||
1228 | # CONFIG_LOCK_STAT is not set | 1252 | # CONFIG_LOCK_STAT is not set |
1229 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1253 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1230 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1254 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1255 | CONFIG_STACKTRACE=y | ||
1231 | # CONFIG_DEBUG_KOBJECT is not set | 1256 | # CONFIG_DEBUG_KOBJECT is not set |
1232 | CONFIG_DEBUG_BUGVERBOSE=y | 1257 | CONFIG_DEBUG_BUGVERBOSE=y |
1233 | CONFIG_DEBUG_INFO=y | 1258 | CONFIG_DEBUG_INFO=y |
@@ -1236,6 +1261,7 @@ CONFIG_DEBUG_INFO=y | |||
1236 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1261 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1237 | # CONFIG_DEBUG_LIST is not set | 1262 | # CONFIG_DEBUG_LIST is not set |
1238 | # CONFIG_DEBUG_SG is not set | 1263 | # CONFIG_DEBUG_SG is not set |
1264 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
1239 | # CONFIG_FRAME_POINTER is not set | 1265 | # CONFIG_FRAME_POINTER is not set |
1240 | # CONFIG_RCU_TORTURE_TEST is not set | 1266 | # CONFIG_RCU_TORTURE_TEST is not set |
1241 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1267 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -1244,16 +1270,28 @@ CONFIG_DEBUG_INFO=y | |||
1244 | # CONFIG_FAULT_INJECTION is not set | 1270 | # CONFIG_FAULT_INJECTION is not set |
1245 | # CONFIG_LATENCYTOP is not set | 1271 | # CONFIG_LATENCYTOP is not set |
1246 | CONFIG_NOP_TRACER=y | 1272 | CONFIG_NOP_TRACER=y |
1247 | CONFIG_HAVE_FTRACE=y | 1273 | CONFIG_HAVE_FUNCTION_TRACER=y |
1248 | # CONFIG_FTRACE is not set | 1274 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1275 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1276 | CONFIG_RING_BUFFER=y | ||
1277 | CONFIG_TRACING=y | ||
1278 | |||
1279 | # | ||
1280 | # Tracers | ||
1281 | # | ||
1282 | # CONFIG_FUNCTION_TRACER is not set | ||
1249 | # CONFIG_IRQSOFF_TRACER is not set | 1283 | # CONFIG_IRQSOFF_TRACER is not set |
1250 | # CONFIG_PREEMPT_TRACER is not set | 1284 | # CONFIG_PREEMPT_TRACER is not set |
1251 | # CONFIG_SCHED_TRACER is not set | 1285 | # CONFIG_SCHED_TRACER is not set |
1252 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1286 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
1253 | # CONFIG_BOOT_TRACER is not set | 1287 | # CONFIG_BOOT_TRACER is not set |
1288 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1254 | # CONFIG_STACK_TRACER is not set | 1289 | # CONFIG_STACK_TRACER is not set |
1290 | # CONFIG_FTRACE_STARTUP_TEST is not set | ||
1255 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1291 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1256 | # CONFIG_SAMPLES is not set | 1292 | # CONFIG_SAMPLES is not set |
1293 | CONFIG_HAVE_ARCH_KGDB=y | ||
1294 | # CONFIG_KGDB is not set | ||
1257 | CONFIG_SH_STANDARD_BIOS=y | 1295 | CONFIG_SH_STANDARD_BIOS=y |
1258 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1296 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1259 | CONFIG_EARLY_PRINTK=y | 1297 | CONFIG_EARLY_PRINTK=y |
@@ -1262,7 +1300,9 @@ CONFIG_DEBUG_STACKOVERFLOW=y | |||
1262 | # CONFIG_DEBUG_STACK_USAGE is not set | 1300 | # CONFIG_DEBUG_STACK_USAGE is not set |
1263 | # CONFIG_4KSTACKS is not set | 1301 | # CONFIG_4KSTACKS is not set |
1264 | # CONFIG_IRQSTACKS is not set | 1302 | # CONFIG_IRQSTACKS is not set |
1265 | # CONFIG_SH_KGDB is not set | 1303 | CONFIG_DUMP_CODE=y |
1304 | # CONFIG_SH_NO_BSS_INIT is not set | ||
1305 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
1266 | 1306 | ||
1267 | # | 1307 | # |
1268 | # Security options | 1308 | # Security options |
@@ -1278,11 +1318,15 @@ CONFIG_CRYPTO=y | |||
1278 | # | 1318 | # |
1279 | # CONFIG_CRYPTO_FIPS is not set | 1319 | # CONFIG_CRYPTO_FIPS is not set |
1280 | CONFIG_CRYPTO_ALGAPI=y | 1320 | CONFIG_CRYPTO_ALGAPI=y |
1281 | CONFIG_CRYPTO_AEAD=y | 1321 | CONFIG_CRYPTO_ALGAPI2=y |
1322 | CONFIG_CRYPTO_AEAD2=y | ||
1282 | CONFIG_CRYPTO_BLKCIPHER=y | 1323 | CONFIG_CRYPTO_BLKCIPHER=y |
1324 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1283 | CONFIG_CRYPTO_HASH=y | 1325 | CONFIG_CRYPTO_HASH=y |
1284 | CONFIG_CRYPTO_RNG=y | 1326 | CONFIG_CRYPTO_HASH2=y |
1327 | CONFIG_CRYPTO_RNG2=y | ||
1285 | CONFIG_CRYPTO_MANAGER=y | 1328 | CONFIG_CRYPTO_MANAGER=y |
1329 | CONFIG_CRYPTO_MANAGER2=y | ||
1286 | # CONFIG_CRYPTO_GF128MUL is not set | 1330 | # CONFIG_CRYPTO_GF128MUL is not set |
1287 | # CONFIG_CRYPTO_NULL is not set | 1331 | # CONFIG_CRYPTO_NULL is not set |
1288 | # CONFIG_CRYPTO_CRYPTD is not set | 1332 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1366,6 +1410,7 @@ CONFIG_CRYPTO_HW=y | |||
1366 | # Library routines | 1410 | # Library routines |
1367 | # | 1411 | # |
1368 | CONFIG_BITREVERSE=y | 1412 | CONFIG_BITREVERSE=y |
1413 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1369 | # CONFIG_CRC_CCITT is not set | 1414 | # CONFIG_CRC_CCITT is not set |
1370 | # CONFIG_CRC16 is not set | 1415 | # CONFIG_CRC16 is not set |
1371 | CONFIG_CRC_T10DIF=y | 1416 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/r7785rp_defconfig b/arch/sh/configs/r7785rp_defconfig index 043a8a509e09..8defaa5f13b9 100644 --- a/arch/sh/configs/r7785rp_defconfig +++ b/arch/sh/configs/r7785rp_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 16:25:30 2008 | 4 | # Fri Jan 9 17:14:41 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -13,9 +13,11 @@ CONFIG_GENERIC_HWEIGHT=y | |||
13 | CONFIG_GENERIC_HARDIRQS=y | 13 | CONFIG_GENERIC_HARDIRQS=y |
14 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 14 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
16 | # CONFIG_GENERIC_GPIO is not set | 16 | CONFIG_GENERIC_GPIO=y |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_NUMA=y | 21 | CONFIG_SYS_SUPPORTS_NUMA=y |
20 | CONFIG_SYS_SUPPORTS_PCI=y | 22 | CONFIG_SYS_SUPPORTS_PCI=y |
21 | CONFIG_STACKTRACE_SUPPORT=y | 23 | CONFIG_STACKTRACE_SUPPORT=y |
@@ -63,6 +65,7 @@ CONFIG_UID16=y | |||
63 | # CONFIG_SYSCTL_SYSCALL is not set | 65 | # CONFIG_SYSCTL_SYSCALL is not set |
64 | CONFIG_KALLSYMS=y | 66 | CONFIG_KALLSYMS=y |
65 | CONFIG_KALLSYMS_ALL=y | 67 | CONFIG_KALLSYMS_ALL=y |
68 | CONFIG_KALLSYMS_STRIP_GENERATED=y | ||
66 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 69 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
67 | CONFIG_HOTPLUG=y | 70 | CONFIG_HOTPLUG=y |
68 | CONFIG_PRINTK=y | 71 | CONFIG_PRINTK=y |
@@ -84,6 +87,7 @@ CONFIG_SLAB=y | |||
84 | # CONFIG_SLUB is not set | 87 | # CONFIG_SLUB is not set |
85 | # CONFIG_SLOB is not set | 88 | # CONFIG_SLOB is not set |
86 | CONFIG_PROFILING=y | 89 | CONFIG_PROFILING=y |
90 | CONFIG_TRACEPOINTS=y | ||
87 | # CONFIG_MARKERS is not set | 91 | # CONFIG_MARKERS is not set |
88 | CONFIG_OPROFILE=y | 92 | CONFIG_OPROFILE=y |
89 | CONFIG_HAVE_OPROFILE=y | 93 | CONFIG_HAVE_OPROFILE=y |
@@ -97,7 +101,6 @@ CONFIG_HAVE_CLK=y | |||
97 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 101 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
98 | CONFIG_SLABINFO=y | 102 | CONFIG_SLABINFO=y |
99 | CONFIG_RT_MUTEXES=y | 103 | CONFIG_RT_MUTEXES=y |
100 | # CONFIG_TINY_SHMEM is not set | ||
101 | CONFIG_BASE_SMALL=0 | 104 | CONFIG_BASE_SMALL=0 |
102 | CONFIG_MODULES=y | 105 | CONFIG_MODULES=y |
103 | # CONFIG_MODULE_FORCE_LOAD is not set | 106 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -105,11 +108,9 @@ CONFIG_MODULE_UNLOAD=y | |||
105 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 108 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
106 | # CONFIG_MODVERSIONS is not set | 109 | # CONFIG_MODVERSIONS is not set |
107 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 110 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
108 | CONFIG_KMOD=y | ||
109 | CONFIG_BLOCK=y | 111 | CONFIG_BLOCK=y |
110 | # CONFIG_LBD is not set | 112 | # CONFIG_LBD is not set |
111 | # CONFIG_BLK_DEV_IO_TRACE is not set | 113 | # CONFIG_BLK_DEV_IO_TRACE is not set |
112 | # CONFIG_LSF is not set | ||
113 | # CONFIG_BLK_DEV_BSG is not set | 114 | # CONFIG_BLK_DEV_BSG is not set |
114 | # CONFIG_BLK_DEV_INTEGRITY is not set | 115 | # CONFIG_BLK_DEV_INTEGRITY is not set |
115 | 116 | ||
@@ -126,6 +127,11 @@ CONFIG_IOSCHED_NOOP=y | |||
126 | CONFIG_DEFAULT_NOOP=y | 127 | CONFIG_DEFAULT_NOOP=y |
127 | CONFIG_DEFAULT_IOSCHED="noop" | 128 | CONFIG_DEFAULT_IOSCHED="noop" |
128 | # CONFIG_CLASSIC_RCU is not set | 129 | # CONFIG_CLASSIC_RCU is not set |
130 | # CONFIG_TREE_RCU is not set | ||
131 | CONFIG_PREEMPT_RCU=y | ||
132 | CONFIG_RCU_TRACE=y | ||
133 | # CONFIG_TREE_RCU_TRACE is not set | ||
134 | CONFIG_PREEMPT_RCU_TRACE=y | ||
129 | # CONFIG_FREEZER is not set | 135 | # CONFIG_FREEZER is not set |
130 | 136 | ||
131 | # | 137 | # |
@@ -135,6 +141,7 @@ CONFIG_CPU_SH4=y | |||
135 | CONFIG_CPU_SH4A=y | 141 | CONFIG_CPU_SH4A=y |
136 | CONFIG_CPU_SHX2=y | 142 | CONFIG_CPU_SHX2=y |
137 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 143 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
144 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
138 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 145 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
139 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 146 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
140 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 147 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -211,7 +218,6 @@ CONFIG_SPARSEMEM_STATIC=y | |||
211 | CONFIG_PAGEFLAGS_EXTENDED=y | 218 | CONFIG_PAGEFLAGS_EXTENDED=y |
212 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 219 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
213 | CONFIG_MIGRATION=y | 220 | CONFIG_MIGRATION=y |
214 | # CONFIG_RESOURCES_64BIT is not set | ||
215 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 221 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
216 | CONFIG_ZONE_DMA_FLAG=0 | 222 | CONFIG_ZONE_DMA_FLAG=0 |
217 | CONFIG_NR_QUICK=2 | 223 | CONFIG_NR_QUICK=2 |
@@ -307,8 +313,6 @@ CONFIG_KEXEC=y | |||
307 | # CONFIG_PREEMPT_NONE is not set | 313 | # CONFIG_PREEMPT_NONE is not set |
308 | # CONFIG_PREEMPT_VOLUNTARY is not set | 314 | # CONFIG_PREEMPT_VOLUNTARY is not set |
309 | CONFIG_PREEMPT=y | 315 | CONFIG_PREEMPT=y |
310 | CONFIG_PREEMPT_RCU=y | ||
311 | CONFIG_RCU_TRACE=y | ||
312 | CONFIG_GUSA=y | 316 | CONFIG_GUSA=y |
313 | 317 | ||
314 | # | 318 | # |
@@ -326,6 +330,7 @@ CONFIG_PCI=y | |||
326 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 330 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
327 | CONFIG_PCI_AUTO=y | 331 | CONFIG_PCI_AUTO=y |
328 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 332 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
333 | # CONFIG_PCIEPORTBUS is not set | ||
329 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 334 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
330 | # CONFIG_PCI_LEGACY is not set | 335 | # CONFIG_PCI_LEGACY is not set |
331 | # CONFIG_PCI_DEBUG is not set | 336 | # CONFIG_PCI_DEBUG is not set |
@@ -339,11 +344,18 @@ CONFIG_BINFMT_ELF=y | |||
339 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 344 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
340 | # CONFIG_HAVE_AOUT is not set | 345 | # CONFIG_HAVE_AOUT is not set |
341 | CONFIG_BINFMT_MISC=m | 346 | CONFIG_BINFMT_MISC=m |
347 | |||
348 | # | ||
349 | # Power management options (EXPERIMENTAL) | ||
350 | # | ||
351 | # CONFIG_PM is not set | ||
352 | # CONFIG_CPU_IDLE is not set | ||
342 | CONFIG_NET=y | 353 | CONFIG_NET=y |
343 | 354 | ||
344 | # | 355 | # |
345 | # Networking options | 356 | # Networking options |
346 | # | 357 | # |
358 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
347 | CONFIG_PACKET=y | 359 | CONFIG_PACKET=y |
348 | # CONFIG_PACKET_MMAP is not set | 360 | # CONFIG_PACKET_MMAP is not set |
349 | CONFIG_UNIX=y | 361 | CONFIG_UNIX=y |
@@ -406,6 +418,7 @@ CONFIG_LLC=m | |||
406 | # CONFIG_ECONET is not set | 418 | # CONFIG_ECONET is not set |
407 | # CONFIG_WAN_ROUTER is not set | 419 | # CONFIG_WAN_ROUTER is not set |
408 | # CONFIG_NET_SCHED is not set | 420 | # CONFIG_NET_SCHED is not set |
421 | # CONFIG_DCB is not set | ||
409 | 422 | ||
410 | # | 423 | # |
411 | # Network testing | 424 | # Network testing |
@@ -423,8 +436,8 @@ CONFIG_WIRELESS=y | |||
423 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 436 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
424 | CONFIG_WIRELESS_EXT=y | 437 | CONFIG_WIRELESS_EXT=y |
425 | CONFIG_WIRELESS_EXT_SYSFS=y | 438 | CONFIG_WIRELESS_EXT_SYSFS=y |
439 | # CONFIG_LIB80211 is not set | ||
426 | # CONFIG_MAC80211 is not set | 440 | # CONFIG_MAC80211 is not set |
427 | # CONFIG_IEEE80211 is not set | ||
428 | # CONFIG_RFKILL is not set | 441 | # CONFIG_RFKILL is not set |
429 | # CONFIG_NET_9P is not set | 442 | # CONFIG_NET_9P is not set |
430 | 443 | ||
@@ -467,8 +480,10 @@ CONFIG_MISC_DEVICES=y | |||
467 | CONFIG_EEPROM_93CX6=y | 480 | CONFIG_EEPROM_93CX6=y |
468 | # CONFIG_SGI_IOC4 is not set | 481 | # CONFIG_SGI_IOC4 is not set |
469 | # CONFIG_TIFM_CORE is not set | 482 | # CONFIG_TIFM_CORE is not set |
483 | # CONFIG_ICS932S401 is not set | ||
470 | # CONFIG_ENCLOSURE_SERVICES is not set | 484 | # CONFIG_ENCLOSURE_SERVICES is not set |
471 | # CONFIG_HP_ILO is not set | 485 | # CONFIG_HP_ILO is not set |
486 | # CONFIG_C2PORT is not set | ||
472 | CONFIG_HAVE_IDE=y | 487 | CONFIG_HAVE_IDE=y |
473 | # CONFIG_IDE is not set | 488 | # CONFIG_IDE is not set |
474 | 489 | ||
@@ -511,6 +526,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
511 | # CONFIG_SCSI_SRP_ATTRS is not set | 526 | # CONFIG_SCSI_SRP_ATTRS is not set |
512 | CONFIG_SCSI_LOWLEVEL=y | 527 | CONFIG_SCSI_LOWLEVEL=y |
513 | # CONFIG_ISCSI_TCP is not set | 528 | # CONFIG_ISCSI_TCP is not set |
529 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
514 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 530 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
515 | # CONFIG_SCSI_3W_9XXX is not set | 531 | # CONFIG_SCSI_3W_9XXX is not set |
516 | # CONFIG_SCSI_ACARD is not set | 532 | # CONFIG_SCSI_ACARD is not set |
@@ -524,6 +540,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
524 | # CONFIG_MEGARAID_LEGACY is not set | 540 | # CONFIG_MEGARAID_LEGACY is not set |
525 | # CONFIG_MEGARAID_SAS is not set | 541 | # CONFIG_MEGARAID_SAS is not set |
526 | # CONFIG_SCSI_HPTIOP is not set | 542 | # CONFIG_SCSI_HPTIOP is not set |
543 | # CONFIG_LIBFC is not set | ||
544 | # CONFIG_FCOE is not set | ||
527 | # CONFIG_SCSI_DMX3191D is not set | 545 | # CONFIG_SCSI_DMX3191D is not set |
528 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 546 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
529 | # CONFIG_SCSI_IPS is not set | 547 | # CONFIG_SCSI_IPS is not set |
@@ -636,6 +654,7 @@ CONFIG_AX88796_93CX6=y | |||
636 | # CONFIG_NET_VENDOR_3COM is not set | 654 | # CONFIG_NET_VENDOR_3COM is not set |
637 | # CONFIG_SMC91X is not set | 655 | # CONFIG_SMC91X is not set |
638 | # CONFIG_SMC911X is not set | 656 | # CONFIG_SMC911X is not set |
657 | # CONFIG_SMSC911X is not set | ||
639 | # CONFIG_NET_TULIP is not set | 658 | # CONFIG_NET_TULIP is not set |
640 | # CONFIG_HP100 is not set | 659 | # CONFIG_HP100 is not set |
641 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 660 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -671,6 +690,7 @@ CONFIG_R8169=y | |||
671 | # CONFIG_JME is not set | 690 | # CONFIG_JME is not set |
672 | CONFIG_NETDEV_10000=y | 691 | CONFIG_NETDEV_10000=y |
673 | # CONFIG_CHELSIO_T1 is not set | 692 | # CONFIG_CHELSIO_T1 is not set |
693 | CONFIG_CHELSIO_T3_DEPENDS=y | ||
674 | # CONFIG_CHELSIO_T3 is not set | 694 | # CONFIG_CHELSIO_T3 is not set |
675 | # CONFIG_ENIC is not set | 695 | # CONFIG_ENIC is not set |
676 | # CONFIG_IXGBE is not set | 696 | # CONFIG_IXGBE is not set |
@@ -679,6 +699,7 @@ CONFIG_NETDEV_10000=y | |||
679 | # CONFIG_MYRI10GE is not set | 699 | # CONFIG_MYRI10GE is not set |
680 | # CONFIG_NETXEN_NIC is not set | 700 | # CONFIG_NETXEN_NIC is not set |
681 | # CONFIG_NIU is not set | 701 | # CONFIG_NIU is not set |
702 | # CONFIG_MLX4_EN is not set | ||
682 | # CONFIG_MLX4_CORE is not set | 703 | # CONFIG_MLX4_CORE is not set |
683 | # CONFIG_TEHUTI is not set | 704 | # CONFIG_TEHUTI is not set |
684 | # CONFIG_BNX2X is not set | 705 | # CONFIG_BNX2X is not set |
@@ -732,6 +753,7 @@ CONFIG_KEYBOARD_ATKBD=y | |||
732 | # CONFIG_KEYBOARD_XTKBD is not set | 753 | # CONFIG_KEYBOARD_XTKBD is not set |
733 | # CONFIG_KEYBOARD_NEWTON is not set | 754 | # CONFIG_KEYBOARD_NEWTON is not set |
734 | # CONFIG_KEYBOARD_STOWAWAY is not set | 755 | # CONFIG_KEYBOARD_STOWAWAY is not set |
756 | # CONFIG_KEYBOARD_GPIO is not set | ||
735 | # CONFIG_KEYBOARD_SH_KEYSC is not set | 757 | # CONFIG_KEYBOARD_SH_KEYSC is not set |
736 | # CONFIG_INPUT_MOUSE is not set | 758 | # CONFIG_INPUT_MOUSE is not set |
737 | # CONFIG_INPUT_JOYSTICK is not set | 759 | # CONFIG_INPUT_JOYSTICK is not set |
@@ -773,6 +795,7 @@ CONFIG_SERIAL_CORE=y | |||
773 | CONFIG_SERIAL_CORE_CONSOLE=y | 795 | CONFIG_SERIAL_CORE_CONSOLE=y |
774 | # CONFIG_SERIAL_JSM is not set | 796 | # CONFIG_SERIAL_JSM is not set |
775 | CONFIG_UNIX98_PTYS=y | 797 | CONFIG_UNIX98_PTYS=y |
798 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
776 | CONFIG_LEGACY_PTYS=y | 799 | CONFIG_LEGACY_PTYS=y |
777 | CONFIG_LEGACY_PTY_COUNT=256 | 800 | CONFIG_LEGACY_PTY_COUNT=256 |
778 | # CONFIG_IPMI_HANDLER is not set | 801 | # CONFIG_IPMI_HANDLER is not set |
@@ -812,6 +835,7 @@ CONFIG_I2C_HELPER_AUTO=y | |||
812 | # | 835 | # |
813 | # I2C system bus drivers (mostly embedded / system-on-chip) | 836 | # I2C system bus drivers (mostly embedded / system-on-chip) |
814 | # | 837 | # |
838 | # CONFIG_I2C_GPIO is not set | ||
815 | CONFIG_I2C_HIGHLANDER=y | 839 | CONFIG_I2C_HIGHLANDER=y |
816 | # CONFIG_I2C_OCORES is not set | 840 | # CONFIG_I2C_OCORES is not set |
817 | # CONFIG_I2C_SH_MOBILE is not set | 841 | # CONFIG_I2C_SH_MOBILE is not set |
@@ -838,8 +862,8 @@ CONFIG_I2C_HIGHLANDER=y | |||
838 | # Miscellaneous I2C Chip support | 862 | # Miscellaneous I2C Chip support |
839 | # | 863 | # |
840 | # CONFIG_DS1682 is not set | 864 | # CONFIG_DS1682 is not set |
841 | # CONFIG_AT24 is not set | 865 | # CONFIG_EEPROM_AT24 is not set |
842 | # CONFIG_SENSORS_EEPROM is not set | 866 | # CONFIG_EEPROM_LEGACY is not set |
843 | # CONFIG_SENSORS_PCF8574 is not set | 867 | # CONFIG_SENSORS_PCF8574 is not set |
844 | # CONFIG_PCF8575 is not set | 868 | # CONFIG_PCF8575 is not set |
845 | # CONFIG_SENSORS_PCA9539 is not set | 869 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -851,6 +875,30 @@ CONFIG_I2C_HIGHLANDER=y | |||
851 | # CONFIG_I2C_DEBUG_BUS is not set | 875 | # CONFIG_I2C_DEBUG_BUS is not set |
852 | # CONFIG_I2C_DEBUG_CHIP is not set | 876 | # CONFIG_I2C_DEBUG_CHIP is not set |
853 | # CONFIG_SPI is not set | 877 | # CONFIG_SPI is not set |
878 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
879 | CONFIG_GPIOLIB=y | ||
880 | # CONFIG_DEBUG_GPIO is not set | ||
881 | # CONFIG_GPIO_SYSFS is not set | ||
882 | |||
883 | # | ||
884 | # Memory mapped GPIO expanders: | ||
885 | # | ||
886 | |||
887 | # | ||
888 | # I2C GPIO expanders: | ||
889 | # | ||
890 | # CONFIG_GPIO_MAX732X is not set | ||
891 | # CONFIG_GPIO_PCA953X is not set | ||
892 | # CONFIG_GPIO_PCF857X is not set | ||
893 | |||
894 | # | ||
895 | # PCI GPIO expanders: | ||
896 | # | ||
897 | # CONFIG_GPIO_BT8XX is not set | ||
898 | |||
899 | # | ||
900 | # SPI GPIO expanders: | ||
901 | # | ||
854 | # CONFIG_W1 is not set | 902 | # CONFIG_W1 is not set |
855 | # CONFIG_POWER_SUPPLY is not set | 903 | # CONFIG_POWER_SUPPLY is not set |
856 | CONFIG_HWMON=y | 904 | CONFIG_HWMON=y |
@@ -863,6 +911,7 @@ CONFIG_HWMON=y | |||
863 | # CONFIG_SENSORS_ADM1029 is not set | 911 | # CONFIG_SENSORS_ADM1029 is not set |
864 | # CONFIG_SENSORS_ADM1031 is not set | 912 | # CONFIG_SENSORS_ADM1031 is not set |
865 | # CONFIG_SENSORS_ADM9240 is not set | 913 | # CONFIG_SENSORS_ADM9240 is not set |
914 | # CONFIG_SENSORS_ADT7462 is not set | ||
866 | # CONFIG_SENSORS_ADT7470 is not set | 915 | # CONFIG_SENSORS_ADT7470 is not set |
867 | # CONFIG_SENSORS_ADT7473 is not set | 916 | # CONFIG_SENSORS_ADT7473 is not set |
868 | # CONFIG_SENSORS_ATXP1 is not set | 917 | # CONFIG_SENSORS_ATXP1 is not set |
@@ -911,11 +960,11 @@ CONFIG_HWMON=y | |||
911 | # CONFIG_THERMAL is not set | 960 | # CONFIG_THERMAL is not set |
912 | # CONFIG_THERMAL_HWMON is not set | 961 | # CONFIG_THERMAL_HWMON is not set |
913 | # CONFIG_WATCHDOG is not set | 962 | # CONFIG_WATCHDOG is not set |
963 | CONFIG_SSB_POSSIBLE=y | ||
914 | 964 | ||
915 | # | 965 | # |
916 | # Sonics Silicon Backplane | 966 | # Sonics Silicon Backplane |
917 | # | 967 | # |
918 | CONFIG_SSB_POSSIBLE=y | ||
919 | # CONFIG_SSB is not set | 968 | # CONFIG_SSB is not set |
920 | 969 | ||
921 | # | 970 | # |
@@ -924,9 +973,13 @@ CONFIG_SSB_POSSIBLE=y | |||
924 | # CONFIG_MFD_CORE is not set | 973 | # CONFIG_MFD_CORE is not set |
925 | # CONFIG_MFD_SM501 is not set | 974 | # CONFIG_MFD_SM501 is not set |
926 | # CONFIG_HTC_PASIC3 is not set | 975 | # CONFIG_HTC_PASIC3 is not set |
976 | # CONFIG_TPS65010 is not set | ||
977 | # CONFIG_TWL4030_CORE is not set | ||
927 | # CONFIG_MFD_TMIO is not set | 978 | # CONFIG_MFD_TMIO is not set |
979 | # CONFIG_PMIC_DA903X is not set | ||
928 | # CONFIG_MFD_WM8400 is not set | 980 | # CONFIG_MFD_WM8400 is not set |
929 | # CONFIG_MFD_WM8350_I2C is not set | 981 | # CONFIG_MFD_WM8350_I2C is not set |
982 | # CONFIG_REGULATOR is not set | ||
930 | 983 | ||
931 | # | 984 | # |
932 | # Multimedia devices | 985 | # Multimedia devices |
@@ -954,15 +1007,16 @@ CONFIG_FB=y | |||
954 | # CONFIG_FIRMWARE_EDID is not set | 1007 | # CONFIG_FIRMWARE_EDID is not set |
955 | # CONFIG_FB_DDC is not set | 1008 | # CONFIG_FB_DDC is not set |
956 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | 1009 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set |
957 | CONFIG_FB_CFB_FILLRECT=m | 1010 | # CONFIG_FB_CFB_FILLRECT is not set |
958 | CONFIG_FB_CFB_COPYAREA=m | 1011 | # CONFIG_FB_CFB_COPYAREA is not set |
959 | CONFIG_FB_CFB_IMAGEBLIT=m | 1012 | # CONFIG_FB_CFB_IMAGEBLIT is not set |
960 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 1013 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
961 | # CONFIG_FB_SYS_FILLRECT is not set | 1014 | CONFIG_FB_SYS_FILLRECT=m |
962 | # CONFIG_FB_SYS_COPYAREA is not set | 1015 | CONFIG_FB_SYS_COPYAREA=m |
963 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 1016 | CONFIG_FB_SYS_IMAGEBLIT=m |
964 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 1017 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
965 | # CONFIG_FB_SYS_FOPS is not set | 1018 | CONFIG_FB_SYS_FOPS=m |
1019 | CONFIG_FB_DEFERRED_IO=y | ||
966 | # CONFIG_FB_SVGALIB is not set | 1020 | # CONFIG_FB_SVGALIB is not set |
967 | # CONFIG_FB_MACMODES is not set | 1021 | # CONFIG_FB_MACMODES is not set |
968 | # CONFIG_FB_BACKLIGHT is not set | 1022 | # CONFIG_FB_BACKLIGHT is not set |
@@ -1000,6 +1054,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m | |||
1000 | CONFIG_FB_SH_MOBILE_LCDC=m | 1054 | CONFIG_FB_SH_MOBILE_LCDC=m |
1001 | # CONFIG_FB_VIRTUAL is not set | 1055 | # CONFIG_FB_VIRTUAL is not set |
1002 | # CONFIG_FB_METRONOME is not set | 1056 | # CONFIG_FB_METRONOME is not set |
1057 | # CONFIG_FB_MB862XX is not set | ||
1003 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 1058 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
1004 | 1059 | ||
1005 | # | 1060 | # |
@@ -1034,9 +1089,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
1034 | # | 1089 | # |
1035 | 1090 | ||
1036 | # | 1091 | # |
1037 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1092 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
1038 | # | 1093 | # |
1039 | # CONFIG_USB_GADGET is not set | 1094 | # CONFIG_USB_GADGET is not set |
1095 | # CONFIG_UWB is not set | ||
1040 | # CONFIG_MMC is not set | 1096 | # CONFIG_MMC is not set |
1041 | # CONFIG_MEMSTICK is not set | 1097 | # CONFIG_MEMSTICK is not set |
1042 | # CONFIG_NEW_LEDS is not set | 1098 | # CONFIG_NEW_LEDS is not set |
@@ -1072,6 +1128,7 @@ CONFIG_RTC_DRV_RS5C372=y | |||
1072 | # CONFIG_RTC_DRV_M41T80 is not set | 1128 | # CONFIG_RTC_DRV_M41T80 is not set |
1073 | # CONFIG_RTC_DRV_S35390A is not set | 1129 | # CONFIG_RTC_DRV_S35390A is not set |
1074 | # CONFIG_RTC_DRV_FM3130 is not set | 1130 | # CONFIG_RTC_DRV_FM3130 is not set |
1131 | # CONFIG_RTC_DRV_RX8581 is not set | ||
1075 | 1132 | ||
1076 | # | 1133 | # |
1077 | # SPI RTC drivers | 1134 | # SPI RTC drivers |
@@ -1158,10 +1215,7 @@ CONFIG_TMPFS=y | |||
1158 | CONFIG_HUGETLBFS=y | 1215 | CONFIG_HUGETLBFS=y |
1159 | CONFIG_HUGETLB_PAGE=y | 1216 | CONFIG_HUGETLB_PAGE=y |
1160 | CONFIG_CONFIGFS_FS=m | 1217 | CONFIG_CONFIGFS_FS=m |
1161 | 1218 | CONFIG_MISC_FILESYSTEMS=y | |
1162 | # | ||
1163 | # Miscellaneous filesystems | ||
1164 | # | ||
1165 | # CONFIG_ADFS_FS is not set | 1219 | # CONFIG_ADFS_FS is not set |
1166 | # CONFIG_AFFS_FS is not set | 1220 | # CONFIG_AFFS_FS is not set |
1167 | # CONFIG_HFS_FS is not set | 1221 | # CONFIG_HFS_FS is not set |
@@ -1291,6 +1345,7 @@ CONFIG_DEBUG_INFO=y | |||
1291 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1345 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1292 | # CONFIG_DEBUG_LIST is not set | 1346 | # CONFIG_DEBUG_LIST is not set |
1293 | # CONFIG_DEBUG_SG is not set | 1347 | # CONFIG_DEBUG_SG is not set |
1348 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
1294 | CONFIG_FRAME_POINTER=y | 1349 | CONFIG_FRAME_POINTER=y |
1295 | # CONFIG_RCU_TORTURE_TEST is not set | 1350 | # CONFIG_RCU_TORTURE_TEST is not set |
1296 | # CONFIG_KPROBES_SANITY_TEST is not set | 1351 | # CONFIG_KPROBES_SANITY_TEST is not set |
@@ -1300,16 +1355,28 @@ CONFIG_FRAME_POINTER=y | |||
1300 | # CONFIG_FAULT_INJECTION is not set | 1355 | # CONFIG_FAULT_INJECTION is not set |
1301 | # CONFIG_LATENCYTOP is not set | 1356 | # CONFIG_LATENCYTOP is not set |
1302 | CONFIG_NOP_TRACER=y | 1357 | CONFIG_NOP_TRACER=y |
1303 | CONFIG_HAVE_FTRACE=y | 1358 | CONFIG_HAVE_FUNCTION_TRACER=y |
1304 | # CONFIG_FTRACE is not set | 1359 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1360 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1361 | CONFIG_RING_BUFFER=y | ||
1362 | CONFIG_TRACING=y | ||
1363 | |||
1364 | # | ||
1365 | # Tracers | ||
1366 | # | ||
1367 | # CONFIG_FUNCTION_TRACER is not set | ||
1305 | # CONFIG_IRQSOFF_TRACER is not set | 1368 | # CONFIG_IRQSOFF_TRACER is not set |
1306 | # CONFIG_PREEMPT_TRACER is not set | 1369 | # CONFIG_PREEMPT_TRACER is not set |
1307 | # CONFIG_SCHED_TRACER is not set | 1370 | # CONFIG_SCHED_TRACER is not set |
1308 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1371 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
1309 | # CONFIG_BOOT_TRACER is not set | 1372 | # CONFIG_BOOT_TRACER is not set |
1373 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1310 | # CONFIG_STACK_TRACER is not set | 1374 | # CONFIG_STACK_TRACER is not set |
1375 | # CONFIG_FTRACE_STARTUP_TEST is not set | ||
1311 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1376 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1312 | # CONFIG_SAMPLES is not set | 1377 | # CONFIG_SAMPLES is not set |
1378 | CONFIG_HAVE_ARCH_KGDB=y | ||
1379 | # CONFIG_KGDB is not set | ||
1313 | CONFIG_SH_STANDARD_BIOS=y | 1380 | CONFIG_SH_STANDARD_BIOS=y |
1314 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1381 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1315 | CONFIG_EARLY_PRINTK=y | 1382 | CONFIG_EARLY_PRINTK=y |
@@ -1318,7 +1385,9 @@ CONFIG_DEBUG_STACKOVERFLOW=y | |||
1318 | CONFIG_DEBUG_STACK_USAGE=y | 1385 | CONFIG_DEBUG_STACK_USAGE=y |
1319 | CONFIG_4KSTACKS=y | 1386 | CONFIG_4KSTACKS=y |
1320 | # CONFIG_IRQSTACKS is not set | 1387 | # CONFIG_IRQSTACKS is not set |
1321 | # CONFIG_SH_KGDB is not set | 1388 | CONFIG_DUMP_CODE=y |
1389 | # CONFIG_SH_NO_BSS_INIT is not set | ||
1390 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
1322 | 1391 | ||
1323 | # | 1392 | # |
1324 | # Security options | 1393 | # Security options |
@@ -1334,11 +1403,15 @@ CONFIG_CRYPTO=y | |||
1334 | # | 1403 | # |
1335 | # CONFIG_CRYPTO_FIPS is not set | 1404 | # CONFIG_CRYPTO_FIPS is not set |
1336 | CONFIG_CRYPTO_ALGAPI=y | 1405 | CONFIG_CRYPTO_ALGAPI=y |
1337 | CONFIG_CRYPTO_AEAD=y | 1406 | CONFIG_CRYPTO_ALGAPI2=y |
1407 | CONFIG_CRYPTO_AEAD2=y | ||
1338 | CONFIG_CRYPTO_BLKCIPHER=y | 1408 | CONFIG_CRYPTO_BLKCIPHER=y |
1409 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1339 | CONFIG_CRYPTO_HASH=y | 1410 | CONFIG_CRYPTO_HASH=y |
1340 | CONFIG_CRYPTO_RNG=y | 1411 | CONFIG_CRYPTO_HASH2=y |
1412 | CONFIG_CRYPTO_RNG2=y | ||
1341 | CONFIG_CRYPTO_MANAGER=y | 1413 | CONFIG_CRYPTO_MANAGER=y |
1414 | CONFIG_CRYPTO_MANAGER2=y | ||
1342 | # CONFIG_CRYPTO_GF128MUL is not set | 1415 | # CONFIG_CRYPTO_GF128MUL is not set |
1343 | # CONFIG_CRYPTO_NULL is not set | 1416 | # CONFIG_CRYPTO_NULL is not set |
1344 | # CONFIG_CRYPTO_CRYPTD is not set | 1417 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1422,6 +1495,7 @@ CONFIG_CRYPTO_HW=y | |||
1422 | # Library routines | 1495 | # Library routines |
1423 | # | 1496 | # |
1424 | CONFIG_BITREVERSE=y | 1497 | CONFIG_BITREVERSE=y |
1498 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1425 | # CONFIG_CRC_CCITT is not set | 1499 | # CONFIG_CRC_CCITT is not set |
1426 | # CONFIG_CRC16 is not set | 1500 | # CONFIG_CRC16 is not set |
1427 | CONFIG_CRC_T10DIF=y | 1501 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/rsk7201_defconfig b/arch/sh/configs/rsk7201_defconfig index 014c18cbf46a..64ee69eef47c 100644 --- a/arch/sh/configs/rsk7201_defconfig +++ b/arch/sh/configs/rsk7201_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.28-rc6 | 3 | # Linux kernel version: 2.6.28 |
4 | # Mon Dec 8 14:48:02 2008 | 4 | # Fri Jan 9 17:19:04 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -77,6 +77,7 @@ CONFIG_VM_EVENT_COUNTERS=y | |||
77 | # CONFIG_SLUB is not set | 77 | # CONFIG_SLUB is not set |
78 | CONFIG_SLOB=y | 78 | CONFIG_SLOB=y |
79 | CONFIG_PROFILING=y | 79 | CONFIG_PROFILING=y |
80 | CONFIG_TRACEPOINTS=y | ||
80 | # CONFIG_MARKERS is not set | 81 | # CONFIG_MARKERS is not set |
81 | CONFIG_OPROFILE=y | 82 | CONFIG_OPROFILE=y |
82 | CONFIG_HAVE_OPROFILE=y | 83 | CONFIG_HAVE_OPROFILE=y |
@@ -87,18 +88,15 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y | |||
87 | CONFIG_HAVE_CLK=y | 88 | CONFIG_HAVE_CLK=y |
88 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 89 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
89 | CONFIG_RT_MUTEXES=y | 90 | CONFIG_RT_MUTEXES=y |
90 | CONFIG_TINY_SHMEM=y | ||
91 | CONFIG_BASE_SMALL=0 | 91 | CONFIG_BASE_SMALL=0 |
92 | CONFIG_MODULES=y | 92 | CONFIG_MODULES=y |
93 | # CONFIG_MODULE_FORCE_LOAD is not set | 93 | # CONFIG_MODULE_FORCE_LOAD is not set |
94 | # CONFIG_MODULE_UNLOAD is not set | 94 | # CONFIG_MODULE_UNLOAD is not set |
95 | # CONFIG_MODVERSIONS is not set | 95 | # CONFIG_MODVERSIONS is not set |
96 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 96 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
97 | CONFIG_KMOD=y | ||
98 | CONFIG_BLOCK=y | 97 | CONFIG_BLOCK=y |
99 | # CONFIG_LBD is not set | 98 | # CONFIG_LBD is not set |
100 | # CONFIG_BLK_DEV_IO_TRACE is not set | 99 | # CONFIG_BLK_DEV_IO_TRACE is not set |
101 | # CONFIG_LSF is not set | ||
102 | # CONFIG_BLK_DEV_BSG is not set | 100 | # CONFIG_BLK_DEV_BSG is not set |
103 | # CONFIG_BLK_DEV_INTEGRITY is not set | 101 | # CONFIG_BLK_DEV_INTEGRITY is not set |
104 | 102 | ||
@@ -115,6 +113,10 @@ CONFIG_IOSCHED_NOOP=y | |||
115 | CONFIG_DEFAULT_NOOP=y | 113 | CONFIG_DEFAULT_NOOP=y |
116 | CONFIG_DEFAULT_IOSCHED="noop" | 114 | CONFIG_DEFAULT_IOSCHED="noop" |
117 | CONFIG_CLASSIC_RCU=y | 115 | CONFIG_CLASSIC_RCU=y |
116 | # CONFIG_TREE_RCU is not set | ||
117 | # CONFIG_PREEMPT_RCU is not set | ||
118 | # CONFIG_TREE_RCU_TRACE is not set | ||
119 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
118 | # CONFIG_FREEZER is not set | 120 | # CONFIG_FREEZER is not set |
119 | 121 | ||
120 | # | 122 | # |
@@ -185,7 +187,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
185 | CONFIG_SPARSEMEM_STATIC=y | 187 | CONFIG_SPARSEMEM_STATIC=y |
186 | CONFIG_PAGEFLAGS_EXTENDED=y | 188 | CONFIG_PAGEFLAGS_EXTENDED=y |
187 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 189 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
188 | # CONFIG_RESOURCES_64BIT is not set | ||
189 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 190 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
190 | CONFIG_ZONE_DMA_FLAG=0 | 191 | CONFIG_ZONE_DMA_FLAG=0 |
191 | CONFIG_NR_QUICK=2 | 192 | CONFIG_NR_QUICK=2 |
@@ -563,7 +564,6 @@ CONFIG_RTC_DRV_SH=y | |||
563 | # CONFIG_DMADEVICES is not set | 564 | # CONFIG_DMADEVICES is not set |
564 | # CONFIG_UIO is not set | 565 | # CONFIG_UIO is not set |
565 | # CONFIG_STAGING is not set | 566 | # CONFIG_STAGING is not set |
566 | CONFIG_STAGING_EXCLUDE_BUILD=y | ||
567 | 567 | ||
568 | # | 568 | # |
569 | # File systems | 569 | # File systems |
@@ -606,10 +606,7 @@ CONFIG_SYSFS=y | |||
606 | # CONFIG_TMPFS is not set | 606 | # CONFIG_TMPFS is not set |
607 | # CONFIG_HUGETLB_PAGE is not set | 607 | # CONFIG_HUGETLB_PAGE is not set |
608 | # CONFIG_CONFIGFS_FS is not set | 608 | # CONFIG_CONFIGFS_FS is not set |
609 | 609 | CONFIG_MISC_FILESYSTEMS=y | |
610 | # | ||
611 | # Miscellaneous filesystems | ||
612 | # | ||
613 | # CONFIG_ADFS_FS is not set | 610 | # CONFIG_ADFS_FS is not set |
614 | # CONFIG_AFFS_FS is not set | 611 | # CONFIG_AFFS_FS is not set |
615 | # CONFIG_HFS_FS is not set | 612 | # CONFIG_HFS_FS is not set |
@@ -658,22 +655,28 @@ CONFIG_MAGIC_SYSRQ=y | |||
658 | CONFIG_DEBUG_FS=y | 655 | CONFIG_DEBUG_FS=y |
659 | # CONFIG_HEADERS_CHECK is not set | 656 | # CONFIG_HEADERS_CHECK is not set |
660 | # CONFIG_DEBUG_KERNEL is not set | 657 | # CONFIG_DEBUG_KERNEL is not set |
658 | CONFIG_STACKTRACE=y | ||
661 | # CONFIG_DEBUG_BUGVERBOSE is not set | 659 | # CONFIG_DEBUG_BUGVERBOSE is not set |
662 | # CONFIG_DEBUG_MEMORY_INIT is not set | 660 | # CONFIG_DEBUG_MEMORY_INIT is not set |
663 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 661 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
664 | # CONFIG_LATENCYTOP is not set | 662 | # CONFIG_LATENCYTOP is not set |
665 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 663 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
664 | CONFIG_NOP_TRACER=y | ||
666 | CONFIG_HAVE_FUNCTION_TRACER=y | 665 | CONFIG_HAVE_FUNCTION_TRACER=y |
667 | CONFIG_HAVE_DYNAMIC_FTRACE=y | 666 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
668 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | 667 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
668 | CONFIG_RING_BUFFER=y | ||
669 | CONFIG_TRACING=y | ||
669 | 670 | ||
670 | # | 671 | # |
671 | # Tracers | 672 | # Tracers |
672 | # | 673 | # |
673 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 674 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
674 | # CONFIG_SAMPLES is not set | 675 | # CONFIG_SAMPLES is not set |
676 | CONFIG_HAVE_ARCH_KGDB=y | ||
675 | # CONFIG_SH_STANDARD_BIOS is not set | 677 | # CONFIG_SH_STANDARD_BIOS is not set |
676 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 678 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
679 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
677 | 680 | ||
678 | # | 681 | # |
679 | # Security options | 682 | # Security options |
@@ -688,6 +691,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | |||
688 | # Library routines | 691 | # Library routines |
689 | # | 692 | # |
690 | CONFIG_BITREVERSE=y | 693 | CONFIG_BITREVERSE=y |
694 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
691 | # CONFIG_CRC_CCITT is not set | 695 | # CONFIG_CRC_CCITT is not set |
692 | # CONFIG_CRC16 is not set | 696 | # CONFIG_CRC16 is not set |
693 | # CONFIG_CRC_T10DIF is not set | 697 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/rsk7203_defconfig b/arch/sh/configs/rsk7203_defconfig index dcdef31cf19b..8d7a5972a86a 100644 --- a/arch/sh/configs/rsk7203_defconfig +++ b/arch/sh/configs/rsk7203_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.28-rc6 | 3 | # Linux kernel version: 2.6.28 |
4 | # Mon Dec 8 14:35:03 2008 | 4 | # Fri Jan 9 17:20:31 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -62,6 +62,7 @@ CONFIG_UID16=y | |||
62 | CONFIG_SYSCTL_SYSCALL=y | 62 | CONFIG_SYSCTL_SYSCALL=y |
63 | CONFIG_KALLSYMS=y | 63 | CONFIG_KALLSYMS=y |
64 | CONFIG_KALLSYMS_ALL=y | 64 | CONFIG_KALLSYMS_ALL=y |
65 | CONFIG_KALLSYMS_STRIP_GENERATED=y | ||
65 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 66 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
66 | CONFIG_HOTPLUG=y | 67 | CONFIG_HOTPLUG=y |
67 | CONFIG_PRINTK=y | 68 | CONFIG_PRINTK=y |
@@ -81,6 +82,7 @@ CONFIG_VM_EVENT_COUNTERS=y | |||
81 | # CONFIG_SLUB is not set | 82 | # CONFIG_SLUB is not set |
82 | CONFIG_SLOB=y | 83 | CONFIG_SLOB=y |
83 | CONFIG_PROFILING=y | 84 | CONFIG_PROFILING=y |
85 | CONFIG_TRACEPOINTS=y | ||
84 | # CONFIG_MARKERS is not set | 86 | # CONFIG_MARKERS is not set |
85 | CONFIG_OPROFILE=y | 87 | CONFIG_OPROFILE=y |
86 | CONFIG_HAVE_OPROFILE=y | 88 | CONFIG_HAVE_OPROFILE=y |
@@ -91,18 +93,15 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y | |||
91 | CONFIG_HAVE_CLK=y | 93 | CONFIG_HAVE_CLK=y |
92 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 94 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
93 | CONFIG_RT_MUTEXES=y | 95 | CONFIG_RT_MUTEXES=y |
94 | CONFIG_TINY_SHMEM=y | ||
95 | CONFIG_BASE_SMALL=0 | 96 | CONFIG_BASE_SMALL=0 |
96 | CONFIG_MODULES=y | 97 | CONFIG_MODULES=y |
97 | # CONFIG_MODULE_FORCE_LOAD is not set | 98 | # CONFIG_MODULE_FORCE_LOAD is not set |
98 | # CONFIG_MODULE_UNLOAD is not set | 99 | # CONFIG_MODULE_UNLOAD is not set |
99 | # CONFIG_MODVERSIONS is not set | 100 | # CONFIG_MODVERSIONS is not set |
100 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 101 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
101 | CONFIG_KMOD=y | ||
102 | CONFIG_BLOCK=y | 102 | CONFIG_BLOCK=y |
103 | # CONFIG_LBD is not set | 103 | # CONFIG_LBD is not set |
104 | # CONFIG_BLK_DEV_IO_TRACE is not set | 104 | # CONFIG_BLK_DEV_IO_TRACE is not set |
105 | # CONFIG_LSF is not set | ||
106 | # CONFIG_BLK_DEV_BSG is not set | 105 | # CONFIG_BLK_DEV_BSG is not set |
107 | # CONFIG_BLK_DEV_INTEGRITY is not set | 106 | # CONFIG_BLK_DEV_INTEGRITY is not set |
108 | 107 | ||
@@ -119,6 +118,10 @@ CONFIG_IOSCHED_NOOP=y | |||
119 | CONFIG_DEFAULT_NOOP=y | 118 | CONFIG_DEFAULT_NOOP=y |
120 | CONFIG_DEFAULT_IOSCHED="noop" | 119 | CONFIG_DEFAULT_IOSCHED="noop" |
121 | CONFIG_CLASSIC_RCU=y | 120 | CONFIG_CLASSIC_RCU=y |
121 | # CONFIG_TREE_RCU is not set | ||
122 | # CONFIG_PREEMPT_RCU is not set | ||
123 | # CONFIG_TREE_RCU_TRACE is not set | ||
124 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
122 | # CONFIG_FREEZER is not set | 125 | # CONFIG_FREEZER is not set |
123 | 126 | ||
124 | # | 127 | # |
@@ -189,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
189 | CONFIG_SPARSEMEM_STATIC=y | 192 | CONFIG_SPARSEMEM_STATIC=y |
190 | CONFIG_PAGEFLAGS_EXTENDED=y | 193 | CONFIG_PAGEFLAGS_EXTENDED=y |
191 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 194 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
192 | # CONFIG_RESOURCES_64BIT is not set | ||
193 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 195 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
194 | CONFIG_ZONE_DMA_FLAG=0 | 196 | CONFIG_ZONE_DMA_FLAG=0 |
195 | CONFIG_NR_QUICK=2 | 197 | CONFIG_NR_QUICK=2 |
@@ -313,6 +315,8 @@ CONFIG_NET=y | |||
313 | # | 315 | # |
314 | # Networking options | 316 | # Networking options |
315 | # | 317 | # |
318 | # CONFIG_NET_NS is not set | ||
319 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
316 | # CONFIG_PACKET is not set | 320 | # CONFIG_PACKET is not set |
317 | # CONFIG_UNIX is not set | 321 | # CONFIG_UNIX is not set |
318 | # CONFIG_NET_KEY is not set | 322 | # CONFIG_NET_KEY is not set |
@@ -361,6 +365,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
361 | # CONFIG_ECONET is not set | 365 | # CONFIG_ECONET is not set |
362 | # CONFIG_WAN_ROUTER is not set | 366 | # CONFIG_WAN_ROUTER is not set |
363 | # CONFIG_NET_SCHED is not set | 367 | # CONFIG_NET_SCHED is not set |
368 | # CONFIG_DCB is not set | ||
364 | 369 | ||
365 | # | 370 | # |
366 | # Network testing | 371 | # Network testing |
@@ -376,8 +381,8 @@ CONFIG_WIRELESS=y | |||
376 | # CONFIG_CFG80211 is not set | 381 | # CONFIG_CFG80211 is not set |
377 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 382 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
378 | # CONFIG_WIRELESS_EXT is not set | 383 | # CONFIG_WIRELESS_EXT is not set |
384 | # CONFIG_LIB80211 is not set | ||
379 | # CONFIG_MAC80211 is not set | 385 | # CONFIG_MAC80211 is not set |
380 | # CONFIG_IEEE80211 is not set | ||
381 | # CONFIG_RFKILL is not set | 386 | # CONFIG_RFKILL is not set |
382 | # CONFIG_NET_9P is not set | 387 | # CONFIG_NET_9P is not set |
383 | 388 | ||
@@ -509,13 +514,33 @@ CONFIG_NETDEVICES=y | |||
509 | # CONFIG_EQUALIZER is not set | 514 | # CONFIG_EQUALIZER is not set |
510 | # CONFIG_TUN is not set | 515 | # CONFIG_TUN is not set |
511 | # CONFIG_VETH is not set | 516 | # CONFIG_VETH is not set |
512 | # CONFIG_PHYLIB is not set | 517 | CONFIG_PHYLIB=y |
518 | |||
519 | # | ||
520 | # MII PHY device drivers | ||
521 | # | ||
522 | # CONFIG_MARVELL_PHY is not set | ||
523 | # CONFIG_DAVICOM_PHY is not set | ||
524 | # CONFIG_QSEMI_PHY is not set | ||
525 | # CONFIG_LXT_PHY is not set | ||
526 | # CONFIG_CICADA_PHY is not set | ||
527 | # CONFIG_VITESSE_PHY is not set | ||
528 | CONFIG_SMSC_PHY=y | ||
529 | # CONFIG_BROADCOM_PHY is not set | ||
530 | # CONFIG_ICPLUS_PHY is not set | ||
531 | # CONFIG_REALTEK_PHY is not set | ||
532 | # CONFIG_NATIONAL_PHY is not set | ||
533 | # CONFIG_STE10XP is not set | ||
534 | # CONFIG_LSI_ET1011C_PHY is not set | ||
535 | # CONFIG_FIXED_PHY is not set | ||
536 | # CONFIG_MDIO_BITBANG is not set | ||
513 | CONFIG_NET_ETHERNET=y | 537 | CONFIG_NET_ETHERNET=y |
514 | CONFIG_MII=y | 538 | CONFIG_MII=y |
515 | # CONFIG_AX88796 is not set | 539 | # CONFIG_AX88796 is not set |
516 | # CONFIG_STNIC is not set | 540 | # CONFIG_STNIC is not set |
517 | # CONFIG_SMC91X is not set | 541 | # CONFIG_SMC91X is not set |
518 | CONFIG_SMC911X=y | 542 | # CONFIG_SMC911X is not set |
543 | CONFIG_SMSC911X=y | ||
519 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 544 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
520 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 545 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
521 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 546 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -611,6 +636,26 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
611 | # CONFIG_TCG_TPM is not set | 636 | # CONFIG_TCG_TPM is not set |
612 | # CONFIG_I2C is not set | 637 | # CONFIG_I2C is not set |
613 | # CONFIG_SPI is not set | 638 | # CONFIG_SPI is not set |
639 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
640 | CONFIG_GPIOLIB=y | ||
641 | # CONFIG_DEBUG_GPIO is not set | ||
642 | # CONFIG_GPIO_SYSFS is not set | ||
643 | |||
644 | # | ||
645 | # Memory mapped GPIO expanders: | ||
646 | # | ||
647 | |||
648 | # | ||
649 | # I2C GPIO expanders: | ||
650 | # | ||
651 | |||
652 | # | ||
653 | # PCI GPIO expanders: | ||
654 | # | ||
655 | |||
656 | # | ||
657 | # SPI GPIO expanders: | ||
658 | # | ||
614 | # CONFIG_W1 is not set | 659 | # CONFIG_W1 is not set |
615 | # CONFIG_POWER_SUPPLY is not set | 660 | # CONFIG_POWER_SUPPLY is not set |
616 | # CONFIG_HWMON is not set | 661 | # CONFIG_HWMON is not set |
@@ -685,11 +730,9 @@ CONFIG_HID_COMPAT=y | |||
685 | CONFIG_HID_A4TECH=y | 730 | CONFIG_HID_A4TECH=y |
686 | CONFIG_HID_APPLE=y | 731 | CONFIG_HID_APPLE=y |
687 | CONFIG_HID_BELKIN=y | 732 | CONFIG_HID_BELKIN=y |
688 | CONFIG_HID_BRIGHT=y | ||
689 | CONFIG_HID_CHERRY=y | 733 | CONFIG_HID_CHERRY=y |
690 | CONFIG_HID_CHICONY=y | 734 | CONFIG_HID_CHICONY=y |
691 | CONFIG_HID_CYPRESS=y | 735 | CONFIG_HID_CYPRESS=y |
692 | CONFIG_HID_DELL=y | ||
693 | CONFIG_HID_EZKEY=y | 736 | CONFIG_HID_EZKEY=y |
694 | CONFIG_HID_GYRATION=y | 737 | CONFIG_HID_GYRATION=y |
695 | CONFIG_HID_LOGITECH=y | 738 | CONFIG_HID_LOGITECH=y |
@@ -697,12 +740,15 @@ CONFIG_HID_LOGITECH=y | |||
697 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 740 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
698 | CONFIG_HID_MICROSOFT=y | 741 | CONFIG_HID_MICROSOFT=y |
699 | CONFIG_HID_MONTEREY=y | 742 | CONFIG_HID_MONTEREY=y |
743 | # CONFIG_HID_NTRIG is not set | ||
700 | CONFIG_HID_PANTHERLORD=y | 744 | CONFIG_HID_PANTHERLORD=y |
701 | # CONFIG_PANTHERLORD_FF is not set | 745 | # CONFIG_PANTHERLORD_FF is not set |
702 | CONFIG_HID_PETALYNX=y | 746 | CONFIG_HID_PETALYNX=y |
703 | CONFIG_HID_SAMSUNG=y | 747 | CONFIG_HID_SAMSUNG=y |
704 | CONFIG_HID_SONY=y | 748 | CONFIG_HID_SONY=y |
705 | CONFIG_HID_SUNPLUS=y | 749 | CONFIG_HID_SUNPLUS=y |
750 | # CONFIG_GREENASIA_FF is not set | ||
751 | # CONFIG_HID_TOPSEED is not set | ||
706 | CONFIG_THRUSTMASTER_FF=m | 752 | CONFIG_THRUSTMASTER_FF=m |
707 | CONFIG_ZEROPLUS_FF=m | 753 | CONFIG_ZEROPLUS_FF=m |
708 | CONFIG_USB_SUPPORT=y | 754 | CONFIG_USB_SUPPORT=y |
@@ -847,7 +893,6 @@ CONFIG_RTC_DRV_SH=y | |||
847 | # CONFIG_DMADEVICES is not set | 893 | # CONFIG_DMADEVICES is not set |
848 | # CONFIG_UIO is not set | 894 | # CONFIG_UIO is not set |
849 | # CONFIG_STAGING is not set | 895 | # CONFIG_STAGING is not set |
850 | CONFIG_STAGING_EXCLUDE_BUILD=y | ||
851 | 896 | ||
852 | # | 897 | # |
853 | # File systems | 898 | # File systems |
@@ -890,10 +935,7 @@ CONFIG_SYSFS=y | |||
890 | # CONFIG_TMPFS is not set | 935 | # CONFIG_TMPFS is not set |
891 | # CONFIG_HUGETLB_PAGE is not set | 936 | # CONFIG_HUGETLB_PAGE is not set |
892 | # CONFIG_CONFIGFS_FS is not set | 937 | # CONFIG_CONFIGFS_FS is not set |
893 | 938 | CONFIG_MISC_FILESYSTEMS=y | |
894 | # | ||
895 | # Miscellaneous filesystems | ||
896 | # | ||
897 | # CONFIG_ADFS_FS is not set | 939 | # CONFIG_ADFS_FS is not set |
898 | # CONFIG_AFFS_FS is not set | 940 | # CONFIG_AFFS_FS is not set |
899 | # CONFIG_HFS_FS is not set | 941 | # CONFIG_HFS_FS is not set |
@@ -961,6 +1003,7 @@ CONFIG_DEBUG_OBJECTS=y | |||
961 | # CONFIG_DEBUG_OBJECTS_SELFTEST is not set | 1003 | # CONFIG_DEBUG_OBJECTS_SELFTEST is not set |
962 | # CONFIG_DEBUG_OBJECTS_FREE is not set | 1004 | # CONFIG_DEBUG_OBJECTS_FREE is not set |
963 | # CONFIG_DEBUG_OBJECTS_TIMERS is not set | 1005 | # CONFIG_DEBUG_OBJECTS_TIMERS is not set |
1006 | CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1 | ||
964 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1007 | # CONFIG_DEBUG_RT_MUTEXES is not set |
965 | # CONFIG_RT_MUTEX_TESTER is not set | 1008 | # CONFIG_RT_MUTEX_TESTER is not set |
966 | # CONFIG_DEBUG_SPINLOCK is not set | 1009 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -970,6 +1013,7 @@ CONFIG_DEBUG_MUTEXES=y | |||
970 | # CONFIG_LOCK_STAT is not set | 1013 | # CONFIG_LOCK_STAT is not set |
971 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | 1014 | CONFIG_DEBUG_SPINLOCK_SLEEP=y |
972 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1015 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1016 | CONFIG_STACKTRACE=y | ||
973 | # CONFIG_DEBUG_KOBJECT is not set | 1017 | # CONFIG_DEBUG_KOBJECT is not set |
974 | CONFIG_DEBUG_BUGVERBOSE=y | 1018 | CONFIG_DEBUG_BUGVERBOSE=y |
975 | CONFIG_DEBUG_INFO=y | 1019 | CONFIG_DEBUG_INFO=y |
@@ -978,6 +1022,7 @@ CONFIG_DEBUG_WRITECOUNT=y | |||
978 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1022 | # CONFIG_DEBUG_MEMORY_INIT is not set |
979 | CONFIG_DEBUG_LIST=y | 1023 | CONFIG_DEBUG_LIST=y |
980 | CONFIG_DEBUG_SG=y | 1024 | CONFIG_DEBUG_SG=y |
1025 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
981 | CONFIG_FRAME_POINTER=y | 1026 | CONFIG_FRAME_POINTER=y |
982 | # CONFIG_RCU_TORTURE_TEST is not set | 1027 | # CONFIG_RCU_TORTURE_TEST is not set |
983 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1028 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -986,9 +1031,12 @@ CONFIG_FRAME_POINTER=y | |||
986 | # CONFIG_FAULT_INJECTION is not set | 1031 | # CONFIG_FAULT_INJECTION is not set |
987 | # CONFIG_LATENCYTOP is not set | 1032 | # CONFIG_LATENCYTOP is not set |
988 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 1033 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
1034 | CONFIG_NOP_TRACER=y | ||
989 | CONFIG_HAVE_FUNCTION_TRACER=y | 1035 | CONFIG_HAVE_FUNCTION_TRACER=y |
990 | CONFIG_HAVE_DYNAMIC_FTRACE=y | 1036 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
991 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | 1037 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
1038 | CONFIG_RING_BUFFER=y | ||
1039 | CONFIG_TRACING=y | ||
992 | 1040 | ||
993 | # | 1041 | # |
994 | # Tracers | 1042 | # Tracers |
@@ -997,9 +1045,13 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | |||
997 | # CONFIG_SCHED_TRACER is not set | 1045 | # CONFIG_SCHED_TRACER is not set |
998 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1046 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
999 | # CONFIG_BOOT_TRACER is not set | 1047 | # CONFIG_BOOT_TRACER is not set |
1048 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1000 | # CONFIG_STACK_TRACER is not set | 1049 | # CONFIG_STACK_TRACER is not set |
1050 | # CONFIG_FTRACE_STARTUP_TEST is not set | ||
1001 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1051 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1002 | # CONFIG_SAMPLES is not set | 1052 | # CONFIG_SAMPLES is not set |
1053 | CONFIG_HAVE_ARCH_KGDB=y | ||
1054 | # CONFIG_KGDB is not set | ||
1003 | # CONFIG_SH_STANDARD_BIOS is not set | 1055 | # CONFIG_SH_STANDARD_BIOS is not set |
1004 | CONFIG_EARLY_SCIF_CONSOLE=y | 1056 | CONFIG_EARLY_SCIF_CONSOLE=y |
1005 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xfffe8000 | 1057 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xfffe8000 |
@@ -1008,6 +1060,9 @@ CONFIG_DEBUG_BOOTMEM=y | |||
1008 | CONFIG_DEBUG_STACKOVERFLOW=y | 1060 | CONFIG_DEBUG_STACKOVERFLOW=y |
1009 | CONFIG_DEBUG_STACK_USAGE=y | 1061 | CONFIG_DEBUG_STACK_USAGE=y |
1010 | # CONFIG_IRQSTACKS is not set | 1062 | # CONFIG_IRQSTACKS is not set |
1063 | CONFIG_DUMP_CODE=y | ||
1064 | # CONFIG_SH_NO_BSS_INIT is not set | ||
1065 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
1011 | 1066 | ||
1012 | # | 1067 | # |
1013 | # Security options | 1068 | # Security options |
@@ -1022,6 +1077,7 @@ CONFIG_DEBUG_STACK_USAGE=y | |||
1022 | # Library routines | 1077 | # Library routines |
1023 | # | 1078 | # |
1024 | CONFIG_BITREVERSE=y | 1079 | CONFIG_BITREVERSE=y |
1080 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1025 | # CONFIG_CRC_CCITT is not set | 1081 | # CONFIG_CRC_CCITT is not set |
1026 | # CONFIG_CRC16 is not set | 1082 | # CONFIG_CRC16 is not set |
1027 | # CONFIG_CRC_T10DIF is not set | 1083 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/rts7751r2d1_defconfig b/arch/sh/configs/rts7751r2d1_defconfig index 7d2a9e88838b..d6680f4382c2 100644 --- a/arch/sh/configs/rts7751r2d1_defconfig +++ b/arch/sh/configs/rts7751r2d1_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:44:36 2008 | 4 | # Fri Jan 9 17:23:15 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -77,6 +79,7 @@ CONFIG_SLAB=y | |||
77 | # CONFIG_SLUB is not set | 79 | # CONFIG_SLUB is not set |
78 | # CONFIG_SLOB is not set | 80 | # CONFIG_SLOB is not set |
79 | CONFIG_PROFILING=y | 81 | CONFIG_PROFILING=y |
82 | CONFIG_TRACEPOINTS=y | ||
80 | # CONFIG_MARKERS is not set | 83 | # CONFIG_MARKERS is not set |
81 | CONFIG_OPROFILE=y | 84 | CONFIG_OPROFILE=y |
82 | CONFIG_HAVE_OPROFILE=y | 85 | CONFIG_HAVE_OPROFILE=y |
@@ -89,18 +92,15 @@ CONFIG_HAVE_CLK=y | |||
89 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 92 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
90 | CONFIG_SLABINFO=y | 93 | CONFIG_SLABINFO=y |
91 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
92 | # CONFIG_TINY_SHMEM is not set | ||
93 | CONFIG_BASE_SMALL=0 | 95 | CONFIG_BASE_SMALL=0 |
94 | CONFIG_MODULES=y | 96 | CONFIG_MODULES=y |
95 | # CONFIG_MODULE_FORCE_LOAD is not set | 97 | # CONFIG_MODULE_FORCE_LOAD is not set |
96 | # CONFIG_MODULE_UNLOAD is not set | 98 | # CONFIG_MODULE_UNLOAD is not set |
97 | # CONFIG_MODVERSIONS is not set | 99 | # CONFIG_MODVERSIONS is not set |
98 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 100 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
99 | CONFIG_KMOD=y | ||
100 | CONFIG_BLOCK=y | 101 | CONFIG_BLOCK=y |
101 | # CONFIG_LBD is not set | 102 | # CONFIG_LBD is not set |
102 | # CONFIG_BLK_DEV_IO_TRACE is not set | 103 | # CONFIG_BLK_DEV_IO_TRACE is not set |
103 | # CONFIG_LSF is not set | ||
104 | # CONFIG_BLK_DEV_BSG is not set | 104 | # CONFIG_BLK_DEV_BSG is not set |
105 | # CONFIG_BLK_DEV_INTEGRITY is not set | 105 | # CONFIG_BLK_DEV_INTEGRITY is not set |
106 | 106 | ||
@@ -117,6 +117,10 @@ CONFIG_DEFAULT_AS=y | |||
117 | # CONFIG_DEFAULT_NOOP is not set | 117 | # CONFIG_DEFAULT_NOOP is not set |
118 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 118 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
119 | CONFIG_CLASSIC_RCU=y | 119 | CONFIG_CLASSIC_RCU=y |
120 | # CONFIG_TREE_RCU is not set | ||
121 | # CONFIG_PREEMPT_RCU is not set | ||
122 | # CONFIG_TREE_RCU_TRACE is not set | ||
123 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
120 | # CONFIG_FREEZER is not set | 124 | # CONFIG_FREEZER is not set |
121 | 125 | ||
122 | # | 126 | # |
@@ -124,6 +128,7 @@ CONFIG_CLASSIC_RCU=y | |||
124 | # | 128 | # |
125 | CONFIG_CPU_SH4=y | 129 | CONFIG_CPU_SH4=y |
126 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
127 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 132 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
128 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 133 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
129 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 134 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -187,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
187 | CONFIG_SPARSEMEM_STATIC=y | 192 | CONFIG_SPARSEMEM_STATIC=y |
188 | CONFIG_PAGEFLAGS_EXTENDED=y | 193 | CONFIG_PAGEFLAGS_EXTENDED=y |
189 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 194 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
190 | # CONFIG_RESOURCES_64BIT is not set | ||
191 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 195 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
192 | CONFIG_ZONE_DMA_FLAG=0 | 196 | CONFIG_ZONE_DMA_FLAG=0 |
193 | CONFIG_NR_QUICK=2 | 197 | CONFIG_NR_QUICK=2 |
@@ -293,6 +297,7 @@ CONFIG_PCI=y | |||
293 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 297 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
294 | CONFIG_PCI_AUTO=y | 298 | CONFIG_PCI_AUTO=y |
295 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 299 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
300 | # CONFIG_PCIEPORTBUS is not set | ||
296 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 301 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
297 | CONFIG_PCI_LEGACY=y | 302 | CONFIG_PCI_LEGACY=y |
298 | # CONFIG_PCCARD is not set | 303 | # CONFIG_PCCARD is not set |
@@ -308,11 +313,18 @@ CONFIG_BINFMT_ELF=y | |||
308 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 313 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
309 | # CONFIG_HAVE_AOUT is not set | 314 | # CONFIG_HAVE_AOUT is not set |
310 | # CONFIG_BINFMT_MISC is not set | 315 | # CONFIG_BINFMT_MISC is not set |
316 | |||
317 | # | ||
318 | # Power management options (EXPERIMENTAL) | ||
319 | # | ||
320 | # CONFIG_PM is not set | ||
321 | # CONFIG_CPU_IDLE is not set | ||
311 | CONFIG_NET=y | 322 | CONFIG_NET=y |
312 | 323 | ||
313 | # | 324 | # |
314 | # Networking options | 325 | # Networking options |
315 | # | 326 | # |
327 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
316 | CONFIG_PACKET=y | 328 | CONFIG_PACKET=y |
317 | # CONFIG_PACKET_MMAP is not set | 329 | # CONFIG_PACKET_MMAP is not set |
318 | CONFIG_UNIX=y | 330 | CONFIG_UNIX=y |
@@ -365,6 +377,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
365 | # CONFIG_ECONET is not set | 377 | # CONFIG_ECONET is not set |
366 | # CONFIG_WAN_ROUTER is not set | 378 | # CONFIG_WAN_ROUTER is not set |
367 | # CONFIG_NET_SCHED is not set | 379 | # CONFIG_NET_SCHED is not set |
380 | # CONFIG_DCB is not set | ||
368 | 381 | ||
369 | # | 382 | # |
370 | # Network testing | 383 | # Network testing |
@@ -381,8 +394,8 @@ CONFIG_WIRELESS=y | |||
381 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 394 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
382 | CONFIG_WIRELESS_EXT=y | 395 | CONFIG_WIRELESS_EXT=y |
383 | CONFIG_WIRELESS_EXT_SYSFS=y | 396 | CONFIG_WIRELESS_EXT_SYSFS=y |
397 | # CONFIG_LIB80211 is not set | ||
384 | # CONFIG_MAC80211 is not set | 398 | # CONFIG_MAC80211 is not set |
385 | # CONFIG_IEEE80211 is not set | ||
386 | # CONFIG_RFKILL is not set | 399 | # CONFIG_RFKILL is not set |
387 | # CONFIG_NET_9P is not set | 400 | # CONFIG_NET_9P is not set |
388 | 401 | ||
@@ -426,6 +439,7 @@ CONFIG_MISC_DEVICES=y | |||
426 | # CONFIG_TIFM_CORE is not set | 439 | # CONFIG_TIFM_CORE is not set |
427 | # CONFIG_ENCLOSURE_SERVICES is not set | 440 | # CONFIG_ENCLOSURE_SERVICES is not set |
428 | # CONFIG_HP_ILO is not set | 441 | # CONFIG_HP_ILO is not set |
442 | # CONFIG_C2PORT is not set | ||
429 | CONFIG_HAVE_IDE=y | 443 | CONFIG_HAVE_IDE=y |
430 | # CONFIG_IDE is not set | 444 | # CONFIG_IDE is not set |
431 | 445 | ||
@@ -468,6 +482,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
468 | # CONFIG_SCSI_SRP_ATTRS is not set | 482 | # CONFIG_SCSI_SRP_ATTRS is not set |
469 | CONFIG_SCSI_LOWLEVEL=y | 483 | CONFIG_SCSI_LOWLEVEL=y |
470 | # CONFIG_ISCSI_TCP is not set | 484 | # CONFIG_ISCSI_TCP is not set |
485 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
471 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 486 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
472 | # CONFIG_SCSI_3W_9XXX is not set | 487 | # CONFIG_SCSI_3W_9XXX is not set |
473 | # CONFIG_SCSI_ACARD is not set | 488 | # CONFIG_SCSI_ACARD is not set |
@@ -481,6 +496,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
481 | # CONFIG_MEGARAID_LEGACY is not set | 496 | # CONFIG_MEGARAID_LEGACY is not set |
482 | # CONFIG_MEGARAID_SAS is not set | 497 | # CONFIG_MEGARAID_SAS is not set |
483 | # CONFIG_SCSI_HPTIOP is not set | 498 | # CONFIG_SCSI_HPTIOP is not set |
499 | # CONFIG_LIBFC is not set | ||
500 | # CONFIG_FCOE is not set | ||
484 | # CONFIG_SCSI_DMX3191D is not set | 501 | # CONFIG_SCSI_DMX3191D is not set |
485 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 502 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
486 | # CONFIG_SCSI_IPS is not set | 503 | # CONFIG_SCSI_IPS is not set |
@@ -593,6 +610,7 @@ CONFIG_MII=y | |||
593 | # CONFIG_SMC91X is not set | 610 | # CONFIG_SMC91X is not set |
594 | # CONFIG_ENC28J60 is not set | 611 | # CONFIG_ENC28J60 is not set |
595 | # CONFIG_SMC911X is not set | 612 | # CONFIG_SMC911X is not set |
613 | # CONFIG_SMSC911X is not set | ||
596 | # CONFIG_NET_TULIP is not set | 614 | # CONFIG_NET_TULIP is not set |
597 | # CONFIG_HP100 is not set | 615 | # CONFIG_HP100 is not set |
598 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 616 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -608,7 +626,6 @@ CONFIG_NET_PCI=y | |||
608 | # CONFIG_ADAPTEC_STARFIRE is not set | 626 | # CONFIG_ADAPTEC_STARFIRE is not set |
609 | # CONFIG_B44 is not set | 627 | # CONFIG_B44 is not set |
610 | # CONFIG_FORCEDETH is not set | 628 | # CONFIG_FORCEDETH is not set |
611 | # CONFIG_EEPRO100 is not set | ||
612 | # CONFIG_E100 is not set | 629 | # CONFIG_E100 is not set |
613 | # CONFIG_FEALNX is not set | 630 | # CONFIG_FEALNX is not set |
614 | # CONFIG_NATSEMI is not set | 631 | # CONFIG_NATSEMI is not set |
@@ -622,6 +639,7 @@ CONFIG_8139TOO=y | |||
622 | # CONFIG_R6040 is not set | 639 | # CONFIG_R6040 is not set |
623 | # CONFIG_SIS900 is not set | 640 | # CONFIG_SIS900 is not set |
624 | # CONFIG_EPIC100 is not set | 641 | # CONFIG_EPIC100 is not set |
642 | # CONFIG_SMSC9420 is not set | ||
625 | # CONFIG_SUNDANCE is not set | 643 | # CONFIG_SUNDANCE is not set |
626 | # CONFIG_TLAN is not set | 644 | # CONFIG_TLAN is not set |
627 | # CONFIG_VIA_RHINE is not set | 645 | # CONFIG_VIA_RHINE is not set |
@@ -650,6 +668,7 @@ CONFIG_NETDEV_1000=y | |||
650 | # CONFIG_JME is not set | 668 | # CONFIG_JME is not set |
651 | CONFIG_NETDEV_10000=y | 669 | CONFIG_NETDEV_10000=y |
652 | # CONFIG_CHELSIO_T1 is not set | 670 | # CONFIG_CHELSIO_T1 is not set |
671 | CONFIG_CHELSIO_T3_DEPENDS=y | ||
653 | # CONFIG_CHELSIO_T3 is not set | 672 | # CONFIG_CHELSIO_T3 is not set |
654 | # CONFIG_ENIC is not set | 673 | # CONFIG_ENIC is not set |
655 | # CONFIG_IXGBE is not set | 674 | # CONFIG_IXGBE is not set |
@@ -658,6 +677,7 @@ CONFIG_NETDEV_10000=y | |||
658 | # CONFIG_MYRI10GE is not set | 677 | # CONFIG_MYRI10GE is not set |
659 | # CONFIG_NETXEN_NIC is not set | 678 | # CONFIG_NETXEN_NIC is not set |
660 | # CONFIG_NIU is not set | 679 | # CONFIG_NIU is not set |
680 | # CONFIG_MLX4_EN is not set | ||
661 | # CONFIG_MLX4_CORE is not set | 681 | # CONFIG_MLX4_CORE is not set |
662 | # CONFIG_TEHUTI is not set | 682 | # CONFIG_TEHUTI is not set |
663 | # CONFIG_BNX2X is not set | 683 | # CONFIG_BNX2X is not set |
@@ -755,6 +775,7 @@ CONFIG_SERIAL_CORE=y | |||
755 | CONFIG_SERIAL_CORE_CONSOLE=y | 775 | CONFIG_SERIAL_CORE_CONSOLE=y |
756 | # CONFIG_SERIAL_JSM is not set | 776 | # CONFIG_SERIAL_JSM is not set |
757 | CONFIG_UNIX98_PTYS=y | 777 | CONFIG_UNIX98_PTYS=y |
778 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
758 | CONFIG_LEGACY_PTYS=y | 779 | CONFIG_LEGACY_PTYS=y |
759 | CONFIG_LEGACY_PTY_COUNT=256 | 780 | CONFIG_LEGACY_PTY_COUNT=256 |
760 | # CONFIG_IPMI_HANDLER is not set | 781 | # CONFIG_IPMI_HANDLER is not set |
@@ -777,7 +798,7 @@ CONFIG_SPI_SH_SCI=y | |||
777 | # | 798 | # |
778 | # SPI Protocol Masters | 799 | # SPI Protocol Masters |
779 | # | 800 | # |
780 | # CONFIG_SPI_AT25 is not set | 801 | # CONFIG_EEPROM_AT25 is not set |
781 | # CONFIG_SPI_SPIDEV is not set | 802 | # CONFIG_SPI_SPIDEV is not set |
782 | # CONFIG_SPI_TLE62X0 is not set | 803 | # CONFIG_SPI_TLE62X0 is not set |
783 | # CONFIG_W1 is not set | 804 | # CONFIG_W1 is not set |
@@ -805,11 +826,11 @@ CONFIG_HWMON=y | |||
805 | # CONFIG_THERMAL is not set | 826 | # CONFIG_THERMAL is not set |
806 | # CONFIG_THERMAL_HWMON is not set | 827 | # CONFIG_THERMAL_HWMON is not set |
807 | # CONFIG_WATCHDOG is not set | 828 | # CONFIG_WATCHDOG is not set |
829 | CONFIG_SSB_POSSIBLE=y | ||
808 | 830 | ||
809 | # | 831 | # |
810 | # Sonics Silicon Backplane | 832 | # Sonics Silicon Backplane |
811 | # | 833 | # |
812 | CONFIG_SSB_POSSIBLE=y | ||
813 | # CONFIG_SSB is not set | 834 | # CONFIG_SSB is not set |
814 | 835 | ||
815 | # | 836 | # |
@@ -819,7 +840,7 @@ CONFIG_SSB_POSSIBLE=y | |||
819 | CONFIG_MFD_SM501=y | 840 | CONFIG_MFD_SM501=y |
820 | # CONFIG_HTC_PASIC3 is not set | 841 | # CONFIG_HTC_PASIC3 is not set |
821 | # CONFIG_MFD_TMIO is not set | 842 | # CONFIG_MFD_TMIO is not set |
822 | # CONFIG_MFD_WM8400 is not set | 843 | # CONFIG_REGULATOR is not set |
823 | 844 | ||
824 | # | 845 | # |
825 | # Multimedia devices | 846 | # Multimedia devices |
@@ -852,11 +873,12 @@ CONFIG_FB_CFB_FILLRECT=y | |||
852 | CONFIG_FB_CFB_COPYAREA=y | 873 | CONFIG_FB_CFB_COPYAREA=y |
853 | CONFIG_FB_CFB_IMAGEBLIT=y | 874 | CONFIG_FB_CFB_IMAGEBLIT=y |
854 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 875 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
855 | # CONFIG_FB_SYS_FILLRECT is not set | 876 | CONFIG_FB_SYS_FILLRECT=m |
856 | # CONFIG_FB_SYS_COPYAREA is not set | 877 | CONFIG_FB_SYS_COPYAREA=m |
857 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 878 | CONFIG_FB_SYS_IMAGEBLIT=m |
858 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 879 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
859 | # CONFIG_FB_SYS_FOPS is not set | 880 | CONFIG_FB_SYS_FOPS=m |
881 | CONFIG_FB_DEFERRED_IO=y | ||
860 | # CONFIG_FB_SVGALIB is not set | 882 | # CONFIG_FB_SVGALIB is not set |
861 | # CONFIG_FB_MACMODES is not set | 883 | # CONFIG_FB_MACMODES is not set |
862 | # CONFIG_FB_BACKLIGHT is not set | 884 | # CONFIG_FB_BACKLIGHT is not set |
@@ -895,6 +917,7 @@ CONFIG_FB_SH_MOBILE_LCDC=m | |||
895 | CONFIG_FB_SM501=y | 917 | CONFIG_FB_SM501=y |
896 | # CONFIG_FB_VIRTUAL is not set | 918 | # CONFIG_FB_VIRTUAL is not set |
897 | # CONFIG_FB_METRONOME is not set | 919 | # CONFIG_FB_METRONOME is not set |
920 | # CONFIG_FB_MB862XX is not set | ||
898 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 921 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
899 | 922 | ||
900 | # | 923 | # |
@@ -1031,11 +1054,9 @@ CONFIG_HID_COMPAT=y | |||
1031 | CONFIG_HID_A4TECH=y | 1054 | CONFIG_HID_A4TECH=y |
1032 | CONFIG_HID_APPLE=y | 1055 | CONFIG_HID_APPLE=y |
1033 | CONFIG_HID_BELKIN=y | 1056 | CONFIG_HID_BELKIN=y |
1034 | CONFIG_HID_BRIGHT=y | ||
1035 | CONFIG_HID_CHERRY=y | 1057 | CONFIG_HID_CHERRY=y |
1036 | CONFIG_HID_CHICONY=y | 1058 | CONFIG_HID_CHICONY=y |
1037 | CONFIG_HID_CYPRESS=y | 1059 | CONFIG_HID_CYPRESS=y |
1038 | CONFIG_HID_DELL=y | ||
1039 | CONFIG_HID_EZKEY=y | 1060 | CONFIG_HID_EZKEY=y |
1040 | CONFIG_HID_GYRATION=y | 1061 | CONFIG_HID_GYRATION=y |
1041 | CONFIG_HID_LOGITECH=y | 1062 | CONFIG_HID_LOGITECH=y |
@@ -1043,12 +1064,15 @@ CONFIG_HID_LOGITECH=y | |||
1043 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 1064 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
1044 | CONFIG_HID_MICROSOFT=y | 1065 | CONFIG_HID_MICROSOFT=y |
1045 | CONFIG_HID_MONTEREY=y | 1066 | CONFIG_HID_MONTEREY=y |
1067 | # CONFIG_HID_NTRIG is not set | ||
1046 | CONFIG_HID_PANTHERLORD=y | 1068 | CONFIG_HID_PANTHERLORD=y |
1047 | # CONFIG_PANTHERLORD_FF is not set | 1069 | # CONFIG_PANTHERLORD_FF is not set |
1048 | CONFIG_HID_PETALYNX=y | 1070 | CONFIG_HID_PETALYNX=y |
1049 | CONFIG_HID_SAMSUNG=y | 1071 | CONFIG_HID_SAMSUNG=y |
1050 | CONFIG_HID_SONY=y | 1072 | CONFIG_HID_SONY=y |
1051 | CONFIG_HID_SUNPLUS=y | 1073 | CONFIG_HID_SUNPLUS=y |
1074 | # CONFIG_GREENASIA_FF is not set | ||
1075 | # CONFIG_HID_TOPSEED is not set | ||
1052 | CONFIG_THRUSTMASTER_FF=m | 1076 | CONFIG_THRUSTMASTER_FF=m |
1053 | CONFIG_ZEROPLUS_FF=m | 1077 | CONFIG_ZEROPLUS_FF=m |
1054 | CONFIG_USB_SUPPORT=y | 1078 | CONFIG_USB_SUPPORT=y |
@@ -1069,6 +1093,8 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1069 | # CONFIG_USB_OTG_WHITELIST is not set | 1093 | # CONFIG_USB_OTG_WHITELIST is not set |
1070 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 1094 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
1071 | # CONFIG_USB_MON is not set | 1095 | # CONFIG_USB_MON is not set |
1096 | # CONFIG_USB_WUSB is not set | ||
1097 | # CONFIG_USB_WUSB_CBAF is not set | ||
1072 | 1098 | ||
1073 | # | 1099 | # |
1074 | # USB Host Controller Drivers | 1100 | # USB Host Controller Drivers |
@@ -1084,6 +1110,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1084 | # CONFIG_USB_UHCI_HCD is not set | 1110 | # CONFIG_USB_UHCI_HCD is not set |
1085 | # CONFIG_USB_SL811_HCD is not set | 1111 | # CONFIG_USB_SL811_HCD is not set |
1086 | # CONFIG_USB_R8A66597_HCD is not set | 1112 | # CONFIG_USB_R8A66597_HCD is not set |
1113 | # CONFIG_USB_WHCI_HCD is not set | ||
1114 | # CONFIG_USB_HWA_HCD is not set | ||
1087 | 1115 | ||
1088 | # | 1116 | # |
1089 | # USB Device Class drivers | 1117 | # USB Device Class drivers |
@@ -1094,11 +1122,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1094 | # CONFIG_USB_TMC is not set | 1122 | # CONFIG_USB_TMC is not set |
1095 | 1123 | ||
1096 | # | 1124 | # |
1097 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1125 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
1098 | # | 1126 | # |
1099 | 1127 | ||
1100 | # | 1128 | # |
1101 | # may also be needed; see USB_STORAGE Help for more information | 1129 | # see USB_STORAGE Help for more information |
1102 | # | 1130 | # |
1103 | CONFIG_USB_STORAGE=y | 1131 | CONFIG_USB_STORAGE=y |
1104 | # CONFIG_USB_STORAGE_DEBUG is not set | 1132 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -1151,6 +1179,7 @@ CONFIG_USB_LIBUSUAL=y | |||
1151 | # CONFIG_USB_ISIGHTFW is not set | 1179 | # CONFIG_USB_ISIGHTFW is not set |
1152 | # CONFIG_USB_VST is not set | 1180 | # CONFIG_USB_VST is not set |
1153 | # CONFIG_USB_GADGET is not set | 1181 | # CONFIG_USB_GADGET is not set |
1182 | # CONFIG_UWB is not set | ||
1154 | # CONFIG_MMC is not set | 1183 | # CONFIG_MMC is not set |
1155 | # CONFIG_MEMSTICK is not set | 1184 | # CONFIG_MEMSTICK is not set |
1156 | # CONFIG_NEW_LEDS is not set | 1185 | # CONFIG_NEW_LEDS is not set |
@@ -1176,6 +1205,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1176 | # | 1205 | # |
1177 | # CONFIG_RTC_DRV_M41T94 is not set | 1206 | # CONFIG_RTC_DRV_M41T94 is not set |
1178 | # CONFIG_RTC_DRV_DS1305 is not set | 1207 | # CONFIG_RTC_DRV_DS1305 is not set |
1208 | # CONFIG_RTC_DRV_DS1390 is not set | ||
1179 | # CONFIG_RTC_DRV_MAX6902 is not set | 1209 | # CONFIG_RTC_DRV_MAX6902 is not set |
1180 | CONFIG_RTC_DRV_R9701=y | 1210 | CONFIG_RTC_DRV_R9701=y |
1181 | # CONFIG_RTC_DRV_RS5C348 is not set | 1211 | # CONFIG_RTC_DRV_RS5C348 is not set |
@@ -1254,10 +1284,7 @@ CONFIG_TMPFS=y | |||
1254 | # CONFIG_HUGETLBFS is not set | 1284 | # CONFIG_HUGETLBFS is not set |
1255 | # CONFIG_HUGETLB_PAGE is not set | 1285 | # CONFIG_HUGETLB_PAGE is not set |
1256 | # CONFIG_CONFIGFS_FS is not set | 1286 | # CONFIG_CONFIGFS_FS is not set |
1257 | 1287 | CONFIG_MISC_FILESYSTEMS=y | |
1258 | # | ||
1259 | # Miscellaneous filesystems | ||
1260 | # | ||
1261 | # CONFIG_ADFS_FS is not set | 1288 | # CONFIG_ADFS_FS is not set |
1262 | # CONFIG_AFFS_FS is not set | 1289 | # CONFIG_AFFS_FS is not set |
1263 | # CONFIG_HFS_FS is not set | 1290 | # CONFIG_HFS_FS is not set |
@@ -1343,19 +1370,29 @@ CONFIG_FRAME_WARN=1024 | |||
1343 | CONFIG_DEBUG_FS=y | 1370 | CONFIG_DEBUG_FS=y |
1344 | # CONFIG_HEADERS_CHECK is not set | 1371 | # CONFIG_HEADERS_CHECK is not set |
1345 | # CONFIG_DEBUG_KERNEL is not set | 1372 | # CONFIG_DEBUG_KERNEL is not set |
1373 | CONFIG_STACKTRACE=y | ||
1346 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1374 | # CONFIG_DEBUG_BUGVERBOSE is not set |
1347 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1375 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1348 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1376 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1349 | # CONFIG_LATENCYTOP is not set | 1377 | # CONFIG_LATENCYTOP is not set |
1350 | CONFIG_NOP_TRACER=y | 1378 | CONFIG_NOP_TRACER=y |
1351 | CONFIG_HAVE_FTRACE=y | 1379 | CONFIG_HAVE_FUNCTION_TRACER=y |
1380 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
1381 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1382 | CONFIG_RING_BUFFER=y | ||
1383 | CONFIG_TRACING=y | ||
1384 | |||
1385 | # | ||
1386 | # Tracers | ||
1387 | # | ||
1352 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1388 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1353 | # CONFIG_SAMPLES is not set | 1389 | # CONFIG_SAMPLES is not set |
1390 | CONFIG_HAVE_ARCH_KGDB=y | ||
1354 | # CONFIG_SH_STANDARD_BIOS is not set | 1391 | # CONFIG_SH_STANDARD_BIOS is not set |
1355 | CONFIG_EARLY_SCIF_CONSOLE=y | 1392 | CONFIG_EARLY_SCIF_CONSOLE=y |
1356 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 | 1393 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 |
1357 | CONFIG_EARLY_PRINTK=y | 1394 | CONFIG_EARLY_PRINTK=y |
1358 | # CONFIG_SH_KGDB is not set | 1395 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1359 | 1396 | ||
1360 | # | 1397 | # |
1361 | # Security options | 1398 | # Security options |
@@ -1371,6 +1408,7 @@ CONFIG_CRYPTO=y | |||
1371 | # | 1408 | # |
1372 | # CONFIG_CRYPTO_FIPS is not set | 1409 | # CONFIG_CRYPTO_FIPS is not set |
1373 | # CONFIG_CRYPTO_MANAGER is not set | 1410 | # CONFIG_CRYPTO_MANAGER is not set |
1411 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1374 | # CONFIG_CRYPTO_GF128MUL is not set | 1412 | # CONFIG_CRYPTO_GF128MUL is not set |
1375 | # CONFIG_CRYPTO_NULL is not set | 1413 | # CONFIG_CRYPTO_NULL is not set |
1376 | # CONFIG_CRYPTO_CRYPTD is not set | 1414 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1454,6 +1492,7 @@ CONFIG_CRYPTO_HW=y | |||
1454 | # Library routines | 1492 | # Library routines |
1455 | # | 1493 | # |
1456 | CONFIG_BITREVERSE=y | 1494 | CONFIG_BITREVERSE=y |
1495 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1457 | # CONFIG_CRC_CCITT is not set | 1496 | # CONFIG_CRC_CCITT is not set |
1458 | # CONFIG_CRC16 is not set | 1497 | # CONFIG_CRC16 is not set |
1459 | CONFIG_CRC_T10DIF=y | 1498 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/rts7751r2dplus_defconfig b/arch/sh/configs/rts7751r2dplus_defconfig index f680d3eecdfb..3fca10e24833 100644 --- a/arch/sh/configs/rts7751r2dplus_defconfig +++ b/arch/sh/configs/rts7751r2dplus_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:47:39 2008 | 4 | # Fri Jan 9 17:26:10 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -77,6 +79,7 @@ CONFIG_SLAB=y | |||
77 | # CONFIG_SLUB is not set | 79 | # CONFIG_SLUB is not set |
78 | # CONFIG_SLOB is not set | 80 | # CONFIG_SLOB is not set |
79 | CONFIG_PROFILING=y | 81 | CONFIG_PROFILING=y |
82 | CONFIG_TRACEPOINTS=y | ||
80 | # CONFIG_MARKERS is not set | 83 | # CONFIG_MARKERS is not set |
81 | CONFIG_OPROFILE=y | 84 | CONFIG_OPROFILE=y |
82 | CONFIG_HAVE_OPROFILE=y | 85 | CONFIG_HAVE_OPROFILE=y |
@@ -89,18 +92,15 @@ CONFIG_HAVE_CLK=y | |||
89 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 92 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
90 | CONFIG_SLABINFO=y | 93 | CONFIG_SLABINFO=y |
91 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
92 | # CONFIG_TINY_SHMEM is not set | ||
93 | CONFIG_BASE_SMALL=0 | 95 | CONFIG_BASE_SMALL=0 |
94 | CONFIG_MODULES=y | 96 | CONFIG_MODULES=y |
95 | # CONFIG_MODULE_FORCE_LOAD is not set | 97 | # CONFIG_MODULE_FORCE_LOAD is not set |
96 | # CONFIG_MODULE_UNLOAD is not set | 98 | # CONFIG_MODULE_UNLOAD is not set |
97 | # CONFIG_MODVERSIONS is not set | 99 | # CONFIG_MODVERSIONS is not set |
98 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 100 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
99 | CONFIG_KMOD=y | ||
100 | CONFIG_BLOCK=y | 101 | CONFIG_BLOCK=y |
101 | # CONFIG_LBD is not set | 102 | # CONFIG_LBD is not set |
102 | # CONFIG_BLK_DEV_IO_TRACE is not set | 103 | # CONFIG_BLK_DEV_IO_TRACE is not set |
103 | # CONFIG_LSF is not set | ||
104 | # CONFIG_BLK_DEV_BSG is not set | 104 | # CONFIG_BLK_DEV_BSG is not set |
105 | # CONFIG_BLK_DEV_INTEGRITY is not set | 105 | # CONFIG_BLK_DEV_INTEGRITY is not set |
106 | 106 | ||
@@ -117,6 +117,10 @@ CONFIG_DEFAULT_AS=y | |||
117 | # CONFIG_DEFAULT_NOOP is not set | 117 | # CONFIG_DEFAULT_NOOP is not set |
118 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 118 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
119 | CONFIG_CLASSIC_RCU=y | 119 | CONFIG_CLASSIC_RCU=y |
120 | # CONFIG_TREE_RCU is not set | ||
121 | # CONFIG_PREEMPT_RCU is not set | ||
122 | # CONFIG_TREE_RCU_TRACE is not set | ||
123 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
120 | # CONFIG_FREEZER is not set | 124 | # CONFIG_FREEZER is not set |
121 | 125 | ||
122 | # | 126 | # |
@@ -124,6 +128,7 @@ CONFIG_CLASSIC_RCU=y | |||
124 | # | 128 | # |
125 | CONFIG_CPU_SH4=y | 129 | CONFIG_CPU_SH4=y |
126 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
127 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 132 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
128 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 133 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
129 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 134 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -187,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
187 | CONFIG_SPARSEMEM_STATIC=y | 192 | CONFIG_SPARSEMEM_STATIC=y |
188 | CONFIG_PAGEFLAGS_EXTENDED=y | 193 | CONFIG_PAGEFLAGS_EXTENDED=y |
189 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 194 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
190 | # CONFIG_RESOURCES_64BIT is not set | ||
191 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 195 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
192 | CONFIG_ZONE_DMA_FLAG=0 | 196 | CONFIG_ZONE_DMA_FLAG=0 |
193 | CONFIG_NR_QUICK=2 | 197 | CONFIG_NR_QUICK=2 |
@@ -293,6 +297,7 @@ CONFIG_PCI=y | |||
293 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 297 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
294 | CONFIG_PCI_AUTO=y | 298 | CONFIG_PCI_AUTO=y |
295 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 299 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
300 | # CONFIG_PCIEPORTBUS is not set | ||
296 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 301 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
297 | CONFIG_PCI_LEGACY=y | 302 | CONFIG_PCI_LEGACY=y |
298 | # CONFIG_PCCARD is not set | 303 | # CONFIG_PCCARD is not set |
@@ -308,11 +313,18 @@ CONFIG_BINFMT_ELF=y | |||
308 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 313 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
309 | # CONFIG_HAVE_AOUT is not set | 314 | # CONFIG_HAVE_AOUT is not set |
310 | # CONFIG_BINFMT_MISC is not set | 315 | # CONFIG_BINFMT_MISC is not set |
316 | |||
317 | # | ||
318 | # Power management options (EXPERIMENTAL) | ||
319 | # | ||
320 | # CONFIG_PM is not set | ||
321 | # CONFIG_CPU_IDLE is not set | ||
311 | CONFIG_NET=y | 322 | CONFIG_NET=y |
312 | 323 | ||
313 | # | 324 | # |
314 | # Networking options | 325 | # Networking options |
315 | # | 326 | # |
327 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
316 | CONFIG_PACKET=y | 328 | CONFIG_PACKET=y |
317 | # CONFIG_PACKET_MMAP is not set | 329 | # CONFIG_PACKET_MMAP is not set |
318 | CONFIG_UNIX=y | 330 | CONFIG_UNIX=y |
@@ -365,6 +377,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
365 | # CONFIG_ECONET is not set | 377 | # CONFIG_ECONET is not set |
366 | # CONFIG_WAN_ROUTER is not set | 378 | # CONFIG_WAN_ROUTER is not set |
367 | # CONFIG_NET_SCHED is not set | 379 | # CONFIG_NET_SCHED is not set |
380 | # CONFIG_DCB is not set | ||
368 | 381 | ||
369 | # | 382 | # |
370 | # Network testing | 383 | # Network testing |
@@ -381,8 +394,8 @@ CONFIG_WIRELESS=y | |||
381 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 394 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
382 | CONFIG_WIRELESS_EXT=y | 395 | CONFIG_WIRELESS_EXT=y |
383 | CONFIG_WIRELESS_EXT_SYSFS=y | 396 | CONFIG_WIRELESS_EXT_SYSFS=y |
397 | # CONFIG_LIB80211 is not set | ||
384 | # CONFIG_MAC80211 is not set | 398 | # CONFIG_MAC80211 is not set |
385 | # CONFIG_IEEE80211 is not set | ||
386 | # CONFIG_RFKILL is not set | 399 | # CONFIG_RFKILL is not set |
387 | # CONFIG_NET_9P is not set | 400 | # CONFIG_NET_9P is not set |
388 | 401 | ||
@@ -426,6 +439,7 @@ CONFIG_MISC_DEVICES=y | |||
426 | # CONFIG_TIFM_CORE is not set | 439 | # CONFIG_TIFM_CORE is not set |
427 | # CONFIG_ENCLOSURE_SERVICES is not set | 440 | # CONFIG_ENCLOSURE_SERVICES is not set |
428 | # CONFIG_HP_ILO is not set | 441 | # CONFIG_HP_ILO is not set |
442 | # CONFIG_C2PORT is not set | ||
429 | CONFIG_HAVE_IDE=y | 443 | CONFIG_HAVE_IDE=y |
430 | # CONFIG_IDE is not set | 444 | # CONFIG_IDE is not set |
431 | 445 | ||
@@ -468,6 +482,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
468 | # CONFIG_SCSI_SRP_ATTRS is not set | 482 | # CONFIG_SCSI_SRP_ATTRS is not set |
469 | CONFIG_SCSI_LOWLEVEL=y | 483 | CONFIG_SCSI_LOWLEVEL=y |
470 | # CONFIG_ISCSI_TCP is not set | 484 | # CONFIG_ISCSI_TCP is not set |
485 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
471 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 486 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
472 | # CONFIG_SCSI_3W_9XXX is not set | 487 | # CONFIG_SCSI_3W_9XXX is not set |
473 | # CONFIG_SCSI_ACARD is not set | 488 | # CONFIG_SCSI_ACARD is not set |
@@ -481,6 +496,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
481 | # CONFIG_MEGARAID_LEGACY is not set | 496 | # CONFIG_MEGARAID_LEGACY is not set |
482 | # CONFIG_MEGARAID_SAS is not set | 497 | # CONFIG_MEGARAID_SAS is not set |
483 | # CONFIG_SCSI_HPTIOP is not set | 498 | # CONFIG_SCSI_HPTIOP is not set |
499 | # CONFIG_LIBFC is not set | ||
500 | # CONFIG_FCOE is not set | ||
484 | # CONFIG_SCSI_DMX3191D is not set | 501 | # CONFIG_SCSI_DMX3191D is not set |
485 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 502 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
486 | # CONFIG_SCSI_IPS is not set | 503 | # CONFIG_SCSI_IPS is not set |
@@ -593,6 +610,7 @@ CONFIG_MII=y | |||
593 | # CONFIG_SMC91X is not set | 610 | # CONFIG_SMC91X is not set |
594 | # CONFIG_ENC28J60 is not set | 611 | # CONFIG_ENC28J60 is not set |
595 | # CONFIG_SMC911X is not set | 612 | # CONFIG_SMC911X is not set |
613 | # CONFIG_SMSC911X is not set | ||
596 | # CONFIG_NET_TULIP is not set | 614 | # CONFIG_NET_TULIP is not set |
597 | # CONFIG_HP100 is not set | 615 | # CONFIG_HP100 is not set |
598 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 616 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -608,7 +626,6 @@ CONFIG_NET_PCI=y | |||
608 | # CONFIG_ADAPTEC_STARFIRE is not set | 626 | # CONFIG_ADAPTEC_STARFIRE is not set |
609 | # CONFIG_B44 is not set | 627 | # CONFIG_B44 is not set |
610 | # CONFIG_FORCEDETH is not set | 628 | # CONFIG_FORCEDETH is not set |
611 | # CONFIG_EEPRO100 is not set | ||
612 | # CONFIG_E100 is not set | 629 | # CONFIG_E100 is not set |
613 | # CONFIG_FEALNX is not set | 630 | # CONFIG_FEALNX is not set |
614 | # CONFIG_NATSEMI is not set | 631 | # CONFIG_NATSEMI is not set |
@@ -622,6 +639,7 @@ CONFIG_8139TOO=y | |||
622 | # CONFIG_R6040 is not set | 639 | # CONFIG_R6040 is not set |
623 | # CONFIG_SIS900 is not set | 640 | # CONFIG_SIS900 is not set |
624 | # CONFIG_EPIC100 is not set | 641 | # CONFIG_EPIC100 is not set |
642 | # CONFIG_SMSC9420 is not set | ||
625 | # CONFIG_SUNDANCE is not set | 643 | # CONFIG_SUNDANCE is not set |
626 | # CONFIG_TLAN is not set | 644 | # CONFIG_TLAN is not set |
627 | # CONFIG_VIA_RHINE is not set | 645 | # CONFIG_VIA_RHINE is not set |
@@ -650,6 +668,7 @@ CONFIG_NETDEV_1000=y | |||
650 | # CONFIG_JME is not set | 668 | # CONFIG_JME is not set |
651 | CONFIG_NETDEV_10000=y | 669 | CONFIG_NETDEV_10000=y |
652 | # CONFIG_CHELSIO_T1 is not set | 670 | # CONFIG_CHELSIO_T1 is not set |
671 | CONFIG_CHELSIO_T3_DEPENDS=y | ||
653 | # CONFIG_CHELSIO_T3 is not set | 672 | # CONFIG_CHELSIO_T3 is not set |
654 | # CONFIG_ENIC is not set | 673 | # CONFIG_ENIC is not set |
655 | # CONFIG_IXGBE is not set | 674 | # CONFIG_IXGBE is not set |
@@ -658,6 +677,7 @@ CONFIG_NETDEV_10000=y | |||
658 | # CONFIG_MYRI10GE is not set | 677 | # CONFIG_MYRI10GE is not set |
659 | # CONFIG_NETXEN_NIC is not set | 678 | # CONFIG_NETXEN_NIC is not set |
660 | # CONFIG_NIU is not set | 679 | # CONFIG_NIU is not set |
680 | # CONFIG_MLX4_EN is not set | ||
661 | # CONFIG_MLX4_CORE is not set | 681 | # CONFIG_MLX4_CORE is not set |
662 | # CONFIG_TEHUTI is not set | 682 | # CONFIG_TEHUTI is not set |
663 | # CONFIG_BNX2X is not set | 683 | # CONFIG_BNX2X is not set |
@@ -755,6 +775,7 @@ CONFIG_SERIAL_CORE=y | |||
755 | CONFIG_SERIAL_CORE_CONSOLE=y | 775 | CONFIG_SERIAL_CORE_CONSOLE=y |
756 | # CONFIG_SERIAL_JSM is not set | 776 | # CONFIG_SERIAL_JSM is not set |
757 | CONFIG_UNIX98_PTYS=y | 777 | CONFIG_UNIX98_PTYS=y |
778 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
758 | CONFIG_LEGACY_PTYS=y | 779 | CONFIG_LEGACY_PTYS=y |
759 | CONFIG_LEGACY_PTY_COUNT=256 | 780 | CONFIG_LEGACY_PTY_COUNT=256 |
760 | # CONFIG_IPMI_HANDLER is not set | 781 | # CONFIG_IPMI_HANDLER is not set |
@@ -777,7 +798,7 @@ CONFIG_SPI_SH_SCI=y | |||
777 | # | 798 | # |
778 | # SPI Protocol Masters | 799 | # SPI Protocol Masters |
779 | # | 800 | # |
780 | # CONFIG_SPI_AT25 is not set | 801 | # CONFIG_EEPROM_AT25 is not set |
781 | # CONFIG_SPI_SPIDEV is not set | 802 | # CONFIG_SPI_SPIDEV is not set |
782 | # CONFIG_SPI_TLE62X0 is not set | 803 | # CONFIG_SPI_TLE62X0 is not set |
783 | # CONFIG_W1 is not set | 804 | # CONFIG_W1 is not set |
@@ -805,11 +826,11 @@ CONFIG_HWMON=y | |||
805 | # CONFIG_THERMAL is not set | 826 | # CONFIG_THERMAL is not set |
806 | # CONFIG_THERMAL_HWMON is not set | 827 | # CONFIG_THERMAL_HWMON is not set |
807 | # CONFIG_WATCHDOG is not set | 828 | # CONFIG_WATCHDOG is not set |
829 | CONFIG_SSB_POSSIBLE=y | ||
808 | 830 | ||
809 | # | 831 | # |
810 | # Sonics Silicon Backplane | 832 | # Sonics Silicon Backplane |
811 | # | 833 | # |
812 | CONFIG_SSB_POSSIBLE=y | ||
813 | # CONFIG_SSB is not set | 834 | # CONFIG_SSB is not set |
814 | 835 | ||
815 | # | 836 | # |
@@ -819,7 +840,7 @@ CONFIG_SSB_POSSIBLE=y | |||
819 | CONFIG_MFD_SM501=y | 840 | CONFIG_MFD_SM501=y |
820 | # CONFIG_HTC_PASIC3 is not set | 841 | # CONFIG_HTC_PASIC3 is not set |
821 | # CONFIG_MFD_TMIO is not set | 842 | # CONFIG_MFD_TMIO is not set |
822 | # CONFIG_MFD_WM8400 is not set | 843 | # CONFIG_REGULATOR is not set |
823 | 844 | ||
824 | # | 845 | # |
825 | # Multimedia devices | 846 | # Multimedia devices |
@@ -852,11 +873,12 @@ CONFIG_FB_CFB_FILLRECT=y | |||
852 | CONFIG_FB_CFB_COPYAREA=y | 873 | CONFIG_FB_CFB_COPYAREA=y |
853 | CONFIG_FB_CFB_IMAGEBLIT=y | 874 | CONFIG_FB_CFB_IMAGEBLIT=y |
854 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 875 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
855 | # CONFIG_FB_SYS_FILLRECT is not set | 876 | CONFIG_FB_SYS_FILLRECT=m |
856 | # CONFIG_FB_SYS_COPYAREA is not set | 877 | CONFIG_FB_SYS_COPYAREA=m |
857 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 878 | CONFIG_FB_SYS_IMAGEBLIT=m |
858 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 879 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
859 | # CONFIG_FB_SYS_FOPS is not set | 880 | CONFIG_FB_SYS_FOPS=m |
881 | CONFIG_FB_DEFERRED_IO=y | ||
860 | # CONFIG_FB_SVGALIB is not set | 882 | # CONFIG_FB_SVGALIB is not set |
861 | # CONFIG_FB_MACMODES is not set | 883 | # CONFIG_FB_MACMODES is not set |
862 | # CONFIG_FB_BACKLIGHT is not set | 884 | # CONFIG_FB_BACKLIGHT is not set |
@@ -895,6 +917,7 @@ CONFIG_FB_SH_MOBILE_LCDC=m | |||
895 | CONFIG_FB_SM501=y | 917 | CONFIG_FB_SM501=y |
896 | # CONFIG_FB_VIRTUAL is not set | 918 | # CONFIG_FB_VIRTUAL is not set |
897 | # CONFIG_FB_METRONOME is not set | 919 | # CONFIG_FB_METRONOME is not set |
920 | # CONFIG_FB_MB862XX is not set | ||
898 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 921 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
899 | 922 | ||
900 | # | 923 | # |
@@ -1031,11 +1054,9 @@ CONFIG_HID_COMPAT=y | |||
1031 | CONFIG_HID_A4TECH=y | 1054 | CONFIG_HID_A4TECH=y |
1032 | CONFIG_HID_APPLE=y | 1055 | CONFIG_HID_APPLE=y |
1033 | CONFIG_HID_BELKIN=y | 1056 | CONFIG_HID_BELKIN=y |
1034 | CONFIG_HID_BRIGHT=y | ||
1035 | CONFIG_HID_CHERRY=y | 1057 | CONFIG_HID_CHERRY=y |
1036 | CONFIG_HID_CHICONY=y | 1058 | CONFIG_HID_CHICONY=y |
1037 | CONFIG_HID_CYPRESS=y | 1059 | CONFIG_HID_CYPRESS=y |
1038 | CONFIG_HID_DELL=y | ||
1039 | CONFIG_HID_EZKEY=y | 1060 | CONFIG_HID_EZKEY=y |
1040 | CONFIG_HID_GYRATION=y | 1061 | CONFIG_HID_GYRATION=y |
1041 | CONFIG_HID_LOGITECH=y | 1062 | CONFIG_HID_LOGITECH=y |
@@ -1043,12 +1064,15 @@ CONFIG_HID_LOGITECH=y | |||
1043 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 1064 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
1044 | CONFIG_HID_MICROSOFT=y | 1065 | CONFIG_HID_MICROSOFT=y |
1045 | CONFIG_HID_MONTEREY=y | 1066 | CONFIG_HID_MONTEREY=y |
1067 | # CONFIG_HID_NTRIG is not set | ||
1046 | CONFIG_HID_PANTHERLORD=y | 1068 | CONFIG_HID_PANTHERLORD=y |
1047 | # CONFIG_PANTHERLORD_FF is not set | 1069 | # CONFIG_PANTHERLORD_FF is not set |
1048 | CONFIG_HID_PETALYNX=y | 1070 | CONFIG_HID_PETALYNX=y |
1049 | CONFIG_HID_SAMSUNG=y | 1071 | CONFIG_HID_SAMSUNG=y |
1050 | CONFIG_HID_SONY=y | 1072 | CONFIG_HID_SONY=y |
1051 | CONFIG_HID_SUNPLUS=y | 1073 | CONFIG_HID_SUNPLUS=y |
1074 | # CONFIG_GREENASIA_FF is not set | ||
1075 | # CONFIG_HID_TOPSEED is not set | ||
1052 | CONFIG_THRUSTMASTER_FF=m | 1076 | CONFIG_THRUSTMASTER_FF=m |
1053 | CONFIG_ZEROPLUS_FF=m | 1077 | CONFIG_ZEROPLUS_FF=m |
1054 | CONFIG_USB_SUPPORT=y | 1078 | CONFIG_USB_SUPPORT=y |
@@ -1069,6 +1093,8 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1069 | # CONFIG_USB_OTG_WHITELIST is not set | 1093 | # CONFIG_USB_OTG_WHITELIST is not set |
1070 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 1094 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
1071 | # CONFIG_USB_MON is not set | 1095 | # CONFIG_USB_MON is not set |
1096 | # CONFIG_USB_WUSB is not set | ||
1097 | # CONFIG_USB_WUSB_CBAF is not set | ||
1072 | 1098 | ||
1073 | # | 1099 | # |
1074 | # USB Host Controller Drivers | 1100 | # USB Host Controller Drivers |
@@ -1084,6 +1110,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1084 | # CONFIG_USB_UHCI_HCD is not set | 1110 | # CONFIG_USB_UHCI_HCD is not set |
1085 | # CONFIG_USB_SL811_HCD is not set | 1111 | # CONFIG_USB_SL811_HCD is not set |
1086 | # CONFIG_USB_R8A66597_HCD is not set | 1112 | # CONFIG_USB_R8A66597_HCD is not set |
1113 | # CONFIG_USB_WHCI_HCD is not set | ||
1114 | # CONFIG_USB_HWA_HCD is not set | ||
1087 | 1115 | ||
1088 | # | 1116 | # |
1089 | # USB Device Class drivers | 1117 | # USB Device Class drivers |
@@ -1094,11 +1122,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1094 | # CONFIG_USB_TMC is not set | 1122 | # CONFIG_USB_TMC is not set |
1095 | 1123 | ||
1096 | # | 1124 | # |
1097 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1125 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
1098 | # | 1126 | # |
1099 | 1127 | ||
1100 | # | 1128 | # |
1101 | # may also be needed; see USB_STORAGE Help for more information | 1129 | # see USB_STORAGE Help for more information |
1102 | # | 1130 | # |
1103 | CONFIG_USB_STORAGE=y | 1131 | CONFIG_USB_STORAGE=y |
1104 | # CONFIG_USB_STORAGE_DEBUG is not set | 1132 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -1151,6 +1179,7 @@ CONFIG_USB_LIBUSUAL=y | |||
1151 | # CONFIG_USB_ISIGHTFW is not set | 1179 | # CONFIG_USB_ISIGHTFW is not set |
1152 | # CONFIG_USB_VST is not set | 1180 | # CONFIG_USB_VST is not set |
1153 | # CONFIG_USB_GADGET is not set | 1181 | # CONFIG_USB_GADGET is not set |
1182 | # CONFIG_UWB is not set | ||
1154 | # CONFIG_MMC is not set | 1183 | # CONFIG_MMC is not set |
1155 | # CONFIG_MEMSTICK is not set | 1184 | # CONFIG_MEMSTICK is not set |
1156 | # CONFIG_NEW_LEDS is not set | 1185 | # CONFIG_NEW_LEDS is not set |
@@ -1176,6 +1205,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1176 | # | 1205 | # |
1177 | # CONFIG_RTC_DRV_M41T94 is not set | 1206 | # CONFIG_RTC_DRV_M41T94 is not set |
1178 | # CONFIG_RTC_DRV_DS1305 is not set | 1207 | # CONFIG_RTC_DRV_DS1305 is not set |
1208 | # CONFIG_RTC_DRV_DS1390 is not set | ||
1179 | # CONFIG_RTC_DRV_MAX6902 is not set | 1209 | # CONFIG_RTC_DRV_MAX6902 is not set |
1180 | CONFIG_RTC_DRV_R9701=y | 1210 | CONFIG_RTC_DRV_R9701=y |
1181 | # CONFIG_RTC_DRV_RS5C348 is not set | 1211 | # CONFIG_RTC_DRV_RS5C348 is not set |
@@ -1254,10 +1284,7 @@ CONFIG_TMPFS=y | |||
1254 | # CONFIG_HUGETLBFS is not set | 1284 | # CONFIG_HUGETLBFS is not set |
1255 | # CONFIG_HUGETLB_PAGE is not set | 1285 | # CONFIG_HUGETLB_PAGE is not set |
1256 | # CONFIG_CONFIGFS_FS is not set | 1286 | # CONFIG_CONFIGFS_FS is not set |
1257 | 1287 | CONFIG_MISC_FILESYSTEMS=y | |
1258 | # | ||
1259 | # Miscellaneous filesystems | ||
1260 | # | ||
1261 | # CONFIG_ADFS_FS is not set | 1288 | # CONFIG_ADFS_FS is not set |
1262 | # CONFIG_AFFS_FS is not set | 1289 | # CONFIG_AFFS_FS is not set |
1263 | # CONFIG_HFS_FS is not set | 1290 | # CONFIG_HFS_FS is not set |
@@ -1343,19 +1370,29 @@ CONFIG_FRAME_WARN=1024 | |||
1343 | CONFIG_DEBUG_FS=y | 1370 | CONFIG_DEBUG_FS=y |
1344 | # CONFIG_HEADERS_CHECK is not set | 1371 | # CONFIG_HEADERS_CHECK is not set |
1345 | # CONFIG_DEBUG_KERNEL is not set | 1372 | # CONFIG_DEBUG_KERNEL is not set |
1373 | CONFIG_STACKTRACE=y | ||
1346 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1374 | # CONFIG_DEBUG_BUGVERBOSE is not set |
1347 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1375 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1348 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1376 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1349 | # CONFIG_LATENCYTOP is not set | 1377 | # CONFIG_LATENCYTOP is not set |
1350 | CONFIG_NOP_TRACER=y | 1378 | CONFIG_NOP_TRACER=y |
1351 | CONFIG_HAVE_FTRACE=y | 1379 | CONFIG_HAVE_FUNCTION_TRACER=y |
1380 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
1381 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1382 | CONFIG_RING_BUFFER=y | ||
1383 | CONFIG_TRACING=y | ||
1384 | |||
1385 | # | ||
1386 | # Tracers | ||
1387 | # | ||
1352 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1388 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1353 | # CONFIG_SAMPLES is not set | 1389 | # CONFIG_SAMPLES is not set |
1390 | CONFIG_HAVE_ARCH_KGDB=y | ||
1354 | # CONFIG_SH_STANDARD_BIOS is not set | 1391 | # CONFIG_SH_STANDARD_BIOS is not set |
1355 | CONFIG_EARLY_SCIF_CONSOLE=y | 1392 | CONFIG_EARLY_SCIF_CONSOLE=y |
1356 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 | 1393 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 |
1357 | CONFIG_EARLY_PRINTK=y | 1394 | CONFIG_EARLY_PRINTK=y |
1358 | # CONFIG_SH_KGDB is not set | 1395 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1359 | 1396 | ||
1360 | # | 1397 | # |
1361 | # Security options | 1398 | # Security options |
@@ -1371,6 +1408,7 @@ CONFIG_CRYPTO=y | |||
1371 | # | 1408 | # |
1372 | # CONFIG_CRYPTO_FIPS is not set | 1409 | # CONFIG_CRYPTO_FIPS is not set |
1373 | # CONFIG_CRYPTO_MANAGER is not set | 1410 | # CONFIG_CRYPTO_MANAGER is not set |
1411 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1374 | # CONFIG_CRYPTO_GF128MUL is not set | 1412 | # CONFIG_CRYPTO_GF128MUL is not set |
1375 | # CONFIG_CRYPTO_NULL is not set | 1413 | # CONFIG_CRYPTO_NULL is not set |
1376 | # CONFIG_CRYPTO_CRYPTD is not set | 1414 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1454,6 +1492,7 @@ CONFIG_CRYPTO_HW=y | |||
1454 | # Library routines | 1492 | # Library routines |
1455 | # | 1493 | # |
1456 | CONFIG_BITREVERSE=y | 1494 | CONFIG_BITREVERSE=y |
1495 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1457 | # CONFIG_CRC_CCITT is not set | 1496 | # CONFIG_CRC_CCITT is not set |
1458 | # CONFIG_CRC16 is not set | 1497 | # CONFIG_CRC16 is not set |
1459 | CONFIG_CRC_T10DIF=y | 1498 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/sdk7780_defconfig b/arch/sh/configs/sdk7780_defconfig index 543287b97a6a..5d6b06755ae7 100644 --- a/arch/sh/configs/sdk7780_defconfig +++ b/arch/sh/configs/sdk7780_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:53:22 2008 | 4 | # Fri Jan 9 17:26:40 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -59,6 +61,7 @@ CONFIG_UID16=y | |||
59 | CONFIG_SYSCTL_SYSCALL=y | 61 | CONFIG_SYSCTL_SYSCALL=y |
60 | CONFIG_KALLSYMS=y | 62 | CONFIG_KALLSYMS=y |
61 | CONFIG_KALLSYMS_ALL=y | 63 | CONFIG_KALLSYMS_ALL=y |
64 | CONFIG_KALLSYMS_STRIP_GENERATED=y | ||
62 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 65 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
63 | CONFIG_HOTPLUG=y | 66 | CONFIG_HOTPLUG=y |
64 | CONFIG_PRINTK=y | 67 | CONFIG_PRINTK=y |
@@ -81,7 +84,6 @@ CONFIG_SLUB_DEBUG=y | |||
81 | CONFIG_SLUB=y | 84 | CONFIG_SLUB=y |
82 | # CONFIG_SLOB is not set | 85 | # CONFIG_SLOB is not set |
83 | # CONFIG_PROFILING is not set | 86 | # CONFIG_PROFILING is not set |
84 | # CONFIG_MARKERS is not set | ||
85 | CONFIG_HAVE_OPROFILE=y | 87 | CONFIG_HAVE_OPROFILE=y |
86 | # CONFIG_KPROBES is not set | 88 | # CONFIG_KPROBES is not set |
87 | CONFIG_HAVE_IOREMAP_PROT=y | 89 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -92,7 +94,6 @@ CONFIG_HAVE_CLK=y | |||
92 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 94 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
93 | CONFIG_SLABINFO=y | 95 | CONFIG_SLABINFO=y |
94 | CONFIG_RT_MUTEXES=y | 96 | CONFIG_RT_MUTEXES=y |
95 | # CONFIG_TINY_SHMEM is not set | ||
96 | CONFIG_BASE_SMALL=0 | 97 | CONFIG_BASE_SMALL=0 |
97 | CONFIG_MODULES=y | 98 | CONFIG_MODULES=y |
98 | # CONFIG_MODULE_FORCE_LOAD is not set | 99 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -100,11 +101,9 @@ CONFIG_MODULE_UNLOAD=y | |||
100 | CONFIG_MODULE_FORCE_UNLOAD=y | 101 | CONFIG_MODULE_FORCE_UNLOAD=y |
101 | # CONFIG_MODVERSIONS is not set | 102 | # CONFIG_MODVERSIONS is not set |
102 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 103 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
103 | CONFIG_KMOD=y | ||
104 | CONFIG_BLOCK=y | 104 | CONFIG_BLOCK=y |
105 | CONFIG_LBD=y | 105 | CONFIG_LBD=y |
106 | # CONFIG_BLK_DEV_IO_TRACE is not set | 106 | # CONFIG_BLK_DEV_IO_TRACE is not set |
107 | # CONFIG_LSF is not set | ||
108 | # CONFIG_BLK_DEV_BSG is not set | 107 | # CONFIG_BLK_DEV_BSG is not set |
109 | # CONFIG_BLK_DEV_INTEGRITY is not set | 108 | # CONFIG_BLK_DEV_INTEGRITY is not set |
110 | 109 | ||
@@ -121,6 +120,10 @@ CONFIG_DEFAULT_AS=y | |||
121 | # CONFIG_DEFAULT_NOOP is not set | 120 | # CONFIG_DEFAULT_NOOP is not set |
122 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 121 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
123 | CONFIG_CLASSIC_RCU=y | 122 | CONFIG_CLASSIC_RCU=y |
123 | # CONFIG_TREE_RCU is not set | ||
124 | # CONFIG_PREEMPT_RCU is not set | ||
125 | # CONFIG_TREE_RCU_TRACE is not set | ||
126 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
124 | # CONFIG_FREEZER is not set | 127 | # CONFIG_FREEZER is not set |
125 | 128 | ||
126 | # | 129 | # |
@@ -129,6 +132,7 @@ CONFIG_CLASSIC_RCU=y | |||
129 | CONFIG_CPU_SH4=y | 132 | CONFIG_CPU_SH4=y |
130 | CONFIG_CPU_SH4A=y | 133 | CONFIG_CPU_SH4A=y |
131 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 134 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
135 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
132 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 136 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
133 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 137 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
134 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 138 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -199,7 +203,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
199 | CONFIG_SPARSEMEM_STATIC=y | 203 | CONFIG_SPARSEMEM_STATIC=y |
200 | CONFIG_PAGEFLAGS_EXTENDED=y | 204 | CONFIG_PAGEFLAGS_EXTENDED=y |
201 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 205 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
202 | CONFIG_RESOURCES_64BIT=y | ||
203 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 206 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
204 | CONFIG_ZONE_DMA_FLAG=0 | 207 | CONFIG_ZONE_DMA_FLAG=0 |
205 | CONFIG_NR_QUICK=2 | 208 | CONFIG_NR_QUICK=2 |
@@ -282,7 +285,6 @@ CONFIG_SCHED_HRTICK=y | |||
282 | # CONFIG_PREEMPT_NONE is not set | 285 | # CONFIG_PREEMPT_NONE is not set |
283 | # CONFIG_PREEMPT_VOLUNTARY is not set | 286 | # CONFIG_PREEMPT_VOLUNTARY is not set |
284 | CONFIG_PREEMPT=y | 287 | CONFIG_PREEMPT=y |
285 | # CONFIG_PREEMPT_RCU is not set | ||
286 | CONFIG_GUSA=y | 288 | CONFIG_GUSA=y |
287 | 289 | ||
288 | # | 290 | # |
@@ -300,6 +302,7 @@ CONFIG_PCI=y | |||
300 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 302 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
301 | CONFIG_PCI_AUTO=y | 303 | CONFIG_PCI_AUTO=y |
302 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 304 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
305 | # CONFIG_PCIEPORTBUS is not set | ||
303 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 306 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
304 | # CONFIG_PCI_LEGACY is not set | 307 | # CONFIG_PCI_LEGACY is not set |
305 | CONFIG_PCI_DEBUG=y | 308 | CONFIG_PCI_DEBUG=y |
@@ -334,11 +337,18 @@ CONFIG_BINFMT_ELF=y | |||
334 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 337 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
335 | # CONFIG_HAVE_AOUT is not set | 338 | # CONFIG_HAVE_AOUT is not set |
336 | # CONFIG_BINFMT_MISC is not set | 339 | # CONFIG_BINFMT_MISC is not set |
340 | |||
341 | # | ||
342 | # Power management options (EXPERIMENTAL) | ||
343 | # | ||
344 | # CONFIG_PM is not set | ||
345 | # CONFIG_CPU_IDLE is not set | ||
337 | CONFIG_NET=y | 346 | CONFIG_NET=y |
338 | 347 | ||
339 | # | 348 | # |
340 | # Networking options | 349 | # Networking options |
341 | # | 350 | # |
351 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
342 | CONFIG_PACKET=y | 352 | CONFIG_PACKET=y |
343 | # CONFIG_PACKET_MMAP is not set | 353 | # CONFIG_PACKET_MMAP is not set |
344 | CONFIG_UNIX=y | 354 | CONFIG_UNIX=y |
@@ -434,6 +444,7 @@ CONFIG_NET_SCHED=y | |||
434 | # CONFIG_NET_SCH_GRED is not set | 444 | # CONFIG_NET_SCH_GRED is not set |
435 | # CONFIG_NET_SCH_DSMARK is not set | 445 | # CONFIG_NET_SCH_DSMARK is not set |
436 | # CONFIG_NET_SCH_NETEM is not set | 446 | # CONFIG_NET_SCH_NETEM is not set |
447 | # CONFIG_NET_SCH_DRR is not set | ||
437 | 448 | ||
438 | # | 449 | # |
439 | # Classification | 450 | # Classification |
@@ -449,6 +460,7 @@ CONFIG_NET_SCHED=y | |||
449 | # CONFIG_NET_EMATCH is not set | 460 | # CONFIG_NET_EMATCH is not set |
450 | # CONFIG_NET_CLS_ACT is not set | 461 | # CONFIG_NET_CLS_ACT is not set |
451 | CONFIG_NET_SCH_FIFO=y | 462 | CONFIG_NET_SCH_FIFO=y |
463 | # CONFIG_DCB is not set | ||
452 | 464 | ||
453 | # | 465 | # |
454 | # Network testing | 466 | # Network testing |
@@ -464,8 +476,8 @@ CONFIG_WIRELESS=y | |||
464 | # CONFIG_CFG80211 is not set | 476 | # CONFIG_CFG80211 is not set |
465 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 477 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
466 | # CONFIG_WIRELESS_EXT is not set | 478 | # CONFIG_WIRELESS_EXT is not set |
479 | # CONFIG_LIB80211 is not set | ||
467 | # CONFIG_MAC80211 is not set | 480 | # CONFIG_MAC80211 is not set |
468 | # CONFIG_IEEE80211 is not set | ||
469 | # CONFIG_RFKILL is not set | 481 | # CONFIG_RFKILL is not set |
470 | # CONFIG_NET_9P is not set | 482 | # CONFIG_NET_9P is not set |
471 | 483 | ||
@@ -516,6 +528,7 @@ CONFIG_IDE=y | |||
516 | # | 528 | # |
517 | # Please see Documentation/ide/ide.txt for help/info on IDE drives | 529 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
518 | # | 530 | # |
531 | CONFIG_IDE_ATAPI=y | ||
519 | # CONFIG_BLK_DEV_IDE_SATA is not set | 532 | # CONFIG_BLK_DEV_IDE_SATA is not set |
520 | CONFIG_IDE_GD=y | 533 | CONFIG_IDE_GD=y |
521 | CONFIG_IDE_GD_ATA=y | 534 | CONFIG_IDE_GD_ATA=y |
@@ -525,7 +538,6 @@ CONFIG_IDE_GD_ATA=y | |||
525 | CONFIG_BLK_DEV_IDECD=y | 538 | CONFIG_BLK_DEV_IDECD=y |
526 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | 539 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y |
527 | # CONFIG_BLK_DEV_IDETAPE is not set | 540 | # CONFIG_BLK_DEV_IDETAPE is not set |
528 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
529 | # CONFIG_IDE_TASK_IOCTL is not set | 541 | # CONFIG_IDE_TASK_IOCTL is not set |
530 | CONFIG_IDE_PROC_FS=y | 542 | CONFIG_IDE_PROC_FS=y |
531 | 543 | ||
@@ -553,6 +565,7 @@ CONFIG_BLK_DEV_GENERIC=y | |||
553 | # CONFIG_BLK_DEV_JMICRON is not set | 565 | # CONFIG_BLK_DEV_JMICRON is not set |
554 | # CONFIG_BLK_DEV_SC1200 is not set | 566 | # CONFIG_BLK_DEV_SC1200 is not set |
555 | # CONFIG_BLK_DEV_PIIX is not set | 567 | # CONFIG_BLK_DEV_PIIX is not set |
568 | # CONFIG_BLK_DEV_IT8172 is not set | ||
556 | # CONFIG_BLK_DEV_IT8213 is not set | 569 | # CONFIG_BLK_DEV_IT8213 is not set |
557 | # CONFIG_BLK_DEV_IT821X is not set | 570 | # CONFIG_BLK_DEV_IT821X is not set |
558 | # CONFIG_BLK_DEV_NS87415 is not set | 571 | # CONFIG_BLK_DEV_NS87415 is not set |
@@ -619,6 +632,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
619 | # CONFIG_MEGARAID_LEGACY is not set | 632 | # CONFIG_MEGARAID_LEGACY is not set |
620 | # CONFIG_MEGARAID_SAS is not set | 633 | # CONFIG_MEGARAID_SAS is not set |
621 | # CONFIG_SCSI_HPTIOP is not set | 634 | # CONFIG_SCSI_HPTIOP is not set |
635 | # CONFIG_LIBFC is not set | ||
636 | # CONFIG_FCOE is not set | ||
622 | # CONFIG_SCSI_DMX3191D is not set | 637 | # CONFIG_SCSI_DMX3191D is not set |
623 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 638 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
624 | # CONFIG_SCSI_IPS is not set | 639 | # CONFIG_SCSI_IPS is not set |
@@ -742,6 +757,7 @@ CONFIG_MII=y | |||
742 | # CONFIG_NET_VENDOR_3COM is not set | 757 | # CONFIG_NET_VENDOR_3COM is not set |
743 | CONFIG_SMC91X=y | 758 | CONFIG_SMC91X=y |
744 | # CONFIG_SMC911X is not set | 759 | # CONFIG_SMC911X is not set |
760 | # CONFIG_SMSC911X is not set | ||
745 | # CONFIG_NET_TULIP is not set | 761 | # CONFIG_NET_TULIP is not set |
746 | # CONFIG_HP100 is not set | 762 | # CONFIG_HP100 is not set |
747 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 763 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -826,6 +842,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y | |||
826 | CONFIG_MOUSE_PS2_SYNAPTICS=y | 842 | CONFIG_MOUSE_PS2_SYNAPTICS=y |
827 | CONFIG_MOUSE_PS2_LIFEBOOK=y | 843 | CONFIG_MOUSE_PS2_LIFEBOOK=y |
828 | CONFIG_MOUSE_PS2_TRACKPOINT=y | 844 | CONFIG_MOUSE_PS2_TRACKPOINT=y |
845 | # CONFIG_MOUSE_PS2_ELANTECH is not set | ||
829 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | 846 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set |
830 | # CONFIG_MOUSE_SERIAL is not set | 847 | # CONFIG_MOUSE_SERIAL is not set |
831 | # CONFIG_MOUSE_APPLETOUCH is not set | 848 | # CONFIG_MOUSE_APPLETOUCH is not set |
@@ -875,6 +892,7 @@ CONFIG_SERIAL_CORE=y | |||
875 | CONFIG_SERIAL_CORE_CONSOLE=y | 892 | CONFIG_SERIAL_CORE_CONSOLE=y |
876 | # CONFIG_SERIAL_JSM is not set | 893 | # CONFIG_SERIAL_JSM is not set |
877 | CONFIG_UNIX98_PTYS=y | 894 | CONFIG_UNIX98_PTYS=y |
895 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
878 | CONFIG_LEGACY_PTYS=y | 896 | CONFIG_LEGACY_PTYS=y |
879 | CONFIG_LEGACY_PTY_COUNT=256 | 897 | CONFIG_LEGACY_PTY_COUNT=256 |
880 | # CONFIG_PRINTER is not set | 898 | # CONFIG_PRINTER is not set |
@@ -905,11 +923,11 @@ CONFIG_POWER_SUPPLY=y | |||
905 | # CONFIG_THERMAL is not set | 923 | # CONFIG_THERMAL is not set |
906 | # CONFIG_THERMAL_HWMON is not set | 924 | # CONFIG_THERMAL_HWMON is not set |
907 | # CONFIG_WATCHDOG is not set | 925 | # CONFIG_WATCHDOG is not set |
926 | CONFIG_SSB_POSSIBLE=y | ||
908 | 927 | ||
909 | # | 928 | # |
910 | # Sonics Silicon Backplane | 929 | # Sonics Silicon Backplane |
911 | # | 930 | # |
912 | CONFIG_SSB_POSSIBLE=y | ||
913 | CONFIG_SSB=y | 931 | CONFIG_SSB=y |
914 | CONFIG_SSB_SPROM=y | 932 | CONFIG_SSB_SPROM=y |
915 | CONFIG_SSB_PCIHOST_POSSIBLE=y | 933 | CONFIG_SSB_PCIHOST_POSSIBLE=y |
@@ -929,7 +947,7 @@ CONFIG_SSB_DRIVER_PCICORE=y | |||
929 | # CONFIG_MFD_SM501 is not set | 947 | # CONFIG_MFD_SM501 is not set |
930 | # CONFIG_HTC_PASIC3 is not set | 948 | # CONFIG_HTC_PASIC3 is not set |
931 | # CONFIG_MFD_TMIO is not set | 949 | # CONFIG_MFD_TMIO is not set |
932 | # CONFIG_MFD_WM8400 is not set | 950 | # CONFIG_REGULATOR is not set |
933 | 951 | ||
934 | # | 952 | # |
935 | # Multimedia devices | 953 | # Multimedia devices |
@@ -957,15 +975,16 @@ CONFIG_FB=y | |||
957 | # CONFIG_FIRMWARE_EDID is not set | 975 | # CONFIG_FIRMWARE_EDID is not set |
958 | # CONFIG_FB_DDC is not set | 976 | # CONFIG_FB_DDC is not set |
959 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | 977 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set |
960 | CONFIG_FB_CFB_FILLRECT=m | 978 | # CONFIG_FB_CFB_FILLRECT is not set |
961 | CONFIG_FB_CFB_COPYAREA=m | 979 | # CONFIG_FB_CFB_COPYAREA is not set |
962 | CONFIG_FB_CFB_IMAGEBLIT=m | 980 | # CONFIG_FB_CFB_IMAGEBLIT is not set |
963 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 981 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
964 | # CONFIG_FB_SYS_FILLRECT is not set | 982 | CONFIG_FB_SYS_FILLRECT=m |
965 | # CONFIG_FB_SYS_COPYAREA is not set | 983 | CONFIG_FB_SYS_COPYAREA=m |
966 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 984 | CONFIG_FB_SYS_IMAGEBLIT=m |
967 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 985 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
968 | # CONFIG_FB_SYS_FOPS is not set | 986 | CONFIG_FB_SYS_FOPS=m |
987 | CONFIG_FB_DEFERRED_IO=y | ||
969 | # CONFIG_FB_SVGALIB is not set | 988 | # CONFIG_FB_SVGALIB is not set |
970 | # CONFIG_FB_MACMODES is not set | 989 | # CONFIG_FB_MACMODES is not set |
971 | # CONFIG_FB_BACKLIGHT is not set | 990 | # CONFIG_FB_BACKLIGHT is not set |
@@ -1003,6 +1022,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m | |||
1003 | CONFIG_FB_SH_MOBILE_LCDC=m | 1022 | CONFIG_FB_SH_MOBILE_LCDC=m |
1004 | # CONFIG_FB_VIRTUAL is not set | 1023 | # CONFIG_FB_VIRTUAL is not set |
1005 | # CONFIG_FB_METRONOME is not set | 1024 | # CONFIG_FB_METRONOME is not set |
1025 | # CONFIG_FB_MB862XX is not set | ||
1006 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 1026 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
1007 | 1027 | ||
1008 | # | 1028 | # |
@@ -1054,11 +1074,9 @@ CONFIG_HID_COMPAT=y | |||
1054 | CONFIG_HID_A4TECH=y | 1074 | CONFIG_HID_A4TECH=y |
1055 | CONFIG_HID_APPLE=y | 1075 | CONFIG_HID_APPLE=y |
1056 | CONFIG_HID_BELKIN=y | 1076 | CONFIG_HID_BELKIN=y |
1057 | CONFIG_HID_BRIGHT=y | ||
1058 | CONFIG_HID_CHERRY=y | 1077 | CONFIG_HID_CHERRY=y |
1059 | CONFIG_HID_CHICONY=y | 1078 | CONFIG_HID_CHICONY=y |
1060 | CONFIG_HID_CYPRESS=y | 1079 | CONFIG_HID_CYPRESS=y |
1061 | CONFIG_HID_DELL=y | ||
1062 | CONFIG_HID_EZKEY=y | 1080 | CONFIG_HID_EZKEY=y |
1063 | CONFIG_HID_GYRATION=y | 1081 | CONFIG_HID_GYRATION=y |
1064 | CONFIG_HID_LOGITECH=y | 1082 | CONFIG_HID_LOGITECH=y |
@@ -1066,12 +1084,15 @@ CONFIG_HID_LOGITECH=y | |||
1066 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 1084 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
1067 | CONFIG_HID_MICROSOFT=y | 1085 | CONFIG_HID_MICROSOFT=y |
1068 | CONFIG_HID_MONTEREY=y | 1086 | CONFIG_HID_MONTEREY=y |
1087 | # CONFIG_HID_NTRIG is not set | ||
1069 | CONFIG_HID_PANTHERLORD=y | 1088 | CONFIG_HID_PANTHERLORD=y |
1070 | # CONFIG_PANTHERLORD_FF is not set | 1089 | # CONFIG_PANTHERLORD_FF is not set |
1071 | CONFIG_HID_PETALYNX=y | 1090 | CONFIG_HID_PETALYNX=y |
1072 | CONFIG_HID_SAMSUNG=y | 1091 | CONFIG_HID_SAMSUNG=y |
1073 | CONFIG_HID_SONY=y | 1092 | CONFIG_HID_SONY=y |
1074 | CONFIG_HID_SUNPLUS=y | 1093 | CONFIG_HID_SUNPLUS=y |
1094 | # CONFIG_GREENASIA_FF is not set | ||
1095 | # CONFIG_HID_TOPSEED is not set | ||
1075 | CONFIG_THRUSTMASTER_FF=m | 1096 | CONFIG_THRUSTMASTER_FF=m |
1076 | CONFIG_ZEROPLUS_FF=m | 1097 | CONFIG_ZEROPLUS_FF=m |
1077 | CONFIG_USB_SUPPORT=y | 1098 | CONFIG_USB_SUPPORT=y |
@@ -1092,6 +1113,8 @@ CONFIG_USB_DEVICEFS=y | |||
1092 | # CONFIG_USB_OTG_WHITELIST is not set | 1113 | # CONFIG_USB_OTG_WHITELIST is not set |
1093 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 1114 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
1094 | CONFIG_USB_MON=y | 1115 | CONFIG_USB_MON=y |
1116 | # CONFIG_USB_WUSB is not set | ||
1117 | # CONFIG_USB_WUSB_CBAF is not set | ||
1095 | 1118 | ||
1096 | # | 1119 | # |
1097 | # USB Host Controller Drivers | 1120 | # USB Host Controller Drivers |
@@ -1106,6 +1129,8 @@ CONFIG_USB_EHCI_HCD=y | |||
1106 | # CONFIG_USB_UHCI_HCD is not set | 1129 | # CONFIG_USB_UHCI_HCD is not set |
1107 | # CONFIG_USB_SL811_HCD is not set | 1130 | # CONFIG_USB_SL811_HCD is not set |
1108 | # CONFIG_USB_R8A66597_HCD is not set | 1131 | # CONFIG_USB_R8A66597_HCD is not set |
1132 | # CONFIG_USB_WHCI_HCD is not set | ||
1133 | # CONFIG_USB_HWA_HCD is not set | ||
1109 | 1134 | ||
1110 | # | 1135 | # |
1111 | # USB Device Class drivers | 1136 | # USB Device Class drivers |
@@ -1116,11 +1141,11 @@ CONFIG_USB_PRINTER=y | |||
1116 | # CONFIG_USB_TMC is not set | 1141 | # CONFIG_USB_TMC is not set |
1117 | 1142 | ||
1118 | # | 1143 | # |
1119 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1144 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
1120 | # | 1145 | # |
1121 | 1146 | ||
1122 | # | 1147 | # |
1123 | # may also be needed; see USB_STORAGE Help for more information | 1148 | # see USB_STORAGE Help for more information |
1124 | # | 1149 | # |
1125 | CONFIG_USB_STORAGE=y | 1150 | CONFIG_USB_STORAGE=y |
1126 | # CONFIG_USB_STORAGE_DEBUG is not set | 1151 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -1176,6 +1201,7 @@ CONFIG_USB_STORAGE=y | |||
1176 | # CONFIG_USB_ISIGHTFW is not set | 1201 | # CONFIG_USB_ISIGHTFW is not set |
1177 | # CONFIG_USB_VST is not set | 1202 | # CONFIG_USB_VST is not set |
1178 | # CONFIG_USB_GADGET is not set | 1203 | # CONFIG_USB_GADGET is not set |
1204 | # CONFIG_UWB is not set | ||
1179 | # CONFIG_MMC is not set | 1205 | # CONFIG_MMC is not set |
1180 | # CONFIG_MEMSTICK is not set | 1206 | # CONFIG_MEMSTICK is not set |
1181 | CONFIG_NEW_LEDS=y | 1207 | CONFIG_NEW_LEDS=y |
@@ -1260,10 +1286,7 @@ CONFIG_TMPFS_POSIX_ACL=y | |||
1260 | CONFIG_HUGETLBFS=y | 1286 | CONFIG_HUGETLBFS=y |
1261 | CONFIG_HUGETLB_PAGE=y | 1287 | CONFIG_HUGETLB_PAGE=y |
1262 | # CONFIG_CONFIGFS_FS is not set | 1288 | # CONFIG_CONFIGFS_FS is not set |
1263 | 1289 | CONFIG_MISC_FILESYSTEMS=y | |
1264 | # | ||
1265 | # Miscellaneous filesystems | ||
1266 | # | ||
1267 | # CONFIG_ADFS_FS is not set | 1290 | # CONFIG_ADFS_FS is not set |
1268 | # CONFIG_AFFS_FS is not set | 1291 | # CONFIG_AFFS_FS is not set |
1269 | # CONFIG_HFS_FS is not set | 1292 | # CONFIG_HFS_FS is not set |
@@ -1392,6 +1415,7 @@ CONFIG_DEBUG_INFO=y | |||
1392 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1415 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1393 | # CONFIG_DEBUG_LIST is not set | 1416 | # CONFIG_DEBUG_LIST is not set |
1394 | # CONFIG_DEBUG_SG is not set | 1417 | # CONFIG_DEBUG_SG is not set |
1418 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
1395 | # CONFIG_FRAME_POINTER is not set | 1419 | # CONFIG_FRAME_POINTER is not set |
1396 | # CONFIG_RCU_TORTURE_TEST is not set | 1420 | # CONFIG_RCU_TORTURE_TEST is not set |
1397 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1421 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -1400,17 +1424,25 @@ CONFIG_DEBUG_INFO=y | |||
1400 | # CONFIG_FAULT_INJECTION is not set | 1424 | # CONFIG_FAULT_INJECTION is not set |
1401 | # CONFIG_LATENCYTOP is not set | 1425 | # CONFIG_LATENCYTOP is not set |
1402 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 1426 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
1403 | CONFIG_NOP_TRACER=y | 1427 | CONFIG_HAVE_FUNCTION_TRACER=y |
1404 | CONFIG_HAVE_FTRACE=y | 1428 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1405 | # CONFIG_FTRACE is not set | 1429 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
1430 | |||
1431 | # | ||
1432 | # Tracers | ||
1433 | # | ||
1434 | # CONFIG_FUNCTION_TRACER is not set | ||
1406 | # CONFIG_IRQSOFF_TRACER is not set | 1435 | # CONFIG_IRQSOFF_TRACER is not set |
1407 | # CONFIG_PREEMPT_TRACER is not set | 1436 | # CONFIG_PREEMPT_TRACER is not set |
1408 | # CONFIG_SCHED_TRACER is not set | 1437 | # CONFIG_SCHED_TRACER is not set |
1409 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1438 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
1410 | # CONFIG_BOOT_TRACER is not set | 1439 | # CONFIG_BOOT_TRACER is not set |
1440 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1411 | # CONFIG_STACK_TRACER is not set | 1441 | # CONFIG_STACK_TRACER is not set |
1412 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1442 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1413 | # CONFIG_SAMPLES is not set | 1443 | # CONFIG_SAMPLES is not set |
1444 | CONFIG_HAVE_ARCH_KGDB=y | ||
1445 | # CONFIG_KGDB is not set | ||
1414 | CONFIG_SH_STANDARD_BIOS=y | 1446 | CONFIG_SH_STANDARD_BIOS=y |
1415 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1447 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1416 | # CONFIG_EARLY_PRINTK is not set | 1448 | # CONFIG_EARLY_PRINTK is not set |
@@ -1419,7 +1451,9 @@ CONFIG_DEBUG_STACKOVERFLOW=y | |||
1419 | # CONFIG_DEBUG_STACK_USAGE is not set | 1451 | # CONFIG_DEBUG_STACK_USAGE is not set |
1420 | # CONFIG_4KSTACKS is not set | 1452 | # CONFIG_4KSTACKS is not set |
1421 | # CONFIG_IRQSTACKS is not set | 1453 | # CONFIG_IRQSTACKS is not set |
1422 | # CONFIG_SH_KGDB is not set | 1454 | CONFIG_DUMP_CODE=y |
1455 | # CONFIG_SH_NO_BSS_INIT is not set | ||
1456 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
1423 | 1457 | ||
1424 | # | 1458 | # |
1425 | # Security options | 1459 | # Security options |
@@ -1435,7 +1469,11 @@ CONFIG_CRYPTO=y | |||
1435 | # | 1469 | # |
1436 | # CONFIG_CRYPTO_FIPS is not set | 1470 | # CONFIG_CRYPTO_FIPS is not set |
1437 | CONFIG_CRYPTO_ALGAPI=y | 1471 | CONFIG_CRYPTO_ALGAPI=y |
1472 | CONFIG_CRYPTO_ALGAPI2=y | ||
1473 | CONFIG_CRYPTO_HASH=y | ||
1474 | CONFIG_CRYPTO_HASH2=y | ||
1438 | # CONFIG_CRYPTO_MANAGER is not set | 1475 | # CONFIG_CRYPTO_MANAGER is not set |
1476 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1439 | # CONFIG_CRYPTO_GF128MUL is not set | 1477 | # CONFIG_CRYPTO_GF128MUL is not set |
1440 | # CONFIG_CRYPTO_NULL is not set | 1478 | # CONFIG_CRYPTO_NULL is not set |
1441 | # CONFIG_CRYPTO_CRYPTD is not set | 1479 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1519,6 +1557,7 @@ CONFIG_CRYPTO_HW=y | |||
1519 | # Library routines | 1557 | # Library routines |
1520 | # | 1558 | # |
1521 | CONFIG_BITREVERSE=y | 1559 | CONFIG_BITREVERSE=y |
1560 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1522 | # CONFIG_CRC_CCITT is not set | 1561 | # CONFIG_CRC_CCITT is not set |
1523 | # CONFIG_CRC16 is not set | 1562 | # CONFIG_CRC16 is not set |
1524 | CONFIG_CRC_T10DIF=y | 1563 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/se7206_defconfig b/arch/sh/configs/se7206_defconfig index 25717ff26ca9..e5b55b6f002d 100644 --- a/arch/sh/configs/se7206_defconfig +++ b/arch/sh/configs/se7206_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 18:57:39 2008 | 4 | # Fri Jan 9 17:31:27 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | # CONFIG_GENERIC_TIME is not set | 17 | # CONFIG_GENERIC_TIME is not set |
18 | # CONFIG_GENERIC_CLOCKEVENTS is not set | 18 | # CONFIG_GENERIC_CLOCKEVENTS is not set |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -69,6 +71,7 @@ CONFIG_EMBEDDED=y | |||
69 | # CONFIG_SYSCTL_SYSCALL is not set | 71 | # CONFIG_SYSCTL_SYSCALL is not set |
70 | CONFIG_KALLSYMS=y | 72 | CONFIG_KALLSYMS=y |
71 | CONFIG_KALLSYMS_ALL=y | 73 | CONFIG_KALLSYMS_ALL=y |
74 | CONFIG_KALLSYMS_STRIP_GENERATED=y | ||
72 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 75 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
73 | CONFIG_HOTPLUG=y | 76 | CONFIG_HOTPLUG=y |
74 | CONFIG_PRINTK=y | 77 | CONFIG_PRINTK=y |
@@ -84,11 +87,11 @@ CONFIG_TIMERFD=y | |||
84 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
85 | CONFIG_AIO=y | 88 | CONFIG_AIO=y |
86 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
87 | CONFIG_PCI_QUIRKS=y | ||
88 | # CONFIG_SLAB is not set | 90 | # CONFIG_SLAB is not set |
89 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLUB is not set |
90 | CONFIG_SLOB=y | 92 | CONFIG_SLOB=y |
91 | CONFIG_PROFILING=y | 93 | CONFIG_PROFILING=y |
94 | CONFIG_TRACEPOINTS=y | ||
92 | # CONFIG_MARKERS is not set | 95 | # CONFIG_MARKERS is not set |
93 | CONFIG_OPROFILE=y | 96 | CONFIG_OPROFILE=y |
94 | CONFIG_HAVE_OPROFILE=y | 97 | CONFIG_HAVE_OPROFILE=y |
@@ -99,7 +102,6 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y | |||
99 | CONFIG_HAVE_CLK=y | 102 | CONFIG_HAVE_CLK=y |
100 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 103 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
101 | CONFIG_RT_MUTEXES=y | 104 | CONFIG_RT_MUTEXES=y |
102 | CONFIG_TINY_SHMEM=y | ||
103 | CONFIG_BASE_SMALL=0 | 105 | CONFIG_BASE_SMALL=0 |
104 | CONFIG_MODULES=y | 106 | CONFIG_MODULES=y |
105 | # CONFIG_MODULE_FORCE_LOAD is not set | 107 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -107,11 +109,9 @@ CONFIG_MODULE_UNLOAD=y | |||
107 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 109 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
108 | # CONFIG_MODVERSIONS is not set | 110 | # CONFIG_MODVERSIONS is not set |
109 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 111 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
110 | CONFIG_KMOD=y | ||
111 | CONFIG_BLOCK=y | 112 | CONFIG_BLOCK=y |
112 | # CONFIG_LBD is not set | 113 | # CONFIG_LBD is not set |
113 | # CONFIG_BLK_DEV_IO_TRACE is not set | 114 | # CONFIG_BLK_DEV_IO_TRACE is not set |
114 | # CONFIG_LSF is not set | ||
115 | # CONFIG_BLK_DEV_BSG is not set | 115 | # CONFIG_BLK_DEV_BSG is not set |
116 | # CONFIG_BLK_DEV_INTEGRITY is not set | 116 | # CONFIG_BLK_DEV_INTEGRITY is not set |
117 | 117 | ||
@@ -128,6 +128,11 @@ CONFIG_IOSCHED_NOOP=y | |||
128 | CONFIG_DEFAULT_NOOP=y | 128 | CONFIG_DEFAULT_NOOP=y |
129 | CONFIG_DEFAULT_IOSCHED="noop" | 129 | CONFIG_DEFAULT_IOSCHED="noop" |
130 | # CONFIG_CLASSIC_RCU is not set | 130 | # CONFIG_CLASSIC_RCU is not set |
131 | # CONFIG_TREE_RCU is not set | ||
132 | CONFIG_PREEMPT_RCU=y | ||
133 | CONFIG_RCU_TRACE=y | ||
134 | # CONFIG_TREE_RCU_TRACE is not set | ||
135 | CONFIG_PREEMPT_RCU_TRACE=y | ||
131 | # CONFIG_FREEZER is not set | 136 | # CONFIG_FREEZER is not set |
132 | 137 | ||
133 | # | 138 | # |
@@ -136,6 +141,7 @@ CONFIG_DEFAULT_IOSCHED="noop" | |||
136 | CONFIG_CPU_SH2=y | 141 | CONFIG_CPU_SH2=y |
137 | CONFIG_CPU_SH2A=y | 142 | CONFIG_CPU_SH2A=y |
138 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 143 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
144 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
139 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 145 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
140 | CONFIG_CPU_SUBTYPE_SH7206=y | 146 | CONFIG_CPU_SUBTYPE_SH7206=y |
141 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 147 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -197,7 +203,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
197 | CONFIG_SPARSEMEM_STATIC=y | 203 | CONFIG_SPARSEMEM_STATIC=y |
198 | CONFIG_PAGEFLAGS_EXTENDED=y | 204 | CONFIG_PAGEFLAGS_EXTENDED=y |
199 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 205 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
200 | # CONFIG_RESOURCES_64BIT is not set | ||
201 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 206 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
202 | CONFIG_ZONE_DMA_FLAG=0 | 207 | CONFIG_ZONE_DMA_FLAG=0 |
203 | CONFIG_NR_QUICK=2 | 208 | CONFIG_NR_QUICK=2 |
@@ -281,8 +286,6 @@ CONFIG_KEXEC=y | |||
281 | # CONFIG_PREEMPT_NONE is not set | 286 | # CONFIG_PREEMPT_NONE is not set |
282 | # CONFIG_PREEMPT_VOLUNTARY is not set | 287 | # CONFIG_PREEMPT_VOLUNTARY is not set |
283 | CONFIG_PREEMPT=y | 288 | CONFIG_PREEMPT=y |
284 | CONFIG_PREEMPT_RCU=y | ||
285 | CONFIG_RCU_TRACE=y | ||
286 | CONFIG_GUSA=y | 289 | CONFIG_GUSA=y |
287 | 290 | ||
288 | # | 291 | # |
@@ -296,10 +299,6 @@ CONFIG_CMDLINE="console=ttySC3,115200 ignore_loglevel earlyprintk=serial" | |||
296 | # | 299 | # |
297 | # Bus options | 300 | # Bus options |
298 | # | 301 | # |
299 | CONFIG_CF_ENABLER=y | ||
300 | # CONFIG_CF_AREA5 is not set | ||
301 | CONFIG_CF_AREA6=y | ||
302 | CONFIG_CF_BASE_ADDR=0xb8000000 | ||
303 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 302 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
304 | # CONFIG_PCCARD is not set | 303 | # CONFIG_PCCARD is not set |
305 | 304 | ||
@@ -312,11 +311,19 @@ CONFIG_BINFMT_ZFLAT=y | |||
312 | CONFIG_BINFMT_SHARED_FLAT=y | 311 | CONFIG_BINFMT_SHARED_FLAT=y |
313 | # CONFIG_HAVE_AOUT is not set | 312 | # CONFIG_HAVE_AOUT is not set |
314 | CONFIG_BINFMT_MISC=y | 313 | CONFIG_BINFMT_MISC=y |
314 | |||
315 | # | ||
316 | # Power management options (EXPERIMENTAL) | ||
317 | # | ||
318 | # CONFIG_PM is not set | ||
319 | # CONFIG_CPU_IDLE is not set | ||
315 | CONFIG_NET=y | 320 | CONFIG_NET=y |
316 | 321 | ||
317 | # | 322 | # |
318 | # Networking options | 323 | # Networking options |
319 | # | 324 | # |
325 | # CONFIG_NET_NS is not set | ||
326 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
320 | CONFIG_PACKET=y | 327 | CONFIG_PACKET=y |
321 | # CONFIG_PACKET_MMAP is not set | 328 | # CONFIG_PACKET_MMAP is not set |
322 | CONFIG_UNIX=y | 329 | CONFIG_UNIX=y |
@@ -372,6 +379,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
372 | # CONFIG_ECONET is not set | 379 | # CONFIG_ECONET is not set |
373 | # CONFIG_WAN_ROUTER is not set | 380 | # CONFIG_WAN_ROUTER is not set |
374 | # CONFIG_NET_SCHED is not set | 381 | # CONFIG_NET_SCHED is not set |
382 | # CONFIG_DCB is not set | ||
375 | 383 | ||
376 | # | 384 | # |
377 | # Network testing | 385 | # Network testing |
@@ -387,8 +395,8 @@ CONFIG_WIRELESS=y | |||
387 | # CONFIG_CFG80211 is not set | 395 | # CONFIG_CFG80211 is not set |
388 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 396 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
389 | # CONFIG_WIRELESS_EXT is not set | 397 | # CONFIG_WIRELESS_EXT is not set |
398 | # CONFIG_LIB80211 is not set | ||
390 | # CONFIG_MAC80211 is not set | 399 | # CONFIG_MAC80211 is not set |
391 | # CONFIG_IEEE80211 is not set | ||
392 | # CONFIG_RFKILL is not set | 400 | # CONFIG_RFKILL is not set |
393 | # CONFIG_NET_9P is not set | 401 | # CONFIG_NET_9P is not set |
394 | 402 | ||
@@ -500,6 +508,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
500 | CONFIG_MISC_DEVICES=y | 508 | CONFIG_MISC_DEVICES=y |
501 | CONFIG_EEPROM_93CX6=y | 509 | CONFIG_EEPROM_93CX6=y |
502 | # CONFIG_ENCLOSURE_SERVICES is not set | 510 | # CONFIG_ENCLOSURE_SERVICES is not set |
511 | # CONFIG_C2PORT is not set | ||
503 | CONFIG_HAVE_IDE=y | 512 | CONFIG_HAVE_IDE=y |
504 | # CONFIG_IDE is not set | 513 | # CONFIG_IDE is not set |
505 | 514 | ||
@@ -526,6 +535,7 @@ CONFIG_MII=y | |||
526 | # CONFIG_STNIC is not set | 535 | # CONFIG_STNIC is not set |
527 | CONFIG_SMC91X=y | 536 | CONFIG_SMC91X=y |
528 | # CONFIG_SMC911X is not set | 537 | # CONFIG_SMC911X is not set |
538 | # CONFIG_SMSC911X is not set | ||
529 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 539 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
530 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 540 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
531 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 541 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -598,11 +608,11 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
598 | # CONFIG_THERMAL is not set | 608 | # CONFIG_THERMAL is not set |
599 | # CONFIG_THERMAL_HWMON is not set | 609 | # CONFIG_THERMAL_HWMON is not set |
600 | # CONFIG_WATCHDOG is not set | 610 | # CONFIG_WATCHDOG is not set |
611 | CONFIG_SSB_POSSIBLE=y | ||
601 | 612 | ||
602 | # | 613 | # |
603 | # Sonics Silicon Backplane | 614 | # Sonics Silicon Backplane |
604 | # | 615 | # |
605 | CONFIG_SSB_POSSIBLE=y | ||
606 | # CONFIG_SSB is not set | 616 | # CONFIG_SSB is not set |
607 | 617 | ||
608 | # | 618 | # |
@@ -612,7 +622,7 @@ CONFIG_SSB_POSSIBLE=y | |||
612 | # CONFIG_MFD_SM501 is not set | 622 | # CONFIG_MFD_SM501 is not set |
613 | # CONFIG_HTC_PASIC3 is not set | 623 | # CONFIG_HTC_PASIC3 is not set |
614 | # CONFIG_MFD_TMIO is not set | 624 | # CONFIG_MFD_TMIO is not set |
615 | # CONFIG_MFD_WM8400 is not set | 625 | # CONFIG_REGULATOR is not set |
616 | 626 | ||
617 | # | 627 | # |
618 | # Multimedia devices | 628 | # Multimedia devices |
@@ -732,10 +742,7 @@ CONFIG_TMPFS=y | |||
732 | # CONFIG_TMPFS_POSIX_ACL is not set | 742 | # CONFIG_TMPFS_POSIX_ACL is not set |
733 | # CONFIG_HUGETLB_PAGE is not set | 743 | # CONFIG_HUGETLB_PAGE is not set |
734 | CONFIG_CONFIGFS_FS=y | 744 | CONFIG_CONFIGFS_FS=y |
735 | 745 | CONFIG_MISC_FILESYSTEMS=y | |
736 | # | ||
737 | # Miscellaneous filesystems | ||
738 | # | ||
739 | # CONFIG_ADFS_FS is not set | 746 | # CONFIG_ADFS_FS is not set |
740 | # CONFIG_AFFS_FS is not set | 747 | # CONFIG_AFFS_FS is not set |
741 | # CONFIG_HFS_FS is not set | 748 | # CONFIG_HFS_FS is not set |
@@ -812,6 +819,7 @@ CONFIG_DEBUG_PREEMPT=y | |||
812 | # CONFIG_LOCK_STAT is not set | 819 | # CONFIG_LOCK_STAT is not set |
813 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | 820 | CONFIG_DEBUG_SPINLOCK_SLEEP=y |
814 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 821 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
822 | CONFIG_STACKTRACE=y | ||
815 | # CONFIG_DEBUG_KOBJECT is not set | 823 | # CONFIG_DEBUG_KOBJECT is not set |
816 | CONFIG_DEBUG_BUGVERBOSE=y | 824 | CONFIG_DEBUG_BUGVERBOSE=y |
817 | # CONFIG_DEBUG_INFO is not set | 825 | # CONFIG_DEBUG_INFO is not set |
@@ -820,6 +828,7 @@ CONFIG_DEBUG_VM=y | |||
820 | # CONFIG_DEBUG_MEMORY_INIT is not set | 828 | # CONFIG_DEBUG_MEMORY_INIT is not set |
821 | CONFIG_DEBUG_LIST=y | 829 | CONFIG_DEBUG_LIST=y |
822 | # CONFIG_DEBUG_SG is not set | 830 | # CONFIG_DEBUG_SG is not set |
831 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
823 | CONFIG_FRAME_POINTER=y | 832 | CONFIG_FRAME_POINTER=y |
824 | # CONFIG_RCU_TORTURE_TEST is not set | 833 | # CONFIG_RCU_TORTURE_TEST is not set |
825 | # CONFIG_BACKTRACE_SELF_TEST is not set | 834 | # CONFIG_BACKTRACE_SELF_TEST is not set |
@@ -827,20 +836,35 @@ CONFIG_FRAME_POINTER=y | |||
827 | # CONFIG_FAULT_INJECTION is not set | 836 | # CONFIG_FAULT_INJECTION is not set |
828 | # CONFIG_LATENCYTOP is not set | 837 | # CONFIG_LATENCYTOP is not set |
829 | CONFIG_NOP_TRACER=y | 838 | CONFIG_NOP_TRACER=y |
830 | CONFIG_HAVE_FTRACE=y | 839 | CONFIG_HAVE_FUNCTION_TRACER=y |
831 | # CONFIG_FTRACE is not set | 840 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
841 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
842 | CONFIG_RING_BUFFER=y | ||
843 | CONFIG_TRACING=y | ||
844 | |||
845 | # | ||
846 | # Tracers | ||
847 | # | ||
848 | # CONFIG_FUNCTION_TRACER is not set | ||
832 | # CONFIG_SCHED_TRACER is not set | 849 | # CONFIG_SCHED_TRACER is not set |
833 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 850 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
834 | # CONFIG_BOOT_TRACER is not set | 851 | # CONFIG_BOOT_TRACER is not set |
852 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
835 | # CONFIG_STACK_TRACER is not set | 853 | # CONFIG_STACK_TRACER is not set |
854 | # CONFIG_FTRACE_STARTUP_TEST is not set | ||
836 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 855 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
837 | # CONFIG_SAMPLES is not set | 856 | # CONFIG_SAMPLES is not set |
857 | CONFIG_HAVE_ARCH_KGDB=y | ||
858 | # CONFIG_KGDB is not set | ||
838 | # CONFIG_SH_STANDARD_BIOS is not set | 859 | # CONFIG_SH_STANDARD_BIOS is not set |
839 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 860 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
840 | # CONFIG_DEBUG_BOOTMEM is not set | 861 | # CONFIG_DEBUG_BOOTMEM is not set |
841 | CONFIG_DEBUG_STACKOVERFLOW=y | 862 | CONFIG_DEBUG_STACKOVERFLOW=y |
842 | CONFIG_DEBUG_STACK_USAGE=y | 863 | CONFIG_DEBUG_STACK_USAGE=y |
843 | # CONFIG_IRQSTACKS is not set | 864 | # CONFIG_IRQSTACKS is not set |
865 | CONFIG_DUMP_CODE=y | ||
866 | # CONFIG_SH_NO_BSS_INIT is not set | ||
867 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
844 | 868 | ||
845 | # | 869 | # |
846 | # Security options | 870 | # Security options |
@@ -856,7 +880,11 @@ CONFIG_CRYPTO=y | |||
856 | # | 880 | # |
857 | # CONFIG_CRYPTO_FIPS is not set | 881 | # CONFIG_CRYPTO_FIPS is not set |
858 | CONFIG_CRYPTO_ALGAPI=y | 882 | CONFIG_CRYPTO_ALGAPI=y |
883 | CONFIG_CRYPTO_ALGAPI2=y | ||
884 | CONFIG_CRYPTO_HASH=y | ||
885 | CONFIG_CRYPTO_HASH2=y | ||
859 | # CONFIG_CRYPTO_MANAGER is not set | 886 | # CONFIG_CRYPTO_MANAGER is not set |
887 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
860 | # CONFIG_CRYPTO_GF128MUL is not set | 888 | # CONFIG_CRYPTO_GF128MUL is not set |
861 | # CONFIG_CRYPTO_NULL is not set | 889 | # CONFIG_CRYPTO_NULL is not set |
862 | # CONFIG_CRYPTO_CRYPTD is not set | 890 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -890,7 +918,7 @@ CONFIG_CRYPTO_ALGAPI=y | |||
890 | # | 918 | # |
891 | # Digest | 919 | # Digest |
892 | # | 920 | # |
893 | # CONFIG_CRYPTO_CRC32C is not set | 921 | CONFIG_CRYPTO_CRC32C=y |
894 | # CONFIG_CRYPTO_MD4 is not set | 922 | # CONFIG_CRYPTO_MD4 is not set |
895 | # CONFIG_CRYPTO_MD5 is not set | 923 | # CONFIG_CRYPTO_MD5 is not set |
896 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 924 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
@@ -939,6 +967,7 @@ CONFIG_CRYPTO_LZO=y | |||
939 | # Library routines | 967 | # Library routines |
940 | # | 968 | # |
941 | CONFIG_BITREVERSE=y | 969 | CONFIG_BITREVERSE=y |
970 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
942 | CONFIG_CRC_CCITT=y | 971 | CONFIG_CRC_CCITT=y |
943 | CONFIG_CRC16=y | 972 | CONFIG_CRC16=y |
944 | # CONFIG_CRC_T10DIF is not set | 973 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/se7343_defconfig b/arch/sh/configs/se7343_defconfig index be246f381507..390052577031 100644 --- a/arch/sh/configs/se7343_defconfig +++ b/arch/sh/configs/se7343_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.28-rc6 | 3 | # Linux kernel version: 2.6.28 |
4 | # Thu Dec 4 16:40:25 2008 | 4 | # Fri Jan 9 17:33:53 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -78,7 +80,6 @@ CONFIG_SLAB=y | |||
78 | # CONFIG_SLUB is not set | 80 | # CONFIG_SLUB is not set |
79 | # CONFIG_SLOB is not set | 81 | # CONFIG_SLOB is not set |
80 | # CONFIG_PROFILING is not set | 82 | # CONFIG_PROFILING is not set |
81 | # CONFIG_MARKERS is not set | ||
82 | CONFIG_HAVE_OPROFILE=y | 83 | CONFIG_HAVE_OPROFILE=y |
83 | # CONFIG_KPROBES is not set | 84 | # CONFIG_KPROBES is not set |
84 | CONFIG_HAVE_IOREMAP_PROT=y | 85 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -88,7 +89,6 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y | |||
88 | CONFIG_HAVE_CLK=y | 89 | CONFIG_HAVE_CLK=y |
89 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 90 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
90 | CONFIG_SLABINFO=y | 91 | CONFIG_SLABINFO=y |
91 | CONFIG_TINY_SHMEM=y | ||
92 | CONFIG_BASE_SMALL=0 | 92 | CONFIG_BASE_SMALL=0 |
93 | CONFIG_MODULES=y | 93 | CONFIG_MODULES=y |
94 | # CONFIG_MODULE_FORCE_LOAD is not set | 94 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -96,11 +96,9 @@ CONFIG_MODULE_UNLOAD=y | |||
96 | CONFIG_MODULE_FORCE_UNLOAD=y | 96 | CONFIG_MODULE_FORCE_UNLOAD=y |
97 | # CONFIG_MODVERSIONS is not set | 97 | # CONFIG_MODVERSIONS is not set |
98 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 98 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
99 | CONFIG_KMOD=y | ||
100 | CONFIG_BLOCK=y | 99 | CONFIG_BLOCK=y |
101 | # CONFIG_LBD is not set | 100 | # CONFIG_LBD is not set |
102 | # CONFIG_BLK_DEV_IO_TRACE is not set | 101 | # CONFIG_BLK_DEV_IO_TRACE is not set |
103 | # CONFIG_LSF is not set | ||
104 | # CONFIG_BLK_DEV_BSG is not set | 102 | # CONFIG_BLK_DEV_BSG is not set |
105 | # CONFIG_BLK_DEV_INTEGRITY is not set | 103 | # CONFIG_BLK_DEV_INTEGRITY is not set |
106 | 104 | ||
@@ -117,6 +115,10 @@ CONFIG_DEFAULT_DEADLINE=y | |||
117 | # CONFIG_DEFAULT_NOOP is not set | 115 | # CONFIG_DEFAULT_NOOP is not set |
118 | CONFIG_DEFAULT_IOSCHED="deadline" | 116 | CONFIG_DEFAULT_IOSCHED="deadline" |
119 | CONFIG_CLASSIC_RCU=y | 117 | CONFIG_CLASSIC_RCU=y |
118 | # CONFIG_TREE_RCU is not set | ||
119 | # CONFIG_PREEMPT_RCU is not set | ||
120 | # CONFIG_TREE_RCU_TRACE is not set | ||
121 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
120 | # CONFIG_FREEZER is not set | 122 | # CONFIG_FREEZER is not set |
121 | 123 | ||
122 | # | 124 | # |
@@ -190,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
190 | CONFIG_SPARSEMEM_STATIC=y | 192 | CONFIG_SPARSEMEM_STATIC=y |
191 | CONFIG_PAGEFLAGS_EXTENDED=y | 193 | CONFIG_PAGEFLAGS_EXTENDED=y |
192 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 194 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
193 | # CONFIG_RESOURCES_64BIT is not set | ||
194 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 195 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
195 | CONFIG_ZONE_DMA_FLAG=0 | 196 | CONFIG_ZONE_DMA_FLAG=0 |
196 | CONFIG_NR_QUICK=2 | 197 | CONFIG_NR_QUICK=2 |
@@ -280,7 +281,6 @@ CONFIG_CMDLINE="console=ttySC0,115200" | |||
280 | # | 281 | # |
281 | # Bus options | 282 | # Bus options |
282 | # | 283 | # |
283 | # CONFIG_CF_ENABLER is not set | ||
284 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 284 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
285 | # CONFIG_PCCARD is not set | 285 | # CONFIG_PCCARD is not set |
286 | 286 | ||
@@ -291,11 +291,18 @@ CONFIG_BINFMT_ELF=y | |||
291 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 291 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
292 | # CONFIG_HAVE_AOUT is not set | 292 | # CONFIG_HAVE_AOUT is not set |
293 | # CONFIG_BINFMT_MISC is not set | 293 | # CONFIG_BINFMT_MISC is not set |
294 | |||
295 | # | ||
296 | # Power management options (EXPERIMENTAL) | ||
297 | # | ||
298 | # CONFIG_PM is not set | ||
299 | # CONFIG_CPU_IDLE is not set | ||
294 | CONFIG_NET=y | 300 | CONFIG_NET=y |
295 | 301 | ||
296 | # | 302 | # |
297 | # Networking options | 303 | # Networking options |
298 | # | 304 | # |
305 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
299 | CONFIG_PACKET=y | 306 | CONFIG_PACKET=y |
300 | CONFIG_PACKET_MMAP=y | 307 | CONFIG_PACKET_MMAP=y |
301 | CONFIG_UNIX=y | 308 | CONFIG_UNIX=y |
@@ -347,6 +354,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
347 | # CONFIG_ECONET is not set | 354 | # CONFIG_ECONET is not set |
348 | # CONFIG_WAN_ROUTER is not set | 355 | # CONFIG_WAN_ROUTER is not set |
349 | # CONFIG_NET_SCHED is not set | 356 | # CONFIG_NET_SCHED is not set |
357 | # CONFIG_DCB is not set | ||
350 | 358 | ||
351 | # | 359 | # |
352 | # Network testing | 360 | # Network testing |
@@ -362,8 +370,8 @@ CONFIG_WIRELESS=y | |||
362 | # CONFIG_CFG80211 is not set | 370 | # CONFIG_CFG80211 is not set |
363 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 371 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
364 | # CONFIG_WIRELESS_EXT is not set | 372 | # CONFIG_WIRELESS_EXT is not set |
373 | # CONFIG_LIB80211 is not set | ||
365 | # CONFIG_MAC80211 is not set | 374 | # CONFIG_MAC80211 is not set |
366 | # CONFIG_IEEE80211 is not set | ||
367 | # CONFIG_RFKILL is not set | 375 | # CONFIG_RFKILL is not set |
368 | # CONFIG_NET_9P is not set | 376 | # CONFIG_NET_9P is not set |
369 | 377 | ||
@@ -661,8 +669,8 @@ CONFIG_I2C_SH_MOBILE=y | |||
661 | # Miscellaneous I2C Chip support | 669 | # Miscellaneous I2C Chip support |
662 | # | 670 | # |
663 | # CONFIG_DS1682 is not set | 671 | # CONFIG_DS1682 is not set |
664 | # CONFIG_AT24 is not set | 672 | # CONFIG_EEPROM_AT24 is not set |
665 | # CONFIG_SENSORS_EEPROM is not set | 673 | # CONFIG_EEPROM_LEGACY is not set |
666 | # CONFIG_SENSORS_PCF8574 is not set | 674 | # CONFIG_SENSORS_PCF8574 is not set |
667 | # CONFIG_PCF8575 is not set | 675 | # CONFIG_PCF8575 is not set |
668 | # CONFIG_SENSORS_PCA9539 is not set | 676 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -693,6 +701,7 @@ CONFIG_SSB_POSSIBLE=y | |||
693 | # CONFIG_MFD_CORE is not set | 701 | # CONFIG_MFD_CORE is not set |
694 | # CONFIG_MFD_SM501 is not set | 702 | # CONFIG_MFD_SM501 is not set |
695 | # CONFIG_HTC_PASIC3 is not set | 703 | # CONFIG_HTC_PASIC3 is not set |
704 | # CONFIG_TWL4030_CORE is not set | ||
696 | # CONFIG_MFD_TMIO is not set | 705 | # CONFIG_MFD_TMIO is not set |
697 | # CONFIG_PMIC_DA903X is not set | 706 | # CONFIG_PMIC_DA903X is not set |
698 | # CONFIG_MFD_WM8400 is not set | 707 | # CONFIG_MFD_WM8400 is not set |
@@ -743,11 +752,13 @@ CONFIG_V4L_USB_DRIVERS=y | |||
743 | # CONFIG_USB_VIDEO_CLASS is not set | 752 | # CONFIG_USB_VIDEO_CLASS is not set |
744 | CONFIG_USB_GSPCA=m | 753 | CONFIG_USB_GSPCA=m |
745 | # CONFIG_USB_M5602 is not set | 754 | # CONFIG_USB_M5602 is not set |
755 | # CONFIG_USB_STV06XX is not set | ||
746 | # CONFIG_USB_GSPCA_CONEX is not set | 756 | # CONFIG_USB_GSPCA_CONEX is not set |
747 | # CONFIG_USB_GSPCA_ETOMS is not set | 757 | # CONFIG_USB_GSPCA_ETOMS is not set |
748 | # CONFIG_USB_GSPCA_FINEPIX is not set | 758 | # CONFIG_USB_GSPCA_FINEPIX is not set |
749 | # CONFIG_USB_GSPCA_MARS is not set | 759 | # CONFIG_USB_GSPCA_MARS is not set |
750 | # CONFIG_USB_GSPCA_OV519 is not set | 760 | # CONFIG_USB_GSPCA_OV519 is not set |
761 | # CONFIG_USB_GSPCA_OV534 is not set | ||
751 | # CONFIG_USB_GSPCA_PAC207 is not set | 762 | # CONFIG_USB_GSPCA_PAC207 is not set |
752 | # CONFIG_USB_GSPCA_PAC7311 is not set | 763 | # CONFIG_USB_GSPCA_PAC7311 is not set |
753 | # CONFIG_USB_GSPCA_SONIXB is not set | 764 | # CONFIG_USB_GSPCA_SONIXB is not set |
@@ -786,6 +797,7 @@ CONFIG_RADIO_ADAPTERS=y | |||
786 | # CONFIG_USB_DSBR is not set | 797 | # CONFIG_USB_DSBR is not set |
787 | # CONFIG_USB_SI470X is not set | 798 | # CONFIG_USB_SI470X is not set |
788 | # CONFIG_USB_MR800 is not set | 799 | # CONFIG_USB_MR800 is not set |
800 | # CONFIG_RADIO_TEA5764 is not set | ||
789 | # CONFIG_DAB is not set | 801 | # CONFIG_DAB is not set |
790 | 802 | ||
791 | # | 803 | # |
@@ -797,15 +809,16 @@ CONFIG_FB=y | |||
797 | CONFIG_FIRMWARE_EDID=y | 809 | CONFIG_FIRMWARE_EDID=y |
798 | # CONFIG_FB_DDC is not set | 810 | # CONFIG_FB_DDC is not set |
799 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | 811 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set |
800 | CONFIG_FB_CFB_FILLRECT=m | 812 | # CONFIG_FB_CFB_FILLRECT is not set |
801 | CONFIG_FB_CFB_COPYAREA=m | 813 | # CONFIG_FB_CFB_COPYAREA is not set |
802 | CONFIG_FB_CFB_IMAGEBLIT=m | 814 | # CONFIG_FB_CFB_IMAGEBLIT is not set |
803 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 815 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
804 | # CONFIG_FB_SYS_FILLRECT is not set | 816 | CONFIG_FB_SYS_FILLRECT=m |
805 | # CONFIG_FB_SYS_COPYAREA is not set | 817 | CONFIG_FB_SYS_COPYAREA=m |
806 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 818 | CONFIG_FB_SYS_IMAGEBLIT=m |
807 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 819 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
808 | # CONFIG_FB_SYS_FOPS is not set | 820 | CONFIG_FB_SYS_FOPS=m |
821 | CONFIG_FB_DEFERRED_IO=y | ||
809 | # CONFIG_FB_SVGALIB is not set | 822 | # CONFIG_FB_SVGALIB is not set |
810 | # CONFIG_FB_MACMODES is not set | 823 | # CONFIG_FB_MACMODES is not set |
811 | # CONFIG_FB_BACKLIGHT is not set | 824 | # CONFIG_FB_BACKLIGHT is not set |
@@ -881,11 +894,9 @@ CONFIG_HID_COMPAT=y | |||
881 | CONFIG_HID_A4TECH=y | 894 | CONFIG_HID_A4TECH=y |
882 | CONFIG_HID_APPLE=y | 895 | CONFIG_HID_APPLE=y |
883 | CONFIG_HID_BELKIN=y | 896 | CONFIG_HID_BELKIN=y |
884 | CONFIG_HID_BRIGHT=y | ||
885 | CONFIG_HID_CHERRY=y | 897 | CONFIG_HID_CHERRY=y |
886 | CONFIG_HID_CHICONY=y | 898 | CONFIG_HID_CHICONY=y |
887 | CONFIG_HID_CYPRESS=y | 899 | CONFIG_HID_CYPRESS=y |
888 | CONFIG_HID_DELL=y | ||
889 | CONFIG_HID_EZKEY=y | 900 | CONFIG_HID_EZKEY=y |
890 | CONFIG_HID_GYRATION=y | 901 | CONFIG_HID_GYRATION=y |
891 | CONFIG_HID_LOGITECH=y | 902 | CONFIG_HID_LOGITECH=y |
@@ -893,12 +904,15 @@ CONFIG_HID_LOGITECH=y | |||
893 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 904 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
894 | CONFIG_HID_MICROSOFT=y | 905 | CONFIG_HID_MICROSOFT=y |
895 | CONFIG_HID_MONTEREY=y | 906 | CONFIG_HID_MONTEREY=y |
907 | # CONFIG_HID_NTRIG is not set | ||
896 | CONFIG_HID_PANTHERLORD=y | 908 | CONFIG_HID_PANTHERLORD=y |
897 | # CONFIG_PANTHERLORD_FF is not set | 909 | # CONFIG_PANTHERLORD_FF is not set |
898 | CONFIG_HID_PETALYNX=y | 910 | CONFIG_HID_PETALYNX=y |
899 | CONFIG_HID_SAMSUNG=y | 911 | CONFIG_HID_SAMSUNG=y |
900 | CONFIG_HID_SONY=y | 912 | CONFIG_HID_SONY=y |
901 | CONFIG_HID_SUNPLUS=y | 913 | CONFIG_HID_SUNPLUS=y |
914 | # CONFIG_GREENASIA_FF is not set | ||
915 | # CONFIG_HID_TOPSEED is not set | ||
902 | # CONFIG_THRUSTMASTER_FF is not set | 916 | # CONFIG_THRUSTMASTER_FF is not set |
903 | # CONFIG_ZEROPLUS_FF is not set | 917 | # CONFIG_ZEROPLUS_FF is not set |
904 | CONFIG_USB_SUPPORT=y | 918 | CONFIG_USB_SUPPORT=y |
@@ -997,7 +1011,6 @@ CONFIG_UIO=y | |||
997 | # CONFIG_UIO_SMX is not set | 1011 | # CONFIG_UIO_SMX is not set |
998 | # CONFIG_UIO_SERCOS3 is not set | 1012 | # CONFIG_UIO_SERCOS3 is not set |
999 | # CONFIG_STAGING is not set | 1013 | # CONFIG_STAGING is not set |
1000 | CONFIG_STAGING_EXCLUDE_BUILD=y | ||
1001 | 1014 | ||
1002 | # | 1015 | # |
1003 | # File systems | 1016 | # File systems |
@@ -1051,10 +1064,7 @@ CONFIG_TMPFS=y | |||
1051 | # CONFIG_HUGETLBFS is not set | 1064 | # CONFIG_HUGETLBFS is not set |
1052 | # CONFIG_HUGETLB_PAGE is not set | 1065 | # CONFIG_HUGETLB_PAGE is not set |
1053 | # CONFIG_CONFIGFS_FS is not set | 1066 | # CONFIG_CONFIGFS_FS is not set |
1054 | 1067 | CONFIG_MISC_FILESYSTEMS=y | |
1055 | # | ||
1056 | # Miscellaneous filesystems | ||
1057 | # | ||
1058 | # CONFIG_ADFS_FS is not set | 1068 | # CONFIG_ADFS_FS is not set |
1059 | # CONFIG_AFFS_FS is not set | 1069 | # CONFIG_AFFS_FS is not set |
1060 | # CONFIG_HFS_FS is not set | 1070 | # CONFIG_HFS_FS is not set |
@@ -1138,11 +1148,12 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | |||
1138 | # | 1148 | # |
1139 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1149 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1140 | # CONFIG_SAMPLES is not set | 1150 | # CONFIG_SAMPLES is not set |
1151 | CONFIG_HAVE_ARCH_KGDB=y | ||
1141 | # CONFIG_SH_STANDARD_BIOS is not set | 1152 | # CONFIG_SH_STANDARD_BIOS is not set |
1142 | CONFIG_EARLY_SCIF_CONSOLE=y | 1153 | CONFIG_EARLY_SCIF_CONSOLE=y |
1143 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000 | 1154 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000 |
1144 | CONFIG_EARLY_PRINTK=y | 1155 | CONFIG_EARLY_PRINTK=y |
1145 | # CONFIG_SH_KGDB is not set | 1156 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1146 | 1157 | ||
1147 | # | 1158 | # |
1148 | # Security options | 1159 | # Security options |
@@ -1158,6 +1169,7 @@ CONFIG_CRYPTO=y | |||
1158 | # | 1169 | # |
1159 | # CONFIG_CRYPTO_FIPS is not set | 1170 | # CONFIG_CRYPTO_FIPS is not set |
1160 | # CONFIG_CRYPTO_MANAGER is not set | 1171 | # CONFIG_CRYPTO_MANAGER is not set |
1172 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1161 | # CONFIG_CRYPTO_GF128MUL is not set | 1173 | # CONFIG_CRYPTO_GF128MUL is not set |
1162 | # CONFIG_CRYPTO_NULL is not set | 1174 | # CONFIG_CRYPTO_NULL is not set |
1163 | # CONFIG_CRYPTO_CRYPTD is not set | 1175 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1240,6 +1252,7 @@ CONFIG_CRYPTO_HW=y | |||
1240 | # Library routines | 1252 | # Library routines |
1241 | # | 1253 | # |
1242 | CONFIG_BITREVERSE=y | 1254 | CONFIG_BITREVERSE=y |
1255 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1243 | # CONFIG_CRC_CCITT is not set | 1256 | # CONFIG_CRC_CCITT is not set |
1244 | # CONFIG_CRC16 is not set | 1257 | # CONFIG_CRC16 is not set |
1245 | # CONFIG_CRC_T10DIF is not set | 1258 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/se7619_defconfig b/arch/sh/configs/se7619_defconfig index db9cacd7c4e7..932b0235b1de 100644 --- a/arch/sh/configs/se7619_defconfig +++ b/arch/sh/configs/se7619_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:03:29 2008 | 4 | # Fri Jan 9 17:36:46 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | # CONFIG_GENERIC_TIME is not set | 17 | # CONFIG_GENERIC_TIME is not set |
18 | # CONFIG_GENERIC_CLOCKEVENTS is not set | 18 | # CONFIG_GENERIC_CLOCKEVENTS is not set |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -61,12 +63,10 @@ CONFIG_TIMERFD=y | |||
61 | CONFIG_EVENTFD=y | 63 | CONFIG_EVENTFD=y |
62 | CONFIG_AIO=y | 64 | CONFIG_AIO=y |
63 | # CONFIG_VM_EVENT_COUNTERS is not set | 65 | # CONFIG_VM_EVENT_COUNTERS is not set |
64 | CONFIG_PCI_QUIRKS=y | ||
65 | CONFIG_SLAB=y | 66 | CONFIG_SLAB=y |
66 | # CONFIG_SLUB is not set | 67 | # CONFIG_SLUB is not set |
67 | # CONFIG_SLOB is not set | 68 | # CONFIG_SLOB is not set |
68 | # CONFIG_PROFILING is not set | 69 | # CONFIG_PROFILING is not set |
69 | # CONFIG_MARKERS is not set | ||
70 | CONFIG_HAVE_OPROFILE=y | 70 | CONFIG_HAVE_OPROFILE=y |
71 | CONFIG_HAVE_KPROBES=y | 71 | CONFIG_HAVE_KPROBES=y |
72 | CONFIG_HAVE_KRETPROBES=y | 72 | CONFIG_HAVE_KRETPROBES=y |
@@ -74,12 +74,10 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y | |||
74 | CONFIG_HAVE_CLK=y | 74 | CONFIG_HAVE_CLK=y |
75 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 75 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
76 | CONFIG_SLABINFO=y | 76 | CONFIG_SLABINFO=y |
77 | CONFIG_TINY_SHMEM=y | ||
78 | CONFIG_BASE_SMALL=1 | 77 | CONFIG_BASE_SMALL=1 |
79 | # CONFIG_MODULES is not set | 78 | # CONFIG_MODULES is not set |
80 | CONFIG_BLOCK=y | 79 | CONFIG_BLOCK=y |
81 | # CONFIG_LBD is not set | 80 | # CONFIG_LBD is not set |
82 | # CONFIG_LSF is not set | ||
83 | # CONFIG_BLK_DEV_BSG is not set | 81 | # CONFIG_BLK_DEV_BSG is not set |
84 | # CONFIG_BLK_DEV_INTEGRITY is not set | 82 | # CONFIG_BLK_DEV_INTEGRITY is not set |
85 | 83 | ||
@@ -96,6 +94,10 @@ CONFIG_IOSCHED_NOOP=y | |||
96 | CONFIG_DEFAULT_NOOP=y | 94 | CONFIG_DEFAULT_NOOP=y |
97 | CONFIG_DEFAULT_IOSCHED="noop" | 95 | CONFIG_DEFAULT_IOSCHED="noop" |
98 | CONFIG_CLASSIC_RCU=y | 96 | CONFIG_CLASSIC_RCU=y |
97 | # CONFIG_TREE_RCU is not set | ||
98 | # CONFIG_PREEMPT_RCU is not set | ||
99 | # CONFIG_TREE_RCU_TRACE is not set | ||
100 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
99 | # CONFIG_FREEZER is not set | 101 | # CONFIG_FREEZER is not set |
100 | 102 | ||
101 | # | 103 | # |
@@ -103,6 +105,7 @@ CONFIG_CLASSIC_RCU=y | |||
103 | # | 105 | # |
104 | CONFIG_CPU_SH2=y | 106 | CONFIG_CPU_SH2=y |
105 | CONFIG_CPU_SUBTYPE_SH7619=y | 107 | CONFIG_CPU_SUBTYPE_SH7619=y |
108 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
106 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 109 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
107 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 110 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
108 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 111 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -164,7 +167,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
164 | CONFIG_SPARSEMEM_STATIC=y | 167 | CONFIG_SPARSEMEM_STATIC=y |
165 | CONFIG_PAGEFLAGS_EXTENDED=y | 168 | CONFIG_PAGEFLAGS_EXTENDED=y |
166 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 169 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
167 | # CONFIG_RESOURCES_64BIT is not set | ||
168 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 170 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
169 | CONFIG_ZONE_DMA_FLAG=0 | 171 | CONFIG_ZONE_DMA_FLAG=0 |
170 | CONFIG_NR_QUICK=2 | 172 | CONFIG_NR_QUICK=2 |
@@ -244,7 +246,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000 | |||
244 | # | 246 | # |
245 | # Bus options | 247 | # Bus options |
246 | # | 248 | # |
247 | # CONFIG_CF_ENABLER is not set | ||
248 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 249 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
249 | 250 | ||
250 | # | 251 | # |
@@ -256,6 +257,12 @@ CONFIG_BINFMT_ZFLAT=y | |||
256 | # CONFIG_BINFMT_SHARED_FLAT is not set | 257 | # CONFIG_BINFMT_SHARED_FLAT is not set |
257 | # CONFIG_HAVE_AOUT is not set | 258 | # CONFIG_HAVE_AOUT is not set |
258 | # CONFIG_BINFMT_MISC is not set | 259 | # CONFIG_BINFMT_MISC is not set |
260 | |||
261 | # | ||
262 | # Power management options (EXPERIMENTAL) | ||
263 | # | ||
264 | # CONFIG_PM is not set | ||
265 | # CONFIG_CPU_IDLE is not set | ||
259 | # CONFIG_NET is not set | 266 | # CONFIG_NET is not set |
260 | 267 | ||
261 | # | 268 | # |
@@ -359,6 +366,7 @@ CONFIG_BLK_DEV=y | |||
359 | CONFIG_MISC_DEVICES=y | 366 | CONFIG_MISC_DEVICES=y |
360 | # CONFIG_EEPROM_93CX6 is not set | 367 | # CONFIG_EEPROM_93CX6 is not set |
361 | # CONFIG_ENCLOSURE_SERVICES is not set | 368 | # CONFIG_ENCLOSURE_SERVICES is not set |
369 | # CONFIG_C2PORT is not set | ||
362 | CONFIG_HAVE_IDE=y | 370 | CONFIG_HAVE_IDE=y |
363 | # CONFIG_IDE is not set | 371 | # CONFIG_IDE is not set |
364 | 372 | ||
@@ -439,11 +447,11 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
439 | # CONFIG_THERMAL is not set | 447 | # CONFIG_THERMAL is not set |
440 | # CONFIG_THERMAL_HWMON is not set | 448 | # CONFIG_THERMAL_HWMON is not set |
441 | # CONFIG_WATCHDOG is not set | 449 | # CONFIG_WATCHDOG is not set |
450 | CONFIG_SSB_POSSIBLE=y | ||
442 | 451 | ||
443 | # | 452 | # |
444 | # Sonics Silicon Backplane | 453 | # Sonics Silicon Backplane |
445 | # | 454 | # |
446 | CONFIG_SSB_POSSIBLE=y | ||
447 | # CONFIG_SSB is not set | 455 | # CONFIG_SSB is not set |
448 | 456 | ||
449 | # | 457 | # |
@@ -453,7 +461,7 @@ CONFIG_SSB_POSSIBLE=y | |||
453 | # CONFIG_MFD_SM501 is not set | 461 | # CONFIG_MFD_SM501 is not set |
454 | # CONFIG_HTC_PASIC3 is not set | 462 | # CONFIG_HTC_PASIC3 is not set |
455 | # CONFIG_MFD_TMIO is not set | 463 | # CONFIG_MFD_TMIO is not set |
456 | # CONFIG_MFD_WM8400 is not set | 464 | # CONFIG_REGULATOR is not set |
457 | 465 | ||
458 | # | 466 | # |
459 | # Multimedia devices | 467 | # Multimedia devices |
@@ -506,7 +514,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
506 | # | 514 | # |
507 | 515 | ||
508 | # | 516 | # |
509 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 517 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
510 | # | 518 | # |
511 | # CONFIG_USB_GADGET is not set | 519 | # CONFIG_USB_GADGET is not set |
512 | # CONFIG_MMC is not set | 520 | # CONFIG_MMC is not set |
@@ -557,10 +565,7 @@ CONFIG_PROC_SYSCTL=y | |||
557 | # CONFIG_SYSFS is not set | 565 | # CONFIG_SYSFS is not set |
558 | # CONFIG_TMPFS is not set | 566 | # CONFIG_TMPFS is not set |
559 | # CONFIG_HUGETLB_PAGE is not set | 567 | # CONFIG_HUGETLB_PAGE is not set |
560 | 568 | CONFIG_MISC_FILESYSTEMS=y | |
561 | # | ||
562 | # Miscellaneous filesystems | ||
563 | # | ||
564 | # CONFIG_ADFS_FS is not set | 569 | # CONFIG_ADFS_FS is not set |
565 | # CONFIG_AFFS_FS is not set | 570 | # CONFIG_AFFS_FS is not set |
566 | # CONFIG_HFS_FS is not set | 571 | # CONFIG_HFS_FS is not set |
@@ -602,12 +607,19 @@ CONFIG_FRAME_WARN=1024 | |||
602 | # CONFIG_DEBUG_MEMORY_INIT is not set | 607 | # CONFIG_DEBUG_MEMORY_INIT is not set |
603 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 608 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
604 | # CONFIG_LATENCYTOP is not set | 609 | # CONFIG_LATENCYTOP is not set |
605 | CONFIG_NOP_TRACER=y | 610 | CONFIG_HAVE_FUNCTION_TRACER=y |
606 | CONFIG_HAVE_FTRACE=y | 611 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
612 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
613 | |||
614 | # | ||
615 | # Tracers | ||
616 | # | ||
607 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 617 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
608 | # CONFIG_SAMPLES is not set | 618 | # CONFIG_SAMPLES is not set |
619 | CONFIG_HAVE_ARCH_KGDB=y | ||
609 | # CONFIG_SH_STANDARD_BIOS is not set | 620 | # CONFIG_SH_STANDARD_BIOS is not set |
610 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 621 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
622 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
611 | 623 | ||
612 | # | 624 | # |
613 | # Security options | 625 | # Security options |
@@ -621,6 +633,7 @@ CONFIG_HAVE_FTRACE=y | |||
621 | # Library routines | 633 | # Library routines |
622 | # | 634 | # |
623 | CONFIG_BITREVERSE=y | 635 | CONFIG_BITREVERSE=y |
636 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
624 | # CONFIG_CRC_CCITT is not set | 637 | # CONFIG_CRC_CCITT is not set |
625 | # CONFIG_CRC16 is not set | 638 | # CONFIG_CRC16 is not set |
626 | # CONFIG_CRC_T10DIF is not set | 639 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/se7705_defconfig b/arch/sh/configs/se7705_defconfig index d88190fdd7c1..8574d6eb00a3 100644 --- a/arch/sh/configs/se7705_defconfig +++ b/arch/sh/configs/se7705_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:04:52 2008 | 4 | # Fri Jan 9 17:37:50 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -68,12 +70,10 @@ CONFIG_EVENTFD=y | |||
68 | CONFIG_SHMEM=y | 70 | CONFIG_SHMEM=y |
69 | CONFIG_AIO=y | 71 | CONFIG_AIO=y |
70 | CONFIG_VM_EVENT_COUNTERS=y | 72 | CONFIG_VM_EVENT_COUNTERS=y |
71 | CONFIG_PCI_QUIRKS=y | ||
72 | CONFIG_SLAB=y | 73 | CONFIG_SLAB=y |
73 | # CONFIG_SLUB is not set | 74 | # CONFIG_SLUB is not set |
74 | # CONFIG_SLOB is not set | 75 | # CONFIG_SLOB is not set |
75 | # CONFIG_PROFILING is not set | 76 | # CONFIG_PROFILING is not set |
76 | # CONFIG_MARKERS is not set | ||
77 | CONFIG_HAVE_OPROFILE=y | 77 | CONFIG_HAVE_OPROFILE=y |
78 | CONFIG_HAVE_IOREMAP_PROT=y | 78 | CONFIG_HAVE_IOREMAP_PROT=y |
79 | CONFIG_HAVE_KPROBES=y | 79 | CONFIG_HAVE_KPROBES=y |
@@ -83,17 +83,14 @@ CONFIG_HAVE_CLK=y | |||
83 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 83 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
84 | CONFIG_SLABINFO=y | 84 | CONFIG_SLABINFO=y |
85 | CONFIG_RT_MUTEXES=y | 85 | CONFIG_RT_MUTEXES=y |
86 | # CONFIG_TINY_SHMEM is not set | ||
87 | CONFIG_BASE_SMALL=0 | 86 | CONFIG_BASE_SMALL=0 |
88 | CONFIG_MODULES=y | 87 | CONFIG_MODULES=y |
89 | # CONFIG_MODULE_FORCE_LOAD is not set | 88 | # CONFIG_MODULE_FORCE_LOAD is not set |
90 | # CONFIG_MODULE_UNLOAD is not set | 89 | # CONFIG_MODULE_UNLOAD is not set |
91 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
92 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 91 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
93 | CONFIG_KMOD=y | ||
94 | CONFIG_BLOCK=y | 92 | CONFIG_BLOCK=y |
95 | # CONFIG_LBD is not set | 93 | # CONFIG_LBD is not set |
96 | # CONFIG_LSF is not set | ||
97 | # CONFIG_BLK_DEV_BSG is not set | 94 | # CONFIG_BLK_DEV_BSG is not set |
98 | # CONFIG_BLK_DEV_INTEGRITY is not set | 95 | # CONFIG_BLK_DEV_INTEGRITY is not set |
99 | 96 | ||
@@ -110,6 +107,10 @@ CONFIG_DEFAULT_AS=y | |||
110 | # CONFIG_DEFAULT_NOOP is not set | 107 | # CONFIG_DEFAULT_NOOP is not set |
111 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 108 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
112 | CONFIG_CLASSIC_RCU=y | 109 | CONFIG_CLASSIC_RCU=y |
110 | # CONFIG_TREE_RCU is not set | ||
111 | # CONFIG_PREEMPT_RCU is not set | ||
112 | # CONFIG_TREE_RCU_TRACE is not set | ||
113 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
113 | # CONFIG_FREEZER is not set | 114 | # CONFIG_FREEZER is not set |
114 | 115 | ||
115 | # | 116 | # |
@@ -117,6 +118,7 @@ CONFIG_CLASSIC_RCU=y | |||
117 | # | 118 | # |
118 | CONFIG_CPU_SH3=y | 119 | CONFIG_CPU_SH3=y |
119 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 120 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
121 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
120 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 122 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
121 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 123 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
122 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 124 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -180,7 +182,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
180 | CONFIG_SPARSEMEM_STATIC=y | 182 | CONFIG_SPARSEMEM_STATIC=y |
181 | CONFIG_PAGEFLAGS_EXTENDED=y | 183 | CONFIG_PAGEFLAGS_EXTENDED=y |
182 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 184 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
183 | # CONFIG_RESOURCES_64BIT is not set | ||
184 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 185 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
185 | CONFIG_ZONE_DMA_FLAG=0 | 186 | CONFIG_ZONE_DMA_FLAG=0 |
186 | CONFIG_NR_QUICK=2 | 187 | CONFIG_NR_QUICK=2 |
@@ -258,7 +259,6 @@ CONFIG_HZ=250 | |||
258 | # CONFIG_PREEMPT_NONE is not set | 259 | # CONFIG_PREEMPT_NONE is not set |
259 | # CONFIG_PREEMPT_VOLUNTARY is not set | 260 | # CONFIG_PREEMPT_VOLUNTARY is not set |
260 | CONFIG_PREEMPT=y | 261 | CONFIG_PREEMPT=y |
261 | # CONFIG_PREEMPT_RCU is not set | ||
262 | CONFIG_GUSA=y | 262 | CONFIG_GUSA=y |
263 | # CONFIG_GUSA_RB is not set | 263 | # CONFIG_GUSA_RB is not set |
264 | 264 | ||
@@ -272,10 +272,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000 | |||
272 | # | 272 | # |
273 | # Bus options | 273 | # Bus options |
274 | # | 274 | # |
275 | CONFIG_CF_ENABLER=y | ||
276 | # CONFIG_CF_AREA5 is not set | ||
277 | CONFIG_CF_AREA6=y | ||
278 | CONFIG_CF_BASE_ADDR=0xb8000000 | ||
279 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 275 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
280 | 276 | ||
281 | # | 277 | # |
@@ -285,11 +281,18 @@ CONFIG_BINFMT_ELF=y | |||
285 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 281 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
286 | # CONFIG_HAVE_AOUT is not set | 282 | # CONFIG_HAVE_AOUT is not set |
287 | # CONFIG_BINFMT_MISC is not set | 283 | # CONFIG_BINFMT_MISC is not set |
284 | |||
285 | # | ||
286 | # Power management options (EXPERIMENTAL) | ||
287 | # | ||
288 | # CONFIG_PM is not set | ||
289 | # CONFIG_CPU_IDLE is not set | ||
288 | CONFIG_NET=y | 290 | CONFIG_NET=y |
289 | 291 | ||
290 | # | 292 | # |
291 | # Networking options | 293 | # Networking options |
292 | # | 294 | # |
295 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
293 | CONFIG_PACKET=y | 296 | CONFIG_PACKET=y |
294 | # CONFIG_PACKET_MMAP is not set | 297 | # CONFIG_PACKET_MMAP is not set |
295 | CONFIG_UNIX=y | 298 | CONFIG_UNIX=y |
@@ -345,6 +348,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
345 | # CONFIG_ECONET is not set | 348 | # CONFIG_ECONET is not set |
346 | # CONFIG_WAN_ROUTER is not set | 349 | # CONFIG_WAN_ROUTER is not set |
347 | # CONFIG_NET_SCHED is not set | 350 | # CONFIG_NET_SCHED is not set |
351 | # CONFIG_DCB is not set | ||
348 | 352 | ||
349 | # | 353 | # |
350 | # Network testing | 354 | # Network testing |
@@ -360,8 +364,8 @@ CONFIG_WIRELESS=y | |||
360 | # CONFIG_CFG80211 is not set | 364 | # CONFIG_CFG80211 is not set |
361 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 365 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
362 | # CONFIG_WIRELESS_EXT is not set | 366 | # CONFIG_WIRELESS_EXT is not set |
367 | # CONFIG_LIB80211 is not set | ||
363 | # CONFIG_MAC80211 is not set | 368 | # CONFIG_MAC80211 is not set |
364 | # CONFIG_IEEE80211 is not set | ||
365 | # CONFIG_RFKILL is not set | 369 | # CONFIG_RFKILL is not set |
366 | # CONFIG_NET_9P is not set | 370 | # CONFIG_NET_9P is not set |
367 | 371 | ||
@@ -465,6 +469,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192 | |||
465 | CONFIG_MISC_DEVICES=y | 469 | CONFIG_MISC_DEVICES=y |
466 | # CONFIG_EEPROM_93CX6 is not set | 470 | # CONFIG_EEPROM_93CX6 is not set |
467 | # CONFIG_ENCLOSURE_SERVICES is not set | 471 | # CONFIG_ENCLOSURE_SERVICES is not set |
472 | # CONFIG_C2PORT is not set | ||
468 | CONFIG_HAVE_IDE=y | 473 | CONFIG_HAVE_IDE=y |
469 | # CONFIG_IDE is not set | 474 | # CONFIG_IDE is not set |
470 | 475 | ||
@@ -491,6 +496,7 @@ CONFIG_NET_ETHERNET=y | |||
491 | CONFIG_STNIC=y | 496 | CONFIG_STNIC=y |
492 | # CONFIG_SMC91X is not set | 497 | # CONFIG_SMC91X is not set |
493 | # CONFIG_SMC911X is not set | 498 | # CONFIG_SMC911X is not set |
499 | # CONFIG_SMSC911X is not set | ||
494 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 500 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
495 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 501 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
496 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 502 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -583,6 +589,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
583 | CONFIG_SERIAL_CORE=y | 589 | CONFIG_SERIAL_CORE=y |
584 | CONFIG_SERIAL_CORE_CONSOLE=y | 590 | CONFIG_SERIAL_CORE_CONSOLE=y |
585 | CONFIG_UNIX98_PTYS=y | 591 | CONFIG_UNIX98_PTYS=y |
592 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
586 | # CONFIG_LEGACY_PTYS is not set | 593 | # CONFIG_LEGACY_PTYS is not set |
587 | # CONFIG_IPMI_HANDLER is not set | 594 | # CONFIG_IPMI_HANDLER is not set |
588 | CONFIG_HW_RANDOM=y | 595 | CONFIG_HW_RANDOM=y |
@@ -609,11 +616,11 @@ CONFIG_HWMON=y | |||
609 | # CONFIG_THERMAL is not set | 616 | # CONFIG_THERMAL is not set |
610 | # CONFIG_THERMAL_HWMON is not set | 617 | # CONFIG_THERMAL_HWMON is not set |
611 | # CONFIG_WATCHDOG is not set | 618 | # CONFIG_WATCHDOG is not set |
619 | CONFIG_SSB_POSSIBLE=y | ||
612 | 620 | ||
613 | # | 621 | # |
614 | # Sonics Silicon Backplane | 622 | # Sonics Silicon Backplane |
615 | # | 623 | # |
616 | CONFIG_SSB_POSSIBLE=y | ||
617 | # CONFIG_SSB is not set | 624 | # CONFIG_SSB is not set |
618 | 625 | ||
619 | # | 626 | # |
@@ -623,7 +630,7 @@ CONFIG_SSB_POSSIBLE=y | |||
623 | # CONFIG_MFD_SM501 is not set | 630 | # CONFIG_MFD_SM501 is not set |
624 | # CONFIG_HTC_PASIC3 is not set | 631 | # CONFIG_HTC_PASIC3 is not set |
625 | # CONFIG_MFD_TMIO is not set | 632 | # CONFIG_MFD_TMIO is not set |
626 | # CONFIG_MFD_WM8400 is not set | 633 | # CONFIG_REGULATOR is not set |
627 | 634 | ||
628 | # | 635 | # |
629 | # Multimedia devices | 636 | # Multimedia devices |
@@ -677,7 +684,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
677 | # | 684 | # |
678 | 685 | ||
679 | # | 686 | # |
680 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 687 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
681 | # | 688 | # |
682 | # CONFIG_USB_GADGET is not set | 689 | # CONFIG_USB_GADGET is not set |
683 | # CONFIG_MMC is not set | 690 | # CONFIG_MMC is not set |
@@ -734,10 +741,7 @@ CONFIG_PROC_PAGE_MONITOR=y | |||
734 | # CONFIG_TMPFS is not set | 741 | # CONFIG_TMPFS is not set |
735 | # CONFIG_HUGETLBFS is not set | 742 | # CONFIG_HUGETLBFS is not set |
736 | # CONFIG_HUGETLB_PAGE is not set | 743 | # CONFIG_HUGETLB_PAGE is not set |
737 | 744 | CONFIG_MISC_FILESYSTEMS=y | |
738 | # | ||
739 | # Miscellaneous filesystems | ||
740 | # | ||
741 | # CONFIG_ADFS_FS is not set | 745 | # CONFIG_ADFS_FS is not set |
742 | # CONFIG_AFFS_FS is not set | 746 | # CONFIG_AFFS_FS is not set |
743 | # CONFIG_HFS_FS is not set | 747 | # CONFIG_HFS_FS is not set |
@@ -806,13 +810,19 @@ CONFIG_FRAME_WARN=1024 | |||
806 | # CONFIG_DEBUG_MEMORY_INIT is not set | 810 | # CONFIG_DEBUG_MEMORY_INIT is not set |
807 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 811 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
808 | # CONFIG_LATENCYTOP is not set | 812 | # CONFIG_LATENCYTOP is not set |
809 | CONFIG_NOP_TRACER=y | 813 | CONFIG_HAVE_FUNCTION_TRACER=y |
810 | CONFIG_HAVE_FTRACE=y | 814 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
815 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
816 | |||
817 | # | ||
818 | # Tracers | ||
819 | # | ||
811 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 820 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
812 | # CONFIG_SAMPLES is not set | 821 | # CONFIG_SAMPLES is not set |
822 | CONFIG_HAVE_ARCH_KGDB=y | ||
813 | # CONFIG_SH_STANDARD_BIOS is not set | 823 | # CONFIG_SH_STANDARD_BIOS is not set |
814 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 824 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
815 | # CONFIG_SH_KGDB is not set | 825 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
816 | 826 | ||
817 | # | 827 | # |
818 | # Security options | 828 | # Security options |
@@ -827,6 +837,7 @@ CONFIG_CRYPTO=y | |||
827 | # | 837 | # |
828 | # CONFIG_CRYPTO_FIPS is not set | 838 | # CONFIG_CRYPTO_FIPS is not set |
829 | # CONFIG_CRYPTO_MANAGER is not set | 839 | # CONFIG_CRYPTO_MANAGER is not set |
840 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
830 | # CONFIG_CRYPTO_GF128MUL is not set | 841 | # CONFIG_CRYPTO_GF128MUL is not set |
831 | # CONFIG_CRYPTO_NULL is not set | 842 | # CONFIG_CRYPTO_NULL is not set |
832 | # CONFIG_CRYPTO_CRYPTD is not set | 843 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -909,6 +920,7 @@ CONFIG_CRYPTO_HW=y | |||
909 | # Library routines | 920 | # Library routines |
910 | # | 921 | # |
911 | CONFIG_BITREVERSE=y | 922 | CONFIG_BITREVERSE=y |
923 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
912 | CONFIG_CRC_CCITT=y | 924 | CONFIG_CRC_CCITT=y |
913 | # CONFIG_CRC16 is not set | 925 | # CONFIG_CRC16 is not set |
914 | # CONFIG_CRC_T10DIF is not set | 926 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/se7712_defconfig b/arch/sh/configs/se7712_defconfig index 869ab1737deb..e31ea84f116d 100644 --- a/arch/sh/configs/se7712_defconfig +++ b/arch/sh/configs/se7712_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:08:12 2008 | 4 | # Fri Jan 9 17:40:12 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -15,6 +15,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
15 | # CONFIG_GENERIC_GPIO is not set | 15 | # CONFIG_GENERIC_GPIO is not set |
16 | CONFIG_GENERIC_TIME=y | 16 | CONFIG_GENERIC_TIME=y |
17 | CONFIG_GENERIC_CLOCKEVENTS=y | 17 | CONFIG_GENERIC_CLOCKEVENTS=y |
18 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
19 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
18 | CONFIG_STACKTRACE_SUPPORT=y | 20 | CONFIG_STACKTRACE_SUPPORT=y |
19 | CONFIG_LOCKDEP_SUPPORT=y | 21 | CONFIG_LOCKDEP_SUPPORT=y |
20 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 22 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -55,6 +57,7 @@ CONFIG_UID16=y | |||
55 | CONFIG_SYSCTL_SYSCALL=y | 57 | CONFIG_SYSCTL_SYSCALL=y |
56 | CONFIG_KALLSYMS=y | 58 | CONFIG_KALLSYMS=y |
57 | CONFIG_KALLSYMS_ALL=y | 59 | CONFIG_KALLSYMS_ALL=y |
60 | CONFIG_KALLSYMS_STRIP_GENERATED=y | ||
58 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 61 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
59 | CONFIG_HOTPLUG=y | 62 | CONFIG_HOTPLUG=y |
60 | CONFIG_PRINTK=y | 63 | CONFIG_PRINTK=y |
@@ -71,12 +74,10 @@ CONFIG_EVENTFD=y | |||
71 | # CONFIG_SHMEM is not set | 74 | # CONFIG_SHMEM is not set |
72 | CONFIG_AIO=y | 75 | CONFIG_AIO=y |
73 | CONFIG_VM_EVENT_COUNTERS=y | 76 | CONFIG_VM_EVENT_COUNTERS=y |
74 | CONFIG_PCI_QUIRKS=y | ||
75 | CONFIG_SLAB=y | 77 | CONFIG_SLAB=y |
76 | # CONFIG_SLUB is not set | 78 | # CONFIG_SLUB is not set |
77 | # CONFIG_SLOB is not set | 79 | # CONFIG_SLOB is not set |
78 | # CONFIG_PROFILING is not set | 80 | # CONFIG_PROFILING is not set |
79 | # CONFIG_MARKERS is not set | ||
80 | CONFIG_HAVE_OPROFILE=y | 81 | CONFIG_HAVE_OPROFILE=y |
81 | # CONFIG_KPROBES is not set | 82 | # CONFIG_KPROBES is not set |
82 | CONFIG_HAVE_IOREMAP_PROT=y | 83 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -87,18 +88,15 @@ CONFIG_HAVE_CLK=y | |||
87 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 88 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
88 | CONFIG_SLABINFO=y | 89 | CONFIG_SLABINFO=y |
89 | CONFIG_RT_MUTEXES=y | 90 | CONFIG_RT_MUTEXES=y |
90 | CONFIG_TINY_SHMEM=y | ||
91 | CONFIG_BASE_SMALL=1 | 91 | CONFIG_BASE_SMALL=1 |
92 | CONFIG_MODULES=y | 92 | CONFIG_MODULES=y |
93 | # CONFIG_MODULE_FORCE_LOAD is not set | 93 | # CONFIG_MODULE_FORCE_LOAD is not set |
94 | # CONFIG_MODULE_UNLOAD is not set | 94 | # CONFIG_MODULE_UNLOAD is not set |
95 | # CONFIG_MODVERSIONS is not set | 95 | # CONFIG_MODVERSIONS is not set |
96 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 96 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
97 | CONFIG_KMOD=y | ||
98 | CONFIG_BLOCK=y | 97 | CONFIG_BLOCK=y |
99 | # CONFIG_LBD is not set | 98 | # CONFIG_LBD is not set |
100 | # CONFIG_BLK_DEV_IO_TRACE is not set | 99 | # CONFIG_BLK_DEV_IO_TRACE is not set |
101 | # CONFIG_LSF is not set | ||
102 | # CONFIG_BLK_DEV_BSG is not set | 100 | # CONFIG_BLK_DEV_BSG is not set |
103 | # CONFIG_BLK_DEV_INTEGRITY is not set | 101 | # CONFIG_BLK_DEV_INTEGRITY is not set |
104 | 102 | ||
@@ -115,6 +113,10 @@ CONFIG_IOSCHED_NOOP=y | |||
115 | CONFIG_DEFAULT_NOOP=y | 113 | CONFIG_DEFAULT_NOOP=y |
116 | CONFIG_DEFAULT_IOSCHED="noop" | 114 | CONFIG_DEFAULT_IOSCHED="noop" |
117 | CONFIG_CLASSIC_RCU=y | 115 | CONFIG_CLASSIC_RCU=y |
116 | # CONFIG_TREE_RCU is not set | ||
117 | # CONFIG_PREEMPT_RCU is not set | ||
118 | # CONFIG_TREE_RCU_TRACE is not set | ||
119 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
118 | # CONFIG_FREEZER is not set | 120 | # CONFIG_FREEZER is not set |
119 | 121 | ||
120 | # | 122 | # |
@@ -122,6 +124,7 @@ CONFIG_CLASSIC_RCU=y | |||
122 | # | 124 | # |
123 | CONFIG_CPU_SH3=y | 125 | CONFIG_CPU_SH3=y |
124 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 126 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
127 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
125 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 128 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
126 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 129 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
127 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -185,7 +188,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
185 | CONFIG_SPARSEMEM_STATIC=y | 188 | CONFIG_SPARSEMEM_STATIC=y |
186 | CONFIG_PAGEFLAGS_EXTENDED=y | 189 | CONFIG_PAGEFLAGS_EXTENDED=y |
187 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 190 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
188 | # CONFIG_RESOURCES_64BIT is not set | ||
189 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 191 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
190 | CONFIG_ZONE_DMA_FLAG=0 | 192 | CONFIG_ZONE_DMA_FLAG=0 |
191 | CONFIG_NR_QUICK=2 | 193 | CONFIG_NR_QUICK=2 |
@@ -277,10 +279,6 @@ CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1" | |||
277 | # | 279 | # |
278 | # Bus options | 280 | # Bus options |
279 | # | 281 | # |
280 | CONFIG_CF_ENABLER=y | ||
281 | # CONFIG_CF_AREA5 is not set | ||
282 | CONFIG_CF_AREA6=y | ||
283 | CONFIG_CF_BASE_ADDR=0xb8000000 | ||
284 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 282 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
285 | # CONFIG_PCCARD is not set | 283 | # CONFIG_PCCARD is not set |
286 | 284 | ||
@@ -291,11 +289,18 @@ CONFIG_BINFMT_ELF=y | |||
291 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 289 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
292 | # CONFIG_HAVE_AOUT is not set | 290 | # CONFIG_HAVE_AOUT is not set |
293 | # CONFIG_BINFMT_MISC is not set | 291 | # CONFIG_BINFMT_MISC is not set |
292 | |||
293 | # | ||
294 | # Power management options (EXPERIMENTAL) | ||
295 | # | ||
296 | # CONFIG_PM is not set | ||
297 | # CONFIG_CPU_IDLE is not set | ||
294 | CONFIG_NET=y | 298 | CONFIG_NET=y |
295 | 299 | ||
296 | # | 300 | # |
297 | # Networking options | 301 | # Networking options |
298 | # | 302 | # |
303 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
299 | CONFIG_PACKET=y | 304 | CONFIG_PACKET=y |
300 | CONFIG_PACKET_MMAP=y | 305 | CONFIG_PACKET_MMAP=y |
301 | CONFIG_UNIX=y | 306 | CONFIG_UNIX=y |
@@ -376,6 +381,7 @@ CONFIG_NET_SCH_TBF=y | |||
376 | CONFIG_NET_SCH_GRED=y | 381 | CONFIG_NET_SCH_GRED=y |
377 | CONFIG_NET_SCH_DSMARK=y | 382 | CONFIG_NET_SCH_DSMARK=y |
378 | CONFIG_NET_SCH_NETEM=y | 383 | CONFIG_NET_SCH_NETEM=y |
384 | # CONFIG_NET_SCH_DRR is not set | ||
379 | 385 | ||
380 | # | 386 | # |
381 | # Classification | 387 | # Classification |
@@ -394,6 +400,7 @@ CONFIG_NET_CLS_FW=y | |||
394 | # CONFIG_NET_CLS_ACT is not set | 400 | # CONFIG_NET_CLS_ACT is not set |
395 | CONFIG_NET_CLS_IND=y | 401 | CONFIG_NET_CLS_IND=y |
396 | CONFIG_NET_SCH_FIFO=y | 402 | CONFIG_NET_SCH_FIFO=y |
403 | # CONFIG_DCB is not set | ||
397 | 404 | ||
398 | # | 405 | # |
399 | # Network testing | 406 | # Network testing |
@@ -410,8 +417,8 @@ CONFIG_WIRELESS=y | |||
410 | # CONFIG_CFG80211 is not set | 417 | # CONFIG_CFG80211 is not set |
411 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 418 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
412 | # CONFIG_WIRELESS_EXT is not set | 419 | # CONFIG_WIRELESS_EXT is not set |
420 | # CONFIG_LIB80211 is not set | ||
413 | # CONFIG_MAC80211 is not set | 421 | # CONFIG_MAC80211 is not set |
414 | # CONFIG_IEEE80211 is not set | ||
415 | # CONFIG_RFKILL is not set | 422 | # CONFIG_RFKILL is not set |
416 | # CONFIG_NET_9P is not set | 423 | # CONFIG_NET_9P is not set |
417 | 424 | ||
@@ -518,6 +525,7 @@ CONFIG_BLK_DEV=y | |||
518 | CONFIG_MISC_DEVICES=y | 525 | CONFIG_MISC_DEVICES=y |
519 | # CONFIG_EEPROM_93CX6 is not set | 526 | # CONFIG_EEPROM_93CX6 is not set |
520 | # CONFIG_ENCLOSURE_SERVICES is not set | 527 | # CONFIG_ENCLOSURE_SERVICES is not set |
528 | # CONFIG_C2PORT is not set | ||
521 | CONFIG_HAVE_IDE=y | 529 | CONFIG_HAVE_IDE=y |
522 | # CONFIG_IDE is not set | 530 | # CONFIG_IDE is not set |
523 | 531 | ||
@@ -560,6 +568,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
560 | # CONFIG_SCSI_SRP_ATTRS is not set | 568 | # CONFIG_SCSI_SRP_ATTRS is not set |
561 | CONFIG_SCSI_LOWLEVEL=y | 569 | CONFIG_SCSI_LOWLEVEL=y |
562 | # CONFIG_ISCSI_TCP is not set | 570 | # CONFIG_ISCSI_TCP is not set |
571 | # CONFIG_LIBFC is not set | ||
563 | # CONFIG_SCSI_DEBUG is not set | 572 | # CONFIG_SCSI_DEBUG is not set |
564 | # CONFIG_SCSI_DH is not set | 573 | # CONFIG_SCSI_DH is not set |
565 | CONFIG_ATA=y | 574 | CONFIG_ATA=y |
@@ -591,6 +600,9 @@ CONFIG_PHYLIB=y | |||
591 | # CONFIG_BROADCOM_PHY is not set | 600 | # CONFIG_BROADCOM_PHY is not set |
592 | # CONFIG_ICPLUS_PHY is not set | 601 | # CONFIG_ICPLUS_PHY is not set |
593 | # CONFIG_REALTEK_PHY is not set | 602 | # CONFIG_REALTEK_PHY is not set |
603 | # CONFIG_NATIONAL_PHY is not set | ||
604 | # CONFIG_STE10XP is not set | ||
605 | # CONFIG_LSI_ET1011C_PHY is not set | ||
594 | # CONFIG_FIXED_PHY is not set | 606 | # CONFIG_FIXED_PHY is not set |
595 | CONFIG_MDIO_BITBANG=y | 607 | CONFIG_MDIO_BITBANG=y |
596 | CONFIG_NET_ETHERNET=y | 608 | CONFIG_NET_ETHERNET=y |
@@ -600,6 +612,7 @@ CONFIG_MII=y | |||
600 | CONFIG_SH_ETH=y | 612 | CONFIG_SH_ETH=y |
601 | # CONFIG_SMC91X is not set | 613 | # CONFIG_SMC91X is not set |
602 | # CONFIG_SMC911X is not set | 614 | # CONFIG_SMC911X is not set |
615 | # CONFIG_SMSC911X is not set | ||
603 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 616 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
604 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 617 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
605 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 618 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -658,6 +671,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
658 | CONFIG_SERIAL_CORE=y | 671 | CONFIG_SERIAL_CORE=y |
659 | CONFIG_SERIAL_CORE_CONSOLE=y | 672 | CONFIG_SERIAL_CORE_CONSOLE=y |
660 | CONFIG_UNIX98_PTYS=y | 673 | CONFIG_UNIX98_PTYS=y |
674 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
661 | # CONFIG_LEGACY_PTYS is not set | 675 | # CONFIG_LEGACY_PTYS is not set |
662 | # CONFIG_IPMI_HANDLER is not set | 676 | # CONFIG_IPMI_HANDLER is not set |
663 | CONFIG_HW_RANDOM=m | 677 | CONFIG_HW_RANDOM=m |
@@ -672,11 +686,11 @@ CONFIG_HW_RANDOM=m | |||
672 | # CONFIG_THERMAL is not set | 686 | # CONFIG_THERMAL is not set |
673 | # CONFIG_THERMAL_HWMON is not set | 687 | # CONFIG_THERMAL_HWMON is not set |
674 | # CONFIG_WATCHDOG is not set | 688 | # CONFIG_WATCHDOG is not set |
689 | CONFIG_SSB_POSSIBLE=y | ||
675 | 690 | ||
676 | # | 691 | # |
677 | # Sonics Silicon Backplane | 692 | # Sonics Silicon Backplane |
678 | # | 693 | # |
679 | CONFIG_SSB_POSSIBLE=y | ||
680 | # CONFIG_SSB is not set | 694 | # CONFIG_SSB is not set |
681 | 695 | ||
682 | # | 696 | # |
@@ -686,7 +700,7 @@ CONFIG_SSB_POSSIBLE=y | |||
686 | # CONFIG_MFD_SM501 is not set | 700 | # CONFIG_MFD_SM501 is not set |
687 | # CONFIG_HTC_PASIC3 is not set | 701 | # CONFIG_HTC_PASIC3 is not set |
688 | # CONFIG_MFD_TMIO is not set | 702 | # CONFIG_MFD_TMIO is not set |
689 | # CONFIG_MFD_WM8400 is not set | 703 | # CONFIG_REGULATOR is not set |
690 | 704 | ||
691 | # | 705 | # |
692 | # Multimedia devices | 706 | # Multimedia devices |
@@ -730,7 +744,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
730 | # | 744 | # |
731 | 745 | ||
732 | # | 746 | # |
733 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 747 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
734 | # | 748 | # |
735 | # CONFIG_USB_GADGET is not set | 749 | # CONFIG_USB_GADGET is not set |
736 | # CONFIG_MMC is not set | 750 | # CONFIG_MMC is not set |
@@ -748,6 +762,7 @@ CONFIG_LEDS_CLASS=y | |||
748 | CONFIG_LEDS_TRIGGERS=y | 762 | CONFIG_LEDS_TRIGGERS=y |
749 | # CONFIG_LEDS_TRIGGER_TIMER is not set | 763 | # CONFIG_LEDS_TRIGGER_TIMER is not set |
750 | # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set | 764 | # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set |
765 | # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set | ||
751 | # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set | 766 | # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set |
752 | # CONFIG_ACCESSIBILITY is not set | 767 | # CONFIG_ACCESSIBILITY is not set |
753 | # CONFIG_RTC_CLASS is not set | 768 | # CONFIG_RTC_CLASS is not set |
@@ -809,10 +824,7 @@ CONFIG_TMPFS=y | |||
809 | # CONFIG_HUGETLBFS is not set | 824 | # CONFIG_HUGETLBFS is not set |
810 | # CONFIG_HUGETLB_PAGE is not set | 825 | # CONFIG_HUGETLB_PAGE is not set |
811 | # CONFIG_CONFIGFS_FS is not set | 826 | # CONFIG_CONFIGFS_FS is not set |
812 | 827 | CONFIG_MISC_FILESYSTEMS=y | |
813 | # | ||
814 | # Miscellaneous filesystems | ||
815 | # | ||
816 | # CONFIG_ADFS_FS is not set | 828 | # CONFIG_ADFS_FS is not set |
817 | # CONFIG_AFFS_FS is not set | 829 | # CONFIG_AFFS_FS is not set |
818 | # CONFIG_HFS_FS is not set | 830 | # CONFIG_HFS_FS is not set |
@@ -902,6 +914,7 @@ CONFIG_DEBUG_INFO=y | |||
902 | # CONFIG_DEBUG_MEMORY_INIT is not set | 914 | # CONFIG_DEBUG_MEMORY_INIT is not set |
903 | # CONFIG_DEBUG_LIST is not set | 915 | # CONFIG_DEBUG_LIST is not set |
904 | # CONFIG_DEBUG_SG is not set | 916 | # CONFIG_DEBUG_SG is not set |
917 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
905 | CONFIG_FRAME_POINTER=y | 918 | CONFIG_FRAME_POINTER=y |
906 | # CONFIG_RCU_TORTURE_TEST is not set | 919 | # CONFIG_RCU_TORTURE_TEST is not set |
907 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 920 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -910,16 +923,24 @@ CONFIG_FRAME_POINTER=y | |||
910 | # CONFIG_FAULT_INJECTION is not set | 923 | # CONFIG_FAULT_INJECTION is not set |
911 | # CONFIG_LATENCYTOP is not set | 924 | # CONFIG_LATENCYTOP is not set |
912 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 925 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
913 | CONFIG_NOP_TRACER=y | 926 | CONFIG_HAVE_FUNCTION_TRACER=y |
914 | CONFIG_HAVE_FTRACE=y | 927 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
915 | # CONFIG_FTRACE is not set | 928 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
929 | |||
930 | # | ||
931 | # Tracers | ||
932 | # | ||
933 | # CONFIG_FUNCTION_TRACER is not set | ||
916 | # CONFIG_IRQSOFF_TRACER is not set | 934 | # CONFIG_IRQSOFF_TRACER is not set |
917 | # CONFIG_SCHED_TRACER is not set | 935 | # CONFIG_SCHED_TRACER is not set |
918 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 936 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
919 | # CONFIG_BOOT_TRACER is not set | 937 | # CONFIG_BOOT_TRACER is not set |
938 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
920 | # CONFIG_STACK_TRACER is not set | 939 | # CONFIG_STACK_TRACER is not set |
921 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 940 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
922 | # CONFIG_SAMPLES is not set | 941 | # CONFIG_SAMPLES is not set |
942 | CONFIG_HAVE_ARCH_KGDB=y | ||
943 | # CONFIG_KGDB is not set | ||
923 | # CONFIG_SH_STANDARD_BIOS is not set | 944 | # CONFIG_SH_STANDARD_BIOS is not set |
924 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 945 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
925 | # CONFIG_DEBUG_BOOTMEM is not set | 946 | # CONFIG_DEBUG_BOOTMEM is not set |
@@ -927,7 +948,9 @@ CONFIG_HAVE_FTRACE=y | |||
927 | # CONFIG_DEBUG_STACK_USAGE is not set | 948 | # CONFIG_DEBUG_STACK_USAGE is not set |
928 | # CONFIG_4KSTACKS is not set | 949 | # CONFIG_4KSTACKS is not set |
929 | # CONFIG_IRQSTACKS is not set | 950 | # CONFIG_IRQSTACKS is not set |
930 | # CONFIG_SH_KGDB is not set | 951 | # CONFIG_DUMP_CODE is not set |
952 | # CONFIG_SH_NO_BSS_INIT is not set | ||
953 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
931 | 954 | ||
932 | # | 955 | # |
933 | # Security options | 956 | # Security options |
@@ -943,11 +966,16 @@ CONFIG_CRYPTO=y | |||
943 | # | 966 | # |
944 | # CONFIG_CRYPTO_FIPS is not set | 967 | # CONFIG_CRYPTO_FIPS is not set |
945 | CONFIG_CRYPTO_ALGAPI=y | 968 | CONFIG_CRYPTO_ALGAPI=y |
969 | CONFIG_CRYPTO_ALGAPI2=y | ||
946 | CONFIG_CRYPTO_AEAD=y | 970 | CONFIG_CRYPTO_AEAD=y |
971 | CONFIG_CRYPTO_AEAD2=y | ||
947 | CONFIG_CRYPTO_BLKCIPHER=y | 972 | CONFIG_CRYPTO_BLKCIPHER=y |
973 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
948 | CONFIG_CRYPTO_HASH=y | 974 | CONFIG_CRYPTO_HASH=y |
949 | CONFIG_CRYPTO_RNG=y | 975 | CONFIG_CRYPTO_HASH2=y |
976 | CONFIG_CRYPTO_RNG2=y | ||
950 | CONFIG_CRYPTO_MANAGER=y | 977 | CONFIG_CRYPTO_MANAGER=y |
978 | CONFIG_CRYPTO_MANAGER2=y | ||
951 | # CONFIG_CRYPTO_GF128MUL is not set | 979 | # CONFIG_CRYPTO_GF128MUL is not set |
952 | # CONFIG_CRYPTO_NULL is not set | 980 | # CONFIG_CRYPTO_NULL is not set |
953 | # CONFIG_CRYPTO_CRYPTD is not set | 981 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1030,6 +1058,7 @@ CONFIG_CRYPTO_HW=y | |||
1030 | # Library routines | 1058 | # Library routines |
1031 | # | 1059 | # |
1032 | CONFIG_BITREVERSE=y | 1060 | CONFIG_BITREVERSE=y |
1061 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1033 | CONFIG_CRC_CCITT=y | 1062 | CONFIG_CRC_CCITT=y |
1034 | # CONFIG_CRC16 is not set | 1063 | # CONFIG_CRC16 is not set |
1035 | # CONFIG_CRC_T10DIF is not set | 1064 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/se7721_defconfig b/arch/sh/configs/se7721_defconfig index b52be14074d8..ad1bace3ad46 100644 --- a/arch/sh/configs/se7721_defconfig +++ b/arch/sh/configs/se7721_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:12:06 2008 | 4 | # Fri Jan 9 17:43:33 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -15,6 +15,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
15 | # CONFIG_GENERIC_GPIO is not set | 15 | # CONFIG_GENERIC_GPIO is not set |
16 | CONFIG_GENERIC_TIME=y | 16 | CONFIG_GENERIC_TIME=y |
17 | CONFIG_GENERIC_CLOCKEVENTS=y | 17 | CONFIG_GENERIC_CLOCKEVENTS=y |
18 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
19 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
18 | CONFIG_STACKTRACE_SUPPORT=y | 20 | CONFIG_STACKTRACE_SUPPORT=y |
19 | CONFIG_LOCKDEP_SUPPORT=y | 21 | CONFIG_LOCKDEP_SUPPORT=y |
20 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 22 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -59,6 +61,7 @@ CONFIG_UID16=y | |||
59 | CONFIG_SYSCTL_SYSCALL=y | 61 | CONFIG_SYSCTL_SYSCALL=y |
60 | CONFIG_KALLSYMS=y | 62 | CONFIG_KALLSYMS=y |
61 | CONFIG_KALLSYMS_ALL=y | 63 | CONFIG_KALLSYMS_ALL=y |
64 | CONFIG_KALLSYMS_STRIP_GENERATED=y | ||
62 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 65 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
63 | CONFIG_HOTPLUG=y | 66 | CONFIG_HOTPLUG=y |
64 | CONFIG_PRINTK=y | 67 | CONFIG_PRINTK=y |
@@ -75,12 +78,10 @@ CONFIG_EVENTFD=y | |||
75 | # CONFIG_SHMEM is not set | 78 | # CONFIG_SHMEM is not set |
76 | CONFIG_AIO=y | 79 | CONFIG_AIO=y |
77 | CONFIG_VM_EVENT_COUNTERS=y | 80 | CONFIG_VM_EVENT_COUNTERS=y |
78 | CONFIG_PCI_QUIRKS=y | ||
79 | CONFIG_SLAB=y | 81 | CONFIG_SLAB=y |
80 | # CONFIG_SLUB is not set | 82 | # CONFIG_SLUB is not set |
81 | # CONFIG_SLOB is not set | 83 | # CONFIG_SLOB is not set |
82 | # CONFIG_PROFILING is not set | 84 | # CONFIG_PROFILING is not set |
83 | # CONFIG_MARKERS is not set | ||
84 | CONFIG_HAVE_OPROFILE=y | 85 | CONFIG_HAVE_OPROFILE=y |
85 | # CONFIG_KPROBES is not set | 86 | # CONFIG_KPROBES is not set |
86 | CONFIG_HAVE_IOREMAP_PROT=y | 87 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -91,18 +92,15 @@ CONFIG_HAVE_CLK=y | |||
91 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 92 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
92 | CONFIG_SLABINFO=y | 93 | CONFIG_SLABINFO=y |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | CONFIG_TINY_SHMEM=y | ||
95 | CONFIG_BASE_SMALL=1 | 95 | CONFIG_BASE_SMALL=1 |
96 | CONFIG_MODULES=y | 96 | CONFIG_MODULES=y |
97 | # CONFIG_MODULE_FORCE_LOAD is not set | 97 | # CONFIG_MODULE_FORCE_LOAD is not set |
98 | # CONFIG_MODULE_UNLOAD is not set | 98 | # CONFIG_MODULE_UNLOAD is not set |
99 | # CONFIG_MODVERSIONS is not set | 99 | # CONFIG_MODVERSIONS is not set |
100 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 100 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
101 | CONFIG_KMOD=y | ||
102 | CONFIG_BLOCK=y | 101 | CONFIG_BLOCK=y |
103 | # CONFIG_LBD is not set | 102 | # CONFIG_LBD is not set |
104 | # CONFIG_BLK_DEV_IO_TRACE is not set | 103 | # CONFIG_BLK_DEV_IO_TRACE is not set |
105 | # CONFIG_LSF is not set | ||
106 | # CONFIG_BLK_DEV_BSG is not set | 104 | # CONFIG_BLK_DEV_BSG is not set |
107 | # CONFIG_BLK_DEV_INTEGRITY is not set | 105 | # CONFIG_BLK_DEV_INTEGRITY is not set |
108 | 106 | ||
@@ -119,6 +117,10 @@ CONFIG_IOSCHED_NOOP=y | |||
119 | CONFIG_DEFAULT_NOOP=y | 117 | CONFIG_DEFAULT_NOOP=y |
120 | CONFIG_DEFAULT_IOSCHED="noop" | 118 | CONFIG_DEFAULT_IOSCHED="noop" |
121 | CONFIG_CLASSIC_RCU=y | 119 | CONFIG_CLASSIC_RCU=y |
120 | # CONFIG_TREE_RCU is not set | ||
121 | # CONFIG_PREEMPT_RCU is not set | ||
122 | # CONFIG_TREE_RCU_TRACE is not set | ||
123 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
122 | # CONFIG_FREEZER is not set | 124 | # CONFIG_FREEZER is not set |
123 | 125 | ||
124 | # | 126 | # |
@@ -126,6 +128,7 @@ CONFIG_CLASSIC_RCU=y | |||
126 | # | 128 | # |
127 | CONFIG_CPU_SH3=y | 129 | CONFIG_CPU_SH3=y |
128 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
129 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 132 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
130 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 133 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 134 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -189,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
189 | CONFIG_SPARSEMEM_STATIC=y | 192 | CONFIG_SPARSEMEM_STATIC=y |
190 | CONFIG_PAGEFLAGS_EXTENDED=y | 193 | CONFIG_PAGEFLAGS_EXTENDED=y |
191 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 194 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
192 | # CONFIG_RESOURCES_64BIT is not set | ||
193 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 195 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
194 | CONFIG_ZONE_DMA_FLAG=0 | 196 | CONFIG_ZONE_DMA_FLAG=0 |
195 | CONFIG_NR_QUICK=2 | 197 | CONFIG_NR_QUICK=2 |
@@ -280,10 +282,6 @@ CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda2" | |||
280 | # | 282 | # |
281 | # Bus options | 283 | # Bus options |
282 | # | 284 | # |
283 | CONFIG_CF_ENABLER=y | ||
284 | # CONFIG_CF_AREA5 is not set | ||
285 | CONFIG_CF_AREA6=y | ||
286 | CONFIG_CF_BASE_ADDR=0xb8000000 | ||
287 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 285 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
288 | # CONFIG_PCCARD is not set | 286 | # CONFIG_PCCARD is not set |
289 | 287 | ||
@@ -294,11 +292,18 @@ CONFIG_BINFMT_ELF=y | |||
294 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 292 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
295 | # CONFIG_HAVE_AOUT is not set | 293 | # CONFIG_HAVE_AOUT is not set |
296 | # CONFIG_BINFMT_MISC is not set | 294 | # CONFIG_BINFMT_MISC is not set |
295 | |||
296 | # | ||
297 | # Power management options (EXPERIMENTAL) | ||
298 | # | ||
299 | # CONFIG_PM is not set | ||
300 | # CONFIG_CPU_IDLE is not set | ||
297 | CONFIG_NET=y | 301 | CONFIG_NET=y |
298 | 302 | ||
299 | # | 303 | # |
300 | # Networking options | 304 | # Networking options |
301 | # | 305 | # |
306 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
302 | CONFIG_PACKET=y | 307 | CONFIG_PACKET=y |
303 | CONFIG_PACKET_MMAP=y | 308 | CONFIG_PACKET_MMAP=y |
304 | CONFIG_UNIX=y | 309 | CONFIG_UNIX=y |
@@ -379,6 +384,7 @@ CONFIG_NET_SCH_TBF=y | |||
379 | CONFIG_NET_SCH_GRED=y | 384 | CONFIG_NET_SCH_GRED=y |
380 | CONFIG_NET_SCH_DSMARK=y | 385 | CONFIG_NET_SCH_DSMARK=y |
381 | CONFIG_NET_SCH_NETEM=y | 386 | CONFIG_NET_SCH_NETEM=y |
387 | # CONFIG_NET_SCH_DRR is not set | ||
382 | 388 | ||
383 | # | 389 | # |
384 | # Classification | 390 | # Classification |
@@ -397,6 +403,7 @@ CONFIG_NET_CLS_FW=y | |||
397 | # CONFIG_NET_CLS_ACT is not set | 403 | # CONFIG_NET_CLS_ACT is not set |
398 | CONFIG_NET_CLS_IND=y | 404 | CONFIG_NET_CLS_IND=y |
399 | CONFIG_NET_SCH_FIFO=y | 405 | CONFIG_NET_SCH_FIFO=y |
406 | # CONFIG_DCB is not set | ||
400 | 407 | ||
401 | # | 408 | # |
402 | # Network testing | 409 | # Network testing |
@@ -413,8 +420,8 @@ CONFIG_WIRELESS=y | |||
413 | # CONFIG_CFG80211 is not set | 420 | # CONFIG_CFG80211 is not set |
414 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 421 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
415 | # CONFIG_WIRELESS_EXT is not set | 422 | # CONFIG_WIRELESS_EXT is not set |
423 | # CONFIG_LIB80211 is not set | ||
416 | # CONFIG_MAC80211 is not set | 424 | # CONFIG_MAC80211 is not set |
417 | # CONFIG_IEEE80211 is not set | ||
418 | # CONFIG_RFKILL is not set | 425 | # CONFIG_RFKILL is not set |
419 | # CONFIG_NET_9P is not set | 426 | # CONFIG_NET_9P is not set |
420 | 427 | ||
@@ -522,6 +529,7 @@ CONFIG_BLK_DEV=y | |||
522 | CONFIG_MISC_DEVICES=y | 529 | CONFIG_MISC_DEVICES=y |
523 | # CONFIG_EEPROM_93CX6 is not set | 530 | # CONFIG_EEPROM_93CX6 is not set |
524 | # CONFIG_ENCLOSURE_SERVICES is not set | 531 | # CONFIG_ENCLOSURE_SERVICES is not set |
532 | # CONFIG_C2PORT is not set | ||
525 | CONFIG_HAVE_IDE=y | 533 | CONFIG_HAVE_IDE=y |
526 | # CONFIG_IDE is not set | 534 | # CONFIG_IDE is not set |
527 | 535 | ||
@@ -673,6 +681,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
673 | CONFIG_SERIAL_CORE=y | 681 | CONFIG_SERIAL_CORE=y |
674 | CONFIG_SERIAL_CORE_CONSOLE=y | 682 | CONFIG_SERIAL_CORE_CONSOLE=y |
675 | CONFIG_UNIX98_PTYS=y | 683 | CONFIG_UNIX98_PTYS=y |
684 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
676 | # CONFIG_LEGACY_PTYS is not set | 685 | # CONFIG_LEGACY_PTYS is not set |
677 | # CONFIG_IPMI_HANDLER is not set | 686 | # CONFIG_IPMI_HANDLER is not set |
678 | # CONFIG_HW_RANDOM is not set | 687 | # CONFIG_HW_RANDOM is not set |
@@ -686,11 +695,11 @@ CONFIG_UNIX98_PTYS=y | |||
686 | # CONFIG_HWMON is not set | 695 | # CONFIG_HWMON is not set |
687 | CONFIG_THERMAL=y | 696 | CONFIG_THERMAL=y |
688 | # CONFIG_WATCHDOG is not set | 697 | # CONFIG_WATCHDOG is not set |
698 | CONFIG_SSB_POSSIBLE=y | ||
689 | 699 | ||
690 | # | 700 | # |
691 | # Sonics Silicon Backplane | 701 | # Sonics Silicon Backplane |
692 | # | 702 | # |
693 | CONFIG_SSB_POSSIBLE=y | ||
694 | # CONFIG_SSB is not set | 703 | # CONFIG_SSB is not set |
695 | 704 | ||
696 | # | 705 | # |
@@ -700,7 +709,7 @@ CONFIG_SSB_POSSIBLE=y | |||
700 | # CONFIG_MFD_SM501 is not set | 709 | # CONFIG_MFD_SM501 is not set |
701 | # CONFIG_HTC_PASIC3 is not set | 710 | # CONFIG_HTC_PASIC3 is not set |
702 | # CONFIG_MFD_TMIO is not set | 711 | # CONFIG_MFD_TMIO is not set |
703 | # CONFIG_MFD_WM8400 is not set | 712 | # CONFIG_REGULATOR is not set |
704 | 713 | ||
705 | # | 714 | # |
706 | # Multimedia devices | 715 | # Multimedia devices |
@@ -750,11 +759,9 @@ CONFIG_HID_COMPAT=y | |||
750 | CONFIG_HID_A4TECH=y | 759 | CONFIG_HID_A4TECH=y |
751 | CONFIG_HID_APPLE=y | 760 | CONFIG_HID_APPLE=y |
752 | CONFIG_HID_BELKIN=y | 761 | CONFIG_HID_BELKIN=y |
753 | CONFIG_HID_BRIGHT=y | ||
754 | CONFIG_HID_CHERRY=y | 762 | CONFIG_HID_CHERRY=y |
755 | CONFIG_HID_CHICONY=y | 763 | CONFIG_HID_CHICONY=y |
756 | CONFIG_HID_CYPRESS=y | 764 | CONFIG_HID_CYPRESS=y |
757 | CONFIG_HID_DELL=y | ||
758 | CONFIG_HID_EZKEY=y | 765 | CONFIG_HID_EZKEY=y |
759 | CONFIG_HID_GYRATION=y | 766 | CONFIG_HID_GYRATION=y |
760 | CONFIG_HID_LOGITECH=y | 767 | CONFIG_HID_LOGITECH=y |
@@ -762,12 +769,15 @@ CONFIG_HID_LOGITECH=y | |||
762 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 769 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
763 | CONFIG_HID_MICROSOFT=y | 770 | CONFIG_HID_MICROSOFT=y |
764 | CONFIG_HID_MONTEREY=y | 771 | CONFIG_HID_MONTEREY=y |
772 | # CONFIG_HID_NTRIG is not set | ||
765 | CONFIG_HID_PANTHERLORD=y | 773 | CONFIG_HID_PANTHERLORD=y |
766 | # CONFIG_PANTHERLORD_FF is not set | 774 | # CONFIG_PANTHERLORD_FF is not set |
767 | CONFIG_HID_PETALYNX=y | 775 | CONFIG_HID_PETALYNX=y |
768 | CONFIG_HID_SAMSUNG=y | 776 | CONFIG_HID_SAMSUNG=y |
769 | CONFIG_HID_SONY=y | 777 | CONFIG_HID_SONY=y |
770 | CONFIG_HID_SUNPLUS=y | 778 | CONFIG_HID_SUNPLUS=y |
779 | # CONFIG_GREENASIA_FF is not set | ||
780 | # CONFIG_HID_TOPSEED is not set | ||
771 | CONFIG_THRUSTMASTER_FF=m | 781 | CONFIG_THRUSTMASTER_FF=m |
772 | CONFIG_ZEROPLUS_FF=m | 782 | CONFIG_ZEROPLUS_FF=m |
773 | CONFIG_USB_SUPPORT=y | 783 | CONFIG_USB_SUPPORT=y |
@@ -788,19 +798,21 @@ CONFIG_USB_DEVICE_CLASS=y | |||
788 | # CONFIG_USB_OTG_WHITELIST is not set | 798 | # CONFIG_USB_OTG_WHITELIST is not set |
789 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 799 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
790 | CONFIG_USB_MON=y | 800 | CONFIG_USB_MON=y |
801 | # CONFIG_USB_WUSB is not set | ||
802 | # CONFIG_USB_WUSB_CBAF is not set | ||
791 | 803 | ||
792 | # | 804 | # |
793 | # USB Host Controller Drivers | 805 | # USB Host Controller Drivers |
794 | # | 806 | # |
795 | # CONFIG_USB_C67X00_HCD is not set | 807 | # CONFIG_USB_C67X00_HCD is not set |
796 | # CONFIG_USB_ISP116X_HCD is not set | 808 | # CONFIG_USB_ISP116X_HCD is not set |
797 | # CONFIG_USB_ISP1760_HCD is not set | ||
798 | CONFIG_USB_OHCI_HCD=y | 809 | CONFIG_USB_OHCI_HCD=y |
799 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 810 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
800 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | 811 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set |
801 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 812 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
802 | # CONFIG_USB_SL811_HCD is not set | 813 | # CONFIG_USB_SL811_HCD is not set |
803 | # CONFIG_USB_R8A66597_HCD is not set | 814 | # CONFIG_USB_R8A66597_HCD is not set |
815 | # CONFIG_USB_HWA_HCD is not set | ||
804 | 816 | ||
805 | # | 817 | # |
806 | # USB Device Class drivers | 818 | # USB Device Class drivers |
@@ -811,11 +823,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
811 | # CONFIG_USB_TMC is not set | 823 | # CONFIG_USB_TMC is not set |
812 | 824 | ||
813 | # | 825 | # |
814 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 826 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
815 | # | 827 | # |
816 | 828 | ||
817 | # | 829 | # |
818 | # may also be needed; see USB_STORAGE Help for more information | 830 | # see USB_STORAGE Help for more information |
819 | # | 831 | # |
820 | CONFIG_USB_STORAGE=y | 832 | CONFIG_USB_STORAGE=y |
821 | # CONFIG_USB_STORAGE_DEBUG is not set | 833 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -883,6 +895,7 @@ CONFIG_LEDS_CLASS=y | |||
883 | CONFIG_LEDS_TRIGGERS=y | 895 | CONFIG_LEDS_TRIGGERS=y |
884 | # CONFIG_LEDS_TRIGGER_TIMER is not set | 896 | # CONFIG_LEDS_TRIGGER_TIMER is not set |
885 | # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set | 897 | # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set |
898 | # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set | ||
886 | # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set | 899 | # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set |
887 | # CONFIG_ACCESSIBILITY is not set | 900 | # CONFIG_ACCESSIBILITY is not set |
888 | # CONFIG_RTC_CLASS is not set | 901 | # CONFIG_RTC_CLASS is not set |
@@ -947,10 +960,7 @@ CONFIG_TMPFS=y | |||
947 | # CONFIG_HUGETLBFS is not set | 960 | # CONFIG_HUGETLBFS is not set |
948 | # CONFIG_HUGETLB_PAGE is not set | 961 | # CONFIG_HUGETLB_PAGE is not set |
949 | # CONFIG_CONFIGFS_FS is not set | 962 | # CONFIG_CONFIGFS_FS is not set |
950 | 963 | CONFIG_MISC_FILESYSTEMS=y | |
951 | # | ||
952 | # Miscellaneous filesystems | ||
953 | # | ||
954 | # CONFIG_ADFS_FS is not set | 964 | # CONFIG_ADFS_FS is not set |
955 | # CONFIG_AFFS_FS is not set | 965 | # CONFIG_AFFS_FS is not set |
956 | # CONFIG_HFS_FS is not set | 966 | # CONFIG_HFS_FS is not set |
@@ -1063,6 +1073,7 @@ CONFIG_DEBUG_INFO=y | |||
1063 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1073 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1064 | # CONFIG_DEBUG_LIST is not set | 1074 | # CONFIG_DEBUG_LIST is not set |
1065 | # CONFIG_DEBUG_SG is not set | 1075 | # CONFIG_DEBUG_SG is not set |
1076 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
1066 | CONFIG_FRAME_POINTER=y | 1077 | CONFIG_FRAME_POINTER=y |
1067 | # CONFIG_RCU_TORTURE_TEST is not set | 1078 | # CONFIG_RCU_TORTURE_TEST is not set |
1068 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1079 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -1071,16 +1082,24 @@ CONFIG_FRAME_POINTER=y | |||
1071 | # CONFIG_FAULT_INJECTION is not set | 1082 | # CONFIG_FAULT_INJECTION is not set |
1072 | # CONFIG_LATENCYTOP is not set | 1083 | # CONFIG_LATENCYTOP is not set |
1073 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | 1084 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set |
1074 | CONFIG_NOP_TRACER=y | 1085 | CONFIG_HAVE_FUNCTION_TRACER=y |
1075 | CONFIG_HAVE_FTRACE=y | 1086 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1076 | # CONFIG_FTRACE is not set | 1087 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
1088 | |||
1089 | # | ||
1090 | # Tracers | ||
1091 | # | ||
1092 | # CONFIG_FUNCTION_TRACER is not set | ||
1077 | # CONFIG_IRQSOFF_TRACER is not set | 1093 | # CONFIG_IRQSOFF_TRACER is not set |
1078 | # CONFIG_SCHED_TRACER is not set | 1094 | # CONFIG_SCHED_TRACER is not set |
1079 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1095 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
1080 | # CONFIG_BOOT_TRACER is not set | 1096 | # CONFIG_BOOT_TRACER is not set |
1097 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1081 | # CONFIG_STACK_TRACER is not set | 1098 | # CONFIG_STACK_TRACER is not set |
1082 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1099 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1083 | # CONFIG_SAMPLES is not set | 1100 | # CONFIG_SAMPLES is not set |
1101 | CONFIG_HAVE_ARCH_KGDB=y | ||
1102 | # CONFIG_KGDB is not set | ||
1084 | # CONFIG_SH_STANDARD_BIOS is not set | 1103 | # CONFIG_SH_STANDARD_BIOS is not set |
1085 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1104 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1086 | # CONFIG_DEBUG_BOOTMEM is not set | 1105 | # CONFIG_DEBUG_BOOTMEM is not set |
@@ -1088,7 +1107,9 @@ CONFIG_HAVE_FTRACE=y | |||
1088 | # CONFIG_DEBUG_STACK_USAGE is not set | 1107 | # CONFIG_DEBUG_STACK_USAGE is not set |
1089 | # CONFIG_4KSTACKS is not set | 1108 | # CONFIG_4KSTACKS is not set |
1090 | # CONFIG_IRQSTACKS is not set | 1109 | # CONFIG_IRQSTACKS is not set |
1091 | # CONFIG_SH_KGDB is not set | 1110 | # CONFIG_DUMP_CODE is not set |
1111 | # CONFIG_SH_NO_BSS_INIT is not set | ||
1112 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
1092 | 1113 | ||
1093 | # | 1114 | # |
1094 | # Security options | 1115 | # Security options |
@@ -1104,11 +1125,16 @@ CONFIG_CRYPTO=y | |||
1104 | # | 1125 | # |
1105 | # CONFIG_CRYPTO_FIPS is not set | 1126 | # CONFIG_CRYPTO_FIPS is not set |
1106 | CONFIG_CRYPTO_ALGAPI=y | 1127 | CONFIG_CRYPTO_ALGAPI=y |
1128 | CONFIG_CRYPTO_ALGAPI2=y | ||
1107 | CONFIG_CRYPTO_AEAD=y | 1129 | CONFIG_CRYPTO_AEAD=y |
1130 | CONFIG_CRYPTO_AEAD2=y | ||
1108 | CONFIG_CRYPTO_BLKCIPHER=y | 1131 | CONFIG_CRYPTO_BLKCIPHER=y |
1132 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1109 | CONFIG_CRYPTO_HASH=y | 1133 | CONFIG_CRYPTO_HASH=y |
1110 | CONFIG_CRYPTO_RNG=y | 1134 | CONFIG_CRYPTO_HASH2=y |
1135 | CONFIG_CRYPTO_RNG2=y | ||
1111 | CONFIG_CRYPTO_MANAGER=y | 1136 | CONFIG_CRYPTO_MANAGER=y |
1137 | CONFIG_CRYPTO_MANAGER2=y | ||
1112 | # CONFIG_CRYPTO_GF128MUL is not set | 1138 | # CONFIG_CRYPTO_GF128MUL is not set |
1113 | # CONFIG_CRYPTO_NULL is not set | 1139 | # CONFIG_CRYPTO_NULL is not set |
1114 | # CONFIG_CRYPTO_CRYPTD is not set | 1140 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1191,6 +1217,7 @@ CONFIG_CRYPTO_HW=y | |||
1191 | # Library routines | 1217 | # Library routines |
1192 | # | 1218 | # |
1193 | CONFIG_BITREVERSE=y | 1219 | CONFIG_BITREVERSE=y |
1220 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1194 | CONFIG_CRC_CCITT=y | 1221 | CONFIG_CRC_CCITT=y |
1195 | # CONFIG_CRC16 is not set | 1222 | # CONFIG_CRC16 is not set |
1196 | # CONFIG_CRC_T10DIF is not set | 1223 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/se7722_defconfig b/arch/sh/configs/se7722_defconfig index e6df51f098f0..abb189a1d314 100644 --- a/arch/sh/configs/se7722_defconfig +++ b/arch/sh/configs/se7722_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:15:10 2008 | 4 | # Fri Jan 9 17:46:59 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_NUMA=y | 21 | CONFIG_SYS_SUPPORTS_NUMA=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -75,13 +77,11 @@ CONFIG_EVENTFD=y | |||
75 | CONFIG_SHMEM=y | 77 | CONFIG_SHMEM=y |
76 | CONFIG_AIO=y | 78 | CONFIG_AIO=y |
77 | CONFIG_VM_EVENT_COUNTERS=y | 79 | CONFIG_VM_EVENT_COUNTERS=y |
78 | CONFIG_PCI_QUIRKS=y | ||
79 | CONFIG_SLUB_DEBUG=y | 80 | CONFIG_SLUB_DEBUG=y |
80 | # CONFIG_SLAB is not set | 81 | # CONFIG_SLAB is not set |
81 | CONFIG_SLUB=y | 82 | CONFIG_SLUB=y |
82 | # CONFIG_SLOB is not set | 83 | # CONFIG_SLOB is not set |
83 | CONFIG_PROFILING=y | 84 | CONFIG_PROFILING=y |
84 | # CONFIG_MARKERS is not set | ||
85 | # CONFIG_OPROFILE is not set | 85 | # CONFIG_OPROFILE is not set |
86 | CONFIG_HAVE_OPROFILE=y | 86 | CONFIG_HAVE_OPROFILE=y |
87 | # CONFIG_KPROBES is not set | 87 | # CONFIG_KPROBES is not set |
@@ -93,7 +93,6 @@ CONFIG_HAVE_CLK=y | |||
93 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 93 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
94 | CONFIG_SLABINFO=y | 94 | CONFIG_SLABINFO=y |
95 | CONFIG_RT_MUTEXES=y | 95 | CONFIG_RT_MUTEXES=y |
96 | # CONFIG_TINY_SHMEM is not set | ||
97 | CONFIG_BASE_SMALL=0 | 96 | CONFIG_BASE_SMALL=0 |
98 | CONFIG_MODULES=y | 97 | CONFIG_MODULES=y |
99 | # CONFIG_MODULE_FORCE_LOAD is not set | 98 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -101,11 +100,9 @@ CONFIG_MODULE_UNLOAD=y | |||
101 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 100 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
102 | # CONFIG_MODVERSIONS is not set | 101 | # CONFIG_MODVERSIONS is not set |
103 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 102 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
104 | CONFIG_KMOD=y | ||
105 | CONFIG_BLOCK=y | 103 | CONFIG_BLOCK=y |
106 | # CONFIG_LBD is not set | 104 | # CONFIG_LBD is not set |
107 | # CONFIG_BLK_DEV_IO_TRACE is not set | 105 | # CONFIG_BLK_DEV_IO_TRACE is not set |
108 | # CONFIG_LSF is not set | ||
109 | # CONFIG_BLK_DEV_BSG is not set | 106 | # CONFIG_BLK_DEV_BSG is not set |
110 | # CONFIG_BLK_DEV_INTEGRITY is not set | 107 | # CONFIG_BLK_DEV_INTEGRITY is not set |
111 | 108 | ||
@@ -122,6 +119,10 @@ CONFIG_IOSCHED_NOOP=y | |||
122 | CONFIG_DEFAULT_NOOP=y | 119 | CONFIG_DEFAULT_NOOP=y |
123 | CONFIG_DEFAULT_IOSCHED="noop" | 120 | CONFIG_DEFAULT_IOSCHED="noop" |
124 | CONFIG_CLASSIC_RCU=y | 121 | CONFIG_CLASSIC_RCU=y |
122 | # CONFIG_TREE_RCU is not set | ||
123 | # CONFIG_PREEMPT_RCU is not set | ||
124 | # CONFIG_TREE_RCU_TRACE is not set | ||
125 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
125 | # CONFIG_FREEZER is not set | 126 | # CONFIG_FREEZER is not set |
126 | 127 | ||
127 | # | 128 | # |
@@ -132,6 +133,7 @@ CONFIG_CPU_SH4A=y | |||
132 | CONFIG_CPU_SH4AL_DSP=y | 133 | CONFIG_CPU_SH4AL_DSP=y |
133 | CONFIG_CPU_SHX2=y | 134 | CONFIG_CPU_SHX2=y |
134 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 135 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
136 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
135 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 137 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
136 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 138 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
137 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 139 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -207,7 +209,6 @@ CONFIG_SPARSEMEM_STATIC=y | |||
207 | # CONFIG_MEMORY_HOTPLUG is not set | 209 | # CONFIG_MEMORY_HOTPLUG is not set |
208 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 210 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
209 | CONFIG_MIGRATION=y | 211 | CONFIG_MIGRATION=y |
210 | # CONFIG_RESOURCES_64BIT is not set | ||
211 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 212 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
212 | CONFIG_ZONE_DMA_FLAG=0 | 213 | CONFIG_ZONE_DMA_FLAG=0 |
213 | CONFIG_NR_QUICK=2 | 214 | CONFIG_NR_QUICK=2 |
@@ -287,7 +288,6 @@ CONFIG_KEXEC=y | |||
287 | # CONFIG_PREEMPT_NONE is not set | 288 | # CONFIG_PREEMPT_NONE is not set |
288 | # CONFIG_PREEMPT_VOLUNTARY is not set | 289 | # CONFIG_PREEMPT_VOLUNTARY is not set |
289 | CONFIG_PREEMPT=y | 290 | CONFIG_PREEMPT=y |
290 | # CONFIG_PREEMPT_RCU is not set | ||
291 | CONFIG_GUSA=y | 291 | CONFIG_GUSA=y |
292 | 292 | ||
293 | # | 293 | # |
@@ -300,10 +300,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000 | |||
300 | # | 300 | # |
301 | # Bus options | 301 | # Bus options |
302 | # | 302 | # |
303 | CONFIG_CF_ENABLER=y | ||
304 | # CONFIG_CF_AREA5 is not set | ||
305 | CONFIG_CF_AREA6=y | ||
306 | CONFIG_CF_BASE_ADDR=0xb8000000 | ||
307 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 303 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
308 | # CONFIG_PCCARD is not set | 304 | # CONFIG_PCCARD is not set |
309 | 305 | ||
@@ -314,11 +310,18 @@ CONFIG_BINFMT_ELF=y | |||
314 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 310 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
315 | # CONFIG_HAVE_AOUT is not set | 311 | # CONFIG_HAVE_AOUT is not set |
316 | # CONFIG_BINFMT_MISC is not set | 312 | # CONFIG_BINFMT_MISC is not set |
313 | |||
314 | # | ||
315 | # Power management options (EXPERIMENTAL) | ||
316 | # | ||
317 | # CONFIG_PM is not set | ||
318 | # CONFIG_CPU_IDLE is not set | ||
317 | CONFIG_NET=y | 319 | CONFIG_NET=y |
318 | 320 | ||
319 | # | 321 | # |
320 | # Networking options | 322 | # Networking options |
321 | # | 323 | # |
324 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
322 | CONFIG_PACKET=y | 325 | CONFIG_PACKET=y |
323 | CONFIG_PACKET_MMAP=y | 326 | CONFIG_PACKET_MMAP=y |
324 | CONFIG_UNIX=y | 327 | CONFIG_UNIX=y |
@@ -371,6 +374,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
371 | # CONFIG_ECONET is not set | 374 | # CONFIG_ECONET is not set |
372 | # CONFIG_WAN_ROUTER is not set | 375 | # CONFIG_WAN_ROUTER is not set |
373 | # CONFIG_NET_SCHED is not set | 376 | # CONFIG_NET_SCHED is not set |
377 | # CONFIG_DCB is not set | ||
374 | 378 | ||
375 | # | 379 | # |
376 | # Network testing | 380 | # Network testing |
@@ -386,8 +390,8 @@ CONFIG_WIRELESS=y | |||
386 | # CONFIG_CFG80211 is not set | 390 | # CONFIG_CFG80211 is not set |
387 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 391 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
388 | # CONFIG_WIRELESS_EXT is not set | 392 | # CONFIG_WIRELESS_EXT is not set |
393 | # CONFIG_LIB80211 is not set | ||
389 | # CONFIG_MAC80211 is not set | 394 | # CONFIG_MAC80211 is not set |
390 | # CONFIG_IEEE80211 is not set | ||
391 | # CONFIG_RFKILL is not set | 395 | # CONFIG_RFKILL is not set |
392 | # CONFIG_NET_9P is not set | 396 | # CONFIG_NET_9P is not set |
393 | 397 | ||
@@ -420,6 +424,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
420 | CONFIG_MISC_DEVICES=y | 424 | CONFIG_MISC_DEVICES=y |
421 | # CONFIG_EEPROM_93CX6 is not set | 425 | # CONFIG_EEPROM_93CX6 is not set |
422 | # CONFIG_ENCLOSURE_SERVICES is not set | 426 | # CONFIG_ENCLOSURE_SERVICES is not set |
427 | # CONFIG_C2PORT is not set | ||
423 | CONFIG_HAVE_IDE=y | 428 | CONFIG_HAVE_IDE=y |
424 | # CONFIG_IDE is not set | 429 | # CONFIG_IDE is not set |
425 | 430 | ||
@@ -462,6 +467,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
462 | # CONFIG_SCSI_SRP_ATTRS is not set | 467 | # CONFIG_SCSI_SRP_ATTRS is not set |
463 | CONFIG_SCSI_LOWLEVEL=y | 468 | CONFIG_SCSI_LOWLEVEL=y |
464 | # CONFIG_ISCSI_TCP is not set | 469 | # CONFIG_ISCSI_TCP is not set |
470 | # CONFIG_LIBFC is not set | ||
465 | # CONFIG_SCSI_DEBUG is not set | 471 | # CONFIG_SCSI_DEBUG is not set |
466 | # CONFIG_SCSI_DH is not set | 472 | # CONFIG_SCSI_DH is not set |
467 | CONFIG_ATA=y | 473 | CONFIG_ATA=y |
@@ -485,6 +491,7 @@ CONFIG_MII=y | |||
485 | # CONFIG_STNIC is not set | 491 | # CONFIG_STNIC is not set |
486 | CONFIG_SMC91X=y | 492 | CONFIG_SMC91X=y |
487 | # CONFIG_SMC911X is not set | 493 | # CONFIG_SMC911X is not set |
494 | # CONFIG_SMSC911X is not set | ||
488 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 495 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
489 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 496 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
490 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 497 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -577,6 +584,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
577 | CONFIG_SERIAL_CORE=y | 584 | CONFIG_SERIAL_CORE=y |
578 | CONFIG_SERIAL_CORE_CONSOLE=y | 585 | CONFIG_SERIAL_CORE_CONSOLE=y |
579 | CONFIG_UNIX98_PTYS=y | 586 | CONFIG_UNIX98_PTYS=y |
587 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
580 | CONFIG_LEGACY_PTYS=y | 588 | CONFIG_LEGACY_PTYS=y |
581 | CONFIG_LEGACY_PTY_COUNT=256 | 589 | CONFIG_LEGACY_PTY_COUNT=256 |
582 | # CONFIG_IPMI_HANDLER is not set | 590 | # CONFIG_IPMI_HANDLER is not set |
@@ -604,11 +612,11 @@ CONFIG_HWMON=y | |||
604 | # CONFIG_THERMAL is not set | 612 | # CONFIG_THERMAL is not set |
605 | # CONFIG_THERMAL_HWMON is not set | 613 | # CONFIG_THERMAL_HWMON is not set |
606 | # CONFIG_WATCHDOG is not set | 614 | # CONFIG_WATCHDOG is not set |
615 | CONFIG_SSB_POSSIBLE=y | ||
607 | 616 | ||
608 | # | 617 | # |
609 | # Sonics Silicon Backplane | 618 | # Sonics Silicon Backplane |
610 | # | 619 | # |
611 | CONFIG_SSB_POSSIBLE=y | ||
612 | # CONFIG_SSB is not set | 620 | # CONFIG_SSB is not set |
613 | 621 | ||
614 | # | 622 | # |
@@ -618,7 +626,7 @@ CONFIG_SSB_POSSIBLE=y | |||
618 | # CONFIG_MFD_SM501 is not set | 626 | # CONFIG_MFD_SM501 is not set |
619 | # CONFIG_HTC_PASIC3 is not set | 627 | # CONFIG_HTC_PASIC3 is not set |
620 | # CONFIG_MFD_TMIO is not set | 628 | # CONFIG_MFD_TMIO is not set |
621 | # CONFIG_MFD_WM8400 is not set | 629 | # CONFIG_REGULATOR is not set |
622 | 630 | ||
623 | # | 631 | # |
624 | # Multimedia devices | 632 | # Multimedia devices |
@@ -672,7 +680,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
672 | # | 680 | # |
673 | 681 | ||
674 | # | 682 | # |
675 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 683 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
676 | # | 684 | # |
677 | # CONFIG_USB_GADGET is not set | 685 | # CONFIG_USB_GADGET is not set |
678 | # CONFIG_MMC is not set | 686 | # CONFIG_MMC is not set |
@@ -774,10 +782,7 @@ CONFIG_TMPFS=y | |||
774 | CONFIG_HUGETLBFS=y | 782 | CONFIG_HUGETLBFS=y |
775 | CONFIG_HUGETLB_PAGE=y | 783 | CONFIG_HUGETLB_PAGE=y |
776 | # CONFIG_CONFIGFS_FS is not set | 784 | # CONFIG_CONFIGFS_FS is not set |
777 | 785 | CONFIG_MISC_FILESYSTEMS=y | |
778 | # | ||
779 | # Miscellaneous filesystems | ||
780 | # | ||
781 | # CONFIG_ADFS_FS is not set | 786 | # CONFIG_ADFS_FS is not set |
782 | # CONFIG_AFFS_FS is not set | 787 | # CONFIG_AFFS_FS is not set |
783 | # CONFIG_HFS_FS is not set | 788 | # CONFIG_HFS_FS is not set |
@@ -831,14 +836,20 @@ CONFIG_DEBUG_FS=y | |||
831 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 836 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
832 | # CONFIG_LATENCYTOP is not set | 837 | # CONFIG_LATENCYTOP is not set |
833 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | 838 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set |
834 | CONFIG_NOP_TRACER=y | 839 | CONFIG_HAVE_FUNCTION_TRACER=y |
835 | CONFIG_HAVE_FTRACE=y | 840 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
841 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
842 | |||
843 | # | ||
844 | # Tracers | ||
845 | # | ||
836 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 846 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
837 | # CONFIG_SAMPLES is not set | 847 | # CONFIG_SAMPLES is not set |
848 | CONFIG_HAVE_ARCH_KGDB=y | ||
838 | CONFIG_SH_STANDARD_BIOS=y | 849 | CONFIG_SH_STANDARD_BIOS=y |
839 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 850 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
840 | # CONFIG_EARLY_PRINTK is not set | 851 | # CONFIG_EARLY_PRINTK is not set |
841 | # CONFIG_SH_KGDB is not set | 852 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
842 | 853 | ||
843 | # | 854 | # |
844 | # Security options | 855 | # Security options |
@@ -854,6 +865,7 @@ CONFIG_CRYPTO=y | |||
854 | # | 865 | # |
855 | # CONFIG_CRYPTO_FIPS is not set | 866 | # CONFIG_CRYPTO_FIPS is not set |
856 | # CONFIG_CRYPTO_MANAGER is not set | 867 | # CONFIG_CRYPTO_MANAGER is not set |
868 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
857 | # CONFIG_CRYPTO_GF128MUL is not set | 869 | # CONFIG_CRYPTO_GF128MUL is not set |
858 | # CONFIG_CRYPTO_NULL is not set | 870 | # CONFIG_CRYPTO_NULL is not set |
859 | # CONFIG_CRYPTO_CRYPTD is not set | 871 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -936,6 +948,7 @@ CONFIG_CRYPTO_HW=y | |||
936 | # Library routines | 948 | # Library routines |
937 | # | 949 | # |
938 | CONFIG_BITREVERSE=y | 950 | CONFIG_BITREVERSE=y |
951 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
939 | # CONFIG_CRC_CCITT is not set | 952 | # CONFIG_CRC_CCITT is not set |
940 | # CONFIG_CRC16 is not set | 953 | # CONFIG_CRC16 is not set |
941 | # CONFIG_CRC_T10DIF is not set | 954 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/se7750_defconfig b/arch/sh/configs/se7750_defconfig index a577099c3247..ac874f63a625 100644 --- a/arch/sh/configs/se7750_defconfig +++ b/arch/sh/configs/se7750_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:17:29 2008 | 4 | # Fri Jan 9 17:49:22 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -72,12 +74,10 @@ CONFIG_EVENTFD=y | |||
72 | CONFIG_SHMEM=y | 74 | CONFIG_SHMEM=y |
73 | CONFIG_AIO=y | 75 | CONFIG_AIO=y |
74 | CONFIG_VM_EVENT_COUNTERS=y | 76 | CONFIG_VM_EVENT_COUNTERS=y |
75 | CONFIG_PCI_QUIRKS=y | ||
76 | CONFIG_SLAB=y | 77 | CONFIG_SLAB=y |
77 | # CONFIG_SLUB is not set | 78 | # CONFIG_SLUB is not set |
78 | # CONFIG_SLOB is not set | 79 | # CONFIG_SLOB is not set |
79 | # CONFIG_PROFILING is not set | 80 | # CONFIG_PROFILING is not set |
80 | # CONFIG_MARKERS is not set | ||
81 | CONFIG_HAVE_OPROFILE=y | 81 | CONFIG_HAVE_OPROFILE=y |
82 | # CONFIG_KPROBES is not set | 82 | # CONFIG_KPROBES is not set |
83 | CONFIG_HAVE_IOREMAP_PROT=y | 83 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -88,18 +88,15 @@ CONFIG_HAVE_CLK=y | |||
88 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 88 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
89 | CONFIG_SLABINFO=y | 89 | CONFIG_SLABINFO=y |
90 | CONFIG_RT_MUTEXES=y | 90 | CONFIG_RT_MUTEXES=y |
91 | # CONFIG_TINY_SHMEM is not set | ||
92 | CONFIG_BASE_SMALL=0 | 91 | CONFIG_BASE_SMALL=0 |
93 | CONFIG_MODULES=y | 92 | CONFIG_MODULES=y |
94 | # CONFIG_MODULE_FORCE_LOAD is not set | 93 | # CONFIG_MODULE_FORCE_LOAD is not set |
95 | # CONFIG_MODULE_UNLOAD is not set | 94 | # CONFIG_MODULE_UNLOAD is not set |
96 | # CONFIG_MODVERSIONS is not set | 95 | # CONFIG_MODVERSIONS is not set |
97 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 96 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
98 | CONFIG_KMOD=y | ||
99 | CONFIG_BLOCK=y | 97 | CONFIG_BLOCK=y |
100 | # CONFIG_LBD is not set | 98 | # CONFIG_LBD is not set |
101 | # CONFIG_BLK_DEV_IO_TRACE is not set | 99 | # CONFIG_BLK_DEV_IO_TRACE is not set |
102 | # CONFIG_LSF is not set | ||
103 | # CONFIG_BLK_DEV_BSG is not set | 100 | # CONFIG_BLK_DEV_BSG is not set |
104 | # CONFIG_BLK_DEV_INTEGRITY is not set | 101 | # CONFIG_BLK_DEV_INTEGRITY is not set |
105 | 102 | ||
@@ -116,6 +113,10 @@ CONFIG_DEFAULT_AS=y | |||
116 | # CONFIG_DEFAULT_NOOP is not set | 113 | # CONFIG_DEFAULT_NOOP is not set |
117 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 114 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
118 | CONFIG_CLASSIC_RCU=y | 115 | CONFIG_CLASSIC_RCU=y |
116 | # CONFIG_TREE_RCU is not set | ||
117 | # CONFIG_PREEMPT_RCU is not set | ||
118 | # CONFIG_TREE_RCU_TRACE is not set | ||
119 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
119 | # CONFIG_FREEZER is not set | 120 | # CONFIG_FREEZER is not set |
120 | 121 | ||
121 | # | 122 | # |
@@ -123,6 +124,7 @@ CONFIG_CLASSIC_RCU=y | |||
123 | # | 124 | # |
124 | CONFIG_CPU_SH4=y | 125 | CONFIG_CPU_SH4=y |
125 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 126 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
127 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
126 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 128 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
127 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 129 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
128 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -186,7 +188,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
186 | CONFIG_SPARSEMEM_STATIC=y | 188 | CONFIG_SPARSEMEM_STATIC=y |
187 | CONFIG_PAGEFLAGS_EXTENDED=y | 189 | CONFIG_PAGEFLAGS_EXTENDED=y |
188 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 190 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
189 | # CONFIG_RESOURCES_64BIT is not set | ||
190 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 191 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
191 | CONFIG_ZONE_DMA_FLAG=0 | 192 | CONFIG_ZONE_DMA_FLAG=0 |
192 | CONFIG_NR_QUICK=2 | 193 | CONFIG_NR_QUICK=2 |
@@ -278,10 +279,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000 | |||
278 | # | 279 | # |
279 | # Bus options | 280 | # Bus options |
280 | # | 281 | # |
281 | CONFIG_CF_ENABLER=y | ||
282 | # CONFIG_CF_AREA5 is not set | ||
283 | CONFIG_CF_AREA6=y | ||
284 | CONFIG_CF_BASE_ADDR=0xb8000000 | ||
285 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 282 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
286 | 283 | ||
287 | # | 284 | # |
@@ -291,11 +288,18 @@ CONFIG_BINFMT_ELF=y | |||
291 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 288 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
292 | # CONFIG_HAVE_AOUT is not set | 289 | # CONFIG_HAVE_AOUT is not set |
293 | # CONFIG_BINFMT_MISC is not set | 290 | # CONFIG_BINFMT_MISC is not set |
291 | |||
292 | # | ||
293 | # Power management options (EXPERIMENTAL) | ||
294 | # | ||
295 | # CONFIG_PM is not set | ||
296 | # CONFIG_CPU_IDLE is not set | ||
294 | CONFIG_NET=y | 297 | CONFIG_NET=y |
295 | 298 | ||
296 | # | 299 | # |
297 | # Networking options | 300 | # Networking options |
298 | # | 301 | # |
302 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
299 | CONFIG_PACKET=y | 303 | CONFIG_PACKET=y |
300 | # CONFIG_PACKET_MMAP is not set | 304 | # CONFIG_PACKET_MMAP is not set |
301 | CONFIG_UNIX=y | 305 | CONFIG_UNIX=y |
@@ -352,6 +356,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
352 | # CONFIG_ECONET is not set | 356 | # CONFIG_ECONET is not set |
353 | # CONFIG_WAN_ROUTER is not set | 357 | # CONFIG_WAN_ROUTER is not set |
354 | # CONFIG_NET_SCHED is not set | 358 | # CONFIG_NET_SCHED is not set |
359 | # CONFIG_DCB is not set | ||
355 | 360 | ||
356 | # | 361 | # |
357 | # Network testing | 362 | # Network testing |
@@ -367,8 +372,8 @@ CONFIG_WIRELESS=y | |||
367 | # CONFIG_CFG80211 is not set | 372 | # CONFIG_CFG80211 is not set |
368 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 373 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
369 | # CONFIG_WIRELESS_EXT is not set | 374 | # CONFIG_WIRELESS_EXT is not set |
375 | # CONFIG_LIB80211 is not set | ||
370 | # CONFIG_MAC80211 is not set | 376 | # CONFIG_MAC80211 is not set |
371 | # CONFIG_IEEE80211 is not set | ||
372 | # CONFIG_RFKILL is not set | 377 | # CONFIG_RFKILL is not set |
373 | # CONFIG_NET_9P is not set | 378 | # CONFIG_NET_9P is not set |
374 | 379 | ||
@@ -469,6 +474,7 @@ CONFIG_BLK_DEV=y | |||
469 | CONFIG_MISC_DEVICES=y | 474 | CONFIG_MISC_DEVICES=y |
470 | # CONFIG_EEPROM_93CX6 is not set | 475 | # CONFIG_EEPROM_93CX6 is not set |
471 | # CONFIG_ENCLOSURE_SERVICES is not set | 476 | # CONFIG_ENCLOSURE_SERVICES is not set |
477 | # CONFIG_C2PORT is not set | ||
472 | CONFIG_HAVE_IDE=y | 478 | CONFIG_HAVE_IDE=y |
473 | CONFIG_IDE=y | 479 | CONFIG_IDE=y |
474 | 480 | ||
@@ -481,7 +487,6 @@ CONFIG_IDE_GD_ATA=y | |||
481 | # CONFIG_IDE_GD_ATAPI is not set | 487 | # CONFIG_IDE_GD_ATAPI is not set |
482 | # CONFIG_BLK_DEV_IDECD is not set | 488 | # CONFIG_BLK_DEV_IDECD is not set |
483 | # CONFIG_BLK_DEV_IDETAPE is not set | 489 | # CONFIG_BLK_DEV_IDETAPE is not set |
484 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
485 | # CONFIG_IDE_TASK_IOCTL is not set | 490 | # CONFIG_IDE_TASK_IOCTL is not set |
486 | CONFIG_IDE_PROC_FS=y | 491 | CONFIG_IDE_PROC_FS=y |
487 | 492 | ||
@@ -530,6 +535,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
530 | # CONFIG_SCSI_SRP_ATTRS is not set | 535 | # CONFIG_SCSI_SRP_ATTRS is not set |
531 | CONFIG_SCSI_LOWLEVEL=y | 536 | CONFIG_SCSI_LOWLEVEL=y |
532 | # CONFIG_ISCSI_TCP is not set | 537 | # CONFIG_ISCSI_TCP is not set |
538 | # CONFIG_LIBFC is not set | ||
533 | # CONFIG_SCSI_DEBUG is not set | 539 | # CONFIG_SCSI_DEBUG is not set |
534 | # CONFIG_SCSI_DH is not set | 540 | # CONFIG_SCSI_DH is not set |
535 | # CONFIG_ATA is not set | 541 | # CONFIG_ATA is not set |
@@ -548,6 +554,7 @@ CONFIG_NET_ETHERNET=y | |||
548 | CONFIG_STNIC=y | 554 | CONFIG_STNIC=y |
549 | # CONFIG_SMC91X is not set | 555 | # CONFIG_SMC91X is not set |
550 | # CONFIG_SMC911X is not set | 556 | # CONFIG_SMC911X is not set |
557 | # CONFIG_SMSC911X is not set | ||
551 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 558 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
552 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 559 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
553 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 560 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -610,6 +617,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
610 | CONFIG_SERIAL_CORE=y | 617 | CONFIG_SERIAL_CORE=y |
611 | CONFIG_SERIAL_CORE_CONSOLE=y | 618 | CONFIG_SERIAL_CORE_CONSOLE=y |
612 | CONFIG_UNIX98_PTYS=y | 619 | CONFIG_UNIX98_PTYS=y |
620 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
613 | CONFIG_LEGACY_PTYS=y | 621 | CONFIG_LEGACY_PTYS=y |
614 | CONFIG_LEGACY_PTY_COUNT=256 | 622 | CONFIG_LEGACY_PTY_COUNT=256 |
615 | # CONFIG_IPMI_HANDLER is not set | 623 | # CONFIG_IPMI_HANDLER is not set |
@@ -645,11 +653,11 @@ CONFIG_WATCHDOG=y | |||
645 | # CONFIG_SOFT_WATCHDOG is not set | 653 | # CONFIG_SOFT_WATCHDOG is not set |
646 | CONFIG_SH_WDT=y | 654 | CONFIG_SH_WDT=y |
647 | # CONFIG_SH_WDT_MMAP is not set | 655 | # CONFIG_SH_WDT_MMAP is not set |
656 | CONFIG_SSB_POSSIBLE=y | ||
648 | 657 | ||
649 | # | 658 | # |
650 | # Sonics Silicon Backplane | 659 | # Sonics Silicon Backplane |
651 | # | 660 | # |
652 | CONFIG_SSB_POSSIBLE=y | ||
653 | # CONFIG_SSB is not set | 661 | # CONFIG_SSB is not set |
654 | 662 | ||
655 | # | 663 | # |
@@ -659,7 +667,7 @@ CONFIG_SSB_POSSIBLE=y | |||
659 | # CONFIG_MFD_SM501 is not set | 667 | # CONFIG_MFD_SM501 is not set |
660 | # CONFIG_HTC_PASIC3 is not set | 668 | # CONFIG_HTC_PASIC3 is not set |
661 | # CONFIG_MFD_TMIO is not set | 669 | # CONFIG_MFD_TMIO is not set |
662 | # CONFIG_MFD_WM8400 is not set | 670 | # CONFIG_REGULATOR is not set |
663 | 671 | ||
664 | # | 672 | # |
665 | # Multimedia devices | 673 | # Multimedia devices |
@@ -703,7 +711,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
703 | # | 711 | # |
704 | 712 | ||
705 | # | 713 | # |
706 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 714 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
707 | # | 715 | # |
708 | # CONFIG_USB_GADGET is not set | 716 | # CONFIG_USB_GADGET is not set |
709 | # CONFIG_MMC is not set | 717 | # CONFIG_MMC is not set |
@@ -761,10 +769,7 @@ CONFIG_TMPFS=y | |||
761 | # CONFIG_HUGETLBFS is not set | 769 | # CONFIG_HUGETLBFS is not set |
762 | # CONFIG_HUGETLB_PAGE is not set | 770 | # CONFIG_HUGETLB_PAGE is not set |
763 | # CONFIG_CONFIGFS_FS is not set | 771 | # CONFIG_CONFIGFS_FS is not set |
764 | 772 | CONFIG_MISC_FILESYSTEMS=y | |
765 | # | ||
766 | # Miscellaneous filesystems | ||
767 | # | ||
768 | # CONFIG_ADFS_FS is not set | 773 | # CONFIG_ADFS_FS is not set |
769 | # CONFIG_AFFS_FS is not set | 774 | # CONFIG_AFFS_FS is not set |
770 | # CONFIG_HFS_FS is not set | 775 | # CONFIG_HFS_FS is not set |
@@ -847,13 +852,19 @@ CONFIG_FRAME_WARN=1024 | |||
847 | # CONFIG_DEBUG_MEMORY_INIT is not set | 852 | # CONFIG_DEBUG_MEMORY_INIT is not set |
848 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 853 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
849 | # CONFIG_LATENCYTOP is not set | 854 | # CONFIG_LATENCYTOP is not set |
850 | CONFIG_NOP_TRACER=y | 855 | CONFIG_HAVE_FUNCTION_TRACER=y |
851 | CONFIG_HAVE_FTRACE=y | 856 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
857 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
858 | |||
859 | # | ||
860 | # Tracers | ||
861 | # | ||
852 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 862 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
853 | # CONFIG_SAMPLES is not set | 863 | # CONFIG_SAMPLES is not set |
864 | CONFIG_HAVE_ARCH_KGDB=y | ||
854 | # CONFIG_SH_STANDARD_BIOS is not set | 865 | # CONFIG_SH_STANDARD_BIOS is not set |
855 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 866 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
856 | # CONFIG_SH_KGDB is not set | 867 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
857 | 868 | ||
858 | # | 869 | # |
859 | # Security options | 870 | # Security options |
@@ -869,6 +880,7 @@ CONFIG_CRYPTO=y | |||
869 | # | 880 | # |
870 | # CONFIG_CRYPTO_FIPS is not set | 881 | # CONFIG_CRYPTO_FIPS is not set |
871 | # CONFIG_CRYPTO_MANAGER is not set | 882 | # CONFIG_CRYPTO_MANAGER is not set |
883 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
872 | # CONFIG_CRYPTO_GF128MUL is not set | 884 | # CONFIG_CRYPTO_GF128MUL is not set |
873 | # CONFIG_CRYPTO_NULL is not set | 885 | # CONFIG_CRYPTO_NULL is not set |
874 | # CONFIG_CRYPTO_CRYPTD is not set | 886 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -951,6 +963,7 @@ CONFIG_CRYPTO_HW=y | |||
951 | # Library routines | 963 | # Library routines |
952 | # | 964 | # |
953 | CONFIG_BITREVERSE=y | 965 | CONFIG_BITREVERSE=y |
966 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
954 | # CONFIG_CRC_CCITT is not set | 967 | # CONFIG_CRC_CCITT is not set |
955 | # CONFIG_CRC16 is not set | 968 | # CONFIG_CRC16 is not set |
956 | # CONFIG_CRC_T10DIF is not set | 969 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/se7751_defconfig b/arch/sh/configs/se7751_defconfig index d99a6bdf410f..f54ae056f177 100644 --- a/arch/sh/configs/se7751_defconfig +++ b/arch/sh/configs/se7751_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:21:12 2008 | 4 | # Fri Jan 9 17:51:47 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -72,12 +74,10 @@ CONFIG_EVENTFD=y | |||
72 | CONFIG_SHMEM=y | 74 | CONFIG_SHMEM=y |
73 | CONFIG_AIO=y | 75 | CONFIG_AIO=y |
74 | CONFIG_VM_EVENT_COUNTERS=y | 76 | CONFIG_VM_EVENT_COUNTERS=y |
75 | CONFIG_PCI_QUIRKS=y | ||
76 | CONFIG_SLAB=y | 77 | CONFIG_SLAB=y |
77 | # CONFIG_SLUB is not set | 78 | # CONFIG_SLUB is not set |
78 | # CONFIG_SLOB is not set | 79 | # CONFIG_SLOB is not set |
79 | # CONFIG_PROFILING is not set | 80 | # CONFIG_PROFILING is not set |
80 | # CONFIG_MARKERS is not set | ||
81 | CONFIG_HAVE_OPROFILE=y | 81 | CONFIG_HAVE_OPROFILE=y |
82 | # CONFIG_KPROBES is not set | 82 | # CONFIG_KPROBES is not set |
83 | CONFIG_HAVE_IOREMAP_PROT=y | 83 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -88,18 +88,15 @@ CONFIG_HAVE_CLK=y | |||
88 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 88 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
89 | CONFIG_SLABINFO=y | 89 | CONFIG_SLABINFO=y |
90 | CONFIG_RT_MUTEXES=y | 90 | CONFIG_RT_MUTEXES=y |
91 | # CONFIG_TINY_SHMEM is not set | ||
92 | CONFIG_BASE_SMALL=0 | 91 | CONFIG_BASE_SMALL=0 |
93 | CONFIG_MODULES=y | 92 | CONFIG_MODULES=y |
94 | # CONFIG_MODULE_FORCE_LOAD is not set | 93 | # CONFIG_MODULE_FORCE_LOAD is not set |
95 | # CONFIG_MODULE_UNLOAD is not set | 94 | # CONFIG_MODULE_UNLOAD is not set |
96 | # CONFIG_MODVERSIONS is not set | 95 | # CONFIG_MODVERSIONS is not set |
97 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 96 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
98 | CONFIG_KMOD=y | ||
99 | CONFIG_BLOCK=y | 97 | CONFIG_BLOCK=y |
100 | # CONFIG_LBD is not set | 98 | # CONFIG_LBD is not set |
101 | # CONFIG_BLK_DEV_IO_TRACE is not set | 99 | # CONFIG_BLK_DEV_IO_TRACE is not set |
102 | # CONFIG_LSF is not set | ||
103 | # CONFIG_BLK_DEV_BSG is not set | 100 | # CONFIG_BLK_DEV_BSG is not set |
104 | # CONFIG_BLK_DEV_INTEGRITY is not set | 101 | # CONFIG_BLK_DEV_INTEGRITY is not set |
105 | 102 | ||
@@ -116,6 +113,10 @@ CONFIG_DEFAULT_AS=y | |||
116 | # CONFIG_DEFAULT_NOOP is not set | 113 | # CONFIG_DEFAULT_NOOP is not set |
117 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 114 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
118 | CONFIG_CLASSIC_RCU=y | 115 | CONFIG_CLASSIC_RCU=y |
116 | # CONFIG_TREE_RCU is not set | ||
117 | # CONFIG_PREEMPT_RCU is not set | ||
118 | # CONFIG_TREE_RCU_TRACE is not set | ||
119 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
119 | # CONFIG_FREEZER is not set | 120 | # CONFIG_FREEZER is not set |
120 | 121 | ||
121 | # | 122 | # |
@@ -123,6 +124,7 @@ CONFIG_CLASSIC_RCU=y | |||
123 | # | 124 | # |
124 | CONFIG_CPU_SH4=y | 125 | CONFIG_CPU_SH4=y |
125 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 126 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
127 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
126 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 128 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
127 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 129 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
128 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -186,7 +188,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
186 | CONFIG_SPARSEMEM_STATIC=y | 188 | CONFIG_SPARSEMEM_STATIC=y |
187 | CONFIG_PAGEFLAGS_EXTENDED=y | 189 | CONFIG_PAGEFLAGS_EXTENDED=y |
188 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 190 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
189 | # CONFIG_RESOURCES_64BIT is not set | ||
190 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 191 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
191 | CONFIG_ZONE_DMA_FLAG=0 | 192 | CONFIG_ZONE_DMA_FLAG=0 |
192 | CONFIG_NR_QUICK=2 | 193 | CONFIG_NR_QUICK=2 |
@@ -280,7 +281,6 @@ CONFIG_CMDLINE="console=ttySC1,38400" | |||
280 | # | 281 | # |
281 | # Bus options | 282 | # Bus options |
282 | # | 283 | # |
283 | # CONFIG_CF_ENABLER is not set | ||
284 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 284 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
285 | 285 | ||
286 | # | 286 | # |
@@ -290,11 +290,18 @@ CONFIG_BINFMT_ELF=y | |||
290 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 290 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
291 | # CONFIG_HAVE_AOUT is not set | 291 | # CONFIG_HAVE_AOUT is not set |
292 | # CONFIG_BINFMT_MISC is not set | 292 | # CONFIG_BINFMT_MISC is not set |
293 | |||
294 | # | ||
295 | # Power management options (EXPERIMENTAL) | ||
296 | # | ||
297 | # CONFIG_PM is not set | ||
298 | # CONFIG_CPU_IDLE is not set | ||
293 | CONFIG_NET=y | 299 | CONFIG_NET=y |
294 | 300 | ||
295 | # | 301 | # |
296 | # Networking options | 302 | # Networking options |
297 | # | 303 | # |
304 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
298 | CONFIG_PACKET=y | 305 | CONFIG_PACKET=y |
299 | # CONFIG_PACKET_MMAP is not set | 306 | # CONFIG_PACKET_MMAP is not set |
300 | CONFIG_UNIX=y | 307 | CONFIG_UNIX=y |
@@ -370,6 +377,7 @@ CONFIG_IP_NF_QUEUE=y | |||
370 | # CONFIG_ECONET is not set | 377 | # CONFIG_ECONET is not set |
371 | # CONFIG_WAN_ROUTER is not set | 378 | # CONFIG_WAN_ROUTER is not set |
372 | # CONFIG_NET_SCHED is not set | 379 | # CONFIG_NET_SCHED is not set |
380 | # CONFIG_DCB is not set | ||
373 | 381 | ||
374 | # | 382 | # |
375 | # Network testing | 383 | # Network testing |
@@ -385,8 +393,8 @@ CONFIG_WIRELESS=y | |||
385 | # CONFIG_CFG80211 is not set | 393 | # CONFIG_CFG80211 is not set |
386 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 394 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
387 | # CONFIG_WIRELESS_EXT is not set | 395 | # CONFIG_WIRELESS_EXT is not set |
396 | # CONFIG_LIB80211 is not set | ||
388 | # CONFIG_MAC80211 is not set | 397 | # CONFIG_MAC80211 is not set |
389 | # CONFIG_IEEE80211 is not set | ||
390 | # CONFIG_RFKILL is not set | 398 | # CONFIG_RFKILL is not set |
391 | # CONFIG_NET_9P is not set | 399 | # CONFIG_NET_9P is not set |
392 | 400 | ||
@@ -490,6 +498,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
490 | CONFIG_MISC_DEVICES=y | 498 | CONFIG_MISC_DEVICES=y |
491 | # CONFIG_EEPROM_93CX6 is not set | 499 | # CONFIG_EEPROM_93CX6 is not set |
492 | # CONFIG_ENCLOSURE_SERVICES is not set | 500 | # CONFIG_ENCLOSURE_SERVICES is not set |
501 | # CONFIG_C2PORT is not set | ||
493 | CONFIG_HAVE_IDE=y | 502 | CONFIG_HAVE_IDE=y |
494 | # CONFIG_IDE is not set | 503 | # CONFIG_IDE is not set |
495 | 504 | ||
@@ -516,6 +525,7 @@ CONFIG_MII=y | |||
516 | # CONFIG_STNIC is not set | 525 | # CONFIG_STNIC is not set |
517 | # CONFIG_SMC91X is not set | 526 | # CONFIG_SMC91X is not set |
518 | # CONFIG_SMC911X is not set | 527 | # CONFIG_SMC911X is not set |
528 | # CONFIG_SMSC911X is not set | ||
519 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 529 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
520 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 530 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
521 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 531 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -570,6 +580,7 @@ CONFIG_DEVKMEM=y | |||
570 | # | 580 | # |
571 | # CONFIG_SERIAL_SH_SCI is not set | 581 | # CONFIG_SERIAL_SH_SCI is not set |
572 | CONFIG_UNIX98_PTYS=y | 582 | CONFIG_UNIX98_PTYS=y |
583 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
573 | CONFIG_LEGACY_PTYS=y | 584 | CONFIG_LEGACY_PTYS=y |
574 | CONFIG_LEGACY_PTY_COUNT=256 | 585 | CONFIG_LEGACY_PTY_COUNT=256 |
575 | # CONFIG_IPMI_HANDLER is not set | 586 | # CONFIG_IPMI_HANDLER is not set |
@@ -604,11 +615,11 @@ CONFIG_WATCHDOG=y | |||
604 | # | 615 | # |
605 | # CONFIG_SOFT_WATCHDOG is not set | 616 | # CONFIG_SOFT_WATCHDOG is not set |
606 | # CONFIG_SH_WDT is not set | 617 | # CONFIG_SH_WDT is not set |
618 | CONFIG_SSB_POSSIBLE=y | ||
607 | 619 | ||
608 | # | 620 | # |
609 | # Sonics Silicon Backplane | 621 | # Sonics Silicon Backplane |
610 | # | 622 | # |
611 | CONFIG_SSB_POSSIBLE=y | ||
612 | # CONFIG_SSB is not set | 623 | # CONFIG_SSB is not set |
613 | 624 | ||
614 | # | 625 | # |
@@ -618,7 +629,7 @@ CONFIG_SSB_POSSIBLE=y | |||
618 | # CONFIG_MFD_SM501 is not set | 629 | # CONFIG_MFD_SM501 is not set |
619 | # CONFIG_HTC_PASIC3 is not set | 630 | # CONFIG_HTC_PASIC3 is not set |
620 | # CONFIG_MFD_TMIO is not set | 631 | # CONFIG_MFD_TMIO is not set |
621 | # CONFIG_MFD_WM8400 is not set | 632 | # CONFIG_REGULATOR is not set |
622 | 633 | ||
623 | # | 634 | # |
624 | # Multimedia devices | 635 | # Multimedia devices |
@@ -662,7 +673,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
662 | # | 673 | # |
663 | 674 | ||
664 | # | 675 | # |
665 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 676 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
666 | # | 677 | # |
667 | # CONFIG_USB_GADGET is not set | 678 | # CONFIG_USB_GADGET is not set |
668 | # CONFIG_MMC is not set | 679 | # CONFIG_MMC is not set |
@@ -722,10 +733,7 @@ CONFIG_TMPFS=y | |||
722 | # CONFIG_HUGETLBFS is not set | 733 | # CONFIG_HUGETLBFS is not set |
723 | # CONFIG_HUGETLB_PAGE is not set | 734 | # CONFIG_HUGETLB_PAGE is not set |
724 | # CONFIG_CONFIGFS_FS is not set | 735 | # CONFIG_CONFIGFS_FS is not set |
725 | 736 | CONFIG_MISC_FILESYSTEMS=y | |
726 | # | ||
727 | # Miscellaneous filesystems | ||
728 | # | ||
729 | # CONFIG_ADFS_FS is not set | 737 | # CONFIG_ADFS_FS is not set |
730 | # CONFIG_AFFS_FS is not set | 738 | # CONFIG_AFFS_FS is not set |
731 | # CONFIG_HFS_FS is not set | 739 | # CONFIG_HFS_FS is not set |
@@ -787,13 +795,19 @@ CONFIG_FRAME_WARN=1024 | |||
787 | # CONFIG_DEBUG_MEMORY_INIT is not set | 795 | # CONFIG_DEBUG_MEMORY_INIT is not set |
788 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 796 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
789 | # CONFIG_LATENCYTOP is not set | 797 | # CONFIG_LATENCYTOP is not set |
790 | CONFIG_NOP_TRACER=y | 798 | CONFIG_HAVE_FUNCTION_TRACER=y |
791 | CONFIG_HAVE_FTRACE=y | 799 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
800 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
801 | |||
802 | # | ||
803 | # Tracers | ||
804 | # | ||
792 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 805 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
793 | # CONFIG_SAMPLES is not set | 806 | # CONFIG_SAMPLES is not set |
807 | CONFIG_HAVE_ARCH_KGDB=y | ||
794 | # CONFIG_SH_STANDARD_BIOS is not set | 808 | # CONFIG_SH_STANDARD_BIOS is not set |
795 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 809 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
796 | # CONFIG_SH_KGDB is not set | 810 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
797 | 811 | ||
798 | # | 812 | # |
799 | # Security options | 813 | # Security options |
@@ -809,6 +823,7 @@ CONFIG_CRYPTO=y | |||
809 | # | 823 | # |
810 | # CONFIG_CRYPTO_FIPS is not set | 824 | # CONFIG_CRYPTO_FIPS is not set |
811 | # CONFIG_CRYPTO_MANAGER is not set | 825 | # CONFIG_CRYPTO_MANAGER is not set |
826 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
812 | # CONFIG_CRYPTO_GF128MUL is not set | 827 | # CONFIG_CRYPTO_GF128MUL is not set |
813 | # CONFIG_CRYPTO_NULL is not set | 828 | # CONFIG_CRYPTO_NULL is not set |
814 | # CONFIG_CRYPTO_CRYPTD is not set | 829 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -891,6 +906,7 @@ CONFIG_CRYPTO_HW=y | |||
891 | # Library routines | 906 | # Library routines |
892 | # | 907 | # |
893 | CONFIG_BITREVERSE=y | 908 | CONFIG_BITREVERSE=y |
909 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
894 | # CONFIG_CRC_CCITT is not set | 910 | # CONFIG_CRC_CCITT is not set |
895 | # CONFIG_CRC16 is not set | 911 | # CONFIG_CRC16 is not set |
896 | # CONFIG_CRC_T10DIF is not set | 912 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig index ad95b80bb198..7504978e8747 100644 --- a/arch/sh/configs/se7780_defconfig +++ b/arch/sh/configs/se7780_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:27:30 2008 | 4 | # Fri Jan 9 17:53:50 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -74,7 +76,6 @@ CONFIG_SLAB=y | |||
74 | # CONFIG_SLUB is not set | 76 | # CONFIG_SLUB is not set |
75 | # CONFIG_SLOB is not set | 77 | # CONFIG_SLOB is not set |
76 | # CONFIG_PROFILING is not set | 78 | # CONFIG_PROFILING is not set |
77 | # CONFIG_MARKERS is not set | ||
78 | CONFIG_HAVE_OPROFILE=y | 79 | CONFIG_HAVE_OPROFILE=y |
79 | CONFIG_HAVE_IOREMAP_PROT=y | 80 | CONFIG_HAVE_IOREMAP_PROT=y |
80 | CONFIG_HAVE_KPROBES=y | 81 | CONFIG_HAVE_KPROBES=y |
@@ -84,18 +85,15 @@ CONFIG_HAVE_CLK=y | |||
84 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 85 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
85 | CONFIG_SLABINFO=y | 86 | CONFIG_SLABINFO=y |
86 | CONFIG_RT_MUTEXES=y | 87 | CONFIG_RT_MUTEXES=y |
87 | # CONFIG_TINY_SHMEM is not set | ||
88 | CONFIG_BASE_SMALL=0 | 88 | CONFIG_BASE_SMALL=0 |
89 | CONFIG_MODULES=y | 89 | CONFIG_MODULES=y |
90 | # CONFIG_MODULE_FORCE_LOAD is not set | 90 | # CONFIG_MODULE_FORCE_LOAD is not set |
91 | CONFIG_MODULE_UNLOAD=y | 91 | CONFIG_MODULE_UNLOAD=y |
92 | # CONFIG_MODVERSIONS is not set | 92 | # CONFIG_MODVERSIONS is not set |
93 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 93 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
94 | CONFIG_KMOD=y | ||
95 | CONFIG_BLOCK=y | 94 | CONFIG_BLOCK=y |
96 | # CONFIG_LBD is not set | 95 | # CONFIG_LBD is not set |
97 | # CONFIG_BLK_DEV_IO_TRACE is not set | 96 | # CONFIG_BLK_DEV_IO_TRACE is not set |
98 | # CONFIG_LSF is not set | ||
99 | # CONFIG_BLK_DEV_INTEGRITY is not set | 97 | # CONFIG_BLK_DEV_INTEGRITY is not set |
100 | 98 | ||
101 | # | 99 | # |
@@ -111,6 +109,10 @@ CONFIG_DEFAULT_DEADLINE=y | |||
111 | # CONFIG_DEFAULT_NOOP is not set | 109 | # CONFIG_DEFAULT_NOOP is not set |
112 | CONFIG_DEFAULT_IOSCHED="deadline" | 110 | CONFIG_DEFAULT_IOSCHED="deadline" |
113 | CONFIG_CLASSIC_RCU=y | 111 | CONFIG_CLASSIC_RCU=y |
112 | # CONFIG_TREE_RCU is not set | ||
113 | # CONFIG_PREEMPT_RCU is not set | ||
114 | # CONFIG_TREE_RCU_TRACE is not set | ||
115 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
114 | # CONFIG_FREEZER is not set | 116 | # CONFIG_FREEZER is not set |
115 | 117 | ||
116 | # | 118 | # |
@@ -119,6 +121,7 @@ CONFIG_CLASSIC_RCU=y | |||
119 | CONFIG_CPU_SH4=y | 121 | CONFIG_CPU_SH4=y |
120 | CONFIG_CPU_SH4A=y | 122 | CONFIG_CPU_SH4A=y |
121 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 123 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
124 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
122 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 125 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
123 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 126 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
124 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 127 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -185,7 +188,6 @@ CONFIG_SPARSEMEM_STATIC=y | |||
185 | CONFIG_PAGEFLAGS_EXTENDED=y | 188 | CONFIG_PAGEFLAGS_EXTENDED=y |
186 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 189 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
187 | CONFIG_MIGRATION=y | 190 | CONFIG_MIGRATION=y |
188 | # CONFIG_RESOURCES_64BIT is not set | ||
189 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 191 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
190 | CONFIG_ZONE_DMA_FLAG=0 | 192 | CONFIG_ZONE_DMA_FLAG=0 |
191 | CONFIG_NR_QUICK=2 | 193 | CONFIG_NR_QUICK=2 |
@@ -274,11 +276,11 @@ CONFIG_CMDLINE="console=ttySC0.115200 root=/dev/sda1" | |||
274 | # | 276 | # |
275 | # Bus options | 277 | # Bus options |
276 | # | 278 | # |
277 | # CONFIG_CF_ENABLER is not set | ||
278 | CONFIG_PCI=y | 279 | CONFIG_PCI=y |
279 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 280 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
280 | CONFIG_PCI_AUTO=y | 281 | CONFIG_PCI_AUTO=y |
281 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 282 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
283 | # CONFIG_PCIEPORTBUS is not set | ||
282 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 284 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
283 | CONFIG_PCI_LEGACY=y | 285 | CONFIG_PCI_LEGACY=y |
284 | 286 | ||
@@ -294,6 +296,7 @@ CONFIG_NET=y | |||
294 | # | 296 | # |
295 | # Networking options | 297 | # Networking options |
296 | # | 298 | # |
299 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
297 | CONFIG_PACKET=y | 300 | CONFIG_PACKET=y |
298 | # CONFIG_PACKET_MMAP is not set | 301 | # CONFIG_PACKET_MMAP is not set |
299 | CONFIG_UNIX=y | 302 | CONFIG_UNIX=y |
@@ -349,6 +352,7 @@ CONFIG_IPV6=y | |||
349 | # CONFIG_IPX is not set | 352 | # CONFIG_IPX is not set |
350 | # CONFIG_ATALK is not set | 353 | # CONFIG_ATALK is not set |
351 | # CONFIG_NET_SCHED is not set | 354 | # CONFIG_NET_SCHED is not set |
355 | # CONFIG_DCB is not set | ||
352 | 356 | ||
353 | # | 357 | # |
354 | # Network testing | 358 | # Network testing |
@@ -363,8 +367,8 @@ CONFIG_WIRELESS=y | |||
363 | # CONFIG_CFG80211 is not set | 367 | # CONFIG_CFG80211 is not set |
364 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 368 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
365 | # CONFIG_WIRELESS_EXT is not set | 369 | # CONFIG_WIRELESS_EXT is not set |
370 | # CONFIG_LIB80211 is not set | ||
366 | # CONFIG_MAC80211 is not set | 371 | # CONFIG_MAC80211 is not set |
367 | # CONFIG_IEEE80211 is not set | ||
368 | # CONFIG_RFKILL is not set | 372 | # CONFIG_RFKILL is not set |
369 | 373 | ||
370 | # | 374 | # |
@@ -533,6 +537,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
533 | # CONFIG_MEGARAID_LEGACY is not set | 537 | # CONFIG_MEGARAID_LEGACY is not set |
534 | # CONFIG_MEGARAID_SAS is not set | 538 | # CONFIG_MEGARAID_SAS is not set |
535 | # CONFIG_SCSI_HPTIOP is not set | 539 | # CONFIG_SCSI_HPTIOP is not set |
540 | # CONFIG_LIBFC is not set | ||
541 | # CONFIG_FCOE is not set | ||
536 | # CONFIG_SCSI_DMX3191D is not set | 542 | # CONFIG_SCSI_DMX3191D is not set |
537 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 543 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
538 | # CONFIG_SCSI_IPS is not set | 544 | # CONFIG_SCSI_IPS is not set |
@@ -569,11 +575,13 @@ CONFIG_SATA_SIL=y | |||
569 | # CONFIG_SATA_VIA is not set | 575 | # CONFIG_SATA_VIA is not set |
570 | # CONFIG_SATA_VITESSE is not set | 576 | # CONFIG_SATA_VITESSE is not set |
571 | # CONFIG_SATA_INIC162X is not set | 577 | # CONFIG_SATA_INIC162X is not set |
578 | # CONFIG_PATA_ALI is not set | ||
572 | # CONFIG_PATA_AMD is not set | 579 | # CONFIG_PATA_AMD is not set |
573 | # CONFIG_PATA_ARTOP is not set | 580 | # CONFIG_PATA_ARTOP is not set |
574 | # CONFIG_PATA_ATIIXP is not set | 581 | # CONFIG_PATA_ATIIXP is not set |
575 | # CONFIG_PATA_CMD64X is not set | 582 | # CONFIG_PATA_CMD64X is not set |
576 | # CONFIG_PATA_CS5520 is not set | 583 | # CONFIG_PATA_CS5520 is not set |
584 | # CONFIG_PATA_CS5530 is not set | ||
577 | # CONFIG_PATA_EFAR is not set | 585 | # CONFIG_PATA_EFAR is not set |
578 | # CONFIG_ATA_GENERIC is not set | 586 | # CONFIG_ATA_GENERIC is not set |
579 | # CONFIG_PATA_HPT366 is not set | 587 | # CONFIG_PATA_HPT366 is not set |
@@ -585,10 +593,15 @@ CONFIG_SATA_SIL=y | |||
585 | # CONFIG_PATA_MPIIX is not set | 593 | # CONFIG_PATA_MPIIX is not set |
586 | # CONFIG_PATA_OLDPIIX is not set | 594 | # CONFIG_PATA_OLDPIIX is not set |
587 | # CONFIG_PATA_NETCELL is not set | 595 | # CONFIG_PATA_NETCELL is not set |
596 | # CONFIG_PATA_NS87410 is not set | ||
597 | # CONFIG_PATA_NS87415 is not set | ||
598 | # CONFIG_PATA_PDC_OLD is not set | ||
588 | # CONFIG_PATA_RZ1000 is not set | 599 | # CONFIG_PATA_RZ1000 is not set |
600 | # CONFIG_PATA_SC1200 is not set | ||
589 | # CONFIG_PATA_SERVERWORKS is not set | 601 | # CONFIG_PATA_SERVERWORKS is not set |
590 | # CONFIG_PATA_PDC2027X is not set | 602 | # CONFIG_PATA_PDC2027X is not set |
591 | # CONFIG_PATA_SIL680 is not set | 603 | # CONFIG_PATA_SIL680 is not set |
604 | # CONFIG_PATA_SIS is not set | ||
592 | # CONFIG_PATA_VIA is not set | 605 | # CONFIG_PATA_VIA is not set |
593 | # CONFIG_PATA_WINBOND is not set | 606 | # CONFIG_PATA_WINBOND is not set |
594 | # CONFIG_PATA_PLATFORM is not set | 607 | # CONFIG_PATA_PLATFORM is not set |
@@ -627,6 +640,9 @@ CONFIG_SMSC_PHY=y | |||
627 | # CONFIG_BROADCOM_PHY is not set | 640 | # CONFIG_BROADCOM_PHY is not set |
628 | # CONFIG_ICPLUS_PHY is not set | 641 | # CONFIG_ICPLUS_PHY is not set |
629 | # CONFIG_REALTEK_PHY is not set | 642 | # CONFIG_REALTEK_PHY is not set |
643 | # CONFIG_NATIONAL_PHY is not set | ||
644 | # CONFIG_STE10XP is not set | ||
645 | # CONFIG_LSI_ET1011C_PHY is not set | ||
630 | # CONFIG_FIXED_PHY is not set | 646 | # CONFIG_FIXED_PHY is not set |
631 | # CONFIG_MDIO_BITBANG is not set | 647 | # CONFIG_MDIO_BITBANG is not set |
632 | CONFIG_NET_ETHERNET=y | 648 | CONFIG_NET_ETHERNET=y |
@@ -639,6 +655,7 @@ CONFIG_MII=y | |||
639 | # CONFIG_NET_VENDOR_3COM is not set | 655 | # CONFIG_NET_VENDOR_3COM is not set |
640 | CONFIG_SMC91X=y | 656 | CONFIG_SMC91X=y |
641 | # CONFIG_SMC911X is not set | 657 | # CONFIG_SMC911X is not set |
658 | # CONFIG_SMSC911X is not set | ||
642 | # CONFIG_NET_TULIP is not set | 659 | # CONFIG_NET_TULIP is not set |
643 | # CONFIG_HP100 is not set | 660 | # CONFIG_HP100 is not set |
644 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 661 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -654,7 +671,6 @@ CONFIG_NET_PCI=y | |||
654 | # CONFIG_ADAPTEC_STARFIRE is not set | 671 | # CONFIG_ADAPTEC_STARFIRE is not set |
655 | # CONFIG_B44 is not set | 672 | # CONFIG_B44 is not set |
656 | # CONFIG_FORCEDETH is not set | 673 | # CONFIG_FORCEDETH is not set |
657 | # CONFIG_EEPRO100 is not set | ||
658 | # CONFIG_E100 is not set | 674 | # CONFIG_E100 is not set |
659 | # CONFIG_FEALNX is not set | 675 | # CONFIG_FEALNX is not set |
660 | # CONFIG_NATSEMI is not set | 676 | # CONFIG_NATSEMI is not set |
@@ -663,6 +679,7 @@ CONFIG_NET_PCI=y | |||
663 | # CONFIG_R6040 is not set | 679 | # CONFIG_R6040 is not set |
664 | # CONFIG_SIS900 is not set | 680 | # CONFIG_SIS900 is not set |
665 | # CONFIG_EPIC100 is not set | 681 | # CONFIG_EPIC100 is not set |
682 | # CONFIG_SMSC9420 is not set | ||
666 | # CONFIG_SUNDANCE is not set | 683 | # CONFIG_SUNDANCE is not set |
667 | # CONFIG_TLAN is not set | 684 | # CONFIG_TLAN is not set |
668 | # CONFIG_VIA_RHINE is not set | 685 | # CONFIG_VIA_RHINE is not set |
@@ -754,6 +771,7 @@ CONFIG_SERIAL_CORE=y | |||
754 | CONFIG_SERIAL_CORE_CONSOLE=y | 771 | CONFIG_SERIAL_CORE_CONSOLE=y |
755 | # CONFIG_SERIAL_JSM is not set | 772 | # CONFIG_SERIAL_JSM is not set |
756 | CONFIG_UNIX98_PTYS=y | 773 | CONFIG_UNIX98_PTYS=y |
774 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
757 | # CONFIG_LEGACY_PTYS is not set | 775 | # CONFIG_LEGACY_PTYS is not set |
758 | # CONFIG_IPMI_HANDLER is not set | 776 | # CONFIG_IPMI_HANDLER is not set |
759 | # CONFIG_HW_RANDOM is not set | 777 | # CONFIG_HW_RANDOM is not set |
@@ -779,11 +797,11 @@ CONFIG_HWMON=y | |||
779 | CONFIG_THERMAL=y | 797 | CONFIG_THERMAL=y |
780 | # CONFIG_THERMAL_HWMON is not set | 798 | # CONFIG_THERMAL_HWMON is not set |
781 | # CONFIG_WATCHDOG is not set | 799 | # CONFIG_WATCHDOG is not set |
800 | CONFIG_SSB_POSSIBLE=y | ||
782 | 801 | ||
783 | # | 802 | # |
784 | # Sonics Silicon Backplane | 803 | # Sonics Silicon Backplane |
785 | # | 804 | # |
786 | CONFIG_SSB_POSSIBLE=y | ||
787 | # CONFIG_SSB is not set | 805 | # CONFIG_SSB is not set |
788 | 806 | ||
789 | # | 807 | # |
@@ -793,7 +811,7 @@ CONFIG_SSB_POSSIBLE=y | |||
793 | # CONFIG_MFD_SM501 is not set | 811 | # CONFIG_MFD_SM501 is not set |
794 | # CONFIG_HTC_PASIC3 is not set | 812 | # CONFIG_HTC_PASIC3 is not set |
795 | # CONFIG_MFD_TMIO is not set | 813 | # CONFIG_MFD_TMIO is not set |
796 | # CONFIG_MFD_WM8400 is not set | 814 | # CONFIG_REGULATOR is not set |
797 | 815 | ||
798 | # | 816 | # |
799 | # Multimedia devices | 817 | # Multimedia devices |
@@ -821,15 +839,16 @@ CONFIG_FB=y | |||
821 | CONFIG_FIRMWARE_EDID=y | 839 | CONFIG_FIRMWARE_EDID=y |
822 | # CONFIG_FB_DDC is not set | 840 | # CONFIG_FB_DDC is not set |
823 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | 841 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set |
824 | CONFIG_FB_CFB_FILLRECT=m | 842 | # CONFIG_FB_CFB_FILLRECT is not set |
825 | CONFIG_FB_CFB_COPYAREA=m | 843 | # CONFIG_FB_CFB_COPYAREA is not set |
826 | CONFIG_FB_CFB_IMAGEBLIT=m | 844 | # CONFIG_FB_CFB_IMAGEBLIT is not set |
827 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 845 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
828 | # CONFIG_FB_SYS_FILLRECT is not set | 846 | CONFIG_FB_SYS_FILLRECT=m |
829 | # CONFIG_FB_SYS_COPYAREA is not set | 847 | CONFIG_FB_SYS_COPYAREA=m |
830 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 848 | CONFIG_FB_SYS_IMAGEBLIT=m |
831 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 849 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
832 | # CONFIG_FB_SYS_FOPS is not set | 850 | CONFIG_FB_SYS_FOPS=m |
851 | CONFIG_FB_DEFERRED_IO=y | ||
833 | # CONFIG_FB_SVGALIB is not set | 852 | # CONFIG_FB_SVGALIB is not set |
834 | # CONFIG_FB_MACMODES is not set | 853 | # CONFIG_FB_MACMODES is not set |
835 | # CONFIG_FB_BACKLIGHT is not set | 854 | # CONFIG_FB_BACKLIGHT is not set |
@@ -865,6 +884,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m | |||
865 | CONFIG_FB_SH_MOBILE_LCDC=m | 884 | CONFIG_FB_SH_MOBILE_LCDC=m |
866 | # CONFIG_FB_VIRTUAL is not set | 885 | # CONFIG_FB_VIRTUAL is not set |
867 | # CONFIG_FB_METRONOME is not set | 886 | # CONFIG_FB_METRONOME is not set |
887 | # CONFIG_FB_MB862XX is not set | ||
868 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 888 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
869 | 889 | ||
870 | # | 890 | # |
@@ -912,11 +932,9 @@ CONFIG_HID_COMPAT=y | |||
912 | CONFIG_HID_A4TECH=y | 932 | CONFIG_HID_A4TECH=y |
913 | CONFIG_HID_APPLE=y | 933 | CONFIG_HID_APPLE=y |
914 | CONFIG_HID_BELKIN=y | 934 | CONFIG_HID_BELKIN=y |
915 | CONFIG_HID_BRIGHT=y | ||
916 | CONFIG_HID_CHERRY=y | 935 | CONFIG_HID_CHERRY=y |
917 | CONFIG_HID_CHICONY=y | 936 | CONFIG_HID_CHICONY=y |
918 | CONFIG_HID_CYPRESS=y | 937 | CONFIG_HID_CYPRESS=y |
919 | CONFIG_HID_DELL=y | ||
920 | CONFIG_HID_EZKEY=y | 938 | CONFIG_HID_EZKEY=y |
921 | CONFIG_HID_GYRATION=y | 939 | CONFIG_HID_GYRATION=y |
922 | CONFIG_HID_LOGITECH=y | 940 | CONFIG_HID_LOGITECH=y |
@@ -924,12 +942,15 @@ CONFIG_HID_LOGITECH=y | |||
924 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 942 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
925 | CONFIG_HID_MICROSOFT=y | 943 | CONFIG_HID_MICROSOFT=y |
926 | CONFIG_HID_MONTEREY=y | 944 | CONFIG_HID_MONTEREY=y |
945 | # CONFIG_HID_NTRIG is not set | ||
927 | CONFIG_HID_PANTHERLORD=y | 946 | CONFIG_HID_PANTHERLORD=y |
928 | # CONFIG_PANTHERLORD_FF is not set | 947 | # CONFIG_PANTHERLORD_FF is not set |
929 | CONFIG_HID_PETALYNX=y | 948 | CONFIG_HID_PETALYNX=y |
930 | CONFIG_HID_SAMSUNG=y | 949 | CONFIG_HID_SAMSUNG=y |
931 | CONFIG_HID_SONY=y | 950 | CONFIG_HID_SONY=y |
932 | CONFIG_HID_SUNPLUS=y | 951 | CONFIG_HID_SUNPLUS=y |
952 | # CONFIG_GREENASIA_FF is not set | ||
953 | # CONFIG_HID_TOPSEED is not set | ||
933 | CONFIG_THRUSTMASTER_FF=m | 954 | CONFIG_THRUSTMASTER_FF=m |
934 | CONFIG_ZEROPLUS_FF=m | 955 | CONFIG_ZEROPLUS_FF=m |
935 | CONFIG_USB_SUPPORT=y | 956 | CONFIG_USB_SUPPORT=y |
@@ -949,6 +970,7 @@ CONFIG_USB_DEVICEFS=y | |||
949 | # CONFIG_USB_OTG_WHITELIST is not set | 970 | # CONFIG_USB_OTG_WHITELIST is not set |
950 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 971 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
951 | CONFIG_USB_MON=y | 972 | CONFIG_USB_MON=y |
973 | # CONFIG_USB_WUSB_CBAF is not set | ||
952 | 974 | ||
953 | # | 975 | # |
954 | # USB Host Controller Drivers | 976 | # USB Host Controller Drivers |
@@ -974,11 +996,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
974 | # CONFIG_USB_TMC is not set | 996 | # CONFIG_USB_TMC is not set |
975 | 997 | ||
976 | # | 998 | # |
977 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 999 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
978 | # | 1000 | # |
979 | 1001 | ||
980 | # | 1002 | # |
981 | # may also be needed; see USB_STORAGE Help for more information | 1003 | # see USB_STORAGE Help for more information |
982 | # | 1004 | # |
983 | CONFIG_USB_STORAGE=y | 1005 | CONFIG_USB_STORAGE=y |
984 | # CONFIG_USB_STORAGE_DEBUG is not set | 1006 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -1094,10 +1116,7 @@ CONFIG_TMPFS=y | |||
1094 | # CONFIG_HUGETLBFS is not set | 1116 | # CONFIG_HUGETLBFS is not set |
1095 | # CONFIG_HUGETLB_PAGE is not set | 1117 | # CONFIG_HUGETLB_PAGE is not set |
1096 | # CONFIG_CONFIGFS_FS is not set | 1118 | # CONFIG_CONFIGFS_FS is not set |
1097 | 1119 | CONFIG_MISC_FILESYSTEMS=y | |
1098 | # | ||
1099 | # Miscellaneous filesystems | ||
1100 | # | ||
1101 | # CONFIG_HFSPLUS_FS is not set | 1120 | # CONFIG_HFSPLUS_FS is not set |
1102 | # CONFIG_JFFS2_FS is not set | 1121 | # CONFIG_JFFS2_FS is not set |
1103 | CONFIG_CRAMFS=y | 1122 | CONFIG_CRAMFS=y |
@@ -1188,13 +1207,19 @@ CONFIG_DEBUG_FS=y | |||
1188 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1207 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1189 | # CONFIG_LATENCYTOP is not set | 1208 | # CONFIG_LATENCYTOP is not set |
1190 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | 1209 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set |
1191 | CONFIG_NOP_TRACER=y | 1210 | CONFIG_HAVE_FUNCTION_TRACER=y |
1192 | CONFIG_HAVE_FTRACE=y | 1211 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1212 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1213 | |||
1214 | # | ||
1215 | # Tracers | ||
1216 | # | ||
1193 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1217 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1194 | # CONFIG_SAMPLES is not set | 1218 | # CONFIG_SAMPLES is not set |
1219 | CONFIG_HAVE_ARCH_KGDB=y | ||
1195 | # CONFIG_SH_STANDARD_BIOS is not set | 1220 | # CONFIG_SH_STANDARD_BIOS is not set |
1196 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1221 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1197 | # CONFIG_SH_KGDB is not set | 1222 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1198 | 1223 | ||
1199 | # | 1224 | # |
1200 | # Security options | 1225 | # Security options |
@@ -1210,6 +1235,7 @@ CONFIG_CRYPTO=y | |||
1210 | # | 1235 | # |
1211 | # CONFIG_CRYPTO_FIPS is not set | 1236 | # CONFIG_CRYPTO_FIPS is not set |
1212 | # CONFIG_CRYPTO_MANAGER is not set | 1237 | # CONFIG_CRYPTO_MANAGER is not set |
1238 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1213 | # CONFIG_CRYPTO_NULL is not set | 1239 | # CONFIG_CRYPTO_NULL is not set |
1214 | # CONFIG_CRYPTO_CRYPTD is not set | 1240 | # CONFIG_CRYPTO_CRYPTD is not set |
1215 | # CONFIG_CRYPTO_AUTHENC is not set | 1241 | # CONFIG_CRYPTO_AUTHENC is not set |
@@ -1288,6 +1314,7 @@ CONFIG_CRYPTO_HW=y | |||
1288 | # Library routines | 1314 | # Library routines |
1289 | # | 1315 | # |
1290 | CONFIG_BITREVERSE=y | 1316 | CONFIG_BITREVERSE=y |
1317 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1291 | # CONFIG_CRC_CCITT is not set | 1318 | # CONFIG_CRC_CCITT is not set |
1292 | # CONFIG_CRC16 is not set | 1319 | # CONFIG_CRC16 is not set |
1293 | # CONFIG_CRC_T10DIF is not set | 1320 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/sh03_defconfig b/arch/sh/configs/sh03_defconfig index 95f0f5d5b631..04bde1e96965 100644 --- a/arch/sh/configs/sh03_defconfig +++ b/arch/sh/configs/sh03_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:31:54 2008 | 4 | # Fri Jan 9 17:56:46 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -79,6 +81,7 @@ CONFIG_SLAB=y | |||
79 | # CONFIG_SLUB is not set | 81 | # CONFIG_SLUB is not set |
80 | # CONFIG_SLOB is not set | 82 | # CONFIG_SLOB is not set |
81 | CONFIG_PROFILING=y | 83 | CONFIG_PROFILING=y |
84 | CONFIG_TRACEPOINTS=y | ||
82 | # CONFIG_MARKERS is not set | 85 | # CONFIG_MARKERS is not set |
83 | CONFIG_OPROFILE=m | 86 | CONFIG_OPROFILE=m |
84 | CONFIG_HAVE_OPROFILE=y | 87 | CONFIG_HAVE_OPROFILE=y |
@@ -91,7 +94,6 @@ CONFIG_HAVE_CLK=y | |||
91 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 94 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
92 | CONFIG_SLABINFO=y | 95 | CONFIG_SLABINFO=y |
93 | CONFIG_RT_MUTEXES=y | 96 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | ||
95 | CONFIG_BASE_SMALL=0 | 97 | CONFIG_BASE_SMALL=0 |
96 | CONFIG_MODULES=y | 98 | CONFIG_MODULES=y |
97 | # CONFIG_MODULE_FORCE_LOAD is not set | 99 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -99,11 +101,9 @@ CONFIG_MODULE_UNLOAD=y | |||
99 | CONFIG_MODULE_FORCE_UNLOAD=y | 101 | CONFIG_MODULE_FORCE_UNLOAD=y |
100 | CONFIG_MODVERSIONS=y | 102 | CONFIG_MODVERSIONS=y |
101 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 103 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
102 | CONFIG_KMOD=y | ||
103 | CONFIG_BLOCK=y | 104 | CONFIG_BLOCK=y |
104 | # CONFIG_LBD is not set | 105 | # CONFIG_LBD is not set |
105 | # CONFIG_BLK_DEV_IO_TRACE is not set | 106 | # CONFIG_BLK_DEV_IO_TRACE is not set |
106 | # CONFIG_LSF is not set | ||
107 | # CONFIG_BLK_DEV_BSG is not set | 107 | # CONFIG_BLK_DEV_BSG is not set |
108 | # CONFIG_BLK_DEV_INTEGRITY is not set | 108 | # CONFIG_BLK_DEV_INTEGRITY is not set |
109 | 109 | ||
@@ -120,6 +120,10 @@ CONFIG_DEFAULT_AS=y | |||
120 | # CONFIG_DEFAULT_NOOP is not set | 120 | # CONFIG_DEFAULT_NOOP is not set |
121 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 121 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
122 | CONFIG_CLASSIC_RCU=y | 122 | CONFIG_CLASSIC_RCU=y |
123 | # CONFIG_TREE_RCU is not set | ||
124 | # CONFIG_PREEMPT_RCU is not set | ||
125 | # CONFIG_TREE_RCU_TRACE is not set | ||
126 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
123 | # CONFIG_FREEZER is not set | 127 | # CONFIG_FREEZER is not set |
124 | 128 | ||
125 | # | 129 | # |
@@ -127,6 +131,7 @@ CONFIG_CLASSIC_RCU=y | |||
127 | # | 131 | # |
128 | CONFIG_CPU_SH4=y | 132 | CONFIG_CPU_SH4=y |
129 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 133 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
134 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
130 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 135 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 136 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
132 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 137 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -190,7 +195,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
190 | CONFIG_SPARSEMEM_STATIC=y | 195 | CONFIG_SPARSEMEM_STATIC=y |
191 | CONFIG_PAGEFLAGS_EXTENDED=y | 196 | CONFIG_PAGEFLAGS_EXTENDED=y |
192 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 197 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
193 | # CONFIG_RESOURCES_64BIT is not set | ||
194 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 198 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
195 | CONFIG_ZONE_DMA_FLAG=0 | 199 | CONFIG_ZONE_DMA_FLAG=0 |
196 | CONFIG_NR_QUICK=2 | 200 | CONFIG_NR_QUICK=2 |
@@ -268,7 +272,6 @@ CONFIG_HZ=250 | |||
268 | # CONFIG_PREEMPT_NONE is not set | 272 | # CONFIG_PREEMPT_NONE is not set |
269 | # CONFIG_PREEMPT_VOLUNTARY is not set | 273 | # CONFIG_PREEMPT_VOLUNTARY is not set |
270 | CONFIG_PREEMPT=y | 274 | CONFIG_PREEMPT=y |
271 | # CONFIG_PREEMPT_RCU is not set | ||
272 | CONFIG_GUSA=y | 275 | CONFIG_GUSA=y |
273 | # CONFIG_GUSA_RB is not set | 276 | # CONFIG_GUSA_RB is not set |
274 | 277 | ||
@@ -284,14 +287,11 @@ CONFIG_CMDLINE="console=ttySC1,115200 mem=64M root=/dev/nfs" | |||
284 | # | 287 | # |
285 | # Bus options | 288 | # Bus options |
286 | # | 289 | # |
287 | CONFIG_CF_ENABLER=y | ||
288 | CONFIG_CF_AREA5=y | ||
289 | # CONFIG_CF_AREA6 is not set | ||
290 | CONFIG_CF_BASE_ADDR=0xb4000000 | ||
291 | CONFIG_PCI=y | 290 | CONFIG_PCI=y |
292 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 291 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
293 | CONFIG_PCI_AUTO=y | 292 | CONFIG_PCI_AUTO=y |
294 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 293 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
294 | # CONFIG_PCIEPORTBUS is not set | ||
295 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 295 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
296 | CONFIG_PCI_LEGACY=y | 296 | CONFIG_PCI_LEGACY=y |
297 | # CONFIG_PCCARD is not set | 297 | # CONFIG_PCCARD is not set |
@@ -307,11 +307,18 @@ CONFIG_BINFMT_ELF=y | |||
307 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 307 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
308 | # CONFIG_HAVE_AOUT is not set | 308 | # CONFIG_HAVE_AOUT is not set |
309 | CONFIG_BINFMT_MISC=y | 309 | CONFIG_BINFMT_MISC=y |
310 | |||
311 | # | ||
312 | # Power management options (EXPERIMENTAL) | ||
313 | # | ||
314 | # CONFIG_PM is not set | ||
315 | # CONFIG_CPU_IDLE is not set | ||
310 | CONFIG_NET=y | 316 | CONFIG_NET=y |
311 | 317 | ||
312 | # | 318 | # |
313 | # Networking options | 319 | # Networking options |
314 | # | 320 | # |
321 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
315 | CONFIG_PACKET=y | 322 | CONFIG_PACKET=y |
316 | # CONFIG_PACKET_MMAP is not set | 323 | # CONFIG_PACKET_MMAP is not set |
317 | CONFIG_UNIX=y | 324 | CONFIG_UNIX=y |
@@ -369,6 +376,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
369 | # CONFIG_ECONET is not set | 376 | # CONFIG_ECONET is not set |
370 | # CONFIG_WAN_ROUTER is not set | 377 | # CONFIG_WAN_ROUTER is not set |
371 | # CONFIG_NET_SCHED is not set | 378 | # CONFIG_NET_SCHED is not set |
379 | # CONFIG_DCB is not set | ||
372 | 380 | ||
373 | # | 381 | # |
374 | # Network testing | 382 | # Network testing |
@@ -384,8 +392,8 @@ CONFIG_WIRELESS=y | |||
384 | # CONFIG_CFG80211 is not set | 392 | # CONFIG_CFG80211 is not set |
385 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 393 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
386 | # CONFIG_WIRELESS_EXT is not set | 394 | # CONFIG_WIRELESS_EXT is not set |
395 | # CONFIG_LIB80211 is not set | ||
387 | # CONFIG_MAC80211 is not set | 396 | # CONFIG_MAC80211 is not set |
388 | # CONFIG_IEEE80211 is not set | ||
389 | # CONFIG_RFKILL is not set | 397 | # CONFIG_RFKILL is not set |
390 | # CONFIG_NET_9P is not set | 398 | # CONFIG_NET_9P is not set |
391 | 399 | ||
@@ -427,6 +435,7 @@ CONFIG_MISC_DEVICES=y | |||
427 | # CONFIG_TIFM_CORE is not set | 435 | # CONFIG_TIFM_CORE is not set |
428 | # CONFIG_ENCLOSURE_SERVICES is not set | 436 | # CONFIG_ENCLOSURE_SERVICES is not set |
429 | # CONFIG_HP_ILO is not set | 437 | # CONFIG_HP_ILO is not set |
438 | # CONFIG_C2PORT is not set | ||
430 | CONFIG_HAVE_IDE=y | 439 | CONFIG_HAVE_IDE=y |
431 | CONFIG_IDE=y | 440 | CONFIG_IDE=y |
432 | 441 | ||
@@ -441,7 +450,6 @@ CONFIG_IDE_GD_ATA=y | |||
441 | CONFIG_BLK_DEV_IDECD=m | 450 | CONFIG_BLK_DEV_IDECD=m |
442 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | 451 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y |
443 | CONFIG_BLK_DEV_IDETAPE=m | 452 | CONFIG_BLK_DEV_IDETAPE=m |
444 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
445 | # CONFIG_IDE_TASK_IOCTL is not set | 453 | # CONFIG_IDE_TASK_IOCTL is not set |
446 | CONFIG_IDE_PROC_FS=y | 454 | CONFIG_IDE_PROC_FS=y |
447 | 455 | ||
@@ -466,6 +474,7 @@ CONFIG_IDE_PROC_FS=y | |||
466 | # CONFIG_BLK_DEV_JMICRON is not set | 474 | # CONFIG_BLK_DEV_JMICRON is not set |
467 | # CONFIG_BLK_DEV_SC1200 is not set | 475 | # CONFIG_BLK_DEV_SC1200 is not set |
468 | # CONFIG_BLK_DEV_PIIX is not set | 476 | # CONFIG_BLK_DEV_PIIX is not set |
477 | # CONFIG_BLK_DEV_IT8172 is not set | ||
469 | # CONFIG_BLK_DEV_IT8213 is not set | 478 | # CONFIG_BLK_DEV_IT8213 is not set |
470 | # CONFIG_BLK_DEV_IT821X is not set | 479 | # CONFIG_BLK_DEV_IT821X is not set |
471 | # CONFIG_BLK_DEV_NS87415 is not set | 480 | # CONFIG_BLK_DEV_NS87415 is not set |
@@ -519,6 +528,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
519 | # CONFIG_SCSI_SRP_ATTRS is not set | 528 | # CONFIG_SCSI_SRP_ATTRS is not set |
520 | CONFIG_SCSI_LOWLEVEL=y | 529 | CONFIG_SCSI_LOWLEVEL=y |
521 | # CONFIG_ISCSI_TCP is not set | 530 | # CONFIG_ISCSI_TCP is not set |
531 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
522 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 532 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
523 | # CONFIG_SCSI_3W_9XXX is not set | 533 | # CONFIG_SCSI_3W_9XXX is not set |
524 | # CONFIG_SCSI_ACARD is not set | 534 | # CONFIG_SCSI_ACARD is not set |
@@ -532,6 +542,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
532 | # CONFIG_MEGARAID_LEGACY is not set | 542 | # CONFIG_MEGARAID_LEGACY is not set |
533 | # CONFIG_MEGARAID_SAS is not set | 543 | # CONFIG_MEGARAID_SAS is not set |
534 | # CONFIG_SCSI_HPTIOP is not set | 544 | # CONFIG_SCSI_HPTIOP is not set |
545 | # CONFIG_LIBFC is not set | ||
546 | # CONFIG_FCOE is not set | ||
535 | # CONFIG_SCSI_DMX3191D is not set | 547 | # CONFIG_SCSI_DMX3191D is not set |
536 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 548 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
537 | # CONFIG_SCSI_IPS is not set | 549 | # CONFIG_SCSI_IPS is not set |
@@ -583,6 +595,7 @@ CONFIG_MII=y | |||
583 | # CONFIG_NET_VENDOR_3COM is not set | 595 | # CONFIG_NET_VENDOR_3COM is not set |
584 | # CONFIG_SMC91X is not set | 596 | # CONFIG_SMC91X is not set |
585 | # CONFIG_SMC911X is not set | 597 | # CONFIG_SMC911X is not set |
598 | # CONFIG_SMSC911X is not set | ||
586 | # CONFIG_NET_TULIP is not set | 599 | # CONFIG_NET_TULIP is not set |
587 | # CONFIG_HP100 is not set | 600 | # CONFIG_HP100 is not set |
588 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 601 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -598,7 +611,6 @@ CONFIG_NET_PCI=y | |||
598 | # CONFIG_ADAPTEC_STARFIRE is not set | 611 | # CONFIG_ADAPTEC_STARFIRE is not set |
599 | # CONFIG_B44 is not set | 612 | # CONFIG_B44 is not set |
600 | # CONFIG_FORCEDETH is not set | 613 | # CONFIG_FORCEDETH is not set |
601 | # CONFIG_EEPRO100 is not set | ||
602 | # CONFIG_E100 is not set | 614 | # CONFIG_E100 is not set |
603 | # CONFIG_FEALNX is not set | 615 | # CONFIG_FEALNX is not set |
604 | # CONFIG_NATSEMI is not set | 616 | # CONFIG_NATSEMI is not set |
@@ -608,6 +620,7 @@ CONFIG_8139CP=y | |||
608 | # CONFIG_R6040 is not set | 620 | # CONFIG_R6040 is not set |
609 | # CONFIG_SIS900 is not set | 621 | # CONFIG_SIS900 is not set |
610 | # CONFIG_EPIC100 is not set | 622 | # CONFIG_EPIC100 is not set |
623 | # CONFIG_SMSC9420 is not set | ||
611 | # CONFIG_SUNDANCE is not set | 624 | # CONFIG_SUNDANCE is not set |
612 | # CONFIG_TLAN is not set | 625 | # CONFIG_TLAN is not set |
613 | # CONFIG_VIA_RHINE is not set | 626 | # CONFIG_VIA_RHINE is not set |
@@ -636,6 +649,7 @@ CONFIG_NETDEV_1000=y | |||
636 | # CONFIG_JME is not set | 649 | # CONFIG_JME is not set |
637 | CONFIG_NETDEV_10000=y | 650 | CONFIG_NETDEV_10000=y |
638 | # CONFIG_CHELSIO_T1 is not set | 651 | # CONFIG_CHELSIO_T1 is not set |
652 | CONFIG_CHELSIO_T3_DEPENDS=y | ||
639 | # CONFIG_CHELSIO_T3 is not set | 653 | # CONFIG_CHELSIO_T3 is not set |
640 | # CONFIG_ENIC is not set | 654 | # CONFIG_ENIC is not set |
641 | # CONFIG_IXGBE is not set | 655 | # CONFIG_IXGBE is not set |
@@ -644,6 +658,7 @@ CONFIG_NETDEV_10000=y | |||
644 | # CONFIG_MYRI10GE is not set | 658 | # CONFIG_MYRI10GE is not set |
645 | # CONFIG_NETXEN_NIC is not set | 659 | # CONFIG_NETXEN_NIC is not set |
646 | # CONFIG_NIU is not set | 660 | # CONFIG_NIU is not set |
661 | # CONFIG_MLX4_EN is not set | ||
647 | # CONFIG_MLX4_CORE is not set | 662 | # CONFIG_MLX4_CORE is not set |
648 | # CONFIG_TEHUTI is not set | 663 | # CONFIG_TEHUTI is not set |
649 | # CONFIG_BNX2X is not set | 664 | # CONFIG_BNX2X is not set |
@@ -734,6 +749,7 @@ CONFIG_SERIAL_CORE=y | |||
734 | CONFIG_SERIAL_CORE_CONSOLE=y | 749 | CONFIG_SERIAL_CORE_CONSOLE=y |
735 | # CONFIG_SERIAL_JSM is not set | 750 | # CONFIG_SERIAL_JSM is not set |
736 | CONFIG_UNIX98_PTYS=y | 751 | CONFIG_UNIX98_PTYS=y |
752 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
737 | CONFIG_LEGACY_PTYS=y | 753 | CONFIG_LEGACY_PTYS=y |
738 | CONFIG_LEGACY_PTY_COUNT=256 | 754 | CONFIG_LEGACY_PTY_COUNT=256 |
739 | # CONFIG_IPMI_HANDLER is not set | 755 | # CONFIG_IPMI_HANDLER is not set |
@@ -782,11 +798,11 @@ CONFIG_SH_WDT=m | |||
782 | # | 798 | # |
783 | # CONFIG_PCIPCWATCHDOG is not set | 799 | # CONFIG_PCIPCWATCHDOG is not set |
784 | # CONFIG_WDTPCI is not set | 800 | # CONFIG_WDTPCI is not set |
801 | CONFIG_SSB_POSSIBLE=y | ||
785 | 802 | ||
786 | # | 803 | # |
787 | # Sonics Silicon Backplane | 804 | # Sonics Silicon Backplane |
788 | # | 805 | # |
789 | CONFIG_SSB_POSSIBLE=y | ||
790 | # CONFIG_SSB is not set | 806 | # CONFIG_SSB is not set |
791 | 807 | ||
792 | # | 808 | # |
@@ -796,7 +812,7 @@ CONFIG_SSB_POSSIBLE=y | |||
796 | # CONFIG_MFD_SM501 is not set | 812 | # CONFIG_MFD_SM501 is not set |
797 | # CONFIG_HTC_PASIC3 is not set | 813 | # CONFIG_HTC_PASIC3 is not set |
798 | # CONFIG_MFD_TMIO is not set | 814 | # CONFIG_MFD_TMIO is not set |
799 | # CONFIG_MFD_WM8400 is not set | 815 | # CONFIG_REGULATOR is not set |
800 | 816 | ||
801 | # | 817 | # |
802 | # Multimedia devices | 818 | # Multimedia devices |
@@ -856,9 +872,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
856 | # | 872 | # |
857 | 873 | ||
858 | # | 874 | # |
859 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 875 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
860 | # | 876 | # |
861 | # CONFIG_USB_GADGET is not set | 877 | # CONFIG_USB_GADGET is not set |
878 | # CONFIG_UWB is not set | ||
862 | # CONFIG_MMC is not set | 879 | # CONFIG_MMC is not set |
863 | # CONFIG_MEMSTICK is not set | 880 | # CONFIG_MEMSTICK is not set |
864 | # CONFIG_NEW_LEDS is not set | 881 | # CONFIG_NEW_LEDS is not set |
@@ -883,6 +900,7 @@ CONFIG_EXT3_FS_POSIX_ACL=y | |||
883 | # CONFIG_EXT3_FS_SECURITY is not set | 900 | # CONFIG_EXT3_FS_SECURITY is not set |
884 | # CONFIG_EXT4_FS is not set | 901 | # CONFIG_EXT4_FS is not set |
885 | CONFIG_JBD=y | 902 | CONFIG_JBD=y |
903 | # CONFIG_JBD_DEBUG is not set | ||
886 | CONFIG_FS_MBCACHE=y | 904 | CONFIG_FS_MBCACHE=y |
887 | # CONFIG_REISERFS_FS is not set | 905 | # CONFIG_REISERFS_FS is not set |
888 | # CONFIG_JFS_FS is not set | 906 | # CONFIG_JFS_FS is not set |
@@ -930,10 +948,7 @@ CONFIG_TMPFS=y | |||
930 | # CONFIG_HUGETLBFS is not set | 948 | # CONFIG_HUGETLBFS is not set |
931 | # CONFIG_HUGETLB_PAGE is not set | 949 | # CONFIG_HUGETLB_PAGE is not set |
932 | # CONFIG_CONFIGFS_FS is not set | 950 | # CONFIG_CONFIGFS_FS is not set |
933 | 951 | CONFIG_MISC_FILESYSTEMS=y | |
934 | # | ||
935 | # Miscellaneous filesystems | ||
936 | # | ||
937 | # CONFIG_ADFS_FS is not set | 952 | # CONFIG_ADFS_FS is not set |
938 | # CONFIG_AFFS_FS is not set | 953 | # CONFIG_AFFS_FS is not set |
939 | # CONFIG_HFS_FS is not set | 954 | # CONFIG_HFS_FS is not set |
@@ -1048,21 +1063,31 @@ CONFIG_ENABLE_MUST_CHECK=y | |||
1048 | CONFIG_FRAME_WARN=1024 | 1063 | CONFIG_FRAME_WARN=1024 |
1049 | # CONFIG_MAGIC_SYSRQ is not set | 1064 | # CONFIG_MAGIC_SYSRQ is not set |
1050 | # CONFIG_UNUSED_SYMBOLS is not set | 1065 | # CONFIG_UNUSED_SYMBOLS is not set |
1051 | # CONFIG_DEBUG_FS is not set | 1066 | CONFIG_DEBUG_FS=y |
1052 | # CONFIG_HEADERS_CHECK is not set | 1067 | # CONFIG_HEADERS_CHECK is not set |
1053 | # CONFIG_DEBUG_KERNEL is not set | 1068 | # CONFIG_DEBUG_KERNEL is not set |
1069 | CONFIG_STACKTRACE=y | ||
1054 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1070 | # CONFIG_DEBUG_BUGVERBOSE is not set |
1055 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1071 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1056 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1072 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1057 | # CONFIG_LATENCYTOP is not set | 1073 | # CONFIG_LATENCYTOP is not set |
1058 | CONFIG_NOP_TRACER=y | 1074 | CONFIG_NOP_TRACER=y |
1059 | CONFIG_HAVE_FTRACE=y | 1075 | CONFIG_HAVE_FUNCTION_TRACER=y |
1076 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
1077 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1078 | CONFIG_RING_BUFFER=y | ||
1079 | CONFIG_TRACING=y | ||
1080 | |||
1081 | # | ||
1082 | # Tracers | ||
1083 | # | ||
1060 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1084 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1061 | # CONFIG_SAMPLES is not set | 1085 | # CONFIG_SAMPLES is not set |
1086 | CONFIG_HAVE_ARCH_KGDB=y | ||
1062 | CONFIG_SH_STANDARD_BIOS=y | 1087 | CONFIG_SH_STANDARD_BIOS=y |
1063 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1088 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1064 | # CONFIG_EARLY_PRINTK is not set | 1089 | # CONFIG_EARLY_PRINTK is not set |
1065 | # CONFIG_SH_KGDB is not set | 1090 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1066 | 1091 | ||
1067 | # | 1092 | # |
1068 | # Security options | 1093 | # Security options |
@@ -1078,11 +1103,15 @@ CONFIG_CRYPTO=y | |||
1078 | # | 1103 | # |
1079 | # CONFIG_CRYPTO_FIPS is not set | 1104 | # CONFIG_CRYPTO_FIPS is not set |
1080 | CONFIG_CRYPTO_ALGAPI=y | 1105 | CONFIG_CRYPTO_ALGAPI=y |
1081 | CONFIG_CRYPTO_AEAD=y | 1106 | CONFIG_CRYPTO_ALGAPI2=y |
1107 | CONFIG_CRYPTO_AEAD2=y | ||
1082 | CONFIG_CRYPTO_BLKCIPHER=y | 1108 | CONFIG_CRYPTO_BLKCIPHER=y |
1109 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1083 | CONFIG_CRYPTO_HASH=y | 1110 | CONFIG_CRYPTO_HASH=y |
1084 | CONFIG_CRYPTO_RNG=y | 1111 | CONFIG_CRYPTO_HASH2=y |
1112 | CONFIG_CRYPTO_RNG2=y | ||
1085 | CONFIG_CRYPTO_MANAGER=y | 1113 | CONFIG_CRYPTO_MANAGER=y |
1114 | CONFIG_CRYPTO_MANAGER2=y | ||
1086 | # CONFIG_CRYPTO_GF128MUL is not set | 1115 | # CONFIG_CRYPTO_GF128MUL is not set |
1087 | # CONFIG_CRYPTO_NULL is not set | 1116 | # CONFIG_CRYPTO_NULL is not set |
1088 | # CONFIG_CRYPTO_CRYPTD is not set | 1117 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1166,6 +1195,7 @@ CONFIG_CRYPTO_HW=y | |||
1166 | # Library routines | 1195 | # Library routines |
1167 | # | 1196 | # |
1168 | CONFIG_BITREVERSE=y | 1197 | CONFIG_BITREVERSE=y |
1198 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1169 | CONFIG_CRC_CCITT=y | 1199 | CONFIG_CRC_CCITT=y |
1170 | # CONFIG_CRC16 is not set | 1200 | # CONFIG_CRC16 is not set |
1171 | # CONFIG_CRC_T10DIF is not set | 1201 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/sh7710voipgw_defconfig b/arch/sh/configs/sh7710voipgw_defconfig index 9a768b28adcb..1b869f452ad1 100644 --- a/arch/sh/configs/sh7710voipgw_defconfig +++ b/arch/sh/configs/sh7710voipgw_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:35:18 2008 | 4 | # Fri Jan 9 18:00:31 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -74,12 +76,10 @@ CONFIG_EVENTFD=y | |||
74 | # CONFIG_SHMEM is not set | 76 | # CONFIG_SHMEM is not set |
75 | CONFIG_AIO=y | 77 | CONFIG_AIO=y |
76 | CONFIG_VM_EVENT_COUNTERS=y | 78 | CONFIG_VM_EVENT_COUNTERS=y |
77 | CONFIG_PCI_QUIRKS=y | ||
78 | CONFIG_SLAB=y | 79 | CONFIG_SLAB=y |
79 | # CONFIG_SLUB is not set | 80 | # CONFIG_SLUB is not set |
80 | # CONFIG_SLOB is not set | 81 | # CONFIG_SLOB is not set |
81 | # CONFIG_PROFILING is not set | 82 | # CONFIG_PROFILING is not set |
82 | # CONFIG_MARKERS is not set | ||
83 | CONFIG_HAVE_OPROFILE=y | 83 | CONFIG_HAVE_OPROFILE=y |
84 | # CONFIG_KPROBES is not set | 84 | # CONFIG_KPROBES is not set |
85 | CONFIG_HAVE_IOREMAP_PROT=y | 85 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -89,7 +89,6 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y | |||
89 | CONFIG_HAVE_CLK=y | 89 | CONFIG_HAVE_CLK=y |
90 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 90 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
91 | CONFIG_SLABINFO=y | 91 | CONFIG_SLABINFO=y |
92 | CONFIG_TINY_SHMEM=y | ||
93 | CONFIG_BASE_SMALL=0 | 92 | CONFIG_BASE_SMALL=0 |
94 | CONFIG_MODULES=y | 93 | CONFIG_MODULES=y |
95 | # CONFIG_MODULE_FORCE_LOAD is not set | 94 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -97,11 +96,9 @@ CONFIG_MODULE_UNLOAD=y | |||
97 | CONFIG_MODULE_FORCE_UNLOAD=y | 96 | CONFIG_MODULE_FORCE_UNLOAD=y |
98 | # CONFIG_MODVERSIONS is not set | 97 | # CONFIG_MODVERSIONS is not set |
99 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 98 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
100 | CONFIG_KMOD=y | ||
101 | CONFIG_BLOCK=y | 99 | CONFIG_BLOCK=y |
102 | # CONFIG_LBD is not set | 100 | # CONFIG_LBD is not set |
103 | # CONFIG_BLK_DEV_IO_TRACE is not set | 101 | # CONFIG_BLK_DEV_IO_TRACE is not set |
104 | # CONFIG_LSF is not set | ||
105 | # CONFIG_BLK_DEV_BSG is not set | 102 | # CONFIG_BLK_DEV_BSG is not set |
106 | # CONFIG_BLK_DEV_INTEGRITY is not set | 103 | # CONFIG_BLK_DEV_INTEGRITY is not set |
107 | 104 | ||
@@ -118,6 +115,10 @@ CONFIG_DEFAULT_DEADLINE=y | |||
118 | # CONFIG_DEFAULT_NOOP is not set | 115 | # CONFIG_DEFAULT_NOOP is not set |
119 | CONFIG_DEFAULT_IOSCHED="deadline" | 116 | CONFIG_DEFAULT_IOSCHED="deadline" |
120 | CONFIG_CLASSIC_RCU=y | 117 | CONFIG_CLASSIC_RCU=y |
118 | # CONFIG_TREE_RCU is not set | ||
119 | # CONFIG_PREEMPT_RCU is not set | ||
120 | # CONFIG_TREE_RCU_TRACE is not set | ||
121 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
121 | # CONFIG_FREEZER is not set | 122 | # CONFIG_FREEZER is not set |
122 | 123 | ||
123 | # | 124 | # |
@@ -125,6 +126,7 @@ CONFIG_CLASSIC_RCU=y | |||
125 | # | 126 | # |
126 | CONFIG_CPU_SH3=y | 127 | CONFIG_CPU_SH3=y |
127 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 128 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
129 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
128 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
129 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 131 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
130 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 132 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -188,7 +190,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
188 | CONFIG_SPARSEMEM_STATIC=y | 190 | CONFIG_SPARSEMEM_STATIC=y |
189 | CONFIG_PAGEFLAGS_EXTENDED=y | 191 | CONFIG_PAGEFLAGS_EXTENDED=y |
190 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 192 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
191 | # CONFIG_RESOURCES_64BIT is not set | ||
192 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 193 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
193 | CONFIG_ZONE_DMA_FLAG=0 | 194 | CONFIG_ZONE_DMA_FLAG=0 |
194 | CONFIG_NR_QUICK=2 | 195 | CONFIG_NR_QUICK=2 |
@@ -287,11 +288,18 @@ CONFIG_BINFMT_ELF=y | |||
287 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 288 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
288 | # CONFIG_HAVE_AOUT is not set | 289 | # CONFIG_HAVE_AOUT is not set |
289 | # CONFIG_BINFMT_MISC is not set | 290 | # CONFIG_BINFMT_MISC is not set |
291 | |||
292 | # | ||
293 | # Power management options (EXPERIMENTAL) | ||
294 | # | ||
295 | # CONFIG_PM is not set | ||
296 | # CONFIG_CPU_IDLE is not set | ||
290 | CONFIG_NET=y | 297 | CONFIG_NET=y |
291 | 298 | ||
292 | # | 299 | # |
293 | # Networking options | 300 | # Networking options |
294 | # | 301 | # |
302 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
295 | CONFIG_PACKET=y | 303 | CONFIG_PACKET=y |
296 | # CONFIG_PACKET_MMAP is not set | 304 | # CONFIG_PACKET_MMAP is not set |
297 | CONFIG_UNIX=y | 305 | CONFIG_UNIX=y |
@@ -378,6 +386,7 @@ CONFIG_NET_SCH_CBQ=y | |||
378 | # CONFIG_NET_SCH_GRED is not set | 386 | # CONFIG_NET_SCH_GRED is not set |
379 | # CONFIG_NET_SCH_DSMARK is not set | 387 | # CONFIG_NET_SCH_DSMARK is not set |
380 | # CONFIG_NET_SCH_NETEM is not set | 388 | # CONFIG_NET_SCH_NETEM is not set |
389 | # CONFIG_NET_SCH_DRR is not set | ||
381 | 390 | ||
382 | # | 391 | # |
383 | # Classification | 392 | # Classification |
@@ -398,6 +407,7 @@ CONFIG_NET_CLS_U32=y | |||
398 | # CONFIG_NET_CLS_ACT is not set | 407 | # CONFIG_NET_CLS_ACT is not set |
399 | # CONFIG_NET_CLS_IND is not set | 408 | # CONFIG_NET_CLS_IND is not set |
400 | CONFIG_NET_SCH_FIFO=y | 409 | CONFIG_NET_SCH_FIFO=y |
410 | # CONFIG_DCB is not set | ||
401 | 411 | ||
402 | # | 412 | # |
403 | # Network testing | 413 | # Network testing |
@@ -413,8 +423,8 @@ CONFIG_WIRELESS=y | |||
413 | # CONFIG_CFG80211 is not set | 423 | # CONFIG_CFG80211 is not set |
414 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 424 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
415 | # CONFIG_WIRELESS_EXT is not set | 425 | # CONFIG_WIRELESS_EXT is not set |
426 | # CONFIG_LIB80211 is not set | ||
416 | # CONFIG_MAC80211 is not set | 427 | # CONFIG_MAC80211 is not set |
417 | # CONFIG_IEEE80211 is not set | ||
418 | # CONFIG_RFKILL is not set | 428 | # CONFIG_RFKILL is not set |
419 | # CONFIG_NET_9P is not set | 429 | # CONFIG_NET_9P is not set |
420 | 430 | ||
@@ -519,6 +529,7 @@ CONFIG_BLK_DEV=y | |||
519 | CONFIG_MISC_DEVICES=y | 529 | CONFIG_MISC_DEVICES=y |
520 | # CONFIG_EEPROM_93CX6 is not set | 530 | # CONFIG_EEPROM_93CX6 is not set |
521 | # CONFIG_ENCLOSURE_SERVICES is not set | 531 | # CONFIG_ENCLOSURE_SERVICES is not set |
532 | # CONFIG_C2PORT is not set | ||
522 | CONFIG_HAVE_IDE=y | 533 | CONFIG_HAVE_IDE=y |
523 | # CONFIG_IDE is not set | 534 | # CONFIG_IDE is not set |
524 | 535 | ||
@@ -546,6 +557,7 @@ CONFIG_NET_ETHERNET=y | |||
546 | # CONFIG_SH_ETH is not set | 557 | # CONFIG_SH_ETH is not set |
547 | # CONFIG_SMC91X is not set | 558 | # CONFIG_SMC91X is not set |
548 | # CONFIG_SMC911X is not set | 559 | # CONFIG_SMC911X is not set |
560 | # CONFIG_SMSC911X is not set | ||
549 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 561 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
550 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 562 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
551 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 563 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -638,11 +650,11 @@ CONFIG_HW_RANDOM=y | |||
638 | # CONFIG_HWMON is not set | 650 | # CONFIG_HWMON is not set |
639 | CONFIG_THERMAL=y | 651 | CONFIG_THERMAL=y |
640 | # CONFIG_WATCHDOG is not set | 652 | # CONFIG_WATCHDOG is not set |
653 | CONFIG_SSB_POSSIBLE=y | ||
641 | 654 | ||
642 | # | 655 | # |
643 | # Sonics Silicon Backplane | 656 | # Sonics Silicon Backplane |
644 | # | 657 | # |
645 | CONFIG_SSB_POSSIBLE=y | ||
646 | # CONFIG_SSB is not set | 658 | # CONFIG_SSB is not set |
647 | 659 | ||
648 | # | 660 | # |
@@ -652,7 +664,7 @@ CONFIG_SSB_POSSIBLE=y | |||
652 | # CONFIG_MFD_SM501 is not set | 664 | # CONFIG_MFD_SM501 is not set |
653 | # CONFIG_HTC_PASIC3 is not set | 665 | # CONFIG_HTC_PASIC3 is not set |
654 | # CONFIG_MFD_TMIO is not set | 666 | # CONFIG_MFD_TMIO is not set |
655 | # CONFIG_MFD_WM8400 is not set | 667 | # CONFIG_REGULATOR is not set |
656 | 668 | ||
657 | # | 669 | # |
658 | # Multimedia devices | 670 | # Multimedia devices |
@@ -706,7 +718,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
706 | # | 718 | # |
707 | 719 | ||
708 | # | 720 | # |
709 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 721 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
710 | # | 722 | # |
711 | # CONFIG_USB_GADGET is not set | 723 | # CONFIG_USB_GADGET is not set |
712 | # CONFIG_MMC is not set | 724 | # CONFIG_MMC is not set |
@@ -763,10 +775,7 @@ CONFIG_TMPFS=y | |||
763 | # CONFIG_HUGETLBFS is not set | 775 | # CONFIG_HUGETLBFS is not set |
764 | # CONFIG_HUGETLB_PAGE is not set | 776 | # CONFIG_HUGETLB_PAGE is not set |
765 | # CONFIG_CONFIGFS_FS is not set | 777 | # CONFIG_CONFIGFS_FS is not set |
766 | 778 | CONFIG_MISC_FILESYSTEMS=y | |
767 | # | ||
768 | # Miscellaneous filesystems | ||
769 | # | ||
770 | # CONFIG_ADFS_FS is not set | 779 | # CONFIG_ADFS_FS is not set |
771 | # CONFIG_AFFS_FS is not set | 780 | # CONFIG_AFFS_FS is not set |
772 | # CONFIG_HFS_FS is not set | 781 | # CONFIG_HFS_FS is not set |
@@ -828,13 +837,19 @@ CONFIG_DEBUG_FS=y | |||
828 | # CONFIG_DEBUG_MEMORY_INIT is not set | 837 | # CONFIG_DEBUG_MEMORY_INIT is not set |
829 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 838 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
830 | # CONFIG_LATENCYTOP is not set | 839 | # CONFIG_LATENCYTOP is not set |
831 | CONFIG_NOP_TRACER=y | 840 | CONFIG_HAVE_FUNCTION_TRACER=y |
832 | CONFIG_HAVE_FTRACE=y | 841 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
842 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
843 | |||
844 | # | ||
845 | # Tracers | ||
846 | # | ||
833 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 847 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
834 | # CONFIG_SAMPLES is not set | 848 | # CONFIG_SAMPLES is not set |
849 | CONFIG_HAVE_ARCH_KGDB=y | ||
835 | # CONFIG_SH_STANDARD_BIOS is not set | 850 | # CONFIG_SH_STANDARD_BIOS is not set |
836 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 851 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
837 | # CONFIG_SH_KGDB is not set | 852 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
838 | 853 | ||
839 | # | 854 | # |
840 | # Security options | 855 | # Security options |
@@ -850,6 +865,7 @@ CONFIG_CRYPTO=y | |||
850 | # | 865 | # |
851 | # CONFIG_CRYPTO_FIPS is not set | 866 | # CONFIG_CRYPTO_FIPS is not set |
852 | # CONFIG_CRYPTO_MANAGER is not set | 867 | # CONFIG_CRYPTO_MANAGER is not set |
868 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
853 | # CONFIG_CRYPTO_GF128MUL is not set | 869 | # CONFIG_CRYPTO_GF128MUL is not set |
854 | # CONFIG_CRYPTO_NULL is not set | 870 | # CONFIG_CRYPTO_NULL is not set |
855 | # CONFIG_CRYPTO_CRYPTD is not set | 871 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -932,6 +948,7 @@ CONFIG_CRYPTO_HW=y | |||
932 | # Library routines | 948 | # Library routines |
933 | # | 949 | # |
934 | CONFIG_BITREVERSE=y | 950 | CONFIG_BITREVERSE=y |
951 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
935 | # CONFIG_CRC_CCITT is not set | 952 | # CONFIG_CRC_CCITT is not set |
936 | # CONFIG_CRC16 is not set | 953 | # CONFIG_CRC16 is not set |
937 | # CONFIG_CRC_T10DIF is not set | 954 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/sh7763rdp_defconfig b/arch/sh/configs/sh7763rdp_defconfig index 6a77f691fb87..ba33aca75af6 100644 --- a/arch/sh/configs/sh7763rdp_defconfig +++ b/arch/sh/configs/sh7763rdp_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:37:12 2008 | 4 | # Fri Jan 9 18:02:28 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -79,11 +81,11 @@ CONFIG_EVENTFD=y | |||
79 | CONFIG_SHMEM=y | 81 | CONFIG_SHMEM=y |
80 | CONFIG_AIO=y | 82 | CONFIG_AIO=y |
81 | CONFIG_VM_EVENT_COUNTERS=y | 83 | CONFIG_VM_EVENT_COUNTERS=y |
82 | CONFIG_PCI_QUIRKS=y | ||
83 | CONFIG_SLAB=y | 84 | CONFIG_SLAB=y |
84 | # CONFIG_SLUB is not set | 85 | # CONFIG_SLUB is not set |
85 | # CONFIG_SLOB is not set | 86 | # CONFIG_SLOB is not set |
86 | CONFIG_PROFILING=y | 87 | CONFIG_PROFILING=y |
88 | CONFIG_TRACEPOINTS=y | ||
87 | # CONFIG_MARKERS is not set | 89 | # CONFIG_MARKERS is not set |
88 | CONFIG_OPROFILE=y | 90 | CONFIG_OPROFILE=y |
89 | CONFIG_HAVE_OPROFILE=y | 91 | CONFIG_HAVE_OPROFILE=y |
@@ -96,18 +98,15 @@ CONFIG_HAVE_CLK=y | |||
96 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 98 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
97 | CONFIG_SLABINFO=y | 99 | CONFIG_SLABINFO=y |
98 | CONFIG_RT_MUTEXES=y | 100 | CONFIG_RT_MUTEXES=y |
99 | # CONFIG_TINY_SHMEM is not set | ||
100 | CONFIG_BASE_SMALL=0 | 101 | CONFIG_BASE_SMALL=0 |
101 | CONFIG_MODULES=y | 102 | CONFIG_MODULES=y |
102 | # CONFIG_MODULE_FORCE_LOAD is not set | 103 | # CONFIG_MODULE_FORCE_LOAD is not set |
103 | # CONFIG_MODULE_UNLOAD is not set | 104 | # CONFIG_MODULE_UNLOAD is not set |
104 | # CONFIG_MODVERSIONS is not set | 105 | # CONFIG_MODVERSIONS is not set |
105 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 106 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
106 | CONFIG_KMOD=y | ||
107 | CONFIG_BLOCK=y | 107 | CONFIG_BLOCK=y |
108 | # CONFIG_LBD is not set | 108 | # CONFIG_LBD is not set |
109 | # CONFIG_BLK_DEV_IO_TRACE is not set | 109 | # CONFIG_BLK_DEV_IO_TRACE is not set |
110 | # CONFIG_LSF is not set | ||
111 | # CONFIG_BLK_DEV_BSG is not set | 110 | # CONFIG_BLK_DEV_BSG is not set |
112 | # CONFIG_BLK_DEV_INTEGRITY is not set | 111 | # CONFIG_BLK_DEV_INTEGRITY is not set |
113 | 112 | ||
@@ -124,6 +123,10 @@ CONFIG_DEFAULT_AS=y | |||
124 | # CONFIG_DEFAULT_NOOP is not set | 123 | # CONFIG_DEFAULT_NOOP is not set |
125 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 124 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
126 | CONFIG_CLASSIC_RCU=y | 125 | CONFIG_CLASSIC_RCU=y |
126 | # CONFIG_TREE_RCU is not set | ||
127 | # CONFIG_PREEMPT_RCU is not set | ||
128 | # CONFIG_TREE_RCU_TRACE is not set | ||
129 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
127 | # CONFIG_FREEZER is not set | 130 | # CONFIG_FREEZER is not set |
128 | 131 | ||
129 | # | 132 | # |
@@ -132,6 +135,7 @@ CONFIG_CLASSIC_RCU=y | |||
132 | CONFIG_CPU_SH4=y | 135 | CONFIG_CPU_SH4=y |
133 | CONFIG_CPU_SH4A=y | 136 | CONFIG_CPU_SH4A=y |
134 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 137 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
138 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
135 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 139 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
136 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 140 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
137 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 141 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -199,7 +203,6 @@ CONFIG_SPARSEMEM_STATIC=y | |||
199 | CONFIG_PAGEFLAGS_EXTENDED=y | 203 | CONFIG_PAGEFLAGS_EXTENDED=y |
200 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 204 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
201 | CONFIG_MIGRATION=y | 205 | CONFIG_MIGRATION=y |
202 | # CONFIG_RESOURCES_64BIT is not set | ||
203 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 206 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
204 | CONFIG_ZONE_DMA_FLAG=0 | 207 | CONFIG_ZONE_DMA_FLAG=0 |
205 | CONFIG_NR_QUICK=2 | 208 | CONFIG_NR_QUICK=2 |
@@ -297,11 +300,19 @@ CONFIG_BINFMT_ELF=y | |||
297 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 300 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
298 | # CONFIG_HAVE_AOUT is not set | 301 | # CONFIG_HAVE_AOUT is not set |
299 | # CONFIG_BINFMT_MISC is not set | 302 | # CONFIG_BINFMT_MISC is not set |
303 | |||
304 | # | ||
305 | # Power management options (EXPERIMENTAL) | ||
306 | # | ||
307 | # CONFIG_PM is not set | ||
308 | # CONFIG_CPU_IDLE is not set | ||
300 | CONFIG_NET=y | 309 | CONFIG_NET=y |
301 | 310 | ||
302 | # | 311 | # |
303 | # Networking options | 312 | # Networking options |
304 | # | 313 | # |
314 | # CONFIG_NET_NS is not set | ||
315 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
305 | CONFIG_PACKET=y | 316 | CONFIG_PACKET=y |
306 | # CONFIG_PACKET_MMAP is not set | 317 | # CONFIG_PACKET_MMAP is not set |
307 | CONFIG_UNIX=y | 318 | CONFIG_UNIX=y |
@@ -357,6 +368,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
357 | # CONFIG_ECONET is not set | 368 | # CONFIG_ECONET is not set |
358 | # CONFIG_WAN_ROUTER is not set | 369 | # CONFIG_WAN_ROUTER is not set |
359 | # CONFIG_NET_SCHED is not set | 370 | # CONFIG_NET_SCHED is not set |
371 | # CONFIG_DCB is not set | ||
360 | 372 | ||
361 | # | 373 | # |
362 | # Network testing | 374 | # Network testing |
@@ -373,8 +385,8 @@ CONFIG_WIRELESS=y | |||
373 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 385 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
374 | CONFIG_WIRELESS_EXT=y | 386 | CONFIG_WIRELESS_EXT=y |
375 | CONFIG_WIRELESS_EXT_SYSFS=y | 387 | CONFIG_WIRELESS_EXT_SYSFS=y |
388 | # CONFIG_LIB80211 is not set | ||
376 | # CONFIG_MAC80211 is not set | 389 | # CONFIG_MAC80211 is not set |
377 | # CONFIG_IEEE80211 is not set | ||
378 | # CONFIG_RFKILL is not set | 390 | # CONFIG_RFKILL is not set |
379 | # CONFIG_NET_9P is not set | 391 | # CONFIG_NET_9P is not set |
380 | 392 | ||
@@ -529,6 +541,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
529 | # CONFIG_SCSI_SRP_ATTRS is not set | 541 | # CONFIG_SCSI_SRP_ATTRS is not set |
530 | CONFIG_SCSI_LOWLEVEL=y | 542 | CONFIG_SCSI_LOWLEVEL=y |
531 | # CONFIG_ISCSI_TCP is not set | 543 | # CONFIG_ISCSI_TCP is not set |
544 | # CONFIG_LIBFC is not set | ||
532 | # CONFIG_SCSI_DEBUG is not set | 545 | # CONFIG_SCSI_DEBUG is not set |
533 | # CONFIG_SCSI_DH is not set | 546 | # CONFIG_SCSI_DH is not set |
534 | # CONFIG_ATA is not set | 547 | # CONFIG_ATA is not set |
@@ -555,6 +568,9 @@ CONFIG_PHYLIB=y | |||
555 | # CONFIG_BROADCOM_PHY is not set | 568 | # CONFIG_BROADCOM_PHY is not set |
556 | # CONFIG_ICPLUS_PHY is not set | 569 | # CONFIG_ICPLUS_PHY is not set |
557 | # CONFIG_REALTEK_PHY is not set | 570 | # CONFIG_REALTEK_PHY is not set |
571 | # CONFIG_NATIONAL_PHY is not set | ||
572 | # CONFIG_STE10XP is not set | ||
573 | # CONFIG_LSI_ET1011C_PHY is not set | ||
558 | # CONFIG_FIXED_PHY is not set | 574 | # CONFIG_FIXED_PHY is not set |
559 | CONFIG_MDIO_BITBANG=y | 575 | CONFIG_MDIO_BITBANG=y |
560 | CONFIG_NET_ETHERNET=y | 576 | CONFIG_NET_ETHERNET=y |
@@ -564,6 +580,7 @@ CONFIG_MII=y | |||
564 | CONFIG_SH_ETH=y | 580 | CONFIG_SH_ETH=y |
565 | # CONFIG_SMC91X is not set | 581 | # CONFIG_SMC91X is not set |
566 | # CONFIG_SMC911X is not set | 582 | # CONFIG_SMC911X is not set |
583 | # CONFIG_SMSC911X is not set | ||
567 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 584 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
568 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 585 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
569 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 586 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -655,6 +672,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
655 | CONFIG_SERIAL_CORE=y | 672 | CONFIG_SERIAL_CORE=y |
656 | CONFIG_SERIAL_CORE_CONSOLE=y | 673 | CONFIG_SERIAL_CORE_CONSOLE=y |
657 | CONFIG_UNIX98_PTYS=y | 674 | CONFIG_UNIX98_PTYS=y |
675 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
658 | CONFIG_LEGACY_PTYS=y | 676 | CONFIG_LEGACY_PTYS=y |
659 | CONFIG_LEGACY_PTY_COUNT=256 | 677 | CONFIG_LEGACY_PTY_COUNT=256 |
660 | # CONFIG_IPMI_HANDLER is not set | 678 | # CONFIG_IPMI_HANDLER is not set |
@@ -670,11 +688,11 @@ CONFIG_HW_RANDOM=y | |||
670 | # CONFIG_THERMAL is not set | 688 | # CONFIG_THERMAL is not set |
671 | # CONFIG_THERMAL_HWMON is not set | 689 | # CONFIG_THERMAL_HWMON is not set |
672 | # CONFIG_WATCHDOG is not set | 690 | # CONFIG_WATCHDOG is not set |
691 | CONFIG_SSB_POSSIBLE=y | ||
673 | 692 | ||
674 | # | 693 | # |
675 | # Sonics Silicon Backplane | 694 | # Sonics Silicon Backplane |
676 | # | 695 | # |
677 | CONFIG_SSB_POSSIBLE=y | ||
678 | # CONFIG_SSB is not set | 696 | # CONFIG_SSB is not set |
679 | 697 | ||
680 | # | 698 | # |
@@ -684,7 +702,7 @@ CONFIG_SSB_POSSIBLE=y | |||
684 | # CONFIG_MFD_SM501 is not set | 702 | # CONFIG_MFD_SM501 is not set |
685 | # CONFIG_HTC_PASIC3 is not set | 703 | # CONFIG_HTC_PASIC3 is not set |
686 | # CONFIG_MFD_TMIO is not set | 704 | # CONFIG_MFD_TMIO is not set |
687 | # CONFIG_MFD_WM8400 is not set | 705 | # CONFIG_REGULATOR is not set |
688 | 706 | ||
689 | # | 707 | # |
690 | # Multimedia devices | 708 | # Multimedia devices |
@@ -737,6 +755,7 @@ CONFIG_FB_BOTH_ENDIAN=y | |||
737 | CONFIG_FB_SH7760=y | 755 | CONFIG_FB_SH7760=y |
738 | # CONFIG_FB_VIRTUAL is not set | 756 | # CONFIG_FB_VIRTUAL is not set |
739 | # CONFIG_FB_METRONOME is not set | 757 | # CONFIG_FB_METRONOME is not set |
758 | # CONFIG_FB_MB862XX is not set | ||
740 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 759 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
741 | 760 | ||
742 | # | 761 | # |
@@ -781,19 +800,21 @@ CONFIG_USB_DEVICE_CLASS=y | |||
781 | # CONFIG_USB_OTG_WHITELIST is not set | 800 | # CONFIG_USB_OTG_WHITELIST is not set |
782 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 801 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
783 | CONFIG_USB_MON=y | 802 | CONFIG_USB_MON=y |
803 | # CONFIG_USB_WUSB is not set | ||
804 | # CONFIG_USB_WUSB_CBAF is not set | ||
784 | 805 | ||
785 | # | 806 | # |
786 | # USB Host Controller Drivers | 807 | # USB Host Controller Drivers |
787 | # | 808 | # |
788 | # CONFIG_USB_C67X00_HCD is not set | 809 | # CONFIG_USB_C67X00_HCD is not set |
789 | # CONFIG_USB_ISP116X_HCD is not set | 810 | # CONFIG_USB_ISP116X_HCD is not set |
790 | # CONFIG_USB_ISP1760_HCD is not set | ||
791 | CONFIG_USB_OHCI_HCD=y | 811 | CONFIG_USB_OHCI_HCD=y |
792 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 812 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
793 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | 813 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set |
794 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 814 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
795 | # CONFIG_USB_SL811_HCD is not set | 815 | # CONFIG_USB_SL811_HCD is not set |
796 | # CONFIG_USB_R8A66597_HCD is not set | 816 | # CONFIG_USB_R8A66597_HCD is not set |
817 | # CONFIG_USB_HWA_HCD is not set | ||
797 | 818 | ||
798 | # | 819 | # |
799 | # USB Device Class drivers | 820 | # USB Device Class drivers |
@@ -804,11 +825,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
804 | # CONFIG_USB_TMC is not set | 825 | # CONFIG_USB_TMC is not set |
805 | 826 | ||
806 | # | 827 | # |
807 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 828 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
808 | # | 829 | # |
809 | 830 | ||
810 | # | 831 | # |
811 | # may also be needed; see USB_STORAGE Help for more information | 832 | # see USB_STORAGE Help for more information |
812 | # | 833 | # |
813 | CONFIG_USB_STORAGE=y | 834 | CONFIG_USB_STORAGE=y |
814 | # CONFIG_USB_STORAGE_DEBUG is not set | 835 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -897,6 +918,7 @@ CONFIG_EXT3_FS_XATTR=y | |||
897 | # CONFIG_EXT3_FS_SECURITY is not set | 918 | # CONFIG_EXT3_FS_SECURITY is not set |
898 | # CONFIG_EXT4_FS is not set | 919 | # CONFIG_EXT4_FS is not set |
899 | CONFIG_JBD=y | 920 | CONFIG_JBD=y |
921 | # CONFIG_JBD_DEBUG is not set | ||
900 | CONFIG_FS_MBCACHE=y | 922 | CONFIG_FS_MBCACHE=y |
901 | # CONFIG_REISERFS_FS is not set | 923 | # CONFIG_REISERFS_FS is not set |
902 | # CONFIG_JFS_FS is not set | 924 | # CONFIG_JFS_FS is not set |
@@ -942,10 +964,7 @@ CONFIG_TMPFS_POSIX_ACL=y | |||
942 | # CONFIG_HUGETLBFS is not set | 964 | # CONFIG_HUGETLBFS is not set |
943 | # CONFIG_HUGETLB_PAGE is not set | 965 | # CONFIG_HUGETLB_PAGE is not set |
944 | # CONFIG_CONFIGFS_FS is not set | 966 | # CONFIG_CONFIGFS_FS is not set |
945 | 967 | CONFIG_MISC_FILESYSTEMS=y | |
946 | # | ||
947 | # Miscellaneous filesystems | ||
948 | # | ||
949 | # CONFIG_ADFS_FS is not set | 968 | # CONFIG_ADFS_FS is not set |
950 | # CONFIG_AFFS_FS is not set | 969 | # CONFIG_AFFS_FS is not set |
951 | # CONFIG_HFS_FS is not set | 970 | # CONFIG_HFS_FS is not set |
@@ -1038,20 +1057,30 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
1038 | CONFIG_FRAME_WARN=1024 | 1057 | CONFIG_FRAME_WARN=1024 |
1039 | # CONFIG_MAGIC_SYSRQ is not set | 1058 | # CONFIG_MAGIC_SYSRQ is not set |
1040 | # CONFIG_UNUSED_SYMBOLS is not set | 1059 | # CONFIG_UNUSED_SYMBOLS is not set |
1041 | # CONFIG_DEBUG_FS is not set | 1060 | CONFIG_DEBUG_FS=y |
1042 | # CONFIG_HEADERS_CHECK is not set | 1061 | # CONFIG_HEADERS_CHECK is not set |
1043 | # CONFIG_DEBUG_KERNEL is not set | 1062 | # CONFIG_DEBUG_KERNEL is not set |
1063 | CONFIG_STACKTRACE=y | ||
1044 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1064 | # CONFIG_DEBUG_BUGVERBOSE is not set |
1045 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1065 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1046 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1066 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1047 | # CONFIG_LATENCYTOP is not set | 1067 | # CONFIG_LATENCYTOP is not set |
1048 | CONFIG_NOP_TRACER=y | 1068 | CONFIG_NOP_TRACER=y |
1049 | CONFIG_HAVE_FTRACE=y | 1069 | CONFIG_HAVE_FUNCTION_TRACER=y |
1070 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
1071 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1072 | CONFIG_RING_BUFFER=y | ||
1073 | CONFIG_TRACING=y | ||
1074 | |||
1075 | # | ||
1076 | # Tracers | ||
1077 | # | ||
1050 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1078 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1051 | # CONFIG_SAMPLES is not set | 1079 | # CONFIG_SAMPLES is not set |
1080 | CONFIG_HAVE_ARCH_KGDB=y | ||
1052 | # CONFIG_SH_STANDARD_BIOS is not set | 1081 | # CONFIG_SH_STANDARD_BIOS is not set |
1053 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1082 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1054 | # CONFIG_SH_KGDB is not set | 1083 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1055 | 1084 | ||
1056 | # | 1085 | # |
1057 | # Security options | 1086 | # Security options |
@@ -1067,6 +1096,7 @@ CONFIG_CRYPTO=y | |||
1067 | # | 1096 | # |
1068 | # CONFIG_CRYPTO_FIPS is not set | 1097 | # CONFIG_CRYPTO_FIPS is not set |
1069 | # CONFIG_CRYPTO_MANAGER is not set | 1098 | # CONFIG_CRYPTO_MANAGER is not set |
1099 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1070 | # CONFIG_CRYPTO_GF128MUL is not set | 1100 | # CONFIG_CRYPTO_GF128MUL is not set |
1071 | # CONFIG_CRYPTO_NULL is not set | 1101 | # CONFIG_CRYPTO_NULL is not set |
1072 | # CONFIG_CRYPTO_CRYPTD is not set | 1102 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1149,6 +1179,7 @@ CONFIG_CRYPTO_HW=y | |||
1149 | # Library routines | 1179 | # Library routines |
1150 | # | 1180 | # |
1151 | CONFIG_BITREVERSE=y | 1181 | CONFIG_BITREVERSE=y |
1182 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1152 | # CONFIG_CRC_CCITT is not set | 1183 | # CONFIG_CRC_CCITT is not set |
1153 | # CONFIG_CRC16 is not set | 1184 | # CONFIG_CRC16 is not set |
1154 | CONFIG_CRC_T10DIF=y | 1185 | CONFIG_CRC_T10DIF=y |
diff --git a/arch/sh/configs/sh7785lcr_defconfig b/arch/sh/configs/sh7785lcr_defconfig index 07e33c285b93..1d63628df6f6 100644 --- a/arch/sh/configs/sh7785lcr_defconfig +++ b/arch/sh/configs/sh7785lcr_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:49:23 2008 | 4 | # Fri Jan 9 18:05:18 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_NUMA=y | 21 | CONFIG_SYS_SUPPORTS_NUMA=y |
20 | CONFIG_SYS_SUPPORTS_PCI=y | 22 | CONFIG_SYS_SUPPORTS_PCI=y |
21 | CONFIG_STACKTRACE_SUPPORT=y | 23 | CONFIG_STACKTRACE_SUPPORT=y |
@@ -86,7 +88,6 @@ CONFIG_SLAB=y | |||
86 | # CONFIG_SLUB is not set | 88 | # CONFIG_SLUB is not set |
87 | # CONFIG_SLOB is not set | 89 | # CONFIG_SLOB is not set |
88 | CONFIG_PROFILING=y | 90 | CONFIG_PROFILING=y |
89 | # CONFIG_MARKERS is not set | ||
90 | # CONFIG_OPROFILE is not set | 91 | # CONFIG_OPROFILE is not set |
91 | CONFIG_HAVE_OPROFILE=y | 92 | CONFIG_HAVE_OPROFILE=y |
92 | # CONFIG_KPROBES is not set | 93 | # CONFIG_KPROBES is not set |
@@ -98,7 +99,6 @@ CONFIG_HAVE_CLK=y | |||
98 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 99 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
99 | CONFIG_SLABINFO=y | 100 | CONFIG_SLABINFO=y |
100 | CONFIG_RT_MUTEXES=y | 101 | CONFIG_RT_MUTEXES=y |
101 | # CONFIG_TINY_SHMEM is not set | ||
102 | CONFIG_BASE_SMALL=0 | 102 | CONFIG_BASE_SMALL=0 |
103 | CONFIG_MODULES=y | 103 | CONFIG_MODULES=y |
104 | # CONFIG_MODULE_FORCE_LOAD is not set | 104 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -106,11 +106,9 @@ CONFIG_MODULE_UNLOAD=y | |||
106 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 106 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
107 | # CONFIG_MODVERSIONS is not set | 107 | # CONFIG_MODVERSIONS is not set |
108 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 108 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
109 | CONFIG_KMOD=y | ||
110 | CONFIG_BLOCK=y | 109 | CONFIG_BLOCK=y |
111 | # CONFIG_LBD is not set | 110 | # CONFIG_LBD is not set |
112 | # CONFIG_BLK_DEV_IO_TRACE is not set | 111 | # CONFIG_BLK_DEV_IO_TRACE is not set |
113 | # CONFIG_LSF is not set | ||
114 | # CONFIG_BLK_DEV_BSG is not set | 112 | # CONFIG_BLK_DEV_BSG is not set |
115 | # CONFIG_BLK_DEV_INTEGRITY is not set | 113 | # CONFIG_BLK_DEV_INTEGRITY is not set |
116 | 114 | ||
@@ -127,6 +125,10 @@ CONFIG_DEFAULT_CFQ=y | |||
127 | # CONFIG_DEFAULT_NOOP is not set | 125 | # CONFIG_DEFAULT_NOOP is not set |
128 | CONFIG_DEFAULT_IOSCHED="cfq" | 126 | CONFIG_DEFAULT_IOSCHED="cfq" |
129 | CONFIG_CLASSIC_RCU=y | 127 | CONFIG_CLASSIC_RCU=y |
128 | # CONFIG_TREE_RCU is not set | ||
129 | # CONFIG_PREEMPT_RCU is not set | ||
130 | # CONFIG_TREE_RCU_TRACE is not set | ||
131 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
130 | # CONFIG_FREEZER is not set | 132 | # CONFIG_FREEZER is not set |
131 | 133 | ||
132 | # | 134 | # |
@@ -136,6 +138,7 @@ CONFIG_CPU_SH4=y | |||
136 | CONFIG_CPU_SH4A=y | 138 | CONFIG_CPU_SH4A=y |
137 | CONFIG_CPU_SHX2=y | 139 | CONFIG_CPU_SHX2=y |
138 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 140 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
141 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
139 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 142 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
140 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 143 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
141 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 144 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -206,7 +209,6 @@ CONFIG_SPARSEMEM_STATIC=y | |||
206 | CONFIG_PAGEFLAGS_EXTENDED=y | 209 | CONFIG_PAGEFLAGS_EXTENDED=y |
207 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 210 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
208 | CONFIG_MIGRATION=y | 211 | CONFIG_MIGRATION=y |
209 | # CONFIG_RESOURCES_64BIT is not set | ||
210 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 212 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
211 | CONFIG_ZONE_DMA_FLAG=0 | 213 | CONFIG_ZONE_DMA_FLAG=0 |
212 | CONFIG_NR_QUICK=2 | 214 | CONFIG_NR_QUICK=2 |
@@ -285,7 +287,6 @@ CONFIG_KEXEC=y | |||
285 | # CONFIG_PREEMPT_NONE is not set | 287 | # CONFIG_PREEMPT_NONE is not set |
286 | # CONFIG_PREEMPT_VOLUNTARY is not set | 288 | # CONFIG_PREEMPT_VOLUNTARY is not set |
287 | CONFIG_PREEMPT=y | 289 | CONFIG_PREEMPT=y |
288 | # CONFIG_PREEMPT_RCU is not set | ||
289 | CONFIG_GUSA=y | 290 | CONFIG_GUSA=y |
290 | 291 | ||
291 | # | 292 | # |
@@ -302,6 +303,7 @@ CONFIG_PCI=y | |||
302 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 303 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
303 | CONFIG_PCI_AUTO=y | 304 | CONFIG_PCI_AUTO=y |
304 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 305 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
306 | # CONFIG_PCIEPORTBUS is not set | ||
305 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 307 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
306 | CONFIG_PCI_LEGACY=y | 308 | CONFIG_PCI_LEGACY=y |
307 | # CONFIG_PCI_DEBUG is not set | 309 | # CONFIG_PCI_DEBUG is not set |
@@ -315,11 +317,18 @@ CONFIG_BINFMT_ELF=y | |||
315 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 317 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
316 | # CONFIG_HAVE_AOUT is not set | 318 | # CONFIG_HAVE_AOUT is not set |
317 | # CONFIG_BINFMT_MISC is not set | 319 | # CONFIG_BINFMT_MISC is not set |
320 | |||
321 | # | ||
322 | # Power management options (EXPERIMENTAL) | ||
323 | # | ||
324 | # CONFIG_PM is not set | ||
325 | # CONFIG_CPU_IDLE is not set | ||
318 | CONFIG_NET=y | 326 | CONFIG_NET=y |
319 | 327 | ||
320 | # | 328 | # |
321 | # Networking options | 329 | # Networking options |
322 | # | 330 | # |
331 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
323 | CONFIG_PACKET=y | 332 | CONFIG_PACKET=y |
324 | # CONFIG_PACKET_MMAP is not set | 333 | # CONFIG_PACKET_MMAP is not set |
325 | CONFIG_UNIX=y | 334 | CONFIG_UNIX=y |
@@ -380,6 +389,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
380 | # CONFIG_ECONET is not set | 389 | # CONFIG_ECONET is not set |
381 | # CONFIG_WAN_ROUTER is not set | 390 | # CONFIG_WAN_ROUTER is not set |
382 | # CONFIG_NET_SCHED is not set | 391 | # CONFIG_NET_SCHED is not set |
392 | # CONFIG_DCB is not set | ||
383 | 393 | ||
384 | # | 394 | # |
385 | # Network testing | 395 | # Network testing |
@@ -396,8 +406,8 @@ CONFIG_WIRELESS=y | |||
396 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 406 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
397 | CONFIG_WIRELESS_EXT=y | 407 | CONFIG_WIRELESS_EXT=y |
398 | CONFIG_WIRELESS_EXT_SYSFS=y | 408 | CONFIG_WIRELESS_EXT_SYSFS=y |
409 | # CONFIG_LIB80211 is not set | ||
399 | # CONFIG_MAC80211 is not set | 410 | # CONFIG_MAC80211 is not set |
400 | # CONFIG_IEEE80211 is not set | ||
401 | # CONFIG_RFKILL is not set | 411 | # CONFIG_RFKILL is not set |
402 | # CONFIG_NET_9P is not set | 412 | # CONFIG_NET_9P is not set |
403 | 413 | ||
@@ -757,6 +767,7 @@ CONFIG_SERIAL_CORE=y | |||
757 | CONFIG_SERIAL_CORE_CONSOLE=y | 767 | CONFIG_SERIAL_CORE_CONSOLE=y |
758 | # CONFIG_SERIAL_JSM is not set | 768 | # CONFIG_SERIAL_JSM is not set |
759 | CONFIG_UNIX98_PTYS=y | 769 | CONFIG_UNIX98_PTYS=y |
770 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
760 | CONFIG_LEGACY_PTYS=y | 771 | CONFIG_LEGACY_PTYS=y |
761 | CONFIG_LEGACY_PTY_COUNT=256 | 772 | CONFIG_LEGACY_PTY_COUNT=256 |
762 | # CONFIG_IPMI_HANDLER is not set | 773 | # CONFIG_IPMI_HANDLER is not set |
@@ -823,8 +834,8 @@ CONFIG_I2C_PCA_PLATFORM=y | |||
823 | # Miscellaneous I2C Chip support | 834 | # Miscellaneous I2C Chip support |
824 | # | 835 | # |
825 | # CONFIG_DS1682 is not set | 836 | # CONFIG_DS1682 is not set |
826 | # CONFIG_AT24 is not set | 837 | # CONFIG_EEPROM_AT24 is not set |
827 | # CONFIG_SENSORS_EEPROM is not set | 838 | # CONFIG_EEPROM_LEGACY is not set |
828 | # CONFIG_SENSORS_PCF8574 is not set | 839 | # CONFIG_SENSORS_PCF8574 is not set |
829 | # CONFIG_PCF8575 is not set | 840 | # CONFIG_PCF8575 is not set |
830 | # CONFIG_SENSORS_PCA9539 is not set | 841 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -842,11 +853,11 @@ CONFIG_I2C_PCA_PLATFORM=y | |||
842 | # CONFIG_THERMAL is not set | 853 | # CONFIG_THERMAL is not set |
843 | # CONFIG_THERMAL_HWMON is not set | 854 | # CONFIG_THERMAL_HWMON is not set |
844 | # CONFIG_WATCHDOG is not set | 855 | # CONFIG_WATCHDOG is not set |
856 | CONFIG_SSB_POSSIBLE=y | ||
845 | 857 | ||
846 | # | 858 | # |
847 | # Sonics Silicon Backplane | 859 | # Sonics Silicon Backplane |
848 | # | 860 | # |
849 | CONFIG_SSB_POSSIBLE=y | ||
850 | # CONFIG_SSB is not set | 861 | # CONFIG_SSB is not set |
851 | 862 | ||
852 | # | 863 | # |
@@ -855,9 +866,12 @@ CONFIG_SSB_POSSIBLE=y | |||
855 | # CONFIG_MFD_CORE is not set | 866 | # CONFIG_MFD_CORE is not set |
856 | CONFIG_MFD_SM501=y | 867 | CONFIG_MFD_SM501=y |
857 | # CONFIG_HTC_PASIC3 is not set | 868 | # CONFIG_HTC_PASIC3 is not set |
869 | # CONFIG_TWL4030_CORE is not set | ||
858 | # CONFIG_MFD_TMIO is not set | 870 | # CONFIG_MFD_TMIO is not set |
871 | # CONFIG_PMIC_DA903X is not set | ||
859 | # CONFIG_MFD_WM8400 is not set | 872 | # CONFIG_MFD_WM8400 is not set |
860 | # CONFIG_MFD_WM8350_I2C is not set | 873 | # CONFIG_MFD_WM8350_I2C is not set |
874 | # CONFIG_REGULATOR is not set | ||
861 | 875 | ||
862 | # | 876 | # |
863 | # Multimedia devices | 877 | # Multimedia devices |
@@ -889,11 +903,12 @@ CONFIG_FB_CFB_FILLRECT=y | |||
889 | CONFIG_FB_CFB_COPYAREA=y | 903 | CONFIG_FB_CFB_COPYAREA=y |
890 | CONFIG_FB_CFB_IMAGEBLIT=y | 904 | CONFIG_FB_CFB_IMAGEBLIT=y |
891 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 905 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
892 | # CONFIG_FB_SYS_FILLRECT is not set | 906 | CONFIG_FB_SYS_FILLRECT=m |
893 | # CONFIG_FB_SYS_COPYAREA is not set | 907 | CONFIG_FB_SYS_COPYAREA=m |
894 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 908 | CONFIG_FB_SYS_IMAGEBLIT=m |
895 | # CONFIG_FB_FOREIGN_ENDIAN is not set | 909 | # CONFIG_FB_FOREIGN_ENDIAN is not set |
896 | # CONFIG_FB_SYS_FOPS is not set | 910 | CONFIG_FB_SYS_FOPS=m |
911 | CONFIG_FB_DEFERRED_IO=y | ||
897 | # CONFIG_FB_SVGALIB is not set | 912 | # CONFIG_FB_SVGALIB is not set |
898 | # CONFIG_FB_MACMODES is not set | 913 | # CONFIG_FB_MACMODES is not set |
899 | # CONFIG_FB_BACKLIGHT is not set | 914 | # CONFIG_FB_BACKLIGHT is not set |
@@ -932,6 +947,7 @@ CONFIG_FB_SH_MOBILE_LCDC=m | |||
932 | CONFIG_FB_SM501=y | 947 | CONFIG_FB_SM501=y |
933 | # CONFIG_FB_VIRTUAL is not set | 948 | # CONFIG_FB_VIRTUAL is not set |
934 | # CONFIG_FB_METRONOME is not set | 949 | # CONFIG_FB_METRONOME is not set |
950 | # CONFIG_FB_MB862XX is not set | ||
935 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 951 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
936 | 952 | ||
937 | # | 953 | # |
@@ -976,11 +992,9 @@ CONFIG_HID_COMPAT=y | |||
976 | CONFIG_HID_A4TECH=y | 992 | CONFIG_HID_A4TECH=y |
977 | CONFIG_HID_APPLE=y | 993 | CONFIG_HID_APPLE=y |
978 | CONFIG_HID_BELKIN=y | 994 | CONFIG_HID_BELKIN=y |
979 | CONFIG_HID_BRIGHT=y | ||
980 | CONFIG_HID_CHERRY=y | 995 | CONFIG_HID_CHERRY=y |
981 | CONFIG_HID_CHICONY=y | 996 | CONFIG_HID_CHICONY=y |
982 | CONFIG_HID_CYPRESS=y | 997 | CONFIG_HID_CYPRESS=y |
983 | CONFIG_HID_DELL=y | ||
984 | CONFIG_HID_EZKEY=y | 998 | CONFIG_HID_EZKEY=y |
985 | CONFIG_HID_GYRATION=y | 999 | CONFIG_HID_GYRATION=y |
986 | CONFIG_HID_LOGITECH=y | 1000 | CONFIG_HID_LOGITECH=y |
@@ -988,12 +1002,15 @@ CONFIG_HID_LOGITECH=y | |||
988 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | 1002 | # CONFIG_LOGIRUMBLEPAD2_FF is not set |
989 | CONFIG_HID_MICROSOFT=y | 1003 | CONFIG_HID_MICROSOFT=y |
990 | CONFIG_HID_MONTEREY=y | 1004 | CONFIG_HID_MONTEREY=y |
1005 | # CONFIG_HID_NTRIG is not set | ||
991 | CONFIG_HID_PANTHERLORD=y | 1006 | CONFIG_HID_PANTHERLORD=y |
992 | # CONFIG_PANTHERLORD_FF is not set | 1007 | # CONFIG_PANTHERLORD_FF is not set |
993 | CONFIG_HID_PETALYNX=y | 1008 | CONFIG_HID_PETALYNX=y |
994 | CONFIG_HID_SAMSUNG=y | 1009 | CONFIG_HID_SAMSUNG=y |
995 | CONFIG_HID_SONY=y | 1010 | CONFIG_HID_SONY=y |
996 | CONFIG_HID_SUNPLUS=y | 1011 | CONFIG_HID_SUNPLUS=y |
1012 | # CONFIG_GREENASIA_FF is not set | ||
1013 | # CONFIG_HID_TOPSEED is not set | ||
997 | CONFIG_THRUSTMASTER_FF=m | 1014 | CONFIG_THRUSTMASTER_FF=m |
998 | CONFIG_ZEROPLUS_FF=m | 1015 | CONFIG_ZEROPLUS_FF=m |
999 | CONFIG_USB_SUPPORT=y | 1016 | CONFIG_USB_SUPPORT=y |
@@ -1014,6 +1031,8 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1014 | # CONFIG_USB_OTG_WHITELIST is not set | 1031 | # CONFIG_USB_OTG_WHITELIST is not set |
1015 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 1032 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
1016 | CONFIG_USB_MON=y | 1033 | CONFIG_USB_MON=y |
1034 | # CONFIG_USB_WUSB is not set | ||
1035 | # CONFIG_USB_WUSB_CBAF is not set | ||
1017 | 1036 | ||
1018 | # | 1037 | # |
1019 | # USB Host Controller Drivers | 1038 | # USB Host Controller Drivers |
@@ -1031,6 +1050,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1031 | # CONFIG_USB_UHCI_HCD is not set | 1050 | # CONFIG_USB_UHCI_HCD is not set |
1032 | # CONFIG_USB_SL811_HCD is not set | 1051 | # CONFIG_USB_SL811_HCD is not set |
1033 | CONFIG_USB_R8A66597_HCD=y | 1052 | CONFIG_USB_R8A66597_HCD=y |
1053 | # CONFIG_USB_WHCI_HCD is not set | ||
1054 | # CONFIG_USB_HWA_HCD is not set | ||
1034 | 1055 | ||
1035 | # | 1056 | # |
1036 | # USB Device Class drivers | 1057 | # USB Device Class drivers |
@@ -1041,11 +1062,11 @@ CONFIG_USB_R8A66597_HCD=y | |||
1041 | # CONFIG_USB_TMC is not set | 1062 | # CONFIG_USB_TMC is not set |
1042 | 1063 | ||
1043 | # | 1064 | # |
1044 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1065 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
1045 | # | 1066 | # |
1046 | 1067 | ||
1047 | # | 1068 | # |
1048 | # may also be needed; see USB_STORAGE Help for more information | 1069 | # see USB_STORAGE Help for more information |
1049 | # | 1070 | # |
1050 | CONFIG_USB_STORAGE=y | 1071 | CONFIG_USB_STORAGE=y |
1051 | # CONFIG_USB_STORAGE_DEBUG is not set | 1072 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -1100,6 +1121,7 @@ CONFIG_USB_TEST=m | |||
1100 | # CONFIG_USB_ISIGHTFW is not set | 1121 | # CONFIG_USB_ISIGHTFW is not set |
1101 | # CONFIG_USB_VST is not set | 1122 | # CONFIG_USB_VST is not set |
1102 | # CONFIG_USB_GADGET is not set | 1123 | # CONFIG_USB_GADGET is not set |
1124 | # CONFIG_UWB is not set | ||
1103 | # CONFIG_MMC is not set | 1125 | # CONFIG_MMC is not set |
1104 | # CONFIG_MEMSTICK is not set | 1126 | # CONFIG_MEMSTICK is not set |
1105 | # CONFIG_NEW_LEDS is not set | 1127 | # CONFIG_NEW_LEDS is not set |
@@ -1135,6 +1157,7 @@ CONFIG_RTC_DRV_RS5C372=y | |||
1135 | # CONFIG_RTC_DRV_M41T80 is not set | 1157 | # CONFIG_RTC_DRV_M41T80 is not set |
1136 | # CONFIG_RTC_DRV_S35390A is not set | 1158 | # CONFIG_RTC_DRV_S35390A is not set |
1137 | # CONFIG_RTC_DRV_FM3130 is not set | 1159 | # CONFIG_RTC_DRV_FM3130 is not set |
1160 | # CONFIG_RTC_DRV_RX8581 is not set | ||
1138 | 1161 | ||
1139 | # | 1162 | # |
1140 | # SPI RTC drivers | 1163 | # SPI RTC drivers |
@@ -1220,10 +1243,7 @@ CONFIG_TMPFS=y | |||
1220 | # CONFIG_HUGETLBFS is not set | 1243 | # CONFIG_HUGETLBFS is not set |
1221 | # CONFIG_HUGETLB_PAGE is not set | 1244 | # CONFIG_HUGETLB_PAGE is not set |
1222 | # CONFIG_CONFIGFS_FS is not set | 1245 | # CONFIG_CONFIGFS_FS is not set |
1223 | 1246 | CONFIG_MISC_FILESYSTEMS=y | |
1224 | # | ||
1225 | # Miscellaneous filesystems | ||
1226 | # | ||
1227 | # CONFIG_ADFS_FS is not set | 1247 | # CONFIG_ADFS_FS is not set |
1228 | # CONFIG_AFFS_FS is not set | 1248 | # CONFIG_AFFS_FS is not set |
1229 | # CONFIG_HFS_FS is not set | 1249 | # CONFIG_HFS_FS is not set |
@@ -1353,6 +1373,7 @@ CONFIG_DEBUG_PREEMPT=y | |||
1353 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1373 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1354 | # CONFIG_DEBUG_LIST is not set | 1374 | # CONFIG_DEBUG_LIST is not set |
1355 | # CONFIG_DEBUG_SG is not set | 1375 | # CONFIG_DEBUG_SG is not set |
1376 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
1356 | # CONFIG_FRAME_POINTER is not set | 1377 | # CONFIG_FRAME_POINTER is not set |
1357 | # CONFIG_RCU_TORTURE_TEST is not set | 1378 | # CONFIG_RCU_TORTURE_TEST is not set |
1358 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1379 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -1361,17 +1382,25 @@ CONFIG_DEBUG_PREEMPT=y | |||
1361 | # CONFIG_FAULT_INJECTION is not set | 1382 | # CONFIG_FAULT_INJECTION is not set |
1362 | # CONFIG_LATENCYTOP is not set | 1383 | # CONFIG_LATENCYTOP is not set |
1363 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 1384 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
1364 | CONFIG_NOP_TRACER=y | 1385 | CONFIG_HAVE_FUNCTION_TRACER=y |
1365 | CONFIG_HAVE_FTRACE=y | 1386 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1366 | # CONFIG_FTRACE is not set | 1387 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
1388 | |||
1389 | # | ||
1390 | # Tracers | ||
1391 | # | ||
1392 | # CONFIG_FUNCTION_TRACER is not set | ||
1367 | # CONFIG_IRQSOFF_TRACER is not set | 1393 | # CONFIG_IRQSOFF_TRACER is not set |
1368 | # CONFIG_PREEMPT_TRACER is not set | 1394 | # CONFIG_PREEMPT_TRACER is not set |
1369 | # CONFIG_SCHED_TRACER is not set | 1395 | # CONFIG_SCHED_TRACER is not set |
1370 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1396 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
1371 | # CONFIG_BOOT_TRACER is not set | 1397 | # CONFIG_BOOT_TRACER is not set |
1398 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1372 | # CONFIG_STACK_TRACER is not set | 1399 | # CONFIG_STACK_TRACER is not set |
1373 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1400 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1374 | # CONFIG_SAMPLES is not set | 1401 | # CONFIG_SAMPLES is not set |
1402 | CONFIG_HAVE_ARCH_KGDB=y | ||
1403 | # CONFIG_KGDB is not set | ||
1375 | # CONFIG_SH_STANDARD_BIOS is not set | 1404 | # CONFIG_SH_STANDARD_BIOS is not set |
1376 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1405 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1377 | # CONFIG_DEBUG_BOOTMEM is not set | 1406 | # CONFIG_DEBUG_BOOTMEM is not set |
@@ -1379,7 +1408,9 @@ CONFIG_HAVE_FTRACE=y | |||
1379 | # CONFIG_DEBUG_STACK_USAGE is not set | 1408 | # CONFIG_DEBUG_STACK_USAGE is not set |
1380 | # CONFIG_4KSTACKS is not set | 1409 | # CONFIG_4KSTACKS is not set |
1381 | # CONFIG_IRQSTACKS is not set | 1410 | # CONFIG_IRQSTACKS is not set |
1382 | # CONFIG_SH_KGDB is not set | 1411 | # CONFIG_DUMP_CODE is not set |
1412 | # CONFIG_SH_NO_BSS_INIT is not set | ||
1413 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
1383 | 1414 | ||
1384 | # | 1415 | # |
1385 | # Security options | 1416 | # Security options |
@@ -1395,11 +1426,15 @@ CONFIG_CRYPTO=y | |||
1395 | # | 1426 | # |
1396 | # CONFIG_CRYPTO_FIPS is not set | 1427 | # CONFIG_CRYPTO_FIPS is not set |
1397 | CONFIG_CRYPTO_ALGAPI=y | 1428 | CONFIG_CRYPTO_ALGAPI=y |
1398 | CONFIG_CRYPTO_AEAD=y | 1429 | CONFIG_CRYPTO_ALGAPI2=y |
1430 | CONFIG_CRYPTO_AEAD2=y | ||
1399 | CONFIG_CRYPTO_BLKCIPHER=y | 1431 | CONFIG_CRYPTO_BLKCIPHER=y |
1432 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1400 | CONFIG_CRYPTO_HASH=y | 1433 | CONFIG_CRYPTO_HASH=y |
1401 | CONFIG_CRYPTO_RNG=y | 1434 | CONFIG_CRYPTO_HASH2=y |
1435 | CONFIG_CRYPTO_RNG2=y | ||
1402 | CONFIG_CRYPTO_MANAGER=y | 1436 | CONFIG_CRYPTO_MANAGER=y |
1437 | CONFIG_CRYPTO_MANAGER2=y | ||
1403 | # CONFIG_CRYPTO_GF128MUL is not set | 1438 | # CONFIG_CRYPTO_GF128MUL is not set |
1404 | # CONFIG_CRYPTO_NULL is not set | 1439 | # CONFIG_CRYPTO_NULL is not set |
1405 | # CONFIG_CRYPTO_CRYPTD is not set | 1440 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1482,6 +1517,7 @@ CONFIG_CRYPTO_DES=y | |||
1482 | # Library routines | 1517 | # Library routines |
1483 | # | 1518 | # |
1484 | CONFIG_BITREVERSE=y | 1519 | CONFIG_BITREVERSE=y |
1520 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1485 | # CONFIG_CRC_CCITT is not set | 1521 | # CONFIG_CRC_CCITT is not set |
1486 | # CONFIG_CRC16 is not set | 1522 | # CONFIG_CRC16 is not set |
1487 | # CONFIG_CRC_T10DIF is not set | 1523 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/shmin_defconfig b/arch/sh/configs/shmin_defconfig index e2b38a334976..8ba10e1e08cd 100644 --- a/arch/sh/configs/shmin_defconfig +++ b/arch/sh/configs/shmin_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:52:59 2008 | 4 | # Fri Jan 9 18:09:00 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -15,6 +15,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
15 | # CONFIG_GENERIC_GPIO is not set | 15 | # CONFIG_GENERIC_GPIO is not set |
16 | CONFIG_GENERIC_TIME=y | 16 | CONFIG_GENERIC_TIME=y |
17 | CONFIG_GENERIC_CLOCKEVENTS=y | 17 | CONFIG_GENERIC_CLOCKEVENTS=y |
18 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
19 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
18 | CONFIG_STACKTRACE_SUPPORT=y | 20 | CONFIG_STACKTRACE_SUPPORT=y |
19 | CONFIG_LOCKDEP_SUPPORT=y | 21 | CONFIG_LOCKDEP_SUPPORT=y |
20 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 22 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -65,12 +67,10 @@ CONFIG_EVENTFD=y | |||
65 | # CONFIG_SHMEM is not set | 67 | # CONFIG_SHMEM is not set |
66 | CONFIG_AIO=y | 68 | CONFIG_AIO=y |
67 | CONFIG_VM_EVENT_COUNTERS=y | 69 | CONFIG_VM_EVENT_COUNTERS=y |
68 | CONFIG_PCI_QUIRKS=y | ||
69 | # CONFIG_SLAB is not set | 70 | # CONFIG_SLAB is not set |
70 | # CONFIG_SLUB is not set | 71 | # CONFIG_SLUB is not set |
71 | CONFIG_SLOB=y | 72 | CONFIG_SLOB=y |
72 | # CONFIG_PROFILING is not set | 73 | # CONFIG_PROFILING is not set |
73 | # CONFIG_MARKERS is not set | ||
74 | CONFIG_HAVE_OPROFILE=y | 74 | CONFIG_HAVE_OPROFILE=y |
75 | CONFIG_HAVE_IOREMAP_PROT=y | 75 | CONFIG_HAVE_IOREMAP_PROT=y |
76 | CONFIG_HAVE_KPROBES=y | 76 | CONFIG_HAVE_KPROBES=y |
@@ -78,12 +78,10 @@ CONFIG_HAVE_KRETPROBES=y | |||
78 | CONFIG_HAVE_ARCH_TRACEHOOK=y | 78 | CONFIG_HAVE_ARCH_TRACEHOOK=y |
79 | CONFIG_HAVE_CLK=y | 79 | CONFIG_HAVE_CLK=y |
80 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 80 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
81 | CONFIG_TINY_SHMEM=y | ||
82 | CONFIG_BASE_SMALL=1 | 81 | CONFIG_BASE_SMALL=1 |
83 | # CONFIG_MODULES is not set | 82 | # CONFIG_MODULES is not set |
84 | CONFIG_BLOCK=y | 83 | CONFIG_BLOCK=y |
85 | # CONFIG_LBD is not set | 84 | # CONFIG_LBD is not set |
86 | # CONFIG_LSF is not set | ||
87 | # CONFIG_BLK_DEV_BSG is not set | 85 | # CONFIG_BLK_DEV_BSG is not set |
88 | # CONFIG_BLK_DEV_INTEGRITY is not set | 86 | # CONFIG_BLK_DEV_INTEGRITY is not set |
89 | 87 | ||
@@ -100,6 +98,10 @@ CONFIG_IOSCHED_NOOP=y | |||
100 | CONFIG_DEFAULT_NOOP=y | 98 | CONFIG_DEFAULT_NOOP=y |
101 | CONFIG_DEFAULT_IOSCHED="noop" | 99 | CONFIG_DEFAULT_IOSCHED="noop" |
102 | CONFIG_CLASSIC_RCU=y | 100 | CONFIG_CLASSIC_RCU=y |
101 | # CONFIG_TREE_RCU is not set | ||
102 | # CONFIG_PREEMPT_RCU is not set | ||
103 | # CONFIG_TREE_RCU_TRACE is not set | ||
104 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
103 | # CONFIG_FREEZER is not set | 105 | # CONFIG_FREEZER is not set |
104 | 106 | ||
105 | # | 107 | # |
@@ -107,6 +109,7 @@ CONFIG_CLASSIC_RCU=y | |||
107 | # | 109 | # |
108 | CONFIG_CPU_SH3=y | 110 | CONFIG_CPU_SH3=y |
109 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 111 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
112 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
110 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 113 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
111 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 114 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
112 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 115 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -170,7 +173,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
170 | CONFIG_SPARSEMEM_STATIC=y | 173 | CONFIG_SPARSEMEM_STATIC=y |
171 | CONFIG_PAGEFLAGS_EXTENDED=y | 174 | CONFIG_PAGEFLAGS_EXTENDED=y |
172 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 175 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
173 | # CONFIG_RESOURCES_64BIT is not set | ||
174 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 176 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
175 | CONFIG_ZONE_DMA_FLAG=0 | 177 | CONFIG_ZONE_DMA_FLAG=0 |
176 | CONFIG_NR_QUICK=2 | 178 | CONFIG_NR_QUICK=2 |
@@ -268,11 +270,18 @@ CONFIG_BINFMT_ELF=y | |||
268 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 270 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
269 | # CONFIG_HAVE_AOUT is not set | 271 | # CONFIG_HAVE_AOUT is not set |
270 | # CONFIG_BINFMT_MISC is not set | 272 | # CONFIG_BINFMT_MISC is not set |
273 | |||
274 | # | ||
275 | # Power management options (EXPERIMENTAL) | ||
276 | # | ||
277 | # CONFIG_PM is not set | ||
278 | # CONFIG_CPU_IDLE is not set | ||
271 | CONFIG_NET=y | 279 | CONFIG_NET=y |
272 | 280 | ||
273 | # | 281 | # |
274 | # Networking options | 282 | # Networking options |
275 | # | 283 | # |
284 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
276 | # CONFIG_PACKET is not set | 285 | # CONFIG_PACKET is not set |
277 | CONFIG_UNIX=y | 286 | CONFIG_UNIX=y |
278 | CONFIG_XFRM=y | 287 | CONFIG_XFRM=y |
@@ -327,6 +336,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
327 | # CONFIG_ECONET is not set | 336 | # CONFIG_ECONET is not set |
328 | # CONFIG_WAN_ROUTER is not set | 337 | # CONFIG_WAN_ROUTER is not set |
329 | # CONFIG_NET_SCHED is not set | 338 | # CONFIG_NET_SCHED is not set |
339 | # CONFIG_DCB is not set | ||
330 | 340 | ||
331 | # | 341 | # |
332 | # Network testing | 342 | # Network testing |
@@ -342,8 +352,8 @@ CONFIG_WIRELESS=y | |||
342 | # CONFIG_CFG80211 is not set | 352 | # CONFIG_CFG80211 is not set |
343 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 353 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
344 | # CONFIG_WIRELESS_EXT is not set | 354 | # CONFIG_WIRELESS_EXT is not set |
355 | # CONFIG_LIB80211 is not set | ||
345 | # CONFIG_MAC80211 is not set | 356 | # CONFIG_MAC80211 is not set |
346 | # CONFIG_IEEE80211 is not set | ||
347 | # CONFIG_RFKILL is not set | 357 | # CONFIG_RFKILL is not set |
348 | # CONFIG_NET_9P is not set | 358 | # CONFIG_NET_9P is not set |
349 | 359 | ||
@@ -448,6 +458,7 @@ CONFIG_BLK_DEV_LOOP=y | |||
448 | CONFIG_MISC_DEVICES=y | 458 | CONFIG_MISC_DEVICES=y |
449 | # CONFIG_EEPROM_93CX6 is not set | 459 | # CONFIG_EEPROM_93CX6 is not set |
450 | # CONFIG_ENCLOSURE_SERVICES is not set | 460 | # CONFIG_ENCLOSURE_SERVICES is not set |
461 | # CONFIG_C2PORT is not set | ||
451 | CONFIG_HAVE_IDE=y | 462 | CONFIG_HAVE_IDE=y |
452 | # CONFIG_IDE is not set | 463 | # CONFIG_IDE is not set |
453 | 464 | ||
@@ -474,6 +485,7 @@ CONFIG_NET_ETHERNET=y | |||
474 | # CONFIG_STNIC is not set | 485 | # CONFIG_STNIC is not set |
475 | # CONFIG_SMC91X is not set | 486 | # CONFIG_SMC91X is not set |
476 | # CONFIG_SMC911X is not set | 487 | # CONFIG_SMC911X is not set |
488 | # CONFIG_SMSC911X is not set | ||
477 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 489 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
478 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 490 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
479 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 491 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -532,6 +544,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
532 | CONFIG_SERIAL_CORE=y | 544 | CONFIG_SERIAL_CORE=y |
533 | CONFIG_SERIAL_CORE_CONSOLE=y | 545 | CONFIG_SERIAL_CORE_CONSOLE=y |
534 | CONFIG_UNIX98_PTYS=y | 546 | CONFIG_UNIX98_PTYS=y |
547 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
535 | CONFIG_LEGACY_PTYS=y | 548 | CONFIG_LEGACY_PTYS=y |
536 | CONFIG_LEGACY_PTY_COUNT=256 | 549 | CONFIG_LEGACY_PTY_COUNT=256 |
537 | # CONFIG_IPMI_HANDLER is not set | 550 | # CONFIG_IPMI_HANDLER is not set |
@@ -547,11 +560,11 @@ CONFIG_HW_RANDOM=y | |||
547 | # CONFIG_THERMAL is not set | 560 | # CONFIG_THERMAL is not set |
548 | # CONFIG_THERMAL_HWMON is not set | 561 | # CONFIG_THERMAL_HWMON is not set |
549 | # CONFIG_WATCHDOG is not set | 562 | # CONFIG_WATCHDOG is not set |
563 | CONFIG_SSB_POSSIBLE=y | ||
550 | 564 | ||
551 | # | 565 | # |
552 | # Sonics Silicon Backplane | 566 | # Sonics Silicon Backplane |
553 | # | 567 | # |
554 | CONFIG_SSB_POSSIBLE=y | ||
555 | # CONFIG_SSB is not set | 568 | # CONFIG_SSB is not set |
556 | 569 | ||
557 | # | 570 | # |
@@ -561,7 +574,7 @@ CONFIG_SSB_POSSIBLE=y | |||
561 | # CONFIG_MFD_SM501 is not set | 574 | # CONFIG_MFD_SM501 is not set |
562 | # CONFIG_HTC_PASIC3 is not set | 575 | # CONFIG_HTC_PASIC3 is not set |
563 | # CONFIG_MFD_TMIO is not set | 576 | # CONFIG_MFD_TMIO is not set |
564 | # CONFIG_MFD_WM8400 is not set | 577 | # CONFIG_REGULATOR is not set |
565 | 578 | ||
566 | # | 579 | # |
567 | # Multimedia devices | 580 | # Multimedia devices |
@@ -605,7 +618,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
605 | # | 618 | # |
606 | 619 | ||
607 | # | 620 | # |
608 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 621 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
609 | # | 622 | # |
610 | # CONFIG_USB_GADGET is not set | 623 | # CONFIG_USB_GADGET is not set |
611 | # CONFIG_MMC is not set | 624 | # CONFIG_MMC is not set |
@@ -660,10 +673,7 @@ CONFIG_TMPFS=y | |||
660 | # CONFIG_TMPFS_POSIX_ACL is not set | 673 | # CONFIG_TMPFS_POSIX_ACL is not set |
661 | # CONFIG_HUGETLBFS is not set | 674 | # CONFIG_HUGETLBFS is not set |
662 | # CONFIG_HUGETLB_PAGE is not set | 675 | # CONFIG_HUGETLB_PAGE is not set |
663 | 676 | CONFIG_MISC_FILESYSTEMS=y | |
664 | # | ||
665 | # Miscellaneous filesystems | ||
666 | # | ||
667 | # CONFIG_ADFS_FS is not set | 677 | # CONFIG_ADFS_FS is not set |
668 | # CONFIG_AFFS_FS is not set | 678 | # CONFIG_AFFS_FS is not set |
669 | # CONFIG_HFS_FS is not set | 679 | # CONFIG_HFS_FS is not set |
@@ -723,14 +733,20 @@ CONFIG_FRAME_WARN=1024 | |||
723 | # CONFIG_DEBUG_MEMORY_INIT is not set | 733 | # CONFIG_DEBUG_MEMORY_INIT is not set |
724 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 734 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
725 | # CONFIG_LATENCYTOP is not set | 735 | # CONFIG_LATENCYTOP is not set |
726 | CONFIG_NOP_TRACER=y | 736 | CONFIG_HAVE_FUNCTION_TRACER=y |
727 | CONFIG_HAVE_FTRACE=y | 737 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
738 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
739 | |||
740 | # | ||
741 | # Tracers | ||
742 | # | ||
728 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 743 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
729 | # CONFIG_SAMPLES is not set | 744 | # CONFIG_SAMPLES is not set |
745 | CONFIG_HAVE_ARCH_KGDB=y | ||
730 | CONFIG_SH_STANDARD_BIOS=y | 746 | CONFIG_SH_STANDARD_BIOS=y |
731 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 747 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
732 | CONFIG_EARLY_PRINTK=y | 748 | CONFIG_EARLY_PRINTK=y |
733 | # CONFIG_SH_KGDB is not set | 749 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
734 | 750 | ||
735 | # | 751 | # |
736 | # Security options | 752 | # Security options |
@@ -745,6 +761,7 @@ CONFIG_CRYPTO=y | |||
745 | # | 761 | # |
746 | # CONFIG_CRYPTO_FIPS is not set | 762 | # CONFIG_CRYPTO_FIPS is not set |
747 | # CONFIG_CRYPTO_MANAGER is not set | 763 | # CONFIG_CRYPTO_MANAGER is not set |
764 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
748 | # CONFIG_CRYPTO_GF128MUL is not set | 765 | # CONFIG_CRYPTO_GF128MUL is not set |
749 | # CONFIG_CRYPTO_NULL is not set | 766 | # CONFIG_CRYPTO_NULL is not set |
750 | # CONFIG_CRYPTO_CRYPTD is not set | 767 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -826,6 +843,7 @@ CONFIG_CRYPTO_HW=y | |||
826 | # Library routines | 843 | # Library routines |
827 | # | 844 | # |
828 | CONFIG_BITREVERSE=y | 845 | CONFIG_BITREVERSE=y |
846 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
829 | # CONFIG_CRC_CCITT is not set | 847 | # CONFIG_CRC_CCITT is not set |
830 | # CONFIG_CRC16 is not set | 848 | # CONFIG_CRC16 is not set |
831 | # CONFIG_CRC_T10DIF is not set | 849 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/shx3_defconfig b/arch/sh/configs/shx3_defconfig index ae5cbe237fff..ed90a7e81099 100644 --- a/arch/sh/configs/shx3_defconfig +++ b/arch/sh/configs/shx3_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Tue Oct 21 12:16:25 2008 | 4 | # Fri Jan 9 18:10:57 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -18,6 +18,8 @@ CONFIG_GENERIC_TIME=y | |||
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y | 19 | CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y |
20 | CONFIG_GENERIC_LOCKBREAK=y | 20 | CONFIG_GENERIC_LOCKBREAK=y |
21 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
22 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
21 | CONFIG_SYS_SUPPORTS_SMP=y | 23 | CONFIG_SYS_SUPPORTS_SMP=y |
22 | CONFIG_SYS_SUPPORTS_NUMA=y | 24 | CONFIG_SYS_SUPPORTS_NUMA=y |
23 | CONFIG_STACKTRACE_SUPPORT=y | 25 | CONFIG_STACKTRACE_SUPPORT=y |
@@ -79,6 +81,7 @@ CONFIG_UID16=y | |||
79 | CONFIG_SYSCTL_SYSCALL=y | 81 | CONFIG_SYSCTL_SYSCALL=y |
80 | CONFIG_KALLSYMS=y | 82 | CONFIG_KALLSYMS=y |
81 | CONFIG_KALLSYMS_ALL=y | 83 | CONFIG_KALLSYMS_ALL=y |
84 | CONFIG_KALLSYMS_STRIP_GENERATED=y | ||
82 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 85 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
83 | CONFIG_HOTPLUG=y | 86 | CONFIG_HOTPLUG=y |
84 | CONFIG_PRINTK=y | 87 | CONFIG_PRINTK=y |
@@ -95,11 +98,11 @@ CONFIG_EVENTFD=y | |||
95 | CONFIG_SHMEM=y | 98 | CONFIG_SHMEM=y |
96 | CONFIG_AIO=y | 99 | CONFIG_AIO=y |
97 | CONFIG_VM_EVENT_COUNTERS=y | 100 | CONFIG_VM_EVENT_COUNTERS=y |
98 | CONFIG_PCI_QUIRKS=y | ||
99 | # CONFIG_SLAB is not set | 101 | # CONFIG_SLAB is not set |
100 | # CONFIG_SLUB is not set | 102 | # CONFIG_SLUB is not set |
101 | CONFIG_SLOB=y | 103 | CONFIG_SLOB=y |
102 | CONFIG_PROFILING=y | 104 | CONFIG_PROFILING=y |
105 | CONFIG_TRACEPOINTS=y | ||
103 | # CONFIG_MARKERS is not set | 106 | # CONFIG_MARKERS is not set |
104 | CONFIG_OPROFILE=y | 107 | CONFIG_OPROFILE=y |
105 | CONFIG_HAVE_OPROFILE=y | 108 | CONFIG_HAVE_OPROFILE=y |
@@ -113,7 +116,6 @@ CONFIG_USE_GENERIC_SMP_HELPERS=y | |||
113 | CONFIG_HAVE_CLK=y | 116 | CONFIG_HAVE_CLK=y |
114 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 117 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
115 | CONFIG_RT_MUTEXES=y | 118 | CONFIG_RT_MUTEXES=y |
116 | # CONFIG_TINY_SHMEM is not set | ||
117 | CONFIG_BASE_SMALL=0 | 119 | CONFIG_BASE_SMALL=0 |
118 | CONFIG_MODULES=y | 120 | CONFIG_MODULES=y |
119 | # CONFIG_MODULE_FORCE_LOAD is not set | 121 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -121,12 +123,10 @@ CONFIG_MODULE_UNLOAD=y | |||
121 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 123 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
122 | # CONFIG_MODVERSIONS is not set | 124 | # CONFIG_MODVERSIONS is not set |
123 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 125 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
124 | CONFIG_KMOD=y | ||
125 | CONFIG_STOP_MACHINE=y | 126 | CONFIG_STOP_MACHINE=y |
126 | CONFIG_BLOCK=y | 127 | CONFIG_BLOCK=y |
127 | # CONFIG_LBD is not set | 128 | # CONFIG_LBD is not set |
128 | # CONFIG_BLK_DEV_IO_TRACE is not set | 129 | # CONFIG_BLK_DEV_IO_TRACE is not set |
129 | # CONFIG_LSF is not set | ||
130 | # CONFIG_BLK_DEV_BSG is not set | 130 | # CONFIG_BLK_DEV_BSG is not set |
131 | # CONFIG_BLK_DEV_INTEGRITY is not set | 131 | # CONFIG_BLK_DEV_INTEGRITY is not set |
132 | 132 | ||
@@ -143,6 +143,11 @@ CONFIG_DEFAULT_AS=y | |||
143 | # CONFIG_DEFAULT_NOOP is not set | 143 | # CONFIG_DEFAULT_NOOP is not set |
144 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 144 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
145 | # CONFIG_CLASSIC_RCU is not set | 145 | # CONFIG_CLASSIC_RCU is not set |
146 | # CONFIG_TREE_RCU is not set | ||
147 | CONFIG_PREEMPT_RCU=y | ||
148 | CONFIG_RCU_TRACE=y | ||
149 | # CONFIG_TREE_RCU_TRACE is not set | ||
150 | CONFIG_PREEMPT_RCU_TRACE=y | ||
146 | CONFIG_FREEZER=y | 151 | CONFIG_FREEZER=y |
147 | 152 | ||
148 | # | 153 | # |
@@ -152,6 +157,7 @@ CONFIG_CPU_SH4=y | |||
152 | CONFIG_CPU_SH4A=y | 157 | CONFIG_CPU_SH4A=y |
153 | CONFIG_CPU_SHX3=y | 158 | CONFIG_CPU_SHX3=y |
154 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 159 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
160 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
155 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 161 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
156 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 162 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
157 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 163 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -230,7 +236,6 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y | |||
230 | CONFIG_MEMORY_HOTREMOVE=y | 236 | CONFIG_MEMORY_HOTREMOVE=y |
231 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 237 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
232 | CONFIG_MIGRATION=y | 238 | CONFIG_MIGRATION=y |
233 | # CONFIG_RESOURCES_64BIT is not set | ||
234 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 239 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
235 | CONFIG_ZONE_DMA_FLAG=0 | 240 | CONFIG_ZONE_DMA_FLAG=0 |
236 | CONFIG_NR_QUICK=2 | 241 | CONFIG_NR_QUICK=2 |
@@ -323,8 +328,6 @@ CONFIG_NR_CPUS=4 | |||
323 | # CONFIG_PREEMPT_NONE is not set | 328 | # CONFIG_PREEMPT_NONE is not set |
324 | # CONFIG_PREEMPT_VOLUNTARY is not set | 329 | # CONFIG_PREEMPT_VOLUNTARY is not set |
325 | CONFIG_PREEMPT=y | 330 | CONFIG_PREEMPT=y |
326 | CONFIG_PREEMPT_RCU=y | ||
327 | CONFIG_RCU_TRACE=y | ||
328 | 331 | ||
329 | # | 332 | # |
330 | # Boot options | 333 | # Boot options |
@@ -347,11 +350,19 @@ CONFIG_BINFMT_ELF=y | |||
347 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 350 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
348 | # CONFIG_HAVE_AOUT is not set | 351 | # CONFIG_HAVE_AOUT is not set |
349 | CONFIG_BINFMT_MISC=y | 352 | CONFIG_BINFMT_MISC=y |
353 | |||
354 | # | ||
355 | # Power management options (EXPERIMENTAL) | ||
356 | # | ||
357 | # CONFIG_PM is not set | ||
358 | # CONFIG_CPU_IDLE is not set | ||
350 | CONFIG_NET=y | 359 | CONFIG_NET=y |
351 | 360 | ||
352 | # | 361 | # |
353 | # Networking options | 362 | # Networking options |
354 | # | 363 | # |
364 | # CONFIG_NET_NS is not set | ||
365 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
355 | # CONFIG_PACKET is not set | 366 | # CONFIG_PACKET is not set |
356 | # CONFIG_UNIX is not set | 367 | # CONFIG_UNIX is not set |
357 | CONFIG_XFRM=y | 368 | CONFIG_XFRM=y |
@@ -424,6 +435,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y | |||
424 | # CONFIG_ECONET is not set | 435 | # CONFIG_ECONET is not set |
425 | # CONFIG_WAN_ROUTER is not set | 436 | # CONFIG_WAN_ROUTER is not set |
426 | # CONFIG_NET_SCHED is not set | 437 | # CONFIG_NET_SCHED is not set |
438 | # CONFIG_DCB is not set | ||
427 | 439 | ||
428 | # | 440 | # |
429 | # Network testing | 441 | # Network testing |
@@ -479,7 +491,9 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
479 | # CONFIG_BLK_DEV_HD is not set | 491 | # CONFIG_BLK_DEV_HD is not set |
480 | CONFIG_MISC_DEVICES=y | 492 | CONFIG_MISC_DEVICES=y |
481 | # CONFIG_EEPROM_93CX6 is not set | 493 | # CONFIG_EEPROM_93CX6 is not set |
494 | # CONFIG_ICS932S401 is not set | ||
482 | # CONFIG_ENCLOSURE_SERVICES is not set | 495 | # CONFIG_ENCLOSURE_SERVICES is not set |
496 | # CONFIG_C2PORT is not set | ||
483 | CONFIG_HAVE_IDE=y | 497 | CONFIG_HAVE_IDE=y |
484 | # CONFIG_IDE is not set | 498 | # CONFIG_IDE is not set |
485 | 499 | ||
@@ -522,6 +536,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
522 | # CONFIG_SCSI_SRP_ATTRS is not set | 536 | # CONFIG_SCSI_SRP_ATTRS is not set |
523 | CONFIG_SCSI_LOWLEVEL=y | 537 | CONFIG_SCSI_LOWLEVEL=y |
524 | # CONFIG_ISCSI_TCP is not set | 538 | # CONFIG_ISCSI_TCP is not set |
539 | # CONFIG_LIBFC is not set | ||
525 | # CONFIG_SCSI_DEBUG is not set | 540 | # CONFIG_SCSI_DEBUG is not set |
526 | # CONFIG_SCSI_DH is not set | 541 | # CONFIG_SCSI_DH is not set |
527 | CONFIG_ATA=y | 542 | CONFIG_ATA=y |
@@ -546,6 +561,7 @@ CONFIG_MII=y | |||
546 | CONFIG_SMC91X=y | 561 | CONFIG_SMC91X=y |
547 | # CONFIG_ENC28J60 is not set | 562 | # CONFIG_ENC28J60 is not set |
548 | # CONFIG_SMC911X is not set | 563 | # CONFIG_SMC911X is not set |
564 | # CONFIG_SMSC911X is not set | ||
549 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 565 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
550 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 566 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
551 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 567 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -613,6 +629,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
613 | CONFIG_SERIAL_CORE=y | 629 | CONFIG_SERIAL_CORE=y |
614 | CONFIG_SERIAL_CORE_CONSOLE=y | 630 | CONFIG_SERIAL_CORE_CONSOLE=y |
615 | CONFIG_UNIX98_PTYS=y | 631 | CONFIG_UNIX98_PTYS=y |
632 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
616 | CONFIG_LEGACY_PTYS=y | 633 | CONFIG_LEGACY_PTYS=y |
617 | CONFIG_LEGACY_PTY_COUNT=256 | 634 | CONFIG_LEGACY_PTY_COUNT=256 |
618 | # CONFIG_IPMI_HANDLER is not set | 635 | # CONFIG_IPMI_HANDLER is not set |
@@ -653,8 +670,8 @@ CONFIG_I2C_HELPER_AUTO=y | |||
653 | # Miscellaneous I2C Chip support | 670 | # Miscellaneous I2C Chip support |
654 | # | 671 | # |
655 | # CONFIG_DS1682 is not set | 672 | # CONFIG_DS1682 is not set |
656 | # CONFIG_AT24 is not set | 673 | # CONFIG_EEPROM_AT24 is not set |
657 | # CONFIG_SENSORS_EEPROM is not set | 674 | # CONFIG_EEPROM_LEGACY is not set |
658 | # CONFIG_SENSORS_PCF8574 is not set | 675 | # CONFIG_SENSORS_PCF8574 is not set |
659 | # CONFIG_PCF8575 is not set | 676 | # CONFIG_PCF8575 is not set |
660 | # CONFIG_SENSORS_PCA9539 is not set | 677 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -678,7 +695,7 @@ CONFIG_SPI_MASTER=y | |||
678 | # | 695 | # |
679 | # SPI Protocol Masters | 696 | # SPI Protocol Masters |
680 | # | 697 | # |
681 | # CONFIG_SPI_AT25 is not set | 698 | # CONFIG_EEPROM_AT25 is not set |
682 | # CONFIG_SPI_SPIDEV is not set | 699 | # CONFIG_SPI_SPIDEV is not set |
683 | # CONFIG_SPI_TLE62X0 is not set | 700 | # CONFIG_SPI_TLE62X0 is not set |
684 | # CONFIG_W1 is not set | 701 | # CONFIG_W1 is not set |
@@ -699,11 +716,11 @@ CONFIG_WATCHDOG=y | |||
699 | # USB-based Watchdog Cards | 716 | # USB-based Watchdog Cards |
700 | # | 717 | # |
701 | # CONFIG_USBPCWATCHDOG is not set | 718 | # CONFIG_USBPCWATCHDOG is not set |
719 | CONFIG_SSB_POSSIBLE=y | ||
702 | 720 | ||
703 | # | 721 | # |
704 | # Sonics Silicon Backplane | 722 | # Sonics Silicon Backplane |
705 | # | 723 | # |
706 | CONFIG_SSB_POSSIBLE=y | ||
707 | # CONFIG_SSB is not set | 724 | # CONFIG_SSB is not set |
708 | 725 | ||
709 | # | 726 | # |
@@ -715,6 +732,7 @@ CONFIG_SSB_POSSIBLE=y | |||
715 | # CONFIG_MFD_TMIO is not set | 732 | # CONFIG_MFD_TMIO is not set |
716 | # CONFIG_MFD_WM8400 is not set | 733 | # CONFIG_MFD_WM8400 is not set |
717 | # CONFIG_MFD_WM8350_I2C is not set | 734 | # CONFIG_MFD_WM8350_I2C is not set |
735 | # CONFIG_REGULATOR is not set | ||
718 | 736 | ||
719 | # | 737 | # |
720 | # Multimedia devices | 738 | # Multimedia devices |
@@ -763,15 +781,17 @@ CONFIG_USB_DEVICE_CLASS=y | |||
763 | # CONFIG_USB_OTG_WHITELIST is not set | 781 | # CONFIG_USB_OTG_WHITELIST is not set |
764 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 782 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
765 | CONFIG_USB_MON=y | 783 | CONFIG_USB_MON=y |
784 | # CONFIG_USB_WUSB is not set | ||
785 | # CONFIG_USB_WUSB_CBAF is not set | ||
766 | 786 | ||
767 | # | 787 | # |
768 | # USB Host Controller Drivers | 788 | # USB Host Controller Drivers |
769 | # | 789 | # |
770 | # CONFIG_USB_C67X00_HCD is not set | 790 | # CONFIG_USB_C67X00_HCD is not set |
771 | # CONFIG_USB_ISP116X_HCD is not set | 791 | # CONFIG_USB_ISP116X_HCD is not set |
772 | # CONFIG_USB_ISP1760_HCD is not set | ||
773 | # CONFIG_USB_SL811_HCD is not set | 792 | # CONFIG_USB_SL811_HCD is not set |
774 | CONFIG_USB_R8A66597_HCD=m | 793 | CONFIG_USB_R8A66597_HCD=m |
794 | # CONFIG_USB_HWA_HCD is not set | ||
775 | # CONFIG_USB_GADGET_MUSB_HDRC is not set | 795 | # CONFIG_USB_GADGET_MUSB_HDRC is not set |
776 | 796 | ||
777 | # | 797 | # |
@@ -783,11 +803,11 @@ CONFIG_USB_R8A66597_HCD=m | |||
783 | # CONFIG_USB_TMC is not set | 803 | # CONFIG_USB_TMC is not set |
784 | 804 | ||
785 | # | 805 | # |
786 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 806 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
787 | # | 807 | # |
788 | 808 | ||
789 | # | 809 | # |
790 | # may also be needed; see USB_STORAGE Help for more information | 810 | # see USB_STORAGE Help for more information |
791 | # | 811 | # |
792 | # CONFIG_USB_STORAGE is not set | 812 | # CONFIG_USB_STORAGE is not set |
793 | # CONFIG_USB_LIBUSUAL is not set | 813 | # CONFIG_USB_LIBUSUAL is not set |
@@ -890,12 +910,14 @@ CONFIG_RTC_INTF_DEV=y | |||
890 | # CONFIG_RTC_DRV_M41T80 is not set | 910 | # CONFIG_RTC_DRV_M41T80 is not set |
891 | # CONFIG_RTC_DRV_S35390A is not set | 911 | # CONFIG_RTC_DRV_S35390A is not set |
892 | # CONFIG_RTC_DRV_FM3130 is not set | 912 | # CONFIG_RTC_DRV_FM3130 is not set |
913 | # CONFIG_RTC_DRV_RX8581 is not set | ||
893 | 914 | ||
894 | # | 915 | # |
895 | # SPI RTC drivers | 916 | # SPI RTC drivers |
896 | # | 917 | # |
897 | # CONFIG_RTC_DRV_M41T94 is not set | 918 | # CONFIG_RTC_DRV_M41T94 is not set |
898 | # CONFIG_RTC_DRV_DS1305 is not set | 919 | # CONFIG_RTC_DRV_DS1305 is not set |
920 | # CONFIG_RTC_DRV_DS1390 is not set | ||
899 | # CONFIG_RTC_DRV_MAX6902 is not set | 921 | # CONFIG_RTC_DRV_MAX6902 is not set |
900 | # CONFIG_RTC_DRV_R9701 is not set | 922 | # CONFIG_RTC_DRV_R9701 is not set |
901 | # CONFIG_RTC_DRV_RS5C348 is not set | 923 | # CONFIG_RTC_DRV_RS5C348 is not set |
@@ -981,10 +1003,7 @@ CONFIG_TMPFS=y | |||
981 | CONFIG_HUGETLBFS=y | 1003 | CONFIG_HUGETLBFS=y |
982 | CONFIG_HUGETLB_PAGE=y | 1004 | CONFIG_HUGETLB_PAGE=y |
983 | # CONFIG_CONFIGFS_FS is not set | 1005 | # CONFIG_CONFIGFS_FS is not set |
984 | 1006 | CONFIG_MISC_FILESYSTEMS=y | |
985 | # | ||
986 | # Miscellaneous filesystems | ||
987 | # | ||
988 | # CONFIG_ADFS_FS is not set | 1007 | # CONFIG_ADFS_FS is not set |
989 | # CONFIG_AFFS_FS is not set | 1008 | # CONFIG_AFFS_FS is not set |
990 | # CONFIG_HFS_FS is not set | 1009 | # CONFIG_HFS_FS is not set |
@@ -1049,6 +1068,7 @@ CONFIG_DEBUG_PREEMPT=y | |||
1049 | # CONFIG_LOCK_STAT is not set | 1068 | # CONFIG_LOCK_STAT is not set |
1050 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1069 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1051 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1070 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1071 | CONFIG_STACKTRACE=y | ||
1052 | # CONFIG_DEBUG_KOBJECT is not set | 1072 | # CONFIG_DEBUG_KOBJECT is not set |
1053 | CONFIG_DEBUG_BUGVERBOSE=y | 1073 | CONFIG_DEBUG_BUGVERBOSE=y |
1054 | # CONFIG_DEBUG_INFO is not set | 1074 | # CONFIG_DEBUG_INFO is not set |
@@ -1057,6 +1077,7 @@ CONFIG_DEBUG_VM=y | |||
1057 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1077 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1058 | # CONFIG_DEBUG_LIST is not set | 1078 | # CONFIG_DEBUG_LIST is not set |
1059 | # CONFIG_DEBUG_SG is not set | 1079 | # CONFIG_DEBUG_SG is not set |
1080 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
1060 | CONFIG_FRAME_POINTER=y | 1081 | CONFIG_FRAME_POINTER=y |
1061 | # CONFIG_RCU_TORTURE_TEST is not set | 1082 | # CONFIG_RCU_TORTURE_TEST is not set |
1062 | # CONFIG_KPROBES_SANITY_TEST is not set | 1083 | # CONFIG_KPROBES_SANITY_TEST is not set |
@@ -1066,16 +1087,28 @@ CONFIG_FRAME_POINTER=y | |||
1066 | # CONFIG_FAULT_INJECTION is not set | 1087 | # CONFIG_FAULT_INJECTION is not set |
1067 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | 1088 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set |
1068 | CONFIG_NOP_TRACER=y | 1089 | CONFIG_NOP_TRACER=y |
1069 | CONFIG_HAVE_FTRACE=y | 1090 | CONFIG_HAVE_FUNCTION_TRACER=y |
1070 | # CONFIG_FTRACE is not set | 1091 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1092 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1093 | CONFIG_RING_BUFFER=y | ||
1094 | CONFIG_TRACING=y | ||
1095 | |||
1096 | # | ||
1097 | # Tracers | ||
1098 | # | ||
1099 | # CONFIG_FUNCTION_TRACER is not set | ||
1071 | # CONFIG_IRQSOFF_TRACER is not set | 1100 | # CONFIG_IRQSOFF_TRACER is not set |
1072 | # CONFIG_PREEMPT_TRACER is not set | 1101 | # CONFIG_PREEMPT_TRACER is not set |
1073 | # CONFIG_SCHED_TRACER is not set | 1102 | # CONFIG_SCHED_TRACER is not set |
1074 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1103 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
1075 | # CONFIG_BOOT_TRACER is not set | 1104 | # CONFIG_BOOT_TRACER is not set |
1105 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1076 | # CONFIG_STACK_TRACER is not set | 1106 | # CONFIG_STACK_TRACER is not set |
1107 | # CONFIG_FTRACE_STARTUP_TEST is not set | ||
1077 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1108 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1078 | # CONFIG_SAMPLES is not set | 1109 | # CONFIG_SAMPLES is not set |
1110 | CONFIG_HAVE_ARCH_KGDB=y | ||
1111 | # CONFIG_KGDB is not set | ||
1079 | CONFIG_SH_STANDARD_BIOS=y | 1112 | CONFIG_SH_STANDARD_BIOS=y |
1080 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1113 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1081 | CONFIG_EARLY_PRINTK=y | 1114 | CONFIG_EARLY_PRINTK=y |
@@ -1083,7 +1116,9 @@ CONFIG_EARLY_PRINTK=y | |||
1083 | CONFIG_DEBUG_STACKOVERFLOW=y | 1116 | CONFIG_DEBUG_STACKOVERFLOW=y |
1084 | CONFIG_DEBUG_STACK_USAGE=y | 1117 | CONFIG_DEBUG_STACK_USAGE=y |
1085 | # CONFIG_IRQSTACKS is not set | 1118 | # CONFIG_IRQSTACKS is not set |
1086 | # CONFIG_SH_KGDB is not set | 1119 | CONFIG_DUMP_CODE=y |
1120 | # CONFIG_SH_NO_BSS_INIT is not set | ||
1121 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
1087 | 1122 | ||
1088 | # | 1123 | # |
1089 | # Security options | 1124 | # Security options |
@@ -1099,6 +1134,7 @@ CONFIG_CRYPTO=y | |||
1099 | # | 1134 | # |
1100 | # CONFIG_CRYPTO_FIPS is not set | 1135 | # CONFIG_CRYPTO_FIPS is not set |
1101 | # CONFIG_CRYPTO_MANAGER is not set | 1136 | # CONFIG_CRYPTO_MANAGER is not set |
1137 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1102 | # CONFIG_CRYPTO_GF128MUL is not set | 1138 | # CONFIG_CRYPTO_GF128MUL is not set |
1103 | # CONFIG_CRYPTO_NULL is not set | 1139 | # CONFIG_CRYPTO_NULL is not set |
1104 | # CONFIG_CRYPTO_CRYPTD is not set | 1140 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1181,6 +1217,7 @@ CONFIG_CRYPTO_HW=y | |||
1181 | # Library routines | 1217 | # Library routines |
1182 | # | 1218 | # |
1183 | CONFIG_BITREVERSE=y | 1219 | CONFIG_BITREVERSE=y |
1220 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1184 | # CONFIG_CRC_CCITT is not set | 1221 | # CONFIG_CRC_CCITT is not set |
1185 | # CONFIG_CRC16 is not set | 1222 | # CONFIG_CRC16 is not set |
1186 | # CONFIG_CRC_T10DIF is not set | 1223 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/snapgear_defconfig b/arch/sh/configs/snapgear_defconfig index b4ca5110958f..98377e502650 100644 --- a/arch/sh/configs/snapgear_defconfig +++ b/arch/sh/configs/snapgear_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:55:03 2008 | 4 | # Fri Jan 9 18:14:08 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -76,7 +78,6 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_SLUB is not set | 78 | # CONFIG_SLUB is not set |
77 | # CONFIG_SLOB is not set | 79 | # CONFIG_SLOB is not set |
78 | # CONFIG_PROFILING is not set | 80 | # CONFIG_PROFILING is not set |
79 | # CONFIG_MARKERS is not set | ||
80 | CONFIG_HAVE_OPROFILE=y | 81 | CONFIG_HAVE_OPROFILE=y |
81 | CONFIG_HAVE_IOREMAP_PROT=y | 82 | CONFIG_HAVE_IOREMAP_PROT=y |
82 | CONFIG_HAVE_KPROBES=y | 83 | CONFIG_HAVE_KPROBES=y |
@@ -86,13 +87,11 @@ CONFIG_HAVE_CLK=y | |||
86 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 87 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
87 | CONFIG_SLABINFO=y | 88 | CONFIG_SLABINFO=y |
88 | CONFIG_RT_MUTEXES=y | 89 | CONFIG_RT_MUTEXES=y |
89 | # CONFIG_TINY_SHMEM is not set | ||
90 | CONFIG_BASE_SMALL=0 | 90 | CONFIG_BASE_SMALL=0 |
91 | # CONFIG_MODULES is not set | 91 | # CONFIG_MODULES is not set |
92 | CONFIG_BLOCK=y | 92 | CONFIG_BLOCK=y |
93 | # CONFIG_LBD is not set | 93 | # CONFIG_LBD is not set |
94 | # CONFIG_BLK_DEV_IO_TRACE is not set | 94 | # CONFIG_BLK_DEV_IO_TRACE is not set |
95 | # CONFIG_LSF is not set | ||
96 | # CONFIG_BLK_DEV_BSG is not set | 95 | # CONFIG_BLK_DEV_BSG is not set |
97 | # CONFIG_BLK_DEV_INTEGRITY is not set | 96 | # CONFIG_BLK_DEV_INTEGRITY is not set |
98 | 97 | ||
@@ -109,6 +108,10 @@ CONFIG_DEFAULT_AS=y | |||
109 | # CONFIG_DEFAULT_NOOP is not set | 108 | # CONFIG_DEFAULT_NOOP is not set |
110 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 109 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
111 | CONFIG_CLASSIC_RCU=y | 110 | CONFIG_CLASSIC_RCU=y |
111 | # CONFIG_TREE_RCU is not set | ||
112 | # CONFIG_PREEMPT_RCU is not set | ||
113 | # CONFIG_TREE_RCU_TRACE is not set | ||
114 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
112 | # CONFIG_FREEZER is not set | 115 | # CONFIG_FREEZER is not set |
113 | 116 | ||
114 | # | 117 | # |
@@ -116,6 +119,7 @@ CONFIG_CLASSIC_RCU=y | |||
116 | # | 119 | # |
117 | CONFIG_CPU_SH4=y | 120 | CONFIG_CPU_SH4=y |
118 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 121 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
122 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
119 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 123 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
120 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 124 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
121 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 125 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -179,7 +183,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
179 | CONFIG_SPARSEMEM_STATIC=y | 183 | CONFIG_SPARSEMEM_STATIC=y |
180 | CONFIG_PAGEFLAGS_EXTENDED=y | 184 | CONFIG_PAGEFLAGS_EXTENDED=y |
181 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 185 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
182 | # CONFIG_RESOURCES_64BIT is not set | ||
183 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 186 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
184 | CONFIG_ZONE_DMA_FLAG=0 | 187 | CONFIG_ZONE_DMA_FLAG=0 |
185 | CONFIG_NR_QUICK=2 | 188 | CONFIG_NR_QUICK=2 |
@@ -282,6 +285,7 @@ CONFIG_PCI=y | |||
282 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 285 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
283 | CONFIG_PCI_AUTO=y | 286 | CONFIG_PCI_AUTO=y |
284 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 287 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
288 | # CONFIG_PCIEPORTBUS is not set | ||
285 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 289 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
286 | CONFIG_PCI_LEGACY=y | 290 | CONFIG_PCI_LEGACY=y |
287 | 291 | ||
@@ -292,11 +296,18 @@ CONFIG_BINFMT_ELF=y | |||
292 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 296 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
293 | # CONFIG_HAVE_AOUT is not set | 297 | # CONFIG_HAVE_AOUT is not set |
294 | # CONFIG_BINFMT_MISC is not set | 298 | # CONFIG_BINFMT_MISC is not set |
299 | |||
300 | # | ||
301 | # Power management options (EXPERIMENTAL) | ||
302 | # | ||
303 | # CONFIG_PM is not set | ||
304 | # CONFIG_CPU_IDLE is not set | ||
295 | CONFIG_NET=y | 305 | CONFIG_NET=y |
296 | 306 | ||
297 | # | 307 | # |
298 | # Networking options | 308 | # Networking options |
299 | # | 309 | # |
310 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
300 | # CONFIG_PACKET is not set | 311 | # CONFIG_PACKET is not set |
301 | # CONFIG_UNIX is not set | 312 | # CONFIG_UNIX is not set |
302 | # CONFIG_NET_KEY is not set | 313 | # CONFIG_NET_KEY is not set |
@@ -342,6 +353,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
342 | # CONFIG_ECONET is not set | 353 | # CONFIG_ECONET is not set |
343 | # CONFIG_WAN_ROUTER is not set | 354 | # CONFIG_WAN_ROUTER is not set |
344 | # CONFIG_NET_SCHED is not set | 355 | # CONFIG_NET_SCHED is not set |
356 | # CONFIG_DCB is not set | ||
345 | 357 | ||
346 | # | 358 | # |
347 | # Network testing | 359 | # Network testing |
@@ -357,8 +369,8 @@ CONFIG_WIRELESS=y | |||
357 | # CONFIG_CFG80211 is not set | 369 | # CONFIG_CFG80211 is not set |
358 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 370 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
359 | # CONFIG_WIRELESS_EXT is not set | 371 | # CONFIG_WIRELESS_EXT is not set |
372 | # CONFIG_LIB80211 is not set | ||
360 | # CONFIG_MAC80211 is not set | 373 | # CONFIG_MAC80211 is not set |
361 | # CONFIG_IEEE80211 is not set | ||
362 | # CONFIG_RFKILL is not set | 374 | # CONFIG_RFKILL is not set |
363 | # CONFIG_NET_9P is not set | 375 | # CONFIG_NET_9P is not set |
364 | 376 | ||
@@ -515,6 +527,7 @@ CONFIG_MII=y | |||
515 | # CONFIG_NET_VENDOR_3COM is not set | 527 | # CONFIG_NET_VENDOR_3COM is not set |
516 | # CONFIG_SMC91X is not set | 528 | # CONFIG_SMC91X is not set |
517 | # CONFIG_SMC911X is not set | 529 | # CONFIG_SMC911X is not set |
530 | # CONFIG_SMSC911X is not set | ||
518 | # CONFIG_NET_TULIP is not set | 531 | # CONFIG_NET_TULIP is not set |
519 | # CONFIG_HP100 is not set | 532 | # CONFIG_HP100 is not set |
520 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 533 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -530,7 +543,6 @@ CONFIG_NET_PCI=y | |||
530 | # CONFIG_ADAPTEC_STARFIRE is not set | 543 | # CONFIG_ADAPTEC_STARFIRE is not set |
531 | # CONFIG_B44 is not set | 544 | # CONFIG_B44 is not set |
532 | # CONFIG_FORCEDETH is not set | 545 | # CONFIG_FORCEDETH is not set |
533 | # CONFIG_EEPRO100 is not set | ||
534 | # CONFIG_E100 is not set | 546 | # CONFIG_E100 is not set |
535 | # CONFIG_FEALNX is not set | 547 | # CONFIG_FEALNX is not set |
536 | # CONFIG_NATSEMI is not set | 548 | # CONFIG_NATSEMI is not set |
@@ -544,6 +556,7 @@ CONFIG_8139TOO_PIO=y | |||
544 | # CONFIG_R6040 is not set | 556 | # CONFIG_R6040 is not set |
545 | # CONFIG_SIS900 is not set | 557 | # CONFIG_SIS900 is not set |
546 | # CONFIG_EPIC100 is not set | 558 | # CONFIG_EPIC100 is not set |
559 | # CONFIG_SMSC9420 is not set | ||
547 | # CONFIG_SUNDANCE is not set | 560 | # CONFIG_SUNDANCE is not set |
548 | # CONFIG_TLAN is not set | 561 | # CONFIG_TLAN is not set |
549 | # CONFIG_VIA_RHINE is not set | 562 | # CONFIG_VIA_RHINE is not set |
@@ -624,6 +637,7 @@ CONFIG_SERIAL_CORE=y | |||
624 | CONFIG_SERIAL_CORE_CONSOLE=y | 637 | CONFIG_SERIAL_CORE_CONSOLE=y |
625 | # CONFIG_SERIAL_JSM is not set | 638 | # CONFIG_SERIAL_JSM is not set |
626 | CONFIG_UNIX98_PTYS=y | 639 | CONFIG_UNIX98_PTYS=y |
640 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
627 | CONFIG_LEGACY_PTYS=y | 641 | CONFIG_LEGACY_PTYS=y |
628 | CONFIG_LEGACY_PTY_COUNT=256 | 642 | CONFIG_LEGACY_PTY_COUNT=256 |
629 | # CONFIG_IPMI_HANDLER is not set | 643 | # CONFIG_IPMI_HANDLER is not set |
@@ -641,11 +655,11 @@ CONFIG_DEVPORT=y | |||
641 | # CONFIG_THERMAL is not set | 655 | # CONFIG_THERMAL is not set |
642 | # CONFIG_THERMAL_HWMON is not set | 656 | # CONFIG_THERMAL_HWMON is not set |
643 | # CONFIG_WATCHDOG is not set | 657 | # CONFIG_WATCHDOG is not set |
658 | CONFIG_SSB_POSSIBLE=y | ||
644 | 659 | ||
645 | # | 660 | # |
646 | # Sonics Silicon Backplane | 661 | # Sonics Silicon Backplane |
647 | # | 662 | # |
648 | CONFIG_SSB_POSSIBLE=y | ||
649 | # CONFIG_SSB is not set | 663 | # CONFIG_SSB is not set |
650 | 664 | ||
651 | # | 665 | # |
@@ -655,7 +669,7 @@ CONFIG_SSB_POSSIBLE=y | |||
655 | # CONFIG_MFD_SM501 is not set | 669 | # CONFIG_MFD_SM501 is not set |
656 | # CONFIG_HTC_PASIC3 is not set | 670 | # CONFIG_HTC_PASIC3 is not set |
657 | # CONFIG_MFD_TMIO is not set | 671 | # CONFIG_MFD_TMIO is not set |
658 | # CONFIG_MFD_WM8400 is not set | 672 | # CONFIG_REGULATOR is not set |
659 | 673 | ||
660 | # | 674 | # |
661 | # Multimedia devices | 675 | # Multimedia devices |
@@ -689,6 +703,7 @@ CONFIG_SSB_POSSIBLE=y | |||
689 | # CONFIG_SOUND is not set | 703 | # CONFIG_SOUND is not set |
690 | # CONFIG_HID_SUPPORT is not set | 704 | # CONFIG_HID_SUPPORT is not set |
691 | # CONFIG_USB_SUPPORT is not set | 705 | # CONFIG_USB_SUPPORT is not set |
706 | # CONFIG_UWB is not set | ||
692 | # CONFIG_MMC is not set | 707 | # CONFIG_MMC is not set |
693 | # CONFIG_MEMSTICK is not set | 708 | # CONFIG_MEMSTICK is not set |
694 | # CONFIG_NEW_LEDS is not set | 709 | # CONFIG_NEW_LEDS is not set |
@@ -746,10 +761,7 @@ CONFIG_TMPFS=y | |||
746 | # CONFIG_HUGETLBFS is not set | 761 | # CONFIG_HUGETLBFS is not set |
747 | # CONFIG_HUGETLB_PAGE is not set | 762 | # CONFIG_HUGETLB_PAGE is not set |
748 | # CONFIG_CONFIGFS_FS is not set | 763 | # CONFIG_CONFIGFS_FS is not set |
749 | 764 | CONFIG_MISC_FILESYSTEMS=y | |
750 | # | ||
751 | # Miscellaneous filesystems | ||
752 | # | ||
753 | # CONFIG_ADFS_FS is not set | 765 | # CONFIG_ADFS_FS is not set |
754 | # CONFIG_AFFS_FS is not set | 766 | # CONFIG_AFFS_FS is not set |
755 | # CONFIG_HFS_FS is not set | 767 | # CONFIG_HFS_FS is not set |
@@ -801,13 +813,19 @@ CONFIG_FRAME_WARN=1024 | |||
801 | # CONFIG_DEBUG_MEMORY_INIT is not set | 813 | # CONFIG_DEBUG_MEMORY_INIT is not set |
802 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 814 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
803 | # CONFIG_LATENCYTOP is not set | 815 | # CONFIG_LATENCYTOP is not set |
804 | CONFIG_NOP_TRACER=y | 816 | CONFIG_HAVE_FUNCTION_TRACER=y |
805 | CONFIG_HAVE_FTRACE=y | 817 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
818 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
819 | |||
820 | # | ||
821 | # Tracers | ||
822 | # | ||
806 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 823 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
807 | # CONFIG_SAMPLES is not set | 824 | # CONFIG_SAMPLES is not set |
825 | CONFIG_HAVE_ARCH_KGDB=y | ||
808 | # CONFIG_SH_STANDARD_BIOS is not set | 826 | # CONFIG_SH_STANDARD_BIOS is not set |
809 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 827 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
810 | # CONFIG_SH_KGDB is not set | 828 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
811 | 829 | ||
812 | # | 830 | # |
813 | # Security options | 831 | # Security options |
@@ -822,6 +840,7 @@ CONFIG_HAVE_FTRACE=y | |||
822 | # Library routines | 840 | # Library routines |
823 | # | 841 | # |
824 | CONFIG_BITREVERSE=y | 842 | CONFIG_BITREVERSE=y |
843 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
825 | # CONFIG_CRC_CCITT is not set | 844 | # CONFIG_CRC_CCITT is not set |
826 | # CONFIG_CRC16 is not set | 845 | # CONFIG_CRC16 is not set |
827 | # CONFIG_CRC_T10DIF is not set | 846 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/systemh_defconfig b/arch/sh/configs/systemh_defconfig index 1711f0f70d72..72703bf57afa 100644 --- a/arch/sh/configs/systemh_defconfig +++ b/arch/sh/configs/systemh_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:56:48 2008 | 4 | # Fri Jan 9 18:15:56 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_STACKTRACE_SUPPORT=y | 21 | CONFIG_STACKTRACE_SUPPORT=y |
20 | CONFIG_LOCKDEP_SUPPORT=y | 22 | CONFIG_LOCKDEP_SUPPORT=y |
21 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 23 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -68,12 +70,10 @@ CONFIG_EVENTFD=y | |||
68 | CONFIG_SHMEM=y | 70 | CONFIG_SHMEM=y |
69 | CONFIG_AIO=y | 71 | CONFIG_AIO=y |
70 | CONFIG_VM_EVENT_COUNTERS=y | 72 | CONFIG_VM_EVENT_COUNTERS=y |
71 | CONFIG_PCI_QUIRKS=y | ||
72 | CONFIG_SLAB=y | 73 | CONFIG_SLAB=y |
73 | # CONFIG_SLUB is not set | 74 | # CONFIG_SLUB is not set |
74 | # CONFIG_SLOB is not set | 75 | # CONFIG_SLOB is not set |
75 | # CONFIG_PROFILING is not set | 76 | # CONFIG_PROFILING is not set |
76 | # CONFIG_MARKERS is not set | ||
77 | CONFIG_HAVE_OPROFILE=y | 77 | CONFIG_HAVE_OPROFILE=y |
78 | # CONFIG_KPROBES is not set | 78 | # CONFIG_KPROBES is not set |
79 | CONFIG_HAVE_IOREMAP_PROT=y | 79 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -84,7 +84,6 @@ CONFIG_HAVE_CLK=y | |||
84 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 84 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
85 | CONFIG_SLABINFO=y | 85 | CONFIG_SLABINFO=y |
86 | CONFIG_RT_MUTEXES=y | 86 | CONFIG_RT_MUTEXES=y |
87 | # CONFIG_TINY_SHMEM is not set | ||
88 | CONFIG_BASE_SMALL=0 | 87 | CONFIG_BASE_SMALL=0 |
89 | CONFIG_MODULES=y | 88 | CONFIG_MODULES=y |
90 | # CONFIG_MODULE_FORCE_LOAD is not set | 89 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -92,11 +91,9 @@ CONFIG_MODULE_UNLOAD=y | |||
92 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 91 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
93 | # CONFIG_MODVERSIONS is not set | 92 | # CONFIG_MODVERSIONS is not set |
94 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 93 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
95 | CONFIG_KMOD=y | ||
96 | CONFIG_BLOCK=y | 94 | CONFIG_BLOCK=y |
97 | # CONFIG_LBD is not set | 95 | # CONFIG_LBD is not set |
98 | # CONFIG_BLK_DEV_IO_TRACE is not set | 96 | # CONFIG_BLK_DEV_IO_TRACE is not set |
99 | # CONFIG_LSF is not set | ||
100 | # CONFIG_BLK_DEV_BSG is not set | 97 | # CONFIG_BLK_DEV_BSG is not set |
101 | # CONFIG_BLK_DEV_INTEGRITY is not set | 98 | # CONFIG_BLK_DEV_INTEGRITY is not set |
102 | 99 | ||
@@ -113,6 +110,10 @@ CONFIG_DEFAULT_AS=y | |||
113 | # CONFIG_DEFAULT_NOOP is not set | 110 | # CONFIG_DEFAULT_NOOP is not set |
114 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 111 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
115 | CONFIG_CLASSIC_RCU=y | 112 | CONFIG_CLASSIC_RCU=y |
113 | # CONFIG_TREE_RCU is not set | ||
114 | # CONFIG_PREEMPT_RCU is not set | ||
115 | # CONFIG_TREE_RCU_TRACE is not set | ||
116 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
116 | # CONFIG_FREEZER is not set | 117 | # CONFIG_FREEZER is not set |
117 | 118 | ||
118 | # | 119 | # |
@@ -120,6 +121,7 @@ CONFIG_CLASSIC_RCU=y | |||
120 | # | 121 | # |
121 | CONFIG_CPU_SH4=y | 122 | CONFIG_CPU_SH4=y |
122 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 123 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
124 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
123 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 125 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
124 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 126 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
125 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 127 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -183,7 +185,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
183 | CONFIG_SPARSEMEM_STATIC=y | 185 | CONFIG_SPARSEMEM_STATIC=y |
184 | CONFIG_PAGEFLAGS_EXTENDED=y | 186 | CONFIG_PAGEFLAGS_EXTENDED=y |
185 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 187 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
186 | # CONFIG_RESOURCES_64BIT is not set | ||
187 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 188 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
188 | CONFIG_ZONE_DMA_FLAG=0 | 189 | CONFIG_ZONE_DMA_FLAG=0 |
189 | CONFIG_NR_QUICK=2 | 190 | CONFIG_NR_QUICK=2 |
@@ -264,7 +265,6 @@ CONFIG_HZ=250 | |||
264 | # CONFIG_PREEMPT_NONE is not set | 265 | # CONFIG_PREEMPT_NONE is not set |
265 | # CONFIG_PREEMPT_VOLUNTARY is not set | 266 | # CONFIG_PREEMPT_VOLUNTARY is not set |
266 | CONFIG_PREEMPT=y | 267 | CONFIG_PREEMPT=y |
267 | # CONFIG_PREEMPT_RCU is not set | ||
268 | CONFIG_GUSA=y | 268 | CONFIG_GUSA=y |
269 | # CONFIG_GUSA_RB is not set | 269 | # CONFIG_GUSA_RB is not set |
270 | 270 | ||
@@ -288,6 +288,12 @@ CONFIG_BINFMT_ELF=y | |||
288 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 288 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
289 | # CONFIG_HAVE_AOUT is not set | 289 | # CONFIG_HAVE_AOUT is not set |
290 | # CONFIG_BINFMT_MISC is not set | 290 | # CONFIG_BINFMT_MISC is not set |
291 | |||
292 | # | ||
293 | # Power management options (EXPERIMENTAL) | ||
294 | # | ||
295 | # CONFIG_PM is not set | ||
296 | # CONFIG_CPU_IDLE is not set | ||
291 | # CONFIG_NET is not set | 297 | # CONFIG_NET is not set |
292 | 298 | ||
293 | # | 299 | # |
@@ -314,6 +320,7 @@ CONFIG_BLK_DEV_RAM_SIZE=1024 | |||
314 | CONFIG_MISC_DEVICES=y | 320 | CONFIG_MISC_DEVICES=y |
315 | # CONFIG_EEPROM_93CX6 is not set | 321 | # CONFIG_EEPROM_93CX6 is not set |
316 | # CONFIG_ENCLOSURE_SERVICES is not set | 322 | # CONFIG_ENCLOSURE_SERVICES is not set |
323 | # CONFIG_C2PORT is not set | ||
317 | CONFIG_HAVE_IDE=y | 324 | CONFIG_HAVE_IDE=y |
318 | # CONFIG_IDE is not set | 325 | # CONFIG_IDE is not set |
319 | 326 | ||
@@ -360,6 +367,7 @@ CONFIG_DEVKMEM=y | |||
360 | # | 367 | # |
361 | # CONFIG_SERIAL_SH_SCI is not set | 368 | # CONFIG_SERIAL_SH_SCI is not set |
362 | CONFIG_UNIX98_PTYS=y | 369 | CONFIG_UNIX98_PTYS=y |
370 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
363 | CONFIG_LEGACY_PTYS=y | 371 | CONFIG_LEGACY_PTYS=y |
364 | CONFIG_LEGACY_PTY_COUNT=256 | 372 | CONFIG_LEGACY_PTY_COUNT=256 |
365 | # CONFIG_IPMI_HANDLER is not set | 373 | # CONFIG_IPMI_HANDLER is not set |
@@ -387,11 +395,11 @@ CONFIG_HWMON=y | |||
387 | # CONFIG_THERMAL is not set | 395 | # CONFIG_THERMAL is not set |
388 | # CONFIG_THERMAL_HWMON is not set | 396 | # CONFIG_THERMAL_HWMON is not set |
389 | # CONFIG_WATCHDOG is not set | 397 | # CONFIG_WATCHDOG is not set |
398 | CONFIG_SSB_POSSIBLE=y | ||
390 | 399 | ||
391 | # | 400 | # |
392 | # Sonics Silicon Backplane | 401 | # Sonics Silicon Backplane |
393 | # | 402 | # |
394 | CONFIG_SSB_POSSIBLE=y | ||
395 | # CONFIG_SSB is not set | 403 | # CONFIG_SSB is not set |
396 | 404 | ||
397 | # | 405 | # |
@@ -401,7 +409,7 @@ CONFIG_SSB_POSSIBLE=y | |||
401 | # CONFIG_MFD_SM501 is not set | 409 | # CONFIG_MFD_SM501 is not set |
402 | # CONFIG_HTC_PASIC3 is not set | 410 | # CONFIG_HTC_PASIC3 is not set |
403 | # CONFIG_MFD_TMIO is not set | 411 | # CONFIG_MFD_TMIO is not set |
404 | # CONFIG_MFD_WM8400 is not set | 412 | # CONFIG_REGULATOR is not set |
405 | 413 | ||
406 | # | 414 | # |
407 | # Multimedia devices | 415 | # Multimedia devices |
@@ -444,7 +452,7 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
444 | # | 452 | # |
445 | 453 | ||
446 | # | 454 | # |
447 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 455 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
448 | # | 456 | # |
449 | # CONFIG_USB_GADGET is not set | 457 | # CONFIG_USB_GADGET is not set |
450 | # CONFIG_MMC is not set | 458 | # CONFIG_MMC is not set |
@@ -501,10 +509,7 @@ CONFIG_TMPFS=y | |||
501 | # CONFIG_HUGETLBFS is not set | 509 | # CONFIG_HUGETLBFS is not set |
502 | # CONFIG_HUGETLB_PAGE is not set | 510 | # CONFIG_HUGETLB_PAGE is not set |
503 | # CONFIG_CONFIGFS_FS is not set | 511 | # CONFIG_CONFIGFS_FS is not set |
504 | 512 | CONFIG_MISC_FILESYSTEMS=y | |
505 | # | ||
506 | # Miscellaneous filesystems | ||
507 | # | ||
508 | # CONFIG_ADFS_FS is not set | 513 | # CONFIG_ADFS_FS is not set |
509 | # CONFIG_AFFS_FS is not set | 514 | # CONFIG_AFFS_FS is not set |
510 | # CONFIG_HFS_FS is not set | 515 | # CONFIG_HFS_FS is not set |
@@ -546,13 +551,19 @@ CONFIG_FRAME_WARN=1024 | |||
546 | # CONFIG_DEBUG_MEMORY_INIT is not set | 551 | # CONFIG_DEBUG_MEMORY_INIT is not set |
547 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 552 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
548 | # CONFIG_LATENCYTOP is not set | 553 | # CONFIG_LATENCYTOP is not set |
549 | CONFIG_NOP_TRACER=y | 554 | CONFIG_HAVE_FUNCTION_TRACER=y |
550 | CONFIG_HAVE_FTRACE=y | 555 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
556 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
557 | |||
558 | # | ||
559 | # Tracers | ||
560 | # | ||
551 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 561 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
552 | # CONFIG_SAMPLES is not set | 562 | # CONFIG_SAMPLES is not set |
563 | CONFIG_HAVE_ARCH_KGDB=y | ||
553 | # CONFIG_SH_STANDARD_BIOS is not set | 564 | # CONFIG_SH_STANDARD_BIOS is not set |
554 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 565 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
555 | # CONFIG_SH_KGDB is not set | 566 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
556 | 567 | ||
557 | # | 568 | # |
558 | # Security options | 569 | # Security options |
@@ -567,6 +578,7 @@ CONFIG_HAVE_FTRACE=y | |||
567 | # Library routines | 578 | # Library routines |
568 | # | 579 | # |
569 | CONFIG_BITREVERSE=y | 580 | CONFIG_BITREVERSE=y |
581 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
570 | # CONFIG_CRC_CCITT is not set | 582 | # CONFIG_CRC_CCITT is not set |
571 | # CONFIG_CRC16 is not set | 583 | # CONFIG_CRC16 is not set |
572 | # CONFIG_CRC_T10DIF is not set | 584 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/titan_defconfig b/arch/sh/configs/titan_defconfig index ea3c5e838fc3..01fc1defb33b 100644 --- a/arch/sh/configs/titan_defconfig +++ b/arch/sh/configs/titan_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27 | 3 | # Linux kernel version: 2.6.28 |
4 | # Wed Oct 22 19:58:12 2008 | 4 | # Fri Jan 9 18:17:19 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_PCI=y | 21 | CONFIG_SYS_SUPPORTS_PCI=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -79,7 +81,6 @@ CONFIG_SLAB=y | |||
79 | # CONFIG_SLUB is not set | 81 | # CONFIG_SLUB is not set |
80 | # CONFIG_SLOB is not set | 82 | # CONFIG_SLOB is not set |
81 | # CONFIG_PROFILING is not set | 83 | # CONFIG_PROFILING is not set |
82 | # CONFIG_MARKERS is not set | ||
83 | CONFIG_HAVE_OPROFILE=y | 84 | CONFIG_HAVE_OPROFILE=y |
84 | # CONFIG_KPROBES is not set | 85 | # CONFIG_KPROBES is not set |
85 | CONFIG_HAVE_IOREMAP_PROT=y | 86 | CONFIG_HAVE_IOREMAP_PROT=y |
@@ -90,7 +91,6 @@ CONFIG_HAVE_CLK=y | |||
90 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 91 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
91 | CONFIG_SLABINFO=y | 92 | CONFIG_SLABINFO=y |
92 | CONFIG_RT_MUTEXES=y | 93 | CONFIG_RT_MUTEXES=y |
93 | # CONFIG_TINY_SHMEM is not set | ||
94 | CONFIG_BASE_SMALL=0 | 94 | CONFIG_BASE_SMALL=0 |
95 | CONFIG_MODULES=y | 95 | CONFIG_MODULES=y |
96 | # CONFIG_MODULE_FORCE_LOAD is not set | 96 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -98,11 +98,9 @@ CONFIG_MODULE_UNLOAD=y | |||
98 | CONFIG_MODULE_FORCE_UNLOAD=y | 98 | CONFIG_MODULE_FORCE_UNLOAD=y |
99 | # CONFIG_MODVERSIONS is not set | 99 | # CONFIG_MODVERSIONS is not set |
100 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 100 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
101 | CONFIG_KMOD=y | ||
102 | CONFIG_BLOCK=y | 101 | CONFIG_BLOCK=y |
103 | # CONFIG_LBD is not set | 102 | # CONFIG_LBD is not set |
104 | # CONFIG_BLK_DEV_IO_TRACE is not set | 103 | # CONFIG_BLK_DEV_IO_TRACE is not set |
105 | # CONFIG_LSF is not set | ||
106 | # CONFIG_BLK_DEV_BSG is not set | 104 | # CONFIG_BLK_DEV_BSG is not set |
107 | # CONFIG_BLK_DEV_INTEGRITY is not set | 105 | # CONFIG_BLK_DEV_INTEGRITY is not set |
108 | 106 | ||
@@ -119,6 +117,10 @@ CONFIG_DEFAULT_AS=y | |||
119 | # CONFIG_DEFAULT_NOOP is not set | 117 | # CONFIG_DEFAULT_NOOP is not set |
120 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 118 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
121 | CONFIG_CLASSIC_RCU=y | 119 | CONFIG_CLASSIC_RCU=y |
120 | # CONFIG_TREE_RCU is not set | ||
121 | # CONFIG_PREEMPT_RCU is not set | ||
122 | # CONFIG_TREE_RCU_TRACE is not set | ||
123 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
122 | # CONFIG_FREEZER is not set | 124 | # CONFIG_FREEZER is not set |
123 | 125 | ||
124 | # | 126 | # |
@@ -126,6 +128,7 @@ CONFIG_CLASSIC_RCU=y | |||
126 | # | 128 | # |
127 | CONFIG_CPU_SH4=y | 129 | CONFIG_CPU_SH4=y |
128 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
129 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 132 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
130 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 133 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 134 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -189,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
189 | CONFIG_SPARSEMEM_STATIC=y | 192 | CONFIG_SPARSEMEM_STATIC=y |
190 | CONFIG_PAGEFLAGS_EXTENDED=y | 193 | CONFIG_PAGEFLAGS_EXTENDED=y |
191 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 194 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
192 | # CONFIG_RESOURCES_64BIT is not set | ||
193 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 195 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
194 | CONFIG_ZONE_DMA_FLAG=0 | 196 | CONFIG_ZONE_DMA_FLAG=0 |
195 | CONFIG_NR_QUICK=2 | 197 | CONFIG_NR_QUICK=2 |
@@ -293,6 +295,7 @@ CONFIG_PCI=y | |||
293 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 295 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
294 | CONFIG_PCI_AUTO=y | 296 | CONFIG_PCI_AUTO=y |
295 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 297 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
298 | # CONFIG_PCIEPORTBUS is not set | ||
296 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 299 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
297 | CONFIG_PCI_LEGACY=y | 300 | CONFIG_PCI_LEGACY=y |
298 | # CONFIG_PCI_DEBUG is not set | 301 | # CONFIG_PCI_DEBUG is not set |
@@ -309,11 +312,18 @@ CONFIG_BINFMT_ELF=y | |||
309 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 312 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
310 | # CONFIG_HAVE_AOUT is not set | 313 | # CONFIG_HAVE_AOUT is not set |
311 | # CONFIG_BINFMT_MISC is not set | 314 | # CONFIG_BINFMT_MISC is not set |
315 | |||
316 | # | ||
317 | # Power management options (EXPERIMENTAL) | ||
318 | # | ||
319 | # CONFIG_PM is not set | ||
320 | # CONFIG_CPU_IDLE is not set | ||
312 | CONFIG_NET=y | 321 | CONFIG_NET=y |
313 | 322 | ||
314 | # | 323 | # |
315 | # Networking options | 324 | # Networking options |
316 | # | 325 | # |
326 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
317 | CONFIG_PACKET=y | 327 | CONFIG_PACKET=y |
318 | CONFIG_PACKET_MMAP=y | 328 | CONFIG_PACKET_MMAP=y |
319 | CONFIG_UNIX=y | 329 | CONFIG_UNIX=y |
@@ -507,6 +517,7 @@ CONFIG_NET_SCH_TBF=m | |||
507 | CONFIG_NET_SCH_GRED=m | 517 | CONFIG_NET_SCH_GRED=m |
508 | CONFIG_NET_SCH_DSMARK=m | 518 | CONFIG_NET_SCH_DSMARK=m |
509 | CONFIG_NET_SCH_NETEM=m | 519 | CONFIG_NET_SCH_NETEM=m |
520 | # CONFIG_NET_SCH_DRR is not set | ||
510 | CONFIG_NET_SCH_INGRESS=m | 521 | CONFIG_NET_SCH_INGRESS=m |
511 | 522 | ||
512 | # | 523 | # |
@@ -543,6 +554,7 @@ CONFIG_NET_ACT_PEDIT=m | |||
543 | # CONFIG_NET_ACT_SKBEDIT is not set | 554 | # CONFIG_NET_ACT_SKBEDIT is not set |
544 | CONFIG_NET_CLS_IND=y | 555 | CONFIG_NET_CLS_IND=y |
545 | CONFIG_NET_SCH_FIFO=y | 556 | CONFIG_NET_SCH_FIFO=y |
557 | # CONFIG_DCB is not set | ||
546 | 558 | ||
547 | # | 559 | # |
548 | # Network testing | 560 | # Network testing |
@@ -560,12 +572,8 @@ CONFIG_WIRELESS=y | |||
560 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 572 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
561 | CONFIG_WIRELESS_EXT=y | 573 | CONFIG_WIRELESS_EXT=y |
562 | CONFIG_WIRELESS_EXT_SYSFS=y | 574 | CONFIG_WIRELESS_EXT_SYSFS=y |
575 | # CONFIG_LIB80211 is not set | ||
563 | # CONFIG_MAC80211 is not set | 576 | # CONFIG_MAC80211 is not set |
564 | CONFIG_IEEE80211=y | ||
565 | # CONFIG_IEEE80211_DEBUG is not set | ||
566 | CONFIG_IEEE80211_CRYPT_WEP=y | ||
567 | CONFIG_IEEE80211_CRYPT_CCMP=y | ||
568 | CONFIG_IEEE80211_CRYPT_TKIP=y | ||
569 | # CONFIG_RFKILL is not set | 577 | # CONFIG_RFKILL is not set |
570 | # CONFIG_NET_9P is not set | 578 | # CONFIG_NET_9P is not set |
571 | 579 | ||
@@ -695,6 +703,7 @@ CONFIG_MISC_DEVICES=y | |||
695 | # CONFIG_TIFM_CORE is not set | 703 | # CONFIG_TIFM_CORE is not set |
696 | # CONFIG_ENCLOSURE_SERVICES is not set | 704 | # CONFIG_ENCLOSURE_SERVICES is not set |
697 | # CONFIG_HP_ILO is not set | 705 | # CONFIG_HP_ILO is not set |
706 | # CONFIG_C2PORT is not set | ||
698 | CONFIG_HAVE_IDE=y | 707 | CONFIG_HAVE_IDE=y |
699 | # CONFIG_IDE is not set | 708 | # CONFIG_IDE is not set |
700 | 709 | ||
@@ -738,6 +747,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
738 | # CONFIG_SCSI_SRP_ATTRS is not set | 747 | # CONFIG_SCSI_SRP_ATTRS is not set |
739 | CONFIG_SCSI_LOWLEVEL=y | 748 | CONFIG_SCSI_LOWLEVEL=y |
740 | # CONFIG_ISCSI_TCP is not set | 749 | # CONFIG_ISCSI_TCP is not set |
750 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
741 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 751 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
742 | # CONFIG_SCSI_3W_9XXX is not set | 752 | # CONFIG_SCSI_3W_9XXX is not set |
743 | # CONFIG_SCSI_ACARD is not set | 753 | # CONFIG_SCSI_ACARD is not set |
@@ -751,6 +761,8 @@ CONFIG_SCSI_LOWLEVEL=y | |||
751 | # CONFIG_MEGARAID_LEGACY is not set | 761 | # CONFIG_MEGARAID_LEGACY is not set |
752 | # CONFIG_MEGARAID_SAS is not set | 762 | # CONFIG_MEGARAID_SAS is not set |
753 | # CONFIG_SCSI_HPTIOP is not set | 763 | # CONFIG_SCSI_HPTIOP is not set |
764 | # CONFIG_LIBFC is not set | ||
765 | # CONFIG_FCOE is not set | ||
754 | # CONFIG_SCSI_DMX3191D is not set | 766 | # CONFIG_SCSI_DMX3191D is not set |
755 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 767 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
756 | # CONFIG_SCSI_IPS is not set | 768 | # CONFIG_SCSI_IPS is not set |
@@ -807,6 +819,9 @@ CONFIG_CICADA_PHY=m | |||
807 | # CONFIG_BROADCOM_PHY is not set | 819 | # CONFIG_BROADCOM_PHY is not set |
808 | # CONFIG_ICPLUS_PHY is not set | 820 | # CONFIG_ICPLUS_PHY is not set |
809 | # CONFIG_REALTEK_PHY is not set | 821 | # CONFIG_REALTEK_PHY is not set |
822 | # CONFIG_NATIONAL_PHY is not set | ||
823 | # CONFIG_STE10XP is not set | ||
824 | # CONFIG_LSI_ET1011C_PHY is not set | ||
810 | # CONFIG_MDIO_BITBANG is not set | 825 | # CONFIG_MDIO_BITBANG is not set |
811 | CONFIG_NET_ETHERNET=y | 826 | CONFIG_NET_ETHERNET=y |
812 | CONFIG_MII=y | 827 | CONFIG_MII=y |
@@ -818,6 +833,7 @@ CONFIG_MII=y | |||
818 | # CONFIG_NET_VENDOR_3COM is not set | 833 | # CONFIG_NET_VENDOR_3COM is not set |
819 | # CONFIG_SMC91X is not set | 834 | # CONFIG_SMC91X is not set |
820 | # CONFIG_SMC911X is not set | 835 | # CONFIG_SMC911X is not set |
836 | # CONFIG_SMSC911X is not set | ||
821 | # CONFIG_NET_TULIP is not set | 837 | # CONFIG_NET_TULIP is not set |
822 | # CONFIG_HP100 is not set | 838 | # CONFIG_HP100 is not set |
823 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 839 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
@@ -833,7 +849,6 @@ CONFIG_NET_PCI=y | |||
833 | # CONFIG_ADAPTEC_STARFIRE is not set | 849 | # CONFIG_ADAPTEC_STARFIRE is not set |
834 | # CONFIG_B44 is not set | 850 | # CONFIG_B44 is not set |
835 | # CONFIG_FORCEDETH is not set | 851 | # CONFIG_FORCEDETH is not set |
836 | # CONFIG_EEPRO100 is not set | ||
837 | # CONFIG_E100 is not set | 852 | # CONFIG_E100 is not set |
838 | # CONFIG_FEALNX is not set | 853 | # CONFIG_FEALNX is not set |
839 | # CONFIG_NATSEMI is not set | 854 | # CONFIG_NATSEMI is not set |
@@ -847,6 +862,7 @@ CONFIG_8139_OLD_RX_RESET=y | |||
847 | # CONFIG_R6040 is not set | 862 | # CONFIG_R6040 is not set |
848 | # CONFIG_SIS900 is not set | 863 | # CONFIG_SIS900 is not set |
849 | # CONFIG_EPIC100 is not set | 864 | # CONFIG_EPIC100 is not set |
865 | # CONFIG_SMSC9420 is not set | ||
850 | # CONFIG_SUNDANCE is not set | 866 | # CONFIG_SUNDANCE is not set |
851 | # CONFIG_TLAN is not set | 867 | # CONFIG_TLAN is not set |
852 | # CONFIG_VIA_RHINE is not set | 868 | # CONFIG_VIA_RHINE is not set |
@@ -875,6 +891,7 @@ CONFIG_NETDEV_1000=y | |||
875 | # CONFIG_JME is not set | 891 | # CONFIG_JME is not set |
876 | CONFIG_NETDEV_10000=y | 892 | CONFIG_NETDEV_10000=y |
877 | # CONFIG_CHELSIO_T1 is not set | 893 | # CONFIG_CHELSIO_T1 is not set |
894 | CONFIG_CHELSIO_T3_DEPENDS=y | ||
878 | # CONFIG_CHELSIO_T3 is not set | 895 | # CONFIG_CHELSIO_T3 is not set |
879 | # CONFIG_ENIC is not set | 896 | # CONFIG_ENIC is not set |
880 | # CONFIG_IXGBE is not set | 897 | # CONFIG_IXGBE is not set |
@@ -883,6 +900,7 @@ CONFIG_NETDEV_10000=y | |||
883 | # CONFIG_MYRI10GE is not set | 900 | # CONFIG_MYRI10GE is not set |
884 | # CONFIG_NETXEN_NIC is not set | 901 | # CONFIG_NETXEN_NIC is not set |
885 | # CONFIG_NIU is not set | 902 | # CONFIG_NIU is not set |
903 | # CONFIG_MLX4_EN is not set | ||
886 | # CONFIG_MLX4_CORE is not set | 904 | # CONFIG_MLX4_CORE is not set |
887 | # CONFIG_TEHUTI is not set | 905 | # CONFIG_TEHUTI is not set |
888 | # CONFIG_BNX2X is not set | 906 | # CONFIG_BNX2X is not set |
@@ -1002,6 +1020,7 @@ CONFIG_SERIAL_CORE=y | |||
1002 | CONFIG_SERIAL_CORE_CONSOLE=y | 1020 | CONFIG_SERIAL_CORE_CONSOLE=y |
1003 | # CONFIG_SERIAL_JSM is not set | 1021 | # CONFIG_SERIAL_JSM is not set |
1004 | CONFIG_UNIX98_PTYS=y | 1022 | CONFIG_UNIX98_PTYS=y |
1023 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
1005 | CONFIG_LEGACY_PTYS=y | 1024 | CONFIG_LEGACY_PTYS=y |
1006 | CONFIG_LEGACY_PTY_COUNT=256 | 1025 | CONFIG_LEGACY_PTY_COUNT=256 |
1007 | # CONFIG_IPMI_HANDLER is not set | 1026 | # CONFIG_IPMI_HANDLER is not set |
@@ -1055,11 +1074,11 @@ CONFIG_SH_WDT=m | |||
1055 | # USB-based Watchdog Cards | 1074 | # USB-based Watchdog Cards |
1056 | # | 1075 | # |
1057 | # CONFIG_USBPCWATCHDOG is not set | 1076 | # CONFIG_USBPCWATCHDOG is not set |
1077 | CONFIG_SSB_POSSIBLE=y | ||
1058 | 1078 | ||
1059 | # | 1079 | # |
1060 | # Sonics Silicon Backplane | 1080 | # Sonics Silicon Backplane |
1061 | # | 1081 | # |
1062 | CONFIG_SSB_POSSIBLE=y | ||
1063 | # CONFIG_SSB is not set | 1082 | # CONFIG_SSB is not set |
1064 | 1083 | ||
1065 | # | 1084 | # |
@@ -1069,7 +1088,7 @@ CONFIG_SSB_POSSIBLE=y | |||
1069 | # CONFIG_MFD_SM501 is not set | 1088 | # CONFIG_MFD_SM501 is not set |
1070 | # CONFIG_HTC_PASIC3 is not set | 1089 | # CONFIG_HTC_PASIC3 is not set |
1071 | # CONFIG_MFD_TMIO is not set | 1090 | # CONFIG_MFD_TMIO is not set |
1072 | # CONFIG_MFD_WM8400 is not set | 1091 | # CONFIG_REGULATOR is not set |
1073 | 1092 | ||
1074 | # | 1093 | # |
1075 | # Multimedia devices | 1094 | # Multimedia devices |
@@ -1145,6 +1164,8 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1145 | # CONFIG_USB_OTG_WHITELIST is not set | 1164 | # CONFIG_USB_OTG_WHITELIST is not set |
1146 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | 1165 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set |
1147 | CONFIG_USB_MON=y | 1166 | CONFIG_USB_MON=y |
1167 | # CONFIG_USB_WUSB is not set | ||
1168 | # CONFIG_USB_WUSB_CBAF is not set | ||
1148 | 1169 | ||
1149 | # | 1170 | # |
1150 | # USB Host Controller Drivers | 1171 | # USB Host Controller Drivers |
@@ -1162,6 +1183,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1162 | # CONFIG_USB_UHCI_HCD is not set | 1183 | # CONFIG_USB_UHCI_HCD is not set |
1163 | # CONFIG_USB_SL811_HCD is not set | 1184 | # CONFIG_USB_SL811_HCD is not set |
1164 | # CONFIG_USB_R8A66597_HCD is not set | 1185 | # CONFIG_USB_R8A66597_HCD is not set |
1186 | # CONFIG_USB_WHCI_HCD is not set | ||
1187 | # CONFIG_USB_HWA_HCD is not set | ||
1165 | 1188 | ||
1166 | # | 1189 | # |
1167 | # USB Device Class drivers | 1190 | # USB Device Class drivers |
@@ -1172,11 +1195,11 @@ CONFIG_USB_PRINTER=m | |||
1172 | # CONFIG_USB_TMC is not set | 1195 | # CONFIG_USB_TMC is not set |
1173 | 1196 | ||
1174 | # | 1197 | # |
1175 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1198 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
1176 | # | 1199 | # |
1177 | 1200 | ||
1178 | # | 1201 | # |
1179 | # may also be needed; see USB_STORAGE Help for more information | 1202 | # see USB_STORAGE Help for more information |
1180 | # | 1203 | # |
1181 | CONFIG_USB_STORAGE=y | 1204 | CONFIG_USB_STORAGE=y |
1182 | # CONFIG_USB_STORAGE_DEBUG is not set | 1205 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -1273,6 +1296,7 @@ CONFIG_USB_SERIAL_PL2303=m | |||
1273 | # CONFIG_USB_ISIGHTFW is not set | 1296 | # CONFIG_USB_ISIGHTFW is not set |
1274 | # CONFIG_USB_VST is not set | 1297 | # CONFIG_USB_VST is not set |
1275 | # CONFIG_USB_GADGET is not set | 1298 | # CONFIG_USB_GADGET is not set |
1299 | # CONFIG_UWB is not set | ||
1276 | # CONFIG_MMC is not set | 1300 | # CONFIG_MMC is not set |
1277 | # CONFIG_MEMSTICK is not set | 1301 | # CONFIG_MEMSTICK is not set |
1278 | # CONFIG_NEW_LEDS is not set | 1302 | # CONFIG_NEW_LEDS is not set |
@@ -1379,10 +1403,7 @@ CONFIG_TMPFS=y | |||
1379 | # CONFIG_HUGETLBFS is not set | 1403 | # CONFIG_HUGETLBFS is not set |
1380 | # CONFIG_HUGETLB_PAGE is not set | 1404 | # CONFIG_HUGETLB_PAGE is not set |
1381 | CONFIG_CONFIGFS_FS=m | 1405 | CONFIG_CONFIGFS_FS=m |
1382 | 1406 | CONFIG_MISC_FILESYSTEMS=y | |
1383 | # | ||
1384 | # Miscellaneous filesystems | ||
1385 | # | ||
1386 | # CONFIG_ADFS_FS is not set | 1407 | # CONFIG_ADFS_FS is not set |
1387 | # CONFIG_AFFS_FS is not set | 1408 | # CONFIG_AFFS_FS is not set |
1388 | # CONFIG_HFS_FS is not set | 1409 | # CONFIG_HFS_FS is not set |
@@ -1530,6 +1551,7 @@ CONFIG_SCHED_DEBUG=y | |||
1530 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1551 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1531 | # CONFIG_DEBUG_LIST is not set | 1552 | # CONFIG_DEBUG_LIST is not set |
1532 | # CONFIG_DEBUG_SG is not set | 1553 | # CONFIG_DEBUG_SG is not set |
1554 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
1533 | # CONFIG_FRAME_POINTER is not set | 1555 | # CONFIG_FRAME_POINTER is not set |
1534 | # CONFIG_RCU_TORTURE_TEST is not set | 1556 | # CONFIG_RCU_TORTURE_TEST is not set |
1535 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1557 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -1537,16 +1559,24 @@ CONFIG_SCHED_DEBUG=y | |||
1537 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | 1559 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set |
1538 | # CONFIG_FAULT_INJECTION is not set | 1560 | # CONFIG_FAULT_INJECTION is not set |
1539 | # CONFIG_LATENCYTOP is not set | 1561 | # CONFIG_LATENCYTOP is not set |
1540 | CONFIG_NOP_TRACER=y | 1562 | CONFIG_HAVE_FUNCTION_TRACER=y |
1541 | CONFIG_HAVE_FTRACE=y | 1563 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1542 | # CONFIG_FTRACE is not set | 1564 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
1565 | |||
1566 | # | ||
1567 | # Tracers | ||
1568 | # | ||
1569 | # CONFIG_FUNCTION_TRACER is not set | ||
1543 | # CONFIG_IRQSOFF_TRACER is not set | 1570 | # CONFIG_IRQSOFF_TRACER is not set |
1544 | # CONFIG_SCHED_TRACER is not set | 1571 | # CONFIG_SCHED_TRACER is not set |
1545 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1572 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
1546 | # CONFIG_BOOT_TRACER is not set | 1573 | # CONFIG_BOOT_TRACER is not set |
1574 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1547 | # CONFIG_STACK_TRACER is not set | 1575 | # CONFIG_STACK_TRACER is not set |
1548 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1576 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1549 | # CONFIG_SAMPLES is not set | 1577 | # CONFIG_SAMPLES is not set |
1578 | CONFIG_HAVE_ARCH_KGDB=y | ||
1579 | # CONFIG_KGDB is not set | ||
1550 | # CONFIG_SH_STANDARD_BIOS is not set | 1580 | # CONFIG_SH_STANDARD_BIOS is not set |
1551 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1581 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1552 | # CONFIG_DEBUG_BOOTMEM is not set | 1582 | # CONFIG_DEBUG_BOOTMEM is not set |
@@ -1554,7 +1584,9 @@ CONFIG_HAVE_FTRACE=y | |||
1554 | # CONFIG_DEBUG_STACK_USAGE is not set | 1584 | # CONFIG_DEBUG_STACK_USAGE is not set |
1555 | # CONFIG_4KSTACKS is not set | 1585 | # CONFIG_4KSTACKS is not set |
1556 | # CONFIG_IRQSTACKS is not set | 1586 | # CONFIG_IRQSTACKS is not set |
1557 | # CONFIG_SH_KGDB is not set | 1587 | # CONFIG_DUMP_CODE is not set |
1588 | # CONFIG_SH_NO_BSS_INIT is not set | ||
1589 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
1558 | 1590 | ||
1559 | # | 1591 | # |
1560 | # Security options | 1592 | # Security options |
@@ -1570,11 +1602,16 @@ CONFIG_CRYPTO=y | |||
1570 | # | 1602 | # |
1571 | # CONFIG_CRYPTO_FIPS is not set | 1603 | # CONFIG_CRYPTO_FIPS is not set |
1572 | CONFIG_CRYPTO_ALGAPI=y | 1604 | CONFIG_CRYPTO_ALGAPI=y |
1605 | CONFIG_CRYPTO_ALGAPI2=y | ||
1573 | CONFIG_CRYPTO_AEAD=y | 1606 | CONFIG_CRYPTO_AEAD=y |
1607 | CONFIG_CRYPTO_AEAD2=y | ||
1574 | CONFIG_CRYPTO_BLKCIPHER=y | 1608 | CONFIG_CRYPTO_BLKCIPHER=y |
1609 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1575 | CONFIG_CRYPTO_HASH=y | 1610 | CONFIG_CRYPTO_HASH=y |
1576 | CONFIG_CRYPTO_RNG=y | 1611 | CONFIG_CRYPTO_HASH2=y |
1612 | CONFIG_CRYPTO_RNG2=y | ||
1577 | CONFIG_CRYPTO_MANAGER=y | 1613 | CONFIG_CRYPTO_MANAGER=y |
1614 | CONFIG_CRYPTO_MANAGER2=y | ||
1578 | # CONFIG_CRYPTO_GF128MUL is not set | 1615 | # CONFIG_CRYPTO_GF128MUL is not set |
1579 | CONFIG_CRYPTO_NULL=m | 1616 | CONFIG_CRYPTO_NULL=m |
1580 | # CONFIG_CRYPTO_CRYPTD is not set | 1617 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1659,6 +1696,7 @@ CONFIG_CRYPTO_HW=y | |||
1659 | # Library routines | 1696 | # Library routines |
1660 | # | 1697 | # |
1661 | CONFIG_BITREVERSE=y | 1698 | CONFIG_BITREVERSE=y |
1699 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1662 | CONFIG_CRC_CCITT=m | 1700 | CONFIG_CRC_CCITT=m |
1663 | CONFIG_CRC16=m | 1701 | CONFIG_CRC16=m |
1664 | # CONFIG_CRC_T10DIF is not set | 1702 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/configs/ul2_defconfig b/arch/sh/configs/ul2_defconfig index 9afff67d9ff2..27f968a959f8 100644 --- a/arch/sh/configs/ul2_defconfig +++ b/arch/sh/configs/ul2_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.28-rc2 | 3 | # Linux kernel version: 2.6.28 |
4 | # Tue Oct 28 17:35:17 2008 | 4 | # Fri Jan 9 18:22:53 2009 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
16 | # CONFIG_GENERIC_GPIO is not set | 16 | # CONFIG_GENERIC_GPIO is not set |
17 | CONFIG_GENERIC_TIME=y | 17 | CONFIG_GENERIC_TIME=y |
18 | CONFIG_GENERIC_CLOCKEVENTS=y | 18 | CONFIG_GENERIC_CLOCKEVENTS=y |
19 | # CONFIG_ARCH_SUSPEND_POSSIBLE is not set | ||
20 | # CONFIG_ARCH_HIBERNATION_POSSIBLE is not set | ||
19 | CONFIG_SYS_SUPPORTS_NUMA=y | 21 | CONFIG_SYS_SUPPORTS_NUMA=y |
20 | CONFIG_STACKTRACE_SUPPORT=y | 22 | CONFIG_STACKTRACE_SUPPORT=y |
21 | CONFIG_LOCKDEP_SUPPORT=y | 23 | CONFIG_LOCKDEP_SUPPORT=y |
@@ -80,7 +82,6 @@ CONFIG_SLUB_DEBUG=y | |||
80 | CONFIG_SLUB=y | 82 | CONFIG_SLUB=y |
81 | # CONFIG_SLOB is not set | 83 | # CONFIG_SLOB is not set |
82 | CONFIG_PROFILING=y | 84 | CONFIG_PROFILING=y |
83 | # CONFIG_MARKERS is not set | ||
84 | # CONFIG_OPROFILE is not set | 85 | # CONFIG_OPROFILE is not set |
85 | CONFIG_HAVE_OPROFILE=y | 86 | CONFIG_HAVE_OPROFILE=y |
86 | # CONFIG_KPROBES is not set | 87 | # CONFIG_KPROBES is not set |
@@ -92,7 +93,6 @@ CONFIG_HAVE_CLK=y | |||
92 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 93 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
93 | CONFIG_SLABINFO=y | 94 | CONFIG_SLABINFO=y |
94 | CONFIG_RT_MUTEXES=y | 95 | CONFIG_RT_MUTEXES=y |
95 | # CONFIG_TINY_SHMEM is not set | ||
96 | CONFIG_BASE_SMALL=0 | 96 | CONFIG_BASE_SMALL=0 |
97 | CONFIG_MODULES=y | 97 | CONFIG_MODULES=y |
98 | # CONFIG_MODULE_FORCE_LOAD is not set | 98 | # CONFIG_MODULE_FORCE_LOAD is not set |
@@ -100,11 +100,9 @@ CONFIG_MODULE_UNLOAD=y | |||
100 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 100 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
101 | # CONFIG_MODVERSIONS is not set | 101 | # CONFIG_MODVERSIONS is not set |
102 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 102 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
103 | CONFIG_KMOD=y | ||
104 | CONFIG_BLOCK=y | 103 | CONFIG_BLOCK=y |
105 | # CONFIG_LBD is not set | 104 | # CONFIG_LBD is not set |
106 | # CONFIG_BLK_DEV_IO_TRACE is not set | 105 | # CONFIG_BLK_DEV_IO_TRACE is not set |
107 | # CONFIG_LSF is not set | ||
108 | # CONFIG_BLK_DEV_BSG is not set | 106 | # CONFIG_BLK_DEV_BSG is not set |
109 | # CONFIG_BLK_DEV_INTEGRITY is not set | 107 | # CONFIG_BLK_DEV_INTEGRITY is not set |
110 | 108 | ||
@@ -121,6 +119,10 @@ CONFIG_IOSCHED_NOOP=y | |||
121 | CONFIG_DEFAULT_NOOP=y | 119 | CONFIG_DEFAULT_NOOP=y |
122 | CONFIG_DEFAULT_IOSCHED="noop" | 120 | CONFIG_DEFAULT_IOSCHED="noop" |
123 | CONFIG_CLASSIC_RCU=y | 121 | CONFIG_CLASSIC_RCU=y |
122 | # CONFIG_TREE_RCU is not set | ||
123 | # CONFIG_PREEMPT_RCU is not set | ||
124 | # CONFIG_TREE_RCU_TRACE is not set | ||
125 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
124 | # CONFIG_FREEZER is not set | 126 | # CONFIG_FREEZER is not set |
125 | 127 | ||
126 | # | 128 | # |
@@ -131,6 +133,7 @@ CONFIG_CPU_SH4A=y | |||
131 | CONFIG_CPU_SH4AL_DSP=y | 133 | CONFIG_CPU_SH4AL_DSP=y |
132 | CONFIG_CPU_SHX2=y | 134 | CONFIG_CPU_SHX2=y |
133 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 135 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
136 | # CONFIG_CPU_SUBTYPE_SH7201 is not set | ||
134 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 137 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
135 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 138 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
136 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 139 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
@@ -206,7 +209,6 @@ CONFIG_SPARSEMEM_STATIC=y | |||
206 | # CONFIG_MEMORY_HOTPLUG is not set | 209 | # CONFIG_MEMORY_HOTPLUG is not set |
207 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 210 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
208 | # CONFIG_MIGRATION is not set | 211 | # CONFIG_MIGRATION is not set |
209 | # CONFIG_RESOURCES_64BIT is not set | ||
210 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 212 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
211 | CONFIG_ZONE_DMA_FLAG=0 | 213 | CONFIG_ZONE_DMA_FLAG=0 |
212 | CONFIG_NR_QUICK=2 | 214 | CONFIG_NR_QUICK=2 |
@@ -283,7 +285,6 @@ CONFIG_KEXEC=y | |||
283 | # CONFIG_PREEMPT_NONE is not set | 285 | # CONFIG_PREEMPT_NONE is not set |
284 | # CONFIG_PREEMPT_VOLUNTARY is not set | 286 | # CONFIG_PREEMPT_VOLUNTARY is not set |
285 | CONFIG_PREEMPT=y | 287 | CONFIG_PREEMPT=y |
286 | # CONFIG_PREEMPT_RCU is not set | ||
287 | CONFIG_GUSA=y | 288 | CONFIG_GUSA=y |
288 | 289 | ||
289 | # | 290 | # |
@@ -307,11 +308,18 @@ CONFIG_BINFMT_ELF=y | |||
307 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 308 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
308 | # CONFIG_HAVE_AOUT is not set | 309 | # CONFIG_HAVE_AOUT is not set |
309 | # CONFIG_BINFMT_MISC is not set | 310 | # CONFIG_BINFMT_MISC is not set |
311 | |||
312 | # | ||
313 | # Power management options (EXPERIMENTAL) | ||
314 | # | ||
315 | # CONFIG_PM is not set | ||
316 | # CONFIG_CPU_IDLE is not set | ||
310 | CONFIG_NET=y | 317 | CONFIG_NET=y |
311 | 318 | ||
312 | # | 319 | # |
313 | # Networking options | 320 | # Networking options |
314 | # | 321 | # |
322 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
315 | CONFIG_PACKET=y | 323 | CONFIG_PACKET=y |
316 | CONFIG_PACKET_MMAP=y | 324 | CONFIG_PACKET_MMAP=y |
317 | CONFIG_UNIX=y | 325 | CONFIG_UNIX=y |
@@ -367,6 +375,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
367 | # CONFIG_ECONET is not set | 375 | # CONFIG_ECONET is not set |
368 | # CONFIG_WAN_ROUTER is not set | 376 | # CONFIG_WAN_ROUTER is not set |
369 | # CONFIG_NET_SCHED is not set | 377 | # CONFIG_NET_SCHED is not set |
378 | # CONFIG_DCB is not set | ||
370 | 379 | ||
371 | # | 380 | # |
372 | # Network testing | 381 | # Network testing |
@@ -380,10 +389,12 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
380 | # CONFIG_PHONET is not set | 389 | # CONFIG_PHONET is not set |
381 | CONFIG_WIRELESS=y | 390 | CONFIG_WIRELESS=y |
382 | CONFIG_CFG80211=y | 391 | CONFIG_CFG80211=y |
392 | # CONFIG_CFG80211_REG_DEBUG is not set | ||
383 | CONFIG_NL80211=y | 393 | CONFIG_NL80211=y |
384 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 394 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
385 | CONFIG_WIRELESS_EXT=y | 395 | CONFIG_WIRELESS_EXT=y |
386 | CONFIG_WIRELESS_EXT_SYSFS=y | 396 | CONFIG_WIRELESS_EXT_SYSFS=y |
397 | CONFIG_LIB80211=m | ||
387 | CONFIG_MAC80211=y | 398 | CONFIG_MAC80211=y |
388 | 399 | ||
389 | # | 400 | # |
@@ -397,11 +408,6 @@ CONFIG_MAC80211_RC_DEFAULT="pid" | |||
397 | # CONFIG_MAC80211_MESH is not set | 408 | # CONFIG_MAC80211_MESH is not set |
398 | # CONFIG_MAC80211_LEDS is not set | 409 | # CONFIG_MAC80211_LEDS is not set |
399 | # CONFIG_MAC80211_DEBUG_MENU is not set | 410 | # CONFIG_MAC80211_DEBUG_MENU is not set |
400 | CONFIG_IEEE80211=m | ||
401 | CONFIG_IEEE80211_DEBUG=y | ||
402 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
403 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
404 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
405 | # CONFIG_RFKILL is not set | 411 | # CONFIG_RFKILL is not set |
406 | # CONFIG_NET_9P is not set | 412 | # CONFIG_NET_9P is not set |
407 | 413 | ||
@@ -510,6 +516,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
510 | CONFIG_MISC_DEVICES=y | 516 | CONFIG_MISC_DEVICES=y |
511 | # CONFIG_EEPROM_93CX6 is not set | 517 | # CONFIG_EEPROM_93CX6 is not set |
512 | # CONFIG_ENCLOSURE_SERVICES is not set | 518 | # CONFIG_ENCLOSURE_SERVICES is not set |
519 | # CONFIG_C2PORT is not set | ||
513 | CONFIG_HAVE_IDE=y | 520 | CONFIG_HAVE_IDE=y |
514 | # CONFIG_IDE is not set | 521 | # CONFIG_IDE is not set |
515 | 522 | ||
@@ -552,6 +559,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
552 | # CONFIG_SCSI_SRP_ATTRS is not set | 559 | # CONFIG_SCSI_SRP_ATTRS is not set |
553 | CONFIG_SCSI_LOWLEVEL=y | 560 | CONFIG_SCSI_LOWLEVEL=y |
554 | # CONFIG_ISCSI_TCP is not set | 561 | # CONFIG_ISCSI_TCP is not set |
562 | # CONFIG_LIBFC is not set | ||
555 | # CONFIG_SCSI_DEBUG is not set | 563 | # CONFIG_SCSI_DEBUG is not set |
556 | # CONFIG_SCSI_DH is not set | 564 | # CONFIG_SCSI_DH is not set |
557 | CONFIG_ATA=y | 565 | CONFIG_ATA=y |
@@ -575,6 +583,7 @@ CONFIG_MII=y | |||
575 | # CONFIG_STNIC is not set | 583 | # CONFIG_STNIC is not set |
576 | # CONFIG_SMC91X is not set | 584 | # CONFIG_SMC91X is not set |
577 | # CONFIG_SMC911X is not set | 585 | # CONFIG_SMC911X is not set |
586 | # CONFIG_SMSC911X is not set | ||
578 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 587 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
579 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 588 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
580 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 589 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -714,11 +723,11 @@ CONFIG_HWMON=y | |||
714 | # CONFIG_THERMAL is not set | 723 | # CONFIG_THERMAL is not set |
715 | # CONFIG_THERMAL_HWMON is not set | 724 | # CONFIG_THERMAL_HWMON is not set |
716 | # CONFIG_WATCHDOG is not set | 725 | # CONFIG_WATCHDOG is not set |
726 | CONFIG_SSB_POSSIBLE=y | ||
717 | 727 | ||
718 | # | 728 | # |
719 | # Sonics Silicon Backplane | 729 | # Sonics Silicon Backplane |
720 | # | 730 | # |
721 | CONFIG_SSB_POSSIBLE=y | ||
722 | # CONFIG_SSB is not set | 731 | # CONFIG_SSB is not set |
723 | 732 | ||
724 | # | 733 | # |
@@ -728,6 +737,7 @@ CONFIG_SSB_POSSIBLE=y | |||
728 | # CONFIG_MFD_SM501 is not set | 737 | # CONFIG_MFD_SM501 is not set |
729 | # CONFIG_HTC_PASIC3 is not set | 738 | # CONFIG_HTC_PASIC3 is not set |
730 | # CONFIG_MFD_TMIO is not set | 739 | # CONFIG_MFD_TMIO is not set |
740 | # CONFIG_REGULATOR is not set | ||
731 | 741 | ||
732 | # | 742 | # |
733 | # Multimedia devices | 743 | # Multimedia devices |
@@ -785,7 +795,6 @@ CONFIG_USB_MON=y | |||
785 | # | 795 | # |
786 | # CONFIG_USB_C67X00_HCD is not set | 796 | # CONFIG_USB_C67X00_HCD is not set |
787 | # CONFIG_USB_ISP116X_HCD is not set | 797 | # CONFIG_USB_ISP116X_HCD is not set |
788 | # CONFIG_USB_ISP1760_HCD is not set | ||
789 | # CONFIG_USB_SL811_HCD is not set | 798 | # CONFIG_USB_SL811_HCD is not set |
790 | CONFIG_USB_R8A66597_HCD=y | 799 | CONFIG_USB_R8A66597_HCD=y |
791 | # CONFIG_SUPERH_ON_CHIP_R8A66597 is not set | 800 | # CONFIG_SUPERH_ON_CHIP_R8A66597 is not set |
@@ -800,11 +809,11 @@ CONFIG_USB_R8A66597_HCD=y | |||
800 | # CONFIG_USB_TMC is not set | 809 | # CONFIG_USB_TMC is not set |
801 | 810 | ||
802 | # | 811 | # |
803 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 812 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
804 | # | 813 | # |
805 | 814 | ||
806 | # | 815 | # |
807 | # may also be needed; see USB_STORAGE Help for more information | 816 | # see USB_STORAGE Help for more information |
808 | # | 817 | # |
809 | CONFIG_USB_STORAGE=y | 818 | CONFIG_USB_STORAGE=y |
810 | # CONFIG_USB_STORAGE_DEBUG is not set | 819 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -937,10 +946,7 @@ CONFIG_TMPFS=y | |||
937 | CONFIG_HUGETLBFS=y | 946 | CONFIG_HUGETLBFS=y |
938 | CONFIG_HUGETLB_PAGE=y | 947 | CONFIG_HUGETLB_PAGE=y |
939 | # CONFIG_CONFIGFS_FS is not set | 948 | # CONFIG_CONFIGFS_FS is not set |
940 | 949 | CONFIG_MISC_FILESYSTEMS=y | |
941 | # | ||
942 | # Miscellaneous filesystems | ||
943 | # | ||
944 | # CONFIG_ADFS_FS is not set | 950 | # CONFIG_ADFS_FS is not set |
945 | # CONFIG_AFFS_FS is not set | 951 | # CONFIG_AFFS_FS is not set |
946 | # CONFIG_HFS_FS is not set | 952 | # CONFIG_HFS_FS is not set |
@@ -1046,13 +1052,19 @@ CONFIG_FRAME_WARN=1024 | |||
1046 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1052 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1047 | # CONFIG_LATENCYTOP is not set | 1053 | # CONFIG_LATENCYTOP is not set |
1048 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | 1054 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set |
1049 | CONFIG_NOP_TRACER=y | 1055 | CONFIG_HAVE_FUNCTION_TRACER=y |
1050 | CONFIG_HAVE_FTRACE=y | 1056 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1057 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1058 | |||
1059 | # | ||
1060 | # Tracers | ||
1061 | # | ||
1051 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1062 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
1052 | # CONFIG_SAMPLES is not set | 1063 | # CONFIG_SAMPLES is not set |
1064 | CONFIG_HAVE_ARCH_KGDB=y | ||
1053 | # CONFIG_SH_STANDARD_BIOS is not set | 1065 | # CONFIG_SH_STANDARD_BIOS is not set |
1054 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1066 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1055 | # CONFIG_SH_KGDB is not set | 1067 | # CONFIG_MORE_COMPILE_OPTIONS is not set |
1056 | 1068 | ||
1057 | # | 1069 | # |
1058 | # Security options | 1070 | # Security options |
@@ -1068,11 +1080,15 @@ CONFIG_CRYPTO=y | |||
1068 | # | 1080 | # |
1069 | # CONFIG_CRYPTO_FIPS is not set | 1081 | # CONFIG_CRYPTO_FIPS is not set |
1070 | CONFIG_CRYPTO_ALGAPI=y | 1082 | CONFIG_CRYPTO_ALGAPI=y |
1071 | CONFIG_CRYPTO_AEAD=y | 1083 | CONFIG_CRYPTO_ALGAPI2=y |
1084 | CONFIG_CRYPTO_AEAD2=y | ||
1072 | CONFIG_CRYPTO_BLKCIPHER=y | 1085 | CONFIG_CRYPTO_BLKCIPHER=y |
1086 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1073 | CONFIG_CRYPTO_HASH=y | 1087 | CONFIG_CRYPTO_HASH=y |
1074 | CONFIG_CRYPTO_RNG=y | 1088 | CONFIG_CRYPTO_HASH2=y |
1089 | CONFIG_CRYPTO_RNG2=y | ||
1075 | CONFIG_CRYPTO_MANAGER=y | 1090 | CONFIG_CRYPTO_MANAGER=y |
1091 | CONFIG_CRYPTO_MANAGER2=y | ||
1076 | # CONFIG_CRYPTO_GF128MUL is not set | 1092 | # CONFIG_CRYPTO_GF128MUL is not set |
1077 | # CONFIG_CRYPTO_NULL is not set | 1093 | # CONFIG_CRYPTO_NULL is not set |
1078 | # CONFIG_CRYPTO_CRYPTD is not set | 1094 | # CONFIG_CRYPTO_CRYPTD is not set |
@@ -1155,6 +1171,7 @@ CONFIG_CRYPTO_HW=y | |||
1155 | # Library routines | 1171 | # Library routines |
1156 | # | 1172 | # |
1157 | CONFIG_BITREVERSE=y | 1173 | CONFIG_BITREVERSE=y |
1174 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1158 | # CONFIG_CRC_CCITT is not set | 1175 | # CONFIG_CRC_CCITT is not set |
1159 | # CONFIG_CRC16 is not set | 1176 | # CONFIG_CRC16 is not set |
1160 | # CONFIG_CRC_T10DIF is not set | 1177 | # CONFIG_CRC_T10DIF is not set |
diff --git a/arch/sh/include/asm/posix_types_32.h b/arch/sh/include/asm/posix_types_32.h index 0a3d2f54ab27..2172732c55c8 100644 --- a/arch/sh/include/asm/posix_types_32.h +++ b/arch/sh/include/asm/posix_types_32.h | |||
@@ -39,14 +39,10 @@ typedef long long __kernel_loff_t; | |||
39 | #endif | 39 | #endif |
40 | 40 | ||
41 | typedef struct { | 41 | typedef struct { |
42 | #if defined(__KERNEL__) || defined(__USE_ALL) | ||
43 | int val[2]; | 42 | int val[2]; |
44 | #else /* !defined(__KERNEL__) && !defined(__USE_ALL) */ | ||
45 | int __val[2]; | ||
46 | #endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */ | ||
47 | } __kernel_fsid_t; | 43 | } __kernel_fsid_t; |
48 | 44 | ||
49 | #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) | 45 | #if defined(__KERNEL__) |
50 | 46 | ||
51 | #undef __FD_SET | 47 | #undef __FD_SET |
52 | static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp) | 48 | static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp) |
@@ -117,6 +113,6 @@ static __inline__ void __FD_ZERO(__kernel_fd_set *__p) | |||
117 | } | 113 | } |
118 | } | 114 | } |
119 | 115 | ||
120 | #endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */ | 116 | #endif /* defined(__KERNEL__) */ |
121 | 117 | ||
122 | #endif /* __ASM_SH_POSIX_TYPES_H */ | 118 | #endif /* __ASM_SH_POSIX_TYPES_H */ |
diff --git a/arch/sh/include/asm/posix_types_64.h b/arch/sh/include/asm/posix_types_64.h index 0620317a6f0f..f83e9bd463d8 100644 --- a/arch/sh/include/asm/posix_types_64.h +++ b/arch/sh/include/asm/posix_types_64.h | |||
@@ -48,14 +48,10 @@ typedef long long __kernel_loff_t; | |||
48 | #endif | 48 | #endif |
49 | 49 | ||
50 | typedef struct { | 50 | typedef struct { |
51 | #if defined(__KERNEL__) || defined(__USE_ALL) | ||
52 | int val[2]; | 51 | int val[2]; |
53 | #else /* !defined(__KERNEL__) && !defined(__USE_ALL) */ | ||
54 | int __val[2]; | ||
55 | #endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */ | ||
56 | } __kernel_fsid_t; | 52 | } __kernel_fsid_t; |
57 | 53 | ||
58 | #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) | 54 | #if defined(__KERNEL__) |
59 | 55 | ||
60 | #undef __FD_SET | 56 | #undef __FD_SET |
61 | static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp) | 57 | static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp) |
@@ -126,6 +122,6 @@ static __inline__ void __FD_ZERO(__kernel_fd_set *__p) | |||
126 | } | 122 | } |
127 | } | 123 | } |
128 | 124 | ||
129 | #endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */ | 125 | #endif /* defined(__KERNEL__) */ |
130 | 126 | ||
131 | #endif /* __ASM_SH64_POSIX_TYPES_H */ | 127 | #endif /* __ASM_SH64_POSIX_TYPES_H */ |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c index 0623e377f488..4ff4dc64520c 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c | |||
@@ -112,6 +112,34 @@ static struct platform_device veu_device = { | |||
112 | .num_resources = ARRAY_SIZE(veu_resources), | 112 | .num_resources = ARRAY_SIZE(veu_resources), |
113 | }; | 113 | }; |
114 | 114 | ||
115 | static struct uio_info jpu_platform_data = { | ||
116 | .name = "JPU", | ||
117 | .version = "0", | ||
118 | .irq = 27, | ||
119 | }; | ||
120 | |||
121 | static struct resource jpu_resources[] = { | ||
122 | [0] = { | ||
123 | .name = "JPU", | ||
124 | .start = 0xfea00000, | ||
125 | .end = 0xfea102d3, | ||
126 | .flags = IORESOURCE_MEM, | ||
127 | }, | ||
128 | [1] = { | ||
129 | /* place holder for contiguous memory */ | ||
130 | }, | ||
131 | }; | ||
132 | |||
133 | static struct platform_device jpu_device = { | ||
134 | .name = "uio_pdrv_genirq", | ||
135 | .id = 2, | ||
136 | .dev = { | ||
137 | .platform_data = &jpu_platform_data, | ||
138 | }, | ||
139 | .resource = jpu_resources, | ||
140 | .num_resources = ARRAY_SIZE(jpu_resources), | ||
141 | }; | ||
142 | |||
115 | static struct plat_sci_port sci_platform_data[] = { | 143 | static struct plat_sci_port sci_platform_data[] = { |
116 | { | 144 | { |
117 | .mapbase = 0xffe00000, | 145 | .mapbase = 0xffe00000, |
@@ -152,6 +180,7 @@ static struct platform_device *sh7343_devices[] __initdata = { | |||
152 | &sci_device, | 180 | &sci_device, |
153 | &vpu_device, | 181 | &vpu_device, |
154 | &veu_device, | 182 | &veu_device, |
183 | &jpu_device, | ||
155 | }; | 184 | }; |
156 | 185 | ||
157 | static int __init sh7343_devices_setup(void) | 186 | static int __init sh7343_devices_setup(void) |
@@ -160,9 +189,11 @@ static int __init sh7343_devices_setup(void) | |||
160 | clk_always_enable("xymem0"); /* XYMEM */ | 189 | clk_always_enable("xymem0"); /* XYMEM */ |
161 | clk_always_enable("veu0"); /* VEU */ | 190 | clk_always_enable("veu0"); /* VEU */ |
162 | clk_always_enable("vpu0"); /* VPU */ | 191 | clk_always_enable("vpu0"); /* VPU */ |
192 | clk_always_enable("jpu0"); /* JPU */ | ||
163 | 193 | ||
164 | platform_resource_setup_memory(&vpu_device, "vpu", 1 << 20); | 194 | platform_resource_setup_memory(&vpu_device, "vpu", 1 << 20); |
165 | platform_resource_setup_memory(&veu_device, "veu", 2 << 20); | 195 | platform_resource_setup_memory(&veu_device, "veu", 2 << 20); |
196 | platform_resource_setup_memory(&jpu_device, "jpu", 2 << 20); | ||
166 | 197 | ||
167 | return platform_add_devices(sh7343_devices, | 198 | return platform_add_devices(sh7343_devices, |
168 | ARRAY_SIZE(sh7343_devices)); | 199 | ARRAY_SIZE(sh7343_devices)); |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c index 50cf6838ec41..5146afc156e0 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c | |||
@@ -158,7 +158,7 @@ static struct resource jpu_resources[] = { | |||
158 | [0] = { | 158 | [0] = { |
159 | .name = "JPU", | 159 | .name = "JPU", |
160 | .start = 0xfea00000, | 160 | .start = 0xfea00000, |
161 | .end = 0xfea102d0, | 161 | .end = 0xfea102d3, |
162 | .flags = IORESOURCE_MEM, | 162 | .flags = IORESOURCE_MEM, |
163 | }, | 163 | }, |
164 | [1] = { | 164 | [1] = { |
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c index a7e5f2e74bac..c90c7e5e5fee 100644 --- a/arch/sh/kernel/process_64.c +++ b/arch/sh/kernel/process_64.c | |||
@@ -520,7 +520,6 @@ asmlinkage int sys_execve(char *ufilename, char **uargv, | |||
520 | int error; | 520 | int error; |
521 | char *filename; | 521 | char *filename; |
522 | 522 | ||
523 | lock_kernel(); | ||
524 | filename = getname((char __user *)ufilename); | 523 | filename = getname((char __user *)ufilename); |
525 | error = PTR_ERR(filename); | 524 | error = PTR_ERR(filename); |
526 | if (IS_ERR(filename)) | 525 | if (IS_ERR(filename)) |
@@ -537,7 +536,6 @@ asmlinkage int sys_execve(char *ufilename, char **uargv, | |||
537 | } | 536 | } |
538 | putname(filename); | 537 | putname(filename); |
539 | out: | 538 | out: |
540 | unlock_kernel(); | ||
541 | return error; | 539 | return error; |
542 | } | 540 | } |
543 | 541 | ||
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index c0aa3d83ec0e..60dcf87ed019 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c | |||
@@ -125,20 +125,18 @@ static inline void die_if_kernel(const char *str, struct pt_regs *regs, | |||
125 | * - userspace errors just cause EFAULT to be returned, resulting in SEGV | 125 | * - userspace errors just cause EFAULT to be returned, resulting in SEGV |
126 | * - kernel/userspace interfaces cause a jump to an appropriate handler | 126 | * - kernel/userspace interfaces cause a jump to an appropriate handler |
127 | * - other kernel errors are bad | 127 | * - other kernel errors are bad |
128 | * - return 0 if fixed-up, -EFAULT if non-fatal (to the kernel) fault | ||
129 | */ | 128 | */ |
130 | static int die_if_no_fixup(const char * str, struct pt_regs * regs, long err) | 129 | static void die_if_no_fixup(const char * str, struct pt_regs * regs, long err) |
131 | { | 130 | { |
132 | if (!user_mode(regs)) { | 131 | if (!user_mode(regs)) { |
133 | const struct exception_table_entry *fixup; | 132 | const struct exception_table_entry *fixup; |
134 | fixup = search_exception_tables(regs->pc); | 133 | fixup = search_exception_tables(regs->pc); |
135 | if (fixup) { | 134 | if (fixup) { |
136 | regs->pc = fixup->fixup; | 135 | regs->pc = fixup->fixup; |
137 | return 0; | 136 | return; |
138 | } | 137 | } |
139 | die(str, regs, err); | 138 | die(str, regs, err); |
140 | } | 139 | } |
141 | return -EFAULT; | ||
142 | } | 140 | } |
143 | 141 | ||
144 | static inline void sign_extend(unsigned int count, unsigned char *dst) | 142 | static inline void sign_extend(unsigned int count, unsigned char *dst) |
@@ -314,7 +312,8 @@ static int handle_unaligned_ins(opcode_t instruction, struct pt_regs *regs, | |||
314 | /* Argh. Address not only misaligned but also non-existent. | 312 | /* Argh. Address not only misaligned but also non-existent. |
315 | * Raise an EFAULT and see if it's trapped | 313 | * Raise an EFAULT and see if it's trapped |
316 | */ | 314 | */ |
317 | return die_if_no_fixup("Fault in unaligned fixup", regs, 0); | 315 | die_if_no_fixup("Fault in unaligned fixup", regs, 0); |
316 | return -EFAULT; | ||
318 | } | 317 | } |
319 | 318 | ||
320 | /* | 319 | /* |
diff --git a/arch/sh/mm/ioremap_64.c b/arch/sh/mm/ioremap_64.c index 6e0be24d26e2..31e1bb5effbe 100644 --- a/arch/sh/mm/ioremap_64.c +++ b/arch/sh/mm/ioremap_64.c | |||
@@ -71,9 +71,9 @@ void *__ioremap(unsigned long phys_addr, unsigned long size, | |||
71 | * Ok, go for it.. | 71 | * Ok, go for it.. |
72 | */ | 72 | */ |
73 | area = get_vm_area(size, VM_IOREMAP); | 73 | area = get_vm_area(size, VM_IOREMAP); |
74 | pr_debug("Get vm_area returns %p addr %p\n",area,area->addr); | ||
75 | if (!area) | 74 | if (!area) |
76 | return NULL; | 75 | return NULL; |
76 | pr_debug("Get vm_area returns %p addr %p\n", area, area->addr); | ||
77 | area->phys_addr = phys_addr; | 77 | area->phys_addr = phys_addr; |
78 | addr = area->addr; | 78 | addr = area->addr; |
79 | if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size, | 79 | if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size, |
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index de58c02633b4..c3ea215334f6 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
@@ -36,6 +36,7 @@ config SPARC64 | |||
36 | select HAVE_KRETPROBES | 36 | select HAVE_KRETPROBES |
37 | select HAVE_KPROBES | 37 | select HAVE_KPROBES |
38 | select HAVE_LMB | 38 | select HAVE_LMB |
39 | select HAVE_SYSCALL_WRAPPERS | ||
39 | select USE_GENERIC_SMP_HELPERS if SMP | 40 | select USE_GENERIC_SMP_HELPERS if SMP |
40 | select RTC_DRV_CMOS | 41 | select RTC_DRV_CMOS |
41 | select RTC_DRV_BQ4802 | 42 | select RTC_DRV_BQ4802 |
diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/sparc64_defconfig index cde19ae78f5a..ade49941def2 100644 --- a/arch/sparc/configs/sparc64_defconfig +++ b/arch/sparc/configs/sparc64_defconfig | |||
@@ -867,8 +867,8 @@ CONFIG_I2C_ALGOBIT=y | |||
867 | # Miscellaneous I2C Chip support | 867 | # Miscellaneous I2C Chip support |
868 | # | 868 | # |
869 | # CONFIG_DS1682 is not set | 869 | # CONFIG_DS1682 is not set |
870 | # CONFIG_AT24 is not set | 870 | # CONFIG_EEPROM_AT24 is not set |
871 | # CONFIG_SENSORS_EEPROM is not set | 871 | # CONFIG_EEPROM_LEGACY is not set |
872 | # CONFIG_SENSORS_PCF8574 is not set | 872 | # CONFIG_SENSORS_PCF8574 is not set |
873 | # CONFIG_PCF8575 is not set | 873 | # CONFIG_PCF8575 is not set |
874 | # CONFIG_SENSORS_PCA9539 is not set | 874 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c index 05f1c916db06..f3b5466c389c 100644 --- a/arch/sparc/kernel/central.c +++ b/arch/sparc/kernel/central.c | |||
@@ -103,6 +103,7 @@ static int __devinit clock_board_probe(struct of_device *op, | |||
103 | p->leds_resource.name = "leds"; | 103 | p->leds_resource.name = "leds"; |
104 | 104 | ||
105 | p->leds_pdev.name = "sunfire-clockboard-leds"; | 105 | p->leds_pdev.name = "sunfire-clockboard-leds"; |
106 | p->leds_pdev.id = -1; | ||
106 | p->leds_pdev.resource = &p->leds_resource; | 107 | p->leds_pdev.resource = &p->leds_resource; |
107 | p->leds_pdev.num_resources = 1; | 108 | p->leds_pdev.num_resources = 1; |
108 | p->leds_pdev.dev.parent = &op->dev; | 109 | p->leds_pdev.dev.parent = &op->dev; |
@@ -197,6 +198,7 @@ static int __devinit fhc_probe(struct of_device *op, | |||
197 | p->leds_resource.name = "leds"; | 198 | p->leds_resource.name = "leds"; |
198 | 199 | ||
199 | p->leds_pdev.name = "sunfire-fhc-leds"; | 200 | p->leds_pdev.name = "sunfire-fhc-leds"; |
201 | p->leds_pdev.id = p->board_num; | ||
200 | p->leds_pdev.resource = &p->leds_resource; | 202 | p->leds_pdev.resource = &p->leds_resource; |
201 | p->leds_pdev.num_resources = 1; | 203 | p->leds_pdev.num_resources = 1; |
202 | p->leds_pdev.dev.parent = &op->dev; | 204 | p->leds_pdev.dev.parent = &op->dev; |
diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c index f0b825505da5..32d32b4824f5 100644 --- a/arch/sparc/kernel/cpu.c +++ b/arch/sparc/kernel/cpu.c | |||
@@ -239,14 +239,26 @@ unsigned int fsr_storage; | |||
239 | 239 | ||
240 | static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) | 240 | static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) |
241 | { | 241 | { |
242 | const struct manufacturer_info *manuf; | ||
243 | int i; | ||
244 | |||
242 | sparc_cpu_type = NULL; | 245 | sparc_cpu_type = NULL; |
243 | sparc_fpu_type = NULL; | 246 | sparc_fpu_type = NULL; |
244 | if (psr_impl < ARRAY_SIZE(manufacturer_info)) | 247 | manuf = NULL; |
248 | |||
249 | for (i = 0; i < ARRAY_SIZE(manufacturer_info); i++) | ||
250 | { | ||
251 | if (psr_impl == manufacturer_info[i].psr_impl) { | ||
252 | manuf = &manufacturer_info[i]; | ||
253 | break; | ||
254 | } | ||
255 | } | ||
256 | if (manuf != NULL) | ||
245 | { | 257 | { |
246 | const struct cpu_info *cpu; | 258 | const struct cpu_info *cpu; |
247 | const struct fpu_info *fpu; | 259 | const struct fpu_info *fpu; |
248 | 260 | ||
249 | cpu = &manufacturer_info[psr_impl].cpu_info[0]; | 261 | cpu = &manuf->cpu_info[0]; |
250 | while (cpu->psr_vers != -1) | 262 | while (cpu->psr_vers != -1) |
251 | { | 263 | { |
252 | if (cpu->psr_vers == psr_vers) { | 264 | if (cpu->psr_vers == psr_vers) { |
@@ -256,7 +268,7 @@ static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) | |||
256 | } | 268 | } |
257 | cpu++; | 269 | cpu++; |
258 | } | 270 | } |
259 | fpu = &manufacturer_info[psr_impl].fpu_info[0]; | 271 | fpu = &manuf->fpu_info[0]; |
260 | while (fpu->fp_vers != -1) | 272 | while (fpu->fp_vers != -1) |
261 | { | 273 | { |
262 | if (fpu->fp_vers == fpu_vers) { | 274 | if (fpu->fp_vers == fpu_vers) { |
diff --git a/arch/sparc/kernel/sparc_ksyms_64.c b/arch/sparc/kernel/sparc_ksyms_64.c index da8f804feb49..0f26066a08d9 100644 --- a/arch/sparc/kernel/sparc_ksyms_64.c +++ b/arch/sparc/kernel/sparc_ksyms_64.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <linux/pci.h> | 9 | #include <linux/pci.h> |
10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
11 | 11 | ||
12 | #include <asm/spinlock.h> | ||
13 | #include <asm/system.h> | 12 | #include <asm/system.h> |
14 | #include <asm/cpudata.h> | 13 | #include <asm/cpudata.h> |
15 | #include <asm/uaccess.h> | 14 | #include <asm/uaccess.h> |
@@ -23,16 +22,6 @@ struct poll { | |||
23 | short revents; | 22 | short revents; |
24 | }; | 23 | }; |
25 | 24 | ||
26 | /* used by various drivers */ | ||
27 | #ifdef CONFIG_SMP | ||
28 | /* Out of line rw-locking implementation. */ | ||
29 | EXPORT_SYMBOL(__read_lock); | ||
30 | EXPORT_SYMBOL(__read_unlock); | ||
31 | EXPORT_SYMBOL(__write_lock); | ||
32 | EXPORT_SYMBOL(__write_unlock); | ||
33 | EXPORT_SYMBOL(__write_trylock); | ||
34 | #endif /* CONFIG_SMP */ | ||
35 | |||
36 | /* from helpers.S */ | 25 | /* from helpers.S */ |
37 | EXPORT_SYMBOL(__flushw_user); | 26 | EXPORT_SYMBOL(__flushw_user); |
38 | EXPORT_SYMBOL_GPL(real_hard_smp_processor_id); | 27 | EXPORT_SYMBOL_GPL(real_hard_smp_processor_id); |
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c index 09058fc39e73..e2d102447a43 100644 --- a/arch/sparc/kernel/sys_sparc_64.c +++ b/arch/sparc/kernel/sys_sparc_64.c | |||
@@ -399,7 +399,7 @@ void arch_pick_mmap_layout(struct mm_struct *mm) | |||
399 | } | 399 | } |
400 | } | 400 | } |
401 | 401 | ||
402 | asmlinkage unsigned long sparc_brk(unsigned long brk) | 402 | SYSCALL_DEFINE1(sparc_brk, unsigned long, brk) |
403 | { | 403 | { |
404 | /* People could try to be nasty and use ta 0x6d in 32bit programs */ | 404 | /* People could try to be nasty and use ta 0x6d in 32bit programs */ |
405 | if (test_thread_flag(TIF_32BIT) && brk >= STACK_TOP32) | 405 | if (test_thread_flag(TIF_32BIT) && brk >= STACK_TOP32) |
@@ -415,7 +415,7 @@ asmlinkage unsigned long sparc_brk(unsigned long brk) | |||
415 | * sys_pipe() is the normal C calling standard for creating | 415 | * sys_pipe() is the normal C calling standard for creating |
416 | * a pipe. It's not the way unix traditionally does this, though. | 416 | * a pipe. It's not the way unix traditionally does this, though. |
417 | */ | 417 | */ |
418 | asmlinkage long sparc_pipe(struct pt_regs *regs) | 418 | SYSCALL_DEFINE1(sparc_pipe_real, struct pt_regs *, regs) |
419 | { | 419 | { |
420 | int fd[2]; | 420 | int fd[2]; |
421 | int error; | 421 | int error; |
@@ -435,8 +435,8 @@ out: | |||
435 | * This is really horribly ugly. | 435 | * This is really horribly ugly. |
436 | */ | 436 | */ |
437 | 437 | ||
438 | asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second, | 438 | SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, |
439 | unsigned long third, void __user *ptr, long fifth) | 439 | unsigned long, third, void __user *, ptr, long, fifth) |
440 | { | 440 | { |
441 | long err; | 441 | long err; |
442 | 442 | ||
@@ -519,7 +519,7 @@ out: | |||
519 | return err; | 519 | return err; |
520 | } | 520 | } |
521 | 521 | ||
522 | asmlinkage long sparc64_newuname(struct new_utsname __user *name) | 522 | SYSCALL_DEFINE1(sparc64_newuname, struct new_utsname __user *, name) |
523 | { | 523 | { |
524 | int ret = sys_newuname(name); | 524 | int ret = sys_newuname(name); |
525 | 525 | ||
@@ -530,7 +530,7 @@ asmlinkage long sparc64_newuname(struct new_utsname __user *name) | |||
530 | return ret; | 530 | return ret; |
531 | } | 531 | } |
532 | 532 | ||
533 | asmlinkage long sparc64_personality(unsigned long personality) | 533 | SYSCALL_DEFINE1(sparc64_personality, unsigned long, personality) |
534 | { | 534 | { |
535 | int ret; | 535 | int ret; |
536 | 536 | ||
@@ -564,9 +564,9 @@ int sparc_mmap_check(unsigned long addr, unsigned long len) | |||
564 | } | 564 | } |
565 | 565 | ||
566 | /* Linux version of mmap */ | 566 | /* Linux version of mmap */ |
567 | asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, | 567 | SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, |
568 | unsigned long prot, unsigned long flags, unsigned long fd, | 568 | unsigned long, prot, unsigned long, flags, unsigned long, fd, |
569 | unsigned long off) | 569 | unsigned long, off) |
570 | { | 570 | { |
571 | struct file * file = NULL; | 571 | struct file * file = NULL; |
572 | unsigned long retval = -EBADF; | 572 | unsigned long retval = -EBADF; |
@@ -589,7 +589,7 @@ out: | |||
589 | return retval; | 589 | return retval; |
590 | } | 590 | } |
591 | 591 | ||
592 | asmlinkage long sys64_munmap(unsigned long addr, size_t len) | 592 | SYSCALL_DEFINE2(64_munmap, unsigned long, addr, size_t, len) |
593 | { | 593 | { |
594 | long ret; | 594 | long ret; |
595 | 595 | ||
@@ -606,9 +606,9 @@ extern unsigned long do_mremap(unsigned long addr, | |||
606 | unsigned long old_len, unsigned long new_len, | 606 | unsigned long old_len, unsigned long new_len, |
607 | unsigned long flags, unsigned long new_addr); | 607 | unsigned long flags, unsigned long new_addr); |
608 | 608 | ||
609 | asmlinkage unsigned long sys64_mremap(unsigned long addr, | 609 | SYSCALL_DEFINE5(64_mremap, unsigned long, addr, unsigned long, old_len, |
610 | unsigned long old_len, unsigned long new_len, | 610 | unsigned long, new_len, unsigned long, flags, |
611 | unsigned long flags, unsigned long new_addr) | 611 | unsigned long, new_addr) |
612 | { | 612 | { |
613 | unsigned long ret = -EINVAL; | 613 | unsigned long ret = -EINVAL; |
614 | 614 | ||
@@ -671,7 +671,7 @@ asmlinkage void sparc_breakpoint(struct pt_regs *regs) | |||
671 | 671 | ||
672 | extern void check_pending(int signum); | 672 | extern void check_pending(int signum); |
673 | 673 | ||
674 | asmlinkage long sys_getdomainname(char __user *name, int len) | 674 | SYSCALL_DEFINE2(getdomainname, char __user *, name, int, len) |
675 | { | 675 | { |
676 | int nlen, err; | 676 | int nlen, err; |
677 | 677 | ||
@@ -694,11 +694,10 @@ out: | |||
694 | return err; | 694 | return err; |
695 | } | 695 | } |
696 | 696 | ||
697 | asmlinkage long sys_utrap_install(utrap_entry_t type, | 697 | SYSCALL_DEFINE5(utrap_install, utrap_entry_t, type, |
698 | utrap_handler_t new_p, | 698 | utrap_handler_t, new_p, utrap_handler_t, new_d, |
699 | utrap_handler_t new_d, | 699 | utrap_handler_t __user *, old_p, |
700 | utrap_handler_t __user *old_p, | 700 | utrap_handler_t __user *, old_d) |
701 | utrap_handler_t __user *old_d) | ||
702 | { | 701 | { |
703 | if (type < UT_INSTRUCTION_EXCEPTION || type > UT_TRAP_INSTRUCTION_31) | 702 | if (type < UT_INSTRUCTION_EXCEPTION || type > UT_TRAP_INSTRUCTION_31) |
704 | return -EINVAL; | 703 | return -EINVAL; |
@@ -764,11 +763,9 @@ asmlinkage long sparc_memory_ordering(unsigned long model, | |||
764 | return 0; | 763 | return 0; |
765 | } | 764 | } |
766 | 765 | ||
767 | asmlinkage long sys_rt_sigaction(int sig, | 766 | SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act, |
768 | const struct sigaction __user *act, | 767 | struct sigaction __user *, oact, void __user *, restorer, |
769 | struct sigaction __user *oact, | 768 | size_t, sigsetsize) |
770 | void __user *restorer, | ||
771 | size_t sigsetsize) | ||
772 | { | 769 | { |
773 | struct k_sigaction new_ka, old_ka; | 770 | struct k_sigaction new_ka, old_ka; |
774 | int ret; | 771 | int ret; |
@@ -808,7 +805,8 @@ asmlinkage void update_perfctrs(void) | |||
808 | reset_pic(); | 805 | reset_pic(); |
809 | } | 806 | } |
810 | 807 | ||
811 | asmlinkage long sys_perfctr(int opcode, unsigned long arg0, unsigned long arg1, unsigned long arg2) | 808 | SYSCALL_DEFINE4(perfctr, int, opcode, unsigned long, arg0, |
809 | unsigned long, arg1, unsigned long, arg2) | ||
812 | { | 810 | { |
813 | int err = 0; | 811 | int err = 0; |
814 | 812 | ||
diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S index 87f5a3b8a253..d150c2aa98d2 100644 --- a/arch/sparc/kernel/syscalls.S +++ b/arch/sparc/kernel/syscalls.S | |||
@@ -21,7 +21,7 @@ execve_merge: | |||
21 | 21 | ||
22 | .align 32 | 22 | .align 32 |
23 | sys_sparc_pipe: | 23 | sys_sparc_pipe: |
24 | ba,pt %xcc, sparc_pipe | 24 | ba,pt %xcc, sys_sparc_pipe_real |
25 | add %sp, PTREGS_OFF, %o0 | 25 | add %sp, PTREGS_OFF, %o0 |
26 | sys_nis_syscall: | 26 | sys_nis_syscall: |
27 | ba,pt %xcc, c_sys_nis_syscall | 27 | ba,pt %xcc, c_sys_nis_syscall |
diff --git a/arch/sparc/kernel/systbls.h b/arch/sparc/kernel/systbls.h index bc9f5dac4069..15c2d752b2bc 100644 --- a/arch/sparc/kernel/systbls.h +++ b/arch/sparc/kernel/systbls.h | |||
@@ -16,9 +16,6 @@ extern asmlinkage long sys_ipc(unsigned int call, int first, | |||
16 | void __user *ptr, long fifth); | 16 | void __user *ptr, long fifth); |
17 | extern asmlinkage long sparc64_newuname(struct new_utsname __user *name); | 17 | extern asmlinkage long sparc64_newuname(struct new_utsname __user *name); |
18 | extern asmlinkage long sparc64_personality(unsigned long personality); | 18 | extern asmlinkage long sparc64_personality(unsigned long personality); |
19 | extern asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, | ||
20 | unsigned long prot, unsigned long flags, | ||
21 | unsigned long fd, unsigned long off); | ||
22 | extern asmlinkage long sys64_munmap(unsigned long addr, size_t len); | 19 | extern asmlinkage long sys64_munmap(unsigned long addr, size_t len); |
23 | extern asmlinkage unsigned long sys64_mremap(unsigned long addr, | 20 | extern asmlinkage unsigned long sys64_mremap(unsigned long addr, |
24 | unsigned long old_len, | 21 | unsigned long old_len, |
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index e6007bb37046..f93c42a2b522 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S | |||
@@ -21,7 +21,7 @@ sys_call_table32: | |||
21 | /*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write | 21 | /*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write |
22 | /*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link | 22 | /*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link |
23 | /*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod | 23 | /*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod |
24 | /*15*/ .word sys_chmod, sys_lchown16, sparc_brk, sys32_perfctr, sys32_lseek | 24 | /*15*/ .word sys_chmod, sys_lchown16, sys_sparc_brk, sys32_perfctr, sys32_lseek |
25 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 | 25 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 |
26 | /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause | 26 | /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause |
27 | /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice | 27 | /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice |
@@ -55,8 +55,8 @@ sys_call_table32: | |||
55 | /*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents | 55 | /*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents |
56 | .word sys_setsid, sys_fchdir, sys32_fgetxattr, sys_listxattr, sys_llistxattr | 56 | .word sys_setsid, sys_fchdir, sys32_fgetxattr, sys_listxattr, sys_llistxattr |
57 | /*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall | 57 | /*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall |
58 | .word sys32_setpgid, sys32_fremovexattr, sys32_tkill, sys32_exit_group, sparc64_newuname | 58 | .word sys32_setpgid, sys32_fremovexattr, sys32_tkill, sys32_exit_group, sys_sparc64_newuname |
59 | /*190*/ .word sys32_init_module, sparc64_personality, sys_remap_file_pages, sys32_epoll_create, sys32_epoll_ctl | 59 | /*190*/ .word sys32_init_module, sys_sparc64_personality, sys_remap_file_pages, sys32_epoll_create, sys32_epoll_ctl |
60 | .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask | 60 | .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask |
61 | /*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir | 61 | /*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir |
62 | .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64 | 62 | .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64 |
@@ -95,7 +95,7 @@ sys_call_table: | |||
95 | /*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write | 95 | /*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write |
96 | /*5*/ .word sys_open, sys_close, sys_wait4, sys_creat, sys_link | 96 | /*5*/ .word sys_open, sys_close, sys_wait4, sys_creat, sys_link |
97 | /*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod | 97 | /*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod |
98 | /*15*/ .word sys_chmod, sys_lchown, sparc_brk, sys_perfctr, sys_lseek | 98 | /*15*/ .word sys_chmod, sys_lchown, sys_sparc_brk, sys_perfctr, sys_lseek |
99 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid | 99 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid |
100 | /*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall | 100 | /*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall |
101 | /*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice | 101 | /*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice |
@@ -106,7 +106,7 @@ sys_call_table: | |||
106 | .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve | 106 | .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve |
107 | /*60*/ .word sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize | 107 | /*60*/ .word sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize |
108 | .word sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_nis_syscall | 108 | .word sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_nis_syscall |
109 | /*70*/ .word sys_nis_syscall, sys_mmap, sys_nis_syscall, sys64_munmap, sys_mprotect | 109 | /*70*/ .word sys_nis_syscall, sys_mmap, sys_nis_syscall, sys_64_munmap, sys_mprotect |
110 | .word sys_madvise, sys_vhangup, sys_nis_syscall, sys_mincore, sys_getgroups | 110 | .word sys_madvise, sys_vhangup, sys_nis_syscall, sys_mincore, sys_getgroups |
111 | /*80*/ .word sys_setgroups, sys_getpgrp, sys_nis_syscall, sys_setitimer, sys_nis_syscall | 111 | /*80*/ .word sys_setgroups, sys_getpgrp, sys_nis_syscall, sys_setitimer, sys_nis_syscall |
112 | .word sys_swapon, sys_getitimer, sys_nis_syscall, sys_sethostname, sys_nis_syscall | 112 | .word sys_swapon, sys_getitimer, sys_nis_syscall, sys_sethostname, sys_nis_syscall |
@@ -129,8 +129,8 @@ sys_call_table: | |||
129 | /*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents | 129 | /*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents |
130 | .word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr | 130 | .word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr |
131 | /*180*/ .word sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_nis_syscall, sys_ni_syscall | 131 | /*180*/ .word sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_nis_syscall, sys_ni_syscall |
132 | .word sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sparc64_newuname | 132 | .word sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_sparc64_newuname |
133 | /*190*/ .word sys_init_module, sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl | 133 | /*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl |
134 | .word sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_nis_syscall, sys_sgetmask | 134 | .word sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_nis_syscall, sys_sgetmask |
135 | /*200*/ .word sys_ssetmask, sys_nis_syscall, sys_newlstat, sys_uselib, sys_nis_syscall | 135 | /*200*/ .word sys_ssetmask, sys_nis_syscall, sys_newlstat, sys_uselib, sys_nis_syscall |
136 | .word sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64 | 136 | .word sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64 |
@@ -142,7 +142,7 @@ sys_call_table: | |||
142 | .word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall | 142 | .word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall |
143 | /*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler | 143 | /*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler |
144 | .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep | 144 | .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep |
145 | /*250*/ .word sys64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl | 145 | /*250*/ .word sys_64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl |
146 | .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep | 146 | .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep |
147 | /*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun | 147 | /*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun |
148 | .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy | 148 | .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy |
diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c index c2d153d46586..d809c4ebb48f 100644 --- a/arch/sparc/kernel/traps_64.c +++ b/arch/sparc/kernel/traps_64.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* arch/sparc64/kernel/traps.c | 1 | /* arch/sparc64/kernel/traps.c |
2 | * | 2 | * |
3 | * Copyright (C) 1995,1997,2008 David S. Miller (davem@davemloft.net) | 3 | * Copyright (C) 1995,1997,2008,2009 David S. Miller (davem@davemloft.net) |
4 | * Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com) | 4 | * Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com) |
5 | */ | 5 | */ |
6 | 6 | ||
@@ -314,6 +314,21 @@ void sun4v_data_access_exception(struct pt_regs *regs, unsigned long addr, unsig | |||
314 | return; | 314 | return; |
315 | 315 | ||
316 | if (regs->tstate & TSTATE_PRIV) { | 316 | if (regs->tstate & TSTATE_PRIV) { |
317 | /* Test if this comes from uaccess places. */ | ||
318 | const struct exception_table_entry *entry; | ||
319 | |||
320 | entry = search_exception_tables(regs->tpc); | ||
321 | if (entry) { | ||
322 | /* Ouch, somebody is trying VM hole tricks on us... */ | ||
323 | #ifdef DEBUG_EXCEPTIONS | ||
324 | printk("Exception: PC<%016lx> faddr<UNKNOWN>\n", regs->tpc); | ||
325 | printk("EX_TABLE: insn<%016lx> fixup<%016lx>\n", | ||
326 | regs->tpc, entry->fixup); | ||
327 | #endif | ||
328 | regs->tpc = entry->fixup; | ||
329 | regs->tnpc = regs->tpc + 4; | ||
330 | return; | ||
331 | } | ||
317 | printk("sun4v_data_access_exception: ADDR[%016lx] " | 332 | printk("sun4v_data_access_exception: ADDR[%016lx] " |
318 | "CTX[%04x] TYPE[%04x], going.\n", | 333 | "CTX[%04x] TYPE[%04x], going.\n", |
319 | addr, ctx, type); | 334 | addr, ctx, type); |
diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile index 273fc85269fc..e75faf0e59ae 100644 --- a/arch/sparc/lib/Makefile +++ b/arch/sparc/lib/Makefile | |||
@@ -18,7 +18,7 @@ lib-$(CONFIG_SPARC32) += lshrdi3.o ashldi3.o | |||
18 | lib-y += rwsem_$(BITS).o | 18 | lib-y += rwsem_$(BITS).o |
19 | lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o | 19 | lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o |
20 | 20 | ||
21 | lib-$(CONFIG_SPARC64) += PeeCeeI.o copy_page.o clear_page.o bzero.o | 21 | lib-$(CONFIG_SPARC64) += copy_page.o clear_page.o bzero.o |
22 | lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o | 22 | lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o |
23 | lib-$(CONFIG_SPARC64) += VISsave.o | 23 | lib-$(CONFIG_SPARC64) += VISsave.o |
24 | lib-$(CONFIG_SPARC64) += bitops.o | 24 | lib-$(CONFIG_SPARC64) += bitops.o |
@@ -43,3 +43,4 @@ lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o | |||
43 | obj-y += iomap.o | 43 | obj-y += iomap.o |
44 | obj-$(CONFIG_SPARC32) += atomic32.o | 44 | obj-$(CONFIG_SPARC32) += atomic32.o |
45 | obj-y += ksyms.o | 45 | obj-y += ksyms.o |
46 | obj-$(CONFIG_SPARC64) += PeeCeeI.o | ||
diff --git a/arch/x86/configs/i386_defconfig b/arch/x86/configs/i386_defconfig index b30a08ed8eb4..edba00d98ac3 100644 --- a/arch/x86/configs/i386_defconfig +++ b/arch/x86/configs/i386_defconfig | |||
@@ -1331,8 +1331,8 @@ CONFIG_I2C_I801=y | |||
1331 | # Miscellaneous I2C Chip support | 1331 | # Miscellaneous I2C Chip support |
1332 | # | 1332 | # |
1333 | # CONFIG_DS1682 is not set | 1333 | # CONFIG_DS1682 is not set |
1334 | # CONFIG_AT24 is not set | 1334 | # CONFIG_EEPROM_AT24 is not set |
1335 | # CONFIG_SENSORS_EEPROM is not set | 1335 | # CONFIG_EEPROM_LEGACY is not set |
1336 | # CONFIG_SENSORS_PCF8574 is not set | 1336 | # CONFIG_SENSORS_PCF8574 is not set |
1337 | # CONFIG_PCF8575 is not set | 1337 | # CONFIG_PCF8575 is not set |
1338 | # CONFIG_SENSORS_PCA9539 is not set | 1338 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/x86/configs/x86_64_defconfig b/arch/x86/configs/x86_64_defconfig index 0e7dbc0a3e46..322dd2748fc9 100644 --- a/arch/x86/configs/x86_64_defconfig +++ b/arch/x86/configs/x86_64_defconfig | |||
@@ -1311,8 +1311,8 @@ CONFIG_I2C_I801=y | |||
1311 | # Miscellaneous I2C Chip support | 1311 | # Miscellaneous I2C Chip support |
1312 | # | 1312 | # |
1313 | # CONFIG_DS1682 is not set | 1313 | # CONFIG_DS1682 is not set |
1314 | # CONFIG_AT24 is not set | 1314 | # CONFIG_EEPROM_AT24 is not set |
1315 | # CONFIG_SENSORS_EEPROM is not set | 1315 | # CONFIG_EEPROM_LEGACY is not set |
1316 | # CONFIG_SENSORS_PCF8574 is not set | 1316 | # CONFIG_SENSORS_PCF8574 is not set |
1317 | # CONFIG_PCF8575 is not set | 1317 | # CONFIG_PCF8575 is not set |
1318 | # CONFIG_SENSORS_PCA9539 is not set | 1318 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h index e02a359d2aa5..02b47a603fc8 100644 --- a/arch/x86/include/asm/bitops.h +++ b/arch/x86/include/asm/bitops.h | |||
@@ -3,6 +3,9 @@ | |||
3 | 3 | ||
4 | /* | 4 | /* |
5 | * Copyright 1992, Linus Torvalds. | 5 | * Copyright 1992, Linus Torvalds. |
6 | * | ||
7 | * Note: inlines with more than a single statement should be marked | ||
8 | * __always_inline to avoid problems with older gcc's inlining heuristics. | ||
6 | */ | 9 | */ |
7 | 10 | ||
8 | #ifndef _LINUX_BITOPS_H | 11 | #ifndef _LINUX_BITOPS_H |
@@ -53,7 +56,8 @@ | |||
53 | * Note that @nr may be almost arbitrarily large; this function is not | 56 | * Note that @nr may be almost arbitrarily large; this function is not |
54 | * restricted to acting on a single-word quantity. | 57 | * restricted to acting on a single-word quantity. |
55 | */ | 58 | */ |
56 | static inline void set_bit(unsigned int nr, volatile unsigned long *addr) | 59 | static __always_inline void |
60 | set_bit(unsigned int nr, volatile unsigned long *addr) | ||
57 | { | 61 | { |
58 | if (IS_IMMEDIATE(nr)) { | 62 | if (IS_IMMEDIATE(nr)) { |
59 | asm volatile(LOCK_PREFIX "orb %1,%0" | 63 | asm volatile(LOCK_PREFIX "orb %1,%0" |
@@ -90,7 +94,8 @@ static inline void __set_bit(int nr, volatile unsigned long *addr) | |||
90 | * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit() | 94 | * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit() |
91 | * in order to ensure changes are visible on other processors. | 95 | * in order to ensure changes are visible on other processors. |
92 | */ | 96 | */ |
93 | static inline void clear_bit(int nr, volatile unsigned long *addr) | 97 | static __always_inline void |
98 | clear_bit(int nr, volatile unsigned long *addr) | ||
94 | { | 99 | { |
95 | if (IS_IMMEDIATE(nr)) { | 100 | if (IS_IMMEDIATE(nr)) { |
96 | asm volatile(LOCK_PREFIX "andb %1,%0" | 101 | asm volatile(LOCK_PREFIX "andb %1,%0" |
@@ -204,7 +209,8 @@ static inline int test_and_set_bit(int nr, volatile unsigned long *addr) | |||
204 | * | 209 | * |
205 | * This is the same as test_and_set_bit on x86. | 210 | * This is the same as test_and_set_bit on x86. |
206 | */ | 211 | */ |
207 | static inline int test_and_set_bit_lock(int nr, volatile unsigned long *addr) | 212 | static __always_inline int |
213 | test_and_set_bit_lock(int nr, volatile unsigned long *addr) | ||
208 | { | 214 | { |
209 | return test_and_set_bit(nr, addr); | 215 | return test_and_set_bit(nr, addr); |
210 | } | 216 | } |
@@ -300,7 +306,7 @@ static inline int test_and_change_bit(int nr, volatile unsigned long *addr) | |||
300 | return oldbit; | 306 | return oldbit; |
301 | } | 307 | } |
302 | 308 | ||
303 | static inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) | 309 | static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) |
304 | { | 310 | { |
305 | return ((1UL << (nr % BITS_PER_LONG)) & | 311 | return ((1UL << (nr % BITS_PER_LONG)) & |
306 | (((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0; | 312 | (((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0; |
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h index 05cfed4485fa..1dbbdf4be9b4 100644 --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h | |||
@@ -99,7 +99,6 @@ extern void __iomem *ioremap_wc(unsigned long offset, unsigned long size); | |||
99 | * A boot-time mapping is currently limited to at most 16 pages. | 99 | * A boot-time mapping is currently limited to at most 16 pages. |
100 | */ | 100 | */ |
101 | extern void early_ioremap_init(void); | 101 | extern void early_ioremap_init(void); |
102 | extern void early_ioremap_clear(void); | ||
103 | extern void early_ioremap_reset(void); | 102 | extern void early_ioremap_reset(void); |
104 | extern void __iomem *early_ioremap(unsigned long offset, unsigned long size); | 103 | extern void __iomem *early_ioremap(unsigned long offset, unsigned long size); |
105 | extern void __iomem *early_memremap(unsigned long offset, unsigned long size); | 104 | extern void __iomem *early_memremap(unsigned long offset, unsigned long size); |
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h index cb58643947b9..358acc59ae04 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h | |||
@@ -202,6 +202,35 @@ | |||
202 | #define MSR_IA32_THERM_STATUS 0x0000019c | 202 | #define MSR_IA32_THERM_STATUS 0x0000019c |
203 | #define MSR_IA32_MISC_ENABLE 0x000001a0 | 203 | #define MSR_IA32_MISC_ENABLE 0x000001a0 |
204 | 204 | ||
205 | /* MISC_ENABLE bits: architectural */ | ||
206 | #define MSR_IA32_MISC_ENABLE_FAST_STRING (1ULL << 0) | ||
207 | #define MSR_IA32_MISC_ENABLE_TCC (1ULL << 1) | ||
208 | #define MSR_IA32_MISC_ENABLE_EMON (1ULL << 7) | ||
209 | #define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL (1ULL << 11) | ||
210 | #define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL (1ULL << 12) | ||
211 | #define MSR_IA32_MISC_ENABLE_ENHANCED_SPEEDSTEP (1ULL << 16) | ||
212 | #define MSR_IA32_MISC_ENABLE_MWAIT (1ULL << 18) | ||
213 | #define MSR_IA32_MISC_ENABLE_LIMIT_CPUID (1ULL << 22) | ||
214 | #define MSR_IA32_MISC_ENABLE_XTPR_DISABLE (1ULL << 23) | ||
215 | #define MSR_IA32_MISC_ENABLE_XD_DISABLE (1ULL << 34) | ||
216 | |||
217 | /* MISC_ENABLE bits: model-specific, meaning may vary from core to core */ | ||
218 | #define MSR_IA32_MISC_ENABLE_X87_COMPAT (1ULL << 2) | ||
219 | #define MSR_IA32_MISC_ENABLE_TM1 (1ULL << 3) | ||
220 | #define MSR_IA32_MISC_ENABLE_SPLIT_LOCK_DISABLE (1ULL << 4) | ||
221 | #define MSR_IA32_MISC_ENABLE_L3CACHE_DISABLE (1ULL << 6) | ||
222 | #define MSR_IA32_MISC_ENABLE_SUPPRESS_LOCK (1ULL << 8) | ||
223 | #define MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE (1ULL << 9) | ||
224 | #define MSR_IA32_MISC_ENABLE_FERR (1ULL << 10) | ||
225 | #define MSR_IA32_MISC_ENABLE_FERR_MULTIPLEX (1ULL << 10) | ||
226 | #define MSR_IA32_MISC_ENABLE_TM2 (1ULL << 13) | ||
227 | #define MSR_IA32_MISC_ENABLE_ADJ_PREF_DISABLE (1ULL << 19) | ||
228 | #define MSR_IA32_MISC_ENABLE_SPEEDSTEP_LOCK (1ULL << 20) | ||
229 | #define MSR_IA32_MISC_ENABLE_L1D_CONTEXT (1ULL << 24) | ||
230 | #define MSR_IA32_MISC_ENABLE_DCU_PREF_DISABLE (1ULL << 37) | ||
231 | #define MSR_IA32_MISC_ENABLE_TURBO_DISABLE (1ULL << 38) | ||
232 | #define MSR_IA32_MISC_ENABLE_IP_PREF_DISABLE (1ULL << 39) | ||
233 | |||
205 | /* Intel Model 6 */ | 234 | /* Intel Model 6 */ |
206 | #define MSR_P6_EVNTSEL0 0x00000186 | 235 | #define MSR_P6_EVNTSEL0 0x00000186 |
207 | #define MSR_P6_EVNTSEL1 0x00000187 | 236 | #define MSR_P6_EVNTSEL1 0x00000187 |
diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h index cb7c151a8bff..dd14c54ac718 100644 --- a/arch/x86/include/asm/pgalloc.h +++ b/arch/x86/include/asm/pgalloc.h | |||
@@ -42,6 +42,7 @@ static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) | |||
42 | 42 | ||
43 | static inline void pte_free(struct mm_struct *mm, struct page *pte) | 43 | static inline void pte_free(struct mm_struct *mm, struct page *pte) |
44 | { | 44 | { |
45 | pgtable_page_dtor(pte); | ||
45 | __free_page(pte); | 46 | __free_page(pte); |
46 | } | 47 | } |
47 | 48 | ||
diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h index 9c6797c3e56c..c0b0bda754ee 100644 --- a/arch/x86/include/asm/syscalls.h +++ b/arch/x86/include/asm/syscalls.h | |||
@@ -40,7 +40,7 @@ asmlinkage int sys_sigaction(int, const struct old_sigaction __user *, | |||
40 | struct old_sigaction __user *); | 40 | struct old_sigaction __user *); |
41 | asmlinkage int sys_sigaltstack(unsigned long); | 41 | asmlinkage int sys_sigaltstack(unsigned long); |
42 | asmlinkage unsigned long sys_sigreturn(unsigned long); | 42 | asmlinkage unsigned long sys_sigreturn(unsigned long); |
43 | asmlinkage int sys_rt_sigreturn(struct pt_regs); | 43 | asmlinkage int sys_rt_sigreturn(unsigned long); |
44 | 44 | ||
45 | /* kernel/ioport.c */ | 45 | /* kernel/ioport.c */ |
46 | asmlinkage long sys_iopl(unsigned long); | 46 | asmlinkage long sys_iopl(unsigned long); |
diff --git a/arch/x86/include/asm/timex.h b/arch/x86/include/asm/timex.h index 1287dc1347d6..b5c9d45c981f 100644 --- a/arch/x86/include/asm/timex.h +++ b/arch/x86/include/asm/timex.h | |||
@@ -1,18 +1,13 @@ | |||
1 | /* x86 architecture timex specifications */ | ||
2 | #ifndef _ASM_X86_TIMEX_H | 1 | #ifndef _ASM_X86_TIMEX_H |
3 | #define _ASM_X86_TIMEX_H | 2 | #define _ASM_X86_TIMEX_H |
4 | 3 | ||
5 | #include <asm/processor.h> | 4 | #include <asm/processor.h> |
6 | #include <asm/tsc.h> | 5 | #include <asm/tsc.h> |
7 | 6 | ||
8 | #ifdef CONFIG_X86_ELAN | 7 | /* The PIT ticks at this frequency (in HZ): */ |
9 | # define PIT_TICK_RATE 1189200 /* AMD Elan has different frequency! */ | 8 | #define PIT_TICK_RATE 1193182 |
10 | #elif defined(CONFIG_X86_RDC321X) | 9 | |
11 | # define PIT_TICK_RATE 1041667 /* Underlying HZ for R8610 */ | 10 | #define CLOCK_TICK_RATE PIT_TICK_RATE |
12 | #else | ||
13 | # define PIT_TICK_RATE 1193182 /* Underlying HZ */ | ||
14 | #endif | ||
15 | #define CLOCK_TICK_RATE PIT_TICK_RATE | ||
16 | 11 | ||
17 | #define ARCH_HAS_READ_CURRENT_TIMER | 12 | #define ARCH_HAS_READ_CURRENT_TIMER |
18 | 13 | ||
diff --git a/arch/x86/kernel/apic.c b/arch/x86/kernel/apic.c index 0f830e4f5675..4b6df2469fe3 100644 --- a/arch/x86/kernel/apic.c +++ b/arch/x86/kernel/apic.c | |||
@@ -895,6 +895,10 @@ void disable_local_APIC(void) | |||
895 | { | 895 | { |
896 | unsigned int value; | 896 | unsigned int value; |
897 | 897 | ||
898 | /* APIC hasn't been mapped yet */ | ||
899 | if (!apic_phys) | ||
900 | return; | ||
901 | |||
898 | clear_local_APIC(); | 902 | clear_local_APIC(); |
899 | 903 | ||
900 | /* | 904 | /* |
@@ -1833,6 +1837,11 @@ void __cpuinit generic_processor_info(int apicid, int version) | |||
1833 | num_processors++; | 1837 | num_processors++; |
1834 | cpu = cpumask_next_zero(-1, cpu_present_mask); | 1838 | cpu = cpumask_next_zero(-1, cpu_present_mask); |
1835 | 1839 | ||
1840 | if (version != apic_version[boot_cpu_physical_apicid]) | ||
1841 | WARN_ONCE(1, | ||
1842 | "ACPI: apic version mismatch, bootcpu: %x cpu %d: %x\n", | ||
1843 | apic_version[boot_cpu_physical_apicid], cpu, version); | ||
1844 | |||
1836 | physid_set(apicid, phys_cpu_present_map); | 1845 | physid_set(apicid, phys_cpu_present_map); |
1837 | if (apicid == boot_cpu_physical_apicid) { | 1846 | if (apicid == boot_cpu_physical_apicid) { |
1838 | /* | 1847 | /* |
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c index 6f11e029e8c5..4b1c319d30c3 100644 --- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | |||
@@ -145,13 +145,14 @@ typedef union { | |||
145 | 145 | ||
146 | struct drv_cmd { | 146 | struct drv_cmd { |
147 | unsigned int type; | 147 | unsigned int type; |
148 | cpumask_var_t mask; | 148 | const struct cpumask *mask; |
149 | drv_addr_union addr; | 149 | drv_addr_union addr; |
150 | u32 val; | 150 | u32 val; |
151 | }; | 151 | }; |
152 | 152 | ||
153 | static void do_drv_read(struct drv_cmd *cmd) | 153 | static long do_drv_read(void *_cmd) |
154 | { | 154 | { |
155 | struct drv_cmd *cmd = _cmd; | ||
155 | u32 h; | 156 | u32 h; |
156 | 157 | ||
157 | switch (cmd->type) { | 158 | switch (cmd->type) { |
@@ -166,10 +167,12 @@ static void do_drv_read(struct drv_cmd *cmd) | |||
166 | default: | 167 | default: |
167 | break; | 168 | break; |
168 | } | 169 | } |
170 | return 0; | ||
169 | } | 171 | } |
170 | 172 | ||
171 | static void do_drv_write(struct drv_cmd *cmd) | 173 | static long do_drv_write(void *_cmd) |
172 | { | 174 | { |
175 | struct drv_cmd *cmd = _cmd; | ||
173 | u32 lo, hi; | 176 | u32 lo, hi; |
174 | 177 | ||
175 | switch (cmd->type) { | 178 | switch (cmd->type) { |
@@ -186,30 +189,23 @@ static void do_drv_write(struct drv_cmd *cmd) | |||
186 | default: | 189 | default: |
187 | break; | 190 | break; |
188 | } | 191 | } |
192 | return 0; | ||
189 | } | 193 | } |
190 | 194 | ||
191 | static void drv_read(struct drv_cmd *cmd) | 195 | static void drv_read(struct drv_cmd *cmd) |
192 | { | 196 | { |
193 | cpumask_t saved_mask = current->cpus_allowed; | ||
194 | cmd->val = 0; | 197 | cmd->val = 0; |
195 | 198 | ||
196 | set_cpus_allowed_ptr(current, cmd->mask); | 199 | work_on_cpu(cpumask_any(cmd->mask), do_drv_read, cmd); |
197 | do_drv_read(cmd); | ||
198 | set_cpus_allowed_ptr(current, &saved_mask); | ||
199 | } | 200 | } |
200 | 201 | ||
201 | static void drv_write(struct drv_cmd *cmd) | 202 | static void drv_write(struct drv_cmd *cmd) |
202 | { | 203 | { |
203 | cpumask_t saved_mask = current->cpus_allowed; | ||
204 | unsigned int i; | 204 | unsigned int i; |
205 | 205 | ||
206 | for_each_cpu(i, cmd->mask) { | 206 | for_each_cpu(i, cmd->mask) { |
207 | set_cpus_allowed_ptr(current, cpumask_of(i)); | 207 | work_on_cpu(i, do_drv_write, cmd); |
208 | do_drv_write(cmd); | ||
209 | } | 208 | } |
210 | |||
211 | set_cpus_allowed_ptr(current, &saved_mask); | ||
212 | return; | ||
213 | } | 209 | } |
214 | 210 | ||
215 | static u32 get_cur_val(const struct cpumask *mask) | 211 | static u32 get_cur_val(const struct cpumask *mask) |
@@ -235,8 +231,7 @@ static u32 get_cur_val(const struct cpumask *mask) | |||
235 | return 0; | 231 | return 0; |
236 | } | 232 | } |
237 | 233 | ||
238 | cpumask_copy(cmd.mask, mask); | 234 | cmd.mask = mask; |
239 | |||
240 | drv_read(&cmd); | 235 | drv_read(&cmd); |
241 | 236 | ||
242 | dprintk("get_cur_val = %u\n", cmd.val); | 237 | dprintk("get_cur_val = %u\n", cmd.val); |
@@ -368,7 +363,7 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cpu) | |||
368 | return freq; | 363 | return freq; |
369 | } | 364 | } |
370 | 365 | ||
371 | static unsigned int check_freqs(const cpumask_t *mask, unsigned int freq, | 366 | static unsigned int check_freqs(const struct cpumask *mask, unsigned int freq, |
372 | struct acpi_cpufreq_data *data) | 367 | struct acpi_cpufreq_data *data) |
373 | { | 368 | { |
374 | unsigned int cur_freq; | 369 | unsigned int cur_freq; |
@@ -403,9 +398,6 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy, | |||
403 | return -ENODEV; | 398 | return -ENODEV; |
404 | } | 399 | } |
405 | 400 | ||
406 | if (unlikely(!alloc_cpumask_var(&cmd.mask, GFP_KERNEL))) | ||
407 | return -ENOMEM; | ||
408 | |||
409 | perf = data->acpi_data; | 401 | perf = data->acpi_data; |
410 | result = cpufreq_frequency_table_target(policy, | 402 | result = cpufreq_frequency_table_target(policy, |
411 | data->freq_table, | 403 | data->freq_table, |
@@ -450,9 +442,9 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy, | |||
450 | 442 | ||
451 | /* cpufreq holds the hotplug lock, so we are safe from here on */ | 443 | /* cpufreq holds the hotplug lock, so we are safe from here on */ |
452 | if (policy->shared_type != CPUFREQ_SHARED_TYPE_ANY) | 444 | if (policy->shared_type != CPUFREQ_SHARED_TYPE_ANY) |
453 | cpumask_and(cmd.mask, cpu_online_mask, policy->cpus); | 445 | cmd.mask = policy->cpus; |
454 | else | 446 | else |
455 | cpumask_copy(cmd.mask, cpumask_of(policy->cpu)); | 447 | cmd.mask = cpumask_of(policy->cpu); |
456 | 448 | ||
457 | freqs.old = perf->states[perf->state].core_frequency * 1000; | 449 | freqs.old = perf->states[perf->state].core_frequency * 1000; |
458 | freqs.new = data->freq_table[next_state].frequency; | 450 | freqs.new = data->freq_table[next_state].frequency; |
@@ -479,7 +471,6 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy, | |||
479 | perf->state = next_perf_state; | 471 | perf->state = next_perf_state; |
480 | 472 | ||
481 | out: | 473 | out: |
482 | free_cpumask_var(cmd.mask); | ||
483 | return result; | 474 | return result; |
484 | } | 475 | } |
485 | 476 | ||
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 8ea6929e974c..549f2ada55f5 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c | |||
@@ -29,6 +29,19 @@ | |||
29 | 29 | ||
30 | static void __cpuinit early_init_intel(struct cpuinfo_x86 *c) | 30 | static void __cpuinit early_init_intel(struct cpuinfo_x86 *c) |
31 | { | 31 | { |
32 | /* Unmask CPUID levels if masked: */ | ||
33 | if (c->x86 == 6 && c->x86_model >= 15) { | ||
34 | u64 misc_enable; | ||
35 | |||
36 | rdmsrl(MSR_IA32_MISC_ENABLE, misc_enable); | ||
37 | |||
38 | if (misc_enable & MSR_IA32_MISC_ENABLE_LIMIT_CPUID) { | ||
39 | misc_enable &= ~MSR_IA32_MISC_ENABLE_LIMIT_CPUID; | ||
40 | wrmsrl(MSR_IA32_MISC_ENABLE, misc_enable); | ||
41 | c->cpuid_level = cpuid_eax(0); | ||
42 | } | ||
43 | } | ||
44 | |||
32 | if ((c->x86 == 0xf && c->x86_model >= 0x03) || | 45 | if ((c->x86 == 0xf && c->x86_model >= 0x03) || |
33 | (c->x86 == 0x6 && c->x86_model >= 0x0e)) | 46 | (c->x86 == 0x6 && c->x86_model >= 0x0e)) |
34 | set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); | 47 | set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); |
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c index b59ddcc88cd8..0c0a455fe95c 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c | |||
@@ -33,11 +33,13 @@ u64 mtrr_tom2; | |||
33 | struct mtrr_state_type mtrr_state = {}; | 33 | struct mtrr_state_type mtrr_state = {}; |
34 | EXPORT_SYMBOL_GPL(mtrr_state); | 34 | EXPORT_SYMBOL_GPL(mtrr_state); |
35 | 35 | ||
36 | #undef MODULE_PARAM_PREFIX | 36 | static int __initdata mtrr_show; |
37 | #define MODULE_PARAM_PREFIX "mtrr." | 37 | static int __init mtrr_debug(char *opt) |
38 | 38 | { | |
39 | static int mtrr_show; | 39 | mtrr_show = 1; |
40 | module_param_named(show, mtrr_show, bool, 0); | 40 | return 0; |
41 | } | ||
42 | early_param("mtrr.show", mtrr_debug); | ||
41 | 43 | ||
42 | /* | 44 | /* |
43 | * Returns the effective MTRR type for the region | 45 | * Returns the effective MTRR type for the region |
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index cd759ad90690..64d5ad0b8add 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c | |||
@@ -628,11 +628,12 @@ static int hpet_cpuhp_notify(struct notifier_block *n, | |||
628 | 628 | ||
629 | switch (action & 0xf) { | 629 | switch (action & 0xf) { |
630 | case CPU_ONLINE: | 630 | case CPU_ONLINE: |
631 | INIT_DELAYED_WORK(&work.work, hpet_work); | 631 | INIT_DELAYED_WORK_ON_STACK(&work.work, hpet_work); |
632 | init_completion(&work.complete); | 632 | init_completion(&work.complete); |
633 | /* FIXME: add schedule_work_on() */ | 633 | /* FIXME: add schedule_work_on() */ |
634 | schedule_delayed_work_on(cpu, &work.work, 0); | 634 | schedule_delayed_work_on(cpu, &work.work, 0); |
635 | wait_for_completion(&work.complete); | 635 | wait_for_completion(&work.complete); |
636 | destroy_timer_on_stack(&work.work.timer); | ||
636 | break; | 637 | break; |
637 | case CPU_DEAD: | 638 | case CPU_DEAD: |
638 | if (hdev) { | 639 | if (hdev) { |
diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c index 884d985b8b82..e948b28a5a9a 100644 --- a/arch/x86/kernel/kprobes.c +++ b/arch/x86/kernel/kprobes.c | |||
@@ -446,7 +446,7 @@ void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri, | |||
446 | static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs, | 446 | static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs, |
447 | struct kprobe_ctlblk *kcb) | 447 | struct kprobe_ctlblk *kcb) |
448 | { | 448 | { |
449 | #if !defined(CONFIG_PREEMPT) || defined(CONFIG_PM) | 449 | #if !defined(CONFIG_PREEMPT) || defined(CONFIG_FREEZER) |
450 | if (p->ainsn.boostable == 1 && !p->post_handler) { | 450 | if (p->ainsn.boostable == 1 && !p->post_handler) { |
451 | /* Boost up -- we can execute copied instructions directly */ | 451 | /* Boost up -- we can execute copied instructions directly */ |
452 | reset_current_kprobe(); | 452 | reset_current_kprobe(); |
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c index 55c46074eba0..01161077a49c 100644 --- a/arch/x86/kernel/setup_percpu.c +++ b/arch/x86/kernel/setup_percpu.c | |||
@@ -136,7 +136,7 @@ static void __init setup_cpu_pda_map(void) | |||
136 | #ifdef CONFIG_X86_64 | 136 | #ifdef CONFIG_X86_64 |
137 | 137 | ||
138 | /* correctly size the local cpu masks */ | 138 | /* correctly size the local cpu masks */ |
139 | static void setup_cpu_local_masks(void) | 139 | static void __init setup_cpu_local_masks(void) |
140 | { | 140 | { |
141 | alloc_bootmem_cpumask_var(&cpu_initialized_mask); | 141 | alloc_bootmem_cpumask_var(&cpu_initialized_mask); |
142 | alloc_bootmem_cpumask_var(&cpu_callin_mask); | 142 | alloc_bootmem_cpumask_var(&cpu_callin_mask); |
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c index 89bb7668041d..df0587f24c54 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c | |||
@@ -632,9 +632,16 @@ badframe: | |||
632 | } | 632 | } |
633 | 633 | ||
634 | #ifdef CONFIG_X86_32 | 634 | #ifdef CONFIG_X86_32 |
635 | asmlinkage int sys_rt_sigreturn(struct pt_regs regs) | 635 | /* |
636 | * Note: do not pass in pt_regs directly as with tail-call optimization | ||
637 | * GCC will incorrectly stomp on the caller's frame and corrupt user-space | ||
638 | * register state: | ||
639 | */ | ||
640 | asmlinkage int sys_rt_sigreturn(unsigned long __unused) | ||
636 | { | 641 | { |
637 | return do_rt_sigreturn(®s); | 642 | struct pt_regs *regs = (struct pt_regs *)&__unused; |
643 | |||
644 | return do_rt_sigreturn(regs); | ||
638 | } | 645 | } |
639 | #else /* !CONFIG_X86_32 */ | 646 | #else /* !CONFIG_X86_32 */ |
640 | asmlinkage long sys_rt_sigreturn(struct pt_regs *regs) | 647 | asmlinkage long sys_rt_sigreturn(struct pt_regs *regs) |
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c index f885023167e0..6812b829ed83 100644 --- a/arch/x86/kernel/tlb_uv.c +++ b/arch/x86/kernel/tlb_uv.c | |||
@@ -200,6 +200,7 @@ static int uv_wait_completion(struct bau_desc *bau_desc, | |||
200 | destination_timeouts = 0; | 200 | destination_timeouts = 0; |
201 | } | 201 | } |
202 | } | 202 | } |
203 | cpu_relax(); | ||
203 | } | 204 | } |
204 | return FLUSH_COMPLETE; | 205 | return FLUSH_COMPLETE; |
205 | } | 206 | } |
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c index 23206ba16874..1d3302cc2ddf 100644 --- a/arch/x86/kernel/vmi_32.c +++ b/arch/x86/kernel/vmi_32.c | |||
@@ -858,7 +858,7 @@ void __init vmi_init(void) | |||
858 | #endif | 858 | #endif |
859 | } | 859 | } |
860 | 860 | ||
861 | void vmi_activate(void) | 861 | void __init vmi_activate(void) |
862 | { | 862 | { |
863 | unsigned long flags; | 863 | unsigned long flags; |
864 | 864 | ||
diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c index 4a20b2f9a381..7c8ca91bb9ec 100644 --- a/arch/x86/lib/usercopy_32.c +++ b/arch/x86/lib/usercopy_32.c | |||
@@ -56,7 +56,7 @@ do { \ | |||
56 | " jmp 2b\n" \ | 56 | " jmp 2b\n" \ |
57 | ".previous\n" \ | 57 | ".previous\n" \ |
58 | _ASM_EXTABLE(0b,3b) \ | 58 | _ASM_EXTABLE(0b,3b) \ |
59 | : "=d"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \ | 59 | : "=&d"(res), "=&c"(count), "=&a" (__d0), "=&S" (__d1), \ |
60 | "=&D" (__d2) \ | 60 | "=&D" (__d2) \ |
61 | : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \ | 61 | : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \ |
62 | : "memory"); \ | 62 | : "memory"); \ |
@@ -218,7 +218,7 @@ long strnlen_user(const char __user *s, long n) | |||
218 | " .align 4\n" | 218 | " .align 4\n" |
219 | " .long 0b,2b\n" | 219 | " .long 0b,2b\n" |
220 | ".previous" | 220 | ".previous" |
221 | :"=r" (n), "=D" (s), "=a" (res), "=c" (tmp) | 221 | :"=&r" (n), "=&D" (s), "=&a" (res), "=&c" (tmp) |
222 | :"0" (n), "1" (s), "2" (0), "3" (mask) | 222 | :"0" (n), "1" (s), "2" (0), "3" (mask) |
223 | :"cc"); | 223 | :"cc"); |
224 | return res & mask; | 224 | return res & mask; |
diff --git a/arch/x86/lib/usercopy_64.c b/arch/x86/lib/usercopy_64.c index 64d6c84e6353..ec13cb5f17ed 100644 --- a/arch/x86/lib/usercopy_64.c +++ b/arch/x86/lib/usercopy_64.c | |||
@@ -32,7 +32,7 @@ do { \ | |||
32 | " jmp 2b\n" \ | 32 | " jmp 2b\n" \ |
33 | ".previous\n" \ | 33 | ".previous\n" \ |
34 | _ASM_EXTABLE(0b,3b) \ | 34 | _ASM_EXTABLE(0b,3b) \ |
35 | : "=r"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \ | 35 | : "=&r"(res), "=&c"(count), "=&a" (__d0), "=&S" (__d1), \ |
36 | "=&D" (__d2) \ | 36 | "=&D" (__d2) \ |
37 | : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \ | 37 | : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \ |
38 | : "memory"); \ | 38 | : "memory"); \ |
@@ -86,7 +86,7 @@ unsigned long __clear_user(void __user *addr, unsigned long size) | |||
86 | ".previous\n" | 86 | ".previous\n" |
87 | _ASM_EXTABLE(0b,3b) | 87 | _ASM_EXTABLE(0b,3b) |
88 | _ASM_EXTABLE(1b,2b) | 88 | _ASM_EXTABLE(1b,2b) |
89 | : [size8] "=c"(size), [dst] "=&D" (__d0) | 89 | : [size8] "=&c"(size), [dst] "=&D" (__d0) |
90 | : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr), | 90 | : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr), |
91 | [zero] "r" (0UL), [eight] "r" (8UL)); | 91 | [zero] "r" (0UL), [eight] "r" (8UL)); |
92 | return size; | 92 | return size; |
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 88f1b10de3be..2cef05074413 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
@@ -138,6 +138,47 @@ static pte_t * __init one_page_table_init(pmd_t *pmd) | |||
138 | return pte_offset_kernel(pmd, 0); | 138 | return pte_offset_kernel(pmd, 0); |
139 | } | 139 | } |
140 | 140 | ||
141 | static pte_t *__init page_table_kmap_check(pte_t *pte, pmd_t *pmd, | ||
142 | unsigned long vaddr, pte_t *lastpte) | ||
143 | { | ||
144 | #ifdef CONFIG_HIGHMEM | ||
145 | /* | ||
146 | * Something (early fixmap) may already have put a pte | ||
147 | * page here, which causes the page table allocation | ||
148 | * to become nonlinear. Attempt to fix it, and if it | ||
149 | * is still nonlinear then we have to bug. | ||
150 | */ | ||
151 | int pmd_idx_kmap_begin = fix_to_virt(FIX_KMAP_END) >> PMD_SHIFT; | ||
152 | int pmd_idx_kmap_end = fix_to_virt(FIX_KMAP_BEGIN) >> PMD_SHIFT; | ||
153 | |||
154 | if (pmd_idx_kmap_begin != pmd_idx_kmap_end | ||
155 | && (vaddr >> PMD_SHIFT) >= pmd_idx_kmap_begin | ||
156 | && (vaddr >> PMD_SHIFT) <= pmd_idx_kmap_end | ||
157 | && ((__pa(pte) >> PAGE_SHIFT) < table_start | ||
158 | || (__pa(pte) >> PAGE_SHIFT) >= table_end)) { | ||
159 | pte_t *newpte; | ||
160 | int i; | ||
161 | |||
162 | BUG_ON(after_init_bootmem); | ||
163 | newpte = alloc_low_page(); | ||
164 | for (i = 0; i < PTRS_PER_PTE; i++) | ||
165 | set_pte(newpte + i, pte[i]); | ||
166 | |||
167 | paravirt_alloc_pte(&init_mm, __pa(newpte) >> PAGE_SHIFT); | ||
168 | set_pmd(pmd, __pmd(__pa(newpte)|_PAGE_TABLE)); | ||
169 | BUG_ON(newpte != pte_offset_kernel(pmd, 0)); | ||
170 | __flush_tlb_all(); | ||
171 | |||
172 | paravirt_release_pte(__pa(pte) >> PAGE_SHIFT); | ||
173 | pte = newpte; | ||
174 | } | ||
175 | BUG_ON(vaddr < fix_to_virt(FIX_KMAP_BEGIN - 1) | ||
176 | && vaddr > fix_to_virt(FIX_KMAP_END) | ||
177 | && lastpte && lastpte + PTRS_PER_PTE != pte); | ||
178 | #endif | ||
179 | return pte; | ||
180 | } | ||
181 | |||
141 | /* | 182 | /* |
142 | * This function initializes a certain range of kernel virtual memory | 183 | * This function initializes a certain range of kernel virtual memory |
143 | * with new bootmem page tables, everywhere page tables are missing in | 184 | * with new bootmem page tables, everywhere page tables are missing in |
@@ -154,6 +195,7 @@ page_table_range_init(unsigned long start, unsigned long end, pgd_t *pgd_base) | |||
154 | unsigned long vaddr; | 195 | unsigned long vaddr; |
155 | pgd_t *pgd; | 196 | pgd_t *pgd; |
156 | pmd_t *pmd; | 197 | pmd_t *pmd; |
198 | pte_t *pte = NULL; | ||
157 | 199 | ||
158 | vaddr = start; | 200 | vaddr = start; |
159 | pgd_idx = pgd_index(vaddr); | 201 | pgd_idx = pgd_index(vaddr); |
@@ -165,7 +207,8 @@ page_table_range_init(unsigned long start, unsigned long end, pgd_t *pgd_base) | |||
165 | pmd = pmd + pmd_index(vaddr); | 207 | pmd = pmd + pmd_index(vaddr); |
166 | for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end); | 208 | for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end); |
167 | pmd++, pmd_idx++) { | 209 | pmd++, pmd_idx++) { |
168 | one_page_table_init(pmd); | 210 | pte = page_table_kmap_check(one_page_table_init(pmd), |
211 | pmd, vaddr, pte); | ||
169 | 212 | ||
170 | vaddr += PMD_SIZE; | 213 | vaddr += PMD_SIZE; |
171 | } | 214 | } |
@@ -508,7 +551,6 @@ static void __init early_ioremap_page_table_range_init(pgd_t *pgd_base) | |||
508 | * Fixed mappings, only the page table structure has to be | 551 | * Fixed mappings, only the page table structure has to be |
509 | * created - mappings will be set by set_fixmap(): | 552 | * created - mappings will be set by set_fixmap(): |
510 | */ | 553 | */ |
511 | early_ioremap_clear(); | ||
512 | vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK; | 554 | vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK; |
513 | end = (FIXADDR_TOP + PMD_SIZE - 1) & PMD_MASK; | 555 | end = (FIXADDR_TOP + PMD_SIZE - 1) & PMD_MASK; |
514 | page_table_range_init(vaddr, end, pgd_base); | 556 | page_table_range_init(vaddr, end, pgd_base); |
@@ -801,7 +843,7 @@ static void __init find_early_table_space(unsigned long end, int use_pse) | |||
801 | tables += PAGE_ALIGN(ptes * sizeof(pte_t)); | 843 | tables += PAGE_ALIGN(ptes * sizeof(pte_t)); |
802 | 844 | ||
803 | /* for fixmap */ | 845 | /* for fixmap */ |
804 | tables += PAGE_SIZE * 2; | 846 | tables += PAGE_ALIGN(__end_of_fixed_addresses * sizeof(pte_t)); |
805 | 847 | ||
806 | /* | 848 | /* |
807 | * RED-PEN putting page tables only on node 0 could | 849 | * RED-PEN putting page tables only on node 0 could |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 23f68e77ad1f..e6d36b490250 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -596,7 +596,7 @@ static void __init init_gbpages(void) | |||
596 | direct_gbpages = 0; | 596 | direct_gbpages = 0; |
597 | } | 597 | } |
598 | 598 | ||
599 | static unsigned long __init kernel_physical_mapping_init(unsigned long start, | 599 | static unsigned long __meminit kernel_physical_mapping_init(unsigned long start, |
600 | unsigned long end, | 600 | unsigned long end, |
601 | unsigned long page_size_mask) | 601 | unsigned long page_size_mask) |
602 | { | 602 | { |
diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c index d0151d8ce452..ca53224fc56c 100644 --- a/arch/x86/mm/iomap_32.c +++ b/arch/x86/mm/iomap_32.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <asm/iomap.h> | 19 | #include <asm/iomap.h> |
20 | #include <asm/pat.h> | ||
20 | #include <linux/module.h> | 21 | #include <linux/module.h> |
21 | 22 | ||
22 | /* Map 'pfn' using fixed map 'type' and protections 'prot' | 23 | /* Map 'pfn' using fixed map 'type' and protections 'prot' |
@@ -29,6 +30,15 @@ iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) | |||
29 | 30 | ||
30 | pagefault_disable(); | 31 | pagefault_disable(); |
31 | 32 | ||
33 | /* | ||
34 | * For non-PAT systems, promote PAGE_KERNEL_WC to PAGE_KERNEL_UC_MINUS. | ||
35 | * PAGE_KERNEL_WC maps to PWT, which translates to uncached if the | ||
36 | * MTRR is UC or WC. UC_MINUS gets the real intention, of the | ||
37 | * user, which is "WC if the MTRR is WC, UC if you can't do that." | ||
38 | */ | ||
39 | if (!pat_enabled && pgprot_val(prot) == pgprot_val(PAGE_KERNEL_WC)) | ||
40 | prot = PAGE_KERNEL_UC_MINUS; | ||
41 | |||
32 | idx = type + KM_TYPE_NR*smp_processor_id(); | 42 | idx = type + KM_TYPE_NR*smp_processor_id(); |
33 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | 43 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); |
34 | set_pte(kmap_pte-idx, pfn_pte(pfn, prot)); | 44 | set_pte(kmap_pte-idx, pfn_pte(pfn, prot)); |
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index bd85d42819e1..af750ab973b6 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
@@ -557,34 +557,9 @@ void __init early_ioremap_init(void) | |||
557 | } | 557 | } |
558 | } | 558 | } |
559 | 559 | ||
560 | void __init early_ioremap_clear(void) | ||
561 | { | ||
562 | pmd_t *pmd; | ||
563 | |||
564 | if (early_ioremap_debug) | ||
565 | printk(KERN_INFO "early_ioremap_clear()\n"); | ||
566 | |||
567 | pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); | ||
568 | pmd_clear(pmd); | ||
569 | paravirt_release_pte(__pa(bm_pte) >> PAGE_SHIFT); | ||
570 | __flush_tlb_all(); | ||
571 | } | ||
572 | |||
573 | void __init early_ioremap_reset(void) | 560 | void __init early_ioremap_reset(void) |
574 | { | 561 | { |
575 | enum fixed_addresses idx; | ||
576 | unsigned long addr, phys; | ||
577 | pte_t *pte; | ||
578 | |||
579 | after_paging_init = 1; | 562 | after_paging_init = 1; |
580 | for (idx = FIX_BTMAP_BEGIN; idx >= FIX_BTMAP_END; idx--) { | ||
581 | addr = fix_to_virt(idx); | ||
582 | pte = early_ioremap_pte(addr); | ||
583 | if (pte_present(*pte)) { | ||
584 | phys = pte_val(*pte) & PAGE_MASK; | ||
585 | set_fixmap(idx, phys); | ||
586 | } | ||
587 | } | ||
588 | } | 563 | } |
589 | 564 | ||
590 | static void __init __early_set_fixmap(enum fixed_addresses idx, | 565 | static void __init __early_set_fixmap(enum fixed_addresses idx, |
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 4cf30dee8161..84ba74820ad6 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
@@ -534,6 +534,36 @@ out_unlock: | |||
534 | return 0; | 534 | return 0; |
535 | } | 535 | } |
536 | 536 | ||
537 | static int __cpa_process_fault(struct cpa_data *cpa, unsigned long vaddr, | ||
538 | int primary) | ||
539 | { | ||
540 | /* | ||
541 | * Ignore all non primary paths. | ||
542 | */ | ||
543 | if (!primary) | ||
544 | return 0; | ||
545 | |||
546 | /* | ||
547 | * Ignore the NULL PTE for kernel identity mapping, as it is expected | ||
548 | * to have holes. | ||
549 | * Also set numpages to '1' indicating that we processed cpa req for | ||
550 | * one virtual address page and its pfn. TBD: numpages can be set based | ||
551 | * on the initial value and the level returned by lookup_address(). | ||
552 | */ | ||
553 | if (within(vaddr, PAGE_OFFSET, | ||
554 | PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT))) { | ||
555 | cpa->numpages = 1; | ||
556 | cpa->pfn = __pa(vaddr) >> PAGE_SHIFT; | ||
557 | return 0; | ||
558 | } else { | ||
559 | WARN(1, KERN_WARNING "CPA: called for zero pte. " | ||
560 | "vaddr = %lx cpa->vaddr = %lx\n", vaddr, | ||
561 | *cpa->vaddr); | ||
562 | |||
563 | return -EFAULT; | ||
564 | } | ||
565 | } | ||
566 | |||
537 | static int __change_page_attr(struct cpa_data *cpa, int primary) | 567 | static int __change_page_attr(struct cpa_data *cpa, int primary) |
538 | { | 568 | { |
539 | unsigned long address; | 569 | unsigned long address; |
@@ -549,19 +579,11 @@ static int __change_page_attr(struct cpa_data *cpa, int primary) | |||
549 | repeat: | 579 | repeat: |
550 | kpte = lookup_address(address, &level); | 580 | kpte = lookup_address(address, &level); |
551 | if (!kpte) | 581 | if (!kpte) |
552 | return 0; | 582 | return __cpa_process_fault(cpa, address, primary); |
553 | 583 | ||
554 | old_pte = *kpte; | 584 | old_pte = *kpte; |
555 | if (!pte_val(old_pte)) { | 585 | if (!pte_val(old_pte)) |
556 | if (!primary) | 586 | return __cpa_process_fault(cpa, address, primary); |
557 | return 0; | ||
558 | |||
559 | /* | ||
560 | * Special error value returned, indicating that the mapping | ||
561 | * did not exist at this address. | ||
562 | */ | ||
563 | return -EFAULT; | ||
564 | } | ||
565 | 587 | ||
566 | if (level == PG_LEVEL_4K) { | 588 | if (level == PG_LEVEL_4K) { |
567 | pte_t new_pte; | 589 | pte_t new_pte; |
@@ -659,12 +681,7 @@ static int cpa_process_alias(struct cpa_data *cpa) | |||
659 | vaddr = *cpa->vaddr; | 681 | vaddr = *cpa->vaddr; |
660 | 682 | ||
661 | if (!(within(vaddr, PAGE_OFFSET, | 683 | if (!(within(vaddr, PAGE_OFFSET, |
662 | PAGE_OFFSET + (max_low_pfn_mapped << PAGE_SHIFT)) | 684 | PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT)))) { |
663 | #ifdef CONFIG_X86_64 | ||
664 | || within(vaddr, PAGE_OFFSET + (1UL<<32), | ||
665 | PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT)) | ||
666 | #endif | ||
667 | )) { | ||
668 | 685 | ||
669 | alias_cpa = *cpa; | 686 | alias_cpa = *cpa; |
670 | temp_cpa_vaddr = (unsigned long) __va(cpa->pfn << PAGE_SHIFT); | 687 | temp_cpa_vaddr = (unsigned long) __va(cpa->pfn << PAGE_SHIFT); |
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index 160c42d3eb8f..7b61036427df 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
@@ -333,11 +333,23 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
333 | req_type & _PAGE_CACHE_MASK); | 333 | req_type & _PAGE_CACHE_MASK); |
334 | } | 334 | } |
335 | 335 | ||
336 | is_range_ram = pagerange_is_ram(start, end); | 336 | if (new_type) |
337 | if (is_range_ram == 1) | 337 | *new_type = actual_type; |
338 | return reserve_ram_pages_type(start, end, req_type, new_type); | 338 | |
339 | else if (is_range_ram < 0) | 339 | /* |
340 | return -EINVAL; | 340 | * For legacy reasons, some parts of the physical address range in the |
341 | * legacy 1MB region is treated as non-RAM (even when listed as RAM in | ||
342 | * the e820 tables). So we will track the memory attributes of this | ||
343 | * legacy 1MB region using the linear memtype_list always. | ||
344 | */ | ||
345 | if (end >= ISA_END_ADDRESS) { | ||
346 | is_range_ram = pagerange_is_ram(start, end); | ||
347 | if (is_range_ram == 1) | ||
348 | return reserve_ram_pages_type(start, end, req_type, | ||
349 | new_type); | ||
350 | else if (is_range_ram < 0) | ||
351 | return -EINVAL; | ||
352 | } | ||
341 | 353 | ||
342 | new = kmalloc(sizeof(struct memtype), GFP_KERNEL); | 354 | new = kmalloc(sizeof(struct memtype), GFP_KERNEL); |
343 | if (!new) | 355 | if (!new) |
@@ -347,9 +359,6 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
347 | new->end = end; | 359 | new->end = end; |
348 | new->type = actual_type; | 360 | new->type = actual_type; |
349 | 361 | ||
350 | if (new_type) | ||
351 | *new_type = actual_type; | ||
352 | |||
353 | spin_lock(&memtype_lock); | 362 | spin_lock(&memtype_lock); |
354 | 363 | ||
355 | if (cached_entry && start >= cached_start) | 364 | if (cached_entry && start >= cached_start) |
@@ -437,11 +446,19 @@ int free_memtype(u64 start, u64 end) | |||
437 | if (is_ISA_range(start, end - 1)) | 446 | if (is_ISA_range(start, end - 1)) |
438 | return 0; | 447 | return 0; |
439 | 448 | ||
440 | is_range_ram = pagerange_is_ram(start, end); | 449 | /* |
441 | if (is_range_ram == 1) | 450 | * For legacy reasons, some parts of the physical address range in the |
442 | return free_ram_pages_type(start, end); | 451 | * legacy 1MB region is treated as non-RAM (even when listed as RAM in |
443 | else if (is_range_ram < 0) | 452 | * the e820 tables). So we will track the memory attributes of this |
444 | return -EINVAL; | 453 | * legacy 1MB region using the linear memtype_list always. |
454 | */ | ||
455 | if (end >= ISA_END_ADDRESS) { | ||
456 | is_range_ram = pagerange_is_ram(start, end); | ||
457 | if (is_range_ram == 1) | ||
458 | return free_ram_pages_type(start, end); | ||
459 | else if (is_range_ram < 0) | ||
460 | return -EINVAL; | ||
461 | } | ||
445 | 462 | ||
446 | spin_lock(&memtype_lock); | 463 | spin_lock(&memtype_lock); |
447 | list_for_each_entry(entry, &memtype_list, nd) { | 464 | list_for_each_entry(entry, &memtype_list, nd) { |
@@ -505,35 +522,6 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) | |||
505 | } | 522 | } |
506 | #endif /* CONFIG_STRICT_DEVMEM */ | 523 | #endif /* CONFIG_STRICT_DEVMEM */ |
507 | 524 | ||
508 | /* | ||
509 | * Change the memory type for the physial address range in kernel identity | ||
510 | * mapping space if that range is a part of identity map. | ||
511 | */ | ||
512 | static int kernel_map_sync_memtype(u64 base, unsigned long size, | ||
513 | unsigned long flags) | ||
514 | { | ||
515 | unsigned long id_sz; | ||
516 | int ret; | ||
517 | |||
518 | if (!pat_enabled || base >= __pa(high_memory)) | ||
519 | return 0; | ||
520 | |||
521 | id_sz = (__pa(high_memory) < base + size) ? | ||
522 | __pa(high_memory) - base : | ||
523 | size; | ||
524 | |||
525 | ret = ioremap_change_attr((unsigned long)__va(base), id_sz, flags); | ||
526 | /* | ||
527 | * -EFAULT return means that the addr was not valid and did not have | ||
528 | * any identity mapping. That case is a success for | ||
529 | * kernel_map_sync_memtype. | ||
530 | */ | ||
531 | if (ret == -EFAULT) | ||
532 | ret = 0; | ||
533 | |||
534 | return ret; | ||
535 | } | ||
536 | |||
537 | int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, | 525 | int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, |
538 | unsigned long size, pgprot_t *vma_prot) | 526 | unsigned long size, pgprot_t *vma_prot) |
539 | { | 527 | { |
@@ -584,7 +572,9 @@ int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, | |||
584 | if (retval < 0) | 572 | if (retval < 0) |
585 | return 0; | 573 | return 0; |
586 | 574 | ||
587 | if (kernel_map_sync_memtype(offset, size, flags)) { | 575 | if (((pfn < max_low_pfn_mapped) || |
576 | (pfn >= (1UL<<(32 - PAGE_SHIFT)) && pfn < max_pfn_mapped)) && | ||
577 | ioremap_change_attr((unsigned long)__va(offset), size, flags) < 0) { | ||
588 | free_memtype(offset, offset + size); | 578 | free_memtype(offset, offset + size); |
589 | printk(KERN_INFO | 579 | printk(KERN_INFO |
590 | "%s:%d /dev/mem ioremap_change_attr failed %s for %Lx-%Lx\n", | 580 | "%s:%d /dev/mem ioremap_change_attr failed %s for %Lx-%Lx\n", |
@@ -632,7 +622,7 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot, | |||
632 | int strict_prot) | 622 | int strict_prot) |
633 | { | 623 | { |
634 | int is_ram = 0; | 624 | int is_ram = 0; |
635 | int ret; | 625 | int id_sz, ret; |
636 | unsigned long flags; | 626 | unsigned long flags; |
637 | unsigned long want_flags = (pgprot_val(*vma_prot) & _PAGE_CACHE_MASK); | 627 | unsigned long want_flags = (pgprot_val(*vma_prot) & _PAGE_CACHE_MASK); |
638 | 628 | ||
@@ -673,7 +663,15 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot, | |||
673 | flags); | 663 | flags); |
674 | } | 664 | } |
675 | 665 | ||
676 | if (kernel_map_sync_memtype(paddr, size, flags)) { | 666 | /* Need to keep identity mapping in sync */ |
667 | if (paddr >= __pa(high_memory)) | ||
668 | return 0; | ||
669 | |||
670 | id_sz = (__pa(high_memory) < paddr + size) ? | ||
671 | __pa(high_memory) - paddr : | ||
672 | size; | ||
673 | |||
674 | if (ioremap_change_attr((unsigned long)__va(paddr), id_sz, flags) < 0) { | ||
677 | free_memtype(paddr, paddr + size); | 675 | free_memtype(paddr, paddr + size); |
678 | printk(KERN_ERR | 676 | printk(KERN_ERR |
679 | "%s:%d reserve_pfn_range ioremap_change_attr failed %s " | 677 | "%s:%d reserve_pfn_range ioremap_change_attr failed %s " |
diff --git a/arch/x86/scripts/strip-symbols b/arch/x86/scripts/strip-symbols deleted file mode 100644 index a2f1ccb827c7..000000000000 --- a/arch/x86/scripts/strip-symbols +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | __cpu_vendor_dev_X86_VENDOR_* | ||
diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile index d80f4cc2e0da..65d90c720b5a 100644 --- a/drivers/acpi/Makefile +++ b/drivers/acpi/Makefile | |||
@@ -19,7 +19,7 @@ obj-y += osl.o utils.o reboot.o\ | |||
19 | 19 | ||
20 | # sleep related files | 20 | # sleep related files |
21 | obj-y += wakeup.o | 21 | obj-y += wakeup.o |
22 | obj-y += main.o | 22 | obj-y += sleep.o |
23 | obj-$(CONFIG_ACPI_SLEEP) += proc.o | 23 | obj-$(CONFIG_ACPI_SLEEP) += proc.o |
24 | 24 | ||
25 | 25 | ||
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 8dfcbb8aff73..a2b82c90a683 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
@@ -120,31 +120,6 @@ static struct acpi_ec { | |||
120 | spinlock_t curr_lock; | 120 | spinlock_t curr_lock; |
121 | } *boot_ec, *first_ec; | 121 | } *boot_ec, *first_ec; |
122 | 122 | ||
123 | /* | ||
124 | * Some Asus system have exchanged ECDT data/command IO addresses. | ||
125 | */ | ||
126 | static int print_ecdt_error(const struct dmi_system_id *id) | ||
127 | { | ||
128 | printk(KERN_NOTICE PREFIX "%s detected - " | ||
129 | "ECDT has exchanged control/data I/O address\n", | ||
130 | id->ident); | ||
131 | return 0; | ||
132 | } | ||
133 | |||
134 | static struct dmi_system_id __cpuinitdata ec_dmi_table[] = { | ||
135 | { | ||
136 | print_ecdt_error, "Asus L4R", { | ||
137 | DMI_MATCH(DMI_BIOS_VERSION, "1008.006"), | ||
138 | DMI_MATCH(DMI_PRODUCT_NAME, "L4R"), | ||
139 | DMI_MATCH(DMI_BOARD_NAME, "L4R") }, NULL}, | ||
140 | { | ||
141 | print_ecdt_error, "Asus M6R", { | ||
142 | DMI_MATCH(DMI_BIOS_VERSION, "0207"), | ||
143 | DMI_MATCH(DMI_PRODUCT_NAME, "M6R"), | ||
144 | DMI_MATCH(DMI_BOARD_NAME, "M6R") }, NULL}, | ||
145 | {}, | ||
146 | }; | ||
147 | |||
148 | /* -------------------------------------------------------------------------- | 123 | /* -------------------------------------------------------------------------- |
149 | Transaction Management | 124 | Transaction Management |
150 | -------------------------------------------------------------------------- */ | 125 | -------------------------------------------------------------------------- */ |
@@ -983,8 +958,8 @@ static const struct acpi_device_id ec_device_ids[] = { | |||
983 | int __init acpi_ec_ecdt_probe(void) | 958 | int __init acpi_ec_ecdt_probe(void) |
984 | { | 959 | { |
985 | acpi_status status; | 960 | acpi_status status; |
961 | struct acpi_ec *saved_ec = NULL; | ||
986 | struct acpi_table_ecdt *ecdt_ptr; | 962 | struct acpi_table_ecdt *ecdt_ptr; |
987 | acpi_handle dummy; | ||
988 | 963 | ||
989 | boot_ec = make_acpi_ec(); | 964 | boot_ec = make_acpi_ec(); |
990 | if (!boot_ec) | 965 | if (!boot_ec) |
@@ -998,21 +973,16 @@ int __init acpi_ec_ecdt_probe(void) | |||
998 | pr_info(PREFIX "EC description table is found, configuring boot EC\n"); | 973 | pr_info(PREFIX "EC description table is found, configuring boot EC\n"); |
999 | boot_ec->command_addr = ecdt_ptr->control.address; | 974 | boot_ec->command_addr = ecdt_ptr->control.address; |
1000 | boot_ec->data_addr = ecdt_ptr->data.address; | 975 | boot_ec->data_addr = ecdt_ptr->data.address; |
1001 | if (dmi_check_system(ec_dmi_table)) { | ||
1002 | /* | ||
1003 | * If the board falls into ec_dmi_table, it means | ||
1004 | * that ECDT table gives the incorrect command/status | ||
1005 | * & data I/O address. Just fix it. | ||
1006 | */ | ||
1007 | boot_ec->data_addr = ecdt_ptr->control.address; | ||
1008 | boot_ec->command_addr = ecdt_ptr->data.address; | ||
1009 | } | ||
1010 | boot_ec->gpe = ecdt_ptr->gpe; | 976 | boot_ec->gpe = ecdt_ptr->gpe; |
1011 | boot_ec->handle = ACPI_ROOT_OBJECT; | 977 | boot_ec->handle = ACPI_ROOT_OBJECT; |
1012 | acpi_get_handle(ACPI_ROOT_OBJECT, ecdt_ptr->id, &boot_ec->handle); | 978 | acpi_get_handle(ACPI_ROOT_OBJECT, ecdt_ptr->id, &boot_ec->handle); |
1013 | /* Add some basic check against completely broken table */ | 979 | /* Don't trust ECDT, which comes from ASUSTek */ |
1014 | if (boot_ec->data_addr != boot_ec->command_addr) | 980 | if (!dmi_name_in_vendors("ASUS")) |
1015 | goto install; | 981 | goto install; |
982 | saved_ec = kmalloc(sizeof(struct acpi_ec), GFP_KERNEL); | ||
983 | if (!saved_ec) | ||
984 | return -ENOMEM; | ||
985 | memcpy(&saved_ec, boot_ec, sizeof(saved_ec)); | ||
1016 | /* fall through */ | 986 | /* fall through */ |
1017 | } | 987 | } |
1018 | /* This workaround is needed only on some broken machines, | 988 | /* This workaround is needed only on some broken machines, |
@@ -1023,12 +993,29 @@ int __init acpi_ec_ecdt_probe(void) | |||
1023 | /* Check that acpi_get_devices actually find something */ | 993 | /* Check that acpi_get_devices actually find something */ |
1024 | if (ACPI_FAILURE(status) || !boot_ec->handle) | 994 | if (ACPI_FAILURE(status) || !boot_ec->handle) |
1025 | goto error; | 995 | goto error; |
1026 | /* We really need to limit this workaround, the only ASUS, | 996 | if (saved_ec) { |
1027 | * which needs it, has fake EC._INI method, so use it as flag. | 997 | /* try to find good ECDT from ASUSTek */ |
1028 | * Keep boot_ec struct as it will be needed soon. | 998 | if (saved_ec->command_addr != boot_ec->command_addr || |
1029 | */ | 999 | saved_ec->data_addr != boot_ec->data_addr || |
1030 | if (ACPI_FAILURE(acpi_get_handle(boot_ec->handle, "_INI", &dummy))) | 1000 | saved_ec->gpe != boot_ec->gpe || |
1031 | return -ENODEV; | 1001 | saved_ec->handle != boot_ec->handle) |
1002 | pr_info(PREFIX "ASUSTek keeps feeding us with broken " | ||
1003 | "ECDT tables, which are very hard to workaround. " | ||
1004 | "Trying to use DSDT EC info instead. Please send " | ||
1005 | "output of acpidump to linux-acpi@vger.kernel.org\n"); | ||
1006 | kfree(saved_ec); | ||
1007 | saved_ec = NULL; | ||
1008 | } else { | ||
1009 | /* We really need to limit this workaround, the only ASUS, | ||
1010 | * which needs it, has fake EC._INI method, so use it as flag. | ||
1011 | * Keep boot_ec struct as it will be needed soon. | ||
1012 | */ | ||
1013 | acpi_handle dummy; | ||
1014 | if (!dmi_name_in_vendors("ASUS") || | ||
1015 | ACPI_FAILURE(acpi_get_handle(boot_ec->handle, "_INI", | ||
1016 | &dummy))) | ||
1017 | return -ENODEV; | ||
1018 | } | ||
1032 | install: | 1019 | install: |
1033 | if (!ec_install_handlers(boot_ec)) { | 1020 | if (!ec_install_handlers(boot_ec)) { |
1034 | first_ec = boot_ec; | 1021 | first_ec = boot_ec; |
diff --git a/drivers/acpi/main.c b/drivers/acpi/sleep.c index 7e3c609cbef2..7e3c609cbef2 100644 --- a/drivers/acpi/main.c +++ b/drivers/acpi/sleep.c | |||
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index 073ff09218a9..99e6f1f8ea45 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c | |||
@@ -416,7 +416,8 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag) | |||
416 | } | 416 | } |
417 | 417 | ||
418 | /* Passive (optional) */ | 418 | /* Passive (optional) */ |
419 | if (flag & ACPI_TRIPS_PASSIVE) { | 419 | if (((flag & ACPI_TRIPS_PASSIVE) && tz->trips.passive.flags.valid) || |
420 | (flag == ACPI_TRIPS_INIT)) { | ||
420 | valid = tz->trips.passive.flags.valid; | 421 | valid = tz->trips.passive.flags.valid; |
421 | if (psv == -1) { | 422 | if (psv == -1) { |
422 | status = AE_SUPPORT; | 423 | status = AE_SUPPORT; |
@@ -462,8 +463,11 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag) | |||
462 | memset(&devices, 0, sizeof(struct acpi_handle_list)); | 463 | memset(&devices, 0, sizeof(struct acpi_handle_list)); |
463 | status = acpi_evaluate_reference(tz->device->handle, "_PSL", | 464 | status = acpi_evaluate_reference(tz->device->handle, "_PSL", |
464 | NULL, &devices); | 465 | NULL, &devices); |
465 | if (ACPI_FAILURE(status)) | 466 | if (ACPI_FAILURE(status)) { |
467 | printk(KERN_WARNING PREFIX | ||
468 | "Invalid passive threshold\n"); | ||
466 | tz->trips.passive.flags.valid = 0; | 469 | tz->trips.passive.flags.valid = 0; |
470 | } | ||
467 | else | 471 | else |
468 | tz->trips.passive.flags.valid = 1; | 472 | tz->trips.passive.flags.valid = 1; |
469 | 473 | ||
@@ -487,7 +491,8 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag) | |||
487 | if (act == -1) | 491 | if (act == -1) |
488 | break; /* disable all active trip points */ | 492 | break; /* disable all active trip points */ |
489 | 493 | ||
490 | if (flag & ACPI_TRIPS_ACTIVE) { | 494 | if ((flag == ACPI_TRIPS_INIT) || ((flag & ACPI_TRIPS_ACTIVE) && |
495 | tz->trips.active[i].flags.valid)) { | ||
491 | status = acpi_evaluate_integer(tz->device->handle, | 496 | status = acpi_evaluate_integer(tz->device->handle, |
492 | name, NULL, &tmp); | 497 | name, NULL, &tmp); |
493 | if (ACPI_FAILURE(status)) { | 498 | if (ACPI_FAILURE(status)) { |
@@ -521,8 +526,11 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag) | |||
521 | memset(&devices, 0, sizeof(struct acpi_handle_list)); | 526 | memset(&devices, 0, sizeof(struct acpi_handle_list)); |
522 | status = acpi_evaluate_reference(tz->device->handle, | 527 | status = acpi_evaluate_reference(tz->device->handle, |
523 | name, NULL, &devices); | 528 | name, NULL, &devices); |
524 | if (ACPI_FAILURE(status)) | 529 | if (ACPI_FAILURE(status)) { |
530 | printk(KERN_WARNING PREFIX | ||
531 | "Invalid active%d threshold\n", i); | ||
525 | tz->trips.active[i].flags.valid = 0; | 532 | tz->trips.active[i].flags.valid = 0; |
533 | } | ||
526 | else | 534 | else |
527 | tz->trips.active[i].flags.valid = 1; | 535 | tz->trips.active[i].flags.valid = 1; |
528 | 536 | ||
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig index 1a7be96d627b..503a908afc80 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig | |||
@@ -698,6 +698,15 @@ config PATA_IXP4XX_CF | |||
698 | 698 | ||
699 | If unsure, say N. | 699 | If unsure, say N. |
700 | 700 | ||
701 | config PATA_OCTEON_CF | ||
702 | tristate "OCTEON Boot Bus Compact Flash support" | ||
703 | depends on CPU_CAVIUM_OCTEON | ||
704 | help | ||
705 | This option enables a polled compact flash driver for use with | ||
706 | compact flash cards attached to the OCTEON boot bus. | ||
707 | |||
708 | If unsure, say N. | ||
709 | |||
701 | config PATA_SCC | 710 | config PATA_SCC |
702 | tristate "Toshiba's Cell Reference Set IDE support" | 711 | tristate "Toshiba's Cell Reference Set IDE support" |
703 | depends on PCI && PPC_CELLEB | 712 | depends on PCI && PPC_CELLEB |
diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile index 674965fa326d..7f1ecf99528c 100644 --- a/drivers/ata/Makefile +++ b/drivers/ata/Makefile | |||
@@ -69,6 +69,7 @@ obj-$(CONFIG_PATA_IXP4XX_CF) += pata_ixp4xx_cf.o | |||
69 | obj-$(CONFIG_PATA_SCC) += pata_scc.o | 69 | obj-$(CONFIG_PATA_SCC) += pata_scc.o |
70 | obj-$(CONFIG_PATA_SCH) += pata_sch.o | 70 | obj-$(CONFIG_PATA_SCH) += pata_sch.o |
71 | obj-$(CONFIG_PATA_BF54X) += pata_bf54x.o | 71 | obj-$(CONFIG_PATA_BF54X) += pata_bf54x.o |
72 | obj-$(CONFIG_PATA_OCTEON_CF) += pata_octeon_cf.o | ||
72 | obj-$(CONFIG_PATA_PLATFORM) += pata_platform.o | 73 | obj-$(CONFIG_PATA_PLATFORM) += pata_platform.o |
73 | obj-$(CONFIG_PATA_OF_PLATFORM) += pata_of_platform.o | 74 | obj-$(CONFIG_PATA_OF_PLATFORM) += pata_of_platform.o |
74 | obj-$(CONFIG_PATA_ICSIDE) += pata_icside.o | 75 | obj-$(CONFIG_PATA_ICSIDE) += pata_icside.o |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 71218d76d75e..88c242856dae 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -3029,33 +3029,33 @@ int sata_set_spd(struct ata_link *link) | |||
3029 | */ | 3029 | */ |
3030 | 3030 | ||
3031 | static const struct ata_timing ata_timing[] = { | 3031 | static const struct ata_timing ata_timing[] = { |
3032 | /* { XFER_PIO_SLOW, 120, 290, 240, 960, 290, 240, 960, 0 }, */ | 3032 | /* { XFER_PIO_SLOW, 120, 290, 240, 960, 290, 240, 0, 960, 0 }, */ |
3033 | { XFER_PIO_0, 70, 290, 240, 600, 165, 150, 600, 0 }, | 3033 | { XFER_PIO_0, 70, 290, 240, 600, 165, 150, 0, 600, 0 }, |
3034 | { XFER_PIO_1, 50, 290, 93, 383, 125, 100, 383, 0 }, | 3034 | { XFER_PIO_1, 50, 290, 93, 383, 125, 100, 0, 383, 0 }, |
3035 | { XFER_PIO_2, 30, 290, 40, 330, 100, 90, 240, 0 }, | 3035 | { XFER_PIO_2, 30, 290, 40, 330, 100, 90, 0, 240, 0 }, |
3036 | { XFER_PIO_3, 30, 80, 70, 180, 80, 70, 180, 0 }, | 3036 | { XFER_PIO_3, 30, 80, 70, 180, 80, 70, 0, 180, 0 }, |
3037 | { XFER_PIO_4, 25, 70, 25, 120, 70, 25, 120, 0 }, | 3037 | { XFER_PIO_4, 25, 70, 25, 120, 70, 25, 0, 120, 0 }, |
3038 | { XFER_PIO_5, 15, 65, 25, 100, 65, 25, 100, 0 }, | 3038 | { XFER_PIO_5, 15, 65, 25, 100, 65, 25, 0, 100, 0 }, |
3039 | { XFER_PIO_6, 10, 55, 20, 80, 55, 20, 80, 0 }, | 3039 | { XFER_PIO_6, 10, 55, 20, 80, 55, 20, 0, 80, 0 }, |
3040 | 3040 | ||
3041 | { XFER_SW_DMA_0, 120, 0, 0, 0, 480, 480, 960, 0 }, | 3041 | { XFER_SW_DMA_0, 120, 0, 0, 0, 480, 480, 50, 960, 0 }, |
3042 | { XFER_SW_DMA_1, 90, 0, 0, 0, 240, 240, 480, 0 }, | 3042 | { XFER_SW_DMA_1, 90, 0, 0, 0, 240, 240, 30, 480, 0 }, |
3043 | { XFER_SW_DMA_2, 60, 0, 0, 0, 120, 120, 240, 0 }, | 3043 | { XFER_SW_DMA_2, 60, 0, 0, 0, 120, 120, 20, 240, 0 }, |
3044 | 3044 | ||
3045 | { XFER_MW_DMA_0, 60, 0, 0, 0, 215, 215, 480, 0 }, | 3045 | { XFER_MW_DMA_0, 60, 0, 0, 0, 215, 215, 20, 480, 0 }, |
3046 | { XFER_MW_DMA_1, 45, 0, 0, 0, 80, 50, 150, 0 }, | 3046 | { XFER_MW_DMA_1, 45, 0, 0, 0, 80, 50, 5, 150, 0 }, |
3047 | { XFER_MW_DMA_2, 25, 0, 0, 0, 70, 25, 120, 0 }, | 3047 | { XFER_MW_DMA_2, 25, 0, 0, 0, 70, 25, 5, 120, 0 }, |
3048 | { XFER_MW_DMA_3, 25, 0, 0, 0, 65, 25, 100, 0 }, | 3048 | { XFER_MW_DMA_3, 25, 0, 0, 0, 65, 25, 5, 100, 0 }, |
3049 | { XFER_MW_DMA_4, 25, 0, 0, 0, 55, 20, 80, 0 }, | 3049 | { XFER_MW_DMA_4, 25, 0, 0, 0, 55, 20, 5, 80, 0 }, |
3050 | 3050 | ||
3051 | /* { XFER_UDMA_SLOW, 0, 0, 0, 0, 0, 0, 0, 150 }, */ | 3051 | /* { XFER_UDMA_SLOW, 0, 0, 0, 0, 0, 0, 0, 0, 150 }, */ |
3052 | { XFER_UDMA_0, 0, 0, 0, 0, 0, 0, 0, 120 }, | 3052 | { XFER_UDMA_0, 0, 0, 0, 0, 0, 0, 0, 0, 120 }, |
3053 | { XFER_UDMA_1, 0, 0, 0, 0, 0, 0, 0, 80 }, | 3053 | { XFER_UDMA_1, 0, 0, 0, 0, 0, 0, 0, 0, 80 }, |
3054 | { XFER_UDMA_2, 0, 0, 0, 0, 0, 0, 0, 60 }, | 3054 | { XFER_UDMA_2, 0, 0, 0, 0, 0, 0, 0, 0, 60 }, |
3055 | { XFER_UDMA_3, 0, 0, 0, 0, 0, 0, 0, 45 }, | 3055 | { XFER_UDMA_3, 0, 0, 0, 0, 0, 0, 0, 0, 45 }, |
3056 | { XFER_UDMA_4, 0, 0, 0, 0, 0, 0, 0, 30 }, | 3056 | { XFER_UDMA_4, 0, 0, 0, 0, 0, 0, 0, 0, 30 }, |
3057 | { XFER_UDMA_5, 0, 0, 0, 0, 0, 0, 0, 20 }, | 3057 | { XFER_UDMA_5, 0, 0, 0, 0, 0, 0, 0, 0, 20 }, |
3058 | { XFER_UDMA_6, 0, 0, 0, 0, 0, 0, 0, 15 }, | 3058 | { XFER_UDMA_6, 0, 0, 0, 0, 0, 0, 0, 0, 15 }, |
3059 | 3059 | ||
3060 | { 0xFF } | 3060 | { 0xFF } |
3061 | }; | 3061 | }; |
@@ -3065,14 +3065,15 @@ static const struct ata_timing ata_timing[] = { | |||
3065 | 3065 | ||
3066 | static void ata_timing_quantize(const struct ata_timing *t, struct ata_timing *q, int T, int UT) | 3066 | static void ata_timing_quantize(const struct ata_timing *t, struct ata_timing *q, int T, int UT) |
3067 | { | 3067 | { |
3068 | q->setup = EZ(t->setup * 1000, T); | 3068 | q->setup = EZ(t->setup * 1000, T); |
3069 | q->act8b = EZ(t->act8b * 1000, T); | 3069 | q->act8b = EZ(t->act8b * 1000, T); |
3070 | q->rec8b = EZ(t->rec8b * 1000, T); | 3070 | q->rec8b = EZ(t->rec8b * 1000, T); |
3071 | q->cyc8b = EZ(t->cyc8b * 1000, T); | 3071 | q->cyc8b = EZ(t->cyc8b * 1000, T); |
3072 | q->active = EZ(t->active * 1000, T); | 3072 | q->active = EZ(t->active * 1000, T); |
3073 | q->recover = EZ(t->recover * 1000, T); | 3073 | q->recover = EZ(t->recover * 1000, T); |
3074 | q->cycle = EZ(t->cycle * 1000, T); | 3074 | q->dmack_hold = EZ(t->dmack_hold * 1000, T); |
3075 | q->udma = EZ(t->udma * 1000, UT); | 3075 | q->cycle = EZ(t->cycle * 1000, T); |
3076 | q->udma = EZ(t->udma * 1000, UT); | ||
3076 | } | 3077 | } |
3077 | 3078 | ||
3078 | void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b, | 3079 | void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b, |
@@ -3084,6 +3085,7 @@ void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b, | |||
3084 | if (what & ATA_TIMING_CYC8B ) m->cyc8b = max(a->cyc8b, b->cyc8b); | 3085 | if (what & ATA_TIMING_CYC8B ) m->cyc8b = max(a->cyc8b, b->cyc8b); |
3085 | if (what & ATA_TIMING_ACTIVE ) m->active = max(a->active, b->active); | 3086 | if (what & ATA_TIMING_ACTIVE ) m->active = max(a->active, b->active); |
3086 | if (what & ATA_TIMING_RECOVER) m->recover = max(a->recover, b->recover); | 3087 | if (what & ATA_TIMING_RECOVER) m->recover = max(a->recover, b->recover); |
3088 | if (what & ATA_TIMING_DMACK_HOLD) m->dmack_hold = max(a->dmack_hold, b->dmack_hold); | ||
3087 | if (what & ATA_TIMING_CYCLE ) m->cycle = max(a->cycle, b->cycle); | 3089 | if (what & ATA_TIMING_CYCLE ) m->cycle = max(a->cycle, b->cycle); |
3088 | if (what & ATA_TIMING_UDMA ) m->udma = max(a->udma, b->udma); | 3090 | if (what & ATA_TIMING_UDMA ) m->udma = max(a->udma, b->udma); |
3089 | } | 3091 | } |
@@ -6638,7 +6640,6 @@ EXPORT_SYMBOL_GPL(ata_dev_pair); | |||
6638 | EXPORT_SYMBOL_GPL(ata_port_disable); | 6640 | EXPORT_SYMBOL_GPL(ata_port_disable); |
6639 | EXPORT_SYMBOL_GPL(ata_ratelimit); | 6641 | EXPORT_SYMBOL_GPL(ata_ratelimit); |
6640 | EXPORT_SYMBOL_GPL(ata_wait_register); | 6642 | EXPORT_SYMBOL_GPL(ata_wait_register); |
6641 | EXPORT_SYMBOL_GPL(ata_scsi_ioctl); | ||
6642 | EXPORT_SYMBOL_GPL(ata_scsi_queuecmd); | 6643 | EXPORT_SYMBOL_GPL(ata_scsi_queuecmd); |
6643 | EXPORT_SYMBOL_GPL(ata_scsi_slave_config); | 6644 | EXPORT_SYMBOL_GPL(ata_scsi_slave_config); |
6644 | EXPORT_SYMBOL_GPL(ata_scsi_slave_destroy); | 6645 | EXPORT_SYMBOL_GPL(ata_scsi_slave_destroy); |
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 9e92107691f2..a1a6e6298c33 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c | |||
@@ -423,9 +423,9 @@ int ata_std_bios_param(struct scsi_device *sdev, struct block_device *bdev, | |||
423 | * RETURNS: | 423 | * RETURNS: |
424 | * Zero on success, negative errno on error. | 424 | * Zero on success, negative errno on error. |
425 | */ | 425 | */ |
426 | static int ata_get_identity(struct scsi_device *sdev, void __user *arg) | 426 | static int ata_get_identity(struct ata_port *ap, struct scsi_device *sdev, |
427 | void __user *arg) | ||
427 | { | 428 | { |
428 | struct ata_port *ap = ata_shost_to_port(sdev->host); | ||
429 | struct ata_device *dev = ata_scsi_find_dev(ap, sdev); | 429 | struct ata_device *dev = ata_scsi_find_dev(ap, sdev); |
430 | u16 __user *dst = arg; | 430 | u16 __user *dst = arg; |
431 | char buf[40]; | 431 | char buf[40]; |
@@ -645,7 +645,8 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg) | |||
645 | return rc; | 645 | return rc; |
646 | } | 646 | } |
647 | 647 | ||
648 | int ata_scsi_ioctl(struct scsi_device *scsidev, int cmd, void __user *arg) | 648 | int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *scsidev, |
649 | int cmd, void __user *arg) | ||
649 | { | 650 | { |
650 | int val = -EINVAL, rc = -EINVAL; | 651 | int val = -EINVAL, rc = -EINVAL; |
651 | 652 | ||
@@ -663,7 +664,7 @@ int ata_scsi_ioctl(struct scsi_device *scsidev, int cmd, void __user *arg) | |||
663 | return 0; | 664 | return 0; |
664 | 665 | ||
665 | case HDIO_GET_IDENTITY: | 666 | case HDIO_GET_IDENTITY: |
666 | return ata_get_identity(scsidev, arg); | 667 | return ata_get_identity(ap, scsidev, arg); |
667 | 668 | ||
668 | case HDIO_DRIVE_CMD: | 669 | case HDIO_DRIVE_CMD: |
669 | if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO)) | 670 | if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO)) |
@@ -682,6 +683,14 @@ int ata_scsi_ioctl(struct scsi_device *scsidev, int cmd, void __user *arg) | |||
682 | 683 | ||
683 | return rc; | 684 | return rc; |
684 | } | 685 | } |
686 | EXPORT_SYMBOL_GPL(ata_sas_scsi_ioctl); | ||
687 | |||
688 | int ata_scsi_ioctl(struct scsi_device *scsidev, int cmd, void __user *arg) | ||
689 | { | ||
690 | return ata_sas_scsi_ioctl(ata_shost_to_port(scsidev->host), | ||
691 | scsidev, cmd, arg); | ||
692 | } | ||
693 | EXPORT_SYMBOL_GPL(ata_scsi_ioctl); | ||
685 | 694 | ||
686 | /** | 695 | /** |
687 | * ata_scsi_qc_new - acquire new ata_queued_cmd reference | 696 | * ata_scsi_qc_new - acquire new ata_queued_cmd reference |
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c index a7999c19f0c9..eb99dbe78081 100644 --- a/drivers/ata/pata_ali.c +++ b/drivers/ata/pata_ali.c | |||
@@ -41,7 +41,7 @@ static int ali_atapi_dma = 0; | |||
41 | module_param_named(atapi_dma, ali_atapi_dma, int, 0644); | 41 | module_param_named(atapi_dma, ali_atapi_dma, int, 0644); |
42 | MODULE_PARM_DESC(atapi_dma, "Enable ATAPI DMA (0=disable, 1=enable)"); | 42 | MODULE_PARM_DESC(atapi_dma, "Enable ATAPI DMA (0=disable, 1=enable)"); |
43 | 43 | ||
44 | static struct pci_dev *isa_bridge; | 44 | static struct pci_dev *ali_isa_bridge; |
45 | 45 | ||
46 | /* | 46 | /* |
47 | * Cable special cases | 47 | * Cable special cases |
@@ -346,13 +346,13 @@ static void ali_c2_c3_postreset(struct ata_link *link, unsigned int *classes) | |||
346 | int port_bit = 4 << link->ap->port_no; | 346 | int port_bit = 4 << link->ap->port_no; |
347 | 347 | ||
348 | /* If our bridge is an ALI 1533 then do the extra work */ | 348 | /* If our bridge is an ALI 1533 then do the extra work */ |
349 | if (isa_bridge) { | 349 | if (ali_isa_bridge) { |
350 | /* Tristate and re-enable the bus signals */ | 350 | /* Tristate and re-enable the bus signals */ |
351 | pci_read_config_byte(isa_bridge, 0x58, &r); | 351 | pci_read_config_byte(ali_isa_bridge, 0x58, &r); |
352 | r &= ~port_bit; | 352 | r &= ~port_bit; |
353 | pci_write_config_byte(isa_bridge, 0x58, r); | 353 | pci_write_config_byte(ali_isa_bridge, 0x58, r); |
354 | r |= port_bit; | 354 | r |= port_bit; |
355 | pci_write_config_byte(isa_bridge, 0x58, r); | 355 | pci_write_config_byte(ali_isa_bridge, 0x58, r); |
356 | } | 356 | } |
357 | ata_sff_postreset(link, classes); | 357 | ata_sff_postreset(link, classes); |
358 | } | 358 | } |
@@ -467,14 +467,14 @@ static void ali_init_chipset(struct pci_dev *pdev) | |||
467 | pci_write_config_byte(pdev, 0x53, tmp); | 467 | pci_write_config_byte(pdev, 0x53, tmp); |
468 | } | 468 | } |
469 | north = pci_get_bus_and_slot(0, PCI_DEVFN(0,0)); | 469 | north = pci_get_bus_and_slot(0, PCI_DEVFN(0,0)); |
470 | if (north && north->vendor == PCI_VENDOR_ID_AL && isa_bridge) { | 470 | if (north && north->vendor == PCI_VENDOR_ID_AL && ali_isa_bridge) { |
471 | /* Configure the ALi bridge logic. For non ALi rely on BIOS. | 471 | /* Configure the ALi bridge logic. For non ALi rely on BIOS. |
472 | Set the south bridge enable bit */ | 472 | Set the south bridge enable bit */ |
473 | pci_read_config_byte(isa_bridge, 0x79, &tmp); | 473 | pci_read_config_byte(ali_isa_bridge, 0x79, &tmp); |
474 | if (pdev->revision == 0xC2) | 474 | if (pdev->revision == 0xC2) |
475 | pci_write_config_byte(isa_bridge, 0x79, tmp | 0x04); | 475 | pci_write_config_byte(ali_isa_bridge, 0x79, tmp | 0x04); |
476 | else if (pdev->revision > 0xC2 && pdev->revision < 0xC5) | 476 | else if (pdev->revision > 0xC2 && pdev->revision < 0xC5) |
477 | pci_write_config_byte(isa_bridge, 0x79, tmp | 0x02); | 477 | pci_write_config_byte(ali_isa_bridge, 0x79, tmp | 0x02); |
478 | } | 478 | } |
479 | pci_dev_put(north); | 479 | pci_dev_put(north); |
480 | ata_pci_bmdma_clear_simplex(pdev); | 480 | ata_pci_bmdma_clear_simplex(pdev); |
@@ -571,9 +571,9 @@ static int ali_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
571 | 571 | ||
572 | ali_init_chipset(pdev); | 572 | ali_init_chipset(pdev); |
573 | 573 | ||
574 | if (isa_bridge && pdev->revision >= 0x20 && pdev->revision < 0xC2) { | 574 | if (ali_isa_bridge && pdev->revision >= 0x20 && pdev->revision < 0xC2) { |
575 | /* Are we paired with a UDMA capable chip */ | 575 | /* Are we paired with a UDMA capable chip */ |
576 | pci_read_config_byte(isa_bridge, 0x5E, &tmp); | 576 | pci_read_config_byte(ali_isa_bridge, 0x5E, &tmp); |
577 | if ((tmp & 0x1E) == 0x12) | 577 | if ((tmp & 0x1E) == 0x12) |
578 | ppi[0] = &info_20_udma; | 578 | ppi[0] = &info_20_udma; |
579 | } | 579 | } |
@@ -617,11 +617,11 @@ static struct pci_driver ali_pci_driver = { | |||
617 | static int __init ali_init(void) | 617 | static int __init ali_init(void) |
618 | { | 618 | { |
619 | int ret; | 619 | int ret; |
620 | isa_bridge = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL); | 620 | ali_isa_bridge = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL); |
621 | 621 | ||
622 | ret = pci_register_driver(&ali_pci_driver); | 622 | ret = pci_register_driver(&ali_pci_driver); |
623 | if (ret < 0) | 623 | if (ret < 0) |
624 | pci_dev_put(isa_bridge); | 624 | pci_dev_put(ali_isa_bridge); |
625 | return ret; | 625 | return ret; |
626 | } | 626 | } |
627 | 627 | ||
@@ -629,7 +629,7 @@ static int __init ali_init(void) | |||
629 | static void __exit ali_exit(void) | 629 | static void __exit ali_exit(void) |
630 | { | 630 | { |
631 | pci_unregister_driver(&ali_pci_driver); | 631 | pci_unregister_driver(&ali_pci_driver); |
632 | pci_dev_put(isa_bridge); | 632 | pci_dev_put(ali_isa_bridge); |
633 | } | 633 | } |
634 | 634 | ||
635 | 635 | ||
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c index 0e2cde8f9973..506adde8ebb3 100644 --- a/drivers/ata/pata_atiixp.c +++ b/drivers/ata/pata_atiixp.c | |||
@@ -32,21 +32,6 @@ enum { | |||
32 | ATIIXP_IDE_UDMA_MODE = 0x56 | 32 | ATIIXP_IDE_UDMA_MODE = 0x56 |
33 | }; | 33 | }; |
34 | 34 | ||
35 | static int atiixp_pre_reset(struct ata_link *link, unsigned long deadline) | ||
36 | { | ||
37 | struct ata_port *ap = link->ap; | ||
38 | static const struct pci_bits atiixp_enable_bits[] = { | ||
39 | { 0x48, 1, 0x01, 0x00 }, | ||
40 | { 0x48, 1, 0x08, 0x00 } | ||
41 | }; | ||
42 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | ||
43 | |||
44 | if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->port_no])) | ||
45 | return -ENOENT; | ||
46 | |||
47 | return ata_sff_prereset(link, deadline); | ||
48 | } | ||
49 | |||
50 | static int atiixp_cable_detect(struct ata_port *ap) | 35 | static int atiixp_cable_detect(struct ata_port *ap) |
51 | { | 36 | { |
52 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 37 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
@@ -229,10 +214,9 @@ static struct ata_port_operations atiixp_port_ops = { | |||
229 | .cable_detect = atiixp_cable_detect, | 214 | .cable_detect = atiixp_cable_detect, |
230 | .set_piomode = atiixp_set_piomode, | 215 | .set_piomode = atiixp_set_piomode, |
231 | .set_dmamode = atiixp_set_dmamode, | 216 | .set_dmamode = atiixp_set_dmamode, |
232 | .prereset = atiixp_pre_reset, | ||
233 | }; | 217 | }; |
234 | 218 | ||
235 | static int atiixp_init_one(struct pci_dev *dev, const struct pci_device_id *id) | 219 | static int atiixp_init_one(struct pci_dev *pdev, const struct pci_device_id *id) |
236 | { | 220 | { |
237 | static const struct ata_port_info info = { | 221 | static const struct ata_port_info info = { |
238 | .flags = ATA_FLAG_SLAVE_POSS, | 222 | .flags = ATA_FLAG_SLAVE_POSS, |
@@ -241,8 +225,18 @@ static int atiixp_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
241 | .udma_mask = 0x3F, | 225 | .udma_mask = 0x3F, |
242 | .port_ops = &atiixp_port_ops | 226 | .port_ops = &atiixp_port_ops |
243 | }; | 227 | }; |
244 | const struct ata_port_info *ppi[] = { &info, NULL }; | 228 | static const struct pci_bits atiixp_enable_bits[] = { |
245 | return ata_pci_sff_init_one(dev, ppi, &atiixp_sht, NULL); | 229 | { 0x48, 1, 0x01, 0x00 }, |
230 | { 0x48, 1, 0x08, 0x00 } | ||
231 | }; | ||
232 | const struct ata_port_info *ppi[] = { &info, &info }; | ||
233 | int i; | ||
234 | |||
235 | for (i = 0; i < 2; i++) | ||
236 | if (!pci_test_config_bits(pdev, &atiixp_enable_bits[i])) | ||
237 | ppi[i] = &ata_dummy_port_info; | ||
238 | |||
239 | return ata_pci_sff_init_one(pdev, ppi, &atiixp_sht, NULL); | ||
246 | } | 240 | } |
247 | 241 | ||
248 | static const struct pci_device_id atiixp[] = { | 242 | static const struct pci_device_id atiixp[] = { |
diff --git a/drivers/ata/pata_octeon_cf.c b/drivers/ata/pata_octeon_cf.c new file mode 100644 index 000000000000..0fe4ef309c62 --- /dev/null +++ b/drivers/ata/pata_octeon_cf.c | |||
@@ -0,0 +1,965 @@ | |||
1 | /* | ||
2 | * Driver for the Octeon bootbus compact flash. | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | * | ||
8 | * Copyright (C) 2005 - 2009 Cavium Networks | ||
9 | * Copyright (C) 2008 Wind River Systems | ||
10 | */ | ||
11 | |||
12 | #include <linux/kernel.h> | ||
13 | #include <linux/module.h> | ||
14 | #include <linux/libata.h> | ||
15 | #include <linux/irq.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/workqueue.h> | ||
18 | #include <scsi/scsi_host.h> | ||
19 | |||
20 | #include <asm/octeon/octeon.h> | ||
21 | |||
22 | /* | ||
23 | * The Octeon bootbus compact flash interface is connected in at least | ||
24 | * 3 different configurations on various evaluation boards: | ||
25 | * | ||
26 | * -- 8 bits no irq, no DMA | ||
27 | * -- 16 bits no irq, no DMA | ||
28 | * -- 16 bits True IDE mode with DMA, but no irq. | ||
29 | * | ||
30 | * In the last case the DMA engine can generate an interrupt when the | ||
31 | * transfer is complete. For the first two cases only PIO is supported. | ||
32 | * | ||
33 | */ | ||
34 | |||
35 | #define DRV_NAME "pata_octeon_cf" | ||
36 | #define DRV_VERSION "2.1" | ||
37 | |||
38 | |||
39 | struct octeon_cf_port { | ||
40 | struct workqueue_struct *wq; | ||
41 | struct delayed_work delayed_finish; | ||
42 | struct ata_port *ap; | ||
43 | int dma_finished; | ||
44 | }; | ||
45 | |||
46 | static struct scsi_host_template octeon_cf_sht = { | ||
47 | ATA_PIO_SHT(DRV_NAME), | ||
48 | }; | ||
49 | |||
50 | /** | ||
51 | * Convert nanosecond based time to setting used in the | ||
52 | * boot bus timing register, based on timing multiple | ||
53 | */ | ||
54 | static unsigned int ns_to_tim_reg(unsigned int tim_mult, unsigned int nsecs) | ||
55 | { | ||
56 | unsigned int val; | ||
57 | |||
58 | /* | ||
59 | * Compute # of eclock periods to get desired duration in | ||
60 | * nanoseconds. | ||
61 | */ | ||
62 | val = DIV_ROUND_UP(nsecs * (octeon_get_clock_rate() / 1000000), | ||
63 | 1000 * tim_mult); | ||
64 | |||
65 | return val; | ||
66 | } | ||
67 | |||
68 | static void octeon_cf_set_boot_reg_cfg(int cs) | ||
69 | { | ||
70 | union cvmx_mio_boot_reg_cfgx reg_cfg; | ||
71 | reg_cfg.u64 = cvmx_read_csr(CVMX_MIO_BOOT_REG_CFGX(cs)); | ||
72 | reg_cfg.s.dmack = 0; /* Don't assert DMACK on access */ | ||
73 | reg_cfg.s.tim_mult = 2; /* Timing mutiplier 2x */ | ||
74 | reg_cfg.s.rd_dly = 0; /* Sample on falling edge of BOOT_OE */ | ||
75 | reg_cfg.s.sam = 0; /* Don't combine write and output enable */ | ||
76 | reg_cfg.s.we_ext = 0; /* No write enable extension */ | ||
77 | reg_cfg.s.oe_ext = 0; /* No read enable extension */ | ||
78 | reg_cfg.s.en = 1; /* Enable this region */ | ||
79 | reg_cfg.s.orbit = 0; /* Don't combine with previous region */ | ||
80 | reg_cfg.s.ale = 0; /* Don't do address multiplexing */ | ||
81 | cvmx_write_csr(CVMX_MIO_BOOT_REG_CFGX(cs), reg_cfg.u64); | ||
82 | } | ||
83 | |||
84 | /** | ||
85 | * Called after libata determines the needed PIO mode. This | ||
86 | * function programs the Octeon bootbus regions to support the | ||
87 | * timing requirements of the PIO mode. | ||
88 | * | ||
89 | * @ap: ATA port information | ||
90 | * @dev: ATA device | ||
91 | */ | ||
92 | static void octeon_cf_set_piomode(struct ata_port *ap, struct ata_device *dev) | ||
93 | { | ||
94 | struct octeon_cf_data *ocd = ap->dev->platform_data; | ||
95 | union cvmx_mio_boot_reg_timx reg_tim; | ||
96 | int cs = ocd->base_region; | ||
97 | int T; | ||
98 | struct ata_timing timing; | ||
99 | |||
100 | int use_iordy; | ||
101 | int trh; | ||
102 | int pause; | ||
103 | /* These names are timing parameters from the ATA spec */ | ||
104 | int t1; | ||
105 | int t2; | ||
106 | int t2i; | ||
107 | |||
108 | T = (int)(2000000000000LL / octeon_get_clock_rate()); | ||
109 | |||
110 | if (ata_timing_compute(dev, dev->pio_mode, &timing, T, T)) | ||
111 | BUG(); | ||
112 | |||
113 | t1 = timing.setup; | ||
114 | if (t1) | ||
115 | t1--; | ||
116 | t2 = timing.active; | ||
117 | if (t2) | ||
118 | t2--; | ||
119 | t2i = timing.act8b; | ||
120 | if (t2i) | ||
121 | t2i--; | ||
122 | |||
123 | trh = ns_to_tim_reg(2, 20); | ||
124 | if (trh) | ||
125 | trh--; | ||
126 | |||
127 | pause = timing.cycle - timing.active - timing.setup - trh; | ||
128 | if (pause) | ||
129 | pause--; | ||
130 | |||
131 | octeon_cf_set_boot_reg_cfg(cs); | ||
132 | if (ocd->dma_engine >= 0) | ||
133 | /* True IDE mode, program both chip selects. */ | ||
134 | octeon_cf_set_boot_reg_cfg(cs + 1); | ||
135 | |||
136 | |||
137 | use_iordy = ata_pio_need_iordy(dev); | ||
138 | |||
139 | reg_tim.u64 = cvmx_read_csr(CVMX_MIO_BOOT_REG_TIMX(cs)); | ||
140 | /* Disable page mode */ | ||
141 | reg_tim.s.pagem = 0; | ||
142 | /* Enable dynamic timing */ | ||
143 | reg_tim.s.waitm = use_iordy; | ||
144 | /* Pages are disabled */ | ||
145 | reg_tim.s.pages = 0; | ||
146 | /* We don't use multiplexed address mode */ | ||
147 | reg_tim.s.ale = 0; | ||
148 | /* Not used */ | ||
149 | reg_tim.s.page = 0; | ||
150 | /* Time after IORDY to coninue to assert the data */ | ||
151 | reg_tim.s.wait = 0; | ||
152 | /* Time to wait to complete the cycle. */ | ||
153 | reg_tim.s.pause = pause; | ||
154 | /* How long to hold after a write to de-assert CE. */ | ||
155 | reg_tim.s.wr_hld = trh; | ||
156 | /* How long to wait after a read to de-assert CE. */ | ||
157 | reg_tim.s.rd_hld = trh; | ||
158 | /* How long write enable is asserted */ | ||
159 | reg_tim.s.we = t2; | ||
160 | /* How long read enable is asserted */ | ||
161 | reg_tim.s.oe = t2; | ||
162 | /* Time after CE that read/write starts */ | ||
163 | reg_tim.s.ce = ns_to_tim_reg(2, 5); | ||
164 | /* Time before CE that address is valid */ | ||
165 | reg_tim.s.adr = 0; | ||
166 | |||
167 | /* Program the bootbus region timing for the data port chip select. */ | ||
168 | cvmx_write_csr(CVMX_MIO_BOOT_REG_TIMX(cs), reg_tim.u64); | ||
169 | if (ocd->dma_engine >= 0) | ||
170 | /* True IDE mode, program both chip selects. */ | ||
171 | cvmx_write_csr(CVMX_MIO_BOOT_REG_TIMX(cs + 1), reg_tim.u64); | ||
172 | } | ||
173 | |||
174 | static void octeon_cf_set_dmamode(struct ata_port *ap, struct ata_device *dev) | ||
175 | { | ||
176 | struct octeon_cf_data *ocd = dev->link->ap->dev->platform_data; | ||
177 | union cvmx_mio_boot_dma_timx dma_tim; | ||
178 | unsigned int oe_a; | ||
179 | unsigned int oe_n; | ||
180 | unsigned int dma_ackh; | ||
181 | unsigned int dma_arq; | ||
182 | unsigned int pause; | ||
183 | unsigned int T0, Tkr, Td; | ||
184 | unsigned int tim_mult; | ||
185 | |||
186 | const struct ata_timing *timing; | ||
187 | |||
188 | timing = ata_timing_find_mode(dev->dma_mode); | ||
189 | T0 = timing->cycle; | ||
190 | Td = timing->active; | ||
191 | Tkr = timing->recover; | ||
192 | dma_ackh = timing->dmack_hold; | ||
193 | |||
194 | dma_tim.u64 = 0; | ||
195 | /* dma_tim.s.tim_mult = 0 --> 4x */ | ||
196 | tim_mult = 4; | ||
197 | |||
198 | /* not spec'ed, value in eclocks, not affected by tim_mult */ | ||
199 | dma_arq = 8; | ||
200 | pause = 25 - dma_arq * 1000 / | ||
201 | (octeon_get_clock_rate() / 1000000); /* Tz */ | ||
202 | |||
203 | oe_a = Td; | ||
204 | /* Tkr from cf spec, lengthened to meet T0 */ | ||
205 | oe_n = max(T0 - oe_a, Tkr); | ||
206 | |||
207 | dma_tim.s.dmack_pi = 1; | ||
208 | |||
209 | dma_tim.s.oe_n = ns_to_tim_reg(tim_mult, oe_n); | ||
210 | dma_tim.s.oe_a = ns_to_tim_reg(tim_mult, oe_a); | ||
211 | |||
212 | /* | ||
213 | * This is tI, C.F. spec. says 0, but Sony CF card requires | ||
214 | * more, we use 20 nS. | ||
215 | */ | ||
216 | dma_tim.s.dmack_s = ns_to_tim_reg(tim_mult, 20);; | ||
217 | dma_tim.s.dmack_h = ns_to_tim_reg(tim_mult, dma_ackh); | ||
218 | |||
219 | dma_tim.s.dmarq = dma_arq; | ||
220 | dma_tim.s.pause = ns_to_tim_reg(tim_mult, pause); | ||
221 | |||
222 | dma_tim.s.rd_dly = 0; /* Sample right on edge */ | ||
223 | |||
224 | /* writes only */ | ||
225 | dma_tim.s.we_n = ns_to_tim_reg(tim_mult, oe_n); | ||
226 | dma_tim.s.we_a = ns_to_tim_reg(tim_mult, oe_a); | ||
227 | |||
228 | pr_debug("ns to ticks (mult %d) of %d is: %d\n", tim_mult, 60, | ||
229 | ns_to_tim_reg(tim_mult, 60)); | ||
230 | pr_debug("oe_n: %d, oe_a: %d, dmack_s: %d, dmack_h: " | ||
231 | "%d, dmarq: %d, pause: %d\n", | ||
232 | dma_tim.s.oe_n, dma_tim.s.oe_a, dma_tim.s.dmack_s, | ||
233 | dma_tim.s.dmack_h, dma_tim.s.dmarq, dma_tim.s.pause); | ||
234 | |||
235 | cvmx_write_csr(CVMX_MIO_BOOT_DMA_TIMX(ocd->dma_engine), | ||
236 | dma_tim.u64); | ||
237 | |||
238 | } | ||
239 | |||
240 | /** | ||
241 | * Handle an 8 bit I/O request. | ||
242 | * | ||
243 | * @dev: Device to access | ||
244 | * @buffer: Data buffer | ||
245 | * @buflen: Length of the buffer. | ||
246 | * @rw: True to write. | ||
247 | */ | ||
248 | static unsigned int octeon_cf_data_xfer8(struct ata_device *dev, | ||
249 | unsigned char *buffer, | ||
250 | unsigned int buflen, | ||
251 | int rw) | ||
252 | { | ||
253 | struct ata_port *ap = dev->link->ap; | ||
254 | void __iomem *data_addr = ap->ioaddr.data_addr; | ||
255 | unsigned long words; | ||
256 | int count; | ||
257 | |||
258 | words = buflen; | ||
259 | if (rw) { | ||
260 | count = 16; | ||
261 | while (words--) { | ||
262 | iowrite8(*buffer, data_addr); | ||
263 | buffer++; | ||
264 | /* | ||
265 | * Every 16 writes do a read so the bootbus | ||
266 | * FIFO doesn't fill up. | ||
267 | */ | ||
268 | if (--count == 0) { | ||
269 | ioread8(ap->ioaddr.altstatus_addr); | ||
270 | count = 16; | ||
271 | } | ||
272 | } | ||
273 | } else { | ||
274 | ioread8_rep(data_addr, buffer, words); | ||
275 | } | ||
276 | return buflen; | ||
277 | } | ||
278 | |||
279 | /** | ||
280 | * Handle a 16 bit I/O request. | ||
281 | * | ||
282 | * @dev: Device to access | ||
283 | * @buffer: Data buffer | ||
284 | * @buflen: Length of the buffer. | ||
285 | * @rw: True to write. | ||
286 | */ | ||
287 | static unsigned int octeon_cf_data_xfer16(struct ata_device *dev, | ||
288 | unsigned char *buffer, | ||
289 | unsigned int buflen, | ||
290 | int rw) | ||
291 | { | ||
292 | struct ata_port *ap = dev->link->ap; | ||
293 | void __iomem *data_addr = ap->ioaddr.data_addr; | ||
294 | unsigned long words; | ||
295 | int count; | ||
296 | |||
297 | words = buflen / 2; | ||
298 | if (rw) { | ||
299 | count = 16; | ||
300 | while (words--) { | ||
301 | iowrite16(*(uint16_t *)buffer, data_addr); | ||
302 | buffer += sizeof(uint16_t); | ||
303 | /* | ||
304 | * Every 16 writes do a read so the bootbus | ||
305 | * FIFO doesn't fill up. | ||
306 | */ | ||
307 | if (--count == 0) { | ||
308 | ioread8(ap->ioaddr.altstatus_addr); | ||
309 | count = 16; | ||
310 | } | ||
311 | } | ||
312 | } else { | ||
313 | while (words--) { | ||
314 | *(uint16_t *)buffer = ioread16(data_addr); | ||
315 | buffer += sizeof(uint16_t); | ||
316 | } | ||
317 | } | ||
318 | /* Transfer trailing 1 byte, if any. */ | ||
319 | if (unlikely(buflen & 0x01)) { | ||
320 | __le16 align_buf[1] = { 0 }; | ||
321 | |||
322 | if (rw == READ) { | ||
323 | align_buf[0] = cpu_to_le16(ioread16(data_addr)); | ||
324 | memcpy(buffer, align_buf, 1); | ||
325 | } else { | ||
326 | memcpy(align_buf, buffer, 1); | ||
327 | iowrite16(le16_to_cpu(align_buf[0]), data_addr); | ||
328 | } | ||
329 | words++; | ||
330 | } | ||
331 | return buflen; | ||
332 | } | ||
333 | |||
334 | /** | ||
335 | * Read the taskfile for 16bit non-True IDE only. | ||
336 | */ | ||
337 | static void octeon_cf_tf_read16(struct ata_port *ap, struct ata_taskfile *tf) | ||
338 | { | ||
339 | u16 blob; | ||
340 | /* The base of the registers is at ioaddr.data_addr. */ | ||
341 | void __iomem *base = ap->ioaddr.data_addr; | ||
342 | |||
343 | blob = __raw_readw(base + 0xc); | ||
344 | tf->feature = blob >> 8; | ||
345 | |||
346 | blob = __raw_readw(base + 2); | ||
347 | tf->nsect = blob & 0xff; | ||
348 | tf->lbal = blob >> 8; | ||
349 | |||
350 | blob = __raw_readw(base + 4); | ||
351 | tf->lbam = blob & 0xff; | ||
352 | tf->lbah = blob >> 8; | ||
353 | |||
354 | blob = __raw_readw(base + 6); | ||
355 | tf->device = blob & 0xff; | ||
356 | tf->command = blob >> 8; | ||
357 | |||
358 | if (tf->flags & ATA_TFLAG_LBA48) { | ||
359 | if (likely(ap->ioaddr.ctl_addr)) { | ||
360 | iowrite8(tf->ctl | ATA_HOB, ap->ioaddr.ctl_addr); | ||
361 | |||
362 | blob = __raw_readw(base + 0xc); | ||
363 | tf->hob_feature = blob >> 8; | ||
364 | |||
365 | blob = __raw_readw(base + 2); | ||
366 | tf->hob_nsect = blob & 0xff; | ||
367 | tf->hob_lbal = blob >> 8; | ||
368 | |||
369 | blob = __raw_readw(base + 4); | ||
370 | tf->hob_lbam = blob & 0xff; | ||
371 | tf->hob_lbah = blob >> 8; | ||
372 | |||
373 | iowrite8(tf->ctl, ap->ioaddr.ctl_addr); | ||
374 | ap->last_ctl = tf->ctl; | ||
375 | } else { | ||
376 | WARN_ON(1); | ||
377 | } | ||
378 | } | ||
379 | } | ||
380 | |||
381 | static u8 octeon_cf_check_status16(struct ata_port *ap) | ||
382 | { | ||
383 | u16 blob; | ||
384 | void __iomem *base = ap->ioaddr.data_addr; | ||
385 | |||
386 | blob = __raw_readw(base + 6); | ||
387 | return blob >> 8; | ||
388 | } | ||
389 | |||
390 | static int octeon_cf_softreset16(struct ata_link *link, unsigned int *classes, | ||
391 | unsigned long deadline) | ||
392 | { | ||
393 | struct ata_port *ap = link->ap; | ||
394 | void __iomem *base = ap->ioaddr.data_addr; | ||
395 | int rc; | ||
396 | u8 err; | ||
397 | |||
398 | DPRINTK("about to softreset\n"); | ||
399 | __raw_writew(ap->ctl, base + 0xe); | ||
400 | udelay(20); | ||
401 | __raw_writew(ap->ctl | ATA_SRST, base + 0xe); | ||
402 | udelay(20); | ||
403 | __raw_writew(ap->ctl, base + 0xe); | ||
404 | |||
405 | rc = ata_sff_wait_after_reset(link, 1, deadline); | ||
406 | if (rc) { | ||
407 | ata_link_printk(link, KERN_ERR, "SRST failed (errno=%d)\n", rc); | ||
408 | return rc; | ||
409 | } | ||
410 | |||
411 | /* determine by signature whether we have ATA or ATAPI devices */ | ||
412 | classes[0] = ata_sff_dev_classify(&link->device[0], 1, &err); | ||
413 | DPRINTK("EXIT, classes[0]=%u [1]=%u\n", classes[0], classes[1]); | ||
414 | return 0; | ||
415 | } | ||
416 | |||
417 | /** | ||
418 | * Load the taskfile for 16bit non-True IDE only. The device_addr is | ||
419 | * not loaded, we do this as part of octeon_cf_exec_command16. | ||
420 | */ | ||
421 | static void octeon_cf_tf_load16(struct ata_port *ap, | ||
422 | const struct ata_taskfile *tf) | ||
423 | { | ||
424 | unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR; | ||
425 | /* The base of the registers is at ioaddr.data_addr. */ | ||
426 | void __iomem *base = ap->ioaddr.data_addr; | ||
427 | |||
428 | if (tf->ctl != ap->last_ctl) { | ||
429 | iowrite8(tf->ctl, ap->ioaddr.ctl_addr); | ||
430 | ap->last_ctl = tf->ctl; | ||
431 | ata_wait_idle(ap); | ||
432 | } | ||
433 | if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) { | ||
434 | __raw_writew(tf->hob_feature << 8, base + 0xc); | ||
435 | __raw_writew(tf->hob_nsect | tf->hob_lbal << 8, base + 2); | ||
436 | __raw_writew(tf->hob_lbam | tf->hob_lbah << 8, base + 4); | ||
437 | VPRINTK("hob: feat 0x%X nsect 0x%X, lba 0x%X 0x%X 0x%X\n", | ||
438 | tf->hob_feature, | ||
439 | tf->hob_nsect, | ||
440 | tf->hob_lbal, | ||
441 | tf->hob_lbam, | ||
442 | tf->hob_lbah); | ||
443 | } | ||
444 | if (is_addr) { | ||
445 | __raw_writew(tf->feature << 8, base + 0xc); | ||
446 | __raw_writew(tf->nsect | tf->lbal << 8, base + 2); | ||
447 | __raw_writew(tf->lbam | tf->lbah << 8, base + 4); | ||
448 | VPRINTK("feat 0x%X nsect 0x%X, lba 0x%X 0x%X 0x%X\n", | ||
449 | tf->feature, | ||
450 | tf->nsect, | ||
451 | tf->lbal, | ||
452 | tf->lbam, | ||
453 | tf->lbah); | ||
454 | } | ||
455 | ata_wait_idle(ap); | ||
456 | } | ||
457 | |||
458 | |||
459 | static void octeon_cf_dev_select(struct ata_port *ap, unsigned int device) | ||
460 | { | ||
461 | /* There is only one device, do nothing. */ | ||
462 | return; | ||
463 | } | ||
464 | |||
465 | /* | ||
466 | * Issue ATA command to host controller. The device_addr is also sent | ||
467 | * as it must be written in a combined write with the command. | ||
468 | */ | ||
469 | static void octeon_cf_exec_command16(struct ata_port *ap, | ||
470 | const struct ata_taskfile *tf) | ||
471 | { | ||
472 | /* The base of the registers is at ioaddr.data_addr. */ | ||
473 | void __iomem *base = ap->ioaddr.data_addr; | ||
474 | u16 blob; | ||
475 | |||
476 | if (tf->flags & ATA_TFLAG_DEVICE) { | ||
477 | VPRINTK("device 0x%X\n", tf->device); | ||
478 | blob = tf->device; | ||
479 | } else { | ||
480 | blob = 0; | ||
481 | } | ||
482 | |||
483 | DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command); | ||
484 | blob |= (tf->command << 8); | ||
485 | __raw_writew(blob, base + 6); | ||
486 | |||
487 | |||
488 | ata_wait_idle(ap); | ||
489 | } | ||
490 | |||
491 | static u8 octeon_cf_irq_on(struct ata_port *ap) | ||
492 | { | ||
493 | return 0; | ||
494 | } | ||
495 | |||
496 | static void octeon_cf_irq_clear(struct ata_port *ap) | ||
497 | { | ||
498 | return; | ||
499 | } | ||
500 | |||
501 | static void octeon_cf_dma_setup(struct ata_queued_cmd *qc) | ||
502 | { | ||
503 | struct ata_port *ap = qc->ap; | ||
504 | struct octeon_cf_port *cf_port; | ||
505 | |||
506 | cf_port = (struct octeon_cf_port *)ap->private_data; | ||
507 | DPRINTK("ENTER\n"); | ||
508 | /* issue r/w command */ | ||
509 | qc->cursg = qc->sg; | ||
510 | cf_port->dma_finished = 0; | ||
511 | ap->ops->sff_exec_command(ap, &qc->tf); | ||
512 | DPRINTK("EXIT\n"); | ||
513 | } | ||
514 | |||
515 | /** | ||
516 | * Start a DMA transfer that was already setup | ||
517 | * | ||
518 | * @qc: Information about the DMA | ||
519 | */ | ||
520 | static void octeon_cf_dma_start(struct ata_queued_cmd *qc) | ||
521 | { | ||
522 | struct octeon_cf_data *ocd = qc->ap->dev->platform_data; | ||
523 | union cvmx_mio_boot_dma_cfgx mio_boot_dma_cfg; | ||
524 | union cvmx_mio_boot_dma_intx mio_boot_dma_int; | ||
525 | struct scatterlist *sg; | ||
526 | |||
527 | VPRINTK("%d scatterlists\n", qc->n_elem); | ||
528 | |||
529 | /* Get the scatter list entry we need to DMA into */ | ||
530 | sg = qc->cursg; | ||
531 | BUG_ON(!sg); | ||
532 | |||
533 | /* | ||
534 | * Clear the DMA complete status. | ||
535 | */ | ||
536 | mio_boot_dma_int.u64 = 0; | ||
537 | mio_boot_dma_int.s.done = 1; | ||
538 | cvmx_write_csr(CVMX_MIO_BOOT_DMA_INTX(ocd->dma_engine), | ||
539 | mio_boot_dma_int.u64); | ||
540 | |||
541 | /* Enable the interrupt. */ | ||
542 | cvmx_write_csr(CVMX_MIO_BOOT_DMA_INT_ENX(ocd->dma_engine), | ||
543 | mio_boot_dma_int.u64); | ||
544 | |||
545 | /* Set the direction of the DMA */ | ||
546 | mio_boot_dma_cfg.u64 = 0; | ||
547 | mio_boot_dma_cfg.s.en = 1; | ||
548 | mio_boot_dma_cfg.s.rw = ((qc->tf.flags & ATA_TFLAG_WRITE) != 0); | ||
549 | |||
550 | /* | ||
551 | * Don't stop the DMA if the device deasserts DMARQ. Many | ||
552 | * compact flashes deassert DMARQ for a short time between | ||
553 | * sectors. Instead of stopping and restarting the DMA, we'll | ||
554 | * let the hardware do it. If the DMA is really stopped early | ||
555 | * due to an error condition, a later timeout will force us to | ||
556 | * stop. | ||
557 | */ | ||
558 | mio_boot_dma_cfg.s.clr = 0; | ||
559 | |||
560 | /* Size is specified in 16bit words and minus one notation */ | ||
561 | mio_boot_dma_cfg.s.size = sg_dma_len(sg) / 2 - 1; | ||
562 | |||
563 | /* We need to swap the high and low bytes of every 16 bits */ | ||
564 | mio_boot_dma_cfg.s.swap8 = 1; | ||
565 | |||
566 | mio_boot_dma_cfg.s.adr = sg_dma_address(sg); | ||
567 | |||
568 | VPRINTK("%s %d bytes address=%p\n", | ||
569 | (mio_boot_dma_cfg.s.rw) ? "write" : "read", sg->length, | ||
570 | (void *)(unsigned long)mio_boot_dma_cfg.s.adr); | ||
571 | |||
572 | cvmx_write_csr(CVMX_MIO_BOOT_DMA_CFGX(ocd->dma_engine), | ||
573 | mio_boot_dma_cfg.u64); | ||
574 | } | ||
575 | |||
576 | /** | ||
577 | * | ||
578 | * LOCKING: | ||
579 | * spin_lock_irqsave(host lock) | ||
580 | * | ||
581 | */ | ||
582 | static unsigned int octeon_cf_dma_finished(struct ata_port *ap, | ||
583 | struct ata_queued_cmd *qc) | ||
584 | { | ||
585 | struct ata_eh_info *ehi = &ap->link.eh_info; | ||
586 | struct octeon_cf_data *ocd = ap->dev->platform_data; | ||
587 | union cvmx_mio_boot_dma_cfgx dma_cfg; | ||
588 | union cvmx_mio_boot_dma_intx dma_int; | ||
589 | struct octeon_cf_port *cf_port; | ||
590 | u8 status; | ||
591 | |||
592 | VPRINTK("ata%u: protocol %d task_state %d\n", | ||
593 | ap->print_id, qc->tf.protocol, ap->hsm_task_state); | ||
594 | |||
595 | |||
596 | if (ap->hsm_task_state != HSM_ST_LAST) | ||
597 | return 0; | ||
598 | |||
599 | cf_port = (struct octeon_cf_port *)ap->private_data; | ||
600 | |||
601 | dma_cfg.u64 = cvmx_read_csr(CVMX_MIO_BOOT_DMA_CFGX(ocd->dma_engine)); | ||
602 | if (dma_cfg.s.size != 0xfffff) { | ||
603 | /* Error, the transfer was not complete. */ | ||
604 | qc->err_mask |= AC_ERR_HOST_BUS; | ||
605 | ap->hsm_task_state = HSM_ST_ERR; | ||
606 | } | ||
607 | |||
608 | /* Stop and clear the dma engine. */ | ||
609 | dma_cfg.u64 = 0; | ||
610 | dma_cfg.s.size = -1; | ||
611 | cvmx_write_csr(CVMX_MIO_BOOT_DMA_CFGX(ocd->dma_engine), dma_cfg.u64); | ||
612 | |||
613 | /* Disable the interrupt. */ | ||
614 | dma_int.u64 = 0; | ||
615 | cvmx_write_csr(CVMX_MIO_BOOT_DMA_INT_ENX(ocd->dma_engine), dma_int.u64); | ||
616 | |||
617 | /* Clear the DMA complete status */ | ||
618 | dma_int.s.done = 1; | ||
619 | cvmx_write_csr(CVMX_MIO_BOOT_DMA_INTX(ocd->dma_engine), dma_int.u64); | ||
620 | |||
621 | status = ap->ops->sff_check_status(ap); | ||
622 | |||
623 | ata_sff_hsm_move(ap, qc, status, 0); | ||
624 | |||
625 | if (unlikely(qc->err_mask) && (qc->tf.protocol == ATA_PROT_DMA)) | ||
626 | ata_ehi_push_desc(ehi, "DMA stat 0x%x", status); | ||
627 | |||
628 | return 1; | ||
629 | } | ||
630 | |||
631 | /* | ||
632 | * Check if any queued commands have more DMAs, if so start the next | ||
633 | * transfer, else do end of transfer handling. | ||
634 | */ | ||
635 | static irqreturn_t octeon_cf_interrupt(int irq, void *dev_instance) | ||
636 | { | ||
637 | struct ata_host *host = dev_instance; | ||
638 | struct octeon_cf_port *cf_port; | ||
639 | int i; | ||
640 | unsigned int handled = 0; | ||
641 | unsigned long flags; | ||
642 | |||
643 | spin_lock_irqsave(&host->lock, flags); | ||
644 | |||
645 | DPRINTK("ENTER\n"); | ||
646 | for (i = 0; i < host->n_ports; i++) { | ||
647 | u8 status; | ||
648 | struct ata_port *ap; | ||
649 | struct ata_queued_cmd *qc; | ||
650 | union cvmx_mio_boot_dma_intx dma_int; | ||
651 | union cvmx_mio_boot_dma_cfgx dma_cfg; | ||
652 | struct octeon_cf_data *ocd; | ||
653 | |||
654 | ap = host->ports[i]; | ||
655 | ocd = ap->dev->platform_data; | ||
656 | if (!ap || (ap->flags & ATA_FLAG_DISABLED)) | ||
657 | continue; | ||
658 | |||
659 | ocd = ap->dev->platform_data; | ||
660 | cf_port = (struct octeon_cf_port *)ap->private_data; | ||
661 | dma_int.u64 = | ||
662 | cvmx_read_csr(CVMX_MIO_BOOT_DMA_INTX(ocd->dma_engine)); | ||
663 | dma_cfg.u64 = | ||
664 | cvmx_read_csr(CVMX_MIO_BOOT_DMA_CFGX(ocd->dma_engine)); | ||
665 | |||
666 | qc = ata_qc_from_tag(ap, ap->link.active_tag); | ||
667 | |||
668 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING)) && | ||
669 | (qc->flags & ATA_QCFLAG_ACTIVE)) { | ||
670 | if (dma_int.s.done && !dma_cfg.s.en) { | ||
671 | if (!sg_is_last(qc->cursg)) { | ||
672 | qc->cursg = sg_next(qc->cursg); | ||
673 | handled = 1; | ||
674 | octeon_cf_dma_start(qc); | ||
675 | continue; | ||
676 | } else { | ||
677 | cf_port->dma_finished = 1; | ||
678 | } | ||
679 | } | ||
680 | if (!cf_port->dma_finished) | ||
681 | continue; | ||
682 | status = ioread8(ap->ioaddr.altstatus_addr); | ||
683 | if (status & (ATA_BUSY | ATA_DRQ)) { | ||
684 | /* | ||
685 | * We are busy, try to handle it | ||
686 | * later. This is the DMA finished | ||
687 | * interrupt, and it could take a | ||
688 | * little while for the card to be | ||
689 | * ready for more commands. | ||
690 | */ | ||
691 | /* Clear DMA irq. */ | ||
692 | dma_int.u64 = 0; | ||
693 | dma_int.s.done = 1; | ||
694 | cvmx_write_csr(CVMX_MIO_BOOT_DMA_INTX(ocd->dma_engine), | ||
695 | dma_int.u64); | ||
696 | |||
697 | queue_delayed_work(cf_port->wq, | ||
698 | &cf_port->delayed_finish, 1); | ||
699 | handled = 1; | ||
700 | } else { | ||
701 | handled |= octeon_cf_dma_finished(ap, qc); | ||
702 | } | ||
703 | } | ||
704 | } | ||
705 | spin_unlock_irqrestore(&host->lock, flags); | ||
706 | DPRINTK("EXIT\n"); | ||
707 | return IRQ_RETVAL(handled); | ||
708 | } | ||
709 | |||
710 | static void octeon_cf_delayed_finish(struct work_struct *work) | ||
711 | { | ||
712 | struct octeon_cf_port *cf_port = container_of(work, | ||
713 | struct octeon_cf_port, | ||
714 | delayed_finish.work); | ||
715 | struct ata_port *ap = cf_port->ap; | ||
716 | struct ata_host *host = ap->host; | ||
717 | struct ata_queued_cmd *qc; | ||
718 | unsigned long flags; | ||
719 | u8 status; | ||
720 | |||
721 | spin_lock_irqsave(&host->lock, flags); | ||
722 | |||
723 | /* | ||
724 | * If the port is not waiting for completion, it must have | ||
725 | * handled it previously. The hsm_task_state is | ||
726 | * protected by host->lock. | ||
727 | */ | ||
728 | if (ap->hsm_task_state != HSM_ST_LAST || !cf_port->dma_finished) | ||
729 | goto out; | ||
730 | |||
731 | status = ioread8(ap->ioaddr.altstatus_addr); | ||
732 | if (status & (ATA_BUSY | ATA_DRQ)) { | ||
733 | /* Still busy, try again. */ | ||
734 | queue_delayed_work(cf_port->wq, | ||
735 | &cf_port->delayed_finish, 1); | ||
736 | goto out; | ||
737 | } | ||
738 | qc = ata_qc_from_tag(ap, ap->link.active_tag); | ||
739 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING)) && | ||
740 | (qc->flags & ATA_QCFLAG_ACTIVE)) | ||
741 | octeon_cf_dma_finished(ap, qc); | ||
742 | out: | ||
743 | spin_unlock_irqrestore(&host->lock, flags); | ||
744 | } | ||
745 | |||
746 | static void octeon_cf_dev_config(struct ata_device *dev) | ||
747 | { | ||
748 | /* | ||
749 | * A maximum of 2^20 - 1 16 bit transfers are possible with | ||
750 | * the bootbus DMA. So we need to throttle max_sectors to | ||
751 | * (2^12 - 1 == 4095) to assure that this can never happen. | ||
752 | */ | ||
753 | dev->max_sectors = min(dev->max_sectors, 4095U); | ||
754 | } | ||
755 | |||
756 | /* | ||
757 | * Trap if driver tries to do standard bmdma commands. They are not | ||
758 | * supported. | ||
759 | */ | ||
760 | static void unreachable_qc(struct ata_queued_cmd *qc) | ||
761 | { | ||
762 | BUG(); | ||
763 | } | ||
764 | |||
765 | static u8 unreachable_port(struct ata_port *ap) | ||
766 | { | ||
767 | BUG(); | ||
768 | } | ||
769 | |||
770 | /* | ||
771 | * We don't do ATAPI DMA so return 0. | ||
772 | */ | ||
773 | static int octeon_cf_check_atapi_dma(struct ata_queued_cmd *qc) | ||
774 | { | ||
775 | return 0; | ||
776 | } | ||
777 | |||
778 | static unsigned int octeon_cf_qc_issue(struct ata_queued_cmd *qc) | ||
779 | { | ||
780 | struct ata_port *ap = qc->ap; | ||
781 | |||
782 | switch (qc->tf.protocol) { | ||
783 | case ATA_PROT_DMA: | ||
784 | WARN_ON(qc->tf.flags & ATA_TFLAG_POLLING); | ||
785 | |||
786 | ap->ops->sff_tf_load(ap, &qc->tf); /* load tf registers */ | ||
787 | octeon_cf_dma_setup(qc); /* set up dma */ | ||
788 | octeon_cf_dma_start(qc); /* initiate dma */ | ||
789 | ap->hsm_task_state = HSM_ST_LAST; | ||
790 | break; | ||
791 | |||
792 | case ATAPI_PROT_DMA: | ||
793 | dev_err(ap->dev, "Error, ATAPI not supported\n"); | ||
794 | BUG(); | ||
795 | |||
796 | default: | ||
797 | return ata_sff_qc_issue(qc); | ||
798 | } | ||
799 | |||
800 | return 0; | ||
801 | } | ||
802 | |||
803 | static struct ata_port_operations octeon_cf_ops = { | ||
804 | .inherits = &ata_sff_port_ops, | ||
805 | .check_atapi_dma = octeon_cf_check_atapi_dma, | ||
806 | .qc_prep = ata_noop_qc_prep, | ||
807 | .qc_issue = octeon_cf_qc_issue, | ||
808 | .sff_dev_select = octeon_cf_dev_select, | ||
809 | .sff_irq_on = octeon_cf_irq_on, | ||
810 | .sff_irq_clear = octeon_cf_irq_clear, | ||
811 | .bmdma_setup = unreachable_qc, | ||
812 | .bmdma_start = unreachable_qc, | ||
813 | .bmdma_stop = unreachable_qc, | ||
814 | .bmdma_status = unreachable_port, | ||
815 | .cable_detect = ata_cable_40wire, | ||
816 | .set_piomode = octeon_cf_set_piomode, | ||
817 | .set_dmamode = octeon_cf_set_dmamode, | ||
818 | .dev_config = octeon_cf_dev_config, | ||
819 | }; | ||
820 | |||
821 | static int __devinit octeon_cf_probe(struct platform_device *pdev) | ||
822 | { | ||
823 | struct resource *res_cs0, *res_cs1; | ||
824 | |||
825 | void __iomem *cs0; | ||
826 | void __iomem *cs1 = NULL; | ||
827 | struct ata_host *host; | ||
828 | struct ata_port *ap; | ||
829 | struct octeon_cf_data *ocd; | ||
830 | int irq = 0; | ||
831 | irq_handler_t irq_handler = NULL; | ||
832 | void __iomem *base; | ||
833 | struct octeon_cf_port *cf_port; | ||
834 | |||
835 | res_cs0 = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
836 | |||
837 | if (!res_cs0) | ||
838 | return -EINVAL; | ||
839 | |||
840 | ocd = pdev->dev.platform_data; | ||
841 | |||
842 | cs0 = devm_ioremap_nocache(&pdev->dev, res_cs0->start, | ||
843 | res_cs0->end - res_cs0->start + 1); | ||
844 | |||
845 | if (!cs0) | ||
846 | return -ENOMEM; | ||
847 | |||
848 | /* Determine from availability of DMA if True IDE mode or not */ | ||
849 | if (ocd->dma_engine >= 0) { | ||
850 | res_cs1 = platform_get_resource(pdev, IORESOURCE_MEM, 1); | ||
851 | if (!res_cs1) | ||
852 | return -EINVAL; | ||
853 | |||
854 | cs1 = devm_ioremap_nocache(&pdev->dev, res_cs1->start, | ||
855 | res_cs0->end - res_cs1->start + 1); | ||
856 | |||
857 | if (!cs1) | ||
858 | return -ENOMEM; | ||
859 | } | ||
860 | |||
861 | cf_port = kzalloc(sizeof(*cf_port), GFP_KERNEL); | ||
862 | if (!cf_port) | ||
863 | return -ENOMEM; | ||
864 | |||
865 | /* allocate host */ | ||
866 | host = ata_host_alloc(&pdev->dev, 1); | ||
867 | if (!host) | ||
868 | goto free_cf_port; | ||
869 | |||
870 | ap = host->ports[0]; | ||
871 | ap->private_data = cf_port; | ||
872 | cf_port->ap = ap; | ||
873 | ap->ops = &octeon_cf_ops; | ||
874 | ap->pio_mask = 0x7f; /* Support PIO 0-6 */ | ||
875 | ap->flags |= ATA_FLAG_MMIO | ATA_FLAG_NO_LEGACY | ||
876 | | ATA_FLAG_NO_ATAPI | ATA_FLAG_PIO_POLLING; | ||
877 | |||
878 | base = cs0 + ocd->base_region_bias; | ||
879 | if (!ocd->is16bit) { | ||
880 | ap->ioaddr.cmd_addr = base; | ||
881 | ata_sff_std_ports(&ap->ioaddr); | ||
882 | |||
883 | ap->ioaddr.altstatus_addr = base + 0xe; | ||
884 | ap->ioaddr.ctl_addr = base + 0xe; | ||
885 | octeon_cf_ops.sff_data_xfer = octeon_cf_data_xfer8; | ||
886 | } else if (cs1) { | ||
887 | /* Presence of cs1 indicates True IDE mode. */ | ||
888 | ap->ioaddr.cmd_addr = base + (ATA_REG_CMD << 1) + 1; | ||
889 | ap->ioaddr.data_addr = base + (ATA_REG_DATA << 1); | ||
890 | ap->ioaddr.error_addr = base + (ATA_REG_ERR << 1) + 1; | ||
891 | ap->ioaddr.feature_addr = base + (ATA_REG_FEATURE << 1) + 1; | ||
892 | ap->ioaddr.nsect_addr = base + (ATA_REG_NSECT << 1) + 1; | ||
893 | ap->ioaddr.lbal_addr = base + (ATA_REG_LBAL << 1) + 1; | ||
894 | ap->ioaddr.lbam_addr = base + (ATA_REG_LBAM << 1) + 1; | ||
895 | ap->ioaddr.lbah_addr = base + (ATA_REG_LBAH << 1) + 1; | ||
896 | ap->ioaddr.device_addr = base + (ATA_REG_DEVICE << 1) + 1; | ||
897 | ap->ioaddr.status_addr = base + (ATA_REG_STATUS << 1) + 1; | ||
898 | ap->ioaddr.command_addr = base + (ATA_REG_CMD << 1) + 1; | ||
899 | ap->ioaddr.altstatus_addr = cs1 + (6 << 1) + 1; | ||
900 | ap->ioaddr.ctl_addr = cs1 + (6 << 1) + 1; | ||
901 | octeon_cf_ops.sff_data_xfer = octeon_cf_data_xfer16; | ||
902 | |||
903 | ap->mwdma_mask = 0x1f; /* Support MWDMA 0-4 */ | ||
904 | irq = platform_get_irq(pdev, 0); | ||
905 | irq_handler = octeon_cf_interrupt; | ||
906 | |||
907 | /* True IDE mode needs delayed work to poll for not-busy. */ | ||
908 | cf_port->wq = create_singlethread_workqueue(DRV_NAME); | ||
909 | if (!cf_port->wq) | ||
910 | goto free_cf_port; | ||
911 | INIT_DELAYED_WORK(&cf_port->delayed_finish, | ||
912 | octeon_cf_delayed_finish); | ||
913 | |||
914 | } else { | ||
915 | /* 16 bit but not True IDE */ | ||
916 | octeon_cf_ops.sff_data_xfer = octeon_cf_data_xfer16; | ||
917 | octeon_cf_ops.softreset = octeon_cf_softreset16; | ||
918 | octeon_cf_ops.sff_check_status = octeon_cf_check_status16; | ||
919 | octeon_cf_ops.sff_tf_read = octeon_cf_tf_read16; | ||
920 | octeon_cf_ops.sff_tf_load = octeon_cf_tf_load16; | ||
921 | octeon_cf_ops.sff_exec_command = octeon_cf_exec_command16; | ||
922 | |||
923 | ap->ioaddr.data_addr = base + ATA_REG_DATA; | ||
924 | ap->ioaddr.nsect_addr = base + ATA_REG_NSECT; | ||
925 | ap->ioaddr.lbal_addr = base + ATA_REG_LBAL; | ||
926 | ap->ioaddr.ctl_addr = base + 0xe; | ||
927 | ap->ioaddr.altstatus_addr = base + 0xe; | ||
928 | } | ||
929 | |||
930 | ata_port_desc(ap, "cmd %p ctl %p", base, ap->ioaddr.ctl_addr); | ||
931 | |||
932 | |||
933 | dev_info(&pdev->dev, "version " DRV_VERSION" %d bit%s.\n", | ||
934 | (ocd->is16bit) ? 16 : 8, | ||
935 | (cs1) ? ", True IDE" : ""); | ||
936 | |||
937 | |||
938 | return ata_host_activate(host, irq, irq_handler, 0, &octeon_cf_sht); | ||
939 | |||
940 | free_cf_port: | ||
941 | kfree(cf_port); | ||
942 | return -ENOMEM; | ||
943 | } | ||
944 | |||
945 | static struct platform_driver octeon_cf_driver = { | ||
946 | .probe = octeon_cf_probe, | ||
947 | .driver = { | ||
948 | .name = DRV_NAME, | ||
949 | .owner = THIS_MODULE, | ||
950 | }, | ||
951 | }; | ||
952 | |||
953 | static int __init octeon_cf_init(void) | ||
954 | { | ||
955 | return platform_driver_register(&octeon_cf_driver); | ||
956 | } | ||
957 | |||
958 | |||
959 | MODULE_AUTHOR("David Daney <ddaney@caviumnetworks.com>"); | ||
960 | MODULE_DESCRIPTION("low-level driver for Cavium OCTEON Compact Flash PATA"); | ||
961 | MODULE_LICENSE("GPL"); | ||
962 | MODULE_VERSION(DRV_VERSION); | ||
963 | MODULE_ALIAS("platform:" DRV_NAME); | ||
964 | |||
965 | module_init(octeon_cf_init); | ||
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c index 1a56db92ff7a..55bc88c1707b 100644 --- a/drivers/ata/sata_fsl.c +++ b/drivers/ata/sata_fsl.c | |||
@@ -1288,7 +1288,7 @@ static const struct ata_port_info sata_fsl_port_info[] = { | |||
1288 | static int sata_fsl_probe(struct of_device *ofdev, | 1288 | static int sata_fsl_probe(struct of_device *ofdev, |
1289 | const struct of_device_id *match) | 1289 | const struct of_device_id *match) |
1290 | { | 1290 | { |
1291 | int retval = 0; | 1291 | int retval = -ENXIO; |
1292 | void __iomem *hcr_base = NULL; | 1292 | void __iomem *hcr_base = NULL; |
1293 | void __iomem *ssr_base = NULL; | 1293 | void __iomem *ssr_base = NULL; |
1294 | void __iomem *csr_base = NULL; | 1294 | void __iomem *csr_base = NULL; |
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c index c18935f0bda2..5c62da9cd491 100644 --- a/drivers/ata/sata_via.c +++ b/drivers/ata/sata_via.c | |||
@@ -92,6 +92,8 @@ static const struct pci_device_id svia_pci_tbl[] = { | |||
92 | { PCI_VDEVICE(VIA, 0x5372), vt6420 }, | 92 | { PCI_VDEVICE(VIA, 0x5372), vt6420 }, |
93 | { PCI_VDEVICE(VIA, 0x7372), vt6420 }, | 93 | { PCI_VDEVICE(VIA, 0x7372), vt6420 }, |
94 | { PCI_VDEVICE(VIA, 0x5287), vt8251 }, /* 2 sata chnls (Master/Slave) */ | 94 | { PCI_VDEVICE(VIA, 0x5287), vt8251 }, /* 2 sata chnls (Master/Slave) */ |
95 | { PCI_VDEVICE(VIA, 0x9000), vt8251 }, | ||
96 | { PCI_VDEVICE(VIA, 0x9040), vt8251 }, | ||
95 | 97 | ||
96 | { } /* terminate list */ | 98 | { } /* terminate list */ |
97 | }; | 99 | }; |
diff --git a/drivers/base/core.c b/drivers/base/core.c index 8079afca4972..55e530942ab0 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -777,10 +777,16 @@ static void device_remove_class_symlinks(struct device *dev) | |||
777 | int dev_set_name(struct device *dev, const char *fmt, ...) | 777 | int dev_set_name(struct device *dev, const char *fmt, ...) |
778 | { | 778 | { |
779 | va_list vargs; | 779 | va_list vargs; |
780 | char *s; | ||
780 | 781 | ||
781 | va_start(vargs, fmt); | 782 | va_start(vargs, fmt); |
782 | vsnprintf(dev->bus_id, sizeof(dev->bus_id), fmt, vargs); | 783 | vsnprintf(dev->bus_id, sizeof(dev->bus_id), fmt, vargs); |
783 | va_end(vargs); | 784 | va_end(vargs); |
785 | |||
786 | /* ewww... some of these buggers have / in the name... */ | ||
787 | while ((s = strchr(dev->bus_id, '/'))) | ||
788 | *s = '!'; | ||
789 | |||
784 | return 0; | 790 | return 0; |
785 | } | 791 | } |
786 | EXPORT_SYMBOL_GPL(dev_set_name); | 792 | EXPORT_SYMBOL_GPL(dev_set_name); |
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 7bcc1d8bc967..34f80fa6fed1 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c | |||
@@ -406,6 +406,7 @@ static int nbd_do_it(struct nbd_device *lo) | |||
406 | ret = sysfs_create_file(&disk_to_dev(lo->disk)->kobj, &pid_attr.attr); | 406 | ret = sysfs_create_file(&disk_to_dev(lo->disk)->kobj, &pid_attr.attr); |
407 | if (ret) { | 407 | if (ret) { |
408 | printk(KERN_ERR "nbd: sysfs_create_file failed!"); | 408 | printk(KERN_ERR "nbd: sysfs_create_file failed!"); |
409 | lo->pid = 0; | ||
409 | return ret; | 410 | return ret; |
410 | } | 411 | } |
411 | 412 | ||
@@ -413,6 +414,7 @@ static int nbd_do_it(struct nbd_device *lo) | |||
413 | nbd_end_request(req); | 414 | nbd_end_request(req); |
414 | 415 | ||
415 | sysfs_remove_file(&disk_to_dev(lo->disk)->kobj, &pid_attr.attr); | 416 | sysfs_remove_file(&disk_to_dev(lo->disk)->kobj, &pid_attr.attr); |
417 | lo->pid = 0; | ||
416 | return 0; | 418 | return 0; |
417 | } | 419 | } |
418 | 420 | ||
@@ -648,6 +650,8 @@ static int nbd_ioctl(struct block_device *bdev, fmode_t mode, | |||
648 | set_capacity(lo->disk, lo->bytesize >> 9); | 650 | set_capacity(lo->disk, lo->bytesize >> 9); |
649 | return 0; | 651 | return 0; |
650 | case NBD_DO_IT: | 652 | case NBD_DO_IT: |
653 | if (lo->pid) | ||
654 | return -EBUSY; | ||
651 | if (!lo->file) | 655 | if (!lo->file) |
652 | return -EINVAL; | 656 | return -EINVAL; |
653 | thread = kthread_create(nbd_thread, lo, lo->disk->disk_name); | 657 | thread = kthread_create(nbd_thread, lo, lo->disk->disk_name); |
diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c index 936466f62afd..bccc42bb9212 100644 --- a/drivers/block/ps3disk.c +++ b/drivers/block/ps3disk.c | |||
@@ -141,7 +141,7 @@ static int ps3disk_submit_request_sg(struct ps3_storage_device *dev, | |||
141 | 141 | ||
142 | start_sector = req->sector * priv->blocking_factor; | 142 | start_sector = req->sector * priv->blocking_factor; |
143 | sectors = req->nr_sectors * priv->blocking_factor; | 143 | sectors = req->nr_sectors * priv->blocking_factor; |
144 | dev_dbg(&dev->sbd.core, "%s:%u: %s %lu sectors starting at %lu\n", | 144 | dev_dbg(&dev->sbd.core, "%s:%u: %s %llu sectors starting at %llu\n", |
145 | __func__, __LINE__, op, sectors, start_sector); | 145 | __func__, __LINE__, op, sectors, start_sector); |
146 | 146 | ||
147 | if (write) { | 147 | if (write) { |
@@ -178,7 +178,7 @@ static int ps3disk_submit_flush_request(struct ps3_storage_device *dev, | |||
178 | LV1_STORAGE_ATA_HDDOUT, 0, 0, 0, | 178 | LV1_STORAGE_ATA_HDDOUT, 0, 0, 0, |
179 | 0, &dev->tag); | 179 | 0, &dev->tag); |
180 | if (res) { | 180 | if (res) { |
181 | dev_err(&dev->sbd.core, "%s:%u: sync cache failed 0x%lx\n", | 181 | dev_err(&dev->sbd.core, "%s:%u: sync cache failed 0x%llx\n", |
182 | __func__, __LINE__, res); | 182 | __func__, __LINE__, res); |
183 | end_request(req, 0); | 183 | end_request(req, 0); |
184 | return 0; | 184 | return 0; |
@@ -238,11 +238,11 @@ static irqreturn_t ps3disk_interrupt(int irq, void *data) | |||
238 | 238 | ||
239 | if (tag != dev->tag) | 239 | if (tag != dev->tag) |
240 | dev_err(&dev->sbd.core, | 240 | dev_err(&dev->sbd.core, |
241 | "%s:%u: tag mismatch, got %lx, expected %lx\n", | 241 | "%s:%u: tag mismatch, got %llx, expected %llx\n", |
242 | __func__, __LINE__, tag, dev->tag); | 242 | __func__, __LINE__, tag, dev->tag); |
243 | 243 | ||
244 | if (res) { | 244 | if (res) { |
245 | dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%lx\n", | 245 | dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%llx\n", |
246 | __func__, __LINE__, res, status); | 246 | __func__, __LINE__, res, status); |
247 | return IRQ_HANDLED; | 247 | return IRQ_HANDLED; |
248 | } | 248 | } |
@@ -269,7 +269,7 @@ static irqreturn_t ps3disk_interrupt(int irq, void *data) | |||
269 | op = read ? "read" : "write"; | 269 | op = read ? "read" : "write"; |
270 | } | 270 | } |
271 | if (status) { | 271 | if (status) { |
272 | dev_dbg(&dev->sbd.core, "%s:%u: %s failed 0x%lx\n", __func__, | 272 | dev_dbg(&dev->sbd.core, "%s:%u: %s failed 0x%llx\n", __func__, |
273 | __LINE__, op, status); | 273 | __LINE__, op, status); |
274 | error = -EIO; | 274 | error = -EIO; |
275 | } else { | 275 | } else { |
@@ -297,7 +297,7 @@ static int ps3disk_sync_cache(struct ps3_storage_device *dev) | |||
297 | 297 | ||
298 | res = ps3stor_send_command(dev, LV1_STORAGE_ATA_HDDOUT, 0, 0, 0, 0); | 298 | res = ps3stor_send_command(dev, LV1_STORAGE_ATA_HDDOUT, 0, 0, 0, 0); |
299 | if (res) { | 299 | if (res) { |
300 | dev_err(&dev->sbd.core, "%s:%u: sync cache failed 0x%lx\n", | 300 | dev_err(&dev->sbd.core, "%s:%u: sync cache failed 0x%llx\n", |
301 | __func__, __LINE__, res); | 301 | __func__, __LINE__, res); |
302 | return -EIO; | 302 | return -EIO; |
303 | } | 303 | } |
@@ -388,7 +388,7 @@ static int ps3disk_identify(struct ps3_storage_device *dev) | |||
388 | sizeof(ata_cmnd), ata_cmnd.buffer, | 388 | sizeof(ata_cmnd), ata_cmnd.buffer, |
389 | ata_cmnd.arglen); | 389 | ata_cmnd.arglen); |
390 | if (res) { | 390 | if (res) { |
391 | dev_err(&dev->sbd.core, "%s:%u: identify disk failed 0x%lx\n", | 391 | dev_err(&dev->sbd.core, "%s:%u: identify disk failed 0x%llx\n", |
392 | __func__, __LINE__, res); | 392 | __func__, __LINE__, res); |
393 | return -EIO; | 393 | return -EIO; |
394 | } | 394 | } |
@@ -426,7 +426,7 @@ static int __devinit ps3disk_probe(struct ps3_system_bus_device *_dev) | |||
426 | 426 | ||
427 | if (dev->blk_size < 512) { | 427 | if (dev->blk_size < 512) { |
428 | dev_err(&dev->sbd.core, | 428 | dev_err(&dev->sbd.core, |
429 | "%s:%u: cannot handle block size %lu\n", __func__, | 429 | "%s:%u: cannot handle block size %llu\n", __func__, |
430 | __LINE__, dev->blk_size); | 430 | __LINE__, dev->blk_size); |
431 | return -EINVAL; | 431 | return -EINVAL; |
432 | } | 432 | } |
@@ -512,7 +512,7 @@ static int __devinit ps3disk_probe(struct ps3_system_bus_device *_dev) | |||
512 | dev->regions[dev->region_idx].size*priv->blocking_factor); | 512 | dev->regions[dev->region_idx].size*priv->blocking_factor); |
513 | 513 | ||
514 | dev_info(&dev->sbd.core, | 514 | dev_info(&dev->sbd.core, |
515 | "%s is a %s (%lu MiB total, %lu MiB for OtherOS)\n", | 515 | "%s is a %s (%llu MiB total, %lu MiB for OtherOS)\n", |
516 | gendisk->disk_name, priv->model, priv->raw_capacity >> 11, | 516 | gendisk->disk_name, priv->model, priv->raw_capacity >> 11, |
517 | get_capacity(gendisk) >> 11); | 517 | get_capacity(gendisk) >> 11); |
518 | 518 | ||
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c index 09676b4e5d89..94e7e3c8c05a 100644 --- a/drivers/char/hvc_console.c +++ b/drivers/char/hvc_console.c | |||
@@ -318,8 +318,6 @@ static int hvc_open(struct tty_struct *tty, struct file * filp) | |||
318 | } /* else count == 0 */ | 318 | } /* else count == 0 */ |
319 | 319 | ||
320 | tty->driver_data = hp; | 320 | tty->driver_data = hp; |
321 | if (!hp->irq_requested) | ||
322 | tty->low_latency = 1; /* Makes flushes to ldisc synchronous. */ | ||
323 | 321 | ||
324 | hp->tty = tty; | 322 | hp->tty = tty; |
325 | 323 | ||
diff --git a/drivers/char/hw_random/omap-rng.c b/drivers/char/hw_random/omap-rng.c index d4e7dca06e4f..ba68a4671cb5 100644 --- a/drivers/char/hw_random/omap-rng.c +++ b/drivers/char/hw_random/omap-rng.c | |||
@@ -102,7 +102,7 @@ static int __init omap_rng_probe(struct platform_device *pdev) | |||
102 | return -EBUSY; | 102 | return -EBUSY; |
103 | 103 | ||
104 | if (cpu_is_omap24xx()) { | 104 | if (cpu_is_omap24xx()) { |
105 | rng_ick = clk_get(NULL, "rng_ick"); | 105 | rng_ick = clk_get(&pdev->dev, "rng_ick"); |
106 | if (IS_ERR(rng_ick)) { | 106 | if (IS_ERR(rng_ick)) { |
107 | dev_err(&pdev->dev, "Could not get rng_ick\n"); | 107 | dev_err(&pdev->dev, "Could not get rng_ick\n"); |
108 | ret = PTR_ERR(rng_ick); | 108 | ret = PTR_ERR(rng_ick); |
diff --git a/drivers/char/ps3flash.c b/drivers/char/ps3flash.c index 79b6f461be75..afbe45676d71 100644 --- a/drivers/char/ps3flash.c +++ b/drivers/char/ps3flash.c | |||
@@ -44,7 +44,7 @@ static ssize_t ps3flash_read_write_sectors(struct ps3_storage_device *dev, | |||
44 | u64 res = ps3stor_read_write_sectors(dev, lpar, start_sector, sectors, | 44 | u64 res = ps3stor_read_write_sectors(dev, lpar, start_sector, sectors, |
45 | write); | 45 | write); |
46 | if (res) { | 46 | if (res) { |
47 | dev_err(&dev->sbd.core, "%s:%u: %s failed 0x%lx\n", __func__, | 47 | dev_err(&dev->sbd.core, "%s:%u: %s failed 0x%llx\n", __func__, |
48 | __LINE__, write ? "write" : "read", res); | 48 | __LINE__, write ? "write" : "read", res); |
49 | return -EIO; | 49 | return -EIO; |
50 | } | 50 | } |
@@ -59,7 +59,7 @@ static ssize_t ps3flash_read_sectors(struct ps3_storage_device *dev, | |||
59 | 59 | ||
60 | max_sectors = dev->bounce_size / dev->blk_size; | 60 | max_sectors = dev->bounce_size / dev->blk_size; |
61 | if (sectors > max_sectors) { | 61 | if (sectors > max_sectors) { |
62 | dev_dbg(&dev->sbd.core, "%s:%u Limiting sectors to %lu\n", | 62 | dev_dbg(&dev->sbd.core, "%s:%u Limiting sectors to %llu\n", |
63 | __func__, __LINE__, max_sectors); | 63 | __func__, __LINE__, max_sectors); |
64 | sectors = max_sectors; | 64 | sectors = max_sectors; |
65 | } | 65 | } |
@@ -144,7 +144,7 @@ static ssize_t ps3flash_read(struct file *file, char __user *buf, size_t count, | |||
144 | goto fail; | 144 | goto fail; |
145 | } | 145 | } |
146 | 146 | ||
147 | n = min(remaining, sectors_read*dev->blk_size-offset); | 147 | n = min_t(u64, remaining, sectors_read*dev->blk_size-offset); |
148 | dev_dbg(&dev->sbd.core, | 148 | dev_dbg(&dev->sbd.core, |
149 | "%s:%u: copy %lu bytes from 0x%p to user 0x%p\n", | 149 | "%s:%u: copy %lu bytes from 0x%p to user 0x%p\n", |
150 | __func__, __LINE__, n, dev->bounce_buf+offset, buf); | 150 | __func__, __LINE__, n, dev->bounce_buf+offset, buf); |
@@ -225,7 +225,7 @@ static ssize_t ps3flash_write(struct file *file, const char __user *buf, | |||
225 | if (end_read_sector >= start_read_sector) { | 225 | if (end_read_sector >= start_read_sector) { |
226 | /* Merge head and tail */ | 226 | /* Merge head and tail */ |
227 | dev_dbg(&dev->sbd.core, | 227 | dev_dbg(&dev->sbd.core, |
228 | "Merged head and tail: %lu sectors at %lu\n", | 228 | "Merged head and tail: %llu sectors at %llu\n", |
229 | chunk_sectors, start_write_sector); | 229 | chunk_sectors, start_write_sector); |
230 | res = ps3flash_read_sectors(dev, start_write_sector, | 230 | res = ps3flash_read_sectors(dev, start_write_sector, |
231 | chunk_sectors, 0); | 231 | chunk_sectors, 0); |
@@ -235,7 +235,7 @@ static ssize_t ps3flash_write(struct file *file, const char __user *buf, | |||
235 | if (head) { | 235 | if (head) { |
236 | /* Read head */ | 236 | /* Read head */ |
237 | dev_dbg(&dev->sbd.core, | 237 | dev_dbg(&dev->sbd.core, |
238 | "head: %lu sectors at %lu\n", head, | 238 | "head: %llu sectors at %llu\n", head, |
239 | start_write_sector); | 239 | start_write_sector); |
240 | res = ps3flash_read_sectors(dev, | 240 | res = ps3flash_read_sectors(dev, |
241 | start_write_sector, | 241 | start_write_sector, |
@@ -247,7 +247,7 @@ static ssize_t ps3flash_write(struct file *file, const char __user *buf, | |||
247 | start_write_sector+chunk_sectors) { | 247 | start_write_sector+chunk_sectors) { |
248 | /* Read tail */ | 248 | /* Read tail */ |
249 | dev_dbg(&dev->sbd.core, | 249 | dev_dbg(&dev->sbd.core, |
250 | "tail: %lu sectors at %lu\n", tail, | 250 | "tail: %llu sectors at %llu\n", tail, |
251 | start_read_sector); | 251 | start_read_sector); |
252 | sec_off = start_read_sector-start_write_sector; | 252 | sec_off = start_read_sector-start_write_sector; |
253 | res = ps3flash_read_sectors(dev, | 253 | res = ps3flash_read_sectors(dev, |
@@ -258,7 +258,7 @@ static ssize_t ps3flash_write(struct file *file, const char __user *buf, | |||
258 | } | 258 | } |
259 | } | 259 | } |
260 | 260 | ||
261 | n = min(remaining, dev->bounce_size-offset); | 261 | n = min_t(u64, remaining, dev->bounce_size-offset); |
262 | dev_dbg(&dev->sbd.core, | 262 | dev_dbg(&dev->sbd.core, |
263 | "%s:%u: copy %lu bytes from user 0x%p to 0x%p\n", | 263 | "%s:%u: copy %lu bytes from user 0x%p to 0x%p\n", |
264 | __func__, __LINE__, n, buf, dev->bounce_buf+offset); | 264 | __func__, __LINE__, n, buf, dev->bounce_buf+offset); |
@@ -299,11 +299,11 @@ static irqreturn_t ps3flash_interrupt(int irq, void *data) | |||
299 | 299 | ||
300 | if (tag != dev->tag) | 300 | if (tag != dev->tag) |
301 | dev_err(&dev->sbd.core, | 301 | dev_err(&dev->sbd.core, |
302 | "%s:%u: tag mismatch, got %lx, expected %lx\n", | 302 | "%s:%u: tag mismatch, got %llx, expected %llx\n", |
303 | __func__, __LINE__, tag, dev->tag); | 303 | __func__, __LINE__, tag, dev->tag); |
304 | 304 | ||
305 | if (res) { | 305 | if (res) { |
306 | dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%lx\n", | 306 | dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%llx\n", |
307 | __func__, __LINE__, res, status); | 307 | __func__, __LINE__, res, status); |
308 | } else { | 308 | } else { |
309 | dev->lv1_status = status; | 309 | dev->lv1_status = status; |
diff --git a/drivers/char/synclink_gt.c b/drivers/char/synclink_gt.c index 53544e21f191..f329f459817c 100644 --- a/drivers/char/synclink_gt.c +++ b/drivers/char/synclink_gt.c | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: synclink_gt.c,v 4.50 2007/07/25 19:29:25 paulkf Exp $ | ||
3 | * | ||
4 | * Device driver for Microgate SyncLink GT serial adapters. | 2 | * Device driver for Microgate SyncLink GT serial adapters. |
5 | * | 3 | * |
6 | * written by Paul Fulghum for Microgate Corporation | 4 | * written by Paul Fulghum for Microgate Corporation |
@@ -91,7 +89,6 @@ | |||
91 | * module identification | 89 | * module identification |
92 | */ | 90 | */ |
93 | static char *driver_name = "SyncLink GT"; | 91 | static char *driver_name = "SyncLink GT"; |
94 | static char *driver_version = "$Revision: 4.50 $"; | ||
95 | static char *tty_driver_name = "synclink_gt"; | 92 | static char *tty_driver_name = "synclink_gt"; |
96 | static char *tty_dev_prefix = "ttySLG"; | 93 | static char *tty_dev_prefix = "ttySLG"; |
97 | MODULE_LICENSE("GPL"); | 94 | MODULE_LICENSE("GPL"); |
@@ -1309,7 +1306,7 @@ static int read_proc(char *page, char **start, off_t off, int count, | |||
1309 | off_t begin = 0; | 1306 | off_t begin = 0; |
1310 | struct slgt_info *info; | 1307 | struct slgt_info *info; |
1311 | 1308 | ||
1312 | len += sprintf(page, "synclink_gt driver:%s\n", driver_version); | 1309 | len += sprintf(page, "synclink_gt driver\n"); |
1313 | 1310 | ||
1314 | info = slgt_device_list; | 1311 | info = slgt_device_list; |
1315 | while( info ) { | 1312 | while( info ) { |
@@ -2441,7 +2438,7 @@ static void program_hw(struct slgt_info *info) | |||
2441 | info->ri_chkcount = 0; | 2438 | info->ri_chkcount = 0; |
2442 | info->dsr_chkcount = 0; | 2439 | info->dsr_chkcount = 0; |
2443 | 2440 | ||
2444 | slgt_irq_on(info, IRQ_DCD | IRQ_CTS | IRQ_DSR); | 2441 | slgt_irq_on(info, IRQ_DCD | IRQ_CTS | IRQ_DSR | IRQ_RI); |
2445 | get_signals(info); | 2442 | get_signals(info); |
2446 | 2443 | ||
2447 | if (info->netcount || | 2444 | if (info->netcount || |
@@ -3576,7 +3573,7 @@ static void slgt_cleanup(void) | |||
3576 | struct slgt_info *info; | 3573 | struct slgt_info *info; |
3577 | struct slgt_info *tmp; | 3574 | struct slgt_info *tmp; |
3578 | 3575 | ||
3579 | printk("unload %s %s\n", driver_name, driver_version); | 3576 | printk(KERN_INFO "unload %s\n", driver_name); |
3580 | 3577 | ||
3581 | if (serial_driver) { | 3578 | if (serial_driver) { |
3582 | for (info=slgt_device_list ; info != NULL ; info=info->next_device) | 3579 | for (info=slgt_device_list ; info != NULL ; info=info->next_device) |
@@ -3619,7 +3616,7 @@ static int __init slgt_init(void) | |||
3619 | { | 3616 | { |
3620 | int rc; | 3617 | int rc; |
3621 | 3618 | ||
3622 | printk("%s %s\n", driver_name, driver_version); | 3619 | printk(KERN_INFO "%s\n", driver_name); |
3623 | 3620 | ||
3624 | serial_driver = alloc_tty_driver(MAX_DEVICES); | 3621 | serial_driver = alloc_tty_driver(MAX_DEVICES); |
3625 | if (!serial_driver) { | 3622 | if (!serial_driver) { |
@@ -3650,9 +3647,8 @@ static int __init slgt_init(void) | |||
3650 | goto error; | 3647 | goto error; |
3651 | } | 3648 | } |
3652 | 3649 | ||
3653 | printk("%s %s, tty major#%d\n", | 3650 | printk(KERN_INFO "%s, tty major#%d\n", |
3654 | driver_name, driver_version, | 3651 | driver_name, serial_driver->major); |
3655 | serial_driver->major); | ||
3656 | 3652 | ||
3657 | slgt_device_count = 0; | 3653 | slgt_device_count = 0; |
3658 | if ((rc = pci_register_driver(&pci_driver)) < 0) { | 3654 | if ((rc = pci_register_driver(&pci_driver)) < 0) { |
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c index d41b9f6f7903..33a9351c896d 100644 --- a/drivers/char/sysrq.c +++ b/drivers/char/sysrq.c | |||
@@ -473,6 +473,12 @@ void __handle_sysrq(int key, struct tty_struct *tty, int check_mask) | |||
473 | unsigned long flags; | 473 | unsigned long flags; |
474 | 474 | ||
475 | spin_lock_irqsave(&sysrq_key_table_lock, flags); | 475 | spin_lock_irqsave(&sysrq_key_table_lock, flags); |
476 | /* | ||
477 | * Raise the apparent loglevel to maximum so that the sysrq header | ||
478 | * is shown to provide the user with positive feedback. We do not | ||
479 | * simply emit this at KERN_EMERG as that would change message | ||
480 | * routing in the consumers of /proc/kmsg. | ||
481 | */ | ||
476 | orig_log_level = console_loglevel; | 482 | orig_log_level = console_loglevel; |
477 | console_loglevel = 7; | 483 | console_loglevel = 7; |
478 | printk(KERN_INFO "SysRq : "); | 484 | printk(KERN_INFO "SysRq : "); |
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index d33e5ab06177..bc84e125c6bc 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
@@ -1817,8 +1817,10 @@ got_driver: | |||
1817 | /* check whether we're reopening an existing tty */ | 1817 | /* check whether we're reopening an existing tty */ |
1818 | tty = tty_driver_lookup_tty(driver, inode, index); | 1818 | tty = tty_driver_lookup_tty(driver, inode, index); |
1819 | 1819 | ||
1820 | if (IS_ERR(tty)) | 1820 | if (IS_ERR(tty)) { |
1821 | mutex_unlock(&tty_mutex); | ||
1821 | return PTR_ERR(tty); | 1822 | return PTR_ERR(tty); |
1823 | } | ||
1822 | } | 1824 | } |
1823 | 1825 | ||
1824 | if (tty) { | 1826 | if (tty) { |
diff --git a/drivers/char/tty_ioctl.c b/drivers/char/tty_ioctl.c index a408c8e487ec..6f4c7d0a53bf 100644 --- a/drivers/char/tty_ioctl.c +++ b/drivers/char/tty_ioctl.c | |||
@@ -1057,7 +1057,7 @@ int tty_perform_flush(struct tty_struct *tty, unsigned long arg) | |||
1057 | if (retval) | 1057 | if (retval) |
1058 | return retval; | 1058 | return retval; |
1059 | 1059 | ||
1060 | ld = tty_ldisc_ref(tty); | 1060 | ld = tty_ldisc_ref_wait(tty); |
1061 | switch (arg) { | 1061 | switch (arg) { |
1062 | case TCIFLUSH: | 1062 | case TCIFLUSH: |
1063 | if (ld && ld->ops->flush_buffer) | 1063 | if (ld && ld->ops->flush_buffer) |
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index e34b06420816..48ea59e79672 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig | |||
@@ -62,6 +62,25 @@ config MV_XOR | |||
62 | ---help--- | 62 | ---help--- |
63 | Enable support for the Marvell XOR engine. | 63 | Enable support for the Marvell XOR engine. |
64 | 64 | ||
65 | config MX3_IPU | ||
66 | bool "MX3x Image Processing Unit support" | ||
67 | depends on ARCH_MX3 | ||
68 | select DMA_ENGINE | ||
69 | default y | ||
70 | help | ||
71 | If you plan to use the Image Processing unit in the i.MX3x, say | ||
72 | Y here. If unsure, select Y. | ||
73 | |||
74 | config MX3_IPU_IRQS | ||
75 | int "Number of dynamically mapped interrupts for IPU" | ||
76 | depends on MX3_IPU | ||
77 | range 2 137 | ||
78 | default 4 | ||
79 | help | ||
80 | Out of 137 interrupt sources on i.MX31 IPU only very few are used. | ||
81 | To avoid bloating the irq_desc[] array we allocate a sufficient | ||
82 | number of IRQ slots and map them dynamically to specific sources. | ||
83 | |||
65 | config DMA_ENGINE | 84 | config DMA_ENGINE |
66 | bool | 85 | bool |
67 | 86 | ||
diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile index 14f59527d4f6..2e5dc96700d2 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile | |||
@@ -7,3 +7,4 @@ obj-$(CONFIG_INTEL_IOP_ADMA) += iop-adma.o | |||
7 | obj-$(CONFIG_FSL_DMA) += fsldma.o | 7 | obj-$(CONFIG_FSL_DMA) += fsldma.o |
8 | obj-$(CONFIG_MV_XOR) += mv_xor.o | 8 | obj-$(CONFIG_MV_XOR) += mv_xor.o |
9 | obj-$(CONFIG_DW_DMAC) += dw_dmac.o | 9 | obj-$(CONFIG_DW_DMAC) += dw_dmac.o |
10 | obj-$(CONFIG_MX3_IPU) += ipu/ | ||
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index 403dbe781122..a58993011edb 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c | |||
@@ -329,9 +329,6 @@ struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type) | |||
329 | struct dma_chan *chan; | 329 | struct dma_chan *chan; |
330 | int cpu; | 330 | int cpu; |
331 | 331 | ||
332 | WARN_ONCE(dmaengine_ref_count == 0, | ||
333 | "client called %s without a reference", __func__); | ||
334 | |||
335 | cpu = get_cpu(); | 332 | cpu = get_cpu(); |
336 | chan = per_cpu_ptr(channel_table[tx_type], cpu)->chan; | 333 | chan = per_cpu_ptr(channel_table[tx_type], cpu)->chan; |
337 | put_cpu(); | 334 | put_cpu(); |
@@ -348,9 +345,6 @@ void dma_issue_pending_all(void) | |||
348 | struct dma_device *device; | 345 | struct dma_device *device; |
349 | struct dma_chan *chan; | 346 | struct dma_chan *chan; |
350 | 347 | ||
351 | WARN_ONCE(dmaengine_ref_count == 0, | ||
352 | "client called %s without a reference", __func__); | ||
353 | |||
354 | rcu_read_lock(); | 348 | rcu_read_lock(); |
355 | list_for_each_entry_rcu(device, &dma_device_list, global_node) { | 349 | list_for_each_entry_rcu(device, &dma_device_list, global_node) { |
356 | if (dma_has_cap(DMA_PRIVATE, device->cap_mask)) | 350 | if (dma_has_cap(DMA_PRIVATE, device->cap_mask)) |
@@ -961,6 +955,8 @@ void dma_run_dependencies(struct dma_async_tx_descriptor *tx) | |||
961 | if (!dep) | 955 | if (!dep) |
962 | return; | 956 | return; |
963 | 957 | ||
958 | /* we'll submit tx->next now, so clear the link */ | ||
959 | tx->next = NULL; | ||
964 | chan = dep->chan; | 960 | chan = dep->chan; |
965 | 961 | ||
966 | /* keep submitting up until a channel switch is detected | 962 | /* keep submitting up until a channel switch is detected |
diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c index 3603f1ea5b28..732fa1ec36ab 100644 --- a/drivers/dma/dmatest.c +++ b/drivers/dma/dmatest.c | |||
@@ -217,6 +217,10 @@ static int dmatest_func(void *data) | |||
217 | chan = thread->chan; | 217 | chan = thread->chan; |
218 | 218 | ||
219 | while (!kthread_should_stop()) { | 219 | while (!kthread_should_stop()) { |
220 | struct dma_device *dev = chan->device; | ||
221 | struct dma_async_tx_descriptor *tx; | ||
222 | dma_addr_t dma_src, dma_dest; | ||
223 | |||
220 | total_tests++; | 224 | total_tests++; |
221 | 225 | ||
222 | len = dmatest_random() % test_buf_size + 1; | 226 | len = dmatest_random() % test_buf_size + 1; |
@@ -226,10 +230,30 @@ static int dmatest_func(void *data) | |||
226 | dmatest_init_srcbuf(thread->srcbuf, src_off, len); | 230 | dmatest_init_srcbuf(thread->srcbuf, src_off, len); |
227 | dmatest_init_dstbuf(thread->dstbuf, dst_off, len); | 231 | dmatest_init_dstbuf(thread->dstbuf, dst_off, len); |
228 | 232 | ||
229 | cookie = dma_async_memcpy_buf_to_buf(chan, | 233 | dma_src = dma_map_single(dev->dev, thread->srcbuf + src_off, |
230 | thread->dstbuf + dst_off, | 234 | len, DMA_TO_DEVICE); |
231 | thread->srcbuf + src_off, | 235 | /* map with DMA_BIDIRECTIONAL to force writeback/invalidate */ |
232 | len); | 236 | dma_dest = dma_map_single(dev->dev, thread->dstbuf, |
237 | test_buf_size, DMA_BIDIRECTIONAL); | ||
238 | |||
239 | tx = dev->device_prep_dma_memcpy(chan, dma_dest + dst_off, | ||
240 | dma_src, len, | ||
241 | DMA_CTRL_ACK | DMA_COMPL_SKIP_DEST_UNMAP); | ||
242 | if (!tx) { | ||
243 | dma_unmap_single(dev->dev, dma_src, len, DMA_TO_DEVICE); | ||
244 | dma_unmap_single(dev->dev, dma_dest, | ||
245 | test_buf_size, DMA_BIDIRECTIONAL); | ||
246 | pr_warning("%s: #%u: prep error with src_off=0x%x " | ||
247 | "dst_off=0x%x len=0x%x\n", | ||
248 | thread_name, total_tests - 1, | ||
249 | src_off, dst_off, len); | ||
250 | msleep(100); | ||
251 | failed_tests++; | ||
252 | continue; | ||
253 | } | ||
254 | tx->callback = NULL; | ||
255 | cookie = tx->tx_submit(tx); | ||
256 | |||
233 | if (dma_submit_error(cookie)) { | 257 | if (dma_submit_error(cookie)) { |
234 | pr_warning("%s: #%u: submit error %d with src_off=0x%x " | 258 | pr_warning("%s: #%u: submit error %d with src_off=0x%x " |
235 | "dst_off=0x%x len=0x%x\n", | 259 | "dst_off=0x%x len=0x%x\n", |
@@ -253,6 +277,9 @@ static int dmatest_func(void *data) | |||
253 | failed_tests++; | 277 | failed_tests++; |
254 | continue; | 278 | continue; |
255 | } | 279 | } |
280 | /* Unmap by myself (see DMA_COMPL_SKIP_DEST_UNMAP above) */ | ||
281 | dma_unmap_single(dev->dev, dma_dest, | ||
282 | test_buf_size, DMA_BIDIRECTIONAL); | ||
256 | 283 | ||
257 | error_count = 0; | 284 | error_count = 0; |
258 | 285 | ||
diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c index ca70a21afc68..70126a606239 100644 --- a/drivers/dma/fsldma.c +++ b/drivers/dma/fsldma.c | |||
@@ -822,7 +822,7 @@ static int __devinit fsl_dma_chan_probe(struct fsl_dma_device *fdev, | |||
822 | */ | 822 | */ |
823 | WARN_ON(fdev->feature != new_fsl_chan->feature); | 823 | WARN_ON(fdev->feature != new_fsl_chan->feature); |
824 | 824 | ||
825 | new_fsl_chan->dev = &new_fsl_chan->common.dev->device; | 825 | new_fsl_chan->dev = fdev->dev; |
826 | new_fsl_chan->reg_base = ioremap(new_fsl_chan->reg.start, | 826 | new_fsl_chan->reg_base = ioremap(new_fsl_chan->reg.start, |
827 | new_fsl_chan->reg.end - new_fsl_chan->reg.start + 1); | 827 | new_fsl_chan->reg.end - new_fsl_chan->reg.start + 1); |
828 | 828 | ||
@@ -875,7 +875,8 @@ static int __devinit fsl_dma_chan_probe(struct fsl_dma_device *fdev, | |||
875 | } | 875 | } |
876 | 876 | ||
877 | dev_info(fdev->dev, "#%d (%s), irq %d\n", new_fsl_chan->id, | 877 | dev_info(fdev->dev, "#%d (%s), irq %d\n", new_fsl_chan->id, |
878 | compatible, new_fsl_chan->irq); | 878 | compatible, |
879 | new_fsl_chan->irq != NO_IRQ ? new_fsl_chan->irq : fdev->irq); | ||
879 | 880 | ||
880 | return 0; | 881 | return 0; |
881 | 882 | ||
@@ -890,7 +891,8 @@ err_no_reg: | |||
890 | 891 | ||
891 | static void fsl_dma_chan_remove(struct fsl_dma_chan *fchan) | 892 | static void fsl_dma_chan_remove(struct fsl_dma_chan *fchan) |
892 | { | 893 | { |
893 | free_irq(fchan->irq, fchan); | 894 | if (fchan->irq != NO_IRQ) |
895 | free_irq(fchan->irq, fchan); | ||
894 | list_del(&fchan->common.device_node); | 896 | list_del(&fchan->common.device_node); |
895 | iounmap(fchan->reg_base); | 897 | iounmap(fchan->reg_base); |
896 | kfree(fchan); | 898 | kfree(fchan); |
diff --git a/drivers/dma/ipu/Makefile b/drivers/dma/ipu/Makefile new file mode 100644 index 000000000000..6704cf48326d --- /dev/null +++ b/drivers/dma/ipu/Makefile | |||
@@ -0,0 +1 @@ | |||
obj-y += ipu_irq.o ipu_idmac.o | |||
diff --git a/drivers/dma/ipu/ipu_idmac.c b/drivers/dma/ipu/ipu_idmac.c new file mode 100644 index 000000000000..1f154d08e98f --- /dev/null +++ b/drivers/dma/ipu/ipu_idmac.c | |||
@@ -0,0 +1,1740 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * Copyright (C) 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #include <linux/init.h> | ||
13 | #include <linux/platform_device.h> | ||
14 | #include <linux/err.h> | ||
15 | #include <linux/spinlock.h> | ||
16 | #include <linux/delay.h> | ||
17 | #include <linux/list.h> | ||
18 | #include <linux/clk.h> | ||
19 | #include <linux/vmalloc.h> | ||
20 | #include <linux/string.h> | ||
21 | #include <linux/interrupt.h> | ||
22 | #include <linux/io.h> | ||
23 | |||
24 | #include <mach/ipu.h> | ||
25 | |||
26 | #include "ipu_intern.h" | ||
27 | |||
28 | #define FS_VF_IN_VALID 0x00000002 | ||
29 | #define FS_ENC_IN_VALID 0x00000001 | ||
30 | |||
31 | /* | ||
32 | * There can be only one, we could allocate it dynamically, but then we'd have | ||
33 | * to add an extra parameter to some functions, and use something as ugly as | ||
34 | * struct ipu *ipu = to_ipu(to_idmac(ichan->dma_chan.device)); | ||
35 | * in the ISR | ||
36 | */ | ||
37 | static struct ipu ipu_data; | ||
38 | |||
39 | #define to_ipu(id) container_of(id, struct ipu, idmac) | ||
40 | |||
41 | static u32 __idmac_read_icreg(struct ipu *ipu, unsigned long reg) | ||
42 | { | ||
43 | return __raw_readl(ipu->reg_ic + reg); | ||
44 | } | ||
45 | |||
46 | #define idmac_read_icreg(ipu, reg) __idmac_read_icreg(ipu, reg - IC_CONF) | ||
47 | |||
48 | static void __idmac_write_icreg(struct ipu *ipu, u32 value, unsigned long reg) | ||
49 | { | ||
50 | __raw_writel(value, ipu->reg_ic + reg); | ||
51 | } | ||
52 | |||
53 | #define idmac_write_icreg(ipu, v, reg) __idmac_write_icreg(ipu, v, reg - IC_CONF) | ||
54 | |||
55 | static u32 idmac_read_ipureg(struct ipu *ipu, unsigned long reg) | ||
56 | { | ||
57 | return __raw_readl(ipu->reg_ipu + reg); | ||
58 | } | ||
59 | |||
60 | static void idmac_write_ipureg(struct ipu *ipu, u32 value, unsigned long reg) | ||
61 | { | ||
62 | __raw_writel(value, ipu->reg_ipu + reg); | ||
63 | } | ||
64 | |||
65 | /***************************************************************************** | ||
66 | * IPU / IC common functions | ||
67 | */ | ||
68 | static void dump_idmac_reg(struct ipu *ipu) | ||
69 | { | ||
70 | dev_dbg(ipu->dev, "IDMAC_CONF 0x%x, IC_CONF 0x%x, IDMAC_CHA_EN 0x%x, " | ||
71 | "IDMAC_CHA_PRI 0x%x, IDMAC_CHA_BUSY 0x%x\n", | ||
72 | idmac_read_icreg(ipu, IDMAC_CONF), | ||
73 | idmac_read_icreg(ipu, IC_CONF), | ||
74 | idmac_read_icreg(ipu, IDMAC_CHA_EN), | ||
75 | idmac_read_icreg(ipu, IDMAC_CHA_PRI), | ||
76 | idmac_read_icreg(ipu, IDMAC_CHA_BUSY)); | ||
77 | dev_dbg(ipu->dev, "BUF0_RDY 0x%x, BUF1_RDY 0x%x, CUR_BUF 0x%x, " | ||
78 | "DB_MODE 0x%x, TASKS_STAT 0x%x\n", | ||
79 | idmac_read_ipureg(ipu, IPU_CHA_BUF0_RDY), | ||
80 | idmac_read_ipureg(ipu, IPU_CHA_BUF1_RDY), | ||
81 | idmac_read_ipureg(ipu, IPU_CHA_CUR_BUF), | ||
82 | idmac_read_ipureg(ipu, IPU_CHA_DB_MODE_SEL), | ||
83 | idmac_read_ipureg(ipu, IPU_TASKS_STAT)); | ||
84 | } | ||
85 | |||
86 | static uint32_t bytes_per_pixel(enum pixel_fmt fmt) | ||
87 | { | ||
88 | switch (fmt) { | ||
89 | case IPU_PIX_FMT_GENERIC: /* generic data */ | ||
90 | case IPU_PIX_FMT_RGB332: | ||
91 | case IPU_PIX_FMT_YUV420P: | ||
92 | case IPU_PIX_FMT_YUV422P: | ||
93 | default: | ||
94 | return 1; | ||
95 | case IPU_PIX_FMT_RGB565: | ||
96 | case IPU_PIX_FMT_YUYV: | ||
97 | case IPU_PIX_FMT_UYVY: | ||
98 | return 2; | ||
99 | case IPU_PIX_FMT_BGR24: | ||
100 | case IPU_PIX_FMT_RGB24: | ||
101 | return 3; | ||
102 | case IPU_PIX_FMT_GENERIC_32: /* generic data */ | ||
103 | case IPU_PIX_FMT_BGR32: | ||
104 | case IPU_PIX_FMT_RGB32: | ||
105 | case IPU_PIX_FMT_ABGR32: | ||
106 | return 4; | ||
107 | } | ||
108 | } | ||
109 | |||
110 | /* Enable / disable direct write to memory by the Camera Sensor Interface */ | ||
111 | static void ipu_ic_enable_task(struct ipu *ipu, enum ipu_channel channel) | ||
112 | { | ||
113 | uint32_t ic_conf, mask; | ||
114 | |||
115 | switch (channel) { | ||
116 | case IDMAC_IC_0: | ||
117 | mask = IC_CONF_PRPENC_EN; | ||
118 | break; | ||
119 | case IDMAC_IC_7: | ||
120 | mask = IC_CONF_RWS_EN | IC_CONF_PRPENC_EN; | ||
121 | break; | ||
122 | default: | ||
123 | return; | ||
124 | } | ||
125 | ic_conf = idmac_read_icreg(ipu, IC_CONF) | mask; | ||
126 | idmac_write_icreg(ipu, ic_conf, IC_CONF); | ||
127 | } | ||
128 | |||
129 | static void ipu_ic_disable_task(struct ipu *ipu, enum ipu_channel channel) | ||
130 | { | ||
131 | uint32_t ic_conf, mask; | ||
132 | |||
133 | switch (channel) { | ||
134 | case IDMAC_IC_0: | ||
135 | mask = IC_CONF_PRPENC_EN; | ||
136 | break; | ||
137 | case IDMAC_IC_7: | ||
138 | mask = IC_CONF_RWS_EN | IC_CONF_PRPENC_EN; | ||
139 | break; | ||
140 | default: | ||
141 | return; | ||
142 | } | ||
143 | ic_conf = idmac_read_icreg(ipu, IC_CONF) & ~mask; | ||
144 | idmac_write_icreg(ipu, ic_conf, IC_CONF); | ||
145 | } | ||
146 | |||
147 | static uint32_t ipu_channel_status(struct ipu *ipu, enum ipu_channel channel) | ||
148 | { | ||
149 | uint32_t stat = TASK_STAT_IDLE; | ||
150 | uint32_t task_stat_reg = idmac_read_ipureg(ipu, IPU_TASKS_STAT); | ||
151 | |||
152 | switch (channel) { | ||
153 | case IDMAC_IC_7: | ||
154 | stat = (task_stat_reg & TSTAT_CSI2MEM_MASK) >> | ||
155 | TSTAT_CSI2MEM_OFFSET; | ||
156 | break; | ||
157 | case IDMAC_IC_0: | ||
158 | case IDMAC_SDC_0: | ||
159 | case IDMAC_SDC_1: | ||
160 | default: | ||
161 | break; | ||
162 | } | ||
163 | return stat; | ||
164 | } | ||
165 | |||
166 | struct chan_param_mem_planar { | ||
167 | /* Word 0 */ | ||
168 | u32 xv:10; | ||
169 | u32 yv:10; | ||
170 | u32 xb:12; | ||
171 | |||
172 | u32 yb:12; | ||
173 | u32 res1:2; | ||
174 | u32 nsb:1; | ||
175 | u32 lnpb:6; | ||
176 | u32 ubo_l:11; | ||
177 | |||
178 | u32 ubo_h:15; | ||
179 | u32 vbo_l:17; | ||
180 | |||
181 | u32 vbo_h:9; | ||
182 | u32 res2:3; | ||
183 | u32 fw:12; | ||
184 | u32 fh_l:8; | ||
185 | |||
186 | u32 fh_h:4; | ||
187 | u32 res3:28; | ||
188 | |||
189 | /* Word 1 */ | ||
190 | u32 eba0; | ||
191 | |||
192 | u32 eba1; | ||
193 | |||
194 | u32 bpp:3; | ||
195 | u32 sl:14; | ||
196 | u32 pfs:3; | ||
197 | u32 bam:3; | ||
198 | u32 res4:2; | ||
199 | u32 npb:6; | ||
200 | u32 res5:1; | ||
201 | |||
202 | u32 sat:2; | ||
203 | u32 res6:30; | ||
204 | } __attribute__ ((packed)); | ||
205 | |||
206 | struct chan_param_mem_interleaved { | ||
207 | /* Word 0 */ | ||
208 | u32 xv:10; | ||
209 | u32 yv:10; | ||
210 | u32 xb:12; | ||
211 | |||
212 | u32 yb:12; | ||
213 | u32 sce:1; | ||
214 | u32 res1:1; | ||
215 | u32 nsb:1; | ||
216 | u32 lnpb:6; | ||
217 | u32 sx:10; | ||
218 | u32 sy_l:1; | ||
219 | |||
220 | u32 sy_h:9; | ||
221 | u32 ns:10; | ||
222 | u32 sm:10; | ||
223 | u32 sdx_l:3; | ||
224 | |||
225 | u32 sdx_h:2; | ||
226 | u32 sdy:5; | ||
227 | u32 sdrx:1; | ||
228 | u32 sdry:1; | ||
229 | u32 sdr1:1; | ||
230 | u32 res2:2; | ||
231 | u32 fw:12; | ||
232 | u32 fh_l:8; | ||
233 | |||
234 | u32 fh_h:4; | ||
235 | u32 res3:28; | ||
236 | |||
237 | /* Word 1 */ | ||
238 | u32 eba0; | ||
239 | |||
240 | u32 eba1; | ||
241 | |||
242 | u32 bpp:3; | ||
243 | u32 sl:14; | ||
244 | u32 pfs:3; | ||
245 | u32 bam:3; | ||
246 | u32 res4:2; | ||
247 | u32 npb:6; | ||
248 | u32 res5:1; | ||
249 | |||
250 | u32 sat:2; | ||
251 | u32 scc:1; | ||
252 | u32 ofs0:5; | ||
253 | u32 ofs1:5; | ||
254 | u32 ofs2:5; | ||
255 | u32 ofs3:5; | ||
256 | u32 wid0:3; | ||
257 | u32 wid1:3; | ||
258 | u32 wid2:3; | ||
259 | |||
260 | u32 wid3:3; | ||
261 | u32 dec_sel:1; | ||
262 | u32 res6:28; | ||
263 | } __attribute__ ((packed)); | ||
264 | |||
265 | union chan_param_mem { | ||
266 | struct chan_param_mem_planar pp; | ||
267 | struct chan_param_mem_interleaved ip; | ||
268 | }; | ||
269 | |||
270 | static void ipu_ch_param_set_plane_offset(union chan_param_mem *params, | ||
271 | u32 u_offset, u32 v_offset) | ||
272 | { | ||
273 | params->pp.ubo_l = u_offset & 0x7ff; | ||
274 | params->pp.ubo_h = u_offset >> 11; | ||
275 | params->pp.vbo_l = v_offset & 0x1ffff; | ||
276 | params->pp.vbo_h = v_offset >> 17; | ||
277 | } | ||
278 | |||
279 | static void ipu_ch_param_set_size(union chan_param_mem *params, | ||
280 | uint32_t pixel_fmt, uint16_t width, | ||
281 | uint16_t height, uint16_t stride) | ||
282 | { | ||
283 | u32 u_offset; | ||
284 | u32 v_offset; | ||
285 | |||
286 | params->pp.fw = width - 1; | ||
287 | params->pp.fh_l = height - 1; | ||
288 | params->pp.fh_h = (height - 1) >> 8; | ||
289 | params->pp.sl = stride - 1; | ||
290 | |||
291 | switch (pixel_fmt) { | ||
292 | case IPU_PIX_FMT_GENERIC: | ||
293 | /*Represents 8-bit Generic data */ | ||
294 | params->pp.bpp = 3; | ||
295 | params->pp.pfs = 7; | ||
296 | params->pp.npb = 31; | ||
297 | params->pp.sat = 2; /* SAT = use 32-bit access */ | ||
298 | break; | ||
299 | case IPU_PIX_FMT_GENERIC_32: | ||
300 | /*Represents 32-bit Generic data */ | ||
301 | params->pp.bpp = 0; | ||
302 | params->pp.pfs = 7; | ||
303 | params->pp.npb = 7; | ||
304 | params->pp.sat = 2; /* SAT = use 32-bit access */ | ||
305 | break; | ||
306 | case IPU_PIX_FMT_RGB565: | ||
307 | params->ip.bpp = 2; | ||
308 | params->ip.pfs = 4; | ||
309 | params->ip.npb = 7; | ||
310 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
311 | params->ip.ofs0 = 0; /* Red bit offset */ | ||
312 | params->ip.ofs1 = 5; /* Green bit offset */ | ||
313 | params->ip.ofs2 = 11; /* Blue bit offset */ | ||
314 | params->ip.ofs3 = 16; /* Alpha bit offset */ | ||
315 | params->ip.wid0 = 4; /* Red bit width - 1 */ | ||
316 | params->ip.wid1 = 5; /* Green bit width - 1 */ | ||
317 | params->ip.wid2 = 4; /* Blue bit width - 1 */ | ||
318 | break; | ||
319 | case IPU_PIX_FMT_BGR24: | ||
320 | params->ip.bpp = 1; /* 24 BPP & RGB PFS */ | ||
321 | params->ip.pfs = 4; | ||
322 | params->ip.npb = 7; | ||
323 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
324 | params->ip.ofs0 = 0; /* Red bit offset */ | ||
325 | params->ip.ofs1 = 8; /* Green bit offset */ | ||
326 | params->ip.ofs2 = 16; /* Blue bit offset */ | ||
327 | params->ip.ofs3 = 24; /* Alpha bit offset */ | ||
328 | params->ip.wid0 = 7; /* Red bit width - 1 */ | ||
329 | params->ip.wid1 = 7; /* Green bit width - 1 */ | ||
330 | params->ip.wid2 = 7; /* Blue bit width - 1 */ | ||
331 | break; | ||
332 | case IPU_PIX_FMT_RGB24: | ||
333 | params->ip.bpp = 1; /* 24 BPP & RGB PFS */ | ||
334 | params->ip.pfs = 4; | ||
335 | params->ip.npb = 7; | ||
336 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
337 | params->ip.ofs0 = 16; /* Red bit offset */ | ||
338 | params->ip.ofs1 = 8; /* Green bit offset */ | ||
339 | params->ip.ofs2 = 0; /* Blue bit offset */ | ||
340 | params->ip.ofs3 = 24; /* Alpha bit offset */ | ||
341 | params->ip.wid0 = 7; /* Red bit width - 1 */ | ||
342 | params->ip.wid1 = 7; /* Green bit width - 1 */ | ||
343 | params->ip.wid2 = 7; /* Blue bit width - 1 */ | ||
344 | break; | ||
345 | case IPU_PIX_FMT_BGRA32: | ||
346 | case IPU_PIX_FMT_BGR32: | ||
347 | params->ip.bpp = 0; | ||
348 | params->ip.pfs = 4; | ||
349 | params->ip.npb = 7; | ||
350 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
351 | params->ip.ofs0 = 8; /* Red bit offset */ | ||
352 | params->ip.ofs1 = 16; /* Green bit offset */ | ||
353 | params->ip.ofs2 = 24; /* Blue bit offset */ | ||
354 | params->ip.ofs3 = 0; /* Alpha bit offset */ | ||
355 | params->ip.wid0 = 7; /* Red bit width - 1 */ | ||
356 | params->ip.wid1 = 7; /* Green bit width - 1 */ | ||
357 | params->ip.wid2 = 7; /* Blue bit width - 1 */ | ||
358 | params->ip.wid3 = 7; /* Alpha bit width - 1 */ | ||
359 | break; | ||
360 | case IPU_PIX_FMT_RGBA32: | ||
361 | case IPU_PIX_FMT_RGB32: | ||
362 | params->ip.bpp = 0; | ||
363 | params->ip.pfs = 4; | ||
364 | params->ip.npb = 7; | ||
365 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
366 | params->ip.ofs0 = 24; /* Red bit offset */ | ||
367 | params->ip.ofs1 = 16; /* Green bit offset */ | ||
368 | params->ip.ofs2 = 8; /* Blue bit offset */ | ||
369 | params->ip.ofs3 = 0; /* Alpha bit offset */ | ||
370 | params->ip.wid0 = 7; /* Red bit width - 1 */ | ||
371 | params->ip.wid1 = 7; /* Green bit width - 1 */ | ||
372 | params->ip.wid2 = 7; /* Blue bit width - 1 */ | ||
373 | params->ip.wid3 = 7; /* Alpha bit width - 1 */ | ||
374 | break; | ||
375 | case IPU_PIX_FMT_ABGR32: | ||
376 | params->ip.bpp = 0; | ||
377 | params->ip.pfs = 4; | ||
378 | params->ip.npb = 7; | ||
379 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
380 | params->ip.ofs0 = 8; /* Red bit offset */ | ||
381 | params->ip.ofs1 = 16; /* Green bit offset */ | ||
382 | params->ip.ofs2 = 24; /* Blue bit offset */ | ||
383 | params->ip.ofs3 = 0; /* Alpha bit offset */ | ||
384 | params->ip.wid0 = 7; /* Red bit width - 1 */ | ||
385 | params->ip.wid1 = 7; /* Green bit width - 1 */ | ||
386 | params->ip.wid2 = 7; /* Blue bit width - 1 */ | ||
387 | params->ip.wid3 = 7; /* Alpha bit width - 1 */ | ||
388 | break; | ||
389 | case IPU_PIX_FMT_UYVY: | ||
390 | params->ip.bpp = 2; | ||
391 | params->ip.pfs = 6; | ||
392 | params->ip.npb = 7; | ||
393 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
394 | break; | ||
395 | case IPU_PIX_FMT_YUV420P2: | ||
396 | case IPU_PIX_FMT_YUV420P: | ||
397 | params->ip.bpp = 3; | ||
398 | params->ip.pfs = 3; | ||
399 | params->ip.npb = 7; | ||
400 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
401 | u_offset = stride * height; | ||
402 | v_offset = u_offset + u_offset / 4; | ||
403 | ipu_ch_param_set_plane_offset(params, u_offset, v_offset); | ||
404 | break; | ||
405 | case IPU_PIX_FMT_YVU422P: | ||
406 | params->ip.bpp = 3; | ||
407 | params->ip.pfs = 2; | ||
408 | params->ip.npb = 7; | ||
409 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
410 | v_offset = stride * height; | ||
411 | u_offset = v_offset + v_offset / 2; | ||
412 | ipu_ch_param_set_plane_offset(params, u_offset, v_offset); | ||
413 | break; | ||
414 | case IPU_PIX_FMT_YUV422P: | ||
415 | params->ip.bpp = 3; | ||
416 | params->ip.pfs = 2; | ||
417 | params->ip.npb = 7; | ||
418 | params->ip.sat = 2; /* SAT = 32-bit access */ | ||
419 | u_offset = stride * height; | ||
420 | v_offset = u_offset + u_offset / 2; | ||
421 | ipu_ch_param_set_plane_offset(params, u_offset, v_offset); | ||
422 | break; | ||
423 | default: | ||
424 | dev_err(ipu_data.dev, | ||
425 | "mxc ipu: unimplemented pixel format %d\n", pixel_fmt); | ||
426 | break; | ||
427 | } | ||
428 | |||
429 | params->pp.nsb = 1; | ||
430 | } | ||
431 | |||
432 | static void ipu_ch_param_set_burst_size(union chan_param_mem *params, | ||
433 | uint16_t burst_pixels) | ||
434 | { | ||
435 | params->pp.npb = burst_pixels - 1; | ||
436 | }; | ||
437 | |||
438 | static void ipu_ch_param_set_buffer(union chan_param_mem *params, | ||
439 | dma_addr_t buf0, dma_addr_t buf1) | ||
440 | { | ||
441 | params->pp.eba0 = buf0; | ||
442 | params->pp.eba1 = buf1; | ||
443 | }; | ||
444 | |||
445 | static void ipu_ch_param_set_rotation(union chan_param_mem *params, | ||
446 | enum ipu_rotate_mode rotate) | ||
447 | { | ||
448 | params->pp.bam = rotate; | ||
449 | }; | ||
450 | |||
451 | static void ipu_write_param_mem(uint32_t addr, uint32_t *data, | ||
452 | uint32_t num_words) | ||
453 | { | ||
454 | for (; num_words > 0; num_words--) { | ||
455 | dev_dbg(ipu_data.dev, | ||
456 | "write param mem - addr = 0x%08X, data = 0x%08X\n", | ||
457 | addr, *data); | ||
458 | idmac_write_ipureg(&ipu_data, addr, IPU_IMA_ADDR); | ||
459 | idmac_write_ipureg(&ipu_data, *data++, IPU_IMA_DATA); | ||
460 | addr++; | ||
461 | if ((addr & 0x7) == 5) { | ||
462 | addr &= ~0x7; /* set to word 0 */ | ||
463 | addr += 8; /* increment to next row */ | ||
464 | } | ||
465 | } | ||
466 | } | ||
467 | |||
468 | static int calc_resize_coeffs(uint32_t in_size, uint32_t out_size, | ||
469 | uint32_t *resize_coeff, | ||
470 | uint32_t *downsize_coeff) | ||
471 | { | ||
472 | uint32_t temp_size; | ||
473 | uint32_t temp_downsize; | ||
474 | |||
475 | *resize_coeff = 1 << 13; | ||
476 | *downsize_coeff = 1 << 13; | ||
477 | |||
478 | /* Cannot downsize more than 8:1 */ | ||
479 | if (out_size << 3 < in_size) | ||
480 | return -EINVAL; | ||
481 | |||
482 | /* compute downsizing coefficient */ | ||
483 | temp_downsize = 0; | ||
484 | temp_size = in_size; | ||
485 | while (temp_size >= out_size * 2 && temp_downsize < 2) { | ||
486 | temp_size >>= 1; | ||
487 | temp_downsize++; | ||
488 | } | ||
489 | *downsize_coeff = temp_downsize; | ||
490 | |||
491 | /* | ||
492 | * compute resizing coefficient using the following formula: | ||
493 | * resize_coeff = M*(SI -1)/(SO - 1) | ||
494 | * where M = 2^13, SI - input size, SO - output size | ||
495 | */ | ||
496 | *resize_coeff = (8192L * (temp_size - 1)) / (out_size - 1); | ||
497 | if (*resize_coeff >= 16384L) { | ||
498 | dev_err(ipu_data.dev, "Warning! Overflow on resize coeff.\n"); | ||
499 | *resize_coeff = 0x3FFF; | ||
500 | } | ||
501 | |||
502 | dev_dbg(ipu_data.dev, "resizing from %u -> %u pixels, " | ||
503 | "downsize=%u, resize=%u.%lu (reg=%u)\n", in_size, out_size, | ||
504 | *downsize_coeff, *resize_coeff >= 8192L ? 1 : 0, | ||
505 | ((*resize_coeff & 0x1FFF) * 10000L) / 8192L, *resize_coeff); | ||
506 | |||
507 | return 0; | ||
508 | } | ||
509 | |||
510 | static enum ipu_color_space format_to_colorspace(enum pixel_fmt fmt) | ||
511 | { | ||
512 | switch (fmt) { | ||
513 | case IPU_PIX_FMT_RGB565: | ||
514 | case IPU_PIX_FMT_BGR24: | ||
515 | case IPU_PIX_FMT_RGB24: | ||
516 | case IPU_PIX_FMT_BGR32: | ||
517 | case IPU_PIX_FMT_RGB32: | ||
518 | return IPU_COLORSPACE_RGB; | ||
519 | default: | ||
520 | return IPU_COLORSPACE_YCBCR; | ||
521 | } | ||
522 | } | ||
523 | |||
524 | static int ipu_ic_init_prpenc(struct ipu *ipu, | ||
525 | union ipu_channel_param *params, bool src_is_csi) | ||
526 | { | ||
527 | uint32_t reg, ic_conf; | ||
528 | uint32_t downsize_coeff, resize_coeff; | ||
529 | enum ipu_color_space in_fmt, out_fmt; | ||
530 | |||
531 | /* Setup vertical resizing */ | ||
532 | calc_resize_coeffs(params->video.in_height, | ||
533 | params->video.out_height, | ||
534 | &resize_coeff, &downsize_coeff); | ||
535 | reg = (downsize_coeff << 30) | (resize_coeff << 16); | ||
536 | |||
537 | /* Setup horizontal resizing */ | ||
538 | calc_resize_coeffs(params->video.in_width, | ||
539 | params->video.out_width, | ||
540 | &resize_coeff, &downsize_coeff); | ||
541 | reg |= (downsize_coeff << 14) | resize_coeff; | ||
542 | |||
543 | /* Setup color space conversion */ | ||
544 | in_fmt = format_to_colorspace(params->video.in_pixel_fmt); | ||
545 | out_fmt = format_to_colorspace(params->video.out_pixel_fmt); | ||
546 | |||
547 | /* | ||
548 | * Colourspace conversion unsupported yet - see _init_csc() in | ||
549 | * Freescale sources | ||
550 | */ | ||
551 | if (in_fmt != out_fmt) { | ||
552 | dev_err(ipu->dev, "Colourspace conversion unsupported!\n"); | ||
553 | return -EOPNOTSUPP; | ||
554 | } | ||
555 | |||
556 | idmac_write_icreg(ipu, reg, IC_PRP_ENC_RSC); | ||
557 | |||
558 | ic_conf = idmac_read_icreg(ipu, IC_CONF); | ||
559 | |||
560 | if (src_is_csi) | ||
561 | ic_conf &= ~IC_CONF_RWS_EN; | ||
562 | else | ||
563 | ic_conf |= IC_CONF_RWS_EN; | ||
564 | |||
565 | idmac_write_icreg(ipu, ic_conf, IC_CONF); | ||
566 | |||
567 | return 0; | ||
568 | } | ||
569 | |||
570 | static uint32_t dma_param_addr(uint32_t dma_ch) | ||
571 | { | ||
572 | /* Channel Parameter Memory */ | ||
573 | return 0x10000 | (dma_ch << 4); | ||
574 | }; | ||
575 | |||
576 | static void ipu_channel_set_priority(struct ipu *ipu, enum ipu_channel channel, | ||
577 | bool prio) | ||
578 | { | ||
579 | u32 reg = idmac_read_icreg(ipu, IDMAC_CHA_PRI); | ||
580 | |||
581 | if (prio) | ||
582 | reg |= 1UL << channel; | ||
583 | else | ||
584 | reg &= ~(1UL << channel); | ||
585 | |||
586 | idmac_write_icreg(ipu, reg, IDMAC_CHA_PRI); | ||
587 | |||
588 | dump_idmac_reg(ipu); | ||
589 | } | ||
590 | |||
591 | static uint32_t ipu_channel_conf_mask(enum ipu_channel channel) | ||
592 | { | ||
593 | uint32_t mask; | ||
594 | |||
595 | switch (channel) { | ||
596 | case IDMAC_IC_0: | ||
597 | case IDMAC_IC_7: | ||
598 | mask = IPU_CONF_CSI_EN | IPU_CONF_IC_EN; | ||
599 | break; | ||
600 | case IDMAC_SDC_0: | ||
601 | case IDMAC_SDC_1: | ||
602 | mask = IPU_CONF_SDC_EN | IPU_CONF_DI_EN; | ||
603 | break; | ||
604 | default: | ||
605 | mask = 0; | ||
606 | break; | ||
607 | } | ||
608 | |||
609 | return mask; | ||
610 | } | ||
611 | |||
612 | /** | ||
613 | * ipu_enable_channel() - enable an IPU channel. | ||
614 | * @channel: channel ID. | ||
615 | * @return: 0 on success or negative error code on failure. | ||
616 | */ | ||
617 | static int ipu_enable_channel(struct idmac *idmac, struct idmac_channel *ichan) | ||
618 | { | ||
619 | struct ipu *ipu = to_ipu(idmac); | ||
620 | enum ipu_channel channel = ichan->dma_chan.chan_id; | ||
621 | uint32_t reg; | ||
622 | unsigned long flags; | ||
623 | |||
624 | spin_lock_irqsave(&ipu->lock, flags); | ||
625 | |||
626 | /* Reset to buffer 0 */ | ||
627 | idmac_write_ipureg(ipu, 1UL << channel, IPU_CHA_CUR_BUF); | ||
628 | ichan->active_buffer = 0; | ||
629 | ichan->status = IPU_CHANNEL_ENABLED; | ||
630 | |||
631 | switch (channel) { | ||
632 | case IDMAC_SDC_0: | ||
633 | case IDMAC_SDC_1: | ||
634 | case IDMAC_IC_7: | ||
635 | ipu_channel_set_priority(ipu, channel, true); | ||
636 | default: | ||
637 | break; | ||
638 | } | ||
639 | |||
640 | reg = idmac_read_icreg(ipu, IDMAC_CHA_EN); | ||
641 | |||
642 | idmac_write_icreg(ipu, reg | (1UL << channel), IDMAC_CHA_EN); | ||
643 | |||
644 | ipu_ic_enable_task(ipu, channel); | ||
645 | |||
646 | spin_unlock_irqrestore(&ipu->lock, flags); | ||
647 | return 0; | ||
648 | } | ||
649 | |||
650 | /** | ||
651 | * ipu_init_channel_buffer() - initialize a buffer for logical IPU channel. | ||
652 | * @channel: channel ID. | ||
653 | * @pixel_fmt: pixel format of buffer. Pixel format is a FOURCC ASCII code. | ||
654 | * @width: width of buffer in pixels. | ||
655 | * @height: height of buffer in pixels. | ||
656 | * @stride: stride length of buffer in pixels. | ||
657 | * @rot_mode: rotation mode of buffer. A rotation setting other than | ||
658 | * IPU_ROTATE_VERT_FLIP should only be used for input buffers of | ||
659 | * rotation channels. | ||
660 | * @phyaddr_0: buffer 0 physical address. | ||
661 | * @phyaddr_1: buffer 1 physical address. Setting this to a value other than | ||
662 | * NULL enables double buffering mode. | ||
663 | * @return: 0 on success or negative error code on failure. | ||
664 | */ | ||
665 | static int ipu_init_channel_buffer(struct idmac_channel *ichan, | ||
666 | enum pixel_fmt pixel_fmt, | ||
667 | uint16_t width, uint16_t height, | ||
668 | uint32_t stride, | ||
669 | enum ipu_rotate_mode rot_mode, | ||
670 | dma_addr_t phyaddr_0, dma_addr_t phyaddr_1) | ||
671 | { | ||
672 | enum ipu_channel channel = ichan->dma_chan.chan_id; | ||
673 | struct idmac *idmac = to_idmac(ichan->dma_chan.device); | ||
674 | struct ipu *ipu = to_ipu(idmac); | ||
675 | union chan_param_mem params = {}; | ||
676 | unsigned long flags; | ||
677 | uint32_t reg; | ||
678 | uint32_t stride_bytes; | ||
679 | |||
680 | stride_bytes = stride * bytes_per_pixel(pixel_fmt); | ||
681 | |||
682 | if (stride_bytes % 4) { | ||
683 | dev_err(ipu->dev, | ||
684 | "Stride length must be 32-bit aligned, stride = %d, bytes = %d\n", | ||
685 | stride, stride_bytes); | ||
686 | return -EINVAL; | ||
687 | } | ||
688 | |||
689 | /* IC channel's stride must be a multiple of 8 pixels */ | ||
690 | if ((channel <= 13) && (stride % 8)) { | ||
691 | dev_err(ipu->dev, "Stride must be 8 pixel multiple\n"); | ||
692 | return -EINVAL; | ||
693 | } | ||
694 | |||
695 | /* Build parameter memory data for DMA channel */ | ||
696 | ipu_ch_param_set_size(¶ms, pixel_fmt, width, height, stride_bytes); | ||
697 | ipu_ch_param_set_buffer(¶ms, phyaddr_0, phyaddr_1); | ||
698 | ipu_ch_param_set_rotation(¶ms, rot_mode); | ||
699 | /* Some channels (rotation) have restriction on burst length */ | ||
700 | switch (channel) { | ||
701 | case IDMAC_IC_7: /* Hangs with burst 8, 16, other values | ||
702 | invalid - Table 44-30 */ | ||
703 | /* | ||
704 | ipu_ch_param_set_burst_size(¶ms, 8); | ||
705 | */ | ||
706 | break; | ||
707 | case IDMAC_SDC_0: | ||
708 | case IDMAC_SDC_1: | ||
709 | /* In original code only IPU_PIX_FMT_RGB565 was setting burst */ | ||
710 | ipu_ch_param_set_burst_size(¶ms, 16); | ||
711 | break; | ||
712 | case IDMAC_IC_0: | ||
713 | default: | ||
714 | break; | ||
715 | } | ||
716 | |||
717 | spin_lock_irqsave(&ipu->lock, flags); | ||
718 | |||
719 | ipu_write_param_mem(dma_param_addr(channel), (uint32_t *)¶ms, 10); | ||
720 | |||
721 | reg = idmac_read_ipureg(ipu, IPU_CHA_DB_MODE_SEL); | ||
722 | |||
723 | if (phyaddr_1) | ||
724 | reg |= 1UL << channel; | ||
725 | else | ||
726 | reg &= ~(1UL << channel); | ||
727 | |||
728 | idmac_write_ipureg(ipu, reg, IPU_CHA_DB_MODE_SEL); | ||
729 | |||
730 | ichan->status = IPU_CHANNEL_READY; | ||
731 | |||
732 | spin_unlock_irqrestore(ipu->lock, flags); | ||
733 | |||
734 | return 0; | ||
735 | } | ||
736 | |||
737 | /** | ||
738 | * ipu_select_buffer() - mark a channel's buffer as ready. | ||
739 | * @channel: channel ID. | ||
740 | * @buffer_n: buffer number to mark ready. | ||
741 | */ | ||
742 | static void ipu_select_buffer(enum ipu_channel channel, int buffer_n) | ||
743 | { | ||
744 | /* No locking - this is a write-one-to-set register, cleared by IPU */ | ||
745 | if (buffer_n == 0) | ||
746 | /* Mark buffer 0 as ready. */ | ||
747 | idmac_write_ipureg(&ipu_data, 1UL << channel, IPU_CHA_BUF0_RDY); | ||
748 | else | ||
749 | /* Mark buffer 1 as ready. */ | ||
750 | idmac_write_ipureg(&ipu_data, 1UL << channel, IPU_CHA_BUF1_RDY); | ||
751 | } | ||
752 | |||
753 | /** | ||
754 | * ipu_update_channel_buffer() - update physical address of a channel buffer. | ||
755 | * @channel: channel ID. | ||
756 | * @buffer_n: buffer number to update. | ||
757 | * 0 or 1 are the only valid values. | ||
758 | * @phyaddr: buffer physical address. | ||
759 | * @return: Returns 0 on success or negative error code on failure. This | ||
760 | * function will fail if the buffer is set to ready. | ||
761 | */ | ||
762 | /* Called under spin_lock(_irqsave)(&ichan->lock) */ | ||
763 | static int ipu_update_channel_buffer(enum ipu_channel channel, | ||
764 | int buffer_n, dma_addr_t phyaddr) | ||
765 | { | ||
766 | uint32_t reg; | ||
767 | unsigned long flags; | ||
768 | |||
769 | spin_lock_irqsave(&ipu_data.lock, flags); | ||
770 | |||
771 | if (buffer_n == 0) { | ||
772 | reg = idmac_read_ipureg(&ipu_data, IPU_CHA_BUF0_RDY); | ||
773 | if (reg & (1UL << channel)) { | ||
774 | spin_unlock_irqrestore(&ipu_data.lock, flags); | ||
775 | return -EACCES; | ||
776 | } | ||
777 | |||
778 | /* 44.3.3.1.9 - Row Number 1 (WORD1, offset 0) */ | ||
779 | idmac_write_ipureg(&ipu_data, dma_param_addr(channel) + | ||
780 | 0x0008UL, IPU_IMA_ADDR); | ||
781 | idmac_write_ipureg(&ipu_data, phyaddr, IPU_IMA_DATA); | ||
782 | } else { | ||
783 | reg = idmac_read_ipureg(&ipu_data, IPU_CHA_BUF1_RDY); | ||
784 | if (reg & (1UL << channel)) { | ||
785 | spin_unlock_irqrestore(&ipu_data.lock, flags); | ||
786 | return -EACCES; | ||
787 | } | ||
788 | |||
789 | /* Check if double-buffering is already enabled */ | ||
790 | reg = idmac_read_ipureg(&ipu_data, IPU_CHA_DB_MODE_SEL); | ||
791 | |||
792 | if (!(reg & (1UL << channel))) | ||
793 | idmac_write_ipureg(&ipu_data, reg | (1UL << channel), | ||
794 | IPU_CHA_DB_MODE_SEL); | ||
795 | |||
796 | /* 44.3.3.1.9 - Row Number 1 (WORD1, offset 1) */ | ||
797 | idmac_write_ipureg(&ipu_data, dma_param_addr(channel) + | ||
798 | 0x0009UL, IPU_IMA_ADDR); | ||
799 | idmac_write_ipureg(&ipu_data, phyaddr, IPU_IMA_DATA); | ||
800 | } | ||
801 | |||
802 | spin_unlock_irqrestore(&ipu_data.lock, flags); | ||
803 | |||
804 | return 0; | ||
805 | } | ||
806 | |||
807 | /* Called under spin_lock_irqsave(&ichan->lock) */ | ||
808 | static int ipu_submit_channel_buffers(struct idmac_channel *ichan, | ||
809 | struct idmac_tx_desc *desc) | ||
810 | { | ||
811 | struct scatterlist *sg; | ||
812 | int i, ret = 0; | ||
813 | |||
814 | for (i = 0, sg = desc->sg; i < 2 && sg; i++) { | ||
815 | if (!ichan->sg[i]) { | ||
816 | ichan->sg[i] = sg; | ||
817 | |||
818 | /* | ||
819 | * On first invocation this shouldn't be necessary, the | ||
820 | * call to ipu_init_channel_buffer() above will set | ||
821 | * addresses for us, so we could make it conditional | ||
822 | * on status >= IPU_CHANNEL_ENABLED, but doing it again | ||
823 | * shouldn't hurt either. | ||
824 | */ | ||
825 | ret = ipu_update_channel_buffer(ichan->dma_chan.chan_id, i, | ||
826 | sg_dma_address(sg)); | ||
827 | if (ret < 0) | ||
828 | return ret; | ||
829 | |||
830 | ipu_select_buffer(ichan->dma_chan.chan_id, i); | ||
831 | |||
832 | sg = sg_next(sg); | ||
833 | } | ||
834 | } | ||
835 | |||
836 | return ret; | ||
837 | } | ||
838 | |||
839 | static dma_cookie_t idmac_tx_submit(struct dma_async_tx_descriptor *tx) | ||
840 | { | ||
841 | struct idmac_tx_desc *desc = to_tx_desc(tx); | ||
842 | struct idmac_channel *ichan = to_idmac_chan(tx->chan); | ||
843 | struct idmac *idmac = to_idmac(tx->chan->device); | ||
844 | struct ipu *ipu = to_ipu(idmac); | ||
845 | dma_cookie_t cookie; | ||
846 | unsigned long flags; | ||
847 | |||
848 | /* Sanity check */ | ||
849 | if (!list_empty(&desc->list)) { | ||
850 | /* The descriptor doesn't belong to client */ | ||
851 | dev_err(&ichan->dma_chan.dev->device, | ||
852 | "Descriptor %p not prepared!\n", tx); | ||
853 | return -EBUSY; | ||
854 | } | ||
855 | |||
856 | mutex_lock(&ichan->chan_mutex); | ||
857 | |||
858 | if (ichan->status < IPU_CHANNEL_READY) { | ||
859 | struct idmac_video_param *video = &ichan->params.video; | ||
860 | /* | ||
861 | * Initial buffer assignment - the first two sg-entries from | ||
862 | * the descriptor will end up in the IDMAC buffers | ||
863 | */ | ||
864 | dma_addr_t dma_1 = sg_is_last(desc->sg) ? 0 : | ||
865 | sg_dma_address(&desc->sg[1]); | ||
866 | |||
867 | WARN_ON(ichan->sg[0] || ichan->sg[1]); | ||
868 | |||
869 | cookie = ipu_init_channel_buffer(ichan, | ||
870 | video->out_pixel_fmt, | ||
871 | video->out_width, | ||
872 | video->out_height, | ||
873 | video->out_stride, | ||
874 | IPU_ROTATE_NONE, | ||
875 | sg_dma_address(&desc->sg[0]), | ||
876 | dma_1); | ||
877 | if (cookie < 0) | ||
878 | goto out; | ||
879 | } | ||
880 | |||
881 | /* ipu->lock can be taken under ichan->lock, but not v.v. */ | ||
882 | spin_lock_irqsave(&ichan->lock, flags); | ||
883 | |||
884 | /* submit_buffers() atomically verifies and fills empty sg slots */ | ||
885 | cookie = ipu_submit_channel_buffers(ichan, desc); | ||
886 | |||
887 | spin_unlock_irqrestore(&ichan->lock, flags); | ||
888 | |||
889 | if (cookie < 0) | ||
890 | goto out; | ||
891 | |||
892 | cookie = ichan->dma_chan.cookie; | ||
893 | |||
894 | if (++cookie < 0) | ||
895 | cookie = 1; | ||
896 | |||
897 | /* from dmaengine.h: "last cookie value returned to client" */ | ||
898 | ichan->dma_chan.cookie = cookie; | ||
899 | tx->cookie = cookie; | ||
900 | spin_lock_irqsave(&ichan->lock, flags); | ||
901 | list_add_tail(&desc->list, &ichan->queue); | ||
902 | spin_unlock_irqrestore(&ichan->lock, flags); | ||
903 | |||
904 | if (ichan->status < IPU_CHANNEL_ENABLED) { | ||
905 | int ret = ipu_enable_channel(idmac, ichan); | ||
906 | if (ret < 0) { | ||
907 | cookie = ret; | ||
908 | spin_lock_irqsave(&ichan->lock, flags); | ||
909 | list_del_init(&desc->list); | ||
910 | spin_unlock_irqrestore(&ichan->lock, flags); | ||
911 | tx->cookie = cookie; | ||
912 | ichan->dma_chan.cookie = cookie; | ||
913 | } | ||
914 | } | ||
915 | |||
916 | dump_idmac_reg(ipu); | ||
917 | |||
918 | out: | ||
919 | mutex_unlock(&ichan->chan_mutex); | ||
920 | |||
921 | return cookie; | ||
922 | } | ||
923 | |||
924 | /* Called with ichan->chan_mutex held */ | ||
925 | static int idmac_desc_alloc(struct idmac_channel *ichan, int n) | ||
926 | { | ||
927 | struct idmac_tx_desc *desc = vmalloc(n * sizeof(struct idmac_tx_desc)); | ||
928 | struct idmac *idmac = to_idmac(ichan->dma_chan.device); | ||
929 | |||
930 | if (!desc) | ||
931 | return -ENOMEM; | ||
932 | |||
933 | /* No interrupts, just disable the tasklet for a moment */ | ||
934 | tasklet_disable(&to_ipu(idmac)->tasklet); | ||
935 | |||
936 | ichan->n_tx_desc = n; | ||
937 | ichan->desc = desc; | ||
938 | INIT_LIST_HEAD(&ichan->queue); | ||
939 | INIT_LIST_HEAD(&ichan->free_list); | ||
940 | |||
941 | while (n--) { | ||
942 | struct dma_async_tx_descriptor *txd = &desc->txd; | ||
943 | |||
944 | memset(txd, 0, sizeof(*txd)); | ||
945 | dma_async_tx_descriptor_init(txd, &ichan->dma_chan); | ||
946 | txd->tx_submit = idmac_tx_submit; | ||
947 | txd->chan = &ichan->dma_chan; | ||
948 | INIT_LIST_HEAD(&txd->tx_list); | ||
949 | |||
950 | list_add(&desc->list, &ichan->free_list); | ||
951 | |||
952 | desc++; | ||
953 | } | ||
954 | |||
955 | tasklet_enable(&to_ipu(idmac)->tasklet); | ||
956 | |||
957 | return 0; | ||
958 | } | ||
959 | |||
960 | /** | ||
961 | * ipu_init_channel() - initialize an IPU channel. | ||
962 | * @idmac: IPU DMAC context. | ||
963 | * @ichan: pointer to the channel object. | ||
964 | * @return 0 on success or negative error code on failure. | ||
965 | */ | ||
966 | static int ipu_init_channel(struct idmac *idmac, struct idmac_channel *ichan) | ||
967 | { | ||
968 | union ipu_channel_param *params = &ichan->params; | ||
969 | uint32_t ipu_conf; | ||
970 | enum ipu_channel channel = ichan->dma_chan.chan_id; | ||
971 | unsigned long flags; | ||
972 | uint32_t reg; | ||
973 | struct ipu *ipu = to_ipu(idmac); | ||
974 | int ret = 0, n_desc = 0; | ||
975 | |||
976 | dev_dbg(ipu->dev, "init channel = %d\n", channel); | ||
977 | |||
978 | if (channel != IDMAC_SDC_0 && channel != IDMAC_SDC_1 && | ||
979 | channel != IDMAC_IC_7) | ||
980 | return -EINVAL; | ||
981 | |||
982 | spin_lock_irqsave(&ipu->lock, flags); | ||
983 | |||
984 | switch (channel) { | ||
985 | case IDMAC_IC_7: | ||
986 | n_desc = 16; | ||
987 | reg = idmac_read_icreg(ipu, IC_CONF); | ||
988 | idmac_write_icreg(ipu, reg & ~IC_CONF_CSI_MEM_WR_EN, IC_CONF); | ||
989 | break; | ||
990 | case IDMAC_IC_0: | ||
991 | n_desc = 16; | ||
992 | reg = idmac_read_ipureg(ipu, IPU_FS_PROC_FLOW); | ||
993 | idmac_write_ipureg(ipu, reg & ~FS_ENC_IN_VALID, IPU_FS_PROC_FLOW); | ||
994 | ret = ipu_ic_init_prpenc(ipu, params, true); | ||
995 | break; | ||
996 | case IDMAC_SDC_0: | ||
997 | case IDMAC_SDC_1: | ||
998 | n_desc = 4; | ||
999 | default: | ||
1000 | break; | ||
1001 | } | ||
1002 | |||
1003 | ipu->channel_init_mask |= 1L << channel; | ||
1004 | |||
1005 | /* Enable IPU sub module */ | ||
1006 | ipu_conf = idmac_read_ipureg(ipu, IPU_CONF) | | ||
1007 | ipu_channel_conf_mask(channel); | ||
1008 | idmac_write_ipureg(ipu, ipu_conf, IPU_CONF); | ||
1009 | |||
1010 | spin_unlock_irqrestore(&ipu->lock, flags); | ||
1011 | |||
1012 | if (n_desc && !ichan->desc) | ||
1013 | ret = idmac_desc_alloc(ichan, n_desc); | ||
1014 | |||
1015 | dump_idmac_reg(ipu); | ||
1016 | |||
1017 | return ret; | ||
1018 | } | ||
1019 | |||
1020 | /** | ||
1021 | * ipu_uninit_channel() - uninitialize an IPU channel. | ||
1022 | * @idmac: IPU DMAC context. | ||
1023 | * @ichan: pointer to the channel object. | ||
1024 | */ | ||
1025 | static void ipu_uninit_channel(struct idmac *idmac, struct idmac_channel *ichan) | ||
1026 | { | ||
1027 | enum ipu_channel channel = ichan->dma_chan.chan_id; | ||
1028 | unsigned long flags; | ||
1029 | uint32_t reg; | ||
1030 | unsigned long chan_mask = 1UL << channel; | ||
1031 | uint32_t ipu_conf; | ||
1032 | struct ipu *ipu = to_ipu(idmac); | ||
1033 | |||
1034 | spin_lock_irqsave(&ipu->lock, flags); | ||
1035 | |||
1036 | if (!(ipu->channel_init_mask & chan_mask)) { | ||
1037 | dev_err(ipu->dev, "Channel already uninitialized %d\n", | ||
1038 | channel); | ||
1039 | spin_unlock_irqrestore(&ipu->lock, flags); | ||
1040 | return; | ||
1041 | } | ||
1042 | |||
1043 | /* Reset the double buffer */ | ||
1044 | reg = idmac_read_ipureg(ipu, IPU_CHA_DB_MODE_SEL); | ||
1045 | idmac_write_ipureg(ipu, reg & ~chan_mask, IPU_CHA_DB_MODE_SEL); | ||
1046 | |||
1047 | ichan->sec_chan_en = false; | ||
1048 | |||
1049 | switch (channel) { | ||
1050 | case IDMAC_IC_7: | ||
1051 | reg = idmac_read_icreg(ipu, IC_CONF); | ||
1052 | idmac_write_icreg(ipu, reg & ~(IC_CONF_RWS_EN | IC_CONF_PRPENC_EN), | ||
1053 | IC_CONF); | ||
1054 | break; | ||
1055 | case IDMAC_IC_0: | ||
1056 | reg = idmac_read_icreg(ipu, IC_CONF); | ||
1057 | idmac_write_icreg(ipu, reg & ~(IC_CONF_PRPENC_EN | IC_CONF_PRPENC_CSC1), | ||
1058 | IC_CONF); | ||
1059 | break; | ||
1060 | case IDMAC_SDC_0: | ||
1061 | case IDMAC_SDC_1: | ||
1062 | default: | ||
1063 | break; | ||
1064 | } | ||
1065 | |||
1066 | ipu->channel_init_mask &= ~(1L << channel); | ||
1067 | |||
1068 | ipu_conf = idmac_read_ipureg(ipu, IPU_CONF) & | ||
1069 | ~ipu_channel_conf_mask(channel); | ||
1070 | idmac_write_ipureg(ipu, ipu_conf, IPU_CONF); | ||
1071 | |||
1072 | spin_unlock_irqrestore(&ipu->lock, flags); | ||
1073 | |||
1074 | ichan->n_tx_desc = 0; | ||
1075 | vfree(ichan->desc); | ||
1076 | ichan->desc = NULL; | ||
1077 | } | ||
1078 | |||
1079 | /** | ||
1080 | * ipu_disable_channel() - disable an IPU channel. | ||
1081 | * @idmac: IPU DMAC context. | ||
1082 | * @ichan: channel object pointer. | ||
1083 | * @wait_for_stop: flag to set whether to wait for channel end of frame or | ||
1084 | * return immediately. | ||
1085 | * @return: 0 on success or negative error code on failure. | ||
1086 | */ | ||
1087 | static int ipu_disable_channel(struct idmac *idmac, struct idmac_channel *ichan, | ||
1088 | bool wait_for_stop) | ||
1089 | { | ||
1090 | enum ipu_channel channel = ichan->dma_chan.chan_id; | ||
1091 | struct ipu *ipu = to_ipu(idmac); | ||
1092 | uint32_t reg; | ||
1093 | unsigned long flags; | ||
1094 | unsigned long chan_mask = 1UL << channel; | ||
1095 | unsigned int timeout; | ||
1096 | |||
1097 | if (wait_for_stop && channel != IDMAC_SDC_1 && channel != IDMAC_SDC_0) { | ||
1098 | timeout = 40; | ||
1099 | /* This waiting always fails. Related to spurious irq problem */ | ||
1100 | while ((idmac_read_icreg(ipu, IDMAC_CHA_BUSY) & chan_mask) || | ||
1101 | (ipu_channel_status(ipu, channel) == TASK_STAT_ACTIVE)) { | ||
1102 | timeout--; | ||
1103 | msleep(10); | ||
1104 | |||
1105 | if (!timeout) { | ||
1106 | dev_dbg(ipu->dev, | ||
1107 | "Warning: timeout waiting for channel %u to " | ||
1108 | "stop: buf0_rdy = 0x%08X, buf1_rdy = 0x%08X, " | ||
1109 | "busy = 0x%08X, tstat = 0x%08X\n", channel, | ||
1110 | idmac_read_ipureg(ipu, IPU_CHA_BUF0_RDY), | ||
1111 | idmac_read_ipureg(ipu, IPU_CHA_BUF1_RDY), | ||
1112 | idmac_read_icreg(ipu, IDMAC_CHA_BUSY), | ||
1113 | idmac_read_ipureg(ipu, IPU_TASKS_STAT)); | ||
1114 | break; | ||
1115 | } | ||
1116 | } | ||
1117 | dev_dbg(ipu->dev, "timeout = %d * 10ms\n", 40 - timeout); | ||
1118 | } | ||
1119 | /* SDC BG and FG must be disabled before DMA is disabled */ | ||
1120 | if (wait_for_stop && (channel == IDMAC_SDC_0 || | ||
1121 | channel == IDMAC_SDC_1)) { | ||
1122 | for (timeout = 5; | ||
1123 | timeout && !ipu_irq_status(ichan->eof_irq); timeout--) | ||
1124 | msleep(5); | ||
1125 | } | ||
1126 | |||
1127 | spin_lock_irqsave(&ipu->lock, flags); | ||
1128 | |||
1129 | /* Disable IC task */ | ||
1130 | ipu_ic_disable_task(ipu, channel); | ||
1131 | |||
1132 | /* Disable DMA channel(s) */ | ||
1133 | reg = idmac_read_icreg(ipu, IDMAC_CHA_EN); | ||
1134 | idmac_write_icreg(ipu, reg & ~chan_mask, IDMAC_CHA_EN); | ||
1135 | |||
1136 | /* | ||
1137 | * Problem (observed with channel DMAIC_7): after enabling the channel | ||
1138 | * and initialising buffers, there comes an interrupt with current still | ||
1139 | * pointing at buffer 0, whereas it should use buffer 0 first and only | ||
1140 | * generate an interrupt when it is done, then current should already | ||
1141 | * point to buffer 1. This spurious interrupt also comes on channel | ||
1142 | * DMASDC_0. With DMAIC_7 normally, is we just leave the ISR after the | ||
1143 | * first interrupt, there comes the second with current correctly | ||
1144 | * pointing to buffer 1 this time. But sometimes this second interrupt | ||
1145 | * doesn't come and the channel hangs. Clearing BUFx_RDY when disabling | ||
1146 | * the channel seems to prevent the channel from hanging, but it doesn't | ||
1147 | * prevent the spurious interrupt. This might also be unsafe. Think | ||
1148 | * about the IDMAC controller trying to switch to a buffer, when we | ||
1149 | * clear the ready bit, and re-enable it a moment later. | ||
1150 | */ | ||
1151 | reg = idmac_read_ipureg(ipu, IPU_CHA_BUF0_RDY); | ||
1152 | idmac_write_ipureg(ipu, 0, IPU_CHA_BUF0_RDY); | ||
1153 | idmac_write_ipureg(ipu, reg & ~(1UL << channel), IPU_CHA_BUF0_RDY); | ||
1154 | |||
1155 | reg = idmac_read_ipureg(ipu, IPU_CHA_BUF1_RDY); | ||
1156 | idmac_write_ipureg(ipu, 0, IPU_CHA_BUF1_RDY); | ||
1157 | idmac_write_ipureg(ipu, reg & ~(1UL << channel), IPU_CHA_BUF1_RDY); | ||
1158 | |||
1159 | spin_unlock_irqrestore(&ipu->lock, flags); | ||
1160 | |||
1161 | return 0; | ||
1162 | } | ||
1163 | |||
1164 | /* | ||
1165 | * We have several possibilities here: | ||
1166 | * current BUF next BUF | ||
1167 | * | ||
1168 | * not last sg next not last sg | ||
1169 | * not last sg next last sg | ||
1170 | * last sg first sg from next descriptor | ||
1171 | * last sg NULL | ||
1172 | * | ||
1173 | * Besides, the descriptor queue might be empty or not. We process all these | ||
1174 | * cases carefully. | ||
1175 | */ | ||
1176 | static irqreturn_t idmac_interrupt(int irq, void *dev_id) | ||
1177 | { | ||
1178 | struct idmac_channel *ichan = dev_id; | ||
1179 | unsigned int chan_id = ichan->dma_chan.chan_id; | ||
1180 | struct scatterlist **sg, *sgnext, *sgnew = NULL; | ||
1181 | /* Next transfer descriptor */ | ||
1182 | struct idmac_tx_desc *desc = NULL, *descnew; | ||
1183 | dma_async_tx_callback callback; | ||
1184 | void *callback_param; | ||
1185 | bool done = false; | ||
1186 | u32 ready0 = idmac_read_ipureg(&ipu_data, IPU_CHA_BUF0_RDY), | ||
1187 | ready1 = idmac_read_ipureg(&ipu_data, IPU_CHA_BUF1_RDY), | ||
1188 | curbuf = idmac_read_ipureg(&ipu_data, IPU_CHA_CUR_BUF); | ||
1189 | |||
1190 | /* IDMAC has cleared the respective BUFx_RDY bit, we manage the buffer */ | ||
1191 | |||
1192 | pr_debug("IDMAC irq %d\n", irq); | ||
1193 | /* Other interrupts do not interfere with this channel */ | ||
1194 | spin_lock(&ichan->lock); | ||
1195 | |||
1196 | if (unlikely(chan_id != IDMAC_SDC_0 && chan_id != IDMAC_SDC_1 && | ||
1197 | ((curbuf >> chan_id) & 1) == ichan->active_buffer)) { | ||
1198 | int i = 100; | ||
1199 | |||
1200 | /* This doesn't help. See comment in ipu_disable_channel() */ | ||
1201 | while (--i) { | ||
1202 | curbuf = idmac_read_ipureg(&ipu_data, IPU_CHA_CUR_BUF); | ||
1203 | if (((curbuf >> chan_id) & 1) != ichan->active_buffer) | ||
1204 | break; | ||
1205 | cpu_relax(); | ||
1206 | } | ||
1207 | |||
1208 | if (!i) { | ||
1209 | spin_unlock(&ichan->lock); | ||
1210 | dev_dbg(ichan->dma_chan.device->dev, | ||
1211 | "IRQ on active buffer on channel %x, active " | ||
1212 | "%d, ready %x, %x, current %x!\n", chan_id, | ||
1213 | ichan->active_buffer, ready0, ready1, curbuf); | ||
1214 | return IRQ_NONE; | ||
1215 | } | ||
1216 | } | ||
1217 | |||
1218 | if (unlikely((ichan->active_buffer && (ready1 >> chan_id) & 1) || | ||
1219 | (!ichan->active_buffer && (ready0 >> chan_id) & 1) | ||
1220 | )) { | ||
1221 | spin_unlock(&ichan->lock); | ||
1222 | dev_dbg(ichan->dma_chan.device->dev, | ||
1223 | "IRQ with active buffer still ready on channel %x, " | ||
1224 | "active %d, ready %x, %x!\n", chan_id, | ||
1225 | ichan->active_buffer, ready0, ready1); | ||
1226 | return IRQ_NONE; | ||
1227 | } | ||
1228 | |||
1229 | if (unlikely(list_empty(&ichan->queue))) { | ||
1230 | spin_unlock(&ichan->lock); | ||
1231 | dev_err(ichan->dma_chan.device->dev, | ||
1232 | "IRQ without queued buffers on channel %x, active %d, " | ||
1233 | "ready %x, %x!\n", chan_id, | ||
1234 | ichan->active_buffer, ready0, ready1); | ||
1235 | return IRQ_NONE; | ||
1236 | } | ||
1237 | |||
1238 | /* | ||
1239 | * active_buffer is a software flag, it shows which buffer we are | ||
1240 | * currently expecting back from the hardware, IDMAC should be | ||
1241 | * processing the other buffer already | ||
1242 | */ | ||
1243 | sg = &ichan->sg[ichan->active_buffer]; | ||
1244 | sgnext = ichan->sg[!ichan->active_buffer]; | ||
1245 | |||
1246 | /* | ||
1247 | * if sgnext == NULL sg must be the last element in a scatterlist and | ||
1248 | * queue must be empty | ||
1249 | */ | ||
1250 | if (unlikely(!sgnext)) { | ||
1251 | if (unlikely(sg_next(*sg))) { | ||
1252 | dev_err(ichan->dma_chan.device->dev, | ||
1253 | "Broken buffer-update locking on channel %x!\n", | ||
1254 | chan_id); | ||
1255 | /* We'll let the user catch up */ | ||
1256 | } else { | ||
1257 | /* Underrun */ | ||
1258 | ipu_ic_disable_task(&ipu_data, chan_id); | ||
1259 | dev_dbg(ichan->dma_chan.device->dev, | ||
1260 | "Underrun on channel %x\n", chan_id); | ||
1261 | ichan->status = IPU_CHANNEL_READY; | ||
1262 | /* Continue to check for complete descriptor */ | ||
1263 | } | ||
1264 | } | ||
1265 | |||
1266 | desc = list_entry(ichan->queue.next, struct idmac_tx_desc, list); | ||
1267 | |||
1268 | /* First calculate and submit the next sg element */ | ||
1269 | if (likely(sgnext)) | ||
1270 | sgnew = sg_next(sgnext); | ||
1271 | |||
1272 | if (unlikely(!sgnew)) { | ||
1273 | /* Start a new scatterlist, if any queued */ | ||
1274 | if (likely(desc->list.next != &ichan->queue)) { | ||
1275 | descnew = list_entry(desc->list.next, | ||
1276 | struct idmac_tx_desc, list); | ||
1277 | sgnew = &descnew->sg[0]; | ||
1278 | } | ||
1279 | } | ||
1280 | |||
1281 | if (unlikely(!sg_next(*sg)) || !sgnext) { | ||
1282 | /* | ||
1283 | * Last element in scatterlist done, remove from the queue, | ||
1284 | * _init for debugging | ||
1285 | */ | ||
1286 | list_del_init(&desc->list); | ||
1287 | done = true; | ||
1288 | } | ||
1289 | |||
1290 | *sg = sgnew; | ||
1291 | |||
1292 | if (likely(sgnew)) { | ||
1293 | int ret; | ||
1294 | |||
1295 | ret = ipu_update_channel_buffer(chan_id, ichan->active_buffer, | ||
1296 | sg_dma_address(*sg)); | ||
1297 | if (ret < 0) | ||
1298 | dev_err(ichan->dma_chan.device->dev, | ||
1299 | "Failed to update buffer on channel %x buffer %d!\n", | ||
1300 | chan_id, ichan->active_buffer); | ||
1301 | else | ||
1302 | ipu_select_buffer(chan_id, ichan->active_buffer); | ||
1303 | } | ||
1304 | |||
1305 | /* Flip the active buffer - even if update above failed */ | ||
1306 | ichan->active_buffer = !ichan->active_buffer; | ||
1307 | if (done) | ||
1308 | ichan->completed = desc->txd.cookie; | ||
1309 | |||
1310 | callback = desc->txd.callback; | ||
1311 | callback_param = desc->txd.callback_param; | ||
1312 | |||
1313 | spin_unlock(&ichan->lock); | ||
1314 | |||
1315 | if (done && (desc->txd.flags & DMA_PREP_INTERRUPT) && callback) | ||
1316 | callback(callback_param); | ||
1317 | |||
1318 | return IRQ_HANDLED; | ||
1319 | } | ||
1320 | |||
1321 | static void ipu_gc_tasklet(unsigned long arg) | ||
1322 | { | ||
1323 | struct ipu *ipu = (struct ipu *)arg; | ||
1324 | int i; | ||
1325 | |||
1326 | for (i = 0; i < IPU_CHANNELS_NUM; i++) { | ||
1327 | struct idmac_channel *ichan = ipu->channel + i; | ||
1328 | struct idmac_tx_desc *desc; | ||
1329 | unsigned long flags; | ||
1330 | int j; | ||
1331 | |||
1332 | for (j = 0; j < ichan->n_tx_desc; j++) { | ||
1333 | desc = ichan->desc + j; | ||
1334 | spin_lock_irqsave(&ichan->lock, flags); | ||
1335 | if (async_tx_test_ack(&desc->txd)) { | ||
1336 | list_move(&desc->list, &ichan->free_list); | ||
1337 | async_tx_clear_ack(&desc->txd); | ||
1338 | } | ||
1339 | spin_unlock_irqrestore(&ichan->lock, flags); | ||
1340 | } | ||
1341 | } | ||
1342 | } | ||
1343 | |||
1344 | /* | ||
1345 | * At the time .device_alloc_chan_resources() method is called, we cannot know, | ||
1346 | * whether the client will accept the channel. Thus we must only check, if we | ||
1347 | * can satisfy client's request but the only real criterion to verify, whether | ||
1348 | * the client has accepted our offer is the client_count. That's why we have to | ||
1349 | * perform the rest of our allocation tasks on the first call to this function. | ||
1350 | */ | ||
1351 | static struct dma_async_tx_descriptor *idmac_prep_slave_sg(struct dma_chan *chan, | ||
1352 | struct scatterlist *sgl, unsigned int sg_len, | ||
1353 | enum dma_data_direction direction, unsigned long tx_flags) | ||
1354 | { | ||
1355 | struct idmac_channel *ichan = to_idmac_chan(chan); | ||
1356 | struct idmac_tx_desc *desc = NULL; | ||
1357 | struct dma_async_tx_descriptor *txd = NULL; | ||
1358 | unsigned long flags; | ||
1359 | |||
1360 | /* We only can handle these three channels so far */ | ||
1361 | if (ichan->dma_chan.chan_id != IDMAC_SDC_0 && ichan->dma_chan.chan_id != IDMAC_SDC_1 && | ||
1362 | ichan->dma_chan.chan_id != IDMAC_IC_7) | ||
1363 | return NULL; | ||
1364 | |||
1365 | if (direction != DMA_FROM_DEVICE && direction != DMA_TO_DEVICE) { | ||
1366 | dev_err(chan->device->dev, "Invalid DMA direction %d!\n", direction); | ||
1367 | return NULL; | ||
1368 | } | ||
1369 | |||
1370 | mutex_lock(&ichan->chan_mutex); | ||
1371 | |||
1372 | spin_lock_irqsave(&ichan->lock, flags); | ||
1373 | if (!list_empty(&ichan->free_list)) { | ||
1374 | desc = list_entry(ichan->free_list.next, | ||
1375 | struct idmac_tx_desc, list); | ||
1376 | |||
1377 | list_del_init(&desc->list); | ||
1378 | |||
1379 | desc->sg_len = sg_len; | ||
1380 | desc->sg = sgl; | ||
1381 | txd = &desc->txd; | ||
1382 | txd->flags = tx_flags; | ||
1383 | } | ||
1384 | spin_unlock_irqrestore(&ichan->lock, flags); | ||
1385 | |||
1386 | mutex_unlock(&ichan->chan_mutex); | ||
1387 | |||
1388 | tasklet_schedule(&to_ipu(to_idmac(chan->device))->tasklet); | ||
1389 | |||
1390 | return txd; | ||
1391 | } | ||
1392 | |||
1393 | /* Re-select the current buffer and re-activate the channel */ | ||
1394 | static void idmac_issue_pending(struct dma_chan *chan) | ||
1395 | { | ||
1396 | struct idmac_channel *ichan = to_idmac_chan(chan); | ||
1397 | struct idmac *idmac = to_idmac(chan->device); | ||
1398 | struct ipu *ipu = to_ipu(idmac); | ||
1399 | unsigned long flags; | ||
1400 | |||
1401 | /* This is not always needed, but doesn't hurt either */ | ||
1402 | spin_lock_irqsave(&ipu->lock, flags); | ||
1403 | ipu_select_buffer(ichan->dma_chan.chan_id, ichan->active_buffer); | ||
1404 | spin_unlock_irqrestore(&ipu->lock, flags); | ||
1405 | |||
1406 | /* | ||
1407 | * Might need to perform some parts of initialisation from | ||
1408 | * ipu_enable_channel(), but not all, we do not want to reset to buffer | ||
1409 | * 0, don't need to set priority again either, but re-enabling the task | ||
1410 | * and the channel might be a good idea. | ||
1411 | */ | ||
1412 | } | ||
1413 | |||
1414 | static void __idmac_terminate_all(struct dma_chan *chan) | ||
1415 | { | ||
1416 | struct idmac_channel *ichan = to_idmac_chan(chan); | ||
1417 | struct idmac *idmac = to_idmac(chan->device); | ||
1418 | unsigned long flags; | ||
1419 | int i; | ||
1420 | |||
1421 | ipu_disable_channel(idmac, ichan, | ||
1422 | ichan->status >= IPU_CHANNEL_ENABLED); | ||
1423 | |||
1424 | tasklet_disable(&to_ipu(idmac)->tasklet); | ||
1425 | |||
1426 | /* ichan->queue is modified in ISR, have to spinlock */ | ||
1427 | spin_lock_irqsave(&ichan->lock, flags); | ||
1428 | list_splice_init(&ichan->queue, &ichan->free_list); | ||
1429 | |||
1430 | if (ichan->desc) | ||
1431 | for (i = 0; i < ichan->n_tx_desc; i++) { | ||
1432 | struct idmac_tx_desc *desc = ichan->desc + i; | ||
1433 | if (list_empty(&desc->list)) | ||
1434 | /* Descriptor was prepared, but not submitted */ | ||
1435 | list_add(&desc->list, | ||
1436 | &ichan->free_list); | ||
1437 | |||
1438 | async_tx_clear_ack(&desc->txd); | ||
1439 | } | ||
1440 | |||
1441 | ichan->sg[0] = NULL; | ||
1442 | ichan->sg[1] = NULL; | ||
1443 | spin_unlock_irqrestore(&ichan->lock, flags); | ||
1444 | |||
1445 | tasklet_enable(&to_ipu(idmac)->tasklet); | ||
1446 | |||
1447 | ichan->status = IPU_CHANNEL_INITIALIZED; | ||
1448 | } | ||
1449 | |||
1450 | static void idmac_terminate_all(struct dma_chan *chan) | ||
1451 | { | ||
1452 | struct idmac_channel *ichan = to_idmac_chan(chan); | ||
1453 | |||
1454 | mutex_lock(&ichan->chan_mutex); | ||
1455 | |||
1456 | __idmac_terminate_all(chan); | ||
1457 | |||
1458 | mutex_unlock(&ichan->chan_mutex); | ||
1459 | } | ||
1460 | |||
1461 | static int idmac_alloc_chan_resources(struct dma_chan *chan) | ||
1462 | { | ||
1463 | struct idmac_channel *ichan = to_idmac_chan(chan); | ||
1464 | struct idmac *idmac = to_idmac(chan->device); | ||
1465 | int ret; | ||
1466 | |||
1467 | /* dmaengine.c now guarantees to only offer free channels */ | ||
1468 | BUG_ON(chan->client_count > 1); | ||
1469 | WARN_ON(ichan->status != IPU_CHANNEL_FREE); | ||
1470 | |||
1471 | chan->cookie = 1; | ||
1472 | ichan->completed = -ENXIO; | ||
1473 | |||
1474 | ret = ipu_irq_map(ichan->dma_chan.chan_id); | ||
1475 | if (ret < 0) | ||
1476 | goto eimap; | ||
1477 | |||
1478 | ichan->eof_irq = ret; | ||
1479 | ret = request_irq(ichan->eof_irq, idmac_interrupt, 0, | ||
1480 | ichan->eof_name, ichan); | ||
1481 | if (ret < 0) | ||
1482 | goto erirq; | ||
1483 | |||
1484 | ret = ipu_init_channel(idmac, ichan); | ||
1485 | if (ret < 0) | ||
1486 | goto eichan; | ||
1487 | |||
1488 | ichan->status = IPU_CHANNEL_INITIALIZED; | ||
1489 | |||
1490 | dev_dbg(&ichan->dma_chan.dev->device, "Found channel 0x%x, irq %d\n", | ||
1491 | ichan->dma_chan.chan_id, ichan->eof_irq); | ||
1492 | |||
1493 | return ret; | ||
1494 | |||
1495 | eichan: | ||
1496 | free_irq(ichan->eof_irq, ichan); | ||
1497 | erirq: | ||
1498 | ipu_irq_unmap(ichan->dma_chan.chan_id); | ||
1499 | eimap: | ||
1500 | return ret; | ||
1501 | } | ||
1502 | |||
1503 | static void idmac_free_chan_resources(struct dma_chan *chan) | ||
1504 | { | ||
1505 | struct idmac_channel *ichan = to_idmac_chan(chan); | ||
1506 | struct idmac *idmac = to_idmac(chan->device); | ||
1507 | |||
1508 | mutex_lock(&ichan->chan_mutex); | ||
1509 | |||
1510 | __idmac_terminate_all(chan); | ||
1511 | |||
1512 | if (ichan->status > IPU_CHANNEL_FREE) { | ||
1513 | free_irq(ichan->eof_irq, ichan); | ||
1514 | ipu_irq_unmap(ichan->dma_chan.chan_id); | ||
1515 | } | ||
1516 | |||
1517 | ichan->status = IPU_CHANNEL_FREE; | ||
1518 | |||
1519 | ipu_uninit_channel(idmac, ichan); | ||
1520 | |||
1521 | mutex_unlock(&ichan->chan_mutex); | ||
1522 | |||
1523 | tasklet_schedule(&to_ipu(idmac)->tasklet); | ||
1524 | } | ||
1525 | |||
1526 | static enum dma_status idmac_is_tx_complete(struct dma_chan *chan, | ||
1527 | dma_cookie_t cookie, dma_cookie_t *done, dma_cookie_t *used) | ||
1528 | { | ||
1529 | struct idmac_channel *ichan = to_idmac_chan(chan); | ||
1530 | |||
1531 | if (done) | ||
1532 | *done = ichan->completed; | ||
1533 | if (used) | ||
1534 | *used = chan->cookie; | ||
1535 | if (cookie != chan->cookie) | ||
1536 | return DMA_ERROR; | ||
1537 | return DMA_SUCCESS; | ||
1538 | } | ||
1539 | |||
1540 | static int __init ipu_idmac_init(struct ipu *ipu) | ||
1541 | { | ||
1542 | struct idmac *idmac = &ipu->idmac; | ||
1543 | struct dma_device *dma = &idmac->dma; | ||
1544 | int i; | ||
1545 | |||
1546 | dma_cap_set(DMA_SLAVE, dma->cap_mask); | ||
1547 | dma_cap_set(DMA_PRIVATE, dma->cap_mask); | ||
1548 | |||
1549 | /* Compulsory common fields */ | ||
1550 | dma->dev = ipu->dev; | ||
1551 | dma->device_alloc_chan_resources = idmac_alloc_chan_resources; | ||
1552 | dma->device_free_chan_resources = idmac_free_chan_resources; | ||
1553 | dma->device_is_tx_complete = idmac_is_tx_complete; | ||
1554 | dma->device_issue_pending = idmac_issue_pending; | ||
1555 | |||
1556 | /* Compulsory for DMA_SLAVE fields */ | ||
1557 | dma->device_prep_slave_sg = idmac_prep_slave_sg; | ||
1558 | dma->device_terminate_all = idmac_terminate_all; | ||
1559 | |||
1560 | INIT_LIST_HEAD(&dma->channels); | ||
1561 | for (i = 0; i < IPU_CHANNELS_NUM; i++) { | ||
1562 | struct idmac_channel *ichan = ipu->channel + i; | ||
1563 | struct dma_chan *dma_chan = &ichan->dma_chan; | ||
1564 | |||
1565 | spin_lock_init(&ichan->lock); | ||
1566 | mutex_init(&ichan->chan_mutex); | ||
1567 | |||
1568 | ichan->status = IPU_CHANNEL_FREE; | ||
1569 | ichan->sec_chan_en = false; | ||
1570 | ichan->completed = -ENXIO; | ||
1571 | snprintf(ichan->eof_name, sizeof(ichan->eof_name), "IDMAC EOF %d", i); | ||
1572 | |||
1573 | dma_chan->device = &idmac->dma; | ||
1574 | dma_chan->cookie = 1; | ||
1575 | dma_chan->chan_id = i; | ||
1576 | list_add_tail(&ichan->dma_chan.device_node, &dma->channels); | ||
1577 | } | ||
1578 | |||
1579 | idmac_write_icreg(ipu, 0x00000070, IDMAC_CONF); | ||
1580 | |||
1581 | return dma_async_device_register(&idmac->dma); | ||
1582 | } | ||
1583 | |||
1584 | static void ipu_idmac_exit(struct ipu *ipu) | ||
1585 | { | ||
1586 | int i; | ||
1587 | struct idmac *idmac = &ipu->idmac; | ||
1588 | |||
1589 | for (i = 0; i < IPU_CHANNELS_NUM; i++) { | ||
1590 | struct idmac_channel *ichan = ipu->channel + i; | ||
1591 | |||
1592 | idmac_terminate_all(&ichan->dma_chan); | ||
1593 | idmac_prep_slave_sg(&ichan->dma_chan, NULL, 0, DMA_NONE, 0); | ||
1594 | } | ||
1595 | |||
1596 | dma_async_device_unregister(&idmac->dma); | ||
1597 | } | ||
1598 | |||
1599 | /***************************************************************************** | ||
1600 | * IPU common probe / remove | ||
1601 | */ | ||
1602 | |||
1603 | static int ipu_probe(struct platform_device *pdev) | ||
1604 | { | ||
1605 | struct ipu_platform_data *pdata = pdev->dev.platform_data; | ||
1606 | struct resource *mem_ipu, *mem_ic; | ||
1607 | int ret; | ||
1608 | |||
1609 | spin_lock_init(&ipu_data.lock); | ||
1610 | |||
1611 | mem_ipu = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
1612 | mem_ic = platform_get_resource(pdev, IORESOURCE_MEM, 1); | ||
1613 | if (!pdata || !mem_ipu || !mem_ic) | ||
1614 | return -EINVAL; | ||
1615 | |||
1616 | ipu_data.dev = &pdev->dev; | ||
1617 | |||
1618 | platform_set_drvdata(pdev, &ipu_data); | ||
1619 | |||
1620 | ret = platform_get_irq(pdev, 0); | ||
1621 | if (ret < 0) | ||
1622 | goto err_noirq; | ||
1623 | |||
1624 | ipu_data.irq_fn = ret; | ||
1625 | ret = platform_get_irq(pdev, 1); | ||
1626 | if (ret < 0) | ||
1627 | goto err_noirq; | ||
1628 | |||
1629 | ipu_data.irq_err = ret; | ||
1630 | ipu_data.irq_base = pdata->irq_base; | ||
1631 | |||
1632 | dev_dbg(&pdev->dev, "fn irq %u, err irq %u, irq-base %u\n", | ||
1633 | ipu_data.irq_fn, ipu_data.irq_err, ipu_data.irq_base); | ||
1634 | |||
1635 | /* Remap IPU common registers */ | ||
1636 | ipu_data.reg_ipu = ioremap(mem_ipu->start, | ||
1637 | mem_ipu->end - mem_ipu->start + 1); | ||
1638 | if (!ipu_data.reg_ipu) { | ||
1639 | ret = -ENOMEM; | ||
1640 | goto err_ioremap_ipu; | ||
1641 | } | ||
1642 | |||
1643 | /* Remap Image Converter and Image DMA Controller registers */ | ||
1644 | ipu_data.reg_ic = ioremap(mem_ic->start, | ||
1645 | mem_ic->end - mem_ic->start + 1); | ||
1646 | if (!ipu_data.reg_ic) { | ||
1647 | ret = -ENOMEM; | ||
1648 | goto err_ioremap_ic; | ||
1649 | } | ||
1650 | |||
1651 | /* Get IPU clock */ | ||
1652 | ipu_data.ipu_clk = clk_get(&pdev->dev, "ipu_clk"); | ||
1653 | if (IS_ERR(ipu_data.ipu_clk)) { | ||
1654 | ret = PTR_ERR(ipu_data.ipu_clk); | ||
1655 | goto err_clk_get; | ||
1656 | } | ||
1657 | |||
1658 | /* Make sure IPU HSP clock is running */ | ||
1659 | clk_enable(ipu_data.ipu_clk); | ||
1660 | |||
1661 | /* Disable all interrupts */ | ||
1662 | idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_1); | ||
1663 | idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_2); | ||
1664 | idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_3); | ||
1665 | idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_4); | ||
1666 | idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_5); | ||
1667 | |||
1668 | dev_dbg(&pdev->dev, "%s @ 0x%08lx, fn irq %u, err irq %u\n", pdev->name, | ||
1669 | (unsigned long)mem_ipu->start, ipu_data.irq_fn, ipu_data.irq_err); | ||
1670 | |||
1671 | ret = ipu_irq_attach_irq(&ipu_data, pdev); | ||
1672 | if (ret < 0) | ||
1673 | goto err_attach_irq; | ||
1674 | |||
1675 | /* Initialize DMA engine */ | ||
1676 | ret = ipu_idmac_init(&ipu_data); | ||
1677 | if (ret < 0) | ||
1678 | goto err_idmac_init; | ||
1679 | |||
1680 | tasklet_init(&ipu_data.tasklet, ipu_gc_tasklet, (unsigned long)&ipu_data); | ||
1681 | |||
1682 | ipu_data.dev = &pdev->dev; | ||
1683 | |||
1684 | dev_dbg(ipu_data.dev, "IPU initialized\n"); | ||
1685 | |||
1686 | return 0; | ||
1687 | |||
1688 | err_idmac_init: | ||
1689 | err_attach_irq: | ||
1690 | ipu_irq_detach_irq(&ipu_data, pdev); | ||
1691 | clk_disable(ipu_data.ipu_clk); | ||
1692 | clk_put(ipu_data.ipu_clk); | ||
1693 | err_clk_get: | ||
1694 | iounmap(ipu_data.reg_ic); | ||
1695 | err_ioremap_ic: | ||
1696 | iounmap(ipu_data.reg_ipu); | ||
1697 | err_ioremap_ipu: | ||
1698 | err_noirq: | ||
1699 | dev_err(&pdev->dev, "Failed to probe IPU: %d\n", ret); | ||
1700 | return ret; | ||
1701 | } | ||
1702 | |||
1703 | static int ipu_remove(struct platform_device *pdev) | ||
1704 | { | ||
1705 | struct ipu *ipu = platform_get_drvdata(pdev); | ||
1706 | |||
1707 | ipu_idmac_exit(ipu); | ||
1708 | ipu_irq_detach_irq(ipu, pdev); | ||
1709 | clk_disable(ipu->ipu_clk); | ||
1710 | clk_put(ipu->ipu_clk); | ||
1711 | iounmap(ipu->reg_ic); | ||
1712 | iounmap(ipu->reg_ipu); | ||
1713 | tasklet_kill(&ipu->tasklet); | ||
1714 | platform_set_drvdata(pdev, NULL); | ||
1715 | |||
1716 | return 0; | ||
1717 | } | ||
1718 | |||
1719 | /* | ||
1720 | * We need two MEM resources - with IPU-common and Image Converter registers, | ||
1721 | * including PF_CONF and IDMAC_* registers, and two IRQs - function and error | ||
1722 | */ | ||
1723 | static struct platform_driver ipu_platform_driver = { | ||
1724 | .driver = { | ||
1725 | .name = "ipu-core", | ||
1726 | .owner = THIS_MODULE, | ||
1727 | }, | ||
1728 | .remove = ipu_remove, | ||
1729 | }; | ||
1730 | |||
1731 | static int __init ipu_init(void) | ||
1732 | { | ||
1733 | return platform_driver_probe(&ipu_platform_driver, ipu_probe); | ||
1734 | } | ||
1735 | subsys_initcall(ipu_init); | ||
1736 | |||
1737 | MODULE_DESCRIPTION("IPU core driver"); | ||
1738 | MODULE_LICENSE("GPL v2"); | ||
1739 | MODULE_AUTHOR("Guennadi Liakhovetski <lg@denx.de>"); | ||
1740 | MODULE_ALIAS("platform:ipu-core"); | ||
diff --git a/drivers/dma/ipu/ipu_intern.h b/drivers/dma/ipu/ipu_intern.h new file mode 100644 index 000000000000..545cf11a94ab --- /dev/null +++ b/drivers/dma/ipu/ipu_intern.h | |||
@@ -0,0 +1,176 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * Copyright (C) 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #ifndef _IPU_INTERN_H_ | ||
13 | #define _IPU_INTERN_H_ | ||
14 | |||
15 | #include <linux/dmaengine.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/interrupt.h> | ||
18 | |||
19 | /* IPU Common registers */ | ||
20 | #define IPU_CONF 0x00 | ||
21 | #define IPU_CHA_BUF0_RDY 0x04 | ||
22 | #define IPU_CHA_BUF1_RDY 0x08 | ||
23 | #define IPU_CHA_DB_MODE_SEL 0x0C | ||
24 | #define IPU_CHA_CUR_BUF 0x10 | ||
25 | #define IPU_FS_PROC_FLOW 0x14 | ||
26 | #define IPU_FS_DISP_FLOW 0x18 | ||
27 | #define IPU_TASKS_STAT 0x1C | ||
28 | #define IPU_IMA_ADDR 0x20 | ||
29 | #define IPU_IMA_DATA 0x24 | ||
30 | #define IPU_INT_CTRL_1 0x28 | ||
31 | #define IPU_INT_CTRL_2 0x2C | ||
32 | #define IPU_INT_CTRL_3 0x30 | ||
33 | #define IPU_INT_CTRL_4 0x34 | ||
34 | #define IPU_INT_CTRL_5 0x38 | ||
35 | #define IPU_INT_STAT_1 0x3C | ||
36 | #define IPU_INT_STAT_2 0x40 | ||
37 | #define IPU_INT_STAT_3 0x44 | ||
38 | #define IPU_INT_STAT_4 0x48 | ||
39 | #define IPU_INT_STAT_5 0x4C | ||
40 | #define IPU_BRK_CTRL_1 0x50 | ||
41 | #define IPU_BRK_CTRL_2 0x54 | ||
42 | #define IPU_BRK_STAT 0x58 | ||
43 | #define IPU_DIAGB_CTRL 0x5C | ||
44 | |||
45 | /* IPU_CONF Register bits */ | ||
46 | #define IPU_CONF_CSI_EN 0x00000001 | ||
47 | #define IPU_CONF_IC_EN 0x00000002 | ||
48 | #define IPU_CONF_ROT_EN 0x00000004 | ||
49 | #define IPU_CONF_PF_EN 0x00000008 | ||
50 | #define IPU_CONF_SDC_EN 0x00000010 | ||
51 | #define IPU_CONF_ADC_EN 0x00000020 | ||
52 | #define IPU_CONF_DI_EN 0x00000040 | ||
53 | #define IPU_CONF_DU_EN 0x00000080 | ||
54 | #define IPU_CONF_PXL_ENDIAN 0x00000100 | ||
55 | |||
56 | /* Image Converter Registers */ | ||
57 | #define IC_CONF 0x88 | ||
58 | #define IC_PRP_ENC_RSC 0x8C | ||
59 | #define IC_PRP_VF_RSC 0x90 | ||
60 | #define IC_PP_RSC 0x94 | ||
61 | #define IC_CMBP_1 0x98 | ||
62 | #define IC_CMBP_2 0x9C | ||
63 | #define PF_CONF 0xA0 | ||
64 | #define IDMAC_CONF 0xA4 | ||
65 | #define IDMAC_CHA_EN 0xA8 | ||
66 | #define IDMAC_CHA_PRI 0xAC | ||
67 | #define IDMAC_CHA_BUSY 0xB0 | ||
68 | |||
69 | /* Image Converter Register bits */ | ||
70 | #define IC_CONF_PRPENC_EN 0x00000001 | ||
71 | #define IC_CONF_PRPENC_CSC1 0x00000002 | ||
72 | #define IC_CONF_PRPENC_ROT_EN 0x00000004 | ||
73 | #define IC_CONF_PRPVF_EN 0x00000100 | ||
74 | #define IC_CONF_PRPVF_CSC1 0x00000200 | ||
75 | #define IC_CONF_PRPVF_CSC2 0x00000400 | ||
76 | #define IC_CONF_PRPVF_CMB 0x00000800 | ||
77 | #define IC_CONF_PRPVF_ROT_EN 0x00001000 | ||
78 | #define IC_CONF_PP_EN 0x00010000 | ||
79 | #define IC_CONF_PP_CSC1 0x00020000 | ||
80 | #define IC_CONF_PP_CSC2 0x00040000 | ||
81 | #define IC_CONF_PP_CMB 0x00080000 | ||
82 | #define IC_CONF_PP_ROT_EN 0x00100000 | ||
83 | #define IC_CONF_IC_GLB_LOC_A 0x10000000 | ||
84 | #define IC_CONF_KEY_COLOR_EN 0x20000000 | ||
85 | #define IC_CONF_RWS_EN 0x40000000 | ||
86 | #define IC_CONF_CSI_MEM_WR_EN 0x80000000 | ||
87 | |||
88 | #define IDMA_CHAN_INVALID 0x000000FF | ||
89 | #define IDMA_IC_0 0x00000001 | ||
90 | #define IDMA_IC_1 0x00000002 | ||
91 | #define IDMA_IC_2 0x00000004 | ||
92 | #define IDMA_IC_3 0x00000008 | ||
93 | #define IDMA_IC_4 0x00000010 | ||
94 | #define IDMA_IC_5 0x00000020 | ||
95 | #define IDMA_IC_6 0x00000040 | ||
96 | #define IDMA_IC_7 0x00000080 | ||
97 | #define IDMA_IC_8 0x00000100 | ||
98 | #define IDMA_IC_9 0x00000200 | ||
99 | #define IDMA_IC_10 0x00000400 | ||
100 | #define IDMA_IC_11 0x00000800 | ||
101 | #define IDMA_IC_12 0x00001000 | ||
102 | #define IDMA_IC_13 0x00002000 | ||
103 | #define IDMA_SDC_BG 0x00004000 | ||
104 | #define IDMA_SDC_FG 0x00008000 | ||
105 | #define IDMA_SDC_MASK 0x00010000 | ||
106 | #define IDMA_SDC_PARTIAL 0x00020000 | ||
107 | #define IDMA_ADC_SYS1_WR 0x00040000 | ||
108 | #define IDMA_ADC_SYS2_WR 0x00080000 | ||
109 | #define IDMA_ADC_SYS1_CMD 0x00100000 | ||
110 | #define IDMA_ADC_SYS2_CMD 0x00200000 | ||
111 | #define IDMA_ADC_SYS1_RD 0x00400000 | ||
112 | #define IDMA_ADC_SYS2_RD 0x00800000 | ||
113 | #define IDMA_PF_QP 0x01000000 | ||
114 | #define IDMA_PF_BSP 0x02000000 | ||
115 | #define IDMA_PF_Y_IN 0x04000000 | ||
116 | #define IDMA_PF_U_IN 0x08000000 | ||
117 | #define IDMA_PF_V_IN 0x10000000 | ||
118 | #define IDMA_PF_Y_OUT 0x20000000 | ||
119 | #define IDMA_PF_U_OUT 0x40000000 | ||
120 | #define IDMA_PF_V_OUT 0x80000000 | ||
121 | |||
122 | #define TSTAT_PF_H264_PAUSE 0x00000001 | ||
123 | #define TSTAT_CSI2MEM_MASK 0x0000000C | ||
124 | #define TSTAT_CSI2MEM_OFFSET 2 | ||
125 | #define TSTAT_VF_MASK 0x00000600 | ||
126 | #define TSTAT_VF_OFFSET 9 | ||
127 | #define TSTAT_VF_ROT_MASK 0x000C0000 | ||
128 | #define TSTAT_VF_ROT_OFFSET 18 | ||
129 | #define TSTAT_ENC_MASK 0x00000180 | ||
130 | #define TSTAT_ENC_OFFSET 7 | ||
131 | #define TSTAT_ENC_ROT_MASK 0x00030000 | ||
132 | #define TSTAT_ENC_ROT_OFFSET 16 | ||
133 | #define TSTAT_PP_MASK 0x00001800 | ||
134 | #define TSTAT_PP_OFFSET 11 | ||
135 | #define TSTAT_PP_ROT_MASK 0x00300000 | ||
136 | #define TSTAT_PP_ROT_OFFSET 20 | ||
137 | #define TSTAT_PF_MASK 0x00C00000 | ||
138 | #define TSTAT_PF_OFFSET 22 | ||
139 | #define TSTAT_ADCSYS1_MASK 0x03000000 | ||
140 | #define TSTAT_ADCSYS1_OFFSET 24 | ||
141 | #define TSTAT_ADCSYS2_MASK 0x0C000000 | ||
142 | #define TSTAT_ADCSYS2_OFFSET 26 | ||
143 | |||
144 | #define TASK_STAT_IDLE 0 | ||
145 | #define TASK_STAT_ACTIVE 1 | ||
146 | #define TASK_STAT_WAIT4READY 2 | ||
147 | |||
148 | struct idmac { | ||
149 | struct dma_device dma; | ||
150 | }; | ||
151 | |||
152 | struct ipu { | ||
153 | void __iomem *reg_ipu; | ||
154 | void __iomem *reg_ic; | ||
155 | unsigned int irq_fn; /* IPU Function IRQ to the CPU */ | ||
156 | unsigned int irq_err; /* IPU Error IRQ to the CPU */ | ||
157 | unsigned int irq_base; /* Beginning of the IPU IRQ range */ | ||
158 | unsigned long channel_init_mask; | ||
159 | spinlock_t lock; | ||
160 | struct clk *ipu_clk; | ||
161 | struct device *dev; | ||
162 | struct idmac idmac; | ||
163 | struct idmac_channel channel[IPU_CHANNELS_NUM]; | ||
164 | struct tasklet_struct tasklet; | ||
165 | }; | ||
166 | |||
167 | #define to_idmac(d) container_of(d, struct idmac, dma) | ||
168 | |||
169 | extern int ipu_irq_attach_irq(struct ipu *ipu, struct platform_device *dev); | ||
170 | extern void ipu_irq_detach_irq(struct ipu *ipu, struct platform_device *dev); | ||
171 | |||
172 | extern bool ipu_irq_status(uint32_t irq); | ||
173 | extern int ipu_irq_map(unsigned int source); | ||
174 | extern int ipu_irq_unmap(unsigned int source); | ||
175 | |||
176 | #endif | ||
diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c new file mode 100644 index 000000000000..83f532cc767f --- /dev/null +++ b/drivers/dma/ipu/ipu_irq.c | |||
@@ -0,0 +1,413 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | |||
10 | #include <linux/init.h> | ||
11 | #include <linux/err.h> | ||
12 | #include <linux/spinlock.h> | ||
13 | #include <linux/delay.h> | ||
14 | #include <linux/clk.h> | ||
15 | #include <linux/irq.h> | ||
16 | #include <linux/io.h> | ||
17 | |||
18 | #include <mach/ipu.h> | ||
19 | |||
20 | #include "ipu_intern.h" | ||
21 | |||
22 | /* | ||
23 | * Register read / write - shall be inlined by the compiler | ||
24 | */ | ||
25 | static u32 ipu_read_reg(struct ipu *ipu, unsigned long reg) | ||
26 | { | ||
27 | return __raw_readl(ipu->reg_ipu + reg); | ||
28 | } | ||
29 | |||
30 | static void ipu_write_reg(struct ipu *ipu, u32 value, unsigned long reg) | ||
31 | { | ||
32 | __raw_writel(value, ipu->reg_ipu + reg); | ||
33 | } | ||
34 | |||
35 | |||
36 | /* | ||
37 | * IPU IRQ chip driver | ||
38 | */ | ||
39 | |||
40 | #define IPU_IRQ_NR_FN_BANKS 3 | ||
41 | #define IPU_IRQ_NR_ERR_BANKS 2 | ||
42 | #define IPU_IRQ_NR_BANKS (IPU_IRQ_NR_FN_BANKS + IPU_IRQ_NR_ERR_BANKS) | ||
43 | |||
44 | struct ipu_irq_bank { | ||
45 | unsigned int control; | ||
46 | unsigned int status; | ||
47 | spinlock_t lock; | ||
48 | struct ipu *ipu; | ||
49 | }; | ||
50 | |||
51 | static struct ipu_irq_bank irq_bank[IPU_IRQ_NR_BANKS] = { | ||
52 | /* 3 groups of functional interrupts */ | ||
53 | { | ||
54 | .control = IPU_INT_CTRL_1, | ||
55 | .status = IPU_INT_STAT_1, | ||
56 | }, { | ||
57 | .control = IPU_INT_CTRL_2, | ||
58 | .status = IPU_INT_STAT_2, | ||
59 | }, { | ||
60 | .control = IPU_INT_CTRL_3, | ||
61 | .status = IPU_INT_STAT_3, | ||
62 | }, | ||
63 | /* 2 groups of error interrupts */ | ||
64 | { | ||
65 | .control = IPU_INT_CTRL_4, | ||
66 | .status = IPU_INT_STAT_4, | ||
67 | }, { | ||
68 | .control = IPU_INT_CTRL_5, | ||
69 | .status = IPU_INT_STAT_5, | ||
70 | }, | ||
71 | }; | ||
72 | |||
73 | struct ipu_irq_map { | ||
74 | unsigned int irq; | ||
75 | int source; | ||
76 | struct ipu_irq_bank *bank; | ||
77 | struct ipu *ipu; | ||
78 | }; | ||
79 | |||
80 | static struct ipu_irq_map irq_map[CONFIG_MX3_IPU_IRQS]; | ||
81 | /* Protects allocations from the above array of maps */ | ||
82 | static DEFINE_MUTEX(map_lock); | ||
83 | /* Protects register accesses and individual mappings */ | ||
84 | static DEFINE_SPINLOCK(bank_lock); | ||
85 | |||
86 | static struct ipu_irq_map *src2map(unsigned int src) | ||
87 | { | ||
88 | int i; | ||
89 | |||
90 | for (i = 0; i < CONFIG_MX3_IPU_IRQS; i++) | ||
91 | if (irq_map[i].source == src) | ||
92 | return irq_map + i; | ||
93 | |||
94 | return NULL; | ||
95 | } | ||
96 | |||
97 | static void ipu_irq_unmask(unsigned int irq) | ||
98 | { | ||
99 | struct ipu_irq_map *map = get_irq_chip_data(irq); | ||
100 | struct ipu_irq_bank *bank; | ||
101 | uint32_t reg; | ||
102 | unsigned long lock_flags; | ||
103 | |||
104 | spin_lock_irqsave(&bank_lock, lock_flags); | ||
105 | |||
106 | bank = map->bank; | ||
107 | if (!bank) { | ||
108 | spin_unlock_irqrestore(&bank_lock, lock_flags); | ||
109 | pr_err("IPU: %s(%u) - unmapped!\n", __func__, irq); | ||
110 | return; | ||
111 | } | ||
112 | |||
113 | reg = ipu_read_reg(bank->ipu, bank->control); | ||
114 | reg |= (1UL << (map->source & 31)); | ||
115 | ipu_write_reg(bank->ipu, reg, bank->control); | ||
116 | |||
117 | spin_unlock_irqrestore(&bank_lock, lock_flags); | ||
118 | } | ||
119 | |||
120 | static void ipu_irq_mask(unsigned int irq) | ||
121 | { | ||
122 | struct ipu_irq_map *map = get_irq_chip_data(irq); | ||
123 | struct ipu_irq_bank *bank; | ||
124 | uint32_t reg; | ||
125 | unsigned long lock_flags; | ||
126 | |||
127 | spin_lock_irqsave(&bank_lock, lock_flags); | ||
128 | |||
129 | bank = map->bank; | ||
130 | if (!bank) { | ||
131 | spin_unlock_irqrestore(&bank_lock, lock_flags); | ||
132 | pr_err("IPU: %s(%u) - unmapped!\n", __func__, irq); | ||
133 | return; | ||
134 | } | ||
135 | |||
136 | reg = ipu_read_reg(bank->ipu, bank->control); | ||
137 | reg &= ~(1UL << (map->source & 31)); | ||
138 | ipu_write_reg(bank->ipu, reg, bank->control); | ||
139 | |||
140 | spin_unlock_irqrestore(&bank_lock, lock_flags); | ||
141 | } | ||
142 | |||
143 | static void ipu_irq_ack(unsigned int irq) | ||
144 | { | ||
145 | struct ipu_irq_map *map = get_irq_chip_data(irq); | ||
146 | struct ipu_irq_bank *bank; | ||
147 | unsigned long lock_flags; | ||
148 | |||
149 | spin_lock_irqsave(&bank_lock, lock_flags); | ||
150 | |||
151 | bank = map->bank; | ||
152 | if (!bank) { | ||
153 | spin_unlock_irqrestore(&bank_lock, lock_flags); | ||
154 | pr_err("IPU: %s(%u) - unmapped!\n", __func__, irq); | ||
155 | return; | ||
156 | } | ||
157 | |||
158 | ipu_write_reg(bank->ipu, 1UL << (map->source & 31), bank->status); | ||
159 | spin_unlock_irqrestore(&bank_lock, lock_flags); | ||
160 | } | ||
161 | |||
162 | /** | ||
163 | * ipu_irq_status() - returns the current interrupt status of the specified IRQ. | ||
164 | * @irq: interrupt line to get status for. | ||
165 | * @return: true if the interrupt is pending/asserted or false if the | ||
166 | * interrupt is not pending. | ||
167 | */ | ||
168 | bool ipu_irq_status(unsigned int irq) | ||
169 | { | ||
170 | struct ipu_irq_map *map = get_irq_chip_data(irq); | ||
171 | struct ipu_irq_bank *bank; | ||
172 | unsigned long lock_flags; | ||
173 | bool ret; | ||
174 | |||
175 | spin_lock_irqsave(&bank_lock, lock_flags); | ||
176 | bank = map->bank; | ||
177 | ret = bank && ipu_read_reg(bank->ipu, bank->status) & | ||
178 | (1UL << (map->source & 31)); | ||
179 | spin_unlock_irqrestore(&bank_lock, lock_flags); | ||
180 | |||
181 | return ret; | ||
182 | } | ||
183 | |||
184 | /** | ||
185 | * ipu_irq_map() - map an IPU interrupt source to an IRQ number | ||
186 | * @source: interrupt source bit position (see below) | ||
187 | * @return: mapped IRQ number or negative error code | ||
188 | * | ||
189 | * The source parameter has to be explained further. On i.MX31 IPU has 137 IRQ | ||
190 | * sources, they are broken down in 5 32-bit registers, like 32, 32, 24, 32, 17. | ||
191 | * However, the source argument of this function is not the sequence number of | ||
192 | * the possible IRQ, but rather its bit position. So, first interrupt in fourth | ||
193 | * register has source number 96, and not 88. This makes calculations easier, | ||
194 | * and also provides forward compatibility with any future IPU implementations | ||
195 | * with any interrupt bit assignments. | ||
196 | */ | ||
197 | int ipu_irq_map(unsigned int source) | ||
198 | { | ||
199 | int i, ret = -ENOMEM; | ||
200 | struct ipu_irq_map *map; | ||
201 | |||
202 | might_sleep(); | ||
203 | |||
204 | mutex_lock(&map_lock); | ||
205 | map = src2map(source); | ||
206 | if (map) { | ||
207 | pr_err("IPU: Source %u already mapped to IRQ %u\n", source, map->irq); | ||
208 | ret = -EBUSY; | ||
209 | goto out; | ||
210 | } | ||
211 | |||
212 | for (i = 0; i < CONFIG_MX3_IPU_IRQS; i++) { | ||
213 | if (irq_map[i].source < 0) { | ||
214 | unsigned long lock_flags; | ||
215 | |||
216 | spin_lock_irqsave(&bank_lock, lock_flags); | ||
217 | irq_map[i].source = source; | ||
218 | irq_map[i].bank = irq_bank + source / 32; | ||
219 | spin_unlock_irqrestore(&bank_lock, lock_flags); | ||
220 | |||
221 | ret = irq_map[i].irq; | ||
222 | pr_debug("IPU: mapped source %u to IRQ %u\n", | ||
223 | source, ret); | ||
224 | break; | ||
225 | } | ||
226 | } | ||
227 | out: | ||
228 | mutex_unlock(&map_lock); | ||
229 | |||
230 | if (ret < 0) | ||
231 | pr_err("IPU: couldn't map source %u: %d\n", source, ret); | ||
232 | |||
233 | return ret; | ||
234 | } | ||
235 | |||
236 | /** | ||
237 | * ipu_irq_map() - map an IPU interrupt source to an IRQ number | ||
238 | * @source: interrupt source bit position (see ipu_irq_map()) | ||
239 | * @return: 0 or negative error code | ||
240 | */ | ||
241 | int ipu_irq_unmap(unsigned int source) | ||
242 | { | ||
243 | int i, ret = -EINVAL; | ||
244 | |||
245 | might_sleep(); | ||
246 | |||
247 | mutex_lock(&map_lock); | ||
248 | for (i = 0; i < CONFIG_MX3_IPU_IRQS; i++) { | ||
249 | if (irq_map[i].source == source) { | ||
250 | unsigned long lock_flags; | ||
251 | |||
252 | pr_debug("IPU: unmapped source %u from IRQ %u\n", | ||
253 | source, irq_map[i].irq); | ||
254 | |||
255 | spin_lock_irqsave(&bank_lock, lock_flags); | ||
256 | irq_map[i].source = -EINVAL; | ||
257 | irq_map[i].bank = NULL; | ||
258 | spin_unlock_irqrestore(&bank_lock, lock_flags); | ||
259 | |||
260 | ret = 0; | ||
261 | break; | ||
262 | } | ||
263 | } | ||
264 | mutex_unlock(&map_lock); | ||
265 | |||
266 | return ret; | ||
267 | } | ||
268 | |||
269 | /* Chained IRQ handler for IPU error interrupt */ | ||
270 | static void ipu_irq_err(unsigned int irq, struct irq_desc *desc) | ||
271 | { | ||
272 | struct ipu *ipu = get_irq_data(irq); | ||
273 | u32 status; | ||
274 | int i, line; | ||
275 | |||
276 | for (i = IPU_IRQ_NR_FN_BANKS; i < IPU_IRQ_NR_BANKS; i++) { | ||
277 | struct ipu_irq_bank *bank = irq_bank + i; | ||
278 | |||
279 | spin_lock(&bank_lock); | ||
280 | status = ipu_read_reg(ipu, bank->status); | ||
281 | /* | ||
282 | * Don't think we have to clear all interrupts here, they will | ||
283 | * be acked by ->handle_irq() (handle_level_irq). However, we | ||
284 | * might want to clear unhandled interrupts after the loop... | ||
285 | */ | ||
286 | status &= ipu_read_reg(ipu, bank->control); | ||
287 | spin_unlock(&bank_lock); | ||
288 | while ((line = ffs(status))) { | ||
289 | struct ipu_irq_map *map; | ||
290 | |||
291 | line--; | ||
292 | status &= ~(1UL << line); | ||
293 | |||
294 | spin_lock(&bank_lock); | ||
295 | map = src2map(32 * i + line); | ||
296 | if (map) | ||
297 | irq = map->irq; | ||
298 | spin_unlock(&bank_lock); | ||
299 | |||
300 | if (!map) { | ||
301 | pr_err("IPU: Interrupt on unmapped source %u bank %d\n", | ||
302 | line, i); | ||
303 | continue; | ||
304 | } | ||
305 | generic_handle_irq(irq); | ||
306 | } | ||
307 | } | ||
308 | } | ||
309 | |||
310 | /* Chained IRQ handler for IPU function interrupt */ | ||
311 | static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc) | ||
312 | { | ||
313 | struct ipu *ipu = get_irq_data(irq); | ||
314 | u32 status; | ||
315 | int i, line; | ||
316 | |||
317 | for (i = 0; i < IPU_IRQ_NR_FN_BANKS; i++) { | ||
318 | struct ipu_irq_bank *bank = irq_bank + i; | ||
319 | |||
320 | spin_lock(&bank_lock); | ||
321 | status = ipu_read_reg(ipu, bank->status); | ||
322 | /* Not clearing all interrupts, see above */ | ||
323 | status &= ipu_read_reg(ipu, bank->control); | ||
324 | spin_unlock(&bank_lock); | ||
325 | while ((line = ffs(status))) { | ||
326 | struct ipu_irq_map *map; | ||
327 | |||
328 | line--; | ||
329 | status &= ~(1UL << line); | ||
330 | |||
331 | spin_lock(&bank_lock); | ||
332 | map = src2map(32 * i + line); | ||
333 | if (map) | ||
334 | irq = map->irq; | ||
335 | spin_unlock(&bank_lock); | ||
336 | |||
337 | if (!map) { | ||
338 | pr_err("IPU: Interrupt on unmapped source %u bank %d\n", | ||
339 | line, i); | ||
340 | continue; | ||
341 | } | ||
342 | generic_handle_irq(irq); | ||
343 | } | ||
344 | } | ||
345 | } | ||
346 | |||
347 | static struct irq_chip ipu_irq_chip = { | ||
348 | .name = "ipu_irq", | ||
349 | .ack = ipu_irq_ack, | ||
350 | .mask = ipu_irq_mask, | ||
351 | .unmask = ipu_irq_unmask, | ||
352 | }; | ||
353 | |||
354 | /* Install the IRQ handler */ | ||
355 | int ipu_irq_attach_irq(struct ipu *ipu, struct platform_device *dev) | ||
356 | { | ||
357 | struct ipu_platform_data *pdata = dev->dev.platform_data; | ||
358 | unsigned int irq, irq_base, i; | ||
359 | |||
360 | irq_base = pdata->irq_base; | ||
361 | |||
362 | for (i = 0; i < IPU_IRQ_NR_BANKS; i++) | ||
363 | irq_bank[i].ipu = ipu; | ||
364 | |||
365 | for (i = 0; i < CONFIG_MX3_IPU_IRQS; i++) { | ||
366 | int ret; | ||
367 | |||
368 | irq = irq_base + i; | ||
369 | ret = set_irq_chip(irq, &ipu_irq_chip); | ||
370 | if (ret < 0) | ||
371 | return ret; | ||
372 | ret = set_irq_chip_data(irq, irq_map + i); | ||
373 | if (ret < 0) | ||
374 | return ret; | ||
375 | irq_map[i].ipu = ipu; | ||
376 | irq_map[i].irq = irq; | ||
377 | irq_map[i].source = -EINVAL; | ||
378 | set_irq_handler(irq, handle_level_irq); | ||
379 | #ifdef CONFIG_ARM | ||
380 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | ||
381 | #endif | ||
382 | } | ||
383 | |||
384 | set_irq_data(ipu->irq_fn, ipu); | ||
385 | set_irq_chained_handler(ipu->irq_fn, ipu_irq_fn); | ||
386 | |||
387 | set_irq_data(ipu->irq_err, ipu); | ||
388 | set_irq_chained_handler(ipu->irq_err, ipu_irq_err); | ||
389 | |||
390 | return 0; | ||
391 | } | ||
392 | |||
393 | void ipu_irq_detach_irq(struct ipu *ipu, struct platform_device *dev) | ||
394 | { | ||
395 | struct ipu_platform_data *pdata = dev->dev.platform_data; | ||
396 | unsigned int irq, irq_base; | ||
397 | |||
398 | irq_base = pdata->irq_base; | ||
399 | |||
400 | set_irq_chained_handler(ipu->irq_fn, NULL); | ||
401 | set_irq_data(ipu->irq_fn, NULL); | ||
402 | |||
403 | set_irq_chained_handler(ipu->irq_err, NULL); | ||
404 | set_irq_data(ipu->irq_err, NULL); | ||
405 | |||
406 | for (irq = irq_base; irq < irq_base + CONFIG_MX3_IPU_IRQS; irq++) { | ||
407 | #ifdef CONFIG_ARM | ||
408 | set_irq_flags(irq, 0); | ||
409 | #endif | ||
410 | set_irq_chip(irq, NULL); | ||
411 | set_irq_chip_data(irq, NULL); | ||
412 | } | ||
413 | } | ||
diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c index 13946ebd77d6..b4704e150b28 100644 --- a/drivers/firmware/dell_rbu.c +++ b/drivers/firmware/dell_rbu.c | |||
@@ -576,7 +576,7 @@ static ssize_t read_rbu_image_type(struct kobject *kobj, | |||
576 | { | 576 | { |
577 | int size = 0; | 577 | int size = 0; |
578 | if (!pos) | 578 | if (!pos) |
579 | size = sprintf(buffer, "%s\n", image_type); | 579 | size = scnprintf(buffer, count, "%s\n", image_type); |
580 | return size; | 580 | return size; |
581 | } | 581 | } |
582 | 582 | ||
@@ -648,7 +648,7 @@ static ssize_t read_rbu_packet_size(struct kobject *kobj, | |||
648 | int size = 0; | 648 | int size = 0; |
649 | if (!pos) { | 649 | if (!pos) { |
650 | spin_lock(&rbu_data.lock); | 650 | spin_lock(&rbu_data.lock); |
651 | size = sprintf(buffer, "%lu\n", rbu_data.packetsize); | 651 | size = scnprintf(buffer, count, "%lu\n", rbu_data.packetsize); |
652 | spin_unlock(&rbu_data.lock); | 652 | spin_unlock(&rbu_data.lock); |
653 | } | 653 | } |
654 | return size; | 654 | return size; |
diff --git a/drivers/gpio/max7301.c b/drivers/gpio/max7301.c index 8b24d784db93..3e7f4e06386e 100644 --- a/drivers/gpio/max7301.c +++ b/drivers/gpio/max7301.c | |||
@@ -217,8 +217,10 @@ static int __devinit max7301_probe(struct spi_device *spi) | |||
217 | int i, ret; | 217 | int i, ret; |
218 | 218 | ||
219 | pdata = spi->dev.platform_data; | 219 | pdata = spi->dev.platform_data; |
220 | if (!pdata || !pdata->base) | 220 | if (!pdata || !pdata->base) { |
221 | return -ENODEV; | 221 | dev_dbg(&spi->dev, "incorrect or missing platform data\n"); |
222 | return -EINVAL; | ||
223 | } | ||
222 | 224 | ||
223 | /* | 225 | /* |
224 | * bits_per_word cannot be configured in platform data | 226 | * bits_per_word cannot be configured in platform data |
diff --git a/drivers/gpio/max732x.c b/drivers/gpio/max732x.c index 55ae9a41897a..f7868243af89 100644 --- a/drivers/gpio/max732x.c +++ b/drivers/gpio/max732x.c | |||
@@ -267,8 +267,10 @@ static int __devinit max732x_probe(struct i2c_client *client, | |||
267 | int ret, nr_port; | 267 | int ret, nr_port; |
268 | 268 | ||
269 | pdata = client->dev.platform_data; | 269 | pdata = client->dev.platform_data; |
270 | if (pdata == NULL) | 270 | if (pdata == NULL) { |
271 | return -ENODEV; | 271 | dev_dbg(&client->dev, "no platform data\n"); |
272 | return -EINVAL; | ||
273 | } | ||
272 | 274 | ||
273 | chip = kzalloc(sizeof(struct max732x_chip), GFP_KERNEL); | 275 | chip = kzalloc(sizeof(struct max732x_chip), GFP_KERNEL); |
274 | if (chip == NULL) | 276 | if (chip == NULL) |
diff --git a/drivers/gpio/mcp23s08.c b/drivers/gpio/mcp23s08.c index 89c1d222e9d1..f6fae0e50e65 100644 --- a/drivers/gpio/mcp23s08.c +++ b/drivers/gpio/mcp23s08.c | |||
@@ -310,8 +310,10 @@ static int mcp23s08_probe(struct spi_device *spi) | |||
310 | unsigned base; | 310 | unsigned base; |
311 | 311 | ||
312 | pdata = spi->dev.platform_data; | 312 | pdata = spi->dev.platform_data; |
313 | if (!pdata || !gpio_is_valid(pdata->base)) | 313 | if (!pdata || !gpio_is_valid(pdata->base)) { |
314 | return -ENODEV; | 314 | dev_dbg(&spi->dev, "invalid or missing platform data\n"); |
315 | return -EINVAL; | ||
316 | } | ||
315 | 317 | ||
316 | for (addr = 0; addr < 4; addr++) { | 318 | for (addr = 0; addr < 4; addr++) { |
317 | if (!pdata->chip[addr].is_present) | 319 | if (!pdata->chip[addr].is_present) |
diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c index 37f35388a2ae..8dc0164bd51e 100644 --- a/drivers/gpio/pca953x.c +++ b/drivers/gpio/pca953x.c | |||
@@ -202,8 +202,10 @@ static int __devinit pca953x_probe(struct i2c_client *client, | |||
202 | int ret; | 202 | int ret; |
203 | 203 | ||
204 | pdata = client->dev.platform_data; | 204 | pdata = client->dev.platform_data; |
205 | if (pdata == NULL) | 205 | if (pdata == NULL) { |
206 | return -ENODEV; | 206 | dev_dbg(&client->dev, "no platform data\n"); |
207 | return -EINVAL; | ||
208 | } | ||
207 | 209 | ||
208 | chip = kzalloc(sizeof(struct pca953x_chip), GFP_KERNEL); | 210 | chip = kzalloc(sizeof(struct pca953x_chip), GFP_KERNEL); |
209 | if (chip == NULL) | 211 | if (chip == NULL) |
diff --git a/drivers/gpio/pcf857x.c b/drivers/gpio/pcf857x.c index 4bc2070dd4a1..9525724be731 100644 --- a/drivers/gpio/pcf857x.c +++ b/drivers/gpio/pcf857x.c | |||
@@ -188,8 +188,10 @@ static int pcf857x_probe(struct i2c_client *client, | |||
188 | int status; | 188 | int status; |
189 | 189 | ||
190 | pdata = client->dev.platform_data; | 190 | pdata = client->dev.platform_data; |
191 | if (!pdata) | 191 | if (!pdata) { |
192 | return -ENODEV; | 192 | dev_dbg(&client->dev, "no platform data\n"); |
193 | return -EINVAL; | ||
194 | } | ||
193 | 195 | ||
194 | /* Allocate, initialize, and register this gpio_chip. */ | 196 | /* Allocate, initialize, and register this gpio_chip. */ |
195 | gpio = kzalloc(sizeof *gpio, GFP_KERNEL); | 197 | gpio = kzalloc(sizeof *gpio, GFP_KERNEL); |
@@ -248,8 +250,10 @@ static int pcf857x_probe(struct i2c_client *client, | |||
248 | else | 250 | else |
249 | status = i2c_read_le16(client); | 251 | status = i2c_read_le16(client); |
250 | 252 | ||
251 | } else | 253 | } else { |
252 | status = -ENODEV; | 254 | dev_dbg(&client->dev, "unsupported number of gpios\n"); |
255 | status = -EINVAL; | ||
256 | } | ||
253 | 257 | ||
254 | if (status < 0) | 258 | if (status < 0) |
255 | goto fail; | 259 | goto fail; |
diff --git a/drivers/gpu/drm/drm_agpsupport.c b/drivers/gpu/drm/drm_agpsupport.c index 3d33b8252b58..14796594e5d9 100644 --- a/drivers/gpu/drm/drm_agpsupport.c +++ b/drivers/gpu/drm/drm_agpsupport.c | |||
@@ -33,10 +33,11 @@ | |||
33 | 33 | ||
34 | #include "drmP.h" | 34 | #include "drmP.h" |
35 | #include <linux/module.h> | 35 | #include <linux/module.h> |
36 | #include <asm/agp.h> | ||
37 | 36 | ||
38 | #if __OS_HAS_AGP | 37 | #if __OS_HAS_AGP |
39 | 38 | ||
39 | #include <asm/agp.h> | ||
40 | |||
40 | /** | 41 | /** |
41 | * Get AGP information. | 42 | * Get AGP information. |
42 | * | 43 | * |
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 5b2cbb778162..bfce0992fefb 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
@@ -194,7 +194,6 @@ char *drm_get_connector_status_name(enum drm_connector_status status) | |||
194 | * @type: object type | 194 | * @type: object type |
195 | * | 195 | * |
196 | * LOCKING: | 196 | * LOCKING: |
197 | * Caller must hold DRM mode_config lock. | ||
198 | * | 197 | * |
199 | * Create a unique identifier based on @ptr in @dev's identifier space. Used | 198 | * Create a unique identifier based on @ptr in @dev's identifier space. Used |
200 | * for tracking modes, CRTCs and connectors. | 199 | * for tracking modes, CRTCs and connectors. |
@@ -209,15 +208,15 @@ static int drm_mode_object_get(struct drm_device *dev, | |||
209 | int new_id = 0; | 208 | int new_id = 0; |
210 | int ret; | 209 | int ret; |
211 | 210 | ||
212 | WARN(!mutex_is_locked(&dev->mode_config.mutex), | ||
213 | "%s called w/o mode_config lock\n", __func__); | ||
214 | again: | 211 | again: |
215 | if (idr_pre_get(&dev->mode_config.crtc_idr, GFP_KERNEL) == 0) { | 212 | if (idr_pre_get(&dev->mode_config.crtc_idr, GFP_KERNEL) == 0) { |
216 | DRM_ERROR("Ran out memory getting a mode number\n"); | 213 | DRM_ERROR("Ran out memory getting a mode number\n"); |
217 | return -EINVAL; | 214 | return -EINVAL; |
218 | } | 215 | } |
219 | 216 | ||
217 | mutex_lock(&dev->mode_config.idr_mutex); | ||
220 | ret = idr_get_new_above(&dev->mode_config.crtc_idr, obj, 1, &new_id); | 218 | ret = idr_get_new_above(&dev->mode_config.crtc_idr, obj, 1, &new_id); |
219 | mutex_unlock(&dev->mode_config.idr_mutex); | ||
221 | if (ret == -EAGAIN) | 220 | if (ret == -EAGAIN) |
222 | goto again; | 221 | goto again; |
223 | 222 | ||
@@ -239,16 +238,20 @@ again: | |||
239 | static void drm_mode_object_put(struct drm_device *dev, | 238 | static void drm_mode_object_put(struct drm_device *dev, |
240 | struct drm_mode_object *object) | 239 | struct drm_mode_object *object) |
241 | { | 240 | { |
241 | mutex_lock(&dev->mode_config.idr_mutex); | ||
242 | idr_remove(&dev->mode_config.crtc_idr, object->id); | 242 | idr_remove(&dev->mode_config.crtc_idr, object->id); |
243 | mutex_unlock(&dev->mode_config.idr_mutex); | ||
243 | } | 244 | } |
244 | 245 | ||
245 | void *drm_mode_object_find(struct drm_device *dev, uint32_t id, uint32_t type) | 246 | void *drm_mode_object_find(struct drm_device *dev, uint32_t id, uint32_t type) |
246 | { | 247 | { |
247 | struct drm_mode_object *obj; | 248 | struct drm_mode_object *obj = NULL; |
248 | 249 | ||
250 | mutex_lock(&dev->mode_config.idr_mutex); | ||
249 | obj = idr_find(&dev->mode_config.crtc_idr, id); | 251 | obj = idr_find(&dev->mode_config.crtc_idr, id); |
250 | if (!obj || (obj->type != type) || (obj->id != id)) | 252 | if (!obj || (obj->type != type) || (obj->id != id)) |
251 | return NULL; | 253 | obj = NULL; |
254 | mutex_unlock(&dev->mode_config.idr_mutex); | ||
252 | 255 | ||
253 | return obj; | 256 | return obj; |
254 | } | 257 | } |
@@ -786,6 +789,7 @@ EXPORT_SYMBOL(drm_mode_create_dithering_property); | |||
786 | void drm_mode_config_init(struct drm_device *dev) | 789 | void drm_mode_config_init(struct drm_device *dev) |
787 | { | 790 | { |
788 | mutex_init(&dev->mode_config.mutex); | 791 | mutex_init(&dev->mode_config.mutex); |
792 | mutex_init(&dev->mode_config.idr_mutex); | ||
789 | INIT_LIST_HEAD(&dev->mode_config.fb_list); | 793 | INIT_LIST_HEAD(&dev->mode_config.fb_list); |
790 | INIT_LIST_HEAD(&dev->mode_config.fb_kernel_list); | 794 | INIT_LIST_HEAD(&dev->mode_config.fb_kernel_list); |
791 | INIT_LIST_HEAD(&dev->mode_config.crtc_list); | 795 | INIT_LIST_HEAD(&dev->mode_config.crtc_list); |
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index d8a982b71296..964c5eb1fada 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c | |||
@@ -36,7 +36,7 @@ | |||
36 | /* | 36 | /* |
37 | * Detailed mode info for 800x600@60Hz | 37 | * Detailed mode info for 800x600@60Hz |
38 | */ | 38 | */ |
39 | static struct drm_display_mode std_mode[] = { | 39 | static struct drm_display_mode std_modes[] = { |
40 | { DRM_MODE("800x600", DRM_MODE_TYPE_DEFAULT, 40000, 800, 840, | 40 | { DRM_MODE("800x600", DRM_MODE_TYPE_DEFAULT, 40000, 800, 840, |
41 | 968, 1056, 0, 600, 601, 605, 628, 0, | 41 | 968, 1056, 0, 600, 601, 605, 628, 0, |
42 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, | 42 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
@@ -60,15 +60,18 @@ static struct drm_display_mode std_mode[] = { | |||
60 | * changes have occurred. | 60 | * changes have occurred. |
61 | * | 61 | * |
62 | * FIXME: take into account monitor limits | 62 | * FIXME: take into account monitor limits |
63 | * | ||
64 | * RETURNS: | ||
65 | * Number of modes found on @connector. | ||
63 | */ | 66 | */ |
64 | void drm_helper_probe_single_connector_modes(struct drm_connector *connector, | 67 | int drm_helper_probe_single_connector_modes(struct drm_connector *connector, |
65 | uint32_t maxX, uint32_t maxY) | 68 | uint32_t maxX, uint32_t maxY) |
66 | { | 69 | { |
67 | struct drm_device *dev = connector->dev; | 70 | struct drm_device *dev = connector->dev; |
68 | struct drm_display_mode *mode, *t; | 71 | struct drm_display_mode *mode, *t; |
69 | struct drm_connector_helper_funcs *connector_funcs = | 72 | struct drm_connector_helper_funcs *connector_funcs = |
70 | connector->helper_private; | 73 | connector->helper_private; |
71 | int ret; | 74 | int count = 0; |
72 | 75 | ||
73 | DRM_DEBUG("%s\n", drm_get_connector_name(connector)); | 76 | DRM_DEBUG("%s\n", drm_get_connector_name(connector)); |
74 | /* set all modes to the unverified state */ | 77 | /* set all modes to the unverified state */ |
@@ -81,14 +84,14 @@ void drm_helper_probe_single_connector_modes(struct drm_connector *connector, | |||
81 | DRM_DEBUG("%s is disconnected\n", | 84 | DRM_DEBUG("%s is disconnected\n", |
82 | drm_get_connector_name(connector)); | 85 | drm_get_connector_name(connector)); |
83 | /* TODO set EDID to NULL */ | 86 | /* TODO set EDID to NULL */ |
84 | return; | 87 | return 0; |
85 | } | 88 | } |
86 | 89 | ||
87 | ret = (*connector_funcs->get_modes)(connector); | 90 | count = (*connector_funcs->get_modes)(connector); |
91 | if (!count) | ||
92 | return 0; | ||
88 | 93 | ||
89 | if (ret) { | 94 | drm_mode_connector_list_update(connector); |
90 | drm_mode_connector_list_update(connector); | ||
91 | } | ||
92 | 95 | ||
93 | if (maxX && maxY) | 96 | if (maxX && maxY) |
94 | drm_mode_validate_size(dev, &connector->modes, maxX, | 97 | drm_mode_validate_size(dev, &connector->modes, maxX, |
@@ -102,25 +105,8 @@ void drm_helper_probe_single_connector_modes(struct drm_connector *connector, | |||
102 | 105 | ||
103 | drm_mode_prune_invalid(dev, &connector->modes, true); | 106 | drm_mode_prune_invalid(dev, &connector->modes, true); |
104 | 107 | ||
105 | if (list_empty(&connector->modes)) { | 108 | if (list_empty(&connector->modes)) |
106 | struct drm_display_mode *stdmode; | 109 | return 0; |
107 | |||
108 | DRM_DEBUG("No valid modes on %s\n", | ||
109 | drm_get_connector_name(connector)); | ||
110 | |||
111 | /* Should we do this here ??? | ||
112 | * When no valid EDID modes are available we end up | ||
113 | * here and bailed in the past, now we add a standard | ||
114 | * 640x480@60Hz mode and carry on. | ||
115 | */ | ||
116 | stdmode = drm_mode_duplicate(dev, &std_mode[0]); | ||
117 | drm_mode_probed_add(connector, stdmode); | ||
118 | drm_mode_list_concat(&connector->probed_modes, | ||
119 | &connector->modes); | ||
120 | |||
121 | DRM_DEBUG("Adding standard 640x480 @ 60Hz to %s\n", | ||
122 | drm_get_connector_name(connector)); | ||
123 | } | ||
124 | 110 | ||
125 | drm_mode_sort(&connector->modes); | 111 | drm_mode_sort(&connector->modes); |
126 | 112 | ||
@@ -131,20 +117,58 @@ void drm_helper_probe_single_connector_modes(struct drm_connector *connector, | |||
131 | drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); | 117 | drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); |
132 | drm_mode_debug_printmodeline(mode); | 118 | drm_mode_debug_printmodeline(mode); |
133 | } | 119 | } |
120 | |||
121 | return count; | ||
134 | } | 122 | } |
135 | EXPORT_SYMBOL(drm_helper_probe_single_connector_modes); | 123 | EXPORT_SYMBOL(drm_helper_probe_single_connector_modes); |
136 | 124 | ||
137 | void drm_helper_probe_connector_modes(struct drm_device *dev, uint32_t maxX, | 125 | int drm_helper_probe_connector_modes(struct drm_device *dev, uint32_t maxX, |
138 | uint32_t maxY) | 126 | uint32_t maxY) |
139 | { | 127 | { |
140 | struct drm_connector *connector; | 128 | struct drm_connector *connector; |
129 | int count = 0; | ||
141 | 130 | ||
142 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { | 131 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { |
143 | drm_helper_probe_single_connector_modes(connector, maxX, maxY); | 132 | count += drm_helper_probe_single_connector_modes(connector, |
133 | maxX, maxY); | ||
144 | } | 134 | } |
135 | |||
136 | return count; | ||
145 | } | 137 | } |
146 | EXPORT_SYMBOL(drm_helper_probe_connector_modes); | 138 | EXPORT_SYMBOL(drm_helper_probe_connector_modes); |
147 | 139 | ||
140 | static void drm_helper_add_std_modes(struct drm_device *dev, | ||
141 | struct drm_connector *connector) | ||
142 | { | ||
143 | struct drm_display_mode *mode, *t; | ||
144 | int i; | ||
145 | |||
146 | for (i = 0; i < ARRAY_SIZE(std_modes); i++) { | ||
147 | struct drm_display_mode *stdmode; | ||
148 | |||
149 | /* | ||
150 | * When no valid EDID modes are available we end up | ||
151 | * here and bailed in the past, now we add some standard | ||
152 | * modes and move on. | ||
153 | */ | ||
154 | stdmode = drm_mode_duplicate(dev, &std_modes[i]); | ||
155 | drm_mode_probed_add(connector, stdmode); | ||
156 | drm_mode_list_concat(&connector->probed_modes, | ||
157 | &connector->modes); | ||
158 | |||
159 | DRM_DEBUG("Adding mode %s to %s\n", stdmode->name, | ||
160 | drm_get_connector_name(connector)); | ||
161 | } | ||
162 | drm_mode_sort(&connector->modes); | ||
163 | |||
164 | DRM_DEBUG("Added std modes on %s\n", drm_get_connector_name(connector)); | ||
165 | list_for_each_entry_safe(mode, t, &connector->modes, head) { | ||
166 | mode->vrefresh = drm_mode_vrefresh(mode); | ||
167 | |||
168 | drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); | ||
169 | drm_mode_debug_printmodeline(mode); | ||
170 | } | ||
171 | } | ||
148 | 172 | ||
149 | /** | 173 | /** |
150 | * drm_helper_crtc_in_use - check if a given CRTC is in a mode_config | 174 | * drm_helper_crtc_in_use - check if a given CRTC is in a mode_config |
@@ -237,6 +261,8 @@ static void drm_enable_connectors(struct drm_device *dev, bool *enabled) | |||
237 | 261 | ||
238 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { | 262 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { |
239 | enabled[i] = drm_connector_enabled(connector, true); | 263 | enabled[i] = drm_connector_enabled(connector, true); |
264 | DRM_DEBUG("connector %d enabled? %s\n", connector->base.id, | ||
265 | enabled[i] ? "yes" : "no"); | ||
240 | any_enabled |= enabled[i]; | 266 | any_enabled |= enabled[i]; |
241 | i++; | 267 | i++; |
242 | } | 268 | } |
@@ -265,11 +291,17 @@ static bool drm_target_preferred(struct drm_device *dev, | |||
265 | continue; | 291 | continue; |
266 | } | 292 | } |
267 | 293 | ||
294 | DRM_DEBUG("looking for preferred mode on connector %d\n", | ||
295 | connector->base.id); | ||
296 | |||
268 | modes[i] = drm_has_preferred_mode(connector, width, height); | 297 | modes[i] = drm_has_preferred_mode(connector, width, height); |
269 | if (!modes[i]) { | 298 | /* No preferred modes, pick one off the list */ |
299 | if (!modes[i] && !list_empty(&connector->modes)) { | ||
270 | list_for_each_entry(modes[i], &connector->modes, head) | 300 | list_for_each_entry(modes[i], &connector->modes, head) |
271 | break; | 301 | break; |
272 | } | 302 | } |
303 | DRM_DEBUG("found mode %s\n", modes[i] ? modes[i]->name : | ||
304 | "none"); | ||
273 | i++; | 305 | i++; |
274 | } | 306 | } |
275 | return true; | 307 | return true; |
@@ -369,6 +401,8 @@ static void drm_setup_crtcs(struct drm_device *dev) | |||
369 | int width, height; | 401 | int width, height; |
370 | int i, ret; | 402 | int i, ret; |
371 | 403 | ||
404 | DRM_DEBUG("\n"); | ||
405 | |||
372 | width = dev->mode_config.max_width; | 406 | width = dev->mode_config.max_width; |
373 | height = dev->mode_config.max_height; | 407 | height = dev->mode_config.max_height; |
374 | 408 | ||
@@ -390,6 +424,8 @@ static void drm_setup_crtcs(struct drm_device *dev) | |||
390 | if (!ret) | 424 | if (!ret) |
391 | DRM_ERROR("Unable to find initial modes\n"); | 425 | DRM_ERROR("Unable to find initial modes\n"); |
392 | 426 | ||
427 | DRM_DEBUG("picking CRTCs for %dx%d config\n", width, height); | ||
428 | |||
393 | drm_pick_crtcs(dev, crtcs, modes, 0, width, height); | 429 | drm_pick_crtcs(dev, crtcs, modes, 0, width, height); |
394 | 430 | ||
395 | i = 0; | 431 | i = 0; |
@@ -403,6 +439,8 @@ static void drm_setup_crtcs(struct drm_device *dev) | |||
403 | } | 439 | } |
404 | 440 | ||
405 | if (mode && crtc) { | 441 | if (mode && crtc) { |
442 | DRM_DEBUG("desired mode %s set on crtc %d\n", | ||
443 | mode->name, crtc->base.id); | ||
406 | crtc->desired_mode = mode; | 444 | crtc->desired_mode = mode; |
407 | connector->encoder->crtc = crtc; | 445 | connector->encoder->crtc = crtc; |
408 | } else | 446 | } else |
@@ -442,6 +480,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, | |||
442 | int saved_x, saved_y; | 480 | int saved_x, saved_y; |
443 | struct drm_encoder *encoder; | 481 | struct drm_encoder *encoder; |
444 | bool ret = true; | 482 | bool ret = true; |
483 | bool depth_changed, bpp_changed; | ||
445 | 484 | ||
446 | adjusted_mode = drm_mode_duplicate(dev, mode); | 485 | adjusted_mode = drm_mode_duplicate(dev, mode); |
447 | 486 | ||
@@ -450,6 +489,15 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, | |||
450 | if (!crtc->enabled) | 489 | if (!crtc->enabled) |
451 | return true; | 490 | return true; |
452 | 491 | ||
492 | if (old_fb && crtc->fb) { | ||
493 | depth_changed = (old_fb->depth != crtc->fb->depth); | ||
494 | bpp_changed = (old_fb->bits_per_pixel != | ||
495 | crtc->fb->bits_per_pixel); | ||
496 | } else { | ||
497 | depth_changed = true; | ||
498 | bpp_changed = true; | ||
499 | } | ||
500 | |||
453 | saved_mode = crtc->mode; | 501 | saved_mode = crtc->mode; |
454 | saved_x = crtc->x; | 502 | saved_x = crtc->x; |
455 | saved_y = crtc->y; | 503 | saved_y = crtc->y; |
@@ -462,7 +510,8 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, | |||
462 | crtc->y = y; | 510 | crtc->y = y; |
463 | 511 | ||
464 | if (drm_mode_equal(&saved_mode, &crtc->mode)) { | 512 | if (drm_mode_equal(&saved_mode, &crtc->mode)) { |
465 | if (saved_x != crtc->x || saved_y != crtc->y) { | 513 | if (saved_x != crtc->x || saved_y != crtc->y || |
514 | depth_changed || bpp_changed) { | ||
466 | crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y, | 515 | crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y, |
467 | old_fb); | 516 | old_fb); |
468 | goto done; | 517 | goto done; |
@@ -568,8 +617,8 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set) | |||
568 | struct drm_encoder **save_encoders, *new_encoder; | 617 | struct drm_encoder **save_encoders, *new_encoder; |
569 | struct drm_framebuffer *old_fb; | 618 | struct drm_framebuffer *old_fb; |
570 | bool save_enabled; | 619 | bool save_enabled; |
571 | bool changed = false; | 620 | bool mode_changed = false; |
572 | bool flip_or_move = false; | 621 | bool fb_changed = false; |
573 | struct drm_connector *connector; | 622 | struct drm_connector *connector; |
574 | int count = 0, ro, fail = 0; | 623 | int count = 0, ro, fail = 0; |
575 | struct drm_crtc_helper_funcs *crtc_funcs; | 624 | struct drm_crtc_helper_funcs *crtc_funcs; |
@@ -597,7 +646,10 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set) | |||
597 | /* save previous config */ | 646 | /* save previous config */ |
598 | save_enabled = set->crtc->enabled; | 647 | save_enabled = set->crtc->enabled; |
599 | 648 | ||
600 | /* this is meant to be num_connector not num_crtc */ | 649 | /* |
650 | * We do mode_config.num_connectors here since we'll look at the | ||
651 | * CRTC and encoder associated with each connector later. | ||
652 | */ | ||
601 | save_crtcs = kzalloc(dev->mode_config.num_connector * | 653 | save_crtcs = kzalloc(dev->mode_config.num_connector * |
602 | sizeof(struct drm_crtc *), GFP_KERNEL); | 654 | sizeof(struct drm_crtc *), GFP_KERNEL); |
603 | if (!save_crtcs) | 655 | if (!save_crtcs) |
@@ -613,21 +665,25 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set) | |||
613 | /* We should be able to check here if the fb has the same properties | 665 | /* We should be able to check here if the fb has the same properties |
614 | * and then just flip_or_move it */ | 666 | * and then just flip_or_move it */ |
615 | if (set->crtc->fb != set->fb) { | 667 | if (set->crtc->fb != set->fb) { |
616 | /* if we have no fb then its a change not a flip */ | 668 | /* If we have no fb then treat it as a full mode set */ |
617 | if (set->crtc->fb == NULL) | 669 | if (set->crtc->fb == NULL) |
618 | changed = true; | 670 | mode_changed = true; |
671 | else if ((set->fb->bits_per_pixel != | ||
672 | set->crtc->fb->bits_per_pixel) || | ||
673 | set->fb->depth != set->crtc->fb->depth) | ||
674 | fb_changed = true; | ||
619 | else | 675 | else |
620 | flip_or_move = true; | 676 | fb_changed = true; |
621 | } | 677 | } |
622 | 678 | ||
623 | if (set->x != set->crtc->x || set->y != set->crtc->y) | 679 | if (set->x != set->crtc->x || set->y != set->crtc->y) |
624 | flip_or_move = true; | 680 | fb_changed = true; |
625 | 681 | ||
626 | if (set->mode && !drm_mode_equal(set->mode, &set->crtc->mode)) { | 682 | if (set->mode && !drm_mode_equal(set->mode, &set->crtc->mode)) { |
627 | DRM_DEBUG("modes are different\n"); | 683 | DRM_DEBUG("modes are different\n"); |
628 | drm_mode_debug_printmodeline(&set->crtc->mode); | 684 | drm_mode_debug_printmodeline(&set->crtc->mode); |
629 | drm_mode_debug_printmodeline(set->mode); | 685 | drm_mode_debug_printmodeline(set->mode); |
630 | changed = true; | 686 | mode_changed = true; |
631 | } | 687 | } |
632 | 688 | ||
633 | /* a) traverse passed in connector list and get encoders for them */ | 689 | /* a) traverse passed in connector list and get encoders for them */ |
@@ -650,7 +706,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set) | |||
650 | } | 706 | } |
651 | 707 | ||
652 | if (new_encoder != connector->encoder) { | 708 | if (new_encoder != connector->encoder) { |
653 | changed = true; | 709 | mode_changed = true; |
654 | connector->encoder = new_encoder; | 710 | connector->encoder = new_encoder; |
655 | } | 711 | } |
656 | } | 712 | } |
@@ -677,16 +733,16 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set) | |||
677 | new_crtc = set->crtc; | 733 | new_crtc = set->crtc; |
678 | } | 734 | } |
679 | if (new_crtc != connector->encoder->crtc) { | 735 | if (new_crtc != connector->encoder->crtc) { |
680 | changed = true; | 736 | mode_changed = true; |
681 | connector->encoder->crtc = new_crtc; | 737 | connector->encoder->crtc = new_crtc; |
682 | } | 738 | } |
683 | } | 739 | } |
684 | 740 | ||
685 | /* mode_set_base is not a required function */ | 741 | /* mode_set_base is not a required function */ |
686 | if (flip_or_move && !crtc_funcs->mode_set_base) | 742 | if (fb_changed && !crtc_funcs->mode_set_base) |
687 | changed = true; | 743 | mode_changed = true; |
688 | 744 | ||
689 | if (changed) { | 745 | if (mode_changed) { |
690 | old_fb = set->crtc->fb; | 746 | old_fb = set->crtc->fb; |
691 | set->crtc->fb = set->fb; | 747 | set->crtc->fb = set->fb; |
692 | set->crtc->enabled = (set->mode != NULL); | 748 | set->crtc->enabled = (set->mode != NULL); |
@@ -705,7 +761,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set) | |||
705 | set->crtc->desired_mode = set->mode; | 761 | set->crtc->desired_mode = set->mode; |
706 | } | 762 | } |
707 | drm_helper_disable_unused_functions(dev); | 763 | drm_helper_disable_unused_functions(dev); |
708 | } else if (flip_or_move) { | 764 | } else if (fb_changed) { |
709 | old_fb = set->crtc->fb; | 765 | old_fb = set->crtc->fb; |
710 | if (set->crtc->fb != set->fb) | 766 | if (set->crtc->fb != set->fb) |
711 | set->crtc->fb = set->fb; | 767 | set->crtc->fb = set->fb; |
@@ -764,10 +820,31 @@ bool drm_helper_plugged_event(struct drm_device *dev) | |||
764 | */ | 820 | */ |
765 | bool drm_helper_initial_config(struct drm_device *dev, bool can_grow) | 821 | bool drm_helper_initial_config(struct drm_device *dev, bool can_grow) |
766 | { | 822 | { |
767 | int ret = false; | 823 | struct drm_connector *connector; |
824 | int count = 0; | ||
768 | 825 | ||
769 | drm_helper_plugged_event(dev); | 826 | count = drm_helper_probe_connector_modes(dev, |
770 | return ret; | 827 | dev->mode_config.max_width, |
828 | dev->mode_config.max_height); | ||
829 | |||
830 | /* | ||
831 | * None of the available connectors had any modes, so add some | ||
832 | * and try to light them up anyway | ||
833 | */ | ||
834 | if (!count) { | ||
835 | DRM_ERROR("connectors have no modes, using standard modes\n"); | ||
836 | list_for_each_entry(connector, | ||
837 | &dev->mode_config.connector_list, | ||
838 | head) | ||
839 | drm_helper_add_std_modes(dev, connector); | ||
840 | } | ||
841 | |||
842 | drm_setup_crtcs(dev); | ||
843 | |||
844 | /* alert the driver fb layer */ | ||
845 | dev->mode_config.funcs->fb_changed(dev); | ||
846 | |||
847 | return 0; | ||
771 | } | 848 | } |
772 | EXPORT_SYMBOL(drm_helper_initial_config); | 849 | EXPORT_SYMBOL(drm_helper_initial_config); |
773 | 850 | ||
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 5ff88d952226..14c7a23dc157 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c | |||
@@ -294,6 +294,7 @@ EXPORT_SYMBOL(drm_init); | |||
294 | */ | 294 | */ |
295 | static void drm_cleanup(struct drm_device * dev) | 295 | static void drm_cleanup(struct drm_device * dev) |
296 | { | 296 | { |
297 | struct drm_map_list *r_list, *list_temp; | ||
297 | DRM_DEBUG("\n"); | 298 | DRM_DEBUG("\n"); |
298 | 299 | ||
299 | if (!dev) { | 300 | if (!dev) { |
@@ -325,6 +326,9 @@ static void drm_cleanup(struct drm_device * dev) | |||
325 | drm_ht_remove(&dev->map_hash); | 326 | drm_ht_remove(&dev->map_hash); |
326 | drm_ctxbitmap_cleanup(dev); | 327 | drm_ctxbitmap_cleanup(dev); |
327 | 328 | ||
329 | list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) | ||
330 | drm_rmmap(dev, r_list->map); | ||
331 | |||
328 | if (drm_core_check_feature(dev, DRIVER_MODESET)) | 332 | if (drm_core_check_feature(dev, DRIVER_MODESET)) |
329 | drm_put_minor(&dev->control); | 333 | drm_put_minor(&dev->control); |
330 | 334 | ||
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 0fbb0da342cb..5a4d3244758a 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c | |||
@@ -660,7 +660,7 @@ struct edid *drm_get_edid(struct drm_connector *connector, | |||
660 | 660 | ||
661 | edid = (struct edid *)drm_ddc_read(adapter); | 661 | edid = (struct edid *)drm_ddc_read(adapter); |
662 | if (!edid) { | 662 | if (!edid) { |
663 | dev_warn(&connector->dev->pdev->dev, "%s: no EDID data\n", | 663 | dev_info(&connector->dev->pdev->dev, "%s: no EDID data\n", |
664 | drm_get_connector_name(connector)); | 664 | drm_get_connector_name(connector)); |
665 | return NULL; | 665 | return NULL; |
666 | } | 666 | } |
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 724e505873cf..477caa1b1e4b 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c | |||
@@ -267,7 +267,8 @@ EXPORT_SYMBOL(drm_irq_install); | |||
267 | */ | 267 | */ |
268 | int drm_irq_uninstall(struct drm_device * dev) | 268 | int drm_irq_uninstall(struct drm_device * dev) |
269 | { | 269 | { |
270 | int irq_enabled; | 270 | unsigned long irqflags; |
271 | int irq_enabled, i; | ||
271 | 272 | ||
272 | if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) | 273 | if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) |
273 | return -EINVAL; | 274 | return -EINVAL; |
@@ -277,6 +278,16 @@ int drm_irq_uninstall(struct drm_device * dev) | |||
277 | dev->irq_enabled = 0; | 278 | dev->irq_enabled = 0; |
278 | mutex_unlock(&dev->struct_mutex); | 279 | mutex_unlock(&dev->struct_mutex); |
279 | 280 | ||
281 | /* | ||
282 | * Wake up any waiters so they don't hang. | ||
283 | */ | ||
284 | spin_lock_irqsave(&dev->vbl_lock, irqflags); | ||
285 | for (i = 0; i < dev->num_crtcs; i++) { | ||
286 | DRM_WAKEUP(&dev->vbl_queue[i]); | ||
287 | dev->vblank_enabled[i] = 0; | ||
288 | } | ||
289 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); | ||
290 | |||
280 | if (!irq_enabled) | 291 | if (!irq_enabled) |
281 | return -EINVAL; | 292 | return -EINVAL; |
282 | 293 | ||
@@ -652,8 +663,9 @@ int drm_wait_vblank(struct drm_device *dev, void *data, | |||
652 | vblwait->request.sequence, crtc); | 663 | vblwait->request.sequence, crtc); |
653 | dev->last_vblank_wait[crtc] = vblwait->request.sequence; | 664 | dev->last_vblank_wait[crtc] = vblwait->request.sequence; |
654 | DRM_WAIT_ON(ret, dev->vbl_queue[crtc], 3 * DRM_HZ, | 665 | DRM_WAIT_ON(ret, dev->vbl_queue[crtc], 3 * DRM_HZ, |
655 | ((drm_vblank_count(dev, crtc) | 666 | (((drm_vblank_count(dev, crtc) - |
656 | - vblwait->request.sequence) <= (1 << 23))); | 667 | vblwait->request.sequence) <= (1 << 23)) || |
668 | !dev->irq_enabled)); | ||
657 | 669 | ||
658 | if (ret != -EINTR) { | 670 | if (ret != -EINTR) { |
659 | struct timeval now; | 671 | struct timeval now; |
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c index 5ca132afa4f2..46bb923b097c 100644 --- a/drivers/gpu/drm/drm_stub.c +++ b/drivers/gpu/drm/drm_stub.c | |||
@@ -118,12 +118,20 @@ static void drm_master_destroy(struct kref *kref) | |||
118 | struct drm_master *master = container_of(kref, struct drm_master, refcount); | 118 | struct drm_master *master = container_of(kref, struct drm_master, refcount); |
119 | struct drm_magic_entry *pt, *next; | 119 | struct drm_magic_entry *pt, *next; |
120 | struct drm_device *dev = master->minor->dev; | 120 | struct drm_device *dev = master->minor->dev; |
121 | struct drm_map_list *r_list, *list_temp; | ||
121 | 122 | ||
122 | list_del(&master->head); | 123 | list_del(&master->head); |
123 | 124 | ||
124 | if (dev->driver->master_destroy) | 125 | if (dev->driver->master_destroy) |
125 | dev->driver->master_destroy(dev, master); | 126 | dev->driver->master_destroy(dev, master); |
126 | 127 | ||
128 | list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) { | ||
129 | if (r_list->master == master) { | ||
130 | drm_rmmap_locked(dev, r_list->map); | ||
131 | r_list = NULL; | ||
132 | } | ||
133 | } | ||
134 | |||
127 | if (master->unique) { | 135 | if (master->unique) { |
128 | drm_free(master->unique, master->unique_size, DRM_MEM_DRIVER); | 136 | drm_free(master->unique, master->unique_size, DRM_MEM_DRIVER); |
129 | master->unique = NULL; | 137 | master->unique = NULL; |
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 62a4bf7b49df..ee64b7301f67 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
@@ -177,6 +177,14 @@ static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init) | |||
177 | drm_i915_private_t *dev_priv = dev->dev_private; | 177 | drm_i915_private_t *dev_priv = dev->dev_private; |
178 | struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; | 178 | struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; |
179 | 179 | ||
180 | master_priv->sarea = drm_getsarea(dev); | ||
181 | if (master_priv->sarea) { | ||
182 | master_priv->sarea_priv = (drm_i915_sarea_t *) | ||
183 | ((u8 *)master_priv->sarea->handle + init->sarea_priv_offset); | ||
184 | } else { | ||
185 | DRM_DEBUG("sarea not found assuming DRI2 userspace\n"); | ||
186 | } | ||
187 | |||
180 | if (init->ring_size != 0) { | 188 | if (init->ring_size != 0) { |
181 | if (dev_priv->ring.ring_obj != NULL) { | 189 | if (dev_priv->ring.ring_obj != NULL) { |
182 | i915_dma_cleanup(dev); | 190 | i915_dma_cleanup(dev); |
@@ -936,13 +944,14 @@ static int i915_load_modeset_init(struct drm_device *dev) | |||
936 | dev->mode_config.fb_base = drm_get_resource_start(dev, fb_bar) & | 944 | dev->mode_config.fb_base = drm_get_resource_start(dev, fb_bar) & |
937 | 0xff000000; | 945 | 0xff000000; |
938 | 946 | ||
939 | DRM_DEBUG("*** fb base 0x%08lx\n", dev->mode_config.fb_base); | 947 | if (IS_MOBILE(dev) || IS_I9XX(dev)) |
940 | |||
941 | if (IS_MOBILE(dev) || (IS_I9XX(dev) && !IS_I965G(dev) && !IS_G33(dev))) | ||
942 | dev_priv->cursor_needs_physical = true; | 948 | dev_priv->cursor_needs_physical = true; |
943 | else | 949 | else |
944 | dev_priv->cursor_needs_physical = false; | 950 | dev_priv->cursor_needs_physical = false; |
945 | 951 | ||
952 | if (IS_I965G(dev) || IS_G33(dev)) | ||
953 | dev_priv->cursor_needs_physical = false; | ||
954 | |||
946 | ret = i915_probe_agp(dev, &agp_size, &prealloc_size); | 955 | ret = i915_probe_agp(dev, &agp_size, &prealloc_size); |
947 | if (ret) | 956 | if (ret) |
948 | goto kfree_devname; | 957 | goto kfree_devname; |
@@ -1152,6 +1161,8 @@ int i915_driver_unload(struct drm_device *dev) | |||
1152 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { | 1161 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { |
1153 | intel_modeset_cleanup(dev); | 1162 | intel_modeset_cleanup(dev); |
1154 | 1163 | ||
1164 | i915_gem_free_all_phys_object(dev); | ||
1165 | |||
1155 | mutex_lock(&dev->struct_mutex); | 1166 | mutex_lock(&dev->struct_mutex); |
1156 | i915_gem_cleanup_ringbuffer(dev); | 1167 | i915_gem_cleanup_ringbuffer(dev); |
1157 | mutex_unlock(&dev->struct_mutex); | 1168 | mutex_unlock(&dev->struct_mutex); |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 563de18063fd..e13518252007 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -72,6 +72,18 @@ enum pipe { | |||
72 | #define WATCH_INACTIVE 0 | 72 | #define WATCH_INACTIVE 0 |
73 | #define WATCH_PWRITE 0 | 73 | #define WATCH_PWRITE 0 |
74 | 74 | ||
75 | #define I915_GEM_PHYS_CURSOR_0 1 | ||
76 | #define I915_GEM_PHYS_CURSOR_1 2 | ||
77 | #define I915_GEM_PHYS_OVERLAY_REGS 3 | ||
78 | #define I915_MAX_PHYS_OBJECT (I915_GEM_PHYS_OVERLAY_REGS) | ||
79 | |||
80 | struct drm_i915_gem_phys_object { | ||
81 | int id; | ||
82 | struct page **page_list; | ||
83 | drm_dma_handle_t *handle; | ||
84 | struct drm_gem_object *cur_obj; | ||
85 | }; | ||
86 | |||
75 | typedef struct _drm_i915_ring_buffer { | 87 | typedef struct _drm_i915_ring_buffer { |
76 | int tail_mask; | 88 | int tail_mask; |
77 | unsigned long Size; | 89 | unsigned long Size; |
@@ -358,6 +370,9 @@ typedef struct drm_i915_private { | |||
358 | uint32_t bit_6_swizzle_x; | 370 | uint32_t bit_6_swizzle_x; |
359 | /** Bit 6 swizzling required for Y tiling */ | 371 | /** Bit 6 swizzling required for Y tiling */ |
360 | uint32_t bit_6_swizzle_y; | 372 | uint32_t bit_6_swizzle_y; |
373 | |||
374 | /* storage for physical objects */ | ||
375 | struct drm_i915_gem_phys_object *phys_objs[I915_MAX_PHYS_OBJECT]; | ||
361 | } mm; | 376 | } mm; |
362 | } drm_i915_private_t; | 377 | } drm_i915_private_t; |
363 | 378 | ||
@@ -436,6 +451,9 @@ struct drm_i915_gem_object { | |||
436 | /** User space pin count and filp owning the pin */ | 451 | /** User space pin count and filp owning the pin */ |
437 | uint32_t user_pin_count; | 452 | uint32_t user_pin_count; |
438 | struct drm_file *pin_filp; | 453 | struct drm_file *pin_filp; |
454 | |||
455 | /** for phy allocated objects */ | ||
456 | struct drm_i915_gem_phys_object *phys_obj; | ||
439 | }; | 457 | }; |
440 | 458 | ||
441 | /** | 459 | /** |
@@ -598,6 +616,11 @@ int i915_gem_do_init(struct drm_device *dev, unsigned long start, | |||
598 | int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); | 616 | int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); |
599 | int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, | 617 | int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, |
600 | int write); | 618 | int write); |
619 | int i915_gem_attach_phys_object(struct drm_device *dev, | ||
620 | struct drm_gem_object *obj, int id); | ||
621 | void i915_gem_detach_phys_object(struct drm_device *dev, | ||
622 | struct drm_gem_object *obj); | ||
623 | void i915_gem_free_all_phys_object(struct drm_device *dev); | ||
601 | 624 | ||
602 | /* i915_gem_tiling.c */ | 625 | /* i915_gem_tiling.c */ |
603 | void i915_gem_detect_bit_6_swizzle(struct drm_device *dev); | 626 | void i915_gem_detect_bit_6_swizzle(struct drm_device *dev); |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 1384d6686555..debad5c04cc0 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -55,6 +55,9 @@ static int i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, | |||
55 | static void i915_gem_object_get_fence_reg(struct drm_gem_object *obj); | 55 | static void i915_gem_object_get_fence_reg(struct drm_gem_object *obj); |
56 | static void i915_gem_clear_fence_reg(struct drm_gem_object *obj); | 56 | static void i915_gem_clear_fence_reg(struct drm_gem_object *obj); |
57 | static int i915_gem_evict_something(struct drm_device *dev); | 57 | static int i915_gem_evict_something(struct drm_device *dev); |
58 | static int i915_gem_phys_pwrite(struct drm_device *dev, struct drm_gem_object *obj, | ||
59 | struct drm_i915_gem_pwrite *args, | ||
60 | struct drm_file *file_priv); | ||
58 | 61 | ||
59 | int i915_gem_do_init(struct drm_device *dev, unsigned long start, | 62 | int i915_gem_do_init(struct drm_device *dev, unsigned long start, |
60 | unsigned long end) | 63 | unsigned long end) |
@@ -386,8 +389,10 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, | |||
386 | * pread/pwrite currently are reading and writing from the CPU | 389 | * pread/pwrite currently are reading and writing from the CPU |
387 | * perspective, requiring manual detiling by the client. | 390 | * perspective, requiring manual detiling by the client. |
388 | */ | 391 | */ |
389 | if (obj_priv->tiling_mode == I915_TILING_NONE && | 392 | if (obj_priv->phys_obj) |
390 | dev->gtt_total != 0) | 393 | ret = i915_gem_phys_pwrite(dev, obj, args, file_priv); |
394 | else if (obj_priv->tiling_mode == I915_TILING_NONE && | ||
395 | dev->gtt_total != 0) | ||
391 | ret = i915_gem_gtt_pwrite(dev, obj, args, file_priv); | 396 | ret = i915_gem_gtt_pwrite(dev, obj, args, file_priv); |
392 | else | 397 | else |
393 | ret = i915_gem_shmem_pwrite(dev, obj, args, file_priv); | 398 | ret = i915_gem_shmem_pwrite(dev, obj, args, file_priv); |
@@ -2858,6 +2863,9 @@ void i915_gem_free_object(struct drm_gem_object *obj) | |||
2858 | while (obj_priv->pin_count > 0) | 2863 | while (obj_priv->pin_count > 0) |
2859 | i915_gem_object_unpin(obj); | 2864 | i915_gem_object_unpin(obj); |
2860 | 2865 | ||
2866 | if (obj_priv->phys_obj) | ||
2867 | i915_gem_detach_phys_object(dev, obj); | ||
2868 | |||
2861 | i915_gem_object_unbind(obj); | 2869 | i915_gem_object_unbind(obj); |
2862 | 2870 | ||
2863 | list = &obj->map_list; | 2871 | list = &obj->map_list; |
@@ -3293,3 +3301,180 @@ i915_gem_load(struct drm_device *dev) | |||
3293 | 3301 | ||
3294 | i915_gem_detect_bit_6_swizzle(dev); | 3302 | i915_gem_detect_bit_6_swizzle(dev); |
3295 | } | 3303 | } |
3304 | |||
3305 | /* | ||
3306 | * Create a physically contiguous memory object for this object | ||
3307 | * e.g. for cursor + overlay regs | ||
3308 | */ | ||
3309 | int i915_gem_init_phys_object(struct drm_device *dev, | ||
3310 | int id, int size) | ||
3311 | { | ||
3312 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
3313 | struct drm_i915_gem_phys_object *phys_obj; | ||
3314 | int ret; | ||
3315 | |||
3316 | if (dev_priv->mm.phys_objs[id - 1] || !size) | ||
3317 | return 0; | ||
3318 | |||
3319 | phys_obj = drm_calloc(1, sizeof(struct drm_i915_gem_phys_object), DRM_MEM_DRIVER); | ||
3320 | if (!phys_obj) | ||
3321 | return -ENOMEM; | ||
3322 | |||
3323 | phys_obj->id = id; | ||
3324 | |||
3325 | phys_obj->handle = drm_pci_alloc(dev, size, 0, 0xffffffff); | ||
3326 | if (!phys_obj->handle) { | ||
3327 | ret = -ENOMEM; | ||
3328 | goto kfree_obj; | ||
3329 | } | ||
3330 | #ifdef CONFIG_X86 | ||
3331 | set_memory_wc((unsigned long)phys_obj->handle->vaddr, phys_obj->handle->size / PAGE_SIZE); | ||
3332 | #endif | ||
3333 | |||
3334 | dev_priv->mm.phys_objs[id - 1] = phys_obj; | ||
3335 | |||
3336 | return 0; | ||
3337 | kfree_obj: | ||
3338 | drm_free(phys_obj, sizeof(struct drm_i915_gem_phys_object), DRM_MEM_DRIVER); | ||
3339 | return ret; | ||
3340 | } | ||
3341 | |||
3342 | void i915_gem_free_phys_object(struct drm_device *dev, int id) | ||
3343 | { | ||
3344 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
3345 | struct drm_i915_gem_phys_object *phys_obj; | ||
3346 | |||
3347 | if (!dev_priv->mm.phys_objs[id - 1]) | ||
3348 | return; | ||
3349 | |||
3350 | phys_obj = dev_priv->mm.phys_objs[id - 1]; | ||
3351 | if (phys_obj->cur_obj) { | ||
3352 | i915_gem_detach_phys_object(dev, phys_obj->cur_obj); | ||
3353 | } | ||
3354 | |||
3355 | #ifdef CONFIG_X86 | ||
3356 | set_memory_wb((unsigned long)phys_obj->handle->vaddr, phys_obj->handle->size / PAGE_SIZE); | ||
3357 | #endif | ||
3358 | drm_pci_free(dev, phys_obj->handle); | ||
3359 | kfree(phys_obj); | ||
3360 | dev_priv->mm.phys_objs[id - 1] = NULL; | ||
3361 | } | ||
3362 | |||
3363 | void i915_gem_free_all_phys_object(struct drm_device *dev) | ||
3364 | { | ||
3365 | int i; | ||
3366 | |||
3367 | for (i = I915_GEM_PHYS_CURSOR_0; i <= I915_MAX_PHYS_OBJECT; i++) | ||
3368 | i915_gem_free_phys_object(dev, i); | ||
3369 | } | ||
3370 | |||
3371 | void i915_gem_detach_phys_object(struct drm_device *dev, | ||
3372 | struct drm_gem_object *obj) | ||
3373 | { | ||
3374 | struct drm_i915_gem_object *obj_priv; | ||
3375 | int i; | ||
3376 | int ret; | ||
3377 | int page_count; | ||
3378 | |||
3379 | obj_priv = obj->driver_private; | ||
3380 | if (!obj_priv->phys_obj) | ||
3381 | return; | ||
3382 | |||
3383 | ret = i915_gem_object_get_page_list(obj); | ||
3384 | if (ret) | ||
3385 | goto out; | ||
3386 | |||
3387 | page_count = obj->size / PAGE_SIZE; | ||
3388 | |||
3389 | for (i = 0; i < page_count; i++) { | ||
3390 | char *dst = kmap_atomic(obj_priv->page_list[i], KM_USER0); | ||
3391 | char *src = obj_priv->phys_obj->handle->vaddr + (i * PAGE_SIZE); | ||
3392 | |||
3393 | memcpy(dst, src, PAGE_SIZE); | ||
3394 | kunmap_atomic(dst, KM_USER0); | ||
3395 | } | ||
3396 | drm_clflush_pages(obj_priv->page_list, page_count); | ||
3397 | drm_agp_chipset_flush(dev); | ||
3398 | out: | ||
3399 | obj_priv->phys_obj->cur_obj = NULL; | ||
3400 | obj_priv->phys_obj = NULL; | ||
3401 | } | ||
3402 | |||
3403 | int | ||
3404 | i915_gem_attach_phys_object(struct drm_device *dev, | ||
3405 | struct drm_gem_object *obj, int id) | ||
3406 | { | ||
3407 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
3408 | struct drm_i915_gem_object *obj_priv; | ||
3409 | int ret = 0; | ||
3410 | int page_count; | ||
3411 | int i; | ||
3412 | |||
3413 | if (id > I915_MAX_PHYS_OBJECT) | ||
3414 | return -EINVAL; | ||
3415 | |||
3416 | obj_priv = obj->driver_private; | ||
3417 | |||
3418 | if (obj_priv->phys_obj) { | ||
3419 | if (obj_priv->phys_obj->id == id) | ||
3420 | return 0; | ||
3421 | i915_gem_detach_phys_object(dev, obj); | ||
3422 | } | ||
3423 | |||
3424 | |||
3425 | /* create a new object */ | ||
3426 | if (!dev_priv->mm.phys_objs[id - 1]) { | ||
3427 | ret = i915_gem_init_phys_object(dev, id, | ||
3428 | obj->size); | ||
3429 | if (ret) { | ||
3430 | DRM_ERROR("failed to init phys object %d size: %zu\n", id, obj->size); | ||
3431 | goto out; | ||
3432 | } | ||
3433 | } | ||
3434 | |||
3435 | /* bind to the object */ | ||
3436 | obj_priv->phys_obj = dev_priv->mm.phys_objs[id - 1]; | ||
3437 | obj_priv->phys_obj->cur_obj = obj; | ||
3438 | |||
3439 | ret = i915_gem_object_get_page_list(obj); | ||
3440 | if (ret) { | ||
3441 | DRM_ERROR("failed to get page list\n"); | ||
3442 | goto out; | ||
3443 | } | ||
3444 | |||
3445 | page_count = obj->size / PAGE_SIZE; | ||
3446 | |||
3447 | for (i = 0; i < page_count; i++) { | ||
3448 | char *src = kmap_atomic(obj_priv->page_list[i], KM_USER0); | ||
3449 | char *dst = obj_priv->phys_obj->handle->vaddr + (i * PAGE_SIZE); | ||
3450 | |||
3451 | memcpy(dst, src, PAGE_SIZE); | ||
3452 | kunmap_atomic(src, KM_USER0); | ||
3453 | } | ||
3454 | |||
3455 | return 0; | ||
3456 | out: | ||
3457 | return ret; | ||
3458 | } | ||
3459 | |||
3460 | static int | ||
3461 | i915_gem_phys_pwrite(struct drm_device *dev, struct drm_gem_object *obj, | ||
3462 | struct drm_i915_gem_pwrite *args, | ||
3463 | struct drm_file *file_priv) | ||
3464 | { | ||
3465 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | ||
3466 | void *obj_addr; | ||
3467 | int ret; | ||
3468 | char __user *user_data; | ||
3469 | |||
3470 | user_data = (char __user *) (uintptr_t) args->data_ptr; | ||
3471 | obj_addr = obj_priv->phys_obj->handle->vaddr + args->offset; | ||
3472 | |||
3473 | DRM_ERROR("obj_addr %p, %lld\n", obj_addr, args->size); | ||
3474 | ret = copy_from_user(obj_addr, user_data, args->size); | ||
3475 | if (ret) | ||
3476 | return -EFAULT; | ||
3477 | |||
3478 | drm_agp_chipset_flush(dev); | ||
3479 | return 0; | ||
3480 | } | ||
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 0cadafbef411..6290219de6c8 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
@@ -411,6 +411,12 @@ int i915_enable_vblank(struct drm_device *dev, int pipe) | |||
411 | { | 411 | { |
412 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 412 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
413 | unsigned long irqflags; | 413 | unsigned long irqflags; |
414 | int pipeconf_reg = (pipe == 0) ? PIPEACONF : PIPEBCONF; | ||
415 | u32 pipeconf; | ||
416 | |||
417 | pipeconf = I915_READ(pipeconf_reg); | ||
418 | if (!(pipeconf & PIPEACONF_ENABLE)) | ||
419 | return -EINVAL; | ||
414 | 420 | ||
415 | spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags); | 421 | spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags); |
416 | if (IS_I965G(dev)) | 422 | if (IS_I965G(dev)) |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 8ccb9c3ab868..31c3732b7a69 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -401,6 +401,8 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, | |||
401 | I915_WRITE(dspstride, crtc->fb->pitch); | 401 | I915_WRITE(dspstride, crtc->fb->pitch); |
402 | 402 | ||
403 | dspcntr = I915_READ(dspcntr_reg); | 403 | dspcntr = I915_READ(dspcntr_reg); |
404 | /* Mask out pixel format bits in case we change it */ | ||
405 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; | ||
404 | switch (crtc->fb->bits_per_pixel) { | 406 | switch (crtc->fb->bits_per_pixel) { |
405 | case 8: | 407 | case 8: |
406 | dspcntr |= DISPPLANE_8BPP; | 408 | dspcntr |= DISPPLANE_8BPP; |
@@ -1014,21 +1016,25 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc, | |||
1014 | 1016 | ||
1015 | if (bo->size < width * height * 4) { | 1017 | if (bo->size < width * height * 4) { |
1016 | DRM_ERROR("buffer is to small\n"); | 1018 | DRM_ERROR("buffer is to small\n"); |
1017 | drm_gem_object_unreference(bo); | 1019 | ret = -ENOMEM; |
1018 | return -ENOMEM; | 1020 | goto fail; |
1019 | } | 1021 | } |
1020 | 1022 | ||
1021 | if (dev_priv->cursor_needs_physical) { | 1023 | /* we only need to pin inside GTT if cursor is non-phy */ |
1022 | addr = dev->agp->base + obj_priv->gtt_offset; | 1024 | if (!dev_priv->cursor_needs_physical) { |
1023 | } else { | 1025 | ret = i915_gem_object_pin(bo, PAGE_SIZE); |
1026 | if (ret) { | ||
1027 | DRM_ERROR("failed to pin cursor bo\n"); | ||
1028 | goto fail; | ||
1029 | } | ||
1024 | addr = obj_priv->gtt_offset; | 1030 | addr = obj_priv->gtt_offset; |
1025 | } | 1031 | } else { |
1026 | 1032 | ret = i915_gem_attach_phys_object(dev, bo, (pipe == 0) ? I915_GEM_PHYS_CURSOR_0 : I915_GEM_PHYS_CURSOR_1); | |
1027 | ret = i915_gem_object_pin(bo, PAGE_SIZE); | 1033 | if (ret) { |
1028 | if (ret) { | 1034 | DRM_ERROR("failed to attach phys object\n"); |
1029 | DRM_ERROR("failed to pin cursor bo\n"); | 1035 | goto fail; |
1030 | drm_gem_object_unreference(bo); | 1036 | } |
1031 | return ret; | 1037 | addr = obj_priv->phys_obj->handle->busaddr; |
1032 | } | 1038 | } |
1033 | 1039 | ||
1034 | temp = 0; | 1040 | temp = 0; |
@@ -1041,14 +1047,25 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc, | |||
1041 | I915_WRITE(base, addr); | 1047 | I915_WRITE(base, addr); |
1042 | 1048 | ||
1043 | if (intel_crtc->cursor_bo) { | 1049 | if (intel_crtc->cursor_bo) { |
1044 | i915_gem_object_unpin(intel_crtc->cursor_bo); | 1050 | if (dev_priv->cursor_needs_physical) { |
1051 | if (intel_crtc->cursor_bo != bo) | ||
1052 | i915_gem_detach_phys_object(dev, intel_crtc->cursor_bo); | ||
1053 | } else | ||
1054 | i915_gem_object_unpin(intel_crtc->cursor_bo); | ||
1055 | mutex_lock(&dev->struct_mutex); | ||
1045 | drm_gem_object_unreference(intel_crtc->cursor_bo); | 1056 | drm_gem_object_unreference(intel_crtc->cursor_bo); |
1057 | mutex_unlock(&dev->struct_mutex); | ||
1046 | } | 1058 | } |
1047 | 1059 | ||
1048 | intel_crtc->cursor_addr = addr; | 1060 | intel_crtc->cursor_addr = addr; |
1049 | intel_crtc->cursor_bo = bo; | 1061 | intel_crtc->cursor_bo = bo; |
1050 | 1062 | ||
1051 | return 0; | 1063 | return 0; |
1064 | fail: | ||
1065 | mutex_lock(&dev->struct_mutex); | ||
1066 | drm_gem_object_unreference(bo); | ||
1067 | mutex_unlock(&dev->struct_mutex); | ||
1068 | return ret; | ||
1052 | } | 1069 | } |
1053 | 1070 | ||
1054 | static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) | 1071 | static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) |
diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c index a5a2f5339e9e..5ee9d4c25753 100644 --- a/drivers/gpu/drm/i915/intel_i2c.c +++ b/drivers/gpu/drm/i915/intel_i2c.c | |||
@@ -137,10 +137,6 @@ struct intel_i2c_chan *intel_i2c_create(struct drm_device *dev, const u32 reg, | |||
137 | chan->reg = reg; | 137 | chan->reg = reg; |
138 | snprintf(chan->adapter.name, I2C_NAME_SIZE, "intel drm %s", name); | 138 | snprintf(chan->adapter.name, I2C_NAME_SIZE, "intel drm %s", name); |
139 | chan->adapter.owner = THIS_MODULE; | 139 | chan->adapter.owner = THIS_MODULE; |
140 | #ifndef I2C_HW_B_INTELFB | ||
141 | #define I2C_HW_B_INTELFB I2C_HW_B_I810 | ||
142 | #endif | ||
143 | chan->adapter.id = I2C_HW_B_INTELFB; | ||
144 | chan->adapter.algo_data = &chan->algo; | 140 | chan->adapter.algo_data = &chan->algo; |
145 | chan->adapter.dev.parent = &dev->pdev->dev; | 141 | chan->adapter.dev.parent = &dev->pdev->dev; |
146 | chan->algo.setsda = set_data; | 142 | chan->algo.setsda = set_data; |
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index ccecfaf6307b..6b1148fc2cbe 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
@@ -340,6 +340,18 @@ static void intel_lvds_destroy(struct drm_connector *connector) | |||
340 | kfree(connector); | 340 | kfree(connector); |
341 | } | 341 | } |
342 | 342 | ||
343 | static int intel_lvds_set_property(struct drm_connector *connector, | ||
344 | struct drm_property *property, | ||
345 | uint64_t value) | ||
346 | { | ||
347 | struct drm_device *dev = connector->dev; | ||
348 | |||
349 | if (property == dev->mode_config.dpms_property && connector->encoder) | ||
350 | intel_lvds_dpms(connector->encoder, (uint32_t)(value & 0xf)); | ||
351 | |||
352 | return 0; | ||
353 | } | ||
354 | |||
343 | static const struct drm_encoder_helper_funcs intel_lvds_helper_funcs = { | 355 | static const struct drm_encoder_helper_funcs intel_lvds_helper_funcs = { |
344 | .dpms = intel_lvds_dpms, | 356 | .dpms = intel_lvds_dpms, |
345 | .mode_fixup = intel_lvds_mode_fixup, | 357 | .mode_fixup = intel_lvds_mode_fixup, |
@@ -359,6 +371,7 @@ static const struct drm_connector_funcs intel_lvds_connector_funcs = { | |||
359 | .restore = intel_lvds_restore, | 371 | .restore = intel_lvds_restore, |
360 | .detect = intel_lvds_detect, | 372 | .detect = intel_lvds_detect, |
361 | .fill_modes = drm_helper_probe_single_connector_modes, | 373 | .fill_modes = drm_helper_probe_single_connector_modes, |
374 | .set_property = intel_lvds_set_property, | ||
362 | .destroy = intel_lvds_destroy, | 375 | .destroy = intel_lvds_destroy, |
363 | }; | 376 | }; |
364 | 377 | ||
@@ -456,6 +469,13 @@ void intel_lvds_init(struct drm_device *dev) | |||
456 | dev_priv->panel_fixed_mode = | 469 | dev_priv->panel_fixed_mode = |
457 | drm_mode_duplicate(dev, dev_priv->vbt_mode); | 470 | drm_mode_duplicate(dev, dev_priv->vbt_mode); |
458 | mutex_unlock(&dev->mode_config.mutex); | 471 | mutex_unlock(&dev->mode_config.mutex); |
472 | if (dev_priv->panel_fixed_mode) { | ||
473 | dev_priv->panel_fixed_mode->type |= | ||
474 | DRM_MODE_TYPE_PREFERRED; | ||
475 | drm_mode_probed_add(connector, | ||
476 | dev_priv->panel_fixed_mode); | ||
477 | goto out; | ||
478 | } | ||
459 | } | 479 | } |
460 | 480 | ||
461 | /* | 481 | /* |
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 4b33bc82cc24..b84bf066879b 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig | |||
@@ -189,6 +189,16 @@ config SENSORS_ADT7473 | |||
189 | This driver can also be built as a module. If so, the module | 189 | This driver can also be built as a module. If so, the module |
190 | will be called adt7473. | 190 | will be called adt7473. |
191 | 191 | ||
192 | config SENSORS_ADT7475 | ||
193 | tristate "Analog Devices ADT7475" | ||
194 | depends on I2C && EXPERIMENTAL | ||
195 | help | ||
196 | If you say yes here you get support for the Analog Devices | ||
197 | ADT7475 hardware monitoring chips. | ||
198 | |||
199 | This driver can also be build as a module. If so, the module | ||
200 | will be called adt7475. | ||
201 | |||
192 | config SENSORS_K8TEMP | 202 | config SENSORS_K8TEMP |
193 | tristate "AMD Athlon64/FX or Opteron temperature sensor" | 203 | tristate "AMD Athlon64/FX or Opteron temperature sensor" |
194 | depends on X86 && PCI && EXPERIMENTAL | 204 | depends on X86 && PCI && EXPERIMENTAL |
@@ -861,6 +871,8 @@ config SENSORS_HDAPS | |||
861 | config SENSORS_LIS3LV02D | 871 | config SENSORS_LIS3LV02D |
862 | tristate "STMicroeletronics LIS3LV02Dx three-axis digital accelerometer" | 872 | tristate "STMicroeletronics LIS3LV02Dx three-axis digital accelerometer" |
863 | depends on ACPI && INPUT | 873 | depends on ACPI && INPUT |
874 | select NEW_LEDS | ||
875 | select LEDS_CLASS | ||
864 | default n | 876 | default n |
865 | help | 877 | help |
866 | This driver provides support for the LIS3LV02Dx accelerometer. In | 878 | This driver provides support for the LIS3LV02Dx accelerometer. In |
@@ -872,10 +884,16 @@ config SENSORS_LIS3LV02D | |||
872 | /sys/devices/platform/lis3lv02d. | 884 | /sys/devices/platform/lis3lv02d. |
873 | 885 | ||
874 | This driver also provides an absolute input class device, allowing | 886 | This driver also provides an absolute input class device, allowing |
875 | the laptop to act as a pinball machine-esque joystick. | 887 | the laptop to act as a pinball machine-esque joystick. On HP laptops, |
888 | if the led infrastructure is activated, support for a led indicating | ||
889 | disk protection will be provided as hp:red:hddprotection. | ||
876 | 890 | ||
877 | This driver can also be built as a module. If so, the module | 891 | This driver can also be built as modules. If so, the core module |
878 | will be called lis3lv02d. | 892 | will be called lis3lv02d and a specific module for HP laptops will be |
893 | called hp_accel. | ||
894 | |||
895 | Say Y here if you have an applicable laptop and want to experience | ||
896 | the awesome power of lis3lv02d. | ||
879 | 897 | ||
880 | config SENSORS_APPLESMC | 898 | config SENSORS_APPLESMC |
881 | tristate "Apple SMC (Motion sensor, light sensor, keyboard backlight)" | 899 | tristate "Apple SMC (Motion sensor, light sensor, keyboard backlight)" |
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile index 19cb1ace3eb4..2e80f37f39eb 100644 --- a/drivers/hwmon/Makefile +++ b/drivers/hwmon/Makefile | |||
@@ -28,6 +28,8 @@ obj-$(CONFIG_SENSORS_ADS7828) += ads7828.o | |||
28 | obj-$(CONFIG_SENSORS_ADT7462) += adt7462.o | 28 | obj-$(CONFIG_SENSORS_ADT7462) += adt7462.o |
29 | obj-$(CONFIG_SENSORS_ADT7470) += adt7470.o | 29 | obj-$(CONFIG_SENSORS_ADT7470) += adt7470.o |
30 | obj-$(CONFIG_SENSORS_ADT7473) += adt7473.o | 30 | obj-$(CONFIG_SENSORS_ADT7473) += adt7473.o |
31 | obj-$(CONFIG_SENSORS_ADT7475) += adt7475.o | ||
32 | |||
31 | obj-$(CONFIG_SENSORS_APPLESMC) += applesmc.o | 33 | obj-$(CONFIG_SENSORS_APPLESMC) += applesmc.o |
32 | obj-$(CONFIG_SENSORS_AMS) += ams/ | 34 | obj-$(CONFIG_SENSORS_AMS) += ams/ |
33 | obj-$(CONFIG_SENSORS_ATXP1) += atxp1.o | 35 | obj-$(CONFIG_SENSORS_ATXP1) += atxp1.o |
diff --git a/drivers/hwmon/abituguru3.c b/drivers/hwmon/abituguru3.c index 70bb854086df..e52b38806d03 100644 --- a/drivers/hwmon/abituguru3.c +++ b/drivers/hwmon/abituguru3.c | |||
@@ -279,7 +279,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { | |||
279 | { "OTES1 Fan", 36, 2, 60, 1, 0 }, | 279 | { "OTES1 Fan", 36, 2, 60, 1, 0 }, |
280 | { NULL, 0, 0, 0, 0, 0 } } | 280 | { NULL, 0, 0, 0, 0, 0 } } |
281 | }, | 281 | }, |
282 | { 0x0011, "AT8 32X(ATI RD580-ULI M1575)", { | 282 | { 0x0011, "AT8 32X", { |
283 | { "CPU Core", 0, 0, 10, 1, 0 }, | 283 | { "CPU Core", 0, 0, 10, 1, 0 }, |
284 | { "DDR", 1, 0, 20, 1, 0 }, | 284 | { "DDR", 1, 0, 20, 1, 0 }, |
285 | { "DDR VTT", 2, 0, 10, 1, 0 }, | 285 | { "DDR VTT", 2, 0, 10, 1, 0 }, |
@@ -402,7 +402,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { | |||
402 | { "AUX3 Fan", 36, 2, 60, 1, 0 }, | 402 | { "AUX3 Fan", 36, 2, 60, 1, 0 }, |
403 | { NULL, 0, 0, 0, 0, 0 } } | 403 | { NULL, 0, 0, 0, 0, 0 } } |
404 | }, | 404 | }, |
405 | { 0x0016, "AW9D-MAX (Intel i975-ICH7)", { | 405 | { 0x0016, "AW9D-MAX", { |
406 | { "CPU Core", 0, 0, 10, 1, 0 }, | 406 | { "CPU Core", 0, 0, 10, 1, 0 }, |
407 | { "DDR2", 1, 0, 20, 1, 0 }, | 407 | { "DDR2", 1, 0, 20, 1, 0 }, |
408 | { "DDR2 VTT", 2, 0, 10, 1, 0 }, | 408 | { "DDR2 VTT", 2, 0, 10, 1, 0 }, |
@@ -482,7 +482,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { | |||
482 | { "AUX3 Fan", 36, 2, 60, 1, 0 }, | 482 | { "AUX3 Fan", 36, 2, 60, 1, 0 }, |
483 | { NULL, 0, 0, 0, 0, 0 } } | 483 | { NULL, 0, 0, 0, 0, 0 } } |
484 | }, | 484 | }, |
485 | { 0x0019, NULL /* Unknown, need DMI string */, { | 485 | { 0x0019, "IN9 32X MAX", { |
486 | { "CPU Core", 7, 0, 10, 1, 0 }, | 486 | { "CPU Core", 7, 0, 10, 1, 0 }, |
487 | { "DDR2", 13, 0, 20, 1, 0 }, | 487 | { "DDR2", 13, 0, 20, 1, 0 }, |
488 | { "DDR2 VTT", 14, 0, 10, 1, 0 }, | 488 | { "DDR2 VTT", 14, 0, 10, 1, 0 }, |
@@ -509,7 +509,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { | |||
509 | { "AUX3 FAN", 36, 2, 60, 1, 0 }, | 509 | { "AUX3 FAN", 36, 2, 60, 1, 0 }, |
510 | { NULL, 0, 0, 0, 0, 0 } } | 510 | { NULL, 0, 0, 0, 0, 0 } } |
511 | }, | 511 | }, |
512 | { 0x001A, "IP35 Pro(Intel P35-ICH9R)", { | 512 | { 0x001A, "IP35 Pro", { |
513 | { "CPU Core", 0, 0, 10, 1, 0 }, | 513 | { "CPU Core", 0, 0, 10, 1, 0 }, |
514 | { "DDR2", 1, 0, 20, 1, 0 }, | 514 | { "DDR2", 1, 0, 20, 1, 0 }, |
515 | { "DDR2 VTT", 2, 0, 10, 1, 0 }, | 515 | { "DDR2 VTT", 2, 0, 10, 1, 0 }, |
@@ -1128,6 +1128,7 @@ static int __init abituguru3_dmi_detect(void) | |||
1128 | { | 1128 | { |
1129 | const char *board_vendor, *board_name; | 1129 | const char *board_vendor, *board_name; |
1130 | int i, err = (force) ? 1 : -ENODEV; | 1130 | int i, err = (force) ? 1 : -ENODEV; |
1131 | size_t sublen; | ||
1131 | 1132 | ||
1132 | board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); | 1133 | board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); |
1133 | if (!board_vendor || strcmp(board_vendor, "http://www.abit.com.tw/")) | 1134 | if (!board_vendor || strcmp(board_vendor, "http://www.abit.com.tw/")) |
@@ -1137,9 +1138,20 @@ static int __init abituguru3_dmi_detect(void) | |||
1137 | if (!board_name) | 1138 | if (!board_name) |
1138 | return err; | 1139 | return err; |
1139 | 1140 | ||
1141 | /* At the moment, we don't care about the part of the vendor | ||
1142 | * DMI string contained in brackets. Truncate the string at | ||
1143 | * the first occurrence of a bracket. Trim any trailing space | ||
1144 | * from the substring. | ||
1145 | */ | ||
1146 | sublen = strcspn(board_name, "("); | ||
1147 | while (sublen > 0 && board_name[sublen - 1] == ' ') | ||
1148 | sublen--; | ||
1149 | |||
1140 | for (i = 0; abituguru3_motherboards[i].id; i++) { | 1150 | for (i = 0; abituguru3_motherboards[i].id; i++) { |
1141 | const char *dmi_name = abituguru3_motherboards[i].dmi_name; | 1151 | const char *dmi_name = abituguru3_motherboards[i].dmi_name; |
1142 | if (dmi_name && !strcmp(dmi_name, board_name)) | 1152 | if (!dmi_name || strlen(dmi_name) != sublen) |
1153 | continue; | ||
1154 | if (!strncasecmp(board_name, dmi_name, sublen)) | ||
1143 | break; | 1155 | break; |
1144 | } | 1156 | } |
1145 | 1157 | ||
@@ -1153,7 +1165,7 @@ static int __init abituguru3_dmi_detect(void) | |||
1153 | 1165 | ||
1154 | static inline int abituguru3_dmi_detect(void) | 1166 | static inline int abituguru3_dmi_detect(void) |
1155 | { | 1167 | { |
1156 | return -ENODEV; | 1168 | return 1; |
1157 | } | 1169 | } |
1158 | 1170 | ||
1159 | #endif /* CONFIG_DMI */ | 1171 | #endif /* CONFIG_DMI */ |
diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c new file mode 100644 index 000000000000..d39877a7da63 --- /dev/null +++ b/drivers/hwmon/adt7475.c | |||
@@ -0,0 +1,1221 @@ | |||
1 | /* | ||
2 | * adt7475 - Thermal sensor driver for the ADT7475 chip and derivatives | ||
3 | * Copyright (C) 2007-2008, Advanced Micro Devices, Inc. | ||
4 | * Copyright (C) 2008 Jordan Crouse <jordan@cosmicpenguin.net> | ||
5 | * Copyright (C) 2008 Hans de Goede <hdegoede@redhat.com> | ||
6 | |||
7 | * Derived from the lm83 driver by Jean Delvare | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | #include <linux/module.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/slab.h> | ||
17 | #include <linux/i2c.h> | ||
18 | #include <linux/hwmon.h> | ||
19 | #include <linux/hwmon-sysfs.h> | ||
20 | #include <linux/err.h> | ||
21 | |||
22 | /* Indexes for the sysfs hooks */ | ||
23 | |||
24 | #define INPUT 0 | ||
25 | #define MIN 1 | ||
26 | #define MAX 2 | ||
27 | #define CONTROL 3 | ||
28 | #define OFFSET 3 | ||
29 | #define AUTOMIN 4 | ||
30 | #define THERM 5 | ||
31 | #define HYSTERSIS 6 | ||
32 | |||
33 | /* These are unique identifiers for the sysfs functions - unlike the | ||
34 | numbers above, these are not also indexes into an array | ||
35 | */ | ||
36 | |||
37 | #define ALARM 9 | ||
38 | #define FAULT 10 | ||
39 | |||
40 | /* 7475 Common Registers */ | ||
41 | |||
42 | #define REG_VOLTAGE_BASE 0x21 | ||
43 | #define REG_TEMP_BASE 0x25 | ||
44 | #define REG_TACH_BASE 0x28 | ||
45 | #define REG_PWM_BASE 0x30 | ||
46 | #define REG_PWM_MAX_BASE 0x38 | ||
47 | |||
48 | #define REG_DEVID 0x3D | ||
49 | #define REG_VENDID 0x3E | ||
50 | |||
51 | #define REG_STATUS1 0x41 | ||
52 | #define REG_STATUS2 0x42 | ||
53 | |||
54 | #define REG_VOLTAGE_MIN_BASE 0x46 | ||
55 | #define REG_VOLTAGE_MAX_BASE 0x47 | ||
56 | |||
57 | #define REG_TEMP_MIN_BASE 0x4E | ||
58 | #define REG_TEMP_MAX_BASE 0x4F | ||
59 | |||
60 | #define REG_TACH_MIN_BASE 0x54 | ||
61 | |||
62 | #define REG_PWM_CONFIG_BASE 0x5C | ||
63 | |||
64 | #define REG_TEMP_TRANGE_BASE 0x5F | ||
65 | |||
66 | #define REG_PWM_MIN_BASE 0x64 | ||
67 | |||
68 | #define REG_TEMP_TMIN_BASE 0x67 | ||
69 | #define REG_TEMP_THERM_BASE 0x6A | ||
70 | |||
71 | #define REG_REMOTE1_HYSTERSIS 0x6D | ||
72 | #define REG_REMOTE2_HYSTERSIS 0x6E | ||
73 | |||
74 | #define REG_TEMP_OFFSET_BASE 0x70 | ||
75 | |||
76 | #define REG_EXTEND1 0x76 | ||
77 | #define REG_EXTEND2 0x77 | ||
78 | #define REG_CONFIG5 0x7C | ||
79 | |||
80 | #define CONFIG5_TWOSCOMP 0x01 | ||
81 | #define CONFIG5_TEMPOFFSET 0x02 | ||
82 | |||
83 | /* ADT7475 Settings */ | ||
84 | |||
85 | #define ADT7475_VOLTAGE_COUNT 2 | ||
86 | #define ADT7475_TEMP_COUNT 3 | ||
87 | #define ADT7475_TACH_COUNT 4 | ||
88 | #define ADT7475_PWM_COUNT 3 | ||
89 | |||
90 | /* Macro to read the registers */ | ||
91 | |||
92 | #define adt7475_read(reg) i2c_smbus_read_byte_data(client, (reg)) | ||
93 | |||
94 | /* Macros to easily index the registers */ | ||
95 | |||
96 | #define TACH_REG(idx) (REG_TACH_BASE + ((idx) * 2)) | ||
97 | #define TACH_MIN_REG(idx) (REG_TACH_MIN_BASE + ((idx) * 2)) | ||
98 | |||
99 | #define PWM_REG(idx) (REG_PWM_BASE + (idx)) | ||
100 | #define PWM_MAX_REG(idx) (REG_PWM_MAX_BASE + (idx)) | ||
101 | #define PWM_MIN_REG(idx) (REG_PWM_MIN_BASE + (idx)) | ||
102 | #define PWM_CONFIG_REG(idx) (REG_PWM_CONFIG_BASE + (idx)) | ||
103 | |||
104 | #define VOLTAGE_REG(idx) (REG_VOLTAGE_BASE + (idx)) | ||
105 | #define VOLTAGE_MIN_REG(idx) (REG_VOLTAGE_MIN_BASE + ((idx) * 2)) | ||
106 | #define VOLTAGE_MAX_REG(idx) (REG_VOLTAGE_MAX_BASE + ((idx) * 2)) | ||
107 | |||
108 | #define TEMP_REG(idx) (REG_TEMP_BASE + (idx)) | ||
109 | #define TEMP_MIN_REG(idx) (REG_TEMP_MIN_BASE + ((idx) * 2)) | ||
110 | #define TEMP_MAX_REG(idx) (REG_TEMP_MAX_BASE + ((idx) * 2)) | ||
111 | #define TEMP_TMIN_REG(idx) (REG_TEMP_TMIN_BASE + (idx)) | ||
112 | #define TEMP_THERM_REG(idx) (REG_TEMP_THERM_BASE + (idx)) | ||
113 | #define TEMP_OFFSET_REG(idx) (REG_TEMP_OFFSET_BASE + (idx)) | ||
114 | #define TEMP_TRANGE_REG(idx) (REG_TEMP_TRANGE_BASE + (idx)) | ||
115 | |||
116 | static unsigned short normal_i2c[] = { 0x2e, I2C_CLIENT_END }; | ||
117 | |||
118 | I2C_CLIENT_INSMOD_1(adt7475); | ||
119 | |||
120 | static const struct i2c_device_id adt7475_id[] = { | ||
121 | { "adt7475", adt7475 }, | ||
122 | { } | ||
123 | }; | ||
124 | MODULE_DEVICE_TABLE(i2c, adt7475_id); | ||
125 | |||
126 | struct adt7475_data { | ||
127 | struct device *hwmon_dev; | ||
128 | struct mutex lock; | ||
129 | |||
130 | unsigned long measure_updated; | ||
131 | unsigned long limits_updated; | ||
132 | char valid; | ||
133 | |||
134 | u8 config5; | ||
135 | u16 alarms; | ||
136 | u16 voltage[3][3]; | ||
137 | u16 temp[7][3]; | ||
138 | u16 tach[2][4]; | ||
139 | u8 pwm[4][3]; | ||
140 | u8 range[3]; | ||
141 | u8 pwmctl[3]; | ||
142 | u8 pwmchan[3]; | ||
143 | }; | ||
144 | |||
145 | static struct i2c_driver adt7475_driver; | ||
146 | static struct adt7475_data *adt7475_update_device(struct device *dev); | ||
147 | static void adt7475_read_hystersis(struct i2c_client *client); | ||
148 | static void adt7475_read_pwm(struct i2c_client *client, int index); | ||
149 | |||
150 | /* Given a temp value, convert it to register value */ | ||
151 | |||
152 | static inline u16 temp2reg(struct adt7475_data *data, long val) | ||
153 | { | ||
154 | u16 ret; | ||
155 | |||
156 | if (!(data->config5 & CONFIG5_TWOSCOMP)) { | ||
157 | val = SENSORS_LIMIT(val, -64000, 191000); | ||
158 | ret = (val + 64500) / 1000; | ||
159 | } else { | ||
160 | val = SENSORS_LIMIT(val, -128000, 127000); | ||
161 | if (val < -500) | ||
162 | ret = (256500 + val) / 1000; | ||
163 | else | ||
164 | ret = (val + 500) / 1000; | ||
165 | } | ||
166 | |||
167 | return ret << 2; | ||
168 | } | ||
169 | |||
170 | /* Given a register value, convert it to a real temp value */ | ||
171 | |||
172 | static inline int reg2temp(struct adt7475_data *data, u16 reg) | ||
173 | { | ||
174 | if (data->config5 & CONFIG5_TWOSCOMP) { | ||
175 | if (reg >= 512) | ||
176 | return (reg - 1024) * 250; | ||
177 | else | ||
178 | return reg * 250; | ||
179 | } else | ||
180 | return (reg - 256) * 250; | ||
181 | } | ||
182 | |||
183 | static inline int tach2rpm(u16 tach) | ||
184 | { | ||
185 | if (tach == 0 || tach == 0xFFFF) | ||
186 | return 0; | ||
187 | |||
188 | return (90000 * 60) / tach; | ||
189 | } | ||
190 | |||
191 | static inline u16 rpm2tach(unsigned long rpm) | ||
192 | { | ||
193 | if (rpm == 0) | ||
194 | return 0; | ||
195 | |||
196 | return SENSORS_LIMIT((90000 * 60) / rpm, 1, 0xFFFF); | ||
197 | } | ||
198 | |||
199 | static inline int reg2vcc(u16 reg) | ||
200 | { | ||
201 | return (4296 * reg) / 1000; | ||
202 | } | ||
203 | |||
204 | static inline int reg2vccp(u16 reg) | ||
205 | { | ||
206 | return (2929 * reg) / 1000; | ||
207 | } | ||
208 | |||
209 | static inline u16 vcc2reg(long vcc) | ||
210 | { | ||
211 | vcc = SENSORS_LIMIT(vcc, 0, 4396); | ||
212 | return (vcc * 1000) / 4296; | ||
213 | } | ||
214 | |||
215 | static inline u16 vccp2reg(long vcc) | ||
216 | { | ||
217 | vcc = SENSORS_LIMIT(vcc, 0, 2998); | ||
218 | return (vcc * 1000) / 2929; | ||
219 | } | ||
220 | |||
221 | static u16 adt7475_read_word(struct i2c_client *client, int reg) | ||
222 | { | ||
223 | u16 val; | ||
224 | |||
225 | val = i2c_smbus_read_byte_data(client, reg); | ||
226 | val |= (i2c_smbus_read_byte_data(client, reg + 1) << 8); | ||
227 | |||
228 | return val; | ||
229 | } | ||
230 | |||
231 | static void adt7475_write_word(struct i2c_client *client, int reg, u16 val) | ||
232 | { | ||
233 | i2c_smbus_write_byte_data(client, reg + 1, val >> 8); | ||
234 | i2c_smbus_write_byte_data(client, reg, val & 0xFF); | ||
235 | } | ||
236 | |||
237 | /* Find the nearest value in a table - used for pwm frequency and | ||
238 | auto temp range */ | ||
239 | static int find_nearest(long val, const int *array, int size) | ||
240 | { | ||
241 | int i; | ||
242 | |||
243 | if (val < array[0]) | ||
244 | return 0; | ||
245 | |||
246 | if (val > array[size - 1]) | ||
247 | return size - 1; | ||
248 | |||
249 | for (i = 0; i < size - 1; i++) { | ||
250 | int a, b; | ||
251 | |||
252 | if (val > array[i + 1]) | ||
253 | continue; | ||
254 | |||
255 | a = val - array[i]; | ||
256 | b = array[i + 1] - val; | ||
257 | |||
258 | return (a <= b) ? i : i + 1; | ||
259 | } | ||
260 | |||
261 | return 0; | ||
262 | } | ||
263 | |||
264 | static ssize_t show_voltage(struct device *dev, struct device_attribute *attr, | ||
265 | char *buf) | ||
266 | { | ||
267 | struct adt7475_data *data = adt7475_update_device(dev); | ||
268 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
269 | unsigned short val; | ||
270 | |||
271 | switch (sattr->nr) { | ||
272 | case ALARM: | ||
273 | return sprintf(buf, "%d\n", | ||
274 | (data->alarms >> (sattr->index + 1)) & 1); | ||
275 | default: | ||
276 | val = data->voltage[sattr->nr][sattr->index]; | ||
277 | return sprintf(buf, "%d\n", | ||
278 | sattr->index == | ||
279 | 0 ? reg2vccp(val) : reg2vcc(val)); | ||
280 | } | ||
281 | } | ||
282 | |||
283 | static ssize_t set_voltage(struct device *dev, struct device_attribute *attr, | ||
284 | const char *buf, size_t count) | ||
285 | { | ||
286 | |||
287 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
288 | struct i2c_client *client = to_i2c_client(dev); | ||
289 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
290 | unsigned char reg; | ||
291 | long val; | ||
292 | |||
293 | if (strict_strtol(buf, 10, &val)) | ||
294 | return -EINVAL; | ||
295 | |||
296 | mutex_lock(&data->lock); | ||
297 | |||
298 | data->voltage[sattr->nr][sattr->index] = | ||
299 | sattr->index ? vcc2reg(val) : vccp2reg(val); | ||
300 | |||
301 | if (sattr->nr == MIN) | ||
302 | reg = VOLTAGE_MIN_REG(sattr->index); | ||
303 | else | ||
304 | reg = VOLTAGE_MAX_REG(sattr->index); | ||
305 | |||
306 | i2c_smbus_write_byte_data(client, reg, | ||
307 | data->voltage[sattr->nr][sattr->index] >> 2); | ||
308 | mutex_unlock(&data->lock); | ||
309 | |||
310 | return count; | ||
311 | } | ||
312 | |||
313 | static ssize_t show_temp(struct device *dev, struct device_attribute *attr, | ||
314 | char *buf) | ||
315 | { | ||
316 | struct adt7475_data *data = adt7475_update_device(dev); | ||
317 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
318 | int out; | ||
319 | |||
320 | switch (sattr->nr) { | ||
321 | case HYSTERSIS: | ||
322 | mutex_lock(&data->lock); | ||
323 | out = data->temp[sattr->nr][sattr->index]; | ||
324 | if (sattr->index != 1) | ||
325 | out = (out >> 4) & 0xF; | ||
326 | else | ||
327 | out = (out & 0xF); | ||
328 | /* Show the value as an absolute number tied to | ||
329 | * THERM */ | ||
330 | out = reg2temp(data, data->temp[THERM][sattr->index]) - | ||
331 | out * 1000; | ||
332 | mutex_unlock(&data->lock); | ||
333 | break; | ||
334 | |||
335 | case OFFSET: | ||
336 | /* Offset is always 2's complement, regardless of the | ||
337 | * setting in CONFIG5 */ | ||
338 | mutex_lock(&data->lock); | ||
339 | out = (s8)data->temp[sattr->nr][sattr->index]; | ||
340 | if (data->config5 & CONFIG5_TEMPOFFSET) | ||
341 | out *= 1000; | ||
342 | else | ||
343 | out *= 500; | ||
344 | mutex_unlock(&data->lock); | ||
345 | break; | ||
346 | |||
347 | case ALARM: | ||
348 | out = (data->alarms >> (sattr->index + 4)) & 1; | ||
349 | break; | ||
350 | |||
351 | case FAULT: | ||
352 | /* Note - only for remote1 and remote2 */ | ||
353 | out = data->alarms & (sattr->index ? 0x8000 : 0x4000); | ||
354 | out = out ? 0 : 1; | ||
355 | break; | ||
356 | |||
357 | default: | ||
358 | /* All other temp values are in the configured format */ | ||
359 | out = reg2temp(data, data->temp[sattr->nr][sattr->index]); | ||
360 | } | ||
361 | |||
362 | return sprintf(buf, "%d\n", out); | ||
363 | } | ||
364 | |||
365 | static ssize_t set_temp(struct device *dev, struct device_attribute *attr, | ||
366 | const char *buf, size_t count) | ||
367 | { | ||
368 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
369 | struct i2c_client *client = to_i2c_client(dev); | ||
370 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
371 | unsigned char reg = 0; | ||
372 | u8 out; | ||
373 | int temp; | ||
374 | long val; | ||
375 | |||
376 | if (strict_strtol(buf, 10, &val)) | ||
377 | return -EINVAL; | ||
378 | |||
379 | mutex_lock(&data->lock); | ||
380 | |||
381 | /* We need the config register in all cases for temp <-> reg conv. */ | ||
382 | data->config5 = adt7475_read(REG_CONFIG5); | ||
383 | |||
384 | switch (sattr->nr) { | ||
385 | case OFFSET: | ||
386 | if (data->config5 & CONFIG5_TEMPOFFSET) { | ||
387 | val = SENSORS_LIMIT(val, -63000, 127000); | ||
388 | out = data->temp[OFFSET][sattr->index] = val / 1000; | ||
389 | } else { | ||
390 | val = SENSORS_LIMIT(val, -63000, 64000); | ||
391 | out = data->temp[OFFSET][sattr->index] = val / 500; | ||
392 | } | ||
393 | break; | ||
394 | |||
395 | case HYSTERSIS: | ||
396 | /* The value will be given as an absolute value, turn it | ||
397 | into an offset based on THERM */ | ||
398 | |||
399 | /* Read fresh THERM and HYSTERSIS values from the chip */ | ||
400 | data->temp[THERM][sattr->index] = | ||
401 | adt7475_read(TEMP_THERM_REG(sattr->index)) << 2; | ||
402 | adt7475_read_hystersis(client); | ||
403 | |||
404 | temp = reg2temp(data, data->temp[THERM][sattr->index]); | ||
405 | val = SENSORS_LIMIT(val, temp - 15000, temp); | ||
406 | val = (temp - val) / 1000; | ||
407 | |||
408 | if (sattr->index != 1) { | ||
409 | data->temp[HYSTERSIS][sattr->index] &= 0xF0; | ||
410 | data->temp[HYSTERSIS][sattr->index] |= (val & 0xF) << 4; | ||
411 | } else { | ||
412 | data->temp[HYSTERSIS][sattr->index] &= 0x0F; | ||
413 | data->temp[HYSTERSIS][sattr->index] |= (val & 0xF); | ||
414 | } | ||
415 | |||
416 | out = data->temp[HYSTERSIS][sattr->index]; | ||
417 | break; | ||
418 | |||
419 | default: | ||
420 | data->temp[sattr->nr][sattr->index] = temp2reg(data, val); | ||
421 | |||
422 | /* We maintain an extra 2 digits of precision for simplicity | ||
423 | * - shift those back off before writing the value */ | ||
424 | out = (u8) (data->temp[sattr->nr][sattr->index] >> 2); | ||
425 | } | ||
426 | |||
427 | switch (sattr->nr) { | ||
428 | case MIN: | ||
429 | reg = TEMP_MIN_REG(sattr->index); | ||
430 | break; | ||
431 | case MAX: | ||
432 | reg = TEMP_MAX_REG(sattr->index); | ||
433 | break; | ||
434 | case OFFSET: | ||
435 | reg = TEMP_OFFSET_REG(sattr->index); | ||
436 | break; | ||
437 | case AUTOMIN: | ||
438 | reg = TEMP_TMIN_REG(sattr->index); | ||
439 | break; | ||
440 | case THERM: | ||
441 | reg = TEMP_THERM_REG(sattr->index); | ||
442 | break; | ||
443 | case HYSTERSIS: | ||
444 | if (sattr->index != 2) | ||
445 | reg = REG_REMOTE1_HYSTERSIS; | ||
446 | else | ||
447 | reg = REG_REMOTE2_HYSTERSIS; | ||
448 | |||
449 | break; | ||
450 | } | ||
451 | |||
452 | i2c_smbus_write_byte_data(client, reg, out); | ||
453 | |||
454 | mutex_unlock(&data->lock); | ||
455 | return count; | ||
456 | } | ||
457 | |||
458 | /* Table of autorange values - the user will write the value in millidegrees, | ||
459 | and we'll convert it */ | ||
460 | static const int autorange_table[] = { | ||
461 | 2000, 2500, 3330, 4000, 5000, 6670, 8000, | ||
462 | 10000, 13330, 16000, 20000, 26670, 32000, 40000, | ||
463 | 53330, 80000 | ||
464 | }; | ||
465 | |||
466 | static ssize_t show_point2(struct device *dev, struct device_attribute *attr, | ||
467 | char *buf) | ||
468 | { | ||
469 | struct adt7475_data *data = adt7475_update_device(dev); | ||
470 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
471 | int out, val; | ||
472 | |||
473 | mutex_lock(&data->lock); | ||
474 | out = (data->range[sattr->index] >> 4) & 0x0F; | ||
475 | val = reg2temp(data, data->temp[AUTOMIN][sattr->index]); | ||
476 | mutex_unlock(&data->lock); | ||
477 | |||
478 | return sprintf(buf, "%d\n", val + autorange_table[out]); | ||
479 | } | ||
480 | |||
481 | static ssize_t set_point2(struct device *dev, struct device_attribute *attr, | ||
482 | const char *buf, size_t count) | ||
483 | { | ||
484 | struct i2c_client *client = to_i2c_client(dev); | ||
485 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
486 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
487 | int temp; | ||
488 | long val; | ||
489 | |||
490 | if (strict_strtol(buf, 10, &val)) | ||
491 | return -EINVAL; | ||
492 | |||
493 | mutex_lock(&data->lock); | ||
494 | |||
495 | /* Get a fresh copy of the needed registers */ | ||
496 | data->config5 = adt7475_read(REG_CONFIG5); | ||
497 | data->temp[AUTOMIN][sattr->index] = | ||
498 | adt7475_read(TEMP_TMIN_REG(sattr->index)) << 2; | ||
499 | data->range[sattr->index] = | ||
500 | adt7475_read(TEMP_TRANGE_REG(sattr->index)); | ||
501 | |||
502 | /* The user will write an absolute value, so subtract the start point | ||
503 | to figure the range */ | ||
504 | temp = reg2temp(data, data->temp[AUTOMIN][sattr->index]); | ||
505 | val = SENSORS_LIMIT(val, temp + autorange_table[0], | ||
506 | temp + autorange_table[ARRAY_SIZE(autorange_table) - 1]); | ||
507 | val -= temp; | ||
508 | |||
509 | /* Find the nearest table entry to what the user wrote */ | ||
510 | val = find_nearest(val, autorange_table, ARRAY_SIZE(autorange_table)); | ||
511 | |||
512 | data->range[sattr->index] &= ~0xF0; | ||
513 | data->range[sattr->index] |= val << 4; | ||
514 | |||
515 | i2c_smbus_write_byte_data(client, TEMP_TRANGE_REG(sattr->index), | ||
516 | data->range[sattr->index]); | ||
517 | |||
518 | mutex_unlock(&data->lock); | ||
519 | return count; | ||
520 | } | ||
521 | |||
522 | static ssize_t show_tach(struct device *dev, struct device_attribute *attr, | ||
523 | char *buf) | ||
524 | { | ||
525 | struct adt7475_data *data = adt7475_update_device(dev); | ||
526 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
527 | int out; | ||
528 | |||
529 | if (sattr->nr == ALARM) | ||
530 | out = (data->alarms >> (sattr->index + 10)) & 1; | ||
531 | else | ||
532 | out = tach2rpm(data->tach[sattr->nr][sattr->index]); | ||
533 | |||
534 | return sprintf(buf, "%d\n", out); | ||
535 | } | ||
536 | |||
537 | static ssize_t set_tach(struct device *dev, struct device_attribute *attr, | ||
538 | const char *buf, size_t count) | ||
539 | { | ||
540 | |||
541 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
542 | struct i2c_client *client = to_i2c_client(dev); | ||
543 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
544 | unsigned long val; | ||
545 | |||
546 | if (strict_strtoul(buf, 10, &val)) | ||
547 | return -EINVAL; | ||
548 | |||
549 | mutex_lock(&data->lock); | ||
550 | |||
551 | data->tach[MIN][sattr->index] = rpm2tach(val); | ||
552 | |||
553 | adt7475_write_word(client, TACH_MIN_REG(sattr->index), | ||
554 | data->tach[MIN][sattr->index]); | ||
555 | |||
556 | mutex_unlock(&data->lock); | ||
557 | return count; | ||
558 | } | ||
559 | |||
560 | static ssize_t show_pwm(struct device *dev, struct device_attribute *attr, | ||
561 | char *buf) | ||
562 | { | ||
563 | struct adt7475_data *data = adt7475_update_device(dev); | ||
564 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
565 | |||
566 | return sprintf(buf, "%d\n", data->pwm[sattr->nr][sattr->index]); | ||
567 | } | ||
568 | |||
569 | static ssize_t show_pwmchan(struct device *dev, struct device_attribute *attr, | ||
570 | char *buf) | ||
571 | { | ||
572 | struct adt7475_data *data = adt7475_update_device(dev); | ||
573 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
574 | |||
575 | return sprintf(buf, "%d\n", data->pwmchan[sattr->index]); | ||
576 | } | ||
577 | |||
578 | static ssize_t show_pwmctrl(struct device *dev, struct device_attribute *attr, | ||
579 | char *buf) | ||
580 | { | ||
581 | struct adt7475_data *data = adt7475_update_device(dev); | ||
582 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
583 | |||
584 | return sprintf(buf, "%d\n", data->pwmctl[sattr->index]); | ||
585 | } | ||
586 | |||
587 | static ssize_t set_pwm(struct device *dev, struct device_attribute *attr, | ||
588 | const char *buf, size_t count) | ||
589 | { | ||
590 | |||
591 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
592 | struct i2c_client *client = to_i2c_client(dev); | ||
593 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
594 | unsigned char reg = 0; | ||
595 | long val; | ||
596 | |||
597 | if (strict_strtol(buf, 10, &val)) | ||
598 | return -EINVAL; | ||
599 | |||
600 | mutex_lock(&data->lock); | ||
601 | |||
602 | switch (sattr->nr) { | ||
603 | case INPUT: | ||
604 | /* Get a fresh value for CONTROL */ | ||
605 | data->pwm[CONTROL][sattr->index] = | ||
606 | adt7475_read(PWM_CONFIG_REG(sattr->index)); | ||
607 | |||
608 | /* If we are not in manual mode, then we shouldn't allow | ||
609 | * the user to set the pwm speed */ | ||
610 | if (((data->pwm[CONTROL][sattr->index] >> 5) & 7) != 7) { | ||
611 | mutex_unlock(&data->lock); | ||
612 | return count; | ||
613 | } | ||
614 | |||
615 | reg = PWM_REG(sattr->index); | ||
616 | break; | ||
617 | |||
618 | case MIN: | ||
619 | reg = PWM_MIN_REG(sattr->index); | ||
620 | break; | ||
621 | |||
622 | case MAX: | ||
623 | reg = PWM_MAX_REG(sattr->index); | ||
624 | break; | ||
625 | } | ||
626 | |||
627 | data->pwm[sattr->nr][sattr->index] = SENSORS_LIMIT(val, 0, 0xFF); | ||
628 | i2c_smbus_write_byte_data(client, reg, | ||
629 | data->pwm[sattr->nr][sattr->index]); | ||
630 | |||
631 | mutex_unlock(&data->lock); | ||
632 | |||
633 | return count; | ||
634 | } | ||
635 | |||
636 | /* Called by set_pwmctrl and set_pwmchan */ | ||
637 | |||
638 | static int hw_set_pwm(struct i2c_client *client, int index, | ||
639 | unsigned int pwmctl, unsigned int pwmchan) | ||
640 | { | ||
641 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
642 | long val = 0; | ||
643 | |||
644 | switch (pwmctl) { | ||
645 | case 0: | ||
646 | val = 0x03; /* Run at full speed */ | ||
647 | break; | ||
648 | case 1: | ||
649 | val = 0x07; /* Manual mode */ | ||
650 | break; | ||
651 | case 2: | ||
652 | switch (pwmchan) { | ||
653 | case 1: | ||
654 | /* Remote1 controls PWM */ | ||
655 | val = 0x00; | ||
656 | break; | ||
657 | case 2: | ||
658 | /* local controls PWM */ | ||
659 | val = 0x01; | ||
660 | break; | ||
661 | case 4: | ||
662 | /* remote2 controls PWM */ | ||
663 | val = 0x02; | ||
664 | break; | ||
665 | case 6: | ||
666 | /* local/remote2 control PWM */ | ||
667 | val = 0x05; | ||
668 | break; | ||
669 | case 7: | ||
670 | /* All three control PWM */ | ||
671 | val = 0x06; | ||
672 | break; | ||
673 | default: | ||
674 | return -EINVAL; | ||
675 | } | ||
676 | break; | ||
677 | default: | ||
678 | return -EINVAL; | ||
679 | } | ||
680 | |||
681 | data->pwmctl[index] = pwmctl; | ||
682 | data->pwmchan[index] = pwmchan; | ||
683 | |||
684 | data->pwm[CONTROL][index] &= ~0xE0; | ||
685 | data->pwm[CONTROL][index] |= (val & 7) << 5; | ||
686 | |||
687 | i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index), | ||
688 | data->pwm[CONTROL][index]); | ||
689 | |||
690 | return 0; | ||
691 | } | ||
692 | |||
693 | static ssize_t set_pwmchan(struct device *dev, struct device_attribute *attr, | ||
694 | const char *buf, size_t count) | ||
695 | { | ||
696 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
697 | struct i2c_client *client = to_i2c_client(dev); | ||
698 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
699 | int r; | ||
700 | long val; | ||
701 | |||
702 | if (strict_strtol(buf, 10, &val)) | ||
703 | return -EINVAL; | ||
704 | |||
705 | mutex_lock(&data->lock); | ||
706 | /* Read Modify Write PWM values */ | ||
707 | adt7475_read_pwm(client, sattr->index); | ||
708 | r = hw_set_pwm(client, sattr->index, data->pwmctl[sattr->index], val); | ||
709 | if (r) | ||
710 | count = r; | ||
711 | mutex_unlock(&data->lock); | ||
712 | |||
713 | return count; | ||
714 | } | ||
715 | |||
716 | static ssize_t set_pwmctrl(struct device *dev, struct device_attribute *attr, | ||
717 | const char *buf, size_t count) | ||
718 | { | ||
719 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
720 | struct i2c_client *client = to_i2c_client(dev); | ||
721 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
722 | int r; | ||
723 | long val; | ||
724 | |||
725 | if (strict_strtol(buf, 10, &val)) | ||
726 | return -EINVAL; | ||
727 | |||
728 | mutex_lock(&data->lock); | ||
729 | /* Read Modify Write PWM values */ | ||
730 | adt7475_read_pwm(client, sattr->index); | ||
731 | r = hw_set_pwm(client, sattr->index, val, data->pwmchan[sattr->index]); | ||
732 | if (r) | ||
733 | count = r; | ||
734 | mutex_unlock(&data->lock); | ||
735 | |||
736 | return count; | ||
737 | } | ||
738 | |||
739 | /* List of frequencies for the PWM */ | ||
740 | static const int pwmfreq_table[] = { | ||
741 | 11, 14, 22, 29, 35, 44, 58, 88 | ||
742 | }; | ||
743 | |||
744 | static ssize_t show_pwmfreq(struct device *dev, struct device_attribute *attr, | ||
745 | char *buf) | ||
746 | { | ||
747 | struct adt7475_data *data = adt7475_update_device(dev); | ||
748 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
749 | |||
750 | return sprintf(buf, "%d\n", | ||
751 | pwmfreq_table[data->range[sattr->index] & 7]); | ||
752 | } | ||
753 | |||
754 | static ssize_t set_pwmfreq(struct device *dev, struct device_attribute *attr, | ||
755 | const char *buf, size_t count) | ||
756 | { | ||
757 | struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); | ||
758 | struct i2c_client *client = to_i2c_client(dev); | ||
759 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
760 | int out; | ||
761 | long val; | ||
762 | |||
763 | if (strict_strtol(buf, 10, &val)) | ||
764 | return -EINVAL; | ||
765 | |||
766 | out = find_nearest(val, pwmfreq_table, ARRAY_SIZE(pwmfreq_table)); | ||
767 | |||
768 | mutex_lock(&data->lock); | ||
769 | |||
770 | data->range[sattr->index] = | ||
771 | adt7475_read(TEMP_TRANGE_REG(sattr->index)); | ||
772 | data->range[sattr->index] &= ~7; | ||
773 | data->range[sattr->index] |= out; | ||
774 | |||
775 | i2c_smbus_write_byte_data(client, TEMP_TRANGE_REG(sattr->index), | ||
776 | data->range[sattr->index]); | ||
777 | |||
778 | mutex_unlock(&data->lock); | ||
779 | return count; | ||
780 | } | ||
781 | |||
782 | static SENSOR_DEVICE_ATTR_2(in1_input, S_IRUGO, show_voltage, NULL, INPUT, 0); | ||
783 | static SENSOR_DEVICE_ATTR_2(in1_max, S_IRUGO | S_IWUSR, show_voltage, | ||
784 | set_voltage, MAX, 0); | ||
785 | static SENSOR_DEVICE_ATTR_2(in1_min, S_IRUGO | S_IWUSR, show_voltage, | ||
786 | set_voltage, MIN, 0); | ||
787 | static SENSOR_DEVICE_ATTR_2(in1_alarm, S_IRUGO, show_voltage, NULL, ALARM, 0); | ||
788 | static SENSOR_DEVICE_ATTR_2(in2_input, S_IRUGO, show_voltage, NULL, INPUT, 1); | ||
789 | static SENSOR_DEVICE_ATTR_2(in2_max, S_IRUGO | S_IWUSR, show_voltage, | ||
790 | set_voltage, MAX, 1); | ||
791 | static SENSOR_DEVICE_ATTR_2(in2_min, S_IRUGO | S_IWUSR, show_voltage, | ||
792 | set_voltage, MIN, 1); | ||
793 | static SENSOR_DEVICE_ATTR_2(in2_alarm, S_IRUGO, show_voltage, NULL, ALARM, 1); | ||
794 | static SENSOR_DEVICE_ATTR_2(temp1_input, S_IRUGO, show_temp, NULL, INPUT, 0); | ||
795 | static SENSOR_DEVICE_ATTR_2(temp1_alarm, S_IRUGO, show_temp, NULL, ALARM, 0); | ||
796 | static SENSOR_DEVICE_ATTR_2(temp1_fault, S_IRUGO, show_temp, NULL, FAULT, 0); | ||
797 | static SENSOR_DEVICE_ATTR_2(temp1_max, S_IRUGO | S_IWUSR, show_temp, set_temp, | ||
798 | MAX, 0); | ||
799 | static SENSOR_DEVICE_ATTR_2(temp1_min, S_IRUGO | S_IWUSR, show_temp, set_temp, | ||
800 | MIN, 0); | ||
801 | static SENSOR_DEVICE_ATTR_2(temp1_offset, S_IRUGO | S_IWUSR, show_temp, | ||
802 | set_temp, OFFSET, 0); | ||
803 | static SENSOR_DEVICE_ATTR_2(temp1_auto_point1_temp, S_IRUGO | S_IWUSR, | ||
804 | show_temp, set_temp, AUTOMIN, 0); | ||
805 | static SENSOR_DEVICE_ATTR_2(temp1_auto_point2_temp, S_IRUGO | S_IWUSR, | ||
806 | show_point2, set_point2, 0, 0); | ||
807 | static SENSOR_DEVICE_ATTR_2(temp1_crit, S_IRUGO | S_IWUSR, show_temp, set_temp, | ||
808 | THERM, 0); | ||
809 | static SENSOR_DEVICE_ATTR_2(temp1_crit_hyst, S_IRUGO | S_IWUSR, show_temp, | ||
810 | set_temp, HYSTERSIS, 0); | ||
811 | static SENSOR_DEVICE_ATTR_2(temp2_input, S_IRUGO, show_temp, NULL, INPUT, 1); | ||
812 | static SENSOR_DEVICE_ATTR_2(temp2_alarm, S_IRUGO, show_temp, NULL, ALARM, 1); | ||
813 | static SENSOR_DEVICE_ATTR_2(temp2_max, S_IRUGO | S_IWUSR, show_temp, set_temp, | ||
814 | MAX, 1); | ||
815 | static SENSOR_DEVICE_ATTR_2(temp2_min, S_IRUGO | S_IWUSR, show_temp, set_temp, | ||
816 | MIN, 1); | ||
817 | static SENSOR_DEVICE_ATTR_2(temp2_offset, S_IRUGO | S_IWUSR, show_temp, | ||
818 | set_temp, OFFSET, 1); | ||
819 | static SENSOR_DEVICE_ATTR_2(temp2_auto_point1_temp, S_IRUGO | S_IWUSR, | ||
820 | show_temp, set_temp, AUTOMIN, 1); | ||
821 | static SENSOR_DEVICE_ATTR_2(temp2_auto_point2_temp, S_IRUGO | S_IWUSR, | ||
822 | show_point2, set_point2, 0, 1); | ||
823 | static SENSOR_DEVICE_ATTR_2(temp2_crit, S_IRUGO | S_IWUSR, show_temp, set_temp, | ||
824 | THERM, 1); | ||
825 | static SENSOR_DEVICE_ATTR_2(temp2_crit_hyst, S_IRUGO | S_IWUSR, show_temp, | ||
826 | set_temp, HYSTERSIS, 1); | ||
827 | static SENSOR_DEVICE_ATTR_2(temp3_input, S_IRUGO, show_temp, NULL, INPUT, 2); | ||
828 | static SENSOR_DEVICE_ATTR_2(temp3_alarm, S_IRUGO, show_temp, NULL, ALARM, 2); | ||
829 | static SENSOR_DEVICE_ATTR_2(temp3_fault, S_IRUGO, show_temp, NULL, FAULT, 2); | ||
830 | static SENSOR_DEVICE_ATTR_2(temp3_max, S_IRUGO | S_IWUSR, show_temp, set_temp, | ||
831 | MAX, 2); | ||
832 | static SENSOR_DEVICE_ATTR_2(temp3_min, S_IRUGO | S_IWUSR, show_temp, set_temp, | ||
833 | MIN, 2); | ||
834 | static SENSOR_DEVICE_ATTR_2(temp3_offset, S_IRUGO | S_IWUSR, show_temp, | ||
835 | set_temp, OFFSET, 2); | ||
836 | static SENSOR_DEVICE_ATTR_2(temp3_auto_point1_temp, S_IRUGO | S_IWUSR, | ||
837 | show_temp, set_temp, AUTOMIN, 2); | ||
838 | static SENSOR_DEVICE_ATTR_2(temp3_auto_point2_temp, S_IRUGO | S_IWUSR, | ||
839 | show_point2, set_point2, 0, 2); | ||
840 | static SENSOR_DEVICE_ATTR_2(temp3_crit, S_IRUGO | S_IWUSR, show_temp, set_temp, | ||
841 | THERM, 2); | ||
842 | static SENSOR_DEVICE_ATTR_2(temp3_crit_hyst, S_IRUGO | S_IWUSR, show_temp, | ||
843 | set_temp, HYSTERSIS, 2); | ||
844 | static SENSOR_DEVICE_ATTR_2(fan1_input, S_IRUGO, show_tach, NULL, INPUT, 0); | ||
845 | static SENSOR_DEVICE_ATTR_2(fan1_min, S_IRUGO | S_IWUSR, show_tach, set_tach, | ||
846 | MIN, 0); | ||
847 | static SENSOR_DEVICE_ATTR_2(fan1_alarm, S_IRUGO, show_tach, NULL, ALARM, 0); | ||
848 | static SENSOR_DEVICE_ATTR_2(fan2_input, S_IRUGO, show_tach, NULL, INPUT, 1); | ||
849 | static SENSOR_DEVICE_ATTR_2(fan2_min, S_IRUGO | S_IWUSR, show_tach, set_tach, | ||
850 | MIN, 1); | ||
851 | static SENSOR_DEVICE_ATTR_2(fan2_alarm, S_IRUGO, show_tach, NULL, ALARM, 1); | ||
852 | static SENSOR_DEVICE_ATTR_2(fan3_input, S_IRUGO, show_tach, NULL, INPUT, 2); | ||
853 | static SENSOR_DEVICE_ATTR_2(fan3_min, S_IRUGO | S_IWUSR, show_tach, set_tach, | ||
854 | MIN, 2); | ||
855 | static SENSOR_DEVICE_ATTR_2(fan3_alarm, S_IRUGO, show_tach, NULL, ALARM, 2); | ||
856 | static SENSOR_DEVICE_ATTR_2(fan4_input, S_IRUGO, show_tach, NULL, INPUT, 3); | ||
857 | static SENSOR_DEVICE_ATTR_2(fan4_min, S_IRUGO | S_IWUSR, show_tach, set_tach, | ||
858 | MIN, 3); | ||
859 | static SENSOR_DEVICE_ATTR_2(fan4_alarm, S_IRUGO, show_tach, NULL, ALARM, 3); | ||
860 | static SENSOR_DEVICE_ATTR_2(pwm1, S_IRUGO | S_IWUSR, show_pwm, set_pwm, INPUT, | ||
861 | 0); | ||
862 | static SENSOR_DEVICE_ATTR_2(pwm1_freq, S_IRUGO | S_IWUSR, show_pwmfreq, | ||
863 | set_pwmfreq, INPUT, 0); | ||
864 | static SENSOR_DEVICE_ATTR_2(pwm1_enable, S_IRUGO | S_IWUSR, show_pwmctrl, | ||
865 | set_pwmctrl, INPUT, 0); | ||
866 | static SENSOR_DEVICE_ATTR_2(pwm1_auto_channel_temp, S_IRUGO | S_IWUSR, | ||
867 | show_pwmchan, set_pwmchan, INPUT, 0); | ||
868 | static SENSOR_DEVICE_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, | ||
869 | set_pwm, MIN, 0); | ||
870 | static SENSOR_DEVICE_ATTR_2(pwm1_auto_point2_pwm, S_IRUGO | S_IWUSR, show_pwm, | ||
871 | set_pwm, MAX, 0); | ||
872 | static SENSOR_DEVICE_ATTR_2(pwm2, S_IRUGO | S_IWUSR, show_pwm, set_pwm, INPUT, | ||
873 | 1); | ||
874 | static SENSOR_DEVICE_ATTR_2(pwm2_freq, S_IRUGO | S_IWUSR, show_pwmfreq, | ||
875 | set_pwmfreq, INPUT, 1); | ||
876 | static SENSOR_DEVICE_ATTR_2(pwm2_enable, S_IRUGO | S_IWUSR, show_pwmctrl, | ||
877 | set_pwmctrl, INPUT, 1); | ||
878 | static SENSOR_DEVICE_ATTR_2(pwm2_auto_channel_temp, S_IRUGO | S_IWUSR, | ||
879 | show_pwmchan, set_pwmchan, INPUT, 1); | ||
880 | static SENSOR_DEVICE_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, | ||
881 | set_pwm, MIN, 1); | ||
882 | static SENSOR_DEVICE_ATTR_2(pwm2_auto_point2_pwm, S_IRUGO | S_IWUSR, show_pwm, | ||
883 | set_pwm, MAX, 1); | ||
884 | static SENSOR_DEVICE_ATTR_2(pwm3, S_IRUGO | S_IWUSR, show_pwm, set_pwm, INPUT, | ||
885 | 2); | ||
886 | static SENSOR_DEVICE_ATTR_2(pwm3_freq, S_IRUGO | S_IWUSR, show_pwmfreq, | ||
887 | set_pwmfreq, INPUT, 2); | ||
888 | static SENSOR_DEVICE_ATTR_2(pwm3_enable, S_IRUGO | S_IWUSR, show_pwmctrl, | ||
889 | set_pwmctrl, INPUT, 2); | ||
890 | static SENSOR_DEVICE_ATTR_2(pwm3_auto_channel_temp, S_IRUGO | S_IWUSR, | ||
891 | show_pwmchan, set_pwmchan, INPUT, 2); | ||
892 | static SENSOR_DEVICE_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, | ||
893 | set_pwm, MIN, 2); | ||
894 | static SENSOR_DEVICE_ATTR_2(pwm3_auto_point2_pwm, S_IRUGO | S_IWUSR, show_pwm, | ||
895 | set_pwm, MAX, 2); | ||
896 | |||
897 | static struct attribute *adt7475_attrs[] = { | ||
898 | &sensor_dev_attr_in1_input.dev_attr.attr, | ||
899 | &sensor_dev_attr_in1_max.dev_attr.attr, | ||
900 | &sensor_dev_attr_in1_min.dev_attr.attr, | ||
901 | &sensor_dev_attr_in1_alarm.dev_attr.attr, | ||
902 | &sensor_dev_attr_in2_input.dev_attr.attr, | ||
903 | &sensor_dev_attr_in2_max.dev_attr.attr, | ||
904 | &sensor_dev_attr_in2_min.dev_attr.attr, | ||
905 | &sensor_dev_attr_in2_alarm.dev_attr.attr, | ||
906 | &sensor_dev_attr_temp1_input.dev_attr.attr, | ||
907 | &sensor_dev_attr_temp1_alarm.dev_attr.attr, | ||
908 | &sensor_dev_attr_temp1_fault.dev_attr.attr, | ||
909 | &sensor_dev_attr_temp1_max.dev_attr.attr, | ||
910 | &sensor_dev_attr_temp1_min.dev_attr.attr, | ||
911 | &sensor_dev_attr_temp1_offset.dev_attr.attr, | ||
912 | &sensor_dev_attr_temp1_auto_point1_temp.dev_attr.attr, | ||
913 | &sensor_dev_attr_temp1_auto_point2_temp.dev_attr.attr, | ||
914 | &sensor_dev_attr_temp1_crit.dev_attr.attr, | ||
915 | &sensor_dev_attr_temp1_crit_hyst.dev_attr.attr, | ||
916 | &sensor_dev_attr_temp2_input.dev_attr.attr, | ||
917 | &sensor_dev_attr_temp2_alarm.dev_attr.attr, | ||
918 | &sensor_dev_attr_temp2_max.dev_attr.attr, | ||
919 | &sensor_dev_attr_temp2_min.dev_attr.attr, | ||
920 | &sensor_dev_attr_temp2_offset.dev_attr.attr, | ||
921 | &sensor_dev_attr_temp2_auto_point1_temp.dev_attr.attr, | ||
922 | &sensor_dev_attr_temp2_auto_point2_temp.dev_attr.attr, | ||
923 | &sensor_dev_attr_temp2_crit.dev_attr.attr, | ||
924 | &sensor_dev_attr_temp2_crit_hyst.dev_attr.attr, | ||
925 | &sensor_dev_attr_temp3_input.dev_attr.attr, | ||
926 | &sensor_dev_attr_temp3_fault.dev_attr.attr, | ||
927 | &sensor_dev_attr_temp3_alarm.dev_attr.attr, | ||
928 | &sensor_dev_attr_temp3_max.dev_attr.attr, | ||
929 | &sensor_dev_attr_temp3_min.dev_attr.attr, | ||
930 | &sensor_dev_attr_temp3_offset.dev_attr.attr, | ||
931 | &sensor_dev_attr_temp3_auto_point1_temp.dev_attr.attr, | ||
932 | &sensor_dev_attr_temp3_auto_point2_temp.dev_attr.attr, | ||
933 | &sensor_dev_attr_temp3_crit.dev_attr.attr, | ||
934 | &sensor_dev_attr_temp3_crit_hyst.dev_attr.attr, | ||
935 | &sensor_dev_attr_fan1_input.dev_attr.attr, | ||
936 | &sensor_dev_attr_fan1_min.dev_attr.attr, | ||
937 | &sensor_dev_attr_fan1_alarm.dev_attr.attr, | ||
938 | &sensor_dev_attr_fan2_input.dev_attr.attr, | ||
939 | &sensor_dev_attr_fan2_min.dev_attr.attr, | ||
940 | &sensor_dev_attr_fan2_alarm.dev_attr.attr, | ||
941 | &sensor_dev_attr_fan3_input.dev_attr.attr, | ||
942 | &sensor_dev_attr_fan3_min.dev_attr.attr, | ||
943 | &sensor_dev_attr_fan3_alarm.dev_attr.attr, | ||
944 | &sensor_dev_attr_fan4_input.dev_attr.attr, | ||
945 | &sensor_dev_attr_fan4_min.dev_attr.attr, | ||
946 | &sensor_dev_attr_fan4_alarm.dev_attr.attr, | ||
947 | &sensor_dev_attr_pwm1.dev_attr.attr, | ||
948 | &sensor_dev_attr_pwm1_freq.dev_attr.attr, | ||
949 | &sensor_dev_attr_pwm1_enable.dev_attr.attr, | ||
950 | &sensor_dev_attr_pwm1_auto_channel_temp.dev_attr.attr, | ||
951 | &sensor_dev_attr_pwm1_auto_point1_pwm.dev_attr.attr, | ||
952 | &sensor_dev_attr_pwm1_auto_point2_pwm.dev_attr.attr, | ||
953 | &sensor_dev_attr_pwm2.dev_attr.attr, | ||
954 | &sensor_dev_attr_pwm2_freq.dev_attr.attr, | ||
955 | &sensor_dev_attr_pwm2_enable.dev_attr.attr, | ||
956 | &sensor_dev_attr_pwm2_auto_channel_temp.dev_attr.attr, | ||
957 | &sensor_dev_attr_pwm2_auto_point1_pwm.dev_attr.attr, | ||
958 | &sensor_dev_attr_pwm2_auto_point2_pwm.dev_attr.attr, | ||
959 | &sensor_dev_attr_pwm3.dev_attr.attr, | ||
960 | &sensor_dev_attr_pwm3_freq.dev_attr.attr, | ||
961 | &sensor_dev_attr_pwm3_enable.dev_attr.attr, | ||
962 | &sensor_dev_attr_pwm3_auto_channel_temp.dev_attr.attr, | ||
963 | &sensor_dev_attr_pwm3_auto_point1_pwm.dev_attr.attr, | ||
964 | &sensor_dev_attr_pwm3_auto_point2_pwm.dev_attr.attr, | ||
965 | NULL, | ||
966 | }; | ||
967 | |||
968 | struct attribute_group adt7475_attr_group = { .attrs = adt7475_attrs }; | ||
969 | |||
970 | static int adt7475_detect(struct i2c_client *client, int kind, | ||
971 | struct i2c_board_info *info) | ||
972 | { | ||
973 | struct i2c_adapter *adapter = client->adapter; | ||
974 | |||
975 | if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) | ||
976 | return -ENODEV; | ||
977 | |||
978 | if (kind <= 0) { | ||
979 | if (adt7475_read(REG_VENDID) != 0x41 || | ||
980 | adt7475_read(REG_DEVID) != 0x75) { | ||
981 | dev_err(&adapter->dev, | ||
982 | "Couldn't detect a adt7475 part at 0x%02x\n", | ||
983 | (unsigned int)client->addr); | ||
984 | return -ENODEV; | ||
985 | } | ||
986 | } | ||
987 | |||
988 | strlcpy(info->type, adt7475_id[0].name, I2C_NAME_SIZE); | ||
989 | |||
990 | return 0; | ||
991 | } | ||
992 | |||
993 | static int adt7475_probe(struct i2c_client *client, | ||
994 | const struct i2c_device_id *id) | ||
995 | { | ||
996 | struct adt7475_data *data; | ||
997 | int i, ret = 0; | ||
998 | |||
999 | data = kzalloc(sizeof(*data), GFP_KERNEL); | ||
1000 | if (data == NULL) | ||
1001 | return -ENOMEM; | ||
1002 | |||
1003 | mutex_init(&data->lock); | ||
1004 | i2c_set_clientdata(client, data); | ||
1005 | |||
1006 | /* Call adt7475_read_pwm for all pwm's as this will reprogram any | ||
1007 | pwm's which are disabled to manual mode with 0% duty cycle */ | ||
1008 | for (i = 0; i < ADT7475_PWM_COUNT; i++) | ||
1009 | adt7475_read_pwm(client, i); | ||
1010 | |||
1011 | ret = sysfs_create_group(&client->dev.kobj, &adt7475_attr_group); | ||
1012 | if (ret) | ||
1013 | goto efree; | ||
1014 | |||
1015 | data->hwmon_dev = hwmon_device_register(&client->dev); | ||
1016 | if (IS_ERR(data->hwmon_dev)) { | ||
1017 | ret = PTR_ERR(data->hwmon_dev); | ||
1018 | goto eremove; | ||
1019 | } | ||
1020 | |||
1021 | return 0; | ||
1022 | |||
1023 | eremove: | ||
1024 | sysfs_remove_group(&client->dev.kobj, &adt7475_attr_group); | ||
1025 | efree: | ||
1026 | kfree(data); | ||
1027 | return ret; | ||
1028 | } | ||
1029 | |||
1030 | static int adt7475_remove(struct i2c_client *client) | ||
1031 | { | ||
1032 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
1033 | |||
1034 | hwmon_device_unregister(data->hwmon_dev); | ||
1035 | sysfs_remove_group(&client->dev.kobj, &adt7475_attr_group); | ||
1036 | kfree(data); | ||
1037 | |||
1038 | return 0; | ||
1039 | } | ||
1040 | |||
1041 | static struct i2c_driver adt7475_driver = { | ||
1042 | .class = I2C_CLASS_HWMON, | ||
1043 | .driver = { | ||
1044 | .name = "adt7475", | ||
1045 | }, | ||
1046 | .probe = adt7475_probe, | ||
1047 | .remove = adt7475_remove, | ||
1048 | .id_table = adt7475_id, | ||
1049 | .detect = adt7475_detect, | ||
1050 | .address_data = &addr_data, | ||
1051 | }; | ||
1052 | |||
1053 | static void adt7475_read_hystersis(struct i2c_client *client) | ||
1054 | { | ||
1055 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
1056 | |||
1057 | data->temp[HYSTERSIS][0] = (u16) adt7475_read(REG_REMOTE1_HYSTERSIS); | ||
1058 | data->temp[HYSTERSIS][1] = data->temp[HYSTERSIS][0]; | ||
1059 | data->temp[HYSTERSIS][2] = (u16) adt7475_read(REG_REMOTE2_HYSTERSIS); | ||
1060 | } | ||
1061 | |||
1062 | static void adt7475_read_pwm(struct i2c_client *client, int index) | ||
1063 | { | ||
1064 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
1065 | unsigned int v; | ||
1066 | |||
1067 | data->pwm[CONTROL][index] = adt7475_read(PWM_CONFIG_REG(index)); | ||
1068 | |||
1069 | /* Figure out the internal value for pwmctrl and pwmchan | ||
1070 | based on the current settings */ | ||
1071 | v = (data->pwm[CONTROL][index] >> 5) & 7; | ||
1072 | |||
1073 | if (v == 3) | ||
1074 | data->pwmctl[index] = 0; | ||
1075 | else if (v == 7) | ||
1076 | data->pwmctl[index] = 1; | ||
1077 | else if (v == 4) { | ||
1078 | /* The fan is disabled - we don't want to | ||
1079 | support that, so change to manual mode and | ||
1080 | set the duty cycle to 0 instead | ||
1081 | */ | ||
1082 | data->pwm[INPUT][index] = 0; | ||
1083 | data->pwm[CONTROL][index] &= ~0xE0; | ||
1084 | data->pwm[CONTROL][index] |= (7 << 5); | ||
1085 | |||
1086 | i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index), | ||
1087 | data->pwm[INPUT][index]); | ||
1088 | |||
1089 | i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index), | ||
1090 | data->pwm[CONTROL][index]); | ||
1091 | |||
1092 | data->pwmctl[index] = 1; | ||
1093 | } else { | ||
1094 | data->pwmctl[index] = 2; | ||
1095 | |||
1096 | switch (v) { | ||
1097 | case 0: | ||
1098 | data->pwmchan[index] = 1; | ||
1099 | break; | ||
1100 | case 1: | ||
1101 | data->pwmchan[index] = 2; | ||
1102 | break; | ||
1103 | case 2: | ||
1104 | data->pwmchan[index] = 4; | ||
1105 | break; | ||
1106 | case 5: | ||
1107 | data->pwmchan[index] = 6; | ||
1108 | break; | ||
1109 | case 6: | ||
1110 | data->pwmchan[index] = 7; | ||
1111 | break; | ||
1112 | } | ||
1113 | } | ||
1114 | } | ||
1115 | |||
1116 | static struct adt7475_data *adt7475_update_device(struct device *dev) | ||
1117 | { | ||
1118 | struct i2c_client *client = to_i2c_client(dev); | ||
1119 | struct adt7475_data *data = i2c_get_clientdata(client); | ||
1120 | u8 ext; | ||
1121 | int i; | ||
1122 | |||
1123 | mutex_lock(&data->lock); | ||
1124 | |||
1125 | /* Measurement values update every 2 seconds */ | ||
1126 | if (time_after(jiffies, data->measure_updated + HZ * 2) || | ||
1127 | !data->valid) { | ||
1128 | data->alarms = adt7475_read(REG_STATUS2) << 8; | ||
1129 | data->alarms |= adt7475_read(REG_STATUS1); | ||
1130 | |||
1131 | ext = adt7475_read(REG_EXTEND1); | ||
1132 | for (i = 0; i < ADT7475_VOLTAGE_COUNT; i++) | ||
1133 | data->voltage[INPUT][i] = | ||
1134 | (adt7475_read(VOLTAGE_REG(i)) << 2) | | ||
1135 | ((ext >> ((i + 1) * 2)) & 3); | ||
1136 | |||
1137 | ext = adt7475_read(REG_EXTEND2); | ||
1138 | for (i = 0; i < ADT7475_TEMP_COUNT; i++) | ||
1139 | data->temp[INPUT][i] = | ||
1140 | (adt7475_read(TEMP_REG(i)) << 2) | | ||
1141 | ((ext >> ((i + 1) * 2)) & 3); | ||
1142 | |||
1143 | for (i = 0; i < ADT7475_TACH_COUNT; i++) | ||
1144 | data->tach[INPUT][i] = | ||
1145 | adt7475_read_word(client, TACH_REG(i)); | ||
1146 | |||
1147 | /* Updated by hw when in auto mode */ | ||
1148 | for (i = 0; i < ADT7475_PWM_COUNT; i++) | ||
1149 | data->pwm[INPUT][i] = adt7475_read(PWM_REG(i)); | ||
1150 | |||
1151 | data->measure_updated = jiffies; | ||
1152 | } | ||
1153 | |||
1154 | /* Limits and settings, should never change update every 60 seconds */ | ||
1155 | if (time_after(jiffies, data->limits_updated + HZ * 2) || | ||
1156 | !data->valid) { | ||
1157 | data->config5 = adt7475_read(REG_CONFIG5); | ||
1158 | |||
1159 | for (i = 0; i < ADT7475_VOLTAGE_COUNT; i++) { | ||
1160 | /* Adjust values so they match the input precision */ | ||
1161 | data->voltage[MIN][i] = | ||
1162 | adt7475_read(VOLTAGE_MIN_REG(i)) << 2; | ||
1163 | data->voltage[MAX][i] = | ||
1164 | adt7475_read(VOLTAGE_MAX_REG(i)) << 2; | ||
1165 | } | ||
1166 | |||
1167 | for (i = 0; i < ADT7475_TEMP_COUNT; i++) { | ||
1168 | /* Adjust values so they match the input precision */ | ||
1169 | data->temp[MIN][i] = | ||
1170 | adt7475_read(TEMP_MIN_REG(i)) << 2; | ||
1171 | data->temp[MAX][i] = | ||
1172 | adt7475_read(TEMP_MAX_REG(i)) << 2; | ||
1173 | data->temp[AUTOMIN][i] = | ||
1174 | adt7475_read(TEMP_TMIN_REG(i)) << 2; | ||
1175 | data->temp[THERM][i] = | ||
1176 | adt7475_read(TEMP_THERM_REG(i)) << 2; | ||
1177 | data->temp[OFFSET][i] = | ||
1178 | adt7475_read(TEMP_OFFSET_REG(i)); | ||
1179 | } | ||
1180 | adt7475_read_hystersis(client); | ||
1181 | |||
1182 | for (i = 0; i < ADT7475_TACH_COUNT; i++) | ||
1183 | data->tach[MIN][i] = | ||
1184 | adt7475_read_word(client, TACH_MIN_REG(i)); | ||
1185 | |||
1186 | for (i = 0; i < ADT7475_PWM_COUNT; i++) { | ||
1187 | data->pwm[MAX][i] = adt7475_read(PWM_MAX_REG(i)); | ||
1188 | data->pwm[MIN][i] = adt7475_read(PWM_MIN_REG(i)); | ||
1189 | /* Set the channel and control information */ | ||
1190 | adt7475_read_pwm(client, i); | ||
1191 | } | ||
1192 | |||
1193 | data->range[0] = adt7475_read(TEMP_TRANGE_REG(0)); | ||
1194 | data->range[1] = adt7475_read(TEMP_TRANGE_REG(1)); | ||
1195 | data->range[2] = adt7475_read(TEMP_TRANGE_REG(2)); | ||
1196 | |||
1197 | data->limits_updated = jiffies; | ||
1198 | data->valid = 1; | ||
1199 | } | ||
1200 | |||
1201 | mutex_unlock(&data->lock); | ||
1202 | |||
1203 | return data; | ||
1204 | } | ||
1205 | |||
1206 | static int __init sensors_adt7475_init(void) | ||
1207 | { | ||
1208 | return i2c_add_driver(&adt7475_driver); | ||
1209 | } | ||
1210 | |||
1211 | static void __exit sensors_adt7475_exit(void) | ||
1212 | { | ||
1213 | i2c_del_driver(&adt7475_driver); | ||
1214 | } | ||
1215 | |||
1216 | MODULE_AUTHOR("Advanced Micro Devices, Inc"); | ||
1217 | MODULE_DESCRIPTION("adt7475 driver"); | ||
1218 | MODULE_LICENSE("GPL"); | ||
1219 | |||
1220 | module_init(sensors_adt7475_init); | ||
1221 | module_exit(sensors_adt7475_exit); | ||
diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c index dca47a591baf..e30186236588 100644 --- a/drivers/hwmon/applesmc.c +++ b/drivers/hwmon/applesmc.c | |||
@@ -590,6 +590,11 @@ static ssize_t applesmc_light_show(struct device *dev, | |||
590 | } | 590 | } |
591 | 591 | ||
592 | ret = applesmc_read_key(LIGHT_SENSOR_LEFT_KEY, buffer, data_length); | 592 | ret = applesmc_read_key(LIGHT_SENSOR_LEFT_KEY, buffer, data_length); |
593 | /* newer macbooks report a single 10-bit bigendian value */ | ||
594 | if (data_length == 10) { | ||
595 | left = be16_to_cpu(*(__be16 *)(buffer + 6)) >> 2; | ||
596 | goto out; | ||
597 | } | ||
593 | left = buffer[2]; | 598 | left = buffer[2]; |
594 | if (ret) | 599 | if (ret) |
595 | goto out; | 600 | goto out; |
diff --git a/drivers/hwmon/hp_accel.c b/drivers/hwmon/hp_accel.c index bf8d40580577..03705240000f 100644 --- a/drivers/hwmon/hp_accel.c +++ b/drivers/hwmon/hp_accel.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Copyright (C) 2007-2008 Yan Burman | 4 | * Copyright (C) 2007-2008 Yan Burman |
5 | * Copyright (C) 2008 Eric Piel | 5 | * Copyright (C) 2008 Eric Piel |
6 | * Copyright (C) 2008 Pavel Machek | 6 | * Copyright (C) 2008-2009 Pavel Machek |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License as published by | 9 | * it under the terms of the GNU General Public License as published by |
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/freezer.h> | 36 | #include <linux/freezer.h> |
37 | #include <linux/version.h> | 37 | #include <linux/version.h> |
38 | #include <linux/uaccess.h> | 38 | #include <linux/uaccess.h> |
39 | #include <linux/leds.h> | ||
39 | #include <acpi/acpi_drivers.h> | 40 | #include <acpi/acpi_drivers.h> |
40 | #include <asm/atomic.h> | 41 | #include <asm/atomic.h> |
41 | #include "lis3lv02d.h" | 42 | #include "lis3lv02d.h" |
@@ -43,6 +44,36 @@ | |||
43 | #define DRIVER_NAME "lis3lv02d" | 44 | #define DRIVER_NAME "lis3lv02d" |
44 | #define ACPI_MDPS_CLASS "accelerometer" | 45 | #define ACPI_MDPS_CLASS "accelerometer" |
45 | 46 | ||
47 | /* Delayed LEDs infrastructure ------------------------------------ */ | ||
48 | |||
49 | /* Special LED class that can defer work */ | ||
50 | struct delayed_led_classdev { | ||
51 | struct led_classdev led_classdev; | ||
52 | struct work_struct work; | ||
53 | enum led_brightness new_brightness; | ||
54 | |||
55 | unsigned int led; /* For driver */ | ||
56 | void (*set_brightness)(struct delayed_led_classdev *data, enum led_brightness value); | ||
57 | }; | ||
58 | |||
59 | static inline void delayed_set_status_worker(struct work_struct *work) | ||
60 | { | ||
61 | struct delayed_led_classdev *data = | ||
62 | container_of(work, struct delayed_led_classdev, work); | ||
63 | |||
64 | data->set_brightness(data, data->new_brightness); | ||
65 | } | ||
66 | |||
67 | static inline void delayed_sysfs_set(struct led_classdev *led_cdev, | ||
68 | enum led_brightness brightness) | ||
69 | { | ||
70 | struct delayed_led_classdev *data = container_of(led_cdev, | ||
71 | struct delayed_led_classdev, led_classdev); | ||
72 | data->new_brightness = brightness; | ||
73 | schedule_work(&data->work); | ||
74 | } | ||
75 | |||
76 | /* HP-specific accelerometer driver ------------------------------------ */ | ||
46 | 77 | ||
47 | /* For automatic insertion of the module */ | 78 | /* For automatic insertion of the module */ |
48 | static struct acpi_device_id lis3lv02d_device_ids[] = { | 79 | static struct acpi_device_id lis3lv02d_device_ids[] = { |
@@ -154,10 +185,33 @@ static struct dmi_system_id lis3lv02d_dmi_ids[] = { | |||
154 | */ | 185 | */ |
155 | }; | 186 | }; |
156 | 187 | ||
188 | static void hpled_set(struct delayed_led_classdev *led_cdev, enum led_brightness value) | ||
189 | { | ||
190 | acpi_handle handle = adev.device->handle; | ||
191 | unsigned long long ret; /* Not used when writing */ | ||
192 | union acpi_object in_obj[1]; | ||
193 | struct acpi_object_list args = { 1, in_obj }; | ||
194 | |||
195 | in_obj[0].type = ACPI_TYPE_INTEGER; | ||
196 | in_obj[0].integer.value = !!value; | ||
197 | |||
198 | acpi_evaluate_integer(handle, "ALED", &args, &ret); | ||
199 | } | ||
200 | |||
201 | static struct delayed_led_classdev hpled_led = { | ||
202 | .led_classdev = { | ||
203 | .name = "hp::hddprotect", | ||
204 | .default_trigger = "none", | ||
205 | .brightness_set = delayed_sysfs_set, | ||
206 | .flags = LED_CORE_SUSPENDRESUME, | ||
207 | }, | ||
208 | .set_brightness = hpled_set, | ||
209 | }; | ||
157 | 210 | ||
158 | static int lis3lv02d_add(struct acpi_device *device) | 211 | static int lis3lv02d_add(struct acpi_device *device) |
159 | { | 212 | { |
160 | u8 val; | 213 | u8 val; |
214 | int ret; | ||
161 | 215 | ||
162 | if (!device) | 216 | if (!device) |
163 | return -EINVAL; | 217 | return -EINVAL; |
@@ -183,7 +237,19 @@ static int lis3lv02d_add(struct acpi_device *device) | |||
183 | adev.ac = lis3lv02d_axis_normal; | 237 | adev.ac = lis3lv02d_axis_normal; |
184 | } | 238 | } |
185 | 239 | ||
186 | return lis3lv02d_init_device(&adev); | 240 | INIT_WORK(&hpled_led.work, delayed_set_status_worker); |
241 | ret = led_classdev_register(NULL, &hpled_led.led_classdev); | ||
242 | if (ret) | ||
243 | return ret; | ||
244 | |||
245 | ret = lis3lv02d_init_device(&adev); | ||
246 | if (ret) { | ||
247 | flush_work(&hpled_led.work); | ||
248 | led_classdev_unregister(&hpled_led.led_classdev); | ||
249 | return ret; | ||
250 | } | ||
251 | |||
252 | return ret; | ||
187 | } | 253 | } |
188 | 254 | ||
189 | static int lis3lv02d_remove(struct acpi_device *device, int type) | 255 | static int lis3lv02d_remove(struct acpi_device *device, int type) |
@@ -194,6 +260,9 @@ static int lis3lv02d_remove(struct acpi_device *device, int type) | |||
194 | lis3lv02d_joystick_disable(); | 260 | lis3lv02d_joystick_disable(); |
195 | lis3lv02d_poweroff(device->handle); | 261 | lis3lv02d_poweroff(device->handle); |
196 | 262 | ||
263 | flush_work(&hpled_led.work); | ||
264 | led_classdev_unregister(&hpled_led.led_classdev); | ||
265 | |||
197 | return lis3lv02d_remove_fs(); | 266 | return lis3lv02d_remove_fs(); |
198 | } | 267 | } |
199 | 268 | ||
@@ -256,7 +325,7 @@ static void __exit lis3lv02d_exit_module(void) | |||
256 | acpi_bus_unregister_driver(&lis3lv02d_driver); | 325 | acpi_bus_unregister_driver(&lis3lv02d_driver); |
257 | } | 326 | } |
258 | 327 | ||
259 | MODULE_DESCRIPTION("Glue between LIS3LV02Dx and HP ACPI BIOS"); | 328 | MODULE_DESCRIPTION("Glue between LIS3LV02Dx and HP ACPI BIOS and support for disk protection LED."); |
260 | MODULE_AUTHOR("Yan Burman, Eric Piel, Pavel Machek"); | 329 | MODULE_AUTHOR("Yan Burman, Eric Piel, Pavel Machek"); |
261 | MODULE_LICENSE("GPL"); | 330 | MODULE_LICENSE("GPL"); |
262 | 331 | ||
diff --git a/drivers/hwmon/k8temp.c b/drivers/hwmon/k8temp.c index bd2bde0ef95e..1fe995111841 100644 --- a/drivers/hwmon/k8temp.c +++ b/drivers/hwmon/k8temp.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/hwmon-sysfs.h> | 31 | #include <linux/hwmon-sysfs.h> |
32 | #include <linux/err.h> | 32 | #include <linux/err.h> |
33 | #include <linux/mutex.h> | 33 | #include <linux/mutex.h> |
34 | #include <asm/processor.h> | ||
34 | 35 | ||
35 | #define TEMP_FROM_REG(val) (((((val) >> 16) & 0xff) - 49) * 1000) | 36 | #define TEMP_FROM_REG(val) (((((val) >> 16) & 0xff) - 49) * 1000) |
36 | #define REG_TEMP 0xe4 | 37 | #define REG_TEMP 0xe4 |
@@ -47,6 +48,8 @@ struct k8temp_data { | |||
47 | /* registers values */ | 48 | /* registers values */ |
48 | u8 sensorsp; /* sensor presence bits - SEL_CORE & SEL_PLACE */ | 49 | u8 sensorsp; /* sensor presence bits - SEL_CORE & SEL_PLACE */ |
49 | u32 temp[2][2]; /* core, place */ | 50 | u32 temp[2][2]; /* core, place */ |
51 | u8 swap_core_select; /* meaning of SEL_CORE is inverted */ | ||
52 | u32 temp_offset; | ||
50 | }; | 53 | }; |
51 | 54 | ||
52 | static struct k8temp_data *k8temp_update_device(struct device *dev) | 55 | static struct k8temp_data *k8temp_update_device(struct device *dev) |
@@ -114,10 +117,15 @@ static ssize_t show_temp(struct device *dev, | |||
114 | to_sensor_dev_attr_2(devattr); | 117 | to_sensor_dev_attr_2(devattr); |
115 | int core = attr->nr; | 118 | int core = attr->nr; |
116 | int place = attr->index; | 119 | int place = attr->index; |
120 | int temp; | ||
117 | struct k8temp_data *data = k8temp_update_device(dev); | 121 | struct k8temp_data *data = k8temp_update_device(dev); |
118 | 122 | ||
119 | return sprintf(buf, "%d\n", | 123 | if (data->swap_core_select) |
120 | TEMP_FROM_REG(data->temp[core][place])); | 124 | core = core ? 0 : 1; |
125 | |||
126 | temp = TEMP_FROM_REG(data->temp[core][place]) + data->temp_offset; | ||
127 | |||
128 | return sprintf(buf, "%d\n", temp); | ||
121 | } | 129 | } |
122 | 130 | ||
123 | /* core, place */ | 131 | /* core, place */ |
@@ -141,20 +149,49 @@ static int __devinit k8temp_probe(struct pci_dev *pdev, | |||
141 | int err; | 149 | int err; |
142 | u8 scfg; | 150 | u8 scfg; |
143 | u32 temp; | 151 | u32 temp; |
152 | u8 model, stepping; | ||
144 | struct k8temp_data *data; | 153 | struct k8temp_data *data; |
145 | u32 cpuid = cpuid_eax(1); | ||
146 | |||
147 | /* this feature should be available since SH-C0 core */ | ||
148 | if ((cpuid == 0xf40) || (cpuid == 0xf50) || (cpuid == 0xf51)) { | ||
149 | err = -ENODEV; | ||
150 | goto exit; | ||
151 | } | ||
152 | 154 | ||
153 | if (!(data = kzalloc(sizeof(struct k8temp_data), GFP_KERNEL))) { | 155 | if (!(data = kzalloc(sizeof(struct k8temp_data), GFP_KERNEL))) { |
154 | err = -ENOMEM; | 156 | err = -ENOMEM; |
155 | goto exit; | 157 | goto exit; |
156 | } | 158 | } |
157 | 159 | ||
160 | model = boot_cpu_data.x86_model; | ||
161 | stepping = boot_cpu_data.x86_mask; | ||
162 | |||
163 | switch (boot_cpu_data.x86) { | ||
164 | case 0xf: | ||
165 | /* feature available since SH-C0, exclude older revisions */ | ||
166 | if (((model == 4) && (stepping == 0)) || | ||
167 | ((model == 5) && (stepping <= 1))) { | ||
168 | err = -ENODEV; | ||
169 | goto exit_free; | ||
170 | } | ||
171 | |||
172 | /* | ||
173 | * AMD NPT family 0fh, i.e. RevF and RevG: | ||
174 | * meaning of SEL_CORE bit is inverted | ||
175 | */ | ||
176 | if (model >= 0x40) { | ||
177 | data->swap_core_select = 1; | ||
178 | dev_warn(&pdev->dev, "Temperature readouts might be " | ||
179 | "wrong - check erratum #141\n"); | ||
180 | } | ||
181 | |||
182 | if ((model >= 0x69) && | ||
183 | !(model == 0xc1 || model == 0x6c || model == 0x7c)) { | ||
184 | /* | ||
185 | * RevG desktop CPUs (i.e. no socket S1G1 parts) | ||
186 | * need additional offset, otherwise reported | ||
187 | * temperature is below ambient temperature | ||
188 | */ | ||
189 | data->temp_offset = 21000; | ||
190 | } | ||
191 | |||
192 | break; | ||
193 | } | ||
194 | |||
158 | pci_read_config_byte(pdev, REG_TEMP, &scfg); | 195 | pci_read_config_byte(pdev, REG_TEMP, &scfg); |
159 | scfg &= ~(SEL_PLACE | SEL_CORE); /* Select sensor 0, core0 */ | 196 | scfg &= ~(SEL_PLACE | SEL_CORE); /* Select sensor 0, core0 */ |
160 | pci_write_config_byte(pdev, REG_TEMP, scfg); | 197 | pci_write_config_byte(pdev, REG_TEMP, scfg); |
diff --git a/drivers/i2c/busses/i2c-acorn.c b/drivers/i2c/busses/i2c-acorn.c index 75089febbc13..9fee3ca17344 100644 --- a/drivers/i2c/busses/i2c-acorn.c +++ b/drivers/i2c/busses/i2c-acorn.c | |||
@@ -83,7 +83,6 @@ static struct i2c_algo_bit_data ioc_data = { | |||
83 | }; | 83 | }; |
84 | 84 | ||
85 | static struct i2c_adapter ioc_ops = { | 85 | static struct i2c_adapter ioc_ops = { |
86 | .id = I2C_HW_B_IOC, | ||
87 | .algo_data = &ioc_data, | 86 | .algo_data = &ioc_data, |
88 | }; | 87 | }; |
89 | 88 | ||
diff --git a/drivers/i2c/busses/i2c-ali1535.c b/drivers/i2c/busses/i2c-ali1535.c index 9cead9b9458e..981e080b32ae 100644 --- a/drivers/i2c/busses/i2c-ali1535.c +++ b/drivers/i2c/busses/i2c-ali1535.c | |||
@@ -476,7 +476,6 @@ static const struct i2c_algorithm smbus_algorithm = { | |||
476 | 476 | ||
477 | static struct i2c_adapter ali1535_adapter = { | 477 | static struct i2c_adapter ali1535_adapter = { |
478 | .owner = THIS_MODULE, | 478 | .owner = THIS_MODULE, |
479 | .id = I2C_HW_SMBUS_ALI1535, | ||
480 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 479 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
481 | .algo = &smbus_algorithm, | 480 | .algo = &smbus_algorithm, |
482 | }; | 481 | }; |
diff --git a/drivers/i2c/busses/i2c-ali1563.c b/drivers/i2c/busses/i2c-ali1563.c index dd9e796fad69..f70f46582c6c 100644 --- a/drivers/i2c/busses/i2c-ali1563.c +++ b/drivers/i2c/busses/i2c-ali1563.c | |||
@@ -386,7 +386,6 @@ static const struct i2c_algorithm ali1563_algorithm = { | |||
386 | 386 | ||
387 | static struct i2c_adapter ali1563_adapter = { | 387 | static struct i2c_adapter ali1563_adapter = { |
388 | .owner = THIS_MODULE, | 388 | .owner = THIS_MODULE, |
389 | .id = I2C_HW_SMBUS_ALI1563, | ||
390 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 389 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
391 | .algo = &ali1563_algorithm, | 390 | .algo = &ali1563_algorithm, |
392 | }; | 391 | }; |
diff --git a/drivers/i2c/busses/i2c-ali15x3.c b/drivers/i2c/busses/i2c-ali15x3.c index 234fdde7d40e..39066dee46e3 100644 --- a/drivers/i2c/busses/i2c-ali15x3.c +++ b/drivers/i2c/busses/i2c-ali15x3.c | |||
@@ -473,7 +473,6 @@ static const struct i2c_algorithm smbus_algorithm = { | |||
473 | 473 | ||
474 | static struct i2c_adapter ali15x3_adapter = { | 474 | static struct i2c_adapter ali15x3_adapter = { |
475 | .owner = THIS_MODULE, | 475 | .owner = THIS_MODULE, |
476 | .id = I2C_HW_SMBUS_ALI15X3, | ||
477 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 476 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
478 | .algo = &smbus_algorithm, | 477 | .algo = &smbus_algorithm, |
479 | }; | 478 | }; |
diff --git a/drivers/i2c/busses/i2c-amd756.c b/drivers/i2c/busses/i2c-amd756.c index 36bee5b9c952..220f4a1eee1d 100644 --- a/drivers/i2c/busses/i2c-amd756.c +++ b/drivers/i2c/busses/i2c-amd756.c | |||
@@ -298,7 +298,6 @@ static const struct i2c_algorithm smbus_algorithm = { | |||
298 | 298 | ||
299 | struct i2c_adapter amd756_smbus = { | 299 | struct i2c_adapter amd756_smbus = { |
300 | .owner = THIS_MODULE, | 300 | .owner = THIS_MODULE, |
301 | .id = I2C_HW_SMBUS_AMD756, | ||
302 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 301 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
303 | .algo = &smbus_algorithm, | 302 | .algo = &smbus_algorithm, |
304 | }; | 303 | }; |
diff --git a/drivers/i2c/busses/i2c-amd8111.c b/drivers/i2c/busses/i2c-amd8111.c index 3972208876b3..edab51973bf5 100644 --- a/drivers/i2c/busses/i2c-amd8111.c +++ b/drivers/i2c/busses/i2c-amd8111.c | |||
@@ -387,7 +387,6 @@ static int __devinit amd8111_probe(struct pci_dev *dev, | |||
387 | smbus->adapter.owner = THIS_MODULE; | 387 | smbus->adapter.owner = THIS_MODULE; |
388 | snprintf(smbus->adapter.name, sizeof(smbus->adapter.name), | 388 | snprintf(smbus->adapter.name, sizeof(smbus->adapter.name), |
389 | "SMBus2 AMD8111 adapter at %04x", smbus->base); | 389 | "SMBus2 AMD8111 adapter at %04x", smbus->base); |
390 | smbus->adapter.id = I2C_HW_SMBUS_AMD8111; | ||
391 | smbus->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; | 390 | smbus->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; |
392 | smbus->adapter.algo = &smbus_algorithm; | 391 | smbus->adapter.algo = &smbus_algorithm; |
393 | smbus->adapter.algo_data = smbus; | 392 | smbus->adapter.algo_data = smbus; |
diff --git a/drivers/i2c/busses/i2c-au1550.c b/drivers/i2c/busses/i2c-au1550.c index 66a04c2c660f..f78ce523e3db 100644 --- a/drivers/i2c/busses/i2c-au1550.c +++ b/drivers/i2c/busses/i2c-au1550.c | |||
@@ -400,7 +400,6 @@ i2c_au1550_probe(struct platform_device *pdev) | |||
400 | priv->xfer_timeout = 200; | 400 | priv->xfer_timeout = 200; |
401 | priv->ack_timeout = 200; | 401 | priv->ack_timeout = 200; |
402 | 402 | ||
403 | priv->adap.id = I2C_HW_AU1550_PSC; | ||
404 | priv->adap.nr = pdev->id; | 403 | priv->adap.nr = pdev->id; |
405 | priv->adap.algo = &au1550_algo; | 404 | priv->adap.algo = &au1550_algo; |
406 | priv->adap.algo_data = priv; | 405 | priv->adap.algo_data = priv; |
diff --git a/drivers/i2c/busses/i2c-bfin-twi.c b/drivers/i2c/busses/i2c-bfin-twi.c index 3fd2c417c1e0..fc548b3d002e 100644 --- a/drivers/i2c/busses/i2c-bfin-twi.c +++ b/drivers/i2c/busses/i2c-bfin-twi.c | |||
@@ -651,7 +651,6 @@ static int i2c_bfin_twi_probe(struct platform_device *pdev) | |||
651 | iface->timeout_timer.data = (unsigned long)iface; | 651 | iface->timeout_timer.data = (unsigned long)iface; |
652 | 652 | ||
653 | p_adap = &iface->adap; | 653 | p_adap = &iface->adap; |
654 | p_adap->id = I2C_HW_BLACKFIN; | ||
655 | p_adap->nr = pdev->id; | 654 | p_adap->nr = pdev->id; |
656 | strlcpy(p_adap->name, pdev->name, sizeof(p_adap->name)); | 655 | strlcpy(p_adap->name, pdev->name, sizeof(p_adap->name)); |
657 | p_adap->algo = &bfin_twi_algorithm; | 656 | p_adap->algo = &bfin_twi_algorithm; |
diff --git a/drivers/i2c/busses/i2c-elektor.c b/drivers/i2c/busses/i2c-elektor.c index 0ed3ccb81b63..448b4bf35eb7 100644 --- a/drivers/i2c/busses/i2c-elektor.c +++ b/drivers/i2c/busses/i2c-elektor.c | |||
@@ -202,7 +202,6 @@ static struct i2c_algo_pcf_data pcf_isa_data = { | |||
202 | static struct i2c_adapter pcf_isa_ops = { | 202 | static struct i2c_adapter pcf_isa_ops = { |
203 | .owner = THIS_MODULE, | 203 | .owner = THIS_MODULE, |
204 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 204 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
205 | .id = I2C_HW_P_ELEK, | ||
206 | .algo_data = &pcf_isa_data, | 205 | .algo_data = &pcf_isa_data, |
207 | .name = "i2c-elektor", | 206 | .name = "i2c-elektor", |
208 | }; | 207 | }; |
diff --git a/drivers/i2c/busses/i2c-hydra.c b/drivers/i2c/busses/i2c-hydra.c index 648aa7baff83..bec9b845dd16 100644 --- a/drivers/i2c/busses/i2c-hydra.c +++ b/drivers/i2c/busses/i2c-hydra.c | |||
@@ -102,7 +102,6 @@ static struct i2c_algo_bit_data hydra_bit_data = { | |||
102 | static struct i2c_adapter hydra_adap = { | 102 | static struct i2c_adapter hydra_adap = { |
103 | .owner = THIS_MODULE, | 103 | .owner = THIS_MODULE, |
104 | .name = "Hydra i2c", | 104 | .name = "Hydra i2c", |
105 | .id = I2C_HW_B_HYDRA, | ||
106 | .algo_data = &hydra_bit_data, | 105 | .algo_data = &hydra_bit_data, |
107 | }; | 106 | }; |
108 | 107 | ||
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index 526625eaa84b..230238df56c4 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c | |||
@@ -556,7 +556,6 @@ static const struct i2c_algorithm smbus_algorithm = { | |||
556 | 556 | ||
557 | static struct i2c_adapter i801_adapter = { | 557 | static struct i2c_adapter i801_adapter = { |
558 | .owner = THIS_MODULE, | 558 | .owner = THIS_MODULE, |
559 | .id = I2C_HW_SMBUS_I801, | ||
560 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 559 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
561 | .algo = &smbus_algorithm, | 560 | .algo = &smbus_algorithm, |
562 | }; | 561 | }; |
diff --git a/drivers/i2c/busses/i2c-ibm_iic.c b/drivers/i2c/busses/i2c-ibm_iic.c index 651f2f1ae5b7..88f0db73b364 100644 --- a/drivers/i2c/busses/i2c-ibm_iic.c +++ b/drivers/i2c/busses/i2c-ibm_iic.c | |||
@@ -746,7 +746,6 @@ static int __devinit iic_probe(struct of_device *ofdev, | |||
746 | adap->dev.parent = &ofdev->dev; | 746 | adap->dev.parent = &ofdev->dev; |
747 | strlcpy(adap->name, "IBM IIC", sizeof(adap->name)); | 747 | strlcpy(adap->name, "IBM IIC", sizeof(adap->name)); |
748 | i2c_set_adapdata(adap, dev); | 748 | i2c_set_adapdata(adap, dev); |
749 | adap->id = I2C_HW_OCP; | ||
750 | adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; | 749 | adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; |
751 | adap->algo = &iic_algo; | 750 | adap->algo = &iic_algo; |
752 | adap->timeout = 1; | 751 | adap->timeout = 1; |
diff --git a/drivers/i2c/busses/i2c-iop3xx.c b/drivers/i2c/busses/i2c-iop3xx.c index fc2714ac0c0f..3190690c26ce 100644 --- a/drivers/i2c/busses/i2c-iop3xx.c +++ b/drivers/i2c/busses/i2c-iop3xx.c | |||
@@ -480,7 +480,6 @@ iop3xx_i2c_probe(struct platform_device *pdev) | |||
480 | } | 480 | } |
481 | 481 | ||
482 | memcpy(new_adapter->name, pdev->name, strlen(pdev->name)); | 482 | memcpy(new_adapter->name, pdev->name, strlen(pdev->name)); |
483 | new_adapter->id = I2C_HW_IOP3XX; | ||
484 | new_adapter->owner = THIS_MODULE; | 483 | new_adapter->owner = THIS_MODULE; |
485 | new_adapter->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; | 484 | new_adapter->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; |
486 | new_adapter->dev.parent = &pdev->dev; | 485 | new_adapter->dev.parent = &pdev->dev; |
diff --git a/drivers/i2c/busses/i2c-ixp2000.c b/drivers/i2c/busses/i2c-ixp2000.c index 05d72e981353..8e8467970481 100644 --- a/drivers/i2c/busses/i2c-ixp2000.c +++ b/drivers/i2c/busses/i2c-ixp2000.c | |||
@@ -116,7 +116,6 @@ static int ixp2000_i2c_probe(struct platform_device *plat_dev) | |||
116 | drv_data->algo_data.udelay = 6; | 116 | drv_data->algo_data.udelay = 6; |
117 | drv_data->algo_data.timeout = 100; | 117 | drv_data->algo_data.timeout = 100; |
118 | 118 | ||
119 | drv_data->adapter.id = I2C_HW_B_IXP2000, | ||
120 | strlcpy(drv_data->adapter.name, plat_dev->dev.driver->name, | 119 | strlcpy(drv_data->adapter.name, plat_dev->dev.driver->name, |
121 | sizeof(drv_data->adapter.name)); | 120 | sizeof(drv_data->adapter.name)); |
122 | drv_data->adapter.algo_data = &drv_data->algo_data, | 121 | drv_data->adapter.algo_data = &drv_data->algo_data, |
diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c index a9a45fcc8544..aedbbe6618db 100644 --- a/drivers/i2c/busses/i2c-mpc.c +++ b/drivers/i2c/busses/i2c-mpc.c | |||
@@ -310,7 +310,6 @@ static const struct i2c_algorithm mpc_algo = { | |||
310 | static struct i2c_adapter mpc_ops = { | 310 | static struct i2c_adapter mpc_ops = { |
311 | .owner = THIS_MODULE, | 311 | .owner = THIS_MODULE, |
312 | .name = "MPC adapter", | 312 | .name = "MPC adapter", |
313 | .id = I2C_HW_MPC107, | ||
314 | .algo = &mpc_algo, | 313 | .algo = &mpc_algo, |
315 | .timeout = 1, | 314 | .timeout = 1, |
316 | }; | 315 | }; |
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c index 9e8118d2fe64..eeda276f8f16 100644 --- a/drivers/i2c/busses/i2c-mv64xxx.c +++ b/drivers/i2c/busses/i2c-mv64xxx.c | |||
@@ -527,7 +527,6 @@ mv64xxx_i2c_probe(struct platform_device *pd) | |||
527 | goto exit_unmap_regs; | 527 | goto exit_unmap_regs; |
528 | } | 528 | } |
529 | drv_data->adapter.dev.parent = &pd->dev; | 529 | drv_data->adapter.dev.parent = &pd->dev; |
530 | drv_data->adapter.id = I2C_HW_MV64XXX; | ||
531 | drv_data->adapter.algo = &mv64xxx_i2c_algo; | 530 | drv_data->adapter.algo = &mv64xxx_i2c_algo; |
532 | drv_data->adapter.owner = THIS_MODULE; | 531 | drv_data->adapter.owner = THIS_MODULE; |
533 | drv_data->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; | 532 | drv_data->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; |
diff --git a/drivers/i2c/busses/i2c-nforce2.c b/drivers/i2c/busses/i2c-nforce2.c index 3b19bc41a60b..05af6cd7f270 100644 --- a/drivers/i2c/busses/i2c-nforce2.c +++ b/drivers/i2c/busses/i2c-nforce2.c | |||
@@ -355,7 +355,6 @@ static int __devinit nforce2_probe_smb (struct pci_dev *dev, int bar, | |||
355 | return -EBUSY; | 355 | return -EBUSY; |
356 | } | 356 | } |
357 | smbus->adapter.owner = THIS_MODULE; | 357 | smbus->adapter.owner = THIS_MODULE; |
358 | smbus->adapter.id = I2C_HW_SMBUS_NFORCE2; | ||
359 | smbus->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; | 358 | smbus->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; |
360 | smbus->adapter.algo = &smbus_algorithm; | 359 | smbus->adapter.algo = &smbus_algorithm; |
361 | smbus->adapter.algo_data = smbus; | 360 | smbus->adapter.algo_data = smbus; |
diff --git a/drivers/i2c/busses/i2c-parport-light.c b/drivers/i2c/busses/i2c-parport-light.c index b2b8380f6602..322c5691e38e 100644 --- a/drivers/i2c/busses/i2c-parport-light.c +++ b/drivers/i2c/busses/i2c-parport-light.c | |||
@@ -115,7 +115,6 @@ static struct i2c_algo_bit_data parport_algo_data = { | |||
115 | static struct i2c_adapter parport_adapter = { | 115 | static struct i2c_adapter parport_adapter = { |
116 | .owner = THIS_MODULE, | 116 | .owner = THIS_MODULE, |
117 | .class = I2C_CLASS_HWMON, | 117 | .class = I2C_CLASS_HWMON, |
118 | .id = I2C_HW_B_LP, | ||
119 | .algo_data = &parport_algo_data, | 118 | .algo_data = &parport_algo_data, |
120 | .name = "Parallel port adapter (light)", | 119 | .name = "Parallel port adapter (light)", |
121 | }; | 120 | }; |
diff --git a/drivers/i2c/busses/i2c-parport.c b/drivers/i2c/busses/i2c-parport.c index a257cd5cd134..0d8998610c74 100644 --- a/drivers/i2c/busses/i2c-parport.c +++ b/drivers/i2c/busses/i2c-parport.c | |||
@@ -164,7 +164,6 @@ static void i2c_parport_attach (struct parport *port) | |||
164 | /* Fill the rest of the structure */ | 164 | /* Fill the rest of the structure */ |
165 | adapter->adapter.owner = THIS_MODULE; | 165 | adapter->adapter.owner = THIS_MODULE; |
166 | adapter->adapter.class = I2C_CLASS_HWMON; | 166 | adapter->adapter.class = I2C_CLASS_HWMON; |
167 | adapter->adapter.id = I2C_HW_B_LP; | ||
168 | strlcpy(adapter->adapter.name, "Parallel port adapter", | 167 | strlcpy(adapter->adapter.name, "Parallel port adapter", |
169 | sizeof(adapter->adapter.name)); | 168 | sizeof(adapter->adapter.name)); |
170 | adapter->algo_data = parport_algo_data; | 169 | adapter->algo_data = parport_algo_data; |
diff --git a/drivers/i2c/busses/i2c-pca-isa.c b/drivers/i2c/busses/i2c-pca-isa.c index 9eb76268ec78..4aa8138cb0a9 100644 --- a/drivers/i2c/busses/i2c-pca-isa.c +++ b/drivers/i2c/busses/i2c-pca-isa.c | |||
@@ -101,7 +101,6 @@ static struct i2c_algo_pca_data pca_isa_data = { | |||
101 | 101 | ||
102 | static struct i2c_adapter pca_isa_ops = { | 102 | static struct i2c_adapter pca_isa_ops = { |
103 | .owner = THIS_MODULE, | 103 | .owner = THIS_MODULE, |
104 | .id = I2C_HW_A_ISA, | ||
105 | .algo_data = &pca_isa_data, | 104 | .algo_data = &pca_isa_data, |
106 | .name = "PCA9564 ISA Adapter", | 105 | .name = "PCA9564 ISA Adapter", |
107 | .timeout = 100, | 106 | .timeout = 100, |
diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c index eaa9b387543e..761f9dd53620 100644 --- a/drivers/i2c/busses/i2c-piix4.c +++ b/drivers/i2c/busses/i2c-piix4.c | |||
@@ -403,7 +403,6 @@ static const struct i2c_algorithm smbus_algorithm = { | |||
403 | 403 | ||
404 | static struct i2c_adapter piix4_adapter = { | 404 | static struct i2c_adapter piix4_adapter = { |
405 | .owner = THIS_MODULE, | 405 | .owner = THIS_MODULE, |
406 | .id = I2C_HW_SMBUS_PIIX4, | ||
407 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 406 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
408 | .algo = &smbus_algorithm, | 407 | .algo = &smbus_algorithm, |
409 | }; | 408 | }; |
diff --git a/drivers/i2c/busses/i2c-sibyte.c b/drivers/i2c/busses/i2c-sibyte.c index 4ddefbf238e9..98b1ec489159 100644 --- a/drivers/i2c/busses/i2c-sibyte.c +++ b/drivers/i2c/busses/i2c-sibyte.c | |||
@@ -155,7 +155,6 @@ static struct i2c_algo_sibyte_data sibyte_board_data[2] = { | |||
155 | static struct i2c_adapter sibyte_board_adapter[2] = { | 155 | static struct i2c_adapter sibyte_board_adapter[2] = { |
156 | { | 156 | { |
157 | .owner = THIS_MODULE, | 157 | .owner = THIS_MODULE, |
158 | .id = I2C_HW_SIBYTE, | ||
159 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 158 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
160 | .algo = NULL, | 159 | .algo = NULL, |
161 | .algo_data = &sibyte_board_data[0], | 160 | .algo_data = &sibyte_board_data[0], |
@@ -164,7 +163,6 @@ static struct i2c_adapter sibyte_board_adapter[2] = { | |||
164 | }, | 163 | }, |
165 | { | 164 | { |
166 | .owner = THIS_MODULE, | 165 | .owner = THIS_MODULE, |
167 | .id = I2C_HW_SIBYTE, | ||
168 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 166 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
169 | .algo = NULL, | 167 | .algo = NULL, |
170 | .algo_data = &sibyte_board_data[1], | 168 | .algo_data = &sibyte_board_data[1], |
diff --git a/drivers/i2c/busses/i2c-sis5595.c b/drivers/i2c/busses/i2c-sis5595.c index 8ce2daff985c..f320ab27da46 100644 --- a/drivers/i2c/busses/i2c-sis5595.c +++ b/drivers/i2c/busses/i2c-sis5595.c | |||
@@ -365,7 +365,6 @@ static const struct i2c_algorithm smbus_algorithm = { | |||
365 | 365 | ||
366 | static struct i2c_adapter sis5595_adapter = { | 366 | static struct i2c_adapter sis5595_adapter = { |
367 | .owner = THIS_MODULE, | 367 | .owner = THIS_MODULE, |
368 | .id = I2C_HW_SMBUS_SIS5595, | ||
369 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 368 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
370 | .algo = &smbus_algorithm, | 369 | .algo = &smbus_algorithm, |
371 | }; | 370 | }; |
diff --git a/drivers/i2c/busses/i2c-sis630.c b/drivers/i2c/busses/i2c-sis630.c index 9c9c016ff2b5..50c3610e6028 100644 --- a/drivers/i2c/busses/i2c-sis630.c +++ b/drivers/i2c/busses/i2c-sis630.c | |||
@@ -464,7 +464,6 @@ static const struct i2c_algorithm smbus_algorithm = { | |||
464 | 464 | ||
465 | static struct i2c_adapter sis630_adapter = { | 465 | static struct i2c_adapter sis630_adapter = { |
466 | .owner = THIS_MODULE, | 466 | .owner = THIS_MODULE, |
467 | .id = I2C_HW_SMBUS_SIS630, | ||
468 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 467 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
469 | .algo = &smbus_algorithm, | 468 | .algo = &smbus_algorithm, |
470 | }; | 469 | }; |
diff --git a/drivers/i2c/busses/i2c-sis96x.c b/drivers/i2c/busses/i2c-sis96x.c index f1bba6396641..7e1594b40579 100644 --- a/drivers/i2c/busses/i2c-sis96x.c +++ b/drivers/i2c/busses/i2c-sis96x.c | |||
@@ -241,7 +241,6 @@ static const struct i2c_algorithm smbus_algorithm = { | |||
241 | 241 | ||
242 | static struct i2c_adapter sis96x_adapter = { | 242 | static struct i2c_adapter sis96x_adapter = { |
243 | .owner = THIS_MODULE, | 243 | .owner = THIS_MODULE, |
244 | .id = I2C_HW_SMBUS_SIS96X, | ||
245 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 244 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
246 | .algo = &smbus_algorithm, | 245 | .algo = &smbus_algorithm, |
247 | }; | 246 | }; |
diff --git a/drivers/i2c/busses/i2c-via.c b/drivers/i2c/busses/i2c-via.c index 29cef0433f34..8b24f192103a 100644 --- a/drivers/i2c/busses/i2c-via.c +++ b/drivers/i2c/busses/i2c-via.c | |||
@@ -83,7 +83,6 @@ static struct i2c_algo_bit_data bit_data = { | |||
83 | 83 | ||
84 | static struct i2c_adapter vt586b_adapter = { | 84 | static struct i2c_adapter vt586b_adapter = { |
85 | .owner = THIS_MODULE, | 85 | .owner = THIS_MODULE, |
86 | .id = I2C_HW_B_VIA, | ||
87 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 86 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
88 | .name = "VIA i2c", | 87 | .name = "VIA i2c", |
89 | .algo_data = &bit_data, | 88 | .algo_data = &bit_data, |
diff --git a/drivers/i2c/busses/i2c-viapro.c b/drivers/i2c/busses/i2c-viapro.c index 9f194d9efd91..02e6f724b05f 100644 --- a/drivers/i2c/busses/i2c-viapro.c +++ b/drivers/i2c/busses/i2c-viapro.c | |||
@@ -321,7 +321,6 @@ static const struct i2c_algorithm smbus_algorithm = { | |||
321 | 321 | ||
322 | static struct i2c_adapter vt596_adapter = { | 322 | static struct i2c_adapter vt596_adapter = { |
323 | .owner = THIS_MODULE, | 323 | .owner = THIS_MODULE, |
324 | .id = I2C_HW_SMBUS_VIA2, | ||
325 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 324 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
326 | .algo = &smbus_algorithm, | 325 | .algo = &smbus_algorithm, |
327 | }; | 326 | }; |
diff --git a/drivers/i2c/busses/i2c-voodoo3.c b/drivers/i2c/busses/i2c-voodoo3.c index 1d4ae26ba73d..1a474acc0ddd 100644 --- a/drivers/i2c/busses/i2c-voodoo3.c +++ b/drivers/i2c/busses/i2c-voodoo3.c | |||
@@ -163,7 +163,6 @@ static struct i2c_algo_bit_data voo_i2c_bit_data = { | |||
163 | 163 | ||
164 | static struct i2c_adapter voodoo3_i2c_adapter = { | 164 | static struct i2c_adapter voodoo3_i2c_adapter = { |
165 | .owner = THIS_MODULE, | 165 | .owner = THIS_MODULE, |
166 | .id = I2C_HW_B_VOO, | ||
167 | .class = I2C_CLASS_TV_ANALOG, | 166 | .class = I2C_CLASS_TV_ANALOG, |
168 | .name = "I2C Voodoo3/Banshee adapter", | 167 | .name = "I2C Voodoo3/Banshee adapter", |
169 | .algo_data = &voo_i2c_bit_data, | 168 | .algo_data = &voo_i2c_bit_data, |
@@ -180,7 +179,6 @@ static struct i2c_algo_bit_data voo_ddc_bit_data = { | |||
180 | 179 | ||
181 | static struct i2c_adapter voodoo3_ddc_adapter = { | 180 | static struct i2c_adapter voodoo3_ddc_adapter = { |
182 | .owner = THIS_MODULE, | 181 | .owner = THIS_MODULE, |
183 | .id = I2C_HW_B_VOO, | ||
184 | .class = I2C_CLASS_DDC, | 182 | .class = I2C_CLASS_DDC, |
185 | .name = "DDC Voodoo3/Banshee adapter", | 183 | .name = "DDC Voodoo3/Banshee adapter", |
186 | .algo_data = &voo_ddc_bit_data, | 184 | .algo_data = &voo_ddc_bit_data, |
diff --git a/drivers/i2c/busses/scx200_acb.c b/drivers/i2c/busses/scx200_acb.c index ed794b145a11..648ecc6f60e6 100644 --- a/drivers/i2c/busses/scx200_acb.c +++ b/drivers/i2c/busses/scx200_acb.c | |||
@@ -440,7 +440,6 @@ static __init struct scx200_acb_iface *scx200_create_iface(const char *text, | |||
440 | i2c_set_adapdata(adapter, iface); | 440 | i2c_set_adapdata(adapter, iface); |
441 | snprintf(adapter->name, sizeof(adapter->name), "%s ACB%d", text, index); | 441 | snprintf(adapter->name, sizeof(adapter->name), "%s ACB%d", text, index); |
442 | adapter->owner = THIS_MODULE; | 442 | adapter->owner = THIS_MODULE; |
443 | adapter->id = I2C_HW_SMBUS_SCX200; | ||
444 | adapter->algo = &scx200_acb_algorithm; | 443 | adapter->algo = &scx200_acb_algorithm; |
445 | adapter->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; | 444 | adapter->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; |
446 | adapter->dev.parent = dev; | 445 | adapter->dev.parent = dev; |
diff --git a/drivers/i2c/busses/scx200_i2c.c b/drivers/i2c/busses/scx200_i2c.c index e4c98539c517..162b74a04886 100644 --- a/drivers/i2c/busses/scx200_i2c.c +++ b/drivers/i2c/busses/scx200_i2c.c | |||
@@ -82,7 +82,6 @@ static struct i2c_algo_bit_data scx200_i2c_data = { | |||
82 | static struct i2c_adapter scx200_i2c_ops = { | 82 | static struct i2c_adapter scx200_i2c_ops = { |
83 | .owner = THIS_MODULE, | 83 | .owner = THIS_MODULE, |
84 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, | 84 | .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, |
85 | .id = I2C_HW_B_SCX200, | ||
86 | .algo_data = &scx200_i2c_data, | 85 | .algo_data = &scx200_i2c_data, |
87 | .name = "NatSemi SCx200 I2C", | 86 | .name = "NatSemi SCx200 I2C", |
88 | }; | 87 | }; |
diff --git a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig index b9bef04b7be4..c80312c1f382 100644 --- a/drivers/i2c/chips/Kconfig +++ b/drivers/i2c/chips/Kconfig | |||
@@ -16,43 +16,6 @@ config DS1682 | |||
16 | This driver can also be built as a module. If so, the module | 16 | This driver can also be built as a module. If so, the module |
17 | will be called ds1682. | 17 | will be called ds1682. |
18 | 18 | ||
19 | config AT24 | ||
20 | tristate "EEPROMs from most vendors" | ||
21 | depends on SYSFS && EXPERIMENTAL | ||
22 | help | ||
23 | Enable this driver to get read/write support to most I2C EEPROMs, | ||
24 | after you configure the driver to know about each EEPROM on | ||
25 | your target board. Use these generic chip names, instead of | ||
26 | vendor-specific ones like at24c64 or 24lc02: | ||
27 | |||
28 | 24c00, 24c01, 24c02, spd (readonly 24c02), 24c04, 24c08, | ||
29 | 24c16, 24c32, 24c64, 24c128, 24c256, 24c512, 24c1024 | ||
30 | |||
31 | Unless you like data loss puzzles, always be sure that any chip | ||
32 | you configure as a 24c32 (32 kbit) or larger is NOT really a | ||
33 | 24c16 (16 kbit) or smaller, and vice versa. Marking the chip | ||
34 | as read-only won't help recover from this. Also, if your chip | ||
35 | has any software write-protect mechanism you may want to review the | ||
36 | code to make sure this driver won't turn it on by accident. | ||
37 | |||
38 | If you use this with an SMBus adapter instead of an I2C adapter, | ||
39 | full functionality is not available. Only smaller devices are | ||
40 | supported (24c16 and below, max 4 kByte). | ||
41 | |||
42 | This driver can also be built as a module. If so, the module | ||
43 | will be called at24. | ||
44 | |||
45 | config SENSORS_EEPROM | ||
46 | tristate "EEPROM reader" | ||
47 | depends on EXPERIMENTAL | ||
48 | help | ||
49 | If you say yes here you get read-only access to the EEPROM data | ||
50 | available on modern memory DIMMs and Sony Vaio laptops. Such | ||
51 | EEPROMs could theoretically be available on other devices as well. | ||
52 | |||
53 | This driver can also be built as a module. If so, the module | ||
54 | will be called eeprom. | ||
55 | |||
56 | config SENSORS_PCF8574 | 19 | config SENSORS_PCF8574 |
57 | tristate "Philips PCF8574 and PCF8574A (DEPRECATED)" | 20 | tristate "Philips PCF8574 and PCF8574A (DEPRECATED)" |
58 | depends on EXPERIMENTAL && GPIO_PCF857X = "n" | 21 | depends on EXPERIMENTAL && GPIO_PCF857X = "n" |
diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile index 00fcb5193ac2..d142f238a2de 100644 --- a/drivers/i2c/chips/Makefile +++ b/drivers/i2c/chips/Makefile | |||
@@ -11,8 +11,6 @@ | |||
11 | # | 11 | # |
12 | 12 | ||
13 | obj-$(CONFIG_DS1682) += ds1682.o | 13 | obj-$(CONFIG_DS1682) += ds1682.o |
14 | obj-$(CONFIG_AT24) += at24.o | ||
15 | obj-$(CONFIG_SENSORS_EEPROM) += eeprom.o | ||
16 | obj-$(CONFIG_SENSORS_MAX6875) += max6875.o | 14 | obj-$(CONFIG_SENSORS_MAX6875) += max6875.o |
17 | obj-$(CONFIG_SENSORS_PCA9539) += pca9539.o | 15 | obj-$(CONFIG_SENSORS_PCA9539) += pca9539.o |
18 | obj-$(CONFIG_SENSORS_PCF8574) += pcf8574.o | 16 | obj-$(CONFIG_SENSORS_PCF8574) += pcf8574.o |
diff --git a/drivers/ide/falconide.c b/drivers/ide/falconide.c index a5ba820d69bb..a638e952d67a 100644 --- a/drivers/ide/falconide.c +++ b/drivers/ide/falconide.c | |||
@@ -82,7 +82,7 @@ static const struct ide_tp_ops falconide_tp_ops = { | |||
82 | 82 | ||
83 | static const struct ide_port_info falconide_port_info = { | 83 | static const struct ide_port_info falconide_port_info = { |
84 | .tp_ops = &falconide_tp_ops, | 84 | .tp_ops = &falconide_tp_ops, |
85 | .host_flags = IDE_HFLAG_NO_DMA, | 85 | .host_flags = IDE_HFLAG_NO_DMA | IDE_HFLAG_SERIALIZE, |
86 | }; | 86 | }; |
87 | 87 | ||
88 | static void __init falconide_setup_ports(hw_regs_t *hw) | 88 | static void __init falconide_setup_ports(hw_regs_t *hw) |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 312127ea443a..0db1ed9f5fc2 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -649,7 +649,8 @@ static int ide_register_port(ide_hwif_t *hwif) | |||
649 | /* register with global device tree */ | 649 | /* register with global device tree */ |
650 | dev_set_name(&hwif->gendev, hwif->name); | 650 | dev_set_name(&hwif->gendev, hwif->name); |
651 | hwif->gendev.driver_data = hwif; | 651 | hwif->gendev.driver_data = hwif; |
652 | hwif->gendev.parent = hwif->dev; | 652 | if (hwif->gendev.parent == NULL) |
653 | hwif->gendev.parent = hwif->dev; | ||
653 | hwif->gendev.release = hwif_release_dev; | 654 | hwif->gendev.release = hwif_release_dev; |
654 | 655 | ||
655 | ret = device_register(&hwif->gendev); | 656 | ret = device_register(&hwif->gendev); |
diff --git a/drivers/ide/palm_bk3710.c b/drivers/ide/palm_bk3710.c index a7ac490c9ae3..f38aac78044c 100644 --- a/drivers/ide/palm_bk3710.c +++ b/drivers/ide/palm_bk3710.c | |||
@@ -346,7 +346,8 @@ static int __init palm_bk3710_probe(struct platform_device *pdev) | |||
346 | { | 346 | { |
347 | struct clk *clk; | 347 | struct clk *clk; |
348 | struct resource *mem, *irq; | 348 | struct resource *mem, *irq; |
349 | unsigned long base, rate; | 349 | void __iomem *base; |
350 | unsigned long rate; | ||
350 | int i, rc; | 351 | int i, rc; |
351 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; | 352 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; |
352 | 353 | ||
@@ -382,11 +383,13 @@ static int __init palm_bk3710_probe(struct platform_device *pdev) | |||
382 | base = IO_ADDRESS(mem->start); | 383 | base = IO_ADDRESS(mem->start); |
383 | 384 | ||
384 | /* Configure the Palm Chip controller */ | 385 | /* Configure the Palm Chip controller */ |
385 | palm_bk3710_chipinit((void __iomem *)base); | 386 | palm_bk3710_chipinit(base); |
386 | 387 | ||
387 | for (i = 0; i < IDE_NR_PORTS - 2; i++) | 388 | for (i = 0; i < IDE_NR_PORTS - 2; i++) |
388 | hw.io_ports_array[i] = base + IDE_PALM_ATA_PRI_REG_OFFSET + i; | 389 | hw.io_ports_array[i] = (unsigned long) |
389 | hw.io_ports.ctl_addr = base + IDE_PALM_ATA_PRI_CTL_OFFSET; | 390 | (base + IDE_PALM_ATA_PRI_REG_OFFSET + i); |
391 | hw.io_ports.ctl_addr = (unsigned long) | ||
392 | (base + IDE_PALM_ATA_PRI_CTL_OFFSET); | ||
390 | hw.irq = irq->start; | 393 | hw.irq = irq->start; |
391 | hw.dev = &pdev->dev; | 394 | hw.dev = &pdev->dev; |
392 | hw.chipset = ide_palm3710; | 395 | hw.chipset = ide_palm3710; |
diff --git a/drivers/ieee1394/pcilynx.c b/drivers/ieee1394/pcilynx.c index dc15cadb06ef..38f712036201 100644 --- a/drivers/ieee1394/pcilynx.c +++ b/drivers/ieee1394/pcilynx.c | |||
@@ -1419,7 +1419,6 @@ static int __devinit add_card(struct pci_dev *dev, | |||
1419 | i2c_ad = kzalloc(sizeof(*i2c_ad), GFP_KERNEL); | 1419 | i2c_ad = kzalloc(sizeof(*i2c_ad), GFP_KERNEL); |
1420 | if (!i2c_ad) FAIL("failed to allocate I2C adapter memory"); | 1420 | if (!i2c_ad) FAIL("failed to allocate I2C adapter memory"); |
1421 | 1421 | ||
1422 | i2c_ad->id = I2C_HW_B_PCILYNX; | ||
1423 | strlcpy(i2c_ad->name, "PCILynx I2C", sizeof(i2c_ad->name)); | 1422 | strlcpy(i2c_ad->name, "PCILynx I2C", sizeof(i2c_ad->name)); |
1424 | i2c_adapter_data = bit_data; | 1423 | i2c_adapter_data = bit_data; |
1425 | i2c_ad->algo_data = &i2c_adapter_data; | 1424 | i2c_ad->algo_data = &i2c_adapter_data; |
diff --git a/drivers/infiniband/hw/ehca/ehca_cq.c b/drivers/infiniband/hw/ehca/ehca_cq.c index 2f4c28a30271..97e4b231cdc4 100644 --- a/drivers/infiniband/hw/ehca/ehca_cq.c +++ b/drivers/infiniband/hw/ehca/ehca_cq.c | |||
@@ -196,7 +196,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector, | |||
196 | 196 | ||
197 | if (h_ret != H_SUCCESS) { | 197 | if (h_ret != H_SUCCESS) { |
198 | ehca_err(device, "hipz_h_alloc_resource_cq() failed " | 198 | ehca_err(device, "hipz_h_alloc_resource_cq() failed " |
199 | "h_ret=%li device=%p", h_ret, device); | 199 | "h_ret=%lli device=%p", h_ret, device); |
200 | cq = ERR_PTR(ehca2ib_return_code(h_ret)); | 200 | cq = ERR_PTR(ehca2ib_return_code(h_ret)); |
201 | goto create_cq_exit2; | 201 | goto create_cq_exit2; |
202 | } | 202 | } |
@@ -232,7 +232,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector, | |||
232 | 232 | ||
233 | if (h_ret < H_SUCCESS) { | 233 | if (h_ret < H_SUCCESS) { |
234 | ehca_err(device, "hipz_h_register_rpage_cq() failed " | 234 | ehca_err(device, "hipz_h_register_rpage_cq() failed " |
235 | "ehca_cq=%p cq_num=%x h_ret=%li counter=%i " | 235 | "ehca_cq=%p cq_num=%x h_ret=%lli counter=%i " |
236 | "act_pages=%i", my_cq, my_cq->cq_number, | 236 | "act_pages=%i", my_cq, my_cq->cq_number, |
237 | h_ret, counter, param.act_pages); | 237 | h_ret, counter, param.act_pages); |
238 | cq = ERR_PTR(-EINVAL); | 238 | cq = ERR_PTR(-EINVAL); |
@@ -244,7 +244,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector, | |||
244 | if ((h_ret != H_SUCCESS) || vpage) { | 244 | if ((h_ret != H_SUCCESS) || vpage) { |
245 | ehca_err(device, "Registration of pages not " | 245 | ehca_err(device, "Registration of pages not " |
246 | "complete ehca_cq=%p cq_num=%x " | 246 | "complete ehca_cq=%p cq_num=%x " |
247 | "h_ret=%li", my_cq, my_cq->cq_number, | 247 | "h_ret=%lli", my_cq, my_cq->cq_number, |
248 | h_ret); | 248 | h_ret); |
249 | cq = ERR_PTR(-EAGAIN); | 249 | cq = ERR_PTR(-EAGAIN); |
250 | goto create_cq_exit4; | 250 | goto create_cq_exit4; |
@@ -252,7 +252,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector, | |||
252 | } else { | 252 | } else { |
253 | if (h_ret != H_PAGE_REGISTERED) { | 253 | if (h_ret != H_PAGE_REGISTERED) { |
254 | ehca_err(device, "Registration of page failed " | 254 | ehca_err(device, "Registration of page failed " |
255 | "ehca_cq=%p cq_num=%x h_ret=%li " | 255 | "ehca_cq=%p cq_num=%x h_ret=%lli " |
256 | "counter=%i act_pages=%i", | 256 | "counter=%i act_pages=%i", |
257 | my_cq, my_cq->cq_number, | 257 | my_cq, my_cq->cq_number, |
258 | h_ret, counter, param.act_pages); | 258 | h_ret, counter, param.act_pages); |
@@ -266,7 +266,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector, | |||
266 | 266 | ||
267 | gal = my_cq->galpas.kernel; | 267 | gal = my_cq->galpas.kernel; |
268 | cqx_fec = hipz_galpa_load(gal, CQTEMM_OFFSET(cqx_fec)); | 268 | cqx_fec = hipz_galpa_load(gal, CQTEMM_OFFSET(cqx_fec)); |
269 | ehca_dbg(device, "ehca_cq=%p cq_num=%x CQX_FEC=%lx", | 269 | ehca_dbg(device, "ehca_cq=%p cq_num=%x CQX_FEC=%llx", |
270 | my_cq, my_cq->cq_number, cqx_fec); | 270 | my_cq, my_cq->cq_number, cqx_fec); |
271 | 271 | ||
272 | my_cq->ib_cq.cqe = my_cq->nr_of_entries = | 272 | my_cq->ib_cq.cqe = my_cq->nr_of_entries = |
@@ -307,7 +307,7 @@ create_cq_exit3: | |||
307 | h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 1); | 307 | h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 1); |
308 | if (h_ret != H_SUCCESS) | 308 | if (h_ret != H_SUCCESS) |
309 | ehca_err(device, "hipz_h_destroy_cq() failed ehca_cq=%p " | 309 | ehca_err(device, "hipz_h_destroy_cq() failed ehca_cq=%p " |
310 | "cq_num=%x h_ret=%li", my_cq, my_cq->cq_number, h_ret); | 310 | "cq_num=%x h_ret=%lli", my_cq, my_cq->cq_number, h_ret); |
311 | 311 | ||
312 | create_cq_exit2: | 312 | create_cq_exit2: |
313 | write_lock_irqsave(&ehca_cq_idr_lock, flags); | 313 | write_lock_irqsave(&ehca_cq_idr_lock, flags); |
@@ -355,7 +355,7 @@ int ehca_destroy_cq(struct ib_cq *cq) | |||
355 | h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 0); | 355 | h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 0); |
356 | if (h_ret == H_R_STATE) { | 356 | if (h_ret == H_R_STATE) { |
357 | /* cq in err: read err data and destroy it forcibly */ | 357 | /* cq in err: read err data and destroy it forcibly */ |
358 | ehca_dbg(device, "ehca_cq=%p cq_num=%x ressource=%lx in err " | 358 | ehca_dbg(device, "ehca_cq=%p cq_num=%x resource=%llx in err " |
359 | "state. Try to delete it forcibly.", | 359 | "state. Try to delete it forcibly.", |
360 | my_cq, cq_num, my_cq->ipz_cq_handle.handle); | 360 | my_cq, cq_num, my_cq->ipz_cq_handle.handle); |
361 | ehca_error_data(shca, my_cq, my_cq->ipz_cq_handle.handle); | 361 | ehca_error_data(shca, my_cq, my_cq->ipz_cq_handle.handle); |
@@ -365,7 +365,7 @@ int ehca_destroy_cq(struct ib_cq *cq) | |||
365 | cq_num); | 365 | cq_num); |
366 | } | 366 | } |
367 | if (h_ret != H_SUCCESS) { | 367 | if (h_ret != H_SUCCESS) { |
368 | ehca_err(device, "hipz_h_destroy_cq() failed h_ret=%li " | 368 | ehca_err(device, "hipz_h_destroy_cq() failed h_ret=%lli " |
369 | "ehca_cq=%p cq_num=%x", h_ret, my_cq, cq_num); | 369 | "ehca_cq=%p cq_num=%x", h_ret, my_cq, cq_num); |
370 | return ehca2ib_return_code(h_ret); | 370 | return ehca2ib_return_code(h_ret); |
371 | } | 371 | } |
diff --git a/drivers/infiniband/hw/ehca/ehca_hca.c b/drivers/infiniband/hw/ehca/ehca_hca.c index 46288220cfbb..9209c5332dfe 100644 --- a/drivers/infiniband/hw/ehca/ehca_hca.c +++ b/drivers/infiniband/hw/ehca/ehca_hca.c | |||
@@ -393,7 +393,7 @@ int ehca_modify_port(struct ib_device *ibdev, | |||
393 | hret = hipz_h_modify_port(shca->ipz_hca_handle, port, | 393 | hret = hipz_h_modify_port(shca->ipz_hca_handle, port, |
394 | cap, props->init_type, port_modify_mask); | 394 | cap, props->init_type, port_modify_mask); |
395 | if (hret != H_SUCCESS) { | 395 | if (hret != H_SUCCESS) { |
396 | ehca_err(&shca->ib_device, "Modify port failed h_ret=%li", | 396 | ehca_err(&shca->ib_device, "Modify port failed h_ret=%lli", |
397 | hret); | 397 | hret); |
398 | ret = -EINVAL; | 398 | ret = -EINVAL; |
399 | } | 399 | } |
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c index 3128a5090dbd..99bcbd7ffb0a 100644 --- a/drivers/infiniband/hw/ehca/ehca_irq.c +++ b/drivers/infiniband/hw/ehca/ehca_irq.c | |||
@@ -99,7 +99,7 @@ static void print_error_data(struct ehca_shca *shca, void *data, | |||
99 | return; | 99 | return; |
100 | 100 | ||
101 | ehca_err(&shca->ib_device, | 101 | ehca_err(&shca->ib_device, |
102 | "QP 0x%x (resource=%lx) has errors.", | 102 | "QP 0x%x (resource=%llx) has errors.", |
103 | qp->ib_qp.qp_num, resource); | 103 | qp->ib_qp.qp_num, resource); |
104 | break; | 104 | break; |
105 | } | 105 | } |
@@ -108,21 +108,21 @@ static void print_error_data(struct ehca_shca *shca, void *data, | |||
108 | struct ehca_cq *cq = (struct ehca_cq *)data; | 108 | struct ehca_cq *cq = (struct ehca_cq *)data; |
109 | 109 | ||
110 | ehca_err(&shca->ib_device, | 110 | ehca_err(&shca->ib_device, |
111 | "CQ 0x%x (resource=%lx) has errors.", | 111 | "CQ 0x%x (resource=%llx) has errors.", |
112 | cq->cq_number, resource); | 112 | cq->cq_number, resource); |
113 | break; | 113 | break; |
114 | } | 114 | } |
115 | default: | 115 | default: |
116 | ehca_err(&shca->ib_device, | 116 | ehca_err(&shca->ib_device, |
117 | "Unknown error type: %lx on %s.", | 117 | "Unknown error type: %llx on %s.", |
118 | type, shca->ib_device.name); | 118 | type, shca->ib_device.name); |
119 | break; | 119 | break; |
120 | } | 120 | } |
121 | 121 | ||
122 | ehca_err(&shca->ib_device, "Error data is available: %lx.", resource); | 122 | ehca_err(&shca->ib_device, "Error data is available: %llx.", resource); |
123 | ehca_err(&shca->ib_device, "EHCA ----- error data begin " | 123 | ehca_err(&shca->ib_device, "EHCA ----- error data begin " |
124 | "---------------------------------------------------"); | 124 | "---------------------------------------------------"); |
125 | ehca_dmp(rblock, length, "resource=%lx", resource); | 125 | ehca_dmp(rblock, length, "resource=%llx", resource); |
126 | ehca_err(&shca->ib_device, "EHCA ----- error data end " | 126 | ehca_err(&shca->ib_device, "EHCA ----- error data end " |
127 | "----------------------------------------------------"); | 127 | "----------------------------------------------------"); |
128 | 128 | ||
@@ -152,7 +152,7 @@ int ehca_error_data(struct ehca_shca *shca, void *data, | |||
152 | 152 | ||
153 | if (ret == H_R_STATE) | 153 | if (ret == H_R_STATE) |
154 | ehca_err(&shca->ib_device, | 154 | ehca_err(&shca->ib_device, |
155 | "No error data is available: %lx.", resource); | 155 | "No error data is available: %llx.", resource); |
156 | else if (ret == H_SUCCESS) { | 156 | else if (ret == H_SUCCESS) { |
157 | int length; | 157 | int length; |
158 | 158 | ||
@@ -164,7 +164,7 @@ int ehca_error_data(struct ehca_shca *shca, void *data, | |||
164 | print_error_data(shca, data, rblock, length); | 164 | print_error_data(shca, data, rblock, length); |
165 | } else | 165 | } else |
166 | ehca_err(&shca->ib_device, | 166 | ehca_err(&shca->ib_device, |
167 | "Error data could not be fetched: %lx", resource); | 167 | "Error data could not be fetched: %llx", resource); |
168 | 168 | ||
169 | ehca_free_fw_ctrlblock(rblock); | 169 | ehca_free_fw_ctrlblock(rblock); |
170 | 170 | ||
@@ -514,7 +514,7 @@ static inline void process_eqe(struct ehca_shca *shca, struct ehca_eqe *eqe) | |||
514 | struct ehca_cq *cq; | 514 | struct ehca_cq *cq; |
515 | 515 | ||
516 | eqe_value = eqe->entry; | 516 | eqe_value = eqe->entry; |
517 | ehca_dbg(&shca->ib_device, "eqe_value=%lx", eqe_value); | 517 | ehca_dbg(&shca->ib_device, "eqe_value=%llx", eqe_value); |
518 | if (EHCA_BMASK_GET(EQE_COMPLETION_EVENT, eqe_value)) { | 518 | if (EHCA_BMASK_GET(EQE_COMPLETION_EVENT, eqe_value)) { |
519 | ehca_dbg(&shca->ib_device, "Got completion event"); | 519 | ehca_dbg(&shca->ib_device, "Got completion event"); |
520 | token = EHCA_BMASK_GET(EQE_CQ_TOKEN, eqe_value); | 520 | token = EHCA_BMASK_GET(EQE_CQ_TOKEN, eqe_value); |
@@ -603,7 +603,7 @@ void ehca_process_eq(struct ehca_shca *shca, int is_irq) | |||
603 | ret = hipz_h_eoi(eq->ist); | 603 | ret = hipz_h_eoi(eq->ist); |
604 | if (ret != H_SUCCESS) | 604 | if (ret != H_SUCCESS) |
605 | ehca_err(&shca->ib_device, | 605 | ehca_err(&shca->ib_device, |
606 | "bad return code EOI -rc = %ld\n", ret); | 606 | "bad return code EOI -rc = %lld\n", ret); |
607 | ehca_dbg(&shca->ib_device, "deadman found %x eqe", eqe_cnt); | 607 | ehca_dbg(&shca->ib_device, "deadman found %x eqe", eqe_cnt); |
608 | } | 608 | } |
609 | if (unlikely(eqe_cnt == EHCA_EQE_CACHE_SIZE)) | 609 | if (unlikely(eqe_cnt == EHCA_EQE_CACHE_SIZE)) |
diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c index c7b8a506af65..368311ce332b 100644 --- a/drivers/infiniband/hw/ehca/ehca_main.c +++ b/drivers/infiniband/hw/ehca/ehca_main.c | |||
@@ -304,7 +304,7 @@ static int ehca_sense_attributes(struct ehca_shca *shca) | |||
304 | 304 | ||
305 | h_ret = hipz_h_query_hca(shca->ipz_hca_handle, rblock); | 305 | h_ret = hipz_h_query_hca(shca->ipz_hca_handle, rblock); |
306 | if (h_ret != H_SUCCESS) { | 306 | if (h_ret != H_SUCCESS) { |
307 | ehca_gen_err("Cannot query device properties. h_ret=%li", | 307 | ehca_gen_err("Cannot query device properties. h_ret=%lli", |
308 | h_ret); | 308 | h_ret); |
309 | ret = -EPERM; | 309 | ret = -EPERM; |
310 | goto sense_attributes1; | 310 | goto sense_attributes1; |
@@ -391,7 +391,7 @@ static int ehca_sense_attributes(struct ehca_shca *shca) | |||
391 | port = (struct hipz_query_port *)rblock; | 391 | port = (struct hipz_query_port *)rblock; |
392 | h_ret = hipz_h_query_port(shca->ipz_hca_handle, 1, port); | 392 | h_ret = hipz_h_query_port(shca->ipz_hca_handle, 1, port); |
393 | if (h_ret != H_SUCCESS) { | 393 | if (h_ret != H_SUCCESS) { |
394 | ehca_gen_err("Cannot query port properties. h_ret=%li", | 394 | ehca_gen_err("Cannot query port properties. h_ret=%lli", |
395 | h_ret); | 395 | h_ret); |
396 | ret = -EPERM; | 396 | ret = -EPERM; |
397 | goto sense_attributes1; | 397 | goto sense_attributes1; |
@@ -682,7 +682,7 @@ static ssize_t ehca_show_adapter_handle(struct device *dev, | |||
682 | { | 682 | { |
683 | struct ehca_shca *shca = dev->driver_data; | 683 | struct ehca_shca *shca = dev->driver_data; |
684 | 684 | ||
685 | return sprintf(buf, "%lx\n", shca->ipz_hca_handle.handle); | 685 | return sprintf(buf, "%llx\n", shca->ipz_hca_handle.handle); |
686 | 686 | ||
687 | } | 687 | } |
688 | static DEVICE_ATTR(adapter_handle, S_IRUGO, ehca_show_adapter_handle, NULL); | 688 | static DEVICE_ATTR(adapter_handle, S_IRUGO, ehca_show_adapter_handle, NULL); |
diff --git a/drivers/infiniband/hw/ehca/ehca_mcast.c b/drivers/infiniband/hw/ehca/ehca_mcast.c index e3ef0264ccc6..120aedf9f989 100644 --- a/drivers/infiniband/hw/ehca/ehca_mcast.c +++ b/drivers/infiniband/hw/ehca/ehca_mcast.c | |||
@@ -88,7 +88,7 @@ int ehca_attach_mcast(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) | |||
88 | if (h_ret != H_SUCCESS) | 88 | if (h_ret != H_SUCCESS) |
89 | ehca_err(ibqp->device, | 89 | ehca_err(ibqp->device, |
90 | "ehca_qp=%p qp_num=%x hipz_h_attach_mcqp() failed " | 90 | "ehca_qp=%p qp_num=%x hipz_h_attach_mcqp() failed " |
91 | "h_ret=%li", my_qp, ibqp->qp_num, h_ret); | 91 | "h_ret=%lli", my_qp, ibqp->qp_num, h_ret); |
92 | 92 | ||
93 | return ehca2ib_return_code(h_ret); | 93 | return ehca2ib_return_code(h_ret); |
94 | } | 94 | } |
@@ -125,7 +125,7 @@ int ehca_detach_mcast(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) | |||
125 | if (h_ret != H_SUCCESS) | 125 | if (h_ret != H_SUCCESS) |
126 | ehca_err(ibqp->device, | 126 | ehca_err(ibqp->device, |
127 | "ehca_qp=%p qp_num=%x hipz_h_detach_mcqp() failed " | 127 | "ehca_qp=%p qp_num=%x hipz_h_detach_mcqp() failed " |
128 | "h_ret=%li", my_qp, ibqp->qp_num, h_ret); | 128 | "h_ret=%lli", my_qp, ibqp->qp_num, h_ret); |
129 | 129 | ||
130 | return ehca2ib_return_code(h_ret); | 130 | return ehca2ib_return_code(h_ret); |
131 | } | 131 | } |
diff --git a/drivers/infiniband/hw/ehca/ehca_mrmw.c b/drivers/infiniband/hw/ehca/ehca_mrmw.c index f974367cad40..72f83f7df614 100644 --- a/drivers/infiniband/hw/ehca/ehca_mrmw.c +++ b/drivers/infiniband/hw/ehca/ehca_mrmw.c | |||
@@ -204,7 +204,7 @@ struct ib_mr *ehca_reg_phys_mr(struct ib_pd *pd, | |||
204 | } | 204 | } |
205 | if ((size == 0) || | 205 | if ((size == 0) || |
206 | (((u64)iova_start + size) < (u64)iova_start)) { | 206 | (((u64)iova_start + size) < (u64)iova_start)) { |
207 | ehca_err(pd->device, "bad input values: size=%lx iova_start=%p", | 207 | ehca_err(pd->device, "bad input values: size=%llx iova_start=%p", |
208 | size, iova_start); | 208 | size, iova_start); |
209 | ib_mr = ERR_PTR(-EINVAL); | 209 | ib_mr = ERR_PTR(-EINVAL); |
210 | goto reg_phys_mr_exit0; | 210 | goto reg_phys_mr_exit0; |
@@ -309,8 +309,8 @@ struct ib_mr *ehca_reg_user_mr(struct ib_pd *pd, u64 start, u64 length, | |||
309 | } | 309 | } |
310 | 310 | ||
311 | if (length == 0 || virt + length < virt) { | 311 | if (length == 0 || virt + length < virt) { |
312 | ehca_err(pd->device, "bad input values: length=%lx " | 312 | ehca_err(pd->device, "bad input values: length=%llx " |
313 | "virt_base=%lx", length, virt); | 313 | "virt_base=%llx", length, virt); |
314 | ib_mr = ERR_PTR(-EINVAL); | 314 | ib_mr = ERR_PTR(-EINVAL); |
315 | goto reg_user_mr_exit0; | 315 | goto reg_user_mr_exit0; |
316 | } | 316 | } |
@@ -373,7 +373,7 @@ reg_user_mr_fallback: | |||
373 | &e_mr->ib.ib_mr.rkey); | 373 | &e_mr->ib.ib_mr.rkey); |
374 | if (ret == -EINVAL && pginfo.hwpage_size > PAGE_SIZE) { | 374 | if (ret == -EINVAL && pginfo.hwpage_size > PAGE_SIZE) { |
375 | ehca_warn(pd->device, "failed to register mr " | 375 | ehca_warn(pd->device, "failed to register mr " |
376 | "with hwpage_size=%lx", hwpage_size); | 376 | "with hwpage_size=%llx", hwpage_size); |
377 | ehca_info(pd->device, "try to register mr with " | 377 | ehca_info(pd->device, "try to register mr with " |
378 | "kpage_size=%lx", PAGE_SIZE); | 378 | "kpage_size=%lx", PAGE_SIZE); |
379 | /* | 379 | /* |
@@ -509,7 +509,7 @@ int ehca_rereg_phys_mr(struct ib_mr *mr, | |||
509 | goto rereg_phys_mr_exit1; | 509 | goto rereg_phys_mr_exit1; |
510 | if ((new_size == 0) || | 510 | if ((new_size == 0) || |
511 | (((u64)iova_start + new_size) < (u64)iova_start)) { | 511 | (((u64)iova_start + new_size) < (u64)iova_start)) { |
512 | ehca_err(mr->device, "bad input values: new_size=%lx " | 512 | ehca_err(mr->device, "bad input values: new_size=%llx " |
513 | "iova_start=%p", new_size, iova_start); | 513 | "iova_start=%p", new_size, iova_start); |
514 | ret = -EINVAL; | 514 | ret = -EINVAL; |
515 | goto rereg_phys_mr_exit1; | 515 | goto rereg_phys_mr_exit1; |
@@ -580,8 +580,8 @@ int ehca_query_mr(struct ib_mr *mr, struct ib_mr_attr *mr_attr) | |||
580 | 580 | ||
581 | h_ret = hipz_h_query_mr(shca->ipz_hca_handle, e_mr, &hipzout); | 581 | h_ret = hipz_h_query_mr(shca->ipz_hca_handle, e_mr, &hipzout); |
582 | if (h_ret != H_SUCCESS) { | 582 | if (h_ret != H_SUCCESS) { |
583 | ehca_err(mr->device, "hipz_mr_query failed, h_ret=%li mr=%p " | 583 | ehca_err(mr->device, "hipz_mr_query failed, h_ret=%lli mr=%p " |
584 | "hca_hndl=%lx mr_hndl=%lx lkey=%x", | 584 | "hca_hndl=%llx mr_hndl=%llx lkey=%x", |
585 | h_ret, mr, shca->ipz_hca_handle.handle, | 585 | h_ret, mr, shca->ipz_hca_handle.handle, |
586 | e_mr->ipz_mr_handle.handle, mr->lkey); | 586 | e_mr->ipz_mr_handle.handle, mr->lkey); |
587 | ret = ehca2ib_return_code(h_ret); | 587 | ret = ehca2ib_return_code(h_ret); |
@@ -630,8 +630,8 @@ int ehca_dereg_mr(struct ib_mr *mr) | |||
630 | /* TODO: BUSY: MR still has bound window(s) */ | 630 | /* TODO: BUSY: MR still has bound window(s) */ |
631 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr); | 631 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr); |
632 | if (h_ret != H_SUCCESS) { | 632 | if (h_ret != H_SUCCESS) { |
633 | ehca_err(mr->device, "hipz_free_mr failed, h_ret=%li shca=%p " | 633 | ehca_err(mr->device, "hipz_free_mr failed, h_ret=%lli shca=%p " |
634 | "e_mr=%p hca_hndl=%lx mr_hndl=%lx mr->lkey=%x", | 634 | "e_mr=%p hca_hndl=%llx mr_hndl=%llx mr->lkey=%x", |
635 | h_ret, shca, e_mr, shca->ipz_hca_handle.handle, | 635 | h_ret, shca, e_mr, shca->ipz_hca_handle.handle, |
636 | e_mr->ipz_mr_handle.handle, mr->lkey); | 636 | e_mr->ipz_mr_handle.handle, mr->lkey); |
637 | ret = ehca2ib_return_code(h_ret); | 637 | ret = ehca2ib_return_code(h_ret); |
@@ -671,8 +671,8 @@ struct ib_mw *ehca_alloc_mw(struct ib_pd *pd) | |||
671 | h_ret = hipz_h_alloc_resource_mw(shca->ipz_hca_handle, e_mw, | 671 | h_ret = hipz_h_alloc_resource_mw(shca->ipz_hca_handle, e_mw, |
672 | e_pd->fw_pd, &hipzout); | 672 | e_pd->fw_pd, &hipzout); |
673 | if (h_ret != H_SUCCESS) { | 673 | if (h_ret != H_SUCCESS) { |
674 | ehca_err(pd->device, "hipz_mw_allocate failed, h_ret=%li " | 674 | ehca_err(pd->device, "hipz_mw_allocate failed, h_ret=%lli " |
675 | "shca=%p hca_hndl=%lx mw=%p", | 675 | "shca=%p hca_hndl=%llx mw=%p", |
676 | h_ret, shca, shca->ipz_hca_handle.handle, e_mw); | 676 | h_ret, shca, shca->ipz_hca_handle.handle, e_mw); |
677 | ib_mw = ERR_PTR(ehca2ib_return_code(h_ret)); | 677 | ib_mw = ERR_PTR(ehca2ib_return_code(h_ret)); |
678 | goto alloc_mw_exit1; | 678 | goto alloc_mw_exit1; |
@@ -713,8 +713,8 @@ int ehca_dealloc_mw(struct ib_mw *mw) | |||
713 | 713 | ||
714 | h_ret = hipz_h_free_resource_mw(shca->ipz_hca_handle, e_mw); | 714 | h_ret = hipz_h_free_resource_mw(shca->ipz_hca_handle, e_mw); |
715 | if (h_ret != H_SUCCESS) { | 715 | if (h_ret != H_SUCCESS) { |
716 | ehca_err(mw->device, "hipz_free_mw failed, h_ret=%li shca=%p " | 716 | ehca_err(mw->device, "hipz_free_mw failed, h_ret=%lli shca=%p " |
717 | "mw=%p rkey=%x hca_hndl=%lx mw_hndl=%lx", | 717 | "mw=%p rkey=%x hca_hndl=%llx mw_hndl=%llx", |
718 | h_ret, shca, mw, mw->rkey, shca->ipz_hca_handle.handle, | 718 | h_ret, shca, mw, mw->rkey, shca->ipz_hca_handle.handle, |
719 | e_mw->ipz_mw_handle.handle); | 719 | e_mw->ipz_mw_handle.handle); |
720 | return ehca2ib_return_code(h_ret); | 720 | return ehca2ib_return_code(h_ret); |
@@ -840,7 +840,7 @@ int ehca_map_phys_fmr(struct ib_fmr *fmr, | |||
840 | goto map_phys_fmr_exit0; | 840 | goto map_phys_fmr_exit0; |
841 | if (iova % e_fmr->fmr_page_size) { | 841 | if (iova % e_fmr->fmr_page_size) { |
842 | /* only whole-numbered pages */ | 842 | /* only whole-numbered pages */ |
843 | ehca_err(fmr->device, "bad iova, iova=%lx fmr_page_size=%x", | 843 | ehca_err(fmr->device, "bad iova, iova=%llx fmr_page_size=%x", |
844 | iova, e_fmr->fmr_page_size); | 844 | iova, e_fmr->fmr_page_size); |
845 | ret = -EINVAL; | 845 | ret = -EINVAL; |
846 | goto map_phys_fmr_exit0; | 846 | goto map_phys_fmr_exit0; |
@@ -878,7 +878,7 @@ int ehca_map_phys_fmr(struct ib_fmr *fmr, | |||
878 | map_phys_fmr_exit0: | 878 | map_phys_fmr_exit0: |
879 | if (ret) | 879 | if (ret) |
880 | ehca_err(fmr->device, "ret=%i fmr=%p page_list=%p list_len=%x " | 880 | ehca_err(fmr->device, "ret=%i fmr=%p page_list=%p list_len=%x " |
881 | "iova=%lx", ret, fmr, page_list, list_len, iova); | 881 | "iova=%llx", ret, fmr, page_list, list_len, iova); |
882 | return ret; | 882 | return ret; |
883 | } /* end ehca_map_phys_fmr() */ | 883 | } /* end ehca_map_phys_fmr() */ |
884 | 884 | ||
@@ -964,8 +964,8 @@ int ehca_dealloc_fmr(struct ib_fmr *fmr) | |||
964 | 964 | ||
965 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr); | 965 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr); |
966 | if (h_ret != H_SUCCESS) { | 966 | if (h_ret != H_SUCCESS) { |
967 | ehca_err(fmr->device, "hipz_free_mr failed, h_ret=%li e_fmr=%p " | 967 | ehca_err(fmr->device, "hipz_free_mr failed, h_ret=%lli e_fmr=%p " |
968 | "hca_hndl=%lx fmr_hndl=%lx fmr->lkey=%x", | 968 | "hca_hndl=%llx fmr_hndl=%llx fmr->lkey=%x", |
969 | h_ret, e_fmr, shca->ipz_hca_handle.handle, | 969 | h_ret, e_fmr, shca->ipz_hca_handle.handle, |
970 | e_fmr->ipz_mr_handle.handle, fmr->lkey); | 970 | e_fmr->ipz_mr_handle.handle, fmr->lkey); |
971 | ret = ehca2ib_return_code(h_ret); | 971 | ret = ehca2ib_return_code(h_ret); |
@@ -1007,8 +1007,8 @@ int ehca_reg_mr(struct ehca_shca *shca, | |||
1007 | (u64)iova_start, size, hipz_acl, | 1007 | (u64)iova_start, size, hipz_acl, |
1008 | e_pd->fw_pd, &hipzout); | 1008 | e_pd->fw_pd, &hipzout); |
1009 | if (h_ret != H_SUCCESS) { | 1009 | if (h_ret != H_SUCCESS) { |
1010 | ehca_err(&shca->ib_device, "hipz_alloc_mr failed, h_ret=%li " | 1010 | ehca_err(&shca->ib_device, "hipz_alloc_mr failed, h_ret=%lli " |
1011 | "hca_hndl=%lx", h_ret, shca->ipz_hca_handle.handle); | 1011 | "hca_hndl=%llx", h_ret, shca->ipz_hca_handle.handle); |
1012 | ret = ehca2ib_return_code(h_ret); | 1012 | ret = ehca2ib_return_code(h_ret); |
1013 | goto ehca_reg_mr_exit0; | 1013 | goto ehca_reg_mr_exit0; |
1014 | } | 1014 | } |
@@ -1033,9 +1033,9 @@ int ehca_reg_mr(struct ehca_shca *shca, | |||
1033 | ehca_reg_mr_exit1: | 1033 | ehca_reg_mr_exit1: |
1034 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr); | 1034 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr); |
1035 | if (h_ret != H_SUCCESS) { | 1035 | if (h_ret != H_SUCCESS) { |
1036 | ehca_err(&shca->ib_device, "h_ret=%li shca=%p e_mr=%p " | 1036 | ehca_err(&shca->ib_device, "h_ret=%lli shca=%p e_mr=%p " |
1037 | "iova_start=%p size=%lx acl=%x e_pd=%p lkey=%x " | 1037 | "iova_start=%p size=%llx acl=%x e_pd=%p lkey=%x " |
1038 | "pginfo=%p num_kpages=%lx num_hwpages=%lx ret=%i", | 1038 | "pginfo=%p num_kpages=%llx num_hwpages=%llx ret=%i", |
1039 | h_ret, shca, e_mr, iova_start, size, acl, e_pd, | 1039 | h_ret, shca, e_mr, iova_start, size, acl, e_pd, |
1040 | hipzout.lkey, pginfo, pginfo->num_kpages, | 1040 | hipzout.lkey, pginfo, pginfo->num_kpages, |
1041 | pginfo->num_hwpages, ret); | 1041 | pginfo->num_hwpages, ret); |
@@ -1045,8 +1045,8 @@ ehca_reg_mr_exit1: | |||
1045 | ehca_reg_mr_exit0: | 1045 | ehca_reg_mr_exit0: |
1046 | if (ret) | 1046 | if (ret) |
1047 | ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p " | 1047 | ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p " |
1048 | "iova_start=%p size=%lx acl=%x e_pd=%p pginfo=%p " | 1048 | "iova_start=%p size=%llx acl=%x e_pd=%p pginfo=%p " |
1049 | "num_kpages=%lx num_hwpages=%lx", | 1049 | "num_kpages=%llx num_hwpages=%llx", |
1050 | ret, shca, e_mr, iova_start, size, acl, e_pd, pginfo, | 1050 | ret, shca, e_mr, iova_start, size, acl, e_pd, pginfo, |
1051 | pginfo->num_kpages, pginfo->num_hwpages); | 1051 | pginfo->num_kpages, pginfo->num_hwpages); |
1052 | return ret; | 1052 | return ret; |
@@ -1116,8 +1116,8 @@ int ehca_reg_mr_rpages(struct ehca_shca *shca, | |||
1116 | */ | 1116 | */ |
1117 | if (h_ret != H_SUCCESS) { | 1117 | if (h_ret != H_SUCCESS) { |
1118 | ehca_err(&shca->ib_device, "last " | 1118 | ehca_err(&shca->ib_device, "last " |
1119 | "hipz_reg_rpage_mr failed, h_ret=%li " | 1119 | "hipz_reg_rpage_mr failed, h_ret=%lli " |
1120 | "e_mr=%p i=%x hca_hndl=%lx mr_hndl=%lx" | 1120 | "e_mr=%p i=%x hca_hndl=%llx mr_hndl=%llx" |
1121 | " lkey=%x", h_ret, e_mr, i, | 1121 | " lkey=%x", h_ret, e_mr, i, |
1122 | shca->ipz_hca_handle.handle, | 1122 | shca->ipz_hca_handle.handle, |
1123 | e_mr->ipz_mr_handle.handle, | 1123 | e_mr->ipz_mr_handle.handle, |
@@ -1128,8 +1128,8 @@ int ehca_reg_mr_rpages(struct ehca_shca *shca, | |||
1128 | ret = 0; | 1128 | ret = 0; |
1129 | } else if (h_ret != H_PAGE_REGISTERED) { | 1129 | } else if (h_ret != H_PAGE_REGISTERED) { |
1130 | ehca_err(&shca->ib_device, "hipz_reg_rpage_mr failed, " | 1130 | ehca_err(&shca->ib_device, "hipz_reg_rpage_mr failed, " |
1131 | "h_ret=%li e_mr=%p i=%x lkey=%x hca_hndl=%lx " | 1131 | "h_ret=%lli e_mr=%p i=%x lkey=%x hca_hndl=%llx " |
1132 | "mr_hndl=%lx", h_ret, e_mr, i, | 1132 | "mr_hndl=%llx", h_ret, e_mr, i, |
1133 | e_mr->ib.ib_mr.lkey, | 1133 | e_mr->ib.ib_mr.lkey, |
1134 | shca->ipz_hca_handle.handle, | 1134 | shca->ipz_hca_handle.handle, |
1135 | e_mr->ipz_mr_handle.handle); | 1135 | e_mr->ipz_mr_handle.handle); |
@@ -1145,7 +1145,7 @@ ehca_reg_mr_rpages_exit1: | |||
1145 | ehca_reg_mr_rpages_exit0: | 1145 | ehca_reg_mr_rpages_exit0: |
1146 | if (ret) | 1146 | if (ret) |
1147 | ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p pginfo=%p " | 1147 | ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p pginfo=%p " |
1148 | "num_kpages=%lx num_hwpages=%lx", ret, shca, e_mr, | 1148 | "num_kpages=%llx num_hwpages=%llx", ret, shca, e_mr, |
1149 | pginfo, pginfo->num_kpages, pginfo->num_hwpages); | 1149 | pginfo, pginfo->num_kpages, pginfo->num_hwpages); |
1150 | return ret; | 1150 | return ret; |
1151 | } /* end ehca_reg_mr_rpages() */ | 1151 | } /* end ehca_reg_mr_rpages() */ |
@@ -1184,7 +1184,7 @@ inline int ehca_rereg_mr_rereg1(struct ehca_shca *shca, | |||
1184 | ret = ehca_set_pagebuf(pginfo, pginfo->num_hwpages, kpage); | 1184 | ret = ehca_set_pagebuf(pginfo, pginfo->num_hwpages, kpage); |
1185 | if (ret) { | 1185 | if (ret) { |
1186 | ehca_err(&shca->ib_device, "set pagebuf failed, e_mr=%p " | 1186 | ehca_err(&shca->ib_device, "set pagebuf failed, e_mr=%p " |
1187 | "pginfo=%p type=%x num_kpages=%lx num_hwpages=%lx " | 1187 | "pginfo=%p type=%x num_kpages=%llx num_hwpages=%llx " |
1188 | "kpage=%p", e_mr, pginfo, pginfo->type, | 1188 | "kpage=%p", e_mr, pginfo, pginfo->type, |
1189 | pginfo->num_kpages, pginfo->num_hwpages, kpage); | 1189 | pginfo->num_kpages, pginfo->num_hwpages, kpage); |
1190 | goto ehca_rereg_mr_rereg1_exit1; | 1190 | goto ehca_rereg_mr_rereg1_exit1; |
@@ -1205,13 +1205,13 @@ inline int ehca_rereg_mr_rereg1(struct ehca_shca *shca, | |||
1205 | * (MW bound or MR is shared) | 1205 | * (MW bound or MR is shared) |
1206 | */ | 1206 | */ |
1207 | ehca_warn(&shca->ib_device, "hipz_h_reregister_pmr failed " | 1207 | ehca_warn(&shca->ib_device, "hipz_h_reregister_pmr failed " |
1208 | "(Rereg1), h_ret=%li e_mr=%p", h_ret, e_mr); | 1208 | "(Rereg1), h_ret=%lli e_mr=%p", h_ret, e_mr); |
1209 | *pginfo = pginfo_save; | 1209 | *pginfo = pginfo_save; |
1210 | ret = -EAGAIN; | 1210 | ret = -EAGAIN; |
1211 | } else if ((u64 *)hipzout.vaddr != iova_start) { | 1211 | } else if ((u64 *)hipzout.vaddr != iova_start) { |
1212 | ehca_err(&shca->ib_device, "PHYP changed iova_start in " | 1212 | ehca_err(&shca->ib_device, "PHYP changed iova_start in " |
1213 | "rereg_pmr, iova_start=%p iova_start_out=%lx e_mr=%p " | 1213 | "rereg_pmr, iova_start=%p iova_start_out=%llx e_mr=%p " |
1214 | "mr_handle=%lx lkey=%x lkey_out=%x", iova_start, | 1214 | "mr_handle=%llx lkey=%x lkey_out=%x", iova_start, |
1215 | hipzout.vaddr, e_mr, e_mr->ipz_mr_handle.handle, | 1215 | hipzout.vaddr, e_mr, e_mr->ipz_mr_handle.handle, |
1216 | e_mr->ib.ib_mr.lkey, hipzout.lkey); | 1216 | e_mr->ib.ib_mr.lkey, hipzout.lkey); |
1217 | ret = -EFAULT; | 1217 | ret = -EFAULT; |
@@ -1235,7 +1235,7 @@ ehca_rereg_mr_rereg1_exit1: | |||
1235 | ehca_rereg_mr_rereg1_exit0: | 1235 | ehca_rereg_mr_rereg1_exit0: |
1236 | if ( ret && (ret != -EAGAIN) ) | 1236 | if ( ret && (ret != -EAGAIN) ) |
1237 | ehca_err(&shca->ib_device, "ret=%i lkey=%x rkey=%x " | 1237 | ehca_err(&shca->ib_device, "ret=%i lkey=%x rkey=%x " |
1238 | "pginfo=%p num_kpages=%lx num_hwpages=%lx", | 1238 | "pginfo=%p num_kpages=%llx num_hwpages=%llx", |
1239 | ret, *lkey, *rkey, pginfo, pginfo->num_kpages, | 1239 | ret, *lkey, *rkey, pginfo, pginfo->num_kpages, |
1240 | pginfo->num_hwpages); | 1240 | pginfo->num_hwpages); |
1241 | return ret; | 1241 | return ret; |
@@ -1263,7 +1263,7 @@ int ehca_rereg_mr(struct ehca_shca *shca, | |||
1263 | (e_mr->num_hwpages > MAX_RPAGES) || | 1263 | (e_mr->num_hwpages > MAX_RPAGES) || |
1264 | (pginfo->num_hwpages > e_mr->num_hwpages)) { | 1264 | (pginfo->num_hwpages > e_mr->num_hwpages)) { |
1265 | ehca_dbg(&shca->ib_device, "Rereg3 case, " | 1265 | ehca_dbg(&shca->ib_device, "Rereg3 case, " |
1266 | "pginfo->num_hwpages=%lx e_mr->num_hwpages=%x", | 1266 | "pginfo->num_hwpages=%llx e_mr->num_hwpages=%x", |
1267 | pginfo->num_hwpages, e_mr->num_hwpages); | 1267 | pginfo->num_hwpages, e_mr->num_hwpages); |
1268 | rereg_1_hcall = 0; | 1268 | rereg_1_hcall = 0; |
1269 | rereg_3_hcall = 1; | 1269 | rereg_3_hcall = 1; |
@@ -1295,7 +1295,7 @@ int ehca_rereg_mr(struct ehca_shca *shca, | |||
1295 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr); | 1295 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr); |
1296 | if (h_ret != H_SUCCESS) { | 1296 | if (h_ret != H_SUCCESS) { |
1297 | ehca_err(&shca->ib_device, "hipz_free_mr failed, " | 1297 | ehca_err(&shca->ib_device, "hipz_free_mr failed, " |
1298 | "h_ret=%li e_mr=%p hca_hndl=%lx mr_hndl=%lx " | 1298 | "h_ret=%lli e_mr=%p hca_hndl=%llx mr_hndl=%llx " |
1299 | "mr->lkey=%x", | 1299 | "mr->lkey=%x", |
1300 | h_ret, e_mr, shca->ipz_hca_handle.handle, | 1300 | h_ret, e_mr, shca->ipz_hca_handle.handle, |
1301 | e_mr->ipz_mr_handle.handle, | 1301 | e_mr->ipz_mr_handle.handle, |
@@ -1328,8 +1328,8 @@ int ehca_rereg_mr(struct ehca_shca *shca, | |||
1328 | ehca_rereg_mr_exit0: | 1328 | ehca_rereg_mr_exit0: |
1329 | if (ret) | 1329 | if (ret) |
1330 | ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p " | 1330 | ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p " |
1331 | "iova_start=%p size=%lx acl=%x e_pd=%p pginfo=%p " | 1331 | "iova_start=%p size=%llx acl=%x e_pd=%p pginfo=%p " |
1332 | "num_kpages=%lx lkey=%x rkey=%x rereg_1_hcall=%x " | 1332 | "num_kpages=%llx lkey=%x rkey=%x rereg_1_hcall=%x " |
1333 | "rereg_3_hcall=%x", ret, shca, e_mr, iova_start, size, | 1333 | "rereg_3_hcall=%x", ret, shca, e_mr, iova_start, size, |
1334 | acl, e_pd, pginfo, pginfo->num_kpages, *lkey, *rkey, | 1334 | acl, e_pd, pginfo, pginfo->num_kpages, *lkey, *rkey, |
1335 | rereg_1_hcall, rereg_3_hcall); | 1335 | rereg_1_hcall, rereg_3_hcall); |
@@ -1371,8 +1371,8 @@ int ehca_unmap_one_fmr(struct ehca_shca *shca, | |||
1371 | * FMRs are not shared and no MW bound to FMRs | 1371 | * FMRs are not shared and no MW bound to FMRs |
1372 | */ | 1372 | */ |
1373 | ehca_err(&shca->ib_device, "hipz_reregister_pmr failed " | 1373 | ehca_err(&shca->ib_device, "hipz_reregister_pmr failed " |
1374 | "(Rereg1), h_ret=%li e_fmr=%p hca_hndl=%lx " | 1374 | "(Rereg1), h_ret=%lli e_fmr=%p hca_hndl=%llx " |
1375 | "mr_hndl=%lx lkey=%x lkey_out=%x", | 1375 | "mr_hndl=%llx lkey=%x lkey_out=%x", |
1376 | h_ret, e_fmr, shca->ipz_hca_handle.handle, | 1376 | h_ret, e_fmr, shca->ipz_hca_handle.handle, |
1377 | e_fmr->ipz_mr_handle.handle, | 1377 | e_fmr->ipz_mr_handle.handle, |
1378 | e_fmr->ib.ib_fmr.lkey, hipzout.lkey); | 1378 | e_fmr->ib.ib_fmr.lkey, hipzout.lkey); |
@@ -1383,7 +1383,7 @@ int ehca_unmap_one_fmr(struct ehca_shca *shca, | |||
1383 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr); | 1383 | h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr); |
1384 | if (h_ret != H_SUCCESS) { | 1384 | if (h_ret != H_SUCCESS) { |
1385 | ehca_err(&shca->ib_device, "hipz_free_mr failed, " | 1385 | ehca_err(&shca->ib_device, "hipz_free_mr failed, " |
1386 | "h_ret=%li e_fmr=%p hca_hndl=%lx mr_hndl=%lx " | 1386 | "h_ret=%lli e_fmr=%p hca_hndl=%llx mr_hndl=%llx " |
1387 | "lkey=%x", | 1387 | "lkey=%x", |
1388 | h_ret, e_fmr, shca->ipz_hca_handle.handle, | 1388 | h_ret, e_fmr, shca->ipz_hca_handle.handle, |
1389 | e_fmr->ipz_mr_handle.handle, | 1389 | e_fmr->ipz_mr_handle.handle, |
@@ -1447,9 +1447,9 @@ int ehca_reg_smr(struct ehca_shca *shca, | |||
1447 | (u64)iova_start, hipz_acl, e_pd->fw_pd, | 1447 | (u64)iova_start, hipz_acl, e_pd->fw_pd, |
1448 | &hipzout); | 1448 | &hipzout); |
1449 | if (h_ret != H_SUCCESS) { | 1449 | if (h_ret != H_SUCCESS) { |
1450 | ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%li " | 1450 | ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%lli " |
1451 | "shca=%p e_origmr=%p e_newmr=%p iova_start=%p acl=%x " | 1451 | "shca=%p e_origmr=%p e_newmr=%p iova_start=%p acl=%x " |
1452 | "e_pd=%p hca_hndl=%lx mr_hndl=%lx lkey=%x", | 1452 | "e_pd=%p hca_hndl=%llx mr_hndl=%llx lkey=%x", |
1453 | h_ret, shca, e_origmr, e_newmr, iova_start, acl, e_pd, | 1453 | h_ret, shca, e_origmr, e_newmr, iova_start, acl, e_pd, |
1454 | shca->ipz_hca_handle.handle, | 1454 | shca->ipz_hca_handle.handle, |
1455 | e_origmr->ipz_mr_handle.handle, | 1455 | e_origmr->ipz_mr_handle.handle, |
@@ -1527,7 +1527,7 @@ int ehca_reg_internal_maxmr( | |||
1527 | &e_mr->ib.ib_mr.rkey); | 1527 | &e_mr->ib.ib_mr.rkey); |
1528 | if (ret) { | 1528 | if (ret) { |
1529 | ehca_err(&shca->ib_device, "reg of internal max MR failed, " | 1529 | ehca_err(&shca->ib_device, "reg of internal max MR failed, " |
1530 | "e_mr=%p iova_start=%p size_maxmr=%lx num_kpages=%x " | 1530 | "e_mr=%p iova_start=%p size_maxmr=%llx num_kpages=%x " |
1531 | "num_hwpages=%x", e_mr, iova_start, size_maxmr, | 1531 | "num_hwpages=%x", e_mr, iova_start, size_maxmr, |
1532 | num_kpages, num_hwpages); | 1532 | num_kpages, num_hwpages); |
1533 | goto ehca_reg_internal_maxmr_exit1; | 1533 | goto ehca_reg_internal_maxmr_exit1; |
@@ -1573,8 +1573,8 @@ int ehca_reg_maxmr(struct ehca_shca *shca, | |||
1573 | (u64)iova_start, hipz_acl, e_pd->fw_pd, | 1573 | (u64)iova_start, hipz_acl, e_pd->fw_pd, |
1574 | &hipzout); | 1574 | &hipzout); |
1575 | if (h_ret != H_SUCCESS) { | 1575 | if (h_ret != H_SUCCESS) { |
1576 | ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%li " | 1576 | ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%lli " |
1577 | "e_origmr=%p hca_hndl=%lx mr_hndl=%lx lkey=%x", | 1577 | "e_origmr=%p hca_hndl=%llx mr_hndl=%llx lkey=%x", |
1578 | h_ret, e_origmr, shca->ipz_hca_handle.handle, | 1578 | h_ret, e_origmr, shca->ipz_hca_handle.handle, |
1579 | e_origmr->ipz_mr_handle.handle, | 1579 | e_origmr->ipz_mr_handle.handle, |
1580 | e_origmr->ib.ib_mr.lkey); | 1580 | e_origmr->ib.ib_mr.lkey); |
@@ -1651,28 +1651,28 @@ int ehca_mr_chk_buf_and_calc_size(struct ib_phys_buf *phys_buf_array, | |||
1651 | /* check first buffer */ | 1651 | /* check first buffer */ |
1652 | if (((u64)iova_start & ~PAGE_MASK) != (pbuf->addr & ~PAGE_MASK)) { | 1652 | if (((u64)iova_start & ~PAGE_MASK) != (pbuf->addr & ~PAGE_MASK)) { |
1653 | ehca_gen_err("iova_start/addr mismatch, iova_start=%p " | 1653 | ehca_gen_err("iova_start/addr mismatch, iova_start=%p " |
1654 | "pbuf->addr=%lx pbuf->size=%lx", | 1654 | "pbuf->addr=%llx pbuf->size=%llx", |
1655 | iova_start, pbuf->addr, pbuf->size); | 1655 | iova_start, pbuf->addr, pbuf->size); |
1656 | return -EINVAL; | 1656 | return -EINVAL; |
1657 | } | 1657 | } |
1658 | if (((pbuf->addr + pbuf->size) % PAGE_SIZE) && | 1658 | if (((pbuf->addr + pbuf->size) % PAGE_SIZE) && |
1659 | (num_phys_buf > 1)) { | 1659 | (num_phys_buf > 1)) { |
1660 | ehca_gen_err("addr/size mismatch in 1st buf, pbuf->addr=%lx " | 1660 | ehca_gen_err("addr/size mismatch in 1st buf, pbuf->addr=%llx " |
1661 | "pbuf->size=%lx", pbuf->addr, pbuf->size); | 1661 | "pbuf->size=%llx", pbuf->addr, pbuf->size); |
1662 | return -EINVAL; | 1662 | return -EINVAL; |
1663 | } | 1663 | } |
1664 | 1664 | ||
1665 | for (i = 0; i < num_phys_buf; i++) { | 1665 | for (i = 0; i < num_phys_buf; i++) { |
1666 | if ((i > 0) && (pbuf->addr % PAGE_SIZE)) { | 1666 | if ((i > 0) && (pbuf->addr % PAGE_SIZE)) { |
1667 | ehca_gen_err("bad address, i=%x pbuf->addr=%lx " | 1667 | ehca_gen_err("bad address, i=%x pbuf->addr=%llx " |
1668 | "pbuf->size=%lx", | 1668 | "pbuf->size=%llx", |
1669 | i, pbuf->addr, pbuf->size); | 1669 | i, pbuf->addr, pbuf->size); |
1670 | return -EINVAL; | 1670 | return -EINVAL; |
1671 | } | 1671 | } |
1672 | if (((i > 0) && /* not 1st */ | 1672 | if (((i > 0) && /* not 1st */ |
1673 | (i < (num_phys_buf - 1)) && /* not last */ | 1673 | (i < (num_phys_buf - 1)) && /* not last */ |
1674 | (pbuf->size % PAGE_SIZE)) || (pbuf->size == 0)) { | 1674 | (pbuf->size % PAGE_SIZE)) || (pbuf->size == 0)) { |
1675 | ehca_gen_err("bad size, i=%x pbuf->size=%lx", | 1675 | ehca_gen_err("bad size, i=%x pbuf->size=%llx", |
1676 | i, pbuf->size); | 1676 | i, pbuf->size); |
1677 | return -EINVAL; | 1677 | return -EINVAL; |
1678 | } | 1678 | } |
@@ -1705,7 +1705,7 @@ int ehca_fmr_check_page_list(struct ehca_mr *e_fmr, | |||
1705 | page = page_list; | 1705 | page = page_list; |
1706 | for (i = 0; i < list_len; i++) { | 1706 | for (i = 0; i < list_len; i++) { |
1707 | if (*page % e_fmr->fmr_page_size) { | 1707 | if (*page % e_fmr->fmr_page_size) { |
1708 | ehca_gen_err("bad page, i=%x *page=%lx page=%p fmr=%p " | 1708 | ehca_gen_err("bad page, i=%x *page=%llx page=%p fmr=%p " |
1709 | "fmr_page_size=%x", i, *page, page, e_fmr, | 1709 | "fmr_page_size=%x", i, *page, page, e_fmr, |
1710 | e_fmr->fmr_page_size); | 1710 | e_fmr->fmr_page_size); |
1711 | return -EINVAL; | 1711 | return -EINVAL; |
@@ -1743,9 +1743,9 @@ static int ehca_set_pagebuf_user1(struct ehca_mr_pginfo *pginfo, | |||
1743 | (pginfo->next_hwpage * | 1743 | (pginfo->next_hwpage * |
1744 | pginfo->hwpage_size)); | 1744 | pginfo->hwpage_size)); |
1745 | if ( !(*kpage) ) { | 1745 | if ( !(*kpage) ) { |
1746 | ehca_gen_err("pgaddr=%lx " | 1746 | ehca_gen_err("pgaddr=%llx " |
1747 | "chunk->page_list[i]=%lx " | 1747 | "chunk->page_list[i]=%llx " |
1748 | "i=%x next_hwpage=%lx", | 1748 | "i=%x next_hwpage=%llx", |
1749 | pgaddr, (u64)sg_dma_address( | 1749 | pgaddr, (u64)sg_dma_address( |
1750 | &chunk->page_list[i]), | 1750 | &chunk->page_list[i]), |
1751 | i, pginfo->next_hwpage); | 1751 | i, pginfo->next_hwpage); |
@@ -1795,11 +1795,11 @@ static int ehca_check_kpages_per_ate(struct scatterlist *page_list, | |||
1795 | for (t = start_idx; t <= end_idx; t++) { | 1795 | for (t = start_idx; t <= end_idx; t++) { |
1796 | u64 pgaddr = page_to_pfn(sg_page(&page_list[t])) << PAGE_SHIFT; | 1796 | u64 pgaddr = page_to_pfn(sg_page(&page_list[t])) << PAGE_SHIFT; |
1797 | if (ehca_debug_level >= 3) | 1797 | if (ehca_debug_level >= 3) |
1798 | ehca_gen_dbg("chunk_page=%lx value=%016lx", pgaddr, | 1798 | ehca_gen_dbg("chunk_page=%llx value=%016llx", pgaddr, |
1799 | *(u64 *)abs_to_virt(phys_to_abs(pgaddr))); | 1799 | *(u64 *)abs_to_virt(phys_to_abs(pgaddr))); |
1800 | if (pgaddr - PAGE_SIZE != *prev_pgaddr) { | 1800 | if (pgaddr - PAGE_SIZE != *prev_pgaddr) { |
1801 | ehca_gen_err("uncontiguous page found pgaddr=%lx " | 1801 | ehca_gen_err("uncontiguous page found pgaddr=%llx " |
1802 | "prev_pgaddr=%lx page_list_i=%x", | 1802 | "prev_pgaddr=%llx page_list_i=%x", |
1803 | pgaddr, *prev_pgaddr, t); | 1803 | pgaddr, *prev_pgaddr, t); |
1804 | return -EINVAL; | 1804 | return -EINVAL; |
1805 | } | 1805 | } |
@@ -1833,7 +1833,7 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo, | |||
1833 | << PAGE_SHIFT ); | 1833 | << PAGE_SHIFT ); |
1834 | *kpage = phys_to_abs(pgaddr); | 1834 | *kpage = phys_to_abs(pgaddr); |
1835 | if ( !(*kpage) ) { | 1835 | if ( !(*kpage) ) { |
1836 | ehca_gen_err("pgaddr=%lx i=%x", | 1836 | ehca_gen_err("pgaddr=%llx i=%x", |
1837 | pgaddr, i); | 1837 | pgaddr, i); |
1838 | ret = -EFAULT; | 1838 | ret = -EFAULT; |
1839 | return ret; | 1839 | return ret; |
@@ -1846,8 +1846,8 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo, | |||
1846 | if (pginfo->hwpage_cnt) { | 1846 | if (pginfo->hwpage_cnt) { |
1847 | ehca_gen_err( | 1847 | ehca_gen_err( |
1848 | "invalid alignment " | 1848 | "invalid alignment " |
1849 | "pgaddr=%lx i=%x " | 1849 | "pgaddr=%llx i=%x " |
1850 | "mr_pgsize=%lx", | 1850 | "mr_pgsize=%llx", |
1851 | pgaddr, i, | 1851 | pgaddr, i, |
1852 | pginfo->hwpage_size); | 1852 | pginfo->hwpage_size); |
1853 | ret = -EFAULT; | 1853 | ret = -EFAULT; |
@@ -1866,8 +1866,8 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo, | |||
1866 | if (ehca_debug_level >= 3) { | 1866 | if (ehca_debug_level >= 3) { |
1867 | u64 val = *(u64 *)abs_to_virt( | 1867 | u64 val = *(u64 *)abs_to_virt( |
1868 | phys_to_abs(pgaddr)); | 1868 | phys_to_abs(pgaddr)); |
1869 | ehca_gen_dbg("kpage=%lx chunk_page=%lx " | 1869 | ehca_gen_dbg("kpage=%llx chunk_page=%llx " |
1870 | "value=%016lx", | 1870 | "value=%016llx", |
1871 | *kpage, pgaddr, val); | 1871 | *kpage, pgaddr, val); |
1872 | } | 1872 | } |
1873 | prev_pgaddr = pgaddr; | 1873 | prev_pgaddr = pgaddr; |
@@ -1944,9 +1944,9 @@ static int ehca_set_pagebuf_phys(struct ehca_mr_pginfo *pginfo, | |||
1944 | if ((pginfo->kpage_cnt >= pginfo->num_kpages) || | 1944 | if ((pginfo->kpage_cnt >= pginfo->num_kpages) || |
1945 | (pginfo->hwpage_cnt >= pginfo->num_hwpages)) { | 1945 | (pginfo->hwpage_cnt >= pginfo->num_hwpages)) { |
1946 | ehca_gen_err("kpage_cnt >= num_kpages, " | 1946 | ehca_gen_err("kpage_cnt >= num_kpages, " |
1947 | "kpage_cnt=%lx num_kpages=%lx " | 1947 | "kpage_cnt=%llx num_kpages=%llx " |
1948 | "hwpage_cnt=%lx " | 1948 | "hwpage_cnt=%llx " |
1949 | "num_hwpages=%lx i=%x", | 1949 | "num_hwpages=%llx i=%x", |
1950 | pginfo->kpage_cnt, | 1950 | pginfo->kpage_cnt, |
1951 | pginfo->num_kpages, | 1951 | pginfo->num_kpages, |
1952 | pginfo->hwpage_cnt, | 1952 | pginfo->hwpage_cnt, |
@@ -1957,8 +1957,8 @@ static int ehca_set_pagebuf_phys(struct ehca_mr_pginfo *pginfo, | |||
1957 | (pbuf->addr & ~(pginfo->hwpage_size - 1)) + | 1957 | (pbuf->addr & ~(pginfo->hwpage_size - 1)) + |
1958 | (pginfo->next_hwpage * pginfo->hwpage_size)); | 1958 | (pginfo->next_hwpage * pginfo->hwpage_size)); |
1959 | if ( !(*kpage) && pbuf->addr ) { | 1959 | if ( !(*kpage) && pbuf->addr ) { |
1960 | ehca_gen_err("pbuf->addr=%lx pbuf->size=%lx " | 1960 | ehca_gen_err("pbuf->addr=%llx pbuf->size=%llx " |
1961 | "next_hwpage=%lx", pbuf->addr, | 1961 | "next_hwpage=%llx", pbuf->addr, |
1962 | pbuf->size, pginfo->next_hwpage); | 1962 | pbuf->size, pginfo->next_hwpage); |
1963 | return -EFAULT; | 1963 | return -EFAULT; |
1964 | } | 1964 | } |
@@ -1996,8 +1996,8 @@ static int ehca_set_pagebuf_fmr(struct ehca_mr_pginfo *pginfo, | |||
1996 | *kpage = phys_to_abs((*fmrlist & ~(pginfo->hwpage_size - 1)) + | 1996 | *kpage = phys_to_abs((*fmrlist & ~(pginfo->hwpage_size - 1)) + |
1997 | pginfo->next_hwpage * pginfo->hwpage_size); | 1997 | pginfo->next_hwpage * pginfo->hwpage_size); |
1998 | if ( !(*kpage) ) { | 1998 | if ( !(*kpage) ) { |
1999 | ehca_gen_err("*fmrlist=%lx fmrlist=%p " | 1999 | ehca_gen_err("*fmrlist=%llx fmrlist=%p " |
2000 | "next_listelem=%lx next_hwpage=%lx", | 2000 | "next_listelem=%llx next_hwpage=%llx", |
2001 | *fmrlist, fmrlist, | 2001 | *fmrlist, fmrlist, |
2002 | pginfo->u.fmr.next_listelem, | 2002 | pginfo->u.fmr.next_listelem, |
2003 | pginfo->next_hwpage); | 2003 | pginfo->next_hwpage); |
@@ -2025,7 +2025,7 @@ static int ehca_set_pagebuf_fmr(struct ehca_mr_pginfo *pginfo, | |||
2025 | ~(pginfo->hwpage_size - 1)); | 2025 | ~(pginfo->hwpage_size - 1)); |
2026 | if (prev + pginfo->u.fmr.fmr_pgsize != p) { | 2026 | if (prev + pginfo->u.fmr.fmr_pgsize != p) { |
2027 | ehca_gen_err("uncontiguous fmr pages " | 2027 | ehca_gen_err("uncontiguous fmr pages " |
2028 | "found prev=%lx p=%lx " | 2028 | "found prev=%llx p=%llx " |
2029 | "idx=%x", prev, p, i + j); | 2029 | "idx=%x", prev, p, i + j); |
2030 | return -EINVAL; | 2030 | return -EINVAL; |
2031 | } | 2031 | } |
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c index f161cf173dbe..00c108159714 100644 --- a/drivers/infiniband/hw/ehca/ehca_qp.c +++ b/drivers/infiniband/hw/ehca/ehca_qp.c | |||
@@ -331,7 +331,7 @@ static inline int init_qp_queue(struct ehca_shca *shca, | |||
331 | if (cnt == (nr_q_pages - 1)) { /* last page! */ | 331 | if (cnt == (nr_q_pages - 1)) { /* last page! */ |
332 | if (h_ret != expected_hret) { | 332 | if (h_ret != expected_hret) { |
333 | ehca_err(ib_dev, "hipz_qp_register_rpage() " | 333 | ehca_err(ib_dev, "hipz_qp_register_rpage() " |
334 | "h_ret=%li", h_ret); | 334 | "h_ret=%lli", h_ret); |
335 | ret = ehca2ib_return_code(h_ret); | 335 | ret = ehca2ib_return_code(h_ret); |
336 | goto init_qp_queue1; | 336 | goto init_qp_queue1; |
337 | } | 337 | } |
@@ -345,7 +345,7 @@ static inline int init_qp_queue(struct ehca_shca *shca, | |||
345 | } else { | 345 | } else { |
346 | if (h_ret != H_PAGE_REGISTERED) { | 346 | if (h_ret != H_PAGE_REGISTERED) { |
347 | ehca_err(ib_dev, "hipz_qp_register_rpage() " | 347 | ehca_err(ib_dev, "hipz_qp_register_rpage() " |
348 | "h_ret=%li", h_ret); | 348 | "h_ret=%lli", h_ret); |
349 | ret = ehca2ib_return_code(h_ret); | 349 | ret = ehca2ib_return_code(h_ret); |
350 | goto init_qp_queue1; | 350 | goto init_qp_queue1; |
351 | } | 351 | } |
@@ -709,7 +709,7 @@ static struct ehca_qp *internal_create_qp( | |||
709 | 709 | ||
710 | h_ret = hipz_h_alloc_resource_qp(shca->ipz_hca_handle, &parms); | 710 | h_ret = hipz_h_alloc_resource_qp(shca->ipz_hca_handle, &parms); |
711 | if (h_ret != H_SUCCESS) { | 711 | if (h_ret != H_SUCCESS) { |
712 | ehca_err(pd->device, "h_alloc_resource_qp() failed h_ret=%li", | 712 | ehca_err(pd->device, "h_alloc_resource_qp() failed h_ret=%lli", |
713 | h_ret); | 713 | h_ret); |
714 | ret = ehca2ib_return_code(h_ret); | 714 | ret = ehca2ib_return_code(h_ret); |
715 | goto create_qp_exit1; | 715 | goto create_qp_exit1; |
@@ -1010,7 +1010,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd, | |||
1010 | mqpcb, my_qp->galpas.kernel); | 1010 | mqpcb, my_qp->galpas.kernel); |
1011 | if (hret != H_SUCCESS) { | 1011 | if (hret != H_SUCCESS) { |
1012 | ehca_err(pd->device, "Could not modify SRQ to INIT " | 1012 | ehca_err(pd->device, "Could not modify SRQ to INIT " |
1013 | "ehca_qp=%p qp_num=%x h_ret=%li", | 1013 | "ehca_qp=%p qp_num=%x h_ret=%lli", |
1014 | my_qp, my_qp->real_qp_num, hret); | 1014 | my_qp, my_qp->real_qp_num, hret); |
1015 | goto create_srq2; | 1015 | goto create_srq2; |
1016 | } | 1016 | } |
@@ -1024,7 +1024,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd, | |||
1024 | mqpcb, my_qp->galpas.kernel); | 1024 | mqpcb, my_qp->galpas.kernel); |
1025 | if (hret != H_SUCCESS) { | 1025 | if (hret != H_SUCCESS) { |
1026 | ehca_err(pd->device, "Could not enable SRQ " | 1026 | ehca_err(pd->device, "Could not enable SRQ " |
1027 | "ehca_qp=%p qp_num=%x h_ret=%li", | 1027 | "ehca_qp=%p qp_num=%x h_ret=%lli", |
1028 | my_qp, my_qp->real_qp_num, hret); | 1028 | my_qp, my_qp->real_qp_num, hret); |
1029 | goto create_srq2; | 1029 | goto create_srq2; |
1030 | } | 1030 | } |
@@ -1038,7 +1038,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd, | |||
1038 | mqpcb, my_qp->galpas.kernel); | 1038 | mqpcb, my_qp->galpas.kernel); |
1039 | if (hret != H_SUCCESS) { | 1039 | if (hret != H_SUCCESS) { |
1040 | ehca_err(pd->device, "Could not modify SRQ to RTR " | 1040 | ehca_err(pd->device, "Could not modify SRQ to RTR " |
1041 | "ehca_qp=%p qp_num=%x h_ret=%li", | 1041 | "ehca_qp=%p qp_num=%x h_ret=%lli", |
1042 | my_qp, my_qp->real_qp_num, hret); | 1042 | my_qp, my_qp->real_qp_num, hret); |
1043 | goto create_srq2; | 1043 | goto create_srq2; |
1044 | } | 1044 | } |
@@ -1078,7 +1078,7 @@ static int prepare_sqe_rts(struct ehca_qp *my_qp, struct ehca_shca *shca, | |||
1078 | &bad_send_wqe_p, NULL, 2); | 1078 | &bad_send_wqe_p, NULL, 2); |
1079 | if (h_ret != H_SUCCESS) { | 1079 | if (h_ret != H_SUCCESS) { |
1080 | ehca_err(&shca->ib_device, "hipz_h_disable_and_get_wqe() failed" | 1080 | ehca_err(&shca->ib_device, "hipz_h_disable_and_get_wqe() failed" |
1081 | " ehca_qp=%p qp_num=%x h_ret=%li", | 1081 | " ehca_qp=%p qp_num=%x h_ret=%lli", |
1082 | my_qp, qp_num, h_ret); | 1082 | my_qp, qp_num, h_ret); |
1083 | return ehca2ib_return_code(h_ret); | 1083 | return ehca2ib_return_code(h_ret); |
1084 | } | 1084 | } |
@@ -1134,7 +1134,7 @@ static int calc_left_cqes(u64 wqe_p, struct ipz_queue *ipz_queue, | |||
1134 | 1134 | ||
1135 | if (ipz_queue_abs_to_offset(ipz_queue, wqe_p, &q_ofs)) { | 1135 | if (ipz_queue_abs_to_offset(ipz_queue, wqe_p, &q_ofs)) { |
1136 | ehca_gen_err("Invalid offset for calculating left cqes " | 1136 | ehca_gen_err("Invalid offset for calculating left cqes " |
1137 | "wqe_p=%#lx wqe_v=%p\n", wqe_p, wqe_v); | 1137 | "wqe_p=%#llx wqe_v=%p\n", wqe_p, wqe_v); |
1138 | return -EFAULT; | 1138 | return -EFAULT; |
1139 | } | 1139 | } |
1140 | 1140 | ||
@@ -1168,7 +1168,7 @@ static int check_for_left_cqes(struct ehca_qp *my_qp, struct ehca_shca *shca) | |||
1168 | &send_wqe_p, &recv_wqe_p, 4); | 1168 | &send_wqe_p, &recv_wqe_p, 4); |
1169 | if (h_ret != H_SUCCESS) { | 1169 | if (h_ret != H_SUCCESS) { |
1170 | ehca_err(&shca->ib_device, "disable_and_get_wqe() " | 1170 | ehca_err(&shca->ib_device, "disable_and_get_wqe() " |
1171 | "failed ehca_qp=%p qp_num=%x h_ret=%li", | 1171 | "failed ehca_qp=%p qp_num=%x h_ret=%lli", |
1172 | my_qp, qp_num, h_ret); | 1172 | my_qp, qp_num, h_ret); |
1173 | return ehca2ib_return_code(h_ret); | 1173 | return ehca2ib_return_code(h_ret); |
1174 | } | 1174 | } |
@@ -1261,7 +1261,7 @@ static int internal_modify_qp(struct ib_qp *ibqp, | |||
1261 | mqpcb, my_qp->galpas.kernel); | 1261 | mqpcb, my_qp->galpas.kernel); |
1262 | if (h_ret != H_SUCCESS) { | 1262 | if (h_ret != H_SUCCESS) { |
1263 | ehca_err(ibqp->device, "hipz_h_query_qp() failed " | 1263 | ehca_err(ibqp->device, "hipz_h_query_qp() failed " |
1264 | "ehca_qp=%p qp_num=%x h_ret=%li", | 1264 | "ehca_qp=%p qp_num=%x h_ret=%lli", |
1265 | my_qp, ibqp->qp_num, h_ret); | 1265 | my_qp, ibqp->qp_num, h_ret); |
1266 | ret = ehca2ib_return_code(h_ret); | 1266 | ret = ehca2ib_return_code(h_ret); |
1267 | goto modify_qp_exit1; | 1267 | goto modify_qp_exit1; |
@@ -1690,7 +1690,7 @@ static int internal_modify_qp(struct ib_qp *ibqp, | |||
1690 | 1690 | ||
1691 | if (h_ret != H_SUCCESS) { | 1691 | if (h_ret != H_SUCCESS) { |
1692 | ret = ehca2ib_return_code(h_ret); | 1692 | ret = ehca2ib_return_code(h_ret); |
1693 | ehca_err(ibqp->device, "hipz_h_modify_qp() failed h_ret=%li " | 1693 | ehca_err(ibqp->device, "hipz_h_modify_qp() failed h_ret=%lli " |
1694 | "ehca_qp=%p qp_num=%x", h_ret, my_qp, ibqp->qp_num); | 1694 | "ehca_qp=%p qp_num=%x", h_ret, my_qp, ibqp->qp_num); |
1695 | goto modify_qp_exit2; | 1695 | goto modify_qp_exit2; |
1696 | } | 1696 | } |
@@ -1723,7 +1723,7 @@ static int internal_modify_qp(struct ib_qp *ibqp, | |||
1723 | ret = ehca2ib_return_code(h_ret); | 1723 | ret = ehca2ib_return_code(h_ret); |
1724 | ehca_err(ibqp->device, "ENABLE in context of " | 1724 | ehca_err(ibqp->device, "ENABLE in context of " |
1725 | "RESET_2_INIT failed! Maybe you didn't get " | 1725 | "RESET_2_INIT failed! Maybe you didn't get " |
1726 | "a LID h_ret=%li ehca_qp=%p qp_num=%x", | 1726 | "a LID h_ret=%lli ehca_qp=%p qp_num=%x", |
1727 | h_ret, my_qp, ibqp->qp_num); | 1727 | h_ret, my_qp, ibqp->qp_num); |
1728 | goto modify_qp_exit2; | 1728 | goto modify_qp_exit2; |
1729 | } | 1729 | } |
@@ -1909,7 +1909,7 @@ int ehca_query_qp(struct ib_qp *qp, | |||
1909 | if (h_ret != H_SUCCESS) { | 1909 | if (h_ret != H_SUCCESS) { |
1910 | ret = ehca2ib_return_code(h_ret); | 1910 | ret = ehca2ib_return_code(h_ret); |
1911 | ehca_err(qp->device, "hipz_h_query_qp() failed " | 1911 | ehca_err(qp->device, "hipz_h_query_qp() failed " |
1912 | "ehca_qp=%p qp_num=%x h_ret=%li", | 1912 | "ehca_qp=%p qp_num=%x h_ret=%lli", |
1913 | my_qp, qp->qp_num, h_ret); | 1913 | my_qp, qp->qp_num, h_ret); |
1914 | goto query_qp_exit1; | 1914 | goto query_qp_exit1; |
1915 | } | 1915 | } |
@@ -2074,7 +2074,7 @@ int ehca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr, | |||
2074 | 2074 | ||
2075 | if (h_ret != H_SUCCESS) { | 2075 | if (h_ret != H_SUCCESS) { |
2076 | ret = ehca2ib_return_code(h_ret); | 2076 | ret = ehca2ib_return_code(h_ret); |
2077 | ehca_err(ibsrq->device, "hipz_h_modify_qp() failed h_ret=%li " | 2077 | ehca_err(ibsrq->device, "hipz_h_modify_qp() failed h_ret=%lli " |
2078 | "ehca_qp=%p qp_num=%x", | 2078 | "ehca_qp=%p qp_num=%x", |
2079 | h_ret, my_qp, my_qp->real_qp_num); | 2079 | h_ret, my_qp, my_qp->real_qp_num); |
2080 | } | 2080 | } |
@@ -2108,7 +2108,7 @@ int ehca_query_srq(struct ib_srq *srq, struct ib_srq_attr *srq_attr) | |||
2108 | if (h_ret != H_SUCCESS) { | 2108 | if (h_ret != H_SUCCESS) { |
2109 | ret = ehca2ib_return_code(h_ret); | 2109 | ret = ehca2ib_return_code(h_ret); |
2110 | ehca_err(srq->device, "hipz_h_query_qp() failed " | 2110 | ehca_err(srq->device, "hipz_h_query_qp() failed " |
2111 | "ehca_qp=%p qp_num=%x h_ret=%li", | 2111 | "ehca_qp=%p qp_num=%x h_ret=%lli", |
2112 | my_qp, my_qp->real_qp_num, h_ret); | 2112 | my_qp, my_qp->real_qp_num, h_ret); |
2113 | goto query_srq_exit1; | 2113 | goto query_srq_exit1; |
2114 | } | 2114 | } |
@@ -2179,7 +2179,7 @@ static int internal_destroy_qp(struct ib_device *dev, struct ehca_qp *my_qp, | |||
2179 | 2179 | ||
2180 | h_ret = hipz_h_destroy_qp(shca->ipz_hca_handle, my_qp); | 2180 | h_ret = hipz_h_destroy_qp(shca->ipz_hca_handle, my_qp); |
2181 | if (h_ret != H_SUCCESS) { | 2181 | if (h_ret != H_SUCCESS) { |
2182 | ehca_err(dev, "hipz_h_destroy_qp() failed h_ret=%li " | 2182 | ehca_err(dev, "hipz_h_destroy_qp() failed h_ret=%lli " |
2183 | "ehca_qp=%p qp_num=%x", h_ret, my_qp, qp_num); | 2183 | "ehca_qp=%p qp_num=%x", h_ret, my_qp, qp_num); |
2184 | return ehca2ib_return_code(h_ret); | 2184 | return ehca2ib_return_code(h_ret); |
2185 | } | 2185 | } |
diff --git a/drivers/infiniband/hw/ehca/ehca_reqs.c b/drivers/infiniband/hw/ehca/ehca_reqs.c index c7112686782f..5a3d96f84c79 100644 --- a/drivers/infiniband/hw/ehca/ehca_reqs.c +++ b/drivers/infiniband/hw/ehca/ehca_reqs.c | |||
@@ -822,7 +822,7 @@ static int generate_flush_cqes(struct ehca_qp *my_qp, struct ib_cq *cq, | |||
822 | offset = qmap->next_wqe_idx * ipz_queue->qe_size; | 822 | offset = qmap->next_wqe_idx * ipz_queue->qe_size; |
823 | wqe = (struct ehca_wqe *)ipz_qeit_calc(ipz_queue, offset); | 823 | wqe = (struct ehca_wqe *)ipz_qeit_calc(ipz_queue, offset); |
824 | if (!wqe) { | 824 | if (!wqe) { |
825 | ehca_err(cq->device, "Invalid wqe offset=%#lx on " | 825 | ehca_err(cq->device, "Invalid wqe offset=%#llx on " |
826 | "qp_num=%#x", offset, my_qp->real_qp_num); | 826 | "qp_num=%#x", offset, my_qp->real_qp_num); |
827 | return nr; | 827 | return nr; |
828 | } | 828 | } |
diff --git a/drivers/infiniband/hw/ehca/ehca_sqp.c b/drivers/infiniband/hw/ehca/ehca_sqp.c index 706d97ad5555..44447aaa5501 100644 --- a/drivers/infiniband/hw/ehca/ehca_sqp.c +++ b/drivers/infiniband/hw/ehca/ehca_sqp.c | |||
@@ -85,7 +85,7 @@ u64 ehca_define_sqp(struct ehca_shca *shca, | |||
85 | 85 | ||
86 | if (ret != H_SUCCESS) { | 86 | if (ret != H_SUCCESS) { |
87 | ehca_err(&shca->ib_device, | 87 | ehca_err(&shca->ib_device, |
88 | "Can't define AQP1 for port %x. h_ret=%li", | 88 | "Can't define AQP1 for port %x. h_ret=%lli", |
89 | port, ret); | 89 | port, ret); |
90 | return ret; | 90 | return ret; |
91 | } | 91 | } |
diff --git a/drivers/infiniband/hw/ehca/ehca_tools.h b/drivers/infiniband/hw/ehca/ehca_tools.h index 21f7d06f14ad..f09914cccf53 100644 --- a/drivers/infiniband/hw/ehca/ehca_tools.h +++ b/drivers/infiniband/hw/ehca/ehca_tools.h | |||
@@ -116,7 +116,7 @@ extern int ehca_debug_level; | |||
116 | unsigned char *deb = (unsigned char *)(adr); \ | 116 | unsigned char *deb = (unsigned char *)(adr); \ |
117 | for (x = 0; x < l; x += 16) { \ | 117 | for (x = 0; x < l; x += 16) { \ |
118 | printk(KERN_INFO "EHCA_DMP:%s " format \ | 118 | printk(KERN_INFO "EHCA_DMP:%s " format \ |
119 | " adr=%p ofs=%04x %016lx %016lx\n", \ | 119 | " adr=%p ofs=%04x %016llx %016llx\n", \ |
120 | __func__, ##args, deb, x, \ | 120 | __func__, ##args, deb, x, \ |
121 | *((u64 *)&deb[0]), *((u64 *)&deb[8])); \ | 121 | *((u64 *)&deb[0]), *((u64 *)&deb[8])); \ |
122 | deb += 16; \ | 122 | deb += 16; \ |
diff --git a/drivers/infiniband/hw/ehca/ehca_uverbs.c b/drivers/infiniband/hw/ehca/ehca_uverbs.c index e43ed8f8a0c8..3cb688d29131 100644 --- a/drivers/infiniband/hw/ehca/ehca_uverbs.c +++ b/drivers/infiniband/hw/ehca/ehca_uverbs.c | |||
@@ -114,7 +114,7 @@ static int ehca_mmap_fw(struct vm_area_struct *vma, struct h_galpas *galpas, | |||
114 | 114 | ||
115 | physical = galpas->user.fw_handle; | 115 | physical = galpas->user.fw_handle; |
116 | vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); | 116 | vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); |
117 | ehca_gen_dbg("vsize=%lx physical=%lx", vsize, physical); | 117 | ehca_gen_dbg("vsize=%llx physical=%llx", vsize, physical); |
118 | /* VM_IO | VM_RESERVED are set by remap_pfn_range() */ | 118 | /* VM_IO | VM_RESERVED are set by remap_pfn_range() */ |
119 | ret = remap_4k_pfn(vma, vma->vm_start, physical >> EHCA_PAGESHIFT, | 119 | ret = remap_4k_pfn(vma, vma->vm_start, physical >> EHCA_PAGESHIFT, |
120 | vma->vm_page_prot); | 120 | vma->vm_page_prot); |
diff --git a/drivers/infiniband/hw/ehca/hcp_if.c b/drivers/infiniband/hw/ehca/hcp_if.c index 415d3a465de6..d0ab0c0d5e91 100644 --- a/drivers/infiniband/hw/ehca/hcp_if.c +++ b/drivers/infiniband/hw/ehca/hcp_if.c | |||
@@ -226,7 +226,7 @@ u64 hipz_h_alloc_resource_eq(const struct ipz_adapter_handle adapter_handle, | |||
226 | u32 *eq_ist) | 226 | u32 *eq_ist) |
227 | { | 227 | { |
228 | u64 ret; | 228 | u64 ret; |
229 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 229 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
230 | u64 allocate_controls; | 230 | u64 allocate_controls; |
231 | 231 | ||
232 | /* resource type */ | 232 | /* resource type */ |
@@ -249,7 +249,7 @@ u64 hipz_h_alloc_resource_eq(const struct ipz_adapter_handle adapter_handle, | |||
249 | *eq_ist = (u32)outs[5]; | 249 | *eq_ist = (u32)outs[5]; |
250 | 250 | ||
251 | if (ret == H_NOT_ENOUGH_RESOURCES) | 251 | if (ret == H_NOT_ENOUGH_RESOURCES) |
252 | ehca_gen_err("Not enough resource - ret=%li ", ret); | 252 | ehca_gen_err("Not enough resource - ret=%lli ", ret); |
253 | 253 | ||
254 | return ret; | 254 | return ret; |
255 | } | 255 | } |
@@ -270,7 +270,7 @@ u64 hipz_h_alloc_resource_cq(const struct ipz_adapter_handle adapter_handle, | |||
270 | struct ehca_alloc_cq_parms *param) | 270 | struct ehca_alloc_cq_parms *param) |
271 | { | 271 | { |
272 | u64 ret; | 272 | u64 ret; |
273 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 273 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
274 | 274 | ||
275 | ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, | 275 | ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, |
276 | adapter_handle.handle, /* r4 */ | 276 | adapter_handle.handle, /* r4 */ |
@@ -287,7 +287,7 @@ u64 hipz_h_alloc_resource_cq(const struct ipz_adapter_handle adapter_handle, | |||
287 | hcp_galpas_ctor(&cq->galpas, outs[5], outs[6]); | 287 | hcp_galpas_ctor(&cq->galpas, outs[5], outs[6]); |
288 | 288 | ||
289 | if (ret == H_NOT_ENOUGH_RESOURCES) | 289 | if (ret == H_NOT_ENOUGH_RESOURCES) |
290 | ehca_gen_err("Not enough resources. ret=%li", ret); | 290 | ehca_gen_err("Not enough resources. ret=%lli", ret); |
291 | 291 | ||
292 | return ret; | 292 | return ret; |
293 | } | 293 | } |
@@ -297,7 +297,7 @@ u64 hipz_h_alloc_resource_qp(const struct ipz_adapter_handle adapter_handle, | |||
297 | { | 297 | { |
298 | u64 ret; | 298 | u64 ret; |
299 | u64 allocate_controls, max_r10_reg, r11, r12; | 299 | u64 allocate_controls, max_r10_reg, r11, r12; |
300 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 300 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
301 | 301 | ||
302 | allocate_controls = | 302 | allocate_controls = |
303 | EHCA_BMASK_SET(H_ALL_RES_QP_ENHANCED_OPS, parms->ext_type) | 303 | EHCA_BMASK_SET(H_ALL_RES_QP_ENHANCED_OPS, parms->ext_type) |
@@ -362,7 +362,7 @@ u64 hipz_h_alloc_resource_qp(const struct ipz_adapter_handle adapter_handle, | |||
362 | hcp_galpas_ctor(&parms->galpas, outs[6], outs[6]); | 362 | hcp_galpas_ctor(&parms->galpas, outs[6], outs[6]); |
363 | 363 | ||
364 | if (ret == H_NOT_ENOUGH_RESOURCES) | 364 | if (ret == H_NOT_ENOUGH_RESOURCES) |
365 | ehca_gen_err("Not enough resources. ret=%li", ret); | 365 | ehca_gen_err("Not enough resources. ret=%lli", ret); |
366 | 366 | ||
367 | return ret; | 367 | return ret; |
368 | } | 368 | } |
@@ -454,7 +454,7 @@ u64 hipz_h_register_rpage_eq(const struct ipz_adapter_handle adapter_handle, | |||
454 | const u64 count) | 454 | const u64 count) |
455 | { | 455 | { |
456 | if (count != 1) { | 456 | if (count != 1) { |
457 | ehca_gen_err("Ppage counter=%lx", count); | 457 | ehca_gen_err("Ppage counter=%llx", count); |
458 | return H_PARAMETER; | 458 | return H_PARAMETER; |
459 | } | 459 | } |
460 | return hipz_h_register_rpage(adapter_handle, | 460 | return hipz_h_register_rpage(adapter_handle, |
@@ -489,7 +489,7 @@ u64 hipz_h_register_rpage_cq(const struct ipz_adapter_handle adapter_handle, | |||
489 | const struct h_galpa gal) | 489 | const struct h_galpa gal) |
490 | { | 490 | { |
491 | if (count != 1) { | 491 | if (count != 1) { |
492 | ehca_gen_err("Page counter=%lx", count); | 492 | ehca_gen_err("Page counter=%llx", count); |
493 | return H_PARAMETER; | 493 | return H_PARAMETER; |
494 | } | 494 | } |
495 | 495 | ||
@@ -508,7 +508,7 @@ u64 hipz_h_register_rpage_qp(const struct ipz_adapter_handle adapter_handle, | |||
508 | const struct h_galpa galpa) | 508 | const struct h_galpa galpa) |
509 | { | 509 | { |
510 | if (count > 1) { | 510 | if (count > 1) { |
511 | ehca_gen_err("Page counter=%lx", count); | 511 | ehca_gen_err("Page counter=%llx", count); |
512 | return H_PARAMETER; | 512 | return H_PARAMETER; |
513 | } | 513 | } |
514 | 514 | ||
@@ -525,7 +525,7 @@ u64 hipz_h_disable_and_get_wqe(const struct ipz_adapter_handle adapter_handle, | |||
525 | int dis_and_get_function_code) | 525 | int dis_and_get_function_code) |
526 | { | 526 | { |
527 | u64 ret; | 527 | u64 ret; |
528 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 528 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
529 | 529 | ||
530 | ret = ehca_plpar_hcall9(H_DISABLE_AND_GETC, outs, | 530 | ret = ehca_plpar_hcall9(H_DISABLE_AND_GETC, outs, |
531 | adapter_handle.handle, /* r4 */ | 531 | adapter_handle.handle, /* r4 */ |
@@ -548,7 +548,7 @@ u64 hipz_h_modify_qp(const struct ipz_adapter_handle adapter_handle, | |||
548 | struct h_galpa gal) | 548 | struct h_galpa gal) |
549 | { | 549 | { |
550 | u64 ret; | 550 | u64 ret; |
551 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 551 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
552 | ret = ehca_plpar_hcall9(H_MODIFY_QP, outs, | 552 | ret = ehca_plpar_hcall9(H_MODIFY_QP, outs, |
553 | adapter_handle.handle, /* r4 */ | 553 | adapter_handle.handle, /* r4 */ |
554 | qp_handle.handle, /* r5 */ | 554 | qp_handle.handle, /* r5 */ |
@@ -557,7 +557,7 @@ u64 hipz_h_modify_qp(const struct ipz_adapter_handle adapter_handle, | |||
557 | 0, 0, 0, 0, 0); | 557 | 0, 0, 0, 0, 0); |
558 | 558 | ||
559 | if (ret == H_NOT_ENOUGH_RESOURCES) | 559 | if (ret == H_NOT_ENOUGH_RESOURCES) |
560 | ehca_gen_err("Insufficient resources ret=%li", ret); | 560 | ehca_gen_err("Insufficient resources ret=%lli", ret); |
561 | 561 | ||
562 | return ret; | 562 | return ret; |
563 | } | 563 | } |
@@ -579,7 +579,7 @@ u64 hipz_h_destroy_qp(const struct ipz_adapter_handle adapter_handle, | |||
579 | struct ehca_qp *qp) | 579 | struct ehca_qp *qp) |
580 | { | 580 | { |
581 | u64 ret; | 581 | u64 ret; |
582 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 582 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
583 | 583 | ||
584 | ret = hcp_galpas_dtor(&qp->galpas); | 584 | ret = hcp_galpas_dtor(&qp->galpas); |
585 | if (ret) { | 585 | if (ret) { |
@@ -593,7 +593,7 @@ u64 hipz_h_destroy_qp(const struct ipz_adapter_handle adapter_handle, | |||
593 | qp->ipz_qp_handle.handle, /* r6 */ | 593 | qp->ipz_qp_handle.handle, /* r6 */ |
594 | 0, 0, 0, 0, 0, 0); | 594 | 0, 0, 0, 0, 0, 0); |
595 | if (ret == H_HARDWARE) | 595 | if (ret == H_HARDWARE) |
596 | ehca_gen_err("HCA not operational. ret=%li", ret); | 596 | ehca_gen_err("HCA not operational. ret=%lli", ret); |
597 | 597 | ||
598 | ret = ehca_plpar_hcall_norets(H_FREE_RESOURCE, | 598 | ret = ehca_plpar_hcall_norets(H_FREE_RESOURCE, |
599 | adapter_handle.handle, /* r4 */ | 599 | adapter_handle.handle, /* r4 */ |
@@ -601,7 +601,7 @@ u64 hipz_h_destroy_qp(const struct ipz_adapter_handle adapter_handle, | |||
601 | 0, 0, 0, 0, 0); | 601 | 0, 0, 0, 0, 0); |
602 | 602 | ||
603 | if (ret == H_RESOURCE) | 603 | if (ret == H_RESOURCE) |
604 | ehca_gen_err("Resource still in use. ret=%li", ret); | 604 | ehca_gen_err("Resource still in use. ret=%lli", ret); |
605 | 605 | ||
606 | return ret; | 606 | return ret; |
607 | } | 607 | } |
@@ -625,7 +625,7 @@ u64 hipz_h_define_aqp1(const struct ipz_adapter_handle adapter_handle, | |||
625 | u32 * bma_qp_nr) | 625 | u32 * bma_qp_nr) |
626 | { | 626 | { |
627 | u64 ret; | 627 | u64 ret; |
628 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 628 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
629 | 629 | ||
630 | ret = ehca_plpar_hcall9(H_DEFINE_AQP1, outs, | 630 | ret = ehca_plpar_hcall9(H_DEFINE_AQP1, outs, |
631 | adapter_handle.handle, /* r4 */ | 631 | adapter_handle.handle, /* r4 */ |
@@ -636,7 +636,7 @@ u64 hipz_h_define_aqp1(const struct ipz_adapter_handle adapter_handle, | |||
636 | *bma_qp_nr = (u32)outs[1]; | 636 | *bma_qp_nr = (u32)outs[1]; |
637 | 637 | ||
638 | if (ret == H_ALIAS_EXIST) | 638 | if (ret == H_ALIAS_EXIST) |
639 | ehca_gen_err("AQP1 already exists. ret=%li", ret); | 639 | ehca_gen_err("AQP1 already exists. ret=%lli", ret); |
640 | 640 | ||
641 | return ret; | 641 | return ret; |
642 | } | 642 | } |
@@ -658,7 +658,7 @@ u64 hipz_h_attach_mcqp(const struct ipz_adapter_handle adapter_handle, | |||
658 | 0, 0); | 658 | 0, 0); |
659 | 659 | ||
660 | if (ret == H_NOT_ENOUGH_RESOURCES) | 660 | if (ret == H_NOT_ENOUGH_RESOURCES) |
661 | ehca_gen_err("Not enough resources. ret=%li", ret); | 661 | ehca_gen_err("Not enough resources. ret=%lli", ret); |
662 | 662 | ||
663 | return ret; | 663 | return ret; |
664 | } | 664 | } |
@@ -697,7 +697,7 @@ u64 hipz_h_destroy_cq(const struct ipz_adapter_handle adapter_handle, | |||
697 | 0, 0, 0, 0); | 697 | 0, 0, 0, 0); |
698 | 698 | ||
699 | if (ret == H_RESOURCE) | 699 | if (ret == H_RESOURCE) |
700 | ehca_gen_err("H_FREE_RESOURCE failed ret=%li ", ret); | 700 | ehca_gen_err("H_FREE_RESOURCE failed ret=%lli ", ret); |
701 | 701 | ||
702 | return ret; | 702 | return ret; |
703 | } | 703 | } |
@@ -719,7 +719,7 @@ u64 hipz_h_destroy_eq(const struct ipz_adapter_handle adapter_handle, | |||
719 | 0, 0, 0, 0, 0); | 719 | 0, 0, 0, 0, 0); |
720 | 720 | ||
721 | if (ret == H_RESOURCE) | 721 | if (ret == H_RESOURCE) |
722 | ehca_gen_err("Resource in use. ret=%li ", ret); | 722 | ehca_gen_err("Resource in use. ret=%lli ", ret); |
723 | 723 | ||
724 | return ret; | 724 | return ret; |
725 | } | 725 | } |
@@ -733,7 +733,7 @@ u64 hipz_h_alloc_resource_mr(const struct ipz_adapter_handle adapter_handle, | |||
733 | struct ehca_mr_hipzout_parms *outparms) | 733 | struct ehca_mr_hipzout_parms *outparms) |
734 | { | 734 | { |
735 | u64 ret; | 735 | u64 ret; |
736 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 736 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
737 | 737 | ||
738 | ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, | 738 | ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, |
739 | adapter_handle.handle, /* r4 */ | 739 | adapter_handle.handle, /* r4 */ |
@@ -774,9 +774,9 @@ u64 hipz_h_register_rpage_mr(const struct ipz_adapter_handle adapter_handle, | |||
774 | 774 | ||
775 | if ((count > 1) && (logical_address_of_page & (EHCA_PAGESIZE-1))) { | 775 | if ((count > 1) && (logical_address_of_page & (EHCA_PAGESIZE-1))) { |
776 | ehca_gen_err("logical_address_of_page not on a 4k boundary " | 776 | ehca_gen_err("logical_address_of_page not on a 4k boundary " |
777 | "adapter_handle=%lx mr=%p mr_handle=%lx " | 777 | "adapter_handle=%llx mr=%p mr_handle=%llx " |
778 | "pagesize=%x queue_type=%x " | 778 | "pagesize=%x queue_type=%x " |
779 | "logical_address_of_page=%lx count=%lx", | 779 | "logical_address_of_page=%llx count=%llx", |
780 | adapter_handle.handle, mr, | 780 | adapter_handle.handle, mr, |
781 | mr->ipz_mr_handle.handle, pagesize, queue_type, | 781 | mr->ipz_mr_handle.handle, pagesize, queue_type, |
782 | logical_address_of_page, count); | 782 | logical_address_of_page, count); |
@@ -794,7 +794,7 @@ u64 hipz_h_query_mr(const struct ipz_adapter_handle adapter_handle, | |||
794 | struct ehca_mr_hipzout_parms *outparms) | 794 | struct ehca_mr_hipzout_parms *outparms) |
795 | { | 795 | { |
796 | u64 ret; | 796 | u64 ret; |
797 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 797 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
798 | 798 | ||
799 | ret = ehca_plpar_hcall9(H_QUERY_MR, outs, | 799 | ret = ehca_plpar_hcall9(H_QUERY_MR, outs, |
800 | adapter_handle.handle, /* r4 */ | 800 | adapter_handle.handle, /* r4 */ |
@@ -828,7 +828,7 @@ u64 hipz_h_reregister_pmr(const struct ipz_adapter_handle adapter_handle, | |||
828 | struct ehca_mr_hipzout_parms *outparms) | 828 | struct ehca_mr_hipzout_parms *outparms) |
829 | { | 829 | { |
830 | u64 ret; | 830 | u64 ret; |
831 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 831 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
832 | 832 | ||
833 | ret = ehca_plpar_hcall9(H_REREGISTER_PMR, outs, | 833 | ret = ehca_plpar_hcall9(H_REREGISTER_PMR, outs, |
834 | adapter_handle.handle, /* r4 */ | 834 | adapter_handle.handle, /* r4 */ |
@@ -855,7 +855,7 @@ u64 hipz_h_register_smr(const struct ipz_adapter_handle adapter_handle, | |||
855 | struct ehca_mr_hipzout_parms *outparms) | 855 | struct ehca_mr_hipzout_parms *outparms) |
856 | { | 856 | { |
857 | u64 ret; | 857 | u64 ret; |
858 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 858 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
859 | 859 | ||
860 | ret = ehca_plpar_hcall9(H_REGISTER_SMR, outs, | 860 | ret = ehca_plpar_hcall9(H_REGISTER_SMR, outs, |
861 | adapter_handle.handle, /* r4 */ | 861 | adapter_handle.handle, /* r4 */ |
@@ -877,7 +877,7 @@ u64 hipz_h_alloc_resource_mw(const struct ipz_adapter_handle adapter_handle, | |||
877 | struct ehca_mw_hipzout_parms *outparms) | 877 | struct ehca_mw_hipzout_parms *outparms) |
878 | { | 878 | { |
879 | u64 ret; | 879 | u64 ret; |
880 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 880 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
881 | 881 | ||
882 | ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, | 882 | ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, |
883 | adapter_handle.handle, /* r4 */ | 883 | adapter_handle.handle, /* r4 */ |
@@ -895,7 +895,7 @@ u64 hipz_h_query_mw(const struct ipz_adapter_handle adapter_handle, | |||
895 | struct ehca_mw_hipzout_parms *outparms) | 895 | struct ehca_mw_hipzout_parms *outparms) |
896 | { | 896 | { |
897 | u64 ret; | 897 | u64 ret; |
898 | u64 outs[PLPAR_HCALL9_BUFSIZE]; | 898 | unsigned long outs[PLPAR_HCALL9_BUFSIZE]; |
899 | 899 | ||
900 | ret = ehca_plpar_hcall9(H_QUERY_MW, outs, | 900 | ret = ehca_plpar_hcall9(H_QUERY_MW, outs, |
901 | adapter_handle.handle, /* r4 */ | 901 | adapter_handle.handle, /* r4 */ |
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c index 39167a797f99..a91cb4c3fa5c 100644 --- a/drivers/infiniband/hw/mlx4/qp.c +++ b/drivers/infiniband/hw/mlx4/qp.c | |||
@@ -1462,7 +1462,8 @@ static void __set_data_seg(struct mlx4_wqe_data_seg *dseg, struct ib_sge *sg) | |||
1462 | } | 1462 | } |
1463 | 1463 | ||
1464 | static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr, | 1464 | static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr, |
1465 | struct mlx4_ib_qp *qp, unsigned *lso_seg_len) | 1465 | struct mlx4_ib_qp *qp, unsigned *lso_seg_len, |
1466 | __be32 *lso_hdr_sz) | ||
1466 | { | 1467 | { |
1467 | unsigned halign = ALIGN(sizeof *wqe + wr->wr.ud.hlen, 16); | 1468 | unsigned halign = ALIGN(sizeof *wqe + wr->wr.ud.hlen, 16); |
1468 | 1469 | ||
@@ -1479,12 +1480,8 @@ static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr, | |||
1479 | 1480 | ||
1480 | memcpy(wqe->header, wr->wr.ud.header, wr->wr.ud.hlen); | 1481 | memcpy(wqe->header, wr->wr.ud.header, wr->wr.ud.hlen); |
1481 | 1482 | ||
1482 | /* make sure LSO header is written before overwriting stamping */ | 1483 | *lso_hdr_sz = cpu_to_be32((wr->wr.ud.mss - wr->wr.ud.hlen) << 16 | |
1483 | wmb(); | 1484 | wr->wr.ud.hlen); |
1484 | |||
1485 | wqe->mss_hdr_size = cpu_to_be32((wr->wr.ud.mss - wr->wr.ud.hlen) << 16 | | ||
1486 | wr->wr.ud.hlen); | ||
1487 | |||
1488 | *lso_seg_len = halign; | 1485 | *lso_seg_len = halign; |
1489 | return 0; | 1486 | return 0; |
1490 | } | 1487 | } |
@@ -1518,6 +1515,9 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
1518 | int uninitialized_var(stamp); | 1515 | int uninitialized_var(stamp); |
1519 | int uninitialized_var(size); | 1516 | int uninitialized_var(size); |
1520 | unsigned uninitialized_var(seglen); | 1517 | unsigned uninitialized_var(seglen); |
1518 | __be32 dummy; | ||
1519 | __be32 *lso_wqe; | ||
1520 | __be32 uninitialized_var(lso_hdr_sz); | ||
1521 | int i; | 1521 | int i; |
1522 | 1522 | ||
1523 | spin_lock_irqsave(&qp->sq.lock, flags); | 1523 | spin_lock_irqsave(&qp->sq.lock, flags); |
@@ -1525,6 +1525,8 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
1525 | ind = qp->sq_next_wqe; | 1525 | ind = qp->sq_next_wqe; |
1526 | 1526 | ||
1527 | for (nreq = 0; wr; ++nreq, wr = wr->next) { | 1527 | for (nreq = 0; wr; ++nreq, wr = wr->next) { |
1528 | lso_wqe = &dummy; | ||
1529 | |||
1528 | if (mlx4_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) { | 1530 | if (mlx4_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) { |
1529 | err = -ENOMEM; | 1531 | err = -ENOMEM; |
1530 | *bad_wr = wr; | 1532 | *bad_wr = wr; |
@@ -1606,11 +1608,12 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
1606 | size += sizeof (struct mlx4_wqe_datagram_seg) / 16; | 1608 | size += sizeof (struct mlx4_wqe_datagram_seg) / 16; |
1607 | 1609 | ||
1608 | if (wr->opcode == IB_WR_LSO) { | 1610 | if (wr->opcode == IB_WR_LSO) { |
1609 | err = build_lso_seg(wqe, wr, qp, &seglen); | 1611 | err = build_lso_seg(wqe, wr, qp, &seglen, &lso_hdr_sz); |
1610 | if (unlikely(err)) { | 1612 | if (unlikely(err)) { |
1611 | *bad_wr = wr; | 1613 | *bad_wr = wr; |
1612 | goto out; | 1614 | goto out; |
1613 | } | 1615 | } |
1616 | lso_wqe = (__be32 *) wqe; | ||
1614 | wqe += seglen; | 1617 | wqe += seglen; |
1615 | size += seglen / 16; | 1618 | size += seglen / 16; |
1616 | } | 1619 | } |
@@ -1652,6 +1655,14 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
1652 | for (i = wr->num_sge - 1; i >= 0; --i, --dseg) | 1655 | for (i = wr->num_sge - 1; i >= 0; --i, --dseg) |
1653 | set_data_seg(dseg, wr->sg_list + i); | 1656 | set_data_seg(dseg, wr->sg_list + i); |
1654 | 1657 | ||
1658 | /* | ||
1659 | * Possibly overwrite stamping in cacheline with LSO | ||
1660 | * segment only after making sure all data segments | ||
1661 | * are written. | ||
1662 | */ | ||
1663 | wmb(); | ||
1664 | *lso_wqe = lso_hdr_sz; | ||
1665 | |||
1655 | ctrl->fence_size = (wr->send_flags & IB_SEND_FENCE ? | 1666 | ctrl->fence_size = (wr->send_flags & IB_SEND_FENCE ? |
1656 | MLX4_WQE_CTRL_FENCE : 0) | size; | 1667 | MLX4_WQE_CTRL_FENCE : 0) | size; |
1657 | 1668 | ||
@@ -1686,7 +1697,6 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
1686 | stamp_send_wqe(qp, stamp, size * 16); | 1697 | stamp_send_wqe(qp, stamp, size * 16); |
1687 | ind = pad_wraparound(qp, ind); | 1698 | ind = pad_wraparound(qp, ind); |
1688 | } | 1699 | } |
1689 | |||
1690 | } | 1700 | } |
1691 | 1701 | ||
1692 | out: | 1702 | out: |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index dce0443f9d69..0bd2a4ff0842 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c | |||
@@ -106,23 +106,17 @@ int ipoib_open(struct net_device *dev) | |||
106 | 106 | ||
107 | ipoib_dbg(priv, "bringing up interface\n"); | 107 | ipoib_dbg(priv, "bringing up interface\n"); |
108 | 108 | ||
109 | set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags); | 109 | if (!test_and_set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags)) |
110 | napi_enable(&priv->napi); | ||
110 | 111 | ||
111 | if (ipoib_pkey_dev_delay_open(dev)) | 112 | if (ipoib_pkey_dev_delay_open(dev)) |
112 | return 0; | 113 | return 0; |
113 | 114 | ||
114 | napi_enable(&priv->napi); | 115 | if (ipoib_ib_dev_open(dev)) |
116 | goto err_disable; | ||
115 | 117 | ||
116 | if (ipoib_ib_dev_open(dev)) { | 118 | if (ipoib_ib_dev_up(dev)) |
117 | napi_disable(&priv->napi); | 119 | goto err_stop; |
118 | return -EINVAL; | ||
119 | } | ||
120 | |||
121 | if (ipoib_ib_dev_up(dev)) { | ||
122 | ipoib_ib_dev_stop(dev, 1); | ||
123 | napi_disable(&priv->napi); | ||
124 | return -EINVAL; | ||
125 | } | ||
126 | 120 | ||
127 | if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) { | 121 | if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) { |
128 | struct ipoib_dev_priv *cpriv; | 122 | struct ipoib_dev_priv *cpriv; |
@@ -144,6 +138,15 @@ int ipoib_open(struct net_device *dev) | |||
144 | netif_start_queue(dev); | 138 | netif_start_queue(dev); |
145 | 139 | ||
146 | return 0; | 140 | return 0; |
141 | |||
142 | err_stop: | ||
143 | ipoib_ib_dev_stop(dev, 1); | ||
144 | |||
145 | err_disable: | ||
146 | napi_disable(&priv->napi); | ||
147 | clear_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags); | ||
148 | |||
149 | return -EINVAL; | ||
147 | } | 150 | } |
148 | 151 | ||
149 | static int ipoib_stop(struct net_device *dev) | 152 | static int ipoib_stop(struct net_device *dev) |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index 59d02e0b8df1..425e31112ed7 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
@@ -409,7 +409,7 @@ static int ipoib_mcast_join_complete(int status, | |||
409 | } | 409 | } |
410 | 410 | ||
411 | if (mcast->logcount++ < 20) { | 411 | if (mcast->logcount++ < 20) { |
412 | if (status == -ETIMEDOUT) { | 412 | if (status == -ETIMEDOUT || status == -EAGAIN) { |
413 | ipoib_dbg_mcast(priv, "multicast join failed for %pI6, status %d\n", | 413 | ipoib_dbg_mcast(priv, "multicast join failed for %pI6, status %d\n", |
414 | mcast->mcmember.mgid.raw, status); | 414 | mcast->mcmember.mgid.raw, status); |
415 | } else { | 415 | } else { |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c index 2cf1a4088718..5a76a5510350 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c | |||
@@ -61,6 +61,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey) | |||
61 | 61 | ||
62 | ppriv = netdev_priv(pdev); | 62 | ppriv = netdev_priv(pdev); |
63 | 63 | ||
64 | rtnl_lock(); | ||
64 | mutex_lock(&ppriv->vlan_mutex); | 65 | mutex_lock(&ppriv->vlan_mutex); |
65 | 66 | ||
66 | /* | 67 | /* |
@@ -111,7 +112,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey) | |||
111 | goto device_init_failed; | 112 | goto device_init_failed; |
112 | } | 113 | } |
113 | 114 | ||
114 | result = register_netdev(priv->dev); | 115 | result = register_netdevice(priv->dev); |
115 | if (result) { | 116 | if (result) { |
116 | ipoib_warn(priv, "failed to initialize; error %i", result); | 117 | ipoib_warn(priv, "failed to initialize; error %i", result); |
117 | goto register_failed; | 118 | goto register_failed; |
@@ -134,12 +135,13 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey) | |||
134 | list_add_tail(&priv->list, &ppriv->child_intfs); | 135 | list_add_tail(&priv->list, &ppriv->child_intfs); |
135 | 136 | ||
136 | mutex_unlock(&ppriv->vlan_mutex); | 137 | mutex_unlock(&ppriv->vlan_mutex); |
138 | rtnl_unlock(); | ||
137 | 139 | ||
138 | return 0; | 140 | return 0; |
139 | 141 | ||
140 | sysfs_failed: | 142 | sysfs_failed: |
141 | ipoib_delete_debug_files(priv->dev); | 143 | ipoib_delete_debug_files(priv->dev); |
142 | unregister_netdev(priv->dev); | 144 | unregister_netdevice(priv->dev); |
143 | 145 | ||
144 | register_failed: | 146 | register_failed: |
145 | ipoib_dev_cleanup(priv->dev); | 147 | ipoib_dev_cleanup(priv->dev); |
@@ -149,6 +151,7 @@ device_init_failed: | |||
149 | 151 | ||
150 | err: | 152 | err: |
151 | mutex_unlock(&ppriv->vlan_mutex); | 153 | mutex_unlock(&ppriv->vlan_mutex); |
154 | rtnl_unlock(); | ||
152 | return result; | 155 | return result; |
153 | } | 156 | } |
154 | 157 | ||
@@ -162,10 +165,11 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey) | |||
162 | 165 | ||
163 | ppriv = netdev_priv(pdev); | 166 | ppriv = netdev_priv(pdev); |
164 | 167 | ||
168 | rtnl_lock(); | ||
165 | mutex_lock(&ppriv->vlan_mutex); | 169 | mutex_lock(&ppriv->vlan_mutex); |
166 | list_for_each_entry_safe(priv, tpriv, &ppriv->child_intfs, list) { | 170 | list_for_each_entry_safe(priv, tpriv, &ppriv->child_intfs, list) { |
167 | if (priv->pkey == pkey) { | 171 | if (priv->pkey == pkey) { |
168 | unregister_netdev(priv->dev); | 172 | unregister_netdevice(priv->dev); |
169 | ipoib_dev_cleanup(priv->dev); | 173 | ipoib_dev_cleanup(priv->dev); |
170 | list_del(&priv->list); | 174 | list_del(&priv->list); |
171 | free_netdev(priv->dev); | 175 | free_netdev(priv->dev); |
@@ -175,6 +179,7 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey) | |||
175 | } | 179 | } |
176 | } | 180 | } |
177 | mutex_unlock(&ppriv->vlan_mutex); | 181 | mutex_unlock(&ppriv->vlan_mutex); |
182 | rtnl_unlock(); | ||
178 | 183 | ||
179 | return ret; | 184 | return ret; |
180 | } | 185 | } |
diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c index 7c5f97033b9f..cb8943da4f12 100644 --- a/drivers/isdn/i4l/isdn_net.c +++ b/drivers/isdn/i4l/isdn_net.c | |||
@@ -292,7 +292,9 @@ isdn_net_unbind_channel(isdn_net_local * lp) | |||
292 | lp->dialstate = 0; | 292 | lp->dialstate = 0; |
293 | dev->rx_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL; | 293 | dev->rx_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL; |
294 | dev->st_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL; | 294 | dev->st_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL; |
295 | isdn_free_channel(lp->isdn_device, lp->isdn_channel, ISDN_USAGE_NET); | 295 | if (lp->isdn_device != -1 && lp->isdn_channel != -1) |
296 | isdn_free_channel(lp->isdn_device, lp->isdn_channel, | ||
297 | ISDN_USAGE_NET); | ||
296 | lp->flags &= ~ISDN_NET_CONNECTED; | 298 | lp->flags &= ~ISDN_NET_CONNECTED; |
297 | lp->isdn_device = -1; | 299 | lp->isdn_device = -1; |
298 | lp->isdn_channel = -1; | 300 | lp->isdn_channel = -1; |
@@ -2513,7 +2515,6 @@ static const struct net_device_ops isdn_netdev_ops = { | |||
2513 | .ndo_stop = isdn_net_close, | 2515 | .ndo_stop = isdn_net_close, |
2514 | .ndo_do_ioctl = isdn_net_ioctl, | 2516 | .ndo_do_ioctl = isdn_net_ioctl, |
2515 | 2517 | ||
2516 | .ndo_validate_addr = NULL, | ||
2517 | .ndo_start_xmit = isdn_net_start_xmit, | 2518 | .ndo_start_xmit = isdn_net_start_xmit, |
2518 | .ndo_get_stats = isdn_net_get_stats, | 2519 | .ndo_get_stats = isdn_net_get_stats, |
2519 | .ndo_tx_timeout = isdn_net_tx_timeout, | 2520 | .ndo_tx_timeout = isdn_net_tx_timeout, |
@@ -2528,12 +2529,8 @@ static void _isdn_setup(struct net_device *dev) | |||
2528 | 2529 | ||
2529 | ether_setup(dev); | 2530 | ether_setup(dev); |
2530 | 2531 | ||
2531 | dev->flags = IFF_NOARP | IFF_POINTOPOINT; | ||
2532 | /* Setup the generic properties */ | 2532 | /* Setup the generic properties */ |
2533 | dev->mtu = 1500; | ||
2534 | dev->flags = IFF_NOARP|IFF_POINTOPOINT; | 2533 | dev->flags = IFF_NOARP|IFF_POINTOPOINT; |
2535 | dev->type = ARPHRD_ETHER; | ||
2536 | dev->addr_len = ETH_ALEN; | ||
2537 | dev->header_ops = NULL; | 2534 | dev->header_ops = NULL; |
2538 | dev->netdev_ops = &isdn_netdev_ops; | 2535 | dev->netdev_ops = &isdn_netdev_ops; |
2539 | 2536 | ||
diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c index a3551dd0324d..aa30b5cb3513 100644 --- a/drivers/isdn/i4l/isdn_ppp.c +++ b/drivers/isdn/i4l/isdn_ppp.c | |||
@@ -431,6 +431,7 @@ set_arg(void __user *b, void *val,int len) | |||
431 | return 0; | 431 | return 0; |
432 | } | 432 | } |
433 | 433 | ||
434 | #ifdef CONFIG_IPPP_FILTER | ||
434 | static int get_filter(void __user *arg, struct sock_filter **p) | 435 | static int get_filter(void __user *arg, struct sock_filter **p) |
435 | { | 436 | { |
436 | struct sock_fprog uprog; | 437 | struct sock_fprog uprog; |
@@ -465,6 +466,7 @@ static int get_filter(void __user *arg, struct sock_filter **p) | |||
465 | *p = code; | 466 | *p = code; |
466 | return uprog.len; | 467 | return uprog.len; |
467 | } | 468 | } |
469 | #endif /* CONFIG_IPPP_FILTER */ | ||
468 | 470 | ||
469 | /* | 471 | /* |
470 | * ippp device ioctl | 472 | * ippp device ioctl |
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig index a4a1ae214630..742713611bc5 100644 --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig | |||
@@ -119,13 +119,6 @@ config LEDS_GPIO | |||
119 | outputs. To be useful the particular board must have LEDs | 119 | outputs. To be useful the particular board must have LEDs |
120 | and they must be connected to the GPIO lines. | 120 | and they must be connected to the GPIO lines. |
121 | 121 | ||
122 | config LEDS_HP_DISK | ||
123 | tristate "LED Support for disk protection LED on HP notebooks" | ||
124 | depends on LEDS_CLASS && ACPI | ||
125 | help | ||
126 | This option enable support for disk protection LED, found on | ||
127 | newer HP notebooks. | ||
128 | |||
129 | config LEDS_CLEVO_MAIL | 122 | config LEDS_CLEVO_MAIL |
130 | tristate "Mail LED on Clevo notebook (EXPERIMENTAL)" | 123 | tristate "Mail LED on Clevo notebook (EXPERIMENTAL)" |
131 | depends on LEDS_CLASS && X86 && SERIO_I8042 && DMI && EXPERIMENTAL | 124 | depends on LEDS_CLASS && X86 && SERIO_I8042 && DMI && EXPERIMENTAL |
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile index bc247cb02e82..9d76f0f160a4 100644 --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile | |||
@@ -23,7 +23,6 @@ obj-$(CONFIG_LEDS_HP6XX) += leds-hp6xx.o | |||
23 | obj-$(CONFIG_LEDS_FSG) += leds-fsg.o | 23 | obj-$(CONFIG_LEDS_FSG) += leds-fsg.o |
24 | obj-$(CONFIG_LEDS_PCA955X) += leds-pca955x.o | 24 | obj-$(CONFIG_LEDS_PCA955X) += leds-pca955x.o |
25 | obj-$(CONFIG_LEDS_DA903X) += leds-da903x.o | 25 | obj-$(CONFIG_LEDS_DA903X) += leds-da903x.o |
26 | obj-$(CONFIG_LEDS_HP_DISK) += leds-hp-disk.o | ||
27 | obj-$(CONFIG_LEDS_WM8350) += leds-wm8350.o | 26 | obj-$(CONFIG_LEDS_WM8350) += leds-wm8350.o |
28 | 27 | ||
29 | # LED Triggers | 28 | # LED Triggers |
diff --git a/drivers/leds/leds-hp-disk.c b/drivers/leds/leds-hp-disk.c deleted file mode 100644 index d786adc8c5e3..000000000000 --- a/drivers/leds/leds-hp-disk.c +++ /dev/null | |||
@@ -1,137 +0,0 @@ | |||
1 | /* | ||
2 | * leds-hp-disk.c - driver for HP "hard disk protection" LED | ||
3 | * | ||
4 | * Copyright (C) 2008 Pavel Machek | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | #include <linux/kernel.h> | ||
22 | #include <linux/init.h> | ||
23 | #include <linux/dmi.h> | ||
24 | #include <linux/module.h> | ||
25 | #include <linux/types.h> | ||
26 | #include <linux/platform_device.h> | ||
27 | #include <linux/interrupt.h> | ||
28 | #include <linux/input.h> | ||
29 | #include <linux/kthread.h> | ||
30 | #include <linux/leds.h> | ||
31 | #include <acpi/acpi_drivers.h> | ||
32 | |||
33 | #define DRIVER_NAME "leds-hp-disk" | ||
34 | #define ACPI_MDPS_CLASS "led" | ||
35 | |||
36 | /* For automatic insertion of the module */ | ||
37 | static struct acpi_device_id hpled_device_ids[] = { | ||
38 | {"HPQ0004", 0}, /* HP Mobile Data Protection System PNP */ | ||
39 | {"", 0}, | ||
40 | }; | ||
41 | MODULE_DEVICE_TABLE(acpi, hpled_device_ids); | ||
42 | |||
43 | struct acpi_hpled { | ||
44 | struct acpi_device *device; /* The ACPI device */ | ||
45 | }; | ||
46 | |||
47 | static struct acpi_hpled adev; | ||
48 | |||
49 | static acpi_status hpled_acpi_write(acpi_handle handle, int reg) | ||
50 | { | ||
51 | unsigned long long ret; /* Not used when writing */ | ||
52 | union acpi_object in_obj[1]; | ||
53 | struct acpi_object_list args = { 1, in_obj }; | ||
54 | |||
55 | in_obj[0].type = ACPI_TYPE_INTEGER; | ||
56 | in_obj[0].integer.value = reg; | ||
57 | |||
58 | return acpi_evaluate_integer(handle, "ALED", &args, &ret); | ||
59 | } | ||
60 | |||
61 | static void hpled_set(struct led_classdev *led_cdev, | ||
62 | enum led_brightness value) | ||
63 | { | ||
64 | hpled_acpi_write(adev.device->handle, !!value); | ||
65 | } | ||
66 | |||
67 | static struct led_classdev hpled_led = { | ||
68 | .name = "hp:red:hddprotection", | ||
69 | .default_trigger = "heartbeat", | ||
70 | .brightness_set = hpled_set, | ||
71 | .flags = LED_CORE_SUSPENDRESUME, | ||
72 | }; | ||
73 | |||
74 | static int hpled_add(struct acpi_device *device) | ||
75 | { | ||
76 | int ret; | ||
77 | |||
78 | if (!device) | ||
79 | return -EINVAL; | ||
80 | |||
81 | adev.device = device; | ||
82 | strcpy(acpi_device_name(device), DRIVER_NAME); | ||
83 | strcpy(acpi_device_class(device), ACPI_MDPS_CLASS); | ||
84 | device->driver_data = &adev; | ||
85 | |||
86 | ret = led_classdev_register(NULL, &hpled_led); | ||
87 | return ret; | ||
88 | } | ||
89 | |||
90 | static int hpled_remove(struct acpi_device *device, int type) | ||
91 | { | ||
92 | if (!device) | ||
93 | return -EINVAL; | ||
94 | |||
95 | led_classdev_unregister(&hpled_led); | ||
96 | return 0; | ||
97 | } | ||
98 | |||
99 | |||
100 | |||
101 | static struct acpi_driver leds_hp_driver = { | ||
102 | .name = DRIVER_NAME, | ||
103 | .class = ACPI_MDPS_CLASS, | ||
104 | .ids = hpled_device_ids, | ||
105 | .ops = { | ||
106 | .add = hpled_add, | ||
107 | .remove = hpled_remove, | ||
108 | } | ||
109 | }; | ||
110 | |||
111 | static int __init hpled_init_module(void) | ||
112 | { | ||
113 | int ret; | ||
114 | |||
115 | if (acpi_disabled) | ||
116 | return -ENODEV; | ||
117 | |||
118 | ret = acpi_bus_register_driver(&leds_hp_driver); | ||
119 | if (ret < 0) | ||
120 | return ret; | ||
121 | |||
122 | printk(KERN_INFO DRIVER_NAME " driver loaded.\n"); | ||
123 | |||
124 | return 0; | ||
125 | } | ||
126 | |||
127 | static void __exit hpled_exit_module(void) | ||
128 | { | ||
129 | acpi_bus_unregister_driver(&leds_hp_driver); | ||
130 | } | ||
131 | |||
132 | MODULE_DESCRIPTION("Driver for HP disk protection LED"); | ||
133 | MODULE_AUTHOR("Pavel Machek <pavel@suse.cz>"); | ||
134 | MODULE_LICENSE("GPL"); | ||
135 | |||
136 | module_init(hpled_init_module); | ||
137 | module_exit(hpled_exit_module); | ||
diff --git a/drivers/message/fusion/lsi/mpi.h b/drivers/message/fusion/lsi/mpi.h index 10b6ef758725..11c0f461320e 100644 --- a/drivers/message/fusion/lsi/mpi.h +++ b/drivers/message/fusion/lsi/mpi.h | |||
@@ -6,7 +6,7 @@ | |||
6 | * Title: MPI Message independent structures and definitions | 6 | * Title: MPI Message independent structures and definitions |
7 | * Creation Date: July 27, 2000 | 7 | * Creation Date: July 27, 2000 |
8 | * | 8 | * |
9 | * mpi.h Version: 01.05.13 | 9 | * mpi.h Version: 01.05.16 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -79,6 +79,9 @@ | |||
79 | * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT. | 79 | * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT. |
80 | * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT. | 80 | * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT. |
81 | * 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT. | 81 | * 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT. |
82 | * 08-07-07 01.05.14 Bumped MPI_HEADER_VERSION_UNIT. | ||
83 | * 01-15-08 01.05.15 Bumped MPI_HEADER_VERSION_UNIT. | ||
84 | * 03-28-08 01.05.16 Bumped MPI_HEADER_VERSION_UNIT. | ||
82 | * -------------------------------------------------------------------------- | 85 | * -------------------------------------------------------------------------- |
83 | */ | 86 | */ |
84 | 87 | ||
@@ -109,7 +112,7 @@ | |||
109 | /* Note: The major versions of 0xe0 through 0xff are reserved */ | 112 | /* Note: The major versions of 0xe0 through 0xff are reserved */ |
110 | 113 | ||
111 | /* versioning for this MPI header set */ | 114 | /* versioning for this MPI header set */ |
112 | #define MPI_HEADER_VERSION_UNIT (0x10) | 115 | #define MPI_HEADER_VERSION_UNIT (0x13) |
113 | #define MPI_HEADER_VERSION_DEV (0x00) | 116 | #define MPI_HEADER_VERSION_DEV (0x00) |
114 | #define MPI_HEADER_VERSION_UNIT_MASK (0xFF00) | 117 | #define MPI_HEADER_VERSION_UNIT_MASK (0xFF00) |
115 | #define MPI_HEADER_VERSION_UNIT_SHIFT (8) | 118 | #define MPI_HEADER_VERSION_UNIT_SHIFT (8) |
diff --git a/drivers/message/fusion/lsi/mpi_cnfg.h b/drivers/message/fusion/lsi/mpi_cnfg.h index b2db3330c591..013c7d881948 100644 --- a/drivers/message/fusion/lsi/mpi_cnfg.h +++ b/drivers/message/fusion/lsi/mpi_cnfg.h | |||
@@ -6,7 +6,7 @@ | |||
6 | * Title: MPI Config message, structures, and Pages | 6 | * Title: MPI Config message, structures, and Pages |
7 | * Creation Date: July 27, 2000 | 7 | * Creation Date: July 27, 2000 |
8 | * | 8 | * |
9 | * mpi_cnfg.h Version: 01.05.15 | 9 | * mpi_cnfg.h Version: 01.05.18 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -308,6 +308,20 @@ | |||
308 | * Expander Page 0 Flags field. | 308 | * Expander Page 0 Flags field. |
309 | * Fixed define for | 309 | * Fixed define for |
310 | * MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED. | 310 | * MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED. |
311 | * 08-07-07 01.05.16 Added MPI_IOCPAGE6_CAP_FLAGS_MULTIPORT_DRIVE_SUPPORT | ||
312 | * define. | ||
313 | * Added BIOS Page 4 structure. | ||
314 | * Added MPI_RAID_PHYS_DISK1_PATH_MAX define for RAID | ||
315 | * Physcial Disk Page 1. | ||
316 | * 01-15-07 01.05.17 Added additional bit defines for ExtFlags field of | ||
317 | * Manufacturing Page 4. | ||
318 | * Added Solid State Drives Supported bit to IOC Page 6 | ||
319 | * Capabilities Flags. | ||
320 | * Added new value for AccessStatus field of SAS Device | ||
321 | * Page 0 (_SATA_NEEDS_INITIALIZATION). | ||
322 | * 03-28-08 01.05.18 Defined new bits in Manufacturing Page 4 ExtFlags field | ||
323 | * to control coercion size and the mixing of SAS and SATA | ||
324 | * SSD drives. | ||
311 | * -------------------------------------------------------------------------- | 325 | * -------------------------------------------------------------------------- |
312 | */ | 326 | */ |
313 | 327 | ||
@@ -686,6 +700,14 @@ typedef struct _CONFIG_PAGE_MANUFACTURING_4 | |||
686 | #define MPI_MANPAGE4_IR_NO_MIX_SAS_SATA (0x01) | 700 | #define MPI_MANPAGE4_IR_NO_MIX_SAS_SATA (0x01) |
687 | 701 | ||
688 | /* defines for the ExtFlags field */ | 702 | /* defines for the ExtFlags field */ |
703 | #define MPI_MANPAGE4_EXTFLAGS_MASK_COERCION_SIZE (0x0180) | ||
704 | #define MPI_MANPAGE4_EXTFLAGS_SHIFT_COERCION_SIZE (7) | ||
705 | #define MPI_MANPAGE4_EXTFLAGS_1GB_COERCION_SIZE (0) | ||
706 | #define MPI_MANPAGE4_EXTFLAGS_128MB_COERCION_SIZE (1) | ||
707 | |||
708 | #define MPI_MANPAGE4_EXTFLAGS_NO_MIX_SSD_SAS_SATA (0x0040) | ||
709 | #define MPI_MANPAGE4_EXTFLAGS_MIX_SSD_AND_NON_SSD (0x0020) | ||
710 | #define MPI_MANPAGE4_EXTFLAGS_DUAL_PORT_SUPPORT (0x0010) | ||
689 | #define MPI_MANPAGE4_EXTFLAGS_HIDE_NON_IR_METADATA (0x0008) | 711 | #define MPI_MANPAGE4_EXTFLAGS_HIDE_NON_IR_METADATA (0x0008) |
690 | #define MPI_MANPAGE4_EXTFLAGS_SAS_CACHE_DISABLE (0x0004) | 712 | #define MPI_MANPAGE4_EXTFLAGS_SAS_CACHE_DISABLE (0x0004) |
691 | #define MPI_MANPAGE4_EXTFLAGS_SATA_CACHE_DISABLE (0x0002) | 713 | #define MPI_MANPAGE4_EXTFLAGS_SATA_CACHE_DISABLE (0x0002) |
@@ -1159,6 +1181,8 @@ typedef struct _CONFIG_PAGE_IOC_6 | |||
1159 | 1181 | ||
1160 | /* IOC Page 6 Capabilities Flags */ | 1182 | /* IOC Page 6 Capabilities Flags */ |
1161 | 1183 | ||
1184 | #define MPI_IOCPAGE6_CAP_FLAGS_SSD_SUPPORT (0x00000020) | ||
1185 | #define MPI_IOCPAGE6_CAP_FLAGS_MULTIPORT_DRIVE_SUPPORT (0x00000010) | ||
1162 | #define MPI_IOCPAGE6_CAP_FLAGS_DISABLE_SMART_POLLING (0x00000008) | 1186 | #define MPI_IOCPAGE6_CAP_FLAGS_DISABLE_SMART_POLLING (0x00000008) |
1163 | 1187 | ||
1164 | #define MPI_IOCPAGE6_CAP_FLAGS_MASK_METADATA_SIZE (0x00000006) | 1188 | #define MPI_IOCPAGE6_CAP_FLAGS_MASK_METADATA_SIZE (0x00000006) |
@@ -1428,6 +1452,15 @@ typedef struct _CONFIG_PAGE_BIOS_2 | |||
1428 | #define MPI_BIOSPAGE2_FORM_SAS_WWN (0x05) | 1452 | #define MPI_BIOSPAGE2_FORM_SAS_WWN (0x05) |
1429 | #define MPI_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06) | 1453 | #define MPI_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06) |
1430 | 1454 | ||
1455 | typedef struct _CONFIG_PAGE_BIOS_4 | ||
1456 | { | ||
1457 | CONFIG_PAGE_HEADER Header; /* 00h */ | ||
1458 | U64 ReassignmentBaseWWID; /* 04h */ | ||
1459 | } CONFIG_PAGE_BIOS_4, MPI_POINTER PTR_CONFIG_PAGE_BIOS_4, | ||
1460 | BIOSPage4_t, MPI_POINTER pBIOSPage4_t; | ||
1461 | |||
1462 | #define MPI_BIOSPAGE4_PAGEVERSION (0x00) | ||
1463 | |||
1431 | 1464 | ||
1432 | /**************************************************************************** | 1465 | /**************************************************************************** |
1433 | * SCSI Port Config Pages | 1466 | * SCSI Port Config Pages |
@@ -2419,6 +2452,15 @@ typedef struct _RAID_PHYS_DISK1_PATH | |||
2419 | #define MPI_RAID_PHYSDISK1_FLAG_BROKEN (0x0002) | 2452 | #define MPI_RAID_PHYSDISK1_FLAG_BROKEN (0x0002) |
2420 | #define MPI_RAID_PHYSDISK1_FLAG_INVALID (0x0001) | 2453 | #define MPI_RAID_PHYSDISK1_FLAG_INVALID (0x0001) |
2421 | 2454 | ||
2455 | |||
2456 | /* | ||
2457 | * Host code (drivers, BIOS, utilities, etc.) should leave this define set to | ||
2458 | * one and check Header.PageLength or NumPhysDiskPaths at runtime. | ||
2459 | */ | ||
2460 | #ifndef MPI_RAID_PHYS_DISK1_PATH_MAX | ||
2461 | #define MPI_RAID_PHYS_DISK1_PATH_MAX (1) | ||
2462 | #endif | ||
2463 | |||
2422 | typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1 | 2464 | typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1 |
2423 | { | 2465 | { |
2424 | CONFIG_PAGE_HEADER Header; /* 00h */ | 2466 | CONFIG_PAGE_HEADER Header; /* 00h */ |
@@ -2426,7 +2468,7 @@ typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1 | |||
2426 | U8 PhysDiskNum; /* 05h */ | 2468 | U8 PhysDiskNum; /* 05h */ |
2427 | U16 Reserved2; /* 06h */ | 2469 | U16 Reserved2; /* 06h */ |
2428 | U32 Reserved1; /* 08h */ | 2470 | U32 Reserved1; /* 08h */ |
2429 | RAID_PHYS_DISK1_PATH Path[1]; /* 0Ch */ | 2471 | RAID_PHYS_DISK1_PATH Path[MPI_RAID_PHYS_DISK1_PATH_MAX];/* 0Ch */ |
2430 | } CONFIG_PAGE_RAID_PHYS_DISK_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_1, | 2472 | } CONFIG_PAGE_RAID_PHYS_DISK_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_1, |
2431 | RaidPhysDiskPage1_t, MPI_POINTER pRaidPhysDiskPage1_t; | 2473 | RaidPhysDiskPage1_t, MPI_POINTER pRaidPhysDiskPage1_t; |
2432 | 2474 | ||
@@ -2844,6 +2886,7 @@ typedef struct _CONFIG_PAGE_SAS_DEVICE_0 | |||
2844 | #define MPI_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01) | 2886 | #define MPI_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01) |
2845 | #define MPI_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02) | 2887 | #define MPI_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02) |
2846 | #define MPI_SAS_DEVICE0_ASTATUS_SATA_AFFILIATION_CONFLICT (0x03) | 2888 | #define MPI_SAS_DEVICE0_ASTATUS_SATA_AFFILIATION_CONFLICT (0x03) |
2889 | #define MPI_SAS_DEVICE0_ASTATUS_SATA_NEEDS_INITIALIZATION (0x04) | ||
2847 | /* specific values for SATA Init failures */ | 2890 | /* specific values for SATA Init failures */ |
2848 | #define MPI_SAS_DEVICE0_ASTATUS_SIF_UNKNOWN (0x10) | 2891 | #define MPI_SAS_DEVICE0_ASTATUS_SIF_UNKNOWN (0x10) |
2849 | #define MPI_SAS_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x11) | 2892 | #define MPI_SAS_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x11) |
diff --git a/drivers/message/fusion/lsi/mpi_fc.h b/drivers/message/fusion/lsi/mpi_fc.h index 627acfbb8623..7d663ce76f8c 100644 --- a/drivers/message/fusion/lsi/mpi_fc.h +++ b/drivers/message/fusion/lsi/mpi_fc.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2004 LSI Corporation. | 2 | * Copyright (c) 2000-2008 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_fc.h | 5 | * Name: mpi_fc.h |
diff --git a/drivers/message/fusion/lsi/mpi_history.txt b/drivers/message/fusion/lsi/mpi_history.txt index 3f15fcfe4a2e..693e4b511354 100644 --- a/drivers/message/fusion/lsi/mpi_history.txt +++ b/drivers/message/fusion/lsi/mpi_history.txt | |||
@@ -3,28 +3,28 @@ | |||
3 | MPI Header File Change History | 3 | MPI Header File Change History |
4 | ============================== | 4 | ============================== |
5 | 5 | ||
6 | Copyright (c) 2000-2007 LSI Corporation. | 6 | Copyright (c) 2000-2008 LSI Corporation. |
7 | 7 | ||
8 | --------------------------------------- | 8 | --------------------------------------- |
9 | Header Set Release Version: 01.05.16 | 9 | Header Set Release Version: 01.05.19 |
10 | Header Set Release Date: 05-24-07 | 10 | Header Set Release Date: 03-28-08 |
11 | --------------------------------------- | 11 | --------------------------------------- |
12 | 12 | ||
13 | Filename Current version Prior version | 13 | Filename Current version Prior version |
14 | ---------- --------------- ------------- | 14 | ---------- --------------- ------------- |
15 | mpi.h 01.05.13 01.05.12 | 15 | mpi.h 01.05.16 01.05.15 |
16 | mpi_ioc.h 01.05.14 01.05.13 | 16 | mpi_ioc.h 01.05.16 01.05.15 |
17 | mpi_cnfg.h 01.05.15 01.05.14 | 17 | mpi_cnfg.h 01.05.18 01.05.17 |
18 | mpi_init.h 01.05.09 01.05.09 | 18 | mpi_init.h 01.05.09 01.05.09 |
19 | mpi_targ.h 01.05.06 01.05.06 | 19 | mpi_targ.h 01.05.06 01.05.06 |
20 | mpi_fc.h 01.05.01 01.05.01 | 20 | mpi_fc.h 01.05.01 01.05.01 |
21 | mpi_lan.h 01.05.01 01.05.01 | 21 | mpi_lan.h 01.05.01 01.05.01 |
22 | mpi_raid.h 01.05.03 01.05.03 | 22 | mpi_raid.h 01.05.05 01.05.05 |
23 | mpi_tool.h 01.05.03 01.05.03 | 23 | mpi_tool.h 01.05.03 01.05.03 |
24 | mpi_inb.h 01.05.01 01.05.01 | 24 | mpi_inb.h 01.05.01 01.05.01 |
25 | mpi_sas.h 01.05.04 01.05.04 | 25 | mpi_sas.h 01.05.05 01.05.05 |
26 | mpi_type.h 01.05.02 01.05.02 | 26 | mpi_type.h 01.05.02 01.05.02 |
27 | mpi_history.txt 01.05.14 01.05.14 | 27 | mpi_history.txt 01.05.19 01.05.18 |
28 | 28 | ||
29 | 29 | ||
30 | * Date Version Description | 30 | * Date Version Description |
@@ -96,6 +96,9 @@ mpi.h | |||
96 | * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT. | 96 | * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT. |
97 | * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT. | 97 | * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT. |
98 | * 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT. | 98 | * 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT. |
99 | * 08-07-07 01.05.14 Bumped MPI_HEADER_VERSION_UNIT. | ||
100 | * 01-15-08 01.05.15 Bumped MPI_HEADER_VERSION_UNIT. | ||
101 | * 03-28-08 01.05.16 Bumped MPI_HEADER_VERSION_UNIT. | ||
99 | * -------------------------------------------------------------------------- | 102 | * -------------------------------------------------------------------------- |
100 | 103 | ||
101 | mpi_ioc.h | 104 | mpi_ioc.h |
@@ -127,7 +130,7 @@ mpi_ioc.h | |||
127 | * 08-08-01 01.02.01 Original release for v1.2 work. | 130 | * 08-08-01 01.02.01 Original release for v1.2 work. |
128 | * New format for FWVersion and ProductId in | 131 | * New format for FWVersion and ProductId in |
129 | * MSG_IOC_FACTS_REPLY and MPI_FW_HEADER. | 132 | * MSG_IOC_FACTS_REPLY and MPI_FW_HEADER. |
130 | * 08-31-01 01.02.02 Added event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and | 133 | * 08-31-01 01.02.02 Addded event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and |
131 | * related structure and defines. | 134 | * related structure and defines. |
132 | * Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED. | 135 | * Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED. |
133 | * Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE. | 136 | * Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE. |
@@ -187,7 +190,7 @@ mpi_ioc.h | |||
187 | * 10-11-06 01.05.12 Added MPI_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED. | 190 | * 10-11-06 01.05.12 Added MPI_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED. |
188 | * Added MaxInitiators field to PortFacts reply. | 191 | * Added MaxInitiators field to PortFacts reply. |
189 | * Added SAS Device Status Change ReasonCode for | 192 | * Added SAS Device Status Change ReasonCode for |
190 | * asynchronous notification. | 193 | * asynchronous notificaiton. |
191 | * Added MPI_EVENT_SAS_EXPANDER_STATUS_CHANGE and event | 194 | * Added MPI_EVENT_SAS_EXPANDER_STATUS_CHANGE and event |
192 | * data structure. | 195 | * data structure. |
193 | * Added new ImageType values for FWDownload and FWUpload | 196 | * Added new ImageType values for FWDownload and FWUpload |
@@ -199,6 +202,16 @@ mpi_ioc.h | |||
199 | * added _MULTI_PORT_DOMAIN. | 202 | * added _MULTI_PORT_DOMAIN. |
200 | * 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request. | 203 | * 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request. |
201 | * Added Common Boot Block type to FWUpload Request. | 204 | * Added Common Boot Block type to FWUpload Request. |
205 | * 08-07-07 01.05.15 Added MPI_EVENT_SAS_INIT_RC_REMOVED define. | ||
206 | * Added MPI_EVENT_IR2_RC_DUAL_PORT_ADDED and | ||
207 | * MPI_EVENT_IR2_RC_DUAL_PORT_REMOVED for IR2 event data. | ||
208 | * Added SASAddress field to SAS Initiator Device Table | ||
209 | * Overflow event data structure. | ||
210 | * 03-28-08 01.05.16 Added two new ReasonCode values to SAS Device Status | ||
211 | * Change Event data to indicate completion of internally | ||
212 | * generated task management. | ||
213 | * Added MPI_EVENT_DSCVRY_ERR_DS_SATA_INIT_FAILURE define. | ||
214 | * Added MPI_EVENT_SAS_INIT_RC_INACCESSIBLE define. | ||
202 | * -------------------------------------------------------------------------- | 215 | * -------------------------------------------------------------------------- |
203 | 216 | ||
204 | mpi_cnfg.h | 217 | mpi_cnfg.h |
@@ -213,7 +226,7 @@ mpi_cnfg.h | |||
213 | * Added _RESPONSE_ID_MASK definition to SCSI_PORT_1 | 226 | * Added _RESPONSE_ID_MASK definition to SCSI_PORT_1 |
214 | * page and updated the page version. | 227 | * page and updated the page version. |
215 | * Added Information field and _INFO_PARAMS_NEGOTIATED | 228 | * Added Information field and _INFO_PARAMS_NEGOTIATED |
216 | * definition to SCSI_DEVICE_0 page. | 229 | * definitionto SCSI_DEVICE_0 page. |
217 | * 06-22-00 01.00.03 Removed batch controls from LAN_0 page and updated the | 230 | * 06-22-00 01.00.03 Removed batch controls from LAN_0 page and updated the |
218 | * page version. | 231 | * page version. |
219 | * Added BucketsRemaining to LAN_1 page, redefined the | 232 | * Added BucketsRemaining to LAN_1 page, redefined the |
@@ -496,6 +509,20 @@ mpi_cnfg.h | |||
496 | * Expander Page 0 Flags field. | 509 | * Expander Page 0 Flags field. |
497 | * Fixed define for | 510 | * Fixed define for |
498 | * MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED. | 511 | * MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED. |
512 | * 08-07-07 01.05.16 Added MPI_IOCPAGE6_CAP_FLAGS_MULTIPORT_DRIVE_SUPPORT | ||
513 | * define. | ||
514 | * Added BIOS Page 4 structure. | ||
515 | * Added MPI_RAID_PHYS_DISK1_PATH_MAX define for RAID | ||
516 | * Physcial Disk Page 1. | ||
517 | * 01-15-07 01.05.17 Added additional bit defines for ExtFlags field of | ||
518 | * Manufacturing Page 4. | ||
519 | * Added Solid State Drives Supported bit to IOC Page 6 | ||
520 | * Capabilities Flags. | ||
521 | * Added new value for AccessStatus field of SAS Device | ||
522 | * Page 0 (_SATA_NEEDS_INITIALIZATION). | ||
523 | * 03-28-08 01.05.18 Defined new bits in Manufacturing Page 4 ExtFlags field | ||
524 | * to control coercion size and the mixing of SAS and SATA | ||
525 | * SSD drives. | ||
499 | * -------------------------------------------------------------------------- | 526 | * -------------------------------------------------------------------------- |
500 | 527 | ||
501 | mpi_init.h | 528 | mpi_init.h |
@@ -661,6 +688,9 @@ mpi_raid.h | |||
661 | * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE. | 688 | * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE. |
662 | * 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and | 689 | * 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and |
663 | * associated defines. | 690 | * associated defines. |
691 | * 08-07-07 01.05.04 Added Disable Full Rebuild bit to the ActionDataWord | ||
692 | * for the RAID Action MPI_RAID_ACTION_DISABLE_VOLUME. | ||
693 | * 01-15-08 01.05.05 Added define for MPI_RAID_ACTION_SET_VOLUME_NAME. | ||
664 | * -------------------------------------------------------------------------- | 694 | * -------------------------------------------------------------------------- |
665 | 695 | ||
666 | mpi_tool.h | 696 | mpi_tool.h |
@@ -694,6 +724,10 @@ mpi_sas.h | |||
694 | * reply. | 724 | * reply. |
695 | * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO | 725 | * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO |
696 | * Unit Control request. | 726 | * Unit Control request. |
727 | * 01-15-08 01.05.05 Added support for MPI_SAS_OP_SET_IOC_PARAMETER, | ||
728 | * including adding IOCParameter and IOCParameter value | ||
729 | * fields to SAS IO Unit Control Request. | ||
730 | * Added MPI_SAS_DEVICE_INFO_PRODUCT_SPECIFIC define. | ||
697 | * -------------------------------------------------------------------------- | 731 | * -------------------------------------------------------------------------- |
698 | 732 | ||
699 | mpi_type.h | 733 | mpi_type.h |
@@ -709,20 +743,20 @@ mpi_type.h | |||
709 | 743 | ||
710 | mpi_history.txt Parts list history | 744 | mpi_history.txt Parts list history |
711 | 745 | ||
712 | Filename 01.05.15 01.05.15 | 746 | Filename 01.05.19 01.05.18 01.05.17 01.05.16 01.05.15 |
713 | ---------- -------- -------- | 747 | ---------- -------- -------- -------- -------- -------- |
714 | mpi.h 01.05.12 01.05.13 | 748 | mpi.h 01.05.16 01.05.15 01.05.14 01.05.13 01.05.12 |
715 | mpi_ioc.h 01.05.13 01.05.14 | 749 | mpi_ioc.h 01.05.16 01.05.15 01.05.15 01.05.14 01.05.13 |
716 | mpi_cnfg.h 01.05.14 01.05.15 | 750 | mpi_cnfg.h 01.05.18 01.05.17 01.05.16 01.05.15 01.05.14 |
717 | mpi_init.h 01.05.09 01.05.09 | 751 | mpi_init.h 01.05.09 01.05.09 01.05.09 01.05.09 01.05.09 |
718 | mpi_targ.h 01.05.06 01.05.06 | 752 | mpi_targ.h 01.05.06 01.05.06 01.05.06 01.05.06 01.05.06 |
719 | mpi_fc.h 01.05.01 01.05.01 | 753 | mpi_fc.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 |
720 | mpi_lan.h 01.05.01 01.05.01 | 754 | mpi_lan.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 |
721 | mpi_raid.h 01.05.03 01.05.03 | 755 | mpi_raid.h 01.05.05 01.05.05 01.05.04 01.05.03 01.05.03 |
722 | mpi_tool.h 01.05.03 01.05.03 | 756 | mpi_tool.h 01.05.03 01.05.03 01.05.03 01.05.03 01.05.03 |
723 | mpi_inb.h 01.05.01 01.05.01 | 757 | mpi_inb.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 |
724 | mpi_sas.h 01.05.04 01.05.04 | 758 | mpi_sas.h 01.05.05 01.05.05 01.05.04 01.05.04 01.05.04 |
725 | mpi_type.h 01.05.02 01.05.02 | 759 | mpi_type.h 01.05.02 01.05.02 01.05.02 01.05.02 01.05.02 |
726 | 760 | ||
727 | Filename 01.05.14 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09 | 761 | Filename 01.05.14 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09 |
728 | ---------- -------- -------- -------- -------- -------- -------- | 762 | ---------- -------- -------- -------- -------- -------- -------- |
diff --git a/drivers/message/fusion/lsi/mpi_init.h b/drivers/message/fusion/lsi/mpi_init.h index a9e3693601a7..4295d062caa7 100644 --- a/drivers/message/fusion/lsi/mpi_init.h +++ b/drivers/message/fusion/lsi/mpi_init.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2007 LSI Corporation. | 2 | * Copyright (c) 2000-2008 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_init.h | 5 | * Name: mpi_init.h |
diff --git a/drivers/message/fusion/lsi/mpi_ioc.h b/drivers/message/fusion/lsi/mpi_ioc.h index 5cbb6bd048e1..8faa4fab7b89 100644 --- a/drivers/message/fusion/lsi/mpi_ioc.h +++ b/drivers/message/fusion/lsi/mpi_ioc.h | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2007 LSI Corporation. | 2 | * Copyright (c) 2000-2008 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_ioc.h | 5 | * Name: mpi_ioc.h |
6 | * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages | 6 | * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages |
7 | * Creation Date: August 11, 2000 | 7 | * Creation Date: August 11, 2000 |
8 | * | 8 | * |
9 | * mpi_ioc.h Version: 01.05.14 | 9 | * mpi_ioc.h Version: 01.05.16 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -113,6 +113,16 @@ | |||
113 | * added _MULTI_PORT_DOMAIN. | 113 | * added _MULTI_PORT_DOMAIN. |
114 | * 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request. | 114 | * 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request. |
115 | * Added Common Boot Block type to FWUpload Request. | 115 | * Added Common Boot Block type to FWUpload Request. |
116 | * 08-07-07 01.05.15 Added MPI_EVENT_SAS_INIT_RC_REMOVED define. | ||
117 | * Added MPI_EVENT_IR2_RC_DUAL_PORT_ADDED and | ||
118 | * MPI_EVENT_IR2_RC_DUAL_PORT_REMOVED for IR2 event data. | ||
119 | * Added SASAddress field to SAS Initiator Device Table | ||
120 | * Overflow event data structure. | ||
121 | * 03-28-08 01.05.16 Added two new ReasonCode values to SAS Device Status | ||
122 | * Change Event data to indicate completion of internally | ||
123 | * generated task management. | ||
124 | * Added MPI_EVENT_DSCVRY_ERR_DS_SATA_INIT_FAILURE define. | ||
125 | * Added MPI_EVENT_SAS_INIT_RC_INACCESSIBLE define. | ||
116 | * -------------------------------------------------------------------------- | 126 | * -------------------------------------------------------------------------- |
117 | */ | 127 | */ |
118 | 128 | ||
@@ -612,6 +622,8 @@ typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE | |||
612 | #define MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B) | 622 | #define MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B) |
613 | #define MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C) | 623 | #define MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C) |
614 | #define MPI_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION (0x0D) | 624 | #define MPI_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION (0x0D) |
625 | #define MPI_EVENT_SAS_DEV_STAT_RC_CMPL_INTERNAL_DEV_RESET (0x0E) | ||
626 | #define MPI_EVENT_SAS_DEV_STAT_RC_CMPL_TASK_ABORT_INTERNAL (0x0F) | ||
615 | 627 | ||
616 | 628 | ||
617 | /* SCSI Event data for Queue Full event */ | 629 | /* SCSI Event data for Queue Full event */ |
@@ -708,6 +720,8 @@ typedef struct _MPI_EVENT_DATA_IR2 | |||
708 | #define MPI_EVENT_IR2_RC_PD_REMOVED (0x05) | 720 | #define MPI_EVENT_IR2_RC_PD_REMOVED (0x05) |
709 | #define MPI_EVENT_IR2_RC_FOREIGN_CFG_DETECTED (0x06) | 721 | #define MPI_EVENT_IR2_RC_FOREIGN_CFG_DETECTED (0x06) |
710 | #define MPI_EVENT_IR2_RC_REBUILD_MEDIUM_ERROR (0x07) | 722 | #define MPI_EVENT_IR2_RC_REBUILD_MEDIUM_ERROR (0x07) |
723 | #define MPI_EVENT_IR2_RC_DUAL_PORT_ADDED (0x08) | ||
724 | #define MPI_EVENT_IR2_RC_DUAL_PORT_REMOVED (0x09) | ||
711 | 725 | ||
712 | /* defines for logical disk states */ | 726 | /* defines for logical disk states */ |
713 | #define MPI_LD_STATE_OPTIMAL (0x00) | 727 | #define MPI_LD_STATE_OPTIMAL (0x00) |
@@ -867,6 +881,7 @@ typedef struct _EVENT_DATA_DISCOVERY_ERROR | |||
867 | #define MPI_EVENT_DSCVRY_ERR_DS_UNSUPPORTED_DEVICE (0x00000800) | 881 | #define MPI_EVENT_DSCVRY_ERR_DS_UNSUPPORTED_DEVICE (0x00000800) |
868 | #define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000) | 882 | #define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000) |
869 | #define MPI_EVENT_DSCVRY_ERR_DS_MULTI_PORT_DOMAIN (0x00002000) | 883 | #define MPI_EVENT_DSCVRY_ERR_DS_MULTI_PORT_DOMAIN (0x00002000) |
884 | #define MPI_EVENT_DSCVRY_ERR_DS_SATA_INIT_FAILURE (0x00004000) | ||
870 | 885 | ||
871 | /* SAS SMP Error Event data */ | 886 | /* SAS SMP Error Event data */ |
872 | 887 | ||
@@ -902,6 +917,8 @@ typedef struct _EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE | |||
902 | 917 | ||
903 | /* defines for the ReasonCode field of the SAS Initiator Device Status Change event */ | 918 | /* defines for the ReasonCode field of the SAS Initiator Device Status Change event */ |
904 | #define MPI_EVENT_SAS_INIT_RC_ADDED (0x01) | 919 | #define MPI_EVENT_SAS_INIT_RC_ADDED (0x01) |
920 | #define MPI_EVENT_SAS_INIT_RC_REMOVED (0x02) | ||
921 | #define MPI_EVENT_SAS_INIT_RC_INACCESSIBLE (0x03) | ||
905 | 922 | ||
906 | /* SAS Initiator Device Table Overflow Event data */ | 923 | /* SAS Initiator Device Table Overflow Event data */ |
907 | 924 | ||
@@ -910,6 +927,7 @@ typedef struct _EVENT_DATA_SAS_INIT_TABLE_OVERFLOW | |||
910 | U8 MaxInit; /* 00h */ | 927 | U8 MaxInit; /* 00h */ |
911 | U8 CurrentInit; /* 01h */ | 928 | U8 CurrentInit; /* 01h */ |
912 | U16 Reserved1; /* 02h */ | 929 | U16 Reserved1; /* 02h */ |
930 | U64 SASAddress; /* 04h */ | ||
913 | } EVENT_DATA_SAS_INIT_TABLE_OVERFLOW, | 931 | } EVENT_DATA_SAS_INIT_TABLE_OVERFLOW, |
914 | MPI_POINTER PTR_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW, | 932 | MPI_POINTER PTR_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW, |
915 | MpiEventDataSasInitTableOverflow_t, | 933 | MpiEventDataSasInitTableOverflow_t, |
diff --git a/drivers/message/fusion/lsi/mpi_lan.h b/drivers/message/fusion/lsi/mpi_lan.h index 03253b53b785..f41fcb69b359 100644 --- a/drivers/message/fusion/lsi/mpi_lan.h +++ b/drivers/message/fusion/lsi/mpi_lan.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2004 LSI Corporation. | 2 | * Copyright (c) 2000-2008 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_lan.h | 5 | * Name: mpi_lan.h |
diff --git a/drivers/message/fusion/lsi/mpi_log_fc.h b/drivers/message/fusion/lsi/mpi_log_fc.h index e4dafcefeecd..face6e7acc72 100644 --- a/drivers/message/fusion/lsi/mpi_log_fc.h +++ b/drivers/message/fusion/lsi/mpi_log_fc.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2001 LSI Corporation. All rights reserved. | 2 | * Copyright (c) 2000-2008 LSI Corporation. All rights reserved. |
3 | * | 3 | * |
4 | * NAME: fc_log.h | 4 | * NAME: fc_log.h |
5 | * SUMMARY: MPI IocLogInfo definitions for the SYMFC9xx chips | 5 | * SUMMARY: MPI IocLogInfo definitions for the SYMFC9xx chips |
diff --git a/drivers/message/fusion/lsi/mpi_log_sas.h b/drivers/message/fusion/lsi/mpi_log_sas.h index af9da03e95e5..691620dbedd2 100644 --- a/drivers/message/fusion/lsi/mpi_log_sas.h +++ b/drivers/message/fusion/lsi/mpi_log_sas.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | * * | 2 | * * |
3 | * Copyright 2003 LSI Corporation. All rights reserved. * | 3 | * Copyright (c) 2000-2008 LSI Corporation. All rights reserved. * |
4 | * * | 4 | * * |
5 | * Description * | 5 | * Description * |
6 | * ------------ * | 6 | * ------------ * |
@@ -73,6 +73,8 @@ | |||
73 | #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO (0x00070004) | 73 | #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO (0x00070004) |
74 | #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO_REQ (0x00070005) | 74 | #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO_REQ (0x00070005) |
75 | 75 | ||
76 | #define IOP_LOGINFO_CODE_LOG_TIMESTAMP_EVENT (0x00080000) | ||
77 | |||
76 | /****************************************************************************/ | 78 | /****************************************************************************/ |
77 | /* PL LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = PL */ | 79 | /* PL LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = PL */ |
78 | /****************************************************************************/ | 80 | /****************************************************************************/ |
@@ -92,7 +94,7 @@ | |||
92 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_OPEN_TIMEOUT_EXP (0x0000000C) | 94 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_OPEN_TIMEOUT_EXP (0x0000000C) |
93 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_UNUSED_0D (0x0000000D) | 95 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_UNUSED_0D (0x0000000D) |
94 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_DVTBLE_ACCSS_FAIL (0x0000000E) | 96 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_DVTBLE_ACCSS_FAIL (0x0000000E) |
95 | #define PL_LOGINFO_SUB CODE_OPEN_FAIL_BAD_DEST (0x00000011) | 97 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_BAD_DEST (0x00000011) |
96 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RATE_NOT_SUPP (0x00000012) | 98 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RATE_NOT_SUPP (0x00000012) |
97 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_PROT_NOT_SUPP (0x00000013) | 99 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_PROT_NOT_SUPP (0x00000013) |
98 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RESERVED_ABANDON0 (0x00000014) | 100 | #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RESERVED_ABANDON0 (0x00000014) |
@@ -159,10 +161,11 @@ | |||
159 | 161 | ||
160 | #define PL_LOGINFO_SUB_CODE_INVALID_SGL (0x00000200) | 162 | #define PL_LOGINFO_SUB_CODE_INVALID_SGL (0x00000200) |
161 | #define PL_LOGINFO_SUB_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH (0x00000300) | 163 | #define PL_LOGINFO_SUB_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH (0x00000300) |
162 | #define PL_LOGINFO_SUB_CODE_FRAME_XFER_ERROR (0x00000400) /* Bits 0-3 encode Transport Status Register (offset 0x08) */ | 164 | #define PL_LOGINFO_SUB_CODE_FRAME_XFER_ERROR (0x00000400) |
163 | /* Bit 0 is Status Bit 0: FrameXferErr */ | 165 | /* Bits 0-3 encode Transport Status Register (offset 0x08) */ |
164 | /* Bit 1 & 2 are Status Bits 16 and 17: FrameXmitErrStatus */ | 166 | /* Bit 0 is Status Bit 0: FrameXferErr */ |
165 | /* Bit 3 is Status Bit 18 WriteDataLengthGTDataLengthErr */ | 167 | /* Bit 1 & 2 are Status Bits 16 and 17: FrameXmitErrStatus */ |
168 | /* Bit 3 is Status Bit 18 WriteDataLenghtGTDataLengthErr */ | ||
166 | 169 | ||
167 | #define PL_LOGINFO_SUB_CODE_TX_FM_CONNECTED_LOW (0x00000500) | 170 | #define PL_LOGINFO_SUB_CODE_TX_FM_CONNECTED_LOW (0x00000500) |
168 | #define PL_LOGINFO_SUB_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET (0x00000600) | 171 | #define PL_LOGINFO_SUB_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET (0x00000600) |
@@ -177,6 +180,11 @@ | |||
177 | #define PL_LOGINFO_SUB_CODE_DISCOVERY_REMOTE_SEP_RESET (0x00000E01) | 180 | #define PL_LOGINFO_SUB_CODE_DISCOVERY_REMOTE_SEP_RESET (0x00000E01) |
178 | #define PL_LOGINFO_SUB_CODE_SECOND_OPEN (0x00000F00) | 181 | #define PL_LOGINFO_SUB_CODE_SECOND_OPEN (0x00000F00) |
179 | #define PL_LOGINFO_SUB_CODE_DSCVRY_SATA_INIT_TIMEOUT (0x00001000) | 182 | #define PL_LOGINFO_SUB_CODE_DSCVRY_SATA_INIT_TIMEOUT (0x00001000) |
183 | #define PL_LOGINFO_SUB_CODE_BREAK_ON_SATA_CONNECTION (0x00002000) | ||
184 | /* not currently used in mainline */ | ||
185 | #define PL_LOGINFO_SUB_CODE_BREAK_ON_STUCK_LINK (0x00003000) | ||
186 | #define PL_LOGINFO_SUB_CODE_BREAK_ON_STUCK_LINK_AIP (0x00004000) | ||
187 | #define PL_LOGINFO_SUB_CODE_BREAK_ON_INCOMPLETE_BREAK_RCVD (0x00005000) | ||
180 | 188 | ||
181 | #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_FAILURE (0x00200000) /* Can't get SMP Frame */ | 189 | #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_FAILURE (0x00200000) /* Can't get SMP Frame */ |
182 | #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_READ_ERROR (0x00200010) /* Error occured on SMP Read */ | 190 | #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_READ_ERROR (0x00200010) /* Error occured on SMP Read */ |
@@ -243,6 +251,8 @@ | |||
243 | #define IR_LOGINFO_VOLUME_ACTIVATE_VOLUME_FAILED (0x00010014) | 251 | #define IR_LOGINFO_VOLUME_ACTIVATE_VOLUME_FAILED (0x00010014) |
244 | /* Activation failed trying to import the volume */ | 252 | /* Activation failed trying to import the volume */ |
245 | #define IR_LOGINFO_VOLUME_ACTIVATING_IMPORT_VOLUME_FAILED (0x00010015) | 253 | #define IR_LOGINFO_VOLUME_ACTIVATING_IMPORT_VOLUME_FAILED (0x00010015) |
254 | /* Activation failed trying to import the volume */ | ||
255 | #define IR_LOGINFO_VOLUME_ACTIVATING_TOO_MANY_PHYS_DISKS (0x00010016) | ||
246 | 256 | ||
247 | /* Phys Disk failed, too many phys disks */ | 257 | /* Phys Disk failed, too many phys disks */ |
248 | #define IR_LOGINFO_PHYSDISK_CREATE_TOO_MANY_DISKS (0x00010020) | 258 | #define IR_LOGINFO_PHYSDISK_CREATE_TOO_MANY_DISKS (0x00010020) |
@@ -285,6 +295,21 @@ | |||
285 | /* Compatibility Error : IME size limited to < 2TB */ | 295 | /* Compatibility Error : IME size limited to < 2TB */ |
286 | #define IR_LOGINFO_COMPAT_ERROR_IME_VOL_NOT_CURRENTLY_SUPPORTED (0x0001003D) | 296 | #define IR_LOGINFO_COMPAT_ERROR_IME_VOL_NOT_CURRENTLY_SUPPORTED (0x0001003D) |
287 | 297 | ||
298 | /* Device Firmware Update: DFU can only be started once */ | ||
299 | #define IR_LOGINFO_DEV_FW_UPDATE_ERR_DFU_IN_PROGRESS (0x00010050) | ||
300 | /* Device Firmware Update: Volume must be Optimal/Active/non-Quiesced */ | ||
301 | #define IR_LOGINFO_DEV_FW_UPDATE_ERR_DEVICE_IN_INVALID_STATE (0x00010051) | ||
302 | /* Device Firmware Update: DFU Timeout cannot be zero */ | ||
303 | #define IR_LOGINFO_DEV_FW_UPDATE_ERR_INVALID_TIMEOUT (0x00010052) | ||
304 | /* Device Firmware Update: CREATE TIMER FAILED */ | ||
305 | #define IR_LOGINFO_DEV_FW_UPDATE_ERR_NO_TIMERS (0x00010053) | ||
306 | /* Device Firmware Update: Failed to read SAS_IO_UNIT_PG_1 */ | ||
307 | #define IR_LOGINFO_DEV_FW_UPDATE_ERR_READING_CFG_PAGE (0x00010054) | ||
308 | /* Device Firmware Update: Invalid SAS_IO_UNIT_PG_1 value(s) */ | ||
309 | #define IR_LOGINFO_DEV_FW_UPDATE_ERR_PORT_IO_TIMEOUTS_REQUIRED (0x00010055) | ||
310 | /* Device Firmware Update: Unable to allocate memory for page */ | ||
311 | #define IR_LOGINFO_DEV_FW_UPDATE_ERR_ALLOC_CFG_PAGE (0x00010056) | ||
312 | |||
288 | 313 | ||
289 | /****************************************************************************/ | 314 | /****************************************************************************/ |
290 | /* Defines for convenience */ | 315 | /* Defines for convenience */ |
diff --git a/drivers/message/fusion/lsi/mpi_raid.h b/drivers/message/fusion/lsi/mpi_raid.h index 2856108421d7..add60cc85be1 100644 --- a/drivers/message/fusion/lsi/mpi_raid.h +++ b/drivers/message/fusion/lsi/mpi_raid.h | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2001-2007 LSI Corporation. | 2 | * Copyright (c) 2001-2008 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_raid.h | 5 | * Name: mpi_raid.h |
6 | * Title: MPI RAID message and structures | 6 | * Title: MPI RAID message and structures |
7 | * Creation Date: February 27, 2001 | 7 | * Creation Date: February 27, 2001 |
8 | * | 8 | * |
9 | * mpi_raid.h Version: 01.05.03 | 9 | * mpi_raid.h Version: 01.05.05 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -34,6 +34,9 @@ | |||
34 | * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE. | 34 | * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE. |
35 | * 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and | 35 | * 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and |
36 | * associated defines. | 36 | * associated defines. |
37 | * 08-07-07 01.05.04 Added Disable Full Rebuild bit to the ActionDataWord | ||
38 | * for the RAID Action MPI_RAID_ACTION_DISABLE_VOLUME. | ||
39 | * 01-15-08 01.05.05 Added define for MPI_RAID_ACTION_SET_VOLUME_NAME. | ||
37 | * -------------------------------------------------------------------------- | 40 | * -------------------------------------------------------------------------- |
38 | */ | 41 | */ |
39 | 42 | ||
@@ -93,6 +96,7 @@ typedef struct _MSG_RAID_ACTION | |||
93 | #define MPI_RAID_ACTION_SET_RESYNC_RATE (0x13) | 96 | #define MPI_RAID_ACTION_SET_RESYNC_RATE (0x13) |
94 | #define MPI_RAID_ACTION_SET_DATA_SCRUB_RATE (0x14) | 97 | #define MPI_RAID_ACTION_SET_DATA_SCRUB_RATE (0x14) |
95 | #define MPI_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15) | 98 | #define MPI_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15) |
99 | #define MPI_RAID_ACTION_SET_VOLUME_NAME (0x16) | ||
96 | 100 | ||
97 | /* ActionDataWord defines for use with MPI_RAID_ACTION_CREATE_VOLUME action */ | 101 | /* ActionDataWord defines for use with MPI_RAID_ACTION_CREATE_VOLUME action */ |
98 | #define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC (0x00000001) | 102 | #define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC (0x00000001) |
@@ -105,6 +109,9 @@ typedef struct _MSG_RAID_ACTION | |||
105 | #define MPI_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000) | 109 | #define MPI_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000) |
106 | #define MPI_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000002) | 110 | #define MPI_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000002) |
107 | 111 | ||
112 | /* ActionDataWord defines for use with MPI_RAID_ACTION_DISABLE_VOLUME action */ | ||
113 | #define MPI_RAID_ACTION_ADATA_DISABLE_FULL_REBUILD (0x00000001) | ||
114 | |||
108 | /* ActionDataWord defines for use with MPI_RAID_ACTION_ACTIVATE_VOLUME action */ | 115 | /* ActionDataWord defines for use with MPI_RAID_ACTION_ACTIVATE_VOLUME action */ |
109 | #define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001) | 116 | #define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001) |
110 | 117 | ||
diff --git a/drivers/message/fusion/lsi/mpi_sas.h b/drivers/message/fusion/lsi/mpi_sas.h index 33fca83cefc2..ab410036bbfc 100644 --- a/drivers/message/fusion/lsi/mpi_sas.h +++ b/drivers/message/fusion/lsi/mpi_sas.h | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2004-2006 LSI Corporation. | 2 | * Copyright (c) 2004-2008 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_sas.h | 5 | * Name: mpi_sas.h |
6 | * Title: MPI Serial Attached SCSI structures and definitions | 6 | * Title: MPI Serial Attached SCSI structures and definitions |
7 | * Creation Date: August 19, 2004 | 7 | * Creation Date: August 19, 2004 |
8 | * | 8 | * |
9 | * mpi_sas.h Version: 01.05.04 | 9 | * mpi_sas.h Version: 01.05.05 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -23,6 +23,10 @@ | |||
23 | * reply. | 23 | * reply. |
24 | * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO | 24 | * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO |
25 | * Unit Control request. | 25 | * Unit Control request. |
26 | * 01-15-08 01.05.05 Added support for MPI_SAS_OP_SET_IOC_PARAMETER, | ||
27 | * including adding IOCParameter and IOCParameter value | ||
28 | * fields to SAS IO Unit Control Request. | ||
29 | * Added MPI_SAS_DEVICE_INFO_PRODUCT_SPECIFIC define. | ||
26 | * -------------------------------------------------------------------------- | 30 | * -------------------------------------------------------------------------- |
27 | */ | 31 | */ |
28 | 32 | ||
@@ -60,6 +64,8 @@ | |||
60 | * Values for the SAS DeviceInfo field used in SAS Device Status Change Event | 64 | * Values for the SAS DeviceInfo field used in SAS Device Status Change Event |
61 | * data and SAS IO Unit Configuration pages. | 65 | * data and SAS IO Unit Configuration pages. |
62 | */ | 66 | */ |
67 | #define MPI_SAS_DEVICE_INFO_PRODUCT_SPECIFIC (0xF0000000) | ||
68 | |||
63 | #define MPI_SAS_DEVICE_INFO_SEP (0x00004000) | 69 | #define MPI_SAS_DEVICE_INFO_SEP (0x00004000) |
64 | #define MPI_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000) | 70 | #define MPI_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000) |
65 | #define MPI_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000) | 71 | #define MPI_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000) |
@@ -216,7 +222,7 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST | |||
216 | U8 ChainOffset; /* 02h */ | 222 | U8 ChainOffset; /* 02h */ |
217 | U8 Function; /* 03h */ | 223 | U8 Function; /* 03h */ |
218 | U16 DevHandle; /* 04h */ | 224 | U16 DevHandle; /* 04h */ |
219 | U8 Reserved3; /* 06h */ | 225 | U8 IOCParameter; /* 06h */ |
220 | U8 MsgFlags; /* 07h */ | 226 | U8 MsgFlags; /* 07h */ |
221 | U32 MsgContext; /* 08h */ | 227 | U32 MsgContext; /* 08h */ |
222 | U8 TargetID; /* 0Ch */ | 228 | U8 TargetID; /* 0Ch */ |
@@ -225,7 +231,7 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST | |||
225 | U8 PrimFlags; /* 0Fh */ | 231 | U8 PrimFlags; /* 0Fh */ |
226 | U32 Primitive; /* 10h */ | 232 | U32 Primitive; /* 10h */ |
227 | U64 SASAddress; /* 14h */ | 233 | U64 SASAddress; /* 14h */ |
228 | U32 Reserved4; /* 1Ch */ | 234 | U32 IOCParameterValue; /* 1Ch */ |
229 | } MSG_SAS_IOUNIT_CONTROL_REQUEST, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REQUEST, | 235 | } MSG_SAS_IOUNIT_CONTROL_REQUEST, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REQUEST, |
230 | SasIoUnitControlRequest_t, MPI_POINTER pSasIoUnitControlRequest_t; | 236 | SasIoUnitControlRequest_t, MPI_POINTER pSasIoUnitControlRequest_t; |
231 | 237 | ||
@@ -241,6 +247,8 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST | |||
241 | #define MPI_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C) | 247 | #define MPI_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C) |
242 | #define MPI_SAS_OP_TRANSMIT_REMOVE_DEVICE (0x0D) /* obsolete name */ | 248 | #define MPI_SAS_OP_TRANSMIT_REMOVE_DEVICE (0x0D) /* obsolete name */ |
243 | #define MPI_SAS_OP_REMOVE_DEVICE (0x0D) | 249 | #define MPI_SAS_OP_REMOVE_DEVICE (0x0D) |
250 | #define MPI_SAS_OP_SET_IOC_PARAMETER (0x0E) | ||
251 | #define MPI_SAS_OP_PRODUCT_SPECIFIC_MIN (0x80) | ||
244 | 252 | ||
245 | /* values for the PrimFlags field */ | 253 | /* values for the PrimFlags field */ |
246 | #define MPI_SAS_PRIMFLAGS_SINGLE (0x08) | 254 | #define MPI_SAS_PRIMFLAGS_SINGLE (0x08) |
@@ -256,7 +264,7 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REPLY | |||
256 | U8 MsgLength; /* 02h */ | 264 | U8 MsgLength; /* 02h */ |
257 | U8 Function; /* 03h */ | 265 | U8 Function; /* 03h */ |
258 | U16 DevHandle; /* 04h */ | 266 | U16 DevHandle; /* 04h */ |
259 | U8 Reserved3; /* 06h */ | 267 | U8 IOCParameter; /* 06h */ |
260 | U8 MsgFlags; /* 07h */ | 268 | U8 MsgFlags; /* 07h */ |
261 | U32 MsgContext; /* 08h */ | 269 | U32 MsgContext; /* 08h */ |
262 | U16 Reserved4; /* 0Ch */ | 270 | U16 Reserved4; /* 0Ch */ |
diff --git a/drivers/message/fusion/lsi/mpi_targ.h b/drivers/message/fusion/lsi/mpi_targ.h index ff8c37d3fdcb..c3dea7f6909d 100644 --- a/drivers/message/fusion/lsi/mpi_targ.h +++ b/drivers/message/fusion/lsi/mpi_targ.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2004 LSI Corporation. | 2 | * Copyright (c) 2000-2008 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_targ.h | 5 | * Name: mpi_targ.h |
diff --git a/drivers/message/fusion/lsi/mpi_tool.h b/drivers/message/fusion/lsi/mpi_tool.h index 8834ae6ce0f2..53cd715aa7e4 100644 --- a/drivers/message/fusion/lsi/mpi_tool.h +++ b/drivers/message/fusion/lsi/mpi_tool.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2001-2005 LSI Corporation. | 2 | * Copyright (c) 2001-2008 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_tool.h | 5 | * Name: mpi_tool.h |
diff --git a/drivers/message/fusion/lsi/mpi_type.h b/drivers/message/fusion/lsi/mpi_type.h index 08dad9c1e446..888b26dbc413 100644 --- a/drivers/message/fusion/lsi/mpi_type.h +++ b/drivers/message/fusion/lsi/mpi_type.h | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2004 LSI Corporation. | 2 | * Copyright (c) 2000-2008 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_type.h | 5 | * Name: mpi_type.h |
6 | * Title: MPI Basic type definitions | 6 | * Title: MPI Basic type definitions |
7 | * Creation Date: June 6, 2000 | 7 | * Creation Date: June 6, 2000 |
8 | * | 8 | * |
9 | * mpi_type.h Version: 01.05.01 | 9 | * mpi_type.h Version: 01.05.02 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c index c4e8b9aa3827..96ac88317b8e 100644 --- a/drivers/message/fusion/mptbase.c +++ b/drivers/message/fusion/mptbase.c | |||
@@ -79,9 +79,22 @@ MODULE_VERSION(my_VERSION); | |||
79 | /* | 79 | /* |
80 | * cmd line parameters | 80 | * cmd line parameters |
81 | */ | 81 | */ |
82 | static int mpt_msi_enable = -1; | 82 | |
83 | module_param(mpt_msi_enable, int, 0); | 83 | static int mpt_msi_enable_spi; |
84 | MODULE_PARM_DESC(mpt_msi_enable, " MSI Support Enable (default=0)"); | 84 | module_param(mpt_msi_enable_spi, int, 0); |
85 | MODULE_PARM_DESC(mpt_msi_enable_spi, " Enable MSI Support for SPI \ | ||
86 | controllers (default=0)"); | ||
87 | |||
88 | static int mpt_msi_enable_fc; | ||
89 | module_param(mpt_msi_enable_fc, int, 0); | ||
90 | MODULE_PARM_DESC(mpt_msi_enable_fc, " Enable MSI Support for FC \ | ||
91 | controllers (default=0)"); | ||
92 | |||
93 | static int mpt_msi_enable_sas; | ||
94 | module_param(mpt_msi_enable_sas, int, 1); | ||
95 | MODULE_PARM_DESC(mpt_msi_enable_sas, " Enable MSI Support for SAS \ | ||
96 | controllers (default=1)"); | ||
97 | |||
85 | 98 | ||
86 | static int mpt_channel_mapping; | 99 | static int mpt_channel_mapping; |
87 | module_param(mpt_channel_mapping, int, 0); | 100 | module_param(mpt_channel_mapping, int, 0); |
@@ -91,7 +104,17 @@ static int mpt_debug_level; | |||
91 | static int mpt_set_debug_level(const char *val, struct kernel_param *kp); | 104 | static int mpt_set_debug_level(const char *val, struct kernel_param *kp); |
92 | module_param_call(mpt_debug_level, mpt_set_debug_level, param_get_int, | 105 | module_param_call(mpt_debug_level, mpt_set_debug_level, param_get_int, |
93 | &mpt_debug_level, 0600); | 106 | &mpt_debug_level, 0600); |
94 | MODULE_PARM_DESC(mpt_debug_level, " debug level - refer to mptdebug.h - (default=0)"); | 107 | MODULE_PARM_DESC(mpt_debug_level, " debug level - refer to mptdebug.h \ |
108 | - (default=0)"); | ||
109 | |||
110 | int mpt_fwfault_debug; | ||
111 | EXPORT_SYMBOL(mpt_fwfault_debug); | ||
112 | module_param_call(mpt_fwfault_debug, param_set_int, param_get_int, | ||
113 | &mpt_fwfault_debug, 0600); | ||
114 | MODULE_PARM_DESC(mpt_fwfault_debug, "Enable detection of Firmware fault" | ||
115 | " and halt Firmware on fault - (default=0)"); | ||
116 | |||
117 | |||
95 | 118 | ||
96 | #ifdef MFCNT | 119 | #ifdef MFCNT |
97 | static int mfcounter = 0; | 120 | static int mfcounter = 0; |
@@ -1751,16 +1774,25 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1751 | ioc->bus_type = SAS; | 1774 | ioc->bus_type = SAS; |
1752 | } | 1775 | } |
1753 | 1776 | ||
1754 | if (mpt_msi_enable == -1) { | ||
1755 | /* Enable on SAS, disable on FC and SPI */ | ||
1756 | if (ioc->bus_type == SAS) | ||
1757 | ioc->msi_enable = 1; | ||
1758 | else | ||
1759 | ioc->msi_enable = 0; | ||
1760 | } else | ||
1761 | /* follow flag: 0 - disable; 1 - enable */ | ||
1762 | ioc->msi_enable = mpt_msi_enable; | ||
1763 | 1777 | ||
1778 | switch (ioc->bus_type) { | ||
1779 | |||
1780 | case SAS: | ||
1781 | ioc->msi_enable = mpt_msi_enable_sas; | ||
1782 | break; | ||
1783 | |||
1784 | case SPI: | ||
1785 | ioc->msi_enable = mpt_msi_enable_spi; | ||
1786 | break; | ||
1787 | |||
1788 | case FC: | ||
1789 | ioc->msi_enable = mpt_msi_enable_fc; | ||
1790 | break; | ||
1791 | |||
1792 | default: | ||
1793 | ioc->msi_enable = 0; | ||
1794 | break; | ||
1795 | } | ||
1764 | if (ioc->errata_flag_1064) | 1796 | if (ioc->errata_flag_1064) |
1765 | pci_disable_io_access(pdev); | 1797 | pci_disable_io_access(pdev); |
1766 | 1798 | ||
@@ -6313,6 +6345,33 @@ mpt_print_ioc_summary(MPT_ADAPTER *ioc, char *buffer, int *size, int len, int sh | |||
6313 | *size = y; | 6345 | *size = y; |
6314 | } | 6346 | } |
6315 | 6347 | ||
6348 | |||
6349 | /** | ||
6350 | * mpt_halt_firmware - Halts the firmware if it is operational and panic | ||
6351 | * the kernel | ||
6352 | * @ioc: Pointer to MPT_ADAPTER structure | ||
6353 | * | ||
6354 | **/ | ||
6355 | void | ||
6356 | mpt_halt_firmware(MPT_ADAPTER *ioc) | ||
6357 | { | ||
6358 | u32 ioc_raw_state; | ||
6359 | |||
6360 | ioc_raw_state = mpt_GetIocState(ioc, 0); | ||
6361 | |||
6362 | if ((ioc_raw_state & MPI_IOC_STATE_MASK) == MPI_IOC_STATE_FAULT) { | ||
6363 | printk(MYIOC_s_ERR_FMT "IOC is in FAULT state (%04xh)!!!\n", | ||
6364 | ioc->name, ioc_raw_state & MPI_DOORBELL_DATA_MASK); | ||
6365 | panic("%s: IOC Fault (%04xh)!!!\n", ioc->name, | ||
6366 | ioc_raw_state & MPI_DOORBELL_DATA_MASK); | ||
6367 | } else { | ||
6368 | CHIPREG_WRITE32(&ioc->chip->Doorbell, 0xC0FFEE00); | ||
6369 | panic("%s: Firmware is halted due to command timeout\n", | ||
6370 | ioc->name); | ||
6371 | } | ||
6372 | } | ||
6373 | EXPORT_SYMBOL(mpt_halt_firmware); | ||
6374 | |||
6316 | /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ | 6375 | /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ |
6317 | /* | 6376 | /* |
6318 | * Reset Handling | 6377 | * Reset Handling |
@@ -6345,6 +6404,8 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag) | |||
6345 | printk(MYIOC_s_INFO_FMT "HardResetHandler Entered!\n", ioc->name); | 6404 | printk(MYIOC_s_INFO_FMT "HardResetHandler Entered!\n", ioc->name); |
6346 | printk("MF count 0x%x !\n", ioc->mfcnt); | 6405 | printk("MF count 0x%x !\n", ioc->mfcnt); |
6347 | #endif | 6406 | #endif |
6407 | if (mpt_fwfault_debug) | ||
6408 | mpt_halt_firmware(ioc); | ||
6348 | 6409 | ||
6349 | /* Reset the adapter. Prevent more than 1 call to | 6410 | /* Reset the adapter. Prevent more than 1 call to |
6350 | * mpt_do_ioc_recovery at any instant in time. | 6411 | * mpt_do_ioc_recovery at any instant in time. |
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h index dff048cfa101..b3e981d2a506 100644 --- a/drivers/message/fusion/mptbase.h +++ b/drivers/message/fusion/mptbase.h | |||
@@ -922,11 +922,14 @@ extern void mpt_free_fw_memory(MPT_ADAPTER *ioc); | |||
922 | extern int mpt_findImVolumes(MPT_ADAPTER *ioc); | 922 | extern int mpt_findImVolumes(MPT_ADAPTER *ioc); |
923 | extern int mptbase_sas_persist_operation(MPT_ADAPTER *ioc, u8 persist_opcode); | 923 | extern int mptbase_sas_persist_operation(MPT_ADAPTER *ioc, u8 persist_opcode); |
924 | extern int mpt_raid_phys_disk_pg0(MPT_ADAPTER *ioc, u8 phys_disk_num, pRaidPhysDiskPage0_t phys_disk); | 924 | extern int mpt_raid_phys_disk_pg0(MPT_ADAPTER *ioc, u8 phys_disk_num, pRaidPhysDiskPage0_t phys_disk); |
925 | extern void mpt_halt_firmware(MPT_ADAPTER *ioc); | ||
926 | |||
925 | 927 | ||
926 | /* | 928 | /* |
927 | * Public data decl's... | 929 | * Public data decl's... |
928 | */ | 930 | */ |
929 | extern struct list_head ioc_list; | 931 | extern struct list_head ioc_list; |
932 | extern int mpt_fwfault_debug; | ||
930 | 933 | ||
931 | /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ | 934 | /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ |
932 | #endif /* } __KERNEL__ */ | 935 | #endif /* } __KERNEL__ */ |
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c index ee090413e598..e62c6bc4ad33 100644 --- a/drivers/message/fusion/mptscsih.c +++ b/drivers/message/fusion/mptscsih.c | |||
@@ -1846,6 +1846,9 @@ mptscsih_abort(struct scsi_cmnd * SCpnt) | |||
1846 | if (hd->timeouts < -1) | 1846 | if (hd->timeouts < -1) |
1847 | hd->timeouts++; | 1847 | hd->timeouts++; |
1848 | 1848 | ||
1849 | if (mpt_fwfault_debug) | ||
1850 | mpt_halt_firmware(ioc); | ||
1851 | |||
1849 | /* Most important! Set TaskMsgContext to SCpnt's MsgContext! | 1852 | /* Most important! Set TaskMsgContext to SCpnt's MsgContext! |
1850 | * (the IO to be ABORT'd) | 1853 | * (the IO to be ABORT'd) |
1851 | * | 1854 | * |
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 419c378bd24b..56073199ceba 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig | |||
@@ -87,14 +87,6 @@ config PHANTOM | |||
87 | If you choose to build module, its name will be phantom. If unsure, | 87 | If you choose to build module, its name will be phantom. If unsure, |
88 | say N here. | 88 | say N here. |
89 | 89 | ||
90 | config EEPROM_93CX6 | ||
91 | tristate "EEPROM 93CX6 support" | ||
92 | ---help--- | ||
93 | This is a driver for the EEPROM chipsets 93c46 and 93c66. | ||
94 | The driver supports both read as well as write commands. | ||
95 | |||
96 | If unsure, say N. | ||
97 | |||
98 | config SGI_IOC4 | 90 | config SGI_IOC4 |
99 | tristate "SGI IOC4 Base IO support" | 91 | tristate "SGI IOC4 Base IO support" |
100 | depends on PCI | 92 | depends on PCI |
@@ -231,5 +223,6 @@ config DELL_LAPTOP | |||
231 | laptops. | 223 | laptops. |
232 | 224 | ||
233 | source "drivers/misc/c2port/Kconfig" | 225 | source "drivers/misc/c2port/Kconfig" |
226 | source "drivers/misc/eeprom/Kconfig" | ||
234 | 227 | ||
235 | endif # MISC_DEVICES | 228 | endif # MISC_DEVICES |
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index 9cf8ae6e4b39..bc1199830554 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile | |||
@@ -10,14 +10,13 @@ obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib.o | |||
10 | obj-$(CONFIG_ICS932S401) += ics932s401.o | 10 | obj-$(CONFIG_ICS932S401) += ics932s401.o |
11 | obj-$(CONFIG_LKDTM) += lkdtm.o | 11 | obj-$(CONFIG_LKDTM) += lkdtm.o |
12 | obj-$(CONFIG_TIFM_CORE) += tifm_core.o | 12 | obj-$(CONFIG_TIFM_CORE) += tifm_core.o |
13 | obj-$(CONFIG_DELL_LAPTOP) += dell-laptop.o | ||
14 | obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o | 13 | obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o |
15 | obj-$(CONFIG_PHANTOM) += phantom.o | 14 | obj-$(CONFIG_PHANTOM) += phantom.o |
16 | obj-$(CONFIG_SGI_IOC4) += ioc4.o | 15 | obj-$(CONFIG_SGI_IOC4) += ioc4.o |
17 | obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o | ||
18 | obj-$(CONFIG_ENCLOSURE_SERVICES) += enclosure.o | 16 | obj-$(CONFIG_ENCLOSURE_SERVICES) += enclosure.o |
19 | obj-$(CONFIG_KGDB_TESTS) += kgdbts.o | 17 | obj-$(CONFIG_KGDB_TESTS) += kgdbts.o |
20 | obj-$(CONFIG_SGI_XP) += sgi-xp/ | 18 | obj-$(CONFIG_SGI_XP) += sgi-xp/ |
21 | obj-$(CONFIG_SGI_GRU) += sgi-gru/ | 19 | obj-$(CONFIG_SGI_GRU) += sgi-gru/ |
22 | obj-$(CONFIG_HP_ILO) += hpilo.o | 20 | obj-$(CONFIG_HP_ILO) += hpilo.o |
23 | obj-$(CONFIG_C2PORT) += c2port/ | 21 | obj-$(CONFIG_C2PORT) += c2port/ |
22 | obj-y += eeprom/ | ||
diff --git a/drivers/misc/eeprom/Kconfig b/drivers/misc/eeprom/Kconfig new file mode 100644 index 000000000000..c76df8cda5ef --- /dev/null +++ b/drivers/misc/eeprom/Kconfig | |||
@@ -0,0 +1,59 @@ | |||
1 | menu "EEPROM support" | ||
2 | |||
3 | config EEPROM_AT24 | ||
4 | tristate "I2C EEPROMs from most vendors" | ||
5 | depends on I2C && SYSFS && EXPERIMENTAL | ||
6 | help | ||
7 | Enable this driver to get read/write support to most I2C EEPROMs, | ||
8 | after you configure the driver to know about each EEPROM on | ||
9 | your target board. Use these generic chip names, instead of | ||
10 | vendor-specific ones like at24c64 or 24lc02: | ||
11 | |||
12 | 24c00, 24c01, 24c02, spd (readonly 24c02), 24c04, 24c08, | ||
13 | 24c16, 24c32, 24c64, 24c128, 24c256, 24c512, 24c1024 | ||
14 | |||
15 | Unless you like data loss puzzles, always be sure that any chip | ||
16 | you configure as a 24c32 (32 kbit) or larger is NOT really a | ||
17 | 24c16 (16 kbit) or smaller, and vice versa. Marking the chip | ||
18 | as read-only won't help recover from this. Also, if your chip | ||
19 | has any software write-protect mechanism you may want to review the | ||
20 | code to make sure this driver won't turn it on by accident. | ||
21 | |||
22 | If you use this with an SMBus adapter instead of an I2C adapter, | ||
23 | full functionality is not available. Only smaller devices are | ||
24 | supported (24c16 and below, max 4 kByte). | ||
25 | |||
26 | This driver can also be built as a module. If so, the module | ||
27 | will be called at24. | ||
28 | |||
29 | config EEPROM_AT25 | ||
30 | tristate "SPI EEPROMs from most vendors" | ||
31 | depends on SPI && SYSFS | ||
32 | help | ||
33 | Enable this driver to get read/write support to most SPI EEPROMs, | ||
34 | after you configure the board init code to know about each eeprom | ||
35 | on your target board. | ||
36 | |||
37 | This driver can also be built as a module. If so, the module | ||
38 | will be called at25. | ||
39 | |||
40 | config EEPROM_LEGACY | ||
41 | tristate "Old I2C EEPROM reader" | ||
42 | depends on I2C && SYSFS | ||
43 | help | ||
44 | If you say yes here you get read-only access to the EEPROM data | ||
45 | available on modern memory DIMMs and Sony Vaio laptops via I2C. Such | ||
46 | EEPROMs could theoretically be available on other devices as well. | ||
47 | |||
48 | This driver can also be built as a module. If so, the module | ||
49 | will be called eeprom. | ||
50 | |||
51 | config EEPROM_93CX6 | ||
52 | tristate "EEPROM 93CX6 support" | ||
53 | help | ||
54 | This is a driver for the EEPROM chipsets 93c46 and 93c66. | ||
55 | The driver supports both read as well as write commands. | ||
56 | |||
57 | If unsure, say N. | ||
58 | |||
59 | endmenu | ||
diff --git a/drivers/misc/eeprom/Makefile b/drivers/misc/eeprom/Makefile new file mode 100644 index 000000000000..539dd8f88128 --- /dev/null +++ b/drivers/misc/eeprom/Makefile | |||
@@ -0,0 +1,4 @@ | |||
1 | obj-$(CONFIG_EEPROM_AT24) += at24.o | ||
2 | obj-$(CONFIG_EEPROM_AT25) += at25.o | ||
3 | obj-$(CONFIG_EEPROM_LEGACY) += eeprom.o | ||
4 | obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o | ||
diff --git a/drivers/i2c/chips/at24.c b/drivers/misc/eeprom/at24.c index d4775528abc6..d4775528abc6 100644 --- a/drivers/i2c/chips/at24.c +++ b/drivers/misc/eeprom/at24.c | |||
diff --git a/drivers/spi/at25.c b/drivers/misc/eeprom/at25.c index 290dbe99647a..290dbe99647a 100644 --- a/drivers/spi/at25.c +++ b/drivers/misc/eeprom/at25.c | |||
diff --git a/drivers/i2c/chips/eeprom.c b/drivers/misc/eeprom/eeprom.c index 2c27193aeaa0..2c27193aeaa0 100644 --- a/drivers/i2c/chips/eeprom.c +++ b/drivers/misc/eeprom/eeprom.c | |||
diff --git a/drivers/misc/eeprom_93cx6.c b/drivers/misc/eeprom/eeprom_93cx6.c index 15b1780025c8..15b1780025c8 100644 --- a/drivers/misc/eeprom_93cx6.c +++ b/drivers/misc/eeprom/eeprom_93cx6.c | |||
diff --git a/drivers/misc/sgi-xp/xpc_sn2.c b/drivers/misc/sgi-xp/xpc_sn2.c index 73b7fb8de47a..82fb9958f22f 100644 --- a/drivers/misc/sgi-xp/xpc_sn2.c +++ b/drivers/misc/sgi-xp/xpc_sn2.c | |||
@@ -899,7 +899,7 @@ xpc_update_partition_info_sn2(struct xpc_partition *part, u8 remote_rp_version, | |||
899 | dev_dbg(xpc_part, " remote_vars_pa = 0x%016lx\n", | 899 | dev_dbg(xpc_part, " remote_vars_pa = 0x%016lx\n", |
900 | part_sn2->remote_vars_pa); | 900 | part_sn2->remote_vars_pa); |
901 | 901 | ||
902 | part->last_heartbeat = remote_vars->heartbeat; | 902 | part->last_heartbeat = remote_vars->heartbeat - 1; |
903 | dev_dbg(xpc_part, " last_heartbeat = 0x%016lx\n", | 903 | dev_dbg(xpc_part, " last_heartbeat = 0x%016lx\n", |
904 | part->last_heartbeat); | 904 | part->last_heartbeat); |
905 | 905 | ||
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig index dfa585f7feaf..0efa390978bd 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig | |||
@@ -76,6 +76,16 @@ config MMC_OMAP | |||
76 | 76 | ||
77 | If unsure, say N. | 77 | If unsure, say N. |
78 | 78 | ||
79 | config MMC_OMAP_HS | ||
80 | tristate "TI OMAP High Speed Multimedia Card Interface support" | ||
81 | depends on ARCH_OMAP2430 || ARCH_OMAP3 | ||
82 | help | ||
83 | This selects the TI OMAP High Speed Multimedia card Interface. | ||
84 | If you have an OMAP2430 or OMAP3 board with a Multimedia Card slot, | ||
85 | say Y or M here. | ||
86 | |||
87 | If unsure, say N. | ||
88 | |||
79 | config MMC_WBSD | 89 | config MMC_WBSD |
80 | tristate "Winbond W83L51xD SD/MMC Card Interface support" | 90 | tristate "Winbond W83L51xD SD/MMC Card Interface support" |
81 | depends on ISA_DMA_API | 91 | depends on ISA_DMA_API |
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile index f4853288bbb1..98cab84829b8 100644 --- a/drivers/mmc/host/Makefile +++ b/drivers/mmc/host/Makefile | |||
@@ -15,6 +15,7 @@ obj-$(CONFIG_MMC_RICOH_MMC) += ricoh_mmc.o | |||
15 | obj-$(CONFIG_MMC_WBSD) += wbsd.o | 15 | obj-$(CONFIG_MMC_WBSD) += wbsd.o |
16 | obj-$(CONFIG_MMC_AU1X) += au1xmmc.o | 16 | obj-$(CONFIG_MMC_AU1X) += au1xmmc.o |
17 | obj-$(CONFIG_MMC_OMAP) += omap.o | 17 | obj-$(CONFIG_MMC_OMAP) += omap.o |
18 | obj-$(CONFIG_MMC_OMAP_HS) += omap_hsmmc.o | ||
18 | obj-$(CONFIG_MMC_AT91) += at91_mci.o | 19 | obj-$(CONFIG_MMC_AT91) += at91_mci.o |
19 | obj-$(CONFIG_MMC_ATMELMCI) += atmel-mci.o | 20 | obj-$(CONFIG_MMC_ATMELMCI) += atmel-mci.o |
20 | obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o | 21 | obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o |
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c new file mode 100644 index 000000000000..db37490f67ec --- /dev/null +++ b/drivers/mmc/host/omap_hsmmc.c | |||
@@ -0,0 +1,1242 @@ | |||
1 | /* | ||
2 | * drivers/mmc/host/omap_hsmmc.c | ||
3 | * | ||
4 | * Driver for OMAP2430/3430 MMC controller. | ||
5 | * | ||
6 | * Copyright (C) 2007 Texas Instruments. | ||
7 | * | ||
8 | * Authors: | ||
9 | * Syed Mohammed Khasim <x0khasim@ti.com> | ||
10 | * Madhusudhan <madhu.cr@ti.com> | ||
11 | * Mohit Jalori <mjalori@ti.com> | ||
12 | * | ||
13 | * This file is licensed under the terms of the GNU General Public License | ||
14 | * version 2. This program is licensed "as is" without any warranty of any | ||
15 | * kind, whether express or implied. | ||
16 | */ | ||
17 | |||
18 | #include <linux/module.h> | ||
19 | #include <linux/init.h> | ||
20 | #include <linux/interrupt.h> | ||
21 | #include <linux/delay.h> | ||
22 | #include <linux/dma-mapping.h> | ||
23 | #include <linux/platform_device.h> | ||
24 | #include <linux/workqueue.h> | ||
25 | #include <linux/timer.h> | ||
26 | #include <linux/clk.h> | ||
27 | #include <linux/mmc/host.h> | ||
28 | #include <linux/io.h> | ||
29 | #include <linux/semaphore.h> | ||
30 | #include <mach/dma.h> | ||
31 | #include <mach/hardware.h> | ||
32 | #include <mach/board.h> | ||
33 | #include <mach/mmc.h> | ||
34 | #include <mach/cpu.h> | ||
35 | |||
36 | /* OMAP HSMMC Host Controller Registers */ | ||
37 | #define OMAP_HSMMC_SYSCONFIG 0x0010 | ||
38 | #define OMAP_HSMMC_CON 0x002C | ||
39 | #define OMAP_HSMMC_BLK 0x0104 | ||
40 | #define OMAP_HSMMC_ARG 0x0108 | ||
41 | #define OMAP_HSMMC_CMD 0x010C | ||
42 | #define OMAP_HSMMC_RSP10 0x0110 | ||
43 | #define OMAP_HSMMC_RSP32 0x0114 | ||
44 | #define OMAP_HSMMC_RSP54 0x0118 | ||
45 | #define OMAP_HSMMC_RSP76 0x011C | ||
46 | #define OMAP_HSMMC_DATA 0x0120 | ||
47 | #define OMAP_HSMMC_HCTL 0x0128 | ||
48 | #define OMAP_HSMMC_SYSCTL 0x012C | ||
49 | #define OMAP_HSMMC_STAT 0x0130 | ||
50 | #define OMAP_HSMMC_IE 0x0134 | ||
51 | #define OMAP_HSMMC_ISE 0x0138 | ||
52 | #define OMAP_HSMMC_CAPA 0x0140 | ||
53 | |||
54 | #define VS18 (1 << 26) | ||
55 | #define VS30 (1 << 25) | ||
56 | #define SDVS18 (0x5 << 9) | ||
57 | #define SDVS30 (0x6 << 9) | ||
58 | #define SDVSCLR 0xFFFFF1FF | ||
59 | #define SDVSDET 0x00000400 | ||
60 | #define AUTOIDLE 0x1 | ||
61 | #define SDBP (1 << 8) | ||
62 | #define DTO 0xe | ||
63 | #define ICE 0x1 | ||
64 | #define ICS 0x2 | ||
65 | #define CEN (1 << 2) | ||
66 | #define CLKD_MASK 0x0000FFC0 | ||
67 | #define CLKD_SHIFT 6 | ||
68 | #define DTO_MASK 0x000F0000 | ||
69 | #define DTO_SHIFT 16 | ||
70 | #define INT_EN_MASK 0x307F0033 | ||
71 | #define INIT_STREAM (1 << 1) | ||
72 | #define DP_SELECT (1 << 21) | ||
73 | #define DDIR (1 << 4) | ||
74 | #define DMA_EN 0x1 | ||
75 | #define MSBS (1 << 5) | ||
76 | #define BCE (1 << 1) | ||
77 | #define FOUR_BIT (1 << 1) | ||
78 | #define CC 0x1 | ||
79 | #define TC 0x02 | ||
80 | #define OD 0x1 | ||
81 | #define ERR (1 << 15) | ||
82 | #define CMD_TIMEOUT (1 << 16) | ||
83 | #define DATA_TIMEOUT (1 << 20) | ||
84 | #define CMD_CRC (1 << 17) | ||
85 | #define DATA_CRC (1 << 21) | ||
86 | #define CARD_ERR (1 << 28) | ||
87 | #define STAT_CLEAR 0xFFFFFFFF | ||
88 | #define INIT_STREAM_CMD 0x00000000 | ||
89 | #define DUAL_VOLT_OCR_BIT 7 | ||
90 | #define SRC (1 << 25) | ||
91 | #define SRD (1 << 26) | ||
92 | |||
93 | /* | ||
94 | * FIXME: Most likely all the data using these _DEVID defines should come | ||
95 | * from the platform_data, or implemented in controller and slot specific | ||
96 | * functions. | ||
97 | */ | ||
98 | #define OMAP_MMC1_DEVID 0 | ||
99 | #define OMAP_MMC2_DEVID 1 | ||
100 | |||
101 | #define OMAP_MMC_DATADIR_NONE 0 | ||
102 | #define OMAP_MMC_DATADIR_READ 1 | ||
103 | #define OMAP_MMC_DATADIR_WRITE 2 | ||
104 | #define MMC_TIMEOUT_MS 20 | ||
105 | #define OMAP_MMC_MASTER_CLOCK 96000000 | ||
106 | #define DRIVER_NAME "mmci-omap-hs" | ||
107 | |||
108 | /* | ||
109 | * One controller can have multiple slots, like on some omap boards using | ||
110 | * omap.c controller driver. Luckily this is not currently done on any known | ||
111 | * omap_hsmmc.c device. | ||
112 | */ | ||
113 | #define mmc_slot(host) (host->pdata->slots[host->slot_id]) | ||
114 | |||
115 | /* | ||
116 | * MMC Host controller read/write API's | ||
117 | */ | ||
118 | #define OMAP_HSMMC_READ(base, reg) \ | ||
119 | __raw_readl((base) + OMAP_HSMMC_##reg) | ||
120 | |||
121 | #define OMAP_HSMMC_WRITE(base, reg, val) \ | ||
122 | __raw_writel((val), (base) + OMAP_HSMMC_##reg) | ||
123 | |||
124 | struct mmc_omap_host { | ||
125 | struct device *dev; | ||
126 | struct mmc_host *mmc; | ||
127 | struct mmc_request *mrq; | ||
128 | struct mmc_command *cmd; | ||
129 | struct mmc_data *data; | ||
130 | struct clk *fclk; | ||
131 | struct clk *iclk; | ||
132 | struct clk *dbclk; | ||
133 | struct semaphore sem; | ||
134 | struct work_struct mmc_carddetect_work; | ||
135 | void __iomem *base; | ||
136 | resource_size_t mapbase; | ||
137 | unsigned int id; | ||
138 | unsigned int dma_len; | ||
139 | unsigned int dma_dir; | ||
140 | unsigned char bus_mode; | ||
141 | unsigned char datadir; | ||
142 | u32 *buffer; | ||
143 | u32 bytesleft; | ||
144 | int suspended; | ||
145 | int irq; | ||
146 | int carddetect; | ||
147 | int use_dma, dma_ch; | ||
148 | int initstr; | ||
149 | int slot_id; | ||
150 | int dbclk_enabled; | ||
151 | struct omap_mmc_platform_data *pdata; | ||
152 | }; | ||
153 | |||
154 | /* | ||
155 | * Stop clock to the card | ||
156 | */ | ||
157 | static void omap_mmc_stop_clock(struct mmc_omap_host *host) | ||
158 | { | ||
159 | OMAP_HSMMC_WRITE(host->base, SYSCTL, | ||
160 | OMAP_HSMMC_READ(host->base, SYSCTL) & ~CEN); | ||
161 | if ((OMAP_HSMMC_READ(host->base, SYSCTL) & CEN) != 0x0) | ||
162 | dev_dbg(mmc_dev(host->mmc), "MMC Clock is not stoped\n"); | ||
163 | } | ||
164 | |||
165 | /* | ||
166 | * Send init stream sequence to card | ||
167 | * before sending IDLE command | ||
168 | */ | ||
169 | static void send_init_stream(struct mmc_omap_host *host) | ||
170 | { | ||
171 | int reg = 0; | ||
172 | unsigned long timeout; | ||
173 | |||
174 | disable_irq(host->irq); | ||
175 | OMAP_HSMMC_WRITE(host->base, CON, | ||
176 | OMAP_HSMMC_READ(host->base, CON) | INIT_STREAM); | ||
177 | OMAP_HSMMC_WRITE(host->base, CMD, INIT_STREAM_CMD); | ||
178 | |||
179 | timeout = jiffies + msecs_to_jiffies(MMC_TIMEOUT_MS); | ||
180 | while ((reg != CC) && time_before(jiffies, timeout)) | ||
181 | reg = OMAP_HSMMC_READ(host->base, STAT) & CC; | ||
182 | |||
183 | OMAP_HSMMC_WRITE(host->base, CON, | ||
184 | OMAP_HSMMC_READ(host->base, CON) & ~INIT_STREAM); | ||
185 | enable_irq(host->irq); | ||
186 | } | ||
187 | |||
188 | static inline | ||
189 | int mmc_omap_cover_is_closed(struct mmc_omap_host *host) | ||
190 | { | ||
191 | int r = 1; | ||
192 | |||
193 | if (host->pdata->slots[host->slot_id].get_cover_state) | ||
194 | r = host->pdata->slots[host->slot_id].get_cover_state(host->dev, | ||
195 | host->slot_id); | ||
196 | return r; | ||
197 | } | ||
198 | |||
199 | static ssize_t | ||
200 | mmc_omap_show_cover_switch(struct device *dev, struct device_attribute *attr, | ||
201 | char *buf) | ||
202 | { | ||
203 | struct mmc_host *mmc = container_of(dev, struct mmc_host, class_dev); | ||
204 | struct mmc_omap_host *host = mmc_priv(mmc); | ||
205 | |||
206 | return sprintf(buf, "%s\n", mmc_omap_cover_is_closed(host) ? "closed" : | ||
207 | "open"); | ||
208 | } | ||
209 | |||
210 | static DEVICE_ATTR(cover_switch, S_IRUGO, mmc_omap_show_cover_switch, NULL); | ||
211 | |||
212 | static ssize_t | ||
213 | mmc_omap_show_slot_name(struct device *dev, struct device_attribute *attr, | ||
214 | char *buf) | ||
215 | { | ||
216 | struct mmc_host *mmc = container_of(dev, struct mmc_host, class_dev); | ||
217 | struct mmc_omap_host *host = mmc_priv(mmc); | ||
218 | struct omap_mmc_slot_data slot = host->pdata->slots[host->slot_id]; | ||
219 | |||
220 | return sprintf(buf, "slot:%s\n", slot.name); | ||
221 | } | ||
222 | |||
223 | static DEVICE_ATTR(slot_name, S_IRUGO, mmc_omap_show_slot_name, NULL); | ||
224 | |||
225 | /* | ||
226 | * Configure the response type and send the cmd. | ||
227 | */ | ||
228 | static void | ||
229 | mmc_omap_start_command(struct mmc_omap_host *host, struct mmc_command *cmd, | ||
230 | struct mmc_data *data) | ||
231 | { | ||
232 | int cmdreg = 0, resptype = 0, cmdtype = 0; | ||
233 | |||
234 | dev_dbg(mmc_dev(host->mmc), "%s: CMD%d, argument 0x%08x\n", | ||
235 | mmc_hostname(host->mmc), cmd->opcode, cmd->arg); | ||
236 | host->cmd = cmd; | ||
237 | |||
238 | /* | ||
239 | * Clear status bits and enable interrupts | ||
240 | */ | ||
241 | OMAP_HSMMC_WRITE(host->base, STAT, STAT_CLEAR); | ||
242 | OMAP_HSMMC_WRITE(host->base, ISE, INT_EN_MASK); | ||
243 | OMAP_HSMMC_WRITE(host->base, IE, INT_EN_MASK); | ||
244 | |||
245 | if (cmd->flags & MMC_RSP_PRESENT) { | ||
246 | if (cmd->flags & MMC_RSP_136) | ||
247 | resptype = 1; | ||
248 | else | ||
249 | resptype = 2; | ||
250 | } | ||
251 | |||
252 | /* | ||
253 | * Unlike OMAP1 controller, the cmdtype does not seem to be based on | ||
254 | * ac, bc, adtc, bcr. Only commands ending an open ended transfer need | ||
255 | * a val of 0x3, rest 0x0. | ||
256 | */ | ||
257 | if (cmd == host->mrq->stop) | ||
258 | cmdtype = 0x3; | ||
259 | |||
260 | cmdreg = (cmd->opcode << 24) | (resptype << 16) | (cmdtype << 22); | ||
261 | |||
262 | if (data) { | ||
263 | cmdreg |= DP_SELECT | MSBS | BCE; | ||
264 | if (data->flags & MMC_DATA_READ) | ||
265 | cmdreg |= DDIR; | ||
266 | else | ||
267 | cmdreg &= ~(DDIR); | ||
268 | } | ||
269 | |||
270 | if (host->use_dma) | ||
271 | cmdreg |= DMA_EN; | ||
272 | |||
273 | OMAP_HSMMC_WRITE(host->base, ARG, cmd->arg); | ||
274 | OMAP_HSMMC_WRITE(host->base, CMD, cmdreg); | ||
275 | } | ||
276 | |||
277 | /* | ||
278 | * Notify the transfer complete to MMC core | ||
279 | */ | ||
280 | static void | ||
281 | mmc_omap_xfer_done(struct mmc_omap_host *host, struct mmc_data *data) | ||
282 | { | ||
283 | host->data = NULL; | ||
284 | |||
285 | if (host->use_dma && host->dma_ch != -1) | ||
286 | dma_unmap_sg(mmc_dev(host->mmc), data->sg, host->dma_len, | ||
287 | host->dma_dir); | ||
288 | |||
289 | host->datadir = OMAP_MMC_DATADIR_NONE; | ||
290 | |||
291 | if (!data->error) | ||
292 | data->bytes_xfered += data->blocks * (data->blksz); | ||
293 | else | ||
294 | data->bytes_xfered = 0; | ||
295 | |||
296 | if (!data->stop) { | ||
297 | host->mrq = NULL; | ||
298 | mmc_request_done(host->mmc, data->mrq); | ||
299 | return; | ||
300 | } | ||
301 | mmc_omap_start_command(host, data->stop, NULL); | ||
302 | } | ||
303 | |||
304 | /* | ||
305 | * Notify the core about command completion | ||
306 | */ | ||
307 | static void | ||
308 | mmc_omap_cmd_done(struct mmc_omap_host *host, struct mmc_command *cmd) | ||
309 | { | ||
310 | host->cmd = NULL; | ||
311 | |||
312 | if (cmd->flags & MMC_RSP_PRESENT) { | ||
313 | if (cmd->flags & MMC_RSP_136) { | ||
314 | /* response type 2 */ | ||
315 | cmd->resp[3] = OMAP_HSMMC_READ(host->base, RSP10); | ||
316 | cmd->resp[2] = OMAP_HSMMC_READ(host->base, RSP32); | ||
317 | cmd->resp[1] = OMAP_HSMMC_READ(host->base, RSP54); | ||
318 | cmd->resp[0] = OMAP_HSMMC_READ(host->base, RSP76); | ||
319 | } else { | ||
320 | /* response types 1, 1b, 3, 4, 5, 6 */ | ||
321 | cmd->resp[0] = OMAP_HSMMC_READ(host->base, RSP10); | ||
322 | } | ||
323 | } | ||
324 | if (host->data == NULL || cmd->error) { | ||
325 | host->mrq = NULL; | ||
326 | mmc_request_done(host->mmc, cmd->mrq); | ||
327 | } | ||
328 | } | ||
329 | |||
330 | /* | ||
331 | * DMA clean up for command errors | ||
332 | */ | ||
333 | static void mmc_dma_cleanup(struct mmc_omap_host *host) | ||
334 | { | ||
335 | host->data->error = -ETIMEDOUT; | ||
336 | |||
337 | if (host->use_dma && host->dma_ch != -1) { | ||
338 | dma_unmap_sg(mmc_dev(host->mmc), host->data->sg, host->dma_len, | ||
339 | host->dma_dir); | ||
340 | omap_free_dma(host->dma_ch); | ||
341 | host->dma_ch = -1; | ||
342 | up(&host->sem); | ||
343 | } | ||
344 | host->data = NULL; | ||
345 | host->datadir = OMAP_MMC_DATADIR_NONE; | ||
346 | } | ||
347 | |||
348 | /* | ||
349 | * Readable error output | ||
350 | */ | ||
351 | #ifdef CONFIG_MMC_DEBUG | ||
352 | static void mmc_omap_report_irq(struct mmc_omap_host *host, u32 status) | ||
353 | { | ||
354 | /* --- means reserved bit without definition at documentation */ | ||
355 | static const char *mmc_omap_status_bits[] = { | ||
356 | "CC", "TC", "BGE", "---", "BWR", "BRR", "---", "---", "CIRQ", | ||
357 | "OBI", "---", "---", "---", "---", "---", "ERRI", "CTO", "CCRC", | ||
358 | "CEB", "CIE", "DTO", "DCRC", "DEB", "---", "ACE", "---", | ||
359 | "---", "---", "---", "CERR", "CERR", "BADA", "---", "---", "---" | ||
360 | }; | ||
361 | char res[256]; | ||
362 | char *buf = res; | ||
363 | int len, i; | ||
364 | |||
365 | len = sprintf(buf, "MMC IRQ 0x%x :", status); | ||
366 | buf += len; | ||
367 | |||
368 | for (i = 0; i < ARRAY_SIZE(mmc_omap_status_bits); i++) | ||
369 | if (status & (1 << i)) { | ||
370 | len = sprintf(buf, " %s", mmc_omap_status_bits[i]); | ||
371 | buf += len; | ||
372 | } | ||
373 | |||
374 | dev_dbg(mmc_dev(host->mmc), "%s\n", res); | ||
375 | } | ||
376 | #endif /* CONFIG_MMC_DEBUG */ | ||
377 | |||
378 | |||
379 | /* | ||
380 | * MMC controller IRQ handler | ||
381 | */ | ||
382 | static irqreturn_t mmc_omap_irq(int irq, void *dev_id) | ||
383 | { | ||
384 | struct mmc_omap_host *host = dev_id; | ||
385 | struct mmc_data *data; | ||
386 | int end_cmd = 0, end_trans = 0, status; | ||
387 | |||
388 | if (host->cmd == NULL && host->data == NULL) { | ||
389 | OMAP_HSMMC_WRITE(host->base, STAT, | ||
390 | OMAP_HSMMC_READ(host->base, STAT)); | ||
391 | return IRQ_HANDLED; | ||
392 | } | ||
393 | |||
394 | data = host->data; | ||
395 | status = OMAP_HSMMC_READ(host->base, STAT); | ||
396 | dev_dbg(mmc_dev(host->mmc), "IRQ Status is %x\n", status); | ||
397 | |||
398 | if (status & ERR) { | ||
399 | #ifdef CONFIG_MMC_DEBUG | ||
400 | mmc_omap_report_irq(host, status); | ||
401 | #endif | ||
402 | if ((status & CMD_TIMEOUT) || | ||
403 | (status & CMD_CRC)) { | ||
404 | if (host->cmd) { | ||
405 | if (status & CMD_TIMEOUT) { | ||
406 | OMAP_HSMMC_WRITE(host->base, SYSCTL, | ||
407 | OMAP_HSMMC_READ(host->base, | ||
408 | SYSCTL) | SRC); | ||
409 | while (OMAP_HSMMC_READ(host->base, | ||
410 | SYSCTL) & SRC) | ||
411 | ; | ||
412 | |||
413 | host->cmd->error = -ETIMEDOUT; | ||
414 | } else { | ||
415 | host->cmd->error = -EILSEQ; | ||
416 | } | ||
417 | end_cmd = 1; | ||
418 | } | ||
419 | if (host->data) | ||
420 | mmc_dma_cleanup(host); | ||
421 | } | ||
422 | if ((status & DATA_TIMEOUT) || | ||
423 | (status & DATA_CRC)) { | ||
424 | if (host->data) { | ||
425 | if (status & DATA_TIMEOUT) | ||
426 | mmc_dma_cleanup(host); | ||
427 | else | ||
428 | host->data->error = -EILSEQ; | ||
429 | OMAP_HSMMC_WRITE(host->base, SYSCTL, | ||
430 | OMAP_HSMMC_READ(host->base, | ||
431 | SYSCTL) | SRD); | ||
432 | while (OMAP_HSMMC_READ(host->base, | ||
433 | SYSCTL) & SRD) | ||
434 | ; | ||
435 | end_trans = 1; | ||
436 | } | ||
437 | } | ||
438 | if (status & CARD_ERR) { | ||
439 | dev_dbg(mmc_dev(host->mmc), | ||
440 | "Ignoring card err CMD%d\n", host->cmd->opcode); | ||
441 | if (host->cmd) | ||
442 | end_cmd = 1; | ||
443 | if (host->data) | ||
444 | end_trans = 1; | ||
445 | } | ||
446 | } | ||
447 | |||
448 | OMAP_HSMMC_WRITE(host->base, STAT, status); | ||
449 | |||
450 | if (end_cmd || (status & CC)) | ||
451 | mmc_omap_cmd_done(host, host->cmd); | ||
452 | if (end_trans || (status & TC)) | ||
453 | mmc_omap_xfer_done(host, data); | ||
454 | |||
455 | return IRQ_HANDLED; | ||
456 | } | ||
457 | |||
458 | /* | ||
459 | * Switch MMC operating voltage | ||
460 | */ | ||
461 | static int omap_mmc_switch_opcond(struct mmc_omap_host *host, int vdd) | ||
462 | { | ||
463 | u32 reg_val = 0; | ||
464 | int ret; | ||
465 | |||
466 | /* Disable the clocks */ | ||
467 | clk_disable(host->fclk); | ||
468 | clk_disable(host->iclk); | ||
469 | clk_disable(host->dbclk); | ||
470 | |||
471 | /* Turn the power off */ | ||
472 | ret = mmc_slot(host).set_power(host->dev, host->slot_id, 0, 0); | ||
473 | if (ret != 0) | ||
474 | goto err; | ||
475 | |||
476 | /* Turn the power ON with given VDD 1.8 or 3.0v */ | ||
477 | ret = mmc_slot(host).set_power(host->dev, host->slot_id, 1, vdd); | ||
478 | if (ret != 0) | ||
479 | goto err; | ||
480 | |||
481 | clk_enable(host->fclk); | ||
482 | clk_enable(host->iclk); | ||
483 | clk_enable(host->dbclk); | ||
484 | |||
485 | OMAP_HSMMC_WRITE(host->base, HCTL, | ||
486 | OMAP_HSMMC_READ(host->base, HCTL) & SDVSCLR); | ||
487 | reg_val = OMAP_HSMMC_READ(host->base, HCTL); | ||
488 | /* | ||
489 | * If a MMC dual voltage card is detected, the set_ios fn calls | ||
490 | * this fn with VDD bit set for 1.8V. Upon card removal from the | ||
491 | * slot, omap_mmc_set_ios sets the VDD back to 3V on MMC_POWER_OFF. | ||
492 | * | ||
493 | * Only MMC1 supports 3.0V. MMC2 will not function if SDVS30 is | ||
494 | * set in HCTL. | ||
495 | */ | ||
496 | if (host->id == OMAP_MMC1_DEVID && (((1 << vdd) == MMC_VDD_32_33) || | ||
497 | ((1 << vdd) == MMC_VDD_33_34))) | ||
498 | reg_val |= SDVS30; | ||
499 | if ((1 << vdd) == MMC_VDD_165_195) | ||
500 | reg_val |= SDVS18; | ||
501 | |||
502 | OMAP_HSMMC_WRITE(host->base, HCTL, reg_val); | ||
503 | |||
504 | OMAP_HSMMC_WRITE(host->base, HCTL, | ||
505 | OMAP_HSMMC_READ(host->base, HCTL) | SDBP); | ||
506 | |||
507 | return 0; | ||
508 | err: | ||
509 | dev_dbg(mmc_dev(host->mmc), "Unable to switch operating voltage\n"); | ||
510 | return ret; | ||
511 | } | ||
512 | |||
513 | /* | ||
514 | * Work Item to notify the core about card insertion/removal | ||
515 | */ | ||
516 | static void mmc_omap_detect(struct work_struct *work) | ||
517 | { | ||
518 | struct mmc_omap_host *host = container_of(work, struct mmc_omap_host, | ||
519 | mmc_carddetect_work); | ||
520 | |||
521 | sysfs_notify(&host->mmc->class_dev.kobj, NULL, "cover_switch"); | ||
522 | if (host->carddetect) { | ||
523 | mmc_detect_change(host->mmc, (HZ * 200) / 1000); | ||
524 | } else { | ||
525 | OMAP_HSMMC_WRITE(host->base, SYSCTL, | ||
526 | OMAP_HSMMC_READ(host->base, SYSCTL) | SRD); | ||
527 | while (OMAP_HSMMC_READ(host->base, SYSCTL) & SRD) | ||
528 | ; | ||
529 | |||
530 | mmc_detect_change(host->mmc, (HZ * 50) / 1000); | ||
531 | } | ||
532 | } | ||
533 | |||
534 | /* | ||
535 | * ISR for handling card insertion and removal | ||
536 | */ | ||
537 | static irqreturn_t omap_mmc_cd_handler(int irq, void *dev_id) | ||
538 | { | ||
539 | struct mmc_omap_host *host = (struct mmc_omap_host *)dev_id; | ||
540 | |||
541 | host->carddetect = mmc_slot(host).card_detect(irq); | ||
542 | schedule_work(&host->mmc_carddetect_work); | ||
543 | |||
544 | return IRQ_HANDLED; | ||
545 | } | ||
546 | |||
547 | /* | ||
548 | * DMA call back function | ||
549 | */ | ||
550 | static void mmc_omap_dma_cb(int lch, u16 ch_status, void *data) | ||
551 | { | ||
552 | struct mmc_omap_host *host = data; | ||
553 | |||
554 | if (ch_status & OMAP2_DMA_MISALIGNED_ERR_IRQ) | ||
555 | dev_dbg(mmc_dev(host->mmc), "MISALIGNED_ADRS_ERR\n"); | ||
556 | |||
557 | if (host->dma_ch < 0) | ||
558 | return; | ||
559 | |||
560 | omap_free_dma(host->dma_ch); | ||
561 | host->dma_ch = -1; | ||
562 | /* | ||
563 | * DMA Callback: run in interrupt context. | ||
564 | * mutex_unlock will through a kernel warning if used. | ||
565 | */ | ||
566 | up(&host->sem); | ||
567 | } | ||
568 | |||
569 | /* | ||
570 | * Configure dma src and destination parameters | ||
571 | */ | ||
572 | static int mmc_omap_config_dma_param(int sync_dir, struct mmc_omap_host *host, | ||
573 | struct mmc_data *data) | ||
574 | { | ||
575 | if (sync_dir == 0) { | ||
576 | omap_set_dma_dest_params(host->dma_ch, 0, | ||
577 | OMAP_DMA_AMODE_CONSTANT, | ||
578 | (host->mapbase + OMAP_HSMMC_DATA), 0, 0); | ||
579 | omap_set_dma_src_params(host->dma_ch, 0, | ||
580 | OMAP_DMA_AMODE_POST_INC, | ||
581 | sg_dma_address(&data->sg[0]), 0, 0); | ||
582 | } else { | ||
583 | omap_set_dma_src_params(host->dma_ch, 0, | ||
584 | OMAP_DMA_AMODE_CONSTANT, | ||
585 | (host->mapbase + OMAP_HSMMC_DATA), 0, 0); | ||
586 | omap_set_dma_dest_params(host->dma_ch, 0, | ||
587 | OMAP_DMA_AMODE_POST_INC, | ||
588 | sg_dma_address(&data->sg[0]), 0, 0); | ||
589 | } | ||
590 | return 0; | ||
591 | } | ||
592 | /* | ||
593 | * Routine to configure and start DMA for the MMC card | ||
594 | */ | ||
595 | static int | ||
596 | mmc_omap_start_dma_transfer(struct mmc_omap_host *host, struct mmc_request *req) | ||
597 | { | ||
598 | int sync_dev, sync_dir = 0; | ||
599 | int dma_ch = 0, ret = 0, err = 1; | ||
600 | struct mmc_data *data = req->data; | ||
601 | |||
602 | /* | ||
603 | * If for some reason the DMA transfer is still active, | ||
604 | * we wait for timeout period and free the dma | ||
605 | */ | ||
606 | if (host->dma_ch != -1) { | ||
607 | set_current_state(TASK_UNINTERRUPTIBLE); | ||
608 | schedule_timeout(100); | ||
609 | if (down_trylock(&host->sem)) { | ||
610 | omap_free_dma(host->dma_ch); | ||
611 | host->dma_ch = -1; | ||
612 | up(&host->sem); | ||
613 | return err; | ||
614 | } | ||
615 | } else { | ||
616 | if (down_trylock(&host->sem)) | ||
617 | return err; | ||
618 | } | ||
619 | |||
620 | if (!(data->flags & MMC_DATA_WRITE)) { | ||
621 | host->dma_dir = DMA_FROM_DEVICE; | ||
622 | if (host->id == OMAP_MMC1_DEVID) | ||
623 | sync_dev = OMAP24XX_DMA_MMC1_RX; | ||
624 | else | ||
625 | sync_dev = OMAP24XX_DMA_MMC2_RX; | ||
626 | } else { | ||
627 | host->dma_dir = DMA_TO_DEVICE; | ||
628 | if (host->id == OMAP_MMC1_DEVID) | ||
629 | sync_dev = OMAP24XX_DMA_MMC1_TX; | ||
630 | else | ||
631 | sync_dev = OMAP24XX_DMA_MMC2_TX; | ||
632 | } | ||
633 | |||
634 | ret = omap_request_dma(sync_dev, "MMC/SD", mmc_omap_dma_cb, | ||
635 | host, &dma_ch); | ||
636 | if (ret != 0) { | ||
637 | dev_dbg(mmc_dev(host->mmc), | ||
638 | "%s: omap_request_dma() failed with %d\n", | ||
639 | mmc_hostname(host->mmc), ret); | ||
640 | return ret; | ||
641 | } | ||
642 | |||
643 | host->dma_len = dma_map_sg(mmc_dev(host->mmc), data->sg, | ||
644 | data->sg_len, host->dma_dir); | ||
645 | host->dma_ch = dma_ch; | ||
646 | |||
647 | if (!(data->flags & MMC_DATA_WRITE)) | ||
648 | mmc_omap_config_dma_param(1, host, data); | ||
649 | else | ||
650 | mmc_omap_config_dma_param(0, host, data); | ||
651 | |||
652 | if ((data->blksz % 4) == 0) | ||
653 | omap_set_dma_transfer_params(dma_ch, OMAP_DMA_DATA_TYPE_S32, | ||
654 | (data->blksz / 4), data->blocks, OMAP_DMA_SYNC_FRAME, | ||
655 | sync_dev, sync_dir); | ||
656 | else | ||
657 | /* REVISIT: The MMC buffer increments only when MSB is written. | ||
658 | * Return error for blksz which is non multiple of four. | ||
659 | */ | ||
660 | return -EINVAL; | ||
661 | |||
662 | omap_start_dma(dma_ch); | ||
663 | return 0; | ||
664 | } | ||
665 | |||
666 | static void set_data_timeout(struct mmc_omap_host *host, | ||
667 | struct mmc_request *req) | ||
668 | { | ||
669 | unsigned int timeout, cycle_ns; | ||
670 | uint32_t reg, clkd, dto = 0; | ||
671 | |||
672 | reg = OMAP_HSMMC_READ(host->base, SYSCTL); | ||
673 | clkd = (reg & CLKD_MASK) >> CLKD_SHIFT; | ||
674 | if (clkd == 0) | ||
675 | clkd = 1; | ||
676 | |||
677 | cycle_ns = 1000000000 / (clk_get_rate(host->fclk) / clkd); | ||
678 | timeout = req->data->timeout_ns / cycle_ns; | ||
679 | timeout += req->data->timeout_clks; | ||
680 | if (timeout) { | ||
681 | while ((timeout & 0x80000000) == 0) { | ||
682 | dto += 1; | ||
683 | timeout <<= 1; | ||
684 | } | ||
685 | dto = 31 - dto; | ||
686 | timeout <<= 1; | ||
687 | if (timeout && dto) | ||
688 | dto += 1; | ||
689 | if (dto >= 13) | ||
690 | dto -= 13; | ||
691 | else | ||
692 | dto = 0; | ||
693 | if (dto > 14) | ||
694 | dto = 14; | ||
695 | } | ||
696 | |||
697 | reg &= ~DTO_MASK; | ||
698 | reg |= dto << DTO_SHIFT; | ||
699 | OMAP_HSMMC_WRITE(host->base, SYSCTL, reg); | ||
700 | } | ||
701 | |||
702 | /* | ||
703 | * Configure block length for MMC/SD cards and initiate the transfer. | ||
704 | */ | ||
705 | static int | ||
706 | mmc_omap_prepare_data(struct mmc_omap_host *host, struct mmc_request *req) | ||
707 | { | ||
708 | int ret; | ||
709 | host->data = req->data; | ||
710 | |||
711 | if (req->data == NULL) { | ||
712 | host->datadir = OMAP_MMC_DATADIR_NONE; | ||
713 | OMAP_HSMMC_WRITE(host->base, BLK, 0); | ||
714 | return 0; | ||
715 | } | ||
716 | |||
717 | OMAP_HSMMC_WRITE(host->base, BLK, (req->data->blksz) | ||
718 | | (req->data->blocks << 16)); | ||
719 | set_data_timeout(host, req); | ||
720 | |||
721 | host->datadir = (req->data->flags & MMC_DATA_WRITE) ? | ||
722 | OMAP_MMC_DATADIR_WRITE : OMAP_MMC_DATADIR_READ; | ||
723 | |||
724 | if (host->use_dma) { | ||
725 | ret = mmc_omap_start_dma_transfer(host, req); | ||
726 | if (ret != 0) { | ||
727 | dev_dbg(mmc_dev(host->mmc), "MMC start dma failure\n"); | ||
728 | return ret; | ||
729 | } | ||
730 | } | ||
731 | return 0; | ||
732 | } | ||
733 | |||
734 | /* | ||
735 | * Request function. for read/write operation | ||
736 | */ | ||
737 | static void omap_mmc_request(struct mmc_host *mmc, struct mmc_request *req) | ||
738 | { | ||
739 | struct mmc_omap_host *host = mmc_priv(mmc); | ||
740 | |||
741 | WARN_ON(host->mrq != NULL); | ||
742 | host->mrq = req; | ||
743 | mmc_omap_prepare_data(host, req); | ||
744 | mmc_omap_start_command(host, req->cmd, req->data); | ||
745 | } | ||
746 | |||
747 | |||
748 | /* Routine to configure clock values. Exposed API to core */ | ||
749 | static void omap_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | ||
750 | { | ||
751 | struct mmc_omap_host *host = mmc_priv(mmc); | ||
752 | u16 dsor = 0; | ||
753 | unsigned long regval; | ||
754 | unsigned long timeout; | ||
755 | |||
756 | switch (ios->power_mode) { | ||
757 | case MMC_POWER_OFF: | ||
758 | mmc_slot(host).set_power(host->dev, host->slot_id, 0, 0); | ||
759 | /* | ||
760 | * Reset bus voltage to 3V if it got set to 1.8V earlier. | ||
761 | * REVISIT: If we are able to detect cards after unplugging | ||
762 | * a 1.8V card, this code should not be needed. | ||
763 | */ | ||
764 | if (!(OMAP_HSMMC_READ(host->base, HCTL) & SDVSDET)) { | ||
765 | int vdd = fls(host->mmc->ocr_avail) - 1; | ||
766 | if (omap_mmc_switch_opcond(host, vdd) != 0) | ||
767 | host->mmc->ios.vdd = vdd; | ||
768 | } | ||
769 | break; | ||
770 | case MMC_POWER_UP: | ||
771 | mmc_slot(host).set_power(host->dev, host->slot_id, 1, ios->vdd); | ||
772 | break; | ||
773 | } | ||
774 | |||
775 | switch (mmc->ios.bus_width) { | ||
776 | case MMC_BUS_WIDTH_4: | ||
777 | OMAP_HSMMC_WRITE(host->base, HCTL, | ||
778 | OMAP_HSMMC_READ(host->base, HCTL) | FOUR_BIT); | ||
779 | break; | ||
780 | case MMC_BUS_WIDTH_1: | ||
781 | OMAP_HSMMC_WRITE(host->base, HCTL, | ||
782 | OMAP_HSMMC_READ(host->base, HCTL) & ~FOUR_BIT); | ||
783 | break; | ||
784 | } | ||
785 | |||
786 | if (host->id == OMAP_MMC1_DEVID) { | ||
787 | /* Only MMC1 can operate at 3V/1.8V */ | ||
788 | if ((OMAP_HSMMC_READ(host->base, HCTL) & SDVSDET) && | ||
789 | (ios->vdd == DUAL_VOLT_OCR_BIT)) { | ||
790 | /* | ||
791 | * The mmc_select_voltage fn of the core does | ||
792 | * not seem to set the power_mode to | ||
793 | * MMC_POWER_UP upon recalculating the voltage. | ||
794 | * vdd 1.8v. | ||
795 | */ | ||
796 | if (omap_mmc_switch_opcond(host, ios->vdd) != 0) | ||
797 | dev_dbg(mmc_dev(host->mmc), | ||
798 | "Switch operation failed\n"); | ||
799 | } | ||
800 | } | ||
801 | |||
802 | if (ios->clock) { | ||
803 | dsor = OMAP_MMC_MASTER_CLOCK / ios->clock; | ||
804 | if (dsor < 1) | ||
805 | dsor = 1; | ||
806 | |||
807 | if (OMAP_MMC_MASTER_CLOCK / dsor > ios->clock) | ||
808 | dsor++; | ||
809 | |||
810 | if (dsor > 250) | ||
811 | dsor = 250; | ||
812 | } | ||
813 | omap_mmc_stop_clock(host); | ||
814 | regval = OMAP_HSMMC_READ(host->base, SYSCTL); | ||
815 | regval = regval & ~(CLKD_MASK); | ||
816 | regval = regval | (dsor << 6) | (DTO << 16); | ||
817 | OMAP_HSMMC_WRITE(host->base, SYSCTL, regval); | ||
818 | OMAP_HSMMC_WRITE(host->base, SYSCTL, | ||
819 | OMAP_HSMMC_READ(host->base, SYSCTL) | ICE); | ||
820 | |||
821 | /* Wait till the ICS bit is set */ | ||
822 | timeout = jiffies + msecs_to_jiffies(MMC_TIMEOUT_MS); | ||
823 | while ((OMAP_HSMMC_READ(host->base, SYSCTL) & ICS) != 0x2 | ||
824 | && time_before(jiffies, timeout)) | ||
825 | msleep(1); | ||
826 | |||
827 | OMAP_HSMMC_WRITE(host->base, SYSCTL, | ||
828 | OMAP_HSMMC_READ(host->base, SYSCTL) | CEN); | ||
829 | |||
830 | if (ios->power_mode == MMC_POWER_ON) | ||
831 | send_init_stream(host); | ||
832 | |||
833 | if (ios->bus_mode == MMC_BUSMODE_OPENDRAIN) | ||
834 | OMAP_HSMMC_WRITE(host->base, CON, | ||
835 | OMAP_HSMMC_READ(host->base, CON) | OD); | ||
836 | } | ||
837 | |||
838 | static int omap_hsmmc_get_cd(struct mmc_host *mmc) | ||
839 | { | ||
840 | struct mmc_omap_host *host = mmc_priv(mmc); | ||
841 | struct omap_mmc_platform_data *pdata = host->pdata; | ||
842 | |||
843 | if (!pdata->slots[0].card_detect) | ||
844 | return -ENOSYS; | ||
845 | return pdata->slots[0].card_detect(pdata->slots[0].card_detect_irq); | ||
846 | } | ||
847 | |||
848 | static int omap_hsmmc_get_ro(struct mmc_host *mmc) | ||
849 | { | ||
850 | struct mmc_omap_host *host = mmc_priv(mmc); | ||
851 | struct omap_mmc_platform_data *pdata = host->pdata; | ||
852 | |||
853 | if (!pdata->slots[0].get_ro) | ||
854 | return -ENOSYS; | ||
855 | return pdata->slots[0].get_ro(host->dev, 0); | ||
856 | } | ||
857 | |||
858 | static struct mmc_host_ops mmc_omap_ops = { | ||
859 | .request = omap_mmc_request, | ||
860 | .set_ios = omap_mmc_set_ios, | ||
861 | .get_cd = omap_hsmmc_get_cd, | ||
862 | .get_ro = omap_hsmmc_get_ro, | ||
863 | /* NYET -- enable_sdio_irq */ | ||
864 | }; | ||
865 | |||
866 | static int __init omap_mmc_probe(struct platform_device *pdev) | ||
867 | { | ||
868 | struct omap_mmc_platform_data *pdata = pdev->dev.platform_data; | ||
869 | struct mmc_host *mmc; | ||
870 | struct mmc_omap_host *host = NULL; | ||
871 | struct resource *res; | ||
872 | int ret = 0, irq; | ||
873 | u32 hctl, capa; | ||
874 | |||
875 | if (pdata == NULL) { | ||
876 | dev_err(&pdev->dev, "Platform Data is missing\n"); | ||
877 | return -ENXIO; | ||
878 | } | ||
879 | |||
880 | if (pdata->nr_slots == 0) { | ||
881 | dev_err(&pdev->dev, "No Slots\n"); | ||
882 | return -ENXIO; | ||
883 | } | ||
884 | |||
885 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
886 | irq = platform_get_irq(pdev, 0); | ||
887 | if (res == NULL || irq < 0) | ||
888 | return -ENXIO; | ||
889 | |||
890 | res = request_mem_region(res->start, res->end - res->start + 1, | ||
891 | pdev->name); | ||
892 | if (res == NULL) | ||
893 | return -EBUSY; | ||
894 | |||
895 | mmc = mmc_alloc_host(sizeof(struct mmc_omap_host), &pdev->dev); | ||
896 | if (!mmc) { | ||
897 | ret = -ENOMEM; | ||
898 | goto err; | ||
899 | } | ||
900 | |||
901 | host = mmc_priv(mmc); | ||
902 | host->mmc = mmc; | ||
903 | host->pdata = pdata; | ||
904 | host->dev = &pdev->dev; | ||
905 | host->use_dma = 1; | ||
906 | host->dev->dma_mask = &pdata->dma_mask; | ||
907 | host->dma_ch = -1; | ||
908 | host->irq = irq; | ||
909 | host->id = pdev->id; | ||
910 | host->slot_id = 0; | ||
911 | host->mapbase = res->start; | ||
912 | host->base = ioremap(host->mapbase, SZ_4K); | ||
913 | |||
914 | platform_set_drvdata(pdev, host); | ||
915 | INIT_WORK(&host->mmc_carddetect_work, mmc_omap_detect); | ||
916 | |||
917 | mmc->ops = &mmc_omap_ops; | ||
918 | mmc->f_min = 400000; | ||
919 | mmc->f_max = 52000000; | ||
920 | |||
921 | sema_init(&host->sem, 1); | ||
922 | |||
923 | host->iclk = clk_get(&pdev->dev, "mmchs_ick"); | ||
924 | if (IS_ERR(host->iclk)) { | ||
925 | ret = PTR_ERR(host->iclk); | ||
926 | host->iclk = NULL; | ||
927 | goto err1; | ||
928 | } | ||
929 | host->fclk = clk_get(&pdev->dev, "mmchs_fck"); | ||
930 | if (IS_ERR(host->fclk)) { | ||
931 | ret = PTR_ERR(host->fclk); | ||
932 | host->fclk = NULL; | ||
933 | clk_put(host->iclk); | ||
934 | goto err1; | ||
935 | } | ||
936 | |||
937 | if (clk_enable(host->fclk) != 0) { | ||
938 | clk_put(host->iclk); | ||
939 | clk_put(host->fclk); | ||
940 | goto err1; | ||
941 | } | ||
942 | |||
943 | if (clk_enable(host->iclk) != 0) { | ||
944 | clk_disable(host->fclk); | ||
945 | clk_put(host->iclk); | ||
946 | clk_put(host->fclk); | ||
947 | goto err1; | ||
948 | } | ||
949 | |||
950 | host->dbclk = clk_get(&pdev->dev, "mmchsdb_fck"); | ||
951 | /* | ||
952 | * MMC can still work without debounce clock. | ||
953 | */ | ||
954 | if (IS_ERR(host->dbclk)) | ||
955 | dev_warn(mmc_dev(host->mmc), "Failed to get debounce clock\n"); | ||
956 | else | ||
957 | if (clk_enable(host->dbclk) != 0) | ||
958 | dev_dbg(mmc_dev(host->mmc), "Enabling debounce" | ||
959 | " clk failed\n"); | ||
960 | else | ||
961 | host->dbclk_enabled = 1; | ||
962 | |||
963 | #ifdef CONFIG_MMC_BLOCK_BOUNCE | ||
964 | mmc->max_phys_segs = 1; | ||
965 | mmc->max_hw_segs = 1; | ||
966 | #endif | ||
967 | mmc->max_blk_size = 512; /* Block Length at max can be 1024 */ | ||
968 | mmc->max_blk_count = 0xFFFF; /* No. of Blocks is 16 bits */ | ||
969 | mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; | ||
970 | mmc->max_seg_size = mmc->max_req_size; | ||
971 | |||
972 | mmc->ocr_avail = mmc_slot(host).ocr_mask; | ||
973 | mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED; | ||
974 | |||
975 | if (pdata->slots[host->slot_id].wires >= 4) | ||
976 | mmc->caps |= MMC_CAP_4_BIT_DATA; | ||
977 | |||
978 | /* Only MMC1 supports 3.0V */ | ||
979 | if (host->id == OMAP_MMC1_DEVID) { | ||
980 | hctl = SDVS30; | ||
981 | capa = VS30 | VS18; | ||
982 | } else { | ||
983 | hctl = SDVS18; | ||
984 | capa = VS18; | ||
985 | } | ||
986 | |||
987 | OMAP_HSMMC_WRITE(host->base, HCTL, | ||
988 | OMAP_HSMMC_READ(host->base, HCTL) | hctl); | ||
989 | |||
990 | OMAP_HSMMC_WRITE(host->base, CAPA, | ||
991 | OMAP_HSMMC_READ(host->base, CAPA) | capa); | ||
992 | |||
993 | /* Set the controller to AUTO IDLE mode */ | ||
994 | OMAP_HSMMC_WRITE(host->base, SYSCONFIG, | ||
995 | OMAP_HSMMC_READ(host->base, SYSCONFIG) | AUTOIDLE); | ||
996 | |||
997 | /* Set SD bus power bit */ | ||
998 | OMAP_HSMMC_WRITE(host->base, HCTL, | ||
999 | OMAP_HSMMC_READ(host->base, HCTL) | SDBP); | ||
1000 | |||
1001 | /* Request IRQ for MMC operations */ | ||
1002 | ret = request_irq(host->irq, mmc_omap_irq, IRQF_DISABLED, | ||
1003 | mmc_hostname(mmc), host); | ||
1004 | if (ret) { | ||
1005 | dev_dbg(mmc_dev(host->mmc), "Unable to grab HSMMC IRQ\n"); | ||
1006 | goto err_irq; | ||
1007 | } | ||
1008 | |||
1009 | if (pdata->init != NULL) { | ||
1010 | if (pdata->init(&pdev->dev) != 0) { | ||
1011 | dev_dbg(mmc_dev(host->mmc), | ||
1012 | "Unable to configure MMC IRQs\n"); | ||
1013 | goto err_irq_cd_init; | ||
1014 | } | ||
1015 | } | ||
1016 | |||
1017 | /* Request IRQ for card detect */ | ||
1018 | if ((mmc_slot(host).card_detect_irq) && (mmc_slot(host).card_detect)) { | ||
1019 | ret = request_irq(mmc_slot(host).card_detect_irq, | ||
1020 | omap_mmc_cd_handler, | ||
1021 | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | ||
1022 | | IRQF_DISABLED, | ||
1023 | mmc_hostname(mmc), host); | ||
1024 | if (ret) { | ||
1025 | dev_dbg(mmc_dev(host->mmc), | ||
1026 | "Unable to grab MMC CD IRQ\n"); | ||
1027 | goto err_irq_cd; | ||
1028 | } | ||
1029 | } | ||
1030 | |||
1031 | OMAP_HSMMC_WRITE(host->base, ISE, INT_EN_MASK); | ||
1032 | OMAP_HSMMC_WRITE(host->base, IE, INT_EN_MASK); | ||
1033 | |||
1034 | mmc_add_host(mmc); | ||
1035 | |||
1036 | if (host->pdata->slots[host->slot_id].name != NULL) { | ||
1037 | ret = device_create_file(&mmc->class_dev, &dev_attr_slot_name); | ||
1038 | if (ret < 0) | ||
1039 | goto err_slot_name; | ||
1040 | } | ||
1041 | if (mmc_slot(host).card_detect_irq && mmc_slot(host).card_detect && | ||
1042 | host->pdata->slots[host->slot_id].get_cover_state) { | ||
1043 | ret = device_create_file(&mmc->class_dev, | ||
1044 | &dev_attr_cover_switch); | ||
1045 | if (ret < 0) | ||
1046 | goto err_cover_switch; | ||
1047 | } | ||
1048 | |||
1049 | return 0; | ||
1050 | |||
1051 | err_cover_switch: | ||
1052 | device_remove_file(&mmc->class_dev, &dev_attr_cover_switch); | ||
1053 | err_slot_name: | ||
1054 | mmc_remove_host(mmc); | ||
1055 | err_irq_cd: | ||
1056 | free_irq(mmc_slot(host).card_detect_irq, host); | ||
1057 | err_irq_cd_init: | ||
1058 | free_irq(host->irq, host); | ||
1059 | err_irq: | ||
1060 | clk_disable(host->fclk); | ||
1061 | clk_disable(host->iclk); | ||
1062 | clk_put(host->fclk); | ||
1063 | clk_put(host->iclk); | ||
1064 | if (host->dbclk_enabled) { | ||
1065 | clk_disable(host->dbclk); | ||
1066 | clk_put(host->dbclk); | ||
1067 | } | ||
1068 | |||
1069 | err1: | ||
1070 | iounmap(host->base); | ||
1071 | err: | ||
1072 | dev_dbg(mmc_dev(host->mmc), "Probe Failed\n"); | ||
1073 | release_mem_region(res->start, res->end - res->start + 1); | ||
1074 | if (host) | ||
1075 | mmc_free_host(mmc); | ||
1076 | return ret; | ||
1077 | } | ||
1078 | |||
1079 | static int omap_mmc_remove(struct platform_device *pdev) | ||
1080 | { | ||
1081 | struct mmc_omap_host *host = platform_get_drvdata(pdev); | ||
1082 | struct resource *res; | ||
1083 | |||
1084 | if (host) { | ||
1085 | mmc_remove_host(host->mmc); | ||
1086 | if (host->pdata->cleanup) | ||
1087 | host->pdata->cleanup(&pdev->dev); | ||
1088 | free_irq(host->irq, host); | ||
1089 | if (mmc_slot(host).card_detect_irq) | ||
1090 | free_irq(mmc_slot(host).card_detect_irq, host); | ||
1091 | flush_scheduled_work(); | ||
1092 | |||
1093 | clk_disable(host->fclk); | ||
1094 | clk_disable(host->iclk); | ||
1095 | clk_put(host->fclk); | ||
1096 | clk_put(host->iclk); | ||
1097 | if (host->dbclk_enabled) { | ||
1098 | clk_disable(host->dbclk); | ||
1099 | clk_put(host->dbclk); | ||
1100 | } | ||
1101 | |||
1102 | mmc_free_host(host->mmc); | ||
1103 | iounmap(host->base); | ||
1104 | } | ||
1105 | |||
1106 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
1107 | if (res) | ||
1108 | release_mem_region(res->start, res->end - res->start + 1); | ||
1109 | platform_set_drvdata(pdev, NULL); | ||
1110 | |||
1111 | return 0; | ||
1112 | } | ||
1113 | |||
1114 | #ifdef CONFIG_PM | ||
1115 | static int omap_mmc_suspend(struct platform_device *pdev, pm_message_t state) | ||
1116 | { | ||
1117 | int ret = 0; | ||
1118 | struct mmc_omap_host *host = platform_get_drvdata(pdev); | ||
1119 | |||
1120 | if (host && host->suspended) | ||
1121 | return 0; | ||
1122 | |||
1123 | if (host) { | ||
1124 | ret = mmc_suspend_host(host->mmc, state); | ||
1125 | if (ret == 0) { | ||
1126 | host->suspended = 1; | ||
1127 | |||
1128 | OMAP_HSMMC_WRITE(host->base, ISE, 0); | ||
1129 | OMAP_HSMMC_WRITE(host->base, IE, 0); | ||
1130 | |||
1131 | if (host->pdata->suspend) { | ||
1132 | ret = host->pdata->suspend(&pdev->dev, | ||
1133 | host->slot_id); | ||
1134 | if (ret) | ||
1135 | dev_dbg(mmc_dev(host->mmc), | ||
1136 | "Unable to handle MMC board" | ||
1137 | " level suspend\n"); | ||
1138 | } | ||
1139 | |||
1140 | if (!(OMAP_HSMMC_READ(host->base, HCTL) & SDVSDET)) { | ||
1141 | OMAP_HSMMC_WRITE(host->base, HCTL, | ||
1142 | OMAP_HSMMC_READ(host->base, HCTL) | ||
1143 | & SDVSCLR); | ||
1144 | OMAP_HSMMC_WRITE(host->base, HCTL, | ||
1145 | OMAP_HSMMC_READ(host->base, HCTL) | ||
1146 | | SDVS30); | ||
1147 | OMAP_HSMMC_WRITE(host->base, HCTL, | ||
1148 | OMAP_HSMMC_READ(host->base, HCTL) | ||
1149 | | SDBP); | ||
1150 | } | ||
1151 | |||
1152 | clk_disable(host->fclk); | ||
1153 | clk_disable(host->iclk); | ||
1154 | clk_disable(host->dbclk); | ||
1155 | } | ||
1156 | |||
1157 | } | ||
1158 | return ret; | ||
1159 | } | ||
1160 | |||
1161 | /* Routine to resume the MMC device */ | ||
1162 | static int omap_mmc_resume(struct platform_device *pdev) | ||
1163 | { | ||
1164 | int ret = 0; | ||
1165 | struct mmc_omap_host *host = platform_get_drvdata(pdev); | ||
1166 | |||
1167 | if (host && !host->suspended) | ||
1168 | return 0; | ||
1169 | |||
1170 | if (host) { | ||
1171 | |||
1172 | ret = clk_enable(host->fclk); | ||
1173 | if (ret) | ||
1174 | goto clk_en_err; | ||
1175 | |||
1176 | ret = clk_enable(host->iclk); | ||
1177 | if (ret) { | ||
1178 | clk_disable(host->fclk); | ||
1179 | clk_put(host->fclk); | ||
1180 | goto clk_en_err; | ||
1181 | } | ||
1182 | |||
1183 | if (clk_enable(host->dbclk) != 0) | ||
1184 | dev_dbg(mmc_dev(host->mmc), | ||
1185 | "Enabling debounce clk failed\n"); | ||
1186 | |||
1187 | if (host->pdata->resume) { | ||
1188 | ret = host->pdata->resume(&pdev->dev, host->slot_id); | ||
1189 | if (ret) | ||
1190 | dev_dbg(mmc_dev(host->mmc), | ||
1191 | "Unmask interrupt failed\n"); | ||
1192 | } | ||
1193 | |||
1194 | /* Notify the core to resume the host */ | ||
1195 | ret = mmc_resume_host(host->mmc); | ||
1196 | if (ret == 0) | ||
1197 | host->suspended = 0; | ||
1198 | } | ||
1199 | |||
1200 | return ret; | ||
1201 | |||
1202 | clk_en_err: | ||
1203 | dev_dbg(mmc_dev(host->mmc), | ||
1204 | "Failed to enable MMC clocks during resume\n"); | ||
1205 | return ret; | ||
1206 | } | ||
1207 | |||
1208 | #else | ||
1209 | #define omap_mmc_suspend NULL | ||
1210 | #define omap_mmc_resume NULL | ||
1211 | #endif | ||
1212 | |||
1213 | static struct platform_driver omap_mmc_driver = { | ||
1214 | .probe = omap_mmc_probe, | ||
1215 | .remove = omap_mmc_remove, | ||
1216 | .suspend = omap_mmc_suspend, | ||
1217 | .resume = omap_mmc_resume, | ||
1218 | .driver = { | ||
1219 | .name = DRIVER_NAME, | ||
1220 | .owner = THIS_MODULE, | ||
1221 | }, | ||
1222 | }; | ||
1223 | |||
1224 | static int __init omap_mmc_init(void) | ||
1225 | { | ||
1226 | /* Register the MMC driver */ | ||
1227 | return platform_driver_register(&omap_mmc_driver); | ||
1228 | } | ||
1229 | |||
1230 | static void __exit omap_mmc_cleanup(void) | ||
1231 | { | ||
1232 | /* Unregister MMC driver */ | ||
1233 | platform_driver_unregister(&omap_mmc_driver); | ||
1234 | } | ||
1235 | |||
1236 | module_init(omap_mmc_init); | ||
1237 | module_exit(omap_mmc_cleanup); | ||
1238 | |||
1239 | MODULE_DESCRIPTION("OMAP High Speed Multimedia Card driver"); | ||
1240 | MODULE_LICENSE("GPL"); | ||
1241 | MODULE_ALIAS("platform:" DRIVER_NAME); | ||
1242 | MODULE_AUTHOR("Texas Instruments Inc"); | ||
diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c index fcc98a4cce3c..35a98eec7414 100644 --- a/drivers/mmc/host/s3cmci.c +++ b/drivers/mmc/host/s3cmci.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <linux/irq.h> | 20 | #include <linux/irq.h> |
21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
22 | 22 | ||
23 | #include <asm/dma.h> | 23 | #include <mach/dma.h> |
24 | 24 | ||
25 | #include <mach/regs-sdi.h> | 25 | #include <mach/regs-sdi.h> |
26 | #include <mach/regs-gpio.h> | 26 | #include <mach/regs-gpio.h> |
diff --git a/drivers/mtd/onenand/omap2.c b/drivers/mtd/onenand/omap2.c index 96ecc1766fa8..77a4f1446156 100644 --- a/drivers/mtd/onenand/omap2.c +++ b/drivers/mtd/onenand/omap2.c | |||
@@ -629,7 +629,7 @@ static int __devinit omap2_onenand_probe(struct platform_device *pdev) | |||
629 | } | 629 | } |
630 | 630 | ||
631 | if (c->gpio_irq) { | 631 | if (c->gpio_irq) { |
632 | if ((r = omap_request_gpio(c->gpio_irq)) < 0) { | 632 | if ((r = gpio_request(c->gpio_irq, "OneNAND irq")) < 0) { |
633 | dev_err(&pdev->dev, "Failed to request GPIO%d for " | 633 | dev_err(&pdev->dev, "Failed to request GPIO%d for " |
634 | "OneNAND\n", c->gpio_irq); | 634 | "OneNAND\n", c->gpio_irq); |
635 | goto err_iounmap; | 635 | goto err_iounmap; |
@@ -726,7 +726,7 @@ err_release_dma: | |||
726 | free_irq(gpio_to_irq(c->gpio_irq), c); | 726 | free_irq(gpio_to_irq(c->gpio_irq), c); |
727 | err_release_gpio: | 727 | err_release_gpio: |
728 | if (c->gpio_irq) | 728 | if (c->gpio_irq) |
729 | omap_free_gpio(c->gpio_irq); | 729 | gpio_free(c->gpio_irq); |
730 | err_iounmap: | 730 | err_iounmap: |
731 | iounmap(c->onenand.base); | 731 | iounmap(c->onenand.base); |
732 | err_release_mem_region: | 732 | err_release_mem_region: |
@@ -761,7 +761,7 @@ static int __devexit omap2_onenand_remove(struct platform_device *pdev) | |||
761 | platform_set_drvdata(pdev, NULL); | 761 | platform_set_drvdata(pdev, NULL); |
762 | if (c->gpio_irq) { | 762 | if (c->gpio_irq) { |
763 | free_irq(gpio_to_irq(c->gpio_irq), c); | 763 | free_irq(gpio_to_irq(c->gpio_irq), c); |
764 | omap_free_gpio(c->gpio_irq); | 764 | gpio_free(c->gpio_irq); |
765 | } | 765 | } |
766 | iounmap(c->onenand.base); | 766 | iounmap(c->onenand.base); |
767 | release_mem_region(c->phys_base, ONENAND_IO_SIZE); | 767 | release_mem_region(c->phys_base, ONENAND_IO_SIZE); |
diff --git a/drivers/net/arm/am79c961a.c b/drivers/net/arm/am79c961a.c index 0c628a9e5339..c2d012fcc29b 100644 --- a/drivers/net/arm/am79c961a.c +++ b/drivers/net/arm/am79c961a.c | |||
@@ -208,9 +208,9 @@ am79c961_init_for_open(struct net_device *dev) | |||
208 | /* | 208 | /* |
209 | * Stop the chip. | 209 | * Stop the chip. |
210 | */ | 210 | */ |
211 | spin_lock_irqsave(priv->chip_lock, flags); | 211 | spin_lock_irqsave(&priv->chip_lock, flags); |
212 | write_rreg (dev->base_addr, CSR0, CSR0_BABL|CSR0_CERR|CSR0_MISS|CSR0_MERR|CSR0_TINT|CSR0_RINT|CSR0_STOP); | 212 | write_rreg (dev->base_addr, CSR0, CSR0_BABL|CSR0_CERR|CSR0_MISS|CSR0_MERR|CSR0_TINT|CSR0_RINT|CSR0_STOP); |
213 | spin_unlock_irqrestore(priv->chip_lock, flags); | 213 | spin_unlock_irqrestore(&priv->chip_lock, flags); |
214 | 214 | ||
215 | write_ireg (dev->base_addr, 5, 0x00a0); /* Receive address LED */ | 215 | write_ireg (dev->base_addr, 5, 0x00a0); /* Receive address LED */ |
216 | write_ireg (dev->base_addr, 6, 0x0081); /* Collision LED */ | 216 | write_ireg (dev->base_addr, 6, 0x0081); /* Collision LED */ |
@@ -332,10 +332,10 @@ am79c961_close(struct net_device *dev) | |||
332 | netif_stop_queue(dev); | 332 | netif_stop_queue(dev); |
333 | netif_carrier_off(dev); | 333 | netif_carrier_off(dev); |
334 | 334 | ||
335 | spin_lock_irqsave(priv->chip_lock, flags); | 335 | spin_lock_irqsave(&priv->chip_lock, flags); |
336 | write_rreg (dev->base_addr, CSR0, CSR0_STOP); | 336 | write_rreg (dev->base_addr, CSR0, CSR0_STOP); |
337 | write_rreg (dev->base_addr, CSR3, CSR3_MASKALL); | 337 | write_rreg (dev->base_addr, CSR3, CSR3_MASKALL); |
338 | spin_unlock_irqrestore(priv->chip_lock, flags); | 338 | spin_unlock_irqrestore(&priv->chip_lock, flags); |
339 | 339 | ||
340 | free_irq (dev->irq, dev); | 340 | free_irq (dev->irq, dev); |
341 | 341 | ||
@@ -391,7 +391,7 @@ static void am79c961_setmulticastlist (struct net_device *dev) | |||
391 | am79c961_mc_hash(dmi, multi_hash); | 391 | am79c961_mc_hash(dmi, multi_hash); |
392 | } | 392 | } |
393 | 393 | ||
394 | spin_lock_irqsave(priv->chip_lock, flags); | 394 | spin_lock_irqsave(&priv->chip_lock, flags); |
395 | 395 | ||
396 | stopped = read_rreg(dev->base_addr, CSR0) & CSR0_STOP; | 396 | stopped = read_rreg(dev->base_addr, CSR0) & CSR0_STOP; |
397 | 397 | ||
@@ -405,9 +405,9 @@ static void am79c961_setmulticastlist (struct net_device *dev) | |||
405 | * Spin waiting for chip to report suspend mode | 405 | * Spin waiting for chip to report suspend mode |
406 | */ | 406 | */ |
407 | while ((read_rreg(dev->base_addr, CTRL1) & CTRL1_SPND) == 0) { | 407 | while ((read_rreg(dev->base_addr, CTRL1) & CTRL1_SPND) == 0) { |
408 | spin_unlock_irqrestore(priv->chip_lock, flags); | 408 | spin_unlock_irqrestore(&priv->chip_lock, flags); |
409 | nop(); | 409 | nop(); |
410 | spin_lock_irqsave(priv->chip_lock, flags); | 410 | spin_lock_irqsave(&priv->chip_lock, flags); |
411 | } | 411 | } |
412 | } | 412 | } |
413 | 413 | ||
@@ -429,7 +429,7 @@ static void am79c961_setmulticastlist (struct net_device *dev) | |||
429 | write_rreg(dev->base_addr, CTRL1, 0); | 429 | write_rreg(dev->base_addr, CTRL1, 0); |
430 | } | 430 | } |
431 | 431 | ||
432 | spin_unlock_irqrestore(priv->chip_lock, flags); | 432 | spin_unlock_irqrestore(&priv->chip_lock, flags); |
433 | } | 433 | } |
434 | 434 | ||
435 | static void am79c961_timeout(struct net_device *dev) | 435 | static void am79c961_timeout(struct net_device *dev) |
@@ -467,10 +467,10 @@ am79c961_sendpacket(struct sk_buff *skb, struct net_device *dev) | |||
467 | am_writeword (dev, hdraddr + 2, TMD_OWN|TMD_STP|TMD_ENP); | 467 | am_writeword (dev, hdraddr + 2, TMD_OWN|TMD_STP|TMD_ENP); |
468 | priv->txhead = head; | 468 | priv->txhead = head; |
469 | 469 | ||
470 | spin_lock_irqsave(priv->chip_lock, flags); | 470 | spin_lock_irqsave(&priv->chip_lock, flags); |
471 | write_rreg (dev->base_addr, CSR0, CSR0_TDMD|CSR0_IENA); | 471 | write_rreg (dev->base_addr, CSR0, CSR0_TDMD|CSR0_IENA); |
472 | dev->trans_start = jiffies; | 472 | dev->trans_start = jiffies; |
473 | spin_unlock_irqrestore(priv->chip_lock, flags); | 473 | spin_unlock_irqrestore(&priv->chip_lock, flags); |
474 | 474 | ||
475 | /* | 475 | /* |
476 | * If the next packet is owned by the ethernet device, | 476 | * If the next packet is owned by the ethernet device, |
diff --git a/drivers/net/arm/etherh.c b/drivers/net/arm/etherh.c index 745ac188babe..d15d8b79d8e5 100644 --- a/drivers/net/arm/etherh.c +++ b/drivers/net/arm/etherh.c | |||
@@ -646,7 +646,7 @@ static const struct net_device_ops etherh_netdev_ops = { | |||
646 | .ndo_get_stats = ei_get_stats, | 646 | .ndo_get_stats = ei_get_stats, |
647 | .ndo_set_multicast_list = ei_set_multicast_list, | 647 | .ndo_set_multicast_list = ei_set_multicast_list, |
648 | .ndo_validate_addr = eth_validate_addr, | 648 | .ndo_validate_addr = eth_validate_addr, |
649 | .ndo_set_mac_addr = eth_set_mac_addr, | 649 | .ndo_set_mac_address = eth_set_mac_addr, |
650 | .ndo_change_mtu = eth_change_mtu, | 650 | .ndo_change_mtu = eth_change_mtu, |
651 | #ifdef CONFIG_NET_POLL_CONTROLLER | 651 | #ifdef CONFIG_NET_POLL_CONTROLLER |
652 | .ndo_poll_controller = ei_poll, | 652 | .ndo_poll_controller = ei_poll, |
diff --git a/drivers/net/ax88796.c b/drivers/net/ax88796.c index 337488ec707c..a4eb6c40678c 100644 --- a/drivers/net/ax88796.c +++ b/drivers/net/ax88796.c | |||
@@ -37,7 +37,10 @@ static int phy_debug = 0; | |||
37 | #define __ei_open ax_ei_open | 37 | #define __ei_open ax_ei_open |
38 | #define __ei_close ax_ei_close | 38 | #define __ei_close ax_ei_close |
39 | #define __ei_poll ax_ei_poll | 39 | #define __ei_poll ax_ei_poll |
40 | #define __ei_start_xmit ax_ei_start_xmit | ||
40 | #define __ei_tx_timeout ax_ei_tx_timeout | 41 | #define __ei_tx_timeout ax_ei_tx_timeout |
42 | #define __ei_get_stats ax_ei_get_stats | ||
43 | #define __ei_set_multicast_list ax_ei_set_multicast_list | ||
41 | #define __ei_interrupt ax_ei_interrupt | 44 | #define __ei_interrupt ax_ei_interrupt |
42 | #define ____alloc_ei_netdev ax__alloc_ei_netdev | 45 | #define ____alloc_ei_netdev ax__alloc_ei_netdev |
43 | #define __NS8390_init ax_NS8390_init | 46 | #define __NS8390_init ax_NS8390_init |
@@ -623,6 +626,23 @@ static void ax_eeprom_register_write(struct eeprom_93cx6 *eeprom) | |||
623 | } | 626 | } |
624 | #endif | 627 | #endif |
625 | 628 | ||
629 | static const struct net_device_ops ax_netdev_ops = { | ||
630 | .ndo_open = ax_open, | ||
631 | .ndo_stop = ax_close, | ||
632 | .ndo_do_ioctl = ax_ioctl, | ||
633 | |||
634 | .ndo_start_xmit = ax_ei_start_xmit, | ||
635 | .ndo_tx_timeout = ax_ei_tx_timeout, | ||
636 | .ndo_get_stats = ax_ei_get_stats, | ||
637 | .ndo_set_multicast_list = ax_ei_set_multicast_list, | ||
638 | .ndo_validate_addr = eth_validate_addr, | ||
639 | .ndo_set_mac_address = eth_mac_addr, | ||
640 | .ndo_change_mtu = eth_change_mtu, | ||
641 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
642 | .ndo_poll_controller = ax_ei_poll, | ||
643 | #endif | ||
644 | }; | ||
645 | |||
626 | /* setup code */ | 646 | /* setup code */ |
627 | 647 | ||
628 | static void ax_initial_setup(struct net_device *dev, struct ei_device *ei_local) | 648 | static void ax_initial_setup(struct net_device *dev, struct ei_device *ei_local) |
@@ -738,9 +758,7 @@ static int ax_init_dev(struct net_device *dev, int first_init) | |||
738 | ei_status.get_8390_hdr = &ax_get_8390_hdr; | 758 | ei_status.get_8390_hdr = &ax_get_8390_hdr; |
739 | ei_status.priv = 0; | 759 | ei_status.priv = 0; |
740 | 760 | ||
741 | dev->open = ax_open; | 761 | dev->netdev_ops = &ax_netdev_ops; |
742 | dev->stop = ax_close; | ||
743 | dev->do_ioctl = ax_ioctl; | ||
744 | dev->ethtool_ops = &ax_ethtool_ops; | 762 | dev->ethtool_ops = &ax_ethtool_ops; |
745 | 763 | ||
746 | ax->msg_enable = NETIF_MSG_LINK; | 764 | ax->msg_enable = NETIF_MSG_LINK; |
@@ -753,9 +771,6 @@ static int ax_init_dev(struct net_device *dev, int first_init) | |||
753 | ax->mii.mdio_write = ax_phy_write; | 771 | ax->mii.mdio_write = ax_phy_write; |
754 | ax->mii.dev = dev; | 772 | ax->mii.dev = dev; |
755 | 773 | ||
756 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
757 | dev->poll_controller = ax_ei_poll; | ||
758 | #endif | ||
759 | ax_NS8390_init(dev, 0); | 774 | ax_NS8390_init(dev, 0); |
760 | 775 | ||
761 | if (first_init) | 776 | if (first_init) |
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 5ae131c147f9..c38512ebcea6 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
@@ -679,6 +679,7 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked) | |||
679 | dev_kfree_skb_any(skb); | 679 | dev_kfree_skb_any(skb); |
680 | return -ENOMEM; | 680 | return -ENOMEM; |
681 | } | 681 | } |
682 | bp->force_copybreak = 1; | ||
682 | } | 683 | } |
683 | 684 | ||
684 | rh = (struct rx_header *) skb->data; | 685 | rh = (struct rx_header *) skb->data; |
@@ -800,7 +801,7 @@ static int b44_rx(struct b44 *bp, int budget) | |||
800 | /* Omit CRC. */ | 801 | /* Omit CRC. */ |
801 | len -= 4; | 802 | len -= 4; |
802 | 803 | ||
803 | if (len > RX_COPY_THRESHOLD) { | 804 | if (!bp->force_copybreak && len > RX_COPY_THRESHOLD) { |
804 | int skb_size; | 805 | int skb_size; |
805 | skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod); | 806 | skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod); |
806 | if (skb_size < 0) | 807 | if (skb_size < 0) |
@@ -2152,6 +2153,7 @@ static int __devinit b44_init_one(struct ssb_device *sdev, | |||
2152 | bp = netdev_priv(dev); | 2153 | bp = netdev_priv(dev); |
2153 | bp->sdev = sdev; | 2154 | bp->sdev = sdev; |
2154 | bp->dev = dev; | 2155 | bp->dev = dev; |
2156 | bp->force_copybreak = 0; | ||
2155 | 2157 | ||
2156 | bp->msg_enable = netif_msg_init(b44_debug, B44_DEF_MSG_ENABLE); | 2158 | bp->msg_enable = netif_msg_init(b44_debug, B44_DEF_MSG_ENABLE); |
2157 | 2159 | ||
diff --git a/drivers/net/b44.h b/drivers/net/b44.h index 7db0c84a7950..e678498de6db 100644 --- a/drivers/net/b44.h +++ b/drivers/net/b44.h | |||
@@ -395,7 +395,7 @@ struct b44 { | |||
395 | u32 rx_pending; | 395 | u32 rx_pending; |
396 | u32 tx_pending; | 396 | u32 tx_pending; |
397 | u8 phy_addr; | 397 | u8 phy_addr; |
398 | 398 | u8 force_copybreak; | |
399 | struct mii_if_info mii_if; | 399 | struct mii_if_info mii_if; |
400 | }; | 400 | }; |
401 | 401 | ||
diff --git a/drivers/net/bnx2x.h b/drivers/net/bnx2x.h index fd705d1295a7..15a5cf0f676b 100644 --- a/drivers/net/bnx2x.h +++ b/drivers/net/bnx2x.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* bnx2x.h: Broadcom Everest network driver. | 1 | /* bnx2x.h: Broadcom Everest network driver. |
2 | * | 2 | * |
3 | * Copyright (c) 2007-2008 Broadcom Corporation | 3 | * Copyright (c) 2007-2009 Broadcom Corporation |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
6 | * it under the terms of the GNU General Public License as published by | 6 | * it under the terms of the GNU General Public License as published by |
@@ -20,6 +20,11 @@ | |||
20 | * (you will need to reboot afterwards) */ | 20 | * (you will need to reboot afterwards) */ |
21 | /* #define BNX2X_STOP_ON_ERROR */ | 21 | /* #define BNX2X_STOP_ON_ERROR */ |
22 | 22 | ||
23 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) | ||
24 | #define BCM_VLAN 1 | ||
25 | #endif | ||
26 | |||
27 | |||
23 | /* error/debug prints */ | 28 | /* error/debug prints */ |
24 | 29 | ||
25 | #define DRV_MODULE_NAME "bnx2x" | 30 | #define DRV_MODULE_NAME "bnx2x" |
@@ -78,11 +83,6 @@ | |||
78 | #endif | 83 | #endif |
79 | 84 | ||
80 | 85 | ||
81 | #ifdef NETIF_F_HW_VLAN_TX | ||
82 | #define BCM_VLAN 1 | ||
83 | #endif | ||
84 | |||
85 | |||
86 | #define U64_LO(x) (u32)(((u64)(x)) & 0xffffffff) | 86 | #define U64_LO(x) (u32)(((u64)(x)) & 0xffffffff) |
87 | #define U64_HI(x) (u32)(((u64)(x)) >> 32) | 87 | #define U64_HI(x) (u32)(((u64)(x)) >> 32) |
88 | #define HILO_U64(hi, lo) ((((u64)(hi)) << 32) + (lo)) | 88 | #define HILO_U64(hi, lo) ((((u64)(hi)) << 32) + (lo)) |
@@ -150,6 +150,9 @@ struct sw_rx_page { | |||
150 | 150 | ||
151 | #define PAGES_PER_SGE_SHIFT 0 | 151 | #define PAGES_PER_SGE_SHIFT 0 |
152 | #define PAGES_PER_SGE (1 << PAGES_PER_SGE_SHIFT) | 152 | #define PAGES_PER_SGE (1 << PAGES_PER_SGE_SHIFT) |
153 | #define SGE_PAGE_SIZE PAGE_SIZE | ||
154 | #define SGE_PAGE_SHIFT PAGE_SHIFT | ||
155 | #define SGE_PAGE_ALIGN(addr) PAGE_ALIGN(addr) | ||
153 | 156 | ||
154 | #define BCM_RX_ETH_PAYLOAD_ALIGN 64 | 157 | #define BCM_RX_ETH_PAYLOAD_ALIGN 64 |
155 | 158 | ||
@@ -268,14 +271,7 @@ struct bnx2x_fastpath { | |||
268 | 271 | ||
269 | #define bnx2x_fp(bp, nr, var) (bp->fp[nr].var) | 272 | #define bnx2x_fp(bp, nr, var) (bp->fp[nr].var) |
270 | 273 | ||
271 | #define BNX2X_HAS_TX_WORK(fp) \ | 274 | #define BNX2X_HAS_WORK(fp) (bnx2x_has_rx_work(fp) || bnx2x_has_tx_work(fp)) |
272 | ((fp->tx_pkt_prod != le16_to_cpu(*fp->tx_cons_sb)) || \ | ||
273 | (fp->tx_pkt_prod != fp->tx_pkt_cons)) | ||
274 | |||
275 | #define BNX2X_HAS_RX_WORK(fp) \ | ||
276 | (fp->rx_comp_cons != rx_cons_sb) | ||
277 | |||
278 | #define BNX2X_HAS_WORK(fp) (BNX2X_HAS_RX_WORK(fp) || BNX2X_HAS_TX_WORK(fp)) | ||
279 | 275 | ||
280 | 276 | ||
281 | /* MC hsi */ | 277 | /* MC hsi */ |
@@ -736,7 +732,7 @@ struct bnx2x { | |||
736 | struct bnx2x_fastpath fp[MAX_CONTEXT]; | 732 | struct bnx2x_fastpath fp[MAX_CONTEXT]; |
737 | void __iomem *regview; | 733 | void __iomem *regview; |
738 | void __iomem *doorbells; | 734 | void __iomem *doorbells; |
739 | #define BNX2X_DB_SIZE (16*2048) | 735 | #define BNX2X_DB_SIZE (16*BCM_PAGE_SIZE) |
740 | 736 | ||
741 | struct net_device *dev; | 737 | struct net_device *dev; |
742 | struct pci_dev *pdev; | 738 | struct pci_dev *pdev; |
@@ -801,6 +797,8 @@ struct bnx2x { | |||
801 | #define TPA_ENABLE_FLAG 0x80 | 797 | #define TPA_ENABLE_FLAG 0x80 |
802 | #define NO_MCP_FLAG 0x100 | 798 | #define NO_MCP_FLAG 0x100 |
803 | #define BP_NOMCP(bp) (bp->flags & NO_MCP_FLAG) | 799 | #define BP_NOMCP(bp) (bp->flags & NO_MCP_FLAG) |
800 | #define HW_VLAN_TX_FLAG 0x400 | ||
801 | #define HW_VLAN_RX_FLAG 0x800 | ||
804 | 802 | ||
805 | int func; | 803 | int func; |
806 | #define BP_PORT(bp) (bp->func % PORT_MAX) | 804 | #define BP_PORT(bp) (bp->func % PORT_MAX) |
@@ -811,7 +809,7 @@ struct bnx2x { | |||
811 | int pm_cap; | 809 | int pm_cap; |
812 | int pcie_cap; | 810 | int pcie_cap; |
813 | 811 | ||
814 | struct work_struct sp_task; | 812 | struct delayed_work sp_task; |
815 | struct work_struct reset_task; | 813 | struct work_struct reset_task; |
816 | 814 | ||
817 | struct timer_list timer; | 815 | struct timer_list timer; |
diff --git a/drivers/net/bnx2x_link.c b/drivers/net/bnx2x_link.c index fefa6ab13064..aea26b4dc453 100644 --- a/drivers/net/bnx2x_link.c +++ b/drivers/net/bnx2x_link.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* Copyright 2008 Broadcom Corporation | 1 | /* Copyright 2008-2009 Broadcom Corporation |
2 | * | 2 | * |
3 | * Unless you and Broadcom execute a separate written software license | 3 | * Unless you and Broadcom execute a separate written software license |
4 | * agreement governing use of this software, this software is licensed to you | 4 | * agreement governing use of this software, this software is licensed to you |
@@ -317,6 +317,9 @@ static u8 bnx2x_emac_enable(struct link_params *params, | |||
317 | val &= ~0x810; | 317 | val &= ~0x810; |
318 | EMAC_WR(bp, EMAC_REG_EMAC_MODE, val); | 318 | EMAC_WR(bp, EMAC_REG_EMAC_MODE, val); |
319 | 319 | ||
320 | /* enable emac */ | ||
321 | REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 1); | ||
322 | |||
320 | /* enable emac for jumbo packets */ | 323 | /* enable emac for jumbo packets */ |
321 | EMAC_WR(bp, EMAC_REG_EMAC_RX_MTU_SIZE, | 324 | EMAC_WR(bp, EMAC_REG_EMAC_RX_MTU_SIZE, |
322 | (EMAC_RX_MTU_SIZE_JUMBO_ENA | | 325 | (EMAC_RX_MTU_SIZE_JUMBO_ENA | |
@@ -1609,7 +1612,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params, | |||
1609 | u32 gp_status) | 1612 | u32 gp_status) |
1610 | { | 1613 | { |
1611 | struct bnx2x *bp = params->bp; | 1614 | struct bnx2x *bp = params->bp; |
1612 | 1615 | u16 new_line_speed; | |
1613 | u8 rc = 0; | 1616 | u8 rc = 0; |
1614 | vars->link_status = 0; | 1617 | vars->link_status = 0; |
1615 | 1618 | ||
@@ -1629,7 +1632,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params, | |||
1629 | 1632 | ||
1630 | switch (gp_status & GP_STATUS_SPEED_MASK) { | 1633 | switch (gp_status & GP_STATUS_SPEED_MASK) { |
1631 | case GP_STATUS_10M: | 1634 | case GP_STATUS_10M: |
1632 | vars->line_speed = SPEED_10; | 1635 | new_line_speed = SPEED_10; |
1633 | if (vars->duplex == DUPLEX_FULL) | 1636 | if (vars->duplex == DUPLEX_FULL) |
1634 | vars->link_status |= LINK_10TFD; | 1637 | vars->link_status |= LINK_10TFD; |
1635 | else | 1638 | else |
@@ -1637,7 +1640,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params, | |||
1637 | break; | 1640 | break; |
1638 | 1641 | ||
1639 | case GP_STATUS_100M: | 1642 | case GP_STATUS_100M: |
1640 | vars->line_speed = SPEED_100; | 1643 | new_line_speed = SPEED_100; |
1641 | if (vars->duplex == DUPLEX_FULL) | 1644 | if (vars->duplex == DUPLEX_FULL) |
1642 | vars->link_status |= LINK_100TXFD; | 1645 | vars->link_status |= LINK_100TXFD; |
1643 | else | 1646 | else |
@@ -1646,7 +1649,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params, | |||
1646 | 1649 | ||
1647 | case GP_STATUS_1G: | 1650 | case GP_STATUS_1G: |
1648 | case GP_STATUS_1G_KX: | 1651 | case GP_STATUS_1G_KX: |
1649 | vars->line_speed = SPEED_1000; | 1652 | new_line_speed = SPEED_1000; |
1650 | if (vars->duplex == DUPLEX_FULL) | 1653 | if (vars->duplex == DUPLEX_FULL) |
1651 | vars->link_status |= LINK_1000TFD; | 1654 | vars->link_status |= LINK_1000TFD; |
1652 | else | 1655 | else |
@@ -1654,7 +1657,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params, | |||
1654 | break; | 1657 | break; |
1655 | 1658 | ||
1656 | case GP_STATUS_2_5G: | 1659 | case GP_STATUS_2_5G: |
1657 | vars->line_speed = SPEED_2500; | 1660 | new_line_speed = SPEED_2500; |
1658 | if (vars->duplex == DUPLEX_FULL) | 1661 | if (vars->duplex == DUPLEX_FULL) |
1659 | vars->link_status |= LINK_2500TFD; | 1662 | vars->link_status |= LINK_2500TFD; |
1660 | else | 1663 | else |
@@ -1671,32 +1674,32 @@ static u8 bnx2x_link_settings_status(struct link_params *params, | |||
1671 | case GP_STATUS_10G_KX4: | 1674 | case GP_STATUS_10G_KX4: |
1672 | case GP_STATUS_10G_HIG: | 1675 | case GP_STATUS_10G_HIG: |
1673 | case GP_STATUS_10G_CX4: | 1676 | case GP_STATUS_10G_CX4: |
1674 | vars->line_speed = SPEED_10000; | 1677 | new_line_speed = SPEED_10000; |
1675 | vars->link_status |= LINK_10GTFD; | 1678 | vars->link_status |= LINK_10GTFD; |
1676 | break; | 1679 | break; |
1677 | 1680 | ||
1678 | case GP_STATUS_12G_HIG: | 1681 | case GP_STATUS_12G_HIG: |
1679 | vars->line_speed = SPEED_12000; | 1682 | new_line_speed = SPEED_12000; |
1680 | vars->link_status |= LINK_12GTFD; | 1683 | vars->link_status |= LINK_12GTFD; |
1681 | break; | 1684 | break; |
1682 | 1685 | ||
1683 | case GP_STATUS_12_5G: | 1686 | case GP_STATUS_12_5G: |
1684 | vars->line_speed = SPEED_12500; | 1687 | new_line_speed = SPEED_12500; |
1685 | vars->link_status |= LINK_12_5GTFD; | 1688 | vars->link_status |= LINK_12_5GTFD; |
1686 | break; | 1689 | break; |
1687 | 1690 | ||
1688 | case GP_STATUS_13G: | 1691 | case GP_STATUS_13G: |
1689 | vars->line_speed = SPEED_13000; | 1692 | new_line_speed = SPEED_13000; |
1690 | vars->link_status |= LINK_13GTFD; | 1693 | vars->link_status |= LINK_13GTFD; |
1691 | break; | 1694 | break; |
1692 | 1695 | ||
1693 | case GP_STATUS_15G: | 1696 | case GP_STATUS_15G: |
1694 | vars->line_speed = SPEED_15000; | 1697 | new_line_speed = SPEED_15000; |
1695 | vars->link_status |= LINK_15GTFD; | 1698 | vars->link_status |= LINK_15GTFD; |
1696 | break; | 1699 | break; |
1697 | 1700 | ||
1698 | case GP_STATUS_16G: | 1701 | case GP_STATUS_16G: |
1699 | vars->line_speed = SPEED_16000; | 1702 | new_line_speed = SPEED_16000; |
1700 | vars->link_status |= LINK_16GTFD; | 1703 | vars->link_status |= LINK_16GTFD; |
1701 | break; | 1704 | break; |
1702 | 1705 | ||
@@ -1708,6 +1711,15 @@ static u8 bnx2x_link_settings_status(struct link_params *params, | |||
1708 | break; | 1711 | break; |
1709 | } | 1712 | } |
1710 | 1713 | ||
1714 | /* Upon link speed change set the NIG into drain mode. | ||
1715 | Comes to deals with possible FIFO glitch due to clk change | ||
1716 | when speed is decreased without link down indicator */ | ||
1717 | if (new_line_speed != vars->line_speed) { | ||
1718 | REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE | ||
1719 | + params->port*4, 0); | ||
1720 | msleep(1); | ||
1721 | } | ||
1722 | vars->line_speed = new_line_speed; | ||
1711 | vars->link_status |= LINK_STATUS_SERDES_LINK; | 1723 | vars->link_status |= LINK_STATUS_SERDES_LINK; |
1712 | 1724 | ||
1713 | if ((params->req_line_speed == SPEED_AUTO_NEG) && | 1725 | if ((params->req_line_speed == SPEED_AUTO_NEG) && |
@@ -3571,7 +3583,7 @@ static void bnx2x_set_xgxs_loopback(struct link_params *params, | |||
3571 | (MDIO_REG_BANK_CL73_IEEEB0 + | 3583 | (MDIO_REG_BANK_CL73_IEEEB0 + |
3572 | (MDIO_CL73_IEEEB0_CL73_AN_CONTROL & 0xf)), | 3584 | (MDIO_CL73_IEEEB0_CL73_AN_CONTROL & 0xf)), |
3573 | 0x6041); | 3585 | 0x6041); |
3574 | 3586 | msleep(200); | |
3575 | /* set aer mmd back */ | 3587 | /* set aer mmd back */ |
3576 | bnx2x_set_aer_mmd(params, vars); | 3588 | bnx2x_set_aer_mmd(params, vars); |
3577 | 3589 | ||
@@ -3870,9 +3882,15 @@ static u8 bnx2x_link_initialize(struct link_params *params, | |||
3870 | } | 3882 | } |
3871 | 3883 | ||
3872 | if (vars->phy_flags & PHY_XGXS_FLAG) { | 3884 | if (vars->phy_flags & PHY_XGXS_FLAG) { |
3873 | if (params->req_line_speed && | 3885 | if ((params->req_line_speed && |
3874 | ((params->req_line_speed == SPEED_100) || | 3886 | ((params->req_line_speed == SPEED_100) || |
3875 | (params->req_line_speed == SPEED_10))) { | 3887 | (params->req_line_speed == SPEED_10))) || |
3888 | (!params->req_line_speed && | ||
3889 | (params->speed_cap_mask >= | ||
3890 | PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL) && | ||
3891 | (params->speed_cap_mask < | ||
3892 | PORT_HW_CFG_SPEED_CAPABILITY_D0_1G) | ||
3893 | )) { | ||
3876 | vars->phy_flags |= PHY_SGMII_FLAG; | 3894 | vars->phy_flags |= PHY_SGMII_FLAG; |
3877 | } else { | 3895 | } else { |
3878 | vars->phy_flags &= ~PHY_SGMII_FLAG; | 3896 | vars->phy_flags &= ~PHY_SGMII_FLAG; |
@@ -4194,6 +4212,11 @@ static u8 bnx2x_update_link_down(struct link_params *params, | |||
4194 | /* activate nig drain */ | 4212 | /* activate nig drain */ |
4195 | REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1); | 4213 | REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1); |
4196 | 4214 | ||
4215 | /* disable emac */ | ||
4216 | REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0); | ||
4217 | |||
4218 | msleep(10); | ||
4219 | |||
4197 | /* reset BigMac */ | 4220 | /* reset BigMac */ |
4198 | bnx2x_bmac_rx_disable(bp, params->port); | 4221 | bnx2x_bmac_rx_disable(bp, params->port); |
4199 | REG_WR(bp, GRCBASE_MISC + | 4222 | REG_WR(bp, GRCBASE_MISC + |
@@ -4238,6 +4261,7 @@ static u8 bnx2x_update_link_up(struct link_params *params, | |||
4238 | 4261 | ||
4239 | /* update shared memory */ | 4262 | /* update shared memory */ |
4240 | bnx2x_update_mng(params, vars->link_status); | 4263 | bnx2x_update_mng(params, vars->link_status); |
4264 | msleep(20); | ||
4241 | return rc; | 4265 | return rc; |
4242 | } | 4266 | } |
4243 | /* This function should called upon link interrupt */ | 4267 | /* This function should called upon link interrupt */ |
@@ -4276,6 +4300,9 @@ u8 bnx2x_link_update(struct link_params *params, struct link_vars *vars) | |||
4276 | REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68), | 4300 | REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68), |
4277 | REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68)); | 4301 | REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68)); |
4278 | 4302 | ||
4303 | /* disable emac */ | ||
4304 | REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0); | ||
4305 | |||
4279 | ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); | 4306 | ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); |
4280 | 4307 | ||
4281 | /* Check external link change only for non-direct */ | 4308 | /* Check external link change only for non-direct */ |
@@ -4377,10 +4404,11 @@ static u8 bnx2x_8073_common_init_phy(struct bnx2x *bp, u32 shmem_base) | |||
4377 | ext_phy_addr[port], | 4404 | ext_phy_addr[port], |
4378 | MDIO_PMA_DEVAD, | 4405 | MDIO_PMA_DEVAD, |
4379 | MDIO_PMA_REG_ROM_VER1, &fw_ver1); | 4406 | MDIO_PMA_REG_ROM_VER1, &fw_ver1); |
4380 | if (fw_ver1 == 0) { | 4407 | if (fw_ver1 == 0 || fw_ver1 == 0x4321) { |
4381 | DP(NETIF_MSG_LINK, | 4408 | DP(NETIF_MSG_LINK, |
4382 | "bnx2x_8073_common_init_phy port %x " | 4409 | "bnx2x_8073_common_init_phy port %x:" |
4383 | "fw Download failed\n", port); | 4410 | "Download failed. fw version = 0x%x\n", |
4411 | port, fw_ver1); | ||
4384 | return -EINVAL; | 4412 | return -EINVAL; |
4385 | } | 4413 | } |
4386 | 4414 | ||
diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c index 4be05847f86f..d3e7775a9ccf 100644 --- a/drivers/net/bnx2x_main.c +++ b/drivers/net/bnx2x_main.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* bnx2x_main.c: Broadcom Everest network driver. | 1 | /* bnx2x_main.c: Broadcom Everest network driver. |
2 | * | 2 | * |
3 | * Copyright (c) 2007-2008 Broadcom Corporation | 3 | * Copyright (c) 2007-2009 Broadcom Corporation |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
6 | * it under the terms of the GNU General Public License as published by | 6 | * it under the terms of the GNU General Public License as published by |
@@ -38,9 +38,7 @@ | |||
38 | #include <linux/time.h> | 38 | #include <linux/time.h> |
39 | #include <linux/ethtool.h> | 39 | #include <linux/ethtool.h> |
40 | #include <linux/mii.h> | 40 | #include <linux/mii.h> |
41 | #ifdef NETIF_F_HW_VLAN_TX | 41 | #include <linux/if_vlan.h> |
42 | #include <linux/if_vlan.h> | ||
43 | #endif | ||
44 | #include <net/ip.h> | 42 | #include <net/ip.h> |
45 | #include <net/tcp.h> | 43 | #include <net/tcp.h> |
46 | #include <net/checksum.h> | 44 | #include <net/checksum.h> |
@@ -59,8 +57,8 @@ | |||
59 | #include "bnx2x.h" | 57 | #include "bnx2x.h" |
60 | #include "bnx2x_init.h" | 58 | #include "bnx2x_init.h" |
61 | 59 | ||
62 | #define DRV_MODULE_VERSION "1.45.23" | 60 | #define DRV_MODULE_VERSION "1.45.26" |
63 | #define DRV_MODULE_RELDATE "2008/11/03" | 61 | #define DRV_MODULE_RELDATE "2009/01/26" |
64 | #define BNX2X_BC_VER 0x040200 | 62 | #define BNX2X_BC_VER 0x040200 |
65 | 63 | ||
66 | /* Time in jiffies before concluding the transmitter is hung */ | 64 | /* Time in jiffies before concluding the transmitter is hung */ |
@@ -71,7 +69,7 @@ static char version[] __devinitdata = | |||
71 | DRV_MODULE_NAME " " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; | 69 | DRV_MODULE_NAME " " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; |
72 | 70 | ||
73 | MODULE_AUTHOR("Eliezer Tamir"); | 71 | MODULE_AUTHOR("Eliezer Tamir"); |
74 | MODULE_DESCRIPTION("Broadcom NetXtreme II BCM57710 Driver"); | 72 | MODULE_DESCRIPTION("Broadcom NetXtreme II BCM57710/57711/57711E Driver"); |
75 | MODULE_LICENSE("GPL"); | 73 | MODULE_LICENSE("GPL"); |
76 | MODULE_VERSION(DRV_MODULE_VERSION); | 74 | MODULE_VERSION(DRV_MODULE_VERSION); |
77 | 75 | ||
@@ -95,6 +93,7 @@ MODULE_PARM_DESC(debug, "default debug msglevel"); | |||
95 | module_param(use_multi, int, 0); | 93 | module_param(use_multi, int, 0); |
96 | MODULE_PARM_DESC(use_multi, "use per-CPU queues"); | 94 | MODULE_PARM_DESC(use_multi, "use per-CPU queues"); |
97 | #endif | 95 | #endif |
96 | static struct workqueue_struct *bnx2x_wq; | ||
98 | 97 | ||
99 | enum bnx2x_board_type { | 98 | enum bnx2x_board_type { |
100 | BCM57710 = 0, | 99 | BCM57710 = 0, |
@@ -671,7 +670,8 @@ static void bnx2x_int_disable_sync(struct bnx2x *bp, int disable_hw) | |||
671 | synchronize_irq(bp->pdev->irq); | 670 | synchronize_irq(bp->pdev->irq); |
672 | 671 | ||
673 | /* make sure sp_task is not running */ | 672 | /* make sure sp_task is not running */ |
674 | cancel_work_sync(&bp->sp_task); | 673 | cancel_delayed_work(&bp->sp_task); |
674 | flush_workqueue(bnx2x_wq); | ||
675 | } | 675 | } |
676 | 676 | ||
677 | /* fast path */ | 677 | /* fast path */ |
@@ -733,6 +733,24 @@ static u16 bnx2x_ack_int(struct bnx2x *bp) | |||
733 | * fast path service functions | 733 | * fast path service functions |
734 | */ | 734 | */ |
735 | 735 | ||
736 | static inline int bnx2x_has_tx_work(struct bnx2x_fastpath *fp) | ||
737 | { | ||
738 | u16 tx_cons_sb; | ||
739 | |||
740 | /* Tell compiler that status block fields can change */ | ||
741 | barrier(); | ||
742 | tx_cons_sb = le16_to_cpu(*fp->tx_cons_sb); | ||
743 | return (fp->tx_pkt_cons != tx_cons_sb); | ||
744 | } | ||
745 | |||
746 | static inline int bnx2x_has_tx_work_unload(struct bnx2x_fastpath *fp) | ||
747 | { | ||
748 | /* Tell compiler that consumer and producer can change */ | ||
749 | barrier(); | ||
750 | return (fp->tx_pkt_prod != fp->tx_pkt_cons); | ||
751 | |||
752 | } | ||
753 | |||
736 | /* free skb in the packet ring at pos idx | 754 | /* free skb in the packet ring at pos idx |
737 | * return idx of last bd freed | 755 | * return idx of last bd freed |
738 | */ | 756 | */ |
@@ -972,7 +990,7 @@ static inline void bnx2x_free_rx_sge(struct bnx2x *bp, | |||
972 | return; | 990 | return; |
973 | 991 | ||
974 | pci_unmap_page(bp->pdev, pci_unmap_addr(sw_buf, mapping), | 992 | pci_unmap_page(bp->pdev, pci_unmap_addr(sw_buf, mapping), |
975 | BCM_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE); | 993 | SGE_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE); |
976 | __free_pages(page, PAGES_PER_SGE_SHIFT); | 994 | __free_pages(page, PAGES_PER_SGE_SHIFT); |
977 | 995 | ||
978 | sw_buf->page = NULL; | 996 | sw_buf->page = NULL; |
@@ -1000,7 +1018,7 @@ static inline int bnx2x_alloc_rx_sge(struct bnx2x *bp, | |||
1000 | if (unlikely(page == NULL)) | 1018 | if (unlikely(page == NULL)) |
1001 | return -ENOMEM; | 1019 | return -ENOMEM; |
1002 | 1020 | ||
1003 | mapping = pci_map_page(bp->pdev, page, 0, BCM_PAGE_SIZE*PAGES_PER_SGE, | 1021 | mapping = pci_map_page(bp->pdev, page, 0, SGE_PAGE_SIZE*PAGES_PER_SGE, |
1004 | PCI_DMA_FROMDEVICE); | 1022 | PCI_DMA_FROMDEVICE); |
1005 | if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) { | 1023 | if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) { |
1006 | __free_pages(page, PAGES_PER_SGE_SHIFT); | 1024 | __free_pages(page, PAGES_PER_SGE_SHIFT); |
@@ -1096,9 +1114,9 @@ static void bnx2x_update_sge_prod(struct bnx2x_fastpath *fp, | |||
1096 | struct eth_fast_path_rx_cqe *fp_cqe) | 1114 | struct eth_fast_path_rx_cqe *fp_cqe) |
1097 | { | 1115 | { |
1098 | struct bnx2x *bp = fp->bp; | 1116 | struct bnx2x *bp = fp->bp; |
1099 | u16 sge_len = BCM_PAGE_ALIGN(le16_to_cpu(fp_cqe->pkt_len) - | 1117 | u16 sge_len = SGE_PAGE_ALIGN(le16_to_cpu(fp_cqe->pkt_len) - |
1100 | le16_to_cpu(fp_cqe->len_on_bd)) >> | 1118 | le16_to_cpu(fp_cqe->len_on_bd)) >> |
1101 | BCM_PAGE_SHIFT; | 1119 | SGE_PAGE_SHIFT; |
1102 | u16 last_max, last_elem, first_elem; | 1120 | u16 last_max, last_elem, first_elem; |
1103 | u16 delta = 0; | 1121 | u16 delta = 0; |
1104 | u16 i; | 1122 | u16 i; |
@@ -1203,22 +1221,22 @@ static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp, | |||
1203 | u16 cqe_idx) | 1221 | u16 cqe_idx) |
1204 | { | 1222 | { |
1205 | struct sw_rx_page *rx_pg, old_rx_pg; | 1223 | struct sw_rx_page *rx_pg, old_rx_pg; |
1206 | struct page *sge; | ||
1207 | u16 len_on_bd = le16_to_cpu(fp_cqe->len_on_bd); | 1224 | u16 len_on_bd = le16_to_cpu(fp_cqe->len_on_bd); |
1208 | u32 i, frag_len, frag_size, pages; | 1225 | u32 i, frag_len, frag_size, pages; |
1209 | int err; | 1226 | int err; |
1210 | int j; | 1227 | int j; |
1211 | 1228 | ||
1212 | frag_size = le16_to_cpu(fp_cqe->pkt_len) - len_on_bd; | 1229 | frag_size = le16_to_cpu(fp_cqe->pkt_len) - len_on_bd; |
1213 | pages = BCM_PAGE_ALIGN(frag_size) >> BCM_PAGE_SHIFT; | 1230 | pages = SGE_PAGE_ALIGN(frag_size) >> SGE_PAGE_SHIFT; |
1214 | 1231 | ||
1215 | /* This is needed in order to enable forwarding support */ | 1232 | /* This is needed in order to enable forwarding support */ |
1216 | if (frag_size) | 1233 | if (frag_size) |
1217 | skb_shinfo(skb)->gso_size = min((u32)BCM_PAGE_SIZE, | 1234 | skb_shinfo(skb)->gso_size = min((u32)SGE_PAGE_SIZE, |
1218 | max(frag_size, (u32)len_on_bd)); | 1235 | max(frag_size, (u32)len_on_bd)); |
1219 | 1236 | ||
1220 | #ifdef BNX2X_STOP_ON_ERROR | 1237 | #ifdef BNX2X_STOP_ON_ERROR |
1221 | if (pages > 8*PAGES_PER_SGE) { | 1238 | if (pages > |
1239 | min((u32)8, (u32)MAX_SKB_FRAGS) * SGE_PAGE_SIZE * PAGES_PER_SGE) { | ||
1222 | BNX2X_ERR("SGL length is too long: %d. CQE index is %d\n", | 1240 | BNX2X_ERR("SGL length is too long: %d. CQE index is %d\n", |
1223 | pages, cqe_idx); | 1241 | pages, cqe_idx); |
1224 | BNX2X_ERR("fp_cqe->pkt_len = %d fp_cqe->len_on_bd = %d\n", | 1242 | BNX2X_ERR("fp_cqe->pkt_len = %d fp_cqe->len_on_bd = %d\n", |
@@ -1234,9 +1252,8 @@ static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp, | |||
1234 | 1252 | ||
1235 | /* FW gives the indices of the SGE as if the ring is an array | 1253 | /* FW gives the indices of the SGE as if the ring is an array |
1236 | (meaning that "next" element will consume 2 indices) */ | 1254 | (meaning that "next" element will consume 2 indices) */ |
1237 | frag_len = min(frag_size, (u32)(BCM_PAGE_SIZE*PAGES_PER_SGE)); | 1255 | frag_len = min(frag_size, (u32)(SGE_PAGE_SIZE*PAGES_PER_SGE)); |
1238 | rx_pg = &fp->rx_page_ring[sge_idx]; | 1256 | rx_pg = &fp->rx_page_ring[sge_idx]; |
1239 | sge = rx_pg->page; | ||
1240 | old_rx_pg = *rx_pg; | 1257 | old_rx_pg = *rx_pg; |
1241 | 1258 | ||
1242 | /* If we fail to allocate a substitute page, we simply stop | 1259 | /* If we fail to allocate a substitute page, we simply stop |
@@ -1249,7 +1266,7 @@ static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp, | |||
1249 | 1266 | ||
1250 | /* Unmap the page as we r going to pass it to the stack */ | 1267 | /* Unmap the page as we r going to pass it to the stack */ |
1251 | pci_unmap_page(bp->pdev, pci_unmap_addr(&old_rx_pg, mapping), | 1268 | pci_unmap_page(bp->pdev, pci_unmap_addr(&old_rx_pg, mapping), |
1252 | BCM_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE); | 1269 | SGE_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE); |
1253 | 1270 | ||
1254 | /* Add one frag and update the appropriate fields in the skb */ | 1271 | /* Add one frag and update the appropriate fields in the skb */ |
1255 | skb_fill_page_desc(skb, j, old_rx_pg.page, 0, frag_len); | 1272 | skb_fill_page_desc(skb, j, old_rx_pg.page, 0, frag_len); |
@@ -1282,6 +1299,13 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp, | |||
1282 | if (likely(new_skb)) { | 1299 | if (likely(new_skb)) { |
1283 | /* fix ip xsum and give it to the stack */ | 1300 | /* fix ip xsum and give it to the stack */ |
1284 | /* (no need to map the new skb) */ | 1301 | /* (no need to map the new skb) */ |
1302 | #ifdef BCM_VLAN | ||
1303 | int is_vlan_cqe = | ||
1304 | (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & | ||
1305 | PARSING_FLAGS_VLAN); | ||
1306 | int is_not_hwaccel_vlan_cqe = | ||
1307 | (is_vlan_cqe && (!(bp->flags & HW_VLAN_RX_FLAG))); | ||
1308 | #endif | ||
1285 | 1309 | ||
1286 | prefetch(skb); | 1310 | prefetch(skb); |
1287 | prefetch(((char *)(skb)) + 128); | 1311 | prefetch(((char *)(skb)) + 128); |
@@ -1306,6 +1330,12 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp, | |||
1306 | struct iphdr *iph; | 1330 | struct iphdr *iph; |
1307 | 1331 | ||
1308 | iph = (struct iphdr *)skb->data; | 1332 | iph = (struct iphdr *)skb->data; |
1333 | #ifdef BCM_VLAN | ||
1334 | /* If there is no Rx VLAN offloading - | ||
1335 | take VLAN tag into an account */ | ||
1336 | if (unlikely(is_not_hwaccel_vlan_cqe)) | ||
1337 | iph = (struct iphdr *)((u8 *)iph + VLAN_HLEN); | ||
1338 | #endif | ||
1309 | iph->check = 0; | 1339 | iph->check = 0; |
1310 | iph->check = ip_fast_csum((u8 *)iph, iph->ihl); | 1340 | iph->check = ip_fast_csum((u8 *)iph, iph->ihl); |
1311 | } | 1341 | } |
@@ -1313,9 +1343,8 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp, | |||
1313 | if (!bnx2x_fill_frag_skb(bp, fp, skb, | 1343 | if (!bnx2x_fill_frag_skb(bp, fp, skb, |
1314 | &cqe->fast_path_cqe, cqe_idx)) { | 1344 | &cqe->fast_path_cqe, cqe_idx)) { |
1315 | #ifdef BCM_VLAN | 1345 | #ifdef BCM_VLAN |
1316 | if ((bp->vlgrp != NULL) && | 1346 | if ((bp->vlgrp != NULL) && is_vlan_cqe && |
1317 | (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & | 1347 | (!is_not_hwaccel_vlan_cqe)) |
1318 | PARSING_FLAGS_VLAN)) | ||
1319 | vlan_hwaccel_receive_skb(skb, bp->vlgrp, | 1348 | vlan_hwaccel_receive_skb(skb, bp->vlgrp, |
1320 | le16_to_cpu(cqe->fast_path_cqe. | 1349 | le16_to_cpu(cqe->fast_path_cqe. |
1321 | vlan_tag)); | 1350 | vlan_tag)); |
@@ -1355,11 +1384,23 @@ static inline void bnx2x_update_rx_prod(struct bnx2x *bp, | |||
1355 | rx_prods.cqe_prod = rx_comp_prod; | 1384 | rx_prods.cqe_prod = rx_comp_prod; |
1356 | rx_prods.sge_prod = rx_sge_prod; | 1385 | rx_prods.sge_prod = rx_sge_prod; |
1357 | 1386 | ||
1387 | /* | ||
1388 | * Make sure that the BD and SGE data is updated before updating the | ||
1389 | * producers since FW might read the BD/SGE right after the producer | ||
1390 | * is updated. | ||
1391 | * This is only applicable for weak-ordered memory model archs such | ||
1392 | * as IA-64. The following barrier is also mandatory since FW will | ||
1393 | * assumes BDs must have buffers. | ||
1394 | */ | ||
1395 | wmb(); | ||
1396 | |||
1358 | for (i = 0; i < sizeof(struct tstorm_eth_rx_producers)/4; i++) | 1397 | for (i = 0; i < sizeof(struct tstorm_eth_rx_producers)/4; i++) |
1359 | REG_WR(bp, BAR_TSTRORM_INTMEM + | 1398 | REG_WR(bp, BAR_TSTRORM_INTMEM + |
1360 | TSTORM_RX_PRODS_OFFSET(BP_PORT(bp), FP_CL_ID(fp)) + i*4, | 1399 | TSTORM_RX_PRODS_OFFSET(BP_PORT(bp), FP_CL_ID(fp)) + i*4, |
1361 | ((u32 *)&rx_prods)[i]); | 1400 | ((u32 *)&rx_prods)[i]); |
1362 | 1401 | ||
1402 | mmiowb(); /* keep prod updates ordered */ | ||
1403 | |||
1363 | DP(NETIF_MSG_RX_STATUS, | 1404 | DP(NETIF_MSG_RX_STATUS, |
1364 | "Wrote: bd_prod %u cqe_prod %u sge_prod %u\n", | 1405 | "Wrote: bd_prod %u cqe_prod %u sge_prod %u\n", |
1365 | bd_prod, rx_comp_prod, rx_sge_prod); | 1406 | bd_prod, rx_comp_prod, rx_sge_prod); |
@@ -1415,7 +1456,7 @@ static int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget) | |||
1415 | DP(NETIF_MSG_RX_STATUS, "CQE type %x err %x status %x" | 1456 | DP(NETIF_MSG_RX_STATUS, "CQE type %x err %x status %x" |
1416 | " queue %x vlan %x len %u\n", CQE_TYPE(cqe_fp_flags), | 1457 | " queue %x vlan %x len %u\n", CQE_TYPE(cqe_fp_flags), |
1417 | cqe_fp_flags, cqe->fast_path_cqe.status_flags, | 1458 | cqe_fp_flags, cqe->fast_path_cqe.status_flags, |
1418 | cqe->fast_path_cqe.rss_hash_result, | 1459 | le32_to_cpu(cqe->fast_path_cqe.rss_hash_result), |
1419 | le16_to_cpu(cqe->fast_path_cqe.vlan_tag), | 1460 | le16_to_cpu(cqe->fast_path_cqe.vlan_tag), |
1420 | le16_to_cpu(cqe->fast_path_cqe.pkt_len)); | 1461 | le16_to_cpu(cqe->fast_path_cqe.pkt_len)); |
1421 | 1462 | ||
@@ -1547,7 +1588,7 @@ reuse_rx: | |||
1547 | } | 1588 | } |
1548 | 1589 | ||
1549 | #ifdef BCM_VLAN | 1590 | #ifdef BCM_VLAN |
1550 | if ((bp->vlgrp != NULL) && | 1591 | if ((bp->vlgrp != NULL) && (bp->flags & HW_VLAN_RX_FLAG) && |
1551 | (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & | 1592 | (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & |
1552 | PARSING_FLAGS_VLAN)) | 1593 | PARSING_FLAGS_VLAN)) |
1553 | vlan_hwaccel_receive_skb(skb, bp->vlgrp, | 1594 | vlan_hwaccel_receive_skb(skb, bp->vlgrp, |
@@ -1580,7 +1621,6 @@ next_cqe: | |||
1580 | /* Update producers */ | 1621 | /* Update producers */ |
1581 | bnx2x_update_rx_prod(bp, fp, bd_prod_fw, sw_comp_prod, | 1622 | bnx2x_update_rx_prod(bp, fp, bd_prod_fw, sw_comp_prod, |
1582 | fp->rx_sge_prod); | 1623 | fp->rx_sge_prod); |
1583 | mmiowb(); /* keep prod updates ordered */ | ||
1584 | 1624 | ||
1585 | fp->rx_pkt += rx_pkt; | 1625 | fp->rx_pkt += rx_pkt; |
1586 | fp->rx_calls++; | 1626 | fp->rx_calls++; |
@@ -1660,7 +1700,7 @@ static irqreturn_t bnx2x_interrupt(int irq, void *dev_instance) | |||
1660 | 1700 | ||
1661 | 1701 | ||
1662 | if (unlikely(status & 0x1)) { | 1702 | if (unlikely(status & 0x1)) { |
1663 | schedule_work(&bp->sp_task); | 1703 | queue_delayed_work(bnx2x_wq, &bp->sp_task, 0); |
1664 | 1704 | ||
1665 | status &= ~0x1; | 1705 | status &= ~0x1; |
1666 | if (!status) | 1706 | if (!status) |
@@ -1887,7 +1927,8 @@ static int bnx2x_set_spio(struct bnx2x *bp, int spio_num, u32 mode) | |||
1887 | 1927 | ||
1888 | static void bnx2x_calc_fc_adv(struct bnx2x *bp) | 1928 | static void bnx2x_calc_fc_adv(struct bnx2x *bp) |
1889 | { | 1929 | { |
1890 | switch (bp->link_vars.ieee_fc) { | 1930 | switch (bp->link_vars.ieee_fc & |
1931 | MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK) { | ||
1891 | case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE: | 1932 | case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE: |
1892 | bp->port.advertising &= ~(ADVERTISED_Asym_Pause | | 1933 | bp->port.advertising &= ~(ADVERTISED_Asym_Pause | |
1893 | ADVERTISED_Pause); | 1934 | ADVERTISED_Pause); |
@@ -1957,10 +1998,11 @@ static u8 bnx2x_initial_phy_init(struct bnx2x *bp) | |||
1957 | rc = bnx2x_phy_init(&bp->link_params, &bp->link_vars); | 1998 | rc = bnx2x_phy_init(&bp->link_params, &bp->link_vars); |
1958 | bnx2x_release_phy_lock(bp); | 1999 | bnx2x_release_phy_lock(bp); |
1959 | 2000 | ||
2001 | bnx2x_calc_fc_adv(bp); | ||
2002 | |||
1960 | if (bp->link_vars.link_up) | 2003 | if (bp->link_vars.link_up) |
1961 | bnx2x_link_report(bp); | 2004 | bnx2x_link_report(bp); |
1962 | 2005 | ||
1963 | bnx2x_calc_fc_adv(bp); | ||
1964 | 2006 | ||
1965 | return rc; | 2007 | return rc; |
1966 | } | 2008 | } |
@@ -2220,9 +2262,7 @@ static void bnx2x_link_attn(struct bnx2x *bp) | |||
2220 | /* Make sure that we are synced with the current statistics */ | 2262 | /* Make sure that we are synced with the current statistics */ |
2221 | bnx2x_stats_handle(bp, STATS_EVENT_STOP); | 2263 | bnx2x_stats_handle(bp, STATS_EVENT_STOP); |
2222 | 2264 | ||
2223 | bnx2x_acquire_phy_lock(bp); | ||
2224 | bnx2x_link_update(&bp->link_params, &bp->link_vars); | 2265 | bnx2x_link_update(&bp->link_params, &bp->link_vars); |
2225 | bnx2x_release_phy_lock(bp); | ||
2226 | 2266 | ||
2227 | if (bp->link_vars.link_up) { | 2267 | if (bp->link_vars.link_up) { |
2228 | 2268 | ||
@@ -2471,6 +2511,8 @@ static void bnx2x_attn_int_asserted(struct bnx2x *bp, u32 asserted) | |||
2471 | if (asserted & ATTN_HARD_WIRED_MASK) { | 2511 | if (asserted & ATTN_HARD_WIRED_MASK) { |
2472 | if (asserted & ATTN_NIG_FOR_FUNC) { | 2512 | if (asserted & ATTN_NIG_FOR_FUNC) { |
2473 | 2513 | ||
2514 | bnx2x_acquire_phy_lock(bp); | ||
2515 | |||
2474 | /* save nig interrupt mask */ | 2516 | /* save nig interrupt mask */ |
2475 | bp->nig_mask = REG_RD(bp, nig_int_mask_addr); | 2517 | bp->nig_mask = REG_RD(bp, nig_int_mask_addr); |
2476 | REG_WR(bp, nig_int_mask_addr, 0); | 2518 | REG_WR(bp, nig_int_mask_addr, 0); |
@@ -2526,8 +2568,10 @@ static void bnx2x_attn_int_asserted(struct bnx2x *bp, u32 asserted) | |||
2526 | REG_WR(bp, hc_addr, asserted); | 2568 | REG_WR(bp, hc_addr, asserted); |
2527 | 2569 | ||
2528 | /* now set back the mask */ | 2570 | /* now set back the mask */ |
2529 | if (asserted & ATTN_NIG_FOR_FUNC) | 2571 | if (asserted & ATTN_NIG_FOR_FUNC) { |
2530 | REG_WR(bp, nig_int_mask_addr, bp->nig_mask); | 2572 | REG_WR(bp, nig_int_mask_addr, bp->nig_mask); |
2573 | bnx2x_release_phy_lock(bp); | ||
2574 | } | ||
2531 | } | 2575 | } |
2532 | 2576 | ||
2533 | static inline void bnx2x_attn_int_deasserted0(struct bnx2x *bp, u32 attn) | 2577 | static inline void bnx2x_attn_int_deasserted0(struct bnx2x *bp, u32 attn) |
@@ -2795,8 +2839,10 @@ static void bnx2x_attn_int_deasserted(struct bnx2x *bp, u32 deasserted) | |||
2795 | static void bnx2x_attn_int(struct bnx2x *bp) | 2839 | static void bnx2x_attn_int(struct bnx2x *bp) |
2796 | { | 2840 | { |
2797 | /* read local copy of bits */ | 2841 | /* read local copy of bits */ |
2798 | u32 attn_bits = bp->def_status_blk->atten_status_block.attn_bits; | 2842 | u32 attn_bits = le32_to_cpu(bp->def_status_blk->atten_status_block. |
2799 | u32 attn_ack = bp->def_status_blk->atten_status_block.attn_bits_ack; | 2843 | attn_bits); |
2844 | u32 attn_ack = le32_to_cpu(bp->def_status_blk->atten_status_block. | ||
2845 | attn_bits_ack); | ||
2800 | u32 attn_state = bp->attn_state; | 2846 | u32 attn_state = bp->attn_state; |
2801 | 2847 | ||
2802 | /* look for changed bits */ | 2848 | /* look for changed bits */ |
@@ -2820,7 +2866,7 @@ static void bnx2x_attn_int(struct bnx2x *bp) | |||
2820 | 2866 | ||
2821 | static void bnx2x_sp_task(struct work_struct *work) | 2867 | static void bnx2x_sp_task(struct work_struct *work) |
2822 | { | 2868 | { |
2823 | struct bnx2x *bp = container_of(work, struct bnx2x, sp_task); | 2869 | struct bnx2x *bp = container_of(work, struct bnx2x, sp_task.work); |
2824 | u16 status; | 2870 | u16 status; |
2825 | 2871 | ||
2826 | 2872 | ||
@@ -2844,7 +2890,7 @@ static void bnx2x_sp_task(struct work_struct *work) | |||
2844 | if (status & 0x2) | 2890 | if (status & 0x2) |
2845 | bp->stats_pending = 0; | 2891 | bp->stats_pending = 0; |
2846 | 2892 | ||
2847 | bnx2x_ack_sb(bp, DEF_SB_ID, ATTENTION_ID, bp->def_att_idx, | 2893 | bnx2x_ack_sb(bp, DEF_SB_ID, ATTENTION_ID, le16_to_cpu(bp->def_att_idx), |
2848 | IGU_INT_NOP, 1); | 2894 | IGU_INT_NOP, 1); |
2849 | bnx2x_ack_sb(bp, DEF_SB_ID, USTORM_ID, le16_to_cpu(bp->def_u_idx), | 2895 | bnx2x_ack_sb(bp, DEF_SB_ID, USTORM_ID, le16_to_cpu(bp->def_u_idx), |
2850 | IGU_INT_NOP, 1); | 2896 | IGU_INT_NOP, 1); |
@@ -2875,7 +2921,7 @@ static irqreturn_t bnx2x_msix_sp_int(int irq, void *dev_instance) | |||
2875 | return IRQ_HANDLED; | 2921 | return IRQ_HANDLED; |
2876 | #endif | 2922 | #endif |
2877 | 2923 | ||
2878 | schedule_work(&bp->sp_task); | 2924 | queue_delayed_work(bnx2x_wq, &bp->sp_task, 0); |
2879 | 2925 | ||
2880 | return IRQ_HANDLED; | 2926 | return IRQ_HANDLED; |
2881 | } | 2927 | } |
@@ -2892,7 +2938,7 @@ static irqreturn_t bnx2x_msix_sp_int(int irq, void *dev_instance) | |||
2892 | #define ADD_64(s_hi, a_hi, s_lo, a_lo) \ | 2938 | #define ADD_64(s_hi, a_hi, s_lo, a_lo) \ |
2893 | do { \ | 2939 | do { \ |
2894 | s_lo += a_lo; \ | 2940 | s_lo += a_lo; \ |
2895 | s_hi += a_hi + (s_lo < a_lo) ? 1 : 0; \ | 2941 | s_hi += a_hi + ((s_lo < a_lo) ? 1 : 0); \ |
2896 | } while (0) | 2942 | } while (0) |
2897 | 2943 | ||
2898 | /* difference = minuend - subtrahend */ | 2944 | /* difference = minuend - subtrahend */ |
@@ -4496,7 +4542,7 @@ static void bnx2x_init_context(struct bnx2x *bp) | |||
4496 | 4542 | ||
4497 | static void bnx2x_init_ind_table(struct bnx2x *bp) | 4543 | static void bnx2x_init_ind_table(struct bnx2x *bp) |
4498 | { | 4544 | { |
4499 | int port = BP_PORT(bp); | 4545 | int func = BP_FUNC(bp); |
4500 | int i; | 4546 | int i; |
4501 | 4547 | ||
4502 | if (!is_multi(bp)) | 4548 | if (!is_multi(bp)) |
@@ -4505,10 +4551,8 @@ static void bnx2x_init_ind_table(struct bnx2x *bp) | |||
4505 | DP(NETIF_MSG_IFUP, "Initializing indirection table\n"); | 4551 | DP(NETIF_MSG_IFUP, "Initializing indirection table\n"); |
4506 | for (i = 0; i < TSTORM_INDIRECTION_TABLE_SIZE; i++) | 4552 | for (i = 0; i < TSTORM_INDIRECTION_TABLE_SIZE; i++) |
4507 | REG_WR8(bp, BAR_TSTRORM_INTMEM + | 4553 | REG_WR8(bp, BAR_TSTRORM_INTMEM + |
4508 | TSTORM_INDIRECTION_TABLE_OFFSET(port) + i, | 4554 | TSTORM_INDIRECTION_TABLE_OFFSET(func) + i, |
4509 | i % bp->num_queues); | 4555 | BP_CL_ID(bp) + (i % bp->num_queues)); |
4510 | |||
4511 | REG_WR(bp, PRS_REG_A_PRSU_20, 0xf); | ||
4512 | } | 4556 | } |
4513 | 4557 | ||
4514 | static void bnx2x_set_client_config(struct bnx2x *bp) | 4558 | static void bnx2x_set_client_config(struct bnx2x *bp) |
@@ -4517,12 +4561,12 @@ static void bnx2x_set_client_config(struct bnx2x *bp) | |||
4517 | int port = BP_PORT(bp); | 4561 | int port = BP_PORT(bp); |
4518 | int i; | 4562 | int i; |
4519 | 4563 | ||
4520 | tstorm_client.mtu = bp->dev->mtu + ETH_OVREHEAD; | 4564 | tstorm_client.mtu = bp->dev->mtu; |
4521 | tstorm_client.statistics_counter_id = BP_CL_ID(bp); | 4565 | tstorm_client.statistics_counter_id = BP_CL_ID(bp); |
4522 | tstorm_client.config_flags = | 4566 | tstorm_client.config_flags = |
4523 | TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE; | 4567 | TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE; |
4524 | #ifdef BCM_VLAN | 4568 | #ifdef BCM_VLAN |
4525 | if (bp->rx_mode && bp->vlgrp) { | 4569 | if (bp->rx_mode && bp->vlgrp && (bp->flags & HW_VLAN_RX_FLAG)) { |
4526 | tstorm_client.config_flags |= | 4570 | tstorm_client.config_flags |= |
4527 | TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE; | 4571 | TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE; |
4528 | DP(NETIF_MSG_IFUP, "vlan removal enabled\n"); | 4572 | DP(NETIF_MSG_IFUP, "vlan removal enabled\n"); |
@@ -4531,7 +4575,7 @@ static void bnx2x_set_client_config(struct bnx2x *bp) | |||
4531 | 4575 | ||
4532 | if (bp->flags & TPA_ENABLE_FLAG) { | 4576 | if (bp->flags & TPA_ENABLE_FLAG) { |
4533 | tstorm_client.max_sges_for_packet = | 4577 | tstorm_client.max_sges_for_packet = |
4534 | BCM_PAGE_ALIGN(tstorm_client.mtu) >> BCM_PAGE_SHIFT; | 4578 | SGE_PAGE_ALIGN(tstorm_client.mtu) >> SGE_PAGE_SHIFT; |
4535 | tstorm_client.max_sges_for_packet = | 4579 | tstorm_client.max_sges_for_packet = |
4536 | ((tstorm_client.max_sges_for_packet + | 4580 | ((tstorm_client.max_sges_for_packet + |
4537 | PAGES_PER_SGE - 1) & (~(PAGES_PER_SGE - 1))) >> | 4581 | PAGES_PER_SGE - 1) & (~(PAGES_PER_SGE - 1))) >> |
@@ -4714,10 +4758,11 @@ static void bnx2x_init_internal_func(struct bnx2x *bp) | |||
4714 | bp->e1hov); | 4758 | bp->e1hov); |
4715 | } | 4759 | } |
4716 | 4760 | ||
4717 | /* Init CQ ring mapping and aggregation size */ | 4761 | /* Init CQ ring mapping and aggregation size, the FW limit is 8 frags */ |
4718 | max_agg_size = min((u32)(bp->rx_buf_size + | 4762 | max_agg_size = |
4719 | 8*BCM_PAGE_SIZE*PAGES_PER_SGE), | 4763 | min((u32)(min((u32)8, (u32)MAX_SKB_FRAGS) * |
4720 | (u32)0xffff); | 4764 | SGE_PAGE_SIZE * PAGES_PER_SGE), |
4765 | (u32)0xffff); | ||
4721 | for_each_queue(bp, i) { | 4766 | for_each_queue(bp, i) { |
4722 | struct bnx2x_fastpath *fp = &bp->fp[i]; | 4767 | struct bnx2x_fastpath *fp = &bp->fp[i]; |
4723 | 4768 | ||
@@ -4785,6 +4830,15 @@ static void bnx2x_nic_init(struct bnx2x *bp, u32 load_code) | |||
4785 | bnx2x_init_context(bp); | 4830 | bnx2x_init_context(bp); |
4786 | bnx2x_init_internal(bp, load_code); | 4831 | bnx2x_init_internal(bp, load_code); |
4787 | bnx2x_init_ind_table(bp); | 4832 | bnx2x_init_ind_table(bp); |
4833 | bnx2x_stats_init(bp); | ||
4834 | |||
4835 | /* At this point, we are ready for interrupts */ | ||
4836 | atomic_set(&bp->intr_sem, 0); | ||
4837 | |||
4838 | /* flush all before enabling interrupts */ | ||
4839 | mb(); | ||
4840 | mmiowb(); | ||
4841 | |||
4788 | bnx2x_int_enable(bp); | 4842 | bnx2x_int_enable(bp); |
4789 | } | 4843 | } |
4790 | 4844 | ||
@@ -5101,12 +5155,21 @@ static void enable_blocks_attention(struct bnx2x *bp) | |||
5101 | } | 5155 | } |
5102 | 5156 | ||
5103 | 5157 | ||
5158 | static void bnx2x_reset_common(struct bnx2x *bp) | ||
5159 | { | ||
5160 | /* reset_common */ | ||
5161 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, | ||
5162 | 0xd3ffff7f); | ||
5163 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, 0x1403); | ||
5164 | } | ||
5165 | |||
5104 | static int bnx2x_init_common(struct bnx2x *bp) | 5166 | static int bnx2x_init_common(struct bnx2x *bp) |
5105 | { | 5167 | { |
5106 | u32 val, i; | 5168 | u32 val, i; |
5107 | 5169 | ||
5108 | DP(BNX2X_MSG_MCP, "starting common init func %d\n", BP_FUNC(bp)); | 5170 | DP(BNX2X_MSG_MCP, "starting common init func %d\n", BP_FUNC(bp)); |
5109 | 5171 | ||
5172 | bnx2x_reset_common(bp); | ||
5110 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff); | 5173 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff); |
5111 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, 0xfffc); | 5174 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, 0xfffc); |
5112 | 5175 | ||
@@ -5134,7 +5197,6 @@ static int bnx2x_init_common(struct bnx2x *bp) | |||
5134 | REG_WR(bp, PXP2_REG_RQ_SRC_ENDIAN_M, 1); | 5197 | REG_WR(bp, PXP2_REG_RQ_SRC_ENDIAN_M, 1); |
5135 | REG_WR(bp, PXP2_REG_RQ_CDU_ENDIAN_M, 1); | 5198 | REG_WR(bp, PXP2_REG_RQ_CDU_ENDIAN_M, 1); |
5136 | REG_WR(bp, PXP2_REG_RQ_DBG_ENDIAN_M, 1); | 5199 | REG_WR(bp, PXP2_REG_RQ_DBG_ENDIAN_M, 1); |
5137 | REG_WR(bp, PXP2_REG_RQ_HC_ENDIAN_M, 1); | ||
5138 | 5200 | ||
5139 | /* REG_WR(bp, PXP2_REG_RD_PBF_SWAP_MODE, 1); */ | 5201 | /* REG_WR(bp, PXP2_REG_RD_PBF_SWAP_MODE, 1); */ |
5140 | REG_WR(bp, PXP2_REG_RD_QM_SWAP_MODE, 1); | 5202 | REG_WR(bp, PXP2_REG_RD_QM_SWAP_MODE, 1); |
@@ -5212,6 +5274,7 @@ static int bnx2x_init_common(struct bnx2x *bp) | |||
5212 | } | 5274 | } |
5213 | 5275 | ||
5214 | bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END); | 5276 | bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END); |
5277 | REG_WR(bp, PRS_REG_A_PRSU_20, 0xf); | ||
5215 | /* set NIC mode */ | 5278 | /* set NIC mode */ |
5216 | REG_WR(bp, PRS_REG_NIC_MODE, 1); | 5279 | REG_WR(bp, PRS_REG_NIC_MODE, 1); |
5217 | if (CHIP_IS_E1H(bp)) | 5280 | if (CHIP_IS_E1H(bp)) |
@@ -6087,8 +6150,8 @@ static void bnx2x_netif_start(struct bnx2x *bp) | |||
6087 | static void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw) | 6150 | static void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw) |
6088 | { | 6151 | { |
6089 | bnx2x_int_disable_sync(bp, disable_hw); | 6152 | bnx2x_int_disable_sync(bp, disable_hw); |
6153 | bnx2x_napi_disable(bp); | ||
6090 | if (netif_running(bp->dev)) { | 6154 | if (netif_running(bp->dev)) { |
6091 | bnx2x_napi_disable(bp); | ||
6092 | netif_tx_disable(bp->dev); | 6155 | netif_tx_disable(bp->dev); |
6093 | bp->dev->trans_start = jiffies; /* prevent tx timeout */ | 6156 | bp->dev->trans_start = jiffies; /* prevent tx timeout */ |
6094 | } | 6157 | } |
@@ -6108,7 +6171,7 @@ static void bnx2x_set_mac_addr_e1(struct bnx2x *bp, int set) | |||
6108 | * multicast 64-127:port0 128-191:port1 | 6171 | * multicast 64-127:port0 128-191:port1 |
6109 | */ | 6172 | */ |
6110 | config->hdr.length_6b = 2; | 6173 | config->hdr.length_6b = 2; |
6111 | config->hdr.offset = port ? 31 : 0; | 6174 | config->hdr.offset = port ? 32 : 0; |
6112 | config->hdr.client_id = BP_CL_ID(bp); | 6175 | config->hdr.client_id = BP_CL_ID(bp); |
6113 | config->hdr.reserved1 = 0; | 6176 | config->hdr.reserved1 = 0; |
6114 | 6177 | ||
@@ -6272,7 +6335,7 @@ static void bnx2x_set_rx_mode(struct net_device *dev); | |||
6272 | static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | 6335 | static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) |
6273 | { | 6336 | { |
6274 | u32 load_code; | 6337 | u32 load_code; |
6275 | int i, rc; | 6338 | int i, rc = 0; |
6276 | #ifdef BNX2X_STOP_ON_ERROR | 6339 | #ifdef BNX2X_STOP_ON_ERROR |
6277 | if (unlikely(bp->panic)) | 6340 | if (unlikely(bp->panic)) |
6278 | return -EPERM; | 6341 | return -EPERM; |
@@ -6280,48 +6343,6 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
6280 | 6343 | ||
6281 | bp->state = BNX2X_STATE_OPENING_WAIT4_LOAD; | 6344 | bp->state = BNX2X_STATE_OPENING_WAIT4_LOAD; |
6282 | 6345 | ||
6283 | /* Send LOAD_REQUEST command to MCP | ||
6284 | Returns the type of LOAD command: | ||
6285 | if it is the first port to be initialized | ||
6286 | common blocks should be initialized, otherwise - not | ||
6287 | */ | ||
6288 | if (!BP_NOMCP(bp)) { | ||
6289 | load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ); | ||
6290 | if (!load_code) { | ||
6291 | BNX2X_ERR("MCP response failure, aborting\n"); | ||
6292 | return -EBUSY; | ||
6293 | } | ||
6294 | if (load_code == FW_MSG_CODE_DRV_LOAD_REFUSED) | ||
6295 | return -EBUSY; /* other port in diagnostic mode */ | ||
6296 | |||
6297 | } else { | ||
6298 | int port = BP_PORT(bp); | ||
6299 | |||
6300 | DP(NETIF_MSG_IFUP, "NO MCP load counts before us %d, %d, %d\n", | ||
6301 | load_count[0], load_count[1], load_count[2]); | ||
6302 | load_count[0]++; | ||
6303 | load_count[1 + port]++; | ||
6304 | DP(NETIF_MSG_IFUP, "NO MCP new load counts %d, %d, %d\n", | ||
6305 | load_count[0], load_count[1], load_count[2]); | ||
6306 | if (load_count[0] == 1) | ||
6307 | load_code = FW_MSG_CODE_DRV_LOAD_COMMON; | ||
6308 | else if (load_count[1 + port] == 1) | ||
6309 | load_code = FW_MSG_CODE_DRV_LOAD_PORT; | ||
6310 | else | ||
6311 | load_code = FW_MSG_CODE_DRV_LOAD_FUNCTION; | ||
6312 | } | ||
6313 | |||
6314 | if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) || | ||
6315 | (load_code == FW_MSG_CODE_DRV_LOAD_PORT)) | ||
6316 | bp->port.pmf = 1; | ||
6317 | else | ||
6318 | bp->port.pmf = 0; | ||
6319 | DP(NETIF_MSG_LINK, "pmf %d\n", bp->port.pmf); | ||
6320 | |||
6321 | /* if we can't use MSI-X we only need one fp, | ||
6322 | * so try to enable MSI-X with the requested number of fp's | ||
6323 | * and fallback to inta with one fp | ||
6324 | */ | ||
6325 | if (use_inta) { | 6346 | if (use_inta) { |
6326 | bp->num_queues = 1; | 6347 | bp->num_queues = 1; |
6327 | 6348 | ||
@@ -6336,7 +6357,15 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
6336 | else | 6357 | else |
6337 | bp->num_queues = 1; | 6358 | bp->num_queues = 1; |
6338 | 6359 | ||
6339 | if (bnx2x_enable_msix(bp)) { | 6360 | DP(NETIF_MSG_IFUP, |
6361 | "set number of queues to %d\n", bp->num_queues); | ||
6362 | |||
6363 | /* if we can't use MSI-X we only need one fp, | ||
6364 | * so try to enable MSI-X with the requested number of fp's | ||
6365 | * and fallback to MSI or legacy INTx with one fp | ||
6366 | */ | ||
6367 | rc = bnx2x_enable_msix(bp); | ||
6368 | if (rc) { | ||
6340 | /* failed to enable MSI-X */ | 6369 | /* failed to enable MSI-X */ |
6341 | bp->num_queues = 1; | 6370 | bp->num_queues = 1; |
6342 | if (use_multi) | 6371 | if (use_multi) |
@@ -6344,8 +6373,6 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
6344 | " to enable MSI-X\n"); | 6373 | " to enable MSI-X\n"); |
6345 | } | 6374 | } |
6346 | } | 6375 | } |
6347 | DP(NETIF_MSG_IFUP, | ||
6348 | "set number of queues to %d\n", bp->num_queues); | ||
6349 | 6376 | ||
6350 | if (bnx2x_alloc_mem(bp)) | 6377 | if (bnx2x_alloc_mem(bp)) |
6351 | return -ENOMEM; | 6378 | return -ENOMEM; |
@@ -6354,30 +6381,85 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
6354 | bnx2x_fp(bp, i, disable_tpa) = | 6381 | bnx2x_fp(bp, i, disable_tpa) = |
6355 | ((bp->flags & TPA_ENABLE_FLAG) == 0); | 6382 | ((bp->flags & TPA_ENABLE_FLAG) == 0); |
6356 | 6383 | ||
6384 | for_each_queue(bp, i) | ||
6385 | netif_napi_add(bp->dev, &bnx2x_fp(bp, i, napi), | ||
6386 | bnx2x_poll, 128); | ||
6387 | |||
6388 | #ifdef BNX2X_STOP_ON_ERROR | ||
6389 | for_each_queue(bp, i) { | ||
6390 | struct bnx2x_fastpath *fp = &bp->fp[i]; | ||
6391 | |||
6392 | fp->poll_no_work = 0; | ||
6393 | fp->poll_calls = 0; | ||
6394 | fp->poll_max_calls = 0; | ||
6395 | fp->poll_complete = 0; | ||
6396 | fp->poll_exit = 0; | ||
6397 | } | ||
6398 | #endif | ||
6399 | bnx2x_napi_enable(bp); | ||
6400 | |||
6357 | if (bp->flags & USING_MSIX_FLAG) { | 6401 | if (bp->flags & USING_MSIX_FLAG) { |
6358 | rc = bnx2x_req_msix_irqs(bp); | 6402 | rc = bnx2x_req_msix_irqs(bp); |
6359 | if (rc) { | 6403 | if (rc) { |
6360 | pci_disable_msix(bp->pdev); | 6404 | pci_disable_msix(bp->pdev); |
6361 | goto load_error; | 6405 | goto load_error1; |
6362 | } | 6406 | } |
6407 | printk(KERN_INFO PFX "%s: using MSI-X\n", bp->dev->name); | ||
6363 | } else { | 6408 | } else { |
6364 | bnx2x_ack_int(bp); | 6409 | bnx2x_ack_int(bp); |
6365 | rc = bnx2x_req_irq(bp); | 6410 | rc = bnx2x_req_irq(bp); |
6366 | if (rc) { | 6411 | if (rc) { |
6367 | BNX2X_ERR("IRQ request failed, aborting\n"); | 6412 | BNX2X_ERR("IRQ request failed rc %d, aborting\n", rc); |
6368 | goto load_error; | 6413 | goto load_error1; |
6369 | } | 6414 | } |
6370 | } | 6415 | } |
6371 | 6416 | ||
6372 | for_each_queue(bp, i) | 6417 | /* Send LOAD_REQUEST command to MCP |
6373 | netif_napi_add(bp->dev, &bnx2x_fp(bp, i, napi), | 6418 | Returns the type of LOAD command: |
6374 | bnx2x_poll, 128); | 6419 | if it is the first port to be initialized |
6420 | common blocks should be initialized, otherwise - not | ||
6421 | */ | ||
6422 | if (!BP_NOMCP(bp)) { | ||
6423 | load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ); | ||
6424 | if (!load_code) { | ||
6425 | BNX2X_ERR("MCP response failure, aborting\n"); | ||
6426 | rc = -EBUSY; | ||
6427 | goto load_error2; | ||
6428 | } | ||
6429 | if (load_code == FW_MSG_CODE_DRV_LOAD_REFUSED) { | ||
6430 | rc = -EBUSY; /* other port in diagnostic mode */ | ||
6431 | goto load_error2; | ||
6432 | } | ||
6433 | |||
6434 | } else { | ||
6435 | int port = BP_PORT(bp); | ||
6436 | |||
6437 | DP(NETIF_MSG_IFUP, "NO MCP load counts before us %d, %d, %d\n", | ||
6438 | load_count[0], load_count[1], load_count[2]); | ||
6439 | load_count[0]++; | ||
6440 | load_count[1 + port]++; | ||
6441 | DP(NETIF_MSG_IFUP, "NO MCP new load counts %d, %d, %d\n", | ||
6442 | load_count[0], load_count[1], load_count[2]); | ||
6443 | if (load_count[0] == 1) | ||
6444 | load_code = FW_MSG_CODE_DRV_LOAD_COMMON; | ||
6445 | else if (load_count[1 + port] == 1) | ||
6446 | load_code = FW_MSG_CODE_DRV_LOAD_PORT; | ||
6447 | else | ||
6448 | load_code = FW_MSG_CODE_DRV_LOAD_FUNCTION; | ||
6449 | } | ||
6450 | |||
6451 | if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) || | ||
6452 | (load_code == FW_MSG_CODE_DRV_LOAD_PORT)) | ||
6453 | bp->port.pmf = 1; | ||
6454 | else | ||
6455 | bp->port.pmf = 0; | ||
6456 | DP(NETIF_MSG_LINK, "pmf %d\n", bp->port.pmf); | ||
6375 | 6457 | ||
6376 | /* Initialize HW */ | 6458 | /* Initialize HW */ |
6377 | rc = bnx2x_init_hw(bp, load_code); | 6459 | rc = bnx2x_init_hw(bp, load_code); |
6378 | if (rc) { | 6460 | if (rc) { |
6379 | BNX2X_ERR("HW init failed, aborting\n"); | 6461 | BNX2X_ERR("HW init failed, aborting\n"); |
6380 | goto load_int_disable; | 6462 | goto load_error2; |
6381 | } | 6463 | } |
6382 | 6464 | ||
6383 | /* Setup NIC internals and enable interrupts */ | 6465 | /* Setup NIC internals and enable interrupts */ |
@@ -6389,25 +6471,16 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
6389 | if (!load_code) { | 6471 | if (!load_code) { |
6390 | BNX2X_ERR("MCP response failure, aborting\n"); | 6472 | BNX2X_ERR("MCP response failure, aborting\n"); |
6391 | rc = -EBUSY; | 6473 | rc = -EBUSY; |
6392 | goto load_rings_free; | 6474 | goto load_error3; |
6393 | } | 6475 | } |
6394 | } | 6476 | } |
6395 | 6477 | ||
6396 | bnx2x_stats_init(bp); | ||
6397 | |||
6398 | bp->state = BNX2X_STATE_OPENING_WAIT4_PORT; | 6478 | bp->state = BNX2X_STATE_OPENING_WAIT4_PORT; |
6399 | 6479 | ||
6400 | /* Enable Rx interrupt handling before sending the ramrod | ||
6401 | as it's completed on Rx FP queue */ | ||
6402 | bnx2x_napi_enable(bp); | ||
6403 | |||
6404 | /* Enable interrupt handling */ | ||
6405 | atomic_set(&bp->intr_sem, 0); | ||
6406 | |||
6407 | rc = bnx2x_setup_leading(bp); | 6480 | rc = bnx2x_setup_leading(bp); |
6408 | if (rc) { | 6481 | if (rc) { |
6409 | BNX2X_ERR("Setup leading failed!\n"); | 6482 | BNX2X_ERR("Setup leading failed!\n"); |
6410 | goto load_netif_stop; | 6483 | goto load_error3; |
6411 | } | 6484 | } |
6412 | 6485 | ||
6413 | if (CHIP_IS_E1H(bp)) | 6486 | if (CHIP_IS_E1H(bp)) |
@@ -6420,7 +6493,7 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
6420 | for_each_nondefault_queue(bp, i) { | 6493 | for_each_nondefault_queue(bp, i) { |
6421 | rc = bnx2x_setup_multi(bp, i); | 6494 | rc = bnx2x_setup_multi(bp, i); |
6422 | if (rc) | 6495 | if (rc) |
6423 | goto load_netif_stop; | 6496 | goto load_error3; |
6424 | } | 6497 | } |
6425 | 6498 | ||
6426 | if (CHIP_IS_E1(bp)) | 6499 | if (CHIP_IS_E1(bp)) |
@@ -6436,18 +6509,18 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
6436 | case LOAD_NORMAL: | 6509 | case LOAD_NORMAL: |
6437 | /* Tx queue should be only reenabled */ | 6510 | /* Tx queue should be only reenabled */ |
6438 | netif_wake_queue(bp->dev); | 6511 | netif_wake_queue(bp->dev); |
6512 | /* Initialize the receive filter. */ | ||
6439 | bnx2x_set_rx_mode(bp->dev); | 6513 | bnx2x_set_rx_mode(bp->dev); |
6440 | break; | 6514 | break; |
6441 | 6515 | ||
6442 | case LOAD_OPEN: | 6516 | case LOAD_OPEN: |
6443 | netif_start_queue(bp->dev); | 6517 | netif_start_queue(bp->dev); |
6518 | /* Initialize the receive filter. */ | ||
6444 | bnx2x_set_rx_mode(bp->dev); | 6519 | bnx2x_set_rx_mode(bp->dev); |
6445 | if (bp->flags & USING_MSIX_FLAG) | ||
6446 | printk(KERN_INFO PFX "%s: using MSI-X\n", | ||
6447 | bp->dev->name); | ||
6448 | break; | 6520 | break; |
6449 | 6521 | ||
6450 | case LOAD_DIAG: | 6522 | case LOAD_DIAG: |
6523 | /* Initialize the receive filter. */ | ||
6451 | bnx2x_set_rx_mode(bp->dev); | 6524 | bnx2x_set_rx_mode(bp->dev); |
6452 | bp->state = BNX2X_STATE_DIAG; | 6525 | bp->state = BNX2X_STATE_DIAG; |
6453 | break; | 6526 | break; |
@@ -6465,20 +6538,25 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) | |||
6465 | 6538 | ||
6466 | return 0; | 6539 | return 0; |
6467 | 6540 | ||
6468 | load_netif_stop: | 6541 | load_error3: |
6469 | bnx2x_napi_disable(bp); | 6542 | bnx2x_int_disable_sync(bp, 1); |
6470 | load_rings_free: | 6543 | if (!BP_NOMCP(bp)) { |
6544 | bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP); | ||
6545 | bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE); | ||
6546 | } | ||
6547 | bp->port.pmf = 0; | ||
6471 | /* Free SKBs, SGEs, TPA pool and driver internals */ | 6548 | /* Free SKBs, SGEs, TPA pool and driver internals */ |
6472 | bnx2x_free_skbs(bp); | 6549 | bnx2x_free_skbs(bp); |
6473 | for_each_queue(bp, i) | 6550 | for_each_queue(bp, i) |
6474 | bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); | 6551 | bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); |
6475 | load_int_disable: | 6552 | load_error2: |
6476 | bnx2x_int_disable_sync(bp, 1); | ||
6477 | /* Release IRQs */ | 6553 | /* Release IRQs */ |
6478 | bnx2x_free_irq(bp); | 6554 | bnx2x_free_irq(bp); |
6479 | load_error: | 6555 | load_error1: |
6556 | bnx2x_napi_disable(bp); | ||
6557 | for_each_queue(bp, i) | ||
6558 | netif_napi_del(&bnx2x_fp(bp, i, napi)); | ||
6480 | bnx2x_free_mem(bp); | 6559 | bnx2x_free_mem(bp); |
6481 | bp->port.pmf = 0; | ||
6482 | 6560 | ||
6483 | /* TBD we really need to reset the chip | 6561 | /* TBD we really need to reset the chip |
6484 | if we want to recover from this */ | 6562 | if we want to recover from this */ |
@@ -6551,6 +6629,7 @@ static int bnx2x_stop_leading(struct bnx2x *bp) | |||
6551 | } | 6629 | } |
6552 | cnt--; | 6630 | cnt--; |
6553 | msleep(1); | 6631 | msleep(1); |
6632 | rmb(); /* Refresh the dsb_sp_prod */ | ||
6554 | } | 6633 | } |
6555 | bp->state = BNX2X_STATE_CLOSING_WAIT4_UNLOAD; | 6634 | bp->state = BNX2X_STATE_CLOSING_WAIT4_UNLOAD; |
6556 | bp->fp[0].state = BNX2X_FP_STATE_CLOSED; | 6635 | bp->fp[0].state = BNX2X_FP_STATE_CLOSED; |
@@ -6602,14 +6681,6 @@ static void bnx2x_reset_port(struct bnx2x *bp) | |||
6602 | /* TODO: Close Doorbell port? */ | 6681 | /* TODO: Close Doorbell port? */ |
6603 | } | 6682 | } |
6604 | 6683 | ||
6605 | static void bnx2x_reset_common(struct bnx2x *bp) | ||
6606 | { | ||
6607 | /* reset_common */ | ||
6608 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, | ||
6609 | 0xd3ffff7f); | ||
6610 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, 0x1403); | ||
6611 | } | ||
6612 | |||
6613 | static void bnx2x_reset_chip(struct bnx2x *bp, u32 reset_code) | 6684 | static void bnx2x_reset_chip(struct bnx2x *bp, u32 reset_code) |
6614 | { | 6685 | { |
6615 | DP(BNX2X_MSG_MCP, "function %d reset_code %x\n", | 6686 | DP(BNX2X_MSG_MCP, "function %d reset_code %x\n", |
@@ -6650,20 +6721,22 @@ static int bnx2x_nic_unload(struct bnx2x *bp, int unload_mode) | |||
6650 | bnx2x_set_storm_rx_mode(bp); | 6721 | bnx2x_set_storm_rx_mode(bp); |
6651 | 6722 | ||
6652 | bnx2x_netif_stop(bp, 1); | 6723 | bnx2x_netif_stop(bp, 1); |
6653 | if (!netif_running(bp->dev)) | 6724 | |
6654 | bnx2x_napi_disable(bp); | ||
6655 | del_timer_sync(&bp->timer); | 6725 | del_timer_sync(&bp->timer); |
6656 | SHMEM_WR(bp, func_mb[BP_FUNC(bp)].drv_pulse_mb, | 6726 | SHMEM_WR(bp, func_mb[BP_FUNC(bp)].drv_pulse_mb, |
6657 | (DRV_PULSE_ALWAYS_ALIVE | bp->fw_drv_pulse_wr_seq)); | 6727 | (DRV_PULSE_ALWAYS_ALIVE | bp->fw_drv_pulse_wr_seq)); |
6658 | bnx2x_stats_handle(bp, STATS_EVENT_STOP); | 6728 | bnx2x_stats_handle(bp, STATS_EVENT_STOP); |
6659 | 6729 | ||
6730 | /* Release IRQs */ | ||
6731 | bnx2x_free_irq(bp); | ||
6732 | |||
6660 | /* Wait until tx fast path tasks complete */ | 6733 | /* Wait until tx fast path tasks complete */ |
6661 | for_each_queue(bp, i) { | 6734 | for_each_queue(bp, i) { |
6662 | struct bnx2x_fastpath *fp = &bp->fp[i]; | 6735 | struct bnx2x_fastpath *fp = &bp->fp[i]; |
6663 | 6736 | ||
6664 | cnt = 1000; | 6737 | cnt = 1000; |
6665 | smp_rmb(); | 6738 | smp_rmb(); |
6666 | while (BNX2X_HAS_TX_WORK(fp)) { | 6739 | while (bnx2x_has_tx_work_unload(fp)) { |
6667 | 6740 | ||
6668 | bnx2x_tx_int(fp, 1000); | 6741 | bnx2x_tx_int(fp, 1000); |
6669 | if (!cnt) { | 6742 | if (!cnt) { |
@@ -6684,9 +6757,6 @@ static int bnx2x_nic_unload(struct bnx2x *bp, int unload_mode) | |||
6684 | /* Give HW time to discard old tx messages */ | 6757 | /* Give HW time to discard old tx messages */ |
6685 | msleep(1); | 6758 | msleep(1); |
6686 | 6759 | ||
6687 | /* Release IRQs */ | ||
6688 | bnx2x_free_irq(bp); | ||
6689 | |||
6690 | if (CHIP_IS_E1(bp)) { | 6760 | if (CHIP_IS_E1(bp)) { |
6691 | struct mac_configuration_cmd *config = | 6761 | struct mac_configuration_cmd *config = |
6692 | bnx2x_sp(bp, mcast_config); | 6762 | bnx2x_sp(bp, mcast_config); |
@@ -6795,6 +6865,8 @@ unload_error: | |||
6795 | bnx2x_free_skbs(bp); | 6865 | bnx2x_free_skbs(bp); |
6796 | for_each_queue(bp, i) | 6866 | for_each_queue(bp, i) |
6797 | bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); | 6867 | bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); |
6868 | for_each_queue(bp, i) | ||
6869 | netif_napi_del(&bnx2x_fp(bp, i, napi)); | ||
6798 | bnx2x_free_mem(bp); | 6870 | bnx2x_free_mem(bp); |
6799 | 6871 | ||
6800 | bp->state = BNX2X_STATE_CLOSED; | 6872 | bp->state = BNX2X_STATE_CLOSED; |
@@ -6847,10 +6919,6 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp) | |||
6847 | */ | 6919 | */ |
6848 | bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); | 6920 | bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); |
6849 | val = REG_RD(bp, DORQ_REG_NORM_CID_OFST); | 6921 | val = REG_RD(bp, DORQ_REG_NORM_CID_OFST); |
6850 | if (val == 0x7) | ||
6851 | REG_WR(bp, DORQ_REG_NORM_CID_OFST, 0); | ||
6852 | bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); | ||
6853 | |||
6854 | if (val == 0x7) { | 6922 | if (val == 0x7) { |
6855 | u32 reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS; | 6923 | u32 reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS; |
6856 | /* save our func */ | 6924 | /* save our func */ |
@@ -6858,6 +6926,9 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp) | |||
6858 | u32 swap_en; | 6926 | u32 swap_en; |
6859 | u32 swap_val; | 6927 | u32 swap_val; |
6860 | 6928 | ||
6929 | /* clear the UNDI indication */ | ||
6930 | REG_WR(bp, DORQ_REG_NORM_CID_OFST, 0); | ||
6931 | |||
6861 | BNX2X_DEV_INFO("UNDI is active! reset device\n"); | 6932 | BNX2X_DEV_INFO("UNDI is active! reset device\n"); |
6862 | 6933 | ||
6863 | /* try unload UNDI on port 0 */ | 6934 | /* try unload UNDI on port 0 */ |
@@ -6883,6 +6954,9 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp) | |||
6883 | bnx2x_fw_command(bp, reset_code); | 6954 | bnx2x_fw_command(bp, reset_code); |
6884 | } | 6955 | } |
6885 | 6956 | ||
6957 | /* now it's safe to release the lock */ | ||
6958 | bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); | ||
6959 | |||
6886 | REG_WR(bp, (BP_PORT(bp) ? HC_REG_CONFIG_1 : | 6960 | REG_WR(bp, (BP_PORT(bp) ? HC_REG_CONFIG_1 : |
6887 | HC_REG_CONFIG_0), 0x1000); | 6961 | HC_REG_CONFIG_0), 0x1000); |
6888 | 6962 | ||
@@ -6927,7 +7001,9 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp) | |||
6927 | bp->fw_seq = | 7001 | bp->fw_seq = |
6928 | (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) & | 7002 | (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) & |
6929 | DRV_MSG_SEQ_NUMBER_MASK); | 7003 | DRV_MSG_SEQ_NUMBER_MASK); |
6930 | } | 7004 | |
7005 | } else | ||
7006 | bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); | ||
6931 | } | 7007 | } |
6932 | } | 7008 | } |
6933 | 7009 | ||
@@ -6944,7 +7020,7 @@ static void __devinit bnx2x_get_common_hwinfo(struct bnx2x *bp) | |||
6944 | id |= ((val & 0xf) << 12); | 7020 | id |= ((val & 0xf) << 12); |
6945 | val = REG_RD(bp, MISC_REG_CHIP_METAL); | 7021 | val = REG_RD(bp, MISC_REG_CHIP_METAL); |
6946 | id |= ((val & 0xff) << 4); | 7022 | id |= ((val & 0xff) << 4); |
6947 | REG_RD(bp, MISC_REG_BOND_ID); | 7023 | val = REG_RD(bp, MISC_REG_BOND_ID); |
6948 | id |= (val & 0xf); | 7024 | id |= (val & 0xf); |
6949 | bp->common.chip_id = id; | 7025 | bp->common.chip_id = id; |
6950 | bp->link_params.chip_id = bp->common.chip_id; | 7026 | bp->link_params.chip_id = bp->common.chip_id; |
@@ -7501,7 +7577,7 @@ static int __devinit bnx2x_init_bp(struct bnx2x *bp) | |||
7501 | 7577 | ||
7502 | mutex_init(&bp->port.phy_mutex); | 7578 | mutex_init(&bp->port.phy_mutex); |
7503 | 7579 | ||
7504 | INIT_WORK(&bp->sp_task, bnx2x_sp_task); | 7580 | INIT_DELAYED_WORK(&bp->sp_task, bnx2x_sp_task); |
7505 | INIT_WORK(&bp->reset_task, bnx2x_reset_task); | 7581 | INIT_WORK(&bp->reset_task, bnx2x_reset_task); |
7506 | 7582 | ||
7507 | rc = bnx2x_get_hwinfo(bp); | 7583 | rc = bnx2x_get_hwinfo(bp); |
@@ -8076,6 +8152,9 @@ static int bnx2x_get_eeprom(struct net_device *dev, | |||
8076 | struct bnx2x *bp = netdev_priv(dev); | 8152 | struct bnx2x *bp = netdev_priv(dev); |
8077 | int rc; | 8153 | int rc; |
8078 | 8154 | ||
8155 | if (!netif_running(dev)) | ||
8156 | return -EAGAIN; | ||
8157 | |||
8079 | DP(BNX2X_MSG_NVM, "ethtool_eeprom: cmd %d\n" | 8158 | DP(BNX2X_MSG_NVM, "ethtool_eeprom: cmd %d\n" |
8080 | DP_LEVEL " magic 0x%x offset 0x%x (%d) len 0x%x (%d)\n", | 8159 | DP_LEVEL " magic 0x%x offset 0x%x (%d) len 0x%x (%d)\n", |
8081 | eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset, | 8160 | eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset, |
@@ -8678,18 +8757,17 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode, u8 link_up) | |||
8678 | 8757 | ||
8679 | if (loopback_mode == BNX2X_MAC_LOOPBACK) { | 8758 | if (loopback_mode == BNX2X_MAC_LOOPBACK) { |
8680 | bp->link_params.loopback_mode = LOOPBACK_BMAC; | 8759 | bp->link_params.loopback_mode = LOOPBACK_BMAC; |
8681 | bnx2x_acquire_phy_lock(bp); | ||
8682 | bnx2x_phy_init(&bp->link_params, &bp->link_vars); | 8760 | bnx2x_phy_init(&bp->link_params, &bp->link_vars); |
8683 | bnx2x_release_phy_lock(bp); | ||
8684 | 8761 | ||
8685 | } else if (loopback_mode == BNX2X_PHY_LOOPBACK) { | 8762 | } else if (loopback_mode == BNX2X_PHY_LOOPBACK) { |
8763 | u16 cnt = 1000; | ||
8686 | bp->link_params.loopback_mode = LOOPBACK_XGXS_10; | 8764 | bp->link_params.loopback_mode = LOOPBACK_XGXS_10; |
8687 | bnx2x_acquire_phy_lock(bp); | ||
8688 | bnx2x_phy_init(&bp->link_params, &bp->link_vars); | 8765 | bnx2x_phy_init(&bp->link_params, &bp->link_vars); |
8689 | bnx2x_release_phy_lock(bp); | ||
8690 | /* wait until link state is restored */ | 8766 | /* wait until link state is restored */ |
8691 | bnx2x_wait_for_link(bp, link_up); | 8767 | if (link_up) |
8692 | 8768 | while (cnt-- && bnx2x_test_link(&bp->link_params, | |
8769 | &bp->link_vars)) | ||
8770 | msleep(10); | ||
8693 | } else | 8771 | } else |
8694 | return -EINVAL; | 8772 | return -EINVAL; |
8695 | 8773 | ||
@@ -8727,6 +8805,8 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode, u8 link_up) | |||
8727 | tx_bd->general_data = ((UNICAST_ADDRESS << | 8805 | tx_bd->general_data = ((UNICAST_ADDRESS << |
8728 | ETH_TX_BD_ETH_ADDR_TYPE_SHIFT) | 1); | 8806 | ETH_TX_BD_ETH_ADDR_TYPE_SHIFT) | 1); |
8729 | 8807 | ||
8808 | wmb(); | ||
8809 | |||
8730 | fp->hw_tx_prods->bds_prod = | 8810 | fp->hw_tx_prods->bds_prod = |
8731 | cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + 1); | 8811 | cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + 1); |
8732 | mb(); /* FW restriction: must not reorder writing nbd and packets */ | 8812 | mb(); /* FW restriction: must not reorder writing nbd and packets */ |
@@ -8778,7 +8858,6 @@ test_loopback_rx_exit: | |||
8778 | /* Update producers */ | 8858 | /* Update producers */ |
8779 | bnx2x_update_rx_prod(bp, fp, fp->rx_bd_prod, fp->rx_comp_prod, | 8859 | bnx2x_update_rx_prod(bp, fp, fp->rx_bd_prod, fp->rx_comp_prod, |
8780 | fp->rx_sge_prod); | 8860 | fp->rx_sge_prod); |
8781 | mmiowb(); /* keep prod updates ordered */ | ||
8782 | 8861 | ||
8783 | test_loopback_exit: | 8862 | test_loopback_exit: |
8784 | bp->link_params.loopback_mode = LOOPBACK_NONE; | 8863 | bp->link_params.loopback_mode = LOOPBACK_NONE; |
@@ -8794,6 +8873,7 @@ static int bnx2x_test_loopback(struct bnx2x *bp, u8 link_up) | |||
8794 | return BNX2X_LOOPBACK_FAILED; | 8873 | return BNX2X_LOOPBACK_FAILED; |
8795 | 8874 | ||
8796 | bnx2x_netif_stop(bp, 1); | 8875 | bnx2x_netif_stop(bp, 1); |
8876 | bnx2x_acquire_phy_lock(bp); | ||
8797 | 8877 | ||
8798 | if (bnx2x_run_loopback(bp, BNX2X_MAC_LOOPBACK, link_up)) { | 8878 | if (bnx2x_run_loopback(bp, BNX2X_MAC_LOOPBACK, link_up)) { |
8799 | DP(NETIF_MSG_PROBE, "MAC loopback failed\n"); | 8879 | DP(NETIF_MSG_PROBE, "MAC loopback failed\n"); |
@@ -8805,6 +8885,7 @@ static int bnx2x_test_loopback(struct bnx2x *bp, u8 link_up) | |||
8805 | rc |= BNX2X_PHY_LOOPBACK_FAILED; | 8885 | rc |= BNX2X_PHY_LOOPBACK_FAILED; |
8806 | } | 8886 | } |
8807 | 8887 | ||
8888 | bnx2x_release_phy_lock(bp); | ||
8808 | bnx2x_netif_start(bp); | 8889 | bnx2x_netif_start(bp); |
8809 | 8890 | ||
8810 | return rc; | 8891 | return rc; |
@@ -8878,7 +8959,10 @@ static int bnx2x_test_intr(struct bnx2x *bp) | |||
8878 | return -ENODEV; | 8959 | return -ENODEV; |
8879 | 8960 | ||
8880 | config->hdr.length_6b = 0; | 8961 | config->hdr.length_6b = 0; |
8881 | config->hdr.offset = 0; | 8962 | if (CHIP_IS_E1(bp)) |
8963 | config->hdr.offset = (BP_PORT(bp) ? 32 : 0); | ||
8964 | else | ||
8965 | config->hdr.offset = BP_FUNC(bp); | ||
8882 | config->hdr.client_id = BP_CL_ID(bp); | 8966 | config->hdr.client_id = BP_CL_ID(bp); |
8883 | config->hdr.reserved1 = 0; | 8967 | config->hdr.reserved1 = 0; |
8884 | 8968 | ||
@@ -9243,6 +9327,18 @@ static int bnx2x_set_power_state(struct bnx2x *bp, pci_power_t state) | |||
9243 | return 0; | 9327 | return 0; |
9244 | } | 9328 | } |
9245 | 9329 | ||
9330 | static inline int bnx2x_has_rx_work(struct bnx2x_fastpath *fp) | ||
9331 | { | ||
9332 | u16 rx_cons_sb; | ||
9333 | |||
9334 | /* Tell compiler that status block fields can change */ | ||
9335 | barrier(); | ||
9336 | rx_cons_sb = le16_to_cpu(*fp->rx_cons_sb); | ||
9337 | if ((rx_cons_sb & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT) | ||
9338 | rx_cons_sb++; | ||
9339 | return (fp->rx_comp_cons != rx_cons_sb); | ||
9340 | } | ||
9341 | |||
9246 | /* | 9342 | /* |
9247 | * net_device service functions | 9343 | * net_device service functions |
9248 | */ | 9344 | */ |
@@ -9253,7 +9349,6 @@ static int bnx2x_poll(struct napi_struct *napi, int budget) | |||
9253 | napi); | 9349 | napi); |
9254 | struct bnx2x *bp = fp->bp; | 9350 | struct bnx2x *bp = fp->bp; |
9255 | int work_done = 0; | 9351 | int work_done = 0; |
9256 | u16 rx_cons_sb; | ||
9257 | 9352 | ||
9258 | #ifdef BNX2X_STOP_ON_ERROR | 9353 | #ifdef BNX2X_STOP_ON_ERROR |
9259 | if (unlikely(bp->panic)) | 9354 | if (unlikely(bp->panic)) |
@@ -9266,19 +9361,12 @@ static int bnx2x_poll(struct napi_struct *napi, int budget) | |||
9266 | 9361 | ||
9267 | bnx2x_update_fpsb_idx(fp); | 9362 | bnx2x_update_fpsb_idx(fp); |
9268 | 9363 | ||
9269 | if (BNX2X_HAS_TX_WORK(fp)) | 9364 | if (bnx2x_has_tx_work(fp)) |
9270 | bnx2x_tx_int(fp, budget); | 9365 | bnx2x_tx_int(fp, budget); |
9271 | 9366 | ||
9272 | rx_cons_sb = le16_to_cpu(*fp->rx_cons_sb); | 9367 | if (bnx2x_has_rx_work(fp)) |
9273 | if ((rx_cons_sb & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT) | ||
9274 | rx_cons_sb++; | ||
9275 | if (BNX2X_HAS_RX_WORK(fp)) | ||
9276 | work_done = bnx2x_rx_int(fp, budget); | 9368 | work_done = bnx2x_rx_int(fp, budget); |
9277 | |||
9278 | rmb(); /* BNX2X_HAS_WORK() reads the status block */ | 9369 | rmb(); /* BNX2X_HAS_WORK() reads the status block */ |
9279 | rx_cons_sb = le16_to_cpu(*fp->rx_cons_sb); | ||
9280 | if ((rx_cons_sb & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT) | ||
9281 | rx_cons_sb++; | ||
9282 | 9370 | ||
9283 | /* must not complete if we consumed full budget */ | 9371 | /* must not complete if we consumed full budget */ |
9284 | if ((work_done < budget) && !BNX2X_HAS_WORK(fp)) { | 9372 | if ((work_done < budget) && !BNX2X_HAS_WORK(fp)) { |
@@ -9389,6 +9477,7 @@ static inline u32 bnx2x_xmit_type(struct bnx2x *bp, struct sk_buff *skb) | |||
9389 | return rc; | 9477 | return rc; |
9390 | } | 9478 | } |
9391 | 9479 | ||
9480 | #if (MAX_SKB_FRAGS >= MAX_FETCH_BD - 3) | ||
9392 | /* check if packet requires linearization (packet is too fragmented) */ | 9481 | /* check if packet requires linearization (packet is too fragmented) */ |
9393 | static int bnx2x_pkt_req_lin(struct bnx2x *bp, struct sk_buff *skb, | 9482 | static int bnx2x_pkt_req_lin(struct bnx2x *bp, struct sk_buff *skb, |
9394 | u32 xmit_type) | 9483 | u32 xmit_type) |
@@ -9466,6 +9555,7 @@ exit_lbl: | |||
9466 | 9555 | ||
9467 | return to_copy; | 9556 | return to_copy; |
9468 | } | 9557 | } |
9558 | #endif | ||
9469 | 9559 | ||
9470 | /* called with netif_tx_lock | 9560 | /* called with netif_tx_lock |
9471 | * bnx2x_tx_int() runs without netif_tx_lock unless it needs to call | 9561 | * bnx2x_tx_int() runs without netif_tx_lock unless it needs to call |
@@ -9506,6 +9596,7 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
9506 | skb->ip_summed, skb->protocol, ipv6_hdr(skb)->nexthdr, | 9596 | skb->ip_summed, skb->protocol, ipv6_hdr(skb)->nexthdr, |
9507 | ip_hdr(skb)->protocol, skb_shinfo(skb)->gso_type, xmit_type); | 9597 | ip_hdr(skb)->protocol, skb_shinfo(skb)->gso_type, xmit_type); |
9508 | 9598 | ||
9599 | #if (MAX_SKB_FRAGS >= MAX_FETCH_BD - 3) | ||
9509 | /* First, check if we need to linearize the skb | 9600 | /* First, check if we need to linearize the skb |
9510 | (due to FW restrictions) */ | 9601 | (due to FW restrictions) */ |
9511 | if (bnx2x_pkt_req_lin(bp, skb, xmit_type)) { | 9602 | if (bnx2x_pkt_req_lin(bp, skb, xmit_type)) { |
@@ -9518,6 +9609,7 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
9518 | return NETDEV_TX_OK; | 9609 | return NETDEV_TX_OK; |
9519 | } | 9610 | } |
9520 | } | 9611 | } |
9612 | #endif | ||
9521 | 9613 | ||
9522 | /* | 9614 | /* |
9523 | Please read carefully. First we use one BD which we mark as start, | 9615 | Please read carefully. First we use one BD which we mark as start, |
@@ -9549,11 +9641,14 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
9549 | "sending pkt %u @%p next_idx %u bd %u @%p\n", | 9641 | "sending pkt %u @%p next_idx %u bd %u @%p\n", |
9550 | pkt_prod, tx_buf, fp->tx_pkt_prod, bd_prod, tx_bd); | 9642 | pkt_prod, tx_buf, fp->tx_pkt_prod, bd_prod, tx_bd); |
9551 | 9643 | ||
9552 | if ((bp->vlgrp != NULL) && vlan_tx_tag_present(skb)) { | 9644 | #ifdef BCM_VLAN |
9645 | if ((bp->vlgrp != NULL) && vlan_tx_tag_present(skb) && | ||
9646 | (bp->flags & HW_VLAN_TX_FLAG)) { | ||
9553 | tx_bd->vlan = cpu_to_le16(vlan_tx_tag_get(skb)); | 9647 | tx_bd->vlan = cpu_to_le16(vlan_tx_tag_get(skb)); |
9554 | tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_VLAN_TAG; | 9648 | tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_VLAN_TAG; |
9555 | vlan_off += 4; | 9649 | vlan_off += 4; |
9556 | } else | 9650 | } else |
9651 | #endif | ||
9557 | tx_bd->vlan = cpu_to_le16(pkt_prod); | 9652 | tx_bd->vlan = cpu_to_le16(pkt_prod); |
9558 | 9653 | ||
9559 | if (xmit_type) { | 9654 | if (xmit_type) { |
@@ -9705,6 +9800,15 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
9705 | 9800 | ||
9706 | DP(NETIF_MSG_TX_QUEUED, "doorbell: nbd %d bd %u\n", nbd, bd_prod); | 9801 | DP(NETIF_MSG_TX_QUEUED, "doorbell: nbd %d bd %u\n", nbd, bd_prod); |
9707 | 9802 | ||
9803 | /* | ||
9804 | * Make sure that the BD data is updated before updating the producer | ||
9805 | * since FW might read the BD right after the producer is updated. | ||
9806 | * This is only applicable for weak-ordered memory model archs such | ||
9807 | * as IA-64. The following barrier is also mandatory since FW will | ||
9808 | * assumes packets must have BDs. | ||
9809 | */ | ||
9810 | wmb(); | ||
9811 | |||
9708 | fp->hw_tx_prods->bds_prod = | 9812 | fp->hw_tx_prods->bds_prod = |
9709 | cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + nbd); | 9813 | cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + nbd); |
9710 | mb(); /* FW restriction: must not reorder writing nbd and packets */ | 9814 | mb(); /* FW restriction: must not reorder writing nbd and packets */ |
@@ -9718,6 +9822,9 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
9718 | dev->trans_start = jiffies; | 9822 | dev->trans_start = jiffies; |
9719 | 9823 | ||
9720 | if (unlikely(bnx2x_tx_avail(fp) < MAX_SKB_FRAGS + 3)) { | 9824 | if (unlikely(bnx2x_tx_avail(fp) < MAX_SKB_FRAGS + 3)) { |
9825 | /* We want bnx2x_tx_int to "see" the updated tx_bd_prod | ||
9826 | if we put Tx into XOFF state. */ | ||
9827 | smp_mb(); | ||
9721 | netif_stop_queue(dev); | 9828 | netif_stop_queue(dev); |
9722 | bp->eth_stats.driver_xoff++; | 9829 | bp->eth_stats.driver_xoff++; |
9723 | if (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3) | 9830 | if (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3) |
@@ -9733,6 +9840,8 @@ static int bnx2x_open(struct net_device *dev) | |||
9733 | { | 9840 | { |
9734 | struct bnx2x *bp = netdev_priv(dev); | 9841 | struct bnx2x *bp = netdev_priv(dev); |
9735 | 9842 | ||
9843 | netif_carrier_off(dev); | ||
9844 | |||
9736 | bnx2x_set_power_state(bp, PCI_D0); | 9845 | bnx2x_set_power_state(bp, PCI_D0); |
9737 | 9846 | ||
9738 | return bnx2x_nic_load(bp, LOAD_OPEN); | 9847 | return bnx2x_nic_load(bp, LOAD_OPEN); |
@@ -9816,7 +9925,7 @@ static void bnx2x_set_rx_mode(struct net_device *dev) | |||
9816 | for (; i < old; i++) { | 9925 | for (; i < old; i++) { |
9817 | if (CAM_IS_INVALID(config-> | 9926 | if (CAM_IS_INVALID(config-> |
9818 | config_table[i])) { | 9927 | config_table[i])) { |
9819 | i--; /* already invalidated */ | 9928 | /* already invalidated */ |
9820 | break; | 9929 | break; |
9821 | } | 9930 | } |
9822 | /* invalidate */ | 9931 | /* invalidate */ |
@@ -9987,6 +10096,16 @@ static void bnx2x_vlan_rx_register(struct net_device *dev, | |||
9987 | struct bnx2x *bp = netdev_priv(dev); | 10096 | struct bnx2x *bp = netdev_priv(dev); |
9988 | 10097 | ||
9989 | bp->vlgrp = vlgrp; | 10098 | bp->vlgrp = vlgrp; |
10099 | |||
10100 | /* Set flags according to the required capabilities */ | ||
10101 | bp->flags &= ~(HW_VLAN_RX_FLAG | HW_VLAN_TX_FLAG); | ||
10102 | |||
10103 | if (dev->features & NETIF_F_HW_VLAN_TX) | ||
10104 | bp->flags |= HW_VLAN_TX_FLAG; | ||
10105 | |||
10106 | if (dev->features & NETIF_F_HW_VLAN_RX) | ||
10107 | bp->flags |= HW_VLAN_RX_FLAG; | ||
10108 | |||
9990 | if (netif_running(dev)) | 10109 | if (netif_running(dev)) |
9991 | bnx2x_set_client_config(bp); | 10110 | bnx2x_set_client_config(bp); |
9992 | } | 10111 | } |
@@ -10143,6 +10262,7 @@ static int __devinit bnx2x_init_dev(struct pci_dev *pdev, | |||
10143 | dev->features |= NETIF_F_HIGHDMA; | 10262 | dev->features |= NETIF_F_HIGHDMA; |
10144 | #ifdef BCM_VLAN | 10263 | #ifdef BCM_VLAN |
10145 | dev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX); | 10264 | dev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX); |
10265 | bp->flags |= (HW_VLAN_RX_FLAG | HW_VLAN_TX_FLAG); | ||
10146 | #endif | 10266 | #endif |
10147 | dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN); | 10267 | dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN); |
10148 | dev->features |= NETIF_F_TSO6; | 10268 | dev->features |= NETIF_F_TSO6; |
@@ -10215,22 +10335,18 @@ static int __devinit bnx2x_init_one(struct pci_dev *pdev, | |||
10215 | return rc; | 10335 | return rc; |
10216 | } | 10336 | } |
10217 | 10337 | ||
10218 | rc = register_netdev(dev); | ||
10219 | if (rc) { | ||
10220 | dev_err(&pdev->dev, "Cannot register net device\n"); | ||
10221 | goto init_one_exit; | ||
10222 | } | ||
10223 | |||
10224 | pci_set_drvdata(pdev, dev); | 10338 | pci_set_drvdata(pdev, dev); |
10225 | 10339 | ||
10226 | rc = bnx2x_init_bp(bp); | 10340 | rc = bnx2x_init_bp(bp); |
10341 | if (rc) | ||
10342 | goto init_one_exit; | ||
10343 | |||
10344 | rc = register_netdev(dev); | ||
10227 | if (rc) { | 10345 | if (rc) { |
10228 | unregister_netdev(dev); | 10346 | dev_err(&pdev->dev, "Cannot register net device\n"); |
10229 | goto init_one_exit; | 10347 | goto init_one_exit; |
10230 | } | 10348 | } |
10231 | 10349 | ||
10232 | netif_carrier_off(dev); | ||
10233 | |||
10234 | bp->common.name = board_info[ent->driver_data].name; | 10350 | bp->common.name = board_info[ent->driver_data].name; |
10235 | printk(KERN_INFO "%s: %s (%c%d) PCI-E x%d %s found at mem %lx," | 10351 | printk(KERN_INFO "%s: %s (%c%d) PCI-E x%d %s found at mem %lx," |
10236 | " IRQ %d, ", dev->name, bp->common.name, | 10352 | " IRQ %d, ", dev->name, bp->common.name, |
@@ -10378,6 +10494,8 @@ static int bnx2x_eeh_nic_unload(struct bnx2x *bp) | |||
10378 | bnx2x_free_skbs(bp); | 10494 | bnx2x_free_skbs(bp); |
10379 | for_each_queue(bp, i) | 10495 | for_each_queue(bp, i) |
10380 | bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); | 10496 | bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); |
10497 | for_each_queue(bp, i) | ||
10498 | netif_napi_del(&bnx2x_fp(bp, i, napi)); | ||
10381 | bnx2x_free_mem(bp); | 10499 | bnx2x_free_mem(bp); |
10382 | 10500 | ||
10383 | bp->state = BNX2X_STATE_CLOSED; | 10501 | bp->state = BNX2X_STATE_CLOSED; |
@@ -10519,12 +10637,20 @@ static struct pci_driver bnx2x_pci_driver = { | |||
10519 | 10637 | ||
10520 | static int __init bnx2x_init(void) | 10638 | static int __init bnx2x_init(void) |
10521 | { | 10639 | { |
10640 | bnx2x_wq = create_singlethread_workqueue("bnx2x"); | ||
10641 | if (bnx2x_wq == NULL) { | ||
10642 | printk(KERN_ERR PFX "Cannot create workqueue\n"); | ||
10643 | return -ENOMEM; | ||
10644 | } | ||
10645 | |||
10522 | return pci_register_driver(&bnx2x_pci_driver); | 10646 | return pci_register_driver(&bnx2x_pci_driver); |
10523 | } | 10647 | } |
10524 | 10648 | ||
10525 | static void __exit bnx2x_cleanup(void) | 10649 | static void __exit bnx2x_cleanup(void) |
10526 | { | 10650 | { |
10527 | pci_unregister_driver(&bnx2x_pci_driver); | 10651 | pci_unregister_driver(&bnx2x_pci_driver); |
10652 | |||
10653 | destroy_workqueue(bnx2x_wq); | ||
10528 | } | 10654 | } |
10529 | 10655 | ||
10530 | module_init(bnx2x_init); | 10656 | module_init(bnx2x_init); |
diff --git a/drivers/net/bnx2x_reg.h b/drivers/net/bnx2x_reg.h index a67b0c358ae4..d084e5fc4b51 100644 --- a/drivers/net/bnx2x_reg.h +++ b/drivers/net/bnx2x_reg.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* bnx2x_reg.h: Broadcom Everest network driver. | 1 | /* bnx2x_reg.h: Broadcom Everest network driver. |
2 | * | 2 | * |
3 | * Copyright (c) 2007-2008 Broadcom Corporation | 3 | * Copyright (c) 2007-2009 Broadcom Corporation |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
6 | * it under the terms of the GNU General Public License as published by | 6 | * it under the terms of the GNU General Public License as published by |
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index 14f9fb3e8795..379a1324db4e 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c | |||
@@ -2104,6 +2104,7 @@ static void init_lro_mgr(struct sge_qset *qs, struct net_lro_mgr *lro_mgr) | |||
2104 | { | 2104 | { |
2105 | lro_mgr->dev = qs->netdev; | 2105 | lro_mgr->dev = qs->netdev; |
2106 | lro_mgr->features = LRO_F_NAPI; | 2106 | lro_mgr->features = LRO_F_NAPI; |
2107 | lro_mgr->frag_align_pad = NET_IP_ALIGN; | ||
2107 | lro_mgr->ip_summed = CHECKSUM_UNNECESSARY; | 2108 | lro_mgr->ip_summed = CHECKSUM_UNNECESSARY; |
2108 | lro_mgr->ip_summed_aggr = CHECKSUM_UNNECESSARY; | 2109 | lro_mgr->ip_summed_aggr = CHECKSUM_UNNECESSARY; |
2109 | lro_mgr->max_desc = T3_MAX_LRO_SES; | 2110 | lro_mgr->max_desc = T3_MAX_LRO_SES; |
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c index cf43ee743b3c..0890162953e9 100644 --- a/drivers/net/e1000e/82571.c +++ b/drivers/net/e1000e/82571.c | |||
@@ -981,11 +981,15 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw) | |||
981 | ew32(PBA_ECC, reg); | 981 | ew32(PBA_ECC, reg); |
982 | } | 982 | } |
983 | 983 | ||
984 | /* PCI-Ex Control Register */ | 984 | /* PCI-Ex Control Registers */ |
985 | if (hw->mac.type == e1000_82574) { | 985 | if (hw->mac.type == e1000_82574) { |
986 | reg = er32(GCR); | 986 | reg = er32(GCR); |
987 | reg |= (1 << 22); | 987 | reg |= (1 << 22); |
988 | ew32(GCR, reg); | 988 | ew32(GCR, reg); |
989 | |||
990 | reg = er32(GCR2); | ||
991 | reg |= 1; | ||
992 | ew32(GCR2, reg); | ||
989 | } | 993 | } |
990 | 994 | ||
991 | return; | 995 | return; |
diff --git a/drivers/net/e1000e/hw.h b/drivers/net/e1000e/hw.h index f25e961c6b3b..2d4ce0492df0 100644 --- a/drivers/net/e1000e/hw.h +++ b/drivers/net/e1000e/hw.h | |||
@@ -206,6 +206,7 @@ enum e1e_registers { | |||
206 | E1000_MANC2H = 0x05860, /* Management Control To Host - RW */ | 206 | E1000_MANC2H = 0x05860, /* Management Control To Host - RW */ |
207 | E1000_SW_FW_SYNC = 0x05B5C, /* Software-Firmware Synchronization - RW */ | 207 | E1000_SW_FW_SYNC = 0x05B5C, /* Software-Firmware Synchronization - RW */ |
208 | E1000_GCR = 0x05B00, /* PCI-Ex Control */ | 208 | E1000_GCR = 0x05B00, /* PCI-Ex Control */ |
209 | E1000_GCR2 = 0x05B64, /* PCI-Ex Control #2 */ | ||
209 | E1000_FACTPS = 0x05B30, /* Function Active and Power State to MNG */ | 210 | E1000_FACTPS = 0x05B30, /* Function Active and Power State to MNG */ |
210 | E1000_SWSM = 0x05B50, /* SW Semaphore */ | 211 | E1000_SWSM = 0x05B50, /* SW Semaphore */ |
211 | E1000_FWSM = 0x05B54, /* FW Semaphore */ | 212 | E1000_FWSM = 0x05B54, /* FW Semaphore */ |
diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c index 4e6a9195fe5f..ce900e54d8d1 100644 --- a/drivers/net/fs_enet/fs_enet-main.c +++ b/drivers/net/fs_enet/fs_enet-main.c | |||
@@ -795,6 +795,7 @@ static int fs_enet_open(struct net_device *dev) | |||
795 | 795 | ||
796 | err = fs_init_phy(dev); | 796 | err = fs_init_phy(dev); |
797 | if (err) { | 797 | if (err) { |
798 | free_irq(fep->interrupt, dev); | ||
798 | if (fep->fpi->use_napi) | 799 | if (fep->fpi->use_napi) |
799 | napi_disable(&fep->napi); | 800 | napi_disable(&fep->napi); |
800 | return err; | 801 | return err; |
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index efcbeb6c8673..3f7eab42aef1 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
@@ -1423,15 +1423,11 @@ static void gfar_vlan_rx_register(struct net_device *dev, | |||
1423 | { | 1423 | { |
1424 | struct gfar_private *priv = netdev_priv(dev); | 1424 | struct gfar_private *priv = netdev_priv(dev); |
1425 | unsigned long flags; | 1425 | unsigned long flags; |
1426 | struct vlan_group *old_grp; | ||
1427 | u32 tempval; | 1426 | u32 tempval; |
1428 | 1427 | ||
1429 | spin_lock_irqsave(&priv->rxlock, flags); | 1428 | spin_lock_irqsave(&priv->rxlock, flags); |
1430 | 1429 | ||
1431 | old_grp = priv->vlgrp; | 1430 | priv->vlgrp = grp; |
1432 | |||
1433 | if (old_grp == grp) | ||
1434 | return; | ||
1435 | 1431 | ||
1436 | if (grp) { | 1432 | if (grp) { |
1437 | /* Enable VLAN tag insertion */ | 1433 | /* Enable VLAN tag insertion */ |
@@ -1622,10 +1618,18 @@ static int gfar_clean_tx_ring(struct net_device *dev) | |||
1622 | static void gfar_schedule_cleanup(struct net_device *dev) | 1618 | static void gfar_schedule_cleanup(struct net_device *dev) |
1623 | { | 1619 | { |
1624 | struct gfar_private *priv = netdev_priv(dev); | 1620 | struct gfar_private *priv = netdev_priv(dev); |
1621 | unsigned long flags; | ||
1622 | |||
1623 | spin_lock_irqsave(&priv->txlock, flags); | ||
1624 | spin_lock(&priv->rxlock); | ||
1625 | |||
1625 | if (netif_rx_schedule_prep(&priv->napi)) { | 1626 | if (netif_rx_schedule_prep(&priv->napi)) { |
1626 | gfar_write(&priv->regs->imask, IMASK_RTX_DISABLED); | 1627 | gfar_write(&priv->regs->imask, IMASK_RTX_DISABLED); |
1627 | __netif_rx_schedule(&priv->napi); | 1628 | __netif_rx_schedule(&priv->napi); |
1628 | } | 1629 | } |
1630 | |||
1631 | spin_unlock(&priv->rxlock); | ||
1632 | spin_unlock_irqrestore(&priv->txlock, flags); | ||
1629 | } | 1633 | } |
1630 | 1634 | ||
1631 | /* Interrupt Handler for Transmit complete */ | 1635 | /* Interrupt Handler for Transmit complete */ |
diff --git a/drivers/net/ibm_newemac/mal.c b/drivers/net/ibm_newemac/mal.c index ecf9798987fa..2a2fc17b2878 100644 --- a/drivers/net/ibm_newemac/mal.c +++ b/drivers/net/ibm_newemac/mal.c | |||
@@ -613,7 +613,9 @@ static int __devinit mal_probe(struct of_device *ofdev, | |||
613 | INIT_LIST_HEAD(&mal->list); | 613 | INIT_LIST_HEAD(&mal->list); |
614 | spin_lock_init(&mal->lock); | 614 | spin_lock_init(&mal->lock); |
615 | 615 | ||
616 | netif_napi_add(NULL, &mal->napi, mal_poll, | 616 | init_dummy_netdev(&mal->dummy_dev); |
617 | |||
618 | netif_napi_add(&mal->dummy_dev, &mal->napi, mal_poll, | ||
617 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT); | 619 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT); |
618 | 620 | ||
619 | /* Load power-on reset defaults */ | 621 | /* Load power-on reset defaults */ |
diff --git a/drivers/net/ibm_newemac/mal.h b/drivers/net/ibm_newemac/mal.h index 2f0a87360844..9ededfbf0726 100644 --- a/drivers/net/ibm_newemac/mal.h +++ b/drivers/net/ibm_newemac/mal.h | |||
@@ -214,6 +214,8 @@ struct mal_instance { | |||
214 | int index; | 214 | int index; |
215 | spinlock_t lock; | 215 | spinlock_t lock; |
216 | 216 | ||
217 | struct net_device dummy_dev; | ||
218 | |||
217 | unsigned int features; | 219 | unsigned int features; |
218 | }; | 220 | }; |
219 | 221 | ||
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c index 29118f58a141..3a22dc41b656 100644 --- a/drivers/net/irda/irda-usb.c +++ b/drivers/net/irda/irda-usb.c | |||
@@ -1073,7 +1073,7 @@ static int stir421x_patch_device(struct irda_usb_cb *self) | |||
1073 | { | 1073 | { |
1074 | unsigned int i; | 1074 | unsigned int i; |
1075 | int ret; | 1075 | int ret; |
1076 | char stir421x_fw_name[11]; | 1076 | char stir421x_fw_name[12]; |
1077 | const struct firmware *fw; | 1077 | const struct firmware *fw; |
1078 | const unsigned char *fw_version_ptr; /* pointer to version string */ | 1078 | const unsigned char *fw_version_ptr; /* pointer to version string */ |
1079 | unsigned long fw_version = 0; | 1079 | unsigned long fw_version = 0; |
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index acef3c65cd2c..d2f4d5f508b7 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -318,6 +318,9 @@ static void ixgbe_update_rx_dca(struct ixgbe_adapter *adapter, | |||
318 | rxctrl |= dca3_get_tag(&adapter->pdev->dev, cpu); | 318 | rxctrl |= dca3_get_tag(&adapter->pdev->dev, cpu); |
319 | rxctrl |= IXGBE_DCA_RXCTRL_DESC_DCA_EN; | 319 | rxctrl |= IXGBE_DCA_RXCTRL_DESC_DCA_EN; |
320 | rxctrl |= IXGBE_DCA_RXCTRL_HEAD_DCA_EN; | 320 | rxctrl |= IXGBE_DCA_RXCTRL_HEAD_DCA_EN; |
321 | rxctrl &= ~(IXGBE_DCA_RXCTRL_DESC_RRO_EN); | ||
322 | rxctrl &= ~(IXGBE_DCA_RXCTRL_DESC_WRO_EN | | ||
323 | IXGBE_DCA_RXCTRL_DESC_HSRO_EN); | ||
321 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_DCA_RXCTRL(q), rxctrl); | 324 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_DCA_RXCTRL(q), rxctrl); |
322 | rx_ring->cpu = cpu; | 325 | rx_ring->cpu = cpu; |
323 | } | 326 | } |
@@ -1741,6 +1744,32 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter) | |||
1741 | IXGBE_WRITE_REG(hw, IXGBE_RXCSUM, rxcsum); | 1744 | IXGBE_WRITE_REG(hw, IXGBE_RXCSUM, rxcsum); |
1742 | } | 1745 | } |
1743 | 1746 | ||
1747 | static void ixgbe_vlan_rx_add_vid(struct net_device *netdev, u16 vid) | ||
1748 | { | ||
1749 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | ||
1750 | struct ixgbe_hw *hw = &adapter->hw; | ||
1751 | |||
1752 | /* add VID to filter table */ | ||
1753 | hw->mac.ops.set_vfta(&adapter->hw, vid, 0, true); | ||
1754 | } | ||
1755 | |||
1756 | static void ixgbe_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) | ||
1757 | { | ||
1758 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | ||
1759 | struct ixgbe_hw *hw = &adapter->hw; | ||
1760 | |||
1761 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) | ||
1762 | ixgbe_irq_disable(adapter); | ||
1763 | |||
1764 | vlan_group_set_device(adapter->vlgrp, vid, NULL); | ||
1765 | |||
1766 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) | ||
1767 | ixgbe_irq_enable(adapter); | ||
1768 | |||
1769 | /* remove VID from filter table */ | ||
1770 | hw->mac.ops.set_vfta(&adapter->hw, vid, 0, false); | ||
1771 | } | ||
1772 | |||
1744 | static void ixgbe_vlan_rx_register(struct net_device *netdev, | 1773 | static void ixgbe_vlan_rx_register(struct net_device *netdev, |
1745 | struct vlan_group *grp) | 1774 | struct vlan_group *grp) |
1746 | { | 1775 | { |
@@ -1760,6 +1789,7 @@ static void ixgbe_vlan_rx_register(struct net_device *netdev, | |||
1760 | ctrl |= IXGBE_VLNCTRL_VME; | 1789 | ctrl |= IXGBE_VLNCTRL_VME; |
1761 | ctrl &= ~IXGBE_VLNCTRL_CFIEN; | 1790 | ctrl &= ~IXGBE_VLNCTRL_CFIEN; |
1762 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_VLNCTRL, ctrl); | 1791 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_VLNCTRL, ctrl); |
1792 | ixgbe_vlan_rx_add_vid(netdev, 0); | ||
1763 | 1793 | ||
1764 | if (grp) { | 1794 | if (grp) { |
1765 | /* enable VLAN tag insert/strip */ | 1795 | /* enable VLAN tag insert/strip */ |
@@ -1773,32 +1803,6 @@ static void ixgbe_vlan_rx_register(struct net_device *netdev, | |||
1773 | ixgbe_irq_enable(adapter); | 1803 | ixgbe_irq_enable(adapter); |
1774 | } | 1804 | } |
1775 | 1805 | ||
1776 | static void ixgbe_vlan_rx_add_vid(struct net_device *netdev, u16 vid) | ||
1777 | { | ||
1778 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | ||
1779 | struct ixgbe_hw *hw = &adapter->hw; | ||
1780 | |||
1781 | /* add VID to filter table */ | ||
1782 | hw->mac.ops.set_vfta(&adapter->hw, vid, 0, true); | ||
1783 | } | ||
1784 | |||
1785 | static void ixgbe_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) | ||
1786 | { | ||
1787 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | ||
1788 | struct ixgbe_hw *hw = &adapter->hw; | ||
1789 | |||
1790 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) | ||
1791 | ixgbe_irq_disable(adapter); | ||
1792 | |||
1793 | vlan_group_set_device(adapter->vlgrp, vid, NULL); | ||
1794 | |||
1795 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) | ||
1796 | ixgbe_irq_enable(adapter); | ||
1797 | |||
1798 | /* remove VID from filter table */ | ||
1799 | hw->mac.ops.set_vfta(&adapter->hw, vid, 0, false); | ||
1800 | } | ||
1801 | |||
1802 | static void ixgbe_restore_vlan(struct ixgbe_adapter *adapter) | 1806 | static void ixgbe_restore_vlan(struct ixgbe_adapter *adapter) |
1803 | { | 1807 | { |
1804 | ixgbe_vlan_rx_register(adapter->netdev, adapter->vlgrp); | 1808 | ixgbe_vlan_rx_register(adapter->netdev, adapter->vlgrp); |
@@ -2074,6 +2078,9 @@ static int ixgbe_up_complete(struct ixgbe_adapter *adapter) | |||
2074 | 2078 | ||
2075 | ixgbe_irq_enable(adapter); | 2079 | ixgbe_irq_enable(adapter); |
2076 | 2080 | ||
2081 | /* enable transmits */ | ||
2082 | netif_tx_start_all_queues(netdev); | ||
2083 | |||
2077 | /* bring the link up in the watchdog, this could race with our first | 2084 | /* bring the link up in the watchdog, this could race with our first |
2078 | * link up interrupt but shouldn't be a problem */ | 2085 | * link up interrupt but shouldn't be a problem */ |
2079 | adapter->flags |= IXGBE_FLAG_NEED_LINK_UPDATE; | 2086 | adapter->flags |= IXGBE_FLAG_NEED_LINK_UPDATE; |
@@ -3475,7 +3482,6 @@ static void ixgbe_watchdog_task(struct work_struct *work) | |||
3475 | (FLOW_TX ? "TX" : "None")))); | 3482 | (FLOW_TX ? "TX" : "None")))); |
3476 | 3483 | ||
3477 | netif_carrier_on(netdev); | 3484 | netif_carrier_on(netdev); |
3478 | netif_tx_wake_all_queues(netdev); | ||
3479 | } else { | 3485 | } else { |
3480 | /* Force detection of hung controller */ | 3486 | /* Force detection of hung controller */ |
3481 | adapter->detect_tx_hung = true; | 3487 | adapter->detect_tx_hung = true; |
@@ -3487,7 +3493,6 @@ static void ixgbe_watchdog_task(struct work_struct *work) | |||
3487 | printk(KERN_INFO "ixgbe: %s NIC Link is Down\n", | 3493 | printk(KERN_INFO "ixgbe: %s NIC Link is Down\n", |
3488 | netdev->name); | 3494 | netdev->name); |
3489 | netif_carrier_off(netdev); | 3495 | netif_carrier_off(netdev); |
3490 | netif_tx_stop_all_queues(netdev); | ||
3491 | } | 3496 | } |
3492 | } | 3497 | } |
3493 | 3498 | ||
@@ -4218,7 +4223,6 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev, | |||
4218 | } | 4223 | } |
4219 | 4224 | ||
4220 | netif_carrier_off(netdev); | 4225 | netif_carrier_off(netdev); |
4221 | netif_tx_stop_all_queues(netdev); | ||
4222 | 4226 | ||
4223 | strcpy(netdev->name, "eth%d"); | 4227 | strcpy(netdev->name, "eth%d"); |
4224 | err = register_netdev(netdev); | 4228 | err = register_netdev(netdev); |
diff --git a/drivers/net/ixgbe/ixgbe_type.h b/drivers/net/ixgbe/ixgbe_type.h index 83a11ff9ffd1..f011c57c9205 100644 --- a/drivers/net/ixgbe/ixgbe_type.h +++ b/drivers/net/ixgbe/ixgbe_type.h | |||
@@ -404,6 +404,9 @@ | |||
404 | #define IXGBE_DCA_RXCTRL_DESC_DCA_EN (1 << 5) /* DCA Rx Desc enable */ | 404 | #define IXGBE_DCA_RXCTRL_DESC_DCA_EN (1 << 5) /* DCA Rx Desc enable */ |
405 | #define IXGBE_DCA_RXCTRL_HEAD_DCA_EN (1 << 6) /* DCA Rx Desc header enable */ | 405 | #define IXGBE_DCA_RXCTRL_HEAD_DCA_EN (1 << 6) /* DCA Rx Desc header enable */ |
406 | #define IXGBE_DCA_RXCTRL_DATA_DCA_EN (1 << 7) /* DCA Rx Desc payload enable */ | 406 | #define IXGBE_DCA_RXCTRL_DATA_DCA_EN (1 << 7) /* DCA Rx Desc payload enable */ |
407 | #define IXGBE_DCA_RXCTRL_DESC_RRO_EN (1 << 9) /* DCA Rx rd Desc Relax Order */ | ||
408 | #define IXGBE_DCA_RXCTRL_DESC_WRO_EN (1 << 13) /* DCA Rx wr Desc Relax Order */ | ||
409 | #define IXGBE_DCA_RXCTRL_DESC_HSRO_EN (1 << 15) /* DCA Rx Split Header RO */ | ||
407 | 410 | ||
408 | #define IXGBE_DCA_TXCTRL_CPUID_MASK 0x0000001F /* Tx CPUID Mask */ | 411 | #define IXGBE_DCA_TXCTRL_CPUID_MASK 0x0000001F /* Tx CPUID Mask */ |
409 | #define IXGBE_DCA_TXCTRL_DESC_DCA_EN (1 << 5) /* DCA Tx Desc enable */ | 412 | #define IXGBE_DCA_TXCTRL_DESC_DCA_EN (1 << 5) /* DCA Tx Desc enable */ |
diff --git a/drivers/net/korina.c b/drivers/net/korina.c index 4a5580c1126a..75010cac76ac 100644 --- a/drivers/net/korina.c +++ b/drivers/net/korina.c | |||
@@ -84,7 +84,10 @@ | |||
84 | #define KORINA_NUM_RDS 64 /* number of receive descriptors */ | 84 | #define KORINA_NUM_RDS 64 /* number of receive descriptors */ |
85 | #define KORINA_NUM_TDS 64 /* number of transmit descriptors */ | 85 | #define KORINA_NUM_TDS 64 /* number of transmit descriptors */ |
86 | 86 | ||
87 | #define KORINA_RBSIZE 536 /* size of one resource buffer = Ether MTU */ | 87 | /* KORINA_RBSIZE is the hardware's default maximum receive |
88 | * frame size in bytes. Having this hardcoded means that there | ||
89 | * is no support for MTU sizes greater than 1500. */ | ||
90 | #define KORINA_RBSIZE 1536 /* size of one resource buffer = Ether MTU */ | ||
88 | #define KORINA_RDS_MASK (KORINA_NUM_RDS - 1) | 91 | #define KORINA_RDS_MASK (KORINA_NUM_RDS - 1) |
89 | #define KORINA_TDS_MASK (KORINA_NUM_TDS - 1) | 92 | #define KORINA_TDS_MASK (KORINA_NUM_TDS - 1) |
90 | #define RD_RING_SIZE (KORINA_NUM_RDS * sizeof(struct dma_desc)) | 93 | #define RD_RING_SIZE (KORINA_NUM_RDS * sizeof(struct dma_desc)) |
@@ -196,7 +199,7 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev) | |||
196 | struct korina_private *lp = netdev_priv(dev); | 199 | struct korina_private *lp = netdev_priv(dev); |
197 | unsigned long flags; | 200 | unsigned long flags; |
198 | u32 length; | 201 | u32 length; |
199 | u32 chain_index; | 202 | u32 chain_prev, chain_next; |
200 | struct dma_desc *td; | 203 | struct dma_desc *td; |
201 | 204 | ||
202 | spin_lock_irqsave(&lp->lock, flags); | 205 | spin_lock_irqsave(&lp->lock, flags); |
@@ -228,8 +231,8 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev) | |||
228 | /* Setup the transmit descriptor. */ | 231 | /* Setup the transmit descriptor. */ |
229 | dma_cache_inv((u32) td, sizeof(*td)); | 232 | dma_cache_inv((u32) td, sizeof(*td)); |
230 | td->ca = CPHYSADDR(skb->data); | 233 | td->ca = CPHYSADDR(skb->data); |
231 | chain_index = (lp->tx_chain_tail - 1) & | 234 | chain_prev = (lp->tx_chain_tail - 1) & KORINA_TDS_MASK; |
232 | KORINA_TDS_MASK; | 235 | chain_next = (lp->tx_chain_tail + 1) & KORINA_TDS_MASK; |
233 | 236 | ||
234 | if (readl(&(lp->tx_dma_regs->dmandptr)) == 0) { | 237 | if (readl(&(lp->tx_dma_regs->dmandptr)) == 0) { |
235 | if (lp->tx_chain_status == desc_empty) { | 238 | if (lp->tx_chain_status == desc_empty) { |
@@ -237,7 +240,7 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev) | |||
237 | td->control = DMA_COUNT(length) | | 240 | td->control = DMA_COUNT(length) | |
238 | DMA_DESC_COF | DMA_DESC_IOF; | 241 | DMA_DESC_COF | DMA_DESC_IOF; |
239 | /* Move tail */ | 242 | /* Move tail */ |
240 | lp->tx_chain_tail = chain_index; | 243 | lp->tx_chain_tail = chain_next; |
241 | /* Write to NDPTR */ | 244 | /* Write to NDPTR */ |
242 | writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), | 245 | writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), |
243 | &lp->tx_dma_regs->dmandptr); | 246 | &lp->tx_dma_regs->dmandptr); |
@@ -248,12 +251,12 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev) | |||
248 | td->control = DMA_COUNT(length) | | 251 | td->control = DMA_COUNT(length) | |
249 | DMA_DESC_COF | DMA_DESC_IOF; | 252 | DMA_DESC_COF | DMA_DESC_IOF; |
250 | /* Link to prev */ | 253 | /* Link to prev */ |
251 | lp->td_ring[chain_index].control &= | 254 | lp->td_ring[chain_prev].control &= |
252 | ~DMA_DESC_COF; | 255 | ~DMA_DESC_COF; |
253 | /* Link to prev */ | 256 | /* Link to prev */ |
254 | lp->td_ring[chain_index].link = CPHYSADDR(td); | 257 | lp->td_ring[chain_prev].link = CPHYSADDR(td); |
255 | /* Move tail */ | 258 | /* Move tail */ |
256 | lp->tx_chain_tail = chain_index; | 259 | lp->tx_chain_tail = chain_next; |
257 | /* Write to NDPTR */ | 260 | /* Write to NDPTR */ |
258 | writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), | 261 | writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), |
259 | &(lp->tx_dma_regs->dmandptr)); | 262 | &(lp->tx_dma_regs->dmandptr)); |
@@ -267,17 +270,16 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev) | |||
267 | td->control = DMA_COUNT(length) | | 270 | td->control = DMA_COUNT(length) | |
268 | DMA_DESC_COF | DMA_DESC_IOF; | 271 | DMA_DESC_COF | DMA_DESC_IOF; |
269 | /* Move tail */ | 272 | /* Move tail */ |
270 | lp->tx_chain_tail = chain_index; | 273 | lp->tx_chain_tail = chain_next; |
271 | lp->tx_chain_status = desc_filled; | 274 | lp->tx_chain_status = desc_filled; |
272 | netif_stop_queue(dev); | ||
273 | } else { | 275 | } else { |
274 | /* Update tail */ | 276 | /* Update tail */ |
275 | td->control = DMA_COUNT(length) | | 277 | td->control = DMA_COUNT(length) | |
276 | DMA_DESC_COF | DMA_DESC_IOF; | 278 | DMA_DESC_COF | DMA_DESC_IOF; |
277 | lp->td_ring[chain_index].control &= | 279 | lp->td_ring[chain_prev].control &= |
278 | ~DMA_DESC_COF; | 280 | ~DMA_DESC_COF; |
279 | lp->td_ring[chain_index].link = CPHYSADDR(td); | 281 | lp->td_ring[chain_prev].link = CPHYSADDR(td); |
280 | lp->tx_chain_tail = chain_index; | 282 | lp->tx_chain_tail = chain_next; |
281 | } | 283 | } |
282 | } | 284 | } |
283 | dma_cache_wback((u32) td, sizeof(*td)); | 285 | dma_cache_wback((u32) td, sizeof(*td)); |
@@ -327,13 +329,13 @@ static irqreturn_t korina_rx_dma_interrupt(int irq, void *dev_id) | |||
327 | 329 | ||
328 | dmas = readl(&lp->rx_dma_regs->dmas); | 330 | dmas = readl(&lp->rx_dma_regs->dmas); |
329 | if (dmas & (DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR)) { | 331 | if (dmas & (DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR)) { |
330 | netif_rx_schedule_prep(&lp->napi); | ||
331 | |||
332 | dmasm = readl(&lp->rx_dma_regs->dmasm); | 332 | dmasm = readl(&lp->rx_dma_regs->dmasm); |
333 | writel(dmasm | (DMA_STAT_DONE | | 333 | writel(dmasm | (DMA_STAT_DONE | |
334 | DMA_STAT_HALT | DMA_STAT_ERR), | 334 | DMA_STAT_HALT | DMA_STAT_ERR), |
335 | &lp->rx_dma_regs->dmasm); | 335 | &lp->rx_dma_regs->dmasm); |
336 | 336 | ||
337 | netif_rx_schedule(&lp->napi); | ||
338 | |||
337 | if (dmas & DMA_STAT_ERR) | 339 | if (dmas & DMA_STAT_ERR) |
338 | printk(KERN_ERR DRV_NAME "%s: DMA error\n", dev->name); | 340 | printk(KERN_ERR DRV_NAME "%s: DMA error\n", dev->name); |
339 | 341 | ||
@@ -350,15 +352,20 @@ static int korina_rx(struct net_device *dev, int limit) | |||
350 | struct dma_desc *rd = &lp->rd_ring[lp->rx_next_done]; | 352 | struct dma_desc *rd = &lp->rd_ring[lp->rx_next_done]; |
351 | struct sk_buff *skb, *skb_new; | 353 | struct sk_buff *skb, *skb_new; |
352 | u8 *pkt_buf; | 354 | u8 *pkt_buf; |
353 | u32 devcs, pkt_len, dmas, rx_free_desc; | 355 | u32 devcs, pkt_len, dmas; |
354 | int count; | 356 | int count; |
355 | 357 | ||
356 | dma_cache_inv((u32)rd, sizeof(*rd)); | 358 | dma_cache_inv((u32)rd, sizeof(*rd)); |
357 | 359 | ||
358 | for (count = 0; count < limit; count++) { | 360 | for (count = 0; count < limit; count++) { |
361 | skb = lp->rx_skb[lp->rx_next_done]; | ||
362 | skb_new = NULL; | ||
359 | 363 | ||
360 | devcs = rd->devcs; | 364 | devcs = rd->devcs; |
361 | 365 | ||
366 | if ((KORINA_RBSIZE - (u32)DMA_COUNT(rd->control)) == 0) | ||
367 | break; | ||
368 | |||
362 | /* Update statistics counters */ | 369 | /* Update statistics counters */ |
363 | if (devcs & ETH_RX_CRC) | 370 | if (devcs & ETH_RX_CRC) |
364 | dev->stats.rx_crc_errors++; | 371 | dev->stats.rx_crc_errors++; |
@@ -381,63 +388,58 @@ static int korina_rx(struct net_device *dev, int limit) | |||
381 | * in Rc32434 (errata ref #077) */ | 388 | * in Rc32434 (errata ref #077) */ |
382 | dev->stats.rx_errors++; | 389 | dev->stats.rx_errors++; |
383 | dev->stats.rx_dropped++; | 390 | dev->stats.rx_dropped++; |
384 | } | 391 | } else if ((devcs & ETH_RX_ROK)) { |
385 | |||
386 | while ((rx_free_desc = KORINA_RBSIZE - (u32)DMA_COUNT(rd->control)) != 0) { | ||
387 | /* init the var. used for the later | ||
388 | * operations within the while loop */ | ||
389 | skb_new = NULL; | ||
390 | pkt_len = RCVPKT_LENGTH(devcs); | 392 | pkt_len = RCVPKT_LENGTH(devcs); |
391 | skb = lp->rx_skb[lp->rx_next_done]; | 393 | |
392 | 394 | /* must be the (first and) last | |
393 | if ((devcs & ETH_RX_ROK)) { | 395 | * descriptor then */ |
394 | /* must be the (first and) last | 396 | pkt_buf = (u8 *)lp->rx_skb[lp->rx_next_done]->data; |
395 | * descriptor then */ | 397 | |
396 | pkt_buf = (u8 *)lp->rx_skb[lp->rx_next_done]->data; | 398 | /* invalidate the cache */ |
397 | 399 | dma_cache_inv((unsigned long)pkt_buf, pkt_len - 4); | |
398 | /* invalidate the cache */ | 400 | |
399 | dma_cache_inv((unsigned long)pkt_buf, pkt_len - 4); | 401 | /* Malloc up new buffer. */ |
400 | 402 | skb_new = netdev_alloc_skb(dev, KORINA_RBSIZE + 2); | |
401 | /* Malloc up new buffer. */ | 403 | |
402 | skb_new = netdev_alloc_skb(dev, KORINA_RBSIZE + 2); | 404 | if (!skb_new) |
403 | 405 | break; | |
404 | if (!skb_new) | 406 | /* Do not count the CRC */ |
405 | break; | 407 | skb_put(skb, pkt_len - 4); |
406 | /* Do not count the CRC */ | 408 | skb->protocol = eth_type_trans(skb, dev); |
407 | skb_put(skb, pkt_len - 4); | 409 | |
408 | skb->protocol = eth_type_trans(skb, dev); | 410 | /* Pass the packet to upper layers */ |
409 | 411 | netif_receive_skb(skb); | |
410 | /* Pass the packet to upper layers */ | 412 | dev->stats.rx_packets++; |
411 | netif_receive_skb(skb); | 413 | dev->stats.rx_bytes += pkt_len; |
412 | dev->stats.rx_packets++; | 414 | |
413 | dev->stats.rx_bytes += pkt_len; | 415 | /* Update the mcast stats */ |
414 | 416 | if (devcs & ETH_RX_MP) | |
415 | /* Update the mcast stats */ | 417 | dev->stats.multicast++; |
416 | if (devcs & ETH_RX_MP) | 418 | |
417 | dev->stats.multicast++; | 419 | /* 16 bit align */ |
418 | 420 | skb_reserve(skb_new, 2); | |
419 | lp->rx_skb[lp->rx_next_done] = skb_new; | 421 | |
420 | } | 422 | lp->rx_skb[lp->rx_next_done] = skb_new; |
421 | |||
422 | rd->devcs = 0; | ||
423 | |||
424 | /* Restore descriptor's curr_addr */ | ||
425 | if (skb_new) | ||
426 | rd->ca = CPHYSADDR(skb_new->data); | ||
427 | else | ||
428 | rd->ca = CPHYSADDR(skb->data); | ||
429 | |||
430 | rd->control = DMA_COUNT(KORINA_RBSIZE) | | ||
431 | DMA_DESC_COD | DMA_DESC_IOD; | ||
432 | lp->rd_ring[(lp->rx_next_done - 1) & | ||
433 | KORINA_RDS_MASK].control &= | ||
434 | ~DMA_DESC_COD; | ||
435 | |||
436 | lp->rx_next_done = (lp->rx_next_done + 1) & KORINA_RDS_MASK; | ||
437 | dma_cache_wback((u32)rd, sizeof(*rd)); | ||
438 | rd = &lp->rd_ring[lp->rx_next_done]; | ||
439 | writel(~DMA_STAT_DONE, &lp->rx_dma_regs->dmas); | ||
440 | } | 423 | } |
424 | |||
425 | rd->devcs = 0; | ||
426 | |||
427 | /* Restore descriptor's curr_addr */ | ||
428 | if (skb_new) | ||
429 | rd->ca = CPHYSADDR(skb_new->data); | ||
430 | else | ||
431 | rd->ca = CPHYSADDR(skb->data); | ||
432 | |||
433 | rd->control = DMA_COUNT(KORINA_RBSIZE) | | ||
434 | DMA_DESC_COD | DMA_DESC_IOD; | ||
435 | lp->rd_ring[(lp->rx_next_done - 1) & | ||
436 | KORINA_RDS_MASK].control &= | ||
437 | ~DMA_DESC_COD; | ||
438 | |||
439 | lp->rx_next_done = (lp->rx_next_done + 1) & KORINA_RDS_MASK; | ||
440 | dma_cache_wback((u32)rd, sizeof(*rd)); | ||
441 | rd = &lp->rd_ring[lp->rx_next_done]; | ||
442 | writel(~DMA_STAT_DONE, &lp->rx_dma_regs->dmas); | ||
441 | } | 443 | } |
442 | 444 | ||
443 | dmas = readl(&lp->rx_dma_regs->dmas); | 445 | dmas = readl(&lp->rx_dma_regs->dmas); |
@@ -623,12 +625,12 @@ korina_tx_dma_interrupt(int irq, void *dev_id) | |||
623 | dmas = readl(&lp->tx_dma_regs->dmas); | 625 | dmas = readl(&lp->tx_dma_regs->dmas); |
624 | 626 | ||
625 | if (dmas & (DMA_STAT_FINI | DMA_STAT_ERR)) { | 627 | if (dmas & (DMA_STAT_FINI | DMA_STAT_ERR)) { |
626 | korina_tx(dev); | ||
627 | |||
628 | dmasm = readl(&lp->tx_dma_regs->dmasm); | 628 | dmasm = readl(&lp->tx_dma_regs->dmasm); |
629 | writel(dmasm | (DMA_STAT_FINI | DMA_STAT_ERR), | 629 | writel(dmasm | (DMA_STAT_FINI | DMA_STAT_ERR), |
630 | &lp->tx_dma_regs->dmasm); | 630 | &lp->tx_dma_regs->dmasm); |
631 | 631 | ||
632 | korina_tx(dev); | ||
633 | |||
632 | if (lp->tx_chain_status == desc_filled && | 634 | if (lp->tx_chain_status == desc_filled && |
633 | (readl(&(lp->tx_dma_regs->dmandptr)) == 0)) { | 635 | (readl(&(lp->tx_dma_regs->dmandptr)) == 0)) { |
634 | writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), | 636 | writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), |
@@ -741,6 +743,7 @@ static struct ethtool_ops netdev_ethtool_ops = { | |||
741 | static void korina_alloc_ring(struct net_device *dev) | 743 | static void korina_alloc_ring(struct net_device *dev) |
742 | { | 744 | { |
743 | struct korina_private *lp = netdev_priv(dev); | 745 | struct korina_private *lp = netdev_priv(dev); |
746 | struct sk_buff *skb; | ||
744 | int i; | 747 | int i; |
745 | 748 | ||
746 | /* Initialize the transmit descriptors */ | 749 | /* Initialize the transmit descriptors */ |
@@ -756,8 +759,6 @@ static void korina_alloc_ring(struct net_device *dev) | |||
756 | 759 | ||
757 | /* Initialize the receive descriptors */ | 760 | /* Initialize the receive descriptors */ |
758 | for (i = 0; i < KORINA_NUM_RDS; i++) { | 761 | for (i = 0; i < KORINA_NUM_RDS; i++) { |
759 | struct sk_buff *skb = lp->rx_skb[i]; | ||
760 | |||
761 | skb = dev_alloc_skb(KORINA_RBSIZE + 2); | 762 | skb = dev_alloc_skb(KORINA_RBSIZE + 2); |
762 | if (!skb) | 763 | if (!skb) |
763 | break; | 764 | break; |
@@ -770,11 +771,12 @@ static void korina_alloc_ring(struct net_device *dev) | |||
770 | lp->rd_ring[i].link = CPHYSADDR(&lp->rd_ring[i+1]); | 771 | lp->rd_ring[i].link = CPHYSADDR(&lp->rd_ring[i+1]); |
771 | } | 772 | } |
772 | 773 | ||
773 | /* loop back */ | 774 | /* loop back receive descriptors, so the last |
774 | lp->rd_ring[i].link = CPHYSADDR(&lp->rd_ring[0]); | 775 | * descriptor points to the first one */ |
775 | lp->rx_next_done = 0; | 776 | lp->rd_ring[i - 1].link = CPHYSADDR(&lp->rd_ring[0]); |
777 | lp->rd_ring[i - 1].control |= DMA_DESC_COD; | ||
776 | 778 | ||
777 | lp->rd_ring[i].control |= DMA_DESC_COD; | 779 | lp->rx_next_done = 0; |
778 | lp->rx_chain_head = 0; | 780 | lp->rx_chain_head = 0; |
779 | lp->rx_chain_tail = 0; | 781 | lp->rx_chain_tail = 0; |
780 | lp->rx_chain_status = desc_empty; | 782 | lp->rx_chain_status = desc_empty; |
@@ -901,6 +903,8 @@ static int korina_restart(struct net_device *dev) | |||
901 | 903 | ||
902 | korina_free_ring(dev); | 904 | korina_free_ring(dev); |
903 | 905 | ||
906 | napi_disable(&lp->napi); | ||
907 | |||
904 | ret = korina_init(dev); | 908 | ret = korina_init(dev); |
905 | if (ret < 0) { | 909 | if (ret < 0) { |
906 | printk(KERN_ERR DRV_NAME "%s: cannot restart device\n", | 910 | printk(KERN_ERR DRV_NAME "%s: cannot restart device\n", |
@@ -999,14 +1003,14 @@ static int korina_open(struct net_device *dev) | |||
999 | * that handles the Done Finished | 1003 | * that handles the Done Finished |
1000 | * Ovr and Und Events */ | 1004 | * Ovr and Und Events */ |
1001 | ret = request_irq(lp->rx_irq, &korina_rx_dma_interrupt, | 1005 | ret = request_irq(lp->rx_irq, &korina_rx_dma_interrupt, |
1002 | IRQF_SHARED | IRQF_DISABLED, "Korina ethernet Rx", dev); | 1006 | IRQF_DISABLED, "Korina ethernet Rx", dev); |
1003 | if (ret < 0) { | 1007 | if (ret < 0) { |
1004 | printk(KERN_ERR DRV_NAME "%s: unable to get Rx DMA IRQ %d\n", | 1008 | printk(KERN_ERR DRV_NAME "%s: unable to get Rx DMA IRQ %d\n", |
1005 | dev->name, lp->rx_irq); | 1009 | dev->name, lp->rx_irq); |
1006 | goto err_release; | 1010 | goto err_release; |
1007 | } | 1011 | } |
1008 | ret = request_irq(lp->tx_irq, &korina_tx_dma_interrupt, | 1012 | ret = request_irq(lp->tx_irq, &korina_tx_dma_interrupt, |
1009 | IRQF_SHARED | IRQF_DISABLED, "Korina ethernet Tx", dev); | 1013 | IRQF_DISABLED, "Korina ethernet Tx", dev); |
1010 | if (ret < 0) { | 1014 | if (ret < 0) { |
1011 | printk(KERN_ERR DRV_NAME "%s: unable to get Tx DMA IRQ %d\n", | 1015 | printk(KERN_ERR DRV_NAME "%s: unable to get Tx DMA IRQ %d\n", |
1012 | dev->name, lp->tx_irq); | 1016 | dev->name, lp->tx_irq); |
@@ -1015,7 +1019,7 @@ static int korina_open(struct net_device *dev) | |||
1015 | 1019 | ||
1016 | /* Install handler for overrun error. */ | 1020 | /* Install handler for overrun error. */ |
1017 | ret = request_irq(lp->ovr_irq, &korina_ovr_interrupt, | 1021 | ret = request_irq(lp->ovr_irq, &korina_ovr_interrupt, |
1018 | IRQF_SHARED | IRQF_DISABLED, "Ethernet Overflow", dev); | 1022 | IRQF_DISABLED, "Ethernet Overflow", dev); |
1019 | if (ret < 0) { | 1023 | if (ret < 0) { |
1020 | printk(KERN_ERR DRV_NAME"%s: unable to get OVR IRQ %d\n", | 1024 | printk(KERN_ERR DRV_NAME"%s: unable to get OVR IRQ %d\n", |
1021 | dev->name, lp->ovr_irq); | 1025 | dev->name, lp->ovr_irq); |
@@ -1024,7 +1028,7 @@ static int korina_open(struct net_device *dev) | |||
1024 | 1028 | ||
1025 | /* Install handler for underflow error. */ | 1029 | /* Install handler for underflow error. */ |
1026 | ret = request_irq(lp->und_irq, &korina_und_interrupt, | 1030 | ret = request_irq(lp->und_irq, &korina_und_interrupt, |
1027 | IRQF_SHARED | IRQF_DISABLED, "Ethernet Underflow", dev); | 1031 | IRQF_DISABLED, "Ethernet Underflow", dev); |
1028 | if (ret < 0) { | 1032 | if (ret < 0) { |
1029 | printk(KERN_ERR DRV_NAME "%s: unable to get UND IRQ %d\n", | 1033 | printk(KERN_ERR DRV_NAME "%s: unable to get UND IRQ %d\n", |
1030 | dev->name, lp->und_irq); | 1034 | dev->name, lp->und_irq); |
@@ -1067,6 +1071,8 @@ static int korina_close(struct net_device *dev) | |||
1067 | 1071 | ||
1068 | korina_free_ring(dev); | 1072 | korina_free_ring(dev); |
1069 | 1073 | ||
1074 | napi_disable(&lp->napi); | ||
1075 | |||
1070 | free_irq(lp->rx_irq, dev); | 1076 | free_irq(lp->rx_irq, dev); |
1071 | free_irq(lp->tx_irq, dev); | 1077 | free_irq(lp->tx_irq, dev); |
1072 | free_irq(lp->ovr_irq, dev); | 1078 | free_irq(lp->ovr_irq, dev); |
@@ -1089,7 +1095,6 @@ static int korina_probe(struct platform_device *pdev) | |||
1089 | return -ENOMEM; | 1095 | return -ENOMEM; |
1090 | } | 1096 | } |
1091 | SET_NETDEV_DEV(dev, &pdev->dev); | 1097 | SET_NETDEV_DEV(dev, &pdev->dev); |
1092 | platform_set_drvdata(pdev, dev); | ||
1093 | lp = netdev_priv(dev); | 1098 | lp = netdev_priv(dev); |
1094 | 1099 | ||
1095 | bif->dev = dev; | 1100 | bif->dev = dev; |
diff --git a/drivers/net/macb.c b/drivers/net/macb.c index a04da4ecaa88..f6c4936e2fa8 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c | |||
@@ -321,6 +321,10 @@ static void macb_tx(struct macb *bp) | |||
321 | printk(KERN_ERR "%s: TX underrun, resetting buffers\n", | 321 | printk(KERN_ERR "%s: TX underrun, resetting buffers\n", |
322 | bp->dev->name); | 322 | bp->dev->name); |
323 | 323 | ||
324 | /* Transfer ongoing, disable transmitter, to avoid confusion */ | ||
325 | if (status & MACB_BIT(TGO)) | ||
326 | macb_writel(bp, NCR, macb_readl(bp, NCR) & ~MACB_BIT(TE)); | ||
327 | |||
324 | head = bp->tx_head; | 328 | head = bp->tx_head; |
325 | 329 | ||
326 | /*Mark all the buffer as used to avoid sending a lost buffer*/ | 330 | /*Mark all the buffer as used to avoid sending a lost buffer*/ |
@@ -343,6 +347,10 @@ static void macb_tx(struct macb *bp) | |||
343 | } | 347 | } |
344 | 348 | ||
345 | bp->tx_head = bp->tx_tail = 0; | 349 | bp->tx_head = bp->tx_tail = 0; |
350 | |||
351 | /* Enable the transmitter again */ | ||
352 | if (status & MACB_BIT(TGO)) | ||
353 | macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TE)); | ||
346 | } | 354 | } |
347 | 355 | ||
348 | if (!(status & MACB_BIT(COMP))) | 356 | if (!(status & MACB_BIT(COMP))) |
diff --git a/drivers/net/mlx4/profile.c b/drivers/net/mlx4/profile.c index 919fb9eb1b62..cebdf3243ca1 100644 --- a/drivers/net/mlx4/profile.c +++ b/drivers/net/mlx4/profile.c | |||
@@ -107,9 +107,9 @@ u64 mlx4_make_profile(struct mlx4_dev *dev, | |||
107 | profile[MLX4_RES_AUXC].num = request->num_qp; | 107 | profile[MLX4_RES_AUXC].num = request->num_qp; |
108 | profile[MLX4_RES_SRQ].num = request->num_srq; | 108 | profile[MLX4_RES_SRQ].num = request->num_srq; |
109 | profile[MLX4_RES_CQ].num = request->num_cq; | 109 | profile[MLX4_RES_CQ].num = request->num_cq; |
110 | profile[MLX4_RES_EQ].num = min(dev_cap->max_eqs, | 110 | profile[MLX4_RES_EQ].num = min_t(unsigned, dev_cap->max_eqs, |
111 | dev_cap->reserved_eqs + | 111 | dev_cap->reserved_eqs + |
112 | num_possible_cpus() + 1); | 112 | num_possible_cpus() + 1); |
113 | profile[MLX4_RES_DMPT].num = request->num_mpt; | 113 | profile[MLX4_RES_DMPT].num = request->num_mpt; |
114 | profile[MLX4_RES_CMPT].num = MLX4_NUM_CMPTS; | 114 | profile[MLX4_RES_CMPT].num = MLX4_NUM_CMPTS; |
115 | profile[MLX4_RES_MTT].num = request->num_mtt; | 115 | profile[MLX4_RES_MTT].num = request->num_mtt; |
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index 7253a499d9c8..5f31bbb614af 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c | |||
@@ -136,21 +136,23 @@ static char mv643xx_eth_driver_version[] = "1.4"; | |||
136 | /* | 136 | /* |
137 | * SDMA configuration register. | 137 | * SDMA configuration register. |
138 | */ | 138 | */ |
139 | #define RX_BURST_SIZE_4_64BIT (2 << 1) | ||
139 | #define RX_BURST_SIZE_16_64BIT (4 << 1) | 140 | #define RX_BURST_SIZE_16_64BIT (4 << 1) |
140 | #define BLM_RX_NO_SWAP (1 << 4) | 141 | #define BLM_RX_NO_SWAP (1 << 4) |
141 | #define BLM_TX_NO_SWAP (1 << 5) | 142 | #define BLM_TX_NO_SWAP (1 << 5) |
143 | #define TX_BURST_SIZE_4_64BIT (2 << 22) | ||
142 | #define TX_BURST_SIZE_16_64BIT (4 << 22) | 144 | #define TX_BURST_SIZE_16_64BIT (4 << 22) |
143 | 145 | ||
144 | #if defined(__BIG_ENDIAN) | 146 | #if defined(__BIG_ENDIAN) |
145 | #define PORT_SDMA_CONFIG_DEFAULT_VALUE \ | 147 | #define PORT_SDMA_CONFIG_DEFAULT_VALUE \ |
146 | (RX_BURST_SIZE_16_64BIT | \ | 148 | (RX_BURST_SIZE_4_64BIT | \ |
147 | TX_BURST_SIZE_16_64BIT) | 149 | TX_BURST_SIZE_4_64BIT) |
148 | #elif defined(__LITTLE_ENDIAN) | 150 | #elif defined(__LITTLE_ENDIAN) |
149 | #define PORT_SDMA_CONFIG_DEFAULT_VALUE \ | 151 | #define PORT_SDMA_CONFIG_DEFAULT_VALUE \ |
150 | (RX_BURST_SIZE_16_64BIT | \ | 152 | (RX_BURST_SIZE_4_64BIT | \ |
151 | BLM_RX_NO_SWAP | \ | 153 | BLM_RX_NO_SWAP | \ |
152 | BLM_TX_NO_SWAP | \ | 154 | BLM_TX_NO_SWAP | \ |
153 | TX_BURST_SIZE_16_64BIT) | 155 | TX_BURST_SIZE_4_64BIT) |
154 | #else | 156 | #else |
155 | #error One of __BIG_ENDIAN or __LITTLE_ENDIAN must be defined | 157 | #error One of __BIG_ENDIAN or __LITTLE_ENDIAN must be defined |
156 | #endif | 158 | #endif |
@@ -1594,7 +1596,7 @@ oom: | |||
1594 | entry = addr_crc(a); | 1596 | entry = addr_crc(a); |
1595 | } | 1597 | } |
1596 | 1598 | ||
1597 | table[entry >> 2] |= 1 << (entry & 3); | 1599 | table[entry >> 2] |= 1 << (8 * (entry & 3)); |
1598 | } | 1600 | } |
1599 | 1601 | ||
1600 | for (i = 0; i < 0x100; i += 4) { | 1602 | for (i = 0; i < 0x100; i += 4) { |
@@ -2210,6 +2212,7 @@ static int mv643xx_eth_stop(struct net_device *dev) | |||
2210 | struct mv643xx_eth_private *mp = netdev_priv(dev); | 2212 | struct mv643xx_eth_private *mp = netdev_priv(dev); |
2211 | int i; | 2213 | int i; |
2212 | 2214 | ||
2215 | wrlp(mp, INT_MASK_EXT, 0x00000000); | ||
2213 | wrlp(mp, INT_MASK, 0x00000000); | 2216 | wrlp(mp, INT_MASK, 0x00000000); |
2214 | rdlp(mp, INT_MASK); | 2217 | rdlp(mp, INT_MASK); |
2215 | 2218 | ||
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index 6bb71b687f7b..e9c1296b267e 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /************************************************************************* | 1 | /************************************************************************* |
2 | * myri10ge.c: Myricom Myri-10G Ethernet driver. | 2 | * myri10ge.c: Myricom Myri-10G Ethernet driver. |
3 | * | 3 | * |
4 | * Copyright (C) 2005 - 2007 Myricom, Inc. | 4 | * Copyright (C) 2005 - 2009 Myricom, Inc. |
5 | * All rights reserved. | 5 | * All rights reserved. |
6 | * | 6 | * |
7 | * Redistribution and use in source and binary forms, with or without | 7 | * Redistribution and use in source and binary forms, with or without |
@@ -75,7 +75,7 @@ | |||
75 | #include "myri10ge_mcp.h" | 75 | #include "myri10ge_mcp.h" |
76 | #include "myri10ge_mcp_gen_header.h" | 76 | #include "myri10ge_mcp_gen_header.h" |
77 | 77 | ||
78 | #define MYRI10GE_VERSION_STR "1.4.4-1.398" | 78 | #define MYRI10GE_VERSION_STR "1.4.4-1.401" |
79 | 79 | ||
80 | MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); | 80 | MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); |
81 | MODULE_AUTHOR("Maintainer: help@myri.com"); | 81 | MODULE_AUTHOR("Maintainer: help@myri.com"); |
@@ -3786,7 +3786,7 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3786 | if (status != 0) { | 3786 | if (status != 0) { |
3787 | dev_err(&pdev->dev, "Error %d writing PCI_EXP_DEVCTL\n", | 3787 | dev_err(&pdev->dev, "Error %d writing PCI_EXP_DEVCTL\n", |
3788 | status); | 3788 | status); |
3789 | goto abort_with_netdev; | 3789 | goto abort_with_enabled; |
3790 | } | 3790 | } |
3791 | 3791 | ||
3792 | pci_set_master(pdev); | 3792 | pci_set_master(pdev); |
@@ -3801,13 +3801,13 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3801 | } | 3801 | } |
3802 | if (status != 0) { | 3802 | if (status != 0) { |
3803 | dev_err(&pdev->dev, "Error %d setting DMA mask\n", status); | 3803 | dev_err(&pdev->dev, "Error %d setting DMA mask\n", status); |
3804 | goto abort_with_netdev; | 3804 | goto abort_with_enabled; |
3805 | } | 3805 | } |
3806 | (void)pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); | 3806 | (void)pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); |
3807 | mgp->cmd = dma_alloc_coherent(&pdev->dev, sizeof(*mgp->cmd), | 3807 | mgp->cmd = dma_alloc_coherent(&pdev->dev, sizeof(*mgp->cmd), |
3808 | &mgp->cmd_bus, GFP_KERNEL); | 3808 | &mgp->cmd_bus, GFP_KERNEL); |
3809 | if (mgp->cmd == NULL) | 3809 | if (mgp->cmd == NULL) |
3810 | goto abort_with_netdev; | 3810 | goto abort_with_enabled; |
3811 | 3811 | ||
3812 | mgp->board_span = pci_resource_len(pdev, 0); | 3812 | mgp->board_span = pci_resource_len(pdev, 0); |
3813 | mgp->iomem_base = pci_resource_start(pdev, 0); | 3813 | mgp->iomem_base = pci_resource_start(pdev, 0); |
@@ -3943,8 +3943,10 @@ abort_with_mtrr: | |||
3943 | dma_free_coherent(&pdev->dev, sizeof(*mgp->cmd), | 3943 | dma_free_coherent(&pdev->dev, sizeof(*mgp->cmd), |
3944 | mgp->cmd, mgp->cmd_bus); | 3944 | mgp->cmd, mgp->cmd_bus); |
3945 | 3945 | ||
3946 | abort_with_netdev: | 3946 | abort_with_enabled: |
3947 | pci_disable_device(pdev); | ||
3947 | 3948 | ||
3949 | abort_with_netdev: | ||
3948 | free_netdev(netdev); | 3950 | free_netdev(netdev); |
3949 | return status; | 3951 | return status; |
3950 | } | 3952 | } |
@@ -3990,6 +3992,7 @@ static void myri10ge_remove(struct pci_dev *pdev) | |||
3990 | mgp->cmd, mgp->cmd_bus); | 3992 | mgp->cmd, mgp->cmd_bus); |
3991 | 3993 | ||
3992 | free_netdev(netdev); | 3994 | free_netdev(netdev); |
3995 | pci_disable_device(pdev); | ||
3993 | pci_set_drvdata(pdev, NULL); | 3996 | pci_set_drvdata(pdev, NULL); |
3994 | } | 3997 | } |
3995 | 3998 | ||
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index f8e601c51da7..a75a31005fd3 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h | |||
@@ -146,7 +146,7 @@ | |||
146 | 146 | ||
147 | #define MAX_RX_BUFFER_LENGTH 1760 | 147 | #define MAX_RX_BUFFER_LENGTH 1760 |
148 | #define MAX_RX_JUMBO_BUFFER_LENGTH 8062 | 148 | #define MAX_RX_JUMBO_BUFFER_LENGTH 8062 |
149 | #define MAX_RX_LRO_BUFFER_LENGTH ((48*1024)-512) | 149 | #define MAX_RX_LRO_BUFFER_LENGTH (8062) |
150 | #define RX_DMA_MAP_LEN (MAX_RX_BUFFER_LENGTH - 2) | 150 | #define RX_DMA_MAP_LEN (MAX_RX_BUFFER_LENGTH - 2) |
151 | #define RX_JUMBO_DMA_MAP_LEN \ | 151 | #define RX_JUMBO_DMA_MAP_LEN \ |
152 | (MAX_RX_JUMBO_BUFFER_LENGTH - 2) | 152 | (MAX_RX_JUMBO_BUFFER_LENGTH - 2) |
@@ -207,11 +207,11 @@ | |||
207 | 207 | ||
208 | #define MAX_CMD_DESCRIPTORS 4096 | 208 | #define MAX_CMD_DESCRIPTORS 4096 |
209 | #define MAX_RCV_DESCRIPTORS 16384 | 209 | #define MAX_RCV_DESCRIPTORS 16384 |
210 | #define MAX_CMD_DESCRIPTORS_HOST (MAX_CMD_DESCRIPTORS / 4) | 210 | #define MAX_CMD_DESCRIPTORS_HOST 1024 |
211 | #define MAX_RCV_DESCRIPTORS_1G (MAX_RCV_DESCRIPTORS / 4) | 211 | #define MAX_RCV_DESCRIPTORS_1G 2048 |
212 | #define MAX_RCV_DESCRIPTORS_10G 8192 | 212 | #define MAX_RCV_DESCRIPTORS_10G 4096 |
213 | #define MAX_JUMBO_RCV_DESCRIPTORS 1024 | 213 | #define MAX_JUMBO_RCV_DESCRIPTORS 512 |
214 | #define MAX_LRO_RCV_DESCRIPTORS 64 | 214 | #define MAX_LRO_RCV_DESCRIPTORS 8 |
215 | #define MAX_RCVSTATUS_DESCRIPTORS MAX_RCV_DESCRIPTORS | 215 | #define MAX_RCVSTATUS_DESCRIPTORS MAX_RCV_DESCRIPTORS |
216 | #define MAX_JUMBO_RCV_DESC MAX_JUMBO_RCV_DESCRIPTORS | 216 | #define MAX_JUMBO_RCV_DESC MAX_JUMBO_RCV_DESCRIPTORS |
217 | #define MAX_RCV_DESC MAX_RCV_DESCRIPTORS | 217 | #define MAX_RCV_DESC MAX_RCV_DESCRIPTORS |
@@ -308,27 +308,16 @@ struct netxen_ring_ctx { | |||
308 | #define netxen_set_cmd_desc_ctxid(cmd_desc, var) \ | 308 | #define netxen_set_cmd_desc_ctxid(cmd_desc, var) \ |
309 | ((cmd_desc)->port_ctxid |= ((var) << 4 & 0xF0)) | 309 | ((cmd_desc)->port_ctxid |= ((var) << 4 & 0xF0)) |
310 | 310 | ||
311 | #define netxen_set_cmd_desc_flags(cmd_desc, val) \ | 311 | #define netxen_set_tx_port(_desc, _port) \ |
312 | (cmd_desc)->flags_opcode = ((cmd_desc)->flags_opcode & \ | 312 | (_desc)->port_ctxid = ((_port) & 0xf) | (((_port) << 4) & 0xf0) |
313 | ~cpu_to_le16(0x7f)) | cpu_to_le16((val) & 0x7f) | 313 | |
314 | #define netxen_set_cmd_desc_opcode(cmd_desc, val) \ | 314 | #define netxen_set_tx_flags_opcode(_desc, _flags, _opcode) \ |
315 | (cmd_desc)->flags_opcode = ((cmd_desc)->flags_opcode & \ | 315 | (_desc)->flags_opcode = \ |
316 | ~cpu_to_le16((u16)0x3f << 7)) | cpu_to_le16(((val) & 0x3f) << 7) | 316 | cpu_to_le16(((_flags) & 0x7f) | (((_opcode) & 0x3f) << 7)) |
317 | 317 | ||
318 | #define netxen_set_cmd_desc_num_of_buff(cmd_desc, val) \ | 318 | #define netxen_set_tx_frags_len(_desc, _frags, _len) \ |
319 | (cmd_desc)->num_of_buffers_total_length = \ | 319 | (_desc)->num_of_buffers_total_length = \ |
320 | ((cmd_desc)->num_of_buffers_total_length & \ | 320 | cpu_to_le32(((_frags) & 0xff) | (((_len) & 0xffffff) << 8)) |
321 | ~cpu_to_le32(0xff)) | cpu_to_le32((val) & 0xff) | ||
322 | #define netxen_set_cmd_desc_totallength(cmd_desc, val) \ | ||
323 | (cmd_desc)->num_of_buffers_total_length = \ | ||
324 | ((cmd_desc)->num_of_buffers_total_length & \ | ||
325 | ~cpu_to_le32((u32)0xffffff << 8)) | \ | ||
326 | cpu_to_le32(((val) & 0xffffff) << 8) | ||
327 | |||
328 | #define netxen_get_cmd_desc_opcode(cmd_desc) \ | ||
329 | ((le16_to_cpu((cmd_desc)->flags_opcode) >> 7) & 0x003f) | ||
330 | #define netxen_get_cmd_desc_totallength(cmd_desc) \ | ||
331 | ((le32_to_cpu((cmd_desc)->num_of_buffers_total_length) >> 8) & 0xffffff) | ||
332 | 321 | ||
333 | struct cmd_desc_type0 { | 322 | struct cmd_desc_type0 { |
334 | u8 tcp_hdr_offset; /* For LSO only */ | 323 | u8 tcp_hdr_offset; /* For LSO only */ |
@@ -510,7 +499,8 @@ typedef enum { | |||
510 | NETXEN_BRDTYPE_P3_10G_SFP_CT = 0x002a, | 499 | NETXEN_BRDTYPE_P3_10G_SFP_CT = 0x002a, |
511 | NETXEN_BRDTYPE_P3_10G_SFP_QT = 0x002b, | 500 | NETXEN_BRDTYPE_P3_10G_SFP_QT = 0x002b, |
512 | NETXEN_BRDTYPE_P3_10G_CX4 = 0x0031, | 501 | NETXEN_BRDTYPE_P3_10G_CX4 = 0x0031, |
513 | NETXEN_BRDTYPE_P3_10G_XFP = 0x0032 | 502 | NETXEN_BRDTYPE_P3_10G_XFP = 0x0032, |
503 | NETXEN_BRDTYPE_P3_10G_TP = 0x0080 | ||
514 | 504 | ||
515 | } netxen_brdtype_t; | 505 | } netxen_brdtype_t; |
516 | 506 | ||
@@ -757,7 +747,7 @@ extern char netxen_nic_driver_name[]; | |||
757 | */ | 747 | */ |
758 | struct netxen_skb_frag { | 748 | struct netxen_skb_frag { |
759 | u64 dma; | 749 | u64 dma; |
760 | u32 length; | 750 | ulong length; |
761 | }; | 751 | }; |
762 | 752 | ||
763 | #define _netxen_set_bits(config_word, start, bits, val) {\ | 753 | #define _netxen_set_bits(config_word, start, bits, val) {\ |
@@ -783,13 +773,7 @@ struct netxen_skb_frag { | |||
783 | struct netxen_cmd_buffer { | 773 | struct netxen_cmd_buffer { |
784 | struct sk_buff *skb; | 774 | struct sk_buff *skb; |
785 | struct netxen_skb_frag frag_array[MAX_BUFFERS_PER_CMD + 1]; | 775 | struct netxen_skb_frag frag_array[MAX_BUFFERS_PER_CMD + 1]; |
786 | u32 total_length; | 776 | u32 frag_count; |
787 | u32 mss; | ||
788 | u16 port; | ||
789 | u8 cmd; | ||
790 | u8 frag_count; | ||
791 | unsigned long time_stamp; | ||
792 | u32 state; | ||
793 | }; | 777 | }; |
794 | 778 | ||
795 | /* In rx_buffer, we do not need multiple fragments as is a single buffer */ | 779 | /* In rx_buffer, we do not need multiple fragments as is a single buffer */ |
@@ -876,7 +860,6 @@ struct nx_host_rds_ring { | |||
876 | u32 skb_size; | 860 | u32 skb_size; |
877 | struct netxen_rx_buffer *rx_buf_arr; /* rx buffers for receive */ | 861 | struct netxen_rx_buffer *rx_buf_arr; /* rx buffers for receive */ |
878 | struct list_head free_list; | 862 | struct list_head free_list; |
879 | int begin_alloc; | ||
880 | }; | 863 | }; |
881 | 864 | ||
882 | /* | 865 | /* |
@@ -995,31 +978,31 @@ struct netxen_recv_context { | |||
995 | */ | 978 | */ |
996 | 979 | ||
997 | typedef struct { | 980 | typedef struct { |
998 | u64 host_phys_addr; /* Ring base addr */ | 981 | __le64 host_phys_addr; /* Ring base addr */ |
999 | u32 ring_size; /* Ring entries */ | 982 | __le32 ring_size; /* Ring entries */ |
1000 | u16 msi_index; | 983 | __le16 msi_index; |
1001 | u16 rsvd; /* Padding */ | 984 | __le16 rsvd; /* Padding */ |
1002 | } nx_hostrq_sds_ring_t; | 985 | } nx_hostrq_sds_ring_t; |
1003 | 986 | ||
1004 | typedef struct { | 987 | typedef struct { |
1005 | u64 host_phys_addr; /* Ring base addr */ | 988 | __le64 host_phys_addr; /* Ring base addr */ |
1006 | u64 buff_size; /* Packet buffer size */ | 989 | __le64 buff_size; /* Packet buffer size */ |
1007 | u32 ring_size; /* Ring entries */ | 990 | __le32 ring_size; /* Ring entries */ |
1008 | u32 ring_kind; /* Class of ring */ | 991 | __le32 ring_kind; /* Class of ring */ |
1009 | } nx_hostrq_rds_ring_t; | 992 | } nx_hostrq_rds_ring_t; |
1010 | 993 | ||
1011 | typedef struct { | 994 | typedef struct { |
1012 | u64 host_rsp_dma_addr; /* Response dma'd here */ | 995 | __le64 host_rsp_dma_addr; /* Response dma'd here */ |
1013 | u32 capabilities[4]; /* Flag bit vector */ | 996 | __le32 capabilities[4]; /* Flag bit vector */ |
1014 | u32 host_int_crb_mode; /* Interrupt crb usage */ | 997 | __le32 host_int_crb_mode; /* Interrupt crb usage */ |
1015 | u32 host_rds_crb_mode; /* RDS crb usage */ | 998 | __le32 host_rds_crb_mode; /* RDS crb usage */ |
1016 | /* These ring offsets are relative to data[0] below */ | 999 | /* These ring offsets are relative to data[0] below */ |
1017 | u32 rds_ring_offset; /* Offset to RDS config */ | 1000 | __le32 rds_ring_offset; /* Offset to RDS config */ |
1018 | u32 sds_ring_offset; /* Offset to SDS config */ | 1001 | __le32 sds_ring_offset; /* Offset to SDS config */ |
1019 | u16 num_rds_rings; /* Count of RDS rings */ | 1002 | __le16 num_rds_rings; /* Count of RDS rings */ |
1020 | u16 num_sds_rings; /* Count of SDS rings */ | 1003 | __le16 num_sds_rings; /* Count of SDS rings */ |
1021 | u16 rsvd1; /* Padding */ | 1004 | __le16 rsvd1; /* Padding */ |
1022 | u16 rsvd2; /* Padding */ | 1005 | __le16 rsvd2; /* Padding */ |
1023 | u8 reserved[128]; /* reserve space for future expansion*/ | 1006 | u8 reserved[128]; /* reserve space for future expansion*/ |
1024 | /* MUST BE 64-bit aligned. | 1007 | /* MUST BE 64-bit aligned. |
1025 | The following is packed: | 1008 | The following is packed: |
@@ -1029,24 +1012,24 @@ typedef struct { | |||
1029 | } nx_hostrq_rx_ctx_t; | 1012 | } nx_hostrq_rx_ctx_t; |
1030 | 1013 | ||
1031 | typedef struct { | 1014 | typedef struct { |
1032 | u32 host_producer_crb; /* Crb to use */ | 1015 | __le32 host_producer_crb; /* Crb to use */ |
1033 | u32 rsvd1; /* Padding */ | 1016 | __le32 rsvd1; /* Padding */ |
1034 | } nx_cardrsp_rds_ring_t; | 1017 | } nx_cardrsp_rds_ring_t; |
1035 | 1018 | ||
1036 | typedef struct { | 1019 | typedef struct { |
1037 | u32 host_consumer_crb; /* Crb to use */ | 1020 | __le32 host_consumer_crb; /* Crb to use */ |
1038 | u32 interrupt_crb; /* Crb to use */ | 1021 | __le32 interrupt_crb; /* Crb to use */ |
1039 | } nx_cardrsp_sds_ring_t; | 1022 | } nx_cardrsp_sds_ring_t; |
1040 | 1023 | ||
1041 | typedef struct { | 1024 | typedef struct { |
1042 | /* These ring offsets are relative to data[0] below */ | 1025 | /* These ring offsets are relative to data[0] below */ |
1043 | u32 rds_ring_offset; /* Offset to RDS config */ | 1026 | __le32 rds_ring_offset; /* Offset to RDS config */ |
1044 | u32 sds_ring_offset; /* Offset to SDS config */ | 1027 | __le32 sds_ring_offset; /* Offset to SDS config */ |
1045 | u32 host_ctx_state; /* Starting State */ | 1028 | __le32 host_ctx_state; /* Starting State */ |
1046 | u32 num_fn_per_port; /* How many PCI fn share the port */ | 1029 | __le32 num_fn_per_port; /* How many PCI fn share the port */ |
1047 | u16 num_rds_rings; /* Count of RDS rings */ | 1030 | __le16 num_rds_rings; /* Count of RDS rings */ |
1048 | u16 num_sds_rings; /* Count of SDS rings */ | 1031 | __le16 num_sds_rings; /* Count of SDS rings */ |
1049 | u16 context_id; /* Handle for context */ | 1032 | __le16 context_id; /* Handle for context */ |
1050 | u8 phys_port; /* Physical id of port */ | 1033 | u8 phys_port; /* Physical id of port */ |
1051 | u8 virt_port; /* Virtual/Logical id of port */ | 1034 | u8 virt_port; /* Virtual/Logical id of port */ |
1052 | u8 reserved[128]; /* save space for future expansion */ | 1035 | u8 reserved[128]; /* save space for future expansion */ |
@@ -1072,34 +1055,34 @@ typedef struct { | |||
1072 | */ | 1055 | */ |
1073 | 1056 | ||
1074 | typedef struct { | 1057 | typedef struct { |
1075 | u64 host_phys_addr; /* Ring base addr */ | 1058 | __le64 host_phys_addr; /* Ring base addr */ |
1076 | u32 ring_size; /* Ring entries */ | 1059 | __le32 ring_size; /* Ring entries */ |
1077 | u32 rsvd; /* Padding */ | 1060 | __le32 rsvd; /* Padding */ |
1078 | } nx_hostrq_cds_ring_t; | 1061 | } nx_hostrq_cds_ring_t; |
1079 | 1062 | ||
1080 | typedef struct { | 1063 | typedef struct { |
1081 | u64 host_rsp_dma_addr; /* Response dma'd here */ | 1064 | __le64 host_rsp_dma_addr; /* Response dma'd here */ |
1082 | u64 cmd_cons_dma_addr; /* */ | 1065 | __le64 cmd_cons_dma_addr; /* */ |
1083 | u64 dummy_dma_addr; /* */ | 1066 | __le64 dummy_dma_addr; /* */ |
1084 | u32 capabilities[4]; /* Flag bit vector */ | 1067 | __le32 capabilities[4]; /* Flag bit vector */ |
1085 | u32 host_int_crb_mode; /* Interrupt crb usage */ | 1068 | __le32 host_int_crb_mode; /* Interrupt crb usage */ |
1086 | u32 rsvd1; /* Padding */ | 1069 | __le32 rsvd1; /* Padding */ |
1087 | u16 rsvd2; /* Padding */ | 1070 | __le16 rsvd2; /* Padding */ |
1088 | u16 interrupt_ctl; | 1071 | __le16 interrupt_ctl; |
1089 | u16 msi_index; | 1072 | __le16 msi_index; |
1090 | u16 rsvd3; /* Padding */ | 1073 | __le16 rsvd3; /* Padding */ |
1091 | nx_hostrq_cds_ring_t cds_ring; /* Desc of cds ring */ | 1074 | nx_hostrq_cds_ring_t cds_ring; /* Desc of cds ring */ |
1092 | u8 reserved[128]; /* future expansion */ | 1075 | u8 reserved[128]; /* future expansion */ |
1093 | } nx_hostrq_tx_ctx_t; | 1076 | } nx_hostrq_tx_ctx_t; |
1094 | 1077 | ||
1095 | typedef struct { | 1078 | typedef struct { |
1096 | u32 host_producer_crb; /* Crb to use */ | 1079 | __le32 host_producer_crb; /* Crb to use */ |
1097 | u32 interrupt_crb; /* Crb to use */ | 1080 | __le32 interrupt_crb; /* Crb to use */ |
1098 | } nx_cardrsp_cds_ring_t; | 1081 | } nx_cardrsp_cds_ring_t; |
1099 | 1082 | ||
1100 | typedef struct { | 1083 | typedef struct { |
1101 | u32 host_ctx_state; /* Starting state */ | 1084 | __le32 host_ctx_state; /* Starting state */ |
1102 | u16 context_id; /* Handle for context */ | 1085 | __le16 context_id; /* Handle for context */ |
1103 | u8 phys_port; /* Physical id of port */ | 1086 | u8 phys_port; /* Physical id of port */ |
1104 | u8 virt_port; /* Virtual/Logical id of port */ | 1087 | u8 virt_port; /* Virtual/Logical id of port */ |
1105 | nx_cardrsp_cds_ring_t cds_ring; /* Card cds settings */ | 1088 | nx_cardrsp_cds_ring_t cds_ring; /* Card cds settings */ |
@@ -1202,9 +1185,9 @@ enum { | |||
1202 | #define VPORT_MISS_MODE_ACCEPT_MULTI 2 /* accept unmatched multicast */ | 1185 | #define VPORT_MISS_MODE_ACCEPT_MULTI 2 /* accept unmatched multicast */ |
1203 | 1186 | ||
1204 | typedef struct { | 1187 | typedef struct { |
1205 | u64 qhdr; | 1188 | __le64 qhdr; |
1206 | u64 req_hdr; | 1189 | __le64 req_hdr; |
1207 | u64 words[6]; | 1190 | __le64 words[6]; |
1208 | } nx_nic_req_t; | 1191 | } nx_nic_req_t; |
1209 | 1192 | ||
1210 | typedef struct { | 1193 | typedef struct { |
@@ -1486,8 +1469,6 @@ void netxen_release_tx_buffers(struct netxen_adapter *adapter); | |||
1486 | 1469 | ||
1487 | void netxen_initialize_adapter_ops(struct netxen_adapter *adapter); | 1470 | void netxen_initialize_adapter_ops(struct netxen_adapter *adapter); |
1488 | int netxen_init_firmware(struct netxen_adapter *adapter); | 1471 | int netxen_init_firmware(struct netxen_adapter *adapter); |
1489 | void netxen_tso_check(struct netxen_adapter *adapter, | ||
1490 | struct cmd_desc_type0 *desc, struct sk_buff *skb); | ||
1491 | void netxen_nic_clear_stats(struct netxen_adapter *adapter); | 1472 | void netxen_nic_clear_stats(struct netxen_adapter *adapter); |
1492 | void netxen_watchdog_task(struct work_struct *work); | 1473 | void netxen_watchdog_task(struct work_struct *work); |
1493 | void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, | 1474 | void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, |
@@ -1496,6 +1477,7 @@ int netxen_process_cmd_ring(struct netxen_adapter *adapter); | |||
1496 | u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max); | 1477 | u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max); |
1497 | void netxen_p2_nic_set_multi(struct net_device *netdev); | 1478 | void netxen_p2_nic_set_multi(struct net_device *netdev); |
1498 | void netxen_p3_nic_set_multi(struct net_device *netdev); | 1479 | void netxen_p3_nic_set_multi(struct net_device *netdev); |
1480 | void netxen_p3_free_mac_list(struct netxen_adapter *adapter); | ||
1499 | int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32); | 1481 | int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32); |
1500 | int netxen_config_intr_coalesce(struct netxen_adapter *adapter); | 1482 | int netxen_config_intr_coalesce(struct netxen_adapter *adapter); |
1501 | 1483 | ||
diff --git a/drivers/net/netxen/netxen_nic_ctx.c b/drivers/net/netxen/netxen_nic_ctx.c index 64b51643c626..746bdb470418 100644 --- a/drivers/net/netxen/netxen_nic_ctx.c +++ b/drivers/net/netxen/netxen_nic_ctx.c | |||
@@ -76,7 +76,7 @@ netxen_api_unlock(struct netxen_adapter *adapter) | |||
76 | static u32 | 76 | static u32 |
77 | netxen_poll_rsp(struct netxen_adapter *adapter) | 77 | netxen_poll_rsp(struct netxen_adapter *adapter) |
78 | { | 78 | { |
79 | u32 raw_rsp, rsp = NX_CDRP_RSP_OK; | 79 | u32 rsp = NX_CDRP_RSP_OK; |
80 | int timeout = 0; | 80 | int timeout = 0; |
81 | 81 | ||
82 | do { | 82 | do { |
@@ -86,10 +86,7 @@ netxen_poll_rsp(struct netxen_adapter *adapter) | |||
86 | if (++timeout > NX_OS_CRB_RETRY_COUNT) | 86 | if (++timeout > NX_OS_CRB_RETRY_COUNT) |
87 | return NX_CDRP_RSP_TIMEOUT; | 87 | return NX_CDRP_RSP_TIMEOUT; |
88 | 88 | ||
89 | netxen_nic_read_w1(adapter, NX_CDRP_CRB_OFFSET, | 89 | netxen_nic_read_w1(adapter, NX_CDRP_CRB_OFFSET, &rsp); |
90 | &raw_rsp); | ||
91 | |||
92 | rsp = le32_to_cpu(raw_rsp); | ||
93 | } while (!NX_CDRP_IS_RSP(rsp)); | 90 | } while (!NX_CDRP_IS_RSP(rsp)); |
94 | 91 | ||
95 | return rsp; | 92 | return rsp; |
@@ -109,20 +106,16 @@ netxen_issue_cmd(struct netxen_adapter *adapter, | |||
109 | if (netxen_api_lock(adapter)) | 106 | if (netxen_api_lock(adapter)) |
110 | return NX_RCODE_TIMEOUT; | 107 | return NX_RCODE_TIMEOUT; |
111 | 108 | ||
112 | netxen_nic_write_w1(adapter, NX_SIGN_CRB_OFFSET, | 109 | netxen_nic_write_w1(adapter, NX_SIGN_CRB_OFFSET, signature); |
113 | cpu_to_le32(signature)); | ||
114 | 110 | ||
115 | netxen_nic_write_w1(adapter, NX_ARG1_CRB_OFFSET, | 111 | netxen_nic_write_w1(adapter, NX_ARG1_CRB_OFFSET, arg1); |
116 | cpu_to_le32(arg1)); | ||
117 | 112 | ||
118 | netxen_nic_write_w1(adapter, NX_ARG2_CRB_OFFSET, | 113 | netxen_nic_write_w1(adapter, NX_ARG2_CRB_OFFSET, arg2); |
119 | cpu_to_le32(arg2)); | ||
120 | 114 | ||
121 | netxen_nic_write_w1(adapter, NX_ARG3_CRB_OFFSET, | 115 | netxen_nic_write_w1(adapter, NX_ARG3_CRB_OFFSET, arg3); |
122 | cpu_to_le32(arg3)); | ||
123 | 116 | ||
124 | netxen_nic_write_w1(adapter, NX_CDRP_CRB_OFFSET, | 117 | netxen_nic_write_w1(adapter, NX_CDRP_CRB_OFFSET, |
125 | cpu_to_le32(NX_CDRP_FORM_CMD(cmd))); | 118 | NX_CDRP_FORM_CMD(cmd)); |
126 | 119 | ||
127 | rsp = netxen_poll_rsp(adapter); | 120 | rsp = netxen_poll_rsp(adapter); |
128 | 121 | ||
@@ -133,7 +126,6 @@ netxen_issue_cmd(struct netxen_adapter *adapter, | |||
133 | rcode = NX_RCODE_TIMEOUT; | 126 | rcode = NX_RCODE_TIMEOUT; |
134 | } else if (rsp == NX_CDRP_RSP_FAIL) { | 127 | } else if (rsp == NX_CDRP_RSP_FAIL) { |
135 | netxen_nic_read_w1(adapter, NX_ARG1_CRB_OFFSET, &rcode); | 128 | netxen_nic_read_w1(adapter, NX_ARG1_CRB_OFFSET, &rcode); |
136 | rcode = le32_to_cpu(rcode); | ||
137 | 129 | ||
138 | printk(KERN_ERR "%s: failed card response code:0x%x\n", | 130 | printk(KERN_ERR "%s: failed card response code:0x%x\n", |
139 | netxen_nic_driver_name, rcode); | 131 | netxen_nic_driver_name, rcode); |
@@ -183,7 +175,7 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter) | |||
183 | 175 | ||
184 | int i, nrds_rings, nsds_rings; | 176 | int i, nrds_rings, nsds_rings; |
185 | size_t rq_size, rsp_size; | 177 | size_t rq_size, rsp_size; |
186 | u32 cap, reg; | 178 | u32 cap, reg, val; |
187 | 179 | ||
188 | int err; | 180 | int err; |
189 | 181 | ||
@@ -225,11 +217,14 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter) | |||
225 | 217 | ||
226 | prq->num_rds_rings = cpu_to_le16(nrds_rings); | 218 | prq->num_rds_rings = cpu_to_le16(nrds_rings); |
227 | prq->num_sds_rings = cpu_to_le16(nsds_rings); | 219 | prq->num_sds_rings = cpu_to_le16(nsds_rings); |
228 | prq->rds_ring_offset = 0; | 220 | prq->rds_ring_offset = cpu_to_le32(0); |
229 | prq->sds_ring_offset = prq->rds_ring_offset + | 221 | |
222 | val = le32_to_cpu(prq->rds_ring_offset) + | ||
230 | (sizeof(nx_hostrq_rds_ring_t) * nrds_rings); | 223 | (sizeof(nx_hostrq_rds_ring_t) * nrds_rings); |
224 | prq->sds_ring_offset = cpu_to_le32(val); | ||
231 | 225 | ||
232 | prq_rds = (nx_hostrq_rds_ring_t *)(prq->data + prq->rds_ring_offset); | 226 | prq_rds = (nx_hostrq_rds_ring_t *)(prq->data + |
227 | le32_to_cpu(prq->rds_ring_offset)); | ||
233 | 228 | ||
234 | for (i = 0; i < nrds_rings; i++) { | 229 | for (i = 0; i < nrds_rings; i++) { |
235 | 230 | ||
@@ -241,17 +236,14 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter) | |||
241 | prq_rds[i].buff_size = cpu_to_le64(rds_ring->dma_size); | 236 | prq_rds[i].buff_size = cpu_to_le64(rds_ring->dma_size); |
242 | } | 237 | } |
243 | 238 | ||
244 | prq_sds = (nx_hostrq_sds_ring_t *)(prq->data + prq->sds_ring_offset); | 239 | prq_sds = (nx_hostrq_sds_ring_t *)(prq->data + |
240 | le32_to_cpu(prq->sds_ring_offset)); | ||
245 | 241 | ||
246 | prq_sds[0].host_phys_addr = | 242 | prq_sds[0].host_phys_addr = |
247 | cpu_to_le64(recv_ctx->rcv_status_desc_phys_addr); | 243 | cpu_to_le64(recv_ctx->rcv_status_desc_phys_addr); |
248 | prq_sds[0].ring_size = cpu_to_le32(adapter->max_rx_desc_count); | 244 | prq_sds[0].ring_size = cpu_to_le32(adapter->max_rx_desc_count); |
249 | /* only one msix vector for now */ | 245 | /* only one msix vector for now */ |
250 | prq_sds[0].msi_index = cpu_to_le32(0); | 246 | prq_sds[0].msi_index = cpu_to_le16(0); |
251 | |||
252 | /* now byteswap offsets */ | ||
253 | prq->rds_ring_offset = cpu_to_le32(prq->rds_ring_offset); | ||
254 | prq->sds_ring_offset = cpu_to_le32(prq->sds_ring_offset); | ||
255 | 247 | ||
256 | phys_addr = hostrq_phys_addr; | 248 | phys_addr = hostrq_phys_addr; |
257 | err = netxen_issue_cmd(adapter, | 249 | err = netxen_issue_cmd(adapter, |
@@ -269,9 +261,9 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter) | |||
269 | 261 | ||
270 | 262 | ||
271 | prsp_rds = ((nx_cardrsp_rds_ring_t *) | 263 | prsp_rds = ((nx_cardrsp_rds_ring_t *) |
272 | &prsp->data[prsp->rds_ring_offset]); | 264 | &prsp->data[le32_to_cpu(prsp->rds_ring_offset)]); |
273 | 265 | ||
274 | for (i = 0; i < le32_to_cpu(prsp->num_rds_rings); i++) { | 266 | for (i = 0; i < le16_to_cpu(prsp->num_rds_rings); i++) { |
275 | rds_ring = &recv_ctx->rds_rings[i]; | 267 | rds_ring = &recv_ctx->rds_rings[i]; |
276 | 268 | ||
277 | reg = le32_to_cpu(prsp_rds[i].host_producer_crb); | 269 | reg = le32_to_cpu(prsp_rds[i].host_producer_crb); |
@@ -279,7 +271,7 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter) | |||
279 | } | 271 | } |
280 | 272 | ||
281 | prsp_sds = ((nx_cardrsp_sds_ring_t *) | 273 | prsp_sds = ((nx_cardrsp_sds_ring_t *) |
282 | &prsp->data[prsp->sds_ring_offset]); | 274 | &prsp->data[le32_to_cpu(prsp->sds_ring_offset)]); |
283 | reg = le32_to_cpu(prsp_sds[0].host_consumer_crb); | 275 | reg = le32_to_cpu(prsp_sds[0].host_consumer_crb); |
284 | recv_ctx->crb_sts_consumer = NETXEN_NIC_REG(reg - 0x200); | 276 | recv_ctx->crb_sts_consumer = NETXEN_NIC_REG(reg - 0x200); |
285 | 277 | ||
@@ -288,7 +280,7 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter) | |||
288 | 280 | ||
289 | recv_ctx->state = le32_to_cpu(prsp->host_ctx_state); | 281 | recv_ctx->state = le32_to_cpu(prsp->host_ctx_state); |
290 | recv_ctx->context_id = le16_to_cpu(prsp->context_id); | 282 | recv_ctx->context_id = le16_to_cpu(prsp->context_id); |
291 | recv_ctx->virt_port = le16_to_cpu(prsp->virt_port); | 283 | recv_ctx->virt_port = prsp->virt_port; |
292 | 284 | ||
293 | out_free_rsp: | 285 | out_free_rsp: |
294 | pci_free_consistent(adapter->pdev, rsp_size, prsp, cardrsp_phys_addr); | 286 | pci_free_consistent(adapter->pdev, rsp_size, prsp, cardrsp_phys_addr); |
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c index e45ce2951729..0894a7be0225 100644 --- a/drivers/net/netxen/netxen_nic_ethtool.c +++ b/drivers/net/netxen/netxen_nic_ethtool.c | |||
@@ -136,11 +136,9 @@ netxen_nic_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd) | |||
136 | 136 | ||
137 | ecmd->port = PORT_TP; | 137 | ecmd->port = PORT_TP; |
138 | 138 | ||
139 | if (netif_running(dev)) { | 139 | ecmd->speed = adapter->link_speed; |
140 | ecmd->speed = adapter->link_speed; | 140 | ecmd->duplex = adapter->link_duplex; |
141 | ecmd->duplex = adapter->link_duplex; | 141 | ecmd->autoneg = adapter->link_autoneg; |
142 | ecmd->autoneg = adapter->link_autoneg; | ||
143 | } | ||
144 | 142 | ||
145 | } else if (adapter->ahw.board_type == NETXEN_NIC_XGBE) { | 143 | } else if (adapter->ahw.board_type == NETXEN_NIC_XGBE) { |
146 | u32 val; | 144 | u32 val; |
@@ -171,7 +169,7 @@ netxen_nic_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd) | |||
171 | } else | 169 | } else |
172 | return -EIO; | 170 | return -EIO; |
173 | 171 | ||
174 | ecmd->phy_address = adapter->portnum; | 172 | ecmd->phy_address = adapter->physical_port; |
175 | ecmd->transceiver = XCVR_EXTERNAL; | 173 | ecmd->transceiver = XCVR_EXTERNAL; |
176 | 174 | ||
177 | switch ((netxen_brdtype_t) boardinfo->board_type) { | 175 | switch ((netxen_brdtype_t) boardinfo->board_type) { |
@@ -180,13 +178,13 @@ netxen_nic_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd) | |||
180 | case NETXEN_BRDTYPE_P3_REF_QG: | 178 | case NETXEN_BRDTYPE_P3_REF_QG: |
181 | case NETXEN_BRDTYPE_P3_4_GB: | 179 | case NETXEN_BRDTYPE_P3_4_GB: |
182 | case NETXEN_BRDTYPE_P3_4_GB_MM: | 180 | case NETXEN_BRDTYPE_P3_4_GB_MM: |
183 | case NETXEN_BRDTYPE_P3_10000_BASE_T: | ||
184 | 181 | ||
185 | ecmd->supported |= SUPPORTED_Autoneg; | 182 | ecmd->supported |= SUPPORTED_Autoneg; |
186 | ecmd->advertising |= ADVERTISED_Autoneg; | 183 | ecmd->advertising |= ADVERTISED_Autoneg; |
187 | case NETXEN_BRDTYPE_P2_SB31_10G_CX4: | 184 | case NETXEN_BRDTYPE_P2_SB31_10G_CX4: |
188 | case NETXEN_BRDTYPE_P3_10G_CX4: | 185 | case NETXEN_BRDTYPE_P3_10G_CX4: |
189 | case NETXEN_BRDTYPE_P3_10G_CX4_LP: | 186 | case NETXEN_BRDTYPE_P3_10G_CX4_LP: |
187 | case NETXEN_BRDTYPE_P3_10000_BASE_T: | ||
190 | ecmd->supported |= SUPPORTED_TP; | 188 | ecmd->supported |= SUPPORTED_TP; |
191 | ecmd->advertising |= ADVERTISED_TP; | 189 | ecmd->advertising |= ADVERTISED_TP; |
192 | ecmd->port = PORT_TP; | 190 | ecmd->port = PORT_TP; |
@@ -204,16 +202,33 @@ netxen_nic_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd) | |||
204 | ecmd->port = PORT_FIBRE; | 202 | ecmd->port = PORT_FIBRE; |
205 | ecmd->autoneg = AUTONEG_DISABLE; | 203 | ecmd->autoneg = AUTONEG_DISABLE; |
206 | break; | 204 | break; |
207 | case NETXEN_BRDTYPE_P2_SB31_10G: | ||
208 | case NETXEN_BRDTYPE_P3_10G_SFP_PLUS: | 205 | case NETXEN_BRDTYPE_P3_10G_SFP_PLUS: |
209 | case NETXEN_BRDTYPE_P3_10G_SFP_CT: | 206 | case NETXEN_BRDTYPE_P3_10G_SFP_CT: |
210 | case NETXEN_BRDTYPE_P3_10G_SFP_QT: | 207 | case NETXEN_BRDTYPE_P3_10G_SFP_QT: |
208 | ecmd->advertising |= ADVERTISED_TP; | ||
209 | ecmd->supported |= SUPPORTED_TP; | ||
210 | case NETXEN_BRDTYPE_P2_SB31_10G: | ||
211 | case NETXEN_BRDTYPE_P3_10G_XFP: | 211 | case NETXEN_BRDTYPE_P3_10G_XFP: |
212 | ecmd->supported |= SUPPORTED_FIBRE; | 212 | ecmd->supported |= SUPPORTED_FIBRE; |
213 | ecmd->advertising |= ADVERTISED_FIBRE; | 213 | ecmd->advertising |= ADVERTISED_FIBRE; |
214 | ecmd->port = PORT_FIBRE; | 214 | ecmd->port = PORT_FIBRE; |
215 | ecmd->autoneg = AUTONEG_DISABLE; | 215 | ecmd->autoneg = AUTONEG_DISABLE; |
216 | break; | 216 | break; |
217 | case NETXEN_BRDTYPE_P3_10G_TP: | ||
218 | if (adapter->ahw.board_type == NETXEN_NIC_XGBE) { | ||
219 | ecmd->autoneg = AUTONEG_DISABLE; | ||
220 | ecmd->supported |= (SUPPORTED_FIBRE | SUPPORTED_TP); | ||
221 | ecmd->advertising |= | ||
222 | (ADVERTISED_FIBRE | ADVERTISED_TP); | ||
223 | ecmd->port = PORT_FIBRE; | ||
224 | } else { | ||
225 | ecmd->autoneg = AUTONEG_ENABLE; | ||
226 | ecmd->supported |= (SUPPORTED_TP |SUPPORTED_Autoneg); | ||
227 | ecmd->advertising |= | ||
228 | (ADVERTISED_TP | ADVERTISED_Autoneg); | ||
229 | ecmd->port = PORT_TP; | ||
230 | } | ||
231 | break; | ||
217 | default: | 232 | default: |
218 | printk(KERN_ERR "netxen-nic: Unsupported board model %d\n", | 233 | printk(KERN_ERR "netxen-nic: Unsupported board model %d\n", |
219 | (netxen_brdtype_t) boardinfo->board_type); | 234 | (netxen_brdtype_t) boardinfo->board_type); |
@@ -546,7 +561,10 @@ netxen_nic_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring) | |||
546 | } | 561 | } |
547 | ring->tx_pending = adapter->max_tx_desc_count; | 562 | ring->tx_pending = adapter->max_tx_desc_count; |
548 | 563 | ||
549 | ring->rx_max_pending = MAX_RCV_DESCRIPTORS; | 564 | if (adapter->ahw.board_type == NETXEN_NIC_GBE) |
565 | ring->rx_max_pending = MAX_RCV_DESCRIPTORS_1G; | ||
566 | else | ||
567 | ring->rx_max_pending = MAX_RCV_DESCRIPTORS_10G; | ||
550 | ring->tx_max_pending = MAX_CMD_DESCRIPTORS_HOST; | 568 | ring->tx_max_pending = MAX_CMD_DESCRIPTORS_HOST; |
551 | ring->rx_jumbo_max_pending = MAX_JUMBO_RCV_DESCRIPTORS; | 569 | ring->rx_jumbo_max_pending = MAX_JUMBO_RCV_DESCRIPTORS; |
552 | ring->rx_mini_max_pending = 0; | 570 | ring->rx_mini_max_pending = 0; |
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c index aa6e603bfcbf..821cff68b3f3 100644 --- a/drivers/net/netxen/netxen_nic_hw.c +++ b/drivers/net/netxen/netxen_nic_hw.c | |||
@@ -503,17 +503,15 @@ netxen_send_cmd_descs(struct netxen_adapter *adapter, | |||
503 | 503 | ||
504 | i = 0; | 504 | i = 0; |
505 | 505 | ||
506 | netif_tx_lock_bh(adapter->netdev); | ||
507 | |||
506 | producer = adapter->cmd_producer; | 508 | producer = adapter->cmd_producer; |
507 | do { | 509 | do { |
508 | cmd_desc = &cmd_desc_arr[i]; | 510 | cmd_desc = &cmd_desc_arr[i]; |
509 | 511 | ||
510 | pbuf = &adapter->cmd_buf_arr[producer]; | 512 | pbuf = &adapter->cmd_buf_arr[producer]; |
511 | pbuf->mss = 0; | ||
512 | pbuf->total_length = 0; | ||
513 | pbuf->skb = NULL; | 513 | pbuf->skb = NULL; |
514 | pbuf->cmd = 0; | ||
515 | pbuf->frag_count = 0; | 514 | pbuf->frag_count = 0; |
516 | pbuf->port = 0; | ||
517 | 515 | ||
518 | /* adapter->ahw.cmd_desc_head[producer] = *cmd_desc; */ | 516 | /* adapter->ahw.cmd_desc_head[producer] = *cmd_desc; */ |
519 | memcpy(&adapter->ahw.cmd_desc_head[producer], | 517 | memcpy(&adapter->ahw.cmd_desc_head[producer], |
@@ -531,6 +529,8 @@ netxen_send_cmd_descs(struct netxen_adapter *adapter, | |||
531 | 529 | ||
532 | netxen_nic_update_cmd_producer(adapter, adapter->cmd_producer); | 530 | netxen_nic_update_cmd_producer(adapter, adapter->cmd_producer); |
533 | 531 | ||
532 | netif_tx_unlock_bh(adapter->netdev); | ||
533 | |||
534 | return 0; | 534 | return 0; |
535 | } | 535 | } |
536 | 536 | ||
@@ -539,16 +539,19 @@ static int nx_p3_sre_macaddr_change(struct net_device *dev, | |||
539 | { | 539 | { |
540 | struct netxen_adapter *adapter = netdev_priv(dev); | 540 | struct netxen_adapter *adapter = netdev_priv(dev); |
541 | nx_nic_req_t req; | 541 | nx_nic_req_t req; |
542 | nx_mac_req_t mac_req; | 542 | nx_mac_req_t *mac_req; |
543 | u64 word; | ||
543 | int rv; | 544 | int rv; |
544 | 545 | ||
545 | memset(&req, 0, sizeof(nx_nic_req_t)); | 546 | memset(&req, 0, sizeof(nx_nic_req_t)); |
546 | req.qhdr |= (NX_NIC_REQUEST << 23); | 547 | req.qhdr = cpu_to_le64(NX_NIC_REQUEST << 23); |
547 | req.req_hdr |= NX_MAC_EVENT; | 548 | |
548 | req.req_hdr |= ((u64)adapter->portnum << 16); | 549 | word = NX_MAC_EVENT | ((u64)adapter->portnum << 16); |
549 | mac_req.op = op; | 550 | req.req_hdr = cpu_to_le64(word); |
550 | memcpy(&mac_req.mac_addr, addr, 6); | 551 | |
551 | req.words[0] = cpu_to_le64(*(u64 *)&mac_req); | 552 | mac_req = (nx_mac_req_t *)&req.words[0]; |
553 | mac_req->op = op; | ||
554 | memcpy(mac_req->mac_addr, addr, 6); | ||
552 | 555 | ||
553 | rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); | 556 | rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); |
554 | if (rv != 0) { | 557 | if (rv != 0) { |
@@ -612,18 +615,35 @@ send_fw_cmd: | |||
612 | int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) | 615 | int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) |
613 | { | 616 | { |
614 | nx_nic_req_t req; | 617 | nx_nic_req_t req; |
618 | u64 word; | ||
615 | 619 | ||
616 | memset(&req, 0, sizeof(nx_nic_req_t)); | 620 | memset(&req, 0, sizeof(nx_nic_req_t)); |
617 | 621 | ||
618 | req.qhdr |= (NX_HOST_REQUEST << 23); | 622 | req.qhdr = cpu_to_le64(NX_HOST_REQUEST << 23); |
619 | req.req_hdr |= NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE; | 623 | |
620 | req.req_hdr |= ((u64)adapter->portnum << 16); | 624 | word = NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE | |
625 | ((u64)adapter->portnum << 16); | ||
626 | req.req_hdr = cpu_to_le64(word); | ||
627 | |||
621 | req.words[0] = cpu_to_le64(mode); | 628 | req.words[0] = cpu_to_le64(mode); |
622 | 629 | ||
623 | return netxen_send_cmd_descs(adapter, | 630 | return netxen_send_cmd_descs(adapter, |
624 | (struct cmd_desc_type0 *)&req, 1); | 631 | (struct cmd_desc_type0 *)&req, 1); |
625 | } | 632 | } |
626 | 633 | ||
634 | void netxen_p3_free_mac_list(struct netxen_adapter *adapter) | ||
635 | { | ||
636 | nx_mac_list_t *cur, *next; | ||
637 | |||
638 | cur = adapter->mac_list; | ||
639 | |||
640 | while (cur) { | ||
641 | next = cur->next; | ||
642 | kfree(cur); | ||
643 | cur = next; | ||
644 | } | ||
645 | } | ||
646 | |||
627 | #define NETXEN_CONFIG_INTR_COALESCE 3 | 647 | #define NETXEN_CONFIG_INTR_COALESCE 3 |
628 | 648 | ||
629 | /* | 649 | /* |
@@ -632,13 +652,15 @@ int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) | |||
632 | int netxen_config_intr_coalesce(struct netxen_adapter *adapter) | 652 | int netxen_config_intr_coalesce(struct netxen_adapter *adapter) |
633 | { | 653 | { |
634 | nx_nic_req_t req; | 654 | nx_nic_req_t req; |
655 | u64 word; | ||
635 | int rv; | 656 | int rv; |
636 | 657 | ||
637 | memset(&req, 0, sizeof(nx_nic_req_t)); | 658 | memset(&req, 0, sizeof(nx_nic_req_t)); |
638 | 659 | ||
639 | req.qhdr |= (NX_NIC_REQUEST << 23); | 660 | req.qhdr = cpu_to_le64(NX_NIC_REQUEST << 23); |
640 | req.req_hdr |= NETXEN_CONFIG_INTR_COALESCE; | 661 | |
641 | req.req_hdr |= ((u64)adapter->portnum << 16); | 662 | word = NETXEN_CONFIG_INTR_COALESCE | ((u64)adapter->portnum << 16); |
663 | req.req_hdr = cpu_to_le64(word); | ||
642 | 664 | ||
643 | memcpy(&req.words[0], &adapter->coal, sizeof(adapter->coal)); | 665 | memcpy(&req.words[0], &adapter->coal, sizeof(adapter->coal)); |
644 | 666 | ||
@@ -772,13 +794,10 @@ int netxen_p3_get_mac_addr(struct netxen_adapter *adapter, __le64 *mac) | |||
772 | adapter->hw_read_wx(adapter, crbaddr, &mac_lo, 4); | 794 | adapter->hw_read_wx(adapter, crbaddr, &mac_lo, 4); |
773 | adapter->hw_read_wx(adapter, crbaddr+4, &mac_hi, 4); | 795 | adapter->hw_read_wx(adapter, crbaddr+4, &mac_hi, 4); |
774 | 796 | ||
775 | mac_hi = cpu_to_le32(mac_hi); | ||
776 | mac_lo = cpu_to_le32(mac_lo); | ||
777 | |||
778 | if (pci_func & 1) | 797 | if (pci_func & 1) |
779 | *mac = ((mac_lo >> 16) | ((u64)mac_hi << 16)); | 798 | *mac = le64_to_cpu((mac_lo >> 16) | ((u64)mac_hi << 16)); |
780 | else | 799 | else |
781 | *mac = ((mac_lo) | ((u64)mac_hi << 32)); | 800 | *mac = le64_to_cpu((u64)mac_lo | ((u64)mac_hi << 32)); |
782 | 801 | ||
783 | return 0; | 802 | return 0; |
784 | } | 803 | } |
@@ -937,7 +956,7 @@ int netxen_load_firmware(struct netxen_adapter *adapter) | |||
937 | { | 956 | { |
938 | int i; | 957 | int i; |
939 | u32 data, size = 0; | 958 | u32 data, size = 0; |
940 | u32 flashaddr = NETXEN_BOOTLD_START, memaddr = NETXEN_BOOTLD_START; | 959 | u32 flashaddr = NETXEN_BOOTLD_START; |
941 | 960 | ||
942 | size = (NETXEN_IMAGE_START - NETXEN_BOOTLD_START)/4; | 961 | size = (NETXEN_IMAGE_START - NETXEN_BOOTLD_START)/4; |
943 | 962 | ||
@@ -949,10 +968,8 @@ int netxen_load_firmware(struct netxen_adapter *adapter) | |||
949 | if (netxen_rom_fast_read(adapter, flashaddr, (int *)&data) != 0) | 968 | if (netxen_rom_fast_read(adapter, flashaddr, (int *)&data) != 0) |
950 | return -EIO; | 969 | return -EIO; |
951 | 970 | ||
952 | adapter->pci_mem_write(adapter, memaddr, &data, 4); | 971 | adapter->pci_mem_write(adapter, flashaddr, &data, 4); |
953 | flashaddr += 4; | 972 | flashaddr += 4; |
954 | memaddr += 4; | ||
955 | cond_resched(); | ||
956 | } | 973 | } |
957 | msleep(1); | 974 | msleep(1); |
958 | 975 | ||
@@ -2034,7 +2051,13 @@ int netxen_nic_get_board_info(struct netxen_adapter *adapter) | |||
2034 | rv = -1; | 2051 | rv = -1; |
2035 | } | 2052 | } |
2036 | 2053 | ||
2037 | DPRINTK(INFO, "Discovered board type:0x%x ", boardinfo->board_type); | 2054 | if (boardinfo->board_type == NETXEN_BRDTYPE_P3_4_GB_MM) { |
2055 | u32 gpio = netxen_nic_reg_read(adapter, | ||
2056 | NETXEN_ROMUSB_GLB_PAD_GPIO_I); | ||
2057 | if ((gpio & 0x8000) == 0) | ||
2058 | boardinfo->board_type = NETXEN_BRDTYPE_P3_10G_TP; | ||
2059 | } | ||
2060 | |||
2038 | switch ((netxen_brdtype_t) boardinfo->board_type) { | 2061 | switch ((netxen_brdtype_t) boardinfo->board_type) { |
2039 | case NETXEN_BRDTYPE_P2_SB35_4G: | 2062 | case NETXEN_BRDTYPE_P2_SB35_4G: |
2040 | adapter->ahw.board_type = NETXEN_NIC_GBE; | 2063 | adapter->ahw.board_type = NETXEN_NIC_GBE; |
@@ -2053,7 +2076,6 @@ int netxen_nic_get_board_info(struct netxen_adapter *adapter) | |||
2053 | case NETXEN_BRDTYPE_P3_10G_SFP_QT: | 2076 | case NETXEN_BRDTYPE_P3_10G_SFP_QT: |
2054 | case NETXEN_BRDTYPE_P3_10G_XFP: | 2077 | case NETXEN_BRDTYPE_P3_10G_XFP: |
2055 | case NETXEN_BRDTYPE_P3_10000_BASE_T: | 2078 | case NETXEN_BRDTYPE_P3_10000_BASE_T: |
2056 | |||
2057 | adapter->ahw.board_type = NETXEN_NIC_XGBE; | 2079 | adapter->ahw.board_type = NETXEN_NIC_XGBE; |
2058 | break; | 2080 | break; |
2059 | case NETXEN_BRDTYPE_P1_BD: | 2081 | case NETXEN_BRDTYPE_P1_BD: |
@@ -2063,9 +2085,12 @@ int netxen_nic_get_board_info(struct netxen_adapter *adapter) | |||
2063 | case NETXEN_BRDTYPE_P3_REF_QG: | 2085 | case NETXEN_BRDTYPE_P3_REF_QG: |
2064 | case NETXEN_BRDTYPE_P3_4_GB: | 2086 | case NETXEN_BRDTYPE_P3_4_GB: |
2065 | case NETXEN_BRDTYPE_P3_4_GB_MM: | 2087 | case NETXEN_BRDTYPE_P3_4_GB_MM: |
2066 | |||
2067 | adapter->ahw.board_type = NETXEN_NIC_GBE; | 2088 | adapter->ahw.board_type = NETXEN_NIC_GBE; |
2068 | break; | 2089 | break; |
2090 | case NETXEN_BRDTYPE_P3_10G_TP: | ||
2091 | adapter->ahw.board_type = (adapter->portnum < 2) ? | ||
2092 | NETXEN_NIC_XGBE : NETXEN_NIC_GBE; | ||
2093 | break; | ||
2069 | default: | 2094 | default: |
2070 | printk("%s: Unknown(%x)\n", netxen_nic_driver_name, | 2095 | printk("%s: Unknown(%x)\n", netxen_nic_driver_name, |
2071 | boardinfo->board_type); | 2096 | boardinfo->board_type); |
@@ -2110,12 +2135,16 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter) | |||
2110 | { | 2135 | { |
2111 | __u32 status; | 2136 | __u32 status; |
2112 | __u32 autoneg; | 2137 | __u32 autoneg; |
2113 | __u32 mode; | ||
2114 | __u32 port_mode; | 2138 | __u32 port_mode; |
2115 | 2139 | ||
2116 | netxen_nic_read_w0(adapter, NETXEN_NIU_MODE, &mode); | 2140 | if (!netif_carrier_ok(adapter->netdev)) { |
2117 | if (netxen_get_niu_enable_ge(mode)) { /* Gb 10/100/1000 Mbps mode */ | 2141 | adapter->link_speed = 0; |
2142 | adapter->link_duplex = -1; | ||
2143 | adapter->link_autoneg = AUTONEG_ENABLE; | ||
2144 | return; | ||
2145 | } | ||
2118 | 2146 | ||
2147 | if (adapter->ahw.board_type == NETXEN_NIC_GBE) { | ||
2119 | adapter->hw_read_wx(adapter, | 2148 | adapter->hw_read_wx(adapter, |
2120 | NETXEN_PORT_MODE_ADDR, &port_mode, 4); | 2149 | NETXEN_PORT_MODE_ADDR, &port_mode, 4); |
2121 | if (port_mode == NETXEN_PORT_MODE_802_3_AP) { | 2150 | if (port_mode == NETXEN_PORT_MODE_802_3_AP) { |
@@ -2141,7 +2170,7 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter) | |||
2141 | adapter->link_speed = SPEED_1000; | 2170 | adapter->link_speed = SPEED_1000; |
2142 | break; | 2171 | break; |
2143 | default: | 2172 | default: |
2144 | adapter->link_speed = -1; | 2173 | adapter->link_speed = 0; |
2145 | break; | 2174 | break; |
2146 | } | 2175 | } |
2147 | switch (netxen_get_phy_duplex(status)) { | 2176 | switch (netxen_get_phy_duplex(status)) { |
@@ -2164,7 +2193,7 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter) | |||
2164 | goto link_down; | 2193 | goto link_down; |
2165 | } else { | 2194 | } else { |
2166 | link_down: | 2195 | link_down: |
2167 | adapter->link_speed = -1; | 2196 | adapter->link_speed = 0; |
2168 | adapter->link_duplex = -1; | 2197 | adapter->link_duplex = -1; |
2169 | } | 2198 | } |
2170 | } | 2199 | } |
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index d924468e506e..ca7c8d8050c9 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
@@ -308,7 +308,6 @@ int netxen_alloc_sw_resources(struct netxen_adapter *adapter) | |||
308 | } | 308 | } |
309 | memset(rds_ring->rx_buf_arr, 0, RCV_BUFFSIZE); | 309 | memset(rds_ring->rx_buf_arr, 0, RCV_BUFFSIZE); |
310 | INIT_LIST_HEAD(&rds_ring->free_list); | 310 | INIT_LIST_HEAD(&rds_ring->free_list); |
311 | rds_ring->begin_alloc = 0; | ||
312 | /* | 311 | /* |
313 | * Now go through all of them, set reference handles | 312 | * Now go through all of them, set reference handles |
314 | * and put them in the queues. | 313 | * and put them in the queues. |
@@ -439,6 +438,8 @@ static int netxen_wait_rom_done(struct netxen_adapter *adapter) | |||
439 | long timeout = 0; | 438 | long timeout = 0; |
440 | long done = 0; | 439 | long done = 0; |
441 | 440 | ||
441 | cond_resched(); | ||
442 | |||
442 | while (done == 0) { | 443 | while (done == 0) { |
443 | done = netxen_nic_reg_read(adapter, NETXEN_ROMUSB_GLB_STATUS); | 444 | done = netxen_nic_reg_read(adapter, NETXEN_ROMUSB_GLB_STATUS); |
444 | done &= 2; | 445 | done &= 2; |
@@ -533,12 +534,9 @@ static int do_rom_fast_write(struct netxen_adapter *adapter, int addr, | |||
533 | static int do_rom_fast_read(struct netxen_adapter *adapter, | 534 | static int do_rom_fast_read(struct netxen_adapter *adapter, |
534 | int addr, int *valp) | 535 | int addr, int *valp) |
535 | { | 536 | { |
536 | cond_resched(); | ||
537 | |||
538 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ADDRESS, addr); | 537 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ADDRESS, addr); |
539 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ABYTE_CNT, 3); | ||
540 | udelay(100); /* prevent bursting on CRB */ | ||
541 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_DUMMY_BYTE_CNT, 0); | 538 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_DUMMY_BYTE_CNT, 0); |
539 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ABYTE_CNT, 3); | ||
542 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_INSTR_OPCODE, 0xb); | 540 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_INSTR_OPCODE, 0xb); |
543 | if (netxen_wait_rom_done(adapter)) { | 541 | if (netxen_wait_rom_done(adapter)) { |
544 | printk("Error waiting for rom done\n"); | 542 | printk("Error waiting for rom done\n"); |
@@ -546,7 +544,7 @@ static int do_rom_fast_read(struct netxen_adapter *adapter, | |||
546 | } | 544 | } |
547 | /* reset abyte_cnt and dummy_byte_cnt */ | 545 | /* reset abyte_cnt and dummy_byte_cnt */ |
548 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ABYTE_CNT, 0); | 546 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ABYTE_CNT, 0); |
549 | udelay(100); /* prevent bursting on CRB */ | 547 | udelay(10); |
550 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_DUMMY_BYTE_CNT, 0); | 548 | netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_DUMMY_BYTE_CNT, 0); |
551 | 549 | ||
552 | *valp = netxen_nic_reg_read(adapter, NETXEN_ROMUSB_ROM_RDATA); | 550 | *valp = netxen_nic_reg_read(adapter, NETXEN_ROMUSB_ROM_RDATA); |
@@ -884,14 +882,16 @@ int netxen_flash_unlock(struct netxen_adapter *adapter) | |||
884 | int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose) | 882 | int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose) |
885 | { | 883 | { |
886 | int addr, val; | 884 | int addr, val; |
887 | int i, init_delay = 0; | 885 | int i, n, init_delay = 0; |
888 | struct crb_addr_pair *buf; | 886 | struct crb_addr_pair *buf; |
889 | unsigned offset, n; | 887 | unsigned offset; |
890 | u32 off; | 888 | u32 off; |
891 | 889 | ||
892 | /* resetall */ | 890 | /* resetall */ |
891 | rom_lock(adapter); | ||
893 | netxen_crb_writelit_adapter(adapter, NETXEN_ROMUSB_GLB_SW_RESET, | 892 | netxen_crb_writelit_adapter(adapter, NETXEN_ROMUSB_GLB_SW_RESET, |
894 | 0xffffffff); | 893 | 0xffffffff); |
894 | netxen_rom_unlock(adapter); | ||
895 | 895 | ||
896 | if (verbose) { | 896 | if (verbose) { |
897 | if (netxen_rom_fast_read(adapter, NETXEN_BOARDTYPE, &val) == 0) | 897 | if (netxen_rom_fast_read(adapter, NETXEN_BOARDTYPE, &val) == 0) |
@@ -910,7 +910,7 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose) | |||
910 | 910 | ||
911 | if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { | 911 | if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { |
912 | if (netxen_rom_fast_read(adapter, 0, &n) != 0 || | 912 | if (netxen_rom_fast_read(adapter, 0, &n) != 0 || |
913 | (n != 0xcafecafeUL) || | 913 | (n != 0xcafecafe) || |
914 | netxen_rom_fast_read(adapter, 4, &n) != 0) { | 914 | netxen_rom_fast_read(adapter, 4, &n) != 0) { |
915 | printk(KERN_ERR "%s: ERROR Reading crb_init area: " | 915 | printk(KERN_ERR "%s: ERROR Reading crb_init area: " |
916 | "n: %08x\n", netxen_nic_driver_name, n); | 916 | "n: %08x\n", netxen_nic_driver_name, n); |
@@ -975,6 +975,14 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose) | |||
975 | /* do not reset PCI */ | 975 | /* do not reset PCI */ |
976 | if (off == (ROMUSB_GLB + 0xbc)) | 976 | if (off == (ROMUSB_GLB + 0xbc)) |
977 | continue; | 977 | continue; |
978 | if (off == (ROMUSB_GLB + 0xa8)) | ||
979 | continue; | ||
980 | if (off == (ROMUSB_GLB + 0xc8)) /* core clock */ | ||
981 | continue; | ||
982 | if (off == (ROMUSB_GLB + 0x24)) /* MN clock */ | ||
983 | continue; | ||
984 | if (off == (ROMUSB_GLB + 0x1c)) /* MS clock */ | ||
985 | continue; | ||
978 | if (off == (NETXEN_CRB_PEG_NET_1 + 0x18)) | 986 | if (off == (NETXEN_CRB_PEG_NET_1 + 0x18)) |
979 | buf[i].data = 0x1020; | 987 | buf[i].data = 0x1020; |
980 | /* skip the function enable register */ | 988 | /* skip the function enable register */ |
@@ -992,23 +1000,21 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose) | |||
992 | continue; | 1000 | continue; |
993 | } | 1001 | } |
994 | 1002 | ||
1003 | init_delay = 1; | ||
995 | /* After writing this register, HW needs time for CRB */ | 1004 | /* After writing this register, HW needs time for CRB */ |
996 | /* to quiet down (else crb_window returns 0xffffffff) */ | 1005 | /* to quiet down (else crb_window returns 0xffffffff) */ |
997 | if (off == NETXEN_ROMUSB_GLB_SW_RESET) { | 1006 | if (off == NETXEN_ROMUSB_GLB_SW_RESET) { |
998 | init_delay = 1; | 1007 | init_delay = 1000; |
999 | if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { | 1008 | if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { |
1000 | /* hold xdma in reset also */ | 1009 | /* hold xdma in reset also */ |
1001 | buf[i].data = NETXEN_NIC_XDMA_RESET; | 1010 | buf[i].data = NETXEN_NIC_XDMA_RESET; |
1011 | buf[i].data = 0x8000ff; | ||
1002 | } | 1012 | } |
1003 | } | 1013 | } |
1004 | 1014 | ||
1005 | adapter->hw_write_wx(adapter, off, &buf[i].data, 4); | 1015 | adapter->hw_write_wx(adapter, off, &buf[i].data, 4); |
1006 | 1016 | ||
1007 | if (init_delay == 1) { | 1017 | msleep(init_delay); |
1008 | msleep(1000); | ||
1009 | init_delay = 0; | ||
1010 | } | ||
1011 | msleep(1); | ||
1012 | } | 1018 | } |
1013 | kfree(buf); | 1019 | kfree(buf); |
1014 | 1020 | ||
@@ -1277,7 +1283,7 @@ static void netxen_process_rcv(struct netxen_adapter *adapter, int ctxid, | |||
1277 | 1283 | ||
1278 | dev_kfree_skb_any(skb); | 1284 | dev_kfree_skb_any(skb); |
1279 | for (i = 0; i < nr_frags; i++) { | 1285 | for (i = 0; i < nr_frags; i++) { |
1280 | index = frag_desc->frag_handles[i]; | 1286 | index = le16_to_cpu(frag_desc->frag_handles[i]); |
1281 | skb = netxen_process_rxbuf(adapter, | 1287 | skb = netxen_process_rxbuf(adapter, |
1282 | rds_ring, index, cksum); | 1288 | rds_ring, index, cksum); |
1283 | if (skb) | 1289 | if (skb) |
@@ -1428,7 +1434,6 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid) | |||
1428 | struct rcv_desc *pdesc; | 1434 | struct rcv_desc *pdesc; |
1429 | struct netxen_rx_buffer *buffer; | 1435 | struct netxen_rx_buffer *buffer; |
1430 | int count = 0; | 1436 | int count = 0; |
1431 | int index = 0; | ||
1432 | netxen_ctx_msg msg = 0; | 1437 | netxen_ctx_msg msg = 0; |
1433 | dma_addr_t dma; | 1438 | dma_addr_t dma; |
1434 | struct list_head *head; | 1439 | struct list_head *head; |
@@ -1436,7 +1441,6 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid) | |||
1436 | rds_ring = &recv_ctx->rds_rings[ringid]; | 1441 | rds_ring = &recv_ctx->rds_rings[ringid]; |
1437 | 1442 | ||
1438 | producer = rds_ring->producer; | 1443 | producer = rds_ring->producer; |
1439 | index = rds_ring->begin_alloc; | ||
1440 | head = &rds_ring->free_list; | 1444 | head = &rds_ring->free_list; |
1441 | 1445 | ||
1442 | /* We can start writing rx descriptors into the phantom memory. */ | 1446 | /* We can start writing rx descriptors into the phantom memory. */ |
@@ -1444,39 +1448,37 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid) | |||
1444 | 1448 | ||
1445 | skb = dev_alloc_skb(rds_ring->skb_size); | 1449 | skb = dev_alloc_skb(rds_ring->skb_size); |
1446 | if (unlikely(!skb)) { | 1450 | if (unlikely(!skb)) { |
1447 | rds_ring->begin_alloc = index; | ||
1448 | break; | 1451 | break; |
1449 | } | 1452 | } |
1450 | 1453 | ||
1454 | if (!adapter->ahw.cut_through) | ||
1455 | skb_reserve(skb, 2); | ||
1456 | |||
1457 | dma = pci_map_single(pdev, skb->data, | ||
1458 | rds_ring->dma_size, PCI_DMA_FROMDEVICE); | ||
1459 | if (pci_dma_mapping_error(pdev, dma)) { | ||
1460 | dev_kfree_skb_any(skb); | ||
1461 | break; | ||
1462 | } | ||
1463 | |||
1464 | count++; | ||
1451 | buffer = list_entry(head->next, struct netxen_rx_buffer, list); | 1465 | buffer = list_entry(head->next, struct netxen_rx_buffer, list); |
1452 | list_del(&buffer->list); | 1466 | list_del(&buffer->list); |
1453 | 1467 | ||
1454 | count++; /* now there should be no failure */ | ||
1455 | pdesc = &rds_ring->desc_head[producer]; | ||
1456 | |||
1457 | if (!adapter->ahw.cut_through) | ||
1458 | skb_reserve(skb, 2); | ||
1459 | /* This will be setup when we receive the | ||
1460 | * buffer after it has been filled FSL TBD TBD | ||
1461 | * skb->dev = netdev; | ||
1462 | */ | ||
1463 | dma = pci_map_single(pdev, skb->data, rds_ring->dma_size, | ||
1464 | PCI_DMA_FROMDEVICE); | ||
1465 | pdesc->addr_buffer = cpu_to_le64(dma); | ||
1466 | buffer->skb = skb; | 1468 | buffer->skb = skb; |
1467 | buffer->state = NETXEN_BUFFER_BUSY; | 1469 | buffer->state = NETXEN_BUFFER_BUSY; |
1468 | buffer->dma = dma; | 1470 | buffer->dma = dma; |
1471 | |||
1469 | /* make a rcv descriptor */ | 1472 | /* make a rcv descriptor */ |
1473 | pdesc = &rds_ring->desc_head[producer]; | ||
1474 | pdesc->addr_buffer = cpu_to_le64(dma); | ||
1470 | pdesc->reference_handle = cpu_to_le16(buffer->ref_handle); | 1475 | pdesc->reference_handle = cpu_to_le16(buffer->ref_handle); |
1471 | pdesc->buffer_length = cpu_to_le32(rds_ring->dma_size); | 1476 | pdesc->buffer_length = cpu_to_le32(rds_ring->dma_size); |
1472 | DPRINTK(INFO, "done writing descripter\n"); | 1477 | |
1473 | producer = | 1478 | producer = get_next_index(producer, rds_ring->max_rx_desc_count); |
1474 | get_next_index(producer, rds_ring->max_rx_desc_count); | ||
1475 | index = get_next_index(index, rds_ring->max_rx_desc_count); | ||
1476 | } | 1479 | } |
1477 | /* if we did allocate buffers, then write the count to Phantom */ | 1480 | /* if we did allocate buffers, then write the count to Phantom */ |
1478 | if (count) { | 1481 | if (count) { |
1479 | rds_ring->begin_alloc = index; | ||
1480 | rds_ring->producer = producer; | 1482 | rds_ring->producer = producer; |
1481 | /* Window = 1 */ | 1483 | /* Window = 1 */ |
1482 | adapter->pci_write_normalize(adapter, | 1484 | adapter->pci_write_normalize(adapter, |
@@ -1515,49 +1517,50 @@ static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter, | |||
1515 | struct rcv_desc *pdesc; | 1517 | struct rcv_desc *pdesc; |
1516 | struct netxen_rx_buffer *buffer; | 1518 | struct netxen_rx_buffer *buffer; |
1517 | int count = 0; | 1519 | int count = 0; |
1518 | int index = 0; | ||
1519 | struct list_head *head; | 1520 | struct list_head *head; |
1521 | dma_addr_t dma; | ||
1520 | 1522 | ||
1521 | rds_ring = &recv_ctx->rds_rings[ringid]; | 1523 | rds_ring = &recv_ctx->rds_rings[ringid]; |
1522 | 1524 | ||
1523 | producer = rds_ring->producer; | 1525 | producer = rds_ring->producer; |
1524 | index = rds_ring->begin_alloc; | ||
1525 | head = &rds_ring->free_list; | 1526 | head = &rds_ring->free_list; |
1526 | /* We can start writing rx descriptors into the phantom memory. */ | 1527 | /* We can start writing rx descriptors into the phantom memory. */ |
1527 | while (!list_empty(head)) { | 1528 | while (!list_empty(head)) { |
1528 | 1529 | ||
1529 | skb = dev_alloc_skb(rds_ring->skb_size); | 1530 | skb = dev_alloc_skb(rds_ring->skb_size); |
1530 | if (unlikely(!skb)) { | 1531 | if (unlikely(!skb)) { |
1531 | rds_ring->begin_alloc = index; | ||
1532 | break; | 1532 | break; |
1533 | } | 1533 | } |
1534 | 1534 | ||
1535 | if (!adapter->ahw.cut_through) | ||
1536 | skb_reserve(skb, 2); | ||
1537 | |||
1538 | dma = pci_map_single(pdev, skb->data, | ||
1539 | rds_ring->dma_size, PCI_DMA_FROMDEVICE); | ||
1540 | if (pci_dma_mapping_error(pdev, dma)) { | ||
1541 | dev_kfree_skb_any(skb); | ||
1542 | break; | ||
1543 | } | ||
1544 | |||
1545 | count++; | ||
1535 | buffer = list_entry(head->next, struct netxen_rx_buffer, list); | 1546 | buffer = list_entry(head->next, struct netxen_rx_buffer, list); |
1536 | list_del(&buffer->list); | 1547 | list_del(&buffer->list); |
1537 | 1548 | ||
1538 | count++; /* now there should be no failure */ | ||
1539 | pdesc = &rds_ring->desc_head[producer]; | ||
1540 | if (!adapter->ahw.cut_through) | ||
1541 | skb_reserve(skb, 2); | ||
1542 | buffer->skb = skb; | 1549 | buffer->skb = skb; |
1543 | buffer->state = NETXEN_BUFFER_BUSY; | 1550 | buffer->state = NETXEN_BUFFER_BUSY; |
1544 | buffer->dma = pci_map_single(pdev, skb->data, | 1551 | buffer->dma = dma; |
1545 | rds_ring->dma_size, | ||
1546 | PCI_DMA_FROMDEVICE); | ||
1547 | 1552 | ||
1548 | /* make a rcv descriptor */ | 1553 | /* make a rcv descriptor */ |
1554 | pdesc = &rds_ring->desc_head[producer]; | ||
1549 | pdesc->reference_handle = cpu_to_le16(buffer->ref_handle); | 1555 | pdesc->reference_handle = cpu_to_le16(buffer->ref_handle); |
1550 | pdesc->buffer_length = cpu_to_le32(rds_ring->dma_size); | 1556 | pdesc->buffer_length = cpu_to_le32(rds_ring->dma_size); |
1551 | pdesc->addr_buffer = cpu_to_le64(buffer->dma); | 1557 | pdesc->addr_buffer = cpu_to_le64(buffer->dma); |
1552 | producer = | 1558 | |
1553 | get_next_index(producer, rds_ring->max_rx_desc_count); | 1559 | producer = get_next_index(producer, rds_ring->max_rx_desc_count); |
1554 | index = get_next_index(index, rds_ring->max_rx_desc_count); | ||
1555 | buffer = &rds_ring->rx_buf_arr[index]; | ||
1556 | } | 1560 | } |
1557 | 1561 | ||
1558 | /* if we did allocate buffers, then write the count to Phantom */ | 1562 | /* if we did allocate buffers, then write the count to Phantom */ |
1559 | if (count) { | 1563 | if (count) { |
1560 | rds_ring->begin_alloc = index; | ||
1561 | rds_ring->producer = producer; | 1564 | rds_ring->producer = producer; |
1562 | /* Window = 1 */ | 1565 | /* Window = 1 */ |
1563 | adapter->pci_write_normalize(adapter, | 1566 | adapter->pci_write_normalize(adapter, |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index ba01524b5531..645d384fe87e 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -39,7 +39,9 @@ | |||
39 | #include "netxen_nic_phan_reg.h" | 39 | #include "netxen_nic_phan_reg.h" |
40 | 40 | ||
41 | #include <linux/dma-mapping.h> | 41 | #include <linux/dma-mapping.h> |
42 | #include <linux/if_vlan.h> | ||
42 | #include <net/ip.h> | 43 | #include <net/ip.h> |
44 | #include <linux/ipv6.h> | ||
43 | 45 | ||
44 | MODULE_DESCRIPTION("NetXen Multi port (1/10) Gigabit Network Driver"); | 46 | MODULE_DESCRIPTION("NetXen Multi port (1/10) Gigabit Network Driver"); |
45 | MODULE_LICENSE("GPL"); | 47 | MODULE_LICENSE("GPL"); |
@@ -242,7 +244,7 @@ static void netxen_check_options(struct netxen_adapter *adapter) | |||
242 | case NETXEN_BRDTYPE_P3_4_GB: | 244 | case NETXEN_BRDTYPE_P3_4_GB: |
243 | case NETXEN_BRDTYPE_P3_4_GB_MM: | 245 | case NETXEN_BRDTYPE_P3_4_GB_MM: |
244 | adapter->msix_supported = !!use_msi_x; | 246 | adapter->msix_supported = !!use_msi_x; |
245 | adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_10G; | 247 | adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G; |
246 | break; | 248 | break; |
247 | 249 | ||
248 | case NETXEN_BRDTYPE_P2_SB35_4G: | 250 | case NETXEN_BRDTYPE_P2_SB35_4G: |
@@ -251,6 +253,14 @@ static void netxen_check_options(struct netxen_adapter *adapter) | |||
251 | adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G; | 253 | adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G; |
252 | break; | 254 | break; |
253 | 255 | ||
256 | case NETXEN_BRDTYPE_P3_10G_TP: | ||
257 | adapter->msix_supported = !!use_msi_x; | ||
258 | if (adapter->ahw.board_type == NETXEN_NIC_XGBE) | ||
259 | adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_10G; | ||
260 | else | ||
261 | adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G; | ||
262 | break; | ||
263 | |||
254 | default: | 264 | default: |
255 | adapter->msix_supported = 0; | 265 | adapter->msix_supported = 0; |
256 | adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G; | 266 | adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G; |
@@ -271,10 +281,15 @@ static void netxen_check_options(struct netxen_adapter *adapter) | |||
271 | static int | 281 | static int |
272 | netxen_check_hw_init(struct netxen_adapter *adapter, int first_boot) | 282 | netxen_check_hw_init(struct netxen_adapter *adapter, int first_boot) |
273 | { | 283 | { |
274 | int ret = 0; | 284 | u32 val, timeout; |
275 | 285 | ||
276 | if (first_boot == 0x55555555) { | 286 | if (first_boot == 0x55555555) { |
277 | /* This is the first boot after power up */ | 287 | /* This is the first boot after power up */ |
288 | adapter->pci_write_normalize(adapter, | ||
289 | NETXEN_CAM_RAM(0x1fc), NETXEN_BDINFO_MAGIC); | ||
290 | |||
291 | if (!NX_IS_REVISION_P2(adapter->ahw.revision_id)) | ||
292 | return 0; | ||
278 | 293 | ||
279 | /* PCI bus master workaround */ | 294 | /* PCI bus master workaround */ |
280 | adapter->hw_read_wx(adapter, | 295 | adapter->hw_read_wx(adapter, |
@@ -294,18 +309,26 @@ netxen_check_hw_init(struct netxen_adapter *adapter, int first_boot) | |||
294 | /* clear the register for future unloads/loads */ | 309 | /* clear the register for future unloads/loads */ |
295 | adapter->pci_write_normalize(adapter, | 310 | adapter->pci_write_normalize(adapter, |
296 | NETXEN_CAM_RAM(0x1fc), 0); | 311 | NETXEN_CAM_RAM(0x1fc), 0); |
297 | ret = -1; | 312 | return -EIO; |
298 | } | 313 | } |
299 | 314 | ||
300 | if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { | 315 | /* Start P2 boot loader */ |
301 | /* Start P2 boot loader */ | 316 | val = adapter->pci_read_normalize(adapter, |
302 | adapter->pci_write_normalize(adapter, | 317 | NETXEN_ROMUSB_GLB_PEGTUNE_DONE); |
303 | NETXEN_CAM_RAM(0x1fc), NETXEN_BDINFO_MAGIC); | 318 | adapter->pci_write_normalize(adapter, |
304 | adapter->pci_write_normalize(adapter, | 319 | NETXEN_ROMUSB_GLB_PEGTUNE_DONE, val | 0x1); |
305 | NETXEN_ROMUSB_GLB_PEGTUNE_DONE, 1); | 320 | timeout = 0; |
306 | } | 321 | do { |
322 | msleep(1); | ||
323 | val = adapter->pci_read_normalize(adapter, | ||
324 | NETXEN_CAM_RAM(0x1fc)); | ||
325 | |||
326 | if (++timeout > 5000) | ||
327 | return -EIO; | ||
328 | |||
329 | } while (val == NETXEN_BDINFO_MAGIC); | ||
307 | } | 330 | } |
308 | return ret; | 331 | return 0; |
309 | } | 332 | } |
310 | 333 | ||
311 | static void netxen_set_port_mode(struct netxen_adapter *adapter) | 334 | static void netxen_set_port_mode(struct netxen_adapter *adapter) |
@@ -712,17 +735,18 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
712 | 735 | ||
713 | SET_ETHTOOL_OPS(netdev, &netxen_nic_ethtool_ops); | 736 | SET_ETHTOOL_OPS(netdev, &netxen_nic_ethtool_ops); |
714 | 737 | ||
715 | /* ScatterGather support */ | 738 | netdev->features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO); |
716 | netdev->features = NETIF_F_SG; | 739 | netdev->vlan_features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO); |
717 | netdev->features |= NETIF_F_IP_CSUM; | 740 | |
718 | netdev->features |= NETIF_F_TSO; | ||
719 | if (NX_IS_REVISION_P3(revision_id)) { | 741 | if (NX_IS_REVISION_P3(revision_id)) { |
720 | netdev->features |= NETIF_F_IPV6_CSUM; | 742 | netdev->features |= (NETIF_F_IPV6_CSUM | NETIF_F_TSO6); |
721 | netdev->features |= NETIF_F_TSO6; | 743 | netdev->vlan_features |= (NETIF_F_IPV6_CSUM | NETIF_F_TSO6); |
722 | } | 744 | } |
723 | 745 | ||
724 | if (adapter->pci_using_dac) | 746 | if (adapter->pci_using_dac) { |
725 | netdev->features |= NETIF_F_HIGHDMA; | 747 | netdev->features |= NETIF_F_HIGHDMA; |
748 | netdev->vlan_features |= NETIF_F_HIGHDMA; | ||
749 | } | ||
726 | 750 | ||
727 | /* | 751 | /* |
728 | * Set the CRB window to invalid. If any register in window 0 is | 752 | * Set the CRB window to invalid. If any register in window 0 is |
@@ -784,8 +808,8 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
784 | CRB_CMDPEG_STATE, 0); | 808 | CRB_CMDPEG_STATE, 0); |
785 | netxen_pinit_from_rom(adapter, 0); | 809 | netxen_pinit_from_rom(adapter, 0); |
786 | msleep(1); | 810 | msleep(1); |
787 | netxen_load_firmware(adapter); | ||
788 | } | 811 | } |
812 | netxen_load_firmware(adapter); | ||
789 | 813 | ||
790 | if (NX_IS_REVISION_P3(revision_id)) | 814 | if (NX_IS_REVISION_P3(revision_id)) |
791 | netxen_pcie_strap_init(adapter); | 815 | netxen_pcie_strap_init(adapter); |
@@ -801,13 +825,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
801 | 825 | ||
802 | } | 826 | } |
803 | 827 | ||
804 | if ((first_boot == 0x55555555) && | ||
805 | (NX_IS_REVISION_P2(revision_id))) { | ||
806 | /* Unlock the HW, prompting the boot sequence */ | ||
807 | adapter->pci_write_normalize(adapter, | ||
808 | NETXEN_ROMUSB_GLB_PEGTUNE_DONE, 1); | ||
809 | } | ||
810 | |||
811 | err = netxen_initialize_adapter_offload(adapter); | 828 | err = netxen_initialize_adapter_offload(adapter); |
812 | if (err) | 829 | if (err) |
813 | goto err_out_iounmap; | 830 | goto err_out_iounmap; |
@@ -821,7 +838,9 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
821 | adapter->pci_write_normalize(adapter, CRB_DRIVER_VERSION, i); | 838 | adapter->pci_write_normalize(adapter, CRB_DRIVER_VERSION, i); |
822 | 839 | ||
823 | /* Handshake with the card before we register the devices. */ | 840 | /* Handshake with the card before we register the devices. */ |
824 | netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE); | 841 | err = netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE); |
842 | if (err) | ||
843 | goto err_out_free_offload; | ||
825 | 844 | ||
826 | } /* first_driver */ | 845 | } /* first_driver */ |
827 | 846 | ||
@@ -925,6 +944,7 @@ err_out_disable_msi: | |||
925 | if (adapter->flags & NETXEN_NIC_MSI_ENABLED) | 944 | if (adapter->flags & NETXEN_NIC_MSI_ENABLED) |
926 | pci_disable_msi(pdev); | 945 | pci_disable_msi(pdev); |
927 | 946 | ||
947 | err_out_free_offload: | ||
928 | if (first_driver) | 948 | if (first_driver) |
929 | netxen_free_adapter_offload(adapter); | 949 | netxen_free_adapter_offload(adapter); |
930 | 950 | ||
@@ -968,6 +988,9 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev) | |||
968 | netxen_free_hw_resources(adapter); | 988 | netxen_free_hw_resources(adapter); |
969 | netxen_release_rx_buffers(adapter); | 989 | netxen_release_rx_buffers(adapter); |
970 | netxen_free_sw_resources(adapter); | 990 | netxen_free_sw_resources(adapter); |
991 | |||
992 | if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) | ||
993 | netxen_p3_free_mac_list(adapter); | ||
971 | } | 994 | } |
972 | 995 | ||
973 | if (adapter->portnum == 0) | 996 | if (adapter->portnum == 0) |
@@ -983,8 +1006,10 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev) | |||
983 | 1006 | ||
984 | iounmap(adapter->ahw.db_base); | 1007 | iounmap(adapter->ahw.db_base); |
985 | iounmap(adapter->ahw.pci_base0); | 1008 | iounmap(adapter->ahw.pci_base0); |
986 | iounmap(adapter->ahw.pci_base1); | 1009 | if (adapter->ahw.pci_base1 != NULL) |
987 | iounmap(adapter->ahw.pci_base2); | 1010 | iounmap(adapter->ahw.pci_base1); |
1011 | if (adapter->ahw.pci_base2 != NULL) | ||
1012 | iounmap(adapter->ahw.pci_base2); | ||
988 | 1013 | ||
989 | pci_release_regions(pdev); | 1014 | pci_release_regions(pdev); |
990 | pci_disable_device(pdev); | 1015 | pci_disable_device(pdev); |
@@ -1137,29 +1162,72 @@ static int netxen_nic_close(struct net_device *netdev) | |||
1137 | return 0; | 1162 | return 0; |
1138 | } | 1163 | } |
1139 | 1164 | ||
1140 | void netxen_tso_check(struct netxen_adapter *adapter, | 1165 | static bool netxen_tso_check(struct net_device *netdev, |
1141 | struct cmd_desc_type0 *desc, struct sk_buff *skb) | 1166 | struct cmd_desc_type0 *desc, struct sk_buff *skb) |
1142 | { | 1167 | { |
1143 | if (desc->mss) { | 1168 | bool tso = false; |
1144 | desc->total_hdr_length = (sizeof(struct ethhdr) + | 1169 | u8 opcode = TX_ETHER_PKT; |
1145 | ip_hdrlen(skb) + tcp_hdrlen(skb)); | 1170 | __be16 protocol = skb->protocol; |
1171 | u16 flags = 0; | ||
1172 | |||
1173 | if (protocol == __constant_htons(ETH_P_8021Q)) { | ||
1174 | struct vlan_ethhdr *vh = (struct vlan_ethhdr *)skb->data; | ||
1175 | protocol = vh->h_vlan_encapsulated_proto; | ||
1176 | flags = FLAGS_VLAN_TAGGED; | ||
1177 | } | ||
1146 | 1178 | ||
1147 | if ((NX_IS_REVISION_P3(adapter->ahw.revision_id)) && | 1179 | if ((netdev->features & (NETIF_F_TSO | NETIF_F_TSO6)) && |
1148 | (skb->protocol == htons(ETH_P_IPV6))) | 1180 | skb_shinfo(skb)->gso_size > 0) { |
1149 | netxen_set_cmd_desc_opcode(desc, TX_TCP_LSO6); | 1181 | |
1150 | else | 1182 | desc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size); |
1151 | netxen_set_cmd_desc_opcode(desc, TX_TCP_LSO); | 1183 | desc->total_hdr_length = |
1184 | skb_transport_offset(skb) + tcp_hdrlen(skb); | ||
1185 | |||
1186 | opcode = (protocol == __constant_htons(ETH_P_IPV6)) ? | ||
1187 | TX_TCP_LSO6 : TX_TCP_LSO; | ||
1188 | tso = true; | ||
1152 | 1189 | ||
1153 | } else if (skb->ip_summed == CHECKSUM_PARTIAL) { | 1190 | } else if (skb->ip_summed == CHECKSUM_PARTIAL) { |
1154 | if (ip_hdr(skb)->protocol == IPPROTO_TCP) | 1191 | u8 l4proto; |
1155 | netxen_set_cmd_desc_opcode(desc, TX_TCP_PKT); | 1192 | |
1156 | else if (ip_hdr(skb)->protocol == IPPROTO_UDP) | 1193 | if (protocol == __constant_htons(ETH_P_IP)) { |
1157 | netxen_set_cmd_desc_opcode(desc, TX_UDP_PKT); | 1194 | l4proto = ip_hdr(skb)->protocol; |
1158 | else | 1195 | |
1159 | return; | 1196 | if (l4proto == IPPROTO_TCP) |
1197 | opcode = TX_TCP_PKT; | ||
1198 | else if(l4proto == IPPROTO_UDP) | ||
1199 | opcode = TX_UDP_PKT; | ||
1200 | } else if (protocol == __constant_htons(ETH_P_IPV6)) { | ||
1201 | l4proto = ipv6_hdr(skb)->nexthdr; | ||
1202 | |||
1203 | if (l4proto == IPPROTO_TCP) | ||
1204 | opcode = TX_TCPV6_PKT; | ||
1205 | else if(l4proto == IPPROTO_UDP) | ||
1206 | opcode = TX_UDPV6_PKT; | ||
1207 | } | ||
1160 | } | 1208 | } |
1161 | desc->tcp_hdr_offset = skb_transport_offset(skb); | 1209 | desc->tcp_hdr_offset = skb_transport_offset(skb); |
1162 | desc->ip_hdr_offset = skb_network_offset(skb); | 1210 | desc->ip_hdr_offset = skb_network_offset(skb); |
1211 | netxen_set_tx_flags_opcode(desc, flags, opcode); | ||
1212 | return tso; | ||
1213 | } | ||
1214 | |||
1215 | static void | ||
1216 | netxen_clean_tx_dma_mapping(struct pci_dev *pdev, | ||
1217 | struct netxen_cmd_buffer *pbuf, int last) | ||
1218 | { | ||
1219 | int k; | ||
1220 | struct netxen_skb_frag *buffrag; | ||
1221 | |||
1222 | buffrag = &pbuf->frag_array[0]; | ||
1223 | pci_unmap_single(pdev, buffrag->dma, | ||
1224 | buffrag->length, PCI_DMA_TODEVICE); | ||
1225 | |||
1226 | for (k = 1; k < last; k++) { | ||
1227 | buffrag = &pbuf->frag_array[k]; | ||
1228 | pci_unmap_page(pdev, buffrag->dma, | ||
1229 | buffrag->length, PCI_DMA_TODEVICE); | ||
1230 | } | ||
1163 | } | 1231 | } |
1164 | 1232 | ||
1165 | static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | 1233 | static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) |
@@ -1167,33 +1235,22 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1167 | struct netxen_adapter *adapter = netdev_priv(netdev); | 1235 | struct netxen_adapter *adapter = netdev_priv(netdev); |
1168 | struct netxen_hardware_context *hw = &adapter->ahw; | 1236 | struct netxen_hardware_context *hw = &adapter->ahw; |
1169 | unsigned int first_seg_len = skb->len - skb->data_len; | 1237 | unsigned int first_seg_len = skb->len - skb->data_len; |
1238 | struct netxen_cmd_buffer *pbuf; | ||
1170 | struct netxen_skb_frag *buffrag; | 1239 | struct netxen_skb_frag *buffrag; |
1171 | unsigned int i; | 1240 | struct cmd_desc_type0 *hwdesc; |
1241 | struct pci_dev *pdev = adapter->pdev; | ||
1242 | dma_addr_t temp_dma; | ||
1243 | int i, k; | ||
1172 | 1244 | ||
1173 | u32 producer, consumer; | 1245 | u32 producer, consumer; |
1174 | u32 saved_producer = 0; | 1246 | int frag_count, no_of_desc; |
1175 | struct cmd_desc_type0 *hwdesc; | ||
1176 | int k; | ||
1177 | struct netxen_cmd_buffer *pbuf = NULL; | ||
1178 | int frag_count; | ||
1179 | int no_of_desc; | ||
1180 | u32 num_txd = adapter->max_tx_desc_count; | 1247 | u32 num_txd = adapter->max_tx_desc_count; |
1248 | bool is_tso = false; | ||
1181 | 1249 | ||
1182 | frag_count = skb_shinfo(skb)->nr_frags + 1; | 1250 | frag_count = skb_shinfo(skb)->nr_frags + 1; |
1183 | 1251 | ||
1184 | /* There 4 fragments per descriptor */ | 1252 | /* There 4 fragments per descriptor */ |
1185 | no_of_desc = (frag_count + 3) >> 2; | 1253 | no_of_desc = (frag_count + 3) >> 2; |
1186 | if (netdev->features & (NETIF_F_TSO | NETIF_F_TSO6)) { | ||
1187 | if (skb_shinfo(skb)->gso_size > 0) { | ||
1188 | |||
1189 | no_of_desc++; | ||
1190 | if ((ip_hdrlen(skb) + tcp_hdrlen(skb) + | ||
1191 | sizeof(struct ethhdr)) > | ||
1192 | (sizeof(struct cmd_desc_type0) - 2)) { | ||
1193 | no_of_desc++; | ||
1194 | } | ||
1195 | } | ||
1196 | } | ||
1197 | 1254 | ||
1198 | producer = adapter->cmd_producer; | 1255 | producer = adapter->cmd_producer; |
1199 | smp_mb(); | 1256 | smp_mb(); |
@@ -1205,34 +1262,26 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1205 | } | 1262 | } |
1206 | 1263 | ||
1207 | /* Copy the descriptors into the hardware */ | 1264 | /* Copy the descriptors into the hardware */ |
1208 | saved_producer = producer; | ||
1209 | hwdesc = &hw->cmd_desc_head[producer]; | 1265 | hwdesc = &hw->cmd_desc_head[producer]; |
1210 | memset(hwdesc, 0, sizeof(struct cmd_desc_type0)); | 1266 | memset(hwdesc, 0, sizeof(struct cmd_desc_type0)); |
1211 | /* Take skb->data itself */ | 1267 | /* Take skb->data itself */ |
1212 | pbuf = &adapter->cmd_buf_arr[producer]; | 1268 | pbuf = &adapter->cmd_buf_arr[producer]; |
1213 | if ((netdev->features & (NETIF_F_TSO | NETIF_F_TSO6)) && | 1269 | |
1214 | skb_shinfo(skb)->gso_size > 0) { | 1270 | is_tso = netxen_tso_check(netdev, hwdesc, skb); |
1215 | pbuf->mss = skb_shinfo(skb)->gso_size; | 1271 | |
1216 | hwdesc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size); | ||
1217 | } else { | ||
1218 | pbuf->mss = 0; | ||
1219 | hwdesc->mss = 0; | ||
1220 | } | ||
1221 | pbuf->total_length = skb->len; | ||
1222 | pbuf->skb = skb; | 1272 | pbuf->skb = skb; |
1223 | pbuf->cmd = TX_ETHER_PKT; | ||
1224 | pbuf->frag_count = frag_count; | 1273 | pbuf->frag_count = frag_count; |
1225 | pbuf->port = adapter->portnum; | ||
1226 | buffrag = &pbuf->frag_array[0]; | 1274 | buffrag = &pbuf->frag_array[0]; |
1227 | buffrag->dma = pci_map_single(adapter->pdev, skb->data, first_seg_len, | 1275 | temp_dma = pci_map_single(pdev, skb->data, first_seg_len, |
1228 | PCI_DMA_TODEVICE); | 1276 | PCI_DMA_TODEVICE); |
1277 | if (pci_dma_mapping_error(pdev, temp_dma)) | ||
1278 | goto drop_packet; | ||
1279 | |||
1280 | buffrag->dma = temp_dma; | ||
1229 | buffrag->length = first_seg_len; | 1281 | buffrag->length = first_seg_len; |
1230 | netxen_set_cmd_desc_totallength(hwdesc, skb->len); | 1282 | netxen_set_tx_frags_len(hwdesc, frag_count, skb->len); |
1231 | netxen_set_cmd_desc_num_of_buff(hwdesc, frag_count); | 1283 | netxen_set_tx_port(hwdesc, adapter->portnum); |
1232 | netxen_set_cmd_desc_opcode(hwdesc, TX_ETHER_PKT); | ||
1233 | 1284 | ||
1234 | netxen_set_cmd_desc_port(hwdesc, adapter->portnum); | ||
1235 | netxen_set_cmd_desc_ctxid(hwdesc, adapter->portnum); | ||
1236 | hwdesc->buffer1_length = cpu_to_le16(first_seg_len); | 1285 | hwdesc->buffer1_length = cpu_to_le16(first_seg_len); |
1237 | hwdesc->addr_buffer1 = cpu_to_le64(buffrag->dma); | 1286 | hwdesc->addr_buffer1 = cpu_to_le64(buffrag->dma); |
1238 | 1287 | ||
@@ -1240,7 +1289,6 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1240 | struct skb_frag_struct *frag; | 1289 | struct skb_frag_struct *frag; |
1241 | int len, temp_len; | 1290 | int len, temp_len; |
1242 | unsigned long offset; | 1291 | unsigned long offset; |
1243 | dma_addr_t temp_dma; | ||
1244 | 1292 | ||
1245 | /* move to next desc. if there is a need */ | 1293 | /* move to next desc. if there is a need */ |
1246 | if ((i & 0x3) == 0) { | 1294 | if ((i & 0x3) == 0) { |
@@ -1256,8 +1304,12 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1256 | offset = frag->page_offset; | 1304 | offset = frag->page_offset; |
1257 | 1305 | ||
1258 | temp_len = len; | 1306 | temp_len = len; |
1259 | temp_dma = pci_map_page(adapter->pdev, frag->page, offset, | 1307 | temp_dma = pci_map_page(pdev, frag->page, offset, |
1260 | len, PCI_DMA_TODEVICE); | 1308 | len, PCI_DMA_TODEVICE); |
1309 | if (pci_dma_mapping_error(pdev, temp_dma)) { | ||
1310 | netxen_clean_tx_dma_mapping(pdev, pbuf, i); | ||
1311 | goto drop_packet; | ||
1312 | } | ||
1261 | 1313 | ||
1262 | buffrag++; | 1314 | buffrag++; |
1263 | buffrag->dma = temp_dma; | 1315 | buffrag->dma = temp_dma; |
@@ -1285,16 +1337,12 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1285 | } | 1337 | } |
1286 | producer = get_next_index(producer, num_txd); | 1338 | producer = get_next_index(producer, num_txd); |
1287 | 1339 | ||
1288 | /* might change opcode to TX_TCP_LSO */ | ||
1289 | netxen_tso_check(adapter, &hw->cmd_desc_head[saved_producer], skb); | ||
1290 | |||
1291 | /* For LSO, we need to copy the MAC/IP/TCP headers into | 1340 | /* For LSO, we need to copy the MAC/IP/TCP headers into |
1292 | * the descriptor ring | 1341 | * the descriptor ring |
1293 | */ | 1342 | */ |
1294 | if (netxen_get_cmd_desc_opcode(&hw->cmd_desc_head[saved_producer]) | 1343 | if (is_tso) { |
1295 | == TX_TCP_LSO) { | ||
1296 | int hdr_len, first_hdr_len, more_hdr; | 1344 | int hdr_len, first_hdr_len, more_hdr; |
1297 | hdr_len = hw->cmd_desc_head[saved_producer].total_hdr_length; | 1345 | hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); |
1298 | if (hdr_len > (sizeof(struct cmd_desc_type0) - 2)) { | 1346 | if (hdr_len > (sizeof(struct cmd_desc_type0) - 2)) { |
1299 | first_hdr_len = sizeof(struct cmd_desc_type0) - 2; | 1347 | first_hdr_len = sizeof(struct cmd_desc_type0) - 2; |
1300 | more_hdr = 1; | 1348 | more_hdr = 1; |
@@ -1336,6 +1384,11 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1336 | netdev->trans_start = jiffies; | 1384 | netdev->trans_start = jiffies; |
1337 | 1385 | ||
1338 | return NETDEV_TX_OK; | 1386 | return NETDEV_TX_OK; |
1387 | |||
1388 | drop_packet: | ||
1389 | adapter->stats.txdropped++; | ||
1390 | dev_kfree_skb_any(skb); | ||
1391 | return NETDEV_TX_OK; | ||
1339 | } | 1392 | } |
1340 | 1393 | ||
1341 | static int netxen_nic_check_temp(struct netxen_adapter *adapter) | 1394 | static int netxen_nic_check_temp(struct netxen_adapter *adapter) |
@@ -1407,6 +1460,8 @@ static void netxen_nic_handle_phy_intr(struct netxen_adapter *adapter) | |||
1407 | netif_carrier_off(netdev); | 1460 | netif_carrier_off(netdev); |
1408 | netif_stop_queue(netdev); | 1461 | netif_stop_queue(netdev); |
1409 | } | 1462 | } |
1463 | |||
1464 | netxen_nic_set_link_parameters(adapter); | ||
1410 | } else if (!adapter->ahw.linkup && linkup) { | 1465 | } else if (!adapter->ahw.linkup && linkup) { |
1411 | printk(KERN_INFO "%s: %s NIC Link is up\n", | 1466 | printk(KERN_INFO "%s: %s NIC Link is up\n", |
1412 | netxen_nic_driver_name, netdev->name); | 1467 | netxen_nic_driver_name, netdev->name); |
@@ -1415,6 +1470,8 @@ static void netxen_nic_handle_phy_intr(struct netxen_adapter *adapter) | |||
1415 | netif_carrier_on(netdev); | 1470 | netif_carrier_on(netdev); |
1416 | netif_wake_queue(netdev); | 1471 | netif_wake_queue(netdev); |
1417 | } | 1472 | } |
1473 | |||
1474 | netxen_nic_set_link_parameters(adapter); | ||
1418 | } | 1475 | } |
1419 | } | 1476 | } |
1420 | 1477 | ||
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index 11adf6ed4628..811a637695ca 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c | |||
@@ -296,9 +296,8 @@ static int mdio_bus_suspend(struct device * dev, pm_message_t state) | |||
296 | struct phy_driver *phydrv = to_phy_driver(drv); | 296 | struct phy_driver *phydrv = to_phy_driver(drv); |
297 | struct phy_device *phydev = to_phy_device(dev); | 297 | struct phy_device *phydev = to_phy_device(dev); |
298 | 298 | ||
299 | if ((!device_may_wakeup(phydev->dev.parent)) && | 299 | if (drv && phydrv->suspend && !device_may_wakeup(phydev->dev.parent)) |
300 | (phydrv && phydrv->suspend)) | 300 | ret = phydrv->suspend(phydev); |
301 | ret = phydrv->suspend(phydev); | ||
302 | 301 | ||
303 | return ret; | 302 | return ret; |
304 | } | 303 | } |
@@ -310,8 +309,7 @@ static int mdio_bus_resume(struct device * dev) | |||
310 | struct phy_driver *phydrv = to_phy_driver(drv); | 309 | struct phy_driver *phydrv = to_phy_driver(drv); |
311 | struct phy_device *phydev = to_phy_device(dev); | 310 | struct phy_device *phydev = to_phy_device(dev); |
312 | 311 | ||
313 | if ((!device_may_wakeup(phydev->dev.parent)) && | 312 | if (drv && phydrv->resume && !device_may_wakeup(phydev->dev.parent)) |
314 | (phydrv && phydrv->resume)) | ||
315 | ret = phydrv->resume(phydev); | 313 | ret = phydrv->resume(phydev); |
316 | 314 | ||
317 | return ret; | 315 | return ret; |
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index e35460165bf7..0a06e4fd37d9 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c | |||
@@ -231,15 +231,6 @@ struct phy_device * get_phy_device(struct mii_bus *bus, int addr) | |||
231 | if ((phy_id & 0x1fffffff) == 0x1fffffff) | 231 | if ((phy_id & 0x1fffffff) == 0x1fffffff) |
232 | return NULL; | 232 | return NULL; |
233 | 233 | ||
234 | /* | ||
235 | * Broken hardware is sometimes missing the pull-up resistor on the | ||
236 | * MDIO line, which results in reads to non-existent devices returning | ||
237 | * 0 rather than 0xffff. Catch this here and treat 0 as a non-existent | ||
238 | * device as well. | ||
239 | */ | ||
240 | if (phy_id == 0) | ||
241 | return NULL; | ||
242 | |||
243 | dev = phy_device_create(bus, addr, phy_id); | 234 | dev = phy_device_create(bus, addr, phy_id); |
244 | 235 | ||
245 | return dev; | 236 | return dev; |
diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c index c05d38d46350..1387187543e4 100644 --- a/drivers/net/phy/smsc.c +++ b/drivers/net/phy/smsc.c | |||
@@ -81,6 +81,9 @@ static struct phy_driver lan83c185_driver = { | |||
81 | .ack_interrupt = smsc_phy_ack_interrupt, | 81 | .ack_interrupt = smsc_phy_ack_interrupt, |
82 | .config_intr = smsc_phy_config_intr, | 82 | .config_intr = smsc_phy_config_intr, |
83 | 83 | ||
84 | .suspend = genphy_suspend, | ||
85 | .resume = genphy_resume, | ||
86 | |||
84 | .driver = { .owner = THIS_MODULE, } | 87 | .driver = { .owner = THIS_MODULE, } |
85 | }; | 88 | }; |
86 | 89 | ||
@@ -102,6 +105,9 @@ static struct phy_driver lan8187_driver = { | |||
102 | .ack_interrupt = smsc_phy_ack_interrupt, | 105 | .ack_interrupt = smsc_phy_ack_interrupt, |
103 | .config_intr = smsc_phy_config_intr, | 106 | .config_intr = smsc_phy_config_intr, |
104 | 107 | ||
108 | .suspend = genphy_suspend, | ||
109 | .resume = genphy_resume, | ||
110 | |||
105 | .driver = { .owner = THIS_MODULE, } | 111 | .driver = { .owner = THIS_MODULE, } |
106 | }; | 112 | }; |
107 | 113 | ||
@@ -123,6 +129,9 @@ static struct phy_driver lan8700_driver = { | |||
123 | .ack_interrupt = smsc_phy_ack_interrupt, | 129 | .ack_interrupt = smsc_phy_ack_interrupt, |
124 | .config_intr = smsc_phy_config_intr, | 130 | .config_intr = smsc_phy_config_intr, |
125 | 131 | ||
132 | .suspend = genphy_suspend, | ||
133 | .resume = genphy_resume, | ||
134 | |||
126 | .driver = { .owner = THIS_MODULE, } | 135 | .driver = { .owner = THIS_MODULE, } |
127 | }; | 136 | }; |
128 | 137 | ||
@@ -144,6 +153,9 @@ static struct phy_driver lan911x_int_driver = { | |||
144 | .ack_interrupt = smsc_phy_ack_interrupt, | 153 | .ack_interrupt = smsc_phy_ack_interrupt, |
145 | .config_intr = smsc_phy_config_intr, | 154 | .config_intr = smsc_phy_config_intr, |
146 | 155 | ||
156 | .suspend = genphy_suspend, | ||
157 | .resume = genphy_resume, | ||
158 | |||
147 | .driver = { .owner = THIS_MODULE, } | 159 | .driver = { .owner = THIS_MODULE, } |
148 | }; | 160 | }; |
149 | 161 | ||
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index 06b448285eb5..7b2728b8f1b7 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c | |||
@@ -250,6 +250,7 @@ static int ppp_connect_channel(struct channel *pch, int unit); | |||
250 | static int ppp_disconnect_channel(struct channel *pch); | 250 | static int ppp_disconnect_channel(struct channel *pch); |
251 | static void ppp_destroy_channel(struct channel *pch); | 251 | static void ppp_destroy_channel(struct channel *pch); |
252 | static int unit_get(struct idr *p, void *ptr); | 252 | static int unit_get(struct idr *p, void *ptr); |
253 | static int unit_set(struct idr *p, void *ptr, int n); | ||
253 | static void unit_put(struct idr *p, int n); | 254 | static void unit_put(struct idr *p, int n); |
254 | static void *unit_find(struct idr *p, int n); | 255 | static void *unit_find(struct idr *p, int n); |
255 | 256 | ||
@@ -2432,11 +2433,18 @@ ppp_create_interface(int unit, int *retp) | |||
2432 | } else { | 2433 | } else { |
2433 | if (unit_find(&ppp_units_idr, unit)) | 2434 | if (unit_find(&ppp_units_idr, unit)) |
2434 | goto out2; /* unit already exists */ | 2435 | goto out2; /* unit already exists */ |
2435 | else { | 2436 | /* |
2436 | /* darn, someone is cheating us? */ | 2437 | * if caller need a specified unit number |
2437 | *retp = -EINVAL; | 2438 | * lets try to satisfy him, otherwise -- |
2439 | * he should better ask us for new unit number | ||
2440 | * | ||
2441 | * NOTE: yes I know that returning EEXIST it's not | ||
2442 | * fair but at least pppd will ask us to allocate | ||
2443 | * new unit in this case so user is happy :) | ||
2444 | */ | ||
2445 | unit = unit_set(&ppp_units_idr, ppp, unit); | ||
2446 | if (unit < 0) | ||
2438 | goto out2; | 2447 | goto out2; |
2439 | } | ||
2440 | } | 2448 | } |
2441 | 2449 | ||
2442 | /* Initialize the new ppp unit */ | 2450 | /* Initialize the new ppp unit */ |
@@ -2677,14 +2685,37 @@ static void __exit ppp_cleanup(void) | |||
2677 | * by holding all_ppp_mutex | 2685 | * by holding all_ppp_mutex |
2678 | */ | 2686 | */ |
2679 | 2687 | ||
2688 | /* associate pointer with specified number */ | ||
2689 | static int unit_set(struct idr *p, void *ptr, int n) | ||
2690 | { | ||
2691 | int unit, err; | ||
2692 | |||
2693 | again: | ||
2694 | if (!idr_pre_get(p, GFP_KERNEL)) { | ||
2695 | printk(KERN_ERR "PPP: No free memory for idr\n"); | ||
2696 | return -ENOMEM; | ||
2697 | } | ||
2698 | |||
2699 | err = idr_get_new_above(p, ptr, n, &unit); | ||
2700 | if (err == -EAGAIN) | ||
2701 | goto again; | ||
2702 | |||
2703 | if (unit != n) { | ||
2704 | idr_remove(p, unit); | ||
2705 | return -EINVAL; | ||
2706 | } | ||
2707 | |||
2708 | return unit; | ||
2709 | } | ||
2710 | |||
2680 | /* get new free unit number and associate pointer with it */ | 2711 | /* get new free unit number and associate pointer with it */ |
2681 | static int unit_get(struct idr *p, void *ptr) | 2712 | static int unit_get(struct idr *p, void *ptr) |
2682 | { | 2713 | { |
2683 | int unit, err; | 2714 | int unit, err; |
2684 | 2715 | ||
2685 | again: | 2716 | again: |
2686 | if (idr_pre_get(p, GFP_KERNEL) == 0) { | 2717 | if (!idr_pre_get(p, GFP_KERNEL)) { |
2687 | printk(KERN_ERR "Out of memory expanding drawable idr\n"); | 2718 | printk(KERN_ERR "PPP: No free memory for idr\n"); |
2688 | return -ENOMEM; | 2719 | return -ENOMEM; |
2689 | } | 2720 | } |
2690 | 2721 | ||
diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c index 6cbefcae9ac2..be4465bc0a69 100644 --- a/drivers/net/sis900.c +++ b/drivers/net/sis900.c | |||
@@ -509,10 +509,10 @@ static int __devinit sis900_probe(struct pci_dev *pci_dev, | |||
509 | else | 509 | else |
510 | ret = sis900_get_mac_addr(pci_dev, net_dev); | 510 | ret = sis900_get_mac_addr(pci_dev, net_dev); |
511 | 511 | ||
512 | if (ret == 0) { | 512 | if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) { |
513 | printk(KERN_WARNING "%s: Cannot read MAC address.\n", dev_name); | 513 | random_ether_addr(net_dev->dev_addr); |
514 | ret = -ENODEV; | 514 | printk(KERN_WARNING "%s: Unreadable or invalid MAC address," |
515 | goto err_unmap_rx; | 515 | "using random generated one\n", dev_name); |
516 | } | 516 | } |
517 | 517 | ||
518 | /* 630ET : set the mii access mode as software-mode */ | 518 | /* 630ET : set the mii access mode as software-mode */ |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 5e2dbaee125b..8b3f84685387 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -7535,11 +7535,58 @@ static int tg3_test_msi(struct tg3 *tp) | |||
7535 | return err; | 7535 | return err; |
7536 | } | 7536 | } |
7537 | 7537 | ||
7538 | static int tg3_request_firmware(struct tg3 *tp) | ||
7539 | { | ||
7540 | const __be32 *fw_data; | ||
7541 | |||
7542 | if (request_firmware(&tp->fw, tp->fw_needed, &tp->pdev->dev)) { | ||
7543 | printk(KERN_ERR "%s: Failed to load firmware \"%s\"\n", | ||
7544 | tp->dev->name, tp->fw_needed); | ||
7545 | return -ENOENT; | ||
7546 | } | ||
7547 | |||
7548 | fw_data = (void *)tp->fw->data; | ||
7549 | |||
7550 | /* Firmware blob starts with version numbers, followed by | ||
7551 | * start address and _full_ length including BSS sections | ||
7552 | * (which must be longer than the actual data, of course | ||
7553 | */ | ||
7554 | |||
7555 | tp->fw_len = be32_to_cpu(fw_data[2]); /* includes bss */ | ||
7556 | if (tp->fw_len < (tp->fw->size - 12)) { | ||
7557 | printk(KERN_ERR "%s: bogus length %d in \"%s\"\n", | ||
7558 | tp->dev->name, tp->fw_len, tp->fw_needed); | ||
7559 | release_firmware(tp->fw); | ||
7560 | tp->fw = NULL; | ||
7561 | return -EINVAL; | ||
7562 | } | ||
7563 | |||
7564 | /* We no longer need firmware; we have it. */ | ||
7565 | tp->fw_needed = NULL; | ||
7566 | return 0; | ||
7567 | } | ||
7568 | |||
7538 | static int tg3_open(struct net_device *dev) | 7569 | static int tg3_open(struct net_device *dev) |
7539 | { | 7570 | { |
7540 | struct tg3 *tp = netdev_priv(dev); | 7571 | struct tg3 *tp = netdev_priv(dev); |
7541 | int err; | 7572 | int err; |
7542 | 7573 | ||
7574 | if (tp->fw_needed) { | ||
7575 | err = tg3_request_firmware(tp); | ||
7576 | if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0) { | ||
7577 | if (err) | ||
7578 | return err; | ||
7579 | } else if (err) { | ||
7580 | printk(KERN_WARNING "%s: TSO capability disabled.\n", | ||
7581 | tp->dev->name); | ||
7582 | tp->tg3_flags2 &= ~TG3_FLG2_TSO_CAPABLE; | ||
7583 | } else if (!(tp->tg3_flags2 & TG3_FLG2_TSO_CAPABLE)) { | ||
7584 | printk(KERN_NOTICE "%s: TSO capability restored.\n", | ||
7585 | tp->dev->name); | ||
7586 | tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE; | ||
7587 | } | ||
7588 | } | ||
7589 | |||
7543 | netif_carrier_off(tp->dev); | 7590 | netif_carrier_off(tp->dev); |
7544 | 7591 | ||
7545 | err = tg3_set_power_state(tp, PCI_D0); | 7592 | err = tg3_set_power_state(tp, PCI_D0); |
@@ -12934,7 +12981,6 @@ static int __devinit tg3_init_one(struct pci_dev *pdev, | |||
12934 | struct net_device *dev; | 12981 | struct net_device *dev; |
12935 | struct tg3 *tp; | 12982 | struct tg3 *tp; |
12936 | int err, pm_cap; | 12983 | int err, pm_cap; |
12937 | const char *fw_name = NULL; | ||
12938 | char str[40]; | 12984 | char str[40]; |
12939 | u64 dma_mask, persist_dma_mask; | 12985 | u64 dma_mask, persist_dma_mask; |
12940 | 12986 | ||
@@ -13091,7 +13137,7 @@ static int __devinit tg3_init_one(struct pci_dev *pdev, | |||
13091 | tg3_init_bufmgr_config(tp); | 13137 | tg3_init_bufmgr_config(tp); |
13092 | 13138 | ||
13093 | if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0) | 13139 | if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0) |
13094 | fw_name = FIRMWARE_TG3; | 13140 | tp->fw_needed = FIRMWARE_TG3; |
13095 | 13141 | ||
13096 | if (tp->tg3_flags2 & TG3_FLG2_HW_TSO) { | 13142 | if (tp->tg3_flags2 & TG3_FLG2_HW_TSO) { |
13097 | tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE; | 13143 | tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE; |
@@ -13104,37 +13150,10 @@ static int __devinit tg3_init_one(struct pci_dev *pdev, | |||
13104 | tp->tg3_flags2 &= ~TG3_FLG2_TSO_CAPABLE; | 13150 | tp->tg3_flags2 &= ~TG3_FLG2_TSO_CAPABLE; |
13105 | } else { | 13151 | } else { |
13106 | tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE | TG3_FLG2_TSO_BUG; | 13152 | tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE | TG3_FLG2_TSO_BUG; |
13107 | } | ||
13108 | if (tp->tg3_flags2 & TG3_FLG2_TSO_CAPABLE) { | ||
13109 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705) | 13153 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705) |
13110 | fw_name = FIRMWARE_TG3TSO5; | 13154 | tp->fw_needed = FIRMWARE_TG3TSO5; |
13111 | else | 13155 | else |
13112 | fw_name = FIRMWARE_TG3TSO; | 13156 | tp->fw_needed = FIRMWARE_TG3TSO; |
13113 | } | ||
13114 | |||
13115 | if (fw_name) { | ||
13116 | const __be32 *fw_data; | ||
13117 | |||
13118 | err = request_firmware(&tp->fw, fw_name, &tp->pdev->dev); | ||
13119 | if (err) { | ||
13120 | printk(KERN_ERR "tg3: Failed to load firmware \"%s\"\n", | ||
13121 | fw_name); | ||
13122 | goto err_out_iounmap; | ||
13123 | } | ||
13124 | |||
13125 | fw_data = (void *)tp->fw->data; | ||
13126 | |||
13127 | /* Firmware blob starts with version numbers, followed by | ||
13128 | start address and _full_ length including BSS sections | ||
13129 | (which must be longer than the actual data, of course */ | ||
13130 | |||
13131 | tp->fw_len = be32_to_cpu(fw_data[2]); /* includes bss */ | ||
13132 | if (tp->fw_len < (tp->fw->size - 12)) { | ||
13133 | printk(KERN_ERR "tg3: bogus length %d in \"%s\"\n", | ||
13134 | tp->fw_len, fw_name); | ||
13135 | err = -EINVAL; | ||
13136 | goto err_out_fw; | ||
13137 | } | ||
13138 | } | 13157 | } |
13139 | 13158 | ||
13140 | /* TSO is on by default on chips that support hardware TSO. | 13159 | /* TSO is on by default on chips that support hardware TSO. |
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h index ae5da603c6af..508def3e077f 100644 --- a/drivers/net/tg3.h +++ b/drivers/net/tg3.h | |||
@@ -2764,6 +2764,7 @@ struct tg3 { | |||
2764 | struct ethtool_coalesce coal; | 2764 | struct ethtool_coalesce coal; |
2765 | 2765 | ||
2766 | /* firmware info */ | 2766 | /* firmware info */ |
2767 | const char *fw_needed; | ||
2767 | const struct firmware *fw; | 2768 | const struct firmware *fw; |
2768 | u32 fw_len; /* includes BSS */ | 2769 | u32 fw_len; /* includes BSS */ |
2769 | }; | 2770 | }; |
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c index c4918b86ed19..0d0fa91c0251 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c | |||
@@ -1297,6 +1297,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp) | |||
1297 | /* setup */ | 1297 | /* setup */ |
1298 | spin_lock_irq(&serial->serial_lock); | 1298 | spin_lock_irq(&serial->serial_lock); |
1299 | tty->driver_data = serial; | 1299 | tty->driver_data = serial; |
1300 | tty_kref_put(serial->tty); | ||
1300 | serial->tty = tty_kref_get(tty); | 1301 | serial->tty = tty_kref_get(tty); |
1301 | spin_unlock_irq(&serial->serial_lock); | 1302 | spin_unlock_irq(&serial->serial_lock); |
1302 | 1303 | ||
@@ -1792,8 +1793,8 @@ static int mux_device_request(struct hso_serial *serial, u8 type, u16 port, | |||
1792 | 1793 | ||
1793 | /* initialize */ | 1794 | /* initialize */ |
1794 | ctrl_req->wValue = 0; | 1795 | ctrl_req->wValue = 0; |
1795 | ctrl_req->wIndex = hso_port_to_mux(port); | 1796 | ctrl_req->wIndex = cpu_to_le16(hso_port_to_mux(port)); |
1796 | ctrl_req->wLength = size; | 1797 | ctrl_req->wLength = cpu_to_le16(size); |
1797 | 1798 | ||
1798 | if (type == USB_CDC_GET_ENCAPSULATED_RESPONSE) { | 1799 | if (type == USB_CDC_GET_ENCAPSULATED_RESPONSE) { |
1799 | /* Reading command */ | 1800 | /* Reading command */ |
@@ -2043,9 +2044,8 @@ static int put_rxbuf_data(struct urb *urb, struct hso_serial *serial) | |||
2043 | return -2; | 2044 | return -2; |
2044 | } | 2045 | } |
2045 | 2046 | ||
2046 | spin_lock(&serial->serial_lock); | 2047 | /* All callers to put_rxbuf_data hold serial_lock */ |
2047 | tty = tty_kref_get(serial->tty); | 2048 | tty = tty_kref_get(serial->tty); |
2048 | spin_unlock(&serial->serial_lock); | ||
2049 | 2049 | ||
2050 | /* Push data to tty */ | 2050 | /* Push data to tty */ |
2051 | if (tty) { | 2051 | if (tty) { |
@@ -2053,8 +2053,10 @@ static int put_rxbuf_data(struct urb *urb, struct hso_serial *serial) | |||
2053 | serial->curr_rx_urb_offset; | 2053 | serial->curr_rx_urb_offset; |
2054 | D1("data to push to tty"); | 2054 | D1("data to push to tty"); |
2055 | while (write_length_remaining) { | 2055 | while (write_length_remaining) { |
2056 | if (test_bit(TTY_THROTTLED, &tty->flags)) | 2056 | if (test_bit(TTY_THROTTLED, &tty->flags)) { |
2057 | tty_kref_put(tty); | ||
2057 | return -1; | 2058 | return -1; |
2059 | } | ||
2058 | curr_write_len = tty_insert_flip_string | 2060 | curr_write_len = tty_insert_flip_string |
2059 | (tty, urb->transfer_buffer + | 2061 | (tty, urb->transfer_buffer + |
2060 | serial->curr_rx_urb_offset, | 2062 | serial->curr_rx_urb_offset, |
diff --git a/drivers/net/usb/mcs7830.c b/drivers/net/usb/mcs7830.c index 5385d66b306e..ced8f36ebd01 100644 --- a/drivers/net/usb/mcs7830.c +++ b/drivers/net/usb/mcs7830.c | |||
@@ -94,10 +94,18 @@ static int mcs7830_get_reg(struct usbnet *dev, u16 index, u16 size, void *data) | |||
94 | { | 94 | { |
95 | struct usb_device *xdev = dev->udev; | 95 | struct usb_device *xdev = dev->udev; |
96 | int ret; | 96 | int ret; |
97 | void *buffer; | ||
98 | |||
99 | buffer = kmalloc(size, GFP_NOIO); | ||
100 | if (buffer == NULL) | ||
101 | return -ENOMEM; | ||
97 | 102 | ||
98 | ret = usb_control_msg(xdev, usb_rcvctrlpipe(xdev, 0), MCS7830_RD_BREQ, | 103 | ret = usb_control_msg(xdev, usb_rcvctrlpipe(xdev, 0), MCS7830_RD_BREQ, |
99 | MCS7830_RD_BMREQ, 0x0000, index, data, | 104 | MCS7830_RD_BMREQ, 0x0000, index, buffer, |
100 | size, MCS7830_CTRL_TIMEOUT); | 105 | size, MCS7830_CTRL_TIMEOUT); |
106 | memcpy(data, buffer, size); | ||
107 | kfree(buffer); | ||
108 | |||
101 | return ret; | 109 | return ret; |
102 | } | 110 | } |
103 | 111 | ||
@@ -105,10 +113,18 @@ static int mcs7830_set_reg(struct usbnet *dev, u16 index, u16 size, void *data) | |||
105 | { | 113 | { |
106 | struct usb_device *xdev = dev->udev; | 114 | struct usb_device *xdev = dev->udev; |
107 | int ret; | 115 | int ret; |
116 | void *buffer; | ||
117 | |||
118 | buffer = kmalloc(size, GFP_NOIO); | ||
119 | if (buffer == NULL) | ||
120 | return -ENOMEM; | ||
121 | |||
122 | memcpy(buffer, data, size); | ||
108 | 123 | ||
109 | ret = usb_control_msg(xdev, usb_sndctrlpipe(xdev, 0), MCS7830_WR_BREQ, | 124 | ret = usb_control_msg(xdev, usb_sndctrlpipe(xdev, 0), MCS7830_WR_BREQ, |
110 | MCS7830_WR_BMREQ, 0x0000, index, data, | 125 | MCS7830_WR_BMREQ, 0x0000, index, buffer, |
111 | size, MCS7830_CTRL_TIMEOUT); | 126 | size, MCS7830_CTRL_TIMEOUT); |
127 | kfree(buffer); | ||
112 | return ret; | 128 | return ret; |
113 | } | 129 | } |
114 | 130 | ||
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c index a75f91dc3153..c5691fdb7079 100644 --- a/drivers/net/via-velocity.c +++ b/drivers/net/via-velocity.c | |||
@@ -1302,7 +1302,7 @@ static void velocity_free_rd_ring(struct velocity_info *vptr) | |||
1302 | static int velocity_init_td_ring(struct velocity_info *vptr) | 1302 | static int velocity_init_td_ring(struct velocity_info *vptr) |
1303 | { | 1303 | { |
1304 | dma_addr_t curr; | 1304 | dma_addr_t curr; |
1305 | unsigned int j; | 1305 | int j; |
1306 | 1306 | ||
1307 | /* Init the TD ring entries */ | 1307 | /* Init the TD ring entries */ |
1308 | for (j = 0; j < vptr->tx.numq; j++) { | 1308 | for (j = 0; j < vptr->tx.numq; j++) { |
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 43f6523c40be..63ef2a8905fb 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/virtio.h> | 24 | #include <linux/virtio.h> |
25 | #include <linux/virtio_net.h> | 25 | #include <linux/virtio_net.h> |
26 | #include <linux/scatterlist.h> | 26 | #include <linux/scatterlist.h> |
27 | #include <linux/if_vlan.h> | ||
27 | 28 | ||
28 | static int napi_weight = 128; | 29 | static int napi_weight = 128; |
29 | module_param(napi_weight, int, 0444); | 30 | module_param(napi_weight, int, 0444); |
@@ -33,7 +34,7 @@ module_param(csum, bool, 0444); | |||
33 | module_param(gso, bool, 0444); | 34 | module_param(gso, bool, 0444); |
34 | 35 | ||
35 | /* FIXME: MTU in config. */ | 36 | /* FIXME: MTU in config. */ |
36 | #define MAX_PACKET_LEN (ETH_HLEN+ETH_DATA_LEN) | 37 | #define MAX_PACKET_LEN (ETH_HLEN + VLAN_HLEN + ETH_DATA_LEN) |
37 | #define GOOD_COPY_LEN 128 | 38 | #define GOOD_COPY_LEN 128 |
38 | 39 | ||
39 | struct virtnet_info | 40 | struct virtnet_info |
diff --git a/drivers/net/wan/ixp4xx_hss.c b/drivers/net/wan/ixp4xx_hss.c index 2dc241689d37..0dbd85b0162d 100644 --- a/drivers/net/wan/ixp4xx_hss.c +++ b/drivers/net/wan/ixp4xx_hss.c | |||
@@ -622,7 +622,7 @@ static void hss_hdlc_rx_irq(void *pdev) | |||
622 | printk(KERN_DEBUG "%s: hss_hdlc_rx_irq\n", dev->name); | 622 | printk(KERN_DEBUG "%s: hss_hdlc_rx_irq\n", dev->name); |
623 | #endif | 623 | #endif |
624 | qmgr_disable_irq(queue_ids[port->id].rx); | 624 | qmgr_disable_irq(queue_ids[port->id].rx); |
625 | netif_rx_schedule(dev, &port->napi); | 625 | netif_rx_schedule(&port->napi); |
626 | } | 626 | } |
627 | 627 | ||
628 | static int hss_hdlc_poll(struct napi_struct *napi, int budget) | 628 | static int hss_hdlc_poll(struct napi_struct *napi, int budget) |
@@ -651,7 +651,7 @@ static int hss_hdlc_poll(struct napi_struct *napi, int budget) | |||
651 | printk(KERN_DEBUG "%s: hss_hdlc_poll" | 651 | printk(KERN_DEBUG "%s: hss_hdlc_poll" |
652 | " netif_rx_complete\n", dev->name); | 652 | " netif_rx_complete\n", dev->name); |
653 | #endif | 653 | #endif |
654 | netif_rx_complete(dev, napi); | 654 | netif_rx_complete(napi); |
655 | qmgr_enable_irq(rxq); | 655 | qmgr_enable_irq(rxq); |
656 | if (!qmgr_stat_empty(rxq) && | 656 | if (!qmgr_stat_empty(rxq) && |
657 | netif_rx_reschedule(napi)) { | 657 | netif_rx_reschedule(napi)) { |
@@ -1069,7 +1069,7 @@ static int hss_hdlc_open(struct net_device *dev) | |||
1069 | hss_start_hdlc(port); | 1069 | hss_start_hdlc(port); |
1070 | 1070 | ||
1071 | /* we may already have RX data, enables IRQ */ | 1071 | /* we may already have RX data, enables IRQ */ |
1072 | netif_rx_schedule(dev, &port->napi); | 1072 | netif_rx_schedule(&port->napi); |
1073 | return 0; | 1073 | return 0; |
1074 | 1074 | ||
1075 | err_unlock: | 1075 | err_unlock: |
diff --git a/drivers/net/wimax/i2400m/control.c b/drivers/net/wimax/i2400m/control.c index d3d37fed6893..15d9f51b292c 100644 --- a/drivers/net/wimax/i2400m/control.c +++ b/drivers/net/wimax/i2400m/control.c | |||
@@ -609,7 +609,7 @@ void i2400m_msg_to_dev_cancel_wait(struct i2400m *i2400m, int code) | |||
609 | spin_lock_irqsave(&i2400m->rx_lock, flags); | 609 | spin_lock_irqsave(&i2400m->rx_lock, flags); |
610 | ack_skb = i2400m->ack_skb; | 610 | ack_skb = i2400m->ack_skb; |
611 | if (ack_skb && !IS_ERR(ack_skb)) | 611 | if (ack_skb && !IS_ERR(ack_skb)) |
612 | kfree(ack_skb); | 612 | kfree_skb(ack_skb); |
613 | i2400m->ack_skb = ERR_PTR(code); | 613 | i2400m->ack_skb = ERR_PTR(code); |
614 | spin_unlock_irqrestore(&i2400m->rx_lock, flags); | 614 | spin_unlock_irqrestore(&i2400m->rx_lock, flags); |
615 | } | 615 | } |
diff --git a/drivers/net/wimax/i2400m/usb-rx.c b/drivers/net/wimax/i2400m/usb-rx.c index 074cc1f89853..a314799967cf 100644 --- a/drivers/net/wimax/i2400m/usb-rx.c +++ b/drivers/net/wimax/i2400m/usb-rx.c | |||
@@ -184,6 +184,8 @@ void i2400mu_rx_size_maybe_shrink(struct i2400mu *i2400mu) | |||
184 | * NOTE: this function might realloc the skb (if it is too small), | 184 | * NOTE: this function might realloc the skb (if it is too small), |
185 | * so always update with the one returned. | 185 | * so always update with the one returned. |
186 | * ERR_PTR() is < 0 on error. | 186 | * ERR_PTR() is < 0 on error. |
187 | * Will return NULL if it cannot reallocate -- this can be | ||
188 | * considered a transient retryable error. | ||
187 | */ | 189 | */ |
188 | static | 190 | static |
189 | struct sk_buff *i2400mu_rx(struct i2400mu *i2400mu, struct sk_buff *rx_skb) | 191 | struct sk_buff *i2400mu_rx(struct i2400mu *i2400mu, struct sk_buff *rx_skb) |
@@ -243,8 +245,8 @@ retry: | |||
243 | if (printk_ratelimit()) | 245 | if (printk_ratelimit()) |
244 | dev_err(dev, "RX: Can't reallocate skb to %d; " | 246 | dev_err(dev, "RX: Can't reallocate skb to %d; " |
245 | "RX dropped\n", rx_size); | 247 | "RX dropped\n", rx_size); |
246 | kfree(rx_skb); | 248 | kfree_skb(rx_skb); |
247 | result = 0; | 249 | rx_skb = NULL; |
248 | goto out; /* drop it...*/ | 250 | goto out; /* drop it...*/ |
249 | } | 251 | } |
250 | kfree_skb(rx_skb); | 252 | kfree_skb(rx_skb); |
@@ -344,7 +346,8 @@ int i2400mu_rxd(void *_i2400mu) | |||
344 | if (IS_ERR(rx_skb)) | 346 | if (IS_ERR(rx_skb)) |
345 | goto out; | 347 | goto out; |
346 | atomic_dec(&i2400mu->rx_pending_count); | 348 | atomic_dec(&i2400mu->rx_pending_count); |
347 | if (rx_skb->len == 0) { /* some ignorable condition */ | 349 | if (rx_skb == NULL || rx_skb->len == 0) { |
350 | /* some "ignorable" condition */ | ||
348 | kfree_skb(rx_skb); | 351 | kfree_skb(rx_skb); |
349 | continue; | 352 | continue; |
350 | } | 353 | } |
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig index ea543fcf2687..e4f9f747de88 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig | |||
@@ -111,7 +111,7 @@ config WLAN_80211 | |||
111 | lets you choose drivers. | 111 | lets you choose drivers. |
112 | 112 | ||
113 | config PCMCIA_RAYCS | 113 | config PCMCIA_RAYCS |
114 | tristate "Aviator/Raytheon 2.4MHz wireless support" | 114 | tristate "Aviator/Raytheon 2.4GHz wireless support" |
115 | depends on PCMCIA && WLAN_80211 | 115 | depends on PCMCIA && WLAN_80211 |
116 | select WIRELESS_EXT | 116 | select WIRELESS_EXT |
117 | ---help--- | 117 | ---help--- |
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c index 4af2607deec0..8ef87356e083 100644 --- a/drivers/net/wireless/ath5k/base.c +++ b/drivers/net/wireless/ath5k/base.c | |||
@@ -2644,7 +2644,7 @@ ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
2644 | if (skb_headroom(skb) < padsize) { | 2644 | if (skb_headroom(skb) < padsize) { |
2645 | ATH5K_ERR(sc, "tx hdrlen not %%4: %d not enough" | 2645 | ATH5K_ERR(sc, "tx hdrlen not %%4: %d not enough" |
2646 | " headroom to pad %d\n", hdrlen, padsize); | 2646 | " headroom to pad %d\n", hdrlen, padsize); |
2647 | return -1; | 2647 | return NETDEV_TX_BUSY; |
2648 | } | 2648 | } |
2649 | skb_push(skb, padsize); | 2649 | skb_push(skb, padsize); |
2650 | memmove(skb->data, skb->data+padsize, hdrlen); | 2650 | memmove(skb->data, skb->data+padsize, hdrlen); |
@@ -2655,7 +2655,7 @@ ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
2655 | ATH5K_ERR(sc, "no further txbuf available, dropping packet\n"); | 2655 | ATH5K_ERR(sc, "no further txbuf available, dropping packet\n"); |
2656 | spin_unlock_irqrestore(&sc->txbuflock, flags); | 2656 | spin_unlock_irqrestore(&sc->txbuflock, flags); |
2657 | ieee80211_stop_queue(hw, skb_get_queue_mapping(skb)); | 2657 | ieee80211_stop_queue(hw, skb_get_queue_mapping(skb)); |
2658 | return -1; | 2658 | return NETDEV_TX_BUSY; |
2659 | } | 2659 | } |
2660 | bf = list_first_entry(&sc->txbuf, struct ath5k_buf, list); | 2660 | bf = list_first_entry(&sc->txbuf, struct ath5k_buf, list); |
2661 | list_del(&bf->list); | 2661 | list_del(&bf->list); |
@@ -2673,10 +2673,10 @@ ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
2673 | sc->txbuf_len++; | 2673 | sc->txbuf_len++; |
2674 | spin_unlock_irqrestore(&sc->txbuflock, flags); | 2674 | spin_unlock_irqrestore(&sc->txbuflock, flags); |
2675 | dev_kfree_skb_any(skb); | 2675 | dev_kfree_skb_any(skb); |
2676 | return 0; | 2676 | return NETDEV_TX_OK; |
2677 | } | 2677 | } |
2678 | 2678 | ||
2679 | return 0; | 2679 | return NETDEV_TX_OK; |
2680 | } | 2680 | } |
2681 | 2681 | ||
2682 | static int | 2682 | static int |
diff --git a/drivers/net/wireless/ath5k/pcu.c b/drivers/net/wireless/ath5k/pcu.c index 0cac05c6a9ce..75eb9f43c741 100644 --- a/drivers/net/wireless/ath5k/pcu.c +++ b/drivers/net/wireless/ath5k/pcu.c | |||
@@ -65,7 +65,7 @@ int ath5k_hw_set_opmode(struct ath5k_hw *ah) | |||
65 | if (ah->ah_version == AR5K_AR5210) | 65 | if (ah->ah_version == AR5K_AR5210) |
66 | pcu_reg |= AR5K_STA_ID1_NO_PSPOLL; | 66 | pcu_reg |= AR5K_STA_ID1_NO_PSPOLL; |
67 | else | 67 | else |
68 | AR5K_REG_DISABLE_BITS(ah, AR5K_CFG, AR5K_CFG_ADHOC); | 68 | AR5K_REG_ENABLE_BITS(ah, AR5K_CFG, AR5K_CFG_IBSS); |
69 | break; | 69 | break; |
70 | 70 | ||
71 | case NL80211_IFTYPE_AP: | 71 | case NL80211_IFTYPE_AP: |
@@ -75,7 +75,7 @@ int ath5k_hw_set_opmode(struct ath5k_hw *ah) | |||
75 | if (ah->ah_version == AR5K_AR5210) | 75 | if (ah->ah_version == AR5K_AR5210) |
76 | pcu_reg |= AR5K_STA_ID1_NO_PSPOLL; | 76 | pcu_reg |= AR5K_STA_ID1_NO_PSPOLL; |
77 | else | 77 | else |
78 | AR5K_REG_ENABLE_BITS(ah, AR5K_CFG, AR5K_CFG_ADHOC); | 78 | AR5K_REG_DISABLE_BITS(ah, AR5K_CFG, AR5K_CFG_IBSS); |
79 | break; | 79 | break; |
80 | 80 | ||
81 | case NL80211_IFTYPE_STATION: | 81 | case NL80211_IFTYPE_STATION: |
diff --git a/drivers/net/wireless/ath5k/reg.h b/drivers/net/wireless/ath5k/reg.h index 91aaeaf88199..9189ab13286c 100644 --- a/drivers/net/wireless/ath5k/reg.h +++ b/drivers/net/wireless/ath5k/reg.h | |||
@@ -73,7 +73,7 @@ | |||
73 | #define AR5K_CFG_SWRD 0x00000004 /* Byte-swap RX descriptor */ | 73 | #define AR5K_CFG_SWRD 0x00000004 /* Byte-swap RX descriptor */ |
74 | #define AR5K_CFG_SWRB 0x00000008 /* Byte-swap RX buffer */ | 74 | #define AR5K_CFG_SWRB 0x00000008 /* Byte-swap RX buffer */ |
75 | #define AR5K_CFG_SWRG 0x00000010 /* Byte-swap Register access */ | 75 | #define AR5K_CFG_SWRG 0x00000010 /* Byte-swap Register access */ |
76 | #define AR5K_CFG_ADHOC 0x00000020 /* AP/Adhoc indication [5211+] */ | 76 | #define AR5K_CFG_IBSS 0x00000020 /* 0-BSS, 1-IBSS [5211+] */ |
77 | #define AR5K_CFG_PHY_OK 0x00000100 /* [5211+] */ | 77 | #define AR5K_CFG_PHY_OK 0x00000100 /* [5211+] */ |
78 | #define AR5K_CFG_EEBS 0x00000200 /* EEPROM is busy */ | 78 | #define AR5K_CFG_EEBS 0x00000200 /* EEPROM is busy */ |
79 | #define AR5K_CFG_CLKGD 0x00000400 /* Clock gated (Disable dynamic clock) */ | 79 | #define AR5K_CFG_CLKGD 0x00000400 /* Clock gated (Disable dynamic clock) */ |
diff --git a/drivers/net/wireless/ath9k/Kconfig b/drivers/net/wireless/ath9k/Kconfig index c43bd321f97f..90a8dd873786 100644 --- a/drivers/net/wireless/ath9k/Kconfig +++ b/drivers/net/wireless/ath9k/Kconfig | |||
@@ -1,6 +1,7 @@ | |||
1 | config ATH9K | 1 | config ATH9K |
2 | tristate "Atheros 802.11n wireless cards support" | 2 | tristate "Atheros 802.11n wireless cards support" |
3 | depends on PCI && MAC80211 && WLAN_80211 | 3 | depends on PCI && MAC80211 && WLAN_80211 |
4 | depends on RFKILL || RFKILL=n | ||
4 | select MAC80211_LEDS | 5 | select MAC80211_LEDS |
5 | select LEDS_CLASS | 6 | select LEDS_CLASS |
6 | select NEW_LEDS | 7 | select NEW_LEDS |
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c index 191eec50dc75..727f067aca4f 100644 --- a/drivers/net/wireless/ath9k/main.c +++ b/drivers/net/wireless/ath9k/main.c | |||
@@ -2164,13 +2164,13 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed) | |||
2164 | conf->ht.channel_type); | 2164 | conf->ht.channel_type); |
2165 | } | 2165 | } |
2166 | 2166 | ||
2167 | ath_update_chainmask(sc, conf->ht.enabled); | ||
2168 | |||
2167 | if (ath_set_channel(sc, &sc->sc_ah->ah_channels[pos]) < 0) { | 2169 | if (ath_set_channel(sc, &sc->sc_ah->ah_channels[pos]) < 0) { |
2168 | DPRINTF(sc, ATH_DBG_FATAL, "Unable to set channel\n"); | 2170 | DPRINTF(sc, ATH_DBG_FATAL, "Unable to set channel\n"); |
2169 | mutex_unlock(&sc->mutex); | 2171 | mutex_unlock(&sc->mutex); |
2170 | return -EINVAL; | 2172 | return -EINVAL; |
2171 | } | 2173 | } |
2172 | |||
2173 | ath_update_chainmask(sc, conf->ht.enabled); | ||
2174 | } | 2174 | } |
2175 | 2175 | ||
2176 | if (changed & IEEE80211_CONF_CHANGE_POWER) | 2176 | if (changed & IEEE80211_CONF_CHANGE_POWER) |
diff --git a/drivers/net/wireless/ath9k/rc.c b/drivers/net/wireless/ath9k/rc.c index 04ab457a8faa..1b71b934bb5e 100644 --- a/drivers/net/wireless/ath9k/rc.c +++ b/drivers/net/wireless/ath9k/rc.c | |||
@@ -490,7 +490,7 @@ static inline int ath_rc_get_nextvalid_txrate(struct ath_rate_table *rate_table, | |||
490 | 490 | ||
491 | static int ath_rc_valid_phyrate(u32 phy, u32 capflag, int ignore_cw) | 491 | static int ath_rc_valid_phyrate(u32 phy, u32 capflag, int ignore_cw) |
492 | { | 492 | { |
493 | if (WLAN_RC_PHY_HT(phy) & !(capflag & WLAN_RC_HT_FLAG)) | 493 | if (WLAN_RC_PHY_HT(phy) && !(capflag & WLAN_RC_HT_FLAG)) |
494 | return 0; | 494 | return 0; |
495 | if (WLAN_RC_PHY_DS(phy) && !(capflag & WLAN_RC_DS_FLAG)) | 495 | if (WLAN_RC_PHY_DS(phy) && !(capflag & WLAN_RC_DS_FLAG)) |
496 | return 0; | 496 | return 0; |
diff --git a/drivers/net/wireless/ath9k/regd_common.h b/drivers/net/wireless/ath9k/regd_common.h index 9112c030b1e8..6df1b3b77c25 100644 --- a/drivers/net/wireless/ath9k/regd_common.h +++ b/drivers/net/wireless/ath9k/regd_common.h | |||
@@ -228,7 +228,7 @@ enum { | |||
228 | }; | 228 | }; |
229 | 229 | ||
230 | #define REG_DOMAIN_2GHZ_MASK (REQ_MASK & \ | 230 | #define REG_DOMAIN_2GHZ_MASK (REQ_MASK & \ |
231 | (!(ADHOC_NO_11A | DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB))) | 231 | (~(ADHOC_NO_11A | DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB))) |
232 | #define REG_DOMAIN_5GHZ_MASK REQ_MASK | 232 | #define REG_DOMAIN_5GHZ_MASK REQ_MASK |
233 | 233 | ||
234 | static struct reg_dmn_pair_mapping regDomainPairs[] = { | 234 | static struct reg_dmn_pair_mapping regDomainPairs[] = { |
diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c index 3bfc3b90f256..c92f0c6e4adc 100644 --- a/drivers/net/wireless/ath9k/xmit.c +++ b/drivers/net/wireless/ath9k/xmit.c | |||
@@ -126,15 +126,7 @@ static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb, | |||
126 | tx_info->flags |= IEEE80211_TX_STAT_ACK; | 126 | tx_info->flags |= IEEE80211_TX_STAT_ACK; |
127 | } | 127 | } |
128 | 128 | ||
129 | tx_info->status.rates[0].count = tx_status->retries; | 129 | tx_info->status.rates[0].count = tx_status->retries + 1; |
130 | if (tx_info->status.rates[0].flags & IEEE80211_TX_RC_MCS) { | ||
131 | /* Change idx from internal table index to MCS index */ | ||
132 | int idx = tx_info->status.rates[0].idx; | ||
133 | struct ath_rate_table *rate_table = sc->cur_rate_table; | ||
134 | if (idx >= 0 && idx < rate_table->rate_cnt) | ||
135 | tx_info->status.rates[0].idx = | ||
136 | rate_table->info[idx].ratecode & 0x7f; | ||
137 | } | ||
138 | 130 | ||
139 | hdrlen = ieee80211_get_hdrlen_from_skb(skb); | 131 | hdrlen = ieee80211_get_hdrlen_from_skb(skb); |
140 | padsize = hdrlen & 3; | 132 | padsize = hdrlen & 3; |
@@ -264,25 +256,22 @@ static void assign_aggr_tid_seqno(struct sk_buff *skb, | |||
264 | } | 256 | } |
265 | 257 | ||
266 | /* Get seqno */ | 258 | /* Get seqno */ |
267 | 259 | /* For HT capable stations, we save tidno for later use. | |
268 | if (ieee80211_is_data(fc) && !is_pae(skb)) { | 260 | * We also override seqno set by upper layer with the one |
269 | /* For HT capable stations, we save tidno for later use. | 261 | * in tx aggregation state. |
270 | * We also override seqno set by upper layer with the one | 262 | * |
271 | * in tx aggregation state. | 263 | * If fragmentation is on, the sequence number is |
272 | * | 264 | * not overridden, since it has been |
273 | * If fragmentation is on, the sequence number is | 265 | * incremented by the fragmentation routine. |
274 | * not overridden, since it has been | 266 | * |
275 | * incremented by the fragmentation routine. | 267 | * FIXME: check if the fragmentation threshold exceeds |
276 | * | 268 | * IEEE80211 max. |
277 | * FIXME: check if the fragmentation threshold exceeds | 269 | */ |
278 | * IEEE80211 max. | 270 | tid = ATH_AN_2_TID(an, bf->bf_tidno); |
279 | */ | 271 | hdr->seq_ctrl = cpu_to_le16(tid->seq_next << |
280 | tid = ATH_AN_2_TID(an, bf->bf_tidno); | 272 | IEEE80211_SEQ_SEQ_SHIFT); |
281 | hdr->seq_ctrl = cpu_to_le16(tid->seq_next << | 273 | bf->bf_seqno = tid->seq_next; |
282 | IEEE80211_SEQ_SEQ_SHIFT); | 274 | INCR(tid->seq_next, IEEE80211_SEQ_MAX); |
283 | bf->bf_seqno = tid->seq_next; | ||
284 | INCR(tid->seq_next, IEEE80211_SEQ_MAX); | ||
285 | } | ||
286 | } | 275 | } |
287 | 276 | ||
288 | static int setup_tx_flags(struct ath_softc *sc, struct sk_buff *skb, | 277 | static int setup_tx_flags(struct ath_softc *sc, struct sk_buff *skb, |
@@ -1718,11 +1707,10 @@ static int ath_tx_setup_buffer(struct ath_softc *sc, struct ath_buf *bf, | |||
1718 | 1707 | ||
1719 | /* Assign seqno, tidno */ | 1708 | /* Assign seqno, tidno */ |
1720 | 1709 | ||
1721 | if (bf_isht(bf) && (sc->sc_flags & SC_OP_TXAGGR)) | 1710 | if (ieee80211_is_data_qos(fc) && (sc->sc_flags & SC_OP_TXAGGR)) |
1722 | assign_aggr_tid_seqno(skb, bf); | 1711 | assign_aggr_tid_seqno(skb, bf); |
1723 | 1712 | ||
1724 | /* DMA setup */ | 1713 | /* DMA setup */ |
1725 | |||
1726 | bf->bf_mpdu = skb; | 1714 | bf->bf_mpdu = skb; |
1727 | 1715 | ||
1728 | bf->bf_dmacontext = pci_map_single(sc->pdev, skb->data, | 1716 | bf->bf_dmacontext = pci_map_single(sc->pdev, skb->data, |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 7b31a327b24a..c788bad10661 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -3261,7 +3261,7 @@ static int b43_switch_band(struct b43_wl *wl, struct ieee80211_channel *chan) | |||
3261 | struct b43_wldev *down_dev; | 3261 | struct b43_wldev *down_dev; |
3262 | struct b43_wldev *d; | 3262 | struct b43_wldev *d; |
3263 | int err; | 3263 | int err; |
3264 | bool gmode; | 3264 | bool uninitialized_var(gmode); |
3265 | int prev_status; | 3265 | int prev_status; |
3266 | 3266 | ||
3267 | /* Find a device and PHY which supports the band. */ | 3267 | /* Find a device and PHY which supports the band. */ |
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c index c1324e31d2f6..fb996c27a19b 100644 --- a/drivers/net/wireless/b43legacy/main.c +++ b/drivers/net/wireless/b43legacy/main.c | |||
@@ -2465,7 +2465,7 @@ static void b43legacy_put_phy_into_reset(struct b43legacy_wldev *dev) | |||
2465 | static int b43legacy_switch_phymode(struct b43legacy_wl *wl, | 2465 | static int b43legacy_switch_phymode(struct b43legacy_wl *wl, |
2466 | unsigned int new_mode) | 2466 | unsigned int new_mode) |
2467 | { | 2467 | { |
2468 | struct b43legacy_wldev *up_dev; | 2468 | struct b43legacy_wldev *uninitialized_var(up_dev); |
2469 | struct b43legacy_wldev *down_dev; | 2469 | struct b43legacy_wldev *down_dev; |
2470 | int err; | 2470 | int err; |
2471 | bool gmode = 0; | 2471 | bool gmode = 0; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c index 9b60a0c5de5f..21c841847d88 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c +++ b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c | |||
@@ -638,12 +638,16 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta, | |||
638 | s8 scale_action = 0; | 638 | s8 scale_action = 0; |
639 | unsigned long flags; | 639 | unsigned long flags; |
640 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; | 640 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; |
641 | u16 fc, rate_mask; | 641 | u16 fc; |
642 | u16 rate_mask = 0; | ||
642 | struct iwl3945_priv *priv = (struct iwl3945_priv *)priv_r; | 643 | struct iwl3945_priv *priv = (struct iwl3945_priv *)priv_r; |
643 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | 644 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); |
644 | 645 | ||
645 | IWL_DEBUG_RATE("enter\n"); | 646 | IWL_DEBUG_RATE("enter\n"); |
646 | 647 | ||
648 | if (sta) | ||
649 | rate_mask = sta->supp_rates[sband->band]; | ||
650 | |||
647 | /* Send management frames and broadcast/multicast data using lowest | 651 | /* Send management frames and broadcast/multicast data using lowest |
648 | * rate. */ | 652 | * rate. */ |
649 | fc = le16_to_cpu(hdr->frame_control); | 653 | fc = le16_to_cpu(hdr->frame_control); |
@@ -651,11 +655,15 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta, | |||
651 | is_multicast_ether_addr(hdr->addr1) || | 655 | is_multicast_ether_addr(hdr->addr1) || |
652 | !sta || !priv_sta) { | 656 | !sta || !priv_sta) { |
653 | IWL_DEBUG_RATE("leave: No STA priv data to update!\n"); | 657 | IWL_DEBUG_RATE("leave: No STA priv data to update!\n"); |
654 | info->control.rates[0].idx = rate_lowest_index(sband, sta); | 658 | if (!rate_mask) |
659 | info->control.rates[0].idx = | ||
660 | rate_lowest_index(sband, NULL); | ||
661 | else | ||
662 | info->control.rates[0].idx = | ||
663 | rate_lowest_index(sband, sta); | ||
655 | return; | 664 | return; |
656 | } | 665 | } |
657 | 666 | ||
658 | rate_mask = sta->supp_rates[sband->band]; | ||
659 | index = min(rs_sta->last_txrate_idx & 0xffff, IWL_RATE_COUNT - 1); | 667 | index = min(rs_sta->last_txrate_idx & 0xffff, IWL_RATE_COUNT - 1); |
660 | 668 | ||
661 | if (sband->band == IEEE80211_BAND_5GHZ) | 669 | if (sband->band == IEEE80211_BAND_5GHZ) |
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c index 8fdb34222c0a..45cfa1cf194a 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945.c +++ b/drivers/net/wireless/iwlwifi/iwl-3945.c | |||
@@ -2219,7 +2219,7 @@ int iwl3945_txpower_set_from_eeprom(struct iwl3945_priv *priv) | |||
2219 | /* set tx power value for all OFDM rates */ | 2219 | /* set tx power value for all OFDM rates */ |
2220 | for (rate_index = 0; rate_index < IWL_OFDM_RATES; | 2220 | for (rate_index = 0; rate_index < IWL_OFDM_RATES; |
2221 | rate_index++) { | 2221 | rate_index++) { |
2222 | s32 power_idx; | 2222 | s32 uninitialized_var(power_idx); |
2223 | int rc; | 2223 | int rc; |
2224 | 2224 | ||
2225 | /* use channel group's clip-power table, | 2225 | /* use channel group's clip-power table, |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c index f3f17929ca0b..27f50471aed8 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c | |||
@@ -944,7 +944,8 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband, | |||
944 | } | 944 | } |
945 | 945 | ||
946 | /* See if there's a better rate or modulation mode to try. */ | 946 | /* See if there's a better rate or modulation mode to try. */ |
947 | rs_rate_scale_perform(priv, hdr, sta, lq_sta); | 947 | if (sta && sta->supp_rates[sband->band]) |
948 | rs_rate_scale_perform(priv, hdr, sta, lq_sta); | ||
948 | out: | 949 | out: |
949 | return; | 950 | return; |
950 | } | 951 | } |
@@ -2101,14 +2102,23 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta, void *priv_sta, | |||
2101 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | 2102 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); |
2102 | struct iwl_lq_sta *lq_sta = priv_sta; | 2103 | struct iwl_lq_sta *lq_sta = priv_sta; |
2103 | int rate_idx; | 2104 | int rate_idx; |
2105 | u64 mask_bit = 0; | ||
2104 | 2106 | ||
2105 | IWL_DEBUG_RATE_LIMIT("rate scale calculate new rate for skb\n"); | 2107 | IWL_DEBUG_RATE_LIMIT("rate scale calculate new rate for skb\n"); |
2106 | 2108 | ||
2109 | if (sta) | ||
2110 | mask_bit = sta->supp_rates[sband->band]; | ||
2111 | |||
2107 | /* Send management frames and broadcast/multicast data using lowest | 2112 | /* Send management frames and broadcast/multicast data using lowest |
2108 | * rate. */ | 2113 | * rate. */ |
2109 | if (!ieee80211_is_data(hdr->frame_control) || | 2114 | if (!ieee80211_is_data(hdr->frame_control) || |
2110 | is_multicast_ether_addr(hdr->addr1) || !sta || !lq_sta) { | 2115 | is_multicast_ether_addr(hdr->addr1) || !sta || !lq_sta) { |
2111 | info->control.rates[0].idx = rate_lowest_index(sband, sta); | 2116 | if (!mask_bit) |
2117 | info->control.rates[0].idx = | ||
2118 | rate_lowest_index(sband, NULL); | ||
2119 | else | ||
2120 | info->control.rates[0].idx = | ||
2121 | rate_lowest_index(sband, sta); | ||
2112 | return; | 2122 | return; |
2113 | } | 2123 | } |
2114 | 2124 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 5da6b35cd26d..0dc8eed16404 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -2482,7 +2482,7 @@ static int iwl_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
2482 | dev_kfree_skb_any(skb); | 2482 | dev_kfree_skb_any(skb); |
2483 | 2483 | ||
2484 | IWL_DEBUG_MACDUMP("leave\n"); | 2484 | IWL_DEBUG_MACDUMP("leave\n"); |
2485 | return 0; | 2485 | return NETDEV_TX_OK; |
2486 | } | 2486 | } |
2487 | 2487 | ||
2488 | static int iwl_mac_add_interface(struct ieee80211_hw *hw, | 2488 | static int iwl_mac_add_interface(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h index 52966ffbef6e..ba997204c8d4 100644 --- a/drivers/net/wireless/iwlwifi/iwl-commands.h +++ b/drivers/net/wireless/iwlwifi/iwl-commands.h | |||
@@ -255,7 +255,7 @@ struct iwl_cmd_header { | |||
255 | * 0x3) 54 Mbps | 255 | * 0x3) 54 Mbps |
256 | * | 256 | * |
257 | * Legacy CCK rate format for bits 7:0 (bit 8 must be "0", bit 9 "1"): | 257 | * Legacy CCK rate format for bits 7:0 (bit 8 must be "0", bit 9 "1"): |
258 | * 3-0: 10) 1 Mbps | 258 | * 6-0: 10) 1 Mbps |
259 | * 20) 2 Mbps | 259 | * 20) 2 Mbps |
260 | * 55) 5.5 Mbps | 260 | * 55) 5.5 Mbps |
261 | * 110) 11 Mbps | 261 | * 110) 11 Mbps |
diff --git a/drivers/net/wireless/iwlwifi/iwl-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-hcmd.c index 01a2169cecec..4b35b30e493e 100644 --- a/drivers/net/wireless/iwlwifi/iwl-hcmd.c +++ b/drivers/net/wireless/iwlwifi/iwl-hcmd.c | |||
@@ -51,6 +51,7 @@ const char *get_cmd_string(u8 cmd) | |||
51 | IWL_CMD(REPLY_REMOVE_STA); | 51 | IWL_CMD(REPLY_REMOVE_STA); |
52 | IWL_CMD(REPLY_REMOVE_ALL_STA); | 52 | IWL_CMD(REPLY_REMOVE_ALL_STA); |
53 | IWL_CMD(REPLY_WEPKEY); | 53 | IWL_CMD(REPLY_WEPKEY); |
54 | IWL_CMD(REPLY_3945_RX); | ||
54 | IWL_CMD(REPLY_TX); | 55 | IWL_CMD(REPLY_TX); |
55 | IWL_CMD(REPLY_RATE_SCALE); | 56 | IWL_CMD(REPLY_RATE_SCALE); |
56 | IWL_CMD(REPLY_LEDS_CMD); | 57 | IWL_CMD(REPLY_LEDS_CMD); |
@@ -223,7 +224,7 @@ int iwl_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd) | |||
223 | IWL_ERROR("Error: Response NULL in '%s'\n", | 224 | IWL_ERROR("Error: Response NULL in '%s'\n", |
224 | get_cmd_string(cmd->id)); | 225 | get_cmd_string(cmd->id)); |
225 | ret = -EIO; | 226 | ret = -EIO; |
226 | goto out; | 227 | goto cancel; |
227 | } | 228 | } |
228 | 229 | ||
229 | ret = 0; | 230 | ret = 0; |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index d64580805d6e..95d01984c80e 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -745,7 +745,7 @@ static int iwl3945_send_cmd_sync(struct iwl3945_priv *priv, struct iwl3945_host_ | |||
745 | IWL_ERROR("Error: Response NULL in '%s'\n", | 745 | IWL_ERROR("Error: Response NULL in '%s'\n", |
746 | get_cmd_string(cmd->id)); | 746 | get_cmd_string(cmd->id)); |
747 | ret = -EIO; | 747 | ret = -EIO; |
748 | goto out; | 748 | goto cancel; |
749 | } | 749 | } |
750 | 750 | ||
751 | ret = 0; | 751 | ret = 0; |
@@ -6538,7 +6538,7 @@ static int iwl3945_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
6538 | dev_kfree_skb_any(skb); | 6538 | dev_kfree_skb_any(skb); |
6539 | 6539 | ||
6540 | IWL_DEBUG_MAC80211("leave\n"); | 6540 | IWL_DEBUG_MAC80211("leave\n"); |
6541 | return 0; | 6541 | return NETDEV_TX_OK; |
6542 | } | 6542 | } |
6543 | 6543 | ||
6544 | static int iwl3945_mac_add_interface(struct ieee80211_hw *hw, | 6544 | static int iwl3945_mac_add_interface(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index e173b1b46c23..f6a79a653b7b 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h | |||
@@ -32,7 +32,7 @@ struct txpd { | |||
32 | u8 pktdelay_2ms; | 32 | u8 pktdelay_2ms; |
33 | /* reserved */ | 33 | /* reserved */ |
34 | u8 reserved1; | 34 | u8 reserved1; |
35 | }; | 35 | } __attribute__ ((packed)); |
36 | 36 | ||
37 | /* RxPD Descriptor */ | 37 | /* RxPD Descriptor */ |
38 | struct rxpd { | 38 | struct rxpd { |
@@ -63,7 +63,7 @@ struct rxpd { | |||
63 | /* Pkt Priority */ | 63 | /* Pkt Priority */ |
64 | u8 priority; | 64 | u8 priority; |
65 | u8 reserved[3]; | 65 | u8 reserved[3]; |
66 | }; | 66 | } __attribute__ ((packed)); |
67 | 67 | ||
68 | struct cmd_header { | 68 | struct cmd_header { |
69 | __le16 command; | 69 | __le16 command; |
@@ -97,7 +97,7 @@ struct enc_key { | |||
97 | struct lbs_offset_value { | 97 | struct lbs_offset_value { |
98 | u32 offset; | 98 | u32 offset; |
99 | u32 value; | 99 | u32 value; |
100 | }; | 100 | } __attribute__ ((packed)); |
101 | 101 | ||
102 | /* Define general data structure */ | 102 | /* Define general data structure */ |
103 | /* cmd_DS_GEN */ | 103 | /* cmd_DS_GEN */ |
@@ -107,7 +107,7 @@ struct cmd_ds_gen { | |||
107 | __le16 seqnum; | 107 | __le16 seqnum; |
108 | __le16 result; | 108 | __le16 result; |
109 | void *cmdresp[0]; | 109 | void *cmdresp[0]; |
110 | }; | 110 | } __attribute__ ((packed)); |
111 | 111 | ||
112 | #define S_DS_GEN sizeof(struct cmd_ds_gen) | 112 | #define S_DS_GEN sizeof(struct cmd_ds_gen) |
113 | 113 | ||
@@ -163,7 +163,7 @@ struct cmd_ds_802_11_subscribe_event { | |||
163 | * bump this up a bit. | 163 | * bump this up a bit. |
164 | */ | 164 | */ |
165 | uint8_t tlv[128]; | 165 | uint8_t tlv[128]; |
166 | }; | 166 | } __attribute__ ((packed)); |
167 | 167 | ||
168 | /* | 168 | /* |
169 | * This scan handle Country Information IE(802.11d compliant) | 169 | * This scan handle Country Information IE(802.11d compliant) |
@@ -180,7 +180,7 @@ struct cmd_ds_802_11_scan { | |||
180 | mrvlietypes_chanlistparamset_t ChanListParamSet; | 180 | mrvlietypes_chanlistparamset_t ChanListParamSet; |
181 | mrvlietypes_ratesparamset_t OpRateSet; | 181 | mrvlietypes_ratesparamset_t OpRateSet; |
182 | #endif | 182 | #endif |
183 | }; | 183 | } __attribute__ ((packed)); |
184 | 184 | ||
185 | struct cmd_ds_802_11_scan_rsp { | 185 | struct cmd_ds_802_11_scan_rsp { |
186 | struct cmd_header hdr; | 186 | struct cmd_header hdr; |
@@ -188,7 +188,7 @@ struct cmd_ds_802_11_scan_rsp { | |||
188 | __le16 bssdescriptsize; | 188 | __le16 bssdescriptsize; |
189 | uint8_t nr_sets; | 189 | uint8_t nr_sets; |
190 | uint8_t bssdesc_and_tlvbuffer[0]; | 190 | uint8_t bssdesc_and_tlvbuffer[0]; |
191 | }; | 191 | } __attribute__ ((packed)); |
192 | 192 | ||
193 | struct cmd_ds_802_11_get_log { | 193 | struct cmd_ds_802_11_get_log { |
194 | struct cmd_header hdr; | 194 | struct cmd_header hdr; |
@@ -206,33 +206,33 @@ struct cmd_ds_802_11_get_log { | |||
206 | __le32 fcserror; | 206 | __le32 fcserror; |
207 | __le32 txframe; | 207 | __le32 txframe; |
208 | __le32 wepundecryptable; | 208 | __le32 wepundecryptable; |
209 | }; | 209 | } __attribute__ ((packed)); |
210 | 210 | ||
211 | struct cmd_ds_mac_control { | 211 | struct cmd_ds_mac_control { |
212 | struct cmd_header hdr; | 212 | struct cmd_header hdr; |
213 | __le16 action; | 213 | __le16 action; |
214 | u16 reserved; | 214 | u16 reserved; |
215 | }; | 215 | } __attribute__ ((packed)); |
216 | 216 | ||
217 | struct cmd_ds_mac_multicast_adr { | 217 | struct cmd_ds_mac_multicast_adr { |
218 | struct cmd_header hdr; | 218 | struct cmd_header hdr; |
219 | __le16 action; | 219 | __le16 action; |
220 | __le16 nr_of_adrs; | 220 | __le16 nr_of_adrs; |
221 | u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE]; | 221 | u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE]; |
222 | }; | 222 | } __attribute__ ((packed)); |
223 | 223 | ||
224 | struct cmd_ds_802_11_authenticate { | 224 | struct cmd_ds_802_11_authenticate { |
225 | u8 macaddr[ETH_ALEN]; | 225 | u8 macaddr[ETH_ALEN]; |
226 | u8 authtype; | 226 | u8 authtype; |
227 | u8 reserved[10]; | 227 | u8 reserved[10]; |
228 | }; | 228 | } __attribute__ ((packed)); |
229 | 229 | ||
230 | struct cmd_ds_802_11_deauthenticate { | 230 | struct cmd_ds_802_11_deauthenticate { |
231 | struct cmd_header hdr; | 231 | struct cmd_header hdr; |
232 | 232 | ||
233 | u8 macaddr[ETH_ALEN]; | 233 | u8 macaddr[ETH_ALEN]; |
234 | __le16 reasoncode; | 234 | __le16 reasoncode; |
235 | }; | 235 | } __attribute__ ((packed)); |
236 | 236 | ||
237 | struct cmd_ds_802_11_associate { | 237 | struct cmd_ds_802_11_associate { |
238 | u8 peerstaaddr[6]; | 238 | u8 peerstaaddr[6]; |
@@ -251,7 +251,7 @@ struct cmd_ds_802_11_associate { | |||
251 | 251 | ||
252 | struct cmd_ds_802_11_associate_rsp { | 252 | struct cmd_ds_802_11_associate_rsp { |
253 | struct ieeetypes_assocrsp assocRsp; | 253 | struct ieeetypes_assocrsp assocRsp; |
254 | }; | 254 | } __attribute__ ((packed)); |
255 | 255 | ||
256 | struct cmd_ds_802_11_set_wep { | 256 | struct cmd_ds_802_11_set_wep { |
257 | struct cmd_header hdr; | 257 | struct cmd_header hdr; |
@@ -265,7 +265,7 @@ struct cmd_ds_802_11_set_wep { | |||
265 | /* 40, 128bit or TXWEP */ | 265 | /* 40, 128bit or TXWEP */ |
266 | uint8_t keytype[4]; | 266 | uint8_t keytype[4]; |
267 | uint8_t keymaterial[4][16]; | 267 | uint8_t keymaterial[4][16]; |
268 | }; | 268 | } __attribute__ ((packed)); |
269 | 269 | ||
270 | struct cmd_ds_802_3_get_stat { | 270 | struct cmd_ds_802_3_get_stat { |
271 | __le32 xmitok; | 271 | __le32 xmitok; |
@@ -274,7 +274,7 @@ struct cmd_ds_802_3_get_stat { | |||
274 | __le32 rcverror; | 274 | __le32 rcverror; |
275 | __le32 rcvnobuffer; | 275 | __le32 rcvnobuffer; |
276 | __le32 rcvcrcerror; | 276 | __le32 rcvcrcerror; |
277 | }; | 277 | } __attribute__ ((packed)); |
278 | 278 | ||
279 | struct cmd_ds_802_11_get_stat { | 279 | struct cmd_ds_802_11_get_stat { |
280 | __le32 txfragmentcnt; | 280 | __le32 txfragmentcnt; |
@@ -294,7 +294,7 @@ struct cmd_ds_802_11_get_stat { | |||
294 | __le32 txbeacon; | 294 | __le32 txbeacon; |
295 | __le32 rxbeacon; | 295 | __le32 rxbeacon; |
296 | __le32 wepundecryptable; | 296 | __le32 wepundecryptable; |
297 | }; | 297 | } __attribute__ ((packed)); |
298 | 298 | ||
299 | struct cmd_ds_802_11_snmp_mib { | 299 | struct cmd_ds_802_11_snmp_mib { |
300 | struct cmd_header hdr; | 300 | struct cmd_header hdr; |
@@ -303,58 +303,58 @@ struct cmd_ds_802_11_snmp_mib { | |||
303 | __le16 oid; | 303 | __le16 oid; |
304 | __le16 bufsize; | 304 | __le16 bufsize; |
305 | u8 value[128]; | 305 | u8 value[128]; |
306 | }; | 306 | } __attribute__ ((packed)); |
307 | 307 | ||
308 | struct cmd_ds_mac_reg_map { | 308 | struct cmd_ds_mac_reg_map { |
309 | __le16 buffersize; | 309 | __le16 buffersize; |
310 | u8 regmap[128]; | 310 | u8 regmap[128]; |
311 | __le16 reserved; | 311 | __le16 reserved; |
312 | }; | 312 | } __attribute__ ((packed)); |
313 | 313 | ||
314 | struct cmd_ds_bbp_reg_map { | 314 | struct cmd_ds_bbp_reg_map { |
315 | __le16 buffersize; | 315 | __le16 buffersize; |
316 | u8 regmap[128]; | 316 | u8 regmap[128]; |
317 | __le16 reserved; | 317 | __le16 reserved; |
318 | }; | 318 | } __attribute__ ((packed)); |
319 | 319 | ||
320 | struct cmd_ds_rf_reg_map { | 320 | struct cmd_ds_rf_reg_map { |
321 | __le16 buffersize; | 321 | __le16 buffersize; |
322 | u8 regmap[64]; | 322 | u8 regmap[64]; |
323 | __le16 reserved; | 323 | __le16 reserved; |
324 | }; | 324 | } __attribute__ ((packed)); |
325 | 325 | ||
326 | struct cmd_ds_mac_reg_access { | 326 | struct cmd_ds_mac_reg_access { |
327 | __le16 action; | 327 | __le16 action; |
328 | __le16 offset; | 328 | __le16 offset; |
329 | __le32 value; | 329 | __le32 value; |
330 | }; | 330 | } __attribute__ ((packed)); |
331 | 331 | ||
332 | struct cmd_ds_bbp_reg_access { | 332 | struct cmd_ds_bbp_reg_access { |
333 | __le16 action; | 333 | __le16 action; |
334 | __le16 offset; | 334 | __le16 offset; |
335 | u8 value; | 335 | u8 value; |
336 | u8 reserved[3]; | 336 | u8 reserved[3]; |
337 | }; | 337 | } __attribute__ ((packed)); |
338 | 338 | ||
339 | struct cmd_ds_rf_reg_access { | 339 | struct cmd_ds_rf_reg_access { |
340 | __le16 action; | 340 | __le16 action; |
341 | __le16 offset; | 341 | __le16 offset; |
342 | u8 value; | 342 | u8 value; |
343 | u8 reserved[3]; | 343 | u8 reserved[3]; |
344 | }; | 344 | } __attribute__ ((packed)); |
345 | 345 | ||
346 | struct cmd_ds_802_11_radio_control { | 346 | struct cmd_ds_802_11_radio_control { |
347 | struct cmd_header hdr; | 347 | struct cmd_header hdr; |
348 | 348 | ||
349 | __le16 action; | 349 | __le16 action; |
350 | __le16 control; | 350 | __le16 control; |
351 | }; | 351 | } __attribute__ ((packed)); |
352 | 352 | ||
353 | struct cmd_ds_802_11_beacon_control { | 353 | struct cmd_ds_802_11_beacon_control { |
354 | __le16 action; | 354 | __le16 action; |
355 | __le16 beacon_enable; | 355 | __le16 beacon_enable; |
356 | __le16 beacon_period; | 356 | __le16 beacon_period; |
357 | }; | 357 | } __attribute__ ((packed)); |
358 | 358 | ||
359 | struct cmd_ds_802_11_sleep_params { | 359 | struct cmd_ds_802_11_sleep_params { |
360 | struct cmd_header hdr; | 360 | struct cmd_header hdr; |
@@ -379,7 +379,7 @@ struct cmd_ds_802_11_sleep_params { | |||
379 | 379 | ||
380 | /* reserved field, should be set to zero */ | 380 | /* reserved field, should be set to zero */ |
381 | __le16 reserved; | 381 | __le16 reserved; |
382 | }; | 382 | } __attribute__ ((packed)); |
383 | 383 | ||
384 | struct cmd_ds_802_11_inactivity_timeout { | 384 | struct cmd_ds_802_11_inactivity_timeout { |
385 | struct cmd_header hdr; | 385 | struct cmd_header hdr; |
@@ -389,7 +389,7 @@ struct cmd_ds_802_11_inactivity_timeout { | |||
389 | 389 | ||
390 | /* Inactivity timeout in msec */ | 390 | /* Inactivity timeout in msec */ |
391 | __le16 timeout; | 391 | __le16 timeout; |
392 | }; | 392 | } __attribute__ ((packed)); |
393 | 393 | ||
394 | struct cmd_ds_802_11_rf_channel { | 394 | struct cmd_ds_802_11_rf_channel { |
395 | struct cmd_header hdr; | 395 | struct cmd_header hdr; |
@@ -399,7 +399,7 @@ struct cmd_ds_802_11_rf_channel { | |||
399 | __le16 rftype; /* unused */ | 399 | __le16 rftype; /* unused */ |
400 | __le16 reserved; /* unused */ | 400 | __le16 reserved; /* unused */ |
401 | u8 channellist[32]; /* unused */ | 401 | u8 channellist[32]; /* unused */ |
402 | }; | 402 | } __attribute__ ((packed)); |
403 | 403 | ||
404 | struct cmd_ds_802_11_rssi { | 404 | struct cmd_ds_802_11_rssi { |
405 | /* weighting factor */ | 405 | /* weighting factor */ |
@@ -408,21 +408,21 @@ struct cmd_ds_802_11_rssi { | |||
408 | __le16 reserved_0; | 408 | __le16 reserved_0; |
409 | __le16 reserved_1; | 409 | __le16 reserved_1; |
410 | __le16 reserved_2; | 410 | __le16 reserved_2; |
411 | }; | 411 | } __attribute__ ((packed)); |
412 | 412 | ||
413 | struct cmd_ds_802_11_rssi_rsp { | 413 | struct cmd_ds_802_11_rssi_rsp { |
414 | __le16 SNR; | 414 | __le16 SNR; |
415 | __le16 noisefloor; | 415 | __le16 noisefloor; |
416 | __le16 avgSNR; | 416 | __le16 avgSNR; |
417 | __le16 avgnoisefloor; | 417 | __le16 avgnoisefloor; |
418 | }; | 418 | } __attribute__ ((packed)); |
419 | 419 | ||
420 | struct cmd_ds_802_11_mac_address { | 420 | struct cmd_ds_802_11_mac_address { |
421 | struct cmd_header hdr; | 421 | struct cmd_header hdr; |
422 | 422 | ||
423 | __le16 action; | 423 | __le16 action; |
424 | u8 macadd[ETH_ALEN]; | 424 | u8 macadd[ETH_ALEN]; |
425 | }; | 425 | } __attribute__ ((packed)); |
426 | 426 | ||
427 | struct cmd_ds_802_11_rf_tx_power { | 427 | struct cmd_ds_802_11_rf_tx_power { |
428 | struct cmd_header hdr; | 428 | struct cmd_header hdr; |
@@ -431,7 +431,7 @@ struct cmd_ds_802_11_rf_tx_power { | |||
431 | __le16 curlevel; | 431 | __le16 curlevel; |
432 | s8 maxlevel; | 432 | s8 maxlevel; |
433 | s8 minlevel; | 433 | s8 minlevel; |
434 | }; | 434 | } __attribute__ ((packed)); |
435 | 435 | ||
436 | struct cmd_ds_802_11_rf_antenna { | 436 | struct cmd_ds_802_11_rf_antenna { |
437 | __le16 action; | 437 | __le16 action; |
@@ -439,33 +439,33 @@ struct cmd_ds_802_11_rf_antenna { | |||
439 | /* Number of antennas or 0xffff(diversity) */ | 439 | /* Number of antennas or 0xffff(diversity) */ |
440 | __le16 antennamode; | 440 | __le16 antennamode; |
441 | 441 | ||
442 | }; | 442 | } __attribute__ ((packed)); |
443 | 443 | ||
444 | struct cmd_ds_802_11_monitor_mode { | 444 | struct cmd_ds_802_11_monitor_mode { |
445 | __le16 action; | 445 | __le16 action; |
446 | __le16 mode; | 446 | __le16 mode; |
447 | }; | 447 | } __attribute__ ((packed)); |
448 | 448 | ||
449 | struct cmd_ds_set_boot2_ver { | 449 | struct cmd_ds_set_boot2_ver { |
450 | struct cmd_header hdr; | 450 | struct cmd_header hdr; |
451 | 451 | ||
452 | __le16 action; | 452 | __le16 action; |
453 | __le16 version; | 453 | __le16 version; |
454 | }; | 454 | } __attribute__ ((packed)); |
455 | 455 | ||
456 | struct cmd_ds_802_11_fw_wake_method { | 456 | struct cmd_ds_802_11_fw_wake_method { |
457 | struct cmd_header hdr; | 457 | struct cmd_header hdr; |
458 | 458 | ||
459 | __le16 action; | 459 | __le16 action; |
460 | __le16 method; | 460 | __le16 method; |
461 | }; | 461 | } __attribute__ ((packed)); |
462 | 462 | ||
463 | struct cmd_ds_802_11_sleep_period { | 463 | struct cmd_ds_802_11_sleep_period { |
464 | struct cmd_header hdr; | 464 | struct cmd_header hdr; |
465 | 465 | ||
466 | __le16 action; | 466 | __le16 action; |
467 | __le16 period; | 467 | __le16 period; |
468 | }; | 468 | } __attribute__ ((packed)); |
469 | 469 | ||
470 | struct cmd_ds_802_11_ps_mode { | 470 | struct cmd_ds_802_11_ps_mode { |
471 | __le16 action; | 471 | __le16 action; |
@@ -473,7 +473,7 @@ struct cmd_ds_802_11_ps_mode { | |||
473 | __le16 multipledtim; | 473 | __le16 multipledtim; |
474 | __le16 reserved; | 474 | __le16 reserved; |
475 | __le16 locallisteninterval; | 475 | __le16 locallisteninterval; |
476 | }; | 476 | } __attribute__ ((packed)); |
477 | 477 | ||
478 | struct cmd_confirm_sleep { | 478 | struct cmd_confirm_sleep { |
479 | struct cmd_header hdr; | 479 | struct cmd_header hdr; |
@@ -483,7 +483,7 @@ struct cmd_confirm_sleep { | |||
483 | __le16 multipledtim; | 483 | __le16 multipledtim; |
484 | __le16 reserved; | 484 | __le16 reserved; |
485 | __le16 locallisteninterval; | 485 | __le16 locallisteninterval; |
486 | }; | 486 | } __attribute__ ((packed)); |
487 | 487 | ||
488 | struct cmd_ds_802_11_data_rate { | 488 | struct cmd_ds_802_11_data_rate { |
489 | struct cmd_header hdr; | 489 | struct cmd_header hdr; |
@@ -491,14 +491,14 @@ struct cmd_ds_802_11_data_rate { | |||
491 | __le16 action; | 491 | __le16 action; |
492 | __le16 reserved; | 492 | __le16 reserved; |
493 | u8 rates[MAX_RATES]; | 493 | u8 rates[MAX_RATES]; |
494 | }; | 494 | } __attribute__ ((packed)); |
495 | 495 | ||
496 | struct cmd_ds_802_11_rate_adapt_rateset { | 496 | struct cmd_ds_802_11_rate_adapt_rateset { |
497 | struct cmd_header hdr; | 497 | struct cmd_header hdr; |
498 | __le16 action; | 498 | __le16 action; |
499 | __le16 enablehwauto; | 499 | __le16 enablehwauto; |
500 | __le16 bitmap; | 500 | __le16 bitmap; |
501 | }; | 501 | } __attribute__ ((packed)); |
502 | 502 | ||
503 | struct cmd_ds_802_11_ad_hoc_start { | 503 | struct cmd_ds_802_11_ad_hoc_start { |
504 | struct cmd_header hdr; | 504 | struct cmd_header hdr; |
@@ -520,7 +520,7 @@ struct cmd_ds_802_11_ad_hoc_result { | |||
520 | 520 | ||
521 | u8 pad[3]; | 521 | u8 pad[3]; |
522 | u8 bssid[ETH_ALEN]; | 522 | u8 bssid[ETH_ALEN]; |
523 | }; | 523 | } __attribute__ ((packed)); |
524 | 524 | ||
525 | struct adhoc_bssdesc { | 525 | struct adhoc_bssdesc { |
526 | u8 bssid[ETH_ALEN]; | 526 | u8 bssid[ETH_ALEN]; |
@@ -578,7 +578,7 @@ struct MrvlIEtype_keyParamSet { | |||
578 | 578 | ||
579 | /* key material of size keylen */ | 579 | /* key material of size keylen */ |
580 | u8 key[32]; | 580 | u8 key[32]; |
581 | }; | 581 | } __attribute__ ((packed)); |
582 | 582 | ||
583 | #define MAX_WOL_RULES 16 | 583 | #define MAX_WOL_RULES 16 |
584 | 584 | ||
@@ -590,7 +590,7 @@ struct host_wol_rule { | |||
590 | __le16 reserve; | 590 | __le16 reserve; |
591 | __be32 sig_mask; | 591 | __be32 sig_mask; |
592 | __be32 signature; | 592 | __be32 signature; |
593 | }; | 593 | } __attribute__ ((packed)); |
594 | 594 | ||
595 | struct wol_config { | 595 | struct wol_config { |
596 | uint8_t action; | 596 | uint8_t action; |
@@ -598,8 +598,7 @@ struct wol_config { | |||
598 | uint8_t no_rules_in_cmd; | 598 | uint8_t no_rules_in_cmd; |
599 | uint8_t result; | 599 | uint8_t result; |
600 | struct host_wol_rule rule[MAX_WOL_RULES]; | 600 | struct host_wol_rule rule[MAX_WOL_RULES]; |
601 | }; | 601 | } __attribute__ ((packed)); |
602 | |||
603 | 602 | ||
604 | struct cmd_ds_host_sleep { | 603 | struct cmd_ds_host_sleep { |
605 | struct cmd_header hdr; | 604 | struct cmd_header hdr; |
diff --git a/drivers/net/wireless/libertas_tf/main.c b/drivers/net/wireless/libertas_tf/main.c index d1fc305de5fe..e7289e2e7f16 100644 --- a/drivers/net/wireless/libertas_tf/main.c +++ b/drivers/net/wireless/libertas_tf/main.c | |||
@@ -206,7 +206,7 @@ static int lbtf_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
206 | * there are no buffered multicast frames to send | 206 | * there are no buffered multicast frames to send |
207 | */ | 207 | */ |
208 | ieee80211_stop_queues(priv->hw); | 208 | ieee80211_stop_queues(priv->hw); |
209 | return 0; | 209 | return NETDEV_TX_OK; |
210 | } | 210 | } |
211 | 211 | ||
212 | static void lbtf_tx_work(struct work_struct *work) | 212 | static void lbtf_tx_work(struct work_struct *work) |
diff --git a/drivers/net/wireless/orinoco/orinoco.c b/drivers/net/wireless/orinoco/orinoco.c index bc84e2792f8a..45a04faa7818 100644 --- a/drivers/net/wireless/orinoco/orinoco.c +++ b/drivers/net/wireless/orinoco/orinoco.c | |||
@@ -1610,6 +1610,16 @@ static void orinoco_rx_isr_tasklet(unsigned long data) | |||
1610 | struct orinoco_rx_data *rx_data, *temp; | 1610 | struct orinoco_rx_data *rx_data, *temp; |
1611 | struct hermes_rx_descriptor *desc; | 1611 | struct hermes_rx_descriptor *desc; |
1612 | struct sk_buff *skb; | 1612 | struct sk_buff *skb; |
1613 | unsigned long flags; | ||
1614 | |||
1615 | /* orinoco_rx requires the driver lock, and we also need to | ||
1616 | * protect priv->rx_list, so just hold the lock over the | ||
1617 | * lot. | ||
1618 | * | ||
1619 | * If orinoco_lock fails, we've unplugged the card. In this | ||
1620 | * case just abort. */ | ||
1621 | if (orinoco_lock(priv, &flags) != 0) | ||
1622 | return; | ||
1613 | 1623 | ||
1614 | /* extract desc and skb from queue */ | 1624 | /* extract desc and skb from queue */ |
1615 | list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) { | 1625 | list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) { |
@@ -1622,6 +1632,8 @@ static void orinoco_rx_isr_tasklet(unsigned long data) | |||
1622 | 1632 | ||
1623 | kfree(desc); | 1633 | kfree(desc); |
1624 | } | 1634 | } |
1635 | |||
1636 | orinoco_unlock(priv, &flags); | ||
1625 | } | 1637 | } |
1626 | 1638 | ||
1627 | /********************************************************************/ | 1639 | /********************************************************************/ |
@@ -1661,7 +1673,7 @@ static void print_linkstatus(struct net_device *dev, u16 status) | |||
1661 | s = "UNKNOWN"; | 1673 | s = "UNKNOWN"; |
1662 | } | 1674 | } |
1663 | 1675 | ||
1664 | printk(KERN_INFO "%s: New link status: %s (%04x)\n", | 1676 | printk(KERN_DEBUG "%s: New link status: %s (%04x)\n", |
1665 | dev->name, s, status); | 1677 | dev->name, s, status); |
1666 | } | 1678 | } |
1667 | 1679 | ||
@@ -3645,12 +3657,22 @@ struct net_device | |||
3645 | void free_orinocodev(struct net_device *dev) | 3657 | void free_orinocodev(struct net_device *dev) |
3646 | { | 3658 | { |
3647 | struct orinoco_private *priv = netdev_priv(dev); | 3659 | struct orinoco_private *priv = netdev_priv(dev); |
3660 | struct orinoco_rx_data *rx_data, *temp; | ||
3648 | 3661 | ||
3649 | /* No need to empty priv->rx_list: if the tasklet is scheduled | 3662 | /* If the tasklet is scheduled when we call tasklet_kill it |
3650 | * when we call tasklet_kill it will run one final time, | 3663 | * will run one final time. However the tasklet will only |
3651 | * emptying the list */ | 3664 | * drain priv->rx_list if the hw is still available. */ |
3652 | tasklet_kill(&priv->rx_tasklet); | 3665 | tasklet_kill(&priv->rx_tasklet); |
3653 | 3666 | ||
3667 | /* Explicitly drain priv->rx_list */ | ||
3668 | list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) { | ||
3669 | list_del(&rx_data->list); | ||
3670 | |||
3671 | dev_kfree_skb(rx_data->skb); | ||
3672 | kfree(rx_data->desc); | ||
3673 | kfree(rx_data); | ||
3674 | } | ||
3675 | |||
3654 | unregister_pm_notifier(&priv->pm_notifier); | 3676 | unregister_pm_notifier(&priv->pm_notifier); |
3655 | orinoco_uncache_fw(priv); | 3677 | orinoco_uncache_fw(priv); |
3656 | 3678 | ||
@@ -5046,33 +5068,30 @@ static int orinoco_ioctl_set_genie(struct net_device *dev, | |||
5046 | struct orinoco_private *priv = netdev_priv(dev); | 5068 | struct orinoco_private *priv = netdev_priv(dev); |
5047 | u8 *buf; | 5069 | u8 *buf; |
5048 | unsigned long flags; | 5070 | unsigned long flags; |
5049 | int err = 0; | ||
5050 | 5071 | ||
5051 | /* cut off at IEEE80211_MAX_DATA_LEN */ | 5072 | /* cut off at IEEE80211_MAX_DATA_LEN */ |
5052 | if ((wrqu->data.length > IEEE80211_MAX_DATA_LEN) || | 5073 | if ((wrqu->data.length > IEEE80211_MAX_DATA_LEN) || |
5053 | (wrqu->data.length && (extra == NULL))) | 5074 | (wrqu->data.length && (extra == NULL))) |
5054 | return -EINVAL; | 5075 | return -EINVAL; |
5055 | 5076 | ||
5056 | if (orinoco_lock(priv, &flags) != 0) | ||
5057 | return -EBUSY; | ||
5058 | |||
5059 | if (wrqu->data.length) { | 5077 | if (wrqu->data.length) { |
5060 | buf = kmalloc(wrqu->data.length, GFP_KERNEL); | 5078 | buf = kmalloc(wrqu->data.length, GFP_KERNEL); |
5061 | if (buf == NULL) { | 5079 | if (buf == NULL) |
5062 | err = -ENOMEM; | 5080 | return -ENOMEM; |
5063 | goto out; | ||
5064 | } | ||
5065 | 5081 | ||
5066 | memcpy(buf, extra, wrqu->data.length); | 5082 | memcpy(buf, extra, wrqu->data.length); |
5067 | kfree(priv->wpa_ie); | 5083 | } else |
5068 | priv->wpa_ie = buf; | 5084 | buf = NULL; |
5069 | priv->wpa_ie_len = wrqu->data.length; | 5085 | |
5070 | } else { | 5086 | if (orinoco_lock(priv, &flags) != 0) { |
5071 | kfree(priv->wpa_ie); | 5087 | kfree(buf); |
5072 | priv->wpa_ie = NULL; | 5088 | return -EBUSY; |
5073 | priv->wpa_ie_len = 0; | ||
5074 | } | 5089 | } |
5075 | 5090 | ||
5091 | kfree(priv->wpa_ie); | ||
5092 | priv->wpa_ie = buf; | ||
5093 | priv->wpa_ie_len = wrqu->data.length; | ||
5094 | |||
5076 | if (priv->wpa_ie) { | 5095 | if (priv->wpa_ie) { |
5077 | /* Looks like wl_lkm wants to check the auth alg, and | 5096 | /* Looks like wl_lkm wants to check the auth alg, and |
5078 | * somehow pass it to the firmware. | 5097 | * somehow pass it to the firmware. |
@@ -5081,9 +5100,8 @@ static int orinoco_ioctl_set_genie(struct net_device *dev, | |||
5081 | */ | 5100 | */ |
5082 | } | 5101 | } |
5083 | 5102 | ||
5084 | out: | ||
5085 | orinoco_unlock(priv, &flags); | 5103 | orinoco_unlock(priv, &flags); |
5086 | return err; | 5104 | return 0; |
5087 | } | 5105 | } |
5088 | 5106 | ||
5089 | static int orinoco_ioctl_get_genie(struct net_device *dev, | 5107 | static int orinoco_ioctl_get_genie(struct net_device *dev, |
diff --git a/drivers/net/wireless/orinoco/orinoco_cs.c b/drivers/net/wireless/orinoco/orinoco_cs.c index f127602670ec..0b32215d3f5d 100644 --- a/drivers/net/wireless/orinoco/orinoco_cs.c +++ b/drivers/net/wireless/orinoco/orinoco_cs.c | |||
@@ -435,6 +435,7 @@ static struct pcmcia_device_id orinoco_cs_ids[] = { | |||
435 | PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), /* Samsung SWL2000-N 11Mb/s WLAN Card */ | 435 | PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), /* Samsung SWL2000-N 11Mb/s WLAN Card */ |
436 | PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */ | 436 | PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */ |
437 | PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0001), /* ARtem Onair */ | 437 | PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0001), /* ARtem Onair */ |
438 | PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0003), /* ARtem Onair Comcard 11 */ | ||
438 | PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0305), /* Buffalo WLI-PCM-S11 */ | 439 | PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0305), /* Buffalo WLI-PCM-S11 */ |
439 | PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), /* Linksys WPC11 Version 2.5 */ | 440 | PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), /* Linksys WPC11 Version 2.5 */ |
440 | PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1613), /* Linksys WPC11 Version 3 */ | 441 | PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1613), /* Linksys WPC11 Version 3 */ |
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c index 82354b974a04..34561e6e816b 100644 --- a/drivers/net/wireless/p54/p54common.c +++ b/drivers/net/wireless/p54/p54common.c | |||
@@ -138,6 +138,7 @@ int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw) | |||
138 | u8 *fw_version = NULL; | 138 | u8 *fw_version = NULL; |
139 | size_t len; | 139 | size_t len; |
140 | int i; | 140 | int i; |
141 | int maxlen; | ||
141 | 142 | ||
142 | if (priv->rx_start) | 143 | if (priv->rx_start) |
143 | return 0; | 144 | return 0; |
@@ -195,6 +196,16 @@ int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw) | |||
195 | else | 196 | else |
196 | priv->rx_mtu = (size_t) | 197 | priv->rx_mtu = (size_t) |
197 | 0x620 - priv->tx_hdr_len; | 198 | 0x620 - priv->tx_hdr_len; |
199 | maxlen = priv->tx_hdr_len + /* USB devices */ | ||
200 | sizeof(struct p54_rx_data) + | ||
201 | 4 + /* rx alignment */ | ||
202 | IEEE80211_MAX_FRAG_THRESHOLD; | ||
203 | if (priv->rx_mtu > maxlen && PAGE_SIZE == 4096) { | ||
204 | printk(KERN_INFO "p54: rx_mtu reduced from %d " | ||
205 | "to %d\n", priv->rx_mtu, | ||
206 | maxlen); | ||
207 | priv->rx_mtu = maxlen; | ||
208 | } | ||
198 | break; | 209 | break; |
199 | } | 210 | } |
200 | case BR_CODE_EXPOSED_IF: | 211 | case BR_CODE_EXPOSED_IF: |
@@ -440,8 +451,8 @@ static int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len) | |||
440 | } | 451 | } |
441 | if (err) | 452 | if (err) |
442 | goto err; | 453 | goto err; |
443 | 454 | } | |
444 | } | 455 | break; |
445 | case PDR_PRISM_ZIF_TX_IQ_CALIBRATION: | 456 | case PDR_PRISM_ZIF_TX_IQ_CALIBRATION: |
446 | priv->iq_autocal = kmalloc(data_len, GFP_KERNEL); | 457 | priv->iq_autocal = kmalloc(data_len, GFP_KERNEL); |
447 | if (!priv->iq_autocal) { | 458 | if (!priv->iq_autocal) { |
@@ -575,6 +586,7 @@ static int p54_rx_data(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
575 | u16 freq = le16_to_cpu(hdr->freq); | 586 | u16 freq = le16_to_cpu(hdr->freq); |
576 | size_t header_len = sizeof(*hdr); | 587 | size_t header_len = sizeof(*hdr); |
577 | u32 tsf32; | 588 | u32 tsf32; |
589 | u8 rate = hdr->rate & 0xf; | ||
578 | 590 | ||
579 | /* | 591 | /* |
580 | * If the device is in a unspecified state we have to | 592 | * If the device is in a unspecified state we have to |
@@ -603,8 +615,11 @@ static int p54_rx_data(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
603 | rx_status.qual = (100 * hdr->rssi) / 127; | 615 | rx_status.qual = (100 * hdr->rssi) / 127; |
604 | if (hdr->rate & 0x10) | 616 | if (hdr->rate & 0x10) |
605 | rx_status.flag |= RX_FLAG_SHORTPRE; | 617 | rx_status.flag |= RX_FLAG_SHORTPRE; |
606 | rx_status.rate_idx = (dev->conf.channel->band == IEEE80211_BAND_2GHZ ? | 618 | if (dev->conf.channel->band == IEEE80211_BAND_5GHZ) |
607 | hdr->rate : (hdr->rate - 4)) & 0xf; | 619 | rx_status.rate_idx = (rate < 4) ? 0 : rate - 4; |
620 | else | ||
621 | rx_status.rate_idx = rate; | ||
622 | |||
608 | rx_status.freq = freq; | 623 | rx_status.freq = freq; |
609 | rx_status.band = dev->conf.channel->band; | 624 | rx_status.band = dev->conf.channel->band; |
610 | rx_status.antenna = hdr->antenna; | 625 | rx_status.antenna = hdr->antenna; |
@@ -730,7 +745,7 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
730 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(entry); | 745 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(entry); |
731 | struct p54_hdr *entry_hdr; | 746 | struct p54_hdr *entry_hdr; |
732 | struct p54_tx_data *entry_data; | 747 | struct p54_tx_data *entry_data; |
733 | int pad = 0; | 748 | unsigned int pad = 0, frame_len; |
734 | 749 | ||
735 | range = (void *)info->rate_driver_data; | 750 | range = (void *)info->rate_driver_data; |
736 | if (range->start_addr != addr) { | 751 | if (range->start_addr != addr) { |
@@ -753,6 +768,7 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
753 | __skb_unlink(entry, &priv->tx_queue); | 768 | __skb_unlink(entry, &priv->tx_queue); |
754 | spin_unlock_irqrestore(&priv->tx_queue.lock, flags); | 769 | spin_unlock_irqrestore(&priv->tx_queue.lock, flags); |
755 | 770 | ||
771 | frame_len = entry->len; | ||
756 | entry_hdr = (struct p54_hdr *) entry->data; | 772 | entry_hdr = (struct p54_hdr *) entry->data; |
757 | entry_data = (struct p54_tx_data *) entry_hdr->data; | 773 | entry_data = (struct p54_tx_data *) entry_hdr->data; |
758 | priv->tx_stats[entry_data->hw_queue].len--; | 774 | priv->tx_stats[entry_data->hw_queue].len--; |
@@ -798,6 +814,29 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
798 | info->flags |= IEEE80211_TX_STAT_TX_FILTERED; | 814 | info->flags |= IEEE80211_TX_STAT_TX_FILTERED; |
799 | info->status.ack_signal = p54_rssi_to_dbm(dev, | 815 | info->status.ack_signal = p54_rssi_to_dbm(dev, |
800 | (int)payload->ack_rssi); | 816 | (int)payload->ack_rssi); |
817 | |||
818 | /* Undo all changes to the frame. */ | ||
819 | switch (entry_data->key_type) { | ||
820 | case P54_CRYPTO_TKIPMICHAEL: { | ||
821 | u8 *iv = (u8 *)(entry_data->align + pad + | ||
822 | entry_data->crypt_offset); | ||
823 | |||
824 | /* Restore the original TKIP IV. */ | ||
825 | iv[2] = iv[0]; | ||
826 | iv[0] = iv[1]; | ||
827 | iv[1] = (iv[0] | 0x20) & 0x7f; /* WEPSeed - 8.3.2.2 */ | ||
828 | |||
829 | frame_len -= 12; /* remove TKIP_MMIC + TKIP_ICV */ | ||
830 | break; | ||
831 | } | ||
832 | case P54_CRYPTO_AESCCMP: | ||
833 | frame_len -= 8; /* remove CCMP_MIC */ | ||
834 | break; | ||
835 | case P54_CRYPTO_WEP: | ||
836 | frame_len -= 4; /* remove WEP_ICV */ | ||
837 | break; | ||
838 | } | ||
839 | skb_trim(entry, frame_len); | ||
801 | skb_pull(entry, sizeof(*hdr) + pad + sizeof(*entry_data)); | 840 | skb_pull(entry, sizeof(*hdr) + pad + sizeof(*entry_data)); |
802 | ieee80211_tx_status_irqsafe(dev, entry); | 841 | ieee80211_tx_status_irqsafe(dev, entry); |
803 | goto out; | 842 | goto out; |
@@ -1122,7 +1161,7 @@ static int p54_set_tim(struct ieee80211_hw *dev, struct ieee80211_sta *sta, | |||
1122 | 1161 | ||
1123 | skb = p54_alloc_skb(dev, P54_HDR_FLAG_CONTROL_OPSET, | 1162 | skb = p54_alloc_skb(dev, P54_HDR_FLAG_CONTROL_OPSET, |
1124 | sizeof(struct p54_hdr) + sizeof(*tim), | 1163 | sizeof(struct p54_hdr) + sizeof(*tim), |
1125 | P54_CONTROL_TYPE_TIM, GFP_KERNEL); | 1164 | P54_CONTROL_TYPE_TIM, GFP_ATOMIC); |
1126 | if (!skb) | 1165 | if (!skb) |
1127 | return -ENOMEM; | 1166 | return -ENOMEM; |
1128 | 1167 | ||
@@ -1383,7 +1422,6 @@ static int p54_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
1383 | hdr->tries = ridx; | 1422 | hdr->tries = ridx; |
1384 | txhdr->rts_rate_idx = 0; | 1423 | txhdr->rts_rate_idx = 0; |
1385 | if (info->control.hw_key) { | 1424 | if (info->control.hw_key) { |
1386 | crypt_offset += info->control.hw_key->iv_len; | ||
1387 | txhdr->key_type = p54_convert_algo(info->control.hw_key->alg); | 1425 | txhdr->key_type = p54_convert_algo(info->control.hw_key->alg); |
1388 | txhdr->key_len = min((u8)16, info->control.hw_key->keylen); | 1426 | txhdr->key_len = min((u8)16, info->control.hw_key->keylen); |
1389 | memcpy(txhdr->key, info->control.hw_key->key, txhdr->key_len); | 1427 | memcpy(txhdr->key, info->control.hw_key->key, txhdr->key_len); |
@@ -1397,6 +1435,8 @@ static int p54_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
1397 | } | 1435 | } |
1398 | /* reserve some space for ICV */ | 1436 | /* reserve some space for ICV */ |
1399 | len += info->control.hw_key->icv_len; | 1437 | len += info->control.hw_key->icv_len; |
1438 | memset(skb_put(skb, info->control.hw_key->icv_len), 0, | ||
1439 | info->control.hw_key->icv_len); | ||
1400 | } else { | 1440 | } else { |
1401 | txhdr->key_type = 0; | 1441 | txhdr->key_type = 0; |
1402 | txhdr->key_len = 0; | 1442 | txhdr->key_len = 0; |
@@ -1584,7 +1624,7 @@ static int p54_scan(struct ieee80211_hw *dev, u16 mode, u16 dwell) | |||
1584 | 1624 | ||
1585 | err: | 1625 | err: |
1586 | printk(KERN_ERR "%s: frequency change failed\n", wiphy_name(dev->wiphy)); | 1626 | printk(KERN_ERR "%s: frequency change failed\n", wiphy_name(dev->wiphy)); |
1587 | kfree_skb(skb); | 1627 | p54_free_skb(dev, skb); |
1588 | return -EINVAL; | 1628 | return -EINVAL; |
1589 | } | 1629 | } |
1590 | 1630 | ||
@@ -1824,7 +1864,7 @@ static void p54_remove_interface(struct ieee80211_hw *dev, | |||
1824 | 1864 | ||
1825 | static int p54_config(struct ieee80211_hw *dev, u32 changed) | 1865 | static int p54_config(struct ieee80211_hw *dev, u32 changed) |
1826 | { | 1866 | { |
1827 | int ret; | 1867 | int ret = 0; |
1828 | struct p54_common *priv = dev->priv; | 1868 | struct p54_common *priv = dev->priv; |
1829 | struct ieee80211_conf *conf = &dev->conf; | 1869 | struct ieee80211_conf *conf = &dev->conf; |
1830 | 1870 | ||
@@ -2051,7 +2091,7 @@ static int p54_set_key(struct ieee80211_hw *dev, enum set_key_cmd cmd, | |||
2051 | algo = P54_CRYPTO_AESCCMP; | 2091 | algo = P54_CRYPTO_AESCCMP; |
2052 | break; | 2092 | break; |
2053 | default: | 2093 | default: |
2054 | return -EINVAL; | 2094 | return -EOPNOTSUPP; |
2055 | } | 2095 | } |
2056 | } | 2096 | } |
2057 | 2097 | ||
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c index c44a200059d2..5de2ebfb28c7 100644 --- a/drivers/net/wireless/p54/p54usb.c +++ b/drivers/net/wireless/p54/p54usb.c | |||
@@ -56,6 +56,7 @@ static struct usb_device_id p54u_table[] __devinitdata = { | |||
56 | {USB_DEVICE(0x050d, 0x7050)}, /* Belkin F5D7050 ver 1000 */ | 56 | {USB_DEVICE(0x050d, 0x7050)}, /* Belkin F5D7050 ver 1000 */ |
57 | {USB_DEVICE(0x0572, 0x2000)}, /* Cohiba Proto board */ | 57 | {USB_DEVICE(0x0572, 0x2000)}, /* Cohiba Proto board */ |
58 | {USB_DEVICE(0x0572, 0x2002)}, /* Cohiba Proto board */ | 58 | {USB_DEVICE(0x0572, 0x2002)}, /* Cohiba Proto board */ |
59 | {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */ | ||
59 | {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ | 60 | {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ |
60 | {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */ | 61 | {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */ |
61 | {USB_DEVICE(0x0846, 0x4240)}, /* Netgear WG111 (v2) */ | 62 | {USB_DEVICE(0x0846, 0x4240)}, /* Netgear WG111 (v2) */ |
@@ -143,11 +144,8 @@ static void p54u_tx_cb(struct urb *urb) | |||
143 | struct sk_buff *skb = urb->context; | 144 | struct sk_buff *skb = urb->context; |
144 | struct ieee80211_hw *dev = (struct ieee80211_hw *) | 145 | struct ieee80211_hw *dev = (struct ieee80211_hw *) |
145 | usb_get_intfdata(usb_ifnum_to_if(urb->dev, 0)); | 146 | usb_get_intfdata(usb_ifnum_to_if(urb->dev, 0)); |
146 | struct p54u_priv *priv = dev->priv; | ||
147 | 147 | ||
148 | skb_pull(skb, priv->common.tx_hdr_len); | 148 | p54_free_skb(dev, skb); |
149 | if (FREE_AFTER_TX(skb)) | ||
150 | p54_free_skb(dev, skb); | ||
151 | } | 149 | } |
152 | 150 | ||
153 | static void p54u_tx_dummy_cb(struct urb *urb) { } | 151 | static void p54u_tx_dummy_cb(struct urb *urb) { } |
@@ -229,7 +227,10 @@ static void p54u_tx_3887(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
229 | p54u_tx_dummy_cb, dev); | 227 | p54u_tx_dummy_cb, dev); |
230 | usb_fill_bulk_urb(data_urb, priv->udev, | 228 | usb_fill_bulk_urb(data_urb, priv->udev, |
231 | usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), | 229 | usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), |
232 | skb->data, skb->len, p54u_tx_cb, skb); | 230 | skb->data, skb->len, FREE_AFTER_TX(skb) ? |
231 | p54u_tx_cb : p54u_tx_dummy_cb, skb); | ||
232 | addr_urb->transfer_flags |= URB_ZERO_PACKET; | ||
233 | data_urb->transfer_flags |= URB_ZERO_PACKET; | ||
233 | 234 | ||
234 | usb_anchor_urb(addr_urb, &priv->submitted); | 235 | usb_anchor_urb(addr_urb, &priv->submitted); |
235 | err = usb_submit_urb(addr_urb, GFP_ATOMIC); | 236 | err = usb_submit_urb(addr_urb, GFP_ATOMIC); |
@@ -238,7 +239,7 @@ static void p54u_tx_3887(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
238 | goto out; | 239 | goto out; |
239 | } | 240 | } |
240 | 241 | ||
241 | usb_anchor_urb(addr_urb, &priv->submitted); | 242 | usb_anchor_urb(data_urb, &priv->submitted); |
242 | err = usb_submit_urb(data_urb, GFP_ATOMIC); | 243 | err = usb_submit_urb(data_urb, GFP_ATOMIC); |
243 | if (err) | 244 | if (err) |
244 | usb_unanchor_urb(data_urb); | 245 | usb_unanchor_urb(data_urb); |
@@ -268,27 +269,24 @@ static void p54u_tx_lm87(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
268 | { | 269 | { |
269 | struct p54u_priv *priv = dev->priv; | 270 | struct p54u_priv *priv = dev->priv; |
270 | struct urb *data_urb; | 271 | struct urb *data_urb; |
271 | struct lm87_tx_hdr *hdr; | 272 | struct lm87_tx_hdr *hdr = (void *)skb->data - sizeof(*hdr); |
272 | __le32 checksum; | ||
273 | __le32 addr = ((struct p54_hdr *)skb->data)->req_id; | ||
274 | 273 | ||
275 | data_urb = usb_alloc_urb(0, GFP_ATOMIC); | 274 | data_urb = usb_alloc_urb(0, GFP_ATOMIC); |
276 | if (!data_urb) | 275 | if (!data_urb) |
277 | return; | 276 | return; |
278 | 277 | ||
279 | checksum = p54u_lm87_chksum((__le32 *)skb->data, skb->len); | 278 | hdr->chksum = p54u_lm87_chksum((__le32 *)skb->data, skb->len); |
280 | hdr = (struct lm87_tx_hdr *)skb_push(skb, sizeof(*hdr)); | 279 | hdr->device_addr = ((struct p54_hdr *)skb->data)->req_id; |
281 | hdr->chksum = checksum; | ||
282 | hdr->device_addr = addr; | ||
283 | 280 | ||
284 | usb_fill_bulk_urb(data_urb, priv->udev, | 281 | usb_fill_bulk_urb(data_urb, priv->udev, |
285 | usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), | 282 | usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), |
286 | skb->data, skb->len, p54u_tx_cb, skb); | 283 | hdr, skb->len + sizeof(*hdr), FREE_AFTER_TX(skb) ? |
284 | p54u_tx_cb : p54u_tx_dummy_cb, skb); | ||
285 | data_urb->transfer_flags |= URB_ZERO_PACKET; | ||
287 | 286 | ||
288 | usb_anchor_urb(data_urb, &priv->submitted); | 287 | usb_anchor_urb(data_urb, &priv->submitted); |
289 | if (usb_submit_urb(data_urb, GFP_ATOMIC)) { | 288 | if (usb_submit_urb(data_urb, GFP_ATOMIC)) { |
290 | usb_unanchor_urb(data_urb); | 289 | usb_unanchor_urb(data_urb); |
291 | skb_pull(skb, sizeof(*hdr)); | ||
292 | p54_free_skb(dev, skb); | 290 | p54_free_skb(dev, skb); |
293 | } | 291 | } |
294 | usb_free_urb(data_urb); | 292 | usb_free_urb(data_urb); |
@@ -298,11 +296,9 @@ static void p54u_tx_net2280(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
298 | { | 296 | { |
299 | struct p54u_priv *priv = dev->priv; | 297 | struct p54u_priv *priv = dev->priv; |
300 | struct urb *int_urb, *data_urb; | 298 | struct urb *int_urb, *data_urb; |
301 | struct net2280_tx_hdr *hdr; | 299 | struct net2280_tx_hdr *hdr = (void *)skb->data - sizeof(*hdr); |
302 | struct net2280_reg_write *reg; | 300 | struct net2280_reg_write *reg; |
303 | int err = 0; | 301 | int err = 0; |
304 | __le32 addr = ((struct p54_hdr *) skb->data)->req_id; | ||
305 | __le16 len = cpu_to_le16(skb->len); | ||
306 | 302 | ||
307 | reg = kmalloc(sizeof(*reg), GFP_ATOMIC); | 303 | reg = kmalloc(sizeof(*reg), GFP_ATOMIC); |
308 | if (!reg) | 304 | if (!reg) |
@@ -325,10 +321,9 @@ static void p54u_tx_net2280(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
325 | reg->addr = cpu_to_le32(P54U_DEV_BASE); | 321 | reg->addr = cpu_to_le32(P54U_DEV_BASE); |
326 | reg->val = cpu_to_le32(ISL38XX_DEV_INT_DATA); | 322 | reg->val = cpu_to_le32(ISL38XX_DEV_INT_DATA); |
327 | 323 | ||
328 | hdr = (void *)skb_push(skb, sizeof(*hdr)); | ||
329 | memset(hdr, 0, sizeof(*hdr)); | 324 | memset(hdr, 0, sizeof(*hdr)); |
330 | hdr->len = len; | 325 | hdr->len = cpu_to_le16(skb->len); |
331 | hdr->device_addr = addr; | 326 | hdr->device_addr = ((struct p54_hdr *) skb->data)->req_id; |
332 | 327 | ||
333 | usb_fill_bulk_urb(int_urb, priv->udev, | 328 | usb_fill_bulk_urb(int_urb, priv->udev, |
334 | usb_sndbulkpipe(priv->udev, P54U_PIPE_DEV), reg, sizeof(*reg), | 329 | usb_sndbulkpipe(priv->udev, P54U_PIPE_DEV), reg, sizeof(*reg), |
@@ -339,11 +334,13 @@ static void p54u_tx_net2280(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
339 | * free what's inside the transfer_buffer after the callback routine | 334 | * free what's inside the transfer_buffer after the callback routine |
340 | * has completed. | 335 | * has completed. |
341 | */ | 336 | */ |
342 | int_urb->transfer_flags |= URB_FREE_BUFFER; | 337 | int_urb->transfer_flags |= URB_FREE_BUFFER | URB_ZERO_PACKET; |
343 | 338 | ||
344 | usb_fill_bulk_urb(data_urb, priv->udev, | 339 | usb_fill_bulk_urb(data_urb, priv->udev, |
345 | usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), | 340 | usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), |
346 | skb->data, skb->len, p54u_tx_cb, skb); | 341 | hdr, skb->len + sizeof(*hdr), FREE_AFTER_TX(skb) ? |
342 | p54u_tx_cb : p54u_tx_dummy_cb, skb); | ||
343 | data_urb->transfer_flags |= URB_ZERO_PACKET; | ||
347 | 344 | ||
348 | usb_anchor_urb(int_urb, &priv->submitted); | 345 | usb_anchor_urb(int_urb, &priv->submitted); |
349 | err = usb_submit_urb(int_urb, GFP_ATOMIC); | 346 | err = usb_submit_urb(int_urb, GFP_ATOMIC); |
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c index 607ce9f61b54..ed93ac41297f 100644 --- a/drivers/net/wireless/rndis_wlan.c +++ b/drivers/net/wireless/rndis_wlan.c | |||
@@ -1649,9 +1649,7 @@ static char *rndis_translate_scan(struct net_device *dev, | |||
1649 | char *end_buf, | 1649 | char *end_buf, |
1650 | struct ndis_80211_bssid_ex *bssid) | 1650 | struct ndis_80211_bssid_ex *bssid) |
1651 | { | 1651 | { |
1652 | #ifdef DEBUG | ||
1653 | struct usbnet *usbdev = netdev_priv(dev); | 1652 | struct usbnet *usbdev = netdev_priv(dev); |
1654 | #endif | ||
1655 | u8 *ie; | 1653 | u8 *ie; |
1656 | char *current_val; | 1654 | char *current_val; |
1657 | int bssid_len, ie_len, i; | 1655 | int bssid_len, ie_len, i; |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 30028e2422fc..af6b5847be5c 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -38,7 +38,7 @@ | |||
38 | /* | 38 | /* |
39 | * Allow hardware encryption to be disabled. | 39 | * Allow hardware encryption to be disabled. |
40 | */ | 40 | */ |
41 | static int modparam_nohwcrypt = 1; | 41 | static int modparam_nohwcrypt = 0; |
42 | module_param_named(nohwcrypt, modparam_nohwcrypt, bool, S_IRUGO); | 42 | module_param_named(nohwcrypt, modparam_nohwcrypt, bool, S_IRUGO); |
43 | MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption."); | 43 | MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption."); |
44 | 44 | ||
@@ -376,11 +376,11 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev, | |||
376 | 376 | ||
377 | /* | 377 | /* |
378 | * The driver does not support the IV/EIV generation | 378 | * The driver does not support the IV/EIV generation |
379 | * in hardware. However it doesn't support the IV/EIV | 379 | * in hardware. However it demands the data to be provided |
380 | * inside the ieee80211 frame either, but requires it | 380 | * both seperately as well as inside the frame. |
381 | * to be provided seperately for the descriptor. | 381 | * We already provided the CONFIG_CRYPTO_COPY_IV to rt2x00lib |
382 | * rt2x00lib will cut the IV/EIV data out of all frames | 382 | * to ensure rt2x00lib will not strip the data from the |
383 | * given to us by mac80211, but we must tell mac80211 | 383 | * frame after the copy, now we must tell mac80211 |
384 | * to generate the IV/EIV data. | 384 | * to generate the IV/EIV data. |
385 | */ | 385 | */ |
386 | key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV; | 386 | key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV; |
@@ -1181,7 +1181,7 @@ static void rt2500usb_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
1181 | test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags)); | 1181 | test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags)); |
1182 | rt2x00_set_field32(&word, TXD_W0_IFS, txdesc->ifs); | 1182 | rt2x00_set_field32(&word, TXD_W0_IFS, txdesc->ifs); |
1183 | rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skb->len); | 1183 | rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skb->len); |
1184 | rt2x00_set_field32(&word, TXD_W0_CIPHER, txdesc->cipher); | 1184 | rt2x00_set_field32(&word, TXD_W0_CIPHER, !!txdesc->cipher); |
1185 | rt2x00_set_field32(&word, TXD_W0_KEY_ID, txdesc->key_idx); | 1185 | rt2x00_set_field32(&word, TXD_W0_KEY_ID, txdesc->key_idx); |
1186 | rt2x00_desc_write(txd, 0, word); | 1186 | rt2x00_desc_write(txd, 0, word); |
1187 | } | 1187 | } |
@@ -1334,14 +1334,7 @@ static void rt2500usb_fill_rxdone(struct queue_entry *entry, | |||
1334 | 1334 | ||
1335 | /* ICV is located at the end of frame */ | 1335 | /* ICV is located at the end of frame */ |
1336 | 1336 | ||
1337 | /* | 1337 | rxdesc->flags |= RX_FLAG_MMIC_STRIPPED; |
1338 | * Hardware has stripped IV/EIV data from 802.11 frame during | ||
1339 | * decryption. It has provided the data seperately but rt2x00lib | ||
1340 | * should decide if it should be reinserted. | ||
1341 | */ | ||
1342 | rxdesc->flags |= RX_FLAG_IV_STRIPPED; | ||
1343 | if (rxdesc->cipher != CIPHER_TKIP) | ||
1344 | rxdesc->flags |= RX_FLAG_MMIC_STRIPPED; | ||
1345 | if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS) | 1338 | if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS) |
1346 | rxdesc->flags |= RX_FLAG_DECRYPTED; | 1339 | rxdesc->flags |= RX_FLAG_DECRYPTED; |
1347 | else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC) | 1340 | else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC) |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index 6d92542fcf0d..87c0f2c83077 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -807,13 +807,11 @@ static void rt2x00lib_rate(struct ieee80211_rate *entry, | |||
807 | { | 807 | { |
808 | entry->flags = 0; | 808 | entry->flags = 0; |
809 | entry->bitrate = rate->bitrate; | 809 | entry->bitrate = rate->bitrate; |
810 | entry->hw_value = rt2x00_create_rate_hw_value(index, 0); | 810 | entry->hw_value =index; |
811 | entry->hw_value_short = entry->hw_value; | 811 | entry->hw_value_short = index; |
812 | 812 | ||
813 | if (rate->flags & DEV_RATE_SHORT_PREAMBLE) { | 813 | if (rate->flags & DEV_RATE_SHORT_PREAMBLE) |
814 | entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE; | 814 | entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE; |
815 | entry->hw_value_short |= rt2x00_create_rate_hw_value(index, 1); | ||
816 | } | ||
817 | } | 815 | } |
818 | 816 | ||
819 | static int rt2x00lib_probe_hw_modes(struct rt2x00_dev *rt2x00dev, | 817 | static int rt2x00lib_probe_hw_modes(struct rt2x00_dev *rt2x00dev, |
diff --git a/drivers/net/wireless/rt2x00/rt2x00leds.c b/drivers/net/wireless/rt2x00/rt2x00leds.c index 68f4e0fc35b9..a0cd35b6beb5 100644 --- a/drivers/net/wireless/rt2x00/rt2x00leds.c +++ b/drivers/net/wireless/rt2x00/rt2x00leds.c | |||
@@ -97,7 +97,7 @@ void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, bool enabled) | |||
97 | 97 | ||
98 | void rt2x00leds_led_radio(struct rt2x00_dev *rt2x00dev, bool enabled) | 98 | void rt2x00leds_led_radio(struct rt2x00_dev *rt2x00dev, bool enabled) |
99 | { | 99 | { |
100 | if (rt2x00dev->led_radio.type == LED_TYPE_ASSOC) | 100 | if (rt2x00dev->led_radio.type == LED_TYPE_RADIO) |
101 | rt2x00led_led_simple(&rt2x00dev->led_radio, enabled); | 101 | rt2x00led_led_simple(&rt2x00dev->led_radio, enabled); |
102 | } | 102 | } |
103 | 103 | ||
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h index 03024327767b..86cd26fbf769 100644 --- a/drivers/net/wireless/rt2x00/rt2x00lib.h +++ b/drivers/net/wireless/rt2x00/rt2x00lib.h | |||
@@ -52,22 +52,11 @@ struct rt2x00_rate { | |||
52 | 52 | ||
53 | extern const struct rt2x00_rate rt2x00_supported_rates[12]; | 53 | extern const struct rt2x00_rate rt2x00_supported_rates[12]; |
54 | 54 | ||
55 | static inline u16 rt2x00_create_rate_hw_value(const u16 index, | ||
56 | const u16 short_preamble) | ||
57 | { | ||
58 | return (short_preamble << 8) | (index & 0xff); | ||
59 | } | ||
60 | |||
61 | static inline const struct rt2x00_rate *rt2x00_get_rate(const u16 hw_value) | 55 | static inline const struct rt2x00_rate *rt2x00_get_rate(const u16 hw_value) |
62 | { | 56 | { |
63 | return &rt2x00_supported_rates[hw_value & 0xff]; | 57 | return &rt2x00_supported_rates[hw_value & 0xff]; |
64 | } | 58 | } |
65 | 59 | ||
66 | static inline int rt2x00_get_rate_preamble(const u16 hw_value) | ||
67 | { | ||
68 | return (hw_value & 0xff00); | ||
69 | } | ||
70 | |||
71 | /* | 60 | /* |
72 | * Radio control handlers. | 61 | * Radio control handlers. |
73 | */ | 62 | */ |
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c index eaec6bd93ed5..0709decec9c2 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c | |||
@@ -154,6 +154,7 @@ static void rt2x00queue_create_tx_descriptor(struct queue_entry *entry, | |||
154 | struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; | 154 | struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; |
155 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb); | 155 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb); |
156 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)entry->skb->data; | 156 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)entry->skb->data; |
157 | struct ieee80211_tx_rate *txrate = &tx_info->control.rates[0]; | ||
157 | struct ieee80211_rate *rate = | 158 | struct ieee80211_rate *rate = |
158 | ieee80211_get_tx_rate(rt2x00dev->hw, tx_info); | 159 | ieee80211_get_tx_rate(rt2x00dev->hw, tx_info); |
159 | const struct rt2x00_rate *hwrate; | 160 | const struct rt2x00_rate *hwrate; |
@@ -313,7 +314,7 @@ static void rt2x00queue_create_tx_descriptor(struct queue_entry *entry, | |||
313 | * When preamble is enabled we should set the | 314 | * When preamble is enabled we should set the |
314 | * preamble bit for the signal. | 315 | * preamble bit for the signal. |
315 | */ | 316 | */ |
316 | if (rt2x00_get_rate_preamble(rate->hw_value)) | 317 | if (txrate->flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE) |
317 | txdesc->signal |= 0x08; | 318 | txdesc->signal |= 0x08; |
318 | } | 319 | } |
319 | } | 320 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2x00rfkill.c b/drivers/net/wireless/rt2x00/rt2x00rfkill.c index c3f53a92180a..3298cae1e12d 100644 --- a/drivers/net/wireless/rt2x00/rt2x00rfkill.c +++ b/drivers/net/wireless/rt2x00/rt2x00rfkill.c | |||
@@ -162,7 +162,7 @@ void rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev) | |||
162 | 162 | ||
163 | void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev) | 163 | void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev) |
164 | { | 164 | { |
165 | if (!test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->flags)) | 165 | if (!test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state)) |
166 | return; | 166 | return; |
167 | 167 | ||
168 | cancel_delayed_work_sync(&rt2x00dev->rfkill_work); | 168 | cancel_delayed_work_sync(&rt2x00dev->rfkill_work); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c index 83df312ac56f..0b29d767a258 100644 --- a/drivers/net/wireless/rt2x00/rt2x00usb.c +++ b/drivers/net/wireless/rt2x00/rt2x00usb.c | |||
@@ -434,11 +434,11 @@ static int rt2x00usb_find_endpoints(struct rt2x00_dev *rt2x00dev) | |||
434 | 434 | ||
435 | if (usb_endpoint_is_bulk_in(ep_desc)) { | 435 | if (usb_endpoint_is_bulk_in(ep_desc)) { |
436 | rt2x00usb_assign_endpoint(rt2x00dev->rx, ep_desc); | 436 | rt2x00usb_assign_endpoint(rt2x00dev->rx, ep_desc); |
437 | } else if (usb_endpoint_is_bulk_out(ep_desc)) { | 437 | } else if (usb_endpoint_is_bulk_out(ep_desc) && |
438 | (queue != queue_end(rt2x00dev))) { | ||
438 | rt2x00usb_assign_endpoint(queue, ep_desc); | 439 | rt2x00usb_assign_endpoint(queue, ep_desc); |
440 | queue = queue_next(queue); | ||
439 | 441 | ||
440 | if (queue != queue_end(rt2x00dev)) | ||
441 | queue = queue_next(queue); | ||
442 | tx_ep_desc = ep_desc; | 442 | tx_ep_desc = ep_desc; |
443 | } | 443 | } |
444 | } | 444 | } |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index d638a8a59370..96a8d69f8790 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -2321,6 +2321,7 @@ static struct usb_device_id rt73usb_device_table[] = { | |||
2321 | /* Linksys */ | 2321 | /* Linksys */ |
2322 | { USB_DEVICE(0x13b1, 0x0020), USB_DEVICE_DATA(&rt73usb_ops) }, | 2322 | { USB_DEVICE(0x13b1, 0x0020), USB_DEVICE_DATA(&rt73usb_ops) }, |
2323 | { USB_DEVICE(0x13b1, 0x0023), USB_DEVICE_DATA(&rt73usb_ops) }, | 2323 | { USB_DEVICE(0x13b1, 0x0023), USB_DEVICE_DATA(&rt73usb_ops) }, |
2324 | { USB_DEVICE(0x13b1, 0x0028), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
2324 | /* MSI */ | 2325 | /* MSI */ |
2325 | { USB_DEVICE(0x0db0, 0x6877), USB_DEVICE_DATA(&rt73usb_ops) }, | 2326 | { USB_DEVICE(0x0db0, 0x6877), USB_DEVICE_DATA(&rt73usb_ops) }, |
2326 | { USB_DEVICE(0x0db0, 0x6874), USB_DEVICE_DATA(&rt73usb_ops) }, | 2327 | { USB_DEVICE(0x0db0, 0x6874), USB_DEVICE_DATA(&rt73usb_ops) }, |
diff --git a/drivers/net/wireless/rtl818x/rtl8180_dev.c b/drivers/net/wireless/rtl818x/rtl8180_dev.c index 5f887fb137a9..387c133ec0f2 100644 --- a/drivers/net/wireless/rtl818x/rtl8180_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c | |||
@@ -897,6 +897,7 @@ static int __devinit rtl8180_probe(struct pci_dev *pdev, | |||
897 | dev->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | | 897 | dev->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | |
898 | IEEE80211_HW_RX_INCLUDES_FCS | | 898 | IEEE80211_HW_RX_INCLUDES_FCS | |
899 | IEEE80211_HW_SIGNAL_UNSPEC; | 899 | IEEE80211_HW_SIGNAL_UNSPEC; |
900 | dev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); | ||
900 | dev->queues = 1; | 901 | dev->queues = 1; |
901 | dev->max_signal = 65; | 902 | dev->max_signal = 65; |
902 | 903 | ||
diff --git a/drivers/net/wireless/rtl818x/rtl8187_dev.c b/drivers/net/wireless/rtl818x/rtl8187_dev.c index 00ce3ef39abe..22bc07ef2f37 100644 --- a/drivers/net/wireless/rtl818x/rtl8187_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8187_dev.c | |||
@@ -213,7 +213,7 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
213 | urb = usb_alloc_urb(0, GFP_ATOMIC); | 213 | urb = usb_alloc_urb(0, GFP_ATOMIC); |
214 | if (!urb) { | 214 | if (!urb) { |
215 | kfree_skb(skb); | 215 | kfree_skb(skb); |
216 | return -ENOMEM; | 216 | return NETDEV_TX_OK; |
217 | } | 217 | } |
218 | 218 | ||
219 | flags = skb->len; | 219 | flags = skb->len; |
@@ -273,6 +273,7 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
273 | 273 | ||
274 | usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, ep), | 274 | usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, ep), |
275 | buf, skb->len, rtl8187_tx_cb, skb); | 275 | buf, skb->len, rtl8187_tx_cb, skb); |
276 | urb->transfer_flags |= URB_ZERO_PACKET; | ||
276 | usb_anchor_urb(urb, &priv->anchored); | 277 | usb_anchor_urb(urb, &priv->anchored); |
277 | rc = usb_submit_urb(urb, GFP_ATOMIC); | 278 | rc = usb_submit_urb(urb, GFP_ATOMIC); |
278 | if (rc < 0) { | 279 | if (rc < 0) { |
@@ -281,7 +282,7 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
281 | } | 282 | } |
282 | usb_free_urb(urb); | 283 | usb_free_urb(urb); |
283 | 284 | ||
284 | return rc; | 285 | return NETDEV_TX_OK; |
285 | } | 286 | } |
286 | 287 | ||
287 | static void rtl8187_rx_cb(struct urb *urb) | 288 | static void rtl8187_rx_cb(struct urb *urb) |
@@ -1471,6 +1472,7 @@ static void __devexit rtl8187_disconnect(struct usb_interface *intf) | |||
1471 | ieee80211_unregister_hw(dev); | 1472 | ieee80211_unregister_hw(dev); |
1472 | 1473 | ||
1473 | priv = dev->priv; | 1474 | priv = dev->priv; |
1475 | usb_reset_device(priv->udev); | ||
1474 | usb_put_dev(interface_to_usbdev(intf)); | 1476 | usb_put_dev(interface_to_usbdev(intf)); |
1475 | ieee80211_free_hw(dev); | 1477 | ieee80211_free_hw(dev); |
1476 | } | 1478 | } |
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c index b5db57d2fcf5..17527f765b39 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.c +++ b/drivers/net/wireless/zd1211rw/zd_usb.c | |||
@@ -84,6 +84,7 @@ static struct usb_device_id usb_ids[] = { | |||
84 | { USB_DEVICE(0x0586, 0x340a), .driver_info = DEVICE_ZD1211B }, | 84 | { USB_DEVICE(0x0586, 0x340a), .driver_info = DEVICE_ZD1211B }, |
85 | { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, | 85 | { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, |
86 | { USB_DEVICE(0x07fa, 0x1196), .driver_info = DEVICE_ZD1211B }, | 86 | { USB_DEVICE(0x07fa, 0x1196), .driver_info = DEVICE_ZD1211B }, |
87 | { USB_DEVICE(0x0df6, 0x0036), .driver_info = DEVICE_ZD1211B }, | ||
87 | /* "Driverless" devices that need ejecting */ | 88 | /* "Driverless" devices that need ejecting */ |
88 | { USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER }, | 89 | { USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER }, |
89 | { USB_DEVICE(0x0ace, 0x20ff), .driver_info = DEVICE_INSTALLER }, | 90 | { USB_DEVICE(0x0ace, 0x20ff), .driver_info = DEVICE_INSTALLER }, |
diff --git a/drivers/oprofile/cpu_buffer.c b/drivers/oprofile/cpu_buffer.c index 2e03b6d796d3..e76d715e4342 100644 --- a/drivers/oprofile/cpu_buffer.c +++ b/drivers/oprofile/cpu_buffer.c | |||
@@ -393,16 +393,21 @@ oprofile_write_reserve(struct op_entry *entry, struct pt_regs * const regs, | |||
393 | return; | 393 | return; |
394 | 394 | ||
395 | fail: | 395 | fail: |
396 | entry->event = NULL; | ||
396 | cpu_buf->sample_lost_overflow++; | 397 | cpu_buf->sample_lost_overflow++; |
397 | } | 398 | } |
398 | 399 | ||
399 | int oprofile_add_data(struct op_entry *entry, unsigned long val) | 400 | int oprofile_add_data(struct op_entry *entry, unsigned long val) |
400 | { | 401 | { |
402 | if (!entry->event) | ||
403 | return 0; | ||
401 | return op_cpu_buffer_add_data(entry, val); | 404 | return op_cpu_buffer_add_data(entry, val); |
402 | } | 405 | } |
403 | 406 | ||
404 | int oprofile_write_commit(struct op_entry *entry) | 407 | int oprofile_write_commit(struct op_entry *entry) |
405 | { | 408 | { |
409 | if (!entry->event) | ||
410 | return -EINVAL; | ||
406 | return op_cpu_buffer_write_commit(entry); | 411 | return op_cpu_buffer_write_commit(entry); |
407 | } | 412 | } |
408 | 413 | ||
diff --git a/drivers/oprofile/cpu_buffer.h b/drivers/oprofile/cpu_buffer.h index 63f81c44846a..272995d20293 100644 --- a/drivers/oprofile/cpu_buffer.h +++ b/drivers/oprofile/cpu_buffer.h | |||
@@ -66,6 +66,13 @@ static inline void op_cpu_buffer_reset(int cpu) | |||
66 | cpu_buf->last_task = NULL; | 66 | cpu_buf->last_task = NULL; |
67 | } | 67 | } |
68 | 68 | ||
69 | /* | ||
70 | * op_cpu_buffer_add_data() and op_cpu_buffer_write_commit() may be | ||
71 | * called only if op_cpu_buffer_write_reserve() did not return NULL or | ||
72 | * entry->event != NULL, otherwise entry->size or entry->event will be | ||
73 | * used uninitialized. | ||
74 | */ | ||
75 | |||
69 | struct op_sample | 76 | struct op_sample |
70 | *op_cpu_buffer_write_reserve(struct op_entry *entry, unsigned long size); | 77 | *op_cpu_buffer_write_reserve(struct op_entry *entry, unsigned long size); |
71 | int op_cpu_buffer_write_commit(struct op_entry *entry); | 78 | int op_cpu_buffer_write_commit(struct op_entry *entry); |
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index f09b1010d477..803d9ddd6e75 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c | |||
@@ -266,6 +266,8 @@ static int detect_ejectable_slots(struct pci_bus *pbus) | |||
266 | int found = acpi_pci_detect_ejectable(pbus); | 266 | int found = acpi_pci_detect_ejectable(pbus); |
267 | if (!found) { | 267 | if (!found) { |
268 | acpi_handle bridge_handle = acpi_pci_get_bridge_handle(pbus); | 268 | acpi_handle bridge_handle = acpi_pci_get_bridge_handle(pbus); |
269 | if (!bridge_handle) | ||
270 | return 0; | ||
269 | acpi_walk_namespace(ACPI_TYPE_DEVICE, bridge_handle, (u32)1, | 271 | acpi_walk_namespace(ACPI_TYPE_DEVICE, bridge_handle, (u32)1, |
270 | is_pci_dock_device, (void *)&found, NULL); | 272 | is_pci_dock_device, (void *)&found, NULL); |
271 | } | 273 | } |
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c index 5482d4ed8256..c2485542f543 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c | |||
@@ -126,8 +126,10 @@ static int set_lock_status(struct hotplug_slot *hotplug_slot, u8 status) | |||
126 | mutex_lock(&slot->ctrl->crit_sect); | 126 | mutex_lock(&slot->ctrl->crit_sect); |
127 | 127 | ||
128 | /* has it been >1 sec since our last toggle? */ | 128 | /* has it been >1 sec since our last toggle? */ |
129 | if ((get_seconds() - slot->last_emi_toggle) < 1) | 129 | if ((get_seconds() - slot->last_emi_toggle) < 1) { |
130 | mutex_unlock(&slot->ctrl->crit_sect); | ||
130 | return -EINVAL; | 131 | return -EINVAL; |
132 | } | ||
131 | 133 | ||
132 | /* see what our current state is */ | 134 | /* see what our current state is */ |
133 | retval = get_lock_status(hotplug_slot, &value); | 135 | retval = get_lock_status(hotplug_slot, &value); |
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index b4a90badd0a6..896a15d70f5b 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c | |||
@@ -398,21 +398,19 @@ static int msi_capability_init(struct pci_dev *dev) | |||
398 | entry->msi_attrib.masked = 1; | 398 | entry->msi_attrib.masked = 1; |
399 | entry->msi_attrib.default_irq = dev->irq; /* Save IOAPIC IRQ */ | 399 | entry->msi_attrib.default_irq = dev->irq; /* Save IOAPIC IRQ */ |
400 | entry->msi_attrib.pos = pos; | 400 | entry->msi_attrib.pos = pos; |
401 | if (entry->msi_attrib.maskbit) { | ||
402 | entry->mask_base = (void __iomem *)(long)msi_mask_bits_reg(pos, | ||
403 | entry->msi_attrib.is_64); | ||
404 | } | ||
405 | entry->dev = dev; | 401 | entry->dev = dev; |
406 | if (entry->msi_attrib.maskbit) { | 402 | if (entry->msi_attrib.maskbit) { |
407 | unsigned int maskbits, temp; | 403 | unsigned int base, maskbits, temp; |
404 | |||
405 | base = msi_mask_bits_reg(pos, entry->msi_attrib.is_64); | ||
406 | entry->mask_base = (void __iomem *)(long)base; | ||
407 | |||
408 | /* All MSIs are unmasked by default, Mask them all */ | 408 | /* All MSIs are unmasked by default, Mask them all */ |
409 | pci_read_config_dword(dev, | 409 | pci_read_config_dword(dev, base, &maskbits); |
410 | msi_mask_bits_reg(pos, entry->msi_attrib.is_64), | ||
411 | &maskbits); | ||
412 | temp = (1 << multi_msi_capable(control)); | 410 | temp = (1 << multi_msi_capable(control)); |
413 | temp = ((temp - 1) & ~temp); | 411 | temp = ((temp - 1) & ~temp); |
414 | maskbits |= temp; | 412 | maskbits |= temp; |
415 | pci_write_config_dword(dev, entry->msi_attrib.is_64, maskbits); | 413 | pci_write_config_dword(dev, base, maskbits); |
416 | entry->msi_attrib.maskbits_mask = temp; | 414 | entry->msi_attrib.maskbits_mask = temp; |
417 | } | 415 | } |
418 | list_add_tail(&entry->list, &dev->msi_list); | 416 | list_add_tail(&entry->list, &dev->msi_list); |
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index c697f2680856..9de07b75b993 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c | |||
@@ -355,17 +355,27 @@ static int pci_legacy_suspend(struct device *dev, pm_message_t state) | |||
355 | int i = 0; | 355 | int i = 0; |
356 | 356 | ||
357 | if (drv && drv->suspend) { | 357 | if (drv && drv->suspend) { |
358 | pci_dev->state_saved = false; | ||
359 | |||
358 | i = drv->suspend(pci_dev, state); | 360 | i = drv->suspend(pci_dev, state); |
359 | suspend_report_result(drv->suspend, i); | 361 | suspend_report_result(drv->suspend, i); |
360 | } else { | 362 | if (i) |
361 | pci_save_state(pci_dev); | 363 | return i; |
362 | /* | 364 | |
363 | * This is for compatibility with existing code with legacy PM | 365 | if (pci_dev->state_saved) |
364 | * support. | 366 | goto Fixup; |
365 | */ | 367 | |
366 | pci_pm_set_unknown_state(pci_dev); | 368 | if (WARN_ON_ONCE(pci_dev->current_state != PCI_D0)) |
369 | goto Fixup; | ||
367 | } | 370 | } |
368 | 371 | ||
372 | pci_save_state(pci_dev); | ||
373 | /* | ||
374 | * This is for compatibility with existing code with legacy PM support. | ||
375 | */ | ||
376 | pci_pm_set_unknown_state(pci_dev); | ||
377 | |||
378 | Fixup: | ||
369 | pci_fixup_device(pci_fixup_suspend, pci_dev); | 379 | pci_fixup_device(pci_fixup_suspend, pci_dev); |
370 | 380 | ||
371 | return i; | 381 | return i; |
@@ -386,81 +396,34 @@ static int pci_legacy_suspend_late(struct device *dev, pm_message_t state) | |||
386 | 396 | ||
387 | static int pci_legacy_resume_early(struct device *dev) | 397 | static int pci_legacy_resume_early(struct device *dev) |
388 | { | 398 | { |
389 | int error = 0; | ||
390 | struct pci_dev * pci_dev = to_pci_dev(dev); | 399 | struct pci_dev * pci_dev = to_pci_dev(dev); |
391 | struct pci_driver * drv = pci_dev->driver; | 400 | struct pci_driver * drv = pci_dev->driver; |
392 | 401 | ||
393 | pci_fixup_device(pci_fixup_resume_early, pci_dev); | 402 | return drv && drv->resume_early ? |
394 | 403 | drv->resume_early(pci_dev) : 0; | |
395 | if (drv && drv->resume_early) | ||
396 | error = drv->resume_early(pci_dev); | ||
397 | return error; | ||
398 | } | 404 | } |
399 | 405 | ||
400 | static int pci_legacy_resume(struct device *dev) | 406 | static int pci_legacy_resume(struct device *dev) |
401 | { | 407 | { |
402 | int error; | ||
403 | struct pci_dev * pci_dev = to_pci_dev(dev); | 408 | struct pci_dev * pci_dev = to_pci_dev(dev); |
404 | struct pci_driver * drv = pci_dev->driver; | 409 | struct pci_driver * drv = pci_dev->driver; |
405 | 410 | ||
406 | pci_fixup_device(pci_fixup_resume, pci_dev); | 411 | pci_fixup_device(pci_fixup_resume, pci_dev); |
407 | 412 | ||
408 | if (drv && drv->resume) { | 413 | return drv && drv->resume ? |
409 | error = drv->resume(pci_dev); | 414 | drv->resume(pci_dev) : pci_pm_reenable_device(pci_dev); |
410 | } else { | ||
411 | /* restore the PCI config space */ | ||
412 | pci_restore_state(pci_dev); | ||
413 | error = pci_pm_reenable_device(pci_dev); | ||
414 | } | ||
415 | return error; | ||
416 | } | 415 | } |
417 | 416 | ||
418 | /* Auxiliary functions used by the new power management framework */ | 417 | /* Auxiliary functions used by the new power management framework */ |
419 | 418 | ||
420 | static int pci_restore_standard_config(struct pci_dev *pci_dev) | ||
421 | { | ||
422 | struct pci_dev *parent = pci_dev->bus->self; | ||
423 | int error = 0; | ||
424 | |||
425 | /* Check if the device's bus is operational */ | ||
426 | if (!parent || parent->current_state == PCI_D0) { | ||
427 | pci_restore_state(pci_dev); | ||
428 | pci_update_current_state(pci_dev, PCI_D0); | ||
429 | } else { | ||
430 | dev_warn(&pci_dev->dev, "unable to restore config, " | ||
431 | "bridge %s in low power state D%d\n", pci_name(parent), | ||
432 | parent->current_state); | ||
433 | pci_dev->current_state = PCI_UNKNOWN; | ||
434 | error = -EAGAIN; | ||
435 | } | ||
436 | |||
437 | return error; | ||
438 | } | ||
439 | |||
440 | static bool pci_is_bridge(struct pci_dev *pci_dev) | ||
441 | { | ||
442 | return !!(pci_dev->subordinate); | ||
443 | } | ||
444 | |||
445 | static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev) | 419 | static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev) |
446 | { | 420 | { |
447 | if (pci_restore_standard_config(pci_dev)) | 421 | pci_restore_standard_config(pci_dev); |
448 | pci_fixup_device(pci_fixup_resume_early, pci_dev); | 422 | pci_fixup_device(pci_fixup_resume_early, pci_dev); |
449 | } | 423 | } |
450 | 424 | ||
451 | static int pci_pm_default_resume(struct pci_dev *pci_dev) | 425 | static int pci_pm_default_resume(struct pci_dev *pci_dev) |
452 | { | 426 | { |
453 | /* | ||
454 | * pci_restore_standard_config() should have been called once already, | ||
455 | * but it would have failed if the device's parent bridge had not been | ||
456 | * in power state D0 at that time. Check it and try again if necessary. | ||
457 | */ | ||
458 | if (pci_dev->current_state == PCI_UNKNOWN) { | ||
459 | int error = pci_restore_standard_config(pci_dev); | ||
460 | if (error) | ||
461 | return error; | ||
462 | } | ||
463 | |||
464 | pci_fixup_device(pci_fixup_resume, pci_dev); | 427 | pci_fixup_device(pci_fixup_resume, pci_dev); |
465 | 428 | ||
466 | if (!pci_is_bridge(pci_dev)) | 429 | if (!pci_is_bridge(pci_dev)) |
@@ -575,11 +538,11 @@ static int pci_pm_resume_noirq(struct device *dev) | |||
575 | struct device_driver *drv = dev->driver; | 538 | struct device_driver *drv = dev->driver; |
576 | int error = 0; | 539 | int error = 0; |
577 | 540 | ||
541 | pci_pm_default_resume_noirq(pci_dev); | ||
542 | |||
578 | if (pci_has_legacy_pm_support(pci_dev)) | 543 | if (pci_has_legacy_pm_support(pci_dev)) |
579 | return pci_legacy_resume_early(dev); | 544 | return pci_legacy_resume_early(dev); |
580 | 545 | ||
581 | pci_pm_default_resume_noirq(pci_dev); | ||
582 | |||
583 | if (drv && drv->pm && drv->pm->resume_noirq) | 546 | if (drv && drv->pm && drv->pm->resume_noirq) |
584 | error = drv->pm->resume_noirq(dev); | 547 | error = drv->pm->resume_noirq(dev); |
585 | 548 | ||
@@ -730,11 +693,11 @@ static int pci_pm_restore_noirq(struct device *dev) | |||
730 | struct device_driver *drv = dev->driver; | 693 | struct device_driver *drv = dev->driver; |
731 | int error = 0; | 694 | int error = 0; |
732 | 695 | ||
696 | pci_pm_default_resume_noirq(pci_dev); | ||
697 | |||
733 | if (pci_has_legacy_pm_support(pci_dev)) | 698 | if (pci_has_legacy_pm_support(pci_dev)) |
734 | return pci_legacy_resume_early(dev); | 699 | return pci_legacy_resume_early(dev); |
735 | 700 | ||
736 | pci_pm_default_resume_noirq(pci_dev); | ||
737 | |||
738 | if (drv && drv->pm && drv->pm->restore_noirq) | 701 | if (drv && drv->pm && drv->pm->restore_noirq) |
739 | error = drv->pm->restore_noirq(dev); | 702 | error = drv->pm->restore_noirq(dev); |
740 | 703 | ||
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index c12f6c790698..17bd9325a245 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <asm/dma.h> /* isa_dma_bridge_buggy */ | 22 | #include <asm/dma.h> /* isa_dma_bridge_buggy */ |
23 | #include "pci.h" | 23 | #include "pci.h" |
24 | 24 | ||
25 | unsigned int pci_pm_d3_delay = 10; | 25 | unsigned int pci_pm_d3_delay = PCI_PM_D3_WAIT; |
26 | 26 | ||
27 | #ifdef CONFIG_PCI_DOMAINS | 27 | #ifdef CONFIG_PCI_DOMAINS |
28 | int pci_domains_supported = 1; | 28 | int pci_domains_supported = 1; |
@@ -426,6 +426,7 @@ static inline int platform_pci_sleep_wake(struct pci_dev *dev, bool enable) | |||
426 | * given PCI device | 426 | * given PCI device |
427 | * @dev: PCI device to handle. | 427 | * @dev: PCI device to handle. |
428 | * @state: PCI power state (D0, D1, D2, D3hot) to put the device into. | 428 | * @state: PCI power state (D0, D1, D2, D3hot) to put the device into. |
429 | * @wait: If 'true', wait for the device to change its power state | ||
429 | * | 430 | * |
430 | * RETURN VALUE: | 431 | * RETURN VALUE: |
431 | * -EINVAL if the requested state is invalid. | 432 | * -EINVAL if the requested state is invalid. |
@@ -435,7 +436,7 @@ static inline int platform_pci_sleep_wake(struct pci_dev *dev, bool enable) | |||
435 | * 0 if device's power state has been successfully changed. | 436 | * 0 if device's power state has been successfully changed. |
436 | */ | 437 | */ |
437 | static int | 438 | static int |
438 | pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state) | 439 | pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state, bool wait) |
439 | { | 440 | { |
440 | u16 pmcsr; | 441 | u16 pmcsr; |
441 | bool need_restore = false; | 442 | bool need_restore = false; |
@@ -480,8 +481,10 @@ pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state) | |||
480 | break; | 481 | break; |
481 | case PCI_UNKNOWN: /* Boot-up */ | 482 | case PCI_UNKNOWN: /* Boot-up */ |
482 | if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot | 483 | if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot |
483 | && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET)) | 484 | && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET)) { |
484 | need_restore = true; | 485 | need_restore = true; |
486 | wait = true; | ||
487 | } | ||
485 | /* Fall-through: force to D0 */ | 488 | /* Fall-through: force to D0 */ |
486 | default: | 489 | default: |
487 | pmcsr = 0; | 490 | pmcsr = 0; |
@@ -491,12 +494,15 @@ pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state) | |||
491 | /* enter specified state */ | 494 | /* enter specified state */ |
492 | pci_write_config_word(dev, dev->pm_cap + PCI_PM_CTRL, pmcsr); | 495 | pci_write_config_word(dev, dev->pm_cap + PCI_PM_CTRL, pmcsr); |
493 | 496 | ||
497 | if (!wait) | ||
498 | return 0; | ||
499 | |||
494 | /* Mandatory power management transition delays */ | 500 | /* Mandatory power management transition delays */ |
495 | /* see PCI PM 1.1 5.6.1 table 18 */ | 501 | /* see PCI PM 1.1 5.6.1 table 18 */ |
496 | if (state == PCI_D3hot || dev->current_state == PCI_D3hot) | 502 | if (state == PCI_D3hot || dev->current_state == PCI_D3hot) |
497 | msleep(pci_pm_d3_delay); | 503 | msleep(pci_pm_d3_delay); |
498 | else if (state == PCI_D2 || dev->current_state == PCI_D2) | 504 | else if (state == PCI_D2 || dev->current_state == PCI_D2) |
499 | udelay(200); | 505 | udelay(PCI_PM_D2_DELAY); |
500 | 506 | ||
501 | dev->current_state = state; | 507 | dev->current_state = state; |
502 | 508 | ||
@@ -515,7 +521,7 @@ pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state) | |||
515 | if (need_restore) | 521 | if (need_restore) |
516 | pci_restore_bars(dev); | 522 | pci_restore_bars(dev); |
517 | 523 | ||
518 | if (dev->bus->self) | 524 | if (wait && dev->bus->self) |
519 | pcie_aspm_pm_state_change(dev->bus->self); | 525 | pcie_aspm_pm_state_change(dev->bus->self); |
520 | 526 | ||
521 | return 0; | 527 | return 0; |
@@ -585,7 +591,7 @@ int pci_set_power_state(struct pci_dev *dev, pci_power_t state) | |||
585 | if (state == PCI_D3hot && (dev->dev_flags & PCI_DEV_FLAGS_NO_D3)) | 591 | if (state == PCI_D3hot && (dev->dev_flags & PCI_DEV_FLAGS_NO_D3)) |
586 | return 0; | 592 | return 0; |
587 | 593 | ||
588 | error = pci_raw_set_power_state(dev, state); | 594 | error = pci_raw_set_power_state(dev, state, true); |
589 | 595 | ||
590 | if (state > PCI_D0 && platform_pci_power_manageable(dev)) { | 596 | if (state > PCI_D0 && platform_pci_power_manageable(dev)) { |
591 | /* Allow the platform to finalize the transition */ | 597 | /* Allow the platform to finalize the transition */ |
@@ -730,6 +736,7 @@ pci_save_state(struct pci_dev *dev) | |||
730 | /* XXX: 100% dword access ok here? */ | 736 | /* XXX: 100% dword access ok here? */ |
731 | for (i = 0; i < 16; i++) | 737 | for (i = 0; i < 16; i++) |
732 | pci_read_config_dword(dev, i * 4,&dev->saved_config_space[i]); | 738 | pci_read_config_dword(dev, i * 4,&dev->saved_config_space[i]); |
739 | dev->state_saved = true; | ||
733 | if ((i = pci_save_pcie_state(dev)) != 0) | 740 | if ((i = pci_save_pcie_state(dev)) != 0) |
734 | return i; | 741 | return i; |
735 | if ((i = pci_save_pcix_state(dev)) != 0) | 742 | if ((i = pci_save_pcix_state(dev)) != 0) |
@@ -1260,15 +1267,14 @@ void pci_pm_init(struct pci_dev *dev) | |||
1260 | /* find PCI PM capability in list */ | 1267 | /* find PCI PM capability in list */ |
1261 | pm = pci_find_capability(dev, PCI_CAP_ID_PM); | 1268 | pm = pci_find_capability(dev, PCI_CAP_ID_PM); |
1262 | if (!pm) | 1269 | if (!pm) |
1263 | goto Exit; | 1270 | return; |
1264 | |||
1265 | /* Check device's ability to generate PME# */ | 1271 | /* Check device's ability to generate PME# */ |
1266 | pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc); | 1272 | pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc); |
1267 | 1273 | ||
1268 | if ((pmc & PCI_PM_CAP_VER_MASK) > 3) { | 1274 | if ((pmc & PCI_PM_CAP_VER_MASK) > 3) { |
1269 | dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n", | 1275 | dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n", |
1270 | pmc & PCI_PM_CAP_VER_MASK); | 1276 | pmc & PCI_PM_CAP_VER_MASK); |
1271 | goto Exit; | 1277 | return; |
1272 | } | 1278 | } |
1273 | 1279 | ||
1274 | dev->pm_cap = pm; | 1280 | dev->pm_cap = pm; |
@@ -1307,9 +1313,6 @@ void pci_pm_init(struct pci_dev *dev) | |||
1307 | } else { | 1313 | } else { |
1308 | dev->pme_support = 0; | 1314 | dev->pme_support = 0; |
1309 | } | 1315 | } |
1310 | |||
1311 | Exit: | ||
1312 | pci_update_current_state(dev, PCI_D0); | ||
1313 | } | 1316 | } |
1314 | 1317 | ||
1315 | /** | 1318 | /** |
@@ -1378,6 +1381,50 @@ void pci_allocate_cap_save_buffers(struct pci_dev *dev) | |||
1378 | } | 1381 | } |
1379 | 1382 | ||
1380 | /** | 1383 | /** |
1384 | * pci_restore_standard_config - restore standard config registers of PCI device | ||
1385 | * @dev: PCI device to handle | ||
1386 | * | ||
1387 | * This function assumes that the device's configuration space is accessible. | ||
1388 | * If the device needs to be powered up, the function will wait for it to | ||
1389 | * change the state. | ||
1390 | */ | ||
1391 | int pci_restore_standard_config(struct pci_dev *dev) | ||
1392 | { | ||
1393 | pci_power_t prev_state; | ||
1394 | int error; | ||
1395 | |||
1396 | pci_restore_state(dev); | ||
1397 | pci_update_current_state(dev, PCI_D0); | ||
1398 | |||
1399 | prev_state = dev->current_state; | ||
1400 | if (prev_state == PCI_D0) | ||
1401 | return 0; | ||
1402 | |||
1403 | error = pci_raw_set_power_state(dev, PCI_D0, false); | ||
1404 | if (error) | ||
1405 | return error; | ||
1406 | |||
1407 | if (pci_is_bridge(dev)) { | ||
1408 | if (prev_state > PCI_D1) | ||
1409 | mdelay(PCI_PM_BUS_WAIT); | ||
1410 | } else { | ||
1411 | switch(prev_state) { | ||
1412 | case PCI_D3cold: | ||
1413 | case PCI_D3hot: | ||
1414 | mdelay(pci_pm_d3_delay); | ||
1415 | break; | ||
1416 | case PCI_D2: | ||
1417 | udelay(PCI_PM_D2_DELAY); | ||
1418 | break; | ||
1419 | } | ||
1420 | } | ||
1421 | |||
1422 | dev->current_state = PCI_D0; | ||
1423 | |||
1424 | return 0; | ||
1425 | } | ||
1426 | |||
1427 | /** | ||
1381 | * pci_enable_ari - enable ARI forwarding if hardware support it | 1428 | * pci_enable_ari - enable ARI forwarding if hardware support it |
1382 | * @dev: the PCI device | 1429 | * @dev: the PCI device |
1383 | */ | 1430 | */ |
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 1351bb4addde..26ddf78ac300 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h | |||
@@ -49,6 +49,12 @@ extern void pci_disable_enabled_device(struct pci_dev *dev); | |||
49 | extern void pci_pm_init(struct pci_dev *dev); | 49 | extern void pci_pm_init(struct pci_dev *dev); |
50 | extern void platform_pci_wakeup_init(struct pci_dev *dev); | 50 | extern void platform_pci_wakeup_init(struct pci_dev *dev); |
51 | extern void pci_allocate_cap_save_buffers(struct pci_dev *dev); | 51 | extern void pci_allocate_cap_save_buffers(struct pci_dev *dev); |
52 | extern int pci_restore_standard_config(struct pci_dev *dev); | ||
53 | |||
54 | static inline bool pci_is_bridge(struct pci_dev *pci_dev) | ||
55 | { | ||
56 | return !!(pci_dev->subordinate); | ||
57 | } | ||
52 | 58 | ||
53 | extern int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val); | 59 | extern int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val); |
54 | extern int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val); | 60 | extern int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val); |
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index e65448e99b48..1a266d4ab5f1 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig | |||
@@ -54,6 +54,18 @@ config ASUS_LAPTOP | |||
54 | 54 | ||
55 | If you have an ACPI-compatible ASUS laptop, say Y or M here. | 55 | If you have an ACPI-compatible ASUS laptop, say Y or M here. |
56 | 56 | ||
57 | config DELL_LAPTOP | ||
58 | tristate "Dell Laptop Extras (EXPERIMENTAL)" | ||
59 | depends on X86 | ||
60 | depends on DCDBAS | ||
61 | depends on EXPERIMENTAL | ||
62 | depends on BACKLIGHT_CLASS_DEVICE | ||
63 | depends on RFKILL | ||
64 | default n | ||
65 | ---help--- | ||
66 | This driver adds support for rfkill and backlight control to Dell | ||
67 | laptops. | ||
68 | |||
57 | config FUJITSU_LAPTOP | 69 | config FUJITSU_LAPTOP |
58 | tristate "Fujitsu Laptop Extras" | 70 | tristate "Fujitsu Laptop Extras" |
59 | depends on ACPI | 71 | depends on ACPI |
@@ -192,6 +204,17 @@ config THINKPAD_ACPI | |||
192 | 204 | ||
193 | If you have an IBM or Lenovo ThinkPad laptop, say Y or M here. | 205 | If you have an IBM or Lenovo ThinkPad laptop, say Y or M here. |
194 | 206 | ||
207 | config THINKPAD_ACPI_DEBUGFACILITIES | ||
208 | bool "Maintainer debug facilities" | ||
209 | depends on THINKPAD_ACPI | ||
210 | default n | ||
211 | ---help--- | ||
212 | Enables extra stuff in the thinkpad-acpi which is completely useless | ||
213 | for normal use. Read the driver source to find out what it does. | ||
214 | |||
215 | Say N here, unless you were told by a kernel maintainer to do | ||
216 | otherwise. | ||
217 | |||
195 | config THINKPAD_ACPI_DEBUG | 218 | config THINKPAD_ACPI_DEBUG |
196 | bool "Verbose debug mode" | 219 | bool "Verbose debug mode" |
197 | depends on THINKPAD_ACPI | 220 | depends on THINKPAD_ACPI |
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile index 1e9de2ae0de5..e29065120be9 100644 --- a/drivers/platform/x86/Makefile +++ b/drivers/platform/x86/Makefile | |||
@@ -6,6 +6,7 @@ obj-$(CONFIG_ASUS_LAPTOP) += asus-laptop.o | |||
6 | obj-$(CONFIG_EEEPC_LAPTOP) += eeepc-laptop.o | 6 | obj-$(CONFIG_EEEPC_LAPTOP) += eeepc-laptop.o |
7 | obj-$(CONFIG_MSI_LAPTOP) += msi-laptop.o | 7 | obj-$(CONFIG_MSI_LAPTOP) += msi-laptop.o |
8 | obj-$(CONFIG_COMPAL_LAPTOP) += compal-laptop.o | 8 | obj-$(CONFIG_COMPAL_LAPTOP) += compal-laptop.o |
9 | obj-$(CONFIG_DELL_LAPTOP) += dell-laptop.o | ||
9 | obj-$(CONFIG_ACER_WMI) += acer-wmi.o | 10 | obj-$(CONFIG_ACER_WMI) += acer-wmi.o |
10 | obj-$(CONFIG_HP_WMI) += hp-wmi.o | 11 | obj-$(CONFIG_HP_WMI) += hp-wmi.o |
11 | obj-$(CONFIG_TC1100_WMI) += tc1100-wmi.o | 12 | obj-$(CONFIG_TC1100_WMI) += tc1100-wmi.o |
diff --git a/drivers/misc/dell-laptop.c b/drivers/platform/x86/dell-laptop.c index 4d33a2068b7a..16e11c2ee19a 100644 --- a/drivers/misc/dell-laptop.c +++ b/drivers/platform/x86/dell-laptop.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <linux/rfkill.h> | 22 | #include <linux/rfkill.h> |
23 | #include <linux/power_supply.h> | 23 | #include <linux/power_supply.h> |
24 | #include <linux/acpi.h> | 24 | #include <linux/acpi.h> |
25 | #include "../firmware/dcdbas.h" | 25 | #include "../../firmware/dcdbas.h" |
26 | 26 | ||
27 | #define BRIGHTNESS_TOKEN 0x7d | 27 | #define BRIGHTNESS_TOKEN 0x7d |
28 | 28 | ||
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 02fe2b8b8939..9d93cb971e59 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c | |||
@@ -90,7 +90,7 @@ enum { | |||
90 | }; | 90 | }; |
91 | 91 | ||
92 | static const char *cm_getv[] = { | 92 | static const char *cm_getv[] = { |
93 | "WLDG", NULL, NULL, NULL, | 93 | "WLDG", "BTHG", NULL, NULL, |
94 | "CAMG", NULL, NULL, NULL, | 94 | "CAMG", NULL, NULL, NULL, |
95 | NULL, "PBLG", NULL, NULL, | 95 | NULL, "PBLG", NULL, NULL, |
96 | "CFVG", NULL, NULL, NULL, | 96 | "CFVG", NULL, NULL, NULL, |
@@ -99,7 +99,7 @@ static const char *cm_getv[] = { | |||
99 | }; | 99 | }; |
100 | 100 | ||
101 | static const char *cm_setv[] = { | 101 | static const char *cm_setv[] = { |
102 | "WLDS", NULL, NULL, NULL, | 102 | "WLDS", "BTHS", NULL, NULL, |
103 | "CAMS", NULL, NULL, NULL, | 103 | "CAMS", NULL, NULL, NULL, |
104 | "SDSP", "PBLS", "HDPS", NULL, | 104 | "SDSP", "PBLS", "HDPS", NULL, |
105 | "CFVS", NULL, NULL, NULL, | 105 | "CFVS", NULL, NULL, NULL, |
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index 3478453eba7a..bcbc05107ba8 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c | |||
@@ -21,7 +21,7 @@ | |||
21 | * 02110-1301, USA. | 21 | * 02110-1301, USA. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #define TPACPI_VERSION "0.21" | 24 | #define TPACPI_VERSION "0.22" |
25 | #define TPACPI_SYSFS_VERSION 0x020200 | 25 | #define TPACPI_SYSFS_VERSION 0x020200 |
26 | 26 | ||
27 | /* | 27 | /* |
@@ -122,6 +122,27 @@ enum { | |||
122 | #define TPACPI_HKEY_INPUT_PRODUCT 0x5054 /* "TP" */ | 122 | #define TPACPI_HKEY_INPUT_PRODUCT 0x5054 /* "TP" */ |
123 | #define TPACPI_HKEY_INPUT_VERSION 0x4101 | 123 | #define TPACPI_HKEY_INPUT_VERSION 0x4101 |
124 | 124 | ||
125 | /* ACPI \WGSV commands */ | ||
126 | enum { | ||
127 | TP_ACPI_WGSV_GET_STATE = 0x01, /* Get state information */ | ||
128 | TP_ACPI_WGSV_PWR_ON_ON_RESUME = 0x02, /* Resume WWAN powered on */ | ||
129 | TP_ACPI_WGSV_PWR_OFF_ON_RESUME = 0x03, /* Resume WWAN powered off */ | ||
130 | TP_ACPI_WGSV_SAVE_STATE = 0x04, /* Save state for S4/S5 */ | ||
131 | }; | ||
132 | |||
133 | /* TP_ACPI_WGSV_GET_STATE bits */ | ||
134 | enum { | ||
135 | TP_ACPI_WGSV_STATE_WWANEXIST = 0x0001, /* WWAN hw available */ | ||
136 | TP_ACPI_WGSV_STATE_WWANPWR = 0x0002, /* WWAN radio enabled */ | ||
137 | TP_ACPI_WGSV_STATE_WWANPWRRES = 0x0004, /* WWAN state at resume */ | ||
138 | TP_ACPI_WGSV_STATE_WWANBIOSOFF = 0x0008, /* WWAN disabled in BIOS */ | ||
139 | TP_ACPI_WGSV_STATE_BLTHEXIST = 0x0001, /* BLTH hw available */ | ||
140 | TP_ACPI_WGSV_STATE_BLTHPWR = 0x0002, /* BLTH radio enabled */ | ||
141 | TP_ACPI_WGSV_STATE_BLTHPWRRES = 0x0004, /* BLTH state at resume */ | ||
142 | TP_ACPI_WGSV_STATE_BLTHBIOSOFF = 0x0008, /* BLTH disabled in BIOS */ | ||
143 | TP_ACPI_WGSV_STATE_UWBEXIST = 0x0010, /* UWB hw available */ | ||
144 | TP_ACPI_WGSV_STATE_UWBPWR = 0x0020, /* UWB radio enabled */ | ||
145 | }; | ||
125 | 146 | ||
126 | /**************************************************************************** | 147 | /**************************************************************************** |
127 | * Main driver | 148 | * Main driver |
@@ -148,14 +169,17 @@ enum { | |||
148 | enum { | 169 | enum { |
149 | TPACPI_RFK_BLUETOOTH_SW_ID = 0, | 170 | TPACPI_RFK_BLUETOOTH_SW_ID = 0, |
150 | TPACPI_RFK_WWAN_SW_ID, | 171 | TPACPI_RFK_WWAN_SW_ID, |
172 | TPACPI_RFK_UWB_SW_ID, | ||
151 | }; | 173 | }; |
152 | 174 | ||
153 | /* Debugging */ | 175 | /* Debugging */ |
154 | #define TPACPI_LOG TPACPI_FILE ": " | 176 | #define TPACPI_LOG TPACPI_FILE ": " |
155 | #define TPACPI_ERR KERN_ERR TPACPI_LOG | 177 | #define TPACPI_ALERT KERN_ALERT TPACPI_LOG |
156 | #define TPACPI_NOTICE KERN_NOTICE TPACPI_LOG | 178 | #define TPACPI_CRIT KERN_CRIT TPACPI_LOG |
157 | #define TPACPI_INFO KERN_INFO TPACPI_LOG | 179 | #define TPACPI_ERR KERN_ERR TPACPI_LOG |
158 | #define TPACPI_DEBUG KERN_DEBUG TPACPI_LOG | 180 | #define TPACPI_NOTICE KERN_NOTICE TPACPI_LOG |
181 | #define TPACPI_INFO KERN_INFO TPACPI_LOG | ||
182 | #define TPACPI_DEBUG KERN_DEBUG TPACPI_LOG | ||
159 | 183 | ||
160 | #define TPACPI_DBG_ALL 0xffff | 184 | #define TPACPI_DBG_ALL 0xffff |
161 | #define TPACPI_DBG_INIT 0x0001 | 185 | #define TPACPI_DBG_INIT 0x0001 |
@@ -201,6 +225,7 @@ struct ibm_struct { | |||
201 | void (*exit) (void); | 225 | void (*exit) (void); |
202 | void (*resume) (void); | 226 | void (*resume) (void); |
203 | void (*suspend) (pm_message_t state); | 227 | void (*suspend) (pm_message_t state); |
228 | void (*shutdown) (void); | ||
204 | 229 | ||
205 | struct list_head all_drivers; | 230 | struct list_head all_drivers; |
206 | 231 | ||
@@ -239,6 +264,7 @@ static struct { | |||
239 | u32 bright_16levels:1; | 264 | u32 bright_16levels:1; |
240 | u32 bright_acpimode:1; | 265 | u32 bright_acpimode:1; |
241 | u32 wan:1; | 266 | u32 wan:1; |
267 | u32 uwb:1; | ||
242 | u32 fan_ctrl_status_undef:1; | 268 | u32 fan_ctrl_status_undef:1; |
243 | u32 input_device_registered:1; | 269 | u32 input_device_registered:1; |
244 | u32 platform_drv_registered:1; | 270 | u32 platform_drv_registered:1; |
@@ -288,6 +314,18 @@ struct tpacpi_led_classdev { | |||
288 | unsigned int led; | 314 | unsigned int led; |
289 | }; | 315 | }; |
290 | 316 | ||
317 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
318 | static int dbg_wlswemul; | ||
319 | static int tpacpi_wlsw_emulstate; | ||
320 | static int dbg_bluetoothemul; | ||
321 | static int tpacpi_bluetooth_emulstate; | ||
322 | static int dbg_wwanemul; | ||
323 | static int tpacpi_wwan_emulstate; | ||
324 | static int dbg_uwbemul; | ||
325 | static int tpacpi_uwb_emulstate; | ||
326 | #endif | ||
327 | |||
328 | |||
291 | /**************************************************************************** | 329 | /**************************************************************************** |
292 | **************************************************************************** | 330 | **************************************************************************** |
293 | * | 331 | * |
@@ -728,6 +766,18 @@ static int tpacpi_resume_handler(struct platform_device *pdev) | |||
728 | return 0; | 766 | return 0; |
729 | } | 767 | } |
730 | 768 | ||
769 | static void tpacpi_shutdown_handler(struct platform_device *pdev) | ||
770 | { | ||
771 | struct ibm_struct *ibm, *itmp; | ||
772 | |||
773 | list_for_each_entry_safe(ibm, itmp, | ||
774 | &tpacpi_all_drivers, | ||
775 | all_drivers) { | ||
776 | if (ibm->shutdown) | ||
777 | (ibm->shutdown)(); | ||
778 | } | ||
779 | } | ||
780 | |||
731 | static struct platform_driver tpacpi_pdriver = { | 781 | static struct platform_driver tpacpi_pdriver = { |
732 | .driver = { | 782 | .driver = { |
733 | .name = TPACPI_DRVR_NAME, | 783 | .name = TPACPI_DRVR_NAME, |
@@ -735,6 +785,7 @@ static struct platform_driver tpacpi_pdriver = { | |||
735 | }, | 785 | }, |
736 | .suspend = tpacpi_suspend_handler, | 786 | .suspend = tpacpi_suspend_handler, |
737 | .resume = tpacpi_resume_handler, | 787 | .resume = tpacpi_resume_handler, |
788 | .shutdown = tpacpi_shutdown_handler, | ||
738 | }; | 789 | }; |
739 | 790 | ||
740 | static struct platform_driver tpacpi_hwmon_pdriver = { | 791 | static struct platform_driver tpacpi_hwmon_pdriver = { |
@@ -922,11 +973,27 @@ static int __init tpacpi_new_rfkill(const unsigned int id, | |||
922 | struct rfkill **rfk, | 973 | struct rfkill **rfk, |
923 | const enum rfkill_type rfktype, | 974 | const enum rfkill_type rfktype, |
924 | const char *name, | 975 | const char *name, |
976 | const bool set_default, | ||
925 | int (*toggle_radio)(void *, enum rfkill_state), | 977 | int (*toggle_radio)(void *, enum rfkill_state), |
926 | int (*get_state)(void *, enum rfkill_state *)) | 978 | int (*get_state)(void *, enum rfkill_state *)) |
927 | { | 979 | { |
928 | int res; | 980 | int res; |
929 | enum rfkill_state initial_state; | 981 | enum rfkill_state initial_state = RFKILL_STATE_SOFT_BLOCKED; |
982 | |||
983 | res = get_state(NULL, &initial_state); | ||
984 | if (res < 0) { | ||
985 | printk(TPACPI_ERR | ||
986 | "failed to read initial state for %s, error %d; " | ||
987 | "will turn radio off\n", name, res); | ||
988 | } else if (set_default) { | ||
989 | /* try to set the initial state as the default for the rfkill | ||
990 | * type, since we ask the firmware to preserve it across S5 in | ||
991 | * NVRAM */ | ||
992 | rfkill_set_default(rfktype, | ||
993 | (initial_state == RFKILL_STATE_UNBLOCKED) ? | ||
994 | RFKILL_STATE_UNBLOCKED : | ||
995 | RFKILL_STATE_SOFT_BLOCKED); | ||
996 | } | ||
930 | 997 | ||
931 | *rfk = rfkill_allocate(&tpacpi_pdev->dev, rfktype); | 998 | *rfk = rfkill_allocate(&tpacpi_pdev->dev, rfktype); |
932 | if (!*rfk) { | 999 | if (!*rfk) { |
@@ -938,9 +1005,7 @@ static int __init tpacpi_new_rfkill(const unsigned int id, | |||
938 | (*rfk)->name = name; | 1005 | (*rfk)->name = name; |
939 | (*rfk)->get_state = get_state; | 1006 | (*rfk)->get_state = get_state; |
940 | (*rfk)->toggle_radio = toggle_radio; | 1007 | (*rfk)->toggle_radio = toggle_radio; |
941 | 1008 | (*rfk)->state = initial_state; | |
942 | if (!get_state(NULL, &initial_state)) | ||
943 | (*rfk)->state = initial_state; | ||
944 | 1009 | ||
945 | res = rfkill_register(*rfk); | 1010 | res = rfkill_register(*rfk); |
946 | if (res < 0) { | 1011 | if (res < 0) { |
@@ -1006,6 +1071,119 @@ static DRIVER_ATTR(version, S_IRUGO, | |||
1006 | 1071 | ||
1007 | /* --------------------------------------------------------------------- */ | 1072 | /* --------------------------------------------------------------------- */ |
1008 | 1073 | ||
1074 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
1075 | |||
1076 | static void tpacpi_send_radiosw_update(void); | ||
1077 | |||
1078 | /* wlsw_emulstate ------------------------------------------------------ */ | ||
1079 | static ssize_t tpacpi_driver_wlsw_emulstate_show(struct device_driver *drv, | ||
1080 | char *buf) | ||
1081 | { | ||
1082 | return snprintf(buf, PAGE_SIZE, "%d\n", !!tpacpi_wlsw_emulstate); | ||
1083 | } | ||
1084 | |||
1085 | static ssize_t tpacpi_driver_wlsw_emulstate_store(struct device_driver *drv, | ||
1086 | const char *buf, size_t count) | ||
1087 | { | ||
1088 | unsigned long t; | ||
1089 | |||
1090 | if (parse_strtoul(buf, 1, &t)) | ||
1091 | return -EINVAL; | ||
1092 | |||
1093 | if (tpacpi_wlsw_emulstate != t) { | ||
1094 | tpacpi_wlsw_emulstate = !!t; | ||
1095 | tpacpi_send_radiosw_update(); | ||
1096 | } else | ||
1097 | tpacpi_wlsw_emulstate = !!t; | ||
1098 | |||
1099 | return count; | ||
1100 | } | ||
1101 | |||
1102 | static DRIVER_ATTR(wlsw_emulstate, S_IWUSR | S_IRUGO, | ||
1103 | tpacpi_driver_wlsw_emulstate_show, | ||
1104 | tpacpi_driver_wlsw_emulstate_store); | ||
1105 | |||
1106 | /* bluetooth_emulstate ------------------------------------------------- */ | ||
1107 | static ssize_t tpacpi_driver_bluetooth_emulstate_show( | ||
1108 | struct device_driver *drv, | ||
1109 | char *buf) | ||
1110 | { | ||
1111 | return snprintf(buf, PAGE_SIZE, "%d\n", !!tpacpi_bluetooth_emulstate); | ||
1112 | } | ||
1113 | |||
1114 | static ssize_t tpacpi_driver_bluetooth_emulstate_store( | ||
1115 | struct device_driver *drv, | ||
1116 | const char *buf, size_t count) | ||
1117 | { | ||
1118 | unsigned long t; | ||
1119 | |||
1120 | if (parse_strtoul(buf, 1, &t)) | ||
1121 | return -EINVAL; | ||
1122 | |||
1123 | tpacpi_bluetooth_emulstate = !!t; | ||
1124 | |||
1125 | return count; | ||
1126 | } | ||
1127 | |||
1128 | static DRIVER_ATTR(bluetooth_emulstate, S_IWUSR | S_IRUGO, | ||
1129 | tpacpi_driver_bluetooth_emulstate_show, | ||
1130 | tpacpi_driver_bluetooth_emulstate_store); | ||
1131 | |||
1132 | /* wwan_emulstate ------------------------------------------------- */ | ||
1133 | static ssize_t tpacpi_driver_wwan_emulstate_show( | ||
1134 | struct device_driver *drv, | ||
1135 | char *buf) | ||
1136 | { | ||
1137 | return snprintf(buf, PAGE_SIZE, "%d\n", !!tpacpi_wwan_emulstate); | ||
1138 | } | ||
1139 | |||
1140 | static ssize_t tpacpi_driver_wwan_emulstate_store( | ||
1141 | struct device_driver *drv, | ||
1142 | const char *buf, size_t count) | ||
1143 | { | ||
1144 | unsigned long t; | ||
1145 | |||
1146 | if (parse_strtoul(buf, 1, &t)) | ||
1147 | return -EINVAL; | ||
1148 | |||
1149 | tpacpi_wwan_emulstate = !!t; | ||
1150 | |||
1151 | return count; | ||
1152 | } | ||
1153 | |||
1154 | static DRIVER_ATTR(wwan_emulstate, S_IWUSR | S_IRUGO, | ||
1155 | tpacpi_driver_wwan_emulstate_show, | ||
1156 | tpacpi_driver_wwan_emulstate_store); | ||
1157 | |||
1158 | /* uwb_emulstate ------------------------------------------------- */ | ||
1159 | static ssize_t tpacpi_driver_uwb_emulstate_show( | ||
1160 | struct device_driver *drv, | ||
1161 | char *buf) | ||
1162 | { | ||
1163 | return snprintf(buf, PAGE_SIZE, "%d\n", !!tpacpi_uwb_emulstate); | ||
1164 | } | ||
1165 | |||
1166 | static ssize_t tpacpi_driver_uwb_emulstate_store( | ||
1167 | struct device_driver *drv, | ||
1168 | const char *buf, size_t count) | ||
1169 | { | ||
1170 | unsigned long t; | ||
1171 | |||
1172 | if (parse_strtoul(buf, 1, &t)) | ||
1173 | return -EINVAL; | ||
1174 | |||
1175 | tpacpi_uwb_emulstate = !!t; | ||
1176 | |||
1177 | return count; | ||
1178 | } | ||
1179 | |||
1180 | static DRIVER_ATTR(uwb_emulstate, S_IWUSR | S_IRUGO, | ||
1181 | tpacpi_driver_uwb_emulstate_show, | ||
1182 | tpacpi_driver_uwb_emulstate_store); | ||
1183 | #endif | ||
1184 | |||
1185 | /* --------------------------------------------------------------------- */ | ||
1186 | |||
1009 | static struct driver_attribute *tpacpi_driver_attributes[] = { | 1187 | static struct driver_attribute *tpacpi_driver_attributes[] = { |
1010 | &driver_attr_debug_level, &driver_attr_version, | 1188 | &driver_attr_debug_level, &driver_attr_version, |
1011 | &driver_attr_interface_version, | 1189 | &driver_attr_interface_version, |
@@ -1022,6 +1200,17 @@ static int __init tpacpi_create_driver_attributes(struct device_driver *drv) | |||
1022 | i++; | 1200 | i++; |
1023 | } | 1201 | } |
1024 | 1202 | ||
1203 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
1204 | if (!res && dbg_wlswemul) | ||
1205 | res = driver_create_file(drv, &driver_attr_wlsw_emulstate); | ||
1206 | if (!res && dbg_bluetoothemul) | ||
1207 | res = driver_create_file(drv, &driver_attr_bluetooth_emulstate); | ||
1208 | if (!res && dbg_wwanemul) | ||
1209 | res = driver_create_file(drv, &driver_attr_wwan_emulstate); | ||
1210 | if (!res && dbg_uwbemul) | ||
1211 | res = driver_create_file(drv, &driver_attr_uwb_emulstate); | ||
1212 | #endif | ||
1213 | |||
1025 | return res; | 1214 | return res; |
1026 | } | 1215 | } |
1027 | 1216 | ||
@@ -1031,6 +1220,13 @@ static void tpacpi_remove_driver_attributes(struct device_driver *drv) | |||
1031 | 1220 | ||
1032 | for (i = 0; i < ARRAY_SIZE(tpacpi_driver_attributes); i++) | 1221 | for (i = 0; i < ARRAY_SIZE(tpacpi_driver_attributes); i++) |
1033 | driver_remove_file(drv, tpacpi_driver_attributes[i]); | 1222 | driver_remove_file(drv, tpacpi_driver_attributes[i]); |
1223 | |||
1224 | #ifdef THINKPAD_ACPI_DEBUGFACILITIES | ||
1225 | driver_remove_file(drv, &driver_attr_wlsw_emulstate); | ||
1226 | driver_remove_file(drv, &driver_attr_bluetooth_emulstate); | ||
1227 | driver_remove_file(drv, &driver_attr_wwan_emulstate); | ||
1228 | driver_remove_file(drv, &driver_attr_uwb_emulstate); | ||
1229 | #endif | ||
1034 | } | 1230 | } |
1035 | 1231 | ||
1036 | /**************************************************************************** | 1232 | /**************************************************************************** |
@@ -1216,6 +1412,12 @@ static struct attribute_set *hotkey_dev_attributes; | |||
1216 | 1412 | ||
1217 | static int hotkey_get_wlsw(int *status) | 1413 | static int hotkey_get_wlsw(int *status) |
1218 | { | 1414 | { |
1415 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
1416 | if (dbg_wlswemul) { | ||
1417 | *status = !!tpacpi_wlsw_emulstate; | ||
1418 | return 0; | ||
1419 | } | ||
1420 | #endif | ||
1219 | if (!acpi_evalf(hkey_handle, status, "WLSW", "d")) | 1421 | if (!acpi_evalf(hkey_handle, status, "WLSW", "d")) |
1220 | return -EIO; | 1422 | return -EIO; |
1221 | return 0; | 1423 | return 0; |
@@ -1678,7 +1880,7 @@ static ssize_t hotkey_mask_show(struct device *dev, | |||
1678 | { | 1880 | { |
1679 | int res; | 1881 | int res; |
1680 | 1882 | ||
1681 | if (mutex_lock_interruptible(&hotkey_mutex)) | 1883 | if (mutex_lock_killable(&hotkey_mutex)) |
1682 | return -ERESTARTSYS; | 1884 | return -ERESTARTSYS; |
1683 | res = hotkey_mask_get(); | 1885 | res = hotkey_mask_get(); |
1684 | mutex_unlock(&hotkey_mutex); | 1886 | mutex_unlock(&hotkey_mutex); |
@@ -1697,7 +1899,7 @@ static ssize_t hotkey_mask_store(struct device *dev, | |||
1697 | if (parse_strtoul(buf, 0xffffffffUL, &t)) | 1899 | if (parse_strtoul(buf, 0xffffffffUL, &t)) |
1698 | return -EINVAL; | 1900 | return -EINVAL; |
1699 | 1901 | ||
1700 | if (mutex_lock_interruptible(&hotkey_mutex)) | 1902 | if (mutex_lock_killable(&hotkey_mutex)) |
1701 | return -ERESTARTSYS; | 1903 | return -ERESTARTSYS; |
1702 | 1904 | ||
1703 | res = hotkey_mask_set(t); | 1905 | res = hotkey_mask_set(t); |
@@ -1783,7 +1985,7 @@ static ssize_t hotkey_source_mask_store(struct device *dev, | |||
1783 | ((t & ~TPACPI_HKEY_NVRAM_KNOWN_MASK) != 0)) | 1985 | ((t & ~TPACPI_HKEY_NVRAM_KNOWN_MASK) != 0)) |
1784 | return -EINVAL; | 1986 | return -EINVAL; |
1785 | 1987 | ||
1786 | if (mutex_lock_interruptible(&hotkey_mutex)) | 1988 | if (mutex_lock_killable(&hotkey_mutex)) |
1787 | return -ERESTARTSYS; | 1989 | return -ERESTARTSYS; |
1788 | 1990 | ||
1789 | HOTKEY_CONFIG_CRITICAL_START | 1991 | HOTKEY_CONFIG_CRITICAL_START |
@@ -1818,7 +2020,7 @@ static ssize_t hotkey_poll_freq_store(struct device *dev, | |||
1818 | if (parse_strtoul(buf, 25, &t)) | 2020 | if (parse_strtoul(buf, 25, &t)) |
1819 | return -EINVAL; | 2021 | return -EINVAL; |
1820 | 2022 | ||
1821 | if (mutex_lock_interruptible(&hotkey_mutex)) | 2023 | if (mutex_lock_killable(&hotkey_mutex)) |
1822 | return -ERESTARTSYS; | 2024 | return -ERESTARTSYS; |
1823 | 2025 | ||
1824 | hotkey_poll_freq = t; | 2026 | hotkey_poll_freq = t; |
@@ -1958,6 +2160,7 @@ static struct attribute *hotkey_mask_attributes[] __initdata = { | |||
1958 | 2160 | ||
1959 | static void bluetooth_update_rfk(void); | 2161 | static void bluetooth_update_rfk(void); |
1960 | static void wan_update_rfk(void); | 2162 | static void wan_update_rfk(void); |
2163 | static void uwb_update_rfk(void); | ||
1961 | static void tpacpi_send_radiosw_update(void) | 2164 | static void tpacpi_send_radiosw_update(void) |
1962 | { | 2165 | { |
1963 | int wlsw; | 2166 | int wlsw; |
@@ -1967,6 +2170,8 @@ static void tpacpi_send_radiosw_update(void) | |||
1967 | bluetooth_update_rfk(); | 2170 | bluetooth_update_rfk(); |
1968 | if (tp_features.wan) | 2171 | if (tp_features.wan) |
1969 | wan_update_rfk(); | 2172 | wan_update_rfk(); |
2173 | if (tp_features.uwb) | ||
2174 | uwb_update_rfk(); | ||
1970 | 2175 | ||
1971 | if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&wlsw)) { | 2176 | if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&wlsw)) { |
1972 | mutex_lock(&tpacpi_inputdev_send_mutex); | 2177 | mutex_lock(&tpacpi_inputdev_send_mutex); |
@@ -2222,6 +2427,13 @@ static int __init hotkey_init(struct ibm_init_struct *iibm) | |||
2222 | hotkey_source_mask, hotkey_poll_freq); | 2427 | hotkey_source_mask, hotkey_poll_freq); |
2223 | #endif | 2428 | #endif |
2224 | 2429 | ||
2430 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
2431 | if (dbg_wlswemul) { | ||
2432 | tp_features.hotkey_wlsw = 1; | ||
2433 | printk(TPACPI_INFO | ||
2434 | "radio switch emulation enabled\n"); | ||
2435 | } else | ||
2436 | #endif | ||
2225 | /* Not all thinkpads have a hardware radio switch */ | 2437 | /* Not all thinkpads have a hardware radio switch */ |
2226 | if (acpi_evalf(hkey_handle, &status, "WLSW", "qd")) { | 2438 | if (acpi_evalf(hkey_handle, &status, "WLSW", "qd")) { |
2227 | tp_features.hotkey_wlsw = 1; | 2439 | tp_features.hotkey_wlsw = 1; |
@@ -2361,13 +2573,154 @@ err_exit: | |||
2361 | return (res < 0)? res : 1; | 2573 | return (res < 0)? res : 1; |
2362 | } | 2574 | } |
2363 | 2575 | ||
2576 | static bool hotkey_notify_hotkey(const u32 hkey, | ||
2577 | bool *send_acpi_ev, | ||
2578 | bool *ignore_acpi_ev) | ||
2579 | { | ||
2580 | /* 0x1000-0x1FFF: key presses */ | ||
2581 | unsigned int scancode = hkey & 0xfff; | ||
2582 | *send_acpi_ev = true; | ||
2583 | *ignore_acpi_ev = false; | ||
2584 | |||
2585 | if (scancode > 0 && scancode < 0x21) { | ||
2586 | scancode--; | ||
2587 | if (!(hotkey_source_mask & (1 << scancode))) { | ||
2588 | tpacpi_input_send_key(scancode); | ||
2589 | *send_acpi_ev = false; | ||
2590 | } else { | ||
2591 | *ignore_acpi_ev = true; | ||
2592 | } | ||
2593 | return true; | ||
2594 | } | ||
2595 | return false; | ||
2596 | } | ||
2597 | |||
2598 | static bool hotkey_notify_wakeup(const u32 hkey, | ||
2599 | bool *send_acpi_ev, | ||
2600 | bool *ignore_acpi_ev) | ||
2601 | { | ||
2602 | /* 0x2000-0x2FFF: Wakeup reason */ | ||
2603 | *send_acpi_ev = true; | ||
2604 | *ignore_acpi_ev = false; | ||
2605 | |||
2606 | switch (hkey) { | ||
2607 | case 0x2304: /* suspend, undock */ | ||
2608 | case 0x2404: /* hibernation, undock */ | ||
2609 | hotkey_wakeup_reason = TP_ACPI_WAKEUP_UNDOCK; | ||
2610 | *ignore_acpi_ev = true; | ||
2611 | break; | ||
2612 | |||
2613 | case 0x2305: /* suspend, bay eject */ | ||
2614 | case 0x2405: /* hibernation, bay eject */ | ||
2615 | hotkey_wakeup_reason = TP_ACPI_WAKEUP_BAYEJ; | ||
2616 | *ignore_acpi_ev = true; | ||
2617 | break; | ||
2618 | |||
2619 | case 0x2313: /* Battery on critical low level (S3) */ | ||
2620 | case 0x2413: /* Battery on critical low level (S4) */ | ||
2621 | printk(TPACPI_ALERT | ||
2622 | "EMERGENCY WAKEUP: battery almost empty\n"); | ||
2623 | /* how to auto-heal: */ | ||
2624 | /* 2313: woke up from S3, go to S4/S5 */ | ||
2625 | /* 2413: woke up from S4, go to S5 */ | ||
2626 | break; | ||
2627 | |||
2628 | default: | ||
2629 | return false; | ||
2630 | } | ||
2631 | |||
2632 | if (hotkey_wakeup_reason != TP_ACPI_WAKEUP_NONE) { | ||
2633 | printk(TPACPI_INFO | ||
2634 | "woke up due to a hot-unplug " | ||
2635 | "request...\n"); | ||
2636 | hotkey_wakeup_reason_notify_change(); | ||
2637 | } | ||
2638 | return true; | ||
2639 | } | ||
2640 | |||
2641 | static bool hotkey_notify_usrevent(const u32 hkey, | ||
2642 | bool *send_acpi_ev, | ||
2643 | bool *ignore_acpi_ev) | ||
2644 | { | ||
2645 | /* 0x5000-0x5FFF: human interface helpers */ | ||
2646 | *send_acpi_ev = true; | ||
2647 | *ignore_acpi_ev = false; | ||
2648 | |||
2649 | switch (hkey) { | ||
2650 | case 0x5010: /* Lenovo new BIOS: brightness changed */ | ||
2651 | case 0x500b: /* X61t: tablet pen inserted into bay */ | ||
2652 | case 0x500c: /* X61t: tablet pen removed from bay */ | ||
2653 | return true; | ||
2654 | |||
2655 | case 0x5009: /* X41t-X61t: swivel up (tablet mode) */ | ||
2656 | case 0x500a: /* X41t-X61t: swivel down (normal mode) */ | ||
2657 | tpacpi_input_send_tabletsw(); | ||
2658 | hotkey_tablet_mode_notify_change(); | ||
2659 | *send_acpi_ev = false; | ||
2660 | return true; | ||
2661 | |||
2662 | case 0x5001: | ||
2663 | case 0x5002: | ||
2664 | /* LID switch events. Do not propagate */ | ||
2665 | *ignore_acpi_ev = true; | ||
2666 | return true; | ||
2667 | |||
2668 | default: | ||
2669 | return false; | ||
2670 | } | ||
2671 | } | ||
2672 | |||
2673 | static bool hotkey_notify_thermal(const u32 hkey, | ||
2674 | bool *send_acpi_ev, | ||
2675 | bool *ignore_acpi_ev) | ||
2676 | { | ||
2677 | /* 0x6000-0x6FFF: thermal alarms */ | ||
2678 | *send_acpi_ev = true; | ||
2679 | *ignore_acpi_ev = false; | ||
2680 | |||
2681 | switch (hkey) { | ||
2682 | case 0x6011: | ||
2683 | printk(TPACPI_CRIT | ||
2684 | "THERMAL ALARM: battery is too hot!\n"); | ||
2685 | /* recommended action: warn user through gui */ | ||
2686 | return true; | ||
2687 | case 0x6012: | ||
2688 | printk(TPACPI_ALERT | ||
2689 | "THERMAL EMERGENCY: battery is extremely hot!\n"); | ||
2690 | /* recommended action: immediate sleep/hibernate */ | ||
2691 | return true; | ||
2692 | case 0x6021: | ||
2693 | printk(TPACPI_CRIT | ||
2694 | "THERMAL ALARM: " | ||
2695 | "a sensor reports something is too hot!\n"); | ||
2696 | /* recommended action: warn user through gui, that */ | ||
2697 | /* some internal component is too hot */ | ||
2698 | return true; | ||
2699 | case 0x6022: | ||
2700 | printk(TPACPI_ALERT | ||
2701 | "THERMAL EMERGENCY: " | ||
2702 | "a sensor reports something is extremely hot!\n"); | ||
2703 | /* recommended action: immediate sleep/hibernate */ | ||
2704 | return true; | ||
2705 | case 0x6030: | ||
2706 | printk(TPACPI_INFO | ||
2707 | "EC reports that Thermal Table has changed\n"); | ||
2708 | /* recommended action: do nothing, we don't have | ||
2709 | * Lenovo ATM information */ | ||
2710 | return true; | ||
2711 | default: | ||
2712 | printk(TPACPI_ALERT | ||
2713 | "THERMAL ALERT: unknown thermal alarm received\n"); | ||
2714 | return false; | ||
2715 | } | ||
2716 | } | ||
2717 | |||
2364 | static void hotkey_notify(struct ibm_struct *ibm, u32 event) | 2718 | static void hotkey_notify(struct ibm_struct *ibm, u32 event) |
2365 | { | 2719 | { |
2366 | u32 hkey; | 2720 | u32 hkey; |
2367 | unsigned int scancode; | 2721 | bool send_acpi_ev; |
2368 | int send_acpi_ev; | 2722 | bool ignore_acpi_ev; |
2369 | int ignore_acpi_ev; | 2723 | bool known_ev; |
2370 | int unk_ev; | ||
2371 | 2724 | ||
2372 | if (event != 0x80) { | 2725 | if (event != 0x80) { |
2373 | printk(TPACPI_ERR | 2726 | printk(TPACPI_ERR |
@@ -2375,7 +2728,7 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event) | |||
2375 | /* forward it to userspace, maybe it knows how to handle it */ | 2728 | /* forward it to userspace, maybe it knows how to handle it */ |
2376 | acpi_bus_generate_netlink_event( | 2729 | acpi_bus_generate_netlink_event( |
2377 | ibm->acpi->device->pnp.device_class, | 2730 | ibm->acpi->device->pnp.device_class, |
2378 | ibm->acpi->device->dev.bus_id, | 2731 | dev_name(&ibm->acpi->device->dev), |
2379 | event, 0); | 2732 | event, 0); |
2380 | return; | 2733 | return; |
2381 | } | 2734 | } |
@@ -2391,107 +2744,72 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event) | |||
2391 | return; | 2744 | return; |
2392 | } | 2745 | } |
2393 | 2746 | ||
2394 | send_acpi_ev = 1; | 2747 | send_acpi_ev = true; |
2395 | ignore_acpi_ev = 0; | 2748 | ignore_acpi_ev = false; |
2396 | unk_ev = 0; | ||
2397 | 2749 | ||
2398 | switch (hkey >> 12) { | 2750 | switch (hkey >> 12) { |
2399 | case 1: | 2751 | case 1: |
2400 | /* 0x1000-0x1FFF: key presses */ | 2752 | /* 0x1000-0x1FFF: key presses */ |
2401 | scancode = hkey & 0xfff; | 2753 | known_ev = hotkey_notify_hotkey(hkey, &send_acpi_ev, |
2402 | if (scancode > 0 && scancode < 0x21) { | 2754 | &ignore_acpi_ev); |
2403 | scancode--; | ||
2404 | if (!(hotkey_source_mask & (1 << scancode))) { | ||
2405 | tpacpi_input_send_key(scancode); | ||
2406 | send_acpi_ev = 0; | ||
2407 | } else { | ||
2408 | ignore_acpi_ev = 1; | ||
2409 | } | ||
2410 | } else { | ||
2411 | unk_ev = 1; | ||
2412 | } | ||
2413 | break; | 2755 | break; |
2414 | case 2: | 2756 | case 2: |
2415 | /* Wakeup reason */ | 2757 | /* 0x2000-0x2FFF: Wakeup reason */ |
2416 | switch (hkey) { | 2758 | known_ev = hotkey_notify_wakeup(hkey, &send_acpi_ev, |
2417 | case 0x2304: /* suspend, undock */ | 2759 | &ignore_acpi_ev); |
2418 | case 0x2404: /* hibernation, undock */ | ||
2419 | hotkey_wakeup_reason = TP_ACPI_WAKEUP_UNDOCK; | ||
2420 | ignore_acpi_ev = 1; | ||
2421 | break; | ||
2422 | case 0x2305: /* suspend, bay eject */ | ||
2423 | case 0x2405: /* hibernation, bay eject */ | ||
2424 | hotkey_wakeup_reason = TP_ACPI_WAKEUP_BAYEJ; | ||
2425 | ignore_acpi_ev = 1; | ||
2426 | break; | ||
2427 | default: | ||
2428 | unk_ev = 1; | ||
2429 | } | ||
2430 | if (hotkey_wakeup_reason != TP_ACPI_WAKEUP_NONE) { | ||
2431 | printk(TPACPI_INFO | ||
2432 | "woke up due to a hot-unplug " | ||
2433 | "request...\n"); | ||
2434 | hotkey_wakeup_reason_notify_change(); | ||
2435 | } | ||
2436 | break; | 2760 | break; |
2437 | case 3: | 2761 | case 3: |
2438 | /* bay-related wakeups */ | 2762 | /* 0x3000-0x3FFF: bay-related wakeups */ |
2439 | if (hkey == 0x3003) { | 2763 | if (hkey == 0x3003) { |
2440 | hotkey_autosleep_ack = 1; | 2764 | hotkey_autosleep_ack = 1; |
2441 | printk(TPACPI_INFO | 2765 | printk(TPACPI_INFO |
2442 | "bay ejected\n"); | 2766 | "bay ejected\n"); |
2443 | hotkey_wakeup_hotunplug_complete_notify_change(); | 2767 | hotkey_wakeup_hotunplug_complete_notify_change(); |
2768 | known_ev = true; | ||
2444 | } else { | 2769 | } else { |
2445 | unk_ev = 1; | 2770 | known_ev = false; |
2446 | } | 2771 | } |
2447 | break; | 2772 | break; |
2448 | case 4: | 2773 | case 4: |
2449 | /* dock-related wakeups */ | 2774 | /* 0x4000-0x4FFF: dock-related wakeups */ |
2450 | if (hkey == 0x4003) { | 2775 | if (hkey == 0x4003) { |
2451 | hotkey_autosleep_ack = 1; | 2776 | hotkey_autosleep_ack = 1; |
2452 | printk(TPACPI_INFO | 2777 | printk(TPACPI_INFO |
2453 | "undocked\n"); | 2778 | "undocked\n"); |
2454 | hotkey_wakeup_hotunplug_complete_notify_change(); | 2779 | hotkey_wakeup_hotunplug_complete_notify_change(); |
2780 | known_ev = true; | ||
2455 | } else { | 2781 | } else { |
2456 | unk_ev = 1; | 2782 | known_ev = false; |
2457 | } | 2783 | } |
2458 | break; | 2784 | break; |
2459 | case 5: | 2785 | case 5: |
2460 | /* 0x5000-0x5FFF: human interface helpers */ | 2786 | /* 0x5000-0x5FFF: human interface helpers */ |
2461 | switch (hkey) { | 2787 | known_ev = hotkey_notify_usrevent(hkey, &send_acpi_ev, |
2462 | case 0x5010: /* Lenovo new BIOS: brightness changed */ | 2788 | &ignore_acpi_ev); |
2463 | case 0x500b: /* X61t: tablet pen inserted into bay */ | 2789 | break; |
2464 | case 0x500c: /* X61t: tablet pen removed from bay */ | 2790 | case 6: |
2465 | break; | 2791 | /* 0x6000-0x6FFF: thermal alarms */ |
2466 | case 0x5009: /* X41t-X61t: swivel up (tablet mode) */ | 2792 | known_ev = hotkey_notify_thermal(hkey, &send_acpi_ev, |
2467 | case 0x500a: /* X41t-X61t: swivel down (normal mode) */ | 2793 | &ignore_acpi_ev); |
2468 | tpacpi_input_send_tabletsw(); | ||
2469 | hotkey_tablet_mode_notify_change(); | ||
2470 | send_acpi_ev = 0; | ||
2471 | break; | ||
2472 | case 0x5001: | ||
2473 | case 0x5002: | ||
2474 | /* LID switch events. Do not propagate */ | ||
2475 | ignore_acpi_ev = 1; | ||
2476 | break; | ||
2477 | default: | ||
2478 | unk_ev = 1; | ||
2479 | } | ||
2480 | break; | 2794 | break; |
2481 | case 7: | 2795 | case 7: |
2482 | /* 0x7000-0x7FFF: misc */ | 2796 | /* 0x7000-0x7FFF: misc */ |
2483 | if (tp_features.hotkey_wlsw && hkey == 0x7000) { | 2797 | if (tp_features.hotkey_wlsw && hkey == 0x7000) { |
2484 | tpacpi_send_radiosw_update(); | 2798 | tpacpi_send_radiosw_update(); |
2485 | send_acpi_ev = 0; | 2799 | send_acpi_ev = 0; |
2800 | known_ev = true; | ||
2486 | break; | 2801 | break; |
2487 | } | 2802 | } |
2488 | /* fallthrough to default */ | 2803 | /* fallthrough to default */ |
2489 | default: | 2804 | default: |
2490 | unk_ev = 1; | 2805 | known_ev = false; |
2491 | } | 2806 | } |
2492 | if (unk_ev) { | 2807 | if (!known_ev) { |
2493 | printk(TPACPI_NOTICE | 2808 | printk(TPACPI_NOTICE |
2494 | "unhandled HKEY event 0x%04x\n", hkey); | 2809 | "unhandled HKEY event 0x%04x\n", hkey); |
2810 | printk(TPACPI_NOTICE | ||
2811 | "please report the conditions when this " | ||
2812 | "event happened to %s\n", TPACPI_MAIL); | ||
2495 | } | 2813 | } |
2496 | 2814 | ||
2497 | /* Legacy events */ | 2815 | /* Legacy events */ |
@@ -2505,7 +2823,7 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event) | |||
2505 | if (!ignore_acpi_ev && send_acpi_ev) { | 2823 | if (!ignore_acpi_ev && send_acpi_ev) { |
2506 | acpi_bus_generate_netlink_event( | 2824 | acpi_bus_generate_netlink_event( |
2507 | ibm->acpi->device->pnp.device_class, | 2825 | ibm->acpi->device->pnp.device_class, |
2508 | ibm->acpi->device->dev.bus_id, | 2826 | dev_name(&ibm->acpi->device->dev), |
2509 | event, hkey); | 2827 | event, hkey); |
2510 | } | 2828 | } |
2511 | } | 2829 | } |
@@ -2544,7 +2862,7 @@ static int hotkey_read(char *p) | |||
2544 | return len; | 2862 | return len; |
2545 | } | 2863 | } |
2546 | 2864 | ||
2547 | if (mutex_lock_interruptible(&hotkey_mutex)) | 2865 | if (mutex_lock_killable(&hotkey_mutex)) |
2548 | return -ERESTARTSYS; | 2866 | return -ERESTARTSYS; |
2549 | res = hotkey_status_get(&status); | 2867 | res = hotkey_status_get(&status); |
2550 | if (!res) | 2868 | if (!res) |
@@ -2575,7 +2893,7 @@ static int hotkey_write(char *buf) | |||
2575 | if (!tp_features.hotkey) | 2893 | if (!tp_features.hotkey) |
2576 | return -ENODEV; | 2894 | return -ENODEV; |
2577 | 2895 | ||
2578 | if (mutex_lock_interruptible(&hotkey_mutex)) | 2896 | if (mutex_lock_killable(&hotkey_mutex)) |
2579 | return -ERESTARTSYS; | 2897 | return -ERESTARTSYS; |
2580 | 2898 | ||
2581 | status = -1; | 2899 | status = -1; |
@@ -2640,11 +2958,28 @@ enum { | |||
2640 | /* ACPI GBDC/SBDC bits */ | 2958 | /* ACPI GBDC/SBDC bits */ |
2641 | TP_ACPI_BLUETOOTH_HWPRESENT = 0x01, /* Bluetooth hw available */ | 2959 | TP_ACPI_BLUETOOTH_HWPRESENT = 0x01, /* Bluetooth hw available */ |
2642 | TP_ACPI_BLUETOOTH_RADIOSSW = 0x02, /* Bluetooth radio enabled */ | 2960 | TP_ACPI_BLUETOOTH_RADIOSSW = 0x02, /* Bluetooth radio enabled */ |
2643 | TP_ACPI_BLUETOOTH_UNK = 0x04, /* unknown function */ | 2961 | TP_ACPI_BLUETOOTH_RESUMECTRL = 0x04, /* Bluetooth state at resume: |
2962 | off / last state */ | ||
2963 | }; | ||
2964 | |||
2965 | enum { | ||
2966 | /* ACPI \BLTH commands */ | ||
2967 | TP_ACPI_BLTH_GET_ULTRAPORT_ID = 0x00, /* Get Ultraport BT ID */ | ||
2968 | TP_ACPI_BLTH_GET_PWR_ON_RESUME = 0x01, /* Get power-on-resume state */ | ||
2969 | TP_ACPI_BLTH_PWR_ON_ON_RESUME = 0x02, /* Resume powered on */ | ||
2970 | TP_ACPI_BLTH_PWR_OFF_ON_RESUME = 0x03, /* Resume powered off */ | ||
2971 | TP_ACPI_BLTH_SAVE_STATE = 0x05, /* Save state for S4/S5 */ | ||
2644 | }; | 2972 | }; |
2645 | 2973 | ||
2646 | static struct rfkill *tpacpi_bluetooth_rfkill; | 2974 | static struct rfkill *tpacpi_bluetooth_rfkill; |
2647 | 2975 | ||
2976 | static void bluetooth_suspend(pm_message_t state) | ||
2977 | { | ||
2978 | /* Try to make sure radio will resume powered off */ | ||
2979 | acpi_evalf(NULL, NULL, "\\BLTH", "vd", | ||
2980 | TP_ACPI_BLTH_PWR_OFF_ON_RESUME); | ||
2981 | } | ||
2982 | |||
2648 | static int bluetooth_get_radiosw(void) | 2983 | static int bluetooth_get_radiosw(void) |
2649 | { | 2984 | { |
2650 | int status; | 2985 | int status; |
@@ -2656,6 +2991,12 @@ static int bluetooth_get_radiosw(void) | |||
2656 | if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status) | 2991 | if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status) |
2657 | return RFKILL_STATE_HARD_BLOCKED; | 2992 | return RFKILL_STATE_HARD_BLOCKED; |
2658 | 2993 | ||
2994 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
2995 | if (dbg_bluetoothemul) | ||
2996 | return (tpacpi_bluetooth_emulstate) ? | ||
2997 | RFKILL_STATE_UNBLOCKED : RFKILL_STATE_SOFT_BLOCKED; | ||
2998 | #endif | ||
2999 | |||
2659 | if (!acpi_evalf(hkey_handle, &status, "GBDC", "d")) | 3000 | if (!acpi_evalf(hkey_handle, &status, "GBDC", "d")) |
2660 | return -EIO; | 3001 | return -EIO; |
2661 | 3002 | ||
@@ -2689,12 +3030,20 @@ static int bluetooth_set_radiosw(int radio_on, int update_rfk) | |||
2689 | && radio_on) | 3030 | && radio_on) |
2690 | return -EPERM; | 3031 | return -EPERM; |
2691 | 3032 | ||
2692 | if (!acpi_evalf(hkey_handle, &status, "GBDC", "d")) | 3033 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES |
2693 | return -EIO; | 3034 | if (dbg_bluetoothemul) { |
3035 | tpacpi_bluetooth_emulstate = !!radio_on; | ||
3036 | if (update_rfk) | ||
3037 | bluetooth_update_rfk(); | ||
3038 | return 0; | ||
3039 | } | ||
3040 | #endif | ||
3041 | |||
3042 | /* We make sure to keep TP_ACPI_BLUETOOTH_RESUMECTRL off */ | ||
2694 | if (radio_on) | 3043 | if (radio_on) |
2695 | status |= TP_ACPI_BLUETOOTH_RADIOSSW; | 3044 | status = TP_ACPI_BLUETOOTH_RADIOSSW; |
2696 | else | 3045 | else |
2697 | status &= ~TP_ACPI_BLUETOOTH_RADIOSSW; | 3046 | status = 0; |
2698 | if (!acpi_evalf(hkey_handle, NULL, "SBDC", "vd", status)) | 3047 | if (!acpi_evalf(hkey_handle, NULL, "SBDC", "vd", status)) |
2699 | return -EIO; | 3048 | return -EIO; |
2700 | 3049 | ||
@@ -2765,8 +3114,19 @@ static int tpacpi_bluetooth_rfk_set(void *data, enum rfkill_state state) | |||
2765 | return bluetooth_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0); | 3114 | return bluetooth_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0); |
2766 | } | 3115 | } |
2767 | 3116 | ||
3117 | static void bluetooth_shutdown(void) | ||
3118 | { | ||
3119 | /* Order firmware to save current state to NVRAM */ | ||
3120 | if (!acpi_evalf(NULL, NULL, "\\BLTH", "vd", | ||
3121 | TP_ACPI_BLTH_SAVE_STATE)) | ||
3122 | printk(TPACPI_NOTICE | ||
3123 | "failed to save bluetooth state to NVRAM\n"); | ||
3124 | } | ||
3125 | |||
2768 | static void bluetooth_exit(void) | 3126 | static void bluetooth_exit(void) |
2769 | { | 3127 | { |
3128 | bluetooth_shutdown(); | ||
3129 | |||
2770 | if (tpacpi_bluetooth_rfkill) | 3130 | if (tpacpi_bluetooth_rfkill) |
2771 | rfkill_unregister(tpacpi_bluetooth_rfkill); | 3131 | rfkill_unregister(tpacpi_bluetooth_rfkill); |
2772 | 3132 | ||
@@ -2792,6 +3152,13 @@ static int __init bluetooth_init(struct ibm_init_struct *iibm) | |||
2792 | str_supported(tp_features.bluetooth), | 3152 | str_supported(tp_features.bluetooth), |
2793 | status); | 3153 | status); |
2794 | 3154 | ||
3155 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
3156 | if (dbg_bluetoothemul) { | ||
3157 | tp_features.bluetooth = 1; | ||
3158 | printk(TPACPI_INFO | ||
3159 | "bluetooth switch emulation enabled\n"); | ||
3160 | } else | ||
3161 | #endif | ||
2795 | if (tp_features.bluetooth && | 3162 | if (tp_features.bluetooth && |
2796 | !(status & TP_ACPI_BLUETOOTH_HWPRESENT)) { | 3163 | !(status & TP_ACPI_BLUETOOTH_HWPRESENT)) { |
2797 | /* no bluetooth hardware present in system */ | 3164 | /* no bluetooth hardware present in system */ |
@@ -2812,6 +3179,7 @@ static int __init bluetooth_init(struct ibm_init_struct *iibm) | |||
2812 | &tpacpi_bluetooth_rfkill, | 3179 | &tpacpi_bluetooth_rfkill, |
2813 | RFKILL_TYPE_BLUETOOTH, | 3180 | RFKILL_TYPE_BLUETOOTH, |
2814 | "tpacpi_bluetooth_sw", | 3181 | "tpacpi_bluetooth_sw", |
3182 | true, | ||
2815 | tpacpi_bluetooth_rfk_set, | 3183 | tpacpi_bluetooth_rfk_set, |
2816 | tpacpi_bluetooth_rfk_get); | 3184 | tpacpi_bluetooth_rfk_get); |
2817 | if (res) { | 3185 | if (res) { |
@@ -2864,6 +3232,8 @@ static struct ibm_struct bluetooth_driver_data = { | |||
2864 | .read = bluetooth_read, | 3232 | .read = bluetooth_read, |
2865 | .write = bluetooth_write, | 3233 | .write = bluetooth_write, |
2866 | .exit = bluetooth_exit, | 3234 | .exit = bluetooth_exit, |
3235 | .suspend = bluetooth_suspend, | ||
3236 | .shutdown = bluetooth_shutdown, | ||
2867 | }; | 3237 | }; |
2868 | 3238 | ||
2869 | /************************************************************************* | 3239 | /************************************************************************* |
@@ -2874,11 +3244,19 @@ enum { | |||
2874 | /* ACPI GWAN/SWAN bits */ | 3244 | /* ACPI GWAN/SWAN bits */ |
2875 | TP_ACPI_WANCARD_HWPRESENT = 0x01, /* Wan hw available */ | 3245 | TP_ACPI_WANCARD_HWPRESENT = 0x01, /* Wan hw available */ |
2876 | TP_ACPI_WANCARD_RADIOSSW = 0x02, /* Wan radio enabled */ | 3246 | TP_ACPI_WANCARD_RADIOSSW = 0x02, /* Wan radio enabled */ |
2877 | TP_ACPI_WANCARD_UNK = 0x04, /* unknown function */ | 3247 | TP_ACPI_WANCARD_RESUMECTRL = 0x04, /* Wan state at resume: |
3248 | off / last state */ | ||
2878 | }; | 3249 | }; |
2879 | 3250 | ||
2880 | static struct rfkill *tpacpi_wan_rfkill; | 3251 | static struct rfkill *tpacpi_wan_rfkill; |
2881 | 3252 | ||
3253 | static void wan_suspend(pm_message_t state) | ||
3254 | { | ||
3255 | /* Try to make sure radio will resume powered off */ | ||
3256 | acpi_evalf(NULL, NULL, "\\WGSV", "qvd", | ||
3257 | TP_ACPI_WGSV_PWR_OFF_ON_RESUME); | ||
3258 | } | ||
3259 | |||
2882 | static int wan_get_radiosw(void) | 3260 | static int wan_get_radiosw(void) |
2883 | { | 3261 | { |
2884 | int status; | 3262 | int status; |
@@ -2890,6 +3268,12 @@ static int wan_get_radiosw(void) | |||
2890 | if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status) | 3268 | if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status) |
2891 | return RFKILL_STATE_HARD_BLOCKED; | 3269 | return RFKILL_STATE_HARD_BLOCKED; |
2892 | 3270 | ||
3271 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
3272 | if (dbg_wwanemul) | ||
3273 | return (tpacpi_wwan_emulstate) ? | ||
3274 | RFKILL_STATE_UNBLOCKED : RFKILL_STATE_SOFT_BLOCKED; | ||
3275 | #endif | ||
3276 | |||
2893 | if (!acpi_evalf(hkey_handle, &status, "GWAN", "d")) | 3277 | if (!acpi_evalf(hkey_handle, &status, "GWAN", "d")) |
2894 | return -EIO; | 3278 | return -EIO; |
2895 | 3279 | ||
@@ -2923,12 +3307,20 @@ static int wan_set_radiosw(int radio_on, int update_rfk) | |||
2923 | && radio_on) | 3307 | && radio_on) |
2924 | return -EPERM; | 3308 | return -EPERM; |
2925 | 3309 | ||
2926 | if (!acpi_evalf(hkey_handle, &status, "GWAN", "d")) | 3310 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES |
2927 | return -EIO; | 3311 | if (dbg_wwanemul) { |
3312 | tpacpi_wwan_emulstate = !!radio_on; | ||
3313 | if (update_rfk) | ||
3314 | wan_update_rfk(); | ||
3315 | return 0; | ||
3316 | } | ||
3317 | #endif | ||
3318 | |||
3319 | /* We make sure to keep TP_ACPI_WANCARD_RESUMECTRL off */ | ||
2928 | if (radio_on) | 3320 | if (radio_on) |
2929 | status |= TP_ACPI_WANCARD_RADIOSSW; | 3321 | status = TP_ACPI_WANCARD_RADIOSSW; |
2930 | else | 3322 | else |
2931 | status &= ~TP_ACPI_WANCARD_RADIOSSW; | 3323 | status = 0; |
2932 | if (!acpi_evalf(hkey_handle, NULL, "SWAN", "vd", status)) | 3324 | if (!acpi_evalf(hkey_handle, NULL, "SWAN", "vd", status)) |
2933 | return -EIO; | 3325 | return -EIO; |
2934 | 3326 | ||
@@ -2999,8 +3391,19 @@ static int tpacpi_wan_rfk_set(void *data, enum rfkill_state state) | |||
2999 | return wan_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0); | 3391 | return wan_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0); |
3000 | } | 3392 | } |
3001 | 3393 | ||
3394 | static void wan_shutdown(void) | ||
3395 | { | ||
3396 | /* Order firmware to save current state to NVRAM */ | ||
3397 | if (!acpi_evalf(NULL, NULL, "\\WGSV", "vd", | ||
3398 | TP_ACPI_WGSV_SAVE_STATE)) | ||
3399 | printk(TPACPI_NOTICE | ||
3400 | "failed to save WWAN state to NVRAM\n"); | ||
3401 | } | ||
3402 | |||
3002 | static void wan_exit(void) | 3403 | static void wan_exit(void) |
3003 | { | 3404 | { |
3405 | wan_shutdown(); | ||
3406 | |||
3004 | if (tpacpi_wan_rfkill) | 3407 | if (tpacpi_wan_rfkill) |
3005 | rfkill_unregister(tpacpi_wan_rfkill); | 3408 | rfkill_unregister(tpacpi_wan_rfkill); |
3006 | 3409 | ||
@@ -3024,6 +3427,13 @@ static int __init wan_init(struct ibm_init_struct *iibm) | |||
3024 | str_supported(tp_features.wan), | 3427 | str_supported(tp_features.wan), |
3025 | status); | 3428 | status); |
3026 | 3429 | ||
3430 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
3431 | if (dbg_wwanemul) { | ||
3432 | tp_features.wan = 1; | ||
3433 | printk(TPACPI_INFO | ||
3434 | "wwan switch emulation enabled\n"); | ||
3435 | } else | ||
3436 | #endif | ||
3027 | if (tp_features.wan && | 3437 | if (tp_features.wan && |
3028 | !(status & TP_ACPI_WANCARD_HWPRESENT)) { | 3438 | !(status & TP_ACPI_WANCARD_HWPRESENT)) { |
3029 | /* no wan hardware present in system */ | 3439 | /* no wan hardware present in system */ |
@@ -3044,6 +3454,7 @@ static int __init wan_init(struct ibm_init_struct *iibm) | |||
3044 | &tpacpi_wan_rfkill, | 3454 | &tpacpi_wan_rfkill, |
3045 | RFKILL_TYPE_WWAN, | 3455 | RFKILL_TYPE_WWAN, |
3046 | "tpacpi_wwan_sw", | 3456 | "tpacpi_wwan_sw", |
3457 | true, | ||
3047 | tpacpi_wan_rfk_set, | 3458 | tpacpi_wan_rfk_set, |
3048 | tpacpi_wan_rfk_get); | 3459 | tpacpi_wan_rfk_get); |
3049 | if (res) { | 3460 | if (res) { |
@@ -3096,6 +3507,164 @@ static struct ibm_struct wan_driver_data = { | |||
3096 | .read = wan_read, | 3507 | .read = wan_read, |
3097 | .write = wan_write, | 3508 | .write = wan_write, |
3098 | .exit = wan_exit, | 3509 | .exit = wan_exit, |
3510 | .suspend = wan_suspend, | ||
3511 | .shutdown = wan_shutdown, | ||
3512 | }; | ||
3513 | |||
3514 | /************************************************************************* | ||
3515 | * UWB subdriver | ||
3516 | */ | ||
3517 | |||
3518 | enum { | ||
3519 | /* ACPI GUWB/SUWB bits */ | ||
3520 | TP_ACPI_UWB_HWPRESENT = 0x01, /* UWB hw available */ | ||
3521 | TP_ACPI_UWB_RADIOSSW = 0x02, /* UWB radio enabled */ | ||
3522 | }; | ||
3523 | |||
3524 | static struct rfkill *tpacpi_uwb_rfkill; | ||
3525 | |||
3526 | static int uwb_get_radiosw(void) | ||
3527 | { | ||
3528 | int status; | ||
3529 | |||
3530 | if (!tp_features.uwb) | ||
3531 | return -ENODEV; | ||
3532 | |||
3533 | /* WLSW overrides UWB in firmware/hardware, reflect that */ | ||
3534 | if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status) | ||
3535 | return RFKILL_STATE_HARD_BLOCKED; | ||
3536 | |||
3537 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
3538 | if (dbg_uwbemul) | ||
3539 | return (tpacpi_uwb_emulstate) ? | ||
3540 | RFKILL_STATE_UNBLOCKED : RFKILL_STATE_SOFT_BLOCKED; | ||
3541 | #endif | ||
3542 | |||
3543 | if (!acpi_evalf(hkey_handle, &status, "GUWB", "d")) | ||
3544 | return -EIO; | ||
3545 | |||
3546 | return ((status & TP_ACPI_UWB_RADIOSSW) != 0) ? | ||
3547 | RFKILL_STATE_UNBLOCKED : RFKILL_STATE_SOFT_BLOCKED; | ||
3548 | } | ||
3549 | |||
3550 | static void uwb_update_rfk(void) | ||
3551 | { | ||
3552 | int status; | ||
3553 | |||
3554 | if (!tpacpi_uwb_rfkill) | ||
3555 | return; | ||
3556 | |||
3557 | status = uwb_get_radiosw(); | ||
3558 | if (status < 0) | ||
3559 | return; | ||
3560 | rfkill_force_state(tpacpi_uwb_rfkill, status); | ||
3561 | } | ||
3562 | |||
3563 | static int uwb_set_radiosw(int radio_on, int update_rfk) | ||
3564 | { | ||
3565 | int status; | ||
3566 | |||
3567 | if (!tp_features.uwb) | ||
3568 | return -ENODEV; | ||
3569 | |||
3570 | /* WLSW overrides UWB in firmware/hardware, but there is no | ||
3571 | * reason to risk weird behaviour. */ | ||
3572 | if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status | ||
3573 | && radio_on) | ||
3574 | return -EPERM; | ||
3575 | |||
3576 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
3577 | if (dbg_uwbemul) { | ||
3578 | tpacpi_uwb_emulstate = !!radio_on; | ||
3579 | if (update_rfk) | ||
3580 | uwb_update_rfk(); | ||
3581 | return 0; | ||
3582 | } | ||
3583 | #endif | ||
3584 | |||
3585 | status = (radio_on) ? TP_ACPI_UWB_RADIOSSW : 0; | ||
3586 | if (!acpi_evalf(hkey_handle, NULL, "SUWB", "vd", status)) | ||
3587 | return -EIO; | ||
3588 | |||
3589 | if (update_rfk) | ||
3590 | uwb_update_rfk(); | ||
3591 | |||
3592 | return 0; | ||
3593 | } | ||
3594 | |||
3595 | /* --------------------------------------------------------------------- */ | ||
3596 | |||
3597 | static int tpacpi_uwb_rfk_get(void *data, enum rfkill_state *state) | ||
3598 | { | ||
3599 | int uwbs = uwb_get_radiosw(); | ||
3600 | |||
3601 | if (uwbs < 0) | ||
3602 | return uwbs; | ||
3603 | |||
3604 | *state = uwbs; | ||
3605 | return 0; | ||
3606 | } | ||
3607 | |||
3608 | static int tpacpi_uwb_rfk_set(void *data, enum rfkill_state state) | ||
3609 | { | ||
3610 | return uwb_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0); | ||
3611 | } | ||
3612 | |||
3613 | static void uwb_exit(void) | ||
3614 | { | ||
3615 | if (tpacpi_uwb_rfkill) | ||
3616 | rfkill_unregister(tpacpi_uwb_rfkill); | ||
3617 | } | ||
3618 | |||
3619 | static int __init uwb_init(struct ibm_init_struct *iibm) | ||
3620 | { | ||
3621 | int res; | ||
3622 | int status = 0; | ||
3623 | |||
3624 | vdbg_printk(TPACPI_DBG_INIT, "initializing uwb subdriver\n"); | ||
3625 | |||
3626 | TPACPI_ACPIHANDLE_INIT(hkey); | ||
3627 | |||
3628 | tp_features.uwb = hkey_handle && | ||
3629 | acpi_evalf(hkey_handle, &status, "GUWB", "qd"); | ||
3630 | |||
3631 | vdbg_printk(TPACPI_DBG_INIT, "uwb is %s, status 0x%02x\n", | ||
3632 | str_supported(tp_features.uwb), | ||
3633 | status); | ||
3634 | |||
3635 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
3636 | if (dbg_uwbemul) { | ||
3637 | tp_features.uwb = 1; | ||
3638 | printk(TPACPI_INFO | ||
3639 | "uwb switch emulation enabled\n"); | ||
3640 | } else | ||
3641 | #endif | ||
3642 | if (tp_features.uwb && | ||
3643 | !(status & TP_ACPI_UWB_HWPRESENT)) { | ||
3644 | /* no uwb hardware present in system */ | ||
3645 | tp_features.uwb = 0; | ||
3646 | dbg_printk(TPACPI_DBG_INIT, | ||
3647 | "uwb hardware not installed\n"); | ||
3648 | } | ||
3649 | |||
3650 | if (!tp_features.uwb) | ||
3651 | return 1; | ||
3652 | |||
3653 | res = tpacpi_new_rfkill(TPACPI_RFK_UWB_SW_ID, | ||
3654 | &tpacpi_uwb_rfkill, | ||
3655 | RFKILL_TYPE_UWB, | ||
3656 | "tpacpi_uwb_sw", | ||
3657 | false, | ||
3658 | tpacpi_uwb_rfk_set, | ||
3659 | tpacpi_uwb_rfk_get); | ||
3660 | |||
3661 | return res; | ||
3662 | } | ||
3663 | |||
3664 | static struct ibm_struct uwb_driver_data = { | ||
3665 | .name = "uwb", | ||
3666 | .exit = uwb_exit, | ||
3667 | .flags.experimental = 1, | ||
3099 | }; | 3668 | }; |
3100 | 3669 | ||
3101 | /************************************************************************* | 3670 | /************************************************************************* |
@@ -3724,7 +4293,7 @@ static void dock_notify(struct ibm_struct *ibm, u32 event) | |||
3724 | } | 4293 | } |
3725 | acpi_bus_generate_proc_event(ibm->acpi->device, event, data); | 4294 | acpi_bus_generate_proc_event(ibm->acpi->device, event, data); |
3726 | acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class, | 4295 | acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class, |
3727 | ibm->acpi->device->dev.bus_id, | 4296 | dev_name(&ibm->acpi->device->dev), |
3728 | event, data); | 4297 | event, data); |
3729 | } | 4298 | } |
3730 | 4299 | ||
@@ -3826,7 +4395,7 @@ static void bay_notify(struct ibm_struct *ibm, u32 event) | |||
3826 | { | 4395 | { |
3827 | acpi_bus_generate_proc_event(ibm->acpi->device, event, 0); | 4396 | acpi_bus_generate_proc_event(ibm->acpi->device, event, 0); |
3828 | acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class, | 4397 | acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class, |
3829 | ibm->acpi->device->dev.bus_id, | 4398 | dev_name(&ibm->acpi->device->dev), |
3830 | event, 0); | 4399 | event, 0); |
3831 | } | 4400 | } |
3832 | 4401 | ||
@@ -4850,7 +5419,7 @@ static int brightness_set(int value) | |||
4850 | value < 0) | 5419 | value < 0) |
4851 | return -EINVAL; | 5420 | return -EINVAL; |
4852 | 5421 | ||
4853 | res = mutex_lock_interruptible(&brightness_mutex); | 5422 | res = mutex_lock_killable(&brightness_mutex); |
4854 | if (res < 0) | 5423 | if (res < 0) |
4855 | return res; | 5424 | return res; |
4856 | 5425 | ||
@@ -5334,6 +5903,60 @@ TPACPI_HANDLE(sfan, ec, "SFAN", /* 570 */ | |||
5334 | ); /* all others */ | 5903 | ); /* all others */ |
5335 | 5904 | ||
5336 | /* | 5905 | /* |
5906 | * Unitialized HFSP quirk: ACPI DSDT and EC fail to initialize the | ||
5907 | * HFSP register at boot, so it contains 0x07 but the Thinkpad could | ||
5908 | * be in auto mode (0x80). | ||
5909 | * | ||
5910 | * This is corrected by any write to HFSP either by the driver, or | ||
5911 | * by the firmware. | ||
5912 | * | ||
5913 | * We assume 0x07 really means auto mode while this quirk is active, | ||
5914 | * as this is far more likely than the ThinkPad being in level 7, | ||
5915 | * which is only used by the firmware during thermal emergencies. | ||
5916 | */ | ||
5917 | |||
5918 | static void fan_quirk1_detect(void) | ||
5919 | { | ||
5920 | /* In some ThinkPads, neither the EC nor the ACPI | ||
5921 | * DSDT initialize the HFSP register, and it ends up | ||
5922 | * being initially set to 0x07 when it *could* be | ||
5923 | * either 0x07 or 0x80. | ||
5924 | * | ||
5925 | * Enable for TP-1Y (T43), TP-78 (R51e), | ||
5926 | * TP-76 (R52), TP-70 (T43, R52), which are known | ||
5927 | * to be buggy. */ | ||
5928 | if (fan_control_initial_status == 0x07) { | ||
5929 | switch (thinkpad_id.ec_model) { | ||
5930 | case 0x5931: /* TP-1Y */ | ||
5931 | case 0x3837: /* TP-78 */ | ||
5932 | case 0x3637: /* TP-76 */ | ||
5933 | case 0x3037: /* TP-70 */ | ||
5934 | printk(TPACPI_NOTICE | ||
5935 | "fan_init: initial fan status is unknown, " | ||
5936 | "assuming it is in auto mode\n"); | ||
5937 | tp_features.fan_ctrl_status_undef = 1; | ||
5938 | ;; | ||
5939 | } | ||
5940 | } | ||
5941 | } | ||
5942 | |||
5943 | static void fan_quirk1_handle(u8 *fan_status) | ||
5944 | { | ||
5945 | if (unlikely(tp_features.fan_ctrl_status_undef)) { | ||
5946 | if (*fan_status != fan_control_initial_status) { | ||
5947 | /* something changed the HFSP regisnter since | ||
5948 | * driver init time, so it is not undefined | ||
5949 | * anymore */ | ||
5950 | tp_features.fan_ctrl_status_undef = 0; | ||
5951 | } else { | ||
5952 | /* Return most likely status. In fact, it | ||
5953 | * might be the only possible status */ | ||
5954 | *fan_status = TP_EC_FAN_AUTO; | ||
5955 | } | ||
5956 | } | ||
5957 | } | ||
5958 | |||
5959 | /* | ||
5337 | * Call with fan_mutex held | 5960 | * Call with fan_mutex held |
5338 | */ | 5961 | */ |
5339 | static void fan_update_desired_level(u8 status) | 5962 | static void fan_update_desired_level(u8 status) |
@@ -5371,8 +5994,10 @@ static int fan_get_status(u8 *status) | |||
5371 | if (unlikely(!acpi_ec_read(fan_status_offset, &s))) | 5994 | if (unlikely(!acpi_ec_read(fan_status_offset, &s))) |
5372 | return -EIO; | 5995 | return -EIO; |
5373 | 5996 | ||
5374 | if (likely(status)) | 5997 | if (likely(status)) { |
5375 | *status = s; | 5998 | *status = s; |
5999 | fan_quirk1_handle(status); | ||
6000 | } | ||
5376 | 6001 | ||
5377 | break; | 6002 | break; |
5378 | 6003 | ||
@@ -5388,7 +6013,7 @@ static int fan_get_status_safe(u8 *status) | |||
5388 | int rc; | 6013 | int rc; |
5389 | u8 s; | 6014 | u8 s; |
5390 | 6015 | ||
5391 | if (mutex_lock_interruptible(&fan_mutex)) | 6016 | if (mutex_lock_killable(&fan_mutex)) |
5392 | return -ERESTARTSYS; | 6017 | return -ERESTARTSYS; |
5393 | rc = fan_get_status(&s); | 6018 | rc = fan_get_status(&s); |
5394 | if (!rc) | 6019 | if (!rc) |
@@ -5471,7 +6096,7 @@ static int fan_set_level_safe(int level) | |||
5471 | if (!fan_control_allowed) | 6096 | if (!fan_control_allowed) |
5472 | return -EPERM; | 6097 | return -EPERM; |
5473 | 6098 | ||
5474 | if (mutex_lock_interruptible(&fan_mutex)) | 6099 | if (mutex_lock_killable(&fan_mutex)) |
5475 | return -ERESTARTSYS; | 6100 | return -ERESTARTSYS; |
5476 | 6101 | ||
5477 | if (level == TPACPI_FAN_LAST_LEVEL) | 6102 | if (level == TPACPI_FAN_LAST_LEVEL) |
@@ -5493,7 +6118,7 @@ static int fan_set_enable(void) | |||
5493 | if (!fan_control_allowed) | 6118 | if (!fan_control_allowed) |
5494 | return -EPERM; | 6119 | return -EPERM; |
5495 | 6120 | ||
5496 | if (mutex_lock_interruptible(&fan_mutex)) | 6121 | if (mutex_lock_killable(&fan_mutex)) |
5497 | return -ERESTARTSYS; | 6122 | return -ERESTARTSYS; |
5498 | 6123 | ||
5499 | switch (fan_control_access_mode) { | 6124 | switch (fan_control_access_mode) { |
@@ -5548,7 +6173,7 @@ static int fan_set_disable(void) | |||
5548 | if (!fan_control_allowed) | 6173 | if (!fan_control_allowed) |
5549 | return -EPERM; | 6174 | return -EPERM; |
5550 | 6175 | ||
5551 | if (mutex_lock_interruptible(&fan_mutex)) | 6176 | if (mutex_lock_killable(&fan_mutex)) |
5552 | return -ERESTARTSYS; | 6177 | return -ERESTARTSYS; |
5553 | 6178 | ||
5554 | rc = 0; | 6179 | rc = 0; |
@@ -5586,7 +6211,7 @@ static int fan_set_speed(int speed) | |||
5586 | if (!fan_control_allowed) | 6211 | if (!fan_control_allowed) |
5587 | return -EPERM; | 6212 | return -EPERM; |
5588 | 6213 | ||
5589 | if (mutex_lock_interruptible(&fan_mutex)) | 6214 | if (mutex_lock_killable(&fan_mutex)) |
5590 | return -ERESTARTSYS; | 6215 | return -ERESTARTSYS; |
5591 | 6216 | ||
5592 | rc = 0; | 6217 | rc = 0; |
@@ -5682,16 +6307,6 @@ static ssize_t fan_pwm1_enable_show(struct device *dev, | |||
5682 | if (res) | 6307 | if (res) |
5683 | return res; | 6308 | return res; |
5684 | 6309 | ||
5685 | if (unlikely(tp_features.fan_ctrl_status_undef)) { | ||
5686 | if (status != fan_control_initial_status) { | ||
5687 | tp_features.fan_ctrl_status_undef = 0; | ||
5688 | } else { | ||
5689 | /* Return most likely status. In fact, it | ||
5690 | * might be the only possible status */ | ||
5691 | status = TP_EC_FAN_AUTO; | ||
5692 | } | ||
5693 | } | ||
5694 | |||
5695 | if (status & TP_EC_FAN_FULLSPEED) { | 6310 | if (status & TP_EC_FAN_FULLSPEED) { |
5696 | mode = 0; | 6311 | mode = 0; |
5697 | } else if (status & TP_EC_FAN_AUTO) { | 6312 | } else if (status & TP_EC_FAN_AUTO) { |
@@ -5756,14 +6371,6 @@ static ssize_t fan_pwm1_show(struct device *dev, | |||
5756 | if (res) | 6371 | if (res) |
5757 | return res; | 6372 | return res; |
5758 | 6373 | ||
5759 | if (unlikely(tp_features.fan_ctrl_status_undef)) { | ||
5760 | if (status != fan_control_initial_status) { | ||
5761 | tp_features.fan_ctrl_status_undef = 0; | ||
5762 | } else { | ||
5763 | status = TP_EC_FAN_AUTO; | ||
5764 | } | ||
5765 | } | ||
5766 | |||
5767 | if ((status & | 6374 | if ((status & |
5768 | (TP_EC_FAN_AUTO | TP_EC_FAN_FULLSPEED)) != 0) | 6375 | (TP_EC_FAN_AUTO | TP_EC_FAN_FULLSPEED)) != 0) |
5769 | status = fan_control_desired_level; | 6376 | status = fan_control_desired_level; |
@@ -5788,7 +6395,7 @@ static ssize_t fan_pwm1_store(struct device *dev, | |||
5788 | /* scale down from 0-255 to 0-7 */ | 6395 | /* scale down from 0-255 to 0-7 */ |
5789 | newlevel = (s >> 5) & 0x07; | 6396 | newlevel = (s >> 5) & 0x07; |
5790 | 6397 | ||
5791 | if (mutex_lock_interruptible(&fan_mutex)) | 6398 | if (mutex_lock_killable(&fan_mutex)) |
5792 | return -ERESTARTSYS; | 6399 | return -ERESTARTSYS; |
5793 | 6400 | ||
5794 | rc = fan_get_status(&status); | 6401 | rc = fan_get_status(&status); |
@@ -5895,29 +6502,7 @@ static int __init fan_init(struct ibm_init_struct *iibm) | |||
5895 | if (likely(acpi_ec_read(fan_status_offset, | 6502 | if (likely(acpi_ec_read(fan_status_offset, |
5896 | &fan_control_initial_status))) { | 6503 | &fan_control_initial_status))) { |
5897 | fan_status_access_mode = TPACPI_FAN_RD_TPEC; | 6504 | fan_status_access_mode = TPACPI_FAN_RD_TPEC; |
5898 | 6505 | fan_quirk1_detect(); | |
5899 | /* In some ThinkPads, neither the EC nor the ACPI | ||
5900 | * DSDT initialize the fan status, and it ends up | ||
5901 | * being set to 0x07 when it *could* be either | ||
5902 | * 0x07 or 0x80. | ||
5903 | * | ||
5904 | * Enable for TP-1Y (T43), TP-78 (R51e), | ||
5905 | * TP-76 (R52), TP-70 (T43, R52), which are known | ||
5906 | * to be buggy. */ | ||
5907 | if (fan_control_initial_status == 0x07) { | ||
5908 | switch (thinkpad_id.ec_model) { | ||
5909 | case 0x5931: /* TP-1Y */ | ||
5910 | case 0x3837: /* TP-78 */ | ||
5911 | case 0x3637: /* TP-76 */ | ||
5912 | case 0x3037: /* TP-70 */ | ||
5913 | printk(TPACPI_NOTICE | ||
5914 | "fan_init: initial fan status " | ||
5915 | "is unknown, assuming it is " | ||
5916 | "in auto mode\n"); | ||
5917 | tp_features.fan_ctrl_status_undef = 1; | ||
5918 | ;; | ||
5919 | } | ||
5920 | } | ||
5921 | } else { | 6506 | } else { |
5922 | printk(TPACPI_ERR | 6507 | printk(TPACPI_ERR |
5923 | "ThinkPad ACPI EC access misbehaving, " | 6508 | "ThinkPad ACPI EC access misbehaving, " |
@@ -6106,15 +6691,6 @@ static int fan_read(char *p) | |||
6106 | if (rc < 0) | 6691 | if (rc < 0) |
6107 | return rc; | 6692 | return rc; |
6108 | 6693 | ||
6109 | if (unlikely(tp_features.fan_ctrl_status_undef)) { | ||
6110 | if (status != fan_control_initial_status) | ||
6111 | tp_features.fan_ctrl_status_undef = 0; | ||
6112 | else | ||
6113 | /* Return most likely status. In fact, it | ||
6114 | * might be the only possible status */ | ||
6115 | status = TP_EC_FAN_AUTO; | ||
6116 | } | ||
6117 | |||
6118 | len += sprintf(p + len, "status:\t\t%s\n", | 6694 | len += sprintf(p + len, "status:\t\t%s\n", |
6119 | (status != 0) ? "enabled" : "disabled"); | 6695 | (status != 0) ? "enabled" : "disabled"); |
6120 | 6696 | ||
@@ -6563,6 +7139,10 @@ static struct ibm_init_struct ibms_init[] __initdata = { | |||
6563 | .init = wan_init, | 7139 | .init = wan_init, |
6564 | .data = &wan_driver_data, | 7140 | .data = &wan_driver_data, |
6565 | }, | 7141 | }, |
7142 | { | ||
7143 | .init = uwb_init, | ||
7144 | .data = &uwb_driver_data, | ||
7145 | }, | ||
6566 | #ifdef CONFIG_THINKPAD_ACPI_VIDEO | 7146 | #ifdef CONFIG_THINKPAD_ACPI_VIDEO |
6567 | { | 7147 | { |
6568 | .init = video_init, | 7148 | .init = video_init, |
@@ -6701,6 +7281,32 @@ TPACPI_PARAM(brightness); | |||
6701 | TPACPI_PARAM(volume); | 7281 | TPACPI_PARAM(volume); |
6702 | TPACPI_PARAM(fan); | 7282 | TPACPI_PARAM(fan); |
6703 | 7283 | ||
7284 | #ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES | ||
7285 | module_param(dbg_wlswemul, uint, 0); | ||
7286 | MODULE_PARM_DESC(dbg_wlswemul, "Enables WLSW emulation"); | ||
7287 | module_param_named(wlsw_state, tpacpi_wlsw_emulstate, bool, 0); | ||
7288 | MODULE_PARM_DESC(wlsw_state, | ||
7289 | "Initial state of the emulated WLSW switch"); | ||
7290 | |||
7291 | module_param(dbg_bluetoothemul, uint, 0); | ||
7292 | MODULE_PARM_DESC(dbg_bluetoothemul, "Enables bluetooth switch emulation"); | ||
7293 | module_param_named(bluetooth_state, tpacpi_bluetooth_emulstate, bool, 0); | ||
7294 | MODULE_PARM_DESC(bluetooth_state, | ||
7295 | "Initial state of the emulated bluetooth switch"); | ||
7296 | |||
7297 | module_param(dbg_wwanemul, uint, 0); | ||
7298 | MODULE_PARM_DESC(dbg_wwanemul, "Enables WWAN switch emulation"); | ||
7299 | module_param_named(wwan_state, tpacpi_wwan_emulstate, bool, 0); | ||
7300 | MODULE_PARM_DESC(wwan_state, | ||
7301 | "Initial state of the emulated WWAN switch"); | ||
7302 | |||
7303 | module_param(dbg_uwbemul, uint, 0); | ||
7304 | MODULE_PARM_DESC(dbg_uwbemul, "Enables UWB switch emulation"); | ||
7305 | module_param_named(uwb_state, tpacpi_uwb_emulstate, bool, 0); | ||
7306 | MODULE_PARM_DESC(uwb_state, | ||
7307 | "Initial state of the emulated UWB switch"); | ||
7308 | #endif | ||
7309 | |||
6704 | static void thinkpad_acpi_module_exit(void) | 7310 | static void thinkpad_acpi_module_exit(void) |
6705 | { | 7311 | { |
6706 | struct ibm_struct *ibm, *itmp; | 7312 | struct ibm_struct *ibm, *itmp; |
diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c index d30bb766fcef..b56a704409d2 100644 --- a/drivers/power/pda_power.c +++ b/drivers/power/pda_power.c | |||
@@ -20,7 +20,7 @@ | |||
20 | 20 | ||
21 | static inline unsigned int get_irq_flags(struct resource *res) | 21 | static inline unsigned int get_irq_flags(struct resource *res) |
22 | { | 22 | { |
23 | unsigned int flags = IRQF_DISABLED | IRQF_SHARED; | 23 | unsigned int flags = IRQF_SAMPLE_RANDOM | IRQF_SHARED; |
24 | 24 | ||
25 | flags |= res->flags & IRQF_TRIGGER_MASK; | 25 | flags |= res->flags & IRQF_TRIGGER_MASK; |
26 | 26 | ||
diff --git a/drivers/ps3/ps3-lpm.c b/drivers/ps3/ps3-lpm.c index 204158cf7a55..fe96793e3f08 100644 --- a/drivers/ps3/ps3-lpm.c +++ b/drivers/ps3/ps3-lpm.c | |||
@@ -732,7 +732,7 @@ static u64 pm_signal_group_to_ps3_lv1_signal_group(u64 group) | |||
732 | case 8: | 732 | case 8: |
733 | return pm_translate_signal_group_number_on_island8(subgroup); | 733 | return pm_translate_signal_group_number_on_island8(subgroup); |
734 | default: | 734 | default: |
735 | dev_dbg(sbd_core(), "%s:%u: island not found: %lu\n", __func__, | 735 | dev_dbg(sbd_core(), "%s:%u: island not found: %llu\n", __func__, |
736 | __LINE__, group); | 736 | __LINE__, group); |
737 | BUG(); | 737 | BUG(); |
738 | break; | 738 | break; |
@@ -765,7 +765,7 @@ static int __ps3_set_signal(u64 lv1_signal_group, u64 bus_select, | |||
765 | signal_select, attr1, attr2, attr3); | 765 | signal_select, attr1, attr2, attr3); |
766 | if (ret) | 766 | if (ret) |
767 | dev_err(sbd_core(), | 767 | dev_err(sbd_core(), |
768 | "%s:%u: error:%d 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx\n", | 768 | "%s:%u: error:%d 0x%llx 0x%llx 0x%llx 0x%llx 0x%llx 0x%llx\n", |
769 | __func__, __LINE__, ret, lv1_signal_group, bus_select, | 769 | __func__, __LINE__, ret, lv1_signal_group, bus_select, |
770 | signal_select, attr1, attr2, attr3); | 770 | signal_select, attr1, attr2, attr3); |
771 | 771 | ||
@@ -908,7 +908,7 @@ void ps3_disable_pm(u32 cpu) | |||
908 | 908 | ||
909 | lpm_priv->tb_count = tmp; | 909 | lpm_priv->tb_count = tmp; |
910 | 910 | ||
911 | dev_dbg(sbd_core(), "%s:%u: tb_count %lu (%lxh)\n", __func__, __LINE__, | 911 | dev_dbg(sbd_core(), "%s:%u: tb_count %llu (%llxh)\n", __func__, __LINE__, |
912 | lpm_priv->tb_count, lpm_priv->tb_count); | 912 | lpm_priv->tb_count, lpm_priv->tb_count); |
913 | } | 913 | } |
914 | EXPORT_SYMBOL_GPL(ps3_disable_pm); | 914 | EXPORT_SYMBOL_GPL(ps3_disable_pm); |
@@ -938,7 +938,7 @@ int ps3_lpm_copy_tb(unsigned long offset, void *buf, unsigned long count, | |||
938 | if (offset >= lpm_priv->tb_count) | 938 | if (offset >= lpm_priv->tb_count) |
939 | return 0; | 939 | return 0; |
940 | 940 | ||
941 | count = min(count, lpm_priv->tb_count - offset); | 941 | count = min_t(u64, count, lpm_priv->tb_count - offset); |
942 | 942 | ||
943 | while (*bytes_copied < count) { | 943 | while (*bytes_copied < count) { |
944 | const unsigned long request = count - *bytes_copied; | 944 | const unsigned long request = count - *bytes_copied; |
@@ -993,7 +993,7 @@ int ps3_lpm_copy_tb_to_user(unsigned long offset, void __user *buf, | |||
993 | if (offset >= lpm_priv->tb_count) | 993 | if (offset >= lpm_priv->tb_count) |
994 | return 0; | 994 | return 0; |
995 | 995 | ||
996 | count = min(count, lpm_priv->tb_count - offset); | 996 | count = min_t(u64, count, lpm_priv->tb_count - offset); |
997 | 997 | ||
998 | while (*bytes_copied < count) { | 998 | while (*bytes_copied < count) { |
999 | const unsigned long request = count - *bytes_copied; | 999 | const unsigned long request = count - *bytes_copied; |
@@ -1013,7 +1013,7 @@ int ps3_lpm_copy_tb_to_user(unsigned long offset, void __user *buf, | |||
1013 | result = copy_to_user(buf, lpm_priv->tb_cache, tmp); | 1013 | result = copy_to_user(buf, lpm_priv->tb_cache, tmp); |
1014 | 1014 | ||
1015 | if (result) { | 1015 | if (result) { |
1016 | dev_dbg(sbd_core(), "%s:%u: 0x%lx bytes at 0x%p\n", | 1016 | dev_dbg(sbd_core(), "%s:%u: 0x%llx bytes at 0x%p\n", |
1017 | __func__, __LINE__, tmp, buf); | 1017 | __func__, __LINE__, tmp, buf); |
1018 | dev_err(sbd_core(), "%s:%u: copy_to_user failed: %d\n", | 1018 | dev_err(sbd_core(), "%s:%u: copy_to_user failed: %d\n", |
1019 | __func__, __LINE__, result); | 1019 | __func__, __LINE__, result); |
@@ -1148,8 +1148,8 @@ int ps3_lpm_open(enum ps3_lpm_tb_type tb_type, void *tb_cache, | |||
1148 | lpm_priv->shadow.group_control = PS3_LPM_SHADOW_REG_INIT; | 1148 | lpm_priv->shadow.group_control = PS3_LPM_SHADOW_REG_INIT; |
1149 | lpm_priv->shadow.debug_bus_control = PS3_LPM_SHADOW_REG_INIT; | 1149 | lpm_priv->shadow.debug_bus_control = PS3_LPM_SHADOW_REG_INIT; |
1150 | 1150 | ||
1151 | dev_dbg(sbd_core(), "%s:%u: lpm_id 0x%lx, outlet_id 0x%lx, " | 1151 | dev_dbg(sbd_core(), "%s:%u: lpm_id 0x%llx, outlet_id 0x%llx, " |
1152 | "tb_size 0x%lx\n", __func__, __LINE__, lpm_priv->lpm_id, | 1152 | "tb_size 0x%llx\n", __func__, __LINE__, lpm_priv->lpm_id, |
1153 | lpm_priv->outlet_id, tb_size); | 1153 | lpm_priv->outlet_id, tb_size); |
1154 | 1154 | ||
1155 | return 0; | 1155 | return 0; |
diff --git a/drivers/ps3/ps3-vuart.c b/drivers/ps3/ps3-vuart.c index 90c097a7a47a..e4ad5ba5d0a3 100644 --- a/drivers/ps3/ps3-vuart.c +++ b/drivers/ps3/ps3-vuart.c | |||
@@ -114,7 +114,7 @@ struct ports_bmp { | |||
114 | static void __maybe_unused _dump_ports_bmp( | 114 | static void __maybe_unused _dump_ports_bmp( |
115 | const struct ports_bmp *bmp, const char *func, int line) | 115 | const struct ports_bmp *bmp, const char *func, int line) |
116 | { | 116 | { |
117 | pr_debug("%s:%d: ports_bmp: %016lxh\n", func, line, bmp->status); | 117 | pr_debug("%s:%d: ports_bmp: %016llxh\n", func, line, bmp->status); |
118 | } | 118 | } |
119 | 119 | ||
120 | #define dump_port_params(_b) _dump_port_params(_b, __func__, __LINE__) | 120 | #define dump_port_params(_b) _dump_port_params(_b, __func__, __LINE__) |
@@ -159,11 +159,13 @@ int ps3_vuart_get_triggers(struct ps3_system_bus_device *dev, | |||
159 | struct vuart_triggers *trig) | 159 | struct vuart_triggers *trig) |
160 | { | 160 | { |
161 | int result; | 161 | int result; |
162 | unsigned long size; | 162 | u64 size; |
163 | unsigned long val; | 163 | u64 val; |
164 | u64 tx; | ||
164 | 165 | ||
165 | result = lv1_get_virtual_uart_param(dev->port_number, | 166 | result = lv1_get_virtual_uart_param(dev->port_number, |
166 | PARAM_TX_TRIGGER, &trig->tx); | 167 | PARAM_TX_TRIGGER, &tx); |
168 | trig->tx = tx; | ||
167 | 169 | ||
168 | if (result) { | 170 | if (result) { |
169 | dev_dbg(&dev->core, "%s:%d: tx_trigger failed: %s\n", | 171 | dev_dbg(&dev->core, "%s:%d: tx_trigger failed: %s\n", |
@@ -201,7 +203,7 @@ int ps3_vuart_set_triggers(struct ps3_system_bus_device *dev, unsigned int tx, | |||
201 | unsigned int rx) | 203 | unsigned int rx) |
202 | { | 204 | { |
203 | int result; | 205 | int result; |
204 | unsigned long size; | 206 | u64 size; |
205 | 207 | ||
206 | result = lv1_set_virtual_uart_param(dev->port_number, | 208 | result = lv1_set_virtual_uart_param(dev->port_number, |
207 | PARAM_TX_TRIGGER, tx); | 209 | PARAM_TX_TRIGGER, tx); |
@@ -248,7 +250,7 @@ static int ps3_vuart_get_rx_bytes_waiting(struct ps3_system_bus_device *dev, | |||
248 | dev_dbg(&dev->core, "%s:%d: rx_bytes failed: %s\n", | 250 | dev_dbg(&dev->core, "%s:%d: rx_bytes failed: %s\n", |
249 | __func__, __LINE__, ps3_result(result)); | 251 | __func__, __LINE__, ps3_result(result)); |
250 | 252 | ||
251 | dev_dbg(&dev->core, "%s:%d: %lxh\n", __func__, __LINE__, | 253 | dev_dbg(&dev->core, "%s:%d: %llxh\n", __func__, __LINE__, |
252 | *bytes_waiting); | 254 | *bytes_waiting); |
253 | return result; | 255 | return result; |
254 | } | 256 | } |
@@ -295,7 +297,7 @@ static int ps3_vuart_get_interrupt_status(struct ps3_system_bus_device *dev, | |||
295 | 297 | ||
296 | *status = tmp & priv->interrupt_mask; | 298 | *status = tmp & priv->interrupt_mask; |
297 | 299 | ||
298 | dev_dbg(&dev->core, "%s:%d: m %lxh, s %lxh, m&s %lxh\n", | 300 | dev_dbg(&dev->core, "%s:%d: m %llxh, s %llxh, m&s %lxh\n", |
299 | __func__, __LINE__, priv->interrupt_mask, tmp, *status); | 301 | __func__, __LINE__, priv->interrupt_mask, tmp, *status); |
300 | 302 | ||
301 | return result; | 303 | return result; |
@@ -363,7 +365,7 @@ int ps3_vuart_disable_interrupt_disconnect(struct ps3_system_bus_device *dev) | |||
363 | */ | 365 | */ |
364 | 366 | ||
365 | static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev, | 367 | static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev, |
366 | const void *buf, unsigned int bytes, unsigned long *bytes_written) | 368 | const void *buf, unsigned int bytes, u64 *bytes_written) |
367 | { | 369 | { |
368 | int result; | 370 | int result; |
369 | struct ps3_vuart_port_priv *priv = to_port_priv(dev); | 371 | struct ps3_vuart_port_priv *priv = to_port_priv(dev); |
@@ -379,7 +381,7 @@ static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev, | |||
379 | 381 | ||
380 | priv->stats.bytes_written += *bytes_written; | 382 | priv->stats.bytes_written += *bytes_written; |
381 | 383 | ||
382 | dev_dbg(&dev->core, "%s:%d: wrote %lxh/%xh=>%lxh\n", __func__, __LINE__, | 384 | dev_dbg(&dev->core, "%s:%d: wrote %llxh/%xh=>%lxh\n", __func__, __LINE__, |
383 | *bytes_written, bytes, priv->stats.bytes_written); | 385 | *bytes_written, bytes, priv->stats.bytes_written); |
384 | 386 | ||
385 | return result; | 387 | return result; |
@@ -393,7 +395,7 @@ static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev, | |||
393 | */ | 395 | */ |
394 | 396 | ||
395 | static int ps3_vuart_raw_read(struct ps3_system_bus_device *dev, void *buf, | 397 | static int ps3_vuart_raw_read(struct ps3_system_bus_device *dev, void *buf, |
396 | unsigned int bytes, unsigned long *bytes_read) | 398 | unsigned int bytes, u64 *bytes_read) |
397 | { | 399 | { |
398 | int result; | 400 | int result; |
399 | struct ps3_vuart_port_priv *priv = to_port_priv(dev); | 401 | struct ps3_vuart_port_priv *priv = to_port_priv(dev); |
@@ -411,7 +413,7 @@ static int ps3_vuart_raw_read(struct ps3_system_bus_device *dev, void *buf, | |||
411 | 413 | ||
412 | priv->stats.bytes_read += *bytes_read; | 414 | priv->stats.bytes_read += *bytes_read; |
413 | 415 | ||
414 | dev_dbg(&dev->core, "%s:%d: read %lxh/%xh=>%lxh\n", __func__, __LINE__, | 416 | dev_dbg(&dev->core, "%s:%d: read %llxh/%xh=>%lxh\n", __func__, __LINE__, |
415 | *bytes_read, bytes, priv->stats.bytes_read); | 417 | *bytes_read, bytes, priv->stats.bytes_read); |
416 | 418 | ||
417 | return result; | 419 | return result; |
@@ -500,7 +502,7 @@ int ps3_vuart_write(struct ps3_system_bus_device *dev, const void *buf, | |||
500 | spin_lock_irqsave(&priv->tx_list.lock, flags); | 502 | spin_lock_irqsave(&priv->tx_list.lock, flags); |
501 | 503 | ||
502 | if (list_empty(&priv->tx_list.head)) { | 504 | if (list_empty(&priv->tx_list.head)) { |
503 | unsigned long bytes_written; | 505 | u64 bytes_written; |
504 | 506 | ||
505 | result = ps3_vuart_raw_write(dev, buf, bytes, &bytes_written); | 507 | result = ps3_vuart_raw_write(dev, buf, bytes, &bytes_written); |
506 | 508 | ||
@@ -592,7 +594,7 @@ static int ps3_vuart_queue_rx_bytes(struct ps3_system_bus_device *dev, | |||
592 | list_add_tail(&lb->link, &priv->rx_list.head); | 594 | list_add_tail(&lb->link, &priv->rx_list.head); |
593 | priv->rx_list.bytes_held += bytes; | 595 | priv->rx_list.bytes_held += bytes; |
594 | 596 | ||
595 | dev_dbg(&dev->core, "%s:%d: buf_%lu: queued %lxh bytes\n", | 597 | dev_dbg(&dev->core, "%s:%d: buf_%lu: queued %llxh bytes\n", |
596 | __func__, __LINE__, lb->dbg_number, bytes); | 598 | __func__, __LINE__, lb->dbg_number, bytes); |
597 | 599 | ||
598 | *bytes_queued = bytes; | 600 | *bytes_queued = bytes; |
@@ -745,7 +747,7 @@ static int ps3_vuart_handle_interrupt_tx(struct ps3_system_bus_device *dev) | |||
745 | 747 | ||
746 | list_for_each_entry_safe(lb, n, &priv->tx_list.head, link) { | 748 | list_for_each_entry_safe(lb, n, &priv->tx_list.head, link) { |
747 | 749 | ||
748 | unsigned long bytes_written; | 750 | u64 bytes_written; |
749 | 751 | ||
750 | result = ps3_vuart_raw_write(dev, lb->head, lb->tail - lb->head, | 752 | result = ps3_vuart_raw_write(dev, lb->head, lb->tail - lb->head, |
751 | &bytes_written); | 753 | &bytes_written); |
@@ -762,7 +764,7 @@ static int ps3_vuart_handle_interrupt_tx(struct ps3_system_bus_device *dev) | |||
762 | if (bytes_written < lb->tail - lb->head) { | 764 | if (bytes_written < lb->tail - lb->head) { |
763 | lb->head += bytes_written; | 765 | lb->head += bytes_written; |
764 | dev_dbg(&dev->core, | 766 | dev_dbg(&dev->core, |
765 | "%s:%d cleared buf_%lu, %lxh bytes\n", | 767 | "%s:%d cleared buf_%lu, %llxh bytes\n", |
766 | __func__, __LINE__, lb->dbg_number, | 768 | __func__, __LINE__, lb->dbg_number, |
767 | bytes_written); | 769 | bytes_written); |
768 | goto port_full; | 770 | goto port_full; |
diff --git a/drivers/ps3/ps3stor_lib.c b/drivers/ps3/ps3stor_lib.c index 55955f16ad91..18066d555397 100644 --- a/drivers/ps3/ps3stor_lib.c +++ b/drivers/ps3/ps3stor_lib.c | |||
@@ -70,7 +70,7 @@ static int ps3stor_probe_access(struct ps3_storage_device *dev) | |||
70 | __func__, __LINE__, n); | 70 | __func__, __LINE__, n); |
71 | dev->region_idx = __ffs(dev->accessible_regions); | 71 | dev->region_idx = __ffs(dev->accessible_regions); |
72 | dev_info(&dev->sbd.core, | 72 | dev_info(&dev->sbd.core, |
73 | "First accessible region has index %u start %lu size %lu\n", | 73 | "First accessible region has index %u start %llu size %llu\n", |
74 | dev->region_idx, dev->regions[dev->region_idx].start, | 74 | dev->region_idx, dev->regions[dev->region_idx].start, |
75 | dev->regions[dev->region_idx].size); | 75 | dev->regions[dev->region_idx].size); |
76 | 76 | ||
@@ -220,7 +220,7 @@ u64 ps3stor_read_write_sectors(struct ps3_storage_device *dev, u64 lpar, | |||
220 | const char *op = write ? "write" : "read"; | 220 | const char *op = write ? "write" : "read"; |
221 | int res; | 221 | int res; |
222 | 222 | ||
223 | dev_dbg(&dev->sbd.core, "%s:%u: %s %lu sectors starting at %lu\n", | 223 | dev_dbg(&dev->sbd.core, "%s:%u: %s %llu sectors starting at %llu\n", |
224 | __func__, __LINE__, op, sectors, start_sector); | 224 | __func__, __LINE__, op, sectors, start_sector); |
225 | 225 | ||
226 | init_completion(&dev->done); | 226 | init_completion(&dev->done); |
@@ -238,7 +238,7 @@ u64 ps3stor_read_write_sectors(struct ps3_storage_device *dev, u64 lpar, | |||
238 | 238 | ||
239 | wait_for_completion(&dev->done); | 239 | wait_for_completion(&dev->done); |
240 | if (dev->lv1_status) { | 240 | if (dev->lv1_status) { |
241 | dev_dbg(&dev->sbd.core, "%s:%u: %s failed 0x%lx\n", __func__, | 241 | dev_dbg(&dev->sbd.core, "%s:%u: %s failed 0x%llx\n", __func__, |
242 | __LINE__, op, dev->lv1_status); | 242 | __LINE__, op, dev->lv1_status); |
243 | return dev->lv1_status; | 243 | return dev->lv1_status; |
244 | } | 244 | } |
@@ -268,7 +268,7 @@ u64 ps3stor_send_command(struct ps3_storage_device *dev, u64 cmd, u64 arg1, | |||
268 | { | 268 | { |
269 | int res; | 269 | int res; |
270 | 270 | ||
271 | dev_dbg(&dev->sbd.core, "%s:%u: send device command 0x%lx\n", __func__, | 271 | dev_dbg(&dev->sbd.core, "%s:%u: send device command 0x%llx\n", __func__, |
272 | __LINE__, cmd); | 272 | __LINE__, cmd); |
273 | 273 | ||
274 | init_completion(&dev->done); | 274 | init_completion(&dev->done); |
@@ -277,19 +277,19 @@ u64 ps3stor_send_command(struct ps3_storage_device *dev, u64 cmd, u64 arg1, | |||
277 | arg2, arg3, arg4, &dev->tag); | 277 | arg2, arg3, arg4, &dev->tag); |
278 | if (res) { | 278 | if (res) { |
279 | dev_err(&dev->sbd.core, | 279 | dev_err(&dev->sbd.core, |
280 | "%s:%u: send_device_command 0x%lx failed %d\n", | 280 | "%s:%u: send_device_command 0x%llx failed %d\n", |
281 | __func__, __LINE__, cmd, res); | 281 | __func__, __LINE__, cmd, res); |
282 | return -1; | 282 | return -1; |
283 | } | 283 | } |
284 | 284 | ||
285 | wait_for_completion(&dev->done); | 285 | wait_for_completion(&dev->done); |
286 | if (dev->lv1_status) { | 286 | if (dev->lv1_status) { |
287 | dev_dbg(&dev->sbd.core, "%s:%u: command 0x%lx failed 0x%lx\n", | 287 | dev_dbg(&dev->sbd.core, "%s:%u: command 0x%llx failed 0x%llx\n", |
288 | __func__, __LINE__, cmd, dev->lv1_status); | 288 | __func__, __LINE__, cmd, dev->lv1_status); |
289 | return dev->lv1_status; | 289 | return dev->lv1_status; |
290 | } | 290 | } |
291 | 291 | ||
292 | dev_dbg(&dev->sbd.core, "%s:%u: command 0x%lx completed\n", __func__, | 292 | dev_dbg(&dev->sbd.core, "%s:%u: command 0x%llx completed\n", __func__, |
293 | __LINE__, cmd); | 293 | __LINE__, cmd); |
294 | 294 | ||
295 | return 0; | 295 | return 0; |
diff --git a/drivers/regulator/wm8400-regulator.c b/drivers/regulator/wm8400-regulator.c index 48b372e038a8..56e23d44ba59 100644 --- a/drivers/regulator/wm8400-regulator.c +++ b/drivers/regulator/wm8400-regulator.c | |||
@@ -289,7 +289,7 @@ static struct regulator_desc regulators[] = { | |||
289 | }, | 289 | }, |
290 | }; | 290 | }; |
291 | 291 | ||
292 | static int __init wm8400_regulator_probe(struct platform_device *pdev) | 292 | static int __devinit wm8400_regulator_probe(struct platform_device *pdev) |
293 | { | 293 | { |
294 | struct regulator_dev *rdev; | 294 | struct regulator_dev *rdev; |
295 | 295 | ||
diff --git a/drivers/rtc/rtc-pxa.c b/drivers/rtc/rtc-pxa.c index cc7eb8767b82..bd56a033bfd0 100644 --- a/drivers/rtc/rtc-pxa.c +++ b/drivers/rtc/rtc-pxa.c | |||
@@ -27,6 +27,8 @@ | |||
27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | 29 | ||
30 | #include <mach/hardware.h> | ||
31 | |||
30 | #define TIMER_FREQ CLOCK_TICK_RATE | 32 | #define TIMER_FREQ CLOCK_TICK_RATE |
31 | #define RTC_DEF_DIVIDER (32768 - 1) | 33 | #define RTC_DEF_DIVIDER (32768 - 1) |
32 | #define RTC_DEF_TRIM 0 | 34 | #define RTC_DEF_TRIM 0 |
diff --git a/drivers/rtc/rtc-twl4030.c b/drivers/rtc/rtc-twl4030.c index 8ce5f74ee45b..ad35f76c46b7 100644 --- a/drivers/rtc/rtc-twl4030.c +++ b/drivers/rtc/rtc-twl4030.c | |||
@@ -120,7 +120,7 @@ static int twl4030_rtc_write_u8(u8 data, u8 reg) | |||
120 | static unsigned char rtc_irq_bits; | 120 | static unsigned char rtc_irq_bits; |
121 | 121 | ||
122 | /* | 122 | /* |
123 | * Enable timer and/or alarm interrupts. | 123 | * Enable 1/second update and/or alarm interrupts. |
124 | */ | 124 | */ |
125 | static int set_rtc_irq_bit(unsigned char bit) | 125 | static int set_rtc_irq_bit(unsigned char bit) |
126 | { | 126 | { |
@@ -128,6 +128,7 @@ static int set_rtc_irq_bit(unsigned char bit) | |||
128 | int ret; | 128 | int ret; |
129 | 129 | ||
130 | val = rtc_irq_bits | bit; | 130 | val = rtc_irq_bits | bit; |
131 | val &= ~BIT_RTC_INTERRUPTS_REG_EVERY_M; | ||
131 | ret = twl4030_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG); | 132 | ret = twl4030_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG); |
132 | if (ret == 0) | 133 | if (ret == 0) |
133 | rtc_irq_bits = val; | 134 | rtc_irq_bits = val; |
@@ -136,7 +137,7 @@ static int set_rtc_irq_bit(unsigned char bit) | |||
136 | } | 137 | } |
137 | 138 | ||
138 | /* | 139 | /* |
139 | * Disable timer and/or alarm interrupts. | 140 | * Disable update and/or alarm interrupts. |
140 | */ | 141 | */ |
141 | static int mask_rtc_irq_bit(unsigned char bit) | 142 | static int mask_rtc_irq_bit(unsigned char bit) |
142 | { | 143 | { |
@@ -151,7 +152,7 @@ static int mask_rtc_irq_bit(unsigned char bit) | |||
151 | return ret; | 152 | return ret; |
152 | } | 153 | } |
153 | 154 | ||
154 | static inline int twl4030_rtc_alarm_irq_set_state(int enabled) | 155 | static int twl4030_rtc_alarm_irq_enable(struct device *dev, unsigned enabled) |
155 | { | 156 | { |
156 | int ret; | 157 | int ret; |
157 | 158 | ||
@@ -163,7 +164,7 @@ static inline int twl4030_rtc_alarm_irq_set_state(int enabled) | |||
163 | return ret; | 164 | return ret; |
164 | } | 165 | } |
165 | 166 | ||
166 | static inline int twl4030_rtc_irq_set_state(int enabled) | 167 | static int twl4030_rtc_update_irq_enable(struct device *dev, unsigned enabled) |
167 | { | 168 | { |
168 | int ret; | 169 | int ret; |
169 | 170 | ||
@@ -292,7 +293,7 @@ static int twl4030_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm) | |||
292 | unsigned char alarm_data[ALL_TIME_REGS + 1]; | 293 | unsigned char alarm_data[ALL_TIME_REGS + 1]; |
293 | int ret; | 294 | int ret; |
294 | 295 | ||
295 | ret = twl4030_rtc_alarm_irq_set_state(0); | 296 | ret = twl4030_rtc_alarm_irq_enable(dev, 0); |
296 | if (ret) | 297 | if (ret) |
297 | goto out; | 298 | goto out; |
298 | 299 | ||
@@ -312,35 +313,11 @@ static int twl4030_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm) | |||
312 | } | 313 | } |
313 | 314 | ||
314 | if (alm->enabled) | 315 | if (alm->enabled) |
315 | ret = twl4030_rtc_alarm_irq_set_state(1); | 316 | ret = twl4030_rtc_alarm_irq_enable(dev, 1); |
316 | out: | 317 | out: |
317 | return ret; | 318 | return ret; |
318 | } | 319 | } |
319 | 320 | ||
320 | #ifdef CONFIG_RTC_INTF_DEV | ||
321 | |||
322 | static int twl4030_rtc_ioctl(struct device *dev, unsigned int cmd, | ||
323 | unsigned long arg) | ||
324 | { | ||
325 | switch (cmd) { | ||
326 | case RTC_AIE_OFF: | ||
327 | return twl4030_rtc_alarm_irq_set_state(0); | ||
328 | case RTC_AIE_ON: | ||
329 | return twl4030_rtc_alarm_irq_set_state(1); | ||
330 | case RTC_UIE_OFF: | ||
331 | return twl4030_rtc_irq_set_state(0); | ||
332 | case RTC_UIE_ON: | ||
333 | return twl4030_rtc_irq_set_state(1); | ||
334 | |||
335 | default: | ||
336 | return -ENOIOCTLCMD; | ||
337 | } | ||
338 | } | ||
339 | |||
340 | #else | ||
341 | #define twl4030_rtc_ioctl NULL | ||
342 | #endif | ||
343 | |||
344 | static irqreturn_t twl4030_rtc_interrupt(int irq, void *rtc) | 321 | static irqreturn_t twl4030_rtc_interrupt(int irq, void *rtc) |
345 | { | 322 | { |
346 | unsigned long events = 0; | 323 | unsigned long events = 0; |
@@ -400,11 +377,12 @@ out: | |||
400 | } | 377 | } |
401 | 378 | ||
402 | static struct rtc_class_ops twl4030_rtc_ops = { | 379 | static struct rtc_class_ops twl4030_rtc_ops = { |
403 | .ioctl = twl4030_rtc_ioctl, | ||
404 | .read_time = twl4030_rtc_read_time, | 380 | .read_time = twl4030_rtc_read_time, |
405 | .set_time = twl4030_rtc_set_time, | 381 | .set_time = twl4030_rtc_set_time, |
406 | .read_alarm = twl4030_rtc_read_alarm, | 382 | .read_alarm = twl4030_rtc_read_alarm, |
407 | .set_alarm = twl4030_rtc_set_alarm, | 383 | .set_alarm = twl4030_rtc_set_alarm, |
384 | .alarm_irq_enable = twl4030_rtc_alarm_irq_enable, | ||
385 | .update_irq_enable = twl4030_rtc_update_irq_enable, | ||
408 | }; | 386 | }; |
409 | 387 | ||
410 | /*----------------------------------------------------------------------*/ | 388 | /*----------------------------------------------------------------------*/ |
@@ -422,7 +400,7 @@ static int __devinit twl4030_rtc_probe(struct platform_device *pdev) | |||
422 | rtc = rtc_device_register(pdev->name, | 400 | rtc = rtc_device_register(pdev->name, |
423 | &pdev->dev, &twl4030_rtc_ops, THIS_MODULE); | 401 | &pdev->dev, &twl4030_rtc_ops, THIS_MODULE); |
424 | if (IS_ERR(rtc)) { | 402 | if (IS_ERR(rtc)) { |
425 | ret = -EINVAL; | 403 | ret = PTR_ERR(rtc); |
426 | dev_err(&pdev->dev, "can't register RTC device, err %ld\n", | 404 | dev_err(&pdev->dev, "can't register RTC device, err %ld\n", |
427 | PTR_ERR(rtc)); | 405 | PTR_ERR(rtc)); |
428 | goto out0; | 406 | goto out0; |
@@ -432,7 +410,6 @@ static int __devinit twl4030_rtc_probe(struct platform_device *pdev) | |||
432 | platform_set_drvdata(pdev, rtc); | 410 | platform_set_drvdata(pdev, rtc); |
433 | 411 | ||
434 | ret = twl4030_rtc_read_u8(&rd_reg, REG_RTC_STATUS_REG); | 412 | ret = twl4030_rtc_read_u8(&rd_reg, REG_RTC_STATUS_REG); |
435 | |||
436 | if (ret < 0) | 413 | if (ret < 0) |
437 | goto out1; | 414 | goto out1; |
438 | 415 | ||
@@ -475,7 +452,6 @@ static int __devinit twl4030_rtc_probe(struct platform_device *pdev) | |||
475 | 452 | ||
476 | return ret; | 453 | return ret; |
477 | 454 | ||
478 | |||
479 | out2: | 455 | out2: |
480 | free_irq(irq, rtc); | 456 | free_irq(irq, rtc); |
481 | out1: | 457 | out1: |
@@ -506,8 +482,9 @@ static int __devexit twl4030_rtc_remove(struct platform_device *pdev) | |||
506 | 482 | ||
507 | static void twl4030_rtc_shutdown(struct platform_device *pdev) | 483 | static void twl4030_rtc_shutdown(struct platform_device *pdev) |
508 | { | 484 | { |
509 | mask_rtc_irq_bit(BIT_RTC_INTERRUPTS_REG_IT_TIMER_M | | 485 | /* mask timer interrupts, but leave alarm interrupts on to enable |
510 | BIT_RTC_INTERRUPTS_REG_IT_ALARM_M); | 486 | power-on when alarm is triggered */ |
487 | mask_rtc_irq_bit(BIT_RTC_INTERRUPTS_REG_IT_TIMER_M); | ||
511 | } | 488 | } |
512 | 489 | ||
513 | #ifdef CONFIG_PM | 490 | #ifdef CONFIG_PM |
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c index acca6678cb2b..49c3bfa1afd7 100644 --- a/drivers/s390/net/lcs.c +++ b/drivers/s390/net/lcs.c | |||
@@ -70,7 +70,9 @@ static char debug_buffer[255]; | |||
70 | static void lcs_tasklet(unsigned long); | 70 | static void lcs_tasklet(unsigned long); |
71 | static void lcs_start_kernel_thread(struct work_struct *); | 71 | static void lcs_start_kernel_thread(struct work_struct *); |
72 | static void lcs_get_frames_cb(struct lcs_channel *, struct lcs_buffer *); | 72 | static void lcs_get_frames_cb(struct lcs_channel *, struct lcs_buffer *); |
73 | #ifdef CONFIG_IP_MULTICAST | ||
73 | static int lcs_send_delipm(struct lcs_card *, struct lcs_ipm_list *); | 74 | static int lcs_send_delipm(struct lcs_card *, struct lcs_ipm_list *); |
75 | #endif /* CONFIG_IP_MULTICAST */ | ||
74 | static int lcs_recovery(void *ptr); | 76 | static int lcs_recovery(void *ptr); |
75 | 77 | ||
76 | /** | 78 | /** |
@@ -1285,6 +1287,8 @@ out: | |||
1285 | lcs_clear_thread_running_bit(card, LCS_SET_MC_THREAD); | 1287 | lcs_clear_thread_running_bit(card, LCS_SET_MC_THREAD); |
1286 | return 0; | 1288 | return 0; |
1287 | } | 1289 | } |
1290 | #endif /* CONFIG_IP_MULTICAST */ | ||
1291 | |||
1288 | /** | 1292 | /** |
1289 | * function called by net device to | 1293 | * function called by net device to |
1290 | * handle multicast address relevant things | 1294 | * handle multicast address relevant things |
@@ -1292,6 +1296,7 @@ out: | |||
1292 | static void | 1296 | static void |
1293 | lcs_set_multicast_list(struct net_device *dev) | 1297 | lcs_set_multicast_list(struct net_device *dev) |
1294 | { | 1298 | { |
1299 | #ifdef CONFIG_IP_MULTICAST | ||
1295 | struct lcs_card *card; | 1300 | struct lcs_card *card; |
1296 | 1301 | ||
1297 | LCS_DBF_TEXT(4, trace, "setmulti"); | 1302 | LCS_DBF_TEXT(4, trace, "setmulti"); |
@@ -1299,9 +1304,8 @@ lcs_set_multicast_list(struct net_device *dev) | |||
1299 | 1304 | ||
1300 | if (!lcs_set_thread_start_bit(card, LCS_SET_MC_THREAD)) | 1305 | if (!lcs_set_thread_start_bit(card, LCS_SET_MC_THREAD)) |
1301 | schedule_work(&card->kernel_thread_starter); | 1306 | schedule_work(&card->kernel_thread_starter); |
1302 | } | ||
1303 | |||
1304 | #endif /* CONFIG_IP_MULTICAST */ | 1307 | #endif /* CONFIG_IP_MULTICAST */ |
1308 | } | ||
1305 | 1309 | ||
1306 | static long | 1310 | static long |
1307 | lcs_check_irb_error(struct ccw_device *cdev, struct irb *irb) | 1311 | lcs_check_irb_error(struct ccw_device *cdev, struct irb *irb) |
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c index ee0739b217b6..91ef669d98f6 100644 --- a/drivers/scsi/ibmvscsi/ibmvfc.c +++ b/drivers/scsi/ibmvscsi/ibmvfc.c | |||
@@ -933,7 +933,7 @@ static void ibmvfc_get_host_speed(struct Scsi_Host *shost) | |||
933 | fc_host_speed(shost) = FC_PORTSPEED_16GBIT; | 933 | fc_host_speed(shost) = FC_PORTSPEED_16GBIT; |
934 | break; | 934 | break; |
935 | default: | 935 | default: |
936 | ibmvfc_log(vhost, 3, "Unknown port speed: %ld Gbit\n", | 936 | ibmvfc_log(vhost, 3, "Unknown port speed: %lld Gbit\n", |
937 | vhost->login_buf->resp.link_speed / 100); | 937 | vhost->login_buf->resp.link_speed / 100); |
938 | fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; | 938 | fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; |
939 | break; | 939 | break; |
@@ -2149,8 +2149,8 @@ static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq, | |||
2149 | { | 2149 | { |
2150 | const char *desc = ibmvfc_get_ae_desc(crq->event); | 2150 | const char *desc = ibmvfc_get_ae_desc(crq->event); |
2151 | 2151 | ||
2152 | ibmvfc_log(vhost, 3, "%s event received. scsi_id: %lx, wwpn: %lx," | 2152 | ibmvfc_log(vhost, 3, "%s event received. scsi_id: %llx, wwpn: %llx," |
2153 | " node_name: %lx\n", desc, crq->scsi_id, crq->wwpn, crq->node_name); | 2153 | " node_name: %llx\n", desc, crq->scsi_id, crq->wwpn, crq->node_name); |
2154 | 2154 | ||
2155 | switch (crq->event) { | 2155 | switch (crq->event) { |
2156 | case IBMVFC_AE_LINK_UP: | 2156 | case IBMVFC_AE_LINK_UP: |
@@ -2184,7 +2184,7 @@ static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq, | |||
2184 | ibmvfc_link_down(vhost, IBMVFC_HALTED); | 2184 | ibmvfc_link_down(vhost, IBMVFC_HALTED); |
2185 | break; | 2185 | break; |
2186 | default: | 2186 | default: |
2187 | dev_err(vhost->dev, "Unknown async event received: %ld\n", crq->event); | 2187 | dev_err(vhost->dev, "Unknown async event received: %lld\n", crq->event); |
2188 | break; | 2188 | break; |
2189 | }; | 2189 | }; |
2190 | } | 2190 | } |
@@ -2261,13 +2261,13 @@ static void ibmvfc_handle_crq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost) | |||
2261 | * actually sent | 2261 | * actually sent |
2262 | */ | 2262 | */ |
2263 | if (unlikely(!ibmvfc_valid_event(&vhost->pool, evt))) { | 2263 | if (unlikely(!ibmvfc_valid_event(&vhost->pool, evt))) { |
2264 | dev_err(vhost->dev, "Returned correlation_token 0x%08lx is invalid!\n", | 2264 | dev_err(vhost->dev, "Returned correlation_token 0x%08llx is invalid!\n", |
2265 | crq->ioba); | 2265 | crq->ioba); |
2266 | return; | 2266 | return; |
2267 | } | 2267 | } |
2268 | 2268 | ||
2269 | if (unlikely(atomic_read(&evt->free))) { | 2269 | if (unlikely(atomic_read(&evt->free))) { |
2270 | dev_err(vhost->dev, "Received duplicate correlation_token 0x%08lx!\n", | 2270 | dev_err(vhost->dev, "Received duplicate correlation_token 0x%08llx!\n", |
2271 | crq->ioba); | 2271 | crq->ioba); |
2272 | return; | 2272 | return; |
2273 | } | 2273 | } |
@@ -3259,7 +3259,7 @@ static int ibmvfc_alloc_target(struct ibmvfc_host *vhost, u64 scsi_id) | |||
3259 | 3259 | ||
3260 | tgt = mempool_alloc(vhost->tgt_pool, GFP_KERNEL); | 3260 | tgt = mempool_alloc(vhost->tgt_pool, GFP_KERNEL); |
3261 | if (!tgt) { | 3261 | if (!tgt) { |
3262 | dev_err(vhost->dev, "Target allocation failure for scsi id %08lx\n", | 3262 | dev_err(vhost->dev, "Target allocation failure for scsi id %08llx\n", |
3263 | scsi_id); | 3263 | scsi_id); |
3264 | return -ENOMEM; | 3264 | return -ENOMEM; |
3265 | } | 3265 | } |
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.h b/drivers/scsi/ibmvscsi/ibmvfc.h index babdf3db59df..87dafd0f8d44 100644 --- a/drivers/scsi/ibmvscsi/ibmvfc.h +++ b/drivers/scsi/ibmvscsi/ibmvfc.h | |||
@@ -691,13 +691,13 @@ struct ibmvfc_host { | |||
691 | #define DBG_CMD(CMD) do { if (ibmvfc_debug) CMD; } while (0) | 691 | #define DBG_CMD(CMD) do { if (ibmvfc_debug) CMD; } while (0) |
692 | 692 | ||
693 | #define tgt_dbg(t, fmt, ...) \ | 693 | #define tgt_dbg(t, fmt, ...) \ |
694 | DBG_CMD(dev_info((t)->vhost->dev, "%lX: " fmt, (t)->scsi_id, ##__VA_ARGS__)) | 694 | DBG_CMD(dev_info((t)->vhost->dev, "%llX: " fmt, (t)->scsi_id, ##__VA_ARGS__)) |
695 | 695 | ||
696 | #define tgt_info(t, fmt, ...) \ | 696 | #define tgt_info(t, fmt, ...) \ |
697 | dev_info((t)->vhost->dev, "%lX: " fmt, (t)->scsi_id, ##__VA_ARGS__) | 697 | dev_info((t)->vhost->dev, "%llX: " fmt, (t)->scsi_id, ##__VA_ARGS__) |
698 | 698 | ||
699 | #define tgt_err(t, fmt, ...) \ | 699 | #define tgt_err(t, fmt, ...) \ |
700 | dev_err((t)->vhost->dev, "%lX: " fmt, (t)->scsi_id, ##__VA_ARGS__) | 700 | dev_err((t)->vhost->dev, "%llX: " fmt, (t)->scsi_id, ##__VA_ARGS__) |
701 | 701 | ||
702 | #define ibmvfc_dbg(vhost, ...) \ | 702 | #define ibmvfc_dbg(vhost, ...) \ |
703 | DBG_CMD(dev_info((vhost)->dev, ##__VA_ARGS__)) | 703 | DBG_CMD(dev_info((vhost)->dev, ##__VA_ARGS__)) |
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index 841f460edbc4..07829009a8be 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c | |||
@@ -4912,7 +4912,7 @@ static int ipr_ioctl(struct scsi_device *sdev, int cmd, void __user *arg) | |||
4912 | if (res && ipr_is_gata(res)) { | 4912 | if (res && ipr_is_gata(res)) { |
4913 | if (cmd == HDIO_GET_IDENTITY) | 4913 | if (cmd == HDIO_GET_IDENTITY) |
4914 | return -ENOTTY; | 4914 | return -ENOTTY; |
4915 | return ata_scsi_ioctl(sdev, cmd, arg); | 4915 | return ata_sas_scsi_ioctl(res->sata_port->ap, sdev, cmd, arg); |
4916 | } | 4916 | } |
4917 | 4917 | ||
4918 | return -EINVAL; | 4918 | return -EINVAL; |
diff --git a/drivers/scsi/libiscsi_tcp.c b/drivers/scsi/libiscsi_tcp.c index a745f91d2928..e7705d3532c9 100644 --- a/drivers/scsi/libiscsi_tcp.c +++ b/drivers/scsi/libiscsi_tcp.c | |||
@@ -177,7 +177,6 @@ int iscsi_tcp_segment_done(struct iscsi_tcp_conn *tcp_conn, | |||
177 | struct iscsi_segment *segment, int recv, | 177 | struct iscsi_segment *segment, int recv, |
178 | unsigned copied) | 178 | unsigned copied) |
179 | { | 179 | { |
180 | static unsigned char padbuf[ISCSI_PAD_LEN]; | ||
181 | struct scatterlist sg; | 180 | struct scatterlist sg; |
182 | unsigned int pad; | 181 | unsigned int pad; |
183 | 182 | ||
@@ -233,7 +232,7 @@ int iscsi_tcp_segment_done(struct iscsi_tcp_conn *tcp_conn, | |||
233 | debug_tcp("consume %d pad bytes\n", pad); | 232 | debug_tcp("consume %d pad bytes\n", pad); |
234 | segment->total_size += pad; | 233 | segment->total_size += pad; |
235 | segment->size = pad; | 234 | segment->size = pad; |
236 | segment->data = padbuf; | 235 | segment->data = segment->padbuf; |
237 | return 0; | 236 | return 0; |
238 | } | 237 | } |
239 | } | 238 | } |
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c index 744838780ada..1c558d3bce18 100644 --- a/drivers/scsi/libsas/sas_scsi_host.c +++ b/drivers/scsi/libsas/sas_scsi_host.c | |||
@@ -717,7 +717,7 @@ int sas_ioctl(struct scsi_device *sdev, int cmd, void __user *arg) | |||
717 | struct domain_device *dev = sdev_to_domain_dev(sdev); | 717 | struct domain_device *dev = sdev_to_domain_dev(sdev); |
718 | 718 | ||
719 | if (dev_is_sata(dev)) | 719 | if (dev_is_sata(dev)) |
720 | return ata_scsi_ioctl(sdev, cmd, arg); | 720 | return ata_sas_scsi_ioctl(dev->sata_dev.ap, sdev, cmd, arg); |
721 | 721 | ||
722 | return -EINVAL; | 722 | return -EINVAL; |
723 | } | 723 | } |
diff --git a/drivers/scsi/ps3rom.c b/drivers/scsi/ps3rom.c index ce48e2d0193c..ca0dd33497ec 100644 --- a/drivers/scsi/ps3rom.c +++ b/drivers/scsi/ps3rom.c | |||
@@ -290,11 +290,11 @@ static irqreturn_t ps3rom_interrupt(int irq, void *data) | |||
290 | 290 | ||
291 | if (tag != dev->tag) | 291 | if (tag != dev->tag) |
292 | dev_err(&dev->sbd.core, | 292 | dev_err(&dev->sbd.core, |
293 | "%s:%u: tag mismatch, got %lx, expected %lx\n", | 293 | "%s:%u: tag mismatch, got %llx, expected %llx\n", |
294 | __func__, __LINE__, tag, dev->tag); | 294 | __func__, __LINE__, tag, dev->tag); |
295 | 295 | ||
296 | if (res) { | 296 | if (res) { |
297 | dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%lx\n", | 297 | dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%llx\n", |
298 | __func__, __LINE__, res, status); | 298 | __func__, __LINE__, res, status); |
299 | return IRQ_HANDLED; | 299 | return IRQ_HANDLED; |
300 | } | 300 | } |
@@ -364,7 +364,7 @@ static int __devinit ps3rom_probe(struct ps3_system_bus_device *_dev) | |||
364 | 364 | ||
365 | if (dev->blk_size != CD_FRAMESIZE) { | 365 | if (dev->blk_size != CD_FRAMESIZE) { |
366 | dev_err(&dev->sbd.core, | 366 | dev_err(&dev->sbd.core, |
367 | "%s:%u: cannot handle block size %lu\n", __func__, | 367 | "%s:%u: cannot handle block size %llu\n", __func__, |
368 | __LINE__, dev->blk_size); | 368 | __LINE__, dev->blk_size); |
369 | return -EINVAL; | 369 | return -EINVAL; |
370 | } | 370 | } |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 2d4f32b4df5c..9ad4d0968e5c 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -1258,35 +1258,48 @@ qla2x00_init_rings(scsi_qla_host_t *vha) | |||
1258 | { | 1258 | { |
1259 | int rval; | 1259 | int rval; |
1260 | unsigned long flags = 0; | 1260 | unsigned long flags = 0; |
1261 | int cnt; | 1261 | int cnt, que; |
1262 | struct qla_hw_data *ha = vha->hw; | 1262 | struct qla_hw_data *ha = vha->hw; |
1263 | struct req_que *req = ha->req_q_map[0]; | 1263 | struct req_que *req; |
1264 | struct rsp_que *rsp = ha->rsp_q_map[0]; | 1264 | struct rsp_que *rsp; |
1265 | struct scsi_qla_host *vp; | ||
1265 | struct mid_init_cb_24xx *mid_init_cb = | 1266 | struct mid_init_cb_24xx *mid_init_cb = |
1266 | (struct mid_init_cb_24xx *) ha->init_cb; | 1267 | (struct mid_init_cb_24xx *) ha->init_cb; |
1267 | 1268 | ||
1268 | spin_lock_irqsave(&ha->hardware_lock, flags); | 1269 | spin_lock_irqsave(&ha->hardware_lock, flags); |
1269 | 1270 | ||
1270 | /* Clear outstanding commands array. */ | 1271 | /* Clear outstanding commands array. */ |
1271 | for (cnt = 0; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) | 1272 | for (que = 0; que < ha->max_queues; que++) { |
1272 | req->outstanding_cmds[cnt] = NULL; | 1273 | req = ha->req_q_map[que]; |
1274 | if (!req) | ||
1275 | continue; | ||
1276 | for (cnt = 0; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) | ||
1277 | req->outstanding_cmds[cnt] = NULL; | ||
1273 | 1278 | ||
1274 | req->current_outstanding_cmd = 0; | 1279 | req->current_outstanding_cmd = 0; |
1275 | 1280 | ||
1276 | /* Clear RSCN queue. */ | 1281 | /* Initialize firmware. */ |
1277 | vha->rscn_in_ptr = 0; | 1282 | req->ring_ptr = req->ring; |
1278 | vha->rscn_out_ptr = 0; | 1283 | req->ring_index = 0; |
1284 | req->cnt = req->length; | ||
1285 | } | ||
1279 | 1286 | ||
1280 | /* Initialize firmware. */ | 1287 | for (que = 0; que < ha->max_queues; que++) { |
1281 | req->ring_ptr = req->ring; | 1288 | rsp = ha->rsp_q_map[que]; |
1282 | req->ring_index = 0; | 1289 | if (!rsp) |
1283 | req->cnt = req->length; | 1290 | continue; |
1284 | rsp->ring_ptr = rsp->ring; | 1291 | rsp->ring_ptr = rsp->ring; |
1285 | rsp->ring_index = 0; | 1292 | rsp->ring_index = 0; |
1286 | 1293 | ||
1287 | /* Initialize response queue entries */ | 1294 | /* Initialize response queue entries */ |
1288 | qla2x00_init_response_q_entries(rsp); | 1295 | qla2x00_init_response_q_entries(rsp); |
1296 | } | ||
1289 | 1297 | ||
1298 | /* Clear RSCN queue. */ | ||
1299 | list_for_each_entry(vp, &ha->vp_list, list) { | ||
1300 | vp->rscn_in_ptr = 0; | ||
1301 | vp->rscn_out_ptr = 0; | ||
1302 | } | ||
1290 | ha->isp_ops->config_rings(vha); | 1303 | ha->isp_ops->config_rings(vha); |
1291 | 1304 | ||
1292 | spin_unlock_irqrestore(&ha->hardware_lock, flags); | 1305 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
@@ -3212,8 +3225,8 @@ qla2x00_loop_resync(scsi_qla_host_t *vha) | |||
3212 | int rval = QLA_SUCCESS; | 3225 | int rval = QLA_SUCCESS; |
3213 | uint32_t wait_time; | 3226 | uint32_t wait_time; |
3214 | struct qla_hw_data *ha = vha->hw; | 3227 | struct qla_hw_data *ha = vha->hw; |
3215 | struct req_que *req = ha->req_q_map[0]; | 3228 | struct req_que *req = ha->req_q_map[vha->req_ques[0]]; |
3216 | struct rsp_que *rsp = ha->rsp_q_map[0]; | 3229 | struct rsp_que *rsp = req->rsp; |
3217 | 3230 | ||
3218 | atomic_set(&vha->loop_state, LOOP_UPDATE); | 3231 | atomic_set(&vha->loop_state, LOOP_UPDATE); |
3219 | clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags); | 3232 | clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags); |
@@ -3492,6 +3505,7 @@ qla25xx_init_queues(struct qla_hw_data *ha) | |||
3492 | } | 3505 | } |
3493 | req = ha->req_q_map[i]; | 3506 | req = ha->req_q_map[i]; |
3494 | if (req) { | 3507 | if (req) { |
3508 | /* Clear outstanding commands array. */ | ||
3495 | req->options &= ~BIT_0; | 3509 | req->options &= ~BIT_0; |
3496 | ret = qla25xx_init_req_que(base_vha, req, req->options); | 3510 | ret = qla25xx_init_req_que(base_vha, req, req->options); |
3497 | if (ret != QLA_SUCCESS) | 3511 | if (ret != QLA_SUCCESS) |
@@ -3500,7 +3514,7 @@ qla25xx_init_queues(struct qla_hw_data *ha) | |||
3500 | req->id)); | 3514 | req->id)); |
3501 | else | 3515 | else |
3502 | DEBUG2_17(printk(KERN_WARNING | 3516 | DEBUG2_17(printk(KERN_WARNING |
3503 | "%s Rsp que:%d inited\n", __func__, | 3517 | "%s Req que:%d inited\n", __func__, |
3504 | req->id)); | 3518 | req->id)); |
3505 | } | 3519 | } |
3506 | } | 3520 | } |
@@ -4151,8 +4165,8 @@ qla24xx_configure_vhba(scsi_qla_host_t *vha) | |||
4151 | uint16_t mb[MAILBOX_REGISTER_COUNT]; | 4165 | uint16_t mb[MAILBOX_REGISTER_COUNT]; |
4152 | struct qla_hw_data *ha = vha->hw; | 4166 | struct qla_hw_data *ha = vha->hw; |
4153 | struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); | 4167 | struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); |
4154 | struct req_que *req = ha->req_q_map[0]; | 4168 | struct req_que *req = ha->req_q_map[vha->req_ques[0]]; |
4155 | struct rsp_que *rsp = ha->rsp_q_map[0]; | 4169 | struct rsp_que *rsp = req->rsp; |
4156 | 4170 | ||
4157 | if (!vha->vp_idx) | 4171 | if (!vha->vp_idx) |
4158 | return -EINVAL; | 4172 | return -EINVAL; |
diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c index 886323130fcc..f53179c46423 100644 --- a/drivers/scsi/qla2xxx/qla_mid.c +++ b/drivers/scsi/qla2xxx/qla_mid.c | |||
@@ -629,6 +629,7 @@ qla25xx_create_req_que(struct qla_hw_data *ha, uint16_t options, | |||
629 | req->ring_index = 0; | 629 | req->ring_index = 0; |
630 | req->cnt = req->length; | 630 | req->cnt = req->length; |
631 | req->id = que_id; | 631 | req->id = que_id; |
632 | req->max_q_depth = ha->req_q_map[0]->max_q_depth; | ||
632 | mutex_unlock(&ha->vport_lock); | 633 | mutex_unlock(&ha->vport_lock); |
633 | 634 | ||
634 | ret = qla25xx_init_req_que(base_vha, req, options); | 635 | ret = qla25xx_init_req_que(base_vha, req, options); |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 4a71f522f925..cf32653fe01a 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -1158,8 +1158,8 @@ qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res) | |||
1158 | struct req_que *req; | 1158 | struct req_que *req; |
1159 | 1159 | ||
1160 | spin_lock_irqsave(&ha->hardware_lock, flags); | 1160 | spin_lock_irqsave(&ha->hardware_lock, flags); |
1161 | for (que = 0; que < QLA_MAX_HOST_QUES; que++) { | 1161 | for (que = 0; que < ha->max_queues; que++) { |
1162 | req = ha->req_q_map[vha->req_ques[que]]; | 1162 | req = ha->req_q_map[que]; |
1163 | if (!req) | 1163 | if (!req) |
1164 | continue; | 1164 | continue; |
1165 | for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) { | 1165 | for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) { |
@@ -1193,7 +1193,7 @@ qla2xxx_slave_configure(struct scsi_device *sdev) | |||
1193 | scsi_qla_host_t *vha = shost_priv(sdev->host); | 1193 | scsi_qla_host_t *vha = shost_priv(sdev->host); |
1194 | struct qla_hw_data *ha = vha->hw; | 1194 | struct qla_hw_data *ha = vha->hw; |
1195 | struct fc_rport *rport = starget_to_rport(sdev->sdev_target); | 1195 | struct fc_rport *rport = starget_to_rport(sdev->sdev_target); |
1196 | struct req_que *req = ha->req_q_map[0]; | 1196 | struct req_que *req = ha->req_q_map[vha->req_ques[0]]; |
1197 | 1197 | ||
1198 | if (sdev->tagged_supported) | 1198 | if (sdev->tagged_supported) |
1199 | scsi_activate_tcq(sdev, req->max_q_depth); | 1199 | scsi_activate_tcq(sdev, req->max_q_depth); |
@@ -1998,7 +1998,6 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1998 | return 0; | 1998 | return 0; |
1999 | 1999 | ||
2000 | probe_failed: | 2000 | probe_failed: |
2001 | qla2x00_free_que(ha, req, rsp); | ||
2002 | qla2x00_free_device(base_vha); | 2001 | qla2x00_free_device(base_vha); |
2003 | 2002 | ||
2004 | scsi_host_put(base_vha->host); | 2003 | scsi_host_put(base_vha->host); |
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index 42e72a2c1f98..cbcd3f681b62 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c | |||
@@ -1095,7 +1095,8 @@ EXPORT_SYMBOL(__starget_for_each_device); | |||
1095 | * Description: Looks up the scsi_device with the specified @lun for a given | 1095 | * Description: Looks up the scsi_device with the specified @lun for a given |
1096 | * @starget. The returned scsi_device does not have an additional | 1096 | * @starget. The returned scsi_device does not have an additional |
1097 | * reference. You must hold the host's host_lock over this call and | 1097 | * reference. You must hold the host's host_lock over this call and |
1098 | * any access to the returned scsi_device. | 1098 | * any access to the returned scsi_device. A scsi_device in state |
1099 | * SDEV_DEL is skipped. | ||
1099 | * | 1100 | * |
1100 | * Note: The only reason why drivers should use this is because | 1101 | * Note: The only reason why drivers should use this is because |
1101 | * they need to access the device list in irq context. Otherwise you | 1102 | * they need to access the device list in irq context. Otherwise you |
@@ -1107,6 +1108,8 @@ struct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *starget, | |||
1107 | struct scsi_device *sdev; | 1108 | struct scsi_device *sdev; |
1108 | 1109 | ||
1109 | list_for_each_entry(sdev, &starget->devices, same_target_siblings) { | 1110 | list_for_each_entry(sdev, &starget->devices, same_target_siblings) { |
1111 | if (sdev->sdev_state == SDEV_DEL) | ||
1112 | continue; | ||
1110 | if (sdev->lun ==lun) | 1113 | if (sdev->lun ==lun) |
1111 | return sdev; | 1114 | return sdev; |
1112 | } | 1115 | } |
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c index 4969e4ec75ea..099b5455bbce 100644 --- a/drivers/scsi/scsi_devinfo.c +++ b/drivers/scsi/scsi_devinfo.c | |||
@@ -224,6 +224,7 @@ static struct { | |||
224 | {"SGI", "TP9100", "*", BLIST_REPORTLUN2}, | 224 | {"SGI", "TP9100", "*", BLIST_REPORTLUN2}, |
225 | {"SGI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, | 225 | {"SGI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, |
226 | {"IBM", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, | 226 | {"IBM", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, |
227 | {"SUN", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, | ||
227 | {"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36}, | 228 | {"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36}, |
228 | {"SONY", "CD-ROM CDU-8001", NULL, BLIST_BORKEN}, | 229 | {"SONY", "CD-ROM CDU-8001", NULL, BLIST_BORKEN}, |
229 | {"SONY", "TSL", NULL, BLIST_FORCELUN}, /* DDS3 & DDS4 autoloaders */ | 230 | {"SONY", "TSL", NULL, BLIST_FORCELUN}, /* DDS3 & DDS4 autoloaders */ |
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index c088146b7513..536d8e510f66 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c | |||
@@ -602,6 +602,10 @@ static int pci_netmos_init(struct pci_dev *dev) | |||
602 | /* subdevice 0x00PS means <P> parallel, <S> serial */ | 602 | /* subdevice 0x00PS means <P> parallel, <S> serial */ |
603 | unsigned int num_serial = dev->subsystem_device & 0xf; | 603 | unsigned int num_serial = dev->subsystem_device & 0xf; |
604 | 604 | ||
605 | if (dev->subsystem_vendor == PCI_VENDOR_ID_IBM && | ||
606 | dev->subsystem_device == 0x0299) | ||
607 | return 0; | ||
608 | |||
605 | if (num_serial == 0) | 609 | if (num_serial == 0) |
606 | return -ENODEV; | 610 | return -ENODEV; |
607 | return num_serial; | 611 | return num_serial; |
@@ -802,6 +806,8 @@ pci_default_setup(struct serial_private *priv, | |||
802 | #define PCI_SUBDEVICE_ID_OCTPRO422 0x0208 | 806 | #define PCI_SUBDEVICE_ID_OCTPRO422 0x0208 |
803 | #define PCI_SUBDEVICE_ID_POCTAL232 0x0308 | 807 | #define PCI_SUBDEVICE_ID_POCTAL232 0x0308 |
804 | #define PCI_SUBDEVICE_ID_POCTAL422 0x0408 | 808 | #define PCI_SUBDEVICE_ID_POCTAL422 0x0408 |
809 | #define PCI_VENDOR_ID_ADVANTECH 0x13fe | ||
810 | #define PCI_DEVICE_ID_ADVANTECH_PCI3620 0x3620 | ||
805 | 811 | ||
806 | /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ | 812 | /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ |
807 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 | 813 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 |
@@ -2148,6 +2154,10 @@ static int pciserial_resume_one(struct pci_dev *dev) | |||
2148 | #endif | 2154 | #endif |
2149 | 2155 | ||
2150 | static struct pci_device_id serial_pci_tbl[] = { | 2156 | static struct pci_device_id serial_pci_tbl[] = { |
2157 | /* Advantech use PCI_DEVICE_ID_ADVANTECH_PCI3620 (0x3620) as 'PCI_SUBVENDOR_ID' */ | ||
2158 | { PCI_VENDOR_ID_ADVANTECH, PCI_DEVICE_ID_ADVANTECH_PCI3620, | ||
2159 | PCI_DEVICE_ID_ADVANTECH_PCI3620, 0x0001, 0, 0, | ||
2160 | pbn_b2_8_921600 }, | ||
2151 | { PCI_VENDOR_ID_V3, PCI_DEVICE_ID_V3_V960, | 2161 | { PCI_VENDOR_ID_V3, PCI_DEVICE_ID_V3_V960, |
2152 | PCI_SUBVENDOR_ID_CONNECT_TECH, | 2162 | PCI_SUBVENDOR_ID_CONNECT_TECH, |
2153 | PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232, 0, 0, | 2163 | PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232, 0, 0, |
@@ -3096,6 +3106,10 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
3096 | 0, | 3106 | 0, |
3097 | pbn_b0_8_115200 }, | 3107 | pbn_b0_8_115200 }, |
3098 | 3108 | ||
3109 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9835, | ||
3110 | PCI_VENDOR_ID_IBM, 0x0299, | ||
3111 | 0, 0, pbn_b0_bt_2_115200 }, | ||
3112 | |||
3099 | /* | 3113 | /* |
3100 | * These entries match devices with class COMMUNICATION_SERIAL, | 3114 | * These entries match devices with class COMMUNICATION_SERIAL, |
3101 | * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL | 3115 | * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL |
diff --git a/drivers/serial/8250_pnp.c b/drivers/serial/8250_pnp.c index fde7f9ccf57e..bbcfc26a3b6d 100644 --- a/drivers/serial/8250_pnp.c +++ b/drivers/serial/8250_pnp.c | |||
@@ -270,6 +270,8 @@ static const struct pnp_device_id pnp_dev_table[] = { | |||
270 | { "RSS0250", 0 }, | 270 | { "RSS0250", 0 }, |
271 | /* SupraExpress 28.8 Data/Fax PnP modem */ | 271 | /* SupraExpress 28.8 Data/Fax PnP modem */ |
272 | { "SUP1310", 0 }, | 272 | { "SUP1310", 0 }, |
273 | /* SupraExpress 336i PnP Voice Modem */ | ||
274 | { "SUP1381", 0 }, | ||
273 | /* SupraExpress 33.6 Data/Fax PnP modem */ | 275 | /* SupraExpress 33.6 Data/Fax PnP modem */ |
274 | { "SUP1421", 0 }, | 276 | { "SUP1421", 0 }, |
275 | /* SupraExpress 33.6 Data/Fax PnP modem */ | 277 | /* SupraExpress 33.6 Data/Fax PnP modem */ |
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 3e525e38a5d9..7d7f576da202 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -982,7 +982,7 @@ config SERIAL_SH_SCI_CONSOLE | |||
982 | 982 | ||
983 | config SERIAL_PNX8XXX | 983 | config SERIAL_PNX8XXX |
984 | bool "Enable PNX8XXX SoCs' UART Support" | 984 | bool "Enable PNX8XXX SoCs' UART Support" |
985 | depends on MIPS && SOC_PNX8550 | 985 | depends on MIPS && (SOC_PNX8550 || SOC_PNX833X) |
986 | select SERIAL_CORE | 986 | select SERIAL_CORE |
987 | help | 987 | help |
988 | If you have a MIPS-based Philips SoC such as PNX8550 or PNX8330 | 988 | If you have a MIPS-based Philips SoC such as PNX8550 or PNX8330 |
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c index d5efd6c77904..89362d733d62 100644 --- a/drivers/serial/atmel_serial.c +++ b/drivers/serial/atmel_serial.c | |||
@@ -579,7 +579,7 @@ static void atmel_tx_dma(struct uart_port *port) | |||
579 | /* disable PDC transmit */ | 579 | /* disable PDC transmit */ |
580 | UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); | 580 | UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); |
581 | 581 | ||
582 | if (!uart_circ_empty(xmit)) { | 582 | if (!uart_circ_empty(xmit) && !uart_tx_stopped(port)) { |
583 | dma_sync_single_for_device(port->dev, | 583 | dma_sync_single_for_device(port->dev, |
584 | pdc->dma_addr, | 584 | pdc->dma_addr, |
585 | pdc->dma_size, | 585 | pdc->dma_size, |
diff --git a/drivers/serial/jsm/jsm_driver.c b/drivers/serial/jsm/jsm_driver.c index 338cf8a08b43..92187e28608a 100644 --- a/drivers/serial/jsm/jsm_driver.c +++ b/drivers/serial/jsm/jsm_driver.c | |||
@@ -180,7 +180,7 @@ static int jsm_probe_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
180 | return rc; | 180 | return rc; |
181 | } | 181 | } |
182 | 182 | ||
183 | static void jsm_remove_one(struct pci_dev *pdev) | 183 | static void __devexit jsm_remove_one(struct pci_dev *pdev) |
184 | { | 184 | { |
185 | struct jsm_board *brd = pci_get_drvdata(pdev); | 185 | struct jsm_board *brd = pci_get_drvdata(pdev); |
186 | int i = 0; | 186 | int i = 0; |
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c index a821e3a3d664..14f8fa9135be 100644 --- a/drivers/serial/of_serial.c +++ b/drivers/serial/of_serial.c | |||
@@ -163,6 +163,7 @@ static struct of_device_id __devinitdata of_platform_serial_table[] = { | |||
163 | { .type = "serial", .compatible = "ns16450", .data = (void *)PORT_16450, }, | 163 | { .type = "serial", .compatible = "ns16450", .data = (void *)PORT_16450, }, |
164 | { .type = "serial", .compatible = "ns16550", .data = (void *)PORT_16550, }, | 164 | { .type = "serial", .compatible = "ns16550", .data = (void *)PORT_16550, }, |
165 | { .type = "serial", .compatible = "ns16750", .data = (void *)PORT_16750, }, | 165 | { .type = "serial", .compatible = "ns16750", .data = (void *)PORT_16750, }, |
166 | { .type = "serial", .compatible = "ns16850", .data = (void *)PORT_16850, }, | ||
166 | #ifdef CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL | 167 | #ifdef CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL |
167 | { .type = "serial", .compatible = "ibm,qpace-nwp-serial", | 168 | { .type = "serial", .compatible = "ibm,qpace-nwp-serial", |
168 | .data = (void *)PORT_NWPSERIAL, }, | 169 | .data = (void *)PORT_NWPSERIAL, }, |
diff --git a/drivers/serial/pnx8xxx_uart.c b/drivers/serial/pnx8xxx_uart.c index 22e30d21225e..1bb8f1b45767 100644 --- a/drivers/serial/pnx8xxx_uart.c +++ b/drivers/serial/pnx8xxx_uart.c | |||
@@ -187,7 +187,7 @@ static void pnx8xxx_rx_chars(struct pnx8xxx_port *sport) | |||
187 | status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) | | 187 | status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) | |
188 | ISTAT_TO_SM(serial_in(sport, PNX8XXX_ISTAT)); | 188 | ISTAT_TO_SM(serial_in(sport, PNX8XXX_ISTAT)); |
189 | while (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFIFO)) { | 189 | while (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFIFO)) { |
190 | ch = serial_in(sport, PNX8XXX_FIFO); | 190 | ch = serial_in(sport, PNX8XXX_FIFO) & 0xff; |
191 | 191 | ||
192 | sport->port.icount.rx++; | 192 | sport->port.icount.rx++; |
193 | 193 | ||
@@ -198,9 +198,16 @@ static void pnx8xxx_rx_chars(struct pnx8xxx_port *sport) | |||
198 | * out of the main execution path | 198 | * out of the main execution path |
199 | */ | 199 | */ |
200 | if (status & (FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE | | 200 | if (status & (FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE | |
201 | PNX8XXX_UART_FIFO_RXPAR) | | 201 | PNX8XXX_UART_FIFO_RXPAR | |
202 | PNX8XXX_UART_FIFO_RXBRK) | | ||
202 | ISTAT_TO_SM(PNX8XXX_UART_INT_RXOVRN))) { | 203 | ISTAT_TO_SM(PNX8XXX_UART_INT_RXOVRN))) { |
203 | if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXPAR)) | 204 | if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXBRK)) { |
205 | status &= ~(FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE) | | ||
206 | FIFO_TO_SM(PNX8XXX_UART_FIFO_RXPAR)); | ||
207 | sport->port.icount.brk++; | ||
208 | if (uart_handle_break(&sport->port)) | ||
209 | goto ignore_char; | ||
210 | } else if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXPAR)) | ||
204 | sport->port.icount.parity++; | 211 | sport->port.icount.parity++; |
205 | else if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE)) | 212 | else if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE)) |
206 | sport->port.icount.frame++; | 213 | sport->port.icount.frame++; |
@@ -284,14 +291,8 @@ static irqreturn_t pnx8xxx_int(int irq, void *dev_id) | |||
284 | /* Get the interrupts */ | 291 | /* Get the interrupts */ |
285 | status = serial_in(sport, PNX8XXX_ISTAT) & serial_in(sport, PNX8XXX_IEN); | 292 | status = serial_in(sport, PNX8XXX_ISTAT) & serial_in(sport, PNX8XXX_IEN); |
286 | 293 | ||
287 | /* Break signal received */ | 294 | /* Byte or break signal received */ |
288 | if (status & PNX8XXX_UART_INT_BREAK) { | 295 | if (status & (PNX8XXX_UART_INT_RX | PNX8XXX_UART_INT_BREAK)) |
289 | sport->port.icount.brk++; | ||
290 | uart_handle_break(&sport->port); | ||
291 | } | ||
292 | |||
293 | /* Byte received */ | ||
294 | if (status & PNX8XXX_UART_INT_RX) | ||
295 | pnx8xxx_rx_chars(sport); | 296 | pnx8xxx_rx_chars(sport); |
296 | 297 | ||
297 | /* TX holding register empty - transmit a byte */ | 298 | /* TX holding register empty - transmit a byte */ |
diff --git a/drivers/serial/sh-sci.h b/drivers/serial/sh-sci.h index 38c600c0dbbf..3599828b9766 100644 --- a/drivers/serial/sh-sci.h +++ b/drivers/serial/sh-sci.h | |||
@@ -32,7 +32,9 @@ | |||
32 | #elif defined(CONFIG_CPU_SUBTYPE_SH7720) || \ | 32 | #elif defined(CONFIG_CPU_SUBTYPE_SH7720) || \ |
33 | defined(CONFIG_CPU_SUBTYPE_SH7721) | 33 | defined(CONFIG_CPU_SUBTYPE_SH7721) |
34 | # define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */ | 34 | # define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */ |
35 | #define SCIF_ORER 0x0200 /* overrun error bit */ | 35 | # define PORT_PTCR 0xA405011EUL |
36 | # define PORT_PVCR 0xA4050122UL | ||
37 | # define SCIF_ORER 0x0200 /* overrun error bit */ | ||
36 | #elif defined(CONFIG_SH_RTS7751R2D) | 38 | #elif defined(CONFIG_SH_RTS7751R2D) |
37 | # define SCSPTR1 0xFFE0001C /* 8 bit SCIF */ | 39 | # define SCSPTR1 0xFFE0001C /* 8 bit SCIF */ |
38 | # define SCSPTR2 0xFFE80020 /* 16 bit SCIF */ | 40 | # define SCSPTR2 0xFFE80020 /* 16 bit SCIF */ |
@@ -393,6 +395,7 @@ SCIx_FNS(SCSCR, 0x08, 16, 0x08, 16) | |||
393 | SCIx_FNS(SCxTDR, 0x20, 8, 0x0c, 8) | 395 | SCIx_FNS(SCxTDR, 0x20, 8, 0x0c, 8) |
394 | SCIx_FNS(SCxSR, 0x14, 16, 0x10, 16) | 396 | SCIx_FNS(SCxSR, 0x14, 16, 0x10, 16) |
395 | SCIx_FNS(SCxRDR, 0x24, 8, 0x14, 8) | 397 | SCIx_FNS(SCxRDR, 0x24, 8, 0x14, 8) |
398 | SCIx_FNS(SCSPTR, 0, 0, 0, 0) | ||
396 | SCIF_FNS(SCTDSR, 0x0c, 8) | 399 | SCIF_FNS(SCTDSR, 0x0c, 8) |
397 | SCIF_FNS(SCFER, 0x10, 16) | 400 | SCIF_FNS(SCFER, 0x10, 16) |
398 | SCIF_FNS(SCFCR, 0x18, 16) | 401 | SCIF_FNS(SCFCR, 0x18, 16) |
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig index 4a6fe01831a8..83a185d52961 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig | |||
@@ -230,17 +230,6 @@ config SPI_XILINX | |||
230 | # | 230 | # |
231 | comment "SPI Protocol Masters" | 231 | comment "SPI Protocol Masters" |
232 | 232 | ||
233 | config SPI_AT25 | ||
234 | tristate "SPI EEPROMs from most vendors" | ||
235 | depends on SYSFS | ||
236 | help | ||
237 | Enable this driver to get read/write support to most SPI EEPROMs, | ||
238 | after you configure the board init code to know about each eeprom | ||
239 | on your target board. | ||
240 | |||
241 | This driver can also be built as a module. If so, the module | ||
242 | will be called at25. | ||
243 | |||
244 | config SPI_SPIDEV | 233 | config SPI_SPIDEV |
245 | tristate "User mode SPI device driver support" | 234 | tristate "User mode SPI device driver support" |
246 | depends on EXPERIMENTAL | 235 | depends on EXPERIMENTAL |
diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile index 5e9f521b8844..5d0451936d86 100644 --- a/drivers/spi/Makefile +++ b/drivers/spi/Makefile | |||
@@ -33,7 +33,6 @@ obj-$(CONFIG_SPI_SH_SCI) += spi_sh_sci.o | |||
33 | # ... add above this line ... | 33 | # ... add above this line ... |
34 | 34 | ||
35 | # SPI protocol drivers (device/link on bus) | 35 | # SPI protocol drivers (device/link on bus) |
36 | obj-$(CONFIG_SPI_AT25) += at25.o | ||
37 | obj-$(CONFIG_SPI_SPIDEV) += spidev.o | 36 | obj-$(CONFIG_SPI_SPIDEV) += spidev.o |
38 | obj-$(CONFIG_SPI_TLE62X0) += tle62x0.o | 37 | obj-$(CONFIG_SPI_TLE62X0) += tle62x0.o |
39 | # ... add above this line ... | 38 | # ... add above this line ... |
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c index 5e39bac9c51b..56ff3e6864ea 100644 --- a/drivers/spi/atmel_spi.c +++ b/drivers/spi/atmel_spi.c | |||
@@ -670,8 +670,7 @@ static int atmel_spi_transfer(struct spi_device *spi, struct spi_message *msg) | |||
670 | dev_dbg(controller, "new message %p submitted for %s\n", | 670 | dev_dbg(controller, "new message %p submitted for %s\n", |
671 | msg, spi->dev.bus_id); | 671 | msg, spi->dev.bus_id); |
672 | 672 | ||
673 | if (unlikely(list_empty(&msg->transfers) | 673 | if (unlikely(list_empty(&msg->transfers))) |
674 | || !spi->max_speed_hz)) | ||
675 | return -EINVAL; | 674 | return -EINVAL; |
676 | 675 | ||
677 | if (as->stopping) | 676 | if (as->stopping) |
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index d5d0e40b1e2d..94d5ee263c20 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -1554,7 +1554,7 @@ static int usb_configure_device_otg(struct usb_device *udev) | |||
1554 | * (Includes HNP test device.) | 1554 | * (Includes HNP test device.) |
1555 | */ | 1555 | */ |
1556 | if (udev->bus->b_hnp_enable || udev->bus->is_b_host) { | 1556 | if (udev->bus->b_hnp_enable || udev->bus->is_b_host) { |
1557 | err = usb_port_suspend(udev); | 1557 | err = usb_port_suspend(udev, PMSG_SUSPEND); |
1558 | if (err < 0) | 1558 | if (err < 0) |
1559 | dev_dbg(&udev->dev, "HNP fail, %d\n", err); | 1559 | dev_dbg(&udev->dev, "HNP fail, %d\n", err); |
1560 | } | 1560 | } |
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c index 4bbddb73abd9..f3aaba35e912 100644 --- a/drivers/usb/host/ohci-omap.c +++ b/drivers/usb/host/ohci-omap.c | |||
@@ -315,14 +315,14 @@ static int usb_hcd_omap_probe (const struct hc_driver *driver, | |||
315 | return -ENODEV; | 315 | return -ENODEV; |
316 | } | 316 | } |
317 | 317 | ||
318 | usb_host_ck = clk_get(0, "usb_hhc_ck"); | 318 | usb_host_ck = clk_get(&pdev->dev, "usb_hhc_ck"); |
319 | if (IS_ERR(usb_host_ck)) | 319 | if (IS_ERR(usb_host_ck)) |
320 | return PTR_ERR(usb_host_ck); | 320 | return PTR_ERR(usb_host_ck); |
321 | 321 | ||
322 | if (!cpu_is_omap15xx()) | 322 | if (!cpu_is_omap15xx()) |
323 | usb_dc_ck = clk_get(0, "usb_dc_ck"); | 323 | usb_dc_ck = clk_get(&pdev->dev, "usb_dc_ck"); |
324 | else | 324 | else |
325 | usb_dc_ck = clk_get(0, "lb_ck"); | 325 | usb_dc_ck = clk_get(&pdev->dev, "lb_ck"); |
326 | 326 | ||
327 | if (IS_ERR(usb_dc_ck)) { | 327 | if (IS_ERR(usb_dc_ck)) { |
328 | clk_put(usb_host_ck); | 328 | clk_put(usb_host_ck); |
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index ef6cfa5a447f..c70a8f667d85 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -2030,7 +2030,7 @@ static void ftdi_process_read(struct work_struct *work) | |||
2030 | spin_unlock_irqrestore(&priv->rx_lock, flags); | 2030 | spin_unlock_irqrestore(&priv->rx_lock, flags); |
2031 | dbg("%s - deferring remainder until unthrottled", | 2031 | dbg("%s - deferring remainder until unthrottled", |
2032 | __func__); | 2032 | __func__); |
2033 | return; | 2033 | goto out; |
2034 | } | 2034 | } |
2035 | spin_unlock_irqrestore(&priv->rx_lock, flags); | 2035 | spin_unlock_irqrestore(&priv->rx_lock, flags); |
2036 | /* if the port is closed stop trying to read */ | 2036 | /* if the port is closed stop trying to read */ |
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 6372f8b17b45..c94f71980c1b 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig | |||
@@ -2123,6 +2123,18 @@ config FB_PRE_INIT_FB | |||
2123 | Select this option if display contents should be inherited as set by | 2123 | Select this option if display contents should be inherited as set by |
2124 | the bootloader. | 2124 | the bootloader. |
2125 | 2125 | ||
2126 | config FB_MX3 | ||
2127 | tristate "MX3 Framebuffer support" | ||
2128 | depends on FB && MX3_IPU | ||
2129 | select FB_CFB_FILLRECT | ||
2130 | select FB_CFB_COPYAREA | ||
2131 | select FB_CFB_IMAGEBLIT | ||
2132 | default y | ||
2133 | help | ||
2134 | This is a framebuffer device for the i.MX31 LCD Controller. So | ||
2135 | far only synchronous displays are supported. If you plan to use | ||
2136 | an LCD display with your i.MX31 system, say Y here. | ||
2137 | |||
2126 | source "drivers/video/omap/Kconfig" | 2138 | source "drivers/video/omap/Kconfig" |
2127 | 2139 | ||
2128 | source "drivers/video/backlight/Kconfig" | 2140 | source "drivers/video/backlight/Kconfig" |
diff --git a/drivers/video/Makefile b/drivers/video/Makefile index be2b657546ef..2a998ca6181d 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile | |||
@@ -132,6 +132,7 @@ obj-$(CONFIG_FB_VGA16) += vga16fb.o | |||
132 | obj-$(CONFIG_FB_OF) += offb.o | 132 | obj-$(CONFIG_FB_OF) += offb.o |
133 | obj-$(CONFIG_FB_BF54X_LQ043) += bf54x-lq043fb.o | 133 | obj-$(CONFIG_FB_BF54X_LQ043) += bf54x-lq043fb.o |
134 | obj-$(CONFIG_FB_BFIN_T350MCQB) += bfin-t350mcqb-fb.o | 134 | obj-$(CONFIG_FB_BFIN_T350MCQB) += bfin-t350mcqb-fb.o |
135 | obj-$(CONFIG_FB_MX3) += mx3fb.o | ||
135 | 136 | ||
136 | # the test framebuffer is last | 137 | # the test framebuffer is last |
137 | obj-$(CONFIG_FB_VIRTUAL) += vfb.o | 138 | obj-$(CONFIG_FB_VIRTUAL) += vfb.o |
diff --git a/drivers/video/aty/radeon_i2c.c b/drivers/video/aty/radeon_i2c.c index 2c5567175dca..359fc64e761a 100644 --- a/drivers/video/aty/radeon_i2c.c +++ b/drivers/video/aty/radeon_i2c.c | |||
@@ -72,7 +72,6 @@ static int radeon_setup_i2c_bus(struct radeon_i2c_chan *chan, const char *name) | |||
72 | snprintf(chan->adapter.name, sizeof(chan->adapter.name), | 72 | snprintf(chan->adapter.name, sizeof(chan->adapter.name), |
73 | "radeonfb %s", name); | 73 | "radeonfb %s", name); |
74 | chan->adapter.owner = THIS_MODULE; | 74 | chan->adapter.owner = THIS_MODULE; |
75 | chan->adapter.id = I2C_HW_B_RADEON; | ||
76 | chan->adapter.algo_data = &chan->algo; | 75 | chan->adapter.algo_data = &chan->algo; |
77 | chan->adapter.dev.parent = &chan->rinfo->pdev->dev; | 76 | chan->adapter.dev.parent = &chan->rinfo->pdev->dev; |
78 | chan->algo.setsda = radeon_gpio_setsda; | 77 | chan->algo.setsda = radeon_gpio_setsda; |
diff --git a/drivers/video/bf54x-lq043fb.c b/drivers/video/bf54x-lq043fb.c index 7644ed249564..37e60b1d2ed9 100644 --- a/drivers/video/bf54x-lq043fb.c +++ b/drivers/video/bf54x-lq043fb.c | |||
@@ -335,7 +335,20 @@ static int bfin_bf54x_fb_check_var(struct fb_var_screeninfo *var, | |||
335 | struct fb_info *info) | 335 | struct fb_info *info) |
336 | { | 336 | { |
337 | 337 | ||
338 | if (var->bits_per_pixel != LCD_BPP) { | 338 | switch (var->bits_per_pixel) { |
339 | case 24:/* TRUECOLOUR, 16m */ | ||
340 | var->red.offset = 16; | ||
341 | var->green.offset = 8; | ||
342 | var->blue.offset = 0; | ||
343 | var->red.length = var->green.length = var->blue.length = 8; | ||
344 | var->transp.offset = 0; | ||
345 | var->transp.length = 0; | ||
346 | var->transp.msb_right = 0; | ||
347 | var->red.msb_right = 0; | ||
348 | var->green.msb_right = 0; | ||
349 | var->blue.msb_right = 0; | ||
350 | break; | ||
351 | default: | ||
339 | pr_debug("%s: depth not supported: %u BPP\n", __func__, | 352 | pr_debug("%s: depth not supported: %u BPP\n", __func__, |
340 | var->bits_per_pixel); | 353 | var->bits_per_pixel); |
341 | return -EINVAL; | 354 | return -EINVAL; |
diff --git a/drivers/video/bfin-t350mcqb-fb.c b/drivers/video/bfin-t350mcqb-fb.c index a9b3ada05d99..2a423d3a2a8e 100644 --- a/drivers/video/bfin-t350mcqb-fb.c +++ b/drivers/video/bfin-t350mcqb-fb.c | |||
@@ -254,7 +254,20 @@ static int bfin_t350mcqb_fb_check_var(struct fb_var_screeninfo *var, | |||
254 | struct fb_info *info) | 254 | struct fb_info *info) |
255 | { | 255 | { |
256 | 256 | ||
257 | if (var->bits_per_pixel != LCD_BPP) { | 257 | switch (var->bits_per_pixel) { |
258 | case 24:/* TRUECOLOUR, 16m */ | ||
259 | var->red.offset = 0; | ||
260 | var->green.offset = 8; | ||
261 | var->blue.offset = 16; | ||
262 | var->red.length = var->green.length = var->blue.length = 8; | ||
263 | var->transp.offset = 0; | ||
264 | var->transp.length = 0; | ||
265 | var->transp.msb_right = 0; | ||
266 | var->red.msb_right = 0; | ||
267 | var->green.msb_right = 0; | ||
268 | var->blue.msb_right = 0; | ||
269 | break; | ||
270 | default: | ||
258 | pr_debug("%s: depth not supported: %u BPP\n", __func__, | 271 | pr_debug("%s: depth not supported: %u BPP\n", __func__, |
259 | var->bits_per_pixel); | 272 | var->bits_per_pixel); |
260 | return -EINVAL; | 273 | return -EINVAL; |
diff --git a/drivers/video/i810/i810-i2c.c b/drivers/video/i810/i810-i2c.c index 7787c3322ffb..9dd55e5324a1 100644 --- a/drivers/video/i810/i810-i2c.c +++ b/drivers/video/i810/i810-i2c.c | |||
@@ -90,7 +90,6 @@ static int i810_setup_i2c_bus(struct i810fb_i2c_chan *chan, const char *name) | |||
90 | chan->adapter.owner = THIS_MODULE; | 90 | chan->adapter.owner = THIS_MODULE; |
91 | chan->adapter.algo_data = &chan->algo; | 91 | chan->adapter.algo_data = &chan->algo; |
92 | chan->adapter.dev.parent = &chan->par->dev->dev; | 92 | chan->adapter.dev.parent = &chan->par->dev->dev; |
93 | chan->adapter.id = I2C_HW_B_I810; | ||
94 | chan->algo.setsda = i810i2c_setsda; | 93 | chan->algo.setsda = i810i2c_setsda; |
95 | chan->algo.setscl = i810i2c_setscl; | 94 | chan->algo.setscl = i810i2c_setscl; |
96 | chan->algo.getsda = i810i2c_getsda; | 95 | chan->algo.getsda = i810i2c_getsda; |
diff --git a/drivers/video/intelfb/intelfb_i2c.c b/drivers/video/intelfb/intelfb_i2c.c index 5d896b81f4e0..b3065492bb20 100644 --- a/drivers/video/intelfb/intelfb_i2c.c +++ b/drivers/video/intelfb/intelfb_i2c.c | |||
@@ -111,7 +111,6 @@ static int intelfb_setup_i2c_bus(struct intelfb_info *dinfo, | |||
111 | "intelfb %s", name); | 111 | "intelfb %s", name); |
112 | chan->adapter.class = class; | 112 | chan->adapter.class = class; |
113 | chan->adapter.owner = THIS_MODULE; | 113 | chan->adapter.owner = THIS_MODULE; |
114 | chan->adapter.id = I2C_HW_B_INTELFB; | ||
115 | chan->adapter.algo_data = &chan->algo; | 114 | chan->adapter.algo_data = &chan->algo; |
116 | chan->adapter.dev.parent = &chan->dinfo->pdev->dev; | 115 | chan->adapter.dev.parent = &chan->dinfo->pdev->dev; |
117 | chan->algo.setsda = intelfb_gpio_setsda; | 116 | chan->algo.setsda = intelfb_gpio_setsda; |
diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c new file mode 100644 index 000000000000..8a75d05f4334 --- /dev/null +++ b/drivers/video/mx3fb.c | |||
@@ -0,0 +1,1555 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #include <linux/module.h> | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/platform_device.h> | ||
15 | #include <linux/sched.h> | ||
16 | #include <linux/errno.h> | ||
17 | #include <linux/string.h> | ||
18 | #include <linux/interrupt.h> | ||
19 | #include <linux/slab.h> | ||
20 | #include <linux/fb.h> | ||
21 | #include <linux/delay.h> | ||
22 | #include <linux/init.h> | ||
23 | #include <linux/ioport.h> | ||
24 | #include <linux/dma-mapping.h> | ||
25 | #include <linux/dmaengine.h> | ||
26 | #include <linux/console.h> | ||
27 | #include <linux/clk.h> | ||
28 | #include <linux/mutex.h> | ||
29 | |||
30 | #include <mach/hardware.h> | ||
31 | #include <mach/ipu.h> | ||
32 | #include <mach/mx3fb.h> | ||
33 | |||
34 | #include <asm/io.h> | ||
35 | #include <asm/uaccess.h> | ||
36 | |||
37 | #define MX3FB_NAME "mx3_sdc_fb" | ||
38 | |||
39 | #define MX3FB_REG_OFFSET 0xB4 | ||
40 | |||
41 | /* SDC Registers */ | ||
42 | #define SDC_COM_CONF (0xB4 - MX3FB_REG_OFFSET) | ||
43 | #define SDC_GW_CTRL (0xB8 - MX3FB_REG_OFFSET) | ||
44 | #define SDC_FG_POS (0xBC - MX3FB_REG_OFFSET) | ||
45 | #define SDC_BG_POS (0xC0 - MX3FB_REG_OFFSET) | ||
46 | #define SDC_CUR_POS (0xC4 - MX3FB_REG_OFFSET) | ||
47 | #define SDC_PWM_CTRL (0xC8 - MX3FB_REG_OFFSET) | ||
48 | #define SDC_CUR_MAP (0xCC - MX3FB_REG_OFFSET) | ||
49 | #define SDC_HOR_CONF (0xD0 - MX3FB_REG_OFFSET) | ||
50 | #define SDC_VER_CONF (0xD4 - MX3FB_REG_OFFSET) | ||
51 | #define SDC_SHARP_CONF_1 (0xD8 - MX3FB_REG_OFFSET) | ||
52 | #define SDC_SHARP_CONF_2 (0xDC - MX3FB_REG_OFFSET) | ||
53 | |||
54 | /* Register bits */ | ||
55 | #define SDC_COM_TFT_COLOR 0x00000001UL | ||
56 | #define SDC_COM_FG_EN 0x00000010UL | ||
57 | #define SDC_COM_GWSEL 0x00000020UL | ||
58 | #define SDC_COM_GLB_A 0x00000040UL | ||
59 | #define SDC_COM_KEY_COLOR_G 0x00000080UL | ||
60 | #define SDC_COM_BG_EN 0x00000200UL | ||
61 | #define SDC_COM_SHARP 0x00001000UL | ||
62 | |||
63 | #define SDC_V_SYNC_WIDTH_L 0x00000001UL | ||
64 | |||
65 | /* Display Interface registers */ | ||
66 | #define DI_DISP_IF_CONF (0x0124 - MX3FB_REG_OFFSET) | ||
67 | #define DI_DISP_SIG_POL (0x0128 - MX3FB_REG_OFFSET) | ||
68 | #define DI_SER_DISP1_CONF (0x012C - MX3FB_REG_OFFSET) | ||
69 | #define DI_SER_DISP2_CONF (0x0130 - MX3FB_REG_OFFSET) | ||
70 | #define DI_HSP_CLK_PER (0x0134 - MX3FB_REG_OFFSET) | ||
71 | #define DI_DISP0_TIME_CONF_1 (0x0138 - MX3FB_REG_OFFSET) | ||
72 | #define DI_DISP0_TIME_CONF_2 (0x013C - MX3FB_REG_OFFSET) | ||
73 | #define DI_DISP0_TIME_CONF_3 (0x0140 - MX3FB_REG_OFFSET) | ||
74 | #define DI_DISP1_TIME_CONF_1 (0x0144 - MX3FB_REG_OFFSET) | ||
75 | #define DI_DISP1_TIME_CONF_2 (0x0148 - MX3FB_REG_OFFSET) | ||
76 | #define DI_DISP1_TIME_CONF_3 (0x014C - MX3FB_REG_OFFSET) | ||
77 | #define DI_DISP2_TIME_CONF_1 (0x0150 - MX3FB_REG_OFFSET) | ||
78 | #define DI_DISP2_TIME_CONF_2 (0x0154 - MX3FB_REG_OFFSET) | ||
79 | #define DI_DISP2_TIME_CONF_3 (0x0158 - MX3FB_REG_OFFSET) | ||
80 | #define DI_DISP3_TIME_CONF (0x015C - MX3FB_REG_OFFSET) | ||
81 | #define DI_DISP0_DB0_MAP (0x0160 - MX3FB_REG_OFFSET) | ||
82 | #define DI_DISP0_DB1_MAP (0x0164 - MX3FB_REG_OFFSET) | ||
83 | #define DI_DISP0_DB2_MAP (0x0168 - MX3FB_REG_OFFSET) | ||
84 | #define DI_DISP0_CB0_MAP (0x016C - MX3FB_REG_OFFSET) | ||
85 | #define DI_DISP0_CB1_MAP (0x0170 - MX3FB_REG_OFFSET) | ||
86 | #define DI_DISP0_CB2_MAP (0x0174 - MX3FB_REG_OFFSET) | ||
87 | #define DI_DISP1_DB0_MAP (0x0178 - MX3FB_REG_OFFSET) | ||
88 | #define DI_DISP1_DB1_MAP (0x017C - MX3FB_REG_OFFSET) | ||
89 | #define DI_DISP1_DB2_MAP (0x0180 - MX3FB_REG_OFFSET) | ||
90 | #define DI_DISP1_CB0_MAP (0x0184 - MX3FB_REG_OFFSET) | ||
91 | #define DI_DISP1_CB1_MAP (0x0188 - MX3FB_REG_OFFSET) | ||
92 | #define DI_DISP1_CB2_MAP (0x018C - MX3FB_REG_OFFSET) | ||
93 | #define DI_DISP2_DB0_MAP (0x0190 - MX3FB_REG_OFFSET) | ||
94 | #define DI_DISP2_DB1_MAP (0x0194 - MX3FB_REG_OFFSET) | ||
95 | #define DI_DISP2_DB2_MAP (0x0198 - MX3FB_REG_OFFSET) | ||
96 | #define DI_DISP2_CB0_MAP (0x019C - MX3FB_REG_OFFSET) | ||
97 | #define DI_DISP2_CB1_MAP (0x01A0 - MX3FB_REG_OFFSET) | ||
98 | #define DI_DISP2_CB2_MAP (0x01A4 - MX3FB_REG_OFFSET) | ||
99 | #define DI_DISP3_B0_MAP (0x01A8 - MX3FB_REG_OFFSET) | ||
100 | #define DI_DISP3_B1_MAP (0x01AC - MX3FB_REG_OFFSET) | ||
101 | #define DI_DISP3_B2_MAP (0x01B0 - MX3FB_REG_OFFSET) | ||
102 | #define DI_DISP_ACC_CC (0x01B4 - MX3FB_REG_OFFSET) | ||
103 | #define DI_DISP_LLA_CONF (0x01B8 - MX3FB_REG_OFFSET) | ||
104 | #define DI_DISP_LLA_DATA (0x01BC - MX3FB_REG_OFFSET) | ||
105 | |||
106 | /* DI_DISP_SIG_POL bits */ | ||
107 | #define DI_D3_VSYNC_POL_SHIFT 28 | ||
108 | #define DI_D3_HSYNC_POL_SHIFT 27 | ||
109 | #define DI_D3_DRDY_SHARP_POL_SHIFT 26 | ||
110 | #define DI_D3_CLK_POL_SHIFT 25 | ||
111 | #define DI_D3_DATA_POL_SHIFT 24 | ||
112 | |||
113 | /* DI_DISP_IF_CONF bits */ | ||
114 | #define DI_D3_CLK_IDLE_SHIFT 26 | ||
115 | #define DI_D3_CLK_SEL_SHIFT 25 | ||
116 | #define DI_D3_DATAMSK_SHIFT 24 | ||
117 | |||
118 | enum ipu_panel { | ||
119 | IPU_PANEL_SHARP_TFT, | ||
120 | IPU_PANEL_TFT, | ||
121 | }; | ||
122 | |||
123 | struct ipu_di_signal_cfg { | ||
124 | unsigned datamask_en:1; | ||
125 | unsigned clksel_en:1; | ||
126 | unsigned clkidle_en:1; | ||
127 | unsigned data_pol:1; /* true = inverted */ | ||
128 | unsigned clk_pol:1; /* true = rising edge */ | ||
129 | unsigned enable_pol:1; | ||
130 | unsigned Hsync_pol:1; /* true = active high */ | ||
131 | unsigned Vsync_pol:1; | ||
132 | }; | ||
133 | |||
134 | static const struct fb_videomode mx3fb_modedb[] = { | ||
135 | { | ||
136 | /* 240x320 @ 60 Hz */ | ||
137 | .name = "Sharp-QVGA", | ||
138 | .refresh = 60, | ||
139 | .xres = 240, | ||
140 | .yres = 320, | ||
141 | .pixclock = 185925, | ||
142 | .left_margin = 9, | ||
143 | .right_margin = 16, | ||
144 | .upper_margin = 7, | ||
145 | .lower_margin = 9, | ||
146 | .hsync_len = 1, | ||
147 | .vsync_len = 1, | ||
148 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_SHARP_MODE | | ||
149 | FB_SYNC_CLK_INVERT | FB_SYNC_DATA_INVERT | | ||
150 | FB_SYNC_CLK_IDLE_EN, | ||
151 | .vmode = FB_VMODE_NONINTERLACED, | ||
152 | .flag = 0, | ||
153 | }, { | ||
154 | /* 240x33 @ 60 Hz */ | ||
155 | .name = "Sharp-CLI", | ||
156 | .refresh = 60, | ||
157 | .xres = 240, | ||
158 | .yres = 33, | ||
159 | .pixclock = 185925, | ||
160 | .left_margin = 9, | ||
161 | .right_margin = 16, | ||
162 | .upper_margin = 7, | ||
163 | .lower_margin = 9 + 287, | ||
164 | .hsync_len = 1, | ||
165 | .vsync_len = 1, | ||
166 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_SHARP_MODE | | ||
167 | FB_SYNC_CLK_INVERT | FB_SYNC_DATA_INVERT | | ||
168 | FB_SYNC_CLK_IDLE_EN, | ||
169 | .vmode = FB_VMODE_NONINTERLACED, | ||
170 | .flag = 0, | ||
171 | }, { | ||
172 | /* 640x480 @ 60 Hz */ | ||
173 | .name = "NEC-VGA", | ||
174 | .refresh = 60, | ||
175 | .xres = 640, | ||
176 | .yres = 480, | ||
177 | .pixclock = 38255, | ||
178 | .left_margin = 144, | ||
179 | .right_margin = 0, | ||
180 | .upper_margin = 34, | ||
181 | .lower_margin = 40, | ||
182 | .hsync_len = 1, | ||
183 | .vsync_len = 1, | ||
184 | .sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_OE_ACT_HIGH, | ||
185 | .vmode = FB_VMODE_NONINTERLACED, | ||
186 | .flag = 0, | ||
187 | }, { | ||
188 | /* NTSC TV output */ | ||
189 | .name = "TV-NTSC", | ||
190 | .refresh = 60, | ||
191 | .xres = 640, | ||
192 | .yres = 480, | ||
193 | .pixclock = 37538, | ||
194 | .left_margin = 38, | ||
195 | .right_margin = 858 - 640 - 38 - 3, | ||
196 | .upper_margin = 36, | ||
197 | .lower_margin = 518 - 480 - 36 - 1, | ||
198 | .hsync_len = 3, | ||
199 | .vsync_len = 1, | ||
200 | .sync = 0, | ||
201 | .vmode = FB_VMODE_NONINTERLACED, | ||
202 | .flag = 0, | ||
203 | }, { | ||
204 | /* PAL TV output */ | ||
205 | .name = "TV-PAL", | ||
206 | .refresh = 50, | ||
207 | .xres = 640, | ||
208 | .yres = 480, | ||
209 | .pixclock = 37538, | ||
210 | .left_margin = 38, | ||
211 | .right_margin = 960 - 640 - 38 - 32, | ||
212 | .upper_margin = 32, | ||
213 | .lower_margin = 555 - 480 - 32 - 3, | ||
214 | .hsync_len = 32, | ||
215 | .vsync_len = 3, | ||
216 | .sync = 0, | ||
217 | .vmode = FB_VMODE_NONINTERLACED, | ||
218 | .flag = 0, | ||
219 | }, { | ||
220 | /* TV output VGA mode, 640x480 @ 65 Hz */ | ||
221 | .name = "TV-VGA", | ||
222 | .refresh = 60, | ||
223 | .xres = 640, | ||
224 | .yres = 480, | ||
225 | .pixclock = 40574, | ||
226 | .left_margin = 35, | ||
227 | .right_margin = 45, | ||
228 | .upper_margin = 9, | ||
229 | .lower_margin = 1, | ||
230 | .hsync_len = 46, | ||
231 | .vsync_len = 5, | ||
232 | .sync = 0, | ||
233 | .vmode = FB_VMODE_NONINTERLACED, | ||
234 | .flag = 0, | ||
235 | }, | ||
236 | }; | ||
237 | |||
238 | struct mx3fb_data { | ||
239 | struct fb_info *fbi; | ||
240 | int backlight_level; | ||
241 | void __iomem *reg_base; | ||
242 | spinlock_t lock; | ||
243 | struct device *dev; | ||
244 | |||
245 | uint32_t h_start_width; | ||
246 | uint32_t v_start_width; | ||
247 | }; | ||
248 | |||
249 | struct dma_chan_request { | ||
250 | struct mx3fb_data *mx3fb; | ||
251 | enum ipu_channel id; | ||
252 | }; | ||
253 | |||
254 | /* MX3 specific framebuffer information. */ | ||
255 | struct mx3fb_info { | ||
256 | int blank; | ||
257 | enum ipu_channel ipu_ch; | ||
258 | uint32_t cur_ipu_buf; | ||
259 | |||
260 | u32 pseudo_palette[16]; | ||
261 | |||
262 | struct completion flip_cmpl; | ||
263 | struct mutex mutex; /* Protects fb-ops */ | ||
264 | struct mx3fb_data *mx3fb; | ||
265 | struct idmac_channel *idmac_channel; | ||
266 | struct dma_async_tx_descriptor *txd; | ||
267 | dma_cookie_t cookie; | ||
268 | struct scatterlist sg[2]; | ||
269 | |||
270 | u32 sync; /* preserve var->sync flags */ | ||
271 | }; | ||
272 | |||
273 | static void mx3fb_dma_done(void *); | ||
274 | |||
275 | /* Used fb-mode and bpp. Can be set on kernel command line, therefore file-static. */ | ||
276 | static const char *fb_mode; | ||
277 | static unsigned long default_bpp = 16; | ||
278 | |||
279 | static u32 mx3fb_read_reg(struct mx3fb_data *mx3fb, unsigned long reg) | ||
280 | { | ||
281 | return __raw_readl(mx3fb->reg_base + reg); | ||
282 | } | ||
283 | |||
284 | static void mx3fb_write_reg(struct mx3fb_data *mx3fb, u32 value, unsigned long reg) | ||
285 | { | ||
286 | __raw_writel(value, mx3fb->reg_base + reg); | ||
287 | } | ||
288 | |||
289 | static const uint32_t di_mappings[] = { | ||
290 | 0x1600AAAA, 0x00E05555, 0x00070000, 3, /* RGB888 */ | ||
291 | 0x0005000F, 0x000B000F, 0x0011000F, 1, /* RGB666 */ | ||
292 | 0x0011000F, 0x000B000F, 0x0005000F, 1, /* BGR666 */ | ||
293 | 0x0004003F, 0x000A000F, 0x000F003F, 1 /* RGB565 */ | ||
294 | }; | ||
295 | |||
296 | static void sdc_fb_init(struct mx3fb_info *fbi) | ||
297 | { | ||
298 | struct mx3fb_data *mx3fb = fbi->mx3fb; | ||
299 | uint32_t reg; | ||
300 | |||
301 | reg = mx3fb_read_reg(mx3fb, SDC_COM_CONF); | ||
302 | |||
303 | mx3fb_write_reg(mx3fb, reg | SDC_COM_BG_EN, SDC_COM_CONF); | ||
304 | } | ||
305 | |||
306 | /* Returns enabled flag before uninit */ | ||
307 | static uint32_t sdc_fb_uninit(struct mx3fb_info *fbi) | ||
308 | { | ||
309 | struct mx3fb_data *mx3fb = fbi->mx3fb; | ||
310 | uint32_t reg; | ||
311 | |||
312 | reg = mx3fb_read_reg(mx3fb, SDC_COM_CONF); | ||
313 | |||
314 | mx3fb_write_reg(mx3fb, reg & ~SDC_COM_BG_EN, SDC_COM_CONF); | ||
315 | |||
316 | return reg & SDC_COM_BG_EN; | ||
317 | } | ||
318 | |||
319 | static void sdc_enable_channel(struct mx3fb_info *mx3_fbi) | ||
320 | { | ||
321 | struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; | ||
322 | struct idmac_channel *ichan = mx3_fbi->idmac_channel; | ||
323 | struct dma_chan *dma_chan = &ichan->dma_chan; | ||
324 | unsigned long flags; | ||
325 | dma_cookie_t cookie; | ||
326 | |||
327 | dev_dbg(mx3fb->dev, "mx3fbi %p, desc %p, sg %p\n", mx3_fbi, | ||
328 | to_tx_desc(mx3_fbi->txd), to_tx_desc(mx3_fbi->txd)->sg); | ||
329 | |||
330 | /* This enables the channel */ | ||
331 | if (mx3_fbi->cookie < 0) { | ||
332 | mx3_fbi->txd = dma_chan->device->device_prep_slave_sg(dma_chan, | ||
333 | &mx3_fbi->sg[0], 1, DMA_TO_DEVICE, DMA_PREP_INTERRUPT); | ||
334 | if (!mx3_fbi->txd) { | ||
335 | dev_err(mx3fb->dev, "Cannot allocate descriptor on %d\n", | ||
336 | dma_chan->chan_id); | ||
337 | return; | ||
338 | } | ||
339 | |||
340 | mx3_fbi->txd->callback_param = mx3_fbi->txd; | ||
341 | mx3_fbi->txd->callback = mx3fb_dma_done; | ||
342 | |||
343 | cookie = mx3_fbi->txd->tx_submit(mx3_fbi->txd); | ||
344 | dev_dbg(mx3fb->dev, "%d: Submit %p #%d [%c]\n", __LINE__, | ||
345 | mx3_fbi->txd, cookie, list_empty(&ichan->queue) ? '-' : '+'); | ||
346 | } else { | ||
347 | if (!mx3_fbi->txd || !mx3_fbi->txd->tx_submit) { | ||
348 | dev_err(mx3fb->dev, "Cannot enable channel %d\n", | ||
349 | dma_chan->chan_id); | ||
350 | return; | ||
351 | } | ||
352 | |||
353 | /* Just re-activate the same buffer */ | ||
354 | dma_async_issue_pending(dma_chan); | ||
355 | cookie = mx3_fbi->cookie; | ||
356 | dev_dbg(mx3fb->dev, "%d: Re-submit %p #%d [%c]\n", __LINE__, | ||
357 | mx3_fbi->txd, cookie, list_empty(&ichan->queue) ? '-' : '+'); | ||
358 | } | ||
359 | |||
360 | if (cookie >= 0) { | ||
361 | spin_lock_irqsave(&mx3fb->lock, flags); | ||
362 | sdc_fb_init(mx3_fbi); | ||
363 | mx3_fbi->cookie = cookie; | ||
364 | spin_unlock_irqrestore(&mx3fb->lock, flags); | ||
365 | } | ||
366 | |||
367 | /* | ||
368 | * Attention! Without this msleep the channel keeps generating | ||
369 | * interrupts. Next sdc_set_brightness() is going to be called | ||
370 | * from mx3fb_blank(). | ||
371 | */ | ||
372 | msleep(2); | ||
373 | } | ||
374 | |||
375 | static void sdc_disable_channel(struct mx3fb_info *mx3_fbi) | ||
376 | { | ||
377 | struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; | ||
378 | uint32_t enabled; | ||
379 | unsigned long flags; | ||
380 | |||
381 | spin_lock_irqsave(&mx3fb->lock, flags); | ||
382 | |||
383 | enabled = sdc_fb_uninit(mx3_fbi); | ||
384 | |||
385 | spin_unlock_irqrestore(&mx3fb->lock, flags); | ||
386 | |||
387 | mx3_fbi->txd->chan->device->device_terminate_all(mx3_fbi->txd->chan); | ||
388 | mx3_fbi->txd = NULL; | ||
389 | mx3_fbi->cookie = -EINVAL; | ||
390 | } | ||
391 | |||
392 | /** | ||
393 | * sdc_set_window_pos() - set window position of the respective plane. | ||
394 | * @mx3fb: mx3fb context. | ||
395 | * @channel: IPU DMAC channel ID. | ||
396 | * @x_pos: X coordinate relative to the top left corner to place window at. | ||
397 | * @y_pos: Y coordinate relative to the top left corner to place window at. | ||
398 | * @return: 0 on success or negative error code on failure. | ||
399 | */ | ||
400 | static int sdc_set_window_pos(struct mx3fb_data *mx3fb, enum ipu_channel channel, | ||
401 | int16_t x_pos, int16_t y_pos) | ||
402 | { | ||
403 | x_pos += mx3fb->h_start_width; | ||
404 | y_pos += mx3fb->v_start_width; | ||
405 | |||
406 | if (channel != IDMAC_SDC_0) | ||
407 | return -EINVAL; | ||
408 | |||
409 | mx3fb_write_reg(mx3fb, (x_pos << 16) | y_pos, SDC_BG_POS); | ||
410 | return 0; | ||
411 | } | ||
412 | |||
413 | /** | ||
414 | * sdc_init_panel() - initialize a synchronous LCD panel. | ||
415 | * @mx3fb: mx3fb context. | ||
416 | * @panel: panel type. | ||
417 | * @pixel_clk: desired pixel clock frequency in Hz. | ||
418 | * @width: width of panel in pixels. | ||
419 | * @height: height of panel in pixels. | ||
420 | * @pixel_fmt: pixel format of buffer as FOURCC ASCII code. | ||
421 | * @h_start_width: number of pixel clocks between the HSYNC signal pulse | ||
422 | * and the start of valid data. | ||
423 | * @h_sync_width: width of the HSYNC signal in units of pixel clocks. | ||
424 | * @h_end_width: number of pixel clocks between the end of valid data | ||
425 | * and the HSYNC signal for next line. | ||
426 | * @v_start_width: number of lines between the VSYNC signal pulse and the | ||
427 | * start of valid data. | ||
428 | * @v_sync_width: width of the VSYNC signal in units of lines | ||
429 | * @v_end_width: number of lines between the end of valid data and the | ||
430 | * VSYNC signal for next frame. | ||
431 | * @sig: bitfield of signal polarities for LCD interface. | ||
432 | * @return: 0 on success or negative error code on failure. | ||
433 | */ | ||
434 | static int sdc_init_panel(struct mx3fb_data *mx3fb, enum ipu_panel panel, | ||
435 | uint32_t pixel_clk, | ||
436 | uint16_t width, uint16_t height, | ||
437 | enum pixel_fmt pixel_fmt, | ||
438 | uint16_t h_start_width, uint16_t h_sync_width, | ||
439 | uint16_t h_end_width, uint16_t v_start_width, | ||
440 | uint16_t v_sync_width, uint16_t v_end_width, | ||
441 | struct ipu_di_signal_cfg sig) | ||
442 | { | ||
443 | unsigned long lock_flags; | ||
444 | uint32_t reg; | ||
445 | uint32_t old_conf; | ||
446 | uint32_t div; | ||
447 | struct clk *ipu_clk; | ||
448 | |||
449 | dev_dbg(mx3fb->dev, "panel size = %d x %d", width, height); | ||
450 | |||
451 | if (v_sync_width == 0 || h_sync_width == 0) | ||
452 | return -EINVAL; | ||
453 | |||
454 | /* Init panel size and blanking periods */ | ||
455 | reg = ((uint32_t) (h_sync_width - 1) << 26) | | ||
456 | ((uint32_t) (width + h_start_width + h_end_width - 1) << 16); | ||
457 | mx3fb_write_reg(mx3fb, reg, SDC_HOR_CONF); | ||
458 | |||
459 | #ifdef DEBUG | ||
460 | printk(KERN_CONT " hor_conf %x,", reg); | ||
461 | #endif | ||
462 | |||
463 | reg = ((uint32_t) (v_sync_width - 1) << 26) | SDC_V_SYNC_WIDTH_L | | ||
464 | ((uint32_t) (height + v_start_width + v_end_width - 1) << 16); | ||
465 | mx3fb_write_reg(mx3fb, reg, SDC_VER_CONF); | ||
466 | |||
467 | #ifdef DEBUG | ||
468 | printk(KERN_CONT " ver_conf %x\n", reg); | ||
469 | #endif | ||
470 | |||
471 | mx3fb->h_start_width = h_start_width; | ||
472 | mx3fb->v_start_width = v_start_width; | ||
473 | |||
474 | switch (panel) { | ||
475 | case IPU_PANEL_SHARP_TFT: | ||
476 | mx3fb_write_reg(mx3fb, 0x00FD0102L, SDC_SHARP_CONF_1); | ||
477 | mx3fb_write_reg(mx3fb, 0x00F500F4L, SDC_SHARP_CONF_2); | ||
478 | mx3fb_write_reg(mx3fb, SDC_COM_SHARP | SDC_COM_TFT_COLOR, SDC_COM_CONF); | ||
479 | break; | ||
480 | case IPU_PANEL_TFT: | ||
481 | mx3fb_write_reg(mx3fb, SDC_COM_TFT_COLOR, SDC_COM_CONF); | ||
482 | break; | ||
483 | default: | ||
484 | return -EINVAL; | ||
485 | } | ||
486 | |||
487 | /* Init clocking */ | ||
488 | |||
489 | /* | ||
490 | * Calculate divider: fractional part is 4 bits so simply multiple by | ||
491 | * 24 to get fractional part, as long as we stay under ~250MHz and on | ||
492 | * i.MX31 it (HSP_CLK) is <= 178MHz. Currently 128.267MHz | ||
493 | */ | ||
494 | dev_dbg(mx3fb->dev, "pixel clk = %d\n", pixel_clk); | ||
495 | |||
496 | ipu_clk = clk_get(mx3fb->dev, "ipu_clk"); | ||
497 | div = clk_get_rate(ipu_clk) * 16 / pixel_clk; | ||
498 | clk_put(ipu_clk); | ||
499 | |||
500 | if (div < 0x40) { /* Divider less than 4 */ | ||
501 | dev_dbg(mx3fb->dev, | ||
502 | "InitPanel() - Pixel clock divider less than 4\n"); | ||
503 | div = 0x40; | ||
504 | } | ||
505 | |||
506 | spin_lock_irqsave(&mx3fb->lock, lock_flags); | ||
507 | |||
508 | /* | ||
509 | * DISP3_IF_CLK_DOWN_WR is half the divider value and 2 fraction bits | ||
510 | * fewer. Subtract 1 extra from DISP3_IF_CLK_DOWN_WR based on timing | ||
511 | * debug. DISP3_IF_CLK_UP_WR is 0 | ||
512 | */ | ||
513 | mx3fb_write_reg(mx3fb, (((div / 8) - 1) << 22) | div, DI_DISP3_TIME_CONF); | ||
514 | |||
515 | /* DI settings */ | ||
516 | old_conf = mx3fb_read_reg(mx3fb, DI_DISP_IF_CONF) & 0x78FFFFFF; | ||
517 | old_conf |= sig.datamask_en << DI_D3_DATAMSK_SHIFT | | ||
518 | sig.clksel_en << DI_D3_CLK_SEL_SHIFT | | ||
519 | sig.clkidle_en << DI_D3_CLK_IDLE_SHIFT; | ||
520 | mx3fb_write_reg(mx3fb, old_conf, DI_DISP_IF_CONF); | ||
521 | |||
522 | old_conf = mx3fb_read_reg(mx3fb, DI_DISP_SIG_POL) & 0xE0FFFFFF; | ||
523 | old_conf |= sig.data_pol << DI_D3_DATA_POL_SHIFT | | ||
524 | sig.clk_pol << DI_D3_CLK_POL_SHIFT | | ||
525 | sig.enable_pol << DI_D3_DRDY_SHARP_POL_SHIFT | | ||
526 | sig.Hsync_pol << DI_D3_HSYNC_POL_SHIFT | | ||
527 | sig.Vsync_pol << DI_D3_VSYNC_POL_SHIFT; | ||
528 | mx3fb_write_reg(mx3fb, old_conf, DI_DISP_SIG_POL); | ||
529 | |||
530 | switch (pixel_fmt) { | ||
531 | case IPU_PIX_FMT_RGB24: | ||
532 | mx3fb_write_reg(mx3fb, di_mappings[0], DI_DISP3_B0_MAP); | ||
533 | mx3fb_write_reg(mx3fb, di_mappings[1], DI_DISP3_B1_MAP); | ||
534 | mx3fb_write_reg(mx3fb, di_mappings[2], DI_DISP3_B2_MAP); | ||
535 | mx3fb_write_reg(mx3fb, mx3fb_read_reg(mx3fb, DI_DISP_ACC_CC) | | ||
536 | ((di_mappings[3] - 1) << 12), DI_DISP_ACC_CC); | ||
537 | break; | ||
538 | case IPU_PIX_FMT_RGB666: | ||
539 | mx3fb_write_reg(mx3fb, di_mappings[4], DI_DISP3_B0_MAP); | ||
540 | mx3fb_write_reg(mx3fb, di_mappings[5], DI_DISP3_B1_MAP); | ||
541 | mx3fb_write_reg(mx3fb, di_mappings[6], DI_DISP3_B2_MAP); | ||
542 | mx3fb_write_reg(mx3fb, mx3fb_read_reg(mx3fb, DI_DISP_ACC_CC) | | ||
543 | ((di_mappings[7] - 1) << 12), DI_DISP_ACC_CC); | ||
544 | break; | ||
545 | case IPU_PIX_FMT_BGR666: | ||
546 | mx3fb_write_reg(mx3fb, di_mappings[8], DI_DISP3_B0_MAP); | ||
547 | mx3fb_write_reg(mx3fb, di_mappings[9], DI_DISP3_B1_MAP); | ||
548 | mx3fb_write_reg(mx3fb, di_mappings[10], DI_DISP3_B2_MAP); | ||
549 | mx3fb_write_reg(mx3fb, mx3fb_read_reg(mx3fb, DI_DISP_ACC_CC) | | ||
550 | ((di_mappings[11] - 1) << 12), DI_DISP_ACC_CC); | ||
551 | break; | ||
552 | default: | ||
553 | mx3fb_write_reg(mx3fb, di_mappings[12], DI_DISP3_B0_MAP); | ||
554 | mx3fb_write_reg(mx3fb, di_mappings[13], DI_DISP3_B1_MAP); | ||
555 | mx3fb_write_reg(mx3fb, di_mappings[14], DI_DISP3_B2_MAP); | ||
556 | mx3fb_write_reg(mx3fb, mx3fb_read_reg(mx3fb, DI_DISP_ACC_CC) | | ||
557 | ((di_mappings[15] - 1) << 12), DI_DISP_ACC_CC); | ||
558 | break; | ||
559 | } | ||
560 | |||
561 | spin_unlock_irqrestore(&mx3fb->lock, lock_flags); | ||
562 | |||
563 | dev_dbg(mx3fb->dev, "DI_DISP_IF_CONF = 0x%08X\n", | ||
564 | mx3fb_read_reg(mx3fb, DI_DISP_IF_CONF)); | ||
565 | dev_dbg(mx3fb->dev, "DI_DISP_SIG_POL = 0x%08X\n", | ||
566 | mx3fb_read_reg(mx3fb, DI_DISP_SIG_POL)); | ||
567 | dev_dbg(mx3fb->dev, "DI_DISP3_TIME_CONF = 0x%08X\n", | ||
568 | mx3fb_read_reg(mx3fb, DI_DISP3_TIME_CONF)); | ||
569 | |||
570 | return 0; | ||
571 | } | ||
572 | |||
573 | /** | ||
574 | * sdc_set_color_key() - set the transparent color key for SDC graphic plane. | ||
575 | * @mx3fb: mx3fb context. | ||
576 | * @channel: IPU DMAC channel ID. | ||
577 | * @enable: boolean to enable or disable color keyl. | ||
578 | * @color_key: 24-bit RGB color to use as transparent color key. | ||
579 | * @return: 0 on success or negative error code on failure. | ||
580 | */ | ||
581 | static int sdc_set_color_key(struct mx3fb_data *mx3fb, enum ipu_channel channel, | ||
582 | bool enable, uint32_t color_key) | ||
583 | { | ||
584 | uint32_t reg, sdc_conf; | ||
585 | unsigned long lock_flags; | ||
586 | |||
587 | spin_lock_irqsave(&mx3fb->lock, lock_flags); | ||
588 | |||
589 | sdc_conf = mx3fb_read_reg(mx3fb, SDC_COM_CONF); | ||
590 | if (channel == IDMAC_SDC_0) | ||
591 | sdc_conf &= ~SDC_COM_GWSEL; | ||
592 | else | ||
593 | sdc_conf |= SDC_COM_GWSEL; | ||
594 | |||
595 | if (enable) { | ||
596 | reg = mx3fb_read_reg(mx3fb, SDC_GW_CTRL) & 0xFF000000L; | ||
597 | mx3fb_write_reg(mx3fb, reg | (color_key & 0x00FFFFFFL), | ||
598 | SDC_GW_CTRL); | ||
599 | |||
600 | sdc_conf |= SDC_COM_KEY_COLOR_G; | ||
601 | } else { | ||
602 | sdc_conf &= ~SDC_COM_KEY_COLOR_G; | ||
603 | } | ||
604 | mx3fb_write_reg(mx3fb, sdc_conf, SDC_COM_CONF); | ||
605 | |||
606 | spin_unlock_irqrestore(&mx3fb->lock, lock_flags); | ||
607 | |||
608 | return 0; | ||
609 | } | ||
610 | |||
611 | /** | ||
612 | * sdc_set_global_alpha() - set global alpha blending modes. | ||
613 | * @mx3fb: mx3fb context. | ||
614 | * @enable: boolean to enable or disable global alpha blending. If disabled, | ||
615 | * per pixel blending is used. | ||
616 | * @alpha: global alpha value. | ||
617 | * @return: 0 on success or negative error code on failure. | ||
618 | */ | ||
619 | static int sdc_set_global_alpha(struct mx3fb_data *mx3fb, bool enable, uint8_t alpha) | ||
620 | { | ||
621 | uint32_t reg; | ||
622 | unsigned long lock_flags; | ||
623 | |||
624 | spin_lock_irqsave(&mx3fb->lock, lock_flags); | ||
625 | |||
626 | if (enable) { | ||
627 | reg = mx3fb_read_reg(mx3fb, SDC_GW_CTRL) & 0x00FFFFFFL; | ||
628 | mx3fb_write_reg(mx3fb, reg | ((uint32_t) alpha << 24), SDC_GW_CTRL); | ||
629 | |||
630 | reg = mx3fb_read_reg(mx3fb, SDC_COM_CONF); | ||
631 | mx3fb_write_reg(mx3fb, reg | SDC_COM_GLB_A, SDC_COM_CONF); | ||
632 | } else { | ||
633 | reg = mx3fb_read_reg(mx3fb, SDC_COM_CONF); | ||
634 | mx3fb_write_reg(mx3fb, reg & ~SDC_COM_GLB_A, SDC_COM_CONF); | ||
635 | } | ||
636 | |||
637 | spin_unlock_irqrestore(&mx3fb->lock, lock_flags); | ||
638 | |||
639 | return 0; | ||
640 | } | ||
641 | |||
642 | static void sdc_set_brightness(struct mx3fb_data *mx3fb, uint8_t value) | ||
643 | { | ||
644 | /* This might be board-specific */ | ||
645 | mx3fb_write_reg(mx3fb, 0x03000000UL | value << 16, SDC_PWM_CTRL); | ||
646 | return; | ||
647 | } | ||
648 | |||
649 | static uint32_t bpp_to_pixfmt(int bpp) | ||
650 | { | ||
651 | uint32_t pixfmt = 0; | ||
652 | switch (bpp) { | ||
653 | case 24: | ||
654 | pixfmt = IPU_PIX_FMT_BGR24; | ||
655 | break; | ||
656 | case 32: | ||
657 | pixfmt = IPU_PIX_FMT_BGR32; | ||
658 | break; | ||
659 | case 16: | ||
660 | pixfmt = IPU_PIX_FMT_RGB565; | ||
661 | break; | ||
662 | } | ||
663 | return pixfmt; | ||
664 | } | ||
665 | |||
666 | static int mx3fb_blank(int blank, struct fb_info *fbi); | ||
667 | static int mx3fb_map_video_memory(struct fb_info *fbi); | ||
668 | static int mx3fb_unmap_video_memory(struct fb_info *fbi); | ||
669 | |||
670 | /** | ||
671 | * mx3fb_set_fix() - set fixed framebuffer parameters from variable settings. | ||
672 | * @info: framebuffer information pointer | ||
673 | * @return: 0 on success or negative error code on failure. | ||
674 | */ | ||
675 | static int mx3fb_set_fix(struct fb_info *fbi) | ||
676 | { | ||
677 | struct fb_fix_screeninfo *fix = &fbi->fix; | ||
678 | struct fb_var_screeninfo *var = &fbi->var; | ||
679 | |||
680 | strncpy(fix->id, "DISP3 BG", 8); | ||
681 | |||
682 | fix->line_length = var->xres_virtual * var->bits_per_pixel / 8; | ||
683 | |||
684 | fix->type = FB_TYPE_PACKED_PIXELS; | ||
685 | fix->accel = FB_ACCEL_NONE; | ||
686 | fix->visual = FB_VISUAL_TRUECOLOR; | ||
687 | fix->xpanstep = 1; | ||
688 | fix->ypanstep = 1; | ||
689 | |||
690 | return 0; | ||
691 | } | ||
692 | |||
693 | static void mx3fb_dma_done(void *arg) | ||
694 | { | ||
695 | struct idmac_tx_desc *tx_desc = to_tx_desc(arg); | ||
696 | struct dma_chan *chan = tx_desc->txd.chan; | ||
697 | struct idmac_channel *ichannel = to_idmac_chan(chan); | ||
698 | struct mx3fb_data *mx3fb = ichannel->client; | ||
699 | struct mx3fb_info *mx3_fbi = mx3fb->fbi->par; | ||
700 | |||
701 | dev_dbg(mx3fb->dev, "irq %d callback\n", ichannel->eof_irq); | ||
702 | |||
703 | /* We only need one interrupt, it will be re-enabled as needed */ | ||
704 | disable_irq(ichannel->eof_irq); | ||
705 | |||
706 | complete(&mx3_fbi->flip_cmpl); | ||
707 | } | ||
708 | |||
709 | /** | ||
710 | * mx3fb_set_par() - set framebuffer parameters and change the operating mode. | ||
711 | * @fbi: framebuffer information pointer. | ||
712 | * @return: 0 on success or negative error code on failure. | ||
713 | */ | ||
714 | static int mx3fb_set_par(struct fb_info *fbi) | ||
715 | { | ||
716 | u32 mem_len; | ||
717 | struct ipu_di_signal_cfg sig_cfg; | ||
718 | enum ipu_panel mode = IPU_PANEL_TFT; | ||
719 | struct mx3fb_info *mx3_fbi = fbi->par; | ||
720 | struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; | ||
721 | struct idmac_channel *ichan = mx3_fbi->idmac_channel; | ||
722 | struct idmac_video_param *video = &ichan->params.video; | ||
723 | struct scatterlist *sg = mx3_fbi->sg; | ||
724 | size_t screen_size; | ||
725 | |||
726 | dev_dbg(mx3fb->dev, "%s [%c]\n", __func__, list_empty(&ichan->queue) ? '-' : '+'); | ||
727 | |||
728 | mutex_lock(&mx3_fbi->mutex); | ||
729 | |||
730 | /* Total cleanup */ | ||
731 | if (mx3_fbi->txd) | ||
732 | sdc_disable_channel(mx3_fbi); | ||
733 | |||
734 | mx3fb_set_fix(fbi); | ||
735 | |||
736 | mem_len = fbi->var.yres_virtual * fbi->fix.line_length; | ||
737 | if (mem_len > fbi->fix.smem_len) { | ||
738 | if (fbi->fix.smem_start) | ||
739 | mx3fb_unmap_video_memory(fbi); | ||
740 | |||
741 | fbi->fix.smem_len = mem_len; | ||
742 | if (mx3fb_map_video_memory(fbi) < 0) { | ||
743 | mutex_unlock(&mx3_fbi->mutex); | ||
744 | return -ENOMEM; | ||
745 | } | ||
746 | } | ||
747 | |||
748 | screen_size = fbi->fix.line_length * fbi->var.yres; | ||
749 | |||
750 | sg_init_table(&sg[0], 1); | ||
751 | sg_init_table(&sg[1], 1); | ||
752 | |||
753 | sg_dma_address(&sg[0]) = fbi->fix.smem_start; | ||
754 | sg_set_page(&sg[0], virt_to_page(fbi->screen_base), | ||
755 | fbi->fix.smem_len, | ||
756 | offset_in_page(fbi->screen_base)); | ||
757 | |||
758 | if (mx3_fbi->ipu_ch == IDMAC_SDC_0) { | ||
759 | memset(&sig_cfg, 0, sizeof(sig_cfg)); | ||
760 | if (fbi->var.sync & FB_SYNC_HOR_HIGH_ACT) | ||
761 | sig_cfg.Hsync_pol = true; | ||
762 | if (fbi->var.sync & FB_SYNC_VERT_HIGH_ACT) | ||
763 | sig_cfg.Vsync_pol = true; | ||
764 | if (fbi->var.sync & FB_SYNC_CLK_INVERT) | ||
765 | sig_cfg.clk_pol = true; | ||
766 | if (fbi->var.sync & FB_SYNC_DATA_INVERT) | ||
767 | sig_cfg.data_pol = true; | ||
768 | if (fbi->var.sync & FB_SYNC_OE_ACT_HIGH) | ||
769 | sig_cfg.enable_pol = true; | ||
770 | if (fbi->var.sync & FB_SYNC_CLK_IDLE_EN) | ||
771 | sig_cfg.clkidle_en = true; | ||
772 | if (fbi->var.sync & FB_SYNC_CLK_SEL_EN) | ||
773 | sig_cfg.clksel_en = true; | ||
774 | if (fbi->var.sync & FB_SYNC_SHARP_MODE) | ||
775 | mode = IPU_PANEL_SHARP_TFT; | ||
776 | |||
777 | dev_dbg(fbi->device, "pixclock = %ul Hz\n", | ||
778 | (u32) (PICOS2KHZ(fbi->var.pixclock) * 1000UL)); | ||
779 | |||
780 | if (sdc_init_panel(mx3fb, mode, | ||
781 | (PICOS2KHZ(fbi->var.pixclock)) * 1000UL, | ||
782 | fbi->var.xres, fbi->var.yres, | ||
783 | (fbi->var.sync & FB_SYNC_SWAP_RGB) ? | ||
784 | IPU_PIX_FMT_BGR666 : IPU_PIX_FMT_RGB666, | ||
785 | fbi->var.left_margin, | ||
786 | fbi->var.hsync_len, | ||
787 | fbi->var.right_margin + | ||
788 | fbi->var.hsync_len, | ||
789 | fbi->var.upper_margin, | ||
790 | fbi->var.vsync_len, | ||
791 | fbi->var.lower_margin + | ||
792 | fbi->var.vsync_len, sig_cfg) != 0) { | ||
793 | mutex_unlock(&mx3_fbi->mutex); | ||
794 | dev_err(fbi->device, | ||
795 | "mx3fb: Error initializing panel.\n"); | ||
796 | return -EINVAL; | ||
797 | } | ||
798 | } | ||
799 | |||
800 | sdc_set_window_pos(mx3fb, mx3_fbi->ipu_ch, 0, 0); | ||
801 | |||
802 | mx3_fbi->cur_ipu_buf = 0; | ||
803 | |||
804 | video->out_pixel_fmt = bpp_to_pixfmt(fbi->var.bits_per_pixel); | ||
805 | video->out_width = fbi->var.xres; | ||
806 | video->out_height = fbi->var.yres; | ||
807 | video->out_stride = fbi->var.xres_virtual; | ||
808 | |||
809 | if (mx3_fbi->blank == FB_BLANK_UNBLANK) | ||
810 | sdc_enable_channel(mx3_fbi); | ||
811 | |||
812 | mutex_unlock(&mx3_fbi->mutex); | ||
813 | |||
814 | return 0; | ||
815 | } | ||
816 | |||
817 | /** | ||
818 | * mx3fb_check_var() - check and adjust framebuffer variable parameters. | ||
819 | * @var: framebuffer variable parameters | ||
820 | * @fbi: framebuffer information pointer | ||
821 | */ | ||
822 | static int mx3fb_check_var(struct fb_var_screeninfo *var, struct fb_info *fbi) | ||
823 | { | ||
824 | struct mx3fb_info *mx3_fbi = fbi->par; | ||
825 | u32 vtotal; | ||
826 | u32 htotal; | ||
827 | |||
828 | dev_dbg(fbi->device, "%s\n", __func__); | ||
829 | |||
830 | if (var->xres_virtual < var->xres) | ||
831 | var->xres_virtual = var->xres; | ||
832 | if (var->yres_virtual < var->yres) | ||
833 | var->yres_virtual = var->yres; | ||
834 | |||
835 | if ((var->bits_per_pixel != 32) && (var->bits_per_pixel != 24) && | ||
836 | (var->bits_per_pixel != 16)) | ||
837 | var->bits_per_pixel = default_bpp; | ||
838 | |||
839 | switch (var->bits_per_pixel) { | ||
840 | case 16: | ||
841 | var->red.length = 5; | ||
842 | var->red.offset = 11; | ||
843 | var->red.msb_right = 0; | ||
844 | |||
845 | var->green.length = 6; | ||
846 | var->green.offset = 5; | ||
847 | var->green.msb_right = 0; | ||
848 | |||
849 | var->blue.length = 5; | ||
850 | var->blue.offset = 0; | ||
851 | var->blue.msb_right = 0; | ||
852 | |||
853 | var->transp.length = 0; | ||
854 | var->transp.offset = 0; | ||
855 | var->transp.msb_right = 0; | ||
856 | break; | ||
857 | case 24: | ||
858 | var->red.length = 8; | ||
859 | var->red.offset = 16; | ||
860 | var->red.msb_right = 0; | ||
861 | |||
862 | var->green.length = 8; | ||
863 | var->green.offset = 8; | ||
864 | var->green.msb_right = 0; | ||
865 | |||
866 | var->blue.length = 8; | ||
867 | var->blue.offset = 0; | ||
868 | var->blue.msb_right = 0; | ||
869 | |||
870 | var->transp.length = 0; | ||
871 | var->transp.offset = 0; | ||
872 | var->transp.msb_right = 0; | ||
873 | break; | ||
874 | case 32: | ||
875 | var->red.length = 8; | ||
876 | var->red.offset = 16; | ||
877 | var->red.msb_right = 0; | ||
878 | |||
879 | var->green.length = 8; | ||
880 | var->green.offset = 8; | ||
881 | var->green.msb_right = 0; | ||
882 | |||
883 | var->blue.length = 8; | ||
884 | var->blue.offset = 0; | ||
885 | var->blue.msb_right = 0; | ||
886 | |||
887 | var->transp.length = 8; | ||
888 | var->transp.offset = 24; | ||
889 | var->transp.msb_right = 0; | ||
890 | break; | ||
891 | } | ||
892 | |||
893 | if (var->pixclock < 1000) { | ||
894 | htotal = var->xres + var->right_margin + var->hsync_len + | ||
895 | var->left_margin; | ||
896 | vtotal = var->yres + var->lower_margin + var->vsync_len + | ||
897 | var->upper_margin; | ||
898 | var->pixclock = (vtotal * htotal * 6UL) / 100UL; | ||
899 | var->pixclock = KHZ2PICOS(var->pixclock); | ||
900 | dev_dbg(fbi->device, "pixclock set for 60Hz refresh = %u ps\n", | ||
901 | var->pixclock); | ||
902 | } | ||
903 | |||
904 | var->height = -1; | ||
905 | var->width = -1; | ||
906 | var->grayscale = 0; | ||
907 | |||
908 | /* Preserve sync flags */ | ||
909 | var->sync |= mx3_fbi->sync; | ||
910 | mx3_fbi->sync |= var->sync; | ||
911 | |||
912 | return 0; | ||
913 | } | ||
914 | |||
915 | static u32 chan_to_field(unsigned int chan, struct fb_bitfield *bf) | ||
916 | { | ||
917 | chan &= 0xffff; | ||
918 | chan >>= 16 - bf->length; | ||
919 | return chan << bf->offset; | ||
920 | } | ||
921 | |||
922 | static int mx3fb_setcolreg(unsigned int regno, unsigned int red, | ||
923 | unsigned int green, unsigned int blue, | ||
924 | unsigned int trans, struct fb_info *fbi) | ||
925 | { | ||
926 | struct mx3fb_info *mx3_fbi = fbi->par; | ||
927 | u32 val; | ||
928 | int ret = 1; | ||
929 | |||
930 | dev_dbg(fbi->device, "%s\n", __func__); | ||
931 | |||
932 | mutex_lock(&mx3_fbi->mutex); | ||
933 | /* | ||
934 | * If greyscale is true, then we convert the RGB value | ||
935 | * to greyscale no matter what visual we are using. | ||
936 | */ | ||
937 | if (fbi->var.grayscale) | ||
938 | red = green = blue = (19595 * red + 38470 * green + | ||
939 | 7471 * blue) >> 16; | ||
940 | switch (fbi->fix.visual) { | ||
941 | case FB_VISUAL_TRUECOLOR: | ||
942 | /* | ||
943 | * 16-bit True Colour. We encode the RGB value | ||
944 | * according to the RGB bitfield information. | ||
945 | */ | ||
946 | if (regno < 16) { | ||
947 | u32 *pal = fbi->pseudo_palette; | ||
948 | |||
949 | val = chan_to_field(red, &fbi->var.red); | ||
950 | val |= chan_to_field(green, &fbi->var.green); | ||
951 | val |= chan_to_field(blue, &fbi->var.blue); | ||
952 | |||
953 | pal[regno] = val; | ||
954 | |||
955 | ret = 0; | ||
956 | } | ||
957 | break; | ||
958 | |||
959 | case FB_VISUAL_STATIC_PSEUDOCOLOR: | ||
960 | case FB_VISUAL_PSEUDOCOLOR: | ||
961 | break; | ||
962 | } | ||
963 | mutex_unlock(&mx3_fbi->mutex); | ||
964 | |||
965 | return ret; | ||
966 | } | ||
967 | |||
968 | /** | ||
969 | * mx3fb_blank() - blank the display. | ||
970 | */ | ||
971 | static int mx3fb_blank(int blank, struct fb_info *fbi) | ||
972 | { | ||
973 | struct mx3fb_info *mx3_fbi = fbi->par; | ||
974 | struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; | ||
975 | |||
976 | dev_dbg(fbi->device, "%s\n", __func__); | ||
977 | |||
978 | dev_dbg(fbi->device, "blank = %d\n", blank); | ||
979 | |||
980 | if (mx3_fbi->blank == blank) | ||
981 | return 0; | ||
982 | |||
983 | mutex_lock(&mx3_fbi->mutex); | ||
984 | mx3_fbi->blank = blank; | ||
985 | |||
986 | switch (blank) { | ||
987 | case FB_BLANK_POWERDOWN: | ||
988 | case FB_BLANK_VSYNC_SUSPEND: | ||
989 | case FB_BLANK_HSYNC_SUSPEND: | ||
990 | case FB_BLANK_NORMAL: | ||
991 | sdc_disable_channel(mx3_fbi); | ||
992 | sdc_set_brightness(mx3fb, 0); | ||
993 | break; | ||
994 | case FB_BLANK_UNBLANK: | ||
995 | sdc_enable_channel(mx3_fbi); | ||
996 | sdc_set_brightness(mx3fb, mx3fb->backlight_level); | ||
997 | break; | ||
998 | } | ||
999 | mutex_unlock(&mx3_fbi->mutex); | ||
1000 | |||
1001 | return 0; | ||
1002 | } | ||
1003 | |||
1004 | /** | ||
1005 | * mx3fb_pan_display() - pan or wrap the display | ||
1006 | * @var: variable screen buffer information. | ||
1007 | * @info: framebuffer information pointer. | ||
1008 | * | ||
1009 | * We look only at xoffset, yoffset and the FB_VMODE_YWRAP flag | ||
1010 | */ | ||
1011 | static int mx3fb_pan_display(struct fb_var_screeninfo *var, | ||
1012 | struct fb_info *fbi) | ||
1013 | { | ||
1014 | struct mx3fb_info *mx3_fbi = fbi->par; | ||
1015 | u32 y_bottom; | ||
1016 | unsigned long base; | ||
1017 | off_t offset; | ||
1018 | dma_cookie_t cookie; | ||
1019 | struct scatterlist *sg = mx3_fbi->sg; | ||
1020 | struct dma_chan *dma_chan = &mx3_fbi->idmac_channel->dma_chan; | ||
1021 | struct dma_async_tx_descriptor *txd; | ||
1022 | int ret; | ||
1023 | |||
1024 | dev_dbg(fbi->device, "%s [%c]\n", __func__, | ||
1025 | list_empty(&mx3_fbi->idmac_channel->queue) ? '-' : '+'); | ||
1026 | |||
1027 | if (var->xoffset > 0) { | ||
1028 | dev_dbg(fbi->device, "x panning not supported\n"); | ||
1029 | return -EINVAL; | ||
1030 | } | ||
1031 | |||
1032 | if (fbi->var.xoffset == var->xoffset && | ||
1033 | fbi->var.yoffset == var->yoffset) | ||
1034 | return 0; /* No change, do nothing */ | ||
1035 | |||
1036 | y_bottom = var->yoffset; | ||
1037 | |||
1038 | if (!(var->vmode & FB_VMODE_YWRAP)) | ||
1039 | y_bottom += var->yres; | ||
1040 | |||
1041 | if (y_bottom > fbi->var.yres_virtual) | ||
1042 | return -EINVAL; | ||
1043 | |||
1044 | mutex_lock(&mx3_fbi->mutex); | ||
1045 | |||
1046 | offset = (var->yoffset * var->xres_virtual + var->xoffset) * | ||
1047 | (var->bits_per_pixel / 8); | ||
1048 | base = fbi->fix.smem_start + offset; | ||
1049 | |||
1050 | dev_dbg(fbi->device, "Updating SDC BG buf %d address=0x%08lX\n", | ||
1051 | mx3_fbi->cur_ipu_buf, base); | ||
1052 | |||
1053 | /* | ||
1054 | * We enable the End of Frame interrupt, which will free a tx-descriptor, | ||
1055 | * which we will need for the next device_prep_slave_sg(). The | ||
1056 | * IRQ-handler will disable the IRQ again. | ||
1057 | */ | ||
1058 | init_completion(&mx3_fbi->flip_cmpl); | ||
1059 | enable_irq(mx3_fbi->idmac_channel->eof_irq); | ||
1060 | |||
1061 | ret = wait_for_completion_timeout(&mx3_fbi->flip_cmpl, HZ / 10); | ||
1062 | if (ret <= 0) { | ||
1063 | mutex_unlock(&mx3_fbi->mutex); | ||
1064 | dev_info(fbi->device, "Panning failed due to %s\n", ret < 0 ? | ||
1065 | "user interrupt" : "timeout"); | ||
1066 | return ret ? : -ETIMEDOUT; | ||
1067 | } | ||
1068 | |||
1069 | mx3_fbi->cur_ipu_buf = !mx3_fbi->cur_ipu_buf; | ||
1070 | |||
1071 | sg_dma_address(&sg[mx3_fbi->cur_ipu_buf]) = base; | ||
1072 | sg_set_page(&sg[mx3_fbi->cur_ipu_buf], | ||
1073 | virt_to_page(fbi->screen_base + offset), fbi->fix.smem_len, | ||
1074 | offset_in_page(fbi->screen_base + offset)); | ||
1075 | |||
1076 | txd = dma_chan->device->device_prep_slave_sg(dma_chan, sg + | ||
1077 | mx3_fbi->cur_ipu_buf, 1, DMA_TO_DEVICE, DMA_PREP_INTERRUPT); | ||
1078 | if (!txd) { | ||
1079 | dev_err(fbi->device, | ||
1080 | "Error preparing a DMA transaction descriptor.\n"); | ||
1081 | mutex_unlock(&mx3_fbi->mutex); | ||
1082 | return -EIO; | ||
1083 | } | ||
1084 | |||
1085 | txd->callback_param = txd; | ||
1086 | txd->callback = mx3fb_dma_done; | ||
1087 | |||
1088 | /* | ||
1089 | * Emulate original mx3fb behaviour: each new call to idmac_tx_submit() | ||
1090 | * should switch to another buffer | ||
1091 | */ | ||
1092 | cookie = txd->tx_submit(txd); | ||
1093 | dev_dbg(fbi->device, "%d: Submit %p #%d\n", __LINE__, txd, cookie); | ||
1094 | if (cookie < 0) { | ||
1095 | dev_err(fbi->device, | ||
1096 | "Error updating SDC buf %d to address=0x%08lX\n", | ||
1097 | mx3_fbi->cur_ipu_buf, base); | ||
1098 | mutex_unlock(&mx3_fbi->mutex); | ||
1099 | return -EIO; | ||
1100 | } | ||
1101 | |||
1102 | if (mx3_fbi->txd) | ||
1103 | async_tx_ack(mx3_fbi->txd); | ||
1104 | mx3_fbi->txd = txd; | ||
1105 | |||
1106 | fbi->var.xoffset = var->xoffset; | ||
1107 | fbi->var.yoffset = var->yoffset; | ||
1108 | |||
1109 | if (var->vmode & FB_VMODE_YWRAP) | ||
1110 | fbi->var.vmode |= FB_VMODE_YWRAP; | ||
1111 | else | ||
1112 | fbi->var.vmode &= ~FB_VMODE_YWRAP; | ||
1113 | |||
1114 | mutex_unlock(&mx3_fbi->mutex); | ||
1115 | |||
1116 | dev_dbg(fbi->device, "Update complete\n"); | ||
1117 | |||
1118 | return 0; | ||
1119 | } | ||
1120 | |||
1121 | /* | ||
1122 | * This structure contains the pointers to the control functions that are | ||
1123 | * invoked by the core framebuffer driver to perform operations like | ||
1124 | * blitting, rectangle filling, copy regions and cursor definition. | ||
1125 | */ | ||
1126 | static struct fb_ops mx3fb_ops = { | ||
1127 | .owner = THIS_MODULE, | ||
1128 | .fb_set_par = mx3fb_set_par, | ||
1129 | .fb_check_var = mx3fb_check_var, | ||
1130 | .fb_setcolreg = mx3fb_setcolreg, | ||
1131 | .fb_pan_display = mx3fb_pan_display, | ||
1132 | .fb_fillrect = cfb_fillrect, | ||
1133 | .fb_copyarea = cfb_copyarea, | ||
1134 | .fb_imageblit = cfb_imageblit, | ||
1135 | .fb_blank = mx3fb_blank, | ||
1136 | }; | ||
1137 | |||
1138 | #ifdef CONFIG_PM | ||
1139 | /* | ||
1140 | * Power management hooks. Note that we won't be called from IRQ context, | ||
1141 | * unlike the blank functions above, so we may sleep. | ||
1142 | */ | ||
1143 | |||
1144 | /* | ||
1145 | * Suspends the framebuffer and blanks the screen. Power management support | ||
1146 | */ | ||
1147 | static int mx3fb_suspend(struct platform_device *pdev, pm_message_t state) | ||
1148 | { | ||
1149 | struct mx3fb_data *drv_data = platform_get_drvdata(pdev); | ||
1150 | struct mx3fb_info *mx3_fbi = drv_data->fbi->par; | ||
1151 | |||
1152 | acquire_console_sem(); | ||
1153 | fb_set_suspend(drv_data->fbi, 1); | ||
1154 | release_console_sem(); | ||
1155 | |||
1156 | if (mx3_fbi->blank == FB_BLANK_UNBLANK) { | ||
1157 | sdc_disable_channel(mx3_fbi); | ||
1158 | sdc_set_brightness(mx3fb, 0); | ||
1159 | |||
1160 | } | ||
1161 | return 0; | ||
1162 | } | ||
1163 | |||
1164 | /* | ||
1165 | * Resumes the framebuffer and unblanks the screen. Power management support | ||
1166 | */ | ||
1167 | static int mx3fb_resume(struct platform_device *pdev) | ||
1168 | { | ||
1169 | struct mx3fb_data *drv_data = platform_get_drvdata(pdev); | ||
1170 | struct mx3fb_info *mx3_fbi = drv_data->fbi->par; | ||
1171 | |||
1172 | if (mx3_fbi->blank == FB_BLANK_UNBLANK) { | ||
1173 | sdc_enable_channel(mx3_fbi); | ||
1174 | sdc_set_brightness(mx3fb, drv_data->backlight_level); | ||
1175 | } | ||
1176 | |||
1177 | acquire_console_sem(); | ||
1178 | fb_set_suspend(drv_data->fbi, 0); | ||
1179 | release_console_sem(); | ||
1180 | |||
1181 | return 0; | ||
1182 | } | ||
1183 | #else | ||
1184 | #define mx3fb_suspend NULL | ||
1185 | #define mx3fb_resume NULL | ||
1186 | #endif | ||
1187 | |||
1188 | /* | ||
1189 | * Main framebuffer functions | ||
1190 | */ | ||
1191 | |||
1192 | /** | ||
1193 | * mx3fb_map_video_memory() - allocates the DRAM memory for the frame buffer. | ||
1194 | * @fbi: framebuffer information pointer | ||
1195 | * @return: Error code indicating success or failure | ||
1196 | * | ||
1197 | * This buffer is remapped into a non-cached, non-buffered, memory region to | ||
1198 | * allow palette and pixel writes to occur without flushing the cache. Once this | ||
1199 | * area is remapped, all virtual memory access to the video memory should occur | ||
1200 | * at the new region. | ||
1201 | */ | ||
1202 | static int mx3fb_map_video_memory(struct fb_info *fbi) | ||
1203 | { | ||
1204 | int retval = 0; | ||
1205 | dma_addr_t addr; | ||
1206 | |||
1207 | fbi->screen_base = dma_alloc_writecombine(fbi->device, | ||
1208 | fbi->fix.smem_len, | ||
1209 | &addr, GFP_DMA); | ||
1210 | |||
1211 | if (!fbi->screen_base) { | ||
1212 | dev_err(fbi->device, "Cannot allocate %u bytes framebuffer memory\n", | ||
1213 | fbi->fix.smem_len); | ||
1214 | retval = -EBUSY; | ||
1215 | goto err0; | ||
1216 | } | ||
1217 | |||
1218 | fbi->fix.smem_start = addr; | ||
1219 | |||
1220 | dev_dbg(fbi->device, "allocated fb @ p=0x%08x, v=0x%p, size=%d.\n", | ||
1221 | (uint32_t) fbi->fix.smem_start, fbi->screen_base, fbi->fix.smem_len); | ||
1222 | |||
1223 | fbi->screen_size = fbi->fix.smem_len; | ||
1224 | |||
1225 | /* Clear the screen */ | ||
1226 | memset((char *)fbi->screen_base, 0, fbi->fix.smem_len); | ||
1227 | |||
1228 | return 0; | ||
1229 | |||
1230 | err0: | ||
1231 | fbi->fix.smem_len = 0; | ||
1232 | fbi->fix.smem_start = 0; | ||
1233 | fbi->screen_base = NULL; | ||
1234 | return retval; | ||
1235 | } | ||
1236 | |||
1237 | /** | ||
1238 | * mx3fb_unmap_video_memory() - de-allocate frame buffer memory. | ||
1239 | * @fbi: framebuffer information pointer | ||
1240 | * @return: error code indicating success or failure | ||
1241 | */ | ||
1242 | static int mx3fb_unmap_video_memory(struct fb_info *fbi) | ||
1243 | { | ||
1244 | dma_free_writecombine(fbi->device, fbi->fix.smem_len, | ||
1245 | fbi->screen_base, fbi->fix.smem_start); | ||
1246 | |||
1247 | fbi->screen_base = 0; | ||
1248 | fbi->fix.smem_start = 0; | ||
1249 | fbi->fix.smem_len = 0; | ||
1250 | return 0; | ||
1251 | } | ||
1252 | |||
1253 | /** | ||
1254 | * mx3fb_init_fbinfo() - initialize framebuffer information object. | ||
1255 | * @return: initialized framebuffer structure. | ||
1256 | */ | ||
1257 | static struct fb_info *mx3fb_init_fbinfo(struct device *dev, struct fb_ops *ops) | ||
1258 | { | ||
1259 | struct fb_info *fbi; | ||
1260 | struct mx3fb_info *mx3fbi; | ||
1261 | int ret; | ||
1262 | |||
1263 | /* Allocate sufficient memory for the fb structure */ | ||
1264 | fbi = framebuffer_alloc(sizeof(struct mx3fb_info), dev); | ||
1265 | if (!fbi) | ||
1266 | return NULL; | ||
1267 | |||
1268 | mx3fbi = fbi->par; | ||
1269 | mx3fbi->cookie = -EINVAL; | ||
1270 | mx3fbi->cur_ipu_buf = 0; | ||
1271 | |||
1272 | fbi->var.activate = FB_ACTIVATE_NOW; | ||
1273 | |||
1274 | fbi->fbops = ops; | ||
1275 | fbi->flags = FBINFO_FLAG_DEFAULT; | ||
1276 | fbi->pseudo_palette = mx3fbi->pseudo_palette; | ||
1277 | |||
1278 | mutex_init(&mx3fbi->mutex); | ||
1279 | |||
1280 | /* Allocate colormap */ | ||
1281 | ret = fb_alloc_cmap(&fbi->cmap, 16, 0); | ||
1282 | if (ret < 0) { | ||
1283 | framebuffer_release(fbi); | ||
1284 | return NULL; | ||
1285 | } | ||
1286 | |||
1287 | return fbi; | ||
1288 | } | ||
1289 | |||
1290 | static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan) | ||
1291 | { | ||
1292 | struct device *dev = mx3fb->dev; | ||
1293 | struct mx3fb_platform_data *mx3fb_pdata = dev->platform_data; | ||
1294 | const char *name = mx3fb_pdata->name; | ||
1295 | unsigned int irq; | ||
1296 | struct fb_info *fbi; | ||
1297 | struct mx3fb_info *mx3fbi; | ||
1298 | const struct fb_videomode *mode; | ||
1299 | int ret, num_modes; | ||
1300 | |||
1301 | ichan->client = mx3fb; | ||
1302 | irq = ichan->eof_irq; | ||
1303 | |||
1304 | if (ichan->dma_chan.chan_id != IDMAC_SDC_0) | ||
1305 | return -EINVAL; | ||
1306 | |||
1307 | fbi = mx3fb_init_fbinfo(dev, &mx3fb_ops); | ||
1308 | if (!fbi) | ||
1309 | return -ENOMEM; | ||
1310 | |||
1311 | if (!fb_mode) | ||
1312 | fb_mode = name; | ||
1313 | |||
1314 | if (!fb_mode) { | ||
1315 | ret = -EINVAL; | ||
1316 | goto emode; | ||
1317 | } | ||
1318 | |||
1319 | if (mx3fb_pdata->mode && mx3fb_pdata->num_modes) { | ||
1320 | mode = mx3fb_pdata->mode; | ||
1321 | num_modes = mx3fb_pdata->num_modes; | ||
1322 | } else { | ||
1323 | mode = mx3fb_modedb; | ||
1324 | num_modes = ARRAY_SIZE(mx3fb_modedb); | ||
1325 | } | ||
1326 | |||
1327 | if (!fb_find_mode(&fbi->var, fbi, fb_mode, mode, | ||
1328 | num_modes, NULL, default_bpp)) { | ||
1329 | ret = -EBUSY; | ||
1330 | goto emode; | ||
1331 | } | ||
1332 | |||
1333 | fb_videomode_to_modelist(mode, num_modes, &fbi->modelist); | ||
1334 | |||
1335 | /* Default Y virtual size is 2x panel size */ | ||
1336 | fbi->var.yres_virtual = fbi->var.yres * 2; | ||
1337 | |||
1338 | mx3fb->fbi = fbi; | ||
1339 | |||
1340 | /* set Display Interface clock period */ | ||
1341 | mx3fb_write_reg(mx3fb, 0x00100010L, DI_HSP_CLK_PER); | ||
1342 | /* Might need to trigger HSP clock change - see 44.3.3.8.5 */ | ||
1343 | |||
1344 | sdc_set_brightness(mx3fb, 255); | ||
1345 | sdc_set_global_alpha(mx3fb, true, 0xFF); | ||
1346 | sdc_set_color_key(mx3fb, IDMAC_SDC_0, false, 0); | ||
1347 | |||
1348 | mx3fbi = fbi->par; | ||
1349 | mx3fbi->idmac_channel = ichan; | ||
1350 | mx3fbi->ipu_ch = ichan->dma_chan.chan_id; | ||
1351 | mx3fbi->mx3fb = mx3fb; | ||
1352 | mx3fbi->blank = FB_BLANK_NORMAL; | ||
1353 | |||
1354 | init_completion(&mx3fbi->flip_cmpl); | ||
1355 | disable_irq(ichan->eof_irq); | ||
1356 | dev_dbg(mx3fb->dev, "disabling irq %d\n", ichan->eof_irq); | ||
1357 | ret = mx3fb_set_par(fbi); | ||
1358 | if (ret < 0) | ||
1359 | goto esetpar; | ||
1360 | |||
1361 | mx3fb_blank(FB_BLANK_UNBLANK, fbi); | ||
1362 | |||
1363 | dev_info(dev, "mx3fb: fb registered, using mode %s\n", fb_mode); | ||
1364 | |||
1365 | ret = register_framebuffer(fbi); | ||
1366 | if (ret < 0) | ||
1367 | goto erfb; | ||
1368 | |||
1369 | return 0; | ||
1370 | |||
1371 | erfb: | ||
1372 | esetpar: | ||
1373 | emode: | ||
1374 | fb_dealloc_cmap(&fbi->cmap); | ||
1375 | framebuffer_release(fbi); | ||
1376 | |||
1377 | return ret; | ||
1378 | } | ||
1379 | |||
1380 | static bool chan_filter(struct dma_chan *chan, void *arg) | ||
1381 | { | ||
1382 | struct dma_chan_request *rq = arg; | ||
1383 | struct device *dev; | ||
1384 | struct mx3fb_platform_data *mx3fb_pdata; | ||
1385 | |||
1386 | if (!rq) | ||
1387 | return false; | ||
1388 | |||
1389 | dev = rq->mx3fb->dev; | ||
1390 | mx3fb_pdata = dev->platform_data; | ||
1391 | |||
1392 | return rq->id == chan->chan_id && | ||
1393 | mx3fb_pdata->dma_dev == chan->device->dev; | ||
1394 | } | ||
1395 | |||
1396 | static void release_fbi(struct fb_info *fbi) | ||
1397 | { | ||
1398 | mx3fb_unmap_video_memory(fbi); | ||
1399 | |||
1400 | fb_dealloc_cmap(&fbi->cmap); | ||
1401 | |||
1402 | unregister_framebuffer(fbi); | ||
1403 | framebuffer_release(fbi); | ||
1404 | } | ||
1405 | |||
1406 | static int mx3fb_probe(struct platform_device *pdev) | ||
1407 | { | ||
1408 | struct device *dev = &pdev->dev; | ||
1409 | int ret; | ||
1410 | struct resource *sdc_reg; | ||
1411 | struct mx3fb_data *mx3fb; | ||
1412 | dma_cap_mask_t mask; | ||
1413 | struct dma_chan *chan; | ||
1414 | struct dma_chan_request rq; | ||
1415 | |||
1416 | /* | ||
1417 | * Display Interface (DI) and Synchronous Display Controller (SDC) | ||
1418 | * registers | ||
1419 | */ | ||
1420 | sdc_reg = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
1421 | if (!sdc_reg) | ||
1422 | return -EINVAL; | ||
1423 | |||
1424 | mx3fb = kzalloc(sizeof(*mx3fb), GFP_KERNEL); | ||
1425 | if (!mx3fb) | ||
1426 | return -ENOMEM; | ||
1427 | |||
1428 | spin_lock_init(&mx3fb->lock); | ||
1429 | |||
1430 | mx3fb->reg_base = ioremap(sdc_reg->start, resource_size(sdc_reg)); | ||
1431 | if (!mx3fb->reg_base) { | ||
1432 | ret = -ENOMEM; | ||
1433 | goto eremap; | ||
1434 | } | ||
1435 | |||
1436 | pr_debug("Remapped %x to %x at %p\n", sdc_reg->start, sdc_reg->end, | ||
1437 | mx3fb->reg_base); | ||
1438 | |||
1439 | /* IDMAC interface */ | ||
1440 | dmaengine_get(); | ||
1441 | |||
1442 | mx3fb->dev = dev; | ||
1443 | platform_set_drvdata(pdev, mx3fb); | ||
1444 | |||
1445 | rq.mx3fb = mx3fb; | ||
1446 | |||
1447 | dma_cap_zero(mask); | ||
1448 | dma_cap_set(DMA_SLAVE, mask); | ||
1449 | dma_cap_set(DMA_PRIVATE, mask); | ||
1450 | rq.id = IDMAC_SDC_0; | ||
1451 | chan = dma_request_channel(mask, chan_filter, &rq); | ||
1452 | if (!chan) { | ||
1453 | ret = -EBUSY; | ||
1454 | goto ersdc0; | ||
1455 | } | ||
1456 | |||
1457 | ret = init_fb_chan(mx3fb, to_idmac_chan(chan)); | ||
1458 | if (ret < 0) | ||
1459 | goto eisdc0; | ||
1460 | |||
1461 | mx3fb->backlight_level = 255; | ||
1462 | |||
1463 | return 0; | ||
1464 | |||
1465 | eisdc0: | ||
1466 | dma_release_channel(chan); | ||
1467 | ersdc0: | ||
1468 | dmaengine_put(); | ||
1469 | iounmap(mx3fb->reg_base); | ||
1470 | eremap: | ||
1471 | kfree(mx3fb); | ||
1472 | dev_err(dev, "mx3fb: failed to register fb\n"); | ||
1473 | return ret; | ||
1474 | } | ||
1475 | |||
1476 | static int mx3fb_remove(struct platform_device *dev) | ||
1477 | { | ||
1478 | struct mx3fb_data *mx3fb = platform_get_drvdata(dev); | ||
1479 | struct fb_info *fbi = mx3fb->fbi; | ||
1480 | struct mx3fb_info *mx3_fbi = fbi->par; | ||
1481 | struct dma_chan *chan; | ||
1482 | |||
1483 | chan = &mx3_fbi->idmac_channel->dma_chan; | ||
1484 | release_fbi(fbi); | ||
1485 | |||
1486 | dma_release_channel(chan); | ||
1487 | dmaengine_put(); | ||
1488 | |||
1489 | iounmap(mx3fb->reg_base); | ||
1490 | kfree(mx3fb); | ||
1491 | return 0; | ||
1492 | } | ||
1493 | |||
1494 | static struct platform_driver mx3fb_driver = { | ||
1495 | .driver = { | ||
1496 | .name = MX3FB_NAME, | ||
1497 | }, | ||
1498 | .probe = mx3fb_probe, | ||
1499 | .remove = mx3fb_remove, | ||
1500 | .suspend = mx3fb_suspend, | ||
1501 | .resume = mx3fb_resume, | ||
1502 | }; | ||
1503 | |||
1504 | /* | ||
1505 | * Parse user specified options (`video=mx3fb:') | ||
1506 | * example: | ||
1507 | * video=mx3fb:bpp=16 | ||
1508 | */ | ||
1509 | static int mx3fb_setup(void) | ||
1510 | { | ||
1511 | #ifndef MODULE | ||
1512 | char *opt, *options = NULL; | ||
1513 | |||
1514 | if (fb_get_options("mx3fb", &options)) | ||
1515 | return -ENODEV; | ||
1516 | |||
1517 | if (!options || !*options) | ||
1518 | return 0; | ||
1519 | |||
1520 | while ((opt = strsep(&options, ",")) != NULL) { | ||
1521 | if (!*opt) | ||
1522 | continue; | ||
1523 | if (!strncmp(opt, "bpp=", 4)) | ||
1524 | default_bpp = simple_strtoul(opt + 4, NULL, 0); | ||
1525 | else | ||
1526 | fb_mode = opt; | ||
1527 | } | ||
1528 | #endif | ||
1529 | |||
1530 | return 0; | ||
1531 | } | ||
1532 | |||
1533 | static int __init mx3fb_init(void) | ||
1534 | { | ||
1535 | int ret = mx3fb_setup(); | ||
1536 | |||
1537 | if (ret < 0) | ||
1538 | return ret; | ||
1539 | |||
1540 | ret = platform_driver_register(&mx3fb_driver); | ||
1541 | return ret; | ||
1542 | } | ||
1543 | |||
1544 | static void __exit mx3fb_exit(void) | ||
1545 | { | ||
1546 | platform_driver_unregister(&mx3fb_driver); | ||
1547 | } | ||
1548 | |||
1549 | module_init(mx3fb_init); | ||
1550 | module_exit(mx3fb_exit); | ||
1551 | |||
1552 | MODULE_AUTHOR("Freescale Semiconductor, Inc."); | ||
1553 | MODULE_DESCRIPTION("MX3 framebuffer driver"); | ||
1554 | MODULE_ALIAS("platform:" MX3FB_NAME); | ||
1555 | MODULE_LICENSE("GPL v2"); | ||
diff --git a/drivers/video/nvidia/nv_i2c.c b/drivers/video/nvidia/nv_i2c.c index 6fd7cb8f9b8e..6aaddb4f6788 100644 --- a/drivers/video/nvidia/nv_i2c.c +++ b/drivers/video/nvidia/nv_i2c.c | |||
@@ -87,7 +87,6 @@ static int nvidia_setup_i2c_bus(struct nvidia_i2c_chan *chan, const char *name, | |||
87 | 87 | ||
88 | strcpy(chan->adapter.name, name); | 88 | strcpy(chan->adapter.name, name); |
89 | chan->adapter.owner = THIS_MODULE; | 89 | chan->adapter.owner = THIS_MODULE; |
90 | chan->adapter.id = I2C_HW_B_NVIDIA; | ||
91 | chan->adapter.class = i2c_class; | 90 | chan->adapter.class = i2c_class; |
92 | chan->adapter.algo_data = &chan->algo; | 91 | chan->adapter.algo_data = &chan->algo; |
93 | chan->adapter.dev.parent = &chan->par->pci_dev->dev; | 92 | chan->adapter.dev.parent = &chan->par->pci_dev->dev; |
diff --git a/drivers/video/omap/lcdc.c b/drivers/video/omap/lcdc.c index 6e2ea7518761..ab3949256677 100644 --- a/drivers/video/omap/lcdc.c +++ b/drivers/video/omap/lcdc.c | |||
@@ -800,14 +800,14 @@ static int omap_lcdc_init(struct omapfb_device *fbdev, int ext_mode, | |||
800 | /* FIXME: | 800 | /* FIXME: |
801 | * According to errata some platforms have a clock rate limitiation | 801 | * According to errata some platforms have a clock rate limitiation |
802 | */ | 802 | */ |
803 | lcdc.lcd_ck = clk_get(NULL, "lcd_ck"); | 803 | lcdc.lcd_ck = clk_get(fbdev->dev, "lcd_ck"); |
804 | if (IS_ERR(lcdc.lcd_ck)) { | 804 | if (IS_ERR(lcdc.lcd_ck)) { |
805 | dev_err(fbdev->dev, "unable to access LCD clock\n"); | 805 | dev_err(fbdev->dev, "unable to access LCD clock\n"); |
806 | r = PTR_ERR(lcdc.lcd_ck); | 806 | r = PTR_ERR(lcdc.lcd_ck); |
807 | goto fail0; | 807 | goto fail0; |
808 | } | 808 | } |
809 | 809 | ||
810 | tc_ck = clk_get(NULL, "tc_ck"); | 810 | tc_ck = clk_get(fbdev->dev, "tc_ck"); |
811 | if (IS_ERR(tc_ck)) { | 811 | if (IS_ERR(tc_ck)) { |
812 | dev_err(fbdev->dev, "unable to access TC clock\n"); | 812 | dev_err(fbdev->dev, "unable to access TC clock\n"); |
813 | r = PTR_ERR(tc_ck); | 813 | r = PTR_ERR(tc_ck); |
diff --git a/drivers/video/ps3fb.c b/drivers/video/ps3fb.c index 38ac805db97d..87f826e4c958 100644 --- a/drivers/video/ps3fb.c +++ b/drivers/video/ps3fb.c | |||
@@ -1006,7 +1006,7 @@ static int ps3fb_xdr_settings(u64 xdr_lpar, struct device *dev) | |||
1006 | __func__, status); | 1006 | __func__, status); |
1007 | return -ENXIO; | 1007 | return -ENXIO; |
1008 | } | 1008 | } |
1009 | dev_dbg(dev, "video:%p ioif:%lx lpar:%lx size:%lx\n", | 1009 | dev_dbg(dev, "video:%p ioif:%lx lpar:%llx size:%lx\n", |
1010 | ps3fb_videomemory.address, GPU_IOIF, xdr_lpar, | 1010 | ps3fb_videomemory.address, GPU_IOIF, xdr_lpar, |
1011 | ps3fb_videomemory.size); | 1011 | ps3fb_videomemory.size); |
1012 | 1012 | ||
@@ -1133,7 +1133,7 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev) | |||
1133 | __func__, status); | 1133 | __func__, status); |
1134 | goto err; | 1134 | goto err; |
1135 | } | 1135 | } |
1136 | dev_dbg(&dev->core, "ddr:lpar:0x%lx\n", ddr_lpar); | 1136 | dev_dbg(&dev->core, "ddr:lpar:0x%llx\n", ddr_lpar); |
1137 | 1137 | ||
1138 | status = lv1_gpu_context_allocate(ps3fb.memory_handle, 0, | 1138 | status = lv1_gpu_context_allocate(ps3fb.memory_handle, 0, |
1139 | &ps3fb.context_handle, | 1139 | &ps3fb.context_handle, |
diff --git a/drivers/video/savage/savagefb-i2c.c b/drivers/video/savage/savagefb-i2c.c index 783d4adffb93..574b29e9f8f2 100644 --- a/drivers/video/savage/savagefb-i2c.c +++ b/drivers/video/savage/savagefb-i2c.c | |||
@@ -137,7 +137,6 @@ static int savage_setup_i2c_bus(struct savagefb_i2c_chan *chan, | |||
137 | if (chan->par) { | 137 | if (chan->par) { |
138 | strcpy(chan->adapter.name, name); | 138 | strcpy(chan->adapter.name, name); |
139 | chan->adapter.owner = THIS_MODULE; | 139 | chan->adapter.owner = THIS_MODULE; |
140 | chan->adapter.id = I2C_HW_B_SAVAGE; | ||
141 | chan->adapter.algo_data = &chan->algo; | 140 | chan->adapter.algo_data = &chan->algo; |
142 | chan->adapter.dev.parent = &chan->par->pcidev->dev; | 141 | chan->adapter.dev.parent = &chan->par->pcidev->dev; |
143 | chan->algo.udelay = 10; | 142 | chan->algo.udelay = 10; |
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index 3efa12f9ee50..09a3d5522b43 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig | |||
@@ -187,10 +187,10 @@ config EP93XX_WATCHDOG | |||
187 | 187 | ||
188 | config OMAP_WATCHDOG | 188 | config OMAP_WATCHDOG |
189 | tristate "OMAP Watchdog" | 189 | tristate "OMAP Watchdog" |
190 | depends on ARCH_OMAP16XX || ARCH_OMAP24XX | 190 | depends on ARCH_OMAP16XX || ARCH_OMAP24XX || ARCH_OMAP34XX |
191 | help | 191 | help |
192 | Support for TI OMAP1610/OMAP1710/OMAP2420 watchdog. Say 'Y' here to | 192 | Support for TI OMAP1610/OMAP1710/OMAP2420/OMAP3430 watchdog. Say 'Y' |
193 | enable the OMAP1610/OMAP1710 watchdog timer. | 193 | here to enable the OMAP1610/OMAP1710/OMAP2420/OMAP3430 watchdog timer. |
194 | 194 | ||
195 | config PNX4008_WATCHDOG | 195 | config PNX4008_WATCHDOG |
196 | tristate "PNX4008 Watchdog" | 196 | tristate "PNX4008 Watchdog" |
diff --git a/drivers/watchdog/at91rm9200_wdt.c b/drivers/watchdog/at91rm9200_wdt.c index 993e5f52afef..5531691f46ea 100644 --- a/drivers/watchdog/at91rm9200_wdt.c +++ b/drivers/watchdog/at91rm9200_wdt.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
14 | #include <linux/fs.h> | 14 | #include <linux/fs.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/io.h> | ||
16 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
17 | #include <linux/miscdevice.h> | 18 | #include <linux/miscdevice.h> |
18 | #include <linux/module.h> | 19 | #include <linux/module.h> |
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c index 8dc7109d61b7..2ba8f95516a0 100644 --- a/drivers/xen/balloon.c +++ b/drivers/xen/balloon.c | |||
@@ -298,6 +298,14 @@ static int decrease_reservation(unsigned long nr_pages) | |||
298 | frame_list[i] = pfn_to_mfn(pfn); | 298 | frame_list[i] = pfn_to_mfn(pfn); |
299 | 299 | ||
300 | scrub_page(page); | 300 | scrub_page(page); |
301 | |||
302 | if (!PageHighMem(page)) { | ||
303 | ret = HYPERVISOR_update_va_mapping( | ||
304 | (unsigned long)__va(pfn << PAGE_SHIFT), | ||
305 | __pte_ma(0), 0); | ||
306 | BUG_ON(ret); | ||
307 | } | ||
308 | |||
301 | } | 309 | } |
302 | 310 | ||
303 | /* Ensure that ballooned highmem pages don't have kmaps. */ | 311 | /* Ensure that ballooned highmem pages don't have kmaps. */ |
diff --git a/drivers/xen/xenfs/xenbus.c b/drivers/xen/xenfs/xenbus.c index 875a4c59c594..a9592d981b10 100644 --- a/drivers/xen/xenfs/xenbus.c +++ b/drivers/xen/xenfs/xenbus.c | |||
@@ -291,7 +291,7 @@ static void watch_fired(struct xenbus_watch *watch, | |||
291 | static int xenbus_write_transaction(unsigned msg_type, | 291 | static int xenbus_write_transaction(unsigned msg_type, |
292 | struct xenbus_file_priv *u) | 292 | struct xenbus_file_priv *u) |
293 | { | 293 | { |
294 | int rc, ret; | 294 | int rc; |
295 | void *reply; | 295 | void *reply; |
296 | struct xenbus_transaction_holder *trans = NULL; | 296 | struct xenbus_transaction_holder *trans = NULL; |
297 | LIST_HEAD(staging_q); | 297 | LIST_HEAD(staging_q); |
@@ -326,15 +326,14 @@ static int xenbus_write_transaction(unsigned msg_type, | |||
326 | } | 326 | } |
327 | 327 | ||
328 | mutex_lock(&u->reply_mutex); | 328 | mutex_lock(&u->reply_mutex); |
329 | ret = queue_reply(&staging_q, &u->u.msg, sizeof(u->u.msg)); | 329 | rc = queue_reply(&staging_q, &u->u.msg, sizeof(u->u.msg)); |
330 | if (!ret) | 330 | if (!rc) |
331 | ret = queue_reply(&staging_q, reply, u->u.msg.len); | 331 | rc = queue_reply(&staging_q, reply, u->u.msg.len); |
332 | if (!ret) { | 332 | if (!rc) { |
333 | list_splice_tail(&staging_q, &u->read_buffers); | 333 | list_splice_tail(&staging_q, &u->read_buffers); |
334 | wake_up(&u->read_waitq); | 334 | wake_up(&u->read_waitq); |
335 | } else { | 335 | } else { |
336 | queue_cleanup(&staging_q); | 336 | queue_cleanup(&staging_q); |
337 | rc = ret; | ||
338 | } | 337 | } |
339 | mutex_unlock(&u->reply_mutex); | 338 | mutex_unlock(&u->reply_mutex); |
340 | 339 | ||
diff --git a/fs/9p/Kconfig b/fs/9p/Kconfig new file mode 100644 index 000000000000..74e0723e90bc --- /dev/null +++ b/fs/9p/Kconfig | |||
@@ -0,0 +1,10 @@ | |||
1 | config 9P_FS | ||
2 | tristate "Plan 9 Resource Sharing Support (9P2000) (Experimental)" | ||
3 | depends on INET && NET_9P && EXPERIMENTAL | ||
4 | help | ||
5 | If you say Y here, you will get experimental support for | ||
6 | Plan 9 resource sharing via the 9P2000 protocol. | ||
7 | |||
8 | See <http://v9fs.sf.net> for more information. | ||
9 | |||
10 | If unsure, say N. | ||
diff --git a/fs/Kconfig b/fs/Kconfig index 51307b0fdf0f..93945dd0b1ae 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
@@ -27,141 +27,8 @@ config FS_MBCACHE | |||
27 | default y if EXT4_FS=y && EXT4_FS_XATTR | 27 | default y if EXT4_FS=y && EXT4_FS_XATTR |
28 | default m if EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR | 28 | default m if EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR |
29 | 29 | ||
30 | config REISERFS_FS | 30 | source "fs/reiserfs/Kconfig" |
31 | tristate "Reiserfs support" | 31 | source "fs/jfs/Kconfig" |
32 | help | ||
33 | Stores not just filenames but the files themselves in a balanced | ||
34 | tree. Uses journalling. | ||
35 | |||
36 | Balanced trees are more efficient than traditional file system | ||
37 | architectural foundations. | ||
38 | |||
39 | In general, ReiserFS is as fast as ext2, but is very efficient with | ||
40 | large directories and small files. Additional patches are needed | ||
41 | for NFS and quotas, please see <http://www.namesys.com/> for links. | ||
42 | |||
43 | It is more easily extended to have features currently found in | ||
44 | database and keyword search systems than block allocation based file | ||
45 | systems are. The next version will be so extended, and will support | ||
46 | plugins consistent with our motto ``It takes more than a license to | ||
47 | make source code open.'' | ||
48 | |||
49 | Read <http://www.namesys.com/> to learn more about reiserfs. | ||
50 | |||
51 | Sponsored by Threshold Networks, Emusic.com, and Bigstorage.com. | ||
52 | |||
53 | If you like it, you can pay us to add new features to it that you | ||
54 | need, buy a support contract, or pay us to port it to another OS. | ||
55 | |||
56 | config REISERFS_CHECK | ||
57 | bool "Enable reiserfs debug mode" | ||
58 | depends on REISERFS_FS | ||
59 | help | ||
60 | If you set this to Y, then ReiserFS will perform every check it can | ||
61 | possibly imagine of its internal consistency throughout its | ||
62 | operation. It will also go substantially slower. More than once we | ||
63 | have forgotten that this was on, and then gone despondent over the | ||
64 | latest benchmarks.:-) Use of this option allows our team to go all | ||
65 | out in checking for consistency when debugging without fear of its | ||
66 | effect on end users. If you are on the verge of sending in a bug | ||
67 | report, say Y and you might get a useful error message. Almost | ||
68 | everyone should say N. | ||
69 | |||
70 | config REISERFS_PROC_INFO | ||
71 | bool "Stats in /proc/fs/reiserfs" | ||
72 | depends on REISERFS_FS && PROC_FS | ||
73 | help | ||
74 | Create under /proc/fs/reiserfs a hierarchy of files, displaying | ||
75 | various ReiserFS statistics and internal data at the expense of | ||
76 | making your kernel or module slightly larger (+8 KB). This also | ||
77 | increases the amount of kernel memory required for each mount. | ||
78 | Almost everyone but ReiserFS developers and people fine-tuning | ||
79 | reiserfs or tracing problems should say N. | ||
80 | |||
81 | config REISERFS_FS_XATTR | ||
82 | bool "ReiserFS extended attributes" | ||
83 | depends on REISERFS_FS | ||
84 | help | ||
85 | Extended attributes are name:value pairs associated with inodes by | ||
86 | the kernel or by users (see the attr(5) manual page, or visit | ||
87 | <http://acl.bestbits.at/> for details). | ||
88 | |||
89 | If unsure, say N. | ||
90 | |||
91 | config REISERFS_FS_POSIX_ACL | ||
92 | bool "ReiserFS POSIX Access Control Lists" | ||
93 | depends on REISERFS_FS_XATTR | ||
94 | select FS_POSIX_ACL | ||
95 | help | ||
96 | Posix Access Control Lists (ACLs) support permissions for users and | ||
97 | groups beyond the owner/group/world scheme. | ||
98 | |||
99 | To learn more about Access Control Lists, visit the Posix ACLs for | ||
100 | Linux website <http://acl.bestbits.at/>. | ||
101 | |||
102 | If you don't know what Access Control Lists are, say N | ||
103 | |||
104 | config REISERFS_FS_SECURITY | ||
105 | bool "ReiserFS Security Labels" | ||
106 | depends on REISERFS_FS_XATTR | ||
107 | help | ||
108 | Security labels support alternative access control models | ||
109 | implemented by security modules like SELinux. This option | ||
110 | enables an extended attribute handler for file security | ||
111 | labels in the ReiserFS filesystem. | ||
112 | |||
113 | If you are not using a security module that requires using | ||
114 | extended attributes for file security labels, say N. | ||
115 | |||
116 | config JFS_FS | ||
117 | tristate "JFS filesystem support" | ||
118 | select NLS | ||
119 | help | ||
120 | This is a port of IBM's Journaled Filesystem . More information is | ||
121 | available in the file <file:Documentation/filesystems/jfs.txt>. | ||
122 | |||
123 | If you do not intend to use the JFS filesystem, say N. | ||
124 | |||
125 | config JFS_POSIX_ACL | ||
126 | bool "JFS POSIX Access Control Lists" | ||
127 | depends on JFS_FS | ||
128 | select FS_POSIX_ACL | ||
129 | help | ||
130 | Posix Access Control Lists (ACLs) support permissions for users and | ||
131 | groups beyond the owner/group/world scheme. | ||
132 | |||
133 | To learn more about Access Control Lists, visit the Posix ACLs for | ||
134 | Linux website <http://acl.bestbits.at/>. | ||
135 | |||
136 | If you don't know what Access Control Lists are, say N | ||
137 | |||
138 | config JFS_SECURITY | ||
139 | bool "JFS Security Labels" | ||
140 | depends on JFS_FS | ||
141 | help | ||
142 | Security labels support alternative access control models | ||
143 | implemented by security modules like SELinux. This option | ||
144 | enables an extended attribute handler for file security | ||
145 | labels in the jfs filesystem. | ||
146 | |||
147 | If you are not using a security module that requires using | ||
148 | extended attributes for file security labels, say N. | ||
149 | |||
150 | config JFS_DEBUG | ||
151 | bool "JFS debugging" | ||
152 | depends on JFS_FS | ||
153 | help | ||
154 | If you are experiencing any problems with the JFS filesystem, say | ||
155 | Y here. This will result in additional debugging messages to be | ||
156 | written to the system log. Under normal circumstances, this | ||
157 | results in very little overhead. | ||
158 | |||
159 | config JFS_STATISTICS | ||
160 | bool "JFS statistics" | ||
161 | depends on JFS_FS | ||
162 | help | ||
163 | Enabling this option will cause statistics from the JFS file system | ||
164 | to be made available to the user in the /proc/fs/jfs/ directory. | ||
165 | 32 | ||
166 | config FS_POSIX_ACL | 33 | config FS_POSIX_ACL |
167 | # Posix ACL utility routines (for now, only ext2/ext3/jfs/reiserfs/nfs4) | 34 | # Posix ACL utility routines (for now, only ext2/ext3/jfs/reiserfs/nfs4) |
@@ -182,111 +49,8 @@ config FILE_LOCKING | |||
182 | 49 | ||
183 | source "fs/xfs/Kconfig" | 50 | source "fs/xfs/Kconfig" |
184 | source "fs/gfs2/Kconfig" | 51 | source "fs/gfs2/Kconfig" |
185 | 52 | source "fs/ocfs2/Kconfig" | |
186 | config OCFS2_FS | 53 | source "fs/btrfs/Kconfig" |
187 | tristate "OCFS2 file system support" | ||
188 | depends on NET && SYSFS | ||
189 | select CONFIGFS_FS | ||
190 | select JBD2 | ||
191 | select CRC32 | ||
192 | select QUOTA | ||
193 | select QUOTA_TREE | ||
194 | help | ||
195 | OCFS2 is a general purpose extent based shared disk cluster file | ||
196 | system with many similarities to ext3. It supports 64 bit inode | ||
197 | numbers, and has automatically extending metadata groups which may | ||
198 | also make it attractive for non-clustered use. | ||
199 | |||
200 | You'll want to install the ocfs2-tools package in order to at least | ||
201 | get "mount.ocfs2". | ||
202 | |||
203 | Project web page: http://oss.oracle.com/projects/ocfs2 | ||
204 | Tools web page: http://oss.oracle.com/projects/ocfs2-tools | ||
205 | OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ | ||
206 | |||
207 | For more information on OCFS2, see the file | ||
208 | <file:Documentation/filesystems/ocfs2.txt>. | ||
209 | |||
210 | config OCFS2_FS_O2CB | ||
211 | tristate "O2CB Kernelspace Clustering" | ||
212 | depends on OCFS2_FS | ||
213 | default y | ||
214 | help | ||
215 | OCFS2 includes a simple kernelspace clustering package, the OCFS2 | ||
216 | Cluster Base. It only requires a very small userspace component | ||
217 | to configure it. This comes with the standard ocfs2-tools package. | ||
218 | O2CB is limited to maintaining a cluster for OCFS2 file systems. | ||
219 | It cannot manage any other cluster applications. | ||
220 | |||
221 | It is always safe to say Y here, as the clustering method is | ||
222 | run-time selectable. | ||
223 | |||
224 | config OCFS2_FS_USERSPACE_CLUSTER | ||
225 | tristate "OCFS2 Userspace Clustering" | ||
226 | depends on OCFS2_FS && DLM | ||
227 | default y | ||
228 | help | ||
229 | This option will allow OCFS2 to use userspace clustering services | ||
230 | in conjunction with the DLM in fs/dlm. If you are using a | ||
231 | userspace cluster manager, say Y here. | ||
232 | |||
233 | It is safe to say Y, as the clustering method is run-time | ||
234 | selectable. | ||
235 | |||
236 | config OCFS2_FS_STATS | ||
237 | bool "OCFS2 statistics" | ||
238 | depends on OCFS2_FS | ||
239 | default y | ||
240 | help | ||
241 | This option allows some fs statistics to be captured. Enabling | ||
242 | this option may increase the memory consumption. | ||
243 | |||
244 | config OCFS2_DEBUG_MASKLOG | ||
245 | bool "OCFS2 logging support" | ||
246 | depends on OCFS2_FS | ||
247 | default y | ||
248 | help | ||
249 | The ocfs2 filesystem has an extensive logging system. The system | ||
250 | allows selection of events to log via files in /sys/o2cb/logmask/. | ||
251 | This option will enlarge your kernel, but it allows debugging of | ||
252 | ocfs2 filesystem issues. | ||
253 | |||
254 | config OCFS2_DEBUG_FS | ||
255 | bool "OCFS2 expensive checks" | ||
256 | depends on OCFS2_FS | ||
257 | default n | ||
258 | help | ||
259 | This option will enable expensive consistency checks. Enable | ||
260 | this option for debugging only as it is likely to decrease | ||
261 | performance of the filesystem. | ||
262 | |||
263 | config OCFS2_FS_POSIX_ACL | ||
264 | bool "OCFS2 POSIX Access Control Lists" | ||
265 | depends on OCFS2_FS | ||
266 | select FS_POSIX_ACL | ||
267 | default n | ||
268 | help | ||
269 | Posix Access Control Lists (ACLs) support permissions for users and | ||
270 | groups beyond the owner/group/world scheme. | ||
271 | |||
272 | config BTRFS_FS | ||
273 | tristate "Btrfs filesystem (EXPERIMENTAL) Unstable disk format" | ||
274 | depends on EXPERIMENTAL | ||
275 | select LIBCRC32C | ||
276 | select ZLIB_INFLATE | ||
277 | select ZLIB_DEFLATE | ||
278 | help | ||
279 | Btrfs is a new filesystem with extents, writable snapshotting, | ||
280 | support for multiple devices and many more features. | ||
281 | |||
282 | Btrfs is highly experimental, and THE DISK FORMAT IS NOT YET | ||
283 | FINALIZED. You should say N here unless you are interested in | ||
284 | testing Btrfs with non-critical data. | ||
285 | |||
286 | To compile this file system support as a module, choose M here. The | ||
287 | module will be called btrfs. | ||
288 | |||
289 | If unsure, say N. | ||
290 | 54 | ||
291 | endif # BLOCK | 55 | endif # BLOCK |
292 | 56 | ||
@@ -348,64 +112,9 @@ config QUOTACTL | |||
348 | depends on XFS_QUOTA || QUOTA | 112 | depends on XFS_QUOTA || QUOTA |
349 | default y | 113 | default y |
350 | 114 | ||
351 | config AUTOFS_FS | 115 | source "fs/autofs/Kconfig" |
352 | tristate "Kernel automounter support" | 116 | source "fs/autofs4/Kconfig" |
353 | help | 117 | source "fs/fuse/Kconfig" |
354 | The automounter is a tool to automatically mount remote file systems | ||
355 | on demand. This implementation is partially kernel-based to reduce | ||
356 | overhead in the already-mounted case; this is unlike the BSD | ||
357 | automounter (amd), which is a pure user space daemon. | ||
358 | |||
359 | To use the automounter you need the user-space tools from the autofs | ||
360 | package; you can find the location in <file:Documentation/Changes>. | ||
361 | You also want to answer Y to "NFS file system support", below. | ||
362 | |||
363 | If you want to use the newer version of the automounter with more | ||
364 | features, say N here and say Y to "Kernel automounter v4 support", | ||
365 | below. | ||
366 | |||
367 | To compile this support as a module, choose M here: the module will be | ||
368 | called autofs. | ||
369 | |||
370 | If you are not a part of a fairly large, distributed network, you | ||
371 | probably do not need an automounter, and can say N here. | ||
372 | |||
373 | config AUTOFS4_FS | ||
374 | tristate "Kernel automounter version 4 support (also supports v3)" | ||
375 | help | ||
376 | The automounter is a tool to automatically mount remote file systems | ||
377 | on demand. This implementation is partially kernel-based to reduce | ||
378 | overhead in the already-mounted case; this is unlike the BSD | ||
379 | automounter (amd), which is a pure user space daemon. | ||
380 | |||
381 | To use the automounter you need the user-space tools from | ||
382 | <ftp://ftp.kernel.org/pub/linux/daemons/autofs/v4/>; you also | ||
383 | want to answer Y to "NFS file system support", below. | ||
384 | |||
385 | To compile this support as a module, choose M here: the module will be | ||
386 | called autofs4. You will need to add "alias autofs autofs4" to your | ||
387 | modules configuration file. | ||
388 | |||
389 | If you are not a part of a fairly large, distributed network or | ||
390 | don't have a laptop which needs to dynamically reconfigure to the | ||
391 | local network, you probably do not need an automounter, and can say | ||
392 | N here. | ||
393 | |||
394 | config FUSE_FS | ||
395 | tristate "FUSE (Filesystem in Userspace) support" | ||
396 | help | ||
397 | With FUSE it is possible to implement a fully functional filesystem | ||
398 | in a userspace program. | ||
399 | |||
400 | There's also companion library: libfuse. This library along with | ||
401 | utilities is available from the FUSE homepage: | ||
402 | <http://fuse.sourceforge.net/> | ||
403 | |||
404 | See <file:Documentation/filesystems/fuse.txt> for more information. | ||
405 | See <file:Documentation/Changes> for needed library/utility version. | ||
406 | |||
407 | If you want to develop a userspace FS, or if you want to use | ||
408 | a filesystem based on FUSE, answer Y or M. | ||
409 | 118 | ||
410 | config GENERIC_ACL | 119 | config GENERIC_ACL |
411 | bool | 120 | bool |
@@ -414,64 +123,8 @@ config GENERIC_ACL | |||
414 | if BLOCK | 123 | if BLOCK |
415 | menu "CD-ROM/DVD Filesystems" | 124 | menu "CD-ROM/DVD Filesystems" |
416 | 125 | ||
417 | config ISO9660_FS | 126 | source "fs/isofs/Kconfig" |
418 | tristate "ISO 9660 CDROM file system support" | 127 | source "fs/udf/Kconfig" |
419 | help | ||
420 | This is the standard file system used on CD-ROMs. It was previously | ||
421 | known as "High Sierra File System" and is called "hsfs" on other | ||
422 | Unix systems. The so-called Rock-Ridge extensions which allow for | ||
423 | long Unix filenames and symbolic links are also supported by this | ||
424 | driver. If you have a CD-ROM drive and want to do more with it than | ||
425 | just listen to audio CDs and watch its LEDs, say Y (and read | ||
426 | <file:Documentation/filesystems/isofs.txt> and the CD-ROM-HOWTO, | ||
427 | available from <http://www.tldp.org/docs.html#howto>), thereby | ||
428 | enlarging your kernel by about 27 KB; otherwise say N. | ||
429 | |||
430 | To compile this file system support as a module, choose M here: the | ||
431 | module will be called isofs. | ||
432 | |||
433 | config JOLIET | ||
434 | bool "Microsoft Joliet CDROM extensions" | ||
435 | depends on ISO9660_FS | ||
436 | select NLS | ||
437 | help | ||
438 | Joliet is a Microsoft extension for the ISO 9660 CD-ROM file system | ||
439 | which allows for long filenames in unicode format (unicode is the | ||
440 | new 16 bit character code, successor to ASCII, which encodes the | ||
441 | characters of almost all languages of the world; see | ||
442 | <http://www.unicode.org/> for more information). Say Y here if you | ||
443 | want to be able to read Joliet CD-ROMs under Linux. | ||
444 | |||
445 | config ZISOFS | ||
446 | bool "Transparent decompression extension" | ||
447 | depends on ISO9660_FS | ||
448 | select ZLIB_INFLATE | ||
449 | help | ||
450 | This is a Linux-specific extension to RockRidge which lets you store | ||
451 | data in compressed form on a CD-ROM and have it transparently | ||
452 | decompressed when the CD-ROM is accessed. See | ||
453 | <http://www.kernel.org/pub/linux/utils/fs/zisofs/> for the tools | ||
454 | necessary to create such a filesystem. Say Y here if you want to be | ||
455 | able to read such compressed CD-ROMs. | ||
456 | |||
457 | config UDF_FS | ||
458 | tristate "UDF file system support" | ||
459 | select CRC_ITU_T | ||
460 | help | ||
461 | This is the new file system used on some CD-ROMs and DVDs. Say Y if | ||
462 | you intend to mount DVD discs or CDRW's written in packet mode, or | ||
463 | if written to by other UDF utilities, such as DirectCD. | ||
464 | Please read <file:Documentation/filesystems/udf.txt>. | ||
465 | |||
466 | To compile this file system support as a module, choose M here: the | ||
467 | module will be called udf. | ||
468 | |||
469 | If unsure, say N. | ||
470 | |||
471 | config UDF_NLS | ||
472 | bool | ||
473 | default y | ||
474 | depends on (UDF_FS=m && NLS) || (UDF_FS=y && NLS=y) | ||
475 | 128 | ||
476 | endmenu | 129 | endmenu |
477 | endif # BLOCK | 130 | endif # BLOCK |
@@ -479,182 +132,8 @@ endif # BLOCK | |||
479 | if BLOCK | 132 | if BLOCK |
480 | menu "DOS/FAT/NT Filesystems" | 133 | menu "DOS/FAT/NT Filesystems" |
481 | 134 | ||
482 | config FAT_FS | 135 | source "fs/fat/Kconfig" |
483 | tristate | 136 | source "fs/ntfs/Kconfig" |
484 | select NLS | ||
485 | help | ||
486 | If you want to use one of the FAT-based file systems (the MS-DOS and | ||
487 | VFAT (Windows 95) file systems), then you must say Y or M here | ||
488 | to include FAT support. You will then be able to mount partitions or | ||
489 | diskettes with FAT-based file systems and transparently access the | ||
490 | files on them, i.e. MSDOS files will look and behave just like all | ||
491 | other Unix files. | ||
492 | |||
493 | This FAT support is not a file system in itself, it only provides | ||
494 | the foundation for the other file systems. You will have to say Y or | ||
495 | M to at least one of "MSDOS fs support" or "VFAT fs support" in | ||
496 | order to make use of it. | ||
497 | |||
498 | Another way to read and write MSDOS floppies and hard drive | ||
499 | partitions from within Linux (but not transparently) is with the | ||
500 | mtools ("man mtools") program suite. You don't need to say Y here in | ||
501 | order to do that. | ||
502 | |||
503 | If you need to move large files on floppies between a DOS and a | ||
504 | Linux box, say Y here, mount the floppy under Linux with an MSDOS | ||
505 | file system and use GNU tar's M option. GNU tar is a program | ||
506 | available for Unix and DOS ("man tar" or "info tar"). | ||
507 | |||
508 | The FAT support will enlarge your kernel by about 37 KB. If unsure, | ||
509 | say Y. | ||
510 | |||
511 | To compile this as a module, choose M here: the module will be called | ||
512 | fat. Note that if you compile the FAT support as a module, you | ||
513 | cannot compile any of the FAT-based file systems into the kernel | ||
514 | -- they will have to be modules as well. | ||
515 | |||
516 | config MSDOS_FS | ||
517 | tristate "MSDOS fs support" | ||
518 | select FAT_FS | ||
519 | help | ||
520 | This allows you to mount MSDOS partitions of your hard drive (unless | ||
521 | they are compressed; to access compressed MSDOS partitions under | ||
522 | Linux, you can either use the DOS emulator DOSEMU, described in the | ||
523 | DOSEMU-HOWTO, available from | ||
524 | <http://www.tldp.org/docs.html#howto>, or try dmsdosfs in | ||
525 | <ftp://ibiblio.org/pub/Linux/system/filesystems/dosfs/>. If you | ||
526 | intend to use dosemu with a non-compressed MSDOS partition, say Y | ||
527 | here) and MSDOS floppies. This means that file access becomes | ||
528 | transparent, i.e. the MSDOS files look and behave just like all | ||
529 | other Unix files. | ||
530 | |||
531 | If you have Windows 95 or Windows NT installed on your MSDOS | ||
532 | partitions, you should use the VFAT file system (say Y to "VFAT fs | ||
533 | support" below), or you will not be able to see the long filenames | ||
534 | generated by Windows 95 / Windows NT. | ||
535 | |||
536 | This option will enlarge your kernel by about 7 KB. If unsure, | ||
537 | answer Y. This will only work if you said Y to "DOS FAT fs support" | ||
538 | as well. To compile this as a module, choose M here: the module will | ||
539 | be called msdos. | ||
540 | |||
541 | config VFAT_FS | ||
542 | tristate "VFAT (Windows-95) fs support" | ||
543 | select FAT_FS | ||
544 | help | ||
545 | This option provides support for normal Windows file systems with | ||
546 | long filenames. That includes non-compressed FAT-based file systems | ||
547 | used by Windows 95, Windows 98, Windows NT 4.0, and the Unix | ||
548 | programs from the mtools package. | ||
549 | |||
550 | The VFAT support enlarges your kernel by about 10 KB and it only | ||
551 | works if you said Y to the "DOS FAT fs support" above. Please read | ||
552 | the file <file:Documentation/filesystems/vfat.txt> for details. If | ||
553 | unsure, say Y. | ||
554 | |||
555 | To compile this as a module, choose M here: the module will be called | ||
556 | vfat. | ||
557 | |||
558 | config FAT_DEFAULT_CODEPAGE | ||
559 | int "Default codepage for FAT" | ||
560 | depends on MSDOS_FS || VFAT_FS | ||
561 | default 437 | ||
562 | help | ||
563 | This option should be set to the codepage of your FAT filesystems. | ||
564 | It can be overridden with the "codepage" mount option. | ||
565 | See <file:Documentation/filesystems/vfat.txt> for more information. | ||
566 | |||
567 | config FAT_DEFAULT_IOCHARSET | ||
568 | string "Default iocharset for FAT" | ||
569 | depends on VFAT_FS | ||
570 | default "iso8859-1" | ||
571 | help | ||
572 | Set this to the default input/output character set you'd | ||
573 | like FAT to use. It should probably match the character set | ||
574 | that most of your FAT filesystems use, and can be overridden | ||
575 | with the "iocharset" mount option for FAT filesystems. | ||
576 | Note that "utf8" is not recommended for FAT filesystems. | ||
577 | If unsure, you shouldn't set "utf8" here. | ||
578 | See <file:Documentation/filesystems/vfat.txt> for more information. | ||
579 | |||
580 | config NTFS_FS | ||
581 | tristate "NTFS file system support" | ||
582 | select NLS | ||
583 | help | ||
584 | NTFS is the file system of Microsoft Windows NT, 2000, XP and 2003. | ||
585 | |||
586 | Saying Y or M here enables read support. There is partial, but | ||
587 | safe, write support available. For write support you must also | ||
588 | say Y to "NTFS write support" below. | ||
589 | |||
590 | There are also a number of user-space tools available, called | ||
591 | ntfsprogs. These include ntfsundelete and ntfsresize, that work | ||
592 | without NTFS support enabled in the kernel. | ||
593 | |||
594 | This is a rewrite from scratch of Linux NTFS support and replaced | ||
595 | the old NTFS code starting with Linux 2.5.11. A backport to | ||
596 | the Linux 2.4 kernel series is separately available as a patch | ||
597 | from the project web site. | ||
598 | |||
599 | For more information see <file:Documentation/filesystems/ntfs.txt> | ||
600 | and <http://www.linux-ntfs.org/>. | ||
601 | |||
602 | To compile this file system support as a module, choose M here: the | ||
603 | module will be called ntfs. | ||
604 | |||
605 | If you are not using Windows NT, 2000, XP or 2003 in addition to | ||
606 | Linux on your computer it is safe to say N. | ||
607 | |||
608 | config NTFS_DEBUG | ||
609 | bool "NTFS debugging support" | ||
610 | depends on NTFS_FS | ||
611 | help | ||
612 | If you are experiencing any problems with the NTFS file system, say | ||
613 | Y here. This will result in additional consistency checks to be | ||
614 | performed by the driver as well as additional debugging messages to | ||
615 | be written to the system log. Note that debugging messages are | ||
616 | disabled by default. To enable them, supply the option debug_msgs=1 | ||
617 | at the kernel command line when booting the kernel or as an option | ||
618 | to insmod when loading the ntfs module. Once the driver is active, | ||
619 | you can enable debugging messages by doing (as root): | ||
620 | echo 1 > /proc/sys/fs/ntfs-debug | ||
621 | Replacing the "1" with "0" would disable debug messages. | ||
622 | |||
623 | If you leave debugging messages disabled, this results in little | ||
624 | overhead, but enabling debug messages results in very significant | ||
625 | slowdown of the system. | ||
626 | |||
627 | When reporting bugs, please try to have available a full dump of | ||
628 | debugging messages while the misbehaviour was occurring. | ||
629 | |||
630 | config NTFS_RW | ||
631 | bool "NTFS write support" | ||
632 | depends on NTFS_FS | ||
633 | help | ||
634 | This enables the partial, but safe, write support in the NTFS driver. | ||
635 | |||
636 | The only supported operation is overwriting existing files, without | ||
637 | changing the file length. No file or directory creation, deletion or | ||
638 | renaming is possible. Note only non-resident files can be written to | ||
639 | so you may find that some very small files (<500 bytes or so) cannot | ||
640 | be written to. | ||
641 | |||
642 | While we cannot guarantee that it will not damage any data, we have | ||
643 | so far not received a single report where the driver would have | ||
644 | damaged someones data so we assume it is perfectly safe to use. | ||
645 | |||
646 | Note: While write support is safe in this version (a rewrite from | ||
647 | scratch of the NTFS support), it should be noted that the old NTFS | ||
648 | write support, included in Linux 2.5.10 and before (since 1997), | ||
649 | is not safe. | ||
650 | |||
651 | This is currently useful with TopologiLinux. TopologiLinux is run | ||
652 | on top of any DOS/Microsoft Windows system without partitioning your | ||
653 | hard disk. Unlike other Linux distributions TopologiLinux does not | ||
654 | need its own partition. For more information see | ||
655 | <http://topologi-linux.sourceforge.net/> | ||
656 | |||
657 | It is perfectly safe to say N here. | ||
658 | 137 | ||
659 | endmenu | 138 | endmenu |
660 | endif # BLOCK | 139 | endif # BLOCK |
@@ -662,30 +141,7 @@ endif # BLOCK | |||
662 | menu "Pseudo filesystems" | 141 | menu "Pseudo filesystems" |
663 | 142 | ||
664 | source "fs/proc/Kconfig" | 143 | source "fs/proc/Kconfig" |
665 | 144 | source "fs/sysfs/Kconfig" | |
666 | config SYSFS | ||
667 | bool "sysfs file system support" if EMBEDDED | ||
668 | default y | ||
669 | help | ||
670 | The sysfs filesystem is a virtual filesystem that the kernel uses to | ||
671 | export internal kernel objects, their attributes, and their | ||
672 | relationships to one another. | ||
673 | |||
674 | Users can use sysfs to ascertain useful information about the running | ||
675 | kernel, such as the devices the kernel has discovered on each bus and | ||
676 | which driver each is bound to. sysfs can also be used to tune devices | ||
677 | and other kernel subsystems. | ||
678 | |||
679 | Some system agents rely on the information in sysfs to operate. | ||
680 | /sbin/hotplug uses device and object attributes in sysfs to assist in | ||
681 | delegating policy decisions, like persistently naming devices. | ||
682 | |||
683 | sysfs is currently used by the block subsystem to mount the root | ||
684 | partition. If sysfs is disabled you must specify the boot device on | ||
685 | the kernel boot command line via its major and minor numbers. For | ||
686 | example, "root=03:01" for /dev/hda1. | ||
687 | |||
688 | Designers of embedded systems may wish to say N here to conserve space. | ||
689 | 145 | ||
690 | config TMPFS | 146 | config TMPFS |
691 | bool "Virtual memory file system support (former shm fs)" | 147 | bool "Virtual memory file system support (former shm fs)" |
@@ -726,17 +182,7 @@ config HUGETLBFS | |||
726 | config HUGETLB_PAGE | 182 | config HUGETLB_PAGE |
727 | def_bool HUGETLBFS | 183 | def_bool HUGETLBFS |
728 | 184 | ||
729 | config CONFIGFS_FS | 185 | source "fs/configfs/Kconfig" |
730 | tristate "Userspace-driven configuration filesystem" | ||
731 | depends on SYSFS | ||
732 | help | ||
733 | configfs is a ram-based filesystem that provides the converse | ||
734 | of sysfs's functionality. Where sysfs is a filesystem-based | ||
735 | view of kernel objects, configfs is a filesystem-based manager | ||
736 | of kernel objects, or config_items. | ||
737 | |||
738 | Both sysfs and configfs can and should exist together on the | ||
739 | same system. One is not a replacement for the other. | ||
740 | 186 | ||
741 | endmenu | 187 | endmenu |
742 | 188 | ||
@@ -755,425 +201,27 @@ menuconfig MISC_FILESYSTEMS | |||
755 | 201 | ||
756 | if MISC_FILESYSTEMS | 202 | if MISC_FILESYSTEMS |
757 | 203 | ||
758 | config ADFS_FS | 204 | source "fs/adfs/Kconfig" |
759 | tristate "ADFS file system support (EXPERIMENTAL)" | 205 | source "fs/affs/Kconfig" |
760 | depends on BLOCK && EXPERIMENTAL | 206 | source "fs/ecryptfs/Kconfig" |
761 | help | 207 | source "fs/hfs/Kconfig" |
762 | The Acorn Disc Filing System is the standard file system of the | 208 | source "fs/hfsplus/Kconfig" |
763 | RiscOS operating system which runs on Acorn's ARM-based Risc PC | 209 | source "fs/befs/Kconfig" |
764 | systems and the Acorn Archimedes range of machines. If you say Y | 210 | source "fs/bfs/Kconfig" |
765 | here, Linux will be able to read from ADFS partitions on hard drives | 211 | source "fs/efs/Kconfig" |
766 | and from ADFS-formatted floppy discs. If you also want to be able to | ||
767 | write to those devices, say Y to "ADFS write support" below. | ||
768 | |||
769 | The ADFS partition should be the first partition (i.e., | ||
770 | /dev/[hs]d?1) on each of your drives. Please read the file | ||
771 | <file:Documentation/filesystems/adfs.txt> for further details. | ||
772 | |||
773 | To compile this code as a module, choose M here: the module will be | ||
774 | called adfs. | ||
775 | |||
776 | If unsure, say N. | ||
777 | |||
778 | config ADFS_FS_RW | ||
779 | bool "ADFS write support (DANGEROUS)" | ||
780 | depends on ADFS_FS | ||
781 | help | ||
782 | If you say Y here, you will be able to write to ADFS partitions on | ||
783 | hard drives and ADFS-formatted floppy disks. This is experimental | ||
784 | codes, so if you're unsure, say N. | ||
785 | |||
786 | config AFFS_FS | ||
787 | tristate "Amiga FFS file system support (EXPERIMENTAL)" | ||
788 | depends on BLOCK && EXPERIMENTAL | ||
789 | help | ||
790 | The Fast File System (FFS) is the common file system used on hard | ||
791 | disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20). Say Y | ||
792 | if you want to be able to read and write files from and to an Amiga | ||
793 | FFS partition on your hard drive. Amiga floppies however cannot be | ||
794 | read with this driver due to an incompatibility of the floppy | ||
795 | controller used in an Amiga and the standard floppy controller in | ||
796 | PCs and workstations. Read <file:Documentation/filesystems/affs.txt> | ||
797 | and <file:fs/affs/Changes>. | ||
798 | |||
799 | With this driver you can also mount disk files used by Bernd | ||
800 | Schmidt's Un*X Amiga Emulator | ||
801 | (<http://www.freiburg.linux.de/~uae/>). | ||
802 | If you want to do this, you will also need to say Y or M to "Loop | ||
803 | device support", above. | ||
804 | |||
805 | To compile this file system support as a module, choose M here: the | ||
806 | module will be called affs. If unsure, say N. | ||
807 | |||
808 | config ECRYPT_FS | ||
809 | tristate "eCrypt filesystem layer support (EXPERIMENTAL)" | ||
810 | depends on EXPERIMENTAL && KEYS && CRYPTO && NET | ||
811 | help | ||
812 | Encrypted filesystem that operates on the VFS layer. See | ||
813 | <file:Documentation/filesystems/ecryptfs.txt> to learn more about | ||
814 | eCryptfs. Userspace components are required and can be | ||
815 | obtained from <http://ecryptfs.sf.net>. | ||
816 | |||
817 | To compile this file system support as a module, choose M here: the | ||
818 | module will be called ecryptfs. | ||
819 | |||
820 | config HFS_FS | ||
821 | tristate "Apple Macintosh file system support (EXPERIMENTAL)" | ||
822 | depends on BLOCK && EXPERIMENTAL | ||
823 | select NLS | ||
824 | help | ||
825 | If you say Y here, you will be able to mount Macintosh-formatted | ||
826 | floppy disks and hard drive partitions with full read-write access. | ||
827 | Please read <file:Documentation/filesystems/hfs.txt> to learn about | ||
828 | the available mount options. | ||
829 | |||
830 | To compile this file system support as a module, choose M here: the | ||
831 | module will be called hfs. | ||
832 | |||
833 | config HFSPLUS_FS | ||
834 | tristate "Apple Extended HFS file system support" | ||
835 | depends on BLOCK | ||
836 | select NLS | ||
837 | select NLS_UTF8 | ||
838 | help | ||
839 | If you say Y here, you will be able to mount extended format | ||
840 | Macintosh-formatted hard drive partitions with full read-write access. | ||
841 | |||
842 | This file system is often called HFS+ and was introduced with | ||
843 | MacOS 8. It includes all Mac specific filesystem data such as | ||
844 | data forks and creator codes, but it also has several UNIX | ||
845 | style features such as file ownership and permissions. | ||
846 | |||
847 | config BEFS_FS | ||
848 | tristate "BeOS file system (BeFS) support (read only) (EXPERIMENTAL)" | ||
849 | depends on BLOCK && EXPERIMENTAL | ||
850 | select NLS | ||
851 | help | ||
852 | The BeOS File System (BeFS) is the native file system of Be, Inc's | ||
853 | BeOS. Notable features include support for arbitrary attributes | ||
854 | on files and directories, and database-like indices on selected | ||
855 | attributes. (Also note that this driver doesn't make those features | ||
856 | available at this time). It is a 64 bit filesystem, so it supports | ||
857 | extremely large volumes and files. | ||
858 | |||
859 | If you use this filesystem, you should also say Y to at least one | ||
860 | of the NLS (native language support) options below. | ||
861 | |||
862 | If you don't know what this is about, say N. | ||
863 | |||
864 | To compile this as a module, choose M here: the module will be | ||
865 | called befs. | ||
866 | |||
867 | config BEFS_DEBUG | ||
868 | bool "Debug BeFS" | ||
869 | depends on BEFS_FS | ||
870 | help | ||
871 | If you say Y here, you can use the 'debug' mount option to enable | ||
872 | debugging output from the driver. | ||
873 | |||
874 | config BFS_FS | ||
875 | tristate "BFS file system support (EXPERIMENTAL)" | ||
876 | depends on BLOCK && EXPERIMENTAL | ||
877 | help | ||
878 | Boot File System (BFS) is a file system used under SCO UnixWare to | ||
879 | allow the bootloader access to the kernel image and other important | ||
880 | files during the boot process. It is usually mounted under /stand | ||
881 | and corresponds to the slice marked as "STAND" in the UnixWare | ||
882 | partition. You should say Y if you want to read or write the files | ||
883 | on your /stand slice from within Linux. You then also need to say Y | ||
884 | to "UnixWare slices support", below. More information about the BFS | ||
885 | file system is contained in the file | ||
886 | <file:Documentation/filesystems/bfs.txt>. | ||
887 | |||
888 | If you don't know what this is about, say N. | ||
889 | |||
890 | To compile this as a module, choose M here: the module will be called | ||
891 | bfs. Note that the file system of your root partition (the one | ||
892 | containing the directory /) cannot be compiled as a module. | ||
893 | |||
894 | |||
895 | |||
896 | config EFS_FS | ||
897 | tristate "EFS file system support (read only) (EXPERIMENTAL)" | ||
898 | depends on BLOCK && EXPERIMENTAL | ||
899 | help | ||
900 | EFS is an older file system used for non-ISO9660 CD-ROMs and hard | ||
901 | disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer | ||
902 | uses the XFS file system for hard disk partitions however). | ||
903 | |||
904 | This implementation only offers read-only access. If you don't know | ||
905 | what all this is about, it's safe to say N. For more information | ||
906 | about EFS see its home page at <http://aeschi.ch.eu.org/efs/>. | ||
907 | |||
908 | To compile the EFS file system support as a module, choose M here: the | ||
909 | module will be called efs. | ||
910 | |||
911 | source "fs/jffs2/Kconfig" | 212 | source "fs/jffs2/Kconfig" |
912 | # UBIFS File system configuration | 213 | # UBIFS File system configuration |
913 | source "fs/ubifs/Kconfig" | 214 | source "fs/ubifs/Kconfig" |
914 | 215 | source "fs/cramfs/Kconfig" | |
915 | config CRAMFS | 216 | source "fs/squashfs/Kconfig" |
916 | tristate "Compressed ROM file system support (cramfs)" | 217 | source "fs/freevxfs/Kconfig" |
917 | depends on BLOCK | 218 | source "fs/minix/Kconfig" |
918 | select ZLIB_INFLATE | 219 | source "fs/omfs/Kconfig" |
919 | help | 220 | source "fs/hpfs/Kconfig" |
920 | Saying Y here includes support for CramFs (Compressed ROM File | 221 | source "fs/qnx4/Kconfig" |
921 | System). CramFs is designed to be a simple, small, and compressed | 222 | source "fs/romfs/Kconfig" |
922 | file system for ROM based embedded systems. CramFs is read-only, | 223 | source "fs/sysv/Kconfig" |
923 | limited to 256MB file systems (with 16MB files), and doesn't support | 224 | source "fs/ufs/Kconfig" |
924 | 16/32 bits uid/gid, hard links and timestamps. | ||
925 | |||
926 | See <file:Documentation/filesystems/cramfs.txt> and | ||
927 | <file:fs/cramfs/README> for further information. | ||
928 | |||
929 | To compile this as a module, choose M here: the module will be called | ||
930 | cramfs. Note that the root file system (the one containing the | ||
931 | directory /) cannot be compiled as a module. | ||
932 | |||
933 | If unsure, say N. | ||
934 | |||
935 | config SQUASHFS | ||
936 | tristate "SquashFS 4.0 - Squashed file system support" | ||
937 | depends on BLOCK | ||
938 | select ZLIB_INFLATE | ||
939 | help | ||
940 | Saying Y here includes support for SquashFS 4.0 (a Compressed | ||
941 | Read-Only File System). Squashfs is a highly compressed read-only | ||
942 | filesystem for Linux. It uses zlib compression to compress both | ||
943 | files, inodes and directories. Inodes in the system are very small | ||
944 | and all blocks are packed to minimise data overhead. Block sizes | ||
945 | greater than 4K are supported up to a maximum of 1 Mbytes (default | ||
946 | block size 128K). SquashFS 4.0 supports 64 bit filesystems and files | ||
947 | (larger than 4GB), full uid/gid information, hard links and | ||
948 | timestamps. | ||
949 | |||
950 | Squashfs is intended for general read-only filesystem use, for | ||
951 | archival use (i.e. in cases where a .tar.gz file may be used), and in | ||
952 | embedded systems where low overhead is needed. Further information | ||
953 | and tools are available from http://squashfs.sourceforge.net. | ||
954 | |||
955 | If you want to compile this as a module ( = code which can be | ||
956 | inserted in and removed from the running kernel whenever you want), | ||
957 | say M here and read <file:Documentation/modules.txt>. The module | ||
958 | will be called squashfs. Note that the root file system (the one | ||
959 | containing the directory /) cannot be compiled as a module. | ||
960 | |||
961 | If unsure, say N. | ||
962 | |||
963 | config SQUASHFS_EMBEDDED | ||
964 | |||
965 | bool "Additional option for memory-constrained systems" | ||
966 | depends on SQUASHFS | ||
967 | default n | ||
968 | help | ||
969 | Saying Y here allows you to specify cache size. | ||
970 | |||
971 | If unsure, say N. | ||
972 | |||
973 | config SQUASHFS_FRAGMENT_CACHE_SIZE | ||
974 | int "Number of fragments cached" if SQUASHFS_EMBEDDED | ||
975 | depends on SQUASHFS | ||
976 | default "3" | ||
977 | help | ||
978 | By default SquashFS caches the last 3 fragments read from | ||
979 | the filesystem. Increasing this amount may mean SquashFS | ||
980 | has to re-read fragments less often from disk, at the expense | ||
981 | of extra system memory. Decreasing this amount will mean | ||
982 | SquashFS uses less memory at the expense of extra reads from disk. | ||
983 | |||
984 | Note there must be at least one cached fragment. Anything | ||
985 | much more than three will probably not make much difference. | ||
986 | |||
987 | config VXFS_FS | ||
988 | tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)" | ||
989 | depends on BLOCK | ||
990 | help | ||
991 | FreeVxFS is a file system driver that support the VERITAS VxFS(TM) | ||
992 | file system format. VERITAS VxFS(TM) is the standard file system | ||
993 | of SCO UnixWare (and possibly others) and optionally available | ||
994 | for Sunsoft Solaris, HP-UX and many other operating systems. | ||
995 | Currently only readonly access is supported. | ||
996 | |||
997 | NOTE: the file system type as used by mount(1), mount(2) and | ||
998 | fstab(5) is 'vxfs' as it describes the file system format, not | ||
999 | the actual driver. | ||
1000 | |||
1001 | To compile this as a module, choose M here: the module will be | ||
1002 | called freevxfs. If unsure, say N. | ||
1003 | |||
1004 | config MINIX_FS | ||
1005 | tristate "Minix file system support" | ||
1006 | depends on BLOCK | ||
1007 | help | ||
1008 | Minix is a simple operating system used in many classes about OS's. | ||
1009 | The minix file system (method to organize files on a hard disk | ||
1010 | partition or a floppy disk) was the original file system for Linux, | ||
1011 | but has been superseded by the second extended file system ext2fs. | ||
1012 | You don't want to use the minix file system on your hard disk | ||
1013 | because of certain built-in restrictions, but it is sometimes found | ||
1014 | on older Linux floppy disks. This option will enlarge your kernel | ||
1015 | by about 28 KB. If unsure, say N. | ||
1016 | |||
1017 | To compile this file system support as a module, choose M here: the | ||
1018 | module will be called minix. Note that the file system of your root | ||
1019 | partition (the one containing the directory /) cannot be compiled as | ||
1020 | a module. | ||
1021 | |||
1022 | config OMFS_FS | ||
1023 | tristate "SonicBlue Optimized MPEG File System support" | ||
1024 | depends on BLOCK | ||
1025 | select CRC_ITU_T | ||
1026 | help | ||
1027 | This is the proprietary file system used by the Rio Karma music | ||
1028 | player and ReplayTV DVR. Despite the name, this filesystem is not | ||
1029 | more efficient than a standard FS for MPEG files, in fact likely | ||
1030 | the opposite is true. Say Y if you have either of these devices | ||
1031 | and wish to mount its disk. | ||
1032 | |||
1033 | To compile this file system support as a module, choose M here: the | ||
1034 | module will be called omfs. If unsure, say N. | ||
1035 | |||
1036 | config HPFS_FS | ||
1037 | tristate "OS/2 HPFS file system support" | ||
1038 | depends on BLOCK | ||
1039 | help | ||
1040 | OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS | ||
1041 | is the file system used for organizing files on OS/2 hard disk | ||
1042 | partitions. Say Y if you want to be able to read files from and | ||
1043 | write files to an OS/2 HPFS partition on your hard drive. OS/2 | ||
1044 | floppies however are in regular MSDOS format, so you don't need this | ||
1045 | option in order to be able to read them. Read | ||
1046 | <file:Documentation/filesystems/hpfs.txt>. | ||
1047 | |||
1048 | To compile this file system support as a module, choose M here: the | ||
1049 | module will be called hpfs. If unsure, say N. | ||
1050 | |||
1051 | |||
1052 | config QNX4FS_FS | ||
1053 | tristate "QNX4 file system support (read only)" | ||
1054 | depends on BLOCK | ||
1055 | help | ||
1056 | This is the file system used by the real-time operating systems | ||
1057 | QNX 4 and QNX 6 (the latter is also called QNX RTP). | ||
1058 | Further information is available at <http://www.qnx.com/>. | ||
1059 | Say Y if you intend to mount QNX hard disks or floppies. | ||
1060 | Unless you say Y to "QNX4FS read-write support" below, you will | ||
1061 | only be able to read these file systems. | ||
1062 | |||
1063 | To compile this file system support as a module, choose M here: the | ||
1064 | module will be called qnx4. | ||
1065 | |||
1066 | If you don't know whether you need it, then you don't need it: | ||
1067 | answer N. | ||
1068 | |||
1069 | config QNX4FS_RW | ||
1070 | bool "QNX4FS write support (DANGEROUS)" | ||
1071 | depends on QNX4FS_FS && EXPERIMENTAL && BROKEN | ||
1072 | help | ||
1073 | Say Y if you want to test write support for QNX4 file systems. | ||
1074 | |||
1075 | It's currently broken, so for now: | ||
1076 | answer N. | ||
1077 | |||
1078 | config ROMFS_FS | ||
1079 | tristate "ROM file system support" | ||
1080 | depends on BLOCK | ||
1081 | ---help--- | ||
1082 | This is a very small read-only file system mainly intended for | ||
1083 | initial ram disks of installation disks, but it could be used for | ||
1084 | other read-only media as well. Read | ||
1085 | <file:Documentation/filesystems/romfs.txt> for details. | ||
1086 | |||
1087 | To compile this file system support as a module, choose M here: the | ||
1088 | module will be called romfs. Note that the file system of your | ||
1089 | root partition (the one containing the directory /) cannot be a | ||
1090 | module. | ||
1091 | |||
1092 | If you don't know whether you need it, then you don't need it: | ||
1093 | answer N. | ||
1094 | |||
1095 | |||
1096 | config SYSV_FS | ||
1097 | tristate "System V/Xenix/V7/Coherent file system support" | ||
1098 | depends on BLOCK | ||
1099 | help | ||
1100 | SCO, Xenix and Coherent are commercial Unix systems for Intel | ||
1101 | machines, and Version 7 was used on the DEC PDP-11. Saying Y | ||
1102 | here would allow you to read from their floppies and hard disk | ||
1103 | partitions. | ||
1104 | |||
1105 | If you have floppies or hard disk partitions like that, it is likely | ||
1106 | that they contain binaries from those other Unix systems; in order | ||
1107 | to run these binaries, you will want to install linux-abi which is | ||
1108 | a set of kernel modules that lets you run SCO, Xenix, Wyse, | ||
1109 | UnixWare, Dell Unix and System V programs under Linux. It is | ||
1110 | available via FTP (user: ftp) from | ||
1111 | <ftp://ftp.openlinux.org/pub/people/hch/linux-abi/>). | ||
1112 | NOTE: that will work only for binaries from Intel-based systems; | ||
1113 | PDP ones will have to wait until somebody ports Linux to -11 ;-) | ||
1114 | |||
1115 | If you only intend to mount files from some other Unix over the | ||
1116 | network using NFS, you don't need the System V file system support | ||
1117 | (but you need NFS file system support obviously). | ||
1118 | |||
1119 | Note that this option is generally not needed for floppies, since a | ||
1120 | good portable way to transport files and directories between unixes | ||
1121 | (and even other operating systems) is given by the tar program ("man | ||
1122 | tar" or preferably "info tar"). Note also that this option has | ||
1123 | nothing whatsoever to do with the option "System V IPC". Read about | ||
1124 | the System V file system in | ||
1125 | <file:Documentation/filesystems/sysv-fs.txt>. | ||
1126 | Saying Y here will enlarge your kernel by about 27 KB. | ||
1127 | |||
1128 | To compile this as a module, choose M here: the module will be called | ||
1129 | sysv. | ||
1130 | |||
1131 | If you haven't heard about all of this before, it's safe to say N. | ||
1132 | |||
1133 | |||
1134 | config UFS_FS | ||
1135 | tristate "UFS file system support (read only)" | ||
1136 | depends on BLOCK | ||
1137 | help | ||
1138 | BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD, | ||
1139 | OpenBSD and NeXTstep) use a file system called UFS. Some System V | ||
1140 | Unixes can create and mount hard disk partitions and diskettes using | ||
1141 | this file system as well. Saying Y here will allow you to read from | ||
1142 | these partitions; if you also want to write to them, say Y to the | ||
1143 | experimental "UFS file system write support", below. Please read the | ||
1144 | file <file:Documentation/filesystems/ufs.txt> for more information. | ||
1145 | |||
1146 | The recently released UFS2 variant (used in FreeBSD 5.x) is | ||
1147 | READ-ONLY supported. | ||
1148 | |||
1149 | Note that this option is generally not needed for floppies, since a | ||
1150 | good portable way to transport files and directories between unixes | ||
1151 | (and even other operating systems) is given by the tar program ("man | ||
1152 | tar" or preferably "info tar"). | ||
1153 | |||
1154 | When accessing NeXTstep files, you may need to convert them from the | ||
1155 | NeXT character set to the Latin1 character set; use the program | ||
1156 | recode ("info recode") for this purpose. | ||
1157 | |||
1158 | To compile the UFS file system support as a module, choose M here: the | ||
1159 | module will be called ufs. | ||
1160 | |||
1161 | If you haven't heard about all of this before, it's safe to say N. | ||
1162 | |||
1163 | config UFS_FS_WRITE | ||
1164 | bool "UFS file system write support (DANGEROUS)" | ||
1165 | depends on UFS_FS && EXPERIMENTAL | ||
1166 | help | ||
1167 | Say Y here if you want to try writing to UFS partitions. This is | ||
1168 | experimental, so you should back up your UFS partitions beforehand. | ||
1169 | |||
1170 | config UFS_DEBUG | ||
1171 | bool "UFS debugging" | ||
1172 | depends on UFS_FS | ||
1173 | help | ||
1174 | If you are experiencing any problems with the UFS filesystem, say | ||
1175 | Y here. This will result in _many_ additional debugging messages to be | ||
1176 | written to the system log. | ||
1177 | 225 | ||
1178 | endif # MISC_FILESYSTEMS | 226 | endif # MISC_FILESYSTEMS |
1179 | 227 | ||
@@ -1193,173 +241,8 @@ menuconfig NETWORK_FILESYSTEMS | |||
1193 | 241 | ||
1194 | if NETWORK_FILESYSTEMS | 242 | if NETWORK_FILESYSTEMS |
1195 | 243 | ||
1196 | config NFS_FS | 244 | source "fs/nfs/Kconfig" |
1197 | tristate "NFS client support" | 245 | source "fs/nfsd/Kconfig" |
1198 | depends on INET | ||
1199 | select LOCKD | ||
1200 | select SUNRPC | ||
1201 | select NFS_ACL_SUPPORT if NFS_V3_ACL | ||
1202 | help | ||
1203 | Choose Y here if you want to access files residing on other | ||
1204 | computers using Sun's Network File System protocol. To compile | ||
1205 | this file system support as a module, choose M here: the module | ||
1206 | will be called nfs. | ||
1207 | |||
1208 | To mount file systems exported by NFS servers, you also need to | ||
1209 | install the user space mount.nfs command which can be found in | ||
1210 | the Linux nfs-utils package, available from http://linux-nfs.org/. | ||
1211 | Information about using the mount command is available in the | ||
1212 | mount(8) man page. More detail about the Linux NFS client | ||
1213 | implementation is available via the nfs(5) man page. | ||
1214 | |||
1215 | Below you can choose which versions of the NFS protocol are | ||
1216 | available in the kernel to mount NFS servers. Support for NFS | ||
1217 | version 2 (RFC 1094) is always available when NFS_FS is selected. | ||
1218 | |||
1219 | To configure a system which mounts its root file system via NFS | ||
1220 | at boot time, say Y here, select "Kernel level IP | ||
1221 | autoconfiguration" in the NETWORK menu, and select "Root file | ||
1222 | system on NFS" below. You cannot compile this file system as a | ||
1223 | module in this case. | ||
1224 | |||
1225 | If unsure, say N. | ||
1226 | |||
1227 | config NFS_V3 | ||
1228 | bool "NFS client support for NFS version 3" | ||
1229 | depends on NFS_FS | ||
1230 | help | ||
1231 | This option enables support for version 3 of the NFS protocol | ||
1232 | (RFC 1813) in the kernel's NFS client. | ||
1233 | |||
1234 | If unsure, say Y. | ||
1235 | |||
1236 | config NFS_V3_ACL | ||
1237 | bool "NFS client support for the NFSv3 ACL protocol extension" | ||
1238 | depends on NFS_V3 | ||
1239 | help | ||
1240 | Some NFS servers support an auxiliary NFSv3 ACL protocol that | ||
1241 | Sun added to Solaris but never became an official part of the | ||
1242 | NFS version 3 protocol. This protocol extension allows | ||
1243 | applications on NFS clients to manipulate POSIX Access Control | ||
1244 | Lists on files residing on NFS servers. NFS servers enforce | ||
1245 | ACLs on local files whether this protocol is available or not. | ||
1246 | |||
1247 | Choose Y here if your NFS server supports the Solaris NFSv3 ACL | ||
1248 | protocol extension and you want your NFS client to allow | ||
1249 | applications to access and modify ACLs on files on the server. | ||
1250 | |||
1251 | Most NFS servers don't support the Solaris NFSv3 ACL protocol | ||
1252 | extension. You can choose N here or specify the "noacl" mount | ||
1253 | option to prevent your NFS client from trying to use the NFSv3 | ||
1254 | ACL protocol. | ||
1255 | |||
1256 | If unsure, say N. | ||
1257 | |||
1258 | config NFS_V4 | ||
1259 | bool "NFS client support for NFS version 4 (EXPERIMENTAL)" | ||
1260 | depends on NFS_FS && EXPERIMENTAL | ||
1261 | select RPCSEC_GSS_KRB5 | ||
1262 | help | ||
1263 | This option enables support for version 4 of the NFS protocol | ||
1264 | (RFC 3530) in the kernel's NFS client. | ||
1265 | |||
1266 | To mount NFS servers using NFSv4, you also need to install user | ||
1267 | space programs which can be found in the Linux nfs-utils package, | ||
1268 | available from http://linux-nfs.org/. | ||
1269 | |||
1270 | If unsure, say N. | ||
1271 | |||
1272 | config ROOT_NFS | ||
1273 | bool "Root file system on NFS" | ||
1274 | depends on NFS_FS=y && IP_PNP | ||
1275 | help | ||
1276 | If you want your system to mount its root file system via NFS, | ||
1277 | choose Y here. This is common practice for managing systems | ||
1278 | without local permanent storage. For details, read | ||
1279 | <file:Documentation/filesystems/nfsroot.txt>. | ||
1280 | |||
1281 | Most people say N here. | ||
1282 | |||
1283 | config NFSD | ||
1284 | tristate "NFS server support" | ||
1285 | depends on INET | ||
1286 | select LOCKD | ||
1287 | select SUNRPC | ||
1288 | select EXPORTFS | ||
1289 | select NFS_ACL_SUPPORT if NFSD_V2_ACL | ||
1290 | help | ||
1291 | Choose Y here if you want to allow other computers to access | ||
1292 | files residing on this system using Sun's Network File System | ||
1293 | protocol. To compile the NFS server support as a module, | ||
1294 | choose M here: the module will be called nfsd. | ||
1295 | |||
1296 | You may choose to use a user-space NFS server instead, in which | ||
1297 | case you can choose N here. | ||
1298 | |||
1299 | To export local file systems using NFS, you also need to install | ||
1300 | user space programs which can be found in the Linux nfs-utils | ||
1301 | package, available from http://linux-nfs.org/. More detail about | ||
1302 | the Linux NFS server implementation is available via the | ||
1303 | exports(5) man page. | ||
1304 | |||
1305 | Below you can choose which versions of the NFS protocol are | ||
1306 | available to clients mounting the NFS server on this system. | ||
1307 | Support for NFS version 2 (RFC 1094) is always available when | ||
1308 | CONFIG_NFSD is selected. | ||
1309 | |||
1310 | If unsure, say N. | ||
1311 | |||
1312 | config NFSD_V2_ACL | ||
1313 | bool | ||
1314 | depends on NFSD | ||
1315 | |||
1316 | config NFSD_V3 | ||
1317 | bool "NFS server support for NFS version 3" | ||
1318 | depends on NFSD | ||
1319 | help | ||
1320 | This option enables support in your system's NFS server for | ||
1321 | version 3 of the NFS protocol (RFC 1813). | ||
1322 | |||
1323 | If unsure, say Y. | ||
1324 | |||
1325 | config NFSD_V3_ACL | ||
1326 | bool "NFS server support for the NFSv3 ACL protocol extension" | ||
1327 | depends on NFSD_V3 | ||
1328 | select NFSD_V2_ACL | ||
1329 | help | ||
1330 | Solaris NFS servers support an auxiliary NFSv3 ACL protocol that | ||
1331 | never became an official part of the NFS version 3 protocol. | ||
1332 | This protocol extension allows applications on NFS clients to | ||
1333 | manipulate POSIX Access Control Lists on files residing on NFS | ||
1334 | servers. NFS servers enforce POSIX ACLs on local files whether | ||
1335 | this protocol is available or not. | ||
1336 | |||
1337 | This option enables support in your system's NFS server for the | ||
1338 | NFSv3 ACL protocol extension allowing NFS clients to manipulate | ||
1339 | POSIX ACLs on files exported by your system's NFS server. NFS | ||
1340 | clients which support the Solaris NFSv3 ACL protocol can then | ||
1341 | access and modify ACLs on your NFS server. | ||
1342 | |||
1343 | To store ACLs on your NFS server, you also need to enable ACL- | ||
1344 | related CONFIG options for your local file systems of choice. | ||
1345 | |||
1346 | If unsure, say N. | ||
1347 | |||
1348 | config NFSD_V4 | ||
1349 | bool "NFS server support for NFS version 4 (EXPERIMENTAL)" | ||
1350 | depends on NFSD && PROC_FS && EXPERIMENTAL | ||
1351 | select NFSD_V3 | ||
1352 | select FS_POSIX_ACL | ||
1353 | select RPCSEC_GSS_KRB5 | ||
1354 | help | ||
1355 | This option enables support in your system's NFS server for | ||
1356 | version 4 of the NFS protocol (RFC 3530). | ||
1357 | |||
1358 | To export files using NFSv4, you need to install additional user | ||
1359 | space programs which can be found in the Linux nfs-utils package, | ||
1360 | available from http://linux-nfs.org/. | ||
1361 | |||
1362 | If unsure, say N. | ||
1363 | 246 | ||
1364 | config LOCKD | 247 | config LOCKD |
1365 | tristate | 248 | tristate |
@@ -1381,221 +264,13 @@ config NFS_COMMON | |||
1381 | depends on NFSD || NFS_FS | 264 | depends on NFSD || NFS_FS |
1382 | default y | 265 | default y |
1383 | 266 | ||
1384 | config SUNRPC | 267 | source "net/sunrpc/Kconfig" |
1385 | tristate | 268 | source "fs/smbfs/Kconfig" |
1386 | |||
1387 | config SUNRPC_GSS | ||
1388 | tristate | ||
1389 | |||
1390 | config SUNRPC_XPRT_RDMA | ||
1391 | tristate | ||
1392 | depends on SUNRPC && INFINIBAND && EXPERIMENTAL | ||
1393 | default SUNRPC && INFINIBAND | ||
1394 | help | ||
1395 | This option enables an RPC client transport capability that | ||
1396 | allows the NFS client to mount servers via an RDMA-enabled | ||
1397 | transport. | ||
1398 | |||
1399 | To compile RPC client RDMA transport support as a module, | ||
1400 | choose M here: the module will be called xprtrdma. | ||
1401 | |||
1402 | If unsure, say N. | ||
1403 | |||
1404 | config SUNRPC_REGISTER_V4 | ||
1405 | bool "Register local RPC services via rpcbind v4 (EXPERIMENTAL)" | ||
1406 | depends on SUNRPC && EXPERIMENTAL | ||
1407 | default n | ||
1408 | help | ||
1409 | Sun added support for registering RPC services at an IPv6 | ||
1410 | address by creating two new versions of the rpcbind protocol | ||
1411 | (RFC 1833). | ||
1412 | |||
1413 | This option enables support in the kernel RPC server for | ||
1414 | registering kernel RPC services via version 4 of the rpcbind | ||
1415 | protocol. If you enable this option, you must run a portmapper | ||
1416 | daemon that supports rpcbind protocol version 4. | ||
1417 | |||
1418 | Serving NFS over IPv6 from knfsd (the kernel's NFS server) | ||
1419 | requires that you enable this option and use a portmapper that | ||
1420 | supports rpcbind version 4. | ||
1421 | |||
1422 | If unsure, say N to get traditional behavior (register kernel | ||
1423 | RPC services using only rpcbind version 2). Distributions | ||
1424 | using the legacy Linux portmapper daemon must say N here. | ||
1425 | |||
1426 | config RPCSEC_GSS_KRB5 | ||
1427 | tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)" | ||
1428 | depends on SUNRPC && EXPERIMENTAL | ||
1429 | select SUNRPC_GSS | ||
1430 | select CRYPTO | ||
1431 | select CRYPTO_MD5 | ||
1432 | select CRYPTO_DES | ||
1433 | select CRYPTO_CBC | ||
1434 | help | ||
1435 | Choose Y here to enable Secure RPC using the Kerberos version 5 | ||
1436 | GSS-API mechanism (RFC 1964). | ||
1437 | |||
1438 | Secure RPC calls with Kerberos require an auxiliary user-space | ||
1439 | daemon which may be found in the Linux nfs-utils package | ||
1440 | available from http://linux-nfs.org/. In addition, user-space | ||
1441 | Kerberos support should be installed. | ||
1442 | |||
1443 | If unsure, say N. | ||
1444 | |||
1445 | config RPCSEC_GSS_SPKM3 | ||
1446 | tristate "Secure RPC: SPKM3 mechanism (EXPERIMENTAL)" | ||
1447 | depends on SUNRPC && EXPERIMENTAL | ||
1448 | select SUNRPC_GSS | ||
1449 | select CRYPTO | ||
1450 | select CRYPTO_MD5 | ||
1451 | select CRYPTO_DES | ||
1452 | select CRYPTO_CAST5 | ||
1453 | select CRYPTO_CBC | ||
1454 | help | ||
1455 | Choose Y here to enable Secure RPC using the SPKM3 public key | ||
1456 | GSS-API mechansim (RFC 2025). | ||
1457 | |||
1458 | Secure RPC calls with SPKM3 require an auxiliary userspace | ||
1459 | daemon which may be found in the Linux nfs-utils package | ||
1460 | available from http://linux-nfs.org/. | ||
1461 | |||
1462 | If unsure, say N. | ||
1463 | |||
1464 | config SMB_FS | ||
1465 | tristate "SMB file system support (OBSOLETE, please use CIFS)" | ||
1466 | depends on INET | ||
1467 | select NLS | ||
1468 | help | ||
1469 | SMB (Server Message Block) is the protocol Windows for Workgroups | ||
1470 | (WfW), Windows 95/98, Windows NT and OS/2 Lan Manager use to share | ||
1471 | files and printers over local networks. Saying Y here allows you to | ||
1472 | mount their file systems (often called "shares" in this context) and | ||
1473 | access them just like any other Unix directory. Currently, this | ||
1474 | works only if the Windows machines use TCP/IP as the underlying | ||
1475 | transport protocol, and not NetBEUI. For details, read | ||
1476 | <file:Documentation/filesystems/smbfs.txt> and the SMB-HOWTO, | ||
1477 | available from <http://www.tldp.org/docs.html#howto>. | ||
1478 | |||
1479 | Note: if you just want your box to act as an SMB *server* and make | ||
1480 | files and printing services available to Windows clients (which need | ||
1481 | to have a TCP/IP stack), you don't need to say Y here; you can use | ||
1482 | the program SAMBA (available from <ftp://ftp.samba.org/pub/samba/>) | ||
1483 | for that. | ||
1484 | |||
1485 | General information about how to connect Linux, Windows machines and | ||
1486 | Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. | ||
1487 | |||
1488 | To compile the SMB support as a module, choose M here: | ||
1489 | the module will be called smbfs. Most people say N, however. | ||
1490 | |||
1491 | config SMB_NLS_DEFAULT | ||
1492 | bool "Use a default NLS" | ||
1493 | depends on SMB_FS | ||
1494 | help | ||
1495 | Enabling this will make smbfs use nls translations by default. You | ||
1496 | need to specify the local charset (CONFIG_NLS_DEFAULT) in the nls | ||
1497 | settings and you need to give the default nls for the SMB server as | ||
1498 | CONFIG_SMB_NLS_REMOTE. | ||
1499 | |||
1500 | The nls settings can be changed at mount time, if your smbmount | ||
1501 | supports that, using the codepage and iocharset parameters. | ||
1502 | |||
1503 | smbmount from samba 2.2.0 or later supports this. | ||
1504 | |||
1505 | config SMB_NLS_REMOTE | ||
1506 | string "Default Remote NLS Option" | ||
1507 | depends on SMB_NLS_DEFAULT | ||
1508 | default "cp437" | ||
1509 | help | ||
1510 | This setting allows you to specify a default value for which | ||
1511 | codepage the server uses. If this field is left blank no | ||
1512 | translations will be done by default. The local codepage/charset | ||
1513 | default to CONFIG_NLS_DEFAULT. | ||
1514 | |||
1515 | The nls settings can be changed at mount time, if your smbmount | ||
1516 | supports that, using the codepage and iocharset parameters. | ||
1517 | |||
1518 | smbmount from samba 2.2.0 or later supports this. | ||
1519 | |||
1520 | source "fs/cifs/Kconfig" | 269 | source "fs/cifs/Kconfig" |
1521 | |||
1522 | config NCP_FS | ||
1523 | tristate "NCP file system support (to mount NetWare volumes)" | ||
1524 | depends on IPX!=n || INET | ||
1525 | help | ||
1526 | NCP (NetWare Core Protocol) is a protocol that runs over IPX and is | ||
1527 | used by Novell NetWare clients to talk to file servers. It is to | ||
1528 | IPX what NFS is to TCP/IP, if that helps. Saying Y here allows you | ||
1529 | to mount NetWare file server volumes and to access them just like | ||
1530 | any other Unix directory. For details, please read the file | ||
1531 | <file:Documentation/filesystems/ncpfs.txt> in the kernel source and | ||
1532 | the IPX-HOWTO from <http://www.tldp.org/docs.html#howto>. | ||
1533 | |||
1534 | You do not have to say Y here if you want your Linux box to act as a | ||
1535 | file *server* for Novell NetWare clients. | ||
1536 | |||
1537 | General information about how to connect Linux, Windows machines and | ||
1538 | Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. | ||
1539 | |||
1540 | To compile this as a module, choose M here: the module will be called | ||
1541 | ncpfs. Say N unless you are connected to a Novell network. | ||
1542 | |||
1543 | source "fs/ncpfs/Kconfig" | 270 | source "fs/ncpfs/Kconfig" |
1544 | 271 | source "fs/coda/Kconfig" | |
1545 | config CODA_FS | 272 | source "fs/afs/Kconfig" |
1546 | tristate "Coda file system support (advanced network fs)" | 273 | source "fs/9p/Kconfig" |
1547 | depends on INET | ||
1548 | help | ||
1549 | Coda is an advanced network file system, similar to NFS in that it | ||
1550 | enables you to mount file systems of a remote server and access them | ||
1551 | with regular Unix commands as if they were sitting on your hard | ||
1552 | disk. Coda has several advantages over NFS: support for | ||
1553 | disconnected operation (e.g. for laptops), read/write server | ||
1554 | replication, security model for authentication and encryption, | ||
1555 | persistent client caches and write back caching. | ||
1556 | |||
1557 | If you say Y here, your Linux box will be able to act as a Coda | ||
1558 | *client*. You will need user level code as well, both for the | ||
1559 | client and server. Servers are currently user level, i.e. they need | ||
1560 | no kernel support. Please read | ||
1561 | <file:Documentation/filesystems/coda.txt> and check out the Coda | ||
1562 | home page <http://www.coda.cs.cmu.edu/>. | ||
1563 | |||
1564 | To compile the coda client support as a module, choose M here: the | ||
1565 | module will be called coda. | ||
1566 | |||
1567 | config AFS_FS | ||
1568 | tristate "Andrew File System support (AFS) (EXPERIMENTAL)" | ||
1569 | depends on INET && EXPERIMENTAL | ||
1570 | select AF_RXRPC | ||
1571 | help | ||
1572 | If you say Y here, you will get an experimental Andrew File System | ||
1573 | driver. It currently only supports unsecured read-only AFS access. | ||
1574 | |||
1575 | See <file:Documentation/filesystems/afs.txt> for more information. | ||
1576 | |||
1577 | If unsure, say N. | ||
1578 | |||
1579 | config AFS_DEBUG | ||
1580 | bool "AFS dynamic debugging" | ||
1581 | depends on AFS_FS | ||
1582 | help | ||
1583 | Say Y here to make runtime controllable debugging messages appear. | ||
1584 | |||
1585 | See <file:Documentation/filesystems/afs.txt> for more information. | ||
1586 | |||
1587 | If unsure, say N. | ||
1588 | |||
1589 | config 9P_FS | ||
1590 | tristate "Plan 9 Resource Sharing Support (9P2000) (Experimental)" | ||
1591 | depends on INET && NET_9P && EXPERIMENTAL | ||
1592 | help | ||
1593 | If you say Y here, you will get experimental support for | ||
1594 | Plan 9 resource sharing via the 9P2000 protocol. | ||
1595 | |||
1596 | See <http://v9fs.sf.net> for more information. | ||
1597 | |||
1598 | If unsure, say N. | ||
1599 | 274 | ||
1600 | endif # NETWORK_FILESYSTEMS | 275 | endif # NETWORK_FILESYSTEMS |
1601 | 276 | ||
diff --git a/fs/adfs/Kconfig b/fs/adfs/Kconfig new file mode 100644 index 000000000000..e55182a74605 --- /dev/null +++ b/fs/adfs/Kconfig | |||
@@ -0,0 +1,27 @@ | |||
1 | config ADFS_FS | ||
2 | tristate "ADFS file system support (EXPERIMENTAL)" | ||
3 | depends on BLOCK && EXPERIMENTAL | ||
4 | help | ||
5 | The Acorn Disc Filing System is the standard file system of the | ||
6 | RiscOS operating system which runs on Acorn's ARM-based Risc PC | ||
7 | systems and the Acorn Archimedes range of machines. If you say Y | ||
8 | here, Linux will be able to read from ADFS partitions on hard drives | ||
9 | and from ADFS-formatted floppy discs. If you also want to be able to | ||
10 | write to those devices, say Y to "ADFS write support" below. | ||
11 | |||
12 | The ADFS partition should be the first partition (i.e., | ||
13 | /dev/[hs]d?1) on each of your drives. Please read the file | ||
14 | <file:Documentation/filesystems/adfs.txt> for further details. | ||
15 | |||
16 | To compile this code as a module, choose M here: the module will be | ||
17 | called adfs. | ||
18 | |||
19 | If unsure, say N. | ||
20 | |||
21 | config ADFS_FS_RW | ||
22 | bool "ADFS write support (DANGEROUS)" | ||
23 | depends on ADFS_FS | ||
24 | help | ||
25 | If you say Y here, you will be able to write to ADFS partitions on | ||
26 | hard drives and ADFS-formatted floppy disks. This is experimental | ||
27 | codes, so if you're unsure, say N. | ||
diff --git a/fs/affs/Kconfig b/fs/affs/Kconfig new file mode 100644 index 000000000000..cfad9afb4762 --- /dev/null +++ b/fs/affs/Kconfig | |||
@@ -0,0 +1,21 @@ | |||
1 | config AFFS_FS | ||
2 | tristate "Amiga FFS file system support (EXPERIMENTAL)" | ||
3 | depends on BLOCK && EXPERIMENTAL | ||
4 | help | ||
5 | The Fast File System (FFS) is the common file system used on hard | ||
6 | disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20). Say Y | ||
7 | if you want to be able to read and write files from and to an Amiga | ||
8 | FFS partition on your hard drive. Amiga floppies however cannot be | ||
9 | read with this driver due to an incompatibility of the floppy | ||
10 | controller used in an Amiga and the standard floppy controller in | ||
11 | PCs and workstations. Read <file:Documentation/filesystems/affs.txt> | ||
12 | and <file:fs/affs/Changes>. | ||
13 | |||
14 | With this driver you can also mount disk files used by Bernd | ||
15 | Schmidt's Un*X Amiga Emulator | ||
16 | (<http://www.freiburg.linux.de/~uae/>). | ||
17 | If you want to do this, you will also need to say Y or M to "Loop | ||
18 | device support", above. | ||
19 | |||
20 | To compile this file system support as a module, choose M here: the | ||
21 | module will be called affs. If unsure, say N. | ||
diff --git a/fs/afs/Kconfig b/fs/afs/Kconfig new file mode 100644 index 000000000000..e7b522fe15e1 --- /dev/null +++ b/fs/afs/Kconfig | |||
@@ -0,0 +1,21 @@ | |||
1 | config AFS_FS | ||
2 | tristate "Andrew File System support (AFS) (EXPERIMENTAL)" | ||
3 | depends on INET && EXPERIMENTAL | ||
4 | select AF_RXRPC | ||
5 | help | ||
6 | If you say Y here, you will get an experimental Andrew File System | ||
7 | driver. It currently only supports unsecured read-only AFS access. | ||
8 | |||
9 | See <file:Documentation/filesystems/afs.txt> for more information. | ||
10 | |||
11 | If unsure, say N. | ||
12 | |||
13 | config AFS_DEBUG | ||
14 | bool "AFS dynamic debugging" | ||
15 | depends on AFS_FS | ||
16 | help | ||
17 | Say Y here to make runtime controllable debugging messages appear. | ||
18 | |||
19 | See <file:Documentation/filesystems/afs.txt> for more information. | ||
20 | |||
21 | If unsure, say N. | ||
diff --git a/fs/autofs/Kconfig b/fs/autofs/Kconfig new file mode 100644 index 000000000000..5f3bea90911e --- /dev/null +++ b/fs/autofs/Kconfig | |||
@@ -0,0 +1,21 @@ | |||
1 | config AUTOFS_FS | ||
2 | tristate "Kernel automounter support" | ||
3 | help | ||
4 | The automounter is a tool to automatically mount remote file systems | ||
5 | on demand. This implementation is partially kernel-based to reduce | ||
6 | overhead in the already-mounted case; this is unlike the BSD | ||
7 | automounter (amd), which is a pure user space daemon. | ||
8 | |||
9 | To use the automounter you need the user-space tools from the autofs | ||
10 | package; you can find the location in <file:Documentation/Changes>. | ||
11 | You also want to answer Y to "NFS file system support", below. | ||
12 | |||
13 | If you want to use the newer version of the automounter with more | ||
14 | features, say N here and say Y to "Kernel automounter v4 support", | ||
15 | below. | ||
16 | |||
17 | To compile this support as a module, choose M here: the module will be | ||
18 | called autofs. | ||
19 | |||
20 | If you are not a part of a fairly large, distributed network, you | ||
21 | probably do not need an automounter, and can say N here. | ||
diff --git a/fs/autofs4/Kconfig b/fs/autofs4/Kconfig new file mode 100644 index 000000000000..1204d6384d39 --- /dev/null +++ b/fs/autofs4/Kconfig | |||
@@ -0,0 +1,20 @@ | |||
1 | config AUTOFS4_FS | ||
2 | tristate "Kernel automounter version 4 support (also supports v3)" | ||
3 | help | ||
4 | The automounter is a tool to automatically mount remote file systems | ||
5 | on demand. This implementation is partially kernel-based to reduce | ||
6 | overhead in the already-mounted case; this is unlike the BSD | ||
7 | automounter (amd), which is a pure user space daemon. | ||
8 | |||
9 | To use the automounter you need the user-space tools from | ||
10 | <ftp://ftp.kernel.org/pub/linux/daemons/autofs/v4/>; you also | ||
11 | want to answer Y to "NFS file system support", below. | ||
12 | |||
13 | To compile this support as a module, choose M here: the module will be | ||
14 | called autofs4. You will need to add "alias autofs autofs4" to your | ||
15 | modules configuration file. | ||
16 | |||
17 | If you are not a part of a fairly large, distributed network or | ||
18 | don't have a laptop which needs to dynamically reconfigure to the | ||
19 | local network, you probably do not need an automounter, and can say | ||
20 | N here. | ||
diff --git a/fs/befs/Kconfig b/fs/befs/Kconfig new file mode 100644 index 000000000000..7835d30f211f --- /dev/null +++ b/fs/befs/Kconfig | |||
@@ -0,0 +1,26 @@ | |||
1 | config BEFS_FS | ||
2 | tristate "BeOS file system (BeFS) support (read only) (EXPERIMENTAL)" | ||
3 | depends on BLOCK && EXPERIMENTAL | ||
4 | select NLS | ||
5 | help | ||
6 | The BeOS File System (BeFS) is the native file system of Be, Inc's | ||
7 | BeOS. Notable features include support for arbitrary attributes | ||
8 | on files and directories, and database-like indices on selected | ||
9 | attributes. (Also note that this driver doesn't make those features | ||
10 | available at this time). It is a 64 bit filesystem, so it supports | ||
11 | extremely large volumes and files. | ||
12 | |||
13 | If you use this filesystem, you should also say Y to at least one | ||
14 | of the NLS (native language support) options below. | ||
15 | |||
16 | If you don't know what this is about, say N. | ||
17 | |||
18 | To compile this as a module, choose M here: the module will be | ||
19 | called befs. | ||
20 | |||
21 | config BEFS_DEBUG | ||
22 | bool "Debug BeFS" | ||
23 | depends on BEFS_FS | ||
24 | help | ||
25 | If you say Y here, you can use the 'debug' mount option to enable | ||
26 | debugging output from the driver. | ||
diff --git a/fs/bfs/Kconfig b/fs/bfs/Kconfig new file mode 100644 index 000000000000..c2336c62024f --- /dev/null +++ b/fs/bfs/Kconfig | |||
@@ -0,0 +1,19 @@ | |||
1 | config BFS_FS | ||
2 | tristate "BFS file system support (EXPERIMENTAL)" | ||
3 | depends on BLOCK && EXPERIMENTAL | ||
4 | help | ||
5 | Boot File System (BFS) is a file system used under SCO UnixWare to | ||
6 | allow the bootloader access to the kernel image and other important | ||
7 | files during the boot process. It is usually mounted under /stand | ||
8 | and corresponds to the slice marked as "STAND" in the UnixWare | ||
9 | partition. You should say Y if you want to read or write the files | ||
10 | on your /stand slice from within Linux. You then also need to say Y | ||
11 | to "UnixWare slices support", below. More information about the BFS | ||
12 | file system is contained in the file | ||
13 | <file:Documentation/filesystems/bfs.txt>. | ||
14 | |||
15 | If you don't know what this is about, say N. | ||
16 | |||
17 | To compile this as a module, choose M here: the module will be called | ||
18 | bfs. Note that the file system of your root partition (the one | ||
19 | containing the directory /) cannot be compiled as a module. | ||
diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig new file mode 100644 index 000000000000..f8fcf999ea1b --- /dev/null +++ b/fs/btrfs/Kconfig | |||
@@ -0,0 +1,18 @@ | |||
1 | config BTRFS_FS | ||
2 | tristate "Btrfs filesystem (EXPERIMENTAL) Unstable disk format" | ||
3 | depends on EXPERIMENTAL | ||
4 | select LIBCRC32C | ||
5 | select ZLIB_INFLATE | ||
6 | select ZLIB_DEFLATE | ||
7 | help | ||
8 | Btrfs is a new filesystem with extents, writable snapshotting, | ||
9 | support for multiple devices and many more features. | ||
10 | |||
11 | Btrfs is highly experimental, and THE DISK FORMAT IS NOT YET | ||
12 | FINALIZED. You should say N here unless you are interested in | ||
13 | testing Btrfs with non-critical data. | ||
14 | |||
15 | To compile this file system support as a module, choose M here. The | ||
16 | module will be called btrfs. | ||
17 | |||
18 | If unsure, say N. | ||
diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h index 78049ea208db..b320b103fa13 100644 --- a/fs/btrfs/ioctl.h +++ b/fs/btrfs/ioctl.h | |||
@@ -22,13 +22,20 @@ | |||
22 | 22 | ||
23 | #define BTRFS_IOCTL_MAGIC 0x94 | 23 | #define BTRFS_IOCTL_MAGIC 0x94 |
24 | #define BTRFS_VOL_NAME_MAX 255 | 24 | #define BTRFS_VOL_NAME_MAX 255 |
25 | #define BTRFS_PATH_NAME_MAX 3072 | 25 | #define BTRFS_PATH_NAME_MAX 4087 |
26 | 26 | ||
27 | /* this should be 4k */ | ||
27 | struct btrfs_ioctl_vol_args { | 28 | struct btrfs_ioctl_vol_args { |
28 | __s64 fd; | 29 | __s64 fd; |
29 | char name[BTRFS_PATH_NAME_MAX + 1]; | 30 | char name[BTRFS_PATH_NAME_MAX + 1]; |
30 | }; | 31 | }; |
31 | 32 | ||
33 | struct btrfs_ioctl_clone_range_args { | ||
34 | __s64 src_fd; | ||
35 | __u64 src_offset, src_length; | ||
36 | __u64 dest_offset; | ||
37 | }; | ||
38 | |||
32 | #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ | 39 | #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ |
33 | struct btrfs_ioctl_vol_args) | 40 | struct btrfs_ioctl_vol_args) |
34 | #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \ | 41 | #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \ |
@@ -52,11 +59,6 @@ struct btrfs_ioctl_vol_args { | |||
52 | struct btrfs_ioctl_vol_args) | 59 | struct btrfs_ioctl_vol_args) |
53 | #define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \ | 60 | #define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \ |
54 | struct btrfs_ioctl_vol_args) | 61 | struct btrfs_ioctl_vol_args) |
55 | struct btrfs_ioctl_clone_range_args { | ||
56 | __s64 src_fd; | ||
57 | __u64 src_offset, src_length; | ||
58 | __u64 dest_offset; | ||
59 | }; | ||
60 | 62 | ||
61 | #define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ | 63 | #define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ |
62 | struct btrfs_ioctl_clone_range_args) | 64 | struct btrfs_ioctl_clone_range_args) |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 0a14b495532f..db9fb3bc1e33 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <linux/namei.h> | 38 | #include <linux/namei.h> |
39 | #include <linux/miscdevice.h> | 39 | #include <linux/miscdevice.h> |
40 | #include <linux/version.h> | 40 | #include <linux/version.h> |
41 | #include <linux/magic.h> | ||
41 | #include "compat.h" | 42 | #include "compat.h" |
42 | #include "ctree.h" | 43 | #include "ctree.h" |
43 | #include "disk-io.h" | 44 | #include "disk-io.h" |
@@ -51,7 +52,6 @@ | |||
51 | #include "export.h" | 52 | #include "export.h" |
52 | #include "compression.h" | 53 | #include "compression.h" |
53 | 54 | ||
54 | #define BTRFS_SUPER_MAGIC 0x9123683E | ||
55 | 55 | ||
56 | static struct super_operations btrfs_super_ops; | 56 | static struct super_operations btrfs_super_ops; |
57 | 57 | ||
@@ -582,7 +582,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd, | |||
582 | { | 582 | { |
583 | struct btrfs_ioctl_vol_args *vol; | 583 | struct btrfs_ioctl_vol_args *vol; |
584 | struct btrfs_fs_devices *fs_devices; | 584 | struct btrfs_fs_devices *fs_devices; |
585 | int ret = 0; | 585 | int ret = -ENOTTY; |
586 | int len; | 586 | int len; |
587 | 587 | ||
588 | if (!capable(CAP_SYS_ADMIN)) | 588 | if (!capable(CAP_SYS_ADMIN)) |
@@ -594,6 +594,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd, | |||
594 | goto out; | 594 | goto out; |
595 | } | 595 | } |
596 | len = strnlen(vol->name, BTRFS_PATH_NAME_MAX); | 596 | len = strnlen(vol->name, BTRFS_PATH_NAME_MAX); |
597 | |||
597 | switch (cmd) { | 598 | switch (cmd) { |
598 | case BTRFS_IOC_SCAN_DEV: | 599 | case BTRFS_IOC_SCAN_DEV: |
599 | ret = btrfs_scan_one_device(vol->name, FMODE_READ, | 600 | ret = btrfs_scan_one_device(vol->name, FMODE_READ, |
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index b187b537888e..3451e1cca2b5 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
@@ -220,6 +220,7 @@ loop: | |||
220 | tail->bi_next = old_head; | 220 | tail->bi_next = old_head; |
221 | else | 221 | else |
222 | device->pending_bio_tail = tail; | 222 | device->pending_bio_tail = tail; |
223 | device->running_pending = 0; | ||
223 | 224 | ||
224 | spin_unlock(&device->io_lock); | 225 | spin_unlock(&device->io_lock); |
225 | btrfs_requeue_work(&device->work); | 226 | btrfs_requeue_work(&device->work); |
diff --git a/fs/coda/Kconfig b/fs/coda/Kconfig new file mode 100644 index 000000000000..c0e5a7fad06d --- /dev/null +++ b/fs/coda/Kconfig | |||
@@ -0,0 +1,21 @@ | |||
1 | config CODA_FS | ||
2 | tristate "Coda file system support (advanced network fs)" | ||
3 | depends on INET | ||
4 | help | ||
5 | Coda is an advanced network file system, similar to NFS in that it | ||
6 | enables you to mount file systems of a remote server and access them | ||
7 | with regular Unix commands as if they were sitting on your hard | ||
8 | disk. Coda has several advantages over NFS: support for | ||
9 | disconnected operation (e.g. for laptops), read/write server | ||
10 | replication, security model for authentication and encryption, | ||
11 | persistent client caches and write back caching. | ||
12 | |||
13 | If you say Y here, your Linux box will be able to act as a Coda | ||
14 | *client*. You will need user level code as well, both for the | ||
15 | client and server. Servers are currently user level, i.e. they need | ||
16 | no kernel support. Please read | ||
17 | <file:Documentation/filesystems/coda.txt> and check out the Coda | ||
18 | home page <http://www.coda.cs.cmu.edu/>. | ||
19 | |||
20 | To compile the coda client support as a module, choose M here: the | ||
21 | module will be called coda. | ||
diff --git a/fs/configfs/Kconfig b/fs/configfs/Kconfig new file mode 100644 index 000000000000..13587cc97a0b --- /dev/null +++ b/fs/configfs/Kconfig | |||
@@ -0,0 +1,11 @@ | |||
1 | config CONFIGFS_FS | ||
2 | tristate "Userspace-driven configuration filesystem" | ||
3 | depends on SYSFS | ||
4 | help | ||
5 | configfs is a ram-based filesystem that provides the converse | ||
6 | of sysfs's functionality. Where sysfs is a filesystem-based | ||
7 | view of kernel objects, configfs is a filesystem-based manager | ||
8 | of kernel objects, or config_items. | ||
9 | |||
10 | Both sysfs and configfs can and should exist together on the | ||
11 | same system. One is not a replacement for the other. | ||
diff --git a/fs/cramfs/Kconfig b/fs/cramfs/Kconfig new file mode 100644 index 000000000000..cd06466f365e --- /dev/null +++ b/fs/cramfs/Kconfig | |||
@@ -0,0 +1,19 @@ | |||
1 | config CRAMFS | ||
2 | tristate "Compressed ROM file system support (cramfs)" | ||
3 | depends on BLOCK | ||
4 | select ZLIB_INFLATE | ||
5 | help | ||
6 | Saying Y here includes support for CramFs (Compressed ROM File | ||
7 | System). CramFs is designed to be a simple, small, and compressed | ||
8 | file system for ROM based embedded systems. CramFs is read-only, | ||
9 | limited to 256MB file systems (with 16MB files), and doesn't support | ||
10 | 16/32 bits uid/gid, hard links and timestamps. | ||
11 | |||
12 | See <file:Documentation/filesystems/cramfs.txt> and | ||
13 | <file:fs/cramfs/README> for further information. | ||
14 | |||
15 | To compile this as a module, choose M here: the module will be called | ||
16 | cramfs. Note that the root file system (the one containing the | ||
17 | directory /) cannot be compiled as a module. | ||
18 | |||
19 | If unsure, say N. | ||
diff --git a/fs/dlm/plock.c b/fs/dlm/plock.c index eba87ff3177b..894a32d438d5 100644 --- a/fs/dlm/plock.c +++ b/fs/dlm/plock.c | |||
@@ -168,7 +168,7 @@ static int dlm_plock_callback(struct plock_op *op) | |||
168 | notify = xop->callback; | 168 | notify = xop->callback; |
169 | 169 | ||
170 | if (op->info.rv) { | 170 | if (op->info.rv) { |
171 | notify(flc, NULL, op->info.rv); | 171 | notify(fl, NULL, op->info.rv); |
172 | goto out; | 172 | goto out; |
173 | } | 173 | } |
174 | 174 | ||
@@ -187,7 +187,7 @@ static int dlm_plock_callback(struct plock_op *op) | |||
187 | (unsigned long long)op->info.number, file, fl); | 187 | (unsigned long long)op->info.number, file, fl); |
188 | } | 188 | } |
189 | 189 | ||
190 | rv = notify(flc, NULL, 0); | 190 | rv = notify(fl, NULL, 0); |
191 | if (rv) { | 191 | if (rv) { |
192 | /* XXX: We need to cancel the fs lock here: */ | 192 | /* XXX: We need to cancel the fs lock here: */ |
193 | log_print("dlm_plock_callback: lock granted after lock request " | 193 | log_print("dlm_plock_callback: lock granted after lock request " |
@@ -304,7 +304,9 @@ int dlm_posix_get(dlm_lockspace_t *lockspace, u64 number, struct file *file, | |||
304 | if (rv == -ENOENT) | 304 | if (rv == -ENOENT) |
305 | rv = 0; | 305 | rv = 0; |
306 | else if (rv > 0) { | 306 | else if (rv > 0) { |
307 | locks_init_lock(fl); | ||
307 | fl->fl_type = (op->info.ex) ? F_WRLCK : F_RDLCK; | 308 | fl->fl_type = (op->info.ex) ? F_WRLCK : F_RDLCK; |
309 | fl->fl_flags = FL_POSIX; | ||
308 | fl->fl_pid = op->info.pid; | 310 | fl->fl_pid = op->info.pid; |
309 | fl->fl_start = op->info.start; | 311 | fl->fl_start = op->info.start; |
310 | fl->fl_end = op->info.end; | 312 | fl->fl_end = op->info.end; |
diff --git a/fs/dquot.c b/fs/dquot.c index 48c0571f831d..bca3cac4bee7 100644 --- a/fs/dquot.c +++ b/fs/dquot.c | |||
@@ -87,14 +87,17 @@ | |||
87 | #define __DQUOT_PARANOIA | 87 | #define __DQUOT_PARANOIA |
88 | 88 | ||
89 | /* | 89 | /* |
90 | * There are two quota SMP locks. dq_list_lock protects all lists with quotas | 90 | * There are three quota SMP locks. dq_list_lock protects all lists with quotas |
91 | * and quota formats and also dqstats structure containing statistics about the | 91 | * and quota formats, dqstats structure containing statistics about the lists |
92 | * lists. dq_data_lock protects data from dq_dqb and also mem_dqinfo structures | 92 | * dq_data_lock protects data from dq_dqb and also mem_dqinfo structures and |
93 | * and also guards consistency of dquot->dq_dqb with inode->i_blocks, i_bytes. | 93 | * also guards consistency of dquot->dq_dqb with inode->i_blocks, i_bytes. |
94 | * i_blocks and i_bytes updates itself are guarded by i_lock acquired directly | 94 | * i_blocks and i_bytes updates itself are guarded by i_lock acquired directly |
95 | * in inode_add_bytes() and inode_sub_bytes(). | 95 | * in inode_add_bytes() and inode_sub_bytes(). dq_state_lock protects |
96 | * modifications of quota state (on quotaon and quotaoff) and readers who care | ||
97 | * about latest values take it as well. | ||
96 | * | 98 | * |
97 | * The spinlock ordering is hence: dq_data_lock > dq_list_lock > i_lock | 99 | * The spinlock ordering is hence: dq_data_lock > dq_list_lock > i_lock, |
100 | * dq_list_lock > dq_state_lock | ||
98 | * | 101 | * |
99 | * Note that some things (eg. sb pointer, type, id) doesn't change during | 102 | * Note that some things (eg. sb pointer, type, id) doesn't change during |
100 | * the life of the dquot structure and so needn't to be protected by a lock | 103 | * the life of the dquot structure and so needn't to be protected by a lock |
@@ -103,12 +106,7 @@ | |||
103 | * operation is just reading pointers from inode (or not using them at all) the | 106 | * operation is just reading pointers from inode (or not using them at all) the |
104 | * read lock is enough. If pointers are altered function must hold write lock | 107 | * read lock is enough. If pointers are altered function must hold write lock |
105 | * (these locking rules also apply for S_NOQUOTA flag in the inode - note that | 108 | * (these locking rules also apply for S_NOQUOTA flag in the inode - note that |
106 | * for altering the flag i_mutex is also needed). If operation is holding | 109 | * for altering the flag i_mutex is also needed). |
107 | * reference to dquot in other way (e.g. quotactl ops) it must be guarded by | ||
108 | * dqonoff_mutex. | ||
109 | * This locking assures that: | ||
110 | * a) update/access to dquot pointers in inode is serialized | ||
111 | * b) everyone is guarded against invalidate_dquots() | ||
112 | * | 110 | * |
113 | * Each dquot has its dq_lock mutex. Locked dquots might not be referenced | 111 | * Each dquot has its dq_lock mutex. Locked dquots might not be referenced |
114 | * from inodes (dquot_alloc_space() and such don't check the dq_lock). | 112 | * from inodes (dquot_alloc_space() and such don't check the dq_lock). |
@@ -122,10 +120,17 @@ | |||
122 | * Lock ordering (including related VFS locks) is the following: | 120 | * Lock ordering (including related VFS locks) is the following: |
123 | * i_mutex > dqonoff_sem > journal_lock > dqptr_sem > dquot->dq_lock > | 121 | * i_mutex > dqonoff_sem > journal_lock > dqptr_sem > dquot->dq_lock > |
124 | * dqio_mutex | 122 | * dqio_mutex |
123 | * The lock ordering of dqptr_sem imposed by quota code is only dqonoff_sem > | ||
124 | * dqptr_sem. But filesystem has to count with the fact that functions such as | ||
125 | * dquot_alloc_space() acquire dqptr_sem and they usually have to be called | ||
126 | * from inside a transaction to keep filesystem consistency after a crash. Also | ||
127 | * filesystems usually want to do some IO on dquot from ->mark_dirty which is | ||
128 | * called with dqptr_sem held. | ||
125 | * i_mutex on quota files is special (it's below dqio_mutex) | 129 | * i_mutex on quota files is special (it's below dqio_mutex) |
126 | */ | 130 | */ |
127 | 131 | ||
128 | static DEFINE_SPINLOCK(dq_list_lock); | 132 | static DEFINE_SPINLOCK(dq_list_lock); |
133 | static DEFINE_SPINLOCK(dq_state_lock); | ||
129 | DEFINE_SPINLOCK(dq_data_lock); | 134 | DEFINE_SPINLOCK(dq_data_lock); |
130 | 135 | ||
131 | static char *quotatypes[] = INITQFNAMES; | 136 | static char *quotatypes[] = INITQFNAMES; |
@@ -428,7 +433,7 @@ static inline void do_destroy_dquot(struct dquot *dquot) | |||
428 | * quota is disabled and pointers from inodes removed so there cannot be new | 433 | * quota is disabled and pointers from inodes removed so there cannot be new |
429 | * quota users. There can still be some users of quotas due to inodes being | 434 | * quota users. There can still be some users of quotas due to inodes being |
430 | * just deleted or pruned by prune_icache() (those are not attached to any | 435 | * just deleted or pruned by prune_icache() (those are not attached to any |
431 | * list). We have to wait for such users. | 436 | * list) or parallel quotactl call. We have to wait for such users. |
432 | */ | 437 | */ |
433 | static void invalidate_dquots(struct super_block *sb, int type) | 438 | static void invalidate_dquots(struct super_block *sb, int type) |
434 | { | 439 | { |
@@ -600,7 +605,6 @@ static struct shrinker dqcache_shrinker = { | |||
600 | /* | 605 | /* |
601 | * Put reference to dquot | 606 | * Put reference to dquot |
602 | * NOTE: If you change this function please check whether dqput_blocks() works right... | 607 | * NOTE: If you change this function please check whether dqput_blocks() works right... |
603 | * MUST be called with either dqptr_sem or dqonoff_mutex held | ||
604 | */ | 608 | */ |
605 | void dqput(struct dquot *dquot) | 609 | void dqput(struct dquot *dquot) |
606 | { | 610 | { |
@@ -697,36 +701,30 @@ static struct dquot *get_empty_dquot(struct super_block *sb, int type) | |||
697 | } | 701 | } |
698 | 702 | ||
699 | /* | 703 | /* |
700 | * Check whether dquot is in memory. | ||
701 | * MUST be called with either dqptr_sem or dqonoff_mutex held | ||
702 | */ | ||
703 | int dquot_is_cached(struct super_block *sb, unsigned int id, int type) | ||
704 | { | ||
705 | unsigned int hashent = hashfn(sb, id, type); | ||
706 | int ret = 0; | ||
707 | |||
708 | if (!sb_has_quota_active(sb, type)) | ||
709 | return 0; | ||
710 | spin_lock(&dq_list_lock); | ||
711 | if (find_dquot(hashent, sb, id, type) != NODQUOT) | ||
712 | ret = 1; | ||
713 | spin_unlock(&dq_list_lock); | ||
714 | return ret; | ||
715 | } | ||
716 | |||
717 | /* | ||
718 | * Get reference to dquot | 704 | * Get reference to dquot |
719 | * MUST be called with either dqptr_sem or dqonoff_mutex held | 705 | * |
706 | * Locking is slightly tricky here. We are guarded from parallel quotaoff() | ||
707 | * destroying our dquot by: | ||
708 | * a) checking for quota flags under dq_list_lock and | ||
709 | * b) getting a reference to dquot before we release dq_list_lock | ||
720 | */ | 710 | */ |
721 | struct dquot *dqget(struct super_block *sb, unsigned int id, int type) | 711 | struct dquot *dqget(struct super_block *sb, unsigned int id, int type) |
722 | { | 712 | { |
723 | unsigned int hashent = hashfn(sb, id, type); | 713 | unsigned int hashent = hashfn(sb, id, type); |
724 | struct dquot *dquot, *empty = NODQUOT; | 714 | struct dquot *dquot = NODQUOT, *empty = NODQUOT; |
725 | 715 | ||
726 | if (!sb_has_quota_active(sb, type)) | 716 | if (!sb_has_quota_active(sb, type)) |
727 | return NODQUOT; | 717 | return NODQUOT; |
728 | we_slept: | 718 | we_slept: |
729 | spin_lock(&dq_list_lock); | 719 | spin_lock(&dq_list_lock); |
720 | spin_lock(&dq_state_lock); | ||
721 | if (!sb_has_quota_active(sb, type)) { | ||
722 | spin_unlock(&dq_state_lock); | ||
723 | spin_unlock(&dq_list_lock); | ||
724 | goto out; | ||
725 | } | ||
726 | spin_unlock(&dq_state_lock); | ||
727 | |||
730 | if ((dquot = find_dquot(hashent, sb, id, type)) == NODQUOT) { | 728 | if ((dquot = find_dquot(hashent, sb, id, type)) == NODQUOT) { |
731 | if (empty == NODQUOT) { | 729 | if (empty == NODQUOT) { |
732 | spin_unlock(&dq_list_lock); | 730 | spin_unlock(&dq_list_lock); |
@@ -735,6 +733,7 @@ we_slept: | |||
735 | goto we_slept; | 733 | goto we_slept; |
736 | } | 734 | } |
737 | dquot = empty; | 735 | dquot = empty; |
736 | empty = NODQUOT; | ||
738 | dquot->dq_id = id; | 737 | dquot->dq_id = id; |
739 | /* all dquots go on the inuse_list */ | 738 | /* all dquots go on the inuse_list */ |
740 | put_inuse(dquot); | 739 | put_inuse(dquot); |
@@ -749,8 +748,6 @@ we_slept: | |||
749 | dqstats.cache_hits++; | 748 | dqstats.cache_hits++; |
750 | dqstats.lookups++; | 749 | dqstats.lookups++; |
751 | spin_unlock(&dq_list_lock); | 750 | spin_unlock(&dq_list_lock); |
752 | if (empty) | ||
753 | do_destroy_dquot(empty); | ||
754 | } | 751 | } |
755 | /* Wait for dq_lock - after this we know that either dquot_release() is already | 752 | /* Wait for dq_lock - after this we know that either dquot_release() is already |
756 | * finished or it will be canceled due to dq_count > 1 test */ | 753 | * finished or it will be canceled due to dq_count > 1 test */ |
@@ -758,11 +755,15 @@ we_slept: | |||
758 | /* Read the dquot and instantiate it (everything done only if needed) */ | 755 | /* Read the dquot and instantiate it (everything done only if needed) */ |
759 | if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && sb->dq_op->acquire_dquot(dquot) < 0) { | 756 | if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && sb->dq_op->acquire_dquot(dquot) < 0) { |
760 | dqput(dquot); | 757 | dqput(dquot); |
761 | return NODQUOT; | 758 | dquot = NODQUOT; |
759 | goto out; | ||
762 | } | 760 | } |
763 | #ifdef __DQUOT_PARANOIA | 761 | #ifdef __DQUOT_PARANOIA |
764 | BUG_ON(!dquot->dq_sb); /* Has somebody invalidated entry under us? */ | 762 | BUG_ON(!dquot->dq_sb); /* Has somebody invalidated entry under us? */ |
765 | #endif | 763 | #endif |
764 | out: | ||
765 | if (empty) | ||
766 | do_destroy_dquot(empty); | ||
766 | 767 | ||
767 | return dquot; | 768 | return dquot; |
768 | } | 769 | } |
@@ -1198,63 +1199,76 @@ static int info_bdq_free(struct dquot *dquot, qsize_t space) | |||
1198 | } | 1199 | } |
1199 | /* | 1200 | /* |
1200 | * Initialize quota pointers in inode | 1201 | * Initialize quota pointers in inode |
1201 | * Transaction must be started at entry | 1202 | * We do things in a bit complicated way but by that we avoid calling |
1203 | * dqget() and thus filesystem callbacks under dqptr_sem. | ||
1202 | */ | 1204 | */ |
1203 | int dquot_initialize(struct inode *inode, int type) | 1205 | int dquot_initialize(struct inode *inode, int type) |
1204 | { | 1206 | { |
1205 | unsigned int id = 0; | 1207 | unsigned int id = 0; |
1206 | int cnt, ret = 0; | 1208 | int cnt, ret = 0; |
1209 | struct dquot *got[MAXQUOTAS] = { NODQUOT, NODQUOT }; | ||
1210 | struct super_block *sb = inode->i_sb; | ||
1207 | 1211 | ||
1208 | /* First test before acquiring mutex - solves deadlocks when we | 1212 | /* First test before acquiring mutex - solves deadlocks when we |
1209 | * re-enter the quota code and are already holding the mutex */ | 1213 | * re-enter the quota code and are already holding the mutex */ |
1210 | if (IS_NOQUOTA(inode)) | 1214 | if (IS_NOQUOTA(inode)) |
1211 | return 0; | 1215 | return 0; |
1212 | down_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | 1216 | |
1217 | /* First get references to structures we might need. */ | ||
1218 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | ||
1219 | if (type != -1 && cnt != type) | ||
1220 | continue; | ||
1221 | switch (cnt) { | ||
1222 | case USRQUOTA: | ||
1223 | id = inode->i_uid; | ||
1224 | break; | ||
1225 | case GRPQUOTA: | ||
1226 | id = inode->i_gid; | ||
1227 | break; | ||
1228 | } | ||
1229 | got[cnt] = dqget(sb, id, cnt); | ||
1230 | } | ||
1231 | |||
1232 | down_write(&sb_dqopt(sb)->dqptr_sem); | ||
1213 | /* Having dqptr_sem we know NOQUOTA flags can't be altered... */ | 1233 | /* Having dqptr_sem we know NOQUOTA flags can't be altered... */ |
1214 | if (IS_NOQUOTA(inode)) | 1234 | if (IS_NOQUOTA(inode)) |
1215 | goto out_err; | 1235 | goto out_err; |
1216 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | 1236 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { |
1217 | if (type != -1 && cnt != type) | 1237 | if (type != -1 && cnt != type) |
1218 | continue; | 1238 | continue; |
1239 | /* Avoid races with quotaoff() */ | ||
1240 | if (!sb_has_quota_active(sb, cnt)) | ||
1241 | continue; | ||
1219 | if (inode->i_dquot[cnt] == NODQUOT) { | 1242 | if (inode->i_dquot[cnt] == NODQUOT) { |
1220 | switch (cnt) { | 1243 | inode->i_dquot[cnt] = got[cnt]; |
1221 | case USRQUOTA: | 1244 | got[cnt] = NODQUOT; |
1222 | id = inode->i_uid; | ||
1223 | break; | ||
1224 | case GRPQUOTA: | ||
1225 | id = inode->i_gid; | ||
1226 | break; | ||
1227 | } | ||
1228 | inode->i_dquot[cnt] = dqget(inode->i_sb, id, cnt); | ||
1229 | } | 1245 | } |
1230 | } | 1246 | } |
1231 | out_err: | 1247 | out_err: |
1232 | up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | 1248 | up_write(&sb_dqopt(sb)->dqptr_sem); |
1249 | /* Drop unused references */ | ||
1250 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) | ||
1251 | dqput(got[cnt]); | ||
1233 | return ret; | 1252 | return ret; |
1234 | } | 1253 | } |
1235 | 1254 | ||
1236 | /* | 1255 | /* |
1237 | * Release all quotas referenced by inode | 1256 | * Release all quotas referenced by inode |
1238 | * Transaction must be started at an entry | ||
1239 | */ | 1257 | */ |
1240 | int dquot_drop_locked(struct inode *inode) | 1258 | int dquot_drop(struct inode *inode) |
1241 | { | 1259 | { |
1242 | int cnt; | 1260 | int cnt; |
1261 | struct dquot *put[MAXQUOTAS]; | ||
1243 | 1262 | ||
1263 | down_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | ||
1244 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | 1264 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { |
1245 | if (inode->i_dquot[cnt] != NODQUOT) { | 1265 | put[cnt] = inode->i_dquot[cnt]; |
1246 | dqput(inode->i_dquot[cnt]); | 1266 | inode->i_dquot[cnt] = NODQUOT; |
1247 | inode->i_dquot[cnt] = NODQUOT; | ||
1248 | } | ||
1249 | } | 1267 | } |
1250 | return 0; | ||
1251 | } | ||
1252 | |||
1253 | int dquot_drop(struct inode *inode) | ||
1254 | { | ||
1255 | down_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | ||
1256 | dquot_drop_locked(inode); | ||
1257 | up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | 1268 | up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); |
1269 | |||
1270 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) | ||
1271 | dqput(put[cnt]); | ||
1258 | return 0; | 1272 | return 0; |
1259 | } | 1273 | } |
1260 | 1274 | ||
@@ -1470,8 +1484,9 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr) | |||
1470 | qsize_t space; | 1484 | qsize_t space; |
1471 | struct dquot *transfer_from[MAXQUOTAS]; | 1485 | struct dquot *transfer_from[MAXQUOTAS]; |
1472 | struct dquot *transfer_to[MAXQUOTAS]; | 1486 | struct dquot *transfer_to[MAXQUOTAS]; |
1473 | int cnt, ret = NO_QUOTA, chuid = (iattr->ia_valid & ATTR_UID) && inode->i_uid != iattr->ia_uid, | 1487 | int cnt, ret = QUOTA_OK; |
1474 | chgid = (iattr->ia_valid & ATTR_GID) && inode->i_gid != iattr->ia_gid; | 1488 | int chuid = iattr->ia_valid & ATTR_UID && inode->i_uid != iattr->ia_uid, |
1489 | chgid = iattr->ia_valid & ATTR_GID && inode->i_gid != iattr->ia_gid; | ||
1475 | char warntype_to[MAXQUOTAS]; | 1490 | char warntype_to[MAXQUOTAS]; |
1476 | char warntype_from_inodes[MAXQUOTAS], warntype_from_space[MAXQUOTAS]; | 1491 | char warntype_from_inodes[MAXQUOTAS], warntype_from_space[MAXQUOTAS]; |
1477 | 1492 | ||
@@ -1479,21 +1494,11 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr) | |||
1479 | * re-enter the quota code and are already holding the mutex */ | 1494 | * re-enter the quota code and are already holding the mutex */ |
1480 | if (IS_NOQUOTA(inode)) | 1495 | if (IS_NOQUOTA(inode)) |
1481 | return QUOTA_OK; | 1496 | return QUOTA_OK; |
1482 | /* Clear the arrays */ | 1497 | /* Initialize the arrays */ |
1483 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | 1498 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { |
1484 | transfer_to[cnt] = transfer_from[cnt] = NODQUOT; | 1499 | transfer_from[cnt] = NODQUOT; |
1500 | transfer_to[cnt] = NODQUOT; | ||
1485 | warntype_to[cnt] = QUOTA_NL_NOWARN; | 1501 | warntype_to[cnt] = QUOTA_NL_NOWARN; |
1486 | } | ||
1487 | down_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | ||
1488 | /* Now recheck reliably when holding dqptr_sem */ | ||
1489 | if (IS_NOQUOTA(inode)) { /* File without quota accounting? */ | ||
1490 | up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | ||
1491 | return QUOTA_OK; | ||
1492 | } | ||
1493 | /* First build the transfer_to list - here we can block on | ||
1494 | * reading/instantiating of dquots. We know that the transaction for | ||
1495 | * us was already started so we don't violate lock ranking here */ | ||
1496 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | ||
1497 | switch (cnt) { | 1502 | switch (cnt) { |
1498 | case USRQUOTA: | 1503 | case USRQUOTA: |
1499 | if (!chuid) | 1504 | if (!chuid) |
@@ -1507,6 +1512,13 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr) | |||
1507 | break; | 1512 | break; |
1508 | } | 1513 | } |
1509 | } | 1514 | } |
1515 | |||
1516 | down_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | ||
1517 | /* Now recheck reliably when holding dqptr_sem */ | ||
1518 | if (IS_NOQUOTA(inode)) { /* File without quota accounting? */ | ||
1519 | up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | ||
1520 | goto put_all; | ||
1521 | } | ||
1510 | spin_lock(&dq_data_lock); | 1522 | spin_lock(&dq_data_lock); |
1511 | space = inode_get_bytes(inode); | 1523 | space = inode_get_bytes(inode); |
1512 | /* Build the transfer_from list and check the limits */ | 1524 | /* Build the transfer_from list and check the limits */ |
@@ -1517,7 +1529,7 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr) | |||
1517 | if (check_idq(transfer_to[cnt], 1, warntype_to + cnt) == | 1529 | if (check_idq(transfer_to[cnt], 1, warntype_to + cnt) == |
1518 | NO_QUOTA || check_bdq(transfer_to[cnt], space, 0, | 1530 | NO_QUOTA || check_bdq(transfer_to[cnt], space, 0, |
1519 | warntype_to + cnt) == NO_QUOTA) | 1531 | warntype_to + cnt) == NO_QUOTA) |
1520 | goto warn_put_all; | 1532 | goto over_quota; |
1521 | } | 1533 | } |
1522 | 1534 | ||
1523 | /* | 1535 | /* |
@@ -1545,28 +1557,37 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr) | |||
1545 | 1557 | ||
1546 | inode->i_dquot[cnt] = transfer_to[cnt]; | 1558 | inode->i_dquot[cnt] = transfer_to[cnt]; |
1547 | } | 1559 | } |
1548 | ret = QUOTA_OK; | ||
1549 | warn_put_all: | ||
1550 | spin_unlock(&dq_data_lock); | 1560 | spin_unlock(&dq_data_lock); |
1561 | up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | ||
1562 | |||
1551 | /* Dirtify all the dquots - this can block when journalling */ | 1563 | /* Dirtify all the dquots - this can block when journalling */ |
1552 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | 1564 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { |
1553 | if (transfer_from[cnt]) | 1565 | if (transfer_from[cnt]) |
1554 | mark_dquot_dirty(transfer_from[cnt]); | 1566 | mark_dquot_dirty(transfer_from[cnt]); |
1555 | if (transfer_to[cnt]) | 1567 | if (transfer_to[cnt]) { |
1556 | mark_dquot_dirty(transfer_to[cnt]); | 1568 | mark_dquot_dirty(transfer_to[cnt]); |
1569 | /* The reference we got is transferred to the inode */ | ||
1570 | transfer_to[cnt] = NODQUOT; | ||
1571 | } | ||
1557 | } | 1572 | } |
1573 | warn_put_all: | ||
1558 | flush_warnings(transfer_to, warntype_to); | 1574 | flush_warnings(transfer_to, warntype_to); |
1559 | flush_warnings(transfer_from, warntype_from_inodes); | 1575 | flush_warnings(transfer_from, warntype_from_inodes); |
1560 | flush_warnings(transfer_from, warntype_from_space); | 1576 | flush_warnings(transfer_from, warntype_from_space); |
1561 | 1577 | put_all: | |
1562 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | 1578 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { |
1563 | if (ret == QUOTA_OK && transfer_from[cnt] != NODQUOT) | 1579 | dqput(transfer_from[cnt]); |
1564 | dqput(transfer_from[cnt]); | 1580 | dqput(transfer_to[cnt]); |
1565 | if (ret == NO_QUOTA && transfer_to[cnt] != NODQUOT) | ||
1566 | dqput(transfer_to[cnt]); | ||
1567 | } | 1581 | } |
1568 | up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | ||
1569 | return ret; | 1582 | return ret; |
1583 | over_quota: | ||
1584 | spin_unlock(&dq_data_lock); | ||
1585 | up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); | ||
1586 | /* Clear dquot pointers we don't want to dqput() */ | ||
1587 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) | ||
1588 | transfer_from[cnt] = NODQUOT; | ||
1589 | ret = NO_QUOTA; | ||
1590 | goto warn_put_all; | ||
1570 | } | 1591 | } |
1571 | 1592 | ||
1572 | /* Wrapper for transferring ownership of an inode */ | 1593 | /* Wrapper for transferring ownership of an inode */ |
@@ -1651,19 +1672,24 @@ int vfs_quota_disable(struct super_block *sb, int type, unsigned int flags) | |||
1651 | continue; | 1672 | continue; |
1652 | 1673 | ||
1653 | if (flags & DQUOT_SUSPENDED) { | 1674 | if (flags & DQUOT_SUSPENDED) { |
1675 | spin_lock(&dq_state_lock); | ||
1654 | dqopt->flags |= | 1676 | dqopt->flags |= |
1655 | dquot_state_flag(DQUOT_SUSPENDED, cnt); | 1677 | dquot_state_flag(DQUOT_SUSPENDED, cnt); |
1678 | spin_unlock(&dq_state_lock); | ||
1656 | } else { | 1679 | } else { |
1680 | spin_lock(&dq_state_lock); | ||
1657 | dqopt->flags &= ~dquot_state_flag(flags, cnt); | 1681 | dqopt->flags &= ~dquot_state_flag(flags, cnt); |
1658 | /* Turning off suspended quotas? */ | 1682 | /* Turning off suspended quotas? */ |
1659 | if (!sb_has_quota_loaded(sb, cnt) && | 1683 | if (!sb_has_quota_loaded(sb, cnt) && |
1660 | sb_has_quota_suspended(sb, cnt)) { | 1684 | sb_has_quota_suspended(sb, cnt)) { |
1661 | dqopt->flags &= ~dquot_state_flag( | 1685 | dqopt->flags &= ~dquot_state_flag( |
1662 | DQUOT_SUSPENDED, cnt); | 1686 | DQUOT_SUSPENDED, cnt); |
1687 | spin_unlock(&dq_state_lock); | ||
1663 | iput(dqopt->files[cnt]); | 1688 | iput(dqopt->files[cnt]); |
1664 | dqopt->files[cnt] = NULL; | 1689 | dqopt->files[cnt] = NULL; |
1665 | continue; | 1690 | continue; |
1666 | } | 1691 | } |
1692 | spin_unlock(&dq_state_lock); | ||
1667 | } | 1693 | } |
1668 | 1694 | ||
1669 | /* We still have to keep quota loaded? */ | 1695 | /* We still have to keep quota loaded? */ |
@@ -1830,7 +1856,9 @@ static int vfs_load_quota_inode(struct inode *inode, int type, int format_id, | |||
1830 | } | 1856 | } |
1831 | mutex_unlock(&dqopt->dqio_mutex); | 1857 | mutex_unlock(&dqopt->dqio_mutex); |
1832 | mutex_unlock(&inode->i_mutex); | 1858 | mutex_unlock(&inode->i_mutex); |
1859 | spin_lock(&dq_state_lock); | ||
1833 | dqopt->flags |= dquot_state_flag(flags, type); | 1860 | dqopt->flags |= dquot_state_flag(flags, type); |
1861 | spin_unlock(&dq_state_lock); | ||
1834 | 1862 | ||
1835 | add_dquot_ref(sb, type); | 1863 | add_dquot_ref(sb, type); |
1836 | mutex_unlock(&dqopt->dqonoff_mutex); | 1864 | mutex_unlock(&dqopt->dqonoff_mutex); |
@@ -1872,9 +1900,11 @@ static int vfs_quota_on_remount(struct super_block *sb, int type) | |||
1872 | } | 1900 | } |
1873 | inode = dqopt->files[type]; | 1901 | inode = dqopt->files[type]; |
1874 | dqopt->files[type] = NULL; | 1902 | dqopt->files[type] = NULL; |
1903 | spin_lock(&dq_state_lock); | ||
1875 | flags = dqopt->flags & dquot_state_flag(DQUOT_USAGE_ENABLED | | 1904 | flags = dqopt->flags & dquot_state_flag(DQUOT_USAGE_ENABLED | |
1876 | DQUOT_LIMITS_ENABLED, type); | 1905 | DQUOT_LIMITS_ENABLED, type); |
1877 | dqopt->flags &= ~dquot_state_flag(DQUOT_STATE_FLAGS, type); | 1906 | dqopt->flags &= ~dquot_state_flag(DQUOT_STATE_FLAGS, type); |
1907 | spin_unlock(&dq_state_lock); | ||
1878 | mutex_unlock(&dqopt->dqonoff_mutex); | 1908 | mutex_unlock(&dqopt->dqonoff_mutex); |
1879 | 1909 | ||
1880 | flags = dquot_generic_flag(flags, type); | 1910 | flags = dquot_generic_flag(flags, type); |
@@ -1952,7 +1982,9 @@ int vfs_quota_enable(struct inode *inode, int type, int format_id, | |||
1952 | ret = -EBUSY; | 1982 | ret = -EBUSY; |
1953 | goto out_lock; | 1983 | goto out_lock; |
1954 | } | 1984 | } |
1985 | spin_lock(&dq_state_lock); | ||
1955 | sb_dqopt(sb)->flags |= dquot_state_flag(flags, type); | 1986 | sb_dqopt(sb)->flags |= dquot_state_flag(flags, type); |
1987 | spin_unlock(&dq_state_lock); | ||
1956 | out_lock: | 1988 | out_lock: |
1957 | mutex_unlock(&dqopt->dqonoff_mutex); | 1989 | mutex_unlock(&dqopt->dqonoff_mutex); |
1958 | return ret; | 1990 | return ret; |
@@ -2039,14 +2071,12 @@ int vfs_get_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *d | |||
2039 | { | 2071 | { |
2040 | struct dquot *dquot; | 2072 | struct dquot *dquot; |
2041 | 2073 | ||
2042 | mutex_lock(&sb_dqopt(sb)->dqonoff_mutex); | 2074 | dquot = dqget(sb, id, type); |
2043 | if (!(dquot = dqget(sb, id, type))) { | 2075 | if (dquot == NODQUOT) |
2044 | mutex_unlock(&sb_dqopt(sb)->dqonoff_mutex); | ||
2045 | return -ESRCH; | 2076 | return -ESRCH; |
2046 | } | ||
2047 | do_get_dqblk(dquot, di); | 2077 | do_get_dqblk(dquot, di); |
2048 | dqput(dquot); | 2078 | dqput(dquot); |
2049 | mutex_unlock(&sb_dqopt(sb)->dqonoff_mutex); | 2079 | |
2050 | return 0; | 2080 | return 0; |
2051 | } | 2081 | } |
2052 | 2082 | ||
@@ -2130,7 +2160,6 @@ int vfs_set_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *d | |||
2130 | struct dquot *dquot; | 2160 | struct dquot *dquot; |
2131 | int rc; | 2161 | int rc; |
2132 | 2162 | ||
2133 | mutex_lock(&sb_dqopt(sb)->dqonoff_mutex); | ||
2134 | dquot = dqget(sb, id, type); | 2163 | dquot = dqget(sb, id, type); |
2135 | if (!dquot) { | 2164 | if (!dquot) { |
2136 | rc = -ESRCH; | 2165 | rc = -ESRCH; |
@@ -2139,7 +2168,6 @@ int vfs_set_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *d | |||
2139 | rc = do_set_dqblk(dquot, di); | 2168 | rc = do_set_dqblk(dquot, di); |
2140 | dqput(dquot); | 2169 | dqput(dquot); |
2141 | out: | 2170 | out: |
2142 | mutex_unlock(&sb_dqopt(sb)->dqonoff_mutex); | ||
2143 | return rc; | 2171 | return rc; |
2144 | } | 2172 | } |
2145 | 2173 | ||
@@ -2370,11 +2398,9 @@ EXPORT_SYMBOL(dquot_release); | |||
2370 | EXPORT_SYMBOL(dquot_mark_dquot_dirty); | 2398 | EXPORT_SYMBOL(dquot_mark_dquot_dirty); |
2371 | EXPORT_SYMBOL(dquot_initialize); | 2399 | EXPORT_SYMBOL(dquot_initialize); |
2372 | EXPORT_SYMBOL(dquot_drop); | 2400 | EXPORT_SYMBOL(dquot_drop); |
2373 | EXPORT_SYMBOL(dquot_drop_locked); | ||
2374 | EXPORT_SYMBOL(vfs_dq_drop); | 2401 | EXPORT_SYMBOL(vfs_dq_drop); |
2375 | EXPORT_SYMBOL(dqget); | 2402 | EXPORT_SYMBOL(dqget); |
2376 | EXPORT_SYMBOL(dqput); | 2403 | EXPORT_SYMBOL(dqput); |
2377 | EXPORT_SYMBOL(dquot_is_cached); | ||
2378 | EXPORT_SYMBOL(dquot_alloc_space); | 2404 | EXPORT_SYMBOL(dquot_alloc_space); |
2379 | EXPORT_SYMBOL(dquot_alloc_inode); | 2405 | EXPORT_SYMBOL(dquot_alloc_inode); |
2380 | EXPORT_SYMBOL(dquot_free_space); | 2406 | EXPORT_SYMBOL(dquot_free_space); |
diff --git a/fs/ecryptfs/Kconfig b/fs/ecryptfs/Kconfig new file mode 100644 index 000000000000..0c754e64232b --- /dev/null +++ b/fs/ecryptfs/Kconfig | |||
@@ -0,0 +1,11 @@ | |||
1 | config ECRYPT_FS | ||
2 | tristate "eCrypt filesystem layer support (EXPERIMENTAL)" | ||
3 | depends on EXPERIMENTAL && KEYS && CRYPTO && NET | ||
4 | help | ||
5 | Encrypted filesystem that operates on the VFS layer. See | ||
6 | <file:Documentation/filesystems/ecryptfs.txt> to learn more about | ||
7 | eCryptfs. Userspace components are required and can be | ||
8 | obtained from <http://ecryptfs.sf.net>. | ||
9 | |||
10 | To compile this file system support as a module, choose M here: the | ||
11 | module will be called ecryptfs. | ||
diff --git a/fs/efs/Kconfig b/fs/efs/Kconfig new file mode 100644 index 000000000000..6ebfc1c207a8 --- /dev/null +++ b/fs/efs/Kconfig | |||
@@ -0,0 +1,14 @@ | |||
1 | config EFS_FS | ||
2 | tristate "EFS file system support (read only) (EXPERIMENTAL)" | ||
3 | depends on BLOCK && EXPERIMENTAL | ||
4 | help | ||
5 | EFS is an older file system used for non-ISO9660 CD-ROMs and hard | ||
6 | disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer | ||
7 | uses the XFS file system for hard disk partitions however). | ||
8 | |||
9 | This implementation only offers read-only access. If you don't know | ||
10 | what all this is about, it's safe to say N. For more information | ||
11 | about EFS see its home page at <http://aeschi.ch.eu.org/efs/>. | ||
12 | |||
13 | To compile the EFS file system support as a module, choose M here: the | ||
14 | module will be called efs. | ||
diff --git a/fs/ext2/dir.c b/fs/ext2/dir.c index 9a0fc400f91c..2999d72153b7 100644 --- a/fs/ext2/dir.c +++ b/fs/ext2/dir.c | |||
@@ -95,10 +95,13 @@ static int ext2_commit_chunk(struct page *page, loff_t pos, unsigned len) | |||
95 | mark_inode_dirty(dir); | 95 | mark_inode_dirty(dir); |
96 | } | 96 | } |
97 | 97 | ||
98 | if (IS_DIRSYNC(dir)) | 98 | if (IS_DIRSYNC(dir)) { |
99 | err = write_one_page(page, 1); | 99 | err = write_one_page(page, 1); |
100 | else | 100 | if (!err) |
101 | err = ext2_sync_inode(dir); | ||
102 | } else { | ||
101 | unlock_page(page); | 103 | unlock_page(page); |
104 | } | ||
102 | 105 | ||
103 | return err; | 106 | return err; |
104 | } | 107 | } |
diff --git a/fs/fat/Kconfig b/fs/fat/Kconfig new file mode 100644 index 000000000000..d0a69ff25375 --- /dev/null +++ b/fs/fat/Kconfig | |||
@@ -0,0 +1,97 @@ | |||
1 | config FAT_FS | ||
2 | tristate | ||
3 | select NLS | ||
4 | help | ||
5 | If you want to use one of the FAT-based file systems (the MS-DOS and | ||
6 | VFAT (Windows 95) file systems), then you must say Y or M here | ||
7 | to include FAT support. You will then be able to mount partitions or | ||
8 | diskettes with FAT-based file systems and transparently access the | ||
9 | files on them, i.e. MSDOS files will look and behave just like all | ||
10 | other Unix files. | ||
11 | |||
12 | This FAT support is not a file system in itself, it only provides | ||
13 | the foundation for the other file systems. You will have to say Y or | ||
14 | M to at least one of "MSDOS fs support" or "VFAT fs support" in | ||
15 | order to make use of it. | ||
16 | |||
17 | Another way to read and write MSDOS floppies and hard drive | ||
18 | partitions from within Linux (but not transparently) is with the | ||
19 | mtools ("man mtools") program suite. You don't need to say Y here in | ||
20 | order to do that. | ||
21 | |||
22 | If you need to move large files on floppies between a DOS and a | ||
23 | Linux box, say Y here, mount the floppy under Linux with an MSDOS | ||
24 | file system and use GNU tar's M option. GNU tar is a program | ||
25 | available for Unix and DOS ("man tar" or "info tar"). | ||
26 | |||
27 | The FAT support will enlarge your kernel by about 37 KB. If unsure, | ||
28 | say Y. | ||
29 | |||
30 | To compile this as a module, choose M here: the module will be called | ||
31 | fat. Note that if you compile the FAT support as a module, you | ||
32 | cannot compile any of the FAT-based file systems into the kernel | ||
33 | -- they will have to be modules as well. | ||
34 | |||
35 | config MSDOS_FS | ||
36 | tristate "MSDOS fs support" | ||
37 | select FAT_FS | ||
38 | help | ||
39 | This allows you to mount MSDOS partitions of your hard drive (unless | ||
40 | they are compressed; to access compressed MSDOS partitions under | ||
41 | Linux, you can either use the DOS emulator DOSEMU, described in the | ||
42 | DOSEMU-HOWTO, available from | ||
43 | <http://www.tldp.org/docs.html#howto>, or try dmsdosfs in | ||
44 | <ftp://ibiblio.org/pub/Linux/system/filesystems/dosfs/>. If you | ||
45 | intend to use dosemu with a non-compressed MSDOS partition, say Y | ||
46 | here) and MSDOS floppies. This means that file access becomes | ||
47 | transparent, i.e. the MSDOS files look and behave just like all | ||
48 | other Unix files. | ||
49 | |||
50 | If you have Windows 95 or Windows NT installed on your MSDOS | ||
51 | partitions, you should use the VFAT file system (say Y to "VFAT fs | ||
52 | support" below), or you will not be able to see the long filenames | ||
53 | generated by Windows 95 / Windows NT. | ||
54 | |||
55 | This option will enlarge your kernel by about 7 KB. If unsure, | ||
56 | answer Y. This will only work if you said Y to "DOS FAT fs support" | ||
57 | as well. To compile this as a module, choose M here: the module will | ||
58 | be called msdos. | ||
59 | |||
60 | config VFAT_FS | ||
61 | tristate "VFAT (Windows-95) fs support" | ||
62 | select FAT_FS | ||
63 | help | ||
64 | This option provides support for normal Windows file systems with | ||
65 | long filenames. That includes non-compressed FAT-based file systems | ||
66 | used by Windows 95, Windows 98, Windows NT 4.0, and the Unix | ||
67 | programs from the mtools package. | ||
68 | |||
69 | The VFAT support enlarges your kernel by about 10 KB and it only | ||
70 | works if you said Y to the "DOS FAT fs support" above. Please read | ||
71 | the file <file:Documentation/filesystems/vfat.txt> for details. If | ||
72 | unsure, say Y. | ||
73 | |||
74 | To compile this as a module, choose M here: the module will be called | ||
75 | vfat. | ||
76 | |||
77 | config FAT_DEFAULT_CODEPAGE | ||
78 | int "Default codepage for FAT" | ||
79 | depends on MSDOS_FS || VFAT_FS | ||
80 | default 437 | ||
81 | help | ||
82 | This option should be set to the codepage of your FAT filesystems. | ||
83 | It can be overridden with the "codepage" mount option. | ||
84 | See <file:Documentation/filesystems/vfat.txt> for more information. | ||
85 | |||
86 | config FAT_DEFAULT_IOCHARSET | ||
87 | string "Default iocharset for FAT" | ||
88 | depends on VFAT_FS | ||
89 | default "iso8859-1" | ||
90 | help | ||
91 | Set this to the default input/output character set you'd | ||
92 | like FAT to use. It should probably match the character set | ||
93 | that most of your FAT filesystems use, and can be overridden | ||
94 | with the "iocharset" mount option for FAT filesystems. | ||
95 | Note that "utf8" is not recommended for FAT filesystems. | ||
96 | If unsure, you shouldn't set "utf8" here. | ||
97 | See <file:Documentation/filesystems/vfat.txt> for more information. | ||
diff --git a/fs/freevxfs/Kconfig b/fs/freevxfs/Kconfig new file mode 100644 index 000000000000..8dc1cd5c1efe --- /dev/null +++ b/fs/freevxfs/Kconfig | |||
@@ -0,0 +1,16 @@ | |||
1 | config VXFS_FS | ||
2 | tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)" | ||
3 | depends on BLOCK | ||
4 | help | ||
5 | FreeVxFS is a file system driver that support the VERITAS VxFS(TM) | ||
6 | file system format. VERITAS VxFS(TM) is the standard file system | ||
7 | of SCO UnixWare (and possibly others) and optionally available | ||
8 | for Sunsoft Solaris, HP-UX and many other operating systems. | ||
9 | Currently only readonly access is supported. | ||
10 | |||
11 | NOTE: the file system type as used by mount(1), mount(2) and | ||
12 | fstab(5) is 'vxfs' as it describes the file system format, not | ||
13 | the actual driver. | ||
14 | |||
15 | To compile this as a module, choose M here: the module will be | ||
16 | called freevxfs. If unsure, say N. | ||
diff --git a/fs/fuse/Kconfig b/fs/fuse/Kconfig new file mode 100644 index 000000000000..0cf160a94eda --- /dev/null +++ b/fs/fuse/Kconfig | |||
@@ -0,0 +1,15 @@ | |||
1 | config FUSE_FS | ||
2 | tristate "FUSE (Filesystem in Userspace) support" | ||
3 | help | ||
4 | With FUSE it is possible to implement a fully functional filesystem | ||
5 | in a userspace program. | ||
6 | |||
7 | There's also companion library: libfuse. This library along with | ||
8 | utilities is available from the FUSE homepage: | ||
9 | <http://fuse.sourceforge.net/> | ||
10 | |||
11 | See <file:Documentation/filesystems/fuse.txt> for more information. | ||
12 | See <file:Documentation/Changes> for needed library/utility version. | ||
13 | |||
14 | If you want to develop a userspace FS, or if you want to use | ||
15 | a filesystem based on FUSE, answer Y or M. | ||
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index e0c7ada08a1f..ba76b68c52ff 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c | |||
@@ -281,7 +281,8 @@ __releases(&fc->lock) | |||
281 | fc->blocked = 0; | 281 | fc->blocked = 0; |
282 | wake_up_all(&fc->blocked_waitq); | 282 | wake_up_all(&fc->blocked_waitq); |
283 | } | 283 | } |
284 | if (fc->num_background == FUSE_CONGESTION_THRESHOLD) { | 284 | if (fc->num_background == FUSE_CONGESTION_THRESHOLD && |
285 | fc->connected) { | ||
285 | clear_bdi_congested(&fc->bdi, READ); | 286 | clear_bdi_congested(&fc->bdi, READ); |
286 | clear_bdi_congested(&fc->bdi, WRITE); | 287 | clear_bdi_congested(&fc->bdi, WRITE); |
287 | } | 288 | } |
@@ -825,16 +826,21 @@ static int fuse_notify_poll(struct fuse_conn *fc, unsigned int size, | |||
825 | struct fuse_copy_state *cs) | 826 | struct fuse_copy_state *cs) |
826 | { | 827 | { |
827 | struct fuse_notify_poll_wakeup_out outarg; | 828 | struct fuse_notify_poll_wakeup_out outarg; |
828 | int err; | 829 | int err = -EINVAL; |
829 | 830 | ||
830 | if (size != sizeof(outarg)) | 831 | if (size != sizeof(outarg)) |
831 | return -EINVAL; | 832 | goto err; |
832 | 833 | ||
833 | err = fuse_copy_one(cs, &outarg, sizeof(outarg)); | 834 | err = fuse_copy_one(cs, &outarg, sizeof(outarg)); |
834 | if (err) | 835 | if (err) |
835 | return err; | 836 | goto err; |
836 | 837 | ||
838 | fuse_copy_finish(cs); | ||
837 | return fuse_notify_poll_wakeup(fc, &outarg); | 839 | return fuse_notify_poll_wakeup(fc, &outarg); |
840 | |||
841 | err: | ||
842 | fuse_copy_finish(cs); | ||
843 | return err; | ||
838 | } | 844 | } |
839 | 845 | ||
840 | static int fuse_notify(struct fuse_conn *fc, enum fuse_notify_code code, | 846 | static int fuse_notify(struct fuse_conn *fc, enum fuse_notify_code code, |
@@ -845,6 +851,7 @@ static int fuse_notify(struct fuse_conn *fc, enum fuse_notify_code code, | |||
845 | return fuse_notify_poll(fc, size, cs); | 851 | return fuse_notify_poll(fc, size, cs); |
846 | 852 | ||
847 | default: | 853 | default: |
854 | fuse_copy_finish(cs); | ||
848 | return -EINVAL; | 855 | return -EINVAL; |
849 | } | 856 | } |
850 | } | 857 | } |
@@ -923,7 +930,6 @@ static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov, | |||
923 | */ | 930 | */ |
924 | if (!oh.unique) { | 931 | if (!oh.unique) { |
925 | err = fuse_notify(fc, oh.error, nbytes - sizeof(oh), &cs); | 932 | err = fuse_notify(fc, oh.error, nbytes - sizeof(oh), &cs); |
926 | fuse_copy_finish(&cs); | ||
927 | return err ? err : nbytes; | 933 | return err ? err : nbytes; |
928 | } | 934 | } |
929 | 935 | ||
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index e8162646a9b5..d9fdb7cec538 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c | |||
@@ -54,7 +54,7 @@ struct fuse_file *fuse_file_alloc(struct fuse_conn *fc) | |||
54 | ff->reserved_req = fuse_request_alloc(); | 54 | ff->reserved_req = fuse_request_alloc(); |
55 | if (!ff->reserved_req) { | 55 | if (!ff->reserved_req) { |
56 | kfree(ff); | 56 | kfree(ff); |
57 | ff = NULL; | 57 | return NULL; |
58 | } else { | 58 | } else { |
59 | INIT_LIST_HEAD(&ff->write_entry); | 59 | INIT_LIST_HEAD(&ff->write_entry); |
60 | atomic_set(&ff->count, 0); | 60 | atomic_set(&ff->count, 0); |
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 47c96fdca1ac..459b73dd45e1 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c | |||
@@ -292,6 +292,7 @@ static void fuse_put_super(struct super_block *sb) | |||
292 | list_del(&fc->entry); | 292 | list_del(&fc->entry); |
293 | fuse_ctl_remove_conn(fc); | 293 | fuse_ctl_remove_conn(fc); |
294 | mutex_unlock(&fuse_mutex); | 294 | mutex_unlock(&fuse_mutex); |
295 | bdi_destroy(&fc->bdi); | ||
295 | fuse_conn_put(fc); | 296 | fuse_conn_put(fc); |
296 | } | 297 | } |
297 | 298 | ||
@@ -532,7 +533,6 @@ void fuse_conn_put(struct fuse_conn *fc) | |||
532 | if (fc->destroy_req) | 533 | if (fc->destroy_req) |
533 | fuse_request_free(fc->destroy_req); | 534 | fuse_request_free(fc->destroy_req); |
534 | mutex_destroy(&fc->inst_mutex); | 535 | mutex_destroy(&fc->inst_mutex); |
535 | bdi_destroy(&fc->bdi); | ||
536 | fc->release(fc); | 536 | fc->release(fc); |
537 | } | 537 | } |
538 | } | 538 | } |
@@ -805,16 +805,18 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent) | |||
805 | int err; | 805 | int err; |
806 | int is_bdev = sb->s_bdev != NULL; | 806 | int is_bdev = sb->s_bdev != NULL; |
807 | 807 | ||
808 | err = -EINVAL; | ||
808 | if (sb->s_flags & MS_MANDLOCK) | 809 | if (sb->s_flags & MS_MANDLOCK) |
809 | return -EINVAL; | 810 | goto err; |
810 | 811 | ||
811 | if (!parse_fuse_opt((char *) data, &d, is_bdev)) | 812 | if (!parse_fuse_opt((char *) data, &d, is_bdev)) |
812 | return -EINVAL; | 813 | goto err; |
813 | 814 | ||
814 | if (is_bdev) { | 815 | if (is_bdev) { |
815 | #ifdef CONFIG_BLOCK | 816 | #ifdef CONFIG_BLOCK |
817 | err = -EINVAL; | ||
816 | if (!sb_set_blocksize(sb, d.blksize)) | 818 | if (!sb_set_blocksize(sb, d.blksize)) |
817 | return -EINVAL; | 819 | goto err; |
818 | #endif | 820 | #endif |
819 | } else { | 821 | } else { |
820 | sb->s_blocksize = PAGE_CACHE_SIZE; | 822 | sb->s_blocksize = PAGE_CACHE_SIZE; |
@@ -826,20 +828,22 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent) | |||
826 | sb->s_export_op = &fuse_export_operations; | 828 | sb->s_export_op = &fuse_export_operations; |
827 | 829 | ||
828 | file = fget(d.fd); | 830 | file = fget(d.fd); |
831 | err = -EINVAL; | ||
829 | if (!file) | 832 | if (!file) |
830 | return -EINVAL; | 833 | goto err; |
831 | 834 | ||
832 | if (file->f_op != &fuse_dev_operations) | 835 | if (file->f_op != &fuse_dev_operations) |
833 | return -EINVAL; | 836 | goto err_fput; |
834 | 837 | ||
835 | fc = kmalloc(sizeof(*fc), GFP_KERNEL); | 838 | fc = kmalloc(sizeof(*fc), GFP_KERNEL); |
839 | err = -ENOMEM; | ||
836 | if (!fc) | 840 | if (!fc) |
837 | return -ENOMEM; | 841 | goto err_fput; |
838 | 842 | ||
839 | err = fuse_conn_init(fc, sb); | 843 | err = fuse_conn_init(fc, sb); |
840 | if (err) { | 844 | if (err) { |
841 | kfree(fc); | 845 | kfree(fc); |
842 | return err; | 846 | goto err_fput; |
843 | } | 847 | } |
844 | 848 | ||
845 | fc->release = fuse_free_conn; | 849 | fc->release = fuse_free_conn; |
@@ -854,12 +858,12 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent) | |||
854 | err = -ENOMEM; | 858 | err = -ENOMEM; |
855 | root = fuse_get_root_inode(sb, d.rootmode); | 859 | root = fuse_get_root_inode(sb, d.rootmode); |
856 | if (!root) | 860 | if (!root) |
857 | goto err; | 861 | goto err_put_conn; |
858 | 862 | ||
859 | root_dentry = d_alloc_root(root); | 863 | root_dentry = d_alloc_root(root); |
860 | if (!root_dentry) { | 864 | if (!root_dentry) { |
861 | iput(root); | 865 | iput(root); |
862 | goto err; | 866 | goto err_put_conn; |
863 | } | 867 | } |
864 | 868 | ||
865 | init_req = fuse_request_alloc(); | 869 | init_req = fuse_request_alloc(); |
@@ -903,9 +907,11 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent) | |||
903 | fuse_request_free(init_req); | 907 | fuse_request_free(init_req); |
904 | err_put_root: | 908 | err_put_root: |
905 | dput(root_dentry); | 909 | dput(root_dentry); |
906 | err: | 910 | err_put_conn: |
907 | fput(file); | ||
908 | fuse_conn_put(fc); | 911 | fuse_conn_put(fc); |
912 | err_fput: | ||
913 | fput(file); | ||
914 | err: | ||
909 | return err; | 915 | return err; |
910 | } | 916 | } |
911 | 917 | ||
diff --git a/fs/hfs/Kconfig b/fs/hfs/Kconfig new file mode 100644 index 000000000000..b77c5bc20f8a --- /dev/null +++ b/fs/hfs/Kconfig | |||
@@ -0,0 +1,12 @@ | |||
1 | config HFS_FS | ||
2 | tristate "Apple Macintosh file system support (EXPERIMENTAL)" | ||
3 | depends on BLOCK && EXPERIMENTAL | ||
4 | select NLS | ||
5 | help | ||
6 | If you say Y here, you will be able to mount Macintosh-formatted | ||
7 | floppy disks and hard drive partitions with full read-write access. | ||
8 | Please read <file:Documentation/filesystems/hfs.txt> to learn about | ||
9 | the available mount options. | ||
10 | |||
11 | To compile this file system support as a module, choose M here: the | ||
12 | module will be called hfs. | ||
diff --git a/fs/hfsplus/Kconfig b/fs/hfsplus/Kconfig new file mode 100644 index 000000000000..a63371815aab --- /dev/null +++ b/fs/hfsplus/Kconfig | |||
@@ -0,0 +1,13 @@ | |||
1 | config HFSPLUS_FS | ||
2 | tristate "Apple Extended HFS file system support" | ||
3 | depends on BLOCK | ||
4 | select NLS | ||
5 | select NLS_UTF8 | ||
6 | help | ||
7 | If you say Y here, you will be able to mount extended format | ||
8 | Macintosh-formatted hard drive partitions with full read-write access. | ||
9 | |||
10 | This file system is often called HFS+ and was introduced with | ||
11 | MacOS 8. It includes all Mac specific filesystem data such as | ||
12 | data forks and creator codes, but it also has several UNIX | ||
13 | style features such as file ownership and permissions. | ||
diff --git a/fs/hpfs/Kconfig b/fs/hpfs/Kconfig new file mode 100644 index 000000000000..56bd15c5bf6c --- /dev/null +++ b/fs/hpfs/Kconfig | |||
@@ -0,0 +1,14 @@ | |||
1 | config HPFS_FS | ||
2 | tristate "OS/2 HPFS file system support" | ||
3 | depends on BLOCK | ||
4 | help | ||
5 | OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS | ||
6 | is the file system used for organizing files on OS/2 hard disk | ||
7 | partitions. Say Y if you want to be able to read files from and | ||
8 | write files to an OS/2 HPFS partition on your hard drive. OS/2 | ||
9 | floppies however are in regular MSDOS format, so you don't need this | ||
10 | option in order to be able to read them. Read | ||
11 | <file:Documentation/filesystems/hpfs.txt>. | ||
12 | |||
13 | To compile this file system support as a module, choose M here: the | ||
14 | module will be called hpfs. If unsure, say N. | ||
diff --git a/fs/isofs/Kconfig b/fs/isofs/Kconfig new file mode 100644 index 000000000000..8ab9878e3671 --- /dev/null +++ b/fs/isofs/Kconfig | |||
@@ -0,0 +1,39 @@ | |||
1 | config ISO9660_FS | ||
2 | tristate "ISO 9660 CDROM file system support" | ||
3 | help | ||
4 | This is the standard file system used on CD-ROMs. It was previously | ||
5 | known as "High Sierra File System" and is called "hsfs" on other | ||
6 | Unix systems. The so-called Rock-Ridge extensions which allow for | ||
7 | long Unix filenames and symbolic links are also supported by this | ||
8 | driver. If you have a CD-ROM drive and want to do more with it than | ||
9 | just listen to audio CDs and watch its LEDs, say Y (and read | ||
10 | <file:Documentation/filesystems/isofs.txt> and the CD-ROM-HOWTO, | ||
11 | available from <http://www.tldp.org/docs.html#howto>), thereby | ||
12 | enlarging your kernel by about 27 KB; otherwise say N. | ||
13 | |||
14 | To compile this file system support as a module, choose M here: the | ||
15 | module will be called isofs. | ||
16 | |||
17 | config JOLIET | ||
18 | bool "Microsoft Joliet CDROM extensions" | ||
19 | depends on ISO9660_FS | ||
20 | select NLS | ||
21 | help | ||
22 | Joliet is a Microsoft extension for the ISO 9660 CD-ROM file system | ||
23 | which allows for long filenames in unicode format (unicode is the | ||
24 | new 16 bit character code, successor to ASCII, which encodes the | ||
25 | characters of almost all languages of the world; see | ||
26 | <http://www.unicode.org/> for more information). Say Y here if you | ||
27 | want to be able to read Joliet CD-ROMs under Linux. | ||
28 | |||
29 | config ZISOFS | ||
30 | bool "Transparent decompression extension" | ||
31 | depends on ISO9660_FS | ||
32 | select ZLIB_INFLATE | ||
33 | help | ||
34 | This is a Linux-specific extension to RockRidge which lets you store | ||
35 | data in compressed form on a CD-ROM and have it transparently | ||
36 | decompressed when the CD-ROM is accessed. See | ||
37 | <http://www.kernel.org/pub/linux/utils/fs/zisofs/> for the tools | ||
38 | necessary to create such a filesystem. Say Y here if you want to be | ||
39 | able to read such compressed CD-ROMs. | ||
diff --git a/fs/jfs/Kconfig b/fs/jfs/Kconfig new file mode 100644 index 000000000000..9ff619a6f9cc --- /dev/null +++ b/fs/jfs/Kconfig | |||
@@ -0,0 +1,49 @@ | |||
1 | config JFS_FS | ||
2 | tristate "JFS filesystem support" | ||
3 | select NLS | ||
4 | help | ||
5 | This is a port of IBM's Journaled Filesystem . More information is | ||
6 | available in the file <file:Documentation/filesystems/jfs.txt>. | ||
7 | |||
8 | If you do not intend to use the JFS filesystem, say N. | ||
9 | |||
10 | config JFS_POSIX_ACL | ||
11 | bool "JFS POSIX Access Control Lists" | ||
12 | depends on JFS_FS | ||
13 | select FS_POSIX_ACL | ||
14 | help | ||
15 | Posix Access Control Lists (ACLs) support permissions for users and | ||
16 | groups beyond the owner/group/world scheme. | ||
17 | |||
18 | To learn more about Access Control Lists, visit the Posix ACLs for | ||
19 | Linux website <http://acl.bestbits.at/>. | ||
20 | |||
21 | If you don't know what Access Control Lists are, say N | ||
22 | |||
23 | config JFS_SECURITY | ||
24 | bool "JFS Security Labels" | ||
25 | depends on JFS_FS | ||
26 | help | ||
27 | Security labels support alternative access control models | ||
28 | implemented by security modules like SELinux. This option | ||
29 | enables an extended attribute handler for file security | ||
30 | labels in the jfs filesystem. | ||
31 | |||
32 | If you are not using a security module that requires using | ||
33 | extended attributes for file security labels, say N. | ||
34 | |||
35 | config JFS_DEBUG | ||
36 | bool "JFS debugging" | ||
37 | depends on JFS_FS | ||
38 | help | ||
39 | If you are experiencing any problems with the JFS filesystem, say | ||
40 | Y here. This will result in additional debugging messages to be | ||
41 | written to the system log. Under normal circumstances, this | ||
42 | results in very little overhead. | ||
43 | |||
44 | config JFS_STATISTICS | ||
45 | bool "JFS statistics" | ||
46 | depends on JFS_FS | ||
47 | help | ||
48 | Enabling this option will cause statistics from the JFS file system | ||
49 | to be made available to the user in the /proc/fs/jfs/ directory. | ||
diff --git a/fs/minix/Kconfig b/fs/minix/Kconfig new file mode 100644 index 000000000000..0fd7ca994264 --- /dev/null +++ b/fs/minix/Kconfig | |||
@@ -0,0 +1,17 @@ | |||
1 | config MINIX_FS | ||
2 | tristate "Minix file system support" | ||
3 | depends on BLOCK | ||
4 | help | ||
5 | Minix is a simple operating system used in many classes about OS's. | ||
6 | The minix file system (method to organize files on a hard disk | ||
7 | partition or a floppy disk) was the original file system for Linux, | ||
8 | but has been superseded by the second extended file system ext2fs. | ||
9 | You don't want to use the minix file system on your hard disk | ||
10 | because of certain built-in restrictions, but it is sometimes found | ||
11 | on older Linux floppy disks. This option will enlarge your kernel | ||
12 | by about 28 KB. If unsure, say N. | ||
13 | |||
14 | To compile this file system support as a module, choose M here: the | ||
15 | module will be called minix. Note that the file system of your root | ||
16 | partition (the one containing the directory /) cannot be compiled as | ||
17 | a module. | ||
diff --git a/fs/ncpfs/Kconfig b/fs/ncpfs/Kconfig index 142808427b25..c931cf22a1f6 100644 --- a/fs/ncpfs/Kconfig +++ b/fs/ncpfs/Kconfig | |||
@@ -1,6 +1,27 @@ | |||
1 | # | 1 | # |
2 | # NCP Filesystem configuration | 2 | # NCP Filesystem configuration |
3 | # | 3 | # |
4 | config NCP_FS | ||
5 | tristate "NCP file system support (to mount NetWare volumes)" | ||
6 | depends on IPX!=n || INET | ||
7 | help | ||
8 | NCP (NetWare Core Protocol) is a protocol that runs over IPX and is | ||
9 | used by Novell NetWare clients to talk to file servers. It is to | ||
10 | IPX what NFS is to TCP/IP, if that helps. Saying Y here allows you | ||
11 | to mount NetWare file server volumes and to access them just like | ||
12 | any other Unix directory. For details, please read the file | ||
13 | <file:Documentation/filesystems/ncpfs.txt> in the kernel source and | ||
14 | the IPX-HOWTO from <http://www.tldp.org/docs.html#howto>. | ||
15 | |||
16 | You do not have to say Y here if you want your Linux box to act as a | ||
17 | file *server* for Novell NetWare clients. | ||
18 | |||
19 | General information about how to connect Linux, Windows machines and | ||
20 | Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. | ||
21 | |||
22 | To compile this as a module, choose M here: the module will be called | ||
23 | ncpfs. Say N unless you are connected to a Novell network. | ||
24 | |||
4 | config NCPFS_PACKET_SIGNING | 25 | config NCPFS_PACKET_SIGNING |
5 | bool "Packet signatures" | 26 | bool "Packet signatures" |
6 | depends on NCP_FS | 27 | depends on NCP_FS |
diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig new file mode 100644 index 000000000000..36fe20d6eba2 --- /dev/null +++ b/fs/nfs/Kconfig | |||
@@ -0,0 +1,86 @@ | |||
1 | config NFS_FS | ||
2 | tristate "NFS client support" | ||
3 | depends on INET | ||
4 | select LOCKD | ||
5 | select SUNRPC | ||
6 | select NFS_ACL_SUPPORT if NFS_V3_ACL | ||
7 | help | ||
8 | Choose Y here if you want to access files residing on other | ||
9 | computers using Sun's Network File System protocol. To compile | ||
10 | this file system support as a module, choose M here: the module | ||
11 | will be called nfs. | ||
12 | |||
13 | To mount file systems exported by NFS servers, you also need to | ||
14 | install the user space mount.nfs command which can be found in | ||
15 | the Linux nfs-utils package, available from http://linux-nfs.org/. | ||
16 | Information about using the mount command is available in the | ||
17 | mount(8) man page. More detail about the Linux NFS client | ||
18 | implementation is available via the nfs(5) man page. | ||
19 | |||
20 | Below you can choose which versions of the NFS protocol are | ||
21 | available in the kernel to mount NFS servers. Support for NFS | ||
22 | version 2 (RFC 1094) is always available when NFS_FS is selected. | ||
23 | |||
24 | To configure a system which mounts its root file system via NFS | ||
25 | at boot time, say Y here, select "Kernel level IP | ||
26 | autoconfiguration" in the NETWORK menu, and select "Root file | ||
27 | system on NFS" below. You cannot compile this file system as a | ||
28 | module in this case. | ||
29 | |||
30 | If unsure, say N. | ||
31 | |||
32 | config NFS_V3 | ||
33 | bool "NFS client support for NFS version 3" | ||
34 | depends on NFS_FS | ||
35 | help | ||
36 | This option enables support for version 3 of the NFS protocol | ||
37 | (RFC 1813) in the kernel's NFS client. | ||
38 | |||
39 | If unsure, say Y. | ||
40 | |||
41 | config NFS_V3_ACL | ||
42 | bool "NFS client support for the NFSv3 ACL protocol extension" | ||
43 | depends on NFS_V3 | ||
44 | help | ||
45 | Some NFS servers support an auxiliary NFSv3 ACL protocol that | ||
46 | Sun added to Solaris but never became an official part of the | ||
47 | NFS version 3 protocol. This protocol extension allows | ||
48 | applications on NFS clients to manipulate POSIX Access Control | ||
49 | Lists on files residing on NFS servers. NFS servers enforce | ||
50 | ACLs on local files whether this protocol is available or not. | ||
51 | |||
52 | Choose Y here if your NFS server supports the Solaris NFSv3 ACL | ||
53 | protocol extension and you want your NFS client to allow | ||
54 | applications to access and modify ACLs on files on the server. | ||
55 | |||
56 | Most NFS servers don't support the Solaris NFSv3 ACL protocol | ||
57 | extension. You can choose N here or specify the "noacl" mount | ||
58 | option to prevent your NFS client from trying to use the NFSv3 | ||
59 | ACL protocol. | ||
60 | |||
61 | If unsure, say N. | ||
62 | |||
63 | config NFS_V4 | ||
64 | bool "NFS client support for NFS version 4 (EXPERIMENTAL)" | ||
65 | depends on NFS_FS && EXPERIMENTAL | ||
66 | select RPCSEC_GSS_KRB5 | ||
67 | help | ||
68 | This option enables support for version 4 of the NFS protocol | ||
69 | (RFC 3530) in the kernel's NFS client. | ||
70 | |||
71 | To mount NFS servers using NFSv4, you also need to install user | ||
72 | space programs which can be found in the Linux nfs-utils package, | ||
73 | available from http://linux-nfs.org/. | ||
74 | |||
75 | If unsure, say N. | ||
76 | |||
77 | config ROOT_NFS | ||
78 | bool "Root file system on NFS" | ||
79 | depends on NFS_FS=y && IP_PNP | ||
80 | help | ||
81 | If you want your system to mount its root file system via NFS, | ||
82 | choose Y here. This is common practice for managing systems | ||
83 | without local permanent storage. For details, read | ||
84 | <file:Documentation/filesystems/nfsroot.txt>. | ||
85 | |||
86 | Most people say N here. | ||
diff --git a/fs/nfsd/Kconfig b/fs/nfsd/Kconfig new file mode 100644 index 000000000000..44d7d04dab95 --- /dev/null +++ b/fs/nfsd/Kconfig | |||
@@ -0,0 +1,80 @@ | |||
1 | config NFSD | ||
2 | tristate "NFS server support" | ||
3 | depends on INET | ||
4 | select LOCKD | ||
5 | select SUNRPC | ||
6 | select EXPORTFS | ||
7 | select NFS_ACL_SUPPORT if NFSD_V2_ACL | ||
8 | help | ||
9 | Choose Y here if you want to allow other computers to access | ||
10 | files residing on this system using Sun's Network File System | ||
11 | protocol. To compile the NFS server support as a module, | ||
12 | choose M here: the module will be called nfsd. | ||
13 | |||
14 | You may choose to use a user-space NFS server instead, in which | ||
15 | case you can choose N here. | ||
16 | |||
17 | To export local file systems using NFS, you also need to install | ||
18 | user space programs which can be found in the Linux nfs-utils | ||
19 | package, available from http://linux-nfs.org/. More detail about | ||
20 | the Linux NFS server implementation is available via the | ||
21 | exports(5) man page. | ||
22 | |||
23 | Below you can choose which versions of the NFS protocol are | ||
24 | available to clients mounting the NFS server on this system. | ||
25 | Support for NFS version 2 (RFC 1094) is always available when | ||
26 | CONFIG_NFSD is selected. | ||
27 | |||
28 | If unsure, say N. | ||
29 | |||
30 | config NFSD_V2_ACL | ||
31 | bool | ||
32 | depends on NFSD | ||
33 | |||
34 | config NFSD_V3 | ||
35 | bool "NFS server support for NFS version 3" | ||
36 | depends on NFSD | ||
37 | help | ||
38 | This option enables support in your system's NFS server for | ||
39 | version 3 of the NFS protocol (RFC 1813). | ||
40 | |||
41 | If unsure, say Y. | ||
42 | |||
43 | config NFSD_V3_ACL | ||
44 | bool "NFS server support for the NFSv3 ACL protocol extension" | ||
45 | depends on NFSD_V3 | ||
46 | select NFSD_V2_ACL | ||
47 | help | ||
48 | Solaris NFS servers support an auxiliary NFSv3 ACL protocol that | ||
49 | never became an official part of the NFS version 3 protocol. | ||
50 | This protocol extension allows applications on NFS clients to | ||
51 | manipulate POSIX Access Control Lists on files residing on NFS | ||
52 | servers. NFS servers enforce POSIX ACLs on local files whether | ||
53 | this protocol is available or not. | ||
54 | |||
55 | This option enables support in your system's NFS server for the | ||
56 | NFSv3 ACL protocol extension allowing NFS clients to manipulate | ||
57 | POSIX ACLs on files exported by your system's NFS server. NFS | ||
58 | clients which support the Solaris NFSv3 ACL protocol can then | ||
59 | access and modify ACLs on your NFS server. | ||
60 | |||
61 | To store ACLs on your NFS server, you also need to enable ACL- | ||
62 | related CONFIG options for your local file systems of choice. | ||
63 | |||
64 | If unsure, say N. | ||
65 | |||
66 | config NFSD_V4 | ||
67 | bool "NFS server support for NFS version 4 (EXPERIMENTAL)" | ||
68 | depends on NFSD && PROC_FS && EXPERIMENTAL | ||
69 | select NFSD_V3 | ||
70 | select FS_POSIX_ACL | ||
71 | select RPCSEC_GSS_KRB5 | ||
72 | help | ||
73 | This option enables support in your system's NFS server for | ||
74 | version 4 of the NFS protocol (RFC 3530). | ||
75 | |||
76 | To export files using NFSv4, you need to install additional user | ||
77 | space programs which can be found in the Linux nfs-utils package, | ||
78 | available from http://linux-nfs.org/. | ||
79 | |||
80 | If unsure, say N. | ||
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c index d53a1838d6e8..bed766e435b5 100644 --- a/fs/notify/inotify/inotify_user.c +++ b/fs/notify/inotify/inotify_user.c | |||
@@ -427,10 +427,61 @@ static unsigned int inotify_poll(struct file *file, poll_table *wait) | |||
427 | return ret; | 427 | return ret; |
428 | } | 428 | } |
429 | 429 | ||
430 | /* | ||
431 | * Get an inotify_kernel_event if one exists and is small | ||
432 | * enough to fit in "count". Return an error pointer if | ||
433 | * not large enough. | ||
434 | * | ||
435 | * Called with the device ev_mutex held. | ||
436 | */ | ||
437 | static struct inotify_kernel_event *get_one_event(struct inotify_device *dev, | ||
438 | size_t count) | ||
439 | { | ||
440 | size_t event_size = sizeof(struct inotify_event); | ||
441 | struct inotify_kernel_event *kevent; | ||
442 | |||
443 | if (list_empty(&dev->events)) | ||
444 | return NULL; | ||
445 | |||
446 | kevent = inotify_dev_get_event(dev); | ||
447 | if (kevent->name) | ||
448 | event_size += kevent->event.len; | ||
449 | |||
450 | if (event_size > count) | ||
451 | return ERR_PTR(-EINVAL); | ||
452 | |||
453 | remove_kevent(dev, kevent); | ||
454 | return kevent; | ||
455 | } | ||
456 | |||
457 | /* | ||
458 | * Copy an event to user space, returning how much we copied. | ||
459 | * | ||
460 | * We already checked that the event size is smaller than the | ||
461 | * buffer we had in "get_one_event()" above. | ||
462 | */ | ||
463 | static ssize_t copy_event_to_user(struct inotify_kernel_event *kevent, | ||
464 | char __user *buf) | ||
465 | { | ||
466 | size_t event_size = sizeof(struct inotify_event); | ||
467 | |||
468 | if (copy_to_user(buf, &kevent->event, event_size)) | ||
469 | return -EFAULT; | ||
470 | |||
471 | if (kevent->name) { | ||
472 | buf += event_size; | ||
473 | |||
474 | if (copy_to_user(buf, kevent->name, kevent->event.len)) | ||
475 | return -EFAULT; | ||
476 | |||
477 | event_size += kevent->event.len; | ||
478 | } | ||
479 | return event_size; | ||
480 | } | ||
481 | |||
430 | static ssize_t inotify_read(struct file *file, char __user *buf, | 482 | static ssize_t inotify_read(struct file *file, char __user *buf, |
431 | size_t count, loff_t *pos) | 483 | size_t count, loff_t *pos) |
432 | { | 484 | { |
433 | size_t event_size = sizeof (struct inotify_event); | ||
434 | struct inotify_device *dev; | 485 | struct inotify_device *dev; |
435 | char __user *start; | 486 | char __user *start; |
436 | int ret; | 487 | int ret; |
@@ -440,81 +491,43 @@ static ssize_t inotify_read(struct file *file, char __user *buf, | |||
440 | dev = file->private_data; | 491 | dev = file->private_data; |
441 | 492 | ||
442 | while (1) { | 493 | while (1) { |
494 | struct inotify_kernel_event *kevent; | ||
443 | 495 | ||
444 | prepare_to_wait(&dev->wq, &wait, TASK_INTERRUPTIBLE); | 496 | prepare_to_wait(&dev->wq, &wait, TASK_INTERRUPTIBLE); |
445 | 497 | ||
446 | mutex_lock(&dev->ev_mutex); | 498 | mutex_lock(&dev->ev_mutex); |
447 | if (!list_empty(&dev->events)) { | 499 | kevent = get_one_event(dev, count); |
448 | ret = 0; | ||
449 | break; | ||
450 | } | ||
451 | mutex_unlock(&dev->ev_mutex); | 500 | mutex_unlock(&dev->ev_mutex); |
452 | 501 | ||
453 | if (file->f_flags & O_NONBLOCK) { | 502 | if (kevent) { |
454 | ret = -EAGAIN; | 503 | ret = PTR_ERR(kevent); |
455 | break; | 504 | if (IS_ERR(kevent)) |
456 | } | 505 | break; |
457 | 506 | ret = copy_event_to_user(kevent, buf); | |
458 | if (signal_pending(current)) { | 507 | free_kevent(kevent); |
459 | ret = -EINTR; | 508 | if (ret < 0) |
460 | break; | 509 | break; |
510 | buf += ret; | ||
511 | count -= ret; | ||
512 | continue; | ||
461 | } | 513 | } |
462 | 514 | ||
463 | schedule(); | 515 | ret = -EAGAIN; |
464 | } | 516 | if (file->f_flags & O_NONBLOCK) |
465 | |||
466 | finish_wait(&dev->wq, &wait); | ||
467 | if (ret) | ||
468 | return ret; | ||
469 | |||
470 | while (1) { | ||
471 | struct inotify_kernel_event *kevent; | ||
472 | |||
473 | ret = buf - start; | ||
474 | if (list_empty(&dev->events)) | ||
475 | break; | 517 | break; |
476 | 518 | ret = -EINTR; | |
477 | kevent = inotify_dev_get_event(dev); | 519 | if (signal_pending(current)) |
478 | if (event_size + kevent->event.len > count) { | ||
479 | if (ret == 0 && count > 0) { | ||
480 | /* | ||
481 | * could not get a single event because we | ||
482 | * didn't have enough buffer space. | ||
483 | */ | ||
484 | ret = -EINVAL; | ||
485 | } | ||
486 | break; | 520 | break; |
487 | } | ||
488 | remove_kevent(dev, kevent); | ||
489 | 521 | ||
490 | /* | 522 | if (start != buf) |
491 | * Must perform the copy_to_user outside the mutex in order | ||
492 | * to avoid a lock order reversal with mmap_sem. | ||
493 | */ | ||
494 | mutex_unlock(&dev->ev_mutex); | ||
495 | |||
496 | if (copy_to_user(buf, &kevent->event, event_size)) { | ||
497 | ret = -EFAULT; | ||
498 | break; | 523 | break; |
499 | } | ||
500 | buf += event_size; | ||
501 | count -= event_size; | ||
502 | |||
503 | if (kevent->name) { | ||
504 | if (copy_to_user(buf, kevent->name, kevent->event.len)){ | ||
505 | ret = -EFAULT; | ||
506 | break; | ||
507 | } | ||
508 | buf += kevent->event.len; | ||
509 | count -= kevent->event.len; | ||
510 | } | ||
511 | |||
512 | free_kevent(kevent); | ||
513 | 524 | ||
514 | mutex_lock(&dev->ev_mutex); | 525 | schedule(); |
515 | } | 526 | } |
516 | mutex_unlock(&dev->ev_mutex); | ||
517 | 527 | ||
528 | finish_wait(&dev->wq, &wait); | ||
529 | if (start != buf && ret != -EFAULT) | ||
530 | ret = buf - start; | ||
518 | return ret; | 531 | return ret; |
519 | } | 532 | } |
520 | 533 | ||
diff --git a/fs/ntfs/Kconfig b/fs/ntfs/Kconfig new file mode 100644 index 000000000000..f5a868cc9152 --- /dev/null +++ b/fs/ntfs/Kconfig | |||
@@ -0,0 +1,78 @@ | |||
1 | config NTFS_FS | ||
2 | tristate "NTFS file system support" | ||
3 | select NLS | ||
4 | help | ||
5 | NTFS is the file system of Microsoft Windows NT, 2000, XP and 2003. | ||
6 | |||
7 | Saying Y or M here enables read support. There is partial, but | ||
8 | safe, write support available. For write support you must also | ||
9 | say Y to "NTFS write support" below. | ||
10 | |||
11 | There are also a number of user-space tools available, called | ||
12 | ntfsprogs. These include ntfsundelete and ntfsresize, that work | ||
13 | without NTFS support enabled in the kernel. | ||
14 | |||
15 | This is a rewrite from scratch of Linux NTFS support and replaced | ||
16 | the old NTFS code starting with Linux 2.5.11. A backport to | ||
17 | the Linux 2.4 kernel series is separately available as a patch | ||
18 | from the project web site. | ||
19 | |||
20 | For more information see <file:Documentation/filesystems/ntfs.txt> | ||
21 | and <http://www.linux-ntfs.org/>. | ||
22 | |||
23 | To compile this file system support as a module, choose M here: the | ||
24 | module will be called ntfs. | ||
25 | |||
26 | If you are not using Windows NT, 2000, XP or 2003 in addition to | ||
27 | Linux on your computer it is safe to say N. | ||
28 | |||
29 | config NTFS_DEBUG | ||
30 | bool "NTFS debugging support" | ||
31 | depends on NTFS_FS | ||
32 | help | ||
33 | If you are experiencing any problems with the NTFS file system, say | ||
34 | Y here. This will result in additional consistency checks to be | ||
35 | performed by the driver as well as additional debugging messages to | ||
36 | be written to the system log. Note that debugging messages are | ||
37 | disabled by default. To enable them, supply the option debug_msgs=1 | ||
38 | at the kernel command line when booting the kernel or as an option | ||
39 | to insmod when loading the ntfs module. Once the driver is active, | ||
40 | you can enable debugging messages by doing (as root): | ||
41 | echo 1 > /proc/sys/fs/ntfs-debug | ||
42 | Replacing the "1" with "0" would disable debug messages. | ||
43 | |||
44 | If you leave debugging messages disabled, this results in little | ||
45 | overhead, but enabling debug messages results in very significant | ||
46 | slowdown of the system. | ||
47 | |||
48 | When reporting bugs, please try to have available a full dump of | ||
49 | debugging messages while the misbehaviour was occurring. | ||
50 | |||
51 | config NTFS_RW | ||
52 | bool "NTFS write support" | ||
53 | depends on NTFS_FS | ||
54 | help | ||
55 | This enables the partial, but safe, write support in the NTFS driver. | ||
56 | |||
57 | The only supported operation is overwriting existing files, without | ||
58 | changing the file length. No file or directory creation, deletion or | ||
59 | renaming is possible. Note only non-resident files can be written to | ||
60 | so you may find that some very small files (<500 bytes or so) cannot | ||
61 | be written to. | ||
62 | |||
63 | While we cannot guarantee that it will not damage any data, we have | ||
64 | so far not received a single report where the driver would have | ||
65 | damaged someones data so we assume it is perfectly safe to use. | ||
66 | |||
67 | Note: While write support is safe in this version (a rewrite from | ||
68 | scratch of the NTFS support), it should be noted that the old NTFS | ||
69 | write support, included in Linux 2.5.10 and before (since 1997), | ||
70 | is not safe. | ||
71 | |||
72 | This is currently useful with TopologiLinux. TopologiLinux is run | ||
73 | on top of any DOS/Microsoft Windows system without partitioning your | ||
74 | hard disk. Unlike other Linux distributions TopologiLinux does not | ||
75 | need its own partition. For more information see | ||
76 | <http://topologi-linux.sourceforge.net/> | ||
77 | |||
78 | It is perfectly safe to say N here. | ||
diff --git a/fs/ocfs2/Kconfig b/fs/ocfs2/Kconfig new file mode 100644 index 000000000000..701b7a3a872e --- /dev/null +++ b/fs/ocfs2/Kconfig | |||
@@ -0,0 +1,85 @@ | |||
1 | config OCFS2_FS | ||
2 | tristate "OCFS2 file system support" | ||
3 | depends on NET && SYSFS | ||
4 | select CONFIGFS_FS | ||
5 | select JBD2 | ||
6 | select CRC32 | ||
7 | select QUOTA | ||
8 | select QUOTA_TREE | ||
9 | help | ||
10 | OCFS2 is a general purpose extent based shared disk cluster file | ||
11 | system with many similarities to ext3. It supports 64 bit inode | ||
12 | numbers, and has automatically extending metadata groups which may | ||
13 | also make it attractive for non-clustered use. | ||
14 | |||
15 | You'll want to install the ocfs2-tools package in order to at least | ||
16 | get "mount.ocfs2". | ||
17 | |||
18 | Project web page: http://oss.oracle.com/projects/ocfs2 | ||
19 | Tools web page: http://oss.oracle.com/projects/ocfs2-tools | ||
20 | OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ | ||
21 | |||
22 | For more information on OCFS2, see the file | ||
23 | <file:Documentation/filesystems/ocfs2.txt>. | ||
24 | |||
25 | config OCFS2_FS_O2CB | ||
26 | tristate "O2CB Kernelspace Clustering" | ||
27 | depends on OCFS2_FS | ||
28 | default y | ||
29 | help | ||
30 | OCFS2 includes a simple kernelspace clustering package, the OCFS2 | ||
31 | Cluster Base. It only requires a very small userspace component | ||
32 | to configure it. This comes with the standard ocfs2-tools package. | ||
33 | O2CB is limited to maintaining a cluster for OCFS2 file systems. | ||
34 | It cannot manage any other cluster applications. | ||
35 | |||
36 | It is always safe to say Y here, as the clustering method is | ||
37 | run-time selectable. | ||
38 | |||
39 | config OCFS2_FS_USERSPACE_CLUSTER | ||
40 | tristate "OCFS2 Userspace Clustering" | ||
41 | depends on OCFS2_FS && DLM | ||
42 | default y | ||
43 | help | ||
44 | This option will allow OCFS2 to use userspace clustering services | ||
45 | in conjunction with the DLM in fs/dlm. If you are using a | ||
46 | userspace cluster manager, say Y here. | ||
47 | |||
48 | It is safe to say Y, as the clustering method is run-time | ||
49 | selectable. | ||
50 | |||
51 | config OCFS2_FS_STATS | ||
52 | bool "OCFS2 statistics" | ||
53 | depends on OCFS2_FS | ||
54 | default y | ||
55 | help | ||
56 | This option allows some fs statistics to be captured. Enabling | ||
57 | this option may increase the memory consumption. | ||
58 | |||
59 | config OCFS2_DEBUG_MASKLOG | ||
60 | bool "OCFS2 logging support" | ||
61 | depends on OCFS2_FS | ||
62 | default y | ||
63 | help | ||
64 | The ocfs2 filesystem has an extensive logging system. The system | ||
65 | allows selection of events to log via files in /sys/o2cb/logmask/. | ||
66 | This option will enlarge your kernel, but it allows debugging of | ||
67 | ocfs2 filesystem issues. | ||
68 | |||
69 | config OCFS2_DEBUG_FS | ||
70 | bool "OCFS2 expensive checks" | ||
71 | depends on OCFS2_FS | ||
72 | default n | ||
73 | help | ||
74 | This option will enable expensive consistency checks. Enable | ||
75 | this option for debugging only as it is likely to decrease | ||
76 | performance of the filesystem. | ||
77 | |||
78 | config OCFS2_FS_POSIX_ACL | ||
79 | bool "OCFS2 POSIX Access Control Lists" | ||
80 | depends on OCFS2_FS | ||
81 | select FS_POSIX_ACL | ||
82 | default n | ||
83 | help | ||
84 | Posix Access Control Lists (ACLs) support permissions for users and | ||
85 | groups beyond the owner/group/world scheme. | ||
diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c index 6aff8f2d3e49..f4efa89baee5 100644 --- a/fs/ocfs2/quota_global.c +++ b/fs/ocfs2/quota_global.c | |||
@@ -810,171 +810,6 @@ out: | |||
810 | return status; | 810 | return status; |
811 | } | 811 | } |
812 | 812 | ||
813 | /* This is difficult. We have to lock quota inode and start transaction | ||
814 | * in this function but we don't want to take the penalty of exlusive | ||
815 | * quota file lock when we are just going to use cached structures. So | ||
816 | * we just take read lock check whether we have dquot cached and if so, | ||
817 | * we don't have to take the write lock... */ | ||
818 | static int ocfs2_dquot_initialize(struct inode *inode, int type) | ||
819 | { | ||
820 | handle_t *handle = NULL; | ||
821 | int status = 0; | ||
822 | struct super_block *sb = inode->i_sb; | ||
823 | struct ocfs2_mem_dqinfo *oinfo; | ||
824 | int exclusive = 0; | ||
825 | int cnt; | ||
826 | qid_t id; | ||
827 | |||
828 | mlog_entry_void(); | ||
829 | |||
830 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | ||
831 | if (type != -1 && cnt != type) | ||
832 | continue; | ||
833 | if (!sb_has_quota_active(sb, cnt)) | ||
834 | continue; | ||
835 | oinfo = sb_dqinfo(sb, cnt)->dqi_priv; | ||
836 | status = ocfs2_lock_global_qf(oinfo, 0); | ||
837 | if (status < 0) | ||
838 | goto out; | ||
839 | /* This is just a performance optimization not a reliable test. | ||
840 | * Since we hold an inode lock, noone can actually release | ||
841 | * the structure until we are finished with initialization. */ | ||
842 | if (inode->i_dquot[cnt] != NODQUOT) { | ||
843 | ocfs2_unlock_global_qf(oinfo, 0); | ||
844 | continue; | ||
845 | } | ||
846 | /* When we have inode lock, we know that no dquot_release() can | ||
847 | * run and thus we can safely check whether we need to | ||
848 | * read+modify global file to get quota information or whether | ||
849 | * our node already has it. */ | ||
850 | if (cnt == USRQUOTA) | ||
851 | id = inode->i_uid; | ||
852 | else if (cnt == GRPQUOTA) | ||
853 | id = inode->i_gid; | ||
854 | else | ||
855 | BUG(); | ||
856 | /* Obtain exclusion from quota off... */ | ||
857 | down_write(&sb_dqopt(sb)->dqptr_sem); | ||
858 | exclusive = !dquot_is_cached(sb, id, cnt); | ||
859 | up_write(&sb_dqopt(sb)->dqptr_sem); | ||
860 | if (exclusive) { | ||
861 | status = ocfs2_lock_global_qf(oinfo, 1); | ||
862 | if (status < 0) { | ||
863 | exclusive = 0; | ||
864 | mlog_errno(status); | ||
865 | goto out_ilock; | ||
866 | } | ||
867 | handle = ocfs2_start_trans(OCFS2_SB(sb), | ||
868 | ocfs2_calc_qinit_credits(sb, cnt)); | ||
869 | if (IS_ERR(handle)) { | ||
870 | status = PTR_ERR(handle); | ||
871 | mlog_errno(status); | ||
872 | goto out_ilock; | ||
873 | } | ||
874 | } | ||
875 | dquot_initialize(inode, cnt); | ||
876 | if (exclusive) { | ||
877 | ocfs2_commit_trans(OCFS2_SB(sb), handle); | ||
878 | ocfs2_unlock_global_qf(oinfo, 1); | ||
879 | } | ||
880 | ocfs2_unlock_global_qf(oinfo, 0); | ||
881 | } | ||
882 | mlog_exit(0); | ||
883 | return 0; | ||
884 | out_ilock: | ||
885 | if (exclusive) | ||
886 | ocfs2_unlock_global_qf(oinfo, 1); | ||
887 | ocfs2_unlock_global_qf(oinfo, 0); | ||
888 | out: | ||
889 | mlog_exit(status); | ||
890 | return status; | ||
891 | } | ||
892 | |||
893 | static int ocfs2_dquot_drop_slow(struct inode *inode) | ||
894 | { | ||
895 | int status = 0; | ||
896 | int cnt; | ||
897 | int got_lock[MAXQUOTAS] = {0, 0}; | ||
898 | handle_t *handle; | ||
899 | struct super_block *sb = inode->i_sb; | ||
900 | struct ocfs2_mem_dqinfo *oinfo; | ||
901 | |||
902 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | ||
903 | if (!sb_has_quota_active(sb, cnt)) | ||
904 | continue; | ||
905 | oinfo = sb_dqinfo(sb, cnt)->dqi_priv; | ||
906 | status = ocfs2_lock_global_qf(oinfo, 1); | ||
907 | if (status < 0) | ||
908 | goto out; | ||
909 | got_lock[cnt] = 1; | ||
910 | } | ||
911 | handle = ocfs2_start_trans(OCFS2_SB(sb), | ||
912 | ocfs2_calc_qinit_credits(sb, USRQUOTA) + | ||
913 | ocfs2_calc_qinit_credits(sb, GRPQUOTA)); | ||
914 | if (IS_ERR(handle)) { | ||
915 | status = PTR_ERR(handle); | ||
916 | mlog_errno(status); | ||
917 | goto out; | ||
918 | } | ||
919 | dquot_drop(inode); | ||
920 | ocfs2_commit_trans(OCFS2_SB(sb), handle); | ||
921 | out: | ||
922 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) | ||
923 | if (got_lock[cnt]) { | ||
924 | oinfo = sb_dqinfo(sb, cnt)->dqi_priv; | ||
925 | ocfs2_unlock_global_qf(oinfo, 1); | ||
926 | } | ||
927 | return status; | ||
928 | } | ||
929 | |||
930 | /* See the comment before ocfs2_dquot_initialize. */ | ||
931 | static int ocfs2_dquot_drop(struct inode *inode) | ||
932 | { | ||
933 | int status = 0; | ||
934 | struct super_block *sb = inode->i_sb; | ||
935 | struct ocfs2_mem_dqinfo *oinfo; | ||
936 | int exclusive = 0; | ||
937 | int cnt; | ||
938 | int got_lock[MAXQUOTAS] = {0, 0}; | ||
939 | |||
940 | mlog_entry_void(); | ||
941 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | ||
942 | if (!sb_has_quota_active(sb, cnt)) | ||
943 | continue; | ||
944 | oinfo = sb_dqinfo(sb, cnt)->dqi_priv; | ||
945 | status = ocfs2_lock_global_qf(oinfo, 0); | ||
946 | if (status < 0) | ||
947 | goto out; | ||
948 | got_lock[cnt] = 1; | ||
949 | } | ||
950 | /* Lock against anyone releasing references so that when when we check | ||
951 | * we know we are not going to be last ones to release dquot */ | ||
952 | down_write(&sb_dqopt(sb)->dqptr_sem); | ||
953 | /* Urgh, this is a terrible hack :( */ | ||
954 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | ||
955 | if (inode->i_dquot[cnt] != NODQUOT && | ||
956 | atomic_read(&inode->i_dquot[cnt]->dq_count) > 1) { | ||
957 | exclusive = 1; | ||
958 | break; | ||
959 | } | ||
960 | } | ||
961 | if (!exclusive) | ||
962 | dquot_drop_locked(inode); | ||
963 | up_write(&sb_dqopt(sb)->dqptr_sem); | ||
964 | out: | ||
965 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) | ||
966 | if (got_lock[cnt]) { | ||
967 | oinfo = sb_dqinfo(sb, cnt)->dqi_priv; | ||
968 | ocfs2_unlock_global_qf(oinfo, 0); | ||
969 | } | ||
970 | /* In case we bailed out because we had to do expensive locking | ||
971 | * do it now... */ | ||
972 | if (exclusive) | ||
973 | status = ocfs2_dquot_drop_slow(inode); | ||
974 | mlog_exit(status); | ||
975 | return status; | ||
976 | } | ||
977 | |||
978 | static struct dquot *ocfs2_alloc_dquot(struct super_block *sb, int type) | 813 | static struct dquot *ocfs2_alloc_dquot(struct super_block *sb, int type) |
979 | { | 814 | { |
980 | struct ocfs2_dquot *dquot = | 815 | struct ocfs2_dquot *dquot = |
@@ -991,8 +826,8 @@ static void ocfs2_destroy_dquot(struct dquot *dquot) | |||
991 | } | 826 | } |
992 | 827 | ||
993 | struct dquot_operations ocfs2_quota_operations = { | 828 | struct dquot_operations ocfs2_quota_operations = { |
994 | .initialize = ocfs2_dquot_initialize, | 829 | .initialize = dquot_initialize, |
995 | .drop = ocfs2_dquot_drop, | 830 | .drop = dquot_drop, |
996 | .alloc_space = dquot_alloc_space, | 831 | .alloc_space = dquot_alloc_space, |
997 | .alloc_inode = dquot_alloc_inode, | 832 | .alloc_inode = dquot_alloc_inode, |
998 | .free_space = dquot_free_space, | 833 | .free_space = dquot_free_space, |
diff --git a/fs/omfs/Kconfig b/fs/omfs/Kconfig new file mode 100644 index 000000000000..b1b9a0aba6fd --- /dev/null +++ b/fs/omfs/Kconfig | |||
@@ -0,0 +1,13 @@ | |||
1 | config OMFS_FS | ||
2 | tristate "SonicBlue Optimized MPEG File System support" | ||
3 | depends on BLOCK | ||
4 | select CRC_ITU_T | ||
5 | help | ||
6 | This is the proprietary file system used by the Rio Karma music | ||
7 | player and ReplayTV DVR. Despite the name, this filesystem is not | ||
8 | more efficient than a standard FS for MPEG files, in fact likely | ||
9 | the opposite is true. Say Y if you have either of these devices | ||
10 | and wish to mount its disk. | ||
11 | |||
12 | To compile this file system support as a module, choose M here: the | ||
13 | module will be called omfs. If unsure, say N. | ||
diff --git a/fs/qnx4/Kconfig b/fs/qnx4/Kconfig new file mode 100644 index 000000000000..be8e0e1445b6 --- /dev/null +++ b/fs/qnx4/Kconfig | |||
@@ -0,0 +1,25 @@ | |||
1 | config QNX4FS_FS | ||
2 | tristate "QNX4 file system support (read only)" | ||
3 | depends on BLOCK | ||
4 | help | ||
5 | This is the file system used by the real-time operating systems | ||
6 | QNX 4 and QNX 6 (the latter is also called QNX RTP). | ||
7 | Further information is available at <http://www.qnx.com/>. | ||
8 | Say Y if you intend to mount QNX hard disks or floppies. | ||
9 | Unless you say Y to "QNX4FS read-write support" below, you will | ||
10 | only be able to read these file systems. | ||
11 | |||
12 | To compile this file system support as a module, choose M here: the | ||
13 | module will be called qnx4. | ||
14 | |||
15 | If you don't know whether you need it, then you don't need it: | ||
16 | answer N. | ||
17 | |||
18 | config QNX4FS_RW | ||
19 | bool "QNX4FS write support (DANGEROUS)" | ||
20 | depends on QNX4FS_FS && EXPERIMENTAL && BROKEN | ||
21 | help | ||
22 | Say Y if you want to test write support for QNX4 file systems. | ||
23 | |||
24 | It's currently broken, so for now: | ||
25 | answer N. | ||
diff --git a/fs/reiserfs/Kconfig b/fs/reiserfs/Kconfig new file mode 100644 index 000000000000..949b8c6addc8 --- /dev/null +++ b/fs/reiserfs/Kconfig | |||
@@ -0,0 +1,85 @@ | |||
1 | config REISERFS_FS | ||
2 | tristate "Reiserfs support" | ||
3 | help | ||
4 | Stores not just filenames but the files themselves in a balanced | ||
5 | tree. Uses journalling. | ||
6 | |||
7 | Balanced trees are more efficient than traditional file system | ||
8 | architectural foundations. | ||
9 | |||
10 | In general, ReiserFS is as fast as ext2, but is very efficient with | ||
11 | large directories and small files. Additional patches are needed | ||
12 | for NFS and quotas, please see <http://www.namesys.com/> for links. | ||
13 | |||
14 | It is more easily extended to have features currently found in | ||
15 | database and keyword search systems than block allocation based file | ||
16 | systems are. The next version will be so extended, and will support | ||
17 | plugins consistent with our motto ``It takes more than a license to | ||
18 | make source code open.'' | ||
19 | |||
20 | Read <http://www.namesys.com/> to learn more about reiserfs. | ||
21 | |||
22 | Sponsored by Threshold Networks, Emusic.com, and Bigstorage.com. | ||
23 | |||
24 | If you like it, you can pay us to add new features to it that you | ||
25 | need, buy a support contract, or pay us to port it to another OS. | ||
26 | |||
27 | config REISERFS_CHECK | ||
28 | bool "Enable reiserfs debug mode" | ||
29 | depends on REISERFS_FS | ||
30 | help | ||
31 | If you set this to Y, then ReiserFS will perform every check it can | ||
32 | possibly imagine of its internal consistency throughout its | ||
33 | operation. It will also go substantially slower. More than once we | ||
34 | have forgotten that this was on, and then gone despondent over the | ||
35 | latest benchmarks.:-) Use of this option allows our team to go all | ||
36 | out in checking for consistency when debugging without fear of its | ||
37 | effect on end users. If you are on the verge of sending in a bug | ||
38 | report, say Y and you might get a useful error message. Almost | ||
39 | everyone should say N. | ||
40 | |||
41 | config REISERFS_PROC_INFO | ||
42 | bool "Stats in /proc/fs/reiserfs" | ||
43 | depends on REISERFS_FS && PROC_FS | ||
44 | help | ||
45 | Create under /proc/fs/reiserfs a hierarchy of files, displaying | ||
46 | various ReiserFS statistics and internal data at the expense of | ||
47 | making your kernel or module slightly larger (+8 KB). This also | ||
48 | increases the amount of kernel memory required for each mount. | ||
49 | Almost everyone but ReiserFS developers and people fine-tuning | ||
50 | reiserfs or tracing problems should say N. | ||
51 | |||
52 | config REISERFS_FS_XATTR | ||
53 | bool "ReiserFS extended attributes" | ||
54 | depends on REISERFS_FS | ||
55 | help | ||
56 | Extended attributes are name:value pairs associated with inodes by | ||
57 | the kernel or by users (see the attr(5) manual page, or visit | ||
58 | <http://acl.bestbits.at/> for details). | ||
59 | |||
60 | If unsure, say N. | ||
61 | |||
62 | config REISERFS_FS_POSIX_ACL | ||
63 | bool "ReiserFS POSIX Access Control Lists" | ||
64 | depends on REISERFS_FS_XATTR | ||
65 | select FS_POSIX_ACL | ||
66 | help | ||
67 | Posix Access Control Lists (ACLs) support permissions for users and | ||
68 | groups beyond the owner/group/world scheme. | ||
69 | |||
70 | To learn more about Access Control Lists, visit the Posix ACLs for | ||
71 | Linux website <http://acl.bestbits.at/>. | ||
72 | |||
73 | If you don't know what Access Control Lists are, say N | ||
74 | |||
75 | config REISERFS_FS_SECURITY | ||
76 | bool "ReiserFS Security Labels" | ||
77 | depends on REISERFS_FS_XATTR | ||
78 | help | ||
79 | Security labels support alternative access control models | ||
80 | implemented by security modules like SELinux. This option | ||
81 | enables an extended attribute handler for file security | ||
82 | labels in the ReiserFS filesystem. | ||
83 | |||
84 | If you are not using a security module that requires using | ||
85 | extended attributes for file security labels, say N. | ||
diff --git a/fs/romfs/Kconfig b/fs/romfs/Kconfig new file mode 100644 index 000000000000..1a17020f9faf --- /dev/null +++ b/fs/romfs/Kconfig | |||
@@ -0,0 +1,16 @@ | |||
1 | config ROMFS_FS | ||
2 | tristate "ROM file system support" | ||
3 | depends on BLOCK | ||
4 | ---help--- | ||
5 | This is a very small read-only file system mainly intended for | ||
6 | initial ram disks of installation disks, but it could be used for | ||
7 | other read-only media as well. Read | ||
8 | <file:Documentation/filesystems/romfs.txt> for details. | ||
9 | |||
10 | To compile this file system support as a module, choose M here: the | ||
11 | module will be called romfs. Note that the file system of your | ||
12 | root partition (the one containing the directory /) cannot be a | ||
13 | module. | ||
14 | |||
15 | If you don't know whether you need it, then you don't need it: | ||
16 | answer N. | ||
diff --git a/fs/smbfs/Kconfig b/fs/smbfs/Kconfig new file mode 100644 index 000000000000..e668127c8b2e --- /dev/null +++ b/fs/smbfs/Kconfig | |||
@@ -0,0 +1,55 @@ | |||
1 | config SMB_FS | ||
2 | tristate "SMB file system support (OBSOLETE, please use CIFS)" | ||
3 | depends on INET | ||
4 | select NLS | ||
5 | help | ||
6 | SMB (Server Message Block) is the protocol Windows for Workgroups | ||
7 | (WfW), Windows 95/98, Windows NT and OS/2 Lan Manager use to share | ||
8 | files and printers over local networks. Saying Y here allows you to | ||
9 | mount their file systems (often called "shares" in this context) and | ||
10 | access them just like any other Unix directory. Currently, this | ||
11 | works only if the Windows machines use TCP/IP as the underlying | ||
12 | transport protocol, and not NetBEUI. For details, read | ||
13 | <file:Documentation/filesystems/smbfs.txt> and the SMB-HOWTO, | ||
14 | available from <http://www.tldp.org/docs.html#howto>. | ||
15 | |||
16 | Note: if you just want your box to act as an SMB *server* and make | ||
17 | files and printing services available to Windows clients (which need | ||
18 | to have a TCP/IP stack), you don't need to say Y here; you can use | ||
19 | the program SAMBA (available from <ftp://ftp.samba.org/pub/samba/>) | ||
20 | for that. | ||
21 | |||
22 | General information about how to connect Linux, Windows machines and | ||
23 | Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. | ||
24 | |||
25 | To compile the SMB support as a module, choose M here: | ||
26 | the module will be called smbfs. Most people say N, however. | ||
27 | |||
28 | config SMB_NLS_DEFAULT | ||
29 | bool "Use a default NLS" | ||
30 | depends on SMB_FS | ||
31 | help | ||
32 | Enabling this will make smbfs use nls translations by default. You | ||
33 | need to specify the local charset (CONFIG_NLS_DEFAULT) in the nls | ||
34 | settings and you need to give the default nls for the SMB server as | ||
35 | CONFIG_SMB_NLS_REMOTE. | ||
36 | |||
37 | The nls settings can be changed at mount time, if your smbmount | ||
38 | supports that, using the codepage and iocharset parameters. | ||
39 | |||
40 | smbmount from samba 2.2.0 or later supports this. | ||
41 | |||
42 | config SMB_NLS_REMOTE | ||
43 | string "Default Remote NLS Option" | ||
44 | depends on SMB_NLS_DEFAULT | ||
45 | default "cp437" | ||
46 | help | ||
47 | This setting allows you to specify a default value for which | ||
48 | codepage the server uses. If this field is left blank no | ||
49 | translations will be done by default. The local codepage/charset | ||
50 | default to CONFIG_NLS_DEFAULT. | ||
51 | |||
52 | The nls settings can be changed at mount time, if your smbmount | ||
53 | supports that, using the codepage and iocharset parameters. | ||
54 | |||
55 | smbmount from samba 2.2.0 or later supports this. | ||
diff --git a/fs/squashfs/Kconfig b/fs/squashfs/Kconfig new file mode 100644 index 000000000000..25a00d19d686 --- /dev/null +++ b/fs/squashfs/Kconfig | |||
@@ -0,0 +1,51 @@ | |||
1 | config SQUASHFS | ||
2 | tristate "SquashFS 4.0 - Squashed file system support" | ||
3 | depends on BLOCK | ||
4 | select ZLIB_INFLATE | ||
5 | help | ||
6 | Saying Y here includes support for SquashFS 4.0 (a Compressed | ||
7 | Read-Only File System). Squashfs is a highly compressed read-only | ||
8 | filesystem for Linux. It uses zlib compression to compress both | ||
9 | files, inodes and directories. Inodes in the system are very small | ||
10 | and all blocks are packed to minimise data overhead. Block sizes | ||
11 | greater than 4K are supported up to a maximum of 1 Mbytes (default | ||
12 | block size 128K). SquashFS 4.0 supports 64 bit filesystems and files | ||
13 | (larger than 4GB), full uid/gid information, hard links and | ||
14 | timestamps. | ||
15 | |||
16 | Squashfs is intended for general read-only filesystem use, for | ||
17 | archival use (i.e. in cases where a .tar.gz file may be used), and in | ||
18 | embedded systems where low overhead is needed. Further information | ||
19 | and tools are available from http://squashfs.sourceforge.net. | ||
20 | |||
21 | If you want to compile this as a module ( = code which can be | ||
22 | inserted in and removed from the running kernel whenever you want), | ||
23 | say M here and read <file:Documentation/modules.txt>. The module | ||
24 | will be called squashfs. Note that the root file system (the one | ||
25 | containing the directory /) cannot be compiled as a module. | ||
26 | |||
27 | If unsure, say N. | ||
28 | |||
29 | config SQUASHFS_EMBEDDED | ||
30 | |||
31 | bool "Additional option for memory-constrained systems" | ||
32 | depends on SQUASHFS | ||
33 | default n | ||
34 | help | ||
35 | Saying Y here allows you to specify cache size. | ||
36 | |||
37 | If unsure, say N. | ||
38 | |||
39 | config SQUASHFS_FRAGMENT_CACHE_SIZE | ||
40 | int "Number of fragments cached" if SQUASHFS_EMBEDDED | ||
41 | depends on SQUASHFS | ||
42 | default "3" | ||
43 | help | ||
44 | By default SquashFS caches the last 3 fragments read from | ||
45 | the filesystem. Increasing this amount may mean SquashFS | ||
46 | has to re-read fragments less often from disk, at the expense | ||
47 | of extra system memory. Decreasing this amount will mean | ||
48 | SquashFS uses less memory at the expense of extra reads from disk. | ||
49 | |||
50 | Note there must be at least one cached fragment. Anything | ||
51 | much more than three will probably not make much difference. | ||
diff --git a/fs/squashfs/squashfs_fs.h b/fs/squashfs/squashfs_fs.h index 6840da1bf21e..283daafc568e 100644 --- a/fs/squashfs/squashfs_fs.h +++ b/fs/squashfs/squashfs_fs.h | |||
@@ -26,7 +26,6 @@ | |||
26 | #define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE | 26 | #define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE |
27 | #define SQUASHFS_MAJOR 4 | 27 | #define SQUASHFS_MAJOR 4 |
28 | #define SQUASHFS_MINOR 0 | 28 | #define SQUASHFS_MINOR 0 |
29 | #define SQUASHFS_MAGIC 0x73717368 | ||
30 | #define SQUASHFS_START 0 | 29 | #define SQUASHFS_START 0 |
31 | 30 | ||
32 | /* size of metadata (inode and directory) blocks */ | 31 | /* size of metadata (inode and directory) blocks */ |
diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c index a0466d7467b2..071df5b5b491 100644 --- a/fs/squashfs/super.c +++ b/fs/squashfs/super.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/init.h> | 35 | #include <linux/init.h> |
36 | #include <linux/module.h> | 36 | #include <linux/module.h> |
37 | #include <linux/zlib.h> | 37 | #include <linux/zlib.h> |
38 | #include <linux/magic.h> | ||
38 | 39 | ||
39 | #include "squashfs_fs.h" | 40 | #include "squashfs_fs.h" |
40 | #include "squashfs_fs_sb.h" | 41 | #include "squashfs_fs_sb.h" |
diff --git a/fs/sysfs/Kconfig b/fs/sysfs/Kconfig new file mode 100644 index 000000000000..f4b67588b9d6 --- /dev/null +++ b/fs/sysfs/Kconfig | |||
@@ -0,0 +1,23 @@ | |||
1 | config SYSFS | ||
2 | bool "sysfs file system support" if EMBEDDED | ||
3 | default y | ||
4 | help | ||
5 | The sysfs filesystem is a virtual filesystem that the kernel uses to | ||
6 | export internal kernel objects, their attributes, and their | ||
7 | relationships to one another. | ||
8 | |||
9 | Users can use sysfs to ascertain useful information about the running | ||
10 | kernel, such as the devices the kernel has discovered on each bus and | ||
11 | which driver each is bound to. sysfs can also be used to tune devices | ||
12 | and other kernel subsystems. | ||
13 | |||
14 | Some system agents rely on the information in sysfs to operate. | ||
15 | /sbin/hotplug uses device and object attributes in sysfs to assist in | ||
16 | delegating policy decisions, like persistently naming devices. | ||
17 | |||
18 | sysfs is currently used by the block subsystem to mount the root | ||
19 | partition. If sysfs is disabled you must specify the boot device on | ||
20 | the kernel boot command line via its major and minor numbers. For | ||
21 | example, "root=03:01" for /dev/hda1. | ||
22 | |||
23 | Designers of embedded systems may wish to say N here to conserve space. | ||
diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c index 66f6e58a7e4b..f2c478c3424e 100644 --- a/fs/sysfs/bin.c +++ b/fs/sysfs/bin.c | |||
@@ -63,6 +63,9 @@ read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off) | |||
63 | int count = min_t(size_t, bytes, PAGE_SIZE); | 63 | int count = min_t(size_t, bytes, PAGE_SIZE); |
64 | char *temp; | 64 | char *temp; |
65 | 65 | ||
66 | if (!bytes) | ||
67 | return 0; | ||
68 | |||
66 | if (size) { | 69 | if (size) { |
67 | if (offs > size) | 70 | if (offs > size) |
68 | return 0; | 71 | return 0; |
@@ -131,6 +134,9 @@ static ssize_t write(struct file *file, const char __user *userbuf, | |||
131 | int count = min_t(size_t, bytes, PAGE_SIZE); | 134 | int count = min_t(size_t, bytes, PAGE_SIZE); |
132 | char *temp; | 135 | char *temp; |
133 | 136 | ||
137 | if (!bytes) | ||
138 | return 0; | ||
139 | |||
134 | if (size) { | 140 | if (size) { |
135 | if (offs > size) | 141 | if (offs > size) |
136 | return 0; | 142 | return 0; |
diff --git a/fs/sysv/Kconfig b/fs/sysv/Kconfig new file mode 100644 index 000000000000..33aeb4b75db1 --- /dev/null +++ b/fs/sysv/Kconfig | |||
@@ -0,0 +1,36 @@ | |||
1 | config SYSV_FS | ||
2 | tristate "System V/Xenix/V7/Coherent file system support" | ||
3 | depends on BLOCK | ||
4 | help | ||
5 | SCO, Xenix and Coherent are commercial Unix systems for Intel | ||
6 | machines, and Version 7 was used on the DEC PDP-11. Saying Y | ||
7 | here would allow you to read from their floppies and hard disk | ||
8 | partitions. | ||
9 | |||
10 | If you have floppies or hard disk partitions like that, it is likely | ||
11 | that they contain binaries from those other Unix systems; in order | ||
12 | to run these binaries, you will want to install linux-abi which is | ||
13 | a set of kernel modules that lets you run SCO, Xenix, Wyse, | ||
14 | UnixWare, Dell Unix and System V programs under Linux. It is | ||
15 | available via FTP (user: ftp) from | ||
16 | <ftp://ftp.openlinux.org/pub/people/hch/linux-abi/>). | ||
17 | NOTE: that will work only for binaries from Intel-based systems; | ||
18 | PDP ones will have to wait until somebody ports Linux to -11 ;-) | ||
19 | |||
20 | If you only intend to mount files from some other Unix over the | ||
21 | network using NFS, you don't need the System V file system support | ||
22 | (but you need NFS file system support obviously). | ||
23 | |||
24 | Note that this option is generally not needed for floppies, since a | ||
25 | good portable way to transport files and directories between unixes | ||
26 | (and even other operating systems) is given by the tar program ("man | ||
27 | tar" or preferably "info tar"). Note also that this option has | ||
28 | nothing whatsoever to do with the option "System V IPC". Read about | ||
29 | the System V file system in | ||
30 | <file:Documentation/filesystems/sysv-fs.txt>. | ||
31 | Saying Y here will enlarge your kernel by about 27 KB. | ||
32 | |||
33 | To compile this as a module, choose M here: the module will be called | ||
34 | sysv. | ||
35 | |||
36 | If you haven't heard about all of this before, it's safe to say N. | ||
diff --git a/fs/udf/Kconfig b/fs/udf/Kconfig new file mode 100644 index 000000000000..0e0e99bd6bce --- /dev/null +++ b/fs/udf/Kconfig | |||
@@ -0,0 +1,18 @@ | |||
1 | config UDF_FS | ||
2 | tristate "UDF file system support" | ||
3 | select CRC_ITU_T | ||
4 | help | ||
5 | This is the new file system used on some CD-ROMs and DVDs. Say Y if | ||
6 | you intend to mount DVD discs or CDRW's written in packet mode, or | ||
7 | if written to by other UDF utilities, such as DirectCD. | ||
8 | Please read <file:Documentation/filesystems/udf.txt>. | ||
9 | |||
10 | To compile this file system support as a module, choose M here: the | ||
11 | module will be called udf. | ||
12 | |||
13 | If unsure, say N. | ||
14 | |||
15 | config UDF_NLS | ||
16 | bool | ||
17 | default y | ||
18 | depends on (UDF_FS=m && NLS) || (UDF_FS=y && NLS=y) | ||
diff --git a/fs/ufs/Kconfig b/fs/ufs/Kconfig new file mode 100644 index 000000000000..e4f10a40768a --- /dev/null +++ b/fs/ufs/Kconfig | |||
@@ -0,0 +1,43 @@ | |||
1 | config UFS_FS | ||
2 | tristate "UFS file system support (read only)" | ||
3 | depends on BLOCK | ||
4 | help | ||
5 | BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD, | ||
6 | OpenBSD and NeXTstep) use a file system called UFS. Some System V | ||
7 | Unixes can create and mount hard disk partitions and diskettes using | ||
8 | this file system as well. Saying Y here will allow you to read from | ||
9 | these partitions; if you also want to write to them, say Y to the | ||
10 | experimental "UFS file system write support", below. Please read the | ||
11 | file <file:Documentation/filesystems/ufs.txt> for more information. | ||
12 | |||
13 | The recently released UFS2 variant (used in FreeBSD 5.x) is | ||
14 | READ-ONLY supported. | ||
15 | |||
16 | Note that this option is generally not needed for floppies, since a | ||
17 | good portable way to transport files and directories between unixes | ||
18 | (and even other operating systems) is given by the tar program ("man | ||
19 | tar" or preferably "info tar"). | ||
20 | |||
21 | When accessing NeXTstep files, you may need to convert them from the | ||
22 | NeXT character set to the Latin1 character set; use the program | ||
23 | recode ("info recode") for this purpose. | ||
24 | |||
25 | To compile the UFS file system support as a module, choose M here: the | ||
26 | module will be called ufs. | ||
27 | |||
28 | If you haven't heard about all of this before, it's safe to say N. | ||
29 | |||
30 | config UFS_FS_WRITE | ||
31 | bool "UFS file system write support (DANGEROUS)" | ||
32 | depends on UFS_FS && EXPERIMENTAL | ||
33 | help | ||
34 | Say Y here if you want to try writing to UFS partitions. This is | ||
35 | experimental, so you should back up your UFS partitions beforehand. | ||
36 | |||
37 | config UFS_DEBUG | ||
38 | bool "UFS debugging" | ||
39 | depends on UFS_FS | ||
40 | help | ||
41 | If you are experiencing any problems with the UFS filesystem, say | ||
42 | Y here. This will result in _many_ additional debugging messages to be | ||
43 | written to the system log. | ||
diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig index 3f53dd101f99..29228f5899cd 100644 --- a/fs/xfs/Kconfig +++ b/fs/xfs/Kconfig | |||
@@ -1,6 +1,7 @@ | |||
1 | config XFS_FS | 1 | config XFS_FS |
2 | tristate "XFS filesystem support" | 2 | tristate "XFS filesystem support" |
3 | depends on BLOCK | 3 | depends on BLOCK |
4 | select EXPORTFS | ||
4 | help | 5 | help |
5 | XFS is a high performance journaling filesystem which originated | 6 | XFS is a high performance journaling filesystem which originated |
6 | on the SGI IRIX platform. It is completely multi-threaded, can | 7 | on the SGI IRIX platform. It is completely multi-threaded, can |
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c index e5be1e0be802..4bd112313f33 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.c +++ b/fs/xfs/linux-2.6/xfs_ioctl.c | |||
@@ -50,12 +50,14 @@ | |||
50 | #include "xfs_vnodeops.h" | 50 | #include "xfs_vnodeops.h" |
51 | #include "xfs_quota.h" | 51 | #include "xfs_quota.h" |
52 | #include "xfs_inode_item.h" | 52 | #include "xfs_inode_item.h" |
53 | #include "xfs_export.h" | ||
53 | 54 | ||
54 | #include <linux/capability.h> | 55 | #include <linux/capability.h> |
55 | #include <linux/dcache.h> | 56 | #include <linux/dcache.h> |
56 | #include <linux/mount.h> | 57 | #include <linux/mount.h> |
57 | #include <linux/namei.h> | 58 | #include <linux/namei.h> |
58 | #include <linux/pagemap.h> | 59 | #include <linux/pagemap.h> |
60 | #include <linux/exportfs.h> | ||
59 | 61 | ||
60 | /* | 62 | /* |
61 | * xfs_find_handle maps from userspace xfs_fsop_handlereq structure to | 63 | * xfs_find_handle maps from userspace xfs_fsop_handlereq structure to |
@@ -164,97 +166,69 @@ xfs_find_handle( | |||
164 | return 0; | 166 | return 0; |
165 | } | 167 | } |
166 | 168 | ||
167 | |||
168 | /* | 169 | /* |
169 | * Convert userspace handle data into inode. | 170 | * No need to do permission checks on the various pathname components |
170 | * | 171 | * as the handle operations are privileged. |
171 | * We use the fact that all the fsop_handlereq ioctl calls have a data | ||
172 | * structure argument whose first component is always a xfs_fsop_handlereq_t, | ||
173 | * so we can pass that sub structure into this handy, shared routine. | ||
174 | * | ||
175 | * If no error, caller must always iput the returned inode. | ||
176 | */ | 172 | */ |
177 | STATIC int | 173 | STATIC int |
178 | xfs_vget_fsop_handlereq( | 174 | xfs_handle_acceptable( |
179 | xfs_mount_t *mp, | 175 | void *context, |
180 | struct inode *parinode, /* parent inode pointer */ | 176 | struct dentry *dentry) |
181 | xfs_fsop_handlereq_t *hreq, | 177 | { |
182 | struct inode **inode) | 178 | return 1; |
179 | } | ||
180 | |||
181 | /* | ||
182 | * Convert userspace handle data into a dentry. | ||
183 | */ | ||
184 | struct dentry * | ||
185 | xfs_handle_to_dentry( | ||
186 | struct file *parfilp, | ||
187 | void __user *uhandle, | ||
188 | u32 hlen) | ||
183 | { | 189 | { |
184 | void __user *hanp; | ||
185 | size_t hlen; | ||
186 | xfs_fid_t *xfid; | ||
187 | xfs_handle_t *handlep; | ||
188 | xfs_handle_t handle; | 190 | xfs_handle_t handle; |
189 | xfs_inode_t *ip; | 191 | struct xfs_fid64 fid; |
190 | xfs_ino_t ino; | ||
191 | __u32 igen; | ||
192 | int error; | ||
193 | 192 | ||
194 | /* | 193 | /* |
195 | * Only allow handle opens under a directory. | 194 | * Only allow handle opens under a directory. |
196 | */ | 195 | */ |
197 | if (!S_ISDIR(parinode->i_mode)) | 196 | if (!S_ISDIR(parfilp->f_path.dentry->d_inode->i_mode)) |
198 | return XFS_ERROR(ENOTDIR); | 197 | return ERR_PTR(-ENOTDIR); |
199 | 198 | ||
200 | hanp = hreq->ihandle; | 199 | if (hlen != sizeof(xfs_handle_t)) |
201 | hlen = hreq->ihandlen; | 200 | return ERR_PTR(-EINVAL); |
202 | handlep = &handle; | 201 | if (copy_from_user(&handle, uhandle, hlen)) |
203 | 202 | return ERR_PTR(-EFAULT); | |
204 | if (hlen < sizeof(handlep->ha_fsid) || hlen > sizeof(*handlep)) | 203 | if (handle.ha_fid.fid_len != |
205 | return XFS_ERROR(EINVAL); | 204 | sizeof(handle.ha_fid) - sizeof(handle.ha_fid.fid_len)) |
206 | if (copy_from_user(handlep, hanp, hlen)) | 205 | return ERR_PTR(-EINVAL); |
207 | return XFS_ERROR(EFAULT); | 206 | |
208 | if (hlen < sizeof(*handlep)) | 207 | memset(&fid, 0, sizeof(struct fid)); |
209 | memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen); | 208 | fid.ino = handle.ha_fid.fid_ino; |
210 | if (hlen > sizeof(handlep->ha_fsid)) { | 209 | fid.gen = handle.ha_fid.fid_gen; |
211 | if (handlep->ha_fid.fid_len != | 210 | |
212 | (hlen - sizeof(handlep->ha_fsid) - | 211 | return exportfs_decode_fh(parfilp->f_path.mnt, (struct fid *)&fid, 3, |
213 | sizeof(handlep->ha_fid.fid_len)) || | 212 | FILEID_INO32_GEN | XFS_FILEID_TYPE_64FLAG, |
214 | handlep->ha_fid.fid_pad) | 213 | xfs_handle_acceptable, NULL); |
215 | return XFS_ERROR(EINVAL); | 214 | } |
216 | } | ||
217 | |||
218 | /* | ||
219 | * Crack the handle, obtain the inode # & generation # | ||
220 | */ | ||
221 | xfid = (struct xfs_fid *)&handlep->ha_fid; | ||
222 | if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) { | ||
223 | ino = xfid->fid_ino; | ||
224 | igen = xfid->fid_gen; | ||
225 | } else { | ||
226 | return XFS_ERROR(EINVAL); | ||
227 | } | ||
228 | |||
229 | /* | ||
230 | * Get the XFS inode, building a Linux inode to go with it. | ||
231 | */ | ||
232 | error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); | ||
233 | if (error) | ||
234 | return error; | ||
235 | if (ip == NULL) | ||
236 | return XFS_ERROR(EIO); | ||
237 | if (ip->i_d.di_gen != igen) { | ||
238 | xfs_iput_new(ip, XFS_ILOCK_SHARED); | ||
239 | return XFS_ERROR(ENOENT); | ||
240 | } | ||
241 | |||
242 | xfs_iunlock(ip, XFS_ILOCK_SHARED); | ||
243 | 215 | ||
244 | *inode = VFS_I(ip); | 216 | STATIC struct dentry * |
245 | return 0; | 217 | xfs_handlereq_to_dentry( |
218 | struct file *parfilp, | ||
219 | xfs_fsop_handlereq_t *hreq) | ||
220 | { | ||
221 | return xfs_handle_to_dentry(parfilp, hreq->ihandle, hreq->ihandlen); | ||
246 | } | 222 | } |
247 | 223 | ||
248 | int | 224 | int |
249 | xfs_open_by_handle( | 225 | xfs_open_by_handle( |
250 | xfs_mount_t *mp, | ||
251 | xfs_fsop_handlereq_t *hreq, | ||
252 | struct file *parfilp, | 226 | struct file *parfilp, |
253 | struct inode *parinode) | 227 | xfs_fsop_handlereq_t *hreq) |
254 | { | 228 | { |
255 | const struct cred *cred = current_cred(); | 229 | const struct cred *cred = current_cred(); |
256 | int error; | 230 | int error; |
257 | int new_fd; | 231 | int fd; |
258 | int permflag; | 232 | int permflag; |
259 | struct file *filp; | 233 | struct file *filp; |
260 | struct inode *inode; | 234 | struct inode *inode; |
@@ -263,19 +237,21 @@ xfs_open_by_handle( | |||
263 | if (!capable(CAP_SYS_ADMIN)) | 237 | if (!capable(CAP_SYS_ADMIN)) |
264 | return -XFS_ERROR(EPERM); | 238 | return -XFS_ERROR(EPERM); |
265 | 239 | ||
266 | error = xfs_vget_fsop_handlereq(mp, parinode, hreq, &inode); | 240 | dentry = xfs_handlereq_to_dentry(parfilp, hreq); |
267 | if (error) | 241 | if (IS_ERR(dentry)) |
268 | return -error; | 242 | return PTR_ERR(dentry); |
243 | inode = dentry->d_inode; | ||
269 | 244 | ||
270 | /* Restrict xfs_open_by_handle to directories & regular files. */ | 245 | /* Restrict xfs_open_by_handle to directories & regular files. */ |
271 | if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode))) { | 246 | if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode))) { |
272 | iput(inode); | 247 | error = -XFS_ERROR(EPERM); |
273 | return -XFS_ERROR(EINVAL); | 248 | goto out_dput; |
274 | } | 249 | } |
275 | 250 | ||
276 | #if BITS_PER_LONG != 32 | 251 | #if BITS_PER_LONG != 32 |
277 | hreq->oflags |= O_LARGEFILE; | 252 | hreq->oflags |= O_LARGEFILE; |
278 | #endif | 253 | #endif |
254 | |||
279 | /* Put open permission in namei format. */ | 255 | /* Put open permission in namei format. */ |
280 | permflag = hreq->oflags; | 256 | permflag = hreq->oflags; |
281 | if ((permflag+1) & O_ACCMODE) | 257 | if ((permflag+1) & O_ACCMODE) |
@@ -285,50 +261,45 @@ xfs_open_by_handle( | |||
285 | 261 | ||
286 | if ((!(permflag & O_APPEND) || (permflag & O_TRUNC)) && | 262 | if ((!(permflag & O_APPEND) || (permflag & O_TRUNC)) && |
287 | (permflag & FMODE_WRITE) && IS_APPEND(inode)) { | 263 | (permflag & FMODE_WRITE) && IS_APPEND(inode)) { |
288 | iput(inode); | 264 | error = -XFS_ERROR(EPERM); |
289 | return -XFS_ERROR(EPERM); | 265 | goto out_dput; |
290 | } | 266 | } |
291 | 267 | ||
292 | if ((permflag & FMODE_WRITE) && IS_IMMUTABLE(inode)) { | 268 | if ((permflag & FMODE_WRITE) && IS_IMMUTABLE(inode)) { |
293 | iput(inode); | 269 | error = -XFS_ERROR(EACCES); |
294 | return -XFS_ERROR(EACCES); | 270 | goto out_dput; |
295 | } | 271 | } |
296 | 272 | ||
297 | /* Can't write directories. */ | 273 | /* Can't write directories. */ |
298 | if ( S_ISDIR(inode->i_mode) && (permflag & FMODE_WRITE)) { | 274 | if (S_ISDIR(inode->i_mode) && (permflag & FMODE_WRITE)) { |
299 | iput(inode); | 275 | error = -XFS_ERROR(EISDIR); |
300 | return -XFS_ERROR(EISDIR); | 276 | goto out_dput; |
301 | } | 277 | } |
302 | 278 | ||
303 | if ((new_fd = get_unused_fd()) < 0) { | 279 | fd = get_unused_fd(); |
304 | iput(inode); | 280 | if (fd < 0) { |
305 | return new_fd; | 281 | error = fd; |
282 | goto out_dput; | ||
306 | } | 283 | } |
307 | 284 | ||
308 | dentry = d_obtain_alias(inode); | 285 | filp = dentry_open(dentry, mntget(parfilp->f_path.mnt), |
309 | if (IS_ERR(dentry)) { | 286 | hreq->oflags, cred); |
310 | put_unused_fd(new_fd); | ||
311 | return PTR_ERR(dentry); | ||
312 | } | ||
313 | |||
314 | /* Ensure umount returns EBUSY on umounts while this file is open. */ | ||
315 | mntget(parfilp->f_path.mnt); | ||
316 | |||
317 | /* Create file pointer. */ | ||
318 | filp = dentry_open(dentry, parfilp->f_path.mnt, hreq->oflags, cred); | ||
319 | if (IS_ERR(filp)) { | 287 | if (IS_ERR(filp)) { |
320 | put_unused_fd(new_fd); | 288 | put_unused_fd(fd); |
321 | return -XFS_ERROR(-PTR_ERR(filp)); | 289 | return PTR_ERR(filp); |
322 | } | 290 | } |
323 | 291 | ||
324 | if (inode->i_mode & S_IFREG) { | 292 | if (inode->i_mode & S_IFREG) { |
325 | /* invisible operation should not change atime */ | ||
326 | filp->f_flags |= O_NOATIME; | 293 | filp->f_flags |= O_NOATIME; |
327 | filp->f_mode |= FMODE_NOCMTIME; | 294 | filp->f_mode |= FMODE_NOCMTIME; |
328 | } | 295 | } |
329 | 296 | ||
330 | fd_install(new_fd, filp); | 297 | fd_install(fd, filp); |
331 | return new_fd; | 298 | return fd; |
299 | |||
300 | out_dput: | ||
301 | dput(dentry); | ||
302 | return error; | ||
332 | } | 303 | } |
333 | 304 | ||
334 | /* | 305 | /* |
@@ -359,11 +330,10 @@ do_readlink( | |||
359 | 330 | ||
360 | int | 331 | int |
361 | xfs_readlink_by_handle( | 332 | xfs_readlink_by_handle( |
362 | xfs_mount_t *mp, | 333 | struct file *parfilp, |
363 | xfs_fsop_handlereq_t *hreq, | 334 | xfs_fsop_handlereq_t *hreq) |
364 | struct inode *parinode) | ||
365 | { | 335 | { |
366 | struct inode *inode; | 336 | struct dentry *dentry; |
367 | __u32 olen; | 337 | __u32 olen; |
368 | void *link; | 338 | void *link; |
369 | int error; | 339 | int error; |
@@ -371,26 +341,28 @@ xfs_readlink_by_handle( | |||
371 | if (!capable(CAP_SYS_ADMIN)) | 341 | if (!capable(CAP_SYS_ADMIN)) |
372 | return -XFS_ERROR(EPERM); | 342 | return -XFS_ERROR(EPERM); |
373 | 343 | ||
374 | error = xfs_vget_fsop_handlereq(mp, parinode, hreq, &inode); | 344 | dentry = xfs_handlereq_to_dentry(parfilp, hreq); |
375 | if (error) | 345 | if (IS_ERR(dentry)) |
376 | return -error; | 346 | return PTR_ERR(dentry); |
377 | 347 | ||
378 | /* Restrict this handle operation to symlinks only. */ | 348 | /* Restrict this handle operation to symlinks only. */ |
379 | if (!S_ISLNK(inode->i_mode)) { | 349 | if (!S_ISLNK(dentry->d_inode->i_mode)) { |
380 | error = -XFS_ERROR(EINVAL); | 350 | error = -XFS_ERROR(EINVAL); |
381 | goto out_iput; | 351 | goto out_dput; |
382 | } | 352 | } |
383 | 353 | ||
384 | if (copy_from_user(&olen, hreq->ohandlen, sizeof(__u32))) { | 354 | if (copy_from_user(&olen, hreq->ohandlen, sizeof(__u32))) { |
385 | error = -XFS_ERROR(EFAULT); | 355 | error = -XFS_ERROR(EFAULT); |
386 | goto out_iput; | 356 | goto out_dput; |
387 | } | 357 | } |
388 | 358 | ||
389 | link = kmalloc(MAXPATHLEN+1, GFP_KERNEL); | 359 | link = kmalloc(MAXPATHLEN+1, GFP_KERNEL); |
390 | if (!link) | 360 | if (!link) { |
391 | goto out_iput; | 361 | error = -XFS_ERROR(ENOMEM); |
362 | goto out_dput; | ||
363 | } | ||
392 | 364 | ||
393 | error = -xfs_readlink(XFS_I(inode), link); | 365 | error = -xfs_readlink(XFS_I(dentry->d_inode), link); |
394 | if (error) | 366 | if (error) |
395 | goto out_kfree; | 367 | goto out_kfree; |
396 | error = do_readlink(hreq->ohandle, olen, link); | 368 | error = do_readlink(hreq->ohandle, olen, link); |
@@ -399,32 +371,31 @@ xfs_readlink_by_handle( | |||
399 | 371 | ||
400 | out_kfree: | 372 | out_kfree: |
401 | kfree(link); | 373 | kfree(link); |
402 | out_iput: | 374 | out_dput: |
403 | iput(inode); | 375 | dput(dentry); |
404 | return error; | 376 | return error; |
405 | } | 377 | } |
406 | 378 | ||
407 | STATIC int | 379 | STATIC int |
408 | xfs_fssetdm_by_handle( | 380 | xfs_fssetdm_by_handle( |
409 | xfs_mount_t *mp, | 381 | struct file *parfilp, |
410 | void __user *arg, | 382 | void __user *arg) |
411 | struct inode *parinode) | ||
412 | { | 383 | { |
413 | int error; | 384 | int error; |
414 | struct fsdmidata fsd; | 385 | struct fsdmidata fsd; |
415 | xfs_fsop_setdm_handlereq_t dmhreq; | 386 | xfs_fsop_setdm_handlereq_t dmhreq; |
416 | struct inode *inode; | 387 | struct dentry *dentry; |
417 | 388 | ||
418 | if (!capable(CAP_MKNOD)) | 389 | if (!capable(CAP_MKNOD)) |
419 | return -XFS_ERROR(EPERM); | 390 | return -XFS_ERROR(EPERM); |
420 | if (copy_from_user(&dmhreq, arg, sizeof(xfs_fsop_setdm_handlereq_t))) | 391 | if (copy_from_user(&dmhreq, arg, sizeof(xfs_fsop_setdm_handlereq_t))) |
421 | return -XFS_ERROR(EFAULT); | 392 | return -XFS_ERROR(EFAULT); |
422 | 393 | ||
423 | error = xfs_vget_fsop_handlereq(mp, parinode, &dmhreq.hreq, &inode); | 394 | dentry = xfs_handlereq_to_dentry(parfilp, &dmhreq.hreq); |
424 | if (error) | 395 | if (IS_ERR(dentry)) |
425 | return -error; | 396 | return PTR_ERR(dentry); |
426 | 397 | ||
427 | if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { | 398 | if (IS_IMMUTABLE(dentry->d_inode) || IS_APPEND(dentry->d_inode)) { |
428 | error = -XFS_ERROR(EPERM); | 399 | error = -XFS_ERROR(EPERM); |
429 | goto out; | 400 | goto out; |
430 | } | 401 | } |
@@ -434,24 +405,23 @@ xfs_fssetdm_by_handle( | |||
434 | goto out; | 405 | goto out; |
435 | } | 406 | } |
436 | 407 | ||
437 | error = -xfs_set_dmattrs(XFS_I(inode), fsd.fsd_dmevmask, | 408 | error = -xfs_set_dmattrs(XFS_I(dentry->d_inode), fsd.fsd_dmevmask, |
438 | fsd.fsd_dmstate); | 409 | fsd.fsd_dmstate); |
439 | 410 | ||
440 | out: | 411 | out: |
441 | iput(inode); | 412 | dput(dentry); |
442 | return error; | 413 | return error; |
443 | } | 414 | } |
444 | 415 | ||
445 | STATIC int | 416 | STATIC int |
446 | xfs_attrlist_by_handle( | 417 | xfs_attrlist_by_handle( |
447 | xfs_mount_t *mp, | 418 | struct file *parfilp, |
448 | void __user *arg, | 419 | void __user *arg) |
449 | struct inode *parinode) | ||
450 | { | 420 | { |
451 | int error; | 421 | int error = -ENOMEM; |
452 | attrlist_cursor_kern_t *cursor; | 422 | attrlist_cursor_kern_t *cursor; |
453 | xfs_fsop_attrlist_handlereq_t al_hreq; | 423 | xfs_fsop_attrlist_handlereq_t al_hreq; |
454 | struct inode *inode; | 424 | struct dentry *dentry; |
455 | char *kbuf; | 425 | char *kbuf; |
456 | 426 | ||
457 | if (!capable(CAP_SYS_ADMIN)) | 427 | if (!capable(CAP_SYS_ADMIN)) |
@@ -467,16 +437,16 @@ xfs_attrlist_by_handle( | |||
467 | if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) | 437 | if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) |
468 | return -XFS_ERROR(EINVAL); | 438 | return -XFS_ERROR(EINVAL); |
469 | 439 | ||
470 | error = xfs_vget_fsop_handlereq(mp, parinode, &al_hreq.hreq, &inode); | 440 | dentry = xfs_handlereq_to_dentry(parfilp, &al_hreq.hreq); |
471 | if (error) | 441 | if (IS_ERR(dentry)) |
472 | goto out; | 442 | return PTR_ERR(dentry); |
473 | 443 | ||
474 | kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); | 444 | kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); |
475 | if (!kbuf) | 445 | if (!kbuf) |
476 | goto out_vn_rele; | 446 | goto out_dput; |
477 | 447 | ||
478 | cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; | 448 | cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; |
479 | error = xfs_attr_list(XFS_I(inode), kbuf, al_hreq.buflen, | 449 | error = -xfs_attr_list(XFS_I(dentry->d_inode), kbuf, al_hreq.buflen, |
480 | al_hreq.flags, cursor); | 450 | al_hreq.flags, cursor); |
481 | if (error) | 451 | if (error) |
482 | goto out_kfree; | 452 | goto out_kfree; |
@@ -486,10 +456,9 @@ xfs_attrlist_by_handle( | |||
486 | 456 | ||
487 | out_kfree: | 457 | out_kfree: |
488 | kfree(kbuf); | 458 | kfree(kbuf); |
489 | out_vn_rele: | 459 | out_dput: |
490 | iput(inode); | 460 | dput(dentry); |
491 | out: | 461 | return error; |
492 | return -error; | ||
493 | } | 462 | } |
494 | 463 | ||
495 | int | 464 | int |
@@ -564,15 +533,13 @@ xfs_attrmulti_attr_remove( | |||
564 | 533 | ||
565 | STATIC int | 534 | STATIC int |
566 | xfs_attrmulti_by_handle( | 535 | xfs_attrmulti_by_handle( |
567 | xfs_mount_t *mp, | ||
568 | void __user *arg, | ||
569 | struct file *parfilp, | 536 | struct file *parfilp, |
570 | struct inode *parinode) | 537 | void __user *arg) |
571 | { | 538 | { |
572 | int error; | 539 | int error; |
573 | xfs_attr_multiop_t *ops; | 540 | xfs_attr_multiop_t *ops; |
574 | xfs_fsop_attrmulti_handlereq_t am_hreq; | 541 | xfs_fsop_attrmulti_handlereq_t am_hreq; |
575 | struct inode *inode; | 542 | struct dentry *dentry; |
576 | unsigned int i, size; | 543 | unsigned int i, size; |
577 | char *attr_name; | 544 | char *attr_name; |
578 | 545 | ||
@@ -581,19 +548,19 @@ xfs_attrmulti_by_handle( | |||
581 | if (copy_from_user(&am_hreq, arg, sizeof(xfs_fsop_attrmulti_handlereq_t))) | 548 | if (copy_from_user(&am_hreq, arg, sizeof(xfs_fsop_attrmulti_handlereq_t))) |
582 | return -XFS_ERROR(EFAULT); | 549 | return -XFS_ERROR(EFAULT); |
583 | 550 | ||
584 | error = xfs_vget_fsop_handlereq(mp, parinode, &am_hreq.hreq, &inode); | 551 | dentry = xfs_handlereq_to_dentry(parfilp, &am_hreq.hreq); |
585 | if (error) | 552 | if (IS_ERR(dentry)) |
586 | goto out; | 553 | return PTR_ERR(dentry); |
587 | 554 | ||
588 | error = E2BIG; | 555 | error = E2BIG; |
589 | size = am_hreq.opcount * sizeof(xfs_attr_multiop_t); | 556 | size = am_hreq.opcount * sizeof(xfs_attr_multiop_t); |
590 | if (!size || size > 16 * PAGE_SIZE) | 557 | if (!size || size > 16 * PAGE_SIZE) |
591 | goto out_vn_rele; | 558 | goto out_dput; |
592 | 559 | ||
593 | error = ENOMEM; | 560 | error = ENOMEM; |
594 | ops = kmalloc(size, GFP_KERNEL); | 561 | ops = kmalloc(size, GFP_KERNEL); |
595 | if (!ops) | 562 | if (!ops) |
596 | goto out_vn_rele; | 563 | goto out_dput; |
597 | 564 | ||
598 | error = EFAULT; | 565 | error = EFAULT; |
599 | if (copy_from_user(ops, am_hreq.ops, size)) | 566 | if (copy_from_user(ops, am_hreq.ops, size)) |
@@ -615,25 +582,28 @@ xfs_attrmulti_by_handle( | |||
615 | 582 | ||
616 | switch (ops[i].am_opcode) { | 583 | switch (ops[i].am_opcode) { |
617 | case ATTR_OP_GET: | 584 | case ATTR_OP_GET: |
618 | ops[i].am_error = xfs_attrmulti_attr_get(inode, | 585 | ops[i].am_error = xfs_attrmulti_attr_get( |
619 | attr_name, ops[i].am_attrvalue, | 586 | dentry->d_inode, attr_name, |
620 | &ops[i].am_length, ops[i].am_flags); | 587 | ops[i].am_attrvalue, &ops[i].am_length, |
588 | ops[i].am_flags); | ||
621 | break; | 589 | break; |
622 | case ATTR_OP_SET: | 590 | case ATTR_OP_SET: |
623 | ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); | 591 | ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); |
624 | if (ops[i].am_error) | 592 | if (ops[i].am_error) |
625 | break; | 593 | break; |
626 | ops[i].am_error = xfs_attrmulti_attr_set(inode, | 594 | ops[i].am_error = xfs_attrmulti_attr_set( |
627 | attr_name, ops[i].am_attrvalue, | 595 | dentry->d_inode, attr_name, |
628 | ops[i].am_length, ops[i].am_flags); | 596 | ops[i].am_attrvalue, ops[i].am_length, |
597 | ops[i].am_flags); | ||
629 | mnt_drop_write(parfilp->f_path.mnt); | 598 | mnt_drop_write(parfilp->f_path.mnt); |
630 | break; | 599 | break; |
631 | case ATTR_OP_REMOVE: | 600 | case ATTR_OP_REMOVE: |
632 | ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); | 601 | ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); |
633 | if (ops[i].am_error) | 602 | if (ops[i].am_error) |
634 | break; | 603 | break; |
635 | ops[i].am_error = xfs_attrmulti_attr_remove(inode, | 604 | ops[i].am_error = xfs_attrmulti_attr_remove( |
636 | attr_name, ops[i].am_flags); | 605 | dentry->d_inode, attr_name, |
606 | ops[i].am_flags); | ||
637 | mnt_drop_write(parfilp->f_path.mnt); | 607 | mnt_drop_write(parfilp->f_path.mnt); |
638 | break; | 608 | break; |
639 | default: | 609 | default: |
@@ -647,9 +617,8 @@ xfs_attrmulti_by_handle( | |||
647 | kfree(attr_name); | 617 | kfree(attr_name); |
648 | out_kfree_ops: | 618 | out_kfree_ops: |
649 | kfree(ops); | 619 | kfree(ops); |
650 | out_vn_rele: | 620 | out_dput: |
651 | iput(inode); | 621 | dput(dentry); |
652 | out: | ||
653 | return -error; | 622 | return -error; |
654 | } | 623 | } |
655 | 624 | ||
@@ -1440,23 +1409,23 @@ xfs_file_ioctl( | |||
1440 | 1409 | ||
1441 | if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) | 1410 | if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) |
1442 | return -XFS_ERROR(EFAULT); | 1411 | return -XFS_ERROR(EFAULT); |
1443 | return xfs_open_by_handle(mp, &hreq, filp, inode); | 1412 | return xfs_open_by_handle(filp, &hreq); |
1444 | } | 1413 | } |
1445 | case XFS_IOC_FSSETDM_BY_HANDLE: | 1414 | case XFS_IOC_FSSETDM_BY_HANDLE: |
1446 | return xfs_fssetdm_by_handle(mp, arg, inode); | 1415 | return xfs_fssetdm_by_handle(filp, arg); |
1447 | 1416 | ||
1448 | case XFS_IOC_READLINK_BY_HANDLE: { | 1417 | case XFS_IOC_READLINK_BY_HANDLE: { |
1449 | xfs_fsop_handlereq_t hreq; | 1418 | xfs_fsop_handlereq_t hreq; |
1450 | 1419 | ||
1451 | if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) | 1420 | if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) |
1452 | return -XFS_ERROR(EFAULT); | 1421 | return -XFS_ERROR(EFAULT); |
1453 | return xfs_readlink_by_handle(mp, &hreq, inode); | 1422 | return xfs_readlink_by_handle(filp, &hreq); |
1454 | } | 1423 | } |
1455 | case XFS_IOC_ATTRLIST_BY_HANDLE: | 1424 | case XFS_IOC_ATTRLIST_BY_HANDLE: |
1456 | return xfs_attrlist_by_handle(mp, arg, inode); | 1425 | return xfs_attrlist_by_handle(filp, arg); |
1457 | 1426 | ||
1458 | case XFS_IOC_ATTRMULTI_BY_HANDLE: | 1427 | case XFS_IOC_ATTRMULTI_BY_HANDLE: |
1459 | return xfs_attrmulti_by_handle(mp, arg, filp, inode); | 1428 | return xfs_attrmulti_by_handle(filp, arg); |
1460 | 1429 | ||
1461 | case XFS_IOC_SWAPEXT: { | 1430 | case XFS_IOC_SWAPEXT: { |
1462 | struct xfs_swapext sxp; | 1431 | struct xfs_swapext sxp; |
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.h b/fs/xfs/linux-2.6/xfs_ioctl.h index 8c16bf2d7e03..7bd7c6afc1eb 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.h +++ b/fs/xfs/linux-2.6/xfs_ioctl.h | |||
@@ -34,16 +34,13 @@ xfs_find_handle( | |||
34 | 34 | ||
35 | extern int | 35 | extern int |
36 | xfs_open_by_handle( | 36 | xfs_open_by_handle( |
37 | xfs_mount_t *mp, | ||
38 | xfs_fsop_handlereq_t *hreq, | ||
39 | struct file *parfilp, | 37 | struct file *parfilp, |
40 | struct inode *parinode); | 38 | xfs_fsop_handlereq_t *hreq); |
41 | 39 | ||
42 | extern int | 40 | extern int |
43 | xfs_readlink_by_handle( | 41 | xfs_readlink_by_handle( |
44 | xfs_mount_t *mp, | 42 | struct file *parfilp, |
45 | xfs_fsop_handlereq_t *hreq, | 43 | xfs_fsop_handlereq_t *hreq); |
46 | struct inode *parinode); | ||
47 | 44 | ||
48 | extern int | 45 | extern int |
49 | xfs_attrmulti_attr_get( | 46 | xfs_attrmulti_attr_get( |
@@ -67,6 +64,12 @@ xfs_attrmulti_attr_remove( | |||
67 | char *name, | 64 | char *name, |
68 | __uint32_t flags); | 65 | __uint32_t flags); |
69 | 66 | ||
67 | extern struct dentry * | ||
68 | xfs_handle_to_dentry( | ||
69 | struct file *parfilp, | ||
70 | void __user *uhandle, | ||
71 | u32 hlen); | ||
72 | |||
70 | extern long | 73 | extern long |
71 | xfs_file_ioctl( | 74 | xfs_file_ioctl( |
72 | struct file *filp, | 75 | struct file *filp, |
diff --git a/fs/xfs/linux-2.6/xfs_ioctl32.c b/fs/xfs/linux-2.6/xfs_ioctl32.c index 50903ad3182e..c70c4e3db790 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl32.c +++ b/fs/xfs/linux-2.6/xfs_ioctl32.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include <linux/compat.h> | 18 | #include <linux/compat.h> |
19 | #include <linux/ioctl.h> | 19 | #include <linux/ioctl.h> |
20 | #include <linux/mount.h> | ||
20 | #include <asm/uaccess.h> | 21 | #include <asm/uaccess.h> |
21 | #include "xfs.h" | 22 | #include "xfs.h" |
22 | #include "xfs_fs.h" | 23 | #include "xfs_fs.h" |
@@ -340,96 +341,24 @@ xfs_compat_handlereq_copyin( | |||
340 | return 0; | 341 | return 0; |
341 | } | 342 | } |
342 | 343 | ||
343 | /* | 344 | STATIC struct dentry * |
344 | * Convert userspace handle data into inode. | 345 | xfs_compat_handlereq_to_dentry( |
345 | * | 346 | struct file *parfilp, |
346 | * We use the fact that all the fsop_handlereq ioctl calls have a data | 347 | compat_xfs_fsop_handlereq_t *hreq) |
347 | * structure argument whose first component is always a xfs_fsop_handlereq_t, | ||
348 | * so we can pass that sub structure into this handy, shared routine. | ||
349 | * | ||
350 | * If no error, caller must always iput the returned inode. | ||
351 | */ | ||
352 | STATIC int | ||
353 | xfs_vget_fsop_handlereq_compat( | ||
354 | xfs_mount_t *mp, | ||
355 | struct inode *parinode, /* parent inode pointer */ | ||
356 | compat_xfs_fsop_handlereq_t *hreq, | ||
357 | struct inode **inode) | ||
358 | { | 348 | { |
359 | void __user *hanp; | 349 | return xfs_handle_to_dentry(parfilp, |
360 | size_t hlen; | 350 | compat_ptr(hreq->ihandle), hreq->ihandlen); |
361 | xfs_fid_t *xfid; | ||
362 | xfs_handle_t *handlep; | ||
363 | xfs_handle_t handle; | ||
364 | xfs_inode_t *ip; | ||
365 | xfs_ino_t ino; | ||
366 | __u32 igen; | ||
367 | int error; | ||
368 | |||
369 | /* | ||
370 | * Only allow handle opens under a directory. | ||
371 | */ | ||
372 | if (!S_ISDIR(parinode->i_mode)) | ||
373 | return XFS_ERROR(ENOTDIR); | ||
374 | |||
375 | hanp = compat_ptr(hreq->ihandle); | ||
376 | hlen = hreq->ihandlen; | ||
377 | handlep = &handle; | ||
378 | |||
379 | if (hlen < sizeof(handlep->ha_fsid) || hlen > sizeof(*handlep)) | ||
380 | return XFS_ERROR(EINVAL); | ||
381 | if (copy_from_user(handlep, hanp, hlen)) | ||
382 | return XFS_ERROR(EFAULT); | ||
383 | if (hlen < sizeof(*handlep)) | ||
384 | memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen); | ||
385 | if (hlen > sizeof(handlep->ha_fsid)) { | ||
386 | if (handlep->ha_fid.fid_len != | ||
387 | (hlen - sizeof(handlep->ha_fsid) - | ||
388 | sizeof(handlep->ha_fid.fid_len)) || | ||
389 | handlep->ha_fid.fid_pad) | ||
390 | return XFS_ERROR(EINVAL); | ||
391 | } | ||
392 | |||
393 | /* | ||
394 | * Crack the handle, obtain the inode # & generation # | ||
395 | */ | ||
396 | xfid = (struct xfs_fid *)&handlep->ha_fid; | ||
397 | if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) { | ||
398 | ino = xfid->fid_ino; | ||
399 | igen = xfid->fid_gen; | ||
400 | } else { | ||
401 | return XFS_ERROR(EINVAL); | ||
402 | } | ||
403 | |||
404 | /* | ||
405 | * Get the XFS inode, building a Linux inode to go with it. | ||
406 | */ | ||
407 | error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); | ||
408 | if (error) | ||
409 | return error; | ||
410 | if (ip == NULL) | ||
411 | return XFS_ERROR(EIO); | ||
412 | if (ip->i_d.di_gen != igen) { | ||
413 | xfs_iput_new(ip, XFS_ILOCK_SHARED); | ||
414 | return XFS_ERROR(ENOENT); | ||
415 | } | ||
416 | |||
417 | xfs_iunlock(ip, XFS_ILOCK_SHARED); | ||
418 | |||
419 | *inode = VFS_I(ip); | ||
420 | return 0; | ||
421 | } | 351 | } |
422 | 352 | ||
423 | STATIC int | 353 | STATIC int |
424 | xfs_compat_attrlist_by_handle( | 354 | xfs_compat_attrlist_by_handle( |
425 | xfs_mount_t *mp, | 355 | struct file *parfilp, |
426 | void __user *arg, | 356 | void __user *arg) |
427 | struct inode *parinode) | ||
428 | { | 357 | { |
429 | int error; | 358 | int error; |
430 | attrlist_cursor_kern_t *cursor; | 359 | attrlist_cursor_kern_t *cursor; |
431 | compat_xfs_fsop_attrlist_handlereq_t al_hreq; | 360 | compat_xfs_fsop_attrlist_handlereq_t al_hreq; |
432 | struct inode *inode; | 361 | struct dentry *dentry; |
433 | char *kbuf; | 362 | char *kbuf; |
434 | 363 | ||
435 | if (!capable(CAP_SYS_ADMIN)) | 364 | if (!capable(CAP_SYS_ADMIN)) |
@@ -446,17 +375,17 @@ xfs_compat_attrlist_by_handle( | |||
446 | if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) | 375 | if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) |
447 | return -XFS_ERROR(EINVAL); | 376 | return -XFS_ERROR(EINVAL); |
448 | 377 | ||
449 | error = xfs_vget_fsop_handlereq_compat(mp, parinode, &al_hreq.hreq, | 378 | dentry = xfs_compat_handlereq_to_dentry(parfilp, &al_hreq.hreq); |
450 | &inode); | 379 | if (IS_ERR(dentry)) |
451 | if (error) | 380 | return PTR_ERR(dentry); |
452 | goto out; | ||
453 | 381 | ||
382 | error = -ENOMEM; | ||
454 | kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); | 383 | kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); |
455 | if (!kbuf) | 384 | if (!kbuf) |
456 | goto out_vn_rele; | 385 | goto out_dput; |
457 | 386 | ||
458 | cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; | 387 | cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; |
459 | error = xfs_attr_list(XFS_I(inode), kbuf, al_hreq.buflen, | 388 | error = -xfs_attr_list(XFS_I(dentry->d_inode), kbuf, al_hreq.buflen, |
460 | al_hreq.flags, cursor); | 389 | al_hreq.flags, cursor); |
461 | if (error) | 390 | if (error) |
462 | goto out_kfree; | 391 | goto out_kfree; |
@@ -466,22 +395,20 @@ xfs_compat_attrlist_by_handle( | |||
466 | 395 | ||
467 | out_kfree: | 396 | out_kfree: |
468 | kfree(kbuf); | 397 | kfree(kbuf); |
469 | out_vn_rele: | 398 | out_dput: |
470 | iput(inode); | 399 | dput(dentry); |
471 | out: | 400 | return error; |
472 | return -error; | ||
473 | } | 401 | } |
474 | 402 | ||
475 | STATIC int | 403 | STATIC int |
476 | xfs_compat_attrmulti_by_handle( | 404 | xfs_compat_attrmulti_by_handle( |
477 | xfs_mount_t *mp, | 405 | struct file *parfilp, |
478 | void __user *arg, | 406 | void __user *arg) |
479 | struct inode *parinode) | ||
480 | { | 407 | { |
481 | int error; | 408 | int error; |
482 | compat_xfs_attr_multiop_t *ops; | 409 | compat_xfs_attr_multiop_t *ops; |
483 | compat_xfs_fsop_attrmulti_handlereq_t am_hreq; | 410 | compat_xfs_fsop_attrmulti_handlereq_t am_hreq; |
484 | struct inode *inode; | 411 | struct dentry *dentry; |
485 | unsigned int i, size; | 412 | unsigned int i, size; |
486 | char *attr_name; | 413 | char *attr_name; |
487 | 414 | ||
@@ -491,20 +418,19 @@ xfs_compat_attrmulti_by_handle( | |||
491 | sizeof(compat_xfs_fsop_attrmulti_handlereq_t))) | 418 | sizeof(compat_xfs_fsop_attrmulti_handlereq_t))) |
492 | return -XFS_ERROR(EFAULT); | 419 | return -XFS_ERROR(EFAULT); |
493 | 420 | ||
494 | error = xfs_vget_fsop_handlereq_compat(mp, parinode, &am_hreq.hreq, | 421 | dentry = xfs_compat_handlereq_to_dentry(parfilp, &am_hreq.hreq); |
495 | &inode); | 422 | if (IS_ERR(dentry)) |
496 | if (error) | 423 | return PTR_ERR(dentry); |
497 | goto out; | ||
498 | 424 | ||
499 | error = E2BIG; | 425 | error = E2BIG; |
500 | size = am_hreq.opcount * sizeof(compat_xfs_attr_multiop_t); | 426 | size = am_hreq.opcount * sizeof(compat_xfs_attr_multiop_t); |
501 | if (!size || size > 16 * PAGE_SIZE) | 427 | if (!size || size > 16 * PAGE_SIZE) |
502 | goto out_vn_rele; | 428 | goto out_dput; |
503 | 429 | ||
504 | error = ENOMEM; | 430 | error = ENOMEM; |
505 | ops = kmalloc(size, GFP_KERNEL); | 431 | ops = kmalloc(size, GFP_KERNEL); |
506 | if (!ops) | 432 | if (!ops) |
507 | goto out_vn_rele; | 433 | goto out_dput; |
508 | 434 | ||
509 | error = EFAULT; | 435 | error = EFAULT; |
510 | if (copy_from_user(ops, compat_ptr(am_hreq.ops), size)) | 436 | if (copy_from_user(ops, compat_ptr(am_hreq.ops), size)) |
@@ -527,20 +453,29 @@ xfs_compat_attrmulti_by_handle( | |||
527 | 453 | ||
528 | switch (ops[i].am_opcode) { | 454 | switch (ops[i].am_opcode) { |
529 | case ATTR_OP_GET: | 455 | case ATTR_OP_GET: |
530 | ops[i].am_error = xfs_attrmulti_attr_get(inode, | 456 | ops[i].am_error = xfs_attrmulti_attr_get( |
531 | attr_name, | 457 | dentry->d_inode, attr_name, |
532 | compat_ptr(ops[i].am_attrvalue), | 458 | compat_ptr(ops[i].am_attrvalue), |
533 | &ops[i].am_length, ops[i].am_flags); | 459 | &ops[i].am_length, ops[i].am_flags); |
534 | break; | 460 | break; |
535 | case ATTR_OP_SET: | 461 | case ATTR_OP_SET: |
536 | ops[i].am_error = xfs_attrmulti_attr_set(inode, | 462 | ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); |
537 | attr_name, | 463 | if (ops[i].am_error) |
464 | break; | ||
465 | ops[i].am_error = xfs_attrmulti_attr_set( | ||
466 | dentry->d_inode, attr_name, | ||
538 | compat_ptr(ops[i].am_attrvalue), | 467 | compat_ptr(ops[i].am_attrvalue), |
539 | ops[i].am_length, ops[i].am_flags); | 468 | ops[i].am_length, ops[i].am_flags); |
469 | mnt_drop_write(parfilp->f_path.mnt); | ||
540 | break; | 470 | break; |
541 | case ATTR_OP_REMOVE: | 471 | case ATTR_OP_REMOVE: |
542 | ops[i].am_error = xfs_attrmulti_attr_remove(inode, | 472 | ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); |
543 | attr_name, ops[i].am_flags); | 473 | if (ops[i].am_error) |
474 | break; | ||
475 | ops[i].am_error = xfs_attrmulti_attr_remove( | ||
476 | dentry->d_inode, attr_name, | ||
477 | ops[i].am_flags); | ||
478 | mnt_drop_write(parfilp->f_path.mnt); | ||
544 | break; | 479 | break; |
545 | default: | 480 | default: |
546 | ops[i].am_error = EINVAL; | 481 | ops[i].am_error = EINVAL; |
@@ -553,22 +488,20 @@ xfs_compat_attrmulti_by_handle( | |||
553 | kfree(attr_name); | 488 | kfree(attr_name); |
554 | out_kfree_ops: | 489 | out_kfree_ops: |
555 | kfree(ops); | 490 | kfree(ops); |
556 | out_vn_rele: | 491 | out_dput: |
557 | iput(inode); | 492 | dput(dentry); |
558 | out: | ||
559 | return -error; | 493 | return -error; |
560 | } | 494 | } |
561 | 495 | ||
562 | STATIC int | 496 | STATIC int |
563 | xfs_compat_fssetdm_by_handle( | 497 | xfs_compat_fssetdm_by_handle( |
564 | xfs_mount_t *mp, | 498 | struct file *parfilp, |
565 | void __user *arg, | 499 | void __user *arg) |
566 | struct inode *parinode) | ||
567 | { | 500 | { |
568 | int error; | 501 | int error; |
569 | struct fsdmidata fsd; | 502 | struct fsdmidata fsd; |
570 | compat_xfs_fsop_setdm_handlereq_t dmhreq; | 503 | compat_xfs_fsop_setdm_handlereq_t dmhreq; |
571 | struct inode *inode; | 504 | struct dentry *dentry; |
572 | 505 | ||
573 | if (!capable(CAP_MKNOD)) | 506 | if (!capable(CAP_MKNOD)) |
574 | return -XFS_ERROR(EPERM); | 507 | return -XFS_ERROR(EPERM); |
@@ -576,12 +509,11 @@ xfs_compat_fssetdm_by_handle( | |||
576 | sizeof(compat_xfs_fsop_setdm_handlereq_t))) | 509 | sizeof(compat_xfs_fsop_setdm_handlereq_t))) |
577 | return -XFS_ERROR(EFAULT); | 510 | return -XFS_ERROR(EFAULT); |
578 | 511 | ||
579 | error = xfs_vget_fsop_handlereq_compat(mp, parinode, &dmhreq.hreq, | 512 | dentry = xfs_compat_handlereq_to_dentry(parfilp, &dmhreq.hreq); |
580 | &inode); | 513 | if (IS_ERR(dentry)) |
581 | if (error) | 514 | return PTR_ERR(dentry); |
582 | return -error; | ||
583 | 515 | ||
584 | if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { | 516 | if (IS_IMMUTABLE(dentry->d_inode) || IS_APPEND(dentry->d_inode)) { |
585 | error = -XFS_ERROR(EPERM); | 517 | error = -XFS_ERROR(EPERM); |
586 | goto out; | 518 | goto out; |
587 | } | 519 | } |
@@ -591,11 +523,11 @@ xfs_compat_fssetdm_by_handle( | |||
591 | goto out; | 523 | goto out; |
592 | } | 524 | } |
593 | 525 | ||
594 | error = -xfs_set_dmattrs(XFS_I(inode), fsd.fsd_dmevmask, | 526 | error = -xfs_set_dmattrs(XFS_I(dentry->d_inode), fsd.fsd_dmevmask, |
595 | fsd.fsd_dmstate); | 527 | fsd.fsd_dmstate); |
596 | 528 | ||
597 | out: | 529 | out: |
598 | iput(inode); | 530 | dput(dentry); |
599 | return error; | 531 | return error; |
600 | } | 532 | } |
601 | 533 | ||
@@ -722,21 +654,21 @@ xfs_file_compat_ioctl( | |||
722 | 654 | ||
723 | if (xfs_compat_handlereq_copyin(&hreq, arg)) | 655 | if (xfs_compat_handlereq_copyin(&hreq, arg)) |
724 | return -XFS_ERROR(EFAULT); | 656 | return -XFS_ERROR(EFAULT); |
725 | return xfs_open_by_handle(mp, &hreq, filp, inode); | 657 | return xfs_open_by_handle(filp, &hreq); |
726 | } | 658 | } |
727 | case XFS_IOC_READLINK_BY_HANDLE_32: { | 659 | case XFS_IOC_READLINK_BY_HANDLE_32: { |
728 | struct xfs_fsop_handlereq hreq; | 660 | struct xfs_fsop_handlereq hreq; |
729 | 661 | ||
730 | if (xfs_compat_handlereq_copyin(&hreq, arg)) | 662 | if (xfs_compat_handlereq_copyin(&hreq, arg)) |
731 | return -XFS_ERROR(EFAULT); | 663 | return -XFS_ERROR(EFAULT); |
732 | return xfs_readlink_by_handle(mp, &hreq, inode); | 664 | return xfs_readlink_by_handle(filp, &hreq); |
733 | } | 665 | } |
734 | case XFS_IOC_ATTRLIST_BY_HANDLE_32: | 666 | case XFS_IOC_ATTRLIST_BY_HANDLE_32: |
735 | return xfs_compat_attrlist_by_handle(mp, arg, inode); | 667 | return xfs_compat_attrlist_by_handle(filp, arg); |
736 | case XFS_IOC_ATTRMULTI_BY_HANDLE_32: | 668 | case XFS_IOC_ATTRMULTI_BY_HANDLE_32: |
737 | return xfs_compat_attrmulti_by_handle(mp, arg, inode); | 669 | return xfs_compat_attrmulti_by_handle(filp, arg); |
738 | case XFS_IOC_FSSETDM_BY_HANDLE_32: | 670 | case XFS_IOC_FSSETDM_BY_HANDLE_32: |
739 | return xfs_compat_fssetdm_by_handle(mp, arg, inode); | 671 | return xfs_compat_fssetdm_by_handle(filp, arg); |
740 | default: | 672 | default: |
741 | return -XFS_ERROR(ENOIOCTLCMD); | 673 | return -XFS_ERROR(ENOIOCTLCMD); |
742 | } | 674 | } |
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 95a971080368..c71e226da7f5 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
@@ -1197,6 +1197,7 @@ xfs_fs_remount( | |||
1197 | struct xfs_mount *mp = XFS_M(sb); | 1197 | struct xfs_mount *mp = XFS_M(sb); |
1198 | substring_t args[MAX_OPT_ARGS]; | 1198 | substring_t args[MAX_OPT_ARGS]; |
1199 | char *p; | 1199 | char *p; |
1200 | int error; | ||
1200 | 1201 | ||
1201 | while ((p = strsep(&options, ",")) != NULL) { | 1202 | while ((p = strsep(&options, ",")) != NULL) { |
1202 | int token; | 1203 | int token; |
@@ -1247,11 +1248,25 @@ xfs_fs_remount( | |||
1247 | } | 1248 | } |
1248 | } | 1249 | } |
1249 | 1250 | ||
1250 | /* rw/ro -> rw */ | 1251 | /* ro -> rw */ |
1251 | if ((mp->m_flags & XFS_MOUNT_RDONLY) && !(*flags & MS_RDONLY)) { | 1252 | if ((mp->m_flags & XFS_MOUNT_RDONLY) && !(*flags & MS_RDONLY)) { |
1252 | mp->m_flags &= ~XFS_MOUNT_RDONLY; | 1253 | mp->m_flags &= ~XFS_MOUNT_RDONLY; |
1253 | if (mp->m_flags & XFS_MOUNT_BARRIER) | 1254 | if (mp->m_flags & XFS_MOUNT_BARRIER) |
1254 | xfs_mountfs_check_barriers(mp); | 1255 | xfs_mountfs_check_barriers(mp); |
1256 | |||
1257 | /* | ||
1258 | * If this is the first remount to writeable state we | ||
1259 | * might have some superblock changes to update. | ||
1260 | */ | ||
1261 | if (mp->m_update_flags) { | ||
1262 | error = xfs_mount_log_sb(mp, mp->m_update_flags); | ||
1263 | if (error) { | ||
1264 | cmn_err(CE_WARN, | ||
1265 | "XFS: failed to write sb changes"); | ||
1266 | return error; | ||
1267 | } | ||
1268 | mp->m_update_flags = 0; | ||
1269 | } | ||
1255 | } | 1270 | } |
1256 | 1271 | ||
1257 | /* rw -> ro */ | 1272 | /* rw -> ro */ |
diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c index 591ca6602bfb..6543c0b29753 100644 --- a/fs/xfs/quota/xfs_dquot.c +++ b/fs/xfs/quota/xfs_dquot.c | |||
@@ -73,6 +73,8 @@ int xfs_dqreq_num; | |||
73 | int xfs_dqerror_mod = 33; | 73 | int xfs_dqerror_mod = 33; |
74 | #endif | 74 | #endif |
75 | 75 | ||
76 | static struct lock_class_key xfs_dquot_other_class; | ||
77 | |||
76 | /* | 78 | /* |
77 | * Allocate and initialize a dquot. We don't always allocate fresh memory; | 79 | * Allocate and initialize a dquot. We don't always allocate fresh memory; |
78 | * we try to reclaim a free dquot if the number of incore dquots are above | 80 | * we try to reclaim a free dquot if the number of incore dquots are above |
@@ -139,7 +141,15 @@ xfs_qm_dqinit( | |||
139 | ASSERT(dqp->q_trace); | 141 | ASSERT(dqp->q_trace); |
140 | xfs_dqtrace_entry(dqp, "DQRECLAIMED_INIT"); | 142 | xfs_dqtrace_entry(dqp, "DQRECLAIMED_INIT"); |
141 | #endif | 143 | #endif |
142 | } | 144 | } |
145 | |||
146 | /* | ||
147 | * In either case we need to make sure group quotas have a different | ||
148 | * lock class than user quotas, to make sure lockdep knows we can | ||
149 | * locks of one of each at the same time. | ||
150 | */ | ||
151 | if (!(type & XFS_DQ_USER)) | ||
152 | lockdep_set_class(&dqp->q_qlock, &xfs_dquot_other_class); | ||
143 | 153 | ||
144 | /* | 154 | /* |
145 | * log item gets initialized later | 155 | * log item gets initialized later |
@@ -421,7 +431,7 @@ xfs_qm_dqalloc( | |||
421 | /* | 431 | /* |
422 | * Initialize the bmap freelist prior to calling bmapi code. | 432 | * Initialize the bmap freelist prior to calling bmapi code. |
423 | */ | 433 | */ |
424 | XFS_BMAP_INIT(&flist, &firstblock); | 434 | xfs_bmap_init(&flist, &firstblock); |
425 | xfs_ilock(quotip, XFS_ILOCK_EXCL); | 435 | xfs_ilock(quotip, XFS_ILOCK_EXCL); |
426 | /* | 436 | /* |
427 | * Return if this type of quotas is turned off while we didn't | 437 | * Return if this type of quotas is turned off while we didn't |
@@ -1383,6 +1393,12 @@ xfs_dqunlock_nonotify( | |||
1383 | mutex_unlock(&(dqp->q_qlock)); | 1393 | mutex_unlock(&(dqp->q_qlock)); |
1384 | } | 1394 | } |
1385 | 1395 | ||
1396 | /* | ||
1397 | * Lock two xfs_dquot structures. | ||
1398 | * | ||
1399 | * To avoid deadlocks we always lock the quota structure with | ||
1400 | * the lowerd id first. | ||
1401 | */ | ||
1386 | void | 1402 | void |
1387 | xfs_dqlock2( | 1403 | xfs_dqlock2( |
1388 | xfs_dquot_t *d1, | 1404 | xfs_dquot_t *d1, |
@@ -1392,18 +1408,16 @@ xfs_dqlock2( | |||
1392 | ASSERT(d1 != d2); | 1408 | ASSERT(d1 != d2); |
1393 | if (be32_to_cpu(d1->q_core.d_id) > | 1409 | if (be32_to_cpu(d1->q_core.d_id) > |
1394 | be32_to_cpu(d2->q_core.d_id)) { | 1410 | be32_to_cpu(d2->q_core.d_id)) { |
1395 | xfs_dqlock(d2); | 1411 | mutex_lock(&d2->q_qlock); |
1396 | xfs_dqlock(d1); | 1412 | mutex_lock_nested(&d1->q_qlock, XFS_QLOCK_NESTED); |
1397 | } else { | 1413 | } else { |
1398 | xfs_dqlock(d1); | 1414 | mutex_lock(&d1->q_qlock); |
1399 | xfs_dqlock(d2); | 1415 | mutex_lock_nested(&d2->q_qlock, XFS_QLOCK_NESTED); |
1400 | } | ||
1401 | } else { | ||
1402 | if (d1) { | ||
1403 | xfs_dqlock(d1); | ||
1404 | } else if (d2) { | ||
1405 | xfs_dqlock(d2); | ||
1406 | } | 1416 | } |
1417 | } else if (d1) { | ||
1418 | mutex_lock(&d1->q_qlock); | ||
1419 | } else if (d2) { | ||
1420 | mutex_lock(&d2->q_qlock); | ||
1407 | } | 1421 | } |
1408 | } | 1422 | } |
1409 | 1423 | ||
diff --git a/fs/xfs/quota/xfs_dquot.h b/fs/xfs/quota/xfs_dquot.h index 7e455337e2ba..d443e93b4331 100644 --- a/fs/xfs/quota/xfs_dquot.h +++ b/fs/xfs/quota/xfs_dquot.h | |||
@@ -97,6 +97,16 @@ typedef struct xfs_dquot { | |||
97 | #define dq_hashlist q_lists.dqm_hashlist | 97 | #define dq_hashlist q_lists.dqm_hashlist |
98 | #define dq_flags q_lists.dqm_flags | 98 | #define dq_flags q_lists.dqm_flags |
99 | 99 | ||
100 | /* | ||
101 | * Lock hierachy for q_qlock: | ||
102 | * XFS_QLOCK_NORMAL is the implicit default, | ||
103 | * XFS_QLOCK_NESTED is the dquot with the higher id in xfs_dqlock2 | ||
104 | */ | ||
105 | enum { | ||
106 | XFS_QLOCK_NORMAL = 0, | ||
107 | XFS_QLOCK_NESTED, | ||
108 | }; | ||
109 | |||
100 | #define XFS_DQHOLD(dqp) ((dqp)->q_nrefs++) | 110 | #define XFS_DQHOLD(dqp) ((dqp)->q_nrefs++) |
101 | 111 | ||
102 | #ifdef DEBUG | 112 | #ifdef DEBUG |
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index 6b13960cf318..7a2beb64314f 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c | |||
@@ -1070,6 +1070,13 @@ xfs_qm_sync( | |||
1070 | return 0; | 1070 | return 0; |
1071 | } | 1071 | } |
1072 | 1072 | ||
1073 | /* | ||
1074 | * The hash chains and the mplist use the same xfs_dqhash structure as | ||
1075 | * their list head, but we can take the mplist qh_lock and one of the | ||
1076 | * hash qh_locks at the same time without any problem as they aren't | ||
1077 | * related. | ||
1078 | */ | ||
1079 | static struct lock_class_key xfs_quota_mplist_class; | ||
1073 | 1080 | ||
1074 | /* | 1081 | /* |
1075 | * This initializes all the quota information that's kept in the | 1082 | * This initializes all the quota information that's kept in the |
@@ -1105,6 +1112,8 @@ xfs_qm_init_quotainfo( | |||
1105 | } | 1112 | } |
1106 | 1113 | ||
1107 | xfs_qm_list_init(&qinf->qi_dqlist, "mpdqlist", 0); | 1114 | xfs_qm_list_init(&qinf->qi_dqlist, "mpdqlist", 0); |
1115 | lockdep_set_class(&qinf->qi_dqlist.qh_lock, &xfs_quota_mplist_class); | ||
1116 | |||
1108 | qinf->qi_dqreclaims = 0; | 1117 | qinf->qi_dqreclaims = 0; |
1109 | 1118 | ||
1110 | /* mutex used to serialize quotaoffs */ | 1119 | /* mutex used to serialize quotaoffs */ |
diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index d3b3cf742999..143d63ecb20a 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h | |||
@@ -244,8 +244,8 @@ typedef struct xfs_perag | |||
244 | #define XFS_AG_CHECK_DADDR(mp,d,len) \ | 244 | #define XFS_AG_CHECK_DADDR(mp,d,len) \ |
245 | ((len) == 1 ? \ | 245 | ((len) == 1 ? \ |
246 | ASSERT((d) == XFS_SB_DADDR || \ | 246 | ASSERT((d) == XFS_SB_DADDR || \ |
247 | XFS_DADDR_TO_AGBNO(mp, d) != XFS_SB_DADDR) : \ | 247 | xfs_daddr_to_agbno(mp, d) != XFS_SB_DADDR) : \ |
248 | ASSERT(XFS_DADDR_TO_AGNO(mp, d) == \ | 248 | ASSERT(xfs_daddr_to_agno(mp, d) == \ |
249 | XFS_DADDR_TO_AGNO(mp, (d) + (len) - 1))) | 249 | xfs_daddr_to_agno(mp, (d) + (len) - 1))) |
250 | 250 | ||
251 | #endif /* __XFS_AG_H__ */ | 251 | #endif /* __XFS_AG_H__ */ |
diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 733cb75a8c5d..c10c3a292d30 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c | |||
@@ -115,7 +115,7 @@ xfs_allocbt_free_block( | |||
115 | xfs_agblock_t bno; | 115 | xfs_agblock_t bno; |
116 | int error; | 116 | int error; |
117 | 117 | ||
118 | bno = XFS_DADDR_TO_AGBNO(cur->bc_mp, XFS_BUF_ADDR(bp)); | 118 | bno = xfs_daddr_to_agbno(cur->bc_mp, XFS_BUF_ADDR(bp)); |
119 | error = xfs_alloc_put_freelist(cur->bc_tp, agbp, NULL, bno, 1); | 119 | error = xfs_alloc_put_freelist(cur->bc_tp, agbp, NULL, bno, 1); |
120 | if (error) | 120 | if (error) |
121 | return error; | 121 | return error; |
diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c index f7cdc28aff41..5fde1654b430 100644 --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c | |||
@@ -374,7 +374,7 @@ xfs_attr_set_int(xfs_inode_t *dp, struct xfs_name *name, | |||
374 | * It won't fit in the shortform, transform to a leaf block. | 374 | * It won't fit in the shortform, transform to a leaf block. |
375 | * GROT: another possible req'mt for a double-split btree op. | 375 | * GROT: another possible req'mt for a double-split btree op. |
376 | */ | 376 | */ |
377 | XFS_BMAP_INIT(args.flist, args.firstblock); | 377 | xfs_bmap_init(args.flist, args.firstblock); |
378 | error = xfs_attr_shortform_to_leaf(&args); | 378 | error = xfs_attr_shortform_to_leaf(&args); |
379 | if (!error) { | 379 | if (!error) { |
380 | error = xfs_bmap_finish(&args.trans, args.flist, | 380 | error = xfs_bmap_finish(&args.trans, args.flist, |
@@ -956,7 +956,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args) | |||
956 | * Commit that transaction so that the node_addname() call | 956 | * Commit that transaction so that the node_addname() call |
957 | * can manage its own transactions. | 957 | * can manage its own transactions. |
958 | */ | 958 | */ |
959 | XFS_BMAP_INIT(args->flist, args->firstblock); | 959 | xfs_bmap_init(args->flist, args->firstblock); |
960 | error = xfs_attr_leaf_to_node(args); | 960 | error = xfs_attr_leaf_to_node(args); |
961 | if (!error) { | 961 | if (!error) { |
962 | error = xfs_bmap_finish(&args->trans, args->flist, | 962 | error = xfs_bmap_finish(&args->trans, args->flist, |
@@ -1057,7 +1057,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args) | |||
1057 | * If the result is small enough, shrink it all into the inode. | 1057 | * If the result is small enough, shrink it all into the inode. |
1058 | */ | 1058 | */ |
1059 | if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { | 1059 | if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { |
1060 | XFS_BMAP_INIT(args->flist, args->firstblock); | 1060 | xfs_bmap_init(args->flist, args->firstblock); |
1061 | error = xfs_attr_leaf_to_shortform(bp, args, forkoff); | 1061 | error = xfs_attr_leaf_to_shortform(bp, args, forkoff); |
1062 | /* bp is gone due to xfs_da_shrink_inode */ | 1062 | /* bp is gone due to xfs_da_shrink_inode */ |
1063 | if (!error) { | 1063 | if (!error) { |
@@ -1135,7 +1135,7 @@ xfs_attr_leaf_removename(xfs_da_args_t *args) | |||
1135 | * If the result is small enough, shrink it all into the inode. | 1135 | * If the result is small enough, shrink it all into the inode. |
1136 | */ | 1136 | */ |
1137 | if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { | 1137 | if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { |
1138 | XFS_BMAP_INIT(args->flist, args->firstblock); | 1138 | xfs_bmap_init(args->flist, args->firstblock); |
1139 | error = xfs_attr_leaf_to_shortform(bp, args, forkoff); | 1139 | error = xfs_attr_leaf_to_shortform(bp, args, forkoff); |
1140 | /* bp is gone due to xfs_da_shrink_inode */ | 1140 | /* bp is gone due to xfs_da_shrink_inode */ |
1141 | if (!error) { | 1141 | if (!error) { |
@@ -1290,7 +1290,7 @@ restart: | |||
1290 | * have been a b-tree. | 1290 | * have been a b-tree. |
1291 | */ | 1291 | */ |
1292 | xfs_da_state_free(state); | 1292 | xfs_da_state_free(state); |
1293 | XFS_BMAP_INIT(args->flist, args->firstblock); | 1293 | xfs_bmap_init(args->flist, args->firstblock); |
1294 | error = xfs_attr_leaf_to_node(args); | 1294 | error = xfs_attr_leaf_to_node(args); |
1295 | if (!error) { | 1295 | if (!error) { |
1296 | error = xfs_bmap_finish(&args->trans, | 1296 | error = xfs_bmap_finish(&args->trans, |
@@ -1331,7 +1331,7 @@ restart: | |||
1331 | * in the index/blkno/rmtblkno/rmtblkcnt fields and | 1331 | * in the index/blkno/rmtblkno/rmtblkcnt fields and |
1332 | * in the index2/blkno2/rmtblkno2/rmtblkcnt2 fields. | 1332 | * in the index2/blkno2/rmtblkno2/rmtblkcnt2 fields. |
1333 | */ | 1333 | */ |
1334 | XFS_BMAP_INIT(args->flist, args->firstblock); | 1334 | xfs_bmap_init(args->flist, args->firstblock); |
1335 | error = xfs_da_split(state); | 1335 | error = xfs_da_split(state); |
1336 | if (!error) { | 1336 | if (!error) { |
1337 | error = xfs_bmap_finish(&args->trans, args->flist, | 1337 | error = xfs_bmap_finish(&args->trans, args->flist, |
@@ -1443,7 +1443,7 @@ restart: | |||
1443 | * Check to see if the tree needs to be collapsed. | 1443 | * Check to see if the tree needs to be collapsed. |
1444 | */ | 1444 | */ |
1445 | if (retval && (state->path.active > 1)) { | 1445 | if (retval && (state->path.active > 1)) { |
1446 | XFS_BMAP_INIT(args->flist, args->firstblock); | 1446 | xfs_bmap_init(args->flist, args->firstblock); |
1447 | error = xfs_da_join(state); | 1447 | error = xfs_da_join(state); |
1448 | if (!error) { | 1448 | if (!error) { |
1449 | error = xfs_bmap_finish(&args->trans, | 1449 | error = xfs_bmap_finish(&args->trans, |
@@ -1579,7 +1579,7 @@ xfs_attr_node_removename(xfs_da_args_t *args) | |||
1579 | * Check to see if the tree needs to be collapsed. | 1579 | * Check to see if the tree needs to be collapsed. |
1580 | */ | 1580 | */ |
1581 | if (retval && (state->path.active > 1)) { | 1581 | if (retval && (state->path.active > 1)) { |
1582 | XFS_BMAP_INIT(args->flist, args->firstblock); | 1582 | xfs_bmap_init(args->flist, args->firstblock); |
1583 | error = xfs_da_join(state); | 1583 | error = xfs_da_join(state); |
1584 | if (!error) { | 1584 | if (!error) { |
1585 | error = xfs_bmap_finish(&args->trans, args->flist, | 1585 | error = xfs_bmap_finish(&args->trans, args->flist, |
@@ -1630,7 +1630,7 @@ xfs_attr_node_removename(xfs_da_args_t *args) | |||
1630 | == XFS_ATTR_LEAF_MAGIC); | 1630 | == XFS_ATTR_LEAF_MAGIC); |
1631 | 1631 | ||
1632 | if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { | 1632 | if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { |
1633 | XFS_BMAP_INIT(args->flist, args->firstblock); | 1633 | xfs_bmap_init(args->flist, args->firstblock); |
1634 | error = xfs_attr_leaf_to_shortform(bp, args, forkoff); | 1634 | error = xfs_attr_leaf_to_shortform(bp, args, forkoff); |
1635 | /* bp is gone due to xfs_da_shrink_inode */ | 1635 | /* bp is gone due to xfs_da_shrink_inode */ |
1636 | if (!error) { | 1636 | if (!error) { |
@@ -2069,7 +2069,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) | |||
2069 | /* | 2069 | /* |
2070 | * Allocate a single extent, up to the size of the value. | 2070 | * Allocate a single extent, up to the size of the value. |
2071 | */ | 2071 | */ |
2072 | XFS_BMAP_INIT(args->flist, args->firstblock); | 2072 | xfs_bmap_init(args->flist, args->firstblock); |
2073 | nmap = 1; | 2073 | nmap = 1; |
2074 | error = xfs_bmapi(args->trans, dp, (xfs_fileoff_t)lblkno, | 2074 | error = xfs_bmapi(args->trans, dp, (xfs_fileoff_t)lblkno, |
2075 | blkcnt, | 2075 | blkcnt, |
@@ -2123,7 +2123,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) | |||
2123 | /* | 2123 | /* |
2124 | * Try to remember where we decided to put the value. | 2124 | * Try to remember where we decided to put the value. |
2125 | */ | 2125 | */ |
2126 | XFS_BMAP_INIT(args->flist, args->firstblock); | 2126 | xfs_bmap_init(args->flist, args->firstblock); |
2127 | nmap = 1; | 2127 | nmap = 1; |
2128 | error = xfs_bmapi(NULL, dp, (xfs_fileoff_t)lblkno, | 2128 | error = xfs_bmapi(NULL, dp, (xfs_fileoff_t)lblkno, |
2129 | args->rmtblkcnt, | 2129 | args->rmtblkcnt, |
@@ -2188,7 +2188,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args) | |||
2188 | /* | 2188 | /* |
2189 | * Try to remember where we decided to put the value. | 2189 | * Try to remember where we decided to put the value. |
2190 | */ | 2190 | */ |
2191 | XFS_BMAP_INIT(args->flist, args->firstblock); | 2191 | xfs_bmap_init(args->flist, args->firstblock); |
2192 | nmap = 1; | 2192 | nmap = 1; |
2193 | error = xfs_bmapi(NULL, args->dp, (xfs_fileoff_t)lblkno, | 2193 | error = xfs_bmapi(NULL, args->dp, (xfs_fileoff_t)lblkno, |
2194 | args->rmtblkcnt, | 2194 | args->rmtblkcnt, |
@@ -2229,7 +2229,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args) | |||
2229 | blkcnt = args->rmtblkcnt; | 2229 | blkcnt = args->rmtblkcnt; |
2230 | done = 0; | 2230 | done = 0; |
2231 | while (!done) { | 2231 | while (!done) { |
2232 | XFS_BMAP_INIT(args->flist, args->firstblock); | 2232 | xfs_bmap_init(args->flist, args->firstblock); |
2233 | error = xfs_bunmapi(args->trans, args->dp, lblkno, blkcnt, | 2233 | error = xfs_bunmapi(args->trans, args->dp, lblkno, blkcnt, |
2234 | XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA, | 2234 | XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA, |
2235 | 1, args->firstblock, args->flist, | 2235 | 1, args->firstblock, args->flist, |
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 138308e70d14..c852cd65aaea 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -595,9 +595,9 @@ xfs_bmap_add_extent( | |||
595 | xfs_iext_insert(ifp, 0, 1, new); | 595 | xfs_iext_insert(ifp, 0, 1, new); |
596 | ASSERT(cur == NULL); | 596 | ASSERT(cur == NULL); |
597 | ifp->if_lastex = 0; | 597 | ifp->if_lastex = 0; |
598 | if (!ISNULLSTARTBLOCK(new->br_startblock)) { | 598 | if (!isnullstartblock(new->br_startblock)) { |
599 | XFS_IFORK_NEXT_SET(ip, whichfork, 1); | 599 | XFS_IFORK_NEXT_SET(ip, whichfork, 1); |
600 | logflags = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); | 600 | logflags = XFS_ILOG_CORE | xfs_ilog_fext(whichfork); |
601 | } else | 601 | } else |
602 | logflags = 0; | 602 | logflags = 0; |
603 | /* DELTA: single new extent */ | 603 | /* DELTA: single new extent */ |
@@ -613,7 +613,7 @@ xfs_bmap_add_extent( | |||
613 | /* | 613 | /* |
614 | * Any kind of new delayed allocation goes here. | 614 | * Any kind of new delayed allocation goes here. |
615 | */ | 615 | */ |
616 | else if (ISNULLSTARTBLOCK(new->br_startblock)) { | 616 | else if (isnullstartblock(new->br_startblock)) { |
617 | if (cur) | 617 | if (cur) |
618 | ASSERT((cur->bc_private.b.flags & | 618 | ASSERT((cur->bc_private.b.flags & |
619 | XFS_BTCUR_BPRV_WASDEL) == 0); | 619 | XFS_BTCUR_BPRV_WASDEL) == 0); |
@@ -644,11 +644,11 @@ xfs_bmap_add_extent( | |||
644 | * in a delayed or unwritten allocation with a real one, or | 644 | * in a delayed or unwritten allocation with a real one, or |
645 | * converting real back to unwritten. | 645 | * converting real back to unwritten. |
646 | */ | 646 | */ |
647 | if (!ISNULLSTARTBLOCK(new->br_startblock) && | 647 | if (!isnullstartblock(new->br_startblock) && |
648 | new->br_startoff + new->br_blockcount > prev.br_startoff) { | 648 | new->br_startoff + new->br_blockcount > prev.br_startoff) { |
649 | if (prev.br_state != XFS_EXT_UNWRITTEN && | 649 | if (prev.br_state != XFS_EXT_UNWRITTEN && |
650 | ISNULLSTARTBLOCK(prev.br_startblock)) { | 650 | isnullstartblock(prev.br_startblock)) { |
651 | da_old = STARTBLOCKVAL(prev.br_startblock); | 651 | da_old = startblockval(prev.br_startblock); |
652 | if (cur) | 652 | if (cur) |
653 | ASSERT(cur->bc_private.b.flags & | 653 | ASSERT(cur->bc_private.b.flags & |
654 | XFS_BTCUR_BPRV_WASDEL); | 654 | XFS_BTCUR_BPRV_WASDEL); |
@@ -803,7 +803,7 @@ xfs_bmap_add_extent_delay_real( | |||
803 | */ | 803 | */ |
804 | if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { | 804 | if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { |
805 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT); | 805 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT); |
806 | STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(LEFT.br_startblock)); | 806 | STATE_SET(LEFT_DELAY, isnullstartblock(LEFT.br_startblock)); |
807 | } | 807 | } |
808 | STATE_SET(LEFT_CONTIG, | 808 | STATE_SET(LEFT_CONTIG, |
809 | STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) && | 809 | STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) && |
@@ -820,7 +820,7 @@ xfs_bmap_add_extent_delay_real( | |||
820 | idx < | 820 | idx < |
821 | ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) { | 821 | ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) { |
822 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT); | 822 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT); |
823 | STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(RIGHT.br_startblock)); | 823 | STATE_SET(RIGHT_DELAY, isnullstartblock(RIGHT.br_startblock)); |
824 | } | 824 | } |
825 | STATE_SET(RIGHT_CONTIG, | 825 | STATE_SET(RIGHT_CONTIG, |
826 | STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) && | 826 | STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) && |
@@ -1019,8 +1019,8 @@ xfs_bmap_add_extent_delay_real( | |||
1019 | goto done; | 1019 | goto done; |
1020 | } | 1020 | } |
1021 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), | 1021 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), |
1022 | STARTBLOCKVAL(PREV.br_startblock)); | 1022 | startblockval(PREV.br_startblock)); |
1023 | xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); | 1023 | xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); |
1024 | XFS_BMAP_TRACE_POST_UPDATE("LF|LC", ip, idx, XFS_DATA_FORK); | 1024 | XFS_BMAP_TRACE_POST_UPDATE("LF|LC", ip, idx, XFS_DATA_FORK); |
1025 | *dnew = temp; | 1025 | *dnew = temp; |
1026 | /* DELTA: The boundary between two in-core extents moved. */ | 1026 | /* DELTA: The boundary between two in-core extents moved. */ |
@@ -1067,10 +1067,10 @@ xfs_bmap_add_extent_delay_real( | |||
1067 | goto done; | 1067 | goto done; |
1068 | } | 1068 | } |
1069 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), | 1069 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), |
1070 | STARTBLOCKVAL(PREV.br_startblock) - | 1070 | startblockval(PREV.br_startblock) - |
1071 | (cur ? cur->bc_private.b.allocated : 0)); | 1071 | (cur ? cur->bc_private.b.allocated : 0)); |
1072 | ep = xfs_iext_get_ext(ifp, idx + 1); | 1072 | ep = xfs_iext_get_ext(ifp, idx + 1); |
1073 | xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); | 1073 | xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); |
1074 | XFS_BMAP_TRACE_POST_UPDATE("LF", ip, idx + 1, XFS_DATA_FORK); | 1074 | XFS_BMAP_TRACE_POST_UPDATE("LF", ip, idx + 1, XFS_DATA_FORK); |
1075 | *dnew = temp; | 1075 | *dnew = temp; |
1076 | /* DELTA: One in-core extent is split in two. */ | 1076 | /* DELTA: One in-core extent is split in two. */ |
@@ -1110,8 +1110,8 @@ xfs_bmap_add_extent_delay_real( | |||
1110 | goto done; | 1110 | goto done; |
1111 | } | 1111 | } |
1112 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), | 1112 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), |
1113 | STARTBLOCKVAL(PREV.br_startblock)); | 1113 | startblockval(PREV.br_startblock)); |
1114 | xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); | 1114 | xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); |
1115 | XFS_BMAP_TRACE_POST_UPDATE("RF|RC", ip, idx, XFS_DATA_FORK); | 1115 | XFS_BMAP_TRACE_POST_UPDATE("RF|RC", ip, idx, XFS_DATA_FORK); |
1116 | *dnew = temp; | 1116 | *dnew = temp; |
1117 | /* DELTA: The boundary between two in-core extents moved. */ | 1117 | /* DELTA: The boundary between two in-core extents moved. */ |
@@ -1157,10 +1157,10 @@ xfs_bmap_add_extent_delay_real( | |||
1157 | goto done; | 1157 | goto done; |
1158 | } | 1158 | } |
1159 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), | 1159 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), |
1160 | STARTBLOCKVAL(PREV.br_startblock) - | 1160 | startblockval(PREV.br_startblock) - |
1161 | (cur ? cur->bc_private.b.allocated : 0)); | 1161 | (cur ? cur->bc_private.b.allocated : 0)); |
1162 | ep = xfs_iext_get_ext(ifp, idx); | 1162 | ep = xfs_iext_get_ext(ifp, idx); |
1163 | xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); | 1163 | xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); |
1164 | XFS_BMAP_TRACE_POST_UPDATE("RF", ip, idx, XFS_DATA_FORK); | 1164 | XFS_BMAP_TRACE_POST_UPDATE("RF", ip, idx, XFS_DATA_FORK); |
1165 | *dnew = temp; | 1165 | *dnew = temp; |
1166 | /* DELTA: One in-core extent is split in two. */ | 1166 | /* DELTA: One in-core extent is split in two. */ |
@@ -1213,7 +1213,7 @@ xfs_bmap_add_extent_delay_real( | |||
1213 | } | 1213 | } |
1214 | temp = xfs_bmap_worst_indlen(ip, temp); | 1214 | temp = xfs_bmap_worst_indlen(ip, temp); |
1215 | temp2 = xfs_bmap_worst_indlen(ip, temp2); | 1215 | temp2 = xfs_bmap_worst_indlen(ip, temp2); |
1216 | diff = (int)(temp + temp2 - STARTBLOCKVAL(PREV.br_startblock) - | 1216 | diff = (int)(temp + temp2 - startblockval(PREV.br_startblock) - |
1217 | (cur ? cur->bc_private.b.allocated : 0)); | 1217 | (cur ? cur->bc_private.b.allocated : 0)); |
1218 | if (diff > 0 && | 1218 | if (diff > 0 && |
1219 | xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) { | 1219 | xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) { |
@@ -1241,11 +1241,11 @@ xfs_bmap_add_extent_delay_real( | |||
1241 | } | 1241 | } |
1242 | } | 1242 | } |
1243 | ep = xfs_iext_get_ext(ifp, idx); | 1243 | ep = xfs_iext_get_ext(ifp, idx); |
1244 | xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); | 1244 | xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); |
1245 | XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx, XFS_DATA_FORK); | 1245 | XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx, XFS_DATA_FORK); |
1246 | XFS_BMAP_TRACE_PRE_UPDATE("0", ip, idx + 2, XFS_DATA_FORK); | 1246 | XFS_BMAP_TRACE_PRE_UPDATE("0", ip, idx + 2, XFS_DATA_FORK); |
1247 | xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx + 2), | 1247 | xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx + 2), |
1248 | NULLSTARTBLOCK((int)temp2)); | 1248 | nullstartblock((int)temp2)); |
1249 | XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx + 2, XFS_DATA_FORK); | 1249 | XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx + 2, XFS_DATA_FORK); |
1250 | *dnew = temp + temp2; | 1250 | *dnew = temp + temp2; |
1251 | /* DELTA: One in-core extent is split in three. */ | 1251 | /* DELTA: One in-core extent is split in three. */ |
@@ -1365,7 +1365,7 @@ xfs_bmap_add_extent_unwritten_real( | |||
1365 | */ | 1365 | */ |
1366 | if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { | 1366 | if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { |
1367 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT); | 1367 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT); |
1368 | STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(LEFT.br_startblock)); | 1368 | STATE_SET(LEFT_DELAY, isnullstartblock(LEFT.br_startblock)); |
1369 | } | 1369 | } |
1370 | STATE_SET(LEFT_CONTIG, | 1370 | STATE_SET(LEFT_CONTIG, |
1371 | STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) && | 1371 | STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) && |
@@ -1382,7 +1382,7 @@ xfs_bmap_add_extent_unwritten_real( | |||
1382 | idx < | 1382 | idx < |
1383 | ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) { | 1383 | ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) { |
1384 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT); | 1384 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT); |
1385 | STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(RIGHT.br_startblock)); | 1385 | STATE_SET(RIGHT_DELAY, isnullstartblock(RIGHT.br_startblock)); |
1386 | } | 1386 | } |
1387 | STATE_SET(RIGHT_CONTIG, | 1387 | STATE_SET(RIGHT_CONTIG, |
1388 | STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) && | 1388 | STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) && |
@@ -1889,13 +1889,13 @@ xfs_bmap_add_extent_hole_delay( | |||
1889 | ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); | 1889 | ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); |
1890 | ep = xfs_iext_get_ext(ifp, idx); | 1890 | ep = xfs_iext_get_ext(ifp, idx); |
1891 | state = 0; | 1891 | state = 0; |
1892 | ASSERT(ISNULLSTARTBLOCK(new->br_startblock)); | 1892 | ASSERT(isnullstartblock(new->br_startblock)); |
1893 | /* | 1893 | /* |
1894 | * Check and set flags if this segment has a left neighbor | 1894 | * Check and set flags if this segment has a left neighbor |
1895 | */ | 1895 | */ |
1896 | if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { | 1896 | if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { |
1897 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left); | 1897 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left); |
1898 | STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(left.br_startblock)); | 1898 | STATE_SET(LEFT_DELAY, isnullstartblock(left.br_startblock)); |
1899 | } | 1899 | } |
1900 | /* | 1900 | /* |
1901 | * Check and set flags if the current (right) segment exists. | 1901 | * Check and set flags if the current (right) segment exists. |
@@ -1905,7 +1905,7 @@ xfs_bmap_add_extent_hole_delay( | |||
1905 | idx < | 1905 | idx < |
1906 | ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) { | 1906 | ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) { |
1907 | xfs_bmbt_get_all(ep, &right); | 1907 | xfs_bmbt_get_all(ep, &right); |
1908 | STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(right.br_startblock)); | 1908 | STATE_SET(RIGHT_DELAY, isnullstartblock(right.br_startblock)); |
1909 | } | 1909 | } |
1910 | /* | 1910 | /* |
1911 | * Set contiguity flags on the left and right neighbors. | 1911 | * Set contiguity flags on the left and right neighbors. |
@@ -1938,12 +1938,12 @@ xfs_bmap_add_extent_hole_delay( | |||
1938 | XFS_BMAP_TRACE_PRE_UPDATE("LC|RC", ip, idx - 1, | 1938 | XFS_BMAP_TRACE_PRE_UPDATE("LC|RC", ip, idx - 1, |
1939 | XFS_DATA_FORK); | 1939 | XFS_DATA_FORK); |
1940 | xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp); | 1940 | xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp); |
1941 | oldlen = STARTBLOCKVAL(left.br_startblock) + | 1941 | oldlen = startblockval(left.br_startblock) + |
1942 | STARTBLOCKVAL(new->br_startblock) + | 1942 | startblockval(new->br_startblock) + |
1943 | STARTBLOCKVAL(right.br_startblock); | 1943 | startblockval(right.br_startblock); |
1944 | newlen = xfs_bmap_worst_indlen(ip, temp); | 1944 | newlen = xfs_bmap_worst_indlen(ip, temp); |
1945 | xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1), | 1945 | xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1), |
1946 | NULLSTARTBLOCK((int)newlen)); | 1946 | nullstartblock((int)newlen)); |
1947 | XFS_BMAP_TRACE_POST_UPDATE("LC|RC", ip, idx - 1, | 1947 | XFS_BMAP_TRACE_POST_UPDATE("LC|RC", ip, idx - 1, |
1948 | XFS_DATA_FORK); | 1948 | XFS_DATA_FORK); |
1949 | XFS_BMAP_TRACE_DELETE("LC|RC", ip, idx, 1, XFS_DATA_FORK); | 1949 | XFS_BMAP_TRACE_DELETE("LC|RC", ip, idx, 1, XFS_DATA_FORK); |
@@ -1964,11 +1964,11 @@ xfs_bmap_add_extent_hole_delay( | |||
1964 | XFS_BMAP_TRACE_PRE_UPDATE("LC", ip, idx - 1, | 1964 | XFS_BMAP_TRACE_PRE_UPDATE("LC", ip, idx - 1, |
1965 | XFS_DATA_FORK); | 1965 | XFS_DATA_FORK); |
1966 | xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp); | 1966 | xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp); |
1967 | oldlen = STARTBLOCKVAL(left.br_startblock) + | 1967 | oldlen = startblockval(left.br_startblock) + |
1968 | STARTBLOCKVAL(new->br_startblock); | 1968 | startblockval(new->br_startblock); |
1969 | newlen = xfs_bmap_worst_indlen(ip, temp); | 1969 | newlen = xfs_bmap_worst_indlen(ip, temp); |
1970 | xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1), | 1970 | xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1), |
1971 | NULLSTARTBLOCK((int)newlen)); | 1971 | nullstartblock((int)newlen)); |
1972 | XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1, | 1972 | XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1, |
1973 | XFS_DATA_FORK); | 1973 | XFS_DATA_FORK); |
1974 | ip->i_df.if_lastex = idx - 1; | 1974 | ip->i_df.if_lastex = idx - 1; |
@@ -1985,11 +1985,11 @@ xfs_bmap_add_extent_hole_delay( | |||
1985 | */ | 1985 | */ |
1986 | XFS_BMAP_TRACE_PRE_UPDATE("RC", ip, idx, XFS_DATA_FORK); | 1986 | XFS_BMAP_TRACE_PRE_UPDATE("RC", ip, idx, XFS_DATA_FORK); |
1987 | temp = new->br_blockcount + right.br_blockcount; | 1987 | temp = new->br_blockcount + right.br_blockcount; |
1988 | oldlen = STARTBLOCKVAL(new->br_startblock) + | 1988 | oldlen = startblockval(new->br_startblock) + |
1989 | STARTBLOCKVAL(right.br_startblock); | 1989 | startblockval(right.br_startblock); |
1990 | newlen = xfs_bmap_worst_indlen(ip, temp); | 1990 | newlen = xfs_bmap_worst_indlen(ip, temp); |
1991 | xfs_bmbt_set_allf(ep, new->br_startoff, | 1991 | xfs_bmbt_set_allf(ep, new->br_startoff, |
1992 | NULLSTARTBLOCK((int)newlen), temp, right.br_state); | 1992 | nullstartblock((int)newlen), temp, right.br_state); |
1993 | XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, XFS_DATA_FORK); | 1993 | XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, XFS_DATA_FORK); |
1994 | ip->i_df.if_lastex = idx; | 1994 | ip->i_df.if_lastex = idx; |
1995 | /* DELTA: One in-core extent grew into a hole. */ | 1995 | /* DELTA: One in-core extent grew into a hole. */ |
@@ -2085,7 +2085,7 @@ xfs_bmap_add_extent_hole_real( | |||
2085 | */ | 2085 | */ |
2086 | if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { | 2086 | if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { |
2087 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left); | 2087 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left); |
2088 | STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(left.br_startblock)); | 2088 | STATE_SET(LEFT_DELAY, isnullstartblock(left.br_startblock)); |
2089 | } | 2089 | } |
2090 | /* | 2090 | /* |
2091 | * Check and set flags if this segment has a current value. | 2091 | * Check and set flags if this segment has a current value. |
@@ -2095,7 +2095,7 @@ xfs_bmap_add_extent_hole_real( | |||
2095 | idx < | 2095 | idx < |
2096 | ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) { | 2096 | ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) { |
2097 | xfs_bmbt_get_all(ep, &right); | 2097 | xfs_bmbt_get_all(ep, &right); |
2098 | STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(right.br_startblock)); | 2098 | STATE_SET(RIGHT_DELAY, isnullstartblock(right.br_startblock)); |
2099 | } | 2099 | } |
2100 | /* | 2100 | /* |
2101 | * We're inserting a real allocation between "left" and "right". | 2101 | * We're inserting a real allocation between "left" and "right". |
@@ -2143,7 +2143,7 @@ xfs_bmap_add_extent_hole_real( | |||
2143 | XFS_IFORK_NEXT_SET(ip, whichfork, | 2143 | XFS_IFORK_NEXT_SET(ip, whichfork, |
2144 | XFS_IFORK_NEXTENTS(ip, whichfork) - 1); | 2144 | XFS_IFORK_NEXTENTS(ip, whichfork) - 1); |
2145 | if (cur == NULL) { | 2145 | if (cur == NULL) { |
2146 | rval = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); | 2146 | rval = XFS_ILOG_CORE | xfs_ilog_fext(whichfork); |
2147 | } else { | 2147 | } else { |
2148 | rval = XFS_ILOG_CORE; | 2148 | rval = XFS_ILOG_CORE; |
2149 | if ((error = xfs_bmbt_lookup_eq(cur, | 2149 | if ((error = xfs_bmbt_lookup_eq(cur, |
@@ -2185,7 +2185,7 @@ xfs_bmap_add_extent_hole_real( | |||
2185 | XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1, whichfork); | 2185 | XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1, whichfork); |
2186 | ifp->if_lastex = idx - 1; | 2186 | ifp->if_lastex = idx - 1; |
2187 | if (cur == NULL) { | 2187 | if (cur == NULL) { |
2188 | rval = XFS_ILOG_FEXT(whichfork); | 2188 | rval = xfs_ilog_fext(whichfork); |
2189 | } else { | 2189 | } else { |
2190 | rval = 0; | 2190 | rval = 0; |
2191 | if ((error = xfs_bmbt_lookup_eq(cur, | 2191 | if ((error = xfs_bmbt_lookup_eq(cur, |
@@ -2220,7 +2220,7 @@ xfs_bmap_add_extent_hole_real( | |||
2220 | XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, whichfork); | 2220 | XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, whichfork); |
2221 | ifp->if_lastex = idx; | 2221 | ifp->if_lastex = idx; |
2222 | if (cur == NULL) { | 2222 | if (cur == NULL) { |
2223 | rval = XFS_ILOG_FEXT(whichfork); | 2223 | rval = xfs_ilog_fext(whichfork); |
2224 | } else { | 2224 | } else { |
2225 | rval = 0; | 2225 | rval = 0; |
2226 | if ((error = xfs_bmbt_lookup_eq(cur, | 2226 | if ((error = xfs_bmbt_lookup_eq(cur, |
@@ -2254,7 +2254,7 @@ xfs_bmap_add_extent_hole_real( | |||
2254 | XFS_IFORK_NEXT_SET(ip, whichfork, | 2254 | XFS_IFORK_NEXT_SET(ip, whichfork, |
2255 | XFS_IFORK_NEXTENTS(ip, whichfork) + 1); | 2255 | XFS_IFORK_NEXTENTS(ip, whichfork) + 1); |
2256 | if (cur == NULL) { | 2256 | if (cur == NULL) { |
2257 | rval = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); | 2257 | rval = XFS_ILOG_CORE | xfs_ilog_fext(whichfork); |
2258 | } else { | 2258 | } else { |
2259 | rval = XFS_ILOG_CORE; | 2259 | rval = XFS_ILOG_CORE; |
2260 | if ((error = xfs_bmbt_lookup_eq(cur, | 2260 | if ((error = xfs_bmbt_lookup_eq(cur, |
@@ -2482,7 +2482,7 @@ xfs_bmap_adjacent( | |||
2482 | * try to use it's last block as our starting point. | 2482 | * try to use it's last block as our starting point. |
2483 | */ | 2483 | */ |
2484 | if (ap->eof && ap->prevp->br_startoff != NULLFILEOFF && | 2484 | if (ap->eof && ap->prevp->br_startoff != NULLFILEOFF && |
2485 | !ISNULLSTARTBLOCK(ap->prevp->br_startblock) && | 2485 | !isnullstartblock(ap->prevp->br_startblock) && |
2486 | ISVALID(ap->prevp->br_startblock + ap->prevp->br_blockcount, | 2486 | ISVALID(ap->prevp->br_startblock + ap->prevp->br_blockcount, |
2487 | ap->prevp->br_startblock)) { | 2487 | ap->prevp->br_startblock)) { |
2488 | ap->rval = ap->prevp->br_startblock + ap->prevp->br_blockcount; | 2488 | ap->rval = ap->prevp->br_startblock + ap->prevp->br_blockcount; |
@@ -2511,7 +2511,7 @@ xfs_bmap_adjacent( | |||
2511 | * start block based on it. | 2511 | * start block based on it. |
2512 | */ | 2512 | */ |
2513 | if (ap->prevp->br_startoff != NULLFILEOFF && | 2513 | if (ap->prevp->br_startoff != NULLFILEOFF && |
2514 | !ISNULLSTARTBLOCK(ap->prevp->br_startblock) && | 2514 | !isnullstartblock(ap->prevp->br_startblock) && |
2515 | (prevbno = ap->prevp->br_startblock + | 2515 | (prevbno = ap->prevp->br_startblock + |
2516 | ap->prevp->br_blockcount) && | 2516 | ap->prevp->br_blockcount) && |
2517 | ISVALID(prevbno, ap->prevp->br_startblock)) { | 2517 | ISVALID(prevbno, ap->prevp->br_startblock)) { |
@@ -2552,7 +2552,7 @@ xfs_bmap_adjacent( | |||
2552 | * If there's a following (right) block, select a requested | 2552 | * If there's a following (right) block, select a requested |
2553 | * start block based on it. | 2553 | * start block based on it. |
2554 | */ | 2554 | */ |
2555 | if (!ISNULLSTARTBLOCK(ap->gotp->br_startblock)) { | 2555 | if (!isnullstartblock(ap->gotp->br_startblock)) { |
2556 | /* | 2556 | /* |
2557 | * Calculate gap to start of next block. | 2557 | * Calculate gap to start of next block. |
2558 | */ | 2558 | */ |
@@ -3082,7 +3082,7 @@ xfs_bmap_btree_to_extents( | |||
3082 | ASSERT(ifp->if_broot == NULL); | 3082 | ASSERT(ifp->if_broot == NULL); |
3083 | ASSERT((ifp->if_flags & XFS_IFBROOT) == 0); | 3083 | ASSERT((ifp->if_flags & XFS_IFBROOT) == 0); |
3084 | XFS_IFORK_FMT_SET(ip, whichfork, XFS_DINODE_FMT_EXTENTS); | 3084 | XFS_IFORK_FMT_SET(ip, whichfork, XFS_DINODE_FMT_EXTENTS); |
3085 | *logflagsp = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); | 3085 | *logflagsp = XFS_ILOG_CORE | xfs_ilog_fext(whichfork); |
3086 | return 0; | 3086 | return 0; |
3087 | } | 3087 | } |
3088 | 3088 | ||
@@ -3136,8 +3136,8 @@ xfs_bmap_del_extent( | |||
3136 | del_endoff = del->br_startoff + del->br_blockcount; | 3136 | del_endoff = del->br_startoff + del->br_blockcount; |
3137 | got_endoff = got.br_startoff + got.br_blockcount; | 3137 | got_endoff = got.br_startoff + got.br_blockcount; |
3138 | ASSERT(got_endoff >= del_endoff); | 3138 | ASSERT(got_endoff >= del_endoff); |
3139 | delay = ISNULLSTARTBLOCK(got.br_startblock); | 3139 | delay = isnullstartblock(got.br_startblock); |
3140 | ASSERT(ISNULLSTARTBLOCK(del->br_startblock) == delay); | 3140 | ASSERT(isnullstartblock(del->br_startblock) == delay); |
3141 | flags = 0; | 3141 | flags = 0; |
3142 | qfield = 0; | 3142 | qfield = 0; |
3143 | error = 0; | 3143 | error = 0; |
@@ -3189,7 +3189,7 @@ xfs_bmap_del_extent( | |||
3189 | } | 3189 | } |
3190 | da_old = da_new = 0; | 3190 | da_old = da_new = 0; |
3191 | } else { | 3191 | } else { |
3192 | da_old = STARTBLOCKVAL(got.br_startblock); | 3192 | da_old = startblockval(got.br_startblock); |
3193 | da_new = 0; | 3193 | da_new = 0; |
3194 | nblks = 0; | 3194 | nblks = 0; |
3195 | do_fx = 0; | 3195 | do_fx = 0; |
@@ -3213,7 +3213,7 @@ xfs_bmap_del_extent( | |||
3213 | XFS_IFORK_NEXTENTS(ip, whichfork) - 1); | 3213 | XFS_IFORK_NEXTENTS(ip, whichfork) - 1); |
3214 | flags |= XFS_ILOG_CORE; | 3214 | flags |= XFS_ILOG_CORE; |
3215 | if (!cur) { | 3215 | if (!cur) { |
3216 | flags |= XFS_ILOG_FEXT(whichfork); | 3216 | flags |= xfs_ilog_fext(whichfork); |
3217 | break; | 3217 | break; |
3218 | } | 3218 | } |
3219 | if ((error = xfs_btree_delete(cur, &i))) | 3219 | if ((error = xfs_btree_delete(cur, &i))) |
@@ -3233,7 +3233,7 @@ xfs_bmap_del_extent( | |||
3233 | if (delay) { | 3233 | if (delay) { |
3234 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), | 3234 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), |
3235 | da_old); | 3235 | da_old); |
3236 | xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); | 3236 | xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); |
3237 | XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx, | 3237 | XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx, |
3238 | whichfork); | 3238 | whichfork); |
3239 | da_new = temp; | 3239 | da_new = temp; |
@@ -3242,7 +3242,7 @@ xfs_bmap_del_extent( | |||
3242 | xfs_bmbt_set_startblock(ep, del_endblock); | 3242 | xfs_bmbt_set_startblock(ep, del_endblock); |
3243 | XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx, whichfork); | 3243 | XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx, whichfork); |
3244 | if (!cur) { | 3244 | if (!cur) { |
3245 | flags |= XFS_ILOG_FEXT(whichfork); | 3245 | flags |= xfs_ilog_fext(whichfork); |
3246 | break; | 3246 | break; |
3247 | } | 3247 | } |
3248 | if ((error = xfs_bmbt_update(cur, del_endoff, del_endblock, | 3248 | if ((error = xfs_bmbt_update(cur, del_endoff, del_endblock, |
@@ -3262,7 +3262,7 @@ xfs_bmap_del_extent( | |||
3262 | if (delay) { | 3262 | if (delay) { |
3263 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), | 3263 | temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), |
3264 | da_old); | 3264 | da_old); |
3265 | xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); | 3265 | xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); |
3266 | XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx, | 3266 | XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx, |
3267 | whichfork); | 3267 | whichfork); |
3268 | da_new = temp; | 3268 | da_new = temp; |
@@ -3270,7 +3270,7 @@ xfs_bmap_del_extent( | |||
3270 | } | 3270 | } |
3271 | XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx, whichfork); | 3271 | XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx, whichfork); |
3272 | if (!cur) { | 3272 | if (!cur) { |
3273 | flags |= XFS_ILOG_FEXT(whichfork); | 3273 | flags |= xfs_ilog_fext(whichfork); |
3274 | break; | 3274 | break; |
3275 | } | 3275 | } |
3276 | if ((error = xfs_bmbt_update(cur, got.br_startoff, | 3276 | if ((error = xfs_bmbt_update(cur, got.br_startoff, |
@@ -3345,22 +3345,22 @@ xfs_bmap_del_extent( | |||
3345 | } | 3345 | } |
3346 | XFS_WANT_CORRUPTED_GOTO(i == 1, done); | 3346 | XFS_WANT_CORRUPTED_GOTO(i == 1, done); |
3347 | } else | 3347 | } else |
3348 | flags |= XFS_ILOG_FEXT(whichfork); | 3348 | flags |= xfs_ilog_fext(whichfork); |
3349 | XFS_IFORK_NEXT_SET(ip, whichfork, | 3349 | XFS_IFORK_NEXT_SET(ip, whichfork, |
3350 | XFS_IFORK_NEXTENTS(ip, whichfork) + 1); | 3350 | XFS_IFORK_NEXTENTS(ip, whichfork) + 1); |
3351 | } else { | 3351 | } else { |
3352 | ASSERT(whichfork == XFS_DATA_FORK); | 3352 | ASSERT(whichfork == XFS_DATA_FORK); |
3353 | temp = xfs_bmap_worst_indlen(ip, temp); | 3353 | temp = xfs_bmap_worst_indlen(ip, temp); |
3354 | xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); | 3354 | xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); |
3355 | temp2 = xfs_bmap_worst_indlen(ip, temp2); | 3355 | temp2 = xfs_bmap_worst_indlen(ip, temp2); |
3356 | new.br_startblock = NULLSTARTBLOCK((int)temp2); | 3356 | new.br_startblock = nullstartblock((int)temp2); |
3357 | da_new = temp + temp2; | 3357 | da_new = temp + temp2; |
3358 | while (da_new > da_old) { | 3358 | while (da_new > da_old) { |
3359 | if (temp) { | 3359 | if (temp) { |
3360 | temp--; | 3360 | temp--; |
3361 | da_new--; | 3361 | da_new--; |
3362 | xfs_bmbt_set_startblock(ep, | 3362 | xfs_bmbt_set_startblock(ep, |
3363 | NULLSTARTBLOCK((int)temp)); | 3363 | nullstartblock((int)temp)); |
3364 | } | 3364 | } |
3365 | if (da_new == da_old) | 3365 | if (da_new == da_old) |
3366 | break; | 3366 | break; |
@@ -3368,7 +3368,7 @@ xfs_bmap_del_extent( | |||
3368 | temp2--; | 3368 | temp2--; |
3369 | da_new--; | 3369 | da_new--; |
3370 | new.br_startblock = | 3370 | new.br_startblock = |
3371 | NULLSTARTBLOCK((int)temp2); | 3371 | nullstartblock((int)temp2); |
3372 | } | 3372 | } |
3373 | } | 3373 | } |
3374 | } | 3374 | } |
@@ -3545,7 +3545,7 @@ xfs_bmap_extents_to_btree( | |||
3545 | nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); | 3545 | nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); |
3546 | for (cnt = i = 0; i < nextents; i++) { | 3546 | for (cnt = i = 0; i < nextents; i++) { |
3547 | ep = xfs_iext_get_ext(ifp, i); | 3547 | ep = xfs_iext_get_ext(ifp, i); |
3548 | if (!ISNULLSTARTBLOCK(xfs_bmbt_get_startblock(ep))) { | 3548 | if (!isnullstartblock(xfs_bmbt_get_startblock(ep))) { |
3549 | arp->l0 = cpu_to_be64(ep->l0); | 3549 | arp->l0 = cpu_to_be64(ep->l0); |
3550 | arp->l1 = cpu_to_be64(ep->l1); | 3550 | arp->l1 = cpu_to_be64(ep->l1); |
3551 | arp++; cnt++; | 3551 | arp++; cnt++; |
@@ -3572,7 +3572,7 @@ xfs_bmap_extents_to_btree( | |||
3572 | xfs_btree_log_recs(cur, abp, 1, be16_to_cpu(ablock->bb_numrecs)); | 3572 | xfs_btree_log_recs(cur, abp, 1, be16_to_cpu(ablock->bb_numrecs)); |
3573 | ASSERT(*curp == NULL); | 3573 | ASSERT(*curp == NULL); |
3574 | *curp = cur; | 3574 | *curp = cur; |
3575 | *logflagsp = XFS_ILOG_CORE | XFS_ILOG_FBROOT(whichfork); | 3575 | *logflagsp = XFS_ILOG_CORE | xfs_ilog_fbroot(whichfork); |
3576 | return 0; | 3576 | return 0; |
3577 | } | 3577 | } |
3578 | 3578 | ||
@@ -3676,7 +3676,7 @@ xfs_bmap_local_to_extents( | |||
3676 | ip->i_d.di_nblocks = 1; | 3676 | ip->i_d.di_nblocks = 1; |
3677 | XFS_TRANS_MOD_DQUOT_BYINO(args.mp, tp, ip, | 3677 | XFS_TRANS_MOD_DQUOT_BYINO(args.mp, tp, ip, |
3678 | XFS_TRANS_DQ_BCOUNT, 1L); | 3678 | XFS_TRANS_DQ_BCOUNT, 1L); |
3679 | flags |= XFS_ILOG_FEXT(whichfork); | 3679 | flags |= xfs_ilog_fext(whichfork); |
3680 | } else { | 3680 | } else { |
3681 | ASSERT(XFS_IFORK_NEXTENTS(ip, whichfork) == 0); | 3681 | ASSERT(XFS_IFORK_NEXTENTS(ip, whichfork) == 0); |
3682 | xfs_bmap_forkoff_reset(ip->i_mount, ip, whichfork); | 3682 | xfs_bmap_forkoff_reset(ip->i_mount, ip, whichfork); |
@@ -4082,7 +4082,7 @@ xfs_bmap_add_attrfork( | |||
4082 | XFS_IFORK_ASIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); | 4082 | XFS_IFORK_ASIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); |
4083 | ip->i_afp->if_flags = XFS_IFEXTENTS; | 4083 | ip->i_afp->if_flags = XFS_IFEXTENTS; |
4084 | logflags = 0; | 4084 | logflags = 0; |
4085 | XFS_BMAP_INIT(&flist, &firstblock); | 4085 | xfs_bmap_init(&flist, &firstblock); |
4086 | switch (ip->i_d.di_format) { | 4086 | switch (ip->i_d.di_format) { |
4087 | case XFS_DINODE_FMT_LOCAL: | 4087 | case XFS_DINODE_FMT_LOCAL: |
4088 | error = xfs_bmap_add_attrfork_local(tp, ip, &firstblock, &flist, | 4088 | error = xfs_bmap_add_attrfork_local(tp, ip, &firstblock, &flist, |
@@ -4162,7 +4162,7 @@ xfs_bmap_add_free( | |||
4162 | ASSERT(bno != NULLFSBLOCK); | 4162 | ASSERT(bno != NULLFSBLOCK); |
4163 | ASSERT(len > 0); | 4163 | ASSERT(len > 0); |
4164 | ASSERT(len <= MAXEXTLEN); | 4164 | ASSERT(len <= MAXEXTLEN); |
4165 | ASSERT(!ISNULLSTARTBLOCK(bno)); | 4165 | ASSERT(!isnullstartblock(bno)); |
4166 | agno = XFS_FSB_TO_AGNO(mp, bno); | 4166 | agno = XFS_FSB_TO_AGNO(mp, bno); |
4167 | agbno = XFS_FSB_TO_AGBNO(mp, bno); | 4167 | agbno = XFS_FSB_TO_AGBNO(mp, bno); |
4168 | ASSERT(agno < mp->m_sb.sb_agcount); | 4168 | ASSERT(agno < mp->m_sb.sb_agcount); |
@@ -4909,7 +4909,7 @@ xfs_bmapi( | |||
4909 | got.br_startoff = end; | 4909 | got.br_startoff = end; |
4910 | inhole = eof || got.br_startoff > bno; | 4910 | inhole = eof || got.br_startoff > bno; |
4911 | wasdelay = wr && !inhole && !(flags & XFS_BMAPI_DELAY) && | 4911 | wasdelay = wr && !inhole && !(flags & XFS_BMAPI_DELAY) && |
4912 | ISNULLSTARTBLOCK(got.br_startblock); | 4912 | isnullstartblock(got.br_startblock); |
4913 | /* | 4913 | /* |
4914 | * First, deal with the hole before the allocated space | 4914 | * First, deal with the hole before the allocated space |
4915 | * that we found, if any. | 4915 | * that we found, if any. |
@@ -5028,7 +5028,7 @@ xfs_bmapi( | |||
5028 | } | 5028 | } |
5029 | 5029 | ||
5030 | ip->i_delayed_blks += alen; | 5030 | ip->i_delayed_blks += alen; |
5031 | abno = NULLSTARTBLOCK(indlen); | 5031 | abno = nullstartblock(indlen); |
5032 | } else { | 5032 | } else { |
5033 | /* | 5033 | /* |
5034 | * If first time, allocate and fill in | 5034 | * If first time, allocate and fill in |
@@ -5144,8 +5144,8 @@ xfs_bmapi( | |||
5144 | aoff + alen); | 5144 | aoff + alen); |
5145 | #ifdef DEBUG | 5145 | #ifdef DEBUG |
5146 | if (flags & XFS_BMAPI_DELAY) { | 5146 | if (flags & XFS_BMAPI_DELAY) { |
5147 | ASSERT(ISNULLSTARTBLOCK(got.br_startblock)); | 5147 | ASSERT(isnullstartblock(got.br_startblock)); |
5148 | ASSERT(STARTBLOCKVAL(got.br_startblock) > 0); | 5148 | ASSERT(startblockval(got.br_startblock) > 0); |
5149 | } | 5149 | } |
5150 | ASSERT(got.br_state == XFS_EXT_NORM || | 5150 | ASSERT(got.br_state == XFS_EXT_NORM || |
5151 | got.br_state == XFS_EXT_UNWRITTEN); | 5151 | got.br_state == XFS_EXT_UNWRITTEN); |
@@ -5179,7 +5179,7 @@ xfs_bmapi( | |||
5179 | ASSERT((bno >= obno) || (n == 0)); | 5179 | ASSERT((bno >= obno) || (n == 0)); |
5180 | ASSERT(bno < end); | 5180 | ASSERT(bno < end); |
5181 | mval->br_startoff = bno; | 5181 | mval->br_startoff = bno; |
5182 | if (ISNULLSTARTBLOCK(got.br_startblock)) { | 5182 | if (isnullstartblock(got.br_startblock)) { |
5183 | ASSERT(!wr || (flags & XFS_BMAPI_DELAY)); | 5183 | ASSERT(!wr || (flags & XFS_BMAPI_DELAY)); |
5184 | mval->br_startblock = DELAYSTARTBLOCK; | 5184 | mval->br_startblock = DELAYSTARTBLOCK; |
5185 | } else | 5185 | } else |
@@ -5201,7 +5201,7 @@ xfs_bmapi( | |||
5201 | ASSERT(mval->br_blockcount <= len); | 5201 | ASSERT(mval->br_blockcount <= len); |
5202 | } else { | 5202 | } else { |
5203 | *mval = got; | 5203 | *mval = got; |
5204 | if (ISNULLSTARTBLOCK(mval->br_startblock)) { | 5204 | if (isnullstartblock(mval->br_startblock)) { |
5205 | ASSERT(!wr || (flags & XFS_BMAPI_DELAY)); | 5205 | ASSERT(!wr || (flags & XFS_BMAPI_DELAY)); |
5206 | mval->br_startblock = DELAYSTARTBLOCK; | 5206 | mval->br_startblock = DELAYSTARTBLOCK; |
5207 | } | 5207 | } |
@@ -5329,12 +5329,12 @@ error0: | |||
5329 | * Log everything. Do this after conversion, there's no point in | 5329 | * Log everything. Do this after conversion, there's no point in |
5330 | * logging the extent records if we've converted to btree format. | 5330 | * logging the extent records if we've converted to btree format. |
5331 | */ | 5331 | */ |
5332 | if ((logflags & XFS_ILOG_FEXT(whichfork)) && | 5332 | if ((logflags & xfs_ilog_fext(whichfork)) && |
5333 | XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS) | 5333 | XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS) |
5334 | logflags &= ~XFS_ILOG_FEXT(whichfork); | 5334 | logflags &= ~xfs_ilog_fext(whichfork); |
5335 | else if ((logflags & XFS_ILOG_FBROOT(whichfork)) && | 5335 | else if ((logflags & xfs_ilog_fbroot(whichfork)) && |
5336 | XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) | 5336 | XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) |
5337 | logflags &= ~XFS_ILOG_FBROOT(whichfork); | 5337 | logflags &= ~xfs_ilog_fbroot(whichfork); |
5338 | /* | 5338 | /* |
5339 | * Log whatever the flags say, even if error. Otherwise we might miss | 5339 | * Log whatever the flags say, even if error. Otherwise we might miss |
5340 | * detecting a case where the data is changed, there's an error, | 5340 | * detecting a case where the data is changed, there's an error, |
@@ -5411,7 +5411,7 @@ xfs_bmapi_single( | |||
5411 | *fsb = NULLFSBLOCK; | 5411 | *fsb = NULLFSBLOCK; |
5412 | return 0; | 5412 | return 0; |
5413 | } | 5413 | } |
5414 | ASSERT(!ISNULLSTARTBLOCK(got.br_startblock)); | 5414 | ASSERT(!isnullstartblock(got.br_startblock)); |
5415 | ASSERT(bno < got.br_startoff + got.br_blockcount); | 5415 | ASSERT(bno < got.br_startoff + got.br_blockcount); |
5416 | *fsb = got.br_startblock + (bno - got.br_startoff); | 5416 | *fsb = got.br_startblock + (bno - got.br_startoff); |
5417 | ifp->if_lastex = lastx; | 5417 | ifp->if_lastex = lastx; |
@@ -5543,7 +5543,7 @@ xfs_bunmapi( | |||
5543 | */ | 5543 | */ |
5544 | ASSERT(ep != NULL); | 5544 | ASSERT(ep != NULL); |
5545 | del = got; | 5545 | del = got; |
5546 | wasdel = ISNULLSTARTBLOCK(del.br_startblock); | 5546 | wasdel = isnullstartblock(del.br_startblock); |
5547 | if (got.br_startoff < start) { | 5547 | if (got.br_startoff < start) { |
5548 | del.br_startoff = start; | 5548 | del.br_startoff = start; |
5549 | del.br_blockcount -= start - got.br_startoff; | 5549 | del.br_blockcount -= start - got.br_startoff; |
@@ -5638,7 +5638,7 @@ xfs_bunmapi( | |||
5638 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, | 5638 | xfs_bmbt_get_all(xfs_iext_get_ext(ifp, |
5639 | lastx - 1), &prev); | 5639 | lastx - 1), &prev); |
5640 | ASSERT(prev.br_state == XFS_EXT_NORM); | 5640 | ASSERT(prev.br_state == XFS_EXT_NORM); |
5641 | ASSERT(!ISNULLSTARTBLOCK(prev.br_startblock)); | 5641 | ASSERT(!isnullstartblock(prev.br_startblock)); |
5642 | ASSERT(del.br_startblock == | 5642 | ASSERT(del.br_startblock == |
5643 | prev.br_startblock + prev.br_blockcount); | 5643 | prev.br_startblock + prev.br_blockcount); |
5644 | if (prev.br_startoff < start) { | 5644 | if (prev.br_startoff < start) { |
@@ -5666,7 +5666,7 @@ xfs_bunmapi( | |||
5666 | } | 5666 | } |
5667 | } | 5667 | } |
5668 | if (wasdel) { | 5668 | if (wasdel) { |
5669 | ASSERT(STARTBLOCKVAL(del.br_startblock) > 0); | 5669 | ASSERT(startblockval(del.br_startblock) > 0); |
5670 | /* Update realtime/data freespace, unreserve quota */ | 5670 | /* Update realtime/data freespace, unreserve quota */ |
5671 | if (isrt) { | 5671 | if (isrt) { |
5672 | xfs_filblks_t rtexts; | 5672 | xfs_filblks_t rtexts; |
@@ -5782,12 +5782,12 @@ error0: | |||
5782 | * Log everything. Do this after conversion, there's no point in | 5782 | * Log everything. Do this after conversion, there's no point in |
5783 | * logging the extent records if we've converted to btree format. | 5783 | * logging the extent records if we've converted to btree format. |
5784 | */ | 5784 | */ |
5785 | if ((logflags & XFS_ILOG_FEXT(whichfork)) && | 5785 | if ((logflags & xfs_ilog_fext(whichfork)) && |
5786 | XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS) | 5786 | XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS) |
5787 | logflags &= ~XFS_ILOG_FEXT(whichfork); | 5787 | logflags &= ~xfs_ilog_fext(whichfork); |
5788 | else if ((logflags & XFS_ILOG_FBROOT(whichfork)) && | 5788 | else if ((logflags & xfs_ilog_fbroot(whichfork)) && |
5789 | XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) | 5789 | XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) |
5790 | logflags &= ~XFS_ILOG_FBROOT(whichfork); | 5790 | logflags &= ~xfs_ilog_fbroot(whichfork); |
5791 | /* | 5791 | /* |
5792 | * Log inode even in the error case, if the transaction | 5792 | * Log inode even in the error case, if the transaction |
5793 | * is dirty we'll need to shut down the filesystem. | 5793 | * is dirty we'll need to shut down the filesystem. |
@@ -5838,7 +5838,7 @@ xfs_getbmapx_fix_eof_hole( | |||
5838 | if (startblock == DELAYSTARTBLOCK) | 5838 | if (startblock == DELAYSTARTBLOCK) |
5839 | out->bmv_block = -2; | 5839 | out->bmv_block = -2; |
5840 | else | 5840 | else |
5841 | out->bmv_block = XFS_FSB_TO_DB(ip, startblock); | 5841 | out->bmv_block = xfs_fsb_to_db(ip, startblock); |
5842 | fileblock = XFS_BB_TO_FSB(ip->i_mount, out->bmv_offset); | 5842 | fileblock = XFS_BB_TO_FSB(ip->i_mount, out->bmv_offset); |
5843 | ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); | 5843 | ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); |
5844 | if (xfs_iext_bno_to_ext(ifp, fileblock, &lastx) && | 5844 | if (xfs_iext_bno_to_ext(ifp, fileblock, &lastx) && |
@@ -5979,7 +5979,7 @@ xfs_getbmap( | |||
5979 | if (nex > XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1) | 5979 | if (nex > XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1) |
5980 | nex = XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1; | 5980 | nex = XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1; |
5981 | 5981 | ||
5982 | bmapi_flags = XFS_BMAPI_AFLAG(whichfork) | | 5982 | bmapi_flags = xfs_bmapi_aflag(whichfork) | |
5983 | ((iflags & BMV_IF_PREALLOC) ? 0 : XFS_BMAPI_IGSTATE); | 5983 | ((iflags & BMV_IF_PREALLOC) ? 0 : XFS_BMAPI_IGSTATE); |
5984 | 5984 | ||
5985 | /* | 5985 | /* |
@@ -6098,7 +6098,7 @@ xfs_bmap_isaeof( | |||
6098 | */ | 6098 | */ |
6099 | *aeof = (off >= s.br_startoff && | 6099 | *aeof = (off >= s.br_startoff && |
6100 | off < s.br_startoff + s.br_blockcount && | 6100 | off < s.br_startoff + s.br_blockcount && |
6101 | ISNULLSTARTBLOCK(s.br_startblock)) || | 6101 | isnullstartblock(s.br_startblock)) || |
6102 | off >= s.br_startoff + s.br_blockcount; | 6102 | off >= s.br_startoff + s.br_blockcount; |
6103 | return 0; | 6103 | return 0; |
6104 | } | 6104 | } |
diff --git a/fs/xfs/xfs_bmap.h b/fs/xfs/xfs_bmap.h index 284571c05ed0..be2979d88d32 100644 --- a/fs/xfs/xfs_bmap.h +++ b/fs/xfs/xfs_bmap.h | |||
@@ -95,7 +95,6 @@ typedef struct xfs_bmap_free | |||
95 | /* need write cache flushing and no */ | 95 | /* need write cache flushing and no */ |
96 | /* additional allocation alignments */ | 96 | /* additional allocation alignments */ |
97 | 97 | ||
98 | #define XFS_BMAPI_AFLAG(w) xfs_bmapi_aflag(w) | ||
99 | static inline int xfs_bmapi_aflag(int w) | 98 | static inline int xfs_bmapi_aflag(int w) |
100 | { | 99 | { |
101 | return (w == XFS_ATTR_FORK ? XFS_BMAPI_ATTRFORK : 0); | 100 | return (w == XFS_ATTR_FORK ? XFS_BMAPI_ATTRFORK : 0); |
@@ -107,7 +106,6 @@ static inline int xfs_bmapi_aflag(int w) | |||
107 | #define DELAYSTARTBLOCK ((xfs_fsblock_t)-1LL) | 106 | #define DELAYSTARTBLOCK ((xfs_fsblock_t)-1LL) |
108 | #define HOLESTARTBLOCK ((xfs_fsblock_t)-2LL) | 107 | #define HOLESTARTBLOCK ((xfs_fsblock_t)-2LL) |
109 | 108 | ||
110 | #define XFS_BMAP_INIT(flp,fbp) xfs_bmap_init(flp,fbp) | ||
111 | static inline void xfs_bmap_init(xfs_bmap_free_t *flp, xfs_fsblock_t *fbp) | 109 | static inline void xfs_bmap_init(xfs_bmap_free_t *flp, xfs_fsblock_t *fbp) |
112 | { | 110 | { |
113 | ((flp)->xbf_first = NULL, (flp)->xbf_count = 0, \ | 111 | ((flp)->xbf_first = NULL, (flp)->xbf_count = 0, \ |
diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index ba6b08c2fb02..0760d352586f 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c | |||
@@ -121,7 +121,7 @@ __xfs_bmbt_get_all( | |||
121 | 121 | ||
122 | b = (((xfs_dfsbno_t)l0 & xfs_mask64lo(9)) << 43) | | 122 | b = (((xfs_dfsbno_t)l0 & xfs_mask64lo(9)) << 43) | |
123 | (((xfs_dfsbno_t)l1) >> 21); | 123 | (((xfs_dfsbno_t)l1) >> 21); |
124 | ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); | 124 | ASSERT((b >> 32) == 0 || isnulldstartblock(b)); |
125 | s->br_startblock = (xfs_fsblock_t)b; | 125 | s->br_startblock = (xfs_fsblock_t)b; |
126 | } | 126 | } |
127 | #else /* !DEBUG */ | 127 | #else /* !DEBUG */ |
@@ -172,7 +172,7 @@ xfs_bmbt_get_startblock( | |||
172 | 172 | ||
173 | b = (((xfs_dfsbno_t)r->l0 & xfs_mask64lo(9)) << 43) | | 173 | b = (((xfs_dfsbno_t)r->l0 & xfs_mask64lo(9)) << 43) | |
174 | (((xfs_dfsbno_t)r->l1) >> 21); | 174 | (((xfs_dfsbno_t)r->l1) >> 21); |
175 | ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); | 175 | ASSERT((b >> 32) == 0 || isnulldstartblock(b)); |
176 | return (xfs_fsblock_t)b; | 176 | return (xfs_fsblock_t)b; |
177 | #else /* !DEBUG */ | 177 | #else /* !DEBUG */ |
178 | return (xfs_fsblock_t)(((xfs_dfsbno_t)r->l1) >> 21); | 178 | return (xfs_fsblock_t)(((xfs_dfsbno_t)r->l1) >> 21); |
@@ -261,7 +261,7 @@ xfs_bmbt_set_allf( | |||
261 | ((xfs_bmbt_rec_base_t)blockcount & | 261 | ((xfs_bmbt_rec_base_t)blockcount & |
262 | (xfs_bmbt_rec_base_t)xfs_mask64lo(21)); | 262 | (xfs_bmbt_rec_base_t)xfs_mask64lo(21)); |
263 | #else /* !XFS_BIG_BLKNOS */ | 263 | #else /* !XFS_BIG_BLKNOS */ |
264 | if (ISNULLSTARTBLOCK(startblock)) { | 264 | if (isnullstartblock(startblock)) { |
265 | r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | | 265 | r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | |
266 | ((xfs_bmbt_rec_base_t)startoff << 9) | | 266 | ((xfs_bmbt_rec_base_t)startoff << 9) | |
267 | (xfs_bmbt_rec_base_t)xfs_mask64lo(9); | 267 | (xfs_bmbt_rec_base_t)xfs_mask64lo(9); |
@@ -321,7 +321,7 @@ xfs_bmbt_disk_set_allf( | |||
321 | ((xfs_bmbt_rec_base_t)blockcount & | 321 | ((xfs_bmbt_rec_base_t)blockcount & |
322 | (xfs_bmbt_rec_base_t)xfs_mask64lo(21))); | 322 | (xfs_bmbt_rec_base_t)xfs_mask64lo(21))); |
323 | #else /* !XFS_BIG_BLKNOS */ | 323 | #else /* !XFS_BIG_BLKNOS */ |
324 | if (ISNULLSTARTBLOCK(startblock)) { | 324 | if (isnullstartblock(startblock)) { |
325 | r->l0 = cpu_to_be64( | 325 | r->l0 = cpu_to_be64( |
326 | ((xfs_bmbt_rec_base_t)extent_flag << 63) | | 326 | ((xfs_bmbt_rec_base_t)extent_flag << 63) | |
327 | ((xfs_bmbt_rec_base_t)startoff << 9) | | 327 | ((xfs_bmbt_rec_base_t)startoff << 9) | |
@@ -382,7 +382,7 @@ xfs_bmbt_set_startblock( | |||
382 | r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)) | | 382 | r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)) | |
383 | (xfs_bmbt_rec_base_t)(v << 21); | 383 | (xfs_bmbt_rec_base_t)(v << 21); |
384 | #else /* !XFS_BIG_BLKNOS */ | 384 | #else /* !XFS_BIG_BLKNOS */ |
385 | if (ISNULLSTARTBLOCK(v)) { | 385 | if (isnullstartblock(v)) { |
386 | r->l0 |= (xfs_bmbt_rec_base_t)xfs_mask64lo(9); | 386 | r->l0 |= (xfs_bmbt_rec_base_t)xfs_mask64lo(9); |
387 | r->l1 = (xfs_bmbt_rec_base_t)xfs_mask64hi(11) | | 387 | r->l1 = (xfs_bmbt_rec_base_t)xfs_mask64hi(11) | |
388 | ((xfs_bmbt_rec_base_t)v << 21) | | 388 | ((xfs_bmbt_rec_base_t)v << 21) | |
diff --git a/fs/xfs/xfs_bmap_btree.h b/fs/xfs/xfs_bmap_btree.h index a4555abb6622..0e8df007615e 100644 --- a/fs/xfs/xfs_bmap_btree.h +++ b/fs/xfs/xfs_bmap_btree.h | |||
@@ -76,26 +76,22 @@ typedef struct xfs_bmbt_rec_host { | |||
76 | #define DSTARTBLOCKMASK \ | 76 | #define DSTARTBLOCKMASK \ |
77 | (((((xfs_dfsbno_t)1) << DSTARTBLOCKMASKBITS) - 1) << STARTBLOCKVALBITS) | 77 | (((((xfs_dfsbno_t)1) << DSTARTBLOCKMASKBITS) - 1) << STARTBLOCKVALBITS) |
78 | 78 | ||
79 | #define ISNULLSTARTBLOCK(x) isnullstartblock(x) | ||
80 | static inline int isnullstartblock(xfs_fsblock_t x) | 79 | static inline int isnullstartblock(xfs_fsblock_t x) |
81 | { | 80 | { |
82 | return ((x) & STARTBLOCKMASK) == STARTBLOCKMASK; | 81 | return ((x) & STARTBLOCKMASK) == STARTBLOCKMASK; |
83 | } | 82 | } |
84 | 83 | ||
85 | #define ISNULLDSTARTBLOCK(x) isnulldstartblock(x) | ||
86 | static inline int isnulldstartblock(xfs_dfsbno_t x) | 84 | static inline int isnulldstartblock(xfs_dfsbno_t x) |
87 | { | 85 | { |
88 | return ((x) & DSTARTBLOCKMASK) == DSTARTBLOCKMASK; | 86 | return ((x) & DSTARTBLOCKMASK) == DSTARTBLOCKMASK; |
89 | } | 87 | } |
90 | 88 | ||
91 | #define NULLSTARTBLOCK(k) nullstartblock(k) | ||
92 | static inline xfs_fsblock_t nullstartblock(int k) | 89 | static inline xfs_fsblock_t nullstartblock(int k) |
93 | { | 90 | { |
94 | ASSERT(k < (1 << STARTBLOCKVALBITS)); | 91 | ASSERT(k < (1 << STARTBLOCKVALBITS)); |
95 | return STARTBLOCKMASK | (k); | 92 | return STARTBLOCKMASK | (k); |
96 | } | 93 | } |
97 | 94 | ||
98 | #define STARTBLOCKVAL(x) startblockval(x) | ||
99 | static inline xfs_filblks_t startblockval(xfs_fsblock_t x) | 95 | static inline xfs_filblks_t startblockval(xfs_fsblock_t x) |
100 | { | 96 | { |
101 | return (xfs_filblks_t)((x) & ~STARTBLOCKMASK); | 97 | return (xfs_filblks_t)((x) & ~STARTBLOCKMASK); |
diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 2c3ef20f8842..e73c332eb23f 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c | |||
@@ -843,7 +843,7 @@ xfs_btree_ptr_is_null( | |||
843 | union xfs_btree_ptr *ptr) | 843 | union xfs_btree_ptr *ptr) |
844 | { | 844 | { |
845 | if (cur->bc_flags & XFS_BTREE_LONG_PTRS) | 845 | if (cur->bc_flags & XFS_BTREE_LONG_PTRS) |
846 | return be64_to_cpu(ptr->l) == NULLFSBLOCK; | 846 | return be64_to_cpu(ptr->l) == NULLDFSBNO; |
847 | else | 847 | else |
848 | return be32_to_cpu(ptr->s) == NULLAGBLOCK; | 848 | return be32_to_cpu(ptr->s) == NULLAGBLOCK; |
849 | } | 849 | } |
@@ -854,7 +854,7 @@ xfs_btree_set_ptr_null( | |||
854 | union xfs_btree_ptr *ptr) | 854 | union xfs_btree_ptr *ptr) |
855 | { | 855 | { |
856 | if (cur->bc_flags & XFS_BTREE_LONG_PTRS) | 856 | if (cur->bc_flags & XFS_BTREE_LONG_PTRS) |
857 | ptr->l = cpu_to_be64(NULLFSBLOCK); | 857 | ptr->l = cpu_to_be64(NULLDFSBNO); |
858 | else | 858 | else |
859 | ptr->s = cpu_to_be32(NULLAGBLOCK); | 859 | ptr->s = cpu_to_be32(NULLAGBLOCK); |
860 | } | 860 | } |
@@ -918,8 +918,8 @@ xfs_btree_init_block( | |||
918 | new->bb_numrecs = cpu_to_be16(numrecs); | 918 | new->bb_numrecs = cpu_to_be16(numrecs); |
919 | 919 | ||
920 | if (cur->bc_flags & XFS_BTREE_LONG_PTRS) { | 920 | if (cur->bc_flags & XFS_BTREE_LONG_PTRS) { |
921 | new->bb_u.l.bb_leftsib = cpu_to_be64(NULLFSBLOCK); | 921 | new->bb_u.l.bb_leftsib = cpu_to_be64(NULLDFSBNO); |
922 | new->bb_u.l.bb_rightsib = cpu_to_be64(NULLFSBLOCK); | 922 | new->bb_u.l.bb_rightsib = cpu_to_be64(NULLDFSBNO); |
923 | } else { | 923 | } else { |
924 | new->bb_u.s.bb_leftsib = cpu_to_be32(NULLAGBLOCK); | 924 | new->bb_u.s.bb_leftsib = cpu_to_be32(NULLAGBLOCK); |
925 | new->bb_u.s.bb_rightsib = cpu_to_be32(NULLAGBLOCK); | 925 | new->bb_u.s.bb_rightsib = cpu_to_be32(NULLAGBLOCK); |
@@ -960,7 +960,7 @@ xfs_btree_buf_to_ptr( | |||
960 | ptr->l = cpu_to_be64(XFS_DADDR_TO_FSB(cur->bc_mp, | 960 | ptr->l = cpu_to_be64(XFS_DADDR_TO_FSB(cur->bc_mp, |
961 | XFS_BUF_ADDR(bp))); | 961 | XFS_BUF_ADDR(bp))); |
962 | else { | 962 | else { |
963 | ptr->s = cpu_to_be32(XFS_DADDR_TO_AGBNO(cur->bc_mp, | 963 | ptr->s = cpu_to_be32(xfs_daddr_to_agbno(cur->bc_mp, |
964 | XFS_BUF_ADDR(bp))); | 964 | XFS_BUF_ADDR(bp))); |
965 | } | 965 | } |
966 | } | 966 | } |
@@ -971,7 +971,7 @@ xfs_btree_ptr_to_daddr( | |||
971 | union xfs_btree_ptr *ptr) | 971 | union xfs_btree_ptr *ptr) |
972 | { | 972 | { |
973 | if (cur->bc_flags & XFS_BTREE_LONG_PTRS) { | 973 | if (cur->bc_flags & XFS_BTREE_LONG_PTRS) { |
974 | ASSERT(be64_to_cpu(ptr->l) != NULLFSBLOCK); | 974 | ASSERT(be64_to_cpu(ptr->l) != NULLDFSBNO); |
975 | 975 | ||
976 | return XFS_FSB_TO_DADDR(cur->bc_mp, be64_to_cpu(ptr->l)); | 976 | return XFS_FSB_TO_DADDR(cur->bc_mp, be64_to_cpu(ptr->l)); |
977 | } else { | 977 | } else { |
@@ -2454,7 +2454,7 @@ xfs_btree_new_iroot( | |||
2454 | xfs_btree_log_ptrs(cur, cbp, 1, be16_to_cpu(cblock->bb_numrecs)); | 2454 | xfs_btree_log_ptrs(cur, cbp, 1, be16_to_cpu(cblock->bb_numrecs)); |
2455 | 2455 | ||
2456 | *logflags |= | 2456 | *logflags |= |
2457 | XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork); | 2457 | XFS_ILOG_CORE | xfs_ilog_fbroot(cur->bc_private.b.whichfork); |
2458 | *stat = 1; | 2458 | *stat = 1; |
2459 | XFS_BTREE_TRACE_CURSOR(cur, XBT_EXIT); | 2459 | XFS_BTREE_TRACE_CURSOR(cur, XBT_EXIT); |
2460 | return 0; | 2460 | return 0; |
@@ -3048,7 +3048,7 @@ xfs_btree_kill_iroot( | |||
3048 | cur->bc_bufs[level - 1] = NULL; | 3048 | cur->bc_bufs[level - 1] = NULL; |
3049 | be16_add_cpu(&block->bb_level, -1); | 3049 | be16_add_cpu(&block->bb_level, -1); |
3050 | xfs_trans_log_inode(cur->bc_tp, ip, | 3050 | xfs_trans_log_inode(cur->bc_tp, ip, |
3051 | XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork)); | 3051 | XFS_ILOG_CORE | xfs_ilog_fbroot(cur->bc_private.b.whichfork)); |
3052 | cur->bc_nlevels--; | 3052 | cur->bc_nlevels--; |
3053 | out0: | 3053 | out0: |
3054 | XFS_BTREE_TRACE_CURSOR(cur, XBT_EXIT); | 3054 | XFS_BTREE_TRACE_CURSOR(cur, XBT_EXIT); |
diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index a11a8390bf6c..c45f74ff1a5b 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c | |||
@@ -1597,7 +1597,7 @@ xfs_da_grow_inode(xfs_da_args_t *args, xfs_dablk_t *new_blkno) | |||
1597 | nmap = 1; | 1597 | nmap = 1; |
1598 | ASSERT(args->firstblock != NULL); | 1598 | ASSERT(args->firstblock != NULL); |
1599 | if ((error = xfs_bmapi(tp, dp, bno, count, | 1599 | if ((error = xfs_bmapi(tp, dp, bno, count, |
1600 | XFS_BMAPI_AFLAG(w)|XFS_BMAPI_WRITE|XFS_BMAPI_METADATA| | 1600 | xfs_bmapi_aflag(w)|XFS_BMAPI_WRITE|XFS_BMAPI_METADATA| |
1601 | XFS_BMAPI_CONTIG, | 1601 | XFS_BMAPI_CONTIG, |
1602 | args->firstblock, args->total, &map, &nmap, | 1602 | args->firstblock, args->total, &map, &nmap, |
1603 | args->flist, NULL))) { | 1603 | args->flist, NULL))) { |
@@ -1618,7 +1618,7 @@ xfs_da_grow_inode(xfs_da_args_t *args, xfs_dablk_t *new_blkno) | |||
1618 | nmap = MIN(XFS_BMAP_MAX_NMAP, count); | 1618 | nmap = MIN(XFS_BMAP_MAX_NMAP, count); |
1619 | c = (int)(bno + count - b); | 1619 | c = (int)(bno + count - b); |
1620 | if ((error = xfs_bmapi(tp, dp, b, c, | 1620 | if ((error = xfs_bmapi(tp, dp, b, c, |
1621 | XFS_BMAPI_AFLAG(w)|XFS_BMAPI_WRITE| | 1621 | xfs_bmapi_aflag(w)|XFS_BMAPI_WRITE| |
1622 | XFS_BMAPI_METADATA, | 1622 | XFS_BMAPI_METADATA, |
1623 | args->firstblock, args->total, | 1623 | args->firstblock, args->total, |
1624 | &mapp[mapi], &nmap, args->flist, | 1624 | &mapp[mapi], &nmap, args->flist, |
@@ -1882,7 +1882,7 @@ xfs_da_shrink_inode(xfs_da_args_t *args, xfs_dablk_t dead_blkno, | |||
1882 | * the last block to the place we want to kill. | 1882 | * the last block to the place we want to kill. |
1883 | */ | 1883 | */ |
1884 | if ((error = xfs_bunmapi(tp, dp, dead_blkno, count, | 1884 | if ((error = xfs_bunmapi(tp, dp, dead_blkno, count, |
1885 | XFS_BMAPI_AFLAG(w)|XFS_BMAPI_METADATA, | 1885 | xfs_bmapi_aflag(w)|XFS_BMAPI_METADATA, |
1886 | 0, args->firstblock, args->flist, NULL, | 1886 | 0, args->firstblock, args->flist, NULL, |
1887 | &done)) == ENOSPC) { | 1887 | &done)) == ENOSPC) { |
1888 | if (w != XFS_DATA_FORK) | 1888 | if (w != XFS_DATA_FORK) |
@@ -1987,7 +1987,7 @@ xfs_da_do_buf( | |||
1987 | if ((error = xfs_bmapi(trans, dp, (xfs_fileoff_t)bno, | 1987 | if ((error = xfs_bmapi(trans, dp, (xfs_fileoff_t)bno, |
1988 | nfsb, | 1988 | nfsb, |
1989 | XFS_BMAPI_METADATA | | 1989 | XFS_BMAPI_METADATA | |
1990 | XFS_BMAPI_AFLAG(whichfork), | 1990 | xfs_bmapi_aflag(whichfork), |
1991 | NULL, 0, mapp, &nmap, NULL, NULL))) | 1991 | NULL, 0, mapp, &nmap, NULL, NULL))) |
1992 | goto exit0; | 1992 | goto exit0; |
1993 | } | 1993 | } |
diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index e6ebbaeb4dc6..ab016e5ae7be 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c | |||
@@ -357,7 +357,7 @@ xfs_ialloc_ag_alloc( | |||
357 | int ioffset = i << args.mp->m_sb.sb_inodelog; | 357 | int ioffset = i << args.mp->m_sb.sb_inodelog; |
358 | uint isize = sizeof(struct xfs_dinode); | 358 | uint isize = sizeof(struct xfs_dinode); |
359 | 359 | ||
360 | free = XFS_MAKE_IPTR(args.mp, fbuf, i); | 360 | free = xfs_make_iptr(args.mp, fbuf, i); |
361 | free->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); | 361 | free->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); |
362 | free->di_version = version; | 362 | free->di_version = version; |
363 | free->di_gen = cpu_to_be32(gen); | 363 | free->di_gen = cpu_to_be32(gen); |
@@ -937,7 +937,7 @@ nextag: | |||
937 | } | 937 | } |
938 | } | 938 | } |
939 | } | 939 | } |
940 | offset = XFS_IALLOC_FIND_FREE(&rec.ir_free); | 940 | offset = xfs_ialloc_find_free(&rec.ir_free); |
941 | ASSERT(offset >= 0); | 941 | ASSERT(offset >= 0); |
942 | ASSERT(offset < XFS_INODES_PER_CHUNK); | 942 | ASSERT(offset < XFS_INODES_PER_CHUNK); |
943 | ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) % | 943 | ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) % |
@@ -1279,7 +1279,7 @@ xfs_imap( | |||
1279 | offset = XFS_INO_TO_OFFSET(mp, ino); | 1279 | offset = XFS_INO_TO_OFFSET(mp, ino); |
1280 | ASSERT(offset < mp->m_sb.sb_inopblock); | 1280 | ASSERT(offset < mp->m_sb.sb_inopblock); |
1281 | 1281 | ||
1282 | cluster_agbno = XFS_DADDR_TO_AGBNO(mp, imap->im_blkno); | 1282 | cluster_agbno = xfs_daddr_to_agbno(mp, imap->im_blkno); |
1283 | offset += (agbno - cluster_agbno) * mp->m_sb.sb_inopblock; | 1283 | offset += (agbno - cluster_agbno) * mp->m_sb.sb_inopblock; |
1284 | 1284 | ||
1285 | imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster); | 1285 | imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster); |
diff --git a/fs/xfs/xfs_ialloc.h b/fs/xfs/xfs_ialloc.h index 50f558a4e0a8..aeee8278f92c 100644 --- a/fs/xfs/xfs_ialloc.h +++ b/fs/xfs/xfs_ialloc.h | |||
@@ -39,7 +39,6 @@ struct xfs_trans; | |||
39 | /* | 39 | /* |
40 | * Make an inode pointer out of the buffer/offset. | 40 | * Make an inode pointer out of the buffer/offset. |
41 | */ | 41 | */ |
42 | #define XFS_MAKE_IPTR(mp,b,o) xfs_make_iptr(mp,b,o) | ||
43 | static inline struct xfs_dinode * | 42 | static inline struct xfs_dinode * |
44 | xfs_make_iptr(struct xfs_mount *mp, struct xfs_buf *b, int o) | 43 | xfs_make_iptr(struct xfs_mount *mp, struct xfs_buf *b, int o) |
45 | { | 44 | { |
@@ -50,7 +49,6 @@ xfs_make_iptr(struct xfs_mount *mp, struct xfs_buf *b, int o) | |||
50 | /* | 49 | /* |
51 | * Find a free (set) bit in the inode bitmask. | 50 | * Find a free (set) bit in the inode bitmask. |
52 | */ | 51 | */ |
53 | #define XFS_IALLOC_FIND_FREE(fp) xfs_ialloc_find_free(fp) | ||
54 | static inline int xfs_ialloc_find_free(xfs_inofree_t *fp) | 52 | static inline int xfs_ialloc_find_free(xfs_inofree_t *fp) |
55 | { | 53 | { |
56 | return xfs_lowbit64(*fp); | 54 | return xfs_lowbit64(*fp); |
diff --git a/fs/xfs/xfs_ialloc_btree.h b/fs/xfs/xfs_ialloc_btree.h index 37e5dd01a577..5580e255ff06 100644 --- a/fs/xfs/xfs_ialloc_btree.h +++ b/fs/xfs/xfs_ialloc_btree.h | |||
@@ -36,7 +36,6 @@ typedef __uint64_t xfs_inofree_t; | |||
36 | #define XFS_INODES_PER_CHUNK_LOG (XFS_NBBYLOG + 3) | 36 | #define XFS_INODES_PER_CHUNK_LOG (XFS_NBBYLOG + 3) |
37 | #define XFS_INOBT_ALL_FREE ((xfs_inofree_t)-1) | 37 | #define XFS_INOBT_ALL_FREE ((xfs_inofree_t)-1) |
38 | 38 | ||
39 | #define XFS_INOBT_MASKN(i,n) xfs_inobt_maskn(i,n) | ||
40 | static inline xfs_inofree_t xfs_inobt_maskn(int i, int n) | 39 | static inline xfs_inofree_t xfs_inobt_maskn(int i, int n) |
41 | { | 40 | { |
42 | return (((n) >= XFS_INODES_PER_CHUNK ? \ | 41 | return (((n) >= XFS_INODES_PER_CHUNK ? \ |
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 5a5e035e5d38..e7ae08d1df48 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -424,6 +424,19 @@ xfs_iformat( | |||
424 | case XFS_DINODE_FMT_LOCAL: | 424 | case XFS_DINODE_FMT_LOCAL: |
425 | atp = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); | 425 | atp = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); |
426 | size = be16_to_cpu(atp->hdr.totsize); | 426 | size = be16_to_cpu(atp->hdr.totsize); |
427 | |||
428 | if (unlikely(size < sizeof(struct xfs_attr_sf_hdr))) { | ||
429 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | ||
430 | "corrupt inode %Lu " | ||
431 | "(bad attr fork size %Ld).", | ||
432 | (unsigned long long) ip->i_ino, | ||
433 | (long long) size); | ||
434 | XFS_CORRUPTION_ERROR("xfs_iformat(8)", | ||
435 | XFS_ERRLEVEL_LOW, | ||
436 | ip->i_mount, dip); | ||
437 | return XFS_ERROR(EFSCORRUPTED); | ||
438 | } | ||
439 | |||
427 | error = xfs_iformat_local(ip, dip, XFS_ATTR_FORK, size); | 440 | error = xfs_iformat_local(ip, dip, XFS_ATTR_FORK, size); |
428 | break; | 441 | break; |
429 | case XFS_DINODE_FMT_EXTENTS: | 442 | case XFS_DINODE_FMT_EXTENTS: |
@@ -1601,10 +1614,10 @@ xfs_itruncate_finish( | |||
1601 | * in this file with garbage in them once recovery | 1614 | * in this file with garbage in them once recovery |
1602 | * runs. | 1615 | * runs. |
1603 | */ | 1616 | */ |
1604 | XFS_BMAP_INIT(&free_list, &first_block); | 1617 | xfs_bmap_init(&free_list, &first_block); |
1605 | error = xfs_bunmapi(ntp, ip, | 1618 | error = xfs_bunmapi(ntp, ip, |
1606 | first_unmap_block, unmap_len, | 1619 | first_unmap_block, unmap_len, |
1607 | XFS_BMAPI_AFLAG(fork) | | 1620 | xfs_bmapi_aflag(fork) | |
1608 | (sync ? 0 : XFS_BMAPI_ASYNC), | 1621 | (sync ? 0 : XFS_BMAPI_ASYNC), |
1609 | XFS_ITRUNC_MAX_EXTENTS, | 1622 | XFS_ITRUNC_MAX_EXTENTS, |
1610 | &first_block, &free_list, | 1623 | &first_block, &free_list, |
@@ -2557,7 +2570,7 @@ xfs_iextents_copy( | |||
2557 | for (i = 0; i < nrecs; i++) { | 2570 | for (i = 0; i < nrecs; i++) { |
2558 | xfs_bmbt_rec_host_t *ep = xfs_iext_get_ext(ifp, i); | 2571 | xfs_bmbt_rec_host_t *ep = xfs_iext_get_ext(ifp, i); |
2559 | start_block = xfs_bmbt_get_startblock(ep); | 2572 | start_block = xfs_bmbt_get_startblock(ep); |
2560 | if (ISNULLSTARTBLOCK(start_block)) { | 2573 | if (isnullstartblock(start_block)) { |
2561 | /* | 2574 | /* |
2562 | * It's a delayed allocation extent, so skip it. | 2575 | * It's a delayed allocation extent, so skip it. |
2563 | */ | 2576 | */ |
diff --git a/fs/xfs/xfs_inode_item.h b/fs/xfs/xfs_inode_item.h index 1ff04cc323ad..9957d0602d54 100644 --- a/fs/xfs/xfs_inode_item.h +++ b/fs/xfs/xfs_inode_item.h | |||
@@ -111,20 +111,16 @@ typedef struct xfs_inode_log_format_64 { | |||
111 | 111 | ||
112 | #define XFS_ILI_IOLOCKED_ANY (XFS_ILI_IOLOCKED_EXCL | XFS_ILI_IOLOCKED_SHARED) | 112 | #define XFS_ILI_IOLOCKED_ANY (XFS_ILI_IOLOCKED_EXCL | XFS_ILI_IOLOCKED_SHARED) |
113 | 113 | ||
114 | |||
115 | #define XFS_ILOG_FBROOT(w) xfs_ilog_fbroot(w) | ||
116 | static inline int xfs_ilog_fbroot(int w) | 114 | static inline int xfs_ilog_fbroot(int w) |
117 | { | 115 | { |
118 | return (w == XFS_DATA_FORK ? XFS_ILOG_DBROOT : XFS_ILOG_ABROOT); | 116 | return (w == XFS_DATA_FORK ? XFS_ILOG_DBROOT : XFS_ILOG_ABROOT); |
119 | } | 117 | } |
120 | 118 | ||
121 | #define XFS_ILOG_FEXT(w) xfs_ilog_fext(w) | ||
122 | static inline int xfs_ilog_fext(int w) | 119 | static inline int xfs_ilog_fext(int w) |
123 | { | 120 | { |
124 | return (w == XFS_DATA_FORK ? XFS_ILOG_DEXT : XFS_ILOG_AEXT); | 121 | return (w == XFS_DATA_FORK ? XFS_ILOG_DEXT : XFS_ILOG_AEXT); |
125 | } | 122 | } |
126 | 123 | ||
127 | #define XFS_ILOG_FDATA(w) xfs_ilog_fdata(w) | ||
128 | static inline int xfs_ilog_fdata(int w) | 124 | static inline int xfs_ilog_fdata(int w) |
129 | { | 125 | { |
130 | return (w == XFS_DATA_FORK ? XFS_ILOG_DDATA : XFS_ILOG_ADATA); | 126 | return (w == XFS_DATA_FORK ? XFS_ILOG_DDATA : XFS_ILOG_ADATA); |
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 911062cf73a6..08ce72316bfe 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c | |||
@@ -155,7 +155,7 @@ xfs_imap_to_bmap( | |||
155 | iomapp->iomap_bn = IOMAP_DADDR_NULL; | 155 | iomapp->iomap_bn = IOMAP_DADDR_NULL; |
156 | iomapp->iomap_flags |= IOMAP_DELAY; | 156 | iomapp->iomap_flags |= IOMAP_DELAY; |
157 | } else { | 157 | } else { |
158 | iomapp->iomap_bn = XFS_FSB_TO_DB(ip, start_block); | 158 | iomapp->iomap_bn = xfs_fsb_to_db(ip, start_block); |
159 | if (ISUNWRITTEN(imap)) | 159 | if (ISUNWRITTEN(imap)) |
160 | iomapp->iomap_flags |= IOMAP_UNWRITTEN; | 160 | iomapp->iomap_flags |= IOMAP_UNWRITTEN; |
161 | } | 161 | } |
@@ -261,7 +261,7 @@ xfs_iomap( | |||
261 | xfs_iunlock(ip, lockmode); | 261 | xfs_iunlock(ip, lockmode); |
262 | lockmode = 0; | 262 | lockmode = 0; |
263 | 263 | ||
264 | if (nimaps && !ISNULLSTARTBLOCK(imap.br_startblock)) { | 264 | if (nimaps && !isnullstartblock(imap.br_startblock)) { |
265 | xfs_iomap_map_trace(XFS_IOMAP_WRITE_MAP, ip, | 265 | xfs_iomap_map_trace(XFS_IOMAP_WRITE_MAP, ip, |
266 | offset, count, iomapp, &imap, flags); | 266 | offset, count, iomapp, &imap, flags); |
267 | break; | 267 | break; |
@@ -491,7 +491,7 @@ xfs_iomap_write_direct( | |||
491 | /* | 491 | /* |
492 | * Issue the xfs_bmapi() call to allocate the blocks | 492 | * Issue the xfs_bmapi() call to allocate the blocks |
493 | */ | 493 | */ |
494 | XFS_BMAP_INIT(&free_list, &firstfsb); | 494 | xfs_bmap_init(&free_list, &firstfsb); |
495 | nimaps = 1; | 495 | nimaps = 1; |
496 | error = xfs_bmapi(tp, ip, offset_fsb, count_fsb, bmapi_flag, | 496 | error = xfs_bmapi(tp, ip, offset_fsb, count_fsb, bmapi_flag, |
497 | &firstfsb, 0, &imap, &nimaps, &free_list, NULL); | 497 | &firstfsb, 0, &imap, &nimaps, &free_list, NULL); |
@@ -751,7 +751,7 @@ xfs_iomap_write_allocate( | |||
751 | xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); | 751 | xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); |
752 | xfs_trans_ihold(tp, ip); | 752 | xfs_trans_ihold(tp, ip); |
753 | 753 | ||
754 | XFS_BMAP_INIT(&free_list, &first_block); | 754 | xfs_bmap_init(&free_list, &first_block); |
755 | 755 | ||
756 | /* | 756 | /* |
757 | * it is possible that the extents have changed since | 757 | * it is possible that the extents have changed since |
@@ -911,7 +911,7 @@ xfs_iomap_write_unwritten( | |||
911 | /* | 911 | /* |
912 | * Modify the unwritten extent state of the buffer. | 912 | * Modify the unwritten extent state of the buffer. |
913 | */ | 913 | */ |
914 | XFS_BMAP_INIT(&free_list, &firstfsb); | 914 | xfs_bmap_init(&free_list, &firstfsb); |
915 | nimaps = 1; | 915 | nimaps = 1; |
916 | error = xfs_bmapi(tp, ip, offset_fsb, count_fsb, | 916 | error = xfs_bmapi(tp, ip, offset_fsb, count_fsb, |
917 | XFS_BMAPI_WRITE|XFS_BMAPI_CONVERT, &firstfsb, | 917 | XFS_BMAPI_WRITE|XFS_BMAPI_CONVERT, &firstfsb, |
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index e19d0a8d5618..cf98a805ec90 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
@@ -453,7 +453,7 @@ xfs_bulkstat( | |||
453 | (chunkidx = agino - gino + 1) < | 453 | (chunkidx = agino - gino + 1) < |
454 | XFS_INODES_PER_CHUNK && | 454 | XFS_INODES_PER_CHUNK && |
455 | /* there are some left allocated */ | 455 | /* there are some left allocated */ |
456 | XFS_INOBT_MASKN(chunkidx, | 456 | xfs_inobt_maskn(chunkidx, |
457 | XFS_INODES_PER_CHUNK - chunkidx) & ~gfree) { | 457 | XFS_INODES_PER_CHUNK - chunkidx) & ~gfree) { |
458 | /* | 458 | /* |
459 | * Grab the chunk record. Mark all the | 459 | * Grab the chunk record. Mark all the |
@@ -464,7 +464,7 @@ xfs_bulkstat( | |||
464 | if (XFS_INOBT_MASK(i) & ~gfree) | 464 | if (XFS_INOBT_MASK(i) & ~gfree) |
465 | gcnt++; | 465 | gcnt++; |
466 | } | 466 | } |
467 | gfree |= XFS_INOBT_MASKN(0, chunkidx); | 467 | gfree |= xfs_inobt_maskn(0, chunkidx); |
468 | irbp->ir_startino = gino; | 468 | irbp->ir_startino = gino; |
469 | irbp->ir_freecount = gcnt; | 469 | irbp->ir_freecount = gcnt; |
470 | irbp->ir_free = gfree; | 470 | irbp->ir_free = gfree; |
@@ -535,7 +535,7 @@ xfs_bulkstat( | |||
535 | chunkidx < XFS_INODES_PER_CHUNK; | 535 | chunkidx < XFS_INODES_PER_CHUNK; |
536 | chunkidx += nicluster, | 536 | chunkidx += nicluster, |
537 | agbno += nbcluster) { | 537 | agbno += nbcluster) { |
538 | if (XFS_INOBT_MASKN(chunkidx, | 538 | if (xfs_inobt_maskn(chunkidx, |
539 | nicluster) & ~gfree) | 539 | nicluster) & ~gfree) |
540 | xfs_btree_reada_bufs(mp, agno, | 540 | xfs_btree_reada_bufs(mp, agno, |
541 | agbno, nbcluster); | 541 | agbno, nbcluster); |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 3c97c6463a4e..35300250e86d 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
@@ -45,7 +45,6 @@ | |||
45 | #include "xfs_fsops.h" | 45 | #include "xfs_fsops.h" |
46 | #include "xfs_utils.h" | 46 | #include "xfs_utils.h" |
47 | 47 | ||
48 | STATIC int xfs_mount_log_sb(xfs_mount_t *, __int64_t); | ||
49 | STATIC int xfs_uuid_mount(xfs_mount_t *); | 48 | STATIC int xfs_uuid_mount(xfs_mount_t *); |
50 | STATIC void xfs_unmountfs_wait(xfs_mount_t *); | 49 | STATIC void xfs_unmountfs_wait(xfs_mount_t *); |
51 | 50 | ||
@@ -682,7 +681,7 @@ xfs_initialize_perag_data(xfs_mount_t *mp, xfs_agnumber_t agcount) | |||
682 | * Update alignment values based on mount options and sb values | 681 | * Update alignment values based on mount options and sb values |
683 | */ | 682 | */ |
684 | STATIC int | 683 | STATIC int |
685 | xfs_update_alignment(xfs_mount_t *mp, __uint64_t *update_flags) | 684 | xfs_update_alignment(xfs_mount_t *mp) |
686 | { | 685 | { |
687 | xfs_sb_t *sbp = &(mp->m_sb); | 686 | xfs_sb_t *sbp = &(mp->m_sb); |
688 | 687 | ||
@@ -736,11 +735,11 @@ xfs_update_alignment(xfs_mount_t *mp, __uint64_t *update_flags) | |||
736 | if (xfs_sb_version_hasdalign(sbp)) { | 735 | if (xfs_sb_version_hasdalign(sbp)) { |
737 | if (sbp->sb_unit != mp->m_dalign) { | 736 | if (sbp->sb_unit != mp->m_dalign) { |
738 | sbp->sb_unit = mp->m_dalign; | 737 | sbp->sb_unit = mp->m_dalign; |
739 | *update_flags |= XFS_SB_UNIT; | 738 | mp->m_update_flags |= XFS_SB_UNIT; |
740 | } | 739 | } |
741 | if (sbp->sb_width != mp->m_swidth) { | 740 | if (sbp->sb_width != mp->m_swidth) { |
742 | sbp->sb_width = mp->m_swidth; | 741 | sbp->sb_width = mp->m_swidth; |
743 | *update_flags |= XFS_SB_WIDTH; | 742 | mp->m_update_flags |= XFS_SB_WIDTH; |
744 | } | 743 | } |
745 | } | 744 | } |
746 | } else if ((mp->m_flags & XFS_MOUNT_NOALIGN) != XFS_MOUNT_NOALIGN && | 745 | } else if ((mp->m_flags & XFS_MOUNT_NOALIGN) != XFS_MOUNT_NOALIGN && |
@@ -905,7 +904,6 @@ xfs_mountfs( | |||
905 | xfs_sb_t *sbp = &(mp->m_sb); | 904 | xfs_sb_t *sbp = &(mp->m_sb); |
906 | xfs_inode_t *rip; | 905 | xfs_inode_t *rip; |
907 | __uint64_t resblks; | 906 | __uint64_t resblks; |
908 | __int64_t update_flags = 0LL; | ||
909 | uint quotamount, quotaflags; | 907 | uint quotamount, quotaflags; |
910 | int uuid_mounted = 0; | 908 | int uuid_mounted = 0; |
911 | int error = 0; | 909 | int error = 0; |
@@ -933,7 +931,7 @@ xfs_mountfs( | |||
933 | "XFS: correcting sb_features alignment problem"); | 931 | "XFS: correcting sb_features alignment problem"); |
934 | sbp->sb_features2 |= sbp->sb_bad_features2; | 932 | sbp->sb_features2 |= sbp->sb_bad_features2; |
935 | sbp->sb_bad_features2 = sbp->sb_features2; | 933 | sbp->sb_bad_features2 = sbp->sb_features2; |
936 | update_flags |= XFS_SB_FEATURES2 | XFS_SB_BAD_FEATURES2; | 934 | mp->m_update_flags |= XFS_SB_FEATURES2 | XFS_SB_BAD_FEATURES2; |
937 | 935 | ||
938 | /* | 936 | /* |
939 | * Re-check for ATTR2 in case it was found in bad_features2 | 937 | * Re-check for ATTR2 in case it was found in bad_features2 |
@@ -947,11 +945,11 @@ xfs_mountfs( | |||
947 | if (xfs_sb_version_hasattr2(&mp->m_sb) && | 945 | if (xfs_sb_version_hasattr2(&mp->m_sb) && |
948 | (mp->m_flags & XFS_MOUNT_NOATTR2)) { | 946 | (mp->m_flags & XFS_MOUNT_NOATTR2)) { |
949 | xfs_sb_version_removeattr2(&mp->m_sb); | 947 | xfs_sb_version_removeattr2(&mp->m_sb); |
950 | update_flags |= XFS_SB_FEATURES2; | 948 | mp->m_update_flags |= XFS_SB_FEATURES2; |
951 | 949 | ||
952 | /* update sb_versionnum for the clearing of the morebits */ | 950 | /* update sb_versionnum for the clearing of the morebits */ |
953 | if (!sbp->sb_features2) | 951 | if (!sbp->sb_features2) |
954 | update_flags |= XFS_SB_VERSIONNUM; | 952 | mp->m_update_flags |= XFS_SB_VERSIONNUM; |
955 | } | 953 | } |
956 | 954 | ||
957 | /* | 955 | /* |
@@ -960,7 +958,7 @@ xfs_mountfs( | |||
960 | * allocator alignment is within an ag, therefore ag has | 958 | * allocator alignment is within an ag, therefore ag has |
961 | * to be aligned at stripe boundary. | 959 | * to be aligned at stripe boundary. |
962 | */ | 960 | */ |
963 | error = xfs_update_alignment(mp, &update_flags); | 961 | error = xfs_update_alignment(mp); |
964 | if (error) | 962 | if (error) |
965 | goto error1; | 963 | goto error1; |
966 | 964 | ||
@@ -1137,10 +1135,12 @@ xfs_mountfs( | |||
1137 | } | 1135 | } |
1138 | 1136 | ||
1139 | /* | 1137 | /* |
1140 | * If fs is not mounted readonly, then update the superblock changes. | 1138 | * If this is a read-only mount defer the superblock updates until |
1139 | * the next remount into writeable mode. Otherwise we would never | ||
1140 | * perform the update e.g. for the root filesystem. | ||
1141 | */ | 1141 | */ |
1142 | if (update_flags && !(mp->m_flags & XFS_MOUNT_RDONLY)) { | 1142 | if (mp->m_update_flags && !(mp->m_flags & XFS_MOUNT_RDONLY)) { |
1143 | error = xfs_mount_log_sb(mp, update_flags); | 1143 | error = xfs_mount_log_sb(mp, mp->m_update_flags); |
1144 | if (error) { | 1144 | if (error) { |
1145 | cmn_err(CE_WARN, "XFS: failed to write sb changes"); | 1145 | cmn_err(CE_WARN, "XFS: failed to write sb changes"); |
1146 | goto error4; | 1146 | goto error4; |
@@ -1820,7 +1820,7 @@ xfs_uuid_mount( | |||
1820 | * be altered by the mount options, as well as any potential sb_features2 | 1820 | * be altered by the mount options, as well as any potential sb_features2 |
1821 | * fixup. Only the first superblock is updated. | 1821 | * fixup. Only the first superblock is updated. |
1822 | */ | 1822 | */ |
1823 | STATIC int | 1823 | int |
1824 | xfs_mount_log_sb( | 1824 | xfs_mount_log_sb( |
1825 | xfs_mount_t *mp, | 1825 | xfs_mount_t *mp, |
1826 | __int64_t fields) | 1826 | __int64_t fields) |
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index c1e028467327..f5e9937f9bdb 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h | |||
@@ -44,9 +44,9 @@ typedef struct xfs_trans_reservations { | |||
44 | 44 | ||
45 | #ifndef __KERNEL__ | 45 | #ifndef __KERNEL__ |
46 | 46 | ||
47 | #define XFS_DADDR_TO_AGNO(mp,d) \ | 47 | #define xfs_daddr_to_agno(mp,d) \ |
48 | ((xfs_agnumber_t)(XFS_BB_TO_FSBT(mp, d) / (mp)->m_sb.sb_agblocks)) | 48 | ((xfs_agnumber_t)(XFS_BB_TO_FSBT(mp, d) / (mp)->m_sb.sb_agblocks)) |
49 | #define XFS_DADDR_TO_AGBNO(mp,d) \ | 49 | #define xfs_daddr_to_agbno(mp,d) \ |
50 | ((xfs_agblock_t)(XFS_BB_TO_FSBT(mp, d) % (mp)->m_sb.sb_agblocks)) | 50 | ((xfs_agblock_t)(XFS_BB_TO_FSBT(mp, d) % (mp)->m_sb.sb_agblocks)) |
51 | 51 | ||
52 | #else /* __KERNEL__ */ | 52 | #else /* __KERNEL__ */ |
@@ -327,6 +327,8 @@ typedef struct xfs_mount { | |||
327 | spinlock_t m_sync_lock; /* work item list lock */ | 327 | spinlock_t m_sync_lock; /* work item list lock */ |
328 | int m_sync_seq; /* sync thread generation no. */ | 328 | int m_sync_seq; /* sync thread generation no. */ |
329 | wait_queue_head_t m_wait_single_sync_task; | 329 | wait_queue_head_t m_wait_single_sync_task; |
330 | __int64_t m_update_flags; /* sb flags we need to update | ||
331 | on the next remount,rw */ | ||
330 | } xfs_mount_t; | 332 | } xfs_mount_t; |
331 | 333 | ||
332 | /* | 334 | /* |
@@ -439,7 +441,6 @@ void xfs_do_force_shutdown(struct xfs_mount *mp, int flags, char *fname, | |||
439 | */ | 441 | */ |
440 | #define XFS_MFSI_QUIET 0x40 /* Be silent if mount errors found */ | 442 | #define XFS_MFSI_QUIET 0x40 /* Be silent if mount errors found */ |
441 | 443 | ||
442 | #define XFS_DADDR_TO_AGNO(mp,d) xfs_daddr_to_agno(mp,d) | ||
443 | static inline xfs_agnumber_t | 444 | static inline xfs_agnumber_t |
444 | xfs_daddr_to_agno(struct xfs_mount *mp, xfs_daddr_t d) | 445 | xfs_daddr_to_agno(struct xfs_mount *mp, xfs_daddr_t d) |
445 | { | 446 | { |
@@ -448,7 +449,6 @@ xfs_daddr_to_agno(struct xfs_mount *mp, xfs_daddr_t d) | |||
448 | return (xfs_agnumber_t) ld; | 449 | return (xfs_agnumber_t) ld; |
449 | } | 450 | } |
450 | 451 | ||
451 | #define XFS_DADDR_TO_AGBNO(mp,d) xfs_daddr_to_agbno(mp,d) | ||
452 | static inline xfs_agblock_t | 452 | static inline xfs_agblock_t |
453 | xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d) | 453 | xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d) |
454 | { | 454 | { |
@@ -514,6 +514,7 @@ extern int xfs_mod_incore_sb_unlocked(xfs_mount_t *, xfs_sb_field_t, | |||
514 | int64_t, int); | 514 | int64_t, int); |
515 | extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, | 515 | extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, |
516 | uint, int); | 516 | uint, int); |
517 | extern int xfs_mount_log_sb(xfs_mount_t *, __int64_t); | ||
517 | extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); | 518 | extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); |
518 | extern int xfs_readsb(xfs_mount_t *, int); | 519 | extern int xfs_readsb(xfs_mount_t *, int); |
519 | extern void xfs_freesb(xfs_mount_t *); | 520 | extern void xfs_freesb(xfs_mount_t *); |
diff --git a/fs/xfs/xfs_rename.c b/fs/xfs/xfs_rename.c index 86471bb40fd4..58f85e9cd11d 100644 --- a/fs/xfs/xfs_rename.c +++ b/fs/xfs/xfs_rename.c | |||
@@ -147,7 +147,7 @@ xfs_rename( | |||
147 | xfs_sort_for_rename(src_dp, target_dp, src_ip, target_ip, | 147 | xfs_sort_for_rename(src_dp, target_dp, src_ip, target_ip, |
148 | inodes, &num_inodes); | 148 | inodes, &num_inodes); |
149 | 149 | ||
150 | XFS_BMAP_INIT(&free_list, &first_block); | 150 | xfs_bmap_init(&free_list, &first_block); |
151 | tp = xfs_trans_alloc(mp, XFS_TRANS_RENAME); | 151 | tp = xfs_trans_alloc(mp, XFS_TRANS_RENAME); |
152 | cancel_flags = XFS_TRANS_RELEASE_LOG_RES; | 152 | cancel_flags = XFS_TRANS_RELEASE_LOG_RES; |
153 | spaceres = XFS_RENAME_SPACE_RES(mp, target_name->len); | 153 | spaceres = XFS_RENAME_SPACE_RES(mp, target_name->len); |
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c index edf12c7b834c..c5bb86f3ec05 100644 --- a/fs/xfs/xfs_rtalloc.c +++ b/fs/xfs/xfs_rtalloc.c | |||
@@ -120,7 +120,7 @@ xfs_growfs_rt_alloc( | |||
120 | if ((error = xfs_trans_iget(mp, tp, ino, 0, | 120 | if ((error = xfs_trans_iget(mp, tp, ino, 0, |
121 | XFS_ILOCK_EXCL, &ip))) | 121 | XFS_ILOCK_EXCL, &ip))) |
122 | goto error_cancel; | 122 | goto error_cancel; |
123 | XFS_BMAP_INIT(&flist, &firstblock); | 123 | xfs_bmap_init(&flist, &firstblock); |
124 | /* | 124 | /* |
125 | * Allocate blocks to the bitmap file. | 125 | * Allocate blocks to the bitmap file. |
126 | */ | 126 | */ |
diff --git a/fs/xfs/xfs_rw.h b/fs/xfs/xfs_rw.h index f87db5344ce6..f76c003ec55d 100644 --- a/fs/xfs/xfs_rw.h +++ b/fs/xfs/xfs_rw.h | |||
@@ -28,7 +28,6 @@ struct xfs_mount; | |||
28 | * file is a real time file or not, because the bmap code | 28 | * file is a real time file or not, because the bmap code |
29 | * does. | 29 | * does. |
30 | */ | 30 | */ |
31 | #define XFS_FSB_TO_DB(ip,fsb) xfs_fsb_to_db(ip,fsb) | ||
32 | static inline xfs_daddr_t | 31 | static inline xfs_daddr_t |
33 | xfs_fsb_to_db(struct xfs_inode *ip, xfs_fsblock_t fsb) | 32 | xfs_fsb_to_db(struct xfs_inode *ip, xfs_fsblock_t fsb) |
34 | { | 33 | { |
diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h index 1ed71916e4c9..1b017c657494 100644 --- a/fs/xfs/xfs_sb.h +++ b/fs/xfs/xfs_sb.h | |||
@@ -505,7 +505,7 @@ static inline void xfs_sb_version_removeattr2(xfs_sb_t *sbp) | |||
505 | 505 | ||
506 | #define XFS_HDR_BLOCK(mp,d) ((xfs_agblock_t)XFS_BB_TO_FSBT(mp,d)) | 506 | #define XFS_HDR_BLOCK(mp,d) ((xfs_agblock_t)XFS_BB_TO_FSBT(mp,d)) |
507 | #define XFS_DADDR_TO_FSB(mp,d) XFS_AGB_TO_FSB(mp, \ | 507 | #define XFS_DADDR_TO_FSB(mp,d) XFS_AGB_TO_FSB(mp, \ |
508 | XFS_DADDR_TO_AGNO(mp,d), XFS_DADDR_TO_AGBNO(mp,d)) | 508 | xfs_daddr_to_agno(mp,d), xfs_daddr_to_agbno(mp,d)) |
509 | #define XFS_FSB_TO_DADDR(mp,fsbno) XFS_AGB_TO_DADDR(mp, \ | 509 | #define XFS_FSB_TO_DADDR(mp,fsbno) XFS_AGB_TO_DADDR(mp, \ |
510 | XFS_FSB_TO_AGNO(mp,fsbno), XFS_FSB_TO_AGBNO(mp,fsbno)) | 510 | XFS_FSB_TO_AGNO(mp,fsbno), XFS_FSB_TO_AGBNO(mp,fsbno)) |
511 | 511 | ||
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index f07bf8768c3a..0e55c5d7db5f 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
@@ -862,7 +862,7 @@ xfs_inactive_symlink_rmt( | |||
862 | * Find the block(s) so we can inval and unmap them. | 862 | * Find the block(s) so we can inval and unmap them. |
863 | */ | 863 | */ |
864 | done = 0; | 864 | done = 0; |
865 | XFS_BMAP_INIT(&free_list, &first_block); | 865 | xfs_bmap_init(&free_list, &first_block); |
866 | nmaps = ARRAY_SIZE(mval); | 866 | nmaps = ARRAY_SIZE(mval); |
867 | if ((error = xfs_bmapi(tp, ip, 0, XFS_B_TO_FSB(mp, size), | 867 | if ((error = xfs_bmapi(tp, ip, 0, XFS_B_TO_FSB(mp, size), |
868 | XFS_BMAPI_METADATA, &first_block, 0, mval, &nmaps, | 868 | XFS_BMAPI_METADATA, &first_block, 0, mval, &nmaps, |
@@ -1288,7 +1288,7 @@ xfs_inactive( | |||
1288 | /* | 1288 | /* |
1289 | * Free the inode. | 1289 | * Free the inode. |
1290 | */ | 1290 | */ |
1291 | XFS_BMAP_INIT(&free_list, &first_block); | 1291 | xfs_bmap_init(&free_list, &first_block); |
1292 | error = xfs_ifree(tp, ip, &free_list); | 1292 | error = xfs_ifree(tp, ip, &free_list); |
1293 | if (error) { | 1293 | if (error) { |
1294 | /* | 1294 | /* |
@@ -1461,7 +1461,7 @@ xfs_create( | |||
1461 | xfs_ilock(dp, XFS_ILOCK_EXCL | XFS_ILOCK_PARENT); | 1461 | xfs_ilock(dp, XFS_ILOCK_EXCL | XFS_ILOCK_PARENT); |
1462 | unlock_dp_on_error = B_TRUE; | 1462 | unlock_dp_on_error = B_TRUE; |
1463 | 1463 | ||
1464 | XFS_BMAP_INIT(&free_list, &first_block); | 1464 | xfs_bmap_init(&free_list, &first_block); |
1465 | 1465 | ||
1466 | ASSERT(ip == NULL); | 1466 | ASSERT(ip == NULL); |
1467 | 1467 | ||
@@ -1879,7 +1879,7 @@ xfs_remove( | |||
1879 | } | 1879 | } |
1880 | } | 1880 | } |
1881 | 1881 | ||
1882 | XFS_BMAP_INIT(&free_list, &first_block); | 1882 | xfs_bmap_init(&free_list, &first_block); |
1883 | error = xfs_dir_removename(tp, dp, name, ip->i_ino, | 1883 | error = xfs_dir_removename(tp, dp, name, ip->i_ino, |
1884 | &first_block, &free_list, resblks); | 1884 | &first_block, &free_list, resblks); |
1885 | if (error) { | 1885 | if (error) { |
@@ -2059,7 +2059,7 @@ xfs_link( | |||
2059 | if (error) | 2059 | if (error) |
2060 | goto error_return; | 2060 | goto error_return; |
2061 | 2061 | ||
2062 | XFS_BMAP_INIT(&free_list, &first_block); | 2062 | xfs_bmap_init(&free_list, &first_block); |
2063 | 2063 | ||
2064 | error = xfs_dir_createname(tp, tdp, target_name, sip->i_ino, | 2064 | error = xfs_dir_createname(tp, tdp, target_name, sip->i_ino, |
2065 | &first_block, &free_list, resblks); | 2065 | &first_block, &free_list, resblks); |
@@ -2231,7 +2231,7 @@ xfs_mkdir( | |||
2231 | xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL); | 2231 | xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL); |
2232 | unlock_dp_on_error = B_FALSE; | 2232 | unlock_dp_on_error = B_FALSE; |
2233 | 2233 | ||
2234 | XFS_BMAP_INIT(&free_list, &first_block); | 2234 | xfs_bmap_init(&free_list, &first_block); |
2235 | 2235 | ||
2236 | error = xfs_dir_createname(tp, dp, dir_name, cdp->i_ino, | 2236 | error = xfs_dir_createname(tp, dp, dir_name, cdp->i_ino, |
2237 | &first_block, &free_list, resblks ? | 2237 | &first_block, &free_list, resblks ? |
@@ -2438,7 +2438,7 @@ xfs_symlink( | |||
2438 | * Initialize the bmap freelist prior to calling either | 2438 | * Initialize the bmap freelist prior to calling either |
2439 | * bmapi or the directory create code. | 2439 | * bmapi or the directory create code. |
2440 | */ | 2440 | */ |
2441 | XFS_BMAP_INIT(&free_list, &first_block); | 2441 | xfs_bmap_init(&free_list, &first_block); |
2442 | 2442 | ||
2443 | /* | 2443 | /* |
2444 | * Allocate an inode for the symlink. | 2444 | * Allocate an inode for the symlink. |
@@ -2860,7 +2860,7 @@ retry: | |||
2860 | /* | 2860 | /* |
2861 | * Issue the xfs_bmapi() call to allocate the blocks | 2861 | * Issue the xfs_bmapi() call to allocate the blocks |
2862 | */ | 2862 | */ |
2863 | XFS_BMAP_INIT(&free_list, &firstfsb); | 2863 | xfs_bmap_init(&free_list, &firstfsb); |
2864 | error = xfs_bmapi(tp, ip, startoffset_fsb, | 2864 | error = xfs_bmapi(tp, ip, startoffset_fsb, |
2865 | allocatesize_fsb, bmapi_flag, | 2865 | allocatesize_fsb, bmapi_flag, |
2866 | &firstfsb, 0, imapp, &nimaps, | 2866 | &firstfsb, 0, imapp, &nimaps, |
@@ -2980,7 +2980,7 @@ xfs_zero_remaining_bytes( | |||
2980 | XFS_BUF_UNDONE(bp); | 2980 | XFS_BUF_UNDONE(bp); |
2981 | XFS_BUF_UNWRITE(bp); | 2981 | XFS_BUF_UNWRITE(bp); |
2982 | XFS_BUF_READ(bp); | 2982 | XFS_BUF_READ(bp); |
2983 | XFS_BUF_SET_ADDR(bp, XFS_FSB_TO_DB(ip, imap.br_startblock)); | 2983 | XFS_BUF_SET_ADDR(bp, xfs_fsb_to_db(ip, imap.br_startblock)); |
2984 | xfsbdstrat(mp, bp); | 2984 | xfsbdstrat(mp, bp); |
2985 | error = xfs_iowait(bp); | 2985 | error = xfs_iowait(bp); |
2986 | if (error) { | 2986 | if (error) { |
@@ -3186,7 +3186,7 @@ xfs_free_file_space( | |||
3186 | /* | 3186 | /* |
3187 | * issue the bunmapi() call to free the blocks | 3187 | * issue the bunmapi() call to free the blocks |
3188 | */ | 3188 | */ |
3189 | XFS_BMAP_INIT(&free_list, &firstfsb); | 3189 | xfs_bmap_init(&free_list, &firstfsb); |
3190 | error = xfs_bunmapi(tp, ip, startoffset_fsb, | 3190 | error = xfs_bunmapi(tp, ip, startoffset_fsb, |
3191 | endoffset_fsb - startoffset_fsb, | 3191 | endoffset_fsb - startoffset_fsb, |
3192 | 0, 2, &firstfsb, &free_list, NULL, &done); | 3192 | 0, 2, &firstfsb, &free_list, NULL, &done); |
diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h index 813e4b6c2c0d..bf8d4cfd8cf5 100644 --- a/include/acpi/actbl.h +++ b/include/acpi/actbl.h | |||
@@ -245,7 +245,7 @@ struct acpi_table_fadt { | |||
245 | #define ACPI_FADT_POWER_BUTTON (1<<4) /* 04: Power button is handled as a generic feature */ | 245 | #define ACPI_FADT_POWER_BUTTON (1<<4) /* 04: Power button is handled as a generic feature */ |
246 | #define ACPI_FADT_SLEEP_BUTTON (1<<5) /* 05: Sleep button is handled as a generic feature, or not present */ | 246 | #define ACPI_FADT_SLEEP_BUTTON (1<<5) /* 05: Sleep button is handled as a generic feature, or not present */ |
247 | #define ACPI_FADT_FIXED_RTC (1<<6) /* 06: RTC wakeup stat not in fixed register space */ | 247 | #define ACPI_FADT_FIXED_RTC (1<<6) /* 06: RTC wakeup stat not in fixed register space */ |
248 | #define ACPI_FADT_S4_RTC_WAKE (1<<7) /* 07: RTC wakeup stat not possible from S4 */ | 248 | #define ACPI_FADT_S4_RTC_WAKE (1<<7) /* 07: RTC wakeup possible from S4 */ |
249 | #define ACPI_FADT_32BIT_TIMER (1<<8) /* 08: tmr_val is 32 bits 0=24-bits */ | 249 | #define ACPI_FADT_32BIT_TIMER (1<<8) /* 08: tmr_val is 32 bits 0=24-bits */ |
250 | #define ACPI_FADT_DOCKING_SUPPORTED (1<<9) /* 09: Docking supported */ | 250 | #define ACPI_FADT_DOCKING_SUPPORTED (1<<9) /* 09: Docking supported */ |
251 | #define ACPI_FADT_RESET_REGISTER (1<<10) /* 10: System reset via the FADT RESET_REG supported */ | 251 | #define ACPI_FADT_RESET_REGISTER (1<<10) /* 10: System reset via the FADT RESET_REG supported */ |
diff --git a/include/asm-generic/bitops/__ffs.h b/include/asm-generic/bitops/__ffs.h index 9a3274aecf83..937d7c435575 100644 --- a/include/asm-generic/bitops/__ffs.h +++ b/include/asm-generic/bitops/__ffs.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * | 9 | * |
10 | * Undefined if no bit exists, so code should check against 0 first. | 10 | * Undefined if no bit exists, so code should check against 0 first. |
11 | */ | 11 | */ |
12 | static inline unsigned long __ffs(unsigned long word) | 12 | static __always_inline unsigned long __ffs(unsigned long word) |
13 | { | 13 | { |
14 | int num = 0; | 14 | int num = 0; |
15 | 15 | ||
diff --git a/include/asm-generic/bitops/__fls.h b/include/asm-generic/bitops/__fls.h index be24465403d6..a60a7ccb6782 100644 --- a/include/asm-generic/bitops/__fls.h +++ b/include/asm-generic/bitops/__fls.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * | 9 | * |
10 | * Undefined if no set bit exists, so code should check against 0 first. | 10 | * Undefined if no set bit exists, so code should check against 0 first. |
11 | */ | 11 | */ |
12 | static inline unsigned long __fls(unsigned long word) | 12 | static __always_inline unsigned long __fls(unsigned long word) |
13 | { | 13 | { |
14 | int num = BITS_PER_LONG - 1; | 14 | int num = BITS_PER_LONG - 1; |
15 | 15 | ||
diff --git a/include/asm-generic/bitops/fls.h b/include/asm-generic/bitops/fls.h index 850859bc5069..0576d1f42f43 100644 --- a/include/asm-generic/bitops/fls.h +++ b/include/asm-generic/bitops/fls.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. | 9 | * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | static inline int fls(int x) | 12 | static __always_inline int fls(int x) |
13 | { | 13 | { |
14 | int r = 32; | 14 | int r = 32; |
15 | 15 | ||
diff --git a/include/asm-generic/bitops/fls64.h b/include/asm-generic/bitops/fls64.h index 86d403f8b256..b097cf8444e3 100644 --- a/include/asm-generic/bitops/fls64.h +++ b/include/asm-generic/bitops/fls64.h | |||
@@ -15,7 +15,7 @@ | |||
15 | * at position 64. | 15 | * at position 64. |
16 | */ | 16 | */ |
17 | #if BITS_PER_LONG == 32 | 17 | #if BITS_PER_LONG == 32 |
18 | static inline int fls64(__u64 x) | 18 | static __always_inline int fls64(__u64 x) |
19 | { | 19 | { |
20 | __u32 h = x >> 32; | 20 | __u32 h = x >> 32; |
21 | if (h) | 21 | if (h) |
@@ -23,7 +23,7 @@ static inline int fls64(__u64 x) | |||
23 | return fls(x); | 23 | return fls(x); |
24 | } | 24 | } |
25 | #elif BITS_PER_LONG == 64 | 25 | #elif BITS_PER_LONG == 64 |
26 | static inline int fls64(__u64 x) | 26 | static __always_inline int fls64(__u64 x) |
27 | { | 27 | { |
28 | if (x == 0) | 28 | if (x == 0) |
29 | return 0; | 29 | return 0; |
diff --git a/include/asm-generic/rtc.h b/include/asm-generic/rtc.h index 89061c1a67d4..763e3b060f43 100644 --- a/include/asm-generic/rtc.h +++ b/include/asm-generic/rtc.h | |||
@@ -42,7 +42,7 @@ static inline unsigned char rtc_is_updating(void) | |||
42 | return uip; | 42 | return uip; |
43 | } | 43 | } |
44 | 44 | ||
45 | static inline unsigned int get_rtc_time(struct rtc_time *time) | 45 | static inline unsigned int __get_rtc_time(struct rtc_time *time) |
46 | { | 46 | { |
47 | unsigned char ctrl; | 47 | unsigned char ctrl; |
48 | unsigned long flags; | 48 | unsigned long flags; |
@@ -108,8 +108,12 @@ static inline unsigned int get_rtc_time(struct rtc_time *time) | |||
108 | return RTC_24H; | 108 | return RTC_24H; |
109 | } | 109 | } |
110 | 110 | ||
111 | #ifndef get_rtc_time | ||
112 | #define get_rtc_time __get_rtc_time | ||
113 | #endif | ||
114 | |||
111 | /* Set the current date and time in the real time clock. */ | 115 | /* Set the current date and time in the real time clock. */ |
112 | static inline int set_rtc_time(struct rtc_time *time) | 116 | static inline int __set_rtc_time(struct rtc_time *time) |
113 | { | 117 | { |
114 | unsigned long flags; | 118 | unsigned long flags; |
115 | unsigned char mon, day, hrs, min, sec; | 119 | unsigned char mon, day, hrs, min, sec; |
@@ -190,11 +194,15 @@ static inline int set_rtc_time(struct rtc_time *time) | |||
190 | return 0; | 194 | return 0; |
191 | } | 195 | } |
192 | 196 | ||
197 | #ifndef set_rtc_time | ||
198 | #define set_rtc_time __set_rtc_time | ||
199 | #endif | ||
200 | |||
193 | static inline unsigned int get_rtc_ss(void) | 201 | static inline unsigned int get_rtc_ss(void) |
194 | { | 202 | { |
195 | struct rtc_time h; | 203 | struct rtc_time h; |
196 | 204 | ||
197 | get_rtc_time(&h); | 205 | __get_rtc_time(&h); |
198 | return h.tm_sec; | 206 | return h.tm_sec; |
199 | } | 207 | } |
200 | 208 | ||
diff --git a/include/asm-m68k/auxvec.h b/include/asm-m68k/auxvec.h deleted file mode 100644 index 844d6d52204b..000000000000 --- a/include/asm-m68k/auxvec.h +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | #ifndef __ASMm68k_AUXVEC_H | ||
2 | #define __ASMm68k_AUXVEC_H | ||
3 | |||
4 | #endif | ||
diff --git a/include/asm-m68k/device.h b/include/asm-m68k/device.h deleted file mode 100644 index d8f9872b0e2d..000000000000 --- a/include/asm-m68k/device.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | /* | ||
2 | * Arch specific extensions to struct device | ||
3 | * | ||
4 | * This file is released under the GPLv2 | ||
5 | */ | ||
6 | #include <asm-generic/device.h> | ||
7 | |||
diff --git a/include/asm-m68k/emergency-restart.h b/include/asm-m68k/emergency-restart.h deleted file mode 100644 index 108d8c48e42e..000000000000 --- a/include/asm-m68k/emergency-restart.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef _ASM_EMERGENCY_RESTART_H | ||
2 | #define _ASM_EMERGENCY_RESTART_H | ||
3 | |||
4 | #include <asm-generic/emergency-restart.h> | ||
5 | |||
6 | #endif /* _ASM_EMERGENCY_RESTART_H */ | ||
diff --git a/include/asm-m68k/futex.h b/include/asm-m68k/futex.h deleted file mode 100644 index 6a332a9f099c..000000000000 --- a/include/asm-m68k/futex.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef _ASM_FUTEX_H | ||
2 | #define _ASM_FUTEX_H | ||
3 | |||
4 | #include <asm-generic/futex.h> | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m68k/ioctl.h b/include/asm-m68k/ioctl.h deleted file mode 100644 index b279fe06dfe5..000000000000 --- a/include/asm-m68k/ioctl.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-generic/ioctl.h> | ||
diff --git a/include/asm-m68k/irq_regs.h b/include/asm-m68k/irq_regs.h deleted file mode 100644 index 3dd9c0b70270..000000000000 --- a/include/asm-m68k/irq_regs.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-generic/irq_regs.h> | ||
diff --git a/include/asm-m68k/kdebug.h b/include/asm-m68k/kdebug.h deleted file mode 100644 index 6ece1b037665..000000000000 --- a/include/asm-m68k/kdebug.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-generic/kdebug.h> | ||
diff --git a/include/asm-m68k/mutex.h b/include/asm-m68k/mutex.h deleted file mode 100644 index 458c1f7fbc18..000000000000 --- a/include/asm-m68k/mutex.h +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | /* | ||
2 | * Pull in the generic implementation for the mutex fastpath. | ||
3 | * | ||
4 | * TODO: implement optimized primitives instead, or leave the generic | ||
5 | * implementation in place, or pick the atomic_xchg() based generic | ||
6 | * implementation. (see asm-generic/mutex-xchg.h for details) | ||
7 | */ | ||
8 | |||
9 | #include <asm-generic/mutex-dec.h> | ||
diff --git a/include/asm-m68k/topology.h b/include/asm-m68k/topology.h deleted file mode 100644 index ca173e9f26ff..000000000000 --- a/include/asm-m68k/topology.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef _ASM_M68K_TOPOLOGY_H | ||
2 | #define _ASM_M68K_TOPOLOGY_H | ||
3 | |||
4 | #include <asm-generic/topology.h> | ||
5 | |||
6 | #endif /* _ASM_M68K_TOPOLOGY_H */ | ||
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 0acb07f31fa4..d54de24bf371 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
@@ -395,7 +395,7 @@ struct drm_connector_funcs { | |||
395 | void (*save)(struct drm_connector *connector); | 395 | void (*save)(struct drm_connector *connector); |
396 | void (*restore)(struct drm_connector *connector); | 396 | void (*restore)(struct drm_connector *connector); |
397 | enum drm_connector_status (*detect)(struct drm_connector *connector); | 397 | enum drm_connector_status (*detect)(struct drm_connector *connector); |
398 | void (*fill_modes)(struct drm_connector *connector, uint32_t max_width, uint32_t max_height); | 398 | int (*fill_modes)(struct drm_connector *connector, uint32_t max_width, uint32_t max_height); |
399 | int (*set_property)(struct drm_connector *connector, struct drm_property *property, | 399 | int (*set_property)(struct drm_connector *connector, struct drm_property *property, |
400 | uint64_t val); | 400 | uint64_t val); |
401 | void (*destroy)(struct drm_connector *connector); | 401 | void (*destroy)(struct drm_connector *connector); |
@@ -528,7 +528,8 @@ struct drm_mode_group { | |||
528 | * | 528 | * |
529 | */ | 529 | */ |
530 | struct drm_mode_config { | 530 | struct drm_mode_config { |
531 | struct mutex mutex; /* protects configuration and IDR */ | 531 | struct mutex mutex; /* protects configuration (mode lists etc.) */ |
532 | struct mutex idr_mutex; /* for IDR management */ | ||
532 | struct idr crtc_idr; /* use this idr for all IDs, fb, crtc, connector, modes - just makes life easier */ | 533 | struct idr crtc_idr; /* use this idr for all IDs, fb, crtc, connector, modes - just makes life easier */ |
533 | /* this is limited to one for now */ | 534 | /* this is limited to one for now */ |
534 | int num_fb; | 535 | int num_fb; |
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h index 4bc04cf460a7..0c6f0e11b41b 100644 --- a/include/drm/drm_crtc_helper.h +++ b/include/drm/drm_crtc_helper.h | |||
@@ -88,7 +88,7 @@ struct drm_connector_helper_funcs { | |||
88 | struct drm_encoder *(*best_encoder)(struct drm_connector *connector); | 88 | struct drm_encoder *(*best_encoder)(struct drm_connector *connector); |
89 | }; | 89 | }; |
90 | 90 | ||
91 | extern void drm_helper_probe_single_connector_modes(struct drm_connector *connector, uint32_t maxX, uint32_t maxY); | 91 | extern int drm_helper_probe_single_connector_modes(struct drm_connector *connector, uint32_t maxX, uint32_t maxY); |
92 | extern void drm_helper_disable_unused_functions(struct drm_device *dev); | 92 | extern void drm_helper_disable_unused_functions(struct drm_device *dev); |
93 | extern int drm_helper_hotplug_stage_two(struct drm_device *dev); | 93 | extern int drm_helper_hotplug_stage_two(struct drm_device *dev); |
94 | extern bool drm_helper_initial_config(struct drm_device *dev, bool can_grow); | 94 | extern bool drm_helper_initial_config(struct drm_device *dev, bool can_grow); |
diff --git a/include/linux/agpgart.h b/include/linux/agpgart.h index c8fdb6e658e1..110c600c885f 100644 --- a/include/linux/agpgart.h +++ b/include/linux/agpgart.h | |||
@@ -52,7 +52,6 @@ | |||
52 | 52 | ||
53 | #ifndef __KERNEL__ | 53 | #ifndef __KERNEL__ |
54 | #include <linux/types.h> | 54 | #include <linux/types.h> |
55 | #include <asm/types.h> | ||
56 | 55 | ||
57 | struct agp_version { | 56 | struct agp_version { |
58 | __u16 major; | 57 | __u16 major; |
diff --git a/include/linux/atm_idt77105.h b/include/linux/atm_idt77105.h index 05621cf20709..8b724000aa50 100644 --- a/include/linux/atm_idt77105.h +++ b/include/linux/atm_idt77105.h | |||
@@ -7,7 +7,7 @@ | |||
7 | #ifndef LINUX_ATM_IDT77105_H | 7 | #ifndef LINUX_ATM_IDT77105_H |
8 | #define LINUX_ATM_IDT77105_H | 8 | #define LINUX_ATM_IDT77105_H |
9 | 9 | ||
10 | #include <asm/types.h> | 10 | #include <linux/types.h> |
11 | #include <linux/atmioc.h> | 11 | #include <linux/atmioc.h> |
12 | #include <linux/atmdev.h> | 12 | #include <linux/atmdev.h> |
13 | 13 | ||
diff --git a/include/linux/capi.h b/include/linux/capi.h index fdebaaa9f66e..65100d6cb89b 100644 --- a/include/linux/capi.h +++ b/include/linux/capi.h | |||
@@ -12,7 +12,7 @@ | |||
12 | #ifndef __LINUX_CAPI_H__ | 12 | #ifndef __LINUX_CAPI_H__ |
13 | #define __LINUX_CAPI_H__ | 13 | #define __LINUX_CAPI_H__ |
14 | 14 | ||
15 | #include <asm/types.h> | 15 | #include <linux/types.h> |
16 | #include <linux/ioctl.h> | 16 | #include <linux/ioctl.h> |
17 | #ifndef __KERNEL__ | 17 | #ifndef __KERNEL__ |
18 | #include <linux/kernelcapi.h> | 18 | #include <linux/kernelcapi.h> |
diff --git a/include/linux/connector.h b/include/linux/connector.h index 5c7f9468f753..34f2789d9b9b 100644 --- a/include/linux/connector.h +++ b/include/linux/connector.h | |||
@@ -22,7 +22,7 @@ | |||
22 | #ifndef __CONNECTOR_H | 22 | #ifndef __CONNECTOR_H |
23 | #define __CONNECTOR_H | 23 | #define __CONNECTOR_H |
24 | 24 | ||
25 | #include <asm/types.h> | 25 | #include <linux/types.h> |
26 | 26 | ||
27 | #define CN_IDX_CONNECTOR 0xffffffff | 27 | #define CN_IDX_CONNECTOR 0xffffffff |
28 | #define CN_VAL_CONNECTOR 0xffffffff | 28 | #define CN_VAL_CONNECTOR 0xffffffff |
diff --git a/include/linux/cyclades.h b/include/linux/cyclades.h index 2d3d1e04ba92..d06fbf286346 100644 --- a/include/linux/cyclades.h +++ b/include/linux/cyclades.h | |||
@@ -150,8 +150,6 @@ struct CYZ_BOOT_CTRL { | |||
150 | * architectures and compilers. | 150 | * architectures and compilers. |
151 | */ | 151 | */ |
152 | 152 | ||
153 | #include <asm/types.h> | ||
154 | |||
155 | typedef __u64 ucdouble; /* 64 bits, unsigned */ | 153 | typedef __u64 ucdouble; /* 64 bits, unsigned */ |
156 | typedef __u32 uclong; /* 32 bits, unsigned */ | 154 | typedef __u32 uclong; /* 32 bits, unsigned */ |
157 | typedef __u16 ucshort; /* 16 bits, unsigned */ | 155 | typedef __u16 ucshort; /* 16 bits, unsigned */ |
diff --git a/include/linux/debugfs.h b/include/linux/debugfs.h index 23936b16426b..af0e01d4c663 100644 --- a/include/linux/debugfs.h +++ b/include/linux/debugfs.h | |||
@@ -162,6 +162,13 @@ static inline struct dentry *debugfs_create_x32(const char *name, mode_t mode, | |||
162 | return ERR_PTR(-ENODEV); | 162 | return ERR_PTR(-ENODEV); |
163 | } | 163 | } |
164 | 164 | ||
165 | static inline struct dentry *debugfs_create_size_t(const char *name, mode_t mode, | ||
166 | struct dentry *parent, | ||
167 | size_t *value) | ||
168 | { | ||
169 | return ERR_PTR(-ENODEV); | ||
170 | } | ||
171 | |||
165 | static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode, | 172 | static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode, |
166 | struct dentry *parent, | 173 | struct dentry *parent, |
167 | u32 *value) | 174 | u32 *value) |
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index c73f1e2b59b7..3e0f64c335c8 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -297,6 +297,11 @@ static inline void async_tx_ack(struct dma_async_tx_descriptor *tx) | |||
297 | tx->flags |= DMA_CTRL_ACK; | 297 | tx->flags |= DMA_CTRL_ACK; |
298 | } | 298 | } |
299 | 299 | ||
300 | static inline void async_tx_clear_ack(struct dma_async_tx_descriptor *tx) | ||
301 | { | ||
302 | tx->flags &= ~DMA_CTRL_ACK; | ||
303 | } | ||
304 | |||
300 | static inline bool async_tx_test_ack(struct dma_async_tx_descriptor *tx) | 305 | static inline bool async_tx_test_ack(struct dma_async_tx_descriptor *tx) |
301 | { | 306 | { |
302 | return (tx->flags & DMA_CTRL_ACK) == DMA_CTRL_ACK; | 307 | return (tx->flags & DMA_CTRL_ACK) == DMA_CTRL_ACK; |
@@ -400,11 +405,16 @@ static inline enum dma_status dma_async_is_complete(dma_cookie_t cookie, | |||
400 | enum dma_status dma_sync_wait(struct dma_chan *chan, dma_cookie_t cookie); | 405 | enum dma_status dma_sync_wait(struct dma_chan *chan, dma_cookie_t cookie); |
401 | #ifdef CONFIG_DMA_ENGINE | 406 | #ifdef CONFIG_DMA_ENGINE |
402 | enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx); | 407 | enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx); |
408 | void dma_issue_pending_all(void); | ||
403 | #else | 409 | #else |
404 | static inline enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx) | 410 | static inline enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx) |
405 | { | 411 | { |
406 | return DMA_SUCCESS; | 412 | return DMA_SUCCESS; |
407 | } | 413 | } |
414 | static inline void dma_issue_pending_all(void) | ||
415 | { | ||
416 | do { } while (0); | ||
417 | } | ||
408 | #endif | 418 | #endif |
409 | 419 | ||
410 | /* --- DMA device --- */ | 420 | /* --- DMA device --- */ |
@@ -413,7 +423,6 @@ int dma_async_device_register(struct dma_device *device); | |||
413 | void dma_async_device_unregister(struct dma_device *device); | 423 | void dma_async_device_unregister(struct dma_device *device); |
414 | void dma_run_dependencies(struct dma_async_tx_descriptor *tx); | 424 | void dma_run_dependencies(struct dma_async_tx_descriptor *tx); |
415 | struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type); | 425 | struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type); |
416 | void dma_issue_pending_all(void); | ||
417 | #define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y) | 426 | #define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y) |
418 | struct dma_chan *__dma_request_channel(dma_cap_mask_t *mask, dma_filter_fn fn, void *fn_param); | 427 | struct dma_chan *__dma_request_channel(dma_cap_mask_t *mask, dma_filter_fn fn, void *fn_param); |
419 | void dma_release_channel(struct dma_chan *chan); | 428 | void dma_release_channel(struct dma_chan *chan); |
diff --git a/include/linux/fb.h b/include/linux/fb.h index 1ee63df5be92..818fe21257e8 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef _LINUX_FB_H | 1 | #ifndef _LINUX_FB_H |
2 | #define _LINUX_FB_H | 2 | #define _LINUX_FB_H |
3 | 3 | ||
4 | #include <asm/types.h> | 4 | #include <linux/types.h> |
5 | #include <linux/i2c.h> | 5 | #include <linux/i2c.h> |
6 | 6 | ||
7 | struct dentry; | 7 | struct dentry; |
diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h index 01d67ba9e985..1ffc23bc5d1e 100644 --- a/include/linux/i2c-id.h +++ b/include/linux/i2c-id.h | |||
@@ -40,9 +40,7 @@ | |||
40 | #define I2C_DRIVERID_SAA7185B 13 /* video encoder */ | 40 | #define I2C_DRIVERID_SAA7185B 13 /* video encoder */ |
41 | #define I2C_DRIVERID_SAA7110 22 /* video decoder */ | 41 | #define I2C_DRIVERID_SAA7110 22 /* video decoder */ |
42 | #define I2C_DRIVERID_SAA5249 24 /* SAA5249 and compatibles */ | 42 | #define I2C_DRIVERID_SAA5249 24 /* SAA5249 and compatibles */ |
43 | #define I2C_DRIVERID_PCF8583 25 /* real time clock */ | ||
44 | #define I2C_DRIVERID_TDA7432 27 /* Stereo sound processor */ | 43 | #define I2C_DRIVERID_TDA7432 27 /* Stereo sound processor */ |
45 | #define I2C_DRIVERID_TVMIXER 28 /* Mixer driver for tv cards */ | ||
46 | #define I2C_DRIVERID_TVAUDIO 29 /* Generic TV sound driver */ | 44 | #define I2C_DRIVERID_TVAUDIO 29 /* Generic TV sound driver */ |
47 | #define I2C_DRIVERID_TDA9875 32 /* TV sound decoder chip */ | 45 | #define I2C_DRIVERID_TDA9875 32 /* TV sound decoder chip */ |
48 | #define I2C_DRIVERID_BT819 40 /* video decoder */ | 46 | #define I2C_DRIVERID_BT819 40 /* video decoder */ |
@@ -54,7 +52,6 @@ | |||
54 | #define I2C_DRIVERID_SAA7191 57 /* video decoder */ | 52 | #define I2C_DRIVERID_SAA7191 57 /* video decoder */ |
55 | #define I2C_DRIVERID_INDYCAM 58 /* SGI IndyCam */ | 53 | #define I2C_DRIVERID_INDYCAM 58 /* SGI IndyCam */ |
56 | #define I2C_DRIVERID_OVCAMCHIP 61 /* OmniVision CMOS image sens. */ | 54 | #define I2C_DRIVERID_OVCAMCHIP 61 /* OmniVision CMOS image sens. */ |
57 | #define I2C_DRIVERID_MAX6900 63 /* MAX6900 real-time clock */ | ||
58 | #define I2C_DRIVERID_SAA6752HS 67 /* MPEG2 encoder */ | 55 | #define I2C_DRIVERID_SAA6752HS 67 /* MPEG2 encoder */ |
59 | #define I2C_DRIVERID_TVEEPROM 68 /* TV EEPROM */ | 56 | #define I2C_DRIVERID_TVEEPROM 68 /* TV EEPROM */ |
60 | #define I2C_DRIVERID_WM8775 69 /* wm8775 audio processor */ | 57 | #define I2C_DRIVERID_WM8775 69 /* wm8775 audio processor */ |
@@ -62,23 +59,16 @@ | |||
62 | #define I2C_DRIVERID_CX25840 71 /* cx2584x video encoder */ | 59 | #define I2C_DRIVERID_CX25840 71 /* cx2584x video encoder */ |
63 | #define I2C_DRIVERID_SAA7127 72 /* saa7127 video encoder */ | 60 | #define I2C_DRIVERID_SAA7127 72 /* saa7127 video encoder */ |
64 | #define I2C_DRIVERID_SAA711X 73 /* saa711x video encoders */ | 61 | #define I2C_DRIVERID_SAA711X 73 /* saa711x video encoders */ |
65 | #define I2C_DRIVERID_AKITAIOEXP 74 /* IO Expander on Sharp SL-C1000 */ | ||
66 | #define I2C_DRIVERID_INFRARED 75 /* I2C InfraRed on Video boards */ | 62 | #define I2C_DRIVERID_INFRARED 75 /* I2C InfraRed on Video boards */ |
67 | #define I2C_DRIVERID_TVP5150 76 /* TVP5150 video decoder */ | 63 | #define I2C_DRIVERID_TVP5150 76 /* TVP5150 video decoder */ |
68 | #define I2C_DRIVERID_WM8739 77 /* wm8739 audio processor */ | 64 | #define I2C_DRIVERID_WM8739 77 /* wm8739 audio processor */ |
69 | #define I2C_DRIVERID_UPD64083 78 /* upd64083 video processor */ | 65 | #define I2C_DRIVERID_UPD64083 78 /* upd64083 video processor */ |
70 | #define I2C_DRIVERID_UPD64031A 79 /* upd64031a video processor */ | 66 | #define I2C_DRIVERID_UPD64031A 79 /* upd64031a video processor */ |
71 | #define I2C_DRIVERID_SAA717X 80 /* saa717x video encoder */ | 67 | #define I2C_DRIVERID_SAA717X 80 /* saa717x video encoder */ |
72 | #define I2C_DRIVERID_DS1672 81 /* Dallas/Maxim DS1672 RTC */ | ||
73 | #define I2C_DRIVERID_BT866 85 /* Conexant bt866 video encoder */ | 68 | #define I2C_DRIVERID_BT866 85 /* Conexant bt866 video encoder */ |
74 | #define I2C_DRIVERID_KS0127 86 /* Samsung ks0127 video decoder */ | 69 | #define I2C_DRIVERID_KS0127 86 /* Samsung ks0127 video decoder */ |
75 | #define I2C_DRIVERID_TLV320AIC23B 87 /* TI TLV320AIC23B audio codec */ | 70 | #define I2C_DRIVERID_TLV320AIC23B 87 /* TI TLV320AIC23B audio codec */ |
76 | #define I2C_DRIVERID_WM8731 89 /* Wolfson WM8731 audio codec */ | ||
77 | #define I2C_DRIVERID_WM8750 90 /* Wolfson WM8750 audio codec */ | ||
78 | #define I2C_DRIVERID_WM8753 91 /* Wolfson WM8753 audio codec */ | ||
79 | #define I2C_DRIVERID_LM4857 92 /* LM4857 Audio Amplifier */ | ||
80 | #define I2C_DRIVERID_VP27SMPX 93 /* Panasonic VP27s tuner internal MPX */ | 71 | #define I2C_DRIVERID_VP27SMPX 93 /* Panasonic VP27s tuner internal MPX */ |
81 | #define I2C_DRIVERID_CS4270 94 /* Cirrus Logic 4270 audio codec */ | ||
82 | #define I2C_DRIVERID_M52790 95 /* Mitsubishi M52790SP/FP AV switch */ | 72 | #define I2C_DRIVERID_M52790 95 /* Mitsubishi M52790SP/FP AV switch */ |
83 | #define I2C_DRIVERID_CS5345 96 /* cs5345 audio processor */ | 73 | #define I2C_DRIVERID_CS5345 96 /* cs5345 audio processor */ |
84 | 74 | ||
@@ -89,74 +79,23 @@ | |||
89 | */ | 79 | */ |
90 | 80 | ||
91 | /* --- Bit algorithm adapters */ | 81 | /* --- Bit algorithm adapters */ |
92 | #define I2C_HW_B_LP 0x010000 /* Parallel port Philips style */ | ||
93 | #define I2C_HW_B_BT848 0x010005 /* BT848 video boards */ | 82 | #define I2C_HW_B_BT848 0x010005 /* BT848 video boards */ |
94 | #define I2C_HW_B_VIA 0x010007 /* Via vt82c586b */ | ||
95 | #define I2C_HW_B_HYDRA 0x010008 /* Apple Hydra Mac I/O */ | ||
96 | #define I2C_HW_B_I810 0x01000a /* Intel I810 */ | ||
97 | #define I2C_HW_B_VOO 0x01000b /* 3dfx Voodoo 3 / Banshee */ | ||
98 | #define I2C_HW_B_SCX200 0x01000e /* Nat'l Semi SCx200 I2C */ | ||
99 | #define I2C_HW_B_RIVA 0x010010 /* Riva based graphics cards */ | 83 | #define I2C_HW_B_RIVA 0x010010 /* Riva based graphics cards */ |
100 | #define I2C_HW_B_IOC 0x010011 /* IOC bit-wiggling */ | ||
101 | #define I2C_HW_B_IXP2000 0x010016 /* GPIO on IXP2000 systems */ | ||
102 | #define I2C_HW_B_ZR36067 0x010019 /* Zoran-36057/36067 based boards */ | 84 | #define I2C_HW_B_ZR36067 0x010019 /* Zoran-36057/36067 based boards */ |
103 | #define I2C_HW_B_PCILYNX 0x01001a /* TI PCILynx I2C adapter */ | ||
104 | #define I2C_HW_B_CX2388x 0x01001b /* connexant 2388x based tv cards */ | 85 | #define I2C_HW_B_CX2388x 0x01001b /* connexant 2388x based tv cards */ |
105 | #define I2C_HW_B_NVIDIA 0x01001c /* nvidia framebuffer driver */ | ||
106 | #define I2C_HW_B_SAVAGE 0x01001d /* savage framebuffer driver */ | ||
107 | #define I2C_HW_B_RADEON 0x01001e /* radeon framebuffer driver */ | ||
108 | #define I2C_HW_B_EM28XX 0x01001f /* em28xx video capture cards */ | 86 | #define I2C_HW_B_EM28XX 0x01001f /* em28xx video capture cards */ |
109 | #define I2C_HW_B_CX2341X 0x010020 /* Conexant CX2341X MPEG encoder cards */ | 87 | #define I2C_HW_B_CX2341X 0x010020 /* Conexant CX2341X MPEG encoder cards */ |
110 | #define I2C_HW_B_INTELFB 0x010021 /* intel framebuffer driver */ | ||
111 | #define I2C_HW_B_CX23885 0x010022 /* conexant 23885 based tv cards (bus1) */ | 88 | #define I2C_HW_B_CX23885 0x010022 /* conexant 23885 based tv cards (bus1) */ |
112 | #define I2C_HW_B_AU0828 0x010023 /* auvitek au0828 usb bridge */ | 89 | #define I2C_HW_B_AU0828 0x010023 /* auvitek au0828 usb bridge */ |
113 | 90 | ||
114 | /* --- PCF 8584 based algorithms */ | ||
115 | #define I2C_HW_P_ELEK 0x020002 /* Elektor ISA Bus inteface card */ | ||
116 | |||
117 | /* --- PCA 9564 based algorithms */ | ||
118 | #define I2C_HW_A_ISA 0x1a0000 /* generic ISA Bus interface card */ | ||
119 | |||
120 | /* --- PowerPC on-chip adapters */ | ||
121 | #define I2C_HW_OCP 0x120000 /* IBM on-chip I2C adapter */ | ||
122 | |||
123 | /* --- Broadcom SiByte adapters */ | ||
124 | #define I2C_HW_SIBYTE 0x150000 | ||
125 | |||
126 | /* --- SGI adapters */ | 91 | /* --- SGI adapters */ |
127 | #define I2C_HW_SGI_VINO 0x160000 | 92 | #define I2C_HW_SGI_VINO 0x160000 |
128 | 93 | ||
129 | /* --- XSCALE on-chip adapters */ | ||
130 | #define I2C_HW_IOP3XX 0x140000 | ||
131 | |||
132 | /* --- Au1550 PSC adapters adapters */ | ||
133 | #define I2C_HW_AU1550_PSC 0x1b0000 | ||
134 | |||
135 | /* --- SMBus only adapters */ | 94 | /* --- SMBus only adapters */ |
136 | #define I2C_HW_SMBUS_PIIX4 0x040000 | ||
137 | #define I2C_HW_SMBUS_ALI15X3 0x040001 | ||
138 | #define I2C_HW_SMBUS_VIA2 0x040002 | ||
139 | #define I2C_HW_SMBUS_I801 0x040004 | ||
140 | #define I2C_HW_SMBUS_AMD756 0x040005 | ||
141 | #define I2C_HW_SMBUS_SIS5595 0x040006 | ||
142 | #define I2C_HW_SMBUS_ALI1535 0x040007 | ||
143 | #define I2C_HW_SMBUS_SIS630 0x040008 | ||
144 | #define I2C_HW_SMBUS_SIS96X 0x040009 | ||
145 | #define I2C_HW_SMBUS_AMD8111 0x04000a | ||
146 | #define I2C_HW_SMBUS_SCX200 0x04000b | ||
147 | #define I2C_HW_SMBUS_NFORCE2 0x04000c | ||
148 | #define I2C_HW_SMBUS_W9968CF 0x04000d | 95 | #define I2C_HW_SMBUS_W9968CF 0x04000d |
149 | #define I2C_HW_SMBUS_OV511 0x04000e /* OV511(+) USB 1.1 webcam ICs */ | 96 | #define I2C_HW_SMBUS_OV511 0x04000e /* OV511(+) USB 1.1 webcam ICs */ |
150 | #define I2C_HW_SMBUS_OV518 0x04000f /* OV518(+) USB 1.1 webcam ICs */ | 97 | #define I2C_HW_SMBUS_OV518 0x04000f /* OV518(+) USB 1.1 webcam ICs */ |
151 | #define I2C_HW_SMBUS_CAFE 0x040012 /* Marvell 88ALP01 "CAFE" cam */ | 98 | #define I2C_HW_SMBUS_CAFE 0x040012 /* Marvell 88ALP01 "CAFE" cam */ |
152 | #define I2C_HW_SMBUS_ALI1563 0x040013 | ||
153 | |||
154 | /* --- MCP107 adapter */ | ||
155 | #define I2C_HW_MPC107 0x0d0000 | ||
156 | |||
157 | /* --- Embedded adapters */ | ||
158 | #define I2C_HW_MV64XXX 0x190000 | ||
159 | #define I2C_HW_BLACKFIN 0x190001 /* ADI Blackfin I2C TWI driver */ | ||
160 | 99 | ||
161 | /* --- Miscellaneous adapters */ | 100 | /* --- Miscellaneous adapters */ |
162 | #define I2C_HW_SAA7146 0x060000 /* SAA7146 video decoder bus */ | 101 | #define I2C_HW_SAA7146 0x060000 /* SAA7146 video decoder bus */ |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 20873d402467..fcfbfea3af72 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
@@ -151,7 +151,7 @@ struct i2c_driver { | |||
151 | * has been dynamically allocated by the driver in the function above, | 151 | * has been dynamically allocated by the driver in the function above, |
152 | * it must be freed here. (LEGACY I2C DRIVERS ONLY) | 152 | * it must be freed here. (LEGACY I2C DRIVERS ONLY) |
153 | */ | 153 | */ |
154 | int (*detach_client)(struct i2c_client *); | 154 | int (*detach_client)(struct i2c_client *) __deprecated; |
155 | 155 | ||
156 | /* Standard driver model interfaces, for "new style" i2c drivers. | 156 | /* Standard driver model interfaces, for "new style" i2c drivers. |
157 | * With the driver model, device enumeration is NEVER done by drivers; | 157 | * With the driver model, device enumeration is NEVER done by drivers; |
@@ -429,8 +429,10 @@ static inline int i2c_add_driver(struct i2c_driver *driver) | |||
429 | return i2c_register_driver(THIS_MODULE, driver); | 429 | return i2c_register_driver(THIS_MODULE, driver); |
430 | } | 430 | } |
431 | 431 | ||
432 | extern int i2c_attach_client(struct i2c_client *); | 432 | /* These are deprecated, your driver should use the standard .probe() |
433 | extern int i2c_detach_client(struct i2c_client *); | 433 | * and .remove() methods instead. */ |
434 | extern int __deprecated i2c_attach_client(struct i2c_client *); | ||
435 | extern int __deprecated i2c_detach_client(struct i2c_client *); | ||
434 | 436 | ||
435 | extern struct i2c_client *i2c_use_client(struct i2c_client *client); | 437 | extern struct i2c_client *i2c_use_client(struct i2c_client *client); |
436 | extern void i2c_release_client(struct i2c_client *client); | 438 | extern void i2c_release_client(struct i2c_client *client); |
diff --git a/include/linux/if_frad.h b/include/linux/if_frad.h index 5c34240de746..60e16a551dd6 100644 --- a/include/linux/if_frad.h +++ b/include/linux/if_frad.h | |||
@@ -26,8 +26,6 @@ | |||
26 | 26 | ||
27 | #include <linux/if.h> | 27 | #include <linux/if.h> |
28 | 28 | ||
29 | #if defined(CONFIG_DLCI) || defined(CONFIG_DLCI_MODULE) | ||
30 | |||
31 | /* Structures and constants associated with the DLCI device driver */ | 29 | /* Structures and constants associated with the DLCI device driver */ |
32 | 30 | ||
33 | struct dlci_add | 31 | struct dlci_add |
@@ -127,6 +125,8 @@ struct frad_conf | |||
127 | 125 | ||
128 | #ifdef __KERNEL__ | 126 | #ifdef __KERNEL__ |
129 | 127 | ||
128 | #if defined(CONFIG_DLCI) || defined(CONFIG_DLCI_MODULE) | ||
129 | |||
130 | /* these are the fields of an RFC 1490 header */ | 130 | /* these are the fields of an RFC 1490 header */ |
131 | struct frhdr | 131 | struct frhdr |
132 | { | 132 | { |
@@ -190,12 +190,10 @@ struct frad_local | |||
190 | int buffer; /* current buffer for S508 firmware */ | 190 | int buffer; /* current buffer for S508 firmware */ |
191 | }; | 191 | }; |
192 | 192 | ||
193 | #endif /* __KERNEL__ */ | ||
194 | |||
195 | #endif /* CONFIG_DLCI || CONFIG_DLCI_MODULE */ | 193 | #endif /* CONFIG_DLCI || CONFIG_DLCI_MODULE */ |
196 | 194 | ||
197 | #ifdef __KERNEL__ | ||
198 | extern void dlci_ioctl_set(int (*hook)(unsigned int, void __user *)); | 195 | extern void dlci_ioctl_set(int (*hook)(unsigned int, void __user *)); |
199 | #endif | 196 | |
197 | #endif /* __KERNEL__ */ | ||
200 | 198 | ||
201 | #endif | 199 | #endif |
diff --git a/include/linux/if_pppol2tp.h b/include/linux/if_pppol2tp.h index a7d6a2234b31..c7a66882b6d0 100644 --- a/include/linux/if_pppol2tp.h +++ b/include/linux/if_pppol2tp.h | |||
@@ -15,7 +15,7 @@ | |||
15 | #ifndef __LINUX_IF_PPPOL2TP_H | 15 | #ifndef __LINUX_IF_PPPOL2TP_H |
16 | #define __LINUX_IF_PPPOL2TP_H | 16 | #define __LINUX_IF_PPPOL2TP_H |
17 | 17 | ||
18 | #include <asm/types.h> | 18 | #include <linux/types.h> |
19 | 19 | ||
20 | #ifdef __KERNEL__ | 20 | #ifdef __KERNEL__ |
21 | #include <linux/in.h> | 21 | #include <linux/in.h> |
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h index 6fb7f1788570..30c88b2245ff 100644 --- a/include/linux/if_pppox.h +++ b/include/linux/if_pppox.h | |||
@@ -17,7 +17,7 @@ | |||
17 | #define __LINUX_IF_PPPOX_H | 17 | #define __LINUX_IF_PPPOX_H |
18 | 18 | ||
19 | 19 | ||
20 | #include <asm/types.h> | 20 | #include <linux/types.h> |
21 | #include <asm/byteorder.h> | 21 | #include <asm/byteorder.h> |
22 | 22 | ||
23 | #ifdef __KERNEL__ | 23 | #ifdef __KERNEL__ |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 2f3c2d4ef73b..ea0ea1a4c36f 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -48,6 +48,12 @@ extern struct fs_struct init_fs; | |||
48 | .posix_timers = LIST_HEAD_INIT(sig.posix_timers), \ | 48 | .posix_timers = LIST_HEAD_INIT(sig.posix_timers), \ |
49 | .cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \ | 49 | .cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \ |
50 | .rlim = INIT_RLIMITS, \ | 50 | .rlim = INIT_RLIMITS, \ |
51 | .cputime = { .totals = { \ | ||
52 | .utime = cputime_zero, \ | ||
53 | .stime = cputime_zero, \ | ||
54 | .sum_exec_runtime = 0, \ | ||
55 | .lock = __SPIN_LOCK_UNLOCKED(sig.cputime.totals.lock), \ | ||
56 | }, }, \ | ||
51 | } | 57 | } |
52 | 58 | ||
53 | extern struct nsproxy init_nsproxy; | 59 | extern struct nsproxy init_nsproxy; |
diff --git a/include/linux/input.h b/include/linux/input.h index 9a6355f74db2..1249a0c20a38 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <sys/time.h> | 16 | #include <sys/time.h> |
17 | #include <sys/ioctl.h> | 17 | #include <sys/ioctl.h> |
18 | #include <sys/types.h> | 18 | #include <sys/types.h> |
19 | #include <asm/types.h> | 19 | #include <linux/types.h> |
20 | #endif | 20 | #endif |
21 | 21 | ||
22 | /* | 22 | /* |
diff --git a/include/linux/ioport.h b/include/linux/ioport.h index f6bb2ca8e3ba..32e4b2f72294 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h | |||
@@ -143,7 +143,8 @@ static inline unsigned long resource_type(struct resource *res) | |||
143 | 143 | ||
144 | extern struct resource * __request_region(struct resource *, | 144 | extern struct resource * __request_region(struct resource *, |
145 | resource_size_t start, | 145 | resource_size_t start, |
146 | resource_size_t n, const char *name, int relaxed); | 146 | resource_size_t n, |
147 | const char *name, int flags); | ||
147 | 148 | ||
148 | /* Compatibility cruft */ | 149 | /* Compatibility cruft */ |
149 | #define release_region(start,n) __release_region(&ioport_resource, (start), (n)) | 150 | #define release_region(start,n) __release_region(&ioport_resource, (start), (n)) |
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index 6384b19efe64..64246dce5663 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h | |||
@@ -614,6 +614,8 @@ struct transaction_s | |||
614 | * @j_wbufsize: maximum number of buffer_heads allowed in j_wbuf, the | 614 | * @j_wbufsize: maximum number of buffer_heads allowed in j_wbuf, the |
615 | * number that will fit in j_blocksize | 615 | * number that will fit in j_blocksize |
616 | * @j_last_sync_writer: most recent pid which did a synchronous write | 616 | * @j_last_sync_writer: most recent pid which did a synchronous write |
617 | * @j_average_commit_time: the average amount of time in nanoseconds it | ||
618 | * takes to commit a transaction to the disk. | ||
617 | * @j_private: An opaque pointer to fs-private information. | 619 | * @j_private: An opaque pointer to fs-private information. |
618 | */ | 620 | */ |
619 | 621 | ||
diff --git a/include/linux/joystick.h b/include/linux/joystick.h index b5e051295a67..9e20c29c1e14 100644 --- a/include/linux/joystick.h +++ b/include/linux/joystick.h | |||
@@ -27,7 +27,7 @@ | |||
27 | * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic | 27 | * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic |
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include <asm/types.h> | 30 | #include <linux/types.h> |
31 | #include <linux/input.h> | 31 | #include <linux/input.h> |
32 | 32 | ||
33 | /* | 33 | /* |
diff --git a/include/linux/klist.h b/include/linux/klist.h index d5a27af9dba5..e91a4e59b771 100644 --- a/include/linux/klist.h +++ b/include/linux/klist.h | |||
@@ -22,7 +22,7 @@ struct klist { | |||
22 | struct list_head k_list; | 22 | struct list_head k_list; |
23 | void (*get)(struct klist_node *); | 23 | void (*get)(struct klist_node *); |
24 | void (*put)(struct klist_node *); | 24 | void (*put)(struct klist_node *); |
25 | }; | 25 | } __attribute__ ((aligned (4))); |
26 | 26 | ||
27 | #define KLIST_INIT(_name, _get, _put) \ | 27 | #define KLIST_INIT(_name, _get, _put) \ |
28 | { .k_lock = __SPIN_LOCK_UNLOCKED(_name.k_lock), \ | 28 | { .k_lock = __SPIN_LOCK_UNLOCKED(_name.k_lock), \ |
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index 35525ac63337..5715f1907601 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
@@ -7,7 +7,7 @@ | |||
7 | * Note: you must update KVM_API_VERSION if you change this interface. | 7 | * Note: you must update KVM_API_VERSION if you change this interface. |
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <asm/types.h> | 10 | #include <linux/types.h> |
11 | #include <linux/compiler.h> | 11 | #include <linux/compiler.h> |
12 | #include <linux/ioctl.h> | 12 | #include <linux/ioctl.h> |
13 | #include <asm/kvm.h> | 13 | #include <asm/kvm.h> |
diff --git a/include/linux/libata.h b/include/linux/libata.h index b6b8a7f3ec66..2c6bd66209ff 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -401,12 +401,14 @@ enum { | |||
401 | ATA_TIMING_CYC8B, | 401 | ATA_TIMING_CYC8B, |
402 | ATA_TIMING_ACTIVE = (1 << 4), | 402 | ATA_TIMING_ACTIVE = (1 << 4), |
403 | ATA_TIMING_RECOVER = (1 << 5), | 403 | ATA_TIMING_RECOVER = (1 << 5), |
404 | ATA_TIMING_CYCLE = (1 << 6), | 404 | ATA_TIMING_DMACK_HOLD = (1 << 6), |
405 | ATA_TIMING_UDMA = (1 << 7), | 405 | ATA_TIMING_CYCLE = (1 << 7), |
406 | ATA_TIMING_UDMA = (1 << 8), | ||
406 | ATA_TIMING_ALL = ATA_TIMING_SETUP | ATA_TIMING_ACT8B | | 407 | ATA_TIMING_ALL = ATA_TIMING_SETUP | ATA_TIMING_ACT8B | |
407 | ATA_TIMING_REC8B | ATA_TIMING_CYC8B | | 408 | ATA_TIMING_REC8B | ATA_TIMING_CYC8B | |
408 | ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER | | 409 | ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER | |
409 | ATA_TIMING_CYCLE | ATA_TIMING_UDMA, | 410 | ATA_TIMING_DMACK_HOLD | ATA_TIMING_CYCLE | |
411 | ATA_TIMING_UDMA, | ||
410 | }; | 412 | }; |
411 | 413 | ||
412 | enum ata_xfer_mask { | 414 | enum ata_xfer_mask { |
@@ -866,6 +868,7 @@ struct ata_timing { | |||
866 | unsigned short cyc8b; /* t0 for 8-bit I/O */ | 868 | unsigned short cyc8b; /* t0 for 8-bit I/O */ |
867 | unsigned short active; /* t2 or tD */ | 869 | unsigned short active; /* t2 or tD */ |
868 | unsigned short recover; /* t2i or tK */ | 870 | unsigned short recover; /* t2i or tK */ |
871 | unsigned short dmack_hold; /* tj */ | ||
869 | unsigned short cycle; /* t0 */ | 872 | unsigned short cycle; /* t0 */ |
870 | unsigned short udma; /* t2CYCTYP/2 */ | 873 | unsigned short udma; /* t2CYCTYP/2 */ |
871 | }; | 874 | }; |
@@ -927,6 +930,8 @@ extern void ata_host_init(struct ata_host *, struct device *, | |||
927 | extern int ata_scsi_detect(struct scsi_host_template *sht); | 930 | extern int ata_scsi_detect(struct scsi_host_template *sht); |
928 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); | 931 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); |
929 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); | 932 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); |
933 | extern int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *dev, | ||
934 | int cmd, void __user *arg); | ||
930 | extern void ata_sas_port_destroy(struct ata_port *); | 935 | extern void ata_sas_port_destroy(struct ata_port *); |
931 | extern struct ata_port *ata_sas_port_alloc(struct ata_host *, | 936 | extern struct ata_port *ata_sas_port_alloc(struct ata_host *, |
932 | struct ata_port_info *, struct Scsi_Host *); | 937 | struct ata_port_info *, struct Scsi_Host *); |
diff --git a/include/linux/loop.h b/include/linux/loop.h index 46169a7b559b..6ffd6db5bb0d 100644 --- a/include/linux/loop.h +++ b/include/linux/loop.h | |||
@@ -80,7 +80,7 @@ enum { | |||
80 | }; | 80 | }; |
81 | 81 | ||
82 | #include <asm/posix_types.h> /* for __kernel_old_dev_t */ | 82 | #include <asm/posix_types.h> /* for __kernel_old_dev_t */ |
83 | #include <asm/types.h> /* for __u64 */ | 83 | #include <linux/types.h> /* for __u64 */ |
84 | 84 | ||
85 | /* Backwards compatibility version */ | 85 | /* Backwards compatibility version */ |
86 | struct loop_info { | 86 | struct loop_info { |
diff --git a/include/linux/magic.h b/include/linux/magic.h index 439f6f3cb0c4..0b4df7eba852 100644 --- a/include/linux/magic.h +++ b/include/linux/magic.h | |||
@@ -10,11 +10,13 @@ | |||
10 | #define SYSFS_MAGIC 0x62656572 | 10 | #define SYSFS_MAGIC 0x62656572 |
11 | #define SECURITYFS_MAGIC 0x73636673 | 11 | #define SECURITYFS_MAGIC 0x73636673 |
12 | #define TMPFS_MAGIC 0x01021994 | 12 | #define TMPFS_MAGIC 0x01021994 |
13 | #define SQUASHFS_MAGIC 0x73717368 | ||
13 | #define EFS_SUPER_MAGIC 0x414A53 | 14 | #define EFS_SUPER_MAGIC 0x414A53 |
14 | #define EXT2_SUPER_MAGIC 0xEF53 | 15 | #define EXT2_SUPER_MAGIC 0xEF53 |
15 | #define EXT3_SUPER_MAGIC 0xEF53 | 16 | #define EXT3_SUPER_MAGIC 0xEF53 |
16 | #define XENFS_SUPER_MAGIC 0xabba1974 | 17 | #define XENFS_SUPER_MAGIC 0xabba1974 |
17 | #define EXT4_SUPER_MAGIC 0xEF53 | 18 | #define EXT4_SUPER_MAGIC 0xEF53 |
19 | #define BTRFS_SUPER_MAGIC 0x9123683E | ||
18 | #define HPFS_SUPER_MAGIC 0xf995e849 | 20 | #define HPFS_SUPER_MAGIC 0xf995e849 |
19 | #define ISOFS_SUPER_MAGIC 0x9660 | 21 | #define ISOFS_SUPER_MAGIC 0x9660 |
20 | #define JFFS2_SUPER_MAGIC 0x72b6 | 22 | #define JFFS2_SUPER_MAGIC 0x72b6 |
diff --git a/include/linux/matroxfb.h b/include/linux/matroxfb.h index ae5b09493062..404f678e734b 100644 --- a/include/linux/matroxfb.h +++ b/include/linux/matroxfb.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define __LINUX_MATROXFB_H__ | 2 | #define __LINUX_MATROXFB_H__ |
3 | 3 | ||
4 | #include <asm/ioctl.h> | 4 | #include <asm/ioctl.h> |
5 | #include <asm/types.h> | 5 | #include <linux/types.h> |
6 | #include <linux/videodev2.h> | 6 | #include <linux/videodev2.h> |
7 | 7 | ||
8 | struct matroxioc_output_mode { | 8 | struct matroxioc_output_mode { |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index f24556813375..ec54785d34f9 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -467,7 +467,7 @@ struct netdev_queue { | |||
467 | * This function is called when network device transistions to the down | 467 | * This function is called when network device transistions to the down |
468 | * state. | 468 | * state. |
469 | * | 469 | * |
470 | * int (*ndo_hard_start_xmit)(struct sk_buff *skb, struct net_device *dev); | 470 | * int (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev); |
471 | * Called when a packet needs to be transmitted. | 471 | * Called when a packet needs to be transmitted. |
472 | * Must return NETDEV_TX_OK , NETDEV_TX_BUSY, or NETDEV_TX_LOCKED, | 472 | * Must return NETDEV_TX_OK , NETDEV_TX_BUSY, or NETDEV_TX_LOCKED, |
473 | * Required can not be NULL. | 473 | * Required can not be NULL. |
@@ -795,6 +795,7 @@ struct net_device | |||
795 | NETREG_UNREGISTERING, /* called unregister_netdevice */ | 795 | NETREG_UNREGISTERING, /* called unregister_netdevice */ |
796 | NETREG_UNREGISTERED, /* completed unregister todo */ | 796 | NETREG_UNREGISTERED, /* completed unregister todo */ |
797 | NETREG_RELEASED, /* called free_netdev */ | 797 | NETREG_RELEASED, /* called free_netdev */ |
798 | NETREG_DUMMY, /* dummy device for NAPI poll */ | ||
798 | } reg_state; | 799 | } reg_state; |
799 | 800 | ||
800 | /* Called from unregister, can be used to call free_netdev */ | 801 | /* Called from unregister, can be used to call free_netdev */ |
@@ -1077,6 +1078,8 @@ extern void free_netdev(struct net_device *dev); | |||
1077 | extern void synchronize_net(void); | 1078 | extern void synchronize_net(void); |
1078 | extern int register_netdevice_notifier(struct notifier_block *nb); | 1079 | extern int register_netdevice_notifier(struct notifier_block *nb); |
1079 | extern int unregister_netdevice_notifier(struct notifier_block *nb); | 1080 | extern int unregister_netdevice_notifier(struct notifier_block *nb); |
1081 | extern int init_dummy_netdev(struct net_device *dev); | ||
1082 | |||
1080 | extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev); | 1083 | extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev); |
1081 | extern struct net_device *dev_get_by_index(struct net *net, int ifindex); | 1084 | extern struct net_device *dev_get_by_index(struct net *net, int ifindex); |
1082 | extern struct net_device *__dev_get_by_index(struct net *net, int ifindex); | 1085 | extern struct net_device *__dev_get_by_index(struct net *net, int ifindex); |
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index e52ce475d19f..c7ee8744d26b 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h | |||
@@ -270,6 +270,7 @@ struct xt_match | |||
270 | struct list_head list; | 270 | struct list_head list; |
271 | 271 | ||
272 | const char name[XT_FUNCTION_MAXNAMELEN-1]; | 272 | const char name[XT_FUNCTION_MAXNAMELEN-1]; |
273 | u_int8_t revision; | ||
273 | 274 | ||
274 | /* Return true or false: return FALSE and set *hotdrop = 1 to | 275 | /* Return true or false: return FALSE and set *hotdrop = 1 to |
275 | force immediate packet drop. */ | 276 | force immediate packet drop. */ |
@@ -302,7 +303,6 @@ struct xt_match | |||
302 | unsigned short proto; | 303 | unsigned short proto; |
303 | 304 | ||
304 | unsigned short family; | 305 | unsigned short family; |
305 | u_int8_t revision; | ||
306 | }; | 306 | }; |
307 | 307 | ||
308 | /* Registration hooks for targets. */ | 308 | /* Registration hooks for targets. */ |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 80f8b8b65fde..48890cf3f96e 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -117,6 +117,10 @@ typedef int __bitwise pci_power_t; | |||
117 | #define PCI_UNKNOWN ((pci_power_t __force) 5) | 117 | #define PCI_UNKNOWN ((pci_power_t __force) 5) |
118 | #define PCI_POWER_ERROR ((pci_power_t __force) -1) | 118 | #define PCI_POWER_ERROR ((pci_power_t __force) -1) |
119 | 119 | ||
120 | #define PCI_PM_D2_DELAY 200 | ||
121 | #define PCI_PM_D3_WAIT 10 | ||
122 | #define PCI_PM_BUS_WAIT 50 | ||
123 | |||
120 | /** The pci_channel state describes connectivity between the CPU and | 124 | /** The pci_channel state describes connectivity between the CPU and |
121 | * the pci device. If some PCI bus between here and the pci device | 125 | * the pci device. If some PCI bus between here and the pci device |
122 | * has crashed or locked up, this info is reflected here. | 126 | * has crashed or locked up, this info is reflected here. |
@@ -252,6 +256,7 @@ struct pci_dev { | |||
252 | unsigned int ari_enabled:1; /* ARI forwarding */ | 256 | unsigned int ari_enabled:1; /* ARI forwarding */ |
253 | unsigned int is_managed:1; | 257 | unsigned int is_managed:1; |
254 | unsigned int is_pcie:1; | 258 | unsigned int is_pcie:1; |
259 | unsigned int state_saved:1; | ||
255 | pci_dev_flags_t dev_flags; | 260 | pci_dev_flags_t dev_flags; |
256 | atomic_t enable_cnt; /* pci_enable_device has been called */ | 261 | atomic_t enable_cnt; /* pci_enable_device has been called */ |
257 | 262 | ||
diff --git a/include/linux/phantom.h b/include/linux/phantom.h index 02268c54c250..94dd6645c60a 100644 --- a/include/linux/phantom.h +++ b/include/linux/phantom.h | |||
@@ -10,7 +10,7 @@ | |||
10 | #ifndef __PHANTOM_H | 10 | #ifndef __PHANTOM_H |
11 | #define __PHANTOM_H | 11 | #define __PHANTOM_H |
12 | 12 | ||
13 | #include <asm/types.h> | 13 | #include <linux/types.h> |
14 | 14 | ||
15 | /* PHN_(G/S)ET_REG param */ | 15 | /* PHN_(G/S)ET_REG param */ |
16 | struct phm_reg { | 16 | struct phm_reg { |
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index 21b781a3350f..0b35b3a1be05 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h | |||
@@ -24,10 +24,8 @@ void sync_dquots(struct super_block *sb, int type); | |||
24 | 24 | ||
25 | int dquot_initialize(struct inode *inode, int type); | 25 | int dquot_initialize(struct inode *inode, int type); |
26 | int dquot_drop(struct inode *inode); | 26 | int dquot_drop(struct inode *inode); |
27 | int dquot_drop_locked(struct inode *inode); | ||
28 | struct dquot *dqget(struct super_block *sb, unsigned int id, int type); | 27 | struct dquot *dqget(struct super_block *sb, unsigned int id, int type); |
29 | void dqput(struct dquot *dquot); | 28 | void dqput(struct dquot *dquot); |
30 | int dquot_is_cached(struct super_block *sb, unsigned int id, int type); | ||
31 | int dquot_scan_active(struct super_block *sb, | 29 | int dquot_scan_active(struct super_block *sb, |
32 | int (*fn)(struct dquot *dquot, unsigned long priv), | 30 | int (*fn)(struct dquot *dquot, unsigned long priv), |
33 | unsigned long priv); | 31 | unsigned long priv); |
diff --git a/include/linux/radeonfb.h b/include/linux/radeonfb.h index 5bd8975ed78e..8c4bbdecc44f 100644 --- a/include/linux/radeonfb.h +++ b/include/linux/radeonfb.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define __LINUX_RADEONFB_H__ | 2 | #define __LINUX_RADEONFB_H__ |
3 | 3 | ||
4 | #include <asm/ioctl.h> | 4 | #include <asm/ioctl.h> |
5 | #include <asm/types.h> | 5 | #include <linux/types.h> |
6 | 6 | ||
7 | #define ATY_RADEON_LCD_ON 0x00000001 | 7 | #define ATY_RADEON_LCD_ON 0x00000001 |
8 | #define ATY_RADEON_CRT_ON 0x00000002 | 8 | #define ATY_RADEON_CRT_ON 0x00000002 |
diff --git a/include/linux/res_counter.h b/include/linux/res_counter.h index dede0a2cfc45..4c5bcf6ca7e8 100644 --- a/include/linux/res_counter.h +++ b/include/linux/res_counter.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * | 9 | * |
10 | * Author: Pavel Emelianov <xemul@openvz.org> | 10 | * Author: Pavel Emelianov <xemul@openvz.org> |
11 | * | 11 | * |
12 | * See Documentation/controllers/resource_counter.txt for more | 12 | * See Documentation/cgroups/resource_counter.txt for more |
13 | * info about what this counter is. | 13 | * info about what this counter is. |
14 | */ | 14 | */ |
15 | 15 | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index 4cae9b81a1f8..02e16d207304 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -293,6 +293,9 @@ extern void sched_show_task(struct task_struct *p); | |||
293 | extern void softlockup_tick(void); | 293 | extern void softlockup_tick(void); |
294 | extern void touch_softlockup_watchdog(void); | 294 | extern void touch_softlockup_watchdog(void); |
295 | extern void touch_all_softlockup_watchdogs(void); | 295 | extern void touch_all_softlockup_watchdogs(void); |
296 | extern int proc_dosoftlockup_thresh(struct ctl_table *table, int write, | ||
297 | struct file *filp, void __user *buffer, | ||
298 | size_t *lenp, loff_t *ppos); | ||
296 | extern unsigned int softlockup_panic; | 299 | extern unsigned int softlockup_panic; |
297 | extern unsigned long sysctl_hung_task_check_count; | 300 | extern unsigned long sysctl_hung_task_check_count; |
298 | extern unsigned long sysctl_hung_task_timeout_secs; | 301 | extern unsigned long sysctl_hung_task_timeout_secs; |
@@ -450,6 +453,7 @@ struct task_cputime { | |||
450 | cputime_t utime; | 453 | cputime_t utime; |
451 | cputime_t stime; | 454 | cputime_t stime; |
452 | unsigned long long sum_exec_runtime; | 455 | unsigned long long sum_exec_runtime; |
456 | spinlock_t lock; | ||
453 | }; | 457 | }; |
454 | /* Alternate field names when used to cache expirations. */ | 458 | /* Alternate field names when used to cache expirations. */ |
455 | #define prof_exp stime | 459 | #define prof_exp stime |
@@ -465,7 +469,7 @@ struct task_cputime { | |||
465 | * used for thread group CPU clock calculations. | 469 | * used for thread group CPU clock calculations. |
466 | */ | 470 | */ |
467 | struct thread_group_cputime { | 471 | struct thread_group_cputime { |
468 | struct task_cputime *totals; | 472 | struct task_cputime totals; |
469 | }; | 473 | }; |
470 | 474 | ||
471 | /* | 475 | /* |
@@ -2180,24 +2184,30 @@ static inline int spin_needbreak(spinlock_t *lock) | |||
2180 | * Thread group CPU time accounting. | 2184 | * Thread group CPU time accounting. |
2181 | */ | 2185 | */ |
2182 | 2186 | ||
2183 | extern int thread_group_cputime_alloc(struct task_struct *); | 2187 | static inline |
2184 | extern void thread_group_cputime(struct task_struct *, struct task_cputime *); | 2188 | void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times) |
2185 | |||
2186 | static inline void thread_group_cputime_init(struct signal_struct *sig) | ||
2187 | { | 2189 | { |
2188 | sig->cputime.totals = NULL; | 2190 | struct task_cputime *totals = &tsk->signal->cputime.totals; |
2191 | unsigned long flags; | ||
2192 | |||
2193 | spin_lock_irqsave(&totals->lock, flags); | ||
2194 | *times = *totals; | ||
2195 | spin_unlock_irqrestore(&totals->lock, flags); | ||
2189 | } | 2196 | } |
2190 | 2197 | ||
2191 | static inline int thread_group_cputime_clone_thread(struct task_struct *curr) | 2198 | static inline void thread_group_cputime_init(struct signal_struct *sig) |
2192 | { | 2199 | { |
2193 | if (curr->signal->cputime.totals) | 2200 | sig->cputime.totals = (struct task_cputime){ |
2194 | return 0; | 2201 | .utime = cputime_zero, |
2195 | return thread_group_cputime_alloc(curr); | 2202 | .stime = cputime_zero, |
2203 | .sum_exec_runtime = 0, | ||
2204 | }; | ||
2205 | |||
2206 | spin_lock_init(&sig->cputime.totals.lock); | ||
2196 | } | 2207 | } |
2197 | 2208 | ||
2198 | static inline void thread_group_cputime_free(struct signal_struct *sig) | 2209 | static inline void thread_group_cputime_free(struct signal_struct *sig) |
2199 | { | 2210 | { |
2200 | free_percpu(sig->cputime.totals); | ||
2201 | } | 2211 | } |
2202 | 2212 | ||
2203 | /* | 2213 | /* |
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h index ba09fe88adda..7d3822243074 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h | |||
@@ -197,7 +197,9 @@ extern int usbnet_nway_reset(struct net_device *net); | |||
197 | #define devdbg(usbnet, fmt, arg...) \ | 197 | #define devdbg(usbnet, fmt, arg...) \ |
198 | printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , ## arg) | 198 | printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , ## arg) |
199 | #else | 199 | #else |
200 | #define devdbg(usbnet, fmt, arg...) do {} while(0) | 200 | #define devdbg(usbnet, fmt, arg...) \ |
201 | ({ if (0) printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , \ | ||
202 | ## arg); 0; }) | ||
201 | #endif | 203 | #endif |
202 | 204 | ||
203 | #define deverr(usbnet, fmt, arg...) \ | 205 | #define deverr(usbnet, fmt, arg...) \ |
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index b36291130f22..3cd51e579ab1 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h | |||
@@ -118,12 +118,24 @@ struct execute_work { | |||
118 | init_timer(&(_work)->timer); \ | 118 | init_timer(&(_work)->timer); \ |
119 | } while (0) | 119 | } while (0) |
120 | 120 | ||
121 | #define INIT_DELAYED_WORK_ON_STACK(_work, _func) \ | ||
122 | do { \ | ||
123 | INIT_WORK(&(_work)->work, (_func)); \ | ||
124 | init_timer_on_stack(&(_work)->timer); \ | ||
125 | } while (0) | ||
126 | |||
121 | #define INIT_DELAYED_WORK_DEFERRABLE(_work, _func) \ | 127 | #define INIT_DELAYED_WORK_DEFERRABLE(_work, _func) \ |
122 | do { \ | 128 | do { \ |
123 | INIT_WORK(&(_work)->work, (_func)); \ | 129 | INIT_WORK(&(_work)->work, (_func)); \ |
124 | init_timer_deferrable(&(_work)->timer); \ | 130 | init_timer_deferrable(&(_work)->timer); \ |
125 | } while (0) | 131 | } while (0) |
126 | 132 | ||
133 | #define INIT_DELAYED_WORK_ON_STACK(_work, _func) \ | ||
134 | do { \ | ||
135 | INIT_WORK(&(_work)->work, (_func)); \ | ||
136 | init_timer_on_stack(&(_work)->timer); \ | ||
137 | } while (0) | ||
138 | |||
127 | /** | 139 | /** |
128 | * work_pending - Find out whether a work item is currently pending | 140 | * work_pending - Find out whether a work item is currently pending |
129 | * @work: The work item in question | 141 | * @work: The work item in question |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index b3bd00a9d992..559422fc0943 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -322,7 +322,6 @@ struct ieee80211_tx_rate { | |||
322 | * @control: union for control data | 322 | * @control: union for control data |
323 | * @status: union for status data | 323 | * @status: union for status data |
324 | * @driver_data: array of driver_data pointers | 324 | * @driver_data: array of driver_data pointers |
325 | * @retry_count: number of retries | ||
326 | * @ampdu_ack_len: number of aggregated frames. | 325 | * @ampdu_ack_len: number of aggregated frames. |
327 | * relevant only if IEEE80211_TX_STATUS_AMPDU was set. | 326 | * relevant only if IEEE80211_TX_STATUS_AMPDU was set. |
328 | * @ampdu_ack_map: block ack bit map for the aggregation. | 327 | * @ampdu_ack_map: block ack bit map for the aggregation. |
diff --git a/include/net/sctp/checksum.h b/include/net/sctp/checksum.h index b799fb21519a..2fec3c366e81 100644 --- a/include/net/sctp/checksum.h +++ b/include/net/sctp/checksum.h | |||
@@ -79,5 +79,5 @@ static inline __be32 sctp_update_cksum(__u8 *buffer, __u16 length, __be32 crc32) | |||
79 | 79 | ||
80 | static inline __be32 sctp_end_cksum(__be32 crc32) | 80 | static inline __be32 sctp_end_cksum(__be32 crc32) |
81 | { | 81 | { |
82 | return ~crc32; | 82 | return (__force __be32)~cpu_to_le32((__force u32)crc32); |
83 | } | 83 | } |
diff --git a/include/scsi/libiscsi_tcp.h b/include/scsi/libiscsi_tcp.h index 83e32f6d7859..9e3182e659db 100644 --- a/include/scsi/libiscsi_tcp.h +++ b/include/scsi/libiscsi_tcp.h | |||
@@ -39,6 +39,7 @@ struct iscsi_segment { | |||
39 | unsigned int total_copied; | 39 | unsigned int total_copied; |
40 | 40 | ||
41 | struct hash_desc *hash; | 41 | struct hash_desc *hash; |
42 | unsigned char padbuf[ISCSI_PAD_LEN]; | ||
42 | unsigned char recv_digest[ISCSI_DIGEST_SIZE]; | 43 | unsigned char recv_digest[ISCSI_DIGEST_SIZE]; |
43 | unsigned char digest[ISCSI_DIGEST_SIZE]; | 44 | unsigned char digest[ISCSI_DIGEST_SIZE]; |
44 | unsigned int digest_len; | 45 | unsigned int digest_len; |
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h index 93a4edb148b5..dfa804958820 100644 --- a/include/sound/soc-dapm.h +++ b/include/sound/soc-dapm.h | |||
@@ -108,7 +108,7 @@ | |||
108 | #define SND_SOC_DAPM_SWITCH_E(wname, wreg, wshift, winvert, wcontrols, \ | 108 | #define SND_SOC_DAPM_SWITCH_E(wname, wreg, wshift, winvert, wcontrols, \ |
109 | wevent, wflags) \ | 109 | wevent, wflags) \ |
110 | { .id = snd_soc_dapm_switch, .name = wname, .reg = wreg, .shift = wshift, \ | 110 | { .id = snd_soc_dapm_switch, .name = wname, .reg = wreg, .shift = wshift, \ |
111 | .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1 \ | 111 | .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1, \ |
112 | .event = wevent, .event_flags = wflags} | 112 | .event = wevent, .event_flags = wflags} |
113 | #define SND_SOC_DAPM_MUX_E(wname, wreg, wshift, winvert, wcontrols, \ | 113 | #define SND_SOC_DAPM_MUX_E(wname, wreg, wshift, winvert, wcontrols, \ |
114 | wevent, wflags) \ | 114 | wevent, wflags) \ |
diff --git a/init/Kconfig b/init/Kconfig index a724a149bf3f..f068071fcc5d 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -238,6 +238,98 @@ config AUDIT_TREE | |||
238 | def_bool y | 238 | def_bool y |
239 | depends on AUDITSYSCALL && INOTIFY | 239 | depends on AUDITSYSCALL && INOTIFY |
240 | 240 | ||
241 | menu "RCU Subsystem" | ||
242 | |||
243 | choice | ||
244 | prompt "RCU Implementation" | ||
245 | default CLASSIC_RCU | ||
246 | |||
247 | config CLASSIC_RCU | ||
248 | bool "Classic RCU" | ||
249 | help | ||
250 | This option selects the classic RCU implementation that is | ||
251 | designed for best read-side performance on non-realtime | ||
252 | systems. | ||
253 | |||
254 | Select this option if you are unsure. | ||
255 | |||
256 | config TREE_RCU | ||
257 | bool "Tree-based hierarchical RCU" | ||
258 | help | ||
259 | This option selects the RCU implementation that is | ||
260 | designed for very large SMP system with hundreds or | ||
261 | thousands of CPUs. | ||
262 | |||
263 | config PREEMPT_RCU | ||
264 | bool "Preemptible RCU" | ||
265 | depends on PREEMPT | ||
266 | help | ||
267 | This option reduces the latency of the kernel by making certain | ||
268 | RCU sections preemptible. Normally RCU code is non-preemptible, if | ||
269 | this option is selected then read-only RCU sections become | ||
270 | preemptible. This helps latency, but may expose bugs due to | ||
271 | now-naive assumptions about each RCU read-side critical section | ||
272 | remaining on a given CPU through its execution. | ||
273 | |||
274 | endchoice | ||
275 | |||
276 | config RCU_TRACE | ||
277 | bool "Enable tracing for RCU" | ||
278 | depends on TREE_RCU || PREEMPT_RCU | ||
279 | help | ||
280 | This option provides tracing in RCU which presents stats | ||
281 | in debugfs for debugging RCU implementation. | ||
282 | |||
283 | Say Y here if you want to enable RCU tracing | ||
284 | Say N if you are unsure. | ||
285 | |||
286 | config RCU_FANOUT | ||
287 | int "Tree-based hierarchical RCU fanout value" | ||
288 | range 2 64 if 64BIT | ||
289 | range 2 32 if !64BIT | ||
290 | depends on TREE_RCU | ||
291 | default 64 if 64BIT | ||
292 | default 32 if !64BIT | ||
293 | help | ||
294 | This option controls the fanout of hierarchical implementations | ||
295 | of RCU, allowing RCU to work efficiently on machines with | ||
296 | large numbers of CPUs. This value must be at least the cube | ||
297 | root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit | ||
298 | systems and up to 262,144 for 64-bit systems. | ||
299 | |||
300 | Select a specific number if testing RCU itself. | ||
301 | Take the default if unsure. | ||
302 | |||
303 | config RCU_FANOUT_EXACT | ||
304 | bool "Disable tree-based hierarchical RCU auto-balancing" | ||
305 | depends on TREE_RCU | ||
306 | default n | ||
307 | help | ||
308 | This option forces use of the exact RCU_FANOUT value specified, | ||
309 | regardless of imbalances in the hierarchy. This is useful for | ||
310 | testing RCU itself, and might one day be useful on systems with | ||
311 | strong NUMA behavior. | ||
312 | |||
313 | Without RCU_FANOUT_EXACT, the code will balance the hierarchy. | ||
314 | |||
315 | Say N if unsure. | ||
316 | |||
317 | config TREE_RCU_TRACE | ||
318 | def_bool RCU_TRACE && TREE_RCU | ||
319 | select DEBUG_FS | ||
320 | help | ||
321 | This option provides tracing for the TREE_RCU implementation, | ||
322 | permitting Makefile to trivially select kernel/rcutree_trace.c. | ||
323 | |||
324 | config PREEMPT_RCU_TRACE | ||
325 | def_bool RCU_TRACE && PREEMPT_RCU | ||
326 | select DEBUG_FS | ||
327 | help | ||
328 | This option provides tracing for the PREEMPT_RCU implementation, | ||
329 | permitting Makefile to trivially select kernel/rcupreempt_trace.c. | ||
330 | |||
331 | endmenu # "RCU Subsystem" | ||
332 | |||
241 | config IKCONFIG | 333 | config IKCONFIG |
242 | tristate "Kernel .config support" | 334 | tristate "Kernel .config support" |
243 | ---help--- | 335 | ---help--- |
@@ -323,26 +415,26 @@ config CGROUP_SCHED | |||
323 | This option allows you to create arbitrary task groups | 415 | This option allows you to create arbitrary task groups |
324 | using the "cgroup" pseudo filesystem and control | 416 | using the "cgroup" pseudo filesystem and control |
325 | the cpu bandwidth allocated to each such task group. | 417 | the cpu bandwidth allocated to each such task group. |
326 | Refer to Documentation/cgroups.txt for more information | 418 | Refer to Documentation/cgroups/cgroups.txt for more |
327 | on "cgroup" pseudo filesystem. | 419 | information on "cgroup" pseudo filesystem. |
328 | 420 | ||
329 | endchoice | 421 | endchoice |
330 | 422 | ||
331 | menu "Control Group support" | 423 | menuconfig CGROUPS |
332 | config CGROUPS | 424 | boolean "Control Group support" |
333 | bool "Control Group support" | ||
334 | help | 425 | help |
335 | This option add support for grouping sets of processes together, for | 426 | This option adds support for grouping sets of processes together, for |
336 | use with process control subsystems such as Cpusets, CFS, memory | 427 | use with process control subsystems such as Cpusets, CFS, memory |
337 | controls or device isolation. | 428 | controls or device isolation. |
338 | See | 429 | See |
339 | - Documentation/cpusets.txt (Cpusets) | ||
340 | - Documentation/scheduler/sched-design-CFS.txt (CFS) | 430 | - Documentation/scheduler/sched-design-CFS.txt (CFS) |
341 | - Documentation/cgroups/ (features for grouping, isolation) | 431 | - Documentation/cgroups/ (features for grouping, isolation |
342 | - Documentation/controllers/ (features for resource control) | 432 | and resource control) |
343 | 433 | ||
344 | Say N if unsure. | 434 | Say N if unsure. |
345 | 435 | ||
436 | if CGROUPS | ||
437 | |||
346 | config CGROUP_DEBUG | 438 | config CGROUP_DEBUG |
347 | bool "Example debug cgroup subsystem" | 439 | bool "Example debug cgroup subsystem" |
348 | depends on CGROUPS | 440 | depends on CGROUPS |
@@ -350,24 +442,24 @@ config CGROUP_DEBUG | |||
350 | help | 442 | help |
351 | This option enables a simple cgroup subsystem that | 443 | This option enables a simple cgroup subsystem that |
352 | exports useful debugging information about the cgroups | 444 | exports useful debugging information about the cgroups |
353 | framework | 445 | framework. |
354 | 446 | ||
355 | Say N if unsure | 447 | Say N if unsure. |
356 | 448 | ||
357 | config CGROUP_NS | 449 | config CGROUP_NS |
358 | bool "Namespace cgroup subsystem" | 450 | bool "Namespace cgroup subsystem" |
359 | depends on CGROUPS | 451 | depends on CGROUPS |
360 | help | 452 | help |
361 | Provides a simple namespace cgroup subsystem to | 453 | Provides a simple namespace cgroup subsystem to |
362 | provide hierarchical naming of sets of namespaces, | 454 | provide hierarchical naming of sets of namespaces, |
363 | for instance virtual servers and checkpoint/restart | 455 | for instance virtual servers and checkpoint/restart |
364 | jobs. | 456 | jobs. |
365 | 457 | ||
366 | config CGROUP_FREEZER | 458 | config CGROUP_FREEZER |
367 | bool "control group freezer subsystem" | 459 | bool "Freezer cgroup subsystem" |
368 | depends on CGROUPS | 460 | depends on CGROUPS |
369 | help | 461 | help |
370 | Provides a way to freeze and unfreeze all tasks in a | 462 | Provides a way to freeze and unfreeze all tasks in a |
371 | cgroup. | 463 | cgroup. |
372 | 464 | ||
373 | config CGROUP_DEVICE | 465 | config CGROUP_DEVICE |
@@ -388,18 +480,23 @@ config CPUSETS | |||
388 | 480 | ||
389 | Say N if unsure. | 481 | Say N if unsure. |
390 | 482 | ||
483 | config PROC_PID_CPUSET | ||
484 | bool "Include legacy /proc/<pid>/cpuset file" | ||
485 | depends on CPUSETS | ||
486 | default y | ||
487 | |||
391 | config CGROUP_CPUACCT | 488 | config CGROUP_CPUACCT |
392 | bool "Simple CPU accounting cgroup subsystem" | 489 | bool "Simple CPU accounting cgroup subsystem" |
393 | depends on CGROUPS | 490 | depends on CGROUPS |
394 | help | 491 | help |
395 | Provides a simple Resource Controller for monitoring the | 492 | Provides a simple Resource Controller for monitoring the |
396 | total CPU consumed by the tasks in a cgroup | 493 | total CPU consumed by the tasks in a cgroup. |
397 | 494 | ||
398 | config RESOURCE_COUNTERS | 495 | config RESOURCE_COUNTERS |
399 | bool "Resource counters" | 496 | bool "Resource counters" |
400 | help | 497 | help |
401 | This option enables controller independent resource accounting | 498 | This option enables controller independent resource accounting |
402 | infrastructure that works with cgroups | 499 | infrastructure that works with cgroups. |
403 | depends on CGROUPS | 500 | depends on CGROUPS |
404 | 501 | ||
405 | config CGROUP_MEM_RES_CTLR | 502 | config CGROUP_MEM_RES_CTLR |
@@ -425,9 +522,6 @@ config CGROUP_MEM_RES_CTLR | |||
425 | This config option also selects MM_OWNER config option, which | 522 | This config option also selects MM_OWNER config option, which |
426 | could in turn add some fork/exit overhead. | 523 | could in turn add some fork/exit overhead. |
427 | 524 | ||
428 | config MM_OWNER | ||
429 | bool | ||
430 | |||
431 | config CGROUP_MEM_RES_CTLR_SWAP | 525 | config CGROUP_MEM_RES_CTLR_SWAP |
432 | bool "Memory Resource Controller Swap Extension(EXPERIMENTAL)" | 526 | bool "Memory Resource Controller Swap Extension(EXPERIMENTAL)" |
433 | depends on CGROUP_MEM_RES_CTLR && SWAP && EXPERIMENTAL | 527 | depends on CGROUP_MEM_RES_CTLR && SWAP && EXPERIMENTAL |
@@ -444,8 +538,10 @@ config CGROUP_MEM_RES_CTLR_SWAP | |||
444 | there will be no overhead from this. Even when you set this config=y, | 538 | there will be no overhead from this. Even when you set this config=y, |
445 | if boot option "noswapaccount" is set, swap will not be accounted. | 539 | if boot option "noswapaccount" is set, swap will not be accounted. |
446 | 540 | ||
541 | endif # CGROUPS | ||
447 | 542 | ||
448 | endmenu | 543 | config MM_OWNER |
544 | bool | ||
449 | 545 | ||
450 | config SYSFS_DEPRECATED | 546 | config SYSFS_DEPRECATED |
451 | bool | 547 | bool |
@@ -483,11 +579,6 @@ config SYSFS_DEPRECATED_V2 | |||
483 | if the original kernel, that came with your distribution, has | 579 | if the original kernel, that came with your distribution, has |
484 | this option set to N. | 580 | this option set to N. |
485 | 581 | ||
486 | config PROC_PID_CPUSET | ||
487 | bool "Include legacy /proc/<pid>/cpuset file" | ||
488 | depends on CPUSETS | ||
489 | default y | ||
490 | |||
491 | config RELAY | 582 | config RELAY |
492 | bool "Kernel->user space relay support (formerly relayfs)" | 583 | bool "Kernel->user space relay support (formerly relayfs)" |
493 | help | 584 | help |
@@ -542,6 +633,14 @@ config PID_NS | |||
542 | Unless you want to work with an experimental feature | 633 | Unless you want to work with an experimental feature |
543 | say N here. | 634 | say N here. |
544 | 635 | ||
636 | config NET_NS | ||
637 | bool "Network namespace" | ||
638 | default n | ||
639 | depends on NAMESPACES && EXPERIMENTAL && NET | ||
640 | help | ||
641 | Allow user space to create what appear to be multiple instances | ||
642 | of the network stack. | ||
643 | |||
545 | config BLK_DEV_INITRD | 644 | config BLK_DEV_INITRD |
546 | bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" | 645 | bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" |
547 | depends on BROKEN || !FRV | 646 | depends on BROKEN || !FRV |
@@ -626,13 +725,6 @@ config KALLSYMS_ALL | |||
626 | 725 | ||
627 | Say N. | 726 | Say N. |
628 | 727 | ||
629 | config KALLSYMS_STRIP_GENERATED | ||
630 | bool "Strip machine generated symbols from kallsyms" | ||
631 | depends on KALLSYMS_ALL | ||
632 | default y | ||
633 | help | ||
634 | Say N if you want kallsyms to retain even machine generated symbols. | ||
635 | |||
636 | config KALLSYMS_EXTRA_PASS | 728 | config KALLSYMS_EXTRA_PASS |
637 | bool "Do an extra kallsyms pass" | 729 | bool "Do an extra kallsyms pass" |
638 | depends on KALLSYMS | 730 | depends on KALLSYMS |
@@ -973,90 +1065,3 @@ source "block/Kconfig" | |||
973 | config PREEMPT_NOTIFIERS | 1065 | config PREEMPT_NOTIFIERS |
974 | bool | 1066 | bool |
975 | 1067 | ||
976 | choice | ||
977 | prompt "RCU Implementation" | ||
978 | default CLASSIC_RCU | ||
979 | |||
980 | config CLASSIC_RCU | ||
981 | bool "Classic RCU" | ||
982 | help | ||
983 | This option selects the classic RCU implementation that is | ||
984 | designed for best read-side performance on non-realtime | ||
985 | systems. | ||
986 | |||
987 | Select this option if you are unsure. | ||
988 | |||
989 | config TREE_RCU | ||
990 | bool "Tree-based hierarchical RCU" | ||
991 | help | ||
992 | This option selects the RCU implementation that is | ||
993 | designed for very large SMP system with hundreds or | ||
994 | thousands of CPUs. | ||
995 | |||
996 | config PREEMPT_RCU | ||
997 | bool "Preemptible RCU" | ||
998 | depends on PREEMPT | ||
999 | help | ||
1000 | This option reduces the latency of the kernel by making certain | ||
1001 | RCU sections preemptible. Normally RCU code is non-preemptible, if | ||
1002 | this option is selected then read-only RCU sections become | ||
1003 | preemptible. This helps latency, but may expose bugs due to | ||
1004 | now-naive assumptions about each RCU read-side critical section | ||
1005 | remaining on a given CPU through its execution. | ||
1006 | |||
1007 | endchoice | ||
1008 | |||
1009 | config RCU_TRACE | ||
1010 | bool "Enable tracing for RCU" | ||
1011 | depends on TREE_RCU || PREEMPT_RCU | ||
1012 | help | ||
1013 | This option provides tracing in RCU which presents stats | ||
1014 | in debugfs for debugging RCU implementation. | ||
1015 | |||
1016 | Say Y here if you want to enable RCU tracing | ||
1017 | Say N if you are unsure. | ||
1018 | |||
1019 | config RCU_FANOUT | ||
1020 | int "Tree-based hierarchical RCU fanout value" | ||
1021 | range 2 64 if 64BIT | ||
1022 | range 2 32 if !64BIT | ||
1023 | depends on TREE_RCU | ||
1024 | default 64 if 64BIT | ||
1025 | default 32 if !64BIT | ||
1026 | help | ||
1027 | This option controls the fanout of hierarchical implementations | ||
1028 | of RCU, allowing RCU to work efficiently on machines with | ||
1029 | large numbers of CPUs. This value must be at least the cube | ||
1030 | root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit | ||
1031 | systems and up to 262,144 for 64-bit systems. | ||
1032 | |||
1033 | Select a specific number if testing RCU itself. | ||
1034 | Take the default if unsure. | ||
1035 | |||
1036 | config RCU_FANOUT_EXACT | ||
1037 | bool "Disable tree-based hierarchical RCU auto-balancing" | ||
1038 | depends on TREE_RCU | ||
1039 | default n | ||
1040 | help | ||
1041 | This option forces use of the exact RCU_FANOUT value specified, | ||
1042 | regardless of imbalances in the hierarchy. This is useful for | ||
1043 | testing RCU itself, and might one day be useful on systems with | ||
1044 | strong NUMA behavior. | ||
1045 | |||
1046 | Without RCU_FANOUT_EXACT, the code will balance the hierarchy. | ||
1047 | |||
1048 | Say N if unsure. | ||
1049 | |||
1050 | config TREE_RCU_TRACE | ||
1051 | def_bool RCU_TRACE && TREE_RCU | ||
1052 | select DEBUG_FS | ||
1053 | help | ||
1054 | This option provides tracing for the TREE_RCU implementation, | ||
1055 | permitting Makefile to trivially select kernel/rcutree_trace.c. | ||
1056 | |||
1057 | config PREEMPT_RCU_TRACE | ||
1058 | def_bool RCU_TRACE && PREEMPT_RCU | ||
1059 | select DEBUG_FS | ||
1060 | help | ||
1061 | This option provides tracing for the PREEMPT_RCU implementation, | ||
1062 | permitting Makefile to trivially select kernel/rcupreempt_trace.c. | ||
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 647c77a88fcb..a85678865c5e 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
@@ -568,7 +568,7 @@ update_domain_attr_tree(struct sched_domain_attr *dattr, struct cpuset *c) | |||
568 | * load balancing domains (sched domains) as specified by that partial | 568 | * load balancing domains (sched domains) as specified by that partial |
569 | * partition. | 569 | * partition. |
570 | * | 570 | * |
571 | * See "What is sched_load_balance" in Documentation/cpusets.txt | 571 | * See "What is sched_load_balance" in Documentation/cgroups/cpusets.txt |
572 | * for a background explanation of this. | 572 | * for a background explanation of this. |
573 | * | 573 | * |
574 | * Does not return errors, on the theory that the callers of this | 574 | * Does not return errors, on the theory that the callers of this |
diff --git a/kernel/dma-coherent.c b/kernel/dma-coherent.c index 038707404b76..962a3b574f21 100644 --- a/kernel/dma-coherent.c +++ b/kernel/dma-coherent.c | |||
@@ -98,7 +98,7 @@ EXPORT_SYMBOL(dma_mark_declared_memory_occupied); | |||
98 | * @size: size of requested memory area | 98 | * @size: size of requested memory area |
99 | * @dma_handle: This will be filled with the correct dma handle | 99 | * @dma_handle: This will be filled with the correct dma handle |
100 | * @ret: This pointer will be filled with the virtual address | 100 | * @ret: This pointer will be filled with the virtual address |
101 | * to allocated area. | 101 | * to allocated area. |
102 | * | 102 | * |
103 | * This function should be only called from per-arch dma_alloc_coherent() | 103 | * This function should be only called from per-arch dma_alloc_coherent() |
104 | * to support allocation from per-device coherent memory pools. | 104 | * to support allocation from per-device coherent memory pools. |
@@ -118,31 +118,32 @@ int dma_alloc_from_coherent(struct device *dev, ssize_t size, | |||
118 | mem = dev->dma_mem; | 118 | mem = dev->dma_mem; |
119 | if (!mem) | 119 | if (!mem) |
120 | return 0; | 120 | return 0; |
121 | if (unlikely(size > mem->size)) | 121 | |
122 | return 0; | 122 | *ret = NULL; |
123 | |||
124 | if (unlikely(size > (mem->size << PAGE_SHIFT))) | ||
125 | goto err; | ||
123 | 126 | ||
124 | pageno = bitmap_find_free_region(mem->bitmap, mem->size, order); | 127 | pageno = bitmap_find_free_region(mem->bitmap, mem->size, order); |
125 | if (pageno >= 0) { | 128 | if (unlikely(pageno < 0)) |
126 | /* | 129 | goto err; |
127 | * Memory was found in the per-device arena. | 130 | |
128 | */ | 131 | /* |
129 | *dma_handle = mem->device_base + (pageno << PAGE_SHIFT); | 132 | * Memory was found in the per-device area. |
130 | *ret = mem->virt_base + (pageno << PAGE_SHIFT); | 133 | */ |
131 | memset(*ret, 0, size); | 134 | *dma_handle = mem->device_base + (pageno << PAGE_SHIFT); |
132 | } else if (mem->flags & DMA_MEMORY_EXCLUSIVE) { | 135 | *ret = mem->virt_base + (pageno << PAGE_SHIFT); |
133 | /* | 136 | memset(*ret, 0, size); |
134 | * The per-device arena is exhausted and we are not | 137 | |
135 | * permitted to fall back to generic memory. | ||
136 | */ | ||
137 | *ret = NULL; | ||
138 | } else { | ||
139 | /* | ||
140 | * The per-device arena is exhausted and we are | ||
141 | * permitted to fall back to generic memory. | ||
142 | */ | ||
143 | return 0; | ||
144 | } | ||
145 | return 1; | 138 | return 1; |
139 | |||
140 | err: | ||
141 | /* | ||
142 | * In the case where the allocation can not be satisfied from the | ||
143 | * per-device area, try to fall back to generic memory if the | ||
144 | * constraints allow it. | ||
145 | */ | ||
146 | return mem->flags & DMA_MEMORY_EXCLUSIVE; | ||
146 | } | 147 | } |
147 | EXPORT_SYMBOL(dma_alloc_from_coherent); | 148 | EXPORT_SYMBOL(dma_alloc_from_coherent); |
148 | 149 | ||
diff --git a/kernel/fork.c b/kernel/fork.c index bf0cef8bbdf2..242a706e7721 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -817,17 +817,17 @@ static void posix_cpu_timers_init_group(struct signal_struct *sig) | |||
817 | static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) | 817 | static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) |
818 | { | 818 | { |
819 | struct signal_struct *sig; | 819 | struct signal_struct *sig; |
820 | int ret; | ||
821 | 820 | ||
822 | if (clone_flags & CLONE_THREAD) { | 821 | if (clone_flags & CLONE_THREAD) { |
823 | ret = thread_group_cputime_clone_thread(current); | 822 | atomic_inc(¤t->signal->count); |
824 | if (likely(!ret)) { | 823 | atomic_inc(¤t->signal->live); |
825 | atomic_inc(¤t->signal->count); | 824 | return 0; |
826 | atomic_inc(¤t->signal->live); | ||
827 | } | ||
828 | return ret; | ||
829 | } | 825 | } |
830 | sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL); | 826 | sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL); |
827 | |||
828 | if (sig) | ||
829 | posix_cpu_timers_init_group(sig); | ||
830 | |||
831 | tsk->signal = sig; | 831 | tsk->signal = sig; |
832 | if (!sig) | 832 | if (!sig) |
833 | return -ENOMEM; | 833 | return -ENOMEM; |
@@ -864,8 +864,6 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) | |||
864 | memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim); | 864 | memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim); |
865 | task_unlock(current->group_leader); | 865 | task_unlock(current->group_leader); |
866 | 866 | ||
867 | posix_cpu_timers_init_group(sig); | ||
868 | |||
869 | acct_init_pacct(&sig->pacct); | 867 | acct_init_pacct(&sig->pacct); |
870 | 868 | ||
871 | tty_audit_fork(sig); | 869 | tty_audit_fork(sig); |
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 2dc30c59c5fd..f33afb0407bc 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
@@ -614,7 +614,9 @@ void clock_was_set(void) | |||
614 | */ | 614 | */ |
615 | void hres_timers_resume(void) | 615 | void hres_timers_resume(void) |
616 | { | 616 | { |
617 | /* Retrigger the CPU local events: */ | 617 | WARN_ONCE(!irqs_disabled(), |
618 | KERN_INFO "hres_timers_resume() called with IRQs enabled!"); | ||
619 | |||
618 | retrigger_next_event(NULL); | 620 | retrigger_next_event(NULL); |
619 | } | 621 | } |
620 | 622 | ||
diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index e694afa0eb8c..7b8b0f21a5b1 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c | |||
@@ -30,19 +30,20 @@ | |||
30 | #define all_var 0 | 30 | #define all_var 0 |
31 | #endif | 31 | #endif |
32 | 32 | ||
33 | extern const unsigned long kallsyms_addresses[]; | 33 | /* These will be re-linked against their real values during the second link stage */ |
34 | extern const u8 kallsyms_names[]; | 34 | extern const unsigned long kallsyms_addresses[] __attribute__((weak)); |
35 | extern const u8 kallsyms_names[] __attribute__((weak)); | ||
35 | 36 | ||
36 | /* tell the compiler that the count isn't in the small data section if the arch | 37 | /* tell the compiler that the count isn't in the small data section if the arch |
37 | * has one (eg: FRV) | 38 | * has one (eg: FRV) |
38 | */ | 39 | */ |
39 | extern const unsigned long kallsyms_num_syms | 40 | extern const unsigned long kallsyms_num_syms |
40 | __attribute__((__section__(".rodata"))); | 41 | __attribute__((weak, section(".rodata"))); |
41 | 42 | ||
42 | extern const u8 kallsyms_token_table[]; | 43 | extern const u8 kallsyms_token_table[] __attribute__((weak)); |
43 | extern const u16 kallsyms_token_index[]; | 44 | extern const u16 kallsyms_token_index[] __attribute__((weak)); |
44 | 45 | ||
45 | extern const unsigned long kallsyms_markers[]; | 46 | extern const unsigned long kallsyms_markers[] __attribute__((weak)); |
46 | 47 | ||
47 | static inline int is_kernel_inittext(unsigned long addr) | 48 | static inline int is_kernel_inittext(unsigned long addr) |
48 | { | 49 | { |
@@ -167,6 +168,9 @@ static unsigned long get_symbol_pos(unsigned long addr, | |||
167 | unsigned long symbol_start = 0, symbol_end = 0; | 168 | unsigned long symbol_start = 0, symbol_end = 0; |
168 | unsigned long i, low, high, mid; | 169 | unsigned long i, low, high, mid; |
169 | 170 | ||
171 | /* This kernel should never had been booted. */ | ||
172 | BUG_ON(!kallsyms_addresses); | ||
173 | |||
170 | /* do a binary search on the sorted kallsyms_addresses array */ | 174 | /* do a binary search on the sorted kallsyms_addresses array */ |
171 | low = 0; | 175 | low = 0; |
172 | high = kallsyms_num_syms; | 176 | high = kallsyms_num_syms; |
diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 1b9cbdc0127a..7ba8cd9845cb 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c | |||
@@ -123,7 +123,7 @@ static int collect_garbage_slots(void); | |||
123 | static int __kprobes check_safety(void) | 123 | static int __kprobes check_safety(void) |
124 | { | 124 | { |
125 | int ret = 0; | 125 | int ret = 0; |
126 | #if defined(CONFIG_PREEMPT) && defined(CONFIG_PM) | 126 | #if defined(CONFIG_PREEMPT) && defined(CONFIG_FREEZER) |
127 | ret = freeze_processes(); | 127 | ret = freeze_processes(); |
128 | if (ret == 0) { | 128 | if (ret == 0) { |
129 | struct task_struct *p, *q; | 129 | struct task_struct *p, *q; |
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index 157de3a47832..fa07da94d7be 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c | |||
@@ -10,76 +10,6 @@ | |||
10 | #include <linux/kernel_stat.h> | 10 | #include <linux/kernel_stat.h> |
11 | 11 | ||
12 | /* | 12 | /* |
13 | * Allocate the thread_group_cputime structure appropriately and fill in the | ||
14 | * current values of the fields. Called from copy_signal() via | ||
15 | * thread_group_cputime_clone_thread() when adding a second or subsequent | ||
16 | * thread to a thread group. Assumes interrupts are enabled when called. | ||
17 | */ | ||
18 | int thread_group_cputime_alloc(struct task_struct *tsk) | ||
19 | { | ||
20 | struct signal_struct *sig = tsk->signal; | ||
21 | struct task_cputime *cputime; | ||
22 | |||
23 | /* | ||
24 | * If we have multiple threads and we don't already have a | ||
25 | * per-CPU task_cputime struct (checked in the caller), allocate | ||
26 | * one and fill it in with the times accumulated so far. We may | ||
27 | * race with another thread so recheck after we pick up the sighand | ||
28 | * lock. | ||
29 | */ | ||
30 | cputime = alloc_percpu(struct task_cputime); | ||
31 | if (cputime == NULL) | ||
32 | return -ENOMEM; | ||
33 | spin_lock_irq(&tsk->sighand->siglock); | ||
34 | if (sig->cputime.totals) { | ||
35 | spin_unlock_irq(&tsk->sighand->siglock); | ||
36 | free_percpu(cputime); | ||
37 | return 0; | ||
38 | } | ||
39 | sig->cputime.totals = cputime; | ||
40 | cputime = per_cpu_ptr(sig->cputime.totals, smp_processor_id()); | ||
41 | cputime->utime = tsk->utime; | ||
42 | cputime->stime = tsk->stime; | ||
43 | cputime->sum_exec_runtime = tsk->se.sum_exec_runtime; | ||
44 | spin_unlock_irq(&tsk->sighand->siglock); | ||
45 | return 0; | ||
46 | } | ||
47 | |||
48 | /** | ||
49 | * thread_group_cputime - Sum the thread group time fields across all CPUs. | ||
50 | * | ||
51 | * @tsk: The task we use to identify the thread group. | ||
52 | * @times: task_cputime structure in which we return the summed fields. | ||
53 | * | ||
54 | * Walk the list of CPUs to sum the per-CPU time fields in the thread group | ||
55 | * time structure. | ||
56 | */ | ||
57 | void thread_group_cputime( | ||
58 | struct task_struct *tsk, | ||
59 | struct task_cputime *times) | ||
60 | { | ||
61 | struct task_cputime *totals, *tot; | ||
62 | int i; | ||
63 | |||
64 | totals = tsk->signal->cputime.totals; | ||
65 | if (!totals) { | ||
66 | times->utime = tsk->utime; | ||
67 | times->stime = tsk->stime; | ||
68 | times->sum_exec_runtime = tsk->se.sum_exec_runtime; | ||
69 | return; | ||
70 | } | ||
71 | |||
72 | times->stime = times->utime = cputime_zero; | ||
73 | times->sum_exec_runtime = 0; | ||
74 | for_each_possible_cpu(i) { | ||
75 | tot = per_cpu_ptr(totals, i); | ||
76 | times->utime = cputime_add(times->utime, tot->utime); | ||
77 | times->stime = cputime_add(times->stime, tot->stime); | ||
78 | times->sum_exec_runtime += tot->sum_exec_runtime; | ||
79 | } | ||
80 | } | ||
81 | |||
82 | /* | ||
83 | * Called after updating RLIMIT_CPU to set timer expiration if necessary. | 13 | * Called after updating RLIMIT_CPU to set timer expiration if necessary. |
84 | */ | 14 | */ |
85 | void update_rlimit_cpu(unsigned long rlim_new) | 15 | void update_rlimit_cpu(unsigned long rlim_new) |
diff --git a/kernel/power/Makefile b/kernel/power/Makefile index 597823b5b700..d7a10167a25b 100644 --- a/kernel/power/Makefile +++ b/kernel/power/Makefile | |||
@@ -4,7 +4,8 @@ EXTRA_CFLAGS += -DDEBUG | |||
4 | endif | 4 | endif |
5 | 5 | ||
6 | obj-y := main.o | 6 | obj-y := main.o |
7 | obj-$(CONFIG_PM_SLEEP) += process.o console.o | 7 | obj-$(CONFIG_PM_SLEEP) += console.o |
8 | obj-$(CONFIG_FREEZER) += process.o | ||
8 | obj-$(CONFIG_HIBERNATION) += swsusp.o disk.o snapshot.o swap.o user.o | 9 | obj-$(CONFIG_HIBERNATION) += swsusp.o disk.o snapshot.o swap.o user.o |
9 | 10 | ||
10 | obj-$(CONFIG_MAGIC_SYSRQ) += poweroff.o | 11 | obj-$(CONFIG_MAGIC_SYSRQ) += poweroff.o |
diff --git a/kernel/rcuclassic.c b/kernel/rcuclassic.c index 490934fc7ac3..bd5a9003497c 100644 --- a/kernel/rcuclassic.c +++ b/kernel/rcuclassic.c | |||
@@ -716,7 +716,7 @@ void rcu_check_callbacks(int cpu, int user) | |||
716 | raise_rcu_softirq(); | 716 | raise_rcu_softirq(); |
717 | } | 717 | } |
718 | 718 | ||
719 | static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, | 719 | static void __cpuinit rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, |
720 | struct rcu_data *rdp) | 720 | struct rcu_data *rdp) |
721 | { | 721 | { |
722 | unsigned long flags; | 722 | unsigned long flags; |
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index f2d8638e6c60..b2fd602a6f6f 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -1314,7 +1314,7 @@ int rcu_needs_cpu(int cpu) | |||
1314 | * access due to the fact that this CPU cannot possibly have any RCU | 1314 | * access due to the fact that this CPU cannot possibly have any RCU |
1315 | * callbacks in flight yet. | 1315 | * callbacks in flight yet. |
1316 | */ | 1316 | */ |
1317 | static void | 1317 | static void __cpuinit |
1318 | rcu_init_percpu_data(int cpu, struct rcu_state *rsp) | 1318 | rcu_init_percpu_data(int cpu, struct rcu_state *rsp) |
1319 | { | 1319 | { |
1320 | unsigned long flags; | 1320 | unsigned long flags; |
diff --git a/kernel/relay.c b/kernel/relay.c index 09ac2008f77b..9d79b7854fa6 100644 --- a/kernel/relay.c +++ b/kernel/relay.c | |||
@@ -663,8 +663,10 @@ int relay_late_setup_files(struct rchan *chan, | |||
663 | 663 | ||
664 | mutex_lock(&relay_channels_mutex); | 664 | mutex_lock(&relay_channels_mutex); |
665 | /* Is chan already set up? */ | 665 | /* Is chan already set up? */ |
666 | if (unlikely(chan->has_base_filename)) | 666 | if (unlikely(chan->has_base_filename)) { |
667 | mutex_unlock(&relay_channels_mutex); | ||
667 | return -EEXIST; | 668 | return -EEXIST; |
669 | } | ||
668 | chan->has_base_filename = 1; | 670 | chan->has_base_filename = 1; |
669 | chan->parent = parent; | 671 | chan->parent = parent; |
670 | curr_cpu = get_cpu(); | 672 | curr_cpu = get_cpu(); |
diff --git a/kernel/resource.c b/kernel/resource.c index ca6a1536b205..fd5d7d574bb9 100644 --- a/kernel/resource.c +++ b/kernel/resource.c | |||
@@ -620,6 +620,7 @@ resource_size_t resource_alignment(struct resource *res) | |||
620 | * @start: resource start address | 620 | * @start: resource start address |
621 | * @n: resource region size | 621 | * @n: resource region size |
622 | * @name: reserving caller's ID string | 622 | * @name: reserving caller's ID string |
623 | * @flags: IO resource flags | ||
623 | */ | 624 | */ |
624 | struct resource * __request_region(struct resource *parent, | 625 | struct resource * __request_region(struct resource *parent, |
625 | resource_size_t start, resource_size_t n, | 626 | resource_size_t start, resource_size_t n, |
diff --git a/kernel/sched.c b/kernel/sched.c index eb1931eef587..52bbf1c842a8 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -1323,8 +1323,8 @@ static inline void update_load_sub(struct load_weight *lw, unsigned long dec) | |||
1323 | * slice expiry etc. | 1323 | * slice expiry etc. |
1324 | */ | 1324 | */ |
1325 | 1325 | ||
1326 | #define WEIGHT_IDLEPRIO 2 | 1326 | #define WEIGHT_IDLEPRIO 3 |
1327 | #define WMULT_IDLEPRIO (1 << 31) | 1327 | #define WMULT_IDLEPRIO 1431655765 |
1328 | 1328 | ||
1329 | /* | 1329 | /* |
1330 | * Nice levels are multiplicative, with a gentle 10% change for every | 1330 | * Nice levels are multiplicative, with a gentle 10% change for every |
@@ -4440,7 +4440,7 @@ void __kprobes sub_preempt_count(int val) | |||
4440 | /* | 4440 | /* |
4441 | * Underflow? | 4441 | * Underflow? |
4442 | */ | 4442 | */ |
4443 | if (DEBUG_LOCKS_WARN_ON(val > preempt_count() - (!!kernel_locked()))) | 4443 | if (DEBUG_LOCKS_WARN_ON(val > preempt_count())) |
4444 | return; | 4444 | return; |
4445 | /* | 4445 | /* |
4446 | * Is the spinlock portion underflowing? | 4446 | * Is the spinlock portion underflowing? |
@@ -9050,6 +9050,13 @@ static int tg_schedulable(struct task_group *tg, void *data) | |||
9050 | runtime = d->rt_runtime; | 9050 | runtime = d->rt_runtime; |
9051 | } | 9051 | } |
9052 | 9052 | ||
9053 | #ifdef CONFIG_USER_SCHED | ||
9054 | if (tg == &root_task_group) { | ||
9055 | period = global_rt_period(); | ||
9056 | runtime = global_rt_runtime(); | ||
9057 | } | ||
9058 | #endif | ||
9059 | |||
9053 | /* | 9060 | /* |
9054 | * Cannot have more runtime than the period. | 9061 | * Cannot have more runtime than the period. |
9055 | */ | 9062 | */ |
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 8e1352c75557..5cc1c162044f 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -283,7 +283,7 @@ static void update_min_vruntime(struct cfs_rq *cfs_rq) | |||
283 | struct sched_entity, | 283 | struct sched_entity, |
284 | run_node); | 284 | run_node); |
285 | 285 | ||
286 | if (vruntime == cfs_rq->min_vruntime) | 286 | if (!cfs_rq->curr) |
287 | vruntime = se->vruntime; | 287 | vruntime = se->vruntime; |
288 | else | 288 | else |
289 | vruntime = min_vruntime(vruntime, se->vruntime); | 289 | vruntime = min_vruntime(vruntime, se->vruntime); |
@@ -429,7 +429,10 @@ static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) | |||
429 | u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq); | 429 | u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq); |
430 | 430 | ||
431 | for_each_sched_entity(se) { | 431 | for_each_sched_entity(se) { |
432 | struct load_weight *load = &cfs_rq->load; | 432 | struct load_weight *load; |
433 | |||
434 | cfs_rq = cfs_rq_of(se); | ||
435 | load = &cfs_rq->load; | ||
433 | 436 | ||
434 | if (unlikely(!se->on_rq)) { | 437 | if (unlikely(!se->on_rq)) { |
435 | struct load_weight lw = cfs_rq->load; | 438 | struct load_weight lw = cfs_rq->load; |
@@ -677,9 +680,13 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) | |||
677 | unsigned long thresh = sysctl_sched_latency; | 680 | unsigned long thresh = sysctl_sched_latency; |
678 | 681 | ||
679 | /* | 682 | /* |
680 | * convert the sleeper threshold into virtual time | 683 | * Convert the sleeper threshold into virtual time. |
684 | * SCHED_IDLE is a special sub-class. We care about | ||
685 | * fairness only relative to other SCHED_IDLE tasks, | ||
686 | * all of which have the same weight. | ||
681 | */ | 687 | */ |
682 | if (sched_feat(NORMALIZED_SLEEPER)) | 688 | if (sched_feat(NORMALIZED_SLEEPER) && |
689 | task_of(se)->policy != SCHED_IDLE) | ||
683 | thresh = calc_delta_fair(thresh, se); | 690 | thresh = calc_delta_fair(thresh, se); |
684 | 691 | ||
685 | vruntime -= thresh; | 692 | vruntime -= thresh; |
@@ -1340,14 +1347,18 @@ wakeup_preempt_entity(struct sched_entity *curr, struct sched_entity *se) | |||
1340 | 1347 | ||
1341 | static void set_last_buddy(struct sched_entity *se) | 1348 | static void set_last_buddy(struct sched_entity *se) |
1342 | { | 1349 | { |
1343 | for_each_sched_entity(se) | 1350 | if (likely(task_of(se)->policy != SCHED_IDLE)) { |
1344 | cfs_rq_of(se)->last = se; | 1351 | for_each_sched_entity(se) |
1352 | cfs_rq_of(se)->last = se; | ||
1353 | } | ||
1345 | } | 1354 | } |
1346 | 1355 | ||
1347 | static void set_next_buddy(struct sched_entity *se) | 1356 | static void set_next_buddy(struct sched_entity *se) |
1348 | { | 1357 | { |
1349 | for_each_sched_entity(se) | 1358 | if (likely(task_of(se)->policy != SCHED_IDLE)) { |
1350 | cfs_rq_of(se)->next = se; | 1359 | for_each_sched_entity(se) |
1360 | cfs_rq_of(se)->next = se; | ||
1361 | } | ||
1351 | } | 1362 | } |
1352 | 1363 | ||
1353 | /* | 1364 | /* |
@@ -1393,12 +1404,18 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int sync) | |||
1393 | return; | 1404 | return; |
1394 | 1405 | ||
1395 | /* | 1406 | /* |
1396 | * Batch tasks do not preempt (their preemption is driven by | 1407 | * Batch and idle tasks do not preempt (their preemption is driven by |
1397 | * the tick): | 1408 | * the tick): |
1398 | */ | 1409 | */ |
1399 | if (unlikely(p->policy == SCHED_BATCH)) | 1410 | if (unlikely(p->policy != SCHED_NORMAL)) |
1400 | return; | 1411 | return; |
1401 | 1412 | ||
1413 | /* Idle tasks are by definition preempted by everybody. */ | ||
1414 | if (unlikely(curr->policy == SCHED_IDLE)) { | ||
1415 | resched_task(curr); | ||
1416 | return; | ||
1417 | } | ||
1418 | |||
1402 | if (!sched_feat(WAKEUP_PREEMPT)) | 1419 | if (!sched_feat(WAKEUP_PREEMPT)) |
1403 | return; | 1420 | return; |
1404 | 1421 | ||
diff --git a/kernel/sched_stats.h b/kernel/sched_stats.h index f2773b5d1226..8ab0cef8ecab 100644 --- a/kernel/sched_stats.h +++ b/kernel/sched_stats.h | |||
@@ -296,6 +296,7 @@ sched_info_switch(struct task_struct *prev, struct task_struct *next) | |||
296 | static inline void account_group_user_time(struct task_struct *tsk, | 296 | static inline void account_group_user_time(struct task_struct *tsk, |
297 | cputime_t cputime) | 297 | cputime_t cputime) |
298 | { | 298 | { |
299 | struct task_cputime *times; | ||
299 | struct signal_struct *sig; | 300 | struct signal_struct *sig; |
300 | 301 | ||
301 | /* tsk == current, ensure it is safe to use ->signal */ | 302 | /* tsk == current, ensure it is safe to use ->signal */ |
@@ -303,13 +304,11 @@ static inline void account_group_user_time(struct task_struct *tsk, | |||
303 | return; | 304 | return; |
304 | 305 | ||
305 | sig = tsk->signal; | 306 | sig = tsk->signal; |
306 | if (sig->cputime.totals) { | 307 | times = &sig->cputime.totals; |
307 | struct task_cputime *times; | ||
308 | 308 | ||
309 | times = per_cpu_ptr(sig->cputime.totals, get_cpu()); | 309 | spin_lock(×->lock); |
310 | times->utime = cputime_add(times->utime, cputime); | 310 | times->utime = cputime_add(times->utime, cputime); |
311 | put_cpu_no_resched(); | 311 | spin_unlock(×->lock); |
312 | } | ||
313 | } | 312 | } |
314 | 313 | ||
315 | /** | 314 | /** |
@@ -325,6 +324,7 @@ static inline void account_group_user_time(struct task_struct *tsk, | |||
325 | static inline void account_group_system_time(struct task_struct *tsk, | 324 | static inline void account_group_system_time(struct task_struct *tsk, |
326 | cputime_t cputime) | 325 | cputime_t cputime) |
327 | { | 326 | { |
327 | struct task_cputime *times; | ||
328 | struct signal_struct *sig; | 328 | struct signal_struct *sig; |
329 | 329 | ||
330 | /* tsk == current, ensure it is safe to use ->signal */ | 330 | /* tsk == current, ensure it is safe to use ->signal */ |
@@ -332,13 +332,11 @@ static inline void account_group_system_time(struct task_struct *tsk, | |||
332 | return; | 332 | return; |
333 | 333 | ||
334 | sig = tsk->signal; | 334 | sig = tsk->signal; |
335 | if (sig->cputime.totals) { | 335 | times = &sig->cputime.totals; |
336 | struct task_cputime *times; | ||
337 | 336 | ||
338 | times = per_cpu_ptr(sig->cputime.totals, get_cpu()); | 337 | spin_lock(×->lock); |
339 | times->stime = cputime_add(times->stime, cputime); | 338 | times->stime = cputime_add(times->stime, cputime); |
340 | put_cpu_no_resched(); | 339 | spin_unlock(×->lock); |
341 | } | ||
342 | } | 340 | } |
343 | 341 | ||
344 | /** | 342 | /** |
@@ -354,6 +352,7 @@ static inline void account_group_system_time(struct task_struct *tsk, | |||
354 | static inline void account_group_exec_runtime(struct task_struct *tsk, | 352 | static inline void account_group_exec_runtime(struct task_struct *tsk, |
355 | unsigned long long ns) | 353 | unsigned long long ns) |
356 | { | 354 | { |
355 | struct task_cputime *times; | ||
357 | struct signal_struct *sig; | 356 | struct signal_struct *sig; |
358 | 357 | ||
359 | sig = tsk->signal; | 358 | sig = tsk->signal; |
@@ -362,11 +361,9 @@ static inline void account_group_exec_runtime(struct task_struct *tsk, | |||
362 | if (unlikely(!sig)) | 361 | if (unlikely(!sig)) |
363 | return; | 362 | return; |
364 | 363 | ||
365 | if (sig->cputime.totals) { | 364 | times = &sig->cputime.totals; |
366 | struct task_cputime *times; | ||
367 | 365 | ||
368 | times = per_cpu_ptr(sig->cputime.totals, get_cpu()); | 366 | spin_lock(×->lock); |
369 | times->sum_exec_runtime += ns; | 367 | times->sum_exec_runtime += ns; |
370 | put_cpu_no_resched(); | 368 | spin_unlock(×->lock); |
371 | } | ||
372 | } | 369 | } |
diff --git a/kernel/softlockup.c b/kernel/softlockup.c index d9188c66278a..85d5a2455103 100644 --- a/kernel/softlockup.c +++ b/kernel/softlockup.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/lockdep.h> | 16 | #include <linux/lockdep.h> |
17 | #include <linux/notifier.h> | 17 | #include <linux/notifier.h> |
18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
19 | #include <linux/sysctl.h> | ||
19 | 20 | ||
20 | #include <asm/irq_regs.h> | 21 | #include <asm/irq_regs.h> |
21 | 22 | ||
@@ -88,6 +89,14 @@ void touch_all_softlockup_watchdogs(void) | |||
88 | } | 89 | } |
89 | EXPORT_SYMBOL(touch_all_softlockup_watchdogs); | 90 | EXPORT_SYMBOL(touch_all_softlockup_watchdogs); |
90 | 91 | ||
92 | int proc_dosoftlockup_thresh(struct ctl_table *table, int write, | ||
93 | struct file *filp, void __user *buffer, | ||
94 | size_t *lenp, loff_t *ppos) | ||
95 | { | ||
96 | touch_all_softlockup_watchdogs(); | ||
97 | return proc_dointvec_minmax(table, write, filp, buffer, lenp, ppos); | ||
98 | } | ||
99 | |||
91 | /* | 100 | /* |
92 | * This callback runs from the timer interrupt, and checks | 101 | * This callback runs from the timer interrupt, and checks |
93 | * whether the watchdog thread has hung or not: | 102 | * whether the watchdog thread has hung or not: |
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 3e38b74b6124..790f9d785663 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -144,6 +144,7 @@ extern int acct_parm[]; | |||
144 | 144 | ||
145 | #ifdef CONFIG_IA64 | 145 | #ifdef CONFIG_IA64 |
146 | extern int no_unaligned_warning; | 146 | extern int no_unaligned_warning; |
147 | extern int unaligned_dump_stack; | ||
147 | #endif | 148 | #endif |
148 | 149 | ||
149 | #ifdef CONFIG_RT_MUTEXES | 150 | #ifdef CONFIG_RT_MUTEXES |
@@ -781,6 +782,14 @@ static struct ctl_table kern_table[] = { | |||
781 | .mode = 0644, | 782 | .mode = 0644, |
782 | .proc_handler = &proc_dointvec, | 783 | .proc_handler = &proc_dointvec, |
783 | }, | 784 | }, |
785 | { | ||
786 | .ctl_name = CTL_UNNUMBERED, | ||
787 | .procname = "unaligned-dump-stack", | ||
788 | .data = &unaligned_dump_stack, | ||
789 | .maxlen = sizeof (int), | ||
790 | .mode = 0644, | ||
791 | .proc_handler = &proc_dointvec, | ||
792 | }, | ||
784 | #endif | 793 | #endif |
785 | #ifdef CONFIG_DETECT_SOFTLOCKUP | 794 | #ifdef CONFIG_DETECT_SOFTLOCKUP |
786 | { | 795 | { |
@@ -800,7 +809,7 @@ static struct ctl_table kern_table[] = { | |||
800 | .data = &softlockup_thresh, | 809 | .data = &softlockup_thresh, |
801 | .maxlen = sizeof(int), | 810 | .maxlen = sizeof(int), |
802 | .mode = 0644, | 811 | .mode = 0644, |
803 | .proc_handler = &proc_dointvec_minmax, | 812 | .proc_handler = &proc_dosoftlockup_thresh, |
804 | .strategy = &sysctl_intvec, | 813 | .strategy = &sysctl_intvec, |
805 | .extra1 = &neg_one, | 814 | .extra1 = &neg_one, |
806 | .extra2 = &sixty, | 815 | .extra2 = &sixty, |
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 1b6c05bd0d0a..d3f1ef4d5cbe 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -134,7 +134,7 @@ __setup("nohz=", setup_tick_nohz); | |||
134 | * value. We do this unconditionally on any cpu, as we don't know whether the | 134 | * value. We do this unconditionally on any cpu, as we don't know whether the |
135 | * cpu, which has the update task assigned is in a long sleep. | 135 | * cpu, which has the update task assigned is in a long sleep. |
136 | */ | 136 | */ |
137 | void tick_nohz_update_jiffies(void) | 137 | static void tick_nohz_update_jiffies(void) |
138 | { | 138 | { |
139 | int cpu = smp_processor_id(); | 139 | int cpu = smp_processor_id(); |
140 | struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); | 140 | struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); |
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 2f445833ae37..1f0c509b40d3 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c | |||
@@ -971,6 +971,8 @@ undo: | |||
971 | } | 971 | } |
972 | 972 | ||
973 | #ifdef CONFIG_SMP | 973 | #ifdef CONFIG_SMP |
974 | static struct workqueue_struct *work_on_cpu_wq __read_mostly; | ||
975 | |||
974 | struct work_for_cpu { | 976 | struct work_for_cpu { |
975 | struct work_struct work; | 977 | struct work_struct work; |
976 | long (*fn)(void *); | 978 | long (*fn)(void *); |
@@ -991,8 +993,8 @@ static void do_work_for_cpu(struct work_struct *w) | |||
991 | * @fn: the function to run | 993 | * @fn: the function to run |
992 | * @arg: the function arg | 994 | * @arg: the function arg |
993 | * | 995 | * |
994 | * This will return -EINVAL in the cpu is not online, or the return value | 996 | * This will return the value @fn returns. |
995 | * of @fn otherwise. | 997 | * It is up to the caller to ensure that the cpu doesn't go offline. |
996 | */ | 998 | */ |
997 | long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg) | 999 | long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg) |
998 | { | 1000 | { |
@@ -1001,14 +1003,8 @@ long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg) | |||
1001 | INIT_WORK(&wfc.work, do_work_for_cpu); | 1003 | INIT_WORK(&wfc.work, do_work_for_cpu); |
1002 | wfc.fn = fn; | 1004 | wfc.fn = fn; |
1003 | wfc.arg = arg; | 1005 | wfc.arg = arg; |
1004 | get_online_cpus(); | 1006 | queue_work_on(cpu, work_on_cpu_wq, &wfc.work); |
1005 | if (unlikely(!cpu_online(cpu))) | 1007 | flush_work(&wfc.work); |
1006 | wfc.ret = -EINVAL; | ||
1007 | else { | ||
1008 | schedule_work_on(cpu, &wfc.work); | ||
1009 | flush_work(&wfc.work); | ||
1010 | } | ||
1011 | put_online_cpus(); | ||
1012 | 1008 | ||
1013 | return wfc.ret; | 1009 | return wfc.ret; |
1014 | } | 1010 | } |
@@ -1025,4 +1021,8 @@ void __init init_workqueues(void) | |||
1025 | hotcpu_notifier(workqueue_cpu_callback, 0); | 1021 | hotcpu_notifier(workqueue_cpu_callback, 0); |
1026 | keventd_wq = create_workqueue("events"); | 1022 | keventd_wq = create_workqueue("events"); |
1027 | BUG_ON(!keventd_wq); | 1023 | BUG_ON(!keventd_wq); |
1024 | #ifdef CONFIG_SMP | ||
1025 | work_on_cpu_wq = create_workqueue("work_on_cpu"); | ||
1026 | BUG_ON(!work_on_cpu_wq); | ||
1027 | #endif | ||
1028 | } | 1028 | } |
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 4c9ae6085c75..29044f500269 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
@@ -570,6 +570,15 @@ config DEBUG_NOTIFIERS | |||
570 | This is a relatively cheap check but if you care about maximum | 570 | This is a relatively cheap check but if you care about maximum |
571 | performance, say N. | 571 | performance, say N. |
572 | 572 | ||
573 | # | ||
574 | # Select this config option from the architecture Kconfig, if it | ||
575 | # it is preferred to always offer frame pointers as a config | ||
576 | # option on the architecture (regardless of KERNEL_DEBUG): | ||
577 | # | ||
578 | config ARCH_WANT_FRAME_POINTERS | ||
579 | bool | ||
580 | help | ||
581 | |||
573 | config FRAME_POINTER | 582 | config FRAME_POINTER |
574 | bool "Compile the kernel with frame pointers" | 583 | bool "Compile the kernel with frame pointers" |
575 | depends on DEBUG_KERNEL && \ | 584 | depends on DEBUG_KERNEL && \ |
@@ -633,19 +642,6 @@ config RCU_TORTURE_TEST_RUNNABLE | |||
633 | 642 | ||
634 | config RCU_CPU_STALL_DETECTOR | 643 | config RCU_CPU_STALL_DETECTOR |
635 | bool "Check for stalled CPUs delaying RCU grace periods" | 644 | bool "Check for stalled CPUs delaying RCU grace periods" |
636 | depends on CLASSIC_RCU | ||
637 | default n | ||
638 | help | ||
639 | This option causes RCU to printk information on which | ||
640 | CPUs are delaying the current grace period, but only when | ||
641 | the grace period extends for excessive time periods. | ||
642 | |||
643 | Say Y if you want RCU to perform such checks. | ||
644 | |||
645 | Say N if you are unsure. | ||
646 | |||
647 | config RCU_CPU_STALL_DETECTOR | ||
648 | bool "Check for stalled CPUs delaying RCU grace periods" | ||
649 | depends on CLASSIC_RCU || TREE_RCU | 645 | depends on CLASSIC_RCU || TREE_RCU |
650 | default n | 646 | default n |
651 | help | 647 | help |
@@ -121,7 +121,7 @@ int idr_pre_get(struct idr *idp, gfp_t gfp_mask) | |||
121 | { | 121 | { |
122 | while (idp->id_free_cnt < IDR_FREE_MAX) { | 122 | while (idp->id_free_cnt < IDR_FREE_MAX) { |
123 | struct idr_layer *new; | 123 | struct idr_layer *new; |
124 | new = kmem_cache_alloc(idr_layer_cache, gfp_mask); | 124 | new = kmem_cache_zalloc(idr_layer_cache, gfp_mask); |
125 | if (new == NULL) | 125 | if (new == NULL) |
126 | return (0); | 126 | return (0); |
127 | move_to_free_list(idp, new); | 127 | move_to_free_list(idp, new); |
@@ -292,7 +292,7 @@ static int idr_get_new_above_int(struct idr *idp, void *ptr, int starting_id) | |||
292 | * and go back to the idr_pre_get() call. If the idr is full, it will | 292 | * and go back to the idr_pre_get() call. If the idr is full, it will |
293 | * return -ENOSPC. | 293 | * return -ENOSPC. |
294 | * | 294 | * |
295 | * @id returns a value in the range 0 ... 0x7fffffff | 295 | * @id returns a value in the range @starting_id ... 0x7fffffff |
296 | */ | 296 | */ |
297 | int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id) | 297 | int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id) |
298 | { | 298 | { |
@@ -623,16 +623,10 @@ void *idr_replace(struct idr *idp, void *ptr, int id) | |||
623 | } | 623 | } |
624 | EXPORT_SYMBOL(idr_replace); | 624 | EXPORT_SYMBOL(idr_replace); |
625 | 625 | ||
626 | static void idr_cache_ctor(void *idr_layer) | ||
627 | { | ||
628 | memset(idr_layer, 0, sizeof(struct idr_layer)); | ||
629 | } | ||
630 | |||
631 | void __init idr_init_cache(void) | 626 | void __init idr_init_cache(void) |
632 | { | 627 | { |
633 | idr_layer_cache = kmem_cache_create("idr_layer_cache", | 628 | idr_layer_cache = kmem_cache_create("idr_layer_cache", |
634 | sizeof(struct idr_layer), 0, SLAB_PANIC, | 629 | sizeof(struct idr_layer), 0, SLAB_PANIC, NULL); |
635 | idr_cache_ctor); | ||
636 | } | 630 | } |
637 | 631 | ||
638 | /** | 632 | /** |
@@ -723,7 +717,7 @@ EXPORT_SYMBOL(ida_pre_get); | |||
723 | * and go back to the ida_pre_get() call. If the ida is full, it will | 717 | * and go back to the ida_pre_get() call. If the ida is full, it will |
724 | * return -ENOSPC. | 718 | * return -ENOSPC. |
725 | * | 719 | * |
726 | * @p_id returns a value in the range 0 ... 0x7fffffff. | 720 | * @p_id returns a value in the range @starting_id ... 0x7fffffff. |
727 | */ | 721 | */ |
728 | int ida_get_new_above(struct ida *ida, int starting_id, int *p_id) | 722 | int ida_get_new_above(struct ida *ida, int starting_id, int *p_id) |
729 | { | 723 | { |
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index e2996b80601f..4d0ea3ceba6d 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -358,6 +358,10 @@ void mem_cgroup_rotate_lru_list(struct page *page, enum lru_list lru) | |||
358 | return; | 358 | return; |
359 | 359 | ||
360 | pc = lookup_page_cgroup(page); | 360 | pc = lookup_page_cgroup(page); |
361 | /* | ||
362 | * Used bit is set without atomic ops but after smp_wmb(). | ||
363 | * For making pc->mem_cgroup visible, insert smp_rmb() here. | ||
364 | */ | ||
361 | smp_rmb(); | 365 | smp_rmb(); |
362 | /* unused page is not rotated. */ | 366 | /* unused page is not rotated. */ |
363 | if (!PageCgroupUsed(pc)) | 367 | if (!PageCgroupUsed(pc)) |
@@ -374,7 +378,10 @@ void mem_cgroup_add_lru_list(struct page *page, enum lru_list lru) | |||
374 | if (mem_cgroup_disabled()) | 378 | if (mem_cgroup_disabled()) |
375 | return; | 379 | return; |
376 | pc = lookup_page_cgroup(page); | 380 | pc = lookup_page_cgroup(page); |
377 | /* barrier to sync with "charge" */ | 381 | /* |
382 | * Used bit is set without atomic ops but after smp_wmb(). | ||
383 | * For making pc->mem_cgroup visible, insert smp_rmb() here. | ||
384 | */ | ||
378 | smp_rmb(); | 385 | smp_rmb(); |
379 | if (!PageCgroupUsed(pc)) | 386 | if (!PageCgroupUsed(pc)) |
380 | return; | 387 | return; |
@@ -559,6 +566,14 @@ mem_cgroup_get_reclaim_stat_from_page(struct page *page) | |||
559 | return NULL; | 566 | return NULL; |
560 | 567 | ||
561 | pc = lookup_page_cgroup(page); | 568 | pc = lookup_page_cgroup(page); |
569 | /* | ||
570 | * Used bit is set without atomic ops but after smp_wmb(). | ||
571 | * For making pc->mem_cgroup visible, insert smp_rmb() here. | ||
572 | */ | ||
573 | smp_rmb(); | ||
574 | if (!PageCgroupUsed(pc)) | ||
575 | return NULL; | ||
576 | |||
562 | mz = page_cgroup_zoneinfo(pc); | 577 | mz = page_cgroup_zoneinfo(pc); |
563 | if (!mz) | 578 | if (!mz) |
564 | return NULL; | 579 | return NULL; |
@@ -618,7 +633,7 @@ unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan, | |||
618 | * called with hierarchy_mutex held | 633 | * called with hierarchy_mutex held |
619 | */ | 634 | */ |
620 | static struct mem_cgroup * | 635 | static struct mem_cgroup * |
621 | mem_cgroup_get_next_node(struct mem_cgroup *curr, struct mem_cgroup *root_mem) | 636 | __mem_cgroup_get_next_node(struct mem_cgroup *curr, struct mem_cgroup *root_mem) |
622 | { | 637 | { |
623 | struct cgroup *cgroup, *curr_cgroup, *root_cgroup; | 638 | struct cgroup *cgroup, *curr_cgroup, *root_cgroup; |
624 | 639 | ||
@@ -629,19 +644,16 @@ mem_cgroup_get_next_node(struct mem_cgroup *curr, struct mem_cgroup *root_mem) | |||
629 | /* | 644 | /* |
630 | * Walk down to children | 645 | * Walk down to children |
631 | */ | 646 | */ |
632 | mem_cgroup_put(curr); | ||
633 | cgroup = list_entry(curr_cgroup->children.next, | 647 | cgroup = list_entry(curr_cgroup->children.next, |
634 | struct cgroup, sibling); | 648 | struct cgroup, sibling); |
635 | curr = mem_cgroup_from_cont(cgroup); | 649 | curr = mem_cgroup_from_cont(cgroup); |
636 | mem_cgroup_get(curr); | ||
637 | goto done; | 650 | goto done; |
638 | } | 651 | } |
639 | 652 | ||
640 | visit_parent: | 653 | visit_parent: |
641 | if (curr_cgroup == root_cgroup) { | 654 | if (curr_cgroup == root_cgroup) { |
642 | mem_cgroup_put(curr); | 655 | /* caller handles NULL case */ |
643 | curr = root_mem; | 656 | curr = NULL; |
644 | mem_cgroup_get(curr); | ||
645 | goto done; | 657 | goto done; |
646 | } | 658 | } |
647 | 659 | ||
@@ -649,11 +661,9 @@ visit_parent: | |||
649 | * Goto next sibling | 661 | * Goto next sibling |
650 | */ | 662 | */ |
651 | if (curr_cgroup->sibling.next != &curr_cgroup->parent->children) { | 663 | if (curr_cgroup->sibling.next != &curr_cgroup->parent->children) { |
652 | mem_cgroup_put(curr); | ||
653 | cgroup = list_entry(curr_cgroup->sibling.next, struct cgroup, | 664 | cgroup = list_entry(curr_cgroup->sibling.next, struct cgroup, |
654 | sibling); | 665 | sibling); |
655 | curr = mem_cgroup_from_cont(cgroup); | 666 | curr = mem_cgroup_from_cont(cgroup); |
656 | mem_cgroup_get(curr); | ||
657 | goto done; | 667 | goto done; |
658 | } | 668 | } |
659 | 669 | ||
@@ -664,7 +674,6 @@ visit_parent: | |||
664 | goto visit_parent; | 674 | goto visit_parent; |
665 | 675 | ||
666 | done: | 676 | done: |
667 | root_mem->last_scanned_child = curr; | ||
668 | return curr; | 677 | return curr; |
669 | } | 678 | } |
670 | 679 | ||
@@ -674,40 +683,46 @@ done: | |||
674 | * that to reclaim free pages from. | 683 | * that to reclaim free pages from. |
675 | */ | 684 | */ |
676 | static struct mem_cgroup * | 685 | static struct mem_cgroup * |
677 | mem_cgroup_get_first_node(struct mem_cgroup *root_mem) | 686 | mem_cgroup_get_next_node(struct mem_cgroup *root_mem) |
678 | { | 687 | { |
679 | struct cgroup *cgroup; | 688 | struct cgroup *cgroup; |
680 | struct mem_cgroup *ret; | 689 | struct mem_cgroup *orig, *next; |
681 | bool obsolete; | 690 | bool obsolete; |
682 | 691 | ||
683 | obsolete = mem_cgroup_is_obsolete(root_mem->last_scanned_child); | ||
684 | |||
685 | /* | 692 | /* |
686 | * Scan all children under the mem_cgroup mem | 693 | * Scan all children under the mem_cgroup mem |
687 | */ | 694 | */ |
688 | mutex_lock(&mem_cgroup_subsys.hierarchy_mutex); | 695 | mutex_lock(&mem_cgroup_subsys.hierarchy_mutex); |
696 | |||
697 | orig = root_mem->last_scanned_child; | ||
698 | obsolete = mem_cgroup_is_obsolete(orig); | ||
699 | |||
689 | if (list_empty(&root_mem->css.cgroup->children)) { | 700 | if (list_empty(&root_mem->css.cgroup->children)) { |
690 | ret = root_mem; | 701 | /* |
702 | * root_mem might have children before and last_scanned_child | ||
703 | * may point to one of them. We put it later. | ||
704 | */ | ||
705 | if (orig) | ||
706 | VM_BUG_ON(!obsolete); | ||
707 | next = NULL; | ||
691 | goto done; | 708 | goto done; |
692 | } | 709 | } |
693 | 710 | ||
694 | if (!root_mem->last_scanned_child || obsolete) { | 711 | if (!orig || obsolete) { |
695 | |||
696 | if (obsolete && root_mem->last_scanned_child) | ||
697 | mem_cgroup_put(root_mem->last_scanned_child); | ||
698 | |||
699 | cgroup = list_first_entry(&root_mem->css.cgroup->children, | 712 | cgroup = list_first_entry(&root_mem->css.cgroup->children, |
700 | struct cgroup, sibling); | 713 | struct cgroup, sibling); |
701 | ret = mem_cgroup_from_cont(cgroup); | 714 | next = mem_cgroup_from_cont(cgroup); |
702 | mem_cgroup_get(ret); | ||
703 | } else | 715 | } else |
704 | ret = mem_cgroup_get_next_node(root_mem->last_scanned_child, | 716 | next = __mem_cgroup_get_next_node(orig, root_mem); |
705 | root_mem); | ||
706 | 717 | ||
707 | done: | 718 | done: |
708 | root_mem->last_scanned_child = ret; | 719 | if (next) |
720 | mem_cgroup_get(next); | ||
721 | root_mem->last_scanned_child = next; | ||
722 | if (orig) | ||
723 | mem_cgroup_put(orig); | ||
709 | mutex_unlock(&mem_cgroup_subsys.hierarchy_mutex); | 724 | mutex_unlock(&mem_cgroup_subsys.hierarchy_mutex); |
710 | return ret; | 725 | return (next) ? next : root_mem; |
711 | } | 726 | } |
712 | 727 | ||
713 | static bool mem_cgroup_check_under_limit(struct mem_cgroup *mem) | 728 | static bool mem_cgroup_check_under_limit(struct mem_cgroup *mem) |
@@ -758,28 +773,25 @@ static int mem_cgroup_hierarchical_reclaim(struct mem_cgroup *root_mem, | |||
758 | * but there might be left over accounting, even after children | 773 | * but there might be left over accounting, even after children |
759 | * have left. | 774 | * have left. |
760 | */ | 775 | */ |
761 | ret = try_to_free_mem_cgroup_pages(root_mem, gfp_mask, noswap, | 776 | ret += try_to_free_mem_cgroup_pages(root_mem, gfp_mask, noswap, |
762 | get_swappiness(root_mem)); | 777 | get_swappiness(root_mem)); |
763 | if (mem_cgroup_check_under_limit(root_mem)) | 778 | if (mem_cgroup_check_under_limit(root_mem)) |
764 | return 0; | 779 | return 1; /* indicate reclaim has succeeded */ |
765 | if (!root_mem->use_hierarchy) | 780 | if (!root_mem->use_hierarchy) |
766 | return ret; | 781 | return ret; |
767 | 782 | ||
768 | next_mem = mem_cgroup_get_first_node(root_mem); | 783 | next_mem = mem_cgroup_get_next_node(root_mem); |
769 | 784 | ||
770 | while (next_mem != root_mem) { | 785 | while (next_mem != root_mem) { |
771 | if (mem_cgroup_is_obsolete(next_mem)) { | 786 | if (mem_cgroup_is_obsolete(next_mem)) { |
772 | mem_cgroup_put(next_mem); | 787 | next_mem = mem_cgroup_get_next_node(root_mem); |
773 | next_mem = mem_cgroup_get_first_node(root_mem); | ||
774 | continue; | 788 | continue; |
775 | } | 789 | } |
776 | ret = try_to_free_mem_cgroup_pages(next_mem, gfp_mask, noswap, | 790 | ret += try_to_free_mem_cgroup_pages(next_mem, gfp_mask, noswap, |
777 | get_swappiness(next_mem)); | 791 | get_swappiness(next_mem)); |
778 | if (mem_cgroup_check_under_limit(root_mem)) | 792 | if (mem_cgroup_check_under_limit(root_mem)) |
779 | return 0; | 793 | return 1; /* indicate reclaim has succeeded */ |
780 | mutex_lock(&mem_cgroup_subsys.hierarchy_mutex); | 794 | next_mem = mem_cgroup_get_next_node(root_mem); |
781 | next_mem = mem_cgroup_get_next_node(next_mem, root_mem); | ||
782 | mutex_unlock(&mem_cgroup_subsys.hierarchy_mutex); | ||
783 | } | 795 | } |
784 | return ret; | 796 | return ret; |
785 | } | 797 | } |
@@ -863,6 +875,8 @@ static int __mem_cgroup_try_charge(struct mm_struct *mm, | |||
863 | 875 | ||
864 | ret = mem_cgroup_hierarchical_reclaim(mem_over_limit, gfp_mask, | 876 | ret = mem_cgroup_hierarchical_reclaim(mem_over_limit, gfp_mask, |
865 | noswap); | 877 | noswap); |
878 | if (ret) | ||
879 | continue; | ||
866 | 880 | ||
867 | /* | 881 | /* |
868 | * try_to_free_mem_cgroup_pages() might not give us a full | 882 | * try_to_free_mem_cgroup_pages() might not give us a full |
@@ -979,14 +993,15 @@ static int mem_cgroup_move_account(struct page_cgroup *pc, | |||
979 | if (pc->mem_cgroup != from) | 993 | if (pc->mem_cgroup != from) |
980 | goto out; | 994 | goto out; |
981 | 995 | ||
982 | css_put(&from->css); | ||
983 | res_counter_uncharge(&from->res, PAGE_SIZE); | 996 | res_counter_uncharge(&from->res, PAGE_SIZE); |
984 | mem_cgroup_charge_statistics(from, pc, false); | 997 | mem_cgroup_charge_statistics(from, pc, false); |
985 | if (do_swap_account) | 998 | if (do_swap_account) |
986 | res_counter_uncharge(&from->memsw, PAGE_SIZE); | 999 | res_counter_uncharge(&from->memsw, PAGE_SIZE); |
1000 | css_put(&from->css); | ||
1001 | |||
1002 | css_get(&to->css); | ||
987 | pc->mem_cgroup = to; | 1003 | pc->mem_cgroup = to; |
988 | mem_cgroup_charge_statistics(to, pc, true); | 1004 | mem_cgroup_charge_statistics(to, pc, true); |
989 | css_get(&to->css); | ||
990 | ret = 0; | 1005 | ret = 0; |
991 | out: | 1006 | out: |
992 | unlock_page_cgroup(pc); | 1007 | unlock_page_cgroup(pc); |
@@ -1019,8 +1034,10 @@ static int mem_cgroup_move_parent(struct page_cgroup *pc, | |||
1019 | if (ret || !parent) | 1034 | if (ret || !parent) |
1020 | return ret; | 1035 | return ret; |
1021 | 1036 | ||
1022 | if (!get_page_unless_zero(page)) | 1037 | if (!get_page_unless_zero(page)) { |
1023 | return -EBUSY; | 1038 | ret = -EBUSY; |
1039 | goto uncharge; | ||
1040 | } | ||
1024 | 1041 | ||
1025 | ret = isolate_lru_page(page); | 1042 | ret = isolate_lru_page(page); |
1026 | 1043 | ||
@@ -1029,19 +1046,23 @@ static int mem_cgroup_move_parent(struct page_cgroup *pc, | |||
1029 | 1046 | ||
1030 | ret = mem_cgroup_move_account(pc, child, parent); | 1047 | ret = mem_cgroup_move_account(pc, child, parent); |
1031 | 1048 | ||
1032 | /* drop extra refcnt by try_charge() (move_account increment one) */ | ||
1033 | css_put(&parent->css); | ||
1034 | putback_lru_page(page); | 1049 | putback_lru_page(page); |
1035 | if (!ret) { | 1050 | if (!ret) { |
1036 | put_page(page); | 1051 | put_page(page); |
1052 | /* drop extra refcnt by try_charge() */ | ||
1053 | css_put(&parent->css); | ||
1037 | return 0; | 1054 | return 0; |
1038 | } | 1055 | } |
1039 | /* uncharge if move fails */ | 1056 | |
1040 | cancel: | 1057 | cancel: |
1058 | put_page(page); | ||
1059 | uncharge: | ||
1060 | /* drop extra refcnt by try_charge() */ | ||
1061 | css_put(&parent->css); | ||
1062 | /* uncharge if move fails */ | ||
1041 | res_counter_uncharge(&parent->res, PAGE_SIZE); | 1063 | res_counter_uncharge(&parent->res, PAGE_SIZE); |
1042 | if (do_swap_account) | 1064 | if (do_swap_account) |
1043 | res_counter_uncharge(&parent->memsw, PAGE_SIZE); | 1065 | res_counter_uncharge(&parent->memsw, PAGE_SIZE); |
1044 | put_page(page); | ||
1045 | return ret; | 1066 | return ret; |
1046 | } | 1067 | } |
1047 | 1068 | ||
@@ -1971,6 +1992,7 @@ static int mem_cgroup_swappiness_write(struct cgroup *cgrp, struct cftype *cft, | |||
1971 | { | 1992 | { |
1972 | struct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp); | 1993 | struct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp); |
1973 | struct mem_cgroup *parent; | 1994 | struct mem_cgroup *parent; |
1995 | |||
1974 | if (val > 100) | 1996 | if (val > 100) |
1975 | return -EINVAL; | 1997 | return -EINVAL; |
1976 | 1998 | ||
@@ -1978,15 +2000,22 @@ static int mem_cgroup_swappiness_write(struct cgroup *cgrp, struct cftype *cft, | |||
1978 | return -EINVAL; | 2000 | return -EINVAL; |
1979 | 2001 | ||
1980 | parent = mem_cgroup_from_cont(cgrp->parent); | 2002 | parent = mem_cgroup_from_cont(cgrp->parent); |
2003 | |||
2004 | cgroup_lock(); | ||
2005 | |||
1981 | /* If under hierarchy, only empty-root can set this value */ | 2006 | /* If under hierarchy, only empty-root can set this value */ |
1982 | if ((parent->use_hierarchy) || | 2007 | if ((parent->use_hierarchy) || |
1983 | (memcg->use_hierarchy && !list_empty(&cgrp->children))) | 2008 | (memcg->use_hierarchy && !list_empty(&cgrp->children))) { |
2009 | cgroup_unlock(); | ||
1984 | return -EINVAL; | 2010 | return -EINVAL; |
2011 | } | ||
1985 | 2012 | ||
1986 | spin_lock(&memcg->reclaim_param_lock); | 2013 | spin_lock(&memcg->reclaim_param_lock); |
1987 | memcg->swappiness = val; | 2014 | memcg->swappiness = val; |
1988 | spin_unlock(&memcg->reclaim_param_lock); | 2015 | spin_unlock(&memcg->reclaim_param_lock); |
1989 | 2016 | ||
2017 | cgroup_unlock(); | ||
2018 | |||
1990 | return 0; | 2019 | return 0; |
1991 | } | 2020 | } |
1992 | 2021 | ||
@@ -2181,7 +2210,7 @@ static void __init enable_swap_cgroup(void) | |||
2181 | } | 2210 | } |
2182 | #endif | 2211 | #endif |
2183 | 2212 | ||
2184 | static struct cgroup_subsys_state * | 2213 | static struct cgroup_subsys_state * __ref |
2185 | mem_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont) | 2214 | mem_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont) |
2186 | { | 2215 | { |
2187 | struct mem_cgroup *mem, *parent; | 2216 | struct mem_cgroup *mem, *parent; |
@@ -2232,7 +2261,14 @@ static void mem_cgroup_pre_destroy(struct cgroup_subsys *ss, | |||
2232 | static void mem_cgroup_destroy(struct cgroup_subsys *ss, | 2261 | static void mem_cgroup_destroy(struct cgroup_subsys *ss, |
2233 | struct cgroup *cont) | 2262 | struct cgroup *cont) |
2234 | { | 2263 | { |
2235 | mem_cgroup_put(mem_cgroup_from_cont(cont)); | 2264 | struct mem_cgroup *mem = mem_cgroup_from_cont(cont); |
2265 | struct mem_cgroup *last_scanned_child = mem->last_scanned_child; | ||
2266 | |||
2267 | if (last_scanned_child) { | ||
2268 | VM_BUG_ON(!mem_cgroup_is_obsolete(last_scanned_child)); | ||
2269 | mem_cgroup_put(last_scanned_child); | ||
2270 | } | ||
2271 | mem_cgroup_put(mem); | ||
2236 | } | 2272 | } |
2237 | 2273 | ||
2238 | static int mem_cgroup_populate(struct cgroup_subsys *ss, | 2274 | static int mem_cgroup_populate(struct cgroup_subsys *ss, |
diff --git a/mm/nommu.c b/mm/nommu.c index 8cee8c8ff0f2..0c3e7d2114f6 100644 --- a/mm/nommu.c +++ b/mm/nommu.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * Copyright (c) 2000-2003 David McCullough <davidm@snapgear.com> | 10 | * Copyright (c) 2000-2003 David McCullough <davidm@snapgear.com> |
11 | * Copyright (c) 2000-2001 D Jeff Dionne <jeff@uClinux.org> | 11 | * Copyright (c) 2000-2001 D Jeff Dionne <jeff@uClinux.org> |
12 | * Copyright (c) 2002 Greg Ungerer <gerg@snapgear.com> | 12 | * Copyright (c) 2002 Greg Ungerer <gerg@snapgear.com> |
13 | * Copyright (c) 2007-2008 Paul Mundt <lethal@linux-sh.org> | 13 | * Copyright (c) 2007-2009 Paul Mundt <lethal@linux-sh.org> |
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
@@ -394,6 +394,24 @@ void vunmap(const void *addr) | |||
394 | } | 394 | } |
395 | EXPORT_SYMBOL(vunmap); | 395 | EXPORT_SYMBOL(vunmap); |
396 | 396 | ||
397 | void *vm_map_ram(struct page **pages, unsigned int count, int node, pgprot_t prot) | ||
398 | { | ||
399 | BUG(); | ||
400 | return NULL; | ||
401 | } | ||
402 | EXPORT_SYMBOL(vm_map_ram); | ||
403 | |||
404 | void vm_unmap_ram(const void *mem, unsigned int count) | ||
405 | { | ||
406 | BUG(); | ||
407 | } | ||
408 | EXPORT_SYMBOL(vm_unmap_ram); | ||
409 | |||
410 | void vm_unmap_aliases(void) | ||
411 | { | ||
412 | } | ||
413 | EXPORT_SYMBOL_GPL(vm_unmap_aliases); | ||
414 | |||
397 | /* | 415 | /* |
398 | * Implement a stub for vmalloc_sync_all() if the architecture chose not to | 416 | * Implement a stub for vmalloc_sync_all() if the architecture chose not to |
399 | * have one. | 417 | * have one. |
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index c5db9a7264d9..75f49d312e8c 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/highmem.h> | 14 | #include <linux/highmem.h> |
15 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
16 | #include <linux/spinlock.h> | 16 | #include <linux/spinlock.h> |
17 | #include <linux/mutex.h> | ||
18 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
19 | #include <linux/proc_fs.h> | 18 | #include <linux/proc_fs.h> |
20 | #include <linux/seq_file.h> | 19 | #include <linux/seq_file.h> |
@@ -24,6 +23,7 @@ | |||
24 | #include <linux/rbtree.h> | 23 | #include <linux/rbtree.h> |
25 | #include <linux/radix-tree.h> | 24 | #include <linux/radix-tree.h> |
26 | #include <linux/rcupdate.h> | 25 | #include <linux/rcupdate.h> |
26 | #include <linux/bootmem.h> | ||
27 | 27 | ||
28 | #include <asm/atomic.h> | 28 | #include <asm/atomic.h> |
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
@@ -495,7 +495,7 @@ static atomic_t vmap_lazy_nr = ATOMIC_INIT(0); | |||
495 | static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end, | 495 | static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end, |
496 | int sync, int force_flush) | 496 | int sync, int force_flush) |
497 | { | 497 | { |
498 | static DEFINE_MUTEX(purge_lock); | 498 | static DEFINE_SPINLOCK(purge_lock); |
499 | LIST_HEAD(valist); | 499 | LIST_HEAD(valist); |
500 | struct vmap_area *va; | 500 | struct vmap_area *va; |
501 | int nr = 0; | 501 | int nr = 0; |
@@ -506,10 +506,10 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end, | |||
506 | * the case that isn't actually used at the moment anyway. | 506 | * the case that isn't actually used at the moment anyway. |
507 | */ | 507 | */ |
508 | if (!sync && !force_flush) { | 508 | if (!sync && !force_flush) { |
509 | if (!mutex_trylock(&purge_lock)) | 509 | if (!spin_trylock(&purge_lock)) |
510 | return; | 510 | return; |
511 | } else | 511 | } else |
512 | mutex_lock(&purge_lock); | 512 | spin_lock(&purge_lock); |
513 | 513 | ||
514 | rcu_read_lock(); | 514 | rcu_read_lock(); |
515 | list_for_each_entry_rcu(va, &vmap_area_list, list) { | 515 | list_for_each_entry_rcu(va, &vmap_area_list, list) { |
@@ -541,7 +541,7 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end, | |||
541 | __free_vmap_area(va); | 541 | __free_vmap_area(va); |
542 | spin_unlock(&vmap_area_lock); | 542 | spin_unlock(&vmap_area_lock); |
543 | } | 543 | } |
544 | mutex_unlock(&purge_lock); | 544 | spin_unlock(&purge_lock); |
545 | } | 545 | } |
546 | 546 | ||
547 | /* | 547 | /* |
@@ -984,6 +984,8 @@ EXPORT_SYMBOL(vm_map_ram); | |||
984 | 984 | ||
985 | void __init vmalloc_init(void) | 985 | void __init vmalloc_init(void) |
986 | { | 986 | { |
987 | struct vmap_area *va; | ||
988 | struct vm_struct *tmp; | ||
987 | int i; | 989 | int i; |
988 | 990 | ||
989 | for_each_possible_cpu(i) { | 991 | for_each_possible_cpu(i) { |
@@ -996,6 +998,14 @@ void __init vmalloc_init(void) | |||
996 | vbq->nr_dirty = 0; | 998 | vbq->nr_dirty = 0; |
997 | } | 999 | } |
998 | 1000 | ||
1001 | /* Import existing vmlist entries. */ | ||
1002 | for (tmp = vmlist; tmp; tmp = tmp->next) { | ||
1003 | va = alloc_bootmem(sizeof(struct vmap_area)); | ||
1004 | va->flags = tmp->flags | VM_VM_AREA; | ||
1005 | va->va_start = (unsigned long)tmp->addr; | ||
1006 | va->va_end = va->va_start + tmp->size; | ||
1007 | __insert_vmap_area(va); | ||
1008 | } | ||
999 | vmap_initialized = true; | 1009 | vmap_initialized = true; |
1000 | } | 1010 | } |
1001 | 1011 | ||
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c index 6c1323940263..e9db889d6222 100644 --- a/net/8021q/vlan_core.c +++ b/net/8021q/vlan_core.c | |||
@@ -62,13 +62,13 @@ struct net_device *vlan_dev_real_dev(const struct net_device *dev) | |||
62 | { | 62 | { |
63 | return vlan_dev_info(dev)->real_dev; | 63 | return vlan_dev_info(dev)->real_dev; |
64 | } | 64 | } |
65 | EXPORT_SYMBOL_GPL(vlan_dev_real_dev); | 65 | EXPORT_SYMBOL(vlan_dev_real_dev); |
66 | 66 | ||
67 | u16 vlan_dev_vlan_id(const struct net_device *dev) | 67 | u16 vlan_dev_vlan_id(const struct net_device *dev) |
68 | { | 68 | { |
69 | return vlan_dev_info(dev)->vlan_id; | 69 | return vlan_dev_info(dev)->vlan_id; |
70 | } | 70 | } |
71 | EXPORT_SYMBOL_GPL(vlan_dev_vlan_id); | 71 | EXPORT_SYMBOL(vlan_dev_vlan_id); |
72 | 72 | ||
73 | static int vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp, | 73 | static int vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp, |
74 | unsigned int vlan_tci, struct sk_buff *skb) | 74 | unsigned int vlan_tci, struct sk_buff *skb) |
diff --git a/net/9p/Kconfig b/net/9p/Kconfig index 0663f99e977a..7ed75c7bd5d1 100644 --- a/net/9p/Kconfig +++ b/net/9p/Kconfig | |||
@@ -23,7 +23,7 @@ config NET_9P_VIRTIO | |||
23 | guest partitions and a host partition. | 23 | guest partitions and a host partition. |
24 | 24 | ||
25 | config NET_9P_RDMA | 25 | config NET_9P_RDMA |
26 | depends on INET && INFINIBAND && EXPERIMENTAL | 26 | depends on INET && INFINIBAND && INFINIBAND_ADDR_TRANS && EXPERIMENTAL |
27 | tristate "9P RDMA Transport (Experimental)" | 27 | tristate "9P RDMA Transport (Experimental)" |
28 | help | 28 | help |
29 | This builds support for an RDMA transport. | 29 | This builds support for an RDMA transport. |
diff --git a/net/9p/client.c b/net/9p/client.c index 821f1ec0b2c3..1eb580c38fbb 100644 --- a/net/9p/client.c +++ b/net/9p/client.c | |||
@@ -618,7 +618,7 @@ static struct p9_fid *p9_fid_create(struct p9_client *clnt) | |||
618 | return ERR_PTR(-ENOMEM); | 618 | return ERR_PTR(-ENOMEM); |
619 | 619 | ||
620 | ret = p9_idpool_get(clnt->fidpool); | 620 | ret = p9_idpool_get(clnt->fidpool); |
621 | if (fid->fid < 0) { | 621 | if (ret < 0) { |
622 | ret = -ENOSPC; | 622 | ret = -ENOSPC; |
623 | goto error; | 623 | goto error; |
624 | } | 624 | } |
diff --git a/net/Kconfig b/net/Kconfig index bf2776018f71..cdb8fdef6c4a 100644 --- a/net/Kconfig +++ b/net/Kconfig | |||
@@ -24,14 +24,6 @@ if NET | |||
24 | 24 | ||
25 | menu "Networking options" | 25 | menu "Networking options" |
26 | 26 | ||
27 | config NET_NS | ||
28 | bool "Network namespace support" | ||
29 | default n | ||
30 | depends on EXPERIMENTAL && NAMESPACES | ||
31 | help | ||
32 | Allow user space to create what appear to be multiple instances | ||
33 | of the network stack. | ||
34 | |||
35 | config COMPAT_NET_DEV_OPS | 27 | config COMPAT_NET_DEV_OPS |
36 | def_bool y | 28 | def_bool y |
37 | 29 | ||
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c index a65e43a17fbb..cf754ace0b75 100644 --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c | |||
@@ -58,11 +58,11 @@ static struct ctl_table_header *brnf_sysctl_header; | |||
58 | static int brnf_call_iptables __read_mostly = 1; | 58 | static int brnf_call_iptables __read_mostly = 1; |
59 | static int brnf_call_ip6tables __read_mostly = 1; | 59 | static int brnf_call_ip6tables __read_mostly = 1; |
60 | static int brnf_call_arptables __read_mostly = 1; | 60 | static int brnf_call_arptables __read_mostly = 1; |
61 | static int brnf_filter_vlan_tagged __read_mostly = 1; | 61 | static int brnf_filter_vlan_tagged __read_mostly = 0; |
62 | static int brnf_filter_pppoe_tagged __read_mostly = 1; | 62 | static int brnf_filter_pppoe_tagged __read_mostly = 0; |
63 | #else | 63 | #else |
64 | #define brnf_filter_vlan_tagged 1 | 64 | #define brnf_filter_vlan_tagged 0 |
65 | #define brnf_filter_pppoe_tagged 1 | 65 | #define brnf_filter_pppoe_tagged 0 |
66 | #endif | 66 | #endif |
67 | 67 | ||
68 | static inline __be16 vlan_proto(const struct sk_buff *skb) | 68 | static inline __be16 vlan_proto(const struct sk_buff *skb) |
@@ -686,8 +686,11 @@ static unsigned int br_nf_forward_ip(unsigned int hook, struct sk_buff *skb, | |||
686 | if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) || | 686 | if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) || |
687 | IS_PPPOE_IP(skb)) | 687 | IS_PPPOE_IP(skb)) |
688 | pf = PF_INET; | 688 | pf = PF_INET; |
689 | else | 689 | else if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) || |
690 | IS_PPPOE_IPV6(skb)) | ||
690 | pf = PF_INET6; | 691 | pf = PF_INET6; |
692 | else | ||
693 | return NF_ACCEPT; | ||
691 | 694 | ||
692 | nf_bridge_pull_encap_header(skb); | 695 | nf_bridge_pull_encap_header(skb); |
693 | 696 | ||
@@ -828,8 +831,11 @@ static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff *skb, | |||
828 | if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) || | 831 | if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) || |
829 | IS_PPPOE_IP(skb)) | 832 | IS_PPPOE_IP(skb)) |
830 | pf = PF_INET; | 833 | pf = PF_INET; |
831 | else | 834 | else if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) || |
835 | IS_PPPOE_IPV6(skb)) | ||
832 | pf = PF_INET6; | 836 | pf = PF_INET6; |
837 | else | ||
838 | return NF_ACCEPT; | ||
833 | 839 | ||
834 | #ifdef CONFIG_NETFILTER_DEBUG | 840 | #ifdef CONFIG_NETFILTER_DEBUG |
835 | if (skb->dst == NULL) { | 841 | if (skb->dst == NULL) { |
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index 8a8743d7d6e7..820252aee81f 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c | |||
@@ -79,7 +79,7 @@ static inline int ebt_do_match (struct ebt_entry_match *m, | |||
79 | { | 79 | { |
80 | par->match = m->u.match; | 80 | par->match = m->u.match; |
81 | par->matchinfo = m->data; | 81 | par->matchinfo = m->data; |
82 | return m->u.match->match(skb, par); | 82 | return m->u.match->match(skb, par) ? EBT_MATCH : EBT_NOMATCH; |
83 | } | 83 | } |
84 | 84 | ||
85 | static inline int ebt_dev_check(char *entry, const struct net_device *device) | 85 | static inline int ebt_dev_check(char *entry, const struct net_device *device) |
diff --git a/net/can/bcm.c b/net/can/bcm.c index 1649c8ab2c2f..b7c7d4651136 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c | |||
@@ -347,51 +347,54 @@ static void bcm_tx_timeout_tsklet(unsigned long data) | |||
347 | struct bcm_op *op = (struct bcm_op *)data; | 347 | struct bcm_op *op = (struct bcm_op *)data; |
348 | struct bcm_msg_head msg_head; | 348 | struct bcm_msg_head msg_head; |
349 | 349 | ||
350 | /* create notification to user */ | ||
351 | msg_head.opcode = TX_EXPIRED; | ||
352 | msg_head.flags = op->flags; | ||
353 | msg_head.count = op->count; | ||
354 | msg_head.ival1 = op->ival1; | ||
355 | msg_head.ival2 = op->ival2; | ||
356 | msg_head.can_id = op->can_id; | ||
357 | msg_head.nframes = 0; | ||
358 | |||
359 | bcm_send_to_user(op, &msg_head, NULL, 0); | ||
360 | } | ||
361 | |||
362 | /* | ||
363 | * bcm_tx_timeout_handler - performes cyclic CAN frame transmissions | ||
364 | */ | ||
365 | static enum hrtimer_restart bcm_tx_timeout_handler(struct hrtimer *hrtimer) | ||
366 | { | ||
367 | struct bcm_op *op = container_of(hrtimer, struct bcm_op, timer); | ||
368 | enum hrtimer_restart ret = HRTIMER_NORESTART; | ||
369 | |||
370 | if (op->kt_ival1.tv64 && (op->count > 0)) { | 350 | if (op->kt_ival1.tv64 && (op->count > 0)) { |
371 | 351 | ||
372 | op->count--; | 352 | op->count--; |
373 | if (!op->count && (op->flags & TX_COUNTEVT)) | 353 | if (!op->count && (op->flags & TX_COUNTEVT)) { |
374 | tasklet_schedule(&op->tsklet); | 354 | |
355 | /* create notification to user */ | ||
356 | msg_head.opcode = TX_EXPIRED; | ||
357 | msg_head.flags = op->flags; | ||
358 | msg_head.count = op->count; | ||
359 | msg_head.ival1 = op->ival1; | ||
360 | msg_head.ival2 = op->ival2; | ||
361 | msg_head.can_id = op->can_id; | ||
362 | msg_head.nframes = 0; | ||
363 | |||
364 | bcm_send_to_user(op, &msg_head, NULL, 0); | ||
365 | } | ||
375 | } | 366 | } |
376 | 367 | ||
377 | if (op->kt_ival1.tv64 && (op->count > 0)) { | 368 | if (op->kt_ival1.tv64 && (op->count > 0)) { |
378 | 369 | ||
379 | /* send (next) frame */ | 370 | /* send (next) frame */ |
380 | bcm_can_tx(op); | 371 | bcm_can_tx(op); |
381 | hrtimer_forward(hrtimer, ktime_get(), op->kt_ival1); | 372 | hrtimer_start(&op->timer, |
382 | ret = HRTIMER_RESTART; | 373 | ktime_add(ktime_get(), op->kt_ival1), |
374 | HRTIMER_MODE_ABS); | ||
383 | 375 | ||
384 | } else { | 376 | } else { |
385 | if (op->kt_ival2.tv64) { | 377 | if (op->kt_ival2.tv64) { |
386 | 378 | ||
387 | /* send (next) frame */ | 379 | /* send (next) frame */ |
388 | bcm_can_tx(op); | 380 | bcm_can_tx(op); |
389 | hrtimer_forward(hrtimer, ktime_get(), op->kt_ival2); | 381 | hrtimer_start(&op->timer, |
390 | ret = HRTIMER_RESTART; | 382 | ktime_add(ktime_get(), op->kt_ival2), |
383 | HRTIMER_MODE_ABS); | ||
391 | } | 384 | } |
392 | } | 385 | } |
386 | } | ||
393 | 387 | ||
394 | return ret; | 388 | /* |
389 | * bcm_tx_timeout_handler - performes cyclic CAN frame transmissions | ||
390 | */ | ||
391 | static enum hrtimer_restart bcm_tx_timeout_handler(struct hrtimer *hrtimer) | ||
392 | { | ||
393 | struct bcm_op *op = container_of(hrtimer, struct bcm_op, timer); | ||
394 | |||
395 | tasklet_schedule(&op->tsklet); | ||
396 | |||
397 | return HRTIMER_NORESTART; | ||
395 | } | 398 | } |
396 | 399 | ||
397 | /* | 400 | /* |
diff --git a/net/core/dev.c b/net/core/dev.c index b715a55cccc4..5379b0c1190a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -1534,7 +1534,19 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features) | |||
1534 | skb->mac_len = skb->network_header - skb->mac_header; | 1534 | skb->mac_len = skb->network_header - skb->mac_header; |
1535 | __skb_pull(skb, skb->mac_len); | 1535 | __skb_pull(skb, skb->mac_len); |
1536 | 1536 | ||
1537 | if (WARN_ON(skb->ip_summed != CHECKSUM_PARTIAL)) { | 1537 | if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) { |
1538 | struct net_device *dev = skb->dev; | ||
1539 | struct ethtool_drvinfo info = {}; | ||
1540 | |||
1541 | if (dev && dev->ethtool_ops && dev->ethtool_ops->get_drvinfo) | ||
1542 | dev->ethtool_ops->get_drvinfo(dev, &info); | ||
1543 | |||
1544 | WARN(1, "%s: caps=(0x%lx, 0x%lx) len=%d data_len=%d " | ||
1545 | "ip_summed=%d", | ||
1546 | info.driver, dev ? dev->features : 0L, | ||
1547 | skb->sk ? skb->sk->sk_route_caps : 0L, | ||
1548 | skb->len, skb->data_len, skb->ip_summed); | ||
1549 | |||
1538 | if (skb_header_cloned(skb) && | 1550 | if (skb_header_cloned(skb) && |
1539 | (err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) | 1551 | (err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) |
1540 | return ERR_PTR(err); | 1552 | return ERR_PTR(err); |
@@ -2392,6 +2404,9 @@ int dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb) | |||
2392 | if (!(skb->dev->features & NETIF_F_GRO)) | 2404 | if (!(skb->dev->features & NETIF_F_GRO)) |
2393 | goto normal; | 2405 | goto normal; |
2394 | 2406 | ||
2407 | if (skb_is_gso(skb) || skb_shinfo(skb)->frag_list) | ||
2408 | goto normal; | ||
2409 | |||
2395 | rcu_read_lock(); | 2410 | rcu_read_lock(); |
2396 | list_for_each_entry_rcu(ptype, head, list) { | 2411 | list_for_each_entry_rcu(ptype, head, list) { |
2397 | struct sk_buff *p; | 2412 | struct sk_buff *p; |
@@ -2488,12 +2503,6 @@ EXPORT_SYMBOL(napi_gro_receive); | |||
2488 | 2503 | ||
2489 | void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) | 2504 | void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) |
2490 | { | 2505 | { |
2491 | skb_shinfo(skb)->nr_frags = 0; | ||
2492 | |||
2493 | skb->len -= skb->data_len; | ||
2494 | skb->truesize -= skb->data_len; | ||
2495 | skb->data_len = 0; | ||
2496 | |||
2497 | __skb_pull(skb, skb_headlen(skb)); | 2506 | __skb_pull(skb, skb_headlen(skb)); |
2498 | skb_reserve(skb, NET_IP_ALIGN - skb_headroom(skb)); | 2507 | skb_reserve(skb, NET_IP_ALIGN - skb_headroom(skb)); |
2499 | 2508 | ||
@@ -2527,6 +2536,7 @@ struct sk_buff *napi_fraginfo_skb(struct napi_struct *napi, | |||
2527 | 2536 | ||
2528 | if (!pskb_may_pull(skb, ETH_HLEN)) { | 2537 | if (!pskb_may_pull(skb, ETH_HLEN)) { |
2529 | napi_reuse_skb(napi, skb); | 2538 | napi_reuse_skb(napi, skb); |
2539 | skb = NULL; | ||
2530 | goto out; | 2540 | goto out; |
2531 | } | 2541 | } |
2532 | 2542 | ||
@@ -4434,6 +4444,45 @@ err_uninit: | |||
4434 | } | 4444 | } |
4435 | 4445 | ||
4436 | /** | 4446 | /** |
4447 | * init_dummy_netdev - init a dummy network device for NAPI | ||
4448 | * @dev: device to init | ||
4449 | * | ||
4450 | * This takes a network device structure and initialize the minimum | ||
4451 | * amount of fields so it can be used to schedule NAPI polls without | ||
4452 | * registering a full blown interface. This is to be used by drivers | ||
4453 | * that need to tie several hardware interfaces to a single NAPI | ||
4454 | * poll scheduler due to HW limitations. | ||
4455 | */ | ||
4456 | int init_dummy_netdev(struct net_device *dev) | ||
4457 | { | ||
4458 | /* Clear everything. Note we don't initialize spinlocks | ||
4459 | * are they aren't supposed to be taken by any of the | ||
4460 | * NAPI code and this dummy netdev is supposed to be | ||
4461 | * only ever used for NAPI polls | ||
4462 | */ | ||
4463 | memset(dev, 0, sizeof(struct net_device)); | ||
4464 | |||
4465 | /* make sure we BUG if trying to hit standard | ||
4466 | * register/unregister code path | ||
4467 | */ | ||
4468 | dev->reg_state = NETREG_DUMMY; | ||
4469 | |||
4470 | /* initialize the ref count */ | ||
4471 | atomic_set(&dev->refcnt, 1); | ||
4472 | |||
4473 | /* NAPI wants this */ | ||
4474 | INIT_LIST_HEAD(&dev->napi_list); | ||
4475 | |||
4476 | /* a dummy interface is started by default */ | ||
4477 | set_bit(__LINK_STATE_PRESENT, &dev->state); | ||
4478 | set_bit(__LINK_STATE_START, &dev->state); | ||
4479 | |||
4480 | return 0; | ||
4481 | } | ||
4482 | EXPORT_SYMBOL_GPL(init_dummy_netdev); | ||
4483 | |||
4484 | |||
4485 | /** | ||
4437 | * register_netdev - register a network device | 4486 | * register_netdev - register a network device |
4438 | * @dev: device to register | 4487 | * @dev: device to register |
4439 | * | 4488 | * |
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 55cffad2f328..55151faaf90c 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c | |||
@@ -341,8 +341,8 @@ again: | |||
341 | rv = register_pernet_operations(first_device, ops); | 341 | rv = register_pernet_operations(first_device, ops); |
342 | if (rv < 0) | 342 | if (rv < 0) |
343 | ida_remove(&net_generic_ids, *id); | 343 | ida_remove(&net_generic_ids, *id); |
344 | mutex_unlock(&net_mutex); | ||
345 | out: | 344 | out: |
345 | mutex_unlock(&net_mutex); | ||
346 | return rv; | 346 | return rv; |
347 | } | 347 | } |
348 | EXPORT_SYMBOL_GPL(register_pernet_gen_subsys); | 348 | EXPORT_SYMBOL_GPL(register_pernet_gen_subsys); |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 5110b359c758..2e5f2ca3bdcd 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -73,17 +73,13 @@ static struct kmem_cache *skbuff_fclone_cache __read_mostly; | |||
73 | static void sock_pipe_buf_release(struct pipe_inode_info *pipe, | 73 | static void sock_pipe_buf_release(struct pipe_inode_info *pipe, |
74 | struct pipe_buffer *buf) | 74 | struct pipe_buffer *buf) |
75 | { | 75 | { |
76 | struct sk_buff *skb = (struct sk_buff *) buf->private; | 76 | put_page(buf->page); |
77 | |||
78 | kfree_skb(skb); | ||
79 | } | 77 | } |
80 | 78 | ||
81 | static void sock_pipe_buf_get(struct pipe_inode_info *pipe, | 79 | static void sock_pipe_buf_get(struct pipe_inode_info *pipe, |
82 | struct pipe_buffer *buf) | 80 | struct pipe_buffer *buf) |
83 | { | 81 | { |
84 | struct sk_buff *skb = (struct sk_buff *) buf->private; | 82 | get_page(buf->page); |
85 | |||
86 | skb_get(skb); | ||
87 | } | 83 | } |
88 | 84 | ||
89 | static int sock_pipe_buf_steal(struct pipe_inode_info *pipe, | 85 | static int sock_pipe_buf_steal(struct pipe_inode_info *pipe, |
@@ -1334,9 +1330,19 @@ fault: | |||
1334 | */ | 1330 | */ |
1335 | static void sock_spd_release(struct splice_pipe_desc *spd, unsigned int i) | 1331 | static void sock_spd_release(struct splice_pipe_desc *spd, unsigned int i) |
1336 | { | 1332 | { |
1337 | struct sk_buff *skb = (struct sk_buff *) spd->partial[i].private; | 1333 | put_page(spd->pages[i]); |
1334 | } | ||
1338 | 1335 | ||
1339 | kfree_skb(skb); | 1336 | static inline struct page *linear_to_page(struct page *page, unsigned int len, |
1337 | unsigned int offset) | ||
1338 | { | ||
1339 | struct page *p = alloc_pages(GFP_KERNEL, 0); | ||
1340 | |||
1341 | if (!p) | ||
1342 | return NULL; | ||
1343 | memcpy(page_address(p) + offset, page_address(page) + offset, len); | ||
1344 | |||
1345 | return p; | ||
1340 | } | 1346 | } |
1341 | 1347 | ||
1342 | /* | 1348 | /* |
@@ -1344,16 +1350,23 @@ static void sock_spd_release(struct splice_pipe_desc *spd, unsigned int i) | |||
1344 | */ | 1350 | */ |
1345 | static inline int spd_fill_page(struct splice_pipe_desc *spd, struct page *page, | 1351 | static inline int spd_fill_page(struct splice_pipe_desc *spd, struct page *page, |
1346 | unsigned int len, unsigned int offset, | 1352 | unsigned int len, unsigned int offset, |
1347 | struct sk_buff *skb) | 1353 | struct sk_buff *skb, int linear) |
1348 | { | 1354 | { |
1349 | if (unlikely(spd->nr_pages == PIPE_BUFFERS)) | 1355 | if (unlikely(spd->nr_pages == PIPE_BUFFERS)) |
1350 | return 1; | 1356 | return 1; |
1351 | 1357 | ||
1358 | if (linear) { | ||
1359 | page = linear_to_page(page, len, offset); | ||
1360 | if (!page) | ||
1361 | return 1; | ||
1362 | } else | ||
1363 | get_page(page); | ||
1364 | |||
1352 | spd->pages[spd->nr_pages] = page; | 1365 | spd->pages[spd->nr_pages] = page; |
1353 | spd->partial[spd->nr_pages].len = len; | 1366 | spd->partial[spd->nr_pages].len = len; |
1354 | spd->partial[spd->nr_pages].offset = offset; | 1367 | spd->partial[spd->nr_pages].offset = offset; |
1355 | spd->partial[spd->nr_pages].private = (unsigned long) skb_get(skb); | ||
1356 | spd->nr_pages++; | 1368 | spd->nr_pages++; |
1369 | |||
1357 | return 0; | 1370 | return 0; |
1358 | } | 1371 | } |
1359 | 1372 | ||
@@ -1369,7 +1382,7 @@ static inline void __segment_seek(struct page **page, unsigned int *poff, | |||
1369 | static inline int __splice_segment(struct page *page, unsigned int poff, | 1382 | static inline int __splice_segment(struct page *page, unsigned int poff, |
1370 | unsigned int plen, unsigned int *off, | 1383 | unsigned int plen, unsigned int *off, |
1371 | unsigned int *len, struct sk_buff *skb, | 1384 | unsigned int *len, struct sk_buff *skb, |
1372 | struct splice_pipe_desc *spd) | 1385 | struct splice_pipe_desc *spd, int linear) |
1373 | { | 1386 | { |
1374 | if (!*len) | 1387 | if (!*len) |
1375 | return 1; | 1388 | return 1; |
@@ -1392,7 +1405,7 @@ static inline int __splice_segment(struct page *page, unsigned int poff, | |||
1392 | /* the linear region may spread across several pages */ | 1405 | /* the linear region may spread across several pages */ |
1393 | flen = min_t(unsigned int, flen, PAGE_SIZE - poff); | 1406 | flen = min_t(unsigned int, flen, PAGE_SIZE - poff); |
1394 | 1407 | ||
1395 | if (spd_fill_page(spd, page, flen, poff, skb)) | 1408 | if (spd_fill_page(spd, page, flen, poff, skb, linear)) |
1396 | return 1; | 1409 | return 1; |
1397 | 1410 | ||
1398 | __segment_seek(&page, &poff, &plen, flen); | 1411 | __segment_seek(&page, &poff, &plen, flen); |
@@ -1419,7 +1432,7 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset, | |||
1419 | if (__splice_segment(virt_to_page(skb->data), | 1432 | if (__splice_segment(virt_to_page(skb->data), |
1420 | (unsigned long) skb->data & (PAGE_SIZE - 1), | 1433 | (unsigned long) skb->data & (PAGE_SIZE - 1), |
1421 | skb_headlen(skb), | 1434 | skb_headlen(skb), |
1422 | offset, len, skb, spd)) | 1435 | offset, len, skb, spd, 1)) |
1423 | return 1; | 1436 | return 1; |
1424 | 1437 | ||
1425 | /* | 1438 | /* |
@@ -1429,7 +1442,7 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset, | |||
1429 | const skb_frag_t *f = &skb_shinfo(skb)->frags[seg]; | 1442 | const skb_frag_t *f = &skb_shinfo(skb)->frags[seg]; |
1430 | 1443 | ||
1431 | if (__splice_segment(f->page, f->page_offset, f->size, | 1444 | if (__splice_segment(f->page, f->page_offset, f->size, |
1432 | offset, len, skb, spd)) | 1445 | offset, len, skb, spd, 0)) |
1433 | return 1; | 1446 | return 1; |
1434 | } | 1447 | } |
1435 | 1448 | ||
@@ -1442,7 +1455,7 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset, | |||
1442 | * the frag list, if such a thing exists. We'd probably need to recurse to | 1455 | * the frag list, if such a thing exists. We'd probably need to recurse to |
1443 | * handle that cleanly. | 1456 | * handle that cleanly. |
1444 | */ | 1457 | */ |
1445 | int skb_splice_bits(struct sk_buff *__skb, unsigned int offset, | 1458 | int skb_splice_bits(struct sk_buff *skb, unsigned int offset, |
1446 | struct pipe_inode_info *pipe, unsigned int tlen, | 1459 | struct pipe_inode_info *pipe, unsigned int tlen, |
1447 | unsigned int flags) | 1460 | unsigned int flags) |
1448 | { | 1461 | { |
@@ -1455,16 +1468,6 @@ int skb_splice_bits(struct sk_buff *__skb, unsigned int offset, | |||
1455 | .ops = &sock_pipe_buf_ops, | 1468 | .ops = &sock_pipe_buf_ops, |
1456 | .spd_release = sock_spd_release, | 1469 | .spd_release = sock_spd_release, |
1457 | }; | 1470 | }; |
1458 | struct sk_buff *skb; | ||
1459 | |||
1460 | /* | ||
1461 | * I'd love to avoid the clone here, but tcp_read_sock() | ||
1462 | * ignores reference counts and unconditonally kills the sk_buff | ||
1463 | * on return from the actor. | ||
1464 | */ | ||
1465 | skb = skb_clone(__skb, GFP_KERNEL); | ||
1466 | if (unlikely(!skb)) | ||
1467 | return -ENOMEM; | ||
1468 | 1471 | ||
1469 | /* | 1472 | /* |
1470 | * __skb_splice_bits() only fails if the output has no room left, | 1473 | * __skb_splice_bits() only fails if the output has no room left, |
@@ -1488,15 +1491,9 @@ int skb_splice_bits(struct sk_buff *__skb, unsigned int offset, | |||
1488 | } | 1491 | } |
1489 | 1492 | ||
1490 | done: | 1493 | done: |
1491 | /* | ||
1492 | * drop our reference to the clone, the pipe consumption will | ||
1493 | * drop the rest. | ||
1494 | */ | ||
1495 | kfree_skb(skb); | ||
1496 | |||
1497 | if (spd.nr_pages) { | 1494 | if (spd.nr_pages) { |
1495 | struct sock *sk = skb->sk; | ||
1498 | int ret; | 1496 | int ret; |
1499 | struct sock *sk = __skb->sk; | ||
1500 | 1497 | ||
1501 | /* | 1498 | /* |
1502 | * Drop the socket lock, otherwise we have reverse | 1499 | * Drop the socket lock, otherwise we have reverse |
@@ -2588,8 +2585,9 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb) | |||
2588 | struct sk_buff *nskb; | 2585 | struct sk_buff *nskb; |
2589 | unsigned int headroom; | 2586 | unsigned int headroom; |
2590 | unsigned int hlen = p->data - skb_mac_header(p); | 2587 | unsigned int hlen = p->data - skb_mac_header(p); |
2588 | unsigned int len = skb->len; | ||
2591 | 2589 | ||
2592 | if (hlen + p->len + skb->len >= 65536) | 2590 | if (hlen + p->len + len >= 65536) |
2593 | return -E2BIG; | 2591 | return -E2BIG; |
2594 | 2592 | ||
2595 | if (skb_shinfo(p)->frag_list) | 2593 | if (skb_shinfo(p)->frag_list) |
@@ -2602,6 +2600,12 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb) | |||
2602 | skb_shinfo(skb)->nr_frags * sizeof(skb_frag_t)); | 2600 | skb_shinfo(skb)->nr_frags * sizeof(skb_frag_t)); |
2603 | 2601 | ||
2604 | skb_shinfo(p)->nr_frags += skb_shinfo(skb)->nr_frags; | 2602 | skb_shinfo(p)->nr_frags += skb_shinfo(skb)->nr_frags; |
2603 | skb_shinfo(skb)->nr_frags = 0; | ||
2604 | |||
2605 | skb->truesize -= skb->data_len; | ||
2606 | skb->len -= skb->data_len; | ||
2607 | skb->data_len = 0; | ||
2608 | |||
2605 | NAPI_GRO_CB(skb)->free = 1; | 2609 | NAPI_GRO_CB(skb)->free = 1; |
2606 | goto done; | 2610 | goto done; |
2607 | } | 2611 | } |
@@ -2645,9 +2649,9 @@ merge: | |||
2645 | 2649 | ||
2646 | done: | 2650 | done: |
2647 | NAPI_GRO_CB(p)->count++; | 2651 | NAPI_GRO_CB(p)->count++; |
2648 | p->data_len += skb->len; | 2652 | p->data_len += len; |
2649 | p->truesize += skb->len; | 2653 | p->truesize += len; |
2650 | p->len += skb->len; | 2654 | p->len += len; |
2651 | 2655 | ||
2652 | NAPI_GRO_CB(skb)->same_flow = 1; | 2656 | NAPI_GRO_CB(skb)->same_flow = 1; |
2653 | return 0; | 2657 | return 0; |
diff --git a/net/ipv4/netfilter/iptable_filter.c b/net/ipv4/netfilter/iptable_filter.c index c9224310ebae..52cb6939d093 100644 --- a/net/ipv4/netfilter/iptable_filter.c +++ b/net/ipv4/netfilter/iptable_filter.c | |||
@@ -93,13 +93,8 @@ ipt_local_out_hook(unsigned int hook, | |||
93 | { | 93 | { |
94 | /* root is playing with raw sockets. */ | 94 | /* root is playing with raw sockets. */ |
95 | if (skb->len < sizeof(struct iphdr) || | 95 | if (skb->len < sizeof(struct iphdr) || |
96 | ip_hdrlen(skb) < sizeof(struct iphdr)) { | 96 | ip_hdrlen(skb) < sizeof(struct iphdr)) |
97 | if (net_ratelimit()) | ||
98 | printk("iptable_filter: ignoring short SOCK_RAW " | ||
99 | "packet.\n"); | ||
100 | return NF_ACCEPT; | 97 | return NF_ACCEPT; |
101 | } | ||
102 | |||
103 | return ipt_do_table(skb, hook, in, out, | 98 | return ipt_do_table(skb, hook, in, out, |
104 | dev_net(out)->ipv4.iptable_filter); | 99 | dev_net(out)->ipv4.iptable_filter); |
105 | } | 100 | } |
diff --git a/net/ipv4/netfilter/iptable_mangle.c b/net/ipv4/netfilter/iptable_mangle.c index 69f2c4287146..3929d20b9e45 100644 --- a/net/ipv4/netfilter/iptable_mangle.c +++ b/net/ipv4/netfilter/iptable_mangle.c | |||
@@ -132,12 +132,8 @@ ipt_local_hook(unsigned int hook, | |||
132 | 132 | ||
133 | /* root is playing with raw sockets. */ | 133 | /* root is playing with raw sockets. */ |
134 | if (skb->len < sizeof(struct iphdr) | 134 | if (skb->len < sizeof(struct iphdr) |
135 | || ip_hdrlen(skb) < sizeof(struct iphdr)) { | 135 | || ip_hdrlen(skb) < sizeof(struct iphdr)) |
136 | if (net_ratelimit()) | ||
137 | printk("iptable_mangle: ignoring short SOCK_RAW " | ||
138 | "packet.\n"); | ||
139 | return NF_ACCEPT; | 136 | return NF_ACCEPT; |
140 | } | ||
141 | 137 | ||
142 | /* Save things which could affect route */ | 138 | /* Save things which could affect route */ |
143 | mark = skb->mark; | 139 | mark = skb->mark; |
diff --git a/net/ipv4/netfilter/iptable_raw.c b/net/ipv4/netfilter/iptable_raw.c index 8faebfe638f1..7f65d18333e3 100644 --- a/net/ipv4/netfilter/iptable_raw.c +++ b/net/ipv4/netfilter/iptable_raw.c | |||
@@ -65,12 +65,8 @@ ipt_local_hook(unsigned int hook, | |||
65 | { | 65 | { |
66 | /* root is playing with raw sockets. */ | 66 | /* root is playing with raw sockets. */ |
67 | if (skb->len < sizeof(struct iphdr) || | 67 | if (skb->len < sizeof(struct iphdr) || |
68 | ip_hdrlen(skb) < sizeof(struct iphdr)) { | 68 | ip_hdrlen(skb) < sizeof(struct iphdr)) |
69 | if (net_ratelimit()) | ||
70 | printk("iptable_raw: ignoring short SOCK_RAW " | ||
71 | "packet.\n"); | ||
72 | return NF_ACCEPT; | 69 | return NF_ACCEPT; |
73 | } | ||
74 | return ipt_do_table(skb, hook, in, out, | 70 | return ipt_do_table(skb, hook, in, out, |
75 | dev_net(out)->ipv4.iptable_raw); | 71 | dev_net(out)->ipv4.iptable_raw); |
76 | } | 72 | } |
diff --git a/net/ipv4/netfilter/iptable_security.c b/net/ipv4/netfilter/iptable_security.c index 36f3be3cc428..a52a35f4a584 100644 --- a/net/ipv4/netfilter/iptable_security.c +++ b/net/ipv4/netfilter/iptable_security.c | |||
@@ -96,12 +96,8 @@ ipt_local_out_hook(unsigned int hook, | |||
96 | { | 96 | { |
97 | /* Somebody is playing with raw sockets. */ | 97 | /* Somebody is playing with raw sockets. */ |
98 | if (skb->len < sizeof(struct iphdr) | 98 | if (skb->len < sizeof(struct iphdr) |
99 | || ip_hdrlen(skb) < sizeof(struct iphdr)) { | 99 | || ip_hdrlen(skb) < sizeof(struct iphdr)) |
100 | if (net_ratelimit()) | ||
101 | printk(KERN_INFO "iptable_security: ignoring short " | ||
102 | "SOCK_RAW packet.\n"); | ||
103 | return NF_ACCEPT; | 100 | return NF_ACCEPT; |
104 | } | ||
105 | return ipt_do_table(skb, hook, in, out, | 101 | return ipt_do_table(skb, hook, in, out, |
106 | dev_net(out)->ipv4.iptable_security); | 102 | dev_net(out)->ipv4.iptable_security); |
107 | } | 103 | } |
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c index b2141e11575e..4beb04fac588 100644 --- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c +++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c | |||
@@ -145,11 +145,8 @@ static unsigned int ipv4_conntrack_local(unsigned int hooknum, | |||
145 | { | 145 | { |
146 | /* root is playing with raw sockets. */ | 146 | /* root is playing with raw sockets. */ |
147 | if (skb->len < sizeof(struct iphdr) || | 147 | if (skb->len < sizeof(struct iphdr) || |
148 | ip_hdrlen(skb) < sizeof(struct iphdr)) { | 148 | ip_hdrlen(skb) < sizeof(struct iphdr)) |
149 | if (net_ratelimit()) | ||
150 | printk("ipt_hook: happy cracking.\n"); | ||
151 | return NF_ACCEPT; | 149 | return NF_ACCEPT; |
152 | } | ||
153 | return nf_conntrack_in(dev_net(out), PF_INET, hooknum, skb); | 150 | return nf_conntrack_in(dev_net(out), PF_INET, hooknum, skb); |
154 | } | 151 | } |
155 | 152 | ||
diff --git a/net/ipv4/netfilter/nf_conntrack_proto_icmp.c b/net/ipv4/netfilter/nf_conntrack_proto_icmp.c index 1fd3ef7718b6..2a8bee26f43d 100644 --- a/net/ipv4/netfilter/nf_conntrack_proto_icmp.c +++ b/net/ipv4/netfilter/nf_conntrack_proto_icmp.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <net/netfilter/nf_conntrack_core.h> | 20 | #include <net/netfilter/nf_conntrack_core.h> |
21 | #include <net/netfilter/nf_log.h> | 21 | #include <net/netfilter/nf_log.h> |
22 | 22 | ||
23 | static unsigned long nf_ct_icmp_timeout __read_mostly = 30*HZ; | 23 | static unsigned int nf_ct_icmp_timeout __read_mostly = 30*HZ; |
24 | 24 | ||
25 | static bool icmp_pkt_to_tuple(const struct sk_buff *skb, unsigned int dataoff, | 25 | static bool icmp_pkt_to_tuple(const struct sk_buff *skb, unsigned int dataoff, |
26 | struct nf_conntrack_tuple *tuple) | 26 | struct nf_conntrack_tuple *tuple) |
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index ce572f9dff02..0cd71b84e483 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -522,8 +522,12 @@ static int tcp_splice_data_recv(read_descriptor_t *rd_desc, struct sk_buff *skb, | |||
522 | unsigned int offset, size_t len) | 522 | unsigned int offset, size_t len) |
523 | { | 523 | { |
524 | struct tcp_splice_state *tss = rd_desc->arg.data; | 524 | struct tcp_splice_state *tss = rd_desc->arg.data; |
525 | int ret; | ||
525 | 526 | ||
526 | return skb_splice_bits(skb, offset, tss->pipe, tss->len, tss->flags); | 527 | ret = skb_splice_bits(skb, offset, tss->pipe, rd_desc->count, tss->flags); |
528 | if (ret > 0) | ||
529 | rd_desc->count -= ret; | ||
530 | return ret; | ||
527 | } | 531 | } |
528 | 532 | ||
529 | static int __tcp_splice_read(struct sock *sk, struct tcp_splice_state *tss) | 533 | static int __tcp_splice_read(struct sock *sk, struct tcp_splice_state *tss) |
@@ -531,6 +535,7 @@ static int __tcp_splice_read(struct sock *sk, struct tcp_splice_state *tss) | |||
531 | /* Store TCP splice context information in read_descriptor_t. */ | 535 | /* Store TCP splice context information in read_descriptor_t. */ |
532 | read_descriptor_t rd_desc = { | 536 | read_descriptor_t rd_desc = { |
533 | .arg.data = tss, | 537 | .arg.data = tss, |
538 | .count = tss->len, | ||
534 | }; | 539 | }; |
535 | 540 | ||
536 | return tcp_read_sock(sk, &rd_desc, tcp_splice_data_recv); | 541 | return tcp_read_sock(sk, &rd_desc, tcp_splice_data_recv); |
@@ -611,11 +616,13 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos, | |||
611 | tss.len -= ret; | 616 | tss.len -= ret; |
612 | spliced += ret; | 617 | spliced += ret; |
613 | 618 | ||
619 | if (!timeo) | ||
620 | break; | ||
614 | release_sock(sk); | 621 | release_sock(sk); |
615 | lock_sock(sk); | 622 | lock_sock(sk); |
616 | 623 | ||
617 | if (sk->sk_err || sk->sk_state == TCP_CLOSE || | 624 | if (sk->sk_err || sk->sk_state == TCP_CLOSE || |
618 | (sk->sk_shutdown & RCV_SHUTDOWN) || !timeo || | 625 | (sk->sk_shutdown & RCV_SHUTDOWN) || |
619 | signal_pending(current)) | 626 | signal_pending(current)) |
620 | break; | 627 | break; |
621 | } | 628 | } |
@@ -2382,7 +2389,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features) | |||
2382 | unsigned int seq; | 2389 | unsigned int seq; |
2383 | __be32 delta; | 2390 | __be32 delta; |
2384 | unsigned int oldlen; | 2391 | unsigned int oldlen; |
2385 | unsigned int len; | 2392 | unsigned int mss; |
2386 | 2393 | ||
2387 | if (!pskb_may_pull(skb, sizeof(*th))) | 2394 | if (!pskb_may_pull(skb, sizeof(*th))) |
2388 | goto out; | 2395 | goto out; |
@@ -2398,10 +2405,13 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features) | |||
2398 | oldlen = (u16)~skb->len; | 2405 | oldlen = (u16)~skb->len; |
2399 | __skb_pull(skb, thlen); | 2406 | __skb_pull(skb, thlen); |
2400 | 2407 | ||
2408 | mss = skb_shinfo(skb)->gso_size; | ||
2409 | if (unlikely(skb->len <= mss)) | ||
2410 | goto out; | ||
2411 | |||
2401 | if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) { | 2412 | if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) { |
2402 | /* Packet is from an untrusted source, reset gso_segs. */ | 2413 | /* Packet is from an untrusted source, reset gso_segs. */ |
2403 | int type = skb_shinfo(skb)->gso_type; | 2414 | int type = skb_shinfo(skb)->gso_type; |
2404 | int mss; | ||
2405 | 2415 | ||
2406 | if (unlikely(type & | 2416 | if (unlikely(type & |
2407 | ~(SKB_GSO_TCPV4 | | 2417 | ~(SKB_GSO_TCPV4 | |
@@ -2412,7 +2422,6 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features) | |||
2412 | !(type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)))) | 2422 | !(type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)))) |
2413 | goto out; | 2423 | goto out; |
2414 | 2424 | ||
2415 | mss = skb_shinfo(skb)->gso_size; | ||
2416 | skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(skb->len, mss); | 2425 | skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(skb->len, mss); |
2417 | 2426 | ||
2418 | segs = NULL; | 2427 | segs = NULL; |
@@ -2423,8 +2432,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features) | |||
2423 | if (IS_ERR(segs)) | 2432 | if (IS_ERR(segs)) |
2424 | goto out; | 2433 | goto out; |
2425 | 2434 | ||
2426 | len = skb_shinfo(skb)->gso_size; | 2435 | delta = htonl(oldlen + (thlen + mss)); |
2427 | delta = htonl(oldlen + (thlen + len)); | ||
2428 | 2436 | ||
2429 | skb = segs; | 2437 | skb = segs; |
2430 | th = tcp_hdr(skb); | 2438 | th = tcp_hdr(skb); |
@@ -2440,7 +2448,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features) | |||
2440 | csum_fold(csum_partial(skb_transport_header(skb), | 2448 | csum_fold(csum_partial(skb_transport_header(skb), |
2441 | thlen, skb->csum)); | 2449 | thlen, skb->csum)); |
2442 | 2450 | ||
2443 | seq += len; | 2451 | seq += mss; |
2444 | skb = skb->next; | 2452 | skb = skb->next; |
2445 | th = tcp_hdr(skb); | 2453 | th = tcp_hdr(skb); |
2446 | 2454 | ||
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 94f74f5b0cbf..c802bc1658a8 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -797,6 +797,7 @@ static struct sk_buff **ipv6_gro_receive(struct sk_buff **head, | |||
797 | unsigned int nlen; | 797 | unsigned int nlen; |
798 | int flush = 1; | 798 | int flush = 1; |
799 | int proto; | 799 | int proto; |
800 | __wsum csum; | ||
800 | 801 | ||
801 | if (unlikely(!pskb_may_pull(skb, sizeof(*iph)))) | 802 | if (unlikely(!pskb_may_pull(skb, sizeof(*iph)))) |
802 | goto out; | 803 | goto out; |
@@ -808,6 +809,7 @@ static struct sk_buff **ipv6_gro_receive(struct sk_buff **head, | |||
808 | 809 | ||
809 | rcu_read_lock(); | 810 | rcu_read_lock(); |
810 | proto = ipv6_gso_pull_exthdrs(skb, iph->nexthdr); | 811 | proto = ipv6_gso_pull_exthdrs(skb, iph->nexthdr); |
812 | iph = ipv6_hdr(skb); | ||
811 | IPV6_GRO_CB(skb)->proto = proto; | 813 | IPV6_GRO_CB(skb)->proto = proto; |
812 | ops = rcu_dereference(inet6_protos[proto]); | 814 | ops = rcu_dereference(inet6_protos[proto]); |
813 | if (!ops || !ops->gro_receive) | 815 | if (!ops || !ops->gro_receive) |
@@ -839,8 +841,13 @@ static struct sk_buff **ipv6_gro_receive(struct sk_buff **head, | |||
839 | 841 | ||
840 | NAPI_GRO_CB(skb)->flush |= flush; | 842 | NAPI_GRO_CB(skb)->flush |= flush; |
841 | 843 | ||
844 | csum = skb->csum; | ||
845 | skb_postpull_rcsum(skb, iph, skb_network_header_len(skb)); | ||
846 | |||
842 | pp = ops->gro_receive(head, skb); | 847 | pp = ops->gro_receive(head, skb); |
843 | 848 | ||
849 | skb->csum = csum; | ||
850 | |||
844 | out_unlock: | 851 | out_unlock: |
845 | rcu_read_unlock(); | 852 | rcu_read_unlock(); |
846 | 853 | ||
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index 29c7c99e69f7..52ee1dced2ff 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c | |||
@@ -298,6 +298,10 @@ static void fib6_dump_end(struct netlink_callback *cb) | |||
298 | struct fib6_walker_t *w = (void*)cb->args[2]; | 298 | struct fib6_walker_t *w = (void*)cb->args[2]; |
299 | 299 | ||
300 | if (w) { | 300 | if (w) { |
301 | if (cb->args[4]) { | ||
302 | cb->args[4] = 0; | ||
303 | fib6_walker_unlink(w); | ||
304 | } | ||
301 | cb->args[2] = 0; | 305 | cb->args[2] = 0; |
302 | kfree(w); | 306 | kfree(w); |
303 | } | 307 | } |
@@ -330,15 +334,12 @@ static int fib6_dump_table(struct fib6_table *table, struct sk_buff *skb, | |||
330 | read_lock_bh(&table->tb6_lock); | 334 | read_lock_bh(&table->tb6_lock); |
331 | res = fib6_walk_continue(w); | 335 | res = fib6_walk_continue(w); |
332 | read_unlock_bh(&table->tb6_lock); | 336 | read_unlock_bh(&table->tb6_lock); |
333 | if (res != 0) { | 337 | if (res <= 0) { |
334 | if (res < 0) | 338 | fib6_walker_unlink(w); |
335 | fib6_walker_unlink(w); | 339 | cb->args[4] = 0; |
336 | goto end; | ||
337 | } | 340 | } |
338 | fib6_walker_unlink(w); | ||
339 | cb->args[4] = 0; | ||
340 | } | 341 | } |
341 | end: | 342 | |
342 | return res; | 343 | return res; |
343 | } | 344 | } |
344 | 345 | ||
diff --git a/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c b/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c index bd52151d31e9..c455cf4ee756 100644 --- a/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c +++ b/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include <net/netfilter/ipv6/nf_conntrack_icmpv6.h> | 26 | #include <net/netfilter/ipv6/nf_conntrack_icmpv6.h> |
27 | #include <net/netfilter/nf_log.h> | 27 | #include <net/netfilter/nf_log.h> |
28 | 28 | ||
29 | static unsigned long nf_ct_icmpv6_timeout __read_mostly = 30*HZ; | 29 | static unsigned int nf_ct_icmpv6_timeout __read_mostly = 30*HZ; |
30 | 30 | ||
31 | static bool icmpv6_pkt_to_tuple(const struct sk_buff *skb, | 31 | static bool icmpv6_pkt_to_tuple(const struct sk_buff *skb, |
32 | unsigned int dataoff, | 32 | unsigned int dataoff, |
diff --git a/net/key/af_key.c b/net/key/af_key.c index f8bd8df5e257..7dcbde3ea7d9 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c | |||
@@ -1285,6 +1285,7 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct net *net, | |||
1285 | ext_hdrs[SADB_X_EXT_NAT_T_DPORT-1]; | 1285 | ext_hdrs[SADB_X_EXT_NAT_T_DPORT-1]; |
1286 | natt->encap_dport = n_port->sadb_x_nat_t_port_port; | 1286 | natt->encap_dport = n_port->sadb_x_nat_t_port_port; |
1287 | } | 1287 | } |
1288 | memset(&natt->encap_oa, 0, sizeof(natt->encap_oa)); | ||
1288 | } | 1289 | } |
1289 | 1290 | ||
1290 | err = xfrm_init_state(x); | 1291 | err = xfrm_init_state(x); |
diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c index 5f510a13b9f0..c5c0c5271096 100644 --- a/net/mac80211/ht.c +++ b/net/mac80211/ht.c | |||
@@ -469,7 +469,7 @@ int ieee80211_start_tx_ba_session(struct ieee80211_hw *hw, u8 *ra, u16 tid) | |||
469 | struct ieee80211_sub_if_data *sdata; | 469 | struct ieee80211_sub_if_data *sdata; |
470 | u16 start_seq_num; | 470 | u16 start_seq_num; |
471 | u8 *state; | 471 | u8 *state; |
472 | int ret; | 472 | int ret = 0; |
473 | 473 | ||
474 | if ((tid >= STA_TID_NUM) || !(hw->flags & IEEE80211_HW_AMPDU_AGGREGATION)) | 474 | if ((tid >= STA_TID_NUM) || !(hw->flags & IEEE80211_HW_AMPDU_AGGREGATION)) |
475 | return -EINVAL; | 475 | return -EINVAL; |
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 5abbc3f07dd6..b9074824862a 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c | |||
@@ -699,7 +699,8 @@ int ieee80211_if_change_type(struct ieee80211_sub_if_data *sdata, | |||
699 | return 0; | 699 | return 0; |
700 | 700 | ||
701 | /* Setting ad-hoc mode on non-IBSS channel is not supported. */ | 701 | /* Setting ad-hoc mode on non-IBSS channel is not supported. */ |
702 | if (sdata->local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS) | 702 | if (sdata->local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS && |
703 | type == NL80211_IFTYPE_ADHOC) | ||
703 | return -EOPNOTSUPP; | 704 | return -EOPNOTSUPP; |
704 | 705 | ||
705 | /* | 706 | /* |
diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c index 929ba542fd72..1159bdb4119c 100644 --- a/net/mac80211/mesh_plink.c +++ b/net/mac80211/mesh_plink.c | |||
@@ -107,6 +107,7 @@ static struct sta_info *mesh_plink_alloc(struct ieee80211_sub_if_data *sdata, | |||
107 | 107 | ||
108 | sta->flags = WLAN_STA_AUTHORIZED; | 108 | sta->flags = WLAN_STA_AUTHORIZED; |
109 | sta->sta.supp_rates[local->hw.conf.channel->band] = rates; | 109 | sta->sta.supp_rates[local->hw.conf.channel->band] = rates; |
110 | rate_control_rate_init(sta); | ||
110 | 111 | ||
111 | return sta; | 112 | return sta; |
112 | } | 113 | } |
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 5ba721b6a399..2b890af01ba4 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -620,8 +620,8 @@ static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, | |||
620 | if (use_short_slot != bss_conf->use_short_slot) { | 620 | if (use_short_slot != bss_conf->use_short_slot) { |
621 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | 621 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG |
622 | if (net_ratelimit()) { | 622 | if (net_ratelimit()) { |
623 | printk(KERN_DEBUG "%s: switched to %s slot" | 623 | printk(KERN_DEBUG "%s: switched to %s slot time" |
624 | " (BSSID=%s)\n", | 624 | " (BSSID=%pM)\n", |
625 | sdata->dev->name, | 625 | sdata->dev->name, |
626 | use_short_slot ? "short" : "long", | 626 | use_short_slot ? "short" : "long", |
627 | ifsta->bssid); | 627 | ifsta->bssid); |
diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c index 2b3b490a6073..3824990d340b 100644 --- a/net/mac80211/rc80211_minstrel.c +++ b/net/mac80211/rc80211_minstrel.c | |||
@@ -395,13 +395,15 @@ minstrel_rate_init(void *priv, struct ieee80211_supported_band *sband, | |||
395 | { | 395 | { |
396 | struct minstrel_sta_info *mi = priv_sta; | 396 | struct minstrel_sta_info *mi = priv_sta; |
397 | struct minstrel_priv *mp = priv; | 397 | struct minstrel_priv *mp = priv; |
398 | struct minstrel_rate *mr_ctl; | 398 | struct ieee80211_local *local = hw_to_local(mp->hw); |
399 | struct ieee80211_rate *ctl_rate; | ||
399 | unsigned int i, n = 0; | 400 | unsigned int i, n = 0; |
400 | unsigned int t_slot = 9; /* FIXME: get real slot time */ | 401 | unsigned int t_slot = 9; /* FIXME: get real slot time */ |
401 | 402 | ||
402 | mi->lowest_rix = rate_lowest_index(sband, sta); | 403 | mi->lowest_rix = rate_lowest_index(sband, sta); |
403 | mr_ctl = &mi->r[rix_to_ndx(mi, mi->lowest_rix)]; | 404 | ctl_rate = &sband->bitrates[mi->lowest_rix]; |
404 | mi->sp_ack_dur = mr_ctl->ack_time; | 405 | mi->sp_ack_dur = ieee80211_frame_duration(local, 10, ctl_rate->bitrate, |
406 | !!(ctl_rate->flags & IEEE80211_RATE_ERP_G), 1); | ||
405 | 407 | ||
406 | for (i = 0; i < sband->n_bitrates; i++) { | 408 | for (i = 0; i < sband->n_bitrates; i++) { |
407 | struct minstrel_rate *mr = &mi->r[n]; | 409 | struct minstrel_rate *mr = &mi->r[n]; |
@@ -416,7 +418,7 @@ minstrel_rate_init(void *priv, struct ieee80211_supported_band *sband, | |||
416 | 418 | ||
417 | mr->rix = i; | 419 | mr->rix = i; |
418 | mr->bitrate = sband->bitrates[i].bitrate / 5; | 420 | mr->bitrate = sband->bitrates[i].bitrate / 5; |
419 | calc_rate_durations(mi, hw_to_local(mp->hw), mr, | 421 | calc_rate_durations(mi, local, mr, |
420 | &sband->bitrates[i]); | 422 | &sband->bitrates[i]); |
421 | 423 | ||
422 | /* calculate maximum number of retransmissions before | 424 | /* calculate maximum number of retransmissions before |
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h index dc2606d0ae77..e49a5b99cf10 100644 --- a/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h | |||
@@ -195,7 +195,6 @@ struct sta_ampdu_mlme { | |||
195 | * @tx_packets: number of RX/TX MSDUs | 195 | * @tx_packets: number of RX/TX MSDUs |
196 | * @tx_bytes: number of bytes transmitted to this STA | 196 | * @tx_bytes: number of bytes transmitted to this STA |
197 | * @tx_fragments: number of transmitted MPDUs | 197 | * @tx_fragments: number of transmitted MPDUs |
198 | * @last_txrate: description of the last used transmit rate | ||
199 | * @tid_seq: per-TID sequence numbers for sending to this STA | 198 | * @tid_seq: per-TID sequence numbers for sending to this STA |
200 | * @ampdu_mlme: A-MPDU state machine state | 199 | * @ampdu_mlme: A-MPDU state machine state |
201 | * @timer_to_tid: identity mapping to ID timers | 200 | * @timer_to_tid: identity mapping to ID timers |
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index a4af3a124cce..4278e545638f 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1307,8 +1307,10 @@ int ieee80211_master_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1307 | if (is_multicast_ether_addr(hdr->addr3)) | 1307 | if (is_multicast_ether_addr(hdr->addr3)) |
1308 | memcpy(hdr->addr1, hdr->addr3, ETH_ALEN); | 1308 | memcpy(hdr->addr1, hdr->addr3, ETH_ALEN); |
1309 | else | 1309 | else |
1310 | if (mesh_nexthop_lookup(skb, osdata)) | 1310 | if (mesh_nexthop_lookup(skb, osdata)) { |
1311 | return 0; | 1311 | dev_put(odev); |
1312 | return 0; | ||
1313 | } | ||
1312 | if (memcmp(odev->dev_addr, hdr->addr4, ETH_ALEN) != 0) | 1314 | if (memcmp(odev->dev_addr, hdr->addr4, ETH_ALEN) != 0) |
1313 | IEEE80211_IFSTA_MESH_CTR_INC(&osdata->u.mesh, | 1315 | IEEE80211_IFSTA_MESH_CTR_INC(&osdata->u.mesh, |
1314 | fwded_frames); | 1316 | fwded_frames); |
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index 7e83f74cd5de..90ce9ddb9451 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c | |||
@@ -469,7 +469,7 @@ struct nf_conn *nf_conntrack_alloc(struct net *net, | |||
469 | const struct nf_conntrack_tuple *repl, | 469 | const struct nf_conntrack_tuple *repl, |
470 | gfp_t gfp) | 470 | gfp_t gfp) |
471 | { | 471 | { |
472 | struct nf_conn *ct = NULL; | 472 | struct nf_conn *ct; |
473 | 473 | ||
474 | if (unlikely(!nf_conntrack_hash_rnd_initted)) { | 474 | if (unlikely(!nf_conntrack_hash_rnd_initted)) { |
475 | get_random_bytes(&nf_conntrack_hash_rnd, 4); | 475 | get_random_bytes(&nf_conntrack_hash_rnd, 4); |
@@ -551,7 +551,7 @@ init_conntrack(struct net *net, | |||
551 | } | 551 | } |
552 | 552 | ||
553 | ct = nf_conntrack_alloc(net, tuple, &repl_tuple, GFP_ATOMIC); | 553 | ct = nf_conntrack_alloc(net, tuple, &repl_tuple, GFP_ATOMIC); |
554 | if (ct == NULL || IS_ERR(ct)) { | 554 | if (IS_ERR(ct)) { |
555 | pr_debug("Can't allocate conntrack.\n"); | 555 | pr_debug("Can't allocate conntrack.\n"); |
556 | return (struct nf_conntrack_tuple_hash *)ct; | 556 | return (struct nf_conntrack_tuple_hash *)ct; |
557 | } | 557 | } |
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c index 00e8c27130ff..c32a7e8e3a1b 100644 --- a/net/netfilter/nf_conntrack_netlink.c +++ b/net/netfilter/nf_conntrack_netlink.c | |||
@@ -831,13 +831,16 @@ ctnetlink_parse_nat_setup(struct nf_conn *ct, | |||
831 | if (!parse_nat_setup) { | 831 | if (!parse_nat_setup) { |
832 | #ifdef CONFIG_MODULES | 832 | #ifdef CONFIG_MODULES |
833 | rcu_read_unlock(); | 833 | rcu_read_unlock(); |
834 | spin_unlock_bh(&nf_conntrack_lock); | ||
834 | nfnl_unlock(); | 835 | nfnl_unlock(); |
835 | if (request_module("nf-nat-ipv4") < 0) { | 836 | if (request_module("nf-nat-ipv4") < 0) { |
836 | nfnl_lock(); | 837 | nfnl_lock(); |
838 | spin_lock_bh(&nf_conntrack_lock); | ||
837 | rcu_read_lock(); | 839 | rcu_read_lock(); |
838 | return -EOPNOTSUPP; | 840 | return -EOPNOTSUPP; |
839 | } | 841 | } |
840 | nfnl_lock(); | 842 | nfnl_lock(); |
843 | spin_lock_bh(&nf_conntrack_lock); | ||
841 | rcu_read_lock(); | 844 | rcu_read_lock(); |
842 | if (nfnetlink_parse_nat_setup_hook) | 845 | if (nfnetlink_parse_nat_setup_hook) |
843 | return -EAGAIN; | 846 | return -EAGAIN; |
@@ -1134,7 +1137,7 @@ ctnetlink_create_conntrack(struct nlattr *cda[], | |||
1134 | struct nf_conntrack_helper *helper; | 1137 | struct nf_conntrack_helper *helper; |
1135 | 1138 | ||
1136 | ct = nf_conntrack_alloc(&init_net, otuple, rtuple, GFP_ATOMIC); | 1139 | ct = nf_conntrack_alloc(&init_net, otuple, rtuple, GFP_ATOMIC); |
1137 | if (ct == NULL || IS_ERR(ct)) | 1140 | if (IS_ERR(ct)) |
1138 | return -ENOMEM; | 1141 | return -ENOMEM; |
1139 | 1142 | ||
1140 | if (!cda[CTA_TIMEOUT]) | 1143 | if (!cda[CTA_TIMEOUT]) |
diff --git a/net/netfilter/x_tables.c b/net/netfilter/x_tables.c index 89837a4eef76..bfbf521f6ea5 100644 --- a/net/netfilter/x_tables.c +++ b/net/netfilter/x_tables.c | |||
@@ -273,6 +273,10 @@ static int match_revfn(u8 af, const char *name, u8 revision, int *bestp) | |||
273 | have_rev = 1; | 273 | have_rev = 1; |
274 | } | 274 | } |
275 | } | 275 | } |
276 | |||
277 | if (af != NFPROTO_UNSPEC && !have_rev) | ||
278 | return match_revfn(NFPROTO_UNSPEC, name, revision, bestp); | ||
279 | |||
276 | return have_rev; | 280 | return have_rev; |
277 | } | 281 | } |
278 | 282 | ||
@@ -289,6 +293,10 @@ static int target_revfn(u8 af, const char *name, u8 revision, int *bestp) | |||
289 | have_rev = 1; | 293 | have_rev = 1; |
290 | } | 294 | } |
291 | } | 295 | } |
296 | |||
297 | if (af != NFPROTO_UNSPEC && !have_rev) | ||
298 | return target_revfn(NFPROTO_UNSPEC, name, revision, bestp); | ||
299 | |||
292 | return have_rev; | 300 | return have_rev; |
293 | } | 301 | } |
294 | 302 | ||
diff --git a/net/netfilter/xt_time.c b/net/netfilter/xt_time.c index 29375ba8db73..93acaa59d108 100644 --- a/net/netfilter/xt_time.c +++ b/net/netfilter/xt_time.c | |||
@@ -243,6 +243,17 @@ static struct xt_match xt_time_mt_reg __read_mostly = { | |||
243 | 243 | ||
244 | static int __init time_mt_init(void) | 244 | static int __init time_mt_init(void) |
245 | { | 245 | { |
246 | int minutes = sys_tz.tz_minuteswest; | ||
247 | |||
248 | if (minutes < 0) /* east of Greenwich */ | ||
249 | printk(KERN_INFO KBUILD_MODNAME | ||
250 | ": kernel timezone is +%02d%02d\n", | ||
251 | -minutes / 60, -minutes % 60); | ||
252 | else /* west of Greenwich */ | ||
253 | printk(KERN_INFO KBUILD_MODNAME | ||
254 | ": kernel timezone is -%02d%02d\n", | ||
255 | minutes / 60, minutes % 60); | ||
256 | |||
246 | return xt_register_match(&xt_time_mt_reg); | 257 | return xt_register_match(&xt_time_mt_reg); |
247 | } | 258 | } |
248 | 259 | ||
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c index 5070643ce534..2f0f0b04d3fb 100644 --- a/net/sched/sch_htb.c +++ b/net/sched/sch_htb.c | |||
@@ -661,12 +661,13 @@ static void htb_charge_class(struct htb_sched *q, struct htb_class *cl, | |||
661 | * next pending event (0 for no event in pq). | 661 | * next pending event (0 for no event in pq). |
662 | * Note: Applied are events whose have cl->pq_key <= q->now. | 662 | * Note: Applied are events whose have cl->pq_key <= q->now. |
663 | */ | 663 | */ |
664 | static psched_time_t htb_do_events(struct htb_sched *q, int level) | 664 | static psched_time_t htb_do_events(struct htb_sched *q, int level, |
665 | unsigned long start) | ||
665 | { | 666 | { |
666 | /* don't run for longer than 2 jiffies; 2 is used instead of | 667 | /* don't run for longer than 2 jiffies; 2 is used instead of |
667 | 1 to simplify things when jiffy is going to be incremented | 668 | 1 to simplify things when jiffy is going to be incremented |
668 | too soon */ | 669 | too soon */ |
669 | unsigned long stop_at = jiffies + 2; | 670 | unsigned long stop_at = start + 2; |
670 | while (time_before(jiffies, stop_at)) { | 671 | while (time_before(jiffies, stop_at)) { |
671 | struct htb_class *cl; | 672 | struct htb_class *cl; |
672 | long diff; | 673 | long diff; |
@@ -685,8 +686,8 @@ static psched_time_t htb_do_events(struct htb_sched *q, int level) | |||
685 | if (cl->cmode != HTB_CAN_SEND) | 686 | if (cl->cmode != HTB_CAN_SEND) |
686 | htb_add_to_wait_tree(q, cl, diff); | 687 | htb_add_to_wait_tree(q, cl, diff); |
687 | } | 688 | } |
688 | /* too much load - let's continue on next jiffie */ | 689 | /* too much load - let's continue on next jiffie (including above) */ |
689 | return q->now + PSCHED_TICKS_PER_SEC / HZ; | 690 | return q->now + 2 * PSCHED_TICKS_PER_SEC / HZ; |
690 | } | 691 | } |
691 | 692 | ||
692 | /* Returns class->node+prio from id-tree where classe's id is >= id. NULL | 693 | /* Returns class->node+prio from id-tree where classe's id is >= id. NULL |
@@ -845,6 +846,7 @@ static struct sk_buff *htb_dequeue(struct Qdisc *sch) | |||
845 | struct htb_sched *q = qdisc_priv(sch); | 846 | struct htb_sched *q = qdisc_priv(sch); |
846 | int level; | 847 | int level; |
847 | psched_time_t next_event; | 848 | psched_time_t next_event; |
849 | unsigned long start_at; | ||
848 | 850 | ||
849 | /* try to dequeue direct packets as high prio (!) to minimize cpu work */ | 851 | /* try to dequeue direct packets as high prio (!) to minimize cpu work */ |
850 | skb = __skb_dequeue(&q->direct_queue); | 852 | skb = __skb_dequeue(&q->direct_queue); |
@@ -857,6 +859,7 @@ static struct sk_buff *htb_dequeue(struct Qdisc *sch) | |||
857 | if (!sch->q.qlen) | 859 | if (!sch->q.qlen) |
858 | goto fin; | 860 | goto fin; |
859 | q->now = psched_get_time(); | 861 | q->now = psched_get_time(); |
862 | start_at = jiffies; | ||
860 | 863 | ||
861 | next_event = q->now + 5 * PSCHED_TICKS_PER_SEC; | 864 | next_event = q->now + 5 * PSCHED_TICKS_PER_SEC; |
862 | 865 | ||
@@ -866,14 +869,14 @@ static struct sk_buff *htb_dequeue(struct Qdisc *sch) | |||
866 | psched_time_t event; | 869 | psched_time_t event; |
867 | 870 | ||
868 | if (q->now >= q->near_ev_cache[level]) { | 871 | if (q->now >= q->near_ev_cache[level]) { |
869 | event = htb_do_events(q, level); | 872 | event = htb_do_events(q, level, start_at); |
870 | if (!event) | 873 | if (!event) |
871 | event = q->now + PSCHED_TICKS_PER_SEC; | 874 | event = q->now + PSCHED_TICKS_PER_SEC; |
872 | q->near_ev_cache[level] = event; | 875 | q->near_ev_cache[level] = event; |
873 | } else | 876 | } else |
874 | event = q->near_ev_cache[level]; | 877 | event = q->near_ev_cache[level]; |
875 | 878 | ||
876 | if (event && next_event > event) | 879 | if (next_event > event) |
877 | next_event = event; | 880 | next_event = event; |
878 | 881 | ||
879 | m = ~q->row_mask[level]; | 882 | m = ~q->row_mask[level]; |
diff --git a/net/sctp/input.c b/net/sctp/input.c index bf612d954d41..2e4a8646dbc3 100644 --- a/net/sctp/input.c +++ b/net/sctp/input.c | |||
@@ -249,6 +249,19 @@ int sctp_rcv(struct sk_buff *skb) | |||
249 | */ | 249 | */ |
250 | sctp_bh_lock_sock(sk); | 250 | sctp_bh_lock_sock(sk); |
251 | 251 | ||
252 | if (sk != rcvr->sk) { | ||
253 | /* Our cached sk is different from the rcvr->sk. This is | ||
254 | * because migrate()/accept() may have moved the association | ||
255 | * to a new socket and released all the sockets. So now we | ||
256 | * are holding a lock on the old socket while the user may | ||
257 | * be doing something with the new socket. Switch our veiw | ||
258 | * of the current sk. | ||
259 | */ | ||
260 | sctp_bh_unlock_sock(sk); | ||
261 | sk = rcvr->sk; | ||
262 | sctp_bh_lock_sock(sk); | ||
263 | } | ||
264 | |||
252 | if (sock_owned_by_user(sk)) { | 265 | if (sock_owned_by_user(sk)) { |
253 | SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_BACKLOG); | 266 | SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_BACKLOG); |
254 | sctp_add_backlog(sk, skb); | 267 | sctp_add_backlog(sk, skb); |
diff --git a/net/sctp/output.c b/net/sctp/output.c index c3f417f7ec6e..73639355157e 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c | |||
@@ -324,14 +324,16 @@ append: | |||
324 | switch (chunk->chunk_hdr->type) { | 324 | switch (chunk->chunk_hdr->type) { |
325 | case SCTP_CID_DATA: | 325 | case SCTP_CID_DATA: |
326 | retval = sctp_packet_append_data(packet, chunk); | 326 | retval = sctp_packet_append_data(packet, chunk); |
327 | if (SCTP_XMIT_OK != retval) | ||
328 | goto finish; | ||
327 | /* Disallow SACK bundling after DATA. */ | 329 | /* Disallow SACK bundling after DATA. */ |
328 | packet->has_sack = 1; | 330 | packet->has_sack = 1; |
329 | /* Disallow AUTH bundling after DATA */ | 331 | /* Disallow AUTH bundling after DATA */ |
330 | packet->has_auth = 1; | 332 | packet->has_auth = 1; |
331 | /* Let it be knows that packet has DATA in it */ | 333 | /* Let it be knows that packet has DATA in it */ |
332 | packet->has_data = 1; | 334 | packet->has_data = 1; |
333 | if (SCTP_XMIT_OK != retval) | 335 | /* timestamp the chunk for rtx purposes */ |
334 | goto finish; | 336 | chunk->sent_at = jiffies; |
335 | break; | 337 | break; |
336 | case SCTP_CID_COOKIE_ECHO: | 338 | case SCTP_CID_COOKIE_ECHO: |
337 | packet->has_cookie_echo = 1; | 339 | packet->has_cookie_echo = 1; |
@@ -470,7 +472,6 @@ int sctp_packet_transmit(struct sctp_packet *packet) | |||
470 | } else | 472 | } else |
471 | chunk->resent = 1; | 473 | chunk->resent = 1; |
472 | 474 | ||
473 | chunk->sent_at = jiffies; | ||
474 | has_data = 1; | 475 | has_data = 1; |
475 | } | 476 | } |
476 | 477 | ||
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 247ebc95c1e5..bc411c896216 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c | |||
@@ -929,7 +929,6 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
929 | } | 929 | } |
930 | 930 | ||
931 | /* Finally, transmit new packets. */ | 931 | /* Finally, transmit new packets. */ |
932 | start_timer = 0; | ||
933 | while ((chunk = sctp_outq_dequeue_data(q)) != NULL) { | 932 | while ((chunk = sctp_outq_dequeue_data(q)) != NULL) { |
934 | /* RFC 2960 6.5 Every DATA chunk MUST carry a valid | 933 | /* RFC 2960 6.5 Every DATA chunk MUST carry a valid |
935 | * stream identifier. | 934 | * stream identifier. |
@@ -1028,7 +1027,7 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
1028 | list_add_tail(&chunk->transmitted_list, | 1027 | list_add_tail(&chunk->transmitted_list, |
1029 | &transport->transmitted); | 1028 | &transport->transmitted); |
1030 | 1029 | ||
1031 | sctp_transport_reset_timers(transport, start_timer-1); | 1030 | sctp_transport_reset_timers(transport, 0); |
1032 | 1031 | ||
1033 | q->empty = 0; | 1032 | q->empty = 0; |
1034 | 1033 | ||
diff --git a/net/sunrpc/Kconfig b/net/sunrpc/Kconfig new file mode 100644 index 000000000000..eda4a7aee596 --- /dev/null +++ b/net/sunrpc/Kconfig | |||
@@ -0,0 +1,79 @@ | |||
1 | config SUNRPC | ||
2 | tristate | ||
3 | |||
4 | config SUNRPC_GSS | ||
5 | tristate | ||
6 | |||
7 | config SUNRPC_XPRT_RDMA | ||
8 | tristate | ||
9 | depends on SUNRPC && INFINIBAND && EXPERIMENTAL | ||
10 | default SUNRPC && INFINIBAND | ||
11 | help | ||
12 | This option enables an RPC client transport capability that | ||
13 | allows the NFS client to mount servers via an RDMA-enabled | ||
14 | transport. | ||
15 | |||
16 | To compile RPC client RDMA transport support as a module, | ||
17 | choose M here: the module will be called xprtrdma. | ||
18 | |||
19 | If unsure, say N. | ||
20 | |||
21 | config SUNRPC_REGISTER_V4 | ||
22 | bool "Register local RPC services via rpcbind v4 (EXPERIMENTAL)" | ||
23 | depends on SUNRPC && EXPERIMENTAL | ||
24 | default n | ||
25 | help | ||
26 | Sun added support for registering RPC services at an IPv6 | ||
27 | address by creating two new versions of the rpcbind protocol | ||
28 | (RFC 1833). | ||
29 | |||
30 | This option enables support in the kernel RPC server for | ||
31 | registering kernel RPC services via version 4 of the rpcbind | ||
32 | protocol. If you enable this option, you must run a portmapper | ||
33 | daemon that supports rpcbind protocol version 4. | ||
34 | |||
35 | Serving NFS over IPv6 from knfsd (the kernel's NFS server) | ||
36 | requires that you enable this option and use a portmapper that | ||
37 | supports rpcbind version 4. | ||
38 | |||
39 | If unsure, say N to get traditional behavior (register kernel | ||
40 | RPC services using only rpcbind version 2). Distributions | ||
41 | using the legacy Linux portmapper daemon must say N here. | ||
42 | |||
43 | config RPCSEC_GSS_KRB5 | ||
44 | tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)" | ||
45 | depends on SUNRPC && EXPERIMENTAL | ||
46 | select SUNRPC_GSS | ||
47 | select CRYPTO | ||
48 | select CRYPTO_MD5 | ||
49 | select CRYPTO_DES | ||
50 | select CRYPTO_CBC | ||
51 | help | ||
52 | Choose Y here to enable Secure RPC using the Kerberos version 5 | ||
53 | GSS-API mechanism (RFC 1964). | ||
54 | |||
55 | Secure RPC calls with Kerberos require an auxiliary user-space | ||
56 | daemon which may be found in the Linux nfs-utils package | ||
57 | available from http://linux-nfs.org/. In addition, user-space | ||
58 | Kerberos support should be installed. | ||
59 | |||
60 | If unsure, say N. | ||
61 | |||
62 | config RPCSEC_GSS_SPKM3 | ||
63 | tristate "Secure RPC: SPKM3 mechanism (EXPERIMENTAL)" | ||
64 | depends on SUNRPC && EXPERIMENTAL | ||
65 | select SUNRPC_GSS | ||
66 | select CRYPTO | ||
67 | select CRYPTO_MD5 | ||
68 | select CRYPTO_DES | ||
69 | select CRYPTO_CAST5 | ||
70 | select CRYPTO_CBC | ||
71 | help | ||
72 | Choose Y here to enable Secure RPC using the SPKM3 public key | ||
73 | GSS-API mechansim (RFC 2025). | ||
74 | |||
75 | Secure RPC calls with SPKM3 require an auxiliary userspace | ||
76 | daemon which may be found in the Linux nfs-utils package | ||
77 | available from http://linux-nfs.org/. | ||
78 | |||
79 | If unsure, say N. | ||
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 4f877535e666..bc494cef2102 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c | |||
@@ -421,6 +421,31 @@ static u32 freq_max_bandwidth(const struct ieee80211_freq_range *freq_range, | |||
421 | return 0; | 421 | return 0; |
422 | } | 422 | } |
423 | 423 | ||
424 | /** | ||
425 | * freq_in_rule_band - tells us if a frequency is in a frequency band | ||
426 | * @freq_range: frequency rule we want to query | ||
427 | * @freq_khz: frequency we are inquiring about | ||
428 | * | ||
429 | * This lets us know if a specific frequency rule is or is not relevant to | ||
430 | * a specific frequency's band. Bands are device specific and artificial | ||
431 | * definitions (the "2.4 GHz band" and the "5 GHz band"), however it is | ||
432 | * safe for now to assume that a frequency rule should not be part of a | ||
433 | * frequency's band if the start freq or end freq are off by more than 2 GHz. | ||
434 | * This resolution can be lowered and should be considered as we add | ||
435 | * regulatory rule support for other "bands". | ||
436 | **/ | ||
437 | static bool freq_in_rule_band(const struct ieee80211_freq_range *freq_range, | ||
438 | u32 freq_khz) | ||
439 | { | ||
440 | #define ONE_GHZ_IN_KHZ 1000000 | ||
441 | if (abs(freq_khz - freq_range->start_freq_khz) <= (2 * ONE_GHZ_IN_KHZ)) | ||
442 | return true; | ||
443 | if (abs(freq_khz - freq_range->end_freq_khz) <= (2 * ONE_GHZ_IN_KHZ)) | ||
444 | return true; | ||
445 | return false; | ||
446 | #undef ONE_GHZ_IN_KHZ | ||
447 | } | ||
448 | |||
424 | /* Converts a country IE to a regulatory domain. A regulatory domain | 449 | /* Converts a country IE to a regulatory domain. A regulatory domain |
425 | * structure has a lot of information which the IE doesn't yet have, | 450 | * structure has a lot of information which the IE doesn't yet have, |
426 | * so for the other values we use upper max values as we will intersect | 451 | * so for the other values we use upper max values as we will intersect |
@@ -538,6 +563,7 @@ static struct ieee80211_regdomain *country_ie_2_rd( | |||
538 | 563 | ||
539 | /* This time around we fill in the rd */ | 564 | /* This time around we fill in the rd */ |
540 | while (country_ie_len >= 3) { | 565 | while (country_ie_len >= 3) { |
566 | int end_channel = 0; | ||
541 | struct ieee80211_country_ie_triplet *triplet = | 567 | struct ieee80211_country_ie_triplet *triplet = |
542 | (struct ieee80211_country_ie_triplet *) country_ie; | 568 | (struct ieee80211_country_ie_triplet *) country_ie; |
543 | struct ieee80211_reg_rule *reg_rule = NULL; | 569 | struct ieee80211_reg_rule *reg_rule = NULL; |
@@ -559,6 +585,23 @@ static struct ieee80211_regdomain *country_ie_2_rd( | |||
559 | 585 | ||
560 | reg_rule->flags = flags; | 586 | reg_rule->flags = flags; |
561 | 587 | ||
588 | /* 2 GHz */ | ||
589 | if (triplet->chans.first_channel <= 14) | ||
590 | end_channel = triplet->chans.first_channel + | ||
591 | triplet->chans.num_channels; | ||
592 | else | ||
593 | /* | ||
594 | * 5 GHz -- For example in country IEs if the first | ||
595 | * channel given is 36 and the number of channels is 4 | ||
596 | * then the individual channel numbers defined for the | ||
597 | * 5 GHz PHY by these parameters are: 36, 40, 44, and 48 | ||
598 | * and not 36, 37, 38, 39. | ||
599 | * | ||
600 | * See: http://tinyurl.com/11d-clarification | ||
601 | */ | ||
602 | end_channel = triplet->chans.first_channel + | ||
603 | (4 * (triplet->chans.num_channels - 1)); | ||
604 | |||
562 | /* The +10 is since the regulatory domain expects | 605 | /* The +10 is since the regulatory domain expects |
563 | * the actual band edge, not the center of freq for | 606 | * the actual band edge, not the center of freq for |
564 | * its start and end freqs, assuming 20 MHz bandwidth on | 607 | * its start and end freqs, assuming 20 MHz bandwidth on |
@@ -568,8 +611,7 @@ static struct ieee80211_regdomain *country_ie_2_rd( | |||
568 | triplet->chans.first_channel) - 10); | 611 | triplet->chans.first_channel) - 10); |
569 | freq_range->end_freq_khz = | 612 | freq_range->end_freq_khz = |
570 | MHZ_TO_KHZ(ieee80211_channel_to_frequency( | 613 | MHZ_TO_KHZ(ieee80211_channel_to_frequency( |
571 | triplet->chans.first_channel + | 614 | end_channel) + 10); |
572 | triplet->chans.num_channels) + 10); | ||
573 | 615 | ||
574 | /* Large arbitrary values, we intersect later */ | 616 | /* Large arbitrary values, we intersect later */ |
575 | /* Increment this if we ever support >= 40 MHz channels | 617 | /* Increment this if we ever support >= 40 MHz channels |
@@ -748,12 +790,23 @@ static u32 map_regdom_flags(u32 rd_flags) | |||
748 | * this value to the maximum allowed bandwidth. | 790 | * this value to the maximum allowed bandwidth. |
749 | * @reg_rule: the regulatory rule which we have for this frequency | 791 | * @reg_rule: the regulatory rule which we have for this frequency |
750 | * | 792 | * |
751 | * Use this function to get the regulatory rule for a specific frequency. | 793 | * Use this function to get the regulatory rule for a specific frequency on |
794 | * a given wireless device. If the device has a specific regulatory domain | ||
795 | * it wants to follow we respect that unless a country IE has been received | ||
796 | * and processed already. | ||
797 | * | ||
798 | * Returns 0 if it was able to find a valid regulatory rule which does | ||
799 | * apply to the given center_freq otherwise it returns non-zero. It will | ||
800 | * also return -ERANGE if we determine the given center_freq does not even have | ||
801 | * a regulatory rule for a frequency range in the center_freq's band. See | ||
802 | * freq_in_rule_band() for our current definition of a band -- this is purely | ||
803 | * subjective and right now its 802.11 specific. | ||
752 | */ | 804 | */ |
753 | static int freq_reg_info(u32 center_freq, u32 *bandwidth, | 805 | static int freq_reg_info(u32 center_freq, u32 *bandwidth, |
754 | const struct ieee80211_reg_rule **reg_rule) | 806 | const struct ieee80211_reg_rule **reg_rule) |
755 | { | 807 | { |
756 | int i; | 808 | int i; |
809 | bool band_rule_found = false; | ||
757 | u32 max_bandwidth = 0; | 810 | u32 max_bandwidth = 0; |
758 | 811 | ||
759 | if (!cfg80211_regdomain) | 812 | if (!cfg80211_regdomain) |
@@ -767,7 +820,15 @@ static int freq_reg_info(u32 center_freq, u32 *bandwidth, | |||
767 | rr = &cfg80211_regdomain->reg_rules[i]; | 820 | rr = &cfg80211_regdomain->reg_rules[i]; |
768 | fr = &rr->freq_range; | 821 | fr = &rr->freq_range; |
769 | pr = &rr->power_rule; | 822 | pr = &rr->power_rule; |
823 | |||
824 | /* We only need to know if one frequency rule was | ||
825 | * was in center_freq's band, that's enough, so lets | ||
826 | * not overwrite it once found */ | ||
827 | if (!band_rule_found) | ||
828 | band_rule_found = freq_in_rule_band(fr, center_freq); | ||
829 | |||
770 | max_bandwidth = freq_max_bandwidth(fr, center_freq); | 830 | max_bandwidth = freq_max_bandwidth(fr, center_freq); |
831 | |||
771 | if (max_bandwidth && *bandwidth <= max_bandwidth) { | 832 | if (max_bandwidth && *bandwidth <= max_bandwidth) { |
772 | *reg_rule = rr; | 833 | *reg_rule = rr; |
773 | *bandwidth = max_bandwidth; | 834 | *bandwidth = max_bandwidth; |
@@ -775,23 +836,64 @@ static int freq_reg_info(u32 center_freq, u32 *bandwidth, | |||
775 | } | 836 | } |
776 | } | 837 | } |
777 | 838 | ||
839 | if (!band_rule_found) | ||
840 | return -ERANGE; | ||
841 | |||
778 | return !max_bandwidth; | 842 | return !max_bandwidth; |
779 | } | 843 | } |
780 | 844 | ||
781 | static void handle_channel(struct ieee80211_channel *chan) | 845 | static void handle_channel(struct wiphy *wiphy, enum ieee80211_band band, |
846 | unsigned int chan_idx) | ||
782 | { | 847 | { |
783 | int r; | 848 | int r; |
784 | u32 flags = chan->orig_flags; | 849 | u32 flags; |
785 | u32 max_bandwidth = 0; | 850 | u32 max_bandwidth = 0; |
786 | const struct ieee80211_reg_rule *reg_rule = NULL; | 851 | const struct ieee80211_reg_rule *reg_rule = NULL; |
787 | const struct ieee80211_power_rule *power_rule = NULL; | 852 | const struct ieee80211_power_rule *power_rule = NULL; |
853 | struct ieee80211_supported_band *sband; | ||
854 | struct ieee80211_channel *chan; | ||
855 | |||
856 | sband = wiphy->bands[band]; | ||
857 | BUG_ON(chan_idx >= sband->n_channels); | ||
858 | chan = &sband->channels[chan_idx]; | ||
859 | |||
860 | flags = chan->orig_flags; | ||
788 | 861 | ||
789 | r = freq_reg_info(MHZ_TO_KHZ(chan->center_freq), | 862 | r = freq_reg_info(MHZ_TO_KHZ(chan->center_freq), |
790 | &max_bandwidth, ®_rule); | 863 | &max_bandwidth, ®_rule); |
791 | 864 | ||
792 | if (r) { | 865 | if (r) { |
793 | flags |= IEEE80211_CHAN_DISABLED; | 866 | /* This means no regulatory rule was found in the country IE |
794 | chan->flags = flags; | 867 | * with a frequency range on the center_freq's band, since |
868 | * IEEE-802.11 allows for a country IE to have a subset of the | ||
869 | * regulatory information provided in a country we ignore | ||
870 | * disabling the channel unless at least one reg rule was | ||
871 | * found on the center_freq's band. For details see this | ||
872 | * clarification: | ||
873 | * | ||
874 | * http://tinyurl.com/11d-clarification | ||
875 | */ | ||
876 | if (r == -ERANGE && | ||
877 | last_request->initiator == REGDOM_SET_BY_COUNTRY_IE) { | ||
878 | #ifdef CONFIG_CFG80211_REG_DEBUG | ||
879 | printk(KERN_DEBUG "cfg80211: Leaving channel %d MHz " | ||
880 | "intact on %s - no rule found in band on " | ||
881 | "Country IE\n", | ||
882 | chan->center_freq, wiphy_name(wiphy)); | ||
883 | #endif | ||
884 | } else { | ||
885 | /* In this case we know the country IE has at least one reg rule | ||
886 | * for the band so we respect its band definitions */ | ||
887 | #ifdef CONFIG_CFG80211_REG_DEBUG | ||
888 | if (last_request->initiator == REGDOM_SET_BY_COUNTRY_IE) | ||
889 | printk(KERN_DEBUG "cfg80211: Disabling " | ||
890 | "channel %d MHz on %s due to " | ||
891 | "Country IE\n", | ||
892 | chan->center_freq, wiphy_name(wiphy)); | ||
893 | #endif | ||
894 | flags |= IEEE80211_CHAN_DISABLED; | ||
895 | chan->flags = flags; | ||
896 | } | ||
795 | return; | 897 | return; |
796 | } | 898 | } |
797 | 899 | ||
@@ -808,12 +910,16 @@ static void handle_channel(struct ieee80211_channel *chan) | |||
808 | chan->max_power = (int) MBM_TO_DBM(power_rule->max_eirp); | 910 | chan->max_power = (int) MBM_TO_DBM(power_rule->max_eirp); |
809 | } | 911 | } |
810 | 912 | ||
811 | static void handle_band(struct ieee80211_supported_band *sband) | 913 | static void handle_band(struct wiphy *wiphy, enum ieee80211_band band) |
812 | { | 914 | { |
813 | int i; | 915 | unsigned int i; |
916 | struct ieee80211_supported_band *sband; | ||
917 | |||
918 | BUG_ON(!wiphy->bands[band]); | ||
919 | sband = wiphy->bands[band]; | ||
814 | 920 | ||
815 | for (i = 0; i < sband->n_channels; i++) | 921 | for (i = 0; i < sband->n_channels; i++) |
816 | handle_channel(&sband->channels[i]); | 922 | handle_channel(wiphy, band, i); |
817 | } | 923 | } |
818 | 924 | ||
819 | static bool ignore_reg_update(struct wiphy *wiphy, enum reg_set_by setby) | 925 | static bool ignore_reg_update(struct wiphy *wiphy, enum reg_set_by setby) |
@@ -840,7 +946,7 @@ void wiphy_update_regulatory(struct wiphy *wiphy, enum reg_set_by setby) | |||
840 | enum ieee80211_band band; | 946 | enum ieee80211_band band; |
841 | for (band = 0; band < IEEE80211_NUM_BANDS; band++) { | 947 | for (band = 0; band < IEEE80211_NUM_BANDS; band++) { |
842 | if (wiphy->bands[band]) | 948 | if (wiphy->bands[band]) |
843 | handle_band(wiphy->bands[band]); | 949 | handle_band(wiphy, band); |
844 | if (wiphy->reg_notifier) | 950 | if (wiphy->reg_notifier) |
845 | wiphy->reg_notifier(wiphy, setby); | 951 | wiphy->reg_notifier(wiphy, setby); |
846 | } | 952 | } |
diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 5d900307de3e..c7de8b39fcf1 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build | |||
@@ -151,16 +151,16 @@ cmd_cc_i_c = $(CPP) $(c_flags) -o $@ $< | |||
151 | $(obj)/%.i: $(src)/%.c FORCE | 151 | $(obj)/%.i: $(src)/%.c FORCE |
152 | $(call if_changed_dep,cc_i_c) | 152 | $(call if_changed_dep,cc_i_c) |
153 | 153 | ||
154 | cmd_genksyms = \ | 154 | cmd_gensymtypes = \ |
155 | $(CPP) -D__GENKSYMS__ $(c_flags) $< | \ | 155 | $(CPP) -D__GENKSYMS__ $(c_flags) $< | \ |
156 | $(GENKSYMS) -T $@ -A -a $(ARCH) \ | 156 | $(GENKSYMS) -T $@ -a $(ARCH) \ |
157 | $(if $(KBUILD_PRESERVE),-p) \ | 157 | $(if $(KBUILD_PRESERVE),-p) \ |
158 | $(if $(1),-r $(firstword $(wildcard $(@:.symtypes=.symref) /dev/null))) | 158 | $(if $(1),-r $(firstword $(wildcard $(@:.symtypes=.symref) /dev/null))) |
159 | 159 | ||
160 | quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@ | 160 | quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@ |
161 | cmd_cc_symtypes_c = \ | 161 | cmd_cc_symtypes_c = \ |
162 | set -e; \ | 162 | set -e; \ |
163 | $(call cmd_genksyms, true) >/dev/null; \ | 163 | $(call cmd_gensymtypes, true) >/dev/null; \ |
164 | test -s $@ || rm -f $@ | 164 | test -s $@ || rm -f $@ |
165 | 165 | ||
166 | $(obj)/%.symtypes : $(src)/%.c FORCE | 166 | $(obj)/%.symtypes : $(src)/%.c FORCE |
@@ -177,38 +177,28 @@ cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< | |||
177 | 177 | ||
178 | else | 178 | else |
179 | # When module versioning is enabled the following steps are executed: | 179 | # When module versioning is enabled the following steps are executed: |
180 | # o compile a .tmp_<file>.s from <file>.c | 180 | # o compile a .tmp_<file>.o from <file>.c |
181 | # o if .tmp_<file>.s doesn't contain a __ksymtab version, i.e. does | 181 | # o if .tmp_<file>.o doesn't contain a __ksymtab version, i.e. does |
182 | # not export symbols, we just assemble .tmp_<file>.s to <file>.o and | 182 | # not export symbols, we just rename .tmp_<file>.o to <file>.o and |
183 | # are done. | 183 | # are done. |
184 | # o otherwise, we calculate symbol versions using the good old | 184 | # o otherwise, we calculate symbol versions using the good old |
185 | # genksyms on the preprocessed source and postprocess them in a way | 185 | # genksyms on the preprocessed source and postprocess them in a way |
186 | # that they are usable as assembly source | 186 | # that they are usable as a linker script |
187 | # o assemble <file>.o from .tmp_<file>.s forcing inclusion of directives | 187 | # o generate <file>.o from .tmp_<file>.o using the linker to |
188 | # defining the actual values of __crc_*, followed by objcopy-ing them | 188 | # replace the unresolved symbols __crc_exported_symbol with |
189 | # to force these symbols to be local to permit stripping them later. | 189 | # the actual value of the checksum generated by genksyms |
190 | s_file = $(@D)/.tmp_$(@F:.o=.s) | ||
191 | v_file = $(@D)/.tmp_$(@F:.o=.v) | ||
192 | tmp_o_file = $(@D)/.tmp_$(@F) | ||
193 | no_g_c_flags = $(filter-out -g%,$(c_flags)) | ||
194 | |||
195 | cmd_cc_o_c = $(CC) $(c_flags) -S -o $(s_file) $< | ||
196 | 190 | ||
191 | cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $< | ||
197 | cmd_modversions = \ | 192 | cmd_modversions = \ |
198 | if grep -q __ksymtab $(s_file); then \ | 193 | if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \ |
199 | if $(call cmd_genksyms, $(KBUILD_SYMTYPES)) > $(v_file) \ | 194 | $(call cmd_gensymtypes, $(KBUILD_SYMTYPES)) \ |
200 | && $(CC) $(no_g_c_flags) -c -Wa,$(v_file) \ | 195 | > $(@D)/.tmp_$(@F:.o=.ver); \ |
201 | -o $(tmp_o_file) $(s_file) \ | 196 | \ |
202 | && $(OBJCOPY) -L '__crc_*' -L '___crc_*' -w \ | 197 | $(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \ |
203 | $(tmp_o_file) $@; \ | 198 | -T $(@D)/.tmp_$(@F:.o=.ver); \ |
204 | then \ | 199 | rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver); \ |
205 | : ; \ | ||
206 | else \ | ||
207 | rm -f $@; exit 1; \ | ||
208 | fi; \ | ||
209 | else \ | 200 | else \ |
210 | rm -f $(v_file); \ | 201 | mv -f $(@D)/.tmp_$(@F) $@; \ |
211 | $(CC) $(no_g_c_flags) -c -o $@ $(s_file); \ | ||
212 | fi; | 202 | fi; |
213 | endif | 203 | endif |
214 | 204 | ||
@@ -225,12 +215,7 @@ define rule_cc_o_c | |||
225 | $(cmd_record_mcount) \ | 215 | $(cmd_record_mcount) \ |
226 | scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \ | 216 | scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \ |
227 | $(dot-target).tmp; \ | 217 | $(dot-target).tmp; \ |
228 | if [ -r $(@D)/.tmp_$(@F:.o=.v) ]; then \ | 218 | rm -f $(depfile); \ |
229 | echo >> $(dot-target).tmp; \ | ||
230 | echo '$@: $(GENKSYMS)' >> $(dot-target).tmp; \ | ||
231 | echo '$(GENKSYMS):: ;' >> $(dot-target).tmp; \ | ||
232 | fi; \ | ||
233 | rm -f $(depfile) $(@D)/.tmp_$(@F:.o=.?); \ | ||
234 | mv -f $(dot-target).tmp $(dot-target).cmd | 219 | mv -f $(dot-target).tmp $(dot-target).cmd |
235 | endef | 220 | endef |
236 | 221 | ||
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst index a5122dce1264..efa5d940e632 100644 --- a/scripts/Makefile.modinst +++ b/scripts/Makefile.modinst | |||
@@ -17,8 +17,7 @@ __modinst: $(modules) | |||
17 | @: | 17 | @: |
18 | 18 | ||
19 | quiet_cmd_modules_install = INSTALL $@ | 19 | quiet_cmd_modules_install = INSTALL $@ |
20 | cmd_modules_install = mkdir -p $(2); \ | 20 | cmd_modules_install = mkdir -p $(2); cp $@ $(2) ; $(mod_strip_cmd) $(2)/$(notdir $@) |
21 | $(mod_strip_cmd) $@ $(2)/$(notdir $@) || cp $@ $(2) | ||
22 | 21 | ||
23 | # Modules built outside the kernel source tree go into extra by default | 22 | # Modules built outside the kernel source tree go into extra by default |
24 | INSTALL_MOD_DIR ?= extra | 23 | INSTALL_MOD_DIR ?= extra |
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 7bed4ed2c519..45eb0ae98eba 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl | |||
@@ -10,7 +10,7 @@ use strict; | |||
10 | my $P = $0; | 10 | my $P = $0; |
11 | $P =~ s@.*/@@g; | 11 | $P =~ s@.*/@@g; |
12 | 12 | ||
13 | my $V = '0.26'; | 13 | my $V = '0.27'; |
14 | 14 | ||
15 | use Getopt::Long qw(:config no_auto_abbrev); | 15 | use Getopt::Long qw(:config no_auto_abbrev); |
16 | 16 | ||
@@ -411,13 +411,15 @@ sub ctx_statement_block { | |||
411 | 411 | ||
412 | my $type = ''; | 412 | my $type = ''; |
413 | my $level = 0; | 413 | my $level = 0; |
414 | my @stack = ([$type, $level]); | 414 | my @stack = (); |
415 | my $p; | 415 | my $p; |
416 | my $c; | 416 | my $c; |
417 | my $len = 0; | 417 | my $len = 0; |
418 | 418 | ||
419 | my $remainder; | 419 | my $remainder; |
420 | while (1) { | 420 | while (1) { |
421 | @stack = (['', 0]) if ($#stack == -1); | ||
422 | |||
421 | #warn "CSB: blk<$blk> remain<$remain>\n"; | 423 | #warn "CSB: blk<$blk> remain<$remain>\n"; |
422 | # If we are about to drop off the end, pull in more | 424 | # If we are about to drop off the end, pull in more |
423 | # context. | 425 | # context. |
@@ -1663,7 +1665,7 @@ sub process { | |||
1663 | # Should not end with a space. | 1665 | # Should not end with a space. |
1664 | $to =~ s/\s+$//; | 1666 | $to =~ s/\s+$//; |
1665 | # '*'s should not have spaces between. | 1667 | # '*'s should not have spaces between. |
1666 | while ($to =~ s/(.)\s\*/$1\*/) { | 1668 | while ($to =~ s/\*\s+\*/\*\*/) { |
1667 | } | 1669 | } |
1668 | 1670 | ||
1669 | #print "from<$from> to<$to>\n"; | 1671 | #print "from<$from> to<$to>\n"; |
@@ -1678,7 +1680,7 @@ sub process { | |||
1678 | # Should not end with a space. | 1680 | # Should not end with a space. |
1679 | $to =~ s/\s+$//; | 1681 | $to =~ s/\s+$//; |
1680 | # '*'s should not have spaces between. | 1682 | # '*'s should not have spaces between. |
1681 | while ($to =~ s/(.)\s\*/$1\*/) { | 1683 | while ($to =~ s/\*\s+\*/\*\*/) { |
1682 | } | 1684 | } |
1683 | # Modifiers should have spaces. | 1685 | # Modifiers should have spaces. |
1684 | $to =~ s/(\b$Modifier$)/$1 /; | 1686 | $to =~ s/(\b$Modifier$)/$1 /; |
@@ -2014,7 +2016,11 @@ sub process { | |||
2014 | 2016 | ||
2015 | # Flatten any parentheses | 2017 | # Flatten any parentheses |
2016 | $value =~ s/\)\(/\) \(/g; | 2018 | $value =~ s/\)\(/\) \(/g; |
2017 | while ($value !~ /(?:$Ident|-?$Constant)\s*$Compare\s*(?:$Ident|-?$Constant)/ && $value =~ s/\([^\(\)]*\)/1/) { | 2019 | while ($value =~ s/\[[^\{\}]*\]/1/ || |
2020 | $value !~ /(?:$Ident|-?$Constant)\s* | ||
2021 | $Compare\s* | ||
2022 | (?:$Ident|-?$Constant)/x && | ||
2023 | $value =~ s/\([^\(\)]*\)/1/) { | ||
2018 | } | 2024 | } |
2019 | 2025 | ||
2020 | if ($value =~ /^(?:$Ident|-?$Constant)$/) { | 2026 | if ($value =~ /^(?:$Ident|-?$Constant)$/) { |
@@ -2102,6 +2108,11 @@ sub process { | |||
2102 | ERROR("trailing statements should be on next line\n" . $herecurr); | 2108 | ERROR("trailing statements should be on next line\n" . $herecurr); |
2103 | } | 2109 | } |
2104 | } | 2110 | } |
2111 | # if should not continue a brace | ||
2112 | if ($line =~ /}\s*if\b/) { | ||
2113 | ERROR("trailing statements should be on next line\n" . | ||
2114 | $herecurr); | ||
2115 | } | ||
2105 | # case and default should not have general statements after them | 2116 | # case and default should not have general statements after them |
2106 | if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g && | 2117 | if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g && |
2107 | $line !~ /\G(?: | 2118 | $line !~ /\G(?: |
@@ -2516,9 +2527,10 @@ sub process { | |||
2516 | WARN("please use device_initcall() instead of __initcall()\n" . $herecurr); | 2527 | WARN("please use device_initcall() instead of __initcall()\n" . $herecurr); |
2517 | } | 2528 | } |
2518 | # check for struct file_operations, ensure they are const. | 2529 | # check for struct file_operations, ensure they are const. |
2519 | if ($line =~ /\bstruct\s+file_operations\b/ && | 2530 | if ($line !~ /\bconst\b/ && |
2520 | $line !~ /\bconst\b/) { | 2531 | $line =~ /\bstruct\s+(file_operations|seq_operations)\b/) { |
2521 | WARN("struct file_operations should normally be const\n" . $herecurr); | 2532 | WARN("struct $1 should normally be const\n" . |
2533 | $herecurr); | ||
2522 | } | 2534 | } |
2523 | 2535 | ||
2524 | # use of NR_CPUS is usually wrong | 2536 | # use of NR_CPUS is usually wrong |
diff --git a/scripts/config b/scripts/config index 68b9761cdc38..db6084b78a10 100755 --- a/scripts/config +++ b/scripts/config | |||
@@ -60,6 +60,10 @@ else | |||
60 | FN=.config | 60 | FN=.config |
61 | fi | 61 | fi |
62 | 62 | ||
63 | if [ "$1" = "" ] ; then | ||
64 | usage | ||
65 | fi | ||
66 | |||
63 | while [ "$1" != "" ] ; do | 67 | while [ "$1" != "" ] ; do |
64 | CMD="$1" | 68 | CMD="$1" |
65 | shift | 69 | shift |
diff --git a/scripts/genksyms/genksyms.c b/scripts/genksyms/genksyms.c index f8bb4cabd62d..3a8297b5184c 100644 --- a/scripts/genksyms/genksyms.c +++ b/scripts/genksyms/genksyms.c | |||
@@ -43,7 +43,7 @@ int cur_line = 1; | |||
43 | char *cur_filename; | 43 | char *cur_filename; |
44 | 44 | ||
45 | static int flag_debug, flag_dump_defs, flag_reference, flag_dump_types, | 45 | static int flag_debug, flag_dump_defs, flag_reference, flag_dump_types, |
46 | flag_preserve, flag_warnings, flag_asm; | 46 | flag_preserve, flag_warnings; |
47 | static const char *arch = ""; | 47 | static const char *arch = ""; |
48 | static const char *mod_prefix = ""; | 48 | static const char *mod_prefix = ""; |
49 | 49 | ||
@@ -610,11 +610,8 @@ void export_symbol(const char *name) | |||
610 | if (flag_dump_defs) | 610 | if (flag_dump_defs) |
611 | fputs(">\n", debugfile); | 611 | fputs(">\n", debugfile); |
612 | 612 | ||
613 | /* Used as assembly source or a linker script. */ | 613 | /* Used as a linker script. */ |
614 | printf(flag_asm | 614 | printf("%s__crc_%s = 0x%08lx ;\n", mod_prefix, name, crc); |
615 | ? ".equiv %s__crc_%s, %#08lx\n" | ||
616 | : "%s__crc_%s = %#08lx ;\n", | ||
617 | mod_prefix, name, crc); | ||
618 | } | 615 | } |
619 | } | 616 | } |
620 | 617 | ||
@@ -651,10 +648,9 @@ void error_with_pos(const char *fmt, ...) | |||
651 | 648 | ||
652 | static void genksyms_usage(void) | 649 | static void genksyms_usage(void) |
653 | { | 650 | { |
654 | fputs("Usage:\n" "genksyms [-aAdDTwqhV] > /path/to/.tmp_obj.ver\n" "\n" | 651 | fputs("Usage:\n" "genksyms [-adDTwqhV] > /path/to/.tmp_obj.ver\n" "\n" |
655 | #ifdef __GNU_LIBRARY__ | 652 | #ifdef __GNU_LIBRARY__ |
656 | " -a, --arch Select architecture\n" | 653 | " -a, --arch Select architecture\n" |
657 | " -A, --asm Generate assembly rather than linker script\n" | ||
658 | " -d, --debug Increment the debug level (repeatable)\n" | 654 | " -d, --debug Increment the debug level (repeatable)\n" |
659 | " -D, --dump Dump expanded symbol defs (for debugging only)\n" | 655 | " -D, --dump Dump expanded symbol defs (for debugging only)\n" |
660 | " -r, --reference file Read reference symbols from a file\n" | 656 | " -r, --reference file Read reference symbols from a file\n" |
@@ -666,7 +662,6 @@ static void genksyms_usage(void) | |||
666 | " -V, --version Print the release version\n" | 662 | " -V, --version Print the release version\n" |
667 | #else /* __GNU_LIBRARY__ */ | 663 | #else /* __GNU_LIBRARY__ */ |
668 | " -a Select architecture\n" | 664 | " -a Select architecture\n" |
669 | " -A Generate assembly rather than linker script\n" | ||
670 | " -d Increment the debug level (repeatable)\n" | 665 | " -d Increment the debug level (repeatable)\n" |
671 | " -D Dump expanded symbol defs (for debugging only)\n" | 666 | " -D Dump expanded symbol defs (for debugging only)\n" |
672 | " -r file Read reference symbols from a file\n" | 667 | " -r file Read reference symbols from a file\n" |
@@ -688,7 +683,6 @@ int main(int argc, char **argv) | |||
688 | #ifdef __GNU_LIBRARY__ | 683 | #ifdef __GNU_LIBRARY__ |
689 | struct option long_opts[] = { | 684 | struct option long_opts[] = { |
690 | {"arch", 1, 0, 'a'}, | 685 | {"arch", 1, 0, 'a'}, |
691 | {"asm", 0, 0, 'A'}, | ||
692 | {"debug", 0, 0, 'd'}, | 686 | {"debug", 0, 0, 'd'}, |
693 | {"warnings", 0, 0, 'w'}, | 687 | {"warnings", 0, 0, 'w'}, |
694 | {"quiet", 0, 0, 'q'}, | 688 | {"quiet", 0, 0, 'q'}, |
@@ -701,10 +695,10 @@ int main(int argc, char **argv) | |||
701 | {0, 0, 0, 0} | 695 | {0, 0, 0, 0} |
702 | }; | 696 | }; |
703 | 697 | ||
704 | while ((o = getopt_long(argc, argv, "a:dwqVADr:T:ph", | 698 | while ((o = getopt_long(argc, argv, "a:dwqVDr:T:ph", |
705 | &long_opts[0], NULL)) != EOF) | 699 | &long_opts[0], NULL)) != EOF) |
706 | #else /* __GNU_LIBRARY__ */ | 700 | #else /* __GNU_LIBRARY__ */ |
707 | while ((o = getopt(argc, argv, "a:dwqVADr:T:ph")) != EOF) | 701 | while ((o = getopt(argc, argv, "a:dwqVDr:T:ph")) != EOF) |
708 | #endif /* __GNU_LIBRARY__ */ | 702 | #endif /* __GNU_LIBRARY__ */ |
709 | switch (o) { | 703 | switch (o) { |
710 | case 'a': | 704 | case 'a': |
@@ -722,9 +716,6 @@ int main(int argc, char **argv) | |||
722 | case 'V': | 716 | case 'V': |
723 | fputs("genksyms version 2.5.60\n", stderr); | 717 | fputs("genksyms version 2.5.60\n", stderr); |
724 | break; | 718 | break; |
725 | case 'A': | ||
726 | flag_asm = 1; | ||
727 | break; | ||
728 | case 'D': | 719 | case 'D': |
729 | flag_dump_defs = 1; | 720 | flag_dump_defs = 1; |
730 | break; | 721 | break; |
diff --git a/scripts/genksyms/keywords.c_shipped b/scripts/genksyms/keywords.c_shipped index 83484fe93ede..971e0113ae7a 100644 --- a/scripts/genksyms/keywords.c_shipped +++ b/scripts/genksyms/keywords.c_shipped | |||
@@ -1,4 +1,4 @@ | |||
1 | /* ANSI-C code produced by gperf version 3.0.1 */ | 1 | /* ANSI-C code produced by gperf version 3.0.2 */ |
2 | /* Command-line: gperf -L ANSI-C -a -C -E -g -H is_reserved_hash -k '1,3,$' -N is_reserved_word -p -t scripts/genksyms/keywords.gperf */ | 2 | /* Command-line: gperf -L ANSI-C -a -C -E -g -H is_reserved_hash -k '1,3,$' -N is_reserved_word -p -t scripts/genksyms/keywords.gperf */ |
3 | 3 | ||
4 | #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ | 4 | #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ |
@@ -32,7 +32,7 @@ | |||
32 | 32 | ||
33 | #line 3 "scripts/genksyms/keywords.gperf" | 33 | #line 3 "scripts/genksyms/keywords.gperf" |
34 | struct resword { const char *name; int token; }; | 34 | struct resword { const char *name; int token; }; |
35 | /* maximum key range = 64, duplicates = 0 */ | 35 | /* maximum key range = 62, duplicates = 0 */ |
36 | 36 | ||
37 | #ifdef __GNUC__ | 37 | #ifdef __GNUC__ |
38 | __inline | 38 | __inline |
@@ -46,32 +46,32 @@ is_reserved_hash (register const char *str, register unsigned int len) | |||
46 | { | 46 | { |
47 | static const unsigned char asso_values[] = | 47 | static const unsigned char asso_values[] = |
48 | { | 48 | { |
49 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 49 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
50 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 50 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
51 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 51 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
52 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 52 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
53 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 53 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
54 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 54 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
55 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, | 55 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 5, |
56 | 67, 67, 67, 67, 67, 67, 15, 67, 67, 67, | 56 | 65, 65, 65, 65, 65, 65, 35, 65, 65, 65, |
57 | 0, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 57 | 0, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
58 | 67, 67, 67, 67, 67, 0, 67, 0, 67, 5, | 58 | 65, 65, 65, 65, 65, 0, 65, 0, 65, 5, |
59 | 25, 20, 15, 30, 67, 15, 67, 67, 10, 0, | 59 | 20, 15, 10, 30, 65, 15, 65, 65, 20, 0, |
60 | 10, 40, 20, 67, 10, 5, 0, 10, 15, 67, | 60 | 10, 35, 20, 65, 10, 5, 0, 10, 5, 65, |
61 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 61 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
62 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 62 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
63 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 63 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
64 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 64 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
65 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 65 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
66 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 66 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
67 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 67 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
68 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 68 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
69 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 69 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
70 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 70 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
71 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 71 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
72 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 72 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
73 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 73 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
74 | 67, 67, 67, 67, 67, 67 | 74 | 65, 65, 65, 65, 65, 65 |
75 | }; | 75 | }; |
76 | return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]]; | 76 | return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]]; |
77 | } | 77 | } |
@@ -84,119 +84,116 @@ is_reserved_word (register const char *str, register unsigned int len) | |||
84 | { | 84 | { |
85 | enum | 85 | enum |
86 | { | 86 | { |
87 | TOTAL_KEYWORDS = 45, | 87 | TOTAL_KEYWORDS = 43, |
88 | MIN_WORD_LENGTH = 3, | 88 | MIN_WORD_LENGTH = 3, |
89 | MAX_WORD_LENGTH = 24, | 89 | MAX_WORD_LENGTH = 24, |
90 | MIN_HASH_VALUE = 3, | 90 | MIN_HASH_VALUE = 3, |
91 | MAX_HASH_VALUE = 66 | 91 | MAX_HASH_VALUE = 64 |
92 | }; | 92 | }; |
93 | 93 | ||
94 | static const struct resword wordlist[] = | 94 | static const struct resword wordlist[] = |
95 | { | 95 | { |
96 | {""}, {""}, {""}, | 96 | {""}, {""}, {""}, |
97 | #line 28 "scripts/genksyms/keywords.gperf" | 97 | #line 26 "scripts/genksyms/keywords.gperf" |
98 | {"asm", ASM_KEYW}, | 98 | {"asm", ASM_KEYW}, |
99 | {""}, | 99 | {""}, |
100 | #line 10 "scripts/genksyms/keywords.gperf" | 100 | #line 8 "scripts/genksyms/keywords.gperf" |
101 | {"__asm", ASM_KEYW}, | 101 | {"__asm", ASM_KEYW}, |
102 | {""}, | 102 | {""}, |
103 | #line 11 "scripts/genksyms/keywords.gperf" | 103 | #line 9 "scripts/genksyms/keywords.gperf" |
104 | {"__asm__", ASM_KEYW}, | 104 | {"__asm__", ASM_KEYW}, |
105 | {""}, {""}, | 105 | {""}, {""}, |
106 | #line 54 "scripts/genksyms/keywords.gperf" | 106 | #line 52 "scripts/genksyms/keywords.gperf" |
107 | {"__typeof__", TYPEOF_KEYW}, | 107 | {"__typeof__", TYPEOF_KEYW}, |
108 | {""}, | 108 | {""}, |
109 | #line 14 "scripts/genksyms/keywords.gperf" | 109 | #line 12 "scripts/genksyms/keywords.gperf" |
110 | {"__const", CONST_KEYW}, | 110 | {"__const", CONST_KEYW}, |
111 | #line 13 "scripts/genksyms/keywords.gperf" | 111 | #line 11 "scripts/genksyms/keywords.gperf" |
112 | {"__attribute__", ATTRIBUTE_KEYW}, | 112 | {"__attribute__", ATTRIBUTE_KEYW}, |
113 | #line 15 "scripts/genksyms/keywords.gperf" | 113 | #line 13 "scripts/genksyms/keywords.gperf" |
114 | {"__const__", CONST_KEYW}, | 114 | {"__const__", CONST_KEYW}, |
115 | #line 20 "scripts/genksyms/keywords.gperf" | 115 | #line 18 "scripts/genksyms/keywords.gperf" |
116 | {"__signed__", SIGNED_KEYW}, | 116 | {"__signed__", SIGNED_KEYW}, |
117 | #line 46 "scripts/genksyms/keywords.gperf" | 117 | #line 44 "scripts/genksyms/keywords.gperf" |
118 | {"static", STATIC_KEYW}, | 118 | {"static", STATIC_KEYW}, |
119 | {""}, | 119 | #line 20 "scripts/genksyms/keywords.gperf" |
120 | #line 41 "scripts/genksyms/keywords.gperf" | 120 | {"__volatile__", VOLATILE_KEYW}, |
121 | #line 39 "scripts/genksyms/keywords.gperf" | ||
121 | {"int", INT_KEYW}, | 122 | {"int", INT_KEYW}, |
122 | #line 34 "scripts/genksyms/keywords.gperf" | 123 | #line 32 "scripts/genksyms/keywords.gperf" |
123 | {"char", CHAR_KEYW}, | 124 | {"char", CHAR_KEYW}, |
124 | #line 35 "scripts/genksyms/keywords.gperf" | 125 | #line 33 "scripts/genksyms/keywords.gperf" |
125 | {"const", CONST_KEYW}, | 126 | {"const", CONST_KEYW}, |
126 | #line 47 "scripts/genksyms/keywords.gperf" | 127 | #line 45 "scripts/genksyms/keywords.gperf" |
127 | {"struct", STRUCT_KEYW}, | 128 | {"struct", STRUCT_KEYW}, |
128 | #line 26 "scripts/genksyms/keywords.gperf" | 129 | #line 24 "scripts/genksyms/keywords.gperf" |
129 | {"__restrict__", RESTRICT_KEYW}, | 130 | {"__restrict__", RESTRICT_KEYW}, |
130 | #line 27 "scripts/genksyms/keywords.gperf" | ||
131 | {"restrict", RESTRICT_KEYW}, | ||
132 | #line 7 "scripts/genksyms/keywords.gperf" | ||
133 | {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW}, | ||
134 | #line 18 "scripts/genksyms/keywords.gperf" | ||
135 | {"__inline__", INLINE_KEYW}, | ||
136 | {""}, | ||
137 | #line 22 "scripts/genksyms/keywords.gperf" | ||
138 | {"__volatile__", VOLATILE_KEYW}, | ||
139 | #line 5 "scripts/genksyms/keywords.gperf" | ||
140 | {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW}, | ||
141 | #line 25 "scripts/genksyms/keywords.gperf" | 131 | #line 25 "scripts/genksyms/keywords.gperf" |
132 | {"restrict", RESTRICT_KEYW}, | ||
133 | #line 23 "scripts/genksyms/keywords.gperf" | ||
142 | {"_restrict", RESTRICT_KEYW}, | 134 | {"_restrict", RESTRICT_KEYW}, |
143 | {""}, | ||
144 | #line 12 "scripts/genksyms/keywords.gperf" | ||
145 | {"__attribute", ATTRIBUTE_KEYW}, | ||
146 | #line 6 "scripts/genksyms/keywords.gperf" | ||
147 | {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, | ||
148 | #line 16 "scripts/genksyms/keywords.gperf" | 135 | #line 16 "scripts/genksyms/keywords.gperf" |
136 | {"__inline__", INLINE_KEYW}, | ||
137 | #line 10 "scripts/genksyms/keywords.gperf" | ||
138 | {"__attribute", ATTRIBUTE_KEYW}, | ||
139 | {""}, | ||
140 | #line 14 "scripts/genksyms/keywords.gperf" | ||
149 | {"__extension__", EXTENSION_KEYW}, | 141 | {"__extension__", EXTENSION_KEYW}, |
150 | #line 37 "scripts/genksyms/keywords.gperf" | 142 | #line 35 "scripts/genksyms/keywords.gperf" |
151 | {"enum", ENUM_KEYW}, | 143 | {"enum", ENUM_KEYW}, |
152 | #line 8 "scripts/genksyms/keywords.gperf" | 144 | #line 19 "scripts/genksyms/keywords.gperf" |
153 | {"EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW}, | 145 | {"__volatile", VOLATILE_KEYW}, |
154 | #line 38 "scripts/genksyms/keywords.gperf" | 146 | #line 36 "scripts/genksyms/keywords.gperf" |
155 | {"extern", EXTERN_KEYW}, | 147 | {"extern", EXTERN_KEYW}, |
156 | {""}, | 148 | {""}, |
157 | #line 19 "scripts/genksyms/keywords.gperf" | 149 | #line 17 "scripts/genksyms/keywords.gperf" |
158 | {"__signed", SIGNED_KEYW}, | 150 | {"__signed", SIGNED_KEYW}, |
159 | #line 9 "scripts/genksyms/keywords.gperf" | 151 | #line 7 "scripts/genksyms/keywords.gperf" |
160 | {"EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, | 152 | {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW}, |
161 | #line 49 "scripts/genksyms/keywords.gperf" | 153 | {""}, |
162 | {"union", UNION_KEYW}, | 154 | #line 51 "scripts/genksyms/keywords.gperf" |
163 | #line 53 "scripts/genksyms/keywords.gperf" | ||
164 | {"typeof", TYPEOF_KEYW}, | 155 | {"typeof", TYPEOF_KEYW}, |
165 | #line 48 "scripts/genksyms/keywords.gperf" | 156 | #line 46 "scripts/genksyms/keywords.gperf" |
166 | {"typedef", TYPEDEF_KEYW}, | 157 | {"typedef", TYPEDEF_KEYW}, |
167 | #line 17 "scripts/genksyms/keywords.gperf" | 158 | #line 15 "scripts/genksyms/keywords.gperf" |
168 | {"__inline", INLINE_KEYW}, | 159 | {"__inline", INLINE_KEYW}, |
169 | #line 33 "scripts/genksyms/keywords.gperf" | 160 | #line 31 "scripts/genksyms/keywords.gperf" |
170 | {"auto", AUTO_KEYW}, | 161 | {"auto", AUTO_KEYW}, |
171 | #line 21 "scripts/genksyms/keywords.gperf" | 162 | #line 47 "scripts/genksyms/keywords.gperf" |
172 | {"__volatile", VOLATILE_KEYW}, | 163 | {"union", UNION_KEYW}, |
173 | {""}, {""}, | 164 | {""}, {""}, |
174 | #line 50 "scripts/genksyms/keywords.gperf" | 165 | #line 48 "scripts/genksyms/keywords.gperf" |
175 | {"unsigned", UNSIGNED_KEYW}, | 166 | {"unsigned", UNSIGNED_KEYW}, |
176 | {""}, | 167 | #line 49 "scripts/genksyms/keywords.gperf" |
177 | #line 44 "scripts/genksyms/keywords.gperf" | 168 | {"void", VOID_KEYW}, |
169 | #line 42 "scripts/genksyms/keywords.gperf" | ||
178 | {"short", SHORT_KEYW}, | 170 | {"short", SHORT_KEYW}, |
179 | #line 40 "scripts/genksyms/keywords.gperf" | 171 | {""}, {""}, |
172 | #line 50 "scripts/genksyms/keywords.gperf" | ||
173 | {"volatile", VOLATILE_KEYW}, | ||
174 | {""}, | ||
175 | #line 37 "scripts/genksyms/keywords.gperf" | ||
176 | {"float", FLOAT_KEYW}, | ||
177 | #line 34 "scripts/genksyms/keywords.gperf" | ||
178 | {"double", DOUBLE_KEYW}, | ||
179 | {""}, | ||
180 | #line 5 "scripts/genksyms/keywords.gperf" | ||
181 | {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW}, | ||
182 | {""}, {""}, | ||
183 | #line 38 "scripts/genksyms/keywords.gperf" | ||
180 | {"inline", INLINE_KEYW}, | 184 | {"inline", INLINE_KEYW}, |
185 | #line 6 "scripts/genksyms/keywords.gperf" | ||
186 | {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, | ||
187 | #line 41 "scripts/genksyms/keywords.gperf" | ||
188 | {"register", REGISTER_KEYW}, | ||
181 | {""}, | 189 | {""}, |
182 | #line 52 "scripts/genksyms/keywords.gperf" | 190 | #line 22 "scripts/genksyms/keywords.gperf" |
183 | {"volatile", VOLATILE_KEYW}, | ||
184 | #line 42 "scripts/genksyms/keywords.gperf" | ||
185 | {"long", LONG_KEYW}, | ||
186 | #line 24 "scripts/genksyms/keywords.gperf" | ||
187 | {"_Bool", BOOL_KEYW}, | 191 | {"_Bool", BOOL_KEYW}, |
188 | {""}, {""}, | ||
189 | #line 43 "scripts/genksyms/keywords.gperf" | 192 | #line 43 "scripts/genksyms/keywords.gperf" |
190 | {"register", REGISTER_KEYW}, | 193 | {"signed", SIGNED_KEYW}, |
191 | #line 51 "scripts/genksyms/keywords.gperf" | 194 | {""}, {""}, |
192 | {"void", VOID_KEYW}, | 195 | #line 40 "scripts/genksyms/keywords.gperf" |
193 | #line 39 "scripts/genksyms/keywords.gperf" | 196 | {"long", LONG_KEYW} |
194 | {"float", FLOAT_KEYW}, | ||
195 | #line 36 "scripts/genksyms/keywords.gperf" | ||
196 | {"double", DOUBLE_KEYW}, | ||
197 | {""}, {""}, {""}, {""}, | ||
198 | #line 45 "scripts/genksyms/keywords.gperf" | ||
199 | {"signed", SIGNED_KEYW} | ||
200 | }; | 197 | }; |
201 | 198 | ||
202 | if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) | 199 | if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) |
diff --git a/scripts/genksyms/keywords.gperf b/scripts/genksyms/keywords.gperf index 8abe7ab8d88f..5ef3733225fb 100644 --- a/scripts/genksyms/keywords.gperf +++ b/scripts/genksyms/keywords.gperf | |||
@@ -5,8 +5,6 @@ struct resword { const char *name; int token; } | |||
5 | EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW | 5 | EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW |
6 | EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW | 6 | EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW |
7 | EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW | 7 | EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW |
8 | EXPORT_UNUSED_SYMBOL, EXPORT_SYMBOL_KEYW | ||
9 | EXPORT_UNUSED_SYMBOL_GPL, EXPORT_SYMBOL_KEYW | ||
10 | __asm, ASM_KEYW | 8 | __asm, ASM_KEYW |
11 | __asm__, ASM_KEYW | 9 | __asm__, ASM_KEYW |
12 | __attribute, ATTRIBUTE_KEYW | 10 | __attribute, ATTRIBUTE_KEYW |
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 92758120a767..ad2434b26970 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c | |||
@@ -130,9 +130,18 @@ static int read_symbol(FILE *in, struct sym_entry *s) | |||
130 | static int symbol_valid(struct sym_entry *s) | 130 | static int symbol_valid(struct sym_entry *s) |
131 | { | 131 | { |
132 | /* Symbols which vary between passes. Passes 1 and 2 must have | 132 | /* Symbols which vary between passes. Passes 1 and 2 must have |
133 | * identical symbol lists. | 133 | * identical symbol lists. The kallsyms_* symbols below are only added |
134 | * after pass 1, they would be included in pass 2 when --all-symbols is | ||
135 | * specified so exclude them to get a stable symbol list. | ||
134 | */ | 136 | */ |
135 | static char *special_symbols[] = { | 137 | static char *special_symbols[] = { |
138 | "kallsyms_addresses", | ||
139 | "kallsyms_num_syms", | ||
140 | "kallsyms_names", | ||
141 | "kallsyms_markers", | ||
142 | "kallsyms_token_table", | ||
143 | "kallsyms_token_index", | ||
144 | |||
136 | /* Exclude linker generated symbols which vary between passes */ | 145 | /* Exclude linker generated symbols which vary between passes */ |
137 | "_SDA_BASE_", /* ppc */ | 146 | "_SDA_BASE_", /* ppc */ |
138 | "_SDA2_BASE_", /* ppc */ | 147 | "_SDA2_BASE_", /* ppc */ |
@@ -164,9 +173,7 @@ static int symbol_valid(struct sym_entry *s) | |||
164 | } | 173 | } |
165 | 174 | ||
166 | /* Exclude symbols which vary between passes. */ | 175 | /* Exclude symbols which vary between passes. */ |
167 | if (strstr((char *)s->sym + offset, "_compiled.") || | 176 | if (strstr((char *)s->sym + offset, "_compiled.")) |
168 | strncmp((char*)s->sym + offset, "__compound_literal.", 19) == 0 || | ||
169 | strncmp((char*)s->sym + offset, "__compound_literal$", 19) == 0) | ||
170 | return 0; | 177 | return 0; |
171 | 178 | ||
172 | for (i = 0; special_symbols[i]; i++) | 179 | for (i = 0; special_symbols[i]; i++) |
@@ -543,10 +550,8 @@ int main(int argc, char **argv) | |||
543 | usage(); | 550 | usage(); |
544 | 551 | ||
545 | read_map(stdin); | 552 | read_map(stdin); |
546 | if (table_cnt) { | 553 | sort_symbols(); |
547 | sort_symbols(); | 554 | optimize_token_table(); |
548 | optimize_token_table(); | ||
549 | } | ||
550 | write_src(); | 555 | write_src(); |
551 | 556 | ||
552 | return 0; | 557 | return 0; |
diff --git a/scripts/mksysmap b/scripts/mksysmap index 1db316a3712b..6e133a0bae7a 100644 --- a/scripts/mksysmap +++ b/scripts/mksysmap | |||
@@ -37,6 +37,9 @@ | |||
37 | 37 | ||
38 | # readprofile starts reading symbols when _stext is found, and | 38 | # readprofile starts reading symbols when _stext is found, and |
39 | # continue until it finds a symbol which is not either of 'T', 't', | 39 | # continue until it finds a symbol which is not either of 'T', 't', |
40 | # 'W' or 'w'. | 40 | # 'W' or 'w'. __crc_ are 'A' and placed in the middle |
41 | # so we just ignore them to let readprofile continue to work. | ||
42 | # (At least sparc64 has __crc_ in the middle). | ||
43 | |||
44 | $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2 | ||
41 | 45 | ||
42 | $NM -n $1 | grep -v '\( [aNUw] \)\|\( \$[adt]\)' > $2 | ||
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index d4dc222a74f3..491b8b1b6abf 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c | |||
@@ -366,11 +366,17 @@ static void do_pnp_device_entry(void *symval, unsigned long size, | |||
366 | 366 | ||
367 | for (i = 0; i < count; i++) { | 367 | for (i = 0; i < count; i++) { |
368 | const char *id = (char *)devs[i].id; | 368 | const char *id = (char *)devs[i].id; |
369 | char acpi_id[sizeof(devs[0].id)]; | ||
370 | int j; | ||
369 | 371 | ||
370 | buf_printf(&mod->dev_table_buf, | 372 | buf_printf(&mod->dev_table_buf, |
371 | "MODULE_ALIAS(\"pnp:d%s*\");\n", id); | 373 | "MODULE_ALIAS(\"pnp:d%s*\");\n", id); |
374 | |||
375 | /* fix broken pnp bus lowercasing */ | ||
376 | for (j = 0; j < sizeof(acpi_id); j++) | ||
377 | acpi_id[j] = toupper(id[j]); | ||
372 | buf_printf(&mod->dev_table_buf, | 378 | buf_printf(&mod->dev_table_buf, |
373 | "MODULE_ALIAS(\"acpi*:%s:*\");\n", id); | 379 | "MODULE_ALIAS(\"acpi*:%s:*\");\n", acpi_id); |
374 | } | 380 | } |
375 | } | 381 | } |
376 | 382 | ||
@@ -416,10 +422,17 @@ static void do_pnp_card_entries(void *symval, unsigned long size, | |||
416 | 422 | ||
417 | /* add an individual alias for every device entry */ | 423 | /* add an individual alias for every device entry */ |
418 | if (!dup) { | 424 | if (!dup) { |
425 | char acpi_id[sizeof(card->devs[0].id)]; | ||
426 | int k; | ||
427 | |||
419 | buf_printf(&mod->dev_table_buf, | 428 | buf_printf(&mod->dev_table_buf, |
420 | "MODULE_ALIAS(\"pnp:d%s*\");\n", id); | 429 | "MODULE_ALIAS(\"pnp:d%s*\");\n", id); |
430 | |||
431 | /* fix broken pnp bus lowercasing */ | ||
432 | for (k = 0; k < sizeof(acpi_id); k++) | ||
433 | acpi_id[k] = toupper(id[k]); | ||
421 | buf_printf(&mod->dev_table_buf, | 434 | buf_printf(&mod->dev_table_buf, |
422 | "MODULE_ALIAS(\"acpi*:%s:*\");\n", id); | 435 | "MODULE_ALIAS(\"acpi*:%s:*\");\n", acpi_id); |
423 | } | 436 | } |
424 | } | 437 | } |
425 | } | 438 | } |
diff --git a/scripts/strip-symbols b/scripts/strip-symbols deleted file mode 100644 index 29ee8c1a014b..000000000000 --- a/scripts/strip-symbols +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | <*> | ||
2 | *.h | ||
3 | __compound_literal[$.][0-9]* | ||
4 | __crc_[a-zA-Z_]* | ||
5 | __exitcall_[a-zA-Z_]* | ||
6 | __func__[$.][0-9]* | ||
7 | __FUNCTION__[$.][0-9]* | ||
8 | gcc[0-9]_compiled[$.] | ||
9 | __initcall_[a-zA-Z_]* | ||
10 | __kcrctab_[a-zA-Z_]* | ||
11 | __kstrtab_[a-zA-Z_]* | ||
12 | __ksymtab_[a-zA-Z_]* | ||
13 | __mod_[a-zA-Z_]*[0-9] | ||
14 | __module_depends | ||
15 | __param_[a-zA-Z_]* | ||
16 | __pci_fixup_*PCI_ANY_IDPCI_ANY_ID* | ||
17 | __pci_fixup_*PCI_ANY_IDPCI_DEVICE_ID_* | ||
18 | __pci_fixup_*PCI_VENDOR_ID_*PCI_ANY_ID* | ||
19 | __pci_fixup_*PCI_VENDOR_ID_*PCI_DEVICE_ID_* | ||
20 | __PRETTY_FUNCTION__[$.][0-9]* | ||
21 | __setup_[a-zA-Z_]* | ||
22 | ____versions | ||
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c index e9335e1c6cf5..b1ec3b4ee17d 100644 --- a/security/keys/keyctl.c +++ b/security/keys/keyctl.c | |||
@@ -270,6 +270,7 @@ long keyctl_join_session_keyring(const char __user *_name) | |||
270 | 270 | ||
271 | /* join the session */ | 271 | /* join the session */ |
272 | ret = join_session_keyring(name); | 272 | ret = join_session_keyring(name); |
273 | kfree(name); | ||
273 | 274 | ||
274 | error: | 275 | error: |
275 | return ret; | 276 | return ret; |
diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig index 6e3a1848447c..82b9bddcdcd6 100644 --- a/sound/pci/Kconfig +++ b/sound/pci/Kconfig | |||
@@ -744,8 +744,8 @@ config SND_VIRTUOSO | |||
744 | select SND_OXYGEN_LIB | 744 | select SND_OXYGEN_LIB |
745 | help | 745 | help |
746 | Say Y here to include support for sound cards based on the | 746 | Say Y here to include support for sound cards based on the |
747 | Asus AV100/AV200 chips, i.e., Xonar D1, DX, D2, D2X and | 747 | Asus AV100/AV200 chips, i.e., Xonar D1, DX, D2 and D2X. |
748 | HDAV1.3 (Deluxe). | 748 | Support for the HDAV1.3 (Deluxe) is very experimental. |
749 | 749 | ||
750 | To compile this driver as a module, choose M here: the module | 750 | To compile this driver as a module, choose M here: the module |
751 | will be called snd-virtuoso. | 751 | will be called snd-virtuoso. |
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 3c596da2b9b5..b7bba7dc7cf1 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -2724,6 +2724,67 @@ int snd_hda_check_board_config(struct hda_codec *codec, | |||
2724 | EXPORT_SYMBOL_HDA(snd_hda_check_board_config); | 2724 | EXPORT_SYMBOL_HDA(snd_hda_check_board_config); |
2725 | 2725 | ||
2726 | /** | 2726 | /** |
2727 | * snd_hda_check_board_codec_sid_config - compare the current codec | ||
2728 | subsystem ID with the | ||
2729 | config table | ||
2730 | |||
2731 | This is important for Gateway notebooks with SB450 HDA Audio | ||
2732 | where the vendor ID of the PCI device is: | ||
2733 | ATI Technologies Inc SB450 HDA Audio [1002:437b] | ||
2734 | and the vendor/subvendor are found only at the codec. | ||
2735 | |||
2736 | * @codec: the HDA codec | ||
2737 | * @num_configs: number of config enums | ||
2738 | * @models: array of model name strings | ||
2739 | * @tbl: configuration table, terminated by null entries | ||
2740 | * | ||
2741 | * Compares the modelname or PCI subsystem id of the current codec with the | ||
2742 | * given configuration table. If a matching entry is found, returns its | ||
2743 | * config value (supposed to be 0 or positive). | ||
2744 | * | ||
2745 | * If no entries are matching, the function returns a negative value. | ||
2746 | */ | ||
2747 | int snd_hda_check_board_codec_sid_config(struct hda_codec *codec, | ||
2748 | int num_configs, const char **models, | ||
2749 | const struct snd_pci_quirk *tbl) | ||
2750 | { | ||
2751 | const struct snd_pci_quirk *q; | ||
2752 | |||
2753 | /* Search for codec ID */ | ||
2754 | for (q = tbl; q->subvendor; q++) { | ||
2755 | unsigned long vendorid = (q->subdevice) | (q->subvendor << 16); | ||
2756 | |||
2757 | if (vendorid == codec->subsystem_id) | ||
2758 | break; | ||
2759 | } | ||
2760 | |||
2761 | if (!q->subvendor) | ||
2762 | return -1; | ||
2763 | |||
2764 | tbl = q; | ||
2765 | |||
2766 | if (tbl->value >= 0 && tbl->value < num_configs) { | ||
2767 | #ifdef CONFIG_SND_DEBUG_DETECT | ||
2768 | char tmp[10]; | ||
2769 | const char *model = NULL; | ||
2770 | if (models) | ||
2771 | model = models[tbl->value]; | ||
2772 | if (!model) { | ||
2773 | sprintf(tmp, "#%d", tbl->value); | ||
2774 | model = tmp; | ||
2775 | } | ||
2776 | snd_printdd(KERN_INFO "hda_codec: model '%s' is selected " | ||
2777 | "for config %x:%x (%s)\n", | ||
2778 | model, tbl->subvendor, tbl->subdevice, | ||
2779 | (tbl->name ? tbl->name : "Unknown device")); | ||
2780 | #endif | ||
2781 | return tbl->value; | ||
2782 | } | ||
2783 | return -1; | ||
2784 | } | ||
2785 | EXPORT_SYMBOL_HDA(snd_hda_check_board_codec_sid_config); | ||
2786 | |||
2787 | /** | ||
2727 | * snd_hda_add_new_ctls - create controls from the array | 2788 | * snd_hda_add_new_ctls - create controls from the array |
2728 | * @codec: the HDA codec | 2789 | * @codec: the HDA codec |
2729 | * @knew: the array of struct snd_kcontrol_new | 2790 | * @knew: the array of struct snd_kcontrol_new |
@@ -2815,7 +2876,7 @@ void snd_hda_power_down(struct hda_codec *codec) | |||
2815 | return; | 2876 | return; |
2816 | if (power_save(codec)) { | 2877 | if (power_save(codec)) { |
2817 | codec->power_transition = 1; /* avoid reentrance */ | 2878 | codec->power_transition = 1; /* avoid reentrance */ |
2818 | schedule_delayed_work(&codec->power_work, | 2879 | queue_delayed_work(codec->bus->workq, &codec->power_work, |
2819 | msecs_to_jiffies(power_save(codec) * 1000)); | 2880 | msecs_to_jiffies(power_save(codec) * 1000)); |
2820 | } | 2881 | } |
2821 | } | 2882 | } |
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h index 6f2fe0f9fdd8..1dd8716c387f 100644 --- a/sound/pci/hda/hda_local.h +++ b/sound/pci/hda/hda_local.h | |||
@@ -296,6 +296,9 @@ void snd_print_pcm_bits(int pcm, char *buf, int buflen); | |||
296 | int snd_hda_check_board_config(struct hda_codec *codec, int num_configs, | 296 | int snd_hda_check_board_config(struct hda_codec *codec, int num_configs, |
297 | const char **modelnames, | 297 | const char **modelnames, |
298 | const struct snd_pci_quirk *pci_list); | 298 | const struct snd_pci_quirk *pci_list); |
299 | int snd_hda_check_board_codec_sid_config(struct hda_codec *codec, | ||
300 | int num_configs, const char **models, | ||
301 | const struct snd_pci_quirk *tbl); | ||
299 | int snd_hda_add_new_ctls(struct hda_codec *codec, | 302 | int snd_hda_add_new_ctls(struct hda_codec *codec, |
300 | struct snd_kcontrol_new *knew); | 303 | struct snd_kcontrol_new *knew); |
301 | 304 | ||
diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c index 96952a37d884..d57d8132a06e 100644 --- a/sound/pci/hda/patch_nvhdmi.c +++ b/sound/pci/hda/patch_nvhdmi.c | |||
@@ -160,6 +160,7 @@ static int patch_nvhdmi(struct hda_codec *codec) | |||
160 | */ | 160 | */ |
161 | static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { | 161 | static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { |
162 | { .id = 0x10de0002, .name = "MCP78 HDMI", .patch = patch_nvhdmi }, | 162 | { .id = 0x10de0002, .name = "MCP78 HDMI", .patch = patch_nvhdmi }, |
163 | { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi }, | ||
163 | { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi }, | 164 | { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi }, |
164 | { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi }, | 165 | { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi }, |
165 | { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi }, | 166 | { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi }, |
@@ -167,6 +168,7 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { | |||
167 | }; | 168 | }; |
168 | 169 | ||
169 | MODULE_ALIAS("snd-hda-codec-id:10de0002"); | 170 | MODULE_ALIAS("snd-hda-codec-id:10de0002"); |
171 | MODULE_ALIAS("snd-hda-codec-id:10de0006"); | ||
170 | MODULE_ALIAS("snd-hda-codec-id:10de0007"); | 172 | MODULE_ALIAS("snd-hda-codec-id:10de0007"); |
171 | MODULE_ALIAS("snd-hda-codec-id:10de0067"); | 173 | MODULE_ALIAS("snd-hda-codec-id:10de0067"); |
172 | MODULE_ALIAS("snd-hda-codec-id:10de8001"); | 174 | MODULE_ALIAS("snd-hda-codec-id:10de8001"); |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index ea4c88fe05c4..5d249a547fbf 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -8478,6 +8478,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = { | |||
8478 | SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_ASUS_EEE1601), | 8478 | SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_ASUS_EEE1601), |
8479 | SND_PCI_QUIRK(0x105b, 0x0ce8, "Foxconn P35AX-S", ALC883_6ST_DIG), | 8479 | SND_PCI_QUIRK(0x105b, 0x0ce8, "Foxconn P35AX-S", ALC883_6ST_DIG), |
8480 | SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC883_6ST_DIG), | 8480 | SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC883_6ST_DIG), |
8481 | SND_PCI_QUIRK(0x1071, 0x8227, "Mitac 82801H", ALC883_MITAC), | ||
8481 | SND_PCI_QUIRK(0x1071, 0x8253, "Mitac 8252d", ALC883_MITAC), | 8482 | SND_PCI_QUIRK(0x1071, 0x8253, "Mitac 8252d", ALC883_MITAC), |
8482 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), | 8483 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), |
8483 | SND_PCI_QUIRK(0x10f1, 0x2350, "TYAN-S2350", ALC888_6ST_DELL), | 8484 | SND_PCI_QUIRK(0x10f1, 0x2350, "TYAN-S2350", ALC888_6ST_DELL), |
@@ -8526,6 +8527,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = { | |||
8526 | SND_PCI_QUIRK(0x1991, 0x5625, "Haier W66", ALC883_HAIER_W66), | 8527 | SND_PCI_QUIRK(0x1991, 0x5625, "Haier W66", ALC883_HAIER_W66), |
8527 | SND_PCI_QUIRK(0x8086, 0x0001, "DG33BUC", ALC883_3ST_6ch_INTEL), | 8528 | SND_PCI_QUIRK(0x8086, 0x0001, "DG33BUC", ALC883_3ST_6ch_INTEL), |
8528 | SND_PCI_QUIRK(0x8086, 0x0002, "DG33FBC", ALC883_3ST_6ch_INTEL), | 8529 | SND_PCI_QUIRK(0x8086, 0x0002, "DG33FBC", ALC883_3ST_6ch_INTEL), |
8530 | SND_PCI_QUIRK(0x8086, 0x2503, "82801H", ALC883_MITAC), | ||
8529 | SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC883_3ST_6ch_INTEL), | 8531 | SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC883_3ST_6ch_INTEL), |
8530 | SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch), | 8532 | SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch), |
8531 | {} | 8533 | {} |
@@ -10573,6 +10575,7 @@ static struct snd_pci_quirk alc262_cfg_tbl[] = { | |||
10573 | SND_PCI_QUIRK(0x10cf, 0x142d, "Fujitsu Lifebook E8410", ALC262_FUJITSU), | 10575 | SND_PCI_QUIRK(0x10cf, 0x142d, "Fujitsu Lifebook E8410", ALC262_FUJITSU), |
10574 | SND_PCI_QUIRK(0x144d, 0xc032, "Samsung Q1 Ultra", ALC262_ULTRA), | 10576 | SND_PCI_QUIRK(0x144d, 0xc032, "Samsung Q1 Ultra", ALC262_ULTRA), |
10575 | SND_PCI_QUIRK(0x144d, 0xc039, "Samsung Q1U EL", ALC262_ULTRA), | 10577 | SND_PCI_QUIRK(0x144d, 0xc039, "Samsung Q1U EL", ALC262_ULTRA), |
10578 | SND_PCI_QUIRK(0x144d, 0xc510, "Samsung Q45", ALC262_HIPPO), | ||
10576 | SND_PCI_QUIRK(0x17aa, 0x384e, "Lenovo 3000 y410", ALC262_LENOVO_3000), | 10579 | SND_PCI_QUIRK(0x17aa, 0x384e, "Lenovo 3000 y410", ALC262_LENOVO_3000), |
10577 | SND_PCI_QUIRK(0x17ff, 0x0560, "Benq ED8", ALC262_BENQ_ED8), | 10580 | SND_PCI_QUIRK(0x17ff, 0x0560, "Benq ED8", ALC262_BENQ_ED8), |
10578 | SND_PCI_QUIRK(0x17ff, 0x058d, "Benq T31-16", ALC262_BENQ_T31), | 10581 | SND_PCI_QUIRK(0x17ff, 0x058d, "Benq T31-16", ALC262_BENQ_T31), |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 35b83dc6e19e..3dd4eee70b7c 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -55,7 +55,8 @@ enum { | |||
55 | STAC_9200_DELL_M25, | 55 | STAC_9200_DELL_M25, |
56 | STAC_9200_DELL_M26, | 56 | STAC_9200_DELL_M26, |
57 | STAC_9200_DELL_M27, | 57 | STAC_9200_DELL_M27, |
58 | STAC_9200_GATEWAY, | 58 | STAC_9200_M4, |
59 | STAC_9200_M4_2, | ||
59 | STAC_9200_PANASONIC, | 60 | STAC_9200_PANASONIC, |
60 | STAC_9200_MODELS | 61 | STAC_9200_MODELS |
61 | }; | 62 | }; |
@@ -80,6 +81,7 @@ enum { | |||
80 | 81 | ||
81 | enum { | 82 | enum { |
82 | STAC_92HD83XXX_REF, | 83 | STAC_92HD83XXX_REF, |
84 | STAC_92HD83XXX_PWR_REF, | ||
83 | STAC_92HD83XXX_MODELS | 85 | STAC_92HD83XXX_MODELS |
84 | }; | 86 | }; |
85 | 87 | ||
@@ -89,14 +91,19 @@ enum { | |||
89 | STAC_DELL_M4_2, | 91 | STAC_DELL_M4_2, |
90 | STAC_DELL_M4_3, | 92 | STAC_DELL_M4_3, |
91 | STAC_HP_M4, | 93 | STAC_HP_M4, |
94 | STAC_HP_DV5, | ||
92 | STAC_92HD71BXX_MODELS | 95 | STAC_92HD71BXX_MODELS |
93 | }; | 96 | }; |
94 | 97 | ||
95 | enum { | 98 | enum { |
96 | STAC_925x_REF, | 99 | STAC_925x_REF, |
100 | STAC_M1, | ||
101 | STAC_M1_2, | ||
102 | STAC_M2, | ||
97 | STAC_M2_2, | 103 | STAC_M2_2, |
98 | STAC_MA6, | 104 | STAC_M3, |
99 | STAC_PA6, | 105 | STAC_M5, |
106 | STAC_M6, | ||
100 | STAC_925x_MODELS | 107 | STAC_925x_MODELS |
101 | }; | 108 | }; |
102 | 109 | ||
@@ -328,7 +335,11 @@ static hda_nid_t stac92hd83xxx_slave_dig_outs[2] = { | |||
328 | }; | 335 | }; |
329 | 336 | ||
330 | static unsigned int stac92hd83xxx_pwr_mapping[4] = { | 337 | static unsigned int stac92hd83xxx_pwr_mapping[4] = { |
331 | 0x03, 0x0c, 0x10, 0x40, | 338 | 0x03, 0x0c, 0x20, 0x40, |
339 | }; | ||
340 | |||
341 | static hda_nid_t stac92hd83xxx_amp_nids[1] = { | ||
342 | 0xc, | ||
332 | }; | 343 | }; |
333 | 344 | ||
334 | static hda_nid_t stac92hd71bxx_pwr_nids[3] = { | 345 | static hda_nid_t stac92hd71bxx_pwr_nids[3] = { |
@@ -831,10 +842,6 @@ static struct hda_verb stac92hd73xx_10ch_core_init[] = { | |||
831 | }; | 842 | }; |
832 | 843 | ||
833 | static struct hda_verb stac92hd83xxx_core_init[] = { | 844 | static struct hda_verb stac92hd83xxx_core_init[] = { |
834 | /* start of config #1 */ | ||
835 | { 0xe, AC_VERB_SET_CONNECT_SEL, 0x3}, | ||
836 | |||
837 | /* start of config #2 */ | ||
838 | { 0xa, AC_VERB_SET_CONNECT_SEL, 0x0}, | 845 | { 0xa, AC_VERB_SET_CONNECT_SEL, 0x0}, |
839 | { 0xb, AC_VERB_SET_CONNECT_SEL, 0x0}, | 846 | { 0xb, AC_VERB_SET_CONNECT_SEL, 0x0}, |
840 | { 0xd, AC_VERB_SET_CONNECT_SEL, 0x1}, | 847 | { 0xd, AC_VERB_SET_CONNECT_SEL, 0x1}, |
@@ -875,6 +882,8 @@ static struct hda_verb stac92hd71bxx_analog_core_init[] = { | |||
875 | static struct hda_verb stac925x_core_init[] = { | 882 | static struct hda_verb stac925x_core_init[] = { |
876 | /* set dac0mux for dac converter */ | 883 | /* set dac0mux for dac converter */ |
877 | { 0x06, AC_VERB_SET_CONNECT_SEL, 0x00}, | 884 | { 0x06, AC_VERB_SET_CONNECT_SEL, 0x00}, |
885 | /* mute the master volume */ | ||
886 | { 0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE }, | ||
878 | {} | 887 | {} |
879 | }; | 888 | }; |
880 | 889 | ||
@@ -1126,6 +1135,8 @@ static struct snd_kcontrol_new stac92hd71bxx_mixer[] = { | |||
1126 | }; | 1135 | }; |
1127 | 1136 | ||
1128 | static struct snd_kcontrol_new stac925x_mixer[] = { | 1137 | static struct snd_kcontrol_new stac925x_mixer[] = { |
1138 | HDA_CODEC_VOLUME("Master Playback Volume", 0x0e, 0, HDA_OUTPUT), | ||
1139 | HDA_CODEC_MUTE("Master Playback Switch", 0x0e, 0, HDA_OUTPUT), | ||
1129 | STAC_INPUT_SOURCE(1), | 1140 | STAC_INPUT_SOURCE(1), |
1130 | HDA_CODEC_VOLUME("Capture Volume", 0x09, 0, HDA_OUTPUT), | 1141 | HDA_CODEC_VOLUME("Capture Volume", 0x09, 0, HDA_OUTPUT), |
1131 | HDA_CODEC_MUTE("Capture Switch", 0x14, 0, HDA_OUTPUT), | 1142 | HDA_CODEC_MUTE("Capture Switch", 0x14, 0, HDA_OUTPUT), |
@@ -1334,7 +1345,16 @@ static unsigned int ref9200_pin_configs[8] = { | |||
1334 | 0x02a19020, 0x01a19021, 0x90100140, 0x01813122, | 1345 | 0x02a19020, 0x01a19021, 0x90100140, 0x01813122, |
1335 | }; | 1346 | }; |
1336 | 1347 | ||
1337 | /* | 1348 | static unsigned int gateway9200_m4_pin_configs[8] = { |
1349 | 0x400000fe, 0x404500f4, 0x400100f0, 0x90110010, | ||
1350 | 0x400100f1, 0x02a1902e, 0x500000f2, 0x500000f3, | ||
1351 | }; | ||
1352 | static unsigned int gateway9200_m4_2_pin_configs[8] = { | ||
1353 | 0x400000fe, 0x404500f4, 0x400100f0, 0x90110010, | ||
1354 | 0x400100f1, 0x02a1902e, 0x500000f2, 0x500000f3, | ||
1355 | }; | ||
1356 | |||
1357 | /* | ||
1338 | STAC 9200 pin configs for | 1358 | STAC 9200 pin configs for |
1339 | 102801A8 | 1359 | 102801A8 |
1340 | 102801DE | 1360 | 102801DE |
@@ -1464,6 +1484,8 @@ static unsigned int *stac9200_brd_tbl[STAC_9200_MODELS] = { | |||
1464 | [STAC_9200_DELL_M25] = dell9200_m25_pin_configs, | 1484 | [STAC_9200_DELL_M25] = dell9200_m25_pin_configs, |
1465 | [STAC_9200_DELL_M26] = dell9200_m26_pin_configs, | 1485 | [STAC_9200_DELL_M26] = dell9200_m26_pin_configs, |
1466 | [STAC_9200_DELL_M27] = dell9200_m27_pin_configs, | 1486 | [STAC_9200_DELL_M27] = dell9200_m27_pin_configs, |
1487 | [STAC_9200_M4] = gateway9200_m4_pin_configs, | ||
1488 | [STAC_9200_M4_2] = gateway9200_m4_2_pin_configs, | ||
1467 | [STAC_9200_PANASONIC] = ref9200_pin_configs, | 1489 | [STAC_9200_PANASONIC] = ref9200_pin_configs, |
1468 | }; | 1490 | }; |
1469 | 1491 | ||
@@ -1480,7 +1502,8 @@ static const char *stac9200_models[STAC_9200_MODELS] = { | |||
1480 | [STAC_9200_DELL_M25] = "dell-m25", | 1502 | [STAC_9200_DELL_M25] = "dell-m25", |
1481 | [STAC_9200_DELL_M26] = "dell-m26", | 1503 | [STAC_9200_DELL_M26] = "dell-m26", |
1482 | [STAC_9200_DELL_M27] = "dell-m27", | 1504 | [STAC_9200_DELL_M27] = "dell-m27", |
1483 | [STAC_9200_GATEWAY] = "gateway", | 1505 | [STAC_9200_M4] = "gateway-m4", |
1506 | [STAC_9200_M4_2] = "gateway-m4-2", | ||
1484 | [STAC_9200_PANASONIC] = "panasonic", | 1507 | [STAC_9200_PANASONIC] = "panasonic", |
1485 | }; | 1508 | }; |
1486 | 1509 | ||
@@ -1550,11 +1573,9 @@ static struct snd_pci_quirk stac9200_cfg_tbl[] = { | |||
1550 | /* Panasonic */ | 1573 | /* Panasonic */ |
1551 | SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-74", STAC_9200_PANASONIC), | 1574 | SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-74", STAC_9200_PANASONIC), |
1552 | /* Gateway machines needs EAPD to be set on resume */ | 1575 | /* Gateway machines needs EAPD to be set on resume */ |
1553 | SND_PCI_QUIRK(0x107b, 0x0205, "Gateway S-7110M", STAC_9200_GATEWAY), | 1576 | SND_PCI_QUIRK(0x107b, 0x0205, "Gateway S-7110M", STAC_9200_M4), |
1554 | SND_PCI_QUIRK(0x107b, 0x0317, "Gateway MT3423, MX341*", | 1577 | SND_PCI_QUIRK(0x107b, 0x0317, "Gateway MT3423, MX341*", STAC_9200_M4_2), |
1555 | STAC_9200_GATEWAY), | 1578 | SND_PCI_QUIRK(0x107b, 0x0318, "Gateway ML3019, MT3707", STAC_9200_M4_2), |
1556 | SND_PCI_QUIRK(0x107b, 0x0318, "Gateway ML3019, MT3707", | ||
1557 | STAC_9200_GATEWAY), | ||
1558 | /* OQO Mobile */ | 1579 | /* OQO Mobile */ |
1559 | SND_PCI_QUIRK(0x1106, 0x3288, "OQO Model 2", STAC_9200_OQO), | 1580 | SND_PCI_QUIRK(0x1106, 0x3288, "OQO Model 2", STAC_9200_OQO), |
1560 | {} /* terminator */ | 1581 | {} /* terminator */ |
@@ -1565,44 +1586,85 @@ static unsigned int ref925x_pin_configs[8] = { | |||
1565 | 0x90a70320, 0x02214210, 0x01019020, 0x9033032e, | 1586 | 0x90a70320, 0x02214210, 0x01019020, 0x9033032e, |
1566 | }; | 1587 | }; |
1567 | 1588 | ||
1568 | static unsigned int stac925x_MA6_pin_configs[8] = { | 1589 | static unsigned int stac925xM1_pin_configs[8] = { |
1569 | 0x40c003f0, 0x424503f2, 0x01813022, 0x02a19021, | 1590 | 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020, |
1570 | 0x90a70320, 0x90100211, 0x400003f1, 0x9033032e, | 1591 | 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e, |
1571 | }; | 1592 | }; |
1572 | 1593 | ||
1573 | static unsigned int stac925x_PA6_pin_configs[8] = { | 1594 | static unsigned int stac925xM1_2_pin_configs[8] = { |
1574 | 0x40c003f0, 0x424503f2, 0x01813022, 0x02a19021, | 1595 | 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020, |
1575 | 0x50a103f0, 0x90100211, 0x400003f1, 0x9033032e, | 1596 | 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e, |
1597 | }; | ||
1598 | |||
1599 | static unsigned int stac925xM2_pin_configs[8] = { | ||
1600 | 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020, | ||
1601 | 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e, | ||
1576 | }; | 1602 | }; |
1577 | 1603 | ||
1578 | static unsigned int stac925xM2_2_pin_configs[8] = { | 1604 | static unsigned int stac925xM2_2_pin_configs[8] = { |
1579 | 0x40c003f3, 0x424503f2, 0x04180011, 0x02a19020, | 1605 | 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020, |
1580 | 0x50a103f0, 0x90100212, 0x400003f1, 0x9033032e, | 1606 | 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e, |
1607 | }; | ||
1608 | |||
1609 | static unsigned int stac925xM3_pin_configs[8] = { | ||
1610 | 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020, | ||
1611 | 0x40a000f0, 0x90100210, 0x400003f1, 0x503303f3, | ||
1612 | }; | ||
1613 | |||
1614 | static unsigned int stac925xM5_pin_configs[8] = { | ||
1615 | 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020, | ||
1616 | 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e, | ||
1617 | }; | ||
1618 | |||
1619 | static unsigned int stac925xM6_pin_configs[8] = { | ||
1620 | 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020, | ||
1621 | 0x40a000f0, 0x90100210, 0x400003f1, 0x90330320, | ||
1581 | }; | 1622 | }; |
1582 | 1623 | ||
1583 | static unsigned int *stac925x_brd_tbl[STAC_925x_MODELS] = { | 1624 | static unsigned int *stac925x_brd_tbl[STAC_925x_MODELS] = { |
1584 | [STAC_REF] = ref925x_pin_configs, | 1625 | [STAC_REF] = ref925x_pin_configs, |
1626 | [STAC_M1] = stac925xM1_pin_configs, | ||
1627 | [STAC_M1_2] = stac925xM1_2_pin_configs, | ||
1628 | [STAC_M2] = stac925xM2_pin_configs, | ||
1585 | [STAC_M2_2] = stac925xM2_2_pin_configs, | 1629 | [STAC_M2_2] = stac925xM2_2_pin_configs, |
1586 | [STAC_MA6] = stac925x_MA6_pin_configs, | 1630 | [STAC_M3] = stac925xM3_pin_configs, |
1587 | [STAC_PA6] = stac925x_PA6_pin_configs, | 1631 | [STAC_M5] = stac925xM5_pin_configs, |
1632 | [STAC_M6] = stac925xM6_pin_configs, | ||
1588 | }; | 1633 | }; |
1589 | 1634 | ||
1590 | static const char *stac925x_models[STAC_925x_MODELS] = { | 1635 | static const char *stac925x_models[STAC_925x_MODELS] = { |
1591 | [STAC_REF] = "ref", | 1636 | [STAC_REF] = "ref", |
1637 | [STAC_M1] = "m1", | ||
1638 | [STAC_M1_2] = "m1-2", | ||
1639 | [STAC_M2] = "m2", | ||
1592 | [STAC_M2_2] = "m2-2", | 1640 | [STAC_M2_2] = "m2-2", |
1593 | [STAC_MA6] = "m6", | 1641 | [STAC_M3] = "m3", |
1594 | [STAC_PA6] = "pa6", | 1642 | [STAC_M5] = "m5", |
1643 | [STAC_M6] = "m6", | ||
1644 | }; | ||
1645 | |||
1646 | static struct snd_pci_quirk stac925x_codec_id_cfg_tbl[] = { | ||
1647 | SND_PCI_QUIRK(0x107b, 0x0316, "Gateway M255", STAC_M2), | ||
1648 | SND_PCI_QUIRK(0x107b, 0x0366, "Gateway MP6954", STAC_M5), | ||
1649 | SND_PCI_QUIRK(0x107b, 0x0461, "Gateway NX560XL", STAC_M1), | ||
1650 | SND_PCI_QUIRK(0x107b, 0x0681, "Gateway NX860", STAC_M2), | ||
1651 | SND_PCI_QUIRK(0x107b, 0x0367, "Gateway MX6453", STAC_M1_2), | ||
1652 | /* Not sure about the brand name for those */ | ||
1653 | SND_PCI_QUIRK(0x107b, 0x0281, "Gateway mobile", STAC_M1), | ||
1654 | SND_PCI_QUIRK(0x107b, 0x0507, "Gateway mobile", STAC_M3), | ||
1655 | SND_PCI_QUIRK(0x107b, 0x0281, "Gateway mobile", STAC_M6), | ||
1656 | SND_PCI_QUIRK(0x107b, 0x0685, "Gateway mobile", STAC_M2_2), | ||
1657 | {} /* terminator */ | ||
1595 | }; | 1658 | }; |
1596 | 1659 | ||
1597 | static struct snd_pci_quirk stac925x_cfg_tbl[] = { | 1660 | static struct snd_pci_quirk stac925x_cfg_tbl[] = { |
1598 | /* SigmaTel reference board */ | 1661 | /* SigmaTel reference board */ |
1599 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, "DFI LanParty", STAC_REF), | 1662 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, "DFI LanParty", STAC_REF), |
1600 | SND_PCI_QUIRK(0x8384, 0x7632, "Stac9202 Reference Board", STAC_REF), | 1663 | SND_PCI_QUIRK(0x8384, 0x7632, "Stac9202 Reference Board", STAC_REF), |
1601 | SND_PCI_QUIRK(0x107b, 0x0316, "Gateway M255", STAC_REF), | 1664 | |
1602 | SND_PCI_QUIRK(0x107b, 0x0366, "Gateway MP6954", STAC_REF), | 1665 | /* Default table for unknown ID */ |
1603 | SND_PCI_QUIRK(0x107b, 0x0461, "Gateway NX560XL", STAC_MA6), | 1666 | SND_PCI_QUIRK(0x1002, 0x437b, "Gateway mobile", STAC_M2_2), |
1604 | SND_PCI_QUIRK(0x107b, 0x0681, "Gateway NX860", STAC_PA6), | 1667 | |
1605 | SND_PCI_QUIRK(0x1002, 0x437b, "Gateway MX6453", STAC_M2_2), | ||
1606 | {} /* terminator */ | 1668 | {} /* terminator */ |
1607 | }; | 1669 | }; |
1608 | 1670 | ||
@@ -1673,16 +1735,18 @@ static unsigned int ref92hd83xxx_pin_configs[14] = { | |||
1673 | 1735 | ||
1674 | static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = { | 1736 | static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = { |
1675 | [STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs, | 1737 | [STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs, |
1738 | [STAC_92HD83XXX_PWR_REF] = ref92hd83xxx_pin_configs, | ||
1676 | }; | 1739 | }; |
1677 | 1740 | ||
1678 | static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = { | 1741 | static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = { |
1679 | [STAC_92HD83XXX_REF] = "ref", | 1742 | [STAC_92HD83XXX_REF] = "ref", |
1743 | [STAC_92HD83XXX_PWR_REF] = "mic-ref", | ||
1680 | }; | 1744 | }; |
1681 | 1745 | ||
1682 | static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { | 1746 | static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { |
1683 | /* SigmaTel reference board */ | 1747 | /* SigmaTel reference board */ |
1684 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, | 1748 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, |
1685 | "DFI LanParty", STAC_92HD71BXX_REF), | 1749 | "DFI LanParty", STAC_92HD83XXX_REF), |
1686 | {} /* terminator */ | 1750 | {} /* terminator */ |
1687 | }; | 1751 | }; |
1688 | 1752 | ||
@@ -1716,6 +1780,7 @@ static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = { | |||
1716 | [STAC_DELL_M4_2] = dell_m4_2_pin_configs, | 1780 | [STAC_DELL_M4_2] = dell_m4_2_pin_configs, |
1717 | [STAC_DELL_M4_3] = dell_m4_3_pin_configs, | 1781 | [STAC_DELL_M4_3] = dell_m4_3_pin_configs, |
1718 | [STAC_HP_M4] = NULL, | 1782 | [STAC_HP_M4] = NULL, |
1783 | [STAC_HP_DV5] = NULL, | ||
1719 | }; | 1784 | }; |
1720 | 1785 | ||
1721 | static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = { | 1786 | static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = { |
@@ -1724,6 +1789,7 @@ static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = { | |||
1724 | [STAC_DELL_M4_2] = "dell-m4-2", | 1789 | [STAC_DELL_M4_2] = "dell-m4-2", |
1725 | [STAC_DELL_M4_3] = "dell-m4-3", | 1790 | [STAC_DELL_M4_3] = "dell-m4-3", |
1726 | [STAC_HP_M4] = "hp-m4", | 1791 | [STAC_HP_M4] = "hp-m4", |
1792 | [STAC_HP_DV5] = "hp-dv5", | ||
1727 | }; | 1793 | }; |
1728 | 1794 | ||
1729 | static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = { | 1795 | static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = { |
@@ -1734,8 +1800,12 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = { | |||
1734 | "HP dv5", STAC_HP_M4), | 1800 | "HP dv5", STAC_HP_M4), |
1735 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30f4, | 1801 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30f4, |
1736 | "HP dv7", STAC_HP_M4), | 1802 | "HP dv7", STAC_HP_M4), |
1803 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30f7, | ||
1804 | "HP dv4", STAC_HP_DV5), | ||
1737 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30fc, | 1805 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30fc, |
1738 | "HP dv7", STAC_HP_M4), | 1806 | "HP dv7", STAC_HP_M4), |
1807 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3603, | ||
1808 | "HP dv5", STAC_HP_DV5), | ||
1739 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x361a, | 1809 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x361a, |
1740 | "unknown HP", STAC_HP_M4), | 1810 | "unknown HP", STAC_HP_M4), |
1741 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0233, | 1811 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0233, |
@@ -3506,13 +3576,12 @@ static int stac92xx_parse_auto_config(struct hda_codec *codec, hda_nid_t dig_out | |||
3506 | err = stac92xx_auto_fill_dac_nids(codec); | 3576 | err = stac92xx_auto_fill_dac_nids(codec); |
3507 | if (err < 0) | 3577 | if (err < 0) |
3508 | return err; | 3578 | return err; |
3579 | err = stac92xx_auto_create_multi_out_ctls(codec, | ||
3580 | &spec->autocfg); | ||
3581 | if (err < 0) | ||
3582 | return err; | ||
3509 | } | 3583 | } |
3510 | 3584 | ||
3511 | err = stac92xx_auto_create_multi_out_ctls(codec, &spec->autocfg); | ||
3512 | |||
3513 | if (err < 0) | ||
3514 | return err; | ||
3515 | |||
3516 | /* setup analog beep controls */ | 3585 | /* setup analog beep controls */ |
3517 | if (spec->anabeep_nid > 0) { | 3586 | if (spec->anabeep_nid > 0) { |
3518 | err = stac92xx_auto_create_beep_ctls(codec, | 3587 | err = stac92xx_auto_create_beep_ctls(codec, |
@@ -4163,8 +4232,19 @@ static void stac92xx_hp_detect(struct hda_codec *codec) | |||
4163 | continue; | 4232 | continue; |
4164 | if (presence) | 4233 | if (presence) |
4165 | stac92xx_set_pinctl(codec, cfg->hp_pins[i], val); | 4234 | stac92xx_set_pinctl(codec, cfg->hp_pins[i], val); |
4235 | #if 0 /* FIXME */ | ||
4236 | /* Resetting the pinctl like below may lead to (a sort of) regressions | ||
4237 | * on some devices since they use the HP pin actually for line/speaker | ||
4238 | * outs although the default pin config shows a different pin (that is | ||
4239 | * wrong and useless). | ||
4240 | * | ||
4241 | * So, it's basically a problem of default pin configs, likely a BIOS issue. | ||
4242 | * But, disabling the code below just works around it, and I'm too tired of | ||
4243 | * bug reports with such devices... | ||
4244 | */ | ||
4166 | else | 4245 | else |
4167 | stac92xx_reset_pinctl(codec, cfg->hp_pins[i], val); | 4246 | stac92xx_reset_pinctl(codec, cfg->hp_pins[i], val); |
4247 | #endif /* FIXME */ | ||
4168 | } | 4248 | } |
4169 | } | 4249 | } |
4170 | 4250 | ||
@@ -4390,7 +4470,8 @@ static int patch_stac9200(struct hda_codec *codec) | |||
4390 | spec->num_adcs = 1; | 4470 | spec->num_adcs = 1; |
4391 | spec->num_pwrs = 0; | 4471 | spec->num_pwrs = 0; |
4392 | 4472 | ||
4393 | if (spec->board_config == STAC_9200_GATEWAY || | 4473 | if (spec->board_config == STAC_9200_M4 || |
4474 | spec->board_config == STAC_9200_M4_2 || | ||
4394 | spec->board_config == STAC_9200_OQO) | 4475 | spec->board_config == STAC_9200_OQO) |
4395 | spec->init = stac9200_eapd_init; | 4476 | spec->init = stac9200_eapd_init; |
4396 | else | 4477 | else |
@@ -4408,6 +4489,12 @@ static int patch_stac9200(struct hda_codec *codec) | |||
4408 | return err; | 4489 | return err; |
4409 | } | 4490 | } |
4410 | 4491 | ||
4492 | /* CF-74 has no headphone detection, and the driver should *NOT* | ||
4493 | * do detection and HP/speaker toggle because the hardware does it. | ||
4494 | */ | ||
4495 | if (spec->board_config == STAC_9200_PANASONIC) | ||
4496 | spec->hp_detect = 0; | ||
4497 | |||
4411 | codec->patch_ops = stac92xx_patch_ops; | 4498 | codec->patch_ops = stac92xx_patch_ops; |
4412 | 4499 | ||
4413 | return 0; | 4500 | return 0; |
@@ -4425,12 +4512,22 @@ static int patch_stac925x(struct hda_codec *codec) | |||
4425 | codec->spec = spec; | 4512 | codec->spec = spec; |
4426 | spec->num_pins = ARRAY_SIZE(stac925x_pin_nids); | 4513 | spec->num_pins = ARRAY_SIZE(stac925x_pin_nids); |
4427 | spec->pin_nids = stac925x_pin_nids; | 4514 | spec->pin_nids = stac925x_pin_nids; |
4428 | spec->board_config = snd_hda_check_board_config(codec, STAC_925x_MODELS, | 4515 | |
4516 | /* Check first for codec ID */ | ||
4517 | spec->board_config = snd_hda_check_board_codec_sid_config(codec, | ||
4518 | STAC_925x_MODELS, | ||
4519 | stac925x_models, | ||
4520 | stac925x_codec_id_cfg_tbl); | ||
4521 | |||
4522 | /* Now checks for PCI ID, if codec ID is not found */ | ||
4523 | if (spec->board_config < 0) | ||
4524 | spec->board_config = snd_hda_check_board_config(codec, | ||
4525 | STAC_925x_MODELS, | ||
4429 | stac925x_models, | 4526 | stac925x_models, |
4430 | stac925x_cfg_tbl); | 4527 | stac925x_cfg_tbl); |
4431 | again: | 4528 | again: |
4432 | if (spec->board_config < 0) { | 4529 | if (spec->board_config < 0) { |
4433 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x," | 4530 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x," |
4434 | "using BIOS defaults\n"); | 4531 | "using BIOS defaults\n"); |
4435 | err = stac92xx_save_bios_config_regs(codec); | 4532 | err = stac92xx_save_bios_config_regs(codec); |
4436 | } else | 4533 | } else |
@@ -4658,7 +4755,9 @@ static struct hda_input_mux stac92hd83xxx_dmux = { | |||
4658 | static int patch_stac92hd83xxx(struct hda_codec *codec) | 4755 | static int patch_stac92hd83xxx(struct hda_codec *codec) |
4659 | { | 4756 | { |
4660 | struct sigmatel_spec *spec; | 4757 | struct sigmatel_spec *spec; |
4758 | hda_nid_t conn[STAC92HD83_DAC_COUNT + 1]; | ||
4661 | int err; | 4759 | int err; |
4760 | int num_dacs; | ||
4662 | 4761 | ||
4663 | spec = kzalloc(sizeof(*spec), GFP_KERNEL); | 4762 | spec = kzalloc(sizeof(*spec), GFP_KERNEL); |
4664 | if (spec == NULL) | 4763 | if (spec == NULL) |
@@ -4672,23 +4771,26 @@ static int patch_stac92hd83xxx(struct hda_codec *codec) | |||
4672 | spec->dmux_nids = stac92hd83xxx_dmux_nids; | 4771 | spec->dmux_nids = stac92hd83xxx_dmux_nids; |
4673 | spec->adc_nids = stac92hd83xxx_adc_nids; | 4772 | spec->adc_nids = stac92hd83xxx_adc_nids; |
4674 | spec->pwr_nids = stac92hd83xxx_pwr_nids; | 4773 | spec->pwr_nids = stac92hd83xxx_pwr_nids; |
4774 | spec->amp_nids = stac92hd83xxx_amp_nids; | ||
4675 | spec->pwr_mapping = stac92hd83xxx_pwr_mapping; | 4775 | spec->pwr_mapping = stac92hd83xxx_pwr_mapping; |
4676 | spec->num_pwrs = ARRAY_SIZE(stac92hd83xxx_pwr_nids); | 4776 | spec->num_pwrs = ARRAY_SIZE(stac92hd83xxx_pwr_nids); |
4677 | spec->multiout.dac_nids = spec->dac_nids; | 4777 | spec->multiout.dac_nids = spec->dac_nids; |
4678 | 4778 | ||
4679 | spec->init = stac92hd83xxx_core_init; | ||
4680 | switch (codec->vendor_id) { | ||
4681 | case 0x111d7605: | ||
4682 | break; | ||
4683 | default: | ||
4684 | spec->num_pwrs--; | ||
4685 | spec->init++; /* switch to config #2 */ | ||
4686 | } | ||
4687 | 4779 | ||
4780 | /* set port 0xe to select the last DAC | ||
4781 | */ | ||
4782 | num_dacs = snd_hda_get_connections(codec, 0x0e, | ||
4783 | conn, STAC92HD83_DAC_COUNT + 1) - 1; | ||
4784 | |||
4785 | snd_hda_codec_write_cache(codec, 0xe, 0, | ||
4786 | AC_VERB_SET_CONNECT_SEL, num_dacs); | ||
4787 | |||
4788 | spec->init = stac92hd83xxx_core_init; | ||
4688 | spec->mixer = stac92hd83xxx_mixer; | 4789 | spec->mixer = stac92hd83xxx_mixer; |
4689 | spec->num_pins = ARRAY_SIZE(stac92hd83xxx_pin_nids); | 4790 | spec->num_pins = ARRAY_SIZE(stac92hd83xxx_pin_nids); |
4690 | spec->num_dmuxes = ARRAY_SIZE(stac92hd83xxx_dmux_nids); | 4791 | spec->num_dmuxes = ARRAY_SIZE(stac92hd83xxx_dmux_nids); |
4691 | spec->num_adcs = ARRAY_SIZE(stac92hd83xxx_adc_nids); | 4792 | spec->num_adcs = ARRAY_SIZE(stac92hd83xxx_adc_nids); |
4793 | spec->num_amps = ARRAY_SIZE(stac92hd83xxx_amp_nids); | ||
4692 | spec->num_dmics = STAC92HD83XXX_NUM_DMICS; | 4794 | spec->num_dmics = STAC92HD83XXX_NUM_DMICS; |
4693 | spec->dinput_mux = &stac92hd83xxx_dmux; | 4795 | spec->dinput_mux = &stac92hd83xxx_dmux; |
4694 | spec->pin_nids = stac92hd83xxx_pin_nids; | 4796 | spec->pin_nids = stac92hd83xxx_pin_nids; |
@@ -4709,6 +4811,15 @@ again: | |||
4709 | return err; | 4811 | return err; |
4710 | } | 4812 | } |
4711 | 4813 | ||
4814 | switch (codec->vendor_id) { | ||
4815 | case 0x111d7604: | ||
4816 | case 0x111d7605: | ||
4817 | if (spec->board_config == STAC_92HD83XXX_PWR_REF) | ||
4818 | break; | ||
4819 | spec->num_pwrs = 0; | ||
4820 | break; | ||
4821 | } | ||
4822 | |||
4712 | err = stac92xx_parse_auto_config(codec, 0x1d, 0); | 4823 | err = stac92xx_parse_auto_config(codec, 0x1d, 0); |
4713 | if (!err) { | 4824 | if (!err) { |
4714 | if (spec->board_config < 0) { | 4825 | if (spec->board_config < 0) { |
diff --git a/sound/pci/oxygen/virtuoso.c b/sound/pci/oxygen/virtuoso.c index 98c6a8c65d81..18c7c91786bc 100644 --- a/sound/pci/oxygen/virtuoso.c +++ b/sound/pci/oxygen/virtuoso.c | |||
@@ -26,7 +26,7 @@ | |||
26 | * SPI 0 -> 1st PCM1796 (front) | 26 | * SPI 0 -> 1st PCM1796 (front) |
27 | * SPI 1 -> 2nd PCM1796 (surround) | 27 | * SPI 1 -> 2nd PCM1796 (surround) |
28 | * SPI 2 -> 3rd PCM1796 (center/LFE) | 28 | * SPI 2 -> 3rd PCM1796 (center/LFE) |
29 | * SPI 4 -> 4th PCM1796 (back) | 29 | * SPI 4 -> 4th PCM1796 (back) and EEPROM self-destruct (do not use!) |
30 | * | 30 | * |
31 | * GPIO 2 -> M0 of CS5381 | 31 | * GPIO 2 -> M0 of CS5381 |
32 | * GPIO 3 -> M1 of CS5381 | 32 | * GPIO 3 -> M1 of CS5381 |
@@ -207,6 +207,12 @@ static void xonar_gpio_changed(struct oxygen *chip); | |||
207 | static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec, | 207 | static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec, |
208 | u8 reg, u8 value) | 208 | u8 reg, u8 value) |
209 | { | 209 | { |
210 | /* | ||
211 | * We don't want to do writes on SPI 4 because the EEPROM, which shares | ||
212 | * the same pin, might get confused and broken. We'd better take care | ||
213 | * that the driver works with the default register values ... | ||
214 | */ | ||
215 | #if 0 | ||
210 | /* maps ALSA channel pair number to SPI output */ | 216 | /* maps ALSA channel pair number to SPI output */ |
211 | static const u8 codec_map[4] = { | 217 | static const u8 codec_map[4] = { |
212 | 0, 1, 2, 4 | 218 | 0, 1, 2, 4 |
@@ -217,6 +223,7 @@ static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec, | |||
217 | (codec_map[codec] << OXYGEN_SPI_CODEC_SHIFT) | | 223 | (codec_map[codec] << OXYGEN_SPI_CODEC_SHIFT) | |
218 | OXYGEN_SPI_CEN_LATCH_CLOCK_HI, | 224 | OXYGEN_SPI_CEN_LATCH_CLOCK_HI, |
219 | (reg << 8) | value); | 225 | (reg << 8) | value); |
226 | #endif | ||
220 | } | 227 | } |
221 | 228 | ||
222 | static inline void pcm1796_write_i2c(struct oxygen *chip, unsigned int codec, | 229 | static inline void pcm1796_write_i2c(struct oxygen *chip, unsigned int codec, |
@@ -676,7 +683,7 @@ static void xonar_hdav_uart_input(struct oxygen *chip) | |||
676 | if (chip->uart_input_count >= 2 && | 683 | if (chip->uart_input_count >= 2 && |
677 | chip->uart_input[chip->uart_input_count - 2] == 'O' && | 684 | chip->uart_input[chip->uart_input_count - 2] == 'O' && |
678 | chip->uart_input[chip->uart_input_count - 1] == 'K') { | 685 | chip->uart_input[chip->uart_input_count - 1] == 'K') { |
679 | printk(KERN_DEBUG "message from Xonar HDAV HDMI chip received:"); | 686 | printk(KERN_DEBUG "message from Xonar HDAV HDMI chip received:\n"); |
680 | print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, | 687 | print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, |
681 | chip->uart_input, chip->uart_input_count); | 688 | chip->uart_input, chip->uart_input_count); |
682 | chip->uart_input_count = 0; | 689 | chip->uart_input_count = 0; |
@@ -750,6 +757,9 @@ static const DECLARE_TLV_DB_SCALE(cs4362a_db_scale, -12700, 100, 0); | |||
750 | 757 | ||
751 | static int xonar_d2_control_filter(struct snd_kcontrol_new *template) | 758 | static int xonar_d2_control_filter(struct snd_kcontrol_new *template) |
752 | { | 759 | { |
760 | if (!strncmp(template->name, "Master Playback ", 16)) | ||
761 | /* disable volume/mute because they would require SPI writes */ | ||
762 | return 1; | ||
753 | if (!strncmp(template->name, "CD Capture ", 11)) | 763 | if (!strncmp(template->name, "CD Capture ", 11)) |
754 | /* CD in is actually connected to the video in pin */ | 764 | /* CD in is actually connected to the video in pin */ |
755 | template->private_value ^= AC97_CD ^ AC97_VIDEO; | 765 | template->private_value ^= AC97_CD ^ AC97_VIDEO; |
@@ -840,9 +850,8 @@ static const struct oxygen_model model_xonar_d2 = { | |||
840 | .dac_volume_min = 0x0f, | 850 | .dac_volume_min = 0x0f, |
841 | .dac_volume_max = 0xff, | 851 | .dac_volume_max = 0xff, |
842 | .misc_flags = OXYGEN_MISC_MIDI, | 852 | .misc_flags = OXYGEN_MISC_MIDI, |
843 | .function_flags = OXYGEN_FUNCTION_SPI | | 853 | .function_flags = OXYGEN_FUNCTION_SPI, |
844 | OXYGEN_FUNCTION_ENABLE_SPI_4_5, | 854 | .dac_i2s_format = OXYGEN_I2S_FORMAT_I2S, |
845 | .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST, | ||
846 | .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, | 855 | .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, |
847 | }; | 856 | }; |
848 | 857 | ||
@@ -899,6 +908,7 @@ static const struct oxygen_model model_xonar_hdav = { | |||
899 | .dac_channels = 8, | 908 | .dac_channels = 8, |
900 | .dac_volume_min = 0x0f, | 909 | .dac_volume_min = 0x0f, |
901 | .dac_volume_max = 0xff, | 910 | .dac_volume_max = 0xff, |
911 | .misc_flags = OXYGEN_MISC_MIDI, | ||
902 | .function_flags = OXYGEN_FUNCTION_2WIRE, | 912 | .function_flags = OXYGEN_FUNCTION_2WIRE, |
903 | .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST, | 913 | .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST, |
904 | .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, | 914 | .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, |
diff --git a/sound/ppc/snd_ps3.c b/sound/ppc/snd_ps3.c index 8f9e3859c37c..ff321110ec02 100644 --- a/sound/ppc/snd_ps3.c +++ b/sound/ppc/snd_ps3.c | |||
@@ -477,7 +477,7 @@ static int snd_ps3_pcm_prepare(struct snd_pcm_substream *substream) | |||
477 | card->dma_start_bus_addr[SND_PS3_CH_R] = | 477 | card->dma_start_bus_addr[SND_PS3_CH_R] = |
478 | runtime->dma_addr + (runtime->dma_bytes / 2); | 478 | runtime->dma_addr + (runtime->dma_bytes / 2); |
479 | 479 | ||
480 | pr_debug("%s: vaddr=%p bus=%#lx\n", __func__, | 480 | pr_debug("%s: vaddr=%p bus=%#llx\n", __func__, |
481 | card->dma_start_vaddr[SND_PS3_CH_L], | 481 | card->dma_start_vaddr[SND_PS3_CH_L], |
482 | card->dma_start_bus_addr[SND_PS3_CH_L]); | 482 | card->dma_start_bus_addr[SND_PS3_CH_L]); |
483 | 483 | ||
@@ -1030,7 +1030,7 @@ static int __init snd_ps3_driver_probe(struct ps3_system_bus_device *dev) | |||
1030 | pr_info("%s: nullbuffer alloc failed\n", __func__); | 1030 | pr_info("%s: nullbuffer alloc failed\n", __func__); |
1031 | goto clean_preallocate; | 1031 | goto clean_preallocate; |
1032 | } | 1032 | } |
1033 | pr_debug("%s: null vaddr=%p dma=%#lx\n", __func__, | 1033 | pr_debug("%s: null vaddr=%p dma=%#llx\n", __func__, |
1034 | the_card.null_buffer_start_vaddr, | 1034 | the_card.null_buffer_start_vaddr, |
1035 | the_card.null_buffer_start_dma_addr); | 1035 | the_card.null_buffer_start_dma_addr); |
1036 | /* set default sample rate/word width */ | 1036 | /* set default sample rate/word width */ |
diff --git a/sound/soc/atmel/atmel-pcm.c b/sound/soc/atmel/atmel-pcm.c index 1fac5efd285b..3dcdc4e3cfa0 100644 --- a/sound/soc/atmel/atmel-pcm.c +++ b/sound/soc/atmel/atmel-pcm.c | |||
@@ -44,8 +44,6 @@ | |||
44 | #include <sound/pcm_params.h> | 44 | #include <sound/pcm_params.h> |
45 | #include <sound/soc.h> | 45 | #include <sound/soc.h> |
46 | 46 | ||
47 | #include <mach/hardware.h> | ||
48 | |||
49 | #include "atmel-pcm.h" | 47 | #include "atmel-pcm.h" |
50 | 48 | ||
51 | 49 | ||
diff --git a/sound/soc/fsl/mpc8610_hpcd.c b/sound/soc/fsl/mpc8610_hpcd.c index bcec3f60bad9..acf39a646b2f 100644 --- a/sound/soc/fsl/mpc8610_hpcd.c +++ b/sound/soc/fsl/mpc8610_hpcd.c | |||
@@ -183,16 +183,6 @@ static struct snd_soc_ops mpc8610_hpcd_ops = { | |||
183 | }; | 183 | }; |
184 | 184 | ||
185 | /** | 185 | /** |
186 | * mpc8610_hpcd_machine: ASoC machine data | ||
187 | */ | ||
188 | static struct snd_soc_card mpc8610_hpcd_machine = { | ||
189 | .probe = mpc8610_hpcd_machine_probe, | ||
190 | .remove = mpc8610_hpcd_machine_remove, | ||
191 | .name = "MPC8610 HPCD", | ||
192 | .num_links = 1, | ||
193 | }; | ||
194 | |||
195 | /** | ||
196 | * mpc8610_hpcd_probe: OF probe function for the fabric driver | 186 | * mpc8610_hpcd_probe: OF probe function for the fabric driver |
197 | * | 187 | * |
198 | * This function gets called when an SSI node is found in the device tree. | 188 | * This function gets called when an SSI node is found in the device tree. |
@@ -455,7 +445,11 @@ static int mpc8610_hpcd_probe(struct of_device *ofdev, | |||
455 | machine_data->dai.codec_dai = &cs4270_dai; /* The codec_dai we want */ | 445 | machine_data->dai.codec_dai = &cs4270_dai; /* The codec_dai we want */ |
456 | machine_data->dai.ops = &mpc8610_hpcd_ops; | 446 | machine_data->dai.ops = &mpc8610_hpcd_ops; |
457 | 447 | ||
458 | mpc8610_hpcd_machine.dai_link = &machine_data->dai; | 448 | machine_data->machine.probe = mpc8610_hpcd_machine_probe; |
449 | machine_data->machine.remove = mpc8610_hpcd_machine_remove; | ||
450 | machine_data->machine.name = "MPC8610 HPCD"; | ||
451 | machine_data->machine.num_links = 1; | ||
452 | machine_data->machine.dai_link = &machine_data->dai; | ||
459 | 453 | ||
460 | /* Allocate a new audio platform device structure */ | 454 | /* Allocate a new audio platform device structure */ |
461 | sound_device = platform_device_alloc("soc-audio", -1); | 455 | sound_device = platform_device_alloc("soc-audio", -1); |
@@ -465,7 +459,7 @@ static int mpc8610_hpcd_probe(struct of_device *ofdev, | |||
465 | goto error; | 459 | goto error; |
466 | } | 460 | } |
467 | 461 | ||
468 | machine_data->sound_devdata.card = &mpc8610_hpcd_machine; | 462 | machine_data->sound_devdata.card = &machine_data->machine; |
469 | machine_data->sound_devdata.codec_dev = &soc_codec_device_cs4270; | 463 | machine_data->sound_devdata.codec_dev = &soc_codec_device_cs4270; |
470 | machine_data->machine.platform = &fsl_soc_platform; | 464 | machine_data->machine.platform = &fsl_soc_platform; |
471 | 465 | ||
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 493a4e8aa273..a2f1da8b4646 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c | |||
@@ -720,7 +720,8 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget, | |||
720 | struct snd_soc_dapm_path *path; | 720 | struct snd_soc_dapm_path *path; |
721 | int found = 0; | 721 | int found = 0; |
722 | 722 | ||
723 | if (widget->id != snd_soc_dapm_mux) | 723 | if (widget->id != snd_soc_dapm_mux && |
724 | widget->id != snd_soc_dapm_value_mux) | ||
724 | return -ENODEV; | 725 | return -ENODEV; |
725 | 726 | ||
726 | if (!snd_soc_test_bits(widget->codec, e->reg, mask, val)) | 727 | if (!snd_soc_test_bits(widget->codec, e->reg, mask, val)) |
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h index 92115755d98e..5d8ef09b9dcc 100644 --- a/sound/usb/usbquirks.h +++ b/sound/usb/usbquirks.h | |||
@@ -128,6 +128,14 @@ | |||
128 | .bInterfaceClass = USB_CLASS_AUDIO, | 128 | .bInterfaceClass = USB_CLASS_AUDIO, |
129 | .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL | 129 | .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL |
130 | }, | 130 | }, |
131 | { | ||
132 | USB_DEVICE(0x046d, 0x0990), | ||
133 | .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { | ||
134 | .vendor_name = "Logitech, Inc.", | ||
135 | .product_name = "QuickCam Pro 9000", | ||
136 | .ifnum = QUIRK_NO_INTERFACE | ||
137 | } | ||
138 | }, | ||
131 | 139 | ||
132 | /* | 140 | /* |
133 | * Yamaha devices | 141 | * Yamaha devices |