Merge git://git.denx.de/u-boot-rockchip
This includes support for rk3188 from Heiko Stübner and and rk3328 from Kever Yang. Also included is SPL support for rk3399 and a fix for rk3288 to get it booting again (spl_early_init()).
This commit is contained in:
22
arch/arm/include/asm/arch-rockchip/bootrom.h
Normal file
22
arch/arm/include/asm/arch-rockchip/bootrom.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* (C) Copyright 2017 Heiko Stuebner <heiko@sntech.de>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0
|
||||
*/
|
||||
|
||||
#ifndef _ASM_ARCH_BOOTROM_H
|
||||
#define _ASM_ARCH_BOOTROM_H
|
||||
|
||||
/*
|
||||
* Saved Stack pointer address.
|
||||
* Access might be needed in some special cases.
|
||||
*/
|
||||
extern u32 SAVE_SP_ADDR;
|
||||
|
||||
/*
|
||||
* Hand control back to the bootrom to load another
|
||||
* boot stage.
|
||||
*/
|
||||
extern void back_to_bootrom(void);
|
||||
|
||||
#endif
|
||||
@@ -17,6 +17,8 @@ enum {
|
||||
ROCKCHIP_SYSCON_SGRF,
|
||||
ROCKCHIP_SYSCON_PMU,
|
||||
ROCKCHIP_SYSCON_PMUGRF,
|
||||
ROCKCHIP_SYSCON_PMUSGRF,
|
||||
ROCKCHIP_SYSCON_CIC,
|
||||
};
|
||||
|
||||
/* Standard Rockchip clock numbers */
|
||||
@@ -63,6 +65,13 @@ static inline u32 clk_get_divisor(ulong input_rate, uint output_rate)
|
||||
*/
|
||||
void *rockchip_get_cru(void);
|
||||
|
||||
/**
|
||||
* rockchip_get_pmucru() - get a pointer to the clock/reset unit registers
|
||||
*
|
||||
* @return pointer to registers, or -ve error on error
|
||||
*/
|
||||
void *rockchip_get_pmucru(void);
|
||||
|
||||
struct rk3288_cru;
|
||||
struct rk3288_grf;
|
||||
|
||||
|
||||
191
arch/arm/include/asm/arch-rockchip/cru_rk3188.h
Normal file
191
arch/arm/include/asm/arch-rockchip/cru_rk3188.h
Normal file
@@ -0,0 +1,191 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Heiko Stuebner <heiko@sntech.de>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
#ifndef _ASM_ARCH_CRU_RK3188_H
|
||||
#define _ASM_ARCH_CRU_RK3188_H
|
||||
|
||||
#define OSC_HZ (24 * 1000 * 1000)
|
||||
|
||||
#define APLL_HZ (1608 * 1000000)
|
||||
#define GPLL_HZ (594 * 1000000)
|
||||
#define CPLL_HZ (384 * 1000000)
|
||||
|
||||
/* The SRAM is clocked off aclk_cpu, so we want to max it out for boot speed */
|
||||
#define CPU_ACLK_HZ 297000000
|
||||
#define CPU_HCLK_HZ 148500000
|
||||
#define CPU_PCLK_HZ 74250000
|
||||
#define CPU_H2P_HZ 74250000
|
||||
|
||||
#define PERI_ACLK_HZ 148500000
|
||||
#define PERI_HCLK_HZ 148500000
|
||||
#define PERI_PCLK_HZ 74250000
|
||||
|
||||
/* Private data for the clock driver - used by rockchip_get_cru() */
|
||||
struct rk3188_clk_priv {
|
||||
struct rk3188_grf *grf;
|
||||
struct rk3188_cru *cru;
|
||||
ulong rate;
|
||||
bool has_bwadj;
|
||||
};
|
||||
|
||||
struct rk3188_cru {
|
||||
struct rk3188_pll {
|
||||
u32 con0;
|
||||
u32 con1;
|
||||
u32 con2;
|
||||
u32 con3;
|
||||
} pll[4];
|
||||
u32 cru_mode_con;
|
||||
u32 cru_clksel_con[35];
|
||||
u32 cru_clkgate_con[10];
|
||||
u32 reserved1[2];
|
||||
u32 cru_glb_srst_fst_value;
|
||||
u32 cru_glb_srst_snd_value;
|
||||
u32 reserved2[2];
|
||||
u32 cru_softrst_con[9];
|
||||
u32 cru_misc_con;
|
||||
u32 reserved3[2];
|
||||
u32 cru_glb_cnt_th;
|
||||
};
|
||||
check_member(rk3188_cru, cru_glb_cnt_th, 0x0140);
|
||||
|
||||
/* CRU_CLKSEL0_CON */
|
||||
enum {
|
||||
/* a9_core_div: core = core_src / (a9_core_div + 1) */
|
||||
A9_CORE_DIV_SHIFT = 9,
|
||||
A9_CORE_DIV_MASK = 0x1f,
|
||||
CORE_PLL_SHIFT = 8,
|
||||
CORE_PLL_MASK = 1,
|
||||
CORE_PLL_SELECT_APLL = 0,
|
||||
CORE_PLL_SELECT_GPLL,
|
||||
|
||||
/* core peri div: core:core_peri = 2:1, 4:1, 8:1 or 16:1 */
|
||||
CORE_PERI_DIV_SHIFT = 6,
|
||||
CORE_PERI_DIV_MASK = 3,
|
||||
|
||||
/* aclk_cpu pll selection */
|
||||
CPU_ACLK_PLL_SHIFT = 5,
|
||||
CPU_ACLK_PLL_MASK = 1,
|
||||
CPU_ACLK_PLL_SELECT_APLL = 0,
|
||||
CPU_ACLK_PLL_SELECT_GPLL,
|
||||
|
||||
/* a9_cpu_div: aclk_cpu = cpu_src / (a9_cpu_div + 1) */
|
||||
A9_CPU_DIV_SHIFT = 0,
|
||||
A9_CPU_DIV_MASK = 0x1f,
|
||||
};
|
||||
|
||||
/* CRU_CLKSEL1_CON */
|
||||
enum {
|
||||
/* ahb2apb_pclk_div: hclk_cpu:pclk_cpu = 1:1, 2:1 or 4:1 */
|
||||
AHB2APB_DIV_SHIFT = 14,
|
||||
AHB2APB_DIV_MASK = 3,
|
||||
|
||||
/* cpu_pclk_div: aclk_cpu:pclk_cpu = 1:1, 2:1, 4:1 or 8:1 */
|
||||
CPU_PCLK_DIV_SHIFT = 12,
|
||||
CPU_PCLK_DIV_MASK = 3,
|
||||
|
||||
/* cpu_hclk_div: aclk_cpu:hclk_cpu = 1:1, 2:1 or 4:1 */
|
||||
CPU_HCLK_DIV_SHIFT = 8,
|
||||
CPU_HCLK_DIV_MASK = 3,
|
||||
|
||||
/* core_aclk_div: cire:aclk_core = 1:1, 2:1, 3:1, 4:1 or 8:1 */
|
||||
CORE_ACLK_DIV_SHIFT = 3,
|
||||
CORE_ACLK_DIV_MASK = 7,
|
||||
};
|
||||
|
||||
/* CRU_CLKSEL10_CON */
|
||||
enum {
|
||||
PERI_SEL_PLL_MASK = 1,
|
||||
PERI_SEL_PLL_SHIFT = 15,
|
||||
PERI_SEL_CPLL = 0,
|
||||
PERI_SEL_GPLL,
|
||||
|
||||
/* peri pclk div: aclk_bus:pclk_bus = 1:1, 2:1, 4:1 or 8:1 */
|
||||
PERI_PCLK_DIV_SHIFT = 12,
|
||||
PERI_PCLK_DIV_MASK = 3,
|
||||
|
||||
/* peripheral bus hclk div:aclk_bus: hclk_bus = 1:1, 2:1 or 4:1 */
|
||||
PERI_HCLK_DIV_SHIFT = 8,
|
||||
PERI_HCLK_DIV_MASK = 3,
|
||||
|
||||
/* peri aclk div: aclk_peri = periph_src / (peri_aclk_div + 1) */
|
||||
PERI_ACLK_DIV_SHIFT = 0,
|
||||
PERI_ACLK_DIV_MASK = 0x1f,
|
||||
};
|
||||
/* CRU_CLKSEL11_CON */
|
||||
enum {
|
||||
HSICPHY_DIV_SHIFT = 8,
|
||||
HSICPHY_DIV_MASK = 0x3f,
|
||||
|
||||
MMC0_DIV_SHIFT = 0,
|
||||
MMC0_DIV_MASK = 0x3f,
|
||||
};
|
||||
|
||||
/* CRU_CLKSEL12_CON */
|
||||
enum {
|
||||
UART_PLL_SHIFT = 15,
|
||||
UART_PLL_MASK = 1,
|
||||
UART_PLL_SELECT_GENERAL = 0,
|
||||
UART_PLL_SELECT_CODEC,
|
||||
|
||||
EMMC_DIV_SHIFT = 8,
|
||||
EMMC_DIV_MASK = 0x3f,
|
||||
|
||||
SDIO_DIV_SHIFT = 0,
|
||||
SDIO_DIV_MASK = 0x3f,
|
||||
};
|
||||
|
||||
/* CRU_CLKSEL25_CON */
|
||||
enum {
|
||||
SPI1_DIV_SHIFT = 8,
|
||||
SPI1_DIV_MASK = 0x7f,
|
||||
|
||||
SPI0_DIV_SHIFT = 0,
|
||||
SPI0_DIV_MASK = 0x7f,
|
||||
};
|
||||
|
||||
/* CRU_MODE_CON */
|
||||
enum {
|
||||
GPLL_MODE_SHIFT = 12,
|
||||
GPLL_MODE_MASK = 3,
|
||||
GPLL_MODE_SLOW = 0,
|
||||
GPLL_MODE_NORMAL,
|
||||
GPLL_MODE_DEEP,
|
||||
|
||||
CPLL_MODE_SHIFT = 8,
|
||||
CPLL_MODE_MASK = 3,
|
||||
CPLL_MODE_SLOW = 0,
|
||||
CPLL_MODE_NORMAL,
|
||||
CPLL_MODE_DEEP,
|
||||
|
||||
DPLL_MODE_SHIFT = 4,
|
||||
DPLL_MODE_MASK = 3,
|
||||
DPLL_MODE_SLOW = 0,
|
||||
DPLL_MODE_NORMAL,
|
||||
DPLL_MODE_DEEP,
|
||||
|
||||
APLL_MODE_SHIFT = 0,
|
||||
APLL_MODE_MASK = 3,
|
||||
APLL_MODE_SLOW = 0,
|
||||
APLL_MODE_NORMAL,
|
||||
APLL_MODE_DEEP,
|
||||
};
|
||||
|
||||
/* CRU_APLL_CON0 */
|
||||
enum {
|
||||
CLKR_SHIFT = 8,
|
||||
CLKR_MASK = 0x3f,
|
||||
|
||||
CLKOD_SHIFT = 0,
|
||||
CLKOD_MASK = 0x3f,
|
||||
};
|
||||
|
||||
/* CRU_APLL_CON1 */
|
||||
enum {
|
||||
CLKF_SHIFT = 0,
|
||||
CLKF_MASK = 0x1fff,
|
||||
};
|
||||
|
||||
#endif
|
||||
70
arch/arm/include/asm/arch-rockchip/cru_rk3328.h
Normal file
70
arch/arm/include/asm/arch-rockchip/cru_rk3328.h
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_CRU_RK3328_H_
|
||||
#define __ASM_ARCH_CRU_RK3328_H_
|
||||
|
||||
#include <common.h>
|
||||
|
||||
struct rk3328_clk_priv {
|
||||
struct rk3328_cru *cru;
|
||||
ulong rate;
|
||||
};
|
||||
|
||||
struct rk3328_cru {
|
||||
u32 apll_con[5];
|
||||
u32 reserved1[3];
|
||||
u32 dpll_con[5];
|
||||
u32 reserved2[3];
|
||||
u32 cpll_con[5];
|
||||
u32 reserved3[3];
|
||||
u32 gpll_con[5];
|
||||
u32 reserved4[3];
|
||||
u32 mode_con;
|
||||
u32 misc;
|
||||
u32 reserved5[2];
|
||||
u32 glb_cnt_th;
|
||||
u32 glb_rst_st;
|
||||
u32 glb_srst_snd_value;
|
||||
u32 glb_srst_fst_value;
|
||||
u32 npll_con[5];
|
||||
u32 reserved6[(0x100 - 0xb4) / 4];
|
||||
u32 clksel_con[53];
|
||||
u32 reserved7[(0x200 - 0x1d4) / 4];
|
||||
u32 clkgate_con[29];
|
||||
u32 reserved8[3];
|
||||
u32 ssgtbl[32];
|
||||
u32 softrst_con[12];
|
||||
u32 reserved9[(0x380 - 0x330) / 4];
|
||||
u32 sdmmc_con[2];
|
||||
u32 sdio_con[2];
|
||||
u32 emmc_con[2];
|
||||
u32 sdmmc_ext_con[2];
|
||||
};
|
||||
check_member(rk3328_cru, sdmmc_ext_con[1], 0x39c);
|
||||
#define MHz 1000000
|
||||
#define KHz 1000
|
||||
#define OSC_HZ (24 * MHz)
|
||||
#define APLL_HZ (600 * MHz)
|
||||
#define GPLL_HZ (576 * MHz)
|
||||
#define CPLL_HZ (594 * MHz)
|
||||
|
||||
#define CLK_CORE_HZ (600 * MHz)
|
||||
#define ACLKM_CORE_HZ (300 * MHz)
|
||||
#define PCLK_DBG_HZ (300 * MHz)
|
||||
|
||||
#define PERIHP_ACLK_HZ (144000 * KHz)
|
||||
#define PERIHP_HCLK_HZ (72000 * KHz)
|
||||
#define PERIHP_PCLK_HZ (72000 * KHz)
|
||||
|
||||
#define PWM_CLOCK_HZ (74 * MHz)
|
||||
|
||||
enum apll_frequencies {
|
||||
APLL_816_MHZ,
|
||||
APLL_600_MHZ,
|
||||
};
|
||||
|
||||
#endif /* __ASM_ARCH_CRU_RK3328_H_ */
|
||||
@@ -15,6 +15,11 @@ struct rk3399_clk_priv {
|
||||
ulong rate;
|
||||
};
|
||||
|
||||
struct rk3399_pmuclk_priv {
|
||||
struct rk3399_pmucru *pmucru;
|
||||
ulong rate;
|
||||
};
|
||||
|
||||
struct rk3399_pmucru {
|
||||
u32 ppll_con[6];
|
||||
u32 reserved[0x1a];
|
||||
|
||||
25
arch/arm/include/asm/arch-rockchip/ddr_rk3188.h
Normal file
25
arch/arm/include/asm/arch-rockchip/ddr_rk3188.h
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* (C) Copyright 2015 Google, Inc
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0
|
||||
*/
|
||||
|
||||
#ifndef _ASM_ARCH_DDR_RK3188_H
|
||||
#define _ASM_ARCH_DDR_RK3188_H
|
||||
|
||||
#include <asm/arch/ddr_rk3288.h>
|
||||
|
||||
/*
|
||||
* RK3188 Memory scheduler register map.
|
||||
*/
|
||||
struct rk3188_msch {
|
||||
u32 coreid;
|
||||
u32 revisionid;
|
||||
u32 ddrconf;
|
||||
u32 ddrtiming;
|
||||
u32 ddrmode;
|
||||
u32 readlatency;
|
||||
};
|
||||
check_member(rk3188_msch, readlatency, 0x0014);
|
||||
|
||||
#endif
|
||||
@@ -425,6 +425,14 @@ enum {
|
||||
|
||||
#define START_CMD (1u << 31)
|
||||
|
||||
/*
|
||||
* DDRCONF
|
||||
* [5:4] row(13+n)
|
||||
* [1:0] col(9+n), assume bw=2
|
||||
*/
|
||||
#define DDRCONF_ROW_SHIFT 4
|
||||
#define DDRCONF_COL_SHIFT 0
|
||||
|
||||
/* DEVTODEV */
|
||||
#define BUSWRTORD_SHIFT 4
|
||||
#define BUSRDTOWR_SHIFT 2
|
||||
|
||||
589
arch/arm/include/asm/arch-rockchip/grf_rk3188.h
Normal file
589
arch/arm/include/asm/arch-rockchip/grf_rk3188.h
Normal file
@@ -0,0 +1,589 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Heiko Stuebner <heiko@sntech.de>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0
|
||||
*/
|
||||
|
||||
#ifndef _ASM_ARCH_GRF_RK3188_H
|
||||
#define _ASM_ARCH_GRF_RK3188_H
|
||||
|
||||
struct rk3188_grf_gpio_lh {
|
||||
u32 l;
|
||||
u32 h;
|
||||
};
|
||||
|
||||
struct rk3188_grf {
|
||||
struct rk3188_grf_gpio_lh gpio_dir[4];
|
||||
struct rk3188_grf_gpio_lh gpio_do[4];
|
||||
struct rk3188_grf_gpio_lh gpio_en[4];
|
||||
|
||||
u32 reserved[2];
|
||||
u32 gpio0c_iomux;
|
||||
u32 gpio0d_iomux;
|
||||
|
||||
u32 gpio1a_iomux;
|
||||
u32 gpio1b_iomux;
|
||||
u32 gpio1c_iomux;
|
||||
u32 gpio1d_iomux;
|
||||
|
||||
u32 gpio2a_iomux;
|
||||
u32 gpio2b_iomux;
|
||||
u32 gpio2c_iomux;
|
||||
u32 gpio2d_iomux;
|
||||
|
||||
u32 gpio3a_iomux;
|
||||
u32 gpio3b_iomux;
|
||||
u32 gpio3c_iomux;
|
||||
u32 gpio3d_iomux;
|
||||
|
||||
u32 soc_con0;
|
||||
u32 soc_con1;
|
||||
u32 soc_con2;
|
||||
u32 soc_status0;
|
||||
|
||||
u32 busdmac_con[3];
|
||||
u32 peridmac_con[4];
|
||||
|
||||
u32 cpu_con[6];
|
||||
u32 reserved0[2];
|
||||
|
||||
u32 ddrc_con0;
|
||||
u32 ddrc_stat;
|
||||
|
||||
u32 io_con[5];
|
||||
u32 soc_status1;
|
||||
|
||||
u32 uoc0_con[4];
|
||||
u32 uoc1_con[4];
|
||||
u32 uoc2_con[2];
|
||||
u32 reserved1;
|
||||
u32 uoc3_con[2];
|
||||
u32 hsic_stat;
|
||||
u32 os_reg[8];
|
||||
|
||||
u32 gpio0_p[3];
|
||||
u32 gpio1_p[3][4];
|
||||
|
||||
u32 flash_data_p;
|
||||
u32 flash_cmd_p;
|
||||
};
|
||||
check_member(rk3188_grf, flash_cmd_p, 0x01a4);
|
||||
|
||||
/* GRF_GPIO0D_IOMUX */
|
||||
enum {
|
||||
GPIO0D7_SHIFT = 14,
|
||||
GPIO0D7_MASK = 1,
|
||||
GPIO0D7_GPIO = 0,
|
||||
GPIO0D7_SPI1_CSN0,
|
||||
|
||||
GPIO0D6_SHIFT = 12,
|
||||
GPIO0D6_MASK = 1,
|
||||
GPIO0D6_GPIO = 0,
|
||||
GPIO0D6_SPI1_CLK,
|
||||
|
||||
GPIO0D5_SHIFT = 10,
|
||||
GPIO0D5_MASK = 1,
|
||||
GPIO0D5_GPIO = 0,
|
||||
GPIO0D5_SPI1_TXD,
|
||||
|
||||
GPIO0D4_SHIFT = 8,
|
||||
GPIO0D4_MASK = 1,
|
||||
GPIO0D4_GPIO = 0,
|
||||
GPIO0D4_SPI0_RXD,
|
||||
|
||||
GPIO0D3_SHIFT = 6,
|
||||
GPIO0D3_MASK = 3,
|
||||
GPIO0D3_GPIO = 0,
|
||||
GPIO0D3_FLASH_CSN3,
|
||||
GPIO0D3_EMMC_RSTN_OUT,
|
||||
|
||||
GPIO0D2_SHIFT = 4,
|
||||
GPIO0D2_MASK = 3,
|
||||
GPIO0D2_GPIO = 0,
|
||||
GPIO0D2_FLASH_CSN2,
|
||||
GPIO0D2_EMMC_CMD,
|
||||
|
||||
GPIO0D1_SHIFT = 2,
|
||||
GPIO0D1_MASK = 1,
|
||||
GPIO0D1_GPIO = 0,
|
||||
GPIO0D1_FLASH_CSN1,
|
||||
|
||||
GPIO0D0_SHIFT = 0,
|
||||
GPIO0D0_MASK = 3,
|
||||
GPIO0D0_GPIO = 0,
|
||||
GPIO0D0_FLASH_DQS,
|
||||
GPIO0D0_EMMC_CLKOUT
|
||||
};
|
||||
|
||||
/* GRF_GPIO1A_IOMUX */
|
||||
enum {
|
||||
GPIO1A7_SHIFT = 14,
|
||||
GPIO1A7_MASK = 3,
|
||||
GPIO1A7_GPIO = 0,
|
||||
GPIO1A7_UART1_RTS_N,
|
||||
GPIO1A7_SPI0_CSN0,
|
||||
|
||||
GPIO1A6_SHIFT = 12,
|
||||
GPIO1A6_MASK = 3,
|
||||
GPIO1A6_GPIO = 0,
|
||||
GPIO1A6_UART1_CTS_N,
|
||||
GPIO1A6_SPI0_CLK,
|
||||
|
||||
GPIO1A5_SHIFT = 10,
|
||||
GPIO1A5_MASK = 3,
|
||||
GPIO1A5_GPIO = 0,
|
||||
GPIO1A5_UART1_SOUT,
|
||||
GPIO1A5_SPI0_TXD,
|
||||
|
||||
GPIO1A4_SHIFT = 8,
|
||||
GPIO1A4_MASK = 3,
|
||||
GPIO1A4_GPIO = 0,
|
||||
GPIO1A4_UART1_SIN,
|
||||
GPIO1A4_SPI0_RXD,
|
||||
|
||||
GPIO1A3_SHIFT = 6,
|
||||
GPIO1A3_MASK = 1,
|
||||
GPIO1A3_GPIO = 0,
|
||||
GPIO1A3_UART0_RTS_N,
|
||||
|
||||
GPIO1A2_SHIFT = 4,
|
||||
GPIO1A2_MASK = 1,
|
||||
GPIO1A2_GPIO = 0,
|
||||
GPIO1A2_UART0_CTS_N,
|
||||
|
||||
GPIO1A1_SHIFT = 2,
|
||||
GPIO1A1_MASK = 1,
|
||||
GPIO1A1_GPIO = 0,
|
||||
GPIO1A1_UART0_SOUT,
|
||||
|
||||
GPIO1A0_SHIFT = 0,
|
||||
GPIO1A0_MASK = 1,
|
||||
GPIO1A0_GPIO = 0,
|
||||
GPIO1A0_UART0_SIN,
|
||||
};
|
||||
|
||||
/* GRF_GPIO1B_IOMUX */
|
||||
enum {
|
||||
GPIO1B7_SHIFT = 14,
|
||||
GPIO1B7_MASK = 1,
|
||||
GPIO1B7_GPIO = 0,
|
||||
GPIO1B7_SPI0_CSN1,
|
||||
|
||||
GPIO1B6_SHIFT = 12,
|
||||
GPIO1B6_MASK = 3,
|
||||
GPIO1B6_GPIO = 0,
|
||||
GPIO1B6_SPDIF_TX,
|
||||
GPIO1B6_SPI1_CSN1,
|
||||
|
||||
GPIO1B5_SHIFT = 10,
|
||||
GPIO1B5_MASK = 3,
|
||||
GPIO1B5_GPIO = 0,
|
||||
GPIO1B5_UART3_RTS_N,
|
||||
GPIO1B5_RESERVED,
|
||||
|
||||
GPIO1B4_SHIFT = 8,
|
||||
GPIO1B4_MASK = 3,
|
||||
GPIO1B4_GPIO = 0,
|
||||
GPIO1B4_UART3_CTS_N,
|
||||
GPIO1B4_GPS_RFCLK,
|
||||
|
||||
GPIO1B3_SHIFT = 6,
|
||||
GPIO1B3_MASK = 3,
|
||||
GPIO1B3_GPIO = 0,
|
||||
GPIO1B3_UART3_SOUT,
|
||||
GPIO1B3_GPS_SIG,
|
||||
|
||||
GPIO1B2_SHIFT = 4,
|
||||
GPIO1B2_MASK = 3,
|
||||
GPIO1B2_GPIO = 0,
|
||||
GPIO1B2_UART3_SIN,
|
||||
GPIO1B2_GPS_MAG,
|
||||
|
||||
GPIO1B1_SHIFT = 2,
|
||||
GPIO1B1_MASK = 3,
|
||||
GPIO1B1_GPIO = 0,
|
||||
GPIO1B1_UART2_SOUT,
|
||||
GPIO1B1_JTAG_TDO,
|
||||
|
||||
GPIO1B0_SHIFT = 0,
|
||||
GPIO1B0_MASK = 3,
|
||||
GPIO1B0_GPIO = 0,
|
||||
GPIO1B0_UART2_SIN,
|
||||
GPIO1B0_JTAG_TDI,
|
||||
};
|
||||
|
||||
/* GRF_GPIO1D_IOMUX */
|
||||
enum {
|
||||
GPIO1D7_SHIFT = 14,
|
||||
GPIO1D7_MASK = 1,
|
||||
GPIO1D7_GPIO = 0,
|
||||
GPIO1D7_I2C4_SCL,
|
||||
|
||||
GPIO1D6_SHIFT = 12,
|
||||
GPIO1D6_MASK = 1,
|
||||
GPIO1D6_GPIO = 0,
|
||||
GPIO1D6_I2C4_SDA,
|
||||
|
||||
GPIO1D5_SHIFT = 10,
|
||||
GPIO1D5_MASK = 1,
|
||||
GPIO1D5_GPIO = 0,
|
||||
GPIO1D5_I2C2_SCL,
|
||||
|
||||
GPIO1D4_SHIFT = 8,
|
||||
GPIO1D4_MASK = 1,
|
||||
GPIO1D4_GPIO = 0,
|
||||
GPIO1D4_I2C2_SDA,
|
||||
|
||||
GPIO1D3_SHIFT = 6,
|
||||
GPIO1D3_MASK = 1,
|
||||
GPIO1D3_GPIO = 0,
|
||||
GPIO1D3_I2C1_SCL,
|
||||
|
||||
GPIO1D2_SHIFT = 4,
|
||||
GPIO1D2_MASK = 1,
|
||||
GPIO1D2_GPIO = 0,
|
||||
GPIO1D2_I2C1_SDA,
|
||||
|
||||
GPIO1D1_SHIFT = 2,
|
||||
GPIO1D1_MASK = 1,
|
||||
GPIO1D1_GPIO = 0,
|
||||
GPIO1D1_I2C0_SCL,
|
||||
|
||||
GPIO1D0_SHIFT = 0,
|
||||
GPIO1D0_MASK = 1,
|
||||
GPIO1D0_GPIO = 0,
|
||||
GPIO1D0_I2C0_SDA,
|
||||
};
|
||||
|
||||
/* GRF_GPIO3A_IOMUX */
|
||||
enum {
|
||||
GPIO3A7_SHIFT = 14,
|
||||
GPIO3A7_MASK = 1,
|
||||
GPIO3A7_GPIO = 0,
|
||||
GPIO3A7_SDMMC0_DATA3,
|
||||
|
||||
GPIO3A6_SHIFT = 12,
|
||||
GPIO3A6_MASK = 1,
|
||||
GPIO3A6_GPIO = 0,
|
||||
GPIO3A6_SDMMC0_DATA2,
|
||||
|
||||
GPIO3A5_SHIFT = 10,
|
||||
GPIO3A5_MASK = 1,
|
||||
GPIO3A5_GPIO = 0,
|
||||
GPIO3A5_SDMMC0_DATA1,
|
||||
|
||||
GPIO3A4_SHIFT = 8,
|
||||
GPIO3A4_MASK = 1,
|
||||
GPIO3A4_GPIO = 0,
|
||||
GPIO3A4_SDMMC0_DATA0,
|
||||
|
||||
GPIO3A3_SHIFT = 6,
|
||||
GPIO3A3_MASK = 1,
|
||||
GPIO3A3_GPIO = 0,
|
||||
GPIO3A3_SDMMC0_CMD,
|
||||
|
||||
GPIO3A2_SHIFT = 4,
|
||||
GPIO3A2_MASK = 1,
|
||||
GPIO3A2_GPIO = 0,
|
||||
GPIO3A2_SDMMC0_CLKOUT,
|
||||
|
||||
GPIO3A1_SHIFT = 2,
|
||||
GPIO3A1_MASK = 1,
|
||||
GPIO3A1_GPIO = 0,
|
||||
GPIO3A1_SDMMC0_PWREN,
|
||||
|
||||
GPIO3A0_SHIFT = 0,
|
||||
GPIO3A0_MASK = 1,
|
||||
GPIO3A0_GPIO = 0,
|
||||
GPIO3A0_SDMMC0_RSTN,
|
||||
};
|
||||
|
||||
/* GRF_GPIO3B_IOMUX */
|
||||
enum {
|
||||
GPIO3B7_SHIFT = 14,
|
||||
GPIO3B7_MASK = 3,
|
||||
GPIO3B7_GPIO = 0,
|
||||
GPIO3B7_CIF_DATA11,
|
||||
GPIO3B7_I2C3_SCL,
|
||||
|
||||
GPIO3B6_SHIFT = 12,
|
||||
GPIO3B6_MASK = 3,
|
||||
GPIO3B6_GPIO = 0,
|
||||
GPIO3B6_CIF_DATA10,
|
||||
GPIO3B6_I2C3_SDA,
|
||||
|
||||
GPIO3B5_SHIFT = 10,
|
||||
GPIO3B5_MASK = 3,
|
||||
GPIO3B5_GPIO = 0,
|
||||
GPIO3B5_CIF_DATA1,
|
||||
GPIO3B5_HSADC_DATA9,
|
||||
|
||||
GPIO3B4_SHIFT = 8,
|
||||
GPIO3B4_MASK = 3,
|
||||
GPIO3B4_GPIO = 0,
|
||||
GPIO3B4_CIF_DATA0,
|
||||
GPIO3B4_HSADC_DATA8,
|
||||
|
||||
GPIO3B3_SHIFT = 6,
|
||||
GPIO3B3_MASK = 1,
|
||||
GPIO3B3_GPIO = 0,
|
||||
GPIO3B3_CIF_CLKOUT,
|
||||
|
||||
GPIO3B2_SHIFT = 4,
|
||||
GPIO3B2_MASK = 1,
|
||||
GPIO3B2_GPIO = 0,
|
||||
/* no muxes */
|
||||
|
||||
GPIO3B1_SHIFT = 2,
|
||||
GPIO3B1_MASK = 1,
|
||||
GPIO3B1_GPIO = 0,
|
||||
GPIO3B1_SDMMC0_WRITE_PRT,
|
||||
|
||||
GPIO3B0_SHIFT = 0,
|
||||
GPIO3B0_MASK = 1,
|
||||
GPIO3B0_GPIO = 0,
|
||||
GPIO3B0_SDMMC_DETECT_N,
|
||||
};
|
||||
|
||||
/* GRF_GPIO3C_IOMUX */
|
||||
enum {
|
||||
GPIO3C7_SHIFT = 14,
|
||||
GPIO3C7_MASK = 3,
|
||||
GPIO3C7_GPIO = 0,
|
||||
GPIO3C7_SDMMC1_WRITE_PRT,
|
||||
GPIO3C7_RMII_CRS_DVALID,
|
||||
GPIO3C7_RESERVED,
|
||||
|
||||
GPIO3C6_SHIFT = 12,
|
||||
GPIO3C6_MASK = 3,
|
||||
GPIO3C6_GPIO = 0,
|
||||
GPIO3C6_SDMMC1_DECTN,
|
||||
GPIO3C6_RMII_RX_ERR,
|
||||
GPIO3C6_RESERVED,
|
||||
|
||||
GPIO3C5_SHIFT = 10,
|
||||
GPIO3C5_MASK = 3,
|
||||
GPIO3C5_GPIO = 0,
|
||||
GPIO3C5_SDMMC1_CLKOUT,
|
||||
GPIO3C5_RMII_CLKOUT,
|
||||
GPIO3C5_RMII_CLKIN,
|
||||
|
||||
GPIO3C4_SHIFT = 8,
|
||||
GPIO3C4_MASK = 3,
|
||||
GPIO3C4_GPIO = 0,
|
||||
GPIO3C4_SDMMC1_DATA3,
|
||||
GPIO3C4_RMII_RXD1,
|
||||
GPIO3C4_RESERVED,
|
||||
|
||||
GPIO3C3_SHIFT = 6,
|
||||
GPIO3C3_MASK = 3,
|
||||
GPIO3C3_GPIO = 0,
|
||||
GPIO3C3_SDMMC1_DATA2,
|
||||
GPIO3C3_RMII_RXD0,
|
||||
GPIO3C3_RESERVED,
|
||||
|
||||
GPIO3C2_SHIFT = 4,
|
||||
GPIO3C2_MASK = 3,
|
||||
GPIO3C2_GPIO = 0,
|
||||
GPIO3C2_SDMMC1_DATA1,
|
||||
GPIO3C2_RMII_TXD0,
|
||||
GPIO3C2_RESERVED,
|
||||
|
||||
GPIO3C1_SHIFT = 2,
|
||||
GPIO3C1_MASK = 3,
|
||||
GPIO3C1_GPIO = 0,
|
||||
GPIO3C1_SDMMC1_DATA0,
|
||||
GPIO3C1_RMII_TXD1,
|
||||
GPIO3C1_RESERVED,
|
||||
|
||||
GPIO3C0_SHIFT = 0,
|
||||
GPIO3C0_MASK = 3,
|
||||
GPIO3C0_GPIO = 0,
|
||||
GPIO3C0_SDMMC1_CMD,
|
||||
GPIO3C0_RMII_TX_EN,
|
||||
GPIO3C0_RESERVED,
|
||||
};
|
||||
|
||||
/* GRF_GPIO3D_IOMUX */
|
||||
enum {
|
||||
GPIO3D6_SHIFT = 12,
|
||||
GPIO3D6_MASK = 3,
|
||||
GPIO3D6_GPIO = 0,
|
||||
GPIO3D6_PWM_3,
|
||||
GPIO3D6_JTAG_TMS,
|
||||
GPIO3D6_HOST_DRV_VBUS,
|
||||
|
||||
GPIO3D5_SHIFT = 10,
|
||||
GPIO3D5_MASK = 3,
|
||||
GPIO3D5_GPIO = 0,
|
||||
GPIO3D5_PWM_2,
|
||||
GPIO3D5_JTAG_TCK,
|
||||
GPIO3D5_OTG_DRV_VBUS,
|
||||
|
||||
GPIO3D4_SHIFT = 8,
|
||||
GPIO3D4_MASK = 3,
|
||||
GPIO3D4_GPIO = 0,
|
||||
GPIO3D4_PWM_1,
|
||||
GPIO3D4_JTAG_TRSTN,
|
||||
|
||||
GPIO3D3_SHIFT = 6,
|
||||
GPIO3D3_MASK = 3,
|
||||
GPIO3D3_GPIO = 0,
|
||||
GPIO3D3_PWM_0,
|
||||
|
||||
GPIO3D2_SHIFT = 4,
|
||||
GPIO3D2_MASK = 3,
|
||||
GPIO3D2_GPIO = 0,
|
||||
GPIO3D2_SDMMC1_INT_N,
|
||||
|
||||
GPIO3D1_SHIFT = 2,
|
||||
GPIO3D1_MASK = 3,
|
||||
GPIO3D1_GPIO = 0,
|
||||
GPIO3D1_SDMMC1_BACKEND_PWR,
|
||||
GPIO3D1_MII_MDCLK,
|
||||
|
||||
GPIO3D0_SHIFT = 0,
|
||||
GPIO3D0_MASK = 3,
|
||||
GPIO3D0_GPIO = 0,
|
||||
GPIO3D0_SDMMC1_PWR_EN,
|
||||
GPIO3D0_MII_MD,
|
||||
};
|
||||
|
||||
/* GRF_SOC_CON0 */
|
||||
enum {
|
||||
HSADC_CLK_DIR_SHIFT = 15,
|
||||
HSADC_CLK_DIR_MASK = 1,
|
||||
|
||||
HSADC_SEL_SHIFT = 14,
|
||||
HSADC_SEL_MASK = 1,
|
||||
|
||||
NOC_REMAP_SHIFT = 12,
|
||||
NOC_REMAP_MASK = 1,
|
||||
|
||||
EMMC_FLASH_SEL_SHIFT = 11,
|
||||
EMMC_FLASH_SEL_MASK = 1,
|
||||
|
||||
TZPC_REVISION_SHIFT = 7,
|
||||
TZPC_REVISION_MASK = 0xf,
|
||||
|
||||
L2CACHE_ACC_SHIFT = 5,
|
||||
L2CACHE_ACC_MASK = 3,
|
||||
|
||||
L2RD_WAIT_SHIFT = 3,
|
||||
L2RD_WAIT_MASK = 3,
|
||||
|
||||
IMEMRD_WAIT_SHIFT = 1,
|
||||
IMEMRD_WAIT_MASK = 3,
|
||||
};
|
||||
|
||||
/* GRF_SOC_CON1 */
|
||||
enum {
|
||||
RKI2C4_SEL_SHIFT = 15,
|
||||
RKI2C4_SEL_MASK = 1,
|
||||
|
||||
RKI2C3_SEL_SHIFT = 14,
|
||||
RKI2C3_SEL_MASK = 1,
|
||||
|
||||
RKI2C2_SEL_SHIFT = 13,
|
||||
RKI2C2_SEL_MASK = 1,
|
||||
|
||||
RKI2C1_SEL_SHIFT = 12,
|
||||
RKI2C1_SEL_MASK = 1,
|
||||
|
||||
RKI2C0_SEL_SHIFT = 11,
|
||||
RKI2C0_SEL_MASK = 1,
|
||||
|
||||
VCODEC_SEL_SHIFT = 10,
|
||||
VCODEC_SEL_MASK = 1,
|
||||
|
||||
PERI_EMEM_PAUSE_SHIFT = 9,
|
||||
PERI_EMEM_PAUSE_MASK = 1,
|
||||
|
||||
PERI_USB_PAUSE_SHIFT = 8,
|
||||
PERI_USB_PAUSE_MASK = 1,
|
||||
|
||||
SMC_MUX_MODE_0_SHIFT = 6,
|
||||
SMC_MUX_MODE_0_MASK = 1,
|
||||
|
||||
SMC_SRAM_MW_0_SHIFT = 4,
|
||||
SMC_SRAM_MW_0_MASK = 3,
|
||||
|
||||
SMC_REMAP_0_SHIFT = 3,
|
||||
SMC_REMAP_0_MASK = 1,
|
||||
|
||||
SMC_A_GT_M0_SYNC_SHIFT = 2,
|
||||
SMC_A_GT_M0_SYNC_MASK = 1,
|
||||
|
||||
EMAC_SPEED_SHIFT = 1,
|
||||
EMAC_SPEEC_MASK = 1,
|
||||
|
||||
EMAC_MODE_SHIFT = 0,
|
||||
EMAC_MODE_MASK = 1,
|
||||
};
|
||||
|
||||
/* GRF_SOC_CON2 */
|
||||
enum {
|
||||
SDIO_CLK_OUT_SR_SHIFT = 15,
|
||||
SDIO_CLK_OUT_SR_MASK = 1,
|
||||
|
||||
MEM_EMA_L2C_SHIFT = 11,
|
||||
MEM_EMA_L2C_MASK = 7,
|
||||
|
||||
MEM_EMA_A9_SHIFT = 8,
|
||||
MEM_EMA_A9_MASK = 7,
|
||||
|
||||
MSCH4_MAINDDR3_SHIFT = 7,
|
||||
MSCH4_MAINDDR3_MASK = 1,
|
||||
MSCH4_MAINDDR3_DDR3 = 1,
|
||||
|
||||
EMAC_NEWRCV_EN_SHIFT = 6,
|
||||
EMAC_NEWRCV_EN_MASK = 1,
|
||||
|
||||
SW_ADDR15_EN_SHIFT = 5,
|
||||
SW_ADDR15_EN_MASK = 1,
|
||||
|
||||
SW_ADDR16_EN_SHIFT = 4,
|
||||
SW_ADDR16_EN_MASK = 1,
|
||||
|
||||
SW_ADDR17_EN_SHIFT = 3,
|
||||
SW_ADDR17_EN_MASK = 1,
|
||||
|
||||
BANK2_TO_RANK_EN_SHIFT = 2,
|
||||
BANK2_TO_RANK_EN_MASK = 1,
|
||||
|
||||
RANK_TO_ROW15_EN_SHIFT = 1,
|
||||
RANK_TO_ROW15_EN_MASK = 1,
|
||||
|
||||
UPCTL_C_ACTIVE_IN_SHIFT = 0,
|
||||
UPCTL_C_ACTIVE_IN_MASK = 1,
|
||||
UPCTL_C_ACTIVE_IN_MAY = 0,
|
||||
UPCTL_C_ACTIVE_IN_WILL,
|
||||
};
|
||||
|
||||
/* GRF_DDRC_CON0 */
|
||||
enum {
|
||||
DDR_16BIT_EN_SHIFT = 15,
|
||||
DDR_16BIT_EN_MASK = 1,
|
||||
|
||||
DTO_LB_SHIFT = 11,
|
||||
DTO_LB_MASK = 3,
|
||||
|
||||
DTO_TE_SHIFT = 9,
|
||||
DTO_TE_MASK = 3,
|
||||
|
||||
DTO_PDR_SHIFT = 7,
|
||||
DTO_PDR_MASK = 3,
|
||||
|
||||
DTO_PDD_SHIFT = 5,
|
||||
DTO_PDD_MASK = 3,
|
||||
|
||||
DTO_IOM_SHIFT = 3,
|
||||
DTO_IOM_MASK = 3,
|
||||
|
||||
DTO_OE_SHIFT = 1,
|
||||
DTO_OE_MASK = 3,
|
||||
|
||||
ATO_AE_SHIFT = 0,
|
||||
ATO_AE_MASK = 1,
|
||||
};
|
||||
#endif
|
||||
134
arch/arm/include/asm/arch-rockchip/grf_rk3328.h
Normal file
134
arch/arm/include/asm/arch-rockchip/grf_rk3328.h
Normal file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __SOC_ROCKCHIP_RK3328_GRF_H__
|
||||
#define __SOC_ROCKCHIP_RK3328_GRF_H__
|
||||
|
||||
struct rk3328_grf_regs {
|
||||
u32 gpio0a_iomux;
|
||||
u32 gpio0b_iomux;
|
||||
u32 gpio0c_iomux;
|
||||
u32 gpio0d_iomux;
|
||||
u32 gpio1a_iomux;
|
||||
u32 gpio1b_iomux;
|
||||
u32 gpio1c_iomux;
|
||||
u32 gpio1d_iomux;
|
||||
u32 gpio2a_iomux;
|
||||
u32 gpio2bl_iomux;
|
||||
u32 gpio2bh_iomux;
|
||||
u32 gpio2cl_iomux;
|
||||
u32 gpio2ch_iomux;
|
||||
u32 gpio2d_iomux;
|
||||
u32 gpio3al_iomux;
|
||||
u32 gpio3ah_iomux;
|
||||
u32 gpio3bl_iomux;
|
||||
u32 gpio3bh_iomux;
|
||||
u32 gpio3c_iomux;
|
||||
u32 gpio3d_iomux;
|
||||
u32 com_iomux;
|
||||
u32 reserved1[(0x100 - 0x54) / 4];
|
||||
|
||||
u32 gpio0a_p;
|
||||
u32 gpio0b_p;
|
||||
u32 gpio0c_p;
|
||||
u32 gpio0d_p;
|
||||
u32 gpio1a_p;
|
||||
u32 gpio1b_p;
|
||||
u32 gpio1c_p;
|
||||
u32 gpio1d_p;
|
||||
u32 gpio2a_p;
|
||||
u32 gpio2b_p;
|
||||
u32 gpio2c_p;
|
||||
u32 gpio2d_p;
|
||||
u32 gpio3a_p;
|
||||
u32 gpio3b_p;
|
||||
u32 gpio3c_p;
|
||||
u32 gpio3d_p;
|
||||
u32 reserved2[(0x200 - 0x140) / 4];
|
||||
u32 gpio0a_e;
|
||||
u32 gpio0b_e;
|
||||
u32 gpio0c_e;
|
||||
u32 gpio0d_e;
|
||||
u32 gpio1a_e;
|
||||
u32 gpio1b_e;
|
||||
u32 gpio1c_e;
|
||||
u32 gpio1d_e;
|
||||
u32 gpio2a_e;
|
||||
u32 gpio2b_e;
|
||||
u32 gpio2c_e;
|
||||
u32 gpio2d_e;
|
||||
u32 gpio3a_e;
|
||||
u32 gpio3b_e;
|
||||
u32 gpio3c_e;
|
||||
u32 gpio3d_e;
|
||||
u32 reserved3[(0x300 - 0x240) / 4];
|
||||
u32 gpio0l_sr;
|
||||
u32 gpio0h_sr;
|
||||
u32 gpio1l_sr;
|
||||
u32 gpio1h_sr;
|
||||
u32 gpio2l_sr;
|
||||
u32 gpio2h_sr;
|
||||
u32 gpio3l_sr;
|
||||
u32 gpio3h_sr;
|
||||
u32 reserved4[(0x380 - 0x320) / 4];
|
||||
u32 gpio0l_smt;
|
||||
u32 gpio0h_smt;
|
||||
u32 gpio1l_smt;
|
||||
u32 gpio1h_smt;
|
||||
u32 gpio2l_smt;
|
||||
u32 gpio2h_smt;
|
||||
u32 gpio3l_smt;
|
||||
u32 gpio3h_smt;
|
||||
u32 reserved5[(0x400 - 0x3a0) / 4];
|
||||
u32 soc_con[11];
|
||||
u32 reserved6[(0x480 - 0x42c) / 4];
|
||||
u32 soc_status[5];
|
||||
u32 reserved7[(0x4c0 - 0x494) / 4];
|
||||
u32 otg3_con[2];
|
||||
u32 reserved8[(0x500 - 0x4c8) / 4];
|
||||
u32 cpu_con[2];
|
||||
u32 reserved9[(0x520 - 0x508) / 4];
|
||||
u32 cpu_status[2];
|
||||
u32 reserved10[(0x5c8 - 0x528) / 4];
|
||||
u32 os_reg[8];
|
||||
u32 reserved11[(0x680 - 0x5e8) / 4];
|
||||
u32 sig_detect_con;
|
||||
u32 reserved12[3];
|
||||
u32 sig_detect_status;
|
||||
u32 reserved13[3];
|
||||
u32 sig_detect_status_clr;
|
||||
u32 reserved14[3];
|
||||
|
||||
u32 sdmmc_det_counter;
|
||||
u32 reserved15[(0x700 - 0x6b4) / 4];
|
||||
u32 host0_con[3];
|
||||
u32 reserved16[(0x880 - 0x70c) / 4];
|
||||
u32 otg_con0;
|
||||
u32 reserved17[3];
|
||||
u32 host0_status;
|
||||
u32 reserved18[(0x900 - 0x894) / 4];
|
||||
u32 mac_con[3];
|
||||
u32 reserved19[(0xb00 - 0x90c) / 4];
|
||||
u32 macphy_con[4];
|
||||
u32 macphy_status;
|
||||
};
|
||||
check_member(rk3328_grf_regs, macphy_status, 0xb10);
|
||||
|
||||
struct rk3328_sgrf_regs {
|
||||
u32 soc_con[6];
|
||||
u32 reserved0[(0x100 - 0x18) / 4];
|
||||
u32 dmac_con[6];
|
||||
u32 reserved1[(0x180 - 0x118) / 4];
|
||||
u32 fast_boot_addr;
|
||||
u32 reserved2[(0x200 - 0x184) / 4];
|
||||
u32 chip_fuse_con;
|
||||
u32 reserved3[(0x280 - 0x204) / 4];
|
||||
u32 hdcp_key_reg[8];
|
||||
u32 hdcp_key_access_mask;
|
||||
};
|
||||
check_member(rk3328_sgrf_regs, hdcp_key_access_mask, 0x2a0);
|
||||
|
||||
#endif /* __SOC_ROCKCHIP_RK3328_GRF_H__ */
|
||||
@@ -318,4 +318,122 @@ struct rk3399_pmusgrf_regs {
|
||||
};
|
||||
check_member(rk3399_pmusgrf_regs, slv_secure_con4, 0xe3d4);
|
||||
|
||||
enum {
|
||||
/* GRF_GPIO2B_IOMUX */
|
||||
GRF_GPIO2B1_SEL_SHIFT = 0,
|
||||
GRF_GPIO2B1_SEL_MASK = 3 << GRF_GPIO2B1_SEL_SHIFT,
|
||||
GRF_SPI2TPM_RXD = 1,
|
||||
GRF_GPIO2B2_SEL_SHIFT = 2,
|
||||
GRF_GPIO2B2_SEL_MASK = 3 << GRF_GPIO2B2_SEL_SHIFT,
|
||||
GRF_SPI2TPM_TXD = 1,
|
||||
GRF_GPIO2B3_SEL_SHIFT = 6,
|
||||
GRF_GPIO2B3_SEL_MASK = 3 << GRF_GPIO2B3_SEL_SHIFT,
|
||||
GRF_SPI2TPM_CLK = 1,
|
||||
GRF_GPIO2B4_SEL_SHIFT = 8,
|
||||
GRF_GPIO2B4_SEL_MASK = 3 << GRF_GPIO2B4_SEL_SHIFT,
|
||||
GRF_SPI2TPM_CSN0 = 1,
|
||||
|
||||
/* GRF_GPIO3A_IOMUX */
|
||||
GRF_GPIO3A4_SEL_SHIFT = 8,
|
||||
GRF_GPIO3A4_SEL_MASK = 3 << GRF_GPIO3A4_SEL_SHIFT,
|
||||
GRF_SPI0NORCODEC_RXD = 2,
|
||||
GRF_GPIO3A5_SEL_SHIFT = 10,
|
||||
GRF_GPIO3A5_SEL_MASK = 3 << GRF_GPIO3A5_SEL_SHIFT,
|
||||
GRF_SPI0NORCODEC_TXD = 2,
|
||||
GRF_GPIO3A6_SEL_SHIFT = 12,
|
||||
GRF_GPIO3A6_SEL_MASK = 3 << GRF_GPIO3A6_SEL_SHIFT,
|
||||
GRF_SPI0NORCODEC_CLK = 2,
|
||||
GRF_GPIO3A7_SEL_SHIFT = 14,
|
||||
GRF_GPIO3A7_SEL_MASK = 3 << GRF_GPIO3A7_SEL_SHIFT,
|
||||
GRF_SPI0NORCODEC_CSN0 = 2,
|
||||
|
||||
/* GRF_GPIO3B_IOMUX */
|
||||
GRF_GPIO3B0_SEL_SHIFT = 0,
|
||||
GRF_GPIO3B0_SEL_MASK = 3 << GRF_GPIO3B0_SEL_SHIFT,
|
||||
GRF_SPI0NORCODEC_CSN1 = 2,
|
||||
|
||||
/* GRF_GPIO4B_IOMUX */
|
||||
GRF_GPIO4B0_SEL_SHIFT = 0,
|
||||
GRF_GPIO4B0_SEL_MASK = 3 << GRF_GPIO4B0_SEL_SHIFT,
|
||||
GRF_SDMMC_DATA0 = 1,
|
||||
GRF_UART2DBGA_SIN = 2,
|
||||
GRF_GPIO4B1_SEL_SHIFT = 2,
|
||||
GRF_GPIO4B1_SEL_MASK = 3 << GRF_GPIO4B1_SEL_SHIFT,
|
||||
GRF_SDMMC_DATA1 = 1,
|
||||
GRF_UART2DBGA_SOUT = 2,
|
||||
GRF_GPIO4B2_SEL_SHIFT = 4,
|
||||
GRF_GPIO4B2_SEL_MASK = 3 << GRF_GPIO4B2_SEL_SHIFT,
|
||||
GRF_SDMMC_DATA2 = 1,
|
||||
GRF_GPIO4B3_SEL_SHIFT = 6,
|
||||
GRF_GPIO4B3_SEL_MASK = 3 << GRF_GPIO4B3_SEL_SHIFT,
|
||||
GRF_SDMMC_DATA3 = 1,
|
||||
GRF_GPIO4B4_SEL_SHIFT = 8,
|
||||
GRF_GPIO4B4_SEL_MASK = 3 << GRF_GPIO4B4_SEL_SHIFT,
|
||||
GRF_SDMMC_CLKOUT = 1,
|
||||
GRF_GPIO4B5_SEL_SHIFT = 10,
|
||||
GRF_GPIO4B5_SEL_MASK = 3 << GRF_GPIO4B5_SEL_SHIFT,
|
||||
GRF_SDMMC_CMD = 1,
|
||||
|
||||
/* GRF_GPIO4C_IOMUX */
|
||||
GRF_GPIO4C0_SEL_SHIFT = 0,
|
||||
GRF_GPIO4C0_SEL_MASK = 3 << GRF_GPIO4C0_SEL_SHIFT,
|
||||
GRF_UART2DGBB_SIN = 2,
|
||||
GRF_GPIO4C1_SEL_SHIFT = 2,
|
||||
GRF_GPIO4C1_SEL_MASK = 3 << GRF_GPIO4C1_SEL_SHIFT,
|
||||
GRF_UART2DGBB_SOUT = 2,
|
||||
GRF_GPIO4C2_SEL_SHIFT = 4,
|
||||
GRF_GPIO4C2_SEL_MASK = 3 << GRF_GPIO4C2_SEL_SHIFT,
|
||||
GRF_PWM_0 = 1,
|
||||
GRF_GPIO4C3_SEL_SHIFT = 6,
|
||||
GRF_GPIO4C3_SEL_MASK = 3 << GRF_GPIO4C3_SEL_SHIFT,
|
||||
GRF_UART2DGBC_SIN = 1,
|
||||
GRF_GPIO4C4_SEL_SHIFT = 8,
|
||||
GRF_GPIO4C4_SEL_MASK = 3 << GRF_GPIO4C4_SEL_SHIFT,
|
||||
GRF_UART2DBGC_SOUT = 1,
|
||||
GRF_GPIO4C6_SEL_SHIFT = 12,
|
||||
GRF_GPIO4C6_SEL_MASK = 3 << GRF_GPIO4C6_SEL_SHIFT,
|
||||
GRF_PWM_1 = 1,
|
||||
|
||||
/* GRF_SOC_CON7 */
|
||||
GRF_UART_DBG_SEL_SHIFT = 10,
|
||||
GRF_UART_DBG_SEL_MASK = 3 << GRF_UART_DBG_SEL_SHIFT,
|
||||
GRF_UART_DBG_SEL_C = 2,
|
||||
|
||||
/* PMUGRF_GPIO0A_IOMUX */
|
||||
PMUGRF_GPIO0A6_SEL_SHIFT = 12,
|
||||
PMUGRF_GPIO0A6_SEL_MASK = 3 << PMUGRF_GPIO0A6_SEL_SHIFT,
|
||||
PMUGRF_PWM_3A = 1,
|
||||
|
||||
/* PMUGRF_GPIO1A_IOMUX */
|
||||
PMUGRF_GPIO1A7_SEL_SHIFT = 14,
|
||||
PMUGRF_GPIO1A7_SEL_MASK = 3 << PMUGRF_GPIO1A7_SEL_SHIFT,
|
||||
PMUGRF_SPI1EC_RXD = 2,
|
||||
|
||||
/* PMUGRF_GPIO1B_IOMUX */
|
||||
PMUGRF_GPIO1B0_SEL_SHIFT = 0,
|
||||
PMUGRF_GPIO1B0_SEL_MASK = 3 << PMUGRF_GPIO1B0_SEL_SHIFT,
|
||||
PMUGRF_SPI1EC_TXD = 2,
|
||||
PMUGRF_GPIO1B1_SEL_SHIFT = 2,
|
||||
PMUGRF_GPIO1B1_SEL_MASK = 3 << PMUGRF_GPIO1B1_SEL_SHIFT,
|
||||
PMUGRF_SPI1EC_CLK = 2,
|
||||
PMUGRF_GPIO1B2_SEL_SHIFT = 4,
|
||||
PMUGRF_GPIO1B2_SEL_MASK = 3 << PMUGRF_GPIO1B2_SEL_SHIFT,
|
||||
PMUGRF_SPI1EC_CSN0 = 2,
|
||||
PMUGRF_GPIO1B6_SEL_SHIFT = 12,
|
||||
PMUGRF_GPIO1B6_SEL_MASK = 3 << PMUGRF_GPIO1B6_SEL_SHIFT,
|
||||
PMUGRF_PWM_3B = 1,
|
||||
PMUGRF_GPIO1B7_SEL_SHIFT = 14,
|
||||
PMUGRF_GPIO1B7_SEL_MASK = 3 << PMUGRF_GPIO1B7_SEL_SHIFT,
|
||||
PMUGRF_I2C0PMU_SDA = 2,
|
||||
|
||||
/* PMUGRF_GPIO1C_IOMUX */
|
||||
PMUGRF_GPIO1C0_SEL_SHIFT = 0,
|
||||
PMUGRF_GPIO1C0_SEL_MASK = 3 << PMUGRF_GPIO1C0_SEL_SHIFT,
|
||||
PMUGRF_I2C0PMU_SCL = 2,
|
||||
PMUGRF_GPIO1C3_SEL_SHIFT = 6,
|
||||
PMUGRF_GPIO1C3_SEL_MASK = 3 << PMUGRF_GPIO1C3_SEL_SHIFT,
|
||||
PMUGRF_PWM_2 = 1,
|
||||
|
||||
};
|
||||
|
||||
#endif /* __SOC_ROCKCHIP_RK3399_GRF_H__ */
|
||||
|
||||
36
arch/arm/include/asm/arch-rockchip/pmu_rk3188.h
Normal file
36
arch/arm/include/asm/arch-rockchip/pmu_rk3188.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Heiko Stuebner <heiko@sntech.de>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef _ASM_ARCH_PMU_RK3188_H
|
||||
#define _ASM_ARCH_PMU_RK3188_H
|
||||
|
||||
struct rk3188_pmu {
|
||||
u32 wakeup_cfg[2];
|
||||
u32 pwrdn_con;
|
||||
u32 pwrdn_st;
|
||||
|
||||
u32 int_con;
|
||||
u32 int_st;
|
||||
u32 misc_con;
|
||||
|
||||
u32 osc_cnt;
|
||||
u32 pll_cnt;
|
||||
u32 pmu_cnt;
|
||||
u32 ddrio_pwron_cnt;
|
||||
u32 wakeup_rst_clr_cnt;
|
||||
u32 scu_pwrdwn_cnt;
|
||||
u32 scu_pwrup_cnt;
|
||||
u32 misc_con1;
|
||||
u32 gpio0_con;
|
||||
|
||||
u32 sys_reg[4];
|
||||
u32 reserved0[4];
|
||||
u32 stop_int_dly;
|
||||
u32 gpio0_p[2];
|
||||
};
|
||||
check_member(rk3188_pmu, gpio0_p[1], 0x0068);
|
||||
|
||||
#endif
|
||||
119
arch/arm/include/asm/arch-rockchip/sdram_rk3399.h
Normal file
119
arch/arm/include/asm/arch-rockchip/sdram_rk3399.h
Normal file
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
* Copyright (C) 2016-2017 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef _ASM_ARCH_SDRAM_RK3399_H
|
||||
#define _ASM_ARCH_SDRAM_RK3399_H
|
||||
|
||||
enum {
|
||||
DDR3 = 0x3,
|
||||
LPDDR2 = 0x5,
|
||||
LPDDR3 = 0x6,
|
||||
LPDDR4 = 0x7,
|
||||
UNUSED = 0xFF
|
||||
};
|
||||
|
||||
struct rk3399_ddr_pctl_regs {
|
||||
u32 denali_ctl[332];
|
||||
};
|
||||
|
||||
struct rk3399_ddr_publ_regs {
|
||||
u32 denali_phy[959];
|
||||
};
|
||||
|
||||
struct rk3399_ddr_pi_regs {
|
||||
u32 denali_pi[200];
|
||||
};
|
||||
|
||||
struct rk3399_msch_regs {
|
||||
u32 coreid;
|
||||
u32 revisionid;
|
||||
u32 ddrconf;
|
||||
u32 ddrsize;
|
||||
u32 ddrtiminga0;
|
||||
u32 ddrtimingb0;
|
||||
u32 ddrtimingc0;
|
||||
u32 devtodev0;
|
||||
u32 reserved0[(0x110 - 0x20) / 4];
|
||||
u32 ddrmode;
|
||||
u32 reserved1[(0x1000 - 0x114) / 4];
|
||||
u32 agingx0;
|
||||
};
|
||||
|
||||
struct rk3399_msch_timings {
|
||||
u32 ddrtiminga0;
|
||||
u32 ddrtimingb0;
|
||||
u32 ddrtimingc0;
|
||||
u32 devtodev0;
|
||||
u32 ddrmode;
|
||||
u32 agingx0;
|
||||
};
|
||||
|
||||
struct rk3399_ddr_cic_regs {
|
||||
u32 cic_ctrl0;
|
||||
u32 cic_ctrl1;
|
||||
u32 cic_idle_th;
|
||||
u32 cic_cg_wait_th;
|
||||
u32 cic_status0;
|
||||
u32 cic_status1;
|
||||
u32 cic_ctrl2;
|
||||
u32 cic_ctrl3;
|
||||
u32 cic_ctrl4;
|
||||
};
|
||||
|
||||
/* DENALI_CTL_00 */
|
||||
#define START 1
|
||||
|
||||
/* DENALI_CTL_68 */
|
||||
#define PWRUP_SREFRESH_EXIT (1 << 16)
|
||||
|
||||
/* DENALI_CTL_274 */
|
||||
#define MEM_RST_VALID 1
|
||||
|
||||
struct rk3399_sdram_channel {
|
||||
unsigned int rank;
|
||||
/* dram column number, 0 means this channel is invalid */
|
||||
unsigned int col;
|
||||
/* dram bank number, 3:8bank, 2:4bank */
|
||||
unsigned int bk;
|
||||
/* channel buswidth, 2:32bit, 1:16bit, 0:8bit */
|
||||
unsigned int bw;
|
||||
/* die buswidth, 2:32bit, 1:16bit, 0:8bit */
|
||||
unsigned int dbw;
|
||||
/*
|
||||
* row_3_4 = 1: 6Gb or 12Gb die
|
||||
* row_3_4 = 0: normal die, power of 2
|
||||
*/
|
||||
unsigned int row_3_4;
|
||||
unsigned int cs0_row;
|
||||
unsigned int cs1_row;
|
||||
unsigned int ddrconfig;
|
||||
struct rk3399_msch_timings noc_timings;
|
||||
};
|
||||
|
||||
struct rk3399_base_params {
|
||||
unsigned int ddr_freq;
|
||||
unsigned int dramtype;
|
||||
unsigned int num_channels;
|
||||
unsigned int stride;
|
||||
unsigned int odt;
|
||||
};
|
||||
|
||||
struct rk3399_sdram_params {
|
||||
struct rk3399_sdram_channel ch[2];
|
||||
struct rk3399_base_params base;
|
||||
struct rk3399_ddr_pctl_regs pctl_regs;
|
||||
struct rk3399_ddr_pi_regs pi_regs;
|
||||
struct rk3399_ddr_publ_regs phy_regs;
|
||||
};
|
||||
|
||||
#define PI_CA_TRAINING (1 << 0)
|
||||
#define PI_WRITE_LEVELING (1 << 1)
|
||||
#define PI_READ_GATE_TRAINING (1 << 2)
|
||||
#define PI_READ_LEVELING (1 << 3)
|
||||
#define PI_WDQ_LEVELING (1 << 4)
|
||||
#define PI_FULL_TRAINING 0xff
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user