diff --git a/arch/arm/mach-imx/include/mach/imx6.h b/arch/arm/mach-imx/include/mach/imx6.h index e0ced7e..288c753 100644 --- a/arch/arm/mach-imx/include/mach/imx6.h +++ b/arch/arm/mach-imx/include/mach/imx6.h @@ -109,6 +109,8 @@ return IMX_CHIP_REV_1_4; case 0x05: return IMX_CHIP_REV_1_5; + case 0x06: + return IMX_CHIP_REV_1_6; case 0x100: return IMX_CHIP_REV_2_0; } diff --git a/arch/arm/mach-imx/include/mach/imx7-ccm-regs.h b/arch/arm/mach-imx/include/mach/imx7-ccm-regs.h index a4217cc..97fe240 100644 --- a/arch/arm/mach-imx/include/mach/imx7-ccm-regs.h +++ b/arch/arm/mach-imx/include/mach/imx7-ccm-regs.h @@ -6,6 +6,7 @@ #define CCM_CCGRn_CLR(n) (0x4008 + 16 * (n)) #define CCM_CCGR_UART1 148 +#define CCM_CCGR_UART2 149 #define CCM_CCGR_SETTINGn(n, s) ((s) << ((n) * 4)) #define CCM_CCGR_SETTINGn_NOT_NEEDED(n) CCM_CCGR_SETTINGn(n, 0b00) @@ -28,5 +29,7 @@ #define UART1_CLK_ROOT CLOCK_ROOT_INDEX(0xaf80) #define UART1_CLK_ROOT__OSC_24M CCM_TARGET_ROOTn_MUX(0b000) +#define UART2_CLK_ROOT CLOCK_ROOT_INDEX(0xb000) +#define UART2_CLK_ROOT__OSC_24M CCM_TARGET_ROOTn_MUX(0b000) #endif diff --git a/arch/arm/mach-imx/include/mach/imx7-regs.h b/arch/arm/mach-imx/include/mach/imx7-regs.h index 8774c32..8625d0b 100644 --- a/arch/arm/mach-imx/include/mach/imx7-regs.h +++ b/arch/arm/mach-imx/include/mach/imx7-regs.h @@ -78,7 +78,7 @@ #define MX7_ECSPI2_BASE_ADDR (MX7_AIPS3_BASE_ADDR + 0x30000) #define MX7_ECSPI3_BASE_ADDR (MX7_AIPS3_BASE_ADDR + 0x40000) #define MX7_UART1_BASE_ADDR (MX7_AIPS3_BASE_ADDR + 0x60000) -#define MX7_UART2_BASE_ADDR (MX7_AIPS3_BASE_ADDR + 0x70000) +#define MX7_UART2_BASE_ADDR (MX7_AIPS3_BASE_ADDR + 0x90000) #define MX7_UART3_BASE_ADDR (MX7_AIPS3_BASE_ADDR + 0x80000) #define MX7_SAI1_BASE_ADDR (MX7_AIPS3_BASE_ADDR + 0xA0000) #define MX7_SAI2_BASE_ADDR (MX7_AIPS3_BASE_ADDR + 0xB0000) diff --git a/arch/arm/mach-imx/include/mach/revision.h b/arch/arm/mach-imx/include/mach/revision.h index 908a0a1..d9495d9 100644 --- a/arch/arm/mach-imx/include/mach/revision.h +++ b/arch/arm/mach-imx/include/mach/revision.h @@ -8,6 +8,7 @@ #define IMX_CHIP_REV_1_3 0x13 #define IMX_CHIP_REV_1_4 0x14 #define IMX_CHIP_REV_1_5 0x15 +#define IMX_CHIP_REV_1_6 0x16 #define IMX_CHIP_REV_2_0 0x20 #define IMX_CHIP_REV_2_1 0x21 #define IMX_CHIP_REV_2_2 0x22 diff --git a/drivers/mci/imx-esdhc.c b/drivers/mci/imx-esdhc.c index 55e8371..b91f94b 100644 --- a/drivers/mci/imx-esdhc.c +++ b/drivers/mci/imx-esdhc.c @@ -630,7 +630,6 @@ host->clk = clk_get(dev, "per"); if (IS_ERR(host->clk)) return PTR_ERR(host->clk); - clk_enable(host->clk); ret = clk_enable(host->clk); if (ret) { diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig index dd1b214..8494574 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig @@ -38,7 +38,7 @@ config DRIVER_SPI_IMX_2_3 bool - depends on ARCH_IMX50 || ARCH_IMX51 || ARCH_IMX53 || ARCH_IMX6 + depends on ARCH_IMX50 || ARCH_IMX51 || ARCH_IMX53 || ARCH_IMX6 || ARCH_IMX7 default y config DRIVER_SPI_MXS diff --git a/drivers/spi/imx_spi.c b/drivers/spi/imx_spi.c index 0827de7..10621d0 100644 --- a/drivers/spi/imx_spi.c +++ b/drivers/spi/imx_spi.c @@ -624,6 +624,13 @@ goto err_free; } + ret = clk_enable(imx->clk); + if (ret) { + dev_err(dev, "Failed to enable clock: %s\n", + strerror(ret)); + return ret; + } + imx->chipselect = devdata->chipselect; imx->xchg_single = devdata->xchg_single; imx->do_transfer = devdata->do_transfer;