diff options
Diffstat (limited to 'arch/powerpc/sysdev')
-rw-r--r-- | arch/powerpc/sysdev/Kconfig | 2 | ||||
-rw-r--r-- | arch/powerpc/sysdev/axonram.c | 21 | ||||
-rw-r--r-- | arch/powerpc/sysdev/cpm2_pic.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/dart_iommu.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/fsl_ifc.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/fsl_lbc.c | 31 | ||||
-rw-r--r-- | arch/powerpc/sysdev/fsl_pci.c | 5 | ||||
-rw-r--r-- | arch/powerpc/sysdev/ge/ge_pic.h | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/i8259.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/indirect_pci.c | 6 | ||||
-rw-r--r-- | arch/powerpc/sysdev/mpc8xx_pic.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/mpic.c | 38 | ||||
-rw-r--r-- | arch/powerpc/sysdev/mpic_timer.c | 10 | ||||
-rw-r--r-- | arch/powerpc/sysdev/mv64x60_dev.c | 2 | ||||
-rw-r--r-- | arch/powerpc/sysdev/mv64x60_udbg.c | 2 | ||||
-rw-r--r-- | arch/powerpc/sysdev/qe_lib/qe_io.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/qe_lib/ucc.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/qe_lib/ucc_fast.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/qe_lib/ucc_slow.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/udbg_memcons.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/xics/icp-hv.c | 1 |
21 files changed, 72 insertions, 57 deletions
diff --git a/arch/powerpc/sysdev/Kconfig b/arch/powerpc/sysdev/Kconfig index 13ec968be4c7..7baa70d6dc01 100644 --- a/arch/powerpc/sysdev/Kconfig +++ b/arch/powerpc/sysdev/Kconfig | |||
@@ -19,7 +19,7 @@ config PPC_MSI_BITMAP | |||
19 | default y if MPIC | 19 | default y if MPIC |
20 | default y if FSL_PCI | 20 | default y if FSL_PCI |
21 | default y if PPC4xx_MSI | 21 | default y if PPC4xx_MSI |
22 | default y if POWERNV_MSI | 22 | default y if PPC_POWERNV |
23 | 23 | ||
24 | source "arch/powerpc/sysdev/xics/Kconfig" | 24 | source "arch/powerpc/sysdev/xics/Kconfig" |
25 | 25 | ||
diff --git a/arch/powerpc/sysdev/axonram.c b/arch/powerpc/sysdev/axonram.c index 1c16141c031c..47b6b9f81d43 100644 --- a/arch/powerpc/sysdev/axonram.c +++ b/arch/powerpc/sysdev/axonram.c | |||
@@ -109,27 +109,28 @@ axon_ram_make_request(struct request_queue *queue, struct bio *bio) | |||
109 | struct axon_ram_bank *bank = bio->bi_bdev->bd_disk->private_data; | 109 | struct axon_ram_bank *bank = bio->bi_bdev->bd_disk->private_data; |
110 | unsigned long phys_mem, phys_end; | 110 | unsigned long phys_mem, phys_end; |
111 | void *user_mem; | 111 | void *user_mem; |
112 | struct bio_vec *vec; | 112 | struct bio_vec vec; |
113 | unsigned int transfered; | 113 | unsigned int transfered; |
114 | unsigned short idx; | 114 | struct bvec_iter iter; |
115 | 115 | ||
116 | phys_mem = bank->io_addr + (bio->bi_sector << AXON_RAM_SECTOR_SHIFT); | 116 | phys_mem = bank->io_addr + (bio->bi_iter.bi_sector << |
117 | AXON_RAM_SECTOR_SHIFT); | ||
117 | phys_end = bank->io_addr + bank->size; | 118 | phys_end = bank->io_addr + bank->size; |
118 | transfered = 0; | 119 | transfered = 0; |
119 | bio_for_each_segment(vec, bio, idx) { | 120 | bio_for_each_segment(vec, bio, iter) { |
120 | if (unlikely(phys_mem + vec->bv_len > phys_end)) { | 121 | if (unlikely(phys_mem + vec.bv_len > phys_end)) { |
121 | bio_io_error(bio); | 122 | bio_io_error(bio); |
122 | return; | 123 | return; |
123 | } | 124 | } |
124 | 125 | ||
125 | user_mem = page_address(vec->bv_page) + vec->bv_offset; | 126 | user_mem = page_address(vec.bv_page) + vec.bv_offset; |
126 | if (bio_data_dir(bio) == READ) | 127 | if (bio_data_dir(bio) == READ) |
127 | memcpy(user_mem, (void *) phys_mem, vec->bv_len); | 128 | memcpy(user_mem, (void *) phys_mem, vec.bv_len); |
128 | else | 129 | else |
129 | memcpy((void *) phys_mem, user_mem, vec->bv_len); | 130 | memcpy((void *) phys_mem, user_mem, vec.bv_len); |
130 | 131 | ||
131 | phys_mem += vec->bv_len; | 132 | phys_mem += vec.bv_len; |
132 | transfered += vec->bv_len; | 133 | transfered += vec.bv_len; |
133 | } | 134 | } |
134 | bio_endio(bio, 0); | 135 | bio_endio(bio, 0); |
135 | } | 136 | } |
diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c index 10386b676d87..a11bd1d433ad 100644 --- a/arch/powerpc/sysdev/cpm2_pic.c +++ b/arch/powerpc/sysdev/cpm2_pic.c | |||
@@ -27,7 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include <linux/stddef.h> | 29 | #include <linux/stddef.h> |
30 | #include <linux/init.h> | ||
31 | #include <linux/sched.h> | 30 | #include <linux/sched.h> |
32 | #include <linux/signal.h> | 31 | #include <linux/signal.h> |
33 | #include <linux/irq.h> | 32 | #include <linux/irq.h> |
diff --git a/arch/powerpc/sysdev/dart_iommu.c b/arch/powerpc/sysdev/dart_iommu.c index bd968a43a48b..62c47bb76517 100644 --- a/arch/powerpc/sysdev/dart_iommu.c +++ b/arch/powerpc/sysdev/dart_iommu.c | |||
@@ -292,6 +292,7 @@ static void iommu_table_dart_setup(void) | |||
292 | iommu_table_dart.it_offset = 0; | 292 | iommu_table_dart.it_offset = 0; |
293 | /* it_size is in number of entries */ | 293 | /* it_size is in number of entries */ |
294 | iommu_table_dart.it_size = dart_tablesize / sizeof(u32); | 294 | iommu_table_dart.it_size = dart_tablesize / sizeof(u32); |
295 | iommu_table_dart.it_page_shift = IOMMU_PAGE_SHIFT_4K; | ||
295 | 296 | ||
296 | /* Initialize the common IOMMU code */ | 297 | /* Initialize the common IOMMU code */ |
297 | iommu_table_dart.it_base = (unsigned long)dart_vbase; | 298 | iommu_table_dart.it_base = (unsigned long)dart_vbase; |
diff --git a/arch/powerpc/sysdev/fsl_ifc.c b/arch/powerpc/sysdev/fsl_ifc.c index d7fc72239144..fbc885b31946 100644 --- a/arch/powerpc/sysdev/fsl_ifc.c +++ b/arch/powerpc/sysdev/fsl_ifc.c | |||
@@ -19,7 +19,6 @@ | |||
19 | * along with this program; if not, write to the Free Software | 19 | * along with this program; if not, write to the Free Software |
20 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 20 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
21 | */ | 21 | */ |
22 | #include <linux/init.h> | ||
23 | #include <linux/module.h> | 22 | #include <linux/module.h> |
24 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
25 | #include <linux/compiler.h> | 24 | #include <linux/compiler.h> |
diff --git a/arch/powerpc/sysdev/fsl_lbc.c b/arch/powerpc/sysdev/fsl_lbc.c index 6bc5a546d49f..d631022ffb4b 100644 --- a/arch/powerpc/sysdev/fsl_lbc.c +++ b/arch/powerpc/sysdev/fsl_lbc.c | |||
@@ -214,10 +214,14 @@ static irqreturn_t fsl_lbc_ctrl_irq(int irqno, void *data) | |||
214 | struct fsl_lbc_ctrl *ctrl = data; | 214 | struct fsl_lbc_ctrl *ctrl = data; |
215 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; | 215 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
216 | u32 status; | 216 | u32 status; |
217 | unsigned long flags; | ||
217 | 218 | ||
219 | spin_lock_irqsave(&fsl_lbc_lock, flags); | ||
218 | status = in_be32(&lbc->ltesr); | 220 | status = in_be32(&lbc->ltesr); |
219 | if (!status) | 221 | if (!status) { |
222 | spin_unlock_irqrestore(&fsl_lbc_lock, flags); | ||
220 | return IRQ_NONE; | 223 | return IRQ_NONE; |
224 | } | ||
221 | 225 | ||
222 | out_be32(&lbc->ltesr, LTESR_CLEAR); | 226 | out_be32(&lbc->ltesr, LTESR_CLEAR); |
223 | out_be32(&lbc->lteatr, 0); | 227 | out_be32(&lbc->lteatr, 0); |
@@ -260,6 +264,7 @@ static irqreturn_t fsl_lbc_ctrl_irq(int irqno, void *data) | |||
260 | if (status & ~LTESR_MASK) | 264 | if (status & ~LTESR_MASK) |
261 | dev_err(ctrl->dev, "Unknown error: " | 265 | dev_err(ctrl->dev, "Unknown error: " |
262 | "LTESR 0x%08X\n", status); | 266 | "LTESR 0x%08X\n", status); |
267 | spin_unlock_irqrestore(&fsl_lbc_lock, flags); | ||
263 | return IRQ_HANDLED; | 268 | return IRQ_HANDLED; |
264 | } | 269 | } |
265 | 270 | ||
@@ -298,8 +303,8 @@ static int fsl_lbc_ctrl_probe(struct platform_device *dev) | |||
298 | goto err; | 303 | goto err; |
299 | } | 304 | } |
300 | 305 | ||
301 | fsl_lbc_ctrl_dev->irq = irq_of_parse_and_map(dev->dev.of_node, 0); | 306 | fsl_lbc_ctrl_dev->irq[0] = irq_of_parse_and_map(dev->dev.of_node, 0); |
302 | if (fsl_lbc_ctrl_dev->irq == NO_IRQ) { | 307 | if (!fsl_lbc_ctrl_dev->irq[0]) { |
303 | dev_err(&dev->dev, "failed to get irq resource\n"); | 308 | dev_err(&dev->dev, "failed to get irq resource\n"); |
304 | ret = -ENODEV; | 309 | ret = -ENODEV; |
305 | goto err; | 310 | goto err; |
@@ -311,20 +316,34 @@ static int fsl_lbc_ctrl_probe(struct platform_device *dev) | |||
311 | if (ret < 0) | 316 | if (ret < 0) |
312 | goto err; | 317 | goto err; |
313 | 318 | ||
314 | ret = request_irq(fsl_lbc_ctrl_dev->irq, fsl_lbc_ctrl_irq, 0, | 319 | ret = request_irq(fsl_lbc_ctrl_dev->irq[0], fsl_lbc_ctrl_irq, 0, |
315 | "fsl-lbc", fsl_lbc_ctrl_dev); | 320 | "fsl-lbc", fsl_lbc_ctrl_dev); |
316 | if (ret != 0) { | 321 | if (ret != 0) { |
317 | dev_err(&dev->dev, "failed to install irq (%d)\n", | 322 | dev_err(&dev->dev, "failed to install irq (%d)\n", |
318 | fsl_lbc_ctrl_dev->irq); | 323 | fsl_lbc_ctrl_dev->irq[0]); |
319 | ret = fsl_lbc_ctrl_dev->irq; | 324 | ret = fsl_lbc_ctrl_dev->irq[0]; |
320 | goto err; | 325 | goto err; |
321 | } | 326 | } |
322 | 327 | ||
328 | fsl_lbc_ctrl_dev->irq[1] = irq_of_parse_and_map(dev->dev.of_node, 1); | ||
329 | if (fsl_lbc_ctrl_dev->irq[1]) { | ||
330 | ret = request_irq(fsl_lbc_ctrl_dev->irq[1], fsl_lbc_ctrl_irq, | ||
331 | IRQF_SHARED, "fsl-lbc-err", fsl_lbc_ctrl_dev); | ||
332 | if (ret) { | ||
333 | dev_err(&dev->dev, "failed to install irq (%d)\n", | ||
334 | fsl_lbc_ctrl_dev->irq[1]); | ||
335 | ret = fsl_lbc_ctrl_dev->irq[1]; | ||
336 | goto err1; | ||
337 | } | ||
338 | } | ||
339 | |||
323 | /* Enable interrupts for any detected events */ | 340 | /* Enable interrupts for any detected events */ |
324 | out_be32(&fsl_lbc_ctrl_dev->regs->lteir, LTEIR_ENABLE); | 341 | out_be32(&fsl_lbc_ctrl_dev->regs->lteir, LTEIR_ENABLE); |
325 | 342 | ||
326 | return 0; | 343 | return 0; |
327 | 344 | ||
345 | err1: | ||
346 | free_irq(fsl_lbc_ctrl_dev->irq[0], fsl_lbc_ctrl_dev); | ||
328 | err: | 347 | err: |
329 | iounmap(fsl_lbc_ctrl_dev->regs); | 348 | iounmap(fsl_lbc_ctrl_dev->regs); |
330 | kfree(fsl_lbc_ctrl_dev); | 349 | kfree(fsl_lbc_ctrl_dev); |
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index 4dfd61df8aba..a625dcf26b2b 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c | |||
@@ -122,7 +122,7 @@ static int fsl_pci_dma_set_mask(struct device *dev, u64 dma_mask) | |||
122 | * address width of the SoC such that we can address any internal | 122 | * address width of the SoC such that we can address any internal |
123 | * SoC address from across PCI if needed | 123 | * SoC address from across PCI if needed |
124 | */ | 124 | */ |
125 | if ((dev->bus == &pci_bus_type) && | 125 | if ((dev_is_pci(dev)) && |
126 | dma_mask >= DMA_BIT_MASK(MAX_PHYS_ADDR_BITS)) { | 126 | dma_mask >= DMA_BIT_MASK(MAX_PHYS_ADDR_BITS)) { |
127 | set_dma_ops(dev, &dma_direct_ops); | 127 | set_dma_ops(dev, &dma_direct_ops); |
128 | set_dma_offset(dev, pci64_dma_offset); | 128 | set_dma_offset(dev, pci64_dma_offset); |
@@ -454,7 +454,7 @@ void fsl_pcibios_fixup_bus(struct pci_bus *bus) | |||
454 | } | 454 | } |
455 | } | 455 | } |
456 | 456 | ||
457 | int __init fsl_add_bridge(struct platform_device *pdev, int is_primary) | 457 | int fsl_add_bridge(struct platform_device *pdev, int is_primary) |
458 | { | 458 | { |
459 | int len; | 459 | int len; |
460 | struct pci_controller *hose; | 460 | struct pci_controller *hose; |
@@ -1035,6 +1035,7 @@ static const struct of_device_id pci_ids[] = { | |||
1035 | { .compatible = "fsl,mpc8548-pcie", }, | 1035 | { .compatible = "fsl,mpc8548-pcie", }, |
1036 | { .compatible = "fsl,mpc8610-pci", }, | 1036 | { .compatible = "fsl,mpc8610-pci", }, |
1037 | { .compatible = "fsl,mpc8641-pcie", }, | 1037 | { .compatible = "fsl,mpc8641-pcie", }, |
1038 | { .compatible = "fsl,qoriq-pcie", }, | ||
1038 | { .compatible = "fsl,qoriq-pcie-v2.1", }, | 1039 | { .compatible = "fsl,qoriq-pcie-v2.1", }, |
1039 | { .compatible = "fsl,qoriq-pcie-v2.2", }, | 1040 | { .compatible = "fsl,qoriq-pcie-v2.2", }, |
1040 | { .compatible = "fsl,qoriq-pcie-v2.3", }, | 1041 | { .compatible = "fsl,qoriq-pcie-v2.3", }, |
diff --git a/arch/powerpc/sysdev/ge/ge_pic.h b/arch/powerpc/sysdev/ge/ge_pic.h index 6149916da3f4..908dbd9826b6 100644 --- a/arch/powerpc/sysdev/ge/ge_pic.h +++ b/arch/powerpc/sysdev/ge/ge_pic.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef __GEF_PIC_H__ | 1 | #ifndef __GEF_PIC_H__ |
2 | #define __GEF_PIC_H__ | 2 | #define __GEF_PIC_H__ |
3 | 3 | ||
4 | #include <linux/init.h> | ||
5 | 4 | ||
6 | void gef_pic_cascade(unsigned int, struct irq_desc *); | 5 | void gef_pic_cascade(unsigned int, struct irq_desc *); |
7 | unsigned int gef_pic_get_irq(void); | 6 | unsigned int gef_pic_get_irq(void); |
diff --git a/arch/powerpc/sysdev/i8259.c b/arch/powerpc/sysdev/i8259.c index 997df6a7ab5d..45598da0b321 100644 --- a/arch/powerpc/sysdev/i8259.c +++ b/arch/powerpc/sysdev/i8259.c | |||
@@ -8,7 +8,6 @@ | |||
8 | */ | 8 | */ |
9 | #undef DEBUG | 9 | #undef DEBUG |
10 | 10 | ||
11 | #include <linux/init.h> | ||
12 | #include <linux/ioport.h> | 11 | #include <linux/ioport.h> |
13 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
14 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
diff --git a/arch/powerpc/sysdev/indirect_pci.c b/arch/powerpc/sysdev/indirect_pci.c index c6c8b526a4f6..1f6c570d66d4 100644 --- a/arch/powerpc/sysdev/indirect_pci.c +++ b/arch/powerpc/sysdev/indirect_pci.c | |||
@@ -152,10 +152,8 @@ static struct pci_ops indirect_pci_ops = | |||
152 | .write = indirect_write_config, | 152 | .write = indirect_write_config, |
153 | }; | 153 | }; |
154 | 154 | ||
155 | void __init | 155 | void setup_indirect_pci(struct pci_controller *hose, resource_size_t cfg_addr, |
156 | setup_indirect_pci(struct pci_controller* hose, | 156 | resource_size_t cfg_data, u32 flags) |
157 | resource_size_t cfg_addr, | ||
158 | resource_size_t cfg_data, u32 flags) | ||
159 | { | 157 | { |
160 | resource_size_t base = cfg_addr & PAGE_MASK; | 158 | resource_size_t base = cfg_addr & PAGE_MASK; |
161 | void __iomem *mbase; | 159 | void __iomem *mbase; |
diff --git a/arch/powerpc/sysdev/mpc8xx_pic.c b/arch/powerpc/sysdev/mpc8xx_pic.c index b724622c3a0b..c4828c0be5bd 100644 --- a/arch/powerpc/sysdev/mpc8xx_pic.c +++ b/arch/powerpc/sysdev/mpc8xx_pic.c | |||
@@ -1,6 +1,5 @@ | |||
1 | #include <linux/kernel.h> | 1 | #include <linux/kernel.h> |
2 | #include <linux/stddef.h> | 2 | #include <linux/stddef.h> |
3 | #include <linux/init.h> | ||
4 | #include <linux/sched.h> | 3 | #include <linux/sched.h> |
5 | #include <linux/signal.h> | 4 | #include <linux/signal.h> |
6 | #include <linux/irq.h> | 5 | #include <linux/irq.h> |
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 0e166ed4cd16..8209744b2829 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -886,25 +886,25 @@ int mpic_set_irq_type(struct irq_data *d, unsigned int flow_type) | |||
886 | 886 | ||
887 | /* Default: read HW settings */ | 887 | /* Default: read HW settings */ |
888 | if (flow_type == IRQ_TYPE_DEFAULT) { | 888 | if (flow_type == IRQ_TYPE_DEFAULT) { |
889 | switch(vold & (MPIC_INFO(VECPRI_POLARITY_MASK) | | 889 | int vold_ps; |
890 | MPIC_INFO(VECPRI_SENSE_MASK))) { | 890 | |
891 | case MPIC_INFO(VECPRI_SENSE_EDGE) | | 891 | vold_ps = vold & (MPIC_INFO(VECPRI_POLARITY_MASK) | |
892 | MPIC_INFO(VECPRI_POLARITY_POSITIVE): | 892 | MPIC_INFO(VECPRI_SENSE_MASK)); |
893 | flow_type = IRQ_TYPE_EDGE_RISING; | 893 | |
894 | break; | 894 | if (vold_ps == (MPIC_INFO(VECPRI_SENSE_EDGE) | |
895 | case MPIC_INFO(VECPRI_SENSE_EDGE) | | 895 | MPIC_INFO(VECPRI_POLARITY_POSITIVE))) |
896 | MPIC_INFO(VECPRI_POLARITY_NEGATIVE): | 896 | flow_type = IRQ_TYPE_EDGE_RISING; |
897 | flow_type = IRQ_TYPE_EDGE_FALLING; | 897 | else if (vold_ps == (MPIC_INFO(VECPRI_SENSE_EDGE) | |
898 | break; | 898 | MPIC_INFO(VECPRI_POLARITY_NEGATIVE))) |
899 | case MPIC_INFO(VECPRI_SENSE_LEVEL) | | 899 | flow_type = IRQ_TYPE_EDGE_FALLING; |
900 | MPIC_INFO(VECPRI_POLARITY_POSITIVE): | 900 | else if (vold_ps == (MPIC_INFO(VECPRI_SENSE_LEVEL) | |
901 | flow_type = IRQ_TYPE_LEVEL_HIGH; | 901 | MPIC_INFO(VECPRI_POLARITY_POSITIVE))) |
902 | break; | 902 | flow_type = IRQ_TYPE_LEVEL_HIGH; |
903 | case MPIC_INFO(VECPRI_SENSE_LEVEL) | | 903 | else if (vold_ps == (MPIC_INFO(VECPRI_SENSE_LEVEL) | |
904 | MPIC_INFO(VECPRI_POLARITY_NEGATIVE): | 904 | MPIC_INFO(VECPRI_POLARITY_NEGATIVE))) |
905 | flow_type = IRQ_TYPE_LEVEL_LOW; | 905 | flow_type = IRQ_TYPE_LEVEL_LOW; |
906 | break; | 906 | else |
907 | } | 907 | WARN_ONCE(1, "mpic: unknown IRQ type %d\n", vold); |
908 | } | 908 | } |
909 | 909 | ||
910 | /* Apply to irq desc */ | 910 | /* Apply to irq desc */ |
diff --git a/arch/powerpc/sysdev/mpic_timer.c b/arch/powerpc/sysdev/mpic_timer.c index 22d7d57eead9..9d9b06217f8b 100644 --- a/arch/powerpc/sysdev/mpic_timer.c +++ b/arch/powerpc/sysdev/mpic_timer.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #define MPIC_TIMER_TCR_ROVR_OFFSET 24 | 41 | #define MPIC_TIMER_TCR_ROVR_OFFSET 24 |
42 | 42 | ||
43 | #define TIMER_STOP 0x80000000 | 43 | #define TIMER_STOP 0x80000000 |
44 | #define GTCCR_TOG 0x80000000 | ||
44 | #define TIMERS_PER_GROUP 4 | 45 | #define TIMERS_PER_GROUP 4 |
45 | #define MAX_TICKS (~0U >> 1) | 46 | #define MAX_TICKS (~0U >> 1) |
46 | #define MAX_TICKS_CASCADE (~0U) | 47 | #define MAX_TICKS_CASCADE (~0U) |
@@ -96,8 +97,11 @@ static void convert_ticks_to_time(struct timer_group_priv *priv, | |||
96 | time->tv_sec = (__kernel_time_t)div_u64(ticks, priv->timerfreq); | 97 | time->tv_sec = (__kernel_time_t)div_u64(ticks, priv->timerfreq); |
97 | tmp_sec = (u64)time->tv_sec * (u64)priv->timerfreq; | 98 | tmp_sec = (u64)time->tv_sec * (u64)priv->timerfreq; |
98 | 99 | ||
99 | time->tv_usec = (__kernel_suseconds_t) | 100 | time->tv_usec = 0; |
100 | div_u64((ticks - tmp_sec) * 1000000, priv->timerfreq); | 101 | |
102 | if (tmp_sec <= ticks) | ||
103 | time->tv_usec = (__kernel_suseconds_t) | ||
104 | div_u64((ticks - tmp_sec) * 1000000, priv->timerfreq); | ||
101 | 105 | ||
102 | return; | 106 | return; |
103 | } | 107 | } |
@@ -327,11 +331,13 @@ void mpic_get_remain_time(struct mpic_timer *handle, struct timeval *time) | |||
327 | casc_priv = priv->timer[handle->num].cascade_handle; | 331 | casc_priv = priv->timer[handle->num].cascade_handle; |
328 | if (casc_priv) { | 332 | if (casc_priv) { |
329 | tmp_ticks = in_be32(&priv->regs[handle->num].gtccr); | 333 | tmp_ticks = in_be32(&priv->regs[handle->num].gtccr); |
334 | tmp_ticks &= ~GTCCR_TOG; | ||
330 | ticks = ((u64)tmp_ticks & UINT_MAX) * (u64)MAX_TICKS_CASCADE; | 335 | ticks = ((u64)tmp_ticks & UINT_MAX) * (u64)MAX_TICKS_CASCADE; |
331 | tmp_ticks = in_be32(&priv->regs[handle->num - 1].gtccr); | 336 | tmp_ticks = in_be32(&priv->regs[handle->num - 1].gtccr); |
332 | ticks += tmp_ticks; | 337 | ticks += tmp_ticks; |
333 | } else { | 338 | } else { |
334 | ticks = in_be32(&priv->regs[handle->num].gtccr); | 339 | ticks = in_be32(&priv->regs[handle->num].gtccr); |
340 | ticks &= ~GTCCR_TOG; | ||
335 | } | 341 | } |
336 | 342 | ||
337 | convert_ticks_to_time(priv, ticks, time); | 343 | convert_ticks_to_time(priv, ticks, time); |
diff --git a/arch/powerpc/sysdev/mv64x60_dev.c b/arch/powerpc/sysdev/mv64x60_dev.c index a3a8fad8537d..c2dba7db71ad 100644 --- a/arch/powerpc/sysdev/mv64x60_dev.c +++ b/arch/powerpc/sysdev/mv64x60_dev.c | |||
@@ -448,7 +448,7 @@ static int __init mv64x60_device_setup(void) | |||
448 | int err; | 448 | int err; |
449 | 449 | ||
450 | id = 0; | 450 | id = 0; |
451 | for_each_compatible_node(np, "serial", "marvell,mv64360-mpsc") { | 451 | for_each_compatible_node(np, NULL, "marvell,mv64360-mpsc") { |
452 | err = mv64x60_mpsc_device_setup(np, id++); | 452 | err = mv64x60_mpsc_device_setup(np, id++); |
453 | if (err) | 453 | if (err) |
454 | printk(KERN_ERR "Failed to initialize MV64x60 " | 454 | printk(KERN_ERR "Failed to initialize MV64x60 " |
diff --git a/arch/powerpc/sysdev/mv64x60_udbg.c b/arch/powerpc/sysdev/mv64x60_udbg.c index 50a81387e9b1..3b8734b870e9 100644 --- a/arch/powerpc/sysdev/mv64x60_udbg.c +++ b/arch/powerpc/sysdev/mv64x60_udbg.c | |||
@@ -85,7 +85,7 @@ static void mv64x60_udbg_init(void) | |||
85 | if (!stdout) | 85 | if (!stdout) |
86 | return; | 86 | return; |
87 | 87 | ||
88 | for_each_compatible_node(np, "serial", "marvell,mv64360-mpsc") { | 88 | for_each_compatible_node(np, NULL, "marvell,mv64360-mpsc") { |
89 | if (np == stdout) | 89 | if (np == stdout) |
90 | break; | 90 | break; |
91 | } | 91 | } |
diff --git a/arch/powerpc/sysdev/qe_lib/qe_io.c b/arch/powerpc/sysdev/qe_lib/qe_io.c index a88807b3dd57..d09994164daf 100644 --- a/arch/powerpc/sysdev/qe_lib/qe_io.c +++ b/arch/powerpc/sysdev/qe_lib/qe_io.c | |||
@@ -16,7 +16,6 @@ | |||
16 | 16 | ||
17 | #include <linux/stddef.h> | 17 | #include <linux/stddef.h> |
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/init.h> | ||
20 | #include <linux/errno.h> | 19 | #include <linux/errno.h> |
21 | #include <linux/module.h> | 20 | #include <linux/module.h> |
22 | #include <linux/ioport.h> | 21 | #include <linux/ioport.h> |
diff --git a/arch/powerpc/sysdev/qe_lib/ucc.c b/arch/powerpc/sysdev/qe_lib/ucc.c index 134b07d29435..621575b7e84a 100644 --- a/arch/powerpc/sysdev/qe_lib/ucc.c +++ b/arch/powerpc/sysdev/qe_lib/ucc.c | |||
@@ -14,7 +14,6 @@ | |||
14 | * option) any later version. | 14 | * option) any later version. |
15 | */ | 15 | */ |
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/init.h> | ||
18 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
19 | #include <linux/stddef.h> | 18 | #include <linux/stddef.h> |
20 | #include <linux/spinlock.h> | 19 | #include <linux/spinlock.h> |
diff --git a/arch/powerpc/sysdev/qe_lib/ucc_fast.c b/arch/powerpc/sysdev/qe_lib/ucc_fast.c index cceb2e366738..65aaf15032ae 100644 --- a/arch/powerpc/sysdev/qe_lib/ucc_fast.c +++ b/arch/powerpc/sysdev/qe_lib/ucc_fast.c | |||
@@ -13,7 +13,6 @@ | |||
13 | * option) any later version. | 13 | * option) any later version. |
14 | */ | 14 | */ |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | ||
17 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
18 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
19 | #include <linux/stddef.h> | 18 | #include <linux/stddef.h> |
diff --git a/arch/powerpc/sysdev/qe_lib/ucc_slow.c b/arch/powerpc/sysdev/qe_lib/ucc_slow.c index 1c062f48f1ac..befaf1123f7f 100644 --- a/arch/powerpc/sysdev/qe_lib/ucc_slow.c +++ b/arch/powerpc/sysdev/qe_lib/ucc_slow.c | |||
@@ -13,7 +13,6 @@ | |||
13 | * option) any later version. | 13 | * option) any later version. |
14 | */ | 14 | */ |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | ||
17 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
18 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
19 | #include <linux/stddef.h> | 18 | #include <linux/stddef.h> |
diff --git a/arch/powerpc/sysdev/udbg_memcons.c b/arch/powerpc/sysdev/udbg_memcons.c index ce5a7b489e4b..9998c0de12d0 100644 --- a/arch/powerpc/sysdev/udbg_memcons.c +++ b/arch/powerpc/sysdev/udbg_memcons.c | |||
@@ -18,7 +18,6 @@ | |||
18 | * 2 of the License, or (at your option) any later version. | 18 | * 2 of the License, or (at your option) any later version. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/init.h> | ||
22 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
23 | #include <asm/barrier.h> | 22 | #include <asm/barrier.h> |
24 | #include <asm/page.h> | 23 | #include <asm/page.h> |
diff --git a/arch/powerpc/sysdev/xics/icp-hv.c b/arch/powerpc/sysdev/xics/icp-hv.c index df0fc5821469..c1917cf67c3d 100644 --- a/arch/powerpc/sysdev/xics/icp-hv.c +++ b/arch/powerpc/sysdev/xics/icp-hv.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/irq.h> | 12 | #include <linux/irq.h> |
13 | #include <linux/smp.h> | 13 | #include <linux/smp.h> |
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/init.h> | ||
16 | #include <linux/cpu.h> | 15 | #include <linux/cpu.h> |
17 | #include <linux/of.h> | 16 | #include <linux/of.h> |
18 | 17 | ||