diff options
Diffstat (limited to 'arch/ppc')
26 files changed, 145 insertions, 120 deletions
diff --git a/arch/ppc/.gitignore b/arch/ppc/.gitignore new file mode 100644 index 000000000000..a1a869c8c840 --- /dev/null +++ b/arch/ppc/.gitignore | |||
@@ -0,0 +1 @@ | |||
include | |||
diff --git a/arch/ppc/8260_io/fcc_enet.c b/arch/ppc/8260_io/fcc_enet.c index 2e1943e27819..06b84c372e58 100644 --- a/arch/ppc/8260_io/fcc_enet.c +++ b/arch/ppc/8260_io/fcc_enet.c | |||
@@ -385,6 +385,7 @@ struct fcc_enet_private { | |||
385 | phy_info_t *phy; | 385 | phy_info_t *phy; |
386 | struct work_struct phy_relink; | 386 | struct work_struct phy_relink; |
387 | struct work_struct phy_display_config; | 387 | struct work_struct phy_display_config; |
388 | struct net_device *dev; | ||
388 | 389 | ||
389 | uint sequence_done; | 390 | uint sequence_done; |
390 | 391 | ||
@@ -1391,10 +1392,11 @@ static phy_info_t *phy_info[] = { | |||
1391 | NULL | 1392 | NULL |
1392 | }; | 1393 | }; |
1393 | 1394 | ||
1394 | static void mii_display_status(void *data) | 1395 | static void mii_display_status(struct work_struct *work) |
1395 | { | 1396 | { |
1396 | struct net_device *dev = data; | 1397 | volatile struct fcc_enet_private *fep = |
1397 | volatile struct fcc_enet_private *fep = dev->priv; | 1398 | container_of(work, struct fcc_enet_private, phy_relink); |
1399 | struct net_device *dev = fep->dev; | ||
1398 | uint s = fep->phy_status; | 1400 | uint s = fep->phy_status; |
1399 | 1401 | ||
1400 | if (!fep->link && !fep->old_link) { | 1402 | if (!fep->link && !fep->old_link) { |
@@ -1428,10 +1430,12 @@ static void mii_display_status(void *data) | |||
1428 | printk(".\n"); | 1430 | printk(".\n"); |
1429 | } | 1431 | } |
1430 | 1432 | ||
1431 | static void mii_display_config(void *data) | 1433 | static void mii_display_config(struct work_struct *work) |
1432 | { | 1434 | { |
1433 | struct net_device *dev = data; | 1435 | volatile struct fcc_enet_private *fep = |
1434 | volatile struct fcc_enet_private *fep = dev->priv; | 1436 | container_of(work, struct fcc_enet_private, |
1437 | phy_display_config); | ||
1438 | struct net_device *dev = fep->dev; | ||
1435 | uint s = fep->phy_status; | 1439 | uint s = fep->phy_status; |
1436 | 1440 | ||
1437 | printk("%s: config: auto-negotiation ", dev->name); | 1441 | printk("%s: config: auto-negotiation ", dev->name); |
@@ -1758,8 +1762,9 @@ static int __init fec_enet_init(void) | |||
1758 | cep->phy_id_done = 0; | 1762 | cep->phy_id_done = 0; |
1759 | cep->phy_addr = fip->fc_phyaddr; | 1763 | cep->phy_addr = fip->fc_phyaddr; |
1760 | mii_queue(dev, mk_mii_read(MII_PHYSID1), mii_discover_phy); | 1764 | mii_queue(dev, mk_mii_read(MII_PHYSID1), mii_discover_phy); |
1761 | INIT_WORK(&cep->phy_relink, mii_display_status, dev); | 1765 | INIT_WORK(&cep->phy_relink, mii_display_status); |
1762 | INIT_WORK(&cep->phy_display_config, mii_display_config, dev); | 1766 | INIT_WORK(&cep->phy_display_config, mii_display_config); |
1767 | cep->dev = dev; | ||
1763 | #endif /* CONFIG_USE_MDIO */ | 1768 | #endif /* CONFIG_USE_MDIO */ |
1764 | 1769 | ||
1765 | fip++; | 1770 | fip++; |
@@ -1887,10 +1892,10 @@ init_fcc_param(fcc_info_t *fip, struct net_device *dev, | |||
1887 | /* Allocate space for the buffer descriptors from regular memory. | 1892 | /* Allocate space for the buffer descriptors from regular memory. |
1888 | * Initialize base addresses for the buffer descriptors. | 1893 | * Initialize base addresses for the buffer descriptors. |
1889 | */ | 1894 | */ |
1890 | cep->rx_bd_base = (cbd_t *)kmalloc(sizeof(cbd_t) * RX_RING_SIZE, | 1895 | cep->rx_bd_base = kmalloc(sizeof(cbd_t) * RX_RING_SIZE, |
1891 | GFP_KERNEL | GFP_DMA); | 1896 | GFP_KERNEL | GFP_DMA); |
1892 | ep->fen_genfcc.fcc_rbase = __pa(cep->rx_bd_base); | 1897 | ep->fen_genfcc.fcc_rbase = __pa(cep->rx_bd_base); |
1893 | cep->tx_bd_base = (cbd_t *)kmalloc(sizeof(cbd_t) * TX_RING_SIZE, | 1898 | cep->tx_bd_base = kmalloc(sizeof(cbd_t) * TX_RING_SIZE, |
1894 | GFP_KERNEL | GFP_DMA); | 1899 | GFP_KERNEL | GFP_DMA); |
1895 | ep->fen_genfcc.fcc_tbase = __pa(cep->tx_bd_base); | 1900 | ep->fen_genfcc.fcc_tbase = __pa(cep->tx_bd_base); |
1896 | 1901 | ||
diff --git a/arch/ppc/8xx_io/cs4218_tdm.c b/arch/ppc/8xx_io/cs4218_tdm.c index 959d31c26cbb..b7bb5f0b3c5f 100644 --- a/arch/ppc/8xx_io/cs4218_tdm.c +++ b/arch/ppc/8xx_io/cs4218_tdm.c | |||
@@ -2165,7 +2165,7 @@ static int sq_release(struct inode *inode, struct file *file) | |||
2165 | int rc = 0; | 2165 | int rc = 0; |
2166 | 2166 | ||
2167 | if (sq.busy) | 2167 | if (sq.busy) |
2168 | rc = sq_fsync(file, file->f_dentry); | 2168 | rc = sq_fsync(file, file->f_path.dentry); |
2169 | sound.soft = sound.dsp; | 2169 | sound.soft = sound.dsp; |
2170 | sound.hard = sound.dsp; | 2170 | sound.hard = sound.dsp; |
2171 | sound_silence(); | 2171 | sound_silence(); |
@@ -2218,25 +2218,25 @@ static int sq_ioctl(struct inode *inode, struct file *file, u_int cmd, | |||
2218 | return 0; | 2218 | return 0; |
2219 | case SNDCTL_DSP_POST: | 2219 | case SNDCTL_DSP_POST: |
2220 | case SNDCTL_DSP_SYNC: | 2220 | case SNDCTL_DSP_SYNC: |
2221 | return sq_fsync(file, file->f_dentry); | 2221 | return sq_fsync(file, file->f_path.dentry); |
2222 | 2222 | ||
2223 | /* ++TeSche: before changing any of these it's | 2223 | /* ++TeSche: before changing any of these it's |
2224 | * probably wise to wait until sound playing has | 2224 | * probably wise to wait until sound playing has |
2225 | * settled down. */ | 2225 | * settled down. */ |
2226 | case SNDCTL_DSP_SPEED: | 2226 | case SNDCTL_DSP_SPEED: |
2227 | sq_fsync(file, file->f_dentry); | 2227 | sq_fsync(file, file->f_path.dentry); |
2228 | IOCTL_IN(arg, data); | 2228 | IOCTL_IN(arg, data); |
2229 | return IOCTL_OUT(arg, sound_set_speed(data)); | 2229 | return IOCTL_OUT(arg, sound_set_speed(data)); |
2230 | case SNDCTL_DSP_STEREO: | 2230 | case SNDCTL_DSP_STEREO: |
2231 | sq_fsync(file, file->f_dentry); | 2231 | sq_fsync(file, file->f_path.dentry); |
2232 | IOCTL_IN(arg, data); | 2232 | IOCTL_IN(arg, data); |
2233 | return IOCTL_OUT(arg, sound_set_stereo(data)); | 2233 | return IOCTL_OUT(arg, sound_set_stereo(data)); |
2234 | case SOUND_PCM_WRITE_CHANNELS: | 2234 | case SOUND_PCM_WRITE_CHANNELS: |
2235 | sq_fsync(file, file->f_dentry); | 2235 | sq_fsync(file, file->f_path.dentry); |
2236 | IOCTL_IN(arg, data); | 2236 | IOCTL_IN(arg, data); |
2237 | return IOCTL_OUT(arg, sound_set_stereo(data-1)+1); | 2237 | return IOCTL_OUT(arg, sound_set_stereo(data-1)+1); |
2238 | case SNDCTL_DSP_SETFMT: | 2238 | case SNDCTL_DSP_SETFMT: |
2239 | sq_fsync(file, file->f_dentry); | 2239 | sq_fsync(file, file->f_path.dentry); |
2240 | IOCTL_IN(arg, data); | 2240 | IOCTL_IN(arg, data); |
2241 | return IOCTL_OUT(arg, sound_set_format(data)); | 2241 | return IOCTL_OUT(arg, sound_set_format(data)); |
2242 | case SNDCTL_DSP_GETFMTS: | 2242 | case SNDCTL_DSP_GETFMTS: |
@@ -2601,7 +2601,7 @@ int __init tdm8xx_sound_init(void) | |||
2601 | /* Initialize beep stuff */ | 2601 | /* Initialize beep stuff */ |
2602 | orig_mksound = kd_mksound; | 2602 | orig_mksound = kd_mksound; |
2603 | kd_mksound = cs_mksound; | 2603 | kd_mksound = cs_mksound; |
2604 | beep_buf = (short *) kmalloc(BEEP_BUFLEN * 4, GFP_KERNEL); | 2604 | beep_buf = kmalloc(BEEP_BUFLEN * 4, GFP_KERNEL); |
2605 | if (beep_buf == NULL) | 2605 | if (beep_buf == NULL) |
2606 | printk(KERN_WARNING "dmasound: no memory for " | 2606 | printk(KERN_WARNING "dmasound: no memory for " |
2607 | "beep buffer\n"); | 2607 | "beep buffer\n"); |
diff --git a/arch/ppc/8xx_io/fec.c b/arch/ppc/8xx_io/fec.c index 2f9fa9e3d331..e6c28fb423b2 100644 --- a/arch/ppc/8xx_io/fec.c +++ b/arch/ppc/8xx_io/fec.c | |||
@@ -173,6 +173,7 @@ struct fec_enet_private { | |||
173 | uint phy_speed; | 173 | uint phy_speed; |
174 | phy_info_t *phy; | 174 | phy_info_t *phy; |
175 | struct work_struct phy_task; | 175 | struct work_struct phy_task; |
176 | struct net_device *dev; | ||
176 | 177 | ||
177 | uint sequence_done; | 178 | uint sequence_done; |
178 | 179 | ||
@@ -1263,10 +1264,11 @@ static void mii_display_status(struct net_device *dev) | |||
1263 | printk(".\n"); | 1264 | printk(".\n"); |
1264 | } | 1265 | } |
1265 | 1266 | ||
1266 | static void mii_display_config(void *priv) | 1267 | static void mii_display_config(struct work_struct *work) |
1267 | { | 1268 | { |
1268 | struct net_device *dev = (struct net_device *)priv; | 1269 | struct fec_enet_private *fep = |
1269 | struct fec_enet_private *fep = dev->priv; | 1270 | container_of(work, struct fec_enet_private, phy_task); |
1271 | struct net_device *dev = fep->dev; | ||
1270 | volatile uint *s = &(fep->phy_status); | 1272 | volatile uint *s = &(fep->phy_status); |
1271 | 1273 | ||
1272 | printk("%s: config: auto-negotiation ", dev->name); | 1274 | printk("%s: config: auto-negotiation ", dev->name); |
@@ -1295,10 +1297,11 @@ static void mii_display_config(void *priv) | |||
1295 | fep->sequence_done = 1; | 1297 | fep->sequence_done = 1; |
1296 | } | 1298 | } |
1297 | 1299 | ||
1298 | static void mii_relink(void *priv) | 1300 | static void mii_relink(struct work_struct *work) |
1299 | { | 1301 | { |
1300 | struct net_device *dev = (struct net_device *)priv; | 1302 | struct fec_enet_private *fep = |
1301 | struct fec_enet_private *fep = dev->priv; | 1303 | container_of(work, struct fec_enet_private, phy_task); |
1304 | struct net_device *dev = fep->dev; | ||
1302 | int duplex; | 1305 | int duplex; |
1303 | 1306 | ||
1304 | fep->link = (fep->phy_status & PHY_STAT_LINK) ? 1 : 0; | 1307 | fep->link = (fep->phy_status & PHY_STAT_LINK) ? 1 : 0; |
@@ -1325,7 +1328,8 @@ static void mii_queue_relink(uint mii_reg, struct net_device *dev) | |||
1325 | { | 1328 | { |
1326 | struct fec_enet_private *fep = dev->priv; | 1329 | struct fec_enet_private *fep = dev->priv; |
1327 | 1330 | ||
1328 | INIT_WORK(&fep->phy_task, mii_relink, (void *)dev); | 1331 | fep->dev = dev; |
1332 | INIT_WORK(&fep->phy_task, mii_relink); | ||
1329 | schedule_work(&fep->phy_task); | 1333 | schedule_work(&fep->phy_task); |
1330 | } | 1334 | } |
1331 | 1335 | ||
@@ -1333,7 +1337,8 @@ static void mii_queue_config(uint mii_reg, struct net_device *dev) | |||
1333 | { | 1337 | { |
1334 | struct fec_enet_private *fep = dev->priv; | 1338 | struct fec_enet_private *fep = dev->priv; |
1335 | 1339 | ||
1336 | INIT_WORK(&fep->phy_task, mii_display_config, (void *)dev); | 1340 | fep->dev = dev; |
1341 | INIT_WORK(&fep->phy_task, mii_display_config); | ||
1337 | schedule_work(&fep->phy_task); | 1342 | schedule_work(&fep->phy_task); |
1338 | } | 1343 | } |
1339 | 1344 | ||
diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig index 077711e63104..8eb82efe05a1 100644 --- a/arch/ppc/Kconfig +++ b/arch/ppc/Kconfig | |||
@@ -19,6 +19,14 @@ config RWSEM_XCHGADD_ALGORITHM | |||
19 | bool | 19 | bool |
20 | default y | 20 | default y |
21 | 21 | ||
22 | config ARCH_HAS_ILOG2_U32 | ||
23 | bool | ||
24 | default y | ||
25 | |||
26 | config ARCH_HAS_ILOG2_U64 | ||
27 | bool | ||
28 | default n | ||
29 | |||
22 | config GENERIC_HWEIGHT | 30 | config GENERIC_HWEIGHT |
23 | bool | 31 | bool |
24 | default y | 32 | default y |
@@ -52,6 +60,11 @@ config ARCH_MAY_HAVE_PC_FDC | |||
52 | bool | 60 | bool |
53 | default y | 61 | default y |
54 | 62 | ||
63 | config GENERIC_BUG | ||
64 | bool | ||
65 | default y | ||
66 | depends on BUG | ||
67 | |||
55 | source "init/Kconfig" | 68 | source "init/Kconfig" |
56 | 69 | ||
57 | menu "Processor" | 70 | menu "Processor" |
@@ -77,9 +90,11 @@ config 6xx | |||
77 | 90 | ||
78 | config 40x | 91 | config 40x |
79 | bool "40x" | 92 | bool "40x" |
93 | select PPC_DCR_NATIVE | ||
80 | 94 | ||
81 | config 44x | 95 | config 44x |
82 | bool "44x" | 96 | bool "44x" |
97 | select PPC_DCR_NATIVE | ||
83 | 98 | ||
84 | config 8xx | 99 | config 8xx |
85 | bool "8xx" | 100 | bool "8xx" |
@@ -95,6 +110,15 @@ endchoice | |||
95 | config PPC_FPU | 110 | config PPC_FPU |
96 | bool | 111 | bool |
97 | 112 | ||
113 | config PPC_DCR_NATIVE | ||
114 | bool | ||
115 | default n | ||
116 | |||
117 | config PPC_DCR | ||
118 | bool | ||
119 | depends on PPC_DCR_NATIVE | ||
120 | default y | ||
121 | |||
98 | config BOOKE | 122 | config BOOKE |
99 | bool | 123 | bool |
100 | depends on E200 || E500 | 124 | depends on E200 || E500 |
@@ -600,7 +624,7 @@ config HDPU | |||
600 | Select HDPU if configuring a Sky Computers Compute Blade. | 624 | Select HDPU if configuring a Sky Computers Compute Blade. |
601 | 625 | ||
602 | config HDPU_FEATURES | 626 | config HDPU_FEATURES |
603 | depends HDPU | 627 | depends on HDPU |
604 | tristate "HDPU-Features" | 628 | tristate "HDPU-Features" |
605 | help | 629 | help |
606 | Select to enable HDPU enhanced features. | 630 | Select to enable HDPU enhanced features. |
@@ -711,7 +735,7 @@ config LITE5200 | |||
711 | 735 | ||
712 | config LITE5200B | 736 | config LITE5200B |
713 | bool "Freescale LITE5200B" | 737 | bool "Freescale LITE5200B" |
714 | depends LITE5200 | 738 | depends on LITE5200 |
715 | help | 739 | help |
716 | Support for the LITE5200B dev board for the MPC5200 from Freescale. | 740 | Support for the LITE5200B dev board for the MPC5200 from Freescale. |
717 | This is the new board with 2 PCI slots. | 741 | This is the new board with 2 PCI slots. |
@@ -724,7 +748,7 @@ config MPC834x_SYS | |||
724 | Be aware that PCI buses can only function when SYS board is plugged | 748 | Be aware that PCI buses can only function when SYS board is plugged |
725 | into the PIB (Platform IO Board) board from Freescale which provide | 749 | into the PIB (Platform IO Board) board from Freescale which provide |
726 | 3 PCI slots. The PIBs PCI initialization is the bootloader's | 750 | 3 PCI slots. The PIBs PCI initialization is the bootloader's |
727 | responsiblilty. | 751 | responsibility. |
728 | 752 | ||
729 | config EV64360 | 753 | config EV64360 |
730 | bool "Marvell-EV64360BP" | 754 | bool "Marvell-EV64360BP" |
diff --git a/arch/ppc/boot/images/.gitignore b/arch/ppc/boot/images/.gitignore new file mode 100644 index 000000000000..21c2dc5b6b78 --- /dev/null +++ b/arch/ppc/boot/images/.gitignore | |||
@@ -0,0 +1,6 @@ | |||
1 | sImage | ||
2 | vmapus | ||
3 | vmlinux* | ||
4 | miboot* | ||
5 | zImage* | ||
6 | uImage | ||
diff --git a/arch/ppc/boot/lib/.gitignore b/arch/ppc/boot/lib/.gitignore new file mode 100644 index 000000000000..1629a6167755 --- /dev/null +++ b/arch/ppc/boot/lib/.gitignore | |||
@@ -0,0 +1,3 @@ | |||
1 | inffast.c | ||
2 | inflate.c | ||
3 | inftrees.c | ||
diff --git a/arch/ppc/boot/utils/.gitignore b/arch/ppc/boot/utils/.gitignore new file mode 100644 index 000000000000..bbdfb3b9c532 --- /dev/null +++ b/arch/ppc/boot/utils/.gitignore | |||
@@ -0,0 +1,3 @@ | |||
1 | mkprep | ||
2 | mkbugboot | ||
3 | mktree | ||
diff --git a/arch/ppc/kernel/pci.c b/arch/ppc/kernel/pci.c index 63808e01cb0b..5e723c4c2571 100644 --- a/arch/ppc/kernel/pci.c +++ b/arch/ppc/kernel/pci.c | |||
@@ -879,7 +879,7 @@ pci_resource_to_bus(struct pci_dev *pdev, struct resource *res) | |||
879 | 879 | ||
880 | 880 | ||
881 | static struct resource *__pci_mmap_make_offset(struct pci_dev *dev, | 881 | static struct resource *__pci_mmap_make_offset(struct pci_dev *dev, |
882 | unsigned long *offset, | 882 | resource_size_t *offset, |
883 | enum pci_mmap_state mmap_state) | 883 | enum pci_mmap_state mmap_state) |
884 | { | 884 | { |
885 | struct pci_controller *hose = pci_bus_to_hose(dev->bus->number); | 885 | struct pci_controller *hose = pci_bus_to_hose(dev->bus->number); |
@@ -891,7 +891,9 @@ static struct resource *__pci_mmap_make_offset(struct pci_dev *dev, | |||
891 | 891 | ||
892 | /* If memory, add on the PCI bridge address offset */ | 892 | /* If memory, add on the PCI bridge address offset */ |
893 | if (mmap_state == pci_mmap_mem) { | 893 | if (mmap_state == pci_mmap_mem) { |
894 | #if 0 /* See comment in pci_resource_to_user() for why this is disabled */ | ||
894 | *offset += hose->pci_mem_offset; | 895 | *offset += hose->pci_mem_offset; |
896 | #endif | ||
895 | res_bit = IORESOURCE_MEM; | 897 | res_bit = IORESOURCE_MEM; |
896 | } else { | 898 | } else { |
897 | io_offset = hose->io_base_virt - ___IO_BASE; | 899 | io_offset = hose->io_base_virt - ___IO_BASE; |
@@ -1030,7 +1032,7 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | |||
1030 | enum pci_mmap_state mmap_state, | 1032 | enum pci_mmap_state mmap_state, |
1031 | int write_combine) | 1033 | int write_combine) |
1032 | { | 1034 | { |
1033 | unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; | 1035 | resource_size_t offset = vma->vm_pgoff << PAGE_SHIFT; |
1034 | struct resource *rp; | 1036 | struct resource *rp; |
1035 | int ret; | 1037 | int ret; |
1036 | 1038 | ||
@@ -1132,21 +1134,42 @@ void pci_resource_to_user(const struct pci_dev *dev, int bar, | |||
1132 | resource_size_t *start, resource_size_t *end) | 1134 | resource_size_t *start, resource_size_t *end) |
1133 | { | 1135 | { |
1134 | struct pci_controller *hose = pci_bus_to_hose(dev->bus->number); | 1136 | struct pci_controller *hose = pci_bus_to_hose(dev->bus->number); |
1135 | unsigned long offset = 0; | 1137 | resource_size_t offset = 0; |
1136 | 1138 | ||
1137 | if (hose == NULL) | 1139 | if (hose == NULL) |
1138 | return; | 1140 | return; |
1139 | 1141 | ||
1140 | if (rsrc->flags & IORESOURCE_IO) | 1142 | if (rsrc->flags & IORESOURCE_IO) |
1141 | offset = ___IO_BASE - hose->io_base_virt + hose->io_base_phys; | 1143 | offset = (unsigned long)hose->io_base_virt - _IO_BASE; |
1144 | |||
1145 | /* We pass a fully fixed up address to userland for MMIO instead of | ||
1146 | * a BAR value because X is lame and expects to be able to use that | ||
1147 | * to pass to /dev/mem ! | ||
1148 | * | ||
1149 | * That means that we'll have potentially 64 bits values where some | ||
1150 | * userland apps only expect 32 (like X itself since it thinks only | ||
1151 | * Sparc has 64 bits MMIO) but if we don't do that, we break it on | ||
1152 | * 32 bits CHRPs :-( | ||
1153 | * | ||
1154 | * Hopefully, the sysfs insterface is immune to that gunk. Once X | ||
1155 | * has been fixed (and the fix spread enough), we can re-enable the | ||
1156 | * 2 lines below and pass down a BAR value to userland. In that case | ||
1157 | * we'll also have to re-enable the matching code in | ||
1158 | * __pci_mmap_make_offset(). | ||
1159 | * | ||
1160 | * BenH. | ||
1161 | */ | ||
1162 | #if 0 | ||
1163 | else if (rsrc->flags & IORESOURCE_MEM) | ||
1164 | offset = hose->pci_mem_offset; | ||
1165 | #endif | ||
1142 | 1166 | ||
1143 | *start = rsrc->start + offset; | 1167 | *start = rsrc->start - offset; |
1144 | *end = rsrc->end + offset; | 1168 | *end = rsrc->end - offset; |
1145 | } | 1169 | } |
1146 | 1170 | ||
1147 | void __init | 1171 | void __init pci_init_resource(struct resource *res, resource_size_t start, |
1148 | pci_init_resource(struct resource *res, unsigned long start, unsigned long end, | 1172 | resource_size_t end, int flags, char *name) |
1149 | int flags, char *name) | ||
1150 | { | 1173 | { |
1151 | res->start = start; | 1174 | res->start = start; |
1152 | res->end = end; | 1175 | res->end = end; |
diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c index 27faeca2c7a2..3c506af19880 100644 --- a/arch/ppc/kernel/setup.c +++ b/arch/ppc/kernel/setup.c | |||
@@ -313,7 +313,7 @@ early_init(int r3, int r4, int r5) | |||
313 | * Identify the CPU type and fix up code sections | 313 | * Identify the CPU type and fix up code sections |
314 | * that depend on which cpu we have. | 314 | * that depend on which cpu we have. |
315 | */ | 315 | */ |
316 | spec = identify_cpu(offset); | 316 | spec = identify_cpu(offset, mfspr(SPRN_PVR)); |
317 | do_feature_fixups(spec->cpu_features, | 317 | do_feature_fixups(spec->cpu_features, |
318 | PTRRELOC(&__start___ftr_fixup), | 318 | PTRRELOC(&__start___ftr_fixup), |
319 | PTRRELOC(&__stop___ftr_fixup)); | 319 | PTRRELOC(&__stop___ftr_fixup)); |
diff --git a/arch/ppc/kernel/traps.c b/arch/ppc/kernel/traps.c index 9661a91183b3..810f7aa72e92 100644 --- a/arch/ppc/kernel/traps.c +++ b/arch/ppc/kernel/traps.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/init.h> | 28 | #include <linux/init.h> |
29 | #include <linux/module.h> | 29 | #include <linux/module.h> |
30 | #include <linux/prctl.h> | 30 | #include <linux/prctl.h> |
31 | #include <linux/bug.h> | ||
31 | 32 | ||
32 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
33 | #include <asm/uaccess.h> | 34 | #include <asm/uaccess.h> |
@@ -316,7 +317,7 @@ void machine_check_exception(struct pt_regs *regs) | |||
316 | if (reason & MCSR_BUS_RBERR) | 317 | if (reason & MCSR_BUS_RBERR) |
317 | printk("Bus - Read Data Bus Error\n"); | 318 | printk("Bus - Read Data Bus Error\n"); |
318 | if (reason & MCSR_BUS_WBERR) | 319 | if (reason & MCSR_BUS_WBERR) |
319 | printk("Bus - Read Data Bus Error\n"); | 320 | printk("Bus - Write Data Bus Error\n"); |
320 | if (reason & MCSR_BUS_IPERR) | 321 | if (reason & MCSR_BUS_IPERR) |
321 | printk("Bus - Instruction Parity Error\n"); | 322 | printk("Bus - Instruction Parity Error\n"); |
322 | if (reason & MCSR_BUS_RPERR) | 323 | if (reason & MCSR_BUS_RPERR) |
@@ -559,64 +560,9 @@ static void emulate_single_step(struct pt_regs *regs) | |||
559 | } | 560 | } |
560 | } | 561 | } |
561 | 562 | ||
562 | /* | 563 | int is_valid_bugaddr(unsigned long addr) |
563 | * Look through the list of trap instructions that are used for BUG(), | ||
564 | * BUG_ON() and WARN_ON() and see if we hit one. At this point we know | ||
565 | * that the exception was caused by a trap instruction of some kind. | ||
566 | * Returns 1 if we should continue (i.e. it was a WARN_ON) or 0 | ||
567 | * otherwise. | ||
568 | */ | ||
569 | extern struct bug_entry __start___bug_table[], __stop___bug_table[]; | ||
570 | |||
571 | #ifndef CONFIG_MODULES | ||
572 | #define module_find_bug(x) NULL | ||
573 | #endif | ||
574 | |||
575 | struct bug_entry *find_bug(unsigned long bugaddr) | ||
576 | { | 564 | { |
577 | struct bug_entry *bug; | 565 | return addr >= PAGE_OFFSET; |
578 | |||
579 | for (bug = __start___bug_table; bug < __stop___bug_table; ++bug) | ||
580 | if (bugaddr == bug->bug_addr) | ||
581 | return bug; | ||
582 | return module_find_bug(bugaddr); | ||
583 | } | ||
584 | |||
585 | int check_bug_trap(struct pt_regs *regs) | ||
586 | { | ||
587 | struct bug_entry *bug; | ||
588 | unsigned long addr; | ||
589 | |||
590 | if (regs->msr & MSR_PR) | ||
591 | return 0; /* not in kernel */ | ||
592 | addr = regs->nip; /* address of trap instruction */ | ||
593 | if (addr < PAGE_OFFSET) | ||
594 | return 0; | ||
595 | bug = find_bug(regs->nip); | ||
596 | if (bug == NULL) | ||
597 | return 0; | ||
598 | if (bug->line & BUG_WARNING_TRAP) { | ||
599 | /* this is a WARN_ON rather than BUG/BUG_ON */ | ||
600 | #ifdef CONFIG_XMON | ||
601 | xmon_printf(KERN_ERR "Badness in %s at %s:%ld\n", | ||
602 | bug->function, bug->file, | ||
603 | bug->line & ~BUG_WARNING_TRAP); | ||
604 | #endif /* CONFIG_XMON */ | ||
605 | printk(KERN_ERR "Badness in %s at %s:%ld\n", | ||
606 | bug->function, bug->file, | ||
607 | bug->line & ~BUG_WARNING_TRAP); | ||
608 | dump_stack(); | ||
609 | return 1; | ||
610 | } | ||
611 | #ifdef CONFIG_XMON | ||
612 | xmon_printf(KERN_CRIT "kernel BUG in %s at %s:%ld!\n", | ||
613 | bug->function, bug->file, bug->line); | ||
614 | xmon(regs); | ||
615 | #endif /* CONFIG_XMON */ | ||
616 | printk(KERN_CRIT "kernel BUG in %s at %s:%ld!\n", | ||
617 | bug->function, bug->file, bug->line); | ||
618 | |||
619 | return 0; | ||
620 | } | 566 | } |
621 | 567 | ||
622 | void program_check_exception(struct pt_regs *regs) | 568 | void program_check_exception(struct pt_regs *regs) |
@@ -671,7 +617,9 @@ void program_check_exception(struct pt_regs *regs) | |||
671 | /* trap exception */ | 617 | /* trap exception */ |
672 | if (debugger_bpt(regs)) | 618 | if (debugger_bpt(regs)) |
673 | return; | 619 | return; |
674 | if (check_bug_trap(regs)) { | 620 | |
621 | if (!(regs->msr & MSR_PR) && /* not user-mode */ | ||
622 | report_bug(regs->nip) == BUG_TRAP_TYPE_WARN) { | ||
675 | regs->nip += 4; | 623 | regs->nip += 4; |
676 | return; | 624 | return; |
677 | } | 625 | } |
diff --git a/arch/ppc/kernel/vmlinux.lds.S b/arch/ppc/kernel/vmlinux.lds.S index 16e8661e1fec..61921268a0d0 100644 --- a/arch/ppc/kernel/vmlinux.lds.S +++ b/arch/ppc/kernel/vmlinux.lds.S | |||
@@ -31,6 +31,7 @@ SECTIONS | |||
31 | .plt : { *(.plt) } | 31 | .plt : { *(.plt) } |
32 | .text : | 32 | .text : |
33 | { | 33 | { |
34 | _text = .; | ||
34 | *(.text) | 35 | *(.text) |
35 | SCHED_TEXT | 36 | SCHED_TEXT |
36 | LOCK_TEXT | 37 | LOCK_TEXT |
diff --git a/arch/ppc/platforms/4xx/Kconfig b/arch/ppc/platforms/4xx/Kconfig index 293bd489e7d9..6980de420e92 100644 --- a/arch/ppc/platforms/4xx/Kconfig +++ b/arch/ppc/platforms/4xx/Kconfig | |||
@@ -189,7 +189,7 @@ config BIOS_FIXUP | |||
189 | # OAK doesn't exist but wanted to keep this around for any future 403GCX boards | 189 | # OAK doesn't exist but wanted to keep this around for any future 403GCX boards |
190 | config 403GCX | 190 | config 403GCX |
191 | bool | 191 | bool |
192 | depends OAK | 192 | depends on OAK |
193 | default y | 193 | default y |
194 | 194 | ||
195 | config 405EP | 195 | config 405EP |
diff --git a/arch/ppc/platforms/4xx/bubinga.c b/arch/ppc/platforms/4xx/bubinga.c index 4009f4983ca6..75857b38e894 100644 --- a/arch/ppc/platforms/4xx/bubinga.c +++ b/arch/ppc/platforms/4xx/bubinga.c | |||
@@ -116,6 +116,7 @@ bubinga_early_serial_map(void) | |||
116 | void __init | 116 | void __init |
117 | bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip) | 117 | bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip) |
118 | { | 118 | { |
119 | #ifdef CONFIG_PCI | ||
119 | 120 | ||
120 | unsigned int bar_response, bar; | 121 | unsigned int bar_response, bar; |
121 | /* | 122 | /* |
@@ -212,6 +213,7 @@ bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip) | |||
212 | printk(" ptm2la\t0x%x\n", in_le32(&(pcip->ptm2la))); | 213 | printk(" ptm2la\t0x%x\n", in_le32(&(pcip->ptm2la))); |
213 | 214 | ||
214 | #endif | 215 | #endif |
216 | #endif | ||
215 | } | 217 | } |
216 | 218 | ||
217 | void __init | 219 | void __init |
diff --git a/arch/ppc/platforms/4xx/cpci405.c b/arch/ppc/platforms/4xx/cpci405.c index 367430998fc5..8474b05b795a 100644 --- a/arch/ppc/platforms/4xx/cpci405.c +++ b/arch/ppc/platforms/4xx/cpci405.c | |||
@@ -126,6 +126,7 @@ cpci405_setup_arch(void) | |||
126 | void __init | 126 | void __init |
127 | bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip) | 127 | bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip) |
128 | { | 128 | { |
129 | #ifdef CONFIG_PCI | ||
129 | unsigned int bar_response, bar; | 130 | unsigned int bar_response, bar; |
130 | 131 | ||
131 | /* Disable region first */ | 132 | /* Disable region first */ |
@@ -167,6 +168,7 @@ bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip) | |||
167 | PCI_FUNC(hose->first_busno), bar, | 168 | PCI_FUNC(hose->first_busno), bar, |
168 | &bar_response); | 169 | &bar_response); |
169 | } | 170 | } |
171 | #endif | ||
170 | } | 172 | } |
171 | 173 | ||
172 | void __init | 174 | void __init |
diff --git a/arch/ppc/platforms/4xx/ep405.c b/arch/ppc/platforms/4xx/ep405.c index ae5c82081c95..e5adf9ba1fca 100644 --- a/arch/ppc/platforms/4xx/ep405.c +++ b/arch/ppc/platforms/4xx/ep405.c | |||
@@ -68,6 +68,7 @@ ep405_setup_arch(void) | |||
68 | void __init | 68 | void __init |
69 | bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip) | 69 | bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip) |
70 | { | 70 | { |
71 | #ifdef CONFIG_PCI | ||
71 | unsigned int bar_response, bar; | 72 | unsigned int bar_response, bar; |
72 | /* | 73 | /* |
73 | * Expected PCI mapping: | 74 | * Expected PCI mapping: |
@@ -130,6 +131,7 @@ bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip) | |||
130 | PCI_FUNC(hose->first_busno), bar, bar_response); | 131 | PCI_FUNC(hose->first_busno), bar, bar_response); |
131 | } | 132 | } |
132 | /* end work arround */ | 133 | /* end work arround */ |
134 | #endif | ||
133 | } | 135 | } |
134 | 136 | ||
135 | void __init | 137 | void __init |
diff --git a/arch/ppc/platforms/83xx/mpc834x_sys.c b/arch/ppc/platforms/83xx/mpc834x_sys.c index 3397f0de1592..b84f8df325c4 100644 --- a/arch/ppc/platforms/83xx/mpc834x_sys.c +++ b/arch/ppc/platforms/83xx/mpc834x_sys.c | |||
@@ -121,8 +121,8 @@ mpc834x_sys_setup_arch(void) | |||
121 | 121 | ||
122 | mdata->irq[0] = MPC83xx_IRQ_EXT1; | 122 | mdata->irq[0] = MPC83xx_IRQ_EXT1; |
123 | mdata->irq[1] = MPC83xx_IRQ_EXT2; | 123 | mdata->irq[1] = MPC83xx_IRQ_EXT2; |
124 | mdata->irq[2] = -1; | 124 | mdata->irq[2] = PHY_POLL; |
125 | mdata->irq[31] = -1; | 125 | mdata->irq[31] = PHY_POLL; |
126 | 126 | ||
127 | /* setup the board related information for the enet controllers */ | 127 | /* setup the board related information for the enet controllers */ |
128 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC83xx_TSEC1); | 128 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC83xx_TSEC1); |
diff --git a/arch/ppc/platforms/85xx/mpc8540_ads.c b/arch/ppc/platforms/85xx/mpc8540_ads.c index 4f839da6782f..00a3ba57063f 100644 --- a/arch/ppc/platforms/85xx/mpc8540_ads.c +++ b/arch/ppc/platforms/85xx/mpc8540_ads.c | |||
@@ -92,9 +92,9 @@ mpc8540ads_setup_arch(void) | |||
92 | 92 | ||
93 | mdata->irq[0] = MPC85xx_IRQ_EXT5; | 93 | mdata->irq[0] = MPC85xx_IRQ_EXT5; |
94 | mdata->irq[1] = MPC85xx_IRQ_EXT5; | 94 | mdata->irq[1] = MPC85xx_IRQ_EXT5; |
95 | mdata->irq[2] = -1; | 95 | mdata->irq[2] = PHY_POLL; |
96 | mdata->irq[3] = MPC85xx_IRQ_EXT5; | 96 | mdata->irq[3] = MPC85xx_IRQ_EXT5; |
97 | mdata->irq[31] = -1; | 97 | mdata->irq[31] = PHY_POLL; |
98 | 98 | ||
99 | /* setup the board related information for the enet controllers */ | 99 | /* setup the board related information for the enet controllers */ |
100 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); | 100 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); |
diff --git a/arch/ppc/platforms/85xx/mpc8560_ads.c b/arch/ppc/platforms/85xx/mpc8560_ads.c index 14ecec7bbed7..3a060468dd95 100644 --- a/arch/ppc/platforms/85xx/mpc8560_ads.c +++ b/arch/ppc/platforms/85xx/mpc8560_ads.c | |||
@@ -156,9 +156,9 @@ mpc8560ads_setup_arch(void) | |||
156 | 156 | ||
157 | mdata->irq[0] = MPC85xx_IRQ_EXT5; | 157 | mdata->irq[0] = MPC85xx_IRQ_EXT5; |
158 | mdata->irq[1] = MPC85xx_IRQ_EXT5; | 158 | mdata->irq[1] = MPC85xx_IRQ_EXT5; |
159 | mdata->irq[2] = -1; | 159 | mdata->irq[2] = PHY_POLL; |
160 | mdata->irq[3] = MPC85xx_IRQ_EXT5; | 160 | mdata->irq[3] = MPC85xx_IRQ_EXT5; |
161 | mdata->irq[31] = -1; | 161 | mdata->irq[31] = PHY_POLL; |
162 | 162 | ||
163 | /* setup the board related information for the enet controllers */ | 163 | /* setup the board related information for the enet controllers */ |
164 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); | 164 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); |
diff --git a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c index 5ce0f69c1db6..2d59eb776c95 100644 --- a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c +++ b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c | |||
@@ -451,9 +451,9 @@ mpc85xx_cds_setup_arch(void) | |||
451 | 451 | ||
452 | mdata->irq[0] = MPC85xx_IRQ_EXT5; | 452 | mdata->irq[0] = MPC85xx_IRQ_EXT5; |
453 | mdata->irq[1] = MPC85xx_IRQ_EXT5; | 453 | mdata->irq[1] = MPC85xx_IRQ_EXT5; |
454 | mdata->irq[2] = -1; | 454 | mdata->irq[2] = PHY_POLL; |
455 | mdata->irq[3] = -1; | 455 | mdata->irq[3] = PHY_POLL; |
456 | mdata->irq[31] = -1; | 456 | mdata->irq[31] = PHY_POLL; |
457 | 457 | ||
458 | /* setup the board related information for the enet controllers */ | 458 | /* setup the board related information for the enet controllers */ |
459 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); | 459 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); |
diff --git a/arch/ppc/platforms/85xx/sbc8560.c b/arch/ppc/platforms/85xx/sbc8560.c index 764d580ff535..1d10ab98f66d 100644 --- a/arch/ppc/platforms/85xx/sbc8560.c +++ b/arch/ppc/platforms/85xx/sbc8560.c | |||
@@ -129,7 +129,7 @@ sbc8560_setup_arch(void) | |||
129 | 129 | ||
130 | mdata->irq[25] = MPC85xx_IRQ_EXT6; | 130 | mdata->irq[25] = MPC85xx_IRQ_EXT6; |
131 | mdata->irq[26] = MPC85xx_IRQ_EXT7; | 131 | mdata->irq[26] = MPC85xx_IRQ_EXT7; |
132 | mdata->irq[31] = -1; | 132 | mdata->irq[31] = PHY_POLL; |
133 | 133 | ||
134 | /* setup the board related information for the enet controllers */ | 134 | /* setup the board related information for the enet controllers */ |
135 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); | 135 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); |
diff --git a/arch/ppc/platforms/85xx/stx_gp3.c b/arch/ppc/platforms/85xx/stx_gp3.c index 4bb18ab27672..b1f5b737c70d 100644 --- a/arch/ppc/platforms/85xx/stx_gp3.c +++ b/arch/ppc/platforms/85xx/stx_gp3.c | |||
@@ -123,7 +123,7 @@ gp3_setup_arch(void) | |||
123 | 123 | ||
124 | mdata->irq[2] = MPC85xx_IRQ_EXT5; | 124 | mdata->irq[2] = MPC85xx_IRQ_EXT5; |
125 | mdata->irq[4] = MPC85xx_IRQ_EXT5; | 125 | mdata->irq[4] = MPC85xx_IRQ_EXT5; |
126 | mdata->irq[31] = -1; | 126 | mdata->irq[31] = PHY_POLL; |
127 | 127 | ||
128 | /* setup the board related information for the enet controllers */ | 128 | /* setup the board related information for the enet controllers */ |
129 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); | 129 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); |
diff --git a/arch/ppc/platforms/85xx/tqm85xx.c b/arch/ppc/platforms/85xx/tqm85xx.c index dd45f2e18449..4ee2bd156dc5 100644 --- a/arch/ppc/platforms/85xx/tqm85xx.c +++ b/arch/ppc/platforms/85xx/tqm85xx.c | |||
@@ -137,9 +137,9 @@ tqm85xx_setup_arch(void) | |||
137 | 137 | ||
138 | mdata->irq[0] = MPC85xx_IRQ_EXT8; | 138 | mdata->irq[0] = MPC85xx_IRQ_EXT8; |
139 | mdata->irq[1] = MPC85xx_IRQ_EXT8; | 139 | mdata->irq[1] = MPC85xx_IRQ_EXT8; |
140 | mdata->irq[2] = -1; | 140 | mdata->irq[2] = PHY_POLL; |
141 | mdata->irq[3] = MPC85xx_IRQ_EXT8; | 141 | mdata->irq[3] = MPC85xx_IRQ_EXT8; |
142 | mdata->irq[31] = -1; | 142 | mdata->irq[31] = PHY_POLL; |
143 | 143 | ||
144 | /* setup the board related information for the enet controllers */ | 144 | /* setup the board related information for the enet controllers */ |
145 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); | 145 | pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1); |
diff --git a/arch/ppc/platforms/mpc8272ads_setup.c b/arch/ppc/platforms/mpc8272ads_setup.c index 1f9ea36837b1..0bc06768cf24 100644 --- a/arch/ppc/platforms/mpc8272ads_setup.c +++ b/arch/ppc/platforms/mpc8272ads_setup.c | |||
@@ -266,10 +266,10 @@ static void __init mpc8272ads_fixup_mdio_pdata(struct platform_device *pdev, | |||
266 | int idx) | 266 | int idx) |
267 | { | 267 | { |
268 | m82xx_mii_bb_pdata.irq[0] = PHY_INTERRUPT; | 268 | m82xx_mii_bb_pdata.irq[0] = PHY_INTERRUPT; |
269 | m82xx_mii_bb_pdata.irq[1] = -1; | 269 | m82xx_mii_bb_pdata.irq[1] = PHY_POLL; |
270 | m82xx_mii_bb_pdata.irq[2] = -1; | 270 | m82xx_mii_bb_pdata.irq[2] = PHY_POLL; |
271 | m82xx_mii_bb_pdata.irq[3] = PHY_INTERRUPT; | 271 | m82xx_mii_bb_pdata.irq[3] = PHY_INTERRUPT; |
272 | m82xx_mii_bb_pdata.irq[31] = -1; | 272 | m82xx_mii_bb_pdata.irq[31] = PHY_POLL; |
273 | 273 | ||
274 | 274 | ||
275 | m82xx_mii_bb_pdata.mdio_dat.offset = | 275 | m82xx_mii_bb_pdata.mdio_dat.offset = |
diff --git a/arch/ppc/platforms/mpc866ads_setup.c b/arch/ppc/platforms/mpc866ads_setup.c index e95d2c111747..8a0c07eb4449 100644 --- a/arch/ppc/platforms/mpc866ads_setup.c +++ b/arch/ppc/platforms/mpc866ads_setup.c | |||
@@ -361,7 +361,7 @@ int __init mpc866ads_init(void) | |||
361 | 361 | ||
362 | fmpi->mii_speed = ((((bd->bi_intfreq + 4999999) / 2500000) / 2) & 0x3F) << 1; | 362 | fmpi->mii_speed = ((((bd->bi_intfreq + 4999999) / 2500000) / 2) & 0x3F) << 1; |
363 | /* No PHY interrupt line here */ | 363 | /* No PHY interrupt line here */ |
364 | fmpi->irq[0xf] = -1; | 364 | fmpi->irq[0xf] = PHY_POLL; |
365 | 365 | ||
366 | /* Since either of the uarts could be used as console, they need to ready */ | 366 | /* Since either of the uarts could be used as console, they need to ready */ |
367 | #ifdef CONFIG_SERIAL_CPM_SMC1 | 367 | #ifdef CONFIG_SERIAL_CPM_SMC1 |
@@ -380,7 +380,7 @@ int __init mpc866ads_init(void) | |||
380 | 380 | ||
381 | fmpi->mii_speed = ((((bd->bi_intfreq + 4999999) / 2500000) / 2) & 0x3F) << 1; | 381 | fmpi->mii_speed = ((((bd->bi_intfreq + 4999999) / 2500000) / 2) & 0x3F) << 1; |
382 | /* No PHY interrupt line here */ | 382 | /* No PHY interrupt line here */ |
383 | fmpi->irq[0xf] = -1; | 383 | fmpi->irq[0xf] = PHY_POLL; |
384 | 384 | ||
385 | return 0; | 385 | return 0; |
386 | } | 386 | } |
diff --git a/arch/ppc/syslib/mpc8xx_devices.c b/arch/ppc/syslib/mpc8xx_devices.c index cf5ab47487a7..31fb56593d17 100644 --- a/arch/ppc/syslib/mpc8xx_devices.c +++ b/arch/ppc/syslib/mpc8xx_devices.c | |||
@@ -78,7 +78,7 @@ struct platform_device ppc_sys_platform_devices[] = { | |||
78 | { | 78 | { |
79 | .name = "pram", | 79 | .name = "pram", |
80 | .start = 0x3c00, | 80 | .start = 0x3c00, |
81 | .end = 0x3c80, | 81 | .end = 0x3c7f, |
82 | .flags = IORESOURCE_MEM, | 82 | .flags = IORESOURCE_MEM, |
83 | }, | 83 | }, |
84 | { | 84 | { |
@@ -103,7 +103,7 @@ struct platform_device ppc_sys_platform_devices[] = { | |||
103 | { | 103 | { |
104 | .name = "pram", | 104 | .name = "pram", |
105 | .start = 0x3d00, | 105 | .start = 0x3d00, |
106 | .end = 0x3d80, | 106 | .end = 0x3d7f, |
107 | .flags = IORESOURCE_MEM, | 107 | .flags = IORESOURCE_MEM, |
108 | }, | 108 | }, |
109 | 109 | ||
@@ -129,7 +129,7 @@ struct platform_device ppc_sys_platform_devices[] = { | |||
129 | { | 129 | { |
130 | .name = "pram", | 130 | .name = "pram", |
131 | .start = 0x3e00, | 131 | .start = 0x3e00, |
132 | .end = 0x3e80, | 132 | .end = 0x3e7f, |
133 | .flags = IORESOURCE_MEM, | 133 | .flags = IORESOURCE_MEM, |
134 | }, | 134 | }, |
135 | 135 | ||
@@ -155,7 +155,7 @@ struct platform_device ppc_sys_platform_devices[] = { | |||
155 | { | 155 | { |
156 | .name = "pram", | 156 | .name = "pram", |
157 | .start = 0x3f00, | 157 | .start = 0x3f00, |
158 | .end = 0x3f80, | 158 | .end = 0x3f7f, |
159 | .flags = IORESOURCE_MEM, | 159 | .flags = IORESOURCE_MEM, |
160 | }, | 160 | }, |
161 | 161 | ||