Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
Linus Torvalds [Fri, 18 Mar 2011 13:31:43 +0000 (06:31 -0700)]
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (62 commits)
  powerpc/85xx: Fix signedness bug in cache-sram
  powerpc/fsl: 85xx: document cache sram bindings
  powerpc/fsl: define binding for fsl mpic interrupt controllers
  powerpc/fsl_msi: Handle msi-available-ranges better
  drivers/serial/ucc_uart.c: Add of_node_put to avoid memory leak
  powerpc/85xx: Fix SPE float to integer conversion failure
  powerpc/85xx: Update sata controller compatible for p1022ds board
  ATA: Add FSL sata v2 controller support
  powerpc/mpc8xxx_gpio: simplify searching for 'fsl, qoriq-gpio' compatiable
  powerpc/8xx: remove obsolete mgsuvd board
  powerpc/82xx: rename and update mgcoge board support
  powerpc/83xx: rename and update kmeter1
  powerpc/85xx: Workaroudn e500 CPU erratum A005
  powerpc/fsl_pci: Add support for FSL PCIe controllers v2.x
  powerpc/85xx: Fix writing to spin table 'cpu-release-addr' on ppc64e
  powerpc/pseries: Disable MSI using new interface if possible
  powerpc: Enable GENERIC_HARDIRQS_NO_DEPRECATED.
  powerpc: core irq_data conversion.
  powerpc: sysdev/xilinx_intc irq_data conversion.
  powerpc: sysdev/uic irq_data conversion.
  ...

Fix up conflicts in arch/powerpc/sysdev/fsl_msi.c (due to getting rid of
of_platform_driver in arch/powerpc)

1  2 
Documentation/kernel-parameters.txt
arch/powerpc/kernel/machine_kexec.c
arch/powerpc/platforms/52xx/mpc52xx_gpt.c
arch/powerpc/platforms/cell/axon_msi.c
arch/powerpc/sysdev/fsl_85xx_l2ctlr.c
arch/powerpc/sysdev/fsl_msi.c
drivers/ata/sata_fsl.c
drivers/tty/serial/ucc_uart.c

Simple merge
Simple merge
Simple merge
@@@ -273,23 -274,48 +274,51 @@@ static int fsl_of_msi_remove(struct pla
        return 0;
  }
  
+ static int __devinit fsl_msi_setup_hwirq(struct fsl_msi *msi,
+                                        struct platform_device *dev,
+                                        int offset, int irq_index)
+ {
+       struct fsl_msi_cascade_data *cascade_data = NULL;
+       int virt_msir;
+       virt_msir = irq_of_parse_and_map(dev->dev.of_node, irq_index);
+       if (virt_msir == NO_IRQ) {
+               dev_err(&dev->dev, "%s: Cannot translate IRQ index %d\n",
+                       __func__, irq_index);
+               return 0;
+       }
+       cascade_data = kzalloc(sizeof(struct fsl_msi_cascade_data), GFP_KERNEL);
+       if (!cascade_data) {
+               dev_err(&dev->dev, "No memory for MSI cascade data\n");
+               return -ENOMEM;
+       }
+       msi->msi_virqs[irq_index] = virt_msir;
+       cascade_data->index = offset + irq_index;
+       cascade_data->msi_data = msi;
+       set_irq_data(virt_msir, cascade_data);
+       set_irq_chained_handler(virt_msir, fsl_msi_cascade);
+       return 0;
+ }
 -static int __devinit fsl_of_msi_probe(struct platform_device *dev,
 -                              const struct of_device_id *match)
 +static int __devinit fsl_of_msi_probe(struct platform_device *dev)
  {
        struct fsl_msi *msi;
        struct resource res;
-       int err, i, count;
+       int err, i, j, irq_index, count;
        int rc;
-       int virt_msir;
        const u32 *p;
 -      struct fsl_msi_feature *features = match->data;
 +      struct fsl_msi_feature *features;
-       struct fsl_msi_cascade_data *cascade_data = NULL;
        int len;
        u32 offset;
+       static const u32 all_avail[] = { 0, NR_MSI_IRQS };
  
 +      if (!dev->dev.of_match)
 +              return -EINVAL;
 +      features = dev->dev.of_match->data;
 +
        printk(KERN_DEBUG "Setting up Freescale MSI support\n");
  
        msi = kzalloc(sizeof(struct fsl_msi), GFP_KERNEL);
Simple merge
Simple merge