diff mbox

[U-Boot,v3,03/15] imx: mx6ul: Update imx registers head file

Message ID 1437391715-1344-4-git-send-email-Peng.Fan@freescale.com
State Awaiting Upstream
Delegated to: Stefano Babic
Headers show

Commit Message

Peng Fan July 20, 2015, 11:28 a.m. UTC
1. Update imx register base address for i.MX6UL.
2. Remove duplicated MXS_APBH/GPMI/BCH_BASE.
3. Remove #ifdef for register addresses that equal to
   "AIPS2_OFF_BASE_ADDR + 0x34000" for different chips.
4. According fuse map, complete fuse_bank4_regs.
5. Move AIPS3_ARB_BASE_ADDR and AIPS3_ARB_END_ADDR out of #ifdef CONFIG_MX6SX,
   because we can use runtime check

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
---

Changes v3:
 Taking Marek's suggestion, fix the WDOG3_BASE_ADDRESS for assembler usage. 

Changes v2:
 split CONFIG_SYS_CACHELINE_SIZE part into another patch

 arch/arm/include/asm/arch-mx6/imx-regs.h | 60 +++++++++++++++++++-------------
 1 file changed, 35 insertions(+), 25 deletions(-)

Comments

Marek Vasut July 20, 2015, 6:39 p.m. UTC | #1
On Monday, July 20, 2015 at 01:28:23 PM, Peng Fan wrote:
> 1. Update imx register base address for i.MX6UL.
> 2. Remove duplicated MXS_APBH/GPMI/BCH_BASE.
> 3. Remove #ifdef for register addresses that equal to
>    "AIPS2_OFF_BASE_ADDR + 0x34000" for different chips.
> 4. According fuse map, complete fuse_bank4_regs.
> 5. Move AIPS3_ARB_BASE_ADDR and AIPS3_ARB_END_ADDR out of #ifdef
> CONFIG_MX6SX, because we can use runtime check
> 
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>

[...]

> @@ -296,7 +300,6 @@
>  #define AIPS3_CONFIG_BASE_ADDR      (AIPS3_ARB_BASE_ADDR + 0x7C000)
>  #define ADC1_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0x80000)
>  #define ADC2_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0x84000)
> -#define WDOG3_BASE_ADDR             (AIPS3_ARB_BASE_ADDR + 0x88000)
>  #define ECSPI5_BASE_ADDR            (AIPS3_ARB_BASE_ADDR + 0x8C000)
>  #define HS_BASE_ADDR                (AIPS3_ARB_BASE_ADDR + 0x90000)
>  #define MU_MCU_BASE_ADDR            (AIPS3_ARB_BASE_ADDR + 0x94000)
> @@ -308,12 +311,17 @@
>  #define PWM7_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0xAC000)
>  #define PWM8_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0xB0000)
>  #endif
> +#define MX6SX_WDOG3_BASE_ADDR       (AIPS3_ARB_BASE_ADDR + 0x88000)
> +
> +/* only for i.MX6SX/UL */
> +#define WDOG3_BASE_ADDR (is_cpu_type(MXC_CPU_MX6UL) ?	\
> +			 MX6UL_WDOG3_BASE_ADDR :  MX6SX_WDOG3_BASE_ADDR)

Nitpick -- this should probably be protected by #ifndef __ASSELMBLY__ .

