diff options
106 files changed, 1941 insertions, 891 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 1fd6d02a79b8..40245af2d0e3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -2338,6 +2338,8 @@ L: linuxppc-dev@ozlabs.org | |||
2338 | S: Maintained | 2338 | S: Maintained |
2339 | 2339 | ||
2340 | LINUX FOR POWERPC EMBEDDED PPC8XX | 2340 | LINUX FOR POWERPC EMBEDDED PPC8XX |
2341 | P: Vitaly Bordug | ||
2342 | M: vitb@kernel.crashing.org | ||
2341 | P: Marcelo Tosatti | 2343 | P: Marcelo Tosatti |
2342 | M: marcelo@kvack.org | 2344 | M: marcelo@kvack.org |
2343 | W: http://www.penguinppc.org/ | 2345 | W: http://www.penguinppc.org/ |
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c index ee07dceae1d4..2d00a08d3f08 100644 --- a/arch/alpha/kernel/pci_iommu.c +++ b/arch/alpha/kernel/pci_iommu.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/pci.h> | 7 | #include <linux/pci.h> |
8 | #include <linux/slab.h> | 8 | #include <linux/slab.h> |
9 | #include <linux/bootmem.h> | 9 | #include <linux/bootmem.h> |
10 | #include <linux/scatterlist.h> | ||
10 | #include <linux/log2.h> | 11 | #include <linux/log2.h> |
11 | 12 | ||
12 | #include <asm/io.h> | 13 | #include <asm/io.h> |
diff --git a/arch/arm/common/dmabounce.c b/arch/arm/common/dmabounce.c index 9d371e476552..52fc6a883281 100644 --- a/arch/arm/common/dmabounce.c +++ b/arch/arm/common/dmabounce.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/dma-mapping.h> | 29 | #include <linux/dma-mapping.h> |
30 | #include <linux/dmapool.h> | 30 | #include <linux/dmapool.h> |
31 | #include <linux/list.h> | 31 | #include <linux/list.h> |
32 | #include <linux/scatterlist.h> | ||
32 | 33 | ||
33 | #include <asm/cacheflush.h> | 34 | #include <asm/cacheflush.h> |
34 | 35 | ||
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c index 6b9e466104ad..5be0d13f4b03 100644 --- a/arch/avr32/boards/atstk1000/atstk1002.c +++ b/arch/avr32/boards/atstk1000/atstk1002.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/string.h> | 16 | #include <linux/string.h> |
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <linux/spi/spi.h> | 18 | #include <linux/spi/spi.h> |
19 | #include <linux/spi/at73c213.h> | ||
19 | 20 | ||
20 | #include <video/atmel_lcdc.h> | 21 | #include <video/atmel_lcdc.h> |
21 | 22 | ||
@@ -49,7 +50,26 @@ static struct eth_platform_data __initdata eth_data[2] = { | |||
49 | }; | 50 | }; |
50 | 51 | ||
51 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM | 52 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM |
53 | #ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM | ||
54 | static struct at73c213_board_info at73c213_data = { | ||
55 | .ssc_id = 0, | ||
56 | .shortname = "AVR32 STK1000 external DAC", | ||
57 | }; | ||
58 | #endif | ||
59 | #endif | ||
60 | |||
61 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM | ||
52 | static struct spi_board_info spi0_board_info[] __initdata = { | 62 | static struct spi_board_info spi0_board_info[] __initdata = { |
63 | #ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM | ||
64 | { | ||
65 | /* AT73C213 */ | ||
66 | .modalias = "at73c213", | ||
67 | .max_speed_hz = 200000, | ||
68 | .chip_select = 0, | ||
69 | .mode = SPI_MODE_1, | ||
70 | .platform_data = &at73c213_data, | ||
71 | }, | ||
72 | #endif | ||
53 | { | 73 | { |
54 | /* QVGA display */ | 74 | /* QVGA display */ |
55 | .modalias = "ltv350qv", | 75 | .modalias = "ltv350qv", |
@@ -180,6 +200,38 @@ static void setup_j2_leds(void) | |||
180 | } | 200 | } |
181 | #endif | 201 | #endif |
182 | 202 | ||
203 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM | ||
204 | #ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM | ||
205 | static void __init at73c213_set_clk(struct at73c213_board_info *info) | ||
206 | { | ||
207 | struct clk *gclk; | ||
208 | struct clk *pll; | ||
209 | |||
210 | gclk = clk_get(NULL, "gclk0"); | ||
211 | if (IS_ERR(gclk)) | ||
212 | goto err_gclk; | ||
213 | pll = clk_get(NULL, "pll0"); | ||
214 | if (IS_ERR(pll)) | ||
215 | goto err_pll; | ||
216 | |||
217 | if (clk_set_parent(gclk, pll)) { | ||
218 | pr_debug("STK1000: failed to set pll0 as parent for DAC clock\n"); | ||
219 | goto err_set_clk; | ||
220 | } | ||
221 | |||
222 | at32_select_periph(GPIO_PIN_PA(30), GPIO_PERIPH_A, 0); | ||
223 | info->dac_clk = gclk; | ||
224 | |||
225 | err_set_clk: | ||
226 | clk_put(pll); | ||
227 | err_pll: | ||
228 | clk_put(gclk); | ||
229 | err_gclk: | ||
230 | return; | ||
231 | } | ||
232 | #endif | ||
233 | #endif | ||
234 | |||
183 | void __init setup_board(void) | 235 | void __init setup_board(void) |
184 | { | 236 | { |
185 | #ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM | 237 | #ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM |
@@ -248,6 +300,12 @@ static int __init atstk1002_init(void) | |||
248 | 300 | ||
249 | setup_j2_leds(); | 301 | setup_j2_leds(); |
250 | 302 | ||
303 | #ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM | ||
304 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM | ||
305 | at73c213_set_clk(&at73c213_data); | ||
306 | #endif | ||
307 | #endif | ||
308 | |||
251 | return 0; | 309 | return 0; |
252 | } | 310 | } |
253 | postcore_initcall(atstk1002_init); | 311 | postcore_initcall(atstk1002_init); |
diff --git a/arch/avr32/mach-at32ap/at32ap7000.c b/arch/avr32/mach-at32ap/at32ap7000.c index f6d154ca4d24..a9d9ec081e3d 100644 --- a/arch/avr32/mach-at32ap/at32ap7000.c +++ b/arch/avr32/mach-at32ap/at32ap7000.c | |||
@@ -556,6 +556,17 @@ static struct clk pico_clk = { | |||
556 | .users = 1, | 556 | .users = 1, |
557 | }; | 557 | }; |
558 | 558 | ||
559 | static struct resource dmaca0_resource[] = { | ||
560 | { | ||
561 | .start = 0xff200000, | ||
562 | .end = 0xff20ffff, | ||
563 | .flags = IORESOURCE_MEM, | ||
564 | }, | ||
565 | IRQ(2), | ||
566 | }; | ||
567 | DEFINE_DEV(dmaca, 0); | ||
568 | DEV_CLK(hclk, dmaca0, hsb, 10); | ||
569 | |||
559 | /* -------------------------------------------------------------------- | 570 | /* -------------------------------------------------------------------- |
560 | * HMATRIX | 571 | * HMATRIX |
561 | * -------------------------------------------------------------------- */ | 572 | * -------------------------------------------------------------------- */ |
@@ -655,6 +666,7 @@ void __init at32_add_system_devices(void) | |||
655 | platform_device_register(&at32_eic0_device); | 666 | platform_device_register(&at32_eic0_device); |
656 | platform_device_register(&smc0_device); | 667 | platform_device_register(&smc0_device); |
657 | platform_device_register(&pdc_device); | 668 | platform_device_register(&pdc_device); |
669 | platform_device_register(&dmaca0_device); | ||
658 | 670 | ||
659 | platform_device_register(&at32_systc0_device); | 671 | platform_device_register(&at32_systc0_device); |
660 | 672 | ||
@@ -960,6 +972,96 @@ at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n) | |||
960 | } | 972 | } |
961 | 973 | ||
962 | /* -------------------------------------------------------------------- | 974 | /* -------------------------------------------------------------------- |
975 | * TWI | ||
976 | * -------------------------------------------------------------------- */ | ||
977 | static struct resource atmel_twi0_resource[] __initdata = { | ||
978 | PBMEM(0xffe00800), | ||
979 | IRQ(5), | ||
980 | }; | ||
981 | static struct clk atmel_twi0_pclk = { | ||
982 | .name = "twi_pclk", | ||
983 | .parent = &pba_clk, | ||
984 | .mode = pba_clk_mode, | ||
985 | .get_rate = pba_clk_get_rate, | ||
986 | .index = 2, | ||
987 | }; | ||
988 | |||
989 | struct platform_device *__init at32_add_device_twi(unsigned int id) | ||
990 | { | ||
991 | struct platform_device *pdev; | ||
992 | |||
993 | if (id != 0) | ||
994 | return NULL; | ||
995 | |||
996 | pdev = platform_device_alloc("atmel_twi", id); | ||
997 | if (!pdev) | ||
998 | return NULL; | ||
999 | |||
1000 | if (platform_device_add_resources(pdev, atmel_twi0_resource, | ||
1001 | ARRAY_SIZE(atmel_twi0_resource))) | ||
1002 | goto err_add_resources; | ||
1003 | |||
1004 | select_peripheral(PA(6), PERIPH_A, 0); /* SDA */ | ||
1005 | select_peripheral(PA(7), PERIPH_A, 0); /* SDL */ | ||
1006 | |||
1007 | atmel_twi0_pclk.dev = &pdev->dev; | ||
1008 | |||
1009 | platform_device_add(pdev); | ||
1010 | return pdev; | ||
1011 | |||
1012 | err_add_resources: | ||
1013 | platform_device_put(pdev); | ||
1014 | return NULL; | ||
1015 | } | ||
1016 | |||
1017 | /* -------------------------------------------------------------------- | ||
1018 | * MMC | ||
1019 | * -------------------------------------------------------------------- */ | ||
1020 | static struct resource atmel_mci0_resource[] __initdata = { | ||
1021 | PBMEM(0xfff02400), | ||
1022 | IRQ(28), | ||
1023 | }; | ||
1024 | static struct clk atmel_mci0_pclk = { | ||
1025 | .name = "mci_clk", | ||
1026 | .parent = &pbb_clk, | ||
1027 | .mode = pbb_clk_mode, | ||
1028 | .get_rate = pbb_clk_get_rate, | ||
1029 | .index = 9, | ||
1030 | }; | ||
1031 | |||
1032 | struct platform_device *__init at32_add_device_mci(unsigned int id) | ||
1033 | { | ||
1034 | struct platform_device *pdev; | ||
1035 | |||
1036 | if (id != 0) | ||
1037 | return NULL; | ||
1038 | |||
1039 | pdev = platform_device_alloc("atmel_mci", id); | ||
1040 | if (!pdev) | ||
1041 | return NULL; | ||
1042 | |||
1043 | if (platform_device_add_resources(pdev, atmel_mci0_resource, | ||
1044 | ARRAY_SIZE(atmel_mci0_resource))) | ||
1045 | goto err_add_resources; | ||
1046 | |||
1047 | select_peripheral(PA(10), PERIPH_A, 0); /* CLK */ | ||
1048 | select_peripheral(PA(11), PERIPH_A, 0); /* CMD */ | ||
1049 | select_peripheral(PA(12), PERIPH_A, 0); /* DATA0 */ | ||
1050 | select_peripheral(PA(13), PERIPH_A, 0); /* DATA1 */ | ||
1051 | select_peripheral(PA(14), PERIPH_A, 0); /* DATA2 */ | ||
1052 | select_peripheral(PA(15), PERIPH_A, 0); /* DATA3 */ | ||
1053 | |||
1054 | atmel_mci0_pclk.dev = &pdev->dev; | ||
1055 | |||
1056 | platform_device_add(pdev); | ||
1057 | return pdev; | ||
1058 | |||
1059 | err_add_resources: | ||
1060 | platform_device_put(pdev); | ||
1061 | return NULL; | ||
1062 | } | ||
1063 | |||
1064 | /* -------------------------------------------------------------------- | ||
963 | * LCDC | 1065 | * LCDC |
964 | * -------------------------------------------------------------------- */ | 1066 | * -------------------------------------------------------------------- */ |
965 | static struct atmel_lcdfb_info atmel_lcdfb0_data; | 1067 | static struct atmel_lcdfb_info atmel_lcdfb0_data; |
@@ -1228,6 +1330,241 @@ out_free_pdev: | |||
1228 | } | 1330 | } |
1229 | 1331 | ||
1230 | /* -------------------------------------------------------------------- | 1332 | /* -------------------------------------------------------------------- |
1333 | * IDE / CompactFlash | ||
1334 | * -------------------------------------------------------------------- */ | ||
1335 | static struct resource at32_smc_cs4_resource[] __initdata = { | ||
1336 | { | ||
1337 | .start = 0x04000000, | ||
1338 | .end = 0x07ffffff, | ||
1339 | .flags = IORESOURCE_MEM, | ||
1340 | }, | ||
1341 | IRQ(~0UL), /* Magic IRQ will be overridden */ | ||
1342 | }; | ||
1343 | static struct resource at32_smc_cs5_resource[] __initdata = { | ||
1344 | { | ||
1345 | .start = 0x20000000, | ||
1346 | .end = 0x23ffffff, | ||
1347 | .flags = IORESOURCE_MEM, | ||
1348 | }, | ||
1349 | IRQ(~0UL), /* Magic IRQ will be overridden */ | ||
1350 | }; | ||
1351 | |||
1352 | static int __init at32_init_ide_or_cf(struct platform_device *pdev, | ||
1353 | unsigned int cs, unsigned int extint) | ||
1354 | { | ||
1355 | static unsigned int extint_pin_map[4] __initdata = { | ||
1356 | GPIO_PIN_PB(25), | ||
1357 | GPIO_PIN_PB(26), | ||
1358 | GPIO_PIN_PB(27), | ||
1359 | GPIO_PIN_PB(28), | ||
1360 | }; | ||
1361 | static bool common_pins_initialized __initdata = false; | ||
1362 | unsigned int extint_pin; | ||
1363 | int ret; | ||
1364 | |||
1365 | if (extint >= ARRAY_SIZE(extint_pin_map)) | ||
1366 | return -EINVAL; | ||
1367 | extint_pin = extint_pin_map[extint]; | ||
1368 | |||
1369 | switch (cs) { | ||
1370 | case 4: | ||
1371 | ret = platform_device_add_resources(pdev, | ||
1372 | at32_smc_cs4_resource, | ||
1373 | ARRAY_SIZE(at32_smc_cs4_resource)); | ||
1374 | if (ret) | ||
1375 | return ret; | ||
1376 | |||
1377 | select_peripheral(PE(21), PERIPH_A, 0); /* NCS4 -> OE_N */ | ||
1378 | set_ebi_sfr_bits(HMATRIX_BIT(CS4A)); | ||
1379 | break; | ||
1380 | case 5: | ||
1381 | ret = platform_device_add_resources(pdev, | ||
1382 | at32_smc_cs5_resource, | ||
1383 | ARRAY_SIZE(at32_smc_cs5_resource)); | ||
1384 | if (ret) | ||
1385 | return ret; | ||
1386 | |||
1387 | select_peripheral(PE(22), PERIPH_A, 0); /* NCS5 -> OE_N */ | ||
1388 | set_ebi_sfr_bits(HMATRIX_BIT(CS5A)); | ||
1389 | break; | ||
1390 | default: | ||
1391 | return -EINVAL; | ||
1392 | } | ||
1393 | |||
1394 | if (!common_pins_initialized) { | ||
1395 | select_peripheral(PE(19), PERIPH_A, 0); /* CFCE1 -> CS0_N */ | ||
1396 | select_peripheral(PE(20), PERIPH_A, 0); /* CFCE2 -> CS1_N */ | ||
1397 | select_peripheral(PE(23), PERIPH_A, 0); /* CFRNW -> DIR */ | ||
1398 | select_peripheral(PE(24), PERIPH_A, 0); /* NWAIT <- IORDY */ | ||
1399 | common_pins_initialized = true; | ||
1400 | } | ||
1401 | |||
1402 | at32_select_periph(extint_pin, GPIO_PERIPH_A, AT32_GPIOF_DEGLITCH); | ||
1403 | |||
1404 | pdev->resource[1].start = EIM_IRQ_BASE + extint; | ||
1405 | pdev->resource[1].end = pdev->resource[1].start; | ||
1406 | |||
1407 | return 0; | ||
1408 | } | ||
1409 | |||
1410 | struct platform_device *__init | ||
1411 | at32_add_device_ide(unsigned int id, unsigned int extint, | ||
1412 | struct ide_platform_data *data) | ||
1413 | { | ||
1414 | struct platform_device *pdev; | ||
1415 | |||
1416 | pdev = platform_device_alloc("at32_ide", id); | ||
1417 | if (!pdev) | ||
1418 | goto fail; | ||
1419 | |||
1420 | if (platform_device_add_data(pdev, data, | ||
1421 | sizeof(struct ide_platform_data))) | ||
1422 | goto fail; | ||
1423 | |||
1424 | if (at32_init_ide_or_cf(pdev, data->cs, extint)) | ||
1425 | goto fail; | ||
1426 | |||
1427 | platform_device_add(pdev); | ||
1428 | return pdev; | ||
1429 | |||
1430 | fail: | ||
1431 | platform_device_put(pdev); | ||
1432 | return NULL; | ||
1433 | } | ||
1434 | |||
1435 | struct platform_device *__init | ||
1436 | at32_add_device_cf(unsigned int id, unsigned int extint, | ||
1437 | struct cf_platform_data *data) | ||
1438 | { | ||
1439 | struct platform_device *pdev; | ||
1440 | |||
1441 | pdev = platform_device_alloc("at32_cf", id); | ||
1442 | if (!pdev) | ||
1443 | goto fail; | ||
1444 | |||
1445 | if (platform_device_add_data(pdev, data, | ||
1446 | sizeof(struct cf_platform_data))) | ||
1447 | goto fail; | ||
1448 | |||
1449 | if (at32_init_ide_or_cf(pdev, data->cs, extint)) | ||
1450 | goto fail; | ||
1451 | |||
1452 | if (data->detect_pin != GPIO_PIN_NONE) | ||
1453 | at32_select_gpio(data->detect_pin, AT32_GPIOF_DEGLITCH); | ||
1454 | if (data->reset_pin != GPIO_PIN_NONE) | ||
1455 | at32_select_gpio(data->reset_pin, 0); | ||
1456 | if (data->vcc_pin != GPIO_PIN_NONE) | ||
1457 | at32_select_gpio(data->vcc_pin, 0); | ||
1458 | /* READY is used as extint, so we can't select it as gpio */ | ||
1459 | |||
1460 | platform_device_add(pdev); | ||
1461 | return pdev; | ||
1462 | |||
1463 | fail: | ||
1464 | platform_device_put(pdev); | ||
1465 | return NULL; | ||
1466 | } | ||
1467 | |||
1468 | /* -------------------------------------------------------------------- | ||
1469 | * AC97C | ||
1470 | * -------------------------------------------------------------------- */ | ||
1471 | static struct resource atmel_ac97c0_resource[] __initdata = { | ||
1472 | PBMEM(0xfff02800), | ||
1473 | IRQ(29), | ||
1474 | }; | ||
1475 | static struct clk atmel_ac97c0_pclk = { | ||
1476 | .name = "pclk", | ||
1477 | .parent = &pbb_clk, | ||
1478 | .mode = pbb_clk_mode, | ||
1479 | .get_rate = pbb_clk_get_rate, | ||
1480 | .index = 10, | ||
1481 | }; | ||
1482 | |||
1483 | struct platform_device *__init at32_add_device_ac97c(unsigned int id) | ||
1484 | { | ||
1485 | struct platform_device *pdev; | ||
1486 | |||
1487 | if (id != 0) | ||
1488 | return NULL; | ||
1489 | |||
1490 | pdev = platform_device_alloc("atmel_ac97c", id); | ||
1491 | if (!pdev) | ||
1492 | return NULL; | ||
1493 | |||
1494 | if (platform_device_add_resources(pdev, atmel_ac97c0_resource, | ||
1495 | ARRAY_SIZE(atmel_ac97c0_resource))) | ||
1496 | goto err_add_resources; | ||
1497 | |||
1498 | select_peripheral(PB(20), PERIPH_B, 0); /* SYNC */ | ||
1499 | select_peripheral(PB(21), PERIPH_B, 0); /* SDO */ | ||
1500 | select_peripheral(PB(22), PERIPH_B, 0); /* SDI */ | ||
1501 | select_peripheral(PB(23), PERIPH_B, 0); /* SCLK */ | ||
1502 | |||
1503 | atmel_ac97c0_pclk.dev = &pdev->dev; | ||
1504 | |||
1505 | platform_device_add(pdev); | ||
1506 | return pdev; | ||
1507 | |||
1508 | err_add_resources: | ||
1509 | platform_device_put(pdev); | ||
1510 | return NULL; | ||
1511 | } | ||
1512 | |||
1513 | /* -------------------------------------------------------------------- | ||
1514 | * ABDAC | ||
1515 | * -------------------------------------------------------------------- */ | ||
1516 | static struct resource abdac0_resource[] __initdata = { | ||
1517 | PBMEM(0xfff02000), | ||
1518 | IRQ(27), | ||
1519 | }; | ||
1520 | static struct clk abdac0_pclk = { | ||
1521 | .name = "pclk", | ||
1522 | .parent = &pbb_clk, | ||
1523 | .mode = pbb_clk_mode, | ||
1524 | .get_rate = pbb_clk_get_rate, | ||
1525 | .index = 8, | ||
1526 | }; | ||
1527 | static struct clk abdac0_sample_clk = { | ||
1528 | .name = "sample_clk", | ||
1529 | .mode = genclk_mode, | ||
1530 | .get_rate = genclk_get_rate, | ||
1531 | .set_rate = genclk_set_rate, | ||
1532 | .set_parent = genclk_set_parent, | ||
1533 | .index = 6, | ||
1534 | }; | ||
1535 | |||
1536 | struct platform_device *__init at32_add_device_abdac(unsigned int id) | ||
1537 | { | ||
1538 | struct platform_device *pdev; | ||
1539 | |||
1540 | if (id != 0) | ||
1541 | return NULL; | ||
1542 | |||
1543 | pdev = platform_device_alloc("abdac", id); | ||
1544 | if (!pdev) | ||
1545 | return NULL; | ||
1546 | |||
1547 | if (platform_device_add_resources(pdev, abdac0_resource, | ||
1548 | ARRAY_SIZE(abdac0_resource))) | ||
1549 | goto err_add_resources; | ||
1550 | |||
1551 | select_peripheral(PB(20), PERIPH_A, 0); /* DATA1 */ | ||
1552 | select_peripheral(PB(21), PERIPH_A, 0); /* DATA0 */ | ||
1553 | select_peripheral(PB(22), PERIPH_A, 0); /* DATAN1 */ | ||
1554 | select_peripheral(PB(23), PERIPH_A, 0); /* DATAN0 */ | ||
1555 | |||
1556 | abdac0_pclk.dev = &pdev->dev; | ||
1557 | abdac0_sample_clk.dev = &pdev->dev; | ||
1558 | |||
1559 | platform_device_add(pdev); | ||
1560 | return pdev; | ||
1561 | |||
1562 | err_add_resources: | ||
1563 | platform_device_put(pdev); | ||
1564 | return NULL; | ||
1565 | } | ||
1566 | |||
1567 | /* -------------------------------------------------------------------- | ||
1231 | * GCLK | 1568 | * GCLK |
1232 | * -------------------------------------------------------------------- */ | 1569 | * -------------------------------------------------------------------- */ |
1233 | static struct clk gclk0 = { | 1570 | static struct clk gclk0 = { |
@@ -1290,6 +1627,7 @@ struct clk *at32_clock_list[] = { | |||
1290 | &smc0_mck, | 1627 | &smc0_mck, |
1291 | &pdc_hclk, | 1628 | &pdc_hclk, |
1292 | &pdc_pclk, | 1629 | &pdc_pclk, |
1630 | &dmaca0_hclk, | ||
1293 | &pico_clk, | 1631 | &pico_clk, |
1294 | &pio0_mck, | 1632 | &pio0_mck, |
1295 | &pio1_mck, | 1633 | &pio1_mck, |
@@ -1307,6 +1645,8 @@ struct clk *at32_clock_list[] = { | |||
1307 | &macb1_pclk, | 1645 | &macb1_pclk, |
1308 | &atmel_spi0_spi_clk, | 1646 | &atmel_spi0_spi_clk, |
1309 | &atmel_spi1_spi_clk, | 1647 | &atmel_spi1_spi_clk, |
1648 | &atmel_twi0_pclk, | ||
1649 | &atmel_mci0_pclk, | ||
1310 | &atmel_lcdfb0_hck1, | 1650 | &atmel_lcdfb0_hck1, |
1311 | &atmel_lcdfb0_pixclk, | 1651 | &atmel_lcdfb0_pixclk, |
1312 | &ssc0_pclk, | 1652 | &ssc0_pclk, |
@@ -1314,6 +1654,9 @@ struct clk *at32_clock_list[] = { | |||
1314 | &ssc2_pclk, | 1654 | &ssc2_pclk, |
1315 | &usba0_hclk, | 1655 | &usba0_hclk, |
1316 | &usba0_pclk, | 1656 | &usba0_pclk, |
1657 | &atmel_ac97c0_pclk, | ||
1658 | &abdac0_pclk, | ||
1659 | &abdac0_sample_clk, | ||
1317 | &gclk0, | 1660 | &gclk0, |
1318 | &gclk1, | 1661 | &gclk1, |
1319 | &gclk2, | 1662 | &gclk2, |
@@ -1355,6 +1698,7 @@ void __init at32_clock_init(void) | |||
1355 | genclk_init_parent(&gclk3); | 1698 | genclk_init_parent(&gclk3); |
1356 | genclk_init_parent(&gclk4); | 1699 | genclk_init_parent(&gclk4); |
1357 | genclk_init_parent(&atmel_lcdfb0_pixclk); | 1700 | genclk_init_parent(&atmel_lcdfb0_pixclk); |
1701 | genclk_init_parent(&abdac0_sample_clk); | ||
1358 | 1702 | ||
1359 | /* | 1703 | /* |
1360 | * Turn on all clocks that have at least one user already, and | 1704 | * Turn on all clocks that have at least one user already, and |
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c index 8acd01090031..f5bfd4c81fe7 100644 --- a/arch/avr32/mach-at32ap/extint.c +++ b/arch/avr32/mach-at32ap/extint.c | |||
@@ -142,7 +142,7 @@ static int eic_set_irq_type(unsigned int irq, unsigned int flow_type) | |||
142 | return ret; | 142 | return ret; |
143 | } | 143 | } |
144 | 144 | ||
145 | struct irq_chip eic_chip = { | 145 | static struct irq_chip eic_chip = { |
146 | .name = "eic", | 146 | .name = "eic", |
147 | .ack = eic_ack_irq, | 147 | .ack = eic_ack_irq, |
148 | .mask = eic_mask_irq, | 148 | .mask = eic_mask_irq, |
diff --git a/arch/avr32/mach-at32ap/pm.h b/arch/avr32/mach-at32ap/pm.h index 47efd0d1951f..694d521edc2f 100644 --- a/arch/avr32/mach-at32ap/pm.h +++ b/arch/avr32/mach-at32ap/pm.h | |||
@@ -113,8 +113,8 @@ | |||
113 | 113 | ||
114 | /* Register access macros */ | 114 | /* Register access macros */ |
115 | #define pm_readl(reg) \ | 115 | #define pm_readl(reg) \ |
116 | __raw_readl((void __iomem *)AT32_PM_BASE + PM_##reg) | 116 | __raw_readl((void __iomem __force *)AT32_PM_BASE + PM_##reg) |
117 | #define pm_writel(reg,value) \ | 117 | #define pm_writel(reg,value) \ |
118 | __raw_writel((value), (void __iomem *)AT32_PM_BASE + PM_##reg) | 118 | __raw_writel((value), (void __iomem __force *)AT32_PM_BASE + PM_##reg) |
119 | 119 | ||
120 | #endif /* __ARCH_AVR32_MACH_AT32AP_PM_H__ */ | 120 | #endif /* __ARCH_AVR32_MACH_AT32AP_PM_H__ */ |
diff --git a/arch/avr32/mach-at32ap/time-tc.c b/arch/avr32/mach-at32ap/time-tc.c index e3070bdd4bb9..10265863c982 100644 --- a/arch/avr32/mach-at32ap/time-tc.c +++ b/arch/avr32/mach-at32ap/time-tc.c | |||
@@ -79,7 +79,7 @@ static int avr32_timer_calc_div_and_set_jiffies(struct clk *pclk) | |||
79 | { | 79 | { |
80 | unsigned int cycles_max = (clocksource_avr32.mask + 1) / 2; | 80 | unsigned int cycles_max = (clocksource_avr32.mask + 1) / 2; |
81 | unsigned int divs[] = { 4, 8, 16, 32 }; | 81 | unsigned int divs[] = { 4, 8, 16, 32 }; |
82 | int divs_size = sizeof(divs) / sizeof(*divs); | 82 | int divs_size = ARRAY_SIZE(divs); |
83 | int i = 0; | 83 | int i = 0; |
84 | unsigned long count_hz; | 84 | unsigned long count_hz; |
85 | unsigned long shift; | 85 | unsigned long shift; |
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index f52c627bdadd..f4b582cbb567 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig | |||
@@ -451,6 +451,12 @@ config MOD5272 | |||
451 | help | 451 | help |
452 | Support for the Netburner MOD-5272 board. | 452 | Support for the Netburner MOD-5272 board. |
453 | 453 | ||
454 | config SAVANTrosie1 | ||
455 | bool "Savant Rosie1 board support" | ||
456 | depends on M523x | ||
457 | help | ||
458 | Support for the Savant Rosie1 board. | ||
459 | |||
454 | config ROMFS_FROM_ROM | 460 | config ROMFS_FROM_ROM |
455 | bool "ROMFS image not RAM resident" | 461 | bool "ROMFS image not RAM resident" |
456 | depends on (NETtel || SNAPGEAR) | 462 | depends on (NETtel || SNAPGEAR) |
@@ -492,7 +498,12 @@ config SNEHA | |||
492 | bool | 498 | bool |
493 | default y | 499 | default y |
494 | depends on CPU16B | 500 | depends on CPU16B |
495 | 501 | ||
502 | config SAVANT | ||
503 | bool | ||
504 | default y | ||
505 | depends on SAVANTrosie1 | ||
506 | |||
496 | config AVNET | 507 | config AVNET |
497 | bool | 508 | bool |
498 | default y | 509 | default y |
diff --git a/arch/m68knommu/Makefile b/arch/m68knommu/Makefile index 92227aaaa26e..30aa2553693d 100644 --- a/arch/m68knommu/Makefile +++ b/arch/m68knommu/Makefile | |||
@@ -48,6 +48,7 @@ board-$(CONFIG_SNEHA) := SNEHA | |||
48 | board-$(CONFIG_M5208EVB) := M5208EVB | 48 | board-$(CONFIG_M5208EVB) := M5208EVB |
49 | board-$(CONFIG_MOD5272) := MOD5272 | 49 | board-$(CONFIG_MOD5272) := MOD5272 |
50 | board-$(CONFIG_AVNET) := AVNET | 50 | board-$(CONFIG_AVNET) := AVNET |
51 | board-$(CONFIG_SAVANT) := SAVANT | ||
51 | BOARD := $(board-y) | 52 | BOARD := $(board-y) |
52 | 53 | ||
53 | model-$(CONFIG_RAMKERNEL) := ram | 54 | model-$(CONFIG_RAMKERNEL) := ram |
@@ -117,4 +118,4 @@ core-y += arch/m68knommu/kernel/ \ | |||
117 | libs-y += arch/m68knommu/lib/ | 118 | libs-y += arch/m68knommu/lib/ |
118 | 119 | ||
119 | archclean: | 120 | archclean: |
120 | $(Q)$(MAKE) $(clean)=arch/m68knommu/boot | 121 | |
diff --git a/arch/m68knommu/defconfig b/arch/m68knommu/defconfig index 3891de09ac23..5a0ecaaee3b0 100644 --- a/arch/m68knommu/defconfig +++ b/arch/m68knommu/defconfig | |||
@@ -1,41 +1,48 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.17 | 3 | # Linux kernel version: 2.6.23 |
4 | # Tue Jun 27 12:57:06 2006 | 4 | # Thu Oct 18 13:17:38 2007 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | # CONFIG_MMU is not set | 7 | # CONFIG_MMU is not set |
8 | # CONFIG_FPU is not set | 8 | # CONFIG_FPU is not set |
9 | CONFIG_ZONE_DMA=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 10 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 11 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
12 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
13 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 14 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
12 | CONFIG_GENERIC_HWEIGHT=y | 15 | CONFIG_GENERIC_HWEIGHT=y |
16 | CONFIG_GENERIC_HARDIRQS=y | ||
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_TIME_LOW_RES=y | 18 | CONFIG_TIME_LOW_RES=y |
19 | CONFIG_NO_IOPORT=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
15 | 21 | ||
16 | # | 22 | # |
17 | # Code maturity level options | 23 | # General setup |
18 | # | 24 | # |
19 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
20 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
21 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
22 | |||
23 | # | ||
24 | # General setup | ||
25 | # | ||
26 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
27 | CONFIG_LOCALVERSION_AUTO=y | 29 | CONFIG_LOCALVERSION_AUTO=y |
28 | # CONFIG_SYSVIPC is not set | 30 | # CONFIG_SYSVIPC is not set |
29 | # CONFIG_POSIX_MQUEUE is not set | 31 | # CONFIG_POSIX_MQUEUE is not set |
30 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
31 | # CONFIG_SYSCTL is not set | 33 | # CONFIG_TASKSTATS is not set |
34 | # CONFIG_USER_NS is not set | ||
32 | # CONFIG_AUDIT is not set | 35 | # CONFIG_AUDIT is not set |
33 | # CONFIG_IKCONFIG is not set | 36 | # CONFIG_IKCONFIG is not set |
37 | CONFIG_LOG_BUF_SHIFT=14 | ||
38 | # CONFIG_SYSFS_DEPRECATED is not set | ||
34 | # CONFIG_RELAY is not set | 39 | # CONFIG_RELAY is not set |
35 | CONFIG_INITRAMFS_SOURCE="" | 40 | # CONFIG_BLK_DEV_INITRD is not set |
36 | CONFIG_UID16=y | ||
37 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 41 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
42 | CONFIG_SYSCTL=y | ||
38 | CONFIG_EMBEDDED=y | 43 | CONFIG_EMBEDDED=y |
44 | CONFIG_UID16=y | ||
45 | CONFIG_SYSCTL_SYSCALL=y | ||
39 | # CONFIG_KALLSYMS is not set | 46 | # CONFIG_KALLSYMS is not set |
40 | # CONFIG_HOTPLUG is not set | 47 | # CONFIG_HOTPLUG is not set |
41 | CONFIG_PRINTK=y | 48 | CONFIG_PRINTK=y |
@@ -44,20 +51,25 @@ CONFIG_ELF_CORE=y | |||
44 | CONFIG_BASE_FULL=y | 51 | CONFIG_BASE_FULL=y |
45 | # CONFIG_FUTEX is not set | 52 | # CONFIG_FUTEX is not set |
46 | # CONFIG_EPOLL is not set | 53 | # CONFIG_EPOLL is not set |
54 | # CONFIG_SIGNALFD is not set | ||
55 | # CONFIG_EVENTFD is not set | ||
56 | # CONFIG_VM_EVENT_COUNTERS is not set | ||
47 | CONFIG_SLAB=y | 57 | CONFIG_SLAB=y |
58 | # CONFIG_SLUB is not set | ||
59 | # CONFIG_SLOB is not set | ||
48 | CONFIG_TINY_SHMEM=y | 60 | CONFIG_TINY_SHMEM=y |
49 | CONFIG_BASE_SMALL=0 | 61 | CONFIG_BASE_SMALL=0 |
50 | # CONFIG_SLOB is not set | 62 | CONFIG_MODULES=y |
51 | 63 | CONFIG_MODULE_UNLOAD=y | |
52 | # | 64 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
53 | # Loadable module support | 65 | # CONFIG_MODVERSIONS is not set |
54 | # | 66 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
55 | # CONFIG_MODULES is not set | 67 | # CONFIG_KMOD is not set |
56 | 68 | CONFIG_BLOCK=y | |
57 | # | 69 | # CONFIG_LBD is not set |
58 | # Block layer | ||
59 | # | ||
60 | # CONFIG_BLK_DEV_IO_TRACE is not set | 70 | # CONFIG_BLK_DEV_IO_TRACE is not set |
71 | # CONFIG_LSF is not set | ||
72 | # CONFIG_BLK_DEV_BSG is not set | ||
61 | 73 | ||
62 | # | 74 | # |
63 | # IO Schedulers | 75 | # IO Schedulers |
@@ -99,6 +111,7 @@ CONFIG_CLOCK_DIV=1 | |||
99 | # | 111 | # |
100 | # Platform | 112 | # Platform |
101 | # | 113 | # |
114 | # CONFIG_UC5272 is not set | ||
102 | CONFIG_M5272C3=y | 115 | CONFIG_M5272C3=y |
103 | # CONFIG_COBRA5272 is not set | 116 | # CONFIG_COBRA5272 is not set |
104 | # CONFIG_CANCam is not set | 117 | # CONFIG_CANCam is not set |
@@ -107,7 +120,6 @@ CONFIG_M5272C3=y | |||
107 | # CONFIG_CPU16B is not set | 120 | # CONFIG_CPU16B is not set |
108 | # CONFIG_MOD5272 is not set | 121 | # CONFIG_MOD5272 is not set |
109 | CONFIG_FREESCALE=y | 122 | CONFIG_FREESCALE=y |
110 | # CONFIG_LARGE_ALLOCS is not set | ||
111 | CONFIG_4KSTACKS=y | 123 | CONFIG_4KSTACKS=y |
112 | 124 | ||
113 | # | 125 | # |
@@ -121,6 +133,11 @@ CONFIG_RAMAUTOBIT=y | |||
121 | # CONFIG_RAM8BIT is not set | 133 | # CONFIG_RAM8BIT is not set |
122 | # CONFIG_RAM16BIT is not set | 134 | # CONFIG_RAM16BIT is not set |
123 | # CONFIG_RAM32BIT is not set | 135 | # CONFIG_RAM32BIT is not set |
136 | |||
137 | # | ||
138 | # ROM configuration | ||
139 | # | ||
140 | # CONFIG_ROM is not set | ||
124 | CONFIG_RAMKERNEL=y | 141 | CONFIG_RAMKERNEL=y |
125 | # CONFIG_ROMKERNEL is not set | 142 | # CONFIG_ROMKERNEL is not set |
126 | CONFIG_SELECT_MEMORY_MODEL=y | 143 | CONFIG_SELECT_MEMORY_MODEL=y |
@@ -131,20 +148,19 @@ CONFIG_FLATMEM=y | |||
131 | CONFIG_FLAT_NODE_MEM_MAP=y | 148 | CONFIG_FLAT_NODE_MEM_MAP=y |
132 | # CONFIG_SPARSEMEM_STATIC is not set | 149 | # CONFIG_SPARSEMEM_STATIC is not set |
133 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 150 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
151 | # CONFIG_RESOURCES_64BIT is not set | ||
152 | CONFIG_ZONE_DMA_FLAG=1 | ||
153 | CONFIG_VIRT_TO_BUS=y | ||
134 | 154 | ||
135 | # | 155 | # |
136 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 156 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
137 | # | 157 | # |
138 | # CONFIG_PCI is not set | 158 | # CONFIG_PCI is not set |
159 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
139 | 160 | ||
140 | # | 161 | # |
141 | # PCCARD (PCMCIA/CardBus) support | 162 | # PCCARD (PCMCIA/CardBus) support |
142 | # | 163 | # |
143 | # CONFIG_PCCARD is not set | ||
144 | |||
145 | # | ||
146 | # PCI Hotplug Support | ||
147 | # | ||
148 | 164 | ||
149 | # | 165 | # |
150 | # Executable file formats | 166 | # Executable file formats |
@@ -168,7 +184,6 @@ CONFIG_NET=y | |||
168 | # | 184 | # |
169 | # Networking options | 185 | # Networking options |
170 | # | 186 | # |
171 | # CONFIG_NETDEBUG is not set | ||
172 | CONFIG_PACKET=y | 187 | CONFIG_PACKET=y |
173 | # CONFIG_PACKET_MMAP is not set | 188 | # CONFIG_PACKET_MMAP is not set |
174 | CONFIG_UNIX=y | 189 | CONFIG_UNIX=y |
@@ -187,27 +202,21 @@ CONFIG_IP_FIB_HASH=y | |||
187 | # CONFIG_INET_IPCOMP is not set | 202 | # CONFIG_INET_IPCOMP is not set |
188 | # CONFIG_INET_XFRM_TUNNEL is not set | 203 | # CONFIG_INET_XFRM_TUNNEL is not set |
189 | # CONFIG_INET_TUNNEL is not set | 204 | # CONFIG_INET_TUNNEL is not set |
205 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
206 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
207 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
190 | # CONFIG_INET_DIAG is not set | 208 | # CONFIG_INET_DIAG is not set |
191 | # CONFIG_TCP_CONG_ADVANCED is not set | 209 | # CONFIG_TCP_CONG_ADVANCED is not set |
192 | CONFIG_TCP_CONG_BIC=y | 210 | CONFIG_TCP_CONG_CUBIC=y |
211 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
212 | # CONFIG_TCP_MD5SIG is not set | ||
193 | # CONFIG_IPV6 is not set | 213 | # CONFIG_IPV6 is not set |
194 | # CONFIG_INET6_XFRM_TUNNEL is not set | 214 | # CONFIG_INET6_XFRM_TUNNEL is not set |
195 | # CONFIG_INET6_TUNNEL is not set | 215 | # CONFIG_INET6_TUNNEL is not set |
216 | # CONFIG_NETWORK_SECMARK is not set | ||
196 | # CONFIG_NETFILTER is not set | 217 | # CONFIG_NETFILTER is not set |
197 | |||
198 | # | ||
199 | # DCCP Configuration (EXPERIMENTAL) | ||
200 | # | ||
201 | # CONFIG_IP_DCCP is not set | 218 | # CONFIG_IP_DCCP is not set |
202 | |||
203 | # | ||
204 | # SCTP Configuration (EXPERIMENTAL) | ||
205 | # | ||
206 | # CONFIG_IP_SCTP is not set | 219 | # CONFIG_IP_SCTP is not set |
207 | |||
208 | # | ||
209 | # TIPC Configuration (EXPERIMENTAL) | ||
210 | # | ||
211 | # CONFIG_TIPC is not set | 220 | # CONFIG_TIPC is not set |
212 | # CONFIG_ATM is not set | 221 | # CONFIG_ATM is not set |
213 | # CONFIG_BRIDGE is not set | 222 | # CONFIG_BRIDGE is not set |
@@ -218,7 +227,6 @@ CONFIG_TCP_CONG_BIC=y | |||
218 | # CONFIG_ATALK is not set | 227 | # CONFIG_ATALK is not set |
219 | # CONFIG_X25 is not set | 228 | # CONFIG_X25 is not set |
220 | # CONFIG_LAPB is not set | 229 | # CONFIG_LAPB is not set |
221 | # CONFIG_NET_DIVERT is not set | ||
222 | # CONFIG_ECONET is not set | 230 | # CONFIG_ECONET is not set |
223 | # CONFIG_WAN_ROUTER is not set | 231 | # CONFIG_WAN_ROUTER is not set |
224 | 232 | ||
@@ -234,7 +242,17 @@ CONFIG_TCP_CONG_BIC=y | |||
234 | # CONFIG_HAMRADIO is not set | 242 | # CONFIG_HAMRADIO is not set |
235 | # CONFIG_IRDA is not set | 243 | # CONFIG_IRDA is not set |
236 | # CONFIG_BT is not set | 244 | # CONFIG_BT is not set |
245 | # CONFIG_AF_RXRPC is not set | ||
246 | |||
247 | # | ||
248 | # Wireless | ||
249 | # | ||
250 | # CONFIG_CFG80211 is not set | ||
251 | # CONFIG_WIRELESS_EXT is not set | ||
252 | # CONFIG_MAC80211 is not set | ||
237 | # CONFIG_IEEE80211 is not set | 253 | # CONFIG_IEEE80211 is not set |
254 | # CONFIG_RFKILL is not set | ||
255 | # CONFIG_NET_9P is not set | ||
238 | 256 | ||
239 | # | 257 | # |
240 | # Device Drivers | 258 | # Device Drivers |
@@ -245,16 +263,8 @@ CONFIG_TCP_CONG_BIC=y | |||
245 | # | 263 | # |
246 | CONFIG_STANDALONE=y | 264 | CONFIG_STANDALONE=y |
247 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 265 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
248 | # CONFIG_FW_LOADER is not set | 266 | # CONFIG_SYS_HYPERVISOR is not set |
249 | |||
250 | # | ||
251 | # Connector - unified userspace <-> kernelspace linker | ||
252 | # | ||
253 | # CONFIG_CONNECTOR is not set | 267 | # CONFIG_CONNECTOR is not set |
254 | |||
255 | # | ||
256 | # Memory Technology Devices (MTD) | ||
257 | # | ||
258 | CONFIG_MTD=y | 268 | CONFIG_MTD=y |
259 | # CONFIG_MTD_DEBUG is not set | 269 | # CONFIG_MTD_DEBUG is not set |
260 | # CONFIG_MTD_CONCAT is not set | 270 | # CONFIG_MTD_CONCAT is not set |
@@ -266,11 +276,13 @@ CONFIG_MTD_PARTITIONS=y | |||
266 | # User Modules And Translation Layers | 276 | # User Modules And Translation Layers |
267 | # | 277 | # |
268 | CONFIG_MTD_CHAR=y | 278 | CONFIG_MTD_CHAR=y |
279 | CONFIG_MTD_BLKDEVS=y | ||
269 | CONFIG_MTD_BLOCK=y | 280 | CONFIG_MTD_BLOCK=y |
270 | # CONFIG_FTL is not set | 281 | # CONFIG_FTL is not set |
271 | # CONFIG_NFTL is not set | 282 | # CONFIG_NFTL is not set |
272 | # CONFIG_INFTL is not set | 283 | # CONFIG_INFTL is not set |
273 | # CONFIG_RFD_FTL is not set | 284 | # CONFIG_RFD_FTL is not set |
285 | # CONFIG_SSFDC is not set | ||
274 | 286 | ||
275 | # | 287 | # |
276 | # RAM/ROM/Flash chip drivers | 288 | # RAM/ROM/Flash chip drivers |
@@ -290,7 +302,6 @@ CONFIG_MTD_CFI_I2=y | |||
290 | CONFIG_MTD_RAM=y | 302 | CONFIG_MTD_RAM=y |
291 | # CONFIG_MTD_ROM is not set | 303 | # CONFIG_MTD_ROM is not set |
292 | # CONFIG_MTD_ABSENT is not set | 304 | # CONFIG_MTD_ABSENT is not set |
293 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
294 | 305 | ||
295 | # | 306 | # |
296 | # Mapping drivers for chip access | 307 | # Mapping drivers for chip access |
@@ -313,42 +324,25 @@ CONFIG_MTD_UCLINUX=y | |||
313 | # CONFIG_MTD_DOC2000 is not set | 324 | # CONFIG_MTD_DOC2000 is not set |
314 | # CONFIG_MTD_DOC2001 is not set | 325 | # CONFIG_MTD_DOC2001 is not set |
315 | # CONFIG_MTD_DOC2001PLUS is not set | 326 | # CONFIG_MTD_DOC2001PLUS is not set |
316 | |||
317 | # | ||
318 | # NAND Flash Device Drivers | ||
319 | # | ||
320 | # CONFIG_MTD_NAND is not set | 327 | # CONFIG_MTD_NAND is not set |
321 | |||
322 | # | ||
323 | # OneNAND Flash Device Drivers | ||
324 | # | ||
325 | # CONFIG_MTD_ONENAND is not set | 328 | # CONFIG_MTD_ONENAND is not set |
326 | 329 | ||
327 | # | 330 | # |
328 | # Parallel port support | 331 | # UBI - Unsorted block images |
329 | # | 332 | # |
333 | # CONFIG_MTD_UBI is not set | ||
330 | # CONFIG_PARPORT is not set | 334 | # CONFIG_PARPORT is not set |
331 | 335 | CONFIG_BLK_DEV=y | |
332 | # | ||
333 | # Plug and Play support | ||
334 | # | ||
335 | |||
336 | # | ||
337 | # Block devices | ||
338 | # | ||
339 | # CONFIG_BLK_DEV_COW_COMMON is not set | 336 | # CONFIG_BLK_DEV_COW_COMMON is not set |
340 | # CONFIG_BLK_DEV_LOOP is not set | 337 | # CONFIG_BLK_DEV_LOOP is not set |
341 | # CONFIG_BLK_DEV_NBD is not set | 338 | # CONFIG_BLK_DEV_NBD is not set |
342 | CONFIG_BLK_DEV_RAM=y | 339 | CONFIG_BLK_DEV_RAM=y |
343 | CONFIG_BLK_DEV_RAM_COUNT=16 | 340 | CONFIG_BLK_DEV_RAM_COUNT=16 |
344 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 341 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
345 | # CONFIG_BLK_DEV_INITRD is not set | 342 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
346 | # CONFIG_CDROM_PKTCDVD is not set | 343 | # CONFIG_CDROM_PKTCDVD is not set |
347 | # CONFIG_ATA_OVER_ETH is not set | 344 | # CONFIG_ATA_OVER_ETH is not set |
348 | 345 | # CONFIG_MISC_DEVICES is not set | |
349 | # | ||
350 | # ATA/ATAPI/MFM/RLL support | ||
351 | # | ||
352 | # CONFIG_IDE is not set | 346 | # CONFIG_IDE is not set |
353 | 347 | ||
354 | # | 348 | # |
@@ -356,67 +350,29 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
356 | # | 350 | # |
357 | # CONFIG_RAID_ATTRS is not set | 351 | # CONFIG_RAID_ATTRS is not set |
358 | # CONFIG_SCSI is not set | 352 | # CONFIG_SCSI is not set |
359 | 353 | # CONFIG_SCSI_DMA is not set | |
360 | # | 354 | # CONFIG_SCSI_NETLINK is not set |
361 | # Multi-device support (RAID and LVM) | ||
362 | # | ||
363 | # CONFIG_MD is not set | 355 | # CONFIG_MD is not set |
364 | |||
365 | # | ||
366 | # Fusion MPT device support | ||
367 | # | ||
368 | # CONFIG_FUSION is not set | ||
369 | |||
370 | # | ||
371 | # IEEE 1394 (FireWire) support | ||
372 | # | ||
373 | |||
374 | # | ||
375 | # I2O device support | ||
376 | # | ||
377 | |||
378 | # | ||
379 | # Network device support | ||
380 | # | ||
381 | CONFIG_NETDEVICES=y | 356 | CONFIG_NETDEVICES=y |
357 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
382 | # CONFIG_DUMMY is not set | 358 | # CONFIG_DUMMY is not set |
383 | # CONFIG_BONDING is not set | 359 | # CONFIG_BONDING is not set |
360 | # CONFIG_MACVLAN is not set | ||
384 | # CONFIG_EQUALIZER is not set | 361 | # CONFIG_EQUALIZER is not set |
385 | # CONFIG_TUN is not set | 362 | # CONFIG_TUN is not set |
386 | |||
387 | # | ||
388 | # PHY device support | ||
389 | # | ||
390 | # CONFIG_PHYLIB is not set | 363 | # CONFIG_PHYLIB is not set |
391 | |||
392 | # | ||
393 | # Ethernet (10 or 100Mbit) | ||
394 | # | ||
395 | CONFIG_NET_ETHERNET=y | 364 | CONFIG_NET_ETHERNET=y |
396 | # CONFIG_MII is not set | 365 | # CONFIG_MII is not set |
397 | CONFIG_FEC=y | 366 | CONFIG_FEC=y |
398 | # CONFIG_FEC2 is not set | 367 | # CONFIG_FEC2 is not set |
368 | # CONFIG_NETDEV_1000 is not set | ||
369 | # CONFIG_NETDEV_10000 is not set | ||
399 | 370 | ||
400 | # | 371 | # |
401 | # Ethernet (1000 Mbit) | 372 | # Wireless LAN |
402 | # | ||
403 | |||
404 | # | ||
405 | # Ethernet (10000 Mbit) | ||
406 | # | ||
407 | |||
408 | # | ||
409 | # Token Ring devices | ||
410 | # | ||
411 | |||
412 | # | ||
413 | # Wireless LAN (non-hamradio) | ||
414 | # | ||
415 | # CONFIG_NET_RADIO is not set | ||
416 | |||
417 | # | ||
418 | # Wan interfaces | ||
419 | # | 373 | # |
374 | # CONFIG_WLAN_PRE80211 is not set | ||
375 | # CONFIG_WLAN_80211 is not set | ||
420 | # CONFIG_WAN is not set | 376 | # CONFIG_WAN is not set |
421 | CONFIG_PPP=y | 377 | CONFIG_PPP=y |
422 | # CONFIG_PPP_MULTILINK is not set | 378 | # CONFIG_PPP_MULTILINK is not set |
@@ -427,20 +383,14 @@ CONFIG_PPP=y | |||
427 | # CONFIG_PPP_BSDCOMP is not set | 383 | # CONFIG_PPP_BSDCOMP is not set |
428 | # CONFIG_PPP_MPPE is not set | 384 | # CONFIG_PPP_MPPE is not set |
429 | # CONFIG_PPPOE is not set | 385 | # CONFIG_PPPOE is not set |
386 | # CONFIG_PPPOL2TP is not set | ||
430 | # CONFIG_SLIP is not set | 387 | # CONFIG_SLIP is not set |
388 | CONFIG_SLHC=y | ||
431 | # CONFIG_SHAPER is not set | 389 | # CONFIG_SHAPER is not set |
432 | # CONFIG_NETCONSOLE is not set | 390 | # CONFIG_NETCONSOLE is not set |
433 | # CONFIG_NETPOLL is not set | 391 | # CONFIG_NETPOLL is not set |
434 | # CONFIG_NET_POLL_CONTROLLER is not set | 392 | # CONFIG_NET_POLL_CONTROLLER is not set |
435 | |||
436 | # | ||
437 | # ISDN subsystem | ||
438 | # | ||
439 | # CONFIG_ISDN is not set | 393 | # CONFIG_ISDN is not set |
440 | |||
441 | # | ||
442 | # Telephony Support | ||
443 | # | ||
444 | # CONFIG_PHONE is not set | 394 | # CONFIG_PHONE is not set |
445 | 395 | ||
446 | # | 396 | # |
@@ -472,34 +422,13 @@ CONFIG_SERIAL_COLDFIRE=y | |||
472 | # CONFIG_UNIX98_PTYS is not set | 422 | # CONFIG_UNIX98_PTYS is not set |
473 | CONFIG_LEGACY_PTYS=y | 423 | CONFIG_LEGACY_PTYS=y |
474 | CONFIG_LEGACY_PTY_COUNT=256 | 424 | CONFIG_LEGACY_PTY_COUNT=256 |
475 | |||
476 | # | ||
477 | # IPMI | ||
478 | # | ||
479 | # CONFIG_IPMI_HANDLER is not set | 425 | # CONFIG_IPMI_HANDLER is not set |
480 | |||
481 | # | ||
482 | # Watchdog Cards | ||
483 | # | ||
484 | # CONFIG_WATCHDOG is not set | 426 | # CONFIG_WATCHDOG is not set |
427 | # CONFIG_HW_RANDOM is not set | ||
485 | # CONFIG_GEN_RTC is not set | 428 | # CONFIG_GEN_RTC is not set |
486 | # CONFIG_DTLK is not set | ||
487 | # CONFIG_R3964 is not set | 429 | # CONFIG_R3964 is not set |
488 | |||
489 | # | ||
490 | # Ftape, the floppy tape device driver | ||
491 | # | ||
492 | # CONFIG_RAW_DRIVER is not set | 430 | # CONFIG_RAW_DRIVER is not set |
493 | |||
494 | # | ||
495 | # TPM devices | ||
496 | # | ||
497 | # CONFIG_TCG_TPM is not set | 431 | # CONFIG_TCG_TPM is not set |
498 | # CONFIG_TELCLOCK is not set | ||
499 | |||
500 | # | ||
501 | # I2C support | ||
502 | # | ||
503 | # CONFIG_I2C is not set | 432 | # CONFIG_I2C is not set |
504 | 433 | ||
505 | # | 434 | # |
@@ -507,101 +436,74 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
507 | # | 436 | # |
508 | # CONFIG_SPI is not set | 437 | # CONFIG_SPI is not set |
509 | # CONFIG_SPI_MASTER is not set | 438 | # CONFIG_SPI_MASTER is not set |
510 | |||
511 | # | ||
512 | # Dallas's 1-wire bus | ||
513 | # | ||
514 | # CONFIG_W1 is not set | 439 | # CONFIG_W1 is not set |
515 | 440 | # CONFIG_POWER_SUPPLY is not set | |
516 | # | ||
517 | # Hardware Monitoring support | ||
518 | # | ||
519 | # CONFIG_HWMON is not set | 441 | # CONFIG_HWMON is not set |
520 | # CONFIG_HWMON_VID is not set | ||
521 | 442 | ||
522 | # | 443 | # |
523 | # Misc devices | 444 | # Multifunction device drivers |
524 | # | 445 | # |
446 | # CONFIG_MFD_SM501 is not set | ||
525 | 447 | ||
526 | # | 448 | # |
527 | # Multimedia devices | 449 | # Multimedia devices |
528 | # | 450 | # |
529 | # CONFIG_VIDEO_DEV is not set | 451 | # CONFIG_VIDEO_DEV is not set |
530 | CONFIG_VIDEO_V4L2=y | 452 | # CONFIG_DVB_CORE is not set |
453 | CONFIG_DAB=y | ||
531 | 454 | ||
532 | # | 455 | # |
533 | # Digital Video Broadcasting Devices | 456 | # Graphics support |
534 | # | 457 | # |
535 | # CONFIG_DVB is not set | 458 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
536 | 459 | ||
537 | # | 460 | # |
538 | # Graphics support | 461 | # Display device support |
539 | # | 462 | # |
463 | # CONFIG_DISPLAY_SUPPORT is not set | ||
464 | # CONFIG_VGASTATE is not set | ||
465 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
540 | # CONFIG_FB is not set | 466 | # CONFIG_FB is not set |
541 | 467 | ||
542 | # | 468 | # |
543 | # Sound | 469 | # Sound |
544 | # | 470 | # |
545 | # CONFIG_SOUND is not set | 471 | # CONFIG_SOUND is not set |
546 | 472 | # CONFIG_USB_SUPPORT is not set | |
547 | # | ||
548 | # USB support | ||
549 | # | ||
550 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
551 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
552 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
553 | |||
554 | # | ||
555 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
556 | # | ||
557 | |||
558 | # | ||
559 | # USB Gadget Support | ||
560 | # | ||
561 | # CONFIG_USB_GADGET is not set | ||
562 | |||
563 | # | ||
564 | # MMC/SD Card support | ||
565 | # | ||
566 | # CONFIG_MMC is not set | 473 | # CONFIG_MMC is not set |
567 | |||
568 | # | ||
569 | # LED devices | ||
570 | # | ||
571 | # CONFIG_NEW_LEDS is not set | 474 | # CONFIG_NEW_LEDS is not set |
475 | # CONFIG_RTC_CLASS is not set | ||
572 | 476 | ||
573 | # | 477 | # |
574 | # LED drivers | 478 | # DMA Engine support |
575 | # | 479 | # |
480 | # CONFIG_DMA_ENGINE is not set | ||
576 | 481 | ||
577 | # | 482 | # |
578 | # LED Triggers | 483 | # DMA Clients |
579 | # | 484 | # |
580 | 485 | ||
581 | # | 486 | # |
582 | # InfiniBand support | 487 | # DMA Devices |
583 | # | 488 | # |
584 | 489 | ||
585 | # | 490 | # |
586 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 491 | # Userspace I/O |
587 | # | 492 | # |
588 | 493 | # CONFIG_UIO is not set | |
589 | # | ||
590 | # Real Time Clock | ||
591 | # | ||
592 | # CONFIG_RTC_CLASS is not set | ||
593 | 494 | ||
594 | # | 495 | # |
595 | # File systems | 496 | # File systems |
596 | # | 497 | # |
597 | CONFIG_EXT2_FS=y | 498 | CONFIG_EXT2_FS=y |
598 | # CONFIG_EXT2_FS_XATTR is not set | 499 | # CONFIG_EXT2_FS_XATTR is not set |
599 | # CONFIG_EXT2_FS_XIP is not set | ||
600 | # CONFIG_EXT3_FS is not set | 500 | # CONFIG_EXT3_FS is not set |
501 | # CONFIG_EXT4DEV_FS is not set | ||
601 | # CONFIG_REISERFS_FS is not set | 502 | # CONFIG_REISERFS_FS is not set |
602 | # CONFIG_JFS_FS is not set | 503 | # CONFIG_JFS_FS is not set |
603 | # CONFIG_FS_POSIX_ACL is not set | 504 | # CONFIG_FS_POSIX_ACL is not set |
604 | # CONFIG_XFS_FS is not set | 505 | # CONFIG_XFS_FS is not set |
506 | # CONFIG_GFS2_FS is not set | ||
605 | # CONFIG_OCFS2_FS is not set | 507 | # CONFIG_OCFS2_FS is not set |
606 | # CONFIG_MINIX_FS is not set | 508 | # CONFIG_MINIX_FS is not set |
607 | CONFIG_ROMFS_FS=y | 509 | CONFIG_ROMFS_FS=y |
@@ -629,6 +531,7 @@ CONFIG_ROMFS_FS=y | |||
629 | # Pseudo filesystems | 531 | # Pseudo filesystems |
630 | # | 532 | # |
631 | CONFIG_PROC_FS=y | 533 | CONFIG_PROC_FS=y |
534 | CONFIG_PROC_SYSCTL=y | ||
632 | CONFIG_SYSFS=y | 535 | CONFIG_SYSFS=y |
633 | # CONFIG_TMPFS is not set | 536 | # CONFIG_TMPFS is not set |
634 | # CONFIG_HUGETLB_PAGE is not set | 537 | # CONFIG_HUGETLB_PAGE is not set |
@@ -645,7 +548,6 @@ CONFIG_RAMFS=y | |||
645 | # CONFIG_BEFS_FS is not set | 548 | # CONFIG_BEFS_FS is not set |
646 | # CONFIG_BFS_FS is not set | 549 | # CONFIG_BFS_FS is not set |
647 | # CONFIG_EFS_FS is not set | 550 | # CONFIG_EFS_FS is not set |
648 | # CONFIG_JFFS_FS is not set | ||
649 | # CONFIG_JFFS2_FS is not set | 551 | # CONFIG_JFFS2_FS is not set |
650 | # CONFIG_CRAMFS is not set | 552 | # CONFIG_CRAMFS is not set |
651 | # CONFIG_VXFS_FS is not set | 553 | # CONFIG_VXFS_FS is not set |
@@ -664,7 +566,6 @@ CONFIG_RAMFS=y | |||
664 | # CONFIG_NCP_FS is not set | 566 | # CONFIG_NCP_FS is not set |
665 | # CONFIG_CODA_FS is not set | 567 | # CONFIG_CODA_FS is not set |
666 | # CONFIG_AFS_FS is not set | 568 | # CONFIG_AFS_FS is not set |
667 | # CONFIG_9P_FS is not set | ||
668 | 569 | ||
669 | # | 570 | # |
670 | # Partition Types | 571 | # Partition Types |
@@ -678,15 +579,21 @@ CONFIG_MSDOS_PARTITION=y | |||
678 | # CONFIG_NLS is not set | 579 | # CONFIG_NLS is not set |
679 | 580 | ||
680 | # | 581 | # |
582 | # Distributed Lock Manager | ||
583 | # | ||
584 | # CONFIG_DLM is not set | ||
585 | |||
586 | # | ||
681 | # Kernel hacking | 587 | # Kernel hacking |
682 | # | 588 | # |
683 | # CONFIG_PRINTK_TIME is not set | 589 | # CONFIG_PRINTK_TIME is not set |
590 | # CONFIG_ENABLE_MUST_CHECK is not set | ||
684 | # CONFIG_MAGIC_SYSRQ is not set | 591 | # CONFIG_MAGIC_SYSRQ is not set |
592 | # CONFIG_UNUSED_SYMBOLS is not set | ||
593 | # CONFIG_DEBUG_FS is not set | ||
594 | # CONFIG_HEADERS_CHECK is not set | ||
685 | # CONFIG_DEBUG_KERNEL is not set | 595 | # CONFIG_DEBUG_KERNEL is not set |
686 | CONFIG_LOG_BUF_SHIFT=14 | ||
687 | # CONFIG_DEBUG_BUGVERBOSE is not set | 596 | # CONFIG_DEBUG_BUGVERBOSE is not set |
688 | # CONFIG_DEBUG_FS is not set | ||
689 | # CONFIG_UNWIND_INFO is not set | ||
690 | # CONFIG_FULLDEBUG is not set | 597 | # CONFIG_FULLDEBUG is not set |
691 | # CONFIG_HIGHPROFILE is not set | 598 | # CONFIG_HIGHPROFILE is not set |
692 | # CONFIG_BOOTPARAM is not set | 599 | # CONFIG_BOOTPARAM is not set |
@@ -699,20 +606,16 @@ CONFIG_LOG_BUF_SHIFT=14 | |||
699 | # | 606 | # |
700 | # CONFIG_KEYS is not set | 607 | # CONFIG_KEYS is not set |
701 | # CONFIG_SECURITY is not set | 608 | # CONFIG_SECURITY is not set |
702 | |||
703 | # | ||
704 | # Cryptographic options | ||
705 | # | ||
706 | # CONFIG_CRYPTO is not set | 609 | # CONFIG_CRYPTO is not set |
707 | 610 | ||
708 | # | 611 | # |
709 | # Hardware crypto devices | ||
710 | # | ||
711 | |||
712 | # | ||
713 | # Library routines | 612 | # Library routines |
714 | # | 613 | # |
715 | # CONFIG_CRC_CCITT is not set | 614 | # CONFIG_CRC_CCITT is not set |
716 | # CONFIG_CRC16 is not set | 615 | # CONFIG_CRC16 is not set |
616 | # CONFIG_CRC_ITU_T is not set | ||
717 | # CONFIG_CRC32 is not set | 617 | # CONFIG_CRC32 is not set |
618 | # CONFIG_CRC7 is not set | ||
718 | # CONFIG_LIBCRC32C is not set | 619 | # CONFIG_LIBCRC32C is not set |
620 | CONFIG_HAS_IOMEM=y | ||
621 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c index 3f86ade3a22a..74bf94948ec2 100644 --- a/arch/m68knommu/kernel/setup.c +++ b/arch/m68knommu/kernel/setup.c | |||
@@ -151,27 +151,15 @@ void setup_arch(char **cmdline_p) | |||
151 | #ifdef CONFIG_ELITE | 151 | #ifdef CONFIG_ELITE |
152 | printk(KERN_INFO "Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n"); | 152 | printk(KERN_INFO "Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n"); |
153 | #endif | 153 | #endif |
154 | #ifdef CONFIG_TELOS | ||
155 | printk(KERN_INFO "Modified for Omnia ToolVox by James D. Schettine, james@telos-systems.com\n"); | ||
156 | #endif | ||
157 | #endif | 154 | #endif |
158 | printk(KERN_INFO "Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n"); | 155 | printk(KERN_INFO "Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n"); |
159 | 156 | ||
160 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68328 ) | 157 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68328 ) |
161 | printk(KERN_INFO "TRG SuperPilot FLASH card support <info@trgnet.com>\n"); | 158 | printk(KERN_INFO "TRG SuperPilot FLASH card support <info@trgnet.com>\n"); |
162 | #endif | 159 | #endif |
163 | |||
164 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68EZ328 ) | 160 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68EZ328 ) |
165 | printk(KERN_INFO "PalmV support by Lineo Inc. <jeff@uclinux.com>\n"); | 161 | printk(KERN_INFO "PalmV support by Lineo Inc. <jeff@uclinux.com>\n"); |
166 | #endif | 162 | #endif |
167 | |||
168 | #ifdef CONFIG_M68EZ328ADS | ||
169 | printk(KERN_INFO "M68EZ328ADS board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n"); | ||
170 | #endif | ||
171 | |||
172 | #ifdef CONFIG_ALMA_ANS | ||
173 | printk(KERN_INFO "Alma Electronics board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n"); | ||
174 | #endif | ||
175 | #if defined (CONFIG_M68360) | 163 | #if defined (CONFIG_M68360) |
176 | printk(KERN_INFO "QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n"); | 164 | printk(KERN_INFO "QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n"); |
177 | printk(KERN_INFO "based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n"); | 165 | printk(KERN_INFO "based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n"); |
@@ -188,11 +176,9 @@ void setup_arch(char **cmdline_p) | |||
188 | "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext, | 176 | "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext, |
189 | (int) &_sdata, (int) &_edata, | 177 | (int) &_sdata, (int) &_edata, |
190 | (int) &_sbss, (int) &_ebss); | 178 | (int) &_sbss, (int) &_ebss); |
191 | printk(KERN_DEBUG "KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x " | 179 | printk(KERN_DEBUG "MEMORY -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x\n ", |
192 | "STACK=0x%06x-0x%06x\n", | ||
193 | (int) &_ebss, (int) memory_start, | 180 | (int) &_ebss, (int) memory_start, |
194 | (int) memory_start, (int) memory_end, | 181 | (int) memory_start, (int) memory_end); |
195 | (int) memory_end, (int) _ramend); | ||
196 | #endif | 182 | #endif |
197 | 183 | ||
198 | /* Keep a copy of command line */ | 184 | /* Keep a copy of command line */ |
@@ -287,12 +273,3 @@ struct seq_operations cpuinfo_op = { | |||
287 | .show = show_cpuinfo, | 273 | .show = show_cpuinfo, |
288 | }; | 274 | }; |
289 | 275 | ||
290 | void arch_gettod(int *year, int *mon, int *day, int *hour, | ||
291 | int *min, int *sec) | ||
292 | { | ||
293 | if (mach_gettod) | ||
294 | mach_gettod(year, mon, day, hour, min, sec); | ||
295 | else | ||
296 | *year = *mon = *day = *hour = *min = *sec = 0; | ||
297 | } | ||
298 | |||
diff --git a/arch/m68knommu/kernel/signal.c b/arch/m68knommu/kernel/signal.c index 437f8c6c14a0..70371378db86 100644 --- a/arch/m68knommu/kernel/signal.c +++ b/arch/m68knommu/kernel/signal.c | |||
@@ -781,15 +781,7 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs *regs) | |||
781 | /* Did we come from a system call? */ | 781 | /* Did we come from a system call? */ |
782 | if (regs->orig_d0 >= 0) { | 782 | if (regs->orig_d0 >= 0) { |
783 | /* Restart the system call - no handlers present */ | 783 | /* Restart the system call - no handlers present */ |
784 | if (regs->d0 == -ERESTARTNOHAND | 784 | handle_restart(regs, NULL, 0); |
785 | || regs->d0 == -ERESTARTSYS | ||
786 | || regs->d0 == -ERESTARTNOINTR) { | ||
787 | regs->d0 = regs->orig_d0; | ||
788 | regs->pc -= 2; | ||
789 | } else if (regs->d0 == -ERESTART_RESTARTBLOCK) { | ||
790 | regs->d0 = __NR_restart_syscall; | ||
791 | regs->pc -= 2; | ||
792 | } | ||
793 | } | 785 | } |
794 | return 0; | 786 | return 0; |
795 | } | 787 | } |
diff --git a/arch/m68knommu/kernel/time.c b/arch/m68knommu/kernel/time.c index 467053da2d08..77e5375a2dd5 100644 --- a/arch/m68knommu/kernel/time.c +++ b/arch/m68knommu/kernel/time.c | |||
@@ -27,7 +27,6 @@ | |||
27 | 27 | ||
28 | #define TICK_SIZE (tick_nsec / 1000) | 28 | #define TICK_SIZE (tick_nsec / 1000) |
29 | 29 | ||
30 | |||
31 | static inline int set_rtc_mmss(unsigned long nowtime) | 30 | static inline int set_rtc_mmss(unsigned long nowtime) |
32 | { | 31 | { |
33 | if (mach_set_clock_mmss) | 32 | if (mach_set_clock_mmss) |
@@ -39,15 +38,11 @@ static inline int set_rtc_mmss(unsigned long nowtime) | |||
39 | * timer_interrupt() needs to keep up the real-time clock, | 38 | * timer_interrupt() needs to keep up the real-time clock, |
40 | * as well as call the "do_timer()" routine every clocktick | 39 | * as well as call the "do_timer()" routine every clocktick |
41 | */ | 40 | */ |
42 | static irqreturn_t timer_interrupt(int irq, void *dummy) | 41 | irqreturn_t arch_timer_interrupt(int irq, void *dummy) |
43 | { | 42 | { |
44 | /* last time the cmos clock got updated */ | 43 | /* last time the cmos clock got updated */ |
45 | static long last_rtc_update=0; | 44 | static long last_rtc_update=0; |
46 | 45 | ||
47 | /* may need to kick the hardware timer */ | ||
48 | if (mach_tick) | ||
49 | mach_tick(); | ||
50 | |||
51 | write_seqlock(&xtime_lock); | 46 | write_seqlock(&xtime_lock); |
52 | 47 | ||
53 | do_timer(1); | 48 | do_timer(1); |
@@ -103,10 +98,10 @@ void time_init(void) | |||
103 | { | 98 | { |
104 | unsigned int year, mon, day, hour, min, sec; | 99 | unsigned int year, mon, day, hour, min, sec; |
105 | 100 | ||
106 | extern void arch_gettod(int *year, int *mon, int *day, int *hour, | 101 | if (mach_gettod) |
107 | int *min, int *sec); | 102 | mach_gettod(&year, &mon, &day, &hour, &min, &sec); |
108 | 103 | else | |
109 | arch_gettod(&year, &mon, &day, &hour, &min, &sec); | 104 | year = mon = day = hour = min = sec = 0; |
110 | 105 | ||
111 | if ((year += 1900) < 1970) | 106 | if ((year += 1900) < 1970) |
112 | year += 100; | 107 | year += 100; |
@@ -114,7 +109,7 @@ void time_init(void) | |||
114 | xtime.tv_nsec = 0; | 109 | xtime.tv_nsec = 0; |
115 | wall_to_monotonic.tv_sec = -xtime.tv_sec; | 110 | wall_to_monotonic.tv_sec = -xtime.tv_sec; |
116 | 111 | ||
117 | mach_sched_init(timer_interrupt); | 112 | hw_timer_init(); |
118 | } | 113 | } |
119 | 114 | ||
120 | /* | 115 | /* |
@@ -128,7 +123,7 @@ void do_gettimeofday(struct timeval *tv) | |||
128 | 123 | ||
129 | do { | 124 | do { |
130 | seq = read_seqbegin_irqsave(&xtime_lock, flags); | 125 | seq = read_seqbegin_irqsave(&xtime_lock, flags); |
131 | usec = mach_gettimeoffset ? mach_gettimeoffset() : 0; | 126 | usec = hw_timer_offset(); |
132 | sec = xtime.tv_sec; | 127 | sec = xtime.tv_sec; |
133 | usec += (xtime.tv_nsec / 1000); | 128 | usec += (xtime.tv_nsec / 1000); |
134 | } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); | 129 | } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); |
@@ -160,8 +155,7 @@ int do_settimeofday(struct timespec *tv) | |||
160 | * Discover what correction gettimeofday | 155 | * Discover what correction gettimeofday |
161 | * would have done, and then undo it! | 156 | * would have done, and then undo it! |
162 | */ | 157 | */ |
163 | if (mach_gettimeoffset) | 158 | nsec -= (hw_timer_offset() * 1000); |
164 | nsec -= (mach_gettimeoffset() * 1000); | ||
165 | 159 | ||
166 | wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); | 160 | wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); |
167 | wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); | 161 | wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); |
diff --git a/arch/m68knommu/platform/5206/config.c b/arch/m68knommu/platform/5206/config.c index d0f2dc5cb5a1..b3c4dd4cc135 100644 --- a/arch/m68knommu/platform/5206/config.c +++ b/arch/m68knommu/platform/5206/config.c | |||
@@ -10,13 +10,10 @@ | |||
10 | /***************************************************************************/ | 10 | /***************************************************************************/ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/sched.h> | ||
14 | #include <linux/param.h> | 13 | #include <linux/param.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
17 | #include <asm/irq.h> | ||
18 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
19 | #include <asm/traps.h> | ||
20 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
21 | #include <asm/coldfire.h> | 18 | #include <asm/coldfire.h> |
22 | #include <asm/mcftimer.h> | 19 | #include <asm/mcftimer.h> |
@@ -25,9 +22,6 @@ | |||
25 | 22 | ||
26 | /***************************************************************************/ | 23 | /***************************************************************************/ |
27 | 24 | ||
28 | void coldfire_tick(void); | ||
29 | void coldfire_timer_init(irq_handler_t handler); | ||
30 | unsigned long coldfire_timer_offset(void); | ||
31 | void coldfire_reset(void); | 25 | void coldfire_reset(void); |
32 | 26 | ||
33 | /***************************************************************************/ | 27 | /***************************************************************************/ |
@@ -97,9 +91,6 @@ int mcf_timerirqpending(int timer) | |||
97 | void config_BSP(char *commandp, int size) | 91 | void config_BSP(char *commandp, int size) |
98 | { | 92 | { |
99 | mcf_setimr(MCFSIM_IMR_MASKALL); | 93 | mcf_setimr(MCFSIM_IMR_MASKALL); |
100 | mach_sched_init = coldfire_timer_init; | ||
101 | mach_tick = coldfire_tick; | ||
102 | mach_gettimeoffset = coldfire_timer_offset; | ||
103 | mach_reset = coldfire_reset; | 94 | mach_reset = coldfire_reset; |
104 | } | 95 | } |
105 | 96 | ||
diff --git a/arch/m68knommu/platform/5206e/config.c b/arch/m68knommu/platform/5206e/config.c index 425703fb6cee..f84a4aea8cb6 100644 --- a/arch/m68knommu/platform/5206e/config.c +++ b/arch/m68knommu/platform/5206e/config.c | |||
@@ -9,23 +9,16 @@ | |||
9 | /***************************************************************************/ | 9 | /***************************************************************************/ |
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/sched.h> | ||
13 | #include <linux/param.h> | 12 | #include <linux/param.h> |
14 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
15 | #include <asm/irq.h> | ||
16 | #include <asm/dma.h> | 14 | #include <asm/dma.h> |
17 | #include <asm/traps.h> | ||
18 | #include <asm/machdep.h> | 15 | #include <asm/machdep.h> |
19 | #include <asm/coldfire.h> | 16 | #include <asm/coldfire.h> |
20 | #include <asm/mcftimer.h> | ||
21 | #include <asm/mcfsim.h> | 17 | #include <asm/mcfsim.h> |
22 | #include <asm/mcfdma.h> | 18 | #include <asm/mcfdma.h> |
23 | 19 | ||
24 | /***************************************************************************/ | 20 | /***************************************************************************/ |
25 | 21 | ||
26 | void coldfire_tick(void); | ||
27 | void coldfire_timer_init(irq_handler_t handler); | ||
28 | unsigned long coldfire_timer_offset(void); | ||
29 | void coldfire_reset(void); | 22 | void coldfire_reset(void); |
30 | 23 | ||
31 | /***************************************************************************/ | 24 | /***************************************************************************/ |
@@ -102,9 +95,6 @@ void config_BSP(char *commandp, int size) | |||
102 | commandp[size-1] = 0; | 95 | commandp[size-1] = 0; |
103 | #endif /* CONFIG_NETtel */ | 96 | #endif /* CONFIG_NETtel */ |
104 | 97 | ||
105 | mach_sched_init = coldfire_timer_init; | ||
106 | mach_tick = coldfire_tick; | ||
107 | mach_gettimeoffset = coldfire_timer_offset; | ||
108 | mach_reset = coldfire_reset; | 98 | mach_reset = coldfire_reset; |
109 | } | 99 | } |
110 | 100 | ||
diff --git a/arch/m68knommu/platform/520x/config.c b/arch/m68knommu/platform/520x/config.c index a2c95bebd004..6edbd41261cc 100644 --- a/arch/m68knommu/platform/520x/config.c +++ b/arch/m68knommu/platform/520x/config.c | |||
@@ -27,9 +27,6 @@ unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |||
27 | 27 | ||
28 | /***************************************************************************/ | 28 | /***************************************************************************/ |
29 | 29 | ||
30 | void coldfire_pit_tick(void); | ||
31 | void coldfire_pit_init(irq_handler_t handler); | ||
32 | unsigned long coldfire_pit_offset(void); | ||
33 | void coldfire_reset(void); | 30 | void coldfire_reset(void); |
34 | 31 | ||
35 | /***************************************************************************/ | 32 | /***************************************************************************/ |
@@ -47,10 +44,7 @@ void mcf_autovector(unsigned int vec) | |||
47 | 44 | ||
48 | void config_BSP(char *commandp, int size) | 45 | void config_BSP(char *commandp, int size) |
49 | { | 46 | { |
50 | mach_sched_init = coldfire_pit_init; | 47 | mach_reset = coldfire_reset; |
51 | mach_tick = coldfire_pit_tick; | ||
52 | mach_gettimeoffset = coldfire_pit_offset; | ||
53 | mach_reset = coldfire_reset; | ||
54 | } | 48 | } |
55 | 49 | ||
56 | /***************************************************************************/ | 50 | /***************************************************************************/ |
diff --git a/arch/m68knommu/platform/523x/config.c b/arch/m68knommu/platform/523x/config.c index 0a3af05a434b..e7f80c8e8636 100644 --- a/arch/m68knommu/platform/523x/config.c +++ b/arch/m68knommu/platform/523x/config.c | |||
@@ -13,12 +13,10 @@ | |||
13 | /***************************************************************************/ | 13 | /***************************************************************************/ |
14 | 14 | ||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/sched.h> | ||
17 | #include <linux/param.h> | 16 | #include <linux/param.h> |
18 | #include <linux/init.h> | 17 | #include <linux/init.h> |
19 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
20 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
21 | #include <asm/traps.h> | ||
22 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
23 | #include <asm/coldfire.h> | 21 | #include <asm/coldfire.h> |
24 | #include <asm/mcfsim.h> | 22 | #include <asm/mcfsim.h> |
@@ -26,9 +24,6 @@ | |||
26 | 24 | ||
27 | /***************************************************************************/ | 25 | /***************************************************************************/ |
28 | 26 | ||
29 | void coldfire_pit_tick(void); | ||
30 | void coldfire_pit_init(irq_handler_t handler); | ||
31 | unsigned long coldfire_pit_offset(void); | ||
32 | void coldfire_reset(void); | 27 | void coldfire_reset(void); |
33 | 28 | ||
34 | /***************************************************************************/ | 29 | /***************************************************************************/ |
@@ -62,9 +57,6 @@ void mcf_autovector(unsigned int vec) | |||
62 | void config_BSP(char *commandp, int size) | 57 | void config_BSP(char *commandp, int size) |
63 | { | 58 | { |
64 | mcf_disableall(); | 59 | mcf_disableall(); |
65 | mach_sched_init = coldfire_pit_init; | ||
66 | mach_tick = coldfire_pit_tick; | ||
67 | mach_gettimeoffset = coldfire_pit_offset; | ||
68 | mach_reset = coldfire_reset; | 60 | mach_reset = coldfire_reset; |
69 | } | 61 | } |
70 | 62 | ||
diff --git a/arch/m68knommu/platform/5249/config.c b/arch/m68knommu/platform/5249/config.c index dc2c362590c2..d4d39435cb15 100644 --- a/arch/m68knommu/platform/5249/config.c +++ b/arch/m68knommu/platform/5249/config.c | |||
@@ -9,24 +9,17 @@ | |||
9 | /***************************************************************************/ | 9 | /***************************************************************************/ |
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/sched.h> | ||
13 | #include <linux/param.h> | 12 | #include <linux/param.h> |
14 | #include <linux/init.h> | 13 | #include <linux/init.h> |
15 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
16 | #include <asm/irq.h> | ||
17 | #include <asm/dma.h> | 15 | #include <asm/dma.h> |
18 | #include <asm/traps.h> | ||
19 | #include <asm/machdep.h> | 16 | #include <asm/machdep.h> |
20 | #include <asm/coldfire.h> | 17 | #include <asm/coldfire.h> |
21 | #include <asm/mcftimer.h> | ||
22 | #include <asm/mcfsim.h> | 18 | #include <asm/mcfsim.h> |
23 | #include <asm/mcfdma.h> | 19 | #include <asm/mcfdma.h> |
24 | 20 | ||
25 | /***************************************************************************/ | 21 | /***************************************************************************/ |
26 | 22 | ||
27 | void coldfire_tick(void); | ||
28 | void coldfire_timer_init(irq_handler_t handler); | ||
29 | unsigned long coldfire_timer_offset(void); | ||
30 | void coldfire_reset(void); | 23 | void coldfire_reset(void); |
31 | 24 | ||
32 | /***************************************************************************/ | 25 | /***************************************************************************/ |
@@ -95,9 +88,6 @@ int mcf_timerirqpending(int timer) | |||
95 | void config_BSP(char *commandp, int size) | 88 | void config_BSP(char *commandp, int size) |
96 | { | 89 | { |
97 | mcf_setimr(MCFSIM_IMR_MASKALL); | 90 | mcf_setimr(MCFSIM_IMR_MASKALL); |
98 | mach_sched_init = coldfire_timer_init; | ||
99 | mach_tick = coldfire_tick; | ||
100 | mach_gettimeoffset = coldfire_timer_offset; | ||
101 | mach_reset = coldfire_reset; | 91 | mach_reset = coldfire_reset; |
102 | } | 92 | } |
103 | 93 | ||
diff --git a/arch/m68knommu/platform/5272/config.c b/arch/m68knommu/platform/5272/config.c index 1365a8300d5d..634a6375e4a5 100644 --- a/arch/m68knommu/platform/5272/config.c +++ b/arch/m68knommu/platform/5272/config.c | |||
@@ -10,24 +10,17 @@ | |||
10 | /***************************************************************************/ | 10 | /***************************************************************************/ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/sched.h> | ||
14 | #include <linux/param.h> | 13 | #include <linux/param.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
17 | #include <asm/irq.h> | ||
18 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
19 | #include <asm/traps.h> | ||
20 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
21 | #include <asm/coldfire.h> | 18 | #include <asm/coldfire.h> |
22 | #include <asm/mcftimer.h> | ||
23 | #include <asm/mcfsim.h> | 19 | #include <asm/mcfsim.h> |
24 | #include <asm/mcfdma.h> | 20 | #include <asm/mcfdma.h> |
25 | 21 | ||
26 | /***************************************************************************/ | 22 | /***************************************************************************/ |
27 | 23 | ||
28 | void coldfire_tick(void); | ||
29 | void coldfire_timer_init(irq_handler_t handler); | ||
30 | unsigned long coldfire_timer_offset(void); | ||
31 | void coldfire_reset(void); | 24 | void coldfire_reset(void); |
32 | 25 | ||
33 | extern unsigned int mcf_timervector; | 26 | extern unsigned int mcf_timervector; |
@@ -128,9 +121,6 @@ void config_BSP(char *commandp, int size) | |||
128 | 121 | ||
129 | mcf_timervector = 69; | 122 | mcf_timervector = 69; |
130 | mcf_profilevector = 70; | 123 | mcf_profilevector = 70; |
131 | mach_sched_init = coldfire_timer_init; | ||
132 | mach_tick = coldfire_tick; | ||
133 | mach_gettimeoffset = coldfire_timer_offset; | ||
134 | mach_reset = coldfire_reset; | 124 | mach_reset = coldfire_reset; |
135 | } | 125 | } |
136 | 126 | ||
diff --git a/arch/m68knommu/platform/527x/config.c b/arch/m68knommu/platform/527x/config.c index 1b820441419a..9cbfbc68ae4f 100644 --- a/arch/m68knommu/platform/527x/config.c +++ b/arch/m68knommu/platform/527x/config.c | |||
@@ -13,12 +13,10 @@ | |||
13 | /***************************************************************************/ | 13 | /***************************************************************************/ |
14 | 14 | ||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/sched.h> | ||
17 | #include <linux/param.h> | 16 | #include <linux/param.h> |
18 | #include <linux/init.h> | 17 | #include <linux/init.h> |
19 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
20 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
21 | #include <asm/traps.h> | ||
22 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
23 | #include <asm/coldfire.h> | 21 | #include <asm/coldfire.h> |
24 | #include <asm/mcfsim.h> | 22 | #include <asm/mcfsim.h> |
@@ -26,9 +24,6 @@ | |||
26 | 24 | ||
27 | /***************************************************************************/ | 25 | /***************************************************************************/ |
28 | 26 | ||
29 | void coldfire_pit_tick(void); | ||
30 | void coldfire_pit_init(irq_handler_t handler); | ||
31 | unsigned long coldfire_pit_offset(void); | ||
32 | void coldfire_reset(void); | 27 | void coldfire_reset(void); |
33 | 28 | ||
34 | /***************************************************************************/ | 29 | /***************************************************************************/ |
@@ -62,9 +57,6 @@ void mcf_autovector(unsigned int vec) | |||
62 | void config_BSP(char *commandp, int size) | 57 | void config_BSP(char *commandp, int size) |
63 | { | 58 | { |
64 | mcf_disableall(); | 59 | mcf_disableall(); |
65 | mach_sched_init = coldfire_pit_init; | ||
66 | mach_tick = coldfire_pit_tick; | ||
67 | mach_gettimeoffset = coldfire_pit_offset; | ||
68 | mach_reset = coldfire_reset; | 60 | mach_reset = coldfire_reset; |
69 | } | 61 | } |
70 | 62 | ||
diff --git a/arch/m68knommu/platform/528x/config.c b/arch/m68knommu/platform/528x/config.c index a089e9513699..acbd43486d97 100644 --- a/arch/m68knommu/platform/528x/config.c +++ b/arch/m68knommu/platform/528x/config.c | |||
@@ -13,12 +13,10 @@ | |||
13 | /***************************************************************************/ | 13 | /***************************************************************************/ |
14 | 14 | ||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/sched.h> | ||
17 | #include <linux/param.h> | 16 | #include <linux/param.h> |
18 | #include <linux/init.h> | 17 | #include <linux/init.h> |
19 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
20 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
21 | #include <asm/traps.h> | ||
22 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
23 | #include <asm/coldfire.h> | 21 | #include <asm/coldfire.h> |
24 | #include <asm/mcfsim.h> | 22 | #include <asm/mcfsim.h> |
@@ -26,9 +24,6 @@ | |||
26 | 24 | ||
27 | /***************************************************************************/ | 25 | /***************************************************************************/ |
28 | 26 | ||
29 | void coldfire_pit_tick(void); | ||
30 | void coldfire_pit_init(irq_handler_t handler); | ||
31 | unsigned long coldfire_pit_offset(void); | ||
32 | void coldfire_reset(void); | 27 | void coldfire_reset(void); |
33 | 28 | ||
34 | /***************************************************************************/ | 29 | /***************************************************************************/ |
@@ -62,9 +57,6 @@ void mcf_autovector(unsigned int vec) | |||
62 | void config_BSP(char *commandp, int size) | 57 | void config_BSP(char *commandp, int size) |
63 | { | 58 | { |
64 | mcf_disableall(); | 59 | mcf_disableall(); |
65 | mach_sched_init = coldfire_pit_init; | ||
66 | mach_tick = coldfire_pit_tick; | ||
67 | mach_gettimeoffset = coldfire_pit_offset; | ||
68 | mach_reset = coldfire_reset; | 60 | mach_reset = coldfire_reset; |
69 | } | 61 | } |
70 | 62 | ||
diff --git a/arch/m68knommu/platform/5307/config.c b/arch/m68knommu/platform/5307/config.c index e3461619fd65..6040821e637d 100644 --- a/arch/m68knommu/platform/5307/config.c +++ b/arch/m68knommu/platform/5307/config.c | |||
@@ -10,25 +10,18 @@ | |||
10 | /***************************************************************************/ | 10 | /***************************************************************************/ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/sched.h> | ||
14 | #include <linux/param.h> | 13 | #include <linux/param.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
17 | #include <asm/irq.h> | ||
18 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
19 | #include <asm/traps.h> | ||
20 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
21 | #include <asm/coldfire.h> | 18 | #include <asm/coldfire.h> |
22 | #include <asm/mcftimer.h> | ||
23 | #include <asm/mcfsim.h> | 19 | #include <asm/mcfsim.h> |
24 | #include <asm/mcfdma.h> | 20 | #include <asm/mcfdma.h> |
25 | #include <asm/mcfwdebug.h> | 21 | #include <asm/mcfwdebug.h> |
26 | 22 | ||
27 | /***************************************************************************/ | 23 | /***************************************************************************/ |
28 | 24 | ||
29 | void coldfire_tick(void); | ||
30 | void coldfire_timer_init(irq_handler_t handler); | ||
31 | unsigned long coldfire_timer_offset(void); | ||
32 | void coldfire_reset(void); | 25 | void coldfire_reset(void); |
33 | 26 | ||
34 | extern unsigned int mcf_timervector; | 27 | extern unsigned int mcf_timervector; |
@@ -122,9 +115,6 @@ void config_BSP(char *commandp, int size) | |||
122 | mcf_timerlevel = 6; | 115 | mcf_timerlevel = 6; |
123 | #endif | 116 | #endif |
124 | 117 | ||
125 | mach_sched_init = coldfire_timer_init; | ||
126 | mach_tick = coldfire_tick; | ||
127 | mach_gettimeoffset = coldfire_timer_offset; | ||
128 | mach_reset = coldfire_reset; | 118 | mach_reset = coldfire_reset; |
129 | 119 | ||
130 | #ifdef MCF_BDM_DISABLE | 120 | #ifdef MCF_BDM_DISABLE |
diff --git a/arch/m68knommu/platform/5307/entry.S b/arch/m68knommu/platform/5307/entry.S index a8cd867805ca..b333731b875a 100644 --- a/arch/m68knommu/platform/5307/entry.S +++ b/arch/m68knommu/platform/5307/entry.S | |||
@@ -74,7 +74,8 @@ ENTRY(system_call) | |||
74 | movel %sp,%d2 /* get thread_info pointer */ | 74 | movel %sp,%d2 /* get thread_info pointer */ |
75 | andl #-THREAD_SIZE,%d2 /* at start of kernel stack */ | 75 | andl #-THREAD_SIZE,%d2 /* at start of kernel stack */ |
76 | movel %d2,%a0 | 76 | movel %d2,%a0 |
77 | movel %sp,%a0@(THREAD_ESP0) /* save top of frame */ | 77 | movel %a0@,%a1 /* save top of frame */ |
78 | movel %sp,%a1@(TASK_THREAD+THREAD_ESP0) | ||
78 | btst #(TIF_SYSCALL_TRACE%8),%a0@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8) | 79 | btst #(TIF_SYSCALL_TRACE%8),%a0@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8) |
79 | bnes 1f | 80 | bnes 1f |
80 | 81 | ||
@@ -83,6 +84,8 @@ ENTRY(system_call) | |||
83 | movel %d0,%sp@(PT_D0) /* save the return value */ | 84 | movel %d0,%sp@(PT_D0) /* save the return value */ |
84 | jra ret_from_exception | 85 | jra ret_from_exception |
85 | 1: | 86 | 1: |
87 | movel #-ENOSYS,%d2 /* strace needs -ENOSYS in PT_D0 */ | ||
88 | movel %d2,PT_D0(%sp) /* on syscall entry */ | ||
86 | subql #4,%sp | 89 | subql #4,%sp |
87 | SAVE_SWITCH_STACK | 90 | SAVE_SWITCH_STACK |
88 | jbsr syscall_trace | 91 | jbsr syscall_trace |
diff --git a/arch/m68knommu/platform/5307/pit.c b/arch/m68knommu/platform/5307/pit.c index f18352fa35a6..173b754d1cda 100644 --- a/arch/m68knommu/platform/5307/pit.c +++ b/arch/m68knommu/platform/5307/pit.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
19 | #include <linux/irq.h> | 19 | #include <linux/irq.h> |
20 | #include <asm/machdep.h> | ||
20 | #include <asm/io.h> | 21 | #include <asm/io.h> |
21 | #include <asm/coldfire.h> | 22 | #include <asm/coldfire.h> |
22 | #include <asm/mcfpit.h> | 23 | #include <asm/mcfpit.h> |
@@ -31,28 +32,30 @@ | |||
31 | 32 | ||
32 | /***************************************************************************/ | 33 | /***************************************************************************/ |
33 | 34 | ||
34 | void coldfire_pit_tick(void) | 35 | static irqreturn_t hw_tick(int irq, void *dummy) |
35 | { | 36 | { |
36 | unsigned short pcsr; | 37 | unsigned short pcsr; |
37 | 38 | ||
38 | /* Reset the ColdFire timer */ | 39 | /* Reset the ColdFire timer */ |
39 | pcsr = __raw_readw(TA(MCFPIT_PCSR)); | 40 | pcsr = __raw_readw(TA(MCFPIT_PCSR)); |
40 | __raw_writew(pcsr | MCFPIT_PCSR_PIF, TA(MCFPIT_PCSR)); | 41 | __raw_writew(pcsr | MCFPIT_PCSR_PIF, TA(MCFPIT_PCSR)); |
42 | |||
43 | return arch_timer_interrupt(irq, dummy); | ||
41 | } | 44 | } |
42 | 45 | ||
43 | /***************************************************************************/ | 46 | /***************************************************************************/ |
44 | 47 | ||
45 | static struct irqaction coldfire_pit_irq = { | 48 | static struct irqaction coldfire_pit_irq = { |
46 | .name = "timer", | 49 | .name = "timer", |
47 | .flags = IRQF_DISABLED | IRQF_TIMER, | 50 | .flags = IRQF_DISABLED | IRQF_TIMER, |
51 | .handler = hw_tick, | ||
48 | }; | 52 | }; |
49 | 53 | ||
50 | void coldfire_pit_init(irq_handler_t handler) | 54 | void hw_timer_init(void) |
51 | { | 55 | { |
52 | volatile unsigned char *icrp; | 56 | volatile unsigned char *icrp; |
53 | volatile unsigned long *imrp; | 57 | volatile unsigned long *imrp; |
54 | 58 | ||
55 | coldfire_pit_irq.handler = handler; | ||
56 | setup_irq(MCFINT_VECBASE + MCFINT_PIT1, &coldfire_pit_irq); | 59 | setup_irq(MCFINT_VECBASE + MCFINT_PIT1, &coldfire_pit_irq); |
57 | 60 | ||
58 | icrp = (volatile unsigned char *) (MCF_IPSBAR + MCFICM_INTC0 + | 61 | icrp = (volatile unsigned char *) (MCF_IPSBAR + MCFICM_INTC0 + |
@@ -71,7 +74,7 @@ void coldfire_pit_init(irq_handler_t handler) | |||
71 | 74 | ||
72 | /***************************************************************************/ | 75 | /***************************************************************************/ |
73 | 76 | ||
74 | unsigned long coldfire_pit_offset(void) | 77 | unsigned long hw_timer_offset(void) |
75 | { | 78 | { |
76 | volatile unsigned long *ipr; | 79 | volatile unsigned long *ipr; |
77 | unsigned long pmr, pcntr, offset; | 80 | unsigned long pmr, pcntr, offset; |
diff --git a/arch/m68knommu/platform/5307/timers.c b/arch/m68knommu/platform/5307/timers.c index 64bd0ff9029e..489dec85c859 100644 --- a/arch/m68knommu/platform/5307/timers.c +++ b/arch/m68knommu/platform/5307/timers.c | |||
@@ -9,10 +9,9 @@ | |||
9 | /***************************************************************************/ | 9 | /***************************************************************************/ |
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | ||
12 | #include <linux/sched.h> | 13 | #include <linux/sched.h> |
13 | #include <linux/param.h> | ||
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/init.h> | ||
16 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
17 | #include <asm/io.h> | 16 | #include <asm/io.h> |
18 | #include <asm/traps.h> | 17 | #include <asm/traps.h> |
@@ -54,24 +53,28 @@ extern int mcf_timerirqpending(int timer); | |||
54 | 53 | ||
55 | /***************************************************************************/ | 54 | /***************************************************************************/ |
56 | 55 | ||
57 | void coldfire_tick(void) | 56 | static irqreturn_t hw_tick(int irq, void *dummy) |
58 | { | 57 | { |
59 | /* Reset the ColdFire timer */ | 58 | /* Reset the ColdFire timer */ |
60 | __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, TA(MCFTIMER_TER)); | 59 | __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, TA(MCFTIMER_TER)); |
60 | |||
61 | return arch_timer_interrupt(irq, dummy); | ||
61 | } | 62 | } |
62 | 63 | ||
63 | /***************************************************************************/ | 64 | /***************************************************************************/ |
64 | 65 | ||
65 | static struct irqaction coldfire_timer_irq = { | 66 | static struct irqaction coldfire_timer_irq = { |
66 | .name = "timer", | 67 | .name = "timer", |
67 | .flags = IRQF_DISABLED | IRQF_TIMER, | 68 | .flags = IRQF_DISABLED | IRQF_TIMER, |
69 | .handler = hw_tick, | ||
68 | }; | 70 | }; |
69 | 71 | ||
72 | /***************************************************************************/ | ||
73 | |||
70 | static int ticks_per_intr; | 74 | static int ticks_per_intr; |
71 | 75 | ||
72 | void coldfire_timer_init(irq_handler_t handler) | 76 | void hw_timer_init(void) |
73 | { | 77 | { |
74 | coldfire_timer_irq.handler = handler; | ||
75 | setup_irq(mcf_timervector, &coldfire_timer_irq); | 78 | setup_irq(mcf_timervector, &coldfire_timer_irq); |
76 | 79 | ||
77 | __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR)); | 80 | __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR)); |
@@ -89,7 +92,7 @@ void coldfire_timer_init(irq_handler_t handler) | |||
89 | 92 | ||
90 | /***************************************************************************/ | 93 | /***************************************************************************/ |
91 | 94 | ||
92 | unsigned long coldfire_timer_offset(void) | 95 | unsigned long hw_timer_offset(void) |
93 | { | 96 | { |
94 | unsigned long tcn, offset; | 97 | unsigned long tcn, offset; |
95 | 98 | ||
diff --git a/arch/m68knommu/platform/532x/config.c b/arch/m68knommu/platform/532x/config.c index b32c6425f821..f77328b7b6db 100644 --- a/arch/m68knommu/platform/532x/config.c +++ b/arch/m68knommu/platform/532x/config.c | |||
@@ -18,25 +18,18 @@ | |||
18 | /***************************************************************************/ | 18 | /***************************************************************************/ |
19 | 19 | ||
20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
21 | #include <linux/sched.h> | ||
22 | #include <linux/param.h> | 21 | #include <linux/param.h> |
23 | #include <linux/init.h> | 22 | #include <linux/init.h> |
24 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
25 | #include <asm/irq.h> | ||
26 | #include <asm/dma.h> | 24 | #include <asm/dma.h> |
27 | #include <asm/traps.h> | ||
28 | #include <asm/machdep.h> | 25 | #include <asm/machdep.h> |
29 | #include <asm/coldfire.h> | 26 | #include <asm/coldfire.h> |
30 | #include <asm/mcftimer.h> | ||
31 | #include <asm/mcfsim.h> | 27 | #include <asm/mcfsim.h> |
32 | #include <asm/mcfdma.h> | 28 | #include <asm/mcfdma.h> |
33 | #include <asm/mcfwdebug.h> | 29 | #include <asm/mcfwdebug.h> |
34 | 30 | ||
35 | /***************************************************************************/ | 31 | /***************************************************************************/ |
36 | 32 | ||
37 | void coldfire_tick(void); | ||
38 | void coldfire_timer_init(irq_handler_t handler); | ||
39 | unsigned long coldfire_timer_offset(void); | ||
40 | void coldfire_reset(void); | 33 | void coldfire_reset(void); |
41 | 34 | ||
42 | extern unsigned int mcf_timervector; | 35 | extern unsigned int mcf_timervector; |
@@ -104,9 +97,6 @@ void config_BSP(char *commandp, int size) | |||
104 | 97 | ||
105 | mcf_timervector = 64+32; | 98 | mcf_timervector = 64+32; |
106 | mcf_profilevector = 64+33; | 99 | mcf_profilevector = 64+33; |
107 | mach_sched_init = coldfire_timer_init; | ||
108 | mach_tick = coldfire_tick; | ||
109 | mach_gettimeoffset = coldfire_timer_offset; | ||
110 | mach_reset = coldfire_reset; | 100 | mach_reset = coldfire_reset; |
111 | 101 | ||
112 | #ifdef MCF_BDM_DISABLE | 102 | #ifdef MCF_BDM_DISABLE |
diff --git a/arch/m68knommu/platform/5407/config.c b/arch/m68knommu/platform/5407/config.c index e692536817d8..2d3b62eba7ca 100644 --- a/arch/m68knommu/platform/5407/config.c +++ b/arch/m68knommu/platform/5407/config.c | |||
@@ -10,24 +10,17 @@ | |||
10 | /***************************************************************************/ | 10 | /***************************************************************************/ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/sched.h> | ||
14 | #include <linux/param.h> | 13 | #include <linux/param.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
17 | #include <asm/irq.h> | ||
18 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
19 | #include <asm/traps.h> | ||
20 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
21 | #include <asm/coldfire.h> | 18 | #include <asm/coldfire.h> |
22 | #include <asm/mcftimer.h> | ||
23 | #include <asm/mcfsim.h> | 19 | #include <asm/mcfsim.h> |
24 | #include <asm/mcfdma.h> | 20 | #include <asm/mcfdma.h> |
25 | 21 | ||
26 | /***************************************************************************/ | 22 | /***************************************************************************/ |
27 | 23 | ||
28 | void coldfire_tick(void); | ||
29 | void coldfire_timer_init(irq_handler_t handler); | ||
30 | unsigned long coldfire_timer_offset(void); | ||
31 | void coldfire_reset(void); | 24 | void coldfire_reset(void); |
32 | 25 | ||
33 | extern unsigned int mcf_timervector; | 26 | extern unsigned int mcf_timervector; |
@@ -108,9 +101,6 @@ void config_BSP(char *commandp, int size) | |||
108 | mcf_timerlevel = 6; | 101 | mcf_timerlevel = 6; |
109 | #endif | 102 | #endif |
110 | 103 | ||
111 | mach_sched_init = coldfire_timer_init; | ||
112 | mach_tick = coldfire_tick; | ||
113 | mach_gettimeoffset = coldfire_timer_offset; | ||
114 | mach_reset = coldfire_reset; | 104 | mach_reset = coldfire_reset; |
115 | } | 105 | } |
116 | 106 | ||
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index b0b034c4654f..b1b40527658b 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/string.h> | 15 | #include <linux/string.h> |
16 | #include <linux/scatterlist.h> | ||
16 | 17 | ||
17 | #include <asm/cache.h> | 18 | #include <asm/cache.h> |
18 | #include <asm/io.h> | 19 | #include <asm/io.h> |
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c index 41f8e321e34c..9448d4e91142 100644 --- a/arch/parisc/kernel/pci-dma.c +++ b/arch/parisc/kernel/pci-dma.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
26 | #include <linux/string.h> | 26 | #include <linux/string.h> |
27 | #include <linux/types.h> | 27 | #include <linux/types.h> |
28 | #include <linux/scatterlist.h> | ||
28 | 29 | ||
29 | #include <asm/cacheflush.h> | 30 | #include <asm/cacheflush.h> |
30 | #include <asm/dma.h> /* for DMA_CHUNK_SIZE */ | 31 | #include <asm/dma.h> /* for DMA_CHUNK_SIZE */ |
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug index c939fe86a9e0..6a79fe43e229 100644 --- a/arch/powerpc/Kconfig.debug +++ b/arch/powerpc/Kconfig.debug | |||
@@ -216,7 +216,6 @@ config PPC_EARLY_DEBUG_BEAT | |||
216 | config PPC_EARLY_DEBUG_44x | 216 | config PPC_EARLY_DEBUG_44x |
217 | bool "Early serial debugging for IBM/AMCC 44x CPUs" | 217 | bool "Early serial debugging for IBM/AMCC 44x CPUs" |
218 | depends on 44x | 218 | depends on 44x |
219 | select PPC_UDBG_16550 | ||
220 | help | 219 | help |
221 | Select this to enable early debugging for IBM 44x chips via the | 220 | Select this to enable early debugging for IBM 44x chips via the |
222 | inbuilt serial port. | 221 | inbuilt serial port. |
diff --git a/arch/powerpc/boot/dts/bamboo.dts b/arch/powerpc/boot/dts/bamboo.dts index a88ae3d218a5..cb2fb50a281c 100644 --- a/arch/powerpc/boot/dts/bamboo.dts +++ b/arch/powerpc/boot/dts/bamboo.dts | |||
@@ -98,11 +98,13 @@ | |||
98 | interrupt-parent = <&MAL0>; | 98 | interrupt-parent = <&MAL0>; |
99 | interrupts = <0 1 2 3 4>; | 99 | interrupts = <0 1 2 3 4>; |
100 | #interrupt-cells = <1>; | 100 | #interrupt-cells = <1>; |
101 | #address-cells = <0>; | ||
102 | #size-cells = <0>; | ||
101 | interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 | 103 | interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 |
102 | /*RXEOB*/ 1 &UIC0 b 4 | 104 | /*RXEOB*/ 1 &UIC0 b 4 |
103 | /*SERR*/ 2 &UIC1 0 4 | 105 | /*SERR*/ 2 &UIC1 0 4 |
104 | /*TXDE*/ 3 &UIC1 1 4 | 106 | /*TXDE*/ 3 &UIC1 1 4 |
105 | /*RXDE*/ 4 &UIC1 3 4>; | 107 | /*RXDE*/ 4 &UIC1 2 4>; |
106 | }; | 108 | }; |
107 | 109 | ||
108 | POB0: opb { | 110 | POB0: opb { |
@@ -196,6 +198,7 @@ | |||
196 | }; | 198 | }; |
197 | 199 | ||
198 | EMAC0: ethernet@ef600e00 { | 200 | EMAC0: ethernet@ef600e00 { |
201 | linux,network-index = <0>; | ||
199 | device_type = "network"; | 202 | device_type = "network"; |
200 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | 203 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; |
201 | interrupt-parent = <&UIC1>; | 204 | interrupt-parent = <&UIC1>; |
@@ -210,12 +213,13 @@ | |||
210 | rx-fifo-size = <1000>; | 213 | rx-fifo-size = <1000>; |
211 | tx-fifo-size = <800>; | 214 | tx-fifo-size = <800>; |
212 | phy-mode = "rmii"; | 215 | phy-mode = "rmii"; |
213 | phy-map = <00000001>; | 216 | phy-map = <00000000>; |
214 | zmii-device = <&ZMII0>; | 217 | zmii-device = <&ZMII0>; |
215 | zmii-channel = <0>; | 218 | zmii-channel = <0>; |
216 | }; | 219 | }; |
217 | 220 | ||
218 | EMAC1: ethernet@ef600f00 { | 221 | EMAC1: ethernet@ef600f00 { |
222 | linux,network-index = <1>; | ||
219 | device_type = "network"; | 223 | device_type = "network"; |
220 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | 224 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; |
221 | interrupt-parent = <&UIC1>; | 225 | interrupt-parent = <&UIC1>; |
@@ -230,7 +234,7 @@ | |||
230 | rx-fifo-size = <1000>; | 234 | rx-fifo-size = <1000>; |
231 | tx-fifo-size = <800>; | 235 | tx-fifo-size = <800>; |
232 | phy-mode = "rmii"; | 236 | phy-mode = "rmii"; |
233 | phy-map = <00000001>; | 237 | phy-map = <00000000>; |
234 | zmii-device = <&ZMII0>; | 238 | zmii-device = <&ZMII0>; |
235 | zmii-channel = <1>; | 239 | zmii-channel = <1>; |
236 | }; | 240 | }; |
diff --git a/arch/powerpc/boot/dts/sequoia.dts b/arch/powerpc/boot/dts/sequoia.dts index 36be75b04de1..8833dfe2e8b4 100644 --- a/arch/powerpc/boot/dts/sequoia.dts +++ b/arch/powerpc/boot/dts/sequoia.dts | |||
@@ -241,6 +241,12 @@ | |||
241 | reg = <ef600d00 c>; | 241 | reg = <ef600d00 c>; |
242 | }; | 242 | }; |
243 | 243 | ||
244 | RGMII0: emac-rgmii@ef601000 { | ||
245 | device_type = "rgmii-interface"; | ||
246 | compatible = "ibm,rgmii-440epx", "ibm,rgmii"; | ||
247 | reg = <ef601000 8>; | ||
248 | }; | ||
249 | |||
244 | EMAC0: ethernet@ef600e00 { | 250 | EMAC0: ethernet@ef600e00 { |
245 | linux,network-index = <0>; | 251 | linux,network-index = <0>; |
246 | device_type = "network"; | 252 | device_type = "network"; |
@@ -261,10 +267,12 @@ | |||
261 | max-frame-size = <5dc>; | 267 | max-frame-size = <5dc>; |
262 | rx-fifo-size = <1000>; | 268 | rx-fifo-size = <1000>; |
263 | tx-fifo-size = <800>; | 269 | tx-fifo-size = <800>; |
264 | phy-mode = "rmii"; | 270 | phy-mode = "rgmii"; |
265 | phy-map = <00000000>; | 271 | phy-map = <00000000>; |
266 | zmii-device = <&ZMII0>; | 272 | zmii-device = <&ZMII0>; |
267 | zmii-channel = <0>; | 273 | zmii-channel = <0>; |
274 | rgmii-device = <&RGMII0>; | ||
275 | rgmii-channel = <0>; | ||
268 | }; | 276 | }; |
269 | 277 | ||
270 | EMAC1: ethernet@ef600f00 { | 278 | EMAC1: ethernet@ef600f00 { |
@@ -287,10 +295,12 @@ | |||
287 | max-frame-size = <5dc>; | 295 | max-frame-size = <5dc>; |
288 | rx-fifo-size = <1000>; | 296 | rx-fifo-size = <1000>; |
289 | tx-fifo-size = <800>; | 297 | tx-fifo-size = <800>; |
290 | phy-mode = "rmii"; | 298 | phy-mode = "rgmii"; |
291 | phy-map = <00000000>; | 299 | phy-map = <00000000>; |
292 | zmii-device = <&ZMII0>; | 300 | zmii-device = <&ZMII0>; |
293 | zmii-channel = <1>; | 301 | zmii-channel = <1>; |
302 | rgmii-device = <&RGMII0>; | ||
303 | rgmii-channel = <1>; | ||
294 | }; | 304 | }; |
295 | }; | 305 | }; |
296 | }; | 306 | }; |
diff --git a/arch/powerpc/boot/dts/walnut.dts b/arch/powerpc/boot/dts/walnut.dts index ec54f4e04ad6..fa681f5343fe 100644 --- a/arch/powerpc/boot/dts/walnut.dts +++ b/arch/powerpc/boot/dts/walnut.dts | |||
@@ -64,10 +64,15 @@ | |||
64 | MAL: mcmal { | 64 | MAL: mcmal { |
65 | compatible = "ibm,mcmal-405gp", "ibm,mcmal"; | 65 | compatible = "ibm,mcmal-405gp", "ibm,mcmal"; |
66 | dcr-reg = <180 62>; | 66 | dcr-reg = <180 62>; |
67 | num-tx-chans = <2>; | 67 | num-tx-chans = <1>; |
68 | num-rx-chans = <1>; | 68 | num-rx-chans = <1>; |
69 | interrupt-parent = <&UIC0>; | 69 | interrupt-parent = <&UIC0>; |
70 | interrupts = <a 4 b 4 c 4 d 4 e 4>; | 70 | interrupts = < |
71 | b 4 /* TXEOB */ | ||
72 | c 4 /* RXEOB */ | ||
73 | a 4 /* SERR */ | ||
74 | d 4 /* TXDE */ | ||
75 | e 4 /* RXDE */>; | ||
71 | }; | 76 | }; |
72 | 77 | ||
73 | POB0: opb { | 78 | POB0: opb { |
@@ -118,9 +123,10 @@ | |||
118 | compatible = "ibm,emac-405gp", "ibm,emac"; | 123 | compatible = "ibm,emac-405gp", "ibm,emac"; |
119 | interrupt-parent = <&UIC0>; | 124 | interrupt-parent = <&UIC0>; |
120 | interrupts = <9 4 f 4>; | 125 | interrupts = <9 4 f 4>; |
126 | local-mac-address = [000000000000]; /* Filled in by zImage */ | ||
121 | reg = <ef600800 70>; | 127 | reg = <ef600800 70>; |
122 | mal-device = <&MAL>; | 128 | mal-device = <&MAL>; |
123 | mal-tx-channel = <0 1>; | 129 | mal-tx-channel = <0>; |
124 | mal-rx-channel = <0>; | 130 | mal-rx-channel = <0>; |
125 | cell-index = <0>; | 131 | cell-index = <0>; |
126 | max-frame-size = <5dc>; | 132 | max-frame-size = <5dc>; |
diff --git a/arch/powerpc/boot/treeboot-walnut.c b/arch/powerpc/boot/treeboot-walnut.c index 3adf2d08a230..bb2c309d70fc 100644 --- a/arch/powerpc/boot/treeboot-walnut.c +++ b/arch/powerpc/boot/treeboot-walnut.c | |||
@@ -57,8 +57,8 @@ void ibm405gp_fixup_clocks(unsigned int sysclk, unsigned int ser_clk) | |||
57 | } | 57 | } |
58 | 58 | ||
59 | /* setup the timebase clock to tick at the cpu frequency */ | 59 | /* setup the timebase clock to tick at the cpu frequency */ |
60 | cpc0_cr1 = cpc0_cr1 & ~ 0x00800000; | 60 | cpc0_cr1 = cpc0_cr1 & ~0x00800000; |
61 | mtdcr(DCRN_CPC0_CR1, cpc0_cr1); | 61 | mtdcr(DCRN_405_CPC0_CR1, cpc0_cr1); |
62 | tb = cpu; | 62 | tb = cpu; |
63 | 63 | ||
64 | dt_fixup_cpu_clocks(cpu, tb, 0); | 64 | dt_fixup_cpu_clocks(cpu, tb, 0); |
@@ -109,6 +109,7 @@ static void walnut_flashsel_fixup(void) | |||
109 | setprop(sram, "reg", reg_sram, sizeof(reg_sram)); | 109 | setprop(sram, "reg", reg_sram, sizeof(reg_sram)); |
110 | } | 110 | } |
111 | 111 | ||
112 | #define WALNUT_OPENBIOS_MAC_OFF 0xfffffe0b | ||
112 | static void walnut_fixups(void) | 113 | static void walnut_fixups(void) |
113 | { | 114 | { |
114 | ibm4xx_fixup_memsize(); | 115 | ibm4xx_fixup_memsize(); |
@@ -116,6 +117,7 @@ static void walnut_fixups(void) | |||
116 | ibm4xx_quiesce_eth((u32 *)0xef600800, NULL); | 117 | ibm4xx_quiesce_eth((u32 *)0xef600800, NULL); |
117 | ibm4xx_fixup_ebc_ranges("/plb/ebc"); | 118 | ibm4xx_fixup_ebc_ranges("/plb/ebc"); |
118 | walnut_flashsel_fixup(); | 119 | walnut_flashsel_fixup(); |
120 | dt_fixup_mac_addresses((u8 *) WALNUT_OPENBIOS_MAC_OFF); | ||
119 | } | 121 | } |
120 | 122 | ||
121 | void platform_init(void) | 123 | void platform_init(void) |
diff --git a/arch/powerpc/configs/bamboo_defconfig b/arch/powerpc/configs/bamboo_defconfig index d22fed6d2cd9..844808ebf245 100644 --- a/arch/powerpc/configs/bamboo_defconfig +++ b/arch/powerpc/configs/bamboo_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.23-rc1 | 3 | # Linux kernel version: 2.6.23 |
4 | # Fri Aug 3 10:46:53 2007 | 4 | # Fri Oct 19 09:01:11 2007 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -22,8 +22,13 @@ CONFIG_PHYS_64BIT=y | |||
22 | # CONFIG_PPC_MM_SLICES is not set | 22 | # CONFIG_PPC_MM_SLICES is not set |
23 | CONFIG_NOT_COHERENT_CACHE=y | 23 | CONFIG_NOT_COHERENT_CACHE=y |
24 | CONFIG_PPC32=y | 24 | CONFIG_PPC32=y |
25 | CONFIG_WORD_SIZE=32 | ||
25 | CONFIG_PPC_MERGE=y | 26 | CONFIG_PPC_MERGE=y |
26 | CONFIG_MMU=y | 27 | CONFIG_MMU=y |
28 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
29 | CONFIG_GENERIC_TIME=y | ||
30 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
31 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
27 | CONFIG_GENERIC_HARDIRQS=y | 32 | CONFIG_GENERIC_HARDIRQS=y |
28 | CONFIG_IRQ_PER_CPU=y | 33 | CONFIG_IRQ_PER_CPU=y |
29 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 34 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
@@ -67,6 +72,8 @@ CONFIG_POSIX_MQUEUE=y | |||
67 | # CONFIG_AUDIT is not set | 72 | # CONFIG_AUDIT is not set |
68 | # CONFIG_IKCONFIG is not set | 73 | # CONFIG_IKCONFIG is not set |
69 | CONFIG_LOG_BUF_SHIFT=14 | 74 | CONFIG_LOG_BUF_SHIFT=14 |
75 | CONFIG_FAIR_GROUP_SCHED=y | ||
76 | CONFIG_FAIR_USER_SCHED=y | ||
70 | CONFIG_SYSFS_DEPRECATED=y | 77 | CONFIG_SYSFS_DEPRECATED=y |
71 | # CONFIG_RELAY is not set | 78 | # CONFIG_RELAY is not set |
72 | CONFIG_BLK_DEV_INITRD=y | 79 | CONFIG_BLK_DEV_INITRD=y |
@@ -87,7 +94,6 @@ CONFIG_FUTEX=y | |||
87 | CONFIG_ANON_INODES=y | 94 | CONFIG_ANON_INODES=y |
88 | CONFIG_EPOLL=y | 95 | CONFIG_EPOLL=y |
89 | CONFIG_SIGNALFD=y | 96 | CONFIG_SIGNALFD=y |
90 | CONFIG_TIMERFD=y | ||
91 | CONFIG_EVENTFD=y | 97 | CONFIG_EVENTFD=y |
92 | CONFIG_SHMEM=y | 98 | CONFIG_SHMEM=y |
93 | CONFIG_VM_EVENT_COUNTERS=y | 99 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -133,6 +139,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
133 | # CONFIG_PQ2ADS is not set | 139 | # CONFIG_PQ2ADS is not set |
134 | CONFIG_BAMBOO=y | 140 | CONFIG_BAMBOO=y |
135 | # CONFIG_EBONY is not set | 141 | # CONFIG_EBONY is not set |
142 | # CONFIG_SEQUOIA is not set | ||
136 | CONFIG_440EP=y | 143 | CONFIG_440EP=y |
137 | CONFIG_IBM440EP_ERR42=y | 144 | CONFIG_IBM440EP_ERR42=y |
138 | # CONFIG_MPIC is not set | 145 | # CONFIG_MPIC is not set |
@@ -146,11 +153,16 @@ CONFIG_IBM440EP_ERR42=y | |||
146 | # CONFIG_GENERIC_IOMAP is not set | 153 | # CONFIG_GENERIC_IOMAP is not set |
147 | # CONFIG_CPU_FREQ is not set | 154 | # CONFIG_CPU_FREQ is not set |
148 | # CONFIG_CPM2 is not set | 155 | # CONFIG_CPM2 is not set |
156 | # CONFIG_FSL_ULI1575 is not set | ||
149 | 157 | ||
150 | # | 158 | # |
151 | # Kernel options | 159 | # Kernel options |
152 | # | 160 | # |
153 | # CONFIG_HIGHMEM is not set | 161 | # CONFIG_HIGHMEM is not set |
162 | # CONFIG_TICK_ONESHOT is not set | ||
163 | # CONFIG_NO_HZ is not set | ||
164 | # CONFIG_HIGH_RES_TIMERS is not set | ||
165 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
154 | # CONFIG_HZ_100 is not set | 166 | # CONFIG_HZ_100 is not set |
155 | CONFIG_HZ_250=y | 167 | CONFIG_HZ_250=y |
156 | # CONFIG_HZ_300 is not set | 168 | # CONFIG_HZ_300 is not set |
@@ -172,6 +184,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
172 | CONFIG_FLATMEM=y | 184 | CONFIG_FLATMEM=y |
173 | CONFIG_FLAT_NODE_MEM_MAP=y | 185 | CONFIG_FLAT_NODE_MEM_MAP=y |
174 | # CONFIG_SPARSEMEM_STATIC is not set | 186 | # CONFIG_SPARSEMEM_STATIC is not set |
187 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
175 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 188 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
176 | CONFIG_RESOURCES_64BIT=y | 189 | CONFIG_RESOURCES_64BIT=y |
177 | CONFIG_ZONE_DMA_FLAG=1 | 190 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -197,10 +210,6 @@ CONFIG_PCI_SYSCALL=y | |||
197 | CONFIG_ARCH_SUPPORTS_MSI=y | 210 | CONFIG_ARCH_SUPPORTS_MSI=y |
198 | # CONFIG_PCI_MSI is not set | 211 | # CONFIG_PCI_MSI is not set |
199 | # CONFIG_PCI_DEBUG is not set | 212 | # CONFIG_PCI_DEBUG is not set |
200 | |||
201 | # | ||
202 | # PCCARD (PCMCIA/CardBus) support | ||
203 | # | ||
204 | # CONFIG_PCCARD is not set | 213 | # CONFIG_PCCARD is not set |
205 | # CONFIG_HOTPLUG_PCI is not set | 214 | # CONFIG_HOTPLUG_PCI is not set |
206 | 215 | ||
@@ -215,7 +224,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y | |||
215 | CONFIG_HIGHMEM_START=0xfe000000 | 224 | CONFIG_HIGHMEM_START=0xfe000000 |
216 | CONFIG_LOWMEM_SIZE=0x30000000 | 225 | CONFIG_LOWMEM_SIZE=0x30000000 |
217 | CONFIG_KERNEL_START=0xc0000000 | 226 | CONFIG_KERNEL_START=0xc0000000 |
218 | CONFIG_TASK_SIZE=0x80000000 | 227 | CONFIG_TASK_SIZE=0xc0000000 |
219 | CONFIG_CONSISTENT_START=0xff100000 | 228 | CONFIG_CONSISTENT_START=0xff100000 |
220 | CONFIG_CONSISTENT_SIZE=0x00200000 | 229 | CONFIG_CONSISTENT_SIZE=0x00200000 |
221 | CONFIG_BOOT_LOAD=0x01000000 | 230 | CONFIG_BOOT_LOAD=0x01000000 |
@@ -252,6 +261,7 @@ CONFIG_IP_PNP_BOOTP=y | |||
252 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | 261 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set |
253 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | 262 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set |
254 | # CONFIG_INET_XFRM_MODE_BEET is not set | 263 | # CONFIG_INET_XFRM_MODE_BEET is not set |
264 | # CONFIG_INET_LRO is not set | ||
255 | CONFIG_INET_DIAG=y | 265 | CONFIG_INET_DIAG=y |
256 | CONFIG_INET_TCP_DIAG=y | 266 | CONFIG_INET_TCP_DIAG=y |
257 | # CONFIG_TCP_CONG_ADVANCED is not set | 267 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -309,6 +319,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
309 | # | 319 | # |
310 | # Generic Driver Options | 320 | # Generic Driver Options |
311 | # | 321 | # |
322 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
312 | CONFIG_STANDALONE=y | 323 | CONFIG_STANDALONE=y |
313 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 324 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
314 | CONFIG_FW_LOADER=y | 325 | CONFIG_FW_LOADER=y |
@@ -353,10 +364,6 @@ CONFIG_MISC_DEVICES=y | |||
353 | # CONFIG_SCSI_NETLINK is not set | 364 | # CONFIG_SCSI_NETLINK is not set |
354 | # CONFIG_ATA is not set | 365 | # CONFIG_ATA is not set |
355 | # CONFIG_MD is not set | 366 | # CONFIG_MD is not set |
356 | |||
357 | # | ||
358 | # Fusion MPT device support | ||
359 | # | ||
360 | # CONFIG_FUSION is not set | 367 | # CONFIG_FUSION is not set |
361 | 368 | ||
362 | # | 369 | # |
@@ -375,12 +382,36 @@ CONFIG_NETDEVICES=y | |||
375 | # CONFIG_MACVLAN is not set | 382 | # CONFIG_MACVLAN is not set |
376 | # CONFIG_EQUALIZER is not set | 383 | # CONFIG_EQUALIZER is not set |
377 | # CONFIG_TUN is not set | 384 | # CONFIG_TUN is not set |
385 | # CONFIG_VETH is not set | ||
386 | # CONFIG_IP1000 is not set | ||
378 | # CONFIG_ARCNET is not set | 387 | # CONFIG_ARCNET is not set |
379 | # CONFIG_NET_ETHERNET is not set | 388 | # CONFIG_PHYLIB is not set |
389 | CONFIG_NET_ETHERNET=y | ||
390 | # CONFIG_MII is not set | ||
391 | # CONFIG_HAPPYMEAL is not set | ||
392 | # CONFIG_SUNGEM is not set | ||
393 | # CONFIG_CASSINI is not set | ||
394 | # CONFIG_NET_VENDOR_3COM is not set | ||
395 | # CONFIG_NET_TULIP is not set | ||
396 | # CONFIG_HP100 is not set | ||
397 | CONFIG_IBM_NEW_EMAC=y | ||
398 | CONFIG_IBM_NEW_EMAC_RXB=128 | ||
399 | CONFIG_IBM_NEW_EMAC_TXB=64 | ||
400 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
401 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
402 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
403 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
404 | CONFIG_IBM_NEW_EMAC_ZMII=y | ||
405 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
406 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
407 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
408 | # CONFIG_NET_PCI is not set | ||
409 | # CONFIG_B44 is not set | ||
380 | CONFIG_NETDEV_1000=y | 410 | CONFIG_NETDEV_1000=y |
381 | # CONFIG_ACENIC is not set | 411 | # CONFIG_ACENIC is not set |
382 | # CONFIG_DL2K is not set | 412 | # CONFIG_DL2K is not set |
383 | # CONFIG_E1000 is not set | 413 | # CONFIG_E1000 is not set |
414 | # CONFIG_E1000E is not set | ||
384 | # CONFIG_NS83820 is not set | 415 | # CONFIG_NS83820 is not set |
385 | # CONFIG_HAMACHI is not set | 416 | # CONFIG_HAMACHI is not set |
386 | # CONFIG_YELLOWFIN is not set | 417 | # CONFIG_YELLOWFIN is not set |
@@ -388,6 +419,7 @@ CONFIG_NETDEV_1000=y | |||
388 | # CONFIG_SIS190 is not set | 419 | # CONFIG_SIS190 is not set |
389 | # CONFIG_SKGE is not set | 420 | # CONFIG_SKGE is not set |
390 | # CONFIG_SKY2 is not set | 421 | # CONFIG_SKY2 is not set |
422 | # CONFIG_SK98LIN is not set | ||
391 | # CONFIG_VIA_VELOCITY is not set | 423 | # CONFIG_VIA_VELOCITY is not set |
392 | # CONFIG_TIGON3 is not set | 424 | # CONFIG_TIGON3 is not set |
393 | # CONFIG_BNX2 is not set | 425 | # CONFIG_BNX2 is not set |
@@ -396,11 +428,14 @@ CONFIG_NETDEV_1000=y | |||
396 | CONFIG_NETDEV_10000=y | 428 | CONFIG_NETDEV_10000=y |
397 | # CONFIG_CHELSIO_T1 is not set | 429 | # CONFIG_CHELSIO_T1 is not set |
398 | # CONFIG_CHELSIO_T3 is not set | 430 | # CONFIG_CHELSIO_T3 is not set |
431 | # CONFIG_IXGBE is not set | ||
399 | # CONFIG_IXGB is not set | 432 | # CONFIG_IXGB is not set |
400 | # CONFIG_S2IO is not set | 433 | # CONFIG_S2IO is not set |
401 | # CONFIG_MYRI10GE is not set | 434 | # CONFIG_MYRI10GE is not set |
402 | # CONFIG_NETXEN_NIC is not set | 435 | # CONFIG_NETXEN_NIC is not set |
436 | # CONFIG_NIU is not set | ||
403 | # CONFIG_MLX4_CORE is not set | 437 | # CONFIG_MLX4_CORE is not set |
438 | # CONFIG_TEHUTI is not set | ||
404 | # CONFIG_TR is not set | 439 | # CONFIG_TR is not set |
405 | 440 | ||
406 | # | 441 | # |
@@ -463,14 +498,11 @@ CONFIG_UNIX98_PTYS=y | |||
463 | CONFIG_LEGACY_PTYS=y | 498 | CONFIG_LEGACY_PTYS=y |
464 | CONFIG_LEGACY_PTY_COUNT=256 | 499 | CONFIG_LEGACY_PTY_COUNT=256 |
465 | # CONFIG_IPMI_HANDLER is not set | 500 | # CONFIG_IPMI_HANDLER is not set |
466 | # CONFIG_WATCHDOG is not set | ||
467 | # CONFIG_HW_RANDOM is not set | 501 | # CONFIG_HW_RANDOM is not set |
468 | # CONFIG_NVRAM is not set | 502 | # CONFIG_NVRAM is not set |
469 | # CONFIG_GEN_RTC is not set | 503 | # CONFIG_GEN_RTC is not set |
470 | # CONFIG_R3964 is not set | 504 | # CONFIG_R3964 is not set |
471 | # CONFIG_APPLICOM is not set | 505 | # CONFIG_APPLICOM is not set |
472 | # CONFIG_AGP is not set | ||
473 | # CONFIG_DRM is not set | ||
474 | # CONFIG_RAW_DRIVER is not set | 506 | # CONFIG_RAW_DRIVER is not set |
475 | # CONFIG_TCG_TPM is not set | 507 | # CONFIG_TCG_TPM is not set |
476 | CONFIG_DEVPORT=y | 508 | CONFIG_DEVPORT=y |
@@ -484,6 +516,13 @@ CONFIG_DEVPORT=y | |||
484 | # CONFIG_W1 is not set | 516 | # CONFIG_W1 is not set |
485 | # CONFIG_POWER_SUPPLY is not set | 517 | # CONFIG_POWER_SUPPLY is not set |
486 | # CONFIG_HWMON is not set | 518 | # CONFIG_HWMON is not set |
519 | # CONFIG_WATCHDOG is not set | ||
520 | |||
521 | # | ||
522 | # Sonics Silicon Backplane | ||
523 | # | ||
524 | CONFIG_SSB_POSSIBLE=y | ||
525 | # CONFIG_SSB is not set | ||
487 | 526 | ||
488 | # | 527 | # |
489 | # Multifunction device drivers | 528 | # Multifunction device drivers |
@@ -500,16 +539,17 @@ CONFIG_DAB=y | |||
500 | # | 539 | # |
501 | # Graphics support | 540 | # Graphics support |
502 | # | 541 | # |
542 | # CONFIG_AGP is not set | ||
543 | # CONFIG_DRM is not set | ||
544 | # CONFIG_VGASTATE is not set | ||
545 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
546 | # CONFIG_FB is not set | ||
503 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 547 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
504 | 548 | ||
505 | # | 549 | # |
506 | # Display device support | 550 | # Display device support |
507 | # | 551 | # |
508 | # CONFIG_DISPLAY_SUPPORT is not set | 552 | # CONFIG_DISPLAY_SUPPORT is not set |
509 | # CONFIG_VGASTATE is not set | ||
510 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
511 | # CONFIG_FB is not set | ||
512 | # CONFIG_FB_IBM_GXT4500 is not set | ||
513 | 553 | ||
514 | # | 554 | # |
515 | # Sound | 555 | # Sound |
@@ -536,19 +576,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
536 | # CONFIG_RTC_CLASS is not set | 576 | # CONFIG_RTC_CLASS is not set |
537 | 577 | ||
538 | # | 578 | # |
539 | # DMA Engine support | ||
540 | # | ||
541 | # CONFIG_DMA_ENGINE is not set | ||
542 | |||
543 | # | ||
544 | # DMA Clients | ||
545 | # | ||
546 | |||
547 | # | ||
548 | # DMA Devices | ||
549 | # | ||
550 | |||
551 | # | ||
552 | # Userspace I/O | 579 | # Userspace I/O |
553 | # | 580 | # |
554 | # CONFIG_UIO is not set | 581 | # CONFIG_UIO is not set |
@@ -600,7 +627,6 @@ CONFIG_SYSFS=y | |||
600 | CONFIG_TMPFS=y | 627 | CONFIG_TMPFS=y |
601 | # CONFIG_TMPFS_POSIX_ACL is not set | 628 | # CONFIG_TMPFS_POSIX_ACL is not set |
602 | # CONFIG_HUGETLB_PAGE is not set | 629 | # CONFIG_HUGETLB_PAGE is not set |
603 | CONFIG_RAMFS=y | ||
604 | # CONFIG_CONFIGFS_FS is not set | 630 | # CONFIG_CONFIGFS_FS is not set |
605 | 631 | ||
606 | # | 632 | # |
@@ -619,10 +645,7 @@ CONFIG_CRAMFS=y | |||
619 | # CONFIG_QNX4FS_FS is not set | 645 | # CONFIG_QNX4FS_FS is not set |
620 | # CONFIG_SYSV_FS is not set | 646 | # CONFIG_SYSV_FS is not set |
621 | # CONFIG_UFS_FS is not set | 647 | # CONFIG_UFS_FS is not set |
622 | 648 | CONFIG_NETWORK_FILESYSTEMS=y | |
623 | # | ||
624 | # Network File Systems | ||
625 | # | ||
626 | CONFIG_NFS_FS=y | 649 | CONFIG_NFS_FS=y |
627 | CONFIG_NFS_V3=y | 650 | CONFIG_NFS_V3=y |
628 | # CONFIG_NFS_V3_ACL is not set | 651 | # CONFIG_NFS_V3_ACL is not set |
@@ -648,15 +671,7 @@ CONFIG_SUNRPC=y | |||
648 | # | 671 | # |
649 | # CONFIG_PARTITION_ADVANCED is not set | 672 | # CONFIG_PARTITION_ADVANCED is not set |
650 | CONFIG_MSDOS_PARTITION=y | 673 | CONFIG_MSDOS_PARTITION=y |
651 | |||
652 | # | ||
653 | # Native Language Support | ||
654 | # | ||
655 | # CONFIG_NLS is not set | 674 | # CONFIG_NLS is not set |
656 | |||
657 | # | ||
658 | # Distributed Lock Manager | ||
659 | # | ||
660 | # CONFIG_DLM is not set | 675 | # CONFIG_DLM is not set |
661 | # CONFIG_UCC_SLOW is not set | 676 | # CONFIG_UCC_SLOW is not set |
662 | 677 | ||
@@ -709,6 +724,7 @@ CONFIG_SCHED_DEBUG=y | |||
709 | # CONFIG_DEBUG_VM is not set | 724 | # CONFIG_DEBUG_VM is not set |
710 | # CONFIG_DEBUG_LIST is not set | 725 | # CONFIG_DEBUG_LIST is not set |
711 | CONFIG_FORCED_INLINING=y | 726 | CONFIG_FORCED_INLINING=y |
727 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
712 | # CONFIG_RCU_TORTURE_TEST is not set | 728 | # CONFIG_RCU_TORTURE_TEST is not set |
713 | # CONFIG_FAULT_INJECTION is not set | 729 | # CONFIG_FAULT_INJECTION is not set |
714 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 730 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -728,6 +744,7 @@ CONFIG_PPC_EARLY_DEBUG=y | |||
728 | # CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set | 744 | # CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set |
729 | # CONFIG_PPC_EARLY_DEBUG_BEAT is not set | 745 | # CONFIG_PPC_EARLY_DEBUG_BEAT is not set |
730 | CONFIG_PPC_EARLY_DEBUG_44x=y | 746 | CONFIG_PPC_EARLY_DEBUG_44x=y |
747 | # CONFIG_PPC_EARLY_DEBUG_CPM is not set | ||
731 | CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300 | 748 | CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300 |
732 | CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x0 | 749 | CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x0 |
733 | 750 | ||
@@ -736,6 +753,7 @@ CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x0 | |||
736 | # | 753 | # |
737 | # CONFIG_KEYS is not set | 754 | # CONFIG_KEYS is not set |
738 | # CONFIG_SECURITY is not set | 755 | # CONFIG_SECURITY is not set |
756 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
739 | CONFIG_CRYPTO=y | 757 | CONFIG_CRYPTO=y |
740 | CONFIG_CRYPTO_ALGAPI=y | 758 | CONFIG_CRYPTO_ALGAPI=y |
741 | CONFIG_CRYPTO_BLKCIPHER=y | 759 | CONFIG_CRYPTO_BLKCIPHER=y |
@@ -755,6 +773,7 @@ CONFIG_CRYPTO_ECB=y | |||
755 | CONFIG_CRYPTO_CBC=y | 773 | CONFIG_CRYPTO_CBC=y |
756 | CONFIG_CRYPTO_PCBC=y | 774 | CONFIG_CRYPTO_PCBC=y |
757 | # CONFIG_CRYPTO_LRW is not set | 775 | # CONFIG_CRYPTO_LRW is not set |
776 | # CONFIG_CRYPTO_XTS is not set | ||
758 | # CONFIG_CRYPTO_CRYPTD is not set | 777 | # CONFIG_CRYPTO_CRYPTD is not set |
759 | CONFIG_CRYPTO_DES=y | 778 | CONFIG_CRYPTO_DES=y |
760 | # CONFIG_CRYPTO_FCRYPT is not set | 779 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -768,9 +787,12 @@ CONFIG_CRYPTO_DES=y | |||
768 | # CONFIG_CRYPTO_ARC4 is not set | 787 | # CONFIG_CRYPTO_ARC4 is not set |
769 | # CONFIG_CRYPTO_KHAZAD is not set | 788 | # CONFIG_CRYPTO_KHAZAD is not set |
770 | # CONFIG_CRYPTO_ANUBIS is not set | 789 | # CONFIG_CRYPTO_ANUBIS is not set |
790 | # CONFIG_CRYPTO_SEED is not set | ||
771 | # CONFIG_CRYPTO_DEFLATE is not set | 791 | # CONFIG_CRYPTO_DEFLATE is not set |
772 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 792 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
773 | # CONFIG_CRYPTO_CRC32C is not set | 793 | # CONFIG_CRYPTO_CRC32C is not set |
774 | # CONFIG_CRYPTO_CAMELLIA is not set | 794 | # CONFIG_CRYPTO_CAMELLIA is not set |
775 | # CONFIG_CRYPTO_TEST is not set | 795 | # CONFIG_CRYPTO_TEST is not set |
796 | # CONFIG_CRYPTO_AUTHENC is not set | ||
776 | CONFIG_CRYPTO_HW=y | 797 | CONFIG_CRYPTO_HW=y |
798 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/configs/ebony_defconfig b/arch/powerpc/configs/ebony_defconfig index 35a95dda681e..d3ef642811ef 100644 --- a/arch/powerpc/configs/ebony_defconfig +++ b/arch/powerpc/configs/ebony_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.23-rc4 | 3 | # Linux kernel version: 2.6.23 |
4 | # Thu Aug 30 16:34:11 2007 | 4 | # Thu Oct 18 08:01:57 2007 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -21,8 +21,13 @@ CONFIG_PHYS_64BIT=y | |||
21 | # CONFIG_PPC_MM_SLICES is not set | 21 | # CONFIG_PPC_MM_SLICES is not set |
22 | CONFIG_NOT_COHERENT_CACHE=y | 22 | CONFIG_NOT_COHERENT_CACHE=y |
23 | CONFIG_PPC32=y | 23 | CONFIG_PPC32=y |
24 | CONFIG_WORD_SIZE=32 | ||
24 | CONFIG_PPC_MERGE=y | 25 | CONFIG_PPC_MERGE=y |
25 | CONFIG_MMU=y | 26 | CONFIG_MMU=y |
27 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
28 | CONFIG_GENERIC_TIME=y | ||
29 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
30 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
26 | CONFIG_GENERIC_HARDIRQS=y | 31 | CONFIG_GENERIC_HARDIRQS=y |
27 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
28 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
@@ -66,6 +71,8 @@ CONFIG_POSIX_MQUEUE=y | |||
66 | # CONFIG_AUDIT is not set | 71 | # CONFIG_AUDIT is not set |
67 | # CONFIG_IKCONFIG is not set | 72 | # CONFIG_IKCONFIG is not set |
68 | CONFIG_LOG_BUF_SHIFT=14 | 73 | CONFIG_LOG_BUF_SHIFT=14 |
74 | CONFIG_FAIR_GROUP_SCHED=y | ||
75 | CONFIG_FAIR_USER_SCHED=y | ||
69 | CONFIG_SYSFS_DEPRECATED=y | 76 | CONFIG_SYSFS_DEPRECATED=y |
70 | # CONFIG_RELAY is not set | 77 | # CONFIG_RELAY is not set |
71 | CONFIG_BLK_DEV_INITRD=y | 78 | CONFIG_BLK_DEV_INITRD=y |
@@ -86,7 +93,6 @@ CONFIG_FUTEX=y | |||
86 | CONFIG_ANON_INODES=y | 93 | CONFIG_ANON_INODES=y |
87 | CONFIG_EPOLL=y | 94 | CONFIG_EPOLL=y |
88 | CONFIG_SIGNALFD=y | 95 | CONFIG_SIGNALFD=y |
89 | CONFIG_TIMERFD=y | ||
90 | CONFIG_EVENTFD=y | 96 | CONFIG_EVENTFD=y |
91 | CONFIG_SHMEM=y | 97 | CONFIG_SHMEM=y |
92 | CONFIG_VM_EVENT_COUNTERS=y | 98 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -130,7 +136,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
130 | # CONFIG_PPC_CELL is not set | 136 | # CONFIG_PPC_CELL is not set |
131 | # CONFIG_PPC_CELL_NATIVE is not set | 137 | # CONFIG_PPC_CELL_NATIVE is not set |
132 | # CONFIG_PQ2ADS is not set | 138 | # CONFIG_PQ2ADS is not set |
139 | # CONFIG_BAMBOO is not set | ||
133 | CONFIG_EBONY=y | 140 | CONFIG_EBONY=y |
141 | # CONFIG_SEQUOIA is not set | ||
134 | CONFIG_440GP=y | 142 | CONFIG_440GP=y |
135 | # CONFIG_MPIC is not set | 143 | # CONFIG_MPIC is not set |
136 | # CONFIG_MPIC_WEIRD is not set | 144 | # CONFIG_MPIC_WEIRD is not set |
@@ -149,6 +157,10 @@ CONFIG_440GP=y | |||
149 | # Kernel options | 157 | # Kernel options |
150 | # | 158 | # |
151 | # CONFIG_HIGHMEM is not set | 159 | # CONFIG_HIGHMEM is not set |
160 | # CONFIG_TICK_ONESHOT is not set | ||
161 | # CONFIG_NO_HZ is not set | ||
162 | # CONFIG_HIGH_RES_TIMERS is not set | ||
163 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
152 | # CONFIG_HZ_100 is not set | 164 | # CONFIG_HZ_100 is not set |
153 | CONFIG_HZ_250=y | 165 | CONFIG_HZ_250=y |
154 | # CONFIG_HZ_300 is not set | 166 | # CONFIG_HZ_300 is not set |
@@ -170,6 +182,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
170 | CONFIG_FLATMEM=y | 182 | CONFIG_FLATMEM=y |
171 | CONFIG_FLAT_NODE_MEM_MAP=y | 183 | CONFIG_FLAT_NODE_MEM_MAP=y |
172 | # CONFIG_SPARSEMEM_STATIC is not set | 184 | # CONFIG_SPARSEMEM_STATIC is not set |
185 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
173 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 186 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
174 | CONFIG_RESOURCES_64BIT=y | 187 | CONFIG_RESOURCES_64BIT=y |
175 | CONFIG_ZONE_DMA_FLAG=1 | 188 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -194,10 +207,6 @@ CONFIG_PCI_SYSCALL=y | |||
194 | CONFIG_ARCH_SUPPORTS_MSI=y | 207 | CONFIG_ARCH_SUPPORTS_MSI=y |
195 | # CONFIG_PCI_MSI is not set | 208 | # CONFIG_PCI_MSI is not set |
196 | # CONFIG_PCI_DEBUG is not set | 209 | # CONFIG_PCI_DEBUG is not set |
197 | |||
198 | # | ||
199 | # PCCARD (PCMCIA/CardBus) support | ||
200 | # | ||
201 | # CONFIG_PCCARD is not set | 210 | # CONFIG_PCCARD is not set |
202 | # CONFIG_HOTPLUG_PCI is not set | 211 | # CONFIG_HOTPLUG_PCI is not set |
203 | 212 | ||
@@ -212,7 +221,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y | |||
212 | CONFIG_HIGHMEM_START=0xfe000000 | 221 | CONFIG_HIGHMEM_START=0xfe000000 |
213 | CONFIG_LOWMEM_SIZE=0x30000000 | 222 | CONFIG_LOWMEM_SIZE=0x30000000 |
214 | CONFIG_KERNEL_START=0xc0000000 | 223 | CONFIG_KERNEL_START=0xc0000000 |
215 | CONFIG_TASK_SIZE=0x80000000 | 224 | CONFIG_TASK_SIZE=0xc0000000 |
216 | CONFIG_CONSISTENT_START=0xff100000 | 225 | CONFIG_CONSISTENT_START=0xff100000 |
217 | CONFIG_CONSISTENT_SIZE=0x00200000 | 226 | CONFIG_CONSISTENT_SIZE=0x00200000 |
218 | CONFIG_BOOT_LOAD=0x01000000 | 227 | CONFIG_BOOT_LOAD=0x01000000 |
@@ -249,6 +258,7 @@ CONFIG_IP_PNP_BOOTP=y | |||
249 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | 258 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set |
250 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | 259 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set |
251 | # CONFIG_INET_XFRM_MODE_BEET is not set | 260 | # CONFIG_INET_XFRM_MODE_BEET is not set |
261 | # CONFIG_INET_LRO is not set | ||
252 | CONFIG_INET_DIAG=y | 262 | CONFIG_INET_DIAG=y |
253 | CONFIG_INET_TCP_DIAG=y | 263 | CONFIG_INET_TCP_DIAG=y |
254 | # CONFIG_TCP_CONG_ADVANCED is not set | 264 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -306,6 +316,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
306 | # | 316 | # |
307 | # Generic Driver Options | 317 | # Generic Driver Options |
308 | # | 318 | # |
319 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
309 | CONFIG_STANDALONE=y | 320 | CONFIG_STANDALONE=y |
310 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 321 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
311 | CONFIG_FW_LOADER=y | 322 | CONFIG_FW_LOADER=y |
@@ -332,6 +343,7 @@ CONFIG_MTD_BLOCK=y | |||
332 | # CONFIG_INFTL is not set | 343 | # CONFIG_INFTL is not set |
333 | # CONFIG_RFD_FTL is not set | 344 | # CONFIG_RFD_FTL is not set |
334 | # CONFIG_SSFDC is not set | 345 | # CONFIG_SSFDC is not set |
346 | # CONFIG_MTD_OOPS is not set | ||
335 | 347 | ||
336 | # | 348 | # |
337 | # RAM/ROM/Flash chip drivers | 349 | # RAM/ROM/Flash chip drivers |
@@ -364,6 +376,7 @@ CONFIG_MTD_CFI_UTIL=y | |||
364 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | 376 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set |
365 | # CONFIG_MTD_PHYSMAP is not set | 377 | # CONFIG_MTD_PHYSMAP is not set |
366 | CONFIG_MTD_PHYSMAP_OF=y | 378 | CONFIG_MTD_PHYSMAP_OF=y |
379 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
367 | # CONFIG_MTD_PLATRAM is not set | 380 | # CONFIG_MTD_PLATRAM is not set |
368 | 381 | ||
369 | # | 382 | # |
@@ -423,10 +436,6 @@ CONFIG_MISC_DEVICES=y | |||
423 | # CONFIG_SCSI_NETLINK is not set | 436 | # CONFIG_SCSI_NETLINK is not set |
424 | # CONFIG_ATA is not set | 437 | # CONFIG_ATA is not set |
425 | # CONFIG_MD is not set | 438 | # CONFIG_MD is not set |
426 | |||
427 | # | ||
428 | # Fusion MPT device support | ||
429 | # | ||
430 | # CONFIG_FUSION is not set | 439 | # CONFIG_FUSION is not set |
431 | 440 | ||
432 | # | 441 | # |
@@ -443,12 +452,36 @@ CONFIG_NETDEVICES=y | |||
443 | # CONFIG_MACVLAN is not set | 452 | # CONFIG_MACVLAN is not set |
444 | # CONFIG_EQUALIZER is not set | 453 | # CONFIG_EQUALIZER is not set |
445 | # CONFIG_TUN is not set | 454 | # CONFIG_TUN is not set |
455 | # CONFIG_VETH is not set | ||
456 | # CONFIG_IP1000 is not set | ||
446 | # CONFIG_ARCNET is not set | 457 | # CONFIG_ARCNET is not set |
447 | # CONFIG_NET_ETHERNET is not set | 458 | # CONFIG_PHYLIB is not set |
459 | CONFIG_NET_ETHERNET=y | ||
460 | # CONFIG_MII is not set | ||
461 | # CONFIG_HAPPYMEAL is not set | ||
462 | # CONFIG_SUNGEM is not set | ||
463 | # CONFIG_CASSINI is not set | ||
464 | # CONFIG_NET_VENDOR_3COM is not set | ||
465 | # CONFIG_NET_TULIP is not set | ||
466 | # CONFIG_HP100 is not set | ||
467 | CONFIG_IBM_NEW_EMAC=y | ||
468 | CONFIG_IBM_NEW_EMAC_RXB=128 | ||
469 | CONFIG_IBM_NEW_EMAC_TXB=64 | ||
470 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
471 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
472 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
473 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
474 | CONFIG_IBM_NEW_EMAC_ZMII=y | ||
475 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
476 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
477 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
478 | # CONFIG_NET_PCI is not set | ||
479 | # CONFIG_B44 is not set | ||
448 | CONFIG_NETDEV_1000=y | 480 | CONFIG_NETDEV_1000=y |
449 | # CONFIG_ACENIC is not set | 481 | # CONFIG_ACENIC is not set |
450 | # CONFIG_DL2K is not set | 482 | # CONFIG_DL2K is not set |
451 | # CONFIG_E1000 is not set | 483 | # CONFIG_E1000 is not set |
484 | # CONFIG_E1000E is not set | ||
452 | # CONFIG_NS83820 is not set | 485 | # CONFIG_NS83820 is not set |
453 | # CONFIG_HAMACHI is not set | 486 | # CONFIG_HAMACHI is not set |
454 | # CONFIG_YELLOWFIN is not set | 487 | # CONFIG_YELLOWFIN is not set |
@@ -456,6 +489,7 @@ CONFIG_NETDEV_1000=y | |||
456 | # CONFIG_SIS190 is not set | 489 | # CONFIG_SIS190 is not set |
457 | # CONFIG_SKGE is not set | 490 | # CONFIG_SKGE is not set |
458 | # CONFIG_SKY2 is not set | 491 | # CONFIG_SKY2 is not set |
492 | # CONFIG_SK98LIN is not set | ||
459 | # CONFIG_VIA_VELOCITY is not set | 493 | # CONFIG_VIA_VELOCITY is not set |
460 | # CONFIG_TIGON3 is not set | 494 | # CONFIG_TIGON3 is not set |
461 | # CONFIG_BNX2 is not set | 495 | # CONFIG_BNX2 is not set |
@@ -464,11 +498,14 @@ CONFIG_NETDEV_1000=y | |||
464 | CONFIG_NETDEV_10000=y | 498 | CONFIG_NETDEV_10000=y |
465 | # CONFIG_CHELSIO_T1 is not set | 499 | # CONFIG_CHELSIO_T1 is not set |
466 | # CONFIG_CHELSIO_T3 is not set | 500 | # CONFIG_CHELSIO_T3 is not set |
501 | # CONFIG_IXGBE is not set | ||
467 | # CONFIG_IXGB is not set | 502 | # CONFIG_IXGB is not set |
468 | # CONFIG_S2IO is not set | 503 | # CONFIG_S2IO is not set |
469 | # CONFIG_MYRI10GE is not set | 504 | # CONFIG_MYRI10GE is not set |
470 | # CONFIG_NETXEN_NIC is not set | 505 | # CONFIG_NETXEN_NIC is not set |
506 | # CONFIG_NIU is not set | ||
471 | # CONFIG_MLX4_CORE is not set | 507 | # CONFIG_MLX4_CORE is not set |
508 | # CONFIG_TEHUTI is not set | ||
472 | # CONFIG_TR is not set | 509 | # CONFIG_TR is not set |
473 | 510 | ||
474 | # | 511 | # |
@@ -537,8 +574,6 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
537 | # CONFIG_GEN_RTC is not set | 574 | # CONFIG_GEN_RTC is not set |
538 | # CONFIG_R3964 is not set | 575 | # CONFIG_R3964 is not set |
539 | # CONFIG_APPLICOM is not set | 576 | # CONFIG_APPLICOM is not set |
540 | # CONFIG_AGP is not set | ||
541 | # CONFIG_DRM is not set | ||
542 | # CONFIG_RAW_DRIVER is not set | 577 | # CONFIG_RAW_DRIVER is not set |
543 | # CONFIG_TCG_TPM is not set | 578 | # CONFIG_TCG_TPM is not set |
544 | CONFIG_DEVPORT=y | 579 | CONFIG_DEVPORT=y |
@@ -554,6 +589,12 @@ CONFIG_DEVPORT=y | |||
554 | # CONFIG_HWMON is not set | 589 | # CONFIG_HWMON is not set |
555 | 590 | ||
556 | # | 591 | # |
592 | # Sonics Silicon Backplane | ||
593 | # | ||
594 | CONFIG_SSB_POSSIBLE=y | ||
595 | # CONFIG_SSB is not set | ||
596 | |||
597 | # | ||
557 | # Multifunction device drivers | 598 | # Multifunction device drivers |
558 | # | 599 | # |
559 | # CONFIG_MFD_SM501 is not set | 600 | # CONFIG_MFD_SM501 is not set |
@@ -568,16 +609,17 @@ CONFIG_DEVPORT=y | |||
568 | # | 609 | # |
569 | # Graphics support | 610 | # Graphics support |
570 | # | 611 | # |
612 | # CONFIG_AGP is not set | ||
613 | # CONFIG_DRM is not set | ||
614 | # CONFIG_VGASTATE is not set | ||
615 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
616 | # CONFIG_FB is not set | ||
571 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 617 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
572 | 618 | ||
573 | # | 619 | # |
574 | # Display device support | 620 | # Display device support |
575 | # | 621 | # |
576 | # CONFIG_DISPLAY_SUPPORT is not set | 622 | # CONFIG_DISPLAY_SUPPORT is not set |
577 | # CONFIG_VGASTATE is not set | ||
578 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
579 | # CONFIG_FB is not set | ||
580 | # CONFIG_FB_IBM_GXT4500 is not set | ||
581 | 623 | ||
582 | # | 624 | # |
583 | # Sound | 625 | # Sound |
@@ -604,19 +646,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
604 | # CONFIG_RTC_CLASS is not set | 646 | # CONFIG_RTC_CLASS is not set |
605 | 647 | ||
606 | # | 648 | # |
607 | # DMA Engine support | ||
608 | # | ||
609 | # CONFIG_DMA_ENGINE is not set | ||
610 | |||
611 | # | ||
612 | # DMA Clients | ||
613 | # | ||
614 | |||
615 | # | ||
616 | # DMA Devices | ||
617 | # | ||
618 | |||
619 | # | ||
620 | # Userspace I/O | 649 | # Userspace I/O |
621 | # | 650 | # |
622 | # CONFIG_UIO is not set | 651 | # CONFIG_UIO is not set |
@@ -668,7 +697,6 @@ CONFIG_SYSFS=y | |||
668 | CONFIG_TMPFS=y | 697 | CONFIG_TMPFS=y |
669 | # CONFIG_TMPFS_POSIX_ACL is not set | 698 | # CONFIG_TMPFS_POSIX_ACL is not set |
670 | # CONFIG_HUGETLB_PAGE is not set | 699 | # CONFIG_HUGETLB_PAGE is not set |
671 | CONFIG_RAMFS=y | ||
672 | # CONFIG_CONFIGFS_FS is not set | 700 | # CONFIG_CONFIGFS_FS is not set |
673 | 701 | ||
674 | # | 702 | # |
@@ -684,10 +712,12 @@ CONFIG_RAMFS=y | |||
684 | CONFIG_JFFS2_FS=y | 712 | CONFIG_JFFS2_FS=y |
685 | CONFIG_JFFS2_FS_DEBUG=0 | 713 | CONFIG_JFFS2_FS_DEBUG=0 |
686 | CONFIG_JFFS2_FS_WRITEBUFFER=y | 714 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
715 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
687 | # CONFIG_JFFS2_SUMMARY is not set | 716 | # CONFIG_JFFS2_SUMMARY is not set |
688 | # CONFIG_JFFS2_FS_XATTR is not set | 717 | # CONFIG_JFFS2_FS_XATTR is not set |
689 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | 718 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set |
690 | CONFIG_JFFS2_ZLIB=y | 719 | CONFIG_JFFS2_ZLIB=y |
720 | # CONFIG_JFFS2_LZO is not set | ||
691 | CONFIG_JFFS2_RTIME=y | 721 | CONFIG_JFFS2_RTIME=y |
692 | # CONFIG_JFFS2_RUBIN is not set | 722 | # CONFIG_JFFS2_RUBIN is not set |
693 | CONFIG_CRAMFS=y | 723 | CONFIG_CRAMFS=y |
@@ -696,10 +726,7 @@ CONFIG_CRAMFS=y | |||
696 | # CONFIG_QNX4FS_FS is not set | 726 | # CONFIG_QNX4FS_FS is not set |
697 | # CONFIG_SYSV_FS is not set | 727 | # CONFIG_SYSV_FS is not set |
698 | # CONFIG_UFS_FS is not set | 728 | # CONFIG_UFS_FS is not set |
699 | 729 | CONFIG_NETWORK_FILESYSTEMS=y | |
700 | # | ||
701 | # Network File Systems | ||
702 | # | ||
703 | CONFIG_NFS_FS=y | 730 | CONFIG_NFS_FS=y |
704 | CONFIG_NFS_V3=y | 731 | CONFIG_NFS_V3=y |
705 | # CONFIG_NFS_V3_ACL is not set | 732 | # CONFIG_NFS_V3_ACL is not set |
@@ -725,15 +752,7 @@ CONFIG_SUNRPC=y | |||
725 | # | 752 | # |
726 | # CONFIG_PARTITION_ADVANCED is not set | 753 | # CONFIG_PARTITION_ADVANCED is not set |
727 | CONFIG_MSDOS_PARTITION=y | 754 | CONFIG_MSDOS_PARTITION=y |
728 | |||
729 | # | ||
730 | # Native Language Support | ||
731 | # | ||
732 | # CONFIG_NLS is not set | 755 | # CONFIG_NLS is not set |
733 | |||
734 | # | ||
735 | # Distributed Lock Manager | ||
736 | # | ||
737 | # CONFIG_DLM is not set | 756 | # CONFIG_DLM is not set |
738 | # CONFIG_UCC_SLOW is not set | 757 | # CONFIG_UCC_SLOW is not set |
739 | 758 | ||
@@ -787,6 +806,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
787 | # CONFIG_DEBUG_VM is not set | 806 | # CONFIG_DEBUG_VM is not set |
788 | # CONFIG_DEBUG_LIST is not set | 807 | # CONFIG_DEBUG_LIST is not set |
789 | CONFIG_FORCED_INLINING=y | 808 | CONFIG_FORCED_INLINING=y |
809 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
790 | # CONFIG_RCU_TORTURE_TEST is not set | 810 | # CONFIG_RCU_TORTURE_TEST is not set |
791 | # CONFIG_FAULT_INJECTION is not set | 811 | # CONFIG_FAULT_INJECTION is not set |
792 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 812 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -801,6 +821,7 @@ CONFIG_FORCED_INLINING=y | |||
801 | # | 821 | # |
802 | # CONFIG_KEYS is not set | 822 | # CONFIG_KEYS is not set |
803 | # CONFIG_SECURITY is not set | 823 | # CONFIG_SECURITY is not set |
824 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
804 | CONFIG_CRYPTO=y | 825 | CONFIG_CRYPTO=y |
805 | CONFIG_CRYPTO_ALGAPI=y | 826 | CONFIG_CRYPTO_ALGAPI=y |
806 | CONFIG_CRYPTO_BLKCIPHER=y | 827 | CONFIG_CRYPTO_BLKCIPHER=y |
@@ -820,6 +841,7 @@ CONFIG_CRYPTO_ECB=y | |||
820 | CONFIG_CRYPTO_CBC=y | 841 | CONFIG_CRYPTO_CBC=y |
821 | CONFIG_CRYPTO_PCBC=y | 842 | CONFIG_CRYPTO_PCBC=y |
822 | # CONFIG_CRYPTO_LRW is not set | 843 | # CONFIG_CRYPTO_LRW is not set |
844 | # CONFIG_CRYPTO_XTS is not set | ||
823 | # CONFIG_CRYPTO_CRYPTD is not set | 845 | # CONFIG_CRYPTO_CRYPTD is not set |
824 | CONFIG_CRYPTO_DES=y | 846 | CONFIG_CRYPTO_DES=y |
825 | # CONFIG_CRYPTO_FCRYPT is not set | 847 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -833,9 +855,12 @@ CONFIG_CRYPTO_DES=y | |||
833 | # CONFIG_CRYPTO_ARC4 is not set | 855 | # CONFIG_CRYPTO_ARC4 is not set |
834 | # CONFIG_CRYPTO_KHAZAD is not set | 856 | # CONFIG_CRYPTO_KHAZAD is not set |
835 | # CONFIG_CRYPTO_ANUBIS is not set | 857 | # CONFIG_CRYPTO_ANUBIS is not set |
858 | # CONFIG_CRYPTO_SEED is not set | ||
836 | # CONFIG_CRYPTO_DEFLATE is not set | 859 | # CONFIG_CRYPTO_DEFLATE is not set |
837 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 860 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
838 | # CONFIG_CRYPTO_CRC32C is not set | 861 | # CONFIG_CRYPTO_CRC32C is not set |
839 | # CONFIG_CRYPTO_CAMELLIA is not set | 862 | # CONFIG_CRYPTO_CAMELLIA is not set |
840 | # CONFIG_CRYPTO_TEST is not set | 863 | # CONFIG_CRYPTO_TEST is not set |
864 | # CONFIG_CRYPTO_AUTHENC is not set | ||
841 | # CONFIG_CRYPTO_HW is not set | 865 | # CONFIG_CRYPTO_HW is not set |
866 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/configs/walnut_defconfig b/arch/powerpc/configs/walnut_defconfig index 7724292cc06d..02896ecba490 100644 --- a/arch/powerpc/configs/walnut_defconfig +++ b/arch/powerpc/configs/walnut_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.23-rc4 | 3 | # Linux kernel version: 2.6.23 |
4 | # Wed Sep 5 12:06:37 2007 | 4 | # Thu Oct 18 12:54:18 2007 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -18,8 +18,13 @@ CONFIG_4xx=y | |||
18 | # CONFIG_PPC_MM_SLICES is not set | 18 | # CONFIG_PPC_MM_SLICES is not set |
19 | CONFIG_NOT_COHERENT_CACHE=y | 19 | CONFIG_NOT_COHERENT_CACHE=y |
20 | CONFIG_PPC32=y | 20 | CONFIG_PPC32=y |
21 | CONFIG_WORD_SIZE=32 | ||
21 | CONFIG_PPC_MERGE=y | 22 | CONFIG_PPC_MERGE=y |
22 | CONFIG_MMU=y | 23 | CONFIG_MMU=y |
24 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
25 | CONFIG_GENERIC_TIME=y | ||
26 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
27 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
23 | CONFIG_GENERIC_HARDIRQS=y | 28 | CONFIG_GENERIC_HARDIRQS=y |
24 | CONFIG_IRQ_PER_CPU=y | 29 | CONFIG_IRQ_PER_CPU=y |
25 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 30 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
@@ -63,6 +68,8 @@ CONFIG_POSIX_MQUEUE=y | |||
63 | # CONFIG_AUDIT is not set | 68 | # CONFIG_AUDIT is not set |
64 | # CONFIG_IKCONFIG is not set | 69 | # CONFIG_IKCONFIG is not set |
65 | CONFIG_LOG_BUF_SHIFT=14 | 70 | CONFIG_LOG_BUF_SHIFT=14 |
71 | CONFIG_FAIR_GROUP_SCHED=y | ||
72 | CONFIG_FAIR_USER_SCHED=y | ||
66 | CONFIG_SYSFS_DEPRECATED=y | 73 | CONFIG_SYSFS_DEPRECATED=y |
67 | # CONFIG_RELAY is not set | 74 | # CONFIG_RELAY is not set |
68 | CONFIG_BLK_DEV_INITRD=y | 75 | CONFIG_BLK_DEV_INITRD=y |
@@ -83,7 +90,6 @@ CONFIG_FUTEX=y | |||
83 | CONFIG_ANON_INODES=y | 90 | CONFIG_ANON_INODES=y |
84 | CONFIG_EPOLL=y | 91 | CONFIG_EPOLL=y |
85 | CONFIG_SIGNALFD=y | 92 | CONFIG_SIGNALFD=y |
86 | CONFIG_TIMERFD=y | ||
87 | CONFIG_EVENTFD=y | 93 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 94 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 95 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -127,7 +133,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
127 | # CONFIG_PPC_CELL is not set | 133 | # CONFIG_PPC_CELL is not set |
128 | # CONFIG_PPC_CELL_NATIVE is not set | 134 | # CONFIG_PPC_CELL_NATIVE is not set |
129 | # CONFIG_PQ2ADS is not set | 135 | # CONFIG_PQ2ADS is not set |
136 | # CONFIG_KILAUEA is not set | ||
130 | CONFIG_WALNUT=y | 137 | CONFIG_WALNUT=y |
138 | # CONFIG_XILINX_VIRTEX_GENERIC_BOARD is not set | ||
131 | CONFIG_405GP=y | 139 | CONFIG_405GP=y |
132 | CONFIG_IBM405_ERR77=y | 140 | CONFIG_IBM405_ERR77=y |
133 | CONFIG_IBM405_ERR51=y | 141 | CONFIG_IBM405_ERR51=y |
@@ -148,6 +156,10 @@ CONFIG_IBM405_ERR51=y | |||
148 | # Kernel options | 156 | # Kernel options |
149 | # | 157 | # |
150 | # CONFIG_HIGHMEM is not set | 158 | # CONFIG_HIGHMEM is not set |
159 | # CONFIG_TICK_ONESHOT is not set | ||
160 | # CONFIG_NO_HZ is not set | ||
161 | # CONFIG_HIGH_RES_TIMERS is not set | ||
162 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
151 | # CONFIG_HZ_100 is not set | 163 | # CONFIG_HZ_100 is not set |
152 | CONFIG_HZ_250=y | 164 | CONFIG_HZ_250=y |
153 | # CONFIG_HZ_300 is not set | 165 | # CONFIG_HZ_300 is not set |
@@ -169,6 +181,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
169 | CONFIG_FLATMEM=y | 181 | CONFIG_FLATMEM=y |
170 | CONFIG_FLAT_NODE_MEM_MAP=y | 182 | CONFIG_FLAT_NODE_MEM_MAP=y |
171 | # CONFIG_SPARSEMEM_STATIC is not set | 183 | # CONFIG_SPARSEMEM_STATIC is not set |
184 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
172 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 185 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
173 | CONFIG_RESOURCES_64BIT=y | 186 | CONFIG_RESOURCES_64BIT=y |
174 | CONFIG_ZONE_DMA_FLAG=1 | 187 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -177,6 +190,8 @@ CONFIG_VIRT_TO_BUS=y | |||
177 | CONFIG_PROC_DEVICETREE=y | 190 | CONFIG_PROC_DEVICETREE=y |
178 | # CONFIG_CMDLINE_BOOL is not set | 191 | # CONFIG_CMDLINE_BOOL is not set |
179 | # CONFIG_PM is not set | 192 | # CONFIG_PM is not set |
193 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
194 | CONFIG_HIBERNATION_UP_POSSIBLE=y | ||
180 | CONFIG_SECCOMP=y | 195 | CONFIG_SECCOMP=y |
181 | CONFIG_WANT_DEVICE_TREE=y | 196 | CONFIG_WANT_DEVICE_TREE=y |
182 | CONFIG_DEVICE_TREE="walnut.dts" | 197 | CONFIG_DEVICE_TREE="walnut.dts" |
@@ -190,10 +205,6 @@ CONFIG_ZONE_DMA=y | |||
190 | # CONFIG_PCI_DOMAINS is not set | 205 | # CONFIG_PCI_DOMAINS is not set |
191 | # CONFIG_PCI_SYSCALL is not set | 206 | # CONFIG_PCI_SYSCALL is not set |
192 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 207 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
193 | |||
194 | # | ||
195 | # PCCARD (PCMCIA/CardBus) support | ||
196 | # | ||
197 | # CONFIG_PCCARD is not set | 208 | # CONFIG_PCCARD is not set |
198 | 209 | ||
199 | # | 210 | # |
@@ -207,7 +218,7 @@ CONFIG_ZONE_DMA=y | |||
207 | CONFIG_HIGHMEM_START=0xfe000000 | 218 | CONFIG_HIGHMEM_START=0xfe000000 |
208 | CONFIG_LOWMEM_SIZE=0x30000000 | 219 | CONFIG_LOWMEM_SIZE=0x30000000 |
209 | CONFIG_KERNEL_START=0xc0000000 | 220 | CONFIG_KERNEL_START=0xc0000000 |
210 | CONFIG_TASK_SIZE=0x80000000 | 221 | CONFIG_TASK_SIZE=0xc0000000 |
211 | CONFIG_CONSISTENT_START=0xff100000 | 222 | CONFIG_CONSISTENT_START=0xff100000 |
212 | CONFIG_CONSISTENT_SIZE=0x00200000 | 223 | CONFIG_CONSISTENT_SIZE=0x00200000 |
213 | CONFIG_BOOT_LOAD=0x00400000 | 224 | CONFIG_BOOT_LOAD=0x00400000 |
@@ -244,6 +255,7 @@ CONFIG_IP_PNP_BOOTP=y | |||
244 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | 255 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set |
245 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | 256 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set |
246 | # CONFIG_INET_XFRM_MODE_BEET is not set | 257 | # CONFIG_INET_XFRM_MODE_BEET is not set |
258 | # CONFIG_INET_LRO is not set | ||
247 | CONFIG_INET_DIAG=y | 259 | CONFIG_INET_DIAG=y |
248 | CONFIG_INET_TCP_DIAG=y | 260 | CONFIG_INET_TCP_DIAG=y |
249 | # CONFIG_TCP_CONG_ADVANCED is not set | 261 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -301,6 +313,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
301 | # | 313 | # |
302 | # Generic Driver Options | 314 | # Generic Driver Options |
303 | # | 315 | # |
316 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
304 | CONFIG_STANDALONE=y | 317 | CONFIG_STANDALONE=y |
305 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 318 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
306 | CONFIG_FW_LOADER=y | 319 | CONFIG_FW_LOADER=y |
@@ -328,6 +341,7 @@ CONFIG_MTD_BLOCK=m | |||
328 | # CONFIG_INFTL is not set | 341 | # CONFIG_INFTL is not set |
329 | # CONFIG_RFD_FTL is not set | 342 | # CONFIG_RFD_FTL is not set |
330 | # CONFIG_SSFDC is not set | 343 | # CONFIG_SSFDC is not set |
344 | # CONFIG_MTD_OOPS is not set | ||
331 | 345 | ||
332 | # | 346 | # |
333 | # RAM/ROM/Flash chip drivers | 347 | # RAM/ROM/Flash chip drivers |
@@ -360,7 +374,6 @@ CONFIG_MTD_CFI_UTIL=y | |||
360 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | 374 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set |
361 | # CONFIG_MTD_PHYSMAP is not set | 375 | # CONFIG_MTD_PHYSMAP is not set |
362 | CONFIG_MTD_PHYSMAP_OF=y | 376 | CONFIG_MTD_PHYSMAP_OF=y |
363 | # CONFIG_MTD_WALNUT is not set | ||
364 | # CONFIG_MTD_PLATRAM is not set | 377 | # CONFIG_MTD_PLATRAM is not set |
365 | 378 | ||
366 | # | 379 | # |
@@ -419,7 +432,22 @@ CONFIG_NETDEVICES=y | |||
419 | # CONFIG_MACVLAN is not set | 432 | # CONFIG_MACVLAN is not set |
420 | # CONFIG_EQUALIZER is not set | 433 | # CONFIG_EQUALIZER is not set |
421 | # CONFIG_TUN is not set | 434 | # CONFIG_TUN is not set |
422 | # CONFIG_NET_ETHERNET is not set | 435 | # CONFIG_VETH is not set |
436 | # CONFIG_PHYLIB is not set | ||
437 | CONFIG_NET_ETHERNET=y | ||
438 | # CONFIG_MII is not set | ||
439 | CONFIG_IBM_NEW_EMAC=y | ||
440 | CONFIG_IBM_NEW_EMAC_RXB=128 | ||
441 | CONFIG_IBM_NEW_EMAC_TXB=64 | ||
442 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
443 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
444 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
445 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
446 | CONFIG_IBM_NEW_EMAC_ZMII=y | ||
447 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
448 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
449 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
450 | # CONFIG_B44 is not set | ||
423 | CONFIG_NETDEV_1000=y | 451 | CONFIG_NETDEV_1000=y |
424 | CONFIG_NETDEV_10000=y | 452 | CONFIG_NETDEV_10000=y |
425 | 453 | ||
@@ -498,6 +526,12 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
498 | # CONFIG_HWMON is not set | 526 | # CONFIG_HWMON is not set |
499 | 527 | ||
500 | # | 528 | # |
529 | # Sonics Silicon Backplane | ||
530 | # | ||
531 | CONFIG_SSB_POSSIBLE=y | ||
532 | # CONFIG_SSB is not set | ||
533 | |||
534 | # | ||
501 | # Multifunction device drivers | 535 | # Multifunction device drivers |
502 | # | 536 | # |
503 | # CONFIG_MFD_SM501 is not set | 537 | # CONFIG_MFD_SM501 is not set |
@@ -512,16 +546,15 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
512 | # | 546 | # |
513 | # Graphics support | 547 | # Graphics support |
514 | # | 548 | # |
549 | # CONFIG_VGASTATE is not set | ||
550 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
551 | # CONFIG_FB is not set | ||
515 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 552 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
516 | 553 | ||
517 | # | 554 | # |
518 | # Display device support | 555 | # Display device support |
519 | # | 556 | # |
520 | # CONFIG_DISPLAY_SUPPORT is not set | 557 | # CONFIG_DISPLAY_SUPPORT is not set |
521 | # CONFIG_VGASTATE is not set | ||
522 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
523 | # CONFIG_FB is not set | ||
524 | # CONFIG_FB_IBM_GXT4500 is not set | ||
525 | 558 | ||
526 | # | 559 | # |
527 | # Sound | 560 | # Sound |
@@ -546,19 +579,6 @@ CONFIG_USB_SUPPORT=y | |||
546 | # CONFIG_RTC_CLASS is not set | 579 | # CONFIG_RTC_CLASS is not set |
547 | 580 | ||
548 | # | 581 | # |
549 | # DMA Engine support | ||
550 | # | ||
551 | # CONFIG_DMA_ENGINE is not set | ||
552 | |||
553 | # | ||
554 | # DMA Clients | ||
555 | # | ||
556 | |||
557 | # | ||
558 | # DMA Devices | ||
559 | # | ||
560 | |||
561 | # | ||
562 | # Userspace I/O | 582 | # Userspace I/O |
563 | # | 583 | # |
564 | # CONFIG_UIO is not set | 584 | # CONFIG_UIO is not set |
@@ -610,7 +630,6 @@ CONFIG_SYSFS=y | |||
610 | CONFIG_TMPFS=y | 630 | CONFIG_TMPFS=y |
611 | # CONFIG_TMPFS_POSIX_ACL is not set | 631 | # CONFIG_TMPFS_POSIX_ACL is not set |
612 | # CONFIG_HUGETLB_PAGE is not set | 632 | # CONFIG_HUGETLB_PAGE is not set |
613 | CONFIG_RAMFS=y | ||
614 | # CONFIG_CONFIGFS_FS is not set | 633 | # CONFIG_CONFIGFS_FS is not set |
615 | 634 | ||
616 | # | 635 | # |
@@ -630,10 +649,7 @@ CONFIG_CRAMFS=y | |||
630 | # CONFIG_QNX4FS_FS is not set | 649 | # CONFIG_QNX4FS_FS is not set |
631 | # CONFIG_SYSV_FS is not set | 650 | # CONFIG_SYSV_FS is not set |
632 | # CONFIG_UFS_FS is not set | 651 | # CONFIG_UFS_FS is not set |
633 | 652 | CONFIG_NETWORK_FILESYSTEMS=y | |
634 | # | ||
635 | # Network File Systems | ||
636 | # | ||
637 | CONFIG_NFS_FS=y | 653 | CONFIG_NFS_FS=y |
638 | CONFIG_NFS_V3=y | 654 | CONFIG_NFS_V3=y |
639 | # CONFIG_NFS_V3_ACL is not set | 655 | # CONFIG_NFS_V3_ACL is not set |
@@ -659,15 +675,7 @@ CONFIG_SUNRPC=y | |||
659 | # | 675 | # |
660 | # CONFIG_PARTITION_ADVANCED is not set | 676 | # CONFIG_PARTITION_ADVANCED is not set |
661 | CONFIG_MSDOS_PARTITION=y | 677 | CONFIG_MSDOS_PARTITION=y |
662 | |||
663 | # | ||
664 | # Native Language Support | ||
665 | # | ||
666 | # CONFIG_NLS is not set | 678 | # CONFIG_NLS is not set |
667 | |||
668 | # | ||
669 | # Distributed Lock Manager | ||
670 | # | ||
671 | # CONFIG_DLM is not set | 679 | # CONFIG_DLM is not set |
672 | # CONFIG_UCC_SLOW is not set | 680 | # CONFIG_UCC_SLOW is not set |
673 | 681 | ||
@@ -720,6 +728,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
720 | # CONFIG_DEBUG_VM is not set | 728 | # CONFIG_DEBUG_VM is not set |
721 | # CONFIG_DEBUG_LIST is not set | 729 | # CONFIG_DEBUG_LIST is not set |
722 | CONFIG_FORCED_INLINING=y | 730 | CONFIG_FORCED_INLINING=y |
731 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
723 | # CONFIG_RCU_TORTURE_TEST is not set | 732 | # CONFIG_RCU_TORTURE_TEST is not set |
724 | # CONFIG_FAULT_INJECTION is not set | 733 | # CONFIG_FAULT_INJECTION is not set |
725 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 734 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -734,6 +743,7 @@ CONFIG_FORCED_INLINING=y | |||
734 | # | 743 | # |
735 | # CONFIG_KEYS is not set | 744 | # CONFIG_KEYS is not set |
736 | # CONFIG_SECURITY is not set | 745 | # CONFIG_SECURITY is not set |
746 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
737 | CONFIG_CRYPTO=y | 747 | CONFIG_CRYPTO=y |
738 | CONFIG_CRYPTO_ALGAPI=y | 748 | CONFIG_CRYPTO_ALGAPI=y |
739 | CONFIG_CRYPTO_BLKCIPHER=y | 749 | CONFIG_CRYPTO_BLKCIPHER=y |
@@ -753,6 +763,7 @@ CONFIG_CRYPTO_ECB=y | |||
753 | CONFIG_CRYPTO_CBC=y | 763 | CONFIG_CRYPTO_CBC=y |
754 | CONFIG_CRYPTO_PCBC=y | 764 | CONFIG_CRYPTO_PCBC=y |
755 | # CONFIG_CRYPTO_LRW is not set | 765 | # CONFIG_CRYPTO_LRW is not set |
766 | # CONFIG_CRYPTO_XTS is not set | ||
756 | # CONFIG_CRYPTO_CRYPTD is not set | 767 | # CONFIG_CRYPTO_CRYPTD is not set |
757 | CONFIG_CRYPTO_DES=y | 768 | CONFIG_CRYPTO_DES=y |
758 | # CONFIG_CRYPTO_FCRYPT is not set | 769 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -766,9 +777,12 @@ CONFIG_CRYPTO_DES=y | |||
766 | # CONFIG_CRYPTO_ARC4 is not set | 777 | # CONFIG_CRYPTO_ARC4 is not set |
767 | # CONFIG_CRYPTO_KHAZAD is not set | 778 | # CONFIG_CRYPTO_KHAZAD is not set |
768 | # CONFIG_CRYPTO_ANUBIS is not set | 779 | # CONFIG_CRYPTO_ANUBIS is not set |
780 | # CONFIG_CRYPTO_SEED is not set | ||
769 | # CONFIG_CRYPTO_DEFLATE is not set | 781 | # CONFIG_CRYPTO_DEFLATE is not set |
770 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 782 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
771 | # CONFIG_CRYPTO_CRC32C is not set | 783 | # CONFIG_CRYPTO_CRC32C is not set |
772 | # CONFIG_CRYPTO_CAMELLIA is not set | 784 | # CONFIG_CRYPTO_CAMELLIA is not set |
773 | # CONFIG_CRYPTO_TEST is not set | 785 | # CONFIG_CRYPTO_TEST is not set |
786 | # CONFIG_CRYPTO_AUTHENC is not set | ||
774 | CONFIG_CRYPTO_HW=y | 787 | CONFIG_CRYPTO_HW=y |
788 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig index 47b3b0a3864a..8f6699fcc145 100644 --- a/arch/powerpc/platforms/40x/Kconfig +++ b/arch/powerpc/platforms/40x/Kconfig | |||
@@ -100,6 +100,7 @@ config 405GP | |||
100 | bool | 100 | bool |
101 | select IBM405_ERR77 | 101 | select IBM405_ERR77 |
102 | select IBM405_ERR51 | 102 | select IBM405_ERR51 |
103 | select IBM_NEW_EMAC_ZMII | ||
103 | 104 | ||
104 | config 405EP | 105 | config 405EP |
105 | bool | 106 | bool |
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig index 51f3ea40a285..8390cc164135 100644 --- a/arch/powerpc/platforms/44x/Kconfig +++ b/arch/powerpc/platforms/44x/Kconfig | |||
@@ -43,14 +43,14 @@ config 440EP | |||
43 | bool | 43 | bool |
44 | select PPC_FPU | 44 | select PPC_FPU |
45 | select IBM440EP_ERR42 | 45 | select IBM440EP_ERR42 |
46 | # select IBM_NEW_EMAC_ZMII | 46 | select IBM_NEW_EMAC_ZMII |
47 | 47 | ||
48 | config 440EPX | 48 | config 440EPX |
49 | bool | 49 | bool |
50 | select PPC_FPU | 50 | select PPC_FPU |
51 | # Disabled until the new EMAC Driver is merged. | 51 | select IBM_NEW_EMAC_EMAC4 |
52 | # select IBM_NEW_EMAC_EMAC4 | 52 | select IBM_NEW_EMAC_RGMII |
53 | # select IBM_NEW_EMAC_ZMII | 53 | select IBM_NEW_EMAC_ZMII |
54 | 54 | ||
55 | config 440GP | 55 | config 440GP |
56 | bool | 56 | bool |
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype index 3c7325ec36ec..99684ea606af 100644 --- a/arch/powerpc/platforms/Kconfig.cputype +++ b/arch/powerpc/platforms/Kconfig.cputype | |||
@@ -48,6 +48,7 @@ config 44x | |||
48 | bool "AMCC 44x" | 48 | bool "AMCC 44x" |
49 | select PPC_DCR_NATIVE | 49 | select PPC_DCR_NATIVE |
50 | select WANT_DEVICE_TREE | 50 | select WANT_DEVICE_TREE |
51 | select PPC_UDBG_16550 | ||
51 | 52 | ||
52 | config E200 | 53 | config E200 |
53 | bool "Freescale e200" | 54 | bool "Freescale e200" |
diff --git a/arch/sparc64/kernel/iommu_common.c b/arch/sparc64/kernel/iommu_common.c index 78e8277df655..b70324e0d83d 100644 --- a/arch/sparc64/kernel/iommu_common.c +++ b/arch/sparc64/kernel/iommu_common.c | |||
@@ -233,6 +233,11 @@ unsigned long prepare_sg(struct scatterlist *sg, int nents) | |||
233 | dma_sg->dma_address = dent_addr; | 233 | dma_sg->dma_address = dent_addr; |
234 | dma_sg->dma_length = dent_len; | 234 | dma_sg->dma_length = dent_len; |
235 | 235 | ||
236 | if (dma_sg != sg) { | ||
237 | dma_sg = next_sg(dma_sg); | ||
238 | dma_sg->dma_length = 0; | ||
239 | } | ||
240 | |||
236 | return ((unsigned long) dent_addr + | 241 | return ((unsigned long) dent_addr + |
237 | (unsigned long) dent_len + | 242 | (unsigned long) dent_len + |
238 | (IO_PAGE_SIZE - 1UL)) >> IO_PAGE_SHIFT; | 243 | (IO_PAGE_SIZE - 1UL)) >> IO_PAGE_SHIFT; |
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c index 61c2e396f2fa..de5ba479c224 100644 --- a/block/ll_rw_blk.c +++ b/block/ll_rw_blk.c | |||
@@ -1351,11 +1351,21 @@ int blk_rq_map_sg(struct request_queue *q, struct request *rq, | |||
1351 | new_segment: | 1351 | new_segment: |
1352 | if (!sg) | 1352 | if (!sg) |
1353 | sg = sglist; | 1353 | sg = sglist; |
1354 | else | 1354 | else { |
1355 | /* | ||
1356 | * If the driver previously mapped a shorter | ||
1357 | * list, we could see a termination bit | ||
1358 | * prematurely unless it fully inits the sg | ||
1359 | * table on each mapping. We KNOW that there | ||
1360 | * must be more entries here or the driver | ||
1361 | * would be buggy, so force clear the | ||
1362 | * termination bit to avoid doing a full | ||
1363 | * sg_init_table() in drivers for each command. | ||
1364 | */ | ||
1365 | sg->page_link &= ~0x02; | ||
1355 | sg = sg_next(sg); | 1366 | sg = sg_next(sg); |
1367 | } | ||
1356 | 1368 | ||
1357 | sg_dma_len(sg) = 0; | ||
1358 | sg_dma_address(sg) = 0; | ||
1359 | sg_set_page(sg, bvec->bv_page); | 1369 | sg_set_page(sg, bvec->bv_page); |
1360 | sg->length = nbytes; | 1370 | sg->length = nbytes; |
1361 | sg->offset = bvec->bv_offset; | 1371 | sg->offset = bvec->bv_offset; |
diff --git a/drivers/char/cyclades.c b/drivers/char/cyclades.c index d1bd0f08a331..e4f579c3e245 100644 --- a/drivers/char/cyclades.c +++ b/drivers/char/cyclades.c | |||
@@ -1602,8 +1602,8 @@ static void cyz_handle_tx(struct cyclades_port *info, | |||
1602 | info->icount.tx++; | 1602 | info->icount.tx++; |
1603 | } | 1603 | } |
1604 | #endif | 1604 | #endif |
1605 | ztxdone: | ||
1606 | tty_wakeup(tty); | 1605 | tty_wakeup(tty); |
1606 | ztxdone: | ||
1607 | /* Update tx_put */ | 1607 | /* Update tx_put */ |
1608 | cy_writel(&buf_ctrl->tx_put, tx_put); | 1608 | cy_writel(&buf_ctrl->tx_put, tx_put); |
1609 | } | 1609 | } |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index ec55a173c08a..6a6f2e066b46 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <linux/spinlock.h> | 47 | #include <linux/spinlock.h> |
48 | #include <linux/kmod.h> | 48 | #include <linux/kmod.h> |
49 | #include <linux/pci.h> | 49 | #include <linux/pci.h> |
50 | #include <linux/scatterlist.h> | ||
50 | 51 | ||
51 | #include <asm/byteorder.h> | 52 | #include <asm/byteorder.h> |
52 | #include <asm/irq.h> | 53 | #include <asm/irq.h> |
diff --git a/drivers/infiniband/hw/ehca/ehca_mrmw.c b/drivers/infiniband/hw/ehca/ehca_mrmw.c index da88738265ed..ead7230d7738 100644 --- a/drivers/infiniband/hw/ehca/ehca_mrmw.c +++ b/drivers/infiniband/hw/ehca/ehca_mrmw.c | |||
@@ -1776,7 +1776,7 @@ static int ehca_set_pagebuf_user1(struct ehca_mr_pginfo *pginfo, | |||
1776 | list_for_each_entry_continue( | 1776 | list_for_each_entry_continue( |
1777 | chunk, (&(pginfo->u.usr.region->chunk_list)), list) { | 1777 | chunk, (&(pginfo->u.usr.region->chunk_list)), list) { |
1778 | for (i = pginfo->u.usr.next_nmap; i < chunk->nmap; ) { | 1778 | for (i = pginfo->u.usr.next_nmap; i < chunk->nmap; ) { |
1779 | pgaddr = page_to_pfn(chunk->page_list[i].page) | 1779 | pgaddr = page_to_pfn(sg_page(&chunk->page_list[i])) |
1780 | << PAGE_SHIFT ; | 1780 | << PAGE_SHIFT ; |
1781 | *kpage = phys_to_abs(pgaddr + | 1781 | *kpage = phys_to_abs(pgaddr + |
1782 | (pginfo->next_hwpage * | 1782 | (pginfo->next_hwpage * |
@@ -1832,7 +1832,7 @@ static int ehca_check_kpages_per_ate(struct scatterlist *page_list, | |||
1832 | { | 1832 | { |
1833 | int t; | 1833 | int t; |
1834 | for (t = start_idx; t <= end_idx; t++) { | 1834 | for (t = start_idx; t <= end_idx; t++) { |
1835 | u64 pgaddr = page_to_pfn(page_list[t].page) << PAGE_SHIFT; | 1835 | u64 pgaddr = page_to_pfn(sg_page(&page_list[t])) << PAGE_SHIFT; |
1836 | ehca_gen_dbg("chunk_page=%lx value=%016lx", pgaddr, | 1836 | ehca_gen_dbg("chunk_page=%lx value=%016lx", pgaddr, |
1837 | *(u64 *)abs_to_virt(phys_to_abs(pgaddr))); | 1837 | *(u64 *)abs_to_virt(phys_to_abs(pgaddr))); |
1838 | if (pgaddr - PAGE_SIZE != *prev_pgaddr) { | 1838 | if (pgaddr - PAGE_SIZE != *prev_pgaddr) { |
@@ -1867,7 +1867,7 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo, | |||
1867 | chunk, (&(pginfo->u.usr.region->chunk_list)), list) { | 1867 | chunk, (&(pginfo->u.usr.region->chunk_list)), list) { |
1868 | for (i = pginfo->u.usr.next_nmap; i < chunk->nmap; ) { | 1868 | for (i = pginfo->u.usr.next_nmap; i < chunk->nmap; ) { |
1869 | if (nr_kpages == kpages_per_hwpage) { | 1869 | if (nr_kpages == kpages_per_hwpage) { |
1870 | pgaddr = ( page_to_pfn(chunk->page_list[i].page) | 1870 | pgaddr = ( page_to_pfn(sg_page(&chunk->page_list[i])) |
1871 | << PAGE_SHIFT ); | 1871 | << PAGE_SHIFT ); |
1872 | *kpage = phys_to_abs(pgaddr); | 1872 | *kpage = phys_to_abs(pgaddr); |
1873 | if ( !(*kpage) ) { | 1873 | if ( !(*kpage) ) { |
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index 927cb34c4805..7c426d07a555 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c | |||
@@ -274,7 +274,7 @@ static int write_sb_page(struct bitmap *bitmap, struct page *page, int wait) | |||
274 | if (bitmap->offset < 0) { | 274 | if (bitmap->offset < 0) { |
275 | /* DATA BITMAP METADATA */ | 275 | /* DATA BITMAP METADATA */ |
276 | if (bitmap->offset | 276 | if (bitmap->offset |
277 | + page->index * (PAGE_SIZE/512) | 277 | + (long)(page->index * (PAGE_SIZE/512)) |
278 | + size/512 > 0) | 278 | + size/512 > 0) |
279 | /* bitmap runs in to metadata */ | 279 | /* bitmap runs in to metadata */ |
280 | return -EINVAL; | 280 | return -EINVAL; |
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 8ee181a01f52..80a67d789b72 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -376,7 +376,12 @@ static unsigned long get_stripe_work(struct stripe_head *sh) | |||
376 | ack++; | 376 | ack++; |
377 | 377 | ||
378 | sh->ops.count -= ack; | 378 | sh->ops.count -= ack; |
379 | BUG_ON(sh->ops.count < 0); | 379 | if (unlikely(sh->ops.count < 0)) { |
380 | printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx " | ||
381 | "ops.complete: %#lx\n", pending, sh->ops.pending, | ||
382 | sh->ops.ack, sh->ops.complete); | ||
383 | BUG(); | ||
384 | } | ||
380 | 385 | ||
381 | return pending; | 386 | return pending; |
382 | } | 387 | } |
@@ -550,8 +555,7 @@ static void ops_complete_biofill(void *stripe_head_ref) | |||
550 | } | 555 | } |
551 | } | 556 | } |
552 | } | 557 | } |
553 | clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); | 558 | set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); |
554 | clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); | ||
555 | 559 | ||
556 | return_io(return_bi); | 560 | return_io(return_bi); |
557 | 561 | ||
@@ -2893,6 +2897,13 @@ static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) | |||
2893 | s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state); | 2897 | s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state); |
2894 | /* Now to look around and see what can be done */ | 2898 | /* Now to look around and see what can be done */ |
2895 | 2899 | ||
2900 | /* clean-up completed biofill operations */ | ||
2901 | if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) { | ||
2902 | clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); | ||
2903 | clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); | ||
2904 | clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); | ||
2905 | } | ||
2906 | |||
2896 | rcu_read_lock(); | 2907 | rcu_read_lock(); |
2897 | for (i=disks; i--; ) { | 2908 | for (i=disks; i--; ) { |
2898 | mdk_rdev_t *rdev; | 2909 | mdk_rdev_t *rdev; |
diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c index 3aa3dca56ae6..a9eb1c516247 100644 --- a/drivers/mtd/chips/cfi_cmdset_0001.c +++ b/drivers/mtd/chips/cfi_cmdset_0001.c | |||
@@ -85,6 +85,7 @@ static int cfi_intelext_point (struct mtd_info *mtd, loff_t from, size_t len, | |||
85 | static void cfi_intelext_unpoint (struct mtd_info *mtd, u_char *addr, loff_t from, | 85 | static void cfi_intelext_unpoint (struct mtd_info *mtd, u_char *addr, loff_t from, |
86 | size_t len); | 86 | size_t len); |
87 | 87 | ||
88 | static int chip_ready (struct map_info *map, struct flchip *chip, unsigned long adr, int mode); | ||
88 | static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr, int mode); | 89 | static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr, int mode); |
89 | static void put_chip(struct map_info *map, struct flchip *chip, unsigned long adr); | 90 | static void put_chip(struct map_info *map, struct flchip *chip, unsigned long adr); |
90 | #include "fwh_lock.h" | 91 | #include "fwh_lock.h" |
@@ -641,73 +642,13 @@ static int cfi_intelext_partition_fixup(struct mtd_info *mtd, | |||
641 | /* | 642 | /* |
642 | * *********** CHIP ACCESS FUNCTIONS *********** | 643 | * *********** CHIP ACCESS FUNCTIONS *********** |
643 | */ | 644 | */ |
644 | 645 | static int chip_ready (struct map_info *map, struct flchip *chip, unsigned long adr, int mode) | |
645 | static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr, int mode) | ||
646 | { | 646 | { |
647 | DECLARE_WAITQUEUE(wait, current); | 647 | DECLARE_WAITQUEUE(wait, current); |
648 | struct cfi_private *cfi = map->fldrv_priv; | 648 | struct cfi_private *cfi = map->fldrv_priv; |
649 | map_word status, status_OK = CMD(0x80), status_PWS = CMD(0x01); | 649 | map_word status, status_OK = CMD(0x80), status_PWS = CMD(0x01); |
650 | unsigned long timeo; | ||
651 | struct cfi_pri_intelext *cfip = cfi->cmdset_priv; | 650 | struct cfi_pri_intelext *cfip = cfi->cmdset_priv; |
652 | 651 | unsigned long timeo = jiffies + HZ; | |
653 | resettime: | ||
654 | timeo = jiffies + HZ; | ||
655 | retry: | ||
656 | if (chip->priv && (mode == FL_WRITING || mode == FL_ERASING || mode == FL_OTP_WRITE || mode == FL_SHUTDOWN)) { | ||
657 | /* | ||
658 | * OK. We have possibility for contension on the write/erase | ||
659 | * operations which are global to the real chip and not per | ||
660 | * partition. So let's fight it over in the partition which | ||
661 | * currently has authority on the operation. | ||
662 | * | ||
663 | * The rules are as follows: | ||
664 | * | ||
665 | * - any write operation must own shared->writing. | ||
666 | * | ||
667 | * - any erase operation must own _both_ shared->writing and | ||
668 | * shared->erasing. | ||
669 | * | ||
670 | * - contension arbitration is handled in the owner's context. | ||
671 | * | ||
672 | * The 'shared' struct can be read and/or written only when | ||
673 | * its lock is taken. | ||
674 | */ | ||
675 | struct flchip_shared *shared = chip->priv; | ||
676 | struct flchip *contender; | ||
677 | spin_lock(&shared->lock); | ||
678 | contender = shared->writing; | ||
679 | if (contender && contender != chip) { | ||
680 | /* | ||
681 | * The engine to perform desired operation on this | ||
682 | * partition is already in use by someone else. | ||
683 | * Let's fight over it in the context of the chip | ||
684 | * currently using it. If it is possible to suspend, | ||
685 | * that other partition will do just that, otherwise | ||
686 | * it'll happily send us to sleep. In any case, when | ||
687 | * get_chip returns success we're clear to go ahead. | ||
688 | */ | ||
689 | int ret = spin_trylock(contender->mutex); | ||
690 | spin_unlock(&shared->lock); | ||
691 | if (!ret) | ||
692 | goto retry; | ||
693 | spin_unlock(chip->mutex); | ||
694 | ret = get_chip(map, contender, contender->start, mode); | ||
695 | spin_lock(chip->mutex); | ||
696 | if (ret) { | ||
697 | spin_unlock(contender->mutex); | ||
698 | return ret; | ||
699 | } | ||
700 | timeo = jiffies + HZ; | ||
701 | spin_lock(&shared->lock); | ||
702 | spin_unlock(contender->mutex); | ||
703 | } | ||
704 | |||
705 | /* We now own it */ | ||
706 | shared->writing = chip; | ||
707 | if (mode == FL_ERASING) | ||
708 | shared->erasing = chip; | ||
709 | spin_unlock(&shared->lock); | ||
710 | } | ||
711 | 652 | ||
712 | switch (chip->state) { | 653 | switch (chip->state) { |
713 | 654 | ||
@@ -722,16 +663,11 @@ static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr | |||
722 | if (chip->priv && map_word_andequal(map, status, status_PWS, status_PWS)) | 663 | if (chip->priv && map_word_andequal(map, status, status_PWS, status_PWS)) |
723 | break; | 664 | break; |
724 | 665 | ||
725 | if (time_after(jiffies, timeo)) { | ||
726 | printk(KERN_ERR "%s: Waiting for chip to be ready timed out. Status %lx\n", | ||
727 | map->name, status.x[0]); | ||
728 | return -EIO; | ||
729 | } | ||
730 | spin_unlock(chip->mutex); | 666 | spin_unlock(chip->mutex); |
731 | cfi_udelay(1); | 667 | cfi_udelay(1); |
732 | spin_lock(chip->mutex); | 668 | spin_lock(chip->mutex); |
733 | /* Someone else might have been playing with it. */ | 669 | /* Someone else might have been playing with it. */ |
734 | goto retry; | 670 | return -EAGAIN; |
735 | } | 671 | } |
736 | 672 | ||
737 | case FL_READY: | 673 | case FL_READY: |
@@ -809,10 +745,82 @@ static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr | |||
809 | schedule(); | 745 | schedule(); |
810 | remove_wait_queue(&chip->wq, &wait); | 746 | remove_wait_queue(&chip->wq, &wait); |
811 | spin_lock(chip->mutex); | 747 | spin_lock(chip->mutex); |
812 | goto resettime; | 748 | return -EAGAIN; |
813 | } | 749 | } |
814 | } | 750 | } |
815 | 751 | ||
752 | static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr, int mode) | ||
753 | { | ||
754 | int ret; | ||
755 | |||
756 | retry: | ||
757 | if (chip->priv && (mode == FL_WRITING || mode == FL_ERASING | ||
758 | || mode == FL_OTP_WRITE || mode == FL_SHUTDOWN)) { | ||
759 | /* | ||
760 | * OK. We have possibility for contention on the write/erase | ||
761 | * operations which are global to the real chip and not per | ||
762 | * partition. So let's fight it over in the partition which | ||
763 | * currently has authority on the operation. | ||
764 | * | ||
765 | * The rules are as follows: | ||
766 | * | ||
767 | * - any write operation must own shared->writing. | ||
768 | * | ||
769 | * - any erase operation must own _both_ shared->writing and | ||
770 | * shared->erasing. | ||
771 | * | ||
772 | * - contention arbitration is handled in the owner's context. | ||
773 | * | ||
774 | * The 'shared' struct can be read and/or written only when | ||
775 | * its lock is taken. | ||
776 | */ | ||
777 | struct flchip_shared *shared = chip->priv; | ||
778 | struct flchip *contender; | ||
779 | spin_lock(&shared->lock); | ||
780 | contender = shared->writing; | ||
781 | if (contender && contender != chip) { | ||
782 | /* | ||
783 | * The engine to perform desired operation on this | ||
784 | * partition is already in use by someone else. | ||
785 | * Let's fight over it in the context of the chip | ||
786 | * currently using it. If it is possible to suspend, | ||
787 | * that other partition will do just that, otherwise | ||
788 | * it'll happily send us to sleep. In any case, when | ||
789 | * get_chip returns success we're clear to go ahead. | ||
790 | */ | ||
791 | ret = spin_trylock(contender->mutex); | ||
792 | spin_unlock(&shared->lock); | ||
793 | if (!ret) | ||
794 | goto retry; | ||
795 | spin_unlock(chip->mutex); | ||
796 | ret = chip_ready(map, contender, contender->start, mode); | ||
797 | spin_lock(chip->mutex); | ||
798 | |||
799 | if (ret == -EAGAIN) { | ||
800 | spin_unlock(contender->mutex); | ||
801 | goto retry; | ||
802 | } | ||
803 | if (ret) { | ||
804 | spin_unlock(contender->mutex); | ||
805 | return ret; | ||
806 | } | ||
807 | spin_lock(&shared->lock); | ||
808 | spin_unlock(contender->mutex); | ||
809 | } | ||
810 | |||
811 | /* We now own it */ | ||
812 | shared->writing = chip; | ||
813 | if (mode == FL_ERASING) | ||
814 | shared->erasing = chip; | ||
815 | spin_unlock(&shared->lock); | ||
816 | } | ||
817 | ret = chip_ready(map, chip, adr, mode); | ||
818 | if (ret == -EAGAIN) | ||
819 | goto retry; | ||
820 | |||
821 | return ret; | ||
822 | } | ||
823 | |||
816 | static void put_chip(struct map_info *map, struct flchip *chip, unsigned long adr) | 824 | static void put_chip(struct map_info *map, struct flchip *chip, unsigned long adr) |
817 | { | 825 | { |
818 | struct cfi_private *cfi = map->fldrv_priv; | 826 | struct cfi_private *cfi = map->fldrv_priv; |
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig index 8f9c3baeb38e..246d4512f64b 100644 --- a/drivers/mtd/nand/Kconfig +++ b/drivers/mtd/nand/Kconfig | |||
@@ -300,7 +300,7 @@ config MTD_NAND_PLATFORM | |||
300 | via platform_data. | 300 | via platform_data. |
301 | 301 | ||
302 | config MTD_ALAUDA | 302 | config MTD_ALAUDA |
303 | tristate "MTD driver for Olympus MAUSB-10 and Fijufilm DPC-R1" | 303 | tristate "MTD driver for Olympus MAUSB-10 and Fujifilm DPC-R1" |
304 | depends on MTD_NAND && USB | 304 | depends on MTD_NAND && USB |
305 | help | 305 | help |
306 | These two (and possibly other) Alauda-based cardreaders for | 306 | These two (and possibly other) Alauda-based cardreaders for |
diff --git a/drivers/mtd/nand/diskonchip.c b/drivers/mtd/nand/diskonchip.c index ab9f5c5db38d..0e72153b3297 100644 --- a/drivers/mtd/nand/diskonchip.c +++ b/drivers/mtd/nand/diskonchip.c | |||
@@ -220,7 +220,7 @@ static int doc_ecc_decode(struct rs_control *rs, uint8_t *data, uint8_t *ecc) | |||
220 | } | 220 | } |
221 | } | 221 | } |
222 | /* If the parity is wrong, no rescue possible */ | 222 | /* If the parity is wrong, no rescue possible */ |
223 | return parity ? -1 : nerr; | 223 | return parity ? -EBADMSG : nerr; |
224 | } | 224 | } |
225 | 225 | ||
226 | static void DoC_Delay(struct doc_priv *doc, unsigned short cycles) | 226 | static void DoC_Delay(struct doc_priv *doc, unsigned short cycles) |
@@ -1034,7 +1034,7 @@ static int doc200x_correct_data(struct mtd_info *mtd, u_char *dat, | |||
1034 | WriteDOC(DOC_ECC_DIS, docptr, Mplus_ECCConf); | 1034 | WriteDOC(DOC_ECC_DIS, docptr, Mplus_ECCConf); |
1035 | else | 1035 | else |
1036 | WriteDOC(DOC_ECC_DIS, docptr, ECCConf); | 1036 | WriteDOC(DOC_ECC_DIS, docptr, ECCConf); |
1037 | if (no_ecc_failures && (ret == -1)) { | 1037 | if (no_ecc_failures && (ret == -EBADMSG)) { |
1038 | printk(KERN_ERR "suppressing ECC failure\n"); | 1038 | printk(KERN_ERR "suppressing ECC failure\n"); |
1039 | ret = 0; | 1039 | ret = 0; |
1040 | } | 1040 | } |
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index b4e0e7723894..e29c1da7f56e 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c | |||
@@ -789,7 +789,7 @@ static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip, | |||
789 | int stat; | 789 | int stat; |
790 | 790 | ||
791 | stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); | 791 | stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); |
792 | if (stat == -1) | 792 | if (stat < 0) |
793 | mtd->ecc_stats.failed++; | 793 | mtd->ecc_stats.failed++; |
794 | else | 794 | else |
795 | mtd->ecc_stats.corrected += stat; | 795 | mtd->ecc_stats.corrected += stat; |
@@ -833,7 +833,7 @@ static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, | |||
833 | int stat; | 833 | int stat; |
834 | 834 | ||
835 | stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); | 835 | stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); |
836 | if (stat == -1) | 836 | if (stat < 0) |
837 | mtd->ecc_stats.failed++; | 837 | mtd->ecc_stats.failed++; |
838 | else | 838 | else |
839 | mtd->ecc_stats.corrected += stat; | 839 | mtd->ecc_stats.corrected += stat; |
@@ -874,7 +874,7 @@ static int nand_read_page_syndrome(struct mtd_info *mtd, struct nand_chip *chip, | |||
874 | chip->read_buf(mtd, oob, eccbytes); | 874 | chip->read_buf(mtd, oob, eccbytes); |
875 | stat = chip->ecc.correct(mtd, p, oob, NULL); | 875 | stat = chip->ecc.correct(mtd, p, oob, NULL); |
876 | 876 | ||
877 | if (stat == -1) | 877 | if (stat < 0) |
878 | mtd->ecc_stats.failed++; | 878 | mtd->ecc_stats.failed++; |
879 | else | 879 | else |
880 | mtd->ecc_stats.corrected += stat; | 880 | mtd->ecc_stats.corrected += stat; |
diff --git a/drivers/mtd/nand/nand_ecc.c b/drivers/mtd/nand/nand_ecc.c index fde593e5e634..9003a135e050 100644 --- a/drivers/mtd/nand/nand_ecc.c +++ b/drivers/mtd/nand/nand_ecc.c | |||
@@ -189,7 +189,7 @@ int nand_correct_data(struct mtd_info *mtd, u_char *dat, | |||
189 | if(countbits(s0 | ((uint32_t)s1 << 8) | ((uint32_t)s2 <<16)) == 1) | 189 | if(countbits(s0 | ((uint32_t)s1 << 8) | ((uint32_t)s2 <<16)) == 1) |
190 | return 1; | 190 | return 1; |
191 | 191 | ||
192 | return -1; | 192 | return -EBADMSG; |
193 | } | 193 | } |
194 | EXPORT_SYMBOL(nand_correct_data); | 194 | EXPORT_SYMBOL(nand_correct_data); |
195 | 195 | ||
diff --git a/drivers/mtd/nand/nandsim.c b/drivers/mtd/nand/nandsim.c index a7574807dc46..10490b48d9f7 100644 --- a/drivers/mtd/nand/nandsim.c +++ b/drivers/mtd/nand/nandsim.c | |||
@@ -511,7 +511,7 @@ static int init_nandsim(struct mtd_info *mtd) | |||
511 | } | 511 | } |
512 | 512 | ||
513 | if (ns->options & OPT_SMALLPAGE) { | 513 | if (ns->options & OPT_SMALLPAGE) { |
514 | if (ns->geom.totsz < (64 << 20)) { | 514 | if (ns->geom.totsz < (32 << 20)) { |
515 | ns->geom.pgaddrbytes = 3; | 515 | ns->geom.pgaddrbytes = 3; |
516 | ns->geom.secaddrbytes = 2; | 516 | ns->geom.secaddrbytes = 2; |
517 | } else { | 517 | } else { |
diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c index 21b921dd6aab..66f76e9618dd 100644 --- a/drivers/mtd/nand/s3c2410.c +++ b/drivers/mtd/nand/s3c2410.c | |||
@@ -488,12 +488,24 @@ static void s3c2410_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len) | |||
488 | readsb(this->IO_ADDR_R, buf, len); | 488 | readsb(this->IO_ADDR_R, buf, len); |
489 | } | 489 | } |
490 | 490 | ||
491 | static void s3c2440_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len) | ||
492 | { | ||
493 | struct s3c2410_nand_info *info = s3c2410_nand_mtd_toinfo(mtd); | ||
494 | readsl(info->regs + S3C2440_NFDATA, buf, len / 4); | ||
495 | } | ||
496 | |||
491 | static void s3c2410_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len) | 497 | static void s3c2410_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len) |
492 | { | 498 | { |
493 | struct nand_chip *this = mtd->priv; | 499 | struct nand_chip *this = mtd->priv; |
494 | writesb(this->IO_ADDR_W, buf, len); | 500 | writesb(this->IO_ADDR_W, buf, len); |
495 | } | 501 | } |
496 | 502 | ||
503 | static void s3c2440_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len) | ||
504 | { | ||
505 | struct s3c2410_nand_info *info = s3c2410_nand_mtd_toinfo(mtd); | ||
506 | writesl(info->regs + S3C2440_NFDATA, buf, len / 4); | ||
507 | } | ||
508 | |||
497 | /* device management functions */ | 509 | /* device management functions */ |
498 | 510 | ||
499 | static int s3c2410_nand_remove(struct platform_device *pdev) | 511 | static int s3c2410_nand_remove(struct platform_device *pdev) |
@@ -604,6 +616,8 @@ static void s3c2410_nand_init_chip(struct s3c2410_nand_info *info, | |||
604 | info->sel_bit = S3C2440_NFCONT_nFCE; | 616 | info->sel_bit = S3C2440_NFCONT_nFCE; |
605 | chip->cmd_ctrl = s3c2440_nand_hwcontrol; | 617 | chip->cmd_ctrl = s3c2440_nand_hwcontrol; |
606 | chip->dev_ready = s3c2440_nand_devready; | 618 | chip->dev_ready = s3c2440_nand_devready; |
619 | chip->read_buf = s3c2440_nand_read_buf; | ||
620 | chip->write_buf = s3c2440_nand_write_buf; | ||
607 | break; | 621 | break; |
608 | 622 | ||
609 | case TYPE_S3C2412: | 623 | case TYPE_S3C2412: |
diff --git a/drivers/mtd/onenand/onenand_sim.c b/drivers/mtd/onenand/onenand_sim.c index 0d89ad5776fa..d64200b7c94b 100644 --- a/drivers/mtd/onenand/onenand_sim.c +++ b/drivers/mtd/onenand/onenand_sim.c | |||
@@ -88,11 +88,11 @@ do { \ | |||
88 | 88 | ||
89 | /** | 89 | /** |
90 | * onenand_lock_handle - Handle Lock scheme | 90 | * onenand_lock_handle - Handle Lock scheme |
91 | * @param this OneNAND device structure | 91 | * @this: OneNAND device structure |
92 | * @param cmd The command to be sent | 92 | * @cmd: The command to be sent |
93 | * | 93 | * |
94 | * Send lock command to OneNAND device. | 94 | * Send lock command to OneNAND device. |
95 | * The lock scheme is depends on chip type. | 95 | * The lock scheme depends on chip type. |
96 | */ | 96 | */ |
97 | static void onenand_lock_handle(struct onenand_chip *this, int cmd) | 97 | static void onenand_lock_handle(struct onenand_chip *this, int cmd) |
98 | { | 98 | { |
@@ -131,8 +131,8 @@ static void onenand_lock_handle(struct onenand_chip *this, int cmd) | |||
131 | 131 | ||
132 | /** | 132 | /** |
133 | * onenand_bootram_handle - Handle BootRAM area | 133 | * onenand_bootram_handle - Handle BootRAM area |
134 | * @param this OneNAND device structure | 134 | * @this: OneNAND device structure |
135 | * @param cmd The command to be sent | 135 | * @cmd: The command to be sent |
136 | * | 136 | * |
137 | * Emulate BootRAM area. It is possible to do basic operation using BootRAM. | 137 | * Emulate BootRAM area. It is possible to do basic operation using BootRAM. |
138 | */ | 138 | */ |
@@ -153,10 +153,10 @@ static void onenand_bootram_handle(struct onenand_chip *this, int cmd) | |||
153 | 153 | ||
154 | /** | 154 | /** |
155 | * onenand_update_interrupt - Set interrupt register | 155 | * onenand_update_interrupt - Set interrupt register |
156 | * @param this OneNAND device structure | 156 | * @this: OneNAND device structure |
157 | * @param cmd The command to be sent | 157 | * @cmd: The command to be sent |
158 | * | 158 | * |
159 | * Update interrupt register. The status is depends on command. | 159 | * Update interrupt register. The status depends on command. |
160 | */ | 160 | */ |
161 | static void onenand_update_interrupt(struct onenand_chip *this, int cmd) | 161 | static void onenand_update_interrupt(struct onenand_chip *this, int cmd) |
162 | { | 162 | { |
@@ -189,11 +189,12 @@ static void onenand_update_interrupt(struct onenand_chip *this, int cmd) | |||
189 | } | 189 | } |
190 | 190 | ||
191 | /** | 191 | /** |
192 | * onenand_check_overwrite - Check over-write if happend | 192 | * onenand_check_overwrite - Check if over-write happened |
193 | * @param dest The destination pointer | 193 | * @dest: The destination pointer |
194 | * @param src The source pointer | 194 | * @src: The source pointer |
195 | * @param count The length to be check | 195 | * @count: The length to be check |
196 | * @return 0 on same, otherwise 1 | 196 | * |
197 | * Returns: 0 on same, otherwise 1 | ||
197 | * | 198 | * |
198 | * Compare the source with destination | 199 | * Compare the source with destination |
199 | */ | 200 | */ |
@@ -213,10 +214,10 @@ static int onenand_check_overwrite(void *dest, void *src, size_t count) | |||
213 | 214 | ||
214 | /** | 215 | /** |
215 | * onenand_data_handle - Handle OneNAND Core and DataRAM | 216 | * onenand_data_handle - Handle OneNAND Core and DataRAM |
216 | * @param this OneNAND device structure | 217 | * @this: OneNAND device structure |
217 | * @param cmd The command to be sent | 218 | * @cmd: The command to be sent |
218 | * @param dataram Which dataram used | 219 | * @dataram: Which dataram used |
219 | * @param offset The offset to OneNAND Core | 220 | * @offset: The offset to OneNAND Core |
220 | * | 221 | * |
221 | * Copy data from OneNAND Core to DataRAM (read) | 222 | * Copy data from OneNAND Core to DataRAM (read) |
222 | * Copy data from DataRAM to OneNAND Core (write) | 223 | * Copy data from DataRAM to OneNAND Core (write) |
@@ -295,8 +296,8 @@ static void onenand_data_handle(struct onenand_chip *this, int cmd, | |||
295 | 296 | ||
296 | /** | 297 | /** |
297 | * onenand_command_handle - Handle command | 298 | * onenand_command_handle - Handle command |
298 | * @param this OneNAND device structure | 299 | * @this: OneNAND device structure |
299 | * @param cmd The command to be sent | 300 | * @cmd: The command to be sent |
300 | * | 301 | * |
301 | * Emulate OneNAND command. | 302 | * Emulate OneNAND command. |
302 | */ | 303 | */ |
@@ -350,8 +351,8 @@ static void onenand_command_handle(struct onenand_chip *this, int cmd) | |||
350 | 351 | ||
351 | /** | 352 | /** |
352 | * onenand_writew - [OneNAND Interface] Emulate write operation | 353 | * onenand_writew - [OneNAND Interface] Emulate write operation |
353 | * @param value value to write | 354 | * @value: value to write |
354 | * @param addr address to write | 355 | * @addr: address to write |
355 | * | 356 | * |
356 | * Write OneNAND register with value | 357 | * Write OneNAND register with value |
357 | */ | 358 | */ |
@@ -373,7 +374,7 @@ static void onenand_writew(unsigned short value, void __iomem * addr) | |||
373 | 374 | ||
374 | /** | 375 | /** |
375 | * flash_init - Initialize OneNAND simulator | 376 | * flash_init - Initialize OneNAND simulator |
376 | * @param flash OneNAND simulaotr data strucutres | 377 | * @flash: OneNAND simulator data strucutres |
377 | * | 378 | * |
378 | * Initialize OneNAND simulator. | 379 | * Initialize OneNAND simulator. |
379 | */ | 380 | */ |
@@ -416,7 +417,7 @@ static int __init flash_init(struct onenand_flash *flash) | |||
416 | 417 | ||
417 | /** | 418 | /** |
418 | * flash_exit - Clean up OneNAND simulator | 419 | * flash_exit - Clean up OneNAND simulator |
419 | * @param flash OneNAND simulaotr data strucutres | 420 | * @flash: OneNAND simulator data structures |
420 | * | 421 | * |
421 | * Clean up OneNAND simulator. | 422 | * Clean up OneNAND simulator. |
422 | */ | 423 | */ |
@@ -424,7 +425,6 @@ static void flash_exit(struct onenand_flash *flash) | |||
424 | { | 425 | { |
425 | vfree(ONENAND_CORE(flash)); | 426 | vfree(ONENAND_CORE(flash)); |
426 | kfree(flash->base); | 427 | kfree(flash->base); |
427 | kfree(flash); | ||
428 | } | 428 | } |
429 | 429 | ||
430 | static int __init onenand_sim_init(void) | 430 | static int __init onenand_sim_init(void) |
@@ -449,7 +449,7 @@ static int __init onenand_sim_init(void) | |||
449 | info->onenand.write_word = onenand_writew; | 449 | info->onenand.write_word = onenand_writew; |
450 | 450 | ||
451 | if (flash_init(&info->flash)) { | 451 | if (flash_init(&info->flash)) { |
452 | printk(KERN_ERR "Unable to allocat flash.\n"); | 452 | printk(KERN_ERR "Unable to allocate flash.\n"); |
453 | kfree(ffchars); | 453 | kfree(ffchars); |
454 | kfree(info); | 454 | kfree(info); |
455 | return -ENOMEM; | 455 | return -ENOMEM; |
diff --git a/drivers/net/fec.c b/drivers/net/fec.c index 2b5782056dda..0fbf1bbbaee9 100644 --- a/drivers/net/fec.c +++ b/drivers/net/fec.c | |||
@@ -751,13 +751,11 @@ mii_queue(struct net_device *dev, int regval, void (*func)(uint, struct net_devi | |||
751 | if (mii_head) { | 751 | if (mii_head) { |
752 | mii_tail->mii_next = mip; | 752 | mii_tail->mii_next = mip; |
753 | mii_tail = mip; | 753 | mii_tail = mip; |
754 | } | 754 | } else { |
755 | else { | ||
756 | mii_head = mii_tail = mip; | 755 | mii_head = mii_tail = mip; |
757 | fep->hwp->fec_mii_data = regval; | 756 | fep->hwp->fec_mii_data = regval; |
758 | } | 757 | } |
759 | } | 758 | } else { |
760 | else { | ||
761 | retval = 1; | 759 | retval = 1; |
762 | } | 760 | } |
763 | 761 | ||
@@ -768,14 +766,11 @@ mii_queue(struct net_device *dev, int regval, void (*func)(uint, struct net_devi | |||
768 | 766 | ||
769 | static void mii_do_cmd(struct net_device *dev, const phy_cmd_t *c) | 767 | static void mii_do_cmd(struct net_device *dev, const phy_cmd_t *c) |
770 | { | 768 | { |
771 | int k; | ||
772 | |||
773 | if(!c) | 769 | if(!c) |
774 | return; | 770 | return; |
775 | 771 | ||
776 | for(k = 0; (c+k)->mii_data != mk_mii_end; k++) { | 772 | for (; c->mii_data != mk_mii_end; c++) |
777 | mii_queue(dev, (c+k)->mii_data, (c+k)->funct); | 773 | mii_queue(dev, c->mii_data, c->funct); |
778 | } | ||
779 | } | 774 | } |
780 | 775 | ||
781 | static void mii_parse_sr(uint mii_reg, struct net_device *dev) | 776 | static void mii_parse_sr(uint mii_reg, struct net_device *dev) |
@@ -792,7 +787,6 @@ static void mii_parse_sr(uint mii_reg, struct net_device *dev) | |||
792 | status |= PHY_STAT_FAULT; | 787 | status |= PHY_STAT_FAULT; |
793 | if (mii_reg & 0x0020) | 788 | if (mii_reg & 0x0020) |
794 | status |= PHY_STAT_ANC; | 789 | status |= PHY_STAT_ANC; |
795 | |||
796 | *s = status; | 790 | *s = status; |
797 | } | 791 | } |
798 | 792 | ||
@@ -1239,7 +1233,6 @@ mii_link_interrupt(int irq, void * dev_id); | |||
1239 | #endif | 1233 | #endif |
1240 | 1234 | ||
1241 | #if defined(CONFIG_M5272) | 1235 | #if defined(CONFIG_M5272) |
1242 | |||
1243 | /* | 1236 | /* |
1244 | * Code specific to Coldfire 5272 setup. | 1237 | * Code specific to Coldfire 5272 setup. |
1245 | */ | 1238 | */ |
@@ -2020,8 +2013,7 @@ static void mii_relink(struct work_struct *work) | |||
2020 | & (PHY_STAT_100FDX | PHY_STAT_10FDX)) | 2013 | & (PHY_STAT_100FDX | PHY_STAT_10FDX)) |
2021 | duplex = 1; | 2014 | duplex = 1; |
2022 | fec_restart(dev, duplex); | 2015 | fec_restart(dev, duplex); |
2023 | } | 2016 | } else |
2024 | else | ||
2025 | fec_stop(dev); | 2017 | fec_stop(dev); |
2026 | 2018 | ||
2027 | #if 0 | 2019 | #if 0 |
@@ -2119,8 +2111,7 @@ mii_discover_phy(uint mii_reg, struct net_device *dev) | |||
2119 | fep->phy_id = phytype << 16; | 2111 | fep->phy_id = phytype << 16; |
2120 | mii_queue(dev, mk_mii_read(MII_REG_PHYIR2), | 2112 | mii_queue(dev, mk_mii_read(MII_REG_PHYIR2), |
2121 | mii_discover_phy3); | 2113 | mii_discover_phy3); |
2122 | } | 2114 | } else { |
2123 | else { | ||
2124 | fep->phy_addr++; | 2115 | fep->phy_addr++; |
2125 | mii_queue(dev, mk_mii_read(MII_REG_PHYIR1), | 2116 | mii_queue(dev, mk_mii_read(MII_REG_PHYIR1), |
2126 | mii_discover_phy); | 2117 | mii_discover_phy); |
@@ -2574,8 +2565,7 @@ fec_restart(struct net_device *dev, int duplex) | |||
2574 | if (duplex) { | 2565 | if (duplex) { |
2575 | fecp->fec_r_cntrl = OPT_FRAME_SIZE | 0x04;/* MII enable */ | 2566 | fecp->fec_r_cntrl = OPT_FRAME_SIZE | 0x04;/* MII enable */ |
2576 | fecp->fec_x_cntrl = 0x04; /* FD enable */ | 2567 | fecp->fec_x_cntrl = 0x04; /* FD enable */ |
2577 | } | 2568 | } else { |
2578 | else { | ||
2579 | /* MII enable|No Rcv on Xmit */ | 2569 | /* MII enable|No Rcv on Xmit */ |
2580 | fecp->fec_r_cntrl = OPT_FRAME_SIZE | 0x06; | 2570 | fecp->fec_r_cntrl = OPT_FRAME_SIZE | 0x06; |
2581 | fecp->fec_x_cntrl = 0x00; | 2571 | fecp->fec_x_cntrl = 0x00; |
diff --git a/drivers/parisc/ccio-dma.c b/drivers/parisc/ccio-dma.c index b3c4dbff26b8..7c60cbd85dc8 100644 --- a/drivers/parisc/ccio-dma.c +++ b/drivers/parisc/ccio-dma.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <linux/reboot.h> | 42 | #include <linux/reboot.h> |
43 | #include <linux/proc_fs.h> | 43 | #include <linux/proc_fs.h> |
44 | #include <linux/seq_file.h> | 44 | #include <linux/seq_file.h> |
45 | #include <linux/scatterlist.h> | ||
45 | 46 | ||
46 | #include <asm/byteorder.h> | 47 | #include <asm/byteorder.h> |
47 | #include <asm/cache.h> /* for L1_CACHE_BYTES */ | 48 | #include <asm/cache.h> /* for L1_CACHE_BYTES */ |
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c index e5c323936eae..e527a0e1d6c0 100644 --- a/drivers/parisc/sba_iommu.c +++ b/drivers/parisc/sba_iommu.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/mm.h> | 28 | #include <linux/mm.h> |
29 | #include <linux/string.h> | 29 | #include <linux/string.h> |
30 | #include <linux/pci.h> | 30 | #include <linux/pci.h> |
31 | #include <linux/scatterlist.h> | ||
31 | 32 | ||
32 | #include <asm/byteorder.h> | 33 | #include <asm/byteorder.h> |
33 | #include <asm/io.h> | 34 | #include <asm/io.h> |
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c index b3d70310af49..0c4ab3b07274 100644 --- a/drivers/pci/intel-iommu.c +++ b/drivers/pci/intel-iommu.c | |||
@@ -1962,7 +1962,7 @@ static void intel_free_coherent(struct device *hwdev, size_t size, | |||
1962 | free_pages((unsigned long)vaddr, order); | 1962 | free_pages((unsigned long)vaddr, order); |
1963 | } | 1963 | } |
1964 | 1964 | ||
1965 | #define SG_ENT_VIRT_ADDRESS(sg) (page_address((sg)->page) + (sg)->offset) | 1965 | #define SG_ENT_VIRT_ADDRESS(sg) (sg_virt((sg))) |
1966 | static void intel_unmap_sg(struct device *hwdev, struct scatterlist *sglist, | 1966 | static void intel_unmap_sg(struct device *hwdev, struct scatterlist *sglist, |
1967 | int nelems, int dir) | 1967 | int nelems, int dir) |
1968 | { | 1968 | { |
@@ -2010,7 +2010,7 @@ static int intel_nontranslate_map_sg(struct device *hddev, | |||
2010 | struct scatterlist *sg; | 2010 | struct scatterlist *sg; |
2011 | 2011 | ||
2012 | for_each_sg(sglist, sg, nelems, i) { | 2012 | for_each_sg(sglist, sg, nelems, i) { |
2013 | BUG_ON(!sg->page); | 2013 | BUG_ON(!sg_page(sg)); |
2014 | sg->dma_address = virt_to_bus(SG_ENT_VIRT_ADDRESS(sg)); | 2014 | sg->dma_address = virt_to_bus(SG_ENT_VIRT_ADDRESS(sg)); |
2015 | sg->dma_length = sg->length; | 2015 | sg->dma_length = sg->length; |
2016 | } | 2016 | } |
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index 7507067351bd..fd5d0c1570df 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
@@ -559,6 +559,7 @@ zfcp_sg_list_alloc(struct zfcp_sg_list *sg_list, size_t size) | |||
559 | retval = -ENOMEM; | 559 | retval = -ENOMEM; |
560 | goto out; | 560 | goto out; |
561 | } | 561 | } |
562 | sg_init_table(sg_list->sg, sg_list->count); | ||
562 | 563 | ||
563 | for (i = 0, sg = sg_list->sg; i < sg_list->count; i++, sg++) { | 564 | for (i = 0, sg = sg_list->sg; i < sg_list->count; i++, sg++) { |
564 | sg->length = min(size, PAGE_SIZE); | 565 | sg->length = min(size, PAGE_SIZE); |
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h index 57cac7008e0b..326e7ee232cb 100644 --- a/drivers/s390/scsi/zfcp_def.h +++ b/drivers/s390/scsi/zfcp_def.h | |||
@@ -63,7 +63,7 @@ | |||
63 | static inline void * | 63 | static inline void * |
64 | zfcp_sg_to_address(struct scatterlist *list) | 64 | zfcp_sg_to_address(struct scatterlist *list) |
65 | { | 65 | { |
66 | return (void *) (page_address(list->page) + list->offset); | 66 | return sg_virt(list); |
67 | } | 67 | } |
68 | 68 | ||
69 | /** | 69 | /** |
@@ -74,7 +74,7 @@ zfcp_sg_to_address(struct scatterlist *list) | |||
74 | static inline void | 74 | static inline void |
75 | zfcp_address_to_sg(void *address, struct scatterlist *list) | 75 | zfcp_address_to_sg(void *address, struct scatterlist *list) |
76 | { | 76 | { |
77 | list->page = virt_to_page(address); | 77 | sg_set_page(list, virt_to_page(address)); |
78 | list->offset = ((unsigned long) address) & (PAGE_SIZE - 1); | 78 | list->offset = ((unsigned long) address) & (PAGE_SIZE - 1); |
79 | } | 79 | } |
80 | 80 | ||
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index a6475a2bb8a7..9438d0b28799 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -308,13 +308,15 @@ zfcp_erp_adisc(struct zfcp_port *port) | |||
308 | if (send_els == NULL) | 308 | if (send_els == NULL) |
309 | goto nomem; | 309 | goto nomem; |
310 | 310 | ||
311 | send_els->req = kzalloc(sizeof(struct scatterlist), GFP_ATOMIC); | 311 | send_els->req = kmalloc(sizeof(struct scatterlist), GFP_ATOMIC); |
312 | if (send_els->req == NULL) | 312 | if (send_els->req == NULL) |
313 | goto nomem; | 313 | goto nomem; |
314 | sg_init_table(send_els->req, 1); | ||
314 | 315 | ||
315 | send_els->resp = kzalloc(sizeof(struct scatterlist), GFP_ATOMIC); | 316 | send_els->resp = kmalloc(sizeof(struct scatterlist), GFP_ATOMIC); |
316 | if (send_els->resp == NULL) | 317 | if (send_els->resp == NULL) |
317 | goto nomem; | 318 | goto nomem; |
319 | sg_init_table(send_els->resp, 1); | ||
318 | 320 | ||
319 | address = (void *) get_zeroed_page(GFP_ATOMIC); | 321 | address = (void *) get_zeroed_page(GFP_ATOMIC); |
320 | if (address == NULL) | 322 | if (address == NULL) |
@@ -363,7 +365,7 @@ zfcp_erp_adisc(struct zfcp_port *port) | |||
363 | retval = -ENOMEM; | 365 | retval = -ENOMEM; |
364 | freemem: | 366 | freemem: |
365 | if (address != NULL) | 367 | if (address != NULL) |
366 | __free_pages(send_els->req->page, 0); | 368 | __free_pages(sg_page(send_els->req), 0); |
367 | if (send_els != NULL) { | 369 | if (send_els != NULL) { |
368 | kfree(send_els->req); | 370 | kfree(send_els->req); |
369 | kfree(send_els->resp); | 371 | kfree(send_els->resp); |
@@ -437,7 +439,7 @@ zfcp_erp_adisc_handler(unsigned long data) | |||
437 | 439 | ||
438 | out: | 440 | out: |
439 | zfcp_port_put(port); | 441 | zfcp_port_put(port); |
440 | __free_pages(send_els->req->page, 0); | 442 | __free_pages(sg_page(send_els->req), 0); |
441 | kfree(send_els->req); | 443 | kfree(send_els->req); |
442 | kfree(send_els->resp); | 444 | kfree(send_els->resp); |
443 | kfree(send_els); | 445 | kfree(send_els); |
diff --git a/drivers/scsi/ps3rom.c b/drivers/scsi/ps3rom.c index 03f19b8d19c9..17b4a7c4618c 100644 --- a/drivers/scsi/ps3rom.c +++ b/drivers/scsi/ps3rom.c | |||
@@ -147,7 +147,7 @@ static int fetch_to_dev_buffer(struct scsi_cmnd *cmd, void *buf) | |||
147 | 147 | ||
148 | req_len = fin = 0; | 148 | req_len = fin = 0; |
149 | scsi_for_each_sg(cmd, sgpnt, scsi_sg_count(cmd), k) { | 149 | scsi_for_each_sg(cmd, sgpnt, scsi_sg_count(cmd), k) { |
150 | kaddr = kmap_atomic(sg_page(sgpnt->page), KM_IRQ0); | 150 | kaddr = kmap_atomic(sg_page(sgpnt), KM_IRQ0); |
151 | len = sgpnt->length; | 151 | len = sgpnt->length; |
152 | if ((req_len + len) > buflen) { | 152 | if ((req_len + len) > buflen) { |
153 | len = buflen - req_len; | 153 | len = buflen - req_len; |
diff --git a/drivers/serial/mcf.c b/drivers/serial/mcf.c new file mode 100644 index 000000000000..a7d4360ea7df --- /dev/null +++ b/drivers/serial/mcf.c | |||
@@ -0,0 +1,653 @@ | |||
1 | /****************************************************************************/ | ||
2 | |||
3 | /* | ||
4 | * mcf.c -- Freescale ColdFire UART driver | ||
5 | * | ||
6 | * (C) Copyright 2003-2007, Greg Ungerer <gerg@snapgear.com> | ||
7 | * | ||
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 | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | /****************************************************************************/ | ||
15 | |||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/init.h> | ||
18 | #include <linux/interrupt.h> | ||
19 | #include <linux/module.h> | ||
20 | #include <linux/console.h> | ||
21 | #include <linux/tty.h> | ||
22 | #include <linux/tty_flip.h> | ||
23 | #include <linux/serial.h> | ||
24 | #include <linux/serial_core.h> | ||
25 | #include <linux/io.h> | ||
26 | #include <asm/coldfire.h> | ||
27 | #include <asm/mcfsim.h> | ||
28 | #include <asm/mcfuart.h> | ||
29 | #include <asm/nettel.h> | ||
30 | |||
31 | /****************************************************************************/ | ||
32 | |||
33 | /* | ||
34 | * Some boards implement the DTR/DCD lines using GPIO lines, most | ||
35 | * don't. Dummy out the access macros for those that don't. Those | ||
36 | * that do should define these macros somewhere in there board | ||
37 | * specific inlude files. | ||
38 | */ | ||
39 | #if !defined(mcf_getppdcd) | ||
40 | #define mcf_getppdcd(p) (1) | ||
41 | #endif | ||
42 | #if !defined(mcf_getppdtr) | ||
43 | #define mcf_getppdtr(p) (1) | ||
44 | #endif | ||
45 | #if !defined(mcf_setppdtr) | ||
46 | #define mcf_setppdtr(p, v) do { } while (0) | ||
47 | #endif | ||
48 | |||
49 | /****************************************************************************/ | ||
50 | |||
51 | /* | ||
52 | * Local per-uart structure. | ||
53 | */ | ||
54 | struct mcf_uart { | ||
55 | struct uart_port port; | ||
56 | unsigned int sigs; /* Local copy of line sigs */ | ||
57 | unsigned char imr; /* Local IMR mirror */ | ||
58 | }; | ||
59 | |||
60 | /****************************************************************************/ | ||
61 | |||
62 | static unsigned int mcf_tx_empty(struct uart_port *port) | ||
63 | { | ||
64 | return (readb(port->membase + MCFUART_USR) & MCFUART_USR_TXEMPTY) ? | ||
65 | TIOCSER_TEMT : 0; | ||
66 | } | ||
67 | |||
68 | /****************************************************************************/ | ||
69 | |||
70 | static unsigned int mcf_get_mctrl(struct uart_port *port) | ||
71 | { | ||
72 | struct mcf_uart *pp = (struct mcf_uart *) port; | ||
73 | unsigned long flags; | ||
74 | unsigned int sigs; | ||
75 | |||
76 | spin_lock_irqsave(&port->lock, flags); | ||
77 | sigs = (readb(port->membase + MCFUART_UIPR) & MCFUART_UIPR_CTS) ? | ||
78 | 0 : TIOCM_CTS; | ||
79 | sigs |= (pp->sigs & TIOCM_RTS); | ||
80 | sigs |= (mcf_getppdcd(port->line) ? TIOCM_CD : 0); | ||
81 | sigs |= (mcf_getppdtr(port->line) ? TIOCM_DTR : 0); | ||
82 | spin_unlock_irqrestore(&port->lock, flags); | ||
83 | return sigs; | ||
84 | } | ||
85 | |||
86 | /****************************************************************************/ | ||
87 | |||
88 | static void mcf_set_mctrl(struct uart_port *port, unsigned int sigs) | ||
89 | { | ||
90 | struct mcf_uart *pp = (struct mcf_uart *) port; | ||
91 | unsigned long flags; | ||
92 | |||
93 | spin_lock_irqsave(&port->lock, flags); | ||
94 | pp->sigs = sigs; | ||
95 | mcf_setppdtr(port->line, (sigs & TIOCM_DTR)); | ||
96 | if (sigs & TIOCM_RTS) | ||
97 | writeb(MCFUART_UOP_RTS, port->membase + MCFUART_UOP1); | ||
98 | else | ||
99 | writeb(MCFUART_UOP_RTS, port->membase + MCFUART_UOP0); | ||
100 | spin_unlock_irqrestore(&port->lock, flags); | ||
101 | } | ||
102 | |||
103 | /****************************************************************************/ | ||
104 | |||
105 | static void mcf_start_tx(struct uart_port *port) | ||
106 | { | ||
107 | struct mcf_uart *pp = (struct mcf_uart *) port; | ||
108 | unsigned long flags; | ||
109 | |||
110 | spin_lock_irqsave(&port->lock, flags); | ||
111 | pp->imr |= MCFUART_UIR_TXREADY; | ||
112 | writeb(pp->imr, port->membase + MCFUART_UIMR); | ||
113 | spin_unlock_irqrestore(&port->lock, flags); | ||
114 | } | ||
115 | |||
116 | /****************************************************************************/ | ||
117 | |||
118 | static void mcf_stop_tx(struct uart_port *port) | ||
119 | { | ||
120 | struct mcf_uart *pp = (struct mcf_uart *) port; | ||
121 | unsigned long flags; | ||
122 | |||
123 | spin_lock_irqsave(&port->lock, flags); | ||
124 | pp->imr &= ~MCFUART_UIR_TXREADY; | ||
125 | writeb(pp->imr, port->membase + MCFUART_UIMR); | ||
126 | spin_unlock_irqrestore(&port->lock, flags); | ||
127 | } | ||
128 | |||
129 | /****************************************************************************/ | ||
130 | |||
131 | static void mcf_stop_rx(struct uart_port *port) | ||
132 | { | ||
133 | struct mcf_uart *pp = (struct mcf_uart *) port; | ||
134 | unsigned long flags; | ||
135 | |||
136 | spin_lock_irqsave(&port->lock, flags); | ||
137 | pp->imr &= ~MCFUART_UIR_RXREADY; | ||
138 | writeb(pp->imr, port->membase + MCFUART_UIMR); | ||
139 | spin_unlock_irqrestore(&port->lock, flags); | ||
140 | } | ||
141 | |||
142 | /****************************************************************************/ | ||
143 | |||
144 | static void mcf_break_ctl(struct uart_port *port, int break_state) | ||
145 | { | ||
146 | unsigned long flags; | ||
147 | |||
148 | spin_lock_irqsave(&port->lock, flags); | ||
149 | if (break_state == -1) | ||
150 | writeb(MCFUART_UCR_CMDBREAKSTART, port->membase + MCFUART_UCR); | ||
151 | else | ||
152 | writeb(MCFUART_UCR_CMDBREAKSTOP, port->membase + MCFUART_UCR); | ||
153 | spin_unlock_irqrestore(&port->lock, flags); | ||
154 | } | ||
155 | |||
156 | /****************************************************************************/ | ||
157 | |||
158 | static void mcf_enable_ms(struct uart_port *port) | ||
159 | { | ||
160 | } | ||
161 | |||
162 | /****************************************************************************/ | ||
163 | |||
164 | static int mcf_startup(struct uart_port *port) | ||
165 | { | ||
166 | struct mcf_uart *pp = (struct mcf_uart *) port; | ||
167 | unsigned long flags; | ||
168 | |||
169 | spin_lock_irqsave(&port->lock, flags); | ||
170 | |||
171 | /* Reset UART, get it into known state... */ | ||
172 | writeb(MCFUART_UCR_CMDRESETRX, port->membase + MCFUART_UCR); | ||
173 | writeb(MCFUART_UCR_CMDRESETTX, port->membase + MCFUART_UCR); | ||
174 | |||
175 | /* Enable the UART transmitter and receiver */ | ||
176 | writeb(MCFUART_UCR_RXENABLE | MCFUART_UCR_TXENABLE, | ||
177 | port->membase + MCFUART_UCR); | ||
178 | |||
179 | /* Enable RX interrupts now */ | ||
180 | pp->imr = MCFUART_UIR_RXREADY; | ||
181 | writeb(pp->imr, port->membase + MCFUART_UIMR); | ||
182 | |||
183 | spin_unlock_irqrestore(&port->lock, flags); | ||
184 | |||
185 | return 0; | ||
186 | } | ||
187 | |||
188 | /****************************************************************************/ | ||
189 | |||
190 | static void mcf_shutdown(struct uart_port *port) | ||
191 | { | ||
192 | struct mcf_uart *pp = (struct mcf_uart *) port; | ||
193 | unsigned long flags; | ||
194 | |||
195 | spin_lock_irqsave(&port->lock, flags); | ||
196 | |||
197 | /* Disable all interrupts now */ | ||
198 | pp->imr = 0; | ||
199 | writeb(pp->imr, port->membase + MCFUART_UIMR); | ||
200 | |||
201 | /* Disable UART transmitter and receiver */ | ||
202 | writeb(MCFUART_UCR_CMDRESETRX, port->membase + MCFUART_UCR); | ||
203 | writeb(MCFUART_UCR_CMDRESETTX, port->membase + MCFUART_UCR); | ||
204 | |||
205 | spin_unlock_irqrestore(&port->lock, flags); | ||
206 | } | ||
207 | |||
208 | /****************************************************************************/ | ||
209 | |||
210 | static void mcf_set_termios(struct uart_port *port, struct ktermios *termios, | ||
211 | struct ktermios *old) | ||
212 | { | ||
213 | unsigned long flags; | ||
214 | unsigned int baud, baudclk; | ||
215 | unsigned char mr1, mr2; | ||
216 | |||
217 | baud = uart_get_baud_rate(port, termios, old, 0, 230400); | ||
218 | baudclk = ((MCF_BUSCLK / baud) + 16) / 32; | ||
219 | |||
220 | mr1 = MCFUART_MR1_RXIRQRDY | MCFUART_MR1_RXERRCHAR; | ||
221 | mr2 = 0; | ||
222 | |||
223 | switch (termios->c_cflag & CSIZE) { | ||
224 | case CS5: mr1 |= MCFUART_MR1_CS5; break; | ||
225 | case CS6: mr1 |= MCFUART_MR1_CS6; break; | ||
226 | case CS7: mr1 |= MCFUART_MR1_CS7; break; | ||
227 | case CS8: | ||
228 | default: mr1 |= MCFUART_MR1_CS8; break; | ||
229 | } | ||
230 | |||
231 | if (termios->c_cflag & PARENB) { | ||
232 | if (termios->c_cflag & CMSPAR) { | ||
233 | if (termios->c_cflag & PARODD) | ||
234 | mr1 |= MCFUART_MR1_PARITYMARK; | ||
235 | else | ||
236 | mr1 |= MCFUART_MR1_PARITYSPACE; | ||
237 | } else { | ||
238 | if (termios->c_cflag & PARODD) | ||
239 | mr1 |= MCFUART_MR1_PARITYODD; | ||
240 | else | ||
241 | mr1 |= MCFUART_MR1_PARITYEVEN; | ||
242 | } | ||
243 | } else { | ||
244 | mr1 |= MCFUART_MR1_PARITYNONE; | ||
245 | } | ||
246 | |||
247 | if (termios->c_cflag & CSTOPB) | ||
248 | mr2 |= MCFUART_MR2_STOP2; | ||
249 | else | ||
250 | mr2 |= MCFUART_MR2_STOP1; | ||
251 | |||
252 | if (termios->c_cflag & CRTSCTS) { | ||
253 | mr1 |= MCFUART_MR1_RXRTS; | ||
254 | mr2 |= MCFUART_MR2_TXCTS; | ||
255 | } | ||
256 | |||
257 | spin_lock_irqsave(&port->lock, flags); | ||
258 | writeb(MCFUART_UCR_CMDRESETRX, port->membase + MCFUART_UCR); | ||
259 | writeb(MCFUART_UCR_CMDRESETTX, port->membase + MCFUART_UCR); | ||
260 | writeb(MCFUART_UCR_CMDRESETMRPTR, port->membase + MCFUART_UCR); | ||
261 | writeb(mr1, port->membase + MCFUART_UMR); | ||
262 | writeb(mr2, port->membase + MCFUART_UMR); | ||
263 | writeb((baudclk & 0xff00) >> 8, port->membase + MCFUART_UBG1); | ||
264 | writeb((baudclk & 0xff), port->membase + MCFUART_UBG2); | ||
265 | writeb(MCFUART_UCSR_RXCLKTIMER | MCFUART_UCSR_TXCLKTIMER, | ||
266 | port->membase + MCFUART_UCSR); | ||
267 | writeb(MCFUART_UCR_RXENABLE | MCFUART_UCR_TXENABLE, | ||
268 | port->membase + MCFUART_UCR); | ||
269 | spin_unlock_irqrestore(&port->lock, flags); | ||
270 | } | ||
271 | |||
272 | /****************************************************************************/ | ||
273 | |||
274 | static void mcf_rx_chars(struct mcf_uart *pp) | ||
275 | { | ||
276 | struct uart_port *port = (struct uart_port *) pp; | ||
277 | unsigned char status, ch, flag; | ||
278 | |||
279 | while ((status = readb(port->membase + MCFUART_USR)) & MCFUART_USR_RXREADY) { | ||
280 | ch = readb(port->membase + MCFUART_URB); | ||
281 | flag = TTY_NORMAL; | ||
282 | port->icount.rx++; | ||
283 | |||
284 | if (status & MCFUART_USR_RXERR) { | ||
285 | writeb(MCFUART_UCR_CMDRESETERR, | ||
286 | port->membase + MCFUART_UCR); | ||
287 | |||
288 | if (status & MCFUART_USR_RXBREAK) { | ||
289 | port->icount.brk++; | ||
290 | if (uart_handle_break(port)) | ||
291 | continue; | ||
292 | } else if (status & MCFUART_USR_RXPARITY) { | ||
293 | port->icount.parity++; | ||
294 | } else if (status & MCFUART_USR_RXOVERRUN) { | ||
295 | port->icount.overrun++; | ||
296 | } else if (status & MCFUART_USR_RXFRAMING) { | ||
297 | port->icount.frame++; | ||
298 | } | ||
299 | |||
300 | status &= port->read_status_mask; | ||
301 | |||
302 | if (status & MCFUART_USR_RXBREAK) | ||
303 | flag = TTY_BREAK; | ||
304 | else if (status & MCFUART_USR_RXPARITY) | ||
305 | flag = TTY_PARITY; | ||
306 | else if (status & MCFUART_USR_RXFRAMING) | ||
307 | flag = TTY_FRAME; | ||
308 | } | ||
309 | |||
310 | if (uart_handle_sysrq_char(port, ch)) | ||
311 | continue; | ||
312 | uart_insert_char(port, status, MCFUART_USR_RXOVERRUN, ch, flag); | ||
313 | } | ||
314 | |||
315 | tty_flip_buffer_push(port->info->tty); | ||
316 | } | ||
317 | |||
318 | /****************************************************************************/ | ||
319 | |||
320 | static void mcf_tx_chars(struct mcf_uart *pp) | ||
321 | { | ||
322 | struct uart_port *port = (struct uart_port *) pp; | ||
323 | struct circ_buf *xmit = &port->info->xmit; | ||
324 | |||
325 | if (port->x_char) { | ||
326 | /* Send special char - probably flow control */ | ||
327 | writeb(port->x_char, port->membase + MCFUART_UTB); | ||
328 | port->x_char = 0; | ||
329 | port->icount.tx++; | ||
330 | return; | ||
331 | } | ||
332 | |||
333 | while (readb(port->membase + MCFUART_USR) & MCFUART_USR_TXREADY) { | ||
334 | if (xmit->head == xmit->tail) | ||
335 | break; | ||
336 | writeb(xmit->buf[xmit->tail], port->membase + MCFUART_UTB); | ||
337 | xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE -1); | ||
338 | port->icount.tx++; | ||
339 | } | ||
340 | |||
341 | if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) | ||
342 | uart_write_wakeup(port); | ||
343 | |||
344 | if (xmit->head == xmit->tail) { | ||
345 | pp->imr &= ~MCFUART_UIR_TXREADY; | ||
346 | writeb(pp->imr, port->membase + MCFUART_UIMR); | ||
347 | } | ||
348 | } | ||
349 | |||
350 | /****************************************************************************/ | ||
351 | |||
352 | static irqreturn_t mcf_interrupt(int irq, void *data) | ||
353 | { | ||
354 | struct uart_port *port = data; | ||
355 | struct mcf_uart *pp = (struct mcf_uart *) port; | ||
356 | unsigned int isr; | ||
357 | |||
358 | isr = readb(port->membase + MCFUART_UISR) & pp->imr; | ||
359 | if (isr & MCFUART_UIR_RXREADY) | ||
360 | mcf_rx_chars(pp); | ||
361 | if (isr & MCFUART_UIR_TXREADY) | ||
362 | mcf_tx_chars(pp); | ||
363 | return IRQ_HANDLED; | ||
364 | } | ||
365 | |||
366 | /****************************************************************************/ | ||
367 | |||
368 | static void mcf_config_port(struct uart_port *port, int flags) | ||
369 | { | ||
370 | port->type = PORT_MCF; | ||
371 | |||
372 | /* Clear mask, so no surprise interrupts. */ | ||
373 | writeb(0, port->membase + MCFUART_UIMR); | ||
374 | |||
375 | if (request_irq(port->irq, mcf_interrupt, IRQF_DISABLED, "UART", port)) | ||
376 | printk(KERN_ERR "MCF: unable to attach ColdFire UART %d " | ||
377 | "interrupt vector=%d\n", port->line, port->irq); | ||
378 | } | ||
379 | |||
380 | /****************************************************************************/ | ||
381 | |||
382 | static const char *mcf_type(struct uart_port *port) | ||
383 | { | ||
384 | return (port->type == PORT_MCF) ? "ColdFire UART" : NULL; | ||
385 | } | ||
386 | |||
387 | /****************************************************************************/ | ||
388 | |||
389 | static int mcf_request_port(struct uart_port *port) | ||
390 | { | ||
391 | /* UARTs always present */ | ||
392 | return 0; | ||
393 | } | ||
394 | |||
395 | /****************************************************************************/ | ||
396 | |||
397 | static void mcf_release_port(struct uart_port *port) | ||
398 | { | ||
399 | /* Nothing to release... */ | ||
400 | } | ||
401 | |||
402 | /****************************************************************************/ | ||
403 | |||
404 | static int mcf_verify_port(struct uart_port *port, struct serial_struct *ser) | ||
405 | { | ||
406 | if ((ser->type != PORT_UNKNOWN) && (ser->type != PORT_MCF)) | ||
407 | return -EINVAL; | ||
408 | return 0; | ||
409 | } | ||
410 | |||
411 | /****************************************************************************/ | ||
412 | |||
413 | /* | ||
414 | * Define the basic serial functions we support. | ||
415 | */ | ||
416 | static struct uart_ops mcf_uart_ops = { | ||
417 | .tx_empty = mcf_tx_empty, | ||
418 | .get_mctrl = mcf_get_mctrl, | ||
419 | .set_mctrl = mcf_set_mctrl, | ||
420 | .start_tx = mcf_start_tx, | ||
421 | .stop_tx = mcf_stop_tx, | ||
422 | .stop_rx = mcf_stop_rx, | ||
423 | .enable_ms = mcf_enable_ms, | ||
424 | .break_ctl = mcf_break_ctl, | ||
425 | .startup = mcf_startup, | ||
426 | .shutdown = mcf_shutdown, | ||
427 | .set_termios = mcf_set_termios, | ||
428 | .type = mcf_type, | ||
429 | .request_port = mcf_request_port, | ||
430 | .release_port = mcf_release_port, | ||
431 | .config_port = mcf_config_port, | ||
432 | .verify_port = mcf_verify_port, | ||
433 | }; | ||
434 | |||
435 | static struct mcf_uart mcf_ports[3]; | ||
436 | |||
437 | #define MCF_MAXPORTS (sizeof(mcf_ports) / sizeof(struct mcf_uart)) | ||
438 | |||
439 | /****************************************************************************/ | ||
440 | #if defined(CONFIG_SERIAL_MCF_CONSOLE) | ||
441 | /****************************************************************************/ | ||
442 | |||
443 | int __init early_mcf_setup(struct mcf_platform_uart *platp) | ||
444 | { | ||
445 | struct uart_port *port; | ||
446 | int i; | ||
447 | |||
448 | for (i = 0; ((i < MCF_MAXPORTS) && (platp[i].mapbase)); i++) { | ||
449 | port = &mcf_ports[i].port; | ||
450 | |||
451 | port->line = i; | ||
452 | port->type = PORT_MCF; | ||
453 | port->mapbase = platp[i].mapbase; | ||
454 | port->membase = (platp[i].membase) ? platp[i].membase : | ||
455 | (unsigned char __iomem *) port->mapbase; | ||
456 | port->iotype = SERIAL_IO_MEM; | ||
457 | port->irq = platp[i].irq; | ||
458 | port->uartclk = MCF_BUSCLK; | ||
459 | port->flags = ASYNC_BOOT_AUTOCONF; | ||
460 | port->ops = &mcf_uart_ops; | ||
461 | } | ||
462 | |||
463 | return 0; | ||
464 | } | ||
465 | |||
466 | /****************************************************************************/ | ||
467 | |||
468 | static void mcf_console_putc(struct console *co, const char c) | ||
469 | { | ||
470 | struct uart_port *port = &(mcf_ports + co->index)->port; | ||
471 | int i; | ||
472 | |||
473 | for (i = 0; (i < 0x10000); i++) { | ||
474 | if (readb(port->membase + MCFUART_USR) & MCFUART_USR_TXREADY) | ||
475 | break; | ||
476 | } | ||
477 | writeb(c, port->membase + MCFUART_UTB); | ||
478 | for (i = 0; (i < 0x10000); i++) { | ||
479 | if (readb(port->membase + MCFUART_USR) & MCFUART_USR_TXREADY) | ||
480 | break; | ||
481 | } | ||
482 | } | ||
483 | |||
484 | /****************************************************************************/ | ||
485 | |||
486 | static void mcf_console_write(struct console *co, const char *s, unsigned int count) | ||
487 | { | ||
488 | for (; (count); count--, s++) { | ||
489 | mcf_console_putc(co, *s); | ||
490 | if (*s == '\n') | ||
491 | mcf_console_putc(co, '\r'); | ||
492 | } | ||
493 | } | ||
494 | |||
495 | /****************************************************************************/ | ||
496 | |||
497 | static int __init mcf_console_setup(struct console *co, char *options) | ||
498 | { | ||
499 | struct uart_port *port; | ||
500 | int baud = CONFIG_SERIAL_MCF_BAUDRATE; | ||
501 | int bits = 8; | ||
502 | int parity = 'n'; | ||
503 | int flow = 'n'; | ||
504 | |||
505 | if ((co->index >= 0) && (co->index <= MCF_MAXPORTS)) | ||
506 | co->index = 0; | ||
507 | port = &mcf_ports[co->index].port; | ||
508 | if (port->membase == 0) | ||
509 | return -ENODEV; | ||
510 | |||
511 | if (options) | ||
512 | uart_parse_options(options, &baud, &parity, &bits, &flow); | ||
513 | |||
514 | return uart_set_options(port, co, baud, parity, bits, flow); | ||
515 | } | ||
516 | |||
517 | /****************************************************************************/ | ||
518 | |||
519 | static struct uart_driver mcf_driver; | ||
520 | |||
521 | static struct console mcf_console = { | ||
522 | .name = "ttyS", | ||
523 | .write = mcf_console_write, | ||
524 | .device = uart_console_device, | ||
525 | .setup = mcf_console_setup, | ||
526 | .flags = CON_PRINTBUFFER, | ||
527 | .index = -1, | ||
528 | .data = &mcf_driver, | ||
529 | }; | ||
530 | |||
531 | static int __init mcf_console_init(void) | ||
532 | { | ||
533 | register_console(&mcf_console); | ||
534 | return 0; | ||
535 | } | ||
536 | |||
537 | console_initcall(mcf_console_init); | ||
538 | |||
539 | #define MCF_CONSOLE &mcf_console | ||
540 | |||
541 | /****************************************************************************/ | ||
542 | #else | ||
543 | /****************************************************************************/ | ||
544 | |||
545 | #define MCF_CONSOLE NULL | ||
546 | |||
547 | /****************************************************************************/ | ||
548 | #endif /* CONFIG_MCF_CONSOLE */ | ||
549 | /****************************************************************************/ | ||
550 | |||
551 | /* | ||
552 | * Define the mcf UART driver structure. | ||
553 | */ | ||
554 | static struct uart_driver mcf_driver = { | ||
555 | .owner = THIS_MODULE, | ||
556 | .driver_name = "mcf", | ||
557 | .dev_name = "ttyS", | ||
558 | .major = TTY_MAJOR, | ||
559 | .minor = 64, | ||
560 | .nr = MCF_MAXPORTS, | ||
561 | .cons = MCF_CONSOLE, | ||
562 | }; | ||
563 | |||
564 | /****************************************************************************/ | ||
565 | |||
566 | static int __devinit mcf_probe(struct platform_device *pdev) | ||
567 | { | ||
568 | struct mcf_platform_uart *platp = pdev->dev.platform_data; | ||
569 | struct uart_port *port; | ||
570 | int i; | ||
571 | |||
572 | for (i = 0; ((i < MCF_MAXPORTS) && (platp[i].mapbase)); i++) { | ||
573 | port = &mcf_ports[i].port; | ||
574 | |||
575 | port->line = i; | ||
576 | port->type = PORT_MCF; | ||
577 | port->mapbase = platp[i].mapbase; | ||
578 | port->membase = (platp[i].membase) ? platp[i].membase : | ||
579 | (unsigned char __iomem *) platp[i].mapbase; | ||
580 | port->iotype = SERIAL_IO_MEM; | ||
581 | port->irq = platp[i].irq; | ||
582 | port->uartclk = MCF_BUSCLK; | ||
583 | port->ops = &mcf_uart_ops; | ||
584 | port->flags = ASYNC_BOOT_AUTOCONF; | ||
585 | |||
586 | uart_add_one_port(&mcf_driver, port); | ||
587 | } | ||
588 | |||
589 | return 0; | ||
590 | } | ||
591 | |||
592 | /****************************************************************************/ | ||
593 | |||
594 | static int mcf_remove(struct platform_device *pdev) | ||
595 | { | ||
596 | struct uart_port *port; | ||
597 | int i; | ||
598 | |||
599 | for (i = 0; (i < MCF_MAXPORTS); i++) { | ||
600 | port = &mcf_ports[i].port; | ||
601 | if (port) | ||
602 | uart_remove_one_port(&mcf_driver, port); | ||
603 | } | ||
604 | |||
605 | return 0; | ||
606 | } | ||
607 | |||
608 | /****************************************************************************/ | ||
609 | |||
610 | static struct platform_driver mcf_platform_driver = { | ||
611 | .probe = mcf_probe, | ||
612 | .remove = __devexit_p(mcf_remove), | ||
613 | .driver = { | ||
614 | .name = "mcfuart", | ||
615 | .owner = THIS_MODULE, | ||
616 | }, | ||
617 | }; | ||
618 | |||
619 | /****************************************************************************/ | ||
620 | |||
621 | static int __init mcf_init(void) | ||
622 | { | ||
623 | int rc; | ||
624 | |||
625 | printk("ColdFire internal UART serial driver\n"); | ||
626 | |||
627 | rc = uart_register_driver(&mcf_driver); | ||
628 | if (rc) | ||
629 | return rc; | ||
630 | rc = platform_driver_register(&mcf_platform_driver); | ||
631 | if (rc) | ||
632 | return rc; | ||
633 | return 0; | ||
634 | } | ||
635 | |||
636 | /****************************************************************************/ | ||
637 | |||
638 | static void __exit mcf_exit(void) | ||
639 | { | ||
640 | platform_driver_unregister(&mcf_platform_driver); | ||
641 | uart_unregister_driver(&mcf_driver); | ||
642 | } | ||
643 | |||
644 | /****************************************************************************/ | ||
645 | |||
646 | module_init(mcf_init); | ||
647 | module_exit(mcf_exit); | ||
648 | |||
649 | MODULE_AUTHOR("Greg Ungerer <gerg@snapgear.com>"); | ||
650 | MODULE_DESCRIPTION("Freescale ColdFire UART driver"); | ||
651 | MODULE_LICENSE("GPL"); | ||
652 | |||
653 | /****************************************************************************/ | ||
diff --git a/fs/jffs2/acl.c b/fs/jffs2/acl.c index 8ec9323e830a..9728614b8958 100644 --- a/fs/jffs2/acl.c +++ b/fs/jffs2/acl.c | |||
@@ -228,11 +228,28 @@ struct posix_acl *jffs2_get_acl(struct inode *inode, int type) | |||
228 | return acl; | 228 | return acl; |
229 | } | 229 | } |
230 | 230 | ||
231 | static int __jffs2_set_acl(struct inode *inode, int xprefix, struct posix_acl *acl) | ||
232 | { | ||
233 | char *value = NULL; | ||
234 | size_t size = 0; | ||
235 | int rc; | ||
236 | |||
237 | if (acl) { | ||
238 | value = jffs2_acl_to_medium(acl, &size); | ||
239 | if (IS_ERR(value)) | ||
240 | return PTR_ERR(value); | ||
241 | } | ||
242 | rc = do_jffs2_setxattr(inode, xprefix, "", value, size, 0); | ||
243 | if (!value && rc == -ENODATA) | ||
244 | rc = 0; | ||
245 | kfree(value); | ||
246 | |||
247 | return rc; | ||
248 | } | ||
249 | |||
231 | static int jffs2_set_acl(struct inode *inode, int type, struct posix_acl *acl) | 250 | static int jffs2_set_acl(struct inode *inode, int type, struct posix_acl *acl) |
232 | { | 251 | { |
233 | struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); | 252 | struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); |
234 | size_t size = 0; | ||
235 | char *value = NULL; | ||
236 | int rc, xprefix; | 253 | int rc, xprefix; |
237 | 254 | ||
238 | if (S_ISLNK(inode->i_mode)) | 255 | if (S_ISLNK(inode->i_mode)) |
@@ -267,17 +284,7 @@ static int jffs2_set_acl(struct inode *inode, int type, struct posix_acl *acl) | |||
267 | default: | 284 | default: |
268 | return -EINVAL; | 285 | return -EINVAL; |
269 | } | 286 | } |
270 | if (acl) { | 287 | rc = __jffs2_set_acl(inode, xprefix, acl); |
271 | value = jffs2_acl_to_medium(acl, &size); | ||
272 | if (IS_ERR(value)) | ||
273 | return PTR_ERR(value); | ||
274 | } | ||
275 | |||
276 | rc = do_jffs2_setxattr(inode, xprefix, "", value, size, 0); | ||
277 | if (!value && rc == -ENODATA) | ||
278 | rc = 0; | ||
279 | if (value) | ||
280 | kfree(value); | ||
281 | if (!rc) { | 288 | if (!rc) { |
282 | switch(type) { | 289 | switch(type) { |
283 | case ACL_TYPE_ACCESS: | 290 | case ACL_TYPE_ACCESS: |
@@ -312,37 +319,59 @@ int jffs2_permission(struct inode *inode, int mask, struct nameidata *nd) | |||
312 | return generic_permission(inode, mask, jffs2_check_acl); | 319 | return generic_permission(inode, mask, jffs2_check_acl); |
313 | } | 320 | } |
314 | 321 | ||
315 | int jffs2_init_acl(struct inode *inode, struct posix_acl *acl) | 322 | int jffs2_init_acl_pre(struct inode *dir_i, struct inode *inode, int *i_mode) |
316 | { | 323 | { |
317 | struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); | 324 | struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); |
318 | struct posix_acl *clone; | 325 | struct posix_acl *acl, *clone; |
319 | mode_t mode; | 326 | int rc; |
320 | int rc = 0; | ||
321 | 327 | ||
322 | f->i_acl_access = JFFS2_ACL_NOT_CACHED; | 328 | f->i_acl_default = NULL; |
323 | f->i_acl_default = JFFS2_ACL_NOT_CACHED; | 329 | f->i_acl_access = NULL; |
330 | |||
331 | if (S_ISLNK(*i_mode)) | ||
332 | return 0; /* Symlink always has no-ACL */ | ||
333 | |||
334 | acl = jffs2_get_acl(dir_i, ACL_TYPE_DEFAULT); | ||
335 | if (IS_ERR(acl)) | ||
336 | return PTR_ERR(acl); | ||
337 | |||
338 | if (!acl) { | ||
339 | *i_mode &= ~current->fs->umask; | ||
340 | } else { | ||
341 | if (S_ISDIR(*i_mode)) | ||
342 | jffs2_iset_acl(inode, &f->i_acl_default, acl); | ||
324 | 343 | ||
325 | if (acl) { | ||
326 | if (S_ISDIR(inode->i_mode)) { | ||
327 | rc = jffs2_set_acl(inode, ACL_TYPE_DEFAULT, acl); | ||
328 | if (rc) | ||
329 | goto cleanup; | ||
330 | } | ||
331 | clone = posix_acl_clone(acl, GFP_KERNEL); | 344 | clone = posix_acl_clone(acl, GFP_KERNEL); |
332 | rc = -ENOMEM; | ||
333 | if (!clone) | 345 | if (!clone) |
334 | goto cleanup; | 346 | return -ENOMEM; |
335 | mode = inode->i_mode; | 347 | rc = posix_acl_create_masq(clone, (mode_t *)i_mode); |
336 | rc = posix_acl_create_masq(clone, &mode); | 348 | if (rc < 0) |
337 | if (rc >= 0) { | 349 | return rc; |
338 | inode->i_mode = mode; | 350 | if (rc > 0) |
339 | if (rc > 0) | 351 | jffs2_iset_acl(inode, &f->i_acl_access, clone); |
340 | rc = jffs2_set_acl(inode, ACL_TYPE_ACCESS, clone); | 352 | |
341 | } | ||
342 | posix_acl_release(clone); | 353 | posix_acl_release(clone); |
343 | } | 354 | } |
344 | cleanup: | 355 | return 0; |
345 | posix_acl_release(acl); | 356 | } |
357 | |||
358 | int jffs2_init_acl_post(struct inode *inode) | ||
359 | { | ||
360 | struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); | ||
361 | int rc; | ||
362 | |||
363 | if (f->i_acl_default) { | ||
364 | rc = __jffs2_set_acl(inode, JFFS2_XPREFIX_ACL_DEFAULT, f->i_acl_default); | ||
365 | if (rc) | ||
366 | return rc; | ||
367 | } | ||
368 | |||
369 | if (f->i_acl_access) { | ||
370 | rc = __jffs2_set_acl(inode, JFFS2_XPREFIX_ACL_ACCESS, f->i_acl_access); | ||
371 | if (rc) | ||
372 | return rc; | ||
373 | } | ||
374 | |||
346 | return rc; | 375 | return rc; |
347 | } | 376 | } |
348 | 377 | ||
diff --git a/fs/jffs2/acl.h b/fs/jffs2/acl.h index 90a2dbf59051..76c6ebd1acd9 100644 --- a/fs/jffs2/acl.h +++ b/fs/jffs2/acl.h | |||
@@ -31,7 +31,8 @@ struct jffs2_acl_header { | |||
31 | extern struct posix_acl *jffs2_get_acl(struct inode *inode, int type); | 31 | extern struct posix_acl *jffs2_get_acl(struct inode *inode, int type); |
32 | extern int jffs2_permission(struct inode *, int, struct nameidata *); | 32 | extern int jffs2_permission(struct inode *, int, struct nameidata *); |
33 | extern int jffs2_acl_chmod(struct inode *); | 33 | extern int jffs2_acl_chmod(struct inode *); |
34 | extern int jffs2_init_acl(struct inode *, struct posix_acl *); | 34 | extern int jffs2_init_acl_pre(struct inode *, struct inode *, int *); |
35 | extern int jffs2_init_acl_post(struct inode *); | ||
35 | extern void jffs2_clear_acl(struct jffs2_inode_info *); | 36 | extern void jffs2_clear_acl(struct jffs2_inode_info *); |
36 | 37 | ||
37 | extern struct xattr_handler jffs2_acl_access_xattr_handler; | 38 | extern struct xattr_handler jffs2_acl_access_xattr_handler; |
@@ -39,10 +40,11 @@ extern struct xattr_handler jffs2_acl_default_xattr_handler; | |||
39 | 40 | ||
40 | #else | 41 | #else |
41 | 42 | ||
42 | #define jffs2_get_acl(inode, type) (NULL) | 43 | #define jffs2_get_acl(inode, type) (NULL) |
43 | #define jffs2_permission NULL | 44 | #define jffs2_permission (NULL) |
44 | #define jffs2_acl_chmod(inode) (0) | 45 | #define jffs2_acl_chmod(inode) (0) |
45 | #define jffs2_init_acl(inode,dir) (0) | 46 | #define jffs2_init_acl_pre(dir_i,inode,mode) (0) |
47 | #define jffs2_init_acl_post(inode) (0) | ||
46 | #define jffs2_clear_acl(f) | 48 | #define jffs2_clear_acl(f) |
47 | 49 | ||
48 | #endif /* CONFIG_JFFS2_FS_POSIX_ACL */ | 50 | #endif /* CONFIG_JFFS2_FS_POSIX_ACL */ |
diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c index 8353eb9c1799..787e392ffd41 100644 --- a/fs/jffs2/dir.c +++ b/fs/jffs2/dir.c | |||
@@ -182,7 +182,6 @@ static int jffs2_create(struct inode *dir_i, struct dentry *dentry, int mode, | |||
182 | struct jffs2_inode_info *f, *dir_f; | 182 | struct jffs2_inode_info *f, *dir_f; |
183 | struct jffs2_sb_info *c; | 183 | struct jffs2_sb_info *c; |
184 | struct inode *inode; | 184 | struct inode *inode; |
185 | struct posix_acl *acl; | ||
186 | int ret; | 185 | int ret; |
187 | 186 | ||
188 | ri = jffs2_alloc_raw_inode(); | 187 | ri = jffs2_alloc_raw_inode(); |
@@ -193,7 +192,7 @@ static int jffs2_create(struct inode *dir_i, struct dentry *dentry, int mode, | |||
193 | 192 | ||
194 | D1(printk(KERN_DEBUG "jffs2_create()\n")); | 193 | D1(printk(KERN_DEBUG "jffs2_create()\n")); |
195 | 194 | ||
196 | inode = jffs2_new_inode(dir_i, mode, ri, &acl); | 195 | inode = jffs2_new_inode(dir_i, mode, ri); |
197 | 196 | ||
198 | if (IS_ERR(inode)) { | 197 | if (IS_ERR(inode)) { |
199 | D1(printk(KERN_DEBUG "jffs2_new_inode() failed\n")); | 198 | D1(printk(KERN_DEBUG "jffs2_new_inode() failed\n")); |
@@ -211,14 +210,6 @@ static int jffs2_create(struct inode *dir_i, struct dentry *dentry, int mode, | |||
211 | 210 | ||
212 | ret = jffs2_do_create(c, dir_f, f, ri, | 211 | ret = jffs2_do_create(c, dir_f, f, ri, |
213 | dentry->d_name.name, dentry->d_name.len); | 212 | dentry->d_name.name, dentry->d_name.len); |
214 | |||
215 | if (ret) | ||
216 | goto fail_acl; | ||
217 | |||
218 | ret = jffs2_init_security(inode, dir_i); | ||
219 | if (ret) | ||
220 | goto fail_acl; | ||
221 | ret = jffs2_init_acl(inode, acl); | ||
222 | if (ret) | 213 | if (ret) |
223 | goto fail; | 214 | goto fail; |
224 | 215 | ||
@@ -231,8 +222,6 @@ static int jffs2_create(struct inode *dir_i, struct dentry *dentry, int mode, | |||
231 | inode->i_ino, inode->i_mode, inode->i_nlink, f->inocache->nlink, inode->i_mapping->nrpages)); | 222 | inode->i_ino, inode->i_mode, inode->i_nlink, f->inocache->nlink, inode->i_mapping->nrpages)); |
232 | return 0; | 223 | return 0; |
233 | 224 | ||
234 | fail_acl: | ||
235 | posix_acl_release(acl); | ||
236 | fail: | 225 | fail: |
237 | make_bad_inode(inode); | 226 | make_bad_inode(inode); |
238 | iput(inode); | 227 | iput(inode); |
@@ -309,7 +298,6 @@ static int jffs2_symlink (struct inode *dir_i, struct dentry *dentry, const char | |||
309 | struct jffs2_full_dirent *fd; | 298 | struct jffs2_full_dirent *fd; |
310 | int namelen; | 299 | int namelen; |
311 | uint32_t alloclen; | 300 | uint32_t alloclen; |
312 | struct posix_acl *acl; | ||
313 | int ret, targetlen = strlen(target); | 301 | int ret, targetlen = strlen(target); |
314 | 302 | ||
315 | /* FIXME: If you care. We'd need to use frags for the target | 303 | /* FIXME: If you care. We'd need to use frags for the target |
@@ -336,7 +324,7 @@ static int jffs2_symlink (struct inode *dir_i, struct dentry *dentry, const char | |||
336 | return ret; | 324 | return ret; |
337 | } | 325 | } |
338 | 326 | ||
339 | inode = jffs2_new_inode(dir_i, S_IFLNK | S_IRWXUGO, ri, &acl); | 327 | inode = jffs2_new_inode(dir_i, S_IFLNK | S_IRWXUGO, ri); |
340 | 328 | ||
341 | if (IS_ERR(inode)) { | 329 | if (IS_ERR(inode)) { |
342 | jffs2_free_raw_inode(ri); | 330 | jffs2_free_raw_inode(ri); |
@@ -366,7 +354,6 @@ static int jffs2_symlink (struct inode *dir_i, struct dentry *dentry, const char | |||
366 | up(&f->sem); | 354 | up(&f->sem); |
367 | jffs2_complete_reservation(c); | 355 | jffs2_complete_reservation(c); |
368 | jffs2_clear_inode(inode); | 356 | jffs2_clear_inode(inode); |
369 | posix_acl_release(acl); | ||
370 | return PTR_ERR(fn); | 357 | return PTR_ERR(fn); |
371 | } | 358 | } |
372 | 359 | ||
@@ -377,7 +364,6 @@ static int jffs2_symlink (struct inode *dir_i, struct dentry *dentry, const char | |||
377 | up(&f->sem); | 364 | up(&f->sem); |
378 | jffs2_complete_reservation(c); | 365 | jffs2_complete_reservation(c); |
379 | jffs2_clear_inode(inode); | 366 | jffs2_clear_inode(inode); |
380 | posix_acl_release(acl); | ||
381 | return -ENOMEM; | 367 | return -ENOMEM; |
382 | } | 368 | } |
383 | 369 | ||
@@ -395,10 +381,9 @@ static int jffs2_symlink (struct inode *dir_i, struct dentry *dentry, const char | |||
395 | ret = jffs2_init_security(inode, dir_i); | 381 | ret = jffs2_init_security(inode, dir_i); |
396 | if (ret) { | 382 | if (ret) { |
397 | jffs2_clear_inode(inode); | 383 | jffs2_clear_inode(inode); |
398 | posix_acl_release(acl); | ||
399 | return ret; | 384 | return ret; |
400 | } | 385 | } |
401 | ret = jffs2_init_acl(inode, acl); | 386 | ret = jffs2_init_acl_post(inode); |
402 | if (ret) { | 387 | if (ret) { |
403 | jffs2_clear_inode(inode); | 388 | jffs2_clear_inode(inode); |
404 | return ret; | 389 | return ret; |
@@ -476,7 +461,6 @@ static int jffs2_mkdir (struct inode *dir_i, struct dentry *dentry, int mode) | |||
476 | struct jffs2_full_dirent *fd; | 461 | struct jffs2_full_dirent *fd; |
477 | int namelen; | 462 | int namelen; |
478 | uint32_t alloclen; | 463 | uint32_t alloclen; |
479 | struct posix_acl *acl; | ||
480 | int ret; | 464 | int ret; |
481 | 465 | ||
482 | mode |= S_IFDIR; | 466 | mode |= S_IFDIR; |
@@ -499,7 +483,7 @@ static int jffs2_mkdir (struct inode *dir_i, struct dentry *dentry, int mode) | |||
499 | return ret; | 483 | return ret; |
500 | } | 484 | } |
501 | 485 | ||
502 | inode = jffs2_new_inode(dir_i, mode, ri, &acl); | 486 | inode = jffs2_new_inode(dir_i, mode, ri); |
503 | 487 | ||
504 | if (IS_ERR(inode)) { | 488 | if (IS_ERR(inode)) { |
505 | jffs2_free_raw_inode(ri); | 489 | jffs2_free_raw_inode(ri); |
@@ -526,7 +510,6 @@ static int jffs2_mkdir (struct inode *dir_i, struct dentry *dentry, int mode) | |||
526 | up(&f->sem); | 510 | up(&f->sem); |
527 | jffs2_complete_reservation(c); | 511 | jffs2_complete_reservation(c); |
528 | jffs2_clear_inode(inode); | 512 | jffs2_clear_inode(inode); |
529 | posix_acl_release(acl); | ||
530 | return PTR_ERR(fn); | 513 | return PTR_ERR(fn); |
531 | } | 514 | } |
532 | /* No data here. Only a metadata node, which will be | 515 | /* No data here. Only a metadata node, which will be |
@@ -540,10 +523,9 @@ static int jffs2_mkdir (struct inode *dir_i, struct dentry *dentry, int mode) | |||
540 | ret = jffs2_init_security(inode, dir_i); | 523 | ret = jffs2_init_security(inode, dir_i); |
541 | if (ret) { | 524 | if (ret) { |
542 | jffs2_clear_inode(inode); | 525 | jffs2_clear_inode(inode); |
543 | posix_acl_release(acl); | ||
544 | return ret; | 526 | return ret; |
545 | } | 527 | } |
546 | ret = jffs2_init_acl(inode, acl); | 528 | ret = jffs2_init_acl_post(inode); |
547 | if (ret) { | 529 | if (ret) { |
548 | jffs2_clear_inode(inode); | 530 | jffs2_clear_inode(inode); |
549 | return ret; | 531 | return ret; |
@@ -639,7 +621,6 @@ static int jffs2_mknod (struct inode *dir_i, struct dentry *dentry, int mode, de | |||
639 | union jffs2_device_node dev; | 621 | union jffs2_device_node dev; |
640 | int devlen = 0; | 622 | int devlen = 0; |
641 | uint32_t alloclen; | 623 | uint32_t alloclen; |
642 | struct posix_acl *acl; | ||
643 | int ret; | 624 | int ret; |
644 | 625 | ||
645 | if (!new_valid_dev(rdev)) | 626 | if (!new_valid_dev(rdev)) |
@@ -666,7 +647,7 @@ static int jffs2_mknod (struct inode *dir_i, struct dentry *dentry, int mode, de | |||
666 | return ret; | 647 | return ret; |
667 | } | 648 | } |
668 | 649 | ||
669 | inode = jffs2_new_inode(dir_i, mode, ri, &acl); | 650 | inode = jffs2_new_inode(dir_i, mode, ri); |
670 | 651 | ||
671 | if (IS_ERR(inode)) { | 652 | if (IS_ERR(inode)) { |
672 | jffs2_free_raw_inode(ri); | 653 | jffs2_free_raw_inode(ri); |
@@ -695,7 +676,6 @@ static int jffs2_mknod (struct inode *dir_i, struct dentry *dentry, int mode, de | |||
695 | up(&f->sem); | 676 | up(&f->sem); |
696 | jffs2_complete_reservation(c); | 677 | jffs2_complete_reservation(c); |
697 | jffs2_clear_inode(inode); | 678 | jffs2_clear_inode(inode); |
698 | posix_acl_release(acl); | ||
699 | return PTR_ERR(fn); | 679 | return PTR_ERR(fn); |
700 | } | 680 | } |
701 | /* No data here. Only a metadata node, which will be | 681 | /* No data here. Only a metadata node, which will be |
@@ -709,10 +689,9 @@ static int jffs2_mknod (struct inode *dir_i, struct dentry *dentry, int mode, de | |||
709 | ret = jffs2_init_security(inode, dir_i); | 689 | ret = jffs2_init_security(inode, dir_i); |
710 | if (ret) { | 690 | if (ret) { |
711 | jffs2_clear_inode(inode); | 691 | jffs2_clear_inode(inode); |
712 | posix_acl_release(acl); | ||
713 | return ret; | 692 | return ret; |
714 | } | 693 | } |
715 | ret = jffs2_init_acl(inode, acl); | 694 | ret = jffs2_init_acl_post(inode); |
716 | if (ret) { | 695 | if (ret) { |
717 | jffs2_clear_inode(inode); | 696 | jffs2_clear_inode(inode); |
718 | return ret; | 697 | return ret; |
diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c index 023a17539dd4..f9c5dd6f4b64 100644 --- a/fs/jffs2/file.c +++ b/fs/jffs2/file.c | |||
@@ -255,7 +255,7 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping, | |||
255 | _whole_ page. This helps to reduce the number of | 255 | _whole_ page. This helps to reduce the number of |
256 | nodes in files which have many short writes, like | 256 | nodes in files which have many short writes, like |
257 | syslog files. */ | 257 | syslog files. */ |
258 | start = aligned_start = 0; | 258 | aligned_start = 0; |
259 | } | 259 | } |
260 | 260 | ||
261 | ri = jffs2_alloc_raw_inode(); | 261 | ri = jffs2_alloc_raw_inode(); |
@@ -291,14 +291,11 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping, | |||
291 | } | 291 | } |
292 | 292 | ||
293 | /* Adjust writtenlen for the padding we did, so we don't confuse our caller */ | 293 | /* Adjust writtenlen for the padding we did, so we don't confuse our caller */ |
294 | if (writtenlen < (start&3)) | 294 | writtenlen -= min(writtenlen, (start - aligned_start)); |
295 | writtenlen = 0; | ||
296 | else | ||
297 | writtenlen -= (start&3); | ||
298 | 295 | ||
299 | if (writtenlen) { | 296 | if (writtenlen) { |
300 | if (inode->i_size < (pg->index << PAGE_CACHE_SHIFT) + start + writtenlen) { | 297 | if (inode->i_size < pos + writtenlen) { |
301 | inode->i_size = (pg->index << PAGE_CACHE_SHIFT) + start + writtenlen; | 298 | inode->i_size = pos + writtenlen; |
302 | inode->i_blocks = (inode->i_size + 511) >> 9; | 299 | inode->i_blocks = (inode->i_size + 511) >> 9; |
303 | 300 | ||
304 | inode->i_ctime = inode->i_mtime = ITIME(je32_to_cpu(ri->ctime)); | 301 | inode->i_ctime = inode->i_mtime = ITIME(je32_to_cpu(ri->ctime)); |
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index ed85f9afdbc8..d2e06f7ea96f 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c | |||
@@ -402,8 +402,7 @@ void jffs2_write_super (struct super_block *sb) | |||
402 | 402 | ||
403 | /* jffs2_new_inode: allocate a new inode and inocache, add it to the hash, | 403 | /* jffs2_new_inode: allocate a new inode and inocache, add it to the hash, |
404 | fill in the raw_inode while you're at it. */ | 404 | fill in the raw_inode while you're at it. */ |
405 | struct inode *jffs2_new_inode (struct inode *dir_i, int mode, struct jffs2_raw_inode *ri, | 405 | struct inode *jffs2_new_inode (struct inode *dir_i, int mode, struct jffs2_raw_inode *ri) |
406 | struct posix_acl **acl) | ||
407 | { | 406 | { |
408 | struct inode *inode; | 407 | struct inode *inode; |
409 | struct super_block *sb = dir_i->i_sb; | 408 | struct super_block *sb = dir_i->i_sb; |
@@ -438,19 +437,11 @@ struct inode *jffs2_new_inode (struct inode *dir_i, int mode, struct jffs2_raw_i | |||
438 | 437 | ||
439 | /* POSIX ACLs have to be processed now, at least partly. | 438 | /* POSIX ACLs have to be processed now, at least partly. |
440 | The umask is only applied if there's no default ACL */ | 439 | The umask is only applied if there's no default ACL */ |
441 | if (!S_ISLNK(mode)) { | 440 | ret = jffs2_init_acl_pre(dir_i, inode, &mode); |
442 | *acl = jffs2_get_acl(dir_i, ACL_TYPE_DEFAULT); | 441 | if (ret) { |
443 | if (IS_ERR(*acl)) { | 442 | make_bad_inode(inode); |
444 | make_bad_inode(inode); | 443 | iput(inode); |
445 | iput(inode); | 444 | return ERR_PTR(ret); |
446 | inode = (void *)*acl; | ||
447 | *acl = NULL; | ||
448 | return inode; | ||
449 | } | ||
450 | if (!(*acl)) | ||
451 | mode &= ~current->fs->umask; | ||
452 | } else { | ||
453 | *acl = NULL; | ||
454 | } | 445 | } |
455 | ret = jffs2_do_new_inode (c, f, mode, ri); | 446 | ret = jffs2_do_new_inode (c, f, mode, ri); |
456 | if (ret) { | 447 | if (ret) { |
diff --git a/fs/jffs2/os-linux.h b/fs/jffs2/os-linux.h index f6743a915cf3..bf64686cf098 100644 --- a/fs/jffs2/os-linux.h +++ b/fs/jffs2/os-linux.h | |||
@@ -173,15 +173,13 @@ int jffs2_ioctl(struct inode *, struct file *, unsigned int, unsigned long); | |||
173 | extern const struct inode_operations jffs2_symlink_inode_operations; | 173 | extern const struct inode_operations jffs2_symlink_inode_operations; |
174 | 174 | ||
175 | /* fs.c */ | 175 | /* fs.c */ |
176 | struct posix_acl; | ||
177 | |||
178 | int jffs2_setattr (struct dentry *, struct iattr *); | 176 | int jffs2_setattr (struct dentry *, struct iattr *); |
179 | int jffs2_do_setattr (struct inode *, struct iattr *); | 177 | int jffs2_do_setattr (struct inode *, struct iattr *); |
180 | void jffs2_read_inode (struct inode *); | 178 | void jffs2_read_inode (struct inode *); |
181 | void jffs2_clear_inode (struct inode *); | 179 | void jffs2_clear_inode (struct inode *); |
182 | void jffs2_dirty_inode(struct inode *inode); | 180 | void jffs2_dirty_inode(struct inode *inode); |
183 | struct inode *jffs2_new_inode (struct inode *dir_i, int mode, | 181 | struct inode *jffs2_new_inode (struct inode *dir_i, int mode, |
184 | struct jffs2_raw_inode *ri, struct posix_acl **acl); | 182 | struct jffs2_raw_inode *ri); |
185 | int jffs2_statfs (struct dentry *, struct kstatfs *); | 183 | int jffs2_statfs (struct dentry *, struct kstatfs *); |
186 | void jffs2_write_super (struct super_block *); | 184 | void jffs2_write_super (struct super_block *); |
187 | int jffs2_remount_fs (struct super_block *, int *, char *); | 185 | int jffs2_remount_fs (struct super_block *, int *, char *); |
diff --git a/fs/jffs2/write.c b/fs/jffs2/write.c index 2f5695446d0f..147e2cbee9e4 100644 --- a/fs/jffs2/write.c +++ b/fs/jffs2/write.c | |||
@@ -465,6 +465,14 @@ int jffs2_do_create(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, str | |||
465 | 465 | ||
466 | up(&f->sem); | 466 | up(&f->sem); |
467 | jffs2_complete_reservation(c); | 467 | jffs2_complete_reservation(c); |
468 | |||
469 | ret = jffs2_init_security(&f->vfs_inode, &dir_f->vfs_inode); | ||
470 | if (ret) | ||
471 | return ret; | ||
472 | ret = jffs2_init_acl_post(&f->vfs_inode); | ||
473 | if (ret) | ||
474 | return ret; | ||
475 | |||
468 | ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &alloclen, | 476 | ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &alloclen, |
469 | ALLOC_NORMAL, JFFS2_SUMMARY_DIRENT_SIZE(namelen)); | 477 | ALLOC_NORMAL, JFFS2_SUMMARY_DIRENT_SIZE(namelen)); |
470 | 478 | ||
diff --git a/include/asm-arm/dma-mapping.h b/include/asm-arm/dma-mapping.h index 1eb8aac43228..e99406a7bece 100644 --- a/include/asm-arm/dma-mapping.h +++ b/include/asm-arm/dma-mapping.h | |||
@@ -5,7 +5,7 @@ | |||
5 | 5 | ||
6 | #include <linux/mm.h> /* need struct page */ | 6 | #include <linux/mm.h> /* need struct page */ |
7 | 7 | ||
8 | #include <asm/scatterlist.h> | 8 | #include <linux/scatterlist.h> |
9 | 9 | ||
10 | /* | 10 | /* |
11 | * DMA-consistent mapping functions. These allocate/free a region of | 11 | * DMA-consistent mapping functions. These allocate/free a region of |
@@ -274,8 +274,8 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
274 | for (i = 0; i < nents; i++, sg++) { | 274 | for (i = 0; i < nents; i++, sg++) { |
275 | char *virt; | 275 | char *virt; |
276 | 276 | ||
277 | sg->dma_address = page_to_dma(dev, sg->page) + sg->offset; | 277 | sg->dma_address = page_to_dma(dev, sg_page(sg)) + sg->offset; |
278 | virt = page_address(sg->page) + sg->offset; | 278 | virt = sg_virt(sg); |
279 | 279 | ||
280 | if (!arch_is_coherent()) | 280 | if (!arch_is_coherent()) |
281 | dma_cache_maint(virt, sg->length, dir); | 281 | dma_cache_maint(virt, sg->length, dir); |
@@ -371,7 +371,7 @@ dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nents, | |||
371 | int i; | 371 | int i; |
372 | 372 | ||
373 | for (i = 0; i < nents; i++, sg++) { | 373 | for (i = 0; i < nents; i++, sg++) { |
374 | char *virt = page_address(sg->page) + sg->offset; | 374 | char *virt = sg_virt(sg); |
375 | if (!arch_is_coherent()) | 375 | if (!arch_is_coherent()) |
376 | dma_cache_maint(virt, sg->length, dir); | 376 | dma_cache_maint(virt, sg->length, dir); |
377 | } | 377 | } |
@@ -384,7 +384,7 @@ dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nents, | |||
384 | int i; | 384 | int i; |
385 | 385 | ||
386 | for (i = 0; i < nents; i++, sg++) { | 386 | for (i = 0; i < nents; i++, sg++) { |
387 | char *virt = page_address(sg->page) + sg->offset; | 387 | char *virt = sg_virt(sg); |
388 | if (!arch_is_coherent()) | 388 | if (!arch_is_coherent()) |
389 | dma_cache_maint(virt, sg->length, dir); | 389 | dma_cache_maint(virt, sg->length, dir); |
390 | } | 390 | } |
diff --git a/include/asm-avr32/arch-at32ap/board.h b/include/asm-avr32/arch-at32ap/board.h index 7dbd603c38cc..d6993a6b6473 100644 --- a/include/asm-avr32/arch-at32ap/board.h +++ b/include/asm-avr32/arch-at32ap/board.h | |||
@@ -44,6 +44,13 @@ struct usba_platform_data { | |||
44 | struct platform_device * | 44 | struct platform_device * |
45 | at32_add_device_usba(unsigned int id, struct usba_platform_data *data); | 45 | at32_add_device_usba(unsigned int id, struct usba_platform_data *data); |
46 | 46 | ||
47 | struct ide_platform_data { | ||
48 | u8 cs; | ||
49 | }; | ||
50 | struct platform_device * | ||
51 | at32_add_device_ide(unsigned int id, unsigned int extint, | ||
52 | struct ide_platform_data *data); | ||
53 | |||
47 | /* depending on what's hooked up, not all SSC pins will be used */ | 54 | /* depending on what's hooked up, not all SSC pins will be used */ |
48 | #define ATMEL_SSC_TK 0x01 | 55 | #define ATMEL_SSC_TK 0x01 |
49 | #define ATMEL_SSC_TF 0x02 | 56 | #define ATMEL_SSC_TF 0x02 |
@@ -58,4 +65,20 @@ at32_add_device_usba(unsigned int id, struct usba_platform_data *data); | |||
58 | struct platform_device * | 65 | struct platform_device * |
59 | at32_add_device_ssc(unsigned int id, unsigned int flags); | 66 | at32_add_device_ssc(unsigned int id, unsigned int flags); |
60 | 67 | ||
68 | struct platform_device *at32_add_device_twi(unsigned int id); | ||
69 | struct platform_device *at32_add_device_mci(unsigned int id); | ||
70 | struct platform_device *at32_add_device_ac97c(unsigned int id); | ||
71 | struct platform_device *at32_add_device_abdac(unsigned int id); | ||
72 | |||
73 | struct cf_platform_data { | ||
74 | int detect_pin; | ||
75 | int reset_pin; | ||
76 | int vcc_pin; | ||
77 | int ready_pin; | ||
78 | u8 cs; | ||
79 | }; | ||
80 | struct platform_device * | ||
81 | at32_add_device_cf(unsigned int id, unsigned int extint, | ||
82 | struct cf_platform_data *data); | ||
83 | |||
61 | #endif /* __ASM_ARCH_BOARD_H */ | 84 | #endif /* __ASM_ARCH_BOARD_H */ |
diff --git a/include/asm-avr32/dma-mapping.h b/include/asm-avr32/dma-mapping.h index 81e342636ac4..a7131630c057 100644 --- a/include/asm-avr32/dma-mapping.h +++ b/include/asm-avr32/dma-mapping.h | |||
@@ -217,8 +217,8 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
217 | for (i = 0; i < nents; i++) { | 217 | for (i = 0; i < nents; i++) { |
218 | char *virt; | 218 | char *virt; |
219 | 219 | ||
220 | sg[i].dma_address = page_to_bus(sg[i].page) + sg[i].offset; | 220 | sg[i].dma_address = page_to_bus(sg_page(&sg[i])) + sg[i].offset; |
221 | virt = page_address(sg[i].page) + sg[i].offset; | 221 | virt = sg_virt(&sg[i]); |
222 | dma_cache_sync(dev, virt, sg[i].length, direction); | 222 | dma_cache_sync(dev, virt, sg[i].length, direction); |
223 | } | 223 | } |
224 | 224 | ||
@@ -327,8 +327,7 @@ dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, | |||
327 | int i; | 327 | int i; |
328 | 328 | ||
329 | for (i = 0; i < nents; i++) { | 329 | for (i = 0; i < nents; i++) { |
330 | dma_cache_sync(dev, page_address(sg[i].page) + sg[i].offset, | 330 | dma_cache_sync(dev, sg_virt(&sg[i]), sg[i].length, direction); |
331 | sg[i].length, direction); | ||
332 | } | 331 | } |
333 | } | 332 | } |
334 | 333 | ||
diff --git a/include/asm-blackfin/scatterlist.h b/include/asm-blackfin/scatterlist.h index 32128d53469b..04f448711cd0 100644 --- a/include/asm-blackfin/scatterlist.h +++ b/include/asm-blackfin/scatterlist.h | |||
@@ -20,7 +20,6 @@ struct scatterlist { | |||
20 | * returns, or alternatively stop on the first sg_dma_len(sg) which | 20 | * returns, or alternatively stop on the first sg_dma_len(sg) which |
21 | * is 0. | 21 | * is 0. |
22 | */ | 22 | */ |
23 | #define sg_address(sg) (page_address((sg)->page) + (sg)->offset) | ||
24 | #define sg_dma_address(sg) ((sg)->dma_address) | 23 | #define sg_dma_address(sg) ((sg)->dma_address) |
25 | #define sg_dma_len(sg) ((sg)->length) | 24 | #define sg_dma_len(sg) ((sg)->length) |
26 | 25 | ||
diff --git a/include/asm-frv/scatterlist.h b/include/asm-frv/scatterlist.h index f7da007b763c..99ba76edc42a 100644 --- a/include/asm-frv/scatterlist.h +++ b/include/asm-frv/scatterlist.h | |||
@@ -4,19 +4,19 @@ | |||
4 | #include <asm/types.h> | 4 | #include <asm/types.h> |
5 | 5 | ||
6 | /* | 6 | /* |
7 | * Drivers must set either ->address or (preferred) ->page and ->offset | 7 | * Drivers must set either ->address or (preferred) page and ->offset |
8 | * to indicate where data must be transferred to/from. | 8 | * to indicate where data must be transferred to/from. |
9 | * | 9 | * |
10 | * Using ->page is recommended since it handles highmem data as well as | 10 | * Using page is recommended since it handles highmem data as well as |
11 | * low mem. ->address is restricted to data which has a virtual mapping, and | 11 | * low mem. ->address is restricted to data which has a virtual mapping, and |
12 | * it will go away in the future. Updating to ->page can be automated very | 12 | * it will go away in the future. Updating to page can be automated very |
13 | * easily -- something like | 13 | * easily -- something like |
14 | * | 14 | * |
15 | * sg->address = some_ptr; | 15 | * sg->address = some_ptr; |
16 | * | 16 | * |
17 | * can be rewritten as | 17 | * can be rewritten as |
18 | * | 18 | * |
19 | * sg->page = virt_to_page(some_ptr); | 19 | * sg_set_page(virt_to_page(some_ptr)); |
20 | * sg->offset = (unsigned long) some_ptr & ~PAGE_MASK; | 20 | * sg->offset = (unsigned long) some_ptr & ~PAGE_MASK; |
21 | * | 21 | * |
22 | * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens | 22 | * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens |
diff --git a/include/asm-m68knommu/module.h b/include/asm-m68knommu/module.h index 57e95cc01ad5..2e45ab50b232 100644 --- a/include/asm-m68knommu/module.h +++ b/include/asm-m68knommu/module.h | |||
@@ -1 +1,11 @@ | |||
1 | #include <asm-m68k/module.h> | 1 | #ifndef ASM_M68KNOMMU_MODULE_H |
2 | #define ASM_M68KNOMMU_MODULE_H | ||
3 | |||
4 | struct mod_arch_specific { | ||
5 | }; | ||
6 | |||
7 | #define Elf_Shdr Elf32_Shdr | ||
8 | #define Elf_Sym Elf32_Sym | ||
9 | #define Elf_Ehdr Elf32_Ehdr | ||
10 | |||
11 | #endif /* ASM_M68KNOMMU_MODULE_H */ | ||
diff --git a/include/asm-m68knommu/scatterlist.h b/include/asm-m68knommu/scatterlist.h index 10942840e88f..afc4788b0d2c 100644 --- a/include/asm-m68knommu/scatterlist.h +++ b/include/asm-m68knommu/scatterlist.h | |||
@@ -14,7 +14,6 @@ struct scatterlist { | |||
14 | unsigned int length; | 14 | unsigned int length; |
15 | }; | 15 | }; |
16 | 16 | ||
17 | #define sg_address(sg) (page_address((sg)->page) + (sg)->offset) | ||
18 | #define sg_dma_address(sg) ((sg)->dma_address) | 17 | #define sg_dma_address(sg) ((sg)->dma_address) |
19 | #define sg_dma_len(sg) ((sg)->length) | 18 | #define sg_dma_len(sg) ((sg)->length) |
20 | 19 | ||
diff --git a/include/asm-m68knommu/uaccess.h b/include/asm-m68knommu/uaccess.h index 9ed9169a8849..68bbe9b312f1 100644 --- a/include/asm-m68knommu/uaccess.h +++ b/include/asm-m68knommu/uaccess.h | |||
@@ -170,10 +170,12 @@ static inline long strnlen_user(const char *src, long n) | |||
170 | */ | 170 | */ |
171 | 171 | ||
172 | static inline unsigned long | 172 | static inline unsigned long |
173 | clear_user(void *to, unsigned long n) | 173 | __clear_user(void *to, unsigned long n) |
174 | { | 174 | { |
175 | memset(to, 0, n); | 175 | memset(to, 0, n); |
176 | return 0; | 176 | return 0; |
177 | } | 177 | } |
178 | 178 | ||
179 | #define clear_user(to,n) __clear_user(to,n) | ||
180 | |||
179 | #endif /* _M68KNOMMU_UACCESS_H */ | 181 | #endif /* _M68KNOMMU_UACCESS_H */ |
diff --git a/include/asm-parisc/scatterlist.h b/include/asm-parisc/scatterlist.h index cd3cfdf82289..62269b31ebf4 100644 --- a/include/asm-parisc/scatterlist.h +++ b/include/asm-parisc/scatterlist.h | |||
@@ -18,7 +18,7 @@ struct scatterlist { | |||
18 | __u32 iova_length; /* bytes mapped */ | 18 | __u32 iova_length; /* bytes mapped */ |
19 | }; | 19 | }; |
20 | 20 | ||
21 | #define sg_virt_addr(sg) ((unsigned long)(page_address(sg->page) + sg->offset)) | 21 | #define sg_virt_addr(sg) ((unsigned long)sg_virt(sg)) |
22 | #define sg_dma_address(sg) ((sg)->iova) | 22 | #define sg_dma_address(sg) ((sg)->iova) |
23 | #define sg_dma_len(sg) ((sg)->iova_length) | 23 | #define sg_dma_len(sg) ((sg)->iova_length) |
24 | 24 | ||
diff --git a/include/asm-powerpc/dma-mapping.h b/include/asm-powerpc/dma-mapping.h index 65be95dd03a5..ff52013c0e2d 100644 --- a/include/asm-powerpc/dma-mapping.h +++ b/include/asm-powerpc/dma-mapping.h | |||
@@ -285,9 +285,9 @@ dma_map_sg(struct device *dev, struct scatterlist *sgl, int nents, | |||
285 | BUG_ON(direction == DMA_NONE); | 285 | BUG_ON(direction == DMA_NONE); |
286 | 286 | ||
287 | for_each_sg(sgl, sg, nents, i) { | 287 | for_each_sg(sgl, sg, nents, i) { |
288 | BUG_ON(!sg->page); | 288 | BUG_ON(!sg_page(sg)); |
289 | __dma_sync_page(sg->page, sg->offset, sg->length, direction); | 289 | __dma_sync_page(sg_page(sg), sg->offset, sg->length, direction); |
290 | sg->dma_address = page_to_bus(sg->page) + sg->offset; | 290 | sg->dma_address = page_to_bus(sg_page(sg)) + sg->offset; |
291 | } | 291 | } |
292 | 292 | ||
293 | return nents; | 293 | return nents; |
@@ -328,7 +328,7 @@ static inline void dma_sync_sg_for_cpu(struct device *dev, | |||
328 | BUG_ON(direction == DMA_NONE); | 328 | BUG_ON(direction == DMA_NONE); |
329 | 329 | ||
330 | for_each_sg(sgl, sg, nents, i) | 330 | for_each_sg(sgl, sg, nents, i) |
331 | __dma_sync_page(sg->page, sg->offset, sg->length, direction); | 331 | __dma_sync_page(sg_page(sg), sg->offset, sg->length, direction); |
332 | } | 332 | } |
333 | 333 | ||
334 | static inline void dma_sync_sg_for_device(struct device *dev, | 334 | static inline void dma_sync_sg_for_device(struct device *dev, |
@@ -341,7 +341,7 @@ static inline void dma_sync_sg_for_device(struct device *dev, | |||
341 | BUG_ON(direction == DMA_NONE); | 341 | BUG_ON(direction == DMA_NONE); |
342 | 342 | ||
343 | for_each_sg(sgl, sg, nents, i) | 343 | for_each_sg(sgl, sg, nents, i) |
344 | __dma_sync_page(sg->page, sg->offset, sg->length, direction); | 344 | __dma_sync_page(sg_page(sg), sg->offset, sg->length, direction); |
345 | } | 345 | } |
346 | 346 | ||
347 | static inline int dma_mapping_error(dma_addr_t dma_addr) | 347 | static inline int dma_mapping_error(dma_addr_t dma_addr) |
diff --git a/include/asm-sh/dma-mapping.h b/include/asm-sh/dma-mapping.h index 84fefdaa01a5..fcea067f7a9c 100644 --- a/include/asm-sh/dma-mapping.h +++ b/include/asm-sh/dma-mapping.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define __ASM_SH_DMA_MAPPING_H | 2 | #define __ASM_SH_DMA_MAPPING_H |
3 | 3 | ||
4 | #include <linux/mm.h> | 4 | #include <linux/mm.h> |
5 | #include <asm/scatterlist.h> | 5 | #include <linux/scatterlist.h> |
6 | #include <asm/cacheflush.h> | 6 | #include <asm/cacheflush.h> |
7 | #include <asm/io.h> | 7 | #include <asm/io.h> |
8 | 8 | ||
@@ -85,10 +85,9 @@ static inline int dma_map_sg(struct device *dev, struct scatterlist *sg, | |||
85 | 85 | ||
86 | for (i = 0; i < nents; i++) { | 86 | for (i = 0; i < nents; i++) { |
87 | #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) | 87 | #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) |
88 | dma_cache_sync(dev, page_address(sg[i].page) + sg[i].offset, | 88 | dma_cache_sync(dev, sg_virt(&sg[i]), sg[i].length, dir); |
89 | sg[i].length, dir); | ||
90 | #endif | 89 | #endif |
91 | sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset; | 90 | sg[i].dma_address = sg_phys(&sg[i]); |
92 | } | 91 | } |
93 | 92 | ||
94 | return nents; | 93 | return nents; |
@@ -138,10 +137,9 @@ static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg, | |||
138 | 137 | ||
139 | for (i = 0; i < nelems; i++) { | 138 | for (i = 0; i < nelems; i++) { |
140 | #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) | 139 | #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) |
141 | dma_cache_sync(dev, page_address(sg[i].page) + sg[i].offset, | 140 | dma_cache_sync(dev, sg_virt(&sg[i]), sg[i].length, dir); |
142 | sg[i].length, dir); | ||
143 | #endif | 141 | #endif |
144 | sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset; | 142 | sg[i].dma_address = sg_phys(&sg[i]); |
145 | } | 143 | } |
146 | } | 144 | } |
147 | 145 | ||
diff --git a/include/asm-sh64/dma-mapping.h b/include/asm-sh64/dma-mapping.h index e661857f98dc..1438b763a5ea 100644 --- a/include/asm-sh64/dma-mapping.h +++ b/include/asm-sh64/dma-mapping.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define __ASM_SH_DMA_MAPPING_H | 2 | #define __ASM_SH_DMA_MAPPING_H |
3 | 3 | ||
4 | #include <linux/mm.h> | 4 | #include <linux/mm.h> |
5 | #include <asm/scatterlist.h> | 5 | #include <linux/scatterlist.h> |
6 | #include <asm/io.h> | 6 | #include <asm/io.h> |
7 | 7 | ||
8 | struct pci_dev; | 8 | struct pci_dev; |
@@ -71,10 +71,9 @@ static inline int dma_map_sg(struct device *dev, struct scatterlist *sg, | |||
71 | 71 | ||
72 | for (i = 0; i < nents; i++) { | 72 | for (i = 0; i < nents; i++) { |
73 | #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) | 73 | #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) |
74 | dma_cache_sync(dev, page_address(sg[i].page) + sg[i].offset, | 74 | dma_cache_sync(dev, sg_virt(&sg[i]), sg[i].length, dir); |
75 | sg[i].length, dir); | ||
76 | #endif | 75 | #endif |
77 | sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset; | 76 | sg[i].dma_address = sg_phys(&sg[i]); |
78 | } | 77 | } |
79 | 78 | ||
80 | return nents; | 79 | return nents; |
@@ -124,10 +123,9 @@ static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg, | |||
124 | 123 | ||
125 | for (i = 0; i < nelems; i++) { | 124 | for (i = 0; i < nelems; i++) { |
126 | #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) | 125 | #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) |
127 | dma_cache_sync(dev, page_address(sg[i].page) + sg[i].offset, | 126 | dma_cache_sync(dev, sg_virt(&sg[i]), sg[i].length, dir); |
128 | sg[i].length, dir); | ||
129 | #endif | 127 | #endif |
130 | sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset; | 128 | sg[i].dma_address = sg_phys(&sg[i]); |
131 | } | 129 | } |
132 | } | 130 | } |
133 | 131 | ||
diff --git a/include/sound/version.h b/include/sound/version.h index 8d4a8dd89237..a2be8ad8894b 100644 --- a/include/sound/version.h +++ b/include/sound/version.h | |||
@@ -1,3 +1,3 @@ | |||
1 | /* include/version.h. Generated by alsa/ksync script. */ | 1 | /* include/version.h. Generated by alsa/ksync script. */ |
2 | #define CONFIG_SND_VERSION "1.0.15" | 2 | #define CONFIG_SND_VERSION "1.0.15" |
3 | #define CONFIG_SND_DATE " (Tue Oct 16 14:57:44 2007 UTC)" | 3 | #define CONFIG_SND_DATE " (Tue Oct 23 06:09:18 2007 UTC)" |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 80eab7a04205..1f314221d534 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -29,12 +29,28 @@ | |||
29 | void synchronize_irq(unsigned int irq) | 29 | void synchronize_irq(unsigned int irq) |
30 | { | 30 | { |
31 | struct irq_desc *desc = irq_desc + irq; | 31 | struct irq_desc *desc = irq_desc + irq; |
32 | unsigned int status; | ||
32 | 33 | ||
33 | if (irq >= NR_IRQS) | 34 | if (irq >= NR_IRQS) |
34 | return; | 35 | return; |
35 | 36 | ||
36 | while (desc->status & IRQ_INPROGRESS) | 37 | do { |
37 | cpu_relax(); | 38 | unsigned long flags; |
39 | |||
40 | /* | ||
41 | * Wait until we're out of the critical section. This might | ||
42 | * give the wrong answer due to the lack of memory barriers. | ||
43 | */ | ||
44 | while (desc->status & IRQ_INPROGRESS) | ||
45 | cpu_relax(); | ||
46 | |||
47 | /* Ok, that indicated we're done: double-check carefully. */ | ||
48 | spin_lock_irqsave(&desc->lock, flags); | ||
49 | status = desc->status; | ||
50 | spin_unlock_irqrestore(&desc->lock, flags); | ||
51 | |||
52 | /* Oops, that failed? */ | ||
53 | } while (status & IRQ_INPROGRESS); | ||
38 | } | 54 | } |
39 | EXPORT_SYMBOL(synchronize_irq); | 55 | EXPORT_SYMBOL(synchronize_irq); |
40 | 56 | ||
diff --git a/lib/reed_solomon/decode_rs.c b/lib/reed_solomon/decode_rs.c index a58df56f09b6..0ec3f257ffdf 100644 --- a/lib/reed_solomon/decode_rs.c +++ b/lib/reed_solomon/decode_rs.c | |||
@@ -39,8 +39,7 @@ | |||
39 | 39 | ||
40 | /* Check length parameter for validity */ | 40 | /* Check length parameter for validity */ |
41 | pad = nn - nroots - len; | 41 | pad = nn - nroots - len; |
42 | if (pad < 0 || pad >= nn) | 42 | BUG_ON(pad < 0 || pad >= nn); |
43 | return -ERANGE; | ||
44 | 43 | ||
45 | /* Does the caller provide the syndrome ? */ | 44 | /* Does the caller provide the syndrome ? */ |
46 | if (s != NULL) | 45 | if (s != NULL) |
@@ -203,7 +202,7 @@ | |||
203 | * deg(lambda) unequal to number of roots => uncorrectable | 202 | * deg(lambda) unequal to number of roots => uncorrectable |
204 | * error detected | 203 | * error detected |
205 | */ | 204 | */ |
206 | count = -1; | 205 | count = -EBADMSG; |
207 | goto finish; | 206 | goto finish; |
208 | } | 207 | } |
209 | /* | 208 | /* |
diff --git a/lib/reed_solomon/reed_solomon.c b/lib/reed_solomon/reed_solomon.c index 5b0d8522b7ca..3ea2db94d5b0 100644 --- a/lib/reed_solomon/reed_solomon.c +++ b/lib/reed_solomon/reed_solomon.c | |||
@@ -320,6 +320,7 @@ EXPORT_SYMBOL_GPL(encode_rs8); | |||
320 | * The syndrome and parity uses a uint16_t data type to enable | 320 | * The syndrome and parity uses a uint16_t data type to enable |
321 | * symbol size > 8. The calling code must take care of decoding of the | 321 | * symbol size > 8. The calling code must take care of decoding of the |
322 | * syndrome result and the received parity before calling this code. | 322 | * syndrome result and the received parity before calling this code. |
323 | * Returns the number of corrected bits or -EBADMSG for uncorrectable errors. | ||
323 | */ | 324 | */ |
324 | int decode_rs8(struct rs_control *rs, uint8_t *data, uint16_t *par, int len, | 325 | int decode_rs8(struct rs_control *rs, uint8_t *data, uint16_t *par, int len, |
325 | uint16_t *s, int no_eras, int *eras_pos, uint16_t invmsk, | 326 | uint16_t *s, int no_eras, int *eras_pos, uint16_t invmsk, |
@@ -363,6 +364,7 @@ EXPORT_SYMBOL_GPL(encode_rs16); | |||
363 | * @corr: buffer to store correction bitmask on eras_pos | 364 | * @corr: buffer to store correction bitmask on eras_pos |
364 | * | 365 | * |
365 | * Each field in the data array contains up to symbol size bits of valid data. | 366 | * Each field in the data array contains up to symbol size bits of valid data. |
367 | * Returns the number of corrected bits or -EBADMSG for uncorrectable errors. | ||
366 | */ | 368 | */ |
367 | int decode_rs16(struct rs_control *rs, uint16_t *data, uint16_t *par, int len, | 369 | int decode_rs16(struct rs_control *rs, uint16_t *data, uint16_t *par, int len, |
368 | uint16_t *s, int no_eras, int *eras_pos, uint16_t invmsk, | 370 | uint16_t *s, int no_eras, int *eras_pos, uint16_t invmsk, |
@@ -1171,8 +1171,7 @@ munmap_back: | |||
1171 | vm_flags = vma->vm_flags; | 1171 | vm_flags = vma->vm_flags; |
1172 | 1172 | ||
1173 | if (vma_wants_writenotify(vma)) | 1173 | if (vma_wants_writenotify(vma)) |
1174 | vma->vm_page_prot = | 1174 | vma->vm_page_prot = vm_get_page_prot(vm_flags & ~VM_SHARED); |
1175 | protection_map[vm_flags & (VM_READ|VM_WRITE|VM_EXEC)]; | ||
1176 | 1175 | ||
1177 | if (!file || !vma_merge(mm, prev, addr, vma->vm_end, | 1176 | if (!file || !vma_merge(mm, prev, addr, vma->vm_end, |
1178 | vma->vm_flags, NULL, file, pgoff, vma_policy(vma))) { | 1177 | vma->vm_flags, NULL, file, pgoff, vma_policy(vma))) { |
diff --git a/mm/mprotect.c b/mm/mprotect.c index 55227845abbe..4de546899dc1 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c | |||
@@ -194,7 +194,7 @@ success: | |||
194 | vma->vm_flags = newflags; | 194 | vma->vm_flags = newflags; |
195 | vma->vm_page_prot = vm_get_page_prot(newflags); | 195 | vma->vm_page_prot = vm_get_page_prot(newflags); |
196 | if (vma_wants_writenotify(vma)) { | 196 | if (vma_wants_writenotify(vma)) { |
197 | vma->vm_page_prot = vm_get_page_prot(newflags); | 197 | vma->vm_page_prot = vm_get_page_prot(newflags & ~VM_SHARED); |
198 | dirty_accountable = 1; | 198 | dirty_accountable = 1; |
199 | } | 199 | } |
200 | 200 | ||
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index d5a9785a158b..658476c4d587 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
@@ -56,7 +56,7 @@ | |||
56 | #include <linux/ipv6.h> | 56 | #include <linux/ipv6.h> |
57 | #include <linux/net.h> | 57 | #include <linux/net.h> |
58 | #include <linux/inet.h> | 58 | #include <linux/inet.h> |
59 | #include <asm/scatterlist.h> | 59 | #include <linux/scatterlist.h> |
60 | #include <linux/crypto.h> | 60 | #include <linux/crypto.h> |
61 | #include <net/sock.h> | 61 | #include <net/sock.h> |
62 | 62 | ||
diff --git a/net/xfrm/xfrm_algo.c b/net/xfrm/xfrm_algo.c index fb2220a719bd..313d4bed3aa9 100644 --- a/net/xfrm/xfrm_algo.c +++ b/net/xfrm/xfrm_algo.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/pfkeyv2.h> | 14 | #include <linux/pfkeyv2.h> |
15 | #include <linux/crypto.h> | 15 | #include <linux/crypto.h> |
16 | #include <linux/scatterlist.h> | ||
16 | #include <net/xfrm.h> | 17 | #include <net/xfrm.h> |
17 | #if defined(CONFIG_INET_AH) || defined(CONFIG_INET_AH_MODULE) || defined(CONFIG_INET6_AH) || defined(CONFIG_INET6_AH_MODULE) | 18 | #if defined(CONFIG_INET_AH) || defined(CONFIG_INET_AH_MODULE) || defined(CONFIG_INET6_AH) || defined(CONFIG_INET6_AH_MODULE) |
18 | #include <net/ah.h> | 19 | #include <net/ah.h> |
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 24e1b1885de7..9f3124b08867 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
@@ -2977,11 +2977,7 @@ static int selinux_task_prctl(int option, | |||
2977 | 2977 | ||
2978 | static int selinux_task_wait(struct task_struct *p) | 2978 | static int selinux_task_wait(struct task_struct *p) |
2979 | { | 2979 | { |
2980 | u32 perm; | 2980 | return task_has_perm(p, current, PROCESS__SIGCHLD); |
2981 | |||
2982 | perm = signal_to_av(p->exit_signal); | ||
2983 | |||
2984 | return task_has_perm(p, current, perm); | ||
2985 | } | 2981 | } |
2986 | 2982 | ||
2987 | static void selinux_task_reparent_to_init(struct task_struct *p) | 2983 | static void selinux_task_reparent_to_init(struct task_struct *p) |
diff --git a/sound/core/control.c b/sound/core/control.c index 4c3aa8e10378..df0774c76f6f 100644 --- a/sound/core/control.c +++ b/sound/core/control.c | |||
@@ -93,15 +93,16 @@ static int snd_ctl_open(struct inode *inode, struct file *file) | |||
93 | 93 | ||
94 | static void snd_ctl_empty_read_queue(struct snd_ctl_file * ctl) | 94 | static void snd_ctl_empty_read_queue(struct snd_ctl_file * ctl) |
95 | { | 95 | { |
96 | unsigned long flags; | ||
96 | struct snd_kctl_event *cread; | 97 | struct snd_kctl_event *cread; |
97 | 98 | ||
98 | spin_lock(&ctl->read_lock); | 99 | spin_lock_irqsave(&ctl->read_lock, flags); |
99 | while (!list_empty(&ctl->events)) { | 100 | while (!list_empty(&ctl->events)) { |
100 | cread = snd_kctl_event(ctl->events.next); | 101 | cread = snd_kctl_event(ctl->events.next); |
101 | list_del(&cread->list); | 102 | list_del(&cread->list); |
102 | kfree(cread); | 103 | kfree(cread); |
103 | } | 104 | } |
104 | spin_unlock(&ctl->read_lock); | 105 | spin_unlock_irqrestore(&ctl->read_lock, flags); |
105 | } | 106 | } |
106 | 107 | ||
107 | static int snd_ctl_release(struct inode *inode, struct file *file) | 108 | static int snd_ctl_release(struct inode *inode, struct file *file) |
diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c index 91f9e6a112ff..2dba752faf4e 100644 --- a/sound/pci/bt87x.c +++ b/sound/pci/bt87x.c | |||
@@ -165,7 +165,7 @@ struct snd_bt87x_board { | |||
165 | unsigned no_digital:1; /* No digital input */ | 165 | unsigned no_digital:1; /* No digital input */ |
166 | }; | 166 | }; |
167 | 167 | ||
168 | static const __devinitdata struct snd_bt87x_board snd_bt87x_boards[] = { | 168 | static __devinitdata struct snd_bt87x_board snd_bt87x_boards[] = { |
169 | [SND_BT87X_BOARD_UNKNOWN] = { | 169 | [SND_BT87X_BOARD_UNKNOWN] = { |
170 | .dig_rate = 32000, /* just a guess */ | 170 | .dig_rate = 32000, /* just a guess */ |
171 | }, | 171 | }, |
@@ -848,7 +848,7 @@ static int __devinit snd_bt87x_detect_card(struct pci_dev *pci) | |||
848 | int i; | 848 | int i; |
849 | const struct pci_device_id *supported; | 849 | const struct pci_device_id *supported; |
850 | 850 | ||
851 | supported = pci_match_device(&driver, pci); | 851 | supported = pci_match_id(snd_bt87x_ids, pci); |
852 | if (supported && supported->driver_data > 0) | 852 | if (supported && supported->driver_data > 0) |
853 | return supported->driver_data; | 853 | return supported->driver_data; |
854 | 854 | ||
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 187533e477c6..ad4cb38109fc 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -626,24 +626,19 @@ int __devinit snd_hda_codec_new(struct hda_bus *bus, unsigned int codec_addr, | |||
626 | snd_hda_get_codec_name(codec, bus->card->mixername, | 626 | snd_hda_get_codec_name(codec, bus->card->mixername, |
627 | sizeof(bus->card->mixername)); | 627 | sizeof(bus->card->mixername)); |
628 | 628 | ||
629 | #ifdef CONFIG_SND_HDA_GENERIC | ||
630 | if (is_generic_config(codec)) { | 629 | if (is_generic_config(codec)) { |
631 | err = snd_hda_parse_generic_codec(codec); | 630 | err = snd_hda_parse_generic_codec(codec); |
632 | goto patched; | 631 | goto patched; |
633 | } | 632 | } |
634 | #endif | ||
635 | if (codec->preset && codec->preset->patch) { | 633 | if (codec->preset && codec->preset->patch) { |
636 | err = codec->preset->patch(codec); | 634 | err = codec->preset->patch(codec); |
637 | goto patched; | 635 | goto patched; |
638 | } | 636 | } |
639 | 637 | ||
640 | /* call the default parser */ | 638 | /* call the default parser */ |
641 | #ifdef CONFIG_SND_HDA_GENERIC | ||
642 | err = snd_hda_parse_generic_codec(codec); | 639 | err = snd_hda_parse_generic_codec(codec); |
643 | #else | 640 | if (err < 0) |
644 | printk(KERN_ERR "hda-codec: No codec parser is available\n"); | 641 | printk(KERN_ERR "hda-codec: No codec parser is available\n"); |
645 | err = -ENODEV; | ||
646 | #endif | ||
647 | 642 | ||
648 | patched: | 643 | patched: |
649 | if (err < 0) { | 644 | if (err < 0) { |
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h index a79d0ed5469c..20c5e6250374 100644 --- a/sound/pci/hda/hda_local.h +++ b/sound/pci/hda/hda_local.h | |||
@@ -245,7 +245,14 @@ int snd_hda_multi_out_analog_cleanup(struct hda_codec *codec, | |||
245 | /* | 245 | /* |
246 | * generic codec parser | 246 | * generic codec parser |
247 | */ | 247 | */ |
248 | #ifdef CONFIG_SND_HDA_GENERIC | ||
248 | int snd_hda_parse_generic_codec(struct hda_codec *codec); | 249 | int snd_hda_parse_generic_codec(struct hda_codec *codec); |
250 | #else | ||
251 | static inline int snd_hda_parse_generic_codec(struct hda_codec *codec) | ||
252 | { | ||
253 | return -ENODEV; | ||
254 | } | ||
255 | #endif | ||
249 | 256 | ||
250 | /* | 257 | /* |
251 | * generic proc interface | 258 | * generic proc interface |
@@ -303,16 +310,17 @@ enum { | |||
303 | 310 | ||
304 | extern const char *auto_pin_cfg_labels[AUTO_PIN_LAST]; | 311 | extern const char *auto_pin_cfg_labels[AUTO_PIN_LAST]; |
305 | 312 | ||
313 | #define AUTO_CFG_MAX_OUTS 5 | ||
314 | |||
306 | struct auto_pin_cfg { | 315 | struct auto_pin_cfg { |
307 | int line_outs; | 316 | int line_outs; |
308 | hda_nid_t line_out_pins[5]; /* sorted in the order of | 317 | /* sorted in the order of Front/Surr/CLFE/Side */ |
309 | * Front/Surr/CLFE/Side | 318 | hda_nid_t line_out_pins[AUTO_CFG_MAX_OUTS]; |
310 | */ | ||
311 | int speaker_outs; | 319 | int speaker_outs; |
312 | hda_nid_t speaker_pins[5]; | 320 | hda_nid_t speaker_pins[AUTO_CFG_MAX_OUTS]; |
313 | int hp_outs; | 321 | int hp_outs; |
314 | int line_out_type; /* AUTO_PIN_XXX_OUT */ | 322 | int line_out_type; /* AUTO_PIN_XXX_OUT */ |
315 | hda_nid_t hp_pins[5]; | 323 | hda_nid_t hp_pins[AUTO_CFG_MAX_OUTS]; |
316 | hda_nid_t input_pins[AUTO_PIN_LAST]; | 324 | hda_nid_t input_pins[AUTO_PIN_LAST]; |
317 | hda_nid_t dig_out_pin; | 325 | hda_nid_t dig_out_pin; |
318 | hda_nid_t dig_in_pin; | 326 | hda_nid_t dig_in_pin; |
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 54cfd4526d20..0ee8ae4d4410 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -72,7 +72,7 @@ struct ad198x_spec { | |||
72 | unsigned int num_kctl_alloc, num_kctl_used; | 72 | unsigned int num_kctl_alloc, num_kctl_used; |
73 | struct snd_kcontrol_new *kctl_alloc; | 73 | struct snd_kcontrol_new *kctl_alloc; |
74 | struct hda_input_mux private_imux; | 74 | struct hda_input_mux private_imux; |
75 | hda_nid_t private_dac_nids[4]; | 75 | hda_nid_t private_dac_nids[AUTO_CFG_MAX_OUTS]; |
76 | 76 | ||
77 | unsigned int jack_present :1; | 77 | unsigned int jack_present :1; |
78 | 78 | ||
@@ -612,7 +612,8 @@ static void ad1986a_hp_automute(struct hda_codec *codec) | |||
612 | unsigned int present; | 612 | unsigned int present; |
613 | 613 | ||
614 | present = snd_hda_codec_read(codec, 0x1a, 0, AC_VERB_GET_PIN_SENSE, 0); | 614 | present = snd_hda_codec_read(codec, 0x1a, 0, AC_VERB_GET_PIN_SENSE, 0); |
615 | spec->jack_present = (present & 0x80000000) != 0; | 615 | /* Lenovo N100 seems to report the reversed bit for HP jack-sensing */ |
616 | spec->jack_present = !(present & 0x80000000); | ||
616 | ad1986a_update_hp(codec); | 617 | ad1986a_update_hp(codec); |
617 | } | 618 | } |
618 | 619 | ||
diff --git a/sound/pci/hda/patch_cmedia.c b/sound/pci/hda/patch_cmedia.c index 2468f3171222..6c54793bf424 100644 --- a/sound/pci/hda/patch_cmedia.c +++ b/sound/pci/hda/patch_cmedia.c | |||
@@ -50,7 +50,7 @@ struct cmi_spec { | |||
50 | 50 | ||
51 | /* playback */ | 51 | /* playback */ |
52 | struct hda_multi_out multiout; | 52 | struct hda_multi_out multiout; |
53 | hda_nid_t dac_nids[4]; /* NID for each DAC */ | 53 | hda_nid_t dac_nids[AUTO_CFG_MAX_OUTS]; /* NID for each DAC */ |
54 | int num_dacs; | 54 | int num_dacs; |
55 | 55 | ||
56 | /* capture */ | 56 | /* capture */ |
@@ -73,7 +73,6 @@ struct cmi_spec { | |||
73 | unsigned int pin_def_confs; | 73 | unsigned int pin_def_confs; |
74 | 74 | ||
75 | /* multichannel pins */ | 75 | /* multichannel pins */ |
76 | hda_nid_t multich_pin[4]; /* max 8-channel */ | ||
77 | struct hda_verb multi_init[9]; /* 2 verbs for each pin + terminator */ | 76 | struct hda_verb multi_init[9]; /* 2 verbs for each pin + terminator */ |
78 | }; | 77 | }; |
79 | 78 | ||
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 080e3001d9c5..6aa073986747 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
@@ -85,7 +85,7 @@ struct conexant_spec { | |||
85 | unsigned int num_kctl_alloc, num_kctl_used; | 85 | unsigned int num_kctl_alloc, num_kctl_used; |
86 | struct snd_kcontrol_new *kctl_alloc; | 86 | struct snd_kcontrol_new *kctl_alloc; |
87 | struct hda_input_mux private_imux; | 87 | struct hda_input_mux private_imux; |
88 | hda_nid_t private_dac_nids[4]; | 88 | hda_nid_t private_dac_nids[AUTO_CFG_MAX_OUTS]; |
89 | 89 | ||
90 | }; | 90 | }; |
91 | 91 | ||
@@ -554,10 +554,16 @@ static struct snd_kcontrol_new cxt5045_mixers[] = { | |||
554 | .get = conexant_mux_enum_get, | 554 | .get = conexant_mux_enum_get, |
555 | .put = conexant_mux_enum_put | 555 | .put = conexant_mux_enum_put |
556 | }, | 556 | }, |
557 | HDA_CODEC_VOLUME("Int Mic Volume", 0x1a, 0x01, HDA_INPUT), | 557 | HDA_CODEC_VOLUME("Int Mic Capture Volume", 0x1a, 0x01, HDA_INPUT), |
558 | HDA_CODEC_MUTE("Int Mic Switch", 0x1a, 0x01, HDA_INPUT), | 558 | HDA_CODEC_MUTE("Int Mic Capture Switch", 0x1a, 0x01, HDA_INPUT), |
559 | HDA_CODEC_VOLUME("Ext Mic Volume", 0x1a, 0x02, HDA_INPUT), | 559 | HDA_CODEC_VOLUME("Ext Mic Capture Volume", 0x1a, 0x02, HDA_INPUT), |
560 | HDA_CODEC_MUTE("Ext Mic Switch", 0x1a, 0x02, HDA_INPUT), | 560 | HDA_CODEC_MUTE("Ext Mic Capture Switch", 0x1a, 0x02, HDA_INPUT), |
561 | HDA_CODEC_VOLUME("PCM Playback Volume", 0x17, 0x0, HDA_INPUT), | ||
562 | HDA_CODEC_MUTE("PCM Playback Switch", 0x17, 0x0, HDA_INPUT), | ||
563 | HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x17, 0x1, HDA_INPUT), | ||
564 | HDA_CODEC_MUTE("Int Mic Playback Switch", 0x17, 0x1, HDA_INPUT), | ||
565 | HDA_CODEC_VOLUME("Ext Mic Playback Volume", 0x17, 0x2, HDA_INPUT), | ||
566 | HDA_CODEC_MUTE("Ext Mic Playback Switch", 0x17, 0x2, HDA_INPUT), | ||
561 | HDA_BIND_VOL("Master Playback Volume", &cxt5045_hp_bind_master_vol), | 567 | HDA_BIND_VOL("Master Playback Volume", &cxt5045_hp_bind_master_vol), |
562 | { | 568 | { |
563 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, | 569 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, |
@@ -576,16 +582,15 @@ static struct hda_verb cxt5045_init_verbs[] = { | |||
576 | {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN }, | 582 | {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN }, |
577 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN|AC_PINCTL_VREF_80 }, | 583 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN|AC_PINCTL_VREF_80 }, |
578 | /* HP, Amp */ | 584 | /* HP, Amp */ |
579 | {0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP }, | 585 | {0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, |
580 | {0x17, AC_VERB_SET_CONNECT_SEL,0x01}, | 586 | {0x10, AC_VERB_SET_CONNECT_SEL, 0x1}, |
581 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, | 587 | {0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, |
582 | AC_AMP_SET_OUTPUT|AC_AMP_SET_RIGHT|AC_AMP_SET_LEFT|0x01}, | 588 | {0x11, AC_VERB_SET_CONNECT_SEL, 0x1}, |
583 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, | 589 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, |
584 | AC_AMP_SET_OUTPUT|AC_AMP_SET_RIGHT|AC_AMP_SET_LEFT|0x02}, | 590 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, |
585 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, | 591 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)}, |
586 | AC_AMP_SET_OUTPUT|AC_AMP_SET_RIGHT|AC_AMP_SET_LEFT|0x03}, | 592 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)}, |
587 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, | 593 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)}, |
588 | AC_AMP_SET_OUTPUT|AC_AMP_SET_RIGHT|AC_AMP_SET_LEFT|0x04}, | ||
589 | /* Record selector: Int mic */ | 594 | /* Record selector: Int mic */ |
590 | {0x1a, AC_VERB_SET_CONNECT_SEL,0x1}, | 595 | {0x1a, AC_VERB_SET_CONNECT_SEL,0x1}, |
591 | {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, | 596 | {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 53b0428abfc2..d9f78c809ee9 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -238,7 +238,7 @@ struct alc_spec { | |||
238 | unsigned int num_kctl_alloc, num_kctl_used; | 238 | unsigned int num_kctl_alloc, num_kctl_used; |
239 | struct snd_kcontrol_new *kctl_alloc; | 239 | struct snd_kcontrol_new *kctl_alloc; |
240 | struct hda_input_mux private_imux; | 240 | struct hda_input_mux private_imux; |
241 | hda_nid_t private_dac_nids[5]; | 241 | hda_nid_t private_dac_nids[AUTO_CFG_MAX_OUTS]; |
242 | 242 | ||
243 | /* hooks */ | 243 | /* hooks */ |
244 | void (*init_hook)(struct hda_codec *codec); | 244 | void (*init_hook)(struct hda_codec *codec); |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index bf950195107c..f9b2c435a130 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -111,6 +111,7 @@ struct sigmatel_spec { | |||
111 | unsigned int alt_switch: 1; | 111 | unsigned int alt_switch: 1; |
112 | unsigned int hp_detect: 1; | 112 | unsigned int hp_detect: 1; |
113 | unsigned int gpio_mute: 1; | 113 | unsigned int gpio_mute: 1; |
114 | unsigned int no_vol_knob :1; | ||
114 | 115 | ||
115 | unsigned int gpio_mask, gpio_data; | 116 | unsigned int gpio_mask, gpio_data; |
116 | 117 | ||
@@ -1930,7 +1931,8 @@ static int stac92xx_auto_create_hp_ctls(struct hda_codec *codec, | |||
1930 | } | 1931 | } |
1931 | if (spec->multiout.hp_nid) { | 1932 | if (spec->multiout.hp_nid) { |
1932 | const char *pfx; | 1933 | const char *pfx; |
1933 | if (old_num_dacs == spec->multiout.num_dacs) | 1934 | if (old_num_dacs == spec->multiout.num_dacs && |
1935 | spec->no_vol_knob) | ||
1934 | pfx = "Master"; | 1936 | pfx = "Master"; |
1935 | else | 1937 | else |
1936 | pfx = "Headphone"; | 1938 | pfx = "Headphone"; |
@@ -2487,6 +2489,7 @@ static int patch_stac9200(struct hda_codec *codec) | |||
2487 | codec->spec = spec; | 2489 | codec->spec = spec; |
2488 | spec->num_pins = ARRAY_SIZE(stac9200_pin_nids); | 2490 | spec->num_pins = ARRAY_SIZE(stac9200_pin_nids); |
2489 | spec->pin_nids = stac9200_pin_nids; | 2491 | spec->pin_nids = stac9200_pin_nids; |
2492 | spec->no_vol_knob = 1; | ||
2490 | spec->board_config = snd_hda_check_board_config(codec, STAC_9200_MODELS, | 2493 | spec->board_config = snd_hda_check_board_config(codec, STAC_9200_MODELS, |
2491 | stac9200_models, | 2494 | stac9200_models, |
2492 | stac9200_cfg_tbl); | 2495 | stac9200_cfg_tbl); |
@@ -2541,6 +2544,7 @@ static int patch_stac925x(struct hda_codec *codec) | |||
2541 | codec->spec = spec; | 2544 | codec->spec = spec; |
2542 | spec->num_pins = ARRAY_SIZE(stac925x_pin_nids); | 2545 | spec->num_pins = ARRAY_SIZE(stac925x_pin_nids); |
2543 | spec->pin_nids = stac925x_pin_nids; | 2546 | spec->pin_nids = stac925x_pin_nids; |
2547 | spec->no_vol_knob = 1; | ||
2544 | spec->board_config = snd_hda_check_board_config(codec, STAC_925x_MODELS, | 2548 | spec->board_config = snd_hda_check_board_config(codec, STAC_925x_MODELS, |
2545 | stac925x_models, | 2549 | stac925x_models, |
2546 | stac925x_cfg_tbl); | 2550 | stac925x_cfg_tbl); |
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index 33b5e1ffa817..4cdf3e6df4ba 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c | |||
@@ -114,7 +114,7 @@ struct via_spec { | |||
114 | unsigned int num_kctl_alloc, num_kctl_used; | 114 | unsigned int num_kctl_alloc, num_kctl_used; |
115 | struct snd_kcontrol_new *kctl_alloc; | 115 | struct snd_kcontrol_new *kctl_alloc; |
116 | struct hda_input_mux private_imux; | 116 | struct hda_input_mux private_imux; |
117 | hda_nid_t private_dac_nids[4]; | 117 | hda_nid_t private_dac_nids[AUTO_CFG_MAX_OUTS]; |
118 | 118 | ||
119 | #ifdef CONFIG_SND_HDA_POWER_SAVE | 119 | #ifdef CONFIG_SND_HDA_POWER_SAVE |
120 | struct hda_loopback_check loopback; | 120 | struct hda_loopback_check loopback; |
diff --git a/sound/sh/aica.c b/sound/sh/aica.c index 131ec4812288..88dc840152ce 100644 --- a/sound/sh/aica.c +++ b/sound/sh/aica.c | |||
@@ -106,11 +106,14 @@ static void spu_write_wait(void) | |||
106 | static void spu_memset(u32 toi, u32 what, int length) | 106 | static void spu_memset(u32 toi, u32 what, int length) |
107 | { | 107 | { |
108 | int i; | 108 | int i; |
109 | unsigned long flags; | ||
109 | snd_assert(length % 4 == 0, return); | 110 | snd_assert(length % 4 == 0, return); |
110 | for (i = 0; i < length; i++) { | 111 | for (i = 0; i < length; i++) { |
111 | if (!(i % 8)) | 112 | if (!(i % 8)) |
112 | spu_write_wait(); | 113 | spu_write_wait(); |
114 | local_irq_save(flags); | ||
113 | writel(what, toi + SPU_MEMORY_BASE); | 115 | writel(what, toi + SPU_MEMORY_BASE); |
116 | local_irq_restore(flags); | ||
114 | toi++; | 117 | toi++; |
115 | } | 118 | } |
116 | } | 119 | } |
@@ -118,6 +121,7 @@ static void spu_memset(u32 toi, u32 what, int length) | |||
118 | /* spu_memload - write to SPU address space */ | 121 | /* spu_memload - write to SPU address space */ |
119 | static void spu_memload(u32 toi, void *from, int length) | 122 | static void spu_memload(u32 toi, void *from, int length) |
120 | { | 123 | { |
124 | unsigned long flags; | ||
121 | u32 *froml = from; | 125 | u32 *froml = from; |
122 | u32 __iomem *to = (u32 __iomem *) (SPU_MEMORY_BASE + toi); | 126 | u32 __iomem *to = (u32 __iomem *) (SPU_MEMORY_BASE + toi); |
123 | int i; | 127 | int i; |
@@ -128,7 +132,9 @@ static void spu_memload(u32 toi, void *from, int length) | |||
128 | if (!(i % 8)) | 132 | if (!(i % 8)) |
129 | spu_write_wait(); | 133 | spu_write_wait(); |
130 | val = *froml; | 134 | val = *froml; |
135 | local_irq_save(flags); | ||
131 | writel(val, to); | 136 | writel(val, to); |
137 | local_irq_restore(flags); | ||
132 | froml++; | 138 | froml++; |
133 | to++; | 139 | to++; |
134 | } | 140 | } |
@@ -138,28 +144,36 @@ static void spu_memload(u32 toi, void *from, int length) | |||
138 | static void spu_disable(void) | 144 | static void spu_disable(void) |
139 | { | 145 | { |
140 | int i; | 146 | int i; |
147 | unsigned long flags; | ||
141 | u32 regval; | 148 | u32 regval; |
142 | spu_write_wait(); | 149 | spu_write_wait(); |
143 | regval = readl(ARM_RESET_REGISTER); | 150 | regval = readl(ARM_RESET_REGISTER); |
144 | regval |= 1; | 151 | regval |= 1; |
145 | spu_write_wait(); | 152 | spu_write_wait(); |
153 | local_irq_save(flags); | ||
146 | writel(regval, ARM_RESET_REGISTER); | 154 | writel(regval, ARM_RESET_REGISTER); |
155 | local_irq_restore(flags); | ||
147 | for (i = 0; i < 64; i++) { | 156 | for (i = 0; i < 64; i++) { |
148 | spu_write_wait(); | 157 | spu_write_wait(); |
149 | regval = readl(SPU_REGISTER_BASE + (i * 0x80)); | 158 | regval = readl(SPU_REGISTER_BASE + (i * 0x80)); |
150 | regval = (regval & ~0x4000) | 0x8000; | 159 | regval = (regval & ~0x4000) | 0x8000; |
151 | spu_write_wait(); | 160 | spu_write_wait(); |
161 | local_irq_save(flags); | ||
152 | writel(regval, SPU_REGISTER_BASE + (i * 0x80)); | 162 | writel(regval, SPU_REGISTER_BASE + (i * 0x80)); |
163 | local_irq_restore(flags); | ||
153 | } | 164 | } |
154 | } | 165 | } |
155 | 166 | ||
156 | /* spu_enable - set spu registers to enable sound output */ | 167 | /* spu_enable - set spu registers to enable sound output */ |
157 | static void spu_enable(void) | 168 | static void spu_enable(void) |
158 | { | 169 | { |
170 | unsigned long flags; | ||
159 | u32 regval = readl(ARM_RESET_REGISTER); | 171 | u32 regval = readl(ARM_RESET_REGISTER); |
160 | regval &= ~1; | 172 | regval &= ~1; |
161 | spu_write_wait(); | 173 | spu_write_wait(); |
174 | local_irq_save(flags); | ||
162 | writel(regval, ARM_RESET_REGISTER); | 175 | writel(regval, ARM_RESET_REGISTER); |
176 | local_irq_restore(flags); | ||
163 | } | 177 | } |
164 | 178 | ||
165 | /* | 179 | /* |
@@ -168,25 +182,34 @@ static void spu_enable(void) | |||
168 | */ | 182 | */ |
169 | static void spu_reset(void) | 183 | static void spu_reset(void) |
170 | { | 184 | { |
185 | unsigned long flags; | ||
171 | spu_disable(); | 186 | spu_disable(); |
172 | spu_memset(0, 0, 0x200000 / 4); | 187 | spu_memset(0, 0, 0x200000 / 4); |
173 | /* Put ARM7 in endless loop */ | 188 | /* Put ARM7 in endless loop */ |
189 | local_irq_save(flags); | ||
174 | ctrl_outl(0xea000002, SPU_MEMORY_BASE); | 190 | ctrl_outl(0xea000002, SPU_MEMORY_BASE); |
191 | local_irq_restore(flags); | ||
175 | spu_enable(); | 192 | spu_enable(); |
176 | } | 193 | } |
177 | 194 | ||
178 | /* aica_chn_start - write to spu to start playback */ | 195 | /* aica_chn_start - write to spu to start playback */ |
179 | static void aica_chn_start(void) | 196 | static void aica_chn_start(void) |
180 | { | 197 | { |
198 | unsigned long flags; | ||
181 | spu_write_wait(); | 199 | spu_write_wait(); |
200 | local_irq_save(flags); | ||
182 | writel(AICA_CMD_KICK | AICA_CMD_START, (u32 *) AICA_CONTROL_POINT); | 201 | writel(AICA_CMD_KICK | AICA_CMD_START, (u32 *) AICA_CONTROL_POINT); |
202 | local_irq_restore(flags); | ||
183 | } | 203 | } |
184 | 204 | ||
185 | /* aica_chn_halt - write to spu to halt playback */ | 205 | /* aica_chn_halt - write to spu to halt playback */ |
186 | static void aica_chn_halt(void) | 206 | static void aica_chn_halt(void) |
187 | { | 207 | { |
208 | unsigned long flags; | ||
188 | spu_write_wait(); | 209 | spu_write_wait(); |
210 | local_irq_save(flags); | ||
189 | writel(AICA_CMD_KICK | AICA_CMD_STOP, (u32 *) AICA_CONTROL_POINT); | 211 | writel(AICA_CMD_KICK | AICA_CMD_STOP, (u32 *) AICA_CONTROL_POINT); |
212 | local_irq_restore(flags); | ||
190 | } | 213 | } |
191 | 214 | ||
192 | /* ALSA code below */ | 215 | /* ALSA code below */ |
@@ -213,12 +236,13 @@ static int aica_dma_transfer(int channels, int buffer_size, | |||
213 | int q, err, period_offset; | 236 | int q, err, period_offset; |
214 | struct snd_card_aica *dreamcastcard; | 237 | struct snd_card_aica *dreamcastcard; |
215 | struct snd_pcm_runtime *runtime; | 238 | struct snd_pcm_runtime *runtime; |
216 | err = 0; | 239 | unsigned long flags; |
217 | dreamcastcard = substream->pcm->private_data; | 240 | dreamcastcard = substream->pcm->private_data; |
218 | period_offset = dreamcastcard->clicks; | 241 | period_offset = dreamcastcard->clicks; |
219 | period_offset %= (AICA_PERIOD_NUMBER / channels); | 242 | period_offset %= (AICA_PERIOD_NUMBER / channels); |
220 | runtime = substream->runtime; | 243 | runtime = substream->runtime; |
221 | for (q = 0; q < channels; q++) { | 244 | for (q = 0; q < channels; q++) { |
245 | local_irq_save(flags); | ||
222 | err = dma_xfer(AICA_DMA_CHANNEL, | 246 | err = dma_xfer(AICA_DMA_CHANNEL, |
223 | (unsigned long) (runtime->dma_area + | 247 | (unsigned long) (runtime->dma_area + |
224 | (AICA_BUFFER_SIZE * q) / | 248 | (AICA_BUFFER_SIZE * q) / |
@@ -228,9 +252,12 @@ static int aica_dma_transfer(int channels, int buffer_size, | |||
228 | AICA_CHANNEL0_OFFSET + q * CHANNEL_OFFSET + | 252 | AICA_CHANNEL0_OFFSET + q * CHANNEL_OFFSET + |
229 | AICA_PERIOD_SIZE * period_offset, | 253 | AICA_PERIOD_SIZE * period_offset, |
230 | buffer_size / channels, AICA_DMA_MODE); | 254 | buffer_size / channels, AICA_DMA_MODE); |
231 | if (unlikely(err < 0)) | 255 | if (unlikely(err < 0)) { |
256 | local_irq_restore(flags); | ||
232 | break; | 257 | break; |
258 | } | ||
233 | dma_wait_for_completion(AICA_DMA_CHANNEL); | 259 | dma_wait_for_completion(AICA_DMA_CHANNEL); |
260 | local_irq_restore(flags); | ||
234 | } | 261 | } |
235 | return err; | 262 | return err; |
236 | } | 263 | } |
diff --git a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c index 9785382a5f39..f8c7a120ccbb 100644 --- a/sound/sparc/cs4231.c +++ b/sound/sparc/cs4231.c | |||
@@ -400,65 +400,44 @@ static void snd_cs4231_mce_up(struct snd_cs4231 *chip) | |||
400 | 400 | ||
401 | static void snd_cs4231_mce_down(struct snd_cs4231 *chip) | 401 | static void snd_cs4231_mce_down(struct snd_cs4231 *chip) |
402 | { | 402 | { |
403 | unsigned long flags; | 403 | unsigned long flags, timeout; |
404 | unsigned long end_time; | 404 | int reg; |
405 | int timeout; | ||
406 | 405 | ||
407 | spin_lock_irqsave(&chip->lock, flags); | ||
408 | snd_cs4231_busy_wait(chip); | 406 | snd_cs4231_busy_wait(chip); |
407 | spin_lock_irqsave(&chip->lock, flags); | ||
409 | #ifdef CONFIG_SND_DEBUG | 408 | #ifdef CONFIG_SND_DEBUG |
410 | if (__cs4231_readb(chip, CS4231U(chip, REGSEL)) & CS4231_INIT) | 409 | if (__cs4231_readb(chip, CS4231U(chip, REGSEL)) & CS4231_INIT) |
411 | snd_printdd("mce_down [%p] - auto calibration time out (0)\n", | 410 | snd_printdd("mce_down [%p] - auto calibration time out (0)\n", |
412 | CS4231U(chip, REGSEL)); | 411 | CS4231U(chip, REGSEL)); |
413 | #endif | 412 | #endif |
414 | chip->mce_bit &= ~CS4231_MCE; | 413 | chip->mce_bit &= ~CS4231_MCE; |
415 | timeout = __cs4231_readb(chip, CS4231U(chip, REGSEL)); | 414 | reg = __cs4231_readb(chip, CS4231U(chip, REGSEL)); |
416 | __cs4231_writeb(chip, chip->mce_bit | (timeout & 0x1f), | 415 | __cs4231_writeb(chip, chip->mce_bit | (reg & 0x1f), |
417 | CS4231U(chip, REGSEL)); | 416 | CS4231U(chip, REGSEL)); |
418 | if (timeout == 0x80) | 417 | if (reg == 0x80) |
419 | snd_printdd("mce_down [%p]: serious init problem - " | 418 | snd_printdd("mce_down [%p]: serious init problem " |
420 | "codec still busy\n", | 419 | "- codec still busy\n", chip->port); |
421 | chip->port); | 420 | if ((reg & CS4231_MCE) == 0) { |
422 | if ((timeout & CS4231_MCE) == 0) { | ||
423 | spin_unlock_irqrestore(&chip->lock, flags); | 421 | spin_unlock_irqrestore(&chip->lock, flags); |
424 | return; | 422 | return; |
425 | } | 423 | } |
426 | 424 | ||
427 | /* | 425 | /* |
428 | * Wait for (possible -- during init auto-calibration may not be set) | 426 | * Wait for auto-calibration (AC) process to finish, i.e. ACI to go low. |
429 | * calibration process to start. Needs upto 5 sample periods on AD1848 | ||
430 | * which at the slowest possible rate of 5.5125 kHz means 907 us. | ||
431 | */ | 427 | */ |
432 | msleep(1); | 428 | timeout = jiffies + msecs_to_jiffies(250); |
433 | 429 | do { | |
434 | /* check condition up to 250ms */ | ||
435 | end_time = jiffies + msecs_to_jiffies(250); | ||
436 | while (snd_cs4231_in(chip, CS4231_TEST_INIT) & | ||
437 | CS4231_CALIB_IN_PROGRESS) { | ||
438 | |||
439 | spin_unlock_irqrestore(&chip->lock, flags); | 430 | spin_unlock_irqrestore(&chip->lock, flags); |
440 | if (time_after(jiffies, end_time)) { | ||
441 | snd_printk("mce_down - " | ||
442 | "auto calibration time out (2)\n"); | ||
443 | return; | ||
444 | } | ||
445 | msleep(1); | ||
446 | spin_lock_irqsave(&chip->lock, flags); | ||
447 | } | ||
448 | |||
449 | /* check condition up to 100ms */ | ||
450 | end_time = jiffies + msecs_to_jiffies(100); | ||
451 | while (__cs4231_readb(chip, CS4231U(chip, REGSEL)) & CS4231_INIT) { | ||
452 | spin_unlock_irqrestore(&chip->lock, flags); | ||
453 | if (time_after(jiffies, end_time)) { | ||
454 | snd_printk("mce_down - " | ||
455 | "auto calibration time out (3)\n"); | ||
456 | return; | ||
457 | } | ||
458 | msleep(1); | 431 | msleep(1); |
459 | spin_lock_irqsave(&chip->lock, flags); | 432 | spin_lock_irqsave(&chip->lock, flags); |
460 | } | 433 | reg = snd_cs4231_in(chip, CS4231_TEST_INIT); |
434 | reg &= CS4231_CALIB_IN_PROGRESS; | ||
435 | } while (reg && time_before(jiffies, timeout)); | ||
461 | spin_unlock_irqrestore(&chip->lock, flags); | 436 | spin_unlock_irqrestore(&chip->lock, flags); |
437 | |||
438 | if (reg) | ||
439 | snd_printk(KERN_ERR | ||
440 | "mce_down - auto calibration time out (2)\n"); | ||
462 | } | 441 | } |
463 | 442 | ||
464 | static void snd_cs4231_advance_dma(struct cs4231_dma_control *dma_cont, | 443 | static void snd_cs4231_advance_dma(struct cs4231_dma_control *dma_cont, |
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h index 743568f89907..59410f437705 100644 --- a/sound/usb/usbquirks.h +++ b/sound/usb/usbquirks.h | |||
@@ -84,6 +84,15 @@ | |||
84 | USB_DEVICE_ID_MATCH_INT_CLASS | | 84 | USB_DEVICE_ID_MATCH_INT_CLASS | |
85 | USB_DEVICE_ID_MATCH_INT_SUBCLASS, | 85 | USB_DEVICE_ID_MATCH_INT_SUBCLASS, |
86 | .idVendor = 0x046d, | 86 | .idVendor = 0x046d, |
87 | .idProduct = 0x08f5, | ||
88 | .bInterfaceClass = USB_CLASS_AUDIO, | ||
89 | .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL | ||
90 | }, | ||
91 | { | ||
92 | .match_flags = USB_DEVICE_ID_MATCH_DEVICE | | ||
93 | USB_DEVICE_ID_MATCH_INT_CLASS | | ||
94 | USB_DEVICE_ID_MATCH_INT_SUBCLASS, | ||
95 | .idVendor = 0x046d, | ||
87 | .idProduct = 0x08f6, | 96 | .idProduct = 0x08f6, |
88 | .bInterfaceClass = USB_CLASS_AUDIO, | 97 | .bInterfaceClass = USB_CLASS_AUDIO, |
89 | .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL | 98 | .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL |