diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2005-08-30 00:44:33 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-08-30 00:44:33 -0400 |
| commit | 8bc2bee26bc7ba77eb1ffc3e3282002d9893cf09 (patch) | |
| tree | e7c85eca8d55007b0a467b99820820cd40ef4963 | |
| parent | 826509f8110049663799bc20f2b5b6170e2f78ca (diff) | |
| parent | 8913ca1c9ccb5eb6471afd419159729eef6e2730 (diff) | |
Merge HEAD from master.kernel.org:/pub/scm/linux/kernel/git/paulus/ppc64-2.6
75 files changed, 204 insertions, 573 deletions
diff --git a/arch/ppc/Makefile b/arch/ppc/Makefile index f9b0d778dd82..d1b6e6dcb504 100644 --- a/arch/ppc/Makefile +++ b/arch/ppc/Makefile | |||
| @@ -21,11 +21,13 @@ CC := $(CC) -m32 | |||
| 21 | endif | 21 | endif |
| 22 | 22 | ||
| 23 | LDFLAGS_vmlinux := -Ttext $(KERNELLOAD) -Bstatic | 23 | LDFLAGS_vmlinux := -Ttext $(KERNELLOAD) -Bstatic |
| 24 | CPPFLAGS += -Iarch/$(ARCH) | 24 | CPPFLAGS += -Iarch/$(ARCH) -Iinclude3 |
| 25 | AFLAGS += -Iarch/$(ARCH) | 25 | AFLAGS += -Iarch/$(ARCH) |
| 26 | CFLAGS += -Iarch/$(ARCH) -msoft-float -pipe \ | 26 | CFLAGS += -Iarch/$(ARCH) -msoft-float -pipe \ |
| 27 | -ffixed-r2 -mmultiple | 27 | -ffixed-r2 -mmultiple |
| 28 | CPP = $(CC) -E $(CFLAGS) | 28 | CPP = $(CC) -E $(CFLAGS) |
| 29 | # Temporary hack until we have migrated to asm-powerpc | ||
| 30 | LINUXINCLUDE += -Iinclude3 | ||
| 29 | 31 | ||
| 30 | CHECKFLAGS += -D__powerpc__ | 32 | CHECKFLAGS += -D__powerpc__ |
| 31 | 33 | ||
| @@ -101,6 +103,7 @@ endef | |||
| 101 | 103 | ||
| 102 | archclean: | 104 | archclean: |
| 103 | $(Q)$(MAKE) $(clean)=arch/ppc/boot | 105 | $(Q)$(MAKE) $(clean)=arch/ppc/boot |
| 106 | $(Q)rm -rf include3 | ||
| 104 | 107 | ||
| 105 | prepare: include/asm-$(ARCH)/offsets.h checkbin | 108 | prepare: include/asm-$(ARCH)/offsets.h checkbin |
| 106 | 109 | ||
| @@ -110,6 +113,12 @@ arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ | |||
| 110 | include/asm-$(ARCH)/offsets.h: arch/$(ARCH)/kernel/asm-offsets.s | 113 | include/asm-$(ARCH)/offsets.h: arch/$(ARCH)/kernel/asm-offsets.s |
| 111 | $(call filechk,gen-asm-offsets) | 114 | $(call filechk,gen-asm-offsets) |
| 112 | 115 | ||
| 116 | # Temporary hack until we have migrated to asm-powerpc | ||
| 117 | include/asm: include3/asm | ||
| 118 | include3/asm: | ||
| 119 | $(Q)if [ ! -d include3 ]; then mkdir -p include3; fi | ||
| 120 | $(Q)ln -fsn $(srctree)/include/asm-powerpc include3/asm | ||
| 121 | |||
| 113 | # Use the file '.tmp_gas_check' for binutils tests, as gas won't output | 122 | # Use the file '.tmp_gas_check' for binutils tests, as gas won't output |
| 114 | # to stdout and these checks are run even on install targets. | 123 | # to stdout and these checks are run even on install targets. |
| 115 | TOUT := .tmp_gas_check | 124 | TOUT := .tmp_gas_check |
diff --git a/arch/ppc64/Makefile b/arch/ppc64/Makefile index 731b84758331..6350cce82efb 100644 --- a/arch/ppc64/Makefile +++ b/arch/ppc64/Makefile | |||
| @@ -55,6 +55,8 @@ LDFLAGS := -m elf64ppc | |||
| 55 | LDFLAGS_vmlinux := -Bstatic -e $(KERNELLOAD) -Ttext $(KERNELLOAD) | 55 | LDFLAGS_vmlinux := -Bstatic -e $(KERNELLOAD) -Ttext $(KERNELLOAD) |
| 56 | CFLAGS += -msoft-float -pipe -mminimal-toc -mtraceback=none \ | 56 | CFLAGS += -msoft-float -pipe -mminimal-toc -mtraceback=none \ |
| 57 | -mcall-aixdesc | 57 | -mcall-aixdesc |
| 58 | # Temporary hack until we have migrated to asm-powerpc | ||
| 59 | CPPFLAGS += -Iinclude3 | ||
| 58 | 60 | ||
| 59 | GCC_VERSION := $(call cc-version) | 61 | GCC_VERSION := $(call cc-version) |
| 60 | GCC_BROKEN_VEC := $(shell if [ $(GCC_VERSION) -lt 0400 ] ; then echo "y"; fi ;) | 62 | GCC_BROKEN_VEC := $(shell if [ $(GCC_VERSION) -lt 0400 ] ; then echo "y"; fi ;) |
| @@ -112,6 +114,7 @@ all: $(KBUILD_IMAGE) | |||
| 112 | 114 | ||
| 113 | archclean: | 115 | archclean: |
| 114 | $(Q)$(MAKE) $(clean)=$(boot) | 116 | $(Q)$(MAKE) $(clean)=$(boot) |
| 117 | $(Q)rm -rf include3 | ||
| 115 | 118 | ||
| 116 | prepare: include/asm-ppc64/offsets.h | 119 | prepare: include/asm-ppc64/offsets.h |
| 117 | 120 | ||
| @@ -121,6 +124,12 @@ arch/ppc64/kernel/asm-offsets.s: include/asm include/linux/version.h \ | |||
| 121 | include/asm-ppc64/offsets.h: arch/ppc64/kernel/asm-offsets.s | 124 | include/asm-ppc64/offsets.h: arch/ppc64/kernel/asm-offsets.s |
| 122 | $(call filechk,gen-asm-offsets) | 125 | $(call filechk,gen-asm-offsets) |
| 123 | 126 | ||
| 127 | # Temporary hack until we have migrated to asm-powerpc | ||
| 128 | include/asm: include3/asm | ||
| 129 | include3/asm: | ||
| 130 | $(Q)if [ ! -d include3 ]; then mkdir -p include3; fi; | ||
| 131 | $(Q)ln -fsn $(srctree)/include/asm-powerpc include3/asm | ||
| 132 | |||
| 124 | define archhelp | 133 | define archhelp |
| 125 | echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)' | 134 | echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)' |
| 126 | echo ' zImage.initrd- Compressed kernel image with initrd attached,' | 135 | echo ' zImage.initrd- Compressed kernel image with initrd attached,' |
diff --git a/arch/ppc64/configs/g5_defconfig b/arch/ppc64/configs/g5_defconfig index ab567741e80e..fc83d9330282 100644 --- a/arch/ppc64/configs/g5_defconfig +++ b/arch/ppc64/configs/g5_defconfig | |||
| @@ -103,10 +103,10 @@ CONFIG_PREEMPT_NONE=y | |||
| 103 | # CONFIG_PREEMPT_VOLUNTARY is not set | 103 | # CONFIG_PREEMPT_VOLUNTARY is not set |
| 104 | # CONFIG_PREEMPT is not set | 104 | # CONFIG_PREEMPT is not set |
| 105 | # CONFIG_PREEMPT_BKL is not set | 105 | # CONFIG_PREEMPT_BKL is not set |
| 106 | CONFIG_HZ_100=y | 106 | # CONFIG_HZ_100 is not set |
| 107 | # CONFIG_HZ_250 is not set | 107 | CONFIG_HZ_250=y |
| 108 | # CONFIG_HZ_1000 is not set | 108 | # CONFIG_HZ_1000 is not set |
| 109 | CONFIG_HZ=100 | 109 | CONFIG_HZ=250 |
| 110 | CONFIG_GENERIC_HARDIRQS=y | 110 | CONFIG_GENERIC_HARDIRQS=y |
| 111 | CONFIG_SECCOMP=y | 111 | CONFIG_SECCOMP=y |
| 112 | CONFIG_ISA_DMA_API=y | 112 | CONFIG_ISA_DMA_API=y |
diff --git a/arch/ppc64/configs/iSeries_defconfig b/arch/ppc64/configs/iSeries_defconfig index 219c6677abcc..013d4e0e4003 100644 --- a/arch/ppc64/configs/iSeries_defconfig +++ b/arch/ppc64/configs/iSeries_defconfig | |||
| @@ -94,10 +94,10 @@ CONFIG_PREEMPT_NONE=y | |||
| 94 | # CONFIG_PREEMPT_VOLUNTARY is not set | 94 | # CONFIG_PREEMPT_VOLUNTARY is not set |
| 95 | # CONFIG_PREEMPT is not set | 95 | # CONFIG_PREEMPT is not set |
| 96 | # CONFIG_PREEMPT_BKL is not set | 96 | # CONFIG_PREEMPT_BKL is not set |
| 97 | CONFIG_HZ_100=y | 97 | # CONFIG_HZ_100 is not set |
| 98 | # CONFIG_HZ_250 is not set | 98 | CONFIG_HZ_250=y |
| 99 | # CONFIG_HZ_1000 is not set | 99 | # CONFIG_HZ_1000 is not set |
| 100 | CONFIG_HZ=100 | 100 | CONFIG_HZ=250 |
| 101 | CONFIG_GENERIC_HARDIRQS=y | 101 | CONFIG_GENERIC_HARDIRQS=y |
| 102 | CONFIG_LPARCFG=y | 102 | CONFIG_LPARCFG=y |
| 103 | CONFIG_SECCOMP=y | 103 | CONFIG_SECCOMP=y |
diff --git a/arch/ppc64/configs/maple_defconfig b/arch/ppc64/configs/maple_defconfig index 2033fe663dbe..dd42892cd873 100644 --- a/arch/ppc64/configs/maple_defconfig +++ b/arch/ppc64/configs/maple_defconfig | |||
| @@ -103,10 +103,10 @@ CONFIG_PREEMPT_NONE=y | |||
| 103 | # CONFIG_PREEMPT_VOLUNTARY is not set | 103 | # CONFIG_PREEMPT_VOLUNTARY is not set |
| 104 | # CONFIG_PREEMPT is not set | 104 | # CONFIG_PREEMPT is not set |
| 105 | # CONFIG_PREEMPT_BKL is not set | 105 | # CONFIG_PREEMPT_BKL is not set |
| 106 | CONFIG_HZ_100=y | 106 | # CONFIG_HZ_100 is not set |
| 107 | # CONFIG_HZ_250 is not set | 107 | CONFIG_HZ_250=y |
| 108 | # CONFIG_HZ_1000 is not set | 108 | # CONFIG_HZ_1000 is not set |
| 109 | CONFIG_HZ=100 | 109 | CONFIG_HZ=250 |
| 110 | CONFIG_GENERIC_HARDIRQS=y | 110 | CONFIG_GENERIC_HARDIRQS=y |
| 111 | CONFIG_SECCOMP=y | 111 | CONFIG_SECCOMP=y |
| 112 | CONFIG_ISA_DMA_API=y | 112 | CONFIG_ISA_DMA_API=y |
diff --git a/arch/ppc64/configs/pSeries_defconfig b/arch/ppc64/configs/pSeries_defconfig index 297fd5229487..29f7b80b0efc 100644 --- a/arch/ppc64/configs/pSeries_defconfig +++ b/arch/ppc64/configs/pSeries_defconfig | |||
| @@ -112,10 +112,10 @@ CONFIG_PREEMPT_NONE=y | |||
| 112 | # CONFIG_PREEMPT_VOLUNTARY is not set | 112 | # CONFIG_PREEMPT_VOLUNTARY is not set |
| 113 | # CONFIG_PREEMPT is not set | 113 | # CONFIG_PREEMPT is not set |
| 114 | # CONFIG_PREEMPT_BKL is not set | 114 | # CONFIG_PREEMPT_BKL is not set |
| 115 | CONFIG_HZ_100=y | 115 | # CONFIG_HZ_100 is not set |
| 116 | # CONFIG_HZ_250 is not set | 116 | CONFIG_HZ_250=y |
| 117 | # CONFIG_HZ_1000 is not set | 117 | # CONFIG_HZ_1000 is not set |
| 118 | CONFIG_HZ=100 | 118 | CONFIG_HZ=250 |
| 119 | CONFIG_EEH=y | 119 | CONFIG_EEH=y |
| 120 | CONFIG_GENERIC_HARDIRQS=y | 120 | CONFIG_GENERIC_HARDIRQS=y |
| 121 | CONFIG_PPC_RTAS=y | 121 | CONFIG_PPC_RTAS=y |
diff --git a/arch/ppc64/defconfig b/arch/ppc64/defconfig index c361e7727b7a..7cb4750bb7a9 100644 --- a/arch/ppc64/defconfig +++ b/arch/ppc64/defconfig | |||
| @@ -114,10 +114,10 @@ CONFIG_PREEMPT_NONE=y | |||
| 114 | # CONFIG_PREEMPT_VOLUNTARY is not set | 114 | # CONFIG_PREEMPT_VOLUNTARY is not set |
| 115 | # CONFIG_PREEMPT is not set | 115 | # CONFIG_PREEMPT is not set |
| 116 | # CONFIG_PREEMPT_BKL is not set | 116 | # CONFIG_PREEMPT_BKL is not set |
| 117 | CONFIG_HZ_100=y | 117 | # CONFIG_HZ_100 is not set |
| 118 | # CONFIG_HZ_250 is not set | 118 | CONFIG_HZ_250=y |
| 119 | # CONFIG_HZ_1000 is not set | 119 | # CONFIG_HZ_1000 is not set |
| 120 | CONFIG_HZ=100 | 120 | CONFIG_HZ=250 |
| 121 | CONFIG_EEH=y | 121 | CONFIG_EEH=y |
| 122 | CONFIG_GENERIC_HARDIRQS=y | 122 | CONFIG_GENERIC_HARDIRQS=y |
| 123 | CONFIG_PPC_RTAS=y | 123 | CONFIG_PPC_RTAS=y |
diff --git a/arch/ppc64/kernel/head.S b/arch/ppc64/kernel/head.S index cccec4902646..036959775623 100644 --- a/arch/ppc64/kernel/head.S +++ b/arch/ppc64/kernel/head.S | |||
| @@ -1269,7 +1269,21 @@ initial_stab: | |||
| 1269 | .= 0x7000 | 1269 | .= 0x7000 |
| 1270 | .globl fwnmi_data_area | 1270 | .globl fwnmi_data_area |
| 1271 | fwnmi_data_area: | 1271 | fwnmi_data_area: |
| 1272 | .space PAGE_SIZE | 1272 | |
| 1273 | /* iSeries does not use the FWNMI stuff, so it is safe to put | ||
| 1274 | * this here, even if we later allow kernels that will boot on | ||
| 1275 | * both pSeries and iSeries */ | ||
| 1276 | #ifdef CONFIG_PPC_ISERIES | ||
| 1277 | . = LPARMAP_PHYS | ||
| 1278 | #include "lparmap.s" | ||
| 1279 | /* | ||
| 1280 | * This ".text" is here for old compilers that generate a trailing | ||
| 1281 | * .note section when compiling .c files to .s | ||
| 1282 | */ | ||
| 1283 | .text | ||
| 1284 | #endif /* CONFIG_PPC_ISERIES */ | ||
| 1285 | |||
| 1286 | . = 0x8000 | ||
| 1273 | 1287 | ||
| 1274 | /* | 1288 | /* |
| 1275 | * On pSeries, secondary processors spin in the following code. | 1289 | * On pSeries, secondary processors spin in the following code. |
diff --git a/arch/ppc64/kernel/iSeries_vio.c b/arch/ppc64/kernel/iSeries_vio.c index b4268cc4ba48..6b754b0c8344 100644 --- a/arch/ppc64/kernel/iSeries_vio.c +++ b/arch/ppc64/kernel/iSeries_vio.c | |||
| @@ -68,7 +68,7 @@ static void __init iommu_vio_init(void) | |||
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | /** | 70 | /** |
| 71 | * vio_register_device: - Register a new vio device. | 71 | * vio_register_device_iseries: - Register a new iSeries vio device. |
| 72 | * @voidev: The device to register. | 72 | * @voidev: The device to register. |
| 73 | */ | 73 | */ |
| 74 | static struct vio_dev *__init vio_register_device_iseries(char *type, | 74 | static struct vio_dev *__init vio_register_device_iseries(char *type, |
| @@ -76,7 +76,7 @@ static struct vio_dev *__init vio_register_device_iseries(char *type, | |||
| 76 | { | 76 | { |
| 77 | struct vio_dev *viodev; | 77 | struct vio_dev *viodev; |
| 78 | 78 | ||
| 79 | /* allocate a vio_dev for this node */ | 79 | /* allocate a vio_dev for this device */ |
| 80 | viodev = kmalloc(sizeof(struct vio_dev), GFP_KERNEL); | 80 | viodev = kmalloc(sizeof(struct vio_dev), GFP_KERNEL); |
| 81 | if (!viodev) | 81 | if (!viodev) |
| 82 | return NULL; | 82 | return NULL; |
| @@ -84,8 +84,15 @@ static struct vio_dev *__init vio_register_device_iseries(char *type, | |||
| 84 | 84 | ||
| 85 | snprintf(viodev->dev.bus_id, BUS_ID_SIZE, "%s%d", type, unit_num); | 85 | snprintf(viodev->dev.bus_id, BUS_ID_SIZE, "%s%d", type, unit_num); |
| 86 | 86 | ||
| 87 | return vio_register_device_common(viodev, viodev->dev.bus_id, type, | 87 | viodev->name = viodev->dev.bus_id; |
| 88 | unit_num, &vio_iommu_table); | 88 | viodev->type = type; |
| 89 | viodev->unit_address = unit_num; | ||
| 90 | viodev->iommu_table = &vio_iommu_table; | ||
| 91 | if (vio_register_device(viodev) == NULL) { | ||
| 92 | kfree(viodev); | ||
| 93 | return NULL; | ||
| 94 | } | ||
| 95 | return viodev; | ||
| 89 | } | 96 | } |
| 90 | 97 | ||
| 91 | void __init probe_bus_iseries(void) | 98 | void __init probe_bus_iseries(void) |
| @@ -124,6 +131,10 @@ static int vio_match_device_iseries(const struct vio_device_id *id, | |||
| 124 | return strncmp(dev->type, id->type, strlen(id->type)) == 0; | 131 | return strncmp(dev->type, id->type, strlen(id->type)) == 0; |
| 125 | } | 132 | } |
| 126 | 133 | ||
| 134 | static struct vio_bus_ops vio_bus_ops_iseries = { | ||
| 135 | .match = vio_match_device_iseries, | ||
| 136 | }; | ||
| 137 | |||
| 127 | /** | 138 | /** |
| 128 | * vio_bus_init_iseries: - Initialize the iSeries virtual IO bus | 139 | * vio_bus_init_iseries: - Initialize the iSeries virtual IO bus |
| 129 | */ | 140 | */ |
| @@ -131,7 +142,7 @@ static int __init vio_bus_init_iseries(void) | |||
| 131 | { | 142 | { |
| 132 | int err; | 143 | int err; |
| 133 | 144 | ||
| 134 | err = vio_bus_init(vio_match_device_iseries, NULL, NULL); | 145 | err = vio_bus_init(&vio_bus_ops_iseries); |
| 135 | if (err == 0) { | 146 | if (err == 0) { |
| 136 | iommu_vio_init(); | 147 | iommu_vio_init(); |
| 137 | vio_bus_device.iommu_table = &vio_iommu_table; | 148 | vio_bus_device.iommu_table = &vio_iommu_table; |
diff --git a/arch/ppc64/kernel/lparcfg.c b/arch/ppc64/kernel/lparcfg.c index 9d034ff062b1..edad361a8db0 100644 --- a/arch/ppc64/kernel/lparcfg.c +++ b/arch/ppc64/kernel/lparcfg.c | |||
| @@ -273,6 +273,7 @@ static void parse_system_parameter_string(struct seq_file *m) | |||
| 273 | if (!workbuffer) { | 273 | if (!workbuffer) { |
| 274 | printk(KERN_ERR "%s %s kmalloc failure at line %d \n", | 274 | printk(KERN_ERR "%s %s kmalloc failure at line %d \n", |
| 275 | __FILE__, __FUNCTION__, __LINE__); | 275 | __FILE__, __FUNCTION__, __LINE__); |
| 276 | kfree(local_buffer); | ||
| 276 | return; | 277 | return; |
| 277 | } | 278 | } |
| 278 | #ifdef LPARCFG_DEBUG | 279 | #ifdef LPARCFG_DEBUG |
diff --git a/arch/ppc64/kernel/of_device.c b/arch/ppc64/kernel/of_device.c index b80e81984ba8..da580812ddfe 100644 --- a/arch/ppc64/kernel/of_device.c +++ b/arch/ppc64/kernel/of_device.c | |||
| @@ -236,7 +236,6 @@ void of_device_unregister(struct of_device *ofdev) | |||
| 236 | struct of_device* of_platform_device_create(struct device_node *np, const char *bus_id) | 236 | struct of_device* of_platform_device_create(struct device_node *np, const char *bus_id) |
| 237 | { | 237 | { |
| 238 | struct of_device *dev; | 238 | struct of_device *dev; |
| 239 | u32 *reg; | ||
| 240 | 239 | ||
| 241 | dev = kmalloc(sizeof(*dev), GFP_KERNEL); | 240 | dev = kmalloc(sizeof(*dev), GFP_KERNEL); |
| 242 | if (!dev) | 241 | if (!dev) |
| @@ -250,7 +249,6 @@ struct of_device* of_platform_device_create(struct device_node *np, const char * | |||
| 250 | dev->dev.bus = &of_platform_bus_type; | 249 | dev->dev.bus = &of_platform_bus_type; |
| 251 | dev->dev.release = of_release_dev; | 250 | dev->dev.release = of_release_dev; |
| 252 | 251 | ||
| 253 | reg = (u32 *)get_property(np, "reg", NULL); | ||
| 254 | strlcpy(dev->dev.bus_id, bus_id, BUS_ID_SIZE); | 252 | strlcpy(dev->dev.bus_id, bus_id, BUS_ID_SIZE); |
| 255 | 253 | ||
| 256 | if (of_device_register(dev) != 0) { | 254 | if (of_device_register(dev) != 0) { |
diff --git a/arch/ppc64/kernel/pSeries_vio.c b/arch/ppc64/kernel/pSeries_vio.c index 338f9e1bdc09..e0ae06f58f86 100644 --- a/arch/ppc64/kernel/pSeries_vio.c +++ b/arch/ppc64/kernel/pSeries_vio.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include <linux/kobject.h> | 19 | #include <linux/kobject.h> |
| 20 | #include <asm/iommu.h> | 20 | #include <asm/iommu.h> |
| 21 | #include <asm/dma.h> | 21 | #include <asm/dma.h> |
| 22 | #include <asm/prom.h> | ||
| 22 | #include <asm/vio.h> | 23 | #include <asm/vio.h> |
| 23 | #include <asm/hvcall.h> | 24 | #include <asm/hvcall.h> |
| 24 | 25 | ||
| @@ -75,6 +76,12 @@ static void vio_unregister_device_pseries(struct vio_dev *viodev) | |||
| 75 | device_remove_file(&viodev->dev, &dev_attr_devspec); | 76 | device_remove_file(&viodev->dev, &dev_attr_devspec); |
| 76 | } | 77 | } |
| 77 | 78 | ||
| 79 | static struct vio_bus_ops vio_bus_ops_pseries = { | ||
| 80 | .match = vio_match_device_pseries, | ||
| 81 | .unregister_device = vio_unregister_device_pseries, | ||
| 82 | .release_device = vio_release_device_pseries, | ||
| 83 | }; | ||
| 84 | |||
| 78 | /** | 85 | /** |
| 79 | * vio_bus_init_pseries: - Initialize the pSeries virtual IO bus | 86 | * vio_bus_init_pseries: - Initialize the pSeries virtual IO bus |
| 80 | */ | 87 | */ |
| @@ -82,9 +89,7 @@ static int __init vio_bus_init_pseries(void) | |||
| 82 | { | 89 | { |
| 83 | int err; | 90 | int err; |
| 84 | 91 | ||
| 85 | err = vio_bus_init(vio_match_device_pseries, | 92 | err = vio_bus_init(&vio_bus_ops_pseries); |
| 86 | vio_unregister_device_pseries, | ||
| 87 | vio_release_device_pseries); | ||
| 88 | if (err == 0) | 93 | if (err == 0) |
| 89 | probe_bus_pseries(); | 94 | probe_bus_pseries(); |
| 90 | return err; | 95 | return err; |
| @@ -181,11 +186,13 @@ struct vio_dev * __devinit vio_register_device_node(struct device_node *of_node) | |||
| 181 | } | 186 | } |
| 182 | 187 | ||
| 183 | snprintf(viodev->dev.bus_id, BUS_ID_SIZE, "%x", *unit_address); | 188 | snprintf(viodev->dev.bus_id, BUS_ID_SIZE, "%x", *unit_address); |
| 189 | viodev->name = of_node->name; | ||
| 190 | viodev->type = of_node->type; | ||
| 191 | viodev->unit_address = *unit_address; | ||
| 192 | viodev->iommu_table = vio_build_iommu_table(viodev); | ||
| 184 | 193 | ||
| 185 | /* register with generic device framework */ | 194 | /* register with generic device framework */ |
| 186 | if (vio_register_device_common(viodev, of_node->name, of_node->type, | 195 | if (vio_register_device(viodev) == NULL) { |
| 187 | *unit_address, vio_build_iommu_table(viodev)) | ||
| 188 | == NULL) { | ||
| 189 | /* XXX free TCE table */ | 196 | /* XXX free TCE table */ |
| 190 | kfree(viodev); | 197 | kfree(viodev); |
| 191 | return NULL; | 198 | return NULL; |
diff --git a/arch/ppc64/kernel/prom_init.c b/arch/ppc64/kernel/prom_init.c index adcf972711fc..122283a1d39a 100644 --- a/arch/ppc64/kernel/prom_init.c +++ b/arch/ppc64/kernel/prom_init.c | |||
| @@ -892,7 +892,10 @@ static void __init prom_init_mem(void) | |||
| 892 | if ( RELOC(of_platform) == PLATFORM_PSERIES_LPAR ) | 892 | if ( RELOC(of_platform) == PLATFORM_PSERIES_LPAR ) |
| 893 | RELOC(alloc_top) = RELOC(rmo_top); | 893 | RELOC(alloc_top) = RELOC(rmo_top); |
| 894 | else | 894 | else |
| 895 | RELOC(alloc_top) = RELOC(rmo_top) = min(0x40000000ul, RELOC(ram_top)); | 895 | /* Some RS64 machines have buggy firmware where claims up at 1GB |
| 896 | * fails. Cap at 768MB as a workaround. Still plenty of room. | ||
| 897 | */ | ||
| 898 | RELOC(alloc_top) = RELOC(rmo_top) = min(0x30000000ul, RELOC(ram_top)); | ||
| 896 | 899 | ||
| 897 | prom_printf("memory layout at init:\n"); | 900 | prom_printf("memory layout at init:\n"); |
| 898 | prom_printf(" memory_limit : %x (16 MB aligned)\n", RELOC(prom_memory_limit)); | 901 | prom_printf(" memory_limit : %x (16 MB aligned)\n", RELOC(prom_memory_limit)); |
diff --git a/arch/ppc64/kernel/vio.c b/arch/ppc64/kernel/vio.c index 3b790bafcaad..c90e1dd875ce 100644 --- a/arch/ppc64/kernel/vio.c +++ b/arch/ppc64/kernel/vio.c | |||
| @@ -32,14 +32,13 @@ struct vio_dev vio_bus_device = { /* fake "parent" device */ | |||
| 32 | .dev.bus = &vio_bus_type, | 32 | .dev.bus = &vio_bus_type, |
| 33 | }; | 33 | }; |
| 34 | 34 | ||
| 35 | static int (*is_match)(const struct vio_device_id *id, | 35 | static struct vio_bus_ops vio_bus_ops; |
| 36 | const struct vio_dev *dev); | ||
| 37 | static void (*unregister_device_callback)(struct vio_dev *dev); | ||
| 38 | static void (*release_device_callback)(struct device *dev); | ||
| 39 | 36 | ||
| 40 | /* convert from struct device to struct vio_dev and pass to driver. | 37 | /* |
| 38 | * Convert from struct device to struct vio_dev and pass to driver. | ||
| 41 | * dev->driver has already been set by generic code because vio_bus_match | 39 | * dev->driver has already been set by generic code because vio_bus_match |
| 42 | * succeeded. */ | 40 | * succeeded. |
| 41 | */ | ||
| 43 | static int vio_bus_probe(struct device *dev) | 42 | static int vio_bus_probe(struct device *dev) |
| 44 | { | 43 | { |
| 45 | struct vio_dev *viodev = to_vio_dev(dev); | 44 | struct vio_dev *viodev = to_vio_dev(dev); |
| @@ -51,9 +50,8 @@ static int vio_bus_probe(struct device *dev) | |||
| 51 | return error; | 50 | return error; |
| 52 | 51 | ||
| 53 | id = vio_match_device(viodrv->id_table, viodev); | 52 | id = vio_match_device(viodrv->id_table, viodev); |
| 54 | if (id) { | 53 | if (id) |
| 55 | error = viodrv->probe(viodev, id); | 54 | error = viodrv->probe(viodev, id); |
| 56 | } | ||
| 57 | 55 | ||
| 58 | return error; | 56 | return error; |
| 59 | } | 57 | } |
| @@ -64,9 +62,8 @@ static int vio_bus_remove(struct device *dev) | |||
| 64 | struct vio_dev *viodev = to_vio_dev(dev); | 62 | struct vio_dev *viodev = to_vio_dev(dev); |
| 65 | struct vio_driver *viodrv = to_vio_driver(dev->driver); | 63 | struct vio_driver *viodrv = to_vio_driver(dev->driver); |
| 66 | 64 | ||
| 67 | if (viodrv->remove) { | 65 | if (viodrv->remove) |
| 68 | return viodrv->remove(viodev); | 66 | return viodrv->remove(viodev); |
| 69 | } | ||
| 70 | 67 | ||
| 71 | /* driver can't remove */ | 68 | /* driver can't remove */ |
| 72 | return 1; | 69 | return 1; |
| @@ -102,19 +99,20 @@ void vio_unregister_driver(struct vio_driver *viodrv) | |||
| 102 | EXPORT_SYMBOL(vio_unregister_driver); | 99 | EXPORT_SYMBOL(vio_unregister_driver); |
| 103 | 100 | ||
| 104 | /** | 101 | /** |
| 105 | * vio_match_device: - Tell if a VIO device has a matching VIO device id structure. | 102 | * vio_match_device: - Tell if a VIO device has a matching |
| 106 | * @ids: array of VIO device id structures to search in | 103 | * VIO device id structure. |
| 107 | * @dev: the VIO device structure to match against | 104 | * @ids: array of VIO device id structures to search in |
| 105 | * @dev: the VIO device structure to match against | ||
| 108 | * | 106 | * |
| 109 | * Used by a driver to check whether a VIO device present in the | 107 | * Used by a driver to check whether a VIO device present in the |
| 110 | * system is in its list of supported devices. Returns the matching | 108 | * system is in its list of supported devices. Returns the matching |
| 111 | * vio_device_id structure or NULL if there is no match. | 109 | * vio_device_id structure or NULL if there is no match. |
| 112 | */ | 110 | */ |
| 113 | static const struct vio_device_id * vio_match_device(const struct vio_device_id *ids, | 111 | static const struct vio_device_id *vio_match_device( |
| 114 | const struct vio_dev *dev) | 112 | const struct vio_device_id *ids, const struct vio_dev *dev) |
| 115 | { | 113 | { |
| 116 | while (ids->type) { | 114 | while (ids->type[0] != '\0') { |
| 117 | if (is_match(ids, dev)) | 115 | if (vio_bus_ops.match(ids, dev)) |
| 118 | return ids; | 116 | return ids; |
| 119 | ids++; | 117 | ids++; |
| 120 | } | 118 | } |
| @@ -124,16 +122,11 @@ static const struct vio_device_id * vio_match_device(const struct vio_device_id | |||
| 124 | /** | 122 | /** |
| 125 | * vio_bus_init: - Initialize the virtual IO bus | 123 | * vio_bus_init: - Initialize the virtual IO bus |
| 126 | */ | 124 | */ |
| 127 | int __init vio_bus_init(int (*match_func)(const struct vio_device_id *id, | 125 | int __init vio_bus_init(struct vio_bus_ops *ops) |
| 128 | const struct vio_dev *dev), | ||
| 129 | void (*unregister_dev)(struct vio_dev *), | ||
| 130 | void (*release_dev)(struct device *)) | ||
| 131 | { | 126 | { |
| 132 | int err; | 127 | int err; |
| 133 | 128 | ||
| 134 | is_match = match_func; | 129 | vio_bus_ops = *ops; |
| 135 | unregister_device_callback = unregister_dev; | ||
| 136 | release_device_callback = release_dev; | ||
| 137 | 130 | ||
| 138 | err = bus_register(&vio_bus_type); | 131 | err = bus_register(&vio_bus_type); |
| 139 | if (err) { | 132 | if (err) { |
| @@ -141,7 +134,8 @@ int __init vio_bus_init(int (*match_func)(const struct vio_device_id *id, | |||
| 141 | return err; | 134 | return err; |
| 142 | } | 135 | } |
| 143 | 136 | ||
| 144 | /* the fake parent of all vio devices, just to give us | 137 | /* |
| 138 | * The fake parent of all vio devices, just to give us | ||
| 145 | * a nice directory | 139 | * a nice directory |
| 146 | */ | 140 | */ |
| 147 | err = device_register(&vio_bus_device.dev); | 141 | err = device_register(&vio_bus_device.dev); |
| @@ -157,25 +151,20 @@ int __init vio_bus_init(int (*match_func)(const struct vio_device_id *id, | |||
| 157 | /* vio_dev refcount hit 0 */ | 151 | /* vio_dev refcount hit 0 */ |
| 158 | static void __devinit vio_dev_release(struct device *dev) | 152 | static void __devinit vio_dev_release(struct device *dev) |
| 159 | { | 153 | { |
| 160 | if (release_device_callback) | 154 | if (vio_bus_ops.release_device) |
| 161 | release_device_callback(dev); | 155 | vio_bus_ops.release_device(dev); |
| 162 | kfree(to_vio_dev(dev)); | 156 | kfree(to_vio_dev(dev)); |
| 163 | } | 157 | } |
| 164 | 158 | ||
| 165 | static ssize_t viodev_show_name(struct device *dev, struct device_attribute *attr, char *buf) | 159 | static ssize_t viodev_show_name(struct device *dev, |
| 160 | struct device_attribute *attr, char *buf) | ||
| 166 | { | 161 | { |
| 167 | return sprintf(buf, "%s\n", to_vio_dev(dev)->name); | 162 | return sprintf(buf, "%s\n", to_vio_dev(dev)->name); |
| 168 | } | 163 | } |
| 169 | DEVICE_ATTR(name, S_IRUSR | S_IRGRP | S_IROTH, viodev_show_name, NULL); | 164 | DEVICE_ATTR(name, S_IRUSR | S_IRGRP | S_IROTH, viodev_show_name, NULL); |
| 170 | 165 | ||
| 171 | struct vio_dev * __devinit vio_register_device_common( | 166 | struct vio_dev * __devinit vio_register_device(struct vio_dev *viodev) |
| 172 | struct vio_dev *viodev, char *name, char *type, | ||
| 173 | uint32_t unit_address, struct iommu_table *iommu_table) | ||
| 174 | { | 167 | { |
| 175 | viodev->name = name; | ||
| 176 | viodev->type = type; | ||
| 177 | viodev->unit_address = unit_address; | ||
| 178 | viodev->iommu_table = iommu_table; | ||
| 179 | /* init generic 'struct device' fields: */ | 168 | /* init generic 'struct device' fields: */ |
| 180 | viodev->dev.parent = &vio_bus_device.dev; | 169 | viodev->dev.parent = &vio_bus_device.dev; |
| 181 | viodev->dev.bus = &vio_bus_type; | 170 | viodev->dev.bus = &vio_bus_type; |
| @@ -194,8 +183,8 @@ struct vio_dev * __devinit vio_register_device_common( | |||
| 194 | 183 | ||
| 195 | void __devinit vio_unregister_device(struct vio_dev *viodev) | 184 | void __devinit vio_unregister_device(struct vio_dev *viodev) |
| 196 | { | 185 | { |
| 197 | if (unregister_device_callback) | 186 | if (vio_bus_ops.unregister_device) |
| 198 | unregister_device_callback(viodev); | 187 | vio_bus_ops.unregister_device(viodev); |
| 199 | device_remove_file(&viodev->dev, &dev_attr_name); | 188 | device_remove_file(&viodev->dev, &dev_attr_name); |
| 200 | device_unregister(&viodev->dev); | 189 | device_unregister(&viodev->dev); |
| 201 | } | 190 | } |
| @@ -262,16 +251,8 @@ static int vio_bus_match(struct device *dev, struct device_driver *drv) | |||
| 262 | const struct vio_dev *vio_dev = to_vio_dev(dev); | 251 | const struct vio_dev *vio_dev = to_vio_dev(dev); |
| 263 | struct vio_driver *vio_drv = to_vio_driver(drv); | 252 | struct vio_driver *vio_drv = to_vio_driver(drv); |
| 264 | const struct vio_device_id *ids = vio_drv->id_table; | 253 | const struct vio_device_id *ids = vio_drv->id_table; |
| 265 | const struct vio_device_id *found_id; | ||
| 266 | |||
| 267 | if (!ids) | ||
| 268 | return 0; | ||
| 269 | 254 | ||
| 270 | found_id = vio_match_device(ids, vio_dev); | 255 | return (ids != NULL) && (vio_match_device(ids, vio_dev) != NULL); |
| 271 | if (found_id) | ||
| 272 | return 1; | ||
| 273 | |||
| 274 | return 0; | ||
| 275 | } | 256 | } |
| 276 | 257 | ||
| 277 | struct bus_type vio_bus_type = { | 258 | struct bus_type vio_bus_type = { |
diff --git a/arch/ppc64/mm/hash_low.S b/arch/ppc64/mm/hash_low.S index fbff24827ae7..35eb49e1b890 100644 --- a/arch/ppc64/mm/hash_low.S +++ b/arch/ppc64/mm/hash_low.S | |||
| @@ -129,12 +129,10 @@ _GLOBAL(__hash_page) | |||
| 129 | * code rather than call a C function...) | 129 | * code rather than call a C function...) |
| 130 | */ | 130 | */ |
| 131 | BEGIN_FTR_SECTION | 131 | BEGIN_FTR_SECTION |
| 132 | BEGIN_FTR_SECTION | ||
| 133 | mr r4,r30 | 132 | mr r4,r30 |
| 134 | mr r5,r7 | 133 | mr r5,r7 |
| 135 | bl .hash_page_do_lazy_icache | 134 | bl .hash_page_do_lazy_icache |
| 136 | END_FTR_SECTION_IFSET(CPU_FTR_NOEXECUTE) | 135 | END_FTR_SECTION(CPU_FTR_NOEXECUTE|CPU_FTR_COHERENT_ICACHE, CPU_FTR_NOEXECUTE) |
| 137 | END_FTR_SECTION_IFCLR(CPU_FTR_COHERENT_ICACHE) | ||
| 138 | 136 | ||
| 139 | /* At this point, r3 contains new PP bits, save them in | 137 | /* At this point, r3 contains new PP bits, save them in |
| 140 | * place of "access" in the param area (sic) | 138 | * place of "access" in the param area (sic) |
diff --git a/arch/ppc64/oprofile/common.c b/arch/ppc64/oprofile/common.c index b28bfda23d94..4acd1a424933 100644 --- a/arch/ppc64/oprofile/common.c +++ b/arch/ppc64/oprofile/common.c | |||
| @@ -153,6 +153,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) | |||
| 153 | 153 | ||
| 154 | case PV_970: | 154 | case PV_970: |
| 155 | case PV_970FX: | 155 | case PV_970FX: |
| 156 | case PV_970MP: | ||
| 156 | model = &op_model_power4; | 157 | model = &op_model_power4; |
| 157 | model->num_counters = 8; | 158 | model->num_counters = 8; |
| 158 | ops->cpu_type = "ppc64/970"; | 159 | ops->cpu_type = "ppc64/970"; |
diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c index 46e56a25d2c8..e46ecd23b3ac 100644 --- a/drivers/block/viodasd.c +++ b/drivers/block/viodasd.c | |||
| @@ -776,7 +776,7 @@ static int viodasd_remove(struct vio_dev *vdev) | |||
| 776 | */ | 776 | */ |
| 777 | static struct vio_device_id viodasd_device_table[] __devinitdata = { | 777 | static struct vio_device_id viodasd_device_table[] __devinitdata = { |
| 778 | { "viodasd", "" }, | 778 | { "viodasd", "" }, |
| 779 | { 0, } | 779 | { "", "" } |
| 780 | }; | 780 | }; |
| 781 | 781 | ||
| 782 | MODULE_DEVICE_TABLE(vio, viodasd_device_table); | 782 | MODULE_DEVICE_TABLE(vio, viodasd_device_table); |
diff --git a/drivers/cdrom/viocd.c b/drivers/cdrom/viocd.c index 38dd9ffbe8bc..0829db58462f 100644 --- a/drivers/cdrom/viocd.c +++ b/drivers/cdrom/viocd.c | |||
| @@ -734,7 +734,7 @@ static int viocd_remove(struct vio_dev *vdev) | |||
| 734 | */ | 734 | */ |
| 735 | static struct vio_device_id viocd_device_table[] __devinitdata = { | 735 | static struct vio_device_id viocd_device_table[] __devinitdata = { |
| 736 | { "viocd", "" }, | 736 | { "viocd", "" }, |
| 737 | { 0, } | 737 | { "", "" } |
| 738 | }; | 738 | }; |
| 739 | 739 | ||
| 740 | MODULE_DEVICE_TABLE(vio, viocd_device_table); | 740 | MODULE_DEVICE_TABLE(vio, viocd_device_table); |
diff --git a/drivers/char/hvc_vio.c b/drivers/char/hvc_vio.c index 60bb9152b832..78d681dc35a8 100644 --- a/drivers/char/hvc_vio.c +++ b/drivers/char/hvc_vio.c | |||
| @@ -39,7 +39,7 @@ char hvc_driver_name[] = "hvc_console"; | |||
| 39 | 39 | ||
| 40 | static struct vio_device_id hvc_driver_table[] __devinitdata = { | 40 | static struct vio_device_id hvc_driver_table[] __devinitdata = { |
| 41 | {"serial", "hvterm1"}, | 41 | {"serial", "hvterm1"}, |
| 42 | { NULL, } | 42 | { "", "" } |
| 43 | }; | 43 | }; |
| 44 | MODULE_DEVICE_TABLE(vio, hvc_driver_table); | 44 | MODULE_DEVICE_TABLE(vio, hvc_driver_table); |
| 45 | 45 | ||
diff --git a/drivers/char/hvcs.c b/drivers/char/hvcs.c index 3236d2404905..f47f009f9259 100644 --- a/drivers/char/hvcs.c +++ b/drivers/char/hvcs.c | |||
| @@ -527,7 +527,7 @@ static int khvcsd(void *unused) | |||
| 527 | 527 | ||
| 528 | static struct vio_device_id hvcs_driver_table[] __devinitdata= { | 528 | static struct vio_device_id hvcs_driver_table[] __devinitdata= { |
| 529 | {"serial-server", "hvterm2"}, | 529 | {"serial-server", "hvterm2"}, |
| 530 | { NULL, } | 530 | { "", "" } |
| 531 | }; | 531 | }; |
| 532 | MODULE_DEVICE_TABLE(vio, hvcs_driver_table); | 532 | MODULE_DEVICE_TABLE(vio, hvcs_driver_table); |
| 533 | 533 | ||
diff --git a/drivers/char/viotape.c b/drivers/char/viotape.c index 4764b4f9555d..0aff45fac2e6 100644 --- a/drivers/char/viotape.c +++ b/drivers/char/viotape.c | |||
| @@ -991,7 +991,7 @@ static int viotape_remove(struct vio_dev *vdev) | |||
| 991 | */ | 991 | */ |
| 992 | static struct vio_device_id viotape_device_table[] __devinitdata = { | 992 | static struct vio_device_id viotape_device_table[] __devinitdata = { |
| 993 | { "viotape", "" }, | 993 | { "viotape", "" }, |
| 994 | { 0, } | 994 | { "", "" } |
| 995 | }; | 995 | }; |
| 996 | 996 | ||
| 997 | MODULE_DEVICE_TABLE(vio, viotape_device_table); | 997 | MODULE_DEVICE_TABLE(vio, viotape_device_table); |
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c index c39b0609742a..32d5fabd4b10 100644 --- a/drivers/net/ibmveth.c +++ b/drivers/net/ibmveth.c | |||
| @@ -1144,7 +1144,7 @@ static void ibmveth_proc_unregister_driver(void) | |||
| 1144 | 1144 | ||
| 1145 | static struct vio_device_id ibmveth_device_table[] __devinitdata= { | 1145 | static struct vio_device_id ibmveth_device_table[] __devinitdata= { |
| 1146 | { "network", "IBM,l-lan"}, | 1146 | { "network", "IBM,l-lan"}, |
| 1147 | { 0,} | 1147 | { "", "" } |
| 1148 | }; | 1148 | }; |
| 1149 | 1149 | ||
| 1150 | MODULE_DEVICE_TABLE(vio, ibmveth_device_table); | 1150 | MODULE_DEVICE_TABLE(vio, ibmveth_device_table); |
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c index 55af32e9bf08..183ba97785b0 100644 --- a/drivers/net/iseries_veth.c +++ b/drivers/net/iseries_veth.c | |||
| @@ -1370,7 +1370,7 @@ static int veth_probe(struct vio_dev *vdev, const struct vio_device_id *id) | |||
| 1370 | */ | 1370 | */ |
| 1371 | static struct vio_device_id veth_device_table[] __devinitdata = { | 1371 | static struct vio_device_id veth_device_table[] __devinitdata = { |
| 1372 | { "vlan", "" }, | 1372 | { "vlan", "" }, |
| 1373 | { NULL, NULL } | 1373 | { "", "" } |
| 1374 | }; | 1374 | }; |
| 1375 | MODULE_DEVICE_TABLE(vio, veth_device_table); | 1375 | MODULE_DEVICE_TABLE(vio, veth_device_table); |
| 1376 | 1376 | ||
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c index fe09d145542a..2cb3c8340ca8 100644 --- a/drivers/scsi/ibmvscsi/ibmvscsi.c +++ b/drivers/scsi/ibmvscsi/ibmvscsi.c | |||
| @@ -1442,7 +1442,7 @@ static int ibmvscsi_remove(struct vio_dev *vdev) | |||
| 1442 | */ | 1442 | */ |
| 1443 | static struct vio_device_id ibmvscsi_device_table[] __devinitdata = { | 1443 | static struct vio_device_id ibmvscsi_device_table[] __devinitdata = { |
| 1444 | {"vscsi", "IBM,v-scsi"}, | 1444 | {"vscsi", "IBM,v-scsi"}, |
| 1445 | {0,} | 1445 | { "", "" } |
| 1446 | }; | 1446 | }; |
| 1447 | 1447 | ||
| 1448 | MODULE_DEVICE_TABLE(vio, ibmvscsi_device_table); | 1448 | MODULE_DEVICE_TABLE(vio, ibmvscsi_device_table); |
diff --git a/drivers/scsi/ibmvscsi/rpa_vscsi.c b/drivers/scsi/ibmvscsi/rpa_vscsi.c index 035f615817d7..8bf5652f1060 100644 --- a/drivers/scsi/ibmvscsi/rpa_vscsi.c +++ b/drivers/scsi/ibmvscsi/rpa_vscsi.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | */ | 28 | */ |
| 29 | 29 | ||
| 30 | #include <asm/vio.h> | 30 | #include <asm/vio.h> |
| 31 | #include <asm/prom.h> | ||
| 31 | #include <asm/iommu.h> | 32 | #include <asm/iommu.h> |
| 32 | #include <asm/hvcall.h> | 33 | #include <asm/hvcall.h> |
| 33 | #include <linux/dma-mapping.h> | 34 | #include <linux/dma-mapping.h> |
diff --git a/include/asm-ppc/8253pit.h b/include/asm-powerpc/8253pit.h index 285f78488ccb..862708a749b0 100644 --- a/include/asm-ppc/8253pit.h +++ b/include/asm-powerpc/8253pit.h | |||
| @@ -5,6 +5,6 @@ | |||
| 5 | #ifndef _8253PIT_H | 5 | #ifndef _8253PIT_H |
| 6 | #define _8253PIT_H | 6 | #define _8253PIT_H |
| 7 | 7 | ||
| 8 | #define PIT_TICK_RATE 1193182UL | 8 | #define PIT_TICK_RATE 1193182UL |
| 9 | 9 | ||
| 10 | #endif | 10 | #endif |
diff --git a/include/asm-ppc/agp.h b/include/asm-powerpc/agp.h index ca9e423307f4..ca9e423307f4 100644 --- a/include/asm-ppc/agp.h +++ b/include/asm-powerpc/agp.h | |||
diff --git a/include/asm-powerpc/cputime.h b/include/asm-powerpc/cputime.h new file mode 100644 index 000000000000..6d68ad7e0ea3 --- /dev/null +++ b/include/asm-powerpc/cputime.h | |||
| @@ -0,0 +1 @@ | |||
| #include <asm-generic/cputime.h> | |||
diff --git a/include/asm-ppc/div64.h b/include/asm-powerpc/div64.h index 6cd978cefb28..6cd978cefb28 100644 --- a/include/asm-ppc/div64.h +++ b/include/asm-powerpc/div64.h | |||
diff --git a/include/asm-powerpc/emergency-restart.h b/include/asm-powerpc/emergency-restart.h new file mode 100644 index 000000000000..3711bd9d50bd --- /dev/null +++ b/include/asm-powerpc/emergency-restart.h | |||
| @@ -0,0 +1 @@ | |||
| #include <asm-generic/emergency-restart.h> | |||
diff --git a/include/asm-ppc/errno.h b/include/asm-powerpc/errno.h index 19f20bd41ae6..19f20bd41ae6 100644 --- a/include/asm-ppc/errno.h +++ b/include/asm-powerpc/errno.h | |||
diff --git a/include/asm-ppc/ioctl.h b/include/asm-powerpc/ioctl.h index 93c6acfdd0fd..93c6acfdd0fd 100644 --- a/include/asm-ppc/ioctl.h +++ b/include/asm-powerpc/ioctl.h | |||
diff --git a/include/asm-ppc/ioctls.h b/include/asm-powerpc/ioctls.h index f5b7f2b055e7..f5b7f2b055e7 100644 --- a/include/asm-ppc/ioctls.h +++ b/include/asm-powerpc/ioctls.h | |||
diff --git a/include/asm-ppc/ipc.h b/include/asm-powerpc/ipc.h index a46e3d9c2a3f..a46e3d9c2a3f 100644 --- a/include/asm-ppc/ipc.h +++ b/include/asm-powerpc/ipc.h | |||
diff --git a/include/asm-ppc/linkage.h b/include/asm-powerpc/linkage.h index 291c2d01c44f..291c2d01c44f 100644 --- a/include/asm-ppc/linkage.h +++ b/include/asm-powerpc/linkage.h | |||
diff --git a/include/asm-ppc64/local.h b/include/asm-powerpc/local.h index c11c530f74d0..c11c530f74d0 100644 --- a/include/asm-ppc64/local.h +++ b/include/asm-powerpc/local.h | |||
diff --git a/include/asm-ppc/namei.h b/include/asm-powerpc/namei.h index 29c9ec832133..29c9ec832133 100644 --- a/include/asm-ppc/namei.h +++ b/include/asm-powerpc/namei.h | |||
diff --git a/include/asm-powerpc/percpu.h b/include/asm-powerpc/percpu.h new file mode 100644 index 000000000000..06a959d67234 --- /dev/null +++ b/include/asm-powerpc/percpu.h | |||
| @@ -0,0 +1 @@ | |||
| #include <asm-generic/percpu.h> | |||
diff --git a/include/asm-ppc/poll.h b/include/asm-powerpc/poll.h index be5024913c62..be5024913c62 100644 --- a/include/asm-ppc/poll.h +++ b/include/asm-powerpc/poll.h | |||
diff --git a/include/asm-powerpc/resource.h b/include/asm-powerpc/resource.h new file mode 100644 index 000000000000..04bc4db8921b --- /dev/null +++ b/include/asm-powerpc/resource.h | |||
| @@ -0,0 +1 @@ | |||
| #include <asm-generic/resource.h> | |||
diff --git a/include/asm-ppc/shmparam.h b/include/asm-powerpc/shmparam.h index d6250602ae64..d6250602ae64 100644 --- a/include/asm-ppc/shmparam.h +++ b/include/asm-powerpc/shmparam.h | |||
diff --git a/include/asm-ppc/string.h b/include/asm-powerpc/string.h index 225575997392..225575997392 100644 --- a/include/asm-ppc/string.h +++ b/include/asm-powerpc/string.h | |||
diff --git a/include/asm-ppc/unaligned.h b/include/asm-powerpc/unaligned.h index 45520d9b85d1..45520d9b85d1 100644 --- a/include/asm-ppc/unaligned.h +++ b/include/asm-powerpc/unaligned.h | |||
diff --git a/include/asm-ppc/xor.h b/include/asm-powerpc/xor.h index c82eb12a5b18..c82eb12a5b18 100644 --- a/include/asm-ppc/xor.h +++ b/include/asm-powerpc/xor.h | |||
diff --git a/include/asm-ppc/cputime.h b/include/asm-ppc/cputime.h deleted file mode 100644 index 8e9faf5ce720..000000000000 --- a/include/asm-ppc/cputime.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef __PPC_CPUTIME_H | ||
| 2 | #define __PPC_CPUTIME_H | ||
| 3 | |||
| 4 | #include <asm-generic/cputime.h> | ||
| 5 | |||
| 6 | #endif /* __PPC_CPUTIME_H */ | ||
diff --git a/include/asm-ppc/emergency-restart.h b/include/asm-ppc/emergency-restart.h deleted file mode 100644 index 108d8c48e42e..000000000000 --- a/include/asm-ppc/emergency-restart.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef _ASM_EMERGENCY_RESTART_H | ||
| 2 | #define _ASM_EMERGENCY_RESTART_H | ||
| 3 | |||
| 4 | #include <asm-generic/emergency-restart.h> | ||
| 5 | |||
| 6 | #endif /* _ASM_EMERGENCY_RESTART_H */ | ||
diff --git a/include/asm-ppc/hdreg.h b/include/asm-ppc/hdreg.h deleted file mode 100644 index 7f7fd1af0af3..000000000000 --- a/include/asm-ppc/hdreg.h +++ /dev/null | |||
| @@ -1 +0,0 @@ | |||
| 1 | #include <asm-generic/hdreg.h> | ||
diff --git a/include/asm-ppc/local.h b/include/asm-ppc/local.h deleted file mode 100644 index b08e3eced10e..000000000000 --- a/include/asm-ppc/local.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef __PPC_LOCAL_H | ||
| 2 | #define __PPC_LOCAL_H | ||
| 3 | |||
| 4 | #include <asm-generic/local.h> | ||
| 5 | |||
| 6 | #endif /* __PPC_LOCAL_H */ | ||
diff --git a/include/asm-ppc/percpu.h b/include/asm-ppc/percpu.h deleted file mode 100644 index d66667cd5878..000000000000 --- a/include/asm-ppc/percpu.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef __ARCH_PPC_PERCPU__ | ||
| 2 | #define __ARCH_PPC_PERCPU__ | ||
| 3 | |||
| 4 | #include <asm-generic/percpu.h> | ||
| 5 | |||
| 6 | #endif /* __ARCH_PPC_PERCPU__ */ | ||
diff --git a/include/asm-ppc/resource.h b/include/asm-ppc/resource.h deleted file mode 100644 index 86a1ea23a6ed..000000000000 --- a/include/asm-ppc/resource.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef _PPC_RESOURCE_H | ||
| 2 | #define _PPC_RESOURCE_H | ||
| 3 | |||
| 4 | #include <asm-generic/resource.h> | ||
| 5 | |||
| 6 | #endif | ||
diff --git a/include/asm-ppc64/8253pit.h b/include/asm-ppc64/8253pit.h deleted file mode 100644 index 285f78488ccb..000000000000 --- a/include/asm-ppc64/8253pit.h +++ /dev/null | |||
| @@ -1,10 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * 8253/8254 Programmable Interval Timer | ||
| 3 | */ | ||
| 4 | |||
| 5 | #ifndef _8253PIT_H | ||
| 6 | #define _8253PIT_H | ||
| 7 | |||
| 8 | #define PIT_TICK_RATE 1193182UL | ||
| 9 | |||
| 10 | #endif | ||
diff --git a/include/asm-ppc64/agp.h b/include/asm-ppc64/agp.h deleted file mode 100644 index ca9e423307f4..000000000000 --- a/include/asm-ppc64/agp.h +++ /dev/null | |||
| @@ -1,23 +0,0 @@ | |||
| 1 | #ifndef AGP_H | ||
| 2 | #define AGP_H 1 | ||
| 3 | |||
| 4 | #include <asm/io.h> | ||
| 5 | |||
| 6 | /* nothing much needed here */ | ||
| 7 | |||
| 8 | #define map_page_into_agp(page) | ||
| 9 | #define unmap_page_from_agp(page) | ||
| 10 | #define flush_agp_mappings() | ||
| 11 | #define flush_agp_cache() mb() | ||
| 12 | |||
| 13 | /* Convert a physical address to an address suitable for the GART. */ | ||
| 14 | #define phys_to_gart(x) (x) | ||
| 15 | #define gart_to_phys(x) (x) | ||
| 16 | |||
| 17 | /* GATT allocation. Returns/accepts GATT kernel virtual address. */ | ||
| 18 | #define alloc_gatt_pages(order) \ | ||
| 19 | ((char *)__get_free_pages(GFP_KERNEL, (order))) | ||
| 20 | #define free_gatt_pages(table, order) \ | ||
| 21 | free_pages((unsigned long)(table), (order)) | ||
| 22 | |||
| 23 | #endif | ||
diff --git a/include/asm-ppc64/cputime.h b/include/asm-ppc64/cputime.h deleted file mode 100644 index 8e9faf5ce720..000000000000 --- a/include/asm-ppc64/cputime.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef __PPC_CPUTIME_H | ||
| 2 | #define __PPC_CPUTIME_H | ||
| 3 | |||
| 4 | #include <asm-generic/cputime.h> | ||
| 5 | |||
| 6 | #endif /* __PPC_CPUTIME_H */ | ||
diff --git a/include/asm-ppc64/div64.h b/include/asm-ppc64/div64.h deleted file mode 100644 index 6cd978cefb28..000000000000 --- a/include/asm-ppc64/div64.h +++ /dev/null | |||
| @@ -1 +0,0 @@ | |||
| 1 | #include <asm-generic/div64.h> | ||
diff --git a/include/asm-ppc64/emergency-restart.h b/include/asm-ppc64/emergency-restart.h deleted file mode 100644 index 108d8c48e42e..000000000000 --- a/include/asm-ppc64/emergency-restart.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef _ASM_EMERGENCY_RESTART_H | ||
| 2 | #define _ASM_EMERGENCY_RESTART_H | ||
| 3 | |||
| 4 | #include <asm-generic/emergency-restart.h> | ||
| 5 | |||
| 6 | #endif /* _ASM_EMERGENCY_RESTART_H */ | ||
diff --git a/include/asm-ppc64/errno.h b/include/asm-ppc64/errno.h deleted file mode 100644 index 69bc3b0c6cbe..000000000000 --- a/include/asm-ppc64/errno.h +++ /dev/null | |||
| @@ -1,18 +0,0 @@ | |||
| 1 | #ifndef _PPC64_ERRNO_H | ||
| 2 | #define _PPC64_ERRNO_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * This program is free software; you can redistribute it and/or | ||
| 6 | * modify it under the terms of the GNU General Public License | ||
| 7 | * as published by the Free Software Foundation; either version | ||
| 8 | * 2 of the License, or (at your option) any later version. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <asm-generic/errno.h> | ||
| 12 | |||
| 13 | #undef EDEADLOCK | ||
| 14 | #define EDEADLOCK 58 /* File locking deadlock error */ | ||
| 15 | |||
| 16 | #define _LAST_ERRNO 516 | ||
| 17 | |||
| 18 | #endif | ||
diff --git a/include/asm-ppc64/hdreg.h b/include/asm-ppc64/hdreg.h deleted file mode 100644 index 7f7fd1af0af3..000000000000 --- a/include/asm-ppc64/hdreg.h +++ /dev/null | |||
| @@ -1 +0,0 @@ | |||
| 1 | #include <asm-generic/hdreg.h> | ||
diff --git a/include/asm-ppc64/ioctl.h b/include/asm-ppc64/ioctl.h deleted file mode 100644 index 42b8c5da7fbc..000000000000 --- a/include/asm-ppc64/ioctl.h +++ /dev/null | |||
| @@ -1,74 +0,0 @@ | |||
| 1 | #ifndef _PPC64_IOCTL_H | ||
| 2 | #define _PPC64_IOCTL_H | ||
| 3 | |||
| 4 | |||
| 5 | /* | ||
| 6 | * This was copied from the alpha as it's a bit cleaner there. | ||
| 7 | * -- Cort | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or | ||
| 10 | * modify it under the terms of the GNU General Public License | ||
| 11 | * as published by the Free Software Foundation; either version | ||
| 12 | * 2 of the License, or (at your option) any later version. | ||
| 13 | */ | ||
| 14 | |||
| 15 | #define _IOC_NRBITS 8 | ||
| 16 | #define _IOC_TYPEBITS 8 | ||
| 17 | #define _IOC_SIZEBITS 13 | ||
| 18 | #define _IOC_DIRBITS 3 | ||
| 19 | |||
| 20 | #define _IOC_NRMASK ((1 << _IOC_NRBITS)-1) | ||
| 21 | #define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1) | ||
| 22 | #define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1) | ||
| 23 | #define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1) | ||
| 24 | |||
| 25 | #define _IOC_NRSHIFT 0 | ||
| 26 | #define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS) | ||
| 27 | #define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS) | ||
| 28 | #define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS) | ||
| 29 | |||
| 30 | /* | ||
| 31 | * Direction bits _IOC_NONE could be 0, but OSF/1 gives it a bit. | ||
| 32 | * And this turns out useful to catch old ioctl numbers in header | ||
| 33 | * files for us. | ||
| 34 | */ | ||
| 35 | #define _IOC_NONE 1U | ||
| 36 | #define _IOC_READ 2U | ||
| 37 | #define _IOC_WRITE 4U | ||
| 38 | |||
| 39 | #define _IOC(dir,type,nr,size) \ | ||
| 40 | (((dir) << _IOC_DIRSHIFT) | \ | ||
| 41 | ((type) << _IOC_TYPESHIFT) | \ | ||
| 42 | ((nr) << _IOC_NRSHIFT) | \ | ||
| 43 | ((size) << _IOC_SIZESHIFT)) | ||
| 44 | |||
| 45 | /* provoke compile error for invalid uses of size argument */ | ||
| 46 | extern unsigned int __invalid_size_argument_for_IOC; | ||
| 47 | #define _IOC_TYPECHECK(t) \ | ||
| 48 | ((sizeof(t) == sizeof(t[1]) && \ | ||
| 49 | sizeof(t) < (1 << _IOC_SIZEBITS)) ? \ | ||
| 50 | sizeof(t) : __invalid_size_argument_for_IOC) | ||
| 51 | |||
| 52 | /* used to create numbers */ | ||
| 53 | #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) | ||
| 54 | #define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size))) | ||
| 55 | #define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) | ||
| 56 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) | ||
| 57 | #define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) | ||
| 58 | #define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) | ||
| 59 | #define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) | ||
| 60 | |||
| 61 | /* used to decode them.. */ | ||
| 62 | #define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) | ||
| 63 | #define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK) | ||
| 64 | #define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK) | ||
| 65 | #define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK) | ||
| 66 | |||
| 67 | /* various drivers, such as the pcmcia stuff, need these... */ | ||
| 68 | #define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT) | ||
| 69 | #define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT) | ||
| 70 | #define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT) | ||
| 71 | #define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT) | ||
| 72 | #define IOCSIZE_SHIFT (_IOC_SIZESHIFT) | ||
| 73 | |||
| 74 | #endif /* _PPC64_IOCTL_H */ | ||
diff --git a/include/asm-ppc64/ioctls.h b/include/asm-ppc64/ioctls.h deleted file mode 100644 index 48796bf3e4fc..000000000000 --- a/include/asm-ppc64/ioctls.h +++ /dev/null | |||
| @@ -1,114 +0,0 @@ | |||
| 1 | #ifndef _ASM_PPC64_IOCTLS_H | ||
| 2 | #define _ASM_PPC64_IOCTLS_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * This program is free software; you can redistribute it and/or | ||
| 6 | * modify it under the terms of the GNU General Public License | ||
| 7 | * as published by the Free Software Foundation; either version | ||
| 8 | * 2 of the License, or (at your option) any later version. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <asm/ioctl.h> | ||
| 12 | |||
| 13 | #define FIOCLEX _IO('f', 1) | ||
| 14 | #define FIONCLEX _IO('f', 2) | ||
| 15 | #define FIOASYNC _IOW('f', 125, int) | ||
| 16 | #define FIONBIO _IOW('f', 126, int) | ||
| 17 | #define FIONREAD _IOR('f', 127, int) | ||
| 18 | #define TIOCINQ FIONREAD | ||
| 19 | #define FIOQSIZE _IOR('f', 128, loff_t) | ||
| 20 | |||
| 21 | #define TIOCGETP _IOR('t', 8, struct sgttyb) | ||
| 22 | #define TIOCSETP _IOW('t', 9, struct sgttyb) | ||
| 23 | #define TIOCSETN _IOW('t', 10, struct sgttyb) /* TIOCSETP wo flush */ | ||
| 24 | |||
| 25 | #define TIOCSETC _IOW('t', 17, struct tchars) | ||
| 26 | #define TIOCGETC _IOR('t', 18, struct tchars) | ||
| 27 | #define TCGETS _IOR('t', 19, struct termios) | ||
| 28 | #define TCSETS _IOW('t', 20, struct termios) | ||
| 29 | #define TCSETSW _IOW('t', 21, struct termios) | ||
| 30 | #define TCSETSF _IOW('t', 22, struct termios) | ||
| 31 | |||
| 32 | #define TCGETA _IOR('t', 23, struct termio) | ||
| 33 | #define TCSETA _IOW('t', 24, struct termio) | ||
| 34 | #define TCSETAW _IOW('t', 25, struct termio) | ||
| 35 | #define TCSETAF _IOW('t', 28, struct termio) | ||
| 36 | |||
| 37 | #define TCSBRK _IO('t', 29) | ||
| 38 | #define TCXONC _IO('t', 30) | ||
| 39 | #define TCFLSH _IO('t', 31) | ||
| 40 | |||
| 41 | #define TIOCSWINSZ _IOW('t', 103, struct winsize) | ||
| 42 | #define TIOCGWINSZ _IOR('t', 104, struct winsize) | ||
| 43 | #define TIOCSTART _IO('t', 110) /* start output, like ^Q */ | ||
| 44 | #define TIOCSTOP _IO('t', 111) /* stop output, like ^S */ | ||
| 45 | #define TIOCOUTQ _IOR('t', 115, int) /* output queue size */ | ||
| 46 | |||
| 47 | #define TIOCGLTC _IOR('t', 116, struct ltchars) | ||
| 48 | #define TIOCSLTC _IOW('t', 117, struct ltchars) | ||
| 49 | #define TIOCSPGRP _IOW('t', 118, int) | ||
| 50 | #define TIOCGPGRP _IOR('t', 119, int) | ||
| 51 | |||
| 52 | #define TIOCEXCL 0x540C | ||
| 53 | #define TIOCNXCL 0x540D | ||
| 54 | #define TIOCSCTTY 0x540E | ||
| 55 | |||
| 56 | #define TIOCSTI 0x5412 | ||
| 57 | #define TIOCMGET 0x5415 | ||
| 58 | #define TIOCMBIS 0x5416 | ||
| 59 | #define TIOCMBIC 0x5417 | ||
| 60 | #define TIOCMSET 0x5418 | ||
| 61 | # define TIOCM_LE 0x001 | ||
| 62 | # define TIOCM_DTR 0x002 | ||
| 63 | # define TIOCM_RTS 0x004 | ||
| 64 | # define TIOCM_ST 0x008 | ||
| 65 | # define TIOCM_SR 0x010 | ||
| 66 | # define TIOCM_CTS 0x020 | ||
| 67 | # define TIOCM_CAR 0x040 | ||
| 68 | # define TIOCM_RNG 0x080 | ||
| 69 | # define TIOCM_DSR 0x100 | ||
| 70 | # define TIOCM_CD TIOCM_CAR | ||
| 71 | # define TIOCM_RI TIOCM_RNG | ||
| 72 | |||
| 73 | #define TIOCGSOFTCAR 0x5419 | ||
| 74 | #define TIOCSSOFTCAR 0x541A | ||
| 75 | #define TIOCLINUX 0x541C | ||
| 76 | #define TIOCCONS 0x541D | ||
| 77 | #define TIOCGSERIAL 0x541E | ||
| 78 | #define TIOCSSERIAL 0x541F | ||
| 79 | #define TIOCPKT 0x5420 | ||
| 80 | # define TIOCPKT_DATA 0 | ||
| 81 | # define TIOCPKT_FLUSHREAD 1 | ||
| 82 | # define TIOCPKT_FLUSHWRITE 2 | ||
| 83 | # define TIOCPKT_STOP 4 | ||
| 84 | # define TIOCPKT_START 8 | ||
| 85 | # define TIOCPKT_NOSTOP 16 | ||
| 86 | # define TIOCPKT_DOSTOP 32 | ||
| 87 | |||
| 88 | |||
| 89 | #define TIOCNOTTY 0x5422 | ||
| 90 | #define TIOCSETD 0x5423 | ||
| 91 | #define TIOCGETD 0x5424 | ||
| 92 | #define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ | ||
| 93 | #define TIOCSBRK 0x5427 /* BSD compatibility */ | ||
| 94 | #define TIOCCBRK 0x5428 /* BSD compatibility */ | ||
| 95 | #define TIOCGSID 0x5429 /* Return the session ID of FD */ | ||
| 96 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | ||
| 97 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | ||
| 98 | |||
| 99 | #define TIOCSERCONFIG 0x5453 | ||
| 100 | #define TIOCSERGWILD 0x5454 | ||
| 101 | #define TIOCSERSWILD 0x5455 | ||
| 102 | #define TIOCGLCKTRMIOS 0x5456 | ||
| 103 | #define TIOCSLCKTRMIOS 0x5457 | ||
| 104 | #define TIOCSERGSTRUCT 0x5458 /* For debugging only */ | ||
| 105 | #define TIOCSERGETLSR 0x5459 /* Get line status register */ | ||
| 106 | /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ | ||
| 107 | # define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | ||
| 108 | #define TIOCSERGETMULTI 0x545A /* Get multiport config */ | ||
| 109 | #define TIOCSERSETMULTI 0x545B /* Set multiport config */ | ||
| 110 | |||
| 111 | #define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */ | ||
| 112 | #define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ | ||
| 113 | |||
| 114 | #endif /* _ASM_PPC64_IOCTLS_H */ | ||
diff --git a/include/asm-ppc64/ipc.h b/include/asm-ppc64/ipc.h deleted file mode 100644 index a46e3d9c2a3f..000000000000 --- a/include/asm-ppc64/ipc.h +++ /dev/null | |||
| @@ -1 +0,0 @@ | |||
| 1 | #include <asm-generic/ipc.h> | ||
diff --git a/include/asm-ppc64/linkage.h b/include/asm-ppc64/linkage.h deleted file mode 100644 index 291c2d01c44f..000000000000 --- a/include/asm-ppc64/linkage.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef __ASM_LINKAGE_H | ||
| 2 | #define __ASM_LINKAGE_H | ||
| 3 | |||
| 4 | /* Nothing to see here... */ | ||
| 5 | |||
| 6 | #endif | ||
diff --git a/include/asm-ppc64/namei.h b/include/asm-ppc64/namei.h deleted file mode 100644 index a1412a2d102a..000000000000 --- a/include/asm-ppc64/namei.h +++ /dev/null | |||
| @@ -1,23 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-ppc/namei.h | ||
| 3 | * Adapted from linux/include/asm-alpha/namei.h | ||
| 4 | * | ||
| 5 | * Included from linux/fs/namei.c | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or | ||
| 8 | * modify it under the terms of the GNU General Public License | ||
| 9 | * as published by the Free Software Foundation; either version | ||
| 10 | * 2 of the License, or (at your option) any later version. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __PPC64_NAMEI_H | ||
| 14 | #define __PPC64_NAMEI_H | ||
| 15 | |||
| 16 | /* This dummy routine maybe changed to something useful | ||
| 17 | * for /usr/gnemul/ emulation stuff. | ||
| 18 | * Look at asm-sparc/namei.h for details. | ||
| 19 | */ | ||
| 20 | |||
| 21 | #define __emul_prefix() NULL | ||
| 22 | |||
| 23 | #endif /* __PPC64_NAMEI_H */ | ||
diff --git a/include/asm-ppc64/param.h b/include/asm-ppc64/param.h index 1fad38dcf707..76c212d475b3 100644 --- a/include/asm-ppc64/param.h +++ b/include/asm-ppc64/param.h | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #ifndef _ASM_PPC64_PARAM_H | 1 | #ifndef _ASM_PPC64_PARAM_H |
| 2 | #define _ASM_PPC64_PARAM_H | 2 | #define _ASM_PPC64_PARAM_H |
| 3 | 3 | ||
| 4 | #include <linux/config.h> | ||
| 5 | |||
| 4 | /* | 6 | /* |
| 5 | * This program is free software; you can redistribute it and/or | 7 | * This program is free software; you can redistribute it and/or |
| 6 | * modify it under the terms of the GNU General Public License | 8 | * modify it under the terms of the GNU General Public License |
| @@ -9,7 +11,7 @@ | |||
| 9 | */ | 11 | */ |
| 10 | 12 | ||
| 11 | #ifdef __KERNEL__ | 13 | #ifdef __KERNEL__ |
| 12 | # define HZ 1000 /* Internal kernel timer frequency */ | 14 | # define HZ CONFIG_HZ /* Internal kernel timer frequency */ |
| 13 | # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ | 15 | # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ |
| 14 | # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ | 16 | # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ |
| 15 | #endif | 17 | #endif |
diff --git a/include/asm-ppc64/percpu.h b/include/asm-ppc64/percpu.h deleted file mode 100644 index 60a659a4ce1f..000000000000 --- a/include/asm-ppc64/percpu.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef __ARCH_PPC64_PERCPU__ | ||
| 2 | #define __ARCH_PPC64_PERCPU__ | ||
| 3 | |||
| 4 | #include <asm-generic/percpu.h> | ||
| 5 | |||
| 6 | #endif /* __ARCH_PPC64_PERCPU__ */ | ||
diff --git a/include/asm-ppc64/pgtable.h b/include/asm-ppc64/pgtable.h index 5ea952ad7164..c83679c9d2b0 100644 --- a/include/asm-ppc64/pgtable.h +++ b/include/asm-ppc64/pgtable.h | |||
| @@ -489,8 +489,10 @@ extern pgd_t swapper_pg_dir[]; | |||
| 489 | 489 | ||
| 490 | extern void paging_init(void); | 490 | extern void paging_init(void); |
| 491 | 491 | ||
| 492 | #ifdef CONFIG_HUGETLB_PAGE | ||
| 492 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) \ | 493 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) \ |
| 493 | free_pgd_range(tlb, addr, end, floor, ceiling) | 494 | free_pgd_range(tlb, addr, end, floor, ceiling) |
| 495 | #endif | ||
| 494 | 496 | ||
| 495 | /* | 497 | /* |
| 496 | * This gets called at the end of handling a page fault, when | 498 | * This gets called at the end of handling a page fault, when |
diff --git a/include/asm-ppc64/poll.h b/include/asm-ppc64/poll.h deleted file mode 100644 index 370fa3ba0db4..000000000000 --- a/include/asm-ppc64/poll.h +++ /dev/null | |||
| @@ -1,32 +0,0 @@ | |||
| 1 | #ifndef __PPC64_POLL_H | ||
| 2 | #define __PPC64_POLL_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * Copyright (C) 2001 PPC64 Team, IBM Corp | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or | ||
| 8 | * modify it under the terms of the GNU General Public License | ||
| 9 | * as published by the Free Software Foundation; either version | ||
| 10 | * 2 of the License, or (at your option) any later version. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #define POLLIN 0x0001 | ||
| 14 | #define POLLPRI 0x0002 | ||
| 15 | #define POLLOUT 0x0004 | ||
| 16 | #define POLLERR 0x0008 | ||
| 17 | #define POLLHUP 0x0010 | ||
| 18 | #define POLLNVAL 0x0020 | ||
| 19 | #define POLLRDNORM 0x0040 | ||
| 20 | #define POLLRDBAND 0x0080 | ||
| 21 | #define POLLWRNORM 0x0100 | ||
| 22 | #define POLLWRBAND 0x0200 | ||
| 23 | #define POLLMSG 0x0400 | ||
| 24 | #define POLLREMOVE 0x1000 | ||
| 25 | |||
| 26 | struct pollfd { | ||
| 27 | int fd; | ||
| 28 | short events; | ||
| 29 | short revents; | ||
| 30 | }; | ||
| 31 | |||
| 32 | #endif /* __PPC64_POLL_H */ | ||
diff --git a/include/asm-ppc64/processor.h b/include/asm-ppc64/processor.h index 50b14c0ddb87..7bd4796f1236 100644 --- a/include/asm-ppc64/processor.h +++ b/include/asm-ppc64/processor.h | |||
| @@ -268,6 +268,7 @@ | |||
| 268 | #define PV_970FX 0x003C | 268 | #define PV_970FX 0x003C |
| 269 | #define PV_630 0x0040 | 269 | #define PV_630 0x0040 |
| 270 | #define PV_630p 0x0041 | 270 | #define PV_630p 0x0041 |
| 271 | #define PV_970MP 0x0044 | ||
| 271 | #define PV_BE 0x0070 | 272 | #define PV_BE 0x0070 |
| 272 | 273 | ||
| 273 | /* Platforms supported by PPC64 */ | 274 | /* Platforms supported by PPC64 */ |
diff --git a/include/asm-ppc64/resource.h b/include/asm-ppc64/resource.h deleted file mode 100644 index add031b9dfd4..000000000000 --- a/include/asm-ppc64/resource.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef _PPC64_RESOURCE_H | ||
| 2 | #define _PPC64_RESOURCE_H | ||
| 3 | |||
| 4 | #include <asm-generic/resource.h> | ||
| 5 | |||
| 6 | #endif /* _PPC64_RESOURCE_H */ | ||
diff --git a/include/asm-ppc64/shmparam.h b/include/asm-ppc64/shmparam.h deleted file mode 100644 index b2825ceff05e..000000000000 --- a/include/asm-ppc64/shmparam.h +++ /dev/null | |||
| @@ -1,13 +0,0 @@ | |||
| 1 | #ifndef _PPC64_SHMPARAM_H | ||
| 2 | #define _PPC64_SHMPARAM_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * This program is free software; you can redistribute it and/or | ||
| 6 | * modify it under the terms of the GNU General Public License | ||
| 7 | * as published by the Free Software Foundation; either version | ||
| 8 | * 2 of the License, or (at your option) any later version. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #define SHMLBA PAGE_SIZE /* attach addr a multiple of this */ | ||
| 12 | |||
| 13 | #endif /* _PPC64_SHMPARAM_H */ | ||
diff --git a/include/asm-ppc64/string.h b/include/asm-ppc64/string.h deleted file mode 100644 index eeca68ef1e91..000000000000 --- a/include/asm-ppc64/string.h +++ /dev/null | |||
| @@ -1,35 +0,0 @@ | |||
| 1 | #ifndef _PPC64_STRING_H_ | ||
| 2 | #define _PPC64_STRING_H_ | ||
| 3 | |||
| 4 | /* | ||
| 5 | * This program is free software; you can redistribute it and/or | ||
| 6 | * modify it under the terms of the GNU General Public License | ||
| 7 | * as published by the Free Software Foundation; either version | ||
| 8 | * 2 of the License, or (at your option) any later version. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #define __HAVE_ARCH_STRCPY | ||
| 12 | #define __HAVE_ARCH_STRNCPY | ||
| 13 | #define __HAVE_ARCH_STRLEN | ||
| 14 | #define __HAVE_ARCH_STRCMP | ||
| 15 | #define __HAVE_ARCH_STRCAT | ||
| 16 | #define __HAVE_ARCH_MEMSET | ||
| 17 | #define __HAVE_ARCH_MEMCPY | ||
| 18 | #define __HAVE_ARCH_MEMMOVE | ||
| 19 | #define __HAVE_ARCH_MEMCMP | ||
| 20 | #define __HAVE_ARCH_MEMCHR | ||
| 21 | |||
| 22 | extern int strcasecmp(const char *, const char *); | ||
| 23 | extern int strncasecmp(const char *, const char *, int); | ||
| 24 | extern char * strcpy(char *,const char *); | ||
| 25 | extern char * strncpy(char *,const char *, __kernel_size_t); | ||
| 26 | extern __kernel_size_t strlen(const char *); | ||
| 27 | extern int strcmp(const char *,const char *); | ||
| 28 | extern char * strcat(char *, const char *); | ||
| 29 | extern void * memset(void *,int,__kernel_size_t); | ||
| 30 | extern void * memcpy(void *,const void *,__kernel_size_t); | ||
| 31 | extern void * memmove(void *,const void *,__kernel_size_t); | ||
| 32 | extern int memcmp(const void *,const void *,__kernel_size_t); | ||
| 33 | extern void * memchr(const void *,int,__kernel_size_t); | ||
| 34 | |||
| 35 | #endif /* _PPC64_STRING_H_ */ | ||
diff --git a/include/asm-ppc64/unaligned.h b/include/asm-ppc64/unaligned.h deleted file mode 100644 index 636e93c4f379..000000000000 --- a/include/asm-ppc64/unaligned.h +++ /dev/null | |||
| @@ -1,21 +0,0 @@ | |||
| 1 | #ifndef __PPC64_UNALIGNED_H | ||
| 2 | #define __PPC64_UNALIGNED_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * The PowerPC can do unaligned accesses itself in big endian mode. | ||
| 6 | * | ||
| 7 | * The strange macros are there to make sure these can't | ||
| 8 | * be misused in a way that makes them not work on other | ||
| 9 | * architectures where unaligned accesses aren't as simple. | ||
| 10 | * | ||
| 11 | * This program is free software; you can redistribute it and/or | ||
| 12 | * modify it under the terms of the GNU General Public License | ||
| 13 | * as published by the Free Software Foundation; either version | ||
| 14 | * 2 of the License, or (at your option) any later version. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #define get_unaligned(ptr) (*(ptr)) | ||
| 18 | |||
| 19 | #define put_unaligned(val, ptr) ((void)( *(ptr) = (val) )) | ||
| 20 | |||
| 21 | #endif /* __PPC64_UNALIGNED_H */ | ||
diff --git a/include/asm-ppc64/vio.h b/include/asm-ppc64/vio.h index a82e87c1c5fa..03f1b95f433b 100644 --- a/include/asm-ppc64/vio.h +++ b/include/asm-ppc64/vio.h | |||
| @@ -19,13 +19,15 @@ | |||
| 19 | #include <linux/errno.h> | 19 | #include <linux/errno.h> |
| 20 | #include <linux/device.h> | 20 | #include <linux/device.h> |
| 21 | #include <linux/dma-mapping.h> | 21 | #include <linux/dma-mapping.h> |
| 22 | #include <linux/mod_devicetable.h> | ||
| 23 | |||
| 22 | #include <asm/hvcall.h> | 24 | #include <asm/hvcall.h> |
| 23 | #include <asm/prom.h> | ||
| 24 | #include <asm/scatterlist.h> | 25 | #include <asm/scatterlist.h> |
| 25 | /* | 26 | |
| 27 | /* | ||
| 26 | * Architecture-specific constants for drivers to | 28 | * Architecture-specific constants for drivers to |
| 27 | * extract attributes of the device using vio_get_attribute() | 29 | * extract attributes of the device using vio_get_attribute() |
| 28 | */ | 30 | */ |
| 29 | #define VETH_MAC_ADDR "local-mac-address" | 31 | #define VETH_MAC_ADDR "local-mac-address" |
| 30 | #define VETH_MCAST_FILTER_SIZE "ibm,mac-address-filters" | 32 | #define VETH_MCAST_FILTER_SIZE "ibm,mac-address-filters" |
| 31 | 33 | ||
| @@ -37,77 +39,68 @@ | |||
| 37 | #define VIO_IRQ_DISABLE 0UL | 39 | #define VIO_IRQ_DISABLE 0UL |
| 38 | #define VIO_IRQ_ENABLE 1UL | 40 | #define VIO_IRQ_ENABLE 1UL |
| 39 | 41 | ||
| 40 | struct vio_dev; | ||
| 41 | struct vio_driver; | ||
| 42 | struct vio_device_id; | ||
| 43 | struct iommu_table; | 42 | struct iommu_table; |
| 44 | 43 | ||
| 45 | int vio_register_driver(struct vio_driver *drv); | 44 | /* |
| 46 | void vio_unregister_driver(struct vio_driver *drv); | 45 | * The vio_dev structure is used to describe virtual I/O devices. |
| 47 | 46 | */ | |
| 48 | #ifdef CONFIG_PPC_PSERIES | 47 | struct vio_dev { |
| 49 | struct vio_dev * __devinit vio_register_device_node( | 48 | struct iommu_table *iommu_table; /* vio_map_* uses this */ |
| 50 | struct device_node *node_vdev); | 49 | char *name; |
| 51 | #endif | ||
| 52 | void __devinit vio_unregister_device(struct vio_dev *dev); | ||
| 53 | struct vio_dev *vio_find_node(struct device_node *vnode); | ||
| 54 | |||
| 55 | const void * vio_get_attribute(struct vio_dev *vdev, void* which, int* length); | ||
| 56 | int vio_get_irq(struct vio_dev *dev); | ||
| 57 | int vio_enable_interrupts(struct vio_dev *dev); | ||
| 58 | int vio_disable_interrupts(struct vio_dev *dev); | ||
| 59 | extern struct vio_dev * __devinit vio_register_device_common( | ||
| 60 | struct vio_dev *viodev, char *name, char *type, | ||
| 61 | uint32_t unit_address, struct iommu_table *iommu_table); | ||
| 62 | |||
| 63 | extern struct dma_mapping_ops vio_dma_ops; | ||
| 64 | |||
| 65 | extern struct bus_type vio_bus_type; | ||
| 66 | |||
| 67 | struct vio_device_id { | ||
| 68 | char *type; | 50 | char *type; |
| 69 | char *compat; | 51 | uint32_t unit_address; |
| 52 | unsigned int irq; | ||
| 53 | struct device dev; | ||
| 70 | }; | 54 | }; |
| 71 | 55 | ||
| 72 | struct vio_driver { | 56 | struct vio_driver { |
| 73 | struct list_head node; | 57 | struct list_head node; |
| 74 | char *name; | 58 | char *name; |
| 75 | const struct vio_device_id *id_table; /* NULL if wants all devices */ | 59 | const struct vio_device_id *id_table; |
| 76 | int (*probe) (struct vio_dev *dev, const struct vio_device_id *id); /* New device inserted */ | 60 | int (*probe)(struct vio_dev *dev, const struct vio_device_id *id); |
| 77 | int (*remove) (struct vio_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */ | 61 | int (*remove)(struct vio_dev *dev); |
| 78 | unsigned long driver_data; | 62 | unsigned long driver_data; |
| 79 | |||
| 80 | struct device_driver driver; | 63 | struct device_driver driver; |
| 81 | }; | 64 | }; |
| 82 | 65 | ||
| 66 | struct vio_bus_ops { | ||
| 67 | int (*match)(const struct vio_device_id *id, const struct vio_dev *dev); | ||
| 68 | void (*unregister_device)(struct vio_dev *); | ||
| 69 | void (*release_device)(struct device *); | ||
| 70 | }; | ||
| 71 | |||
| 72 | extern struct dma_mapping_ops vio_dma_ops; | ||
| 73 | extern struct bus_type vio_bus_type; | ||
| 74 | extern struct vio_dev vio_bus_device; | ||
| 75 | |||
| 76 | extern int vio_register_driver(struct vio_driver *drv); | ||
| 77 | extern void vio_unregister_driver(struct vio_driver *drv); | ||
| 78 | |||
| 79 | extern struct vio_dev * __devinit vio_register_device(struct vio_dev *viodev); | ||
| 80 | extern void __devinit vio_unregister_device(struct vio_dev *dev); | ||
| 81 | |||
| 82 | extern int vio_bus_init(struct vio_bus_ops *); | ||
| 83 | |||
| 84 | #ifdef CONFIG_PPC_PSERIES | ||
| 85 | struct device_node; | ||
| 86 | |||
| 87 | extern struct vio_dev * __devinit vio_register_device_node( | ||
| 88 | struct device_node *node_vdev); | ||
| 89 | extern struct vio_dev *vio_find_node(struct device_node *vnode); | ||
| 90 | extern const void *vio_get_attribute(struct vio_dev *vdev, void *which, | ||
| 91 | int *length); | ||
| 92 | extern int vio_enable_interrupts(struct vio_dev *dev); | ||
| 93 | extern int vio_disable_interrupts(struct vio_dev *dev); | ||
| 94 | #endif | ||
| 95 | |||
| 83 | static inline struct vio_driver *to_vio_driver(struct device_driver *drv) | 96 | static inline struct vio_driver *to_vio_driver(struct device_driver *drv) |
| 84 | { | 97 | { |
| 85 | return container_of(drv, struct vio_driver, driver); | 98 | return container_of(drv, struct vio_driver, driver); |
| 86 | } | 99 | } |
| 87 | 100 | ||
| 88 | /* | ||
| 89 | * The vio_dev structure is used to describe virtual I/O devices. | ||
| 90 | */ | ||
| 91 | struct vio_dev { | ||
| 92 | struct iommu_table *iommu_table; /* vio_map_* uses this */ | ||
| 93 | char *name; | ||
| 94 | char *type; | ||
| 95 | uint32_t unit_address; | ||
| 96 | unsigned int irq; | ||
| 97 | |||
| 98 | struct device dev; | ||
| 99 | }; | ||
| 100 | |||
| 101 | extern struct vio_dev vio_bus_device; | ||
| 102 | |||
| 103 | static inline struct vio_dev *to_vio_dev(struct device *dev) | 101 | static inline struct vio_dev *to_vio_dev(struct device *dev) |
| 104 | { | 102 | { |
| 105 | return container_of(dev, struct vio_dev, dev); | 103 | return container_of(dev, struct vio_dev, dev); |
| 106 | } | 104 | } |
| 107 | 105 | ||
| 108 | extern int vio_bus_init(int (*is_match)(const struct vio_device_id *id, | ||
| 109 | const struct vio_dev *dev), | ||
| 110 | void (*)(struct vio_dev *), | ||
| 111 | void (*)(struct device *)); | ||
| 112 | |||
| 113 | #endif /* _ASM_VIO_H */ | 106 | #endif /* _ASM_VIO_H */ |
diff --git a/include/asm-ppc64/xor.h b/include/asm-ppc64/xor.h deleted file mode 100644 index c82eb12a5b18..000000000000 --- a/include/asm-ppc64/xor.h +++ /dev/null | |||
| @@ -1 +0,0 @@ | |||
| 1 | #include <asm-generic/xor.h> | ||
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 97bbccdbcca3..47da39ba3f03 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Device tables which are exported to userspace via | 2 | * Device tables which are exported to userspace via |
| 3 | * scripts/table2alias.c. You must keep that file in sync with this | 3 | * scripts/mod/file2alias.c. You must keep that file in sync with this |
| 4 | * header. | 4 | * header. |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| @@ -190,6 +190,11 @@ struct of_device_id | |||
| 190 | #endif | 190 | #endif |
| 191 | }; | 191 | }; |
| 192 | 192 | ||
| 193 | /* VIO */ | ||
| 194 | struct vio_device_id { | ||
| 195 | char type[32]; | ||
| 196 | char compat[32]; | ||
| 197 | }; | ||
| 193 | 198 | ||
| 194 | /* PCMCIA */ | 199 | /* PCMCIA */ |
| 195 | 200 | ||
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index 5180405c1a84..d8ee38aede26 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c | |||
| @@ -341,6 +341,22 @@ static int do_of_entry (const char *filename, struct of_device_id *of, char *ali | |||
| 341 | return 1; | 341 | return 1; |
| 342 | } | 342 | } |
| 343 | 343 | ||
| 344 | static int do_vio_entry(const char *filename, struct vio_device_id *vio, | ||
| 345 | char *alias) | ||
| 346 | { | ||
| 347 | char *tmp; | ||
| 348 | |||
| 349 | sprintf(alias, "vio:T%sS%s", vio->type[0] ? vio->type : "*", | ||
| 350 | vio->compat[0] ? vio->compat : "*"); | ||
| 351 | |||
| 352 | /* Replace all whitespace with underscores */ | ||
| 353 | for (tmp = alias; tmp && *tmp; tmp++) | ||
| 354 | if (isspace (*tmp)) | ||
| 355 | *tmp = '_'; | ||
| 356 | |||
| 357 | return 1; | ||
| 358 | } | ||
| 359 | |||
| 344 | /* Ignore any prefix, eg. v850 prepends _ */ | 360 | /* Ignore any prefix, eg. v850 prepends _ */ |
| 345 | static inline int sym_is(const char *symbol, const char *name) | 361 | static inline int sym_is(const char *symbol, const char *name) |
| 346 | { | 362 | { |
| @@ -422,6 +438,9 @@ void handle_moddevtable(struct module *mod, struct elf_info *info, | |||
| 422 | else if (sym_is(symname, "__mod_of_device_table")) | 438 | else if (sym_is(symname, "__mod_of_device_table")) |
| 423 | do_table(symval, sym->st_size, sizeof(struct of_device_id), | 439 | do_table(symval, sym->st_size, sizeof(struct of_device_id), |
| 424 | do_of_entry, mod); | 440 | do_of_entry, mod); |
| 441 | else if (sym_is(symname, "__mod_vio_device_table")) | ||
| 442 | do_table(symval, sym->st_size, sizeof(struct vio_device_id), | ||
| 443 | do_vio_entry, mod); | ||
| 425 | 444 | ||
| 426 | } | 445 | } |
| 427 | 446 | ||
