Re: [PATCH v2 2/2] rockchip: Add initial support for the PINE64 Pinephone Pro
Hi Peter, On Sat, 31 Dec 2022 at 03:24, Peter Robinson wrote: > > The Pinephone Pro is another device by PINE64. It's closely related > to the Pinebook Pro of which this initial support is derived from. > > Specification: > - A variant of the Rockchip RK3399 > - A 6 inch 720*1440 DSI display > - Front and rear cameras > - Type-C interface with alt mode display (DP 1.2) and PD charging > - 4GB LPDDR4 RAM > - 128GB eMMC > - mSD card slot > - An AP6255 module for 802.11ac WiFi and Bluetooth 5 > - Quectel EG25-G 4G/LTE modem > > Signed-off-by: Peter Robinson > --- > arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi | 31 ++ > arch/arm/mach-rockchip/rk3399/Kconfig | 8 ++ > board/pine64/pinephone-pro-rk3399/Kconfig | 15 +++ > board/pine64/pinephone-pro-rk3399/MAINTAINERS | 8 ++ > board/pine64/pinephone-pro-rk3399/Makefile| 1 + > .../pinephone-pro-rk3399.c| 76 + > configs/pinephone-pro-rk3399_defconfig| 104 ++ > include/configs/pinephone-pro-rk3399.h| 19 > 8 files changed, 262 insertions(+) > create mode 100644 arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi > create mode 100644 board/pine64/pinephone-pro-rk3399/Kconfig > create mode 100644 board/pine64/pinephone-pro-rk3399/MAINTAINERS > create mode 100644 board/pine64/pinephone-pro-rk3399/Makefile > create mode 100644 board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c > create mode 100644 configs/pinephone-pro-rk3399_defconfig > create mode 100644 include/configs/pinephone-pro-rk3399.h > Reviewed-by: Simon Glass Just a nit below [..] > new file mode 100644 > index 000..8d9203053e5 > --- /dev/null > +++ b/board/pine64/pinephone-pro-rk3399/Makefile > @@ -0,0 +1 @@ > +obj-y += pinephone-pro-rk3399.o > diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c > b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c > new file mode 100644 > index 000..eb639cd0d07 > --- /dev/null > +++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c > @@ -0,0 +1,76 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * (C) Copyright 2016 Rockchip Electronics Co., Ltd > + * (C) Copyright 2022 Peter Robinson > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#define GRF_IO_VSEL_BT565_SHIFT 0 > +#define PMUGRF_CON0_VSEL_SHIFT 8 > + > +#ifndef CONFIG_SPL_BUILD You should be able to use C code inside the function if (spl_phase() == PHASE_SPL) { .. > +int board_early_init_f(void) > +{ > + struct udevice *regulator; > + int ret; > + > + ret = regulator_get_by_platname("vcc5v0_usb", ®ulator); > + if (ret) { > + pr_debug("%s vcc5v0_usb init fail! ret %d\n", __func__, ret); > + goto out; > + } > + > + ret = regulator_set_enable(regulator, true); > + if (ret) > + pr_debug("%s vcc5v0-host-en-gpio set fail! ret %d\n", > __func__, ret); > + > +out: > + return 0; > +} > +#endif > + > +#ifdef CONFIG_MISC_INIT_R Won't the compiler drop this anyway if it is not needed? Can you drop the #ifdef ? > +static void setup_iodomain(void) > +{ > + struct rk3399_grf_regs *grf = > + syscon_get_first_range(ROCKCHIP_SYSCON_GRF); > + struct rk3399_pmugrf_regs *pmugrf = > + syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF); > + > + /* BT565 is in 1.8v domain */ > + rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT); > + > + /* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */ > + rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT); > +} > + > +int misc_init_r(void) > +{ > + const u32 cpuid_offset = 0x7; > + const u32 cpuid_length = 0x10; > + u8 cpuid[cpuid_length]; > + int ret; > + > + setup_iodomain(); > + > + ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid); > + if (ret) > + return ret; > + > + ret = rockchip_cpuid_set(cpuid, cpuid_length); > + if (ret) > + return ret; > + > + return ret; > +} > +#endif > diff --git a/configs/pinephone-pro-rk3399_defconfig > b/configs/pinephone-pro-rk3399_defconfig > new file mode 100644 > index 000..eb979f6c051 > --- /dev/null > +++ b/configs/pinephone-pro-rk3399_defconfig > @@ -0,0 +1,104 @@ > +CONFIG_ARM=y > +CONFIG_SKIP_LOWLEVEL_INIT=y > +CONFIG_COUNTER_FREQUENCY=2400 > +CONFIG_ARCH_ROCKCHIP=y > +CONFIG_TEXT_BASE=0x0020 > +CONFIG_NR_DRAM_BANKS=1 > +CONFIG_ENV_SIZE=0x8000 > +CONFIG_ENV_OFFSET=0x3F8000 > +CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro" > +CONFIG_ROCKCHIP_RK3399=y > +CONFIG_TARGET_PINEPHONE_PRO_RK3399=y > +CONFIG_DEBUG_UART_BASE=0xFF1A > +CONFIG_DEBUG_UART_CLOCK=2400 > +CONFIG_SPL_SPI_FLASH_SUPPORT=y > +CONFIG_SPL_SPI=y > +CONFIG_SYS_LOAD_ADDR=0x800800 > +CONFIG_DEBUG_UART=y > +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y > +
[PATCH v2 2/2] rockchip: Add initial support for the PINE64 Pinephone Pro
The Pinephone Pro is another device by PINE64. It's closely related to the Pinebook Pro of which this initial support is derived from. Specification: - A variant of the Rockchip RK3399 - A 6 inch 720*1440 DSI display - Front and rear cameras - Type-C interface with alt mode display (DP 1.2) and PD charging - 4GB LPDDR4 RAM - 128GB eMMC - mSD card slot - An AP6255 module for 802.11ac WiFi and Bluetooth 5 - Quectel EG25-G 4G/LTE modem Signed-off-by: Peter Robinson --- arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi | 31 ++ arch/arm/mach-rockchip/rk3399/Kconfig | 8 ++ board/pine64/pinephone-pro-rk3399/Kconfig | 15 +++ board/pine64/pinephone-pro-rk3399/MAINTAINERS | 8 ++ board/pine64/pinephone-pro-rk3399/Makefile| 1 + .../pinephone-pro-rk3399.c| 76 + configs/pinephone-pro-rk3399_defconfig| 104 ++ include/configs/pinephone-pro-rk3399.h| 19 8 files changed, 262 insertions(+) create mode 100644 arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi create mode 100644 board/pine64/pinephone-pro-rk3399/Kconfig create mode 100644 board/pine64/pinephone-pro-rk3399/MAINTAINERS create mode 100644 board/pine64/pinephone-pro-rk3399/Makefile create mode 100644 board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c create mode 100644 configs/pinephone-pro-rk3399_defconfig create mode 100644 include/configs/pinephone-pro-rk3399.h diff --git a/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi new file mode 100644 index 000..1dad283ad05 --- /dev/null +++ b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2022 Peter Robinson + */ + +#include "rk3399-u-boot.dtsi" +#include "rk3399-sdram-lpddr4-100.dtsi" + +/ { + chosen { + u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; + }; + + config { + u-boot,spl-payload-offset = <0x6>; /* @ 384KB */ + }; +}; + +&rng { + status = "okay"; +}; + +&sdhci { + max-frequency = <2500>; + u-boot,dm-pre-reloc; +}; + +&sdmmc { + max-frequency = <2000>; + u-boot,dm-pre-reloc; +}; diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig index b48feeb3466..d01063ac98b 100644 --- a/arch/arm/mach-rockchip/rk3399/Kconfig +++ b/arch/arm/mach-rockchip/rk3399/Kconfig @@ -39,6 +39,13 @@ config TARGET_PINEBOOK_PRO_RK3399 with 4Gb RAM, onboard eMMC, USB-C, a USB3 and USB2 port, 1920*1080 screen and all the usual laptop features. +config TARGET_PINEPHONE_PRO_RK3399 + bool "PinePhone Pro" + help + PinePhone Pro is a phone based on a variant of the Rockchip + rk3399 SoC with 4Gb RAM, onboard eMMC, USB-C, headphone jack, + 720x1440 screen and a Quectel 4G/LTE modem. + config TARGET_PUMA_RK3399 bool "Theobroma Systems RK3399-Q7 (Puma)" help @@ -165,6 +172,7 @@ endif # BOOTCOUNT_LIMIT source "board/firefly/roc-pc-rk3399/Kconfig" source "board/google/gru/Kconfig" source "board/pine64/pinebook-pro-rk3399/Kconfig" +source "board/pine64/pinephone-pro-rk3399/Kconfig" source "board/pine64/rockpro64_rk3399/Kconfig" source "board/rockchip/evb_rk3399/Kconfig" source "board/theobroma-systems/puma_rk3399/Kconfig" diff --git a/board/pine64/pinephone-pro-rk3399/Kconfig b/board/pine64/pinephone-pro-rk3399/Kconfig new file mode 100644 index 000..13d6465ae6e --- /dev/null +++ b/board/pine64/pinephone-pro-rk3399/Kconfig @@ -0,0 +1,15 @@ +if TARGET_PINEPHONE_PRO_RK3399 + +config SYS_BOARD + default "pinephone-pro-rk3399" + +config SYS_VENDOR + default "pine64" + +config SYS_CONFIG_NAME + default "pinephone-pro-rk3399" + +config BOARD_SPECIFIC_OPTIONS + def_bool y + +endif diff --git a/board/pine64/pinephone-pro-rk3399/MAINTAINERS b/board/pine64/pinephone-pro-rk3399/MAINTAINERS new file mode 100644 index 000..c923ff1be32 --- /dev/null +++ b/board/pine64/pinephone-pro-rk3399/MAINTAINERS @@ -0,0 +1,8 @@ +PINEPHONE_PRO +M: Peter Robinson +S: Maintained +F: board/pine64/rk3399-pinephone-pro/ +F: include/configs/rk3399-pinephone-pro.h +F: arch/arm/dts/rk3399-pinephone-pro.dts +F: arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi +F: configs/pinephone-pro-rk3399_defconfig diff --git a/board/pine64/pinephone-pro-rk3399/Makefile b/board/pine64/pinephone-pro-rk3399/Makefile new file mode 100644 index 000..8d9203053e5 --- /dev/null +++ b/board/pine64/pinephone-pro-rk3399/Makefile @@ -0,0 +1 @@ +obj-y += pinephone-pro-rk3399.o diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c new file mode 100644 index 000..eb639cd0d07 --- /dev/null +++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: