add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
This commit is contained in:
parent
170cdb15b3
commit
bf4c80a7b2
|
@ -1,4 +1,4 @@
|
|||
# $NetBSD: Makefile.inc,v 1.81 2017/01/07 16:29:04 kiyohara Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.82 2017/06/09 18:14:59 ryo Exp $
|
||||
#
|
||||
# etc.evbarm/Makefile.inc -- evbarm-specific etc Makefile targets
|
||||
#
|
||||
|
@ -105,6 +105,8 @@ EVBARM_BOARDS.armv7hf+= CUBOX-I
|
|||
EVBARM_BOARDS.armv7+= HUMMINGBIRD_A31
|
||||
EVBARM_BOARDS.armv7hf+= HUMMINGBIRD_A31
|
||||
#EVBARM_BOARDS.armv7+= IGEPV2
|
||||
EVBARM_BOARDS.armv7+= IMX6UL-STARTER
|
||||
EVBARM_BOARDS.armv7hf+= IMX6UL-STARTER
|
||||
EVBARM_BOARDS.armv7+= TEGRA
|
||||
EVBARM_BOARDS.armv7hf+= TEGRA
|
||||
EVBARM_BOARDS.armv7+= ARMADILLO-IOT-G3
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: if_enet.c,v 1.10 2016/12/15 09:28:02 ozaki-r Exp $ */
|
||||
/* $NetBSD: if_enet.c,v 1.11 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_enet.c,v 1.10 2016/12/15 09:28:02 ozaki-r Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_enet.c,v 1.11 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "vlan.h"
|
||||
|
||||
|
@ -92,8 +92,10 @@ int enet_debug = 0;
|
|||
|
||||
#define ENET_MAX_PKT_NSEGS 64
|
||||
|
||||
#define ENET_TX_NEXTIDX(idx) (((idx) >= (ENET_TX_RING_CNT - 1)) ? 0 : ((idx) + 1))
|
||||
#define ENET_RX_NEXTIDX(idx) (((idx) >= (ENET_RX_RING_CNT - 1)) ? 0 : ((idx) + 1))
|
||||
#define ENET_TX_NEXTIDX(idx) \
|
||||
(((idx) >= (ENET_TX_RING_CNT - 1)) ? 0 : ((idx) + 1))
|
||||
#define ENET_RX_NEXTIDX(idx) \
|
||||
(((idx) >= (ENET_RX_RING_CNT - 1)) ? 0 : ((idx) + 1))
|
||||
|
||||
#define TXDESC_WRITEOUT(idx) \
|
||||
bus_dmamap_sync(sc->sc_dmat, sc->sc_txdesc_dmamap, \
|
||||
|
@ -234,13 +236,15 @@ enet_attach_common(device_t self, bus_space_tag_t iot,
|
|||
/* i.MX7 use 3 interrupts */
|
||||
if ((sc->sc_ih2 = intr_establish(irq + 1, IPL_NET,
|
||||
IST_LEVEL, enet_intr, sc)) == NULL) {
|
||||
aprint_error_dev(self, "unable to establish 2nd interrupt\n");
|
||||
aprint_error_dev(self,
|
||||
"unable to establish 2nd interrupt\n");
|
||||
intr_disestablish(sc->sc_ih);
|
||||
goto failure;
|
||||
}
|
||||
if ((sc->sc_ih3 = intr_establish(irq + 2, IPL_NET,
|
||||
IST_LEVEL, enet_intr, sc)) == NULL) {
|
||||
aprint_error_dev(self, "unable to establish 3rd interrupt\n");
|
||||
aprint_error_dev(self,
|
||||
"unable to establish 3rd interrupt\n");
|
||||
intr_disestablish(sc->sc_ih2);
|
||||
intr_disestablish(sc->sc_ih);
|
||||
goto failure;
|
||||
|
@ -1030,8 +1034,8 @@ enet_ioctl(struct ifnet *ifp, u_long command, void *data)
|
|||
ENET_REG_WRITE(sc, ENET_FTRL, v);
|
||||
v = ENET_REG_READ(sc, ENET_RCR);
|
||||
v &= ~ENET_RCR_MAX_FL(0x3fff);
|
||||
v |= ENET_RCR_MAX_FL(ifp->if_mtu +
|
||||
ETHER_HDR_LEN + ETHER_CRC_LEN + ETHER_VLAN_ENCAP_LEN);
|
||||
v |= ENET_RCR_MAX_FL(ifp->if_mtu + ETHER_HDR_LEN +
|
||||
ETHER_CRC_LEN + ETHER_VLAN_ENCAP_LEN);
|
||||
ENET_REG_WRITE(sc, ENET_RCR, v);
|
||||
}
|
||||
break;
|
||||
|
@ -1187,6 +1191,7 @@ enet_miibus_statchg(struct ifnet *ifp)
|
|||
case IFM_AUTO:
|
||||
case IFM_1000_T:
|
||||
ecr |= ENET_ECR_SPEED; /* 1000Mbps mode */
|
||||
rcr &= ~ENET_RCR_RMII_10T;
|
||||
break;
|
||||
case IFM_100_TX:
|
||||
ecr &= ~ENET_ECR_SPEED; /* 100Mbps mode */
|
||||
|
@ -1203,6 +1208,9 @@ enet_miibus_statchg(struct ifnet *ifp)
|
|||
break;
|
||||
}
|
||||
|
||||
if (sc->sc_rgmii == 0)
|
||||
ecr &= ~ENET_ECR_SPEED;
|
||||
|
||||
if (sc->sc_flowflags & IFM_FLOW)
|
||||
rcr |= ENET_RCR_FCE;
|
||||
else
|
||||
|
@ -1227,7 +1235,7 @@ enet_init_txring(struct enet_softc *sc)
|
|||
|
||||
/* build TX ring */
|
||||
for (i = 0; i < ENET_TX_RING_CNT; i++) {
|
||||
sc->sc_txdesc_ring[i].tx_flags1_len =
|
||||
sc->sc_txdesc_ring[i].tx_flags1_len =
|
||||
((i == (ENET_TX_RING_CNT - 1)) ? TXFLAGS1_W : 0);
|
||||
sc->sc_txdesc_ring[i].tx_databuf = 0;
|
||||
sc->sc_txdesc_ring[i].tx_flags2 = TXFLAGS2_INT;
|
||||
|
@ -1298,7 +1306,7 @@ enet_alloc_rxbuf(struct enet_softc *sc, int idx)
|
|||
}
|
||||
|
||||
bus_dmamap_sync(sc->sc_dmat, sc->sc_rxsoft[idx].rxs_dmamap, 0,
|
||||
sc->sc_rxsoft[idx].rxs_dmamap->dm_mapsize,
|
||||
sc->sc_rxsoft[idx].rxs_dmamap->dm_mapsize,
|
||||
BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
|
||||
|
||||
sc->sc_rxsoft[idx].rxs_mbuf = m;
|
||||
|
@ -1578,7 +1586,8 @@ enet_encap_mbufalign(struct mbuf **mp)
|
|||
ap = mt->m_dat;
|
||||
}
|
||||
ap = ALIGN_PTR(ap, ALIGNBYTE);
|
||||
memcpy(ap, mt->m_data, mt->m_len);
|
||||
memcpy(ap, mt->m_data,
|
||||
mt->m_len);
|
||||
mt->m_data = ap;
|
||||
}
|
||||
|
||||
|
@ -1765,7 +1774,7 @@ enet_init_regs(struct enet_softc *sc, int init)
|
|||
struct ifmedia_entry *ife;
|
||||
paddr_t paddr;
|
||||
uint32_t val;
|
||||
int fulldup, ecr_speed, rcr_speed, flowctrl;
|
||||
int miimode, fulldup, ecr_speed, rcr_speed, flowctrl;
|
||||
|
||||
if (init) {
|
||||
fulldup = 1;
|
||||
|
@ -1799,6 +1808,9 @@ enet_init_regs(struct enet_softc *sc, int init)
|
|||
flowctrl = sc->sc_flowflags & IFM_FLOW;
|
||||
}
|
||||
|
||||
if (sc->sc_rgmii == 0)
|
||||
ecr_speed = 0;
|
||||
|
||||
/* reset */
|
||||
ENET_REG_WRITE(sc, ENET_ECR, ecr_speed | ENET_ECR_RESET);
|
||||
|
||||
|
@ -1846,9 +1858,14 @@ enet_init_regs(struct enet_softc *sc, int init)
|
|||
/* maximum frame size */
|
||||
val = ENET_DEFAULT_PKT_LEN;
|
||||
ENET_REG_WRITE(sc, ENET_FTRL, val); /* Frame Truncation Length */
|
||||
|
||||
if (sc->sc_rgmii == 0)
|
||||
miimode = ENET_RCR_RMII_MODE | ENET_RCR_MII_MODE;
|
||||
else
|
||||
miimode = ENET_RCR_RGMII_EN;
|
||||
ENET_REG_WRITE(sc, ENET_RCR,
|
||||
ENET_RCR_PADEN | /* RX frame padding remove */
|
||||
ENET_RCR_RGMII_EN | /* use RGMII */
|
||||
miimode |
|
||||
(flowctrl ? ENET_RCR_FCE : 0) | /* flow control enable */
|
||||
rcr_speed |
|
||||
(fulldup ? 0 : ENET_RCR_DRT) |
|
||||
|
@ -1880,7 +1897,7 @@ enet_init_regs(struct enet_softc *sc, int init)
|
|||
#if _BYTE_ORDER == _LITTLE_ENDIAN
|
||||
ENET_ECR_DBSWP |
|
||||
#endif
|
||||
ENET_ECR_SPEED | /* default 1000Mbps mode */
|
||||
ecr_speed |
|
||||
ENET_ECR_EN1588 | /* use enhanced TX/RX descriptor */
|
||||
ENET_ECR_ETHEREN); /* Ethernet Enable */
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: if_enet_imx6.c,v 1.2 2016/11/24 03:59:36 hkenken Exp $ */
|
||||
/* $NetBSD: if_enet_imx6.c,v 1.3 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_enet_imx6.c,v 1.2 2016/11/24 03:59:36 hkenken Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_enet_imx6.c,v 1.3 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "locators.h"
|
||||
#include "imxccm.h"
|
||||
|
@ -41,6 +41,7 @@ __KERNEL_RCSID(0, "$NetBSD: if_enet_imx6.c,v 1.2 2016/11/24 03:59:36 hkenken Exp
|
|||
#include <arm/imx/imx6_reg.h>
|
||||
#include <arm/imx/imx6_ccmreg.h>
|
||||
#include <arm/imx/imx6_ccmvar.h>
|
||||
#include <arm/imx/imx6_iomuxreg.h>
|
||||
#include <arm/imx/imx6_ocotpreg.h>
|
||||
#include <arm/imx/imx6_ocotpvar.h>
|
||||
#include <arm/imx/if_enetreg.h>
|
||||
|
@ -56,6 +57,10 @@ enet_match(device_t parent __unused, struct cfdata *match __unused, void *aux)
|
|||
switch (aa->aa_addr) {
|
||||
case (IMX6_AIPS2_BASE + AIPS2_ENET_BASE):
|
||||
return 1;
|
||||
case (IMX6_AIPS1_BASE + AIPS1_ENET2_BASE):
|
||||
if (IMX6_CHIPID_MAJOR(imx6_chip_id()) == CHIPID_MAJOR_IMX6UL)
|
||||
return 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -77,7 +82,19 @@ enet_attach(device_t parent, device_t self, void *aux)
|
|||
aa->aa_size = AIPS_ENET_SIZE;
|
||||
|
||||
sc->sc_imxtype = 6; /* i.MX6 */
|
||||
sc->sc_unit = 0;
|
||||
if (IMX6_CHIPID_MAJOR(imx6_chip_id()) == CHIPID_MAJOR_IMX6UL)
|
||||
sc->sc_rgmii = 0;
|
||||
else
|
||||
sc->sc_rgmii = 1;
|
||||
|
||||
switch (aa->aa_addr) {
|
||||
case (IMX6_AIPS2_BASE + AIPS2_ENET_BASE):
|
||||
sc->sc_unit = 0;
|
||||
break;
|
||||
case (IMX6_AIPS1_BASE + AIPS1_ENET2_BASE):
|
||||
sc->sc_unit = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
#if NIMXOCOTP > 0
|
||||
/* get mac-address from OCOTP */
|
||||
|
@ -88,18 +105,45 @@ enet_attach(device_t parent, device_t self, void *aux)
|
|||
sc->sc_enaddr[2] = eaddr >> 24;
|
||||
sc->sc_enaddr[3] = eaddr >> 16;
|
||||
sc->sc_enaddr[4] = eaddr >> 8;
|
||||
sc->sc_enaddr[5] = eaddr;
|
||||
sc->sc_enaddr[5] = eaddr + sc->sc_unit;
|
||||
#endif
|
||||
|
||||
#if NIMXCCM > 0
|
||||
/* PLL power up */
|
||||
if (imx6_pll_power(CCM_ANALOG_PLL_ENET, 1,
|
||||
CCM_ANALOG_PLL_ENET_ENABLE) != 0) {
|
||||
CCM_ANALOG_PLL_ENET_ENABLE) != 0) {
|
||||
aprint_error_dev(sc->sc_dev,
|
||||
"couldn't enable CCM_ANALOG_PLL_ENET\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (IMX6_CHIPID_MAJOR(imx6_chip_id()) == CHIPID_MAJOR_IMX6UL) {
|
||||
uint32_t v;
|
||||
|
||||
/* iMX6UL */
|
||||
if ((imx6_pll_power(CCM_ANALOG_PLL_ENET, 1,
|
||||
CCM_ANALOG_PLL_ENET_ENET_25M_REF_EN) != 0) ||
|
||||
(imx6_pll_power(CCM_ANALOG_PLL_ENET, 1,
|
||||
CCM_ANALOG_PLL_ENET_ENET2_125M_EN) != 0)) {
|
||||
aprint_error_dev(sc->sc_dev,
|
||||
"couldn't enable CCM_ANALOG_PLL_ENET\n");
|
||||
return;
|
||||
}
|
||||
|
||||
v = iomux_read(IMX6UL_IOMUX_GPR1);
|
||||
switch (sc->sc_unit) {
|
||||
case 0:
|
||||
v |= IMX6UL_IOMUX_GPR1_ENET1_TX_CLK_DIR;
|
||||
v &= ~IMX6UL_IOMUX_GPR1_ENET1_CLK_SEL;
|
||||
break;
|
||||
case 1:
|
||||
v |= IMX6UL_IOMUX_GPR1_ENET2_TX_CLK_DIR;
|
||||
v &= ~IMX6UL_IOMUX_GPR1_ENET2_CLK_SEL;
|
||||
break;
|
||||
}
|
||||
iomux_write(IMX6UL_IOMUX_GPR1, v);
|
||||
}
|
||||
|
||||
sc->sc_pllclock = imx6_get_clock(IMX6CLK_PLL6);
|
||||
#else
|
||||
sc->sc_pllclock = 50000000;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: if_enet_imx7.c,v 1.1 2016/05/17 06:44:45 ryo Exp $ */
|
||||
/* $NetBSD: if_enet_imx7.c,v 1.2 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_enet_imx7.c,v 1.1 2016/05/17 06:44:45 ryo Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_enet_imx7.c,v 1.2 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "locators.h"
|
||||
#include "imxccm.h"
|
||||
|
@ -79,6 +79,7 @@ enet_attach(device_t parent, device_t self, void *aux)
|
|||
aa->aa_size = AIPS_ENET_SIZE;
|
||||
|
||||
sc->sc_imxtype = 7; /* i.MX7 */
|
||||
sc->sc_rgmii = 1;
|
||||
|
||||
#if NIMXCCM > 0
|
||||
/* PLL power up */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: if_enetreg.h,v 1.2 2016/05/17 06:44:45 ryo Exp $ */
|
||||
/* $NetBSD: if_enetreg.h,v 1.3 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -118,10 +118,14 @@
|
|||
# define ENET_RCR_PAUFWD __BIT(13)
|
||||
# define ENET_RCR_PADEN __BIT(12)
|
||||
# define ENET_RCR_RMII_10T __BIT(9)
|
||||
# define ENET_RCR_RMII_MODE __BIT(8)
|
||||
# define ENET_RCR_RGMII_EN __BIT(6)
|
||||
# define ENET_RCR_FCE __BIT(5)
|
||||
# define ENET_RCR_BC_REJ __BIT(4)
|
||||
# define ENET_RCR_PROM __BIT(3)
|
||||
# define ENET_RCR_MII_MODE __BIT(2)
|
||||
# define ENET_RCR_DRT __BIT(1)
|
||||
# define ENET_RCR_LOOP __BIT(0)
|
||||
|
||||
#define ENET_TCR 0x000000c4
|
||||
# define ENET_TCR_FDEN __BIT(2)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: if_enetvar.h,v 1.1 2016/05/17 06:44:45 ryo Exp $ */
|
||||
/* $NetBSD: if_enetvar.h,v 1.2 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -58,6 +58,7 @@ struct enet_softc {
|
|||
|
||||
int sc_unit;
|
||||
int sc_imxtype;
|
||||
int sc_rgmii;
|
||||
unsigned int sc_pllclock;
|
||||
|
||||
/* interrupts */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_ahcisata.c,v 1.4 2016/11/24 03:59:36 hkenken Exp $ */
|
||||
/* $NetBSD: imx6_ahcisata.c,v 1.5 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_ahcisata.c,v 1.4 2016/11/24 03:59:36 hkenken Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_ahcisata.c,v 1.5 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "locators.h"
|
||||
#include "opt_imx.h"
|
||||
|
@ -81,6 +81,7 @@ imx6_ahcisata_match(device_t parent, cfdata_t match, void *aux)
|
|||
case CHIPID_MAJOR_IMX6SL:
|
||||
case CHIPID_MAJOR_IMX6DL:
|
||||
case CHIPID_MAJOR_IMX6SOLO:
|
||||
case CHIPID_MAJOR_IMX6UL:
|
||||
return 0;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_board.c,v 1.7 2016/11/24 08:41:20 hkenken Exp $ */
|
||||
/* $NetBSD: imx6_board.c,v 1.8 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2012 Genetec Corporation. All rights reserved.
|
||||
|
@ -27,10 +27,11 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(1, "$NetBSD: imx6_board.c,v 1.7 2016/11/24 08:41:20 hkenken Exp $");
|
||||
__KERNEL_RCSID(1, "$NetBSD: imx6_board.c,v 1.8 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "opt_imx.h"
|
||||
#include "arml2cc.h"
|
||||
#include "opt_cputypes.h"
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/bus.h>
|
||||
|
@ -223,6 +224,14 @@ imx6_device_register(device_t self, void *aux)
|
|||
imx6_armrootclk() / IMX6_PERIPHCLK_N);
|
||||
return;
|
||||
}
|
||||
#ifdef CPU_CORTEXA7
|
||||
/* also for A7 */
|
||||
if (device_is_a(self, "armgtmr")) {
|
||||
prop_dictionary_set_uint32(dict, "frequency",
|
||||
armreg_cnt_frq_read());
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef MULTIPROCESSOR
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_ccm.c,v 1.5 2016/11/24 03:59:36 hkenken Exp $ */
|
||||
/* $NetBSD: imx6_ccm.c,v 1.6 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2010-2012, 2014 Genetec Corporation. All rights reserved.
|
||||
|
@ -31,10 +31,11 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_ccm.c,v 1.5 2016/11/24 03:59:36 hkenken Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_ccm.c,v 1.6 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "opt_imx.h"
|
||||
#include "opt_imx6clk.h"
|
||||
#include "opt_cputypes.h"
|
||||
|
||||
#include "locators.h"
|
||||
|
||||
|
@ -48,7 +49,9 @@ __KERNEL_RCSID(0, "$NetBSD: imx6_ccm.c,v 1.5 2016/11/24 03:59:36 hkenken Exp $")
|
|||
#include <sys/param.h>
|
||||
|
||||
#include <machine/cpu.h>
|
||||
#ifdef CPU_CORTEXA9
|
||||
#include <arm/cortex/a9tmr_var.h>
|
||||
#endif
|
||||
|
||||
#include <arm/imx/imx6_ccmvar.h>
|
||||
#include <arm/imx/imx6_ccmreg.h>
|
||||
|
@ -439,7 +442,9 @@ imx6_set_clock(enum imx6_clock clk, uint32_t freq)
|
|||
|
||||
v = imx6_get_clock(IMX6CLK_ARM_ROOT);
|
||||
cpufreq_set_all(v);
|
||||
#ifdef CPU_CORTEXA9
|
||||
a9tmr_update_freq(v / IMX6_PERIPHCLK_N);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -501,6 +506,7 @@ imx6_get_clock(enum imx6_clock clk)
|
|||
break;
|
||||
|
||||
case IMX6CLK_PLL6:
|
||||
/* XXX: iMX6UL has 2 div. which? */
|
||||
v = imx6_ccm_read(CCM_ANALOG_PLL_ENET);
|
||||
switch (v & CCM_ANALOG_PLL_ENET_DIV_SELECT_MASK) {
|
||||
case 0:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_ccmreg.h,v 1.4 2016/11/24 03:59:36 hkenken Exp $ */
|
||||
/* $NetBSD: imx6_ccmreg.h,v 1.5 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -247,15 +247,20 @@
|
|||
#define CCM_ANALOG_PLL_ENET_CLR 0x000040e8
|
||||
#define CCM_ANALOG_PLL_ENET_TOG 0x000040ec
|
||||
#define CCM_ANALOG_PLL_ENET_LOCK __BIT(31)
|
||||
#define CCM_ANALOG_PLL_ENET_ENET_25M_REF_EN __BIT(21) /* iMX6UL */
|
||||
#define CCM_ANALOG_PLL_ENET_ENET2_125M_EN __BIT(20) /* iMX6UL */
|
||||
#define CCM_ANALOG_PLL_ENET_ENABLE_100M __BIT(20) /* SATA */
|
||||
#define CCM_ANALOG_PLL_ENET_ENABLE_125M __BIT(19) /* PCIe */
|
||||
#define CCM_ANALOG_PLL_ENET_PFD_OFFSET_EN __BIT(18)
|
||||
#define CCM_ANALOG_PLL_ENET_BYPASS __BIT(16)
|
||||
#define CCM_ANALOG_PLL_ENET_BYPASS_CLK_SRC(s) __SHIFTIN(s, __BITS(15, 14))
|
||||
#define CCM_ANALOG_PLL_ENET_ENET1_125M_EN __BIT(13) /* iMX6UL */
|
||||
#define CCM_ANALOG_PLL_ENET_ENABLE __BIT(13) /* Ether */
|
||||
#define CCM_ANALOG_PLL_ENET_POWERDOWN __BIT(12)
|
||||
#define CCM_ANALOG_PLL_ENET1_DIV_SELECT(d) __SHIFTIN(d, __BITS(2, 1))
|
||||
#define CCM_ANALOG_PLL_ENET1_DIV_SELECT_MASK __BITS(3, 2)
|
||||
#define CCM_ANALOG_PLL_ENET_DIV_SELECT(d) __SHIFTIN(d, __BITS(1, 0))
|
||||
#define CCM_ANALOG_PLL_ENET_DIV_SELECT_MASK __SHIFTIN(3, __BITS(1, 0))
|
||||
#define CCM_ANALOG_PLL_ENET_DIV_SELECT_MASK __BITS(1, 0)
|
||||
#define CCM_ANALOG_PFD_480 0x000040f0
|
||||
#define CCM_ANALOG_PFD_480_SET 0x000040f4
|
||||
#define CCM_ANALOG_PFD_480_CLR 0x000040f8
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_gpio.c,v 1.1 2014/09/25 05:05:28 ryo Exp $ */
|
||||
/* $NetBSD: imx6_gpio.c,v 1.2 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2007 The NetBSD Foundation, Inc.
|
||||
|
@ -29,7 +29,7 @@
|
|||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_gpio.c,v 1.1 2014/09/25 05:05:28 ryo Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_gpio.c,v 1.2 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "opt_imx.h"
|
||||
|
||||
|
@ -73,9 +73,13 @@ imxgpio_match(device_t parent, cfdata_t cfdata, void *aux)
|
|||
case IMX6_AIPS1_BASE + AIPS1_GPIO3_BASE:
|
||||
case IMX6_AIPS1_BASE + AIPS1_GPIO4_BASE:
|
||||
case IMX6_AIPS1_BASE + AIPS1_GPIO5_BASE:
|
||||
return 1;
|
||||
case IMX6_AIPS1_BASE + AIPS1_GPIO6_BASE:
|
||||
case IMX6_AIPS1_BASE + AIPS1_GPIO7_BASE:
|
||||
return 1;
|
||||
/* iMX6UL does not have GPIO7 */
|
||||
if (IMX6_CHIPID_MAJOR(imx6_chip_id()) != CHIPID_MAJOR_IMX6UL)
|
||||
return 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_intr.h,v 1.3 2015/06/01 09:49:36 ryo Exp $ */
|
||||
/* $NetBSD: imx6_intr.h,v 1.4 2017/06/09 18:14:59 ryo Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 2012 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
|
@ -45,20 +45,29 @@
|
|||
#define IRQ_DAP 33
|
||||
#define IRQ_SDMA 34
|
||||
#define IRQ_VPU_JPEG 35
|
||||
#define IRQ_TSC 35 /* iMX6UL */
|
||||
#define IRQ_SNVS_PMIC 36
|
||||
#define IRQ_IPU1_ERROR 37
|
||||
#define IRQ_LCDIF_SYNC 37 /* iMX6UL */
|
||||
#define IRQ_IPU1_SYNC 38
|
||||
#define IRQ_BEE 38 /* iMX6UL */
|
||||
#define IRQ_IPU2_ERROR 39
|
||||
#define IRQ_CSI 39 /* iMX6UL */
|
||||
#define IRQ_IPU2_SYNC 40
|
||||
#define IRQ_PXP 40 /* iMX6UL */
|
||||
#define IRQ_GPU3D 41
|
||||
#define IRQ_GPU2D_IDLE 42
|
||||
#define IRQ_SCTR_A 41 /* iMX6UL */
|
||||
#define IRQ_SCTR_B 42 /* iMX6UL */
|
||||
#define IRQ_GPU2D 43
|
||||
#define IRQ_WDOG3 43 /* iMX6UL */
|
||||
#define IRQ_VPU 44
|
||||
#define IRQ_APBH 45
|
||||
#define IRQ_EIM 46
|
||||
#define IRQ_BCH 47
|
||||
#define IRQ_GPMI 48
|
||||
#define IRQ_DTCP 49
|
||||
#define IRQ_UART6 49 /* iMX6UL */
|
||||
#define IRQ_VDOA 50
|
||||
#define IRQ_SNVS 51
|
||||
#define IRQ_SNVS_SEC 52
|
||||
|
@ -67,6 +76,8 @@
|
|||
#define IRQ_USDHC2 55
|
||||
#define IRQ_USDHC3 56
|
||||
#define IRQ_USDHC4 57
|
||||
#define IRQ_SAI3_A 56 /* iMX6UL */
|
||||
#define IRQ_SAI3_B 57 /* iMX6UL */
|
||||
#define IRQ_UART1 58
|
||||
#define IRQ_UART2 59
|
||||
#define IRQ_UART3 60
|
||||
|
@ -77,26 +88,35 @@
|
|||
#define IRQ_ECSPI3 65
|
||||
#define IRQ_ECSPI4 66
|
||||
#define IRQ_ECSPI5 67
|
||||
#define IRQ_I2C4 67 /* iMX6UL */
|
||||
#define IRQ_I2C1 68
|
||||
#define IRQ_I2C2 69
|
||||
#define IRQ_I2C3 70
|
||||
#define IRQ_SATA 71
|
||||
#define IRQ_UART7 71 /* iMX6UL */
|
||||
#define IRQ_USB1 72
|
||||
#define IRQ_UART8 72 /* iMX6UL */
|
||||
#define IRQ_USB2 73
|
||||
#define IRQ__RSVD73 73 /* iMX6UL */
|
||||
#define IRQ_USB3 74
|
||||
#define IRQ_USBOTG2 74 /* iMX6UL */
|
||||
#define IRQ_USBOTG 75
|
||||
#define IRQ_USBOTG1 75 /* iMX6UL */
|
||||
#define IRQ_USBPHY0 76
|
||||
#define IRQ_USBPHY1 77
|
||||
#define IRQ_SSI1 78
|
||||
#define IRQ_CAAM_JQ2 78 /* iMX6UL */
|
||||
#define IRQ_SSI2 79
|
||||
#define IRQ_CAAM_ERR 79 /* iMX6UL */
|
||||
#define IRQ_SSI3 80
|
||||
#define IRQ_CAAM_RTIC 80 /* iMX6UL */
|
||||
#define IRQ_TEMP 81
|
||||
#define IRQ_ASRC 82
|
||||
#define IRQ_ESAI 83
|
||||
#define IRQ_SPDIF 84
|
||||
#define IRQ_MLB 85
|
||||
#define IRQ_PMU 86
|
||||
#define IRQ_GPT 87
|
||||
#define IRQ_GPT1 87
|
||||
#define IRQ_EPIT1 88
|
||||
#define IRQ_EPIT2 89
|
||||
#define IRQ_GPIO7 90
|
||||
|
@ -139,28 +159,41 @@
|
|||
#define IRQ_CPU_CTI 127
|
||||
#define IRQ_CPU_WDOG 128
|
||||
#define IRQ__RSVD129 129
|
||||
#define IRQ_SAI1 129 /* iMX6UL */
|
||||
#define IRQ__RSVD130 130
|
||||
#define IRQ_SAI2 130 /* iMX6UL */
|
||||
#define IRQ__RSVD131 131
|
||||
#define IRQ_MIPI_CSI1 132
|
||||
#define IRQ_ADC1 132 /* iMX6UL */
|
||||
#define IRQ_MIPI_CSI2 133
|
||||
#define IRQ_ADC2 133 /* iMX6UL */
|
||||
#define IRQ_MIPI_DSI 134
|
||||
#define IRQ__RSVD134 134 /* iMX6UL */
|
||||
#define IRQ_MIPI_HSI 135
|
||||
#define IRQ__RSVD135 135 /* iMX6UL */
|
||||
#define IRQ_SJC 136
|
||||
#define IRQ_CAAM0 137
|
||||
#define IRQ_CAAM1 138
|
||||
#define IRQ__RSVD139 139
|
||||
#define IRQ_QSPI 139 /* iMX6UL */
|
||||
#define IRQ_ASC1 140
|
||||
#define IRQ_ASC2 141
|
||||
#define IRQ_GPT2 141 /* iMX6UL */
|
||||
#define IRQ_FLEXCAN1 142
|
||||
#define IRQ_FLEXCAN2 143
|
||||
#define IRQ__RSVD144 144
|
||||
#define IRQ__RSVD145 145
|
||||
#define IRQ__RSVD146 146
|
||||
#define IRQ_SIM1 144 /* iMX6UL */
|
||||
#define IRQ_SIM2 145 /* iMX6UL */
|
||||
#define IRQ_PWM5 146 /* iMX6UL */
|
||||
#define IRQ_HDMI_MASTER 147
|
||||
#define IRQ_PWM6 147 /* iMX6UL */
|
||||
#define IRQ_HDMI_CEC 148
|
||||
#define IRQ_PWM7 148 /* iMX6UL */
|
||||
#define IRQ_MLB150L 149
|
||||
#define IRQ_ENET 150
|
||||
#define IRQ_ENET_1588 151
|
||||
#define IRQ_PWM8 149 /* iMX6UL */
|
||||
#define IRQ_ENET1 150
|
||||
#define IRQ_ENET1_1588 151
|
||||
#define IRQ_ENET2 152 /* iMX6UL */
|
||||
#define IRQ_ENET2_1588 153 /* iMX6UL */
|
||||
#define IRQ_PCIE1 152
|
||||
#define IRQ_PCIE2 153
|
||||
#define IRQ_PCIE3 154
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_iomuxreg.h,v 1.3 2015/12/31 11:53:18 ryo Exp $ */
|
||||
/* $NetBSD: imx6_iomuxreg.h,v 1.4 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -38,7 +38,6 @@
|
|||
#define IOMUX_GPR1_APP_REQ_ENTR_L1 __BIT(26)
|
||||
#define IOMUX_GPR1_MIPI_COLOR_SW __BIT(25)
|
||||
#define IOMUX_GPR1_MIPI_DPI_OFF __BIT(24)
|
||||
#define IOMUX_GPR1_Reserved __BIT(23
|
||||
#define IOMUX_GPR1_EXC_MON __BIT(22)
|
||||
#define IOMUX_GPR1_ENET_CLK_SEL __BIT(21)
|
||||
#define IOMUX_GPR1_MIPI_IPU2_MUX __BIT(20)
|
||||
|
@ -1777,6 +1776,452 @@
|
|||
#define IMX6SL_IOMUXC_EIM_DTACK_B_SELECT_INPUT 0x00000880
|
||||
#define IMX6SL_IOMUXC_EIM_WAIT_B_SELECT_INPUT 0x00000884
|
||||
|
||||
/* for iMX6UltraLight */
|
||||
#define IMX6UL_IOMUX_GPR0 0x00004000
|
||||
#define IMX6UL_IOMUX_GPR1 0x00004004
|
||||
#define IMX6UL_IOMUX_GPR1_ARMA7_CLK_AHB_EN __BIT(26)
|
||||
#define IMX6UL_IOMUX_GPR1_ARMA7_CLK_ATB_EN __BIT(25)
|
||||
#define IMX6UL_IOMUX_GPR1_ARMA7_CLK_APB_DBG_EN __BIT(24)
|
||||
#define IMX6UL_IOMUX_GPR1_TZASC1_BOOT_LOCK __BIT(23)
|
||||
#define IMX6UL_IOMUX_GPR1_EXC_MON __BIT(22)
|
||||
#define IMX6UL_IOMUX_GPR1_SAI3_MCLK_DIR __BIT(21)
|
||||
#define IMX6UL_IOMUX_GPR1_SAI2_MCLK_DIR __BIT(20)
|
||||
#define IMX6UL_IOMUX_GPR1_SAI1_MCLK_DIR __BIT(19)
|
||||
#define IMX6UL_IOMUX_GPR1_ENET2_TX_CLK_DIR __BIT(18)
|
||||
#define IMX6UL_IOMUX_GPR1_ENET1_TX_CLK_DIR __BIT(17)
|
||||
#define IMX6UL_IOMUX_GPR1_ADD_DS __BIT(16)
|
||||
#define IMX6UL_IOMUX_GPR1_USB_EXP_MODE __BIT(15)
|
||||
#define IMX6UL_IOMUX_GPR1_ENET2_CLK_SEL __BIT(14)
|
||||
#define IMX6UL_IOMUX_GPR1_ENET1_CLK_SEL __BIT(13)
|
||||
#define IMX6UL_IOMUX_GPR1_GINT __BIT(12)
|
||||
#define IMX6UL_IOMUX_GPR2 0x00004008
|
||||
#define IMX6UL_IOMUX_GPR3 0x0000400c
|
||||
#define IMX6UL_IOMUX_GPR4 0x00004010
|
||||
#define IMX6UL_IOMUX_GPR5 0x00004014
|
||||
#define IMX6UL_IOMUX_GPR9 0x00004024
|
||||
#define IMX6UL_IOMUX_GPR10 0x00004028
|
||||
#define IMX6UL_IOMUX_GPR14 0x00004038
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_BOOT_MODE0 0x00000014
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_BOOT_MODE1 0x00000018
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER0 0x0000001c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER1 0x00000020
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER2 0x00000024
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER3 0x00000028
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER4 0x0000002c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER5 0x00000030
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER6 0x00000034
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER7 0x00000038
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER8 0x0000003c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER9 0x00000040
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_JTAG_MOD 0x00000044
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_JTAG_TMS 0x00000048
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_JTAG_TDO 0x0000004c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_JTAG_TDI 0x00000050
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_JTAG_TCK 0x00000054
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_JTAG_TRST_B 0x00000058
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00 0x0000005c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO01 0x00000060
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO02 0x00000064
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 0x00000068
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO04 0x0000006c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO05 0x00000070
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO06 0x00000074
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO07 0x00000078
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO08 0x0000007c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO09 0x00000080
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART1_TX_DATA 0x00000084
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART1_RX_DATA 0x00000088
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART1_CTS_B 0x0000008c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART1_RTS_B 0x00000090
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART2_TX_DATA 0x00000094
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART2_RX_DATA 0x00000098
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART2_CTS_B 0x0000009c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART2_RTS_B 0x000000a0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART3_TX_DATA 0x000000a4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART3_RX_DATA 0x000000a8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART3_CTS_B 0x000000ac
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART3_RTS_B 0x000000b0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART4_TX_DATA 0x000000b4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART4_RX_DATA 0x000000b8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART5_TX_DATA 0x000000bc
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_UART5_RX_DATA 0x000000c0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET1_RX_DATA0 0x000000c4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET1_RX_DATA1 0x000000c8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET1_RX_EN 0x000000cc
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET1_TX_DATA0 0x000000d0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET1_TX_DATA1 0x000000d4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET1_TX_EN 0x000000d8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET1_TX_CLK 0x000000dc
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET1_RX_ER 0x000000e0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET2_RX_DATA0 0x000000e4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET2_RX_DATA1 0x000000e8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET2_RX_EN 0x000000ec
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET2_TX_DATA0 0x000000f0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET2_TX_DATA1 0x000000f4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET2_TX_EN 0x000000f8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET2_TX_CLK 0x000000fc
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_ENET2_RX_ER 0x00000100
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_CLK 0x00000104
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_ENABLE 0x00000108
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_HSYNC 0x0000010c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_VSYNC 0x00000110
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_RESET 0x00000114
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA00 0x00000118
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA01 0x0000011c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA02 0x00000120
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA03 0x00000124
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA04 0x00000128
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA05 0x0000012c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA06 0x00000130
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA07 0x00000134
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA08 0x00000138
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA09 0x0000013c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA10 0x00000140
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA11 0x00000144
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA12 0x00000148
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA13 0x0000014c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA14 0x00000150
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA15 0x00000154
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA16 0x00000158
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA17 0x0000015c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA18 0x00000160
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA19 0x00000164
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA20 0x00000168
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA21 0x0000016c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA22 0x00000170
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_LCD_DATA23 0x00000174
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_RE_B 0x00000178
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_WE_B 0x0000017c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_DATA00 0x00000180
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_DATA01 0x00000184
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_DATA02 0x00000188
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_DATA03 0x0000018c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_DATA04 0x00000190
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_DATA05 0x00000194
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_DATA06 0x00000198
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_DATA07 0x0000019c
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_ALE 0x000001a0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_WP_B 0x000001a4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_READY_B 0x000001a8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_CE0_B 0x000001ac
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_CE1_B 0x000001b0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_CLE 0x000001b4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_NAND_DQS 0x000001b8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SD1_CMD 0x000001bc
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SD1_CLK 0x000001c0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SD1_DATA0 0x000001c4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SD1_DATA1 0x000001c8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SD1_DATA2 0x000001cc
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_SD1_DATA3 0x000001d0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_MCLK 0x000001d4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_PIXCLK 0x000001d8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_VSYNC 0x000001dc
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_HSYNC 0x000001e0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_DATA00 0x000001e4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_DATA01 0x000001e8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_DATA02 0x000001ec
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_DATA03 0x000001f0
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_DATA04 0x000001f4
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_DATA05 0x000001f8
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_DATA06 0x000001fc
|
||||
#define IMX6UL_IOMUXC_SW_MUX_CTL_PAD_CSI_DATA07 0x00000200
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR00 0x00000204
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR01 0x00000208
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR02 0x0000020c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR03 0x00000210
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR04 0x00000214
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR05 0x00000218
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR06 0x0000021c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR07 0x00000220
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR08 0x00000224
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR09 0x00000228
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR10 0x0000022c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR11 0x00000230
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR12 0x00000234
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR13 0x00000238
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR14 0x0000023c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ADDR15 0x00000240
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0 0x00000244
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1 0x00000248
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_RAS_B 0x0000024c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_CAS_B 0x00000250
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_CS0_B 0x00000254
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_CS1_B 0x00000258
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_SDWE_B 0x0000025c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ODT0 0x00000260
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_ODT1 0x00000264
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA0 0x00000268
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA1 0x0000026c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2 0x00000270
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCKE0 0x00000274
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCKE1 0x00000278
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK0_P 0x0000027c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0_P 0x00000280
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1_P 0x00000284
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET 0x00000288
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_TEST_MODE 0x0000028c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_POR_B 0x00000290
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ONOFF 0x00000294
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_PMIC_ON_REQ 0x00000298
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CCM_PMIC_STBY_REQ 0x0000029c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_BOOT_MODE0 0x000002a0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_BOOT_MODE1 0x000002a4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER0 0x000002a8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER1 0x000002ac
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER2 0x000002b0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER3 0x000002b4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER4 0x000002b8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER5 0x000002bc
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER6 0x000002c0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER7 0x000002c4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER8 0x000002c8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER9 0x000002cc
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_JTAG_MOD 0x000002d0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_JTAG_TMS 0x000002d4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_JTAG_TDO 0x000002d8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_JTAG_TDI 0x000002dc
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_JTAG_TCK 0x000002e0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_JTAG_TRST_B 0x000002e4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO00 0x000002e8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO01 0x000002ec
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO02 0x000002f0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03 0x000002f4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO04 0x000002f8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO05 0x000002fc
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO06 0x00000300
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO07 0x00000304
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO08 0x00000308
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO09 0x0000030c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART1_TX_DATA 0x00000310
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART1_RX_DATA 0x00000314
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART1_CTS_B 0x00000318
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART1_RTS_B 0x0000031c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART2_TX_DATA 0x00000320
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART2_RX_DATA 0x00000324
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART2_CTS_B 0x00000328
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART2_RTS_B 0x0000032c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART3_TX_DATA 0x00000330
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART3_RX_DATA 0x00000334
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART3_CTS_B 0x00000338
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART3_RTS_B 0x0000033c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART4_TX_DATA 0x00000340
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART4_RX_DATA 0x00000344
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART5_TX_DATA 0x00000348
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_UART5_RX_DATA 0x0000034c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET1_RX_DATA0 0x00000350
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET1_RX_DATA1 0x00000354
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET1_RX_EN 0x00000358
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET1_TX_DATA0 0x0000035c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET1_TX_DATA1 0x00000360
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET1_TX_EN 0x00000364
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET1_TX_CLK 0x00000368
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET1_RX_ER 0x0000036c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET2_RX_DATA0 0x00000370
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET2_RX_DATA1 0x00000374
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET2_RX_EN 0x00000378
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET2_TX_DATA0 0x0000037c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET2_TX_DATA1 0x00000380
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET2_TX_EN 0x00000384
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET2_TX_CLK 0x00000388
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_ENET2_RX_ER 0x0000038c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_CLK 0x00000390
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_ENABLE 0x00000394
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_HSYNC 0x00000398
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_VSYNC 0x0000039c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_RESET 0x000003a0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA00 0x000003a4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA01 0x000003a8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA02 0x000003ac
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA03 0x000003b0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA04 0x000003b4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA05 0x000003b8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA06 0x000003bc
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA07 0x000003c0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA08 0x000003c4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA09 0x000003c8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA10 0x000003cc
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA11 0x000003d0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA12 0x000003d4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA13 0x000003d8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA14 0x000003dc
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA15 0x000003e0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA16 0x000003e4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA17 0x000003e8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA18 0x000003ec
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA19 0x000003f0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA20 0x000003f4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA21 0x000003f8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA22 0x000003fc
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_LCD_DATA23 0x00000400
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_RE_B 0x00000404
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_WE_B 0x00000408
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_DATA00 0x0000040c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_DATA01 0x00000410
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_DATA02 0x00000414
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_DATA03 0x00000418
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_DATA04 0x0000041c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_DATA05 0x00000420
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_DATA06 0x00000424
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_DATA07 0x00000428
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_ALE 0x0000042c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_WP_B 0x00000430
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_READY_B 0x00000434
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_CE0_B 0x00000438
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_CE1_B 0x0000043c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_CLE 0x00000440
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_NAND_DQS 0x00000444
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SD1_CMD 0x00000448
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SD1_CLK 0x0000044c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SD1_DATA0 0x00000450
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SD1_DATA1 0x00000454
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SD1_DATA2 0x00000458
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_SD1_DATA3 0x0000045c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_MCLK 0x00000460
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_PIXCLK 0x00000464
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_VSYNC 0x00000468
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_HSYNC 0x0000046c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_DATA00 0x00000470
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_DATA01 0x00000474
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_DATA02 0x00000478
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_DATA03 0x0000047c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_DATA04 0x00000480
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_DATA05 0x00000484
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_DATA06 0x00000488
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_PAD_CSI_DATA07 0x0000048c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_ADDDS 0x00000490
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL 0x00000494
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_B0DS 0x00000498
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_DDRPK 0x0000049c
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_CTLDS 0x000004a0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_B1DS 0x000004a4
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_DDRHYS 0x000004a8
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_DDRPKE 0x000004ac
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_DDRMODE 0x000004b0
|
||||
#define IMX6UL_IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE 0x000004b4
|
||||
#define IMX6UL_IOMUXC_USB_OTG1_ID_SELECT_INPUT 0x000004b8
|
||||
#define IMX6UL_IOMUXC_USB_OTG2_ID_SELECT_INPUT 0x000004bc
|
||||
#define IMX6UL_IOMUXC_CCM_PMIC_READY_SELECT_INPUT 0x000004c0
|
||||
#define IMX6UL_IOMUXC_CSI_DATA02_SELECT_INPUT 0x000004c4
|
||||
#define IMX6UL_IOMUXC_CSI_DATA03_SELECT_INPUT 0x000004c8
|
||||
#define IMX6UL_IOMUXC_CSI_DATA05_SELECT_INPUT 0x000004cc
|
||||
#define IMX6UL_IOMUXC_CSI_DATA00_SELECT_INPUT 0x000004d0
|
||||
#define IMX6UL_IOMUXC_CSI_DATA01_SELECT_INPUT 0x000004d4
|
||||
#define IMX6UL_IOMUXC_CSI_DATA04_SELECT_INPUT 0x000004d8
|
||||
#define IMX6UL_IOMUXC_CSI_DATA06_SELECT_INPUT 0x000004dc
|
||||
#define IMX6UL_IOMUXC_CSI_DATA07_SELECT_INPUT 0x000004e0
|
||||
#define IMX6UL_IOMUXC_CSI_DATA08_SELECT_INPUT 0x000004e4
|
||||
#define IMX6UL_IOMUXC_CSI_DATA09_SELECT_INPUT 0x000004e8
|
||||
#define IMX6UL_IOMUXC_CSI_DATA10_SELECT_INPUT 0x000004ec
|
||||
#define IMX6UL_IOMUXC_CSI_DATA11_SELECT_INPUT 0x000004f0
|
||||
#define IMX6UL_IOMUXC_CSI_DATA12_SELECT_INPUT 0x000004f4
|
||||
#define IMX6UL_IOMUXC_CSI_DATA13_SELECT_INPUT 0x000004f8
|
||||
#define IMX6UL_IOMUXC_CSI_DATA14_SELECT_INPUT 0x000004fc
|
||||
#define IMX6UL_IOMUXC_CSI_DATA15_SELECT_INPUT 0x00000500
|
||||
#define IMX6UL_IOMUXC_CSI_DATA16_SELECT_INPUT 0x00000504
|
||||
#define IMX6UL_IOMUXC_CSI_DATA17_SELECT_INPUT 0x00000508
|
||||
#define IMX6UL_IOMUXC_CSI_DATA18_SELECT_INPUT 0x0000050c
|
||||
#define IMX6UL_IOMUXC_CSI_DATA19_SELECT_INPUT 0x00000510
|
||||
#define IMX6UL_IOMUXC_CSI_DATA20_SELECT_INPUT 0x00000514
|
||||
#define IMX6UL_IOMUXC_CSI_DATA21_SELECT_INPUT 0x00000518
|
||||
#define IMX6UL_IOMUXC_CSI_DATA22_SELECT_INPUT 0x0000051c
|
||||
#define IMX6UL_IOMUXC_CSI_DATA23_SELECT_INPUT 0x00000520
|
||||
#define IMX6UL_IOMUXC_CSI_HSYNC_SELECT_INPUT 0x00000524
|
||||
#define IMX6UL_IOMUXC_CSI_PIXCLK_SELECT_INPUT 0x00000528
|
||||
#define IMX6UL_IOMUXC_CSI_VSYNC_SELECT_INPUT 0x0000052c
|
||||
#define IMX6UL_IOMUXC_CSI_FIELD_SELECT_INPUT 0x00000530
|
||||
#define IMX6UL_IOMUXC_ECSPI1_SCLK_SELECT_INPUT 0x00000534
|
||||
#define IMX6UL_IOMUXC_ECSPI1_MISO_SELECT_INPUT 0x00000538
|
||||
#define IMX6UL_IOMUXC_ECSPI1_MOSI_SELECT_INPUT 0x0000053c
|
||||
#define IMX6UL_IOMUXC_ECSPI1_SS0_B_SELECT_INPUT 0x00000540
|
||||
#define IMX6UL_IOMUXC_ECSPI2_SCLK_SELECT_INPUT 0x00000544
|
||||
#define IMX6UL_IOMUXC_ECSPI2_MISO_SELECT_INPUT 0x00000548
|
||||
#define IMX6UL_IOMUXC_ECSPI2_MOSI_SELECT_INPUT 0x0000054c
|
||||
#define IMX6UL_IOMUXC_ECSPI2_SS0_B_SELECT_INPUT 0x00000550
|
||||
#define IMX6UL_IOMUXC_ECSPI3_SCLK_SELECT_INPUT 0x00000554
|
||||
#define IMX6UL_IOMUXC_ECSPI3_MISO_SELECT_INPUT 0x00000558
|
||||
#define IMX6UL_IOMUXC_ECSPI3_MOSI_SELECT_INPUT 0x0000055c
|
||||
#define IMX6UL_IOMUXC_ECSPI3_SS0_B_SELECT_INPUT 0x00000560
|
||||
#define IMX6UL_IOMUXC_ECSPI4_SCLK_SELECT_INPUT 0x00000564
|
||||
#define IMX6UL_IOMUXC_ECSPI4_MISO_SELECT_INPUT 0x00000568
|
||||
#define IMX6UL_IOMUXC_ECSPI4_MOSI_SELECT_INPUT 0x0000056c
|
||||
#define IMX6UL_IOMUXC_ECSPI4_SS0_B_SELECT_INPUT 0x00000570
|
||||
#define IMX6UL_IOMUXC_ENET1_REF_CLK1_SELECT_INPUT 0x00000574
|
||||
#define IMX6UL_IOMUXC_ENET1_MAC0_MDIO_SELECT_INPUT 0x00000578
|
||||
#define IMX6UL_IOMUXC_ENET2_REF_CLK2_SELECT_INPUT 0x0000057c
|
||||
#define IMX6UL_IOMUXC_ENET2_MAC0_MDIO_SELECT_INPUT 0x00000580
|
||||
#define IMX6UL_IOMUXC_FLEXCAN1_RX_SELECT_INPUT 0x00000584
|
||||
#define IMX6UL_IOMUXC_FLEXCAN2_RX_SELECT_INPUT 0x00000588
|
||||
#define IMX6UL_IOMUXC_GPT1_CAPTURE1_SELECT_INPUT 0x0000058c
|
||||
#define IMX6UL_IOMUXC_GPT1_CAPTURE2_SELECT_INPUT 0x00000590
|
||||
#define IMX6UL_IOMUXC_GPT1_CLK_SELECT_INPUT 0x00000594
|
||||
#define IMX6UL_IOMUXC_GPT2_CAPTURE1_SELECT_INPUT 0x00000598
|
||||
#define IMX6UL_IOMUXC_GPT2_CAPTURE2_SELECT_INPUT 0x0000059c
|
||||
#define IMX6UL_IOMUXC_GPT2_CLK_SELECT_INPUT 0x000005a0
|
||||
#define IMX6UL_IOMUXC_I2C1_SCL_SELECT_INPUT 0x000005a4
|
||||
#define IMX6UL_IOMUXC_I2C1_SDA_SELECT_INPUT 0x000005a8
|
||||
#define IMX6UL_IOMUXC_I2C2_SCL_SELECT_INPUT 0x000005ac
|
||||
#define IMX6UL_IOMUXC_I2C2_SDA_SELECT_INPUT 0x000005b0
|
||||
#define IMX6UL_IOMUXC_I2C3_SCL_SELECT_INPUT 0x000005b4
|
||||
#define IMX6UL_IOMUXC_I2C3_SDA_SELECT_INPUT 0x000005b8
|
||||
#define IMX6UL_IOMUXC_I2C4_SCL_SELECT_INPUT 0x000005bc
|
||||
#define IMX6UL_IOMUXC_I2C4_SDA_SELECT_INPUT 0x000005c0
|
||||
#define IMX6UL_IOMUXC_KPP_COL0_SELECT_INPUT 0x000005c4
|
||||
#define IMX6UL_IOMUXC_KPP_COL1_SELECT_INPUT 0x000005c8
|
||||
#define IMX6UL_IOMUXC_KPP_COL2_SELECT_INPUT 0x000005cc
|
||||
#define IMX6UL_IOMUXC_KPP_ROW0_SELECT_INPUT 0x000005d0
|
||||
#define IMX6UL_IOMUXC_KPP_ROW1_SELECT_INPUT 0x000005d4
|
||||
#define IMX6UL_IOMUXC_KPP_ROW2_SELECT_INPUT 0x000005d8
|
||||
#define IMX6UL_IOMUXC_LCD_BUSY_SELECT_INPUT 0x000005dc
|
||||
#define IMX6UL_IOMUXC_SAI1_MCLK_SELECT_INPUT 0x000005e0
|
||||
#define IMX6UL_IOMUXC_SAI1_RX_DATA_SELECT_INPUT 0x000005e4
|
||||
#define IMX6UL_IOMUXC_SAI1_TX_BCLK_SELECT_INPUT 0x000005e8
|
||||
#define IMX6UL_IOMUXC_SAI1_TX_SYNC_SELECT_INPUT 0x000005ec
|
||||
#define IMX6UL_IOMUXC_SAI2_MCLK_SELECT_INPUT 0x000005f0
|
||||
#define IMX6UL_IOMUXC_SAI2_RX_DATA_SELECT_INPUT 0x000005f4
|
||||
#define IMX6UL_IOMUXC_SAI2_TX_BCLK_SELECT_INPUT 0x000005f8
|
||||
#define IMX6UL_IOMUXC_SAI2_TX_SYNC_SELECT_INPUT 0x000005fc
|
||||
#define IMX6UL_IOMUXC_SAI3_MCLK_SELECT_INPUT 0x00000600
|
||||
#define IMX6UL_IOMUXC_SAI3_RX_DATA_SELECT_INPUT 0x00000604
|
||||
#define IMX6UL_IOMUXC_SAI3_TX_BCLK_SELECT_INPUT 0x00000608
|
||||
#define IMX6UL_IOMUXC_SAI3_TX_SYNC_SELECT_INPUT 0x0000060c
|
||||
#define IMX6UL_IOMUXC_SDMA_EVENTS0_SELECT_INPUT 0x00000610
|
||||
#define IMX6UL_IOMUXC_SDMA_EVENTS1_SELECT_INPUT 0x00000614
|
||||
#define IMX6UL_IOMUXC_SPDIF_IN_SELECT_INPUT 0x00000618
|
||||
#define IMX6UL_IOMUXC_SPDIF_EXT_CLK_SELECT_INPUT 0x0000061c
|
||||
#define IMX6UL_IOMUXC_UART1_RTS_B_SELECT_INPUT 0x00000620
|
||||
#define IMX6UL_IOMUXC_UART1_RX_DATA_SELECT_INPUT 0x00000624
|
||||
#define IMX6UL_IOMUXC_UART2_RTS_B_SELECT_INPUT 0x00000628
|
||||
#define IMX6UL_IOMUXC_UART2_RX_DATA_SELECT_INPUT 0x0000062c
|
||||
#define IMX6UL_IOMUXC_UART3_RTS_B_SELECT_INPUT 0x00000630
|
||||
#define IMX6UL_IOMUXC_UART3_RX_DATA_SELECT_INPUT 0x00000634
|
||||
#define IMX6UL_IOMUXC_UART4_RTS_B_SELECT_INPUT 0x00000638
|
||||
#define IMX6UL_IOMUXC_UART4_RX_DATA_SELECT_INPUT 0x0000063c
|
||||
#define IMX6UL_IOMUXC_UART5_RTS_B_SELECT_INPUT 0x00000640
|
||||
#define IMX6UL_IOMUXC_UART5_RX_DATA_SELECT_INPUT 0x00000644
|
||||
#define IMX6UL_IOMUXC_UART6_RTS_B_SELECT_INPUT 0x00000648
|
||||
#define IMX6UL_IOMUXC_UART6_RX_DATA_SELECT_INPUT 0x0000064c
|
||||
#define IMX6UL_IOMUXC_UART7_RTS_B_SELECT_INPUT 0x00000650
|
||||
#define IMX6UL_IOMUXC_UART7_RX_DATA_SELECT_INPUT 0x00000654
|
||||
#define IMX6UL_IOMUXC_UART8_RTS_B_SELECT_INPUT 0x00000658
|
||||
#define IMX6UL_IOMUXC_UART8_RX_DATA_SELECT_INPUT 0x0000065c
|
||||
#define IMX6UL_IOMUXC_USB_OTG2_OC_SELECT_INPUT 0x00000660
|
||||
#define IMX6UL_IOMUXC_USB_OTG_OC_SELECT_INPUT 0x00000664
|
||||
#define IMX6UL_IOMUXC_USDHC1_CD_B_SELECT_INPUT 0x00000668
|
||||
#define IMX6UL_IOMUXC_USDHC1_WP_SELECT_INPUT 0x0000066c
|
||||
#define IMX6UL_IOMUXC_USDHC2_CLK_SELECT_INPUT 0x00000670
|
||||
#define IMX6UL_IOMUXC_USDHC2_CD_B_SELECT_INPUT 0x00000674
|
||||
#define IMX6UL_IOMUXC_USDHC2_CMD_SELECT_INPUT 0x00000678
|
||||
#define IMX6UL_IOMUXC_USDHC2_DATA0_SELECT_INPUT 0x0000067c
|
||||
#define IMX6UL_IOMUXC_USDHC2_DATA1_SELECT_INPUT 0x00000680
|
||||
#define IMX6UL_IOMUXC_USDHC2_DATA2_SELECT_INPUT 0x00000684
|
||||
#define IMX6UL_IOMUXC_USDHC2_DATA3_SELECT_INPUT 0x00000688
|
||||
#define IMX6UL_IOMUXC_USDHC2_DATA4_SELECT_INPUT 0x0000068c
|
||||
#define IMX6UL_IOMUXC_USDHC2_DATA5_SELECT_INPUT 0x00000690
|
||||
#define IMX6UL_IOMUXC_USDHC2_DATA6_SELECT_INPUT 0x00000694
|
||||
#define IMX6UL_IOMUXC_USDHC2_DATA7_SELECT_INPUT 0x00000698
|
||||
#define IMX6UL_IOMUXC_USDHC2_WP_SELECT_INPUT 0x0000069c
|
||||
|
||||
|
||||
/* IOMUXC_SW_MUX_CTL_PAD_xxx */
|
||||
#define IOMUX_CONFIG_SION __BIT(4)
|
||||
#define IOMUX_CONFIG_ALT0 0
|
||||
|
@ -1806,7 +2251,7 @@
|
|||
#define PAD_CTL_ODE __BIT(11)
|
||||
#define PAD_CTL_ODT __BITS(10, 8)
|
||||
#define PAD_CTL_SPEED_MASK __BITS(7, 6)
|
||||
#define PAD_CTL_SPEED_RESERVED0 __SHIFTIN(0, PAD_CTL_SPEED_MASK)
|
||||
#define PAD_CTL_SPEED_LOW50MHZ __SHIFTIN(0, PAD_CTL_SPEED_MASK)
|
||||
#define PAD_CTL_SPEED_50MHZ __SHIFTIN(1, PAD_CTL_SPEED_MASK)
|
||||
#define PAD_CTL_SPEED_100MHZ __SHIFTIN(2, PAD_CTL_SPEED_MASK)
|
||||
#define PAD_CTL_SPEED_200MHZ __SHIFTIN(3, PAD_CTL_SPEED_MASK)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_pcie.c,v 1.2 2016/11/25 05:03:36 hkenken Exp $ */
|
||||
/* $NetBSD: imx6_pcie.c,v 1.3 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2016 Genetec Corporation. All rights reserved.
|
||||
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_pcie.c,v 1.2 2016/11/25 05:03:36 hkenken Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_pcie.c,v 1.3 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "opt_pci.h"
|
||||
|
||||
|
@ -519,9 +519,10 @@ imx6pcie_match(device_t parent, cfdata_t cf, void *aux)
|
|||
{
|
||||
struct axi_attach_args * const aa = aux;
|
||||
|
||||
/* i.MX6 SoloLite has no PCIe controller */
|
||||
/* i.MX6 SoloLite/UltraLight has no PCIe controller */
|
||||
switch (IMX6_CHIPID_MAJOR(imx6_chip_id())) {
|
||||
case CHIPID_MAJOR_IMX6SL:
|
||||
case CHIPID_MAJOR_IMX6UL:
|
||||
return 0;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_reg.h,v 1.5 2016/05/17 06:44:45 ryo Exp $ */
|
||||
/* $NetBSD: imx6_reg.h,v 1.6 2017/06/09 18:14:59 ryo Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 2012 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
|
@ -48,11 +48,9 @@
|
|||
#define IMX6_CS0_BASE 0x08000000
|
||||
#define IMX6_CS0_SIZE 0x08000000
|
||||
|
||||
#define IMX6_IPU2_BASE 0x02c00000
|
||||
#define IMX6_IPU2_SIZE 0x00400000
|
||||
|
||||
#define IMX6_IPU1_BASE 0x02800000
|
||||
#define IMX6_IPU1_SIZE 0x00400000
|
||||
#define IMX6_IPU2_BASE 0x02a00000
|
||||
#define IMX6_IPU1_BASE 0x02600000
|
||||
#define IMX6_IPU_SIZE 0x00400000
|
||||
|
||||
#define IMX6_HSI_BASE 0x02208000
|
||||
#define IMX6_HSI_SIZE 0x00004000
|
||||
|
@ -133,7 +131,7 @@
|
|||
#define AIPS1_DCIC2_BASE 0x000e8000
|
||||
#define AIPS1_DCIC1_BASE 0x000e4000
|
||||
#define AIPS1_IOMUXC_BASE 0x000e0000
|
||||
#define AIPS1_IOMUXC_SIZE 0x00001000
|
||||
#define AIPS1_IOMUXC_SIZE 0x00005000
|
||||
#define AIPS1_GPC_BASE 0x000dc000
|
||||
#define AIPS1_SRC_BASE 0x000d8000
|
||||
#define AIPS1_EPIT2_BASE 0x000d4000
|
||||
|
@ -149,6 +147,7 @@
|
|||
#define AIPS1_WDOG1_BASE 0x000bc000
|
||||
#define AIPS1_WDOG_SIZE 0x00000010
|
||||
#define AIPS1_KPP_BASE 0x000b8000
|
||||
#define AIPS1_ENET2_BASE 0x000b4000 /* iMX6UL */
|
||||
#define AIPS1_GPIO7_BASE 0x000b4000
|
||||
#define AIPS1_GPIO6_BASE 0x000b0000
|
||||
#define AIPS1_GPIO5_BASE 0x000ac000
|
||||
|
@ -173,6 +172,7 @@
|
|||
#define AIPS1_SSI1_BASE 0x00028000
|
||||
#define AIPS1_ESAI_BASE 0x00024000
|
||||
#define AIPS1_UART1_BASE 0x00020000
|
||||
#define AIPS1_UART7_BASE 0x00018000 /* iMX6UL */
|
||||
#define AIPS1_ECSPI5_BASE 0x00018000
|
||||
#define AIPS1_ECSPI4_BASE 0x00014000
|
||||
#define AIPS1_ECSPI3_BASE 0x00010000
|
||||
|
@ -180,10 +180,12 @@
|
|||
#define AIPS1_ECSPI1_BASE 0x00008000
|
||||
#define AIPS1_SPDIF_BASE 0x00004000
|
||||
|
||||
#define AIPS2_UART6_BASE 0x000fc000 /* iMX6UL */
|
||||
#define AIPS2_UART5_BASE 0x000f4000
|
||||
#define AIPS2_UART4_BASE 0x000f0000
|
||||
#define AIPS2_UART3_BASE 0x000ec000
|
||||
#define AIPS2_UART2_BASE 0x000e8000
|
||||
#define AIPS2_WDOG3_BASE 0x000e4000 /* iMX6UL */
|
||||
#define AIPS2_VDOA_BASE 0x000e3000
|
||||
#define AIPS2_MIPIDSI_BASE 0x000e0000
|
||||
#define AIPS2_MIPICSI_BASE 0x000dc000
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_uart.c,v 1.1 2014/09/25 05:05:28 ryo Exp $ */
|
||||
/* $NetBSD: imx6_uart.c,v 1.2 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2013 Genetec Corporation. All rights reserved.
|
||||
|
@ -47,6 +47,11 @@ imxuart_match(device_t parent, struct cfdata *cf, void *aux)
|
|||
case (IMX6_AIPS2_BASE + AIPS2_UART4_BASE):
|
||||
case (IMX6_AIPS2_BASE + AIPS2_UART5_BASE):
|
||||
return 1;
|
||||
case (IMX6_AIPS2_BASE + AIPS2_UART6_BASE):
|
||||
case (IMX6_AIPS1_BASE + AIPS1_UART7_BASE):
|
||||
if (IMX6_CHIPID_MAJOR(imx6_chip_id()) == CHIPID_MAJOR_IMX6UL)
|
||||
return 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_usdhc.c,v 1.3 2016/11/24 08:41:20 hkenken Exp $ */
|
||||
/* $NetBSD: imx6_usdhc.c,v 1.4 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2012 Genetec Corporation. All rights reserved.
|
||||
|
@ -30,7 +30,7 @@
|
|||
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_usdhc.c,v 1.3 2016/11/24 08:41:20 hkenken Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_usdhc.c,v 1.4 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "imxgpio.h"
|
||||
|
||||
|
@ -78,8 +78,11 @@ sdhc_match(device_t parent, cfdata_t cf, void *aux)
|
|||
switch (aa->aa_addr) {
|
||||
case IMX6_AIPS2_BASE + AIPS2_USDHC1_BASE:
|
||||
case IMX6_AIPS2_BASE + AIPS2_USDHC2_BASE:
|
||||
return 1;
|
||||
case IMX6_AIPS2_BASE + AIPS2_USDHC3_BASE:
|
||||
case IMX6_AIPS2_BASE + AIPS2_USDHC4_BASE:
|
||||
if (IMX6_CHIPID_MAJOR(imx6_chip_id()) == CHIPID_MAJOR_IMX6UL)
|
||||
break;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -89,11 +92,11 @@ sdhc_match(device_t parent, cfdata_t cf, void *aux)
|
|||
static int
|
||||
imx6_sdhc_card_detect(struct sdhc_softc *ssc)
|
||||
{
|
||||
struct sdhc_axi_softc *sc;
|
||||
int detect;
|
||||
#if NIMXGPIO > 0
|
||||
struct sdhc_axi_softc *sc;
|
||||
|
||||
sc = device_private(ssc->sc_dev);
|
||||
#if NIMXGPIO > 0
|
||||
if (sc->sc_gpio_cd >= 0) {
|
||||
detect = gpio_data_read(sc->sc_gpio_cd);
|
||||
if (sc->sc_gpio_cd_active == GPIO_PIN_LOW)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6_wdog.c,v 1.1 2014/09/25 05:05:28 ryo Exp $ */
|
||||
/* $NetBSD: imx6_wdog.c,v 1.2 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2010 Genetec Corporation. All rights reserved.
|
||||
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_wdog.c,v 1.1 2014/09/25 05:05:28 ryo Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: imx6_wdog.c,v 1.2 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "opt_imx.h"
|
||||
|
||||
|
@ -48,9 +48,13 @@ wdog_match(device_t parent, struct cfdata *cf, void *aux)
|
|||
case IMX6_AIPS1_BASE + AIPS1_WDOG1_BASE:
|
||||
case IMX6_AIPS1_BASE + AIPS1_WDOG2_BASE:
|
||||
return 1;
|
||||
case IMX6_AIPS2_BASE + AIPS2_WDOG3_BASE:
|
||||
if (IMX6_CHIPID_MAJOR(imx6_chip_id()) == CHIPID_MAJOR_IMX6UL)
|
||||
return 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: imx6var.h,v 1.5 2016/11/24 08:41:20 hkenken Exp $ */
|
||||
/* $NetBSD: imx6var.h,v 1.6 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -50,8 +50,8 @@ extern bus_space_handle_t imx6_armcore_bsh;
|
|||
struct iomux_conf {
|
||||
uint32_t pin; /* ((MUXADDR<<16)|PADADDR) */
|
||||
#define IOMUX_CONF_EOT ((uint32_t)(-1))
|
||||
uint32_t mux:8,
|
||||
pad:24;
|
||||
uint32_t mux;
|
||||
uint32_t pad;
|
||||
};
|
||||
|
||||
uint32_t iomux_read(uint32_t);
|
||||
|
@ -76,6 +76,7 @@ uint32_t imx6_chip_id(void);
|
|||
#define CHIPID_MAJOR_IMX6DL 0x00610000
|
||||
#define CHIPID_MAJOR_IMX6SOLO 0x00620000
|
||||
#define CHIPID_MAJOR_IMX6Q 0x00630000
|
||||
#define CHIPID_MAJOR_IMX6UL 0x00640000
|
||||
#define IMX6_CHIPID_MAJOR(v) ((v) & CHIPID_MAJOR_MASK)
|
||||
#define IMX6_CHIPID_MINOR(v) ((v) & CHIPID_MINOR_MASK)
|
||||
|
||||
|
|
|
@ -0,0 +1,434 @@
|
|||
# $NetBSD: IMX6UL-STARTER,v 1.1 2017/06/09 18:14:59 ryo Exp $
|
||||
#
|
||||
# IMX6UL-STARTER - Freescale i.MX6UL Evaluation Board
|
||||
#
|
||||
# ConnectCore i.MX6UL Starter Kit
|
||||
# - https://www.digikey.com/en/product-highlight/d/digi-intl/i-mx6ul-starter-kit
|
||||
#
|
||||
|
||||
include "arch/evbarm/conf/std.imx6ul"
|
||||
|
||||
#options INCLUDE_CONFIG_FILE # embed config file in kernel binary
|
||||
|
||||
# estimated number of users
|
||||
|
||||
maxusers 32
|
||||
|
||||
# Board Type
|
||||
options EVBARM_BOARDTYPE=ccimx6ulstarter
|
||||
|
||||
# CPU options
|
||||
options CPU_CORTEX
|
||||
options CPU_CORTEXA7
|
||||
options IMX6
|
||||
options PMAPCOUNTERS
|
||||
|
||||
# Standard system options
|
||||
|
||||
options INSECURE # disable kernel security levels - X needs this
|
||||
|
||||
options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT
|
||||
#options NTP # NTP phase/frequency locked loop
|
||||
|
||||
options KTRACE # system call tracing via ktrace(1)
|
||||
|
||||
# Note: SysV IPC parameters can be changed dynamically; see sysctl(8).
|
||||
options SYSVMSG # System V-like message queues
|
||||
options SYSVSEM # System V-like semaphores
|
||||
options SYSVSHM # System V-like memory sharing
|
||||
|
||||
#options USERCONF # userconf(4) support
|
||||
#options PIPE_SOCKETPAIR # smaller, but slower pipe(2)
|
||||
options SYSCTL_INCLUDE_DESCR # Include sysctl descriptions in kernel
|
||||
|
||||
# Alternate buffer queue strategies for better responsiveness under high
|
||||
# disk I/O load.
|
||||
#options BUFQ_READPRIO
|
||||
options BUFQ_PRIOCSCAN
|
||||
|
||||
# Diagnostic/debugging support options
|
||||
options VERBOSE_INIT_ARM # verbose bootstraping messages
|
||||
#options PERFCTRS # performance counters
|
||||
options DIAGNOSTIC # internally consistency checks
|
||||
|
||||
#options DEBUG
|
||||
#options PMAP_DEBUG # Enable pmap_debug_level code
|
||||
options LOCKDEBUG # expensive locking checks/support
|
||||
options IRQSTATS # manage IRQ statistics
|
||||
#options NO_POWERSAVE # uncomment this to run under ICE
|
||||
|
||||
#makeoptions COPTS="-O2"
|
||||
options DDB # in-kernel debugger
|
||||
#options DDB_KEYCODE=0x1d # ^]
|
||||
#options DDB_COMMANDONENTER="bt" # execute command when ddb is entered
|
||||
options DDB_ONPANIC=1 # see also sysctl(7): `ddb.onpanic'
|
||||
options DDB_HISTORY_SIZE=100 # Enable history editing in DDB
|
||||
options DDB_VERBOSE_HELP
|
||||
#options IPKDB # remote kernel debugging
|
||||
#options KGDB
|
||||
#options KGDB_DEVNAME="\"imxuart\""
|
||||
#options KGDB_DEVADDR=0x021f4000
|
||||
#options KGDB_DEVRATE=115200
|
||||
makeoptions DEBUG="-g" # compile full symbol table
|
||||
makeoptions COPY_SYMTAB=1
|
||||
#options SYSCALL_STATS # per syscall counts
|
||||
#options SYSCALL_TIMES # per syscall times
|
||||
#options SYSCALL_TIMES_HASCOUNTER # use 'broken' rdtsc (soekris)
|
||||
|
||||
|
||||
# Compatibility options
|
||||
#options COMPAT_43 # 4.3BSD compatibility.
|
||||
#options COMPAT_09 # NetBSD 0.9,
|
||||
#options COMPAT_10 # NetBSD 1.0,
|
||||
#options COMPAT_11 # NetBSD 1.1,
|
||||
#options COMPAT_12 # NetBSD 1.2,
|
||||
#options COMPAT_13 # NetBSD 1.3,
|
||||
#options COMPAT_14 # NetBSD 1.4,
|
||||
#options COMPAT_15 # NetBSD 1.5,
|
||||
#options COMPAT_16 # NetBSD 1.6,
|
||||
#options COMPAT_20 # NetBSD 2.0,
|
||||
#options COMPAT_30 # NetBSD 3.0,
|
||||
#options COMPAT_40 # NetBSD 4.0,
|
||||
#options COMPAT_50 # NetBSD 5.0,
|
||||
options COMPAT_60 # NetBSD 6.0, and
|
||||
options COMPAT_70 # NetBSD 7.0 binary compatibility.
|
||||
#options TCP_COMPAT_42 # 4.2BSD TCP/IP bug compat. Not recommended.
|
||||
|
||||
options COMPAT_OSSAUDIO # OSS (Voxware) audio driver compatibility
|
||||
options COMPAT_NETBSD32 # allow running arm (e.g. non-earm) binaries
|
||||
options COMPAT_BSDPTY # /dev/[pt]ty?? ptys.
|
||||
|
||||
# Wedge support
|
||||
options DKWEDGE_AUTODISCOVER # Automatically add dk(4) instances
|
||||
options DKWEDGE_METHOD_GPT # Supports GPT partitions as wedges
|
||||
#options DKWEDGE_METHOD_BSDLABEL # Support disklabel entries as wedges
|
||||
#options DKWEDGE_METHOD_MBR # Support MBR partitions as wedges
|
||||
|
||||
# File systems
|
||||
file-system FFS # UFS
|
||||
file-system MFS # memory file system
|
||||
file-system NFS # Network File System client
|
||||
file-system TMPFS # Efficient memory file-system
|
||||
file-system EXT2FS # second extended file system (linux)
|
||||
file-system LFS # log-structured file system
|
||||
file-system NTFS # Windows/NT file system (experimental)
|
||||
file-system CD9660 # ISO 9660 + Rock Ridge file system
|
||||
file-system MSDOSFS # MS-DOS file system
|
||||
file-system FDESC # /dev/fd
|
||||
file-system KERNFS # /kern
|
||||
file-system NULLFS # loopback file system
|
||||
file-system OVERLAY # overlay file system
|
||||
file-system PROCFS # /proc
|
||||
file-system PUFFS # Userspace file systems (e.g. ntfs-3g & sshfs)
|
||||
file-system SMBFS # experimental - CIFS; also needs nsmb (below)
|
||||
file-system UMAPFS # NULLFS + uid and gid remapping
|
||||
file-system UNION # union file system
|
||||
file-system CODA # Coda File System; also needs vcoda (below)
|
||||
file-system PTYFS # /dev/ptm support
|
||||
#file-system UDF # experimental - OSTA UDF CD/DVD file-system
|
||||
#file-system HFS # experimental - Apple HFS+ (read-only)
|
||||
#file-system NILFS # experimental - NTT's NiLFS(2)
|
||||
|
||||
# File system options
|
||||
options QUOTA # legacy UFS quotas
|
||||
options QUOTA2 # new, in-filesystem UFS quotas
|
||||
options FFS_EI # FFS Endian Independent support
|
||||
options WAPBL # File system journaling support
|
||||
# Note that UFS_DIRHASH is suspected of causing kernel memory corruption.
|
||||
# It is not recommended for general use.
|
||||
#options UFS_DIRHASH # UFS Large Directory Hashing - Experimental
|
||||
options NFSSERVER # Network File System server
|
||||
#options EXT2FS_SYSTEM_FLAGS # makes ext2fs file flags (append and
|
||||
# immutable) behave as system flags.
|
||||
#options FFS_NO_SNAPSHOT # No FFS snapshot support
|
||||
options UFS_EXTATTR # Extended attribute support for UFS1
|
||||
|
||||
# Networking options
|
||||
#options GATEWAY # packet forwarding
|
||||
options INET # IP + ICMP + TCP + UDP
|
||||
options INET6 # IPv6
|
||||
options IPSEC # IP security
|
||||
#options IPSEC_DEBUG # debug for IP security
|
||||
#options MPLS # MultiProtocol Label Switching (needs mpls)
|
||||
#options MROUTING # IP multicast routing
|
||||
#options PIM # Protocol Independent Multicast
|
||||
options NETATALK # AppleTalk networking protocols
|
||||
#options CAN # Controller Area Network protocol
|
||||
options PPP_BSDCOMP # BSD-Compress compression support for PPP
|
||||
options PPP_DEFLATE # Deflate compression support for PPP
|
||||
options PPP_FILTER # Active filter support for PPP (requires bpf)
|
||||
options IPFILTER_LOG # ipmon(8) log support
|
||||
options IPFILTER_LOOKUP # ippool(8) support
|
||||
options IPFILTER_COMPAT # Compat for IP-Filter
|
||||
#options IPFILTER_DEFAULT_BLOCK # block all packets by default
|
||||
#options TCP_DEBUG # Record last TCP_NDEBUG packets with SO_DEBUG
|
||||
#options TCP_SIGNATURE # Enable RFC-2385 TCP md5 signatures
|
||||
|
||||
#options ALTQ # Manipulate network interfaces' output queues
|
||||
#options ALTQ_BLUE # Stochastic Fair Blue
|
||||
#options ALTQ_CBQ # Class-Based Queueing
|
||||
#options ALTQ_CDNR # Diffserv Traffic Conditioner
|
||||
#options ALTQ_FIFOQ # First-In First-Out Queue
|
||||
#options ALTQ_FLOWVALVE # RED/flow-valve (red-penalty-box)
|
||||
#options ALTQ_HFSC # Hierarchical Fair Service Curve
|
||||
#options ALTQ_LOCALQ # Local queueing discipline
|
||||
#options ALTQ_PRIQ # Priority Queueing
|
||||
#options ALTQ_RED # Random Early Detection
|
||||
#options ALTQ_RIO # RED with IN/OUT
|
||||
#options ALTQ_WFQ # Weighted Fair Queueing
|
||||
|
||||
# Device options
|
||||
|
||||
# Console options. also need IMXUARTCONSOLE
|
||||
options CONSDEVNAME="\"imxuart\"",CONADDR=0x021f4000,CONSPEED=115200
|
||||
options CONS_OVERRIDE
|
||||
|
||||
# These options enable verbose messages for several subsystems.
|
||||
# Warning, these may compile large string tables into the kernel!
|
||||
options MIIVERBOSE # verbose PHY autoconfig messages
|
||||
#options PCIVERBOSE # verbose PCI device autoconfig messages
|
||||
#options PCI_CONFIG_DUMP # verbosely dump PCI config space
|
||||
#options PCMCIAVERBOSE # verbose PCMCIA configuration messages
|
||||
#options SCSIVERBOSE # Verbose SCSI errors
|
||||
#options USBVERBOSE # verbose USB device autoconfig messages
|
||||
|
||||
# Kernel root file system and dump configuration.
|
||||
config netbsd root on ? type ?
|
||||
|
||||
options NFS_BOOT_BOOTP
|
||||
options NFS_BOOT_DHCP
|
||||
#options NFS_BOOT_BOOTPARAM
|
||||
#options NFS_BOOT_BOOTSTATIC
|
||||
#options NFS_BOOTSTATIC_MYIP="\"192.168.0.2\""
|
||||
#options NFS_BOOTSTATIC_GWIP="\"192.168.0.1\""
|
||||
#options NFS_BOOTSTATIC_MASK="\"255.255.255.0\""
|
||||
#options NFS_BOOTSTATIC_SERVADDR="\"192.168.0.3\""
|
||||
#options NFS_BOOTSTATIC_SERVER="\"192.168.0.3:/nfs/imx6ul\""
|
||||
|
||||
#
|
||||
# Device configuration
|
||||
#
|
||||
|
||||
mainbus0 at root
|
||||
|
||||
cpu* at mainbus?
|
||||
|
||||
# A7 core devices
|
||||
armperiph0 at mainbus? # A7 On-Chip Peripherals
|
||||
armgic0 at armperiph? # ARM Generic Interrupt Controller
|
||||
armgtmr0 at armperiph? # ARM Generic Timer
|
||||
|
||||
axi0 at mainbus?
|
||||
|
||||
# Enhanced Periodic Interrupt Timer
|
||||
#imxclock0 at axi? addr 0x020d0000 irq 88
|
||||
#imxclock1 at axi? addr 0x020d4000 irq 89
|
||||
|
||||
# GPIO
|
||||
imxgpio0 at axi? addr 0x0209c000 irqbase 256 irq 98
|
||||
imxgpio1 at axi? addr 0x020a0000 irqbase 288 irq 100
|
||||
imxgpio2 at axi? addr 0x020a4000 irqbase 320 irq 102
|
||||
imxgpio3 at axi? addr 0x020a8000 irqbase 352 irq 104
|
||||
imxgpio4 at axi? addr 0x020ac000 irqbase 384 irq 106
|
||||
gpio* at imxgpio?
|
||||
options IMX_GPIO_INTR_SPLIT
|
||||
|
||||
# Clock Control
|
||||
imxccm0 at axi? addr 0x020c4000
|
||||
|
||||
# On-Chip OTP Controller
|
||||
imxocotp0 at axi? addr 0x021bc000
|
||||
|
||||
# Secure Non-Volatile Storage
|
||||
imxsnvs0 at axi? addr 0x020cc000
|
||||
|
||||
# IOMUX
|
||||
imxiomux0 at axi? addr 0x020e0000
|
||||
|
||||
# WatchDog
|
||||
imxwdog0 at axi? addr 0x020bc000 irq 112 flags 0
|
||||
#imxwdog1 at axi? addr 0x020c0000 irq 113 flags 0
|
||||
#imxwdog2 at axi? addr 0x021e4000 irq 43 flags 0
|
||||
|
||||
# Serial
|
||||
#imxuart0 at axi? addr 0x02020000 irq 58 # UART1
|
||||
#imxuart1 at axi? addr 0x021e8000 irq 59 # UART2
|
||||
#imxuart2 at axi? addr 0x021ec000 irq 60 # UART3
|
||||
#imxuart3 at axi? addr 0x021f0000 irq 61 # UART4
|
||||
imxuart4 at axi? addr 0x021f4000 irq 62 # UART5
|
||||
#imxuart5 at axi? addr 0x021fc000 irq 49 # UART6
|
||||
#imxuart6 at axi? addr 0x02018000 irq 71 # UART7
|
||||
|
||||
options IMXUARTCONSOLE
|
||||
|
||||
# Network Interfaces
|
||||
enet0 at axi? addr 0x02188000 irq 150 # iMX6 SoC Ethernet
|
||||
#enet1 at axi? addr 0x020b4000 irq 152 # iMX6 SoC Ethernet
|
||||
|
||||
# MII/PHY support
|
||||
acphy* at mii? phy ? # DAltima AC101 and AMD Am79c874 PHYs
|
||||
amhphy* at mii? phy ? # AMD 79c901 Ethernet PHYs
|
||||
atphy* at mii? phy ? # Attansic/Atheros PHYs
|
||||
bmtphy* at mii? phy ? # Broadcom BCM5201 and BCM5202 PHYs
|
||||
brgphy* at mii? phy ? # Broadcom BCM5400-family PHYs
|
||||
ciphy* at mii? phy ? # Cicada CS8201 Gig-E PHYs
|
||||
dmphy* at mii? phy ? # Davicom DM9101 PHYs
|
||||
etphy* at mii? phy ? # Agere/LSI ET1011 TruePHY Gig-E PHYs
|
||||
exphy* at mii? phy ? # 3Com internal PHYs
|
||||
gentbi* at mii? phy ? # Generic Ten-Bit 1000BASE-[CLS]X PHYs
|
||||
glxtphy* at mii? phy ? # Level One LXT-1000 PHYs
|
||||
gphyter* at mii? phy ? # NS83861 Gig-E PHY
|
||||
icsphy* at mii? phy ? # Integrated Circuit Systems ICS189x
|
||||
igphy* at mii? phy ? # Intel IGP01E1000
|
||||
ihphy* at mii? phy ? # Intel 82577 PHYs
|
||||
ikphy* at mii? phy ? # Intel 82563 PHYs
|
||||
inphy* at mii? phy ? # Intel 82555 PHYs
|
||||
iophy* at mii? phy ? # Intel 82553 PHYs
|
||||
lxtphy* at mii? phy ? # Level One LXT-970 PHYs
|
||||
makphy* at mii? phy ? # Marvell Semiconductor 88E1000 PHYs
|
||||
micphy* at mii? phy ? # Micrel KSZ9021RNI PHYs
|
||||
nsphy* at mii? phy ? # NS83840 PHYs
|
||||
nsphyter* at mii? phy ? # NS83843 PHYs
|
||||
pnaphy* at mii? phy ? # generic HomePNA PHYs
|
||||
qsphy* at mii? phy ? # Quality Semiconductor QS6612 PHYs
|
||||
rgephy* at mii? phy ? # Realtek 8169S/8110 internal PHYs
|
||||
rlphy* at mii? phy ? # Realtek 8139/8201L PHYs
|
||||
sqphy* at mii? phy ? # Seeq 80220/80221/80223 PHYs
|
||||
tlphy* at mii? phy ? # ThunderLAN PHYs
|
||||
tqphy* at mii? phy ? # TDK Semiconductor PHYs
|
||||
ukphy* at mii? phy ? # generic unknown PHYs
|
||||
urlphy* at mii? phy ? # Realtek RTL8150L internal PHYs
|
||||
|
||||
# USB Controller and Devices
|
||||
imxusbc0 at axi? addr 0x02184000
|
||||
ehci0 at imxusbc0 unit 0 irq 75 # USBOTG1
|
||||
ehci1 at imxusbc0 unit 1 irq 74 # USBOTG2
|
||||
|
||||
usb* at ehci?
|
||||
|
||||
# USB device drivers
|
||||
include "dev/usb/usbdevices.config"
|
||||
|
||||
midi* at midibus?
|
||||
|
||||
# SD/MMC controller
|
||||
#sdhc0 at axi? addr 0x02190000 irq 54 # uSDHC1
|
||||
#sdhc1 at axi? addr 0x02194000 irq 55 # uSDHC2
|
||||
#sdmmc* at sdhc?
|
||||
#options SDHC_DEBUG
|
||||
#options SDMMC_DEBUG
|
||||
#
|
||||
#ld* at sdmmc? # MMC/SD card
|
||||
|
||||
|
||||
# Pseudo-Devices
|
||||
|
||||
pseudo-device crypto # /dev/crypto device
|
||||
pseudo-device swcrypto # software crypto implementation
|
||||
|
||||
# disk/mass storage pseudo-devices
|
||||
pseudo-device bio # RAID control device driver
|
||||
pseudo-device ccd # concatenated/striped disk devices
|
||||
pseudo-device cgd # cryptographic disk devices
|
||||
pseudo-device raid # RAIDframe disk driver
|
||||
#options RAID_AUTOCONFIG # auto-configuration of RAID components
|
||||
#Options to enable various other RAIDframe RAID types.
|
||||
#options RF_INCLUDE_EVENODD=1
|
||||
#options RF_INCLUDE_RAID5_RS=1
|
||||
#options RF_INCLUDE_PARITYLOGGING=1
|
||||
#options RF_INCLUDE_CHAINDECLUSTER=1
|
||||
#options RF_INCLUDE_INTERDECLUSTER=1
|
||||
#options RF_INCLUDE_PARITY_DECLUSTERING=1
|
||||
#options RF_INCLUDE_PARITY_DECLUSTERING_DS=1
|
||||
pseudo-device fss # file system snapshot device
|
||||
pseudo-device putter # for puffs and pud
|
||||
|
||||
pseudo-device vnd # disk-like interface to files
|
||||
options VND_COMPRESSION # compressed vnd(4)
|
||||
|
||||
|
||||
# network pseudo-devices
|
||||
pseudo-device bpfilter # Berkeley packet filter
|
||||
#pseudo-device carp # Common Address Redundancy Protocol
|
||||
#pseudo-device ipfilter # IP filter (firewall) and NAT
|
||||
pseudo-device loop # network loopback
|
||||
#pseudo-device mpls # MPLS pseudo-interface
|
||||
pseudo-device ppp # Point-to-Point Protocol
|
||||
pseudo-device pppoe # PPP over Ethernet (RFC 2516)
|
||||
pseudo-device sl # Serial Line IP
|
||||
pseudo-device strip # Starmode Radio IP (Metricom)
|
||||
pseudo-device irframetty # IrDA frame line discipline
|
||||
pseudo-device tun # network tunneling over tty
|
||||
pseudo-device tap # virtual Ethernet
|
||||
pseudo-device gre # generic L3 over IP tunnel
|
||||
pseudo-device gif # IPv[46] over IPv[46] tunnel (RFC1933)
|
||||
#pseudo-device faith # IPv[46] tcp relay translation i/f
|
||||
pseudo-device stf # 6to4 IPv6 over IPv4 encapsulation
|
||||
pseudo-device vlan # IEEE 802.1q encapsulation
|
||||
pseudo-device bridge # simple inter-network bridging
|
||||
#options BRIDGE_IPF # bridge uses IP/IPv6 pfil hooks too
|
||||
pseudo-device agr # IEEE 802.3ad link aggregation
|
||||
pseudo-device l2tp # L2TPv3 interface
|
||||
#pseudo-device pf # PF packet filter
|
||||
#pseudo-device pflog # PF log if
|
||||
#pseudo-device pfsync # PF sync if
|
||||
#pseudo-device npf # NPF packet filter
|
||||
|
||||
#pseudo-device canloop # CAN loopback interface
|
||||
|
||||
#
|
||||
# accept filters
|
||||
pseudo-device accf_data # "dataready" accept filter
|
||||
pseudo-device accf_http # "httpready" accept filter
|
||||
|
||||
# miscellaneous pseudo-devices
|
||||
pseudo-device pty # pseudo-terminals
|
||||
pseudo-device sequencer # MIDI sequencer
|
||||
# rnd works; RND_COM does not on port i386 yet.
|
||||
#options RND_COM # use "com" randomness as well (BROKEN)
|
||||
pseudo-device clockctl # user control of clock subsystem
|
||||
pseudo-device ksyms # /dev/ksyms
|
||||
pseudo-device lockstat # lock profiling
|
||||
pseudo-device bcsp # BlueCore Serial Protocol
|
||||
pseudo-device btuart # Bluetooth HCI UART (H4)
|
||||
|
||||
# a pseudo device needed for Coda # also needs CODA (above)
|
||||
pseudo-device vcoda # coda minicache <-> venus comm.
|
||||
|
||||
# a pseudo device needed for SMBFS
|
||||
pseudo-device nsmb # experimental - SMB requester
|
||||
|
||||
# wscons pseudo-devices
|
||||
pseudo-device wsmux # mouse & keyboard multiplexor
|
||||
pseudo-device wsfont
|
||||
|
||||
# pseudo audio device driver
|
||||
#pseudo-device pad
|
||||
|
||||
# userland interface to drivers, including autoconf and properties retrieval
|
||||
pseudo-device drvctl
|
||||
|
||||
options FILEASSOC # fileassoc(9) - required for Veriexec
|
||||
# and PAX_SEGVGUARD
|
||||
|
||||
# Veriexec
|
||||
#
|
||||
# a pseudo device needed for veriexec
|
||||
pseudo-device veriexec
|
||||
#
|
||||
# Uncomment the fingerprint methods below that are desired. Note that
|
||||
# removing fingerprint methods will have almost no impact on the kernel
|
||||
# code size.
|
||||
#
|
||||
options VERIFIED_EXEC_FP_RMD160
|
||||
options VERIFIED_EXEC_FP_SHA256
|
||||
options VERIFIED_EXEC_FP_SHA384
|
||||
options VERIFIED_EXEC_FP_SHA512
|
||||
options VERIFIED_EXEC_FP_SHA1
|
||||
options VERIFIED_EXEC_FP_MD5
|
||||
|
||||
options PAX_SEGVGUARD=0 # PaX Segmentation fault guard
|
||||
options PAX_MPROTECT=1 # PaX mprotect(2) restrictions
|
||||
options PAX_MPROTECT_DEBUG=1 # PaX mprotect debug
|
||||
options PAX_ASLR=1 # PaX Address Space Layout Randomization
|
||||
options PAX_ASLR_DEBUG=1 # PaX ASLR debug
|
|
@ -0,0 +1,10 @@
|
|||
# $NetBSD: IMX6UL-STARTER_INSTALL,v 1.1 2017/06/09 18:14:59 ryo Exp $
|
||||
#
|
||||
# IMX6UL-STARTER_INSTALL -- IMX6UL-STARTER kernel with installation-sized
|
||||
# ramdisk
|
||||
#
|
||||
|
||||
include "arch/evbarm/conf/IMX6UL-STARTER"
|
||||
include "arch/evbarm/conf/INSTALL"
|
||||
no makeoptions DEBUG
|
||||
options BOOTHOWTO=RB_SINGLE
|
|
@ -0,0 +1,33 @@
|
|||
# $NetBSD: mk.imx6ul,v 1.1 2017/06/09 18:14:59 ryo Exp $
|
||||
|
||||
SYSTEM_FIRST_OBJ= nitrogen6_start.o
|
||||
SYSTEM_FIRST_SFILE= ${THISARM}/nitrogen6/nitrogen6_start.S
|
||||
|
||||
GENASSYM_EXTRAS+= ${THISARM}/nitrogen6/genassym.cf
|
||||
|
||||
_OSRELEASE!= ${HOST_SH} $S/conf/osrelease.sh
|
||||
|
||||
KERNEL_BASE_PHYS?=$(LOADADDRESS)
|
||||
KERNEL_BASE_VIRT?=$(LOADADDRESS)
|
||||
|
||||
MKUBOOTIMAGEARGS= -A arm -T kernel
|
||||
MKUBOOTIMAGEARGS+= -a $(KERNEL_BASE_PHYS) -e $(KERNEL_BASE_PHYS)
|
||||
MKUBOOTIMAGEARGS+= -n "NetBSD/$(BOARDTYPE) ${_OSRELEASE}"
|
||||
MKUBOOTIMAGEARGS_NONE= ${MKUBOOTIMAGEARGS} -C none
|
||||
MKUBOOTIMAGEARGS_GZ= ${MKUBOOTIMAGEARGS} -C gz
|
||||
|
||||
SYSTEM_LD_TAIL_EXTRA+=; \
|
||||
echo ${OBJCOPY} -S -O binary $@ $@.bin; \
|
||||
${OBJCOPY} -S -O binary $@ $@.bin; \
|
||||
echo ${TOOL_GZIP} -9c $@.bin > $@.bin.gz; \
|
||||
${TOOL_GZIP} -9c $@.bin > $@.bin.gz; \
|
||||
echo ${TOOL_MKUBOOTIMAGE} ${MKUBOOTIMAGEARGS_GZ} $@.bin.gz $@.gz.ub; \
|
||||
${TOOL_MKUBOOTIMAGE} ${MKUBOOTIMAGEARGS_GZ} $@.bin.gz $@.gz.ub; \
|
||||
echo ${TOOL_MKUBOOTIMAGE} ${MKUBOOTIMAGEARGS_NONE} $@.bin $@.ub; \
|
||||
${TOOL_MKUBOOTIMAGE} ${MKUBOOTIMAGEARGS_NONE} $@.bin $@.ub; \
|
||||
echo
|
||||
|
||||
EXTRA_KERNELS+= ${KERNELS:@.KERNEL.@${.KERNEL.}.bin@}
|
||||
EXTRA_KERNELS+= ${KERNELS:@.KERNEL.@${.KERNEL.}.ub@}
|
||||
EXTRA_KERNELS+= ${KERNELS:@.KERNEL.@${.KERNEL.}.bin.gz@}
|
||||
EXTRA_KERNELS+= ${KERNELS:@.KERNEL.@${.KERNEL.}.gz.ub@}
|
|
@ -0,0 +1,35 @@
|
|||
# $NetBSD: std.imx6ul,v 1.1 2017/06/09 18:14:59 ryo Exp $
|
||||
#
|
||||
# standard NetBSD/evbarm options for i.MX6UL
|
||||
|
||||
machine evbarm arm
|
||||
include "arch/evbarm/conf/std.evbarm"
|
||||
|
||||
# Pull in nitrogen6 config definitions.
|
||||
include "arch/evbarm/conf/files.nitrogen6"
|
||||
|
||||
options NITROGEN6
|
||||
|
||||
options ARM_HAS_VBAR
|
||||
options __HAVE_CPU_COUNTER
|
||||
options __HAVE_FAST_SOFTINTS # should be in types.h
|
||||
options TPIDRPRW_IS_CURCPU
|
||||
#options __HAVE_MM_MD_DIRECT_MAPPED_PHYS
|
||||
#options PMAP_NEED_ALLOC_POOLPAGE
|
||||
|
||||
makeoptions CPUFLAGS="-mcpu=cortex-a7 -mfpu=neon"
|
||||
|
||||
# To support easy transit to ../arch/arm/arm32
|
||||
options FPU_VFP
|
||||
options CORTEX_PMC
|
||||
options CORTEX_PMC_CCNT_HZ=792000000
|
||||
|
||||
options KERNEL_BASE_EXT=0x80000000
|
||||
makeoptions KERNEL_BASE_PHYS="0x80800000"
|
||||
makeoptions KERNEL_BASE_VIRT="0x80800000"
|
||||
|
||||
makeoptions BOARDMKFRAG="${THISARM}/conf/mk.imx6ul"
|
||||
makeoptions CPPFLAGS+="-I$S/../../../include"
|
||||
|
||||
options ARM_INTR_IMPL="<arch/arm/imx/imx6_intr.h>"
|
||||
options ARM_GENERIC_TODR
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: nitrogen6_iomux.c,v 1.3 2016/11/24 12:06:44 hkenken Exp $ */
|
||||
/* $NetBSD: nitrogen6_iomux.c,v 1.4 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -26,7 +26,7 @@
|
|||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: nitrogen6_iomux.c,v 1.3 2016/11/24 12:06:44 hkenken Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: nitrogen6_iomux.c,v 1.4 2017/06/09 18:14:59 ryo Exp $");
|
||||
|
||||
#include "opt_evbarm_boardtype.h"
|
||||
#include <sys/bus.h>
|
||||
|
@ -57,6 +57,7 @@ static void nitrogen6_gpio_config(const struct gpio_conf *);
|
|||
#define cubox_i 3
|
||||
#define hummingboard 4
|
||||
#define hummingboard_edge 5
|
||||
#define ccimx6ulstarter 6
|
||||
|
||||
#define PAD_UART \
|
||||
(PAD_CTL_HYS | PAD_CTL_PUS_100K_PU | PAD_CTL_PULL | \
|
||||
|
@ -112,6 +113,17 @@ static void nitrogen6_gpio_config(const struct gpio_conf *);
|
|||
PAD_CTL_SPEED_100MHZ | PAD_CTL_DSE_40OHM | PAD_CTL_SRE_SLOW)
|
||||
#define PAD_OUTPUT_40OHM (PAD_CTL_SPEED_100MHZ | PAD_CTL_DSE_40OHM)
|
||||
|
||||
#define PAD_ENET6UL \
|
||||
(PAD_CTL_PUS_100K_PU | PAD_CTL_PULL | \
|
||||
PAD_CTL_SPEED_200MHZ | PAD_CTL_DSE_45OHM | PAD_CTL_SRE_FAST)
|
||||
#define PAD_ENET6UL_REFCLK \
|
||||
(PAD_CTL_PUS_100K_PD | \
|
||||
PAD_CTL_SPEED_LOW50MHZ | PAD_CTL_DSE_40OHM | PAD_CTL_SRE_FAST)
|
||||
|
||||
#define PAD_LCD_HSYNC \
|
||||
(PAD_CTL_PUS_100K_PD | PAD_CTL_KEEPER | \
|
||||
PAD_CTL_SPEED_100MHZ | PAD_CTL_DSE_40OHM | PAD_CTL_SRE_SLOW)
|
||||
|
||||
#define PAD_PCIE_GPIO \
|
||||
(PAD_CTL_HYS | PAD_CTL_PUS_22K_PU | PAD_CTL_PULL | \
|
||||
PAD_CTL_SPEED_50MHZ | PAD_CTL_DSE_40OHM | PAD_CTL_SRE_FAST)
|
||||
|
@ -457,6 +469,71 @@ static const struct iomux_conf iomux_data_6dq[] = {
|
|||
{.pin = IOMUX_CONF_EOT}
|
||||
};
|
||||
|
||||
/* iMX6 UltraLight */
|
||||
static const struct iomux_conf iomux_data_6ul[] = {
|
||||
/* Digi-Key i.MX6UL Starter Kit */
|
||||
#if (EVBARM_BOARDTYPE == ccimx6ulstarter)
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, GPIO1_IO07),
|
||||
.mux = IOMUX_CONFIG_ALT0, /* ENET1_MDC */
|
||||
.pad = PAD_ENET6UL
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, GPIO1_IO06),
|
||||
.mux = IOMUX_CONFIG_ALT0, /* ENET1_MDIO */
|
||||
.pad = PAD_ENET6UL
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, ENET1_RX_EN),
|
||||
.mux = IOMUX_CONFIG_ALT0, /* ENET1_RX_EN */
|
||||
.pad = PAD_ENET6UL
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, ENET1_RX_ER),
|
||||
.mux = IOMUX_CONFIG_ALT0, /* ENET1_RX_ER */
|
||||
.pad = PAD_ENET6UL
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, ENET1_RX_DATA0),
|
||||
.mux = IOMUX_CONFIG_ALT0, /* ENET1_RDATA00 */
|
||||
.pad = PAD_ENET6UL
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, ENET1_RX_DATA1),
|
||||
.mux = IOMUX_CONFIG_ALT0, /* ENET1_RDATA01 */
|
||||
.pad = PAD_ENET6UL
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, ENET1_TX_EN),
|
||||
.mux = IOMUX_CONFIG_ALT0, /* ENET1_TX_EN */
|
||||
.pad = PAD_ENET6UL
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, ENET1_TX_DATA0),
|
||||
.mux = IOMUX_CONFIG_ALT0, /* ENET1_TDATA00 */
|
||||
.pad = PAD_ENET6UL
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, ENET1_TX_DATA1),
|
||||
.mux = IOMUX_CONFIG_ALT0, /* ENET1_TDATA01 */
|
||||
.pad = PAD_ENET6UL
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, ENET1_TX_CLK),
|
||||
.mux = IOMUX_CONFIG_ALT4 | /* ENET1_REF_CLK */
|
||||
IOMUX_CONFIG_SION, /* Force input ENET1_TX_CLK */
|
||||
.pad = PAD_ENET6UL_REFCLK
|
||||
},
|
||||
{
|
||||
.pin = MUX_PIN(IMX6UL, LCD_HSYNC),
|
||||
.mux = IOMUX_CONFIG_ALT5, /* GPIO3_IO02 */
|
||||
.pad = PAD_LCD_HSYNC
|
||||
},
|
||||
#endif
|
||||
/* end of table */
|
||||
{.pin = IOMUX_CONF_EOT}
|
||||
};
|
||||
|
||||
static const struct gpio_conf gpio_data[] = {
|
||||
/* GPIOn, PIN, dir, value */
|
||||
#if (EVBARM_BOARDTYPE == nitrogen6x)
|
||||
|
@ -489,6 +566,9 @@ static const struct gpio_conf gpio_data[] = {
|
|||
{ 1, 4, GPIO_DIR_IN, 0 }, /* USDHC2 */
|
||||
{ 2, 11, GPIO_DIR_OUT, 0 }, /* PCIe */
|
||||
#endif
|
||||
#if (EVBARM_BOARDTYPE == ccimx6ulstarter)
|
||||
{ 3, 2, GPIO_DIR_OUT, 1 }, /* ENET1 phy */
|
||||
#endif
|
||||
|
||||
/* end of table */
|
||||
{ 0, 0, 0, 0 },
|
||||
|
@ -497,6 +577,8 @@ static const struct gpio_conf gpio_data[] = {
|
|||
|
||||
#define AIPS1_ADDR(addr) \
|
||||
((volatile uint32_t *)(KERNEL_IO_IOREG_VBASE + (addr)))
|
||||
#define IOMUX_READ(reg) \
|
||||
(*AIPS1_ADDR(AIPS1_IOMUXC_BASE + (reg)))
|
||||
#define IOMUX_WRITE(reg, val) \
|
||||
(*AIPS1_ADDR(AIPS1_IOMUXC_BASE + (reg)) = (val))
|
||||
#define GPIO_ADDR(group, reg) \
|
||||
|
@ -510,12 +592,20 @@ nitrogen6_mux_config(const struct iomux_conf *conflist)
|
|||
|
||||
for (i = 0; conflist[i].pin != IOMUX_CONF_EOT; i++) {
|
||||
reg = IOMUX_PIN_TO_PAD_ADDRESS(conflist[i].pin);
|
||||
if (reg != IOMUX_PAD_NONE)
|
||||
if (reg != IOMUX_PAD_NONE) {
|
||||
#ifdef IOMUX_DEBUG
|
||||
printf("IOMUX PAD[%08x] = %08x -> %08x\n", reg, IOMUX_READ(reg), conflist[i].pad);
|
||||
#endif
|
||||
IOMUX_WRITE(reg, conflist[i].pad);
|
||||
}
|
||||
|
||||
reg = IOMUX_PIN_TO_MUX_ADDRESS(conflist[i].pin);
|
||||
if (reg != IOMUX_MUX_NONE)
|
||||
if (reg != IOMUX_MUX_NONE) {
|
||||
#ifdef IOMUX_DEBUG
|
||||
printf("IOMUX MUX[%08x] = %08x -> %08x\n", reg, IOMUX_READ(reg), conflist[i].mux);
|
||||
#endif
|
||||
IOMUX_WRITE(reg, conflist[i].mux);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -556,8 +646,10 @@ nitrogen6_setup_iomux(void)
|
|||
case CHIPID_MAJOR_IMX6Q:
|
||||
nitrogen6_mux_config(iomux_data_6dq);
|
||||
break;
|
||||
case CHIPID_MAJOR_IMX6UL:
|
||||
nitrogen6_mux_config(iomux_data_6ul);
|
||||
break;
|
||||
default:
|
||||
panic("unknown IMX6_CHIPID %08x\n", imx6_chip_id());
|
||||
break;
|
||||
}
|
||||
nitrogen6_gpio_config(gpio_data);
|
||||
|
@ -568,6 +660,8 @@ nitrogen6_device_register(device_t self, void *aux)
|
|||
{
|
||||
prop_dictionary_t dict = device_properties(self);
|
||||
|
||||
(void)&dict;
|
||||
|
||||
imx6_device_register(self, aux);
|
||||
|
||||
if (device_is_a(self, "sdhc") &&
|
||||
|
@ -592,6 +686,9 @@ nitrogen6_device_register(device_t self, void *aux)
|
|||
}
|
||||
if (device_is_a(self, "imxpcie") &&
|
||||
device_is_a(device_parent(self), "axi")) {
|
||||
#if (EVBARM_BOARDTYPE == nitrogen6max)
|
||||
prop_dictionary_set_cstring(dict, "imx6pcie-reset-gpio", "!6,31");
|
||||
#endif
|
||||
#if (EVBARM_BOARDTYPE == hummingboard)
|
||||
prop_dictionary_set_cstring(dict, "imx6pcie-reset-gpio", "!3,4");
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: nitrogen6_start.S,v 1.1 2014/09/25 05:05:28 ryo Exp $ */
|
||||
/* $NetBSD: nitrogen6_start.S,v 1.2 2017/06/09 18:14:59 ryo Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2014 Ryo Shimizu <ryo@nerv.org>
|
||||
|
@ -37,7 +37,7 @@
|
|||
#include <arm/cortex/scu_reg.h>
|
||||
#include "assym.h"
|
||||
|
||||
RCSID("$NetBSD: nitrogen6_start.S,v 1.1 2014/09/25 05:05:28 ryo Exp $")
|
||||
RCSID("$NetBSD: nitrogen6_start.S,v 1.2 2017/06/09 18:14:59 ryo Exp $")
|
||||
|
||||
#ifndef CONADDR
|
||||
#define CONADDR 0x021e8000
|
||||
|
@ -155,7 +155,7 @@ _C_LABEL(nitrogen6_start):
|
|||
mov r3, #0 /* flags for arm_cpu_hatched */
|
||||
|
||||
cmp r0, #0
|
||||
ble 9f
|
||||
ble .hatch_done
|
||||
|
||||
#ifdef VERBOSE_INIT_ARM
|
||||
/* wait to prevent the mixing of console output */
|
||||
|
@ -221,10 +221,10 @@ _C_LABEL(nitrogen6_start):
|
|||
.not_hatched:
|
||||
PRINT("\r\nnot hatched. arm_cpu_hatched=")
|
||||
PRINT_R0
|
||||
b 9f
|
||||
b .hatch_done
|
||||
.hatched:
|
||||
PRINT("\r\nMULTIPROCESSOR hatched!\r\n")
|
||||
9:
|
||||
.hatch_done:
|
||||
#endif
|
||||
|
||||
PRINT("jump to start()\r\n")
|
||||
|
@ -256,6 +256,9 @@ mmu_init_table:
|
|||
(BOOT_MEMSIZE * L1_S_SIZE + L1_S_SIZE - 1) / L1_S_SIZE,
|
||||
L1_S_PROTO_armv7 | L1_S_APv7_KRW | L1_S_CACHEABLE)
|
||||
#endif
|
||||
MMU_INIT(KERNEL_BASE, KERNEL_BASE - KERNEL_BASE_VOFFSET,
|
||||
(BOOT_MEMSIZE * L1_S_SIZE + L1_S_SIZE - 1) / L1_S_SIZE,
|
||||
L1_S_PROTO_armv7 | L1_S_APv7_KRW | L1_S_CACHEABLE)
|
||||
|
||||
/* Map the 2MB of primary peripherals (AIPS1 + AIPS2) */
|
||||
MMU_INIT(KERNEL_IO_IOREG_VBASE, IMX6_IOREG_PBASE,
|
||||
|
|
Loading…
Reference in New Issue