Compare commits
297 Commits
v2016.03-r
...
v2016.03
| Author | SHA1 | Date | |
|---|---|---|---|
| df61a74e68 | |||
| ae765f3a82 | |||
| ea9619aed6 | |||
| e6601df8ac | |||
| 76aab9eb8b | |||
| cf77f6ffd9 | |||
| b5788dc0dd | |||
| 87cef34576 | |||
| 99aaa93075 | |||
| 40a09be2e9 | |||
| 499b847521 | |||
| deff6fb3a7 | |||
| 2f0bcd4de1 | |||
| 699946ae61 | |||
| 22d90d560a | |||
| 22aa61f707 | |||
| 3f53e619f0 | |||
| 138daa7b36 | |||
| 5d07648662 | |||
| 1d22c4b1bd | |||
| fdd15b6a86 | |||
| 51244a6080 | |||
| c6c7eed741 | |||
| 08b24722f0 | |||
| b5ab663a69 | |||
| b112b00716 | |||
| 3c525ecfb3 | |||
| 9feec162af | |||
| 047cc75df6 | |||
| fc9e8f2817 | |||
| 8038f6d288 | |||
| 0156782feb | |||
| c6afa11375 | |||
| 23a004a63f | |||
| ba10b852fe | |||
| a15221e080 | |||
| 9b2c282b34 | |||
| 9902c113ad | |||
| 11d3ede42c | |||
| fe5ea57bdb | |||
| e5e88c6596 | |||
| 2247c332db | |||
| 5fb87a1632 | |||
| fe7c95ee5c | |||
| 4e651003e5 | |||
| a191e0dee0 | |||
| 7c9cac9c22 | |||
| fd14397e93 | |||
| 9a71844a38 | |||
| b870848795 | |||
| c5985b4bbb | |||
| 71d7ef35df | |||
| 380a8cafc0 | |||
| 82e5950802 | |||
| 6257a0b0e9 | |||
| 7887670498 | |||
| 4f19f61184 | |||
| 4021b4381d | |||
| 3c963d4899 | |||
| 00dd3f6ab0 | |||
| 94b756f331 | |||
| a54c879a42 | |||
| 59fe23c2e0 | |||
| 46abfcc99e | |||
| 8353266825 | |||
| aa8a93480e | |||
| c231c4367a | |||
| 569e4be172 | |||
| a55d9feeec | |||
| c7f94eecfd | |||
| 4aceb3f8d4 | |||
| a111bfbfad | |||
| 595dc1e162 | |||
| b800cbde4f | |||
| f8facbe71e | |||
| b9a66b63b4 | |||
| 0f5fb8ce40 | |||
| 50dc8677d7 | |||
| d5c6144fe3 | |||
| 38e65aeb70 | |||
| 50768f5b06 | |||
| 903d384d40 | |||
| cf23b4da62 | |||
| abd702f48c | |||
| 6796704b0d | |||
| f8025b58f8 | |||
| 0badb23d11 | |||
| ffe276d27a | |||
| 20f655da11 | |||
| 651490212a | |||
| c00e922530 | |||
| 01476eaf07 | |||
| 1057e6cfe1 | |||
| c95fec3192 | |||
| 4f051824b5 | |||
| f91281b1eb | |||
| 83cc112e82 | |||
| 5eca977935 | |||
| 0edd82e244 | |||
| 2e33e76165 | |||
| 7a80de4641 | |||
| 24862c640e | |||
| 38831ca3be | |||
| 1f60d7c6e9 | |||
| 636ac181fa | |||
| 966bfa7347 | |||
| 05195b2cbe | |||
| 299e5bb7c2 | |||
| 070b781b2b | |||
| 5f3f7b79db | |||
| cdb714d7c9 | |||
| fec26e7270 | |||
| e1417c7b66 | |||
| 20434c8a0b | |||
| dfe461d6b5 | |||
| 508770ae37 | |||
| 1fd4bed1d4 | |||
| 757cd149b9 | |||
| 6f6051fac3 | |||
| e8aebc4744 | |||
| 3a53aba37d | |||
| 4b8f489289 | |||
| 7d751d661a | |||
| 43e568c4ae | |||
| e038e2a89b | |||
| dccaaaeb99 | |||
| 9bcfca123c | |||
| 5dc5a8cac7 | |||
| 4067a6c8d3 | |||
| 49a934401a | |||
| 7ef77c029a | |||
| 034a819660 | |||
| 3e475abef3 | |||
| 3b804d94ab | |||
| be0be08802 | |||
| a9a85fcc7b | |||
| 568cfb4d7b | |||
| 26ef7a27da | |||
| b1309a23e0 | |||
| ed48899c11 | |||
| 2e33df807c | |||
| c6e3e8213a | |||
| c190fbd010 | |||
| e66c49fa93 | |||
| 6a12cebd90 | |||
| 09959ba3c5 | |||
| 14cec06113 | |||
| e6e34ca3ad | |||
| 80da86642b | |||
| 755ff3a38d | |||
| a1d4e962ca | |||
| dc0a1a08ac | |||
| d7d8c00575 | |||
| a18c2706f1 | |||
| 53419bac4e | |||
| 7124a8c4cf | |||
| fc18f8d170 | |||
| e88a1b75d5 | |||
| 7ab0d35543 | |||
| cf7c93cdd7 | |||
| 643cacb6d6 | |||
| a08b1921b4 | |||
| a12a0ef89e | |||
| 110171dcef | |||
| d3e6d30cef | |||
| 3bf46e6a6d | |||
| 5a7c40bea6 | |||
| 0e52b6fea1 | |||
| 6fc9535f39 | |||
| 075affb1ac | |||
| 2459afb1a7 | |||
| 9f3e1b8a55 | |||
| 16ed856019 | |||
| 70097027d2 | |||
| bbc8e053ba | |||
| 3e0a0fbbac | |||
| f698e9f39a | |||
| 7f4736bd65 | |||
| 9e71bb9ca2 | |||
| 2f7d70082c | |||
| 52dd704bf8 | |||
| dc44fd8ae4 | |||
| 0d8382ae70 | |||
| d83b47b778 | |||
| b625fab706 | |||
| 674f3609aa | |||
| 3963919e5b | |||
| 4942ba2318 | |||
| 1218e5c507 | |||
| 518b0afc33 | |||
| 7bd1c59bdb | |||
| 58da672d49 | |||
| a0594cefb7 | |||
| 18c61e9571 | |||
| bed6bd326e | |||
| 703c751169 | |||
| fdcdde567c | |||
| baec7df738 | |||
| 6a10bc5be8 | |||
| 9ec2cf00b4 | |||
| 18c4e7f71c | |||
| d9a3bec682 | |||
| 39bc1a8c8f | |||
| 70bdf2f6b9 | |||
| cb204a69d6 | |||
| 6cd0f2a6cd | |||
| d82d63cc9b | |||
| d9f317fd0d | |||
| ce0335f2b4 | |||
| 28f8099563 | |||
| e832a142b9 | |||
| d5b9d11cb6 | |||
| f6e75ba7fe | |||
| 595af9db24 | |||
| 35c4ce5e20 | |||
| 79e355fb68 | |||
| 83703a1ccf | |||
| 3fe0b10460 | |||
| 0623d375cf | |||
| 6f6058bfd8 | |||
| 677656bdb5 | |||
| af0135928e | |||
| d08607e1e7 | |||
| de09c43bbf | |||
| 613e01065a | |||
| 22bd6b4f60 | |||
| dd8bd015e8 | |||
| 2c79b7a3bb | |||
| a668436051 | |||
| 1a43dc11a3 | |||
| c4068dfb31 | |||
| 745df68d36 | |||
| f91e65a74e | |||
| 2b8e8d2671 | |||
| 88e826be45 | |||
| e9e18353c0 | |||
| 3964311473 | |||
| 03bfc78359 | |||
| a2e3b05e16 | |||
| 87077e97d1 | |||
| dc5be508b0 | |||
| 98af34f897 | |||
| 4374139627 | |||
| 4fd64d02b2 | |||
| 20680b560a | |||
| 2a0b9ea306 | |||
| db6ce2312d | |||
| 379b3280b3 | |||
| 86a0df7328 | |||
| cf432dd595 | |||
| 522e4fbb76 | |||
| f7cf291aa7 | |||
| c21c28b6f3 | |||
| b96fd82501 | |||
| ede86ed26f | |||
| c43a72e88e | |||
| c0b868c087 | |||
| 30f65c85de | |||
| 9cf7385c9b | |||
| be5e485cf9 | |||
| 8d233521cd | |||
| b55b596086 | |||
| db5c102be2 | |||
| 1e70b37346 | |||
| cd4de1d928 | |||
| 70341e2ed9 | |||
| eced5a7eb4 | |||
| 41bf25c2e1 | |||
| e5322df4e7 | |||
| a8c3eca433 | |||
| 3089c47ddc | |||
| 5589bc2770 | |||
| bf51982539 | |||
| d6ef8a6194 | |||
| e007633b00 | |||
| 91c08afe66 | |||
| 41fa035ce1 | |||
| f5acf91f6f | |||
| bfda03770c | |||
| f20b2c0671 | |||
| 9e6866d3b6 | |||
| ce0c474a72 | |||
| 40d56a918c | |||
| 71cafc3fba | |||
| ee7d755a58 | |||
| d2f906500e | |||
| d76592122b | |||
| 135a87ef43 | |||
| 3f2997a40c | |||
| 4dd811581a | |||
| 7429b9623b | |||
| 651827c0fc | |||
| 300e235378 | |||
| f4abbee3ae | |||
| e05ab0dae8 | |||
| bbc8a8b4cc | |||
| 732484799b |
16
MAINTAINERS
16
MAINTAINERS
@ -126,8 +126,8 @@ F: arch/arm/cpu/armv7/s5p-common/
|
||||
F: arch/arm/include/asm/arch-s3c24x0/
|
||||
|
||||
ARM STM SPEAR
|
||||
M: Vipin Kumar <vipin.kumar@st.com>
|
||||
S: Maintained
|
||||
#M: Vipin Kumar <vipin.kumar@st.com>
|
||||
S: Orphaned (Since 2016-02)
|
||||
T: git git://git.denx.de/u-boot-stm.git
|
||||
F: arch/arm/cpu/arm926ejs/spear/
|
||||
F: arch/arm/include/asm/arch-spear/
|
||||
@ -309,8 +309,8 @@ T: git git://git.denx.de/u-boot-mpc82xx.git
|
||||
F: arch/powerpc/cpu/mpc82*/
|
||||
|
||||
POWERPC MPC83XX
|
||||
M: Kim Phillips <kim.phillips@freescale.com>
|
||||
S: Maintained
|
||||
#M: Kim Phillips <kim.phillips@freescale.com>
|
||||
S: Orphaned (Since 2016-02)
|
||||
T: git git://git.denx.de/u-boot-mpc83xx.git
|
||||
F: arch/powerpc/cpu/mpc83xx/
|
||||
F: arch/powerpc/include/asm/arch-mpc83xx/
|
||||
@ -376,8 +376,8 @@ T: git git://git.denx.de/u-boot-sh.git
|
||||
F: arch/sh/
|
||||
|
||||
SPARC
|
||||
M: Francois Retief <fgretief@spaceteq.co.za>
|
||||
S: Maintained
|
||||
#M: Francois Retief <fgretief@spaceteq.co.za>
|
||||
S: Orphaned (Since 2016-02)
|
||||
T: git git://git.denx.de/u-boot-sparc.git
|
||||
F: arch/sparc/
|
||||
|
||||
@ -390,8 +390,8 @@ F: drivers/spi/
|
||||
F: include/spi*
|
||||
|
||||
TQ GROUP
|
||||
M: Martin Krause <martin.krause@tq-systems.de>
|
||||
S: Maintained
|
||||
#M: Martin Krause <martin.krause@tq-systems.de>
|
||||
S: Orphaned (Since 2016-02)
|
||||
T: git git://git.denx.de/u-boot-tq-group.git
|
||||
|
||||
UBI
|
||||
|
||||
2
Makefile
2
Makefile
@ -5,7 +5,7 @@
|
||||
VERSION = 2016
|
||||
PATCHLEVEL = 03
|
||||
SUBLEVEL =
|
||||
EXTRAVERSION = -rc2
|
||||
EXTRAVERSION =
|
||||
NAME =
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
||||
6
README
6
README
@ -5409,6 +5409,12 @@ List of environment variables (most likely not complete):
|
||||
Ethernet is encapsulated/received over 802.1q
|
||||
VLAN tagged frames.
|
||||
|
||||
bootpretryperiod - Period during which BOOTP/DHCP sends retries.
|
||||
Unsigned value, in milliseconds. If not set, the period will
|
||||
be either the default (28000), or a value based on
|
||||
CONFIG_NET_RETRY_COUNT, if defined. This value has
|
||||
precedence over the valu based on CONFIG_NET_RETRY_COUNT.
|
||||
|
||||
The following image location variables contain the location of images
|
||||
used in booting. The "Image" column gives the role of the image and is
|
||||
not an environment variable name. The other columns are environment
|
||||
|
||||
@ -661,6 +661,7 @@ void api_init(void)
|
||||
return;
|
||||
}
|
||||
|
||||
setenv_hex("api_address", (unsigned long)sig);
|
||||
debugf("API sig @ 0x%08x\n", sig);
|
||||
memcpy(sig->magic, API_SIG_MAGIC, 8);
|
||||
sig->version = API_SIG_VERSION;
|
||||
|
||||
@ -116,17 +116,6 @@ config SYS_DCACHE_OFF
|
||||
bool "Do not use Data Cache"
|
||||
default n
|
||||
|
||||
config ARC_CACHE_LINE_SHIFT
|
||||
int "Cache Line Length (as power of 2)"
|
||||
range 5 7
|
||||
default "6"
|
||||
depends on !SYS_DCACHE_OFF || !SYS_ICACHE_OFF
|
||||
help
|
||||
Starting with ARC700 4.9, Cache line length is configurable,
|
||||
This option specifies "N", with Line-len = 2 power N
|
||||
So line lengths of 32, 64, 128 are specified by 5,6,7, respectively
|
||||
Linux only supports same line lengths for I and D caches.
|
||||
|
||||
choice
|
||||
prompt "Target select"
|
||||
default TARGET_AXS101
|
||||
|
||||
@ -53,6 +53,13 @@
|
||||
#define ARC_AUX_SLC_INVALIDATE 0x905
|
||||
#define ARC_AUX_SLC_IVDL 0x910
|
||||
#define ARC_AUX_SLC_FLDL 0x912
|
||||
#define ARC_BCR_CLUSTER 0xcf
|
||||
|
||||
/* IO coherency related auxiliary registers */
|
||||
#define ARC_AUX_IO_COH_ENABLE 0x500
|
||||
#define ARC_AUX_IO_COH_PARTIAL 0x501
|
||||
#define ARC_AUX_IO_COH_AP0_BASE 0x508
|
||||
#define ARC_AUX_IO_COH_AP0_SIZE 0x509
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
/* Accessors for auxiliary registers */
|
||||
|
||||
@ -9,13 +9,13 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef CONFIG_ARC_CACHE_LINE_SHIFT
|
||||
#define CONFIG_SYS_CACHELINE_SIZE (1 << CONFIG_ARC_CACHE_LINE_SHIFT)
|
||||
#define ARCH_DMA_MINALIGN CONFIG_SYS_CACHELINE_SIZE
|
||||
#else
|
||||
/* Satisfy users of ARCH_DMA_MINALIGN */
|
||||
#define ARCH_DMA_MINALIGN 128
|
||||
#endif
|
||||
/*
|
||||
* As of today we may handle any L1 cache line length right in software.
|
||||
* For that essentially cache line length is a variable not constant.
|
||||
* And to satisfy users of ARCH_DMA_MINALIGN we just use largest line length
|
||||
* that may exist in either L1 or L2 (AKA SLC) caches on ARC.
|
||||
*/
|
||||
#define ARCH_DMA_MINALIGN 128
|
||||
|
||||
#if defined(ARC_MMU_ABSENT)
|
||||
#define CONFIG_ARC_MMU_VER 0
|
||||
|
||||
@ -5,13 +5,12 @@
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <common.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <asm/arcregs.h>
|
||||
#include <asm/cache.h>
|
||||
|
||||
#define CACHE_LINE_MASK (~(CONFIG_SYS_CACHELINE_SIZE - 1))
|
||||
|
||||
/* Bit values in IC_CTRL */
|
||||
#define IC_CTRL_CACHE_DISABLE (1 << 0)
|
||||
|
||||
@ -26,14 +25,21 @@
|
||||
#define OP_FLUSH 0x2
|
||||
#define OP_INV_IC 0x3
|
||||
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
/*
|
||||
* By default that variable will fall into .bss section.
|
||||
* But .bss section is not relocated and so it will be initilized before
|
||||
* relocation but will be used after being zeroed.
|
||||
*/
|
||||
int l1_line_sz __section(".data");
|
||||
int dcache_exists __section(".data");
|
||||
int icache_exists __section(".data");
|
||||
|
||||
#define CACHE_LINE_MASK (~(l1_line_sz - 1))
|
||||
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
int slc_line_sz __section(".data");
|
||||
int slc_exists __section(".data");
|
||||
int ioc_exists __section(".data");
|
||||
|
||||
static unsigned int __before_slc_op(const int op)
|
||||
{
|
||||
@ -111,46 +117,113 @@ static inline void __slc_line_op(unsigned long paddr, unsigned long sz,
|
||||
#define __slc_line_op(paddr, sz, cacheop)
|
||||
#endif
|
||||
|
||||
static inline int icache_exists(void)
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
static void read_decode_cache_bcr_arcv2(void)
|
||||
{
|
||||
/* Check if Instruction Cache is available */
|
||||
if (read_aux_reg(ARC_BCR_IC_BUILD) & CACHE_VER_NUM_MASK)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
union {
|
||||
struct {
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
unsigned int pad:24, way:2, lsz:2, sz:4;
|
||||
#else
|
||||
unsigned int sz:4, lsz:2, way:2, pad:24;
|
||||
#endif
|
||||
} fields;
|
||||
unsigned int word;
|
||||
} slc_cfg;
|
||||
|
||||
static inline int dcache_exists(void)
|
||||
union {
|
||||
struct {
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
unsigned int pad:24, ver:8;
|
||||
#else
|
||||
unsigned int ver:8, pad:24;
|
||||
#endif
|
||||
} fields;
|
||||
unsigned int word;
|
||||
} sbcr;
|
||||
|
||||
sbcr.word = read_aux_reg(ARC_BCR_SLC);
|
||||
if (sbcr.fields.ver) {
|
||||
slc_cfg.word = read_aux_reg(ARC_AUX_SLC_CONFIG);
|
||||
slc_exists = 1;
|
||||
slc_line_sz = (slc_cfg.fields.lsz == 0) ? 128 : 64;
|
||||
}
|
||||
|
||||
union {
|
||||
struct bcr_clust_cfg {
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
unsigned int pad:7, c:1, num_entries:8, num_cores:8, ver:8;
|
||||
#else
|
||||
unsigned int ver:8, num_cores:8, num_entries:8, c:1, pad:7;
|
||||
#endif
|
||||
} fields;
|
||||
unsigned int word;
|
||||
} cbcr;
|
||||
|
||||
cbcr.word = read_aux_reg(ARC_BCR_CLUSTER);
|
||||
if (cbcr.fields.c)
|
||||
ioc_exists = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
void read_decode_cache_bcr(void)
|
||||
{
|
||||
/* Check if Data Cache is available */
|
||||
if (read_aux_reg(ARC_BCR_DC_BUILD) & CACHE_VER_NUM_MASK)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
int dc_line_sz = 0, ic_line_sz = 0;
|
||||
|
||||
union {
|
||||
struct {
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
unsigned int pad:12, line_len:4, sz:4, config:4, ver:8;
|
||||
#else
|
||||
unsigned int ver:8, config:4, sz:4, line_len:4, pad:12;
|
||||
#endif
|
||||
} fields;
|
||||
unsigned int word;
|
||||
} ibcr, dbcr;
|
||||
|
||||
ibcr.word = read_aux_reg(ARC_BCR_IC_BUILD);
|
||||
if (ibcr.fields.ver) {
|
||||
icache_exists = 1;
|
||||
l1_line_sz = ic_line_sz = 8 << ibcr.fields.line_len;
|
||||
if (!ic_line_sz)
|
||||
panic("Instruction exists but line length is 0\n");
|
||||
}
|
||||
|
||||
dbcr.word = read_aux_reg(ARC_BCR_DC_BUILD);
|
||||
if (dbcr.fields.ver){
|
||||
dcache_exists = 1;
|
||||
l1_line_sz = dc_line_sz = 16 << dbcr.fields.line_len;
|
||||
if (!dc_line_sz)
|
||||
panic("Data cache exists but line length is 0\n");
|
||||
}
|
||||
|
||||
if (ic_line_sz && dc_line_sz && (ic_line_sz != dc_line_sz))
|
||||
panic("Instruction and data cache line lengths differ\n");
|
||||
}
|
||||
|
||||
void cache_init(void)
|
||||
{
|
||||
read_decode_cache_bcr();
|
||||
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
/* Check if System-Level Cache (SLC) is available */
|
||||
if (read_aux_reg(ARC_BCR_SLC) & CACHE_VER_NUM_MASK) {
|
||||
#define LSIZE_OFFSET 4
|
||||
#define LSIZE_MASK 3
|
||||
if (read_aux_reg(ARC_AUX_SLC_CONFIG) &
|
||||
(LSIZE_MASK << LSIZE_OFFSET))
|
||||
slc_line_sz = 64;
|
||||
else
|
||||
slc_line_sz = 128;
|
||||
slc_exists = 1;
|
||||
} else {
|
||||
slc_exists = 0;
|
||||
read_decode_cache_bcr_arcv2();
|
||||
|
||||
if (ioc_exists) {
|
||||
/* IO coherency base - 0x8z */
|
||||
write_aux_reg(ARC_AUX_IO_COH_AP0_BASE, 0x80000);
|
||||
/* IO coherency aperture size - 512Mb: 0x8z-0xAz */
|
||||
write_aux_reg(ARC_AUX_IO_COH_AP0_SIZE, 0x11);
|
||||
/* Enable partial writes */
|
||||
write_aux_reg(ARC_AUX_IO_COH_PARTIAL, 1);
|
||||
/* Enable IO coherency */
|
||||
write_aux_reg(ARC_AUX_IO_COH_ENABLE, 1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
int icache_status(void)
|
||||
{
|
||||
if (!icache_exists())
|
||||
if (!icache_exists)
|
||||
return 0;
|
||||
|
||||
if (read_aux_reg(ARC_AUX_IC_CTRL) & IC_CTRL_CACHE_DISABLE)
|
||||
@ -161,14 +234,14 @@ int icache_status(void)
|
||||
|
||||
void icache_enable(void)
|
||||
{
|
||||
if (icache_exists())
|
||||
if (icache_exists)
|
||||
write_aux_reg(ARC_AUX_IC_CTRL, read_aux_reg(ARC_AUX_IC_CTRL) &
|
||||
~IC_CTRL_CACHE_DISABLE);
|
||||
}
|
||||
|
||||
void icache_disable(void)
|
||||
{
|
||||
if (icache_exists())
|
||||
if (icache_exists)
|
||||
write_aux_reg(ARC_AUX_IC_CTRL, read_aux_reg(ARC_AUX_IC_CTRL) |
|
||||
IC_CTRL_CACHE_DISABLE);
|
||||
}
|
||||
@ -190,7 +263,7 @@ void invalidate_icache_all(void)
|
||||
|
||||
int dcache_status(void)
|
||||
{
|
||||
if (!dcache_exists())
|
||||
if (!dcache_exists)
|
||||
return 0;
|
||||
|
||||
if (read_aux_reg(ARC_AUX_DC_CTRL) & DC_CTRL_CACHE_DISABLE)
|
||||
@ -201,7 +274,7 @@ int dcache_status(void)
|
||||
|
||||
void dcache_enable(void)
|
||||
{
|
||||
if (!dcache_exists())
|
||||
if (!dcache_exists)
|
||||
return;
|
||||
|
||||
write_aux_reg(ARC_AUX_DC_CTRL, read_aux_reg(ARC_AUX_DC_CTRL) &
|
||||
@ -210,7 +283,7 @@ void dcache_enable(void)
|
||||
|
||||
void dcache_disable(void)
|
||||
{
|
||||
if (!dcache_exists())
|
||||
if (!dcache_exists)
|
||||
return;
|
||||
|
||||
write_aux_reg(ARC_AUX_DC_CTRL, read_aux_reg(ARC_AUX_DC_CTRL) |
|
||||
@ -246,14 +319,14 @@ static inline void __cache_line_loop(unsigned long paddr, unsigned long sz,
|
||||
sz += paddr & ~CACHE_LINE_MASK;
|
||||
paddr &= CACHE_LINE_MASK;
|
||||
|
||||
num_lines = DIV_ROUND_UP(sz, CONFIG_SYS_CACHELINE_SIZE);
|
||||
num_lines = DIV_ROUND_UP(sz, l1_line_sz);
|
||||
|
||||
while (num_lines-- > 0) {
|
||||
#if (CONFIG_ARC_MMU_VER == 3)
|
||||
write_aux_reg(aux_tag, paddr);
|
||||
#endif
|
||||
write_aux_reg(aux_cmd, paddr);
|
||||
paddr += CONFIG_SYS_CACHELINE_SIZE;
|
||||
paddr += l1_line_sz;
|
||||
}
|
||||
}
|
||||
|
||||
@ -313,18 +386,26 @@ static inline void __dc_line_op(unsigned long paddr, unsigned long sz,
|
||||
|
||||
void invalidate_dcache_range(unsigned long start, unsigned long end)
|
||||
{
|
||||
__dc_line_op(start, end - start, OP_INV);
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
if (slc_exists)
|
||||
if (!ioc_exists)
|
||||
#endif
|
||||
__dc_line_op(start, end - start, OP_INV);
|
||||
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
if (slc_exists && !ioc_exists)
|
||||
__slc_line_op(start, end - start, OP_INV);
|
||||
#endif
|
||||
}
|
||||
|
||||
void flush_dcache_range(unsigned long start, unsigned long end)
|
||||
{
|
||||
__dc_line_op(start, end - start, OP_FLUSH);
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
if (slc_exists)
|
||||
if (!ioc_exists)
|
||||
#endif
|
||||
__dc_line_op(start, end - start, OP_FLUSH);
|
||||
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
if (slc_exists && !ioc_exists)
|
||||
__slc_line_op(start, end - start, OP_FLUSH);
|
||||
#endif
|
||||
}
|
||||
@ -336,18 +417,26 @@ void flush_cache(unsigned long start, unsigned long size)
|
||||
|
||||
void invalidate_dcache_all(void)
|
||||
{
|
||||
__dc_entire_op(OP_INV);
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
if (slc_exists)
|
||||
if (!ioc_exists)
|
||||
#endif
|
||||
__dc_entire_op(OP_INV);
|
||||
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
if (slc_exists && !ioc_exists)
|
||||
__slc_entire_op(OP_INV);
|
||||
#endif
|
||||
}
|
||||
|
||||
void flush_dcache_all(void)
|
||||
{
|
||||
__dc_entire_op(OP_FLUSH);
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
if (slc_exists)
|
||||
if (!ioc_exists)
|
||||
#endif
|
||||
__dc_entire_op(OP_FLUSH);
|
||||
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
if (slc_exists && !ioc_exists)
|
||||
__slc_entire_op(OP_FLUSH);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -690,15 +690,16 @@ config TARGET_COLIBRI_PXA270
|
||||
config ARCH_UNIPHIER
|
||||
bool "Socionext UniPhier SoCs"
|
||||
select CLK_UNIPHIER
|
||||
select CPU_V7
|
||||
select SUPPORT_SPL
|
||||
select SPL
|
||||
select OF_CONTROL
|
||||
select SPL_OF_CONTROL
|
||||
select DM
|
||||
select SPL_DM
|
||||
select DM_GPIO
|
||||
select DM_SERIAL
|
||||
select DM_I2C
|
||||
select DM_MMC
|
||||
help
|
||||
Support for UniPhier SoC family developed by Socionext Inc.
|
||||
(formerly, System LSI Business Division of Panasonic Corporation)
|
||||
|
||||
@ -78,7 +78,7 @@ cpu_init_crit:
|
||||
mrc p15, 0, r0, c1, c0, 0
|
||||
bic r0, r0, #0x00002300 @ clear bits 13, 9:8 (--V- --RS)
|
||||
bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM)
|
||||
orr r0, r0, #0x00000002 @ set bit 2 (A) Align
|
||||
orr r0, r0, #0x00000002 @ set bit 1 (A) Align
|
||||
orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache
|
||||
mcr p15, 0, r0, c1, c0, 0
|
||||
|
||||
|
||||
@ -78,7 +78,7 @@ cpu_init_crit:
|
||||
mrc p15, 0, r0, c1, c0, 0
|
||||
bic r0, r0, #0x00002300 @ clear bits 13, 9:8 (--V- --RS)
|
||||
bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM)
|
||||
orr r0, r0, #0x00000002 @ set bit 2 (A) Align
|
||||
orr r0, r0, #0x00000002 @ set bit 1 (A) Align
|
||||
orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache
|
||||
|
||||
/* Prepare to disable the MMU */
|
||||
|
||||
@ -131,7 +131,7 @@ cpu_init_crit:
|
||||
mrc p15, 0, r0, c1, c0, 0
|
||||
bic r0, r0, #0x00002300 @ clear bits 13, 9:8 (--V- --RS)
|
||||
bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM)
|
||||
orr r0, r0, #0x00000002 @ set bit 2 (A) Align
|
||||
orr r0, r0, #0x00000002 @ set bit 1 (A) Align
|
||||
orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache
|
||||
mcr p15, 0, r0, c1, c0, 0
|
||||
|
||||
|
||||
@ -95,7 +95,7 @@ flush_dcache:
|
||||
#else
|
||||
bic r0, r0, #0x00002000 /* clear bit 13 (--V- ----) */
|
||||
#endif
|
||||
orr r0, r0, #0x00000002 /* set bit 2 (A) Align */
|
||||
orr r0, r0, #0x00000002 /* set bit 1 (A) Align */
|
||||
#ifndef CONFIG_SYS_ICACHE_OFF
|
||||
orr r0, r0, #0x00001000 /* set bit 12 (I) I-Cache */
|
||||
#endif
|
||||
|
||||
@ -86,7 +86,7 @@ cpu_init_crit:
|
||||
mrc p15, 0, r0, c1, c0, 0
|
||||
bic r0, r0, #0x00002300 /* clear bits 13, 9:8 (--V- --RS) */
|
||||
bic r0, r0, #0x00000087 /* clear bits 7, 2:0 (B--- -CAM) */
|
||||
orr r0, r0, #0x00000002 /* set bit 2 (A) Align */
|
||||
orr r0, r0, #0x00000002 /* set bit 1 (A) Align */
|
||||
orr r0, r0, #0x00001000 /* set bit 12 (I) I-Cache */
|
||||
mcr p15, 0, r0, c1, c0, 0
|
||||
|
||||
|
||||
@ -9,6 +9,43 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/immap_ls102xa.h>
|
||||
#include <asm/arch/ls102xa_soc.h>
|
||||
#include <asm/arch/ls102xa_stream_id.h>
|
||||
|
||||
struct liodn_id_table sec_liodn_tbl[] = {
|
||||
SET_SEC_JR_LIODN_ENTRY(0, 0x10, 0x10),
|
||||
SET_SEC_JR_LIODN_ENTRY(1, 0x10, 0x10),
|
||||
SET_SEC_JR_LIODN_ENTRY(2, 0x10, 0x10),
|
||||
SET_SEC_JR_LIODN_ENTRY(3, 0x10, 0x10),
|
||||
SET_SEC_RTIC_LIODN_ENTRY(a, 0x10),
|
||||
SET_SEC_RTIC_LIODN_ENTRY(b, 0x10),
|
||||
SET_SEC_RTIC_LIODN_ENTRY(c, 0x10),
|
||||
SET_SEC_RTIC_LIODN_ENTRY(d, 0x10),
|
||||
SET_SEC_DECO_LIODN_ENTRY(0, 0x10, 0x10),
|
||||
SET_SEC_DECO_LIODN_ENTRY(1, 0x10, 0x10),
|
||||
SET_SEC_DECO_LIODN_ENTRY(2, 0x10, 0x10),
|
||||
SET_SEC_DECO_LIODN_ENTRY(3, 0x10, 0x10),
|
||||
SET_SEC_DECO_LIODN_ENTRY(4, 0x10, 0x10),
|
||||
SET_SEC_DECO_LIODN_ENTRY(5, 0x10, 0x10),
|
||||
SET_SEC_DECO_LIODN_ENTRY(6, 0x10, 0x10),
|
||||
SET_SEC_DECO_LIODN_ENTRY(7, 0x10, 0x10),
|
||||
};
|
||||
|
||||
struct smmu_stream_id dev_stream_id[] = {
|
||||
{ 0x100, 0x01, "ETSEC MAC1" },
|
||||
{ 0x104, 0x02, "ETSEC MAC2" },
|
||||
{ 0x108, 0x03, "ETSEC MAC3" },
|
||||
{ 0x10c, 0x04, "PEX1" },
|
||||
{ 0x110, 0x05, "PEX2" },
|
||||
{ 0x114, 0x06, "qDMA" },
|
||||
{ 0x118, 0x07, "SATA" },
|
||||
{ 0x11c, 0x08, "USB3" },
|
||||
{ 0x120, 0x09, "QE" },
|
||||
{ 0x124, 0x0a, "eSDHC" },
|
||||
{ 0x128, 0x0b, "eMA" },
|
||||
{ 0x14c, 0x0c, "2D-ACE" },
|
||||
{ 0x150, 0x0d, "USB2" },
|
||||
{ 0x18c, 0x0e, "DEBUG" },
|
||||
};
|
||||
|
||||
unsigned int get_soc_major_rev(void)
|
||||
{
|
||||
@ -88,3 +125,14 @@ int arch_soc_init(void)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ls102xa_smmu_stream_id_init(void)
|
||||
{
|
||||
ls1021x_config_caam_stream_id(sec_liodn_tbl,
|
||||
ARRAY_SIZE(sec_liodn_tbl));
|
||||
|
||||
ls102xa_config_smmu_stream_id(dev_stream_id,
|
||||
ARRAY_SIZE(dev_stream_id));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
#include <asm/arch/crm_regs.h>
|
||||
#include <dm.h>
|
||||
#include <imx_thermal.h>
|
||||
#include <mmc.h>
|
||||
|
||||
enum ldo_reg {
|
||||
LDO_ARM,
|
||||
@ -355,7 +356,7 @@ __weak int board_mmc_get_env_dev(int devno)
|
||||
return CONFIG_SYS_MMC_ENV_DEV;
|
||||
}
|
||||
|
||||
int mmc_get_env_dev(void)
|
||||
static int mmc_get_boot_dev(void)
|
||||
{
|
||||
struct src *src_regs = (struct src *)SRC_BASE_ADDR;
|
||||
u32 soc_sbmr = readl(&src_regs->sbmr1);
|
||||
@ -370,15 +371,44 @@ int mmc_get_env_dev(void)
|
||||
*/
|
||||
bootsel = (soc_sbmr & 0x000000FF) >> 6;
|
||||
|
||||
/* If not boot from sd/mmc, use default value */
|
||||
/* No boot from sd/mmc */
|
||||
if (bootsel != 1)
|
||||
return CONFIG_SYS_MMC_ENV_DEV;
|
||||
return -1;
|
||||
|
||||
/* BOOT_CFG2[3] and BOOT_CFG2[4] */
|
||||
devno = (soc_sbmr & 0x00001800) >> 11;
|
||||
|
||||
return devno;
|
||||
}
|
||||
|
||||
int mmc_get_env_dev(void)
|
||||
{
|
||||
int devno = mmc_get_boot_dev();
|
||||
|
||||
/* If not boot from sd/mmc, use default value */
|
||||
if (devno < 0)
|
||||
return CONFIG_SYS_MMC_ENV_DEV;
|
||||
|
||||
return board_mmc_get_env_dev(devno);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYS_MMC_ENV_PART
|
||||
__weak int board_mmc_get_env_part(int devno)
|
||||
{
|
||||
return CONFIG_SYS_MMC_ENV_PART;
|
||||
}
|
||||
|
||||
uint mmc_get_env_part(struct mmc *mmc)
|
||||
{
|
||||
int devno = mmc_get_boot_dev();
|
||||
|
||||
/* If not boot from sd/mmc, use default value */
|
||||
if (devno < 0)
|
||||
return CONFIG_SYS_MMC_ENV_PART;
|
||||
|
||||
return board_mmc_get_env_part(devno);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
int board_postclk_init(void)
|
||||
@ -537,3 +567,41 @@ void imx_setup_hdmi(void)
|
||||
writel(reg, &mxc_ccm->chsccdr);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX_BOOTAUX
|
||||
int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
|
||||
{
|
||||
struct src *src_reg;
|
||||
u32 stack, pc;
|
||||
|
||||
if (!boot_private_data)
|
||||
return -EINVAL;
|
||||
|
||||
stack = *(u32 *)boot_private_data;
|
||||
pc = *(u32 *)(boot_private_data + 4);
|
||||
|
||||
/* Set the stack and pc to M4 bootROM */
|
||||
writel(stack, M4_BOOTROM_BASE_ADDR);
|
||||
writel(pc, M4_BOOTROM_BASE_ADDR + 4);
|
||||
|
||||
/* Enable M4 */
|
||||
src_reg = (struct src *)SRC_BASE_ADDR;
|
||||
clrsetbits_le32(&src_reg->scr, SRC_SCR_M4C_NON_SCLR_RST_MASK,
|
||||
SRC_SCR_M4_ENABLE_MASK);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_auxiliary_core_check_up(u32 core_id)
|
||||
{
|
||||
struct src *src_reg = (struct src *)SRC_BASE_ADDR;
|
||||
unsigned val;
|
||||
|
||||
val = readl(&src_reg->scr);
|
||||
|
||||
if (val & SRC_SCR_M4C_NON_SCLR_RST_MASK)
|
||||
return 0; /* assert in reset */
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1067,6 +1067,12 @@ void clock_init(void)
|
||||
#ifdef CONFIG_NAND_MXS
|
||||
clock_enable(CCGR_RAWNAND, 1);
|
||||
#endif
|
||||
|
||||
if (IS_ENABLED(CONFIG_IMX_RDC)) {
|
||||
clock_enable(CCGR_RDC, 1);
|
||||
clock_enable(CCGR_SEMA1, 1);
|
||||
clock_enable(CCGR_SEMA2, 1);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SECURE_BOOT
|
||||
|
||||
@ -12,6 +12,8 @@
|
||||
#include <asm/imx-common/boot_mode.h>
|
||||
#include <asm/imx-common/dma.h>
|
||||
#include <asm/imx-common/hab.h>
|
||||
#include <asm/imx-common/rdc-sema.h>
|
||||
#include <asm/arch/imx-rdc.h>
|
||||
#include <asm/arch/crm_regs.h>
|
||||
#include <dm.h>
|
||||
#include <imx_thermal.h>
|
||||
@ -29,6 +31,65 @@ U_BOOT_DEVICE(imx7_thermal) = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX_RDC
|
||||
/*
|
||||
* In current design, if any peripheral was assigned to both A7 and M4,
|
||||
* it will receive ipg_stop or ipg_wait when any of the 2 platforms enter
|
||||
* low power mode. So M4 sleep will cause some peripherals fail to work
|
||||
* at A7 core side. At default, all resources are in domain 0 - 3.
|
||||
*
|
||||
* There are 26 peripherals impacted by this IC issue:
|
||||
* SIM2(sim2/emvsim2)
|
||||
* SIM1(sim1/emvsim1)
|
||||
* UART1/UART2/UART3/UART4/UART5/UART6/UART7
|
||||
* SAI1/SAI2/SAI3
|
||||
* WDOG1/WDOG2/WDOG3/WDOG4
|
||||
* GPT1/GPT2/GPT3/GPT4
|
||||
* PWM1/PWM2/PWM3/PWM4
|
||||
* ENET1/ENET2
|
||||
* Software Workaround:
|
||||
* Here we setup some resources to domain 0 where M4 codes will move
|
||||
* the M4 out of this domain. Then M4 is not able to access them any longer.
|
||||
* This is a workaround for ic issue. So the peripherals are not shared
|
||||
* by them. This way requires the uboot implemented the RDC driver and
|
||||
* set the 26 IPs above to domain 0 only. M4 code will assign resource
|
||||
* to its own domain, if it want to use the resource.
|
||||
*/
|
||||
static rdc_peri_cfg_t const resources[] = {
|
||||
(RDC_PER_SIM1 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_SIM2 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_UART1 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_UART2 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_UART3 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_UART4 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_UART5 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_UART6 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_UART7 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_SAI1 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_SAI2 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_SAI3 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_WDOG1 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_WDOG2 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_WDOG3 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_WDOG4 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_GPT1 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_GPT2 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_GPT3 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_GPT4 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_PWM1 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_PWM2 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_PWM3 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_PWM4 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_ENET1 | RDC_DOMAIN(0)),
|
||||
(RDC_PER_ENET2 | RDC_DOMAIN(0)),
|
||||
};
|
||||
|
||||
static void isolate_resource(void)
|
||||
{
|
||||
imx_rdc_setup_peripherals(resources, ARRAY_SIZE(resources));
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SECURE_BOOT)
|
||||
struct imx_sec_config_fuse_t const imx_sec_config_fuse = {
|
||||
.bank = 1,
|
||||
@ -163,6 +224,9 @@ int arch_cpu_init(void)
|
||||
mxs_dma_init();
|
||||
#endif
|
||||
|
||||
if (IS_ENABLED(CONFIG_IMX_RDC))
|
||||
isolate_resource();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -211,6 +275,42 @@ void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX_BOOTAUX
|
||||
int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
|
||||
{
|
||||
u32 stack, pc;
|
||||
struct src *src_reg = (struct src *)SRC_BASE_ADDR;
|
||||
|
||||
if (!boot_private_data)
|
||||
return 1;
|
||||
|
||||
stack = *(u32 *)boot_private_data;
|
||||
pc = *(u32 *)(boot_private_data + 4);
|
||||
|
||||
/* Set the stack and pc to M4 bootROM */
|
||||
writel(stack, M4_BOOTROM_BASE_ADDR);
|
||||
writel(pc, M4_BOOTROM_BASE_ADDR + 4);
|
||||
|
||||
/* Enable M4 */
|
||||
clrsetbits_le32(&src_reg->m4rcr, SRC_M4RCR_M4C_NON_SCLR_RST_MASK,
|
||||
SRC_M4RCR_ENABLE_M4_MASK);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_auxiliary_core_check_up(u32 core_id)
|
||||
{
|
||||
uint32_t val;
|
||||
struct src *src_reg = (struct src *)SRC_BASE_ADDR;
|
||||
|
||||
val = readl(&src_reg->m4rcr);
|
||||
if (val & 0x00000001)
|
||||
return 0; /* assert in reset */
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
void set_wdog_reset(struct wdog_regs *wdog)
|
||||
{
|
||||
u32 reg = readw(&wdog->wcr);
|
||||
|
||||
@ -111,8 +111,6 @@ void save_omap_boot_params(void)
|
||||
(boot_device <= MMC_BOOT_DEVICES_END)) {
|
||||
switch (boot_device) {
|
||||
case BOOT_DEVICE_MMC1:
|
||||
boot_mode = MMCSD_MODE_FS;
|
||||
break;
|
||||
case BOOT_DEVICE_MMC2:
|
||||
boot_mode = MMCSD_MODE_RAW;
|
||||
break;
|
||||
|
||||
@ -110,7 +110,7 @@ config TARGET_OMAP3_CAIRO
|
||||
select DM_GPIO
|
||||
|
||||
config TARGET_SNIPER
|
||||
bool "Sniper"
|
||||
bool "LG Optimus Black"
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
|
||||
@ -31,6 +31,9 @@
|
||||
#define SUNXI_EHCI_AHB_INCRX_ALIGN_EN (1 << 8)
|
||||
#define SUNXI_EHCI_ULPI_BYPASS_EN (1 << 0)
|
||||
|
||||
#define REG_PHY_UNK_H3 0x420
|
||||
#define REG_PMU_UNK_H3 0x810
|
||||
|
||||
static struct sunxi_usb_phy {
|
||||
int usb_rst_mask;
|
||||
int gpio_vbus;
|
||||
@ -39,19 +42,30 @@ static struct sunxi_usb_phy {
|
||||
int id;
|
||||
int init_count;
|
||||
int power_on_count;
|
||||
int base;
|
||||
} sunxi_usb_phy[] = {
|
||||
{
|
||||
.usb_rst_mask = CCM_USB_CTRL_PHY0_RST | CCM_USB_CTRL_PHY0_CLK,
|
||||
.id = 0,
|
||||
.base = SUNXI_USB0_BASE,
|
||||
},
|
||||
{
|
||||
.usb_rst_mask = CCM_USB_CTRL_PHY1_RST | CCM_USB_CTRL_PHY1_CLK,
|
||||
.id = 1,
|
||||
.base = SUNXI_USB1_BASE,
|
||||
},
|
||||
#if CONFIG_SUNXI_USB_PHYS >= 3
|
||||
{
|
||||
.usb_rst_mask = CCM_USB_CTRL_PHY2_RST | CCM_USB_CTRL_PHY2_CLK,
|
||||
.id = 2,
|
||||
.base = SUNXI_USB2_BASE,
|
||||
},
|
||||
#endif
|
||||
#if CONFIG_SUNXI_USB_PHYS >= 4
|
||||
{
|
||||
.usb_rst_mask = CCM_USB_CTRL_PHY3_RST | CCM_USB_CTRL_PHY3_CLK,
|
||||
.id = 3,
|
||||
.base = SUNXI_USB3_BASE,
|
||||
}
|
||||
#endif
|
||||
};
|
||||
@ -114,6 +128,15 @@ static void usb_phy_write(struct sunxi_usb_phy *phy, int addr,
|
||||
}
|
||||
}
|
||||
|
||||
#if defined CONFIG_MACH_SUN8I_H3
|
||||
static void sunxi_usb_phy_config(struct sunxi_usb_phy *phy)
|
||||
{
|
||||
if (phy->id == 0)
|
||||
clrbits_le32(SUNXI_USBPHY_BASE + REG_PHY_UNK_H3, 0x01);
|
||||
|
||||
clrbits_le32(phy->base + REG_PMU_UNK_H3, 0x02);
|
||||
}
|
||||
#else
|
||||
static void sunxi_usb_phy_config(struct sunxi_usb_phy *phy)
|
||||
{
|
||||
/* The following comments are machine
|
||||
@ -136,16 +159,14 @@ static void sunxi_usb_phy_config(struct sunxi_usb_phy *phy)
|
||||
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void sunxi_usb_phy_passby(int index, int enable)
|
||||
static void sunxi_usb_phy_passby(struct sunxi_usb_phy *phy, int enable)
|
||||
{
|
||||
unsigned long bits = 0;
|
||||
void *addr;
|
||||
|
||||
if (index == 1)
|
||||
addr = (void *)SUNXI_USB1_BASE + SUNXI_USB_PMU_IRQ_ENABLE;
|
||||
else
|
||||
addr = (void *)SUNXI_USB2_BASE + SUNXI_USB_PMU_IRQ_ENABLE;
|
||||
addr = (void *)phy->base + SUNXI_USB_PMU_IRQ_ENABLE;
|
||||
|
||||
bits = SUNXI_EHCI_AHB_ICHR8_EN |
|
||||
SUNXI_EHCI_AHB_INCR4_BURST_EN |
|
||||
@ -181,7 +202,7 @@ void sunxi_usb_phy_init(int index)
|
||||
sunxi_usb_phy_config(phy);
|
||||
|
||||
if (phy->id != 0)
|
||||
sunxi_usb_phy_passby(index, SUNXI_USB_PASSBY_EN);
|
||||
sunxi_usb_phy_passby(phy, SUNXI_USB_PASSBY_EN);
|
||||
}
|
||||
|
||||
void sunxi_usb_phy_exit(int index)
|
||||
@ -194,7 +215,7 @@ void sunxi_usb_phy_exit(int index)
|
||||
return;
|
||||
|
||||
if (phy->id != 0)
|
||||
sunxi_usb_phy_passby(index, !SUNXI_USB_PASSBY_EN);
|
||||
sunxi_usb_phy_passby(phy, !SUNXI_USB_PASSBY_EN);
|
||||
|
||||
clrbits_le32(&ccm->usb_clk_cfg, phy->usb_rst_mask);
|
||||
}
|
||||
|
||||
@ -14,6 +14,9 @@
|
||||
#ifdef CONFIG_FSL_ESDHC
|
||||
#include <fsl_esdhc.h>
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_DPAA_FMAN
|
||||
#include <fsl_fman.h>
|
||||
#endif
|
||||
#ifdef CONFIG_MP
|
||||
#include <asm/arch/mp.h>
|
||||
#endif
|
||||
@ -204,4 +207,8 @@ void ft_cpu_setup(void *blob, bd_t *bd)
|
||||
#ifdef CONFIG_FSL_LSCH3
|
||||
fdt_fixup_smmu(blob);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_DPAA_FMAN
|
||||
fdt_fixup_fman_firmware(blob);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -213,6 +213,24 @@ static void erratum_a009929(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* This erratum requires setting a value to eddrtqcr1 to optimal
|
||||
* the DDR performance. The eddrtqcr1 register is in SCFG space
|
||||
* of LS1043A and the offset is 0x157_020c.
|
||||
*/
|
||||
#if defined(CONFIG_SYS_FSL_ERRATUM_A009660) \
|
||||
&& defined(CONFIG_SYS_FSL_ERRATUM_A008514)
|
||||
#error A009660 and A008514 can not be both enabled.
|
||||
#endif
|
||||
|
||||
static void erratum_a009660(void)
|
||||
{
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A009660
|
||||
u32 *eddrtqcr1 = (void *)CONFIG_SYS_FSL_SCFG_ADDR + 0x20c;
|
||||
out_be32(eddrtqcr1, 0x63b20042);
|
||||
#endif
|
||||
}
|
||||
|
||||
void fsl_lsch2_early_init_f(void)
|
||||
{
|
||||
struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
|
||||
@ -238,6 +256,7 @@ void fsl_lsch2_early_init_f(void)
|
||||
|
||||
/* Erratum */
|
||||
erratum_a009929();
|
||||
erratum_a009660();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@ -100,7 +100,7 @@ cpu_init_crit:
|
||||
mrc p15, 0, r0, c1, c0, 0
|
||||
bic r0, r0, #0x00003300 @ clear bits 13:12, 9:8 (--VI --RS)
|
||||
bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM)
|
||||
orr r0, r0, #0x00000002 @ set bit 2 (A) Align
|
||||
orr r0, r0, #0x00000002 @ set bit 1 (A) Align
|
||||
mcr p15, 0, r0, c1, c0, 0
|
||||
|
||||
mov pc, lr /* back to my caller */
|
||||
|
||||
@ -112,7 +112,7 @@ cpu_init_crit:
|
||||
bic r0, r0, #0x00002000 @ clear bit 13 (X)
|
||||
bic r0, r0, #0x0000000f @ clear bits 3-0 (WCAM)
|
||||
orr r0, r0, #0x00001000 @ set bit 12 (I) Icache
|
||||
orr r0, r0, #0x00000002 @ set bit 2 (A) Align
|
||||
orr r0, r0, #0x00000002 @ set bit 1 (A) Align
|
||||
mcr p15,0,r0,c1,c0
|
||||
|
||||
/*
|
||||
|
||||
@ -96,7 +96,8 @@ dtb-$(CONFIG_TARGET_DRA7XX_EVM) += dra72-evm.dtb dra7-evm.dtb
|
||||
dtb-$(CONFIG_TARGET_BEAGLE_X15) += am57xx-beagle-x15.dtb
|
||||
dtb-$(CONFIG_TARGET_STV0991) += stv0991.dtb
|
||||
|
||||
dtb-$(CONFIG_LS102XA) += ls1021a-qds.dtb \
|
||||
dtb-$(CONFIG_LS102XA) += ls1021a-qds-duart.dtb \
|
||||
ls1021a-qds-lpuart.dtb \
|
||||
ls1021a-twr-duart.dtb ls1021a-twr-lpuart.dtb
|
||||
dtb-$(CONFIG_FSL_LSCH3) += fsl-ls2080a-qds.dtb \
|
||||
fsl-ls2080a-rdb.dtb
|
||||
|
||||
16
arch/arm/dts/ls1021a-qds-duart.dts
Normal file
16
arch/arm/dts/ls1021a-qds-duart.dts
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Freescale ls1021a QDS board common device tree source
|
||||
*
|
||||
* Copyright 2013-2015 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "ls1021a-qds.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = &uart0;
|
||||
};
|
||||
};
|
||||
16
arch/arm/dts/ls1021a-qds-lpuart.dts
Normal file
16
arch/arm/dts/ls1021a-qds-lpuart.dts
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Freescale ls1021a QDS board common device tree source
|
||||
*
|
||||
* Copyright 2013-2015 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "ls1021a-qds.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = &lpuart0;
|
||||
};
|
||||
};
|
||||
@ -1,12 +1,11 @@
|
||||
/*
|
||||
* Freescale ls1021a QDS board device tree source
|
||||
* Freescale ls1021a QDS board common device tree source
|
||||
*
|
||||
* Copyright 2013-2015 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "ls1021a.dtsi"
|
||||
|
||||
/ {
|
||||
@ -82,8 +82,10 @@
|
||||
|
||||
&qspi {
|
||||
status = "okay";
|
||||
u-boot,dm-pre-reloc;
|
||||
|
||||
flash0: n25q00@0 {
|
||||
u-boot,dm-pre-reloc;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "n25q00";
|
||||
|
||||
@ -84,8 +84,10 @@
|
||||
|
||||
&qspi {
|
||||
status = "okay";
|
||||
u-boot,dm-pre-reloc;
|
||||
|
||||
flash0: n25q00@0 {
|
||||
u-boot,dm-pre-reloc;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "n25q00";
|
||||
|
||||
@ -18,7 +18,8 @@
|
||||
i2c4 = "/i2c@7000c700";
|
||||
sdhci0 = "/sdhci@78000600";
|
||||
sdhci1 = "/sdhci@78000400";
|
||||
usb0 = "/usb@7d008000";
|
||||
usb0 = "/usb@7d000000";
|
||||
usb1 = "/usb@7d008000";
|
||||
};
|
||||
|
||||
memory {
|
||||
@ -67,6 +68,12 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
usb@7d000000 {
|
||||
status = "okay";
|
||||
dr_mode = "otg";
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
usb@7d008000 {
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
|
||||
@ -325,6 +325,19 @@
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg = <0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
718
arch/arm/dts/tegra124-nyan.dtsi
Normal file
718
arch/arm/dts/tegra124-nyan.dtsi
Normal file
@ -0,0 +1,718 @@
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include "tegra124.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
rtc0 = "/i2c@0,7000d000/pmic@40";
|
||||
rtc1 = "/rtc@0,7000e000";
|
||||
serial0 = &uarta;
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x80000000 0x80000000>;
|
||||
};
|
||||
|
||||
host1x@50000000 {
|
||||
hdmi@54280000 {
|
||||
status = "okay";
|
||||
|
||||
vdd-supply = <&vdd_3v3_hdmi>;
|
||||
pll-supply = <&vdd_hdmi_pll>;
|
||||
hdmi-supply = <&vdd_5v0_hdmi>;
|
||||
|
||||
nvidia,ddc-i2c-bus = <&hdmi_ddc>;
|
||||
nvidia,hpd-gpio =
|
||||
<&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
sor@54540000 {
|
||||
status = "okay";
|
||||
|
||||
nvidia,dpaux = <&dpaux>;
|
||||
nvidia,panel = <&panel>;
|
||||
};
|
||||
|
||||
dpaux@545c0000 {
|
||||
vdd-supply = <&vdd_3v3_panel>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
serial@70006000 {
|
||||
/* Debug connector on the bottom of the board near SD card. */
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
|
||||
acodec: audio-codec@10 {
|
||||
compatible = "maxim,max98090";
|
||||
reg = <0x10>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
temperature-sensor@4c {
|
||||
compatible = "ti,tmp451";
|
||||
reg = <0x4c>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
|
||||
trackpad@15 {
|
||||
compatible = "elan,ekth3000";
|
||||
reg = <0x15>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <TEGRA_GPIO(W, 3) IRQ_TYPE_EDGE_FALLING>;
|
||||
wakeup-source;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
tpm@20 {
|
||||
compatible = "infineon,slb9645tt";
|
||||
reg = <0x20>;
|
||||
};
|
||||
};
|
||||
|
||||
hdmi_ddc: i2c@7000c700 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
pmic: pmic@40 {
|
||||
compatible = "ams,as3722";
|
||||
reg = <0x40>;
|
||||
interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
ams,system-power-controller;
|
||||
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&as3722_default>;
|
||||
|
||||
as3722_default: pinmux {
|
||||
gpio0 {
|
||||
pins = "gpio0";
|
||||
function = "gpio";
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
gpio1 {
|
||||
pins = "gpio1";
|
||||
function = "gpio";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
gpio2_4_7 {
|
||||
pins = "gpio2", "gpio4", "gpio7";
|
||||
function = "gpio";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
gpio3_6 {
|
||||
pins = "gpio3", "gpio6";
|
||||
bias-high-impedance;
|
||||
};
|
||||
|
||||
gpio5 {
|
||||
pins = "gpio5";
|
||||
function = "clk32k-out";
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
regulators {
|
||||
vsup-sd2-supply = <&vdd_5v0_sys>;
|
||||
vsup-sd3-supply = <&vdd_5v0_sys>;
|
||||
vsup-sd4-supply = <&vdd_5v0_sys>;
|
||||
vsup-sd5-supply = <&vdd_5v0_sys>;
|
||||
vin-ldo0-supply = <&vdd_1v35_lp0>;
|
||||
vin-ldo1-6-supply = <&vdd_3v3_run>;
|
||||
vin-ldo2-5-7-supply = <&vddio_1v8>;
|
||||
vin-ldo3-4-supply = <&vdd_3v3_sys>;
|
||||
vin-ldo9-10-supply = <&vdd_5v0_sys>;
|
||||
vin-ldo11-supply = <&vdd_3v3_run>;
|
||||
|
||||
vdd_cpu: sd0 {
|
||||
regulator-name = "+VDD_CPU_AP";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-min-microamp = <3500000>;
|
||||
regulator-max-microamp = <3500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
ams,ext-control = <2>;
|
||||
};
|
||||
|
||||
sd1 {
|
||||
regulator-name = "+VDD_CORE";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-min-microamp = <2500000>;
|
||||
regulator-max-microamp = <4000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
ams,ext-control = <1>;
|
||||
};
|
||||
|
||||
vdd_1v35_lp0: sd2 {
|
||||
regulator-name = "+1.35V_LP0(sd2)";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
sd3 {
|
||||
regulator-name = "+1.35V_LP0(sd3)";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
vdd_1v05_run: sd4 {
|
||||
regulator-name = "+1.05V_RUN";
|
||||
regulator-min-microvolt = <1050000>;
|
||||
regulator-max-microvolt = <1050000>;
|
||||
};
|
||||
|
||||
vddio_1v8: sd5 {
|
||||
regulator-name = "+1.8V_VDDIO";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
sd6 {
|
||||
regulator-name = "+VDD_GPU_AP";
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-min-microamp = <3500000>;
|
||||
regulator-max-microamp = <3500000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo0 {
|
||||
regulator-name = "+1.05V_RUN_AVDD";
|
||||
regulator-min-microvolt = <1050000>;
|
||||
regulator-max-microvolt = <1050000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
ams,ext-control = <1>;
|
||||
};
|
||||
|
||||
ldo1 {
|
||||
regulator-name = "+1.8V_RUN_CAM";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo2 {
|
||||
regulator-name = "+1.2V_GEN_AVDD";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo3 {
|
||||
regulator-name = "+1.00V_LP0_VDD_RTC";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
ams,enable-tracking;
|
||||
};
|
||||
|
||||
vdd_run_cam: ldo4 {
|
||||
regulator-name = "+3.3V_RUN_CAM";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo5 {
|
||||
regulator-name = "+1.2V_RUN_CAM_FRONT";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
vddio_sdmmc3: ldo6 {
|
||||
regulator-name = "+VDDIO_SDMMC3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
ldo7 {
|
||||
regulator-name = "+1.05V_RUN_CAM_REAR";
|
||||
regulator-min-microvolt = <1050000>;
|
||||
regulator-max-microvolt = <1050000>;
|
||||
};
|
||||
|
||||
ldo9 {
|
||||
regulator-name = "+2.8V_RUN_TOUCH";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo10 {
|
||||
regulator-name = "+2.8V_RUN_CAM_AF";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo11 {
|
||||
regulator-name = "+1.8V_RUN_VPP_FUSE";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
spi@7000d400 {
|
||||
status = "okay";
|
||||
|
||||
cros_ec: cros-ec@0 {
|
||||
compatible = "google,cros-ec-spi";
|
||||
spi-max-frequency = <3000000>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <TEGRA_GPIO(C, 7) IRQ_TYPE_LEVEL_LOW>;
|
||||
reg = <0>;
|
||||
|
||||
google,cros-ec-spi-msg-delay = <2000>;
|
||||
|
||||
i2c-tunnel {
|
||||
compatible = "google,cros-ec-i2c-tunnel";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
google,remote-bus = <0>;
|
||||
|
||||
charger: bq24735@9 {
|
||||
compatible = "ti,bq24735";
|
||||
reg = <0x9>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <TEGRA_GPIO(J, 0)
|
||||
GPIO_ACTIVE_HIGH>;
|
||||
ti,ac-detect-gpios = <&gpio
|
||||
TEGRA_GPIO(J, 0)
|
||||
GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
battery: sbs-battery@b {
|
||||
compatible = "sbs,sbs-battery";
|
||||
reg = <0xb>;
|
||||
sbs,i2c-retry-count = <2>;
|
||||
sbs,poll-retry-count = <10>;
|
||||
power-supplies = <&charger>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
spi@7000da00 {
|
||||
status = "okay";
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
flash@0 {
|
||||
compatible = "winbond,w25q32dw";
|
||||
spi-max-frequency = <25000000>;
|
||||
reg = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
pmc@7000e400 {
|
||||
nvidia,invert-interrupt;
|
||||
nvidia,suspend-mode = <0>;
|
||||
nvidia,cpu-pwr-good-time = <500>;
|
||||
nvidia,cpu-pwr-off-time = <300>;
|
||||
nvidia,core-pwr-good-time = <641 3845>;
|
||||
nvidia,core-pwr-off-time = <61036>;
|
||||
nvidia,core-power-req-active-high;
|
||||
nvidia,sys-clock-req-active-high;
|
||||
};
|
||||
|
||||
hda@70030000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdhci0_pwrseq: sdhci0_pwrseq {
|
||||
compatible = "mmc-pwrseq-simple";
|
||||
|
||||
reset-gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
sdhci@700b0000 { /* WiFi/BT on this bus */
|
||||
status = "okay";
|
||||
power-gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_HIGH>;
|
||||
bus-width = <4>;
|
||||
no-1-8-v;
|
||||
non-removable;
|
||||
mmc-pwrseq = <&sdhci0_pwrseq>;
|
||||
vmmc-supply = <&vdd_3v3_lp0>;
|
||||
vqmmc-supply = <&vddio_1v8>;
|
||||
keep-power-in-suspend;
|
||||
};
|
||||
|
||||
sdhci@700b0400 { /* SD Card on this bus */
|
||||
status = "okay";
|
||||
cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
|
||||
power-gpios = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
|
||||
wp-gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
|
||||
bus-width = <4>;
|
||||
no-1-8-v;
|
||||
vqmmc-supply = <&vddio_sdmmc3>;
|
||||
};
|
||||
|
||||
sdhci@700b0600 { /* eMMC on this bus */
|
||||
status = "okay";
|
||||
bus-width = <8>;
|
||||
no-1-8-v;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
/* CPU DFLL clock */
|
||||
clock@70110000 {
|
||||
status = "disabled";
|
||||
vdd-cpu-supply = <&vdd_cpu>;
|
||||
nvidia,i2c-fs-rate = <400000>;
|
||||
};
|
||||
|
||||
ahub@70300000 {
|
||||
i2s@70301100 {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
usb@7d000000 { /* Rear external USB port. */
|
||||
status = "okay";
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
usb-phy@7d000000 {
|
||||
status = "okay";
|
||||
vbus-supply = <&vdd_usb1_vbus>;
|
||||
};
|
||||
|
||||
usb@7d004000 { /* Internal webcam. */
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
usb-phy@7d004000 {
|
||||
status = "okay";
|
||||
vbus-supply = <&vdd_run_cam>;
|
||||
};
|
||||
|
||||
usb@7d008000 { /* Left external USB port. */
|
||||
status = "okay";
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
usb-phy@7d008000 {
|
||||
status = "okay";
|
||||
vbus-supply = <&vdd_usb3_vbus>;
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
|
||||
enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
|
||||
power-supply = <&vdd_led>;
|
||||
pwms = <&pwm 1 1000000>;
|
||||
|
||||
default-brightness-level = <224>;
|
||||
brightness-levels =
|
||||
< 0 1 2 3 4 5 6 7
|
||||
8 9 10 11 12 13 14 15
|
||||
16 17 18 19 20 21 22 23
|
||||
24 25 26 27 28 29 30 31
|
||||
32 33 34 35 36 37 38 39
|
||||
40 41 42 43 44 45 46 47
|
||||
48 49 50 51 52 53 54 55
|
||||
56 57 58 59 60 61 62 63
|
||||
64 65 66 67 68 69 70 71
|
||||
72 73 74 75 76 77 78 79
|
||||
80 81 82 83 84 85 86 87
|
||||
88 89 90 91 92 93 94 95
|
||||
96 97 98 99 100 101 102 103
|
||||
104 105 106 107 108 109 110 111
|
||||
112 113 114 115 116 117 118 119
|
||||
120 121 122 123 124 125 126 127
|
||||
128 129 130 131 132 133 134 135
|
||||
136 137 138 139 140 141 142 143
|
||||
144 145 146 147 148 149 150 151
|
||||
152 153 154 155 156 157 158 159
|
||||
160 161 162 163 164 165 166 167
|
||||
168 169 170 171 172 173 174 175
|
||||
176 177 178 179 180 181 182 183
|
||||
184 185 186 187 188 189 190 191
|
||||
192 193 194 195 196 197 198 199
|
||||
200 201 202 203 204 205 206 207
|
||||
208 209 210 211 212 213 214 215
|
||||
216 217 218 219 220 221 222 223
|
||||
224 225 226 227 228 229 230 231
|
||||
232 233 234 235 236 237 238 239
|
||||
240 241 242 243 244 245 246 247
|
||||
248 249 250 251 252 253 254 255
|
||||
256>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg = <0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
cpus {
|
||||
cpu@0 {
|
||||
vdd-cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
};
|
||||
|
||||
cpus {
|
||||
cpu@0 {
|
||||
vdd-cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
lid {
|
||||
label = "Lid";
|
||||
gpios = <&gpio TEGRA_GPIO(R, 4) GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <5>;
|
||||
linux,code = <KEY_RESERVED>;
|
||||
debounce-interval = <1>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
power {
|
||||
label = "Power";
|
||||
gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_POWER>;
|
||||
debounce-interval = <30>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
vdd_mux: regulator@0 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <0>;
|
||||
regulator-name = "+VDD_MUX";
|
||||
regulator-min-microvolt = <12000000>;
|
||||
regulator-max-microvolt = <12000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
vdd_5v0_sys: regulator@1 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <1>;
|
||||
regulator-name = "+5V_SYS";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
vin-supply = <&vdd_mux>;
|
||||
};
|
||||
|
||||
vdd_3v3_sys: regulator@2 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <2>;
|
||||
regulator-name = "+3.3V_SYS";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
vin-supply = <&vdd_mux>;
|
||||
};
|
||||
|
||||
vdd_3v3_run: regulator@3 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <3>;
|
||||
regulator-name = "+3.3V_RUN";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
gpio = <&pmic 1 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
vin-supply = <&vdd_3v3_sys>;
|
||||
};
|
||||
|
||||
vdd_3v3_hdmi: regulator@4 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <4>;
|
||||
regulator-name = "+3.3V_AVDD_HDMI_AP_GATED";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vdd_3v3_run>;
|
||||
};
|
||||
|
||||
vdd_led: regulator@5 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <5>;
|
||||
regulator-name = "+VDD_LED";
|
||||
gpio = <&gpio TEGRA_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
vin-supply = <&vdd_mux>;
|
||||
};
|
||||
|
||||
vdd_5v0_ts: regulator@6 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <6>;
|
||||
regulator-name = "+5V_VDD_TS_SW";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-boot-on;
|
||||
gpio = <&gpio TEGRA_GPIO(K, 1) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
vin-supply = <&vdd_5v0_sys>;
|
||||
};
|
||||
|
||||
vdd_usb1_vbus: regulator@7 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <7>;
|
||||
regulator-name = "+5V_USB_HS";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
gpio-open-drain;
|
||||
vin-supply = <&vdd_5v0_sys>;
|
||||
};
|
||||
|
||||
vdd_usb3_vbus: regulator@8 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <8>;
|
||||
regulator-name = "+5V_USB_SS";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
gpio-open-drain;
|
||||
vin-supply = <&vdd_5v0_sys>;
|
||||
};
|
||||
|
||||
vdd_3v3_panel: regulator@9 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <9>;
|
||||
regulator-name = "+3.3V_PANEL";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&pmic 4 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
vin-supply = <&vdd_3v3_run>;
|
||||
};
|
||||
|
||||
vdd_3v3_lp0: regulator@10 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <10>;
|
||||
regulator-name = "+3.3V_LP0";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
/*
|
||||
* TODO: find a way to wire this up with the USB EHCI
|
||||
* controllers so that it can be enabled on demand.
|
||||
*/
|
||||
regulator-always-on;
|
||||
gpio = <&pmic 2 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
vin-supply = <&vdd_3v3_sys>;
|
||||
};
|
||||
|
||||
vdd_hdmi_pll: regulator@11 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <11>;
|
||||
regulator-name = "+1.05V_RUN_AVDD_HDMI_PLL";
|
||||
regulator-min-microvolt = <1050000>;
|
||||
regulator-max-microvolt = <1050000>;
|
||||
gpio = <&gpio TEGRA_GPIO(H, 7) GPIO_ACTIVE_LOW>;
|
||||
vin-supply = <&vdd_1v05_run>;
|
||||
};
|
||||
|
||||
vdd_5v0_hdmi: regulator@12 {
|
||||
compatible = "regulator-fixed";
|
||||
reg = <12>;
|
||||
regulator-name = "+5V_HDMI_CON";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
vin-supply = <&vdd_5v0_sys>;
|
||||
};
|
||||
};
|
||||
|
||||
sound {
|
||||
nvidia,audio-routing =
|
||||
"Headphones", "HPR",
|
||||
"Headphones", "HPL",
|
||||
"Speakers", "SPKR",
|
||||
"Speakers", "SPKL",
|
||||
"Mic Jack", "MICBIAS",
|
||||
"DMICL", "Int Mic",
|
||||
"DMICR", "Int Mic",
|
||||
"IN34", "Mic Jack";
|
||||
|
||||
nvidia,i2s-controller = <&tegra_i2s1>;
|
||||
nvidia,audio-codec = <&acodec>;
|
||||
|
||||
clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
|
||||
<&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
|
||||
<&tegra_car TEGRA124_CLK_EXTERN1>;
|
||||
clock-names = "pll_a", "pll_a_out0", "mclk";
|
||||
|
||||
nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(I, 7) GPIO_ACTIVE_HIGH>;
|
||||
nvidia,mic-det-gpios =
|
||||
<&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
gpio-restart {
|
||||
compatible = "gpio-restart";
|
||||
gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
|
||||
priority = <200>;
|
||||
};
|
||||
};
|
||||
|
||||
#include "cros-ec-keyboard.dtsi"
|
||||
@ -93,4 +93,18 @@
|
||||
status = "okay";
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg = <0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@ -1,14 +1,18 @@
|
||||
#include <dt-bindings/clock/tegra124-car.h>
|
||||
#include <dt-bindings/gpio/tegra-gpio.h>
|
||||
#include <dt-bindings/memory/tegra124-mc.h>
|
||||
#include <dt-bindings/pinctrl/pinctrl-tegra.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/pinctrl/pinctrl-tegra-xusb.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/reset/tegra124-car.h>
|
||||
#include <dt-bindings/thermal/tegra124-soctherm.h>
|
||||
|
||||
#include "skeleton.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "nvidia,tegra124";
|
||||
interrupt-parent = <&gic>;
|
||||
interrupt-parent = <&lic>;
|
||||
|
||||
|
||||
pcie-controller@01003000 {
|
||||
compatible = "nvidia,tegra124-pcie";
|
||||
@ -100,6 +104,8 @@
|
||||
resets = <&tegra_car 27>;
|
||||
reset-names = "dc";
|
||||
|
||||
iommus = <&mc TEGRA_SWGROUP_DC>;
|
||||
|
||||
nvidia,head = <0>;
|
||||
};
|
||||
|
||||
@ -113,6 +119,8 @@
|
||||
resets = <&tegra_car 26>;
|
||||
reset-names = "dc";
|
||||
|
||||
iommus = <&mc TEGRA_SWGROUP_DCB>;
|
||||
|
||||
nvidia,head = <1>;
|
||||
};
|
||||
|
||||
@ -165,49 +173,68 @@
|
||||
<0x50046000 0x2000>;
|
||||
interrupts = <GIC_PPI 9
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
interrupt-parent = <&gic>;
|
||||
};
|
||||
|
||||
gpu@57000000 {
|
||||
compatible = "nvidia,gk20a";
|
||||
reg = <0x57000000 0x01000000>,
|
||||
<0x58000000 0x01000000>;
|
||||
interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "stall", "nonstall";
|
||||
clocks = <&tegra_car TEGRA124_CLK_GPU>,
|
||||
<&tegra_car TEGRA124_CLK_PLL_P_OUT5>;
|
||||
clock-names = "gpu", "pwr";
|
||||
resets = <&tegra_car 184>;
|
||||
reset-names = "gpu";
|
||||
|
||||
iommus = <&mc TEGRA_SWGROUP_GPU>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lic: interrupt-controller@60004000 {
|
||||
compatible = "nvidia,tegra124-ictlr", "nvidia,tegra30-ictlr";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
interrupt-parent = <&gic>;
|
||||
};
|
||||
|
||||
timer@60005000 {
|
||||
compatible = "nvidia,tegra124-timer", "nvidia,tegra20-timer";
|
||||
reg = <0x60005000 0x400>;
|
||||
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_TIMER>;
|
||||
};
|
||||
|
||||
tegra_car: clock@60006000 {
|
||||
compatible = "nvidia,tegra124-car";
|
||||
reg = <0x60006000 0x1000>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
nvidia,external-memory-controller = <&emc>;
|
||||
};
|
||||
|
||||
apbdma: dma@60020000 {
|
||||
compatible = "nvidia,tegra124-apbdma", "nvidia,tegra148-apbdma";
|
||||
reg = <0x60020000 0x1400>;
|
||||
interrupts = <0 104 0x04
|
||||
0 105 0x04
|
||||
0 106 0x04
|
||||
0 107 0x04
|
||||
0 108 0x04
|
||||
0 109 0x04
|
||||
0 110 0x04
|
||||
0 111 0x04
|
||||
0 112 0x04
|
||||
0 113 0x04
|
||||
0 114 0x04
|
||||
0 115 0x04
|
||||
0 116 0x04
|
||||
0 117 0x04
|
||||
0 118 0x04
|
||||
0 119 0x04
|
||||
0 128 0x04
|
||||
0 129 0x04
|
||||
0 130 0x04
|
||||
0 131 0x04
|
||||
0 132 0x04
|
||||
0 133 0x04
|
||||
0 134 0x04
|
||||
0 135 0x04
|
||||
0 136 0x04
|
||||
0 137 0x04
|
||||
0 138 0x04
|
||||
0 139 0x04
|
||||
0 140 0x04
|
||||
0 141 0x04
|
||||
0 142 0x04
|
||||
0 143 0x04>;
|
||||
flow-controller@60007000 {
|
||||
compatible = "nvidia,tegra124-flowctrl";
|
||||
reg = <0x60007000 0x1000>;
|
||||
};
|
||||
|
||||
actmon@6000c800 {
|
||||
compatible = "nvidia,tegra124-actmon";
|
||||
reg = <0x6000c800 0x400>;
|
||||
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_ACTMON>,
|
||||
<&tegra_car TEGRA124_CLK_EMC>;
|
||||
clock-names = "actmon", "emc";
|
||||
resets = <&tegra_car 119>;
|
||||
reset-names = "actmon";
|
||||
};
|
||||
|
||||
gpio: gpio@6000d000 {
|
||||
@ -225,68 +252,73 @@
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
/*
|
||||
gpio-ranges = <&pinmux 0 0 251>;
|
||||
*/
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000c000 0x100>;
|
||||
interrupts = <0 38 0x04>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 12>;
|
||||
status = "disabled";
|
||||
apbdma: dma@60020000 {
|
||||
compatible = "nvidia,tegra124-apbdma", "nvidia,tegra148-apbdma";
|
||||
reg = <0x60020000 0x1400>;
|
||||
interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_APBDMA>;
|
||||
resets = <&tegra_car 34>;
|
||||
reset-names = "dma";
|
||||
#dma-cells = <1>;
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000c400 0x100>;
|
||||
interrupts = <0 84 0x04>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 54>;
|
||||
status = "disabled";
|
||||
apbmisc@70000800 {
|
||||
compatible = "nvidia,tegra124-apbmisc", "nvidia,tegra20-apbmisc";
|
||||
reg = <0x70000800 0x64>, /* Chip revision */
|
||||
<0x7000e864 0x04>; /* Strapping options */
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000c500 0x100>;
|
||||
interrupts = <0 92 0x04>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 67>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c700 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000c700 0x100>;
|
||||
interrupts = <0 120 0x04>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 103>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000d000 0x100>;
|
||||
interrupts = <0 53 0x04>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 47>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d100 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000d100 0x100>;
|
||||
interrupts = <0 53 0x04>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 47>;
|
||||
status = "disabled";
|
||||
pinmux: pinmux@70000868 {
|
||||
compatible = "nvidia,tegra124-pinmux";
|
||||
reg = <0x70000868 0x164>, /* Pad control registers */
|
||||
<0x70003000 0x434>, /* Mux registers */
|
||||
<0x70000820 0x008>; /* MIPI pad control */
|
||||
};
|
||||
|
||||
/*
|
||||
* There are two serial driver i.e. 8250 based simple serial
|
||||
* driver and APB DMA based serial driver for higher baudrate
|
||||
* and performace. To enable the 8250 based driver, the compatible
|
||||
* is "nvidia,tegra124-uart", "nvidia,tegra20-uart" and to enable
|
||||
* the APB DMA based serial driver, the comptible is
|
||||
* "nvidia,tegra124-hsuart", "nvidia,tegra30-hsuart".
|
||||
*/
|
||||
uarta: serial@70006000 {
|
||||
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
||||
reg = <0x70006000 0x40>;
|
||||
@ -339,19 +371,6 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uarte: serial@70006400 {
|
||||
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
||||
reg = <0x70006400 0x40>;
|
||||
reg-shift = <2>;
|
||||
interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_UARTE>;
|
||||
resets = <&tegra_car 66>;
|
||||
reset-names = "serial";
|
||||
dmas = <&apbdma 20>, <&apbdma 20>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
compatible = "nvidia,tegra124-pwm", "nvidia,tegra20-pwm";
|
||||
reg = <0x7000a000 0x100>;
|
||||
@ -362,75 +381,254 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000c000 0x100>;
|
||||
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_I2C1>;
|
||||
clock-names = "div-clk";
|
||||
resets = <&tegra_car 12>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 21>, <&apbdma 21>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000c400 0x100>;
|
||||
interrupts = <0 84 0x04>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 54>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000c500 0x100>;
|
||||
interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_I2C3>;
|
||||
clock-names = "div-clk";
|
||||
resets = <&tegra_car 67>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 23>, <&apbdma 23>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c700 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000c700 0x100>;
|
||||
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_I2C4>;
|
||||
clock-names = "div-clk";
|
||||
resets = <&tegra_car 103>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 26>, <&apbdma 26>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000d000 0x100>;
|
||||
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_I2C5>;
|
||||
clock-names = "div-clk";
|
||||
resets = <&tegra_car 47>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 24>, <&apbdma 24>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d100 {
|
||||
compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x7000d100 0x100>;
|
||||
interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_I2C6>;
|
||||
clock-names = "div-clk";
|
||||
resets = <&tegra_car 166>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 30>, <&apbdma 30>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi@7000d400 {
|
||||
compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
|
||||
reg = <0x7000d400 0x200>;
|
||||
interrupts = <0 59 0x04>;
|
||||
nvidia,dma-request-selector = <&apbdma 15>;
|
||||
interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SBC1>;
|
||||
clock-names = "spi";
|
||||
resets = <&tegra_car 41>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 15>, <&apbdma 15>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
clocks = <&tegra_car 41>;
|
||||
};
|
||||
|
||||
spi@7000d600 {
|
||||
compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
|
||||
reg = <0x7000d600 0x200>;
|
||||
interrupts = <0 82 0x04>;
|
||||
nvidia,dma-request-selector = <&apbdma 16>;
|
||||
interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SBC2>;
|
||||
clock-names = "spi";
|
||||
resets = <&tegra_car 44>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 16>, <&apbdma 16>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
clocks = <&tegra_car 44>;
|
||||
};
|
||||
|
||||
spi@7000d800 {
|
||||
compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
|
||||
reg = <0x7000d800 0x200>;
|
||||
interrupts = <0 83 0x04>;
|
||||
nvidia,dma-request-selector = <&apbdma 17>;
|
||||
interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SBC3>;
|
||||
clock-names = "spi";
|
||||
resets = <&tegra_car 46>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 17>, <&apbdma 17>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
clocks = <&tegra_car 46>;
|
||||
};
|
||||
|
||||
spi@7000da00 {
|
||||
compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
|
||||
reg = <0x7000da00 0x200>;
|
||||
interrupts = <0 93 0x04>;
|
||||
nvidia,dma-request-selector = <&apbdma 18>;
|
||||
interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SBC4>;
|
||||
clock-names = "spi";
|
||||
resets = <&tegra_car 68>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 18>, <&apbdma 18>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
clocks = <&tegra_car 68>;
|
||||
};
|
||||
|
||||
spi@7000dc00 {
|
||||
compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
|
||||
reg = <0x7000dc00 0x200>;
|
||||
interrupts = <0 94 0x04>;
|
||||
nvidia,dma-request-selector = <&apbdma 27>;
|
||||
interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SBC5>;
|
||||
clock-names = "spi";
|
||||
resets = <&tegra_car 104>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 27>, <&apbdma 27>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
clocks = <&tegra_car 104>;
|
||||
};
|
||||
|
||||
spi@7000de00 {
|
||||
compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
|
||||
reg = <0x7000de00 0x200>;
|
||||
interrupts = <0 79 0x04>;
|
||||
nvidia,dma-request-selector = <&apbdma 28>;
|
||||
interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SBC6>;
|
||||
clock-names = "spi";
|
||||
resets = <&tegra_car 105>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 28>, <&apbdma 28>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
clocks = <&tegra_car 105>;
|
||||
};
|
||||
|
||||
rtc@7000e000 {
|
||||
compatible = "nvidia,tegra124-rtc", "nvidia,tegra20-rtc";
|
||||
reg = <0x7000e000 0x100>;
|
||||
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_RTC>;
|
||||
};
|
||||
|
||||
pmc@7000e400 {
|
||||
compatible = "nvidia,tegra124-pmc";
|
||||
reg = <0x7000e400 0x400>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_PCLK>, <&clk32k_in>;
|
||||
clock-names = "pclk", "clk32k_in";
|
||||
};
|
||||
|
||||
fuse@7000f800 {
|
||||
compatible = "nvidia,tegra124-efuse";
|
||||
reg = <0x7000f800 0x400>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_FUSE>;
|
||||
clock-names = "fuse";
|
||||
resets = <&tegra_car 39>;
|
||||
reset-names = "fuse";
|
||||
};
|
||||
|
||||
mc: memory-controller@70019000 {
|
||||
compatible = "nvidia,tegra124-mc";
|
||||
reg = <0x70019000 0x1000>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_MC>;
|
||||
clock-names = "mc";
|
||||
|
||||
interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
emc: emc@7001b000 {
|
||||
compatible = "nvidia,tegra124-emc";
|
||||
reg = <0x7001b000 0x1000>;
|
||||
|
||||
nvidia,memory-controller = <&mc>;
|
||||
};
|
||||
|
||||
sata@70020000 {
|
||||
compatible = "nvidia,tegra124-ahci";
|
||||
reg = <0x70027000 0x2000>, /* AHCI */
|
||||
<0x70020000 0x7000>; /* SATA */
|
||||
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SATA>,
|
||||
<&tegra_car TEGRA124_CLK_SATA_OOB>,
|
||||
<&tegra_car TEGRA124_CLK_CML1>,
|
||||
<&tegra_car TEGRA124_CLK_PLL_E>;
|
||||
clock-names = "sata", "sata-oob", "cml1", "pll_e";
|
||||
resets = <&tegra_car 124>,
|
||||
<&tegra_car 123>,
|
||||
<&tegra_car 129>;
|
||||
reset-names = "sata", "sata-oob", "sata-cold";
|
||||
phys = <&padctl TEGRA_XUSB_PADCTL_SATA>;
|
||||
phy-names = "sata-phy";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
hda@70030000 {
|
||||
compatible = "nvidia,tegra124-hda", "nvidia,tegra30-hda";
|
||||
reg = <0x70030000 0x10000>;
|
||||
interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_HDA>,
|
||||
<&tegra_car TEGRA124_CLK_HDA2HDMI>,
|
||||
<&tegra_car TEGRA124_CLK_HDA2CODEC_2X>;
|
||||
clock-names = "hda", "hda2hdmi", "hda2codec_2x";
|
||||
resets = <&tegra_car 125>, /* hda */
|
||||
<&tegra_car 128>, /* hda2hdmi */
|
||||
<&tegra_car 111>; /* hda2codec_2x */
|
||||
reset-names = "hda", "hda2hdmi", "hda2codec_2x";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
padctl: padctl@7009f000 {
|
||||
@ -445,32 +643,76 @@
|
||||
sdhci@700b0000 {
|
||||
compatible = "nvidia,tegra124-sdhci";
|
||||
reg = <0x700b0000 0x200>;
|
||||
interrupts = <0 14 0x04>;
|
||||
clocks = <&tegra_car 14>;
|
||||
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SDMMC1>;
|
||||
resets = <&tegra_car 14>;
|
||||
reset-names = "sdhci";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@700b0200 {
|
||||
compatible = "nvidia,tegra124-sdhci";
|
||||
reg = <0x700b0200 0x200>;
|
||||
interrupts = <0 15 0x04>;
|
||||
clocks = <&tegra_car 9>;
|
||||
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SDMMC2>;
|
||||
resets = <&tegra_car 9>;
|
||||
reset-names = "sdhci";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@700b0400 {
|
||||
compatible = "nvidia,tegra124-sdhci";
|
||||
reg = <0x700b0400 0x200>;
|
||||
interrupts = <0 19 0x04>;
|
||||
clocks = <&tegra_car 69>;
|
||||
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SDMMC3>;
|
||||
resets = <&tegra_car 69>;
|
||||
reset-names = "sdhci";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@700b0600 {
|
||||
compatible = "nvidia,tegra124-sdhci";
|
||||
reg = <0x700b0600 0x200>;
|
||||
interrupts = <0 31 0x04>;
|
||||
clocks = <&tegra_car 15>;
|
||||
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_SDMMC4>;
|
||||
resets = <&tegra_car 15>;
|
||||
reset-names = "sdhci";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
soctherm: thermal-sensor@700e2000 {
|
||||
compatible = "nvidia,tegra124-soctherm";
|
||||
reg = <0x700e2000 0x1000>;
|
||||
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_TSENSOR>,
|
||||
<&tegra_car TEGRA124_CLK_SOC_THERM>;
|
||||
clock-names = "tsensor", "soctherm";
|
||||
resets = <&tegra_car 78>;
|
||||
reset-names = "soctherm";
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
|
||||
dfll: clock@70110000 {
|
||||
compatible = "nvidia,tegra124-dfll";
|
||||
reg = <0x70110000 0x100>, /* DFLL control */
|
||||
<0x70110000 0x100>, /* I2C output control */
|
||||
<0x70110100 0x100>, /* Integrated I2C controller */
|
||||
<0x70110200 0x100>; /* Look-up table RAM */
|
||||
interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA124_CLK_DFLL_SOC>,
|
||||
<&tegra_car TEGRA124_CLK_DFLL_REF>,
|
||||
<&tegra_car TEGRA124_CLK_I2C5>;
|
||||
clock-names = "soc", "ref", "i2c";
|
||||
resets = <&tegra_car TEGRA124_RST_DFLL_DVCO>;
|
||||
reset-names = "dvco";
|
||||
#clock-cells = <0>;
|
||||
clock-output-names = "dfllCPU_out";
|
||||
nvidia,sample-rate = <12500>;
|
||||
nvidia,droop-ctrl = <0x00000f00>;
|
||||
nvidia,force-mode = <1>;
|
||||
nvidia,cf = <10>;
|
||||
nvidia,ci = <0>;
|
||||
nvidia,cg = <2>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@ -580,27 +822,206 @@
|
||||
usb@7d000000 {
|
||||
compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
|
||||
reg = <0x7d000000 0x4000>;
|
||||
interrupts = < 52 >;
|
||||
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phy_type = "utmi";
|
||||
clocks = <&tegra_car 22>; /* PERIPH_ID_USBD */
|
||||
clocks = <&tegra_car TEGRA124_CLK_USBD>;
|
||||
resets = <&tegra_car 22>;
|
||||
reset-names = "usb";
|
||||
nvidia,phy = <&phy1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
phy1: usb-phy@7d000000 {
|
||||
compatible = "nvidia,tegra124-usb-phy", "nvidia,tegra30-usb-phy";
|
||||
reg = <0x7d000000 0x4000>,
|
||||
<0x7d000000 0x4000>;
|
||||
phy_type = "utmi";
|
||||
clocks = <&tegra_car TEGRA124_CLK_USBD>,
|
||||
<&tegra_car TEGRA124_CLK_PLL_U>,
|
||||
<&tegra_car TEGRA124_CLK_USBD>;
|
||||
clock-names = "reg", "pll_u", "utmi-pads";
|
||||
resets = <&tegra_car 22>, <&tegra_car 22>;
|
||||
reset-names = "usb", "utmi-pads";
|
||||
nvidia,hssync-start-delay = <0>;
|
||||
nvidia,idle-wait-delay = <17>;
|
||||
nvidia,elastic-limit = <16>;
|
||||
nvidia,term-range-adj = <6>;
|
||||
nvidia,xcvr-setup = <9>;
|
||||
nvidia,xcvr-lsfslew = <0>;
|
||||
nvidia,xcvr-lsrslew = <3>;
|
||||
nvidia,hssquelch-level = <2>;
|
||||
nvidia,hsdiscon-level = <5>;
|
||||
nvidia,xcvr-hsslew = <12>;
|
||||
nvidia,has-utmi-pad-registers;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@7d004000 {
|
||||
compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
|
||||
reg = <0x7d004000 0x4000>;
|
||||
interrupts = < 53 >;
|
||||
interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phy_type = "hsic";
|
||||
clocks = <&tegra_car 58>; /* PERIPH_ID_USB2 */
|
||||
clocks = <&tegra_car TEGRA124_CLK_USB2>;
|
||||
resets = <&tegra_car 58>;
|
||||
reset-names = "usb";
|
||||
nvidia,phy = <&phy2>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
phy2: usb-phy@7d004000 {
|
||||
compatible = "nvidia,tegra124-usb-phy", "nvidia,tegra30-usb-phy";
|
||||
reg = <0x7d004000 0x4000>,
|
||||
<0x7d000000 0x4000>;
|
||||
phy_type = "utmi";
|
||||
clocks = <&tegra_car TEGRA124_CLK_USB2>,
|
||||
<&tegra_car TEGRA124_CLK_PLL_U>,
|
||||
<&tegra_car TEGRA124_CLK_USBD>;
|
||||
clock-names = "reg", "pll_u", "utmi-pads";
|
||||
resets = <&tegra_car 58>, <&tegra_car 22>;
|
||||
reset-names = "usb", "utmi-pads";
|
||||
nvidia,hssync-start-delay = <0>;
|
||||
nvidia,idle-wait-delay = <17>;
|
||||
nvidia,elastic-limit = <16>;
|
||||
nvidia,term-range-adj = <6>;
|
||||
nvidia,xcvr-setup = <9>;
|
||||
nvidia,xcvr-lsfslew = <0>;
|
||||
nvidia,xcvr-lsrslew = <3>;
|
||||
nvidia,hssquelch-level = <2>;
|
||||
nvidia,hsdiscon-level = <5>;
|
||||
nvidia,xcvr-hsslew = <12>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@7d008000 {
|
||||
compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
|
||||
reg = <0x7d008000 0x4000>;
|
||||
interrupts = < 129 >;
|
||||
interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phy_type = "utmi";
|
||||
clocks = <&tegra_car 59>; /* PERIPH_ID_USB3 */
|
||||
clocks = <&tegra_car TEGRA124_CLK_USB3>;
|
||||
resets = <&tegra_car 59>;
|
||||
reset-names = "usb";
|
||||
nvidia,phy = <&phy3>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
phy3: usb-phy@7d008000 {
|
||||
compatible = "nvidia,tegra124-usb-phy", "nvidia,tegra30-usb-phy";
|
||||
reg = <0x7d008000 0x4000>,
|
||||
<0x7d000000 0x4000>;
|
||||
phy_type = "utmi";
|
||||
clocks = <&tegra_car TEGRA124_CLK_USB3>,
|
||||
<&tegra_car TEGRA124_CLK_PLL_U>,
|
||||
<&tegra_car TEGRA124_CLK_USBD>;
|
||||
clock-names = "reg", "pll_u", "utmi-pads";
|
||||
resets = <&tegra_car 59>, <&tegra_car 22>;
|
||||
reset-names = "usb", "utmi-pads";
|
||||
nvidia,hssync-start-delay = <0>;
|
||||
nvidia,idle-wait-delay = <17>;
|
||||
nvidia,elastic-limit = <16>;
|
||||
nvidia,term-range-adj = <6>;
|
||||
nvidia,xcvr-setup = <9>;
|
||||
nvidia,xcvr-lsfslew = <0>;
|
||||
nvidia,xcvr-lsrslew = <3>;
|
||||
nvidia,hssquelch-level = <2>;
|
||||
nvidia,hsdiscon-level = <5>;
|
||||
nvidia,xcvr-hsslew = <12>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu@0 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a15";
|
||||
reg = <0>;
|
||||
|
||||
clocks = <&tegra_car TEGRA124_CLK_CCLK_G>,
|
||||
<&tegra_car TEGRA124_CLK_CCLK_LP>,
|
||||
<&tegra_car TEGRA124_CLK_PLL_X>,
|
||||
<&tegra_car TEGRA124_CLK_PLL_P>,
|
||||
<&dfll>;
|
||||
clock-names = "cpu_g", "cpu_lp", "pll_x", "pll_p", "dfll";
|
||||
/* FIXME: what's the actual transition time? */
|
||||
clock-latency = <300000>;
|
||||
};
|
||||
|
||||
cpu@1 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a15";
|
||||
reg = <1>;
|
||||
};
|
||||
|
||||
cpu@2 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a15";
|
||||
reg = <2>;
|
||||
};
|
||||
|
||||
cpu@3 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a15";
|
||||
reg = <3>;
|
||||
};
|
||||
};
|
||||
|
||||
pmu {
|
||||
compatible = "arm,cortex-a15-pmu";
|
||||
interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-affinity = <&{/cpus/cpu@0}>,
|
||||
<&{/cpus/cpu@1}>,
|
||||
<&{/cpus/cpu@2}>,
|
||||
<&{/cpus/cpu@3}>;
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
cpu {
|
||||
polling-delay-passive = <1000>;
|
||||
polling-delay = <1000>;
|
||||
|
||||
thermal-sensors =
|
||||
<&soctherm TEGRA124_SOCTHERM_SENSOR_CPU>;
|
||||
};
|
||||
|
||||
mem {
|
||||
polling-delay-passive = <1000>;
|
||||
polling-delay = <1000>;
|
||||
|
||||
thermal-sensors =
|
||||
<&soctherm TEGRA124_SOCTHERM_SENSOR_MEM>;
|
||||
};
|
||||
|
||||
gpu {
|
||||
polling-delay-passive = <1000>;
|
||||
polling-delay = <1000>;
|
||||
|
||||
thermal-sensors =
|
||||
<&soctherm TEGRA124_SOCTHERM_SENSOR_GPU>;
|
||||
};
|
||||
|
||||
pllx {
|
||||
polling-delay-passive = <1000>;
|
||||
polling-delay = <1000>;
|
||||
|
||||
thermal-sensors =
|
||||
<&soctherm TEGRA124_SOCTHERM_SENSOR_PLLX>;
|
||||
};
|
||||
};
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
interrupts = <GIC_PPI 13
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 14
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 11
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
interrupt-parent = <&gic>;
|
||||
};
|
||||
};
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
sdhci0 = "/sdhci@c8000600";
|
||||
};
|
||||
|
||||
host1x {
|
||||
host1x@50000000 {
|
||||
status = "okay";
|
||||
dc@54200000 {
|
||||
status = "okay";
|
||||
@ -32,16 +32,19 @@
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
statuc = "okay";
|
||||
dr_mode = "otg";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
statuc = "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>;
|
||||
};
|
||||
|
||||
usb@c5008000 {
|
||||
statuc = "okay";
|
||||
/* USBH_PEN */
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
@ -88,6 +91,23 @@
|
||||
cd-gpios = <&gpio TEGRA_GPIO(C, 7) GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg=<0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
lcd_panel: panel {
|
||||
clock = <25175000>;
|
||||
xres = <640>;
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
reg = <0x00000000 0x40000000>;
|
||||
};
|
||||
|
||||
host1x {
|
||||
host1x@50000000 {
|
||||
status = "okay";
|
||||
dc@54200000 {
|
||||
status = "okay";
|
||||
@ -46,30 +46,15 @@
|
||||
};
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
statuc = "okay";
|
||||
nvidia,phy-reset-gpio = <&gpio TEGRA_GPIO(V, 1) 0>;
|
||||
};
|
||||
|
||||
usb@c5008000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdhci@c8000200 {
|
||||
status = "okay";
|
||||
cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
|
||||
@ -86,6 +71,23 @@
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg=<0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
lcd_panel: panel {
|
||||
clock = <42430000>;
|
||||
xres = <1024>;
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
reg = <0x00000000 0x20000000>;
|
||||
};
|
||||
|
||||
host1x {
|
||||
host1x@50000000 {
|
||||
status = "okay";
|
||||
|
||||
dc@54200000 {
|
||||
@ -36,28 +36,12 @@
|
||||
clock-frequency = <216000000>;
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
status = "disabled";
|
||||
usb@c5008000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
status = "disabled";
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
lcd_panel: panel {
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
reg = <0x00000000 0x20000000>;
|
||||
};
|
||||
|
||||
host1x {
|
||||
host1x@50000000 {
|
||||
status = "okay";
|
||||
dc@54200000 {
|
||||
status = "okay";
|
||||
@ -35,28 +35,8 @@
|
||||
clock-frequency = < 216000000 >;
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
status = "disabled";
|
||||
usb@c5008000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdhci@c8000000 {
|
||||
@ -72,6 +52,23 @@
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg=<0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
lcd_panel: panel {
|
||||
/* PAZ00 has 1024x600 */
|
||||
clock = <54030000>;
|
||||
|
||||
@ -38,12 +38,4 @@
|
||||
i2c@7000d000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
reg = < 0x00000000 0x40000000 >;
|
||||
};
|
||||
|
||||
host1x {
|
||||
host1x@50000000 {
|
||||
status = "okay";
|
||||
dc@54200000 {
|
||||
status = "okay";
|
||||
@ -40,10 +40,15 @@
|
||||
nvidia,panel = <&lcd_panel>;
|
||||
};
|
||||
};
|
||||
|
||||
dc@54240000 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
/* This is not used in U-Boot, but is expected to be in kernel .dts */
|
||||
i2c@7000d000 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
pmic@34 {
|
||||
compatible = "ti,tps6586x";
|
||||
@ -75,18 +80,21 @@
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
status = "disabled";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
kbc@7000e200 {
|
||||
status = "okay";
|
||||
linux,keymap = <0x00020011 0x0003001f 0x0004001e 0x0005002c
|
||||
0x000701d0 0x0107007d 0x02060064 0x02070038 0x03000006
|
||||
0x03010005 0x03020013 0x03030012 0x03040021 0x03050020
|
||||
@ -114,6 +122,8 @@
|
||||
};
|
||||
|
||||
emc@7000f400 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
emc-table@190000 {
|
||||
reg = < 190000 >;
|
||||
compatible = "nvidia,tegra20-emc-table";
|
||||
@ -151,6 +161,7 @@
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
status = "okay";
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(D, 0) GPIO_ACTIVE_HIGH>;
|
||||
dr_mode = "otg";
|
||||
};
|
||||
@ -159,6 +170,10 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5008000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdhci@c8000400 {
|
||||
status = "okay";
|
||||
cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
|
||||
@ -172,6 +187,23 @@
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg=<0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
lcd_panel: panel {
|
||||
/* Seaboard has 1366x768 */
|
||||
clock = <70600000>;
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
reg = <0x00000000 0x20000000>;
|
||||
};
|
||||
|
||||
host1x {
|
||||
host1x@50000000 {
|
||||
hdmi {
|
||||
vdd-supply = <&hdmi_vdd_reg>;
|
||||
pll-supply = <&hdmi_pll_reg>;
|
||||
@ -483,6 +483,19 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg=<0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
reg = <0x00000000 0x20000000>;
|
||||
};
|
||||
|
||||
host1x {
|
||||
host1x@50000000 {
|
||||
status = "okay";
|
||||
|
||||
dc@54200000 {
|
||||
@ -52,12 +52,8 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
status = "disabled";
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
lcd_panel: panel {
|
||||
|
||||
@ -26,27 +26,11 @@
|
||||
clock-frequency = <216000000>;
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi@7000c380 {
|
||||
status = "okay";
|
||||
spi-max-frequency = <25000000>;
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcie-controller@80003000 {
|
||||
status = "okay";
|
||||
|
||||
@ -62,13 +46,10 @@
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
status = "okay";
|
||||
nvidia,vbus-gpio = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@c8000000 {
|
||||
status = "okay";
|
||||
bus-width = <4>;
|
||||
@ -81,6 +62,19 @@
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg=<0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
reg = <0x00000000 0x40000000>;
|
||||
};
|
||||
|
||||
host1x {
|
||||
host1x@50000000 {
|
||||
status = "okay";
|
||||
dc@54200000 {
|
||||
status = "okay";
|
||||
@ -35,28 +35,8 @@
|
||||
clock-frequency = < 216000000 >;
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
status = "disabled";
|
||||
usb@c5008000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdhci@c8000400 {
|
||||
@ -72,6 +52,23 @@
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg=<0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
lcd_panel: panel {
|
||||
clock = <72072000>;
|
||||
xres = <1366>;
|
||||
|
||||
@ -26,19 +26,8 @@
|
||||
clock-frequency = < 216000000 >;
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
|
||||
pmic@3c {
|
||||
@ -56,12 +45,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
usb@c5000000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
status = "disabled";
|
||||
usb@c5008000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdhci@c8000400 {
|
||||
@ -74,4 +59,18 @@
|
||||
status = "okay";
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clk32k_in: clock@0 {
|
||||
compatible = "fixed-clock";
|
||||
reg=<0>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@ -1,72 +1,94 @@
|
||||
#include <dt-bindings/clock/tegra20-car.h>
|
||||
#include <dt-bindings/gpio/tegra-gpio.h>
|
||||
#include <dt-bindings/pinctrl/pinctrl-tegra.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
#include "skeleton.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "nvidia,tegra20";
|
||||
interrupt-parent = <&intc>;
|
||||
interrupt-parent = <&lic>;
|
||||
|
||||
host1x {
|
||||
host1x@50000000 {
|
||||
u-boot,dm-pre-reloc;
|
||||
compatible = "nvidia,tegra20-host1x", "simple-bus";
|
||||
reg = <0x50000000 0x00024000>;
|
||||
interrupts = <0 65 0x04 /* mpcore syncpt */
|
||||
0 67 0x04>; /* mpcore general */
|
||||
status = "disabled";
|
||||
interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, /* syncpt */
|
||||
<GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; /* general */
|
||||
clocks = <&tegra_car TEGRA20_CLK_HOST1X>;
|
||||
resets = <&tegra_car 28>;
|
||||
reset-names = "host1x";
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
ranges = <0x54000000 0x54000000 0x04000000>;
|
||||
|
||||
/* video-encoding/decoding */
|
||||
mpe {
|
||||
mpe@54040000 {
|
||||
compatible = "nvidia,tegra20-mpe";
|
||||
reg = <0x54040000 0x00040000>;
|
||||
interrupts = <0 68 0x04>;
|
||||
status = "disabled";
|
||||
interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_MPE>;
|
||||
resets = <&tegra_car 60>;
|
||||
reset-names = "mpe";
|
||||
};
|
||||
|
||||
/* video input */
|
||||
vi {
|
||||
vi@54080000 {
|
||||
compatible = "nvidia,tegra20-vi";
|
||||
reg = <0x54080000 0x00040000>;
|
||||
interrupts = <0 69 0x04>;
|
||||
status = "disabled";
|
||||
interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_VI>;
|
||||
resets = <&tegra_car 20>;
|
||||
reset-names = "vi";
|
||||
};
|
||||
|
||||
/* EPP */
|
||||
epp {
|
||||
epp@540c0000 {
|
||||
compatible = "nvidia,tegra20-epp";
|
||||
reg = <0x540c0000 0x00040000>;
|
||||
interrupts = <0 70 0x04>;
|
||||
status = "disabled";
|
||||
interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_EPP>;
|
||||
resets = <&tegra_car 19>;
|
||||
reset-names = "epp";
|
||||
};
|
||||
|
||||
/* ISP */
|
||||
isp {
|
||||
isp@54100000 {
|
||||
compatible = "nvidia,tegra20-isp";
|
||||
reg = <0x54100000 0x00040000>;
|
||||
interrupts = <0 71 0x04>;
|
||||
status = "disabled";
|
||||
interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_ISP>;
|
||||
resets = <&tegra_car 23>;
|
||||
reset-names = "isp";
|
||||
};
|
||||
|
||||
/* 2D engine */
|
||||
gr2d {
|
||||
gr2d@54140000 {
|
||||
compatible = "nvidia,tegra20-gr2d";
|
||||
reg = <0x54140000 0x00040000>;
|
||||
interrupts = <0 72 0x04>;
|
||||
status = "disabled";
|
||||
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_GR2D>;
|
||||
resets = <&tegra_car 21>;
|
||||
reset-names = "2d";
|
||||
};
|
||||
|
||||
/* 3D engine */
|
||||
gr3d {
|
||||
gr3d@54180000 {
|
||||
compatible = "nvidia,tegra20-gr3d";
|
||||
reg = <0x54180000 0x00040000>;
|
||||
status = "disabled";
|
||||
clocks = <&tegra_car TEGRA20_CLK_GR3D>;
|
||||
resets = <&tegra_car 24>;
|
||||
reset-names = "3d";
|
||||
};
|
||||
|
||||
/* display controllers */
|
||||
dc@54200000 {
|
||||
u-boot,dm-pre-reloc;
|
||||
compatible = "nvidia,tegra20-dc";
|
||||
reg = <0x54200000 0x00040000>;
|
||||
interrupts = <0 73 0x04>;
|
||||
status = "disabled";
|
||||
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_DISP1>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_P>;
|
||||
clock-names = "dc", "parent";
|
||||
resets = <&tegra_car 27>;
|
||||
reset-names = "dc";
|
||||
|
||||
nvidia,head = <0>;
|
||||
|
||||
rgb {
|
||||
status = "disabled";
|
||||
@ -76,69 +98,138 @@
|
||||
dc@54240000 {
|
||||
compatible = "nvidia,tegra20-dc";
|
||||
reg = <0x54240000 0x00040000>;
|
||||
interrupts = <0 74 0x04>;
|
||||
status = "disabled";
|
||||
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_DISP2>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_P>;
|
||||
clock-names = "dc", "parent";
|
||||
resets = <&tegra_car 26>;
|
||||
reset-names = "dc";
|
||||
|
||||
nvidia,head = <1>;
|
||||
|
||||
rgb {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
/* outputs */
|
||||
hdmi {
|
||||
hdmi@54280000 {
|
||||
compatible = "nvidia,tegra20-hdmi";
|
||||
reg = <0x54280000 0x00040000>;
|
||||
interrupts = <0 75 0x04>;
|
||||
interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_HDMI>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_D_OUT0>;
|
||||
clock-names = "hdmi", "parent";
|
||||
resets = <&tegra_car 51>;
|
||||
reset-names = "hdmi";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
tvo {
|
||||
tvo@542c0000 {
|
||||
compatible = "nvidia,tegra20-tvo";
|
||||
reg = <0x542c0000 0x00040000>;
|
||||
interrupts = <0 76 0x04>;
|
||||
interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_TVO>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
dsi {
|
||||
dsi@54300000 {
|
||||
compatible = "nvidia,tegra20-dsi";
|
||||
reg = <0x54300000 0x00040000>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_DSI>;
|
||||
resets = <&tegra_car 48>;
|
||||
reset-names = "dsi";
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
timer@50040600 {
|
||||
compatible = "arm,cortex-a9-twd-timer";
|
||||
interrupt-parent = <&intc>;
|
||||
reg = <0x50040600 0x20>;
|
||||
interrupts = <GIC_PPI 13
|
||||
(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_TWD>;
|
||||
};
|
||||
|
||||
intc: interrupt-controller@50041000 {
|
||||
compatible = "nvidia,tegra20-gic";
|
||||
compatible = "arm,cortex-a9-gic";
|
||||
reg = <0x50041000 0x1000
|
||||
0x50040100 0x0100>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = < 0x50041000 0x1000 >,
|
||||
< 0x50040100 0x0100 >;
|
||||
#interrupt-cells = <3>;
|
||||
interrupt-parent = <&intc>;
|
||||
};
|
||||
|
||||
cache-controller@50043000 {
|
||||
compatible = "arm,pl310-cache";
|
||||
reg = <0x50043000 0x1000>;
|
||||
arm,data-latency = <5 5 2>;
|
||||
arm,tag-latency = <4 4 2>;
|
||||
cache-unified;
|
||||
cache-level = <2>;
|
||||
};
|
||||
|
||||
lic: interrupt-controller@60004000 {
|
||||
compatible = "nvidia,tegra20-ictlr";
|
||||
reg = <0x60004000 0x100>,
|
||||
<0x60004100 0x50>,
|
||||
<0x60004200 0x50>,
|
||||
<0x60004300 0x50>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
interrupt-parent = <&intc>;
|
||||
};
|
||||
|
||||
timer@60005000 {
|
||||
compatible = "nvidia,tegra20-timer";
|
||||
reg = <0x60005000 0x60>;
|
||||
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_TIMER>;
|
||||
};
|
||||
|
||||
tegra_car: clock@60006000 {
|
||||
compatible = "nvidia,tegra20-car";
|
||||
reg = <0x60006000 0x1000>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
apbdma: dma {
|
||||
flow-controller@60007000 {
|
||||
compatible = "nvidia,tegra20-flowctrl";
|
||||
reg = <0x60007000 0x1000>;
|
||||
};
|
||||
|
||||
apbdma: dma@6000a000 {
|
||||
compatible = "nvidia,tegra20-apbdma";
|
||||
reg = <0x6000a000 0x1200>;
|
||||
interrupts = <0 104 0x04
|
||||
0 105 0x04
|
||||
0 106 0x04
|
||||
0 107 0x04
|
||||
0 108 0x04
|
||||
0 109 0x04
|
||||
0 110 0x04
|
||||
0 111 0x04
|
||||
0 112 0x04
|
||||
0 113 0x04
|
||||
0 114 0x04
|
||||
0 115 0x04
|
||||
0 116 0x04
|
||||
0 117 0x04
|
||||
0 118 0x04
|
||||
0 119 0x04>;
|
||||
interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_APBDMA>;
|
||||
resets = <&tegra_car 34>;
|
||||
reset-names = "dma";
|
||||
#dma-cells = <1>;
|
||||
};
|
||||
|
||||
ahb@6000c000 {
|
||||
compatible = "nvidia,tegra20-ahb";
|
||||
reg = <0x6000c000 0x110>; /* AHB Arbitration + Gizmo Controller */
|
||||
};
|
||||
|
||||
gpio: gpio@6000d000 {
|
||||
@ -155,41 +246,73 @@
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
/*
|
||||
gpio-ranges = <&pinmux 0 0 224>;
|
||||
*/
|
||||
};
|
||||
|
||||
pinmux: pinmux@70000000 {
|
||||
apbmisc@70000800 {
|
||||
compatible = "nvidia,tegra20-apbmisc";
|
||||
reg = <0x70000800 0x64 /* Chip revision */
|
||||
0x70000008 0x04>; /* Strapping options */
|
||||
};
|
||||
|
||||
pinmux: pinmux@70000014 {
|
||||
compatible = "nvidia,tegra20-pinmux";
|
||||
reg = < 0x70000014 0x10 /* Tri-state registers */
|
||||
0x70000080 0x20 /* Mux registers */
|
||||
0x700000a0 0x14 /* Pull-up/down registers */
|
||||
0x70000868 0xa8 >; /* Pad control registers */
|
||||
reg = <0x70000014 0x10 /* Tri-state registers */
|
||||
0x70000080 0x20 /* Mux registers */
|
||||
0x700000a0 0x14 /* Pull-up/down registers */
|
||||
0x70000868 0xa8>; /* Pad control registers */
|
||||
};
|
||||
|
||||
das@70000c00 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "nvidia,tegra20-das";
|
||||
reg = <0x70000c00 0x80>;
|
||||
};
|
||||
|
||||
i2s@70002800 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
tegra_ac97: ac97@70002000 {
|
||||
compatible = "nvidia,tegra20-ac97";
|
||||
reg = <0x70002000 0x200>;
|
||||
interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_AC97>;
|
||||
resets = <&tegra_car 3>;
|
||||
reset-names = "ac97";
|
||||
dmas = <&apbdma 12>, <&apbdma 12>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
tegra_i2s1: i2s@70002800 {
|
||||
compatible = "nvidia,tegra20-i2s";
|
||||
reg = <0x70002800 0x200>;
|
||||
interrupts = < 45 >;
|
||||
dma-channel = < 2 >;
|
||||
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_I2S1>;
|
||||
resets = <&tegra_car 11>;
|
||||
reset-names = "i2s";
|
||||
dmas = <&apbdma 2>, <&apbdma 2>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2s@70002a00 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
tegra_i2s2: i2s@70002a00 {
|
||||
compatible = "nvidia,tegra20-i2s";
|
||||
reg = <0x70002a00 0x200>;
|
||||
interrupts = < 35 >;
|
||||
dma-channel = < 1 >;
|
||||
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_I2S2>;
|
||||
resets = <&tegra_car 18>;
|
||||
reset-names = "i2s";
|
||||
dmas = <&apbdma 1>, <&apbdma 1>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/*
|
||||
* There are two serial driver i.e. 8250 based simple serial
|
||||
* driver and APB DMA based serial driver for higher baudrate
|
||||
* and performace. To enable the 8250 based driver, the compatible
|
||||
* is "nvidia,tegra20-uart" and to enable the APB DMA based serial
|
||||
* driver, the comptible is "nvidia,tegra20-hsuart".
|
||||
*/
|
||||
uarta: serial@70006000 {
|
||||
compatible = "nvidia,tegra20-uart";
|
||||
reg = <0x70006000 0x40>;
|
||||
@ -266,58 +389,95 @@
|
||||
compatible = "nvidia,tegra20-pwm";
|
||||
reg = <0x7000a000 0x100>;
|
||||
#pwm-cells = <2>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_PWM>;
|
||||
resets = <&tegra_car 17>;
|
||||
reset-names = "pwm";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
rtc@7000e000 {
|
||||
compatible = "nvidia,tegra20-rtc";
|
||||
reg = <0x7000e000 0x100>;
|
||||
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_RTC>;
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
compatible = "nvidia,tegra20-i2c";
|
||||
reg = <0x7000c000 0x100>;
|
||||
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "nvidia,tegra20-i2c";
|
||||
reg = <0x7000C000 0x100>;
|
||||
interrupts = < 70 >;
|
||||
/* PERIPH_ID_I2C1, PLL_P_OUT3 */
|
||||
clocks = <&tegra_car 12>, <&tegra_car 124>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_I2C1>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_P_OUT3>;
|
||||
clock-names = "div-clk", "fast-clk";
|
||||
resets = <&tegra_car 12>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 21>, <&apbdma 21>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi@7000c380 {
|
||||
compatible = "nvidia,tegra20-sflash";
|
||||
reg = <0x7000c380 0x80>;
|
||||
interrupts = <0 39 0x04>;
|
||||
nvidia,dma-request-selector = <&apbdma 11>;
|
||||
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_SPI>;
|
||||
resets = <&tegra_car 43>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 11>, <&apbdma 11>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
/* PERIPH_ID_SPI1, PLLP_OUT0 */
|
||||
clocks = <&tegra_car 43>;
|
||||
};
|
||||
|
||||
i2c@7000c400 {
|
||||
compatible = "nvidia,tegra20-i2c";
|
||||
reg = <0x7000c400 0x100>;
|
||||
interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "nvidia,tegra20-i2c";
|
||||
reg = <0x7000C400 0x100>;
|
||||
interrupts = < 116 >;
|
||||
/* PERIPH_ID_I2C2, PLL_P_OUT3 */
|
||||
clocks = <&tegra_car 54>, <&tegra_car 124>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_I2C2>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_P_OUT3>;
|
||||
clock-names = "div-clk", "fast-clk";
|
||||
resets = <&tegra_car 54>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 22>, <&apbdma 22>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000c500 {
|
||||
compatible = "nvidia,tegra20-i2c";
|
||||
reg = <0x7000c500 0x100>;
|
||||
interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "nvidia,tegra20-i2c";
|
||||
reg = <0x7000C500 0x100>;
|
||||
interrupts = < 124 >;
|
||||
/* PERIPH_ID_I2C3, PLL_P_OUT3 */
|
||||
clocks = <&tegra_car 67>, <&tegra_car 124>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_I2C3>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_P_OUT3>;
|
||||
clock-names = "div-clk", "fast-clk";
|
||||
resets = <&tegra_car 67>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 23>, <&apbdma 23>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@7000d000 {
|
||||
compatible = "nvidia,tegra20-i2c-dvc";
|
||||
reg = <0x7000d000 0x200>;
|
||||
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "nvidia,tegra20-i2c-dvc";
|
||||
reg = <0x7000D000 0x200>;
|
||||
interrupts = < 85 >;
|
||||
/* PERIPH_ID_DVC_I2C, PLL_P_OUT3 */
|
||||
clocks = <&tegra_car 47>, <&tegra_car 124>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_DVC>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_P_OUT3>;
|
||||
clock-names = "div-clk", "fast-clk";
|
||||
resets = <&tegra_car 47>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 24>, <&apbdma 24>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi@7000d400 {
|
||||
@ -376,17 +536,50 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
||||
kbc@7000e200 {
|
||||
compatible = "nvidia,tegra20-kbc";
|
||||
reg = <0x7000e200 0x0078>;
|
||||
reg = <0x7000e200 0x100>;
|
||||
interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_KBC>;
|
||||
resets = <&tegra_car 36>;
|
||||
reset-names = "kbc";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
emc@7000f400 {
|
||||
#address-cells = < 1 >;
|
||||
#size-cells = < 0 >;
|
||||
pmc@7000e400 {
|
||||
compatible = "nvidia,tegra20-pmc";
|
||||
reg = <0x7000e400 0x400>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_PCLK>, <&clk32k_in>;
|
||||
clock-names = "pclk", "clk32k_in";
|
||||
};
|
||||
|
||||
memory-controller@7000f000 {
|
||||
compatible = "nvidia,tegra20-mc";
|
||||
reg = <0x7000f000 0x024
|
||||
0x7000f03c 0x3c4>;
|
||||
interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
iommu@7000f024 {
|
||||
compatible = "nvidia,tegra20-gart";
|
||||
reg = <0x7000f024 0x00000018 /* controller registers */
|
||||
0x58000000 0x02000000>; /* GART aperture */
|
||||
};
|
||||
|
||||
memory-controller@7000f400 {
|
||||
compatible = "nvidia,tegra20-emc";
|
||||
reg = <0x7000f400 0x200>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
fuse@7000f800 {
|
||||
compatible = "nvidia,tegra20-efuse";
|
||||
reg = <0x7000f800 0x400>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_FUSE>;
|
||||
clock-names = "fuse";
|
||||
resets = <&tegra_car 39>;
|
||||
reset-names = "fuse";
|
||||
};
|
||||
|
||||
pcie-controller@80003000 {
|
||||
@ -416,9 +609,12 @@
|
||||
|
||||
clocks = <&tegra_car TEGRA20_CLK_PEX>,
|
||||
<&tegra_car TEGRA20_CLK_AFI>,
|
||||
<&tegra_car TEGRA20_CLK_PCIE_XCLK>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_E>;
|
||||
clock-names = "pex", "afi", "pcie_xclk", "pll_e";
|
||||
clock-names = "pex", "afi", "pll_e";
|
||||
resets = <&tegra_car 70>,
|
||||
<&tegra_car 72>,
|
||||
<&tegra_car 74>;
|
||||
reset-names = "pex", "afi", "pcie_x";
|
||||
status = "disabled";
|
||||
|
||||
pci@1,0 {
|
||||
@ -451,57 +647,158 @@
|
||||
usb@c5000000 {
|
||||
compatible = "nvidia,tegra20-ehci", "usb-ehci";
|
||||
reg = <0xc5000000 0x4000>;
|
||||
interrupts = < 52 >;
|
||||
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phy_type = "utmi";
|
||||
clocks = <&tegra_car 22>; /* PERIPH_ID_USBD */
|
||||
nvidia,has-legacy-mode;
|
||||
clocks = <&tegra_car TEGRA20_CLK_USBD>;
|
||||
resets = <&tegra_car 22>;
|
||||
reset-names = "usb";
|
||||
nvidia,needs-double-reset;
|
||||
nvidia,phy = <&phy1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
phy1: usb-phy@c5000000 {
|
||||
compatible = "nvidia,tegra20-usb-phy";
|
||||
reg = <0xc5000000 0x4000 0xc5000000 0x4000>;
|
||||
phy_type = "utmi";
|
||||
clocks = <&tegra_car TEGRA20_CLK_USBD>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_U>,
|
||||
<&tegra_car TEGRA20_CLK_CLK_M>,
|
||||
<&tegra_car TEGRA20_CLK_USBD>;
|
||||
clock-names = "reg", "pll_u", "timer", "utmi-pads";
|
||||
resets = <&tegra_car 22>, <&tegra_car 22>;
|
||||
reset-names = "usb", "utmi-pads";
|
||||
nvidia,has-legacy-mode;
|
||||
nvidia,hssync-start-delay = <9>;
|
||||
nvidia,idle-wait-delay = <17>;
|
||||
nvidia,elastic-limit = <16>;
|
||||
nvidia,term-range-adj = <6>;
|
||||
nvidia,xcvr-setup = <9>;
|
||||
nvidia,xcvr-lsfslew = <1>;
|
||||
nvidia,xcvr-lsrslew = <1>;
|
||||
nvidia,has-utmi-pad-registers;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5004000 {
|
||||
compatible = "nvidia,tegra20-ehci", "usb-ehci";
|
||||
reg = <0xc5004000 0x4000>;
|
||||
interrupts = < 53 >;
|
||||
interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phy_type = "ulpi";
|
||||
clocks = <&tegra_car 58>; /* PERIPH_ID_USB2 */
|
||||
clocks = <&tegra_car TEGRA20_CLK_USB2>;
|
||||
resets = <&tegra_car 58>;
|
||||
reset-names = "usb";
|
||||
nvidia,phy = <&phy2>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
phy2: usb-phy@c5004000 {
|
||||
compatible = "nvidia,tegra20-usb-phy";
|
||||
reg = <0xc5004000 0x4000>;
|
||||
phy_type = "ulpi";
|
||||
clocks = <&tegra_car TEGRA20_CLK_USB2>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_U>,
|
||||
<&tegra_car TEGRA20_CLK_CDEV2>;
|
||||
clock-names = "reg", "pll_u", "ulpi-link";
|
||||
resets = <&tegra_car 58>, <&tegra_car 22>;
|
||||
reset-names = "usb", "utmi-pads";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@c5008000 {
|
||||
compatible = "nvidia,tegra20-ehci", "usb-ehci";
|
||||
reg = <0xc5008000 0x4000>;
|
||||
interrupts = < 129 >;
|
||||
interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phy_type = "utmi";
|
||||
clocks = <&tegra_car 59>; /* PERIPH_ID_USB3 */
|
||||
clocks = <&tegra_car TEGRA20_CLK_USB3>;
|
||||
resets = <&tegra_car 59>;
|
||||
reset-names = "usb";
|
||||
nvidia,phy = <&phy3>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
phy3: usb-phy@c5008000 {
|
||||
compatible = "nvidia,tegra20-usb-phy";
|
||||
reg = <0xc5008000 0x4000 0xc5000000 0x4000>;
|
||||
phy_type = "utmi";
|
||||
clocks = <&tegra_car TEGRA20_CLK_USB3>,
|
||||
<&tegra_car TEGRA20_CLK_PLL_U>,
|
||||
<&tegra_car TEGRA20_CLK_CLK_M>,
|
||||
<&tegra_car TEGRA20_CLK_USBD>;
|
||||
clock-names = "reg", "pll_u", "timer", "utmi-pads";
|
||||
resets = <&tegra_car 59>, <&tegra_car 22>;
|
||||
reset-names = "usb", "utmi-pads";
|
||||
nvidia,hssync-start-delay = <9>;
|
||||
nvidia,idle-wait-delay = <17>;
|
||||
nvidia,elastic-limit = <16>;
|
||||
nvidia,term-range-adj = <6>;
|
||||
nvidia,xcvr-setup = <9>;
|
||||
nvidia,xcvr-lsfslew = <2>;
|
||||
nvidia,xcvr-lsrslew = <2>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@c8000000 {
|
||||
compatible = "nvidia,tegra20-sdhci";
|
||||
reg = <0xc8000000 0x200>;
|
||||
interrupts = <0 14 0x04>;
|
||||
clocks = <&tegra_car 14>;
|
||||
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_SDMMC1>;
|
||||
resets = <&tegra_car 14>;
|
||||
reset-names = "sdhci";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@c8000200 {
|
||||
compatible = "nvidia,tegra20-sdhci";
|
||||
reg = <0xc8000200 0x200>;
|
||||
interrupts = <0 15 0x04>;
|
||||
clocks = <&tegra_car 9>;
|
||||
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_SDMMC2>;
|
||||
resets = <&tegra_car 9>;
|
||||
reset-names = "sdhci";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@c8000400 {
|
||||
compatible = "nvidia,tegra20-sdhci";
|
||||
reg = <0xc8000400 0x200>;
|
||||
interrupts = <0 19 0x04>;
|
||||
clocks = <&tegra_car 69>;
|
||||
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_SDMMC3>;
|
||||
resets = <&tegra_car 69>;
|
||||
reset-names = "sdhci";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@c8000600 {
|
||||
compatible = "nvidia,tegra20-sdhci";
|
||||
reg = <0xc8000600 0x200>;
|
||||
interrupts = <0 31 0x04>;
|
||||
clocks = <&tegra_car 15>;
|
||||
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_SDMMC4>;
|
||||
resets = <&tegra_car 15>;
|
||||
reset-names = "sdhci";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu@0 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a9";
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
cpu@1 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a9";
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
pmu {
|
||||
compatible = "arm,cortex-a9-pmu";
|
||||
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
@ -23,12 +23,6 @@
|
||||
ranges;
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
extbus: extbus {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
|
||||
serial0: serial@54006800 {
|
||||
compatible = "socionext,uniphier-uart";
|
||||
status = "disabled";
|
||||
@ -69,9 +63,16 @@
|
||||
clocks = <&uart_clk>;
|
||||
};
|
||||
|
||||
system-bus-controller@58c00000 {
|
||||
compatible = "socionext,uniphier-system-bus-controller";
|
||||
reg = <0x58c00000 0x400>, <0x59800000 0x2000>;
|
||||
system_bus: system-bus@58c00000 {
|
||||
compatible = "socionext,uniphier-system-bus";
|
||||
reg = <0x58c00000 0x400>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
|
||||
smpctrl@59800000 {
|
||||
compatible = "socionext,uniphier-smpctrl";
|
||||
reg = <0x59801000 0x400>;
|
||||
};
|
||||
|
||||
mio: mioctrl@59810000 {
|
||||
|
||||
@ -51,6 +51,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sd {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -56,6 +56,118 @@
|
||||
cache-level = <2>;
|
||||
};
|
||||
|
||||
port0x: gpio@55000008 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000008 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port1x: gpio@55000010 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000010 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port2x: gpio@55000018 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000018 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port3x: gpio@55000020 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000020 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port4: gpio@55000028 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000028 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port5x: gpio@55000030 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000030 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port6x: gpio@55000038 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000038 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port7x: gpio@55000040 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000040 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port8x: gpio@55000048 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000048 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port9x: gpio@55000050 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000050 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port10x: gpio@55000058 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000058 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port11x: gpio@55000060 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000060 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port12x: gpio@55000068 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000068 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port13x: gpio@55000070 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000070 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port14x: gpio@55000078 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000078 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port16x: gpio@55000088 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000088 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
i2c0: i2c@58400000 {
|
||||
compatible = "socionext,uniphier-i2c";
|
||||
status = "disabled";
|
||||
@ -108,6 +220,31 @@
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
sd: sdhc@5a400000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a400000 0x200>;
|
||||
interrupts = <0 76 4>;
|
||||
pinctrl-names = "default", "1.8v";
|
||||
pinctrl-0 = <&pinctrl_sd>;
|
||||
pinctrl-1 = <&pinctrl_sd_1v8>;
|
||||
clocks = <&mio 0>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
emmc: sdhc@5a500000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a500000 0x200>;
|
||||
interrupts = <0 78 4>;
|
||||
pinctrl-names = "default", "1.8v";
|
||||
pinctrl-0 = <&pinctrl_emmc>;
|
||||
pinctrl-1 = <&pinctrl_emmc_1v8>;
|
||||
clocks = <&mio 1>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
usb0: usb@5a800100 {
|
||||
compatible = "socionext,uniphier-ehci", "generic-ehci";
|
||||
status = "disabled";
|
||||
|
||||
@ -53,6 +53,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sd {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -69,6 +69,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sd {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -54,6 +54,14 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sd {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sd1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -64,6 +64,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&emmc {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
@ -91,6 +95,14 @@
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&mio {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
@ -98,3 +110,7 @@
|
||||
&pinctrl_uart0 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pinctrl_emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
@ -64,6 +64,209 @@
|
||||
cache-level = <2>;
|
||||
};
|
||||
|
||||
port0x: gpio@55000008 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000008 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port1x: gpio@55000010 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000010 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port2x: gpio@55000018 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000018 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port3x: gpio@55000020 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000020 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port4: gpio@55000028 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000028 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port5x: gpio@55000030 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000030 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port6x: gpio@55000038 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000038 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port7x: gpio@55000040 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000040 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port8x: gpio@55000048 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000048 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port9x: gpio@55000050 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000050 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port10x: gpio@55000058 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000058 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port11x: gpio@55000060 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000060 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port12x: gpio@55000068 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000068 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port13x: gpio@55000070 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000070 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port14x: gpio@55000078 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000078 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port17x: gpio@550000a0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000a0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port18x: gpio@550000a8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000a8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port19x: gpio@550000b0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000b0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port20x: gpio@550000b8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000b8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port21x: gpio@550000c0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000c0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port22x: gpio@550000c8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000c8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port23x: gpio@550000d0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000d0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port24x: gpio@550000d8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000d8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port25x: gpio@550000e0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000e0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port26x: gpio@550000e8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000e8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port27x: gpio@550000f0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000f0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port28x: gpio@550000f8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000f8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port29x: gpio@55000100 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000100 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port30x: gpio@55000108 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000108 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
i2c0: i2c@58780000 {
|
||||
compatible = "socionext,uniphier-fi2c";
|
||||
status = "disabled";
|
||||
@ -140,6 +343,43 @@
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
sd: sdhc@5a400000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a400000 0x200>;
|
||||
interrupts = <0 76 4>;
|
||||
pinctrl-names = "default", "1.8v";
|
||||
pinctrl-0 = <&pinctrl_sd>;
|
||||
pinctrl-1 = <&pinctrl_sd_1v8>;
|
||||
clocks = <&mio 0>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
emmc: sdhc@5a500000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a500000 0x200>;
|
||||
interrupts = <0 78 4>;
|
||||
pinctrl-names = "default", "1.8v";
|
||||
pinctrl-0 = <&pinctrl_emmc>;
|
||||
pinctrl-1 = <&pinctrl_emmc_1v8>;
|
||||
clocks = <&mio 1>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
sd1: sdhc@5a600000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a600000 0x200>;
|
||||
interrupts = <0 85 4>;
|
||||
pinctrl-names = "default", "1.8v";
|
||||
pinctrl-0 = <&pinctrl_sd1>;
|
||||
pinctrl-1 = <&pinctrl_sd1_1v8>;
|
||||
clocks = <&mio 2>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
usb2: usb@5a800100 {
|
||||
compatible = "socionext,uniphier-ehci", "generic-ehci";
|
||||
status = "disabled";
|
||||
|
||||
@ -47,6 +47,14 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&emmc {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sd {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* for U-Boot only */
|
||||
/ {
|
||||
soc {
|
||||
|
||||
@ -76,6 +76,209 @@
|
||||
cache-level = <3>;
|
||||
};
|
||||
|
||||
port0x: gpio@55000008 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000008 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port1x: gpio@55000010 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000010 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port2x: gpio@55000018 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000018 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port3x: gpio@55000020 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000020 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port4: gpio@55000028 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000028 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port5x: gpio@55000030 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000030 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port6x: gpio@55000038 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000038 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port7x: gpio@55000040 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000040 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port8x: gpio@55000048 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000048 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port9x: gpio@55000050 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000050 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port10x: gpio@55000058 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000058 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port11x: gpio@55000060 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000060 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port12x: gpio@55000068 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000068 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port13x: gpio@55000070 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000070 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port14x: gpio@55000078 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000078 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port17x: gpio@550000a0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000a0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port18x: gpio@550000a8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000a8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port19x: gpio@550000b0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000b0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port20x: gpio@550000b8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000b8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port21x: gpio@550000c0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000c0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port22x: gpio@550000c8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000c8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port23x: gpio@550000d0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000d0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port24x: gpio@550000d8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000d8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port25x: gpio@550000e0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000e0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port26x: gpio@550000e8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000e8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port27x: gpio@550000f0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000f0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port28x: gpio@550000f8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000f8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port29x: gpio@55000100 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000100 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port30x: gpio@55000108 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000108 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
i2c0: i2c@58780000 {
|
||||
compatible = "socionext,uniphier-fi2c";
|
||||
status = "disabled";
|
||||
@ -152,6 +355,30 @@
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
emmc: sdhc@68400000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x68400000 0x800>;
|
||||
interrupts = <0 78 4>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_emmc>;
|
||||
clocks = <&mio 1>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
sd: sdhc@68800000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x68800000 0x800>;
|
||||
interrupts = <0 76 4>;
|
||||
pinctrl-names = "default", "1.8v";
|
||||
pinctrl-0 = <&pinctrl_sd>;
|
||||
pinctrl-1 = <&pinctrl_sd_1v8>;
|
||||
clocks = <&mio 0>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
usb0: usb@65a00000 {
|
||||
compatible = "socionext,uniphier-xhci", "generic-xhci";
|
||||
status = "disabled";
|
||||
|
||||
@ -52,6 +52,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sd {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -62,12 +62,6 @@
|
||||
ranges;
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
extbus: extbus {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
|
||||
timer@20000200 {
|
||||
compatible = "arm,cortex-a9-global-timer";
|
||||
reg = <0x20000200 0x20>;
|
||||
@ -117,6 +111,118 @@
|
||||
clock-frequency = <36864000>;
|
||||
};
|
||||
|
||||
port0x: gpio@55000008 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000008 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port1x: gpio@55000010 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000010 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port2x: gpio@55000018 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000018 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port3x: gpio@55000020 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000020 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port4: gpio@55000028 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000028 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port5x: gpio@55000030 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000030 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port6x: gpio@55000038 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000038 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port7x: gpio@55000040 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000040 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port8x: gpio@55000048 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000048 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port9x: gpio@55000050 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000050 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port10x: gpio@55000058 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000058 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port11x: gpio@55000060 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000060 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port12x: gpio@55000068 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000068 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port13x: gpio@55000070 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000070 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port14x: gpio@55000078 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000078 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port16x: gpio@55000088 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000088 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
i2c0: i2c@58400000 {
|
||||
compatible = "socionext,uniphier-i2c";
|
||||
status = "disabled";
|
||||
@ -172,10 +278,16 @@
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
system-bus-controller-misc@59800000 {
|
||||
compatible = "socionext,uniphier-system-bus-controller-misc",
|
||||
"syscon";
|
||||
reg = <0x59800000 0x2000>;
|
||||
system_bus: system-bus@58c00000 {
|
||||
compatible = "socionext,uniphier-system-bus";
|
||||
reg = <0x58c00000 0x400>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
|
||||
smpctrl@59800000 {
|
||||
compatible = "socionext,uniphier-smpctrl";
|
||||
reg = <0x59801000 0x400>;
|
||||
};
|
||||
|
||||
mio: mioctrl@59810000 {
|
||||
@ -186,6 +298,25 @@
|
||||
clocks = <&sysctrl 10>, <&sysctrl 18>;
|
||||
};
|
||||
|
||||
emmc: sdhc@5a400000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a400000 0x200>;
|
||||
interrupts = <0 78 4>;
|
||||
clocks = <&mio 1>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
sd: sdhc@5a500000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a500000 0x200>;
|
||||
interrupts = <0 76 4>;
|
||||
clocks = <&mio 0>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
usb0: usb@5a800100 {
|
||||
compatible = "socionext,uniphier-ehci", "generic-ehci";
|
||||
status = "disabled";
|
||||
|
||||
@ -51,6 +51,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sd {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -56,6 +56,118 @@
|
||||
cache-level = <2>;
|
||||
};
|
||||
|
||||
port0x: gpio@55000008 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000008 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port1x: gpio@55000010 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000010 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port2x: gpio@55000018 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000018 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port3x: gpio@55000020 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000020 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port4: gpio@55000028 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000028 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port5x: gpio@55000030 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000030 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port6x: gpio@55000038 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000038 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port7x: gpio@55000040 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000040 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port8x: gpio@55000048 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000048 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port9x: gpio@55000050 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000050 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port10x: gpio@55000058 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000058 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port11x: gpio@55000060 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000060 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port12x: gpio@55000068 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000068 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port13x: gpio@55000070 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000070 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port14x: gpio@55000078 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000078 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port16x: gpio@55000088 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000088 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
i2c0: i2c@58400000 {
|
||||
compatible = "socionext,uniphier-i2c";
|
||||
status = "disabled";
|
||||
@ -108,6 +220,31 @@
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
sd: sdhc@5a400000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a400000 0x200>;
|
||||
interrupts = <0 76 4>;
|
||||
pinctrl-names = "default", "1.8v";
|
||||
pinctrl-0 = <&pinctrl_sd>;
|
||||
pinctrl-1 = <&pinctrl_sd_1v8>;
|
||||
clocks = <&mio 0>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
emmc: sdhc@5a500000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
interrupts = <0 78 4>;
|
||||
reg = <0x5a500000 0x200>;
|
||||
pinctrl-names = "default", "1.8v";
|
||||
pinctrl-0 = <&pinctrl_emmc>;
|
||||
pinctrl-1 = <&pinctrl_emmc_1v8>;
|
||||
clocks = <&mio 1>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
usb0: usb@5a800100 {
|
||||
compatible = "socionext,uniphier-ehci", "generic-ehci";
|
||||
status = "disabled";
|
||||
|
||||
@ -12,6 +12,11 @@
|
||||
function = "emmc";
|
||||
};
|
||||
|
||||
pinctrl_emmc_1v8: emmc_grp_1v8 {
|
||||
groups = "emmc", "emmc_dat8";
|
||||
function = "emmc";
|
||||
};
|
||||
|
||||
pinctrl_i2c0: i2c0_grp {
|
||||
groups = "i2c0";
|
||||
function = "i2c0";
|
||||
@ -37,11 +42,21 @@
|
||||
function = "sd";
|
||||
};
|
||||
|
||||
pinctrl_sd_1v8: sd_grp_1v8 {
|
||||
groups = "sd";
|
||||
function = "sd";
|
||||
};
|
||||
|
||||
pinctrl_sd1: sd1_grp {
|
||||
groups = "sd1";
|
||||
function = "sd1";
|
||||
};
|
||||
|
||||
pinctrl_sd1_1v8: sd1_grp_1v8 {
|
||||
groups = "sd1";
|
||||
function = "sd1";
|
||||
};
|
||||
|
||||
pinctrl_uart0: uart0_grp {
|
||||
groups = "uart0";
|
||||
function = "uart0";
|
||||
|
||||
@ -52,6 +52,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&emmc {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
@ -71,6 +75,14 @@
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&mio {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
@ -78,3 +90,7 @@
|
||||
&pinctrl_uart2 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pinctrl_emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
@ -41,6 +41,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&emmc {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
@ -56,6 +60,14 @@
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&mio {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
@ -63,3 +75,7 @@
|
||||
&pinctrl_uart2 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pinctrl_emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
@ -78,6 +78,202 @@
|
||||
cache-level = <2>;
|
||||
};
|
||||
|
||||
port0x: gpio@55000008 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000008 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port1x: gpio@55000010 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000010 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port2x: gpio@55000018 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000018 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port3x: gpio@55000020 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000020 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port4: gpio@55000028 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000028 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port5x: gpio@55000030 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000030 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port6x: gpio@55000038 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000038 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port7x: gpio@55000040 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000040 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port8x: gpio@55000048 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000048 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port9x: gpio@55000050 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000050 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port10x: gpio@55000058 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000058 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port12x: gpio@55000068 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000068 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port13x: gpio@55000070 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000070 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port14x: gpio@55000078 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000078 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port15x: gpio@55000080 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000080 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port16x: gpio@55000088 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x55000088 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port17x: gpio@550000a0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000a0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port18x: gpio@550000a8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000a8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port19x: gpio@550000b0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000b0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port20x: gpio@550000b8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000b8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port21x: gpio@550000c0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000c0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port22x: gpio@550000c8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000c8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port23x: gpio@550000d0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000d0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port24x: gpio@550000d8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000d8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port25x: gpio@550000e0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000e0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port26x: gpio@550000e8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000e8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port27x: gpio@550000f0 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000f0 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
port28x: gpio@550000f8 {
|
||||
compatible = "socionext,uniphier-gpio";
|
||||
reg = <0x550000f8 0x8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
i2c0: i2c@58780000 {
|
||||
compatible = "socionext,uniphier-fi2c";
|
||||
status = "disabled";
|
||||
@ -163,6 +359,30 @@
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
emmc: sdhc@5a000000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a000000 0x800>;
|
||||
interrupts = <0 78 4>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_emmc>;
|
||||
clocks = <&mio 1>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
sd: sdhc@5a400000 {
|
||||
compatible = "socionext,uniphier-sdhc";
|
||||
status = "disabled";
|
||||
reg = <0x5a400000 0x800>;
|
||||
interrupts = <0 76 4>;
|
||||
pinctrl-names = "default", "1.8v";
|
||||
pinctrl-0 = <&pinctrl_sd>;
|
||||
pinctrl-1 = <&pinctrl_sd_1v8>;
|
||||
clocks = <&mio 0>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
usb0: usb@65a00000 {
|
||||
compatible = "socionext,uniphier-xhci", "generic-xhci";
|
||||
status = "disabled";
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
};
|
||||
|
||||
&qspi {
|
||||
u-boot,dm-pre-reloc;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
@ -306,6 +306,7 @@
|
||||
};
|
||||
|
||||
&qspi {
|
||||
u-boot,dm-pre-reloc;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
@ -61,6 +61,7 @@
|
||||
};
|
||||
|
||||
&qspi {
|
||||
u-boot,dm-pre-reloc;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
@ -31,8 +31,9 @@
|
||||
};
|
||||
|
||||
usb_phy0: phy0 {
|
||||
compatible = "usb-nop-xceiv";
|
||||
#phy-cells = <0>;
|
||||
compatible = "usb-nop-xceiv";
|
||||
reset-gpios = <&gpio0 46 1>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@ -3,3 +3,17 @@ config IMX_CONFIG
|
||||
|
||||
config ROM_UNIFIED_SECTIONS
|
||||
bool
|
||||
|
||||
config IMX_RDC
|
||||
bool "i.MX Resource domain controller driver"
|
||||
depends on ARCH_MX6 || ARCH_MX7
|
||||
help
|
||||
i.MX Resource domain controller is used to assign masters
|
||||
and peripherals to differet domains. This can be used to
|
||||
isolate resources.
|
||||
|
||||
config IMX_BOOTAUX
|
||||
bool "Support boot auxiliary core"
|
||||
depends on ARCH_MX7 || ARCH_MX6
|
||||
help
|
||||
bootaux [addr] to boot auxiliary core.
|
||||
|
||||
@ -27,6 +27,8 @@ ifeq ($(SOC),$(filter $(SOC),mx6 mx7))
|
||||
obj-y += cache.o init.o
|
||||
obj-$(CONFIG_CMD_SATA) += sata.o
|
||||
obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o
|
||||
obj-$(CONFIG_IMX_RDC) += rdc-sema.o
|
||||
obj-$(CONFIG_IMX_BOOTAUX) += imx_bootaux.o
|
||||
obj-$(CONFIG_SECURE_BOOT) += hab.o
|
||||
endif
|
||||
ifeq ($(SOC),$(filter $(SOC),vf610))
|
||||
|
||||
72
arch/arm/imx-common/imx_bootaux.c
Normal file
72
arch/arm/imx-common/imx_bootaux.c
Normal file
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
|
||||
/* Allow for arch specific config before we boot */
|
||||
static int __arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
|
||||
{
|
||||
/* please define platform specific arch_auxiliary_core_up() */
|
||||
return CMD_RET_FAILURE;
|
||||
}
|
||||
|
||||
int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
|
||||
__attribute__((weak, alias("__arch_auxiliary_core_up")));
|
||||
|
||||
/* Allow for arch specific config before we boot */
|
||||
static int __arch_auxiliary_core_check_up(u32 core_id)
|
||||
{
|
||||
/* please define platform specific arch_auxiliary_core_check_up() */
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_auxiliary_core_check_up(u32 core_id)
|
||||
__attribute__((weak, alias("__arch_auxiliary_core_check_up")));
|
||||
|
||||
/*
|
||||
* To i.MX6SX and i.MX7D, the image supported by bootaux needs
|
||||
* the reset vector at the head for the image, with SP and PC
|
||||
* as the first two words.
|
||||
*
|
||||
* Per the cortex-M reference manual, the reset vector of M4 needs
|
||||
* to exist at 0x0 (TCMUL). The PC and SP are the first two addresses
|
||||
* of that vector. So to boot M4, the A core must build the M4's reset
|
||||
* vector with getting the PC and SP from image and filling them to
|
||||
* TCMUL. When M4 is kicked, it will load the PC and SP by itself.
|
||||
* The TCMUL is mapped to (M4_BOOTROM_BASE_ADDR) at A core side for
|
||||
* accessing the M4 TCMUL.
|
||||
*/
|
||||
int do_bootaux(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
ulong addr;
|
||||
int ret, up;
|
||||
|
||||
if (argc < 2)
|
||||
return CMD_RET_USAGE;
|
||||
|
||||
up = arch_auxiliary_core_check_up(0);
|
||||
if (up) {
|
||||
printf("## Auxiliary core is already up\n");
|
||||
return CMD_RET_SUCCESS;
|
||||
}
|
||||
|
||||
addr = simple_strtoul(argv[1], NULL, 16);
|
||||
|
||||
printf("## Starting auxiliary core at 0x%08lX ...\n", addr);
|
||||
|
||||
ret = arch_auxiliary_core_up(0, addr);
|
||||
if (ret)
|
||||
return CMD_RET_FAILURE;
|
||||
|
||||
return CMD_RET_SUCCESS;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
bootaux, CONFIG_SYS_MAXARGS, 1, do_bootaux,
|
||||
"Start auxiliary core",
|
||||
""
|
||||
);
|
||||
183
arch/arm/imx-common/rdc-sema.c
Normal file
183
arch/arm/imx-common/rdc-sema.c
Normal file
@ -0,0 +1,183 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
#include <common.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/imx-regs.h>
|
||||
#include <asm/imx-common/rdc-sema.h>
|
||||
#include <asm/arch/imx-rdc.h>
|
||||
#include <asm-generic/errno.h>
|
||||
|
||||
/*
|
||||
* Check if the RDC Semaphore is required for this peripheral.
|
||||
*/
|
||||
static inline int imx_rdc_check_sema_required(int per_id)
|
||||
{
|
||||
struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
|
||||
u32 reg;
|
||||
|
||||
reg = readl(&imx_rdc->pdap[per_id]);
|
||||
/*
|
||||
* No semaphore:
|
||||
* Intial value or this peripheral is assigned to only one domain
|
||||
*/
|
||||
if (!(reg & RDC_PDAP_SREQ_MASK))
|
||||
return -ENOENT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check the peripheral read / write access permission on Domain [dom_id].
|
||||
*/
|
||||
int imx_rdc_check_permission(int per_id, int dom_id)
|
||||
{
|
||||
struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
|
||||
u32 reg;
|
||||
|
||||
reg = readl(&imx_rdc->pdap[per_id]);
|
||||
if (!(reg & RDC_PDAP_DRW_MASK(dom_id)))
|
||||
return -EACCES; /*No access*/
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Lock up the RDC semaphore for this peripheral if semaphore is required.
|
||||
*/
|
||||
int imx_rdc_sema_lock(int per_id)
|
||||
{
|
||||
struct rdc_sema_regs *imx_rdc_sema;
|
||||
int ret;
|
||||
u8 reg;
|
||||
|
||||
ret = imx_rdc_check_sema_required(per_id);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (per_id < SEMA_GATES_NUM)
|
||||
imx_rdc_sema = (struct rdc_sema_regs *)SEMAPHORE1_BASE_ADDR;
|
||||
else
|
||||
imx_rdc_sema = (struct rdc_sema_regs *)SEMAPHORE2_BASE_ADDR;
|
||||
|
||||
do {
|
||||
writeb(RDC_SEMA_PROC_ID,
|
||||
&imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
|
||||
reg = readb(&imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
|
||||
if ((reg & RDC_SEMA_GATE_GTFSM_MASK) == RDC_SEMA_PROC_ID)
|
||||
break; /* Get the Semaphore*/
|
||||
} while (1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Unlock the RDC semaphore for this peripheral if main CPU is the
|
||||
* semaphore owner.
|
||||
*/
|
||||
int imx_rdc_sema_unlock(int per_id)
|
||||
{
|
||||
struct rdc_sema_regs *imx_rdc_sema;
|
||||
int ret;
|
||||
u8 reg;
|
||||
|
||||
ret = imx_rdc_check_sema_required(per_id);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (per_id < SEMA_GATES_NUM)
|
||||
imx_rdc_sema = (struct rdc_sema_regs *)SEMAPHORE1_BASE_ADDR;
|
||||
else
|
||||
imx_rdc_sema = (struct rdc_sema_regs *)SEMAPHORE2_BASE_ADDR;
|
||||
|
||||
reg = readb(&imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
|
||||
if ((reg & RDC_SEMA_GATE_GTFSM_MASK) != RDC_SEMA_PROC_ID)
|
||||
return 1; /*Not the semaphore owner */
|
||||
|
||||
writeb(0x0, &imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup RDC setting for one peripheral
|
||||
*/
|
||||
int imx_rdc_setup_peri(rdc_peri_cfg_t p)
|
||||
{
|
||||
struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
|
||||
u32 reg = 0;
|
||||
u32 share_count = 0;
|
||||
u32 peri_id = p & RDC_PERI_MASK;
|
||||
u32 domain = (p & RDC_DOMAIN_MASK) >> RDC_DOMAIN_SHIFT_BASE;
|
||||
|
||||
/* No domain assigned */
|
||||
if (domain == 0)
|
||||
return -EINVAL;
|
||||
|
||||
reg |= domain;
|
||||
|
||||
share_count = (domain & 0x3)
|
||||
+ ((domain >> 2) & 0x3)
|
||||
+ ((domain >> 4) & 0x3)
|
||||
+ ((domain >> 6) & 0x3);
|
||||
|
||||
if (share_count > 0x3)
|
||||
reg |= RDC_PDAP_SREQ_MASK;
|
||||
|
||||
writel(reg, &imx_rdc->pdap[peri_id]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup RDC settings for multiple peripherals
|
||||
*/
|
||||
int imx_rdc_setup_peripherals(rdc_peri_cfg_t const *peripherals_list,
|
||||
unsigned count)
|
||||
{
|
||||
rdc_peri_cfg_t const *p = peripherals_list;
|
||||
int i, ret;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
ret = imx_rdc_setup_peri(*p);
|
||||
if (ret)
|
||||
return ret;
|
||||
p++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup RDC setting for one master
|
||||
*/
|
||||
int imx_rdc_setup_ma(rdc_ma_cfg_t p)
|
||||
{
|
||||
struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
|
||||
u32 master_id = (p & RDC_MASTER_MASK) >> RDC_MASTER_SHIFT;
|
||||
u32 domain = (p & RDC_DOMAIN_MASK) >> RDC_DOMAIN_SHIFT_BASE;
|
||||
|
||||
writel((domain & RDC_MDA_DID_MASK), &imx_rdc->mda[master_id]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup RDC settings for multiple masters
|
||||
*/
|
||||
int imx_rdc_setup_masters(rdc_ma_cfg_t const *masters_list, unsigned count)
|
||||
{
|
||||
rdc_ma_cfg_t const *p = masters_list;
|
||||
int i, ret;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
ret = imx_rdc_setup_ma(*p);
|
||||
if (ret)
|
||||
return ret;
|
||||
p++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -177,6 +177,8 @@
|
||||
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A009663
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A009929
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A009942
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A009660
|
||||
#else
|
||||
#error SoC not defined
|
||||
#endif
|
||||
|
||||
@ -9,4 +9,6 @@
|
||||
|
||||
unsigned int get_soc_major_rev(void);
|
||||
int arch_soc_init(void);
|
||||
int ls102xa_smmu_stream_id_init(void);
|
||||
|
||||
#endif /* __FSL_LS102XA_SOC_H */
|
||||
|
||||
16
arch/arm/include/asm/arch-mx6/imx-rdc.h
Normal file
16
arch/arm/include/asm/arch-mx6/imx-rdc.h
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __IMX_RDC_H__
|
||||
#define __IMX_RDC_H__
|
||||
|
||||
#if defined(CONFIG_MX6SX)
|
||||
#include "mx6sx_rdc.h"
|
||||
#else
|
||||
#error "Please select cpu"
|
||||
#endif /* CONFIG_MX6SX */
|
||||
|
||||
#endif /* __IMX_RDC_H__*/
|
||||
@ -356,6 +356,30 @@ extern void imx_get_mac_from_fuse(int dev_id, unsigned char *mac);
|
||||
#define SRC_SCR_CORE_3_ENABLE_OFFSET 24
|
||||
#define SRC_SCR_CORE_3_ENABLE_MASK (1<<SRC_SCR_CORE_3_ENABLE_OFFSET)
|
||||
|
||||
struct rdc_regs {
|
||||
u32 vir; /* Version information */
|
||||
u32 reserved1[8];
|
||||
u32 stat; /* Status */
|
||||
u32 intctrl; /* Interrupt and Control */
|
||||
u32 intstat; /* Interrupt Status */
|
||||
u32 reserved2[116];
|
||||
u32 mda[32]; /* Master Domain Assignment */
|
||||
u32 reserved3[96];
|
||||
u32 pdap[104]; /* Peripheral Domain Access Permissions */
|
||||
u32 reserved4[88];
|
||||
struct {
|
||||
u32 mrsa; /* Memory Region Start Address */
|
||||
u32 mrea; /* Memory Region End Address */
|
||||
u32 mrc; /* Memory Region Control */
|
||||
u32 mrvs; /* Memory Region Violation Status */
|
||||
} mem_region[55];
|
||||
};
|
||||
|
||||
struct rdc_sema_regs {
|
||||
u8 gate[64]; /* Gate */
|
||||
u16 rstgt; /* Reset Gate */
|
||||
};
|
||||
|
||||
/* WEIM registers */
|
||||
struct weim {
|
||||
u32 cs0gcr1;
|
||||
@ -414,6 +438,11 @@ struct src {
|
||||
u32 gpr10;
|
||||
};
|
||||
|
||||
#define SRC_SCR_M4_ENABLE_OFFSET 22
|
||||
#define SRC_SCR_M4_ENABLE_MASK (1 << 22)
|
||||
#define SRC_SCR_M4C_NON_SCLR_RST_OFFSET 4
|
||||
#define SRC_SCR_M4C_NON_SCLR_RST_MASK (1 << 4)
|
||||
|
||||
/* GPR1 bitfields */
|
||||
#define IOMUXC_GPR1_APP_CLK_REQ_N BIT(30)
|
||||
#define IOMUXC_GPR1_PCIE_EXIT_L1 BIT(28)
|
||||
|
||||
155
arch/arm/include/asm/arch-mx6/mx6sx_rdc.h
Normal file
155
arch/arm/include/asm/arch-mx6/mx6sx_rdc.h
Normal file
@ -0,0 +1,155 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __MX6SX_RDC_H__
|
||||
#define __MX6SX_RDC_H__
|
||||
|
||||
#define RDC_SEMA_PROC_ID 2 /* The processor ID for main CPU */
|
||||
|
||||
enum {
|
||||
RDC_PER_PWM1 = 0,
|
||||
RDC_PER_PWM2,
|
||||
RDC_PER_PWM3,
|
||||
RDC_PER_PWM4,
|
||||
RDC_PER_CAN1,
|
||||
RDC_PER_CAN2,
|
||||
RDC_PER_GPT,
|
||||
RDC_PER_GPIO1,
|
||||
RDC_PER_GPIO2,
|
||||
RDC_PER_GPIO3,
|
||||
RDC_PER_GPIO4,
|
||||
RDC_PER_GPIO5,
|
||||
RDC_PER_GPIO6,
|
||||
RDC_PER_GPIO7,
|
||||
RDC_PER_KPP,
|
||||
RDC_PER_WDOG1,
|
||||
RDC_PER_WODG2,
|
||||
RDC_PER_CCM,
|
||||
RDC_PER_ANATOPDIG,
|
||||
RDC_PER_SNVSHP,
|
||||
RDC_PER_EPIT1,
|
||||
RDC_PER_EPIT2,
|
||||
RDC_PER_SRC,
|
||||
RDC_PER_GPC,
|
||||
RDC_PER_IOMUXC,
|
||||
RDC_PER_IOMUXCGPR,
|
||||
RDC_PER_CANFD1,
|
||||
RDC_PER_SDMA,
|
||||
RDC_PER_CANFD2,
|
||||
RDC_PER_SEMA1,
|
||||
RDC_PER_SEMA2,
|
||||
RDC_PER_RDC,
|
||||
RDC_PER_AIPSTZ1_GE1,
|
||||
RDC_PER_AIPSTZ2_GE2,
|
||||
RDC_PER_USBO2H_PL301,
|
||||
RDC_PER_USBO2H_USB,
|
||||
RDC_PER_ENET1,
|
||||
RDC_PER_MLB25,
|
||||
RDC_PER_USDHC1,
|
||||
RDC_PER_USDHC2,
|
||||
RDC_PER_USDHC3,
|
||||
RDC_PER_USDHC4,
|
||||
RDC_PER_I2C1,
|
||||
RDC_PER_I2C2,
|
||||
RDC_PER_I2C3,
|
||||
RDC_PER_ROMCP,
|
||||
RDC_PER_MMDC,
|
||||
RDC_PER_ENET2,
|
||||
RDC_PER_EIM,
|
||||
RDC_PER_OCOTP,
|
||||
RDC_PER_CSU,
|
||||
RDC_PER_PERFMON1,
|
||||
RDC_PER_PERFMON2,
|
||||
RDC_PER_AXIMON,
|
||||
RDC_PER_TZASC1,
|
||||
RDC_PER_SAI1,
|
||||
RDC_PER_AUDMUX,
|
||||
RDC_PER_SAI2,
|
||||
RDC_PER_QSPI1,
|
||||
RDC_PER_QSPI2,
|
||||
RDC_PER_UART2,
|
||||
RDC_PER_UART3,
|
||||
RDC_PER_UART4,
|
||||
RDC_PER_UART5,
|
||||
RDC_PER_I2C4,
|
||||
RDC_PER_QOSC,
|
||||
RDC_PER_CAAM,
|
||||
RDC_PER_DAP,
|
||||
RDC_PER_ADC1,
|
||||
RDC_PER_ADC2,
|
||||
RDC_PER_WDOG3,
|
||||
RDC_PER_ECSPI5,
|
||||
RDC_PER_SEMA4,
|
||||
RDC_PER_MUPORT1,
|
||||
RDC_PER_CANFD_CPU,
|
||||
RDC_PER_MUPORT2,
|
||||
RDC_PER_UART6,
|
||||
RDC_PER_PWM5,
|
||||
RDC_PER_PWM6,
|
||||
RDC_PER_PWM7,
|
||||
RDC_PER_PWM8,
|
||||
RDC_PER_AIPSTZ3_GE0,
|
||||
RDC_PER_AIPSTZ3_GE1,
|
||||
RDC_PER_RESERVED1,
|
||||
RDC_PER_SPDIF,
|
||||
RDC_PER_ECSPI1,
|
||||
RDC_PER_ECSPI2,
|
||||
RDC_PER_ECSPI3,
|
||||
RDC_PER_ECSPI4,
|
||||
RDC_PER_RESERVED2,
|
||||
RDC_PER_RESERVED3,
|
||||
RDC_PER_UART1,
|
||||
RDC_PER_ESAI,
|
||||
RDC_PER_SSI1,
|
||||
RDC_PER_SSI2,
|
||||
RDC_PER_SSI3,
|
||||
RDC_PER_ASRC,
|
||||
RDC_PER_RESERVED4,
|
||||
RDC_PER_SPBA_MA,
|
||||
RDC_PER_GIS,
|
||||
RDC_PER_DCIC1,
|
||||
RDC_PER_DCIC2,
|
||||
RDC_PER_CSI1,
|
||||
RDC_PER_PXP,
|
||||
RDC_PER_CSI2,
|
||||
RDC_PER_LCDIF1,
|
||||
RDC_PER_LCDIF2,
|
||||
RDC_PER_VADC,
|
||||
RDC_PER_VDEC,
|
||||
RDC_PER_SPBA_DISPLAYMIX,
|
||||
};
|
||||
|
||||
enum {
|
||||
RDC_MA_A9_L2CACHE = 0,
|
||||
RDC_MA_M4,
|
||||
RDC_MA_GPU,
|
||||
RDC_MA_CSI1,
|
||||
RDC_MA_CSI2,
|
||||
RDC_MA_LCDIF1,
|
||||
RDC_MA_LCDIF2,
|
||||
RDC_MA_PXP,
|
||||
RDC_MA_PCIE_CTRL,
|
||||
RDC_MA_DAP,
|
||||
RDC_MA_CAAM,
|
||||
RDC_MA_SDMA_PERI,
|
||||
RDC_MA_SDMA_BURST,
|
||||
RDC_MA_APBHDMA,
|
||||
RDC_MA_RAWNAND,
|
||||
RDC_MA_USDHC1,
|
||||
RDC_MA_USDHC2,
|
||||
RDC_MA_USDHC3,
|
||||
RDC_MA_USDHC4,
|
||||
RDC_MA_USB,
|
||||
RDC_MA_MLB,
|
||||
RDC_MA_TEST,
|
||||
RDC_MA_ENET1_TX,
|
||||
RDC_MA_ENET1_RX,
|
||||
RDC_MA_ENET2_TX,
|
||||
RDC_MA_ENET2_RX,
|
||||
RDC_MA_SDMA,
|
||||
};
|
||||
|
||||
#endif /* __MX6SX_RDC_H__*/
|
||||
16
arch/arm/include/asm/arch-mx7/imx-rdc.h
Normal file
16
arch/arm/include/asm/arch-mx7/imx-rdc.h
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __IMX_RDC_H__
|
||||
#define __IMX_RDC_H__
|
||||
|
||||
#if defined(CONFIG_MX7D)
|
||||
#include "mx7d_rdc.h"
|
||||
#else
|
||||
#error "Please select cpu"
|
||||
#endif /* CONFIG_MX7D */
|
||||
|
||||
#endif /* __IMX_RDC_H__*/
|
||||
@ -212,10 +212,16 @@
|
||||
#define DEBUG_MONITOR_BASE_ADDR IP2APB_AXIMON_IPS_BASE_ADDR
|
||||
|
||||
#define USB_BASE_ADDR USBOTG1_IPS_BASE_ADDR
|
||||
#define SEMAPHORE1_BASE_ADDR SEMA41_IPS_BASE_ADDR
|
||||
#define SEMAPHORE2_BASE_ADDR SEMA42_IPS_BASE_ADDR
|
||||
#define RDC_BASE_ADDR RDC_IPS_BASE_ADDR
|
||||
|
||||
#define FEC_QUIRK_ENET_MAC
|
||||
#define SNVS_LPGPR 0x68
|
||||
|
||||
#define CONFIG_SYS_FSL_SEC_ADDR (CAAM_IPS_BASE_ADDR)
|
||||
#define CONFIG_SYS_FSL_JR0_ADDR (CONFIG_SYS_FSL_SEC_ADDR + 0x1000)
|
||||
|
||||
#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
|
||||
#include <asm/imx-common/regs-lcdif.h>
|
||||
#include <asm/types.h>
|
||||
@ -257,6 +263,11 @@ struct src {
|
||||
u32 ddrc_rcr;
|
||||
};
|
||||
|
||||
#define SRC_M4RCR_M4C_NON_SCLR_RST_OFFSET 0
|
||||
#define SRC_M4RCR_M4C_NON_SCLR_RST_MASK (1 << 0)
|
||||
#define SRC_M4RCR_ENABLE_M4_OFFSET 3
|
||||
#define SRC_M4RCR_ENABLE_M4_MASK (1 << 3)
|
||||
|
||||
/* GPR0 Bit Fields */
|
||||
#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL0_MASK 0x1u
|
||||
#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL0_SHIFT 0
|
||||
|
||||
163
arch/arm/include/asm/arch-mx7/mx7d_rdc.h
Normal file
163
arch/arm/include/asm/arch-mx7/mx7d_rdc.h
Normal file
@ -0,0 +1,163 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __MX7D_RDC_H__
|
||||
#define __MX7D_RDC_H__
|
||||
|
||||
#define RDC_SEMA_PROC_ID 2 /* The processor ID for main CPU */
|
||||
|
||||
enum {
|
||||
RDC_PER_GPIO1 = 0,
|
||||
RDC_PER_GPIO2,
|
||||
RDC_PER_GPIO3,
|
||||
RDC_PER_GPIO4,
|
||||
RDC_PER_GPIO5,
|
||||
RDC_PER_GPIO6,
|
||||
RDC_PER_GPIO7,
|
||||
RDC_PER_IOMUXC_LPSR_GPR,
|
||||
RDC_PER_WDOG1,
|
||||
RDC_PER_WDOG2,
|
||||
RDC_PER_WDOG3,
|
||||
RDC_PER_WDOG4,
|
||||
RDC_PER_IOMUXC_LPSR,
|
||||
RDC_PER_GPT1,
|
||||
RDC_PER_GPT2,
|
||||
RDC_PER_GPT3,
|
||||
RDC_PER_GPT4,
|
||||
RDC_PER_ROMCP,
|
||||
RDC_PER_KPP,
|
||||
RDC_PER_IOMUXC,
|
||||
RDC_PER_IOMUXCGPR,
|
||||
RDC_PER_OCOTP,
|
||||
RDC_PER_ANATOP_DIG,
|
||||
RDC_PER_SNVS_HP,
|
||||
RDC_PER_CCM,
|
||||
RDC_PER_SRC,
|
||||
RDC_PER_GPC,
|
||||
RDC_PER_SEMA1,
|
||||
RDC_PER_SEMA2,
|
||||
RDC_PER_RDC,
|
||||
RDC_PER_CSU,
|
||||
RDC_PER_RESERVED1,
|
||||
RDC_PER_RESERVED2,
|
||||
RDC_PER_ADC1,
|
||||
RDC_PER_ADC2,
|
||||
RDC_PER_ECSPI4,
|
||||
RDC_PER_FLEX_TIMER1,
|
||||
RDC_PER_FLEX_TIMER2,
|
||||
RDC_PER_PWM1,
|
||||
RDC_PER_PWM2,
|
||||
RDC_PER_PWM3,
|
||||
RDC_PER_PWM4,
|
||||
RDC_PER_SYSTEM_COUNTER_READ,
|
||||
RDC_PER_SYSTEM_COUNTER_COMPARE,
|
||||
RDC_PER_SYSTEM_COUNTER_CONTROL,
|
||||
RDC_PER_PCIE_PHY,
|
||||
RDC_PER_RESERVED3,
|
||||
RDC_PER_EPDC,
|
||||
RDC_PER_PXP,
|
||||
RDC_PER_CSI,
|
||||
RDC_PER_RESERVED4,
|
||||
RDC_PER_LCDIF,
|
||||
RDC_PER_RESERVED5,
|
||||
RDC_PER_MIPI_CSI,
|
||||
RDC_PER_MIPI_DSI,
|
||||
RDC_PER_RESERVED6,
|
||||
RDC_PER_TZASC,
|
||||
RDC_PER_DDR_PHY,
|
||||
RDC_PER_DDRC,
|
||||
RDC_PER_RESERVED7,
|
||||
RDC_PER_PERFMON1,
|
||||
RDC_PER_PERFMON2,
|
||||
RDC_PER_AXI_DEBUG_MON,
|
||||
RDC_PER_QOSC,
|
||||
RDC_PER_FLEXCAN1,
|
||||
RDC_PER_FLEXCAN2,
|
||||
RDC_PER_I2C1,
|
||||
RDC_PER_I2C2,
|
||||
RDC_PER_I2C3,
|
||||
RDC_PER_I2C4,
|
||||
RDC_PER_UART4,
|
||||
RDC_PER_UART5,
|
||||
RDC_PER_UART6,
|
||||
RDC_PER_UART7,
|
||||
RDC_PER_MU_A,
|
||||
RDC_PER_MU_B,
|
||||
RDC_PER_SEMAPHORE_HS,
|
||||
RDC_PER_USB_PL301,
|
||||
RDC_PER_RESERVED8,
|
||||
RDC_PER_RESERVED9,
|
||||
RDC_PER_RESERVED10,
|
||||
RDC_PER_USB1,
|
||||
RDC_PER_USB2,
|
||||
RDC_PER_USB3,
|
||||
RDC_PER_USDHC1,
|
||||
RDC_PER_USDHC2,
|
||||
RDC_PER_USDHC3,
|
||||
RDC_PER_RESERVED11,
|
||||
RDC_PER_RESERVED12,
|
||||
RDC_PER_SIM1,
|
||||
RDC_PER_SIM2,
|
||||
RDC_PER_QSPI,
|
||||
RDC_PER_WEIM,
|
||||
RDC_PER_SDMA,
|
||||
RDC_PER_ENET1,
|
||||
RDC_PER_ENET2,
|
||||
RDC_PER_RESERVED13,
|
||||
RDC_PER_RESERVED14,
|
||||
RDC_PER_ECSPI1,
|
||||
RDC_PER_ECSPI2,
|
||||
RDC_PER_ECSPI3,
|
||||
RDC_PER_RESERVED15,
|
||||
RDC_PER_UART1,
|
||||
RDC_PER_UART2,
|
||||
RDC_PER_UART3,
|
||||
RDC_PER_RESERVED16,
|
||||
RDC_PER_SAI1,
|
||||
RDC_PER_SAI2,
|
||||
RDC_PER_SAI3,
|
||||
RDC_PER_RESERVED17,
|
||||
RDC_PER_RESERVED18,
|
||||
RDC_PER_SPBA,
|
||||
RDC_PER_DAP,
|
||||
RDC_PER_RESERVED19,
|
||||
RDC_PER_RESERVED20,
|
||||
RDC_PER_RESERVED21,
|
||||
RDC_PER_CAAM,
|
||||
RDC_PER_RESERVED22,
|
||||
};
|
||||
|
||||
enum {
|
||||
RDC_MA_A7 = 0,
|
||||
RDC_MA_M4,
|
||||
RDC_MA_PCIE,
|
||||
RDC_MA_CSI,
|
||||
RDC_MA_EPDC,
|
||||
RDC_MA_LCDIF,
|
||||
RDC_MA_DISPLAY_PORT,
|
||||
RDC_MA_PXP,
|
||||
RDC_MA_CORESIGHT,
|
||||
RDC_MA_DAP,
|
||||
RDC_MA_CAAM,
|
||||
RDC_MA_SDMA_PERI,
|
||||
RDC_MA_SDMA_BURST,
|
||||
RDC_MA_APBHDMA,
|
||||
RDC_MA_RAWNAND,
|
||||
RDC_MA_USDHC1,
|
||||
RDC_MA_USDHC2,
|
||||
RDC_MA_USDHC3,
|
||||
RDC_MA_NC1,
|
||||
RDC_MA_USB,
|
||||
RDC_MA_NC2,
|
||||
RDC_MA_TEST,
|
||||
RDC_MA_ENET1_TX,
|
||||
RDC_MA_ENET1_RX,
|
||||
RDC_MA_ENET2_TX,
|
||||
RDC_MA_ENET2_RX,
|
||||
RDC_MA_SDMA,
|
||||
};
|
||||
|
||||
#endif /* __MX7D_RDC_H__*/
|
||||
@ -24,6 +24,14 @@
|
||||
|
||||
#define STM32_BUS_MASK 0xFFFF0000
|
||||
|
||||
#define STM32_GPIOA_BASE (STM32_APB2PERIPH_BASE + 0x0800)
|
||||
#define STM32_GPIOB_BASE (STM32_APB2PERIPH_BASE + 0x0C00)
|
||||
#define STM32_GPIOC_BASE (STM32_APB2PERIPH_BASE + 0x1000)
|
||||
#define STM32_GPIOD_BASE (STM32_APB2PERIPH_BASE + 0x1400)
|
||||
#define STM32_GPIOE_BASE (STM32_APB2PERIPH_BASE + 0x1800)
|
||||
#define STM32_GPIOF_BASE (STM32_APB2PERIPH_BASE + 0x1C00)
|
||||
#define STM32_GPIOG_BASE (STM32_APB2PERIPH_BASE + 0x2000)
|
||||
|
||||
/*
|
||||
* Register maps
|
||||
*/
|
||||
|
||||
@ -23,6 +23,16 @@
|
||||
|
||||
#define STM32_BUS_MASK 0xFFFF0000
|
||||
|
||||
#define STM32_GPIOA_BASE (STM32_AHB1PERIPH_BASE + 0x0000)
|
||||
#define STM32_GPIOB_BASE (STM32_AHB1PERIPH_BASE + 0x0400)
|
||||
#define STM32_GPIOC_BASE (STM32_AHB1PERIPH_BASE + 0x0800)
|
||||
#define STM32_GPIOD_BASE (STM32_AHB1PERIPH_BASE + 0x0C00)
|
||||
#define STM32_GPIOE_BASE (STM32_AHB1PERIPH_BASE + 0x1000)
|
||||
#define STM32_GPIOF_BASE (STM32_AHB1PERIPH_BASE + 0x1400)
|
||||
#define STM32_GPIOG_BASE (STM32_AHB1PERIPH_BASE + 0x1800)
|
||||
#define STM32_GPIOH_BASE (STM32_AHB1PERIPH_BASE + 0x1C00)
|
||||
#define STM32_GPIOI_BASE (STM32_AHB1PERIPH_BASE + 0x2000)
|
||||
|
||||
/*
|
||||
* Register maps
|
||||
*/
|
||||
|
||||
@ -22,6 +22,17 @@ enum periph_id {
|
||||
enum periph_clock {
|
||||
USART1_CLOCK_CFG = 0,
|
||||
USART2_CLOCK_CFG,
|
||||
GPIO_A_CLOCK_CFG,
|
||||
GPIO_B_CLOCK_CFG,
|
||||
GPIO_C_CLOCK_CFG,
|
||||
GPIO_D_CLOCK_CFG,
|
||||
GPIO_E_CLOCK_CFG,
|
||||
GPIO_F_CLOCK_CFG,
|
||||
GPIO_G_CLOCK_CFG,
|
||||
GPIO_H_CLOCK_CFG,
|
||||
GPIO_I_CLOCK_CFG,
|
||||
GPIO_J_CLOCK_CFG,
|
||||
GPIO_K_CLOCK_CFG,
|
||||
};
|
||||
|
||||
#endif /* __ASM_ARM_ARCH_PERIPH_H */
|
||||
|
||||
113
arch/arm/include/asm/arch-stm32f7/gpio.h
Normal file
113
arch/arm/include/asm/arch-stm32f7/gpio.h
Normal file
@ -0,0 +1,113 @@
|
||||
/*
|
||||
* (C) Copyright 2016
|
||||
* Vikas Manocha, <vikas.manocha@st.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef _STM32_GPIO_H_
|
||||
#define _STM32_GPIO_H_
|
||||
|
||||
enum stm32_gpio_port {
|
||||
STM32_GPIO_PORT_A = 0,
|
||||
STM32_GPIO_PORT_B,
|
||||
STM32_GPIO_PORT_C,
|
||||
STM32_GPIO_PORT_D,
|
||||
STM32_GPIO_PORT_E,
|
||||
STM32_GPIO_PORT_F,
|
||||
STM32_GPIO_PORT_G,
|
||||
STM32_GPIO_PORT_H,
|
||||
STM32_GPIO_PORT_I
|
||||
};
|
||||
|
||||
enum stm32_gpio_pin {
|
||||
STM32_GPIO_PIN_0 = 0,
|
||||
STM32_GPIO_PIN_1,
|
||||
STM32_GPIO_PIN_2,
|
||||
STM32_GPIO_PIN_3,
|
||||
STM32_GPIO_PIN_4,
|
||||
STM32_GPIO_PIN_5,
|
||||
STM32_GPIO_PIN_6,
|
||||
STM32_GPIO_PIN_7,
|
||||
STM32_GPIO_PIN_8,
|
||||
STM32_GPIO_PIN_9,
|
||||
STM32_GPIO_PIN_10,
|
||||
STM32_GPIO_PIN_11,
|
||||
STM32_GPIO_PIN_12,
|
||||
STM32_GPIO_PIN_13,
|
||||
STM32_GPIO_PIN_14,
|
||||
STM32_GPIO_PIN_15
|
||||
};
|
||||
|
||||
enum stm32_gpio_mode {
|
||||
STM32_GPIO_MODE_IN = 0,
|
||||
STM32_GPIO_MODE_OUT,
|
||||
STM32_GPIO_MODE_AF,
|
||||
STM32_GPIO_MODE_AN
|
||||
};
|
||||
|
||||
enum stm32_gpio_otype {
|
||||
STM32_GPIO_OTYPE_PP = 0,
|
||||
STM32_GPIO_OTYPE_OD
|
||||
};
|
||||
|
||||
enum stm32_gpio_speed {
|
||||
STM32_GPIO_SPEED_2M = 0,
|
||||
STM32_GPIO_SPEED_25M,
|
||||
STM32_GPIO_SPEED_50M,
|
||||
STM32_GPIO_SPEED_100M
|
||||
};
|
||||
|
||||
enum stm32_gpio_pupd {
|
||||
STM32_GPIO_PUPD_NO = 0,
|
||||
STM32_GPIO_PUPD_UP,
|
||||
STM32_GPIO_PUPD_DOWN
|
||||
};
|
||||
|
||||
enum stm32_gpio_af {
|
||||
STM32_GPIO_AF0 = 0,
|
||||
STM32_GPIO_AF1,
|
||||
STM32_GPIO_AF2,
|
||||
STM32_GPIO_AF3,
|
||||
STM32_GPIO_AF4,
|
||||
STM32_GPIO_AF5,
|
||||
STM32_GPIO_AF6,
|
||||
STM32_GPIO_AF7,
|
||||
STM32_GPIO_AF8,
|
||||
STM32_GPIO_AF9,
|
||||
STM32_GPIO_AF10,
|
||||
STM32_GPIO_AF11,
|
||||
STM32_GPIO_AF12,
|
||||
STM32_GPIO_AF13,
|
||||
STM32_GPIO_AF14,
|
||||
STM32_GPIO_AF15
|
||||
};
|
||||
|
||||
struct stm32_gpio_dsc {
|
||||
enum stm32_gpio_port port;
|
||||
enum stm32_gpio_pin pin;
|
||||
};
|
||||
|
||||
struct stm32_gpio_ctl {
|
||||
enum stm32_gpio_mode mode;
|
||||
enum stm32_gpio_otype otype;
|
||||
enum stm32_gpio_speed speed;
|
||||
enum stm32_gpio_pupd pupd;
|
||||
enum stm32_gpio_af af;
|
||||
};
|
||||
|
||||
static inline unsigned stm32_gpio_to_port(unsigned gpio)
|
||||
{
|
||||
return gpio / 16;
|
||||
}
|
||||
|
||||
static inline unsigned stm32_gpio_to_pin(unsigned gpio)
|
||||
{
|
||||
return gpio % 16;
|
||||
}
|
||||
|
||||
int stm32_gpio_config(const struct stm32_gpio_dsc *gpio_dsc,
|
||||
const struct stm32_gpio_ctl *gpio_ctl);
|
||||
int stm32_gpout_set(const struct stm32_gpio_dsc *gpio_dsc, int state);
|
||||
|
||||
#endif /* _STM32_GPIO_H_ */
|
||||
53
arch/arm/include/asm/arch-stm32f7/gpt.h
Normal file
53
arch/arm/include/asm/arch-stm32f7/gpt.h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* (C) Copyright 2016
|
||||
* Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef _STM32_GPT_H
|
||||
#define _STM32_GPT_H
|
||||
|
||||
#include <asm/arch/stm32.h>
|
||||
|
||||
struct gpt_regs {
|
||||
u32 cr1;
|
||||
u32 cr2;
|
||||
u32 smcr;
|
||||
u32 dier;
|
||||
u32 sr;
|
||||
u32 egr;
|
||||
u32 ccmr1;
|
||||
u32 ccmr2;
|
||||
u32 ccer;
|
||||
u32 cnt;
|
||||
u32 psc;
|
||||
u32 arr;
|
||||
u32 reserved;
|
||||
u32 ccr1;
|
||||
u32 ccr2;
|
||||
u32 ccr3;
|
||||
u32 ccr4;
|
||||
u32 reserved1;
|
||||
u32 dcr;
|
||||
u32 dmar;
|
||||
u32 tim2_5_or;
|
||||
};
|
||||
|
||||
struct gpt_regs *const gpt1_regs_ptr =
|
||||
(struct gpt_regs *)TIM2_BASE;
|
||||
|
||||
/* Timer control1 register */
|
||||
#define GPT_CR1_CEN 0x0001
|
||||
#define GPT_MODE_AUTO_RELOAD (1 << 7)
|
||||
|
||||
/* Auto reload register for free running config */
|
||||
#define GPT_FREE_RUNNING 0xFFFFFFFF
|
||||
|
||||
/* Timer, HZ specific defines */
|
||||
#define CONFIG_STM32_HZ 1000
|
||||
|
||||
/* Timer Event Generation registers */
|
||||
#define TIM_EGR_UG (1 << 0)
|
||||
|
||||
#endif
|
||||
64
arch/arm/include/asm/arch-stm32f7/rcc.h
Normal file
64
arch/arm/include/asm/arch-stm32f7/rcc.h
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* (C) Copyright 2016
|
||||
* Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef _STM32_RCC_H
|
||||
#define _STM32_RCC_H
|
||||
|
||||
#define RCC_CR 0x00 /* clock control */
|
||||
#define RCC_PLLCFGR 0x04 /* PLL configuration */
|
||||
#define RCC_CFGR 0x08 /* clock configuration */
|
||||
#define RCC_CIR 0x0C /* clock interrupt */
|
||||
#define RCC_AHB1RSTR 0x10 /* AHB1 peripheral reset */
|
||||
#define RCC_AHB2RSTR 0x14 /* AHB2 peripheral reset */
|
||||
#define RCC_AHB3RSTR 0x18 /* AHB3 peripheral reset */
|
||||
#define RCC_APB1RSTR 0x20 /* APB1 peripheral reset */
|
||||
#define RCC_APB2RSTR 0x24 /* APB2 peripheral reset */
|
||||
#define RCC_AHB1ENR 0x30 /* AHB1 peripheral clock enable */
|
||||
#define RCC_AHB2ENR 0x34 /* AHB2 peripheral clock enable */
|
||||
#define RCC_AHB3ENR 0x38 /* AHB3 peripheral clock enable */
|
||||
#define RCC_APB1ENR 0x40 /* APB1 peripheral clock enable */
|
||||
#define RCC_APB2ENR 0x44 /* APB2 peripheral clock enable */
|
||||
#define RCC_AHB1LPENR 0x50 /* periph clk enable in low pwr mode */
|
||||
#define RCC_AHB2LPENR 0x54 /* AHB2 periph clk enable in low pwr mode */
|
||||
#define RCC_AHB3LPENR 0x58 /* AHB3 periph clk enable in low pwr mode */
|
||||
#define RCC_APB1LPENR 0x60 /* APB1 periph clk enable in low pwr mode */
|
||||
#define RCC_APB2LPENR 0x64 /* APB2 periph clk enable in low pwr mode */
|
||||
#define RCC_BDCR 0x70 /* Backup domain control */
|
||||
#define RCC_CSR 0x74 /* clock control & status */
|
||||
#define RCC_SSCGR 0x80 /* spread spectrum clock generation */
|
||||
#define RCC_PLLI2SCFGR 0x84 /* PLLI2S configuration */
|
||||
#define RCC_PLLSAICFG 0x88 /* PLLSAI configuration */
|
||||
#define RCC_DCKCFG1 0x8C /* dedicated clocks configuration register */
|
||||
#define RCC_DCKCFG2 0x90 /* dedicated clocks configuration register */
|
||||
|
||||
#define RCC_APB1ENR_TIM2EN (1 << 0)
|
||||
#define RCC_APB1ENR_PWREN (1 << 28)
|
||||
|
||||
/*
|
||||
* RCC USART specific definitions
|
||||
*/
|
||||
#define RCC_ENR_USART1EN (1 << 4)
|
||||
#define RCC_ENR_USART2EN (1 << 17)
|
||||
#define RCC_ENR_USART3EN (1 << 18)
|
||||
#define RCC_ENR_USART6EN (1 << 5)
|
||||
|
||||
/*
|
||||
* RCC GPIO specific definitions
|
||||
*/
|
||||
#define RCC_ENR_GPIO_A_EN (1 << 0)
|
||||
#define RCC_ENR_GPIO_B_EN (1 << 1)
|
||||
#define RCC_ENR_GPIO_C_EN (1 << 2)
|
||||
#define RCC_ENR_GPIO_D_EN (1 << 3)
|
||||
#define RCC_ENR_GPIO_E_EN (1 << 4)
|
||||
#define RCC_ENR_GPIO_F_EN (1 << 5)
|
||||
#define RCC_ENR_GPIO_G_EN (1 << 6)
|
||||
#define RCC_ENR_GPIO_H_EN (1 << 7)
|
||||
#define RCC_ENR_GPIO_I_EN (1 << 8)
|
||||
#define RCC_ENR_GPIO_J_EN (1 << 9)
|
||||
#define RCC_ENR_GPIO_K_EN (1 << 10)
|
||||
|
||||
#endif
|
||||
63
arch/arm/include/asm/arch-stm32f7/stm32.h
Normal file
63
arch/arm/include/asm/arch-stm32f7/stm32.h
Normal file
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* (C) Copyright 2016
|
||||
* Vikas Manocha, STMicroelectronics, <vikas.manocha@st.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef _ASM_ARCH_HARDWARE_H
|
||||
#define _ASM_ARCH_HARDWARE_H
|
||||
|
||||
/* STM32F746 */
|
||||
#define ITCM_FLASH_BASE 0x00200000UL
|
||||
#define AXIM_FLASH_BASE 0x08000000UL
|
||||
|
||||
#define ITCM_SRAM_BASE 0x00000000UL
|
||||
#define DTCM_SRAM_BASE 0x20000000UL
|
||||
#define SRAM1_BASE 0x20010000UL
|
||||
#define SRAM2_BASE 0x2004C000UL
|
||||
|
||||
#define PERIPH_BASE 0x40000000UL
|
||||
|
||||
#define APB1_PERIPH_BASE (PERIPH_BASE + 0x00000000)
|
||||
#define APB2_PERIPH_BASE (PERIPH_BASE + 0x00010000)
|
||||
#define AHB1_PERIPH_BASE (PERIPH_BASE + 0x00020000)
|
||||
#define AHB2_PERIPH_BASE (PERIPH_BASE + 0x10000000)
|
||||
#define AHB3_PERIPH_BASE (PERIPH_BASE + 0x20000000)
|
||||
|
||||
#define TIM2_BASE (APB1_PERIPH_BASE + 0x0000)
|
||||
#define USART2_BASE (APB1_PERIPH_BASE + 0x4400)
|
||||
#define USART3_BASE (APB1_PERIPH_BASE + 0x4800)
|
||||
#define PWR_BASE (APB1_PERIPH_BASE + 0x7000)
|
||||
|
||||
#define USART1_BASE (APB2_PERIPH_BASE + 0x1000)
|
||||
#define USART6_BASE (APB2_PERIPH_BASE + 0x1400)
|
||||
|
||||
#define STM32_GPIOA_BASE (AHB1_PERIPH_BASE + 0x0000)
|
||||
#define STM32_GPIOB_BASE (AHB1_PERIPH_BASE + 0x0400)
|
||||
#define STM32_GPIOC_BASE (AHB1_PERIPH_BASE + 0x0800)
|
||||
#define STM32_GPIOD_BASE (AHB1_PERIPH_BASE + 0x0C00)
|
||||
#define STM32_GPIOE_BASE (AHB1_PERIPH_BASE + 0x1000)
|
||||
#define STM32_GPIOF_BASE (AHB1_PERIPH_BASE + 0x1400)
|
||||
#define STM32_GPIOG_BASE (AHB1_PERIPH_BASE + 0x1800)
|
||||
#define STM32_GPIOH_BASE (AHB1_PERIPH_BASE + 0x1C00)
|
||||
#define STM32_GPIOI_BASE (AHB1_PERIPH_BASE + 0x2000)
|
||||
#define STM32_GPIOJ_BASE (AHB1_PERIPH_BASE + 0x2400)
|
||||
#define STM32_GPIOK_BASE (AHB1_PERIPH_BASE + 0x2800)
|
||||
#define RCC_BASE (AHB1_PERIPH_BASE + 0x3800)
|
||||
#define FLASH_CNTL_BASE (AHB1_PERIPH_BASE + 0x3C00)
|
||||
|
||||
|
||||
#define SDRAM_FMC_BASE (AHB3_PERIPH_BASE + 0x4A0000140)
|
||||
|
||||
enum clock {
|
||||
CLOCK_CORE,
|
||||
CLOCK_AHB,
|
||||
CLOCK_APB1,
|
||||
CLOCK_APB2
|
||||
};
|
||||
#define STM32_BUS_MASK 0xFFFF0000
|
||||
|
||||
int configure_clocks(void);
|
||||
|
||||
#endif /* _ASM_ARCH_HARDWARE_H */
|
||||
15
arch/arm/include/asm/arch-stm32f7/stm32_defs.h
Normal file
15
arch/arm/include/asm/arch-stm32f7/stm32_defs.h
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* (C) Copyright 2016
|
||||
* Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __STM32_DEFS_H__
|
||||
#define __STM32_DEFS_H__
|
||||
#include <asm/arch/stm32_periph.h>
|
||||
|
||||
int clock_setup(enum periph_clock);
|
||||
|
||||
#endif
|
||||
|
||||
38
arch/arm/include/asm/arch-stm32f7/stm32_periph.h
Normal file
38
arch/arm/include/asm/arch-stm32f7/stm32_periph.h
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* (C) Copyright 2016
|
||||
* Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARM_ARCH_PERIPH_H
|
||||
#define __ASM_ARM_ARCH_PERIPH_H
|
||||
|
||||
/*
|
||||
* Peripherals required for pinmux configuration. List will
|
||||
* grow with support for more devices getting added.
|
||||
* Numbering based on interrupt table.
|
||||
*
|
||||
*/
|
||||
enum periph_id {
|
||||
UART1_GPIOA_9_10 = 0,
|
||||
UART2_GPIOD_5_6,
|
||||
};
|
||||
|
||||
enum periph_clock {
|
||||
USART1_CLOCK_CFG = 0,
|
||||
USART2_CLOCK_CFG,
|
||||
GPIO_A_CLOCK_CFG,
|
||||
GPIO_B_CLOCK_CFG,
|
||||
GPIO_C_CLOCK_CFG,
|
||||
GPIO_D_CLOCK_CFG,
|
||||
GPIO_E_CLOCK_CFG,
|
||||
GPIO_F_CLOCK_CFG,
|
||||
GPIO_G_CLOCK_CFG,
|
||||
GPIO_H_CLOCK_CFG,
|
||||
GPIO_I_CLOCK_CFG,
|
||||
GPIO_J_CLOCK_CFG,
|
||||
GPIO_K_CLOCK_CFG,
|
||||
};
|
||||
|
||||
#endif /* __ASM_ARM_ARCH_PERIPH_H */
|
||||
@ -229,8 +229,18 @@ struct sunxi_ccm_reg {
|
||||
/* ahb_gate0 offsets */
|
||||
#define AHB_GATE_OFFSET_USB_OHCI1 30
|
||||
#define AHB_GATE_OFFSET_USB_OHCI0 29
|
||||
#ifdef CONFIG_MACH_SUN8I_H3
|
||||
/*
|
||||
* These are EHCI1 - EHCI3 in the datasheet (EHCI0 is for the OTG) we call
|
||||
* them 0 - 2 like they were called on older SoCs.
|
||||
*/
|
||||
#define AHB_GATE_OFFSET_USB_EHCI2 27
|
||||
#define AHB_GATE_OFFSET_USB_EHCI1 26
|
||||
#define AHB_GATE_OFFSET_USB_EHCI0 25
|
||||
#else
|
||||
#define AHB_GATE_OFFSET_USB_EHCI1 27
|
||||
#define AHB_GATE_OFFSET_USB_EHCI0 26
|
||||
#endif
|
||||
#define AHB_GATE_OFFSET_USB0 24
|
||||
#define AHB_GATE_OFFSET_MCTL 14
|
||||
#define AHB_GATE_OFFSET_GMAC 17
|
||||
@ -263,13 +273,25 @@ struct sunxi_ccm_reg {
|
||||
#define CCM_USB_CTRL_PHY0_RST (0x1 << 0)
|
||||
#define CCM_USB_CTRL_PHY1_RST (0x1 << 1)
|
||||
#define CCM_USB_CTRL_PHY2_RST (0x1 << 2)
|
||||
#define CCM_USB_CTRL_PHY3_RST (0x1 << 3)
|
||||
/* There is no global phy clk gate on sun6i, define as 0 */
|
||||
#define CCM_USB_CTRL_PHYGATE 0
|
||||
#define CCM_USB_CTRL_PHY0_CLK (0x1 << 8)
|
||||
#define CCM_USB_CTRL_PHY1_CLK (0x1 << 9)
|
||||
#define CCM_USB_CTRL_PHY2_CLK (0x1 << 10)
|
||||
#define CCM_USB_CTRL_PHY3_CLK (0x1 << 11)
|
||||
#ifdef CONFIG_MACH_SUN8I_H3
|
||||
/*
|
||||
* These are OHCI1 - OHCI3 in the datasheet (OHCI0 is for the OTG) we call
|
||||
* them 0 - 2 like they were called on older SoCs.
|
||||
*/
|
||||
#define CCM_USB_CTRL_OHCI0_CLK (0x1 << 17)
|
||||
#define CCM_USB_CTRL_OHCI1_CLK (0x1 << 18)
|
||||
#define CCM_USB_CTRL_OHCI2_CLK (0x1 << 19)
|
||||
#else
|
||||
#define CCM_USB_CTRL_OHCI0_CLK (0x1 << 16)
|
||||
#define CCM_USB_CTRL_OHCI1_CLK (0x1 << 17)
|
||||
#endif
|
||||
|
||||
#define CCM_GMAC_CTRL_TX_CLK_SRC_MII 0x0
|
||||
#define CCM_GMAC_CTRL_TX_CLK_SRC_EXT_RGMII 0x1
|
||||
|
||||
@ -52,10 +52,18 @@
|
||||
#define SUNXI_USB2_BASE 0x01c1c000
|
||||
#endif
|
||||
#ifdef CONFIG_SUNXI_GEN_SUN6I
|
||||
#ifdef CONFIG_MACH_SUN8I_H3
|
||||
#define SUNXI_USBPHY_BASE 0x01c19000
|
||||
#define SUNXI_USB0_BASE 0x01c1a000
|
||||
#define SUNXI_USB1_BASE 0x01c1b000
|
||||
#define SUNXI_USB2_BASE 0x01c1c000
|
||||
#define SUNXI_USB3_BASE 0x01c1d000
|
||||
#else
|
||||
#define SUNXI_USB0_BASE 0x01c19000
|
||||
#define SUNXI_USB1_BASE 0x01c1a000
|
||||
#define SUNXI_USB2_BASE 0x01c1b000
|
||||
#endif
|
||||
#endif
|
||||
#define SUNXI_CSI1_BASE 0x01c1d000
|
||||
#define SUNXI_TZASC_BASE 0x01c1e000
|
||||
#define SUNXI_SPI3_BASE 0x01c1f000
|
||||
|
||||
@ -566,9 +566,4 @@ enum {
|
||||
#define DC_N_WINDOWS 5
|
||||
#define DC_REG_SAVE_SPACE (DC_N_WINDOWS + 5)
|
||||
|
||||
struct display_timing;
|
||||
|
||||
int display_init(void *lcdbase, int fb_bits_per_pixel,
|
||||
struct display_timing *timing);
|
||||
|
||||
#endif /* __ASM_ARCH_TEGRA_DC_H */
|
||||
|
||||
@ -27,34 +27,4 @@ struct pwm_ctlr {
|
||||
#define PWM_DIVIDER_SHIFT 0
|
||||
#define PWM_DIVIDER_MASK (0x1FFF << PWM_DIVIDER_SHIFT)
|
||||
|
||||
/**
|
||||
* Program the PWM with the given parameters.
|
||||
*
|
||||
* @param channel PWM channel to update
|
||||
* @param rate Clock rate to use for PWM, or 0 to leave alone
|
||||
* @param pulse_width high pulse width: 0=always low, 1=1/256 pulse high,
|
||||
* n = n/256 pulse high
|
||||
* @param freq_divider frequency divider value (1 to use rate as is)
|
||||
*/
|
||||
void pwm_enable(unsigned channel, int rate, int pulse_width, int freq_divider);
|
||||
|
||||
/**
|
||||
* Request a pwm channel as referenced by a device tree node.
|
||||
*
|
||||
* This channel can then be passed to pwm_enable().
|
||||
*
|
||||
* @param blob Device tree blob
|
||||
* @param node Node containing reference to pwm
|
||||
* @param prop_name Property name of pwm reference
|
||||
* @return channel number, if ok, else -1
|
||||
*/
|
||||
int pwm_request(const void *blob, int node, const char *prop_name);
|
||||
|
||||
/**
|
||||
* Set up the pwm controller, by looking it up in the fdt.
|
||||
*
|
||||
* @return 0 if ok, -1 if the device tree node was not found or invalid.
|
||||
*/
|
||||
int pwm_init(const void *blob);
|
||||
|
||||
#endif /* __ASM_ARCH_TEGRA_PWM_H */
|
||||
|
||||
@ -9,8 +9,6 @@
|
||||
#define __ASM_ARCH_TEGRA_DISPLAY_H
|
||||
|
||||
#include <asm/arch-tegra/dc.h>
|
||||
#include <fdtdec.h>
|
||||
#include <asm/gpio.h>
|
||||
|
||||
/* This holds information about a window which can be displayed */
|
||||
struct disp_ctl_win {
|
||||
@ -28,110 +26,4 @@ struct disp_ctl_win {
|
||||
unsigned out_h; /* Height of output window in pixels */
|
||||
};
|
||||
|
||||
#define FDT_LCD_TIMINGS 4
|
||||
|
||||
enum {
|
||||
FDT_LCD_TIMING_REF_TO_SYNC,
|
||||
FDT_LCD_TIMING_SYNC_WIDTH,
|
||||
FDT_LCD_TIMING_BACK_PORCH,
|
||||
FDT_LCD_TIMING_FRONT_PORCH,
|
||||
|
||||
FDT_LCD_TIMING_COUNT,
|
||||
};
|
||||
|
||||
enum lcd_cache_t {
|
||||
FDT_LCD_CACHE_OFF = 0,
|
||||
FDT_LCD_CACHE_WRITE_THROUGH = 1 << 0,
|
||||
FDT_LCD_CACHE_WRITE_BACK = 1 << 1,
|
||||
FDT_LCD_CACHE_FLUSH = 1 << 2,
|
||||
FDT_LCD_CACHE_WRITE_BACK_FLUSH = FDT_LCD_CACHE_WRITE_BACK |
|
||||
FDT_LCD_CACHE_FLUSH,
|
||||
};
|
||||
|
||||
/* Information about the display controller */
|
||||
struct fdt_disp_config {
|
||||
int valid; /* config is valid */
|
||||
int width; /* width in pixels */
|
||||
int height; /* height in pixels */
|
||||
int bpp; /* number of bits per pixel */
|
||||
|
||||
/*
|
||||
* log2 of number of bpp, in general, unless it bpp is 24 in which
|
||||
* case this field holds 24 also! This is a U-Boot thing.
|
||||
*/
|
||||
int log2_bpp;
|
||||
struct disp_ctlr *disp; /* Display controller to use */
|
||||
fdt_addr_t frame_buffer; /* Address of frame buffer */
|
||||
unsigned pixel_clock; /* Pixel clock in Hz */
|
||||
uint horiz_timing[FDT_LCD_TIMING_COUNT]; /* Horizontal timing */
|
||||
uint vert_timing[FDT_LCD_TIMING_COUNT]; /* Vertical timing */
|
||||
int panel_node; /* node offset of panel information */
|
||||
};
|
||||
|
||||
/* Information about the LCD panel */
|
||||
struct fdt_panel_config {
|
||||
int pwm_channel; /* PWM channel to use for backlight */
|
||||
enum lcd_cache_t cache_type;
|
||||
|
||||
struct gpio_desc backlight_en; /* GPIO for backlight enable */
|
||||
struct gpio_desc lvds_shutdown; /* GPIO for lvds shutdown */
|
||||
struct gpio_desc backlight_vdd; /* GPIO for backlight vdd */
|
||||
struct gpio_desc panel_vdd; /* GPIO for panel vdd */
|
||||
/*
|
||||
* Panel required timings
|
||||
* Timing 1: delay between panel_vdd-rise and data-rise
|
||||
* Timing 2: delay between data-rise and backlight_vdd-rise
|
||||
* Timing 3: delay between backlight_vdd and pwm-rise
|
||||
* Timing 4: delay between pwm-rise and backlight_en-rise
|
||||
*/
|
||||
uint panel_timings[FDT_LCD_TIMINGS];
|
||||
};
|
||||
|
||||
/**
|
||||
* Register a new display based on device tree configuration.
|
||||
*
|
||||
* The frame buffer can be positioned by U-Boot or overriden by the fdt.
|
||||
* You should pass in the U-Boot address here, and check the contents of
|
||||
* struct fdt_disp_config to see what was actually chosen.
|
||||
*
|
||||
* @param blob Device tree blob
|
||||
* @param default_lcd_base Default address of LCD frame buffer
|
||||
* @return 0 if ok, -1 on error (unsupported bits per pixel)
|
||||
*/
|
||||
int tegra_display_probe(const void *blob, void *default_lcd_base);
|
||||
|
||||
/**
|
||||
* Return the current display configuration
|
||||
*
|
||||
* @return pointer to display configuration, or NULL if there is no valid
|
||||
* config
|
||||
*/
|
||||
struct fdt_disp_config *tegra_display_get_config(void);
|
||||
|
||||
/**
|
||||
* Perform the next stage of the LCD init if it is time to do so.
|
||||
*
|
||||
* LCD init can be time-consuming because of the number of delays we need
|
||||
* while waiting for the backlight power supply, etc. This function can
|
||||
* be called at various times during U-Boot operation to advance the
|
||||
* initialization of the LCD to the next stage if sufficient time has
|
||||
* passed since the last stage. It keeps track of what stage it is up to
|
||||
* and the time that it is permitted to move to the next stage.
|
||||
*
|
||||
* The final call should have wait=1 to complete the init.
|
||||
*
|
||||
* @param blob fdt blob containing LCD information
|
||||
* @param wait 1 to wait until all init is complete, and then return
|
||||
* 0 to return immediately, potentially doing nothing if it is
|
||||
* not yet time for the next init.
|
||||
*/
|
||||
int tegra_lcd_check_next_stage(const void *blob, int wait);
|
||||
|
||||
/**
|
||||
* Set up the maximum LCD size so we can size the frame buffer.
|
||||
*
|
||||
* @param blob fdt blob containing LCD information
|
||||
*/
|
||||
void tegra_lcd_early_init(const void *blob);
|
||||
|
||||
#endif /*__ASM_ARCH_TEGRA_DISPLAY_H*/
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
PAD_CTL_PUS_22K_UP | PAD_CTL_OBE_IBE_ENABLE)
|
||||
|
||||
#define VF610_GPIO_PAD_CTRL (PAD_CTL_SPEED_MED | PAD_CTL_DSE_50ohm | \
|
||||
PAD_CTL_PUS_47K_UP | PAD_CTL_IBE_ENABLE)
|
||||
PAD_CTL_IBE_ENABLE)
|
||||
|
||||
#define VF610_DSPI_PAD_CTRL (PAD_CTL_OBE_ENABLE | PAD_CTL_DSE_20ohm | \
|
||||
PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_HIGH)
|
||||
|
||||
@ -13,9 +13,6 @@
|
||||
#define ZYNQ_GEM_BASEADDR2 0xFF0D0000
|
||||
#define ZYNQ_GEM_BASEADDR3 0xFF0E0000
|
||||
|
||||
#define ZYNQ_SPI_BASEADDR0 0xFF040000
|
||||
#define ZYNQ_SPI_BASEADDR1 0xFF050000
|
||||
|
||||
#define ZYNQ_I2C_BASEADDR0 0xFF020000
|
||||
#define ZYNQ_I2C_BASEADDR1 0xFF030000
|
||||
|
||||
|
||||
@ -1,2 +1,4 @@
|
||||
#ifndef CONFIG_ARCH_UNIPHIER
|
||||
#include <asm/arch/gpio.h>
|
||||
#endif
|
||||
#include <asm-generic/gpio.h>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user