Merge branch 'spear/dt' into spear/clock
authorArnd Bergmann <arnd@arndb.de>
Mon, 14 May 2012 15:31:45 +0000 (17:31 +0200)
committerArnd Bergmann <arnd@arndb.de>
Mon, 14 May 2012 15:31:45 +0000 (17:31 +0200)
Conflicts:
arch/arm/mach-spear3xx/clock.c
arch/arm/mach-spear3xx/include/mach/generic.h
arch/arm/mach-spear3xx/include/mach/misc_regs.h
arch/arm/mach-spear3xx/spear320.c
arch/arm/mach-spear6xx/clock.c
arch/arm/mach-spear6xx/include/mach/misc_regs.h

Resolve even more merge conflicts.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
13 files changed:
1  2 
arch/arm/boot/dts/spear300-evb.dts
arch/arm/boot/dts/spear310-evb.dts
arch/arm/boot/dts/spear320-evb.dts
arch/arm/mach-spear3xx/include/mach/generic.h
arch/arm/mach-spear3xx/include/mach/misc_regs.h
arch/arm/mach-spear3xx/include/mach/spear.h
arch/arm/mach-spear3xx/spear300.c
arch/arm/mach-spear3xx/spear310.c
arch/arm/mach-spear3xx/spear320.c
arch/arm/mach-spear3xx/spear3xx.c
arch/arm/mach-spear6xx/include/mach/misc_regs.h
arch/arm/mach-spear6xx/spear6xx.c
arch/arm/plat-spear/time.c

Simple merge
Simple merge
Simple merge
  #include <linux/amba/bus.h>
  #include <asm/mach/time.h>
  #include <asm/mach/map.h>
 -#include <plat/padmux.h>
  
- /* spear3xx declarations */
- /*
-  * Each GPT has 2 timer channels
-  * Following GPT channels will be used as clock source and clockevent
-  */
- #define SPEAR_GPT0_BASE               SPEAR3XX_ML1_TMR_BASE
- #define SPEAR_GPT0_CHAN0_IRQ  SPEAR3XX_IRQ_CPU_GPT1_1
- #define SPEAR_GPT0_CHAN1_IRQ  SPEAR3XX_IRQ_CPU_GPT1_2
  /* Add spear3xx family device structure declarations here */
  extern struct sys_timer spear3xx_timer;
  extern struct pl022_ssp_controller pl022_plat_data;
  extern struct pl08x_platform_data pl080_plat_data;
  
  /* Add spear3xx family function declarations here */
- void __init spear_setup_timer(void);
+ void __init spear_setup_of_timer(void);
 +void __init spear3xx_clk_init(void);
  void __init spear3xx_map_io(void);
  void __init spear3xx_dt_init_irq(void);
  
@@@ -14,9 -14,7 +14,9 @@@
  #ifndef __MACH_MISC_REGS_H
  #define __MACH_MISC_REGS_H
  
- #include <mach/hardware.h>
 +#include <mach/spear.h>
 +
  #define MISC_BASE             IOMEM(VA_SPEAR3XX_ICM3_MISC_REG_BASE)
+ #define DMA_CHN_CFG           (MISC_BASE + 0x0A0)
  
  #endif /* __MACH_MISC_REGS_H */
  #include <asm/mach/arch.h>
  #include <plat/shirq.h>
  #include <mach/generic.h>
