]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 3 Nov 2011 20:28:14 +0000 (13:28 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 3 Nov 2011 20:28:14 +0000 (13:28 -0700)
* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (37 commits)
  MIPS: O32: Provide definition of registers ta0 .. ta3.
  MIPS: perf: Add Octeon support for hardware perf.
  MIPS: perf: Add support for 64-bit perf counters.
  MIPS: perf: Reorganize contents of perf support files.
  MIPS: perf: Cleanup formatting in arch/mips/kernel/perf_event.c
  MIPS: Add accessor macros for 64-bit performance counter registers.
  MIPS: Add probes for more Octeon II CPUs.
  MIPS: Add more CPU identifiers for Octeon II CPUs.
  MIPS: XLR, XLS: Add comment for smp setup
  MIPS: JZ4740: GPIO: Check correct IRQ in demux handler
  MIPS: JZ4740: GPIO: Simplify IRQ demuxer
  MIPS: JZ4740: Use generic irq chip
  MIPS: Alchemy: remove all CONFIG_SOC_AU1??? defines
  MIPS: Alchemy: kill au1xxx.h header
  MIPS: Alchemy: clean DMA code of CONFIG_SOC_AU1??? defines
  MIPS, IDE: Alchem, au1xxx-ide: Remove pb1200/db1200 header dep
  MIPS: Alchemy: Redo PCI as platform driver
  MIPS: Alchemy: more base address cleanup
  MIPS: Alchemy: rewrite USB platform setup.
  MIPS: Alchemy: abstract USB block control register access
  ...

Fix up trivial conflicts in:
arch/mips/alchemy/devboards/db1x00/platform.c
drivers/ide/Kconfig
drivers/mmc/host/au1xmmc.c
drivers/video/Kconfig
sound/mips/Kconfig

20 files changed:
1  2 
arch/mips/Kconfig
arch/mips/alchemy/devboards/db1200/platform.c
arch/mips/alchemy/devboards/db1x00/platform.c
arch/mips/include/asm/mach-au1x00/au1xxx_psc.h
drivers/i2c/busses/Kconfig
drivers/i2c/busses/i2c-au1550.c
drivers/ide/Kconfig
drivers/mmc/host/Kconfig
drivers/mmc/host/au1xmmc.c
drivers/net/ethernet/amd/au1000_eth.c
drivers/net/ethernet/amd/au1000_eth.h
drivers/net/irda/Kconfig
drivers/usb/Kconfig
drivers/usb/host/Makefile
drivers/usb/host/ehci-au1xxx.c
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ohci-au1xxx.c
drivers/video/Kconfig
sound/mips/Kconfig
sound/soc/au1x/Kconfig

Simple merge
index 7057d28f73016dffb4136fb7d5856c1e19f66dac,8704865306a5b3de6bc8f932ac56bd2426a0a693..9e6b3d442acdef7aec6ecba7caeda67d5dce3944
   */
  
  #include <linux/init.h>
 +#include <linux/interrupt.h>
+ #include <linux/dma-mapping.h>
  #include <linux/platform_device.h>
  
  #include <asm/mach-au1x00/au1000.h>
- #include <asm/mach-au1x00/au1xxx.h>
 +#include <asm/mach-au1x00/au1000_dma.h>
  #include <asm/mach-db1x00/bcsr.h>
  #include "../platform.h"
  
@@@ -88,79 -88,182 +90,227 @@@ struct pci_dev
  #endif
  #endif
  
+ #ifdef CONFIG_PCI
+ #ifdef CONFIG_MIPS_DB1500
+ static int db1xxx_map_pci_irq(const struct pci_dev *d, u8 slot, u8 pin)
+ {
+       if ((slot < 12) || (slot > 13) || pin == 0)
+               return -1;
+       if (slot == 12)
+               return (pin == 1) ? AU1500_PCI_INTA : 0xff;
+       if (slot == 13) {
+               switch (pin) {
+               case 1: return AU1500_PCI_INTA;
+               case 2: return AU1500_PCI_INTB;
+               case 3: return AU1500_PCI_INTC;
+               case 4: return AU1500_PCI_INTD;
+               }
+       }
+       return -1;
+ }
+ #endif
+ #ifdef CONFIG_MIPS_DB1550
+ static int db1xxx_map_pci_irq(const struct pci_dev *d, u8 slot, u8 pin)
+ {
+       if ((slot < 11) || (slot > 13) || pin == 0)
+               return -1;
+       if (slot == 11)
+               return (pin == 1) ? AU1550_PCI_INTC : 0xff;
+       if (slot == 12) {
+               switch (pin) {
+               case 1: return AU1550_PCI_INTB;
+               case 2: return AU1550_PCI_INTC;
+               case 3: return AU1550_PCI_INTD;
+               case 4: return AU1550_PCI_INTA;
+               }
+       }
+       if (slot == 13) {
+               switch (pin) {
+               case 1: return AU1550_PCI_INTA;
+               case 2: return AU1550_PCI_INTB;
+               case 3: return AU1550_PCI_INTC;
+               case 4: return AU1550_PCI_INTD;
+               }
+       }
+       return -1;
+ }
+ #endif
+ #ifdef CONFIG_MIPS_BOSPORUS
+ static int db1xxx_map_pci_irq(const struct pci_dev *d, u8 slot, u8 pin)
+ {
+       if ((slot < 11) || (slot > 13) || pin == 0)
+               return -1;
+       if (slot == 12)
+               return (pin == 1) ? AU1500_PCI_INTA : 0xff;
+       if (slot == 11) {
+               switch (pin) {
+               case 1: return AU1500_PCI_INTA;
+               case 2: return AU1500_PCI_INTB;
+               default: return 0xff;
+               }
+       }
+       if (slot == 13) {
+               switch (pin) {
+               case 1: return AU1500_PCI_INTA;
+               case 2: return AU1500_PCI_INTB;
+               case 3: return AU1500_PCI_INTC;
+               case 4: return AU1500_PCI_INTD;
+               }
+       }
+       return -1;
+ }
+ #endif
+ #ifdef CONFIG_MIPS_MIRAGE
+ static int db1xxx_map_pci_irq(const struct pci_dev *d, u8 slot, u8 pin)
+ {
+       if ((slot < 11) || (slot > 13) || pin == 0)
+               return -1;
+       if (slot == 11)
+               return (pin == 1) ? AU1500_PCI_INTD : 0xff;
+       if (slot == 12)
+               return (pin == 3) ? AU1500_PCI_INTC : 0xff;
+       if (slot == 13) {
+               switch (pin) {
+               case 1: return AU1500_PCI_INTA;
+               case 2: return AU1500_PCI_INTB;
+               default: return 0xff;
+               }
+       }
+       return -1;
+ }
+ #endif
+ static struct resource alchemy_pci_host_res[] = {
+       [0] = {
+               .start  = AU1500_PCI_PHYS_ADDR,
+               .end    = AU1500_PCI_PHYS_ADDR + 0xfff,
+               .flags  = IORESOURCE_MEM,
+       },
+ };
+ static struct alchemy_pci_platdata db1xxx_pci_pd = {
+       .board_map_irq  = db1xxx_map_pci_irq,
+ };
+ static struct platform_device db1xxx_pci_host_dev = {
+       .dev.platform_data = &db1xxx_pci_pd,
+       .name           = "alchemy-pci",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(alchemy_pci_host_res),
+       .resource       = alchemy_pci_host_res,
+ };
+ static int __init db15x0_pci_init(void)
+ {
+       return platform_device_register(&db1xxx_pci_host_dev);
+ }
+ /* must be arch_initcall; MIPS PCI scans busses in a subsys_initcall */
+ arch_initcall(db15x0_pci_init);
+ #endif
+ #ifdef CONFIG_MIPS_DB1100
+ static struct resource au1100_lcd_resources[] = {
+       [0] = {
+               .start  = AU1100_LCD_PHYS_ADDR,
+               .end    = AU1100_LCD_PHYS_ADDR + 0x800 - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = AU1100_LCD_INT,
+               .end    = AU1100_LCD_INT,
+               .flags  = IORESOURCE_IRQ,
+       }
+ };
+ static u64 au1100_lcd_dmamask = DMA_BIT_MASK(32);
+ static struct platform_device au1100_lcd_device = {
+       .name           = "au1100-lcd",
+       .id             = 0,
+       .dev = {
+               .dma_mask               = &au1100_lcd_dmamask,
+               .coherent_dma_mask      = DMA_BIT_MASK(32),
+       },
+       .num_resources  = ARRAY_SIZE(au1100_lcd_resources),
+       .resource       = au1100_lcd_resources,
+ };
+ #endif
 +static struct resource alchemy_ac97c_res[] = {
 +      [0] = {
 +              .start  = AU1000_AC97_PHYS_ADDR,
 +              .end    = AU1000_AC97_PHYS_ADDR + 0xfff,
 +              .flags  = IORESOURCE_MEM,
 +      },
 +      [1] = {
 +              .start  = DMA_ID_AC97C_TX,
 +              .end    = DMA_ID_AC97C_TX,
 +              .flags  = IORESOURCE_DMA,
 +      },
 +      [2] = {
 +              .start  = DMA_ID_AC97C_RX,
 +              .end    = DMA_ID_AC97C_RX,
 +              .flags  = IORESOURCE_DMA,
 +      },
 +};
 +
 +static struct platform_device alchemy_ac97c_dev = {
 +      .name           = "alchemy-ac97c",
 +      .id             = -1,
 +      .resource       = alchemy_ac97c_res,
 +      .num_resources  = ARRAY_SIZE(alchemy_ac97c_res),
 +};
 +
 +static struct platform_device alchemy_ac97c_dma_dev = {
 +      .name           = "alchemy-pcm-dma",
 +      .id             = 0,
 +};
 +
 +static struct platform_device db1x00_codec_dev = {
 +      .name           = "ac97-codec",
 +      .id             = -1,
 +};
 +
 +static struct platform_device db1x00_audio_dev = {
 +      .name           = "db1000-audio",
 +};
 +
  static int __init db1xxx_dev_init(void)
  {
  #ifdef DB1XXX_HAS_PCMCIA
-       db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR,
-                                   PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1,
-                                   PCMCIA_MEM_PHYS_ADDR,
-                                   PCMCIA_MEM_PHYS_ADDR  + 0x000400000 - 1,
-                                   PCMCIA_IO_PHYS_ADDR,
-                                   PCMCIA_IO_PHYS_ADDR   + 0x000010000 - 1,
-                                   DB1XXX_PCMCIA_CARD0,
-                                   DB1XXX_PCMCIA_CD0,
-                                   /*DB1XXX_PCMCIA_STSCHG0*/0,
-                                   0,
-                                   0);
-       db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x004000000,
-                                   PCMCIA_ATTR_PHYS_ADDR + 0x004400000 - 1,
-                                   PCMCIA_MEM_PHYS_ADDR  + 0x004000000,
-                                   PCMCIA_MEM_PHYS_ADDR  + 0x004400000 - 1,
-                                   PCMCIA_IO_PHYS_ADDR   + 0x004000000,
-                                   PCMCIA_IO_PHYS_ADDR   + 0x004010000 - 1,
-                                   DB1XXX_PCMCIA_CARD1,
-                                   DB1XXX_PCMCIA_CD1,
-                                   /*DB1XXX_PCMCIA_STSCHG1*/0,
-                                   0,
-                                   1);
+       db1x_register_pcmcia_socket(
+               AU1000_PCMCIA_ATTR_PHYS_ADDR,
+               AU1000_PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1,
+               AU1000_PCMCIA_MEM_PHYS_ADDR,
+               AU1000_PCMCIA_MEM_PHYS_ADDR  + 0x000400000 - 1,
+               AU1000_PCMCIA_IO_PHYS_ADDR,
+               AU1000_PCMCIA_IO_PHYS_ADDR   + 0x000010000 - 1,
+               DB1XXX_PCMCIA_CARD0, DB1XXX_PCMCIA_CD0,
+               /*DB1XXX_PCMCIA_STSCHG0*/0, 0, 0);
+       db1x_register_pcmcia_socket(
+               AU1000_PCMCIA_ATTR_PHYS_ADDR + 0x004000000,
+               AU1000_PCMCIA_ATTR_PHYS_ADDR + 0x004400000 - 1,
+               AU1000_PCMCIA_MEM_PHYS_ADDR  + 0x004000000,
+               AU1000_PCMCIA_MEM_PHYS_ADDR  + 0x004400000 - 1,
+               AU1000_PCMCIA_IO_PHYS_ADDR   + 0x004000000,
+               AU1000_PCMCIA_IO_PHYS_ADDR   + 0x004010000 - 1,
+               DB1XXX_PCMCIA_CARD1, DB1XXX_PCMCIA_CD1,
+               /*DB1XXX_PCMCIA_STSCHG1*/0, 0, 1);
+ #endif
+ #ifdef CONFIG_MIPS_DB1100
+       platform_device_register(&au1100_lcd_device);
  #endif
        db1x_register_norflash(BOARD_FLASH_SIZE, BOARD_FLASH_WIDTH, F_SWAPPED);
 +
 +      platform_device_register(&db1x00_codec_dev);
 +      platform_device_register(&alchemy_ac97c_dma_dev);
 +      platform_device_register(&alchemy_ac97c_dev);
 +      platform_device_register(&db1x00_audio_dev);
 +
        return 0;
  }
  device_initcall(db1xxx_dev_init);
