Merge branch 'u-boot/master' into 'u-boot-arm/master'
This commit is contained in:
commit
6f43ba70d1
1917 changed files with 15330 additions and 9535 deletions
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 2015
|
||||
PATCHLEVEL = 07
|
||||
SUBLEVEL =
|
||||
EXTRAVERSION = -rc1
|
||||
EXTRAVERSION = -rc3
|
||||
NAME =
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
28
README
28
README
|
@ -977,8 +977,6 @@ The following options need to be configured:
|
|||
CONFIG_AUTOBOOT_PROMPT
|
||||
CONFIG_AUTOBOOT_DELAY_STR
|
||||
CONFIG_AUTOBOOT_STOP_STR
|
||||
CONFIG_AUTOBOOT_DELAY_STR2
|
||||
CONFIG_AUTOBOOT_STOP_STR2
|
||||
CONFIG_ZERO_BOOTDELAY_CHECK
|
||||
CONFIG_RESET_TO_RETRY
|
||||
|
||||
|
@ -1050,9 +1048,7 @@ The following options need to be configured:
|
|||
Monitor commands can be included or excluded
|
||||
from the build by using the #include files
|
||||
<config_cmd_all.h> and #undef'ing unwanted
|
||||
commands, or using <config_cmd_default.h>
|
||||
and augmenting with additional #define's
|
||||
for wanted commands.
|
||||
commands, or adding #define's for wanted commands.
|
||||
|
||||
The default command configuration includes all commands
|
||||
except those marked below with a "*".
|
||||
|
@ -3039,6 +3035,19 @@ CBFS (Coreboot Filesystem) support
|
|||
this is instead controlled by the value of
|
||||
/config/load-environment.
|
||||
|
||||
- Parallel Flash support:
|
||||
CONFIG_SYS_NO_FLASH
|
||||
|
||||
Traditionally U-boot was run on systems with parallel NOR
|
||||
flash. This option is used to disable support for parallel NOR
|
||||
flash. This option should be defined if the board does not have
|
||||
parallel flash.
|
||||
|
||||
If this option is not defined one of the generic flash drivers
|
||||
(e.g. CONFIG_FLASH_CFI_DRIVER or CONFIG_ST_SMI) must be
|
||||
selected or the board must provide an implementation of the
|
||||
flash API (see include/flash.h).
|
||||
|
||||
- DataFlash Support:
|
||||
CONFIG_HAS_DATAFLASH
|
||||
|
||||
|
@ -3081,6 +3090,15 @@ CBFS (Coreboot Filesystem) support
|
|||
memories can be connected with a given cs line.
|
||||
Currently Xilinx Zynq qspi supports these type of connections.
|
||||
|
||||
CONFIG_SPI_FLASH_MTD spi-flash MTD layer
|
||||
|
||||
Define this option to use mtd support for spi flash layer, this
|
||||
adapter is for translating mtd_read/mtd_write commands into
|
||||
spi_flash_read/spi_flash_write commands. It is not intended to
|
||||
use it within sf_cmd or the SPI flash subsystem. Such an adapter
|
||||
is needed for subsystems like UBI which can only operate on top
|
||||
of the MTD layer.
|
||||
|
||||
- SystemACE Support:
|
||||
CONFIG_SYSTEMACE
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ config ARM
|
|||
config AVR32
|
||||
bool "AVR32 architecture"
|
||||
select HAVE_GENERIC_BOARD
|
||||
select SYS_GENERIC_BOARD
|
||||
|
||||
config BLACKFIN
|
||||
bool "Blackfin architecture"
|
||||
|
|
|
@ -4,9 +4,6 @@ menu "ARC architecture"
|
|||
config SYS_ARCH
|
||||
default "arc"
|
||||
|
||||
config USE_PRIVATE_LIBGCC
|
||||
default y
|
||||
|
||||
config SYS_CPU
|
||||
default "arcv1" if ISA_ARCOMPACT
|
||||
default "arcv2" if ISA_ARCV2
|
||||
|
|
|
@ -346,8 +346,13 @@ config TARGET_DRACO
|
|||
select CPU_V7
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_DXR2
|
||||
bool "Support dxr2"
|
||||
config TARGET_THUBAN
|
||||
bool "Support thuban"
|
||||
select CPU_V7
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_RASTABAN
|
||||
bool "Support rastaban"
|
||||
select CPU_V7
|
||||
select SUPPORT_SPL
|
||||
|
||||
|
@ -369,6 +374,14 @@ config TARGET_PENGWYN
|
|||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
|
||||
config TARGET_AM335X_BALTOS
|
||||
bool "Support am335x_baltos"
|
||||
select CPU_V7
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
|
||||
config TARGET_AM335X_EVM
|
||||
bool "Support am335x_evm"
|
||||
select CPU_V7
|
||||
|
@ -668,6 +681,7 @@ config TEGRA
|
|||
select SUPPORT_SPL
|
||||
select SPL
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
select CPU_V7
|
||||
select DM
|
||||
select DM_SPI_FLASH
|
||||
|
@ -794,6 +808,7 @@ config ARCH_UNIPHIER
|
|||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_I2C
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
help
|
||||
Support for UniPhier SoC family developed by Socionext Inc.
|
||||
(formerly, System LSI Business Division of Panasonic Corporation)
|
||||
|
@ -962,6 +977,7 @@ source "board/trizepsiv/Kconfig"
|
|||
source "board/ttcontrol/vision2/Kconfig"
|
||||
source "board/udoo/Kconfig"
|
||||
source "board/vpac270/Kconfig"
|
||||
source "board/vscom/baltos/Kconfig"
|
||||
source "board/wandboard/Kconfig"
|
||||
source "board/warp/Kconfig"
|
||||
source "board/woodburn/Kconfig"
|
||||
|
|
|
@ -332,6 +332,11 @@ static void mxs_enable_4p2_dcdc_input(int xfer)
|
|||
|
||||
debug("SPL: %s 4P2 DC-DC Input\n", xfer ? "Enabling" : "Disabling");
|
||||
|
||||
if (xfer && (readl(&power_regs->hw_power_5vctrl) &
|
||||
POWER_5VCTRL_ENABLE_DCDC)) {
|
||||
return;
|
||||
}
|
||||
|
||||
prev_5v_brnout = readl(&power_regs->hw_power_5vctrl) &
|
||||
POWER_5VCTRL_PWDN_5VBRNOUT;
|
||||
prev_5v_droop = readl(&power_regs->hw_power_ctrl) &
|
||||
|
@ -343,11 +348,6 @@ static void mxs_enable_4p2_dcdc_input(int xfer)
|
|||
|
||||
clrbits_le32(&power_regs->hw_power_ctrl, POWER_CTRL_ENIRQ_VDD5V_DROOP);
|
||||
|
||||
if (xfer && (readl(&power_regs->hw_power_5vctrl) &
|
||||
POWER_5VCTRL_ENABLE_DCDC)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Recording orignal values that will be modified temporarlily
|
||||
* to handle a chip bug. See chip errata for CQ ENGR00115837
|
||||
|
|
|
@ -123,30 +123,33 @@ void config_sdram_emif4d5(const struct emif_regs *regs, int nr)
|
|||
writel(regs->ref_ctrl, &emif_reg[nr]->emif_sdram_ref_ctrl);
|
||||
writel(regs->ref_ctrl, &emif_reg[nr]->emif_sdram_ref_ctrl_shdw);
|
||||
|
||||
/* Perform hardware leveling. */
|
||||
udelay(1000);
|
||||
writel(readl(&emif_reg[nr]->emif_ddr_ext_phy_ctrl_36) |
|
||||
0x100, &emif_reg[nr]->emif_ddr_ext_phy_ctrl_36);
|
||||
writel(readl(&emif_reg[nr]->emif_ddr_ext_phy_ctrl_36_shdw) |
|
||||
0x100, &emif_reg[nr]->emif_ddr_ext_phy_ctrl_36_shdw);
|
||||
/* Perform hardware leveling for DDR3 */
|
||||
if (emif_sdram_type(regs->sdram_config) == EMIF_SDRAM_TYPE_DDR3) {
|
||||
udelay(1000);
|
||||
writel(readl(&emif_reg[nr]->emif_ddr_ext_phy_ctrl_36) |
|
||||
0x100, &emif_reg[nr]->emif_ddr_ext_phy_ctrl_36);
|
||||
writel(readl(&emif_reg[nr]->emif_ddr_ext_phy_ctrl_36_shdw) |
|
||||
0x100, &emif_reg[nr]->emif_ddr_ext_phy_ctrl_36_shdw);
|
||||
|
||||
writel(0x80000000, &emif_reg[nr]->emif_rd_wr_lvl_rmp_ctl);
|
||||
writel(0x80000000, &emif_reg[nr]->emif_rd_wr_lvl_rmp_ctl);
|
||||
|
||||
/* Enable read leveling */
|
||||
writel(0x80000000, &emif_reg[nr]->emif_rd_wr_lvl_ctl);
|
||||
/* Enable read leveling */
|
||||
writel(0x80000000, &emif_reg[nr]->emif_rd_wr_lvl_ctl);
|
||||
|
||||
/*
|
||||
* Enable full read and write leveling. Wait for read and write
|
||||
* leveling bit to clear RDWRLVLFULL_START bit 31
|
||||
*/
|
||||
while((readl(&emif_reg[nr]->emif_rd_wr_lvl_ctl) & 0x80000000) != 0)
|
||||
;
|
||||
/*
|
||||
* Enable full read and write leveling. Wait for read and write
|
||||
* leveling bit to clear RDWRLVLFULL_START bit 31
|
||||
*/
|
||||
while ((readl(&emif_reg[nr]->emif_rd_wr_lvl_ctl) & 0x80000000)
|
||||
!= 0)
|
||||
;
|
||||
|
||||
/* Check the timeout register to see if leveling is complete */
|
||||
if((readl(&emif_reg[nr]->emif_status) & 0x70) != 0)
|
||||
puts("DDR3 H/W leveling incomplete with errors\n");
|
||||
/* Check the timeout register to see if leveling is complete */
|
||||
if ((readl(&emif_reg[nr]->emif_status) & 0x70) != 0)
|
||||
puts("DDR3 H/W leveling incomplete with errors\n");
|
||||
|
||||
if (emif_sdram_type() == EMIF_SDRAM_TYPE_LPDDR2) {
|
||||
} else {
|
||||
/* DDR2 */
|
||||
configure_mr(nr, 0);
|
||||
configure_mr(nr, 1);
|
||||
}
|
||||
|
@ -182,10 +185,50 @@ void set_sdram_timings(const struct emif_regs *regs, int nr)
|
|||
writel(regs->sdram_tim3, &emif_reg[nr]->emif_sdram_tim_3_shdw);
|
||||
}
|
||||
|
||||
/*
|
||||
* Configure EXT PHY registers for software leveling
|
||||
*/
|
||||
static void ext_phy_settings_swlvl(const struct emif_regs *regs, int nr)
|
||||
{
|
||||
u32 *ext_phy_ctrl_base = 0;
|
||||
u32 *emif_ext_phy_ctrl_base = 0;
|
||||
__maybe_unused const u32 *ext_phy_ctrl_const_regs;
|
||||
u32 i = 0;
|
||||
__maybe_unused u32 size;
|
||||
|
||||
ext_phy_ctrl_base = (u32 *)&(regs->emif_ddr_ext_phy_ctrl_1);
|
||||
emif_ext_phy_ctrl_base =
|
||||
(u32 *)&(emif_reg[nr]->emif_ddr_ext_phy_ctrl_1);
|
||||
|
||||
/* Configure external phy control timing registers */
|
||||
for (i = 0; i < EMIF_EXT_PHY_CTRL_TIMING_REG; i++) {
|
||||
writel(*ext_phy_ctrl_base, emif_ext_phy_ctrl_base++);
|
||||
/* Update shadow registers */
|
||||
writel(*ext_phy_ctrl_base++, emif_ext_phy_ctrl_base++);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AM43XX
|
||||
/*
|
||||
* External phy 6-24 registers do not change with ddr frequency.
|
||||
* These only need to be set on DDR2 on AM43xx.
|
||||
*/
|
||||
emif_get_ext_phy_ctrl_const_regs(&ext_phy_ctrl_const_regs, &size);
|
||||
|
||||
if (!size)
|
||||
return;
|
||||
|
||||
for (i = 0; i < size; i++) {
|
||||
writel(ext_phy_ctrl_const_regs[i], emif_ext_phy_ctrl_base++);
|
||||
/* Update shadow registers */
|
||||
writel(ext_phy_ctrl_const_regs[i], emif_ext_phy_ctrl_base++);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Configure EXT PHY registers for hardware leveling
|
||||
*/
|
||||
static void ext_phy_settings(const struct emif_regs *regs, int nr)
|
||||
static void ext_phy_settings_hwlvl(const struct emif_regs *regs, int nr)
|
||||
{
|
||||
/*
|
||||
* Enable hardware leveling on the EMIF. For details about these
|
||||
|
@ -256,8 +299,12 @@ void config_ddr_phy(const struct emif_regs *regs, int nr)
|
|||
writel(regs->emif_ddr_phy_ctlr_1,
|
||||
&emif_reg[nr]->emif_ddr_phy_ctrl_1_shdw);
|
||||
|
||||
if (get_emif_rev((u32)emif_reg[nr]) == EMIF_4D5)
|
||||
ext_phy_settings(regs, nr);
|
||||
if (get_emif_rev((u32)emif_reg[nr]) == EMIF_4D5) {
|
||||
if (emif_sdram_type(regs->sdram_config) == EMIF_SDRAM_TYPE_DDR3)
|
||||
ext_phy_settings_hwlvl(regs, nr);
|
||||
else
|
||||
ext_phy_settings_swlvl(regs, nr);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -124,8 +124,9 @@ void config_ddr(unsigned int pll, const struct ctrl_ioregs *ioregs,
|
|||
/* Set CKE to be controlled by EMIF/DDR PHY */
|
||||
writel(DDR_CKE_CTRL_NORMAL, &ddrctrl->ddrckectrl);
|
||||
|
||||
/* Allow EMIF to control DDR_RESET */
|
||||
writel(0x00000000, &ddrctrl->ddrioctrl);
|
||||
if (emif_sdram_type(regs->sdram_config) == EMIF_SDRAM_TYPE_DDR3)
|
||||
/* Allow EMIF to control DDR_RESET */
|
||||
writel(0x00000000, &ddrctrl->ddrioctrl);
|
||||
#endif
|
||||
|
||||
/* Program EMIF instance */
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
void __weak cpu_cache_initialization(void){}
|
||||
|
||||
int cleanup_before_linux(void)
|
||||
int cleanup_before_linux_select(int flags)
|
||||
{
|
||||
/*
|
||||
* this function is called just before we call linux
|
||||
|
@ -42,24 +42,30 @@ int cleanup_before_linux(void)
|
|||
icache_disable();
|
||||
invalidate_icache_all();
|
||||
|
||||
/*
|
||||
* turn off D-cache
|
||||
* dcache_disable() in turn flushes the d-cache and disables MMU
|
||||
*/
|
||||
dcache_disable();
|
||||
v7_outer_cache_disable();
|
||||
if (flags & CBL_DISABLE_CACHES) {
|
||||
/*
|
||||
* turn off D-cache
|
||||
* dcache_disable() in turn flushes the d-cache and disables MMU
|
||||
*/
|
||||
dcache_disable();
|
||||
v7_outer_cache_disable();
|
||||
|
||||
/*
|
||||
* After D-cache is flushed and before it is disabled there may
|
||||
* be some new valid entries brought into the cache. We are sure
|
||||
* that these lines are not dirty and will not affect our execution.
|
||||
* (because unwinding the call-stack and setting a bit in CP15 SCTLR
|
||||
* is all we did during this. We have not pushed anything on to the
|
||||
* stack. Neither have we affected any static data)
|
||||
* So just invalidate the entire d-cache again to avoid coherency
|
||||
* problems for kernel
|
||||
*/
|
||||
invalidate_dcache_all();
|
||||
/*
|
||||
* After D-cache is flushed and before it is disabled there may
|
||||
* be some new valid entries brought into the cache. We are
|
||||
* sure that these lines are not dirty and will not affect our
|
||||
* execution. (because unwinding the call-stack and setting a
|
||||
* bit in CP15 SCTRL is all we did during this. We have not
|
||||
* pushed anything on to the stack. Neither have we affected
|
||||
* any static data) So just invalidate the entire d-cache again
|
||||
* to avoid coherency problems for kernel
|
||||
*/
|
||||
invalidate_dcache_all();
|
||||
} else {
|
||||
flush_dcache_all();
|
||||
invalidate_icache_all();
|
||||
icache_enable();
|
||||
}
|
||||
|
||||
/*
|
||||
* Some CPU need more cache attention before starting the kernel.
|
||||
|
@ -68,3 +74,8 @@ int cleanup_before_linux(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int cleanup_before_linux(void)
|
||||
{
|
||||
return cleanup_before_linux_select(CBL_ALL);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ config TARGET_SMDKV310
|
|||
select SUPPORT_SPL
|
||||
bool "Exynos4210 SMDKV310 board"
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
config TARGET_TRATS
|
||||
bool "Exynos4210 Trats board"
|
||||
|
@ -28,6 +29,7 @@ config TARGET_ODROID
|
|||
config TARGET_ODROID_XU3
|
||||
bool "Exynos5422 Odroid board"
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
config TARGET_ARNDALE
|
||||
bool "Exynos5250 Arndale board"
|
||||
|
@ -35,40 +37,43 @@ config TARGET_ARNDALE
|
|||
select CPU_V7_HAS_VIRT
|
||||
select SUPPORT_SPL
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
config TARGET_SMDK5250
|
||||
bool "SMDK5250 board"
|
||||
select SUPPORT_SPL
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
config TARGET_SNOW
|
||||
bool "Snow board"
|
||||
select SUPPORT_SPL
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
config TARGET_SMDK5420
|
||||
bool "SMDK5420 board"
|
||||
select SUPPORT_SPL
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
config TARGET_PEACH_PI
|
||||
bool "Peach Pi board"
|
||||
select SUPPORT_SPL
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
config TARGET_PEACH_PIT
|
||||
bool "Peach Pit board"
|
||||
select SUPPORT_SPL
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
endchoice
|
||||
|
||||
config SYS_SOC
|
||||
default "exynos"
|
||||
|
||||
config DM_USB
|
||||
default y
|
||||
|
||||
source "board/samsung/smdkv310/Kconfig"
|
||||
source "board/samsung/trats/Kconfig"
|
||||
source "board/samsung/universal_c210/Kconfig"
|
||||
|
|
|
@ -372,6 +372,7 @@ static void setup_dplls(void)
|
|||
{
|
||||
u32 temp;
|
||||
const struct dpll_params *params;
|
||||
struct emif_reg_struct *emif = (struct emif_reg_struct *)EMIF1_BASE;
|
||||
|
||||
debug("setup_dplls\n");
|
||||
|
||||
|
@ -382,7 +383,8 @@ static void setup_dplls(void)
|
|||
* Core DPLL will be locked after setting up EMIF
|
||||
* using the FREQ_UPDATE method(freq_update_core())
|
||||
*/
|
||||
if (emif_sdram_type() == EMIF_SDRAM_TYPE_LPDDR2)
|
||||
if (emif_sdram_type(readl(&emif->emif_sdram_config)) ==
|
||||
EMIF_SDRAM_TYPE_LPDDR2)
|
||||
do_setup_dpll((*prcm)->cm_clkmode_dpll_core, params,
|
||||
DPLL_NO_LOCK, "core");
|
||||
else
|
||||
|
@ -508,6 +510,12 @@ static u32 optimize_vcore_voltage(struct volts const *v)
|
|||
return val;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IODELAY_RECALIBRATION
|
||||
void __weak recalibrate_iodelay(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Setup the voltages for the main SoC core power domains.
|
||||
* We start with the maximum voltages allowed here, as set in the corresponding
|
||||
|
@ -561,6 +569,16 @@ void scale_vcores(struct vcores_data const *vcores)
|
|||
|
||||
debug("cor: %d\n", vcores->core.value);
|
||||
do_scale_vcore(vcores->core.addr, vcores->core.value, vcores->core.pmic);
|
||||
/*
|
||||
* IO delay recalibration should be done immediately after
|
||||
* adjusting AVS voltages for VDD_CORE_L.
|
||||
* Respective boards should call __recalibrate_iodelay()
|
||||
* with proper mux, virtual and manual mode configurations.
|
||||
*/
|
||||
#ifdef CONFIG_IODELAY_RECALIBRATION
|
||||
recalibrate_iodelay();
|
||||
#endif
|
||||
|
||||
debug("mpu: %d\n", vcores->mpu.value);
|
||||
do_scale_vcore(vcores->mpu.addr, vcores->mpu.value, vcores->mpu.pmic);
|
||||
/* Configure MPU ABB LDO after scale */
|
||||
|
@ -587,6 +605,16 @@ void scale_vcores(struct vcores_data const *vcores)
|
|||
val = optimize_vcore_voltage(&vcores->core);
|
||||
do_scale_vcore(vcores->core.addr, val, vcores->core.pmic);
|
||||
|
||||
/*
|
||||
* IO delay recalibration should be done immediately after
|
||||
* adjusting AVS voltages for VDD_CORE_L.
|
||||
* Respective boards should call __recalibrate_iodelay()
|
||||
* with proper mux, virtual and manual mode configurations.
|
||||
*/
|
||||
#ifdef CONFIG_IODELAY_RECALIBRATION
|
||||
recalibrate_iodelay();
|
||||
#endif
|
||||
|
||||
val = optimize_vcore_voltage(&vcores->mpu);
|
||||
do_scale_vcore(vcores->mpu.addr, val, vcores->mpu.pmic);
|
||||
|
||||
|
|
|
@ -242,13 +242,122 @@ static void omap5_ddr3_leveling(u32 base, const struct emif_regs *regs)
|
|||
__udelay(130);
|
||||
}
|
||||
|
||||
static void ddr3_leveling(u32 base, const struct emif_regs *regs)
|
||||
static void update_hwleveling_output(u32 base, const struct emif_regs *regs)
|
||||
{
|
||||
if (is_omap54xx())
|
||||
omap5_ddr3_leveling(base, regs);
|
||||
struct emif_reg_struct *emif = (struct emif_reg_struct *)base;
|
||||
u32 *emif_ext_phy_ctrl_reg, *emif_phy_status;
|
||||
u32 reg, i;
|
||||
|
||||
emif_phy_status = (u32 *)&emif->emif_ddr_phy_status[7];
|
||||
|
||||
/* Update PHY_REG_RDDQS_RATIO */
|
||||
emif_ext_phy_ctrl_reg = (u32 *)&emif->emif_ddr_ext_phy_ctrl_7;
|
||||
for (i = 0; i < PHY_RDDQS_RATIO_REGS; i++) {
|
||||
reg = readl(emif_phy_status++);
|
||||
writel(reg, emif_ext_phy_ctrl_reg++);
|
||||
writel(reg, emif_ext_phy_ctrl_reg++);
|
||||
}
|
||||
|
||||
/* Update PHY_REG_FIFO_WE_SLAVE_RATIO */
|
||||
emif_ext_phy_ctrl_reg = (u32 *)&emif->emif_ddr_ext_phy_ctrl_2;
|
||||
for (i = 0; i < PHY_FIFO_WE_SLAVE_RATIO_REGS; i++) {
|
||||
reg = readl(emif_phy_status++);
|
||||
writel(reg, emif_ext_phy_ctrl_reg++);
|
||||
writel(reg, emif_ext_phy_ctrl_reg++);
|
||||
}
|
||||
|
||||
/* Update PHY_REG_WR_DQ/DQS_SLAVE_RATIO */
|
||||
emif_ext_phy_ctrl_reg = (u32 *)&emif->emif_ddr_ext_phy_ctrl_12;
|
||||
for (i = 0; i < PHY_REG_WR_DQ_SLAVE_RATIO_REGS; i++) {
|
||||
reg = readl(emif_phy_status++);
|
||||
writel(reg, emif_ext_phy_ctrl_reg++);
|
||||
writel(reg, emif_ext_phy_ctrl_reg++);
|
||||
}
|
||||
|
||||
/* Disable Leveling */
|
||||
writel(regs->emif_ddr_phy_ctlr_1, &emif->emif_ddr_phy_ctrl_1);
|
||||
writel(regs->emif_ddr_phy_ctlr_1, &emif->emif_ddr_phy_ctrl_1_shdw);
|
||||
writel(0x0, &emif->emif_rd_wr_lvl_rmp_ctl);
|
||||
}
|
||||
|
||||
static void ddr3_init(u32 base, const struct emif_regs *regs)
|
||||
static void dra7_ddr3_leveling(u32 base, const struct emif_regs *regs)
|
||||
{
|
||||
struct emif_reg_struct *emif = (struct emif_reg_struct *)base;
|
||||
|
||||
/* Clear Error Status */
|
||||
clrsetbits_le32(&emif->emif_ddr_ext_phy_ctrl_36,
|
||||
EMIF_REG_PHY_FIFO_WE_IN_MISALINED_CLR,
|
||||
EMIF_REG_PHY_FIFO_WE_IN_MISALINED_CLR);
|
||||
|
||||
clrsetbits_le32(&emif->emif_ddr_ext_phy_ctrl_36_shdw,
|
||||
EMIF_REG_PHY_FIFO_WE_IN_MISALINED_CLR,
|
||||
EMIF_REG_PHY_FIFO_WE_IN_MISALINED_CLR);
|
||||
|
||||
/* Disable refreshed before leveling */
|
||||
clrsetbits_le32(&emif->emif_sdram_ref_ctrl, EMIF_REG_INITREF_DIS_SHIFT,
|
||||
EMIF_REG_INITREF_DIS_SHIFT);
|
||||
|
||||
/* Start Full leveling */
|
||||
writel(DDR3_FULL_LVL, &emif->emif_rd_wr_lvl_ctl);
|
||||
|
||||
__udelay(300);
|
||||
|
||||
/* Check for leveling timeout */
|
||||
if (readl(&emif->emif_status) & EMIF_REG_LEVELING_TO_MASK) {
|
||||
printf("Leveling timeout on EMIF%d\n", emif_num(base));
|
||||
return;
|
||||
}
|
||||
|
||||
/* Enable refreshes after leveling */
|
||||
clrbits_le32(&emif->emif_sdram_ref_ctrl, EMIF_REG_INITREF_DIS_SHIFT);
|
||||
|
||||
debug("HW leveling success\n");
|
||||
/*
|
||||
* Update slave ratios in EXT_PHY_CTRLx registers
|
||||
* as per HW leveling output
|
||||
*/
|
||||
update_hwleveling_output(base, regs);
|
||||
}
|
||||
|
||||
static void dra7_ddr3_init(u32 base, const struct emif_regs *regs)
|
||||
{
|
||||
struct emif_reg_struct *emif = (struct emif_reg_struct *)base;
|
||||
|
||||
if (warm_reset())
|
||||
emif_reset_phy(base);
|
||||
do_ext_phy_settings(base, regs);
|
||||
|
||||
writel(regs->ref_ctrl | EMIF_REG_INITREF_DIS_MASK,
|
||||
&emif->emif_sdram_ref_ctrl);
|
||||
/* Update timing registers */
|
||||
writel(regs->sdram_tim1, &emif->emif_sdram_tim_1);
|
||||
writel(regs->sdram_tim2, &emif->emif_sdram_tim_2);
|
||||
writel(regs->sdram_tim3, &emif->emif_sdram_tim_3);
|
||||
|
||||
writel(EMIF_L3_CONFIG_VAL_SYS_10_MPU_5_LL_0, &emif->emif_l3_config);
|
||||
writel(regs->read_idle_ctrl, &emif->emif_read_idlectrl);
|
||||
writel(regs->zq_config, &emif->emif_zq_config);
|
||||
writel(regs->temp_alert_config, &emif->emif_temp_alert_config);
|
||||
writel(regs->emif_rd_wr_lvl_rmp_ctl, &emif->emif_rd_wr_lvl_rmp_ctl);
|
||||
writel(regs->emif_rd_wr_lvl_ctl, &emif->emif_rd_wr_lvl_ctl);
|
||||
|
||||
writel(regs->emif_ddr_phy_ctlr_1_init, &emif->emif_ddr_phy_ctrl_1);
|
||||
writel(regs->emif_rd_wr_exec_thresh, &emif->emif_rd_wr_exec_thresh);
|
||||
|
||||
writel(regs->ref_ctrl, &emif->emif_sdram_ref_ctrl);
|
||||
|
||||
writel(regs->sdram_config2, &emif->emif_lpddr2_nvm_config);
|
||||
writel(regs->sdram_config_init, &emif->emif_sdram_config);
|
||||
|
||||
__udelay(1000);
|
||||
|
||||
writel(regs->ref_ctrl_final, &emif->emif_sdram_ref_ctrl);
|
||||
|
||||
if (regs->emif_rd_wr_lvl_rmp_ctl & EMIF_REG_RDWRLVL_EN_MASK)
|
||||
dra7_ddr3_leveling(base, regs);
|
||||
}
|
||||
|
||||
static void omap5_ddr3_init(u32 base, const struct emif_regs *regs)
|
||||
{
|
||||
struct emif_reg_struct *emif = (struct emif_reg_struct *)base;
|
||||
|
||||
|
@ -269,25 +378,20 @@ static void ddr3_init(u32 base, const struct emif_regs *regs)
|
|||
|
||||
writel(regs->read_idle_ctrl, &emif->emif_read_idlectrl);
|
||||
|
||||
/*
|
||||
* The same sequence should work on OMAP5432 as well. But strange that
|
||||
* it is not working
|
||||
*/
|
||||
if (is_dra7xx()) {
|
||||
do_ext_phy_settings(base, regs);
|
||||
writel(regs->ref_ctrl_final, &emif->emif_sdram_ref_ctrl);
|
||||
writel(regs->sdram_config2, &emif->emif_lpddr2_nvm_config);
|
||||
writel(regs->sdram_config_init, &emif->emif_sdram_config);
|
||||
} else {
|
||||
writel(regs->sdram_config2, &emif->emif_lpddr2_nvm_config);
|
||||
writel(regs->sdram_config_init, &emif->emif_sdram_config);
|
||||
do_ext_phy_settings(base, regs);
|
||||
}
|
||||
writel(regs->sdram_config2, &emif->emif_lpddr2_nvm_config);
|
||||
writel(regs->sdram_config_init, &emif->emif_sdram_config);
|
||||
do_ext_phy_settings(base, regs);
|
||||
|
||||
/* enable leveling */
|
||||
writel(regs->emif_rd_wr_lvl_rmp_ctl, &emif->emif_rd_wr_lvl_rmp_ctl);
|
||||
omap5_ddr3_leveling(base, regs);
|
||||
}
|
||||
|
||||
ddr3_leveling(base, regs);
|
||||
static void ddr3_init(u32 base, const struct emif_regs *regs)
|
||||
{
|
||||
if (is_omap54xx())
|
||||
omap5_ddr3_init(base, regs);
|
||||
else
|
||||
dra7_ddr3_init(base, regs);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS
|
||||
|
@ -1066,16 +1170,18 @@ static void do_sdram_init(u32 base)
|
|||
* Changing the timing registers in EMIF can happen(going from one
|
||||
* OPP to another)
|
||||
*/
|
||||
if (!(in_sdram || warm_reset())) {
|
||||
if (emif_sdram_type() == EMIF_SDRAM_TYPE_LPDDR2)
|
||||
if (!in_sdram && (!warm_reset() || is_dra7xx())) {
|
||||
if (emif_sdram_type(regs->sdram_config) ==
|
||||
EMIF_SDRAM_TYPE_LPDDR2)
|
||||
lpddr2_init(base, regs);
|
||||
else
|
||||
ddr3_init(base, regs);
|
||||
}
|
||||
if (warm_reset() && (emif_sdram_type() == EMIF_SDRAM_TYPE_DDR3)) {
|
||||
if (warm_reset() && (emif_sdram_type(regs->sdram_config) ==
|
||||
EMIF_SDRAM_TYPE_DDR3) && !is_dra7xx()) {
|
||||
set_lpmode_selfrefresh(base);
|
||||
emif_reset_phy(base);
|
||||
ddr3_leveling(base, regs);
|
||||
omap5_ddr3_leveling(base, regs);
|
||||
}
|
||||
|
||||
/* Write to the shadow registers */
|
||||
|
@ -1294,7 +1400,8 @@ static void do_bug0039_workaround(u32 base)
|
|||
void sdram_init(void)
|
||||
{
|
||||
u32 in_sdram, size_prog, size_detect;
|
||||
u32 sdram_type = emif_sdram_type();
|
||||
struct emif_reg_struct *emif = (struct emif_reg_struct *)EMIF1_BASE;
|
||||
u32 sdram_type = emif_sdram_type(emif->emif_sdram_config);
|
||||
|
||||
debug(">>sdram_init()\n");
|
||||
|
||||
|
|
|
@ -11,3 +11,4 @@ obj-y += sdram.o
|
|||
obj-y += prcm-regs.o
|
||||
obj-y += hw_data.o
|
||||
obj-y += abb.o
|
||||
obj-$(CONFIG_IODELAY_RECALIBRATION) += dra7xx_iodelay.o
|
||||
|
|
238
arch/arm/cpu/armv7/omap5/dra7xx_iodelay.c
Normal file
238
arch/arm/cpu/armv7/omap5/dra7xx_iodelay.c
Normal file
|
@ -0,0 +1,238 @@
|
|||
/*
|
||||
* (C) Copyright 2015
|
||||
* Texas Instruments Incorporated, <www.ti.com>
|
||||
*
|
||||
* Lokesh Vutla <lokeshvutla@ti.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/utils.h>
|
||||
#include <asm/arch/dra7xx_iodelay.h>
|
||||
#include <asm/arch/omap.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/arch/clock.h>
|
||||
#include <asm/arch/mux_dra7xx.h>
|
||||
#include <asm/omap_common.h>
|
||||
|
||||
static int isolate_io(u32 isolate)
|
||||
{
|
||||
if (isolate) {
|
||||
clrsetbits_le32((*ctrl)->control_pbias, SDCARD_PWRDNZ,
|
||||
SDCARD_PWRDNZ);
|
||||
clrsetbits_le32((*ctrl)->control_pbias, SDCARD_BIAS_PWRDNZ,
|
||||
SDCARD_BIAS_PWRDNZ);
|
||||
}
|
||||
|
||||
/* Override control on ISOCLKIN signal to IO pad ring. */
|
||||
clrsetbits_le32((*prcm)->prm_io_pmctrl, PMCTRL_ISOCLK_OVERRIDE_MASK,
|
||||
PMCTRL_ISOCLK_OVERRIDE_CTRL);
|
||||
if (!wait_on_value(PMCTRL_ISOCLK_STATUS_MASK, PMCTRL_ISOCLK_STATUS_MASK,
|
||||
(u32 *)(*prcm)->prm_io_pmctrl, LDELAY))
|
||||
return ERR_DEISOLATE_IO << isolate;
|
||||
|
||||
/* Isolate/Deisolate IO */
|
||||
clrsetbits_le32((*ctrl)->ctrl_core_sma_sw_0, CTRL_ISOLATE_MASK,
|
||||
isolate << CTRL_ISOLATE_SHIFT);
|
||||
/* Dummy read to add delay t > 10ns */
|
||||
readl((*ctrl)->ctrl_core_sma_sw_0);
|
||||
|
||||
/* Return control on ISOCLKIN to hardware */
|
||||
clrsetbits_le32((*prcm)->prm_io_pmctrl, PMCTRL_ISOCLK_OVERRIDE_MASK,
|
||||
PMCTRL_ISOCLK_NOT_OVERRIDE_CTRL);
|
||||
if (!wait_on_value(PMCTRL_ISOCLK_STATUS_MASK,
|
||||
0 << PMCTRL_ISOCLK_STATUS_SHIFT,
|
||||
(u32 *)(*prcm)->prm_io_pmctrl, LDELAY))
|
||||
return ERR_DEISOLATE_IO << isolate;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int calibrate_iodelay(u32 base)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
/* Configure REFCLK period */
|
||||
reg = readl(base + CFG_REG_2_OFFSET);
|
||||
reg &= ~CFG_REG_REFCLK_PERIOD_MASK;
|
||||
reg |= CFG_REG_REFCLK_PERIOD;
|
||||
writel(reg, base + CFG_REG_2_OFFSET);
|
||||
|
||||
/* Initiate Calibration */
|
||||
clrsetbits_le32(base + CFG_REG_0_OFFSET, CFG_REG_CALIB_STRT_MASK,
|
||||
CFG_REG_CALIB_STRT << CFG_REG_CALIB_STRT_SHIFT);
|
||||
if (!wait_on_value(CFG_REG_CALIB_STRT_MASK, CFG_REG_CALIB_END,
|
||||
(u32 *)(base + CFG_REG_0_OFFSET), LDELAY))
|
||||
return ERR_CALIBRATE_IODELAY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int update_delay_mechanism(u32 base)
|
||||
{
|
||||
/* Initiate the reload of calibrated values. */
|
||||
clrsetbits_le32(base + CFG_REG_0_OFFSET, CFG_REG_ROM_READ_MASK,
|
||||
CFG_REG_ROM_READ_START);
|
||||
if (!wait_on_value(CFG_REG_ROM_READ_MASK, CFG_REG_ROM_READ_END,
|
||||
(u32 *)(base + CFG_REG_0_OFFSET), LDELAY))
|
||||
return ERR_UPDATE_DELAY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 calculate_delay(u32 base, u16 offset, u16 den)
|
||||
{
|
||||
u16 refclk_period, dly_cnt, ref_cnt;
|
||||
u32 reg, q, r;
|
||||
|
||||
refclk_period = readl(base + CFG_REG_2_OFFSET) &
|
||||
CFG_REG_REFCLK_PERIOD_MASK;
|
||||
|
||||
reg = readl(base + offset);
|
||||
dly_cnt = (reg & CFG_REG_DLY_CNT_MASK) >> CFG_REG_DLY_CNT_SHIFT;
|
||||
ref_cnt = (reg & CFG_REG_REF_CNT_MASK) >> CFG_REG_REF_CNT_SHIFT;
|
||||
|
||||
if (!dly_cnt || !den)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* To avoid overflow and integer truncation, delay value
|
||||
* is calculated as quotient + remainder.
|
||||
*/
|
||||
q = 5 * ((ref_cnt * refclk_period) / (dly_cnt * den));
|
||||
r = (10 * ((ref_cnt * refclk_period) % (dly_cnt * den))) /
|
||||
(2 * dly_cnt * den);
|
||||
|
||||
return q + r;
|
||||
}
|
||||
|
||||
static u32 get_cfg_reg(u16 a_delay, u16 g_delay, u32 cpde, u32 fpde)
|
||||
{
|
||||
u32 g_delay_coarse, g_delay_fine;
|
||||
u32 a_delay_coarse, a_delay_fine;
|
||||
u32 c_elements, f_elements;
|
||||
u32 total_delay, reg = 0;
|
||||
|
||||
g_delay_coarse = g_delay / 920;
|
||||
g_delay_fine = ((g_delay % 920) * 10) / 60;
|
||||
|
||||
a_delay_coarse = a_delay / cpde;
|
||||
a_delay_fine = ((a_delay % cpde) * 10) / fpde;
|
||||
|
||||
c_elements = g_delay_coarse + a_delay_coarse;
|
||||
f_elements = (g_delay_fine + a_delay_fine) / 10;
|
||||
|
||||
if (f_elements > 22) {
|
||||
total_delay = c_elements * cpde + f_elements * fpde;
|
||||
|
||||
c_elements = total_delay / cpde;
|
||||
f_elements = (total_delay % cpde) / fpde;
|
||||
}
|
||||
|
||||
reg = (c_elements << CFG_X_COARSE_DLY_SHIFT) & CFG_X_COARSE_DLY_MASK;
|
||||
reg |= (f_elements << CFG_X_FINE_DLY_SHIFT) & CFG_X_FINE_DLY_MASK;
|
||||
reg |= CFG_X_SIGNATURE << CFG_X_SIGNATURE_SHIFT;
|
||||
reg |= CFG_X_LOCK << CFG_X_LOCK_SHIFT;
|
||||
|
||||
return reg;
|
||||
}
|
||||
|
||||
static int do_set_iodelay(u32 base, struct iodelay_cfg_entry const *array,
|
||||
int niodelays)
|
||||
{
|
||||
struct iodelay_cfg_entry *iodelay = (struct iodelay_cfg_entry *)array;
|
||||
u32 reg, cpde, fpde, i;
|
||||
|
||||
if (!niodelays)
|
||||
return 0;
|
||||
|
||||
cpde = calculate_delay((*ctrl)->iodelay_config_base, CFG_REG_3_OFFSET,
|
||||
88);
|
||||
if (!cpde)
|
||||
return ERR_CPDE;
|
||||
|
||||
fpde = calculate_delay((*ctrl)->iodelay_config_base, CFG_REG_4_OFFSET,
|
||||
264);
|
||||
if (!fpde)
|
||||
return ERR_FPDE;
|
||||
|
||||
for (i = 0; i < niodelays; i++, iodelay++) {
|
||||
reg = get_cfg_reg(iodelay->a_delay, iodelay->g_delay, cpde,
|
||||
fpde);
|
||||
writel(reg, base + iodelay->offset);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __recalibrate_iodelay(struct pad_conf_entry const *pad, int npads,
|
||||
struct iodelay_cfg_entry const *iodelay,
|
||||
int niodelays)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
/* IO recalibration should be done only from SRAM */
|
||||
if (OMAP_INIT_CONTEXT_SPL != omap_hw_init_context()) {
|
||||
puts("IODELAY recalibration called from invalid context - use only from SPL in SRAM\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* unlock IODELAY CONFIG registers */
|
||||
writel(CFG_IODELAY_UNLOCK_KEY, (*ctrl)->iodelay_config_base +
|
||||
CFG_REG_8_OFFSET);
|
||||
|
||||
ret = calibrate_iodelay((*ctrl)->iodelay_config_base);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
ret = isolate_io(ISOLATE_IO);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
ret = update_delay_mechanism((*ctrl)->iodelay_config_base);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
/* Configure Mux settings */
|
||||
do_set_mux32((*ctrl)->control_padconf_core_base, pad, npads);
|
||||
|
||||
/* Configure Manual IO timing modes */
|
||||
ret = do_set_iodelay((*ctrl)->iodelay_config_base, iodelay, niodelays);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
ret = isolate_io(DEISOLATE_IO);
|
||||
|
||||
err:
|
||||
/* lock IODELAY CONFIG registers */
|
||||
writel(CFG_IODELAY_LOCK_KEY, (*ctrl)->iodelay_config_base +
|
||||
CFG_REG_8_OFFSET);
|
||||
/*
|
||||
* UART cannot be used during IO recalibration sequence as IOs are in
|
||||
* isolation. So error handling and debug prints are done after
|
||||
* complete IO delay recalibration sequence
|
||||
*/
|
||||
switch (ret) {
|
||||
case ERR_CALIBRATE_IODELAY:
|
||||
puts("IODELAY: IO delay calibration sequence failed\n");
|
||||
break;
|
||||
case ERR_ISOLATE_IO:
|
||||
puts("IODELAY: Isolation of Device IOs failed\n");
|
||||
break;
|
||||
case ERR_UPDATE_DELAY:
|
||||
puts("IODELAY: Delay mechanism update with new calibrated values failed\n");
|
||||
break;
|
||||
case ERR_DEISOLATE_IO:
|
||||
puts("IODELAY: De-isolation of Device IOs failed\n");
|
||||
break;
|
||||
case ERR_CPDE:
|
||||
puts("IODELAY: CPDE calculation failed\n");
|
||||
break;
|
||||
case ERR_FPDE:
|
||||
puts("IODELAY: FPDE calculation failed\n");
|
||||
break;
|
||||
default:
|
||||
debug("IODELAY: IO delay recalibration successfully completed\n");
|
||||
}
|
||||
}
|
|
@ -534,6 +534,9 @@ void enable_basic_clocks(void)
|
|||
void enable_basic_uboot_clocks(void)
|
||||
{
|
||||
u32 const clk_domains_essential[] = {
|
||||
#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
|
||||
(*prcm)->cm_ipu_clkstctrl,
|
||||
#endif
|
||||
0
|
||||
};
|
||||
|
||||
|
@ -547,7 +550,11 @@ void enable_basic_uboot_clocks(void)
|
|||
(*prcm)->cm_l4per_i2c2_clkctrl,
|
||||
(*prcm)->cm_l4per_i2c3_clkctrl,
|
||||
(*prcm)->cm_l4per_i2c4_clkctrl,
|
||||
#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
|
||||
(*prcm)->cm_ipu_i2c5_clkctrl,
|
||||
#else
|
||||
(*prcm)->cm_l4per_i2c5_clkctrl,
|
||||
#endif
|
||||
(*prcm)->cm_l3init_hsusbhost_clkctrl,
|
||||
(*prcm)->cm_l3init_fsusb_clkctrl,
|
||||
0
|
||||
|
@ -592,8 +599,8 @@ const struct ctrl_ioregs ioregs_dra7xx_es1 = {
|
|||
.ctrl_ddrch = 0x40404040,
|
||||
.ctrl_lpddr2ch = 0x40404040,
|
||||
.ctrl_ddr3ch = 0x80808080,
|
||||
.ctrl_ddrio_0 = 0xA2084210,
|
||||
.ctrl_ddrio_1 = 0x84210840,
|
||||
.ctrl_ddrio_0 = 0x00094A40,
|
||||
.ctrl_ddrio_1 = 0x04A52000,
|
||||
.ctrl_ddrio_2 = 0x84210000,
|
||||
.ctrl_emif_sdram_config_ext = 0x0001C1A7,
|
||||
.ctrl_emif_sdram_config_ext_final = 0x0001C1A7,
|
||||
|
@ -604,8 +611,8 @@ const struct ctrl_ioregs ioregs_dra72x_es1 = {
|
|||
.ctrl_ddrch = 0x40404040,
|
||||
.ctrl_lpddr2ch = 0x40404040,
|
||||
.ctrl_ddr3ch = 0x60606080,
|
||||
.ctrl_ddrio_0 = 0xA2084210,
|
||||
.ctrl_ddrio_1 = 0x84210840,
|
||||
.ctrl_ddrio_0 = 0x00094A40,
|
||||
.ctrl_ddrio_1 = 0x04A52000,
|
||||
.ctrl_ddrio_2 = 0x84210000,
|
||||
.ctrl_emif_sdram_config_ext = 0x0001C1A7,
|
||||
.ctrl_emif_sdram_config_ext_final = 0x0001C1A7,
|
||||
|
|
|
@ -40,6 +40,15 @@ static struct gpio_bank gpio_bank_54xx[8] = {
|
|||
|
||||
const struct gpio_bank *const omap_gpio_bank = gpio_bank_54xx;
|
||||
|
||||
void do_set_mux32(u32 base, struct pad_conf_entry const *array, int size)
|
||||
{
|
||||
int i;
|
||||
struct pad_conf_entry *pad = (struct pad_conf_entry *)array;
|
||||
|
||||
for (i = 0; i < size; i++, pad++)
|
||||
writel(pad->val, base + pad->offset);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
/* LPDDR2 specific IO settings */
|
||||
static void io_settings_lpddr2(void)
|
||||
|
@ -75,16 +84,20 @@ static void io_settings_ddr3(void)
|
|||
|
||||
writel(ioregs->ctrl_ddrio_0, (*ctrl)->control_ddrio_0);
|
||||
writel(ioregs->ctrl_ddrio_1, (*ctrl)->control_ddrio_1);
|
||||
writel(ioregs->ctrl_ddrio_2, (*ctrl)->control_ddrio_2);
|
||||
|
||||
if (!is_dra7xx()) {
|
||||
writel(ioregs->ctrl_ddrio_2, (*ctrl)->control_ddrio_2);
|
||||
writel(ioregs->ctrl_lpddr2ch, (*ctrl)->control_lpddr2ch1_1);
|
||||
}
|
||||
|
||||
/* omap5432 does not use lpddr2 */
|
||||
writel(ioregs->ctrl_lpddr2ch, (*ctrl)->control_lpddr2ch1_0);
|
||||
writel(ioregs->ctrl_lpddr2ch, (*ctrl)->control_lpddr2ch1_1);
|
||||
|
||||
writel(ioregs->ctrl_emif_sdram_config_ext,
|
||||
(*ctrl)->control_emif1_sdram_config_ext);
|
||||
writel(ioregs->ctrl_emif_sdram_config_ext,
|
||||
(*ctrl)->control_emif2_sdram_config_ext);
|
||||
if (!is_dra72x())
|
||||
writel(ioregs->ctrl_emif_sdram_config_ext,
|
||||
(*ctrl)->control_emif2_sdram_config_ext);
|
||||
|
||||
if (is_omap54xx()) {
|
||||
/* Disable DLL select */
|
||||
|
@ -109,6 +122,7 @@ static void io_settings_ddr3(void)
|
|||
void do_io_settings(void)
|
||||
{
|
||||
u32 io_settings = 0, mask = 0;
|
||||
struct emif_reg_struct *emif = (struct emif_reg_struct *)EMIF1_BASE;
|
||||
|
||||
/* Impedance settings EMMC, C2C 1,2, hsi2 */
|
||||
mask = (ds_mask << 2) | (ds_mask << 8) |
|
||||
|
@ -164,7 +178,7 @@ void do_io_settings(void)
|
|||
(sc_fast << 17) | (sc_fast << 14);
|
||||
writel(io_settings, (*ctrl)->control_smart3io_padconf_1);
|
||||
|
||||
if (emif_sdram_type() == EMIF_SDRAM_TYPE_LPDDR2)
|
||||
if (emif_sdram_type(emif->emif_sdram_config) == EMIF_SDRAM_TYPE_LPDDR2)
|
||||
io_settings_lpddr2();
|
||||
else
|
||||
io_settings_ddr3();
|
||||
|
|
|
@ -378,6 +378,7 @@ struct omap_sys_ctrl_regs const dra7xx_ctrl = {
|
|||
.control_status = 0x4A002134,
|
||||
.control_phy_power_usb = 0x4A002370,
|
||||
.control_phy_power_sata = 0x4A002374,
|
||||
.ctrl_core_sma_sw_0 = 0x4A0023FC,
|
||||
.control_core_mac_id_0_lo = 0x4A002514,
|
||||
.control_core_mac_id_0_hi = 0x4A002518,
|
||||
.control_core_mac_id_1_lo = 0x4A00251C,
|
||||
|
@ -457,6 +458,7 @@ struct omap_sys_ctrl_regs const dra7xx_ctrl = {
|
|||
.control_efuse_3 = 0x4AE0C5D0,
|
||||
.control_efuse_4 = 0x4AE0C5D4,
|
||||
.control_efuse_13 = 0x4AE0C5F0,
|
||||
.iodelay_config_base = 0x4844A000,
|
||||
};
|
||||
|
||||
struct prcm_regs const omap5_es2_prcm = {
|
||||
|
@ -815,6 +817,10 @@ struct prcm_regs const dra7xx_prcm = {
|
|||
.cm_dsp_clkstctrl = 0x4a005400,
|
||||
.cm_dsp_dsp_clkctrl = 0x4a005420,
|
||||
|
||||
/* cm IPU */
|
||||
.cm_ipu_clkstctrl = 0x4a005540,
|
||||
.cm_ipu_i2c5_clkctrl = 0x4a005578,
|
||||
|
||||
/* prm irqstatus regs */
|
||||
.prm_irqstatus_mpu_2 = 0x4ae06014,
|
||||
|
||||
|
@ -976,6 +982,7 @@ struct prcm_regs const dra7xx_prcm = {
|
|||
.prm_rstctrl = 0x4ae07d00,
|
||||
.prm_rstst = 0x4ae07d04,
|
||||
.prm_rsttime = 0x4ae07d08,
|
||||
.prm_io_pmctrl = 0x4ae07d20,
|
||||
.prm_vc_val_bypass = 0x4ae07da0,
|
||||
.prm_vc_cfg_i2c_mode = 0x4ae07db4,
|
||||
.prm_vc_cfg_i2c_clk = 0x4ae07db8,
|
||||
|
|
|
@ -146,18 +146,18 @@ const struct emif_regs emif_1_regs_ddr3_532_mhz_1cs_dra_es1 = {
|
|||
.sdram_tim1 = 0xCCCF36B3,
|
||||
.sdram_tim2 = 0x308F7FDA,
|
||||
.sdram_tim3 = 0x027F88A8,
|
||||
.read_idle_ctrl = 0x00050001,
|
||||
.read_idle_ctrl = 0x00050000,
|
||||
.zq_config = 0x0007190B,
|
||||
.temp_alert_config = 0x00000000,
|
||||
.emif_ddr_phy_ctlr_1_init = 0x0E24400A,
|
||||
.emif_ddr_phy_ctlr_1 = 0x0E24400A,
|
||||
.emif_ddr_phy_ctlr_1_init = 0x0024400B,
|
||||
.emif_ddr_phy_ctlr_1 = 0x0E24400B,
|
||||
.emif_ddr_ext_phy_ctrl_1 = 0x10040100,
|
||||
.emif_ddr_ext_phy_ctrl_2 = 0x00910091,
|
||||
.emif_ddr_ext_phy_ctrl_3 = 0x00950095,
|
||||
.emif_ddr_ext_phy_ctrl_4 = 0x009B009B,
|
||||
.emif_ddr_ext_phy_ctrl_5 = 0x009E009E,
|
||||
.emif_rd_wr_lvl_rmp_win = 0x00000000,
|
||||
.emif_rd_wr_lvl_rmp_ctl = 0x00000000,
|
||||
.emif_rd_wr_lvl_rmp_ctl = 0x80000000,
|
||||
.emif_rd_wr_lvl_ctl = 0x00000000,
|
||||
.emif_rd_wr_exec_thresh = 0x00000305
|
||||
};
|
||||
|
@ -171,18 +171,18 @@ const struct emif_regs emif_2_regs_ddr3_532_mhz_1cs_dra_es1 = {
|
|||
.sdram_tim1 = 0xCCCF36B3,
|
||||
.sdram_tim2 = 0x308F7FDA,
|
||||
.sdram_tim3 = 0x027F88A8,
|
||||
.read_idle_ctrl = 0x00050001,
|
||||
.read_idle_ctrl = 0x00050000,
|
||||
.zq_config = 0x0007190B,
|
||||
.temp_alert_config = 0x00000000,
|
||||
.emif_ddr_phy_ctlr_1_init = 0x0E24400A,
|
||||
.emif_ddr_phy_ctlr_1 = 0x0E24400A,
|
||||
.emif_ddr_phy_ctlr_1_init = 0x0024400B,
|
||||
.emif_ddr_phy_ctlr_1 = 0x0E24400B,
|
||||
.emif_ddr_ext_phy_ctrl_1 = 0x10040100,
|
||||
.emif_ddr_ext_phy_ctrl_2 = 0x00910091,
|
||||
.emif_ddr_ext_phy_ctrl_3 = 0x00950095,
|
||||
.emif_ddr_ext_phy_ctrl_4 = 0x009B009B,
|
||||
.emif_ddr_ext_phy_ctrl_5 = 0x009E009E,
|
||||
.emif_rd_wr_lvl_rmp_win = 0x00000000,
|
||||
.emif_rd_wr_lvl_rmp_ctl = 0x00000000,
|
||||
.emif_rd_wr_lvl_rmp_ctl = 0x80000000,
|
||||
.emif_rd_wr_lvl_ctl = 0x00000000,
|
||||
.emif_rd_wr_exec_thresh = 0x00000305
|
||||
};
|
||||
|
@ -191,15 +191,15 @@ const struct emif_regs emif_1_regs_ddr3_666_mhz_1cs_dra_es1 = {
|
|||
.sdram_config_init = 0x61862B32,
|
||||
.sdram_config = 0x61862B32,
|
||||
.sdram_config2 = 0x08000000,
|
||||
.ref_ctrl = 0x0000493E,
|
||||
.ref_ctrl = 0x0000514C,
|
||||
.ref_ctrl_final = 0x0000144A,
|
||||
.sdram_tim1 = 0xD113781C,
|
||||
.sdram_tim2 = 0x308F7FE3,
|
||||
.sdram_tim3 = 0x009F86A8,
|
||||
.sdram_tim2 = 0x305A7FDA,
|
||||
.sdram_tim3 = 0x409F86A8,
|
||||
.read_idle_ctrl = 0x00050000,
|
||||
.zq_config = 0x0007190B,
|
||||
.zq_config = 0x5007190B,
|
||||
.temp_alert_config = 0x00000000,
|
||||
.emif_ddr_phy_ctlr_1_init = 0x0E24400D,
|
||||
.emif_ddr_phy_ctlr_1_init = 0x0024400D,
|
||||
.emif_ddr_phy_ctlr_1 = 0x0E24400D,
|
||||
.emif_ddr_ext_phy_ctrl_1 = 0x10040100,
|
||||
.emif_ddr_ext_phy_ctrl_2 = 0x00A400A4,
|
||||
|
@ -207,7 +207,7 @@ const struct emif_regs emif_1_regs_ddr3_666_mhz_1cs_dra_es1 = {
|
|||
.emif_ddr_ext_phy_ctrl_4 = 0x00B000B0,
|
||||
.emif_ddr_ext_phy_ctrl_5 = 0x00B000B0,
|
||||
.emif_rd_wr_lvl_rmp_win = 0x00000000,
|
||||
.emif_rd_wr_lvl_rmp_ctl = 0x00000000,
|
||||
.emif_rd_wr_lvl_rmp_ctl = 0x80000000,
|
||||
.emif_rd_wr_lvl_ctl = 0x00000000,
|
||||
.emif_rd_wr_exec_thresh = 0x00000305
|
||||
};
|
||||
|
@ -421,8 +421,14 @@ const u32 ddr3_ext_phy_ctrl_const_base_es2[] = {
|
|||
0x0
|
||||
};
|
||||
|
||||
/* Ext phy ctrl 1-35 regs */
|
||||
const u32
|
||||
dra_ddr3_ext_phy_ctrl_const_base_es1_emif1[] = {
|
||||
0x10040100,
|
||||
0x00910091,
|
||||
0x00950095,
|
||||
0x009B009B,
|
||||
0x009E009E,
|
||||
0x00980098,
|
||||
0x00340034,
|
||||
0x00350035,
|
||||
|
@ -441,17 +447,28 @@ dra_ddr3_ext_phy_ctrl_const_base_es1_emif1[] = {
|
|||
0x00500050,
|
||||
0x00000000,
|
||||
0x00600020,
|
||||
0x40010080,
|
||||
0x40011080,
|
||||
0x08102040,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0
|
||||
};
|
||||
|
||||
/* Ext phy ctrl 1-35 regs */
|
||||
const u32
|
||||
dra_ddr3_ext_phy_ctrl_const_base_es1_emif2[] = {
|
||||
0x10040100,
|
||||
0x00910091,
|
||||
0x00950095,
|
||||
0x009B009B,
|
||||
0x009E009E,
|
||||
0x00980098,
|
||||
0x00330033,
|
||||
0x00330033,
|
||||
|
@ -470,17 +487,28 @@ dra_ddr3_ext_phy_ctrl_const_base_es1_emif2[] = {
|
|||
0x00500050,
|
||||
0x00000000,
|
||||
0x00600020,
|
||||
0x40010080,
|
||||
0x40011080,
|
||||
0x08102040,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0
|
||||
};
|
||||
|
||||
/* Ext phy ctrl 1-35 regs */
|
||||
const u32
|
||||
dra_ddr3_ext_phy_ctrl_const_base_666MHz[] = {
|
||||
0x10040100,
|
||||
0x00A400A4,
|
||||
0x00A900A9,
|
||||
0x00B000B0,
|
||||
0x00B000B0,
|
||||
0x00A400A4,
|
||||
0x00390039,
|
||||
0x00320032,
|
||||
|
@ -505,6 +533,11 @@ dra_ddr3_ext_phy_ctrl_const_base_666MHz[] = {
|
|||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
0x0
|
||||
};
|
||||
|
||||
|
@ -562,7 +595,7 @@ void get_lpddr2_mr_regs(const struct lpddr2_mr_regs **regs)
|
|||
*regs = &mr_regs;
|
||||
}
|
||||
|
||||
void do_ext_phy_settings(u32 base, const struct emif_regs *regs)
|
||||
static void do_ext_phy_settings_omap5(u32 base, const struct emif_regs *regs)
|
||||
{
|
||||
u32 *ext_phy_ctrl_base = 0;
|
||||
u32 *emif_ext_phy_ctrl_base = 0;
|
||||
|
@ -601,6 +634,58 @@ void do_ext_phy_settings(u32 base, const struct emif_regs *regs)
|
|||
}
|
||||
}
|
||||
|
||||
static void do_ext_phy_settings_dra7(u32 base, const struct emif_regs *regs)
|
||||
{
|
||||
struct emif_reg_struct *emif = (struct emif_reg_struct *)base;
|
||||
u32 *emif_ext_phy_ctrl_base = 0;
|
||||
u32 emif_nr;
|
||||
const u32 *ext_phy_ctrl_const_regs;
|
||||
u32 i, hw_leveling, size;
|
||||
|
||||
emif_nr = (base == EMIF1_BASE) ? 1 : 2;
|
||||
|
||||
hw_leveling = regs->emif_rd_wr_lvl_rmp_ctl >> EMIF_REG_RDWRLVL_EN_SHIFT;
|
||||
|
||||
emif_ext_phy_ctrl_base = (u32 *)&(emif->emif_ddr_ext_phy_ctrl_1);
|
||||
|
||||
emif_get_ext_phy_ctrl_const_regs(emif_nr,
|
||||
&ext_phy_ctrl_const_regs, &size);
|
||||
|
||||
writel(ext_phy_ctrl_const_regs[0], &emif_ext_phy_ctrl_base[0]);
|
||||
writel(ext_phy_ctrl_const_regs[0], &emif_ext_phy_ctrl_base[1]);
|
||||
|
||||
if (!hw_leveling) {
|
||||
/*
|
||||
* Copy the predefined PHY register values
|
||||
* in case of sw leveling
|
||||
*/
|
||||
for (i = 1; i < 25; i++) {
|
||||
writel(ext_phy_ctrl_const_regs[i],
|
||||
&emif_ext_phy_ctrl_base[i * 2]);
|
||||
writel(ext_phy_ctrl_const_regs[i],
|
||||
&emif_ext_phy_ctrl_base[i * 2 + 1]);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* Write the init value for HW levling to occur
|
||||
*/
|
||||
for (i = 21; i < 35; i++) {
|
||||
writel(ext_phy_ctrl_const_regs[i],
|
||||
&emif_ext_phy_ctrl_base[i * 2]);
|
||||
writel(ext_phy_ctrl_const_regs[i],
|
||||
&emif_ext_phy_ctrl_base[i * 2 + 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void do_ext_phy_settings(u32 base, const struct emif_regs *regs)
|
||||
{
|
||||
if (is_omap54xx())
|
||||
do_ext_phy_settings_omap5(base, regs);
|
||||
else
|
||||
do_ext_phy_settings_dra7(base, regs);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_SYS_DEFAULT_LPDDR2_TIMINGS
|
||||
static const struct lpddr2_ac_timings timings_jedec_532_mhz = {
|
||||
.max_freq = 532000000,
|
||||
|
|
|
@ -7,10 +7,12 @@ choice
|
|||
config TARGET_S5P_GONI
|
||||
bool "S5P Goni board"
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
config TARGET_SMDKC100
|
||||
bool "Support smdkc100 board"
|
||||
select OF_CONTROL
|
||||
select SPL_DISABLE_OF_CONTROL
|
||||
|
||||
endchoice
|
||||
|
||||
|
|
|
@ -119,20 +119,11 @@ void s_init(void)
|
|||
#ifdef CONFIG_SPL_BUILD
|
||||
/* The sunxi internal brom will try to loader external bootloader
|
||||
* from mmc0, nand flash, mmc2.
|
||||
*
|
||||
* Unfortunately we can't check how SPL was loaded so assume it's
|
||||
* always the first SD/MMC controller, unless it was explicitly
|
||||
* stated that SPL is on nand flash.
|
||||
* Unfortunately we can't check how SPL was loaded so assume
|
||||
* it's always the first SD/MMC controller
|
||||
*/
|
||||
u32 spl_boot_device(void)
|
||||
{
|
||||
#if defined(CONFIG_SPL_NAND_SUPPORT)
|
||||
/*
|
||||
* This is compile time configuration informing SPL, that it
|
||||
* was loaded from nand flash.
|
||||
*/
|
||||
return BOOT_DEVICE_NAND;
|
||||
#else
|
||||
/*
|
||||
* When booting from the SD card, the "eGON.BT0" signature is expected
|
||||
* to be found in memory at the address 0x0004 (see the "mksunxiboot"
|
||||
|
@ -153,7 +144,6 @@ u32 spl_boot_device(void)
|
|||
return BOOT_DEVICE_MMC1;
|
||||
else
|
||||
return BOOT_DEVICE_BOARD;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* No confirmation data available in SPL yet. Hardcode bootmode */
|
||||
|
@ -202,6 +192,7 @@ void reset_cpu(ulong addr)
|
|||
writel(WDT_CFG_RESET, &wdog->cfg);
|
||||
writel(WDT_MODE_EN, &wdog->mode);
|
||||
writel(WDT_CTRL_KEY | WDT_CTRL_RESTART, &wdog->ctl);
|
||||
while (1) { }
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -223,6 +214,7 @@ int cpu_eth_init(bd_t *bis)
|
|||
__maybe_unused int rc;
|
||||
|
||||
#ifdef CONFIG_MACPWR
|
||||
gpio_request(CONFIG_MACPWR, "macpwr");
|
||||
gpio_direction_output(CONFIG_MACPWR, 1);
|
||||
mdelay(200);
|
||||
#endif
|
||||
|
|
|
@ -128,10 +128,10 @@ static void sunxi_usb_phy_config(struct sunxi_usb_phy *phy)
|
|||
usb_phy_write(phy, 0x20, 0x14, 5);
|
||||
|
||||
/* threshold adjustment disconnect */
|
||||
#if defined CONFIG_MACH_SUN4I || defined CONFIG_MACH_SUN6I
|
||||
usb_phy_write(phy, 0x2a, 3, 2);
|
||||
#else
|
||||
#if defined CONFIG_MACH_SUN5I || defined CONFIG_MACH_SUN7I
|
||||
usb_phy_write(phy, 0x2a, 2, 2);
|
||||
#else
|
||||
usb_phy_write(phy, 0x2a, 3, 2);
|
||||
#endif
|
||||
|
||||
return;
|
||||
|
|
|
@ -198,6 +198,11 @@ static u32 get_i2c_clk(void)
|
|||
return get_ipg_clk();
|
||||
}
|
||||
|
||||
static u32 get_dspi_clk(void)
|
||||
{
|
||||
return get_ipg_clk();
|
||||
}
|
||||
|
||||
unsigned int mxc_get_clock(enum mxc_clock clk)
|
||||
{
|
||||
switch (clk) {
|
||||
|
@ -215,6 +220,8 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
|
|||
return get_fec_clk();
|
||||
case MXC_I2C_CLK:
|
||||
return get_i2c_clk();
|
||||
case MXC_DSPI_CLK:
|
||||
return get_dspi_clk();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -95,6 +95,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
|
|||
sun6i-a31-hummingbird.dtb \
|
||||
sun6i-a31-i7.dtb \
|
||||
sun6i-a31-m9.dtb \
|
||||
sun6i-a31-mele-a1000g-quad.dtb \
|
||||
sun6i-a31-mixtile-loftq.dtb \
|
||||
sun6i-a31s-cs908.dtb \
|
||||
sun6i-a31s-primo81.dtb
|
||||
|
@ -121,18 +122,24 @@ dtb-$(CONFIG_MACH_SUN7I) += \
|
|||
sun7i-a20-wits-pro-a20-dkt.dtb \
|
||||
sun7i-a20-yones-toptech-bd1078.dtb
|
||||
dtb-$(CONFIG_MACH_SUN8I_A23) += \
|
||||
sun8i-a23-evb.dtb \
|
||||
sun8i-a23-ippo-q8h-v5.dtb \
|
||||
sun8i-a23-ippo-q8h-v1.2.dtb
|
||||
dtb-$(CONFIG_MACH_SUN8I_A33) += \
|
||||
sun8i-a33-astar-mid756.dtb \
|
||||
sun8i-a33-et-q8-v1.6.dtb \
|
||||
sun8i-a33-ga10h-v1.1.dtb \
|
||||
sun8i-a33-ippo-q8h-v1.2-lcd1024x600.dtb
|
||||
dtb-$(CONFIG_MACH_SUN9I) += \
|
||||
sun9i-a80-optimus.dtb \
|
||||
sun9i-a80-cubieboard4.dtb
|
||||
|
||||
dtb-$(CONFIG_VF610) += vf500-colibri.dtb \
|
||||
vf610-colibri.dtb
|
||||
|
||||
targets += $(dtb-y)
|
||||
|
||||
DTC_FLAGS += -R 4 -p 0x1000
|
||||
# Add any required device tree compiler flags here
|
||||
DTC_FLAGS +=
|
||||
|
||||
PHONY += dtbs
|
||||
dtbs: $(addprefix $(obj)/, $(dtb-y))
|
||||
|
|
|
@ -43,140 +43,102 @@
|
|||
|
||||
voltage-regulators {
|
||||
ldo1_reg: ldo1 {
|
||||
regulator-compatible = "LDO1";
|
||||
regulator-name = "VDD_ALIVE_1.0V";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
};
|
||||
|
||||
ldo2_reg: ldo2 {
|
||||
regulator-compatible = "LDO2";
|
||||
regulator-name = "VDDQ_VM1M2_1.2V";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo3_reg: ldo3 {
|
||||
regulator-compatible = "LDO3";
|
||||
regulator-name = "VCC_1.8V_AP";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo4_reg: ldo4 {
|
||||
regulator-compatible = "LDO4";
|
||||
regulator-name = "VDDQ_MMC2_2.8V";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo5_reg: ldo5 {
|
||||
regulator-compatible = "LDO5";
|
||||
regulator-name = "VDDQ_MMC0/1/3_1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo6_reg: ldo6 {
|
||||
regulator-compatible = "LDO6";
|
||||
regulator-name = "VMPLL_1.0V";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
ldo7_reg: ldo7 {
|
||||
regulator-compatible = "LDO7";
|
||||
regulator-name = "VPLL_1.1V";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
ldo8_reg: ldo8 {
|
||||
regulator-compatible = "LDO8";
|
||||
regulator-name = "VDD_MIPI/HDMI_1.0V";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
};
|
||||
|
||||
ldo9_reg: ldo9 {
|
||||
regulator-compatible = "LDO9";
|
||||
regulator-name = "nc";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo10_reg: ldo10 {
|
||||
regulator-compatible = "LDO10";
|
||||
regulator-name = "VDD_MIPI/HDMI_1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo11_reg: ldo11 {
|
||||
regulator-compatible = "LDO11";
|
||||
regulator-name = "VDD_ABB1_1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo12_reg: ldo12 {
|
||||
regulator-compatible = "LDO12";
|
||||
regulator-name = "VDD_UOTG_3.0V";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
|
||||
ldo13_reg: ldo13 {
|
||||
regulator-compatible = "LDO13";
|
||||
regulator-name = "VDD_C2C_1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo14_reg: ldo14 {
|
||||
regulator-compatible = "LDO14";
|
||||
regulator-name = "VDD_ABB02_1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo15_reg: ldo15 {
|
||||
regulator-compatible = "LDO15";
|
||||
regulator-name = "VDD_HSIC/OTG_1.0V";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
};
|
||||
|
||||
ldo16_reg: ldo16 {
|
||||
regulator-compatible = "LDO16";
|
||||
regulator-name = "VDD_HSIC_1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo17_reg: ldo17 {
|
||||
regulator-compatible = "LDO17";
|
||||
regulator-name = "VDDQ_CAM_1.2V";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo18_reg: ldo18 {
|
||||
regulator-compatible = "LDO18";
|
||||
regulator-name = "nc";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo19_reg: ldo19 {
|
||||
regulator-compatible = "LDO19";
|
||||
regulator-name = "nc";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo20_reg: ldo20 {
|
||||
regulator-compatible = "LDO20";
|
||||
regulator-name = "VDDQ_EMMC_1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
@ -185,7 +147,6 @@
|
|||
};
|
||||
|
||||
ldo21_reg: ldo21 {
|
||||
regulator-compatible = "LDO21";
|
||||
regulator-name = "TFLASH_2.8V";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
|
@ -194,7 +155,6 @@
|
|||
};
|
||||
|
||||
ldo22_reg: ldo22 {
|
||||
regulator-compatible = "LDO22";
|
||||
regulator-name = "VDDQ_EMMC_2.8V";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
|
@ -202,20 +162,6 @@
|
|||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo23_reg: ldo23 {
|
||||
regulator-compatible = "LDO23";
|
||||
regulator-name = "nc";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
ldo24_reg: ldo24 {
|
||||
regulator-compatible = "LDO24";
|
||||
regulator-name = "nc";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
|
||||
ldo25_reg: ldo25 {
|
||||
regulator-compatible = "LDO25";
|
||||
regulator-name = "VDDQ_LCD_3.0V";
|
||||
|
@ -223,75 +169,53 @@
|
|||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
|
||||
ldo26_reg: ldo26 {
|
||||
regulator-compatible = "LDO26";
|
||||
regulator-name = "nc";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
|
||||
buck1_reg: buck@1 {
|
||||
regulator-compatible = "BUCK1";
|
||||
buck1_reg: buck1 {
|
||||
regulator-name = "VDD_MIF_1.0V";
|
||||
regulator-min-microvolt = <8500000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
buck2_reg: buck@2 {
|
||||
regulator-compatible = "BUCK2";
|
||||
buck2_reg: buck2 {
|
||||
regulator-name = "VDD_ARM_1.0V";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
};
|
||||
|
||||
buck3_reg: buck3 {
|
||||
regulator-compatible = "BUCK3";
|
||||
regulator-name = "VDD_INT_1.1V";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1150000>;
|
||||
};
|
||||
|
||||
buck4_reg: buck4 {
|
||||
regulator-compatible = "BUCK4";
|
||||
regulator-name = "VDD_G3D_1.0V";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1150000>;
|
||||
};
|
||||
|
||||
buck5_reg: buck5 {
|
||||
regulator-compatible = "BUCK5";
|
||||
regulator-name = "VDDQ_AP_1.2V";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
buck6_reg: buck6 {
|
||||
regulator-compatible = "BUCK6";
|
||||
regulator-name = "VCC_INL1/7_1.35V";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
};
|
||||
|
||||
buck7_reg: buck7 {
|
||||
regulator-compatible = "BUCK7";
|
||||
regulator-name = "VCC_INL2/3/5_2.0V";
|
||||
regulator-min-microvolt = <2000000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
};
|
||||
|
||||
buck8_reg: buck8 {
|
||||
regulator-compatible = "BUCK8";
|
||||
regulator-name = "VCC_P3V3_2.85V";
|
||||
regulator-min-microvolt = <2850000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
buck9_reg: buck9 {
|
||||
regulator-compatible = "BUCK9";
|
||||
regulator-name = "nc";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
dspiflash: at45db021d@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "spi-flash";
|
||||
compatible = "atmel,dataflash";
|
||||
spi-max-frequency = <16000000>;
|
||||
spi-cpol;
|
||||
spi-cpha;
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -113,6 +108,10 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&emac_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
|
@ -130,7 +129,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -79,6 +74,10 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&emac_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
|
@ -96,7 +95,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -17,11 +17,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -107,6 +102,10 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&emac_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
|
@ -126,7 +125,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -206,7 +205,8 @@
|
|||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins_a>;
|
||||
pinctrl-0 = <&spi0_pins_a>,
|
||||
<&spi0_cs0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -91,9 +86,13 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&emac_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -109,6 +104,10 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&emac_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
|
@ -126,7 +125,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -17,11 +17,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -104,6 +99,10 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&emac_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&emac {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emac_pins_a>;
|
||||
|
@ -174,7 +173,8 @@
|
|||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins_a>;
|
||||
pinctrl-0 = <&spi0_pins_a>,
|
||||
<&spi0_cs0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -92,11 +87,11 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ir0_pins_a {
|
||||
&ir0_rx_pins_a {
|
||||
/* The ir receiver is not always populated */
|
||||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -110,6 +105,10 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&emac_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
|
|
|
@ -17,11 +17,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -124,6 +119,10 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&emac_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
|
|
|
@ -17,11 +17,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -66,7 +61,8 @@
|
|||
ranges;
|
||||
|
||||
framebuffer@0 {
|
||||
compatible = "allwinner,simple-framebuffer", "simple-framebuffer";
|
||||
compatible = "allwinner,simple-framebuffer",
|
||||
"simple-framebuffer";
|
||||
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>,
|
||||
<&ahb_gates 44>;
|
||||
|
@ -74,7 +70,8 @@
|
|||
};
|
||||
|
||||
framebuffer@1 {
|
||||
compatible = "allwinner,simple-framebuffer", "simple-framebuffer";
|
||||
compatible = "allwinner,simple-framebuffer",
|
||||
"simple-framebuffer";
|
||||
allwinner,pipeline = "de_fe0-de_be0-lcd0-hdmi";
|
||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>,
|
||||
<&ahb_gates 44>, <&ahb_gates 46>;
|
||||
|
@ -110,11 +107,11 @@
|
|||
clocks = <&cpu>;
|
||||
clock-latency = <244144>; /* 8 32k periods */
|
||||
operating-points = <
|
||||
/* kHz uV */
|
||||
/* kHz uV */
|
||||
1008000 1400000
|
||||
912000 1350000
|
||||
864000 1300000
|
||||
624000 1250000
|
||||
912000 1350000
|
||||
864000 1300000
|
||||
624000 1250000
|
||||
>;
|
||||
#cooling-cells = <2>;
|
||||
cooling-min-level = <0>;
|
||||
|
@ -434,11 +431,12 @@
|
|||
|
||||
usb_clk: clk@01c200cc {
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun4i-a10-usb-clk";
|
||||
reg = <0x01c200cc 0x4>;
|
||||
clocks = <&pll6 1>;
|
||||
clock-output-names = "usb_ohci0", "usb_ohci1", "usb_phy";
|
||||
clock-output-names = "usb_ohci0", "usb_ohci1",
|
||||
"usb_phy";
|
||||
};
|
||||
|
||||
spi3_clk: clk@01c200d4 {
|
||||
|
@ -450,44 +448,46 @@
|
|||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Note we use the address where the mmio registers start, not where
|
||||
* the SRAM blocks start, this cannot be changed because that would be
|
||||
* a devicetree ABI change.
|
||||
*/
|
||||
soc@01c00000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
sram@00000000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00000000 0x4000>;
|
||||
allwinner,sram-name = "A1";
|
||||
};
|
||||
|
||||
sram@00004000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00004000 0x4000>;
|
||||
allwinner,sram-name = "A2";
|
||||
};
|
||||
|
||||
sram@00008000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00008000 0x4000>;
|
||||
allwinner,sram-name = "A3-A4";
|
||||
};
|
||||
|
||||
sram@00010000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00010000 0x1000>;
|
||||
allwinner,sram-name = "D";
|
||||
};
|
||||
|
||||
sram-controller@01c00000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-controller";
|
||||
reg = <0x01c00000 0x30>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
sram_a: sram@00000000 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x00000000 0xc000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x00000000 0xc000>;
|
||||
|
||||
emac_sram: sram-section@8000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-a3-a4";
|
||||
reg = <0x8000 0x4000>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
sram_d: sram@00010000 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x00010000 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x00010000 0x1000>;
|
||||
|
||||
otg_sram: sram-section@0000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-d";
|
||||
reg = <0x0000 0x1000>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dma: dma-controller@01c02000 {
|
||||
|
@ -531,6 +531,7 @@
|
|||
reg = <0x01c0b000 0x1000>;
|
||||
interrupts = <55>;
|
||||
clocks = <&ahb_gates 17>;
|
||||
allwinner,sram = <&emac_sram 1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -784,7 +785,8 @@
|
|||
};
|
||||
|
||||
mmc0_pins_a: mmc0@0 {
|
||||
allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
|
||||
allwinner,pins = "PF0", "PF1", "PF2",
|
||||
"PF3", "PF4", "PF5";
|
||||
allwinner,function = "mmc0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
|
@ -797,43 +799,85 @@
|
|||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
|
||||
ir0_pins_a: ir0@0 {
|
||||
allwinner,pins = "PB3","PB4";
|
||||
ir0_rx_pins_a: ir0@0 {
|
||||
allwinner,pins = "PB4";
|
||||
allwinner,function = "ir0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
ir1_pins_a: ir1@0 {
|
||||
allwinner,pins = "PB22","PB23";
|
||||
ir0_tx_pins_a: ir0@1 {
|
||||
allwinner,pins = "PB3";
|
||||
allwinner,function = "ir0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
ir1_rx_pins_a: ir1@0 {
|
||||
allwinner,pins = "PB23";
|
||||
allwinner,function = "ir1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
ir1_tx_pins_a: ir1@1 {
|
||||
allwinner,pins = "PB22";
|
||||
allwinner,function = "ir1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi0_pins_a: spi0@0 {
|
||||
allwinner,pins = "PI10", "PI11", "PI12", "PI13";
|
||||
allwinner,pins = "PI11", "PI12", "PI13";
|
||||
allwinner,function = "spi0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi0_cs0_pins_a: spi0_cs0@0 {
|
||||
allwinner,pins = "PI10";
|
||||
allwinner,function = "spi0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi1_pins_a: spi1@0 {
|
||||
allwinner,pins = "PI16", "PI17", "PI18", "PI19";
|
||||
allwinner,pins = "PI17", "PI18", "PI19";
|
||||
allwinner,function = "spi1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi1_cs0_pins_a: spi1_cs0@0 {
|
||||
allwinner,pins = "PI16";
|
||||
allwinner,function = "spi1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi2_pins_a: spi2@0 {
|
||||
allwinner,pins = "PB14", "PB15", "PB16", "PB17";
|
||||
allwinner,pins = "PC20", "PC21", "PC22";
|
||||
allwinner,function = "spi2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi2_pins_b: spi2@1 {
|
||||
allwinner,pins = "PC19", "PC20", "PC21", "PC22";
|
||||
allwinner,pins = "PB15", "PB16", "PB17";
|
||||
allwinner,function = "spi2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi2_cs0_pins_a: spi2_cs0@0 {
|
||||
allwinner,pins = "PC19";
|
||||
allwinner,function = "spi2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi2_cs0_pins_b: spi2_cs0@1 {
|
||||
allwinner,pins = "PB14";
|
||||
allwinner,function = "spi2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -93,6 +88,10 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&emac_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -67,7 +62,8 @@
|
|||
ranges;
|
||||
|
||||
framebuffer@0 {
|
||||
compatible = "allwinner,simple-framebuffer", "simple-framebuffer";
|
||||
compatible = "allwinner,simple-framebuffer",
|
||||
"simple-framebuffer";
|
||||
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>,
|
||||
<&ahb_gates 44>;
|
||||
|
@ -89,13 +85,17 @@
|
|||
compatible = "allwinner,sun5i-a10s-ahb-gates-clk";
|
||||
reg = <0x01c20060 0x8>;
|
||||
clocks = <&ahb>;
|
||||
clock-output-names = "ahb_usbotg", "ahb_ehci", "ahb_ohci",
|
||||
"ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0",
|
||||
"ahb_mmc1", "ahb_mmc2", "ahb_nand", "ahb_sdram",
|
||||
"ahb_emac", "ahb_ts", "ahb_spi0", "ahb_spi1",
|
||||
"ahb_spi2", "ahb_gps", "ahb_stimer", "ahb_ve",
|
||||
"ahb_tve", "ahb_lcd", "ahb_csi", "ahb_hdmi",
|
||||
"ahb_de_be", "ahb_de_fe", "ahb_iep", "ahb_mali400";
|
||||
clock-output-names = "ahb_usbotg", "ahb_ehci",
|
||||
"ahb_ohci", "ahb_ss", "ahb_dma",
|
||||
"ahb_bist", "ahb_mmc0", "ahb_mmc1",
|
||||
"ahb_mmc2", "ahb_nand",
|
||||
"ahb_sdram", "ahb_emac", "ahb_ts",
|
||||
"ahb_spi0", "ahb_spi1", "ahb_spi2",
|
||||
"ahb_gps", "ahb_stimer", "ahb_ve",
|
||||
"ahb_tve", "ahb_lcd", "ahb_csi",
|
||||
"ahb_hdmi", "ahb_de_be",
|
||||
"ahb_de_fe", "ahb_iep",
|
||||
"ahb_mali400";
|
||||
};
|
||||
|
||||
apb0_gates: clk@01c20068 {
|
||||
|
@ -103,8 +103,9 @@
|
|||
compatible = "allwinner,sun5i-a10s-apb0-gates-clk";
|
||||
reg = <0x01c20068 0x4>;
|
||||
clocks = <&apb0>;
|
||||
clock-output-names = "apb0_codec", "apb0_iis", "apb0_pio",
|
||||
"apb0_ir", "apb0_keypad";
|
||||
clock-output-names = "apb0_codec", "apb0_iis",
|
||||
"apb0_pio", "apb0_ir",
|
||||
"apb0_keypad";
|
||||
};
|
||||
|
||||
apb1_gates: clk@01c2006c {
|
||||
|
@ -124,6 +125,7 @@
|
|||
reg = <0x01c0b000 0x1000>;
|
||||
interrupts = <55>;
|
||||
clocks = <&ahb_gates 17>;
|
||||
allwinner,sram = <&emac_sram 1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -193,9 +195,18 @@
|
|||
};
|
||||
|
||||
mmc1_pins_a: mmc1@0 {
|
||||
allwinner,pins = "PG3","PG4","PG5","PG6","PG7","PG8";
|
||||
allwinner,pins = "PG3", "PG4", "PG5",
|
||||
"PG6", "PG7", "PG8";
|
||||
allwinner,function = "mmc1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
};
|
||||
|
||||
&sram_a {
|
||||
emac_sram: sram-section@8000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-a3-a4";
|
||||
reg = <0x8000 0x4000>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -17,11 +17,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -50,6 +45,7 @@
|
|||
#include "sunxi-common-regulators.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||
|
||||
/ {
|
||||
|
@ -101,6 +97,20 @@
|
|||
pinctrl-0 = <&i2c1_pins_a>;
|
||||
status = "okay";
|
||||
|
||||
icn8318: touchscreen@40 {
|
||||
compatible = "chipone,icn8318";
|
||||
reg = <0x40>;
|
||||
interrupt-parent = <&pio>;
|
||||
interrupts = <9 IRQ_TYPE_EDGE_FALLING>; /* EINT9 (PG9) */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ts_wake_pin_p66>;
|
||||
wake-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>; /* PB3 */
|
||||
touchscreen-size-x = <800>;
|
||||
touchscreen-size-y = <480>;
|
||||
touchscreen-inverted-x;
|
||||
touchscreen-swapped-x-y;
|
||||
};
|
||||
|
||||
pcf8563: rtc@51 {
|
||||
compatible = "nxp,pcf8563";
|
||||
reg = <0x51>;
|
||||
|
@ -166,6 +176,13 @@
|
|||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
|
||||
ts_wake_pin_p66: ts_wake_pin@0 {
|
||||
allwinner,pins = "PB3";
|
||||
allwinner,function = "gpio_out";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
usb0_vbus_pin_a: usb0_vbus_pin@0 {
|
||||
allwinner,pins = "PB4";
|
||||
allwinner,function = "gpio_out";
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -109,12 +104,16 @@
|
|||
compatible = "allwinner,sun5i-a13-ahb-gates-clk";
|
||||
reg = <0x01c20060 0x8>;
|
||||
clocks = <&ahb>;
|
||||
clock-output-names = "ahb_usbotg", "ahb_ehci", "ahb_ohci",
|
||||
"ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0",
|
||||
"ahb_mmc1", "ahb_mmc2", "ahb_nand", "ahb_sdram",
|
||||
"ahb_spi0", "ahb_spi1", "ahb_spi2", "ahb_stimer",
|
||||
"ahb_ve", "ahb_lcd", "ahb_csi", "ahb_de_be",
|
||||
"ahb_de_fe", "ahb_iep", "ahb_mali400";
|
||||
clock-output-names = "ahb_usbotg", "ahb_ehci",
|
||||
"ahb_ohci", "ahb_ss", "ahb_dma",
|
||||
"ahb_bist", "ahb_mmc0", "ahb_mmc1",
|
||||
"ahb_mmc2", "ahb_nand",
|
||||
"ahb_sdram", "ahb_spi0",
|
||||
"ahb_spi1", "ahb_spi2",
|
||||
"ahb_stimer", "ahb_ve", "ahb_lcd",
|
||||
"ahb_csi", "ahb_de_be",
|
||||
"ahb_de_fe", "ahb_iep",
|
||||
"ahb_mali400";
|
||||
};
|
||||
|
||||
apb0_gates: clk@01c20068 {
|
||||
|
@ -122,7 +121,8 @@
|
|||
compatible = "allwinner,sun5i-a13-apb0-gates-clk";
|
||||
reg = <0x01c20068 0x4>;
|
||||
clocks = <&apb0>;
|
||||
clock-output-names = "apb0_codec", "apb0_pio", "apb0_ir";
|
||||
clock-output-names = "apb0_codec", "apb0_pio",
|
||||
"apb0_ir";
|
||||
};
|
||||
|
||||
apb1_gates: clk@01c2006c {
|
||||
|
@ -139,13 +139,13 @@
|
|||
&cpu0 {
|
||||
clock-latency = <244144>; /* 8 32k periods */
|
||||
operating-points = <
|
||||
/* kHz uV */
|
||||
/* kHz uV */
|
||||
1008000 1400000
|
||||
912000 1350000
|
||||
864000 1300000
|
||||
624000 1200000
|
||||
576000 1200000
|
||||
432000 1200000
|
||||
912000 1350000
|
||||
864000 1300000
|
||||
624000 1200000
|
||||
576000 1200000
|
||||
432000 1200000
|
||||
>;
|
||||
#cooling-cells = <2>;
|
||||
cooling-min-level = <0>;
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -150,10 +145,16 @@
|
|||
|
||||
ahb: ahb@01c20054 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun4i-a10-ahb-clk";
|
||||
compatible = "allwinner,sun5i-a13-ahb-clk";
|
||||
reg = <0x01c20054 0x4>;
|
||||
clocks = <&axi>;
|
||||
clocks = <&axi>, <&cpu>, <&pll6 1>;
|
||||
clock-output-names = "ahb";
|
||||
/*
|
||||
* Use PLL6 as parent, instead of CPU/AXI
|
||||
* which has rate changes due to cpufreq
|
||||
*/
|
||||
assigned-clocks = <&ahb>;
|
||||
assigned-clock-parents = <&pll6 1>;
|
||||
};
|
||||
|
||||
apb0: apb0@01c20054 {
|
||||
|
@ -276,7 +277,7 @@
|
|||
|
||||
usb_clk: clk@01c200cc {
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun5i-a13-usb-clk";
|
||||
reg = <0x01c200cc 0x4>;
|
||||
clocks = <&pll6 1>;
|
||||
|
@ -292,44 +293,40 @@
|
|||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Note we use the address where the mmio registers start, not where
|
||||
* the SRAM blocks start, this cannot be changed because that would be
|
||||
* a devicetree ABI change.
|
||||
*/
|
||||
soc@01c00000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
sram@00000000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00000000 0x4000>;
|
||||
allwinner,sram-name = "A1";
|
||||
};
|
||||
|
||||
sram@00004000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00004000 0x4000>;
|
||||
allwinner,sram-name = "A2";
|
||||
};
|
||||
|
||||
sram@00008000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00008000 0x4000>;
|
||||
allwinner,sram-name = "A3-A4";
|
||||
};
|
||||
|
||||
sram@00010000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00010000 0x1000>;
|
||||
allwinner,sram-name = "D";
|
||||
};
|
||||
|
||||
sram-controller@01c00000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-controller";
|
||||
reg = <0x01c00000 0x30>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
sram_a: sram@00000000 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x00000000 0xc000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x00000000 0xc000>;
|
||||
};
|
||||
|
||||
sram_d: sram@00010000 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x00010000 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x00010000 0x1000>;
|
||||
|
||||
otg_sram: sram-section@0000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-d";
|
||||
reg = <0x0000 0x1000>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dma: dma-controller@01c02000 {
|
||||
|
@ -504,7 +501,8 @@
|
|||
};
|
||||
|
||||
mmc0_pins_a: mmc0@0 {
|
||||
allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
|
||||
allwinner,pins = "PF0", "PF1", "PF2", "PF3",
|
||||
"PF4", "PF5";
|
||||
allwinner,function = "mmc0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
149
arch/arm/dts/sun6i-a31-mele-a1000g-quad.dts
Normal file
149
arch/arm/dts/sun6i-a31-mele-a1000g-quad.dts
Normal file
|
@ -0,0 +1,149 @@
|
|||
/*
|
||||
* Copyright 2014 Hans de Goede <hdegoede@redhat.com>
|
||||
*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "sun6i-a31.dtsi"
|
||||
#include "sunxi-common-regulators.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||
|
||||
/ {
|
||||
model = "Mele A1000G Quad top set box";
|
||||
compatible = "mele,a1000g-quad", "allwinner,sun6i-a31";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&led_pins_m9>;
|
||||
|
||||
blue {
|
||||
label = "m9:blue:usr";
|
||||
gpios = <&pio 7 13 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&ehci0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ehci1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac_pins_mii_a>;
|
||||
phy = <&phy1>;
|
||||
phy-mode = "mii";
|
||||
status = "okay";
|
||||
|
||||
phy1: ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
&ir {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_m9>;
|
||||
vmmc-supply = <®_vcc3v3>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&pio 7 22 GPIO_ACTIVE_HIGH>; /* PH22 */
|
||||
cd-inverted;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
led_pins_m9: led_pins@0 {
|
||||
allwinner,pins = "PH13";
|
||||
allwinner,function = "gpio_out";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
mmc0_cd_pin_m9: mmc0_cd_pin@0 {
|
||||
allwinner,pins = "PH22";
|
||||
allwinner,function = "gpio_in";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
|
||||
usb1_vbus_pin_m9: usb1_vbus_pin@0 {
|
||||
allwinner,pins = "PC27";
|
||||
allwinner,function = "gpio_out";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
};
|
||||
|
||||
®_usb1_vbus {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb1_vbus_pin_m9>;
|
||||
gpio = <&pio 2 27 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbphy {
|
||||
usb1_vbus-supply = <®_usb1_vbus>;
|
||||
status = "okay";
|
||||
};
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -67,7 +62,8 @@
|
|||
ranges;
|
||||
|
||||
framebuffer@0 {
|
||||
compatible = "allwinner,simple-framebuffer", "simple-framebuffer";
|
||||
compatible = "allwinner,simple-framebuffer",
|
||||
"simple-framebuffer";
|
||||
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
||||
clocks = <&pll6 0>;
|
||||
status = "disabled";
|
||||
|
@ -104,11 +100,11 @@
|
|||
clocks = <&cpu>;
|
||||
clock-latency = <244144>; /* 8 32k periods */
|
||||
operating-points = <
|
||||
/* kHz uV */
|
||||
/* kHz uV */
|
||||
1008000 1200000
|
||||
864000 1200000
|
||||
720000 1100000
|
||||
480000 1000000
|
||||
864000 1200000
|
||||
720000 1100000
|
||||
480000 1000000
|
||||
>;
|
||||
#cooling-cells = <2>;
|
||||
cooling-min-level = <0>;
|
||||
|
@ -241,6 +237,14 @@
|
|||
reg = <0x01c20054 0x4>;
|
||||
clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>;
|
||||
clock-output-names = "ahb1";
|
||||
|
||||
/*
|
||||
* Clock AHB1 from PLL6, instead of CPU/AXI which
|
||||
* has rate changes due to cpufreq. Also the DMA
|
||||
* controller requires AHB1 clocked from PLL6.
|
||||
*/
|
||||
assigned-clocks = <&ahb1>;
|
||||
assigned-clock-parents = <&pll6 0>;
|
||||
};
|
||||
|
||||
ahb1_gates: clk@01c20060 {
|
||||
|
@ -296,9 +300,10 @@
|
|||
reg = <0x01c2006c 0x4>;
|
||||
clocks = <&apb2>;
|
||||
clock-output-names = "apb2_i2c0", "apb2_i2c1",
|
||||
"apb2_i2c2", "apb2_i2c3", "apb2_uart0",
|
||||
"apb2_uart1", "apb2_uart2", "apb2_uart3",
|
||||
"apb2_uart4", "apb2_uart5";
|
||||
"apb2_i2c2", "apb2_i2c3",
|
||||
"apb2_uart0", "apb2_uart1",
|
||||
"apb2_uart2", "apb2_uart3",
|
||||
"apb2_uart4", "apb2_uart5";
|
||||
};
|
||||
|
||||
mmc0_clk: clk@01c20088 {
|
||||
|
@ -375,7 +380,7 @@
|
|||
|
||||
usb_clk: clk@01c200cc {
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun6i-a31-usb-clk";
|
||||
reg = <0x01c200cc 0x4>;
|
||||
clocks = <&osc24M>;
|
||||
|
@ -385,10 +390,13 @@
|
|||
};
|
||||
|
||||
/*
|
||||
* The following two are dummy clocks, placeholders used in the gmac_tx
|
||||
* clock. The gmac driver will choose one parent depending on the PHY
|
||||
* interface mode, using clk_set_rate auto-reparenting.
|
||||
* The actual TX clock rate is not controlled by the gmac_tx clock.
|
||||
* The following two are dummy clocks, placeholders
|
||||
* used in the gmac_tx clock. The gmac driver will
|
||||
* choose one parent depending on the PHY interface
|
||||
* mode, using clk_set_rate auto-reparenting.
|
||||
*
|
||||
* The actual TX clock rate is not controlled by the
|
||||
* gmac_tx clock.
|
||||
*/
|
||||
mii_phy_tx_clk: clk@1 {
|
||||
#clock-cells = <0>;
|
||||
|
@ -426,10 +434,6 @@
|
|||
clocks = <&ahb1_gates 6>;
|
||||
resets = <&ahb1_rst 6>;
|
||||
#dma-cells = <1>;
|
||||
|
||||
/* DMA controller requires AHB1 clocked from PLL6 */
|
||||
assigned-clocks = <&ahb1>;
|
||||
assigned-clock-parents = <&pll6 0>;
|
||||
};
|
||||
|
||||
mmc0: mmc@01c0f000 {
|
||||
|
@ -628,7 +632,8 @@
|
|||
};
|
||||
|
||||
mmc0_pins_a: mmc0@0 {
|
||||
allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
|
||||
allwinner,pins = "PF0", "PF1", "PF2",
|
||||
"PF3", "PF4", "PF5";
|
||||
allwinner,function = "mmc0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
|
@ -866,7 +871,8 @@
|
|||
};
|
||||
|
||||
timer@01c60000 {
|
||||
compatible = "allwinner,sun6i-a31-hstimer", "allwinner,sun7i-a20-hstimer";
|
||||
compatible = "allwinner,sun6i-a31-hstimer",
|
||||
"allwinner,sun7i-a20-hstimer";
|
||||
reg = <0x01c60000 0x1000>;
|
||||
interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
|
||||
|
@ -957,7 +963,8 @@
|
|||
ar100: ar100_clk {
|
||||
compatible = "allwinner,sun6i-a31-ar100-clk";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>;
|
||||
clocks = <&osc32k>, <&osc24M>, <&pll6 0>,
|
||||
<&pll6 0>;
|
||||
clock-output-names = "ar100";
|
||||
};
|
||||
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -142,7 +137,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -197,7 +192,9 @@
|
|||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins_a>;
|
||||
pinctrl-0 = <&spi0_pins_a>,
|
||||
<&spi0_cs0_pins_a>,
|
||||
<&spi0_cs1_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -57,7 +52,7 @@
|
|||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
serial1 = &uart2;
|
||||
serial1 = &uart4;
|
||||
serial2 = &uart7;
|
||||
};
|
||||
|
||||
|
@ -154,7 +149,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -243,7 +238,9 @@
|
|||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins_a>;
|
||||
pinctrl-0 = <&spi0_pins_a>,
|
||||
<&spi0_cs0_pins_a>,
|
||||
<&spi0_cs1_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -253,9 +250,9 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
&uart4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart2_pins_a>;
|
||||
pinctrl-0 = <&uart4_pins_b>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -133,7 +128,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -160,7 +155,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -160,7 +155,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -245,7 +240,8 @@
|
|||
|
||||
&spi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi2_pins_b>;
|
||||
pinctrl-0 = <&spi2_pins_b>,
|
||||
<&spi2_cs0_pins_b>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -157,7 +152,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -117,7 +112,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -1,20 +1,66 @@
|
|||
/*
|
||||
* Copyright 2015 Hans de Goede <hdegoede@redhat.com>
|
||||
* Copyright 2015 Marcus Cooper
|
||||
*
|
||||
* Minimal dts file for the MK808C for u-boot only
|
||||
* Marcus Cooper <codekipper@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ or X11
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "sun7i-a20.dtsi"
|
||||
#include "sunxi-common-regulators.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
/ {
|
||||
model = "MK808C";
|
||||
model = "mk808c";
|
||||
compatible = "allwinner,mk808c", "allwinner,sun7i-a20";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
serial1 = &uart2;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
@ -30,6 +76,43 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
status = "okay";
|
||||
|
||||
axp209: pmic@34 {
|
||||
compatible = "x-powers,axp209";
|
||||
reg = <0x34>;
|
||||
interrupt-parent = <&nmi_intc>;
|
||||
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c2_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
|
||||
vmmc-supply = <®_vcc3v0>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
|
||||
cd-inverted;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ohci0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -38,8 +121,28 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
®_usb1_vbus {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
®_usb2_vbus {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart2_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbphy {
|
||||
usb1_vbus-supply = <®_usb1_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
@ -19,11 +19,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -250,13 +245,15 @@
|
|||
|
||||
&spi1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi1_pins_a>;
|
||||
pinctrl-0 = <&spi1_pins_a>,
|
||||
<&spi1_cs0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi2_pins_a>;
|
||||
pinctrl-0 = <&spi2_pins_a>,
|
||||
<&spi2_cs0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -137,7 +132,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -132,7 +127,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -125,7 +120,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -17,11 +17,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -154,7 +149,7 @@
|
|||
|
||||
&ir0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir0_pins_a>;
|
||||
pinctrl-0 = <&ir0_rx_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -17,11 +17,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -68,7 +63,8 @@
|
|||
ranges;
|
||||
|
||||
framebuffer@0 {
|
||||
compatible = "allwinner,simple-framebuffer", "simple-framebuffer";
|
||||
compatible = "allwinner,simple-framebuffer",
|
||||
"simple-framebuffer";
|
||||
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>,
|
||||
<&ahb_gates 44>;
|
||||
|
@ -104,14 +100,14 @@
|
|||
clocks = <&cpu>;
|
||||
clock-latency = <244144>; /* 8 32k periods */
|
||||
operating-points = <
|
||||
/* kHz uV */
|
||||
960000 1400000
|
||||
912000 1400000
|
||||
864000 1300000
|
||||
720000 1200000
|
||||
528000 1100000
|
||||
312000 1000000
|
||||
144000 900000
|
||||
/* kHz uV */
|
||||
960000 1400000
|
||||
912000 1400000
|
||||
864000 1300000
|
||||
720000 1200000
|
||||
528000 1100000
|
||||
312000 1000000
|
||||
144000 900000
|
||||
>;
|
||||
#cooling-cells = <2>;
|
||||
cooling-min-level = <0>;
|
||||
|
@ -224,7 +220,8 @@
|
|||
compatible = "allwinner,sun4i-a10-pll6-clk";
|
||||
reg = <0x01c20028 0x4>;
|
||||
clocks = <&osc24M>;
|
||||
clock-output-names = "pll6_sata", "pll6_other", "pll6";
|
||||
clock-output-names = "pll6_sata", "pll6_other", "pll6",
|
||||
"pll6_div_4";
|
||||
};
|
||||
|
||||
pll8: clk@01c20040 {
|
||||
|
@ -253,10 +250,16 @@
|
|||
|
||||
ahb: ahb@01c20054 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun4i-a10-ahb-clk";
|
||||
compatible = "allwinner,sun5i-a13-ahb-clk";
|
||||
reg = <0x01c20054 0x4>;
|
||||
clocks = <&axi>;
|
||||
clocks = <&axi>, <&pll6 3>, <&pll6 1>;
|
||||
clock-output-names = "ahb";
|
||||
/*
|
||||
* Use PLL6 as parent, instead of CPU/AXI
|
||||
* which has rate changes due to cpufreq
|
||||
*/
|
||||
assigned-clocks = <&ahb>;
|
||||
assigned-clock-parents = <&pll6 3>;
|
||||
};
|
||||
|
||||
ahb_gates: clk@01c20060 {
|
||||
|
@ -441,11 +444,12 @@
|
|||
|
||||
usb_clk: clk@01c200cc {
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun4i-a10-usb-clk";
|
||||
reg = <0x01c200cc 0x4>;
|
||||
clocks = <&pll6 1>;
|
||||
clock-output-names = "usb_ohci0", "usb_ohci1", "usb_phy";
|
||||
clock-output-names = "usb_ohci0", "usb_ohci1",
|
||||
"usb_phy";
|
||||
};
|
||||
|
||||
spi3_clk: clk@01c200d4 {
|
||||
|
@ -465,10 +469,13 @@
|
|||
};
|
||||
|
||||
/*
|
||||
* The following two are dummy clocks, placeholders used in the gmac_tx
|
||||
* clock. The gmac driver will choose one parent depending on the PHY
|
||||
* interface mode, using clk_set_rate auto-reparenting.
|
||||
* The actual TX clock rate is not controlled by the gmac_tx clock.
|
||||
* The following two are dummy clocks, placeholders
|
||||
* used in the gmac_tx clock. The gmac driver will
|
||||
* choose one parent depending on the PHY interface
|
||||
* mode, using clk_set_rate auto-reparenting.
|
||||
*
|
||||
* The actual TX clock rate is not controlled by the
|
||||
* gmac_tx clock.
|
||||
*/
|
||||
mii_phy_tx_clk: clk@2 {
|
||||
#clock-cells = <0>;
|
||||
|
@ -521,44 +528,46 @@
|
|||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Note we use the address where the mmio registers start, not where
|
||||
* the SRAM blocks start, this cannot be changed because that would be
|
||||
* a devicetree ABI change.
|
||||
*/
|
||||
soc@01c00000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
sram@00000000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00000000 0x4000>;
|
||||
allwinner,sram-name = "A1";
|
||||
};
|
||||
|
||||
sram@00004000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00004000 0x4000>;
|
||||
allwinner,sram-name = "A2";
|
||||
};
|
||||
|
||||
sram@00008000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00008000 0x4000>;
|
||||
allwinner,sram-name = "A3-A4";
|
||||
};
|
||||
|
||||
sram@00010000 {
|
||||
compatible = "allwinner,sun4i-a10-sram";
|
||||
reg = <0x00010000 0x1000>;
|
||||
allwinner,sram-name = "D";
|
||||
};
|
||||
|
||||
sram-controller@01c00000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-controller";
|
||||
reg = <0x01c00000 0x30>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
sram_a: sram@00000000 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x00000000 0xc000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x00000000 0xc000>;
|
||||
|
||||
emac_sram: sram-section@8000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-a3-a4";
|
||||
reg = <0x8000 0x4000>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
sram_d: sram@00010000 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x00010000 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x00010000 0x1000>;
|
||||
|
||||
otg_sram: sram-section@0000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-d";
|
||||
reg = <0x0000 0x1000>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nmi_intc: interrupt-controller@01c00030 {
|
||||
|
@ -610,6 +619,7 @@
|
|||
reg = <0x01c0b000 0x1000>;
|
||||
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&ahb_gates 17>;
|
||||
allwinner,sram = <&emac_sram 1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -837,6 +847,13 @@
|
|||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
uart4_pins_b: uart4@1 {
|
||||
allwinner,pins = "PH4", "PH5";
|
||||
allwinner,function = "uart4";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
uart5_pins_a: uart5@0 {
|
||||
allwinner,pins = "PI10", "PI11";
|
||||
allwinner,function = "uart5";
|
||||
|
@ -938,35 +955,71 @@
|
|||
};
|
||||
|
||||
spi0_pins_a: spi0@0 {
|
||||
allwinner,pins = "PI10", "PI11", "PI12", "PI13", "PI14";
|
||||
allwinner,pins = "PI11", "PI12", "PI13";
|
||||
allwinner,function = "spi0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi0_cs0_pins_a: spi0_cs0@0 {
|
||||
allwinner,pins = "PI10";
|
||||
allwinner,function = "spi0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi0_cs1_pins_a: spi0_cs1@0 {
|
||||
allwinner,pins = "PI14";
|
||||
allwinner,function = "spi0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi1_pins_a: spi1@0 {
|
||||
allwinner,pins = "PI16", "PI17", "PI18", "PI19";
|
||||
allwinner,pins = "PI17", "PI18", "PI19";
|
||||
allwinner,function = "spi1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi1_cs0_pins_a: spi1_cs0@0 {
|
||||
allwinner,pins = "PI16";
|
||||
allwinner,function = "spi1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi2_pins_a: spi2@0 {
|
||||
allwinner,pins = "PC19", "PC20", "PC21", "PC22";
|
||||
allwinner,pins = "PC20", "PC21", "PC22";
|
||||
allwinner,function = "spi2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi2_pins_b: spi2@1 {
|
||||
allwinner,pins = "PB14", "PB15", "PB16", "PB17";
|
||||
allwinner,pins = "PB15", "PB16", "PB17";
|
||||
allwinner,function = "spi2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi2_cs0_pins_a: spi2_cs0@0 {
|
||||
allwinner,pins = "PC19";
|
||||
allwinner,function = "spi2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
spi2_cs0_pins_b: spi2_cs0@1 {
|
||||
allwinner,pins = "PB14";
|
||||
allwinner,function = "spi2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
mmc0_pins_a: mmc0@0 {
|
||||
allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
|
||||
allwinner,pins = "PF0", "PF1", "PF2",
|
||||
"PF3", "PF4", "PF5";
|
||||
allwinner,function = "mmc0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
|
@ -980,28 +1033,44 @@
|
|||
};
|
||||
|
||||
mmc2_pins_a: mmc2@0 {
|
||||
allwinner,pins = "PC6","PC7","PC8","PC9","PC10","PC11";
|
||||
allwinner,pins = "PC6", "PC7", "PC8",
|
||||
"PC9", "PC10", "PC11";
|
||||
allwinner,function = "mmc2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
|
||||
mmc3_pins_a: mmc3@0 {
|
||||
allwinner,pins = "PI4","PI5","PI6","PI7","PI8","PI9";
|
||||
allwinner,pins = "PI4", "PI5", "PI6",
|
||||
"PI7", "PI8", "PI9";
|
||||
allwinner,function = "mmc3";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
ir0_pins_a: ir0@0 {
|
||||
allwinner,pins = "PB3","PB4";
|
||||
ir0_rx_pins_a: ir0@0 {
|
||||
allwinner,pins = "PB4";
|
||||
allwinner,function = "ir0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
ir1_pins_a: ir1@0 {
|
||||
allwinner,pins = "PB22","PB23";
|
||||
ir0_tx_pins_a: ir0@1 {
|
||||
allwinner,pins = "PB3";
|
||||
allwinner,function = "ir0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
ir1_rx_pins_a: ir1@0 {
|
||||
allwinner,pins = "PB23";
|
||||
allwinner,function = "ir1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
ir1_tx_pins_a: ir1@1 {
|
||||
allwinner,pins = "PB22";
|
||||
allwinner,function = "ir1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
|
@ -1171,7 +1240,8 @@
|
|||
};
|
||||
|
||||
i2c0: i2c@01c2ac00 {
|
||||
compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
|
||||
compatible = "allwinner,sun7i-a20-i2c",
|
||||
"allwinner,sun4i-a10-i2c";
|
||||
reg = <0x01c2ac00 0x400>;
|
||||
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb1_gates 0>;
|
||||
|
@ -1181,7 +1251,8 @@
|
|||
};
|
||||
|
||||
i2c1: i2c@01c2b000 {
|
||||
compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
|
||||
compatible = "allwinner,sun7i-a20-i2c",
|
||||
"allwinner,sun4i-a10-i2c";
|
||||
reg = <0x01c2b000 0x400>;
|
||||
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb1_gates 1>;
|
||||
|
@ -1191,7 +1262,8 @@
|
|||
};
|
||||
|
||||
i2c2: i2c@01c2b400 {
|
||||
compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
|
||||
compatible = "allwinner,sun7i-a20-i2c",
|
||||
"allwinner,sun4i-a10-i2c";
|
||||
reg = <0x01c2b400 0x400>;
|
||||
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb1_gates 2>;
|
||||
|
@ -1201,7 +1273,8 @@
|
|||
};
|
||||
|
||||
i2c3: i2c@01c2b800 {
|
||||
compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
|
||||
compatible = "allwinner,sun7i-a20-i2c",
|
||||
"allwinner,sun4i-a10-i2c";
|
||||
reg = <0x01c2b800 0x400>;
|
||||
interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb1_gates 3>;
|
||||
|
@ -1211,7 +1284,8 @@
|
|||
};
|
||||
|
||||
i2c4: i2c@01c2c000 {
|
||||
compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
|
||||
compatible = "allwinner,sun7i-a20-i2c",
|
||||
"allwinner,sun4i-a10-i2c";
|
||||
reg = <0x01c2c000 0x400>;
|
||||
interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb1_gates 15>;
|
||||
|
|
626
arch/arm/dts/sun8i-a23-a33.dtsi
Normal file
626
arch/arm/dts/sun8i-a23-a33.dtsi
Normal file
|
@ -0,0 +1,626 @@
|
|||
/*
|
||||
* Copyright 2014 Chen-Yu Tsai
|
||||
*
|
||||
* Chen-Yu Tsai <wens@csie.org>
|
||||
*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "skeleton.dtsi"
|
||||
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||
|
||||
/ {
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
chosen {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
framebuffer@0 {
|
||||
compatible = "allwinner,simple-framebuffer",
|
||||
"simple-framebuffer";
|
||||
allwinner,pipeline = "de_be0-lcd0";
|
||||
clocks = <&pll6 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
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)>;
|
||||
clock-frequency = <24000000>;
|
||||
arm,cpu-registers-not-fw-configured;
|
||||
};
|
||||
|
||||
cpus {
|
||||
enable-method = "allwinner,sun8i-a23";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu@0 {
|
||||
compatible = "arm,cortex-a7";
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
cpu@1 {
|
||||
compatible = "arm,cortex-a7";
|
||||
device_type = "cpu";
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
clocks {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
osc24M: osc24M_clk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <24000000>;
|
||||
clock-output-names = "osc24M";
|
||||
};
|
||||
|
||||
osc32k: osc32k_clk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "osc32k";
|
||||
};
|
||||
|
||||
pll1: clk@01c20000 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun8i-a23-pll1-clk";
|
||||
reg = <0x01c20000 0x4>;
|
||||
clocks = <&osc24M>;
|
||||
clock-output-names = "pll1";
|
||||
};
|
||||
|
||||
/* dummy clock until actually implemented */
|
||||
pll5: pll5_clk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <0>;
|
||||
clock-output-names = "pll5";
|
||||
};
|
||||
|
||||
pll6: clk@01c20028 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun6i-a31-pll6-clk";
|
||||
reg = <0x01c20028 0x4>;
|
||||
clocks = <&osc24M>;
|
||||
clock-output-names = "pll6", "pll6x2";
|
||||
};
|
||||
|
||||
cpu: cpu_clk@01c20050 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun4i-a10-cpu-clk";
|
||||
reg = <0x01c20050 0x4>;
|
||||
|
||||
/*
|
||||
* PLL1 is listed twice here.
|
||||
* While it looks suspicious, it's actually documented
|
||||
* that way both in the datasheet and in the code from
|
||||
* Allwinner.
|
||||
*/
|
||||
clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll1>;
|
||||
clock-output-names = "cpu";
|
||||
};
|
||||
|
||||
axi: axi_clk@01c20050 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun8i-a23-axi-clk";
|
||||
reg = <0x01c20050 0x4>;
|
||||
clocks = <&cpu>;
|
||||
clock-output-names = "axi";
|
||||
};
|
||||
|
||||
ahb1: ahb1_clk@01c20054 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun6i-a31-ahb1-clk";
|
||||
reg = <0x01c20054 0x4>;
|
||||
clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>;
|
||||
clock-output-names = "ahb1";
|
||||
};
|
||||
|
||||
apb1: apb1_clk@01c20054 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun4i-a10-apb0-clk";
|
||||
reg = <0x01c20054 0x4>;
|
||||
clocks = <&ahb1>;
|
||||
clock-output-names = "apb1";
|
||||
};
|
||||
|
||||
ahb1_gates: clk@01c20060 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun8i-a23-ahb1-gates-clk";
|
||||
reg = <0x01c20060 0x8>;
|
||||
clocks = <&ahb1>;
|
||||
clock-output-names = "ahb1_mipidsi", "ahb1_dma",
|
||||
"ahb1_mmc0", "ahb1_mmc1", "ahb1_mmc2",
|
||||
"ahb1_nand", "ahb1_sdram",
|
||||
"ahb1_hstimer", "ahb1_spi0",
|
||||
"ahb1_spi1", "ahb1_otg", "ahb1_ehci",
|
||||
"ahb1_ohci", "ahb1_ve", "ahb1_lcd",
|
||||
"ahb1_csi", "ahb1_be", "ahb1_fe",
|
||||
"ahb1_gpu", "ahb1_spinlock",
|
||||
"ahb1_drc";
|
||||
};
|
||||
|
||||
apb1_gates: clk@01c20068 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun8i-a23-apb1-gates-clk";
|
||||
reg = <0x01c20068 0x4>;
|
||||
clocks = <&apb1>;
|
||||
clock-output-names = "apb1_codec", "apb1_pio",
|
||||
"apb1_daudio0", "apb1_daudio1";
|
||||
};
|
||||
|
||||
apb2: clk@01c20058 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun4i-a10-apb1-clk";
|
||||
reg = <0x01c20058 0x4>;
|
||||
clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>;
|
||||
clock-output-names = "apb2";
|
||||
};
|
||||
|
||||
apb2_gates: clk@01c2006c {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun8i-a23-apb2-gates-clk";
|
||||
reg = <0x01c2006c 0x4>;
|
||||
clocks = <&apb2>;
|
||||
clock-output-names = "apb2_i2c0", "apb2_i2c1",
|
||||
"apb2_i2c2", "apb2_uart0",
|
||||
"apb2_uart1", "apb2_uart2",
|
||||
"apb2_uart3", "apb2_uart4";
|
||||
};
|
||||
|
||||
mmc0_clk: clk@01c20088 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun4i-a10-mmc-clk";
|
||||
reg = <0x01c20088 0x4>;
|
||||
clocks = <&osc24M>, <&pll6 0>;
|
||||
clock-output-names = "mmc0",
|
||||
"mmc0_output",
|
||||
"mmc0_sample";
|
||||
};
|
||||
|
||||
mmc1_clk: clk@01c2008c {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun4i-a10-mmc-clk";
|
||||
reg = <0x01c2008c 0x4>;
|
||||
clocks = <&osc24M>, <&pll6 0>;
|
||||
clock-output-names = "mmc1",
|
||||
"mmc1_output",
|
||||
"mmc1_sample";
|
||||
};
|
||||
|
||||
mmc2_clk: clk@01c20090 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun4i-a10-mmc-clk";
|
||||
reg = <0x01c20090 0x4>;
|
||||
clocks = <&osc24M>, <&pll6 0>;
|
||||
clock-output-names = "mmc2",
|
||||
"mmc2_output",
|
||||
"mmc2_sample";
|
||||
};
|
||||
|
||||
usb_clk: clk@01c200cc {
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun8i-a23-usb-clk";
|
||||
reg = <0x01c200cc 0x4>;
|
||||
clocks = <&osc24M>;
|
||||
clock-output-names = "usb_phy0", "usb_phy1", "usb_hsic",
|
||||
"usb_hsic_12M", "usb_ohci0";
|
||||
};
|
||||
};
|
||||
|
||||
soc@01c00000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
dma: dma-controller@01c02000 {
|
||||
compatible = "allwinner,sun8i-a23-dma";
|
||||
reg = <0x01c02000 0x1000>;
|
||||
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&ahb1_gates 6>;
|
||||
resets = <&ahb1_rst 6>;
|
||||
#dma-cells = <1>;
|
||||
};
|
||||
|
||||
mmc0: mmc@01c0f000 {
|
||||
compatible = "allwinner,sun5i-a13-mmc";
|
||||
reg = <0x01c0f000 0x1000>;
|
||||
clocks = <&ahb1_gates 8>,
|
||||
<&mmc0_clk 0>,
|
||||
<&mmc0_clk 1>,
|
||||
<&mmc0_clk 2>;
|
||||
clock-names = "ahb",
|
||||
"mmc",
|
||||
"output",
|
||||
"sample";
|
||||
resets = <&ahb1_rst 8>;
|
||||
reset-names = "ahb";
|
||||
interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
mmc1: mmc@01c10000 {
|
||||
compatible = "allwinner,sun5i-a13-mmc";
|
||||
reg = <0x01c10000 0x1000>;
|
||||
clocks = <&ahb1_gates 9>,
|
||||
<&mmc1_clk 0>,
|
||||
<&mmc1_clk 1>,
|
||||
<&mmc1_clk 2>;
|
||||
clock-names = "ahb",
|
||||
"mmc",
|
||||
"output",
|
||||
"sample";
|
||||
resets = <&ahb1_rst 9>;
|
||||
reset-names = "ahb";
|
||||
interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
mmc2: mmc@01c11000 {
|
||||
compatible = "allwinner,sun5i-a13-mmc";
|
||||
reg = <0x01c11000 0x1000>;
|
||||
clocks = <&ahb1_gates 10>,
|
||||
<&mmc2_clk 0>,
|
||||
<&mmc2_clk 1>,
|
||||
<&mmc2_clk 2>;
|
||||
clock-names = "ahb",
|
||||
"mmc",
|
||||
"output",
|
||||
"sample";
|
||||
resets = <&ahb1_rst 10>;
|
||||
reset-names = "ahb";
|
||||
interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
pio: pinctrl@01c20800 {
|
||||
/* compatible gets set in SoC specific dtsi file */
|
||||
reg = <0x01c20800 0x400>;
|
||||
/* interrupts get set in SoC specific dtsi file */
|
||||
clocks = <&apb1_gates 5>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#gpio-cells = <3>;
|
||||
|
||||
uart0_pins_a: uart0@0 {
|
||||
allwinner,pins = "PF2", "PF4";
|
||||
allwinner,function = "uart0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
mmc0_pins_a: mmc0@0 {
|
||||
allwinner,pins = "PF0", "PF1", "PF2",
|
||||
"PF3", "PF4", "PF5";
|
||||
allwinner,function = "mmc0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
mmc1_pins_a: mmc1@0 {
|
||||
allwinner,pins = "PG0", "PG1", "PG2",
|
||||
"PG3", "PG4", "PG5";
|
||||
allwinner,function = "mmc1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
i2c0_pins_a: i2c0@0 {
|
||||
allwinner,pins = "PH2", "PH3";
|
||||
allwinner,function = "i2c0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
i2c1_pins_a: i2c1@0 {
|
||||
allwinner,pins = "PH4", "PH5";
|
||||
allwinner,function = "i2c1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
i2c2_pins_a: i2c2@0 {
|
||||
allwinner,pins = "PE12", "PE13";
|
||||
allwinner,function = "i2c2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
};
|
||||
|
||||
ahb1_rst: reset@01c202c0 {
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun6i-a31-clock-reset";
|
||||
reg = <0x01c202c0 0xc>;
|
||||
};
|
||||
|
||||
apb1_rst: reset@01c202d0 {
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun6i-a31-clock-reset";
|
||||
reg = <0x01c202d0 0x4>;
|
||||
};
|
||||
|
||||
apb2_rst: reset@01c202d8 {
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun6i-a31-clock-reset";
|
||||
reg = <0x01c202d8 0x4>;
|
||||
};
|
||||
|
||||
timer@01c20c00 {
|
||||
compatible = "allwinner,sun4i-a10-timer";
|
||||
reg = <0x01c20c00 0xa0>;
|
||||
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&osc24M>;
|
||||
};
|
||||
|
||||
wdt0: watchdog@01c20ca0 {
|
||||
compatible = "allwinner,sun6i-a31-wdt";
|
||||
reg = <0x01c20ca0 0x20>;
|
||||
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
lradc: lradc@01c22800 {
|
||||
compatible = "allwinner,sun4i-a10-lradc-keys";
|
||||
reg = <0x01c22800 0x100>;
|
||||
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart0: serial@01c28000 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c28000 0x400>;
|
||||
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 16>;
|
||||
resets = <&apb2_rst 16>;
|
||||
dmas = <&dma 6>, <&dma 6>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart1: serial@01c28400 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c28400 0x400>;
|
||||
interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 17>;
|
||||
resets = <&apb2_rst 17>;
|
||||
dmas = <&dma 7>, <&dma 7>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart2: serial@01c28800 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c28800 0x400>;
|
||||
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 18>;
|
||||
resets = <&apb2_rst 18>;
|
||||
dmas = <&dma 8>, <&dma 8>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart3: serial@01c28c00 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c28c00 0x400>;
|
||||
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 19>;
|
||||
resets = <&apb2_rst 19>;
|
||||
dmas = <&dma 9>, <&dma 9>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart4: serial@01c29000 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c29000 0x400>;
|
||||
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 20>;
|
||||
resets = <&apb2_rst 20>;
|
||||
dmas = <&dma 10>, <&dma 10>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c0: i2c@01c2ac00 {
|
||||
compatible = "allwinner,sun6i-a31-i2c";
|
||||
reg = <0x01c2ac00 0x400>;
|
||||
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb2_gates 0>;
|
||||
resets = <&apb2_rst 0>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
i2c1: i2c@01c2b000 {
|
||||
compatible = "allwinner,sun6i-a31-i2c";
|
||||
reg = <0x01c2b000 0x400>;
|
||||
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb2_gates 1>;
|
||||
resets = <&apb2_rst 1>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
i2c2: i2c@01c2b400 {
|
||||
compatible = "allwinner,sun6i-a31-i2c";
|
||||
reg = <0x01c2b400 0x400>;
|
||||
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb2_gates 2>;
|
||||
resets = <&apb2_rst 2>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
gic: interrupt-controller@01c81000 {
|
||||
compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
|
||||
reg = <0x01c81000 0x1000>,
|
||||
<0x01c82000 0x1000>,
|
||||
<0x01c84000 0x2000>,
|
||||
<0x01c86000 0x2000>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
};
|
||||
|
||||
rtc: rtc@01f00000 {
|
||||
compatible = "allwinner,sun6i-a31-rtc";
|
||||
reg = <0x01f00000 0x54>;
|
||||
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
prcm@01f01400 {
|
||||
compatible = "allwinner,sun8i-a23-prcm";
|
||||
reg = <0x01f01400 0x200>;
|
||||
|
||||
ar100: ar100_clk {
|
||||
compatible = "fixed-factor-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-div = <1>;
|
||||
clock-mult = <1>;
|
||||
clocks = <&osc24M>;
|
||||
clock-output-names = "ar100";
|
||||
};
|
||||
|
||||
ahb0: ahb0_clk {
|
||||
compatible = "fixed-factor-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-div = <1>;
|
||||
clock-mult = <1>;
|
||||
clocks = <&ar100>;
|
||||
clock-output-names = "ahb0";
|
||||
};
|
||||
|
||||
apb0: apb0_clk {
|
||||
compatible = "allwinner,sun8i-a23-apb0-clk";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&ahb0>;
|
||||
clock-output-names = "apb0";
|
||||
};
|
||||
|
||||
apb0_gates: apb0_gates_clk {
|
||||
compatible = "allwinner,sun8i-a23-apb0-gates-clk";
|
||||
#clock-cells = <1>;
|
||||
clocks = <&apb0>;
|
||||
clock-output-names = "apb0_pio", "apb0_timer",
|
||||
"apb0_rsb", "apb0_uart",
|
||||
"apb0_i2c";
|
||||
};
|
||||
|
||||
apb0_rst: apb0_rst {
|
||||
compatible = "allwinner,sun6i-a31-clock-reset";
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
cpucfg@01f01c00 {
|
||||
compatible = "allwinner,sun8i-a23-cpuconfig";
|
||||
reg = <0x01f01c00 0x300>;
|
||||
};
|
||||
|
||||
r_uart: serial@01f02800 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01f02800 0x400>;
|
||||
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb0_gates 4>;
|
||||
resets = <&apb0_rst 4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
r_pio: pinctrl@01f02c00 {
|
||||
compatible = "allwinner,sun8i-a23-r-pinctrl";
|
||||
reg = <0x01f02c00 0x400>;
|
||||
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb0_gates 0>;
|
||||
resets = <&apb0_rst 0>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#gpio-cells = <3>;
|
||||
|
||||
r_uart_pins_a: r_uart@0 {
|
||||
allwinner,pins = "PL2", "PL3";
|
||||
allwinner,function = "s_uart";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
134
arch/arm/dts/sun8i-a23-evb.dts
Normal file
134
arch/arm/dts/sun8i-a23-evb.dts
Normal file
|
@ -0,0 +1,134 @@
|
|||
/*
|
||||
* Copyright 2015 Maxime Ripard
|
||||
*
|
||||
* Maxime Ripard <maxime.ripard@free-electrons.com>
|
||||
*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "sun8i-a23.dtsi"
|
||||
#include "sunxi-common-regulators.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||
|
||||
/ {
|
||||
model = "Allwinner A23 Evaluation Board";
|
||||
compatible = "allwinner,sun8i-a23-evb", "allwinner,sun8i-a23";
|
||||
|
||||
aliases {
|
||||
i2c0 = &i2c0;
|
||||
i2c1 = &i2c1;
|
||||
serial0 = &r_uart;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&lradc {
|
||||
vref-supply = <®_vcc3v0>;
|
||||
status = "okay";
|
||||
|
||||
button@190 {
|
||||
label = "Volume Up";
|
||||
linux,code = <KEY_VOLUMEUP>;
|
||||
channel = <0>;
|
||||
voltage = <190000>;
|
||||
};
|
||||
|
||||
button@390 {
|
||||
label = "Volume Down";
|
||||
linux,code = <KEY_VOLUMEDOWN>;
|
||||
channel = <0>;
|
||||
voltage = <390000>;
|
||||
};
|
||||
|
||||
button@600 {
|
||||
label = "Home";
|
||||
linux,code = <KEY_HOME>;
|
||||
channel = <0>;
|
||||
voltage = <600000>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_evb>;
|
||||
vmmc-supply = <®_vcc3v0>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */
|
||||
cd-inverted;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
mmc0_cd_pin_evb: mmc0_cd_pin@0 {
|
||||
allwinner,pins = "PB4";
|
||||
allwinner,function = "gpio_in";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* The RX line has a non-populated resistance. In order to use it, you
|
||||
* need to solder R207 on the back of the board in order to close the
|
||||
* line and get a working UART.
|
||||
*/
|
||||
&r_uart {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&r_uart_pins_a>;
|
||||
status = "okay";
|
||||
};
|
|
@ -16,11 +16,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -47,217 +42,14 @@
|
|||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "skeleton.dtsi"
|
||||
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||
#include "sun8i-a23-a33.dtsi"
|
||||
|
||||
/ {
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
chosen {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
framebuffer@0 {
|
||||
compatible = "allwinner,simple-framebuffer",
|
||||
"simple-framebuffer";
|
||||
allwinner,pipeline = "de_be0-lcd0";
|
||||
clocks = <&pll6 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
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)>;
|
||||
clock-frequency = <24000000>;
|
||||
arm,cpu-registers-not-fw-configured;
|
||||
};
|
||||
|
||||
cpus {
|
||||
enable-method = "allwinner,sun8i-a23";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu@0 {
|
||||
compatible = "arm,cortex-a7";
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
cpu@1 {
|
||||
compatible = "arm,cortex-a7";
|
||||
device_type = "cpu";
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x40000000 0x40000000>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
osc24M: osc24M_clk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <24000000>;
|
||||
clock-output-names = "osc24M";
|
||||
};
|
||||
|
||||
osc32k: osc32k_clk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "osc32k";
|
||||
};
|
||||
|
||||
pll1: clk@01c20000 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun8i-a23-pll1-clk";
|
||||
reg = <0x01c20000 0x4>;
|
||||
clocks = <&osc24M>;
|
||||
clock-output-names = "pll1";
|
||||
};
|
||||
|
||||
/* dummy clock until actually implemented */
|
||||
pll5: pll5_clk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <0>;
|
||||
clock-output-names = "pll5";
|
||||
};
|
||||
|
||||
pll6: clk@01c20028 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun6i-a31-pll6-clk";
|
||||
reg = <0x01c20028 0x4>;
|
||||
clocks = <&osc24M>;
|
||||
clock-output-names = "pll6", "pll6x2";
|
||||
};
|
||||
|
||||
cpu: cpu_clk@01c20050 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun4i-a10-cpu-clk";
|
||||
reg = <0x01c20050 0x4>;
|
||||
|
||||
/*
|
||||
* PLL1 is listed twice here.
|
||||
* While it looks suspicious, it's actually documented
|
||||
* that way both in the datasheet and in the code from
|
||||
* Allwinner.
|
||||
*/
|
||||
clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll1>;
|
||||
clock-output-names = "cpu";
|
||||
};
|
||||
|
||||
axi: axi_clk@01c20050 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun8i-a23-axi-clk";
|
||||
reg = <0x01c20050 0x4>;
|
||||
clocks = <&cpu>;
|
||||
clock-output-names = "axi";
|
||||
};
|
||||
|
||||
ahb1: ahb1_clk@01c20054 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun6i-a31-ahb1-clk";
|
||||
reg = <0x01c20054 0x4>;
|
||||
clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>;
|
||||
clock-output-names = "ahb1";
|
||||
};
|
||||
|
||||
apb1: apb1_clk@01c20054 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun4i-a10-apb0-clk";
|
||||
reg = <0x01c20054 0x4>;
|
||||
clocks = <&ahb1>;
|
||||
clock-output-names = "apb1";
|
||||
};
|
||||
|
||||
ahb1_gates: clk@01c20060 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun8i-a23-ahb1-gates-clk";
|
||||
reg = <0x01c20060 0x8>;
|
||||
clocks = <&ahb1>;
|
||||
clock-output-names = "ahb1_mipidsi", "ahb1_dma",
|
||||
"ahb1_mmc0", "ahb1_mmc1", "ahb1_mmc2",
|
||||
"ahb1_nand", "ahb1_sdram",
|
||||
"ahb1_hstimer", "ahb1_spi0",
|
||||
"ahb1_spi1", "ahb1_otg", "ahb1_ehci",
|
||||
"ahb1_ohci", "ahb1_ve", "ahb1_lcd",
|
||||
"ahb1_csi", "ahb1_be", "ahb1_fe",
|
||||
"ahb1_gpu", "ahb1_spinlock",
|
||||
"ahb1_drc";
|
||||
};
|
||||
|
||||
apb1_gates: clk@01c20068 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun8i-a23-apb1-gates-clk";
|
||||
reg = <0x01c20068 0x4>;
|
||||
clocks = <&apb1>;
|
||||
clock-output-names = "apb1_codec", "apb1_pio",
|
||||
"apb1_daudio0", "apb1_daudio1";
|
||||
};
|
||||
|
||||
apb2: clk@01c20058 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun4i-a10-apb1-clk";
|
||||
reg = <0x01c20058 0x4>;
|
||||
clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>;
|
||||
clock-output-names = "apb2";
|
||||
};
|
||||
|
||||
apb2_gates: clk@01c2006c {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun8i-a23-apb2-gates-clk";
|
||||
reg = <0x01c2006c 0x4>;
|
||||
clocks = <&apb2>;
|
||||
clock-output-names = "apb2_i2c0", "apb2_i2c1",
|
||||
"apb2_i2c2", "apb2_uart0",
|
||||
"apb2_uart1", "apb2_uart2",
|
||||
"apb2_uart3", "apb2_uart4";
|
||||
};
|
||||
|
||||
mmc0_clk: clk@01c20088 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun4i-a10-mmc-clk";
|
||||
reg = <0x01c20088 0x4>;
|
||||
clocks = <&osc24M>, <&pll6 0>;
|
||||
clock-output-names = "mmc0",
|
||||
"mmc0_output",
|
||||
"mmc0_sample";
|
||||
};
|
||||
|
||||
mmc1_clk: clk@01c2008c {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun4i-a10-mmc-clk";
|
||||
reg = <0x01c2008c 0x4>;
|
||||
clocks = <&osc24M>, <&pll6 0>;
|
||||
clock-output-names = "mmc1",
|
||||
"mmc1_output",
|
||||
"mmc1_sample";
|
||||
};
|
||||
|
||||
mmc2_clk: clk@01c20090 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "allwinner,sun4i-a10-mmc-clk";
|
||||
reg = <0x01c20090 0x4>;
|
||||
clocks = <&osc24M>, <&pll6 0>;
|
||||
clock-output-names = "mmc2",
|
||||
"mmc2_output",
|
||||
"mmc2_sample";
|
||||
};
|
||||
|
||||
mbus_clk: clk@01c2015c {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun8i-a23-mbus-clk";
|
||||
|
@ -266,368 +58,11 @@
|
|||
clock-output-names = "mbus";
|
||||
};
|
||||
};
|
||||
|
||||
soc@01c00000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
dma: dma-controller@01c02000 {
|
||||
compatible = "allwinner,sun8i-a23-dma";
|
||||
reg = <0x01c02000 0x1000>;
|
||||
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&ahb1_gates 6>;
|
||||
resets = <&ahb1_rst 6>;
|
||||
#dma-cells = <1>;
|
||||
};
|
||||
|
||||
mmc0: mmc@01c0f000 {
|
||||
compatible = "allwinner,sun5i-a13-mmc";
|
||||
reg = <0x01c0f000 0x1000>;
|
||||
clocks = <&ahb1_gates 8>,
|
||||
<&mmc0_clk 0>,
|
||||
<&mmc0_clk 1>,
|
||||
<&mmc0_clk 2>;
|
||||
clock-names = "ahb",
|
||||
"mmc",
|
||||
"output",
|
||||
"sample";
|
||||
resets = <&ahb1_rst 8>;
|
||||
reset-names = "ahb";
|
||||
interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
mmc1: mmc@01c10000 {
|
||||
compatible = "allwinner,sun5i-a13-mmc";
|
||||
reg = <0x01c10000 0x1000>;
|
||||
clocks = <&ahb1_gates 9>,
|
||||
<&mmc1_clk 0>,
|
||||
<&mmc1_clk 1>,
|
||||
<&mmc1_clk 2>;
|
||||
clock-names = "ahb",
|
||||
"mmc",
|
||||
"output",
|
||||
"sample";
|
||||
resets = <&ahb1_rst 9>;
|
||||
reset-names = "ahb";
|
||||
interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
mmc2: mmc@01c11000 {
|
||||
compatible = "allwinner,sun5i-a13-mmc";
|
||||
reg = <0x01c11000 0x1000>;
|
||||
clocks = <&ahb1_gates 10>,
|
||||
<&mmc2_clk 0>,
|
||||
<&mmc2_clk 1>,
|
||||
<&mmc2_clk 2>;
|
||||
clock-names = "ahb",
|
||||
"mmc",
|
||||
"output",
|
||||
"sample";
|
||||
resets = <&ahb1_rst 10>;
|
||||
reset-names = "ahb";
|
||||
interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
pio: pinctrl@01c20800 {
|
||||
compatible = "allwinner,sun8i-a23-pinctrl";
|
||||
reg = <0x01c20800 0x400>;
|
||||
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb1_gates 5>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#gpio-cells = <3>;
|
||||
|
||||
uart0_pins_a: uart0@0 {
|
||||
allwinner,pins = "PF2", "PF4";
|
||||
allwinner,function = "uart0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
mmc0_pins_a: mmc0@0 {
|
||||
allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
|
||||
allwinner,function = "mmc0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
mmc1_pins_a: mmc1@0 {
|
||||
allwinner,pins = "PG0","PG1","PG2","PG3","PG4","PG5";
|
||||
allwinner,function = "mmc1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
i2c0_pins_a: i2c0@0 {
|
||||
allwinner,pins = "PH2", "PH3";
|
||||
allwinner,function = "i2c0";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
i2c1_pins_a: i2c1@0 {
|
||||
allwinner,pins = "PH4", "PH5";
|
||||
allwinner,function = "i2c1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
i2c2_pins_a: i2c2@0 {
|
||||
allwinner,pins = "PE12", "PE13";
|
||||
allwinner,function = "i2c2";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
};
|
||||
|
||||
ahb1_rst: reset@01c202c0 {
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun6i-a31-clock-reset";
|
||||
reg = <0x01c202c0 0xc>;
|
||||
};
|
||||
|
||||
apb1_rst: reset@01c202d0 {
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun6i-a31-clock-reset";
|
||||
reg = <0x01c202d0 0x4>;
|
||||
};
|
||||
|
||||
apb2_rst: reset@01c202d8 {
|
||||
#reset-cells = <1>;
|
||||
compatible = "allwinner,sun6i-a31-clock-reset";
|
||||
reg = <0x01c202d8 0x4>;
|
||||
};
|
||||
|
||||
timer@01c20c00 {
|
||||
compatible = "allwinner,sun4i-a10-timer";
|
||||
reg = <0x01c20c00 0xa0>;
|
||||
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&osc24M>;
|
||||
};
|
||||
|
||||
wdt0: watchdog@01c20ca0 {
|
||||
compatible = "allwinner,sun6i-a31-wdt";
|
||||
reg = <0x01c20ca0 0x20>;
|
||||
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
lradc: lradc@01c22800 {
|
||||
compatible = "allwinner,sun4i-a10-lradc-keys";
|
||||
reg = <0x01c22800 0x100>;
|
||||
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart0: serial@01c28000 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c28000 0x400>;
|
||||
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 16>;
|
||||
resets = <&apb2_rst 16>;
|
||||
dmas = <&dma 6>, <&dma 6>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart1: serial@01c28400 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c28400 0x400>;
|
||||
interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 17>;
|
||||
resets = <&apb2_rst 17>;
|
||||
dmas = <&dma 7>, <&dma 7>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart2: serial@01c28800 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c28800 0x400>;
|
||||
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 18>;
|
||||
resets = <&apb2_rst 18>;
|
||||
dmas = <&dma 8>, <&dma 8>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart3: serial@01c28c00 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c28c00 0x400>;
|
||||
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 19>;
|
||||
resets = <&apb2_rst 19>;
|
||||
dmas = <&dma 9>, <&dma 9>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart4: serial@01c29000 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01c29000 0x400>;
|
||||
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb2_gates 20>;
|
||||
resets = <&apb2_rst 20>;
|
||||
dmas = <&dma 10>, <&dma 10>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c0: i2c@01c2ac00 {
|
||||
compatible = "allwinner,sun6i-a31-i2c";
|
||||
reg = <0x01c2ac00 0x400>;
|
||||
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb2_gates 0>;
|
||||
resets = <&apb2_rst 0>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
i2c1: i2c@01c2b000 {
|
||||
compatible = "allwinner,sun6i-a31-i2c";
|
||||
reg = <0x01c2b000 0x400>;
|
||||
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb2_gates 1>;
|
||||
resets = <&apb2_rst 1>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
i2c2: i2c@01c2b400 {
|
||||
compatible = "allwinner,sun6i-a31-i2c";
|
||||
reg = <0x01c2b400 0x400>;
|
||||
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb2_gates 2>;
|
||||
resets = <&apb2_rst 2>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
gic: interrupt-controller@01c81000 {
|
||||
compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
|
||||
reg = <0x01c81000 0x1000>,
|
||||
<0x01c82000 0x1000>,
|
||||
<0x01c84000 0x2000>,
|
||||
<0x01c86000 0x2000>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
};
|
||||
|
||||
rtc: rtc@01f00000 {
|
||||
compatible = "allwinner,sun6i-a31-rtc";
|
||||
reg = <0x01f00000 0x54>;
|
||||
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
prcm@01f01400 {
|
||||
compatible = "allwinner,sun8i-a23-prcm";
|
||||
reg = <0x01f01400 0x200>;
|
||||
|
||||
ar100: ar100_clk {
|
||||
compatible = "fixed-factor-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-div = <1>;
|
||||
clock-mult = <1>;
|
||||
clocks = <&osc24M>;
|
||||
clock-output-names = "ar100";
|
||||
};
|
||||
|
||||
ahb0: ahb0_clk {
|
||||
compatible = "fixed-factor-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-div = <1>;
|
||||
clock-mult = <1>;
|
||||
clocks = <&ar100>;
|
||||
clock-output-names = "ahb0";
|
||||
};
|
||||
|
||||
apb0: apb0_clk {
|
||||
compatible = "allwinner,sun8i-a23-apb0-clk";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&ahb0>;
|
||||
clock-output-names = "apb0";
|
||||
};
|
||||
|
||||
apb0_gates: apb0_gates_clk {
|
||||
compatible = "allwinner,sun8i-a23-apb0-gates-clk";
|
||||
#clock-cells = <1>;
|
||||
clocks = <&apb0>;
|
||||
clock-output-names = "apb0_pio", "apb0_timer",
|
||||
"apb0_rsb", "apb0_uart",
|
||||
"apb0_i2c";
|
||||
};
|
||||
|
||||
apb0_rst: apb0_rst {
|
||||
compatible = "allwinner,sun6i-a31-clock-reset";
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
cpucfg@01f01c00 {
|
||||
compatible = "allwinner,sun8i-a23-cpuconfig";
|
||||
reg = <0x01f01c00 0x300>;
|
||||
};
|
||||
|
||||
r_uart: serial@01f02800 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0x01f02800 0x400>;
|
||||
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
clocks = <&apb0_gates 4>;
|
||||
resets = <&apb0_rst 4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
r_pio: pinctrl@01f02c00 {
|
||||
compatible = "allwinner,sun8i-a23-r-pinctrl";
|
||||
reg = <0x01f02c00 0x400>;
|
||||
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&apb0_gates 0>;
|
||||
resets = <&apb0_rst 0>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#gpio-cells = <3>;
|
||||
|
||||
r_uart_pins_a: r_uart@0 {
|
||||
allwinner,pins = "PL2", "PL3";
|
||||
allwinner,function = "s_uart";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pio {
|
||||
compatible = "allwinner,sun8i-a23-pinctrl";
|
||||
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
/*
|
||||
* Copyright 2015 Hans de Goede <hdegoede@redhat.com>
|
||||
*
|
||||
* Minimal dts file for the Astar MID756 for u-boot only
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ or X11
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "sun8i-a23.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Astar MID756";
|
||||
compatible = "astar,mid756", "allwinner,sun8i-a23";
|
||||
|
||||
aliases {
|
||||
serial0 = &r_uart;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
};
|
||||
|
||||
&r_uart {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&r_uart_pins_a>;
|
||||
status = "okay";
|
||||
};
|
88
arch/arm/dts/sun8i-a33-et-q8-v1.6.dts
Normal file
88
arch/arm/dts/sun8i-a33-et-q8-v1.6.dts
Normal file
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* Copyright 2015 Vishnu Patekar
|
||||
* Vishnu Patekar <vishnupatekar0510@gmail.com>
|
||||
*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "sun8i-a33.dtsi"
|
||||
#include "sunxi-common-regulators.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||
|
||||
/ {
|
||||
model = "ET Q8 Quad Core Tablet (v1.6)";
|
||||
compatible = "et,q8-v1.6", "allwinner,sun8i-a33";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
};
|
||||
|
||||
&lradc {
|
||||
vref-supply = <®_vcc3v0>;
|
||||
status = "okay";
|
||||
|
||||
button@200 {
|
||||
label = "Volume Up";
|
||||
linux,code = <KEY_VOLUMEUP>;
|
||||
channel = <0>;
|
||||
voltage = <200000>;
|
||||
};
|
||||
|
||||
button@400 {
|
||||
label = "Volume Down";
|
||||
linux,code = <KEY_VOLUMEDOWN>;
|
||||
channel = <0>;
|
||||
voltage = <400000>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
125
arch/arm/dts/sun8i-a33-ga10h-v1.1.dts
Normal file
125
arch/arm/dts/sun8i-a33-ga10h-v1.1.dts
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* Copyright 2015 Hans de Goede <hdegoede@redhat.com>
|
||||
*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "sun8i-a33.dtsi"
|
||||
#include "sunxi-common-regulators.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||
|
||||
/ {
|
||||
model = "Allwinner GA10H Quad Core Tablet (v1.1)";
|
||||
compatible = "allwinner,ga10h-v1.1", "allwinner,sun8i-a33";
|
||||
|
||||
aliases {
|
||||
serial0 = &r_uart;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&lradc {
|
||||
vref-supply = <®_vcc3v0>;
|
||||
status = "okay";
|
||||
|
||||
button@200 {
|
||||
label = "Volume Up";
|
||||
linux,code = <KEY_VOLUMEUP>;
|
||||
channel = <0>;
|
||||
voltage = <200000>;
|
||||
};
|
||||
|
||||
button@400 {
|
||||
label = "Volume Down";
|
||||
linux,code = <KEY_VOLUMEDOWN>;
|
||||
channel = <0>;
|
||||
voltage = <400000>;
|
||||
};
|
||||
|
||||
button@600 {
|
||||
label = "Back";
|
||||
linux,code = <KEY_BACK>;
|
||||
channel = <0>;
|
||||
voltage = <600000>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_q8h>;
|
||||
vmmc-supply = <®_vcc3v0>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */
|
||||
cd-inverted;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
mmc0_cd_pin_q8h: mmc0_cd_pin@0 {
|
||||
allwinner,pins = "PB4";
|
||||
allwinner,function = "gpio_in";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
};
|
||||
|
||||
&r_uart {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&r_uart_pins_a>;
|
||||
status = "okay";
|
||||
};
|
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "sun8i-a23.dtsi"
|
||||
#include "sun8i-a33.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Ippo Q8H V1.2 (A33, 1024x600)";
|
||||
|
|
89
arch/arm/dts/sun8i-a33.dtsi
Normal file
89
arch/arm/dts/sun8i-a33.dtsi
Normal file
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* Copyright 2014 Chen-Yu Tsai
|
||||
*
|
||||
* Chen-Yu Tsai <wens@csie.org>
|
||||
*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "sun8i-a23-a33.dtsi"
|
||||
|
||||
/ {
|
||||
cpus {
|
||||
cpu@2 {
|
||||
compatible = "arm,cortex-a7";
|
||||
device_type = "cpu";
|
||||
reg = <2>;
|
||||
};
|
||||
|
||||
cpu@3 {
|
||||
compatible = "arm,cortex-a7";
|
||||
device_type = "cpu";
|
||||
reg = <3>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x40000000 0x80000000>;
|
||||
};
|
||||
|
||||
clocks {
|
||||
/* Dummy clock for pll11 (DDR1) until actually implemented */
|
||||
pll11: pll11_clk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <0>;
|
||||
clock-output-names = "pll11";
|
||||
};
|
||||
|
||||
mbus_clk: clk@01c2015c {
|
||||
#clock-cells = <0>;
|
||||
compatible = "allwinner,sun8i-a23-mbus-clk";
|
||||
reg = <0x01c2015c 0x4>;
|
||||
clocks = <&osc24M>, <&pll6 1>, <&pll5>, <&pll11>;
|
||||
clock-output-names = "mbus";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pio {
|
||||
compatible = "allwinner,sun8i-a33-pinctrl";
|
||||
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
@ -289,7 +284,7 @@
|
|||
"ahb0_ss", "ahb0_sd", "ahb0_nand1",
|
||||
"ahb0_nand0", "ahb0_sdram",
|
||||
"ahb0_mipi_hsi", "ahb0_sata", "ahb0_ts",
|
||||
"ahb0_spi0","ahb0_spi1", "ahb0_spi2",
|
||||
"ahb0_spi0", "ahb0_spi1", "ahb0_spi2",
|
||||
"ahb0_spi3";
|
||||
};
|
||||
|
||||
|
@ -570,6 +565,12 @@
|
|||
clocks = <&osc24M>;
|
||||
};
|
||||
|
||||
wdt: watchdog@06000ca0 {
|
||||
compatible = "allwinner,sun6i-a31-wdt";
|
||||
reg = <0x06000ca0 0x20>;
|
||||
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
pio: pinctrl@06000800 {
|
||||
compatible = "allwinner,sun9i-a80-pinctrl";
|
||||
reg = <0x06000800 0x400>;
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this file; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
|
|
|
@ -163,12 +163,15 @@
|
|||
|
||||
spi@7000d400 {
|
||||
status = "okay";
|
||||
spi-deactivate-delay = <200>;
|
||||
spi-max-frequency = <3000000>;
|
||||
|
||||
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>;
|
||||
ec-interrupt = <&gpio TEGRA_GPIO(C, 7) GPIO_ACTIVE_LOW>;
|
||||
reg = <0>;
|
||||
|
||||
google,cros-ec-spi-msg-delay = <2000>;
|
||||
|
|
21
arch/arm/dts/vf-colibri.dtsi
Normal file
21
arch/arm/dts/vf-colibri.dtsi
Normal file
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Copyright 2014 Toradex AG
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ or X11
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
#include "vf.dtsi"
|
||||
|
||||
&dspi1 {
|
||||
status = "okay";
|
||||
bus-num = <1>;
|
||||
|
||||
spi_cmd: sspi@0 {
|
||||
reg = <0>;
|
||||
spi-max-frequency = <50000000>;
|
||||
};
|
||||
};
|
100
arch/arm/dts/vf.dtsi
Normal file
100
arch/arm/dts/vf.dtsi
Normal file
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
* Copyright 2013 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ or X11
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
/include/ "skeleton.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
gpio0 = &gpio0;
|
||||
gpio1 = &gpio1;
|
||||
gpio2 = &gpio2;
|
||||
gpio3 = &gpio3;
|
||||
gpio4 = &gpio4;
|
||||
spi0 = &dspi0;
|
||||
spi1 = &dspi1;
|
||||
};
|
||||
|
||||
soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "simple-bus";
|
||||
ranges;
|
||||
|
||||
aips0: aips-bus@40000000 {
|
||||
compatible = "fsl,aips-bus", "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
dspi0: dspi0@4002c000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,vf610-dspi";
|
||||
reg = <0x4002c000 0x1000>;
|
||||
num-cs = <5>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
dspi1: dspi1@4002d000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,vf610-dspi";
|
||||
reg = <0x4002d000 0x1000>;
|
||||
num-cs = <5>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
qspi0: quadspi@40044000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,vf610-qspi";
|
||||
reg = <0x40044000 0x1000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio0: gpio@40049000 {
|
||||
compatible = "fsl,vf610-gpio";
|
||||
reg = <0x400ff000 0x40>;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio1: gpio@4004a000 {
|
||||
compatible = "fsl,vf610-gpio";
|
||||
reg = <0x400ff040 0x40>;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio2: gpio@4004b000 {
|
||||
compatible = "fsl,vf610-gpio";
|
||||
reg = <0x400ff080 0x40>;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio3: gpio@4004c000 {
|
||||
compatible = "fsl,vf610-gpio";
|
||||
reg = <0x400ff0c0 0x40>;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio4: gpio@4004d000 {
|
||||
compatible = "fsl,vf610-gpio";
|
||||
reg = <0x400ff100 0x40>;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
aips1: aips-bus@40080000 {
|
||||
compatible = "fsl,aips-bus", "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
};
|
||||
};
|
||||
};
|
18
arch/arm/dts/vf500-colibri.dts
Normal file
18
arch/arm/dts/vf500-colibri.dts
Normal file
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* Copyright 2014 Toradex AG
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ or X11
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "vf-colibri.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Toradex Colibri VF50";
|
||||
compatible = "toradex,vf500-colibri_vf50", "toradex,vf500-colibri_vf50", "fsl,vf500";
|
||||
};
|
18
arch/arm/dts/vf610-colibri.dts
Normal file
18
arch/arm/dts/vf610-colibri.dts
Normal file
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* Copyright 2014 Toradex AG
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ or X11
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "vf-colibri.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Toradex Colibri VF61";
|
||||
compatible = "toradex,vf610-colibri_vf61", "toradex,vf610-colibri_vf61", "fsl,vf610";
|
||||
};
|
|
@ -145,7 +145,8 @@ const char *get_imx_type(u32 imxtype)
|
|||
|
||||
int print_cpuinfo(void)
|
||||
{
|
||||
u32 cpurev, max_freq;
|
||||
u32 cpurev;
|
||||
__maybe_unused u32 max_freq;
|
||||
|
||||
#if defined(CONFIG_MX6) && defined(CONFIG_IMX6_THERMAL)
|
||||
struct udevice *thermal_dev;
|
||||
|
|
|
@ -92,3 +92,29 @@ void imx_iomux_set_gpr_register(int group, int start_bit,
|
|||
reg |= (value << start_bit);
|
||||
writel(reg, base + group * 4);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IOMUX_SHARE_CONF_REG
|
||||
void imx_iomux_gpio_set_direction(unsigned int gpio,
|
||||
unsigned int direction)
|
||||
{
|
||||
u32 reg;
|
||||
/*
|
||||
* Only on Vybrid the input/output buffer enable flags
|
||||
* are part of the shared mux/conf register.
|
||||
*/
|
||||
reg = readl(base + (gpio << 2));
|
||||
|
||||
if (direction)
|
||||
reg |= 0x2;
|
||||
else
|
||||
reg &= ~0x2;
|
||||
|
||||
writel(reg, base + (gpio << 2));
|
||||
}
|
||||
|
||||
void imx_iomux_gpio_get_function(unsigned int gpio, u32 *gpio_state)
|
||||
{
|
||||
*gpio_state = readl(base + (gpio << 2)) &
|
||||
((0X07 << PAD_MUX_MODE_SHIFT) | PAD_CTL_OBE_IBE_ENABLE);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -167,6 +167,7 @@
|
|||
#define EXYNOS5420_USB_HOST_EHCI_BASE 0x12110000
|
||||
#define EXYNOS5420_MMC_BASE 0x12200000
|
||||
#define EXYNOS5420_SROMC_BASE 0x12250000
|
||||
#define EXYNOS5420_USB3PHY_BASE 0x12500000
|
||||
#define EXYNOS5420_UART_BASE 0x12C00000
|
||||
#define EXYNOS5420_I2C_BASE 0x12C60000
|
||||
#define EXYNOS5420_I2C_8910_BASE 0x12E00000
|
||||
|
@ -187,7 +188,6 @@
|
|||
#define EXYNOS5420_FIMD_BASE DEVICE_NOT_AVAILABLE
|
||||
#define EXYNOS5420_ADC_BASE DEVICE_NOT_AVAILABLE
|
||||
#define EXYNOS5420_MODEM_BASE DEVICE_NOT_AVAILABLE
|
||||
#define EXYNOS5420_USB3PHY_BASE DEVICE_NOT_AVAILABLE
|
||||
#define EXYNOS5420_USB_HOST_XHCI_BASE DEVICE_NOT_AVAILABLE
|
||||
|
||||
|
||||
|
|
83
arch/arm/include/asm/arch-omap5/dra7xx_iodelay.h
Normal file
83
arch/arm/include/asm/arch-omap5/dra7xx_iodelay.h
Normal file
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* (C) Copyright 2015
|
||||
* Texas Instruments Incorporated
|
||||
*
|
||||
* Lokesh Vutla <lokeshvutla@ti.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef _DRA7_IODELAY_H_
|
||||
#define _DRA7_IODELAY_H_
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
|
||||
/* CONFIG_REG_0 */
|
||||
#define CFG_REG_0_OFFSET 0xC
|
||||
#define CFG_REG_ROM_READ_SHIFT 1
|
||||
#define CFG_REG_ROM_READ_MASK (1 << 1)
|
||||
#define CFG_REG_CALIB_STRT_SHIFT 0
|
||||
#define CFG_REG_CALIB_STRT_MASK (1 << 0)
|
||||
#define CFG_REG_CALIB_STRT 1
|
||||
#define CFG_REG_CALIB_END 0
|
||||
#define CFG_REG_ROM_READ_START (1 << 1)
|
||||
#define CFG_REG_ROM_READ_END (0 << 1)
|
||||
|
||||
/* CONFIG_REG_2 */
|
||||
#define CFG_REG_2_OFFSET 0x14
|
||||
#define CFG_REG_REFCLK_PERIOD_SHIFT 0
|
||||
#define CFG_REG_REFCLK_PERIOD_MASK (0xFFFF << 0)
|
||||
#define CFG_REG_REFCLK_PERIOD 0x2EF
|
||||
|
||||
/* CONFIG_REG_8 */
|
||||
#define CFG_REG_8_OFFSET 0x2C
|
||||
#define CFG_IODELAY_UNLOCK_KEY 0x0000AAAA
|
||||
#define CFG_IODELAY_LOCK_KEY 0x0000AAAB
|
||||
|
||||
/* CONFIG_REG_3/4 */
|
||||
#define CFG_REG_3_OFFSET 0x18
|
||||
#define CFG_REG_4_OFFSET 0x1C
|
||||
#define CFG_REG_DLY_CNT_SHIFT 16
|
||||
#define CFG_REG_DLY_CNT_MASK (0xFFFF << 16)
|
||||
#define CFG_REG_REF_CNT_SHIFT 0
|
||||
#define CFG_REG_REF_CNT_MASK (0xFFFF << 0)
|
||||
|
||||
/* CTRL_CORE_SMA_SW_0 */
|
||||
#define CTRL_ISOLATE_SHIFT 2
|
||||
#define CTRL_ISOLATE_MASK (1 << 2)
|
||||
#define ISOLATE_IO 1
|
||||
#define DEISOLATE_IO 0
|
||||
|
||||
/* PRM_IO_PMCTRL */
|
||||
#define PMCTRL_ISOCLK_OVERRIDE_SHIFT 0
|
||||
#define PMCTRL_ISOCLK_OVERRIDE_MASK (1 << 0)
|
||||
#define PMCTRL_ISOCLK_STATUS_SHIFT 1
|
||||
#define PMCTRL_ISOCLK_STATUS_MASK (1 << 1)
|
||||
#define PMCTRL_ISOCLK_OVERRIDE_CTRL 1
|
||||
#define PMCTRL_ISOCLK_NOT_OVERRIDE_CTRL 0
|
||||
|
||||
#define ERR_CALIBRATE_IODELAY 0x1
|
||||
#define ERR_DEISOLATE_IO 0x2
|
||||
#define ERR_ISOLATE_IO 0x4
|
||||
#define ERR_UPDATE_DELAY 0x8
|
||||
#define ERR_CPDE 0x3
|
||||
#define ERR_FPDE 0x5
|
||||
|
||||
/* CFG_XXX */
|
||||
#define CFG_X_SIGNATURE_SHIFT 12
|
||||
#define CFG_X_SIGNATURE_MASK (0x3F << 12)
|
||||
#define CFG_X_LOCK_SHIFT 10
|
||||
#define CFG_X_LOCK_MASK (0x1 << 10)
|
||||
#define CFG_X_COARSE_DLY_SHIFT 5
|
||||
#define CFG_X_COARSE_DLY_MASK (0x1F << 5)
|
||||
#define CFG_X_FINE_DLY_SHIFT 0
|
||||
#define CFG_X_FINE_DLY_MASK (0x1F << 0)
|
||||
#define CFG_X_SIGNATURE 0x29
|
||||
#define CFG_X_LOCK 1
|
||||
|
||||
void __recalibrate_iodelay(struct pad_conf_entry const *pad, int npads,
|
||||
struct iodelay_cfg_entry const *iodelay,
|
||||
int niodelays);
|
||||
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue