* [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet
@ 2025-08-06 22:27 Sam Protsenko
2025-08-06 22:27 ` [PATCH 01/10] usb: host: dwc3-of-simple: Add exynos850 compatible Sam Protsenko
` (11 more replies)
0 siblings, 12 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
The E850-96 board has a LAN9514 chip which acts as a USB hub and
Ethernet controller. It's connected to the SoC via USB lines. In order
to make this chip functional the USB controller in Exynos850 SoC has to
be configured in the host role, and the corresponding power regulator
has to be enabled as well.
This patch series enables USB host and network support on the E850-96 by
making use of the LAN9514 chip. While at it, enable all power regulators
(LDO) in the PMIC chip which can be useful in the bootloader and kernel,
including the regulator used for LAN9514.
Sam Protsenko (10):
usb: host: dwc3-of-simple: Add exynos850 compatible
board: samsung: e850-96: Set ethaddr
board: samsung: e850-96: Add ACPM code
board: samsung: e850-96: Add PMIC code
board: samsung: e850-96: Configure PMIC regulators
board: samsung: e850-96: Extract device info from fw loading code
board: samsung: e850-96: Add bootdev var to choose boot device
configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE
configs: e850-96: Enable USB host support
configs: e850-96: Enable Ethernet
board/samsung/e850-96/Makefile | 2 +-
board/samsung/e850-96/acpm.c | 169 ++++++++++++++++++++++++++++++
board/samsung/e850-96/acpm.h | 27 +++++
board/samsung/e850-96/e850-96.c | 97 +++++++++++++++--
board/samsung/e850-96/e850-96.env | 2 +-
board/samsung/e850-96/fw.c | 45 ++++----
board/samsung/e850-96/fw.h | 4 +-
board/samsung/e850-96/pmic.c | 144 +++++++++++++++++++++++++
board/samsung/e850-96/pmic.h | 14 +++
configs/e850-96_defconfig | 10 +-
drivers/usb/host/dwc3-of-simple.c | 1 +
11 files changed, 482 insertions(+), 33 deletions(-)
create mode 100644 board/samsung/e850-96/acpm.c
create mode 100644 board/samsung/e850-96/acpm.h
create mode 100644 board/samsung/e850-96/pmic.c
create mode 100644 board/samsung/e850-96/pmic.h
--
2.39.5
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 01/10] usb: host: dwc3-of-simple: Add exynos850 compatible
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-22 19:06 ` Marek Vasut
2025-08-06 22:27 ` [PATCH 02/10] board: samsung: e850-96: Set ethaddr Sam Protsenko
` (10 subsequent siblings)
11 siblings, 1 reply; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
Enable support for Exynos850 SoC in DWC3 host glue layer driver.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
drivers/usb/host/dwc3-of-simple.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/usb/host/dwc3-of-simple.c b/drivers/usb/host/dwc3-of-simple.c
index d52e7d22d1a7..362178b79004 100644
--- a/drivers/usb/host/dwc3-of-simple.c
+++ b/drivers/usb/host/dwc3-of-simple.c
@@ -91,6 +91,7 @@ static int dwc3_of_simple_remove(struct udevice *dev)
static const struct udevice_id dwc3_of_simple_ids[] = {
{ .compatible = "amlogic,meson-gxl-dwc3" },
{ .compatible = "rockchip,rk3399-dwc3" },
+ { .compatible = "samsung,exynos850-dwusb3" },
{ .compatible = "ti,dwc3" },
{ }
};
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 02/10] board: samsung: e850-96: Set ethaddr
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
2025-08-06 22:27 ` [PATCH 01/10] usb: host: dwc3-of-simple: Add exynos850 compatible Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-06 22:27 ` [PATCH 03/10] board: samsung: e850-96: Add ACPM code Sam Protsenko
` (9 subsequent siblings)
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
Set the environment variable for Ethernet MAC address (ethaddr). Use the
SoC ID to make sure it's unique. It'll be formatted in a way that
follows the consecutive style of the serial number ("serial#" variable),
i.e.:
OTP_CHIPID0 = 0xf51c8113
OTP_CHIPID1 = 0x236
get_chip_id() = 0x236f51c8113
serial# = 00000236f51c8113
ethaddr = 02:36:f5:1c:81:13
where corresponding bytes of the MAC address are:
mac_addr[0] = 0x02 // OTP_CHIPID1[15:8]
mac_addr[1] = 0x36 // OTP_CHIPID1[7:0]
mac_addr[2] = 0xf5 // OTP_CHIPID0[31:24]
mac_addr[3] = 0x1c // OTP_CHIPID0[23:16]
mac_addr[4] = 0x81 // OTP_CHIPID0[15:8]
mac_addr[5] = 0x13 // OTP_CHIPID0[7:0]
because OTP_CHIPID1 has only 16 significant bits (with actual ID
values), and all 32 bits of OTP_CHIPID0 are significant.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
board/samsung/e850-96/e850-96.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/board/samsung/e850-96/e850-96.c b/board/samsung/e850-96/e850-96.c
index a6c264d12481..d489716bfdf2 100644
--- a/board/samsung/e850-96/e850-96.c
+++ b/board/samsung/e850-96/e850-96.c
@@ -8,6 +8,7 @@
#include <env.h>
#include <init.h>
#include <mapmem.h>
+#include <net.h>
#include <asm/io.h>
#include "fw.h"
@@ -92,11 +93,35 @@ static void setup_serial(void)
env_set("serial#", serial_str);
}
+static void setup_ethaddr(void)
+{
+ u64 serial_num;
+ u32 mac_hi, mac_lo;
+ u8 mac_addr[6];
+
+ if (env_get("ethaddr"))
+ return;
+
+ serial_num = get_chip_id();
+ mac_lo = (u32)serial_num; /* OTP_CHIPID0 */
+ mac_hi = (u32)(serial_num >> 32UL); /* OTP_CHIPID1 */
+ mac_addr[0] = (mac_hi >> 8) & 0xff;
+ mac_addr[1] = mac_hi & 0xff;
+ mac_addr[2] = (mac_lo >> 24) & 0xff;
+ mac_addr[3] = (mac_lo >> 16) & 0xff;
+ mac_addr[4] = (mac_lo >> 8) & 0xff;
+ mac_addr[5] = mac_lo & 0xff;
+ mac_addr[0] &= ~0x1; /* make sure it's not a multicast address */
+ if (is_valid_ethaddr(mac_addr))
+ eth_env_set_enetaddr("ethaddr", mac_addr);
+}
+
int board_late_init(void)
{
int err;
setup_serial();
+ setup_ethaddr();
/*
* Do this in board_late_init() to make sure MMC is not probed before
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 03/10] board: samsung: e850-96: Add ACPM code
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
2025-08-06 22:27 ` [PATCH 01/10] usb: host: dwc3-of-simple: Add exynos850 compatible Sam Protsenko
2025-08-06 22:27 ` [PATCH 02/10] board: samsung: e850-96: Set ethaddr Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-06 22:27 ` [PATCH 04/10] board: samsung: e850-96: Add PMIC code Sam Protsenko
` (8 subsequent siblings)
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
Add functions to access I3C bus via APM (Active Power Management) core
by using ACPM IPC protocol. It will be further used for configuring PMIC
chip voltage regulators.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
board/samsung/e850-96/Makefile | 2 +-
board/samsung/e850-96/acpm.c | 169 +++++++++++++++++++++++++++++++++
board/samsung/e850-96/acpm.h | 27 ++++++
3 files changed, 197 insertions(+), 1 deletion(-)
create mode 100644 board/samsung/e850-96/acpm.c
create mode 100644 board/samsung/e850-96/acpm.h
diff --git a/board/samsung/e850-96/Makefile b/board/samsung/e850-96/Makefile
index 71d46ea3d2b4..08eb8dca5bf7 100644
--- a/board/samsung/e850-96/Makefile
+++ b/board/samsung/e850-96/Makefile
@@ -3,4 +3,4 @@
# Copyright (C) 2024, Linaro Limited
# Sam Protsenko <semen.protsenko@linaro.org>
-obj-y := e850-96.o fw.o
+obj-y := e850-96.o fw.o acpm.o
diff --git a/board/samsung/e850-96/acpm.c b/board/samsung/e850-96/acpm.c
new file mode 100644
index 000000000000..1cc5c6d0e4a3
--- /dev/null
+++ b/board/samsung/e850-96/acpm.c
@@ -0,0 +1,169 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2025 Linaro Ltd.
+ * Author: Sam Protsenko <semen.protsenko@linaro.org>
+ *
+ * ACPM (Active Clock and Power Management) is an IPC protocol for communicating
+ * with APM (Active Power Management) core. The message exchange between AP
+ * (Application Processor) and APM is happening by using shared memory in SRAM
+ * (iRAM) and generating interrupts using Mailbox block. By using this IPC
+ * interface it's possible to offload power management tasks to APM core, which
+ * acts as a supervisor for CPU. One of the main tasks of APM is controlling
+ * PMIC chip over I3C bus. So in order to access PMIC chip registers it's
+ * recommended to do so by sending corresponding commands to APM via ACPM IPC
+ * protocol. The IPC interaction sequence looks like this:
+ *
+ * AP (CPU) <-> ACPM IPC (Mailbox + SRAM) <-> APM <-> I3C <-> PMIC
+ *
+ * This file contains functions for accessing I3C bus via APM block using
+ * ACPM IPC.
+ */
+
+#include <linux/iopoll.h>
+#include <linux/time.h>
+#include <asm/io.h>
+#include "acpm.h"
+
+/* Mailbox registers */
+#define MBOX_INTGR0 0x8 /* Interrupt Generation */
+#define MBOX_INTCR1 0x20 /* Interrupt Clear */
+#define MBOX_INTSR1 0x28 /* Interrupt Status */
+#define MBOX_INTGR_OFFSET 16
+#define MBOX_TIMEOUT (1 * USEC_PER_SEC)
+
+/* APM shared memory registers */
+#define SHMEM_SR0 0x0
+#define SHMEM_SR1 0x4
+#define SHMEM_SR2 0x8
+#define SHMEM_SR3 0xc
+
+/* IPC functions */
+#define IPC_FUNC_READ 0x0
+#define IPC_FUNC_WRITE 0x1
+/* Command 0 shifts and masks */
+#define IPC_REG_SHIFT 0
+#define IPC_REG_MASK 0xff
+#define IPC_TYPE_SHIFT 8
+#define IPC_TYPE_MASK 0xf
+#define IPC_CHANNEL_SHIFT 12
+#define IPC_CHANNEL_MASK 0xf
+/* Command 1 shifts and masks */
+#define IPC_FUNC_SHIFT 0
+#define IPC_FUNC_MASK 0xff
+#define IPC_WRITE_VAL_SHIFT 8
+#define IPC_WRITE_VAL_MASK 0xff
+/* Command 3 shifts and masks */
+#define IPC_DEST_SHIFT 8
+#define IPC_DEST_MASK 0xff
+#define IPC_RETURN_SHIFT 24
+#define IPC_RETURN_MASK 0xff
+
+/**
+ * acpm_ipc_send_data_async() - Send data to I3C block over ACPM IPC
+ * @acpm: ACPM data
+ * @cmd0: Command 0 value to send
+ * @cmd1: Command 1 value to send
+ */
+static void acpm_ipc_send_data_async(struct acpm *acpm, u32 cmd0, u32 cmd1)
+{
+ u32 irq_bit = 1 << acpm->ipc_ch;
+ u32 intgr = irq_bit << MBOX_INTGR_OFFSET;
+
+ /* Write data to the shared memory */
+ writel(cmd0, acpm->sram_base + SHMEM_SR0);
+ writel(cmd1, acpm->sram_base + SHMEM_SR1);
+ dsb();
+
+ /* Generate interrupt for I3C block */
+ writel(intgr, acpm->mbox_base + MBOX_INTGR0);
+}
+
+/**
+ * acpm_ipc_wait_resp() - Read response data from I3C block over ACPM IPC
+ * @acpm: ACPM data
+ * @cmd2: Will contain read value for command 2
+ * @cmd3: Will contain read value for command 3
+ *
+ * Return: 0 on success or negative value on error.
+ */
+static int acpm_ipc_wait_resp(struct acpm *acpm, u32 *cmd2, u32 *cmd3)
+{
+ u32 irq_bit = 1 << acpm->ipc_ch;
+ u32 reg;
+ int ret;
+
+ /* Wait for the interrupt from I3C block */
+ ret = readl_poll_timeout(acpm->mbox_base + MBOX_INTSR1, reg,
+ reg & irq_bit, MBOX_TIMEOUT);
+ if (ret < 0)
+ return ret;
+
+ /* Clear the interrupt */
+ writel(irq_bit, acpm->mbox_base + MBOX_INTCR1);
+
+ /* Read data from the shared memory */
+ *cmd2 = readl(acpm->sram_base + SHMEM_SR2);
+ *cmd3 = readl(acpm->sram_base + SHMEM_SR3);
+
+ return 0;
+}
+
+/**
+ * acpm_i3c_read() - Read an I3C register of some I3C slave device
+ * @acpm: ACPM data
+ * @ch: I3C channel (bus) number (0-15)
+ * @addr: I3C address of slave device (0-15)
+ * @reg: Address of I3C register in the slave device to read from
+ * @val: Will contain the read value
+ *
+ * Return: 0 on success or non-zero code on error (may be positive).
+ */
+int acpm_i3c_read(struct acpm *acpm, u8 ch, u8 addr, u8 reg, u8 *val)
+{
+ u32 cmd[4] = { 0 };
+ u8 ret;
+
+ cmd[0] = (ch & IPC_CHANNEL_MASK) << IPC_CHANNEL_SHIFT |
+ (addr & IPC_TYPE_MASK) << IPC_TYPE_SHIFT |
+ (reg & IPC_REG_MASK) << IPC_REG_SHIFT;
+ cmd[1] = IPC_FUNC_READ << IPC_FUNC_SHIFT;
+
+ acpm_ipc_send_data_async(acpm, cmd[0], cmd[1]);
+ ret = acpm_ipc_wait_resp(acpm, &cmd[2], &cmd[3]);
+ if (ret)
+ return ret;
+
+ *val = (cmd[3] >> IPC_DEST_SHIFT) & IPC_DEST_MASK;
+ ret = (cmd[3] >> IPC_RETURN_SHIFT) & IPC_RETURN_MASK;
+ return ret;
+}
+
+/**
+ * acpm_i3c_write() - Write an I3C register of some I3C slave device
+ * @acpm: ACPM data
+ * @ch: I3C channel (bus) number (0-15)
+ * @addr: I3C address of slave device (0-15)
+ * @reg: Address of I3C register in the slave device to write into
+ * @val: Value to write
+ *
+ * Return: 0 on success or non-zero code on error (may be positive).
+ */
+int acpm_i3c_write(struct acpm *acpm, u8 ch, u8 addr, u8 reg, u8 val)
+{
+ u32 cmd[4] = { 0 };
+ u8 ret;
+
+ cmd[0] = (ch & IPC_CHANNEL_MASK) << IPC_CHANNEL_SHIFT |
+ (addr & IPC_TYPE_MASK) << IPC_TYPE_SHIFT |
+ (reg & IPC_REG_MASK) << IPC_REG_SHIFT;
+ cmd[1] = IPC_FUNC_WRITE << IPC_FUNC_SHIFT |
+ (val & IPC_WRITE_VAL_MASK) << IPC_WRITE_VAL_SHIFT;
+
+ acpm_ipc_send_data_async(acpm, cmd[0], cmd[1]);
+ ret = acpm_ipc_wait_resp(acpm, &cmd[2], &cmd[3]);
+ if (ret)
+ return ret;
+
+ ret = (cmd[3] >> IPC_RETURN_SHIFT) & IPC_RETURN_MASK;
+ return ret;
+}
diff --git a/board/samsung/e850-96/acpm.h b/board/samsung/e850-96/acpm.h
new file mode 100644
index 000000000000..9373969209fa
--- /dev/null
+++ b/board/samsung/e850-96/acpm.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (c) 2025 Linaro Ltd.
+ * Sam Protsenko <semen.protsenko@linaro.org>
+ */
+
+#ifndef __E850_96_ACPM_H
+#define __E850_96_ACPM_H
+
+#include <linux/types.h>
+
+/**
+ * struct acpm - Data for I3C communication over ACPM IPC protocol
+ * @mbox_base: Base address of APM mailbox block
+ * @sram_base: Base address of shared memory used for APM messages
+ * @ipc_ch: Mailbox channel number used for communication with I3C block (0-15)
+ */
+struct acpm {
+ void __iomem *mbox_base;
+ void __iomem *sram_base;
+ u8 ipc_ch;
+};
+
+int acpm_i3c_read(struct acpm *acpm, u8 ch, u8 addr, u8 reg, u8 *val);
+int acpm_i3c_write(struct acpm *acpm, u8 ch, u8 addr, u8 reg, u8 val);
+
+#endif /* __E850_96_ACPM_H */
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 04/10] board: samsung: e850-96: Add PMIC code
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
` (2 preceding siblings ...)
2025-08-06 22:27 ` [PATCH 03/10] board: samsung: e850-96: Add ACPM code Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-06 22:27 ` [PATCH 05/10] board: samsung: e850-96: Configure PMIC regulators Sam Protsenko
` (7 subsequent siblings)
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
Add functions for configuring voltage regulators on S2MPU12 PMIC chip
for E850-96 board. The chip is accessed by commanding APM core (via
ACPM IPC protocol) to perform corresponding transfers over I3C bus.
The most important regulator being set up is LDO24 used for LAN9514 chip
power. As LAN9514 implements USB hub and Ethernet controller
functionality, it's crucial to enable and configure LDO24 to be able to
use it further. While at it, configure the rest of regulators that might
be needed later, both in the bootloader and in kernel.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
board/samsung/e850-96/Makefile | 2 +-
board/samsung/e850-96/pmic.c | 144 +++++++++++++++++++++++++++++++++
board/samsung/e850-96/pmic.h | 14 ++++
3 files changed, 159 insertions(+), 1 deletion(-)
create mode 100644 board/samsung/e850-96/pmic.c
create mode 100644 board/samsung/e850-96/pmic.h
diff --git a/board/samsung/e850-96/Makefile b/board/samsung/e850-96/Makefile
index 08eb8dca5bf7..76b8d47994e8 100644
--- a/board/samsung/e850-96/Makefile
+++ b/board/samsung/e850-96/Makefile
@@ -3,4 +3,4 @@
# Copyright (C) 2024, Linaro Limited
# Sam Protsenko <semen.protsenko@linaro.org>
-obj-y := e850-96.o fw.o acpm.o
+obj-y := e850-96.o fw.o acpm.o pmic.o
diff --git a/board/samsung/e850-96/pmic.c b/board/samsung/e850-96/pmic.c
new file mode 100644
index 000000000000..037fd4844c54
--- /dev/null
+++ b/board/samsung/e850-96/pmic.c
@@ -0,0 +1,144 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2025 Linaro Ltd.
+ * Author: Sam Protsenko <semen.protsenko@linaro.org>
+ *
+ * This file contains functions for S2MPU12 PMIC regulators configuration.
+ *
+ * Example of voltage calculation for LDO24 and LDO32:
+ * - V_min = 1800 mV
+ * - V_step = 25 mV
+ * - V_wanted = 3300 mV
+ * - register value: (V_wanted - V_min) / V_step = 60 = 0x3c
+ *
+ * NOTE: 0x3c value might mean different voltage for other LDOs.
+ */
+
+#include <linux/errno.h>
+#include <linux/kernel.h>
+#include "pmic.h"
+
+/* PMIC definitions */
+#define S2MPU12_CHANNEL 0 /* I3C bus number of PMIC */
+#define S2MPU12_PM_ADDR 0x1 /* I3C slave addr of PM part */
+
+/* PMIC I3C registers */
+#define S2MPU12_PM_LDO1_CTRL 0x2b
+#define S2MPU12_PM_LDO_CTRL(n) (S2MPU12_PM_LDO1_CTRL + (n) - 1)
+
+/* LDOx_CTRL values */
+#define S2MPU12_LDO_CTRL_OUT_MASK (0x3 << 6)
+#define S2MPU12_LDO_CTRL_OUT_ALWAYS_ON (0x3 << 6)
+
+struct pmic_ldo {
+ u8 num; /* LDO number */
+ u8 en; /* "enable" bits value in LDOx_CTRL register */
+ u8 out; /* "output voltage" bits value in LDOx_CTRL register */
+};
+
+/* List of LDOs to enable only */
+static u8 pmic_ldos_en[] = {
+ 2, /* 1.8V/450mA: multiple lines */
+ 11, /* 3.0V/150mA: AVDD33_USB20 */
+ 23, /* 2.85V/800mA: VDD_EMMC_2P85 */
+ 27, /* 3.0V/150mA: MIPI_SWITCH_3V3 */
+ 28, /* 1.8V/150mA: HDMI_CONV_1V8 */
+ 30, /* 1.8V/150mA: NPU_VDD18 */
+};
+
+/* List of LDOs to enable and set output voltage */
+static struct pmic_ldo pmic_ldos_en_out[] = {
+ {
+ .num = 24, /* 3.0V/800mA: VDD_LAN (LAN9514) */
+ .en = S2MPU12_LDO_CTRL_OUT_ALWAYS_ON,
+ .out = 0x3c, /* means 3.3V for LDO24 */
+ }, {
+ .num = 32, /* 3.3V/300mA: CAM_VDD (RPi camera module) */
+ .en = S2MPU12_LDO_CTRL_OUT_ALWAYS_ON,
+ .out = 0x3c, /* means 3.3V for LDO32 */
+ },
+};
+
+/* Enable specified LDO */
+static int pmic_ldo_set_en(struct acpm *acpm, u8 ldo)
+{
+ const u8 reg = S2MPU12_PM_LDO_CTRL(ldo);
+ u8 val;
+ int err;
+
+ err = acpm_i3c_read(acpm, S2MPU12_CHANNEL, S2MPU12_PM_ADDR, reg, &val);
+ if (err)
+ return err;
+
+ val &= ~S2MPU12_LDO_CTRL_OUT_MASK;
+ val |= S2MPU12_LDO_CTRL_OUT_ALWAYS_ON;
+
+ return acpm_i3c_write(acpm, S2MPU12_CHANNEL, S2MPU12_PM_ADDR, reg, val);
+}
+
+/* Enable specified LDO and set its voltage to 0xc0 value */
+static int pmic_ldo_set_en_out(struct acpm *acpm, struct pmic_ldo *ldo)
+{
+ const u8 reg = S2MPU12_PM_LDO_CTRL(ldo->num);
+ const u8 val = ldo->en | ldo->out;
+
+ return acpm_i3c_write(acpm, S2MPU12_CHANNEL, S2MPU12_PM_ADDR, reg, val);
+}
+
+#ifdef DEBUG
+static void pmic_trace_ldo(struct acpm *acpm, u8 ldo)
+{
+ const u8 reg = S2MPU12_PM_LDO_CTRL(ldo);
+ u8 val;
+ int err;
+
+ err = acpm_i3c_read(acpm, S2MPU12_CHANNEL, S2MPU12_PM_ADDR, reg, &val);
+ if (err)
+ printf(" S2MPU12_PM_LDO%u_CTRL: Read error!\n", ldo);
+ else
+ printf(" S2MPU12_PM_LDO%u_CTRL: 0x%x\n", ldo, val);
+}
+
+static void pmic_trace_ldos(struct acpm *acpm)
+{
+ size_t i;
+
+ printf("Tracing LDOs...\n");
+ for (i = 0; i < ARRAY_SIZE(pmic_ldos_en); ++i)
+ pmic_trace_ldo(acpm, pmic_ldos_en[i]);
+ for (i = 0; i < ARRAY_SIZE(pmic_ldos_en_out); ++i)
+ pmic_trace_ldo(acpm, pmic_ldos_en_out[i].num);
+}
+#endif
+
+/**
+ * pmic_init() - Enable power regulators in S2MPU12 PMIC.
+ * @acpm: Data for I3C communication with PMIC over ACPM protocol
+ *
+ * Enable LDOs needed for devices used in the bootloader and kernel.
+ *
+ * Return: 0 on success or non-zero code on error.
+ */
+int pmic_init(struct acpm *acpm)
+{
+ size_t i;
+ int err;
+
+ for (i = 0; i < ARRAY_SIZE(pmic_ldos_en); ++i) {
+ err = pmic_ldo_set_en(acpm, pmic_ldos_en[i]);
+ if (err)
+ return -EIO;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(pmic_ldos_en_out); ++i) {
+ err = pmic_ldo_set_en_out(acpm, &pmic_ldos_en_out[i]);
+ if (err)
+ return -EIO;
+ }
+
+#ifdef DEBUG
+ pmic_trace_ldos(acpm);
+#endif
+
+ return 0;
+}
diff --git a/board/samsung/e850-96/pmic.h b/board/samsung/e850-96/pmic.h
new file mode 100644
index 000000000000..46624c2ebd46
--- /dev/null
+++ b/board/samsung/e850-96/pmic.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (c) 2025 Linaro Ltd.
+ * Sam Protsenko <semen.protsenko@linaro.org>
+ */
+
+#ifndef __E850_96_PMIC_H
+#define __E850_96_PMIC_H
+
+#include "acpm.h"
+
+int pmic_init(struct acpm *acpm);
+
+#endif /* __E850_96_PMIC_H */
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 05/10] board: samsung: e850-96: Configure PMIC regulators
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
` (3 preceding siblings ...)
2025-08-06 22:27 ` [PATCH 04/10] board: samsung: e850-96: Add PMIC code Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-06 22:27 ` [PATCH 06/10] board: samsung: e850-96: Extract device info from fw loading code Sam Protsenko
` (6 subsequent siblings)
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
Make use of PMIC configuration routines and enable all LDOs that might
be useful for bootloader and kernel. The most crucial regulator being
enabled at the moment is LDO24 which provides power to LAN9514 chip.
That makes Ethernet controller and USB hub functional.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
board/samsung/e850-96/e850-96.c | 31 ++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)
diff --git a/board/samsung/e850-96/e850-96.c b/board/samsung/e850-96/e850-96.c
index d489716bfdf2..2cf874fcf7a5 100644
--- a/board/samsung/e850-96/e850-96.c
+++ b/board/samsung/e850-96/e850-96.c
@@ -11,11 +11,18 @@
#include <net.h>
#include <asm/io.h>
#include "fw.h"
+#include "pmic.h"
/* OTP Controller base address and register offsets */
-#define EXYNOS850_OTP_BASE 0x10000000
-#define OTP_CHIPID0 0x4
-#define OTP_CHIPID1 0x8
+#define EXYNOS850_OTP_BASE 0x10000000
+#define OTP_CHIPID0 0x4
+#define OTP_CHIPID1 0x8
+
+/* ACPM and PMIC definitions */
+#define EXYNOS850_MBOX_APM2AP_BASE 0x11900000
+#define EXYNOS850_APM_SRAM_BASE 0x02039000 /* in iRAM */
+#define EXYNOS850_APM_SHMEM_OFFSET 0x3200
+#define EXYNOS850_IPC_AP_I3C 10
struct efi_fw_image fw_images[] = {
{
@@ -56,6 +63,13 @@ struct efi_capsule_update_info update_info = {
.images = fw_images,
};
+static struct acpm acpm = {
+ .mbox_base = (void __iomem *)EXYNOS850_MBOX_APM2AP_BASE,
+ .sram_base = (void __iomem *)(EXYNOS850_APM_SRAM_BASE +
+ EXYNOS850_APM_SHMEM_OFFSET),
+ .ipc_ch = EXYNOS850_IPC_AP_I3C,
+};
+
int dram_init(void)
{
return fdtdec_setup_mem_size_base();
@@ -133,3 +147,14 @@ int board_late_init(void)
return 0;
}
+
+int power_init_board(void)
+{
+ int err;
+
+ err = pmic_init(&acpm);
+ if (err)
+ printf("ERROR: Failed to configure PMIC (%d)\n", err);
+
+ return 0;
+}
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 06/10] board: samsung: e850-96: Extract device info from fw loading code
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
` (4 preceding siblings ...)
2025-08-06 22:27 ` [PATCH 05/10] board: samsung: e850-96: Configure PMIC regulators Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-06 22:27 ` [PATCH 07/10] board: samsung: e850-96: Add bootdev var to choose boot device Sam Protsenko
` (5 subsequent siblings)
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
Make it possible to provide the information about storage device where
LDFW firmware resides to the firmware loading routine. The firmware
loader code shouldn't have that data hard-coded anyway, and it also
allows for implementing more dynamic behavior later, like choosing the
storage device containing LDFW via some environment variables.
No functional change.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
board/samsung/e850-96/e850-96.c | 9 ++++++-
board/samsung/e850-96/fw.c | 45 ++++++++++++++++++++-------------
board/samsung/e850-96/fw.h | 4 ++-
3 files changed, 38 insertions(+), 20 deletions(-)
diff --git a/board/samsung/e850-96/e850-96.c b/board/samsung/e850-96/e850-96.c
index 2cf874fcf7a5..b5f6ba23432e 100644
--- a/board/samsung/e850-96/e850-96.c
+++ b/board/samsung/e850-96/e850-96.c
@@ -24,6 +24,12 @@
#define EXYNOS850_APM_SHMEM_OFFSET 0x3200
#define EXYNOS850_IPC_AP_I3C 10
+/* LDFW firmware definitions */
+#define LDFW_NWD_ADDR 0x88000000
+#define EMMC_IFNAME "mmc"
+#define EMMC_DEV_NUM 0
+#define EMMC_ESP_PART 1
+
struct efi_fw_image fw_images[] = {
{
.image_type_id = E850_96_FWBL1_IMAGE_GUID,
@@ -141,7 +147,8 @@ int board_late_init(void)
* Do this in board_late_init() to make sure MMC is not probed before
* efi_init_early().
*/
- err = load_ldfw();
+ err = load_ldfw(EMMC_IFNAME, EMMC_DEV_NUM, EMMC_ESP_PART,
+ LDFW_NWD_ADDR);
if (err)
printf("ERROR: LDFW loading failed (%d)\n", err);
diff --git a/board/samsung/e850-96/fw.c b/board/samsung/e850-96/fw.c
index 8f64e759b431..64235c01a254 100644
--- a/board/samsung/e850-96/fw.c
+++ b/board/samsung/e850-96/fw.c
@@ -11,13 +11,9 @@
#include <linux/arm-smccc.h>
#include "fw.h"
-#define EMMC_IFACE "mmc"
-#define EMMC_DEV_NUM 0
#define LDFW_RAW_PART "ldfw"
-#define LDFW_FAT_PART "esp"
#define LDFW_FAT_PATH "/EFI/firmware/ldfw.bin"
-#define LDFW_NWD_ADDR 0x88000000
#define LDFW_MAGIC 0x10adab1e
#define SMC_CMD_LOAD_LDFW -0x500
#define SDM_HW_RESET_STATUS 0x1230
@@ -39,19 +35,23 @@ struct ldfw_header {
};
/* Load LDFW binary as a file from FAT partition */
-static int read_fw_from_fat(const char *part_name, const char *path, void *buf)
+static int read_fw_from_fat(const char *ifname, int dev, int part,
+ const char *path, void *buf)
{
- char dev_part_str[8];
+ struct blk_desc *blk_desc;
loff_t len_read;
int err;
- snprintf(dev_part_str, sizeof(dev_part_str), "%d#%s", EMMC_DEV_NUM,
- LDFW_FAT_PART);
+ blk_desc = blk_get_dev(ifname, dev);
+ if (!blk_desc) {
+ debug("%s: Can't get block device\n", __func__);
+ return -ENODEV;
+ }
- err = fs_set_blk_dev(EMMC_IFACE, dev_part_str, FS_TYPE_FAT);
+ err = fs_set_blk_dev_with_part(blk_desc, part);
if (err) {
- debug("%s: Can't set block device\n", __func__);
- return -ENODEV;
+ debug("%s: Can't set partition\n", __func__);
+ return -ENOENT;
}
err = fs_read(path, (ulong)buf, 0, 0, &len_read);
@@ -64,16 +64,17 @@ static int read_fw_from_fat(const char *part_name, const char *path, void *buf)
}
/* Load LDFW binary from raw partition on block device into RAM buffer */
-static int read_fw_from_raw(const char *part_name, void *buf)
+static int read_fw_from_raw(const char *ifname, int dev, const char *part_name,
+ void *buf)
{
struct blk_desc *blk_desc;
struct disk_partition part;
unsigned long cnt;
int part_num;
- blk_desc = blk_get_dev(EMMC_IFACE, EMMC_DEV_NUM);
+ blk_desc = blk_get_dev(ifname, dev);
if (!blk_desc) {
- debug("%s: Can't get eMMC device\n", __func__);
+ debug("%s: Can't get block device\n", __func__);
return -ENODEV;
}
@@ -92,9 +93,17 @@ static int read_fw_from_raw(const char *part_name, void *buf)
return 0;
}
-int load_ldfw(void)
+/**
+ * load_ldfw - Load the loadable firmware (LDFW)
+ * @ifname: Interface name of the block device to load the firmware from
+ * @dev: Device number
+ * @part: Partition number
+ * @addr: Temporary memory (Normal World) to use for loading the firmware
+ *
+ * Return: 0 on success or a negative value on error.
+ */
+int load_ldfw(const char *ifname, int dev, int part, phys_addr_t addr)
{
- const phys_addr_t addr = (phys_addr_t)LDFW_NWD_ADDR;
struct ldfw_header *hdr;
struct arm_smccc_res res;
void *buf = (void *)addr;
@@ -102,9 +111,9 @@ int load_ldfw(void)
int err, i;
/* First try to read LDFW from EFI partition, then from the raw one */
- err = read_fw_from_fat(LDFW_FAT_PART, LDFW_FAT_PATH, buf);
+ err = read_fw_from_fat(ifname, dev, part, LDFW_FAT_PATH, buf);
if (err) {
- err = read_fw_from_raw(LDFW_RAW_PART, buf);
+ err = read_fw_from_raw(ifname, dev, LDFW_RAW_PART, buf);
if (err)
return err;
}
diff --git a/board/samsung/e850-96/fw.h b/board/samsung/e850-96/fw.h
index 472664e4ed21..73d9615d4a9c 100644
--- a/board/samsung/e850-96/fw.h
+++ b/board/samsung/e850-96/fw.h
@@ -7,6 +7,8 @@
#ifndef __E850_96_FW_H
#define __E850_96_FW_H
-int load_ldfw(void);
+#include <asm/types.h>
+
+int load_ldfw(const char *ifname, int dev, int part, phys_addr_t addr);
#endif /* __E850_96_FW_H */
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 07/10] board: samsung: e850-96: Add bootdev var to choose boot device
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
` (5 preceding siblings ...)
2025-08-06 22:27 ` [PATCH 06/10] board: samsung: e850-96: Extract device info from fw loading code Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-06 22:27 ` [PATCH 08/10] configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE Sam Protsenko
` (4 subsequent siblings)
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
Provide a way for the user to select which storage to load the LDFW
firmware from, by setting the corresponding environment variables:
- bootdev: block device interface name
- bootdevnum: block device number
- bootdevpart: partition number
This might be useful when the OS is flashed and booted from a different
storage device than eMMC (e.g. USB flash drive). In this case it should
be sufficient to just set:
=> setenv bootdev usb
=> env save
assuming that the USB drive layout follows the same partitioning scheme
as defined in $partitions.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
board/samsung/e850-96/e850-96.c | 40 ++++++++++++++++++++++++---------
1 file changed, 30 insertions(+), 10 deletions(-)
diff --git a/board/samsung/e850-96/e850-96.c b/board/samsung/e850-96/e850-96.c
index b5f6ba23432e..3df241edde2a 100644
--- a/board/samsung/e850-96/e850-96.c
+++ b/board/samsung/e850-96/e850-96.c
@@ -9,6 +9,7 @@
#include <init.h>
#include <mapmem.h>
#include <net.h>
+#include <usb.h>
#include <asm/io.h>
#include "fw.h"
#include "pmic.h"
@@ -136,21 +137,40 @@ static void setup_ethaddr(void)
eth_env_set_enetaddr("ethaddr", mac_addr);
}
-int board_late_init(void)
+/*
+ * Call this in board_late_init() to avoid probing block devices before
+ * efi_init_early().
+ */
+void load_firmware(void)
{
+ const char *ifname;
+ ulong dev, part;
int err;
- setup_serial();
- setup_ethaddr();
-
- /*
- * Do this in board_late_init() to make sure MMC is not probed before
- * efi_init_early().
- */
- err = load_ldfw(EMMC_IFNAME, EMMC_DEV_NUM, EMMC_ESP_PART,
- LDFW_NWD_ADDR);
+ ifname = env_get("bootdev");
+ if (!ifname)
+ ifname = EMMC_IFNAME;
+ dev = env_get_ulong("bootdevnum", 10, EMMC_DEV_NUM);
+ part = env_get_ulong("bootdevpart", 10, EMMC_ESP_PART);
+
+ if (!strcmp(ifname, "usb")) {
+ printf("Starting USB (bootdev=usb)...\n");
+ err = usb_init();
+ if (err)
+ return;
+ }
+
+ printf("Loading LDFW firmware (from %s %ld)...\n", ifname, dev);
+ err = load_ldfw(ifname, dev, part, LDFW_NWD_ADDR);
if (err)
printf("ERROR: LDFW loading failed (%d)\n", err);
+}
+
+int board_late_init(void)
+{
+ setup_serial();
+ setup_ethaddr();
+ load_firmware();
return 0;
}
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 08/10] configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
` (6 preceding siblings ...)
2025-08-06 22:27 ` [PATCH 07/10] board: samsung: e850-96: Add bootdev var to choose boot device Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-06 22:27 ` [PATCH 09/10] configs: e850-96: Enable USB host support Sam Protsenko
` (3 subsequent siblings)
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
Linux kernel should use some separate device tree obtained from another
source anyway. For example the dtb file can be read from /boot directory
in eMMC rootfs partition, either by GRUB or U-Boot. Using U-Boot's
device tree blob to provide it to the kernel (when
CONFIG_DEFAULT_FDT_FILE is set and nobody else overrides this choice)
might lead to undesired effects when booting the OS. For example, if a
user sets "dr_mode" property to "host" value in U-Boot's dts to enable
USB host capabilities in U-Boot, it might confuse usb-conn-gpio driver
in Linux kernel later like this:
platform connector: deferred probe pending: usb-conn-gpio:
failed to get role switch
Disable CONFIG_DEFAULT_FDT_FILE option to avoid any possible confusion.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
board/samsung/e850-96/e850-96.env | 2 +-
configs/e850-96_defconfig | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/board/samsung/e850-96/e850-96.env b/board/samsung/e850-96/e850-96.env
index aed7a71046d0..992318b0ab26 100644
--- a/board/samsung/e850-96/e850-96.env
+++ b/board/samsung/e850-96/e850-96.env
@@ -5,7 +5,7 @@ fdt_addr_r=0x8c000000
scriptaddr=0x8c100000
pxefile_addr_r=0x8c200000
ramdisk_addr_r=0x8c300000
-fdtfile=CONFIG_DEFAULT_FDT_FILE
+fdtfile=exynos/exynos850-e850-96.dtb
dfu_alt_info=
rawemmc raw 0 0x747c000 mmcpart 1;
diff --git a/configs/e850-96_defconfig b/configs/e850-96_defconfig
index b4066d874602..412c99468f29 100644
--- a/configs/e850-96_defconfig
+++ b/configs/e850-96_defconfig
@@ -19,7 +19,6 @@ CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
CONFIG_EFI_CAPSULE_ON_DISK=y
CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
CONFIG_BOOTSTD_FULL=y
-CONFIG_DEFAULT_FDT_FILE="exynos850-e850-96.dtb"
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_BOARD_INIT is not set
CONFIG_BOARD_LATE_INIT=y
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 09/10] configs: e850-96: Enable USB host support
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
` (7 preceding siblings ...)
2025-08-06 22:27 ` [PATCH 08/10] configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-06 22:27 ` [PATCH 10/10] configs: e850-96: Enable Ethernet Sam Protsenko
` (2 subsequent siblings)
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
Exynos850 SoC has a dual-role USB controller which can be configured in
USB host role. As it's the only one USB controller on the board, it's
shared between "device" USB connector (micro-USB) and host USB
connectors. The hardware automatically powers on the host related parts
when the micro-USB cable (for device role) is being disconnected. Also,
as U-Boot lacks dynamic USB role switching capability, the only way to
switch the role at the moment is to modify "dr_mode" property in
U-Boot's device tree file here:
dts/upstream/src/arm64/exynos/exynos850-e850-96.dts
This won't affect the dynamic role switching later in Linux kernel, as a
separate (different) device tree blob is provided to the kernel.
Enable the USB host support and corresponding commands to make it
functional in E850-96 board.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
configs/e850-96_defconfig | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/configs/e850-96_defconfig b/configs/e850-96_defconfig
index 412c99468f29..d7cd1b4b8ba5 100644
--- a/configs/e850-96_defconfig
+++ b/configs/e850-96_defconfig
@@ -29,6 +29,8 @@ CONFIG_CMD_CLK=y
CONFIG_CMD_DFU=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MMC=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_CMD_EFIDEBUG=y
# CONFIG_CMD_DATE is not set
CONFIG_CMD_RTC=y
@@ -63,6 +65,9 @@ CONFIG_SYSRESET=y
CONFIG_SYSRESET_SYSCON=y
CONFIG_USB=y
CONFIG_DM_USB_GADGET=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_DWC3=y
+CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
CONFIG_USB_DWC3_GENERIC=y
CONFIG_USB_GADGET=y
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 10/10] configs: e850-96: Enable Ethernet
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
` (8 preceding siblings ...)
2025-08-06 22:27 ` [PATCH 09/10] configs: e850-96: Enable USB host support Sam Protsenko
@ 2025-08-06 22:27 ` Sam Protsenko
2025-08-22 18:02 ` [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
2025-08-24 13:21 ` Anand Moon
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-06 22:27 UTC (permalink / raw)
To: Minkyu Kang, Marek Vasut, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
LAN9514 is a chip on E850-96 board which acts as a USB host hub and
Ethernet controller. It's controlled via USB lines when DWC3 is
configured to be in USB host role (by setting the "dr_mode" property to
"host" value in e850-96 dts file).
Enable network support and LAN9514 chip support. This makes Ethernet
functional on E850-96 board.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
configs/e850-96_defconfig | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/configs/e850-96_defconfig b/configs/e850-96_defconfig
index d7cd1b4b8ba5..8f9659ce050c 100644
--- a/configs/e850-96_defconfig
+++ b/configs/e850-96_defconfig
@@ -42,7 +42,7 @@ CONFIG_ENV_IS_IN_MMC=y
CONFIG_ENV_REDUNDANT=y
CONFIG_ENV_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_MMC_EMMC_HW_PARTITION=2
-CONFIG_NO_NET=y
+CONFIG_NET_LWIP=y
CONFIG_CLK_EXYNOS850=y
CONFIG_DFU_MMC=y
CONFIG_USB_FUNCTION_FASTBOOT=y
@@ -70,6 +70,8 @@ CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
CONFIG_USB_DWC3_GENERIC=y
+CONFIG_USB_HOST_ETHER=y
+CONFIG_USB_ETHER_SMSC95XX=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="Samsung"
CONFIG_USB_GADGET_VENDOR_NUM=0x18d1
--
2.39.5
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
` (9 preceding siblings ...)
2025-08-06 22:27 ` [PATCH 10/10] configs: e850-96: Enable Ethernet Sam Protsenko
@ 2025-08-22 18:02 ` Sam Protsenko
2025-08-24 13:21 ` Anand Moon
11 siblings, 0 replies; 17+ messages in thread
From: Sam Protsenko @ 2025-08-22 18:02 UTC (permalink / raw)
To: Minkyu Kang
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot,
Marek Vasut, Tom Rini
On Wed, Aug 6, 2025 at 5:27 PM Sam Protsenko <semen.protsenko@linaro.org> wrote:
>
> The E850-96 board has a LAN9514 chip which acts as a USB hub and
> Ethernet controller. It's connected to the SoC via USB lines. In order
> to make this chip functional the USB controller in Exynos850 SoC has to
> be configured in the host role, and the corresponding power regulator
> has to be enabled as well.
>
> This patch series enables USB host and network support on the E850-96 by
> making use of the LAN9514 chip. While at it, enable all power regulators
> (LDO) in the PMIC chip which can be useful in the bootloader and kernel,
> including the regulator used for LAN9514.
>
> Sam Protsenko (10):
> usb: host: dwc3-of-simple: Add exynos850 compatible
> board: samsung: e850-96: Set ethaddr
> board: samsung: e850-96: Add ACPM code
> board: samsung: e850-96: Add PMIC code
> board: samsung: e850-96: Configure PMIC regulators
> board: samsung: e850-96: Extract device info from fw loading code
> board: samsung: e850-96: Add bootdev var to choose boot device
> configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE
> configs: e850-96: Enable USB host support
> configs: e850-96: Enable Ethernet
>
> board/samsung/e850-96/Makefile | 2 +-
> board/samsung/e850-96/acpm.c | 169 ++++++++++++++++++++++++++++++
> board/samsung/e850-96/acpm.h | 27 +++++
> board/samsung/e850-96/e850-96.c | 97 +++++++++++++++--
> board/samsung/e850-96/e850-96.env | 2 +-
> board/samsung/e850-96/fw.c | 45 ++++----
> board/samsung/e850-96/fw.h | 4 +-
> board/samsung/e850-96/pmic.c | 144 +++++++++++++++++++++++++
> board/samsung/e850-96/pmic.h | 14 +++
> configs/e850-96_defconfig | 10 +-
> drivers/usb/host/dwc3-of-simple.c | 1 +
> 11 files changed, 482 insertions(+), 33 deletions(-)
> create mode 100644 board/samsung/e850-96/acpm.c
> create mode 100644 board/samsung/e850-96/acpm.h
> create mode 100644 board/samsung/e850-96/pmic.c
> create mode 100644 board/samsung/e850-96/pmic.h
>
Hi Minkyu,
If there are no objections, can you please apply this series?
Thanks!
> --
> 2.39.5
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 01/10] usb: host: dwc3-of-simple: Add exynos850 compatible
2025-08-06 22:27 ` [PATCH 01/10] usb: host: dwc3-of-simple: Add exynos850 compatible Sam Protsenko
@ 2025-08-22 19:06 ` Marek Vasut
0 siblings, 0 replies; 17+ messages in thread
From: Marek Vasut @ 2025-08-22 19:06 UTC (permalink / raw)
To: Sam Protsenko, Minkyu Kang, Tom Rini
Cc: Minkyu Kang, Peng Fan, Ilias Apalodimas, Jerome Forissier, u-boot
On 8/7/25 12:27 AM, Sam Protsenko wrote:
> Enable support for Exynos850 SoC in DWC3 host glue layer driver.
>
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Marek Vasut <marek.vasut@mailbox.org>
Thanks
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
` (10 preceding siblings ...)
2025-08-22 18:02 ` [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
@ 2025-08-24 13:21 ` Anand Moon
2025-08-26 19:44 ` Sam Protsenko
11 siblings, 1 reply; 17+ messages in thread
From: Anand Moon @ 2025-08-24 13:21 UTC (permalink / raw)
To: Sam Protsenko
Cc: Minkyu Kang, Marek Vasut, Tom Rini, Minkyu Kang, Peng Fan,
Ilias Apalodimas, Jerome Forissier, u-boot
Hi Sam
On Thu, 7 Aug 2025 at 03:57, Sam Protsenko <semen.protsenko@linaro.org> wrote:
>
> The E850-96 board has a LAN9514 chip which acts as a USB hub and
> Ethernet controller. It's connected to the SoC via USB lines. In order
> to make this chip functional the USB controller in Exynos850 SoC has to
> be configured in the host role, and the corresponding power regulator
> has to be enabled as well.
>
> This patch series enables USB host and network support on the E850-96 by
> making use of the LAN9514 chip. While at it, enable all power regulators
> (LDO) in the PMIC chip which can be useful in the bootloader and kernel,
> including the regulator used for LAN9514.
>
> Sam Protsenko (10):
> usb: host: dwc3-of-simple: Add exynos850 compatible
> board: samsung: e850-96: Set ethaddr
> board: samsung: e850-96: Add ACPM code
> board: samsung: e850-96: Add PMIC code
> board: samsung: e850-96: Configure PMIC regulators
> board: samsung: e850-96: Extract device info from fw loading code
> board: samsung: e850-96: Add bootdev var to choose boot device
> configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE
> configs: e850-96: Enable USB host support
> configs: e850-96: Enable Ethernet
>
> board/samsung/e850-96/Makefile | 2 +-
> board/samsung/e850-96/acpm.c | 169 ++++++++++++++++++++++++++++++
> board/samsung/e850-96/acpm.h | 27 +++++
> board/samsung/e850-96/e850-96.c | 97 +++++++++++++++--
> board/samsung/e850-96/e850-96.env | 2 +-
> board/samsung/e850-96/fw.c | 45 ++++----
> board/samsung/e850-96/fw.h | 4 +-
> board/samsung/e850-96/pmic.c | 144 +++++++++++++++++++++++++
> board/samsung/e850-96/pmic.h | 14 +++
> configs/e850-96_defconfig | 10 +-
> drivers/usb/host/dwc3-of-simple.c | 1 +
> 11 files changed, 482 insertions(+), 33 deletions(-)
> create mode 100644 board/samsung/e850-96/acpm.c
> create mode 100644 board/samsung/e850-96/acpm.h
> create mode 100644 board/samsung/e850-96/pmic.c
> create mode 100644 board/samsung/e850-96/pmic.h
>
Can you move pmic to drivers/power/pmic/ ?
Thanks
-Anand
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet
2025-08-24 13:21 ` Anand Moon
@ 2025-08-26 19:44 ` Sam Protsenko
2025-08-29 15:48 ` Anand Moon
0 siblings, 1 reply; 17+ messages in thread
From: Sam Protsenko @ 2025-08-26 19:44 UTC (permalink / raw)
To: Anand Moon
Cc: Minkyu Kang, Marek Vasut, Tom Rini, Minkyu Kang, Peng Fan,
Ilias Apalodimas, Jerome Forissier, u-boot
On Sun, Aug 24, 2025 at 8:22 AM Anand Moon <linux.amoon@gmail.com> wrote:
>
> Hi Sam
>
Hi Anand,
> On Thu, 7 Aug 2025 at 03:57, Sam Protsenko <semen.protsenko@linaro.org> wrote:
> >
> > The E850-96 board has a LAN9514 chip which acts as a USB hub and
> > Ethernet controller. It's connected to the SoC via USB lines. In order
> > to make this chip functional the USB controller in Exynos850 SoC has to
> > be configured in the host role, and the corresponding power regulator
> > has to be enabled as well.
> >
> > This patch series enables USB host and network support on the E850-96 by
> > making use of the LAN9514 chip. While at it, enable all power regulators
> > (LDO) in the PMIC chip which can be useful in the bootloader and kernel,
> > including the regulator used for LAN9514.
> >
> > Sam Protsenko (10):
> > usb: host: dwc3-of-simple: Add exynos850 compatible
> > board: samsung: e850-96: Set ethaddr
> > board: samsung: e850-96: Add ACPM code
> > board: samsung: e850-96: Add PMIC code
> > board: samsung: e850-96: Configure PMIC regulators
> > board: samsung: e850-96: Extract device info from fw loading code
> > board: samsung: e850-96: Add bootdev var to choose boot device
> > configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE
> > configs: e850-96: Enable USB host support
> > configs: e850-96: Enable Ethernet
> >
> > board/samsung/e850-96/Makefile | 2 +-
> > board/samsung/e850-96/acpm.c | 169 ++++++++++++++++++++++++++++++
> > board/samsung/e850-96/acpm.h | 27 +++++
> > board/samsung/e850-96/e850-96.c | 97 +++++++++++++++--
> > board/samsung/e850-96/e850-96.env | 2 +-
> > board/samsung/e850-96/fw.c | 45 ++++----
> > board/samsung/e850-96/fw.h | 4 +-
> > board/samsung/e850-96/pmic.c | 144 +++++++++++++++++++++++++
> > board/samsung/e850-96/pmic.h | 14 +++
> > configs/e850-96_defconfig | 10 +-
> > drivers/usb/host/dwc3-of-simple.c | 1 +
> > 11 files changed, 482 insertions(+), 33 deletions(-)
> > create mode 100644 board/samsung/e850-96/acpm.c
> > create mode 100644 board/samsung/e850-96/acpm.h
> > create mode 100644 board/samsung/e850-96/pmic.c
> > create mode 100644 board/samsung/e850-96/pmic.h
> >
> Can you move pmic to drivers/power/pmic/ ?
>
Thank you for the review! This PMIC code is not really a driver, at
least not yet. It's an ad-hoc solution, which is very specific to
E850-96 board, and in its current form can't be used (even in theory)
for different platforms. It also doesn't conform to U-Boot's Driver
Model -- and I'd like to avoid reworking in such a way, please see the
explanation below. At the moment it's very minimal and only needed to
make Ethernet functional.
The plan for proper PMIC enablement is to do that first in Linux kernel, i.e.:
- implement S2MPU12 driver
- define ACPM bus in device tree
- define PMIC node in device tree and describe all needed LDO regulators
and then porting all that into U-Boot. But that effort might take
quite a long time to implement, as I'm the only engineer working on
the E850-96 enablement at the moment. So I really think it's better to
keep the PMIC code as a part of the board code for now, hope you're ok
with that?
Thanks!
> Thanks
> -Anand
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet
2025-08-26 19:44 ` Sam Protsenko
@ 2025-08-29 15:48 ` Anand Moon
2025-09-01 9:29 ` Minkyu Kang
0 siblings, 1 reply; 17+ messages in thread
From: Anand Moon @ 2025-08-29 15:48 UTC (permalink / raw)
To: Sam Protsenko
Cc: Minkyu Kang, Marek Vasut, Tom Rini, Minkyu Kang, Peng Fan,
Ilias Apalodimas, Jerome Forissier, u-boot
Hi Sam,
On Wed, 27 Aug 2025 at 01:15, Sam Protsenko <semen.protsenko@linaro.org> wrote:
>
> On Sun, Aug 24, 2025 at 8:22 AM Anand Moon <linux.amoon@gmail.com> wrote:
> >
> > Hi Sam
> >
>
> Hi Anand,
>
> > On Thu, 7 Aug 2025 at 03:57, Sam Protsenko <semen.protsenko@linaro.org> wrote:
> > >
> > > The E850-96 board has a LAN9514 chip which acts as a USB hub and
> > > Ethernet controller. It's connected to the SoC via USB lines. In order
> > > to make this chip functional the USB controller in Exynos850 SoC has to
> > > be configured in the host role, and the corresponding power regulator
> > > has to be enabled as well.
> > >
> > > This patch series enables USB host and network support on the E850-96 by
> > > making use of the LAN9514 chip. While at it, enable all power regulators
> > > (LDO) in the PMIC chip which can be useful in the bootloader and kernel,
> > > including the regulator used for LAN9514.
> > >
> > > Sam Protsenko (10):
> > > usb: host: dwc3-of-simple: Add exynos850 compatible
> > > board: samsung: e850-96: Set ethaddr
> > > board: samsung: e850-96: Add ACPM code
> > > board: samsung: e850-96: Add PMIC code
> > > board: samsung: e850-96: Configure PMIC regulators
> > > board: samsung: e850-96: Extract device info from fw loading code
> > > board: samsung: e850-96: Add bootdev var to choose boot device
> > > configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE
> > > configs: e850-96: Enable USB host support
> > > configs: e850-96: Enable Ethernet
> > >
> > > board/samsung/e850-96/Makefile | 2 +-
> > > board/samsung/e850-96/acpm.c | 169 ++++++++++++++++++++++++++++++
> > > board/samsung/e850-96/acpm.h | 27 +++++
> > > board/samsung/e850-96/e850-96.c | 97 +++++++++++++++--
> > > board/samsung/e850-96/e850-96.env | 2 +-
> > > board/samsung/e850-96/fw.c | 45 ++++----
> > > board/samsung/e850-96/fw.h | 4 +-
> > > board/samsung/e850-96/pmic.c | 144 +++++++++++++++++++++++++
> > > board/samsung/e850-96/pmic.h | 14 +++
> > > configs/e850-96_defconfig | 10 +-
> > > drivers/usb/host/dwc3-of-simple.c | 1 +
> > > 11 files changed, 482 insertions(+), 33 deletions(-)
> > > create mode 100644 board/samsung/e850-96/acpm.c
> > > create mode 100644 board/samsung/e850-96/acpm.h
> > > create mode 100644 board/samsung/e850-96/pmic.c
> > > create mode 100644 board/samsung/e850-96/pmic.h
> > >
> > Can you move pmic to drivers/power/pmic/ ?
> >
>
> Thank you for the review! This PMIC code is not really a driver, at
> least not yet. It's an ad-hoc solution, which is very specific to
> E850-96 board, and in its current form can't be used (even in theory)
> for different platforms. It also doesn't conform to U-Boot's Driver
> Model -- and I'd like to avoid reworking in such a way, please see the
> explanation below. At the moment it's very minimal and only needed to
> make Ethernet functional.
>
> The plan for proper PMIC enablement is to do that first in Linux kernel, i.e.:
> - implement S2MPU12 driver
> - define ACPM bus in device tree
> - define PMIC node in device tree and describe all needed LDO regulators
>
> and then porting all that into U-Boot. But that effort might take
> quite a long time to implement, as I'm the only engineer working on
> the E850-96 enablement at the moment. So I really think it's better to
> keep the PMIC code as a part of the board code for now, hope you're ok
> with that?
>
Ok, Thanks for this input.
Thanks
-Anand
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet
2025-08-29 15:48 ` Anand Moon
@ 2025-09-01 9:29 ` Minkyu Kang
0 siblings, 0 replies; 17+ messages in thread
From: Minkyu Kang @ 2025-09-01 9:29 UTC (permalink / raw)
To: Anand Moon
Cc: Sam Protsenko, Minkyu Kang, Marek Vasut, Tom Rini, Peng Fan,
Ilias Apalodimas, Jerome Forissier, u-boot
Hi
2025년 8월 30일 (토) 00:48, Anand Moon <linux.amoon@gmail.com>님이 작성:
> Hi Sam,
>
>
> On Wed, 27 Aug 2025 at 01:15, Sam Protsenko <semen.protsenko@linaro.org>
> wrote:
> >
> > On Sun, Aug 24, 2025 at 8:22 AM Anand Moon <linux.amoon@gmail.com>
> wrote:
> > >
> > > Hi Sam
> > >
> >
> > Hi Anand,
> >
> > > On Thu, 7 Aug 2025 at 03:57, Sam Protsenko <semen.protsenko@linaro.org>
> wrote:
> > > >
> > > > The E850-96 board has a LAN9514 chip which acts as a USB hub and
> > > > Ethernet controller. It's connected to the SoC via USB lines. In
> order
> > > > to make this chip functional the USB controller in Exynos850 SoC has
> to
> > > > be configured in the host role, and the corresponding power regulator
> > > > has to be enabled as well.
> > > >
> > > > This patch series enables USB host and network support on the
> E850-96 by
> > > > making use of the LAN9514 chip. While at it, enable all power
> regulators
> > > > (LDO) in the PMIC chip which can be useful in the bootloader and
> kernel,
> > > > including the regulator used for LAN9514.
> > > >
> > > > Sam Protsenko (10):
> > > > usb: host: dwc3-of-simple: Add exynos850 compatible
> > > > board: samsung: e850-96: Set ethaddr
> > > > board: samsung: e850-96: Add ACPM code
> > > > board: samsung: e850-96: Add PMIC code
> > > > board: samsung: e850-96: Configure PMIC regulators
> > > > board: samsung: e850-96: Extract device info from fw loading code
> > > > board: samsung: e850-96: Add bootdev var to choose boot device
> > > > configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE
> > > > configs: e850-96: Enable USB host support
> > > > configs: e850-96: Enable Ethernet
> > > >
> > > > board/samsung/e850-96/Makefile | 2 +-
> > > > board/samsung/e850-96/acpm.c | 169
> ++++++++++++++++++++++++++++++
> > > > board/samsung/e850-96/acpm.h | 27 +++++
> > > > board/samsung/e850-96/e850-96.c | 97 +++++++++++++++--
> > > > board/samsung/e850-96/e850-96.env | 2 +-
> > > > board/samsung/e850-96/fw.c | 45 ++++----
> > > > board/samsung/e850-96/fw.h | 4 +-
> > > > board/samsung/e850-96/pmic.c | 144 +++++++++++++++++++++++++
> > > > board/samsung/e850-96/pmic.h | 14 +++
> > > > configs/e850-96_defconfig | 10 +-
> > > > drivers/usb/host/dwc3-of-simple.c | 1 +
> > > > 11 files changed, 482 insertions(+), 33 deletions(-)
> > > > create mode 100644 board/samsung/e850-96/acpm.c
> > > > create mode 100644 board/samsung/e850-96/acpm.h
> > > > create mode 100644 board/samsung/e850-96/pmic.c
> > > > create mode 100644 board/samsung/e850-96/pmic.h
> > > >
> > > Can you move pmic to drivers/power/pmic/ ?
> > >
> >
> > Thank you for the review! This PMIC code is not really a driver, at
> > least not yet. It's an ad-hoc solution, which is very specific to
> > E850-96 board, and in its current form can't be used (even in theory)
> > for different platforms. It also doesn't conform to U-Boot's Driver
> > Model -- and I'd like to avoid reworking in such a way, please see the
> > explanation below. At the moment it's very minimal and only needed to
> > make Ethernet functional.
> >
> > The plan for proper PMIC enablement is to do that first in Linux kernel,
> i.e.:
> > - implement S2MPU12 driver
> > - define ACPM bus in device tree
> > - define PMIC node in device tree and describe all needed LDO
> regulators
> >
> > and then porting all that into U-Boot. But that effort might take
> > quite a long time to implement, as I'm the only engineer working on
> > the E850-96 enablement at the moment. So I really think it's better to
> > keep the PMIC code as a part of the board code for now, hope you're ok
> > with that?
> >
> Ok, Thanks for this input.
applied to u-boot-samsung.
Thanks.
Minkyu Kang.
>
> Thanks
> -Anand
>
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2025-09-01 9:29 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-06 22:27 [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
2025-08-06 22:27 ` [PATCH 01/10] usb: host: dwc3-of-simple: Add exynos850 compatible Sam Protsenko
2025-08-22 19:06 ` Marek Vasut
2025-08-06 22:27 ` [PATCH 02/10] board: samsung: e850-96: Set ethaddr Sam Protsenko
2025-08-06 22:27 ` [PATCH 03/10] board: samsung: e850-96: Add ACPM code Sam Protsenko
2025-08-06 22:27 ` [PATCH 04/10] board: samsung: e850-96: Add PMIC code Sam Protsenko
2025-08-06 22:27 ` [PATCH 05/10] board: samsung: e850-96: Configure PMIC regulators Sam Protsenko
2025-08-06 22:27 ` [PATCH 06/10] board: samsung: e850-96: Extract device info from fw loading code Sam Protsenko
2025-08-06 22:27 ` [PATCH 07/10] board: samsung: e850-96: Add bootdev var to choose boot device Sam Protsenko
2025-08-06 22:27 ` [PATCH 08/10] configs: e850-96: Disable CONFIG_DEFAULT_FDT_FILE Sam Protsenko
2025-08-06 22:27 ` [PATCH 09/10] configs: e850-96: Enable USB host support Sam Protsenko
2025-08-06 22:27 ` [PATCH 10/10] configs: e850-96: Enable Ethernet Sam Protsenko
2025-08-22 18:02 ` [PATCH 00/10] samsung: e850-96: Enable USB host and Ethernet Sam Protsenko
2025-08-24 13:21 ` Anand Moon
2025-08-26 19:44 ` Sam Protsenko
2025-08-29 15:48 ` Anand Moon
2025-09-01 9:29 ` Minkyu Kang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).