Merge pull request #2531 from davidthings/kernel_xfer
New Kernel config and patches
This commit is contained in:
commit
3cf8573d5f
18 changed files with 10148 additions and 6999 deletions
File diff suppressed because it is too large
Load diff
8098
projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.old.conf
Normal file
8098
projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.old.conf
Normal file
File diff suppressed because it is too large
Load diff
1113
projects/Rockchip/devices/RK3566-ML/linux/linux.jelos.compact.config
Normal file
1113
projects/Rockchip/devices/RK3566-ML/linux/linux.jelos.compact.config
Normal file
File diff suppressed because it is too large
Load diff
|
@ -32,7 +32,7 @@
|
||||||
PARTITION_TABLE="gpt"
|
PARTITION_TABLE="gpt"
|
||||||
UBOOT_LABEL="uboot"
|
UBOOT_LABEL="uboot"
|
||||||
TRUST_LABEL="trust"
|
TRUST_LABEL="trust"
|
||||||
DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v")
|
DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v" "rk3566-powkiddy-rgb30")
|
||||||
UBOOT_DTB="rk3566"
|
UBOOT_DTB="rk3566"
|
||||||
UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig"
|
UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig"
|
||||||
PKG_SOC="rk3568"
|
PKG_SOC="rk3568"
|
||||||
|
|
|
@ -30,8 +30,12 @@ case ${DEVICE} in
|
||||||
PKG_GIT_CLONE_BRANCH="main"
|
PKG_GIT_CLONE_BRANCH="main"
|
||||||
;;
|
;;
|
||||||
*ML)
|
*ML)
|
||||||
PKG_VERSION="6.7-rc4"
|
PKG_VERSION="next-next-20231212"
|
||||||
PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
# PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||||
|
PKG_URL="https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/snapshot/linux-next-next-20231212.tar.gz"
|
||||||
|
|
||||||
|
# PKG_VERSION="6.7-rc4"
|
||||||
|
# PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||||
;;
|
;;
|
||||||
*X55)
|
*X55)
|
||||||
PKG_URL="${PKG_SITE}/rk3566-x55-kernel.git"
|
PKG_URL="${PKG_SITE}/rk3566-x55-kernel.git"
|
||||||
|
|
|
@ -20,7 +20,8 @@ case ${DEVICE} in
|
||||||
;;
|
;;
|
||||||
*ML)
|
*ML)
|
||||||
PKG_URL="https://github.com/u-boot/u-boot.git"
|
PKG_URL="https://github.com/u-boot/u-boot.git"
|
||||||
PKG_VERSION="a803f87"
|
PKG_VERSION="27089f1e4d11fd7e0619097b59258d0428cde2ac"
|
||||||
|
PKG_GIT_CLONE_BRANCH="master"
|
||||||
;;
|
;;
|
||||||
RK356*)
|
RK356*)
|
||||||
PKG_URL="${PKG_SITE}/rk356x-uboot.git"
|
PKG_URL="${PKG_SITE}/rk356x-uboot.git"
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
From: Chris Morgan <macroalpha82@gmail.com>
|
||||||
|
To: u-boot@lists.denx.de
|
||||||
|
Cc: andre.przywara@arm.com, kever.yang@rock-chips.com,
|
||||||
|
philipp.tomsich@vrull.eu, sjg@chromium.org,
|
||||||
|
Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
Subject: [PATCH V3 0/7] Add Additional Boards and Features to RGxx3
|
||||||
|
Date: Mon, 11 Dec 2023 17:21:18 -0600 [thread overview]
|
||||||
|
Message-ID: <20231211232125.171438-1-macroalpha82@gmail.com> (raw)
|
||||||
|
|
||||||
|
From: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
|
||||||
|
The RGxx3 is a pseudo-device for U-Boot that works for every Anbernic
|
||||||
|
RGxx3 series device on the market. Add support for another series of
|
||||||
|
very similar devices from Powkiddy.
|
||||||
|
|
||||||
|
Changes since V2:
|
||||||
|
- Modify the mach-rockchip level rockchip_dnl_key_pressed() so that
|
||||||
|
we can also call it in SPL mode and eliminate the board specific
|
||||||
|
function. This requires adding ADC support to SPL. Additionally,
|
||||||
|
I had to change the regulator for the saradc to a fixed regulator
|
||||||
|
and add GPIO and regulator support to SPL.
|
||||||
|
- Move the board specific board_rng_seed to the mach-rockchip level
|
||||||
|
board file so that other rockchip boards with a hardware RNG can
|
||||||
|
benefit. This should only be called if both the Rockchip
|
||||||
|
hardware RNG as well as the rng seed functions are enabled.
|
||||||
|
- Add two new boards (the RG-ARC-D and RG-ARC-S). I removed the
|
||||||
|
previous code review due to the extensive changes made.
|
||||||
|
|
||||||
|
Changes since V1:
|
||||||
|
- Update verbiage around function button to say "recovery" mode
|
||||||
|
instead of calling it "maskrom" mode, which has a specific
|
||||||
|
meaning. Also note that recovery function was done in a board
|
||||||
|
specific manner to ensure it can run early.
|
||||||
|
- Update board level documentation for the RGxx3.
|
||||||
|
|
||||||
|
Chris Morgan (7):
|
||||||
|
board: rockchip: Refactor panel auto-detect code
|
||||||
|
spl: Add Kconfig options for ADC
|
||||||
|
rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL
|
||||||
|
board: rockchip: Add Recovery Button for Anbernic RGxx3
|
||||||
|
rockchip: board: Add board_rng_seed() for all Rockchip devices
|
||||||
|
board: rockchip: Add support for new boards to RGxx3
|
||||||
|
doc: board: anbernic: Update rgxx3 to add new boards
|
||||||
|
|
||||||
|
.../arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 +
|
||||||
|
arch/arm/mach-rockchip/Makefile | 4 +-
|
||||||
|
arch/arm/mach-rockchip/board.c | 32 +++
|
||||||
|
arch/arm/mach-rockchip/boot_mode.c | 11 +-
|
||||||
|
board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 194 +++++++++++-------
|
||||||
|
common/spl/Kconfig | 7 +
|
||||||
|
configs/anbernic-rgxx3-rk3566_defconfig | 16 +-
|
||||||
|
doc/board/anbernic/rgxx3.rst | 20 +-
|
||||||
|
drivers/Makefile | 1 +
|
||||||
|
drivers/adc/Makefile | 2 +-
|
||||||
|
include/configs/anbernic-rgxx3-rk3566.h | 2 +
|
||||||
|
11 files changed, 210 insertions(+), 90 deletions(-)
|
||||||
|
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
|
@ -0,0 +1,230 @@
|
||||||
|
From: Chris Morgan <macroalpha82@gmail.com>
|
||||||
|
To: u-boot@lists.denx.de
|
||||||
|
Cc: andre.przywara@arm.com, kever.yang@rock-chips.com,
|
||||||
|
philipp.tomsich@vrull.eu, sjg@chromium.org,
|
||||||
|
Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
Subject: [PATCH V3 1/7] board: rockchip: Refactor panel auto-detect code
|
||||||
|
Date: Mon, 11 Dec 2023 17:21:19 -0600 [thread overview]
|
||||||
|
Message-ID: <20231211232125.171438-2-macroalpha82@gmail.com> (raw)
|
||||||
|
In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com>
|
||||||
|
|
||||||
|
From: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
|
||||||
|
Make the inability to detect a panel using the auto detection code not
|
||||||
|
fail the entire boot process. This means that if the panel ID cannot
|
||||||
|
be read we don't set an environment variable for the panel, and if an
|
||||||
|
environment variable for the panel is not set we don't attempt to
|
||||||
|
update the compatible string. Changes to the code also ensure that
|
||||||
|
when there are multiple compatible strings required for the panel
|
||||||
|
we use them both, which solves some issues that will pop up soon
|
||||||
|
for the Linux driver.
|
||||||
|
|
||||||
|
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
---
|
||||||
|
board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 115 +++++++++++++--------
|
||||||
|
1 file changed, 74 insertions(+), 41 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
index 3f1a42d184..3d0c614623 100644
|
||||||
|
--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
@@ -40,6 +40,7 @@ struct rg3xx_model {
|
||||||
|
const char *board;
|
||||||
|
const char *board_name;
|
||||||
|
const char *fdtfile;
|
||||||
|
+ const bool detect_panel;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum rgxx3_device_id {
|
||||||
|
@@ -54,52 +55,67 @@ enum rgxx3_device_id {
|
||||||
|
|
||||||
|
static const struct rg3xx_model rg3xx_model_details[] = {
|
||||||
|
[RG353M] = {
|
||||||
|
- 517, /* Observed average from device */
|
||||||
|
- "rk3566-anbernic-rg353m",
|
||||||
|
- "RG353M",
|
||||||
|
- DTB_DIR "rk3566-anbernic-rg353p.dtb", /* Identical devices */
|
||||||
|
+ .adc_value = 517, /* Observed average from device */
|
||||||
|
+ .board = "rk3566-anbernic-rg353m",
|
||||||
|
+ .board_name = "RG353M",
|
||||||
|
+ /* Device is identical to RG353P. */
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb",
|
||||||
|
+ .detect_panel = 1,
|
||||||
|
},
|
||||||
|
[RG353P] = {
|
||||||
|
- 860, /* Documented value of 860 */
|
||||||
|
- "rk3566-anbernic-rg353p",
|
||||||
|
- "RG353P",
|
||||||
|
- DTB_DIR "rk3566-anbernic-rg353p.dtb",
|
||||||
|
+ .adc_value = 860, /* Documented value of 860 */
|
||||||
|
+ .board = "rk3566-anbernic-rg353p",
|
||||||
|
+ .board_name = "RG353P",
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb",
|
||||||
|
+ .detect_panel = 1,
|
||||||
|
},
|
||||||
|
[RG353V] = {
|
||||||
|
- 695, /* Observed average from device */
|
||||||
|
- "rk3566-anbernic-rg353v",
|
||||||
|
- "RG353V",
|
||||||
|
- DTB_DIR "rk3566-anbernic-rg353v.dtb",
|
||||||
|
+ .adc_value = 695, /* Observed average from device */
|
||||||
|
+ .board = "rk3566-anbernic-rg353v",
|
||||||
|
+ .board_name = "RG353V",
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353v.dtb",
|
||||||
|
+ .detect_panel = 1,
|
||||||
|
},
|
||||||
|
[RG503] = {
|
||||||
|
- 1023, /* Observed average from device */
|
||||||
|
- "rk3566-anbernic-rg503",
|
||||||
|
- "RG503",
|
||||||
|
- DTB_DIR "rk3566-anbernic-rg503.dtb",
|
||||||
|
+ .adc_value = 1023, /* Observed average from device */
|
||||||
|
+ .board = "rk3566-anbernic-rg503",
|
||||||
|
+ .board_name = "RG503",
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb",
|
||||||
|
+ .detect_panel = 0,
|
||||||
|
},
|
||||||
|
/* Devices with duplicate ADC value */
|
||||||
|
[RG353PS] = {
|
||||||
|
- 860, /* Observed average from device */
|
||||||
|
- "rk3566-anbernic-rg353ps",
|
||||||
|
- "RG353PS",
|
||||||
|
- DTB_DIR "rk3566-anbernic-rg353ps.dtb",
|
||||||
|
+ .adc_value = 860, /* Observed average from device */
|
||||||
|
+ .board = "rk3566-anbernic-rg353ps",
|
||||||
|
+ .board_name = "RG353PS",
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353ps.dtb",
|
||||||
|
+ .detect_panel = 1,
|
||||||
|
},
|
||||||
|
[RG353VS] = {
|
||||||
|
- 695, /* Gathered from second hand information */
|
||||||
|
- "rk3566-anbernic-rg353vs",
|
||||||
|
- "RG353VS",
|
||||||
|
- DTB_DIR "rk3566-anbernic-rg353vs.dtb",
|
||||||
|
+ .adc_value = 695, /* Gathered from second hand information */
|
||||||
|
+ .board = "rk3566-anbernic-rg353vs",
|
||||||
|
+ .board_name = "RG353VS",
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb",
|
||||||
|
+ .detect_panel = 1,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct rg353_panel {
|
||||||
|
const u16 id;
|
||||||
|
- const char *panel_compat;
|
||||||
|
+ const char *panel_compat[2];
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct rg353_panel rg353_panel_details[] = {
|
||||||
|
- { .id = 0x3052, .panel_compat = "newvision,nv3051d"},
|
||||||
|
- { .id = 0x3821, .panel_compat = "anbernic,rg353v-panel-v2"},
|
||||||
|
+ {
|
||||||
|
+ .id = 0x3052,
|
||||||
|
+ .panel_compat[0] = "anbernic,rg353p-panel",
|
||||||
|
+ .panel_compat[1] = "newvision,nv3051d",
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ .id = 0x3821,
|
||||||
|
+ .panel_compat[0] = "anbernic,rg353v-panel-v2",
|
||||||
|
+ .panel_compat[1] = NULL,
|
||||||
|
+ },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -298,11 +314,10 @@ int rgxx3_detect_display(void)
|
||||||
|
if (!panel) {
|
||||||
|
printf("Unable to identify panel_id %x\n",
|
||||||
|
(panel_id[0] << 8) | panel_id[1]);
|
||||||
|
- env_set("panel", "unknown");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- env_set("panel", panel->panel_compat);
|
||||||
|
+ env_set("panel", panel->panel_compat[0]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -367,13 +382,14 @@ int rgxx3_detect_device(void)
|
||||||
|
rg3xx_model_details[board_id].board_name);
|
||||||
|
env_set("fdtfile", rg3xx_model_details[board_id].fdtfile);
|
||||||
|
|
||||||
|
- /* Detect the panel type for any device that isn't a 503. */
|
||||||
|
- if (board_id == RG503)
|
||||||
|
+ /* Skip panel detection for when it is not needed. */
|
||||||
|
+ if (!rg3xx_model_details[board_id].detect_panel)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
+ /* Warn but don't fail for errors in auto-detection of the panel. */
|
||||||
|
ret = rgxx3_detect_display();
|
||||||
|
if (ret)
|
||||||
|
- return ret;
|
||||||
|
+ printf("Failed to detect panel type\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -400,7 +416,8 @@ int rk_board_late_init(void)
|
||||||
|
|
||||||
|
int ft_board_setup(void *blob, struct bd_info *bd)
|
||||||
|
{
|
||||||
|
- int node, ret;
|
||||||
|
+ const struct rg353_panel *panel = NULL;
|
||||||
|
+ int node, ret, i;
|
||||||
|
char *env;
|
||||||
|
|
||||||
|
/* No fixups necessary for the RG503 */
|
||||||
|
@@ -414,6 +431,12 @@ int ft_board_setup(void *blob, struct bd_info *bd)
|
||||||
|
rg3xx_model_details[RG353M].board_name,
|
||||||
|
sizeof(rg3xx_model_details[RG353M].board_name));
|
||||||
|
|
||||||
|
+ env = env_get("panel");
|
||||||
|
+ if (!env) {
|
||||||
|
+ printf("Can't get panel env\n");
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Check if the environment variable doesn't equal the panel.
|
||||||
|
* If it doesn't, update the devicetree to the correct panel.
|
||||||
|
@@ -424,12 +447,6 @@ int ft_board_setup(void *blob, struct bd_info *bd)
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
|
- env = env_get("panel");
|
||||||
|
- if (!env) {
|
||||||
|
- printf("Can't get panel env\n");
|
||||||
|
- return -ENODEV;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
ret = fdt_node_check_compatible(blob, node, env);
|
||||||
|
if (ret < 0)
|
||||||
|
return -ENODEV;
|
||||||
|
@@ -438,8 +455,24 @@ int ft_board_setup(void *blob, struct bd_info *bd)
|
||||||
|
if (!ret)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- do_fixup_by_path_string(blob, "/dsi@fe060000/panel@0",
|
||||||
|
- "compatible", env);
|
||||||
|
+ /* Panels don't match, search by first compatible value. */
|
||||||
|
+ for (i = 0; i < ARRAY_SIZE(rg353_panel_details); i++) {
|
||||||
|
+ if (!strcmp(env, rg353_panel_details[i].panel_compat[0])) {
|
||||||
|
+ panel = &rg353_panel_details[i];
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!panel) {
|
||||||
|
+ printf("Unable to identify panel by compat string\n");
|
||||||
|
+ return -ENODEV;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* Set the compatible with the auto-detected values */
|
||||||
|
+ fdt_setprop_string(blob, node, "compatible", panel->panel_compat[0]);
|
||||||
|
+ if (panel->panel_compat[1])
|
||||||
|
+ fdt_appendprop_string(blob, node, "compatible",
|
||||||
|
+ panel->panel_compat[1]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
From: Chris Morgan <macroalpha82@gmail.com>
|
||||||
|
To: u-boot@lists.denx.de
|
||||||
|
Cc: andre.przywara@arm.com, kever.yang@rock-chips.com,
|
||||||
|
philipp.tomsich@vrull.eu, sjg@chromium.org,
|
||||||
|
Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
Subject: [PATCH V3 2/7] spl: Add Kconfig options for ADC
|
||||||
|
Date: Mon, 11 Dec 2023 17:21:20 -0600 [thread overview]
|
||||||
|
Message-ID: <20231211232125.171438-3-macroalpha82@gmail.com> (raw)
|
||||||
|
In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com>
|
||||||
|
|
||||||
|
From: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
|
||||||
|
Add kconfig options to enable ADC in SPL
|
||||||
|
|
||||||
|
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
---
|
||||||
|
common/spl/Kconfig | 7 +++++++
|
||||||
|
drivers/Makefile | 1 +
|
||||||
|
drivers/adc/Makefile | 2 +-
|
||||||
|
3 files changed, 9 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
|
||||||
|
index c521b02f4a..ada9dcea5c 100644
|
||||||
|
--- a/common/spl/Kconfig
|
||||||
|
+++ b/common/spl/Kconfig
|
||||||
|
@@ -579,6 +579,13 @@ config SPL_FIT_IMAGE_TINY
|
||||||
|
ensure this information is available to the next image
|
||||||
|
invoked).
|
||||||
|
|
||||||
|
+config SPL_ADC
|
||||||
|
+ bool "Support ADC drivers"
|
||||||
|
+ help
|
||||||
|
+ Enable ADC drivers in SPL. These drivers can allow the reading of
|
||||||
|
+ analog values from one or more channels. Enable this option to
|
||||||
|
+ build the drivers in drivers/adc as part of an SPL build.
|
||||||
|
+
|
||||||
|
config SPL_CACHE
|
||||||
|
bool "Support CACHE drivers"
|
||||||
|
help
|
||||||
|
diff --git a/drivers/Makefile b/drivers/Makefile
|
||||||
|
index bf73b7718c..81ba2c534e 100644
|
||||||
|
--- a/drivers/Makefile
|
||||||
|
+++ b/drivers/Makefile
|
||||||
|
@@ -1,5 +1,6 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
+obj-$(CONFIG_$(SPL_)ADC) += adc/
|
||||||
|
obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/
|
||||||
|
obj-$(CONFIG_$(SPL_TPL_)BLK) += block/
|
||||||
|
obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/
|
||||||
|
diff --git a/drivers/adc/Makefile b/drivers/adc/Makefile
|
||||||
|
index 5336c82097..9eb07769b0 100644
|
||||||
|
--- a/drivers/adc/Makefile
|
||||||
|
+++ b/drivers/adc/Makefile
|
||||||
|
@@ -4,7 +4,7 @@
|
||||||
|
# Przemyslaw Marczak <p.marczak@samsung.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
-obj-$(CONFIG_ADC) += adc-uclass.o
|
||||||
|
+obj-$(CONFIG_$(SPL_)ADC) += adc-uclass.o
|
||||||
|
obj-$(CONFIG_ADC_EXYNOS) += exynos-adc.o
|
||||||
|
obj-$(CONFIG_ADC_SANDBOX) += sandbox.o
|
||||||
|
obj-$(CONFIG_SARADC_ROCKCHIP) += rockchip-saradc.o
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
From: Chris Morgan <macroalpha82@gmail.com>
|
||||||
|
To: u-boot@lists.denx.de
|
||||||
|
Cc: andre.przywara@arm.com, kever.yang@rock-chips.com,
|
||||||
|
philipp.tomsich@vrull.eu, sjg@chromium.org,
|
||||||
|
Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
Subject: [PATCH V3 3/7] rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL
|
||||||
|
Date: Mon, 11 Dec 2023 17:21:21 -0600 [thread overview]
|
||||||
|
Message-ID: <20231211232125.171438-4-macroalpha82@gmail.com> (raw)
|
||||||
|
In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com>
|
||||||
|
|
||||||
|
From: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
|
||||||
|
Update the rockchip_dnl_key_pressed() so that it can run in
|
||||||
|
SPL. Also change the ADC channel to a define that can be
|
||||||
|
overridden by a board specific option.
|
||||||
|
|
||||||
|
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
---
|
||||||
|
arch/arm/mach-rockchip/Makefile | 4 ++--
|
||||||
|
arch/arm/mach-rockchip/boot_mode.c | 11 ++++++++++-
|
||||||
|
2 files changed, 12 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
|
||||||
|
index 1dc92066bb..ff089ae949 100644
|
||||||
|
--- a/arch/arm/mach-rockchip/Makefile
|
||||||
|
+++ b/arch/arm/mach-rockchip/Makefile
|
||||||
|
@@ -15,13 +15,13 @@ obj-tpl-$(CONFIG_ROCKCHIP_PX30) += px30-board-tpl.o
|
||||||
|
|
||||||
|
obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o
|
||||||
|
|
||||||
|
-ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
|
||||||
|
-
|
||||||
|
# Always include boot_mode.o, as we bypass it (i.e. turn it off)
|
||||||
|
# inside of boot_mode.c when CONFIG_ROCKCHIP_BOOT_MODE_REG is 0. This way,
|
||||||
|
# we can have the preprocessor correctly recognise both 0x0 and 0
|
||||||
|
# meaning "turn it off".
|
||||||
|
obj-y += boot_mode.o
|
||||||
|
+
|
||||||
|
+ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
|
||||||
|
obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o
|
||||||
|
obj-$(CONFIG_MISC_INIT_R) += misc.o
|
||||||
|
endif
|
||||||
|
diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c
|
||||||
|
index eb8f65ae4e..d2308768be 100644
|
||||||
|
--- a/arch/arm/mach-rockchip/boot_mode.c
|
||||||
|
+++ b/arch/arm/mach-rockchip/boot_mode.c
|
||||||
|
@@ -38,6 +38,10 @@ void set_back_to_bootrom_dnl_flag(void)
|
||||||
|
#define KEY_DOWN_MIN_VAL 0
|
||||||
|
#define KEY_DOWN_MAX_VAL 30
|
||||||
|
|
||||||
|
+#ifndef RK_DNL_ADC_CHAN
|
||||||
|
+#define RK_DNL_ADC_CHAN 1
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
__weak int rockchip_dnl_key_pressed(void)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
@@ -52,7 +56,8 @@ __weak int rockchip_dnl_key_pressed(void)
|
||||||
|
ret = -ENODEV;
|
||||||
|
uclass_foreach_dev(dev, uc) {
|
||||||
|
if (!strncmp(dev->name, "saradc", 6)) {
|
||||||
|
- ret = adc_channel_single_shot(dev->name, 1, &val);
|
||||||
|
+ ret = adc_channel_single_shot(dev->name,
|
||||||
|
+ RK_DNL_ADC_CHAN, &val);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -73,11 +78,13 @@ __weak int rockchip_dnl_key_pressed(void)
|
||||||
|
|
||||||
|
void rockchip_dnl_mode_check(void)
|
||||||
|
{
|
||||||
|
+#if CONFIG_IS_ENABLED(ADC)
|
||||||
|
if (rockchip_dnl_key_pressed()) {
|
||||||
|
printf("download key pressed, entering download mode...");
|
||||||
|
set_back_to_bootrom_dnl_flag();
|
||||||
|
do_reset(NULL, 0, 0, NULL);
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int setup_boot_mode(void)
|
||||||
|
@@ -90,6 +97,7 @@ int setup_boot_mode(void)
|
||||||
|
boot_mode = readl(reg);
|
||||||
|
debug("%s: boot mode 0x%08x\n", __func__, boot_mode);
|
||||||
|
|
||||||
|
+#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD)
|
||||||
|
/* Clear boot mode */
|
||||||
|
writel(BOOT_NORMAL, reg);
|
||||||
|
|
||||||
|
@@ -103,6 +111,7 @@ int setup_boot_mode(void)
|
||||||
|
env_set("preboot", "setenv preboot; ums mmc 0");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
|
@ -0,0 +1,172 @@
|
||||||
|
From: Chris Morgan <macroalpha82@gmail.com>
|
||||||
|
To: u-boot@lists.denx.de
|
||||||
|
Cc: andre.przywara@arm.com, kever.yang@rock-chips.com,
|
||||||
|
philipp.tomsich@vrull.eu, sjg@chromium.org,
|
||||||
|
Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
Subject: [PATCH V3 4/7] board: rockchip: Add Recovery Button for Anbernic RGxx3
|
||||||
|
Date: Mon, 11 Dec 2023 17:21:22 -0600 [thread overview]
|
||||||
|
Message-ID: <20231211232125.171438-5-macroalpha82@gmail.com> (raw)
|
||||||
|
In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com>
|
||||||
|
|
||||||
|
From: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
|
||||||
|
Add support for users to enter recovery mode by holding the function
|
||||||
|
button when they power up the device.
|
||||||
|
|
||||||
|
Since the device has soldered eMMC and sometimes does not expose a clk
|
||||||
|
pin on the mainboard there is a small chance that a user who flashes a
|
||||||
|
bad bootloader may not be able to recover if the headers themselves
|
||||||
|
are valid. As a result this check is done during spl_early_init() to
|
||||||
|
ensure that it runs as early as possible, and it does so by directly
|
||||||
|
manipulating the ADC hardware in lieu of loading the ADC driver.
|
||||||
|
|
||||||
|
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
---
|
||||||
|
arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 +++++++++++
|
||||||
|
board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 6 +++++-
|
||||||
|
configs/anbernic-rgxx3-rk3566_defconfig | 16 ++++++++++++----
|
||||||
|
include/configs/anbernic-rgxx3-rk3566.h | 2 ++
|
||||||
|
4 files changed, 30 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi
|
||||||
|
index f986e1941e..e3ab196d22 100644
|
||||||
|
--- a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi
|
||||||
|
+++ b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi
|
||||||
|
@@ -76,6 +76,12 @@
|
||||||
|
/delete-property/ clock-names;
|
||||||
|
};
|
||||||
|
|
||||||
|
+&saradc {
|
||||||
|
+ bootph-all;
|
||||||
|
+ vref-supply = <&vcc_sys>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&sdhci {
|
||||||
|
pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>,
|
||||||
|
<&emmc_datastrobe>, <&emmc_rstnout>;
|
||||||
|
@@ -94,3 +100,8 @@
|
||||||
|
bootph-all;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+&vcc_sys {
|
||||||
|
+ bootph-all;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
index 3d0c614623..45854709f5 100644
|
||||||
|
--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
@@ -5,6 +5,7 @@
|
||||||
|
|
||||||
|
#include <abuf.h>
|
||||||
|
#include <adc.h>
|
||||||
|
+#include <asm/arch-rockchip/boot_mode.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <display.h>
|
||||||
|
#include <dm.h>
|
||||||
|
@@ -119,11 +120,14 @@ static const struct rg353_panel rg353_panel_details[] = {
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * Start LED very early so user knows device is on. Set color
|
||||||
|
+ * Check if rockchip_dnl button is pressed and reboot into rockusb if
|
||||||
|
+ * true. Start LED very early so user knows device is on. Set color
|
||||||
|
* to red.
|
||||||
|
*/
|
||||||
|
void spl_board_init(void)
|
||||||
|
{
|
||||||
|
+ setup_boot_mode();
|
||||||
|
+
|
||||||
|
/* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */
|
||||||
|
writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \
|
||||||
|
(GPIO_C7 | GPIO_C6 | GPIO_C5),
|
||||||
|
diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig
|
||||||
|
index ed6643d9d4..4e72f75815 100644
|
||||||
|
--- a/configs/anbernic-rgxx3-rk3566_defconfig
|
||||||
|
+++ b/configs/anbernic-rgxx3-rk3566_defconfig
|
||||||
|
@@ -3,6 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y
|
||||||
|
CONFIG_COUNTER_FREQUENCY=24000000
|
||||||
|
CONFIG_ARCH_ROCKCHIP=y
|
||||||
|
CONFIG_TEXT_BASE=0x00a00000
|
||||||
|
+CONFIG_SPL_GPIO=y
|
||||||
|
CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||||
|
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||||
|
CONFIG_NR_DRAM_BANKS=2
|
||||||
|
@@ -24,7 +25,9 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||||
|
CONFIG_DEBUG_UART=y
|
||||||
|
CONFIG_FIT=y
|
||||||
|
CONFIG_FIT_VERBOSE=y
|
||||||
|
+CONFIG_SPL_FIT_SIGNATURE=y
|
||||||
|
CONFIG_SPL_LOAD_FIT=y
|
||||||
|
+CONFIG_LEGACY_IMAGE_FORMAT=y
|
||||||
|
CONFIG_OF_BOARD_SETUP=y
|
||||||
|
CONFIG_OF_STDOUT_VIA_ALIAS=y
|
||||||
|
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb"
|
||||||
|
@@ -32,7 +35,7 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb"
|
||||||
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
|
CONFIG_BOARD_RNG_SEED=y
|
||||||
|
-CONFIG_SPL_MAX_SIZE=0x20000
|
||||||
|
+CONFIG_SPL_MAX_SIZE=0x40000
|
||||||
|
CONFIG_SPL_PAD_TO=0x7f8000
|
||||||
|
CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
|
||||||
|
CONFIG_SPL_BSS_START_ADDR=0x4000000
|
||||||
|
@@ -41,6 +44,8 @@ CONFIG_SPL_BOARD_INIT=y
|
||||||
|
# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
|
||||||
|
# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
|
||||||
|
CONFIG_SPL_STACK_R=y
|
||||||
|
+CONFIG_SPL_ADC=y
|
||||||
|
+CONFIG_SPL_POWER=y
|
||||||
|
CONFIG_SPL_ATF=y
|
||||||
|
CONFIG_CMD_PWM=y
|
||||||
|
CONFIG_CMD_GPT=y
|
||||||
|
@@ -50,8 +55,10 @@ CONFIG_CMD_MMC=y
|
||||||
|
# CONFIG_SPL_DOS_PARTITION is not set
|
||||||
|
CONFIG_SPL_OF_CONTROL=y
|
||||||
|
CONFIG_OF_LIVE=y
|
||||||
|
+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
|
||||||
|
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
|
||||||
|
# CONFIG_NET is not set
|
||||||
|
+CONFIG_SPL_DM_SEQ_ALIAS=y
|
||||||
|
CONFIG_SPL_REGMAP=y
|
||||||
|
CONFIG_SPL_SYSCON=y
|
||||||
|
CONFIG_SPL_CLK=y
|
||||||
|
@@ -67,13 +74,13 @@ CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_SDMA=y
|
||||||
|
CONFIG_MMC_SDHCI_ROCKCHIP=y
|
||||||
|
CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y
|
||||||
|
+CONFIG_SPL_PINCTRL=y
|
||||||
|
CONFIG_DM_PMIC=y
|
||||||
|
CONFIG_DM_PMIC_FAN53555=y
|
||||||
|
CONFIG_PMIC_RK8XX=y
|
||||||
|
-CONFIG_REGULATOR_PWM=y
|
||||||
|
-CONFIG_DM_REGULATOR_GPIO=y
|
||||||
|
+CONFIG_SPL_DM_REGULATOR=y
|
||||||
|
+CONFIG_SPL_DM_REGULATOR_FIXED=y
|
||||||
|
CONFIG_REGULATOR_RK8XX=y
|
||||||
|
-CONFIG_DM_REGULATOR_SCMI=y
|
||||||
|
CONFIG_PWM_ROCKCHIP=y
|
||||||
|
CONFIG_SPL_RAM=y
|
||||||
|
# CONFIG_RAM_ROCKCHIP_DEBUG is not set
|
||||||
|
@@ -89,5 +96,6 @@ CONFIG_VIDEO_ROCKCHIP=y
|
||||||
|
CONFIG_DISPLAY_ROCKCHIP_DW_MIPI=y
|
||||||
|
CONFIG_VIDEO_BRIDGE=y
|
||||||
|
CONFIG_REGEX=y
|
||||||
|
+# CONFIG_RSA is not set
|
||||||
|
CONFIG_ERRNO_STR=y
|
||||||
|
# CONFIG_EFI_LOADER is not set
|
||||||
|
diff --git a/include/configs/anbernic-rgxx3-rk3566.h b/include/configs/anbernic-rgxx3-rk3566.h
|
||||||
|
index 3c4ea4e7d8..2aaac55c06 100644
|
||||||
|
--- a/include/configs/anbernic-rgxx3-rk3566.h
|
||||||
|
+++ b/include/configs/anbernic-rgxx3-rk3566.h
|
||||||
|
@@ -9,4 +9,6 @@
|
||||||
|
"stdout=serial,vidconsole\0" \
|
||||||
|
"stderr=serial,vidconsole\0"
|
||||||
|
|
||||||
|
+#define RK_DNL_ADC_CHAN 0
|
||||||
|
+
|
||||||
|
#endif
|
||||||
|
--
|
||||||
|
2.34.1
|
|
@ -0,0 +1,110 @@
|
||||||
|
From: Chris Morgan <macroalpha82@gmail.com>
|
||||||
|
To: u-boot@lists.denx.de
|
||||||
|
Cc: andre.przywara@arm.com, kever.yang@rock-chips.com,
|
||||||
|
philipp.tomsich@vrull.eu, sjg@chromium.org,
|
||||||
|
Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
Subject: [PATCH V3 5/7] rockchip: board: Add board_rng_seed() for all Rockchip devices
|
||||||
|
Date: Mon, 11 Dec 2023 17:21:23 -0600 [thread overview]
|
||||||
|
Message-ID: <20231211232125.171438-6-macroalpha82@gmail.com> (raw)
|
||||||
|
In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com>
|
||||||
|
|
||||||
|
From: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
|
||||||
|
Allow all rockchip devices to use the hardware RNG to seed Linux
|
||||||
|
RNG.
|
||||||
|
|
||||||
|
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
---
|
||||||
|
arch/arm/mach-rockchip/board.c | 32 ++++++++++++++++++++++
|
||||||
|
board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 29 --------------------
|
||||||
|
2 files changed, 32 insertions(+), 29 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
|
||||||
|
index 57f08e0be0..77145524ea 100644
|
||||||
|
--- a/arch/arm/mach-rockchip/board.c
|
||||||
|
+++ b/arch/arm/mach-rockchip/board.c
|
||||||
|
@@ -348,3 +348,35 @@ __weak int misc_init_r(void)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP)
|
||||||
|
+#include <rng.h>
|
||||||
|
+
|
||||||
|
+/* Use hardware rng to seed Linux random. */
|
||||||
|
+__weak int board_rng_seed(struct abuf *buf)
|
||||||
|
+{
|
||||||
|
+ struct udevice *dev;
|
||||||
|
+ size_t len = 0x8;
|
||||||
|
+ u64 *data;
|
||||||
|
+
|
||||||
|
+ data = malloc(len);
|
||||||
|
+ if (!data) {
|
||||||
|
+ printf("Out of memory\n");
|
||||||
|
+ return -ENOMEM;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) {
|
||||||
|
+ printf("No RNG device\n");
|
||||||
|
+ return -ENODEV;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (dm_rng_read(dev, data, len)) {
|
||||||
|
+ printf("Reading RNG failed\n");
|
||||||
|
+ return -EIO;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ abuf_init_set(buf, data, len);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
index 45854709f5..7bef5a53f0 100644
|
||||||
|
--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
@@ -17,7 +17,6 @@
|
||||||
|
#include <mmc.h>
|
||||||
|
#include <panel.h>
|
||||||
|
#include <pwm.h>
|
||||||
|
-#include <rng.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <video_bridge.h>
|
||||||
|
|
||||||
|
@@ -137,34 +136,6 @@ void spl_board_init(void)
|
||||||
|
(GPIO0_BASE + GPIO_SWPORT_DR_H));
|
||||||
|
}
|
||||||
|
|
||||||
|
-/* Use hardware rng to seed Linux random. */
|
||||||
|
-int board_rng_seed(struct abuf *buf)
|
||||||
|
-{
|
||||||
|
- struct udevice *dev;
|
||||||
|
- size_t len = 0x8;
|
||||||
|
- u64 *data;
|
||||||
|
-
|
||||||
|
- data = malloc(len);
|
||||||
|
- if (!data) {
|
||||||
|
- printf("Out of memory\n");
|
||||||
|
- return -ENOMEM;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) {
|
||||||
|
- printf("No RNG device\n");
|
||||||
|
- return -ENODEV;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (dm_rng_read(dev, data, len)) {
|
||||||
|
- printf("Reading RNG failed\n");
|
||||||
|
- return -EIO;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- abuf_init_set(buf, data, len);
|
||||||
|
-
|
||||||
|
- return 0;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* Buzz the buzzer so the user knows something is going on. Make it
|
||||||
|
* optional in case PWM is disabled.
|
||||||
|
--
|
||||||
|
2.34.1
|
|
@ -0,0 +1,112 @@
|
||||||
|
From: Chris Morgan <macroalpha82@gmail.com>
|
||||||
|
To: u-boot@lists.denx.de
|
||||||
|
Cc: andre.przywara@arm.com, kever.yang@rock-chips.com,
|
||||||
|
philipp.tomsich@vrull.eu, sjg@chromium.org,
|
||||||
|
Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
Subject: [PATCH V3 6/7] board: rockchip: Add support for new boards to RGxx3
|
||||||
|
Date: Mon, 11 Dec 2023 17:21:24 -0600 [thread overview]
|
||||||
|
Message-ID: <20231211232125.171438-7-macroalpha82@gmail.com> (raw)
|
||||||
|
In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com>
|
||||||
|
|
||||||
|
From: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
|
||||||
|
Add support for the Anbernic RG-ARC-D, Anbernic RG-ARC-S, Powkiddy
|
||||||
|
RK2023, and Powkiddy RGB30 to the Anbernic RGxx3. While the Powkiddy
|
||||||
|
devices are manufactured by Powkiddy instead of Anbernic,
|
||||||
|
the hardware is so similar they can all use the same bootloader.
|
||||||
|
|
||||||
|
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
---
|
||||||
|
board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 44 +++++++++++++++++++---
|
||||||
|
1 file changed, 39 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
index 7bef5a53f0..2445663d43 100644
|
||||||
|
--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
|
||||||
|
@@ -48,9 +48,13 @@ enum rgxx3_device_id {
|
||||||
|
RG353P,
|
||||||
|
RG353V,
|
||||||
|
RG503,
|
||||||
|
+ RGB30,
|
||||||
|
+ RK2023,
|
||||||
|
+ RGARCD,
|
||||||
|
/* Devices with duplicate ADC value */
|
||||||
|
RG353PS,
|
||||||
|
RG353VS,
|
||||||
|
+ RGARCS,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct rg3xx_model rg3xx_model_details[] = {
|
||||||
|
@@ -83,6 +87,27 @@ static const struct rg3xx_model rg3xx_model_details[] = {
|
||||||
|
.fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb",
|
||||||
|
.detect_panel = 0,
|
||||||
|
},
|
||||||
|
+ [RGB30] = {
|
||||||
|
+ .adc_value = 383, /* Gathered from second hand information */
|
||||||
|
+ .board = "rk3566-powkiddy-rgb30",
|
||||||
|
+ .board_name = "RGB30",
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb",
|
||||||
|
+ .detect_panel = 0,
|
||||||
|
+ },
|
||||||
|
+ [RK2023] = {
|
||||||
|
+ .adc_value = 635, /* Observed average from device */
|
||||||
|
+ .board = "rk3566-powkiddy-rk2023",
|
||||||
|
+ .board_name = "RK2023",
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-powkiddy-rk2023.dtb",
|
||||||
|
+ .detect_panel = 0,
|
||||||
|
+ },
|
||||||
|
+ [RGARCD] = {
|
||||||
|
+ .adc_value = 183, /* Observed average from device */
|
||||||
|
+ .board = "rk3566-anbernic-rg-arc-d",
|
||||||
|
+ .board_name = "Anbernic RG ARC-D",
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb",
|
||||||
|
+ .detect_panel = 0,
|
||||||
|
+ },
|
||||||
|
/* Devices with duplicate ADC value */
|
||||||
|
[RG353PS] = {
|
||||||
|
.adc_value = 860, /* Observed average from device */
|
||||||
|
@@ -98,6 +123,13 @@ static const struct rg3xx_model rg3xx_model_details[] = {
|
||||||
|
.fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb",
|
||||||
|
.detect_panel = 1,
|
||||||
|
},
|
||||||
|
+ [RGARCS] = {
|
||||||
|
+ .adc_value = 183, /* Observed average from device */
|
||||||
|
+ .board = "rk3566-anbernic-rg-arc-s",
|
||||||
|
+ .board_name = "Anbernic RG ARC-S",
|
||||||
|
+ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-s.dtb",
|
||||||
|
+ .detect_panel = 0,
|
||||||
|
+ },
|
||||||
|
};
|
||||||
|
|
||||||
|
struct rg353_panel {
|
||||||
|
@@ -332,19 +364,21 @@ int rgxx3_detect_device(void)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * Try to access the eMMC on an RG353V or RG353P. If it's
|
||||||
|
- * missing, it's an RG353VS or RG353PS. Note we could also
|
||||||
|
- * check for a touchscreen at 0x1a on i2c2.
|
||||||
|
+ * Try to access the eMMC on an RG353V, RG353P, or RG Arc D.
|
||||||
|
+ * If it's missing, it's an RG353VS, RG353PS, or RG Arc S.
|
||||||
|
+ * Note we could also check for a touchscreen at 0x1a on i2c2.
|
||||||
|
*/
|
||||||
|
- if (board_id == RG353V || board_id == RG353P) {
|
||||||
|
+ if (board_id == RG353V || board_id == RG353P || board_id == RGARCD) {
|
||||||
|
mmc = find_mmc_device(0);
|
||||||
|
if (mmc) {
|
||||||
|
ret = mmc_init(mmc);
|
||||||
|
if (ret) {
|
||||||
|
if (board_id == RG353V)
|
||||||
|
board_id = RG353VS;
|
||||||
|
- else
|
||||||
|
+ if (board_id == RG353P)
|
||||||
|
board_id = RG353PS;
|
||||||
|
+ else
|
||||||
|
+ board_id = RGARCS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
From: Chris Morgan <macroalpha82@gmail.com>
|
||||||
|
To: u-boot@lists.denx.de
|
||||||
|
Cc: andre.przywara@arm.com, kever.yang@rock-chips.com,
|
||||||
|
philipp.tomsich@vrull.eu, sjg@chromium.org,
|
||||||
|
Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
Subject: [PATCH V3 7/7] doc: board: anbernic: Update rgxx3 to add new boards
|
||||||
|
Date: Mon, 11 Dec 2023 17:21:25 -0600 [thread overview]
|
||||||
|
Message-ID: <20231211232125.171438-8-macroalpha82@gmail.com> (raw)
|
||||||
|
In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com>
|
||||||
|
|
||||||
|
From: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
|
||||||
|
Update the RGxx3 documentation to note that it now supports the
|
||||||
|
RG-ARC-D, RG-ARC-S, Powkiddy RK2023, and Powkiddy RGB30. Also update
|
||||||
|
verbiage around panel detection to note that it is no longer hard coded
|
||||||
|
to the RG503.
|
||||||
|
|
||||||
|
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
---
|
||||||
|
doc/board/anbernic/rgxx3.rst | 20 ++++++++++++++------
|
||||||
|
1 file changed, 14 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/doc/board/anbernic/rgxx3.rst b/doc/board/anbernic/rgxx3.rst
|
||||||
|
index 7d1beb423c..d159ed2f76 100644
|
||||||
|
--- a/doc/board/anbernic/rgxx3.rst
|
||||||
|
+++ b/doc/board/anbernic/rgxx3.rst
|
||||||
|
@@ -5,6 +5,8 @@ U-Boot for Anbernic RGxx3 Devices
|
||||||
|
|
||||||
|
This allows U-Boot to boot the following Anbernic devices:
|
||||||
|
|
||||||
|
+ - Anbernic RG-ARC-D
|
||||||
|
+ - Anbernic RG-ARC-S
|
||||||
|
- Anbernic RG353M
|
||||||
|
- Anbernic RG353P
|
||||||
|
- Anbernic RG353PS
|
||||||
|
@@ -12,18 +14,24 @@ This allows U-Boot to boot the following Anbernic devices:
|
||||||
|
- Anbernic RG353VS
|
||||||
|
- Anbernic RG503
|
||||||
|
|
||||||
|
+Additionally, the following very similar non-Anbernic devices are also
|
||||||
|
+supported:
|
||||||
|
+
|
||||||
|
+ - Powkiddy RGB30
|
||||||
|
+ - Powkiddy RK2023
|
||||||
|
+
|
||||||
|
The correct device is detected automatically by comparing ADC values
|
||||||
|
from ADC channel 1. In the event of an RG353V or RG353P, an attempt
|
||||||
|
is then made to probe for an eMMC and if it fails the device is assumed
|
||||||
|
to be an RG353VS or RG353PS. Based on the detected device, the
|
||||||
|
environment variables "board", "board_name", and "fdtfile" are set to
|
||||||
|
the correct values corresponding to the board which can be read by a
|
||||||
|
-boot script to boot with the correct device tree. If the board detected
|
||||||
|
-is not of type RG503 (which currently has only 1 panel revision) a
|
||||||
|
-panel detect is then performed by probing a "dummy" display on the DSI
|
||||||
|
-bus and then querying the display ID. The display ID is then compared
|
||||||
|
-to a table to get the known compatible string for use in Linux, and
|
||||||
|
-this string is saved as an environment variable of "panel".
|
||||||
|
+boot script to boot with the correct device tree. If a board is defined
|
||||||
|
+as requiring panel detection, a panel detect is then performed by
|
||||||
|
+probing a "dummy" display on the DSI bus and then querying the display
|
||||||
|
+ID. The display ID is then compared to a table to get the known
|
||||||
|
+compatible string for use in Linux, and this string is saved as an
|
||||||
|
+environment variable of "panel".
|
||||||
|
|
||||||
|
FDT fixups are performed in the event of an RG353M to change the device
|
||||||
|
name, or in the event the panel detected does not match the devicetree.
|
||||||
|
--
|
||||||
|
2.34.1
|
Loading…
Reference in a new issue