Best regards,
Marek Vasut
Stefano Babic Aug. 2, 2015, 9:07 a.m. UTC | #2
On 20/07/2015 20:39, Marek Vasut wrote:
> On Monday, July 20, 2015 at 01:28:23 PM, Peng Fan wrote:
>> 1. Update imx register base address for i.MX6UL.
>> 2. Remove duplicated MXS_APBH/GPMI/BCH_BASE.
>> 3. Remove #ifdef for register addresses that equal to
>>    "AIPS2_OFF_BASE_ADDR + 0x34000" for different chips.
>> 4. According fuse map, complete fuse_bank4_regs.
>> 5. Move AIPS3_ARB_BASE_ADDR and AIPS3_ARB_END_ADDR out of #ifdef
>> CONFIG_MX6SX, because we can use runtime check
>>
>> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> 
> [...]
> 
>> @@ -296,7 +300,6 @@
>>  #define AIPS3_CONFIG_BASE_ADDR      (AIPS3_ARB_BASE_ADDR + 0x7C000)
>>  #define ADC1_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0x80000)
>>  #define ADC2_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0x84000)
>> -#define WDOG3_BASE_ADDR             (AIPS3_ARB_BASE_ADDR + 0x88000)
>>  #define ECSPI5_BASE_ADDR            (AIPS3_ARB_BASE_ADDR + 0x8C000)
>>  #define HS_BASE_ADDR                (AIPS3_ARB_BASE_ADDR + 0x90000)
>>  #define MU_MCU_BASE_ADDR            (AIPS3_ARB_BASE_ADDR + 0x94000)
>> @@ -308,12 +311,17 @@
>>  #define PWM7_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0xAC000)
>>  #define PWM8_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0xB0000)
>>  #endif
>> +#define MX6SX_WDOG3_BASE_ADDR       (AIPS3_ARB_BASE_ADDR + 0x88000)
>> +
>> +/* only for i.MX6SX/UL */
>> +#define WDOG3_BASE_ADDR (is_cpu_type(MXC_CPU_MX6UL) ?	\
>> +			 MX6UL_WDOG3_BASE_ADDR :  MX6SX_WDOG3_BASE_ADDR)
> 
> Nitpick -- this should probably be protected by #ifndef __ASSELMBLY__ .
> 

Anyway, I decided to apply it - it could be easy fixed with a follow up
patch if this case arises.

