[Pdbg] [PATCH v5 05/19] libpdbg: Use PDBG_BACKEND_DRIVER to specify drivers to load
Amitay Isaacs
amitay at ozlabs.org
Thu Apr 30 12:34:26 AEST 2020
When PDBG_BACKEND_DTB is specified, backend may not be set. This means
only the drivers registered with PDBG_DEFAULT_BACKEND will be loaded.
To be able to match backend specific drivers for targets in system tree,
use the backend specified in PDBG_BACKEND_DRIVER environment variable.
Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
---
libpdbg/dtb.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/libpdbg/dtb.c b/libpdbg/dtb.c
index 70b7962..3b7a597 100644
--- a/libpdbg/dtb.c
+++ b/libpdbg/dtb.c
@@ -76,8 +76,25 @@ static struct pdbg_dtb pdbg_dtb = {
* running on. */
static enum pdbg_backend default_backend(void)
{
+ const char *tmp;
int rc;
+ tmp = getenv("PDBG_BACKEND_DRIVER");
+ if (tmp) {
+ if (!strcmp(tmp, "fsi"))
+ return PDBG_BACKEND_FSI;
+ else if (!strcmp(tmp, "i2c"))
+ return PDBG_BACKEND_I2C;
+ else if (!strcmp(tmp, "kernel"))
+ return PDBG_BACKEND_KERNEL;
+ else if (!strcmp(tmp, "fake"))
+ return PDBG_BACKEND_FAKE;
+ else if (!strcmp(tmp, "host"))
+ return PDBG_BACKEND_HOST;
+ else if (!strcmp(tmp, "cronus"))
+ return PDBG_BACKEND_CRONUS;
+ }
+
rc = access(XSCOM_BASE_PATH, F_OK);
if (rc == 0) /* PowerPC Host System */
return PDBG_BACKEND_HOST;
@@ -313,6 +330,9 @@ struct pdbg_dtb *pdbg_default_dtb(void *system_fdt)
dtb->backend.fdt = NULL;
dtb->system.fdt = system_fdt;
+ if (!pdbg_backend)
+ pdbg_backend = default_backend();
+
fdt = getenv("PDBG_BACKEND_DTB");
if (fdt)
mmap_dtb(fdt, false, &dtb->backend);
@@ -324,9 +344,6 @@ struct pdbg_dtb *pdbg_default_dtb(void *system_fdt)
if (dtb->backend.fdt && dtb->system.fdt)
goto done;
- if (!pdbg_backend)
- pdbg_backend = default_backend();
-
switch(pdbg_backend) {
case PDBG_BACKEND_HOST:
ppc_target(dtb);
--
2.25.4
More information about the Pdbg
mailing list