- #include <mach/hardware.h>
+ #include <mach/spear.h>
+ /* Base address of various IPs */
+ #define SPEAR300_TELECOM_BASE         UL(0x50000000)
+ /* Interrupt registers offsets and masks */
+ #define SPEAR300_INT_ENB_MASK_REG     0x54
+ #define SPEAR300_INT_STS_MASK_REG     0x58
+ #define SPEAR300_IT_PERS_S_IRQ_MASK   (1 << 0)
+ #define SPEAR300_IT_CHANGE_S_IRQ_MASK (1 << 1)
+ #define SPEAR300_I2S_IRQ_MASK         (1 << 2)
+ #define SPEAR300_TDM_IRQ_MASK         (1 << 3)
+ #define SPEAR300_CAMERA_L_IRQ_MASK    (1 << 4)
+ #define SPEAR300_CAMERA_F_IRQ_MASK    (1 << 5)
+ #define SPEAR300_CAMERA_V_IRQ_MASK    (1 << 6)
+ #define SPEAR300_KEYBOARD_IRQ_MASK    (1 << 7)
+ #define SPEAR300_GPIO1_IRQ_MASK               (1 << 8)
+ #define SPEAR300_SHIRQ_RAS1_MASK      0x1FF
+ #define SPEAR300_SOC_CONFIG_BASE      UL(0x99000000)
+ /* SPEAr300 Virtual irq definitions */
+ /* IRQs sharing IRQ_GEN_RAS_1 */
+ #define SPEAR300_VIRQ_IT_PERS_S                       (SPEAR3XX_VIRQ_START + 0)
+ #define SPEAR300_VIRQ_IT_CHANGE_S             (SPEAR3XX_VIRQ_START + 1)
+ #define SPEAR300_VIRQ_I2S                     (SPEAR3XX_VIRQ_START + 2)
+ #define SPEAR300_VIRQ_TDM                     (SPEAR3XX_VIRQ_START + 3)
+ #define SPEAR300_VIRQ_CAMERA_L                        (SPEAR3XX_VIRQ_START + 4)
+ #define SPEAR300_VIRQ_CAMERA_F                        (SPEAR3XX_VIRQ_START + 5)
+ #define SPEAR300_VIRQ_CAMERA_V                        (SPEAR3XX_VIRQ_START + 6)
+ #define SPEAR300_VIRQ_KEYBOARD                        (SPEAR3XX_VIRQ_START + 7)
+ #define SPEAR300_VIRQ_GPIO1                   (SPEAR3XX_VIRQ_START + 8)
+ /* IRQs sharing IRQ_GEN_RAS_3 */
+ #define SPEAR300_IRQ_CLCD                     SPEAR3XX_IRQ_GEN_RAS_3
+ /* IRQs sharing IRQ_INTRCOMM_RAS_ARM */
+ #define SPEAR300_IRQ_SDHCI                    SPEAR3XX_IRQ_INTRCOMM_RAS_ARM
  
 -/* pad multiplexing support */
 -/* muxing registers */
 -#define PAD_MUX_CONFIG_REG    0x00
 -#define MODE_CONFIG_REG               0x04
 -
 -/* modes */
 -#define NAND_MODE                     (1 << 0)
 -#define NOR_MODE                      (1 << 1)
 -#define PHOTO_FRAME_MODE              (1 << 2)
 -#define LEND_IP_PHONE_MODE            (1 << 3)
 -#define HEND_IP_PHONE_MODE            (1 << 4)
 -#define LEND_WIFI_PHONE_MODE          (1 << 5)
 -#define HEND_WIFI_PHONE_MODE          (1 << 6)
 -#define ATA_PABX_WI2S_MODE            (1 << 7)
 -#define ATA_PABX_I2S_MODE             (1 << 8)
 -#define CAML_LCDW_MODE                        (1 << 9)
 -#define CAMU_LCD_MODE                 (1 << 10)
 -#define CAMU_WLCD_MODE                        (1 << 11)
 -#define CAML_LCD_MODE                 (1 << 12)
 -#define ALL_MODES                     0x1FFF
 -
 -struct pmx_mode spear300_nand_mode = {
 -      .id = NAND_MODE,
 -      .name = "nand mode",
 -      .mask = 0x00,
 -};
 -
 -struct pmx_mode spear300_nor_mode = {
 -      .id = NOR_MODE,
 -      .name = "nor mode",
 -      .mask = 0x01,
 -};
 -
 -struct pmx_mode spear300_photo_frame_mode = {
 -      .id = PHOTO_FRAME_MODE,
 -      .name = "photo frame mode",
 -      .mask = 0x02,
 -};
 -
 -struct pmx_mode spear300_lend_ip_phone_mode = {
 -      .id = LEND_IP_PHONE_MODE,
 -      .name = "lend ip phone mode",
 -      .mask = 0x03,
 -};
 -
 -struct pmx_mode spear300_hend_ip_phone_mode = {
 -      .id = HEND_IP_PHONE_MODE,
 -      .name = "hend ip phone mode",
 -      .mask = 0x04,
 -};
 -
 -struct pmx_mode spear300_lend_wifi_phone_mode = {
 -      .id = LEND_WIFI_PHONE_MODE,
 -      .name = "lend wifi phone mode",
 -      .mask = 0x05,
 -};
 -
 -struct pmx_mode spear300_hend_wifi_phone_mode = {
 -      .id = HEND_WIFI_PHONE_MODE,
 -      .name = "hend wifi phone mode",
 -      .mask = 0x06,
 -};
 -
 -struct pmx_mode spear300_ata_pabx_wi2s_mode = {
 -      .id = ATA_PABX_WI2S_MODE,
 -      .name = "ata pabx wi2s mode",
 -      .mask = 0x07,
 -};
 -
 -struct pmx_mode spear300_ata_pabx_i2s_mode = {
 -      .id = ATA_PABX_I2S_MODE,
 -      .name = "ata pabx i2s mode",
 -      .mask = 0x08,
 -};
 -
 -struct pmx_mode spear300_caml_lcdw_mode = {
 -      .id = CAML_LCDW_MODE,
 -      .name = "caml lcdw mode",
 -      .mask = 0x0C,
 -};
 -
 -struct pmx_mode spear300_camu_lcd_mode = {
 -      .id = CAMU_LCD_MODE,
 -      .name = "camu lcd mode",
 -      .mask = 0x0D,
 -};
 -
 -struct pmx_mode spear300_camu_wlcd_mode = {
 -      .id = CAMU_WLCD_MODE,
 -      .name = "camu wlcd mode",
 -      .mask = 0x0E,
 -};
 -
 -struct pmx_mode spear300_caml_lcd_mode = {
 -      .id = CAML_LCD_MODE,
 -      .name = "caml lcd mode",
 -      .mask = 0x0F,
 -};
 -
 -/* devices */
 -static struct pmx_dev_mode pmx_fsmc_2_chips_modes[] = {
 -      {
 -              .ids = NAND_MODE | NOR_MODE | PHOTO_FRAME_MODE |
 -                      ATA_PABX_WI2S_MODE | ATA_PABX_I2S_MODE,
 -              .mask = PMX_FIRDA_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_fsmc_2_chips = {
 -      .name = "fsmc_2_chips",
 -      .modes = pmx_fsmc_2_chips_modes,
 -      .mode_count = ARRAY_SIZE(pmx_fsmc_2_chips_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_fsmc_4_chips_modes[] = {
 -      {
 -              .ids = NAND_MODE | NOR_MODE | PHOTO_FRAME_MODE |
 -                      ATA_PABX_WI2S_MODE | ATA_PABX_I2S_MODE,
 -              .mask = PMX_FIRDA_MASK | PMX_UART0_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_fsmc_4_chips = {
 -      .name = "fsmc_4_chips",
 -      .modes = pmx_fsmc_4_chips_modes,
 -      .mode_count = ARRAY_SIZE(pmx_fsmc_4_chips_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_keyboard_modes[] = {
 -      {
 -              .ids = LEND_IP_PHONE_MODE | HEND_IP_PHONE_MODE |
 -                      LEND_WIFI_PHONE_MODE | HEND_WIFI_PHONE_MODE |
 -                      CAML_LCDW_MODE | CAMU_LCD_MODE | CAMU_WLCD_MODE |
 -                      CAML_LCD_MODE,
 -              .mask = 0x0,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_keyboard = {
 -      .name = "keyboard",
 -      .modes = pmx_keyboard_modes,
 -      .mode_count = ARRAY_SIZE(pmx_keyboard_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_clcd_modes[] = {
 -      {
 -              .ids = PHOTO_FRAME_MODE,
 -              .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK ,
 -      }, {
 -              .ids = HEND_IP_PHONE_MODE | HEND_WIFI_PHONE_MODE |
 -                      CAMU_LCD_MODE | CAML_LCD_MODE,
 -              .mask = PMX_TIMER_3_4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_clcd = {
 -      .name = "clcd",
 -      .modes = pmx_clcd_modes,
 -      .mode_count = ARRAY_SIZE(pmx_clcd_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_telecom_gpio_modes[] = {
 -      {
 -              .ids = PHOTO_FRAME_MODE | CAMU_LCD_MODE | CAML_LCD_MODE,
 -              .mask = PMX_MII_MASK,
 -      }, {
 -              .ids = LEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE,
 -              .mask = PMX_MII_MASK | PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK,
 -      }, {
 -              .ids = ATA_PABX_I2S_MODE | CAML_LCDW_MODE | CAMU_WLCD_MODE,
 -              .mask = PMX_MII_MASK | PMX_TIMER_3_4_MASK,
 -      }, {
 -              .ids = HEND_IP_PHONE_MODE | HEND_WIFI_PHONE_MODE,
 -              .mask = PMX_MII_MASK | PMX_TIMER_1_2_MASK,
 -      }, {
 -              .ids = ATA_PABX_WI2S_MODE,
 -              .mask = PMX_MII_MASK | PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK
 -                      | PMX_UART0_MODEM_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_telecom_gpio = {
 -      .name = "telecom_gpio",
 -      .modes = pmx_telecom_gpio_modes,
 -      .mode_count = ARRAY_SIZE(pmx_telecom_gpio_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_telecom_tdm_modes[] = {
 -      {
 -              .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE |
 -                      HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE
 -                      | HEND_WIFI_PHONE_MODE | ATA_PABX_WI2S_MODE
 -                      | ATA_PABX_I2S_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE
 -                      | CAMU_WLCD_MODE | CAML_LCD_MODE,
 -              .mask = PMX_UART0_MODEM_MASK | PMX_SSP_CS_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_telecom_tdm = {
 -      .name = "telecom_tdm",
 -      .modes = pmx_telecom_tdm_modes,
 -      .mode_count = ARRAY_SIZE(pmx_telecom_tdm_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_telecom_spi_cs_i2c_clk_modes[] = {
 -      {
 -              .ids = LEND_IP_PHONE_MODE | HEND_IP_PHONE_MODE |
 -                      LEND_WIFI_PHONE_MODE | HEND_WIFI_PHONE_MODE
 -                      | ATA_PABX_WI2S_MODE | ATA_PABX_I2S_MODE |
 -                      CAML_LCDW_MODE | CAML_LCD_MODE,
 -              .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_telecom_spi_cs_i2c_clk = {
 -      .name = "telecom_spi_cs_i2c_clk",
 -      .modes = pmx_telecom_spi_cs_i2c_clk_modes,
 -      .mode_count = ARRAY_SIZE(pmx_telecom_spi_cs_i2c_clk_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_telecom_camera_modes[] = {
 -      {
 -              .ids = CAML_LCDW_MODE | CAML_LCD_MODE,
 -              .mask = PMX_MII_MASK,
 -      }, {
 -              .ids = CAMU_LCD_MODE | CAMU_WLCD_MODE,
 -              .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK | PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_telecom_camera = {
 -      .name = "telecom_camera",
 -      .modes = pmx_telecom_camera_modes,
 -      .mode_count = ARRAY_SIZE(pmx_telecom_camera_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_telecom_dac_modes[] = {
 -      {
 -              .ids = ATA_PABX_I2S_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE
 -                      | CAMU_WLCD_MODE | CAML_LCD_MODE,
 -              .mask = PMX_TIMER_1_2_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_telecom_dac = {
 -      .name = "telecom_dac",
 -      .modes = pmx_telecom_dac_modes,
 -      .mode_count = ARRAY_SIZE(pmx_telecom_dac_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_telecom_i2s_modes[] = {
 -      {
 -              .ids = LEND_IP_PHONE_MODE | HEND_IP_PHONE_MODE
 -                      | LEND_WIFI_PHONE_MODE | HEND_WIFI_PHONE_MODE |
 -                      ATA_PABX_I2S_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE
 -                      | CAMU_WLCD_MODE | CAML_LCD_MODE,
 -              .mask = PMX_UART0_MODEM_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_telecom_i2s = {
 -      .name = "telecom_i2s",
 -      .modes = pmx_telecom_i2s_modes,
 -      .mode_count = ARRAY_SIZE(pmx_telecom_i2s_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_telecom_boot_pins_modes[] = {
 -      {
 -              .ids = NAND_MODE | NOR_MODE,
 -              .mask = PMX_UART0_MODEM_MASK | PMX_TIMER_1_2_MASK |
 -                      PMX_TIMER_3_4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_telecom_boot_pins = {
 -      .name = "telecom_boot_pins",
 -      .modes = pmx_telecom_boot_pins_modes,
 -      .mode_count = ARRAY_SIZE(pmx_telecom_boot_pins_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_telecom_sdhci_4bit_modes[] = {
 -      {
 -              .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE |
 -                      HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE |
 -                      HEND_WIFI_PHONE_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE |
 -                      CAMU_WLCD_MODE | CAML_LCD_MODE | ATA_PABX_WI2S_MODE |
 -                      ATA_PABX_I2S_MODE,
 -              .mask = PMX_GPIO_PIN0_MASK | PMX_GPIO_PIN1_MASK |
 -                      PMX_GPIO_PIN2_MASK | PMX_GPIO_PIN3_MASK |
 -                      PMX_GPIO_PIN4_MASK | PMX_GPIO_PIN5_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_telecom_sdhci_4bit = {
 -      .name = "telecom_sdhci_4bit",
 -      .modes = pmx_telecom_sdhci_4bit_modes,
 -      .mode_count = ARRAY_SIZE(pmx_telecom_sdhci_4bit_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_telecom_sdhci_8bit_modes[] = {
 -      {
 -              .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE |
 -                      HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE |
 -                      HEND_WIFI_PHONE_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE |
 -                      CAMU_WLCD_MODE | CAML_LCD_MODE,
 -              .mask = PMX_GPIO_PIN0_MASK | PMX_GPIO_PIN1_MASK |
 -                      PMX_GPIO_PIN2_MASK | PMX_GPIO_PIN3_MASK |
 -                      PMX_GPIO_PIN4_MASK | PMX_GPIO_PIN5_MASK | PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_telecom_sdhci_8bit = {
 -      .name = "telecom_sdhci_8bit",
 -      .modes = pmx_telecom_sdhci_8bit_modes,
 -      .mode_count = ARRAY_SIZE(pmx_telecom_sdhci_8bit_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_gpio1_modes[] = {
 -      {
 -              .ids = PHOTO_FRAME_MODE,
 -              .mask = PMX_UART0_MODEM_MASK | PMX_TIMER_1_2_MASK |
 -                      PMX_TIMER_3_4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear300_pmx_gpio1 = {
 -      .name = "arm gpio1",
 -      .modes = pmx_gpio1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_gpio1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -/* pmx driver structure */
 -static struct pmx_driver pmx_driver = {
 -      .mode_reg = {.offset = MODE_CONFIG_REG, .mask = 0x0000000f},
 -      .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff},
 -};
 -
  /* spear3xx shared irq */
  static struct shirq_dev_config shirq_ras1_config[] = {
        {
@@@ -298,7 -724,7 +337,6 @@@ static const char * const spear300_dt_b
  static void __init spear300_map_io(void)
  {
        spear3xx_map_io();
--      spear300_clk_init();
  }
  
  DT_MACHINE_START(SPEAR300_DT, "ST SPEAr300 SoC with Flattened Device Tree")
  #include <asm/mach/arch.h>
  #include <plat/shirq.h>
  #include <mach/generic.h>
- #include <mach/hardware.h>
+ #include <mach/spear.h>
+ #define SPEAR310_UART1_BASE           UL(0xB2000000)
+ #define SPEAR310_UART2_BASE           UL(0xB2080000)
+ #define SPEAR310_UART3_BASE           UL(0xB2100000)
+ #define SPEAR310_UART4_BASE           UL(0xB2180000)
+ #define SPEAR310_UART5_BASE           UL(0xB2200000)
+ #define SPEAR310_SOC_CONFIG_BASE      UL(0xB4000000)
+ /* Interrupt registers offsets and masks */
+ #define SPEAR310_INT_STS_MASK_REG     0x04
+ #define SPEAR310_SMII0_IRQ_MASK               (1 << 0)
+ #define SPEAR310_SMII1_IRQ_MASK               (1 << 1)
+ #define SPEAR310_SMII2_IRQ_MASK               (1 << 2)
+ #define SPEAR310_SMII3_IRQ_MASK               (1 << 3)
+ #define SPEAR310_WAKEUP_SMII0_IRQ_MASK        (1 << 4)
+ #define SPEAR310_WAKEUP_SMII1_IRQ_MASK        (1 << 5)
+ #define SPEAR310_WAKEUP_SMII2_IRQ_MASK        (1 << 6)
+ #define SPEAR310_WAKEUP_SMII3_IRQ_MASK        (1 << 7)
+ #define SPEAR310_UART1_IRQ_MASK               (1 << 8)
+ #define SPEAR310_UART2_IRQ_MASK               (1 << 9)
+ #define SPEAR310_UART3_IRQ_MASK               (1 << 10)
+ #define SPEAR310_UART4_IRQ_MASK               (1 << 11)
+ #define SPEAR310_UART5_IRQ_MASK               (1 << 12)
+ #define SPEAR310_EMI_IRQ_MASK         (1 << 13)
+ #define SPEAR310_TDM_HDLC_IRQ_MASK    (1 << 14)
+ #define SPEAR310_RS485_0_IRQ_MASK     (1 << 15)
+ #define SPEAR310_RS485_1_IRQ_MASK     (1 << 16)
+ #define SPEAR310_SHIRQ_RAS1_MASK      0x000FF
+ #define SPEAR310_SHIRQ_RAS2_MASK      0x01F00
+ #define SPEAR310_SHIRQ_RAS3_MASK      0x02000
+ #define SPEAR310_SHIRQ_INTRCOMM_RAS_MASK      0x1C000
+ /* SPEAr310 Virtual irq definitions */
+ /* IRQs sharing IRQ_GEN_RAS_1 */
+ #define SPEAR310_VIRQ_SMII0                   (SPEAR3XX_VIRQ_START + 0)
+ #define SPEAR310_VIRQ_SMII1                   (SPEAR3XX_VIRQ_START + 1)
+ #define SPEAR310_VIRQ_SMII2                   (SPEAR3XX_VIRQ_START + 2)
+ #define SPEAR310_VIRQ_SMII3                   (SPEAR3XX_VIRQ_START + 3)
+ #define SPEAR310_VIRQ_WAKEUP_SMII0            (SPEAR3XX_VIRQ_START + 4)
+ #define SPEAR310_VIRQ_WAKEUP_SMII1            (SPEAR3XX_VIRQ_START + 5)
+ #define SPEAR310_VIRQ_WAKEUP_SMII2            (SPEAR3XX_VIRQ_START + 6)
+ #define SPEAR310_VIRQ_WAKEUP_SMII3            (SPEAR3XX_VIRQ_START + 7)
+ /* IRQs sharing IRQ_GEN_RAS_2 */
+ #define SPEAR310_VIRQ_UART1                   (SPEAR3XX_VIRQ_START + 8)
+ #define SPEAR310_VIRQ_UART2                   (SPEAR3XX_VIRQ_START + 9)
+ #define SPEAR310_VIRQ_UART3                   (SPEAR3XX_VIRQ_START + 10)
+ #define SPEAR310_VIRQ_UART4                   (SPEAR3XX_VIRQ_START + 11)
+ #define SPEAR310_VIRQ_UART5                   (SPEAR3XX_VIRQ_START + 12)
+ /* IRQs sharing IRQ_GEN_RAS_3 */
+ #define SPEAR310_VIRQ_EMI                     (SPEAR3XX_VIRQ_START + 13)
+ #define SPEAR310_VIRQ_PLGPIO                  (SPEAR3XX_VIRQ_START + 14)
+ /* IRQs sharing IRQ_INTRCOMM_RAS_ARM */
+ #define SPEAR310_VIRQ_TDM_HDLC                        (SPEAR3XX_VIRQ_START + 15)
+ #define SPEAR310_VIRQ_RS485_0                 (SPEAR3XX_VIRQ_START + 16)
+ #define SPEAR310_VIRQ_RS485_1                 (SPEAR3XX_VIRQ_START + 17)
  
 -/* pad multiplexing support */
 -/* muxing registers */
 -#define PAD_MUX_CONFIG_REG    0x08
 -
 -/* devices */
 -static struct pmx_dev_mode pmx_emi_cs_0_1_4_5_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_TIMER_3_4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear310_pmx_emi_cs_0_1_4_5 = {
 -      .name = "emi_cs_0_1_4_5",
 -      .modes = pmx_emi_cs_0_1_4_5_modes,
 -      .mode_count = ARRAY_SIZE(pmx_emi_cs_0_1_4_5_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_emi_cs_2_3_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_TIMER_1_2_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear310_pmx_emi_cs_2_3 = {
 -      .name = "emi_cs_2_3",
 -      .modes = pmx_emi_cs_2_3_modes,
 -      .mode_count = ARRAY_SIZE(pmx_emi_cs_2_3_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_uart1_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_FIRDA_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear310_pmx_uart1 = {
 -      .name = "uart1",
 -      .modes = pmx_uart1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_uart1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_uart2_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_TIMER_1_2_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear310_pmx_uart2 = {
 -      .name = "uart2",
 -      .modes = pmx_uart2_modes,
 -      .mode_count = ARRAY_SIZE(pmx_uart2_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_uart3_4_5_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_UART0_MODEM_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear310_pmx_uart3_4_5 = {
 -      .name = "uart3_4_5",
 -      .modes = pmx_uart3_4_5_modes,
 -      .mode_count = ARRAY_SIZE(pmx_uart3_4_5_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_fsmc_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_SSP_CS_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear310_pmx_fsmc = {
 -      .name = "fsmc",
 -      .modes = pmx_fsmc_modes,
 -      .mode_count = ARRAY_SIZE(pmx_fsmc_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_rs485_0_1_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear310_pmx_rs485_0_1 = {
 -      .name = "rs485_0_1",
 -      .modes = pmx_rs485_0_1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_rs485_0_1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_tdm0_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear310_pmx_tdm0 = {
 -      .name = "tdm0",
 -      .modes = pmx_tdm0_modes,
 -      .mode_count = ARRAY_SIZE(pmx_tdm0_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -/* pmx driver structure */
 -static struct pmx_driver pmx_driver = {
 -      .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff},
 -};
 -
  /* spear3xx shared irq */
  static struct shirq_dev_config shirq_ras1_config[] = {
        {
@@@ -418,7 -637,7 +478,6 @@@ static const char * const spear310_dt_b
  static void __init spear310_map_io(void)
  {
        spear3xx_map_io();
--      spear310_clk_init();
  }
  
  DT_MACHINE_START(SPEAR310_DT, "ST SPEAr310 SoC with Flattened Device Tree")
  #include <asm/mach/arch.h>
  #include <plat/shirq.h>
  #include <mach/generic.h>
- #include <mach/hardware.h>
  #include <mach/spear.h>
  
 -#define SPEAR320_SOC_CONFIG_BASE      UL(0xB3000000)
+ #define SPEAR320_UART1_BASE           UL(0xA3000000)
+ #define SPEAR320_UART2_BASE           UL(0xA4000000)
+ #define SPEAR320_SSP0_BASE            UL(0xA5000000)
+ #define SPEAR320_SSP1_BASE            UL(0xA6000000)
 -/* pad multiplexing support */
 -/* muxing registers */
 -#define PAD_MUX_CONFIG_REG    0x0C
 -#define MODE_CONFIG_REG               0x10
 -
 -/* modes */
 -#define AUTO_NET_SMII_MODE    (1 << 0)
 -#define AUTO_NET_MII_MODE     (1 << 1)
 -#define AUTO_EXP_MODE         (1 << 2)
 -#define SMALL_PRINTERS_MODE   (1 << 3)
 -#define ALL_MODES             0xF
 -
 -struct pmx_mode spear320_auto_net_smii_mode = {
 -      .id = AUTO_NET_SMII_MODE,
 -      .name = "Automation Networking SMII Mode",
 -      .mask = 0x00,
 -};
 -
 -struct pmx_mode spear320_auto_net_mii_mode = {
 -      .id = AUTO_NET_MII_MODE,
 -      .name = "Automation Networking MII Mode",
 -      .mask = 0x01,
 -};
 -
 -struct pmx_mode spear320_auto_exp_mode = {
 -      .id = AUTO_EXP_MODE,
 -      .name = "Automation Expanded Mode",
 -      .mask = 0x02,
 -};
 -
 -struct pmx_mode spear320_small_printers_mode = {
 -      .id = SMALL_PRINTERS_MODE,
 -      .name = "Small Printers Mode",
 -      .mask = 0x03,
 -};
 -
 -/* devices */
 -static struct pmx_dev_mode pmx_clcd_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE,
 -              .mask = 0x0,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_clcd = {
 -      .name = "clcd",
 -      .modes = pmx_clcd_modes,
 -      .mode_count = ARRAY_SIZE(pmx_clcd_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_emi_modes[] = {
 -      {
 -              .ids = AUTO_EXP_MODE,
 -              .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_emi = {
 -      .name = "emi",
 -      .modes = pmx_emi_modes,
 -      .mode_count = ARRAY_SIZE(pmx_emi_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_fsmc_modes[] = {
 -      {
 -              .ids = ALL_MODES,
 -              .mask = 0x0,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_fsmc = {
 -      .name = "fsmc",
 -      .modes = pmx_fsmc_modes,
 -      .mode_count = ARRAY_SIZE(pmx_fsmc_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_spp_modes[] = {
 -      {
 -              .ids = SMALL_PRINTERS_MODE,
 -              .mask = 0x0,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_spp = {
 -      .name = "spp",
 -      .modes = pmx_spp_modes,
 -      .mode_count = ARRAY_SIZE(pmx_spp_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_sdhci_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE |
 -                      SMALL_PRINTERS_MODE,
 -              .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_sdhci = {
 -      .name = "sdhci",
 -      .modes = pmx_sdhci_modes,
 -      .mode_count = ARRAY_SIZE(pmx_sdhci_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_i2s_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
 -              .mask = PMX_UART0_MODEM_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_i2s = {
 -      .name = "i2s",
 -      .modes = pmx_i2s_modes,
 -      .mode_count = ARRAY_SIZE(pmx_i2s_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_uart1_modes[] = {
 -      {
 -              .ids = ALL_MODES,
 -              .mask = PMX_GPIO_PIN0_MASK | PMX_GPIO_PIN1_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_uart1 = {
 -      .name = "uart1",
 -      .modes = pmx_uart1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_uart1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_uart1_modem_modes[] = {
 -      {
 -              .ids = AUTO_EXP_MODE,
 -              .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK |
 -                      PMX_SSP_CS_MASK,
 -      }, {
 -              .ids = SMALL_PRINTERS_MODE,
 -              .mask = PMX_GPIO_PIN3_MASK | PMX_GPIO_PIN4_MASK |
 -                      PMX_GPIO_PIN5_MASK | PMX_SSP_CS_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_uart1_modem = {
 -      .name = "uart1_modem",
 -      .modes = pmx_uart1_modem_modes,
 -      .mode_count = ARRAY_SIZE(pmx_uart1_modem_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_uart2_modes[] = {
 -      {
 -              .ids = ALL_MODES,
 -              .mask = PMX_FIRDA_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_uart2 = {
 -      .name = "uart2",
 -      .modes = pmx_uart2_modes,
 -      .mode_count = ARRAY_SIZE(pmx_uart2_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_touchscreen_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE,
 -              .mask = PMX_SSP_CS_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_touchscreen = {
 -      .name = "touchscreen",
 -      .modes = pmx_touchscreen_modes,
 -      .mode_count = ARRAY_SIZE(pmx_touchscreen_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_can_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE | AUTO_EXP_MODE,
 -              .mask = PMX_GPIO_PIN2_MASK | PMX_GPIO_PIN3_MASK |
 -                      PMX_GPIO_PIN4_MASK | PMX_GPIO_PIN5_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_can = {
 -      .name = "can",
 -      .modes = pmx_can_modes,
 -      .mode_count = ARRAY_SIZE(pmx_can_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_sdhci_led_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
 -              .mask = PMX_SSP_CS_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_sdhci_led = {
 -      .name = "sdhci_led",
 -      .modes = pmx_sdhci_led_modes,
 -      .mode_count = ARRAY_SIZE(pmx_sdhci_led_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_pwm0_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
 -              .mask = PMX_UART0_MODEM_MASK,
 -      }, {
 -              .ids = AUTO_EXP_MODE | SMALL_PRINTERS_MODE,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_pwm0 = {
 -      .name = "pwm0",
 -      .modes = pmx_pwm0_modes,
 -      .mode_count = ARRAY_SIZE(pmx_pwm0_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_pwm1_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
 -              .mask = PMX_UART0_MODEM_MASK,
 -      }, {
 -              .ids = AUTO_EXP_MODE | SMALL_PRINTERS_MODE,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_pwm1 = {
 -      .name = "pwm1",
 -      .modes = pmx_pwm1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_pwm1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_pwm2_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
 -              .mask = PMX_SSP_CS_MASK,
 -      }, {
 -              .ids = AUTO_EXP_MODE | SMALL_PRINTERS_MODE,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_pwm2 = {
 -      .name = "pwm2",
 -      .modes = pmx_pwm2_modes,
 -      .mode_count = ARRAY_SIZE(pmx_pwm2_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_pwm3_modes[] = {
 -      {
 -              .ids = AUTO_EXP_MODE | SMALL_PRINTERS_MODE | AUTO_NET_SMII_MODE,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_pwm3 = {
 -      .name = "pwm3",
 -      .modes = pmx_pwm3_modes,
 -      .mode_count = ARRAY_SIZE(pmx_pwm3_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_ssp1_modes[] = {
 -      {
 -              .ids = SMALL_PRINTERS_MODE | AUTO_NET_SMII_MODE,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_ssp1 = {
 -      .name = "ssp1",
 -      .modes = pmx_ssp1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_ssp1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_ssp2_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_ssp2 = {
 -      .name = "ssp2",
 -      .modes = pmx_ssp2_modes,
 -      .mode_count = ARRAY_SIZE(pmx_ssp2_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_mii1_modes[] = {
 -      {
 -              .ids = AUTO_NET_MII_MODE,
 -              .mask = 0x0,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_mii1 = {
 -      .name = "mii1",
 -      .modes = pmx_mii1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_mii1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_smii0_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE | AUTO_EXP_MODE | SMALL_PRINTERS_MODE,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_smii0 = {
 -      .name = "smii0",
 -      .modes = pmx_smii0_modes,
 -      .mode_count = ARRAY_SIZE(pmx_smii0_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_smii1_modes[] = {
 -      {
 -              .ids = AUTO_NET_SMII_MODE | SMALL_PRINTERS_MODE,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_smii1 = {
 -      .name = "smii1",
 -      .modes = pmx_smii1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_smii1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_i2c1_modes[] = {
 -      {
 -              .ids = AUTO_EXP_MODE,
 -              .mask = 0x0,
 -      },
 -};
 -
 -struct pmx_dev spear320_pmx_i2c1 = {
 -      .name = "i2c1",
 -      .modes = pmx_i2c1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_i2c1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -/* pmx driver structure */
 -static struct pmx_driver pmx_driver = {
 -      .mode_reg = {.offset = MODE_CONFIG_REG, .mask = 0x00000007},
 -      .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff},
 -};
 -
+ /* Interrupt registers offsets and masks */
+ #define SPEAR320_INT_STS_MASK_REG             0x04
+ #define SPEAR320_INT_CLR_MASK_REG             0x04
+ #define SPEAR320_INT_ENB_MASK_REG             0x08
+ #define SPEAR320_GPIO_IRQ_MASK                        (1 << 0)
+ #define SPEAR320_I2S_PLAY_IRQ_MASK            (1 << 1)
+ #define SPEAR320_I2S_REC_IRQ_MASK             (1 << 2)
+ #define SPEAR320_EMI_IRQ_MASK                 (1 << 7)
+ #define SPEAR320_CLCD_IRQ_MASK                        (1 << 8)
+ #define SPEAR320_SPP_IRQ_MASK                 (1 << 9)
+ #define SPEAR320_SDHCI_IRQ_MASK                       (1 << 10)
+ #define SPEAR320_CAN_U_IRQ_MASK                       (1 << 11)
+ #define SPEAR320_CAN_L_IRQ_MASK                       (1 << 12)
+ #define SPEAR320_UART1_IRQ_MASK                       (1 << 13)
+ #define SPEAR320_UART2_IRQ_MASK                       (1 << 14)
+ #define SPEAR320_SSP1_IRQ_MASK                        (1 << 15)
+ #define SPEAR320_SSP2_IRQ_MASK                        (1 << 16)
+ #define SPEAR320_SMII0_IRQ_MASK                       (1 << 17)
+ #define SPEAR320_MII1_SMII1_IRQ_MASK          (1 << 18)
+ #define SPEAR320_WAKEUP_SMII0_IRQ_MASK                (1 << 19)
+ #define SPEAR320_WAKEUP_MII1_SMII1_IRQ_MASK   (1 << 20)
+ #define SPEAR320_I2C1_IRQ_MASK                        (1 << 21)
+ #define SPEAR320_SHIRQ_RAS1_MASK              0x000380
+ #define SPEAR320_SHIRQ_RAS3_MASK              0x000007
+ #define SPEAR320_SHIRQ_INTRCOMM_RAS_MASK      0x3FF800
+ /* SPEAr320 Virtual irq definitions */
+ /* IRQs sharing IRQ_GEN_RAS_1 */
+ #define SPEAR320_VIRQ_EMI                     (SPEAR3XX_VIRQ_START + 0)
+ #define SPEAR320_VIRQ_CLCD                    (SPEAR3XX_VIRQ_START + 1)
+ #define SPEAR320_VIRQ_SPP                     (SPEAR3XX_VIRQ_START + 2)
+ /* IRQs sharing IRQ_GEN_RAS_2 */
+ #define SPEAR320_IRQ_SDHCI                    SPEAR3XX_IRQ_GEN_RAS_2
+ /* IRQs sharing IRQ_GEN_RAS_3 */
+ #define SPEAR320_VIRQ_PLGPIO                  (SPEAR3XX_VIRQ_START + 3)
+ #define SPEAR320_VIRQ_I2S_PLAY                        (SPEAR3XX_VIRQ_START + 4)
+ #define SPEAR320_VIRQ_I2S_REC                 (SPEAR3XX_VIRQ_START + 5)
+ /* IRQs sharing IRQ_INTRCOMM_RAS_ARM */
+ #define SPEAR320_VIRQ_CANU                    (SPEAR3XX_VIRQ_START + 6)
+ #define SPEAR320_VIRQ_CANL                    (SPEAR3XX_VIRQ_START + 7)
+ #define SPEAR320_VIRQ_UART1                   (SPEAR3XX_VIRQ_START + 8)
+ #define SPEAR320_VIRQ_UART2                   (SPEAR3XX_VIRQ_START + 9)
+ #define SPEAR320_VIRQ_SSP1                    (SPEAR3XX_VIRQ_START + 10)
+ #define SPEAR320_VIRQ_SSP2                    (SPEAR3XX_VIRQ_START + 11)
+ #define SPEAR320_VIRQ_SMII0                   (SPEAR3XX_VIRQ_START + 12)
+ #define SPEAR320_VIRQ_MII1_SMII1              (SPEAR3XX_VIRQ_START + 13)
+ #define SPEAR320_VIRQ_WAKEUP_SMII0            (SPEAR3XX_VIRQ_START + 14)
+ #define SPEAR320_VIRQ_WAKEUP_MII1_SMII1               (SPEAR3XX_VIRQ_START + 15)
+ #define SPEAR320_VIRQ_I2C1                    (SPEAR3XX_VIRQ_START + 16)
  /* spear3xx shared irq */
  static struct shirq_dev_config shirq_ras1_config[] = {
        {
@@@ -422,10 -882,10 +480,19 @@@ static const char * const spear320_dt_b
        NULL,
  };
  
++struct map_desc spear320_io_desc[] __initdata = {
++      {
++              .virtual        = VA_SPEAR320_SOC_CONFIG_BASE,
++              .pfn            = __phys_to_pfn(SPEAR320_SOC_CONFIG_BASE),
++              .length         = SZ_16M,
++              .type           = MT_DEVICE
++      },
++};
++
  static void __init spear320_map_io(void)
  {
++      iotable_init(spear320_io_desc, ARRAY_SIZE(spear320_io_desc));
        spear3xx_map_io();
--      spear320_clk_init();
  }
  
  DT_MACHINE_START(SPEAR320_DT, "ST SPEAr320 SoC with Flattened Device Tree")
  #include <asm/hardware/vic.h>
  #include <plat/pl080.h>
  #include <mach/generic.h>
- #include <mach/hardware.h>
+ #include <mach/spear.h>
  
 -/* pad multiplexing support */
 -/* devices */
 -static struct pmx_dev_mode pmx_firda_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_FIRDA_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_firda = {
 -      .name = "firda",
 -      .modes = pmx_firda_modes,
 -      .mode_count = ARRAY_SIZE(pmx_firda_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_i2c_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_I2C_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_i2c = {
 -      .name = "i2c",
 -      .modes = pmx_i2c_modes,
 -      .mode_count = ARRAY_SIZE(pmx_i2c_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_ssp_cs_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_SSP_CS_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_ssp_cs = {
 -      .name = "ssp_chip_selects",
 -      .modes = pmx_ssp_cs_modes,
 -      .mode_count = ARRAY_SIZE(pmx_ssp_cs_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_ssp_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_SSP_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_ssp = {
 -      .name = "ssp",
 -      .modes = pmx_ssp_modes,
 -      .mode_count = ARRAY_SIZE(pmx_ssp_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_mii_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_mii = {
 -      .name = "mii",
 -      .modes = pmx_mii_modes,
 -      .mode_count = ARRAY_SIZE(pmx_mii_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_gpio_pin0_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_GPIO_PIN0_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_gpio_pin0 = {
 -      .name = "gpio_pin0",
 -      .modes = pmx_gpio_pin0_modes,
 -      .mode_count = ARRAY_SIZE(pmx_gpio_pin0_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_gpio_pin1_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_GPIO_PIN1_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_gpio_pin1 = {
 -      .name = "gpio_pin1",
 -      .modes = pmx_gpio_pin1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_gpio_pin1_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_gpio_pin2_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_GPIO_PIN2_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_gpio_pin2 = {
 -      .name = "gpio_pin2",
 -      .modes = pmx_gpio_pin2_modes,
 -      .mode_count = ARRAY_SIZE(pmx_gpio_pin2_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_gpio_pin3_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_GPIO_PIN3_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_gpio_pin3 = {
 -      .name = "gpio_pin3",
 -      .modes = pmx_gpio_pin3_modes,
 -      .mode_count = ARRAY_SIZE(pmx_gpio_pin3_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_gpio_pin4_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_GPIO_PIN4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_gpio_pin4 = {
 -      .name = "gpio_pin4",
 -      .modes = pmx_gpio_pin4_modes,
 -      .mode_count = ARRAY_SIZE(pmx_gpio_pin4_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_gpio_pin5_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_GPIO_PIN5_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_gpio_pin5 = {
 -      .name = "gpio_pin5",
 -      .modes = pmx_gpio_pin5_modes,
 -      .mode_count = ARRAY_SIZE(pmx_gpio_pin5_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_uart0_modem_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_UART0_MODEM_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_uart0_modem = {
 -      .name = "uart0_modem",
 -      .modes = pmx_uart0_modem_modes,
 -      .mode_count = ARRAY_SIZE(pmx_uart0_modem_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_uart0_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_UART0_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_uart0 = {
 -      .name = "uart0",
 -      .modes = pmx_uart0_modes,
 -      .mode_count = ARRAY_SIZE(pmx_uart0_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_timer_3_4_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_TIMER_3_4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_timer_3_4 = {
 -      .name = "timer_3_4",
 -      .modes = pmx_timer_3_4_modes,
 -      .mode_count = ARRAY_SIZE(pmx_timer_3_4_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -static struct pmx_dev_mode pmx_timer_1_2_modes[] = {
 -      {
 -              .ids = 0xffffffff,
 -              .mask = PMX_TIMER_1_2_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_timer_1_2 = {
 -      .name = "timer_1_2",
 -      .modes = pmx_timer_1_2_modes,
 -      .mode_count = ARRAY_SIZE(pmx_timer_1_2_modes),
 -      .enb_on_reset = 0,
 -};
 -
 -#if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320)
 -/* plgpios devices */
 -static struct pmx_dev_mode pmx_plgpio_0_1_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_FIRDA_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_0_1 = {
 -      .name = "plgpio 0 and 1",
 -      .modes = pmx_plgpio_0_1_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_0_1_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_2_3_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_UART0_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_2_3 = {
 -      .name = "plgpio 2 and 3",
 -      .modes = pmx_plgpio_2_3_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_2_3_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_4_5_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_I2C_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_4_5 = {
 -      .name = "plgpio 4 and 5",
 -      .modes = pmx_plgpio_4_5_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_4_5_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_6_9_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_SSP_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_6_9 = {
 -      .name = "plgpio 6 to 9",
 -      .modes = pmx_plgpio_6_9_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_6_9_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_10_27_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_MII_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_10_27 = {
 -      .name = "plgpio 10 to 27",
 -      .modes = pmx_plgpio_10_27_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_10_27_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_28_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_GPIO_PIN0_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_28 = {
 -      .name = "plgpio 28",
 -      .modes = pmx_plgpio_28_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_28_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_29_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_GPIO_PIN1_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_29 = {
 -      .name = "plgpio 29",
 -      .modes = pmx_plgpio_29_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_29_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_30_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_GPIO_PIN2_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_30 = {
 -      .name = "plgpio 30",
 -      .modes = pmx_plgpio_30_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_30_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_31_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_GPIO_PIN3_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_31 = {
 -      .name = "plgpio 31",
 -      .modes = pmx_plgpio_31_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_31_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_32_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_GPIO_PIN4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_32 = {
 -      .name = "plgpio 32",
 -      .modes = pmx_plgpio_32_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_32_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_33_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_GPIO_PIN5_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_33 = {
 -      .name = "plgpio 33",
 -      .modes = pmx_plgpio_33_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_33_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_34_36_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_SSP_CS_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_34_36 = {
 -      .name = "plgpio 34 to 36",
 -      .modes = pmx_plgpio_34_36_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_34_36_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_37_42_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_UART0_MODEM_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_37_42 = {
 -      .name = "plgpio 37 to 42",
 -      .modes = pmx_plgpio_37_42_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_37_42_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_43_44_47_48_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_TIMER_1_2_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_43_44_47_48 = {
 -      .name = "plgpio 43, 44, 47 and 48",
 -      .modes = pmx_plgpio_43_44_47_48_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_43_44_47_48_modes),
 -      .enb_on_reset = 1,
 -};
 -
 -static struct pmx_dev_mode pmx_plgpio_45_46_49_50_modes[] = {
 -      {
 -              .ids = 0x00,
 -              .mask = PMX_TIMER_3_4_MASK,
 -      },
 -};
 -
 -struct pmx_dev spear3xx_pmx_plgpio_45_46_49_50 = {
 -      .name = "plgpio 45, 46, 49 and 50",
 -      .modes = pmx_plgpio_45_46_49_50_modes,
 -      .mode_count = ARRAY_SIZE(pmx_plgpio_45_46_49_50_modes),
 -      .enb_on_reset = 1,
 -};
 -#endif /* CONFIG_MACH_SPEAR310 || CONFIG_MACH_SPEAR320 */
 -
  /* ssp device registration */
  struct pl022_ssp_controller pl022_plat_data = {
        .bus_id = 0,
@@@ -14,9 -14,7 +14,9 @@@
  #ifndef __MACH_MISC_REGS_H
  #define __MACH_MISC_REGS_H
  
- #include <mach/hardware.h>
 +#include <mach/spear.h>
 +
  #define MISC_BASE             IOMEM(VA_SPEAR6XX_ICM3_MISC_REG_BASE)
+ #define DMA_CHN_CFG           (MISC_BASE + 0x0A0)
  
  #endif /* __MACH_MISC_REGS_H */
Simple merge
@@@ -219,13 -233,13 +233,13 @@@ void __init spear_setup_of_timer(void
                goto err_iomap;
        }
  
 -      ret = clk_enable(gpt_clk);
 +      ret = clk_prepare_enable(gpt_clk);
        if (ret < 0) {
 -              pr_err("%s:couldn't enable gpt clock\n", __func__);
 -              goto err_clk;
 +              pr_err("%s:couldn't prepare-enable gpt clock\n", __func__);
 +              goto err_prepare_enable_clk;
        }
  
-       spear_clockevent_init();
+       spear_clockevent_init(irq);
        spear_clocksource_init();
  
        return;