Simple merge
index 4f757a2da8cc938f19f95eeb5d9d7859570a506e,a714534ff3211feaf96a548ae8da9e53dc919af8..f314d7f433d321f4abd236cca1723443db778aa7
  #include <linux/i2c.h>
  #include <linux/slab.h>
  
- #include <asm/mach-au1x00/au1xxx.h>
+ #include <asm/mach-au1x00/au1000.h>
  #include <asm/mach-au1x00/au1xxx_psc.h>
  
 +#define PSC_SEL               0x00
 +#define PSC_CTRL      0x04
 +#define PSC_SMBCFG    0x08
 +#define PSC_SMBMSK    0x0C
 +#define PSC_SMBPCR    0x10
 +#define PSC_SMBSTAT   0x14
 +#define PSC_SMBEVNT   0x18
 +#define PSC_SMBTXRX   0x1C
 +#define PSC_SMBTMR    0x20
 +
  struct i2c_au1550_data {
 -      u32     psc_base;
 +      void __iomem *psc_base;
        int     xfer_timeout;
 -      int     ack_timeout;
        struct i2c_adapter adap;
        struct resource *ioarea;
  };
index 76b6d98bd29532ca0ce006ac675542dc13a3a102,ff7c6bbec2256e5dd31bef8d6a17a036838ab2e1..5a26584934caa4c542f4a53582b5a03fcc28f634
@@@ -681,8 -681,8 +681,8 @@@ config BLK_DEV_IDE_AU1XX
         select IDE_XFER_MODE
  choice
         prompt "IDE Mode for AMD Alchemy Au1200"
 -       default CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA
 +       default BLK_DEV_IDE_AU1XXX_PIO_DBDMA
-        depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX
+        depends on BLK_DEV_IDE_AU1XXX
  
  config BLK_DEV_IDE_AU1XXX_PIO_DBDMA
         bool "PIO+DbDMA IDE for AMD Alchemy Au1200"
Simple merge
index 707bc7dddd226a1d29405efefa2bc2e853f13d1a,56e7834685d9f81f2c1a152be0fff65fb8caf4c8..5d3b9ae645236dd8b7857a383825694286705b8a
@@@ -1028,11 -1036,12 +1036,11 @@@ static int __devinit au1xmmc_probe(stru
        tasklet_init(&host->finish_task, au1xmmc_tasklet_finish,
                        (unsigned long)host);
  
- #ifdef CONFIG_SOC_AU1200
-       ret = au1xmmc_dbdma_init(host);
-       if (ret)
-               pr_info(DRIVER_NAME ": DBDMA init failed; using PIO\n");
- #endif
+       if (has_dbdma()) {
+               ret = au1xmmc_dbdma_init(host);
+               if (ret)
 -                      printk(KERN_INFO DRIVER_NAME ": DBDMA init failed; "
 -                                                   "using PIO\n");
++                      pr_info(DRIVER_NAME ": DBDMA init failed; using PIO\n");
+       }
  
  #ifdef CONFIG_LEDS_CLASS
        if (host->platdata && host->platdata->led) {
@@@ -1181,15 -1189,15 +1188,15 @@@ static struct platform_driver au1xmmc_d
  
  static int __init au1xmmc_init(void)
  {
- #ifdef CONFIG_SOC_AU1200
-       /* DSCR_CMD0_ALWAYS has a stride of 32 bits, we need a stride
-        * of 8 bits.  And since devices are shared, we need to create
-        * our own to avoid freaking out other devices.
-        */
-       memid = au1xxx_ddma_add_device(&au1xmmc_mem_dbdev);
-       if (!memid)
-               pr_err("au1xmmc: cannot add memory dbdma dev\n");
- #endif
+       if (has_dbdma()) {
+               /* DSCR_CMD0_ALWAYS has a stride of 32 bits, we need a stride
+               * of 8 bits.  And since devices are shared, we need to create
+               * our own to avoid freaking out other devices.
+               */
+               memid = au1xxx_ddma_add_device(&au1xmmc_mem_dbdev);
+               if (!memid)
 -                      printk(KERN_ERR "au1xmmc: cannot add memory dbdma\n");
++                      pr_err("au1xmmc: cannot add memory dbdma\n");
+       }
        return platform_driver_register(&au1xmmc_driver);
  }
  
Simple merge
Simple merge
Simple merge
index 4ac2750491de8bf6de1bee06a398c748b0e59ea6,85d5a011dca6a86dbffb50bfc8b96c08cee9edca..791f11bed6063b6fec2ffa4ab78fc4177f70b509
@@@ -60,9 -54,8 +60,8 @@@ config USB_ARCH_HAS_OHC
  # some non-PCI hcds implement EHCI
  config USB_ARCH_HAS_EHCI
        boolean
 -      default y if PPC_83xx
 +      default y if FSL_SOC
        default y if PPC_MPC512x
-       default y if SOC_AU1200
        default y if ARCH_IXP4XX
        default y if ARCH_W90X900
        default y if ARCH_AT91SAM9G45
Simple merge
Simple merge
Simple merge
Simple merge
index 8165c5577d715c33a04e30b9a10d34a4a21dd93e,55a7df4ea8dec2aa872939e862ddda3f353fdc03..d83e967e4e15b6380fa1dc94584aac871b6a4b1d
@@@ -1764,11 -1755,10 +1764,11 @@@ config FB_AU110
  
  config FB_AU1200
        bool "Au1200 LCD Driver"
-       depends on (FB = y) && MIPS && SOC_AU1200
+       depends on (FB = y) && MIPS_ALCHEMY
 -      select FB_CFB_FILLRECT
 -      select FB_CFB_COPYAREA
 -      select FB_CFB_IMAGEBLIT
 +      select FB_SYS_FILLRECT
 +      select FB_SYS_COPYAREA
 +      select FB_SYS_IMAGEBLIT
 +      select FB_SYS_FOPS
        help
          This is the framebuffer driver for the AMD Au1200 SOC.  It can drive
          various panels and CRTs by passing in kernel cmd line option
index 77dd0a13aecc40f59ac9361f241f376a61173934,0a0d5017a64214b097995349dd112f272fa9dd06..d2f615ab177a7ca021d9f802d61ba2b57b10a7ca
@@@ -23,8 -23,8 +23,8 @@@ config SND_SGI_HAL
  
  
  config SND_AU1X00
 -      tristate "Au1x00 AC97 Port Driver"
 +      tristate "Au1x00 AC97 Port Driver (DEPRECATED)"
-       depends on SOC_AU1000 || SOC_AU1100 || SOC_AU1500
+       depends on MIPS_ALCHEMY
        select SND_PCM
        select SND_AC97_CODEC
        help
Simple merge