summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2025-01-23 08:16:15 -0600
committerTom Rini <[email protected]>2025-01-23 08:16:15 -0600
commite67cbd7aba607c4fa0a5f406faf82ba00fe44b9b (patch)
tree0154d00e2b0e27d1c6d7b0747b5eb97c79667d1c /board
parenta3b71cc6f5cc74d4edc5808790a3d2999ea3f7fe (diff)
parent73cbb3baa6ae26dc8693feb449f48a535292e7e5 (diff)
Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-sunxi
Following the move of the H616 family to OF_UPSTREAM in the last cycle, now some older SoCs with identical DTs follow the lead: the F1C100s, A10, A10s, A13. The remaining SoCs suffer from that IRQ cells incompatiblity, breaking support for Linux < v5.13, so I am holding their move back still. Otherwise we get proper support for the PinePhone v1.2, and PSTORE support for all revisions of that device. This is rounded up by a PMIC related fix for some A80 boards, and two cleanup patches that are preparations for two new SoCs families, being worked on as we speak. But they have to wait for the next cycle. Gitlab CI passed, and I booted that briefly on some boards.
Diffstat (limited to 'board')
-rw-r--r--board/sunxi/board.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 824c322a0dc..c7a2205ed61 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -14,6 +14,7 @@
#include <dm.h>
#include <env.h>
#include <hang.h>
+#include <i2c.h>
#include <image.h>
#include <init.h>
#include <log.h>
@@ -577,7 +578,6 @@ void sunxi_board_init(void)
#ifdef CONFIG_AXP_DCDC1_VOLT
power_failed |= axp_set_dcdc1(CONFIG_AXP_DCDC1_VOLT);
- power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT);
#endif
#ifdef CONFIG_AXP_DCDC2_VOLT
power_failed |= axp_set_dcdc2(CONFIG_AXP_DCDC2_VOLT);
@@ -586,6 +586,9 @@ void sunxi_board_init(void)
#ifdef CONFIG_AXP_DCDC4_VOLT
power_failed |= axp_set_dcdc4(CONFIG_AXP_DCDC4_VOLT);
#endif
+#ifdef CONFIG_AXP_DCDC5_VOLT
+ power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT);
+#endif
#ifdef CONFIG_AXP_ALDO1_VOLT
power_failed |= axp_set_aldo1(CONFIG_AXP_ALDO1_VOLT);
@@ -876,6 +879,27 @@ static void bluetooth_dt_fixup(void *blob)
"local-bd-address", bdaddr, ETH_ALEN, 1);
}
+#define PINEPHONE_LIS3MDL_I2C_ADDR 0x1e
+#define PINEPHONE_LIS3MDL_I2C_BUS 1 /* I2C1 */
+
+static void board_dt_fixup(void *blob)
+{
+ struct udevice *bus, *dev;
+
+ if (IS_ENABLED(CONFIG_PINEPHONE_DT_SELECTION) &&
+ !fdt_node_check_compatible(blob, 0, "pine64,pinephone-1.2")) {
+ if (!uclass_get_device_by_seq(UCLASS_I2C,
+ PINEPHONE_LIS3MDL_I2C_BUS,
+ &bus)) {
+ dm_i2c_probe(bus, PINEPHONE_LIS3MDL_I2C_ADDR, 0, &dev);
+ fdt_set_status_by_compatible(blob, "st,lis3mdl-magn",
+ dev ? FDT_STATUS_OKAY : FDT_STATUS_DISABLED);
+ fdt_set_status_by_compatible(blob, "voltafield,af8133j",
+ dev ? FDT_STATUS_DISABLED : FDT_STATUS_OKAY);
+ }
+ }
+}
+
int ft_board_setup(void *blob, struct bd_info *bd)
{
int __maybe_unused r;
@@ -889,6 +913,7 @@ int ft_board_setup(void *blob, struct bd_info *bd)
fdt_fixup_ethernet(blob);
bluetooth_dt_fixup(blob);
+ board_dt_fixup(blob);
#ifdef CONFIG_VIDEO_DT_SIMPLEFB
r = sunxi_simplefb_setup(blob);