add support for rk3066 platform.
Subsystems (9)
v2 cover add support for rk3066 platform.
This patch serie adds support for Rockchip RK3066 processor.
Paweł Jarosz (19):
rockchip: rk3066: add grf header file
rockchip: rk3066: add rk3066 pinctrl driver
rockchip: rk3066: add sysreset driver
rockchip: rk3066: add clock driver for rk3066 soc
rockchip: rk3066: add rk3066 platform devicetree file
rockchip: rk3066: add core support
rockchip: rk3066: add mk808 board files
rockchip: rk3066: add sdram driver
mtd: nand: add support for the Sandisk SDTNQGAMA chip
mtd: nand: add the rockchip nand controller driver
rockchip: mkimage: add support for rockchip nand boot image
rockchip: board: rk3066: convert board_usb_init to live tree functions
ARM: dts: rockchip: prefer u-boot,dm-pre-reloc rather than
u-boot,dm-spl
mmc: dw_mmc: support transfer mode autodetection
mmc: dw_mmc: rockchip: add support for rk3066 sdmmc
armv7: support rk3066 early back to bootrom in vector.S
rockchip: sysreset: deduplicate rk3066 and rk3188 sysreset drivers
dfu: fix spl build
mtd: nand: spl: allow build nand_bbt, nand_ids and nand_util
arch/arm/dts/Makefile | 1 + arch/arm/dts/rk3066a-mk808.dts | 189 +++++ arch/arm/dts/rk3066a.dtsi | 707 +++++++++++++++ arch/arm/dts/rk3xxx.dtsi | 8 +- arch/arm/include/asm/arch-rockchip/boot0.h | 14 + arch/arm/include/asm/arch-rockchip/cru_rk3066.h | 189 +++++ arch/arm/include/asm/arch-rockchip/grf_rk3066.h | 621 ++++++++++++++ arch/arm/include/asm/arch-rockchip/periph.h | 1 + .../include/asm/arch-rockchip/sysreset_common.h | 20 + arch/arm/lib/vectors.S | 18 +- arch/arm/mach-rockchip/Kconfig | 16 + arch/arm/mach-rockchip/Makefile | 7 + arch/arm/mach-rockchip/rk3066-board-spl.c | 139 +++ arch/arm/mach-rockchip/rk3066-board-tpl.c | 90 ++ arch/arm/mach-rockchip/rk3066-board.c | 112 +++ arch/arm/mach-rockchip/rk3066/Kconfig | 31 + arch/arm/mach-rockchip/rk3066/Makefile | 9 + arch/arm/mach-rockchip/rk3066/clk_rk3066.c | 33 + arch/arm/mach-rockchip/rk3066/sdram_rk3066.c | 943 +++++++++++++++++++++ arch/arm/mach-rockchip/rk3066/syscon_rk3066.c | 54 ++ arch/arm/mach-rockchip/sysreset-common.c | 39 + board/rikomagic/mk808_rk3066/Kconfig | 15 + board/rikomagic/mk808_rk3066/MAINTAINERS | 6 + board/rikomagic/mk808_rk3066/Makefile | 7 + board/rikomagic/mk808_rk3066/mk808_rk3066.c | 10 + common/image.c | 1 + configs/mk808_defconfig | 115 +++ drivers/clk/rockchip/Makefile | 1 + drivers/clk/rockchip/clk_rk3066.c | 587 +++++++++++++ drivers/dfu/dfu_nand.c | 6 +- drivers/mmc/dw_mmc.c | 8 + drivers/mmc/rockchip_dw_mmc.c | 1 + drivers/mtd/nand/Kconfig | 6 + drivers/mtd/nand/Makefile | 4 + drivers/mtd/nand/nand_ids.c | 3 + drivers/mtd/nand/rockchip_nand.c | 660 ++++++++++++++ drivers/pinctrl/Kconfig | 9 + drivers/pinctrl/rockchip/Makefile | 1 + drivers/pinctrl/rockchip/pinctrl_rk3066.c | 340 ++++++++ drivers/sysreset/Makefile | 1 + drivers/sysreset/sysreset_rk3066.c | 49 ++ drivers/sysreset/sysreset_rk3188.c | 35 +- include/configs/mk808_rk3066.h | 61 ++ include/configs/rk3066_common.h | 99 +++ include/dwmmc.h | 4 + include/fdtdec.h | 1 + include/image.h | 1 + lib/fdtdec.c | 1 + tools/Makefile | 2 +- tools/imagetool.h | 1 + tools/mkimage.c | 8 +- tools/rkcommon.c | 10 +- tools/rkcommon.h | 10 +- tools/rknand.c | 156 ++++ tools/rksd.c | 2 +- tools/rkspi.c | 2 +- 56 files changed, 5416 insertions(+), 48 deletions(-) create mode 100644 arch/arm/dts/rk3066a-mk808.dts create mode 100644 arch/arm/dts/rk3066a.dtsi create mode 100644 arch/arm/include/asm/arch-rockchip/cru_rk3066.h create mode 100644 arch/arm/include/asm/arch-rockchip/grf_rk3066.h create mode 100644 arch/arm/include/asm/arch-rockchip/sysreset_common.h create mode 100644 arch/arm/mach-rockchip/rk3066-board-spl.c create mode 100644 arch/arm/mach-rockchip/rk3066-board-tpl.c create mode 100644 arch/arm/mach-rockchip/rk3066-board.c create mode 100644 arch/arm/mach-rockchip/rk3066/Kconfig create mode 100644 arch/arm/mach-rockchip/rk3066/Makefile create mode 100644 arch/arm/mach-rockchip/rk3066/clk_rk3066.c create mode 100644 arch/arm/mach-rockchip/rk3066/sdram_rk3066.c create mode 100644 arch/arm/mach-rockchip/rk3066/syscon_rk3066.c create mode 100644 arch/arm/mach-rockchip/sysreset-common.c create mode 100644 board/rikomagic/mk808_rk3066/Kconfig create mode 100644 board/rikomagic/mk808_rk3066/MAINTAINERS create mode 100644 board/rikomagic/mk808_rk3066/Makefile create mode 100644 board/rikomagic/mk808_rk3066/mk808_rk3066.c create mode 100644 configs/mk808_defconfig create mode 100644 drivers/clk/rockchip/clk_rk3066.c create mode 100644 drivers/mtd/nand/rockchip_nand.c create mode 100644 drivers/pinctrl/rockchip/pinctrl_rk3066.c create mode 100644 drivers/sysreset/sysreset_rk3066.c create mode 100644 include/configs/mk808_rk3066.h create mode 100644 include/configs/rk3066_common.h create mode 100644 tools/rknand.c
Signature · 1 line
2.7.4
PATCH v2 1/19 rockchip: rk3066: add grf header file
grf is needed by various drivers for rk3066 soc.
---
Changes since v1:
- updated to shifted masks
arch/arm/include/asm/arch-rockchip/grf_rk3066.h | 621 ++++++++++++++++++++++++ 1 file changed, 621 insertions(+) create mode 100644 arch/arm/include/asm/arch-rockchip/grf_rk3066.h
arch/arm/include/asm/arch-rockchip/grf_rk3066.h new file +621 -0
@@ -0,0 +1,621 @@ +/* +* Copyright (c) 2017 Paweł Jarosz <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0 +*/ + +#ifndef _ASM_ARCH_GRF_RK3066_H +#define _ASM_ARCH_GRF_RK3066_H + +struct rk3066_grf_gpio_lh { +u32 l; +u32 h; +}; + +struct rk3066_grf { +struct rk3066_grf_gpio_lh gpio_dir[7 ]; +struct rk3066_grf_gpio_lh gpio_do[7 ]; +struct rk3066_grf_gpio_lh gpio_en[7 ]; + +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 gpio2b_iomux; +u32 gpio2c_iomux; +u32 gpio2d_iomux; + +u32 gpio3a_iomux; +u32 gpio3b_iomux; +u32 gpio3c_iomux; +u32 gpio3d_iomux; + +u32 gpio4a_iomux; +u32 gpio4b_iomux; +u32 gpio4c_iomux; +u32 gpio4d_iomux; + +u32 reserved0[5 ]; + +u32 gpio6b_iomux; + +u32 reserved1[2 ]; + +struct rk3066_grf_gpio_lh gpio_pull[7 ]; + +u32 soc_con0; +u32 soc_con1; +u32 soc_con2; + +u32 soc_status0; + +u32 dmac1_con[3 ]; +u32 dmac2_con[4 ]; + +u32 uoc0_con[3 ]; +u32 uoc1_con[4 ]; +u32 ddrc_con; +u32 ddrc_stat; + +u32 reserved2[10 ]; + +u32 os_reg[4 ]; +}; +check_member (rk3066_grf, os_reg[3 ],0x01d4 ); + +/* GRF_GPIO0A_IOMUX */ +enum { +GPIO0A6_SHIFT =12 , +GPIO0A6_MASK =1 <<GPIO0A6_SHIFT , +GPIO0A6_GPIO =0 , +GPIO0A6_HOST_DRV_VBUS , + +GPIO0A5_SHIFT =10 , +GPIO0A5_MASK =1 <<GPIO0A5_SHIFT , +GPIO0A5_GPIO =0 , +GPIO0A5_OTG_DRV_VBUS , + +GPIO0A4_SHIFT =8 , +GPIO0A4_MASK =1 <<GPIO0A4_SHIFT , +GPIO0A4_GPIO =0 , +GPIO0A4_PWM1 , + +GPIO0A3_SHIFT =6 , +GPIO0A3_MASK =1 <<GPIO0A3_SHIFT , +GPIO0A3_GPIO =0 , +GPIO0A3_PWM0 +}; + +/* GRF_GPIO0D_IOMUX */ +enum { +GPIO0D7_SHIFT =14 , +GPIO0D7_MASK =1 <<GPIO0D7_SHIFT , +GPIO0D7_GPIO =0 , +GPIO0D7_PWM3 , + +GPIO0D6_SHIFT =12 , +GPIO0D6_MASK =1 <<GPIO0D6_SHIFT , +GPIO0D6_GPIO =0 , +GPIO0D6_PWM2 +}; + +/* GRF_GPIO1A_IOMUX */ +enum { +GPIO1A7_SHIFT =14 , +GPIO1A7_MASK =3 <<GPIO1A7_SHIFT , +GPIO1A7_GPIO =0 , +GPIO1A7_UART1_RTS_N , +GPIO1A7_SPI0_TXD , + +GPIO1A6_SHIFT =12 , +GPIO1A6_MASK =3 <<GPIO1A6_SHIFT , +GPIO1A6_GPIO =0 , +GPIO1A6_UART1_CTS_N , +GPIO1A6_SPI0_RXD , + +GPIO1A5_SHIFT =10 , +GPIO1A5_MASK =3 <<GPIO1A5_SHIFT , +GPIO1A5_GPIO =0 , +GPIO1A5_UART1_SOUT , +GPIO1A5_SPI0_CLK , + +GPIO1A4_SHIFT =8 , +GPIO1A4_MASK =3 <<GPIO1A4_SHIFT , +GPIO1A4_GPIO =0 , +GPIO1A4_UART1_SIN , +GPIO1A4_SPI0_CSN0 , + +GPIO1A3_SHIFT =6 , +GPIO1A3_MASK =1 <<GPIO1A3_SHIFT , +GPIO1A3_GPIO =0 , +GPIO1A3_UART0_RTS_N , + +GPIO1A2_SHIFT =4 , +GPIO1A2_MASK =1 <<GPIO1A2_SHIFT , +GPIO1A2_GPIO =0 , +GPIO1A2_UART0_CTS_N , + +GPIO1A1_SHIFT =2 , +GPIO1A1_MASK =1 <<GPIO1A1_SHIFT , +GPIO1A1_GPIO =0 , +GPIO1A1_UART0_SOUT , + +GPIO1A0_SHIFT =0 , +GPIO1A0_MASK =1 <<GPIO1A0_SHIFT , +GPIO1A0_GPIO =0 , +GPIO1A0_UART0_SIN +}; + +/* GRF_GPIO1B_IOMUX */ +enum { +GPIO1B1_SHIFT =2 , +GPIO1B1_MASK =1 <<GPIO1B1_SHIFT , +GPIO1B1_GPIO =0 , +GPIO1B1_UART2_SOUT , + +GPIO1B0_SHIFT =0 , +GPIO1B0_MASK =1 <<GPIO1B0_SHIFT , +GPIO1B0_GPIO =0 , +GPIO1B0_UART2_SIN +}; + +/* GRF_GPIO2C_IOMUX */ +enum { +GPIO2C7_SHIFT =14 , +GPIO2C7_MASK =3 <<GPIO2C7_SHIFT , +GPIO2C7_GPIO =0 , +GPIO2C7_LCDC1_DATA23 , +GPIO2C7_SPI1_CSN1 , +GPIO2C7_HSADC_DATA4 , + +GPIO2C6_SHIFT =12 , +GPIO2C6_MASK =3 <<GPIO2C6_SHIFT , +GPIO2C6_GPIO =0 , +GPIO2C6_LCDC1_DATA22 , +GPIO2C6_SPI1_RXD , +GPIO2C6_HSADC_DATA3 , + +GPIO2C5_SHIFT =10 , +GPIO2C5_MASK =3 <<GPIO2C5_SHIFT , +GPIO2C5_GPIO =0 , +GPIO2C5_LCDC1_DATA21 , +GPIO2C5_SPI1_TXD , +GPIO2C5_HSADC_DATA2 , + +GPIO2C4_SHIFT =8 , +GPIO2C4_MASK =3 <<GPIO2C4_SHIFT , +GPIO2C4_GPIO =0 , +GPIO2C4_LCDC1_DATA20 , +GPIO2C4_SPI1_CSN0 , +GPIO2C4_HSADC_DATA1 , + +GPIO2C3_SHIFT =6 , +GPIO2C3_MASK =3 <<GPIO2C3_SHIFT , +GPIO2C3_GPIO =0 , +GPIO2C3_LCDC1_DATA19 , +GPIO2C3_SPI1_CLK , +GPIO2C3_HSADC_DATA0 +}; + +/* GRF_GPIO2D_IOMUX */ +enum { +GPIO2D7_SHIFT =14 , +GPIO2D7_MASK =1 <<GPIO2D7_SHIFT , +GPIO2D7_GPIO =0 , +GPIO2D7_I2C1_SCL , + +GPIO2D6_SHIFT =12 , +GPIO2D6_MASK =1 <<GPIO2D6_SHIFT , +GPIO2D6_GPIO =0 , +GPIO2D6_I2C1_SDA , + +GPIO2D5_SHIFT =10 , +GPIO2D5_MASK =1 <<GPIO2D5_SHIFT , +GPIO2D5_GPIO =0 , +GPIO2D5_I2C0_SCL , + +GPIO2D4_SHIFT =8 , +GPIO2D4_MASK =1 <<GPIO2D4_SHIFT , +GPIO2D4_GPIO =0 , +GPIO2D4_I2C0_SDA + +}; + +/* GRF_GPIO3A_IOMUX */ +enum { +GPIO3A7_SHIFT =14 , +GPIO3A7_MASK =1 <<GPIO3A7_SHIFT , +GPIO3A7_GPIO =0 , +GPIO3A7_SDMMC0_WRITE_PRT , + +GPIO3A6_SHIFT =12 , +GPIO3A6_MASK =1 <<GPIO3A6_SHIFT , +GPIO3A6_GPIO =0 , +GPIO3A6_SDMMC0_RSTN_OUT , + +GPIO3A5_SHIFT =10 , +GPIO3A5_MASK =1 <<GPIO3A5_SHIFT , +GPIO3A5_GPIO =0 , +GPIO3A5_I2C4_SCL , + +GPIO3A4_SHIFT =8 , +GPIO3A4_MASK =1 <<GPIO3A4_SHIFT , +GPIO3A4_GPIO =0 , +GPIO3A4_I2C4_SDA , + +GPIO3A3_SHIFT =6 , +GPIO3A3_MASK =1 <<GPIO3A3_SHIFT , +GPIO3A3_GPIO =0 , +GPIO3A3_I2C3_SCL , + +GPIO3A2_SHIFT =4 , +GPIO3A2_MASK =1 <<GPIO3A2_SHIFT , +GPIO3A2_GPIO =0 , +GPIO3A2_I2C3_SDA , + +GPIO3A1_SHIFT =2 , +GPIO3A1_MASK =1 <<GPIO3A1_SHIFT , +GPIO3A1_GPIO =0 , +GPIO3A1_I2C2_SCL , + +GPIO3A0_SHIFT =0 , +GPIO3A0_MASK =1 <<GPIO3A0_SHIFT , +GPIO3A0_GPIO =0 , +GPIO3A0_I2C2_SDA , +}; + +/* GRF_GPIO3B_IOMUX */ +enum { +GPIO3B7_SHIFT =14 , +GPIO3B7_MASK =1 <<GPIO3B7_SHIFT , +GPIO3B7_GPIO =0 , +GPIO3B7_SDMMC0_WRITE_PRT , + +GPIO3B6_SHIFT =12 , +GPIO3B6_MASK =1 <<GPIO3B6_SHIFT , +GPIO3B6_GPIO =0 , +GPIO3B6_SDMMC0_DETECT_N , + +GPIO3B5_SHIFT =10 , +GPIO3B5_MASK =1 <<GPIO3B5_SHIFT , +GPIO3B5_GPIO =0 , +GPIO3B5_SDMMC0_DATA3 , + +GPIO3B4_SHIFT =8 , +GPIO3B4_MASK =1 <<GPIO3B4_SHIFT , +GPIO3B4_GPIO =0 , +GPIO3B4_SDMMC0_DATA2 , + +GPIO3B3_SHIFT =6 , +GPIO3B3_MASK =1 <<GPIO3B3_SHIFT , +GPIO3B3_GPIO =0 , +GPIO3B3_SDMMC0_DATA1 , + +GPIO3B2_SHIFT =4 , +GPIO3B2_MASK =1 <<GPIO3B2_SHIFT , +GPIO3B2_GPIO =0 , +GPIO3B2_SDMMC0_DATA0 , + +GPIO3B1_SHIFT =2 , +GPIO3B1_MASK =1 <<GPIO3B1_SHIFT , +GPIO3B1_GPIO =0 , +GPIO3B1_SDMMC0_CMD , + +GPIO3B0_SHIFT =0 , +GPIO3B0_MASK =1 <<GPIO3B0_SHIFT , +GPIO3B0_GPIO =0 , +GPIO3B0_SDMMC0_CLKOUT + +}; + +/* GRF_GPIO3C_IOMUX */ +enum { +GPIO3C7_SHIFT =14 , +GPIO3C7_MASK =1 <<GPIO3C7_SHIFT , +GPIO3C7_GPIO =0 , +GPIO3C7_SDMMC1_WRITE_PRT , + +GPIO3C6_SHIFT =12 , +GPIO3C6_MASK =1 <<GPIO3C6_SHIFT , +GPIO3C6_GPIO =0 , +GPIO3C6_SDMMC1_DETECT_N , + +GPIO3C5_SHIFT =10 , +GPIO3C5_MASK =1 <<GPIO3C5_SHIFT , +GPIO3C5_GPIO =0 , +GPIO3C5_SDMMC1_CLKOUT , + +GPIO3C4_SHIFT =8 , +GPIO3C4_MASK =1 <<GPIO3C4_SHIFT , +GPIO3C4_GPIO =0 , +GPIO3C4_SDMMC1_DATA3 , + +GPIO3C3_SHIFT =6 , +GPIO3C3_MASK =1 <<GPIO3C3_SHIFT , +GPIO3C3_GPIO =0 , +GPIO3C3_SDMMC1_DATA2 , + +GPIO3C2_SHIFT =4 , +GPIO3C2_MASK =1 <<GPIO3C2_SHIFT , +GPIO3C2_GPIO =0 , +GPIO3C2_SDMMC1_DATA1 , + +GPIO3C1_SHIFT =2 , +GPIO3C1_MASK =1 <<GPIO3C1_SHIFT , +GPIO3C1_GPIO =0 , +GPIO3C1_SDMMC1_DATA0 , + +GPIO3C0_SHIFT =0 , +GPIO3C0_MASK =1 <<GPIO3C0_SHIFT , +GPIO3C0_GPIO =0 , +GPIO3C0_SMMC1_CMD +}; + +/* GRF_GPIO3D_IOMUX */ +enum { +GPIO3D7_SHIFT =14 , +GPIO3D7_MASK =3 <<GPIO3D7_SHIFT , +GPIO3D7_GPIO =0 , +GPIO3D7_FLASH_DQS , +GPIO3D7_EMMC_CLKOUT , + +GPIO3D6_SHIFT =12 , +GPIO3D6_MASK =1 <<GPIO3D6_SHIFT , +GPIO3D6_GPIO =0 , +GPIO3D6_UART3_RTS_N , + +GPIO3D5_SHIFT =10 , +GPIO3D5_MASK =1 <<GPIO3D5_SHIFT , +GPIO3D5_GPIO =0 , +GPIO3D5_UART3_CTS_N , + +GPIO3D4_SHIFT =8 , +GPIO3D4_MASK =1 <<GPIO3D4_SHIFT , +GPIO3D4_GPIO =0 , +GPIO3D4_UART3_SOUT , + +GPIO3D3_SHIFT =6 , +GPIO3D3_MASK =1 <<GPIO3D3_SHIFT , +GPIO3D3_GPIO =0 , +GPIO3D3_UART3_SIN , + +GPIO3D2_SHIFT =4 , +GPIO3D2_MASK =1 <<GPIO3D2_SHIFT , +GPIO3D2_GPIO =0 , +GPIO3D2_SDMMC1_INT_N , + +GPIO3D1_SHIFT =2 , +GPIO3D1_MASK =1 <<GPIO3D1_SHIFT , +GPIO3D1_GPIO =0 , +GPIO3D1_SDMMC1_BACKEND_PWR , + +GPIO3D0_SHIFT =0 , +GPIO3D0_MASK =1 <<GPIO3D0_SHIFT , +GPIO3D0_GPIO =0 , +GPIO3D0_SDMMC1_PWR_EN + +}; + +/* GRF_GPIO4A_IOMUX */ +enum { +GPIO4A7_SHIFT =14 , +GPIO4A7_MASK =1 <<GPIO4A7_SHIFT , +GPIO4A7_GPIO =0 , +GPIO4A7_FLASH_DATA15 , + +GPIO4A6_SHIFT =12 , +GPIO4A6_MASK =1 <<GPIO4A6_SHIFT , +GPIO4A6_GPIO =0 , +GPIO4A6_FLASH_DATA14 , + +GPIO4A5_SHIFT =10 , +GPIO4A5_MASK =1 <<GPIO4A5_SHIFT , +GPIO4A5_GPIO =0 , +GPIO4A5_FLASH_DATA13 , + +GPIO4A4_SHIFT =8 , +GPIO4A4_MASK =1 <<GPIO4A4_SHIFT , +GPIO4A4_GPIO =0 , +GPIO4A4_FLASH_DATA12 , + +GPIO4A3_SHIFT =6 , +GPIO4A3_MASK =1 <<GPIO4A3_SHIFT , +GPIO4A3_GPIO =0 , +GPIO4A3_FLASH_DATA11 , + +GPIO4A2_SHIFT =4 , +GPIO4A2_MASK =1 <<GPIO4A2_SHIFT , +GPIO4A2_GPIO =0 , +GPIO4A2_FLASH_DATA10 , + +GPIO4A1_SHIFT =2 , +GPIO4A1_MASK =1 <<GPIO4A1_SHIFT , +GPIO4A1_GPIO =0 , +GPIO4A1_FLASH_DATA9 , + +GPIO4A0_SHIFT =0 , +GPIO4A0_MASK =1 <<GPIO4A0_SHIFT , +GPIO4A0_GPIO =0 , +GPIO4A0_FLASH_DATA8 + +}; + +/* GRF_GPIO4B_IOMUX */ +enum { +GPIO4B7_SHIFT =14 , +GPIO4B7_MASK =1 <<GPIO4B7_SHIFT , +GPIO4B7_GPIO =0 , +GPIO4B7_SPI0_CSN1 , + +GPIO4B6_SHIFT =12 , +GPIO4B6_MASK =1 <<GPIO4B6_SHIFT , +GPIO4B6_GPIO =0 , +GPIO4B6_FLASH_CSN7 , + +GPIO4B5_SHIFT =10 , +GPIO4B5_MASK =1 <<GPIO4B5_SHIFT , +GPIO4B5_GPIO =0 , +GPIO4B5_FLASH_CSN6 , + +GPIO4B4_SHIFT =8 , +GPIO4B4_MASK =1 <<GPIO4B4_SHIFT , +GPIO4B4_GPIO =0 , +GPIO4B4_FLASH_CSN5 , + +GPIO4B3_SHIFT =6 , +GPIO4B3_MASK =1 <<GPIO4B3_SHIFT , +GPIO4B3_GPIO =0 , +GPIO4B3_FLASH_CSN4 , + +GPIO4B2_SHIFT =4 , +GPIO4B2_MASK =3 <<GPIO4B2_SHIFT , +GPIO4B2_GPIO =0 , +GPIO4B2_FLASH_CSN3 , +GPIO4B2_EMMC_RSTN_OUT , + +GPIO4B1_SHIFT =2 , +GPIO4B1_MASK =3 <<GPIO4B1_SHIFT , +GPIO4B1_GPIO =0 , +GPIO4B1_FLASH_CSN2 , +GPIO4B1_EMMC_CMD , + +GPIO4B0_SHIFT =0 , +GPIO4B0_MASK =1 <<GPIO4B0_SHIFT , +GPIO4B0_GPIO =0 , +GPIO4B0_FLASH_CSN1 +}; + +/* GRF_SOC_CON0 */ +enum { +SMC_MUX_CON_SHIFT =13 , +SMC_MUX_CON_MASK =1 <<SMC_MUX_CON_SHIFT , + +NOC_REMAP_SHIFT =12 , +NOC_REMAP_MASK =1 <<NOC_REMAP_SHIFT , + +EMMC_FLASH_SEL_SHIFT =11 , +EMMC_FLASH_SEL_MASK =1 <<EMMC_FLASH_SEL_SHIFT , + +TZPC_REVISION_SHIFT =7 , +TZPC_REVISION_MASK =0xf <<TZPC_REVISION_SHIFT , + +L2CACHE_ACC_SHIFT =5 , +L2CACHE_ACC_MASK =3 <<L2CACHE_ACC_SHIFT , + +L2RD_WAIT_SHIFT =3 , +L2RD_WAIT_MASK =3 <<L2RD_WAIT_SHIFT , + +IMEMRD_WAIT_SHIFT =1 , +IMEMRD_WAIT_MASK =3 <<IMEMRD_WAIT_SHIFT , + +SOC_REMAP_SHIFT =0 , +SOC_REMAP_MASK =1 <<SOC_REMAP_SHIFT , +}; + +/* GRF_SOC_CON1 */ +enum { +RKI2C4_SEL_SHIFT =15 , +RKI2C4_SEL_MASK =1 <<RKI2C4_SEL_SHIFT , + +RKI2C3_SEL_SHIFT =14 , +RKI2C3_SEL_MASK =1 <<RKI2C3_SEL_SHIFT , + +RKI2C2_SEL_SHIFT =13 , +RKI2C2_SEL_MASK =1 <<RKI2C2_SEL_SHIFT , + +RKI2C1_SEL_SHIFT =12 , +RKI2C1_SEL_MASK =1 <<RKI2C1_SEL_SHIFT , + +RKI2C0_SEL_SHIFT =11 , +RKI2C0_SEL_MASK =1 <<RKI2C0_SEL_SHIFT , + +VCODEC_SEL_SHIFT =10 , +VCODEC_SEL_MASK =1 <<VCODEC_SEL_SHIFT , + +PERI_EMEM_PAUSE_SHIFT =9 , +PERI_EMEM_PAUSE_MASK =1 <<PERI_EMEM_PAUSE_SHIFT , + +PERI_USB_PAUSE_SHIFT =8 , +PERI_USB_PAUSE_MASK =1 <<PERI_USB_PAUSE_SHIFT , + +SMC_MUX_MODE_0_SHIFT =6 , +SMC_MUX_MODE_0_MASK =1 <<SMC_MUX_MODE_0_SHIFT , + +SMC_SRAM_MW_0_SHIFT =4 , +SMC_SRAM_MW_0_MASK =3 <<SMC_SRAM_MW_0_SHIFT , + +SMC_REMAP_0_SHIFT =3 , +SMC_REMAP_0_MASK =1 <<SMC_REMAP_0_SHIFT , + +SMC_A_GT_M0_SYNC_SHIFT =2 , +SMC_A_GT_M0_SYNC_MASK =1 <<SMC_A_GT_M0_SYNC_SHIFT , + +EMAC_SPEED_SHIFT =1 , +EMAC_SPEEC_MASK =1 <<EMAC_SPEED_SHIFT , + +EMAC_MODE_SHIFT =0 , +EMAC_MODE_MASK =1 <<EMAC_MODE_SHIFT , +}; + +/* GRF_SOC_CON2 */ +enum { + +MSCH4_MAINDDR3_SHIFT =7 , +MSCH4_MAINDDR3_MASK =1 <<MSCH4_MAINDDR3_SHIFT , +MSCH4_MAINDDR3_DDR3 =1 , + +EMAC_NEWRCV_EN_SHIFT =6 , +EMAC_NEWRCV_EN_MASK =1 <<EMAC_NEWRCV_EN_SHIFT , + +SW_ADDR15_EN_SHIFT =5 , +SW_ADDR15_EN_MASK =1 <<SW_ADDR15_EN_SHIFT , + +SW_ADDR16_EN_SHIFT =4 , +SW_ADDR16_EN_MASK =1 <<SW_ADDR16_EN_SHIFT , + +SW_ADDR17_EN_SHIFT =3 , +SW_ADDR17_EN_MASK =1 <<SW_ADDR17_EN_SHIFT , + +BANK2_TO_RANK_EN_SHIFT =2 , +BANK2_TO_RANK_EN_MASK =1 <<BANK2_TO_RANK_EN_SHIFT , + +RANK_TO_ROW15_EN_SHIFT =1 , +RANK_TO_ROW15_EN_MASK =1 <<RANK_TO_ROW15_EN_SHIFT , + +UPCTL_C_ACTIVE_IN_SHIFT =0 , +UPCTL_C_ACTIVE_IN_MASK =1 <<UPCTL_C_ACTIVE_IN_SHIFT , +UPCTL_C_ACTIVE_IN_MAY =0 , +UPCTL_C_ACTIVE_IN_WILL , +}; + +/* GRF_DDRC_CON0 */ +enum { +DTO_LB_SHIFT =11 , +DTO_LB_MASK =3 <<DTO_LB_SHIFT , + +DTO_TE_SHIFT =9 , +DTO_TE_MASK =3 <<DTO_TE_SHIFT , + +DTO_PDR_SHIFT =7 , +DTO_PDR_MASK =3 <<DTO_PDR_SHIFT , + +DTO_PDD_SHIFT =5 , +DTO_PDD_MASK =3 <<DTO_PDD_SHIFT , + +DTO_IOM_SHIFT =3 , +DTO_IOM_MASK =3 <<DTO_IOM_SHIFT , + +DTO_OE_SHIFT =1 , +DTO_OE_MASK =3 <<DTO_OE_SHIFT , + +ATO_AE_SHIFT =0 , +ATO_AE_MASK =1 <<ATO_AE_SHIFT , +}; +#endif
Signature · 1 line
2.7.4
PATCH v2 2/19 rockchip: rk3066: add rk3066 pinctrl driver
In reply to Paweł JaroszAdd driver supporting pin multiplexing on rk3066 platform.
---
Changes since v1:
- updated to shifted masks
- added nand support
arch/arm/include/asm/arch-rockchip/periph.h | 1 + drivers/pinctrl/Kconfig | 9 + drivers/pinctrl/rockchip/Makefile | 1 + drivers/pinctrl/rockchip/pinctrl_rk3066.c | 340 ++++++++++++++++++++++++++++ 4 files changed, 351 insertions(+) create mode 100644 drivers/pinctrl/rockchip/pinctrl_rk3066.c
arch/arm/include/asm/arch-rockchip/periph.h +1 -0
@@ -43,6 +43,7 @@ enum periph_id {PERIPH_ID_HDMI ,PERIPH_ID_GMAC ,PERIPH_ID_SFC , +PERIPH_ID_NAND , PERIPH_ID_COUNT,
drivers/pinctrl/Kconfig +9 -0
@@ -168,6 +168,15 @@ config PINCTRL_ROCKCHIP_RK3036 the GPIO definitions and pin control functions for each available multiplex function. +config PINCTRL_ROCKCHIP_RK3066 + bool "Rockchip rk3066 pin control driver" + depends on DM + help + Support pin multiplexing control on Rockchip rk3066 SoCs. The driver is + controlled by a device tree node which contains both the GPIO + definitions and pin control functions for each available multiplex + function. + config PINCTRL_ROCKCHIP_RK3188 bool "Rockchip rk3188 pin control driver" depends on DM
drivers/pinctrl/rockchip/Makefile +1 -0
@@ -6,6 +6,7 @@ # obj-$(CONFIG_PINCTRL_ROCKCHIP_RK3036) += pinctrl_rk3036.o +obj-$(CONFIG_PINCTRL_ROCKCHIP_RK3066) += pinctrl_rk3066.o obj-$(CONFIG_PINCTRL_ROCKCHIP_RK3188) += pinctrl_rk3188.o obj-$(CONFIG_PINCTRL_ROCKCHIP_RK322X) += pinctrl_rk322x.o obj-$(CONFIG_PINCTRL_ROCKCHIP_RK3288) += pinctrl_rk3288.o
drivers/pinctrl/rockchip/pinctrl_rk3066.c new file +340 -0
340 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH v2 3/19 rockchip: rk3066: add sysreset driver
In reply to Paweł JaroszAdd support for system reset for rk3066 socs.
---
Changes since v1:
- updated to shifted masks
drivers/sysreset/Makefile | 1 + drivers/sysreset/sysreset_rk3066.c | 61 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 drivers/sysreset/sysreset_rk3066.c
drivers/sysreset/Makefile +1 -0
@@ -12,6 +12,7 @@ obj-$(CONFIG_SYSRESET_WATCHDOG) += sysreset_watchdog.o ifndef CONFIG_SPL_BUILD obj-$(CONFIG_ROCKCHIP_RK3036) += sysreset_rk3036.o endif +obj-$(CONFIG_ROCKCHIP_RK3066) += sysreset_rk3066.o obj-$(CONFIG_ROCKCHIP_RK3188) += sysreset_rk3188.o obj-$(CONFIG_ROCKCHIP_RK3288) += sysreset_rk3288.o obj-$(CONFIG_ROCKCHIP_RK3328) += sysreset_rk3328.o
drivers/sysreset/sysreset_rk3066.c new file +61 -0
61 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH v2 4/19 rockchip: rk3066: add clock driver for rk3066 soc
In reply to Paweł JaroszAdd clock driver for rk3066 platform.
---
Changes since v1:
- updated to shifted masks
- moved clk init to tpl
arch/arm/include/asm/arch-rockchip/cru_rk3066.h | 189 ++++++++ drivers/clk/rockchip/Makefile | 1 + drivers/clk/rockchip/clk_rk3066.c | 587 ++++++++++++++++++++++++ 3 files changed, 777 insertions(+) create mode 100644 arch/arm/include/asm/arch-rockchip/cru_rk3066.h create mode 100644 drivers/clk/rockchip/clk_rk3066.c
arch/arm/include/asm/arch-rockchip/cru_rk3066.h new file +189 -0
@@ -0,0 +1,189 @@ +/* +* (C) Copyright 2016 Heiko Stuebner <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ +#ifndef _ASM_ARCH_CRU_RK3066_H +#define _ASM_ARCH_CRU_RK3066_H + +#define OSC_HZ (24 * 1000 * 1000) + +#define APLL_HZ (1416 * 1000000) +#define APLL_SAFE_HZ (600 * 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 rk3066_clk_priv { +struct rk3066_grf *grf; +struct rk3066_cru *cru; +ulong rate; +bool has_bwadj; +}; + +struct rk3066_cru { +struct rk3066_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 (rk3066_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 <<A9_CORE_DIV_SHIFT , +CORE_PLL_SHIFT =8 , +CORE_PLL_MASK =1 <<CORE_PLL_SHIFT , +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 <<CORE_PERI_DIV_SHIFT , + +/* aclk_cpu pll selection */ +CPU_ACLK_PLL_SHIFT =5 , +CPU_ACLK_PLL_MASK =1 <<CPU_ACLK_PLL_SHIFT , +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 <<A9_CPU_DIV_SHIFT , +}; + +/* 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 <<AHB2APB_DIV_SHIFT , + +/* 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_PCLK_DIV_SHIFT , + +/* cpu_hclk_div: aclk_cpu:hclk_cpu = 1:1, 2:1 or 4:1 */ +CPU_HCLK_DIV_SHIFT =8 , +CPU_HCLK_DIV_MASK =3 <<CPU_HCLK_DIV_SHIFT , + +/* 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 <<CORE_ACLK_DIV_SHIFT , +}; + +/* CRU_CLKSEL10_CON */ +enum { +PERI_SEL_PLL_SHIFT =15 , +PERI_SEL_PLL_MASK =1 <<PERI_SEL_PLL_SHIFT , +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 <<PERI_PCLK_DIV_SHIFT , + +/* 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_HCLK_DIV_SHIFT , + +/* peri aclk div: aclk_peri = periph_src / (peri_aclk_div + 1) */ +PERI_ACLK_DIV_SHIFT =0 , +PERI_ACLK_DIV_MASK =0x1f <<PERI_ACLK_DIV_SHIFT , +}; +/* CRU_CLKSEL11_CON */ +enum { +MMC0_DIV_SHIFT =0 , +MMC0_DIV_MASK =0x3f <<MMC0_DIV_SHIFT , +}; + +/* CRU_CLKSEL12_CON */ +enum { +UART_PLL_SHIFT =15 , +UART_PLL_MASK =1 <<UART_PLL_SHIFT , +UART_PLL_SELECT_GENERAL =0 , +UART_PLL_SELECT_CODEC , + +EMMC_DIV_SHIFT =8 , +EMMC_DIV_MASK =0x3f <<EMMC_DIV_SHIFT , + +SDIO_DIV_SHIFT =0 , +SDIO_DIV_MASK =0x3f <<SDIO_DIV_SHIFT , +}; + +/* CRU_CLKSEL25_CON */ +enum { +SPI1_DIV_SHIFT =8 , +SPI1_DIV_MASK =0x7f <<SPI1_DIV_SHIFT , + +SPI0_DIV_SHIFT =0 , +SPI0_DIV_MASK =0x7f <<SPI0_DIV_SHIFT , +}; + +/* CRU_MODE_CON */ +enum { +GPLL_MODE_SHIFT =12 , +GPLL_MODE_MASK =3 <<GPLL_MODE_SHIFT , +GPLL_MODE_SLOW =0 , +GPLL_MODE_NORMAL , +GPLL_MODE_DEEP , + +CPLL_MODE_SHIFT =8 , +CPLL_MODE_MASK =3 <<CPLL_MODE_SHIFT , +CPLL_MODE_SLOW =0 , +CPLL_MODE_NORMAL , +CPLL_MODE_DEEP , + +DPLL_MODE_SHIFT =4 , +DPLL_MODE_MASK =3 <<DPLL_MODE_SHIFT , +DPLL_MODE_SLOW =0 , +DPLL_MODE_NORMAL , +DPLL_MODE_DEEP , + +APLL_MODE_SHIFT =0 , +APLL_MODE_MASK =3 <<APLL_MODE_SHIFT , +APLL_MODE_SLOW =0 , +APLL_MODE_NORMAL , +APLL_MODE_DEEP , +}; + +/* CRU_APLL_CON0 */ +enum { +CLKR_SHIFT =8 , +CLKR_MASK =0x3f <<CLKR_SHIFT , + +CLKOD_SHIFT =0 , +CLKOD_MASK =0x3f <<CLKOD_SHIFT , +}; + +/* CRU_APLL_CON1 */ +enum { +CLKF_SHIFT =0 , +CLKF_MASK =0x1fff <<CLKF_SHIFT , +}; + +#endif
drivers/clk/rockchip/Makefile +1 -0
@@ -5,6 +5,7 @@ # obj-$(CONFIG_ROCKCHIP_RK3036) += clk_rk3036.o +obj-$(CONFIG_ROCKCHIP_RK3066) += clk_rk3066.o obj-$(CONFIG_ROCKCHIP_RK3188) += clk_rk3188.o obj-$(CONFIG_ROCKCHIP_RK322X) += clk_rk322x.o obj-$(CONFIG_ROCKCHIP_RK3288) += clk_rk3288.o
drivers/clk/rockchip/clk_rk3066.c new file +587 -0
587 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH v2 5/19 rockchip: rk3066: add rk3066 platform devicetree file
In reply to Paweł Jaroszrk3066 peripherials include usb, i2c, pwm, gpio, sdio, sdmmc, emmc, spi, watchdog and uart
---
Changes since v1:
- added nand dts node
arch/arm/dts/rk3066a.dtsi | 707 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 707 insertions(+) create mode 100644 arch/arm/dts/rk3066a.dtsi
arch/arm/dts/rk3066a.dtsi new file +707 -0
@@ -0,0 +1,707 @@ +/* + * Copyright (c) 2013 MundoReader S.L. + * Author: Heiko Stuebner <[email protected]> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/pinctrl/rockchip.h> +#include <dt-bindings/clock/rk3066a-cru.h> +#include "rk3xxx.dtsi" + +/ { + compatible = "rockchip,rk3066a"; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + enable-method = "rockchip,rk3066-smp"; + + cpu0: cpu at 0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + next-level-cache = <&L2>; + reg = <0x0>; + operating-points = < + /* kHz uV */ + 1416000 1300000 + 1200000 1175000 + 1008000 1125000 + 816000 1125000 + 600000 1100000 + 504000 1100000 + 312000 1075000 + >; + clock-latency = <40000>; + clocks = <&cru ARMCLK>; + }; + cpu at 1 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + next-level-cache = <&L2>; + reg = <0x1>; + }; + }; + + sram: sram at 10080000 { + compatible = "mmio-sram"; + reg = <0x10080000 0x10000>; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x10080000 0x10000>; + + smp-sram at 0 { + compatible = "rockchip,rk3066-smp-sram"; + reg = <0x0 0x50>; + }; + }; + + i2s0: i2s at 10118000 { + compatible = "rockchip,rk3066-i2s"; + reg = <0x10118000 0x2000>; + interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s0_bus>; + dmas = <&dmac1_s 4>, <&dmac1_s 5>; + dma-names = "tx", "rx"; + clock-names = "i2s_hclk", "i2s_clk"; + clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>; + rockchip,playback-channels = <8>; + rockchip,capture-channels = <2>; + status = "disabled"; + }; + + i2s1: i2s at 1011a000 { + compatible = "rockchip,rk3066-i2s"; + reg = <0x1011a000 0x2000>; + interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s1_bus>; + dmas = <&dmac1_s 6>, <&dmac1_s 7>; + dma-names = "tx", "rx"; + clock-names = "i2s_hclk", "i2s_clk"; + clocks = <&cru HCLK_I2S1>, <&cru SCLK_I2S1>; + rockchip,playback-channels = <2>; + rockchip,capture-channels = <2>; + status = "disabled"; + }; + + i2s2: i2s at 1011c000 { + compatible = "rockchip,rk3066-i2s"; + reg = <0x1011c000 0x2000>; + interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s2_bus>; + dmas = <&dmac1_s 9>, <&dmac1_s 10>; + dma-names = "tx", "rx"; + clock-names = "i2s_hclk", "i2s_clk"; + clocks = <&cru HCLK_I2S2>, <&cru SCLK_I2S2>; + rockchip,playback-channels = <2>; + rockchip,capture-channels = <2>; + status = "disabled"; + }; + + nandc: nandc at 10500000 { + compatible = "rockchip,nandc"; + reg = <0x10500000 0x2000>; + interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>; + clock-names = "hclk"; + clocks = <&cru HCLK_NANDC0>; + status = "disabled"; + }; + + cru: clock-controller at 20000000 { + compatible = "rockchip,rk3066a-cru"; + reg = <0x20000000 0x1000>; + rockchip,grf = <&grf>; + u-boot,dm-pre-reloc; + + #clock-cells = <1>; + #reset-cells = <1>; + assigned-clocks = <&cru PLL_CPLL>, <&cru PLL_GPLL>, + <&cru ACLK_CPU>, <&cru HCLK_CPU>, + <&cru PCLK_CPU>, <&cru ACLK_PERI>, + <&cru HCLK_PERI>, <&cru PCLK_PERI>; + assigned-clock-rates = <400000000>, <594000000>, + <300000000>, <150000000>, + <75000000>, <300000000>, + <150000000>, <75000000>; + }; + + timer at 2000e000 { + compatible = "snps,dw-apb-timer-osc"; + reg = <0x2000e000 0x100>; + interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru SCLK_TIMER2>, <&cru PCLK_TIMER2>; + clock-names = "timer", "pclk"; + }; + + efuse: efuse at 20010000 { + compatible = "rockchip,rk3066a-efuse"; + reg = <0x20010000 0x4000>; + #address-cells = <1>; + #size-cells = <1>; + clocks = <&cru PCLK_EFUSE>; + clock-names = "pclk_efuse"; + + cpu_leakage: cpu_leakage at 17 { + reg = <0x17 0x1>; + }; + }; + + timer at 20038000 { + compatible = "snps,dw-apb-timer-osc"; + reg = <0x20038000 0x100>; + interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru SCLK_TIMER0>, <&cru PCLK_TIMER0>; + clock-names = "timer", "pclk"; + }; + + timer at 2003a000 { + compatible = "snps,dw-apb-timer-osc"; + reg = <0x2003a000 0x100>; + interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru SCLK_TIMER1>, <&cru PCLK_TIMER1>; + clock-names = "timer", "pclk"; + }; + + tsadc: tsadc at 20060000 { + compatible = "rockchip,rk3066-tsadc"; + reg = <0x20060000 0x100>; + clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>; + clock-names = "saradc", "apb_pclk"; + interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; + #io-channel-cells = <1>; + resets = <&cru SRST_TSADC>; + reset-names = "saradc-apb"; + status = "disabled"; + }; + + usbphy: phy { + compatible = "rockchip,rk3066a-usb-phy", "rockchip,rk3288-usb-phy"; + rockchip,grf = <&grf>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + + usbphy0: usb-phy at 17c { + #phy-cells = <0>; + reg = <0x17c>; + clocks = <&cru SCLK_OTGPHY0>; + clock-names = "phyclk"; + #clock-cells = <0>; + }; + + usbphy1: usb-phy at 188 { + #phy-cells = <0>; + reg = <0x188>; + clocks = <&cru SCLK_OTGPHY1>; + clock-names = "phyclk"; + #clock-cells = <0>; + }; + }; + + pinctrl: pinctrl { + compatible = "rockchip,rk3066a-pinctrl"; + rockchip,grf = <&grf>; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + gpio0: gpio0 at 20034000 { + compatible = "rockchip,gpio-bank"; + reg = <0x20034000 0x100>; + interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru PCLK_GPIO0>; + + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpio1: gpio1 at 2003c000 { + compatible = "rockchip,gpio-bank"; + reg = <0x2003c000 0x100>; + interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru PCLK_GPIO1>; + + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpio2: gpio2 at 2003e000 { + compatible = "rockchip,gpio-bank"; + reg = <0x2003e000 0x100>; + interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru PCLK_GPIO2>; + + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpio3: gpio3 at 20080000 { + compatible = "rockchip,gpio-bank"; + reg = <0x20080000 0x100>; + interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru PCLK_GPIO3>; + + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpio4: gpio4 at 20084000 { + compatible = "rockchip,gpio-bank"; + reg = <0x20084000 0x100>; + interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru PCLK_GPIO4>; + + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpio6: gpio6 at 2000a000 { + compatible = "rockchip,gpio-bank"; + reg = <0x2000a000 0x100>; + interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru PCLK_GPIO6>; + + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + pcfg_pull_default: pcfg_pull_default { + bias-pull-pin-default; + }; + + pcfg_pull_none: pcfg_pull_none { + bias-disable; + }; + + emac { + emac_xfer: emac-xfer { + rockchip,pins = <RK_GPIO1 16 RK_FUNC_2 &pcfg_pull_none>, /* mac_clk */ + <RK_GPIO1 17 RK_FUNC_2 &pcfg_pull_none>, /* tx_en */ + <RK_GPIO1 18 RK_FUNC_2 &pcfg_pull_none>, /* txd1 */ + <RK_GPIO1 19 RK_FUNC_2 &pcfg_pull_none>, /* txd0 */ + <RK_GPIO1 20 RK_FUNC_2 &pcfg_pull_none>, /* rx_err */ + <RK_GPIO1 21 RK_FUNC_2 &pcfg_pull_none>, /* crs_dvalid */ + <RK_GPIO1 22 RK_FUNC_2 &pcfg_pull_none>, /* rxd1 */ + <RK_GPIO1 23 RK_FUNC_2 &pcfg_pull_none>; /* rxd0 */ + }; + + emac_mdio: emac-mdio { + rockchip,pins = <RK_GPIO1 24 RK_FUNC_2 &pcfg_pull_none>, /* mac_md */ + <RK_GPIO1 25 RK_FUNC_2 &pcfg_pull_none>; /* mac_mdclk */ + }; + }; + + emmc { + emmc_clk: emmc-clk { + rockchip,pins = <RK_GPIO3 31 RK_FUNC_2 &pcfg_pull_default>; + }; + + emmc_cmd: emmc-cmd { + rockchip,pins = <RK_GPIO4 9 RK_FUNC_2 &pcfg_pull_default>; + }; + + emmc_rst: emmc-rst { + rockchip,pins = <RK_GPIO4 10 RK_FUNC_2 &pcfg_pull_default>; + }; + + /* + * The data pins are shared between nandc and emmc and + * not accessible through pinctrl. Also they should've + * been already set correctly by firmware, as + * flash/emmc is the boot-device. + */ + }; + + i2c0 { + i2c0_xfer: i2c0-xfer { + rockchip,pins = <RK_GPIO2 28 RK_FUNC_1 &pcfg_pull_none>, + <RK_GPIO2 29 RK_FUNC_1 &pcfg_pull_none>; + }; + }; + + i2c1 { + i2c1_xfer: i2c1-xfer { + rockchip,pins = <RK_GPIO2 30 RK_FUNC_1 &pcfg_pull_none>, + <RK_GPIO2 31 RK_FUNC_1 &pcfg_pull_none>; + }; + }; + + i2c2 { + i2c2_xfer: i2c2-xfer { + rockchip,pins = <RK_GPIO3 0 RK_FUNC_1 &pcfg_pull_none>, + <RK_GPIO3 1 RK_FUNC_1 &pcfg_pull_none>; + }; + }; + + i2c3 { + i2c3_xfer: i2c3-xfer { + rockchip,pins = <RK_GPIO3 2 RK_FUNC_2 &pcfg_pull_none>, + <RK_GPIO3 3 RK_FUNC_2 &pcfg_pull_none>; + }; + }; + + i2c4 { + i2c4_xfer: i2c4-xfer { + rockchip,pins = <RK_GPIO3 4 RK_FUNC_1 &pcfg_pull_none>, + <RK_GPIO3 5 RK_FUNC_1 &pcfg_pull_none>; + }; + }; + + pwm0 { + pwm0_out: pwm0-out { + rockchip,pins = <RK_GPIO0 3 RK_FUNC_1 &pcfg_pull_none>; + }; + }; + + pwm1 { + pwm1_out: pwm1-out { + rockchip,pins = <RK_GPIO0 4 RK_FUNC_1 &pcfg_pull_none>; + }; + }; + + pwm2 { + pwm2_out: pwm2-out { + rockchip,pins = <RK_GPIO0 30 RK_FUNC_1 &pcfg_pull_none>; + }; + }; + + pwm3 { + pwm3_out: pwm3-out { + rockchip,pins = <RK_GPIO0 31 RK_FUNC_1 &pcfg_pull_none>; + }; + }; + + spi0 { + spi0_clk: spi0-clk { + rockchip,pins = <RK_GPIO1 5 RK_FUNC_2 &pcfg_pull_default>; + }; + spi0_cs0: spi0-cs0 { + rockchip,pins = <RK_GPIO1 4 RK_FUNC_2 &pcfg_pull_default>; + }; + spi0_tx: spi0-tx { + rockchip,pins = <RK_GPIO1 7 RK_FUNC_2 &pcfg_pull_default>; + }; + spi0_rx: spi0-rx { + rockchip,pins = <RK_GPIO1 6 RK_FUNC_2 &pcfg_pull_default>; + }; + spi0_cs1: spi0-cs1 { + rockchip,pins = <RK_GPIO4 15 RK_FUNC_1 &pcfg_pull_default>; + }; + }; + + spi1 { + spi1_clk: spi1-clk { + rockchip,pins = <RK_GPIO2 19 RK_FUNC_2 &pcfg_pull_default>; + }; + spi1_cs0: spi1-cs0 { + rockchip,pins = <RK_GPIO2 20 RK_FUNC_2 &pcfg_pull_default>; + }; + spi1_rx: spi1-rx { + rockchip,pins = <RK_GPIO2 22 RK_FUNC_2 &pcfg_pull_default>; + }; + spi1_tx: spi1-tx { + rockchip,pins = <RK_GPIO2 21 RK_FUNC_2 &pcfg_pull_default>; + }; + spi1_cs1: spi1-cs1 { + rockchip,pins = <RK_GPIO2 23 RK_FUNC_2 &pcfg_pull_default>; + }; + }; + + uart0 { + uart0_xfer: uart0-xfer { + rockchip,pins = <RK_GPIO1 0 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO1 1 RK_FUNC_1 &pcfg_pull_default>; + }; + + uart0_cts: uart0-cts { + rockchip,pins = <RK_GPIO1 2 RK_FUNC_1 &pcfg_pull_default>; + }; + + uart0_rts: uart0-rts { + rockchip,pins = <RK_GPIO1 3 RK_FUNC_1 &pcfg_pull_default>; + }; + }; + + uart1 { + uart1_xfer: uart1-xfer { + rockchip,pins = <RK_GPIO1 4 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO1 5 RK_FUNC_1 &pcfg_pull_default>; + }; + + uart1_cts: uart1-cts { + rockchip,pins = <RK_GPIO1 6 RK_FUNC_1 &pcfg_pull_default>; + }; + + uart1_rts: uart1-rts { + rockchip,pins = <RK_GPIO1 7 RK_FUNC_1 &pcfg_pull_default>; + }; + }; + + uart2 { + uart2_xfer: uart2-xfer { + rockchip,pins = <RK_GPIO1 8 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO1 9 RK_FUNC_1 &pcfg_pull_default>; + }; + /* no rts / cts for uart2 */ + }; + + uart3 { + uart3_xfer: uart3-xfer { + rockchip,pins = <RK_GPIO3 27 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO3 28 RK_FUNC_1 &pcfg_pull_default>; + }; + + uart3_cts: uart3-cts { + rockchip,pins = <RK_GPIO3 29 RK_FUNC_1 &pcfg_pull_default>; + }; + + uart3_rts: uart3-rts { + rockchip,pins = <RK_GPIO3 30 RK_FUNC_1 &pcfg_pull_default>; + }; + }; + + sd0 { + sd0_clk: sd0-clk { + rockchip,pins = <RK_GPIO3 8 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd0_cmd: sd0-cmd { + rockchip,pins = <RK_GPIO3 9 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd0_cd: sd0-cd { + rockchip,pins = <RK_GPIO3 14 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd0_wp: sd0-wp { + rockchip,pins = <RK_GPIO3 15 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd0_bus1: sd0-bus-width1 { + rockchip,pins = <RK_GPIO3 10 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd0_bus4: sd0-bus-width4 { + rockchip,pins = <RK_GPIO3 10 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO3 11 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO3 12 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO3 13 RK_FUNC_1 &pcfg_pull_default>; + }; + }; + + sd1 { + sd1_clk: sd1-clk { + rockchip,pins = <RK_GPIO3 21 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd1_cmd: sd1-cmd { + rockchip,pins = <RK_GPIO3 16 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd1_cd: sd1-cd { + rockchip,pins = <RK_GPIO3 22 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd1_wp: sd1-wp { + rockchip,pins = <RK_GPIO3 23 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd1_bus1: sd1-bus-width1 { + rockchip,pins = <RK_GPIO3 17 RK_FUNC_1 &pcfg_pull_default>; + }; + + sd1_bus4: sd1-bus-width4 { + rockchip,pins = <RK_GPIO3 17 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO3 18 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO3 19 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO3 20 RK_FUNC_1 &pcfg_pull_default>; + }; + }; + + i2s0 { + i2s0_bus: i2s0-bus { + rockchip,pins = <RK_GPIO0 7 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 8 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 9 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 10 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 11 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 12 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 13 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 14 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 15 RK_FUNC_1 &pcfg_pull_default>; + }; + }; + + i2s1 { + i2s1_bus: i2s1-bus { + rockchip,pins = <RK_GPIO0 16 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 17 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 18 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 19 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 20 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 21 RK_FUNC_1 &pcfg_pull_default>; + }; + }; + + i2s2 { + i2s2_bus: i2s2-bus { + rockchip,pins = <RK_GPIO0 24 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 25 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 26 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 27 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 28 RK_FUNC_1 &pcfg_pull_default>, + <RK_GPIO0 29 RK_FUNC_1 &pcfg_pull_default>; + }; + }; + }; +}; + +&grf { + compatible = "rockchip,rk3066-grf", "syscon"; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_xfer>; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_xfer>; +}; + +&i2c2 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_xfer>; +}; + +&i2c3 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c3_xfer>; +}; + +&i2c4 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c4_xfer>; +}; + +&mmc0 { + clock-frequency = <50000000>; + dmas = <&dmac2 1>; + dma-names = "rx-tx"; + max-frequency = <50000000>; + pinctrl-names = "default"; + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4>; + u-boot,dm-pre-reloc; +}; + +&mmc1 { + dmas = <&dmac2 3>; + dma-names = "rx-tx"; + pinctrl-names = "default"; + pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_cd &sd1_bus4>; +}; + +&emmc { + dmas = <&dmac2 4>; + dma-names = "rx-tx"; +}; + +&pwm0 { + pinctrl-names = "default"; + pinctrl-0 = <&pwm0_out>; +}; + +&pwm1 { + pinctrl-names = "default"; + pinctrl-0 = <&pwm1_out>; +}; + +&pwm2 { + pinctrl-names = "default"; + pinctrl-0 = <&pwm2_out>; +}; + +&pwm3 { + pinctrl-names = "default"; + pinctrl-0 = <&pwm3_out>; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>; +}; + +&spi1 { + pinctrl-names = "default"; + pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>; +}; + +&uart0 { + compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart"; + dmas = <&dmac1_s 0>, <&dmac1_s 1>; + dma-names = "tx", "rx"; + pinctrl-names = "default"; + pinctrl-0 = <&uart0_xfer>; +}; + +&uart1 { + compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart"; + dmas = <&dmac1_s 2>, <&dmac1_s 3>; + dma-names = "tx", "rx"; + pinctrl-names = "default"; + pinctrl-0 = <&uart1_xfer>; +}; + +&uart2 { + compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart"; + dmas = <&dmac2 6>, <&dmac2 7>; + dma-names = "tx", "rx"; + pinctrl-names = "default"; + pinctrl-0 = <&uart2_xfer>; +}; + +&uart3 { + compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart"; + dmas = <&dmac2 8>, <&dmac2 9>; + dma-names = "tx", "rx"; + pinctrl-names = "default"; + pinctrl-0 = <&uart3_xfer>; +}; + +&wdt { + compatible = "rockchip,rk3066-wdt", "snps,dw-wdt"; +}; + +&emac { + compatible = "rockchip,rk3066-emac"; +};
Signature · 1 line
2.7.4
PATCH v2 6/19 rockchip: rk3066: add core support
In reply to Paweł JaroszAdd core skeleton for rk3066
---
Changes since v1:
- updated to shifted masks
- moved syscon.h below spl.h
- changed error to debug and return error reason
- changed Cortex-A7 to Cortex-A9
- added nand support
- added dfu support
- removed dram_init
- reset timer before enable
- moved configs to board config file
- moved arm clk setup to tpl
- moved ddr setup to tpl
- moved to boot device bootrom
arch/arm/mach-rockchip/Kconfig | 16 +++ arch/arm/mach-rockchip/Makefile | 4 + arch/arm/mach-rockchip/rk3066-board-spl.c | 139 ++++++++++++++++++++++++ arch/arm/mach-rockchip/rk3066-board-tpl.c | 90 ++++++++++++++++ arch/arm/mach-rockchip/rk3066-board.c | 150 ++++++++++++++++++++++++++ arch/arm/mach-rockchip/rk3066/Kconfig | 31 ++++++ arch/arm/mach-rockchip/rk3066/Makefile | 8 ++ arch/arm/mach-rockchip/rk3066/clk_rk3066.c | 33 ++++++ arch/arm/mach-rockchip/rk3066/syscon_rk3066.c | 54 ++++++++++ include/configs/rk3066_common.h | 99 +++++++++++++++++ 10 files changed, 624 insertions(+) create mode 100644 arch/arm/mach-rockchip/rk3066-board-spl.c create mode 100644 arch/arm/mach-rockchip/rk3066-board-tpl.c create mode 100644 arch/arm/mach-rockchip/rk3066-board.c create mode 100644 arch/arm/mach-rockchip/rk3066/Kconfig create mode 100644 arch/arm/mach-rockchip/rk3066/Makefile create mode 100644 arch/arm/mach-rockchip/rk3066/clk_rk3066.c create mode 100644 arch/arm/mach-rockchip/rk3066/syscon_rk3066.c create mode 100644 include/configs/rk3066_common.h
arch/arm/mach-rockchip/Kconfig +16 -0
@@ -11,6 +11,21 @@ config ROCKCHIP_RK3036 and video codec support. Peripherals include Gigabit Ethernet, USB2 host and OTG, SDIO, I2S, UART, SPI, I2C and PWMs. +config ROCKCHIP_RK3066 + bool "Support Rockchip RK3066" + select CPU_V7 + select SUPPORT_SPL + select SUPPORT_TPL + select SPL + select TPL + select BOARD_LATE_INIT + select ROCKCHIP_BROM_HELPER + help + The Rockchip RK3066 is a ARM-based SoC with a dual-core Cortex-A9 + including NEON and GPU, Mali-400 graphics, several DDR3 options + and video codec support. Peripherals include ethernet, USB2 host + and OTG, SDIO, I2S, UART, SPI, I2C and PWMs. + config ROCKCHIP_RK3188 bool "Support Rockchip RK3188" select CPU_V7
@@ -164,6 +179,7 @@ config SPL_MMC_SUPPORT default y if !SPL_ROCKCHIP_BACK_TO_BROM source "arch/arm/mach-rockchip/rk3036/Kconfig" +source "arch/arm/mach-rockchip/rk3066/Kconfig" source "arch/arm/mach-rockchip/rk3188/Kconfig" source "arch/arm/mach-rockchip/rk322x/Kconfig" source "arch/arm/mach-rockchip/rk3288/Kconfig"
arch/arm/mach-rockchip/Makefile +4 -0
@@ -11,10 +11,12 @@ obj-spl-$(CONFIG_ROCKCHIP_BROM_HELPER) += bootrom.o save_boot_param.o obj-tpl-$(CONFIG_ROCKCHIP_BROM_HELPER) += bootrom.o save_boot_param.o +obj-tpl-$(CONFIG_ROCKCHIP_RK3066) += rk3066-board-tpl.o obj-tpl-$(CONFIG_ROCKCHIP_RK3188) += rk3188-board-tpl.o obj-tpl-$(CONFIG_ROCKCHIP_RK3368) += rk3368-board-tpl.o obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o +obj-spl-$(CONFIG_ROCKCHIP_RK3066) += rk3066-board-spl.o obj-spl-$(CONFIG_ROCKCHIP_RK3188) += rk3188-board-spl.o obj-spl-$(CONFIG_ROCKCHIP_RK322X) += rk322x-board-spl.o obj-spl-$(CONFIG_ROCKCHIP_RK3288) += rk3288-board-spl.o
@@ -22,6 +24,7 @@ obj-spl-$(CONFIG_ROCKCHIP_RK3368) += rk3368-board-spl.o spl-boot-order.o obj-spl-$(CONFIG_ROCKCHIP_RK3399) += rk3399-board-spl.o spl-boot-order.o ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) +obj-$(CONFIG_ROCKCHIP_RK3066) += rk3066-board.o obj-$(CONFIG_ROCKCHIP_RK3188) += rk3188-board.o obj-$(CONFIG_ROCKCHIP_RK322X) += rk322x-board.o obj-$(CONFIG_ROCKCHIP_RK3288) += rk3288-board.o
@@ -35,6 +38,7 @@ obj-y += rk_timer.o endif obj-$(CONFIG_ROCKCHIP_RK3036) += rk3036/ +obj-$(CONFIG_ROCKCHIP_RK3066) += rk3066/ ifndef CONFIG_TPL_BUILD obj-$(CONFIG_ROCKCHIP_RK3188) += rk3188/ endif
arch/arm/mach-rockchip/rk3066-board-spl.c new file +139 -0
139 lines not on this page · raw message
arch/arm/mach-rockchip/rk3066-board-tpl.c new file +90 -0
90 lines not on this page · raw message
arch/arm/mach-rockchip/rk3066-board.c new file +150 -0
150 lines not on this page · raw message
arch/arm/mach-rockchip/rk3066/Kconfig new file +31 -0
@@ -0,0 +1,31 @@ +if ROCKCHIP_RK3066 + +config TARGET_MK808_RK3066 + bool "MK808_RK3066" + help + MK808 is a tv stick with usb host and otg, microsd card slot, hdmi and wifi. + +config SYS_SOC + default "rockchip" + +config SYS_MALLOC_F_LEN + default 0x0800 + +config SPL_LIBCOMMON_SUPPORT + default y + +config SPL_LIBGENERIC_SUPPORT + default y + +config SPL_SERIAL_SUPPORT + default y + +config TPL_LIBCOMMON_SUPPORT + default y + +config TPL_LIBGENERIC_SUPPORT + default y + +source "board/rikomagic/mk808_rk3066/Kconfig" + +endif
arch/arm/mach-rockchip/rk3066/Makefile new file +8 -0
@@ -0,0 +1,8 @@ +# +# Copyright (c) 2017 Paweł Jarosz <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += clk_rk3066.o +obj-y += syscon_rk3066.o
arch/arm/mach-rockchip/rk3066/clk_rk3066.c new file +33 -0
@@ -0,0 +1,33 @@ +/* +* Copyright (C) 2016 Google, Inc +* Written by Simon Glass <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> +#include <dm.h> +#include <syscon.h> +#include <asm/arch/clock.h> +#include <asm/arch/cru_rk3066.h> + +int rockchip_get_clk (struct udevice **devp) +{ +return uclass_get_device_by_driver (UCLASS_CLK , +DM_GET_DRIVER (rockchip_rk3066a_cru), devp); +} + +void *rockchip_get_cru (void ) +{ +struct rk3066_clk_priv *priv; +struct udevice *dev; +int ret; + + ret =rockchip_get_clk (&dev); +if (ret) +return ERR_PTR (ret); + + priv =dev_get_priv (dev); + +return priv->cru; +}
arch/arm/mach-rockchip/rk3066/syscon_rk3066.c new file +54 -0
54 lines not on this page · raw message
include/configs/rk3066_common.h new file +99 -0
99 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH v2 7/19 rockchip: rk3066: add mk808 board files
In reply to Paweł Jaroszmk808 is a tv stick with two usb ports, micro sd card slot, hdmi and nand onboard.
---
Changes since v1:
- added nand support
- dropped spl of-platdata
arch/arm/dts/Makefile | 1 + arch/arm/dts/rk3066a-mk808.dts | 189 ++++++++++++++++++++++++++++ board/rikomagic/mk808_rk3066/Kconfig | 15 +++ board/rikomagic/mk808_rk3066/MAINTAINERS | 6 + board/rikomagic/mk808_rk3066/Makefile | 7 ++ board/rikomagic/mk808_rk3066/mk808_rk3066.c | 10 ++ configs/mk808_defconfig | 114 +++++++++++++++++ include/configs/mk808_rk3066.h | 61 +++++++++ 8 files changed, 403 insertions(+) create mode 100644 arch/arm/dts/rk3066a-mk808.dts create mode 100644 board/rikomagic/mk808_rk3066/Kconfig create mode 100644 board/rikomagic/mk808_rk3066/MAINTAINERS create mode 100644 board/rikomagic/mk808_rk3066/Makefile create mode 100644 board/rikomagic/mk808_rk3066/mk808_rk3066.c create mode 100644 configs/mk808_defconfig create mode 100644 include/configs/mk808_rk3066.h
arch/arm/dts/Makefile +1 -0
@@ -29,6 +29,7 @@ dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \ dtb-$(CONFIG_EXYNOS7420) += exynos7420-espresso7420.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += \ rk3036-sdk.dtb \ + rk3066a-mk808.dtb \ rk3188-radxarock.dtb \ rk3288-evb.dtb \ rk3288-fennec.dtb \
arch/arm/dts/rk3066a-mk808.dts new file +189 -0
189 lines not on this page · raw message
board/rikomagic/mk808_rk3066/Kconfig new file +15 -0
@@ -0,0 +1,15 @@ +if TARGET_MK808_RK3066 + +config SYS_BOARD + default "mk808_rk3066" + +config SYS_VENDOR + default "rikomagic" + +config SYS_CONFIG_NAME + default "mk808_rk3066" + +config BOARD_SPECIFIC_OPTIONS # dummy + def_bool y + +endif
board/rikomagic/mk808_rk3066/MAINTAINERS new file +6 -0
@@ -0,0 +1,6 @@ +MK808 +M: Paweł Jarosz <[email protected]> +S: Maintained +F: include/configs/mk808_rk3066.h +F: configs/mk808-rk3066_defconfig +F: board/rikomagic/mk808_rk3066
board/rikomagic/mk808_rk3066/Makefile new file +7 -0
@@ -0,0 +1,7 @@ +# +# Copyright (c) 2017 Paweł‚ Jarosz <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += mk808_rk3066.o
board/rikomagic/mk808_rk3066/mk808_rk3066.c new file +10 -0
@@ -0,0 +1,10 @@ +/* +* (C) Copyright 2017 Paweł Jarosz <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> + +DECLARE_GLOBAL_DATA_PTR ; +
configs/mk808_defconfig new file +114 -0
114 lines not on this page · raw message
include/configs/mk808_rk3066.h new file +61 -0
61 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH v2 8/19 rockchip: rk3066: add sdram driver
In reply to Paweł JaroszAdd rockchip rk3066 sdram driver
---
Changes since v1:
- use common rockchip_sdram_size
- moved sdram init from sdram_init.c
arch/arm/mach-rockchip/rk3066/Makefile | 1 + arch/arm/mach-rockchip/rk3066/sdram_rk3066.c | 943 +++++++++++++++++++++++++++ 2 files changed, 944 insertions(+) create mode 100644 arch/arm/mach-rockchip/rk3066/sdram_rk3066.c
arch/arm/mach-rockchip/rk3066/Makefile +1 -0
@@ -5,4 +5,5 @@ # obj-y += clk_rk3066.o +obj-y += sdram_rk3066.o obj-y += syscon_rk3066.o
arch/arm/mach-rockchip/rk3066/sdram_rk3066.c new file +943 -0
943 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH v2 9/19 mtd: nand: add support for the Sandisk SDTNQGAMA chip
In reply to Paweł JaroszSandisk SDTNQGAMA is a 8GB size, 3.3V 8 bit chip with 16KB page size, 1KB write size and 40 bit ecc support
---
Changes since v1:
- none
drivers/mtd/nand/nand_ids.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/mtd/nand/nand_ids.c +3 -0
@@ -58,6 +58,9 @@ struct nand_flash_dev nand_flash_ids[] = { {"TC58NVG6D2 64G 3.3V 8-bit" , { .id = {0x98, 0xde, 0x94, 0x82, 0x76, 0x56, 0x04, 0x20} }, SZ_8K, SZ_8K, SZ_2M, 0, 8, 640, NAND_ECC_INFO(40, SZ_1K) }, + {"SDTNQGAMA 64G 3.3V 8-bit", + { .id = {0x45, 0xde, 0x94, 0x93, 0x76, 0x57} }, + SZ_16K, SZ_8K, SZ_4M, 0, 6, 1280, NAND_ECC_INFO(40, SZ_1K) }, {"SDTNRGAMA 64G 3.3V 8-bit", { .id = {0x45, 0xde, 0x94, 0x93, 0x76, 0x50} }, SZ_16K, SZ_8K, SZ_4M, 0, 6, 1280, NAND_ECC_INFO(40, SZ_1K) },
Signature · 1 line
2.7.4
PATCH v2 10/19 mtd: nand: add the rockchip nand controller driver
In reply to Paweł JaroszAdd basic Rockchip nand driver.
Driver in current state has 16, 24, 40, 60 per 1024B BCH/ECC ability and 8 bit asynchronous flash interface support. Other features will come later.
---
Changes since v1:
- none
drivers/mtd/nand/Kconfig | 6 + drivers/mtd/nand/Makefile | 1 + drivers/mtd/nand/rockchip_nand.c | 660 +++++++++++++++++++++++++++++++++++++++ include/fdtdec.h | 1 + lib/fdtdec.c | 1 + 5 files changed, 669 insertions(+) create mode 100644 drivers/mtd/nand/rockchip_nand.c
drivers/mtd/nand/Kconfig +6 -0
@@ -66,6 +66,12 @@ config NAND_PXA3XX This enables the driver for the NAND flash device found on PXA3xx processors (NFCv1) and also on Armada 370/XP (NFCv2). +config NAND_ROCKCHIP + bool "Support for NAND on Rockchip SoCs" + select SYS_NAND_SELF_INIT + ---help--- + Enable support for Rockchip nand. + config NAND_SUNXI bool "Support for NAND on Allwinner SoCs" depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
drivers/mtd/nand/Makefile +1 -0
@@ -65,6 +65,7 @@ obj-$(CONFIG_NAND_OMAP_ELM) += omap_elm.o obj-$(CONFIG_NAND_PLAT) += nand_plat.o obj-$(CONFIG_NAND_SUNXI) += sunxi_nand.o obj-$(CONFIG_NAND_ZYNQ) += zynq_nand.o +obj-$(CONFIG_NAND_ROCKCHIP) += rockchip_nand.o else # minimal SPL drivers
drivers/mtd/nand/rockchip_nand.c new file +660 -0
660 lines not on this page · raw message
include/fdtdec.h +1 -0
@@ -157,6 +157,7 @@ enum fdt_compat_id {COMPAT_ALTERA_SOCFPGA_F2SDR0 ,/* SoCFPGA fpga2SDRAM0 bridge */ COMPAT_ALTERA_SOCFPGA_F2SDR1 ,/* SoCFPGA fpga2SDRAM1 bridge */ COMPAT_ALTERA_SOCFPGA_F2SDR2 ,/* SoCFPGA fpga2SDRAM2 bridge */ +COMPAT_ROCKCHIP_NANDC ,/* Rockchip NAND controller */ COMPAT_COUNT, };
lib/fdtdec.c +1 -0
@@ -70,6 +70,7 @@ static const char * const compat_names[COMPAT_COUNT] = {COMPAT (ALTERA_SOCFPGA_F2SDR0 ,"altr,socfpga-fpga2sdram0-bridge" ),COMPAT (ALTERA_SOCFPGA_F2SDR1 ,"altr,socfpga-fpga2sdram1-bridge" ),COMPAT (ALTERA_SOCFPGA_F2SDR2 ,"altr,socfpga-fpga2sdram2-bridge" ), + COMPAT(ROCKCHIP_NANDC, "rockchip,nandc"), };const char *fdtdec_get_compatible (enum fdt_compat_id id)
Signature · 1 line
2.7.4
PATCH v2 11/19 rockchip: mkimage: add support for rockchip nand boot image
In reply to Paweł JaroszThe Rockchip boot ROM requires a particular file format for booting from NAND:
* It starts with 512-byte, rc4 encoded header and is aligned to nand page size
* Then first 2KB of first stage loader (tpl) aligned to nand page size
* n empty pages
* second 2KB of first stage loader (tpl) aligned to nand page size
* n empty pages
* ...
* first 2KB of second stage loader (spl) aligned to nand page size
* n empty pages
* second 2KB of first stage loader (spl) aligned to nand page size
* n empty pages
* ...
Size of spl and tpl must be aligned to 2KB.
example usage for nand with page size 16384 and one empty page in iteration:
# mkimage -n rk3066 -T rknand -d ./u-boot/tpl/u-boot-tpl.bin:./u-boot/spl/u-boot-spl.bin -X 16384,1 out
---
Changes since v1:
- none
common/image.c | 1 + include/image.h | 1 + tools/Makefile | 2 +- tools/imagetool.h | 1 + tools/mkimage.c | 8 ++- tools/rkcommon.c | 10 ++-- tools/rkcommon.h | 10 +++- tools/rknand.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/rksd.c | 2 +- tools/rkspi.c | 2 +- 10 files changed, 183 insertions(+), 10 deletions(-) create mode 100644 tools/rknand.c
common/image.c +1 -0
@@ -167,6 +167,7 @@ static const table_entry_t uimage_type[] = { { IH_TYPE_FPGA, "fpga", "FPGA Image" }, { IH_TYPE_TEE, "tee", "Trusted Execution Environment Image",}, { IH_TYPE_FIRMWARE_IVT, "firmware_ivt", "Firmware with HABv4 IVT" }, + { IH_TYPE_RKNAND, "rknand", "Rockchip NAND Boot Image" }, { -1, "", "", }, };
include/image.h +1 -0
@@ -269,6 +269,7 @@ enum {IH_TYPE_VYBRIDIMAGE ,/* VYBRID .vyb Image */ IH_TYPE_TEE ,/* Trusted Execution Environment OS Image */ IH_TYPE_FIRMWARE_IVT ,/* Firmware Image with HABv4 IVT */ +IH_TYPE_RKNAND ,/* Rockchip NAND Boot Image */ IH_TYPE_COUNT, /* Number of image types */ };
tools/Makefile +1 -1
@@ -79,7 +79,7 @@ RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/rsa/, \ rsa-sign.o rsa-verify.o rsa-checksum.o \ rsa-mod-exp.o) -ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rksd.o rkspi.o +ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rknand.o rksd.o rkspi.o # common objs for dumpimage and mkimage dumpimage-mkimage-objs := aisimage.o \
tools/imagetool.h +1 -0
@@ -77,6 +77,7 @@ struct image_tool_params {bool quiet;/* Don't output text in normal operation */ unsigned int external_offset;/* Add padding to external data */ const char *engine_id;/* Engine to use for signing */ +char *extraparams;/* Extra parameters for img creation (-X) */ };/*
tools/mkimage.c +6 -2
@@ -144,7 +144,7 @@ static void process_args(int argc, char **argv)int opt;while ((opt =getopt (argc, argv, -"a:A:b:c:C:d:D:e:Ef:Fk:i:K:ln:N:p:O:rR:qsT:vVx" )) !=-1 ) { +"a:A:b:c:C:d:D:e:Ef:Fk:i:K:ln:N:p:O:rR:qsT:vVxX:" )) !=-1 ) {switch (opt) {case 'a' : params.addr =strtoull (optarg, &ptr,16 );
@@ -279,6 +279,9 @@ static void process_args(int argc, char **argv)case 'x' : params.xflag++;break ; +case 'X' : + params.extraparams = optarg; +break ;default :usage ("Invalid option" ); }
@@ -416,7 +419,8 @@ int main(int argc, char **argv)exit (retval); } -if ((params.type !=IH_TYPE_MULTI ) && (params.type !=IH_TYPE_SCRIPT )) { +if ((params.type !=IH_TYPE_MULTI ) && (params.type !=IH_TYPE_SCRIPT ) && + (params.type !=IH_TYPE_RKNAND )) { dfd =open (params.datafile,O_RDONLY |O_BINARY );if (dfd <0 ) { fprintf(stderr, "%s: Can't open %s: %s\n",
tools/rkcommon.c +6 -4
@@ -73,6 +73,7 @@ struct spl_info {static struct spl_info spl_infos[] = { {"rk3036" ,"RK30" ,0x1000 , false, false }, + {"rk3066" ,"RK30" ,0x8000 , true, false }, {"rk3188" ,"RK31" ,0x8000 -0x800 , true, false }, {"rk322x" ,"RK32" ,0x8000 -0x1000 , false, false }, {"rk3288" ,"RK32" ,0x8000 , false, false },
@@ -167,7 +168,7 @@ bool rkcommon_spl_is_boot0(struct image_tool_params *params)return info->spl_boot0; } -static void rkcommon_set_header0 (void *buf,uint file_size, +static void rkcommon_set_header0 (void *buf,uint file_size,uint max_size,struct image_tool_params *params) {struct header0_info *hdr = buf;
@@ -194,12 +195,13 @@ static void rkcommon_set_header0(void *buf, uint file_size,* see https://lists.denx.de/pipermail/u-boot/2017-May/293267.html * for a more detailed explanation by Andy Yan */ - hdr->init_boot_size = hdr->init_size +RK_MAX_BOOT_SIZE /RK_BLK_SIZE ; + hdr->init_boot_size = hdr->init_size +DIV_ROUND_UP (max_size,RK_BLK_SIZE ); + hdr->init_boot_size =ROUND (hdr->init_boot_size,4 );rc4_encode (buf,RK_BLK_SIZE , rc4_key); } -int rkcommon_set_header (void *buf,uint file_size, +int rkcommon_set_header (void *buf,uint file_size,uint max_size,struct image_tool_params *params) {struct header1_info *hdr = buf +RK_SPL_HDR_START ;
@@ -207,7 +209,7 @@ int rkcommon_set_header(void *buf, uint file_size,if (file_size >rkcommon_get_spl_size (params))return -ENOSPC ; -rkcommon_set_header0 (buf, file_size, params); +rkcommon_set_header0 (buf, file_size, max_size, params);/* Set up the SPL name (i.e. copy spl_hdr over) */ memcpy (&hdr->magic,rkcommon_get_spl_hdr (params),RK_SPL_HDR_SIZE );
tools/rkcommon.h +9 -1
@@ -45,6 +45,14 @@ const char *rkcommon_get_spl_hdr(struct image_tool_params *params);int rkcommon_get_spl_size (struct image_tool_params *params);/** +* rkcommon_spl_is_boot0() - is magic included in spl +* +* Returns true if magic (for example RK30) is included in spl +*/ + +bool rkcommon_spl_is_boot0 (struct image_tool_params *params); + +/** * rkcommon_set_header() - set up the header for a Rockchip boot image * * This sets up a 2KB header which can be interpreted by the Rockchip boot ROM.
@@ -53,7 +61,7 @@ int rkcommon_get_spl_size(struct image_tool_params *params);* @file_size: Size of the file we want the boot ROM to load, in bytes * @return 0 if OK, -ENOSPC if too large */ -int rkcommon_set_header (void *buf,uint file_size, +int rkcommon_set_header (void *buf,uint file_size,uint max_size,struct image_tool_params *params);/**
tools/rknand.c new file +156 -0
156 lines not on this page · raw message
tools/rksd.c +1 -1
@@ -26,7 +26,7 @@ static void rksd_set_header(void *buf, struct stat *sbuf, int ifd,* header). */ size = params->file_size -RK_SPL_HDR_START ; - ret =rkcommon_set_header (buf, size, params); + ret =rkcommon_set_header (buf, size,RK_MAX_BOOT_SIZE , params);if (ret) {/* TODO(sjg at chromium.org): This method should return an error */ printf("Warning: SPL image is too large (size %#x) and will "
tools/rkspi.c +1 -1
@@ -25,7 +25,7 @@ static void rkspi_set_header(void *buf, struct stat *sbuf, int ifd,int ret; size = params->orig_file_size; - ret =rkcommon_set_header (buf, size, params); + ret =rkcommon_set_header (buf, size,RK_MAX_BOOT_SIZE , params);debug ("size %x\n" , size);if (ret) {/* TODO(sjg at chromium.org): This method should return an error */
Signature · 1 line
2.7.4
PATCH v2 11/19 rockchip: mkimage: add support for rockchip nand boot image
Hi Pawel,
Quoted 18 lines · Paweł Jarosz
The Rockchip boot ROM requires a particular file format for booting from NAND:
* It starts with 512-byte, rc4 encoded header and is aligned to nand page size
* Then first 2KB of first stage loader (tpl) aligned to nand page size
* n empty pages* second 2KB of first stage loader (tpl) aligned to nand page size
* n empty pages* ...
* first 2KB of second stage loader (spl) aligned to nand page size
* n empty pages* second 2KB of first stage loader (spl) aligned to nand page size
* n empty pages
Quoted 7 lines
* ...
Size of spl and tpl must be aligned to 2KB.
example usage for nand with page size 16384 and one empty page in iteration:
# mkimage -n rk3066 -T rknand -d ./u-boot/tpl/u-boot-tpl.bin:./u-boot/spl/u-boot-spl.bin -X 16384,1 out
Please can you document the -X parameter in the mkimage man page?
Also please split the support for -X into a separate patch from the one that adds your nand support. You are changing common code.
Quoted 61 lines
Signed-off-by Paweł Jarosz <[email protected]>---
Changes since v1:
- nonecommon/image.c | 1 + include/image.h | 1 + tools/Makefile | 2 +- tools/imagetool.h | 1 + tools/mkimage.c | 8 ++- tools/rkcommon.c | 10 ++-- tools/rkcommon.h | 10 +++- tools/rknand.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/rksd.c | 2 +- tools/rkspi.c | 2 +- 10 files changed, 183 insertions(+), 10 deletions(-) create mode 100644 tools/rknand.ccommon/image.c +1
-0@@ -167,6 +167,7 @@ static const table_entry_t uimage_type[] = { { IH_TYPE_FPGA, "fpga", "FPGA Image" }, { IH_TYPE_TEE, "tee", "Trusted Execution Environment Image",}, { IH_TYPE_FIRMWARE_IVT, "firmware_ivt", "Firmware with HABv4 IVT" }, + { IH_TYPE_RKNAND, "rknand", "Rockchip NAND Boot Image" }, { -1, "", "", }, };include/image.h +1
-0@@ -269,6 +269,7 @@ enum {IH_TYPE_VYBRIDIMAGE ,/* VYBRID .vyb Image */ IH_TYPE_TEE ,/* Trusted Execution Environment OS Image */ IH_TYPE_FIRMWARE_IVT ,/* Firmware Image with HABv4 IVT */ +IH_TYPE_RKNAND ,/* Rockchip NAND Boot Image */ IH_TYPE_COUNT, /* Number of image types */ };tools/Makefile +1
-1@@ -79,7 +79,7 @@ RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/rsa/, \ rsa-sign.o rsa-verify.o rsa-checksum.o \ rsa-mod-exp.o) -ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rksd.o rkspi.o +ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rknand.o rksd.o rkspi.o # common objs for dumpimage and mkimage dumpimage-mkimage-objs := aisimage.o \tools/imagetool.h +0
-0
tools/imagetool.h struct image_tool_params { · line 80
Quoted 4 lines
tools/imagetool.h +1
-0@@ -77,6 +77,7 @@ struct image_tool_params {bool quiet;/* Don't output text in normal operation */ unsigned int external_offset;/* Add padding to external data */ const char *engine_id;/* Engine to use for signing */ +char *extraparams;/* Extra parameters for img creation (-X) */
Can you please expand this comment? What are the parameters for? What should they be set to?
Quoted 133 lines
tools/imagetool.h +0
-0};/* tools/mkimage.c +6
-2@@ -144,7 +144,7 @@ static void process_args(int argc, char **argv)int opt;while ((opt =getopt (argc, argv, -"a:A:b:c:C:d:D:e:Ef:Fk:i:K:ln:N:p:O:rR:qsT:vVx" )) !=-1 ) { +"a:A:b:c:C:d:D:e:Ef:Fk:i:K:ln:N:p:O:rR:qsT:vVxX:" )) !=-1 ) {switch (opt) {case 'a' : params.addr =strtoull (optarg, &ptr,16 );@@ -279,6 +279,9 @@ static void process_args(int argc, char **argv)case 'x' : params.xflag++;break ; +case 'X' : + params.extraparams = optarg; +break ;default :usage ("Invalid option" ); }@@ -416,7 +419,8 @@ int main(int argc, char **argv)exit (retval); } -if ((params.type !=IH_TYPE_MULTI ) && (params.type !=IH_TYPE_SCRIPT )) { +if ((params.type !=IH_TYPE_MULTI ) && (params.type !=IH_TYPE_SCRIPT ) && + (params.type !=IH_TYPE_RKNAND )) { dfd =open (params.datafile,O_RDONLY |O_BINARY );if (dfd <0 ) { fprintf(stderr, "%s: Can't open %s: %s\n",tools/rkcommon.c +6
-4@@ -73,6 +73,7 @@ struct spl_info {static struct spl_info spl_infos[] = { {"rk3036" ,"RK30" ,0x1000 , false, false }, + {"rk3066" ,"RK30" ,0x8000 , true, false }, {"rk3188" ,"RK31" ,0x8000 -0x800 , true, false }, {"rk322x" ,"RK32" ,0x8000 -0x1000 , false, false }, {"rk3288" ,"RK32" ,0x8000 , false, false },@@ -167,7 +168,7 @@ bool rkcommon_spl_is_boot0(struct image_tool_params *params)return info->spl_boot0; } -static void rkcommon_set_header0 (void *buf,uint file_size, +static void rkcommon_set_header0 (void *buf,uint file_size,uint max_size,struct image_tool_params *params) {struct header0_info *hdr = buf;@@ -194,12 +195,13 @@ static void rkcommon_set_header0(void *buf, uint file_size,* see https://lists.denx.de/pipermail/u-boot/2017-May/293267.html * for a more detailed explanation by Andy Yan */ - hdr->init_boot_size = hdr->init_size +RK_MAX_BOOT_SIZE /RK_BLK_SIZE ; + hdr->init_boot_size = hdr->init_size +DIV_ROUND_UP (max_size,RK_BLK_SIZE ); + hdr->init_boot_size =ROUND (hdr->init_boot_size,4 );rc4_encode (buf,RK_BLK_SIZE , rc4_key); } -int rkcommon_set_header (void *buf,uint file_size, +int rkcommon_set_header (void *buf,uint file_size,uint max_size,struct image_tool_params *params) {struct header1_info *hdr = buf +RK_SPL_HDR_START ;@@ -207,7 +209,7 @@ int rkcommon_set_header(void *buf, uint file_size,if (file_size >rkcommon_get_spl_size (params))return -ENOSPC ; -rkcommon_set_header0 (buf, file_size, params); +rkcommon_set_header0 (buf, file_size, max_size, params);/* Set up the SPL name (i.e. copy spl_hdr over) */ memcpy (&hdr->magic,rkcommon_get_spl_hdr (params),RK_SPL_HDR_SIZE );tools/rkcommon.h +9
-1@@ -45,6 +45,14 @@ const char *rkcommon_get_spl_hdr(struct image_tool_params *params);int rkcommon_get_spl_size (struct image_tool_params *params);/** +* rkcommon_spl_is_boot0() - is magic included in spl +* +* Returns true if magic (for example RK30) is included in spl +*/ + +bool rkcommon_spl_is_boot0 (struct image_tool_params *params); + +/** * rkcommon_set_header() - set up the header for a Rockchip boot image * * This sets up a 2KB header which can be interpreted by the Rockchip boot ROM. @@ -53,7 +61,7 @@ int rkcommon_get_spl_size(struct image_tool_params *params);* @file_size: Size of the file we want the boot ROM to load, in bytes * @return 0 if OK, -ENOSPC if too large */ -int rkcommon_set_header (void *buf,uint file_size, +int rkcommon_set_header (void *buf,uint file_size,uint max_size,struct image_tool_params *params);/** tools/rknand.c new file +17
-0@@ -0,0 +1,156 @@ +/* +* Copyright (c) 2017 Paweł Jarosz <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include "imagetool.h" +#include <image.h> +#include <rc4.h> +#include "mkimage.h" +#include "rkcommon.h" + +enum { +RKNAND_SECT_LEN =RK_BLK_SIZE *4 , +}; + +struct rknand_info {
tools/rknand.c line 27
Quoted 10 lines
tools/rknand.c new file +10
-0+uint32_t pagesize; +uint32_t skippages; +uint32_t tplsize; +uint32_t splsize; +uint32_t tplpaddedsize; +uint32_t splpaddedsize; +uint32_t itersize; +uint32_t tplsplsize; +char *tplfile; +char *splfile;
Please comment these members
tools/rknand.c line 33
Quoted 6 lines
tools/rknand.c new file +6
-0+}; + +struct rknand_info ninfo; + +static uint32_t rknand_get_file_size (char *filename) +{
Can you make the code common with imagetool_get_filesize()?
Quoted 12 lines
tools/rknand.c new file +12
-0+int dfd; +struct stat sbuf; + + dfd =open (filename,O_RDONLY |O_BINARY ); +if (dfd <0 ) { +fprintf (stderr,"Can't open %s: %s\n" , filename,strerror (errno)); +exit (EXIT_FAILURE ); + } + +if (fstat (dfd, &sbuf) <0 ) { +fprintf (stderr,"Can't stat %s: %s\n" , filename,strerror (errno)); +exit (EXIT_FAILURE );
tools/rknand.c line 55
Quoted 10 lines
tools/rknand.c new file +10
-0+ } + +close (dfd); + +return sbuf.st_size; +} + +static void rknand_fill_ninfo (struct image_tool_params *params) +{ +sscanf (params->extraparams,"%u,%u" , &ninfo.pagesize, &ninfo.skippages);
You should check errors here, and print a useful message on failure. You also need to return an error if invalid.
Quoted 42 lines
tools/rknand.c new file +42
-0+ + ninfo.tplfile = params->datafile; +if ((ninfo.splfile =strchr (params->datafile,':' )) !=NULL ) { + *ninfo.splfile ='\0' ; + ninfo.splfile +=1 ; + } + + ninfo.tplsize =rknand_get_file_size (ninfo.tplfile); + ninfo.splsize =rknand_get_file_size (ninfo.splfile); + + ninfo.tplpaddedsize =ROUND (ninfo.tplsize + + (rkcommon_spl_is_boot0 (params) ?0 :4 ),RKNAND_SECT_LEN ); + + ninfo.splpaddedsize =ROUND (ninfo.splsize,RKNAND_SECT_LEN ); + + ninfo.itersize = ninfo.pagesize * (ninfo.skippages +1 ); + ninfo.tplsplsize = ((ninfo.tplpaddedsize + ninfo.splpaddedsize) / +RKNAND_SECT_LEN ) * ninfo.itersize; +} + +static void rknand_set_header (void *buf,struct stat *sbuf,int ifd, +struct image_tool_params *params) +{ +int sector, sploffset, splfd, ret; + + ret =rkcommon_set_header (buf, ninfo.tplsize, ninfo.splsize, params); +if (ret) { +printf ("Warning: TPL image is too large (size %#x) and will " +"not boot\n" , ninfo.tplsize); + } + +if ((splfd =open (ninfo.splfile,O_RDONLY |O_BINARY )) <0 ) { +fprintf (stderr,"%s: Can't open %s: %s\n" , + params->cmdname, ninfo.splfile,strerror (errno)); +exit (EXIT_FAILURE ); + } + + sploffset =RKNAND_SECT_LEN + ninfo.tplpaddedsize; +if (read (splfd, buf + sploffset, ninfo.splsize) != ninfo.splsize) { +fprintf (stderr,"%s: Read error on %s: %s\n" , + params->cmdname, ninfo.splfile,strerror (errno)); +exit (EXIT_FAILURE );
tools/rknand.c line 107
Quoted 10 lines
tools/rknand.c new file +10
-0+ } +close (splfd); + +if (rkcommon_need_rc4_spl (params)) +rkcommon_rc4_encode_spl (buf, sploffset, ninfo.splpaddedsize); + +/* +* Spread the image out so we only use the first 2KB of each pagesize +* region. This is a feature of the NAND format required by the Rockchip +* boot ROM.
It seems similar to what SPI does. Can we make the code common?
Quoted 78 lines
tools/rknand.c new file +49
-0+*/ +for (sector = ninfo.tplsplsize / ninfo.itersize -1 ; sector >=0 ; sector--) { +memmove (buf + sector * ninfo.itersize + ninfo.pagesize, + buf + (sector +1 ) *RKNAND_SECT_LEN ,RKNAND_SECT_LEN ); + +if (sector < (ninfo.tplsplsize / ninfo.itersize -1 )) +memset (buf + sector * ninfo.itersize + ninfo.pagesize + +RKNAND_SECT_LEN ,0xFF , ninfo.itersize - +RKNAND_SECT_LEN ); + } +memset (buf +RKNAND_SECT_LEN ,0xFF , ninfo.pagesize -RKNAND_SECT_LEN ); +memset (buf + ninfo.tplsplsize - ninfo.pagesize +RKNAND_SECT_LEN ,0xFF , + ninfo.pagesize -RKNAND_SECT_LEN ); +} + +static int rknand_check_image_type (uint8_t type) +{ +if (type ==IH_TYPE_RKNAND ) +return EXIT_SUCCESS ; +else +return EXIT_FAILURE ; +} + +static int rknand_vrec_header (struct image_tool_params *params, +struct image_type_params *tparams) +{ +rknand_fill_ninfo (params); +rkcommon_vrec_header (params, tparams,RKNAND_SECT_LEN ); + +return ninfo.tplsplsize - tparams->header_size - ninfo.tplsize; +} + +/* +* rknand parameters +*/ +U_BOOT_IMAGE_TYPE ( + rknand, +"Rockchip NAND Boot Image support" , +0 , +NULL , + rkcommon_check_params, + rkcommon_verify_header, + rkcommon_print_header, + rknand_set_header, +NULL , + rknand_check_image_type, +NULL , + rknand_vrec_header +);tools/rksd.c +1
-1@@ -26,7 +26,7 @@ static void rksd_set_header(void *buf, struct stat *sbuf, int ifd,* header). */ size = params->file_size -RK_SPL_HDR_START ; - ret =rkcommon_set_header (buf, size, params); + ret =rkcommon_set_header (buf, size,RK_MAX_BOOT_SIZE , params);if (ret) {/* TODO(sjg at chromium.org): This method should return an error */ printf("Warning: SPL image is too large (size %#x) and will "tools/rkspi.c +1
-2@@ -25,7 +25,7 @@ static void rkspi_set_header(void *buf, struct stat *sbuf, int ifd,int ret; size = params->orig_file_size; - ret =rkcommon_set_header (buf, size, params); + ret =rkcommon_set_header (buf, size,RK_MAX_BOOT_SIZE , params);debug ("size %x\n" , size);if (ret) {/* TODO(sjg at chromium.org): This method should return an error */ --2.7.4
Quoted 4 lines
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot
Regards,
Simon
PATCH v2 12/19 rockchip: board: rk3066: convert board_usb_init to live tree functions
In reply to Paweł JaroszUse live tree functions to fill dwc2_plat_otg_data structure in board_usb_init.
---
Changes since v1:
- none
arch/arm/mach-rockchip/rk3066-board.c | 52 +++++------------------------------ 1 file changed, 7 insertions(+), 45 deletions(-)
arch/arm/mach-rockchip/rk3066-board.c +7 -45
@@ -90,55 +90,17 @@ static struct dwc2_plat_otg_data rk3066_otg_data = {int board_usb_init (int index,enum usb_init_type init) { -int node, phy_node; -const char *mode; -bool matched = false; -const void *blob = gd->fdt_blob; -u32 grf_phy_offset; - -/* find the usb_otg node */ - node =fdt_node_offset_by_compatible (blob,-1 , -"rockchip,rk3066-usb" ); - -while (node >0 ) { - mode =fdt_getprop (blob, node,"dr_mode" ,NULL ); -if (mode &&strcmp (mode,"otg" ) ==0 ) { - matched = true; -break ; - } - - node =fdt_node_offset_by_compatible (blob, node, -"rockchip,rk3066-usb" ); - } -if (!matched) { -debug ("Not found usb_otg device\n" ); -return -ENODEV ; - } - rk3066_otg_data.regs_otg =fdtdec_get_addr (blob, node,"reg" ); +ofnode otg_node; +u32 reg; - node =fdtdec_lookup_phandle (blob, node,"phys" ); -if (node <=0 ) { -debug ("Not found usb phy device\n" ); + otg_node =ofnode_path ("/usb@10180000" ); +if (!ofnode_valid (otg_node)) { +debug ("Not found usb otg device\n" );return -ENODEV ; } - phy_node =fdt_parent_offset (blob, node); -if (phy_node <=0 ) { -debug ("Not found usb phy device\n" ); -return -ENODEV ; - } - - rk3066_otg_data.phy_of_node = phy_node; - grf_phy_offset =fdtdec_get_addr (blob, node,"reg" ); - - node =fdt_node_offset_by_compatible (blob,-1 , -"rockchip,rk3066-grf" ); -if (node <=0 ) { -debug ("Not found grf device\n" ); -return -ENODEV ; - } - rk3066_otg_data.regs_phy = grf_phy_offset + -fdtdec_get_addr (blob, node,"reg" ); +ofnode_read_u32 (otg_node,"reg" , ®); + rk3066_otg_data.regs_otg = reg;return dwc2_udc_probe (&rk3066_otg_data); }
Signature · 1 line
2.7.4
PATCH v2 13/19 ARM: dts: rockchip: prefer u-boot, dm-pre-reloc rather than u-boot, dm-spl
In reply to Paweł Jaroszrk3xxx.dtsi is used by rk3188 and rk3066. rk3188 uses alocated data in spl but rk3066 needs it in tpl.
---
Changes since v1:
- none
arch/arm/dts/rk3xxx.dtsi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
arch/arm/dts/rk3xxx.dtsi +4 -4
@@ -135,7 +135,7 @@ }; noc: syscon at 10128000 { - u-boot,dm-spl; + u-boot,dm-pre-reloc; compatible = "rockchip,rk3188-noc", "syscon"; reg = <0x10128000 0x2000>; };
@@ -218,13 +218,13 @@ pmu: pmu at 20004000 { compatible = "rockchip,rk3066-pmu", "syscon"; reg = <0x20004000 0x100>; - u-boot,dm-spl; + u-boot,dm-pre-reloc; }; grf: grf at 20008000 { compatible = "syscon"; reg = <0x20008000 0x200>; - u-boot,dm-spl; + u-boot,dm-pre-reloc; }; dmc: dmc at 20020000 {
@@ -238,7 +238,7 @@ 0x20040000 0x294>; clocks = <&cru PCLK_DDRUPCTL>, <&cru PCLK_PUBL>; clock-names = "pclk_ddrupctl", "pclk_publ"; - u-boot,dm-spl; + u-boot,dm-pre-reloc; }; i2c0: i2c at 2002d000 {
Signature · 1 line
2.7.4
Heiko Stübner
maintainerPATCH v2 13/19 ARM: dts: rockchip: prefer u-boot, dm-pre-reloc rather than u-boot, dm-spl
Hi Pawel,
Am Freitag, 11. August 2017, 22:57:29 CEST schrieb Paweł Jarosz:
Quoted 16 lines
rk3xxx.dtsiis used by rk3188 and rk3066. rk3188 uses alocated data in spl but rk3066 needs it in tpl.Signed-off-by Paweł Jarosz <[email protected]>---
Changes since v1:
- nonearch/arm/dts/rk3xxx.dtsi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)arch/arm/dts/rk3xxx.dtsi +0
-0
arch/arm/dts/rk3xxx.dtsi line 138
Quoted 5 lines
arch/arm/dts/rk3xxx.dtsi +1
-1@@ -135,7 +135,7 @@ }; noc: syscon at 10128000 { - u-boot,dm-spl; + u-boot,dm-pre-reloc;
That probably won't work on rk3188. I haven't looked to closely on the rk3188 support for a while, but there we used the TPL for the single jump back to the bootloader after reading the 1KB of initial code.
So with the code as is, this would make the rk3188 TPL most likely to big.
As both the rk3066 and rk3188 are very similar, I'd guess the best option would be to just adapt the rk3188 to you newer rk3066 approach, so that they don't diverge to much. Especially as the rk3188 has the same nand controller and people may want to boot of on-chip nand on the rk3188 in the future as well.
Heiko
Quoted 28 lines
arch/arm/dts/rk3xxx.dtsi +3
-3compatible = "rockchip,rk3188-noc", "syscon"; reg = <0x10128000 0x2000>; };@@ -218,13 +218,13 @@ pmu: pmu at 20004000 { compatible = "rockchip,rk3066-pmu", "syscon"; reg = <0x20004000 0x100>; - u-boot,dm-spl; + u-boot,dm-pre-reloc; }; grf: grf at 20008000 { compatible = "syscon"; reg = <0x20008000 0x200>; - u-boot,dm-spl; + u-boot,dm-pre-reloc; }; dmc: dmc at 20020000 {@@ -238,7 +238,7 @@ 0x20040000 0x294>; clocks = <&cru PCLK_DDRUPCTL>, <&cru PCLK_PUBL>; clock-names = "pclk_ddrupctl", "pclk_publ"; - u-boot,dm-spl; + u-boot,dm-pre-reloc; }; i2c0: i2c at 2002d000 {
PATCH v2 14/19 mmc: dw_mmc: support transfer mode autodetection
In reply to Paweł Jaroszdw_mmc supports two transfer modes in u-boot: idma and fifo.
This patch adds autodetection of transfer mode and eliminates setting this in host config struct
---
Changes since v1:
- none
drivers/mmc/dw_mmc.c | 8 ++++++++ include/dwmmc.h | 4 ++++ 2 files changed, 12 insertions(+)
drivers/mmc/dw_mmc.c +8 -0
@@ -428,6 +428,7 @@ static int dwmci_set_ios(struct mmc *mmc)static int dwmci_init (struct mmc *mmc) {struct dwmci_host *host = mmc->priv; +uint32_t use_dma;if (host->board_init) host->board_init (host);
@@ -439,6 +440,13 @@ static int dwmci_init(struct mmc *mmc)return -EIO ; } + use_dma =SDMMC_GET_TRANS_MODE (dwmci_readl (host,DWMCI_HCON )); +if (use_dma ==DMA_INTERFACE_IDMA ) { + host->fifo_mode =0 ; + }else { + host->fifo_mode =1 ; + } +/* Enumerate at 400KHz */ dwmci_setup_bus (host, mmc->cfg->f_min);
include/dwmmc.h +4 -0
@@ -115,6 +115,10 @@#define RX_WMARK_SHIFT 16#define RX_WMARK_MASK (0xfff << RX_WMARK_SHIFT) +/* HCON Register */ +#define DMA_INTERFACE_IDMA (0x0) +#define SDMMC_GET_TRANS_MODE (x) (((x)>>16) & 0x3) +#define DWMCI_IDMAC_OWN (1 << 31)#define DWMCI_IDMAC_CH (1 << 4)#define DWMCI_IDMAC_FS (1 << 3)
Signature · 1 line
2.7.4
PATCH v2 15/19 mmc: dw_mmc: rockchip: add support for rk3066 sdmmc
In reply to Paweł JaroszThis patch enables support for the Rockchip RK3066 SD/MMC controller, which is based on Designware IP. The device supports SD, SDIO, MMC and eMMC.
---
Changes since v1:
- dropped OF_PLATDATA
drivers/mmc/rockchip_dw_mmc.c | 1 + 1 file changed, 1 insertion(+)
drivers/mmc/rockchip_dw_mmc.c +1 -0
@@ -160,6 +160,7 @@ static int rockchip_dwmmc_bind(struct udevice *dev)static const struct udevice_id rockchip_dwmmc_ids[] = { { .compatible ="rockchip,rk3288-dw-mshc" }, + { .compatible ="rockchip,rk2928-dw-mshc" }, { } };
Signature · 1 line
2.7.4
PATCH v2 16/19 armv7: support rk3066 early back to bootrom in vector.S
In reply to Paweł JaroszRockchip bootrom first reads 1KB data from nand at offset 0x10080C00 and executes it. Then waits for back to bootrom and loads another 32KB to sram which also executes. Sdram initialisation code needs to be in one of these two steps. Then bootloader loads another ~200KB of data at offset 0x60000000 and jumps to it.
32KB of data is a little low for tpl + spl part and ~200KB data is to low for u-boot part(for example to boot from mmc you need to disable usb support.
My solution to size problem is to move sdram initialisation code to tpl stage, move spl part to third stage(reading 200KB data) and add support for loading u-boot by spl from ext2/4, fat partitions.
But moving sdram initialisation code to tpl increases size of tpl above 1KB (first boot stage). Solution to this is to add code which will be below 1KB offset in tpl binary and do back to bootrom at very beginning of the tpl execution.
Adding this few lines of code here meets these conditions.
---
Changes since v1:
- moved to vector.S
arch/arm/include/asm/arch-rockchip/boot0.h | 14 ++++++++++++++ arch/arm/lib/vectors.S | 18 +++++++++--------- configs/mk808_defconfig | 1 + 3 files changed, 24 insertions(+), 9 deletions(-)
arch/arm/include/asm/arch-rockchip/boot0.h +14 -0
@@ -5,6 +5,19 @@* SPDX-License-Identifier: GPL-2.0+ */ +#if defined(CONFIG_ROCKCHIP_RK3066 ) && defined(CONFIG_TPL_BUILD ) + ldr r3, =0x10080900 + ldr r0, [r3] + cmp r0, #1 + movne r0, #1 + strne r0, [r3] + beq out_of_bootrom + bx lr +out_of_bootrom: + mov r0, #0 + str r0, [r3] +#endif +/* * Execution starts on the instruction following this 4-byte header * (containing the magic 'RK33').
@@ -26,6 +39,7 @@*/ b reset /* may be overwritten --- should be 'nop' or a 'b reset' */#endif + b reset#if defined(CONFIG_ROCKCHIP_RK3399 ) && defined(CONFIG_SPL_BUILD )
arch/arm/lib/vectors.S +9 -9
@@ -47,6 +47,15 @@ _start: +#ifdef CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK +/* + * Various SoCs need something special and SoC-specific up front in + * order to boot, allow them to set that in their boot0.h file and then + * use it here. + */ +#include <asm/arch/boot0.h> +#endif + #ifdef CONFIG_SYS_DV_NOR_BOOT_CFG .word CONFIG_SYS_DV_NOR_BOOT_CFG #endif
@@ -60,15 +69,6 @@ _start: ldr pc, _irq ldr pc, _fiq -#ifdef CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK -/* - * Various SoCs need something special and SoC-specific up front in - * order to boot, allow them to set that in their boot0.h file and then - * use it here. - */ -#include <asm/arch/boot0.h> -#endif - /* ************************************************************************* *
configs/mk808_defconfig +1 -0
@@ -13,6 +13,7 @@ CONFIG_USE_PRIVATE_LIBGCC=y CONFIG_CMD_DHRYSTONE=y CONFIG_ERRNO_STR=y CONFIG_SYS_NS16550=y +CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y CONFIG_BOOTDELAY=1 CONFIG_CONSOLE_MUX=y CONFIG_DISPLAY_BOARDINFO=y
Signature · 1 line
2.7.4
PATCH v2 17/19 rockchip: sysreset: deduplicate rk3066 and rk3188 sysreset drivers
In reply to Paweł JaroszSysreset drivers for rk3066 and rk3188 contain common elements which can be reused.
---
Changes since v1:
- none
.../include/asm/arch-rockchip/sysreset_common.h | 20 +++++++++++ arch/arm/mach-rockchip/Makefile | 3 ++ arch/arm/mach-rockchip/sysreset-common.c | 39 ++++++++++++++++++++++ drivers/sysreset/sysreset_rk3066.c | 34 ++++++------------- drivers/sysreset/sysreset_rk3188.c | 35 ++++++------------- 5 files changed, 84 insertions(+), 47 deletions(-) create mode 100644 arch/arm/include/asm/arch-rockchip/sysreset_common.h create mode 100644 arch/arm/mach-rockchip/sysreset-common.c
arch/arm/include/asm/arch-rockchip/sysreset_common.h new file +20 -0
@@ -0,0 +1,20 @@ +/* +* (C) Copyright 2017 Paweł Jarosz <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0 +*/ + +#ifndef _ASM_ARCH_SYSRESET_COMMON_H +#define _ASM_ARCH_SYSRESET_COMMON_H + +struct rockchip_sysreset_data { +void *grf_soc_con0; +uint32_t noc_remap_mask; +void *cru_mode_con; +void *cru_glb_srst_snd_value; +void *cru_glb_srst_fst_value; +}; + +int rockchip_sysreset_request (struct rockchip_sysreset_data *data, +enum sysreset_t type); +#endif
arch/arm/mach-rockchip/Makefile +3 -0
@@ -11,6 +11,9 @@ obj-spl-$(CONFIG_ROCKCHIP_BROM_HELPER) += bootrom.o save_boot_param.o obj-tpl-$(CONFIG_ROCKCHIP_BROM_HELPER) += bootrom.o save_boot_param.o +obj-$(CONFIG_ROCKCHIP_RK3066) += sysreset-common.o +obj-$(CONFIG_ROCKCHIP_RK3188) += sysreset-common.o + obj-tpl-$(CONFIG_ROCKCHIP_RK3066) += rk3066-board-tpl.o obj-tpl-$(CONFIG_ROCKCHIP_RK3188) += rk3188-board-tpl.o obj-tpl-$(CONFIG_ROCKCHIP_RK3368) += rk3368-board-tpl.o
arch/arm/mach-rockchip/sysreset-common.c new file +39 -0
@@ -0,0 +1,39 @@ +/* +* (C) Copyright 2017 Paweł Jarosz <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0 +*/ + +#include <common.h> +#include <errno.h> +#include <sysreset.h> +#include <asm/io.h> +#include <asm/arch/hardware.h> +#include <asm/arch/sysreset_common.h> +#include <linux/err.h> + +int rockchip_sysreset_request (struct rockchip_sysreset_data *data, +enum sysreset_t type) +{ +switch (type) { +case SYSRESET_WARM : +/* +* warm-reset keeps the remap value, +* so make sure it's disabled. +*/ +rk_clrsetreg (data->grf_soc_con0, + data->noc_remap_mask,0 ); + +rk_clrreg (data->cru_mode_con,0xffff ); +writel (0xeca8 , data->cru_glb_srst_snd_value); +break ; +case SYSRESET_COLD : +rk_clrreg (data->cru_mode_con,0xffff ); +writel (0xfdb9 , data->cru_glb_srst_fst_value); +break ; +default : +return -EPROTONOSUPPORT ; + } + +return -EINPROGRESS ; +}
drivers/sysreset/sysreset_rk3066.c +11 -23
@@ -14,40 +14,28 @@#include <asm/arch/cru_rk3066.h> #include <asm/arch/grf_rk3066.h> #include <asm/arch/hardware.h> +#include <asm/arch/sysreset_common.h> #include <linux/err.h> int rk3066_sysreset_request (struct udevice *dev,enum sysreset_t type) {struct rk3066_cru *cru =rockchip_get_cru (); -struct rk3066_grf *grf; +struct rk3066_grf *grf =syscon_get_first_range (ROCKCHIP_SYSCON_GRF ); +struct rockchip_sysreset_data data = { + .grf_soc_con0 = &grf->soc_con0, + .noc_remap_mask =NOC_REMAP_MASK , + .cru_mode_con = &cru->cru_mode_con, + .cru_glb_srst_snd_value = &cru->cru_glb_srst_snd_value, + .cru_glb_srst_fst_value = &cru->cru_glb_srst_fst_value + };if (IS_ERR (cru))return PTR_ERR (cru); -switch (type) { -case SYSRESET_WARM : - grf =syscon_get_first_range (ROCKCHIP_SYSCON_GRF ); -if (IS_ERR (grf)) -return -EPROTONOSUPPORT ; -/* -* warm-reset keeps the remap value, -* so make sure it's disabled. -*/ -rk_clrsetreg (&grf->soc_con0, -NOC_REMAP_MASK ,0 <<NOC_REMAP_SHIFT ); - -rk_clrreg (&cru->cru_mode_con,0xffff ); -writel (0xeca8 , &cru->cru_glb_srst_snd_value); -break ; -case SYSRESET_COLD : -rk_clrreg (&cru->cru_mode_con,0xffff ); -writel (0xfdb9 , &cru->cru_glb_srst_fst_value); -break ; -default : +if (IS_ERR (grf))return -EPROTONOSUPPORT ; - } -return -EINPROGRESS ; +return rockchip_sysreset_request (&data, type); }static struct sysreset_ops rk3066_sysreset = {
drivers/sysreset/sysreset_rk3188.c +11 -24
@@ -14,41 +14,28 @@#include <asm/arch/cru_rk3188.h> #include <asm/arch/grf_rk3188.h> #include <asm/arch/hardware.h> +#include <asm/arch/sysreset_common.h> #include <linux/err.h> int rk3188_sysreset_request (struct udevice *dev,enum sysreset_t type) {struct rk3188_cru *cru =rockchip_get_cru (); -struct rk3188_grf *grf; +struct rk3188_grf *grf =syscon_get_first_range (ROCKCHIP_SYSCON_GRF ); +struct rockchip_sysreset_data data = { + .grf_soc_con0 = &grf->soc_con0, + .noc_remap_mask =NOC_REMAP_MASK , + .cru_mode_con = &cru->cru_mode_con, + .cru_glb_srst_snd_value = &cru->cru_glb_srst_snd_value, + .cru_glb_srst_fst_value = &cru->cru_glb_srst_fst_value + };if (IS_ERR (cru))return PTR_ERR (cru); -switch (type) { -case SYSRESET_WARM : - grf =syscon_get_first_range (ROCKCHIP_SYSCON_GRF ); -if (IS_ERR (grf)) -return -EPROTONOSUPPORT ; -/* -* warm-reset keeps the remap value, -* so make sure it's disabled. -*/ -rk_clrsetreg (&grf->soc_con0, -NOC_REMAP_MASK <<NOC_REMAP_SHIFT , -0 <<NOC_REMAP_SHIFT ); - -rk_clrreg (&cru->cru_mode_con,0xffff ); -writel (0xeca8 , &cru->cru_glb_srst_snd_value); -break ; -case SYSRESET_COLD : -rk_clrreg (&cru->cru_mode_con,0xffff ); -writel (0xfdb9 , &cru->cru_glb_srst_fst_value); -break ; -default : +if (IS_ERR (grf))return -EPROTONOSUPPORT ; - } -return -EINPROGRESS ; +return rockchip_sysreset_request (&data, type); }static struct sysreset_ops rk3188_sysreset = {
Signature · 1 line
2.7.4
PATCH v2 18/19 dfu: fix spl build
In reply to Paweł JaroszIn current state dfu depends on cmd/mtdparts.c which isn't build in SPL. This patch resolves it by cutting out unwanted code in SPL build.
---
Changes since v1:
- none
drivers/dfu/dfu_nand.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/dfu/dfu_nand.c +5 -1
@@ -192,8 +192,9 @@ unsigned int dfu_polltimeout_nand(struct dfu_entity *dfu)int dfu_fill_entity_nand (struct dfu_entity *dfu,char *devstr,char *s) {char *st; +#ifndef CONFIG_SPL_BUILD int ret, dev, part; - +#endif dfu->data.nand.ubi =0 ; dfu->dev_type =DFU_DEV_NAND ; st =strsep (&s," " );
@@ -203,6 +204,7 @@ int dfu_fill_entity_nand(struct dfu_entity *dfu, char *devstr, char *s) s++; dfu->data.nand.size =simple_strtoul (s, &s,16 ); }else if ((!strcmp (st,"part" )) || (!strcmp (st,"partubi" ))) { +#ifndef CONFIG_SPL_BUILD char mtd_id[32 ];struct mtd_device *mtd_dev;u8 part_num;
@@ -220,6 +222,7 @@ int dfu_fill_entity_nand(struct dfu_entity *dfu, char *devstr, char *s)mtdparts_init (); ret =find_dev_and_part (mtd_id, &mtd_dev, &part_num, &pi); +if (ret !=0 ) {printf ("Could not locate '%s'\n" , mtd_id);return -1 ;
@@ -229,6 +232,7 @@ int dfu_fill_entity_nand(struct dfu_entity *dfu, char *devstr, char *s) dfu->data.nand.size = pi->size;if (!strcmp (st,"partubi" )) dfu->data.nand.ubi =1 ; +#endif }else {printf ("%s: Memory layout (%s) not supported!\n" , __func__, st);return -1 ;
Signature · 1 line
2.7.4
PATCH v2 19/19 mtd: nand: spl: allow build nand_bbt, nand_ids and nand_util
In reply to Paweł JaroszThis patch allows building of nand_bbt, nand_ids, nand_util for nand drivers that need it.
---
Changes since v1:
- none
drivers/mtd/nand/Makefile | 3 +++ 1 file changed, 3 insertions(+)
drivers/mtd/nand/Makefile +3 -0
@@ -18,6 +18,9 @@ obj-$(CONFIG_SPL_NAND_LOAD) += nand_spl_load.o obj-$(CONFIG_SPL_NAND_ECC) += nand_ecc.o obj-$(CONFIG_SPL_NAND_BASE) += nand_base.o obj-$(CONFIG_SPL_NAND_INIT) += nand.o +obj-$(CONFIG_SPL_NAND_BBT) += nand_bbt.o +obj-$(CONFIG_SPL_NAND_IDS) += nand_ids.o +obj-$(CONFIG_SPL_NAND_UTIL) += nand_util.o ifeq ($(CONFIG_SPL_ENV_SUPPORT),y) obj-$(CONFIG_ENV_IS_IN_NAND) += nand_util.o endif
Signature · 1 line
2.7.4
v2 cover add support for rk3066 platform.
In reply to Paweł JaroszPawel,
Could you rebase this onto the current master (the SPL/TPL changes for the RK3368 are likely to have affected a few things) and resubmit?
Thanks,
Philipp.
Quoted 113 lines · Paweł Jarosz
This patch serie adds support for Rockchip RK3066 processor.
Paweł Jarosz (19):
rockchip: rk3066: add grf header file
rockchip: rk3066: add rk3066 pinctrl driver
rockchip: rk3066: add sysreset driver
rockchip: rk3066: add clock driver for rk3066 soc
rockchip: rk3066: add rk3066 platform devicetree file
rockchip: rk3066: add core support
rockchip: rk3066: add mk808 board files
rockchip: rk3066: add sdram driver
mtd: nand: add support for the Sandisk SDTNQGAMA chip
mtd: nand: add the rockchip nand controller driver
rockchip: mkimage: add support for rockchip nand boot image
rockchip: board: rk3066: convertboard_usb_initto live tree functions
ARM: dts: rockchip: prefer u-boot,dm-pre-reloc rather than
u-boot,dm-spl
mmc:dw_mmc: support transfer mode autodetection
mmc:dw_mmc: rockchip: add support for rk3066 sdmmc
armv7: support rk3066 early back to bootrom invector.S
rockchip: sysreset: deduplicate rk3066 and rk3188 sysreset drivers
dfu: fix spl build
mtd: nand: spl: allow buildnand_bbt,nand_idsandnand_utilarch/arm/dts/Makefile | 1 + arch/arm/dts/rk3066a-mk808.dts | 189 +++++ arch/arm/dts/rk3066a.dtsi | 707 +++++++++++++++ arch/arm/dts/rk3xxx.dtsi | 8 +- arch/arm/include/asm/arch-rockchip/boot0.h | 14 + arch/arm/include/asm/arch-rockchip/cru_rk3066.h | 189 +++++ arch/arm/include/asm/arch-rockchip/grf_rk3066.h | 621 ++++++++++++++ arch/arm/include/asm/arch-rockchip/periph.h | 1 + .../include/asm/arch-rockchip/sysreset_common.h | 20 + arch/arm/lib/vectors.S | 18 +- arch/arm/mach-rockchip/Kconfig | 16 + arch/arm/mach-rockchip/Makefile | 7 + arch/arm/mach-rockchip/rk3066-board-spl.c | 139 +++ arch/arm/mach-rockchip/rk3066-board-tpl.c | 90 ++ arch/arm/mach-rockchip/rk3066-board.c | 112 +++ arch/arm/mach-rockchip/rk3066/Kconfig | 31 + arch/arm/mach-rockchip/rk3066/Makefile | 9 + arch/arm/mach-rockchip/rk3066/clk_rk3066.c | 33 + arch/arm/mach-rockchip/rk3066/sdram_rk3066.c | 943 +++++++++++++++++++++ arch/arm/mach-rockchip/rk3066/syscon_rk3066.c | 54 ++ arch/arm/mach-rockchip/sysreset-common.c | 39 + board/rikomagic/mk808_rk3066/Kconfig | 15 + board/rikomagic/mk808_rk3066/MAINTAINERS | 6 + board/rikomagic/mk808_rk3066/Makefile | 7 + board/rikomagic/mk808_rk3066/mk808_rk3066.c | 10 + common/image.c | 1 + configs/mk808_defconfig | 115 +++ drivers/clk/rockchip/Makefile | 1 + drivers/clk/rockchip/clk_rk3066.c | 587 +++++++++++++ drivers/dfu/dfu_nand.c | 6 +- drivers/mmc/dw_mmc.c | 8 + drivers/mmc/rockchip_dw_mmc.c | 1 + drivers/mtd/nand/Kconfig | 6 + drivers/mtd/nand/Makefile | 4 + drivers/mtd/nand/nand_ids.c | 3 + drivers/mtd/nand/rockchip_nand.c | 660 ++++++++++++++ drivers/pinctrl/Kconfig | 9 + drivers/pinctrl/rockchip/Makefile | 1 + drivers/pinctrl/rockchip/pinctrl_rk3066.c | 340 ++++++++ drivers/sysreset/Makefile | 1 + drivers/sysreset/sysreset_rk3066.c | 49 ++ drivers/sysreset/sysreset_rk3188.c | 35 +- include/configs/mk808_rk3066.h | 61 ++ include/configs/rk3066_common.h | 99 +++ include/dwmmc.h | 4 + include/fdtdec.h | 1 + include/image.h | 1 + lib/fdtdec.c | 1 + tools/Makefile | 2 +- tools/imagetool.h | 1 + tools/mkimage.c | 8 +- tools/rkcommon.c | 10 +- tools/rkcommon.h | 10 +- tools/rknand.c | 156 ++++ tools/rksd.c | 2 +- tools/rkspi.c | 2 +- 56 files changed, 5416 insertions(+), 48 deletions(-)create mode 100644
arch/arm/dts/rk3066a-mk808.dts
create mode 100644arch/arm/dts/rk3066a.dtsi
create mode 100644arch/arm/include/asm/arch-rockchip/cru_rk3066.hcreate mode 100644arch/arm/include/asm/arch-rockchip/grf_rk3066.hcreate mode 100644arch/arm/include/asm/arch-rockchip/sysreset_common.hcreate mode 100644arch/arm/mach-rockchip/rk3066-board-spl.ccreate mode 100644arch/arm/mach-rockchip/rk3066-board-tpl.ccreate mode 100644arch/arm/mach-rockchip/rk3066-board.ccreate mode 100644arch/arm/mach-rockchip/rk3066/Kconfigcreate mode 100644arch/arm/mach-rockchip/rk3066/Makefilecreate mode 100644arch/arm/mach-rockchip/rk3066/clk_rk3066.ccreate mode 100644arch/arm/mach-rockchip/rk3066/sdram_rk3066.ccreate mode 100644arch/arm/mach-rockchip/rk3066/syscon_rk3066.ccreate mode 100644arch/arm/mach-rockchip/sysreset-common.ccreate mode 100644 board/rikomagic/mk808_rk3066/Kconfig create mode 100644 board/rikomagic/mk808_rk3066/MAINTAINERS create mode 100644 board/rikomagic/mk808_rk3066/Makefile create mode 100644board/rikomagic/mk808_rk3066/mk808_rk3066.ccreate mode 100644 configs/mk808_defconfig
create mode 100644drivers/clk/rockchip/clk_rk3066.c
create mode 100644drivers/mtd/nand/rockchip_nand.c
create mode 100644drivers/pinctrl/rockchip/pinctrl_rk3066.ccreate mode 100644drivers/sysreset/sysreset_rk3066.c
create mode 100644include/configs/mk808_rk3066.h
create mode 100644include/configs/rk3066_common.h
create mode 100644tools/rknand.cSignature · 1 line
2.7.4
v2 cover add support for rk3066 platform.
Hi,
W dniu 16.08.2017 o 16:28, Dr. Philipp Tomsich pisze:
Quoted 4 lines
Pawel,
Could you rebase this onto the current master (the SPL/TPL changes for the RK3368 are likely to have affected a few things) and resubmit?
By master you mean u-boot-rockchip master or u-boot master?
Cheers,
Paweł
Quoted 116 lines
Thanks,
Philipp.Quoted 113 lines · Paweł Jarosz
This patch serie adds support for Rockchip RK3066 processor.
Paweł Jarosz (19):
rockchip: rk3066: add grf header file
rockchip: rk3066: add rk3066 pinctrl driver
rockchip: rk3066: add sysreset driver
rockchip: rk3066: add clock driver for rk3066 soc
rockchip: rk3066: add rk3066 platform devicetree file
rockchip: rk3066: add core support
rockchip: rk3066: add mk808 board files
rockchip: rk3066: add sdram driver
mtd: nand: add support for the Sandisk SDTNQGAMA chip
mtd: nand: add the rockchip nand controller driver
rockchip: mkimage: add support for rockchip nand boot image
rockchip: board: rk3066: convertboard_usb_initto live tree functions
ARM: dts: rockchip: prefer u-boot,dm-pre-reloc rather than
u-boot,dm-spl
mmc:dw_mmc: support transfer mode autodetection
mmc:dw_mmc: rockchip: add support for rk3066 sdmmc
armv7: support rk3066 early back to bootrom invector.S
rockchip: sysreset: deduplicate rk3066 and rk3188 sysreset drivers
dfu: fix spl build
mtd: nand: spl: allow buildnand_bbt,nand_idsandnand_utilarch/arm/dts/Makefile | 1 + arch/arm/dts/rk3066a-mk808.dts | 189 +++++ arch/arm/dts/rk3066a.dtsi | 707 +++++++++++++++ arch/arm/dts/rk3xxx.dtsi | 8 +- arch/arm/include/asm/arch-rockchip/boot0.h | 14 + arch/arm/include/asm/arch-rockchip/cru_rk3066.h | 189 +++++ arch/arm/include/asm/arch-rockchip/grf_rk3066.h | 621 ++++++++++++++ arch/arm/include/asm/arch-rockchip/periph.h | 1 + .../include/asm/arch-rockchip/sysreset_common.h | 20 + arch/arm/lib/vectors.S | 18 +- arch/arm/mach-rockchip/Kconfig | 16 + arch/arm/mach-rockchip/Makefile | 7 + arch/arm/mach-rockchip/rk3066-board-spl.c | 139 +++ arch/arm/mach-rockchip/rk3066-board-tpl.c | 90 ++ arch/arm/mach-rockchip/rk3066-board.c | 112 +++ arch/arm/mach-rockchip/rk3066/Kconfig | 31 + arch/arm/mach-rockchip/rk3066/Makefile | 9 + arch/arm/mach-rockchip/rk3066/clk_rk3066.c | 33 + arch/arm/mach-rockchip/rk3066/sdram_rk3066.c | 943 +++++++++++++++++++++ arch/arm/mach-rockchip/rk3066/syscon_rk3066.c | 54 ++ arch/arm/mach-rockchip/sysreset-common.c | 39 + board/rikomagic/mk808_rk3066/Kconfig | 15 + board/rikomagic/mk808_rk3066/MAINTAINERS | 6 + board/rikomagic/mk808_rk3066/Makefile | 7 + board/rikomagic/mk808_rk3066/mk808_rk3066.c | 10 + common/image.c | 1 + configs/mk808_defconfig | 115 +++ drivers/clk/rockchip/Makefile | 1 + drivers/clk/rockchip/clk_rk3066.c | 587 +++++++++++++ drivers/dfu/dfu_nand.c | 6 +- drivers/mmc/dw_mmc.c | 8 + drivers/mmc/rockchip_dw_mmc.c | 1 + drivers/mtd/nand/Kconfig | 6 + drivers/mtd/nand/Makefile | 4 + drivers/mtd/nand/nand_ids.c | 3 + drivers/mtd/nand/rockchip_nand.c | 660 ++++++++++++++ drivers/pinctrl/Kconfig | 9 + drivers/pinctrl/rockchip/Makefile | 1 + drivers/pinctrl/rockchip/pinctrl_rk3066.c | 340 ++++++++ drivers/sysreset/Makefile | 1 + drivers/sysreset/sysreset_rk3066.c | 49 ++ drivers/sysreset/sysreset_rk3188.c | 35 +- include/configs/mk808_rk3066.h | 61 ++ include/configs/rk3066_common.h | 99 +++ include/dwmmc.h | 4 + include/fdtdec.h | 1 + include/image.h | 1 + lib/fdtdec.c | 1 + tools/Makefile | 2 +- tools/imagetool.h | 1 + tools/mkimage.c | 8 +- tools/rkcommon.c | 10 +- tools/rkcommon.h | 10 +- tools/rknand.c | 156 ++++ tools/rksd.c | 2 +- tools/rkspi.c | 2 +- 56 files changed, 5416 insertions(+), 48 deletions(-)create mode 100644
arch/arm/dts/rk3066a-mk808.dts
create mode 100644arch/arm/dts/rk3066a.dtsi
create mode 100644arch/arm/include/asm/arch-rockchip/cru_rk3066.hcreate mode 100644arch/arm/include/asm/arch-rockchip/grf_rk3066.hcreate mode 100644arch/arm/include/asm/arch-rockchip/sysreset_common.hcreate mode 100644arch/arm/mach-rockchip/rk3066-board-spl.ccreate mode 100644arch/arm/mach-rockchip/rk3066-board-tpl.ccreate mode 100644arch/arm/mach-rockchip/rk3066-board.ccreate mode 100644arch/arm/mach-rockchip/rk3066/Kconfigcreate mode 100644arch/arm/mach-rockchip/rk3066/Makefilecreate mode 100644arch/arm/mach-rockchip/rk3066/clk_rk3066.ccreate mode 100644arch/arm/mach-rockchip/rk3066/sdram_rk3066.ccreate mode 100644arch/arm/mach-rockchip/rk3066/syscon_rk3066.ccreate mode 100644arch/arm/mach-rockchip/sysreset-common.ccreate mode 100644 board/rikomagic/mk808_rk3066/Kconfig create mode 100644 board/rikomagic/mk808_rk3066/MAINTAINERS create mode 100644 board/rikomagic/mk808_rk3066/Makefile create mode 100644board/rikomagic/mk808_rk3066/mk808_rk3066.ccreate mode 100644 configs/mk808_defconfig
create mode 100644drivers/clk/rockchip/clk_rk3066.c
create mode 100644drivers/mtd/nand/rockchip_nand.c
create mode 100644drivers/pinctrl/rockchip/pinctrl_rk3066.ccreate mode 100644drivers/sysreset/sysreset_rk3066.c
create mode 100644include/configs/mk808_rk3066.h
create mode 100644include/configs/rk3066_common.h
create mode 100644tools/rknand.cSignature · 1 line
2.7.4
v2 cover add support for rk3066 platform.
Either will be fine for me: u-boot-rockchip/master is only one DTS fix ahead of u-boot/master.
Quoted 133 lines · Paweł Jarosz
Hi,
W dniu 16.08.2017 o 16:28, Dr. Philipp Tomsich pisze:
Quoted 4 lines
Pawel,
Could you rebase this onto the current master (the SPL/TPL changes for the RK3368 are likely to have affected a few things) and resubmit?
By master you mean u-boot-rockchip master or u-boot master?
Cheers,
PawełQuoted 116 lines
Thanks,
Philipp.Quoted 113 lines · Paweł Jarosz
This patch serie adds support for Rockchip RK3066 processor.
Paweł Jarosz (19):
rockchip: rk3066: add grf header file
rockchip: rk3066: add rk3066 pinctrl driver
rockchip: rk3066: add sysreset driver
rockchip: rk3066: add clock driver for rk3066 soc
rockchip: rk3066: add rk3066 platform devicetree file
rockchip: rk3066: add core support
rockchip: rk3066: add mk808 board files
rockchip: rk3066: add sdram driver
mtd: nand: add support for the Sandisk SDTNQGAMA chip
mtd: nand: add the rockchip nand controller driver
rockchip: mkimage: add support for rockchip nand boot image
rockchip: board: rk3066: convertboard_usb_initto live tree functions
ARM: dts: rockchip: prefer u-boot,dm-pre-reloc rather than
u-boot,dm-spl
mmc:dw_mmc: support transfer mode autodetection
mmc:dw_mmc: rockchip: add support for rk3066 sdmmc
armv7: support rk3066 early back to bootrom invector.S
rockchip: sysreset: deduplicate rk3066 and rk3188 sysreset drivers
dfu: fix spl build
mtd: nand: spl: allow buildnand_bbt,nand_idsandnand_utilarch/arm/dts/Makefile | 1 + arch/arm/dts/rk3066a-mk808.dts | 189 +++++ arch/arm/dts/rk3066a.dtsi | 707 +++++++++++++++ arch/arm/dts/rk3xxx.dtsi | 8 +- arch/arm/include/asm/arch-rockchip/boot0.h | 14 + arch/arm/include/asm/arch-rockchip/cru_rk3066.h | 189 +++++ arch/arm/include/asm/arch-rockchip/grf_rk3066.h | 621 ++++++++++++++ arch/arm/include/asm/arch-rockchip/periph.h | 1 + .../include/asm/arch-rockchip/sysreset_common.h | 20 + arch/arm/lib/vectors.S | 18 +- arch/arm/mach-rockchip/Kconfig | 16 + arch/arm/mach-rockchip/Makefile | 7 + arch/arm/mach-rockchip/rk3066-board-spl.c | 139 +++ arch/arm/mach-rockchip/rk3066-board-tpl.c | 90 ++ arch/arm/mach-rockchip/rk3066-board.c | 112 +++ arch/arm/mach-rockchip/rk3066/Kconfig | 31 + arch/arm/mach-rockchip/rk3066/Makefile | 9 + arch/arm/mach-rockchip/rk3066/clk_rk3066.c | 33 + arch/arm/mach-rockchip/rk3066/sdram_rk3066.c | 943 +++++++++++++++++++++ arch/arm/mach-rockchip/rk3066/syscon_rk3066.c | 54 ++ arch/arm/mach-rockchip/sysreset-common.c | 39 + board/rikomagic/mk808_rk3066/Kconfig | 15 + board/rikomagic/mk808_rk3066/MAINTAINERS | 6 + board/rikomagic/mk808_rk3066/Makefile | 7 + board/rikomagic/mk808_rk3066/mk808_rk3066.c | 10 + common/image.c | 1 + configs/mk808_defconfig | 115 +++ drivers/clk/rockchip/Makefile | 1 + drivers/clk/rockchip/clk_rk3066.c | 587 +++++++++++++ drivers/dfu/dfu_nand.c | 6 +- drivers/mmc/dw_mmc.c | 8 + drivers/mmc/rockchip_dw_mmc.c | 1 + drivers/mtd/nand/Kconfig | 6 + drivers/mtd/nand/Makefile | 4 + drivers/mtd/nand/nand_ids.c | 3 + drivers/mtd/nand/rockchip_nand.c | 660 ++++++++++++++ drivers/pinctrl/Kconfig | 9 + drivers/pinctrl/rockchip/Makefile | 1 + drivers/pinctrl/rockchip/pinctrl_rk3066.c | 340 ++++++++ drivers/sysreset/Makefile | 1 + drivers/sysreset/sysreset_rk3066.c | 49 ++ drivers/sysreset/sysreset_rk3188.c | 35 +- include/configs/mk808_rk3066.h | 61 ++ include/configs/rk3066_common.h | 99 +++ include/dwmmc.h | 4 + include/fdtdec.h | 1 + include/image.h | 1 + lib/fdtdec.c | 1 + tools/Makefile | 2 +- tools/imagetool.h | 1 + tools/mkimage.c | 8 +- tools/rkcommon.c | 10 +- tools/rkcommon.h | 10 +- tools/rknand.c | 156 ++++ tools/rksd.c | 2 +- tools/rkspi.c | 2 +- 56 files changed, 5416 insertions(+), 48 deletions(-)create mode 100644
arch/arm/dts/rk3066a-mk808.dts
create mode 100644arch/arm/dts/rk3066a.dtsi
create mode 100644arch/arm/include/asm/arch-rockchip/cru_rk3066.hcreate mode 100644arch/arm/include/asm/arch-rockchip/grf_rk3066.hcreate mode 100644arch/arm/include/asm/arch-rockchip/sysreset_common.hcreate mode 100644arch/arm/mach-rockchip/rk3066-board-spl.ccreate mode 100644arch/arm/mach-rockchip/rk3066-board-tpl.ccreate mode 100644arch/arm/mach-rockchip/rk3066-board.ccreate mode 100644arch/arm/mach-rockchip/rk3066/Kconfigcreate mode 100644arch/arm/mach-rockchip/rk3066/Makefilecreate mode 100644arch/arm/mach-rockchip/rk3066/clk_rk3066.ccreate mode 100644arch/arm/mach-rockchip/rk3066/sdram_rk3066.ccreate mode 100644arch/arm/mach-rockchip/rk3066/syscon_rk3066.ccreate mode 100644arch/arm/mach-rockchip/sysreset-common.ccreate mode 100644 board/rikomagic/mk808_rk3066/Kconfig create mode 100644 board/rikomagic/mk808_rk3066/MAINTAINERS create mode 100644 board/rikomagic/mk808_rk3066/Makefile create mode 100644board/rikomagic/mk808_rk3066/mk808_rk3066.ccreate mode 100644 configs/mk808_defconfig
create mode 100644drivers/clk/rockchip/clk_rk3066.c
create mode 100644drivers/mtd/nand/rockchip_nand.c
create mode 100644drivers/pinctrl/rockchip/pinctrl_rk3066.ccreate mode 100644drivers/sysreset/sysreset_rk3066.c
create mode 100644include/configs/mk808_rk3066.h
create mode 100644include/configs/rk3066_common.h
create mode 100644tools/rknand.cSignature · 1 line
2.7.4