Best regards,
Stefano Babic
Stefano Babic Aug. 2, 2015, 9:15 a.m. UTC | #3
On 20/07/2015 13:28, Peng Fan wrote:
> 1. Update imx register base address for i.MX6UL.
> 2. Remove duplicated MXS_APBH/GPMI/BCH_BASE.
> 3. Remove #ifdef for register addresses that equal to
>    "AIPS2_OFF_BASE_ADDR + 0x34000" for different chips.
> 4. According fuse map, complete fuse_bank4_regs.
> 5. Move AIPS3_ARB_BASE_ADDR and AIPS3_ARB_END_ADDR out of #ifdef CONFIG_MX6SX,
>    because we can use runtime check
> 
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> ---
> 
> Changes v3:
>  Taking Marek's suggestion, fix the WDOG3_BASE_ADDRESS for assembler usage. 
> 
> Changes v2:
>  split CONFIG_SYS_CACHELINE_SIZE part into another patch
> 
>  arch/arm/include/asm/arch-mx6/imx-regs.h | 60 +++++++++++++++++++-------------
>  1 file changed, 35 insertions(+), 25 deletions(-)
> 
> diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h b/arch/arm/include/asm/arch-mx6/imx-regs.h
> index 35a324c..d8b5d6f 100644
> --- a/arch/arm/include/asm/arch-mx6/imx-regs.h
> +++ b/arch/arm/include/asm/arch-mx6/imx-regs.h
> @@ -19,7 +19,7 @@
>  #define GPU_2D_ARB_END_ADDR             0x02203FFF
>  #define OPENVG_ARB_BASE_ADDR            0x02204000
>  #define OPENVG_ARB_END_ADDR             0x02207FFF
> -#elif CONFIG_MX6SX
> +#elif (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
>  #define CAAM_ARB_BASE_ADDR              0x00100000
>  #define CAAM_ARB_END_ADDR               0x00107FFF
>  #define GPU_ARB_BASE_ADDR               0x01800000
> @@ -28,10 +28,6 @@
>  #define APBH_DMA_ARB_END_ADDR           0x0180BFFF
>  #define M4_BOOTROM_BASE_ADDR			0x007F8000
>  
> -#define MXS_APBH_BASE			APBH_DMA_ARB_BASE_ADDR
> -#define MXS_GPMI_BASE			(APBH_DMA_ARB_BASE_ADDR + 0x02000)
> -#define MXS_BCH_BASE			(APBH_DMA_ARB_BASE_ADDR + 0x04000)
> -
>  #else
>  #define CAAM_ARB_BASE_ADDR              0x00100000
>  #define CAAM_ARB_END_ADDR               0x00103FFF
> @@ -52,13 +48,13 @@
>  #define MXS_BCH_BASE			(APBH_DMA_ARB_BASE_ADDR + 0x04000)
>  
>  /* GPV - PL301 configuration ports */
> -#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX))
> +#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
>  #define GPV2_BASE_ADDR                  0x00D00000
>  #else
>  #define GPV2_BASE_ADDR			0x00200000
>  #endif
>  
> -#ifdef CONFIG_MX6SX
> +#if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
>  #define GPV3_BASE_ADDR			0x00E00000
>  #define GPV4_BASE_ADDR			0x00F00000
>  #define GPV5_BASE_ADDR			0x01000000
> @@ -87,15 +83,21 @@
>  #define AIPS1_ARB_END_ADDR              0x020FFFFF
>  #define AIPS2_ARB_BASE_ADDR             0x02100000
>  #define AIPS2_ARB_END_ADDR              0x021FFFFF
> -#ifdef CONFIG_MX6SX
> +/* AIPS3 only on i.MX6SX */
>  #define AIPS3_ARB_BASE_ADDR             0x02200000
>  #define AIPS3_ARB_END_ADDR              0x022FFFFF
> +#ifdef CONFIG_MX6SX
>  #define WEIM_ARB_BASE_ADDR              0x50000000
>  #define WEIM_ARB_END_ADDR               0x57FFFFFF
>  #define QSPI0_AMBA_BASE                0x60000000
>  #define QSPI0_AMBA_END                 0x6FFFFFFF
>  #define QSPI1_AMBA_BASE                0x70000000
>  #define QSPI1_AMBA_END                 0x7FFFFFFF
> +#elif defined(CONFIG_MX6UL)
> +#define WEIM_ARB_BASE_ADDR              0x50000000
> +#define WEIM_ARB_END_ADDR               0x57FFFFFF
> +#define QSPI0_AMBA_BASE                 0x60000000
> +#define QSPI0_AMBA_END                  0x6FFFFFFF
>  #else
>  #define SATA_ARB_BASE_ADDR              0x02200000
>  #define SATA_ARB_END_ADDR               0x02203FFF
> @@ -111,7 +113,7 @@
>  #define WEIM_ARB_END_ADDR               0x0FFFFFFF
>  #endif
>  
> -#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX))
> +#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
>  #define MMDC0_ARB_BASE_ADDR             0x80000000
>  #define MMDC0_ARB_END_ADDR              0xFFFFFFFF
>  #define MMDC1_ARB_BASE_ADDR             0xC0000000
> @@ -238,13 +240,16 @@
>  #define I2C3_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x28000)
>  #define ROMCP_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x2C000)
>  #define MMDC_P0_BASE_ADDR           (AIPS2_OFF_BASE_ADDR + 0x30000)
> -#ifdef CONFIG_MX6SL
> +/* i.MX6SL */
>  #define RNGB_IPS_BASE_ADDR          (AIPS2_OFF_BASE_ADDR + 0x34000)
> -#elif CONFIG_MX6SX
> -#define ENET2_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x34000)
> +#ifdef CONFIG_MX6UL
> +#define ENET2_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x34000)
>  #else
> -#define MMDC_P1_BASE_ADDR           (AIPS2_OFF_BASE_ADDR + 0x34000)
> +/* i.MX6SX */
> +#define ENET2_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x34000)
>  #endif
> +/* i.MX6DQ/SDL */
> +#define MMDC_P1_BASE_ADDR           (AIPS2_OFF_BASE_ADDR + 0x34000)
>  
>  #define WEIM_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x38000)
>  #define OCOTP_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x3C000)
> @@ -257,22 +262,21 @@
>  #define IP2APB_PERFMON3_BASE_ADDR   (AIPS2_OFF_BASE_ADDR + 0x4C000)
>  #endif
>  #define IP2APB_TZASC1_BASE_ADDR     (AIPS2_OFF_BASE_ADDR + 0x50000)
> -#ifdef CONFIG_MX6SX
> +#ifdef CONFIG_MX6UL
> +#define QSPI0_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x60000)
> +#elif defined(CONFIG_MX6SX)
>  #define SAI1_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x54000)
> -#else
> -#define IP2APB_TZASC2_BASE_ADDR     (AIPS2_OFF_BASE_ADDR + 0x54000)
> -#endif
>  #define AUDMUX_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x58000)
> -#define AUDMUX_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x58000)
> -#ifdef CONFIG_MX6SX
>  #define SAI2_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x5C000)
>  #define QSPI0_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x60000)
>  #define QSPI1_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x64000)
>  #else
> +#define IP2APB_TZASC2_BASE_ADDR     (AIPS2_OFF_BASE_ADDR + 0x54000)
>  #define MIPI_CSI2_BASE_ADDR         (AIPS2_OFF_BASE_ADDR + 0x5C000)
>  #define MIPI_DSI_BASE_ADDR          (AIPS2_OFF_BASE_ADDR + 0x60000)
>  #define VDOA_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x64000)
>  #endif
> +#define MX6UL_WDOG3_BASE_ADDR       (AIPS2_OFF_BASE_ADDR + 0x64000)
>  #define UART2_BASE                  (AIPS2_OFF_BASE_ADDR + 0x68000)
>  #define UART3_BASE                  (AIPS2_OFF_BASE_ADDR + 0x6C000)
>  #define UART4_BASE                  (AIPS2_OFF_BASE_ADDR + 0x70000)
> @@ -296,7 +300,6 @@
>  #define AIPS3_CONFIG_BASE_ADDR      (AIPS3_ARB_BASE_ADDR + 0x7C000)
>  #define ADC1_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0x80000)
>  #define ADC2_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0x84000)
> -#define WDOG3_BASE_ADDR             (AIPS3_ARB_BASE_ADDR + 0x88000)
>  #define ECSPI5_BASE_ADDR            (AIPS3_ARB_BASE_ADDR + 0x8C000)
>  #define HS_BASE_ADDR                (AIPS3_ARB_BASE_ADDR + 0x90000)
>  #define MU_MCU_BASE_ADDR            (AIPS3_ARB_BASE_ADDR + 0x94000)
> @@ -308,12 +311,17 @@
>  #define PWM7_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0xAC000)
>  #define PWM8_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0xB0000)
>  #endif
> +#define MX6SX_WDOG3_BASE_ADDR       (AIPS3_ARB_BASE_ADDR + 0x88000)
> +
> +/* only for i.MX6SX/UL */
> +#define WDOG3_BASE_ADDR (is_cpu_type(MXC_CPU_MX6UL) ?	\
> +			 MX6UL_WDOG3_BASE_ADDR :  MX6SX_WDOG3_BASE_ADDR)
>  
>  #define CHIP_REV_1_0                 0x10
>  #define CHIP_REV_1_2                 0x12
>  #define CHIP_REV_1_5                 0x15
>  #define CHIP_REV_2_0                 0x20
> -#ifndef CONFIG_MX6SX
> +#if !(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
>  #define IRAM_SIZE                    0x00040000
>  #else
>  #define IRAM_SIZE                    0x00020000
> @@ -451,7 +459,7 @@ struct src {
>  
>  
>  struct iomuxc {
> -#ifdef CONFIG_MX6SX
> +#if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
>  	u8 reserved[0x4000];
>  #endif
>  	u32 gpr[14];
> @@ -577,7 +585,7 @@ struct cspi_regs {
>  #define MXC_CSPICON_POL		4  /* SCLK polarity */
>  #define MXC_CSPICON_SSPOL	12 /* SS polarity */
>  #define MXC_CSPICON_CTL		20 /* inactive state of SCLK */
> -#if defined(CONFIG_MX6SL) || defined(CONFIG_MX6DL)
> +#if defined(CONFIG_MX6SL) || defined(CONFIG_MX6DL) || defined(CONFIG_MX6UL)
>  #define MXC_SPI_BASE_ADDRESSES \
>  	ECSPI1_BASE_ADDR, \
>  	ECSPI2_BASE_ADDR, \
> @@ -661,7 +669,7 @@ struct fuse_bank1_regs {
>  	u32	rsvd7[3];
>  };
>  
> -#ifdef CONFIG_MX6SX
> +#if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
>  struct fuse_bank4_regs {
>  	u32 sjc_resp_low;
>  	u32 rsvd0[3];
> @@ -674,7 +682,9 @@ struct fuse_bank4_regs {
>  	u32 mac_addr2;
>  	u32 rsvd4[7];
>  	u32 gp1;
> -	u32 rsvd5[7];
> +	u32 rsvd5[3];
> +	u32 gp2;
> +	u32 rsvd6[3];
>  };
>  #else
>  struct fuse_bank4_regs {
> 
Applied to u-boot-imx, thanks !

Best regards,
Stefano Babic
diff mbox

Patch

diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h b/arch/arm/include/asm/arch-mx6/imx-regs.h
index 35a324c..d8b5d6f 100644
--- a/arch/arm/include/asm/arch-mx6/imx-regs.h
+++ b/arch/arm/include/asm/arch-mx6/imx-regs.h
@@ -19,7 +19,7 @@ 
 #define GPU_2D_ARB_END_ADDR             0x02203FFF
 #define OPENVG_ARB_BASE_ADDR            0x02204000
 #define OPENVG_ARB_END_ADDR             0x02207FFF
-#elif CONFIG_MX6SX
+#elif (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
 #define CAAM_ARB_BASE_ADDR              0x00100000
 #define CAAM_ARB_END_ADDR               0x00107FFF
 #define GPU_ARB_BASE_ADDR               0x01800000
@@ -28,10 +28,6 @@ 
 #define APBH_DMA_ARB_END_ADDR           0x0180BFFF
 #define M4_BOOTROM_BASE_ADDR			0x007F8000
 
-#define MXS_APBH_BASE			APBH_DMA_ARB_BASE_ADDR
-#define MXS_GPMI_BASE			(APBH_DMA_ARB_BASE_ADDR + 0x02000)
-#define MXS_BCH_BASE			(APBH_DMA_ARB_BASE_ADDR + 0x04000)
-
 #else
 #define CAAM_ARB_BASE_ADDR              0x00100000
 #define CAAM_ARB_END_ADDR               0x00103FFF
@@ -52,13 +48,13 @@ 
 #define MXS_BCH_BASE			(APBH_DMA_ARB_BASE_ADDR + 0x04000)
 
 /* GPV - PL301 configuration ports */
-#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX))
+#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
 #define GPV2_BASE_ADDR                  0x00D00000
 #else
 #define GPV2_BASE_ADDR			0x00200000
 #endif
 
-#ifdef CONFIG_MX6SX
+#if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
 #define GPV3_BASE_ADDR			0x00E00000
 #define GPV4_BASE_ADDR			0x00F00000
 #define GPV5_BASE_ADDR			0x01000000
@@ -87,15 +83,21 @@ 
 #define AIPS1_ARB_END_ADDR              0x020FFFFF
 #define AIPS2_ARB_BASE_ADDR             0x02100000
 #define AIPS2_ARB_END_ADDR              0x021FFFFF
-#ifdef CONFIG_MX6SX
+/* AIPS3 only on i.MX6SX */
 #define AIPS3_ARB_BASE_ADDR             0x02200000
 #define AIPS3_ARB_END_ADDR              0x022FFFFF
+#ifdef CONFIG_MX6SX
 #define WEIM_ARB_BASE_ADDR              0x50000000
 #define WEIM_ARB_END_ADDR               0x57FFFFFF
 #define QSPI0_AMBA_BASE                0x60000000
 #define QSPI0_AMBA_END                 0x6FFFFFFF
 #define QSPI1_AMBA_BASE                0x70000000
 #define QSPI1_AMBA_END                 0x7FFFFFFF
+#elif defined(CONFIG_MX6UL)
+#define WEIM_ARB_BASE_ADDR              0x50000000
+#define WEIM_ARB_END_ADDR               0x57FFFFFF
+#define QSPI0_AMBA_BASE                 0x60000000
+#define QSPI0_AMBA_END                  0x6FFFFFFF
 #else
 #define SATA_ARB_BASE_ADDR              0x02200000
 #define SATA_ARB_END_ADDR               0x02203FFF
@@ -111,7 +113,7 @@ 
 #define WEIM_ARB_END_ADDR               0x0FFFFFFF
 #endif
 
-#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX))
+#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
 #define MMDC0_ARB_BASE_ADDR             0x80000000
 #define MMDC0_ARB_END_ADDR              0xFFFFFFFF
 #define MMDC1_ARB_BASE_ADDR             0xC0000000
@@ -238,13 +240,16 @@ 
 #define I2C3_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x28000)
 #define ROMCP_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x2C000)
 #define MMDC_P0_BASE_ADDR           (AIPS2_OFF_BASE_ADDR + 0x30000)
-#ifdef CONFIG_MX6SL
+/* i.MX6SL */
 #define RNGB_IPS_BASE_ADDR          (AIPS2_OFF_BASE_ADDR + 0x34000)
-#elif CONFIG_MX6SX
-#define ENET2_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x34000)
+#ifdef CONFIG_MX6UL
+#define ENET2_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x34000)
 #else
-#define MMDC_P1_BASE_ADDR           (AIPS2_OFF_BASE_ADDR + 0x34000)
+/* i.MX6SX */
+#define ENET2_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x34000)
 #endif
+/* i.MX6DQ/SDL */
+#define MMDC_P1_BASE_ADDR           (AIPS2_OFF_BASE_ADDR + 0x34000)
 
 #define WEIM_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x38000)
 #define OCOTP_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x3C000)
@@ -257,22 +262,21 @@ 
 #define IP2APB_PERFMON3_BASE_ADDR   (AIPS2_OFF_BASE_ADDR + 0x4C000)
 #endif
 #define IP2APB_TZASC1_BASE_ADDR     (AIPS2_OFF_BASE_ADDR + 0x50000)
-#ifdef CONFIG_MX6SX
+#ifdef CONFIG_MX6UL
+#define QSPI0_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x60000)
+#elif defined(CONFIG_MX6SX)
 #define SAI1_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x54000)
-#else
-#define IP2APB_TZASC2_BASE_ADDR     (AIPS2_OFF_BASE_ADDR + 0x54000)
-#endif
 #define AUDMUX_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x58000)
-#define AUDMUX_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x58000)
-#ifdef CONFIG_MX6SX
 #define SAI2_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x5C000)
 #define QSPI0_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x60000)
 #define QSPI1_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x64000)
 #else
+#define IP2APB_TZASC2_BASE_ADDR     (AIPS2_OFF_BASE_ADDR + 0x54000)
 #define MIPI_CSI2_BASE_ADDR         (AIPS2_OFF_BASE_ADDR + 0x5C000)
 #define MIPI_DSI_BASE_ADDR          (AIPS2_OFF_BASE_ADDR + 0x60000)
 #define VDOA_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x64000)
 #endif
+#define MX6UL_WDOG3_BASE_ADDR       (AIPS2_OFF_BASE_ADDR + 0x64000)
 #define UART2_BASE                  (AIPS2_OFF_BASE_ADDR + 0x68000)
 #define UART3_BASE                  (AIPS2_OFF_BASE_ADDR + 0x6C000)
 #define UART4_BASE                  (AIPS2_OFF_BASE_ADDR + 0x70000)
@@ -296,7 +300,6 @@ 
 #define AIPS3_CONFIG_BASE_ADDR      (AIPS3_ARB_BASE_ADDR + 0x7C000)
 #define ADC1_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0x80000)
 #define ADC2_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0x84000)
-#define WDOG3_BASE_ADDR             (AIPS3_ARB_BASE_ADDR + 0x88000)
 #define ECSPI5_BASE_ADDR            (AIPS3_ARB_BASE_ADDR + 0x8C000)
 #define HS_BASE_ADDR                (AIPS3_ARB_BASE_ADDR + 0x90000)
 #define MU_MCU_BASE_ADDR            (AIPS3_ARB_BASE_ADDR + 0x94000)
@@ -308,12 +311,17 @@ 
 #define PWM7_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0xAC000)
 #define PWM8_BASE_ADDR              (AIPS3_ARB_BASE_ADDR + 0xB0000)
 #endif
+#define MX6SX_WDOG3_BASE_ADDR       (AIPS3_ARB_BASE_ADDR + 0x88000)
+
+/* only for i.MX6SX/UL */
+#define WDOG3_BASE_ADDR (is_cpu_type(MXC_CPU_MX6UL) ?	\
+			 MX6UL_WDOG3_BASE_ADDR :  MX6SX_WDOG3_BASE_ADDR)
 
 #define CHIP_REV_1_0                 0x10
 #define CHIP_REV_1_2                 0x12
 #define CHIP_REV_1_5                 0x15
 #define CHIP_REV_2_0                 0x20
-#ifndef CONFIG_MX6SX
+#if !(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
 #define IRAM_SIZE                    0x00040000
 #else
 #define IRAM_SIZE                    0x00020000
@@ -451,7 +459,7 @@  struct src {
 
 
 struct iomuxc {
-#ifdef CONFIG_MX6SX
+#if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
 	u8 reserved[0x4000];
 #endif
 	u32 gpr[14];
@@ -577,7 +585,7 @@  struct cspi_regs {
 #define MXC_CSPICON_POL		4  /* SCLK polarity */
 #define MXC_CSPICON_SSPOL	12 /* SS polarity */
 #define MXC_CSPICON_CTL		20 /* inactive state of SCLK */
-#if defined(CONFIG_MX6SL) || defined(CONFIG_MX6DL)
+#if defined(CONFIG_MX6SL) || defined(CONFIG_MX6DL) || defined(CONFIG_MX6UL)
 #define MXC_SPI_BASE_ADDRESSES \
 	ECSPI1_BASE_ADDR, \
 	ECSPI2_BASE_ADDR, \
@@ -661,7 +669,7 @@  struct fuse_bank1_regs {
 	u32	rsvd7[3];
 };
 
-#ifdef CONFIG_MX6SX
+#if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
 struct fuse_bank4_regs {
 	u32 sjc_resp_low;
 	u32 rsvd0[3];
@@ -674,7 +682,9 @@  struct fuse_bank4_regs {
 	u32 mac_addr2;
 	u32 rsvd4[7];
 	u32 gp1;
-	u32 rsvd5[7];
+	u32 rsvd5[3];
+	u32 gp2;
+	u32 rsvd6[3];
 };
 #else
 struct fuse_bank4_regs {