* [U-Boot] [PATCH v2 0/5] remoteproc: cleanup k3_rpoc driver
@ 2019-06-07 13:55 Lokesh Vutla
2019-06-07 13:55 ` [U-Boot] [PATCH v2 1/5] cmd: remoteproc: Add support for initializing devices individually Lokesh Vutla
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Lokesh Vutla @ 2019-06-07 13:55 UTC (permalink / raw)
To: u-boot
This series introduces generic proc helpers for controlling remotecores
using TISCI protocol. Update the k3_rproc driver to use this generic
proc helpers and rename it ti_k3_arm64_rproc as it is controlling arm64
core on k3 devices. This acts as base series for the other remoteprocs
(like r5s, c66x and c7x) drivers for J721e SoC.
This series also updates the 'rproc init' to probe and init devices individually.
Sandbox test for the 'rpoc init' update: https://pastebin.ubuntu.com/p/tBSp95sKsC/
Changes since v1:
- Added support for loading and starting remoteproc devices individually.
- Rebased on top of latest master
Lokesh Vutla (5):
cmd: remoteproc: Add support for initializing devices individually
cmd: remoteproc: Allow list command to print the probed devices
remoteproc: tisci: add TI-SCI processor control helper functions
remoteproc: k3_rproc: Update the driver to use ti_sci_proc helpers
remoteproc: k3_rproc: Rename to ti_k3_arm64_rproc
cmd/remoteproc.c | 42 +++---
configs/am65x_evm_a53_defconfig | 1 -
configs/am65x_evm_r5_defconfig | 2 +-
configs/am65x_hs_evm_a53_defconfig | 1 -
configs/am65x_hs_evm_r5_defconfig | 2 +-
drivers/remoteproc/Kconfig | 20 +--
drivers/remoteproc/Makefile | 2 +-
.../{k3_rproc.c => ti_k3_arm64_rproc.c} | 136 ++++++++----------
drivers/remoteproc/ti_sci_proc.h | 121 ++++++++++++++++
9 files changed, 217 insertions(+), 110 deletions(-)
rename drivers/remoteproc/{k3_rproc.c => ti_k3_arm64_rproc.c} (56%)
create mode 100644 drivers/remoteproc/ti_sci_proc.h
--
2.21.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 1/5] cmd: remoteproc: Add support for initializing devices individually
2019-06-07 13:55 [U-Boot] [PATCH v2 0/5] remoteproc: cleanup k3_rpoc driver Lokesh Vutla
@ 2019-06-07 13:55 ` Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
2019-06-07 13:55 ` [U-Boot] [PATCH v2 2/5] cmd: remoteproc: Allow list command to print the probed devices Lokesh Vutla
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Lokesh Vutla @ 2019-06-07 13:55 UTC (permalink / raw)
To: u-boot
'rproc init' does the probe and initialization of all the available
remoteproc devices in the system. This doesn't allow the flexibility
to initialize the remote cores needed as per use case. In order
to provide flexibility, update 'rproc init' command to accept one
more parameter with rproc id which when passed initializes only
that specific core. If no id is passed, command will initializes
all the cores which is compatible with the existing behaviour.
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
cmd/remoteproc.c | 33 ++++++++++++++++++---------------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/cmd/remoteproc.c b/cmd/remoteproc.c
index 81463f36b6..9702cf08f7 100644
--- a/cmd/remoteproc.c
+++ b/cmd/remoteproc.c
@@ -68,12 +68,22 @@ static int print_remoteproc_list(void)
static int do_rproc_init(cmd_tbl_t *cmdtp, int flag, int argc,
char *const argv[])
{
+ int id;
+
if (rproc_is_initialized()) {
printf("\tRemote Processors are already initialized\n");
- } else {
+ return CMD_RET_FAILURE;
+ }
+
+ if (argc == 1) {
if (!rproc_init())
return 0;
- printf("Few Remote Processors failed to be initalized\n");
+ printf("Few Remote Processors failed to be initialized\n");
+ } else if (argc == 2) {
+ id = (int)simple_strtoul(argv[1], NULL, 10);
+ if (!rproc_dev_init(id))
+ return 0;
+ printf("Remote Processor %d failed to be initialized\n", id);
}
return CMD_RET_FAILURE;
@@ -130,11 +140,6 @@ static int do_remoteproc_load(cmd_tbl_t *cmdtp, int flag, int argc,
return CMD_RET_USAGE;
}
- if (!rproc_is_initialized()) {
- printf("\tRemote Processors are not initialized\n");
- return CMD_RET_USAGE;
- }
-
ret = rproc_load(id, addr, size);
printf("Load Remote Processor %d with data at addr=0x%08lx %lu bytes:%s\n",
id, addr, size, ret ? " Failed!" : " Success!");
@@ -165,11 +170,6 @@ static int do_remoteproc_wrapper(cmd_tbl_t *cmdtp, int flag, int argc,
id = (int)simple_strtoul(argv[1], NULL, 10);
- if (!rproc_is_initialized()) {
- printf("\tRemote Processors are not initialized\n");
- return CMD_RET_USAGE;
- }
-
if (!strcmp(argv[0], "start")) {
ret = rproc_start(id);
} else if (!strcmp(argv[0], "stop")) {
@@ -203,8 +203,10 @@ static int do_remoteproc_wrapper(cmd_tbl_t *cmdtp, int flag, int argc,
}
static cmd_tbl_t cmd_remoteproc_sub[] = {
- U_BOOT_CMD_MKENT(init, 0, 1, do_rproc_init,
- "Enumerate and initialize all processors", ""),
+ U_BOOT_CMD_MKENT(init, 1, 1, do_rproc_init,
+ "Enumerate and initialize the remote processor(s)",
+ "id - ID of the remote processor\n"
+ "If id is not passed, initialize all the remote processors"),
U_BOOT_CMD_MKENT(list, 0, 1, do_remoteproc_list,
"list remote processors", ""),
U_BOOT_CMD_MKENT(load, 5, 1, do_remoteproc_load,
@@ -270,7 +272,8 @@ U_BOOT_CMD(rproc, 5, 1, do_remoteproc,
"\t\tNote: Services are dependent on the driver capability\n"
"\t\t 'list' command shows the capability of each device\n"
"\n\tSubcommands:\n"
- "\tinit - Enumerate and initalize the remote processors\n"
+ "\tinit <id> - Enumerate and initalize the remote processor.\n"
+ "\t if id is not passed, initialize all the remote prcessors\n"
"\tlist - list available remote processors\n"
"\tload <id> [addr] [size]- Load the remote processor with binary\n"
"\t image stored at address [addr] in memory\n"
--
2.21.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 2/5] cmd: remoteproc: Allow list command to print the probed devices
2019-06-07 13:55 [U-Boot] [PATCH v2 0/5] remoteproc: cleanup k3_rpoc driver Lokesh Vutla
2019-06-07 13:55 ` [U-Boot] [PATCH v2 1/5] cmd: remoteproc: Add support for initializing devices individually Lokesh Vutla
@ 2019-06-07 13:55 ` Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
2019-06-07 13:55 ` [U-Boot] [PATCH v2 3/5] remoteproc: tisci: add TI-SCI processor control helper functions Lokesh Vutla
` (2 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Lokesh Vutla @ 2019-06-07 13:55 UTC (permalink / raw)
To: u-boot
'rproc list' is currently allowed only after probing all the
available remoteproc devices. Given that 'rproc init' is updated
to probe and initialize devices individually, allow the 'rproc list'
command to print all probed devices at any point.
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
cmd/remoteproc.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/cmd/remoteproc.c b/cmd/remoteproc.c
index 9702cf08f7..da6f3fc8cc 100644
--- a/cmd/remoteproc.c
+++ b/cmd/remoteproc.c
@@ -34,6 +34,10 @@ static int print_remoteproc_list(void)
uc_pdata = dev_get_uclass_platdata(dev);
+ /* Do not print if rproc is not probed */
+ if (!(dev->flags & DM_FLAG_ACTIVATED))
+ continue;
+
switch (uc_pdata->mem_type) {
case RPROC_INTERNAL_MEMORY_MAPPED:
type = "internal memory mapped";
@@ -101,11 +105,6 @@ static int do_rproc_init(cmd_tbl_t *cmdtp, int flag, int argc,
static int do_remoteproc_list(cmd_tbl_t *cmdtp, int flag, int argc,
char *const argv[])
{
- if (!rproc_is_initialized()) {
- printf("\t Remote Processors is not initialized\n");
- return CMD_RET_USAGE;
- }
-
if (print_remoteproc_list())
return CMD_RET_FAILURE;
--
2.21.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 3/5] remoteproc: tisci: add TI-SCI processor control helper functions
2019-06-07 13:55 [U-Boot] [PATCH v2 0/5] remoteproc: cleanup k3_rpoc driver Lokesh Vutla
2019-06-07 13:55 ` [U-Boot] [PATCH v2 1/5] cmd: remoteproc: Add support for initializing devices individually Lokesh Vutla
2019-06-07 13:55 ` [U-Boot] [PATCH v2 2/5] cmd: remoteproc: Allow list command to print the probed devices Lokesh Vutla
@ 2019-06-07 13:55 ` Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
2019-06-07 13:55 ` [U-Boot] [PATCH v2 4/5] remoteproc: k3_rproc: Update the driver to use ti_sci_proc helpers Lokesh Vutla
2019-06-07 13:55 ` [U-Boot] [PATCH v2 5/5] remoteproc: k3_rproc: Rename to ti_k3_arm64_rproc Lokesh Vutla
4 siblings, 1 reply; 11+ messages in thread
From: Lokesh Vutla @ 2019-06-07 13:55 UTC (permalink / raw)
To: u-boot
Texas Instruments' K3 generation SoCs has specific modules/register
spaces used for configuring the various aspects of a remote processor.
These include power, reset, boot vector and other configuration features
specific to each compute processor present on the SoC. These registers
are managed by the System Controller such as DMSC on K3 AM65x SoCs.
The Texas Instrument's System Control Interface (TI-SCI) Message Protocol
is used to communicate to the System Controller from various compute
processors to invoke specific services provided by the firmware running
on the System Controller.
Add a common processor control interface header file that can be used by
multiple remoteproc drivers. The helper functions within this header file
abstract the various TI SCI protocol ops for the remoteproc drivers, and
allow them to request the System Controller to be able to program and
manage various remote processors on the SoC. The common macros required
by the R5 remoteproc driver were also added. The remoteproc drivers are
expected to manage the life-cycle of their ti_sci_proc_dev local
structures.
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
---
drivers/remoteproc/ti_sci_proc.h | 121 +++++++++++++++++++++++++++++++
1 file changed, 121 insertions(+)
create mode 100644 drivers/remoteproc/ti_sci_proc.h
diff --git a/drivers/remoteproc/ti_sci_proc.h b/drivers/remoteproc/ti_sci_proc.h
new file mode 100644
index 0000000000..ccfc39ec88
--- /dev/null
+++ b/drivers/remoteproc/ti_sci_proc.h
@@ -0,0 +1,121 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Texas Instruments TI-SCI Processor Controller Helper Functions
+ *
+ * Copyright (C) 2018-2019 Texas Instruments Incorporated - http://www.ti.com/
+ * Lokesh Vutla <lokeshvutla@ti.com>
+ * Suman Anna <s-anna@ti.com>
+ */
+
+#ifndef REMOTEPROC_TI_SCI_PROC_H
+#define REMOTEPROC_TI_SCI_PROC_H
+
+#define TISCI_INVALID_HOST 0xff
+
+/**
+ * struct ti_sci_proc - structure representing a processor control client
+ * @sci: cached TI-SCI protocol handle
+ * @ops: cached TI-SCI proc ops
+ * @proc_id: processor id for the consumer remoteproc device
+ * @host_id: host id to pass the control over for this consumer remoteproc
+ * device
+ */
+struct ti_sci_proc {
+ const struct ti_sci_handle *sci;
+ const struct ti_sci_proc_ops *ops;
+ u8 proc_id;
+ u8 host_id;
+};
+
+static inline int ti_sci_proc_request(struct ti_sci_proc *tsp)
+{
+ int ret;
+
+ debug("%s: proc_id = %d\n", __func__, tsp->proc_id);
+
+ ret = tsp->ops->proc_request(tsp->sci, tsp->proc_id);
+ if (ret)
+ pr_err("ti-sci processor request failed: %d\n", ret);
+ return ret;
+}
+
+static inline int ti_sci_proc_release(struct ti_sci_proc *tsp)
+{
+ int ret;
+
+ debug("%s: proc_id = %d\n", __func__, tsp->proc_id);
+
+ if (tsp->host_id != TISCI_INVALID_HOST)
+ ret = tsp->ops->proc_handover(tsp->sci, tsp->proc_id,
+ tsp->host_id);
+ else
+ ret = tsp->ops->proc_release(tsp->sci, tsp->proc_id);
+
+ if (ret)
+ pr_err("ti-sci processor release failed: %d\n", ret);
+ return ret;
+}
+
+static inline int ti_sci_proc_handover(struct ti_sci_proc *tsp)
+{
+ int ret;
+
+ debug("%s: proc_id = %d\n", __func__, tsp->proc_id);
+
+ ret = tsp->ops->proc_handover(tsp->sci, tsp->proc_id, tsp->host_id);
+ if (ret)
+ pr_err("ti-sci processor handover of %d to %d failed: %d\n",
+ tsp->proc_id, tsp->host_id, ret);
+ return ret;
+}
+
+static inline int ti_sci_proc_get_status(struct ti_sci_proc *tsp,
+ u64 *boot_vector, u32 *cfg_flags,
+ u32 *ctrl_flags, u32 *status_flags)
+{
+ int ret;
+
+ ret = tsp->ops->get_proc_boot_status(tsp->sci, tsp->proc_id,
+ boot_vector, cfg_flags, ctrl_flags,
+ status_flags);
+ if (ret)
+ pr_err("ti-sci processor get_status failed: %d\n", ret);
+
+ debug("%s: proc_id = %d, boot_vector = 0x%llx, cfg_flags = 0x%x, ctrl_flags = 0x%x, sts = 0x%x\n",
+ __func__, tsp->proc_id, *boot_vector, *cfg_flags, *ctrl_flags,
+ *status_flags);
+ return ret;
+}
+
+static inline int ti_sci_proc_set_config(struct ti_sci_proc *tsp,
+ u64 boot_vector,
+ u32 cfg_set, u32 cfg_clr)
+{
+ int ret;
+
+ debug("%s: proc_id = %d, boot_vector = 0x%llx, cfg_set = 0x%x, cfg_clr = 0x%x\n",
+ __func__, tsp->proc_id, boot_vector, cfg_set, cfg_clr);
+
+ ret = tsp->ops->set_proc_boot_cfg(tsp->sci, tsp->proc_id, boot_vector,
+ cfg_set, cfg_clr);
+ if (ret)
+ pr_err("ti-sci processor set_config failed: %d\n", ret);
+ return ret;
+}
+
+static inline int ti_sci_proc_set_control(struct ti_sci_proc *tsp,
+ u32 ctrl_set, u32 ctrl_clr)
+{
+ int ret;
+
+ debug("%s: proc_id = %d, ctrl_set = 0x%x, ctrl_clr = 0x%x\n", __func__,
+ tsp->proc_id, ctrl_set, ctrl_clr);
+
+ ret = tsp->ops->set_proc_boot_ctrl(tsp->sci, tsp->proc_id, ctrl_set,
+ ctrl_clr);
+ if (ret)
+ pr_err("ti-sci processor set_control failed: %d\n", ret);
+ return ret;
+}
+
+#endif /* REMOTEPROC_TI_SCI_PROC_H */
--
2.21.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 4/5] remoteproc: k3_rproc: Update the driver to use ti_sci_proc helpers
2019-06-07 13:55 [U-Boot] [PATCH v2 0/5] remoteproc: cleanup k3_rpoc driver Lokesh Vutla
` (2 preceding siblings ...)
2019-06-07 13:55 ` [U-Boot] [PATCH v2 3/5] remoteproc: tisci: add TI-SCI processor control helper functions Lokesh Vutla
@ 2019-06-07 13:55 ` Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
2019-06-07 13:55 ` [U-Boot] [PATCH v2 5/5] remoteproc: k3_rproc: Rename to ti_k3_arm64_rproc Lokesh Vutla
4 siblings, 1 reply; 11+ messages in thread
From: Lokesh Vutla @ 2019-06-07 13:55 UTC (permalink / raw)
To: u-boot
Update the k3_rproc driver to use the generic ti_sci_proc helper
apis which simplifies the driver a bit.
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
drivers/remoteproc/k3_rproc.c | 79 ++++++++++++++---------------------
1 file changed, 31 insertions(+), 48 deletions(-)
diff --git a/drivers/remoteproc/k3_rproc.c b/drivers/remoteproc/k3_rproc.c
index 3c29d925ce..4f9567c924 100644
--- a/drivers/remoteproc/k3_rproc.c
+++ b/drivers/remoteproc/k3_rproc.c
@@ -16,6 +16,7 @@
#include <asm/io.h>
#include <power-domain.h>
#include <linux/soc/ti/ti_sci_protocol.h>
+#include "ti_sci_proc.h"
#define INVALID_ID 0xffff
@@ -27,18 +28,15 @@
* @rproc_pwrdmn: rproc power domain data
* @rproc_rst: rproc reset control data
* @sci: Pointer to TISCI handle
+ * @tsp: TISCI processor control helper structure
* @gtc_base: Timer base address.
- * @proc_id: TISCI processor ID
- * @host_id: TISCI host id to which the processor gets assigned to.
*/
struct k3_rproc_privdata {
struct power_domain rproc_pwrdmn;
struct power_domain gtc_pwrdmn;
struct reset_ctl rproc_rst;
- const struct ti_sci_handle *sci;
+ struct ti_sci_proc tsp;
void *gtc_base;
- u16 proc_id;
- u16 host_id;
};
/**
@@ -52,27 +50,16 @@ struct k3_rproc_privdata {
static int k3_rproc_load(struct udevice *dev, ulong addr, ulong size)
{
struct k3_rproc_privdata *rproc = dev_get_priv(dev);
- const struct ti_sci_proc_ops *pops = &rproc->sci->ops.proc_ops;
int ret;
dev_dbg(dev, "%s addr = 0x%lx, size = 0x%lx\n", __func__, addr, size);
/* request for the processor */
- ret = pops->proc_request(rproc->sci, rproc->proc_id);
- if (ret) {
- dev_err(dev, "Requesting processor failed %d\n", ret);
+ ret = ti_sci_proc_request(&rproc->tsp);
+ if (ret)
return ret;
- }
-
- ret = pops->set_proc_boot_cfg(rproc->sci, rproc->proc_id, addr, 0, 0);
- if (ret) {
- dev_err(dev, "set_proc_boot_cfg failed %d\n", ret);
- return ret;
- }
-
- dev_dbg(dev, "%s: rproc successfully loaded\n", __func__);
- return 0;
+ return ti_sci_proc_set_config(&rproc->tsp, addr, 0, 0);
}
/**
@@ -84,7 +71,6 @@ static int k3_rproc_load(struct udevice *dev, ulong addr, ulong size)
static int k3_rproc_start(struct udevice *dev)
{
struct k3_rproc_privdata *rproc = dev_get_priv(dev);
- const struct ti_sci_proc_ops *pops = &rproc->sci->ops.proc_ops;
int ret;
dev_dbg(dev, "%s\n", __func__);
@@ -109,24 +95,7 @@ static int k3_rproc_start(struct udevice *dev)
return ret;
}
- if (rproc->host_id != INVALID_ID) {
- ret = pops->proc_handover(rproc->sci, rproc->proc_id,
- rproc->host_id);
- if (ret) {
- dev_err(dev, "Handover processor failed %d\n", ret);
- return ret;
- }
- } else {
- ret = pops->proc_release(rproc->sci, rproc->proc_id);
- if (ret) {
- dev_err(dev, "Processor release failed %d\n", ret);
- return ret;
- }
- }
-
- dev_dbg(dev, "%s: rproc successfully started\n", __func__);
-
- return 0;
+ return ti_sci_proc_release(&rproc->tsp);
}
/**
@@ -151,6 +120,27 @@ static const struct dm_rproc_ops k3_rproc_ops = {
.start = k3_rproc_start,
};
+static int ti_sci_proc_of_to_priv(struct udevice *dev, struct ti_sci_proc *tsp)
+{
+ dev_dbg(dev, "%s\n", __func__);
+
+ tsp->sci = ti_sci_get_by_phandle(dev, "ti,sci");
+ if (IS_ERR(tsp->sci)) {
+ dev_err(dev, "ti_sci get failed: %ld\n", PTR_ERR(tsp->sci));
+ return PTR_ERR(tsp->sci);
+ }
+
+ tsp->proc_id = dev_read_u32_default(dev, "ti,sci-proc-id", INVALID_ID);
+ if (tsp->proc_id == INVALID_ID) {
+ dev_err(dev, "proc id not populated\n");
+ return -ENOENT;
+ }
+ tsp->host_id = dev_read_u32_default(dev, "ti,sci-host-id", INVALID_ID);
+ tsp->ops = &tsp->sci->ops.proc_ops;
+
+ return 0;
+}
+
/**
* k3_of_to_priv() - generate private data from device tree
* @dev: corresponding k3 remote processor device
@@ -183,11 +173,9 @@ static int k3_rproc_of_to_priv(struct udevice *dev,
return ret;
}
- rproc->sci = ti_sci_get_by_phandle(dev, "ti,sci");
- if (IS_ERR(rproc->sci)) {
- dev_err(dev, "ti_sci get failed: %d\n", ret);
- return PTR_ERR(rproc->sci);
- }
+ ret = ti_sci_proc_of_to_priv(dev, &rproc->tsp);
+ if (ret)
+ return ret;
rproc->gtc_base = dev_read_addr_ptr(dev);
if (!rproc->gtc_base) {
@@ -195,11 +183,6 @@ static int k3_rproc_of_to_priv(struct udevice *dev,
return -ENODEV;
}
- rproc->proc_id = dev_read_u32_default(dev, "ti,sci-proc-id",
- INVALID_ID);
- rproc->host_id = dev_read_u32_default(dev, "ti,sci-host-id",
- INVALID_ID);
-
return 0;
}
--
2.21.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 5/5] remoteproc: k3_rproc: Rename to ti_k3_arm64_rproc
2019-06-07 13:55 [U-Boot] [PATCH v2 0/5] remoteproc: cleanup k3_rpoc driver Lokesh Vutla
` (3 preceding siblings ...)
2019-06-07 13:55 ` [U-Boot] [PATCH v2 4/5] remoteproc: k3_rproc: Update the driver to use ti_sci_proc helpers Lokesh Vutla
@ 2019-06-07 13:55 ` Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
4 siblings, 1 reply; 11+ messages in thread
From: Lokesh Vutla @ 2019-06-07 13:55 UTC (permalink / raw)
To: u-boot
k3_rproc driver is specifically meant for controlling an arm64
core using TISCI protocol. So rename the driver, Kconfig symbol,
compatible and functions accordingly.
While at it drop this remoteproc selection for a53 defconfig.
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
configs/am65x_evm_a53_defconfig | 1 -
configs/am65x_evm_r5_defconfig | 2 +-
configs/am65x_hs_evm_a53_defconfig | 1 -
configs/am65x_hs_evm_r5_defconfig | 2 +-
drivers/remoteproc/Kconfig | 20 ++++---
drivers/remoteproc/Makefile | 2 +-
.../{k3_rproc.c => ti_k3_arm64_rproc.c} | 57 ++++++++++---------
7 files changed, 43 insertions(+), 42 deletions(-)
rename drivers/remoteproc/{k3_rproc.c => ti_k3_arm64_rproc.c} (77%)
diff --git a/configs/am65x_evm_a53_defconfig b/configs/am65x_evm_a53_defconfig
index b0c080ebf1..3196b70d2c 100644
--- a/configs/am65x_evm_a53_defconfig
+++ b/configs/am65x_evm_a53_defconfig
@@ -74,7 +74,6 @@ CONFIG_PINCTRL_SINGLE=y
CONFIG_POWER_DOMAIN=y
CONFIG_TI_SCI_POWER_DOMAIN=y
CONFIG_K3_SYSTEM_CONTROLLER=y
-CONFIG_REMOTEPROC_K3=y
CONFIG_DM_RESET=y
CONFIG_RESET_TI_SCI=y
CONFIG_DM_SERIAL=y
diff --git a/configs/am65x_evm_r5_defconfig b/configs/am65x_evm_r5_defconfig
index 7e81a98454..c59b7d98dc 100644
--- a/configs/am65x_evm_r5_defconfig
+++ b/configs/am65x_evm_r5_defconfig
@@ -86,7 +86,7 @@ CONFIG_SPL_DM_REGULATOR_GPIO=y
CONFIG_RAM=y
CONFIG_SPL_RAM=y
CONFIG_K3_SYSTEM_CONTROLLER=y
-CONFIG_REMOTEPROC_K3=y
+CONFIG_REMOTEPROC_TI_K3_ARM64=y
CONFIG_DM_RESET=y
CONFIG_RESET_TI_SCI=y
CONFIG_DM_SERIAL=y
diff --git a/configs/am65x_hs_evm_a53_defconfig b/configs/am65x_hs_evm_a53_defconfig
index 56052f73f3..48b28b390e 100644
--- a/configs/am65x_hs_evm_a53_defconfig
+++ b/configs/am65x_hs_evm_a53_defconfig
@@ -77,7 +77,6 @@ CONFIG_PINCTRL_SINGLE=y
CONFIG_POWER_DOMAIN=y
CONFIG_TI_SCI_POWER_DOMAIN=y
CONFIG_K3_SYSTEM_CONTROLLER=y
-CONFIG_REMOTEPROC_K3=y
CONFIG_DM_RESET=y
CONFIG_RESET_TI_SCI=y
CONFIG_DM_SERIAL=y
diff --git a/configs/am65x_hs_evm_r5_defconfig b/configs/am65x_hs_evm_r5_defconfig
index d378d1e9ee..2f962b0e82 100644
--- a/configs/am65x_hs_evm_r5_defconfig
+++ b/configs/am65x_hs_evm_r5_defconfig
@@ -86,7 +86,7 @@ CONFIG_SPL_DM_REGULATOR_GPIO=y
CONFIG_RAM=y
CONFIG_SPL_RAM=y
CONFIG_K3_SYSTEM_CONTROLLER=y
-CONFIG_REMOTEPROC_K3=y
+CONFIG_REMOTEPROC_TI_K3_ARM64=y
CONFIG_DM_RESET=y
CONFIG_RESET_TI_SCI=y
CONFIG_DM_SERIAL=y
diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
index 9eb532bc7a..db4d4ee856 100644
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -22,15 +22,6 @@ config K3_SYSTEM_CONTROLLER
help
Say 'y' here to add support for TI' K3 System Controller.
-config REMOTEPROC_K3
- bool "Support for TI's K3 based remoteproc driver"
- select REMOTEPROC
- depends on DM
- depends on ARCH_K3
- depends on OF_CONTROL
- help
- Say 'y' here to add support for TI' K3 remoteproc driver.
-
config REMOTEPROC_SANDBOX
bool "Support for Test processor for Sandbox"
select REMOTEPROC
@@ -40,6 +31,17 @@ config REMOTEPROC_SANDBOX
Say 'y' here to add support for test processor which does dummy
operations for sandbox platform.
+config REMOTEPROC_TI_K3_ARM64
+ bool "Support for TI's K3 based ARM64 remoteproc driver"
+ select REMOTEPROC
+ depends on DM
+ depends on ARCH_K3
+ depends on OF_CONTROL
+ help
+ Say y here to support TI's ARM64 processor subsystems
+ on various TI K3 family of SoCs through the remote processor
+ framework.
+
config REMOTEPROC_TI_POWER
bool "Support for TI Power processor"
select REMOTEPROC
diff --git a/drivers/remoteproc/Makefile b/drivers/remoteproc/Makefile
index 77eb708523..ccc8e7ec32 100644
--- a/drivers/remoteproc/Makefile
+++ b/drivers/remoteproc/Makefile
@@ -8,6 +8,6 @@ obj-$(CONFIG_$(SPL_)REMOTEPROC) += rproc-uclass.o
# Remote proc drivers - Please keep this list alphabetically sorted.
obj-$(CONFIG_K3_SYSTEM_CONTROLLER) += k3_system_controller.o
-obj-$(CONFIG_REMOTEPROC_K3) += k3_rproc.o
obj-$(CONFIG_REMOTEPROC_SANDBOX) += sandbox_testproc.o
+obj-$(CONFIG_REMOTEPROC_TI_K3_ARM64) += ti_k3_arm64_rproc.o
obj-$(CONFIG_REMOTEPROC_TI_POWER) += ti_power_proc.o
diff --git a/drivers/remoteproc/k3_rproc.c b/drivers/remoteproc/ti_k3_arm64_rproc.c
similarity index 77%
rename from drivers/remoteproc/k3_rproc.c
rename to drivers/remoteproc/ti_k3_arm64_rproc.c
index 4f9567c924..9676a96f98 100644
--- a/drivers/remoteproc/k3_rproc.c
+++ b/drivers/remoteproc/ti_k3_arm64_rproc.c
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0+
/*
- * Texas Instruments' K3 Remoteproc driver
+ * Texas Instruments' K3 ARM64 Remoteproc driver
*
* Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
* Lokesh Vutla <lokeshvutla@ti.com>
@@ -24,14 +24,14 @@
#define GTC_CNTR_EN 0x3
/**
- * struct k3_rproc_privdata - Structure representing Remote processor data.
+ * struct k3_arm64_privdata - Structure representing Remote processor data.
* @rproc_pwrdmn: rproc power domain data
* @rproc_rst: rproc reset control data
* @sci: Pointer to TISCI handle
* @tsp: TISCI processor control helper structure
* @gtc_base: Timer base address.
*/
-struct k3_rproc_privdata {
+struct k3_arm64_privdata {
struct power_domain rproc_pwrdmn;
struct power_domain gtc_pwrdmn;
struct reset_ctl rproc_rst;
@@ -40,16 +40,16 @@ struct k3_rproc_privdata {
};
/**
- * k3_rproc_load() - Load up the Remote processor image
+ * k3_arm64_load() - Load up the Remote processor image
* @dev: rproc device pointer
* @addr: Address at which image is available
* @size: size of the image
*
* Return: 0 if all goes good, else appropriate error message.
*/
-static int k3_rproc_load(struct udevice *dev, ulong addr, ulong size)
+static int k3_arm64_load(struct udevice *dev, ulong addr, ulong size)
{
- struct k3_rproc_privdata *rproc = dev_get_priv(dev);
+ struct k3_arm64_privdata *rproc = dev_get_priv(dev);
int ret;
dev_dbg(dev, "%s addr = 0x%lx, size = 0x%lx\n", __func__, addr, size);
@@ -63,14 +63,14 @@ static int k3_rproc_load(struct udevice *dev, ulong addr, ulong size)
}
/**
- * k3_rproc_start() - Start the remote processor
+ * k3_arm64_start() - Start the remote processor
* @dev: rproc device pointer
*
* Return: 0 if all went ok, else return appropriate error
*/
-static int k3_rproc_start(struct udevice *dev)
+static int k3_arm64_start(struct udevice *dev)
{
- struct k3_rproc_privdata *rproc = dev_get_priv(dev);
+ struct k3_arm64_privdata *rproc = dev_get_priv(dev);
int ret;
dev_dbg(dev, "%s\n", __func__);
@@ -99,12 +99,12 @@ static int k3_rproc_start(struct udevice *dev)
}
/**
- * k3_rproc_init() - Initialize the remote processor
+ * k3_arm64_init() - Initialize the remote processor
* @dev: rproc device pointer
*
* Return: 0 if all went ok, else return appropriate error
*/
-static int k3_rproc_init(struct udevice *dev)
+static int k3_arm64_init(struct udevice *dev)
{
dev_dbg(dev, "%s\n", __func__);
@@ -114,10 +114,10 @@ static int k3_rproc_init(struct udevice *dev)
return 0;
}
-static const struct dm_rproc_ops k3_rproc_ops = {
- .init = k3_rproc_init,
- .load = k3_rproc_load,
- .start = k3_rproc_start,
+static const struct dm_rproc_ops k3_arm64_ops = {
+ .init = k3_arm64_init,
+ .load = k3_arm64_load,
+ .start = k3_arm64_start,
};
static int ti_sci_proc_of_to_priv(struct udevice *dev, struct ti_sci_proc *tsp)
@@ -148,8 +148,8 @@ static int ti_sci_proc_of_to_priv(struct udevice *dev, struct ti_sci_proc *tsp)
*
* Return: 0 if all goes good, else appropriate error message.
*/
-static int k3_rproc_of_to_priv(struct udevice *dev,
- struct k3_rproc_privdata *rproc)
+static int k3_arm64_of_to_priv(struct udevice *dev,
+ struct k3_arm64_privdata *rproc)
{
int ret;
@@ -187,21 +187,21 @@ static int k3_rproc_of_to_priv(struct udevice *dev,
}
/**
- * k3_rproc_probe() - Basic probe
+ * k3_arm64_probe() - Basic probe
* @dev: corresponding k3 remote processor device
*
* Return: 0 if all goes good, else appropriate error message.
*/
-static int k3_rproc_probe(struct udevice *dev)
+static int k3_arm64_probe(struct udevice *dev)
{
- struct k3_rproc_privdata *priv;
+ struct k3_arm64_privdata *priv;
int ret;
dev_dbg(dev, "%s\n", __func__);
priv = dev_get_priv(dev);
- ret = k3_rproc_of_to_priv(dev, priv);
+ ret = k3_arm64_of_to_priv(dev, priv);
if (ret) {
dev_dbg(dev, "%s: Probe failed with error %d\n", __func__, ret);
return ret;
@@ -212,16 +212,17 @@ static int k3_rproc_probe(struct udevice *dev)
return 0;
}
-static const struct udevice_id k3_rproc_ids[] = {
+static const struct udevice_id k3_arm64_ids[] = {
+ { .compatible = "ti,am654-arm64"},
{ .compatible = "ti,am654-rproc"},
{}
};
-U_BOOT_DRIVER(k3_rproc) = {
- .name = "k3_rproc",
- .of_match = k3_rproc_ids,
+U_BOOT_DRIVER(k3_arm64) = {
+ .name = "k3_arm64",
+ .of_match = k3_arm64_ids,
.id = UCLASS_REMOTEPROC,
- .ops = &k3_rproc_ops,
- .probe = k3_rproc_probe,
- .priv_auto_alloc_size = sizeof(struct k3_rproc_privdata),
+ .ops = &k3_arm64_ops,
+ .probe = k3_arm64_probe,
+ .priv_auto_alloc_size = sizeof(struct k3_arm64_privdata),
};
--
2.21.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 1/5] cmd: remoteproc: Add support for initializing devices individually
2019-06-07 13:55 ` [U-Boot] [PATCH v2 1/5] cmd: remoteproc: Add support for initializing devices individually Lokesh Vutla
@ 2019-07-28 21:46 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2019-07-28 21:46 UTC (permalink / raw)
To: u-boot
On Fri, Jun 07, 2019 at 07:25:55PM +0530, Lokesh Vutla wrote:
> 'rproc init' does the probe and initialization of all the available
> remoteproc devices in the system. This doesn't allow the flexibility
> to initialize the remote cores needed as per use case. In order
> to provide flexibility, update 'rproc init' command to accept one
> more parameter with rproc id which when passed initializes only
> that specific core. If no id is passed, command will initializes
> all the cores which is compatible with the existing behaviour.
>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190728/8e15f15c/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 2/5] cmd: remoteproc: Allow list command to print the probed devices
2019-06-07 13:55 ` [U-Boot] [PATCH v2 2/5] cmd: remoteproc: Allow list command to print the probed devices Lokesh Vutla
@ 2019-07-28 21:46 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2019-07-28 21:46 UTC (permalink / raw)
To: u-boot
On Fri, Jun 07, 2019 at 07:25:56PM +0530, Lokesh Vutla wrote:
> 'rproc list' is currently allowed only after probing all the
> available remoteproc devices. Given that 'rproc init' is updated
> to probe and initialize devices individually, allow the 'rproc list'
> command to print all probed devices at any point.
>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190728/58e5b171/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 3/5] remoteproc: tisci: add TI-SCI processor control helper functions
2019-06-07 13:55 ` [U-Boot] [PATCH v2 3/5] remoteproc: tisci: add TI-SCI processor control helper functions Lokesh Vutla
@ 2019-07-28 21:46 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2019-07-28 21:46 UTC (permalink / raw)
To: u-boot
On Fri, Jun 07, 2019 at 07:25:57PM +0530, Lokesh Vutla wrote:
> Texas Instruments' K3 generation SoCs has specific modules/register
> spaces used for configuring the various aspects of a remote processor.
> These include power, reset, boot vector and other configuration features
> specific to each compute processor present on the SoC. These registers
> are managed by the System Controller such as DMSC on K3 AM65x SoCs.
>
> The Texas Instrument's System Control Interface (TI-SCI) Message Protocol
> is used to communicate to the System Controller from various compute
> processors to invoke specific services provided by the firmware running
> on the System Controller.
>
> Add a common processor control interface header file that can be used by
> multiple remoteproc drivers. The helper functions within this header file
> abstract the various TI SCI protocol ops for the remoteproc drivers, and
> allow them to request the System Controller to be able to program and
> manage various remote processors on the SoC. The common macros required
> by the R5 remoteproc driver were also added. The remoteproc drivers are
> expected to manage the life-cycle of their ti_sci_proc_dev local
> structures.
>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
> Signed-off-by: Suman Anna <s-anna@ti.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190728/5a4d6b7c/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 4/5] remoteproc: k3_rproc: Update the driver to use ti_sci_proc helpers
2019-06-07 13:55 ` [U-Boot] [PATCH v2 4/5] remoteproc: k3_rproc: Update the driver to use ti_sci_proc helpers Lokesh Vutla
@ 2019-07-28 21:46 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2019-07-28 21:46 UTC (permalink / raw)
To: u-boot
On Fri, Jun 07, 2019 at 07:25:58PM +0530, Lokesh Vutla wrote:
> Update the k3_rproc driver to use the generic ti_sci_proc helper
> apis which simplifies the driver a bit.
>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190728/4c260e64/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 5/5] remoteproc: k3_rproc: Rename to ti_k3_arm64_rproc
2019-06-07 13:55 ` [U-Boot] [PATCH v2 5/5] remoteproc: k3_rproc: Rename to ti_k3_arm64_rproc Lokesh Vutla
@ 2019-07-28 21:46 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2019-07-28 21:46 UTC (permalink / raw)
To: u-boot
On Fri, Jun 07, 2019 at 07:25:59PM +0530, Lokesh Vutla wrote:
> k3_rproc driver is specifically meant for controlling an arm64
> core using TISCI protocol. So rename the driver, Kconfig symbol,
> compatible and functions accordingly.
>
> While at it drop this remoteproc selection for a53 defconfig.
>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190728/33f7e772/attachment-0001.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2019-07-28 21:46 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-07 13:55 [U-Boot] [PATCH v2 0/5] remoteproc: cleanup k3_rpoc driver Lokesh Vutla
2019-06-07 13:55 ` [U-Boot] [PATCH v2 1/5] cmd: remoteproc: Add support for initializing devices individually Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
2019-06-07 13:55 ` [U-Boot] [PATCH v2 2/5] cmd: remoteproc: Allow list command to print the probed devices Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
2019-06-07 13:55 ` [U-Boot] [PATCH v2 3/5] remoteproc: tisci: add TI-SCI processor control helper functions Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
2019-06-07 13:55 ` [U-Boot] [PATCH v2 4/5] remoteproc: k3_rproc: Update the driver to use ti_sci_proc helpers Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
2019-06-07 13:55 ` [U-Boot] [PATCH v2 5/5] remoteproc: k3_rproc: Rename to ti_k3_arm64_rproc Lokesh Vutla
2019-07-28 21:46 ` Tom Rini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox