Module Name: src Committed By: hkenken Date: Fri Jul 25 07:49:56 UTC 2014
Modified Files: src/sys/arch/arm/imx: files.imx51 imx51_ccm.c imx51_ccmreg.h imx51_ccmvar.h imx51_clock.c imx51_dpllreg.h imx51_gpio.c imx51_iomuxreg.h imx51_tzic.c imx51_uart.c imx51_usb.c imx51reg.h imxclock.c imxsdmareg.h imxusb.c imxusbreg.h imxusbvar.h Added Files: src/sys/arch/arm/imx: imx50_iomuxreg.h Log Message: Add support i.MX50x * i.MX50 series is e-ink e-reader processor. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/imx/files.imx51 cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/imx/imx50_iomuxreg.h cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/imx/imx51_ccm.c \ src/sys/arch/arm/imx/imxusb.c cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/imx/imx51_ccmreg.h \ src/sys/arch/arm/imx/imx51_clock.c src/sys/arch/arm/imx/imx51reg.h cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/imx/imx51_ccmvar.h \ src/sys/arch/arm/imx/imx51_gpio.c src/sys/arch/arm/imx/imx51_iomuxreg.h \ src/sys/arch/arm/imx/imx51_uart.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/imx/imx51_dpllreg.h \ src/sys/arch/arm/imx/imx51_usb.c src/sys/arch/arm/imx/imxsdmareg.h \ src/sys/arch/arm/imx/imxusbreg.h src/sys/arch/arm/imx/imxusbvar.h cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/imx/imx51_tzic.c \ src/sys/arch/arm/imx/imxclock.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/imx/files.imx51 diff -u src/sys/arch/arm/imx/files.imx51:1.10 src/sys/arch/arm/imx/files.imx51:1.11 --- src/sys/arch/arm/imx/files.imx51:1.10 Fri Jul 25 07:07:47 2014 +++ src/sys/arch/arm/imx/files.imx51 Fri Jul 25 07:49:56 2014 @@ -1,10 +1,11 @@ -# $NetBSD: files.imx51,v 1.10 2014/07/25 07:07:47 hkenken Exp $ +# $NetBSD: files.imx51,v 1.11 2014/07/25 07:49:56 hkenken Exp $ # # Configuration info for the Freescale i.MX5x # defparam opt_imx.h MEMSIZE defflag opt_imx.h IMX51 +defflag opt_imx.h IMX50 define bus_dma_generic @@ -32,7 +33,8 @@ file arch/arm/imx/imx51_clock.c # Clock Control Module device imxccm attach imxccm at axi -file arch/arm/imx/imx51_ccm.c imxccm needs-flag +file arch/arm/imx/imx51_ccm.c imxccm needs-flag +defflag opt_imx51clk.h IMXCCMDEBUG # frequency of external low frequency clock # typically 32000, 32768, or 38400. @@ -63,6 +65,12 @@ device imxiomux : bus_space_generic attach imxiomux at axi file arch/arm/imx/imx51_iomux.c imxiomux +# EPDC controller +# device epdc : bus_dma_generic, wsemuldisplaydev, rasops16, rasops8, rasops4, rasops_rotation, vcons +# file arch/arm/imx/imx50_epdc.c epdc needs-flag +# defflag opt_imx50_epdc.h IMXEPDCCONSOLE +# defparam opt_imx50_epdc.h EPDC_DEBUG + # IPU v3 controller device ipu : bus_dma_generic, wsemuldisplaydev, rasops16, rasops8, rasops4, rasops_rotation, vcons file arch/arm/imx/imx51_ipuv3.c ipu needs-flag Index: src/sys/arch/arm/imx/imx51_ccm.c diff -u src/sys/arch/arm/imx/imx51_ccm.c:1.5 src/sys/arch/arm/imx/imx51_ccm.c:1.6 --- src/sys/arch/arm/imx/imx51_ccm.c:1.5 Sat Mar 22 09:46:33 2014 +++ src/sys/arch/arm/imx/imx51_ccm.c Fri Jul 25 07:49:56 2014 @@ -1,6 +1,7 @@ -/* $NetBSD: imx51_ccm.c,v 1.5 2014/03/22 09:46:33 hkenken Exp $ */ +/* $NetBSD: imx51_ccm.c,v 1.6 2014/07/25 07:49:56 hkenken Exp $ */ + /* - * Copyright (c) 2010, 2011, 2012 Genetec Corporation. All rights reserved. + * Copyright (c) 2010-2012, 2014 Genetec Corporation. All rights reserved. * Written by Hashimoto Kenichi for Genetec Corporation. * * Redistribution and use in source and binary forms, with or without @@ -26,11 +27,16 @@ */ /* - * Clock Controller Module (CCM) + * Clock Controller Module (CCM) for i.MX5 */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: imx51_ccm.c,v 1.5 2014/03/22 09:46:33 hkenken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: imx51_ccm.c,v 1.6 2014/07/25 07:49:56 hkenken Exp $"); + +#include "opt_imx.h" +#include "opt_imx51clk.h" + +#include "locators.h" #include <sys/types.h> #include <sys/time.h> @@ -47,11 +53,6 @@ __KERNEL_RCSID(0, "$NetBSD: imx51_ccm.c, #include <arm/imx/imx51var.h> #include <arm/imx/imx51reg.h> -#include "opt_imx51clk.h" -#include "locators.h" - -//#define IMXCCMDEBUG - #ifndef IMX51_OSC_FREQ #define IMX51_OSC_FREQ (24 * 1000 * 1000) /* 24MHz */ #endif @@ -70,6 +71,9 @@ struct imxccm_softc { struct imxccm_softc *ccm_softc; static uint64_t imx51_get_pll_freq(u_int); +#if IMX50 +static uint64_t imx51_get_pfd_freq(u_int); +#endif static int imxccm_match(device_t, cfdata_t, void *); static void imxccm_attach(device_t, device_t, void *); @@ -122,16 +126,21 @@ imxccm_attach(device_t parent, device_t imx51_get_pll_freq(2); imx51_get_pll_freq(3); - aprint_verbose_dev(self, "CPU clock=%d, UART clock=%d\n", imx51_get_clock(IMX51CLK_ARM_ROOT), imx51_get_clock(IMX51CLK_UART_CLK_ROOT)); - aprint_verbose_dev(self, + aprint_verbose_dev(self, "PLL1 clock=%d, PLL2 clock=%d, PLL3 clock=%d\n", + imx51_get_clock(IMX51CLK_PLL1), + imx51_get_clock(IMX51CLK_PLL2), + imx51_get_clock(IMX51CLK_PLL3)); + aprint_verbose_dev(self, "mainbus clock=%d, ahb clock=%d ipg clock=%d perclk=%d\n", imx51_get_clock(IMX51CLK_MAIN_BUS_CLK), imx51_get_clock(IMX51CLK_AHB_CLK_ROOT), imx51_get_clock(IMX51CLK_IPG_CLK_ROOT), imx51_get_clock(IMX51CLK_PERCLK_ROOT)); + aprint_verbose_dev(self, "ESDHC1 clock=%d\n", + imx51_get_clock(IMX51CLK_ESDHC1_CLK_ROOT)); } @@ -165,17 +174,17 @@ imx51_get_clock(enum imx51_clock clk) /* FALLTHROUGH */ case IMX51CLK_PLL1STEP: ccsr = bus_space_read_4(iot, ioh, CCMC_CCSR); - switch (__SHIFTOUT(ccsr, CCSR_STEP_SEL_MASK)) { + switch (__SHIFTOUT(ccsr, CCSR_STEP_SEL)) { case 0: return imx51_get_clock(IMX51CLK_LP_APM); case 1: return 0; /* XXX PLL bypass clock */ case 2: return ccm_softc->sc_pll[2-1].pll_freq / - (1 + __SHIFTOUT(ccsr, CCSR_PLL2_DIV_PODF_MASK)); + (1 + __SHIFTOUT(ccsr, CCSR_PLL2_DIV_PODF)); case 3: return ccm_softc->sc_pll[3-1].pll_freq / - (1 + __SHIFTOUT(ccsr, CCSR_PLL3_DIV_PODF_MASK)); + (1 + __SHIFTOUT(ccsr, CCSR_PLL3_DIV_PODF)); } /*NOTREACHED*/ case IMX51CLK_PLL2SW: @@ -202,11 +211,27 @@ imx51_get_clock(enum imx51_clock clk) /* ... */ case IMX51CLK_MAIN_BUS_CLK_SRC: cbcdr = bus_space_read_4(iot, ioh, CCMC_CBCDR); +#if IMX50 + switch (__SHIFTOUT(cbcdr, CBCDR_PERIPH_CLK_SEL)) { + case 0: + freq = imx51_get_clock(IMX51CLK_PLL1SW); + break; + case 1: + freq = imx51_get_clock(IMX51CLK_PLL2SW); + break; + case 2: + freq = imx51_get_clock(IMX51CLK_PLL3SW); + break; + case 3: + freq = imx51_get_clock(IMX51CLK_LP_APM); + break; + } +#else if ((cbcdr & CBCDR_PERIPH_CLK_SEL) == 0) freq = imx51_get_clock(IMX51CLK_PLL2SW); else { cbcmr = bus_space_read_4(iot, ioh, CCMC_CBCMR); - switch (__SHIFTOUT(cbcmr, CBCMR_PERIPH_APM_SEL_MASK)) { + switch (__SHIFTOUT(cbcmr, CBCMR_PERIPH_APM_SEL)) { case 0: freq = imx51_get_clock(IMX51CLK_PLL1SW); break; @@ -221,27 +246,36 @@ imx51_get_clock(enum imx51_clock clk) break; } } +#endif return freq; case IMX51CLK_MAIN_BUS_CLK: freq = imx51_get_clock(IMX51CLK_MAIN_BUS_CLK_SRC); cdcr = bus_space_read_4(iot, ioh, CCMC_CDCR); - return freq / __SHIFTOUT(cdcr, CDCR_PERIPH_CLK_DVFS_PODF_MASK); + if (cdcr & CDCR_SW_PERIPH_CLK_DIV_REQ) + return freq / (1 + __SHIFTOUT(cdcr, CDCR_PERIPH_CLK_DVFS_PODF)); + else + return freq; case IMX51CLK_AHB_CLK_ROOT: freq = imx51_get_clock(IMX51CLK_MAIN_BUS_CLK); cbcdr = bus_space_read_4(iot, ioh, CCMC_CBCDR); - return freq / (1 + __SHIFTOUT(cbcdr, CBCDR_AHB_PODF_MASK)); + return freq / (1 + __SHIFTOUT(cbcdr, CBCDR_AHB_PODF)); case IMX51CLK_IPG_CLK_ROOT: freq = imx51_get_clock(IMX51CLK_AHB_CLK_ROOT); cbcdr = bus_space_read_4(iot, ioh, CCMC_CBCDR); - return freq / (1 + __SHIFTOUT(cbcdr, CBCDR_IPG_PODF_MASK)); + return freq / (1 + __SHIFTOUT(cbcdr, CBCDR_IPG_PODF)); case IMX51CLK_PERCLK_ROOT: cbcmr = bus_space_read_4(iot, ioh, CCMC_CBCMR); if (cbcmr & CBCMR_PERCLK_IPG_SEL) return imx51_get_clock(IMX51CLK_IPG_CLK_ROOT); if (cbcmr & CBCMR_PERCLK_LP_APM_SEL) freq = imx51_get_clock(IMX51CLK_LP_APM); - else + else { +#ifdef IMX50 + freq = imx51_get_clock(IMX51CLK_MAIN_BUS_CLK); +#else freq = imx51_get_clock(IMX51CLK_MAIN_BUS_CLK_SRC); +#endif + } cbcdr = bus_space_read_4(iot, ioh, CCMC_CBCDR); @@ -249,9 +283,9 @@ imx51_get_clock(enum imx51_clock clk) printf("cbcmr=%x cbcdr=%x\n", cbcmr, cbcdr); #endif - freq /= 1 + __SHIFTOUT(cbcdr, CBCDR_PERCLK_PRED1_MASK); - freq /= 1 + __SHIFTOUT(cbcdr, CBCDR_PERCLK_PRED2_MASK); - freq /= 1 + __SHIFTOUT(cbcdr, CBCDR_PERCLK_PODF_MASK); + freq /= 1 + __SHIFTOUT(cbcdr, CBCDR_PERCLK_PRED1); + freq /= 1 + __SHIFTOUT(cbcdr, CBCDR_PERCLK_PRED2); + freq /= 1 + __SHIFTOUT(cbcdr, CBCDR_PERCLK_PODF); return freq; case IMX51CLK_UART_CLK_ROOT: cscdr1 = bus_space_read_4(iot, ioh, CCMC_CSCDR1); @@ -261,7 +295,7 @@ imx51_get_clock(enum imx51_clock clk) printf("cscdr1=%x cscmr1=%x\n", cscdr1, cscmr1); #endif - sel = __SHIFTOUT(cscmr1, CSCMR1_UART_CLK_SEL_MASK); + sel = __SHIFTOUT(cscmr1, CSCMR1_UART_CLK_SEL); switch (sel) { case 0: @@ -274,11 +308,11 @@ imx51_get_clock(enum imx51_clock clk) break; } - return freq / (1 + __SHIFTOUT(cscdr1, CSCDR1_UART_CLK_PRED_MASK)) / - (1 + __SHIFTOUT(cscdr1, CSCDR1_UART_CLK_PODF_MASK)); + return freq / (1 + __SHIFTOUT(cscdr1, CSCDR1_UART_CLK_PRED)) / + (1 + __SHIFTOUT(cscdr1, CSCDR1_UART_CLK_PODF)); case IMX51CLK_IPU_HSP_CLK_ROOT: cbcmr = bus_space_read_4(iot, ioh, CCMC_CBCMR); - switch (__SHIFTOUT(cbcmr, CBCMR_IPU_HSP_CLK_SEL_MASK)) { + switch (__SHIFTOUT(cbcmr, CBCMR_IPU_HSP_CLK_SEL)) { case 0: freq = imx51_get_clock(IMX51CLK_ARM_AXI_A_CLK); break; @@ -294,6 +328,7 @@ imx51_get_clock(enum imx51_clock clk) break; } return freq; +#ifdef IMX50 case IMX51CLK_ESDHC2_CLK_ROOT: case IMX51CLK_ESDHC4_CLK_ROOT: cscmr1 = bus_space_read_4(iot, ioh, CCMC_CSCMR1); @@ -331,6 +366,18 @@ imx51_get_clock(enum imx51_clock clk) case 3: freq = imx51_get_clock(IMX51CLK_LP_APM); break; + case 4: + /* PFD0 XXX */ + break; + case 5: + /* PFD1 XXX */ + break; + case 6: + /* PFD4 XXX */ + break; + case 7: + /* osc_clk XXX */ + break; } if (clk == IMX51CLK_ESDHC1_CLK_ROOT) @@ -340,6 +387,54 @@ imx51_get_clock(enum imx51_clock clk) freq = freq / (1 + __SHIFTOUT(cscdr1, CSCDR1_ESDHC3_CLK_PRED)) / (1 + __SHIFTOUT(cscdr1, CSCDR1_ESDHC3_CLK_PODF)); return freq; +#else + case IMX51CLK_ESDHC3_CLK_ROOT: + case IMX51CLK_ESDHC4_CLK_ROOT: + cscmr1 = bus_space_read_4(iot, ioh, CCMC_CSCMR1); + + sel = 0; + if (clk == IMX51CLK_ESDHC3_CLK_ROOT) + sel = __SHIFTOUT(cscmr1, CSCMR1_ESDHC3_CLK_SEL); + else if (clk == IMX51CLK_ESDHC4_CLK_ROOT) + sel = __SHIFTOUT(cscmr1, CSCMR1_ESDHC4_CLK_SEL); + + if (sel == 0) + freq = imx51_get_clock(IMX51CLK_ESDHC1_CLK_ROOT); + else + freq = imx51_get_clock(IMX51CLK_ESDHC2_CLK_ROOT); + + return freq; + case IMX51CLK_ESDHC1_CLK_ROOT: + case IMX51CLK_ESDHC2_CLK_ROOT: + + cscdr1 = bus_space_read_4(iot, ioh, CCMC_CSCDR1); + cscmr1 = bus_space_read_4(iot, ioh, CCMC_CSCMR1); + + sel = 0; + if (clk == IMX51CLK_ESDHC1_CLK_ROOT) + sel = __SHIFTOUT(cscmr1, CSCMR1_ESDHC1_CLK_SEL); + else if (clk == IMX51CLK_ESDHC2_CLK_ROOT) + sel = __SHIFTOUT(cscmr1, CSCMR1_ESDHC2_CLK_SEL); + + switch (sel) { + case 0: + case 1: + case 2: + freq = imx51_get_clock(IMX51CLK_PLL1SW + sel); + break; + case 3: + freq = imx51_get_clock(IMX51CLK_LP_APM); + break; + } + + if (clk == IMX51CLK_ESDHC1_CLK_ROOT) + freq = freq / (1 + __SHIFTOUT(cscdr1, CSCDR1_ESDHC1_CLK_PRED)) / + (1 + __SHIFTOUT(cscdr1, CSCDR1_ESDHC1_CLK_PODF)); + else if (clk == IMX51CLK_ESDHC2_CLK_ROOT) + freq = freq / (1 + __SHIFTOUT(cscdr1, CSCDR1_ESDHC2_CLK_PRED)) / + (1 + __SHIFTOUT(cscdr1, CSCDR1_ESDHC2_CLK_PODF)); + return freq; +#endif case IMX51CLK_CSPI_CLK_ROOT: cscmr1 = bus_space_read_4(iot, ioh, CCMC_CSCMR1); cscdr2 = bus_space_read_4(iot, ioh, CCMC_CSCDR2); @@ -360,6 +455,18 @@ imx51_get_clock(enum imx51_clock clk) (1 + __SHIFTOUT(cscdr2, CSCDR2_ECSPI_CLK_PODF)); return freq; +#if IMX50 + case IMX50CLK_PFD0_CLK_ROOT: + case IMX50CLK_PFD1_CLK_ROOT: + case IMX50CLK_PFD2_CLK_ROOT: + case IMX50CLK_PFD3_CLK_ROOT: + case IMX50CLK_PFD4_CLK_ROOT: + case IMX50CLK_PFD5_CLK_ROOT: + case IMX50CLK_PFD6_CLK_ROOT: + case IMX50CLK_PFD7_CLK_ROOT: + freq = imx51_get_pfd_freq(clk - IMX50CLK_PFD0_CLK_ROOT); + return freq; +#endif default: aprint_error_dev(ccm_softc->sc_dev, "clock %d: not supported yet\n", clk); @@ -367,6 +474,13 @@ imx51_get_clock(enum imx51_clock clk) } } +#ifdef IMX50 +static uint64_t +imx51_get_pfd_freq(u_int pfd_no) +{ + return 480000000; +} +#endif static uint64_t imx51_get_pll_freq(u_int pll_no) @@ -399,8 +513,8 @@ imx51_get_pll_freq(u_int pll_no) dp_mfn = bus_space_read_4(iot, ioh, DPLL_DP_MFN); } - pdf = dp_op & DP_OP_PDF_MASK; - mfi = max(5, __SHIFTOUT(dp_op, DP_OP_MFI_MASK)); + pdf = dp_op & DP_OP_PDF; + mfi = max(5, __SHIFTOUT(dp_op, DP_OP_MFI)); mfd = dp_mfd; if (dp_mfn & __BIT(26)) /* 27bit signed value */ @@ -408,7 +522,7 @@ imx51_get_pll_freq(u_int pll_no) else mfn = dp_mfn; - switch (dp_ctrl & DP_CTL_REF_CLK_SEL_MASK) { + switch (dp_ctrl & DP_CTL_REF_CLK_SEL) { case DP_CTL_REF_CLK_SEL_COSC: /* Internal Oscillator */ ref = IMX51_OSC_FREQ; @@ -475,4 +589,100 @@ imx51_clk_gating(int clk_src, int mode) reg &= ~(0x03 << field * 2); reg |= bit; bus_space_write_4(iot, ioh, CCMC_CCGR(group), reg); + +#ifdef IMX50 + switch (clk_src) { + case CCGR_EPDC_AXI_CLK: + reg = bus_space_read_4(iot, ioh, CCMC_EPDC_AXI); + reg &= ~EPDC_AXI_CLKGATE; + reg |= EPDC_AXI_CLKGATE_ALLWAYS; + bus_space_write_4(iot, ioh, CCMC_EPDC_AXI, reg); + + /* enable auto-slow */ + reg |= EPDC_ASM_EN; + reg |= __SHIFTIN(5, EPDC_ASM_SLOW_DIV); + bus_space_write_4(iot, ioh, CCMC_EPDC_AXI, reg); + + break; + case CCGR_EPDC_PIX_CLK: + reg = bus_space_read_4(iot, ioh, CCMC_EPDC_PIX); + reg &= ~EPDC_PIX_CLKGATE; + reg |= EPDC_PIX_CLKGATE_ALLWAYS; + bus_space_write_4(iot, ioh, CCMC_EPDC_PIX, reg); + + break; + } +#endif +} + +void +imx51_clk_rate(int clk_src, int clk_base, int rate) +{ +#ifdef IMX50 + bus_space_tag_t iot = ccm_softc->sc_iot; + bus_space_handle_t ioh = ccm_softc->sc_ioh; + uint32_t reg; + int div; + uint64_t freq = 0; + + switch (clk_src) { + case CCGR_EPDC_AXI_CLK: + reg = bus_space_read_4(iot, ioh, CCMC_CLKSEQ_BYPASS); + reg &= ~CLKSEQ_EPDC_AXI_CLK; + reg |= __SHIFTIN(clk_base, CLKSEQ_EPDC_AXI_CLK); + bus_space_write_4(iot, ioh, CCMC_CLKSEQ_BYPASS, reg); + + switch (clk_base) { + case CLKSEQ_XTAL: + freq = 24000000; + break; + case CLKSEQ_PFDx: + freq = imx51_get_clock(IMX50CLK_PFD3_CLK_ROOT); + break; + case CLKSEQ_PLL1: + freq = imx51_get_clock(IMX51CLK_PLL1); + break; + } + + div = max(1, freq / rate); + + reg = bus_space_read_4(iot, ioh, CCMC_EPDC_AXI); + reg &= ~EPDC_AXI_DIV; + reg |= __SHIFTIN(div, EPDC_AXI_DIV); + bus_space_write_4(iot, ioh, CCMC_EPDC_AXI, reg); + while (bus_space_read_4(iot, ioh, CCMC_CSR2) & CSR2_EPDC_AXI_BUSY) + ; /* wait */ + break; + case CCGR_EPDC_PIX_CLK: + reg = bus_space_read_4(iot, ioh, CCMC_CLKSEQ_BYPASS); + reg &= ~CLKSEQ_EPDC_PIX_CLK; + reg |= __SHIFTIN(clk_base, CLKSEQ_EPDC_PIX_CLK); + bus_space_write_4(iot, ioh, CCMC_CLKSEQ_BYPASS, reg); + + switch (clk_base) { + case CLKSEQ_XTAL: + freq = 24000000; + break; + case CLKSEQ_PFDx: + freq = imx51_get_clock(IMX50CLK_PFD5_CLK_ROOT); + break; + case CLKSEQ_PLL1: + freq = imx51_get_clock(IMX51CLK_PLL1); + break; + case CLKSEQ_CAMP1: + /* XXX */ + freq = 0; + break; + } + + div = freq / rate; + reg = bus_space_read_4(iot, ioh, CCMC_EPDC_PIX); + reg &= ~EPDC_PIX_CLK_PRED; + reg |= __SHIFTIN(div, EPDC_PIX_CLK_PRED); + bus_space_write_4(iot, ioh, CCMC_EPDC_PIX, reg); + while (bus_space_read_4(iot, ioh, CCMC_CSR2) & CSR2_EPDC_PIX_BUSY) + ; /* wait */ + break; + } +#endif } Index: src/sys/arch/arm/imx/imxusb.c diff -u src/sys/arch/arm/imx/imxusb.c:1.5 src/sys/arch/arm/imx/imxusb.c:1.6 --- src/sys/arch/arm/imx/imxusb.c:1.5 Mon Oct 7 17:36:40 2013 +++ src/sys/arch/arm/imx/imxusb.c Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imxusb.c,v 1.5 2013/10/07 17:36:40 matt Exp $ */ +/* $NetBSD: imxusb.c,v 1.6 2014/07/25 07:49:56 hkenken Exp $ */ /* * Copyright (c) 2009, 2010 Genetec Corporation. All rights reserved. * Written by Hashimoto Kenichi and Hiroyuki Bessho for Genetec Corporation. @@ -25,7 +25,9 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: imxusb.c,v 1.5 2013/10/07 17:36:40 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: imxusb.c,v 1.6 2014/07/25 07:49:56 hkenken Exp $"); + +#include "opt_imx.h" #include <sys/param.h> #include <sys/systm.h> @@ -117,9 +119,8 @@ imxehci_attach(device_t parent, device_t aprint_normal_dev(self, "i.MX USB Controller id=%d revision=%d HCI revision=0x%x\n", - id & (uint32_t)IMXUSB_ID_ID_MASK, - (id & (uint32_t)IMXUSB_ID_REVISION_MASK) >> - IMXUSB_ID_REVISION_SHIFT, + (int)__SHIFTOUT(id, IMXUSB_ID_ID), + (int)__SHIFTOUT(id, IMXUSB_ID_REVISION), hcirev); hwhost = bus_space_read_4(iot, sc->sc_ioh, IMXUSB_HWHOST); @@ -129,16 +130,14 @@ imxehci_attach(device_t parent, device_t comma = ""; if (hwhost & HWHOST_HC) { - int n_ports = 1 + ((hwhost & HWHOST_NPORT_MASK) >> - HWHOST_NPORT_SHIFT); + int n_ports = 1 + __SHIFTOUT(hwhost, HWHOST_NPORT); aprint_normal("%d host port%s", n_ports, n_ports > 1 ? "s" : ""); comma = ", "; } if (hwdevice & HWDEVICE_DC) { - int n_endpoints = (hwdevice & HWDEVICE_DEVEP_MASK) >> - HWDEVICE_DEVEP_SHIFT; + int n_endpoints = __SHIFTOUT(hwdevice, HWDEVICE_DEVEP); aprint_normal("%sdevice capable, %d endpoint%s", comma, n_endpoints, n_endpoints > 1 ? "s" : ""); @@ -176,7 +175,15 @@ imxehci_attach(device_t parent, device_t if (usbc->sc_setup_md_hook) usbc->sc_setup_md_hook(sc, IMXUSB_HOST); - else if (sc->sc_iftype == IMXUSBC_IF_ULPI) { + + if (sc->sc_iftype == IMXUSBC_IF_ULPI) { +#if 0 + if(hsc->sc_bus.usbrev == USBREV_2_0) + ulpi_write(hsc, ULPI_FUNCTION_CONTROL + ULPI_REG_CLEAR, (1 << 0)); + else + ulpi_write(hsc, ULPI_FUNCTION_CONTROL + ULPI_REG_SET, (1 << 2)); +#endif + imxusb_ulpi_write(sc, ULPI_FUNCTION_CONTROL + ULPI_REG_CLEAR, OTG_CONTROL_IDPULLUP); @@ -216,7 +223,23 @@ imxehci_select_interface(struct imxehci_ struct ehci_softc *hsc = &sc->sc_hsc; reg = EOREAD4(hsc, EHCI_PORTSC(1)); - reg = (reg & ~PORTSC_PTS_MASK) | (interface << PORTSC_PTS_SHIFT); + reg &= ~(PORTSC_PTS | PORTSC_PTW); + switch (interface) { + case IMXUSBC_IF_UTMI_WIDE: + reg |= PORTSC_PTW_16; + case IMXUSBC_IF_UTMI: + reg |= PORTSC_PTS_UTMI; + break; + case IMXUSBC_IF_PHILIPS: + reg |= PORTSC_PTS_PHILIPS; + break; + case IMXUSBC_IF_ULPI: + reg |= PORTSC_PTS_ULPI; + break; + case IMXUSBC_IF_SERIAL: + reg |= PORTSC_PTS_SERIAL; + break; + } EOWRITE4(hsc, EHCI_PORTSC(1), reg); } @@ -278,12 +301,12 @@ imxusb_ulpi_read(struct imxehci_softc *s ulpi_wakeup(sc, TIMEOUT); - data = ULPI_RUN | (addr << ULPI_ADDR_SHIFT); + data = ULPI_RUN | __SHIFTIN(addr, ULPI_ADDR); bus_space_write_4(sc->sc_iot, sc->sc_ioh, IMXUSB_ULPIVIEW, data); data = ulpi_wait(sc, TIMEOUT); - return (data & ULPI_DATRD_MASK) >> ULPI_DATRD_SHIFT; + return __SHIFTOUT(data, ULPI_DATRD); } void @@ -293,7 +316,7 @@ imxusb_ulpi_write(struct imxehci_softc * ulpi_wakeup(sc, TIMEOUT); - reg = ULPI_RUN | ULPI_RW | ((addr) << ULPI_ADDR_SHIFT) | data; + reg = ULPI_RUN | ULPI_RW | __SHIFTIN(addr, ULPI_ADDR) | __SHIFTIN(data, ULPI_DATWR); bus_space_write_4(sc->sc_iot, sc->sc_ioh, IMXUSB_ULPIVIEW, reg); ulpi_wait(sc, TIMEOUT); @@ -402,6 +425,6 @@ imxehci_host_mode(struct imxehci_softc * bus_space_write_4(sc->sc_iot, sc->sc_ioh, IMXUSB_OTGSC, reg); reg = bus_space_read_4(sc->sc_iot, sc->sc_ioh, IMXUSB_OTGMODE); - reg |= USBMODE_HOST; + reg |= USBMODE_CM_HOST; bus_space_write_4(sc->sc_iot, sc->sc_ioh, IMXUSB_OTGMODE, reg); } Index: src/sys/arch/arm/imx/imx51_ccmreg.h diff -u src/sys/arch/arm/imx/imx51_ccmreg.h:1.4 src/sys/arch/arm/imx/imx51_ccmreg.h:1.5 --- src/sys/arch/arm/imx/imx51_ccmreg.h:1.4 Sat Mar 22 09:46:33 2014 +++ src/sys/arch/arm/imx/imx51_ccmreg.h Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imx51_ccmreg.h,v 1.4 2014/03/22 09:46:33 hkenken Exp $ */ +/* $NetBSD: imx51_ccmreg.h,v 1.5 2014/07/25 07:49:56 hkenken Exp $ */ /* * Copyright (c) 2011, 2012 Genetec Corporation. All rights reserved. * Written by Hashimoto Kenichi for Genetec Corporation. @@ -31,8 +31,8 @@ /* register offset address */ -#define CCMC_BASE 0x73fd4000 #define CCMC_IMX6_BASE 0x020c4040 + #define CCMC_CCR 0x0000 #define CCR_FPM_MULT __BIT(12) #define CCR_COSC_EN __BIT(12) @@ -40,91 +40,135 @@ #define CCMC_CSR 0x0008 #define CCMC_CCSR 0x000c #define CCSR_LP_APM __BIT(9) -#define CCSR_STEP_SEL_SHIFT 7 -#define CCSR_STEP_SEL_MASK __BITS(8,CCSR_STEP_SEL_SHIFT) -#define CCSR_PLL2_DIV_PODF_SHIFT 5 -#define CCSR_PLL2_DIV_PODF_MASK __BITS(6, CCSR_PLL2_DIV_PODF_SHIFT) -#define CCSR_PLL3_DIV_PODF_SHIFT 3 -#define CCSR_PLL3_DIV_PODF_MASK __BITS(4, CCSR_PLL2_DIV_PODF_SHIFT) +#define CCSR_STEP_SEL __BITS(8, 7) +#define CCSR_PLL2_DIV_PODF __BITS(6, 5) +#define CCSR_PLL3_DIV_PODF __BITS(4, 3) #define CCSR_PLL1_SW_CLK_SEL __BIT(2) #define CCSR_PLL2_SW_CLK_SEL __BIT(1) #define CCSR_PLL3_SW_CLK_SEL __BIT(0) #define CCMC_CACRR 0x0010 #define CCMC_CBCDR 0x0014 #define CBCDR_DDR_HIGH_FREQ_CLK_SEL __BIT(30) -#define CBCDR_DDR_CLK_PODF_SHIFT 27 -#define CBCDR_DDR_CLK_PODF_MASK __BITS(29, CBCDR_DDR_CLK_PODF_SHIFT) -#define CDCDR_PERIPH_CLK2 __BITS(29, 27) +#define CBCDR_DDR_CLK_PODF __BITS(29, 27) +#ifdef IMX50 +#define CBCDR_PERIPH_CLK_SEL __BITS(26, 25) +#else #define CBCDR_EMI_CLK_SEL __BIT(26) -#define CBCDR_PERIPH_CLK_SEL __BIT(25) -#define CBCDR_EMI_SLOW_PODF_SHIFT 22 -#define CBCDR_EMI_SLOW_PODF_MASK __BITS(24, CBCDR_EMI_SLOW_PODF_SHIFT) -#define CBCDR_AXI_B_PODF_SHIFT 19 -#define CBCDR_AXI_B_PODF_MASK __BITS(21, CBCDR_AXI_B_PODF_SHIFT) -#define CBCDR_AXI_A_PODF_SHIFT 16 -#define CBCDR_AXI_A_PODF_MASK __BITS(28, CBCDR_AXI_A_PODF_SHIFT) -#define CBCDR_NFC_PODF_SHIFT 13 -#define CBCDR_NFC_PODF_MASK __BITS(15, CBCDR_AXI_A_PODF_SHIFT) -#define CBCDR_AHB_PODF_SHIFT 10 -#define CBCDR_AHB_PODF_MASK __BITS(12, CBCDR_AHB_PODF_SHIFT) -#define CBCDR_IPG_PODF_SHIFT 8 -#define CBCDR_IPG_PODF_MASK __BITS(9, CBCDR_IPG_PODF_SHIFT) -#define CBCDR_PERCLK_PRED1_SHIFT 6 -#define CBCDR_PERCLK_PRED1_MASK __BITS(7, CBCDR_PERCLK_PRED1_SHIFT) -#define CBCDR_PERCLK_PRED2_SHIFT 3 -#define CBCDR_PERCLK_PRED2_MASK __BITS(5, CBCDR_PERCLK_PRED2_SHIFT) -#define CBCDR_PERCLK_PODF_SHIFT 0 -#define CBCDR_PERCLK_PODF_MASK __BITS(2, CBCDR_PERCLK_PODF_SHIFT) -#define CCMC_CBCMR 0x0018 -#define CBCMR_PERIPH_APM_SEL_SHIFT 12 -#define CBCMR_PERIPH_APM_SEL_MASK __BITS(13, CBCMR_PERIPH_APM_SEL_SHIFT) -#define CBCMR_IPU_HSP_CLK_SEL_SHIFT 6 -#define CBCMR_IPU_HSP_CLK_SEL_MASK __BITS(7, CBCMR_IPU_HSP_CLK_SEL_SHIFT) +#define CBCDR_PERIPH_CLK_SEL __BIT(25) +#endif +#define CBCDR_EMI_SLOW_PODF __BITS(24, 22) +#define CBCDR_AXI_B_PODF __BITS(21, 19) +#define CBCDR_AXI_A_PODF __BITS(18, 16) +#define CBCDR_NFC_PODF __BITS(15, 13) +#define CBCDR_AHB_PODF __BITS(12, 10) +#define CBCDR_IPG_PODF __BITS(9, 8) +#define CBCDR_PERCLK_PRED1 __BITS(7, 6) +#define CBCDR_PERCLK_PRED2 __BITS(5, 3) +#define CBCDR_PERCLK_PODF __BITS(2, 0) +#define CCMC_CBCMR 0x0018 +#define CBCMR_PERIPH_APM_SEL __BITS(13, 12) +#define CBCMR_IPU_HSP_CLK_SEL __BITS(7, 6) #define CBCMR_PERCLK_LP_APM_SEL __BIT(1) #define CBCMR_PERCLK_IPG_SEL __BIT(0) -#define CCMC_CSCMR1 0x001c -#define CSCMR1_UART_CLK_SEL_SHIFT 24 -#define CSCMR1_UART_CLK_SEL_MASK __BITS(25, CSCMR1_UART_CLK_SEL_SHIFT) +#define CCMC_CSCMR1 0x001c +#define CSCMR1_UART_CLK_SEL __BITS(25, 24) +#ifdef IMX50 #define CSCMR1_ESDHC1_CLK_SEL __BITS(22, 21) #define CSCMR1_ESDHC2_CLK_SEL __BIT(20) #define CSCMR1_ESDHC4_CLK_SEL __BIT(19) #define CSCMR1_ESDHC3_CLK_SEL __BITS(18, 16) +#else +#define CSCMR1_ESDHC1_CLK_SEL __BITS(21, 20) +#define CSCMR1_ESDHC3_CLK_SEL __BIT(19) +#define CSCMR1_ESDHC4_CLK_SEL __BIT(18) +#define CSCMR1_ESDHC2_CLK_SEL __BITS(17, 16) +#endif #define CSCMR1_CSPI_CLK_SEL __BITS(5, 4) -#define CCMC_CSCMR2 0x0020 -#define CCMC_CSCDR1 0x0024 +#define CCMC_CSCMR2 0x0020 +#define CCMC_CSCDR1 0x0024 +#ifdef IMX50 #define CSCDR1_ESDHC3_CLK_PRED __BITS(24, 22) #define CSCDR1_ESDHC3_CLK_PODF __BITS(21, 19) +#else +#define CSCDR1_ESDHC2_CLK_PRED __BITS(24, 22) +#define CSCDR1_ESDHC2_CLK_PODF __BITS(21, 19) +#endif #define CSCDR1_ESDHC1_CLK_PRED __BITS(18, 16) #define CSCDR1_ESDHC1_CLK_PODF __BITS(13, 11) -#define CSCDR1_UART_CLK_PRED_SHIFT 3 -#define CSCDR1_UART_CLK_PRED_MASK __BITS(5, CSCDR1_UART_CLK_PRED_SHIFT) -#define CSCDR1_UART_CLK_PODF_SHIFT 0 -#define CSCDR1_UART_CLK_PODF_MASK __BITS(2, CSCDR1_UART_CLK_PODF_SHIFT) -#define CCMC_CS1CDR 0x0028 -#define CCMC_CS2CDR 0x002c -#define CCMC_CDCDR 0x0030 -#define CCMC_CHSCCDR 0x0034 // i.MX6 -#define CCMC_CSCDR2 0x0038 +#define CSCDR1_UART_CLK_PRED __BITS(5, 3) +#define CSCDR1_UART_CLK_PODF __BITS(2, 0) +#define CCMC_CS1CDR 0x0028 +#define CCMC_CS2CDR 0x002c +#define CCMC_CDCDR 0x0030 +#define CDCDR_PERIPH_CLK2 __BITS(29, 27) +#define CCMC_CHSCCDR 0x0034 // i.MX6 +#define CCMC_CSCDR2 0x0038 #define CSCDR2_ECSPI_CLK_PRED __BITS(27, 25) #define CSCDR2_ECSPI_CLK_PODF __BITS(24, 19) -#define CCMC_CSCDR3 0x003c -#define CCMC_CSCDR4 0x0040 -#define CCMC_CWDR 0x0044 -#define CCMC_CDHIPR 0x0048 -#define CCMC_CDCR 0x004c -#define CDCR_PERIPH_CLK_DVFS_PODF_SHIFT 0 -#define CDCR_PERIPH_CLK_DVFS_PODF_MASK \ - __BITS(1,CDCR_PERIPH_CLK_DVFS_PODF_SHIFT) -#define CCMC_CTOR 0x0050 -#define CCMC_CLPCR 0x0054 -#define CCMC_CISR 0x0058 -#define CCMC_CIMR 0x005c -#define CCMC_CCOSR 0x0060 -#define CCMC_CGPR 0x0064 -#define CCMC_CCGR(n) (0x0068 + (n) * 4) -#define CCMC_CMEOR 0x0084 +#define CCMC_CSCDR3 0x003c +#define CCMC_CSCDR4 0x0040 +#define CCMC_CWDR 0x0044 +#define CCMC_CDHIPR 0x0048 +#define CCMC_CDCR 0x004c +#define CDCR_SW_PERIPH_CLK_DIV_REQ __BIT(6) +#define CDCR_PERIPH_CLK_DVFS_PODF __BITS(1, 0) +#define CCMC_CTOR 0x0050 +#define CCMC_CLPCR 0x0054 +#define CCMC_CISR 0x0058 +#define CCMC_CIMR 0x005c +#define CCMC_CCOSR 0x0060 +#define CCMC_CGPR 0x0064 +#define CCMC_CCGR(n) (0x0068 + (n) * 4) +#define CCMC_CMEOR 0x0084 +#ifdef IMX50 +#define CCMC_CSR2 0x008C +#define CSR2_EPDC_ASM_ACTIVE __BIT(13) +#define CSR2_EPXP_ASM_ACTIVE __BIT(12) +#define CSR2_ELCDIF_ASM_ACTIVE __BIT(11) +#define CSR2_SYS_CLK_XTAL_ACTIVE __BIT(10) +#define CSR2_ELCDIF_PIX_BUSY __BIT(9) +#define CSR2_EPDC_PIX_BUSY __BIT(8) +#define CSR2_MSHC_XMSCKI_BUSY __BIT(7) +#define CSR2_BCH_BUSY __BIT(6) +#define CSR2_GPMI_BUSY __BIT(5) +#define CSR2_EPDC_AXI_BUSY __BIT(4) +#define CSR2_DISPLAY_AXI_BUSY __BIT(3) +#define CSR2_DDR_CLK_REF_PLL_BUSY __BIT(2) +#define CSR2_SYS_CLK_REF_PLL_BUSY __BIT(1) +#define CSR2_SYS_CLK_REF_XTAL_BUSY __BIT(0) +#define CCMC_CLKSEQ_BYPASS 0x0090 +#define CLKSEQ_ELCDIF_PIX_CLK __BITS(15, 14) +#define CLKSEQ_EPDC_PIX_CLK __BITS(13, 12) +#define CLKSEQ_MSHC_XMSCKI_CLK __BITS(11, 10) +#define CLKSEQ_BCH_CLK __BITS(9, 8) +#define CLKSEQ_GPMI_CLK __BITS(7, 6) +#define CLKSEQ_EPDC_AXI_CLK __BITS(5, 4) +#define CLKSEQ_DISPLAY_AXI_CLK __BITS(3, 2) +#define CLKSEQ_SYS_CLK __BITS(1, 0) +#define CLKSEQ_XTAL 0 +#define CLKSEQ_PFDx 1 +#define CLKSEQ_PLL1 2 +#define CLKSEQ_CAMP1 3 +#define CCMC_EPDC_PIX 0x00A0 +#define EPDC_PIX_CLKGATE __BITS(31, 30) +#define EPDC_PIX_CLKGATE_OFF __SHIFTIN(0, EPDC_AXI_CLKGATE) +#define EPDC_PIX_CLKGATE_RUNMODE __SHIFTIN(1, EPDC_AXI_CLKGATE) +#define EPDC_PIX_CLKGATE_ALLWAYS __SHIFTIN(2, EPDC_AXI_CLKGATE) +#define EPDC_PIX_CLKGATE_EXCEPTSTOP __SHIFTIN(3, EPDC_AXI_CLKGATE) +#define EPDC_PIX_CLK_PRED __BITS(13, 12) +#define EPDC_PIX_CLK_PODF __BITS(11, 0) +#define CCMC_EPDC_AXI 0x00A8 +#define EPDC_AXI_CLKGATE __BITS(31, 30) +#define EPDC_AXI_CLKGATE_OFF __SHIFTIN(0, EPDC_AXI_CLKGATE) +#define EPDC_AXI_CLKGATE_RUNMODE __SHIFTIN(1, EPDC_AXI_CLKGATE) +#define EPDC_AXI_CLKGATE_ALLWAYS __SHIFTIN(2, EPDC_AXI_CLKGATE) +#define EPDC_AXI_CLKGATE_EXCEPTSTOP __SHIFTIN(3, EPDC_AXI_CLKGATE) +#define EPDC_ASM_EN __BIT(9) +#define EPDC_ASM_SLOW_DIV __BITS(8, 6) +#define EPDC_AXI_DIV __BITS(5, 0) +#endif -#define CCMC_SIZE 0x88 +#define CCMC_SIZE 0x0100 /* CCGR Clock Gate Register */ @@ -132,7 +176,15 @@ #define CCMR_CCGR_NGROUPS 7 #define CCMR_CCGR_MODULE(clk) ((clk) / CCMR_CCGR_NSOURCE) #define __CCGR_NUM(a, b) ((a) * 16 + (b)) +#define CCGR_MODE_CLKOFF 0x0 +#define CCGR_MODE_CLKON 0x2 +#ifdef IMX50 +#define CCGR_USBOH1_CLK __CCGR_NUM(2, 13) +#define CCGR_USBPHY1_CLK __CCGR_NUM(4, 5) +#define CCGR_EPDC_PIX_CLK __CCGR_NUM(6, 5) +#define CCGR_EPDC_AXI_CLK __CCGR_NUM(6, 8) +#else #define CCGR_ARM_BUS_CLK __CCGR_NUM(0, 0) #define CCGR_ARM_AXI_CLK __CCGR_NUM(0, 1) #define CCGR_ARM_DEBUG_CLK __CCGR_NUM(0, 2) @@ -209,6 +261,7 @@ #define CCGR_GPU2D_CLK __CCGR_NUM(6, 3) #define CCGR_SLIMBUS_CLK __CCGR_NUM(6, 4) #define CCGR_SLIMBUS_SERIAL_CLK __CCGR_NUM(6, 5) +#endif #endif /* _IMX51_CCMREG_H */ Index: src/sys/arch/arm/imx/imx51_clock.c diff -u src/sys/arch/arm/imx/imx51_clock.c:1.4 src/sys/arch/arm/imx/imx51_clock.c:1.5 --- src/sys/arch/arm/imx/imx51_clock.c:1.4 Sat Oct 27 17:17:39 2012 +++ src/sys/arch/arm/imx/imx51_clock.c Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imx51_clock.c,v 1.4 2012/10/27 17:17:39 chs Exp $ */ +/* $NetBSD: imx51_clock.c,v 1.5 2014/07/25 07:49:56 hkenken Exp $ */ /* * Copyright (c) 2009 Genetec corp. All rights reserved. * Written by Hashimoto Kenichi for Genetec corp. @@ -25,7 +25,10 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: imx51_clock.c,v 1.4 2012/10/27 17:17:39 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: imx51_clock.c,v 1.5 2014/07/25 07:49:56 hkenken Exp $"); + +#include "opt_imx.h" +#include "opt_imx51clk.h" #include <sys/param.h> #include <sys/systm.h> @@ -52,7 +55,6 @@ __KERNEL_RCSID(0, "$NetBSD: imx51_clock. #include <arm/imx/imxclockvar.h> #include "imxccm.h" /* if CCM driver is configured into the kernel */ -#include "opt_imx51clk.h" Index: src/sys/arch/arm/imx/imx51reg.h diff -u src/sys/arch/arm/imx/imx51reg.h:1.4 src/sys/arch/arm/imx/imx51reg.h:1.5 --- src/sys/arch/arm/imx/imx51reg.h:1.4 Sun Apr 15 16:34:11 2012 +++ src/sys/arch/arm/imx/imx51reg.h Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imx51reg.h,v 1.4 2012/04/15 16:34:11 bsh Exp $ */ +/* $NetBSD: imx51reg.h,v 1.5 2014/07/25 07:49:56 hkenken Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. * All rights reserved. @@ -31,6 +31,38 @@ #ifndef _ARM_IMX_IMX51REG_H_ #define _ARM_IMX_IMX51REG_H_ +#ifdef IMX50 +#define TZIC_BASE 0x0fffc000 +#define APB_BASE 0x40000000 +#define AIPSTZ1_BASE 0x50000000 +#define AIPSTZ2_BASE 0x60000000 +#define CSD0DDR_BASE 0x70000000 +#else +#define TZIC_BASE 0xe0000000 +#define AIPSTZ1_BASE 0x70000000 +#define AIPSTZ2_BASE 0x80000000 +#define CSD0DDR_BASE 0x90000000 +#define CSD1DDR_BASE 0xa0000000 +#define CSDDDR_SIZE 0x10000000 /* 256MiB */ +#define CS0_BASE 0xb0000000 +#define CS0_SIZE 0x08000000 /* 128MiB */ +#define CS1_BASE 0xb8000000 +#define CS1_SIZE 0x08000000 /* 128MiB */ +#define CS2_BASE 0xc0000000 +#define CS2_SIZE 0x08000000 /* 128MiB */ +#define CS3_BASE 0xc8000000 +#define CS3_SIZE 0x04000000 /* 64MiB */ +#define CS4_BASE 0xcc000000 +#define CS4_SIZE 0x02000000 /* 32MiB */ +#define CS5_BASE 0xcefe0000 +#define CS5_SIZE 0x00010000 /* 32MiB */ +#define NAND_FLASH_BASE 0xcfff0000 /* internal buffer */ +#define NAND_FLASH_SIZE 0x00010000 + +#define GPU2D_BASE 0xd0000000 +#define GPU2D_SIZE 0x10000000 +#endif + #define BOOTROM_BASE 0x00000000 #define BOOTROM_SIZE 0x9000 @@ -43,6 +75,11 @@ #define GPU_BASE 0x30000000 #define GPU_SIZE 0x10000000 +#ifdef IMX50 +#define EPDC_BASE (APB_BASE + 0x01010000) +#define EPDC_SIZE 0x2000 +#endif + /* Image Prossasing Unit */ #define IPU_BASE 0x40000000 #define IPU_CM_BASE (IPU_BASE + 0x1e000000) @@ -85,138 +122,160 @@ #define DEBUGROM_BASE 0x60000000 #define DEBUGROM_SIZE 0x1000 -#define ESDHC1_BASE 0x70004000 -#define ESDHC2_BASE 0x70008000 -#define ESDHC3_BASE 0x70020000 -#define ESDHC4_BASE 0x70024000 -#define ESDHC_SIZE 0x4000 - -#define UART1_BASE 0x73fbc000 -#define UART2_BASE 0x73fc0000 -#define UART3_BASE 0x7000c000 +#define ESDHC1_BASE (AIPSTZ1_BASE + 0x00004000) +#define ESDHC2_BASE (AIPSTZ1_BASE + 0x00008000) +#define ESDHC3_BASE (AIPSTZ1_BASE + 0x00020000) +#define ESDHC4_BASE (AIPSTZ1_BASE + 0x00024000) +#define ESDHC_SIZE 0x100 + +#define PWM1_BASE (AIPSTZ1_BASE + 0x03fb4000) +#define PWM2_BASE (AIPSTZ1_BASE + 0x03fb8000) + +#define UART1_BASE (AIPSTZ1_BASE + 0x03fbc000) +#define UART2_BASE (AIPSTZ1_BASE + 0x03fc0000) +#define UART3_BASE (AIPSTZ1_BASE + 0x0000c000) /* register definitions in imxuartreg.h */ -#define ECSPI1_BASE 0x70010000 -#define ECSPI2_BASE 0x83fac000 +#define CCMC_BASE (AIPSTZ1_BASE + 0x03fd4000) + +#define ECSPI1_BASE (AIPSTZ1_BASE + 0x00010000) +#define ECSPI2_BASE (AIPSTZ2_BASE + 0x03fac000) #define ECSPI_SIZE 0x4000 -#define SSI1_BASE 0x83fcc000 -#define SSI2_BASE 0x70014000 -#define SSI3_BASE 0x83fe8000 +#define SSI1_BASE (AIPSTZ2_BASE + 0x03fcc000) +#define SSI2_BASE (AIPSTZ1_BASE + 0x00014000) +#define SSI3_BASE (AIPSTZ2_BASE + 0x03fe8000) /* register definitions in imxssireg.h */ -#define SPDIF_BASE 0x70028000 +#define SPDIF_BASE (AIPSTZ1_BASE + 0x00028000) #define SPDIF_SIZE 0x4000 -#define PATA_UDMA_BASE 0x70030000 +#define PATA_UDMA_BASE (AIPSTZ1_BASE + 0x00030000) #define PATA_UDMA_SIZE 0x4000 -#define PATA_PIO_BASE 0x83fe0000 +#define PATA_PIO_BASE (AIPSTZ2_BASE + 0x03fe0000) #define PATA_PIO_SIZE 0x4000 -#define SLM_BASE 0x70034000 +#define SLM_BASE (AIPSTZ1_BASE + 0x00034000) #define SLM_SIZE 0x4000 -#define HSI2C_BASE 0x70038000 +#ifdef IMX50 +#define I2C3_BASE (AIPSTZ1_BASE + 0x00038000) +#define I2C3_SIZE 0x4000 +#else +#define HSI2C_BASE (AIPSTZ1_BASE + 0x00038000) #define HSI2C_SIZE 0x4000 +#endif -#define SPBA_BASE 0x7003c000 +#define SPBA_BASE (AIPSTZ1_BASE + 0x0003c000) #define SPBA_SIZE 0x4000 -#define USBOH3_BASE 0x73f80000 -#define USBOH3_PL301_BASE 0x73fc4000 +#define USBOH3_BASE (AIPSTZ1_BASE + 0x03f80000) +#define USBOH3_PL301_BASE (AIPSTZ1_BASE + 0x03fc4000) #define USBOH3_EHCI_SIZE 0x200 #define USBOH3_OTG 0x000 #define USBOH3_EHCI(n) (USBOH3_EHCI_SIZE*(n)) /* n=1,2,3 */ /* USB_CTRL register */ -#define USBOH3_USBCTRL 0x800 -#define USBCTRL_OWIR __BIT(31) /* OTG Wakeup interrupt request */ -#define USBCTRL_OSIC_SHIFT 29 -#define USBCTRL_OSIC __BITS(29,30) /* OTG Serial interface configuration */ -#define USBCTRL_OUIE __BIT(28) /* OTG Wake-up interrupt enable */ -#define USBCTRL_OBPAL __BITS(25,26) /* OTG Bypass value */ -#define USBCTRL_OPM __BIT(24) /* OTG Power Mask */ -#define USBCTRL_ICVOL __BIT(23) /* Host1 IC_USB voltage status */ -#define USBCTRL_ICTPIE __BIT(19) /* IC USB TP interrupt enable */ -#define USBCTRL_UBPCKE __BIT(18) /* Bypass clock enable */ -#define USBCTRL_H1TCKOEN __BIT(17) /* Host1 ULPO PHY clock enable */ -#define USBCTRL_ICTPC __BIT(16) /* Clear IC TP interrupt flag */ -#define USBCTRL_H1WIR __BIT(15) /* Host1 wakeup interrupt request */ -#define USBCTRL_H1STC_SHIFT 13 -#define USBCTRL_H1SIC __BITS(13,14) /* Host1 serial interface config */ -#define USBCTRL_H1UIE __BIT(12) /* Host1 ILPI interrupt enable */ -#define USBCTRL_H1WIE __BIT(11) /* Host1 wakeup interrupt enable */ -#define USBCTRL_H1BPVAL __BITS(9,10) /* Host1 bypass value */ -#define USBCTRL_H1PM __BIT(8) /* Host1 power mask */ -#define USBCTRL_OHSTLL __BIT(7) /* OTG ULPI TLL enable */ -#define USBCTRL_H1HSTLL __BIT(6) /* Host1 ULPI TLL enable */ -#define USBCTRL_H1DISFSTTL __BIT(4) /* Host1 serial TLL disable */ -#define USBCTRL_OTCKOEN __BIT(1) /* OTG ULPI PHY clock enable */ -#define USBCTRL_BPE __BIT(0) /* Bypass enable */ - -#define USBOH3_OTGMIRROR 0x804 -#define USBOH3_PHYCTRL0 0x808 -#define PHYCTRL0_VLOAD __BIT(31) -#define PHYCTRL0_VCONTROL __BITS(27,30) -#define PHYCTRL0_CONF2 __BIT(26) -#define PHYCTRL0_CONF3 __BIT(25) -#define PHYCTRL0_CHGRDETEN __BIT(24) -#define PHYCTRL0_CHGRDETON __BIT(23) -#define PHYCTRL0_VSTATUS __BITS(15,22) -#define PHYCTRL0_SUSPENDM __BIT(12) -#define PHYCTRL0_RESET __BIT(11) -#define PHYCTRL0_UTMI_ON_CLOCK __BIT(10) +#define USBOH3_USBCTRL 0x800 +#define USBCTRL_OWIR __BIT(31) /* OTG Wakeup interrupt request */ +#define USBCTRL_OSIC __BITS(29,30) /* OTG Serial interface configuration */ +#define USBCTRL_OUIE __BIT(28) /* OTG Wake-up interrupt enable */ +#define USBCTRL_OBPAL __BITS(25,26) /* OTG Bypass value */ +#define USBCTRL_OPM __BIT(24) /* OTG Power Mask */ +#define USBCTRL_ICVOL __BIT(23) /* Host1 IC_USB voltage status */ +#define USBCTRL_ICTPIE __BIT(19) /* IC USB TP interrupt enable */ +#define USBCTRL_UBPCKE __BIT(18) /* Bypass clock enable */ +#define USBCTRL_H1TCKOEN __BIT(17) /* Host1 ULPO PHY clock enable */ +#define USBCTRL_ICTPC __BIT(16) /* Clear IC TP interrupt flag */ +#define USBCTRL_H1WIR __BIT(15) /* Host1 wakeup interrupt request */ +#define USBCTRL_H1SIC __BITS(13,14) /* Host1 serial interface config */ +#define USBCTRL_H1UIE __BIT(12) /* Host1 ILPI interrupt enable */ +#define USBCTRL_H1WIE __BIT(11) /* Host1 wakeup interrupt enable */ +#define USBCTRL_H1BPVAL __BITS(9,10) /* Host1 bypass value */ +#define USBCTRL_H1PM __BIT(8) /* Host1 power mask */ +#define USBCTRL_OHSTLL __BIT(7) /* OTG ULPI TLL enable */ +#define USBCTRL_H1HSTLL __BIT(6) /* Host1 ULPI TLL enable */ +#define USBCTRL_H1DISFSTTL __BIT(4) /* Host1 serial TLL disable */ +#define USBCTRL_OTCKOEN __BIT(1) /* OTG ULPI PHY clock enable */ +#define USBCTRL_BPE __BIT(0) /* Bypass enable */ +#define USBOH3_OTGMIRROR 0x804 +#define USBOH3_PHYCTRL0 0x808 +#define PHYCTRL0_VLOAD __BIT(31) +#define PHYCTRL0_VCONTROL __BITS(27,30) +#define PHYCTRL0_CONF2 __BIT(26) +#define PHYCTRL0_CONF3 __BIT(25) +#define PHYCTRL0_CHGRDETEN __BIT(24) +#define PHYCTRL0_CHGRDETON __BIT(23) +#define PHYCTRL0_VSTATUS __BITS(15,22) +#define PHYCTRL0_SUSPENDM __BIT(12) +#define PHYCTRL0_RESET __BIT(11) +#define PHYCTRL0_UTMI_ON_CLOCK __BIT(10) #define PHYCTRL0_OTG_OVER_CUR_POL __BIT(9) #define PHYCTRL0_OTG_OVER_CUR_DIS __BIT(8) #define PHYCTRL0_OTG_XCVR_CLK_SEL __BIT(7) +#define PHYCTRL0_H1_OVER_CUR_POL __BIT(6) +#define PHYCTRL0_H1_OVER_CUR_DIS __BIT(5) #define PHYCTRL0_H1_XCVR_CLK_SEL __BIT(4) #define PHYCTRL0_PWR_POL __BIT(3) #define PHYCTRL0_CHRGDET __BIT(2) #define PHYCTRL0_CHRGDET_INT_EN __BIT(1) #define PHYCTRL0_CHRGDET_INT_FLG __BIT(0) - -#define USBOH3_PHYCTRL1 0x80c +#define USBOH3_PHYCTRL1 0x80c #define PHYCTRL1_PLLDIVVALUE_MASK __BITS(0,1) #define PHYCTRL1_PLLDIVVALUE_19MHZ 0 /* 19.2MHz */ #define PHYCTRL1_PLLDIVVALUE_24MHZ 1 #define PHYCTRL1_PLLDIVVALUE_26MHZ 2 #define PHYCTRL1_PLLDIVVALUE_27MHZ 3 -#define USBOH3_USBCTRL1 0x810 +#define USBOH3_USBCTRL1 0x810 #define USBCTRL1_UH3_EXT_CLK_EN __BIT(27) #define USBCTRL1_UH2_EXT_CLK_EN __BIT(26) #define USBCTRL1_UH1_EXT_CLK_EN __BIT(25) #define USBCTRL1_OTG_EXT_CLK_EN __BIT(24) -#define USBOH3_USBCTRL2 0x814 -#define USBOH3_USBCTRL3 0x818 +#define USBOH3_USBCTRL2 0x814 +#define USBOH3_USBCTRL3 0x818 +#define USBOH3_UH1_PHY_CTRL_0 0x81c +#define USBOH3_UH1_PHY_CTRL_1 0x820 +#define USBOH3_USB_CLKONOFF_CTRL 0x824 +#define USB_CLKONOFF_CTRL_H1_AHBCLK_OFF __BIT(18) +#define USB_CLKONOFF_CTRL_OTG_AHBCLK_OFF __BIT(17) -#define USBOH3_SIZE 0x820 +#define USBOH3_SIZE 0x828 /* GPIO module */ -#define GPIO_BASE(n) (0x73f84000 + 0x4000 * ((n)-1)) +#define GPIO_BASE(n) \ + (AIPSTZ1_BASE + (((n) <= 4) ? \ + 0x03f84000 + 0x4000 * ((n) - 1) : \ + 0x03fdc000 + 0x4000 * ((n) - 5))) #define GPIO1_BASE GPIO_BASE(1) #define GPIO2_BASE GPIO_BASE(2) #define GPIO3_BASE GPIO_BASE(3) #define GPIO4_BASE GPIO_BASE(4) +#define GPIO5_BASE GPIO_BASE(5) +#define GPIO6_BASE GPIO_BASE(6) +#ifdef IMX50 +#define GPIO_NGROUPS 6 +#else #define GPIO_NGROUPS 4 +#endif -#define KPP_BASE 0x73f94000 +#define KPP_BASE (AIPSTZ1_BASE + 0x03f94000) /* register definitions in imxkppreg.h */ -#define WDOG1_BASE 0x73f98000 -#define WDOG2_BASE 0x73f9c000 +#define WDOG1_BASE (AIPSTZ1_BASE + 0x03f98000) +#define WDOG2_BASE (AIPSTZ1_BASE + 0x03f9c000) #define WDOG_SIZE 0x000a -#define GPT_BASE 0x73fa0000 +#define GPT_BASE (AIPSTZ1_BASE + 0x03fa0000) #define GPT_SIZE 0x4000 -#define SRTC_BASE 0x73fa4000 +#define SRTC_BASE (AIPSTZ1_BASE + 0x03fa4000) #define SRTC_SIZE 0x4000 /* IO multiplexor */ -#define IOMUXC_BASE 0x73fa8000 +#define IOMUXC_BASE (AIPSTZ1_BASE + 0x03fa8000) #define IOMUXC_SIZE 0x4000 #define IOMUXC_MUX_CTL 0x001c /* multiprex control */ @@ -237,15 +296,17 @@ #define PAD_CTL_PUE __BIT(6) #define PAD_CTL_PULL (PAD_CTL_PKE|PAD_CTL_PUE) #define PAD_CTL_KEEPER (PAD_CTL_PKE|0) -#define PAD_CTL_PUS_100K_PD (0x0 << 4) -#define PAD_CTL_PUS_47K_PU (0x1 << 4) -#define PAD_CTL_PUS_100K_PU (0x2 << 4) -#define PAD_CTL_PUS_22K_PU (0x3 << 4) +#define PAD_CTL_PUS_MASK __BITS(5, 4) +#define PAD_CTL_PUS_100K_PD __SHIFTIN(0x0, PAD_CTL_PUS_MASK) +#define PAD_CTL_PUS_47K_PU __SHIFTIN(0x1, PAD_CTL_PUS_MASK) +#define PAD_CTL_PUS_100K_PU __SHIFTIN(0x2, PAD_CTL_PUS_MASK) +#define PAD_CTL_PUS_22K_PU __SHIFTIN(0x3, PAD_CTL_PUS_MASK) #define PAD_CTL_ODE __BIT(3) /* opendrain */ -#define PAD_CTL_DSE_LOW (0x0 << 1) -#define PAD_CTL_DSE_MID (0x1 << 1) -#define PAD_CTL_DSE_HIGH (0x2 << 1) -#define PAD_CTL_DSE_MAX (0x3 << 1) +#define PAD_CTL_DSE_MASK __BITS(2, 1) +#define PAD_CTL_DSE_LOW __SHIFTIN(0x0, PAD_CTL_DSE_MASK) +#define PAD_CTL_DSE_MID __SHIFTIN(0x1, PAD_CTL_DSE_MASK) +#define PAD_CTL_DSE_HIGH __SHIFTIN(0x2, PAD_CTL_DSE_MASK) +#define PAD_CTL_DSE_MAX __SHIFTIN(0x3, PAD_CTL_DSE_MASK) #define PAD_CTL_SRE __BIT(0) #define IOMUXC_INPUT_CTL 0x08c4 /* input control */ #define INPUT_DAISY_0 0 @@ -269,65 +330,60 @@ #define IOMUX_PAD_NONE 0xffff /* EPIT */ -#define EPIT1_BASE 0x73FAC000 -#define EPIT2_BASE 0x73FB0000 +#define EPIT1_BASE (AIPSTZ1_BASE + 0x03FAC000) +#define EPIT2_BASE (AIPSTZ1_BASE + 0x03FB0000) /* register definitions in imxepitreg.h */ -#define PWM1_BASE 0x73fb4000 -#define PWM2_BASE 0x73fb8000 +#define PWM1_BASE (AIPSTZ1_BASE + 0x03fb4000) +#define PWM2_BASE (AIPSTZ1_BASE + 0x03fb8000) #define PWM_SIZE 0x4000 -#define SRC_BASE 0x73fd0000 +#define SRC_BASE (AIPSTZ1_BASE + 0x03fd0000) #define SRC_SIZE 0x4000 -#define CCM_BASE 0x73fd4000 +#define CCM_BASE (AIPSTZ1_BASE + 0x03fd4000) #define CCM_SIZE 0x0088 -#define GPC_BASE 0x73fd8000 +#define GPC_BASE (AIPSTZ1_BASE + 0x03fd8000) #define GPC_SIZE 0x4000 -#define DPLLIP1_BASE 0x83f80000 -#define DPLLIP2_BASE 0x83f84000 -#define DPLLIP3_BASE 0x83f88000 -#define DPLLIP_SIZE 0x4000 - -#define AHBMAX_BASE 0x83f94000 +#define AHBMAX_BASE (AIPSTZ2_BASE + 0x03f94000) #define AHBMAX_SIZE 0x4000 -#define IIM_BASE 0x83f98000 +#define IIM_BASE (AIPSTZ2_BASE + 0x03f98000) #define IIM_SIZE 0x4000 -#define CSU_BASE 0x83f9c000 +#define CSU_BASE (AIPSTZ2_BASE + 0x03f9c000) #define CSU_SIZE 0x4000 -#define OWIRE_BASE 0x83fa4000 /* 1-wire */ +#define OWIRE_BASE (AIPSTZ2_BASE + 0x03fa4000) #define OWIRE_SIZE 0x4000 -#define FIRI_BASE 0x83fa8000 +#define FIRI_BASE (AIPSTZ2_BASE + 0x03fa8000) #define FIRI_SIZE 0x4000 -#define SDMA_BASE 0x83fb0000 +#define SDMA_BASE (AIPSTZ2_BASE + 0x03fb0000) #define SDMA_SIZE 0x4000 /* see imxsdmareg.h for register definitions */ -#define SCC_BASE 0x83fb4000 +#define SCC_BASE (AIPSTZ2_BASE + 0x03fb4000) #define SCC_SIZE 0x4000 -#define ROMCP_BASE 0x83fb8000 +#define ROMCP_BASE (AIPSTZ2_BASE + 0x03fb8000) #define ROMCP_SIZE 0x4000 -#define RTIC_BASE 0x83fbc000 +#define RTIC_BASE (AIPSTZ2_BASE + 0x03fbc000) #define RTIC_SIZE 0x4000 -#define CSPI_BASE 0x83fc0000 +#define CSPI_BASE (AIPSTZ2_BASE + 0x03fc0000) #define CSPI_SIZE 0x4000 -#define I2C1_BASE 0x83fc8000 -#define I2C2_BASE 0x83fc4000 +#define I2C1_BASE (AIPSTZ2_BASE + 0x03fc8000) +#define I2C2_BASE (AIPSTZ2_BASE + 0x03fc4000) /* register definitions in imxi2creg.h */ -#define AUDMUX_BASE 0x83fd0000 +#define AUDMUX_BASE (AIPSTZ2_BASE + 0x03fd0000) #define AUDMUX_SIZE 0x4000 #define AUDMUX_PTCR(n) ((n - 1) * 0x8) #define PTCR_TFSDIR (1 << 31) @@ -347,43 +403,22 @@ #define PDCR_INMMASK(x) (((x) & 0xff) << 0) #define AUDMUX_CNMCR 0x38 -#define EMI_BASE 0x83fd8000 +#define EMI_BASE (AIPSTZ2_BASE + 0x03fd8000) #define EMI_SIZE 0x4000 -#define SIM_BASE 0x83fe4000 +#define SIM_BASE (AIPSTZ2_BASE + 0x03fe4000) #define SIM_SIZE 0x4000 -#define FEC_BASE 0x83fec000 +#define FEC_BASE (AIPSTZ2_BASE + 0x03fec000) #define FEC_SIZE 0x4000 -#define TVE_BASE 0x83ff0000 +#define TVE_BASE (AIPSTZ2_BASE + 0x03ff0000) #define TVE_SIZE 0x4000 -#define VPU_BASE 0x83ff4000 +#define VPU_BASE (AIPSTZ2_BASE + 0x03ff4000) #define VPU_SIZE 0x4000 -#define SAHARA_BASE 0x83ff8000 +#define SAHARA_BASE (AIPSTZ2_BASE + 0x03ff8000) #define SAHARA_SIZE 0x4000 -#define CSD0DDR_BASE 0x90000000 -#define CSD1DDR_BASE 0xa0000000 -#define CSDDDR_SIZE 0x10000000 /* 256MiB */ -#define CS0_BASE 0xb0000000 -#define CS0_SIZE 0x08000000 /* 128MiB */ -#define CS1_BASE 0xb8000000 -#define CS1_SIZE 0x08000000 /* 128MiB */ -#define CS2_BASE 0xc0000000 -#define CS2_SIZE 0x08000000 /* 128MiB */ -#define CS3_BASE 0xc8000000 -#define CS3_SIZE 0x04000000 /* 64MiB */ -#define CS4_BASE 0xcc000000 -#define CS4_SIZE 0x02000000 /* 32MiB */ -#define CS5_BASE 0xcefe0000 -#define CS5_SIZE 0x00010000 /* 32MiB */ -#define NAND_FLASH_BASE 0xcfff0000 /* internal buffer */ -#define NAND_FLASH_SIZE 0x00010000 - -#define GPU2D_BASE 0xd0000000 -#define GPU2D_SIZE 0x10000000 - -#define TZIC_BASE 0xe0000000 -/* register definitions in imx51_tzicreg.h */ +#define DPLL_BASE(n) ((AIPSTZ2_BASE + 0x03F80000 + (0x4000 * ((n)-1)))) +#define DPLL_SIZE 0x100 #endif /* _ARM_IMX_IMX51REG_H_ */ Index: src/sys/arch/arm/imx/imx51_ccmvar.h diff -u src/sys/arch/arm/imx/imx51_ccmvar.h:1.2 src/sys/arch/arm/imx/imx51_ccmvar.h:1.3 --- src/sys/arch/arm/imx/imx51_ccmvar.h:1.2 Sat Mar 22 09:46:33 2014 +++ src/sys/arch/arm/imx/imx51_ccmvar.h Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imx51_ccmvar.h,v 1.2 2014/03/22 09:46:33 hkenken Exp $ */ +/* $NetBSD: imx51_ccmvar.h,v 1.3 2014/07/25 07:49:56 hkenken Exp $ */ /* * Copyright (c) 2012 Genetec Corporation. All rights reserved. * Written by Hashimoto Kenichi for Genetec Corporation. @@ -70,10 +70,21 @@ enum imx51_clock { IMX51CLK_CSPI_CLK_ROOT, IMX51CLK_WRCK_CLK_ROOT, IMX51CLK_LPSR_CLK_ROOT, - IMX51CLK_PGC_CLK_ROOT + IMX51CLK_PGC_CLK_ROOT, +#if IMX50 + IMX50CLK_PFD0_CLK_ROOT, + IMX50CLK_PFD1_CLK_ROOT, + IMX50CLK_PFD2_CLK_ROOT, + IMX50CLK_PFD3_CLK_ROOT, + IMX50CLK_PFD4_CLK_ROOT, + IMX50CLK_PFD5_CLK_ROOT, + IMX50CLK_PFD6_CLK_ROOT, + IMX50CLK_PFD7_CLK_ROOT, +#endif }; u_int imx51_get_clock(enum imx51_clock); void imx51_clk_gating(int, int); +void imx51_clk_rate(int, int, int); #endif /* _ARM_IMX_IMX51_CCMVAR_H_ */ Index: src/sys/arch/arm/imx/imx51_gpio.c diff -u src/sys/arch/arm/imx/imx51_gpio.c:1.2 src/sys/arch/arm/imx/imx51_gpio.c:1.3 --- src/sys/arch/arm/imx/imx51_gpio.c:1.2 Fri Jul 1 20:27:50 2011 +++ src/sys/arch/arm/imx/imx51_gpio.c Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imx51_gpio.c,v 1.2 2011/07/01 20:27:50 dyoung Exp $ */ +/* $NetBSD: imx51_gpio.c,v 1.3 2014/07/25 07:49:56 hkenken Exp $ */ /* derived from imx31_gpio.c */ /*- @@ -30,7 +30,9 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: imx51_gpio.c,v 1.2 2011/07/01 20:27:50 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: imx51_gpio.c,v 1.3 2014/07/25 07:49:56 hkenken Exp $"); + +#include "opt_imx.h" #include "locators.h" #include "gpio.h" @@ -71,6 +73,10 @@ imxgpio_match(device_t parent, cfdata_t case GPIO2_BASE: case GPIO3_BASE: case GPIO4_BASE: +#ifdef IMX50 + case GPIO5_BASE: + case GPIO6_BASE: +#endif return 1; } Index: src/sys/arch/arm/imx/imx51_iomuxreg.h diff -u src/sys/arch/arm/imx/imx51_iomuxreg.h:1.2 src/sys/arch/arm/imx/imx51_iomuxreg.h:1.3 --- src/sys/arch/arm/imx/imx51_iomuxreg.h:1.2 Sun Apr 15 10:16:37 2012 +++ src/sys/arch/arm/imx/imx51_iomuxreg.h Fri Jul 25 07:49:56 2014 @@ -662,21 +662,5 @@ IOMUX_PIN(IOMUXC_SW_MUX_CTL_PAD_##name, \ IOMUXC_SW_PAD_CTL_PAD_##name) -#define MUX_PIN_MUX(name) \ - IOMUX_PIN(IOMUXC_SW_MUX_CTL_PAD_##name, IOMUX_PAD_NONE) - -#define MUX_PIN_PAD(name) \ - IOMUX_PIN(IOMUX_MUX_NONE, IOMUXC_SW_PAD_CTL_PAD_##name) - -#define MUX_PIN_GRP(name) \ - IOMUX_PIN(IOMUX_MUX_NONE, IOMUXC_SW_PAD_CTL_GRP_##name) - -#define MUX_PIN_PATH(name) \ - IOMUX_PIN(IOMUXC_##name##_SELECT_INPUT, IOMUX_MUX_NONE) - -/* INPUT Control */ - -#define MUX_SELECT(name) (name##_SELECT_INPUT) - #endif /* _IMX51_IOMUXREG_H */ Index: src/sys/arch/arm/imx/imx51_uart.c diff -u src/sys/arch/arm/imx/imx51_uart.c:1.2 src/sys/arch/arm/imx/imx51_uart.c:1.3 --- src/sys/arch/arm/imx/imx51_uart.c:1.2 Sat Nov 27 13:37:27 2010 +++ src/sys/arch/arm/imx/imx51_uart.c Fri Jul 25 07:49:56 2014 @@ -25,7 +25,12 @@ * */ +#include <sys/cdefs.h> +__KERNEL_RCSID(0, "$NetBSD: imx51_uart.c,v 1.3 2014/07/25 07:49:56 hkenken Exp $"); + +#include "opt_imx.h" #include "opt_imxuart.h" + #include <sys/param.h> #include <sys/bus.h> #include <sys/device.h> @@ -34,7 +39,6 @@ #include <arm/imx/imxuartreg.h> #include <arm/imx/imxuartvar.h> - int imxuart_match(device_t parent, struct cfdata *cf, void *aux) { Index: src/sys/arch/arm/imx/imx51_dpllreg.h diff -u src/sys/arch/arm/imx/imx51_dpllreg.h:1.1 src/sys/arch/arm/imx/imx51_dpllreg.h:1.2 --- src/sys/arch/arm/imx/imx51_dpllreg.h:1.1 Tue Apr 17 09:33:31 2012 +++ src/sys/arch/arm/imx/imx51_dpllreg.h Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imx51_dpllreg.h,v 1.1 2012/04/17 09:33:31 bsh Exp $ */ +/* $NetBSD: imx51_dpllreg.h,v 1.2 2014/07/25 07:49:56 hkenken Exp $ */ /* * Copyright (c) 2012 Genetec Corporation. All rights reserved. * Written by Hashimoto Kenichi for Genetec Corporation. @@ -33,22 +33,17 @@ #define IMX51_N_DPLLS 3 /* 1..3 */ -#define DPLL_BASE(n) (0x83F80000 + (0x4000 * ((n)-1))) -#define DPLL_SIZE 0x100 - #define DPLL_DP_CTL 0x0000 #define DP_CTL_HFSM __BIT(7) -#define DP_CTL_REF_CLK_SEL_MASK __BITS(8,9) -#define DP_CTL_REF_CLK_SEL_COSC (__BIT(9)|0) -#define DP_CTL_REF_CLK_SEL_FPM (__BIT(9)|__BIT(8)) +#define DP_CTL_REF_CLK_SEL __BITS(8,9) +#define DP_CTL_REF_CLK_SEL_COSC __SHIFTIN(0x2, DP_CTL_REF_CLK_SEL) +#define DP_CTL_REF_CLK_SEL_FPM __SHIFTIN(0x3, DP_CTL_REF_CLK_SEL) #define DP_CTL_REF_CLK_DIV __BIT(10) #define DP_CTL_DPDCK0_2_EN __BIT(12) #define DPLL_DP_CONFIG 0x0004 #define DPLL_DP_OP 0x0008 -#define DP_OP_PDF_SHIFT 0 -#define DP_OP_PDF_MASK (0xf << DP_OP_PDF_SHIFT) -#define DP_OP_MFI_SHIFT 4 -#define DP_OP_MFI_MASK (0xf << DP_OP_MFI_SHIFT) +#define DP_OP_PDF __BITS(3, 0) +#define DP_OP_MFI __BITS(7, 4) #define DPLL_DP_MFD 0x000C #define DPLL_DP_MFN 0x0010 #define DPLL_DP_MFNMINUS 0x0014 Index: src/sys/arch/arm/imx/imx51_usb.c diff -u src/sys/arch/arm/imx/imx51_usb.c:1.1 src/sys/arch/arm/imx/imx51_usb.c:1.2 --- src/sys/arch/arm/imx/imx51_usb.c:1.1 Tue Nov 30 13:05:27 2010 +++ src/sys/arch/arm/imx/imx51_usb.c Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imx51_usb.c,v 1.1 2010/11/30 13:05:27 bsh Exp $ */ +/* $NetBSD: imx51_usb.c,v 1.2 2014/07/25 07:49:56 hkenken Exp $ */ /* * Copyright (c) 2010 Genetec Corporation. All rights reserved. * Written by Hiroyuki Bessho for Genetec Corporation. @@ -25,7 +25,9 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: imx51_usb.c,v 1.1 2010/11/30 13:05:27 bsh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: imx51_usb.c,v 1.2 2014/07/25 07:49:56 hkenken Exp $"); + +#include "opt_imx.h" #include <sys/param.h> #include <sys/systm.h> @@ -49,6 +51,7 @@ __KERNEL_RCSID(0, "$NetBSD: imx51_usb.c, #include "locators.h" static int imxusbc_search(device_t, cfdata_t, const int *, void *); +static int imxusbc_print(void *, const char *); int @@ -82,8 +85,17 @@ imxusbc_search(device_t parent, cfdata_t aa.aa_irq = cf->cf_loc[IMXUSBCCF_IRQ]; if (config_match(parent, cf, &aa) > 0) - config_attach(parent, cf, &aa, NULL); + config_attach(parent, cf, &aa, imxusbc_print); return 0; } +/* ARGSUSED */ +static int +imxusbc_print(void *aux, const char *name __unused) +{ + struct imxusbc_attach_args *aa = aux; + + aprint_normal(" unit %d irq %d", aa->aa_unit, aa->aa_irq); + return (UNCONF); +} Index: src/sys/arch/arm/imx/imxsdmareg.h diff -u src/sys/arch/arm/imx/imxsdmareg.h:1.1 src/sys/arch/arm/imx/imxsdmareg.h:1.2 --- src/sys/arch/arm/imx/imxsdmareg.h:1.1 Sat Nov 13 07:11:03 2010 +++ src/sys/arch/arm/imx/imxsdmareg.h Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imxsdmareg.h,v 1.1 2010/11/13 07:11:03 bsh Exp $ */ +/* $NetBSD: imxsdmareg.h,v 1.2 2014/07/25 07:49:56 hkenken Exp $ */ /* * Copyright (c) 2009 Genetec Corporation. All rights reserved. @@ -29,7 +29,9 @@ #ifndef _IMXSDMAREG_H #define _IMXSDMAREG_H -#define SDMA_SIZE 0x100 +#include "opt_imx.h" + +#define SDMA_SIZE 0x2c0 /* SDMA Controller */ #define SDMA_N_CHANNELS 32 @@ -97,7 +99,13 @@ #define SDMA_CHN0ADDR 0x005c /* Channel 0 Boot address */ #define SDMA_XTRIG_CONF1 0x0070 /* Cross-Triger Evennts Config */ #define SDMA_XTRIG_CONF2 0x0074 +#if defined(IMX31) #define SDMA_CHNENBL(n) (0x80+(n)*4) /* Channel Enable RAM */ +#elif defined(IMX51) +#define SDMA_OTB 0x0078 +#define SDMA_PRF_CNT(n) (0x07c+(n)*4) +#define SDMA_CHNENBL(n) (0x200+(n)*4) /* Channel Enable RAM */ +#endif #define SDMA_CHNPRI(n) (0x100+(n)*4) /* Channel Priority */ Index: src/sys/arch/arm/imx/imxusbreg.h diff -u src/sys/arch/arm/imx/imxusbreg.h:1.1 src/sys/arch/arm/imx/imxusbreg.h:1.2 --- src/sys/arch/arm/imx/imxusbreg.h:1.1 Tue Nov 30 13:05:27 2010 +++ src/sys/arch/arm/imx/imxusbreg.h Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imxusbreg.h,v 1.1 2010/11/30 13:05:27 bsh Exp $ */ +/* $NetBSD: imxusbreg.h,v 1.2 2014/07/25 07:49:56 hkenken Exp $ */ /* * Copyright (c) 2009, 2010 Genetec Corporation. All rights reserved. * Written by Hashimoto Kenichi for Genetec Corporation. @@ -29,18 +29,15 @@ #define _ARM_IMX_IMXUSBREG_H #define IMXUSB_ID 0x0000 -#define IMXUSB_ID_ID_MASK __BITS(5,0) -#define IMXUSB_ID_REVISION_SHIFT 16 -#define IMXUSB_ID_REVISION_MASK __BITS(IMXUSB_ID_REVISION_SHIFT,23) +#define IMXUSB_ID_ID __BITS(5,0) +#define IMXUSB_ID_REVISION __BITS(23,16) #define IMXUSB_HWGENERAL 0x0004 #define IMXUSB_HWHOST 0x0008 -#define HWHOST_HC __BIT(0) -#define HWHOST_NPORT_SHIFT 1 -#define HWHOST_NPORT_MASK __BITS(HWHOST_NPORT_SHIFT,3) +#define HWHOST_HC __BIT(0) +#define HWHOST_NPORT __BITS(3,1) #define IMXUSB_HWDEVICE 0x000c -#define HWDEVICE_DC __BIT(0) -#define HWDEVICE_DEVEP_SHIFT 1 -#define HWDEVICE_DEVEP_MASK __BITS(HWDEVICE_DEVEP_SHIFT,5) +#define HWDEVICE_DC __BIT(0) +#define HWDEVICE_DEVEP __BITS(5,1) #define IMXUSB_HWTXBUF 0x0010 #define IMXUSB_HWRXBUF 0x0014 @@ -51,14 +48,10 @@ #define ULPI_RUN __BIT(30) #define ULPI_RW __BIT(29) #define ULPI_SS __BIT(27) -#define ULPI_PORT_SHIFT 24 -#define ULPI_PORT_MASK (0x7 << ULPI_PORT_SHIFT) -#define ULPI_ADDR_SHIFT 16 -#define ULPI_ADDR_MASK (0xff << ULPI_ADDR_SHIFT) -#define ULPI_DATRD_SHIFT 8 -#define ULPI_DATRD_MASK (0xff << ULPI_DATRD_SHIFT) -#define ULPI_DATWR_SHIFT 0 -#define ULPI_DATWR_MASK (0xff << ULPI_DATWR_SHIFT) +#define ULPI_PORT __BITS(26,24) +#define ULPI_ADDR __BITS(23,16) +#define ULPI_DATRD __BITS(15,8) +#define ULPI_DATWR __BITS(7,0) #define IMXUSB_OTGSC 0x01A4 #define OTGSC_DPIE __BIT(30) @@ -88,24 +81,25 @@ #define OTGSC_VC __BIT( 1) #define OTGSC_VD __BIT( 0) #define IMXUSB_OTGMODE 0x01A8 -#define USBMODE_DEVICE (0x2 << 0) -#define USBMODE_HOST (0x3 << 0) +#define USBMODE_CM __BITS(1,0) +#define USBMODE_CM_IDLE __SHIFTIN(0,USBMODE_CM) +#define USBMODE_CM_DEVICE __SHIFTIN(2,USBMODE_CM) +#define USBMODE_CM_HOST __SHIFTIN(3,USBMODE_CM) #define IMXUSB_EHCI_SIZE 0x200 /* extension to PORTSCx register of EHCI. */ -#define PORTSC_PTS_SHIFT 30 -#define PORTSC_PTS_MASK __BITS(PORTSC_PTS_SHIFT,31) -#define PORTSC_PTS_UTMI (0 << PORTSC_PTS_SHIFT) -#define PORTSC_PTS_PHILIPS (1 << PORTSC_PTS_SHIFT) /* not in i.MX51*/ -#define PORTSC_PTS_ULPI (2 << PORTSC_PTS_SHIFT) -#define PORTSC_PTS_SERIAL (3 << PORTSC_PTS_SHIFT) +#define PORTSC_PTS __BITS(31,30) +#define PORTSC_PTS_UTMI __SHIFTIN(0,PORTSC_PTS) +#define PORTSC_PTS_PHILIPS __SHIFTIN(1,PORTSC_PTS) /* not in i.MX51*/ +#define PORTSC_PTS_ULPI __SHIFTIN(2,PORTSC_PTS) +#define PORTSC_PTS_SERIAL __SHIFTIN(3,PORTSC_PTS) #define PORTSC_STS __BIT(29) /* serial transeiver select */ #define PORTSC_PTW __BIT(28) /* parallel transceiver width */ #define PORTSC_PTW_8 0 -#define PORTSC_PTW_16 PORT_SC_PTW +#define PORTSC_PTW_16 PORTSC_PTW #define PORTSC_PSPD __BITS(26,27) /* port speed (RO) */ #define PORTSC_PFSC __BIT(24) /* port force full speed */ #define PORTSC_PHCD __BIT(23) /* PHY low power suspend */ Index: src/sys/arch/arm/imx/imxusbvar.h diff -u src/sys/arch/arm/imx/imxusbvar.h:1.1 src/sys/arch/arm/imx/imxusbvar.h:1.2 --- src/sys/arch/arm/imx/imxusbvar.h:1.1 Tue Nov 30 13:05:27 2010 +++ src/sys/arch/arm/imx/imxusbvar.h Fri Jul 25 07:49:56 2014 @@ -30,7 +30,8 @@ enum imx_usb_if { IMXUSBC_IF_UTMI, IMXUSBC_IF_PHILIPS, IMXUSBC_IF_ULPI, - IMXUSBC_IF_SERIAL + IMXUSBC_IF_SERIAL, + IMXUSBC_IF_UTMI_WIDE }; struct imxehci_softc { Index: src/sys/arch/arm/imx/imx51_tzic.c diff -u src/sys/arch/arm/imx/imx51_tzic.c:1.6 src/sys/arch/arm/imx/imx51_tzic.c:1.7 --- src/sys/arch/arm/imx/imx51_tzic.c:1.6 Mon Mar 10 09:35:18 2014 +++ src/sys/arch/arm/imx/imx51_tzic.c Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imx51_tzic.c,v 1.6 2014/03/10 09:35:18 skrll Exp $ */ +/* $NetBSD: imx51_tzic.c,v 1.7 2014/07/25 07:49:56 hkenken Exp $ */ /*- * Copyright (c) 2010 SHIMIZU Ryo <r...@nerv.org> @@ -26,10 +26,11 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: imx51_tzic.c,v 1.6 2014/03/10 09:35:18 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: imx51_tzic.c,v 1.7 2014/07/25 07:49:56 hkenken Exp $"); #define _INTR_PRIVATE /* for arm/pic/picvar.h */ +#include "opt_imx.h" #include "locators.h" #include <sys/param.h> Index: src/sys/arch/arm/imx/imxclock.c diff -u src/sys/arch/arm/imx/imxclock.c:1.6 src/sys/arch/arm/imx/imxclock.c:1.7 --- src/sys/arch/arm/imx/imxclock.c:1.6 Sun May 20 14:08:18 2012 +++ src/sys/arch/arm/imx/imxclock.c Fri Jul 25 07:49:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: imxclock.c,v 1.6 2012/05/20 14:08:18 matt Exp $ */ +/* $NetBSD: imxclock.c,v 1.7 2014/07/25 07:49:56 hkenken Exp $ */ /* * Copyright (c) 2009, 2010 Genetec corp. All rights reserved. * Written by Hashimoto Kenichi for Genetec corp. @@ -29,6 +29,11 @@ * common part for i.MX31 and i.MX51 */ +#include <sys/cdefs.h> +__KERNEL_RCSID(0, "$NetBSD: imxclock.c,v 1.7 2014/07/25 07:49:56 hkenken Exp $"); + +#include "opt_imx.h" + #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> @@ -65,6 +70,7 @@ static struct timecounter imx_epit_timec }; static volatile uint32_t imxclock_base; +struct imxclock_softc *imxclock = NULL; void cpu_initclocks(void) @@ -72,48 +78,43 @@ cpu_initclocks(void) uint32_t reg; u_int freq; - if (!epit1_sc) { + if (epit1_sc != NULL) + imxclock = epit1_sc; + else if (epit2_sc != NULL) + imxclock = epit2_sc; + else panic("%s: driver has not been initialized!", __FUNCTION__); - } - freq = imxclock_get_timerfreq(epit1_sc); + freq = imxclock_get_timerfreq(imxclock); imx_epit_timecounter.tc_frequency = freq; tc_init(&imx_epit_timecounter); - aprint_verbose_dev(epit1_sc->sc_dev, - "timer clock frequency %d\n", freq); + aprint_verbose_dev(imxclock->sc_dev, + "timer clock frequency %d\n", freq); - epit1_sc->sc_reload_value = freq / hz - 1; + imxclock->sc_reload_value = freq / hz - 1; - /* stop all timers */ - bus_space_write_4(epit1_sc->sc_iot, epit1_sc->sc_ioh, EPIT_EPITCR, 0); - bus_space_write_4(epit2_sc->sc_iot, epit2_sc->sc_ioh, EPIT_EPITCR, 0); + /* stop timers */ + bus_space_write_4(imxclock->sc_iot, imxclock->sc_ioh, EPIT_EPITCR, 0); aprint_normal("clock: hz=%d stathz = %d\n", hz, stathz); - bus_space_write_4(epit1_sc->sc_iot, epit1_sc->sc_ioh, EPIT_EPITLR, - epit1_sc->sc_reload_value); - bus_space_write_4(epit1_sc->sc_iot, epit1_sc->sc_ioh, EPIT_EPITCMPR, 0); + bus_space_write_4(imxclock->sc_iot, imxclock->sc_ioh, EPIT_EPITLR, + imxclock->sc_reload_value); + bus_space_write_4(imxclock->sc_iot, imxclock->sc_ioh, EPIT_EPITCMPR, 0); - reg = EPITCR_ENMOD | EPITCR_IOVW | EPITCR_RLD | epit1_sc->sc_clksrc; - bus_space_write_4(epit1_sc->sc_iot, epit1_sc->sc_ioh, + reg = EPITCR_ENMOD | EPITCR_IOVW | EPITCR_RLD | imxclock->sc_clksrc; + bus_space_write_4(imxclock->sc_iot, imxclock->sc_ioh, EPIT_EPITCR, reg); reg |= EPITCR_EN | EPITCR_OCIEN | EPITCR_WAITEN | EPITCR_DOZEN | EPITCR_STOPEN; - bus_space_write_4(epit1_sc->sc_iot, epit1_sc->sc_ioh, + bus_space_write_4(imxclock->sc_iot, imxclock->sc_ioh, EPIT_EPITCR, reg); - epit1_sc->sc_ih = intr_establish(epit1_sc->sc_intr, IPL_CLOCK, + epit1_sc->sc_ih = intr_establish(imxclock->sc_intr, IPL_CLOCK, IST_LEVEL, imxclock_intr, NULL); } -#if 0 -void -microtime(struct timeval *tvp) -{ -} -#endif - void setstatclockrate(int schz) { @@ -122,7 +123,7 @@ setstatclockrate(int schz) static int imxclock_intr(void *arg) { - struct imxclock_softc *sc = epit1_sc; + struct imxclock_softc *sc = imxclock; bus_space_write_4(sc->sc_iot, sc->sc_ioh, EPIT_EPITSR, 1); atomic_add_32(&imxclock_base, sc->sc_reload_value); @@ -140,7 +141,7 @@ imx_epit_get_timecount(struct timecounte u_int oldirqstate; oldirqstate = disable_interrupts(I32_bit); - counter = bus_space_read_4(epit1_sc->sc_iot, epit1_sc->sc_ioh, EPIT_EPITCNT); + counter = bus_space_read_4(imxclock->sc_iot, imxclock->sc_ioh, EPIT_EPITCNT); base = imxclock_base; restore_interrupts(oldirqstate); Added files: Index: src/sys/arch/arm/imx/imx50_iomuxreg.h diff -u /dev/null src/sys/arch/arm/imx/imx50_iomuxreg.h:1.1 --- /dev/null Fri Jul 25 07:49:57 2014 +++ src/sys/arch/arm/imx/imx50_iomuxreg.h Fri Jul 25 07:49:56 2014 @@ -0,0 +1,563 @@ +/* $NetBSD: imx50_iomuxreg.h,v 1.1 2014/07/25 07:49:56 hkenken Exp $ */ + +/* + * Copyright (c) 2012 Genetec Corporation. All rights reserved. + * Written by Hashimoto Kenichi for Genetec Corporation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY GENETEC CORPORATION ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENETEC CORPORATION + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This file was generated automatically from PDF file by mkiomuxreg_imx50.rb + */ + +#ifndef _ARM_IMX_IMX50_IOMUXREG_H +#define _ARM_IMX_IMX50_IOMUXREG_H + +/* register offset address */ + +#define IOMUXC_GPR0 0x0000 +#define IOMUXC_GPR1 0x0004 +#define IOMUXC_GPR2 0x0008 +#define IOMUXC_OBSERVE_MUX_0 0x000C +#define IOMUXC_OBSERVE_MUX_1 0x0010 +#define IOMUXC_OBSERVE_MUX_2 0x0014 +#define IOMUXC_OBSERVE_MUX_3 0x0018 +#define IOMUXC_OBSERVE_MUX_4 0x001C +#define IOMUXC_SW_MUX_CTL_PAD_KEY_COL0 0x0020 +#define IOMUXC_SW_MUX_CTL_PAD_KEY_ROW0 0x0024 +#define IOMUXC_SW_MUX_CTL_PAD_KEY_COL1 0x0028 +#define IOMUXC_SW_MUX_CTL_PAD_KEY_ROW1 0x002C +#define IOMUXC_SW_MUX_CTL_PAD_KEY_COL2 0x0030 +#define IOMUXC_SW_MUX_CTL_PAD_KEY_ROW2 0x0034 +#define IOMUXC_SW_MUX_CTL_PAD_KEY_COL3 0x0038 +#define IOMUXC_SW_MUX_CTL_PAD_KEY_ROW3 0x003C +#define IOMUXC_SW_MUX_CTL_PAD_I2C1_SCL 0x0040 +#define IOMUXC_SW_MUX_CTL_PAD_I2C1_SDA 0x0044 +#define IOMUXC_SW_MUX_CTL_PAD_I2C2_SCL 0x0048 +#define IOMUXC_SW_MUX_CTL_PAD_I2C2_SDA 0x004C +#define IOMUXC_SW_MUX_CTL_PAD_I2C3_SCL 0x0050 +#define IOMUXC_SW_MUX_CTL_PAD_I2C3_SDA 0x0054 +#define IOMUXC_SW_MUX_CTL_PAD_PWM1 0x0058 +#define IOMUXC_SW_MUX_CTL_PAD_PWM2 0x005C +#define IOMUXC_SW_MUX_CTL_PAD_OWIRE 0x0060 +#define IOMUXC_SW_MUX_CTL_PAD_EPITO 0x0064 +#define IOMUXC_SW_MUX_CTL_PAD_WDOG 0x0068 +#define IOMUXC_SW_MUX_CTL_PAD_SSI_TXFS 0x006C +#define IOMUXC_SW_MUX_CTL_PAD_SSI_TXC 0x0070 +#define IOMUXC_SW_MUX_CTL_PAD_SSI_TXD 0x0074 +#define IOMUXC_SW_MUX_CTL_PAD_SSI_RXD 0x0078 +#define IOMUXC_SW_MUX_CTL_PAD_SSI_RXF 0x007C +#define IOMUXC_SW_MUX_CTL_PAD_SSI_RXC 0x0080 +#define IOMUXC_SW_MUX_CTL_PAD_UART1_TXD 0x0084 +#define IOMUXC_SW_MUX_CTL_PAD_UART1_RXD 0x0088 +#define IOMUXC_SW_MUX_CTL_PAD_UART1_CTS 0x008C +#define IOMUXC_SW_MUX_CTL_PAD_UART1_RTS 0x0090 +#define IOMUXC_SW_MUX_CTL_PAD_UART2_TXD 0x0094 +#define IOMUXC_SW_MUX_CTL_PAD_UART2_RXD 0x0098 +#define IOMUXC_SW_MUX_CTL_PAD_UART2_CTS 0x009C +#define IOMUXC_SW_MUX_CTL_PAD_UART2_RTS 0x00A0 +#define IOMUXC_SW_MUX_CTL_PAD_UART3_TXD 0x00A4 +#define IOMUXC_SW_MUX_CTL_PAD_UART3_RXD 0x00A8 +#define IOMUXC_SW_MUX_CTL_PAD_UART4_TXD 0x00AC +#define IOMUXC_SW_MUX_CTL_PAD_UART4_RXD 0x00B0 +#define IOMUXC_SW_MUX_CTL_PAD_CSPI_SCLK 0x00B4 +#define IOMUXC_SW_MUX_CTL_PAD_CSPI_MOSI 0x00B8 +#define IOMUXC_SW_MUX_CTL_PAD_CSPI_MISO 0x00BC +#define IOMUXC_SW_MUX_CTL_PAD_CSPI_SS0 0x00C0 +#define IOMUXC_SW_MUX_CTL_PAD_ECSPI1_SCLK 0x00C4 +#define IOMUXC_SW_MUX_CTL_PAD_ECSPI1_MOSI 0x00C8 +#define IOMUXC_SW_MUX_CTL_PAD_ECSPI1_MISO 0x00CC +#define IOMUXC_SW_MUX_CTL_PAD_ECSPI1_SS0 0x00D0 +#define IOMUXC_SW_MUX_CTL_PAD_ECSPI2_SCLK 0x00D4 +#define IOMUXC_SW_MUX_CTL_PAD_ECSPI2_MOSI 0x00D8 +#define IOMUXC_SW_MUX_CTL_PAD_ECSPI2_MISO 0x00DC +#define IOMUXC_SW_MUX_CTL_PAD_ECSPI2_SS0 0x00E0 +#define IOMUXC_SW_MUX_CTL_PAD_SD1_CLK 0x00E4 +#define IOMUXC_SW_MUX_CTL_PAD_SD1_CMD 0x00E8 +#define IOMUXC_SW_MUX_CTL_PAD_SD1_D0 0x00EC +#define IOMUXC_SW_MUX_CTL_PAD_SD1_D1 0x00F0 +#define IOMUXC_SW_MUX_CTL_PAD_SD1_D2 0x00F4 +#define IOMUXC_SW_MUX_CTL_PAD_SD1_D3 0x00F8 +#define IOMUXC_SW_MUX_CTL_PAD_SD2_CLK 0x00FC +#define IOMUXC_SW_MUX_CTL_PAD_SD2_CMD 0x0100 +#define IOMUXC_SW_MUX_CTL_PAD_SD2_D0 0x0104 +#define IOMUXC_SW_MUX_CTL_PAD_SD2_D1 0x0108 +#define IOMUXC_SW_MUX_CTL_PAD_SD2_D2 0x010C +#define IOMUXC_SW_MUX_CTL_PAD_SD2_D3 0x0110 +#define IOMUXC_SW_MUX_CTL_PAD_SD2_D4 0x0114 +#define IOMUXC_SW_MUX_CTL_PAD_SD2_D5 0x0118 +#define IOMUXC_SW_MUX_CTL_PAD_SD2_D6 0x011C +#define IOMUXC_SW_MUX_CTL_PAD_SD2_D7 0x0120 +#define IOMUXC_SW_MUX_CTL_PAD_SD2_WP 0x0124 +#define IOMUXC_SW_MUX_CTL_PAD_SD2_CD 0x0128 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D0 0x012C +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D1 0x0130 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D2 0x0134 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D3 0x0138 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D4 0x013C +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D5 0x0140 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D6 0x0144 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D7 0x0148 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_WR 0x014C +#define IOMUXC_SW_MUX_CTL_PAD_DISP_RD 0x0150 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_RS 0x0154 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_CS 0x0158 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_BUSY 0x015C +#define IOMUXC_SW_MUX_CTL_PAD_DISP_RESET 0x0160 +#define IOMUXC_SW_MUX_CTL_PAD_SD3_CMD 0x0164 +#define IOMUXC_SW_MUX_CTL_PAD_SD3_CLK 0x0168 +#define IOMUXC_SW_MUX_CTL_PAD_SD3_D0 0x016C +#define IOMUXC_SW_MUX_CTL_PAD_SD3_D1 0x0170 +#define IOMUXC_SW_MUX_CTL_PAD_SD3_D2 0x0174 +#define IOMUXC_SW_MUX_CTL_PAD_SD3_D3 0x0178 +#define IOMUXC_SW_MUX_CTL_PAD_SD3_D4 0x017C +#define IOMUXC_SW_MUX_CTL_PAD_SD3_D5 0x0180 +#define IOMUXC_SW_MUX_CTL_PAD_SD3_D6 0x0184 +#define IOMUXC_SW_MUX_CTL_PAD_SD3_D7 0x0188 +#define IOMUXC_SW_MUX_CTL_PAD_SD3_WP 0x018C +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D8 0x0190 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D9 0x0194 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D10 0x0198 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D11 0x019C +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D12 0x01A0 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D13 0x01A4 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D14 0x01A8 +#define IOMUXC_SW_MUX_CTL_PAD_DISP_D15 0x01AC +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D0 0x01B0 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D1 0x01B4 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D2 0x01B8 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D3 0x01BC +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D4 0x01C0 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D5 0x01C4 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D6 0x01C8 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D7 0x01CC +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D8 0x01D0 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D9 0x01D4 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D10 0x01D8 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D11 0x01DC +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D12 0x01E0 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D13 0x01E4 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D14 0x01E8 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_D15 0x01EC +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_GDCLK 0x01F0 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_GDSP 0x01F4 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_GDOE 0x01F8 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_GDRL 0x01FC +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDCLK 0x0200 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDOEZ 0x0204 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDOED 0x0208 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDOE 0x020C +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDLE 0x0210 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDCLKN 0x0214 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDSHR 0x0218 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_PWRCOM 0x021C +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_PWRSTAT 0x0220 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_PWRCTRL0 0x0224 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_PWRCTRL1 0x0228 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_PWRCTRL2 0x022C +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_PWRCTRL3 0x0230 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_VCOM0 0x0234 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_VCOM1 0x0238 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_BDR0 0x023C +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_BDR1 0x0240 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDCE0 0x0244 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDCE1 0x0248 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDCE2 0x024C +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDCE3 0x0250 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDCE4 0x0254 +#define IOMUXC_SW_MUX_CTL_PAD_EPDC_SDCE5 0x0258 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA0 0x025C +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA1 0x0260 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA2 0x0264 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA3 0x0268 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA4 0x026C +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA5 0x0270 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA6 0x0274 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA7 0x0278 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA8 0x027C +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA9 0x0280 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA10 0x0284 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA11 0x0288 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA12 0x028C +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA13 0x0290 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA14 0x0294 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_DA15 0x0298 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_CS2 0x029C +#define IOMUXC_SW_MUX_CTL_PAD_EIM_CS1 0x02A0 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_CS0 0x02A4 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_EB0 0x02A8 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_EB1 0x02AC +#define IOMUXC_SW_MUX_CTL_PAD_EIM_WAIT 0x02B0 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_BCLK 0x02B4 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_RDY 0x02B8 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_OE 0x02BC +#define IOMUXC_SW_MUX_CTL_PAD_EIM_RW 0x02C0 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_LBA 0x02C4 +#define IOMUXC_SW_MUX_CTL_PAD_EIM_CRE 0x02C8 +#define IOMUXC_SW_PAD_CTL_PAD_KEY_COL0 0x02CC +#define IOMUXC_SW_PAD_CTL_PAD_KEY_ROW0 0x02D0 +#define IOMUXC_SW_PAD_CTL_PAD_KEY_COL1 0x02D4 +#define IOMUXC_SW_PAD_CTL_PAD_KEY_ROW1 0x02D8 +#define IOMUXC_SW_PAD_CTL_PAD_KEY_COL2 0x02DC +#define IOMUXC_SW_PAD_CTL_PAD_KEY_ROW2 0x02E0 +#define IOMUXC_SW_PAD_CTL_PAD_KEY_COL3 0x02E4 +#define IOMUXC_SW_PAD_CTL_PAD_KEY_ROW3 0x02E8 +#define IOMUXC_SW_PAD_CTL_PAD_I2C1_SCL 0x02EC +#define IOMUXC_SW_PAD_CTL_PAD_I2C1_SDA 0x02F0 +#define IOMUXC_SW_PAD_CTL_PAD_I2C2_SCL 0x02F4 +#define IOMUXC_SW_PAD_CTL_PAD_I2C2_SDA 0x02F8 +#define IOMUXC_SW_PAD_CTL_PAD_I2C3_SCL 0x02FC +#define IOMUXC_SW_PAD_CTL_PAD_I2C3_SDA 0x0300 +#define IOMUXC_SW_PAD_CTL_PAD_PWM1 0x0304 +#define IOMUXC_SW_PAD_CTL_PAD_PWM2 0x0308 +#define IOMUXC_SW_PAD_CTL_PAD_OWIRE 0x030C +#define IOMUXC_SW_PAD_CTL_PAD_EPITO 0x0310 +#define IOMUXC_SW_PAD_CTL_PAD_WDOG 0x0314 +#define IOMUXC_SW_PAD_CTL_PAD_SSI_TXFS 0x0318 +#define IOMUXC_SW_PAD_CTL_PAD_SSI_TXC 0x031C +#define IOMUXC_SW_PAD_CTL_PAD_SSI_TXD 0x0320 +#define IOMUXC_SW_PAD_CTL_PAD_SSI_RXD 0x0324 +#define IOMUXC_SW_PAD_CTL_PAD_SSI_RXFS 0x0328 +#define IOMUXC_SW_PAD_CTL_PAD_SSI_RXC 0x032C +#define IOMUXC_SW_PAD_CTL_PAD_UART1_TXD 0x0330 +#define IOMUXC_SW_PAD_CTL_PAD_UART1_RXD 0x0334 +#define IOMUXC_SW_PAD_CTL_PAD_UART1_CTS 0x0338 +#define IOMUXC_SW_PAD_CTL_PAD_UART1_RTS 0x033C +#define IOMUXC_SW_PAD_CTL_PAD_UART2_TXD 0x0340 +#define IOMUXC_SW_PAD_CTL_PAD_UART2_RXD 0x0344 +#define IOMUXC_SW_PAD_CTL_PAD_UART2_CTS 0x0348 +#define IOMUXC_SW_PAD_CTL_PAD_UART2_RTS 0x034C +#define IOMUXC_SW_PAD_CTL_PAD_UART3_TXD 0x0350 +#define IOMUXC_SW_PAD_CTL_PAD_UART3_RXD 0x0354 +#define IOMUXC_SW_PAD_CTL_PAD_UART4_TXD 0x0358 +#define IOMUXC_SW_PAD_CTL_PAD_UART4_RXD 0x035C +#define IOMUXC_SW_PAD_CTL_PAD_CSPI_SCLK 0x0360 +#define IOMUXC_SW_PAD_CTL_PAD_CSPI_MOSI 0x0364 +#define IOMUXC_SW_PAD_CTL_PAD_CSPI_MISO 0x0368 +#define IOMUXC_SW_PAD_CTL_PAD_CSPI_SS0 0x036C +#define IOMUXC_SW_PAD_CTL_PAD_ECSPI1_SCLK 0x0370 +#define IOMUXC_SW_PAD_CTL_PAD_ECSPI1_MOSI 0x0374 +#define IOMUXC_SW_PAD_CTL_PAD_ECSPI1_MISO 0x0378 +#define IOMUXC_SW_PAD_CTL_PAD_ECSPI1_SS0 0x037C +#define IOMUXC_SW_PAD_CTL_PAD_ECSPI2_SCLK 0x0380 +#define IOMUXC_SW_PAD_CTL_PAD_ECSPI2_MOSI 0x0384 +#define IOMUXC_SW_PAD_CTL_PAD_ECSPI2_MISO 0x0388 +#define IOMUXC_SW_PAD_CTL_PAD_ECSPI2_SS0 0x038C +#define IOMUXC_SW_PAD_CTL_PAD_SD1_CLK 0x0390 +#define IOMUXC_SW_PAD_CTL_PAD_SD1_CMD 0x0394 +#define IOMUXC_SW_PAD_CTL_PAD_SD1_D0 0x0398 +#define IOMUXC_SW_PAD_CTL_PAD_SD1_D1 0x039C +#define IOMUXC_SW_PAD_CTL_PAD_SD1_D2 0x03A0 +#define IOMUXC_SW_PAD_CTL_PAD_SD1_D3 0x03A4 +#define IOMUXC_SW_PAD_CTL_PAD_SD2_CLK 0x03A8 +#define IOMUXC_SW_PAD_CTL_PAD_SD2_CMD 0x03AC +#define IOMUXC_SW_PAD_CTL_PAD_SD2_D0 0x03B0 +#define IOMUXC_SW_PAD_CTL_PAD_SD2_D1 0x03B4 +#define IOMUXC_SW_PAD_CTL_PAD_SD2_D2 0x03B8 +#define IOMUXC_SW_PAD_CTL_PAD_SD2_D3 0x03BC +#define IOMUXC_SW_PAD_CTL_PAD_SD2_D4 0x03C0 +#define IOMUXC_SW_PAD_CTL_PAD_SD2_D5 0x03C4 +#define IOMUXC_SW_PAD_CTL_PAD_SD2_D6 0x03C8 +#define IOMUXC_SW_PAD_CTL_PAD_SD2_D7 0x03CC +#define IOMUXC_SW_PAD_CTL_PAD_SD2_WP 0x03D0 +#define IOMUXC_SW_PAD_CTL_PAD_SD2_CD 0x03D4 +#define IOMUXC_SW_PAD_CTL_PAD_PMIC_ON_REQ 0x03D8 +#define IOMUXC_SW_PAD_CTL_PAD_PMIC_STBY_REQ 0x03DC +#define IOMUXC_SW_PAD_CTL_PAD_POR_B 0x03E0 +#define IOMUXC_SW_PAD_CTL_PAD_BOOT_MODE1 0x03E4 +#define IOMUXC_SW_PAD_CTL_PAD_RESET_IN_B 0x03E8 +#define IOMUXC_SW_PAD_CTL_PAD_BOOT_MODE0 0x03EC +#define IOMUXC_SW_PAD_CTL_PAD_TEST_MODE 0x03F0 +#define IOMUXC_SW_PAD_CTL_PAD_JTAG_TMS 0x03F4 +#define IOMUXC_SW_PAD_CTL_PAD_JTAG_MOD 0x03F8 +#define IOMUXC_SW_PAD_CTL_PAD_JTAG_TRSTB 0x03FC +#define IOMUXC_SW_PAD_CTL_PAD_JTAG_TDI 0x0400 +#define IOMUXC_SW_PAD_CTL_PAD_JTAG_TCK 0x0404 +#define IOMUXC_SW_PAD_CTL_PAD_JTAG_TDO 0x0408 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D0 0x040C +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D1 0x0410 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D2 0x0414 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D3 0x0418 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D4 0x041C +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D5 0x0420 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D6 0x0424 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D7 0x0428 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_WR 0x042C +#define IOMUXC_SW_PAD_CTL_PAD_DISP_RD 0x0430 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_RS 0x0434 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_CS 0x0438 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_BUSY 0x043C +#define IOMUXC_SW_PAD_CTL_PAD_DISP_RESET 0x0440 +#define IOMUXC_SW_PAD_CTL_PAD_SD3_CMD 0x0444 +#define IOMUXC_SW_PAD_CTL_PAD_SD3_CLK 0x0448 +#define IOMUXC_SW_PAD_CTL_PAD_SD3_D0 0x044C +#define IOMUXC_SW_PAD_CTL_PAD_SD3_D1 0x0450 +#define IOMUXC_SW_PAD_CTL_PAD_SD3_D2 0x0454 +#define IOMUXC_SW_PAD_CTL_PAD_SD3_D3 0x0458 +#define IOMUXC_SW_PAD_CTL_PAD_SD3_D4 0x045C +#define IOMUXC_SW_PAD_CTL_PAD_SD3_D5 0x0460 +#define IOMUXC_SW_PAD_CTL_PAD_SD3_D6 0x0464 +#define IOMUXC_SW_PAD_CTL_PAD_SD3_D7 0x0468 +#define IOMUXC_SW_PAD_CTL_PAD_SD3_WP 0x046C +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D8 0x0470 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D9 0x0474 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D10 0x0478 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D11 0x047C +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D12 0x0480 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D13 0x0484 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D14 0x0488 +#define IOMUXC_SW_PAD_CTL_PAD_DISP_D15 0x048C +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_OPEN 0x0490 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_OPENFB 0x0494 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_1 0x0498 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_0 0x049C +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCKE 0x04A0 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT0 0x04A4 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D16 0x04A8 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D17 0x04AC +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D18 0x04B0 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D19 0x04B4 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D20 0x04B8 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D21 0x04BC +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D22 0x04C0 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D23 0x04C4 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM2 0x04C8 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2 0x04CC +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D0 0x04D0 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D1 0x04D4 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D2 0x04D8 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D3 0x04DC +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D4 0x04E0 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D5 0x04E4 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D6 0x04E8 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D7 0x04EC +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0 0x04F0 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0 0x04F4 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT1 0x04F8 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1 0x04FC +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1 0x0500 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D8 0x0504 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D9 0x0508 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D10 0x050C +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D11 0x0510 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D12 0x0514 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D13 0x0518 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D14 0x051C +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D15 0x0520 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3 0x0524 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM3 0x0528 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D24 0x052C +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D25 0x0530 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D26 0x0534 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D27 0x0538 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D28 0x053C +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D29 0x0540 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D30 0x0544 +#define IOMUXC_SW_PAD_CTL_PAD_DRAM_D31 0x0548 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D0 0x054C +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D1 0x0550 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D2 0x0554 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D3 0x0558 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D4 0x055C +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D5 0x0560 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D6 0x0564 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D7 0x0568 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D8 0x056C +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D9 0x0570 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D10 0x0574 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D11 0x0578 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D12 0x057C +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D13 0x0580 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D14 0x0584 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_D15 0x0588 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_GDCLK 0x058C +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_GDSP 0x0590 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_GDOE 0x0594 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_GDRL 0x0598 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDCLK 0x059C +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDOEZ 0x05A0 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDOED 0x05A4 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDOE 0x05A8 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDLE 0x05AC +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDCLKN 0x05B0 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDSHR 0x05B4 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_PWRCOM 0x05B8 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_PWRSTAT 0x05BC +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_PWRCTRL0 0x05C0 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_PWRCTRL1 0x05C4 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_PWRCTRL2 0x05C8 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_PWRCTRL3 0x05CC +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_VCOM0 0x05D0 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_VCOM1 0x05D4 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_BDR0 0x05D8 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_BDR1 0x05DC +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDCE0 0x05E0 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDCE1 0x05E4 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDCE2 0x05E8 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDCE3 0x05EC +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDCE4 0x05F0 +#define IOMUXC_SW_PAD_CTL_PAD_EPDC_SDCE5 0x05F4 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA0 0x05F8 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA1 0x05FC +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA2 0x0600 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA3 0x0604 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA4 0x0608 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA5 0x060C +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA6 0x0610 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA7 0x0614 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA8 0x0618 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA9 0x061C +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA10 0x0620 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA11 0x0624 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA12 0x0628 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA13 0x062C +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA14 0x0630 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_DA15 0x0634 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_CS2 0x0638 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_CS1 0x063C +#define IOMUXC_SW_PAD_CTL_PAD_EIM_CS0 0x0640 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_EB0 0x0644 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_EB1 0x0648 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_WAIT 0x064C +#define IOMUXC_SW_PAD_CTL_PAD_EIM_BCLK 0x0650 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_RDY 0x0654 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_OE 0x0658 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_RW 0x065C +#define IOMUXC_SW_PAD_CTL_PAD_EIM_LBA 0x0660 +#define IOMUXC_SW_PAD_CTL_PAD_EIM_CRE 0x0664 +#define IOMUXC_SW_PAD_CTL_GRP_ADDDS 0x0668 +#define IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL 0x066C +#define IOMUXC_SW_PAD_CTL_GRP_DDRPKE 0x0670 +#define IOMUXC_SW_PAD_CTL_GRP_EIM 0x0674 +#define IOMUXC_SW_PAD_CTL_GRP_EPDC 0x0678 +#define IOMUXC_SW_PAD_CTL_GRP_UART 0x067C +#define IOMUXC_SW_PAD_CTL_GRP_DDRPK 0x0680 +#define IOMUXC_SW_PAD_CTL_GRP_DDRHYS 0x0684 +#define IOMUXC_SW_PAD_CTL_GRP_KEYPAD 0x0688 +#define IOMUXC_SW_PAD_CTL_GRP_DDRMODE 0x068C +#define IOMUXC_SW_PAD_CTL_GRP_SSI 0x0690 +#define IOMUXC_SW_PAD_CTL_GRP_SD1 0x0694 +#define IOMUXC_SW_PAD_CTL_GRP_B0DS 0x0698 +#define IOMUXC_SW_PAD_CTL_GRP_SD2 0x069C +#define IOMUXC_SW_PAD_CTL_GRP_B1DS 0x06A0 +#define IOMUXC_SW_PAD_CTL_GRP_CTLDS 0x06A4 +#define IOMUXC_SW_PAD_CTL_GRP_B2DS 0x06A8 +#define IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE 0x06AC +#define IOMUXC_SW_PAD_CTL_GRP_LCD 0x06B0 +#define IOMUXC_SW_PAD_CTL_GRP_B3DS 0x06B4 +#define IOMUXC_SW_PAD_CTL_GRP_MISC 0x06B8 +#define IOMUXC_SW_PAD_CTL_GRP_SPI 0x06BC +#define IOMUXC_SW_PAD_CTL_GRP_NANDF 0x06C0 +#define IOMUXC_AUDMUX_P4_INPUT_DA_AMX_SELECT_INPUT 0x06C4 +#define IOMUXC_AUDMUX_P4_INPUT_DB_AMX_SELECT_INPUT 0x06C8 +#define IOMUXC_AUDMUX_P4_INPUT_RXCLK_AMX_SELECT_INPUT 0x06CC +#define IOMUXC_AUDMUX_P4_INPUT_RXFS_AMX_SELECT_INPUT 0x06D0 +#define IOMUXC_AUDMUX_P4_INPUT_TXCLK_AMX_SELECT_INPUT 0x06D4 +#define IOMUXC_AUDMUX_P4_INPUT_TXFS_AMX_SELECT_INPUT 0x06D8 +#define IOMUXC_CCM_PLL1_BYPASS_CLK_SELECT_INPUT 0x06DC +#define IOMUXC_CCM_PLL2_BYPASS_CLK_SELECT_INPUT 0x06E0 +#define IOMUXC_CCM_PLL3_BYPASS_CLK_SELECT_INPUT 0x06E4 +#define IOMUXC_CSPI_IPP_IND_DATAREADY_B_SELECT_INPUT 0x06E8 +#define IOMUXC_CSPI_IPP_IND_SS1_B_SELECT_INPUT 0x06EC +#define IOMUXC_CSPI_IPP_IND_SS2_B_SELECT_INPUT 0x06F0 +#define IOMUXC_CSPI_IPP_IND_SS3_B_SELECT_INPUT 0x06F4 +#define IOMUXC_ELCDIF_LCDIF_BUSY_SELECT_INPUT 0x06F8 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_0_SELECT_INPUT 0x06FC +#define IOMUXC_ELCDIF_LCDIF_RXDATA_1_SELECT_INPUT 0x0700 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_2_SELECT_INPUT 0x0704 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_3_SELECT_INPUT 0x0708 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_4_SELECT_INPUT 0x070C +#define IOMUXC_ELCDIF_LCDIF_RXDATA_5_SELECT_INPUT 0x0710 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_6_SELECT_INPUT 0x0714 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_7_SELECT_INPUT 0x0718 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_8_SELECT_INPUT 0x071C +#define IOMUXC_C_ELCDIF_LCDIF_RXDATA_9_SELECT_INPUT 0x0720 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_10_SELECT_INPUT 0x0724 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_11_SELECT_INPUT 0x0728 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_12_SELECT_INPUT 0x072C +#define IOMUXC_ELCDIF_LCDIF_RXDATA_13_SELECT_INPUT 0x0730 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_14_SELECT_INPUT 0x0734 +#define IOMUXC_ELCDIF_LCDIF_RXDATA_15_SELECT_INPUT 0x0738 +#define IOMUXC_ELCDIF_VSYNC_I_SELECT_INPUT 0x073C +#define IOMUXC_ESDHC2_IPP_CARD_DET_SELECT_INPUT 0x0740 +#define IOMUXC_ESDHC2_IPP_WP_ON_SELECT_INPUT 0x0744 +#define IOMUXC_ESDHC4_IPP_CARD_CLK_IN_SELECT_INPUT 0x0748 +#define IOMUXC_ESDHC4_IPP_CMD_IN_SELECT_INPUT 0x074C +#define IOMUXC_ESDHC4_IPP_DAT0_IN_SELECT_INPUT 0x0750 +#define IOMUXC_XC_ESDHC4_IPP_DAT1_IN_SELECT_INPUT 0x0754 +#define IOMUXC_ESDHC4_IPP_DAT2_IN_SELECT_INPUT 0x0758 +#define IOMUXC_ESDHC4_IPP_DAT3_IN_SELECT_INPUT 0x075C +#define IOMUXC_ESDHC4_IPP_DAT4_IN_SELECT_INPUT 0x0760 +#define IOMUXC_ESDHC4_IPP_DAT5_IN_SELECT_INPUT 0x0764 +#define IOMUXC_ESDHC4_IPP_DAT6_IN_SELECT_INPUT 0x0768 +#define IOMUXC_ESDHC4_IPP_DAT7_IN_SELECT_INPUT 0x076C +#define IOMUXC_FEC_FEC_COL_SELECT_INPUT 0x0770 +#define IOMUXC_FEC_FEC_MDI_SELECT_INPUT 0x0774 +#define IOMUXC_FEC_FEC_RDATA_0_SELECT_INPUT 0x0778 +#define IOMUXC_FEC_FEC_RDATA_1_SELECT_INPUT 0x077C +#define IOMUXC_FEC_FEC_RX_CLK_SELECT_INPUT 0x0780 +#define IOMUXC_FEC_FEC_RX_DV_SELECT_INPUT 0x0784 +#define IOMUXC_FEC_FEC_RX_ER_SELECT_INPUT 0x0788 +#define IOMUXC_FEC_FEC_TX_CLK_SELECT_INPUT 0x078C +#define IOMUXC_KPP_IPP_IND_COL_4_SELECT_INPUT 0x0790 +#define IOMUXC_KPP_IPP_IND_COL_5_SELECT_INPUT 0x0794 +#define IOMUXC_KPP_IPP_IND_COL_6_SELECT_INPUT 0x0798 +#define IOMUXC_KPP_IPP_IND_COL_7_SELECT_INPUT 0x079C +#define IOMUXC_KPP_IPP_IND_ROW_4_SELECT_INPUT 0x07A0 +#define IOMUXC_KPP_IPP_IND_ROW_5_SELECT_INPUT 0x07A4 +#define IOMUXC_KPP_IPP_IND_ROW_6_SELECT_INPUT 0x07A8 +#define IOMUXC_KPP_IPP_IND_ROW_7_SELECT_INPUT 0x07AC +#define IOMUXC_RAWNAND_U_GPMI_INPUT_GPMI_DQS_IN_SELECT_INPUT 0x07B0 +#define IOMUXC_RAWNAND_U_GPMI_INPUT_GPMI_RDY0_SELECT_INPUT 0x07B4 +#define IOMUXC_SDMA_EVENTS_14_SELECT_INPUT 0x07B8 +#define IOMUXC_SDMA_EVENTS_15_SELECT_INPUT 0x07BC +#define IOMUXC_UART1_IPP_UART_RTS_B_SELECT_INPUT 0x07C0 +#define IOMUXC_UART1_IPP_UART_RXD_MUX_SELECT_INPUT 0x07C4 +#define IOMUXC_UART2_IPP_UART_RTS_B_SELECT_INPUT 0x07C8 +#define IOMUXC_UART2_IPP_UART_RXD_MUX_SELECT_INPUT 0x07CC +#define IOMUXC_UART3_IPP_UART_RTS_B_SELECT_INPUT 0x07D0 +#define IOMUXC_UART3_IPP_UART_RXD_MUX_SELECT_INPUT 0x07D4 +#define IOMUXC_UART4_IPP_UART_RTS_B_SELECT_INPUT 0x07D8 +#define IOMUXC_UART4_IPP_UART_RXD_MUX_SELECT_INPUT 0x07DC +#define IOMUXC_UART5_IPP_UART_RTS_B_SELECT_INPUT 0x07E0 +#define IOMUXC_UART5_IPP_UART_RXD_MUX_SELECT_INPUT 0x07E4 +#define IOMUXC_USBOH1_IPP_IND_OTG_OC_SELECT_INPUT 0x07E8 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_0_SELECT_INPUT 0x07EC +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_1_SELECT_INPUT 0x07F0 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_2_SELECT_INPUT 0x07F4 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_3_SELECT_INPUT 0x07F8 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_4_SELECT_INPUT 0x07FC +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_5_SELECT_INPUT 0x0800 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_6_SELECT_INPUT 0x0804 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_7_SELECT_INPUT 0x0808 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_8_SELECT_INPUT 0x080C +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_9_SELECT_INPUT 0x0810 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_10_SELECT_INPUT 0x0814 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_11_SELECT_INPUT 0x0818 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_12_SELECT_INPUT 0x081C +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_13_SELECT_INPUT 0x0820 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_14_SELECT_INPUT 0x0824 +#define IOMUXC_WEIMV2_IPP_IND_READ_DATA_15_SELECT_INPUT 0x0828 + +#endif /* _ARM_IMX_IMX50_IOMUXREG_H */ +