diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/mips/Kconfig | 27 | ||||
| -rw-r--r-- | arch/mips/kernel/head.S | 1 | ||||
| -rw-r--r-- | arch/mips/sibyte/swarm/Makefile | 3 | ||||
| -rw-r--r-- | arch/mips/sibyte/swarm/platform.c | 81 | ||||
| -rw-r--r-- | arch/x86/kernel/acpi/boot.c | 16 | ||||
| -rw-r--r-- | arch/x86/kernel/pci-gart_64.c | 20 |
6 files changed, 127 insertions, 21 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index c930b8ceb418..1e06d233fa83 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
| @@ -211,6 +211,7 @@ config MIPS_MALTA | |||
| 211 | select SYS_SUPPORTS_64BIT_KERNEL | 211 | select SYS_SUPPORTS_64BIT_KERNEL |
| 212 | select SYS_SUPPORTS_BIG_ENDIAN | 212 | select SYS_SUPPORTS_BIG_ENDIAN |
| 213 | select SYS_SUPPORTS_LITTLE_ENDIAN | 213 | select SYS_SUPPORTS_LITTLE_ENDIAN |
| 214 | select SYS_SUPPORTS_MIPS_CMP if BROKEN # because SYNC_R4K is broken | ||
| 214 | select SYS_SUPPORTS_MULTITHREADING | 215 | select SYS_SUPPORTS_MULTITHREADING |
| 215 | select SYS_SUPPORTS_SMARTMIPS | 216 | select SYS_SUPPORTS_SMARTMIPS |
| 216 | help | 217 | help |
| @@ -1499,6 +1500,18 @@ config MIPS_APSP_KSPD | |||
| 1499 | "exit" syscall notifying other kernel modules the SP program is | 1500 | "exit" syscall notifying other kernel modules the SP program is |
| 1500 | exiting. You probably want to say yes here. | 1501 | exiting. You probably want to say yes here. |
| 1501 | 1502 | ||
| 1503 | config MIPS_CMP | ||
| 1504 | bool "MIPS CMP framework support" | ||
| 1505 | depends on SYS_SUPPORTS_MIPS_CMP | ||
| 1506 | select SYNC_R4K if BROKEN | ||
| 1507 | select SYS_SUPPORTS_SMP | ||
| 1508 | select SYS_SUPPORTS_SCHED_SMT if SMP | ||
| 1509 | select WEAK_ORDERING | ||
| 1510 | default n | ||
| 1511 | help | ||
| 1512 | This is a placeholder option for the GCMP work. It will need to | ||
| 1513 | be handled differently... | ||
| 1514 | |||
| 1502 | config SB1_PASS_1_WORKAROUNDS | 1515 | config SB1_PASS_1_WORKAROUNDS |
| 1503 | bool | 1516 | bool |
| 1504 | depends on CPU_SB1_PASS_1 | 1517 | depends on CPU_SB1_PASS_1 |
| @@ -1675,6 +1688,9 @@ config SMP | |||
| 1675 | config SMP_UP | 1688 | config SMP_UP |
| 1676 | bool | 1689 | bool |
| 1677 | 1690 | ||
| 1691 | config SYS_SUPPORTS_MIPS_CMP | ||
| 1692 | bool | ||
| 1693 | |||
| 1678 | config SYS_SUPPORTS_SMP | 1694 | config SYS_SUPPORTS_SMP |
| 1679 | bool | 1695 | bool |
| 1680 | 1696 | ||
| @@ -1722,17 +1738,6 @@ config NR_CPUS | |||
| 1722 | performance should round up your number of processors to the next | 1738 | performance should round up your number of processors to the next |
| 1723 | power of two. | 1739 | power of two. |
| 1724 | 1740 | ||
| 1725 | config MIPS_CMP | ||
| 1726 | bool "MIPS CMP framework support" | ||
| 1727 | depends on SMP | ||
| 1728 | select SYNC_R4K | ||
| 1729 | select SYS_SUPPORTS_SCHED_SMT | ||
| 1730 | select WEAK_ORDERING | ||
| 1731 | default n | ||
| 1732 | help | ||
| 1733 | This is a placeholder option for the GCMP work. It will need to | ||
| 1734 | be handled differently... | ||
| 1735 | |||
| 1736 | source "kernel/time/Kconfig" | 1741 | source "kernel/time/Kconfig" |
| 1737 | 1742 | ||
| 1738 | # | 1743 | # |
diff --git a/arch/mips/kernel/head.S b/arch/mips/kernel/head.S index 361364501d34..492a0a8d70fb 100644 --- a/arch/mips/kernel/head.S +++ b/arch/mips/kernel/head.S | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <asm/irqflags.h> | 22 | #include <asm/irqflags.h> |
| 23 | #include <asm/regdef.h> | 23 | #include <asm/regdef.h> |
| 24 | #include <asm/page.h> | 24 | #include <asm/page.h> |
| 25 | #include <asm/pgtable-bits.h> | ||
| 25 | #include <asm/mipsregs.h> | 26 | #include <asm/mipsregs.h> |
| 26 | #include <asm/stackframe.h> | 27 | #include <asm/stackframe.h> |
| 27 | 28 | ||
diff --git a/arch/mips/sibyte/swarm/Makefile b/arch/mips/sibyte/swarm/Makefile index f18ba9201bbc..7b45f199d92a 100644 --- a/arch/mips/sibyte/swarm/Makefile +++ b/arch/mips/sibyte/swarm/Makefile | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | obj-y := setup.o rtc_xicor1241.o rtc_m41t81.o | 1 | obj-y := platform.o setup.o rtc_xicor1241.o \ |
| 2 | rtc_m41t81.o | ||
| 2 | 3 | ||
| 3 | obj-$(CONFIG_I2C_BOARDINFO) += swarm-i2c.o | 4 | obj-$(CONFIG_I2C_BOARDINFO) += swarm-i2c.o |
diff --git a/arch/mips/sibyte/swarm/platform.c b/arch/mips/sibyte/swarm/platform.c new file mode 100644 index 000000000000..dd0e5b9b64e8 --- /dev/null +++ b/arch/mips/sibyte/swarm/platform.c | |||
| @@ -0,0 +1,81 @@ | |||
| 1 | #include <linux/err.h> | ||
| 2 | #include <linux/kernel.h> | ||
| 3 | #include <linux/init.h> | ||
| 4 | #include <linux/io.h> | ||
| 5 | #include <linux/platform_device.h> | ||
| 6 | #include <linux/ata_platform.h> | ||
| 7 | |||
| 8 | #include <asm/sibyte/board.h> | ||
| 9 | #include <asm/sibyte/sb1250_genbus.h> | ||
| 10 | #include <asm/sibyte/sb1250_regs.h> | ||
| 11 | |||
| 12 | #define DRV_NAME "pata-swarm" | ||
| 13 | |||
| 14 | #define SWARM_IDE_SHIFT 5 | ||
| 15 | #define SWARM_IDE_BASE 0x1f0 | ||
| 16 | #define SWARM_IDE_CTRL 0x3f6 | ||
| 17 | |||
| 18 | static struct resource swarm_pata_resource[] = { | ||
| 19 | { | ||
| 20 | .name = "Swarm GenBus IDE", | ||
| 21 | .flags = IORESOURCE_MEM, | ||
| 22 | }, { | ||
| 23 | .name = "Swarm GenBus IDE", | ||
| 24 | .flags = IORESOURCE_MEM, | ||
| 25 | }, { | ||
| 26 | .name = "Swarm GenBus IDE", | ||
| 27 | .flags = IORESOURCE_IRQ, | ||
| 28 | .start = K_INT_GB_IDE, | ||
| 29 | .end = K_INT_GB_IDE, | ||
| 30 | }, | ||
| 31 | }; | ||
| 32 | |||
| 33 | static struct pata_platform_info pata_platform_data = { | ||
| 34 | .ioport_shift = SWARM_IDE_SHIFT, | ||
| 35 | }; | ||
| 36 | |||
| 37 | static struct platform_device swarm_pata_device = { | ||
| 38 | .name = "pata_platform", | ||
| 39 | .id = -1, | ||
| 40 | .resource = swarm_pata_resource, | ||
| 41 | .num_resources = ARRAY_SIZE(swarm_pata_resource), | ||
| 42 | .dev = { | ||
| 43 | .platform_data = &pata_platform_data, | ||
| 44 | .coherent_dma_mask = ~0, /* grumble */ | ||
| 45 | }, | ||
| 46 | }; | ||
| 47 | |||
| 48 | static int __init swarm_pata_init(void) | ||
| 49 | { | ||
| 50 | u8 __iomem *base; | ||
| 51 | phys_t offset, size; | ||
| 52 | struct resource *r; | ||
| 53 | |||
| 54 | if (!SIBYTE_HAVE_IDE) | ||
| 55 | return -ENODEV; | ||
| 56 | |||
| 57 | base = ioremap(A_IO_EXT_BASE, 0x800); | ||
| 58 | offset = __raw_readq(base + R_IO_EXT_REG(R_IO_EXT_START_ADDR, IDE_CS)); | ||
| 59 | size = __raw_readq(base + R_IO_EXT_REG(R_IO_EXT_MULT_SIZE, IDE_CS)); | ||
| 60 | iounmap(base); | ||
| 61 | |||
| 62 | offset = G_IO_START_ADDR(offset) << S_IO_ADDRBASE; | ||
| 63 | size = (G_IO_MULT_SIZE(size) + 1) << S_IO_REGSIZE; | ||
| 64 | if (offset < A_PHYS_GENBUS || offset >= A_PHYS_GENBUS_END) { | ||
| 65 | pr_info(DRV_NAME ": PATA interface at GenBus disabled\n"); | ||
| 66 | |||
| 67 | return -EBUSY; | ||
| 68 | } | ||
| 69 | |||
| 70 | pr_info(DRV_NAME ": PATA interface at GenBus slot %i\n", IDE_CS); | ||
| 71 | |||
| 72 | r = swarm_pata_resource; | ||
| 73 | r[0].start = offset + (SWARM_IDE_BASE << SWARM_IDE_SHIFT); | ||
| 74 | r[0].end = offset + ((SWARM_IDE_BASE + 8) << SWARM_IDE_SHIFT) - 1; | ||
| 75 | r[1].start = offset + (SWARM_IDE_CTRL << SWARM_IDE_SHIFT); | ||
| 76 | r[1].end = offset + ((SWARM_IDE_CTRL + 1) << SWARM_IDE_SHIFT) - 1; | ||
| 77 | |||
| 78 | return platform_device_register(&swarm_pata_device); | ||
| 79 | } | ||
| 80 | |||
| 81 | device_initcall(swarm_pata_init); | ||
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index bfd10fd211cd..c102af85df9c 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
| @@ -1605,6 +1605,14 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { | |||
| 1605 | */ | 1605 | */ |
| 1606 | { | 1606 | { |
| 1607 | .callback = dmi_ignore_irq0_timer_override, | 1607 | .callback = dmi_ignore_irq0_timer_override, |
| 1608 | .ident = "HP nx6115 laptop", | ||
| 1609 | .matches = { | ||
| 1610 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | ||
| 1611 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq nx6115"), | ||
| 1612 | }, | ||
| 1613 | }, | ||
| 1614 | { | ||
| 1615 | .callback = dmi_ignore_irq0_timer_override, | ||
| 1608 | .ident = "HP NX6125 laptop", | 1616 | .ident = "HP NX6125 laptop", |
| 1609 | .matches = { | 1617 | .matches = { |
| 1610 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | 1618 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), |
| @@ -1619,6 +1627,14 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { | |||
| 1619 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq nx6325"), | 1627 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq nx6325"), |
| 1620 | }, | 1628 | }, |
| 1621 | }, | 1629 | }, |
| 1630 | { | ||
| 1631 | .callback = dmi_ignore_irq0_timer_override, | ||
| 1632 | .ident = "HP 6715b laptop", | ||
| 1633 | .matches = { | ||
| 1634 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | ||
| 1635 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"), | ||
| 1636 | }, | ||
| 1637 | }, | ||
| 1622 | {} | 1638 | {} |
| 1623 | }; | 1639 | }; |
| 1624 | 1640 | ||
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index 49285f8fd4d5..be33a5442d82 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c | |||
| @@ -626,7 +626,6 @@ static __init int init_k8_gatt(struct agp_kern_info *info) | |||
| 626 | struct pci_dev *dev; | 626 | struct pci_dev *dev; |
| 627 | void *gatt; | 627 | void *gatt; |
| 628 | int i, error; | 628 | int i, error; |
| 629 | unsigned long start_pfn, end_pfn; | ||
| 630 | 629 | ||
| 631 | printk(KERN_INFO "PCI-DMA: Disabling AGP.\n"); | 630 | printk(KERN_INFO "PCI-DMA: Disabling AGP.\n"); |
| 632 | aper_size = aper_base = info->aper_size = 0; | 631 | aper_size = aper_base = info->aper_size = 0; |
| @@ -672,12 +671,6 @@ static __init int init_k8_gatt(struct agp_kern_info *info) | |||
| 672 | printk(KERN_INFO "PCI-DMA: aperture base @ %x size %u KB\n", | 671 | printk(KERN_INFO "PCI-DMA: aperture base @ %x size %u KB\n", |
| 673 | aper_base, aper_size>>10); | 672 | aper_base, aper_size>>10); |
| 674 | 673 | ||
| 675 | /* need to map that range */ | ||
| 676 | end_pfn = (aper_base>>PAGE_SHIFT) + (aper_size>>PAGE_SHIFT); | ||
| 677 | if (end_pfn > max_low_pfn_mapped) { | ||
| 678 | start_pfn = (aper_base>>PAGE_SHIFT); | ||
| 679 | init_memory_mapping(start_pfn<<PAGE_SHIFT, end_pfn<<PAGE_SHIFT); | ||
| 680 | } | ||
| 681 | return 0; | 674 | return 0; |
| 682 | 675 | ||
| 683 | nommu: | 676 | nommu: |
| @@ -727,7 +720,8 @@ void __init gart_iommu_init(void) | |||
| 727 | { | 720 | { |
| 728 | struct agp_kern_info info; | 721 | struct agp_kern_info info; |
| 729 | unsigned long iommu_start; | 722 | unsigned long iommu_start; |
| 730 | unsigned long aper_size; | 723 | unsigned long aper_base, aper_size; |
| 724 | unsigned long start_pfn, end_pfn; | ||
| 731 | unsigned long scratch; | 725 | unsigned long scratch; |
| 732 | long i; | 726 | long i; |
| 733 | 727 | ||
| @@ -765,8 +759,16 @@ void __init gart_iommu_init(void) | |||
| 765 | return; | 759 | return; |
| 766 | } | 760 | } |
| 767 | 761 | ||
| 762 | /* need to map that range */ | ||
| 763 | aper_size = info.aper_size << 20; | ||
| 764 | aper_base = info.aper_base; | ||
| 765 | end_pfn = (aper_base>>PAGE_SHIFT) + (aper_size>>PAGE_SHIFT); | ||
| 766 | if (end_pfn > max_low_pfn_mapped) { | ||
| 767 | start_pfn = (aper_base>>PAGE_SHIFT); | ||
| 768 | init_memory_mapping(start_pfn<<PAGE_SHIFT, end_pfn<<PAGE_SHIFT); | ||
| 769 | } | ||
| 770 | |||
| 768 | printk(KERN_INFO "PCI-DMA: using GART IOMMU.\n"); | 771 | printk(KERN_INFO "PCI-DMA: using GART IOMMU.\n"); |
| 769 | aper_size = info.aper_size * 1024 * 1024; | ||
| 770 | iommu_size = check_iommu_size(info.aper_base, aper_size); | 772 | iommu_size = check_iommu_size(info.aper_base, aper_size); |
| 771 | iommu_pages = iommu_size >> PAGE_SHIFT; | 773 | iommu_pages = iommu_size >> PAGE_SHIFT; |
| 772 | 774 | ||
