mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
Compare commits
322 Commits
v2016.11-r
...
v2016.11-r
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d5a815327d | ||
|
|
78ad715788 | ||
|
|
ebf7fff20a | ||
|
|
29d3bc793c | ||
|
|
c20ae2ffaa | ||
|
|
2b2c6e51e7 | ||
|
|
2fe1281c79 | ||
|
|
a9320c495e | ||
|
|
c5938c10ef | ||
|
|
ec90ac7359 | ||
|
|
4504062b27 | ||
|
|
42b7600d62 | ||
|
|
df87e6b1b8 | ||
|
|
b02e4044ff | ||
|
|
9c07b9877c | ||
|
|
491c7b6f42 | ||
|
|
ef47683646 | ||
|
|
44afdc4a12 | ||
|
|
c9abfbdd66 | ||
|
|
6a2981a713 | ||
|
|
9bde741dec | ||
|
|
7377647a36 | ||
|
|
c86ff7fdb2 | ||
|
|
6723b23552 | ||
|
|
b755abecd4 | ||
|
|
65d4d00abc | ||
|
|
f411b5cca4 | ||
|
|
e607ec993b | ||
|
|
ab9715303d | ||
|
|
4b00d02558 | ||
|
|
ce412b79e7 | ||
|
|
2ec4d10b65 | ||
|
|
c69f6d04ec | ||
|
|
79493609c5 | ||
|
|
5ebd27d860 | ||
|
|
f812574e61 | ||
|
|
c14d4b0051 | ||
|
|
3c594d34c4 | ||
|
|
99615d812f | ||
|
|
711b534120 | ||
|
|
8435179271 | ||
|
|
19a9747535 | ||
|
|
00bcaedd5c | ||
|
|
21c9bcebd0 | ||
|
|
2d3c573ee6 | ||
|
|
3968398eb2 | ||
|
|
13b2bfce51 | ||
|
|
5f6ad029f3 | ||
|
|
10491c838e | ||
|
|
fcda8c3886 | ||
|
|
f0920e4a44 | ||
|
|
02c57abd50 | ||
|
|
4dc5e54da3 | ||
|
|
bfeba0173a | ||
|
|
2f159402d9 | ||
|
|
80793db909 | ||
|
|
bf635ed091 | ||
|
|
f189899c2f | ||
|
|
ce2ec19c56 | ||
|
|
86167089b7 | ||
|
|
99785de83e | ||
|
|
ca1de0b545 | ||
|
|
08941bb99d | ||
|
|
fc1636dff1 | ||
|
|
9017f1fa2a | ||
|
|
884d88bc8b | ||
|
|
33621d247e | ||
|
|
34514b8b9c | ||
|
|
477dfe2ffc | ||
|
|
252788b4ed | ||
|
|
896a74f615 | ||
|
|
54cd240731 | ||
|
|
9b43dbfb91 | ||
|
|
2545fa59f8 | ||
|
|
4e0318c32f | ||
|
|
5d7ec3d8d3 | ||
|
|
fac3e796b9 | ||
|
|
21b3b66ace | ||
|
|
d30b3103a5 | ||
|
|
35233da98a | ||
|
|
b11e298440 | ||
|
|
22230e916e | ||
|
|
3f14f814e7 | ||
|
|
2547f3ed89 | ||
|
|
006bccbd0d | ||
|
|
2cd11a23c8 | ||
|
|
22d9574337 | ||
|
|
b6409ec302 | ||
|
|
443ffe509c | ||
|
|
0d9483a25c | ||
|
|
2c943804af | ||
|
|
ee87ee82e1 | ||
|
|
d8441ea27e | ||
|
|
1df9127628 | ||
|
|
0a5f6f869f | ||
|
|
5023bd7a80 | ||
|
|
b91c6a1209 | ||
|
|
a5b8722532 | ||
|
|
26f50fbed2 | ||
|
|
88d915b10f | ||
|
|
5572367cc5 | ||
|
|
df233e734f | ||
|
|
57718f017b | ||
|
|
d40d69ee35 | ||
|
|
d5a24d8b53 | ||
|
|
28f224a52f | ||
|
|
dc06f63f2a | ||
|
|
28c694c86f | ||
|
|
7e1784651b | ||
|
|
55cdcdaad3 | ||
|
|
7c9454d443 | ||
|
|
2cb5d67c1a | ||
|
|
895549a2d9 | ||
|
|
e5113c333b | ||
|
|
7aedafd6b3 | ||
|
|
561e624c35 | ||
|
|
4fb96c48c1 | ||
|
|
d9f5d99245 | ||
|
|
66e3efebbc | ||
|
|
f1d9a9edb9 | ||
|
|
f4c93a4f4d | ||
|
|
66deb91ec0 | ||
|
|
baaafaaad3 | ||
|
|
c89638a027 | ||
|
|
6c22742d3d | ||
|
|
dacdb24027 | ||
|
|
d5fe013cee | ||
|
|
f40fa9b36f | ||
|
|
34c3889635 | ||
|
|
c4c5f9eefb | ||
|
|
4ae6549f8e | ||
|
|
f5d44b9bae | ||
|
|
c9eac38a25 | ||
|
|
2ce7b21e6c | ||
|
|
ac3fde9394 | ||
|
|
a920a17b2f | ||
|
|
12e5476df3 | ||
|
|
3cb44ba80c | ||
|
|
8828254cae | ||
|
|
0734b70c9c | ||
|
|
bae5b97e8e | ||
|
|
7a71e4891d | ||
|
|
281ca88fab | ||
|
|
2880e6b5e2 | ||
|
|
2f2566482f | ||
|
|
63781bd65e | ||
|
|
d436e38189 | ||
|
|
a556eeebaa | ||
|
|
745b395aef | ||
|
|
b222abe736 | ||
|
|
21f0eb332f | ||
|
|
8b4919ed29 | ||
|
|
1c653201d7 | ||
|
|
ed3adde083 | ||
|
|
9c658d8009 | ||
|
|
0c3a2d9492 | ||
|
|
a0a868b20b | ||
|
|
f5fd45ff64 | ||
|
|
1f95770807 | ||
|
|
d2d9bdfcf9 | ||
|
|
6d1a718fdf | ||
|
|
1053a769fb | ||
|
|
e8131386dc | ||
|
|
692fcdd800 | ||
|
|
d40dbfb740 | ||
|
|
279dcd8975 | ||
|
|
480579670b | ||
|
|
021abf696f | ||
|
|
43ebbfc39f | ||
|
|
76379dfb7e | ||
|
|
88a62685b0 | ||
|
|
68ec3888f0 | ||
|
|
aee28716c6 | ||
|
|
c7eeac93ba | ||
|
|
3dddc793e0 | ||
|
|
2846bd03ea | ||
|
|
e19b0fb485 | ||
|
|
1406992f4f | ||
|
|
4bf06d11c3 | ||
|
|
7b76daab47 | ||
|
|
8bb0f7c0c5 | ||
|
|
1da33a2851 | ||
|
|
9608f43c3d | ||
|
|
03ab5d136b | ||
|
|
43e0a3dec0 | ||
|
|
234600c1ca | ||
|
|
d7255e8ddb | ||
|
|
d429557c64 | ||
|
|
02ad90eca5 | ||
|
|
cced7e5bb5 | ||
|
|
c571d6828d | ||
|
|
aa723b8dbf | ||
|
|
7443a1ddb1 | ||
|
|
e60f74907d | ||
|
|
bdad02e1e2 | ||
|
|
5a6f8d7b3b | ||
|
|
a99546ab62 | ||
|
|
27229b2a4c | ||
|
|
f61c9bcdfd | ||
|
|
4fd096f450 | ||
|
|
1dbc40e7d2 | ||
|
|
d31d4a2d75 | ||
|
|
60d42e9d51 | ||
|
|
89db0fb3e9 | ||
|
|
859c70df23 | ||
|
|
c268a9bde0 | ||
|
|
5052e81988 | ||
|
|
59a51a1055 | ||
|
|
9c00d982f1 | ||
|
|
362664356b | ||
|
|
fc0b5948e0 | ||
|
|
81049ba8f4 | ||
|
|
22a402f00c | ||
|
|
24307d6337 | ||
|
|
ff95e579cf | ||
|
|
c6012bbce6 | ||
|
|
e2c9351d5a | ||
|
|
d025021e98 | ||
|
|
4dc34be430 | ||
|
|
b43957baf7 | ||
|
|
89e5440ef7 | ||
|
|
b44b632a68 | ||
|
|
4b7283a3d6 | ||
|
|
acd51f9d91 | ||
|
|
945a18e625 | ||
|
|
b7381bb68f | ||
|
|
5371d34c63 | ||
|
|
d501d450f5 | ||
|
|
dd9c6e4826 | ||
|
|
1fb33434e3 | ||
|
|
b2482dffa0 | ||
|
|
9dd05fb8c8 | ||
|
|
61a4c21436 | ||
|
|
8477763462 | ||
|
|
3c6b1767c2 | ||
|
|
d32b2d1c61 | ||
|
|
f4d7d8596f | ||
|
|
710e9ca579 | ||
|
|
b4a6c2aae6 | ||
|
|
2a2ee2ac35 | ||
|
|
97d9df0a91 | ||
|
|
7ec0389354 | ||
|
|
ea022a3775 | ||
|
|
139db7af4e | ||
|
|
0a9b73a13e | ||
|
|
7557147927 | ||
|
|
56df46351a | ||
|
|
dd6bf9025c | ||
|
|
548b3ee73c | ||
|
|
afa6e6c488 | ||
|
|
d5c2b11ce4 | ||
|
|
7d7dd821b0 | ||
|
|
0fed9c7ed6 | ||
|
|
98136b2f26 | ||
|
|
a0a8029058 | ||
|
|
ecdfd69a4b | ||
|
|
a807ab3303 | ||
|
|
f59961e343 | ||
|
|
ca12e65caa | ||
|
|
71316c1d8c | ||
|
|
d95ceb97c0 | ||
|
|
e50d76cc3c | ||
|
|
53d76829d5 | ||
|
|
24aaa09452 | ||
|
|
f534b8f5fd | ||
|
|
fd6381029d | ||
|
|
25af7dc193 | ||
|
|
b4b60d06c6 | ||
|
|
fb2bf8c2c6 | ||
|
|
4a4441765d | ||
|
|
c93db4f763 | ||
|
|
e1e3fc143d | ||
|
|
e8d3be1e30 | ||
|
|
0ea3671d35 | ||
|
|
adee1d4c9e | ||
|
|
ef9a5fd864 | ||
|
|
5d1a7a9d20 | ||
|
|
abd9c1bbfb | ||
|
|
f85a8e8d1d | ||
|
|
b259732d36 | ||
|
|
4de6ce1594 | ||
|
|
f0beb49290 | ||
|
|
ab895d6af2 | ||
|
|
5b0d03b306 | ||
|
|
27192d16eb | ||
|
|
a7e5f7f3e5 | ||
|
|
ed0c2c0a9e | ||
|
|
303a24435f | ||
|
|
083e4fd401 | ||
|
|
27f7d4f5f7 | ||
|
|
f15ece388f | ||
|
|
2ee4065571 | ||
|
|
81c4eccb55 | ||
|
|
55a42b33f2 | ||
|
|
35ae99467d | ||
|
|
b0a8e45451 | ||
|
|
fa7209117b | ||
|
|
f8ca22b8de | ||
|
|
ca75159d8a | ||
|
|
07e1c0ae83 | ||
|
|
5b66482d44 | ||
|
|
2d4bbd01a1 | ||
|
|
bdfb2d4db2 | ||
|
|
3974b7f6e0 | ||
|
|
b4714616a0 | ||
|
|
6615da4da3 | ||
|
|
00ffa56d4b | ||
|
|
cdf33c9403 | ||
|
|
988acd2d4c | ||
|
|
f8b95731ff | ||
|
|
bbd1b07d30 | ||
|
|
51db46035c | ||
|
|
65ce54be8e | ||
|
|
7b4dd81666 | ||
|
|
112d59a18d | ||
|
|
43a1be42ee | ||
|
|
9eeab57211 | ||
|
|
514a0f4b68 | ||
|
|
29138c6ff8 | ||
|
|
3b30eece27 | ||
|
|
5cca52a4ca | ||
|
|
ba4e159f98 |
37
Makefile
37
Makefile
@@ -5,7 +5,7 @@
|
||||
VERSION = 2016
|
||||
PATCHLEVEL = 11
|
||||
SUBLEVEL =
|
||||
EXTRAVERSION = -rc1
|
||||
EXTRAVERSION = -rc2
|
||||
NAME =
|
||||
|
||||
# *DOCUMENTATION*
|
||||
@@ -741,8 +741,7 @@ DO_STATIC_RELA =
|
||||
endif
|
||||
|
||||
# Always append ALL so that arch config.mk's can add custom ones
|
||||
ALL-y += u-boot.srec u-boot.bin u-boot.sym System.map u-boot.cfg \
|
||||
binary_size_check no_new_adhoc_configs_check
|
||||
ALL-y += u-boot.srec u-boot.bin u-boot.sym System.map binary_size_check
|
||||
|
||||
ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
|
||||
ifeq ($(CONFIG_SPL_FSL_PBL),y)
|
||||
@@ -821,6 +820,11 @@ ifeq ($(CONFIG_DM_I2C_COMPAT)$(CONFIG_SANDBOX),y)
|
||||
@echo "before sending patches to the mailing list."
|
||||
@echo "===================================================="
|
||||
endif
|
||||
@# Check that this build does not use CONFIG options that we do not
|
||||
@# know about unless they are in Kconfig. All the existing CONFIG
|
||||
@# options are whitelisted, so new ones should not be added.
|
||||
$(srctree)/scripts/check-config.sh u-boot.cfg \
|
||||
$(srctree)/scripts/config_whitelist.txt ${srctree} 1>&2
|
||||
|
||||
PHONY += dtbs
|
||||
dtbs: dts/dt.dtb
|
||||
@@ -845,6 +849,12 @@ endif
|
||||
%.imx: %.bin
|
||||
$(Q)$(MAKE) $(build)=arch/arm/imx-common $@
|
||||
|
||||
%.vyb: %.imx
|
||||
$(Q)$(MAKE) $(build)=arch/arm/cpu/armv7/vf610 $@
|
||||
|
||||
quiet_cmd_copy = COPY $@
|
||||
cmd_copy = cp $< $@
|
||||
|
||||
u-boot.dtb: dts/dt.dtb
|
||||
$(call cmd,copy)
|
||||
|
||||
@@ -937,27 +947,6 @@ u-boot.sha1: u-boot.bin
|
||||
u-boot.dis: u-boot
|
||||
$(OBJDUMP) -d $< > $@
|
||||
|
||||
# If .u-boot.cfg.d is still present, then either:
|
||||
# a) The previous build used a Makefile that used if_changed rather than
|
||||
# if_changed_dep when building u-boot.cfg, and hence any later builds will
|
||||
# be unaware of the dependencies for u-boot.cfg. In this case, we must
|
||||
# delete u-boot.cfg to force it and .u-boot.cfg.cmd to be rebuilt the
|
||||
# correct way.
|
||||
# b) The previous build failed or was interrupted while building u-boot.cfg,
|
||||
# so deleting u-boot.cfg isn't going to cause any additional work.
|
||||
ifneq ($(wildcard $(obj)/.u-boot.cfg.d),)
|
||||
unused := $(shell rm -f $(obj)/u-boot.cfg)
|
||||
endif
|
||||
u-boot.cfg: include/config.h FORCE
|
||||
$(call if_changed_dep,cpp_cfg)
|
||||
|
||||
# Check that this build does not use CONFIG options that we don't know about
|
||||
# unless they are in Kconfig. All the existing CONFIG options are whitelisted,
|
||||
# so new ones should not be added.
|
||||
no_new_adhoc_configs_check: u-boot.cfg FORCE
|
||||
$(srctree)/scripts/check-config.sh $< \
|
||||
$(srctree)/scripts/config_whitelist.txt ${srctree} 1>&2
|
||||
|
||||
ifdef CONFIG_TPL
|
||||
SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
|
||||
else
|
||||
|
||||
106
README
106
README
@@ -325,27 +325,6 @@ The following options need to be configured:
|
||||
- CPU Daughterboard Type: (if CONFIG_ATSTK1000 is defined)
|
||||
Define exactly one, e.g. CONFIG_ATSTK1002
|
||||
|
||||
- CPU Module Type: (if CONFIG_COGENT is defined)
|
||||
Define exactly one of
|
||||
CONFIG_CMA286_60_OLD
|
||||
--- FIXME --- not tested yet:
|
||||
CONFIG_CMA286_60, CONFIG_CMA286_21, CONFIG_CMA286_60P,
|
||||
CONFIG_CMA287_23, CONFIG_CMA287_50
|
||||
|
||||
- Motherboard Type: (if CONFIG_COGENT is defined)
|
||||
Define exactly one of
|
||||
CONFIG_CMA101, CONFIG_CMA102
|
||||
|
||||
- Motherboard I/O Modules: (if CONFIG_COGENT is defined)
|
||||
Define one or more of
|
||||
CONFIG_CMA302
|
||||
|
||||
- Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined)
|
||||
Define one or more of
|
||||
CONFIG_LCD_HEARTBEAT - update a character position on
|
||||
the LCD display every second with
|
||||
a "rotator" |\-/|\-/
|
||||
|
||||
- Marvell Family Member
|
||||
CONFIG_SYS_MVFS - define it if you want to enable
|
||||
multiple fs option at one time
|
||||
@@ -578,20 +557,6 @@ The following options need to be configured:
|
||||
CONFIG_SYS_FSL_SEC_LE
|
||||
Defines the SEC controller register space as Little Endian
|
||||
|
||||
- Intel Monahans options:
|
||||
CONFIG_SYS_MONAHANS_RUN_MODE_OSC_RATIO
|
||||
|
||||
Defines the Monahans run mode to oscillator
|
||||
ratio. Valid values are 8, 16, 24, 31. The core
|
||||
frequency is this value multiplied by 13 MHz.
|
||||
|
||||
CONFIG_SYS_MONAHANS_TURBO_RUN_MODE_RATIO
|
||||
|
||||
Defines the Monahans turbo mode to oscillator
|
||||
ratio. Valid values are 1 (default if undefined) and
|
||||
2. The core frequency as calculated above is multiplied
|
||||
by this value.
|
||||
|
||||
- MIPS CPU options:
|
||||
CONFIG_SYS_INIT_SP_OFFSET
|
||||
|
||||
@@ -730,11 +695,6 @@ The following options need to be configured:
|
||||
This causes ft_system_setup() to be called before booting
|
||||
the kernel.
|
||||
|
||||
CONFIG_OF_BOOT_CPU
|
||||
|
||||
This define fills in the correct boot CPU in the boot
|
||||
param header, the default value is zero if undefined.
|
||||
|
||||
CONFIG_OF_IDE_FIXUP
|
||||
|
||||
U-Boot can detect if an IDE device is present or not.
|
||||
@@ -1337,10 +1297,6 @@ The following options need to be configured:
|
||||
CONFIG_LAN91C96
|
||||
Support for SMSC's LAN91C96 chips.
|
||||
|
||||
CONFIG_LAN91C96_BASE
|
||||
Define this to hold the physical address
|
||||
of the LAN91C96's I/O space
|
||||
|
||||
CONFIG_LAN91C96_USE_32_BIT
|
||||
Define this to enable 32 bit addressing
|
||||
|
||||
@@ -1405,7 +1361,7 @@ The following options need to be configured:
|
||||
|
||||
- PWM Support:
|
||||
CONFIG_PWM_IMX
|
||||
Support for PWM modul on the imx6.
|
||||
Support for PWM module on the imx6.
|
||||
|
||||
- TPM Support:
|
||||
CONFIG_TPM
|
||||
@@ -1525,10 +1481,6 @@ The following options need to be configured:
|
||||
Derive USB clock from external clock "blah"
|
||||
- CONFIG_SYS_USB_EXTC_CLK 0x02
|
||||
|
||||
CONFIG_SYS_USB_BRG_CLK 0xBLAH
|
||||
Derive USB clock from brgclk
|
||||
- CONFIG_SYS_USB_BRG_CLK 0x04
|
||||
|
||||
If you have a USB-IF assigned VendorID then you may wish to
|
||||
define your own vendor specific values either in BoardName.h
|
||||
or directly in usbd_vendor_info.h. If you don't define
|
||||
@@ -1691,23 +1643,13 @@ The following options need to be configured:
|
||||
If not defined the default value "mbr" is used.
|
||||
|
||||
- Journaling Flash filesystem support:
|
||||
CONFIG_JFFS2_NAND, CONFIG_JFFS2_NAND_OFF, CONFIG_JFFS2_NAND_SIZE,
|
||||
CONFIG_JFFS2_NAND_DEV
|
||||
CONFIG_JFFS2_NAND
|
||||
Define these for a default partition on a NAND device
|
||||
|
||||
CONFIG_SYS_JFFS2_FIRST_SECTOR,
|
||||
CONFIG_SYS_JFFS2_FIRST_BANK, CONFIG_SYS_JFFS2_NUM_BANKS
|
||||
Define these for a default partition on a NOR device
|
||||
|
||||
CONFIG_SYS_JFFS_CUSTOM_PART
|
||||
Define this to create an own partition. You have to provide a
|
||||
function struct part_info* jffs2_part_info(int part_num)
|
||||
|
||||
If you define only one JFFS2 partition you may also want to
|
||||
#define CONFIG_SYS_JFFS_SINGLE_PART 1
|
||||
to disable the command chpart. This is the default when you
|
||||
have not defined a custom partition
|
||||
|
||||
- FAT(File Allocation Table) filesystem write function support:
|
||||
CONFIG_FAT_WRITE
|
||||
|
||||
@@ -2338,8 +2280,6 @@ CBFS (Coreboot Filesystem) support
|
||||
- CONFIG_SYS_I2C_SH_SPEED3 for for the speed channel 3
|
||||
- CONFIG_SYS_I2C_SH_BASE4 for setting the register channel 4
|
||||
- CONFIG_SYS_I2C_SH_SPEED4 for for the speed channel 4
|
||||
- CONFIG_SYS_I2C_SH_BASE5 for setting the register channel 5
|
||||
- CONFIG_SYS_I2C_SH_SPEED5 for for the speed channel 5
|
||||
- CONFIG_SYS_I2C_SH_NUM_CONTROLLERS for number of i2c buses
|
||||
|
||||
- drivers/i2c/omap24xx_i2c.c
|
||||
@@ -2393,10 +2333,7 @@ CBFS (Coreboot Filesystem) support
|
||||
additional defines:
|
||||
|
||||
CONFIG_SYS_NUM_I2C_BUSES
|
||||
Hold the number of i2c buses you want to use. If you
|
||||
don't use/have i2c muxes on your i2c bus, this
|
||||
is equal to CONFIG_SYS_NUM_I2C_ADAPTERS, and you can
|
||||
omit this define.
|
||||
Hold the number of i2c buses you want to use.
|
||||
|
||||
CONFIG_SYS_I2C_DIRECT_BUS
|
||||
define this, if you don't use i2c muxes on your hardware.
|
||||
@@ -2610,7 +2547,7 @@ CBFS (Coreboot Filesystem) support
|
||||
will skip addresses 0x50 and 0x68 on a board with one I2C bus
|
||||
|
||||
#define CONFIG_I2C_MULTI_BUS
|
||||
#define CONFIG_SYS_I2C_MULTI_NOPROBES {{0,0x50},{0,0x68},{1,0x54}}
|
||||
#define CONFIG_SYS_I2C_NOPROBES {{0,0x50},{0,0x68},{1,0x54}}
|
||||
|
||||
will skip addresses 0x50 and 0x68 on bus 0 and address 0x54 on bus 1
|
||||
|
||||
@@ -3767,10 +3704,6 @@ Configuration Settings:
|
||||
- CONFIG_SYS_SDRAM_BASE:
|
||||
Physical start address of SDRAM. _Must_ be 0 here.
|
||||
|
||||
- CONFIG_SYS_MBIO_BASE:
|
||||
Physical start address of Motherboard I/O (if using a
|
||||
Cogent motherboard)
|
||||
|
||||
- CONFIG_SYS_FLASH_BASE:
|
||||
Physical start address of Flash memory.
|
||||
|
||||
@@ -4202,7 +4135,7 @@ to save the current settings.
|
||||
This setting describes a second storage area of CONFIG_ENV_SIZE
|
||||
size used to hold a redundant copy of the environment data, so
|
||||
that there is a valid backup copy in case there is a power failure
|
||||
during a "saveenv" operation. CONFIG_ENV_OFFSET_RENDUND must be
|
||||
during a "saveenv" operation. CONFIG_ENV_OFFSET_REDUND must be
|
||||
aligned to an erase sector boundary.
|
||||
|
||||
- CONFIG_ENV_SPI_BUS (optional):
|
||||
@@ -4253,7 +4186,7 @@ but it can not erase, write this NOR flash by SRIO or PCIE interface.
|
||||
This setting describes a second storage area of CONFIG_ENV_SIZE
|
||||
size used to hold a redundant copy of the environment data, so
|
||||
that there is a valid backup copy in case there is a power failure
|
||||
during a "saveenv" operation. CONFIG_ENV_OFFSET_RENDUND must be
|
||||
during a "saveenv" operation. CONFIG_ENV_OFFSET_REDUND must be
|
||||
aligned to an erase block boundary.
|
||||
|
||||
- CONFIG_ENV_RANGE (optional):
|
||||
@@ -4554,7 +4487,7 @@ Low Level (hardware related) configuration options:
|
||||
CONFIG_SYS_GBL_DATA_OFFSET is chosen such that the initial
|
||||
data is located at the end of the available space
|
||||
(sometimes written as (CONFIG_SYS_INIT_RAM_SIZE -
|
||||
CONFIG_SYS_INIT_DATA_SIZE), and the initial stack is just
|
||||
GENERATED_GBL_DATA_SIZE), and the initial stack is just
|
||||
below that area (growing from (CONFIG_SYS_INIT_RAM_ADDR +
|
||||
CONFIG_SYS_GBL_DATA_OFFSET) downward.
|
||||
|
||||
@@ -4613,11 +4546,6 @@ Low Level (hardware related) configuration options:
|
||||
enable SPI microcode relocation patch (MPC8xx);
|
||||
define relocation offset in DPRAM [SCC4]
|
||||
|
||||
- CONFIG_SYS_USE_OSCCLK:
|
||||
Use OSCM clock mode on MBX8xx board. Be careful,
|
||||
wrong setting might damage your board. Read
|
||||
doc/README.MBX before setting this variable!
|
||||
|
||||
- CONFIG_SYS_CPM_POST_WORD_ADDR: (MPC8xx, MPC8260 only)
|
||||
Offset of the bootmode word in DPRAM used by post
|
||||
(Power On Self Tests). This definition overrides
|
||||
@@ -4861,10 +4789,6 @@ within that device.
|
||||
Specifies that QE/FMAN firmware is located on the primary SD/MMC
|
||||
device. CONFIG_SYS_FMAN_FW_ADDR is the byte offset on that device.
|
||||
|
||||
- CONFIG_SYS_QE_FMAN_FW_IN_SPIFLASH
|
||||
Specifies that QE/FMAN firmware is located on the primary SPI
|
||||
device. CONFIG_SYS_FMAN_FW_ADDR is the byte offset on that device.
|
||||
|
||||
- CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
|
||||
Specifies that QE/FMAN firmware is located in the remote (master)
|
||||
memory space. CONFIG_SYS_FMAN_FW_ADDR is a virtual address which
|
||||
@@ -4883,22 +4807,6 @@ within that device.
|
||||
- CONFIG_FSL_MC_ENET
|
||||
Enable the MC driver for Layerscape SoCs.
|
||||
|
||||
- CONFIG_SYS_LS_MC_FW_ADDR
|
||||
The address in the storage device where the firmware is located. The
|
||||
meaning of this address depends on which CONFIG_SYS_LS_MC_FW_IN_xxx macro
|
||||
is also specified.
|
||||
|
||||
- CONFIG_SYS_LS_MC_FW_LENGTH
|
||||
The maximum possible size of the firmware. The firmware binary format
|
||||
has a field that specifies the actual size of the firmware, but it
|
||||
might not be possible to read any part of the firmware unless some
|
||||
local storage is allocated to hold the entire firmware first.
|
||||
|
||||
- CONFIG_SYS_LS_MC_FW_IN_NOR
|
||||
Specifies that MC firmware is located in NOR flash, mapped as
|
||||
normal addressable memory via the LBC. CONFIG_SYS_LS_MC_FW_ADDR is the
|
||||
virtual address in NOR flash.
|
||||
|
||||
Freescale Layerscape Debug Server Support:
|
||||
-------------------------------------------
|
||||
The Freescale Layerscape Debug Server Support supports the loading of
|
||||
|
||||
@@ -595,6 +595,10 @@ config TARGET_PCM052
|
||||
bool "Support pcm-052"
|
||||
select CPU_V7
|
||||
|
||||
config TARGET_BK4R1
|
||||
bool "Support BK4r1"
|
||||
select CPU_V7
|
||||
|
||||
config ARCH_ZYNQ
|
||||
bool "Xilinx Zynq Platform"
|
||||
select CPU_V7
|
||||
@@ -652,6 +656,7 @@ config TARGET_VEXPRESS64_JUNO
|
||||
|
||||
config TARGET_LS2080A_EMU
|
||||
bool "Support ls2080a_emu"
|
||||
select ARCH_LS2080A
|
||||
select ARM64
|
||||
select ARMV8_MULTIENTRY
|
||||
help
|
||||
@@ -662,6 +667,7 @@ config TARGET_LS2080A_EMU
|
||||
|
||||
config TARGET_LS2080A_SIMU
|
||||
bool "Support ls2080a_simu"
|
||||
select ARCH_LS2080A
|
||||
select ARM64
|
||||
select ARMV8_MULTIENTRY
|
||||
help
|
||||
@@ -672,6 +678,7 @@ config TARGET_LS2080A_SIMU
|
||||
|
||||
config TARGET_LS2080AQDS
|
||||
bool "Support ls2080aqds"
|
||||
select ARCH_LS2080A
|
||||
select ARM64
|
||||
select ARMV8_MULTIENTRY
|
||||
select SUPPORT_SPL
|
||||
@@ -683,6 +690,7 @@ config TARGET_LS2080AQDS
|
||||
|
||||
config TARGET_LS2080ARDB
|
||||
bool "Support ls2080ardb"
|
||||
select ARCH_LS2080A
|
||||
select ARM64
|
||||
select ARMV8_MULTIENTRY
|
||||
select SUPPORT_SPL
|
||||
@@ -736,6 +744,8 @@ config TARGET_LS1012AFRDM
|
||||
config TARGET_LS1021AQDS
|
||||
bool "Support ls1021aqds"
|
||||
select CPU_V7
|
||||
select CPU_V7_HAS_NONSEC
|
||||
select CPU_V7_HAS_VIRT
|
||||
select SUPPORT_SPL
|
||||
select ARCH_LS1021A
|
||||
select ARCH_SUPPORT_PSCI
|
||||
@@ -744,6 +754,8 @@ config TARGET_LS1021AQDS
|
||||
config TARGET_LS1021ATWR
|
||||
bool "Support ls1021atwr"
|
||||
select CPU_V7
|
||||
select CPU_V7_HAS_NONSEC
|
||||
select CPU_V7_HAS_VIRT
|
||||
select SUPPORT_SPL
|
||||
select ARCH_LS1021A
|
||||
select ARCH_SUPPORT_PSCI
|
||||
@@ -813,6 +825,7 @@ config ARCH_UNIPHIER
|
||||
select DM_GPIO
|
||||
select DM_I2C
|
||||
select DM_MMC
|
||||
select DM_RESET
|
||||
select DM_SERIAL
|
||||
select DM_USB
|
||||
select OF_CONTROL
|
||||
|
||||
@@ -144,4 +144,7 @@ else
|
||||
ALL-y += u-boot.imx
|
||||
endif
|
||||
endif
|
||||
ifneq ($(CONFIG_VF610),)
|
||||
ALL-y += u-boot.vyb
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -12,7 +12,7 @@ obj-y += cache_v7.o cache_v7_asm.o
|
||||
obj-y += cpu.o cp15.o
|
||||
obj-y += syslib.o
|
||||
|
||||
ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_MX7)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_SUNXI)$(CONFIG_ARCH_SOCFPGA),)
|
||||
ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_MX7)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_SUNXI)$(CONFIG_ARCH_SOCFPGA)$(CONFIG_LS102XA),)
|
||||
ifneq ($(CONFIG_SKIP_LOWLEVEL_INIT),y)
|
||||
obj-y += lowlevel_init.o
|
||||
endif
|
||||
|
||||
@@ -95,6 +95,9 @@ int print_cpuinfo(void)
|
||||
case TI81XX:
|
||||
cpu_s = "TI81XX";
|
||||
break;
|
||||
case AM437X:
|
||||
cpu_s = "AM437X";
|
||||
break;
|
||||
default:
|
||||
cpu_s = "Unknown CPU type";
|
||||
break;
|
||||
@@ -110,7 +113,7 @@ int print_cpuinfo(void)
|
||||
else
|
||||
sec_s = "?";
|
||||
|
||||
printf("%s-%s rev %s\n", cpu_s, sec_s, rev_s);
|
||||
printf("CPU : %s-%s rev %s\n", cpu_s, sec_s, rev_s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,11 @@ ENTRY(lowlevel_init)
|
||||
/*
|
||||
* Setup a temporary stack. Global data is not available yet.
|
||||
*/
|
||||
#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK)
|
||||
ldr sp, =CONFIG_SPL_STACK
|
||||
#else
|
||||
ldr sp, =CONFIG_SYS_INIT_SP_ADDR
|
||||
#endif
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
#ifdef CONFIG_SPL_DM
|
||||
mov r9, #0
|
||||
|
||||
@@ -1,6 +1,89 @@
|
||||
config ARCH_LS1021A
|
||||
bool "Freescale Layerscape LS1021A SoC"
|
||||
bool
|
||||
select SYS_FSL_ERRATUM_A010315
|
||||
select SYS_FSL_SRDS_1
|
||||
select SYS_HAS_SERDES
|
||||
select SYS_FSL_DDR_BE
|
||||
select SYS_FSL_DDR_VER_50
|
||||
|
||||
menu "LS102xA architecture"
|
||||
depends on ARCH_LS1021A
|
||||
|
||||
config LS1_DEEP_SLEEP
|
||||
bool "Freescale Layerscape 1 deep sleep"
|
||||
bool "Deep sleep"
|
||||
depends on ARCH_LS1021A
|
||||
|
||||
config MAX_CPUS
|
||||
int "Maximum number of CPUs permitted for LS102xA"
|
||||
depends on ARCH_LS1021A
|
||||
default 2
|
||||
help
|
||||
Set this number to the maximum number of possible CPUs in the SoC.
|
||||
SoCs may have multiple clusters with each cluster may have multiple
|
||||
ports. If some ports are reserved but higher ports are used for
|
||||
cores, count the reserved ports. This will allocate enough memory
|
||||
in spin table to properly handle all cores.
|
||||
|
||||
config NUM_DDR_CONTROLLERS
|
||||
int "Maximum DDR controllers"
|
||||
default 1
|
||||
|
||||
config SYS_FSL_ERRATUM_A010315
|
||||
bool "Workaround for PCIe erratum A010315"
|
||||
|
||||
config SYS_FSL_SRDS_1
|
||||
bool
|
||||
|
||||
config SYS_FSL_SRDS_2
|
||||
bool
|
||||
|
||||
config SYS_HAS_SERDES
|
||||
bool
|
||||
|
||||
config SYS_FSL_DDR
|
||||
bool "Freescale DDR driver"
|
||||
help
|
||||
Select Freescale General DDR driver, shared between most Freescale
|
||||
PowerPC- based SoCs (such as mpc83xx, mpc85xx, mpc86xx) and ARM-
|
||||
based Layerscape SoCs (such as ls2080a).
|
||||
|
||||
config SYS_FSL_DDR_BE
|
||||
bool
|
||||
default y
|
||||
help
|
||||
Access DDR registers in big-endian.
|
||||
|
||||
config SYS_FSL_DDR_VER
|
||||
int
|
||||
default 50 if SYS_FSL_DDR_VER_50
|
||||
|
||||
config SYS_FSL_DDR_VER_50
|
||||
bool
|
||||
|
||||
config SYS_FSL_DDRC_ARM_GEN3
|
||||
bool
|
||||
|
||||
config SYS_FSL_DDRC_GEN4
|
||||
bool
|
||||
|
||||
config SYS_FSL_DDR3
|
||||
bool "Freescale DDR3 controller"
|
||||
depends on !SYS_FSL_DDR4
|
||||
select SYS_FSL_DDR
|
||||
select SYS_FSL_DDRC_ARM_GEN3
|
||||
help
|
||||
Enable Freescale DDR3 controller on ARM-based SoCs.
|
||||
|
||||
config SYS_FSL_DDR4
|
||||
bool "Freescale DDR4 controller"
|
||||
select SYS_FSL_DDR
|
||||
select SYS_FSL_DDRC_GEN4
|
||||
help
|
||||
Enable Freescale DDR4 controller.
|
||||
|
||||
config SYS_FSL_IFC_BANK_COUNT
|
||||
int "Maximum banks of Integrated flash controller"
|
||||
depends on ARCH_LS1021A
|
||||
default 8
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -60,6 +60,10 @@ unsigned int get_soc_major_rev(void)
|
||||
return major;
|
||||
}
|
||||
|
||||
void s_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A010315
|
||||
void erratum_a010315(void)
|
||||
{
|
||||
|
||||
@@ -31,6 +31,10 @@ config MX6UL
|
||||
select ROM_UNIFIED_SECTIONS
|
||||
bool
|
||||
|
||||
config MX6ULL
|
||||
bool
|
||||
select MX6UL
|
||||
|
||||
choice
|
||||
prompt "MX6 board select"
|
||||
optional
|
||||
@@ -133,6 +137,12 @@ config TARGET_MX6UL_14X14_EVK
|
||||
select DM_THERMAL
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_MX6ULL_14X14_EVK
|
||||
bool "Support mx6ull_14x14_evk"
|
||||
select MX6ULL
|
||||
select DM
|
||||
select DM_THERMAL
|
||||
|
||||
config TARGET_NITROGEN6X
|
||||
bool "nitrogen6x"
|
||||
|
||||
@@ -222,6 +232,7 @@ source "board/freescale/mx6slevk/Kconfig"
|
||||
source "board/freescale/mx6sxsabresd/Kconfig"
|
||||
source "board/freescale/mx6sxsabreauto/Kconfig"
|
||||
source "board/freescale/mx6ul_14x14_evk/Kconfig"
|
||||
source "board/freescale/mx6ullevk/Kconfig"
|
||||
source "board/phytec/pcm058/Kconfig"
|
||||
source "board/gateworks/gw_ventana/Kconfig"
|
||||
source "board/kosagi/novena/Kconfig"
|
||||
|
||||
@@ -97,7 +97,10 @@ void enable_enet_clk(unsigned char enable)
|
||||
{
|
||||
u32 mask, *addr;
|
||||
|
||||
if (is_mx6ul()) {
|
||||
if (is_mx6ull()) {
|
||||
mask = MXC_CCM_CCGR0_ENET_CLK_ENABLE_MASK;
|
||||
addr = &imx_ccm->CCGR0;
|
||||
} else if (is_mx6ul()) {
|
||||
mask = MXC_CCM_CCGR3_ENET_MASK;
|
||||
addr = &imx_ccm->CCGR3;
|
||||
} else {
|
||||
@@ -117,7 +120,7 @@ void enable_uart_clk(unsigned char enable)
|
||||
{
|
||||
u32 mask;
|
||||
|
||||
if (is_mx6ul())
|
||||
if (is_mx6ul() || is_mx6ull())
|
||||
mask = MXC_CCM_CCGR5_UART_MASK;
|
||||
else
|
||||
mask = MXC_CCM_CCGR5_UART_MASK | MXC_CCM_CCGR5_UART_SERIAL_MASK;
|
||||
@@ -168,7 +171,7 @@ int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
|
||||
reg &= ~mask;
|
||||
__raw_writel(reg, &imx_ccm->CCGR2);
|
||||
} else {
|
||||
if (is_mx6sx() || is_mx6ul()) {
|
||||
if (is_mx6sx() || is_mx6ul() || is_mx6ull()) {
|
||||
mask = MXC_CCM_CCGR6_I2C4_MASK;
|
||||
addr = &imx_ccm->CCGR6;
|
||||
} else {
|
||||
@@ -279,7 +282,7 @@ static u32 mxc_get_pll_pfd(enum pll_clocks pll, int pfd_num)
|
||||
|
||||
switch (pll) {
|
||||
case PLL_BUS:
|
||||
if (!is_mx6ul()) {
|
||||
if (!is_mx6ul() && !is_mx6ull()) {
|
||||
if (pfd_num == 3) {
|
||||
/* No PFD3 on PLL2 */
|
||||
return 0;
|
||||
@@ -380,7 +383,7 @@ static u32 get_ipg_per_clk(void)
|
||||
|
||||
reg = __raw_readl(&imx_ccm->cscmr1);
|
||||
if (is_mx6sl() || is_mx6sx() ||
|
||||
is_mx6dqp() || is_mx6ul()) {
|
||||
is_mx6dqp() || is_mx6ul() || is_mx6ull()) {
|
||||
if (reg & MXC_CCM_CSCMR1_PER_CLK_SEL_MASK)
|
||||
return MXC_HCLK; /* OSC 24Mhz */
|
||||
}
|
||||
@@ -396,7 +399,8 @@ static u32 get_uart_clk(void)
|
||||
u32 freq = decode_pll(PLL_USBOTG, MXC_HCLK) / 6; /* static divider */
|
||||
reg = __raw_readl(&imx_ccm->cscdr1);
|
||||
|
||||
if (is_mx6sl() || is_mx6sx() || is_mx6dqp() || is_mx6ul()) {
|
||||
if (is_mx6sl() || is_mx6sx() || is_mx6dqp() || is_mx6ul() ||
|
||||
is_mx6ull()) {
|
||||
if (reg & MXC_CCM_CSCDR1_UART_CLK_SEL)
|
||||
freq = MXC_HCLK;
|
||||
}
|
||||
@@ -415,7 +419,8 @@ static u32 get_cspi_clk(void)
|
||||
cspi_podf = (reg & MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK) >>
|
||||
MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET;
|
||||
|
||||
if (is_mx6dqp() || is_mx6sl() || is_mx6sx() || is_mx6ul()) {
|
||||
if (is_mx6dqp() || is_mx6sl() || is_mx6sx() || is_mx6ul() ||
|
||||
is_mx6ull()) {
|
||||
if (reg & MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK)
|
||||
return MXC_HCLK / (cspi_podf + 1);
|
||||
}
|
||||
@@ -477,7 +482,7 @@ static u32 get_mmdc_ch0_clk(void)
|
||||
|
||||
u32 freq, podf, per2_clk2_podf, pmu_misc2_audio_div;
|
||||
|
||||
if (is_mx6sx() || is_mx6ul() || is_mx6sl()) {
|
||||
if (is_mx6sx() || is_mx6ul() || is_mx6ull() || is_mx6sl()) {
|
||||
podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK) >>
|
||||
MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET;
|
||||
if (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK_SEL) {
|
||||
@@ -615,7 +620,7 @@ void mxs_set_lcdclk(u32 base_addr, u32 freq)
|
||||
|
||||
debug("mxs_set_lcdclk, freq = %dKHz\n", freq);
|
||||
|
||||
if (!is_mx6sx() && !is_mx6ul()) {
|
||||
if (!is_mx6sx() && !is_mx6ul() && !is_mx6ull()) {
|
||||
debug("This chip not support lcd!\n");
|
||||
return;
|
||||
}
|
||||
@@ -749,7 +754,7 @@ int enable_lcdif_clock(u32 base_addr)
|
||||
MXC_CCM_CCGR3_DISP_AXI_MASK) :
|
||||
(MXC_CCM_CCGR3_LCDIF1_PIX_MASK |
|
||||
MXC_CCM_CCGR3_DISP_AXI_MASK);
|
||||
} else if (is_mx6ul()) {
|
||||
} else if (is_mx6ul() || is_mx6ull()) {
|
||||
if (base_addr != LCDIF1_BASE_ADDR) {
|
||||
puts("Wrong LCD interface!\n");
|
||||
return -EINVAL;
|
||||
@@ -847,7 +852,7 @@ int enable_fec_anatop_clock(int fec_id, enum enet_freq freq)
|
||||
reg |= BF_ANADIG_PLL_ENET_DIV_SELECT(freq);
|
||||
} else if (fec_id == 1) {
|
||||
/* Only i.MX6SX/UL support ENET2 */
|
||||
if (!(is_mx6sx() || is_mx6ul()))
|
||||
if (!(is_mx6sx() || is_mx6ul() || is_mx6ull()))
|
||||
return -EINVAL;
|
||||
reg &= ~BM_ANADIG_PLL_ENET2_DIV_SELECT;
|
||||
reg |= BF_ANADIG_PLL_ENET2_DIV_SELECT(freq);
|
||||
@@ -1069,17 +1074,27 @@ void hab_caam_clock_enable(unsigned char enable)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
/* CG4 ~ CG6, CAAM clocks */
|
||||
reg = __raw_readl(&imx_ccm->CCGR0);
|
||||
if (enable)
|
||||
reg |= (MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
|
||||
MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
|
||||
MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
|
||||
else
|
||||
reg &= ~(MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
|
||||
MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
|
||||
MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
|
||||
__raw_writel(reg, &imx_ccm->CCGR0);
|
||||
if (is_mx6ull()) {
|
||||
/* CG5, DCP clock */
|
||||
reg = __raw_readl(&imx_ccm->CCGR0);
|
||||
if (enable)
|
||||
reg |= MXC_CCM_CCGR0_DCP_CLK_MASK;
|
||||
else
|
||||
reg &= ~MXC_CCM_CCGR0_DCP_CLK_MASK;
|
||||
__raw_writel(reg, &imx_ccm->CCGR0);
|
||||
} else {
|
||||
/* CG4 ~ CG6, CAAM clocks */
|
||||
reg = __raw_readl(&imx_ccm->CCGR0);
|
||||
if (enable)
|
||||
reg |= (MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
|
||||
MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
|
||||
MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
|
||||
else
|
||||
reg &= ~(MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
|
||||
MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
|
||||
MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
|
||||
__raw_writel(reg, &imx_ccm->CCGR0);
|
||||
}
|
||||
|
||||
/* EMI slow clk */
|
||||
reg = __raw_readl(&imx_ccm->CCGR6);
|
||||
|
||||
@@ -126,7 +126,7 @@ u32 get_cpu_speed_grade_hz(void)
|
||||
val >>= OCOTP_CFG3_SPEED_SHIFT;
|
||||
val &= 0x3;
|
||||
|
||||
if (is_mx6ul()) {
|
||||
if (is_mx6ul() || is_mx6ull()) {
|
||||
if (val == OCOTP_CFG3_SPEED_528MHZ)
|
||||
return 528000000;
|
||||
else if (val == OCOTP_CFG3_SPEED_696MHZ)
|
||||
@@ -293,7 +293,7 @@ static void clear_mmdc_ch_mask(void)
|
||||
reg = readl(&mxc_ccm->ccdr);
|
||||
|
||||
/* Clear MMDC channel mask */
|
||||
if (is_mx6sx() || is_mx6ul() || is_mx6sl())
|
||||
if (is_mx6sx() || is_mx6ul() || is_mx6ull() || is_mx6sl())
|
||||
reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK);
|
||||
else
|
||||
reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK | MXC_CCM_CCDR_MMDC_CH0_HS_MASK);
|
||||
@@ -314,6 +314,12 @@ static void init_bandgap(void)
|
||||
* be set.
|
||||
*/
|
||||
writel(BM_ANADIG_ANA_MISC0_REFTOP_SELBIASOFF, &anatop->ana_misc0_set);
|
||||
/*
|
||||
* On i.MX6ULL, the LDO 1.2V bandgap voltage is 30mV higher. so set
|
||||
* VBGADJ bits to 2b'110 to adjust it.
|
||||
*/
|
||||
if (is_mx6ull())
|
||||
writel(BM_ANADIG_ANA_MISC0_REFTOP_VBGADJ, &anatop->ana_misc0_set);
|
||||
}
|
||||
|
||||
|
||||
@@ -343,7 +349,7 @@ int arch_cpu_init(void)
|
||||
*/
|
||||
init_bandgap();
|
||||
|
||||
if (!IS_ENABLED(CONFIG_MX6UL)) {
|
||||
if (!is_mx6ul() && !is_mx6ull()) {
|
||||
/*
|
||||
* When low freq boot is enabled, ROM will not set AHB
|
||||
* freq, so we need to ensure AHB freq is 132MHz in such
|
||||
@@ -356,14 +362,41 @@ int arch_cpu_init(void)
|
||||
set_ahb_rate(132000000);
|
||||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_MX6UL) && is_soc_rev(CHIP_REV_1_0) == 0) {
|
||||
if (is_mx6ul()) {
|
||||
if (is_soc_rev(CHIP_REV_1_0) == 0) {
|
||||
/*
|
||||
* According to the design team's requirement on
|
||||
* i.MX6UL,the PMIC_STBY_REQ PAD should be configured
|
||||
* as open drain 100K (0x0000b8a0).
|
||||
* Only exists on TO1.0
|
||||
*/
|
||||
writel(0x0000b8a0, IOMUXC_BASE_ADDR + 0x29c);
|
||||
} else {
|
||||
/*
|
||||
* From TO1.1, SNVS adds internal pull up control
|
||||
* for POR_B, the register filed is GPBIT[1:0],
|
||||
* after system boot up, it can be set to 2b'01
|
||||
* to disable internal pull up.It can save about
|
||||
* 30uA power in SNVS mode.
|
||||
*/
|
||||
writel((readl(MX6UL_SNVS_LP_BASE_ADDR + 0x10) &
|
||||
(~0x1400)) | 0x400,
|
||||
MX6UL_SNVS_LP_BASE_ADDR + 0x10);
|
||||
}
|
||||
}
|
||||
|
||||
if (is_mx6ull()) {
|
||||
/*
|
||||
* According to the design team's requirement on i.MX6UL,
|
||||
* the PMIC_STBY_REQ PAD should be configured as open
|
||||
* drain 100K (0x0000b8a0).
|
||||
* Only exists on TO1.0
|
||||
* GPBIT[1:0] is suggested to set to 2'b11:
|
||||
* 2'b00 : always PUP100K
|
||||
* 2'b01 : PUP100K when PMIC_ON_REQ or SOC_NOT_FAIL
|
||||
* 2'b10 : always disable PUP100K
|
||||
* 2'b11 : PDN100K when SOC_FAIL, PUP100K when SOC_NOT_FAIL
|
||||
* register offset is different from i.MX6UL, since
|
||||
* i.MX6UL is fixed by ECO.
|
||||
*/
|
||||
writel(0x0000b8a0, IOMUXC_BASE_ADDR + 0x29c);
|
||||
writel(readl(MX6UL_SNVS_LP_BASE_ADDR) |
|
||||
0x3, MX6UL_SNVS_LP_BASE_ADDR);
|
||||
}
|
||||
|
||||
/* Set perclk to source from OSC 24MHz */
|
||||
@@ -459,7 +492,7 @@ void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
|
||||
struct fuse_bank4_regs *fuse =
|
||||
(struct fuse_bank4_regs *)bank->fuse_regs;
|
||||
|
||||
if ((is_mx6sx() || is_mx6ul()) && dev_id == 1) {
|
||||
if ((is_mx6sx() || is_mx6ul() || is_mx6ull()) && dev_id == 1) {
|
||||
u32 value = readl(&fuse->mac_addr2);
|
||||
mac[0] = value >> 24 ;
|
||||
mac[1] = value >> 16 ;
|
||||
@@ -494,7 +527,7 @@ void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
|
||||
const struct boot_mode soc_boot_modes[] = {
|
||||
{"normal", MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)},
|
||||
/* reserved value should start rom usb */
|
||||
{"usb", MAKE_CFGVAL(0x01, 0x00, 0x00, 0x00)},
|
||||
{"usb", MAKE_CFGVAL(0x10, 0x00, 0x00, 0x00)},
|
||||
{"sata", MAKE_CFGVAL(0x20, 0x00, 0x00, 0x00)},
|
||||
{"ecspi1:0", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x08)},
|
||||
{"ecspi1:1", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x18)},
|
||||
@@ -523,7 +556,7 @@ void s_init(void)
|
||||
u32 mask528;
|
||||
u32 reg, periph1, periph2;
|
||||
|
||||
if (is_mx6sx() || is_mx6ul())
|
||||
if (is_mx6sx() || is_mx6ul() || is_mx6ull())
|
||||
return;
|
||||
|
||||
/* Due to hardware limitation, on MX6Q we need to gate/ungate all PFDs
|
||||
|
||||
@@ -24,6 +24,30 @@ ENTRY(save_boot_params)
|
||||
str r0, [r1]
|
||||
b save_boot_params_ret
|
||||
ENDPROC(save_boot_params)
|
||||
|
||||
#if !defined(CONFIG_TI_SECURE_DEVICE) && defined(CONFIG_ARMV7_LPAE)
|
||||
ENTRY(switch_to_hypervisor)
|
||||
|
||||
/*
|
||||
* Switch to hypervisor mode
|
||||
*/
|
||||
adr r0, save_sp
|
||||
str sp, [r0]
|
||||
adr r1, restore_from_hyp
|
||||
ldr r0, =0x102
|
||||
b omap_smc1
|
||||
restore_from_hyp:
|
||||
adr r0, save_sp
|
||||
ldr sp, [r0]
|
||||
MRC p15, 4, R0, c1, c0, 0
|
||||
ldr r1, =0X1004 @Set cache enable bits for hypervisor mode
|
||||
orr r0, r0, r1
|
||||
MCR p15, 4, R0, c1, c0, 0
|
||||
b switch_to_hypervisor_ret
|
||||
save_sp:
|
||||
.word 0x0
|
||||
ENDPROC(switch_to_hypervisor)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
ENTRY(omap_smc1)
|
||||
|
||||
@@ -17,7 +17,28 @@
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#define ARMV7_DCACHE_WRITEBACK 0xe
|
||||
/*
|
||||
* Without LPAE short descriptors are used
|
||||
* Set C - Cache Bit3
|
||||
* Set B - Buffer Bit2
|
||||
* The last 2 bits set to 0b10
|
||||
* Do Not set XN bit4
|
||||
* So value is 0xe
|
||||
*
|
||||
* With LPAE cache configuration happens via MAIR0 register
|
||||
* AttrIndx value is 0x3 for picking byte3 for MAIR0 which has 0xFF.
|
||||
* 0xFF maps to Cache writeback with Read and Write Allocate set
|
||||
* The bits[1:0] should have the value 0b01 for the first level
|
||||
* descriptor.
|
||||
* So the value is 0xd
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_ARMV7_LPAE
|
||||
#define ARMV7_DCACHE_POLICY DCACHE_WRITEALLOC
|
||||
#else
|
||||
#define ARMV7_DCACHE_POLICY DCACHE_WRITEBACK & ~TTB_SECT_XN_MASK
|
||||
#endif
|
||||
|
||||
#define ARMV7_DOMAIN_CLIENT 1
|
||||
#define ARMV7_DOMAIN_MASK (0x3 << 0)
|
||||
|
||||
@@ -32,13 +53,13 @@ void dram_bank_mmu_setup(int bank)
|
||||
bd_t *bd = gd->bd;
|
||||
int i;
|
||||
|
||||
u32 start = bd->bi_dram[bank].start >> 20;
|
||||
u32 size = bd->bi_dram[bank].size >> 20;
|
||||
u32 start = bd->bi_dram[bank].start >> MMU_SECTION_SHIFT;
|
||||
u32 size = bd->bi_dram[bank].size >> MMU_SECTION_SHIFT;
|
||||
u32 end = start + size;
|
||||
|
||||
debug("%s: bank: %d\n", __func__, bank);
|
||||
for (i = start; i < end; i++)
|
||||
set_section_dcache(i, ARMV7_DCACHE_WRITEBACK);
|
||||
set_section_dcache(i, ARMV7_DCACHE_POLICY);
|
||||
}
|
||||
|
||||
void arm_init_domains(void)
|
||||
|
||||
@@ -33,6 +33,9 @@ config SPL_POWER_SUPPORT
|
||||
config SPL_SERIAL_SUPPORT
|
||||
default y
|
||||
|
||||
config SPL_DISPLAY_PRINT
|
||||
default y
|
||||
|
||||
choice
|
||||
prompt "OMAP4 board select"
|
||||
optional
|
||||
|
||||
@@ -33,6 +33,9 @@ config SPL_POWER_SUPPORT
|
||||
config SPL_SERIAL_SUPPORT
|
||||
default y
|
||||
|
||||
config SPL_DISPLAY_PRINT
|
||||
default y
|
||||
|
||||
choice
|
||||
prompt "OMAP5 board select"
|
||||
optional
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <config.h>
|
||||
#include <asm/system.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/armv7.h>
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
@@ -30,11 +31,24 @@
|
||||
|
||||
.globl reset
|
||||
.globl save_boot_params_ret
|
||||
#ifdef CONFIG_ARMV7_LPAE
|
||||
.global switch_to_hypervisor_ret
|
||||
#endif
|
||||
|
||||
reset:
|
||||
/* Allow the board to save important registers */
|
||||
b save_boot_params
|
||||
save_boot_params_ret:
|
||||
#ifdef CONFIG_ARMV7_LPAE
|
||||
/*
|
||||
* check for Hypervisor support
|
||||
*/
|
||||
mrc p15, 0, r0, c0, c1, 1 @ read ID_PFR1
|
||||
and r0, r0, #CPUID_ARM_VIRT_MASK @ mask virtualization bits
|
||||
cmp r0, #(1 << CPUID_ARM_VIRT_SHIFT)
|
||||
beq switch_to_hypervisor
|
||||
switch_to_hypervisor_ret:
|
||||
#endif
|
||||
/*
|
||||
* disable interrupts (FIQ and IRQ), also set the cpu to SVC32 mode,
|
||||
* except if in HYP mode already
|
||||
@@ -103,6 +117,13 @@ ENTRY(save_boot_params)
|
||||
ENDPROC(save_boot_params)
|
||||
.weak save_boot_params
|
||||
|
||||
#ifdef CONFIG_ARMV7_LPAE
|
||||
ENTRY(switch_to_hypervisor)
|
||||
b switch_to_hypervisor_ret
|
||||
ENDPROC(switch_to_hypervisor)
|
||||
.weak switch_to_hypervisor
|
||||
#endif
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* cpu_init_cp15
|
||||
|
||||
@@ -6,3 +6,8 @@
|
||||
|
||||
obj-y += generic.o
|
||||
obj-y += timer.o
|
||||
|
||||
MKIMAGEFLAGS_u-boot.vyb = -T vybridimage
|
||||
|
||||
u-boot.vyb: u-boot.imx
|
||||
$(call if_changed,mkimage)
|
||||
|
||||
@@ -322,7 +322,7 @@ int arch_misc_init(void)
|
||||
{
|
||||
char soc[6];
|
||||
|
||||
strcat(soc, "vf");
|
||||
strcpy(soc, "vf");
|
||||
strcat(soc, soc_type);
|
||||
setenv("soc", soc);
|
||||
|
||||
|
||||
@@ -1,17 +1,138 @@
|
||||
config ARCH_LS1012A
|
||||
bool "Freescale Layerscape LS1012A SoC"
|
||||
bool
|
||||
select FSL_LSCH2
|
||||
select SYS_FSL_DDR_BE
|
||||
select SYS_FSL_MMDC
|
||||
select SYS_FSL_ERRATUM_A010315
|
||||
|
||||
config ARCH_LS1043A
|
||||
bool "Freescale Layerscape LS1043A SoC"
|
||||
bool
|
||||
select FSL_LSCH2
|
||||
select SYS_FSL_DDR_BE
|
||||
select SYS_FSL_DDR_VER_50
|
||||
select SYS_FSL_ERRATUM_A010315
|
||||
select SYS_FSL_ERRATUM_A010539
|
||||
|
||||
config ARCH_LS1046A
|
||||
bool "Freescale Layerscape LS1046A SoC"
|
||||
bool
|
||||
select FSL_LSCH2
|
||||
select SYS_FSL_DDR_BE
|
||||
select SYS_FSL_DDR4
|
||||
select SYS_FSL_DDR_VER_50
|
||||
select SYS_FSL_ERRATUM_A010539
|
||||
select SYS_FSL_SRDS_2
|
||||
|
||||
config ARCH_LS2080A
|
||||
bool
|
||||
select FSL_LSCH3
|
||||
select SYS_FSL_DDR4
|
||||
select SYS_FSL_DDR_LE
|
||||
select SYS_FSL_DDR_VER_50
|
||||
select SYS_FSL_HAS_DP_DDR
|
||||
select SYS_FSL_SRDS_2
|
||||
|
||||
config FSL_LSCH2
|
||||
bool
|
||||
select SYS_FSL_SRDS_1
|
||||
select SYS_HAS_SERDES
|
||||
|
||||
config FSL_LSCH3
|
||||
bool
|
||||
select SYS_FSL_SRDS_1
|
||||
select SYS_HAS_SERDES
|
||||
|
||||
menu "Layerscape architecture"
|
||||
depends on FSL_LSCH2 || FSL_LSCH3
|
||||
|
||||
config SYS_FSL_MMDC
|
||||
bool "Freescale Multi Mode DDR Controller"
|
||||
bool
|
||||
|
||||
config SYS_FSL_ERRATUM_A010315
|
||||
bool "Workaround for PCIe erratum A010315"
|
||||
|
||||
config SYS_FSL_ERRATUM_A010539
|
||||
bool "Workaround for PIN MUX erratum A010539"
|
||||
|
||||
config MAX_CPUS
|
||||
int "Maximum number of CPUs permitted for Layerscape"
|
||||
default 4 if ARCH_LS1043A
|
||||
default 4 if ARCH_LS1046A
|
||||
default 16 if ARCH_LS2080A
|
||||
default 1
|
||||
help
|
||||
Set this number to the maximum number of possible CPUs in the SoC.
|
||||
SoCs may have multiple clusters with each cluster may have multiple
|
||||
ports. If some ports are reserved but higher ports are used for
|
||||
cores, count the reserved ports. This will allocate enough memory
|
||||
in spin table to properly handle all cores.
|
||||
|
||||
config NUM_DDR_CONTROLLERS
|
||||
int "Maximum DDR controllers"
|
||||
default 3 if ARCH_LS2080A
|
||||
default 1
|
||||
|
||||
config SYS_FSL_IFC_BANK_COUNT
|
||||
int "Maximum banks of Integrated flash controller"
|
||||
depends on ARCH_LS1043A || ARCH_LS1046A || ARCH_LS2080A
|
||||
default 4 if ARCH_LS1043A
|
||||
default 4 if ARCH_LS1046A
|
||||
default 8 if ARCH_LS2080A
|
||||
|
||||
config SYS_FSL_HAS_DP_DDR
|
||||
bool
|
||||
|
||||
config SYS_FSL_SRDS_1
|
||||
bool
|
||||
|
||||
config SYS_FSL_SRDS_2
|
||||
bool
|
||||
|
||||
config SYS_HAS_SERDES
|
||||
bool
|
||||
|
||||
config SYS_FSL_DDR
|
||||
bool "Freescale DDR driver"
|
||||
help
|
||||
Select Freescale General DDR driver, shared between most Freescale
|
||||
PowerPC- based SoCs (such as mpc83xx, mpc85xx, mpc86xx) and ARM-
|
||||
based Layerscape SoCs (such as ls2080a).
|
||||
|
||||
config SYS_FSL_DDR_BE
|
||||
bool
|
||||
help
|
||||
Access DDR registers in big-endian.
|
||||
|
||||
config SYS_FSL_DDR_LE
|
||||
bool
|
||||
help
|
||||
Access DDR registers in little-endian.
|
||||
|
||||
config SYS_FSL_DDR_VER
|
||||
int
|
||||
default 50 if SYS_FSL_DDR_VER_50
|
||||
|
||||
config SYS_FSL_DDR_VER_50
|
||||
bool
|
||||
|
||||
config SYS_FSL_DDRC_ARM_GEN3
|
||||
bool
|
||||
|
||||
config SYS_FSL_DDRC_GEN4
|
||||
bool
|
||||
|
||||
config SYS_FSL_DDR3
|
||||
bool "Freescale DDR3 controller"
|
||||
depends on !SYS_FSL_DDR4
|
||||
select SYS_FSL_DDR
|
||||
select SYS_FSL_DDRC_ARM_GEN3
|
||||
help
|
||||
Enable Freescale DDR3 controller on ARM-based SoCs.
|
||||
|
||||
config SYS_FSL_DDR4
|
||||
bool "Freescale DDR4 controller"
|
||||
select SYS_FSL_DDR
|
||||
select SYS_FSL_DDRC_GEN4
|
||||
help
|
||||
Enable Freescale DDR4 controller.
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -44,6 +44,9 @@ void cpu_name(char *name)
|
||||
|
||||
if (IS_E_PROCESSOR(svr))
|
||||
strcat(name, "E");
|
||||
|
||||
sprintf(name + strlen(name), " Rev%d.%d",
|
||||
SVR_MAJ(svr), SVR_MIN(svr));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -200,6 +203,27 @@ static inline u32 initiator_type(u32 cluster, int init_id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 cpu_pos_mask(void)
|
||||
{
|
||||
struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
|
||||
int i = 0;
|
||||
u32 cluster, type, mask = 0;
|
||||
|
||||
do {
|
||||
int j;
|
||||
|
||||
cluster = gur_in32(&gur->tp_cluster[i].lower);
|
||||
for (j = 0; j < TP_INIT_PER_CLUSTER; j++) {
|
||||
type = initiator_type(cluster, j);
|
||||
if (type && (TP_ITYP_TYPE(type) == TP_ITYP_TYPE_ARM))
|
||||
mask |= 1 << (i * TP_INIT_PER_CLUSTER + j);
|
||||
}
|
||||
i++;
|
||||
} while ((cluster & TP_CLUSTER_EOC) == 0x0);
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
u32 cpu_mask(void)
|
||||
{
|
||||
struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
|
||||
|
||||
@@ -108,6 +108,24 @@ remove_psci_node:
|
||||
}
|
||||
#endif
|
||||
|
||||
void fsl_fdt_disable_usb(void *blob)
|
||||
{
|
||||
int off;
|
||||
/*
|
||||
* SYSCLK is used as a reference clock for USB. When the USB
|
||||
* controller is used, SYSCLK must meet the additional requirement
|
||||
* of 100 MHz.
|
||||
*/
|
||||
if (CONFIG_SYS_CLK_FREQ != 100000000) {
|
||||
off = fdt_node_offset_by_compatible(blob, -1, "snps,dwc3");
|
||||
while (off != -FDT_ERR_NOTFOUND) {
|
||||
fdt_status_disabled(blob, off);
|
||||
off = fdt_node_offset_by_compatible(blob, off,
|
||||
"snps,dwc3");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ft_cpu_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
#ifdef CONFIG_FSL_LSCH2
|
||||
@@ -150,4 +168,6 @@ void ft_cpu_setup(void *blob, bd_t *bd)
|
||||
#ifdef CONFIG_SYS_DPAA_FMAN
|
||||
fdt_fixup_fman_firmware(blob);
|
||||
#endif
|
||||
fsl_fdt_disable_usb(blob);
|
||||
|
||||
}
|
||||
|
||||
@@ -104,6 +104,11 @@ int is_core_valid(unsigned int core)
|
||||
return !!((1 << core) & cpu_mask());
|
||||
}
|
||||
|
||||
static int is_pos_valid(unsigned int pos)
|
||||
{
|
||||
return !!((1 << pos) & cpu_pos_mask());
|
||||
}
|
||||
|
||||
int is_core_online(u64 cpu_id)
|
||||
{
|
||||
u64 *table;
|
||||
@@ -126,9 +131,9 @@ int cpu_disable(int nr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int core_to_pos(int nr)
|
||||
static int core_to_pos(int nr)
|
||||
{
|
||||
u32 cores = cpu_mask();
|
||||
u32 cores = cpu_pos_mask();
|
||||
int i, count = 0;
|
||||
|
||||
if (nr == 0) {
|
||||
@@ -139,14 +144,17 @@ int core_to_pos(int nr)
|
||||
}
|
||||
|
||||
for (i = 1; i < 32; i++) {
|
||||
if (is_core_valid(i)) {
|
||||
if (is_pos_valid(i)) {
|
||||
count++;
|
||||
if (count == nr)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
if (count != nr)
|
||||
return -1;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
int cpu_status(int nr)
|
||||
|
||||
@@ -233,9 +233,8 @@ int sata_init(void)
|
||||
out_le32((void *)CONFIG_SYS_DCSR_DCFG_ADDR + 0x520, 0x80000000);
|
||||
#endif
|
||||
out_le32(&ccsr_ahci->ppcfg, AHCI_PORT_PHY_1_CFG);
|
||||
out_le32(&ccsr_ahci->pp2c, AHCI_PORT_PHY_2_CFG);
|
||||
out_le32(&ccsr_ahci->pp3c, AHCI_PORT_PHY_3_CFG);
|
||||
out_le32(&ccsr_ahci->ptc, AHCI_PORT_TRANS_CFG);
|
||||
out_le32(&ccsr_ahci->axicc, AHCI_PORT_AXICC_CFG);
|
||||
|
||||
ahci_init((void __iomem *)CONFIG_SYS_SATA);
|
||||
scsi_scan(0);
|
||||
@@ -321,6 +320,19 @@ void erratum_a010315(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void erratum_a010539(void)
|
||||
{
|
||||
#if defined(CONFIG_SYS_FSL_ERRATUM_A010539) && defined(CONFIG_QSPI_BOOT)
|
||||
struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
|
||||
u32 porsr1;
|
||||
|
||||
porsr1 = in_be32(&gur->porsr1);
|
||||
porsr1 &= ~FSL_CHASSIS2_CCSR_PORSR1_RCW_MASK;
|
||||
out_be32((void *)(CONFIG_SYS_DCSR_DCFG_ADDR + DCFG_DCSR_PORCR1),
|
||||
porsr1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void fsl_lsch2_early_init_f(void)
|
||||
{
|
||||
struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
|
||||
@@ -339,7 +351,9 @@ void fsl_lsch2_early_init_f(void)
|
||||
#endif
|
||||
/* Make SEC reads and writes snoopable */
|
||||
setbits_be32(&scfg->snpcnfgcr, SCFG_SNPCNFGCR_SECRDSNP |
|
||||
SCFG_SNPCNFGCR_SECWRSNP);
|
||||
SCFG_SNPCNFGCR_SECWRSNP |
|
||||
SCFG_SNPCNFGCR_SATARDSNP |
|
||||
SCFG_SNPCNFGCR_SATAWRSNP);
|
||||
|
||||
/*
|
||||
* Enable snoop requests and DVM message requests for
|
||||
@@ -352,6 +366,7 @@ void fsl_lsch2_early_init_f(void)
|
||||
erratum_a008850_early(); /* part 1 of 2 */
|
||||
erratum_a009929();
|
||||
erratum_a009660();
|
||||
erratum_a010539();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -19,12 +19,22 @@ extern void c_runtime_cpu_setup(void);
|
||||
#define SEC_FIRMWARE_LOADED 0x1
|
||||
#define SEC_FIRMWARE_RUNNING 0x2
|
||||
#define SEC_FIRMWARE_ADDR_MASK (~0x3)
|
||||
/*
|
||||
* Secure firmware load addr
|
||||
* Flags used: 0x1 secure firmware has been loaded to secure memory
|
||||
* 0x2 secure firmware is running
|
||||
*/
|
||||
phys_addr_t sec_firmware_addr;
|
||||
/*
|
||||
* Secure firmware load addr
|
||||
* Flags used: 0x1 secure firmware has been loaded to secure memory
|
||||
* 0x2 secure firmware is running
|
||||
*/
|
||||
phys_addr_t sec_firmware_addr;
|
||||
|
||||
#ifndef SEC_FIRMWARE_FIT_IMAGE
|
||||
#define SEC_FIRMWARE_FIT_IMAGE "firmware"
|
||||
#endif
|
||||
#ifndef SEC_FIRMEWARE_FIT_CNF_NAME
|
||||
#define SEC_FIRMEWARE_FIT_CNF_NAME "config@1"
|
||||
#endif
|
||||
#ifndef SEC_FIRMWARE_TARGET_EL
|
||||
#define SEC_FIRMWARE_TARGET_EL 2
|
||||
#endif
|
||||
|
||||
static int sec_firmware_get_data(const void *sec_firmware_img,
|
||||
const void **data, size_t *size)
|
||||
|
||||
@@ -74,6 +74,7 @@ SECTIONS
|
||||
*(._secure.data)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARMV7_PSCI
|
||||
.secure_stack ALIGN(ADDR(.secure_data) + SIZEOF(.secure_data),
|
||||
CONSTANT(COMMONPAGESIZE)) (NOLOAD) :
|
||||
#ifdef __ARMV7_PSCI_STACK_IN_RAM
|
||||
@@ -83,10 +84,10 @@ SECTIONS
|
||||
#endif
|
||||
{
|
||||
KEEP(*(.__secure_stack_start))
|
||||
#ifdef CONFIG_ARMV7_PSCI
|
||||
|
||||
/* Skip addreses for stack */
|
||||
. = . + CONFIG_ARMV7_PSCI_NR_CPUS * ARM_PSCI_STACK_SIZE;
|
||||
#endif
|
||||
|
||||
/* Align end of stack section to page boundary */
|
||||
. = ALIGN(CONSTANT(COMMONPAGESIZE));
|
||||
|
||||
@@ -107,6 +108,8 @@ SECTIONS
|
||||
#ifndef __ARMV7_PSCI_STACK_IN_RAM
|
||||
/* Reset VMA but don't allocate space if we have secure SRAM */
|
||||
. = LOADADDR(.secure_stack);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
.__secure_end : AT(ADDR(.__secure_end)) {
|
||||
|
||||
@@ -133,7 +133,8 @@ dtb-$(CONFIG_ARCH_SOCFPGA) += \
|
||||
socfpga_cyclone5_sr1500.dtb \
|
||||
socfpga_cyclone5_vining_fpga.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_DRA7XX_EVM) += dra72-evm.dtb dra7-evm.dtb
|
||||
dtb-$(CONFIG_TARGET_DRA7XX_EVM) += dra72-evm.dtb dra7-evm.dtb \
|
||||
dra72-evm-revc.dtb
|
||||
dtb-$(CONFIG_TARGET_AM57XX_EVM) += am57xx-beagle-x15.dtb \
|
||||
am572x-idk.dtb
|
||||
dtb-$(CONFIG_TARGET_STV0991) += stv0991.dtb
|
||||
@@ -278,7 +279,12 @@ dtb-$(CONFIG_MACH_SUN9I) += \
|
||||
dtb-$(CONFIG_VF610) += vf500-colibri.dtb \
|
||||
vf610-colibri.dtb \
|
||||
vf610-twr.dtb \
|
||||
pcm052.dtb
|
||||
pcm052.dtb \
|
||||
bk4r1.dtb
|
||||
|
||||
dtb-$(CONFIG_MX6) += imx6ull-14x14-evk.dtb
|
||||
|
||||
dtb-$(CONFIG_MX7) += imx7-colibri.dtb
|
||||
|
||||
dtb-$(CONFIG_SOC_KEYSTONE) += k2hk-evm.dtb \
|
||||
k2l-evm.dtb \
|
||||
|
||||
48
arch/arm/dts/bk4r1.dts
Normal file
48
arch/arm/dts/bk4r1.dts
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright 2016 Toradex AG
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ or X11
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "vf.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Phytec phyCORE-Vybrid";
|
||||
compatible = "phytec,pcm052", "fsl,vf610";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart1;
|
||||
};
|
||||
|
||||
aliases {
|
||||
spi0 = &qspi0;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&qspi0 {
|
||||
bus-num = <0>;
|
||||
num-cs = <2>;
|
||||
status = "okay";
|
||||
|
||||
qflash0: spi_flash@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "spi-flash";
|
||||
spi-max-frequency = <108000000>;
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
qflash1: spi_flash@1 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "spi-flash";
|
||||
spi-max-frequency = <66000000>;
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
513
arch/arm/dts/dra72-evm-common.dtsi
Normal file
513
arch/arm/dts/dra72-evm-common.dtsi
Normal file
@@ -0,0 +1,513 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
#include "dra72x.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart1;
|
||||
tick-timer = &timer2;
|
||||
};
|
||||
|
||||
aliases {
|
||||
display0 = &hdmi0;
|
||||
};
|
||||
|
||||
evm_3v3: fixedregulator-evm_3v3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "evm_3v3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
extcon_usb1: extcon_usb1 {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&pcf_gpio_21 1 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
extcon_usb2: extcon_usb2 {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&pcf_gpio_21 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
hdmi0: connector {
|
||||
compatible = "hdmi-connector";
|
||||
label = "hdmi";
|
||||
|
||||
type = "a";
|
||||
|
||||
port {
|
||||
hdmi_connector_in: endpoint {
|
||||
remote-endpoint = <&tpd12s015_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
tpd12s015: encoder {
|
||||
compatible = "ti,tpd12s015";
|
||||
|
||||
gpios = <&pcf_hdmi 4 GPIO_ACTIVE_HIGH>, /* P4, CT CP HPD */
|
||||
<&pcf_hdmi 5 GPIO_ACTIVE_HIGH>, /* P5, LS OE */
|
||||
<&gpio7 12 GPIO_ACTIVE_HIGH>; /* gpio7_12/sp1_cs2, HPD */
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
|
||||
tpd12s015_in: endpoint {
|
||||
remote-endpoint = <&hdmi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
|
||||
tpd12s015_out: endpoint {
|
||||
remote-endpoint = <&hdmi_connector_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dra7_pmx_core {
|
||||
mmc1_pins_default: mmc1_pins_default {
|
||||
pinctrl-single,pins = <
|
||||
0x354 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_clk.clk */
|
||||
0x358 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_cmd.cmd */
|
||||
0x35c (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat0.dat0 */
|
||||
0x360 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat1.dat1 */
|
||||
0x364 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat2.dat2 */
|
||||
0x368 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat3.dat3 */
|
||||
>;
|
||||
};
|
||||
|
||||
mmc2_pins_default: mmc2_pins_default {
|
||||
pinctrl-single,pins = <
|
||||
0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
|
||||
0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
|
||||
0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
|
||||
0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
|
||||
0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
|
||||
0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
|
||||
0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
|
||||
0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
|
||||
0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
|
||||
0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
|
||||
>;
|
||||
};
|
||||
|
||||
dcan1_pins_default: dcan1_pins_default {
|
||||
pinctrl-single,pins = <
|
||||
0x3d0 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* dcan1_tx */
|
||||
0x418 (PULL_UP | MUX_MODE1) /* wakeup0.dcan1_rx */
|
||||
>;
|
||||
};
|
||||
|
||||
dcan1_pins_sleep: dcan1_pins_sleep {
|
||||
pinctrl-single,pins = <
|
||||
0x3d0 (MUX_MODE15 | PULL_UP) /* dcan1_tx.off */
|
||||
0x418 (MUX_MODE15 | PULL_UP) /* wakeup0.off */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
tps65917: tps65917@58 {
|
||||
compatible = "ti,tps65917";
|
||||
reg = <0x58>;
|
||||
|
||||
interrupts = <GIC_SPI 2 IRQ_TYPE_NONE>; /* IRQ_SYS_1N */
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
ti,system-power-controller;
|
||||
|
||||
tps65917_pmic {
|
||||
compatible = "ti,tps65917-pmic";
|
||||
|
||||
tps65917_regulators: regulators {
|
||||
smps1_reg: smps1 {
|
||||
/* VDD_MPU */
|
||||
regulator-name = "smps1";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
smps2_reg: smps2 {
|
||||
/* VDD_CORE */
|
||||
regulator-name = "smps2";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1060000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
smps3_reg: smps3 {
|
||||
/* VDD_GPU IVA DSPEVE */
|
||||
regulator-name = "smps3";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
smps4_reg: smps4 {
|
||||
/* VDDS1V8 */
|
||||
regulator-name = "smps4";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
smps5_reg: smps5 {
|
||||
/* VDD_DDR */
|
||||
regulator-name = "smps5";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo1_reg: ldo1 {
|
||||
/* LDO1_OUT --> SDIO */
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-allow-bypass;
|
||||
};
|
||||
|
||||
ldo3_reg: ldo3 {
|
||||
/* VDDA_1V8_PHY */
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo5_reg: ldo5 {
|
||||
/* VDDA_1V8_PLL */
|
||||
regulator-name = "ldo5";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo4_reg: ldo4 {
|
||||
/* VDDA_3V_USB: VDDA_USBHS33 */
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
tps65917_power_button {
|
||||
compatible = "ti,palmas-pwrbutton";
|
||||
interrupt-parent = <&tps65917>;
|
||||
interrupts = <1 IRQ_TYPE_NONE>;
|
||||
wakeup-source;
|
||||
ti,palmas-long-press-seconds = <6>;
|
||||
};
|
||||
};
|
||||
|
||||
pcf_gpio_21: gpio@21 {
|
||||
compatible = "ti,pcf8575";
|
||||
u-boot,i2c-offset-len = <0>;
|
||||
reg = <0x21>;
|
||||
lines-initial-states = <0x1408>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c5 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
pcf_hdmi: pcf8575@26 {
|
||||
compatible = "nxp,pcf8575";
|
||||
u-boot,i2c-offset-len = <0>;
|
||||
reg = <0x26>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
/*
|
||||
* initial state is used here to keep the mdio interface
|
||||
* selected on RU89 through SEL_VIN4_MUX_S0, VIN2_S1 and
|
||||
* VIN2_S0 driven high otherwise Ethernet stops working
|
||||
* VIN6_SEL_S0 is low, thus selecting McASP3 over VIN6
|
||||
*/
|
||||
lines-initial-states = <0x0f2b>;
|
||||
|
||||
p1 {
|
||||
/* vin6_sel_s0: high: VIN6, low: audio */
|
||||
gpio-hog;
|
||||
gpios = <1 GPIO_ACTIVE_HIGH>;
|
||||
output-low;
|
||||
line-name = "vin6_sel_s0";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
interrupts-extended = <&crossbar_mpu GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<&dra7_pmx_core 0x3e0>;
|
||||
};
|
||||
|
||||
&elm {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpmc {
|
||||
/*
|
||||
* For the existing IOdelay configuration via U-Boot we don't
|
||||
* support NAND on dra72-evm. Keep it disabled. Enabling it
|
||||
* requires a different configuration by U-Boot.
|
||||
*/
|
||||
status = "disabled";
|
||||
ranges = <0 0 0x08000000 0x01000000>; /* minimum GPMC partition = 16MB */
|
||||
nand@0,0 {
|
||||
/* To use NAND, DIP switch SW5 must be set like so:
|
||||
* SW5.1 (NAND_SELn) = ON (LOW)
|
||||
* SW5.9 (GPMC_WPN) = OFF (HIGH)
|
||||
*/
|
||||
compatible = "ti,omap2-nand";
|
||||
reg = <0 0 4>; /* device IO registers */
|
||||
interrupt-parent = <&gpmc>;
|
||||
interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
|
||||
<1 IRQ_TYPE_NONE>; /* termcount */
|
||||
rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 pin */ /* device IO registers */
|
||||
ti,nand-ecc-opt = "bch8";
|
||||
ti,elm-id = <&elm>;
|
||||
nand-bus-width = <16>;
|
||||
gpmc,device-width = <2>;
|
||||
gpmc,sync-clk-ps = <0>;
|
||||
gpmc,cs-on-ns = <0>;
|
||||
gpmc,cs-rd-off-ns = <80>;
|
||||
gpmc,cs-wr-off-ns = <80>;
|
||||
gpmc,adv-on-ns = <0>;
|
||||
gpmc,adv-rd-off-ns = <60>;
|
||||
gpmc,adv-wr-off-ns = <60>;
|
||||
gpmc,we-on-ns = <10>;
|
||||
gpmc,we-off-ns = <50>;
|
||||
gpmc,oe-on-ns = <4>;
|
||||
gpmc,oe-off-ns = <40>;
|
||||
gpmc,access-ns = <40>;
|
||||
gpmc,wr-access-ns = <80>;
|
||||
gpmc,rd-cycle-ns = <80>;
|
||||
gpmc,wr-cycle-ns = <80>;
|
||||
gpmc,bus-turnaround-ns = <0>;
|
||||
gpmc,cycle2cycle-delay-ns = <0>;
|
||||
gpmc,clk-activation-ns = <0>;
|
||||
gpmc,wait-monitoring-ns = <0>;
|
||||
gpmc,wr-data-mux-bus-ns = <0>;
|
||||
/* MTD partition table */
|
||||
/* All SPL-* partitions are sized to minimal length
|
||||
* which can be independently programmable. For
|
||||
* NAND flash this is equal to size of erase-block */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
partition@0 {
|
||||
label = "NAND.SPL";
|
||||
reg = <0x00000000 0x000020000>;
|
||||
};
|
||||
partition@1 {
|
||||
label = "NAND.SPL.backup1";
|
||||
reg = <0x00020000 0x00020000>;
|
||||
};
|
||||
partition@2 {
|
||||
label = "NAND.SPL.backup2";
|
||||
reg = <0x00040000 0x00020000>;
|
||||
};
|
||||
partition@3 {
|
||||
label = "NAND.SPL.backup3";
|
||||
reg = <0x00060000 0x00020000>;
|
||||
};
|
||||
partition@4 {
|
||||
label = "NAND.u-boot-spl-os";
|
||||
reg = <0x00080000 0x00040000>;
|
||||
};
|
||||
partition@5 {
|
||||
label = "NAND.u-boot";
|
||||
reg = <0x000c0000 0x00100000>;
|
||||
};
|
||||
partition@6 {
|
||||
label = "NAND.u-boot-env";
|
||||
reg = <0x001c0000 0x00020000>;
|
||||
};
|
||||
partition@7 {
|
||||
label = "NAND.u-boot-env.backup1";
|
||||
reg = <0x001e0000 0x00020000>;
|
||||
};
|
||||
partition@8 {
|
||||
label = "NAND.kernel";
|
||||
reg = <0x00200000 0x00800000>;
|
||||
};
|
||||
partition@9 {
|
||||
label = "NAND.file-system";
|
||||
reg = <0x00a00000 0x0f600000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&usb2_phy1 {
|
||||
phy-supply = <&ldo4_reg>;
|
||||
};
|
||||
|
||||
&usb2_phy2 {
|
||||
phy-supply = <&ldo4_reg>;
|
||||
};
|
||||
|
||||
&omap_dwc3_1 {
|
||||
extcon = <&extcon_usb1>;
|
||||
};
|
||||
|
||||
&omap_dwc3_2 {
|
||||
extcon = <&extcon_usb2>;
|
||||
};
|
||||
|
||||
&usb1 {
|
||||
dr_mode = "otg";
|
||||
};
|
||||
|
||||
&usb2 {
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc1_pins_default>;
|
||||
vmmc_aux-supply = <&ldo1_reg>;
|
||||
bus-width = <4>;
|
||||
/*
|
||||
* SDCD signal is not being used here - using the fact that GPIO mode
|
||||
* is a viable alternative
|
||||
*/
|
||||
cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>;
|
||||
max-frequency = <192000000>;
|
||||
};
|
||||
|
||||
&mmc2 {
|
||||
/* SW5-3 in ON position */
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc2_pins_default>;
|
||||
|
||||
vmmc-supply = <&evm_3v3>;
|
||||
bus-width = <8>;
|
||||
ti,non-removable;
|
||||
max-frequency = <192000000>;
|
||||
};
|
||||
|
||||
&mac {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&dcan1 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&qspi {
|
||||
status = "okay";
|
||||
|
||||
spi-max-frequency = <76800000>;
|
||||
m25p80@0 {
|
||||
compatible = "s25fl256s1", "spi-flash";
|
||||
spi-max-frequency = <64000000>;
|
||||
reg = <0>;
|
||||
spi-tx-bus-width = <1>;
|
||||
spi-rx-bus-width = <4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
/* MTD partition table.
|
||||
* The ROM checks the first four physical blocks
|
||||
* for a valid file to boot and the flash here is
|
||||
* 64KiB block size.
|
||||
*/
|
||||
partition@0 {
|
||||
label = "QSPI.SPL";
|
||||
reg = <0x00000000 0x000010000>;
|
||||
};
|
||||
partition@1 {
|
||||
label = "QSPI.SPL.backup1";
|
||||
reg = <0x00010000 0x00010000>;
|
||||
};
|
||||
partition@2 {
|
||||
label = "QSPI.SPL.backup2";
|
||||
reg = <0x00020000 0x00010000>;
|
||||
};
|
||||
partition@3 {
|
||||
label = "QSPI.SPL.backup3";
|
||||
reg = <0x00030000 0x00010000>;
|
||||
};
|
||||
partition@4 {
|
||||
label = "QSPI.u-boot";
|
||||
reg = <0x00040000 0x00100000>;
|
||||
};
|
||||
partition@5 {
|
||||
label = "QSPI.u-boot-spl-os";
|
||||
reg = <0x00140000 0x00080000>;
|
||||
};
|
||||
partition@6 {
|
||||
label = "QSPI.u-boot-env";
|
||||
reg = <0x001c0000 0x00010000>;
|
||||
};
|
||||
partition@7 {
|
||||
label = "QSPI.u-boot-env.backup1";
|
||||
reg = <0x001d0000 0x0010000>;
|
||||
};
|
||||
partition@8 {
|
||||
label = "QSPI.kernel";
|
||||
reg = <0x001e0000 0x0800000>;
|
||||
};
|
||||
partition@9 {
|
||||
label = "QSPI.file-system";
|
||||
reg = <0x009e0000 0x01620000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dss {
|
||||
status = "ok";
|
||||
|
||||
vdda_video-supply = <&ldo5_reg>;
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "ok";
|
||||
|
||||
port {
|
||||
hdmi_out: endpoint {
|
||||
remote-endpoint = <&tpd12s015_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
70
arch/arm/dts/dra72-evm-revc.dts
Normal file
70
arch/arm/dts/dra72-evm-revc.dts
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#include "dra72-evm-common.dtsi"
|
||||
#include <dt-bindings/net/ti-dp83867.h>
|
||||
|
||||
/ {
|
||||
model = "TI DRA722 Rev C EVM";
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x80000000 0x0 0x80000000>; /* 2GB */
|
||||
};
|
||||
};
|
||||
|
||||
&tps65917_regulators {
|
||||
ldo2_reg: ldo2 {
|
||||
/* LDO2_OUT --> VDDA_1V8_PHY2 */
|
||||
regulator-name = "ldo2";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
vdda_video-supply = <&ldo2_reg>;
|
||||
};
|
||||
|
||||
&mac {
|
||||
mode-gpios = <&pcf_gpio_21 4 GPIO_ACTIVE_LOW>,
|
||||
<&pcf_hdmi 9 GPIO_ACTIVE_LOW>, /* P11 */
|
||||
<&pcf_hdmi 10 GPIO_ACTIVE_LOW>; /* P12 */
|
||||
dual_emac;
|
||||
};
|
||||
|
||||
&cpsw_emac0 {
|
||||
phy-handle = <&dp83867_0>;
|
||||
phy-mode = "rgmii-id";
|
||||
dual_emac_res_vlan = <1>;
|
||||
};
|
||||
|
||||
&cpsw_emac1 {
|
||||
phy-handle = <&dp83867_1>;
|
||||
phy-mode = "rgmii-id";
|
||||
dual_emac_res_vlan = <2>;
|
||||
};
|
||||
|
||||
&davinci_mdio {
|
||||
dp83867_0: ethernet-phy@2 {
|
||||
reg = <2>;
|
||||
ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
|
||||
ti,tx-internal-delay = <DP83867_RGMIIDCTL_250_PS>;
|
||||
ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>;
|
||||
ti,min-output-imepdance;
|
||||
};
|
||||
|
||||
dp83867_1: ethernet-phy@3 {
|
||||
reg = <3>;
|
||||
ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
|
||||
ti,tx-internal-delay = <DP83867_RGMIIDCTL_250_PS>;
|
||||
ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>;
|
||||
ti,min-output-imepdance;
|
||||
};
|
||||
};
|
||||
@@ -5,674 +5,24 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
#include "dra72x.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dra72-evm-common.dtsi>
|
||||
|
||||
/ {
|
||||
model = "TI DRA722";
|
||||
compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart1;
|
||||
tick-timer = &timer2;
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x40000000>; /* 1024 MB */
|
||||
};
|
||||
|
||||
aliases {
|
||||
display0 = &hdmi0;
|
||||
};
|
||||
|
||||
evm_3v3: fixedregulator-evm_3v3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "evm_3v3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
evm_3v3_sd: fixedregulator-sd {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "evm_3v3_sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
enable-active-high;
|
||||
gpio = <&pcf_gpio_21 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
extcon_usb1: extcon_usb1 {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&pcf_gpio_21 1 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
extcon_usb2: extcon_usb2 {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&pcf_gpio_21 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
hdmi0: connector {
|
||||
compatible = "hdmi-connector";
|
||||
label = "hdmi";
|
||||
|
||||
type = "a";
|
||||
|
||||
port {
|
||||
hdmi_connector_in: endpoint {
|
||||
remote-endpoint = <&tpd12s015_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
tpd12s015: encoder {
|
||||
compatible = "ti,tpd12s015";
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&tpd12s015_pins>;
|
||||
|
||||
gpios = <&pcf_hdmi 4 GPIO_ACTIVE_HIGH>, /* P4, CT CP HPD */
|
||||
<&pcf_hdmi 5 GPIO_ACTIVE_HIGH>, /* P5, LS OE */
|
||||
<&gpio7 12 GPIO_ACTIVE_HIGH>; /* gpio7_12/sp1_cs2, HPD */
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
|
||||
tpd12s015_in: endpoint {
|
||||
remote-endpoint = <&hdmi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
|
||||
tpd12s015_out: endpoint {
|
||||
remote-endpoint = <&hdmi_connector_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dra7_pmx_core {
|
||||
i2c1_pins: pinmux_i2c1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x400 (PIN_INPUT | MUX_MODE0) /* i2c1_sda.i2c1_sda */
|
||||
0x404 (PIN_INPUT | MUX_MODE0) /* i2c1_scl.i2c1_scl */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c5_pins: pinmux_i2c5_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x2b4 (PIN_INPUT | MUX_MODE10) /* mcasp1_axr0.i2c5_sda */
|
||||
0x2b8 (PIN_INPUT | MUX_MODE10) /* mcasp1_axr1.i2c5_scl */
|
||||
>;
|
||||
};
|
||||
|
||||
nand_default: nand_default {
|
||||
pinctrl-single,pins = <
|
||||
0x0 (PIN_INPUT | MUX_MODE0) /* gpmc_ad0 */
|
||||
0x4 (PIN_INPUT | MUX_MODE0) /* gpmc_ad1 */
|
||||
0x8 (PIN_INPUT | MUX_MODE0) /* gpmc_ad2 */
|
||||
0xc (PIN_INPUT | MUX_MODE0) /* gpmc_ad3 */
|
||||
0x10 (PIN_INPUT | MUX_MODE0) /* gpmc_ad4 */
|
||||
0x14 (PIN_INPUT | MUX_MODE0) /* gpmc_ad5 */
|
||||
0x18 (PIN_INPUT | MUX_MODE0) /* gpmc_ad6 */
|
||||
0x1c (PIN_INPUT | MUX_MODE0) /* gpmc_ad7 */
|
||||
0x20 (PIN_INPUT | MUX_MODE0) /* gpmc_ad8 */
|
||||
0x24 (PIN_INPUT | MUX_MODE0) /* gpmc_ad9 */
|
||||
0x28 (PIN_INPUT | MUX_MODE0) /* gpmc_ad10 */
|
||||
0x2c (PIN_INPUT | MUX_MODE0) /* gpmc_ad11 */
|
||||
0x30 (PIN_INPUT | MUX_MODE0) /* gpmc_ad12 */
|
||||
0x34 (PIN_INPUT | MUX_MODE0) /* gpmc_ad13 */
|
||||
0x38 (PIN_INPUT | MUX_MODE0) /* gpmc_ad14 */
|
||||
0x3c (PIN_INPUT | MUX_MODE0) /* gpmc_ad15 */
|
||||
0xb4 (PIN_OUTPUT | MUX_MODE0) /* gpmc_cs0 */
|
||||
0xc4 (PIN_OUTPUT | MUX_MODE0) /* gpmc_advn_ale */
|
||||
0xcc (PIN_OUTPUT | MUX_MODE0) /* gpmc_wen */
|
||||
0xc8 (PIN_OUTPUT | MUX_MODE0) /* gpmc_oen_ren */
|
||||
0xd0 (PIN_OUTPUT | MUX_MODE0) /* gpmc_ben0 */
|
||||
0xd8 (PIN_INPUT | MUX_MODE0) /* gpmc_wait0 */
|
||||
>;
|
||||
};
|
||||
|
||||
usb1_pins: pinmux_usb1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x280 (PIN_INPUT_SLEW | MUX_MODE0) /* usb1_drvvbus */
|
||||
>;
|
||||
};
|
||||
|
||||
usb2_pins: pinmux_usb2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x284 (PIN_INPUT_SLEW | MUX_MODE0) /* usb2_drvvbus */
|
||||
>;
|
||||
};
|
||||
|
||||
tps65917_pins_default: tps65917_pins_default {
|
||||
pinctrl-single,pins = <
|
||||
0x424 (PIN_INPUT_PULLUP | MUX_MODE1) /* wakeup3.sys_nirq1 */
|
||||
>;
|
||||
};
|
||||
|
||||
mmc1_pins_default: mmc1_pins_default {
|
||||
pinctrl-single,pins = <
|
||||
0x36c (PIN_INPUT | MUX_MODE14) /* mmc1sdcd.gpio219 */
|
||||
0x354 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_clk.clk */
|
||||
0x358 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_cmd.cmd */
|
||||
0x35c (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat0.dat0 */
|
||||
0x360 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat1.dat1 */
|
||||
0x364 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat2.dat2 */
|
||||
0x368 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat3.dat3 */
|
||||
>;
|
||||
};
|
||||
|
||||
mmc2_pins_default: mmc2_pins_default {
|
||||
pinctrl-single,pins = <
|
||||
0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
|
||||
0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
|
||||
0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
|
||||
0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
|
||||
0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
|
||||
0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
|
||||
0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
|
||||
0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
|
||||
0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
|
||||
0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
|
||||
>;
|
||||
};
|
||||
|
||||
dcan1_pins_default: dcan1_pins_default {
|
||||
pinctrl-single,pins = <
|
||||
0x3d0 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* dcan1_tx */
|
||||
0x418 (PULL_UP | MUX_MODE1) /* wakeup0.dcan1_rx */
|
||||
>;
|
||||
};
|
||||
|
||||
dcan1_pins_sleep: dcan1_pins_sleep {
|
||||
pinctrl-single,pins = <
|
||||
0x3d0 (MUX_MODE15 | PULL_UP) /* dcan1_tx.off */
|
||||
0x418 (MUX_MODE15 | PULL_UP) /* wakeup0.off */
|
||||
>;
|
||||
};
|
||||
|
||||
qspi1_pins: pinmux_qspi1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x74 (PIN_OUTPUT | MUX_MODE1) /* gpmc_a13.qspi1_rtclk */
|
||||
0x78 (PIN_INPUT | MUX_MODE1) /* gpmc_a14.qspi1_d3 */
|
||||
0x7c (PIN_INPUT | MUX_MODE1) /* gpmc_a15.qspi1_d2 */
|
||||
0x80 (PIN_INPUT | MUX_MODE1) /* gpmc_a16.qspi1_d1 */
|
||||
0x84 (PIN_INPUT | MUX_MODE1) /* gpmc_a17.qspi1_d0 */
|
||||
0x88 (PIN_OUTPUT | MUX_MODE1) /* qpmc_a18.qspi1_sclk */
|
||||
0xb8 (PIN_OUTPUT | MUX_MODE1) /* gpmc_cs2.qspi1_cs0 */
|
||||
>;
|
||||
};
|
||||
|
||||
hdmi_pins: pinmux_hdmi_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x408 (PIN_INPUT | MUX_MODE1) /* i2c2_sda.hdmi1_ddc_scl */
|
||||
0x40c (PIN_INPUT | MUX_MODE1) /* i2c2_scl.hdmi1_ddc_sda */
|
||||
>;
|
||||
};
|
||||
|
||||
tpd12s015_pins: pinmux_tpd12s015_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x3b8 (PIN_INPUT_PULLDOWN | MUX_MODE14) /* gpio7_12 HPD */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <400000>;
|
||||
|
||||
tps65917: tps65917@58 {
|
||||
compatible = "ti,tps65917";
|
||||
reg = <0x58>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&tps65917_pins_default>;
|
||||
|
||||
interrupts = <GIC_SPI 2 IRQ_TYPE_NONE>; /* IRQ_SYS_1N */
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
ti,system-power-controller;
|
||||
|
||||
tps65917_pmic {
|
||||
compatible = "ti,tps65917-pmic";
|
||||
|
||||
regulators {
|
||||
smps1_reg: smps1 {
|
||||
/* VDD_MPU */
|
||||
regulator-name = "smps1";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
smps2_reg: smps2 {
|
||||
/* VDD_CORE */
|
||||
regulator-name = "smps2";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1060000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
smps3_reg: smps3 {
|
||||
/* VDD_GPU IVA DSPEVE */
|
||||
regulator-name = "smps3";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
smps4_reg: smps4 {
|
||||
/* VDDS1V8 */
|
||||
regulator-name = "smps4";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
smps5_reg: smps5 {
|
||||
/* VDD_DDR */
|
||||
regulator-name = "smps5";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo1_reg: ldo1 {
|
||||
/* LDO1_OUT --> SDIO */
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo2_reg: ldo2 {
|
||||
/* LDO2_OUT --> TP1017 (UNUSED) */
|
||||
regulator-name = "ldo2";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
ldo3_reg: ldo3 {
|
||||
/* VDDA_1V8_PHY */
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo5_reg: ldo5 {
|
||||
/* VDDA_1V8_PLL */
|
||||
regulator-name = "ldo5";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo4_reg: ldo4 {
|
||||
/* VDDA_3V_USB: VDDA_USBHS33 */
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
tps65917_power_button {
|
||||
compatible = "ti,palmas-pwrbutton";
|
||||
interrupt-parent = <&tps65917>;
|
||||
interrupts = <1 IRQ_TYPE_NONE>;
|
||||
wakeup-source;
|
||||
ti,palmas-long-press-seconds = <6>;
|
||||
};
|
||||
};
|
||||
|
||||
pcf_gpio_21: gpio@21 {
|
||||
compatible = "ti,pcf8575";
|
||||
reg = <0x21>;
|
||||
lines-initial-states = <0x1408>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&gpio6>;
|
||||
interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
u-boot,i2c-offset-len = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c5 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c5_pins>;
|
||||
clock-frequency = <400000>;
|
||||
|
||||
pcf_hdmi: pcf8575@26 {
|
||||
compatible = "nxp,pcf8575";
|
||||
reg = <0x26>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
/*
|
||||
* initial state is used here to keep the mdio interface
|
||||
* selected on RU89 through SEL_VIN4_MUX_S0, VIN2_S1 and
|
||||
* VIN2_S0 driven high otherwise Ethernet stops working
|
||||
* VIN6_SEL_S0 is low, thus selecting McASP3 over VIN6
|
||||
*/
|
||||
lines-initial-states = <0x0f2b>;
|
||||
u-boot,i2c-offset-len = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&elm {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpmc {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&nand_default>;
|
||||
ranges = <0 0 0 0x01000000>; /* minimum GPMC partition = 16MB */
|
||||
nand@0,0 {
|
||||
/* To use NAND, DIP switch SW5 must be set like so:
|
||||
* SW5.1 (NAND_SELn) = ON (LOW)
|
||||
* SW5.9 (GPMC_WPN) = OFF (HIGH)
|
||||
*/
|
||||
reg = <0 0 4>; /* device IO registers */
|
||||
ti,nand-ecc-opt = "bch8";
|
||||
ti,elm-id = <&elm>;
|
||||
nand-bus-width = <16>;
|
||||
gpmc,device-width = <2>;
|
||||
gpmc,sync-clk-ps = <0>;
|
||||
gpmc,cs-on-ns = <0>;
|
||||
gpmc,cs-rd-off-ns = <80>;
|
||||
gpmc,cs-wr-off-ns = <80>;
|
||||
gpmc,adv-on-ns = <0>;
|
||||
gpmc,adv-rd-off-ns = <60>;
|
||||
gpmc,adv-wr-off-ns = <60>;
|
||||
gpmc,we-on-ns = <10>;
|
||||
gpmc,we-off-ns = <50>;
|
||||
gpmc,oe-on-ns = <4>;
|
||||
gpmc,oe-off-ns = <40>;
|
||||
gpmc,access-ns = <40>;
|
||||
gpmc,wr-access-ns = <80>;
|
||||
gpmc,rd-cycle-ns = <80>;
|
||||
gpmc,wr-cycle-ns = <80>;
|
||||
gpmc,bus-turnaround-ns = <0>;
|
||||
gpmc,cycle2cycle-delay-ns = <0>;
|
||||
gpmc,clk-activation-ns = <0>;
|
||||
gpmc,wait-monitoring-ns = <0>;
|
||||
gpmc,wr-data-mux-bus-ns = <0>;
|
||||
/* MTD partition table */
|
||||
/* All SPL-* partitions are sized to minimal length
|
||||
* which can be independently programmable. For
|
||||
* NAND flash this is equal to size of erase-block */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
partition@0 {
|
||||
label = "NAND.SPL";
|
||||
reg = <0x00000000 0x000020000>;
|
||||
};
|
||||
partition@1 {
|
||||
label = "NAND.SPL.backup1";
|
||||
reg = <0x00020000 0x00020000>;
|
||||
};
|
||||
partition@2 {
|
||||
label = "NAND.SPL.backup2";
|
||||
reg = <0x00040000 0x00020000>;
|
||||
};
|
||||
partition@3 {
|
||||
label = "NAND.SPL.backup3";
|
||||
reg = <0x00060000 0x00020000>;
|
||||
};
|
||||
partition@4 {
|
||||
label = "NAND.u-boot-spl-os";
|
||||
reg = <0x00080000 0x00040000>;
|
||||
};
|
||||
partition@5 {
|
||||
label = "NAND.u-boot";
|
||||
reg = <0x000c0000 0x00100000>;
|
||||
};
|
||||
partition@6 {
|
||||
label = "NAND.u-boot-env";
|
||||
reg = <0x001c0000 0x00020000>;
|
||||
};
|
||||
partition@7 {
|
||||
label = "NAND.u-boot-env.backup1";
|
||||
reg = <0x001e0000 0x00020000>;
|
||||
};
|
||||
partition@8 {
|
||||
label = "NAND.kernel";
|
||||
reg = <0x00200000 0x00800000>;
|
||||
};
|
||||
partition@9 {
|
||||
label = "NAND.file-system";
|
||||
reg = <0x00a00000 0x0f600000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&usb2_phy1 {
|
||||
phy-supply = <&ldo4_reg>;
|
||||
};
|
||||
|
||||
&usb2_phy2 {
|
||||
phy-supply = <&ldo4_reg>;
|
||||
};
|
||||
|
||||
&omap_dwc3_1 {
|
||||
extcon = <&extcon_usb1>;
|
||||
};
|
||||
|
||||
&omap_dwc3_2 {
|
||||
extcon = <&extcon_usb2>;
|
||||
};
|
||||
|
||||
&usb1 {
|
||||
dr_mode = "peripheral";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb1_pins>;
|
||||
};
|
||||
|
||||
&usb2 {
|
||||
dr_mode = "host";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb2_pins>;
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc1_pins_default>;
|
||||
|
||||
vmmc_aux-supply = <&ldo1_reg>;
|
||||
vmmc-supply = <&evm_3v3_sd>;
|
||||
bus-width = <4>;
|
||||
/*
|
||||
* SDCD signal is not being used here - using the fact that GPIO mode
|
||||
* is a viable alternative
|
||||
*/
|
||||
cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&mmc2 {
|
||||
/* SW5-3 in ON position */
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc2_pins_default>;
|
||||
|
||||
vmmc-supply = <&evm_3v3>;
|
||||
bus-width = <8>;
|
||||
ti,non-removable;
|
||||
};
|
||||
|
||||
&dra7_pmx_core {
|
||||
cpsw_default: cpsw_default {
|
||||
pinctrl-single,pins = <
|
||||
/* Slave 2 */
|
||||
0x198 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d12.rgmii1_txc */
|
||||
0x19c (PIN_OUTPUT | MUX_MODE3) /* vin2a_d13.rgmii1_tctl */
|
||||
0x1a0 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d14.rgmii1_td3 */
|
||||
0x1a4 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d15.rgmii1_td2 */
|
||||
0x1a8 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d16.rgmii1_td1 */
|
||||
0x1ac (PIN_OUTPUT | MUX_MODE3) /* vin2a_d17.rgmii1_td0 */
|
||||
0x1b0 (PIN_INPUT | MUX_MODE3) /* vin2a_d18.rgmii1_rclk */
|
||||
0x1b4 (PIN_INPUT | MUX_MODE3) /* vin2a_d19.rgmii1_rctl */
|
||||
0x1b8 (PIN_INPUT | MUX_MODE3) /* vin2a_d20.rgmii1_rd3 */
|
||||
0x1bc (PIN_INPUT | MUX_MODE3) /* vin2a_d21.rgmii1_rd2 */
|
||||
0x1c0 (PIN_INPUT | MUX_MODE3) /* vin2a_d22.rgmii1_rd1 */
|
||||
0x1c4 (PIN_INPUT | MUX_MODE3) /* vin2a_d23.rgmii1_rd0 */
|
||||
>;
|
||||
|
||||
};
|
||||
|
||||
cpsw_sleep: cpsw_sleep {
|
||||
pinctrl-single,pins = <
|
||||
/* Slave 2 */
|
||||
0x198 (MUX_MODE15)
|
||||
0x19c (MUX_MODE15)
|
||||
0x1a0 (MUX_MODE15)
|
||||
0x1a4 (MUX_MODE15)
|
||||
0x1a8 (MUX_MODE15)
|
||||
0x1ac (MUX_MODE15)
|
||||
0x1b0 (MUX_MODE15)
|
||||
0x1b4 (MUX_MODE15)
|
||||
0x1b8 (MUX_MODE15)
|
||||
0x1bc (MUX_MODE15)
|
||||
0x1c0 (MUX_MODE15)
|
||||
0x1c4 (MUX_MODE15)
|
||||
>;
|
||||
};
|
||||
|
||||
davinci_mdio_default: davinci_mdio_default {
|
||||
pinctrl-single,pins = <
|
||||
/* MDIO */
|
||||
0x23c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_d.mdio_d */
|
||||
0x240 (PIN_INPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
|
||||
>;
|
||||
};
|
||||
|
||||
davinci_mdio_sleep: davinci_mdio_sleep {
|
||||
pinctrl-single,pins = <
|
||||
0x23c (MUX_MODE15)
|
||||
0x240 (MUX_MODE15)
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&mac {
|
||||
status = "okay";
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&cpsw_default>;
|
||||
pinctrl-1 = <&cpsw_sleep>;
|
||||
mode-gpios = <&pcf_gpio_21 4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&cpsw_emac0 {
|
||||
phy_id = <&davinci_mdio>, <3>;
|
||||
phy-mode = "rgmii";
|
||||
};
|
||||
|
||||
&davinci_mdio {
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&davinci_mdio_default>;
|
||||
pinctrl-1 = <&davinci_mdio_sleep>;
|
||||
};
|
||||
|
||||
&dcan1 {
|
||||
status = "ok";
|
||||
pinctrl-names = "default", "sleep", "active";
|
||||
pinctrl-0 = <&dcan1_pins_sleep>;
|
||||
pinctrl-1 = <&dcan1_pins_sleep>;
|
||||
pinctrl-2 = <&dcan1_pins_default>;
|
||||
};
|
||||
|
||||
&qspi {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&qspi1_pins>;
|
||||
|
||||
spi-max-frequency = <76800000>;
|
||||
m25p80@0 {
|
||||
compatible = "s25fl256s1","spi-flash";
|
||||
spi-max-frequency = <64000000>;
|
||||
reg = <0>;
|
||||
spi-tx-bus-width = <1>;
|
||||
spi-rx-bus-width = <4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
/* MTD partition table.
|
||||
* The ROM checks the first four physical blocks
|
||||
* for a valid file to boot and the flash here is
|
||||
* 64KiB block size.
|
||||
*/
|
||||
partition@0 {
|
||||
label = "QSPI.SPL";
|
||||
reg = <0x00000000 0x000010000>;
|
||||
};
|
||||
partition@1 {
|
||||
label = "QSPI.SPL.backup1";
|
||||
reg = <0x00010000 0x00010000>;
|
||||
};
|
||||
partition@2 {
|
||||
label = "QSPI.SPL.backup2";
|
||||
reg = <0x00020000 0x00010000>;
|
||||
};
|
||||
partition@3 {
|
||||
label = "QSPI.SPL.backup3";
|
||||
reg = <0x00030000 0x00010000>;
|
||||
};
|
||||
partition@4 {
|
||||
label = "QSPI.u-boot";
|
||||
reg = <0x00040000 0x00100000>;
|
||||
};
|
||||
partition@5 {
|
||||
label = "QSPI.u-boot-spl-os";
|
||||
reg = <0x00140000 0x00080000>;
|
||||
};
|
||||
partition@6 {
|
||||
label = "QSPI.u-boot-env";
|
||||
reg = <0x001c0000 0x00010000>;
|
||||
};
|
||||
partition@7 {
|
||||
label = "QSPI.u-boot-env.backup1";
|
||||
reg = <0x001d0000 0x0010000>;
|
||||
};
|
||||
partition@8 {
|
||||
label = "QSPI.kernel";
|
||||
reg = <0x001e0000 0x0800000>;
|
||||
};
|
||||
partition@9 {
|
||||
label = "QSPI.file-system";
|
||||
reg = <0x009e0000 0x01620000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dss {
|
||||
status = "ok";
|
||||
|
||||
@@ -680,15 +30,9 @@
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "ok";
|
||||
vdda-supply = <&ldo3_reg>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdmi_pins>;
|
||||
|
||||
port {
|
||||
hdmi_out: endpoint {
|
||||
remote-endpoint = <&tpd12s015_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&mac {
|
||||
mode-gpios = <&pcf_gpio_21 4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
@@ -215,5 +215,26 @@
|
||||
big-endian;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb0: usb3@2f00000 {
|
||||
compatible = "fsl,layerscape-dwc3";
|
||||
reg = <0x0 0x2f00000 0x0 0x10000>;
|
||||
interrupts = <0 60 0x4>;
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
usb1: usb3@3000000 {
|
||||
compatible = "fsl,layerscape-dwc3";
|
||||
reg = <0x0 0x3000000 0x0 0x10000>;
|
||||
interrupts = <0 61 0x4>;
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
usb2: usb3@3100000 {
|
||||
compatible = "fsl,layerscape-dwc3";
|
||||
reg = <0x0 0x3100000 0x0 0x10000>;
|
||||
interrupts = <0 63 0x4>;
|
||||
dr_mode = "host";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -75,4 +75,18 @@
|
||||
reg-names = "QuadSPI", "QuadSPI-memory";
|
||||
num-cs = <4>;
|
||||
};
|
||||
|
||||
usb0: usb3@3100000 {
|
||||
compatible = "fsl,layerscape-dwc3";
|
||||
reg = <0x0 0x3100000 0x0 0x10000>;
|
||||
interrupts = <0 80 0x4>; /* Level high type */
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
usb1: usb3@3110000 {
|
||||
compatible = "fsl,layerscape-dwc3";
|
||||
reg = <0x0 0x3110000 0x0 0x10000>;
|
||||
interrupts = <0 81 0x4>; /* Level high type */
|
||||
dr_mode = "host";
|
||||
};
|
||||
};
|
||||
|
||||
938
arch/arm/dts/imx6ul-pinfunc.h
Normal file
938
arch/arm/dts/imx6ul-pinfunc.h
Normal file
@@ -0,0 +1,938 @@
|
||||
/*
|
||||
* Copyright (C) 2015 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __DTS_IMX6UL_PINFUNC_H
|
||||
#define __DTS_IMX6UL_PINFUNC_H
|
||||
|
||||
/*
|
||||
* The pin function ID is a tuple of
|
||||
* <mux_reg conf_reg input_reg mux_mode input_val>
|
||||
*/
|
||||
#define MX6UL_PAD_BOOT_MODE0__GPIO5_IO10 0x0014 0x02a0 0x0000 5 0
|
||||
#define MX6UL_PAD_BOOT_MODE1__GPIO5_IO11 0x0018 0x02a4 0x0000 5 0
|
||||
|
||||
#define MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00 0x001c 0x02a8 0x0000 5 0
|
||||
#define MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x0020 0x02ac 0x0000 5 0
|
||||
#define MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x0024 0x02b0 0x0000 5 0
|
||||
#define MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x0028 0x02b4 0x0000 5 0
|
||||
#define MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x002c 0x02b8 0x0000 5 0
|
||||
#define MX6UL_PAD_SNVS_TAMPER5__GPIO5_IO05 0x0030 0x02bc 0x0000 5 0
|
||||
#define MX6UL_PAD_SNVS_TAMPER6__GPIO5_IO06 0x0034 0x02c0 0x0000 5 0
|
||||
#define MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x0038 0x02c4 0x0000 5 0
|
||||
#define MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x003c 0x02c8 0x0000 5 0
|
||||
#define MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09 0x0040 0x02cc 0x0000 5 0
|
||||
|
||||
#define MX6UL_PAD_JTAG_MOD__SJC_MOD 0x0044 0x02d0 0x0000 0 0
|
||||
#define MX6UL_PAD_JTAG_MOD__GPT2_CLK 0x0044 0x02d0 0x05a0 1 0
|
||||
#define MX6UL_PAD_JTAG_MOD__SPDIF_OUT 0x0044 0x02d0 0x0000 2 0
|
||||
#define MX6UL_PAD_JTAG_MOD__ENET1_REF_CLK_25M 0x0044 0x02d0 0x0000 3 0
|
||||
#define MX6UL_PAD_JTAG_MOD__CCM_PMIC_RDY 0x0044 0x02d0 0x04c0 4 0
|
||||
#define MX6UL_PAD_JTAG_MOD__GPIO1_IO10 0x0044 0x02d0 0x0000 5 0
|
||||
#define MX6UL_PAD_JTAG_MOD__SDMA_EXT_EVENT00 0x0044 0x02d0 0x0000 6 0
|
||||
#define MX6UL_PAD_JTAG_TMS__SJC_TMS 0x0048 0x02d4 0x0000 0 0
|
||||
#define MX6UL_PAD_JTAG_TMS__GPT2_CAPTURE1 0x0048 0x02d4 0x0598 1 0
|
||||
#define MX6UL_PAD_JTAG_TMS__SAI2_MCLK 0x0048 0x02d4 0x0000 2 0
|
||||
#define MX6UL_PAD_JTAG_TMS__CCM_CLKO1 0x0048 0x02d4 0x0000 3 0
|
||||
#define MX6UL_PAD_JTAG_TMS__CCM_WAIT 0x0048 0x02d4 0x0000 4 0
|
||||
#define MX6UL_PAD_JTAG_TMS__GPIO1_IO11 0x0048 0x02d4 0x0000 5 0
|
||||
#define MX6UL_PAD_JTAG_TMS__SDMA_EXT_EVENT01 0x0048 0x02d4 0x0000 6 0
|
||||
#define MX6UL_PAD_JTAG_TMS__EPIT1_OUT 0x0048 0x02d4 0x0000 8 0
|
||||
#define MX6UL_PAD_JTAG_TDO__SJC_TDO 0x004c 0x02d8 0x0000 0 0
|
||||
#define MX6UL_PAD_JTAG_TDO__GPT2_CAPTURE2 0x004c 0x02d8 0x059c 1 0
|
||||
#define MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC 0x004c 0x02d8 0x05fc 2 0
|
||||
#define MX6UL_PAD_JTAG_TDO__CCM_CLKO2 0x004c 0x02d8 0x0000 3 0
|
||||
#define MX6UL_PAD_JTAG_TDO__CCM_STOP 0x004c 0x02d8 0x0000 4 0
|
||||
#define MX6UL_PAD_JTAG_TDO__GPIO1_IO12 0x004c 0x02d8 0x0000 5 0
|
||||
#define MX6UL_PAD_JTAG_TDO__MQS_RIGHT 0x004c 0x02d8 0x0000 6 0
|
||||
#define MX6UL_PAD_JTAG_TDO__EPIT2_OUT 0x004c 0x02d8 0x0000 8 0
|
||||
#define MX6UL_PAD_JTAG_TDI__SJC_TDI 0x0050 0x02dc 0x0000 0 0
|
||||
#define MX6UL_PAD_JTAG_TDI__GPT2_COMPARE1 0x0050 0x02dc 0x0000 1 0
|
||||
#define MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK 0x0050 0x02dc 0x05f8 2 0
|
||||
#define MX6UL_PAD_JTAG_TDI__PWM6_OUT 0x0050 0x02dc 0x0000 4 0
|
||||
#define MX6UL_PAD_JTAG_TDI__GPIO1_IO13 0x0050 0x02dc 0x0000 5 0
|
||||
#define MX6UL_PAD_JTAG_TDI__MQS_LEFT 0x0050 0x02dc 0x0000 6 0
|
||||
#define MX6UL_PAD_JTAG_TDI__SIM1_POWER_FAIL 0x0050 0x02dc 0x0000 8 0
|
||||
#define MX6UL_PAD_JTAG_TCK__SJC_TCK 0x0054 0x02e0 0x0000 0 0
|
||||
#define MX6UL_PAD_JTAG_TCK__GPT2_COMPARE2 0x0054 0x02e0 0x0000 1 0
|
||||
#define MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA 0x0054 0x02e0 0x05f4 2 0
|
||||
#define MX6UL_PAD_JTAG_TCK__PWM7_OUT 0x0054 0x02e0 0x0000 4 0
|
||||
#define MX6UL_PAD_JTAG_TCK__GPIO1_IO14 0x0054 0x02e0 0x0000 5 0
|
||||
#define MX6UL_PAD_JTAG_TCK__SIM2_POWER_FAIL 0x0054 0x02e0 0x0000 8 0
|
||||
#define MX6UL_PAD_JTAG_TRST_B__SJC_TRSTB 0x0058 0x02e4 0x0000 0 0
|
||||
#define MX6UL_PAD_JTAG_TRST_B__GPT2_COMPARE3 0x0058 0x02e4 0x0000 1 0
|
||||
#define MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA 0x0058 0x02e4 0x0000 2 0
|
||||
#define MX6UL_PAD_JTAG_TRST_B__PWM8_OUT 0x0058 0x02e4 0x0000 4 0
|
||||
#define MX6UL_PAD_JTAG_TRST_B__GPIO1_IO15 0x0058 0x02e4 0x0000 5 0
|
||||
#define MX6UL_PAD_JTAG_TRST_B__CAAM_RNG_OSC_OBS 0x0058 0x02e4 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO00__I2C2_SCL 0x005c 0x02e8 0x05ac 0 1
|
||||
#define MX6UL_PAD_GPIO1_IO00__GPT1_CAPTURE1 0x005c 0x02e8 0x058c 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID 0x005c 0x02e8 0x04b8 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO00__ENET1_REF_CLK1 0x005c 0x02e8 0x0574 3 0
|
||||
#define MX6UL_PAD_GPIO1_IO00__MQS_RIGHT 0x005c 0x02e8 0x0000 4 0
|
||||
#define MX6UL_PAD_GPIO1_IO00__GPIO1_IO00 0x005c 0x02e8 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO00__ENET1_1588_EVENT0_IN 0x005c 0x02e8 0x0000 6 0
|
||||
#define MX6UL_PAD_GPIO1_IO00__SRC_SYSTEM_RESET 0x005c 0x02e8 0x0000 7 0
|
||||
#define MX6UL_PAD_GPIO1_IO00__WDOG3_WDOG_B 0x005c 0x02e8 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO01__I2C2_SDA 0x0060 0x02ec 0x05b0 0 1
|
||||
#define MX6UL_PAD_GPIO1_IO01__GPT1_COMPARE1 0x0060 0x02ec 0x0000 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO01__USB_OTG1_OC 0x0060 0x02ec 0x0664 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO01__ENET2_REF_CLK2 0x0060 0x02ec 0x057c 3 0
|
||||
#define MX6UL_PAD_GPIO1_IO01__MQS_LEFT 0x0060 0x02ec 0x0000 4 0
|
||||
#define MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x0060 0x02ec 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO01__ENET1_1588_EVENT0_OUT 0x0060 0x02ec 0x0000 6 0
|
||||
#define MX6UL_PAD_GPIO1_IO01__SRC_EARLY_RESET 0x0060 0x02ec 0x0000 7 0
|
||||
#define MX6UL_PAD_GPIO1_IO01__WDOG1_WDOG_B 0x0060 0x02ec 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__I2C1_SCL 0x0064 0x02f0 0x05a4 0 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__GPT1_COMPARE2 0x0064 0x02f0 0x0000 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__USB_OTG2_PWR 0x0064 0x02f0 0x0000 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__ENET1_REF_CLK_25M 0x0064 0x02f0 0x0000 3 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__USDHC1_WP 0x0064 0x02f0 0x066c 4 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__GPIO1_IO02 0x0064 0x02f0 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__SDMA_EXT_EVENT00 0x0064 0x02f0 0x0000 6 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__SRC_ANY_PU_RESET 0x0064 0x02f0 0x0000 7 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__UART1_DCE_TX 0x0064 0x02f0 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO02__UART1_DTE_RX 0x0064 0x02f0 0x0624 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO03__I2C1_SDA 0x0068 0x02f4 0x05a8 0 1
|
||||
#define MX6UL_PAD_GPIO1_IO03__GPT1_COMPARE3 0x0068 0x02f4 0x0000 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO03__USB_OTG2_OC 0x0068 0x02f4 0x0660 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO03__USDHC1_CD_B 0x0068 0x02f4 0x0668 4 0
|
||||
#define MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x0068 0x02f4 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO03__CCM_DI0_eXT_CLK 0x0068 0x02f4 0x0000 6 0
|
||||
#define MX6UL_PAD_GPIO1_IO03__SRC_TESTER_ACK 0x0068 0x02f4 0x0000 7 0
|
||||
#define MX6UL_PAD_GPIO1_IO03__UART1_DTE_TX 0x0068 0x02f4 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO03__UART1_DCE_RX 0x0068 0x02f4 0x0624 8 1
|
||||
#define MX6UL_PAD_GPIO1_IO04__ENET1_REF_CLK1 0x006c 0x02f8 0x0574 0 1
|
||||
#define MX6UL_PAD_GPIO1_IO04__PWM3_OUT 0x006c 0x02f8 0x0000 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO04__USB_OTG1_PWR 0x006c 0x02f8 0x0000 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO04__USDHC1_RESET_B 0x006c 0x02f8 0x0000 4 0
|
||||
#define MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0x006c 0x02f8 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO04__ENET2_1588_EVENT0_IN 0x006c 0x02f8 0x0000 6 0
|
||||
#define MX6UL_PAD_GPIO1_IO04__UART5_DCE_TX 0x006c 0x02f8 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO04__UART5_DTE_RX 0x006c 0x02f8 0x0644 8 2
|
||||
#define MX6UL_PAD_GPIO1_IO05__ENET2_REF_CLK2 0x0070 0x02fc 0x057c 0 1
|
||||
#define MX6UL_PAD_GPIO1_IO05__PWM4_OUT 0x0070 0x02fc 0x0000 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO05__ANATOP_OTG2_ID 0x0070 0x02fc 0x04bc 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO05__CSI_FIELD 0x0070 0x02fc 0x0530 3 0
|
||||
#define MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT 0x0070 0x02fc 0x0000 4 0
|
||||
#define MX6UL_PAD_GPIO1_IO05__GPIO1_IO05 0x0070 0x02fc 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO05__ENET2_1588_EVENT0_OUT 0x0070 0x02fc 0x0000 6 0
|
||||
#define MX6UL_PAD_GPIO1_IO05__UART5_DCE_RX 0x0070 0x02fc 0x0644 8 3
|
||||
#define MX6UL_PAD_GPIO1_IO05__UART5_DTE_TX 0x0070 0x02fc 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__ENET1_MDIO 0x0074 0x0300 0x0578 0 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__ENET2_MDIO 0x0074 0x0300 0x0580 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__USB_OTG_PWR_WAKE 0x0074 0x0300 0x0000 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__CSI_MCLK 0x0074 0x0300 0x0000 3 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__USDHC2_WP 0x0074 0x0300 0x069c 4 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__GPIO1_IO06 0x0074 0x0300 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__CCM_WAIT 0x0074 0x0300 0x0000 6 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__CCM_REF_EN_B 0x0074 0x0300 0x0000 7 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__UART1_DCE_CTS 0x0074 0x0300 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO06__UART1_DTE_RTS 0x0074 0x0300 0x0620 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO07__ENET1_MDC 0x0078 0x0304 0x0000 0 0
|
||||
#define MX6UL_PAD_GPIO1_IO07__ENET2_MDC 0x0078 0x0304 0x0000 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO07__USB_OTG_HOST_MODE 0x0078 0x0304 0x0000 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO07__CSI_PIXCLK 0x0078 0x0304 0x0528 3 0
|
||||
#define MX6UL_PAD_GPIO1_IO07__USDHC2_CD_B 0x0078 0x0304 0x0674 4 1
|
||||
#define MX6UL_PAD_GPIO1_IO07__GPIO1_IO07 0x0078 0x0304 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO07__CCM_STOP 0x0078 0x0304 0x0000 6 0
|
||||
#define MX6UL_PAD_GPIO1_IO07__UART1_DCE_RTS 0x0078 0x0304 0x0620 8 1
|
||||
#define MX6UL_PAD_GPIO1_IO07__UART1_DTE_CTS 0x0078 0x0304 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO08__PWM1_OUT 0x007c 0x0308 0x0000 0 0
|
||||
#define MX6UL_PAD_GPIO1_IO08__WDOG1_WDOG_B 0x007c 0x0308 0x0000 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO08__SPDIF_OUT 0x007c 0x0308 0x0000 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO08__CSI_VSYNC 0x007c 0x0308 0x052c 3 1
|
||||
#define MX6UL_PAD_GPIO1_IO08__USDHC2_VSELECT 0x007c 0x0308 0x0000 4 0
|
||||
#define MX6UL_PAD_GPIO1_IO08__GPIO1_IO08 0x007c 0x0308 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO08__CCM_PMIC_RDY 0x007c 0x0308 0x04c0 6 1
|
||||
#define MX6UL_PAD_GPIO1_IO08__UART5_DCE_RTS 0x007c 0x0308 0x0640 8 1
|
||||
#define MX6UL_PAD_GPIO1_IO08__UART5_DTE_CTS 0x007c 0x0308 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO09__PWM2_OUT 0x0080 0x030c 0x0000 0 0
|
||||
#define MX6UL_PAD_GPIO1_IO09__WDOG1_WDOG_ANY 0x0080 0x030c 0x0000 1 0
|
||||
#define MX6UL_PAD_GPIO1_IO09__SPDIF_IN 0x0080 0x030c 0x0618 2 0
|
||||
#define MX6UL_PAD_GPIO1_IO09__CSI_HSYNC 0x0080 0x030c 0x0524 3 1
|
||||
#define MX6UL_PAD_GPIO1_IO09__USDHC2_RESET_B 0x0080 0x030c 0x0000 4 0
|
||||
#define MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x0080 0x030c 0x0000 5 0
|
||||
#define MX6UL_PAD_GPIO1_IO09__USDHC1_RESET_B 0x0080 0x030c 0x0000 6 0
|
||||
#define MX6UL_PAD_GPIO1_IO09__UART5_DCE_CTS 0x0080 0x030c 0x0000 8 0
|
||||
#define MX6UL_PAD_GPIO1_IO09__UART5_DTE_RTS 0x0080 0x030c 0x0640 8 2
|
||||
#define MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX 0x0084 0x0310 0x0000 0 0
|
||||
#define MX6UL_PAD_UART1_TX_DATA__UART1_DTE_RX 0x0084 0x0310 0x0624 0 2
|
||||
#define MX6UL_PAD_UART1_TX_DATA__ENET1_RDATA02 0x0084 0x0310 0x0000 1 0
|
||||
#define MX6UL_PAD_UART1_TX_DATA__I2C3_SCL 0x0084 0x0310 0x05b4 2 0
|
||||
#define MX6UL_PAD_UART1_TX_DATA__CSI_DATA02 0x0084 0x0310 0x04c4 3 1
|
||||
#define MX6UL_PAD_UART1_TX_DATA__GPT1_COMPARE1 0x0084 0x0310 0x0000 4 0
|
||||
#define MX6UL_PAD_UART1_TX_DATA__GPIO1_IO16 0x0084 0x0310 0x0000 5 0
|
||||
#define MX6UL_PAD_UART1_TX_DATA__SPDIF_OUT 0x0084 0x0310 0x0000 8 0
|
||||
#define MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x0088 0x0314 0x0624 0 3
|
||||
#define MX6UL_PAD_UART1_RX_DATA__UART1_DTE_TX 0x0088 0x0314 0x0000 0 0
|
||||
#define MX6UL_PAD_UART1_RX_DATA__ENET1_RDATA03 0x0088 0x0314 0x0000 1 0
|
||||
#define MX6UL_PAD_UART1_RX_DATA__I2C3_SDA 0x0088 0x0314 0x05b8 2 0
|
||||
#define MX6UL_PAD_UART1_RX_DATA__CSI_DATA03 0x0088 0x0314 0x04c8 3 1
|
||||
#define MX6UL_PAD_UART1_RX_DATA__GPT1_CLK 0x0088 0x0314 0x0594 4 0
|
||||
#define MX6UL_PAD_UART1_RX_DATA__GPIO1_IO17 0x0088 0x0314 0x0000 5 0
|
||||
#define MX6UL_PAD_UART1_RX_DATA__SPDIF_IN 0x0088 0x0314 0x0618 8 1
|
||||
#define MX6UL_PAD_UART1_CTS_B__UART1_DCE_CTS 0x008c 0x0318 0x0000 0 0
|
||||
#define MX6UL_PAD_UART1_CTS_B__UART1_DTE_RTS 0x008c 0x0318 0x0620 0 2
|
||||
#define MX6UL_PAD_UART1_CTS_B__ENET1_RX_CLK 0x008c 0x0318 0x0000 1 0
|
||||
#define MX6UL_PAD_UART1_CTS_B__USDHC1_WP 0x008c 0x0318 0x066c 2 1
|
||||
#define MX6UL_PAD_UART1_CTS_B__CSI_DATA04 0x008c 0x0318 0x04d8 3 0
|
||||
#define MX6UL_PAD_UART1_CTS_B__ENET2_1588_EVENT1_IN 0x008c 0x0318 0x0000 4 0
|
||||
#define MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x008c 0x0318 0x0000 5 0
|
||||
#define MX6UL_PAD_UART1_CTS_B__USDHC2_WP 0x008c 0x0318 0x069c 8 1
|
||||
#define MX6UL_PAD_UART1_RTS_B__UART1_DCE_RTS 0x0090 0x031c 0x0620 0 3
|
||||
#define MX6UL_PAD_UART1_RTS_B__UART1_DTE_CTS 0x0090 0x031c 0x0000 0 0
|
||||
#define MX6UL_PAD_UART1_RTS_B__ENET1_TX_ER 0x0090 0x031c 0x0000 1 0
|
||||
#define MX6UL_PAD_UART1_RTS_B__USDHC1_CD_B 0x0090 0x031c 0x0668 2 1
|
||||
#define MX6UL_PAD_UART1_RTS_B__CSI_DATA05 0x0090 0x031c 0x04cc 3 1
|
||||
#define MX6UL_PAD_UART1_RTS_B__ENET2_1588_EVENT1_OUT 0x0090 0x031c 0x0000 4 0
|
||||
#define MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x0090 0x031c 0x0000 5 0
|
||||
#define MX6UL_PAD_UART1_RTS_B__USDHC2_CD_B 0x0090 0x031c 0x0674 8 2
|
||||
#define MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x0094 0x0320 0x0000 0 0
|
||||
#define MX6UL_PAD_UART2_TX_DATA__UART2_DTE_RX 0x0094 0x0320 0x062c 0 0
|
||||
#define MX6UL_PAD_UART2_TX_DATA__ENET1_TDATA02 0x0094 0x0320 0x0000 1 0
|
||||
#define MX6UL_PAD_UART2_TX_DATA__I2C4_SCL 0x0094 0x0320 0x05bc 2 0
|
||||
#define MX6UL_PAD_UART2_TX_DATA__CSI_DATA06 0x0094 0x0320 0x04dc 3 0
|
||||
#define MX6UL_PAD_UART2_TX_DATA__GPT1_CAPTURE1 0x0094 0x0320 0x058c 4 1
|
||||
#define MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20 0x0094 0x0320 0x0000 5 0
|
||||
#define MX6UL_PAD_UART2_TX_DATA__ECSPI3_SS0 0x0094 0x0320 0x0000 8 0
|
||||
#define MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x0098 0x0324 0x062c 0 1
|
||||
#define MX6UL_PAD_UART2_RX_DATA__UART2_DTE_TX 0x0098 0x0324 0x0000 0 0
|
||||
#define MX6UL_PAD_UART2_RX_DATA__ENET1_TDATA03 0x0098 0x0324 0x0000 1 0
|
||||
#define MX6UL_PAD_UART2_RX_DATA__I2C4_SDA 0x0098 0x0324 0x05c0 2 0
|
||||
#define MX6UL_PAD_UART2_RX_DATA__CSI_DATA07 0x0098 0x0324 0x04e0 3 0
|
||||
#define MX6UL_PAD_UART2_RX_DATA__GPT1_CAPTURE2 0x0098 0x0324 0x0590 4 0
|
||||
#define MX6UL_PAD_UART2_RX_DATA__GPIO1_IO21 0x0098 0x0324 0x0000 5 0
|
||||
#define MX6UL_PAD_UART2_RX_DATA__SJC_DONE 0x0098 0x0324 0x0000 7 0
|
||||
#define MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK 0x0098 0x0324 0x0554 8 0
|
||||
#define MX6UL_PAD_UART2_CTS_B__UART2_DCE_CTS 0x009c 0x0328 0x0000 0 0
|
||||
#define MX6UL_PAD_UART2_CTS_B__UART2_DTE_RTS 0x009c 0x0328 0x0628 0 0
|
||||
#define MX6UL_PAD_UART2_CTS_B__ENET1_CRS 0x009c 0x0328 0x0000 1 0
|
||||
#define MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX 0x009c 0x0328 0x0000 2 0
|
||||
#define MX6UL_PAD_UART2_CTS_B__CSI_DATA08 0x009c 0x0328 0x04e4 3 0
|
||||
#define MX6UL_PAD_UART2_CTS_B__GPT1_COMPARE2 0x009c 0x0328 0x0000 4 0
|
||||
#define MX6UL_PAD_UART2_CTS_B__GPIO1_IO22 0x009c 0x0328 0x0000 5 0
|
||||
#define MX6UL_PAD_UART2_CTS_B__SJC_DE_B 0x009c 0x0328 0x0000 7 0
|
||||
#define MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI 0x009c 0x0328 0x055c 8 0
|
||||
#define MX6UL_PAD_UART2_RTS_B__UART2_DCE_RTS 0x00a0 0x032c 0x0628 0 1
|
||||
#define MX6UL_PAD_UART2_RTS_B__UART2_DTE_CTS 0x00a0 0x032c 0x0000 0 0
|
||||
#define MX6UL_PAD_UART2_RTS_B__ENET1_COL 0x00a0 0x032c 0x0000 1 0
|
||||
#define MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX 0x00a0 0x032c 0x0588 2 0
|
||||
#define MX6UL_PAD_UART2_RTS_B__CSI_DATA09 0x00a0 0x032c 0x04e8 3 0
|
||||
#define MX6UL_PAD_UART2_RTS_B__GPT1_COMPARE3 0x00a0 0x032c 0x0000 4 0
|
||||
#define MX6UL_PAD_UART2_RTS_B__GPIO1_IO23 0x00a0 0x032c 0x0000 5 0
|
||||
#define MX6UL_PAD_UART2_RTS_B__SJC_FAIL 0x00a0 0x032c 0x0000 7 0
|
||||
#define MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO 0x00a0 0x032c 0x0558 8 0
|
||||
#define MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x00a4 0x0330 0x0000 0 0
|
||||
#define MX6UL_PAD_UART3_TX_DATA__UART3_DTE_RX 0x00a4 0x0330 0x0634 0 0
|
||||
#define MX6UL_PAD_UART3_TX_DATA__ENET2_RDATA02 0x00a4 0x0330 0x0000 1 0
|
||||
#define MX6UL_PAD_UART3_TX_DATA__SIM1_PORT0_PD 0x00a4 0x0330 0x0000 2 0
|
||||
#define MX6UL_PAD_UART3_TX_DATA__CSI_DATA01 0x00a4 0x0330 0x0000 3 0
|
||||
#define MX6UL_PAD_UART3_TX_DATA__UART2_DCE_CTS 0x00a4 0x0330 0x0000 4 0
|
||||
#define MX6UL_PAD_UART3_TX_DATA__UART2_DTE_RTS 0x00a4 0x0330 0x0628 4 2
|
||||
#define MX6UL_PAD_UART3_TX_DATA__GPIO1_IO24 0x00a4 0x0330 0x0000 5 0
|
||||
#define MX6UL_PAD_UART3_TX_DATA__SJC_JTAG_ACT 0x00a4 0x0330 0x0000 7 0
|
||||
#define MX6UL_PAD_UART3_TX_DATA__ANATOP_OTG1_ID 0x00a4 0x0330 0x04b8 8 1
|
||||
#define MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x00a8 0x0334 0x0634 0 1
|
||||
#define MX6UL_PAD_UART3_RX_DATA__UART3_DTE_TX 0x00a8 0x0334 0x0000 0 0
|
||||
#define MX6UL_PAD_UART3_RX_DATA__ENET2_RDATA03 0x00a8 0x0334 0x0000 1 0
|
||||
#define MX6UL_PAD_UART3_RX_DATA__SIM2_PORT0_PD 0x00a8 0x0334 0x0000 2 0
|
||||
#define MX6UL_PAD_UART3_RX_DATA__CSI_DATA00 0x00a8 0x0334 0x0000 3 0
|
||||
#define MX6UL_PAD_UART3_RX_DATA__UART2_DCE_RTS 0x00a8 0x0334 0x0628 4 3
|
||||
#define MX6UL_PAD_UART3_RX_DATA__UART2_DTE_CTS 0x00a8 0x0334 0x0000 4 0
|
||||
#define MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25 0x00a8 0x0334 0x0000 5 0
|
||||
#define MX6UL_PAD_UART3_RX_DATA__EPIT1_OUT 0x00a8 0x0334 0x0000 8 0
|
||||
#define MX6UL_PAD_UART3_CTS_B__UART3_DCE_CTS 0x00ac 0x0338 0x0000 0 0
|
||||
#define MX6UL_PAD_UART3_CTS_B__UART3_DTE_RTS 0x00ac 0x0338 0x0630 0 0
|
||||
#define MX6UL_PAD_UART3_CTS_B__ENET2_RX_CLK 0x00ac 0x0338 0x0000 1 0
|
||||
#define MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX 0x00ac 0x0338 0x0000 2 0
|
||||
#define MX6UL_PAD_UART3_CTS_B__CSI_DATA10 0x00ac 0x0338 0x0000 3 0
|
||||
#define MX6UL_PAD_UART3_CTS_B__ENET1_1588_EVENT1_IN 0x00ac 0x0338 0x0000 4 0
|
||||
#define MX6UL_PAD_UART3_CTS_B__GPIO1_IO26 0x00ac 0x0338 0x0000 5 0
|
||||
#define MX6UL_PAD_UART3_CTS_B__EPIT2_OUT 0x00ac 0x0338 0x0000 8 0
|
||||
#define MX6UL_PAD_UART3_RTS_B__UART3_DCE_RTS 0x00b0 0x033c 0x0630 0 1
|
||||
#define MX6UL_PAD_UART3_RTS_B__UART3_DTE_CTS 0x00b0 0x033c 0x0000 0 0
|
||||
#define MX6UL_PAD_UART3_RTS_B__ENET2_TX_ER 0x00b0 0x033c 0x0000 1 0
|
||||
#define MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX 0x00b0 0x033c 0x0584 2 0
|
||||
#define MX6UL_PAD_UART3_RTS_B__CSI_DATA11 0x00b0 0x033c 0x0000 3 0
|
||||
#define MX6UL_PAD_UART3_RTS_B__ENET1_1588_EVENT1_OUT 0x00b0 0x033c 0x0000 4 0
|
||||
#define MX6UL_PAD_UART3_RTS_B__GPIO1_IO27 0x00b0 0x033c 0x0000 5 0
|
||||
#define MX6UL_PAD_UART3_RTS_B__WDOG1_WDOG_B 0x00b0 0x033c 0x0000 8 0
|
||||
#define MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX 0x00b4 0x0340 0x0000 0 0
|
||||
#define MX6UL_PAD_UART4_TX_DATA__UART4_DTE_RX 0x00b4 0x0340 0x063c 0 0
|
||||
#define MX6UL_PAD_UART4_TX_DATA__ENET2_TDATA02 0x00b4 0x0340 0x0000 1 0
|
||||
#define MX6UL_PAD_UART4_TX_DATA__I2C1_SCL 0x00b4 0x0340 0x05a4 2 1
|
||||
#define MX6UL_PAD_UART4_TX_DATA__CSI_DATA12 0x00b4 0x0340 0x0000 3 0
|
||||
#define MX6UL_PAD_UART4_TX_DATA__CSU_CSU_ALARM_AUT02 0x00b4 0x0340 0x0000 4 0
|
||||
#define MX6UL_PAD_UART4_TX_DATA__GPIO1_IO28 0x00b4 0x0340 0x0000 5 0
|
||||
#define MX6UL_PAD_UART4_TX_DATA__ECSPI2_SCLK 0x00b4 0x0340 0x0544 8 1
|
||||
#define MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX 0x00b8 0x0344 0x063c 0 1
|
||||
#define MX6UL_PAD_UART4_RX_DATA__UART4_DTE_TX 0x00b8 0x0344 0x0000 0 0
|
||||
#define MX6UL_PAD_UART4_RX_DATA__ENET2_TDATA03 0x00b8 0x0344 0x0000 1 0
|
||||
#define MX6UL_PAD_UART4_RX_DATA__I2C1_SDA 0x00b8 0x0344 0x05a8 2 2
|
||||
#define MX6UL_PAD_UART4_RX_DATA__CSI_DATA13 0x00b8 0x0344 0x0000 3 0
|
||||
#define MX6UL_PAD_UART4_RX_DATA__CSU_CSU_ALARM_AUT01 0x00b8 0x0344 0x0000 4 0
|
||||
#define MX6UL_PAD_UART4_RX_DATA__GPIO1_IO29 0x00b8 0x0344 0x0000 5 0
|
||||
#define MX6UL_PAD_UART4_RX_DATA__ECSPI2_SS0 0x00b8 0x0344 0x0000 8 0
|
||||
#define MX6UL_PAD_UART5_TX_DATA__GPIO1_IO30 0x00bc 0x0348 0x0000 5 0
|
||||
#define MX6UL_PAD_UART5_TX_DATA__ECSPI2_MOSI 0x00bc 0x0348 0x054c 8 0
|
||||
#define MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX 0x00bc 0x0348 0x0000 0 0
|
||||
#define MX6UL_PAD_UART5_TX_DATA__UART5_DTE_RX 0x00bc 0x0348 0x0644 0 4
|
||||
#define MX6UL_PAD_UART5_TX_DATA__ENET2_CRS 0x00bc 0x0348 0x0000 1 0
|
||||
#define MX6UL_PAD_UART5_TX_DATA__I2C2_SCL 0x00bc 0x0348 0x05ac 2 2
|
||||
#define MX6UL_PAD_UART5_TX_DATA__CSI_DATA14 0x00bc 0x0348 0x0000 3 0
|
||||
#define MX6UL_PAD_UART5_TX_DATA__CSU_CSU_ALARM_AUT00 0x00bc 0x0348 0x0000 4 0
|
||||
#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x00c0 0x034c 0x0644 0 5
|
||||
#define MX6UL_PAD_UART5_RX_DATA__UART5_DTE_TX 0x00c0 0x034c 0x0000 0 0
|
||||
#define MX6UL_PAD_UART5_RX_DATA__ENET2_COL 0x00c0 0x034c 0x0000 1 0
|
||||
#define MX6UL_PAD_UART5_RX_DATA__I2C2_SDA 0x00c0 0x034c 0x05b0 2 2
|
||||
#define MX6UL_PAD_UART5_RX_DATA__CSI_DATA15 0x00c0 0x034c 0x0000 3 0
|
||||
#define MX6UL_PAD_UART5_RX_DATA__CSU_CSU_INT_DEB 0x00c0 0x034c 0x0000 4 0
|
||||
#define MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31 0x00c0 0x034c 0x0000 5 0
|
||||
#define MX6UL_PAD_UART5_RX_DATA__ECSPI2_MISO 0x00c0 0x034c 0x0548 8 1
|
||||
#define MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x00c4 0x0350 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA0__UART4_DCE_RTS 0x00c4 0x0350 0x0638 1 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA0__UART4_DTE_CTS 0x00c4 0x0350 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA0__PWM1_OUT 0x00c4 0x0350 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA0__CSI_DATA16 0x00c4 0x0350 0x0000 3 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA0__FLEXCAN1_TX 0x00c4 0x0350 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA0__GPIO2_IO00 0x00c4 0x0350 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA0__KPP_ROW00 0x00c4 0x0350 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA0__USDHC1_LCTL 0x00c4 0x0350 0x0000 8 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x00c8 0x0354 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA1__UART4_DCE_CTS 0x00c8 0x0354 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA1__UART4_DTE_RTS 0x00c8 0x0354 0x0638 1 1
|
||||
#define MX6UL_PAD_ENET1_RX_DATA1__PWM2_OUT 0x00c8 0x0354 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA1__CSI_DATA17 0x00c8 0x0354 0x0000 3 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA1__FLEXCAN1_RX 0x00c8 0x0354 0x0584 4 1
|
||||
#define MX6UL_PAD_ENET1_RX_DATA1__GPIO2_IO01 0x00c8 0x0354 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA1__KPP_COL00 0x00c8 0x0354 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET1_RX_DATA1__USDHC2_LCTL 0x00c8 0x0354 0x0000 8 0
|
||||
#define MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN 0x00cc 0x0358 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET1_RX_EN__UART5_DCE_RTS 0x00cc 0x0358 0x0640 1 3
|
||||
#define MX6UL_PAD_ENET1_RX_EN__UART5_DTE_CTS 0x00cc 0x0358 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET1_RX_EN__CSI_DATA18 0x00cc 0x0358 0x0000 3 0
|
||||
#define MX6UL_PAD_ENET1_RX_EN__FLEXCAN2_TX 0x00cc 0x0358 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET1_RX_EN__GPIO2_IO02 0x00cc 0x0358 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET1_RX_EN__KPP_ROW01 0x00cc 0x0358 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET1_RX_EN__USDHC1_VSELECT 0x00cc 0x0358 0x0000 8 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x00d0 0x035c 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA0__UART5_DCE_CTS 0x00d0 0x035c 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA0__UART5_DTE_RTS 0x00d0 0x035c 0x0640 1 4
|
||||
#define MX6UL_PAD_ENET1_TX_DATA0__CSI_DATA19 0x00d0 0x035c 0x0000 3 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA0__FLEXCAN2_RX 0x00d0 0x035c 0x0588 4 1
|
||||
#define MX6UL_PAD_ENET1_TX_DATA0__GPIO2_IO03 0x00d0 0x035c 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA0__KPP_COL01 0x00d0 0x035c 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA0__USDHC2_VSELECT 0x00d0 0x035c 0x0000 8 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x00d4 0x0360 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA1__UART6_DCE_CTS 0x00d4 0x0360 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA1__UART6_DTE_RTS 0x00d4 0x0360 0x0648 1 2
|
||||
#define MX6UL_PAD_ENET1_TX_DATA1__PWM5_OUT 0x00d4 0x0360 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA1__CSI_DATA20 0x00d4 0x0360 0x0000 3 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA1__ENET2_MDIO 0x00d4 0x0360 0x0580 4 1
|
||||
#define MX6UL_PAD_ENET1_TX_DATA1__GPIO2_IO04 0x00d4 0x0360 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA1__KPP_ROW02 0x00d4 0x0360 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET1_TX_DATA1__WDOG1_WDOG_RST_B_DEB 0x00d4 0x0360 0x0000 8 0
|
||||
#define MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x00d8 0x0364 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET1_TX_EN__UART6_DCE_RTS 0x00d8 0x0364 0x0648 1 3
|
||||
#define MX6UL_PAD_ENET1_TX_EN__UART6_DTE_CTS 0x00d8 0x0364 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET1_TX_EN__PWM6_OUT 0x00d8 0x0364 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET1_TX_EN__CSI_DATA21 0x00d8 0x0364 0x0000 3 0
|
||||
#define MX6UL_PAD_ENET1_TX_EN__ENET2_MDC 0x00d8 0x0364 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET1_TX_EN__GPIO2_IO05 0x00d8 0x0364 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET1_TX_EN__KPP_COL02 0x00d8 0x0364 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET1_TX_EN__WDOG2_WDOG_RST_B_DEB 0x00d8 0x0364 0x0000 8 0
|
||||
#define MX6UL_PAD_ENET1_TX_CLK__ENET1_TX_CLK 0x00dc 0x0368 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET1_TX_CLK__UART7_DCE_CTS 0x00dc 0x0368 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET1_TX_CLK__UART7_DTE_RTS 0x00dc 0x0368 0x0650 1 0
|
||||
#define MX6UL_PAD_ENET1_TX_CLK__PWM7_OUT 0x00dc 0x0368 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET1_TX_CLK__CSI_DATA22 0x00dc 0x0368 0x0000 3 0
|
||||
#define MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x00dc 0x0368 0x0574 4 2
|
||||
#define MX6UL_PAD_ENET1_TX_CLK__GPIO2_IO06 0x00dc 0x0368 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET1_TX_CLK__KPP_ROW03 0x00dc 0x0368 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET1_TX_CLK__GPT1_CLK 0x00dc 0x0368 0x0594 8 1
|
||||
#define MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x00e0 0x036c 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET1_RX_ER__UART7_DCE_RTS 0x00e0 0x036c 0x0650 1 1
|
||||
#define MX6UL_PAD_ENET1_RX_ER__UART7_DTE_CTS 0x00e0 0x036c 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET1_RX_ER__PWM8_OUT 0x00e0 0x036c 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET1_RX_ER__CSI_DATA23 0x00e0 0x036c 0x0000 3 0
|
||||
#define MX6UL_PAD_ENET1_RX_ER__EIM_CRE 0x00e0 0x036c 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET1_RX_ER__GPIO2_IO07 0x00e0 0x036c 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET1_RX_ER__KPP_COL03 0x00e0 0x036c 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET1_RX_ER__GPT1_CAPTURE2 0x00e0 0x036c 0x0590 8 1
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x00e4 0x0370 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__UART6_DCE_TX 0x00e4 0x0370 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__UART6_DTE_RX 0x00e4 0x0370 0x064c 1 1
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__SIM1_PORT0_TRXD 0x00e4 0x0370 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__I2C3_SCL 0x00e4 0x0370 0x05b4 3 1
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__ENET1_MDIO 0x00e4 0x0370 0x0578 4 1
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08 0x00e4 0x0370 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__KPP_ROW04 0x00e4 0x0370 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__USB_OTG1_PWR 0x00e4 0x0370 0x0000 8 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x00e8 0x0374 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__UART6_DCE_RX 0x00e8 0x0374 0x064c 1 2
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__UART6_DTE_TX 0x00e8 0x0374 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__SIM1_PORT0_cLK 0x00e8 0x0374 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__I2C3_SDA 0x00e8 0x0374 0x05b8 3 1
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__ENET1_MDC 0x00e8 0x0374 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__GPIO2_IO09 0x00e8 0x0374 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__KPP_COL04 0x00e8 0x0374 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__USB_OTG1_OC 0x00e8 0x0374 0x0664 8 1
|
||||
#define MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN 0x00ec 0x0378 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET2_RX_EN__UART7_DCE_TX 0x00ec 0x0378 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET2_RX_EN__UART7_DTE_RX 0x00ec 0x0378 0x0654 1 0
|
||||
#define MX6UL_PAD_ENET2_RX_EN__SIM1_PORT0_RST_B 0x00ec 0x0378 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET2_RX_EN__I2C4_SCL 0x00ec 0x0378 0x05bc 3 1
|
||||
#define MX6UL_PAD_ENET2_RX_EN__EIM_ADDR26 0x00ec 0x0378 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET2_RX_EN__GPIO2_IO10 0x00ec 0x0378 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET2_RX_EN__KPP_ROW05 0x00ec 0x0378 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET2_RX_EN__ENET1_REF_CLK_25M 0x00ec 0x0378 0x0000 8 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x00f0 0x037c 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA0__UART7_DCE_RX 0x00f0 0x037c 0x0654 1 1
|
||||
#define MX6UL_PAD_ENET2_TX_DATA0__UART7_DTE_TX 0x00f0 0x037c 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA0__SIM1_PORT0_SVEN 0x00f0 0x037c 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA0__I2C4_SDA 0x00f0 0x037c 0x05c0 3 1
|
||||
#define MX6UL_PAD_ENET2_TX_DATA0__EIM_EB_B02 0x00f0 0x037c 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA0__GPIO2_IO11 0x00f0 0x037c 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA0__KPP_COL05 0x00f0 0x037c 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x00f4 0x0380 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__UART8_DCE_TX 0x00f4 0x0380 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__UART8_DTE_RX 0x00f4 0x0380 0x065c 1 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__SIM2_PORT0_TRXD 0x00f4 0x0380 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__ECSPI4_SCLK 0x00f4 0x0380 0x0564 3 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__EIM_EB_B03 0x00f4 0x0380 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__GPIO2_IO12 0x00f4 0x0380 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__KPP_ROW06 0x00f4 0x0380 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__USB_OTG2_PWR 0x00f4 0x0380 0x0000 8 0
|
||||
#define MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN 0x00f8 0x0384 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET2_TX_EN__UART8_DCE_RX 0x00f8 0x0384 0x065c 1 1
|
||||
#define MX6UL_PAD_ENET2_TX_EN__UART8_DTE_TX 0x00f8 0x0384 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET2_TX_EN__SIM2_PORT0_cLK 0x00f8 0x0384 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET2_TX_EN__ECSPI4_MOSI 0x00f8 0x0384 0x056c 3 0
|
||||
#define MX6UL_PAD_ENET2_TX_EN__EIM_ACLK_FREERUN 0x00f8 0x0384 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET2_TX_EN__GPIO2_IO13 0x00f8 0x0384 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET2_TX_EN__KPP_COL06 0x00f8 0x0384 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET2_TX_EN__USB_OTG2_OC 0x00f8 0x0384 0x0660 8 1
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__ENET2_TX_CLK 0x00fc 0x0388 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__UART8_DCE_CTS 0x00fc 0x0388 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__UART8_DTE_RTS 0x00fc 0x0388 0x0658 1 0
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__SIM2_PORT0_RST_B 0x00fc 0x0388 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__ECSPI4_MISO 0x00fc 0x0388 0x0568 3 0
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x00fc 0x0388 0x057c 4 2
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__GPIO2_IO14 0x00fc 0x0388 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__KPP_ROW07 0x00fc 0x0388 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__ANATOP_OTG2_ID 0x00fc 0x0388 0x04bc 8 1
|
||||
#define MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER 0x0100 0x038c 0x0000 0 0
|
||||
#define MX6UL_PAD_ENET2_RX_ER__UART8_DCE_RTS 0x0100 0x038c 0x0658 1 1
|
||||
#define MX6UL_PAD_ENET2_RX_ER__UART8_DTE_CTS 0x0100 0x038c 0x0000 1 0
|
||||
#define MX6UL_PAD_ENET2_RX_ER__SIM2_PORT0_SVEN 0x0100 0x038c 0x0000 2 0
|
||||
#define MX6UL_PAD_ENET2_RX_ER__ECSPI4_SS0 0x0100 0x038c 0x0000 3 0
|
||||
#define MX6UL_PAD_ENET2_RX_ER__EIM_ADDR25 0x0100 0x038c 0x0000 4 0
|
||||
#define MX6UL_PAD_ENET2_RX_ER__GPIO2_IO15 0x0100 0x038c 0x0000 5 0
|
||||
#define MX6UL_PAD_ENET2_RX_ER__KPP_COL07 0x0100 0x038c 0x0000 6 0
|
||||
#define MX6UL_PAD_ENET2_RX_ER__WDOG1_WDOG_ANY 0x0100 0x038c 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_CLK__LCDIF_CLK 0x0104 0x0390 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_CLK__LCDIF_WR_RWN 0x0104 0x0390 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_CLK__UART4_DCE_TX 0x0104 0x0390 0x0000 2 0
|
||||
#define MX6UL_PAD_LCD_CLK__UART4_DTE_RX 0x0104 0x0390 0x063c 2 2
|
||||
#define MX6UL_PAD_LCD_CLK__SAI3_MCLK 0x0104 0x0390 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_CLK__EIM_CS2_B 0x0104 0x0390 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_CLK__GPIO3_IO00 0x0104 0x0390 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_CLK__WDOG1_WDOG_RST_B_DEB 0x0104 0x0390 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE 0x0108 0x0394 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_ENABLE__LCDIF_RD_E 0x0108 0x0394 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_ENABLE__UART4_DCE_RX 0x0108 0x0394 0x063c 2 3
|
||||
#define MX6UL_PAD_LCD_ENABLE__UART4_DTE_TX 0x0108 0x0394 0x0000 2 0
|
||||
#define MX6UL_PAD_LCD_ENABLE__SAI3_TX_SYNC 0x0108 0x0394 0x060c 3 0
|
||||
#define MX6UL_PAD_LCD_ENABLE__EIM_CS3_B 0x0108 0x0394 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_ENABLE__GPIO3_IO01 0x0108 0x0394 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_ENABLE__ECSPI2_RDY 0x0108 0x0394 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC 0x010c 0x0398 0x05dc 0 0
|
||||
#define MX6UL_PAD_LCD_HSYNC__LCDIF_RS 0x010c 0x0398 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_HSYNC__UART4_DCE_CTS 0x010c 0x0398 0x0000 2 0
|
||||
#define MX6UL_PAD_LCD_HSYNC__UART4_DTE_RTS 0x010c 0x0398 0x0638 2 2
|
||||
#define MX6UL_PAD_LCD_HSYNC__SAI3_TX_BCLK 0x010c 0x0398 0x0608 3 0
|
||||
#define MX6UL_PAD_LCD_HSYNC__WDOG3_WDOG_RST_B_DEB 0x010c 0x0398 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_HSYNC__GPIO3_IO02 0x010c 0x0398 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_HSYNC__ECSPI2_SS1 0x010c 0x0398 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC 0x0110 0x039c 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_VSYNC__LCDIF_BUSY 0x0110 0x039c 0x05dc 1 1
|
||||
#define MX6UL_PAD_LCD_VSYNC__UART4_DCE_RTS 0x0110 0x039c 0x0638 2 3
|
||||
#define MX6UL_PAD_LCD_VSYNC__UART4_DTE_CTS 0x0110 0x039c 0x0000 2 0
|
||||
#define MX6UL_PAD_LCD_VSYNC__SAI3_RX_DATA 0x0110 0x039c 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_VSYNC__WDOG2_WDOG_B 0x0110 0x039c 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_VSYNC__GPIO3_IO03 0x0110 0x039c 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_VSYNC__ECSPI2_SS2 0x0110 0x039c 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_RESET__LCDIF_RESET 0x0114 0x03a0 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_RESET__LCDIF_CS 0x0114 0x03a0 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_RESET__CA7_MX6UL_EVENTI 0x0114 0x03a0 0x0000 2 0
|
||||
#define MX6UL_PAD_LCD_RESET__SAI3_TX_DATA 0x0114 0x03a0 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_RESET__WDOG1_WDOG_ANY 0x0114 0x03a0 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_RESET__GPIO3_IO04 0x0114 0x03a0 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_RESET__ECSPI2_SS3 0x0114 0x03a0 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA00__LCDIF_DATA00 0x0118 0x03a4 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA00__PWM1_OUT 0x0118 0x03a4 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA00__ENET1_1588_EVENT2_IN 0x0118 0x03a4 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA00__I2C3_SDA 0x0118 0x03a4 0x05b8 4 2
|
||||
#define MX6UL_PAD_LCD_DATA00__GPIO3_IO05 0x0118 0x03a4 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA00__SRC_BT_CFG00 0x0118 0x03a4 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA00__SAI1_MCLK 0x0118 0x03a4 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA01__LCDIF_DATA01 0x011c 0x03a8 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA01__PWM2_OUT 0x011c 0x03a8 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA01__ENET1_1588_EVENT2_OUT 0x011c 0x03a8 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA01__I2C3_SCL 0x011c 0x03a8 0x05b4 4 2
|
||||
#define MX6UL_PAD_LCD_DATA01__GPIO3_IO06 0x011c 0x03a8 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA01__SRC_BT_CFG01 0x011c 0x03a8 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA01__SAI1_TX_SYNC 0x011c 0x03a8 0x05ec 8 0
|
||||
#define MX6UL_PAD_LCD_DATA02__LCDIF_DATA02 0x0120 0x03ac 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA02__PWM3_OUT 0x0120 0x03ac 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA02__ENET1_1588_EVENT3_IN 0x0120 0x03ac 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA02__I2C4_SDA 0x0120 0x03ac 0x05c0 4 2
|
||||
#define MX6UL_PAD_LCD_DATA02__GPIO3_IO07 0x0120 0x03ac 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA02__SRC_BT_CFG02 0x0120 0x03ac 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA02__SAI1_TX_BCLK 0x0120 0x03ac 0x05e8 8 0
|
||||
#define MX6UL_PAD_LCD_DATA03__LCDIF_DATA03 0x0124 0x03b0 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA03__PWM4_OUT 0x0124 0x03b0 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA03__ENET1_1588_EVENT3_OUT 0x0124 0x03b0 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA03__I2C4_SCL 0x0124 0x03b0 0x05bc 4 2
|
||||
#define MX6UL_PAD_LCD_DATA03__GPIO3_IO08 0x0124 0x03b0 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA03__SRC_BT_CFG03 0x0124 0x03b0 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA03__SAI1_RX_DATA 0x0124 0x03b0 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA04__LCDIF_DATA04 0x0128 0x03b4 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA04__UART8_DCE_CTS 0x0128 0x03b4 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA04__UART8_DTE_RTS 0x0128 0x03b4 0x0658 1 2
|
||||
#define MX6UL_PAD_LCD_DATA04__ENET2_1588_EVENT2_IN 0x0128 0x03b4 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA04__SPDIF_SR_CLK 0x0128 0x03b4 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA04__GPIO3_IO09 0x0128 0x03b4 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA04__SRC_BT_CFG04 0x0128 0x03b4 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA04__SAI1_TX_DATA 0x0128 0x03b4 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA05__LCDIF_DATA05 0x012c 0x03b8 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA05__UART8_DCE_RTS 0x012c 0x03b8 0x0658 1 3
|
||||
#define MX6UL_PAD_LCD_DATA05__UART8_DTE_CTS 0x012c 0x03b8 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA05__ENET2_1588_EVENT2_OUT 0x012c 0x03b8 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA05__SPDIF_OUT 0x012c 0x03b8 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA05__GPIO3_IO10 0x012c 0x03b8 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA05__SRC_BT_CFG05 0x012c 0x03b8 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA05__ECSPI1_SS1 0x012c 0x03b8 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA06__LCDIF_DATA06 0x0130 0x03bc 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA06__UART7_DCE_CTS 0x0130 0x03bc 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA06__UART7_DTE_RTS 0x0130 0x03bc 0x0650 1 2
|
||||
#define MX6UL_PAD_LCD_DATA06__ENET2_1588_EVENT3_IN 0x0130 0x03bc 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA06__SPDIF_LOCK 0x0130 0x03bc 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA06__GPIO3_IO11 0x0130 0x03bc 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA06__SRC_BT_CFG06 0x0130 0x03bc 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA06__ECSPI1_SS2 0x0130 0x03bc 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA07__LCDIF_DATA07 0x0134 0x03c0 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA07__UART7_DCE_RTS 0x0134 0x03c0 0x0650 1 3
|
||||
#define MX6UL_PAD_LCD_DATA07__UART7_DTE_CTS 0x0134 0x03c0 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA07__ENET2_1588_EVENT3_OUT 0x0134 0x03c0 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA07__SPDIF_EXT_CLK 0x0134 0x03c0 0x061c 4 0
|
||||
#define MX6UL_PAD_LCD_DATA07__GPIO3_IO12 0x0134 0x03c0 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA07__SRC_BT_CFG07 0x0134 0x03c0 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA07__ECSPI1_SS3 0x0134 0x03c0 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA08__LCDIF_DATA08 0x0138 0x03c4 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA08__SPDIF_IN 0x0138 0x03c4 0x0618 1 2
|
||||
#define MX6UL_PAD_LCD_DATA08__CSI_DATA16 0x0138 0x03c4 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA08__EIM_DATA00 0x0138 0x03c4 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA08__GPIO3_IO13 0x0138 0x03c4 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA08__SRC_BT_CFG08 0x0138 0x03c4 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA08__FLEXCAN1_TX 0x0138 0x03c4 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA09__LCDIF_DATA09 0x013c 0x03c8 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA09__SAI3_MCLK 0x013c 0x03c8 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA09__CSI_DATA17 0x013c 0x03c8 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA09__EIM_DATA01 0x013c 0x03c8 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA09__GPIO3_IO14 0x013c 0x03c8 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA09__SRC_BT_CFG09 0x013c 0x03c8 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA09__FLEXCAN1_RX 0x013c 0x03c8 0x0584 8 2
|
||||
#define MX6UL_PAD_LCD_DATA10__LCDIF_DATA10 0x0140 0x03cc 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA10__SAI3_RX_SYNC 0x0140 0x03cc 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA10__CSI_DATA18 0x0140 0x03cc 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA10__EIM_DATA02 0x0140 0x03cc 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA10__GPIO3_IO15 0x0140 0x03cc 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA10__SRC_BT_CFG10 0x0140 0x03cc 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA10__FLEXCAN2_TX 0x0140 0x03cc 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA11__LCDIF_DATA11 0x0144 0x03d0 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA11__SAI3_RX_BCLK 0x0144 0x03d0 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA11__CSI_DATA19 0x0144 0x03d0 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA11__EIM_DATA03 0x0144 0x03d0 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA11__GPIO3_IO16 0x0144 0x03d0 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA11__SRC_BT_CFG11 0x0144 0x03d0 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA11__FLEXCAN2_RX 0x0144 0x03d0 0x0588 8 2
|
||||
#define MX6UL_PAD_LCD_DATA12__LCDIF_DATA12 0x0148 0x03d4 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA12__SAI3_TX_SYNC 0x0148 0x03d4 0x060c 1 1
|
||||
#define MX6UL_PAD_LCD_DATA12__CSI_DATA20 0x0148 0x03d4 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA12__EIM_DATA04 0x0148 0x03d4 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA12__GPIO3_IO17 0x0148 0x03d4 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA12__SRC_BT_CFG12 0x0148 0x03d4 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA12__ECSPI1_RDY 0x0148 0x03d4 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA13__LCDIF_DATA13 0x014c 0x03d8 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA13__SAI3_TX_BCLK 0x014c 0x03d8 0x0608 1 1
|
||||
#define MX6UL_PAD_LCD_DATA13__CSI_DATA21 0x014c 0x03d8 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA13__EIM_DATA05 0x014c 0x03d8 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA13__GPIO3_IO18 0x014c 0x03d8 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA13__SRC_BT_CFG13 0x014c 0x03d8 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA13__USDHC2_RESET_B 0x014c 0x03d8 0x0000 8 0
|
||||
#define MX6UL_PAD_LCD_DATA14__LCDIF_DATA14 0x0150 0x03dc 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA14__SAI3_RX_DATA 0x0150 0x03dc 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA14__CSI_DATA22 0x0150 0x03dc 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA14__EIM_DATA06 0x0150 0x03dc 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA14__GPIO3_IO19 0x0150 0x03dc 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA14__SRC_BT_CFG14 0x0150 0x03dc 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA14__USDHC2_DATA4 0x0150 0x03dc 0x068c 8 0
|
||||
#define MX6UL_PAD_LCD_DATA15__LCDIF_DATA15 0x0154 0x03e0 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA15__SAI3_TX_DATA 0x0154 0x03e0 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA15__CSI_DATA23 0x0154 0x03e0 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA15__EIM_DATA07 0x0154 0x03e0 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA15__GPIO3_IO20 0x0154 0x03e0 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA15__SRC_BT_CFG15 0x0154 0x03e0 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA15__USDHC2_DATA5 0x0154 0x03e0 0x0690 8 0
|
||||
#define MX6UL_PAD_LCD_DATA16__LCDIF_DATA16 0x0158 0x03e4 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA16__UART7_DCE_TX 0x0158 0x03e4 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA16__UART7_DTE_RX 0x0158 0x03e4 0x0654 1 2
|
||||
#define MX6UL_PAD_LCD_DATA16__CSI_DATA01 0x0158 0x03e4 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA16__EIM_DATA08 0x0158 0x03e4 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA16__GPIO3_IO21 0x0158 0x03e4 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA16__SRC_BT_CFG24 0x0158 0x03e4 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA16__USDHC2_DATA6 0x0158 0x03e4 0x0694 8 0
|
||||
#define MX6UL_PAD_LCD_DATA17__LCDIF_DATA17 0x015c 0x03e8 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA17__UART7_DCE_RX 0x015c 0x03e8 0x0654 1 3
|
||||
#define MX6UL_PAD_LCD_DATA17__UART7_DTE_TX 0x015c 0x03e8 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA17__CSI_DATA00 0x015c 0x03e8 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA17__EIM_DATA09 0x015c 0x03e8 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA17__GPIO3_IO22 0x015c 0x03e8 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA17__SRC_BT_CFG25 0x015c 0x03e8 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA17__USDHC2_DATA7 0x015c 0x03e8 0x0698 8 0
|
||||
#define MX6UL_PAD_LCD_DATA18__LCDIF_DATA18 0x0160 0x03ec 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA18__PWM5_OUT 0x0160 0x03ec 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA18__CA7_MX6UL_EVENTO 0x0160 0x03ec 0x0000 2 0
|
||||
#define MX6UL_PAD_LCD_DATA18__CSI_DATA10 0x0160 0x03ec 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA18__EIM_DATA10 0x0160 0x03ec 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA18__GPIO3_IO23 0x0160 0x03ec 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA18__SRC_BT_CFG26 0x0160 0x03ec 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA18__USDHC2_CMD 0x0160 0x03ec 0x0678 8 1
|
||||
#define MX6UL_PAD_LCD_DATA19__EIM_DATA11 0x0164 0x03f0 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA19__GPIO3_IO24 0x0164 0x03f0 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA19__SRC_BT_CFG27 0x0164 0x03f0 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA19__USDHC2_CLK 0x0164 0x03f0 0x0670 8 1
|
||||
#define MX6UL_PAD_LCD_DATA19__LCDIF_DATA19 0x0164 0x03f0 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA19__PWM6_OUT 0x0164 0x03f0 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA19__WDOG1_WDOG_ANY 0x0164 0x03f0 0x0000 2 0
|
||||
#define MX6UL_PAD_LCD_DATA19__CSI_DATA11 0x0164 0x03f0 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA20__EIM_DATA12 0x0168 0x03f4 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA20__GPIO3_IO25 0x0168 0x03f4 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA20__SRC_BT_CFG28 0x0168 0x03f4 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA20__USDHC2_DATA0 0x0168 0x03f4 0x067c 8 1
|
||||
#define MX6UL_PAD_LCD_DATA20__LCDIF_DATA20 0x0168 0x03f4 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA20__UART8_DCE_TX 0x0168 0x03f4 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA20__UART8_DTE_RX 0x0168 0x03f4 0x065c 1 2
|
||||
#define MX6UL_PAD_LCD_DATA20__ECSPI1_SCLK 0x0168 0x03f4 0x0534 2 0
|
||||
#define MX6UL_PAD_LCD_DATA20__CSI_DATA12 0x0168 0x03f4 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA21__LCDIF_DATA21 0x016c 0x03f8 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA21__UART8_DCE_RX 0x016c 0x03f8 0x065c 1 3
|
||||
#define MX6UL_PAD_LCD_DATA21__UART8_DTE_TX 0x016c 0x03f8 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA21__ECSPI1_SS0 0x016c 0x03f8 0x0000 2 0
|
||||
#define MX6UL_PAD_LCD_DATA21__CSI_DATA13 0x016c 0x03f8 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA21__EIM_DATA13 0x016c 0x03f8 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA21__GPIO3_IO26 0x016c 0x03f8 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA21__SRC_BT_CFG29 0x016c 0x03f8 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA21__USDHC2_DATA1 0x016c 0x03f8 0x0680 8 1
|
||||
#define MX6UL_PAD_LCD_DATA22__LCDIF_DATA22 0x0170 0x03fc 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA22__MQS_RIGHT 0x0170 0x03fc 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA22__ECSPI1_MOSI 0x0170 0x03fc 0x053c 2 0
|
||||
#define MX6UL_PAD_LCD_DATA22__CSI_DATA14 0x0170 0x03fc 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA22__EIM_DATA14 0x0170 0x03fc 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA22__GPIO3_IO27 0x0170 0x03fc 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA22__SRC_BT_CFG30 0x0170 0x03fc 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA22__USDHC2_DATA2 0x0170 0x03fc 0x0684 8 0
|
||||
#define MX6UL_PAD_LCD_DATA23__LCDIF_DATA23 0x0174 0x0400 0x0000 0 0
|
||||
#define MX6UL_PAD_LCD_DATA23__MQS_LEFT 0x0174 0x0400 0x0000 1 0
|
||||
#define MX6UL_PAD_LCD_DATA23__ECSPI1_MISO 0x0174 0x0400 0x0538 2 0
|
||||
#define MX6UL_PAD_LCD_DATA23__CSI_DATA15 0x0174 0x0400 0x0000 3 0
|
||||
#define MX6UL_PAD_LCD_DATA23__EIM_DATA15 0x0174 0x0400 0x0000 4 0
|
||||
#define MX6UL_PAD_LCD_DATA23__GPIO3_IO28 0x0174 0x0400 0x0000 5 0
|
||||
#define MX6UL_PAD_LCD_DATA23__SRC_BT_CFG31 0x0174 0x0400 0x0000 6 0
|
||||
#define MX6UL_PAD_LCD_DATA23__USDHC2_DATA3 0x0174 0x0400 0x0688 8 1
|
||||
#define MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B 0x0178 0x0404 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_RE_B__USDHC2_CLK 0x0178 0x0404 0x0670 1 2
|
||||
#define MX6UL_PAD_NAND_RE_B__QSPI_B_SCLK 0x0178 0x0404 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_RE_B__KPP_ROW00 0x0178 0x0404 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_RE_B__EIM_EB_B00 0x0178 0x0404 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_RE_B__GPIO4_IO00 0x0178 0x0404 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_RE_B__ECSPI3_SS2 0x0178 0x0404 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B 0x017c 0x0408 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_WE_B__USDHC2_CMD 0x017c 0x0408 0x0678 1 2
|
||||
#define MX6UL_PAD_NAND_WE_B__QSPI_B_SS0_B 0x017c 0x0408 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_WE_B__KPP_COL00 0x017c 0x0408 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_WE_B__EIM_EB_B01 0x017c 0x0408 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_WE_B__GPIO4_IO01 0x017c 0x0408 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_WE_B__ECSPI3_SS3 0x017c 0x0408 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00 0x0180 0x040c 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_DATA00__USDHC2_DATA0 0x0180 0x040c 0x067c 1 2
|
||||
#define MX6UL_PAD_NAND_DATA00__QSPI_B_SS1_B 0x0180 0x040c 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_DATA00__KPP_ROW01 0x0180 0x040c 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_DATA00__EIM_AD08 0x0180 0x040c 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_DATA00__GPIO4_IO02 0x0180 0x040c 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_DATA00__ECSPI4_RDY 0x0180 0x040c 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01 0x0184 0x0410 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_DATA01__USDHC2_DATA1 0x0184 0x0410 0x0680 1 2
|
||||
#define MX6UL_PAD_NAND_DATA01__QSPI_B_DQS 0x0184 0x0410 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_DATA01__KPP_COL01 0x0184 0x0410 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_DATA01__EIM_AD09 0x0184 0x0410 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_DATA01__GPIO4_IO03 0x0184 0x0410 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_DATA01__ECSPI4_SS1 0x0184 0x0410 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02 0x0188 0x0414 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_DATA02__USDHC2_DATA2 0x0188 0x0414 0x0684 1 1
|
||||
#define MX6UL_PAD_NAND_DATA02__QSPI_B_DATA00 0x0188 0x0414 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_DATA02__KPP_ROW02 0x0188 0x0414 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_DATA02__EIM_AD10 0x0188 0x0414 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_DATA02__GPIO4_IO04 0x0188 0x0414 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_DATA02__ECSPI4_SS2 0x0188 0x0414 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03 0x018c 0x0418 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_DATA03__USDHC2_DATA3 0x018c 0x0418 0x0688 1 2
|
||||
#define MX6UL_PAD_NAND_DATA03__QSPI_B_DATA01 0x018c 0x0418 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_DATA03__KPP_COL02 0x018c 0x0418 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_DATA03__EIM_AD11 0x018c 0x0418 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_DATA03__GPIO4_IO05 0x018c 0x0418 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_DATA03__ECSPI4_SS3 0x018c 0x0418 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04 0x0190 0x041c 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_DATA04__USDHC2_DATA4 0x0190 0x041c 0x068c 1 1
|
||||
#define MX6UL_PAD_NAND_DATA04__QSPI_B_DATA02 0x0190 0x041c 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_DATA04__ECSPI4_SCLK 0x0190 0x041c 0x0564 3 1
|
||||
#define MX6UL_PAD_NAND_DATA04__EIM_AD12 0x0190 0x041c 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_DATA04__GPIO4_IO06 0x0190 0x041c 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_DATA04__UART2_DCE_TX 0x0190 0x041c 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_DATA04__UART2_DTE_RX 0x0190 0x041c 0x062c 8 2
|
||||
#define MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05 0x0194 0x0420 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_DATA05__USDHC2_DATA5 0x0194 0x0420 0x0690 1 1
|
||||
#define MX6UL_PAD_NAND_DATA05__QSPI_B_DATA03 0x0194 0x0420 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_DATA05__ECSPI4_MOSI 0x0194 0x0420 0x056c 3 1
|
||||
#define MX6UL_PAD_NAND_DATA05__EIM_AD13 0x0194 0x0420 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_DATA05__GPIO4_IO07 0x0194 0x0420 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_DATA05__UART2_DCE_RX 0x0194 0x0420 0x062c 8 3
|
||||
#define MX6UL_PAD_NAND_DATA05__UART2_DTE_TX 0x0194 0x0420 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06 0x0198 0x0424 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_DATA06__USDHC2_DATA6 0x0198 0x0424 0x0694 1 1
|
||||
#define MX6UL_PAD_NAND_DATA06__SAI2_RX_BCLK 0x0198 0x0424 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_DATA06__ECSPI4_MISO 0x0198 0x0424 0x0568 3 1
|
||||
#define MX6UL_PAD_NAND_DATA06__EIM_AD14 0x0198 0x0424 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_DATA06__GPIO4_IO08 0x0198 0x0424 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_DATA06__UART2_DCE_CTS 0x0198 0x0424 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_DATA06__UART2_DTE_RTS 0x0198 0x0424 0x0628 8 4
|
||||
#define MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07 0x019c 0x0428 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_DATA07__USDHC2_DATA7 0x019c 0x0428 0x0698 1 1
|
||||
#define MX6UL_PAD_NAND_DATA07__QSPI_A_SS1_B 0x019c 0x0428 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_DATA07__ECSPI4_SS0 0x019c 0x0428 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_DATA07__EIM_AD15 0x019c 0x0428 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_DATA07__GPIO4_IO09 0x019c 0x0428 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_DATA07__UART2_DCE_RTS 0x019c 0x0428 0x0628 8 5
|
||||
#define MX6UL_PAD_NAND_DATA07__UART2_DTE_CTS 0x019c 0x0428 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_ALE__RAWNAND_ALE 0x01a0 0x042c 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_ALE__USDHC2_RESET_B 0x01a0 0x042c 0x0000 1 0
|
||||
#define MX6UL_PAD_NAND_ALE__QSPI_A_DQS 0x01a0 0x042c 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_ALE__PWM3_OUT 0x01a0 0x042c 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_ALE__EIM_ADDR17 0x01a0 0x042c 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_ALE__GPIO4_IO10 0x01a0 0x042c 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_ALE__ECSPI3_SS1 0x01a0 0x042c 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B 0x01a4 0x0430 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_WP_B__USDHC1_RESET_B 0x01a4 0x0430 0x0000 1 0
|
||||
#define MX6UL_PAD_NAND_WP_B__QSPI_A_SCLK 0x01a4 0x0430 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_WP_B__PWM4_OUT 0x01a4 0x0430 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_WP_B__EIM_BCLK 0x01a4 0x0430 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_WP_B__GPIO4_IO11 0x01a4 0x0430 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_WP_B__ECSPI3_RDY 0x01a4 0x0430 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B 0x01a8 0x0434 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_READY_B__USDHC1_DATA4 0x01a8 0x0434 0x0000 1 0
|
||||
#define MX6UL_PAD_NAND_READY_B__QSPI_A_DATA00 0x01a8 0x0434 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_READY_B__ECSPI3_SS0 0x01a8 0x0434 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_READY_B__EIM_CS1_B 0x01a8 0x0434 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_READY_B__GPIO4_IO12 0x01a8 0x0434 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_READY_B__UART3_DCE_TX 0x01a8 0x0434 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_READY_B__UART3_DTE_RX 0x01a8 0x0434 0x0634 8 2
|
||||
#define MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B 0x01ac 0x0438 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_CE0_B__USDHC1_DATA5 0x01ac 0x0438 0x0000 1 0
|
||||
#define MX6UL_PAD_NAND_CE0_B__QSPI_A_DATA01 0x01ac 0x0438 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_CE0_B__ECSPI3_SCLK 0x01ac 0x0438 0x0554 3 1
|
||||
#define MX6UL_PAD_NAND_CE0_B__EIM_DTACK_B 0x01ac 0x0438 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_CE0_B__GPIO4_IO13 0x01ac 0x0438 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_CE0_B__UART3_DCE_RX 0x01ac 0x0438 0x0634 8 3
|
||||
#define MX6UL_PAD_NAND_CE0_B__UART3_DTE_TX 0x01ac 0x0438 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_CE1_B__RAWNAND_CE1_B 0x01b0 0x043c 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_CE1_B__USDHC1_DATA6 0x01b0 0x043c 0x0000 1 0
|
||||
#define MX6UL_PAD_NAND_CE1_B__QSPI_A_DATA02 0x01b0 0x043c 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_CE1_B__ECSPI3_MOSI 0x01b0 0x043c 0x055c 3 1
|
||||
#define MX6UL_PAD_NAND_CE1_B__EIM_ADDR18 0x01b0 0x043c 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_CE1_B__GPIO4_IO14 0x01b0 0x043c 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_CE1_B__UART3_DCE_CTS 0x01b0 0x043c 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_CE1_B__UART3_DTE_RTS 0x01b0 0x043c 0x0630 8 2
|
||||
#define MX6UL_PAD_NAND_CLE__RAWNAND_CLE 0x01b4 0x0440 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_CLE__USDHC1_DATA7 0x01b4 0x0440 0x0000 1 0
|
||||
#define MX6UL_PAD_NAND_CLE__QSPI_A_DATA03 0x01b4 0x0440 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_CLE__ECSPI3_MISO 0x01b4 0x0440 0x0558 3 1
|
||||
#define MX6UL_PAD_NAND_CLE__EIM_ADDR16 0x01b4 0x0440 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_CLE__GPIO4_IO15 0x01b4 0x0440 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_CLE__UART3_DCE_RTS 0x01b4 0x0440 0x0630 8 3
|
||||
#define MX6UL_PAD_NAND_CLE__UART3_DTE_CTS 0x01b4 0x0440 0x0000 8 0
|
||||
#define MX6UL_PAD_NAND_DQS__RAWNAND_DQS 0x01b8 0x0444 0x0000 0 0
|
||||
#define MX6UL_PAD_NAND_DQS__CSI_FIELD 0x01b8 0x0444 0x0530 1 1
|
||||
#define MX6UL_PAD_NAND_DQS__QSPI_A_SS0_B 0x01b8 0x0444 0x0000 2 0
|
||||
#define MX6UL_PAD_NAND_DQS__PWM5_OUT 0x01b8 0x0444 0x0000 3 0
|
||||
#define MX6UL_PAD_NAND_DQS__EIM_WAIT 0x01b8 0x0444 0x0000 4 0
|
||||
#define MX6UL_PAD_NAND_DQS__GPIO4_IO16 0x01b8 0x0444 0x0000 5 0
|
||||
#define MX6UL_PAD_NAND_DQS__SDMA_EXT_EVENT01 0x01b8 0x0444 0x0000 6 0
|
||||
#define MX6UL_PAD_NAND_DQS__SPDIF_EXT_CLK 0x01b8 0x0444 0x061c 8 1
|
||||
#define MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x01bc 0x0448 0x0000 0 0
|
||||
#define MX6UL_PAD_SD1_CMD__GPT2_COMPARE1 0x01bc 0x0448 0x0000 1 0
|
||||
#define MX6UL_PAD_SD1_CMD__SAI2_RX_SYNC 0x01bc 0x0448 0x0000 2 0
|
||||
#define MX6UL_PAD_SD1_CMD__SPDIF_OUT 0x01bc 0x0448 0x0000 3 0
|
||||
#define MX6UL_PAD_SD1_CMD__EIM_ADDR19 0x01bc 0x0448 0x0000 4 0
|
||||
#define MX6UL_PAD_SD1_CMD__GPIO2_IO16 0x01bc 0x0448 0x0000 5 0
|
||||
#define MX6UL_PAD_SD1_CMD__SDMA_EXT_EVENT00 0x01bc 0x0448 0x0000 6 0
|
||||
#define MX6UL_PAD_SD1_CMD__USB_OTG1_PWR 0x01bc 0x0448 0x0000 8 0
|
||||
#define MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x01c0 0x044c 0x0000 0 0
|
||||
#define MX6UL_PAD_SD1_CLK__GPT2_COMPARE2 0x01c0 0x044c 0x0000 1 0
|
||||
#define MX6UL_PAD_SD1_CLK__SAI2_MCLK 0x01c0 0x044c 0x0000 2 0
|
||||
#define MX6UL_PAD_SD1_CLK__SPDIF_IN 0x01c0 0x044c 0x0618 3 3
|
||||
#define MX6UL_PAD_SD1_CLK__EIM_ADDR20 0x01c0 0x044c 0x0000 4 0
|
||||
#define MX6UL_PAD_SD1_CLK__GPIO2_IO17 0x01c0 0x044c 0x0000 5 0
|
||||
#define MX6UL_PAD_SD1_CLK__USB_OTG1_OC 0x01c0 0x044c 0x0664 8 2
|
||||
#define MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x01c4 0x0450 0x0000 0 0
|
||||
#define MX6UL_PAD_SD1_DATA0__GPT2_COMPARE3 0x01c4 0x0450 0x0000 1 0
|
||||
#define MX6UL_PAD_SD1_DATA0__SAI2_TX_SYNC 0x01c4 0x0450 0x05fc 2 1
|
||||
#define MX6UL_PAD_SD1_DATA0__FLEXCAN1_TX 0x01c4 0x0450 0x0000 3 0
|
||||
#define MX6UL_PAD_SD1_DATA0__EIM_ADDR21 0x01c4 0x0450 0x0000 4 0
|
||||
#define MX6UL_PAD_SD1_DATA0__GPIO2_IO18 0x01c4 0x0450 0x0000 5 0
|
||||
#define MX6UL_PAD_SD1_DATA0__ANATOP_OTG1_ID 0x01c4 0x0450 0x04b8 8 2
|
||||
#define MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x01c8 0x0454 0x0000 0 0
|
||||
#define MX6UL_PAD_SD1_DATA1__GPT2_CLK 0x01c8 0x0454 0x05a0 1 1
|
||||
#define MX6UL_PAD_SD1_DATA1__SAI2_TX_BCLK 0x01c8 0x0454 0x05f8 2 1
|
||||
#define MX6UL_PAD_SD1_DATA1__FLEXCAN1_RX 0x01c8 0x0454 0x0584 3 3
|
||||
#define MX6UL_PAD_SD1_DATA1__EIM_ADDR22 0x01c8 0x0454 0x0000 4 0
|
||||
#define MX6UL_PAD_SD1_DATA1__GPIO2_IO19 0x01c8 0x0454 0x0000 5 0
|
||||
#define MX6UL_PAD_SD1_DATA1__USB_OTG2_PWR 0x01c8 0x0454 0x0000 8 0
|
||||
#define MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x01cc 0x0458 0x0000 0 0
|
||||
#define MX6UL_PAD_SD1_DATA2__GPT2_CAPTURE1 0x01cc 0x0458 0x0598 1 1
|
||||
#define MX6UL_PAD_SD1_DATA2__SAI2_RX_DATA 0x01cc 0x0458 0x05f4 2 1
|
||||
#define MX6UL_PAD_SD1_DATA2__FLEXCAN2_TX 0x01cc 0x0458 0x0000 3 0
|
||||
#define MX6UL_PAD_SD1_DATA2__EIM_ADDR23 0x01cc 0x0458 0x0000 4 0
|
||||
#define MX6UL_PAD_SD1_DATA2__GPIO2_IO20 0x01cc 0x0458 0x0000 5 0
|
||||
#define MX6UL_PAD_SD1_DATA2__CCM_CLKO1 0x01cc 0x0458 0x0000 6 0
|
||||
#define MX6UL_PAD_SD1_DATA2__USB_OTG2_OC 0x01cc 0x0458 0x0660 8 2
|
||||
#define MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x01d0 0x045c 0x0000 0 0
|
||||
#define MX6UL_PAD_SD1_DATA3__GPT2_CAPTURE2 0x01d0 0x045c 0x059c 1 1
|
||||
#define MX6UL_PAD_SD1_DATA3__SAI2_TX_DATA 0x01d0 0x045c 0x0000 2 0
|
||||
#define MX6UL_PAD_SD1_DATA3__FLEXCAN2_RX 0x01d0 0x045c 0x0588 3 3
|
||||
#define MX6UL_PAD_SD1_DATA3__EIM_ADDR24 0x01d0 0x045c 0x0000 4 0
|
||||
#define MX6UL_PAD_SD1_DATA3__GPIO2_IO21 0x01d0 0x045c 0x0000 5 0
|
||||
#define MX6UL_PAD_SD1_DATA3__CCM_CLKO2 0x01d0 0x045c 0x0000 6 0
|
||||
#define MX6UL_PAD_SD1_DATA3__ANATOP_OTG2_ID 0x01d0 0x045c 0x04bc 8 2
|
||||
#define MX6UL_PAD_CSI_MCLK__CSI_MCLK 0x01d4 0x0460 0x0000 0 0
|
||||
#define MX6UL_PAD_CSI_MCLK__USDHC2_CD_B 0x01d4 0x0460 0x0674 1 0
|
||||
#define MX6UL_PAD_CSI_MCLK__RAWNAND_CE2_B 0x01d4 0x0460 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_MCLK__I2C1_SDA 0x01d4 0x0460 0x05a8 3 0
|
||||
#define MX6UL_PAD_CSI_MCLK__EIM_CS0_B 0x01d4 0x0460 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_MCLK__GPIO4_IO17 0x01d4 0x0460 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_MCLK__SNVS_HP_VIO_5_CTL 0x01d4 0x0460 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_MCLK__UART6_DCE_TX 0x01d4 0x0460 0x0000 8 0
|
||||
#define MX6UL_PAD_CSI_MCLK__UART6_DTE_RX 0x01d4 0x0460 0x064c 8 0
|
||||
#define MX6UL_PAD_CSI_PIXCLK__CSI_PIXCLK 0x01d8 0x0464 0x0528 0 1
|
||||
#define MX6UL_PAD_CSI_PIXCLK__USDHC2_WP 0x01d8 0x0464 0x069c 1 2
|
||||
#define MX6UL_PAD_CSI_PIXCLK__RAWNAND_CE3_B 0x01d8 0x0464 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_PIXCLK__I2C1_SCL 0x01d8 0x0464 0x05a4 3 2
|
||||
#define MX6UL_PAD_CSI_PIXCLK__EIM_OE 0x01d8 0x0464 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_PIXCLK__GPIO4_IO18 0x01d8 0x0464 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_PIXCLK__SNVS_HP_VIO_5 0x01d8 0x0464 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_PIXCLK__UART6_DCE_RX 0x01d8 0x0464 0x064c 8 3
|
||||
#define MX6UL_PAD_CSI_PIXCLK__UART6_DTE_TX 0x01d8 0x0464 0x0000 8 0
|
||||
#define MX6UL_PAD_CSI_VSYNC__CSI_VSYNC 0x01dc 0x0468 0x052c 0 0
|
||||
#define MX6UL_PAD_CSI_VSYNC__USDHC2_CLK 0x01dc 0x0468 0x0670 1 0
|
||||
#define MX6UL_PAD_CSI_VSYNC__SIM1_PORT1_CLK 0x01dc 0x0468 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_VSYNC__I2C2_SDA 0x01dc 0x0468 0x05b0 3 0
|
||||
#define MX6UL_PAD_CSI_VSYNC__EIM_RW 0x01dc 0x0468 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_VSYNC__GPIO4_IO19 0x01dc 0x0468 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_VSYNC__PWM7_OUT 0x01dc 0x0468 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_VSYNC__UART6_DCE_RTS 0x01dc 0x0468 0x0648 8 0
|
||||
#define MX6UL_PAD_CSI_VSYNC__UART6_DTE_CTS 0x01dc 0x0468 0x0000 8 0
|
||||
#define MX6UL_PAD_CSI_HSYNC__CSI_HSYNC 0x01e0 0x046c 0x0524 0 0
|
||||
#define MX6UL_PAD_CSI_HSYNC__USDHC2_CMD 0x01e0 0x046c 0x0678 1 0
|
||||
#define MX6UL_PAD_CSI_HSYNC__SIM1_PORT1_PD 0x01e0 0x046c 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_HSYNC__I2C2_SCL 0x01e0 0x046c 0x05ac 3 0
|
||||
#define MX6UL_PAD_CSI_HSYNC__EIM_LBA_B 0x01e0 0x046c 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_HSYNC__GPIO4_IO20 0x01e0 0x046c 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_HSYNC__PWM8_OUT 0x01e0 0x046c 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_HSYNC__UART6_DCE_CTS 0x01e0 0x046c 0x0000 8 0
|
||||
#define MX6UL_PAD_CSI_HSYNC__UART6_DTE_RTS 0x01e0 0x046c 0x0648 8 1
|
||||
#define MX6UL_PAD_CSI_DATA00__CSI_DATA02 0x01e4 0x0470 0x04c4 0 0
|
||||
#define MX6UL_PAD_CSI_DATA00__USDHC2_DATA0 0x01e4 0x0470 0x067c 1 0
|
||||
#define MX6UL_PAD_CSI_DATA00__SIM1_PORT1_RST_B 0x01e4 0x0470 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_DATA00__ECSPI2_SCLK 0x01e4 0x0470 0x0544 3 0
|
||||
#define MX6UL_PAD_CSI_DATA00__EIM_AD00 0x01e4 0x0470 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_DATA00__GPIO4_IO21 0x01e4 0x0470 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_DATA00__SRC_INT_BOOT 0x01e4 0x0470 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_DATA00__UART5_DCE_TX 0x01e4 0x0470 0x0000 8 0
|
||||
#define MX6UL_PAD_CSI_DATA00__UART5_DTE_RX 0x01e4 0x0470 0x0644 8 0
|
||||
#define MX6UL_PAD_CSI_DATA01__CSI_DATA03 0x01e8 0x0474 0x04c8 0 0
|
||||
#define MX6UL_PAD_CSI_DATA01__USDHC2_DATA1 0x01e8 0x0474 0x0680 1 0
|
||||
#define MX6UL_PAD_CSI_DATA01__SIM1_PORT1_SVEN 0x01e8 0x0474 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_DATA01__ECSPI2_SS0 0x01e8 0x0474 0x0000 3 0
|
||||
#define MX6UL_PAD_CSI_DATA01__EIM_AD01 0x01e8 0x0474 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_DATA01__GPIO4_IO22 0x01e8 0x0474 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_DATA01__SAI1_MCLK 0x01e8 0x0474 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_DATA01__UART5_DCE_RX 0x01e8 0x0474 0x0644 8 1
|
||||
#define MX6UL_PAD_CSI_DATA01__UART5_DTE_TX 0x01e8 0x0474 0x0000 8 0
|
||||
#define MX6UL_PAD_CSI_DATA02__CSI_DATA04 0x01ec 0x0478 0x04d8 0 1
|
||||
#define MX6UL_PAD_CSI_DATA02__USDHC2_DATA2 0x01ec 0x0478 0x0684 1 2
|
||||
#define MX6UL_PAD_CSI_DATA02__SIM1_PORT1_TRXD 0x01ec 0x0478 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_DATA02__ECSPI2_MOSI 0x01ec 0x0478 0x054c 3 1
|
||||
#define MX6UL_PAD_CSI_DATA02__EIM_AD02 0x01ec 0x0478 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_DATA02__GPIO4_IO23 0x01ec 0x0478 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_DATA02__SAI1_RX_SYNC 0x01ec 0x0478 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_DATA02__UART5_DCE_RTS 0x01ec 0x0478 0x0640 8 5
|
||||
#define MX6UL_PAD_CSI_DATA02__UART5_DTE_CTS 0x01ec 0x0478 0x0000 8 0
|
||||
#define MX6UL_PAD_CSI_DATA03__CSI_DATA05 0x01f0 0x047c 0x04cc 0 0
|
||||
#define MX6UL_PAD_CSI_DATA03__USDHC2_DATA3 0x01f0 0x047c 0x0688 1 0
|
||||
#define MX6UL_PAD_CSI_DATA03__SIM2_PORT1_PD 0x01f0 0x047c 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_DATA03__ECSPI2_MISO 0x01f0 0x047c 0x0548 3 0
|
||||
#define MX6UL_PAD_CSI_DATA03__EIM_AD03 0x01f0 0x047c 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_DATA03__GPIO4_IO24 0x01f0 0x047c 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_DATA03__SAI1_RX_BCLK 0x01f0 0x047c 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_DATA03__UART5_DCE_CTS 0x01f0 0x047c 0x0000 8 0
|
||||
#define MX6UL_PAD_CSI_DATA03__UART5_DTE_RTS 0x01f0 0x047c 0x0640 8 0
|
||||
#define MX6UL_PAD_CSI_DATA04__CSI_DATA06 0x01f4 0x0480 0x04dc 0 1
|
||||
#define MX6UL_PAD_CSI_DATA04__USDHC2_DATA4 0x01f4 0x0480 0x068c 1 2
|
||||
#define MX6UL_PAD_CSI_DATA04__SIM2_PORT1_CLK 0x01f4 0x0480 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_DATA04__ECSPI1_SCLK 0x01f4 0x0480 0x0534 3 1
|
||||
#define MX6UL_PAD_CSI_DATA04__EIM_AD04 0x01f4 0x0480 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_DATA04__GPIO4_IO25 0x01f4 0x0480 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_DATA04__SAI1_TX_SYNC 0x01f4 0x0480 0x05ec 6 1
|
||||
#define MX6UL_PAD_CSI_DATA04__USDHC1_WP 0x01f4 0x0480 0x066c 8 2
|
||||
#define MX6UL_PAD_CSI_DATA05__CSI_DATA07 0x01f8 0x0484 0x04e0 0 1
|
||||
#define MX6UL_PAD_CSI_DATA05__USDHC2_DATA5 0x01f8 0x0484 0x0690 1 2
|
||||
#define MX6UL_PAD_CSI_DATA05__SIM2_PORT1_RST_B 0x01f8 0x0484 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_DATA05__ECSPI1_SS0 0x01f8 0x0484 0x0000 3 0
|
||||
#define MX6UL_PAD_CSI_DATA05__EIM_AD05 0x01f8 0x0484 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_DATA05__GPIO4_IO26 0x01f8 0x0484 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_DATA05__SAI1_TX_BCLK 0x01f8 0x0484 0x05e8 6 1
|
||||
#define MX6UL_PAD_CSI_DATA05__USDHC1_CD_B 0x01f8 0x0484 0x0668 8 2
|
||||
#define MX6UL_PAD_CSI_DATA06__CSI_DATA08 0x01fc 0x0488 0x04e4 0 1
|
||||
#define MX6UL_PAD_CSI_DATA06__USDHC2_DATA6 0x01fc 0x0488 0x0694 1 2
|
||||
#define MX6UL_PAD_CSI_DATA06__SIM2_PORT1_SVEN 0x01fc 0x0488 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_DATA06__ECSPI1_MOSI 0x01fc 0x0488 0x053c 3 1
|
||||
#define MX6UL_PAD_CSI_DATA06__EIM_AD06 0x01fc 0x0488 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_DATA06__GPIO4_IO27 0x01fc 0x0488 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_DATA06__SAI1_RX_DATA 0x01fc 0x0488 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_DATA06__USDHC1_RESET_B 0x01fc 0x0488 0x0000 8 0
|
||||
#define MX6UL_PAD_CSI_DATA07__CSI_DATA09 0x0200 0x048c 0x04e8 0 1
|
||||
#define MX6UL_PAD_CSI_DATA07__USDHC2_DATA7 0x0200 0x048c 0x0698 1 2
|
||||
#define MX6UL_PAD_CSI_DATA07__SIM2_PORT1_TRXD 0x0200 0x048c 0x0000 2 0
|
||||
#define MX6UL_PAD_CSI_DATA07__ECSPI1_MISO 0x0200 0x048c 0x0538 3 1
|
||||
#define MX6UL_PAD_CSI_DATA07__EIM_AD07 0x0200 0x048c 0x0000 4 0
|
||||
#define MX6UL_PAD_CSI_DATA07__GPIO4_IO28 0x0200 0x048c 0x0000 5 0
|
||||
#define MX6UL_PAD_CSI_DATA07__SAI1_TX_DATA 0x0200 0x048c 0x0000 6 0
|
||||
#define MX6UL_PAD_CSI_DATA07__USDHC1_VSELECT 0x0200 0x048c 0x0000 8 0
|
||||
|
||||
#endif /* __DTS_IMX6UL_PINFUNC_H */
|
||||
527
arch/arm/dts/imx6ull-14x14-evk.dts
Normal file
527
arch/arm/dts/imx6ull-14x14-evk.dts
Normal file
@@ -0,0 +1,527 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include "imx6ull.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Freescale i.MX6 ULL 14x14 EVK Board";
|
||||
compatible = "fsl,imx6ull-14x14-evk", "fsl,imx6ull";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart1;
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x80000000 0x20000000>;
|
||||
};
|
||||
|
||||
backlight {
|
||||
compatible = "pwm-backlight";
|
||||
pwms = <&pwm1 0 5000000>;
|
||||
brightness-levels = <0 4 8 16 32 64 128 255>;
|
||||
default-brightness-level = <6>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
reg_can_3v3: regulator@0 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <0>;
|
||||
regulator-name = "can-3v3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpios = <&gpio_spi 3 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
reg_sd1_vmmc: regulator@1 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "VSD_3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_gpio_dvfs: regulator-gpio {
|
||||
compatible = "regulator-gpio";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_dvfs>;
|
||||
regulator-min-microvolt = <1300000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-name = "gpio_dvfs";
|
||||
regulator-type = "voltage";
|
||||
gpios = <&gpio5 3 GPIO_ACTIVE_HIGH>;
|
||||
states = <1300000 0x1 1400000 0x0>;
|
||||
};
|
||||
};
|
||||
|
||||
spi4 {
|
||||
compatible = "spi-gpio";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spi4>;
|
||||
status = "okay";
|
||||
gpio-sck = <&gpio5 11 0>;
|
||||
gpio-mosi = <&gpio5 10 0>;
|
||||
cs-gpios = <&gpio5 7 0>;
|
||||
num-chipselects = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
gpio_spi: gpio_spi@0 {
|
||||
compatible = "fairchild,74hc595";
|
||||
gpio-controller;
|
||||
oe-gpios = <&gpio5 8 0>;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0>;
|
||||
registers-number = <1>;
|
||||
registers-default = /bits/ 8 <0x57>;
|
||||
spi-max-frequency = <100000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
arm-supply = <®_arm>;
|
||||
soc-supply = <®_soc>;
|
||||
dc-supply = <®_gpio_dvfs>;
|
||||
};
|
||||
|
||||
&clks {
|
||||
assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
|
||||
assigned-clock-rates = <786432000>;
|
||||
};
|
||||
|
||||
&fec1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet1>;
|
||||
phy-mode = "rmii";
|
||||
phy-handle = <ðphy0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&fec2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet2>;
|
||||
phy-mode = "rmii";
|
||||
phy-handle = <ðphy1>;
|
||||
status = "okay";
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethphy0: ethernet-phy@2 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <2>;
|
||||
};
|
||||
|
||||
ethphy1: ethernet-phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&gpc {
|
||||
fsl,cpu_pupscr_sw2iso = <0x1>;
|
||||
fsl,cpu_pupscr_sw = <0x0>;
|
||||
fsl,cpu_pdnscr_iso2sw = <0x1>;
|
||||
fsl,cpu_pdnscr_iso = <0x1>;
|
||||
fsl,ldo-bypass = <0>; /* DCDC, ldo-enable */
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
status = "okay";
|
||||
|
||||
mag3110@0e {
|
||||
compatible = "fsl,mag3110";
|
||||
reg = <0x0e>;
|
||||
position = <2>;
|
||||
};
|
||||
|
||||
fxls8471@1e {
|
||||
compatible = "fsl,fxls8471";
|
||||
reg = <0x1e>;
|
||||
position = <0>;
|
||||
interrupt-parent = <&gpio5>;
|
||||
interrupts = <0 8>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock_frequency = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_hog_1>;
|
||||
imx6ul-evk {
|
||||
pinctrl_hog_1: hoggrp-1 {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */
|
||||
MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT 0x17059 /* SD1 VSELECT */
|
||||
MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x17059 /* SD1 RESET */
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_csi1: csi1grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_CSI_MCLK__CSI_MCLK 0x1b088
|
||||
MX6UL_PAD_CSI_PIXCLK__CSI_PIXCLK 0x1b088
|
||||
MX6UL_PAD_CSI_VSYNC__CSI_VSYNC 0x1b088
|
||||
MX6UL_PAD_CSI_HSYNC__CSI_HSYNC 0x1b088
|
||||
MX6UL_PAD_CSI_DATA00__CSI_DATA02 0x1b088
|
||||
MX6UL_PAD_CSI_DATA01__CSI_DATA03 0x1b088
|
||||
MX6UL_PAD_CSI_DATA02__CSI_DATA04 0x1b088
|
||||
MX6UL_PAD_CSI_DATA03__CSI_DATA05 0x1b088
|
||||
MX6UL_PAD_CSI_DATA04__CSI_DATA06 0x1b088
|
||||
MX6UL_PAD_CSI_DATA05__CSI_DATA07 0x1b088
|
||||
MX6UL_PAD_CSI_DATA06__CSI_DATA08 0x1b088
|
||||
MX6UL_PAD_CSI_DATA07__CSI_DATA09 0x1b088
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_enet1: enet1grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN 0x1b0b0
|
||||
MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0
|
||||
MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
|
||||
MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
|
||||
MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0
|
||||
MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
|
||||
MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
|
||||
MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_enet2: enet2grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_GPIO1_IO07__ENET2_MDC 0x1b0b0
|
||||
MX6UL_PAD_GPIO1_IO06__ENET2_MDIO 0x1b0b0
|
||||
MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN 0x1b0b0
|
||||
MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER 0x1b0b0
|
||||
MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
|
||||
MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
|
||||
MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN 0x1b0b0
|
||||
MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0
|
||||
MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0
|
||||
MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x4001b031
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_flexcan1: flexcan1grp{
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX 0x1b020
|
||||
MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX 0x1b020
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_flexcan2: flexcan2grp{
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX 0x1b020
|
||||
MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX 0x1b020
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1: i2c1grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_UART4_TX_DATA__I2C1_SCL 0x4001b8b0
|
||||
MX6UL_PAD_UART4_RX_DATA__I2C1_SDA 0x4001b8b0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c2: i2c2grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_UART5_TX_DATA__I2C2_SCL 0x4001b8b0
|
||||
MX6UL_PAD_UART5_RX_DATA__I2C2_SDA 0x4001b8b0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_lcdif_dat: lcdifdatgrp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_LCD_DATA00__LCDIF_DATA00 0x79
|
||||
MX6UL_PAD_LCD_DATA01__LCDIF_DATA01 0x79
|
||||
MX6UL_PAD_LCD_DATA02__LCDIF_DATA02 0x79
|
||||
MX6UL_PAD_LCD_DATA03__LCDIF_DATA03 0x79
|
||||
MX6UL_PAD_LCD_DATA04__LCDIF_DATA04 0x79
|
||||
MX6UL_PAD_LCD_DATA05__LCDIF_DATA05 0x79
|
||||
MX6UL_PAD_LCD_DATA06__LCDIF_DATA06 0x79
|
||||
MX6UL_PAD_LCD_DATA07__LCDIF_DATA07 0x79
|
||||
MX6UL_PAD_LCD_DATA08__LCDIF_DATA08 0x79
|
||||
MX6UL_PAD_LCD_DATA09__LCDIF_DATA09 0x79
|
||||
MX6UL_PAD_LCD_DATA10__LCDIF_DATA10 0x79
|
||||
MX6UL_PAD_LCD_DATA11__LCDIF_DATA11 0x79
|
||||
MX6UL_PAD_LCD_DATA12__LCDIF_DATA12 0x79
|
||||
MX6UL_PAD_LCD_DATA13__LCDIF_DATA13 0x79
|
||||
MX6UL_PAD_LCD_DATA14__LCDIF_DATA14 0x79
|
||||
MX6UL_PAD_LCD_DATA15__LCDIF_DATA15 0x79
|
||||
MX6UL_PAD_LCD_DATA16__LCDIF_DATA16 0x79
|
||||
MX6UL_PAD_LCD_DATA17__LCDIF_DATA17 0x79
|
||||
MX6UL_PAD_LCD_DATA18__LCDIF_DATA18 0x79
|
||||
MX6UL_PAD_LCD_DATA19__LCDIF_DATA19 0x79
|
||||
MX6UL_PAD_LCD_DATA20__LCDIF_DATA20 0x79
|
||||
MX6UL_PAD_LCD_DATA21__LCDIF_DATA21 0x79
|
||||
MX6UL_PAD_LCD_DATA22__LCDIF_DATA22 0x79
|
||||
MX6UL_PAD_LCD_DATA23__LCDIF_DATA23 0x79
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_lcdif_ctrl: lcdifctrlgrp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_LCD_CLK__LCDIF_CLK 0x79
|
||||
MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE 0x79
|
||||
MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC 0x79
|
||||
MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC 0x79
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pwm1: pwm1grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_GPIO1_IO08__PWM1_OUT 0x110b0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_qspi: qspigrp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_NAND_WP_B__QSPI_A_SCLK 0x70a1
|
||||
MX6UL_PAD_NAND_READY_B__QSPI_A_DATA00 0x70a1
|
||||
MX6UL_PAD_NAND_CE0_B__QSPI_A_DATA01 0x70a1
|
||||
MX6UL_PAD_NAND_CE1_B__QSPI_A_DATA02 0x70a1
|
||||
MX6UL_PAD_NAND_CLE__QSPI_A_DATA03 0x70a1
|
||||
MX6UL_PAD_NAND_DQS__QSPI_A_SS0_B 0x70a1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart1: uart1grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX 0x1b0b1
|
||||
MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x1b0b1
|
||||
MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1
|
||||
MX6UL_PAD_UART3_RX_DATA__UART2_DCE_RTS 0x1b0b1
|
||||
MX6UL_PAD_UART3_TX_DATA__UART2_DCE_CTS 0x1b0b1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart2dte: uart2dtegrp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_UART2_TX_DATA__UART2_DTE_RX 0x1b0b1
|
||||
MX6UL_PAD_UART2_RX_DATA__UART2_DTE_TX 0x1b0b1
|
||||
MX6UL_PAD_UART3_RX_DATA__UART2_DTE_CTS 0x1b0b1
|
||||
MX6UL_PAD_UART3_TX_DATA__UART2_DTE_RTS 0x1b0b1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1: usdhc1grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x17059
|
||||
MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x10071
|
||||
MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059
|
||||
MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059
|
||||
MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059
|
||||
MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2: usdhc2grp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_NAND_RE_B__USDHC2_CLK 0x10069
|
||||
MX6UL_PAD_NAND_WE_B__USDHC2_CMD 0x17059
|
||||
MX6UL_PAD_NAND_DATA00__USDHC2_DATA0 0x17059
|
||||
MX6UL_PAD_NAND_DATA01__USDHC2_DATA1 0x17059
|
||||
MX6UL_PAD_NAND_DATA02__USDHC2_DATA2 0x17059
|
||||
MX6UL_PAD_NAND_DATA03__USDHC2_DATA3 0x17059
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_wdog: wdoggrp {
|
||||
fsl,pins = <
|
||||
MX6UL_PAD_LCD_RESET__WDOG1_WDOG_ANY 0x30b0
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&iomuxc_snvs {
|
||||
pinctrl-names = "default_snvs";
|
||||
pinctrl-0 = <&pinctrl_hog_2>;
|
||||
imx6ul-evk {
|
||||
pinctrl_hog_2: hoggrp-2 {
|
||||
fsl,pins = <
|
||||
MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00 0x80000000
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_dvfs: dvfsgrp {
|
||||
fsl,pins = <
|
||||
MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x79
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_lcdif_reset: lcdifresetgrp {
|
||||
fsl,pins = <
|
||||
/* used for lcd reset */
|
||||
MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09 0x79
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_spi4: spi4grp {
|
||||
fsl,pins = <
|
||||
MX6ULL_PAD_BOOT_MODE0__GPIO5_IO10 0x70a1
|
||||
MX6ULL_PAD_BOOT_MODE1__GPIO5_IO11 0x70a1
|
||||
MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x70a1
|
||||
MX6ULL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x80000000
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_sai2_hp_det_b: sai2_hp_det_grp {
|
||||
fsl,pins = <
|
||||
MX6ULL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x17059
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
&lcdif {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_lcdif_dat
|
||||
&pinctrl_lcdif_ctrl
|
||||
&pinctrl_lcdif_reset>;
|
||||
display = <&display0>;
|
||||
status = "okay";
|
||||
|
||||
display0: display {
|
||||
bits-per-pixel = <16>;
|
||||
bus-width = <24>;
|
||||
|
||||
display-timings {
|
||||
native-mode = <&timing0>;
|
||||
timing0: timing0 {
|
||||
clock-frequency = <9200000>;
|
||||
hactive = <480>;
|
||||
vactive = <272>;
|
||||
hfront-porch = <8>;
|
||||
hback-porch = <4>;
|
||||
hsync-len = <41>;
|
||||
vback-porch = <2>;
|
||||
vfront-porch = <4>;
|
||||
vsync-len = <10>;
|
||||
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
de-active = <1>;
|
||||
pixelclk-active = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pwm1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&qspi {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_qspi>;
|
||||
status = "okay";
|
||||
ddrsmp=<0>;
|
||||
|
||||
flash0: n25q256a@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "micron,n25q256a";
|
||||
spi-max-frequency = <29000000>;
|
||||
spi-nor,ddr-quad-read-dummy = <6>;
|
||||
reg = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart2>;
|
||||
fsl,uart-has-rtscts;
|
||||
/* for DTE mode, add below change */
|
||||
/* fsl,dte-mode; */
|
||||
/* pinctrl-0 = <&pinctrl_uart2dte>; */
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbotg1 {
|
||||
dr_mode = "otg";
|
||||
srp-disable;
|
||||
hnp-disable;
|
||||
adp-disable;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbotg2 {
|
||||
dr_mode = "host";
|
||||
disable-over-current;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbphy1 {
|
||||
tx-d-cal = <0x5>;
|
||||
};
|
||||
|
||||
&usbphy2 {
|
||||
tx-d-cal = <0x5>;
|
||||
};
|
||||
|
||||
&usdhc1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc1>;
|
||||
cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
|
||||
keep-power-in-suspend;
|
||||
enable-sdio-wakeup;
|
||||
vmmc-supply = <®_sd1_vmmc>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||
no-1-8-v;
|
||||
non-removable;
|
||||
keep-power-in-suspend;
|
||||
enable-sdio-wakeup;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_wdog>;
|
||||
fsl,wdog_b;
|
||||
};
|
||||
29
arch/arm/dts/imx6ull-pinfunc-snvs.h
Normal file
29
arch/arm/dts/imx6ull-pinfunc-snvs.h
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __DTS_IMX6ULL_PINFUNC_SNVS_H
|
||||
#define __DTS_IMX6ULL_PINFUNC_SNVS_H
|
||||
/*
|
||||
* The pin function ID is a tuple of
|
||||
* <mux_reg conf_reg input_reg mux_mode input_val>
|
||||
*/
|
||||
#define MX6ULL_PAD_BOOT_MODE0__GPIO5_IO10 0x0000 0x0044 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_BOOT_MODE1__GPIO5_IO11 0x0004 0x0048 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00 0x0008 0x004C 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x000C 0x0050 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x0010 0x0054 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x0014 0x0058 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x0018 0x005C 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER5__GPIO5_IO05 0x001C 0x0060 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER6__GPIO5_IO06 0x0020 0x0064 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x0024 0x0068 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x0028 0x006C 0x0000 0x5 0x0
|
||||
#define MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09 0x002C 0x0070 0x0000 0x5 0x0
|
||||
|
||||
#endif /* __DTS_IMX6ULL_PINFUNC_SNVS_H */
|
||||
|
||||
57
arch/arm/dts/imx6ull-pinfunc.h
Normal file
57
arch/arm/dts/imx6ull-pinfunc.h
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __DTS_IMX6ULL_PINFUNC_H
|
||||
#define __DTS_IMX6ULL_PINFUNC_H
|
||||
|
||||
#include "imx6ul-pinfunc.h"
|
||||
/*
|
||||
* The pin function ID is a tuple of
|
||||
* <mux_reg conf_reg input_reg mux_mode input_val>
|
||||
*/
|
||||
#define MX6UL_PAD_ENET2_RX_DATA0__EPDC_SDDO08 0x00E4 0x0370 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_ENET2_RX_DATA1__EPDC_SDDO09 0x00E8 0x0374 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_ENET2_RX_EN__EPDC_SDDO10 0x00EC 0x0378 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA0__EPDC_SDDO11 0x00F0 0x037C 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_ENET2_TX_DATA1__EPDC_SDDO12 0x00F4 0x0380 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_ENET2_TX_EN__EPDC_SDDO13 0x00F8 0x0384 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_ENET2_TX_CLK__EPDC_SDDO14 0x00FC 0x0388 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_ENET2_RX_ER__EPDC_SDDO15 0x0100 0x038C 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_CLK__EPDC_SDCLK 0x0104 0x0390 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_ENABLE__EPDC_SDLE 0x0108 0x0394 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_HSYNC__EPDC_SDOE 0x010C 0x0398 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_VSYNC__EPDC_SDCE0 0x0110 0x039C 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_RESET__EPDC_GDOE 0x0114 0x03A0 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA00__EPDC_SDDO00 0x0118 0x03A4 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA01__EPDC_SDDO01 0x011C 0x03A8 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA02__EPDC_SDDO02 0x0120 0x03AC 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA03__EPDC_SDDO03 0x0124 0x03B0 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA04__EPDC_SDDO04 0x0128 0x03B4 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA05__EPDC_SDDO05 0x012C 0x03B8 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA06__EPDC_SDDO06 0x0130 0x03BC 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA07__EPDC_SDDO07 0x0134 0x03C0 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA14__EPDC_SDSHR 0x0150 0x03DC 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA15__EPDC_GDRL 0x0154 0x03E0 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA16__EPDC_GDCLK 0x0158 0x03E4 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA17__EPDC_GDSP 0x015C 0x03E8 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_LCD_DATA21__EPDC_SDCE1 0x016C 0x03F8 0x0000 0x9 0x0
|
||||
|
||||
#define MX6UL_PAD_CSI_MCLK__ESAI_TX3_RX2 0x01D4 0x0460 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_PIXCLK__ESAI_TX2_RX3 0x01D8 0x0464 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_VSYNC__ESAI_TX4_RX1 0x01DC 0x0468 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_HSYNC__ESAI_TX1 0x01E0 0x046C 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_DATA00__ESAI_TX_HF_CLK 0x01E4 0x0470 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_DATA01__ESAI_RX_HF_CLK 0x01E8 0x0474 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_DATA02__ESAI_RX_FS 0x01EC 0x0478 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_DATA03__ESAI_RX_CLK 0x01F0 0x047C 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_DATA04__ESAI_TX_FS 0x01F4 0x0480 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_DATA05__ESAI_TX_CLK 0x01F8 0x0484 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_DATA06__ESAI_TX5_RX0 0x01FC 0x0488 0x0000 0x9 0x0
|
||||
#define MX6UL_PAD_CSI_DATA07__ESAI_T0 0x0200 0x048C 0x0000 0x9 0x0
|
||||
|
||||
#endif /* __DTS_IMX6ULL_PINFUNC_H */
|
||||
1161
arch/arm/dts/imx6ull.dtsi
Normal file
1161
arch/arm/dts/imx6ull.dtsi
Normal file
File diff suppressed because it is too large
Load Diff
97
arch/arm/dts/imx7-colibri.dts
Normal file
97
arch/arm/dts/imx7-colibri.dts
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright 2016 Toradex AG
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ or X11
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include "imx7.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Toradex Colibri iMX7S/D";
|
||||
compatible = "toradex,imx7-colibri", "fsl,imx7";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart1;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default", "gpio";
|
||||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
pinctrl-1 = <&pinctrl_i2c1_gpio>;
|
||||
sda-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
|
||||
scl-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
rn5t567@33 {
|
||||
compatible = "ricoh,rn5t567";
|
||||
reg = <0x33>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
pinctrl-names = "default", "gpio";
|
||||
pinctrl-0 = <&pinctrl_i2c4>;
|
||||
pinctrl-1 = <&pinctrl_i2c4_gpio>;
|
||||
sda-gpios = <&gpio7 9 GPIO_ACTIVE_LOW>;
|
||||
scl-gpios = <&gpio7 8 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart1 &pinctrl_uart1_ctrl1>;
|
||||
uart-has-rtscts;
|
||||
fsl,dte-mode;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl_i2c4: i2c4-grp {
|
||||
fsl,pins = <
|
||||
MX7D_PAD_ENET1_RGMII_TD3__I2C4_SDA 0x4000007f
|
||||
MX7D_PAD_ENET1_RGMII_TD2__I2C4_SCL 0x4000007f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c4_gpio: i2c4-gpio-grp {
|
||||
fsl,pins = <
|
||||
MX7D_PAD_ENET1_RGMII_TD3__GPIO7_IO9 0x4000007f
|
||||
MX7D_PAD_ENET1_RGMII_TD2__GPIO7_IO8 0x4000007f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart1: uart1-grp {
|
||||
fsl,pins = <
|
||||
MX7D_PAD_UART1_TX_DATA__UART1_DTE_RX 0x79
|
||||
MX7D_PAD_UART1_RX_DATA__UART1_DTE_TX 0x79
|
||||
MX7D_PAD_SAI2_TX_BCLK__UART1_DTE_CTS 0x79
|
||||
MX7D_PAD_SAI2_TX_SYNC__UART1_DTE_RTS 0x79
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart1_ctrl1: uart1-ctrl1-grp {
|
||||
fsl,pins = <
|
||||
MX7D_PAD_SD2_DATA1__GPIO5_IO15 0x14 /* DCD */
|
||||
MX7D_PAD_SD2_DATA0__GPIO5_IO14 0x14 /* DTR */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&iomuxc_lpsr {
|
||||
pinctrl_i2c1: i2c1-grp {
|
||||
fsl,pins = <
|
||||
MX7D_PAD_GPIO1_IO05__I2C1_SDA 0x4000007f
|
||||
MX7D_PAD_GPIO1_IO04__I2C1_SCL 0x4000007f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1_gpio: i2c1-gpio-grp {
|
||||
fsl,pins = <
|
||||
MX7D_PAD_GPIO1_IO05__GPIO1_IO5 0x4000007f
|
||||
MX7D_PAD_GPIO1_IO04__GPIO1_IO4 0x4000007f
|
||||
>;
|
||||
};
|
||||
};
|
||||
194
arch/arm/dts/imx7.dtsi
Normal file
194
arch/arm/dts/imx7.dtsi
Normal file
@@ -0,0 +1,194 @@
|
||||
/*
|
||||
* Copyright 2016 Toradex AG
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ or X11
|
||||
*/
|
||||
#include "imx7d-pinfunc.h"
|
||||
#include "skeleton.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
gpio0 = &gpio1;
|
||||
gpio1 = &gpio2;
|
||||
gpio2 = &gpio3;
|
||||
gpio3 = &gpio4;
|
||||
gpio4 = &gpio5;
|
||||
gpio5 = &gpio6;
|
||||
gpio6 = &gpio7;
|
||||
i2c0 = &i2c1;
|
||||
i2c1 = &i2c2;
|
||||
i2c2 = &i2c3;
|
||||
i2c3 = &i2c4;
|
||||
serial0 = &uart1;
|
||||
serial1 = &uart2;
|
||||
serial2 = &uart3;
|
||||
serial3 = &uart4;
|
||||
serial4 = &uart5;
|
||||
serial5 = &uart6;
|
||||
serial6 = &uart7;
|
||||
};
|
||||
|
||||
soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "simple-bus";
|
||||
ranges;
|
||||
|
||||
aips1: aips-bus@30000000 {
|
||||
compatible = "fsl,aips-bus", "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x30000000 0x400000>;
|
||||
ranges;
|
||||
|
||||
gpio1: gpio@30200000 {
|
||||
compatible = "fsl,imx7d-gpio", "fsl,imx35-gpio";
|
||||
reg = <0x30200000 0x10000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio2: gpio@30210000 {
|
||||
compatible = "fsl,imx7d-gpio", "fsl,imx35-gpio";
|
||||
reg = <0x30210000 0x10000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio3: gpio@30220000 {
|
||||
compatible = "fsl,imx7d-gpio", "fsl,imx35-gpio";
|
||||
reg = <0x30220000 0x10000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio4: gpio@30230000 {
|
||||
compatible = "fsl,imx7d-gpio", "fsl,imx35-gpio";
|
||||
reg = <0x30230000 0x10000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio5: gpio@30240000 {
|
||||
compatible = "fsl,imx7d-gpio", "fsl,imx35-gpio";
|
||||
reg = <0x30240000 0x10000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio6: gpio@30250000 {
|
||||
compatible = "fsl,imx7d-gpio", "fsl,imx35-gpio";
|
||||
reg = <0x30250000 0x10000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio7: gpio@30260000 {
|
||||
compatible = "fsl,imx7d-gpio", "fsl,imx35-gpio";
|
||||
reg = <0x30260000 0x10000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
iomuxc_lpsr: iomuxc-lpsr@302c0000 {
|
||||
compatible = "fsl,imx7d-iomuxc-lpsr";
|
||||
reg = <0x302c0000 0x10000>;
|
||||
fsl,input-sel = <&iomuxc>;
|
||||
};
|
||||
|
||||
iomuxc: iomuxc@30330000 {
|
||||
compatible = "fsl,imx7d-iomuxc";
|
||||
reg = <0x30330000 0x10000>;
|
||||
};
|
||||
};
|
||||
|
||||
aips3: aips-bus@30800000 {
|
||||
compatible = "fsl,aips-bus", "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x30800000 0x400000>;
|
||||
ranges;
|
||||
|
||||
uart1: serial@30860000 {
|
||||
compatible = "fsl,imx7d-uart",
|
||||
"fsl,imx6q-uart";
|
||||
reg = <0x30860000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart2: serial@30890000 {
|
||||
compatible = "fsl,imx7d-uart",
|
||||
"fsl,imx6q-uart";
|
||||
reg = <0x30890000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart3: serial@30880000 {
|
||||
compatible = "fsl,imx7d-uart",
|
||||
"fsl,imx6q-uart";
|
||||
reg = <0x30880000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c1: i2c@30a20000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,imx7d-i2c", "fsl,imx21-i2c";
|
||||
reg = <0x30a20000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@30a30000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,imx7d-i2c", "fsl,imx21-i2c";
|
||||
reg = <0x30a30000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c3: i2c@30a40000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,imx7d-i2c", "fsl,imx21-i2c";
|
||||
reg = <0x30a40000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c4: i2c@30a50000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,imx7d-i2c", "fsl,imx21-i2c";
|
||||
reg = <0x30a50000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart4: serial@30a60000 {
|
||||
compatible = "fsl,imx7d-uart",
|
||||
"fsl,imx6q-uart";
|
||||
reg = <0x30a60000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart5: serial@30a70000 {
|
||||
compatible = "fsl,imx7d-uart",
|
||||
"fsl,imx6q-uart";
|
||||
reg = <0x30a70000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart6: serial@30a80000 {
|
||||
compatible = "fsl,imx7d-uart",
|
||||
"fsl,imx6q-uart";
|
||||
reg = <0x30a80000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart7: serial@30a90000 {
|
||||
compatible = "fsl,imx7d-uart",
|
||||
"fsl,imx6q-uart";
|
||||
reg = <0x30a90000 0x10000>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
1151
arch/arm/dts/imx7d-pinfunc.h
Normal file
1151
arch/arm/dts/imx7d-pinfunc.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -14,42 +14,35 @@
|
||||
i2c0 = "/i2c@7000d000";
|
||||
i2c1 = "/i2c@7000c000";
|
||||
i2c2 = "/i2c@7000c400";
|
||||
usb0 = "/usb@c5008000";
|
||||
usb1 = "/usb@c5000000";
|
||||
usb2 = "/usb@c5004000";
|
||||
mmc0 = "/sdhci@c8000600";
|
||||
usb0 = "/usb@c5000000";
|
||||
usb1 = "/usb@c5004000"; /* on-module only, for ASIX */
|
||||
usb2 = "/usb@c5008000";
|
||||
};
|
||||
|
||||
host1x@50000000 {
|
||||
status = "okay";
|
||||
dc@54200000 {
|
||||
status = "okay";
|
||||
rgb {
|
||||
status = "okay";
|
||||
nvidia,panel = <&lcd_panel>;
|
||||
display-timings {
|
||||
timing@0 {
|
||||
/* VESA VGA */
|
||||
clock-frequency = <25175000>;
|
||||
hactive = <640>;
|
||||
vactive = <480>;
|
||||
hback-porch = <48>;
|
||||
hfront-porch = <16>;
|
||||
hsync-len = <96>;
|
||||
vback-porch = <31>;
|
||||
vfront-porch = <11>;
|
||||
vsync-len = <2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
statuc = "okay";
|
||||
dr_mode = "otg";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
statuc = "okay";
|
||||
/* VBUS_LAN */
|
||||
nvidia,phy-reset-gpio = <&gpio TEGRA_GPIO(V, 1)
|
||||
GPIO_ACTIVE_LOW>;
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(BB, 1) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
usb@c5008000 {
|
||||
statuc = "okay";
|
||||
/* USBH_PEN */
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
nand-controller@70008000 {
|
||||
nvidia,wp-gpios = <&gpio TEGRA_GPIO(S, 0) GPIO_ACTIVE_HIGH>;
|
||||
nvidia,width = <8>;
|
||||
@@ -61,6 +54,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/*
|
||||
* GEN1_I2C: I2C_SDA/SCL on SODIMM pin 194/196 (e.g. RTC on carrier
|
||||
* board)
|
||||
@@ -86,12 +83,45 @@
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
/* EHCI instance 0: USB1_DP/N -> USBC_P/N */
|
||||
usb@c5000000 {
|
||||
status = "okay";
|
||||
dr_mode = "otg";
|
||||
};
|
||||
|
||||
/* EHCI instance 1: ULPI -> USB3340 -> AX88772B */
|
||||
usb@c5004000 {
|
||||
status = "okay";
|
||||
/* VBUS_LAN */
|
||||
nvidia,phy-reset-gpio = <&gpio TEGRA_GPIO(V, 1) GPIO_ACTIVE_HIGH>;
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(BB, 1) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
/* EHCI instance 2: USB3_DP/N -> USBH_P/N */
|
||||
usb@c5008000 {
|
||||
status = "okay";
|
||||
/* USBH_PEN */
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
sdhci@c8000600 {
|
||||
status = "okay";
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&gpio TEGRA_GPIO(C, 7) GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
|
||||
brightness-levels = <255 128 64 32 16 8 4 0>;
|
||||
default-brightness-level = <6>;
|
||||
/* BL_ON */
|
||||
enable-gpios = <&gpio TEGRA_GPIO(T, 4) GPIO_ACTIVE_HIGH>;
|
||||
power-supply = <®_3v3>;
|
||||
/* PWM<A> */
|
||||
pwms = <&pwm 0 5000000>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
@@ -105,25 +135,28 @@
|
||||
};
|
||||
};
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
lcd_panel: panel {
|
||||
/*
|
||||
* edt,et057090dhu: EDT 5.7" LCD TFT
|
||||
* edt,et070080dh6: EDT 7.0" LCD TFT
|
||||
*/
|
||||
compatible = "edt,et057090dhu", "simple-panel";
|
||||
|
||||
backlight = <&backlight>;
|
||||
};
|
||||
|
||||
lcd_panel: panel {
|
||||
clock = <25175000>;
|
||||
xres = <640>;
|
||||
yres = <480>;
|
||||
left-margin = <48>; /* horizontal back porch */
|
||||
right-margin = <16>; /* horizontal front porch */
|
||||
hsync-len = <96>;
|
||||
lower-margin = <11>; /* vertical front porch */
|
||||
upper-margin = <31>; /* vertical back porch */
|
||||
vsync-len = <2>;
|
||||
hsync-active-high;
|
||||
vsync-active-high;
|
||||
nvidia,bits-per-pixel = <16>;
|
||||
nvidia,pwm = <&pwm 0 0>;
|
||||
nvidia,backlight-enable-gpios = <&gpio TEGRA_GPIO(T, 4) GPIO_ACTIVE_HIGH>;
|
||||
nvidia,panel-timings = <0 0 0 0>;
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
reg_3v3: regulator@0 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <0>;
|
||||
regulator-name = "+V3.3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -83,7 +83,9 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,vf610-qspi";
|
||||
reg = <0x40044000 0x1000>;
|
||||
reg = <0x40044000 0x1000>,
|
||||
<0x20000000 0x10000000>;
|
||||
reg-names = "QuadSPI", "QuadSPI-memory";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
||||
@@ -159,6 +159,8 @@ const char *get_imx_type(u32 imxtype)
|
||||
return "6SX"; /* SoloX version of the mx6 */
|
||||
case MXC_CPU_MX6UL:
|
||||
return "6UL"; /* Ultra-Lite version of the mx6 */
|
||||
case MXC_CPU_MX6ULL:
|
||||
return "6ULL"; /* ULL version of the mx6 */
|
||||
case MXC_CPU_MX51:
|
||||
return "51";
|
||||
case MXC_CPU_MX53:
|
||||
|
||||
@@ -44,7 +44,7 @@ void init_aips(void)
|
||||
writel(0x00000000, &aips2->opacr3);
|
||||
writel(0x00000000, &aips2->opacr4);
|
||||
|
||||
if (is_mx6sx() || is_mx7()) {
|
||||
if (is_mx6ull() || is_mx6sx() || is_mx7()) {
|
||||
/*
|
||||
* Set all MPROTx to be non-bufferable, trusted for R/W,
|
||||
* not forced to user-mode.
|
||||
|
||||
@@ -42,6 +42,7 @@ void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
|
||||
#ifdef CONFIG_IOMUX_LPSR
|
||||
u32 lpsr = (pad & MUX_MODE_LPSR) >> MUX_MODE_SHIFT;
|
||||
|
||||
#ifdef CONFIG_MX7
|
||||
if (lpsr == IOMUX_CONFIG_LPSR) {
|
||||
base = (void *)IOMUXC_LPSR_BASE_ADDR;
|
||||
mux_mode &= ~IOMUX_CONFIG_LPSR;
|
||||
@@ -49,9 +50,17 @@ void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
|
||||
if (sel_input_ofs)
|
||||
sel_input_ofs += IOMUX_LPSR_SEL_INPUT_OFS;
|
||||
}
|
||||
#else
|
||||
if (is_mx6ull()) {
|
||||
if (lpsr == IOMUX_CONFIG_LPSR) {
|
||||
base = (void *)IOMUXC_SNVS_BASE_ADDR;
|
||||
mux_mode &= ~IOMUX_CONFIG_LPSR;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (is_soc_type(MXC_SOC_MX7) || mux_ctrl_ofs)
|
||||
if (is_soc_type(MXC_SOC_MX7) || is_cpu_type(MXC_CPU_MX6ULL) || mux_ctrl_ofs)
|
||||
__raw_writel(mux_mode, base + mux_ctrl_ofs);
|
||||
|
||||
if (sel_input_ofs)
|
||||
@@ -83,7 +92,7 @@ void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
|
||||
|
||||
#if defined(CONFIG_MX6QDL)
|
||||
stride = 2;
|
||||
if (!is_mx6dq())
|
||||
if (!is_mx6dq() && !is_mx6dqp())
|
||||
p += 1;
|
||||
#else
|
||||
stride = 1;
|
||||
|
||||
@@ -44,7 +44,8 @@ static inline int gpt_has_clk_source_osc(void)
|
||||
{
|
||||
#if defined(CONFIG_MX6)
|
||||
if (((is_mx6dq()) && (soc_rev() > CHIP_REV_1_0)) ||
|
||||
is_mx6dqp() || is_mx6sdl() || is_mx6sx() || is_mx6ul())
|
||||
is_mx6dqp() || is_mx6sdl() || is_mx6sx() || is_mx6ul() ||
|
||||
is_mx6ull())
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
@@ -83,8 +84,8 @@ int timer_init(void)
|
||||
if (gpt_has_clk_source_osc()) {
|
||||
i |= GPTCR_CLKSOURCE_OSC | GPTCR_TEN;
|
||||
|
||||
/* For DL/S, SX, UL, set 24Mhz OSC Enable bit and prescaler */
|
||||
if (is_mx6sdl() || is_mx6sx() || is_mx6ul()) {
|
||||
/* For DL/S, SX, UL, ULL set 24Mhz OSC Enable bit and prescaler */
|
||||
if (is_mx6sdl() || is_mx6sx() || is_mx6ul() || is_mx6ull()) {
|
||||
i |= GPTCR_24MEN;
|
||||
|
||||
/* Produce 3Mhz clock */
|
||||
|
||||
@@ -43,7 +43,8 @@
|
||||
#define HS_DEVICE 0x2
|
||||
#define GP_DEVICE 0x3
|
||||
|
||||
/* cpu-id for AM33XX and TI81XX family */
|
||||
/* cpu-id for AM43XX AM33XX and TI81XX family */
|
||||
#define AM437X 0xB98C
|
||||
#define AM335X 0xB944
|
||||
#define TI81XX 0xB81E
|
||||
#define DEVICE_ID (CTRL_BASE + 0x0600)
|
||||
@@ -579,6 +580,8 @@ struct pwmss_regs {
|
||||
};
|
||||
#define ECAP_CLK_EN BIT(0)
|
||||
#define ECAP_CLK_STOP_REQ BIT(1)
|
||||
#define EPWM_CLK_EN BIT(8)
|
||||
#define EPWM_CLK_STOP_REQ BIT(9)
|
||||
|
||||
struct pwmss_ecap_regs {
|
||||
unsigned int tsctr;
|
||||
@@ -592,6 +595,40 @@ struct pwmss_ecap_regs {
|
||||
unsigned short ecctl2;
|
||||
};
|
||||
|
||||
struct pwmss_epwm_regs {
|
||||
unsigned short tbctl;
|
||||
unsigned short tbsts;
|
||||
unsigned short tbphshr;
|
||||
unsigned short tbphs;
|
||||
unsigned short tbcnt;
|
||||
unsigned short tbprd;
|
||||
unsigned short res1;
|
||||
unsigned short cmpctl;
|
||||
unsigned short cmpahr;
|
||||
unsigned short cmpa;
|
||||
unsigned short cmpb;
|
||||
unsigned short aqctla;
|
||||
unsigned short aqctlb;
|
||||
unsigned short aqsfrc;
|
||||
unsigned short aqcsfrc;
|
||||
unsigned short dbctl;
|
||||
unsigned short dbred;
|
||||
unsigned short dbfed;
|
||||
unsigned short tzsel;
|
||||
unsigned short tzctl;
|
||||
unsigned short tzflg;
|
||||
unsigned short tzclr;
|
||||
unsigned short tzfrc;
|
||||
unsigned short etsel;
|
||||
unsigned short etps;
|
||||
unsigned short etflg;
|
||||
unsigned short etclr;
|
||||
unsigned short etfrc;
|
||||
unsigned short pcctl;
|
||||
unsigned int res2[66];
|
||||
unsigned short hrcnfg;
|
||||
};
|
||||
|
||||
/* Capture Control register 2 */
|
||||
#define ECTRL2_SYNCOSEL_MASK (0x03 << 6)
|
||||
#define ECTRL2_MDSL_ECAP BIT(9)
|
||||
|
||||
@@ -67,5 +67,6 @@
|
||||
/* PWMSS */
|
||||
#define PWMSS0_BASE 0x48300000
|
||||
#define AM33XX_ECAP0_BASE 0x48300100
|
||||
#define AM33XX_EPWM_BASE 0x48300200
|
||||
|
||||
#endif /* __AM33XX_HARDWARE_AM33XX_H */
|
||||
|
||||
@@ -12,17 +12,6 @@
|
||||
|
||||
#define CONFIG_STANDALONE_LOAD_ADDR 0x80300000
|
||||
|
||||
#ifdef CONFIG_SYS_FSL_DDR4
|
||||
#define CONFIG_SYS_FSL_DDRC_GEN4
|
||||
#else
|
||||
#define CONFIG_SYS_FSL_DDRC_ARM_GEN3 /* Enable Freescale ARM DDR3 driver */
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_ARCH_LS1012A
|
||||
#define CONFIG_SYS_FSL_DDR /* Freescale DDR driver */
|
||||
#define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_5_0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Reserve secure memory
|
||||
* To be aligned with MMU block size
|
||||
@@ -30,14 +19,8 @@
|
||||
#define CONFIG_SYS_MEM_RESERVE_SECURE (2048 * 1024) /* 2MB */
|
||||
|
||||
#ifdef CONFIG_LS2080A
|
||||
#define CONFIG_MAX_CPUS 16
|
||||
#define CONFIG_SYS_FSL_IFC_BANK_COUNT 8
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 3
|
||||
#define CONFIG_SYS_FSL_HAS_DP_DDR /* Runtime check to confirm */
|
||||
#define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1, 4, 4 }
|
||||
#define SRDS_MAX_LANES 8
|
||||
#define CONFIG_SYS_FSL_SRDS_1
|
||||
#define CONFIG_SYS_FSL_SRDS_2
|
||||
#define CONFIG_SYS_PAGE_SIZE 0x10000
|
||||
#ifndef L1_CACHE_BYTES
|
||||
#define L1_CACHE_SHIFT 6
|
||||
@@ -48,7 +31,6 @@
|
||||
#define CONFIG_SYS_FSL_OCRAM_SIZE 0x00200000 /* 2M */
|
||||
|
||||
/* DDR */
|
||||
#define CONFIG_SYS_FSL_DDR_LE
|
||||
#define CONFIG_SYS_LS2_DDR_BLOCK1_SIZE ((phys_size_t)2 << 30)
|
||||
#define CONFIG_MAX_MEM_MAPPED CONFIG_SYS_LS2_DDR_BLOCK1_SIZE
|
||||
|
||||
@@ -152,7 +134,6 @@
|
||||
|
||||
#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC 1
|
||||
#elif defined(CONFIG_FSL_LSCH2)
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 1
|
||||
#define CONFIG_SYS_FSL_SEC_COMPAT 5
|
||||
#define CONFIG_SYS_FSL_OCRAM_BASE 0x10000000 /* initial RAM */
|
||||
#define CONFIG_SYS_FSL_OCRAM_SIZE 0x00200000 /* 2M */
|
||||
@@ -167,17 +148,12 @@
|
||||
#define CONFIG_SYS_FSL_PEX_LUT_BE
|
||||
#define CONFIG_SYS_FSL_SEC_BE
|
||||
|
||||
#define CONFIG_SYS_FSL_SRDS_1
|
||||
|
||||
/* SoC related */
|
||||
#ifdef CONFIG_LS1043A
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#define CONFIG_SYS_FMAN_V3
|
||||
#define CONFIG_SYS_NUM_FMAN 1
|
||||
#define CONFIG_SYS_NUM_FM1_DTSEC 7
|
||||
#define CONFIG_SYS_NUM_FM1_10GEC 1
|
||||
#define CONFIG_SYS_FSL_IFC_BANK_COUNT 4
|
||||
#define CONFIG_SYS_FSL_DDR_BE
|
||||
#define CONFIG_SYS_DDR_BLOCK1_SIZE ((phys_size_t)2 << 30)
|
||||
#define CONFIG_MAX_MEM_MAPPED CONFIG_SYS_DDR_BLOCK1_SIZE
|
||||
|
||||
@@ -206,23 +182,18 @@
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A009660
|
||||
#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC 1
|
||||
#elif defined(CONFIG_ARCH_LS1012A)
|
||||
#define CONFIG_MAX_CPUS 1
|
||||
#undef CONFIG_SYS_FSL_DDRC_ARM_GEN3
|
||||
|
||||
#define GICD_BASE 0x01401000
|
||||
#define GICC_BASE 0x01402000
|
||||
#elif defined(CONFIG_ARCH_LS1046A)
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#define CONFIG_SYS_FMAN_V3
|
||||
#define CONFIG_SYS_NUM_FMAN 1
|
||||
#define CONFIG_SYS_NUM_FM1_DTSEC 8
|
||||
#define CONFIG_SYS_NUM_FM1_10GEC 2
|
||||
#define CONFIG_SYS_FSL_IFC_BANK_COUNT 4
|
||||
#define CONFIG_SYS_FSL_DDR_BE
|
||||
#define CONFIG_SYS_DDR_BLOCK1_SIZE ((phys_size_t)2 << 30)
|
||||
#define CONFIG_MAX_MEM_MAPPED CONFIG_SYS_DDR_BLOCK1_SIZE
|
||||
|
||||
#define CONFIG_SYS_FSL_SRDS_2
|
||||
#define CONFIG_SYS_FSL_IFC_BE
|
||||
#define CONFIG_SYS_FSL_SFP_VER_3_2
|
||||
#define CONFIG_SYS_FSL_SNVS_LE
|
||||
|
||||
@@ -168,6 +168,8 @@ struct sys_info {
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_JR0_OFFSET)
|
||||
|
||||
/* Device Configuration and Pin Control */
|
||||
#define DCFG_DCSR_PORCR1 0x0
|
||||
|
||||
struct ccsr_gur {
|
||||
u32 porsr1; /* POR status 1 */
|
||||
#define FSL_CHASSIS2_CCSR_PORSR1_RCW_MASK 0xFF800000
|
||||
@@ -335,6 +337,8 @@ struct ccsr_gur {
|
||||
|
||||
#define SCFG_SNPCNFGCR_SECRDSNP 0x80000000
|
||||
#define SCFG_SNPCNFGCR_SECWRSNP 0x40000000
|
||||
#define SCFG_SNPCNFGCR_SATARDSNP 0x00800000
|
||||
#define SCFG_SNPCNFGCR_SATAWRSNP 0x00400000
|
||||
|
||||
/* Supplemental Configuration Unit */
|
||||
struct ccsr_scfg {
|
||||
|
||||
@@ -34,5 +34,6 @@ void *get_spin_tbl_addr(void);
|
||||
phys_addr_t determine_mp_bootpg(void);
|
||||
void secondary_boot_func(void);
|
||||
int is_core_online(u64 cpu_id);
|
||||
u32 cpu_pos_mask(void);
|
||||
#endif
|
||||
#endif /* _FSL_LAYERSCAPE_MP_H */
|
||||
|
||||
@@ -60,9 +60,8 @@ struct cpu_type {
|
||||
|
||||
/* ahci port register default value */
|
||||
#define AHCI_PORT_PHY_1_CFG 0xa003fffe
|
||||
#define AHCI_PORT_PHY_2_CFG 0x28184d1f
|
||||
#define AHCI_PORT_PHY_3_CFG 0x0e081509
|
||||
#define AHCI_PORT_TRANS_CFG 0x08000029
|
||||
#define AHCI_PORT_AXICC_CFG 0x3fffffff
|
||||
|
||||
/* AHCI (sata) register map */
|
||||
struct ccsr_ahci {
|
||||
|
||||
@@ -17,7 +17,8 @@
|
||||
#define MXC_CPU_MX6SX 0x62
|
||||
#define MXC_CPU_MX6Q 0x63
|
||||
#define MXC_CPU_MX6UL 0x64
|
||||
#define MXC_CPU_MX6SOLO 0x65 /* dummy ID */
|
||||
#define MXC_CPU_MX6ULL 0x65
|
||||
#define MXC_CPU_MX6SOLO 0x66 /* dummy */
|
||||
#define MXC_CPU_MX6D 0x67
|
||||
#define MXC_CPU_MX6DP 0x68
|
||||
#define MXC_CPU_MX6QP 0x69
|
||||
|
||||
@@ -94,14 +94,7 @@
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A008407
|
||||
|
||||
#ifdef CONFIG_DDR_SPD
|
||||
#define CONFIG_SYS_FSL_DDR_BE
|
||||
#define CONFIG_VERY_BIG_RAM
|
||||
#ifdef CONFIG_SYS_FSL_DDR4
|
||||
#define CONFIG_SYS_FSL_DDRC_GEN4
|
||||
#else
|
||||
#define CONFIG_SYS_FSL_DDRC_ARM_GEN3
|
||||
#endif
|
||||
#define CONFIG_SYS_FSL_DDR
|
||||
#define CONFIG_SYS_LS1_DDR_BLOCK1_SIZE ((phys_size_t)2 << 30)
|
||||
#define CONFIG_MAX_MEM_MAPPED CONFIG_SYS_LS1_DDR_BLOCK1_SIZE
|
||||
#endif
|
||||
@@ -120,13 +113,7 @@
|
||||
|
||||
#define DCU_LAYER_MAX_NUM 16
|
||||
|
||||
#define CONFIG_SYS_FSL_SRDS_1
|
||||
|
||||
#ifdef CONFIG_LS102XA
|
||||
#define CONFIG_MAX_CPUS 2
|
||||
#define CONFIG_SYS_FSL_IFC_BANK_COUNT 8
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 1
|
||||
#define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_5_0
|
||||
#define CONFIG_SYS_FSL_SEC_COMPAT 5
|
||||
#define CONFIG_USB_MAX_CONTROLLER_COUNT 1
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A008378
|
||||
|
||||
@@ -379,6 +379,16 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CSCDR1_UART_CLK_SEL (1 << 6)
|
||||
|
||||
/* Define the bits in register CS1CDR */
|
||||
/* MX6UL, !MX6ULL */
|
||||
#define MXC_CCM_CS1CDR_SAI3_CLK_PRED_MASK (0x7 << 22)
|
||||
#define MXC_CCM_CS1CDR_SAI3_CLK_PRED_OFFSET 22
|
||||
#define MXC_CCM_CS1CDR_SAI3_CLK_PODF_MASK (0x3F << 16)
|
||||
#define MXC_CCM_CS1CDR_SAI3_CLK_PODF_OFFSET 16
|
||||
#define MXC_CCM_CS1CDR_SAI1_CLK_PRED_MASK (0x7 << 6)
|
||||
#define MXC_CCM_CS1CDR_SAI1_CLK_PRED_OFFSET 6
|
||||
#define MXC_CCM_CS1CDR_SAI1_CLK_PODF_MASK 0x3F
|
||||
#define MXC_CCM_CS1CDR_SAI1_CLK_PODF_OFFSET 0
|
||||
|
||||
#define MXC_CCM_CS1CDR_ESAI_CLK_PODF_MASK (0x3F << 25)
|
||||
#define MXC_CCM_CS1CDR_ESAI_CLK_PODF_OFFSET 25
|
||||
#define MXC_CCM_CS1CDR_SSI3_CLK_PRED_MASK (0x7 << 22)
|
||||
@@ -460,7 +470,7 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CDCDR_SPDIF1_CLK_SEL_OFFSET 7
|
||||
|
||||
/* Define the bits in register CHSCCDR */
|
||||
#ifdef CONFIG_MX6SX
|
||||
/* i.MX6SX */
|
||||
#define MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_MASK (0x7 << 15)
|
||||
#define MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_OFFSET 15
|
||||
#define MXC_CCM_CHSCCDR_ENET_PODF_MASK (0x7 << 12)
|
||||
@@ -473,7 +483,7 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CHSCCDR_M4_PODF_OFFSET 3
|
||||
#define MXC_CCM_CHSCCDR_M4_CLK_SEL_MASK (0x7)
|
||||
#define MXC_CCM_CHSCCDR_M4_CLK_SEL_OFFSET 0
|
||||
#else
|
||||
|
||||
#define MXC_CCM_CHSCCDR_IPU1_DI1_PRE_CLK_SEL_MASK (0x7 << 15)
|
||||
#define MXC_CCM_CHSCCDR_IPU1_DI1_PRE_CLK_SEL_OFFSET 15
|
||||
#define MXC_CCM_CHSCCDR_IPU1_DI1_PODF_MASK (0x7 << 12)
|
||||
@@ -486,7 +496,14 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET 3
|
||||
#define MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_MASK (0x7)
|
||||
#define MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET 0
|
||||
#endif
|
||||
|
||||
/* i.MX6ULL */
|
||||
#define MXC_CCM_CHSCCDR_EPDC_PRE_CLK_SEL_MASK (0x7 << 15)
|
||||
#define MXC_CCM_CHSCCDR_EPDC_PRE_CLK_SEL_OFFSET 15
|
||||
#define MXC_CCM_CHSCCDR_EPDC_PODF_MASK (0x7 << 12)
|
||||
#define MXC_CCM_CHSCCDR_EPDC_PODF_OFFSET 12
|
||||
#define MXC_CCM_CHSCCDR_EPDC_CLK_SEL_MASK (0x7 << 9)
|
||||
#define MXC_CCM_CHSCCDR_EPDC_CLK_SEL_OFFSET 9
|
||||
|
||||
#define CHSCCDR_CLK_SEL_LDB_DI0 3
|
||||
#define CHSCCDR_PODF_DIVIDE_BY_3 2
|
||||
@@ -626,6 +643,12 @@ struct mxc_ccm_reg {
|
||||
/* Define the bits in registers CCGRx */
|
||||
#define MXC_CCM_CCGR_CG_MASK 3
|
||||
|
||||
/* i.MX 6ULL */
|
||||
#define MXC_CCM_CCGR0_DCP_CLK_OFFSET 10
|
||||
#define MXC_CCM_CCGR0_DCP_CLK_MASK (3 << MXC_CCM_CCGR0_DCP_CLK_OFFSET)
|
||||
#define MXC_CCM_CCGR0_ENET_CLK_ENABLE_OFFSET 12
|
||||
#define MXC_CCM_CCGR0_ENET_CLK_ENABLE_MASK (3 << MXC_CCM_CCGR0_ENET_CLK_ENABLE_OFFSET)
|
||||
|
||||
#define MXC_CCM_CCGR0_AIPS_TZ1_OFFSET 0
|
||||
#define MXC_CCM_CCGR0_AIPS_TZ1_MASK (3 << MXC_CCM_CCGR0_AIPS_TZ1_OFFSET)
|
||||
#define MXC_CCM_CCGR0_AIPS_TZ2_OFFSET 2
|
||||
@@ -702,13 +725,12 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CCGR1_CANFD_MASK (3 << MXC_CCM_CCGR1_CANFD_OFFSET)
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_MX6SX
|
||||
#define MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_OFFSET 0
|
||||
#define MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_MASK (3 << MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_OFFSET)
|
||||
#else
|
||||
/* i.MX6SX/UL */
|
||||
#define MXC_CCM_CCGR2_CSI_OFFSET 2
|
||||
#define MXC_CCM_CCGR2_CSI_MASK (3 << MXC_CCM_CCGR2_CSI_OFFSET)
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_MX6SX
|
||||
#define MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_OFFSET 4
|
||||
#define MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_MASK (3 << MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_OFFSET)
|
||||
@@ -744,9 +766,18 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_OFFSET 26
|
||||
#define MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_MASK (3 << MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_OFFSET)
|
||||
|
||||
/* i.MX6ULL */
|
||||
#define MXC_CCM_CCGR2_ESAI_CLK_OFFSET 0
|
||||
#define MXC_CCM_CCGR2_ESAI_CLK_MASK (3 << MXC_CCM_CCGR2_ESAI_CLK_OFFSET)
|
||||
#define MXC_CCM_CCGR2_IOMUXC_SNVS_CLK_OFFSET 4
|
||||
#define MXC_CCM_CCGR2_IOMUXC_SNVS_CLK_MASK (3 << MXC_CCM_CCGR2_IOMUXC_SNVS_CLK_OFFSET)
|
||||
|
||||
/* Exist on i.MX6SX */
|
||||
#define MXC_CCM_CCGR3_M4_OFFSET 2
|
||||
#define MXC_CCM_CCGR3_M4_MASK (3 << MXC_CCM_CCGR3_M4_OFFSET)
|
||||
/* i.MX6ULL */
|
||||
#define MXC_CCM_CCGR3_EPDC_CLK_ENABLE_OFFSET 4
|
||||
#define MXC_CCM_CCGR3_EPDC_CLK_ENABLE_MASK (3 << MXC_CCM_CCGR3_EPDC_CLK_ENABLE_OFFSET)
|
||||
#define MXC_CCM_CCGR3_ENET_OFFSET 4
|
||||
#define MXC_CCM_CCGR3_ENET_MASK (3 << MXC_CCM_CCGR3_ENET_OFFSET)
|
||||
#define MXC_CCM_CCGR3_QSPI_OFFSET 14
|
||||
@@ -808,7 +839,7 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CCGR3_OCRAM_OFFSET 28
|
||||
#define MXC_CCM_CCGR3_OCRAM_MASK (3 << MXC_CCM_CCGR3_OCRAM_OFFSET)
|
||||
|
||||
/* GPIO4 on i.MX6UL */
|
||||
/* GPIO4 on i.MX6UL/ULL */
|
||||
#define MXC_CCM_CCGR3_GPIO4_CLK_OFFSET 30
|
||||
#define MXC_CCM_CCGR3_GPIO4_CLK_MASK (3 << MXC_CCM_CCGR3_GPIO4_CLK_OFFSET)
|
||||
|
||||
@@ -817,6 +848,10 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CCGR3_OPENVGAXICLK_MASK (3 << MXC_CCM_CCGR3_OPENVGAXICLK_OFFSET)
|
||||
#endif
|
||||
|
||||
/* i.MX6ULL */
|
||||
#define MXC_CCM_CCGR3_IOMUXC_SNVS_GPR_CLK_OFFSET 30
|
||||
#define MXC_CCM_CCGR3_IOMUXC_SNVS_GPR_CLK_MASK (3 << MXC_CCM_CCGR3_IOMUXC_SNVS_GPR_CLK_OFFSET)
|
||||
|
||||
#define MXC_CCM_CCGR4_PCIE_OFFSET 0
|
||||
#define MXC_CCM_CCGR4_PCIE_MASK (3 << MXC_CCM_CCGR4_PCIE_OFFSET)
|
||||
/* QSPI2 on i.MX6SX */
|
||||
@@ -883,6 +918,13 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CCGR6_USDHC1_MASK (3 << MXC_CCM_CCGR6_USDHC1_OFFSET)
|
||||
#define MXC_CCM_CCGR6_USDHC2_OFFSET 4
|
||||
#define MXC_CCM_CCGR6_USDHC2_MASK (3 << MXC_CCM_CCGR6_USDHC2_OFFSET)
|
||||
#define MXC_CCM_CCGR6_SIM1_CLK_OFFSET 6
|
||||
#define MXC_CCM_CCGR6_SIM1_CLK_MASK (3 << MXC_CCM_CCGR6_SIM1_CLK_OFFSET)
|
||||
#define MXC_CCM_CCGR6_SIM2_CLK_OFFSET 8
|
||||
#define MXC_CCM_CCGR6_SIM2_CLK_MASK (3 << MXC_CCM_CCGR6_SIM2_CLK_OFFSET)
|
||||
/* i.MX6ULL */
|
||||
#define MXC_CCM_CCGR6_IPMUX4_CLK_OFFSET 8
|
||||
#define MXC_CCM_CCGR6_IPMUX4_CLK_MASK (3 << MXC_CCM_CCGR6_IPMUX4_CLK_OFFSET)
|
||||
/* GPMI/BCH on i.MX6UL */
|
||||
#define MXC_CCM_CCGR6_BCH_OFFSET 6
|
||||
#define MXC_CCM_CCGR6_BCH_MASK (3 << MXC_CCM_CCGR6_BCH_OFFSET)
|
||||
@@ -895,6 +937,9 @@ struct mxc_ccm_reg {
|
||||
#define MXC_CCM_CCGR6_USDHC4_MASK (3 << MXC_CCM_CCGR6_USDHC4_OFFSET)
|
||||
#define MXC_CCM_CCGR6_EMI_SLOW_OFFSET 10
|
||||
#define MXC_CCM_CCGR6_EMI_SLOW_MASK (3 << MXC_CCM_CCGR6_EMI_SLOW_OFFSET)
|
||||
/* i.MX6ULL */
|
||||
#define MXC_CCM_CCGR6_AIPS_TZ3_CLK_OFFSET 18
|
||||
#define MXC_CCM_CCGR6_AIPS_TZ3_CLK_MASK (3 << MXC_CCM_CCGR6_AIPS_TZ3_CLK_OFFSET)
|
||||
/* The following *CCGR6* exist only i.MX6SX */
|
||||
#define MXC_CCM_CCGR6_PWM8_OFFSET 16
|
||||
#define MXC_CCM_CCGR6_PWM8_MASK (3 << MXC_CCM_CCGR6_PWM8_OFFSET)
|
||||
@@ -1226,6 +1271,7 @@ struct mxc_ccm_reg {
|
||||
(((v) << 0) & BM_ANADIG_PFD_528_PFD0_FRAC)
|
||||
|
||||
#define BM_ANADIG_ANA_MISC0_REFTOP_SELBIASOFF 0x00000008
|
||||
#define BM_ANADIG_ANA_MISC0_REFTOP_VBGADJ 0x60
|
||||
|
||||
#define BM_PMU_MISC2_AUDIO_DIV_MSB (1 << 23)
|
||||
#define BP_PMU_MISC2_AUDIO_DIV_MSB 23
|
||||
|
||||
@@ -182,6 +182,7 @@
|
||||
#define GPIO3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x24000)
|
||||
#define GPIO4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x28000)
|
||||
#define GPIO5_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x2C000)
|
||||
#define MX6UL_SNVS_LP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000)
|
||||
#define GPIO6_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000)
|
||||
#define GPIO7_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000)
|
||||
#define KPP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x38000)
|
||||
@@ -265,6 +266,7 @@
|
||||
#define IP2APB_PERFMON1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x44000)
|
||||
#define IP2APB_PERFMON2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000)
|
||||
#define MX6UL_LCDIF1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000)
|
||||
#define MX6ULL_LCDIF1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000)
|
||||
#ifdef CONFIG_MX6SX
|
||||
#define DEBUG_MONITOR_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000)
|
||||
#else
|
||||
@@ -318,6 +320,14 @@
|
||||
#define PWM6_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA8000)
|
||||
#define PWM7_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xAC000)
|
||||
#define PWM8_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xB0000)
|
||||
#elif defined(CONFIG_MX6ULL)
|
||||
#define AIPS3_CONFIG_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x7C000)
|
||||
#define DCP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x80000)
|
||||
#define RNGB_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x84000)
|
||||
#define UART8_IPS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x88000)
|
||||
#define EPDC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x8C000)
|
||||
#define IOMUXC_SNVS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x90000)
|
||||
#define SNVS_GPR_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x94000)
|
||||
#endif
|
||||
/* Only for i.MX6SX */
|
||||
#define LCDIF2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x24000)
|
||||
@@ -336,10 +346,12 @@
|
||||
#include <asm/types.h>
|
||||
|
||||
/* only for i.MX6SX/UL */
|
||||
#define WDOG3_BASE_ADDR ((is_cpu_type(MXC_CPU_MX6UL) ? \
|
||||
#define WDOG3_BASE_ADDR ((is_mx6ul() ? \
|
||||
MX6UL_WDOG3_BASE_ADDR : MX6SX_WDOG3_BASE_ADDR))
|
||||
#define LCDIF1_BASE_ADDR ((is_cpu_type(MXC_CPU_MX6UL)) ? \
|
||||
MX6UL_LCDIF1_BASE_ADDR : MX6SX_LCDIF1_BASE_ADDR)
|
||||
#define LCDIF1_BASE_ADDR ((is_mx6ul()) ? \
|
||||
MX6UL_LCDIF1_BASE_ADDR : \
|
||||
((is_mx6ull()) ? \
|
||||
MX6ULL_LCDIF1_BASE_ADDR : MX6SX_LCDIF1_BASE_ADDR))
|
||||
|
||||
|
||||
extern void imx_get_mac_from_fuse(int dev_id, unsigned char *mac);
|
||||
|
||||
@@ -37,6 +37,8 @@ enum {
|
||||
#include "mx6sl_pins.h"
|
||||
#elif defined(CONFIG_MX6SX)
|
||||
#include "mx6sx_pins.h"
|
||||
#elif defined(CONFIG_MX6ULL)
|
||||
#include "mx6ull_pins.h"
|
||||
#elif defined(CONFIG_MX6UL)
|
||||
#include "mx6ul_pins.h"
|
||||
#else
|
||||
|
||||
1065
arch/arm/include/asm/arch-mx6/mx6ull_pins.h
Normal file
1065
arch/arm/include/asm/arch-mx6/mx6ull_pins.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -21,6 +21,11 @@
|
||||
#endif
|
||||
|
||||
typedef struct { volatile int counter; } atomic_t;
|
||||
#if BITS_PER_LONG == 32
|
||||
typedef struct { volatile long long counter; } atomic64_t;
|
||||
#else /* BIT_PER_LONG == 32 */
|
||||
typedef struct { volatile long counter; } atomic64_t;
|
||||
#endif
|
||||
|
||||
#define ATOMIC_INIT(i) { (i) }
|
||||
|
||||
@@ -28,7 +33,9 @@ typedef struct { volatile int counter; } atomic_t;
|
||||
#include <asm/proc-armv/system.h>
|
||||
|
||||
#define atomic_read(v) ((v)->counter)
|
||||
#define atomic_set(v,i) (((v)->counter) = (i))
|
||||
#define atomic_set(v, i) (((v)->counter) = (i))
|
||||
#define atomic64_read(v) atomic_read(v)
|
||||
#define atomic64_set(v, i) atomic_set(v, i)
|
||||
|
||||
static inline void atomic_add(int i, volatile atomic_t *v)
|
||||
{
|
||||
@@ -101,6 +108,65 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
#if BITS_PER_LONG == 32
|
||||
|
||||
static inline void atomic64_add(long long i, volatile atomic64_t *v)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
|
||||
local_irq_save(flags);
|
||||
v->counter += i;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static inline void atomic64_sub(long long i, volatile atomic64_t *v)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
|
||||
local_irq_save(flags);
|
||||
v->counter -= i;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
#else /* BIT_PER_LONG == 32 */
|
||||
|
||||
static inline void atomic64_add(long i, volatile atomic64_t *v)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
|
||||
local_irq_save(flags);
|
||||
v->counter += i;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static inline void atomic64_sub(long i, volatile atomic64_t *v)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
|
||||
local_irq_save(flags);
|
||||
v->counter -= i;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void atomic64_inc(volatile atomic64_t *v)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
|
||||
local_irq_save(flags);
|
||||
v->counter += 1;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static inline void atomic64_dec(volatile atomic64_t *v)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
|
||||
local_irq_save(flags);
|
||||
v->counter -= 1;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/* Atomic operations are already serializing on ARM */
|
||||
#define smp_mb__before_atomic_dec() barrier()
|
||||
#define smp_mb__after_atomic_dec() barrier()
|
||||
|
||||
@@ -39,10 +39,9 @@
|
||||
* MUX_CTRL_OFS: 0..11 (12)
|
||||
* PAD_CTRL_OFS: 12..23 (12)
|
||||
* SEL_INPUT_OFS: 24..35 (12)
|
||||
* MUX_MODE + SION: 36..40 (5)
|
||||
* PAD_CTRL + NO_PAD_CTRL: 41..58 (18)
|
||||
* SEL_INP: 59..62 (4)
|
||||
* reserved: 63 (1)
|
||||
* MUX_MODE + SION + LPSR: 36..41 (6)
|
||||
* PAD_CTRL + NO_PAD_CTRL: 42..59 (18)
|
||||
* SEL_INP: 60..63 (4)
|
||||
*/
|
||||
|
||||
typedef u64 iomux_v3_cfg_t;
|
||||
@@ -57,10 +56,10 @@ typedef u64 iomux_v3_cfg_t;
|
||||
MUX_SEL_INPUT_OFS_SHIFT)
|
||||
|
||||
#define MUX_MODE_SHIFT 36
|
||||
#define MUX_MODE_MASK ((iomux_v3_cfg_t)0x1f << MUX_MODE_SHIFT)
|
||||
#define MUX_PAD_CTRL_SHIFT 41
|
||||
#define MUX_MODE_MASK ((iomux_v3_cfg_t)0x3f << MUX_MODE_SHIFT)
|
||||
#define MUX_PAD_CTRL_SHIFT 42
|
||||
#define MUX_PAD_CTRL_MASK ((iomux_v3_cfg_t)0x3ffff << MUX_PAD_CTRL_SHIFT)
|
||||
#define MUX_SEL_INPUT_SHIFT 59
|
||||
#define MUX_SEL_INPUT_SHIFT 60
|
||||
#define MUX_SEL_INPUT_MASK ((iomux_v3_cfg_t)0xf << MUX_SEL_INPUT_SHIFT)
|
||||
|
||||
#define MUX_MODE_SION ((iomux_v3_cfg_t)IOMUX_CONFIG_SION << \
|
||||
@@ -85,12 +84,12 @@ typedef u64 iomux_v3_cfg_t;
|
||||
|
||||
#define NO_PAD_CTRL (1 << 17)
|
||||
|
||||
#define IOMUX_CONFIG_LPSR 0x20
|
||||
#define MUX_MODE_LPSR ((iomux_v3_cfg_t)IOMUX_CONFIG_LPSR << \
|
||||
MUX_MODE_SHIFT)
|
||||
#ifdef CONFIG_MX7
|
||||
|
||||
#define IOMUX_LPSR_SEL_INPUT_OFS 0x70000
|
||||
#define IOMUX_CONFIG_LPSR 0x8
|
||||
#define MUX_MODE_LPSR ((iomux_v3_cfg_t)IOMUX_CONFIG_LPSR << \
|
||||
MUX_MODE_SHIFT)
|
||||
|
||||
#define PAD_CTL_DSE_1P8V_140OHM (0x0<<0)
|
||||
#define PAD_CTL_DSE_1P8V_35OHM (0x1<<0)
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#define is_mx6sx() (is_cpu_type(MXC_CPU_MX6SX))
|
||||
#define is_mx6sl() (is_cpu_type(MXC_CPU_MX6SL))
|
||||
#define is_mx6ul() (is_cpu_type(MXC_CPU_MX6UL))
|
||||
#define is_mx6ull() (is_cpu_type(MXC_CPU_MX6ULL))
|
||||
|
||||
u32 get_nr_cpus(void);
|
||||
u32 get_cpu_rev(void);
|
||||
|
||||
@@ -45,7 +45,7 @@ static inline void *phys_to_virt(unsigned long x)
|
||||
/*
|
||||
* Virtual <-> DMA view memory address translations
|
||||
* Again, these are *only* valid on the kernel direct mapped RAM
|
||||
* memory. Use of these is *depreciated*.
|
||||
* memory. Use of these is *deprecated*.
|
||||
*/
|
||||
#define virt_to_bus(x) (__virt_to_bus((unsigned long)(x)))
|
||||
#define bus_to_virt(x) ((void *)(__bus_to_virt((unsigned long)(x))))
|
||||
@@ -127,7 +127,7 @@ static inline void *phys_to_virt(unsigned long x)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* We should really eliminate virt_to_bus() here - it's depreciated.
|
||||
* We should really eliminate virt_to_bus() here - it's deprecated.
|
||||
*/
|
||||
#define page_to_bus(page) (virt_to_bus(page_address(page)))
|
||||
|
||||
|
||||
@@ -11,29 +11,26 @@
|
||||
struct jmp_buf_data {
|
||||
ulong target;
|
||||
ulong regs[5];
|
||||
int ret;
|
||||
};
|
||||
|
||||
typedef struct jmp_buf_data jmp_buf[1];
|
||||
|
||||
static inline int setjmp(jmp_buf jmp)
|
||||
{
|
||||
long r = 0;
|
||||
jmp->ret = 0;
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
asm volatile(
|
||||
"adr x1, jmp_target\n"
|
||||
"str x1, %1\n"
|
||||
"stp x26, x27, %2\n"
|
||||
"stp x28, x29, %3\n"
|
||||
"str x1, %0\n"
|
||||
"stp x26, x27, %1\n"
|
||||
"stp x28, x29, %2\n"
|
||||
"mov x1, sp\n"
|
||||
"str x1, %4\n"
|
||||
"b 2f\n"
|
||||
"str x1, %3\n"
|
||||
"jmp_target: "
|
||||
"mov %0, #1\n"
|
||||
"2:\n"
|
||||
: "+r" (r), "=m" (jmp->target),
|
||||
"=m" (jmp->regs[0]), "=m" (jmp->regs[2]),
|
||||
"=m" (jmp->regs[4])
|
||||
: "=m" (jmp->target), "=m" (jmp->regs[0]),
|
||||
"=m" (jmp->regs[2]), "=m" (jmp->regs[4])
|
||||
:
|
||||
: "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7",
|
||||
"x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15",
|
||||
@@ -49,26 +46,25 @@ static inline int setjmp(jmp_buf jmp)
|
||||
#else
|
||||
"adr r0, jmp_target\n"
|
||||
#endif
|
||||
"mov r1, %1\n"
|
||||
"mov r1, %0\n"
|
||||
"mov r2, sp\n"
|
||||
"stm r1!, {r0, r2, r4, r5, r6, r7}\n"
|
||||
"b 2f\n"
|
||||
".align 2\n"
|
||||
"jmp_target: \n"
|
||||
"mov %0, #1\n"
|
||||
"2:\n"
|
||||
: "+l" (r)
|
||||
:
|
||||
: "l" (&jmp->target)
|
||||
: "r0", "r1", "r2", "r3", /* "r4", "r5", "r6", "r7", */
|
||||
"r8", "r9", "r10", "r11", /* sp, */ "ip", "lr",
|
||||
"cc", "memory");
|
||||
#endif
|
||||
|
||||
return r;
|
||||
return jmp->ret;
|
||||
}
|
||||
|
||||
static inline __noreturn void longjmp(jmp_buf jmp)
|
||||
static inline __noreturn void longjmp(jmp_buf jmp, int ret)
|
||||
{
|
||||
jmp->ret = ret;
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
asm volatile(
|
||||
"ldr x0, %0\n"
|
||||
|
||||
@@ -132,7 +132,7 @@ struct tag_ramdisk {
|
||||
/* describes where the compressed ramdisk image lives (virtual address) */
|
||||
/*
|
||||
* this one accidentally used virtual addresses - as such,
|
||||
* its depreciated.
|
||||
* it's deprecated.
|
||||
*/
|
||||
#define ATAG_INITRD 0x54410005
|
||||
|
||||
|
||||
@@ -33,15 +33,6 @@ enum {
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Board specific load method for boards that have a special way of loading
|
||||
* U-Boot, which does not fit with the existing SPL code.
|
||||
*
|
||||
* @return 0 on success, negative errno value on failure.
|
||||
*/
|
||||
|
||||
int spl_board_load_image(void);
|
||||
|
||||
/* Linker symbols. */
|
||||
extern char __bss_start[], __bss_end[];
|
||||
|
||||
|
||||
@@ -223,6 +223,10 @@ void __noreturn psci_system_reset(bool smc);
|
||||
*/
|
||||
void save_boot_params_ret(void);
|
||||
|
||||
#ifdef CONFIG_ARMV7_LPAE
|
||||
void switch_to_hypervisor_ret(void);
|
||||
#endif
|
||||
|
||||
#define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t");
|
||||
|
||||
#ifdef __ARM_ARCH_7A__
|
||||
|
||||
@@ -51,9 +51,9 @@
|
||||
|
||||
/* MDIO module input frequency */
|
||||
#ifdef CONFIG_SOC_K2G
|
||||
#define EMAC_MDIO_BUS_FREQ (clk_get_rate(sys_clk0_3_clk))
|
||||
#define EMAC_MDIO_BUS_FREQ (ks_clk_get_rate(sys_clk0_3_clk))
|
||||
#else
|
||||
#define EMAC_MDIO_BUS_FREQ (clk_get_rate(pass_pll_clk))
|
||||
#define EMAC_MDIO_BUS_FREQ (ks_clk_get_rate(pass_pll_clk))
|
||||
#endif
|
||||
/* MDIO clock output frequency */
|
||||
#define EMAC_MDIO_CLOCK_FREQ 2500000 /* 2.5 MHz */
|
||||
|
||||
@@ -47,7 +47,7 @@ void __weak board_init_f(ulong dummy)
|
||||
* arg: Pointer to paramter image in RAM
|
||||
*/
|
||||
#ifdef CONFIG_SPL_OS_BOOT
|
||||
void __noreturn jump_to_image_linux(void *arg)
|
||||
void __noreturn jump_to_image_linux(struct spl_image_info *spl_image, void *arg)
|
||||
{
|
||||
unsigned long machid = 0xffffffff;
|
||||
#ifdef CONFIG_MACH_TYPE
|
||||
@@ -58,7 +58,7 @@ void __noreturn jump_to_image_linux(void *arg)
|
||||
typedef void (*image_entry_arg_t)(int, int, void *)
|
||||
__attribute__ ((noreturn));
|
||||
image_entry_arg_t image_entry =
|
||||
(image_entry_arg_t)(uintptr_t) spl_image.entry_point;
|
||||
(image_entry_arg_t)(uintptr_t) spl_image->entry_point;
|
||||
cleanup_before_linux();
|
||||
image_entry(0, machid, arg);
|
||||
}
|
||||
|
||||
@@ -341,7 +341,7 @@ static unsigned long pll_freq_get(int pll)
|
||||
return ret;
|
||||
}
|
||||
|
||||
unsigned long clk_get_rate(unsigned int clk)
|
||||
unsigned long ks_clk_get_rate(unsigned int clk)
|
||||
{
|
||||
unsigned long freq = 0;
|
||||
|
||||
@@ -381,37 +381,37 @@ unsigned long clk_get_rate(unsigned int clk)
|
||||
freq = pll_freq_get(CORE_PLL) / pll0div_read(4);
|
||||
break;
|
||||
case sys_clk0_2_clk:
|
||||
freq = clk_get_rate(sys_clk0_clk) / 2;
|
||||
freq = ks_clk_get_rate(sys_clk0_clk) / 2;
|
||||
break;
|
||||
case sys_clk0_3_clk:
|
||||
freq = clk_get_rate(sys_clk0_clk) / 3;
|
||||
freq = ks_clk_get_rate(sys_clk0_clk) / 3;
|
||||
break;
|
||||
case sys_clk0_4_clk:
|
||||
freq = clk_get_rate(sys_clk0_clk) / 4;
|
||||
freq = ks_clk_get_rate(sys_clk0_clk) / 4;
|
||||
break;
|
||||
case sys_clk0_6_clk:
|
||||
freq = clk_get_rate(sys_clk0_clk) / 6;
|
||||
freq = ks_clk_get_rate(sys_clk0_clk) / 6;
|
||||
break;
|
||||
case sys_clk0_8_clk:
|
||||
freq = clk_get_rate(sys_clk0_clk) / 8;
|
||||
freq = ks_clk_get_rate(sys_clk0_clk) / 8;
|
||||
break;
|
||||
case sys_clk0_12_clk:
|
||||
freq = clk_get_rate(sys_clk0_clk) / 12;
|
||||
freq = ks_clk_get_rate(sys_clk0_clk) / 12;
|
||||
break;
|
||||
case sys_clk0_24_clk:
|
||||
freq = clk_get_rate(sys_clk0_clk) / 24;
|
||||
freq = ks_clk_get_rate(sys_clk0_clk) / 24;
|
||||
break;
|
||||
case sys_clk1_3_clk:
|
||||
freq = clk_get_rate(sys_clk1_clk) / 3;
|
||||
freq = ks_clk_get_rate(sys_clk1_clk) / 3;
|
||||
break;
|
||||
case sys_clk1_4_clk:
|
||||
freq = clk_get_rate(sys_clk1_clk) / 4;
|
||||
freq = ks_clk_get_rate(sys_clk1_clk) / 4;
|
||||
break;
|
||||
case sys_clk1_6_clk:
|
||||
freq = clk_get_rate(sys_clk1_clk) / 6;
|
||||
freq = ks_clk_get_rate(sys_clk1_clk) / 6;
|
||||
break;
|
||||
case sys_clk1_12_clk:
|
||||
freq = clk_get_rate(sys_clk1_clk) / 12;
|
||||
freq = ks_clk_get_rate(sys_clk1_clk) / 12;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -74,7 +74,7 @@ int do_getclk_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
|
||||
clk = simple_strtoul(argv[1], NULL, 10);
|
||||
|
||||
freq = clk_get_rate(clk);
|
||||
freq = ks_clk_get_rate(clk);
|
||||
if (freq)
|
||||
printf("clock index [%d] - frequency %lu\n", clk, freq);
|
||||
else
|
||||
|
||||
@@ -125,9 +125,7 @@ extern int speeds[];
|
||||
void init_plls(void);
|
||||
void init_pll(const struct pll_init_data *data);
|
||||
struct pll_init_data *get_pll_init_data(int pll);
|
||||
unsigned long clk_get_rate(unsigned int clk);
|
||||
unsigned long clk_round_rate(unsigned int clk, unsigned long hz);
|
||||
int clk_set_rate(unsigned int clk, unsigned long hz);
|
||||
unsigned long ks_clk_get_rate(unsigned int clk);
|
||||
int get_max_dev_speed(int *spds);
|
||||
int get_max_arm_speed(int *spds);
|
||||
void pll_pa_clk_sel(void);
|
||||
|
||||
@@ -10,6 +10,9 @@ config TARGET_OPENRD
|
||||
config TARGET_DREAMPLUG
|
||||
bool "DreamPlug Board"
|
||||
|
||||
config TARGET_DS109
|
||||
bool "Synology DS109"
|
||||
|
||||
config TARGET_GURUPLUG
|
||||
bool "GuruPlug Board"
|
||||
|
||||
@@ -59,6 +62,7 @@ config SYS_SOC
|
||||
|
||||
source "board/Marvell/openrd/Kconfig"
|
||||
source "board/Marvell/dreamplug/Kconfig"
|
||||
source "board/Synology/ds109/Kconfig"
|
||||
source "board/Marvell/guruplug/Kconfig"
|
||||
source "board/Marvell/sheevaplug/Kconfig"
|
||||
source "board/buffalo/lsxl/Kconfig"
|
||||
|
||||
@@ -133,13 +133,17 @@ static int gpio_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int spl_board_load_image(void)
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
static int spl_board_load_image(struct spl_image_info *spl_image,
|
||||
struct spl_boot_device *bootdev)
|
||||
{
|
||||
debug("Returning to FEL sp=%x, lr=%x\n", fel_stash.sp, fel_stash.lr);
|
||||
return_to_fel(fel_stash.sp, fel_stash.lr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
SPL_LOAD_IMAGE_METHOD(0, BOOT_DEVICE_BOARD, spl_board_load_image);
|
||||
#endif
|
||||
|
||||
void s_init(void)
|
||||
{
|
||||
|
||||
@@ -217,35 +217,57 @@ static void mctl_zq_calibration(struct dram_para *para)
|
||||
struct sunxi_mctl_ctl_reg * const mctl_ctl =
|
||||
(struct sunxi_mctl_ctl_reg *)SUNXI_DRAM_CTL0_BASE;
|
||||
|
||||
int i;
|
||||
u16 zq_val[6];
|
||||
u8 val;
|
||||
if ((readl(SUNXI_SRAMC_BASE + 0x24) & 0xff) == 0 &&
|
||||
(readl(SUNXI_SRAMC_BASE + 0xf0) & 0x1) == 0) {
|
||||
u32 reg_val;
|
||||
|
||||
writel(0x0a0a0a0a, &mctl_ctl->zqdr[2]);
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
u8 zq = (CONFIG_DRAM_ZQ >> (i * 4)) & 0xf;
|
||||
|
||||
writel((zq << 20) | (zq << 16) | (zq << 12) |
|
||||
(zq << 8) | (zq << 4) | (zq << 0),
|
||||
&mctl_ctl->zqcr);
|
||||
clrsetbits_le32(&mctl_ctl->zqcr, 0xffff,
|
||||
CONFIG_DRAM_ZQ & 0xffff);
|
||||
|
||||
writel(PIR_CLRSR, &mctl_ctl->pir);
|
||||
mctl_phy_init(PIR_ZCAL);
|
||||
|
||||
zq_val[i] = readl(&mctl_ctl->zqdr[0]) & 0xff;
|
||||
writel(REPEAT_BYTE(zq_val[i]), &mctl_ctl->zqdr[2]);
|
||||
reg_val = readl(&mctl_ctl->zqdr[0]);
|
||||
reg_val &= (0x1f << 16) | (0x1f << 0);
|
||||
reg_val |= reg_val << 8;
|
||||
writel(reg_val, &mctl_ctl->zqdr[0]);
|
||||
|
||||
writel(PIR_CLRSR, &mctl_ctl->pir);
|
||||
mctl_phy_init(PIR_ZCAL);
|
||||
reg_val = readl(&mctl_ctl->zqdr[1]);
|
||||
reg_val &= (0x1f << 16) | (0x1f << 0);
|
||||
reg_val |= reg_val << 8;
|
||||
writel(reg_val, &mctl_ctl->zqdr[1]);
|
||||
writel(reg_val, &mctl_ctl->zqdr[2]);
|
||||
} else {
|
||||
int i;
|
||||
u16 zq_val[6];
|
||||
u8 val;
|
||||
|
||||
val = readl(&mctl_ctl->zqdr[0]) >> 24;
|
||||
zq_val[i] |= bin_to_mgray(mgray_to_bin(val) - 1) << 8;
|
||||
writel(0x0a0a0a0a, &mctl_ctl->zqdr[2]);
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
u8 zq = (CONFIG_DRAM_ZQ >> (i * 4)) & 0xf;
|
||||
|
||||
writel((zq << 20) | (zq << 16) | (zq << 12) |
|
||||
(zq << 8) | (zq << 4) | (zq << 0),
|
||||
&mctl_ctl->zqcr);
|
||||
|
||||
writel(PIR_CLRSR, &mctl_ctl->pir);
|
||||
mctl_phy_init(PIR_ZCAL);
|
||||
|
||||
zq_val[i] = readl(&mctl_ctl->zqdr[0]) & 0xff;
|
||||
writel(REPEAT_BYTE(zq_val[i]), &mctl_ctl->zqdr[2]);
|
||||
|
||||
writel(PIR_CLRSR, &mctl_ctl->pir);
|
||||
mctl_phy_init(PIR_ZCAL);
|
||||
|
||||
val = readl(&mctl_ctl->zqdr[0]) >> 24;
|
||||
zq_val[i] |= bin_to_mgray(mgray_to_bin(val) - 1) << 8;
|
||||
}
|
||||
|
||||
writel((zq_val[1] << 16) | zq_val[0], &mctl_ctl->zqdr[0]);
|
||||
writel((zq_val[3] << 16) | zq_val[2], &mctl_ctl->zqdr[1]);
|
||||
writel((zq_val[5] << 16) | zq_val[4], &mctl_ctl->zqdr[2]);
|
||||
}
|
||||
|
||||
writel((zq_val[1] << 16) | zq_val[0], &mctl_ctl->zqdr[0]);
|
||||
writel((zq_val[3] << 16) | zq_val[2], &mctl_ctl->zqdr[1]);
|
||||
writel((zq_val[5] << 16) | zq_val[4], &mctl_ctl->zqdr[2]);
|
||||
}
|
||||
|
||||
static void mctl_set_cr(struct dram_para *para)
|
||||
|
||||
@@ -23,7 +23,7 @@ static struct mm_region tegra_mem_map[] = {
|
||||
}, {
|
||||
.virt = 0x80000000UL,
|
||||
.phys = 0x80000000UL,
|
||||
.size = 0xff80000000UL,
|
||||
.size = 0x80000000UL,
|
||||
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
|
||||
PTE_BLOCK_INNER_SHARE
|
||||
}, {
|
||||
|
||||
@@ -78,11 +78,11 @@ tegra_xusb_padctl_group_parse_dt(struct tegra_xusb_padctl *padctl,
|
||||
const void *fdt, int node)
|
||||
{
|
||||
unsigned int i;
|
||||
int len, err;
|
||||
int len;
|
||||
|
||||
group->name = fdt_get_name(fdt, node, &len);
|
||||
|
||||
len = fdt_count_strings(fdt, node, "nvidia,lanes");
|
||||
len = fdt_stringlist_count(fdt, node, "nvidia,lanes");
|
||||
if (len < 0) {
|
||||
error("failed to parse \"nvidia,lanes\" property");
|
||||
return -EINVAL;
|
||||
@@ -91,9 +91,9 @@ tegra_xusb_padctl_group_parse_dt(struct tegra_xusb_padctl *padctl,
|
||||
group->num_pins = len;
|
||||
|
||||
for (i = 0; i < group->num_pins; i++) {
|
||||
err = fdt_get_string_index(fdt, node, "nvidia,lanes", i,
|
||||
&group->pins[i]);
|
||||
if (err < 0) {
|
||||
group->pins[i] = fdt_stringlist_get(fdt, node, "nvidia,lanes",
|
||||
i, NULL);
|
||||
if (!group->pins[i]) {
|
||||
error("failed to read string from \"nvidia,lanes\" property");
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -101,8 +101,8 @@ tegra_xusb_padctl_group_parse_dt(struct tegra_xusb_padctl *padctl,
|
||||
|
||||
group->num_pins = len;
|
||||
|
||||
err = fdt_get_string(fdt, node, "nvidia,function", &group->func);
|
||||
if (err < 0) {
|
||||
group->func = fdt_stringlist_get(fdt, node, "nvidia,function", 0, NULL);
|
||||
if (!group->func) {
|
||||
error("failed to parse \"nvidia,func\" property");
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -223,7 +223,7 @@ tegra_xusb_padctl_config_parse_dt(struct tegra_xusb_padctl *padctl,
|
||||
|
||||
config->name = fdt_get_name(fdt, node, NULL);
|
||||
|
||||
fdt_for_each_subnode(fdt, subnode, node) {
|
||||
fdt_for_each_subnode(subnode, fdt, node) {
|
||||
struct tegra_xusb_padctl_group *group;
|
||||
int err;
|
||||
|
||||
@@ -253,7 +253,7 @@ static int tegra_xusb_padctl_parse_dt(struct tegra_xusb_padctl *padctl,
|
||||
return err;
|
||||
}
|
||||
|
||||
fdt_for_each_subnode(fdt, subnode, node) {
|
||||
fdt_for_each_subnode(subnode, fdt, node) {
|
||||
struct tegra_xusb_padctl_config *config = &padctl->config;
|
||||
|
||||
err = tegra_xusb_padctl_config_parse_dt(padctl, config, fdt,
|
||||
|
||||
@@ -134,6 +134,13 @@ int board_init(void)
|
||||
#endif
|
||||
#if defined(CONFIG_ARCH_UNIPHIER_LD20)
|
||||
case SOC_UNIPHIER_LD20:
|
||||
/* ES1 errata: increase VDD09 supply to suppress VBO noise */
|
||||
if (uniphier_get_soc_revision() == 1) {
|
||||
writel(0x00000003, 0x6184e004);
|
||||
writel(0x00000100, 0x6184e040);
|
||||
writel(0x0000b500, 0x6184e024);
|
||||
writel(0x00000001, 0x6184e000);
|
||||
}
|
||||
uniphier_nand_pin_init(false);
|
||||
sg_set_pinsel(149, 14, 8, 4); /* XIRQ0 -> XIRQ0 */
|
||||
sg_set_iectrl(149);
|
||||
|
||||
@@ -37,13 +37,12 @@ static int uniphier_set_fdt_file(void)
|
||||
const char *compat;
|
||||
char dtb_name[256];
|
||||
int buf_len = 256;
|
||||
int ret;
|
||||
|
||||
if (getenv("fdt_file"))
|
||||
return 0; /* do nothing if it is already set */
|
||||
|
||||
ret = fdt_get_string(gd->fdt_blob, 0, "compatible", &compat);
|
||||
if (ret)
|
||||
compat = fdt_stringlist_get(gd->fdt_blob, 0, "compatible", 0, NULL);
|
||||
if (!compat)
|
||||
return -EINVAL;
|
||||
|
||||
if (strncmp(compat, VENDOR_PREFIX, strlen(VENDOR_PREFIX)))
|
||||
|
||||
@@ -65,7 +65,8 @@ int uniphier_rom_get_mmc_funcptr(int (**send_cmd)(u32, u32),
|
||||
return 0;
|
||||
}
|
||||
|
||||
int spl_board_load_image(void)
|
||||
static int spl_board_load_image(struct spl_image_info *spl_image,
|
||||
struct spl_boot_device *bootdev)
|
||||
{
|
||||
int (*send_cmd)(u32 cmd, u32 arg);
|
||||
int (*card_blockaddr)(u32 rca);
|
||||
@@ -113,12 +114,12 @@ int spl_board_load_image(void)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = spl_parse_image_header((void *)CONFIG_SYS_TEXT_BASE);
|
||||
ret = spl_parse_image_header(spl_image, (void *)CONFIG_SYS_TEXT_BASE);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = (*load_image)(dev_addr, spl_image.load_addr,
|
||||
spl_image.size / 512);
|
||||
ret = (*load_image)(dev_addr, spl_image->load_addr,
|
||||
spl_image->size / 512);
|
||||
if (ret) {
|
||||
printf("failed to load image\n");
|
||||
return ret;
|
||||
@@ -126,3 +127,4 @@ int spl_board_load_image(void)
|
||||
|
||||
return 0;
|
||||
}
|
||||
SPL_LOAD_IMAGE_METHOD(0, BOOT_DEVICE_BOARD, spl_board_load_image);
|
||||
|
||||
@@ -23,6 +23,7 @@ void uniphier_ld11_pll_init(void)
|
||||
uniphier_ld20_sscpll_ssc_en(SC_CPLLCTRL);
|
||||
uniphier_ld20_sscpll_ssc_en(SC_MPLLCTRL);
|
||||
uniphier_ld20_sscpll_ssc_en(SC_VSPLLCTRL);
|
||||
uniphier_ld20_sscpll_ssc_en(SC_DPLLCTRL);
|
||||
|
||||
uniphier_ld20_vpll27_init(SC_VPLL27FCTRL);
|
||||
uniphier_ld20_vpll27_init(SC_VPLL27ACTRL);
|
||||
|
||||
@@ -7,7 +7,12 @@
|
||||
#ifndef _DDRPHY_LD20_REGS_H
|
||||
#define _DDRPHY_LD20_REGS_H
|
||||
|
||||
#include <linux/bitops.h>
|
||||
|
||||
#define PHY_REG_SHIFT 2
|
||||
#define PHY_SLV_DLY_WIDTH 6
|
||||
#define PHY_BITLVL_DLY_WIDTH 6
|
||||
#define PHY_MAS_DLY_WIDTH 8
|
||||
|
||||
#define PHY_SCL_START (0x40 << (PHY_REG_SHIFT))
|
||||
#define PHY_SCL_DATA_0 (0x41 << (PHY_REG_SHIFT))
|
||||
@@ -17,8 +22,19 @@
|
||||
#define PHY_SCL_CONFIG_2 (0x47 << (PHY_REG_SHIFT))
|
||||
#define PHY_PAD_CTRL (0x48 << (PHY_REG_SHIFT))
|
||||
#define PHY_DLL_RECALIB (0x49 << (PHY_REG_SHIFT))
|
||||
#define PHY_DLL_RECALIB_TRIM_MASK GENMASK(PHY_SLV_DLY_WIDTH - 1, 0)
|
||||
#define PHY_DLL_RECALIB_INCR BIT(27)
|
||||
#define PHY_DLL_ADRCTRL (0x4A << (PHY_REG_SHIFT))
|
||||
#define PHY_DLL_ADRCTRL_TRIM_MASK GENMASK(PHY_SLV_DLY_WIDTH - 1, 0)
|
||||
#define PHY_DLL_ADRCTRL_INCR BIT(9)
|
||||
#define PHY_DLL_ADRCTRL_MDL_SHIFT 24
|
||||
#define PHY_DLL_ADRCTRL_MDL_MASK (GENMASK(PHY_MAS_DLY_WIDTH - 1, 0) << \
|
||||
PHY_DLL_ADRCTRL_MDL_SHIFT)
|
||||
#define PHY_LANE_SEL (0x4B << (PHY_REG_SHIFT))
|
||||
#define PHY_LANE_SEL_LANE_SHIFT 0
|
||||
#define PHY_LANE_SEL_LANE_WIDTH 8
|
||||
#define PHY_LANE_SEL_BIT_SHIFT 8
|
||||
#define PHY_LANE_SEL_BIT_WIDTH 4
|
||||
#define PHY_DLL_TRIM_1 (0x4C << (PHY_REG_SHIFT))
|
||||
#define PHY_DLL_TRIM_2 (0x4D << (PHY_REG_SHIFT))
|
||||
#define PHY_DLL_TRIM_3 (0x4E << (PHY_REG_SHIFT))
|
||||
@@ -34,9 +50,23 @@
|
||||
#define PHY_UNIQUIFY_TSMC_IO_1 (0x5C << (PHY_REG_SHIFT))
|
||||
#define PHY_SCL_START_ADDR (0x62 << (PHY_REG_SHIFT))
|
||||
#define PHY_IP_DQ_DQS_BITWISE_TRIM (0x65 << (PHY_REG_SHIFT))
|
||||
#define PHY_IP_DQ_DQS_BITWISE_TRIM_MASK \
|
||||
GENMASK(PHY_BITLVL_DLY_WIDTH - 1, 0)
|
||||
#define PHY_IP_DQ_DQS_BITWISE_TRIM_INC \
|
||||
BIT(PHY_BITLVL_DLY_WIDTH)
|
||||
#define PHY_IP_DQ_DQS_BITWISE_TRIM_OVERRIDE \
|
||||
BIT(PHY_BITLVL_DLY_WIDTH + 1)
|
||||
#define PHY_DSCL_CNT (0x67 << (PHY_REG_SHIFT))
|
||||
#define PHY_OP_DQ_DM_DQS_BITWISE_TRIM (0x68 << (PHY_REG_SHIFT))
|
||||
#define PHY_OP_DQ_DM_DQS_BITWISE_TRIM_MASK \
|
||||
GENMASK(PHY_BITLVL_DLY_WIDTH - 1, 0)
|
||||
#define PHY_OP_DQ_DM_DQS_BITWISE_TRIM_INC \
|
||||
BIT(PHY_BITLVL_DLY_WIDTH)
|
||||
#define PHY_OP_DQ_DM_DQS_BITWISE_TRIM_OVERRIDE \
|
||||
BIT(PHY_BITLVL_DLY_WIDTH + 1)
|
||||
#define PHY_DLL_TRIM_CLK (0x69 << (PHY_REG_SHIFT))
|
||||
#define PHY_DLL_TRIM_CLK_MASK GENMASK(PHY_SLV_DLY_WIDTH, 0)
|
||||
#define PHY_DLL_TRIM_CLK_INCR BIT(PHY_SLV_DLY_WIDTH + 1)
|
||||
#define PHY_DYNAMIC_BIT_LVL (0x6B << (PHY_REG_SHIFT))
|
||||
#define PHY_SCL_WINDOW_TRIM (0x6D << (PHY_REG_SHIFT))
|
||||
#define PHY_DISABLE_GATING_FOR_SCL (0x6E << (PHY_REG_SHIFT))
|
||||
@@ -45,11 +75,4 @@
|
||||
#define PHY_VREF_TRAINING (0x72 << (PHY_REG_SHIFT))
|
||||
#define PHY_SCL_GATE_TIMING (0x78 << (PHY_REG_SHIFT))
|
||||
|
||||
/* MASK */
|
||||
#define MSK_OP_DQ_DM_DQS_BITWISE_TRIM 0x0000007F
|
||||
#define MSK_IP_DQ_DQS_BITWISE_TRIM 0x0000007F
|
||||
#define MSK_OVERRIDE 0x00000080
|
||||
|
||||
#define PHY_BITLVL_DLY_WIDTH 6
|
||||
|
||||
#endif /* _DDRPHY_LD20_REGS_H */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Socionext Inc.
|
||||
*
|
||||
* based on commit a3c28918e86ad57127cf07bf8b32950cab20c03c of Diag
|
||||
* based on commit 9073035a9860f892f8d1345dfb0ea862b5021145 of Diag
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "umc64-regs.h"
|
||||
|
||||
#define DRAM_CH_NR 3
|
||||
#define CONFIG_DDR_FREQ 1866
|
||||
|
||||
enum dram_freq {
|
||||
DRAM_FREQ_1866M,
|
||||
@@ -39,311 +38,196 @@ enum dram_board { /* board type */
|
||||
DRAM_BOARD_NR,
|
||||
};
|
||||
|
||||
#define MSK_PHY_LANE_SEL 0x000000FF
|
||||
#define MSK_BIT_SEL 0x00000F00
|
||||
#define MSK_DLL_MAS_DLY 0xFF000000
|
||||
#define MSK_MAS_DLY 0x7F000000
|
||||
#define MSK_DLLS_TRIM_CLK 0x000000FF
|
||||
|
||||
#define PHY_DLL_MAS_DLY_WIDTH 8
|
||||
#define PHY_SLV_DLY_WIDTH 6
|
||||
|
||||
static void ddrphy_maskwritel(u32 data, u32 mask, void *addr)
|
||||
{
|
||||
u32 value;
|
||||
|
||||
value = (readl(addr) & ~mask) | (data & mask);
|
||||
writel(value, addr);
|
||||
}
|
||||
|
||||
static u32 ddrphy_maskreadl(u32 mask, void *addr)
|
||||
{
|
||||
return readl(addr) & mask;
|
||||
}
|
||||
|
||||
/* set phy_lane_sel.phy_lane_sel */
|
||||
static void ddrphy_set_phy_lane_sel(int val, void __iomem *phy_base)
|
||||
{
|
||||
ddrphy_maskwritel(val, MSK_PHY_LANE_SEL, phy_base + PHY_LANE_SEL);
|
||||
}
|
||||
|
||||
/* set phy_lane_sel.bit_sel */
|
||||
static void ddrphy_set_bit_sel(int bit, void __iomem *phy_base)
|
||||
{
|
||||
ddrphy_maskwritel(bit << 8, MSK_BIT_SEL, phy_base + PHY_LANE_SEL);
|
||||
}
|
||||
|
||||
/* Calculating step for PUB-byte */
|
||||
static int ddrphy_hpstep(int delay, void __iomem *phy_base)
|
||||
{
|
||||
int mdl, freq;
|
||||
|
||||
freq = CONFIG_DDR_FREQ; /* FIXME */
|
||||
mdl = ddrphy_maskreadl(MSK_DLL_MAS_DLY, phy_base + PHY_DLL_ADRCTRL) >> 24;
|
||||
|
||||
return DIV_ROUND_CLOSEST(freq * delay * mdl, 2 * 1000000);
|
||||
}
|
||||
|
||||
static void ddrphy_set_dll_trim_clk(int delay_ckoffset, void __iomem *phy_base)
|
||||
{
|
||||
u8 ck_step; /* ckoffset_step for clock */
|
||||
u32 ck_step_all;
|
||||
|
||||
/* CK-Offset */
|
||||
if (delay_ckoffset >= 0) {
|
||||
/* shift + direction */
|
||||
ck_step = min(ddrphy_hpstep(delay_ckoffset, phy_base), 127);
|
||||
ck_step_all = ((0x1<<(PHY_SLV_DLY_WIDTH + 1))|ck_step);
|
||||
} else{
|
||||
/* shift - direction */
|
||||
ck_step = min(ddrphy_hpstep(-1*delay_ckoffset, phy_base), 127);
|
||||
ck_step_all = ck_step;
|
||||
}
|
||||
|
||||
ddrphy_set_phy_lane_sel(0, phy_base);
|
||||
ddrphy_maskwritel(ck_step_all, MSK_DLLS_TRIM_CLK, phy_base + PHY_DLL_TRIM_CLK);
|
||||
}
|
||||
|
||||
static void ddrphy_set_dll_recalib(int delay_qoffset, u32 recalib_cnt,
|
||||
u8 disable_recalib, u8 ctr_start_val,
|
||||
void __iomem *phy_base)
|
||||
{
|
||||
u8 dlls_trim_adrctrl_ma, incr_dly_adrctrl_ma; /* qoffset_step and flag for inc/dec */
|
||||
u32 recalib_all; /* all fields of register dll_recalib */
|
||||
|
||||
/* Q-Offset */
|
||||
if (delay_qoffset >= 0) {
|
||||
dlls_trim_adrctrl_ma = min(ddrphy_hpstep(delay_qoffset, phy_base), 63);
|
||||
incr_dly_adrctrl_ma = 0x1;
|
||||
} else {
|
||||
dlls_trim_adrctrl_ma = min(ddrphy_hpstep(-1*delay_qoffset, phy_base), 63);
|
||||
incr_dly_adrctrl_ma = 0x0;
|
||||
}
|
||||
|
||||
recalib_all = ((ctr_start_val & 0xf) << 28) |
|
||||
(incr_dly_adrctrl_ma << 27) |
|
||||
((disable_recalib & 0x1) << 26) |
|
||||
((recalib_cnt & 0x3ffff) << 8) |
|
||||
(dlls_trim_adrctrl_ma & 0x3f);
|
||||
|
||||
/* write value for all bits other than bit[7:6] */
|
||||
ddrphy_maskwritel(recalib_all, ~0xc0, phy_base + PHY_DLL_RECALIB);
|
||||
}
|
||||
|
||||
static void ddrphy_set_dll_adrctrl(int delay_qoffset, u8 override_adrctrl,
|
||||
void __iomem *phy_base)
|
||||
{
|
||||
u8 dlls_trim_adrctrl, incr_dly_adrctrl; /* qoffset_step for clock */
|
||||
u32 adrctrl_all;
|
||||
|
||||
if (delay_qoffset >= 0) {
|
||||
dlls_trim_adrctrl = min(ddrphy_hpstep(delay_qoffset, phy_base), 63);
|
||||
incr_dly_adrctrl = 0x1;
|
||||
} else {
|
||||
dlls_trim_adrctrl = min(ddrphy_hpstep(-delay_qoffset, phy_base), 63);
|
||||
incr_dly_adrctrl = 0x0;
|
||||
}
|
||||
|
||||
adrctrl_all = (incr_dly_adrctrl << 9) |
|
||||
((override_adrctrl & 0x1) << 8) |
|
||||
dlls_trim_adrctrl;
|
||||
|
||||
ddrphy_maskwritel(adrctrl_all, 0x33f, phy_base + PHY_DLL_ADRCTRL);
|
||||
}
|
||||
|
||||
/* dio */
|
||||
static int dio_adrctrl_0[DRAM_BOARD_NR][DRAM_CH_NR] = {
|
||||
{268-262, 268-263, 268-378}, /* LD20 reference */
|
||||
{268-262, 268-263, 268-378}, /* LD20 TV */
|
||||
{268-212, 268-268, 0}, /* LD21 reference */
|
||||
{268-212, 268-268, 0}, /* LD21 TV */
|
||||
/* PHY */
|
||||
static const int ddrphy_adrctrl[DRAM_BOARD_NR][DRAM_CH_NR] = {
|
||||
{268 - 262, 268 - 263, 268 - 378}, /* LD20 reference */
|
||||
{268 - 262, 268 - 263, 268 - 378}, /* LD20 TV */
|
||||
{268 - 212, 268 - 268, /* No CH2 */}, /* LD21 reference */
|
||||
{268 - 212, 268 - 268, /* No CH2 */}, /* LD21 TV */
|
||||
};
|
||||
static int dio_dlltrimclk_0[DRAM_BOARD_NR][DRAM_CH_NR] = {
|
||||
|
||||
static const int ddrphy_dlltrimclk[DRAM_BOARD_NR][DRAM_CH_NR] = {
|
||||
{268, 268, 268}, /* LD20 reference */
|
||||
{268, 268, 268}, /* LD20 TV */
|
||||
{268, 268+252, 0}, /* LD21 reference */
|
||||
{268, 268+202, 0}, /* LD21 TV */
|
||||
};
|
||||
static int dio_dllrecalib_0[DRAM_BOARD_NR][DRAM_CH_NR] = {
|
||||
{268-378, 268-263, 268-378}, /* LD20 reference */
|
||||
{268-378, 268-263, 268-378}, /* LD20 TV */
|
||||
{268-212, 268-536, 0}, /* LD21 reference */
|
||||
{268-212, 268-536, 0}, /* LD21 TV */
|
||||
{268, 268 + 252, /* No CH2 */}, /* LD21 reference */
|
||||
{268, 268 + 202, /* No CH2 */}, /* LD21 TV */
|
||||
};
|
||||
|
||||
static u32 dio_phy_pad_ctrl[DRAM_BOARD_NR][DRAM_CH_NR] = {
|
||||
static const int ddrphy_dllrecalib[DRAM_BOARD_NR][DRAM_CH_NR] = {
|
||||
{268 - 378, 268 - 263, 268 - 378}, /* LD20 reference */
|
||||
{268 - 378, 268 - 263, 268 - 378}, /* LD20 TV */
|
||||
{268 - 212, 268 - 536, /* No CH2 */}, /* LD21 reference */
|
||||
{268 - 212, 268 - 536, /* No CH2 */}, /* LD21 TV */
|
||||
};
|
||||
|
||||
static const u32 ddrphy_phy_pad_ctrl[DRAM_BOARD_NR][DRAM_CH_NR] = {
|
||||
{0x50B840B1, 0x50B840B1, 0x50B840B1}, /* LD20 reference */
|
||||
{0x50BB40B1, 0x50BB40B1, 0x50BB40B1}, /* LD20 TV */
|
||||
{0x50BB40B4, 0x50B840B1, 0x50BB40B1}, /* LD21 reference */
|
||||
{0x50BB40B4, 0x50B840B1, 0x50BB40B1}, /* LD21 TV */
|
||||
{0x50BB40B4, 0x50B840B1, /* No CH2 */}, /* LD21 reference */
|
||||
{0x50BB40B4, 0x50B840B1, /* No CH2 */}, /* LD21 TV */
|
||||
};
|
||||
|
||||
static u32 dio_scl_gate_timing[DRAM_CH_NR] = {0x00000140, 0x00000180, 0x00000140};
|
||||
static const u32 ddrphy_scl_gate_timing[DRAM_CH_NR] = {
|
||||
0x00000140, 0x00000180, 0x00000140
|
||||
};
|
||||
|
||||
static int dio_op_dq_shift_val[DRAM_BOARD_NR][DRAM_CH_NR][32] = {
|
||||
static const int ddrphy_op_dq_shift_val[DRAM_BOARD_NR][DRAM_CH_NR][32] = {
|
||||
{ /* LD20 reference */
|
||||
{
|
||||
2, 1, 0, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1,
|
||||
1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 0, 1, 1, 2, 2, 1,
|
||||
2, 1, 0, 1, 2, 1, 1, 1,
|
||||
2, 1, 1, 2, 1, 1, 1, 1,
|
||||
1, 2, 1, 1, 1, 2, 1, 1,
|
||||
2, 2, 0, 1, 1, 2, 2, 1,
|
||||
},
|
||||
{
|
||||
1, 1, 0, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 2, 1, 2, 1,
|
||||
1, 1, 0, 1, 2, 2, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 0, 0, 1, 1, 0, 0,
|
||||
0, 1, 1, 1, 2, 1, 2, 1,
|
||||
},
|
||||
{
|
||||
2, 2, 0, 2, 1, 1, 2, 1, 1, 1, 0, 1, 1, -1, 1, 1,
|
||||
2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 1, 2,
|
||||
2, 2, 0, 2, 1, 1, 2, 1,
|
||||
1, 1, 0, 1, 1, -1, 1, 1,
|
||||
2, 2, 2, 2, 1, 1, 1, 1,
|
||||
1, 1, 1, 0, 2, 2, 1, 2,
|
||||
},
|
||||
},
|
||||
{ /* LD20 TV */
|
||||
{
|
||||
2, 1, 0, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1,
|
||||
1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 0, 1, 1, 2, 2, 1,
|
||||
2, 1, 0, 1, 2, 1, 1, 1,
|
||||
2, 1, 1, 2, 1, 1, 1, 1,
|
||||
1, 2, 1, 1, 1, 2, 1, 1,
|
||||
2, 2, 0, 1, 1, 2, 2, 1,
|
||||
},
|
||||
{
|
||||
1, 1, 0, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 2, 1, 2, 1,
|
||||
1, 1, 0, 1, 2, 2, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 0, 0, 1, 1, 0, 0,
|
||||
0, 1, 1, 1, 2, 1, 2, 1,
|
||||
},
|
||||
{
|
||||
2, 2, 0, 2, 1, 1, 2, 1, 1, 1, 0, 1, 1, -1, 1, 1,
|
||||
2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 1, 2,
|
||||
2, 2, 0, 2, 1, 1, 2, 1,
|
||||
1, 1, 0, 1, 1, -1, 1, 1,
|
||||
2, 2, 2, 2, 1, 1, 1, 1,
|
||||
1, 1, 1, 0, 2, 2, 1, 2,
|
||||
},
|
||||
},
|
||||
{ /* LD21 reference */
|
||||
{
|
||||
1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 2,
|
||||
1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1,
|
||||
1, 1, 0, 1, 1, 1, 1, 1,
|
||||
1, 0, 0, 0, 1, 1, 0, 2,
|
||||
1, 1, 0, 0, 1, 1, 1, 1,
|
||||
1, 0, 0, 0, 1, 0, 0, 1,
|
||||
},
|
||||
{ 1, 0, 2, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0,
|
||||
1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0,
|
||||
},
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
{ 1, 0, 2, 1, 1, 1, 1, 0,
|
||||
1, 0, 0, 1, 0, 1, 0, 0,
|
||||
1, 0, 1, 0, 1, 1, 1, 0,
|
||||
1, 1, 1, 1, 0, 1, 0, 0,
|
||||
},
|
||||
/* No CH2 */
|
||||
},
|
||||
{ /* LD21 TV */
|
||||
{
|
||||
1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 2,
|
||||
1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1,
|
||||
1, 1, 0, 1, 1, 1, 1, 1,
|
||||
1, 0, 0, 0, 1, 1, 0, 2,
|
||||
1, 1, 0, 0, 1, 1, 1, 1,
|
||||
1, 0, 0, 0, 1, 0, 0, 1,
|
||||
},
|
||||
{ 1, 0, 2, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0,
|
||||
1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0,
|
||||
},
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
{ 1, 0, 2, 1, 1, 1, 1, 0,
|
||||
1, 0, 0, 1, 0, 1, 0, 0,
|
||||
1, 0, 1, 0, 1, 1, 1, 0,
|
||||
1, 1, 1, 1, 0, 1, 0, 0,
|
||||
},
|
||||
/* No CH2 */
|
||||
},
|
||||
};
|
||||
static int dio_ip_dq_shift_val[DRAM_BOARD_NR][DRAM_CH_NR][32] = {
|
||||
|
||||
static int ddrphy_ip_dq_shift_val[DRAM_BOARD_NR][DRAM_CH_NR][32] = {
|
||||
{ /* LD20 reference */
|
||||
{
|
||||
3, 3, 3, 2, 3, 2, 0, 2, 2, 3, 3, 1, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 0, 1, 1, 1, 2, 2, 2, 2, 3, 0, 2, 2,
|
||||
3, 3, 3, 2, 3, 2, 0, 2,
|
||||
2, 3, 3, 1, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 0, 1, 1, 1,
|
||||
2, 2, 2, 2, 3, 0, 2, 2,
|
||||
},
|
||||
{
|
||||
2, 2, 1, 1, -1, 1, 1, 1, 2, 0, 2, 2, 2, 1, 0, 2,
|
||||
2, 1, 2, 1, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 1, 1, -1, 1, 1, 1,
|
||||
2, 0, 2, 2, 2, 1, 0, 2,
|
||||
2, 1, 2, 1, 0, 1, 1, 1,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
},
|
||||
{
|
||||
2, 2, 3, 2, 1, 2, 2, 2, 2, 3, 4, 2, 3, 4, 3, 3,
|
||||
2, 2, 1, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, 1,
|
||||
2, 2, 3, 2, 1, 2, 2, 2,
|
||||
2, 3, 4, 2, 3, 4, 3, 3,
|
||||
2, 2, 1, 2, 1, 1, 1, 1,
|
||||
2, 2, 2, 2, 1, 2, 2, 1,
|
||||
},
|
||||
},
|
||||
{ /* LD20 TV */
|
||||
{
|
||||
3, 3, 3, 2, 3, 2, 0, 2, 2, 3, 3, 1, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 0, 1, 1, 1, 2, 2, 2, 2, 3, 0, 2, 2,
|
||||
3, 3, 3, 2, 3, 2, 0, 2,
|
||||
2, 3, 3, 1, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 0, 1, 1, 1,
|
||||
2, 2, 2, 2, 3, 0, 2, 2,
|
||||
},
|
||||
{
|
||||
2, 2, 1, 1, -1, 1, 1, 1, 2, 0, 2, 2, 2, 1, 0, 2,
|
||||
2, 1, 2, 1, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 1, 1, -1, 1, 1, 1,
|
||||
2, 0, 2, 2, 2, 1, 0, 2,
|
||||
2, 1, 2, 1, 0, 1, 1, 1,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
},
|
||||
{
|
||||
2, 2, 3, 2, 1, 2, 2, 2, 2, 3, 4, 2, 3, 4, 3, 3,
|
||||
2, 2, 1, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, 1,
|
||||
2, 2, 3, 2, 1, 2, 2, 2,
|
||||
2, 3, 4, 2, 3, 4, 3, 3,
|
||||
2, 2, 1, 2, 1, 1, 1, 1,
|
||||
2, 2, 2, 2, 1, 2, 2, 1,
|
||||
},
|
||||
},
|
||||
{ /* LD21 reference */
|
||||
{
|
||||
2, 2, 2, 2, 1, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2,
|
||||
2, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 3, 1, 2, 2, 2,
|
||||
2, 2, 2, 2, 1, 2, 2, 2,
|
||||
2, 3, 3, 2, 2, 2, 2, 2,
|
||||
2, 1, 2, 2, 1, 1, 1, 1,
|
||||
2, 2, 2, 3, 1, 2, 2, 2,
|
||||
},
|
||||
{
|
||||
3, 4, 4, 1, 0, 1, 1, 1, 1, 2, 1, 2, 2, 3, 3, 2,
|
||||
1, 0, 2, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1,
|
||||
},
|
||||
{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
3, 4, 4, 1, 0, 1, 1, 1,
|
||||
1, 2, 1, 2, 2, 3, 3, 2,
|
||||
1, 0, 2, 1, 1, 0, 1, 0,
|
||||
0, 1, 0, 0, 1, 1, 0, 1,
|
||||
},
|
||||
/* No CH2 */
|
||||
},
|
||||
{ /* LD21 TV */
|
||||
{
|
||||
2, 2, 2, 2, 1, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2,
|
||||
2, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 3, 1, 2, 2, 2,
|
||||
2, 2, 2, 2, 1, 2, 2, 2,
|
||||
2, 3, 3, 2, 2, 2, 2, 2,
|
||||
2, 1, 2, 2, 1, 1, 1, 1,
|
||||
2, 2, 2, 3, 1, 2, 2, 2,
|
||||
},
|
||||
{
|
||||
3, 4, 4, 1, 0, 1, 1, 1, 1, 2, 1, 2, 2, 3, 3, 2,
|
||||
1, 0, 2, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1,
|
||||
},
|
||||
{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
3, 4, 4, 1, 0, 1, 1, 1,
|
||||
1, 2, 1, 2, 2, 3, 3, 2,
|
||||
1, 0, 2, 1, 1, 0, 1, 0,
|
||||
0, 1, 0, 0, 1, 1, 0, 1,
|
||||
},
|
||||
/* No CH2 */
|
||||
},
|
||||
};
|
||||
|
||||
/* umc */
|
||||
static u32 umc_initctla[DRAM_FREQ_NR] = {0x71016D11};
|
||||
static u32 umc_initctlb[DRAM_FREQ_NR] = {0x07E390AC};
|
||||
static u32 umc_initctlc[DRAM_FREQ_NR] = {0x00FF00FF};
|
||||
static u32 umc_drmmr0[DRAM_FREQ_NR] = {0x00000114};
|
||||
static u32 umc_drmmr2[DRAM_FREQ_NR] = {0x000002a0};
|
||||
|
||||
static u32 umc_memconf0a[DRAM_FREQ_NR][DRAM_SZ_NR] = {
|
||||
/* 256MB 512MB */
|
||||
{0x00000601, 0x00000801}, /* 1866 MHz */
|
||||
};
|
||||
static u32 umc_memconf0b[DRAM_FREQ_NR][DRAM_SZ_NR] = {
|
||||
/* 256MB 512MB */
|
||||
{0x00000120, 0x00000130}, /* 1866 MHz */
|
||||
};
|
||||
static u32 umc_memconfch[DRAM_FREQ_NR][DRAM_SZ_NR] = {
|
||||
/* 256MB 512MB */
|
||||
{0x00033603, 0x00033803}, /* 1866 MHz */
|
||||
};
|
||||
static u32 umc_cmdctla[DRAM_FREQ_NR] = {0x060D0D20};
|
||||
static u32 umc_cmdctlb[DRAM_FREQ_NR] = {0x2D211C08};
|
||||
static u32 umc_cmdctlc[DRAM_FREQ_NR] = {0x00150C04};
|
||||
static u32 umc_cmdctle[DRAM_FREQ_NR][DRAM_SZ_NR] = {
|
||||
/* 256MB 512MB */
|
||||
{0x0049071D, 0x0078071D}, /* 1866 MHz */
|
||||
};
|
||||
|
||||
static u32 umc_rdatactl_d0[DRAM_FREQ_NR] = {0x00000610};
|
||||
static u32 umc_rdatactl_d1[DRAM_FREQ_NR] = {0x00000610};
|
||||
static u32 umc_wdatactl_d0[DRAM_FREQ_NR] = {0x00000204};
|
||||
static u32 umc_wdatactl_d1[DRAM_FREQ_NR] = {0x00000204};
|
||||
static u32 umc_odtctl_d0[DRAM_FREQ_NR] = {0x02000002};
|
||||
static u32 umc_odtctl_d1[DRAM_FREQ_NR] = {0x02000002};
|
||||
static u32 umc_dataset[DRAM_FREQ_NR] = {0x04000000};
|
||||
|
||||
static u32 umc_flowctla[DRAM_FREQ_NR] = {0x0081E01E};
|
||||
static u32 umc_directbusctrla[DRAM_CH_NR] = {
|
||||
0x00000000, 0x00000001, 0x00000001
|
||||
};
|
||||
|
||||
/* polling function for PHY Init Complete */
|
||||
static void ddrphy_init_complete(void __iomem *dc_base)
|
||||
{
|
||||
/* Wait for PHY Init Complete */
|
||||
while (!(readl(dc_base + UMC_DFISTCTLC) & BIT(0)))
|
||||
cpu_relax();
|
||||
}
|
||||
|
||||
/* DDR PHY */
|
||||
static void ddrphy_init(void __iomem *phy_base, void __iomem *dc_base,
|
||||
enum dram_freq freq, enum dram_board board, int ch)
|
||||
static void ddrphy_select_lane(void __iomem *phy_base, unsigned int lane,
|
||||
unsigned int bit)
|
||||
{
|
||||
WARN_ON(lane >= (1 << PHY_LANE_SEL_LANE_WIDTH));
|
||||
WARN_ON(bit >= (1 << PHY_LANE_SEL_BIT_WIDTH));
|
||||
|
||||
writel((bit << PHY_LANE_SEL_BIT_SHIFT) |
|
||||
(lane << PHY_LANE_SEL_LANE_SHIFT),
|
||||
phy_base + PHY_LANE_SEL);
|
||||
}
|
||||
|
||||
static void ddrphy_init(void __iomem *phy_base, enum dram_board board, int ch)
|
||||
{
|
||||
writel(0x0C001001, phy_base + PHY_UNIQUIFY_TSMC_IO_1);
|
||||
while (!(readl(phy_base + PHY_UNIQUIFY_TSMC_IO_1) & BIT(1)))
|
||||
@@ -352,100 +236,148 @@ static void ddrphy_init(void __iomem *phy_base, void __iomem *dc_base,
|
||||
|
||||
writel(0x00000000, phy_base + PHY_DLL_INCR_TRIM_3);
|
||||
writel(0x00000000, phy_base + PHY_DLL_INCR_TRIM_1);
|
||||
writel(0x00000000, phy_base + PHY_LANE_SEL);
|
||||
ddrphy_select_lane(phy_base, 0, 0);
|
||||
writel(0x00000005, phy_base + PHY_DLL_TRIM_1);
|
||||
writel(0x0000000a, phy_base + PHY_DLL_TRIM_3);
|
||||
writel(0x00000006, phy_base + PHY_LANE_SEL);
|
||||
ddrphy_select_lane(phy_base, 6, 0);
|
||||
writel(0x00000005, phy_base + PHY_DLL_TRIM_1);
|
||||
writel(0x0000000a, phy_base + PHY_DLL_TRIM_3);
|
||||
writel(0x0000000c, phy_base + PHY_LANE_SEL);
|
||||
ddrphy_select_lane(phy_base, 12, 0);
|
||||
writel(0x00000005, phy_base + PHY_DLL_TRIM_1);
|
||||
writel(0x0000000a, phy_base + PHY_DLL_TRIM_3);
|
||||
writel(0x00000012, phy_base + PHY_LANE_SEL);
|
||||
ddrphy_select_lane(phy_base, 18, 0);
|
||||
writel(0x00000005, phy_base + PHY_DLL_TRIM_1);
|
||||
writel(0x0000000a, phy_base + PHY_DLL_TRIM_3);
|
||||
writel(0x00000001, phy_base + PHY_SCL_WINDOW_TRIM);
|
||||
writel(0x00000000, phy_base + PHY_UNQ_ANALOG_DLL_1);
|
||||
writel(dio_phy_pad_ctrl[board][ch], phy_base + PHY_PAD_CTRL);
|
||||
writel(ddrphy_phy_pad_ctrl[board][ch], phy_base + PHY_PAD_CTRL);
|
||||
writel(0x00000070, phy_base + PHY_VREF_TRAINING);
|
||||
writel(0x01000075, phy_base + PHY_SCL_CONFIG_1);
|
||||
writel(0x00000501, phy_base + PHY_SCL_CONFIG_2);
|
||||
writel(0x00000000, phy_base + PHY_SCL_CONFIG_3);
|
||||
writel(0x000261c0, phy_base + PHY_DYNAMIC_WRITE_BIT_LVL);
|
||||
writel(0x00000000, phy_base + PHY_SCL_CONFIG_4);
|
||||
writel(dio_scl_gate_timing[ch], phy_base + PHY_SCL_GATE_TIMING);
|
||||
writel(ddrphy_scl_gate_timing[ch], phy_base + PHY_SCL_GATE_TIMING);
|
||||
writel(0x02a000a0, phy_base + PHY_WRLVL_DYN_ODT);
|
||||
writel(0x00840004, phy_base + PHY_WRLVL_ON_OFF);
|
||||
writel(0x0000020d, phy_base + PHY_DLL_ADRCTRL);
|
||||
writel(0x00000000, phy_base + PHY_LANE_SEL);
|
||||
ddrphy_select_lane(phy_base, 0, 0);
|
||||
writel(0x0000008d, phy_base + PHY_DLL_TRIM_CLK);
|
||||
writel(0xa800100d, phy_base + PHY_DLL_RECALIB);
|
||||
writel(0x00005076, phy_base + PHY_SCL_LATENCY);
|
||||
|
||||
ddrphy_init_complete(dc_base);
|
||||
|
||||
ddrphy_set_dll_adrctrl(dio_adrctrl_0[board][ch], 0, phy_base);
|
||||
ddrphy_set_dll_trim_clk(dio_dlltrimclk_0[board][ch], phy_base);
|
||||
ddrphy_set_dll_recalib(dio_dllrecalib_0[board][ch], 0x10, 0, 0xa,
|
||||
phy_base);
|
||||
}
|
||||
|
||||
static void ddrphy_shift_dq(u32 reg_mask, u32 reg_addr, int shift_val,
|
||||
void __iomem *phy_base)
|
||||
static int ddrphy_to_dly_step(void __iomem *phy_base, unsigned int freq,
|
||||
int delay)
|
||||
{
|
||||
u32 reg_val;
|
||||
int dq_val;
|
||||
int mdl;
|
||||
|
||||
reg_val = ddrphy_maskreadl(reg_mask, phy_base + reg_addr) & 0x7f;
|
||||
dq_val = reg_val & 0x3f;
|
||||
mdl = (readl(phy_base + PHY_DLL_ADRCTRL) & PHY_DLL_ADRCTRL_MDL_MASK) >>
|
||||
PHY_DLL_ADRCTRL_MDL_SHIFT;
|
||||
|
||||
if ((reg_val & 0x40) == 0x00)
|
||||
dq_val = -1 * dq_val;
|
||||
return DIV_ROUND_CLOSEST((long)freq * delay * mdl, 2 * 1000000L);
|
||||
}
|
||||
|
||||
/* value shift*/
|
||||
dq_val = dq_val + shift_val;
|
||||
static void ddrphy_set_delay(void __iomem *phy_base, unsigned int reg,
|
||||
u32 mask, u32 incr, int dly_step)
|
||||
{
|
||||
u32 tmp;
|
||||
|
||||
if (dq_val >= 0)
|
||||
reg_val = 0x40 + (dq_val & 0x3f);
|
||||
tmp = readl(phy_base + reg);
|
||||
tmp &= ~mask;
|
||||
tmp |= min_t(u32, abs(dly_step), mask);
|
||||
|
||||
if (dly_step >= 0)
|
||||
tmp |= incr;
|
||||
else
|
||||
reg_val = ((-1 * dq_val) & 0x3f);
|
||||
tmp &= ~incr;
|
||||
|
||||
ddrphy_maskwritel(reg_val, reg_mask, phy_base + reg_addr);
|
||||
writel(tmp, phy_base + reg);
|
||||
}
|
||||
|
||||
static void ddrphy_shift(void __iomem *phy_base, enum dram_board board, int ch)
|
||||
static void ddrphy_set_dll_recalib(void __iomem *phy_base, int dly_step)
|
||||
{
|
||||
u32 dx, bit;
|
||||
ddrphy_set_delay(phy_base, PHY_DLL_RECALIB,
|
||||
PHY_DLL_RECALIB_TRIM_MASK, PHY_DLL_RECALIB_INCR,
|
||||
dly_step);
|
||||
}
|
||||
|
||||
/* set override = 1 */
|
||||
ddrphy_maskwritel(MSK_OVERRIDE, MSK_OVERRIDE,
|
||||
phy_base + PHY_OP_DQ_DM_DQS_BITWISE_TRIM);
|
||||
ddrphy_maskwritel(MSK_OVERRIDE, MSK_OVERRIDE,
|
||||
phy_base + PHY_IP_DQ_DQS_BITWISE_TRIM);
|
||||
static void ddrphy_set_dll_adrctrl(void __iomem *phy_base, int dly_step)
|
||||
{
|
||||
ddrphy_set_delay(phy_base, PHY_DLL_ADRCTRL,
|
||||
PHY_DLL_ADRCTRL_TRIM_MASK, PHY_DLL_ADRCTRL_INCR,
|
||||
dly_step);
|
||||
}
|
||||
|
||||
static void ddrphy_set_dll_trim_clk(void __iomem *phy_base, int dly_step)
|
||||
{
|
||||
ddrphy_select_lane(phy_base, 0, 0);
|
||||
|
||||
ddrphy_set_delay(phy_base, PHY_DLL_TRIM_CLK,
|
||||
PHY_DLL_TRIM_CLK_MASK, PHY_DLL_TRIM_CLK_INCR,
|
||||
dly_step);
|
||||
}
|
||||
|
||||
static void ddrphy_init_tail(void __iomem *phy_base, enum dram_board board,
|
||||
unsigned int freq, int ch)
|
||||
{
|
||||
int step;
|
||||
|
||||
step = ddrphy_to_dly_step(phy_base, freq, ddrphy_adrctrl[board][ch]);
|
||||
ddrphy_set_dll_adrctrl(phy_base, step);
|
||||
|
||||
step = ddrphy_to_dly_step(phy_base, freq, ddrphy_dlltrimclk[board][ch]);
|
||||
ddrphy_set_dll_trim_clk(phy_base, step);
|
||||
|
||||
step = ddrphy_to_dly_step(phy_base, freq, ddrphy_dllrecalib[board][ch]);
|
||||
ddrphy_set_dll_recalib(phy_base, step);
|
||||
}
|
||||
|
||||
static void ddrphy_shift_one_dq(void __iomem *phy_base, unsigned int reg,
|
||||
u32 mask, u32 incr, int shift_val)
|
||||
{
|
||||
u32 tmp;
|
||||
int val;
|
||||
|
||||
tmp = readl(phy_base + reg);
|
||||
|
||||
val = tmp & mask;
|
||||
if (!(tmp & incr))
|
||||
val = -val;
|
||||
|
||||
val += shift_val;
|
||||
|
||||
tmp &= ~(incr | mask);
|
||||
tmp |= min_t(u32, abs(val), mask);
|
||||
if (val >= 0)
|
||||
tmp |= incr;
|
||||
|
||||
writel(tmp, phy_base + reg);
|
||||
}
|
||||
|
||||
static void ddrphy_shift_dq(void __iomem *phy_base, unsigned int reg,
|
||||
u32 mask, u32 incr, u32 override,
|
||||
const int *shift_val_array)
|
||||
{
|
||||
u32 tmp;
|
||||
int dx, bit;
|
||||
|
||||
tmp = readl(phy_base + reg);
|
||||
tmp |= override;
|
||||
writel(tmp, phy_base + reg);
|
||||
|
||||
for (dx = 0; dx < 4; dx++) {
|
||||
/* set byte to PHY_LANE_SEL.phy_lane_sel= dx * (PHY_BITLVL_DLY_WIDTH+1) */
|
||||
ddrphy_set_phy_lane_sel(dx * (PHY_BITLVL_DLY_WIDTH + 1),
|
||||
phy_base);
|
||||
|
||||
for (bit = 0; bit < 8; bit++) {
|
||||
ddrphy_set_bit_sel(bit, phy_base);
|
||||
ddrphy_select_lane(phy_base,
|
||||
(PHY_BITLVL_DLY_WIDTH + 1) * dx,
|
||||
bit);
|
||||
|
||||
/* shift write reg value*/
|
||||
ddrphy_shift_dq(MSK_OP_DQ_DM_DQS_BITWISE_TRIM,
|
||||
PHY_OP_DQ_DM_DQS_BITWISE_TRIM,
|
||||
dio_op_dq_shift_val[board][ch][dx * 8 + bit],
|
||||
phy_base);
|
||||
/* shift read reg value */
|
||||
ddrphy_shift_dq(MSK_IP_DQ_DQS_BITWISE_TRIM,
|
||||
PHY_IP_DQ_DQS_BITWISE_TRIM,
|
||||
dio_ip_dq_shift_val[board][ch][dx * 8 + bit],
|
||||
phy_base);
|
||||
ddrphy_shift_one_dq(phy_base, reg, mask, incr,
|
||||
shift_val_array[dx * 8 + bit]);
|
||||
}
|
||||
|
||||
}
|
||||
ddrphy_set_phy_lane_sel(0, phy_base);
|
||||
ddrphy_set_bit_sel(0, phy_base);
|
||||
|
||||
ddrphy_select_lane(phy_base, 0, 0);
|
||||
}
|
||||
|
||||
static int ddrphy_training(void __iomem *phy_base, enum dram_board board,
|
||||
@@ -493,16 +425,90 @@ static int ddrphy_training(void __iomem *phy_base, enum dram_board board,
|
||||
writel(0x00003270, phy_base + PHY_DYNAMIC_BIT_LVL);
|
||||
writel(0x011BD0C4, phy_base + PHY_DSCL_CNT);
|
||||
|
||||
/* shift ip_dq, op_dq trim */
|
||||
ddrphy_shift(phy_base, board, ch);
|
||||
/* shift ip_dq trim */
|
||||
ddrphy_shift_dq(phy_base,
|
||||
PHY_IP_DQ_DQS_BITWISE_TRIM,
|
||||
PHY_IP_DQ_DQS_BITWISE_TRIM_MASK,
|
||||
PHY_IP_DQ_DQS_BITWISE_TRIM_INC,
|
||||
PHY_IP_DQ_DQS_BITWISE_TRIM_OVERRIDE,
|
||||
ddrphy_ip_dq_shift_val[board][ch]);
|
||||
|
||||
/* shift op_dq trim */
|
||||
ddrphy_shift_dq(phy_base,
|
||||
PHY_OP_DQ_DM_DQS_BITWISE_TRIM,
|
||||
PHY_OP_DQ_DM_DQS_BITWISE_TRIM_MASK,
|
||||
PHY_OP_DQ_DM_DQS_BITWISE_TRIM_INC,
|
||||
PHY_OP_DQ_DM_DQS_BITWISE_TRIM_OVERRIDE,
|
||||
ddrphy_op_dq_shift_val[board][ch]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int umc_dc_init(void __iomem *dc_base, enum dram_freq freq,
|
||||
/* UMC */
|
||||
static u32 umc_initctla[DRAM_FREQ_NR] = {0x71016D11};
|
||||
static u32 umc_initctlb[DRAM_FREQ_NR] = {0x07E390AC};
|
||||
static u32 umc_initctlc[DRAM_FREQ_NR] = {0x00FF00FF};
|
||||
static u32 umc_drmmr0[DRAM_FREQ_NR] = {0x00000114};
|
||||
static u32 umc_drmmr2[DRAM_FREQ_NR] = {0x000002a0};
|
||||
|
||||
static u32 umc_memconf0a[DRAM_FREQ_NR][DRAM_SZ_NR] = {
|
||||
/* 256MB 512MB */
|
||||
{0x00000601, 0x00000801}, /* 1866 MHz */
|
||||
};
|
||||
|
||||
static u32 umc_memconf0b[DRAM_FREQ_NR][DRAM_SZ_NR] = {
|
||||
/* 256MB 512MB */
|
||||
{0x00000120, 0x00000130}, /* 1866 MHz */
|
||||
};
|
||||
|
||||
static u32 umc_memconfch[DRAM_FREQ_NR][DRAM_SZ_NR] = {
|
||||
/* 256MB 512MB */
|
||||
{0x00033603, 0x00033803}, /* 1866 MHz */
|
||||
};
|
||||
|
||||
static u32 umc_cmdctla[DRAM_FREQ_NR] = {0x060D0D20};
|
||||
static u32 umc_cmdctlb[DRAM_FREQ_NR] = {0x2D211C08};
|
||||
static u32 umc_cmdctlc[DRAM_FREQ_NR] = {0x00150C04};
|
||||
static u32 umc_cmdctle[DRAM_FREQ_NR][DRAM_SZ_NR] = {
|
||||
/* 256MB 512MB */
|
||||
{0x0049071D, 0x0078071D}, /* 1866 MHz */
|
||||
};
|
||||
|
||||
static u32 umc_rdatactl_d0[DRAM_FREQ_NR] = {0x00000610};
|
||||
static u32 umc_rdatactl_d1[DRAM_FREQ_NR] = {0x00000610};
|
||||
static u32 umc_wdatactl_d0[DRAM_FREQ_NR] = {0x00000204};
|
||||
static u32 umc_wdatactl_d1[DRAM_FREQ_NR] = {0x00000204};
|
||||
static u32 umc_odtctl_d0[DRAM_FREQ_NR] = {0x02000002};
|
||||
static u32 umc_odtctl_d1[DRAM_FREQ_NR] = {0x02000002};
|
||||
static u32 umc_dataset[DRAM_FREQ_NR] = {0x04000000};
|
||||
|
||||
static u32 umc_flowctla[DRAM_FREQ_NR] = {0x0081E01E};
|
||||
static u32 umc_directbusctrla[DRAM_CH_NR] = {
|
||||
0x00000000, 0x00000001, 0x00000001
|
||||
};
|
||||
|
||||
static void umc_poll_phy_init_complete(void __iomem *dc_base)
|
||||
{
|
||||
/* Wait for PHY Init Complete */
|
||||
while (!(readl(dc_base + UMC_DFISTCTLC) & BIT(0)))
|
||||
cpu_relax();
|
||||
}
|
||||
|
||||
static int umc_dc_init(void __iomem *dc_base, unsigned int freq,
|
||||
unsigned long size, int ch)
|
||||
{
|
||||
enum dram_freq freq_e;
|
||||
enum dram_size size_e;
|
||||
|
||||
switch (freq) {
|
||||
case 1866:
|
||||
freq_e = DRAM_FREQ_1866M;
|
||||
break;
|
||||
default:
|
||||
pr_err("unsupported DRAM frequency %ud MHz\n", freq);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (size) {
|
||||
case 0:
|
||||
return 0;
|
||||
@@ -521,40 +527,40 @@ static int umc_dc_init(void __iomem *dc_base, enum dram_freq freq,
|
||||
writel(0x00000001, dc_base + UMC_DFICSOVRRD);
|
||||
writel(0x00000000, dc_base + UMC_DFITURNOFF);
|
||||
|
||||
writel(umc_initctla[freq], dc_base + UMC_INITCTLA);
|
||||
writel(umc_initctlb[freq], dc_base + UMC_INITCTLB);
|
||||
writel(umc_initctlc[freq], dc_base + UMC_INITCTLC);
|
||||
writel(umc_initctla[freq_e], dc_base + UMC_INITCTLA);
|
||||
writel(umc_initctlb[freq_e], dc_base + UMC_INITCTLB);
|
||||
writel(umc_initctlc[freq_e], dc_base + UMC_INITCTLC);
|
||||
|
||||
writel(umc_drmmr0[freq], dc_base + UMC_DRMMR0);
|
||||
writel(umc_drmmr0[freq_e], dc_base + UMC_DRMMR0);
|
||||
writel(0x00000004, dc_base + UMC_DRMMR1);
|
||||
writel(umc_drmmr2[freq], dc_base + UMC_DRMMR2);
|
||||
writel(umc_drmmr2[freq_e], dc_base + UMC_DRMMR2);
|
||||
writel(0x00000000, dc_base + UMC_DRMMR3);
|
||||
|
||||
writel(umc_memconf0a[freq][size_e], dc_base + UMC_MEMCONF0A);
|
||||
writel(umc_memconf0b[freq][size_e], dc_base + UMC_MEMCONF0B);
|
||||
writel(umc_memconfch[freq][size_e], dc_base + UMC_MEMCONFCH);
|
||||
writel(umc_memconf0a[freq_e][size_e], dc_base + UMC_MEMCONF0A);
|
||||
writel(umc_memconf0b[freq_e][size_e], dc_base + UMC_MEMCONF0B);
|
||||
writel(umc_memconfch[freq_e][size_e], dc_base + UMC_MEMCONFCH);
|
||||
writel(0x00000008, dc_base + UMC_MEMMAPSET);
|
||||
|
||||
writel(umc_cmdctla[freq], dc_base + UMC_CMDCTLA);
|
||||
writel(umc_cmdctlb[freq], dc_base + UMC_CMDCTLB);
|
||||
writel(umc_cmdctlc[freq], dc_base + UMC_CMDCTLC);
|
||||
writel(umc_cmdctle[freq][size_e], dc_base + UMC_CMDCTLE);
|
||||
writel(umc_cmdctla[freq_e], dc_base + UMC_CMDCTLA);
|
||||
writel(umc_cmdctlb[freq_e], dc_base + UMC_CMDCTLB);
|
||||
writel(umc_cmdctlc[freq_e], dc_base + UMC_CMDCTLC);
|
||||
writel(umc_cmdctle[freq_e][size_e], dc_base + UMC_CMDCTLE);
|
||||
|
||||
writel(umc_rdatactl_d0[freq], dc_base + UMC_RDATACTL_D0);
|
||||
writel(umc_rdatactl_d1[freq], dc_base + UMC_RDATACTL_D1);
|
||||
writel(umc_rdatactl_d0[freq_e], dc_base + UMC_RDATACTL_D0);
|
||||
writel(umc_rdatactl_d1[freq_e], dc_base + UMC_RDATACTL_D1);
|
||||
|
||||
writel(umc_wdatactl_d0[freq], dc_base + UMC_WDATACTL_D0);
|
||||
writel(umc_wdatactl_d1[freq], dc_base + UMC_WDATACTL_D1);
|
||||
writel(umc_odtctl_d0[freq], dc_base + UMC_ODTCTL_D0);
|
||||
writel(umc_odtctl_d1[freq], dc_base + UMC_ODTCTL_D1);
|
||||
writel(umc_dataset[freq], dc_base + UMC_DATASET);
|
||||
writel(umc_wdatactl_d0[freq_e], dc_base + UMC_WDATACTL_D0);
|
||||
writel(umc_wdatactl_d1[freq_e], dc_base + UMC_WDATACTL_D1);
|
||||
writel(umc_odtctl_d0[freq_e], dc_base + UMC_ODTCTL_D0);
|
||||
writel(umc_odtctl_d1[freq_e], dc_base + UMC_ODTCTL_D1);
|
||||
writel(umc_dataset[freq_e], dc_base + UMC_DATASET);
|
||||
|
||||
writel(0x00400020, dc_base + UMC_DCCGCTL);
|
||||
writel(0x00000003, dc_base + UMC_ACSSETA);
|
||||
writel(0x00000103, dc_base + UMC_FLOWCTLG);
|
||||
writel(0x00010200, dc_base + UMC_ACSSETB);
|
||||
|
||||
writel(umc_flowctla[freq], dc_base + UMC_FLOWCTLA);
|
||||
writel(umc_flowctla[freq_e], dc_base + UMC_FLOWCTLA);
|
||||
writel(0x00004444, dc_base + UMC_FLOWCTLC);
|
||||
writel(0x00000000, dc_base + UMC_DFICUPDCTLA);
|
||||
|
||||
@@ -577,7 +583,7 @@ static int umc_dc_init(void __iomem *dc_base, enum dram_freq freq,
|
||||
}
|
||||
|
||||
static int umc_ch_init(void __iomem *umc_ch_base, void __iomem *phy_ch_base,
|
||||
enum dram_freq freq, enum dram_board board,
|
||||
enum dram_board board, unsigned int freq,
|
||||
unsigned long size, int ch)
|
||||
{
|
||||
void __iomem *dc_base = umc_ch_base + 0x00011000;
|
||||
@@ -591,7 +597,11 @@ static int umc_ch_init(void __iomem *umc_ch_base, void __iomem *phy_ch_base,
|
||||
writel(UMC_DIOCTLA_CTL_NRST | UMC_DIOCTLA_CFG_NRST,
|
||||
dc_base + UMC_DIOCTLA);
|
||||
|
||||
ddrphy_init(phy_base, dc_base, freq, board, ch);
|
||||
ddrphy_init(phy_base, board, ch);
|
||||
|
||||
umc_poll_phy_init_complete(dc_base);
|
||||
|
||||
ddrphy_init_tail(phy_base, board, freq, ch);
|
||||
|
||||
ret = umc_dc_init(dc_base, freq, size, ch);
|
||||
if (ret)
|
||||
@@ -624,19 +634,9 @@ int uniphier_ld20_umc_init(const struct uniphier_board_data *bd)
|
||||
void __iomem *um_base = (void __iomem *)0x5b600000;
|
||||
void __iomem *umc_ch_base = (void __iomem *)0x5b800000;
|
||||
void __iomem *phy_ch_base = (void __iomem *)0x6e200000;
|
||||
enum dram_freq freq;
|
||||
enum dram_board board;
|
||||
int ch, ret;
|
||||
|
||||
switch (bd->dram_freq) {
|
||||
case 1866:
|
||||
freq = DRAM_FREQ_1866M;
|
||||
break;
|
||||
default:
|
||||
pr_err("unsupported DRAM frequency %d MHz\n", bd->dram_freq);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (UNIPHIER_BD_BOARD_GET_TYPE(bd->flags)) {
|
||||
case UNIPHIER_BD_BOARD_LD20_REF:
|
||||
board = DRAM_BOARD_LD20_REF;
|
||||
@@ -660,8 +660,8 @@ int uniphier_ld20_umc_init(const struct uniphier_board_data *bd)
|
||||
unsigned long size = bd->dram_ch[ch].size;
|
||||
unsigned int width = bd->dram_ch[ch].width;
|
||||
|
||||
ret = umc_ch_init(umc_ch_base, phy_ch_base, freq, board,
|
||||
size / (width / 16), ch);
|
||||
ret = umc_ch_init(umc_ch_base, phy_ch_base, board,
|
||||
bd->dram_freq, size / (width / 16), ch);
|
||||
if (ret) {
|
||||
pr_err("failed to initialize UMC ch%d\n", ch);
|
||||
return ret;
|
||||
|
||||
@@ -15,7 +15,9 @@ int uniphier_ld11_init(const struct uniphier_board_data *bd)
|
||||
{
|
||||
uniphier_sbc_init_savepin(bd);
|
||||
uniphier_pxs2_sbc_init(bd);
|
||||
uniphier_pin_init("system_bus_grp");
|
||||
/* pins for NAND and System Bus are multiplexed */
|
||||
if (spl_boot_device() != BOOT_DEVICE_NAND)
|
||||
uniphier_pin_init("system_bus_grp");
|
||||
|
||||
support_card_reset();
|
||||
|
||||
|
||||
@@ -15,7 +15,9 @@ int uniphier_ld20_init(const struct uniphier_board_data *bd)
|
||||
{
|
||||
uniphier_sbc_init_savepin(bd);
|
||||
uniphier_pxs2_sbc_init(bd);
|
||||
uniphier_pin_init("system_bus_grp");
|
||||
/* pins for NAND and System Bus are multiplexed */
|
||||
if (spl_boot_device() != BOOT_DEVICE_NAND)
|
||||
uniphier_pin_init("system_bus_grp");
|
||||
|
||||
support_card_reset();
|
||||
|
||||
|
||||
@@ -60,9 +60,8 @@ void support_card_init(void)
|
||||
/*
|
||||
* After power on, we need to keep the LAN controller in reset state
|
||||
* for a while. (200 usec)
|
||||
* Fortunately, enough wait time is already inserted in pll_init()
|
||||
* function. So we do not have to wait here.
|
||||
*/
|
||||
udelay(200);
|
||||
support_card_reset_deassert();
|
||||
}
|
||||
|
||||
|
||||
@@ -171,7 +171,6 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
#define CONFIG_DISPLAY_CPUINFO
|
||||
#define CONFIG_ARCH_MISC_INIT
|
||||
|
||||
#define CONFIG_CPU CONFIG_BFIN_CPU
|
||||
|
||||
@@ -29,13 +29,13 @@ void spl_board_init(void)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPL_OS_BOOT
|
||||
void __noreturn jump_to_image_linux(void *arg)
|
||||
void __noreturn jump_to_image_linux(struct spl_image_info *spl_image, void *arg)
|
||||
{
|
||||
debug("Entering kernel arg pointer: 0x%p\n", arg);
|
||||
typedef void (*image_entry_arg_t)(char *, ulong, ulong)
|
||||
__attribute__ ((noreturn));
|
||||
image_entry_arg_t image_entry =
|
||||
(image_entry_arg_t)spl_image.entry_point;
|
||||
(image_entry_arg_t)spl_image->entry_point;
|
||||
|
||||
image_entry(NULL, 0, (ulong)arg);
|
||||
}
|
||||
|
||||
@@ -489,7 +489,7 @@ static void dump_spd_ddr_reg(void)
|
||||
for (i = 0; i < CONFIG_NUM_DDR_CONTROLLERS; i++)
|
||||
fsl_ddr_get_spd(spd[i], i, CONFIG_DIMM_SLOTS_PER_CTLR);
|
||||
|
||||
puts("SPD data of all dimms (zero vaule is omitted)...\n");
|
||||
puts("SPD data of all dimms (zero value is omitted)...\n");
|
||||
puts("Byte (hex) ");
|
||||
k = 1;
|
||||
for (i = 0; i < CONFIG_NUM_DDR_CONTROLLERS; i++) {
|
||||
@@ -543,7 +543,7 @@ static void dump_spd_ddr_reg(void)
|
||||
}
|
||||
}
|
||||
printf("DDR registers dump for all controllers "
|
||||
"(zero vaule is omitted)...\n");
|
||||
"(zero value is omitted)...\n");
|
||||
puts("Offset (hex) ");
|
||||
for (i = 0; i < CONFIG_NUM_DDR_CONTROLLERS; i++)
|
||||
printf(" Base + 0x%04x", (u32)ddr[i] & 0xFFFF);
|
||||
|
||||
@@ -626,10 +626,6 @@ void ft_cpu_setup(void *blob, bd_t *bd)
|
||||
do_fixup_by_prop_u32(blob, "device_type", "soc", 4,
|
||||
"bus-frequency", bd->bi_busfreq, 1);
|
||||
|
||||
do_fixup_by_compat_u32(blob, "fsl,pq3-localbus",
|
||||
"bus-frequency", gd->arch.lbc_clk, 1);
|
||||
do_fixup_by_compat_u32(blob, "fsl,elbc",
|
||||
"bus-frequency", gd->arch.lbc_clk, 1);
|
||||
#ifdef CONFIG_QE
|
||||
ft_qe_setup(blob);
|
||||
ft_fixup_qe_snum(blob);
|
||||
|
||||
@@ -30,13 +30,6 @@ void ft_cpu_setup(void *blob, bd_t *bd)
|
||||
do_fixup_by_prop_u32(blob, "device_type", "soc", 4,
|
||||
"bus-frequency", bd->bi_busfreq, 1);
|
||||
|
||||
#if defined(CONFIG_MPC8641)
|
||||
do_fixup_by_compat_u32(blob, "fsl,mpc8641-localbus",
|
||||
"bus-frequency", gd->arch.lbc_clk, 1);
|
||||
#endif
|
||||
do_fixup_by_compat_u32(blob, "fsl,elbc",
|
||||
"bus-frequency", gd->arch.lbc_clk, 1);
|
||||
|
||||
fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
|
||||
|
||||
#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) \
|
||||
|
||||
@@ -17,14 +17,14 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
* arg: Pointer to paramter image in RAM
|
||||
*/
|
||||
#ifdef CONFIG_SPL_OS_BOOT
|
||||
void __noreturn jump_to_image_linux(void *arg)
|
||||
void __noreturn jump_to_image_linux(struct spl_image_info *spl_image, void *arg)
|
||||
{
|
||||
debug("Entering kernel arg pointer: 0x%p\n", arg);
|
||||
typedef void (*image_entry_arg_t)(void *, ulong r4, ulong r5, ulong r6,
|
||||
ulong r7, ulong r8, ulong r9)
|
||||
__attribute__ ((noreturn));
|
||||
image_entry_arg_t image_entry =
|
||||
(image_entry_arg_t)spl_image.entry_point;
|
||||
(image_entry_arg_t)spl_image->entry_point;
|
||||
|
||||
image_entry(arg, 0, 0, EPAPR_MAGIC, CONFIG_SYS_BOOTMAPSZ, 0, 0);
|
||||
}
|
||||
|
||||
@@ -313,21 +313,23 @@ void os_dirent_free(struct os_dirent_node *node)
|
||||
|
||||
int os_dirent_ls(const char *dirname, struct os_dirent_node **headp)
|
||||
{
|
||||
struct dirent entry, *result;
|
||||
struct dirent *entry;
|
||||
struct os_dirent_node *head, *node, *next;
|
||||
struct stat buf;
|
||||
DIR *dir;
|
||||
int ret;
|
||||
char *fname;
|
||||
int len;
|
||||
int dirlen;
|
||||
|
||||
*headp = NULL;
|
||||
dir = opendir(dirname);
|
||||
if (!dir)
|
||||
return -1;
|
||||
|
||||
/* Create a buffer for the maximum filename length */
|
||||
len = sizeof(entry.d_name) + strlen(dirname) + 2;
|
||||
/* Create a buffer upfront, with typically sufficient size */
|
||||
dirlen = strlen(dirname) + 2;
|
||||
len = dirlen + 256;
|
||||
fname = malloc(len);
|
||||
if (!fname) {
|
||||
ret = -ENOMEM;
|
||||
@@ -335,18 +337,26 @@ int os_dirent_ls(const char *dirname, struct os_dirent_node **headp)
|
||||
}
|
||||
|
||||
for (node = head = NULL;; node = next) {
|
||||
ret = readdir_r(dir, &entry, &result);
|
||||
if (ret || !result)
|
||||
errno = 0;
|
||||
entry = readdir(dir);
|
||||
if (!entry) {
|
||||
ret = errno;
|
||||
break;
|
||||
next = malloc(sizeof(*node) + strlen(entry.d_name) + 1);
|
||||
if (!next) {
|
||||
}
|
||||
next = malloc(sizeof(*node) + strlen(entry->d_name) + 1);
|
||||
if (dirlen + strlen(entry->d_name) > len) {
|
||||
len = dirlen + strlen(entry->d_name);
|
||||
fname = realloc(fname, len);
|
||||
}
|
||||
if (!next || !fname) {
|
||||
free(next);
|
||||
os_dirent_free(head);
|
||||
ret = -ENOMEM;
|
||||
goto done;
|
||||
}
|
||||
next->next = NULL;
|
||||
strcpy(next->name, entry.d_name);
|
||||
switch (entry.d_type) {
|
||||
strcpy(next->name, entry->d_name);
|
||||
switch (entry->d_type) {
|
||||
case DT_REG:
|
||||
next->type = OS_FILET_REG;
|
||||
break;
|
||||
@@ -356,6 +366,8 @@ int os_dirent_ls(const char *dirname, struct os_dirent_node **headp)
|
||||
case DT_LNK:
|
||||
next->type = OS_FILET_LNK;
|
||||
break;
|
||||
default:
|
||||
next->type = OS_FILET_UNKNOWN;
|
||||
}
|
||||
next->size = 0;
|
||||
snprintf(fname, len, "%s/%s", dirname, next->name);
|
||||
@@ -363,8 +375,8 @@ int os_dirent_ls(const char *dirname, struct os_dirent_node **headp)
|
||||
next->size = buf.st_size;
|
||||
if (node)
|
||||
node->next = next;
|
||||
if (!head)
|
||||
head = node;
|
||||
else
|
||||
head = next;
|
||||
}
|
||||
*headp = head;
|
||||
|
||||
|
||||
@@ -38,7 +38,8 @@ void spl_board_announce_boot_device(void)
|
||||
printf("%s\n", fname);
|
||||
}
|
||||
|
||||
int spl_board_load_image(void)
|
||||
static int spl_board_load_image(struct spl_image_info *spl_image,
|
||||
struct spl_boot_device *bootdev)
|
||||
{
|
||||
char fname[256];
|
||||
int ret;
|
||||
@@ -50,6 +51,7 @@ int spl_board_load_image(void)
|
||||
/* Hopefully this will not return */
|
||||
return os_spl_to_uboot(fname);
|
||||
}
|
||||
SPL_LOAD_IMAGE_METHOD(0, BOOT_DEVICE_BOARD, spl_board_load_image);
|
||||
|
||||
void spl_board_init(void)
|
||||
{
|
||||
|
||||
@@ -40,12 +40,12 @@ static inline void unmap_sysmem(const void *vaddr)
|
||||
phys_addr_t map_to_sysmem(const void *ptr);
|
||||
|
||||
/* Define nops for sandbox I/O access */
|
||||
#define readb(addr) 0
|
||||
#define readw(addr) 0
|
||||
#define readl(addr) 0
|
||||
#define writeb(v, addr)
|
||||
#define writew(v, addr)
|
||||
#define writel(v, addr)
|
||||
#define readb(addr) ((void)addr, 0)
|
||||
#define readw(addr) ((void)addr, 0)
|
||||
#define readl(addr) ((void)addr, 0)
|
||||
#define writeb(v, addr) ((void)addr)
|
||||
#define writew(v, addr) ((void)addr)
|
||||
#define writel(v, addr) ((void)addr)
|
||||
|
||||
/* I/O access functions */
|
||||
int inl(unsigned int addr);
|
||||
|
||||
@@ -8,14 +8,6 @@
|
||||
|
||||
#define CONFIG_SPL_BOARD_LOAD_IMAGE
|
||||
|
||||
/**
|
||||
* Board-specific load method for boards that have a special way of loading
|
||||
* U-Boot, which does not fit with the existing SPL code.
|
||||
*
|
||||
* @return 0 on success, negative errno value on failure.
|
||||
*/
|
||||
int spl_board_load_image(void);
|
||||
|
||||
enum {
|
||||
BOOT_DEVICE_BOARD,
|
||||
};
|
||||
|
||||
@@ -12,8 +12,9 @@
|
||||
#include <asm/post.h>
|
||||
|
||||
static struct pci_device_id mmc_supported[] = {
|
||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VALLEYVIEW_SDIO },
|
||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VALLEYVIEW_SDCARD },
|
||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT_SDIO },
|
||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT_SD },
|
||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT_EMMC2 },
|
||||
{},
|
||||
};
|
||||
|
||||
|
||||
@@ -291,7 +291,6 @@ void board_debug_uart_init(void)
|
||||
|
||||
static const struct udevice_id broadwell_syscon_ids[] = {
|
||||
{ .compatible = "intel,me", .data = X86_SYSCON_ME },
|
||||
{ .compatible = "intel,gma", .data = X86_SYSCON_GMA },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
@@ -8,8 +8,4 @@ config CBMEM_CONSOLE
|
||||
bool
|
||||
default y
|
||||
|
||||
config VIDEO_COREBOOT
|
||||
bool
|
||||
default y
|
||||
|
||||
endif
|
||||
|
||||
@@ -135,7 +135,7 @@ static void load_gdt(const u64 *boot_gdt, u16 num_entries)
|
||||
struct gdt_ptr gdt;
|
||||
|
||||
gdt.len = (num_entries * X86_GDT_ENTRY_SIZE) - 1;
|
||||
gdt.ptr = (u32)boot_gdt;
|
||||
gdt.ptr = (ulong)boot_gdt;
|
||||
|
||||
asm volatile("lgdtl %0\n" : : "m" (gdt));
|
||||
}
|
||||
@@ -630,13 +630,11 @@ static void build_pagetable(uint32_t *pgtable)
|
||||
memset(pgtable, '\0', PAGETABLE_SIZE);
|
||||
|
||||
/* Level 4 needs a single entry */
|
||||
pgtable[0] = (uint32_t)&pgtable[1024] + 7;
|
||||
pgtable[0] = (ulong)&pgtable[1024] + 7;
|
||||
|
||||
/* Level 3 has one 64-bit entry for each GiB of memory */
|
||||
for (i = 0; i < 4; i++) {
|
||||
pgtable[1024 + i * 2] = (uint32_t)&pgtable[2048] +
|
||||
0x1000 * i + 7;
|
||||
}
|
||||
for (i = 0; i < 4; i++)
|
||||
pgtable[1024 + i * 2] = (ulong)&pgtable[2048] + 0x1000 * i + 7;
|
||||
|
||||
/* Level 2 has 2048 64-bit entries, each repesenting 2MiB */
|
||||
for (i = 0; i < 2048; i++)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user