summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: fcab247)
raw | patch | inline | side by side (parent: fcab247)
author | Tero Kristo <t-kristo@ti.com> | |
Mon, 29 Jan 2018 15:53:49 +0000 (17:53 +0200) | ||
committer | Suman Anna <s-anna@ti.com> | |
Sun, 24 Feb 2019 01:20:52 +0000 (19:20 -0600) |
Client device node property ti,pruss-gp-mux-sel can now be used to
configure the GPMUX config value for PRU.
Signed-off-by: Tero Kristo <t-kristo@ti.com>
[s-anna@ti.com: simplify the pru id usage]
Signed-off-by: Suman Anna <s-anna@ti.com>
configure the GPMUX config value for PRU.
Signed-off-by: Tero Kristo <t-kristo@ti.com>
[s-anna@ti.com: simplify the pru id usage]
Signed-off-by: Suman Anna <s-anna@ti.com>
drivers/remoteproc/pru_rproc.c | patch | blob | history |
index 7ec23b0474030e70f6d6671ddeceb4793ed97768..8d1bb5151f0f8ef97a09c0f40ed4067c512b9339 100644 (file)
* @shrdram_da: device address of shared Data RAM
* @fw_name: name of firmware image used during loading
* @dt_irqs: number of irqs configured from DT
+ * @gpmux_save: saved value for gpmux config
* @lock: mutex to protect client usage
* @dbg_single_step: debug state variable to set PRU into single step mode
* @dbg_continuous: debug state variable to restore PRU execution mode
u32 shrdram_da;
const char *fw_name;
int dt_irqs;
+ u8 gpmux_save;
struct mutex lock; /* client access lock */
u32 dbg_single_step;
u32 dbg_continuous;
const char *fw_name;
struct device *dev;
int ret;
+ u32 mux;
rproc = __pru_rproc_get(np, index);
if (IS_ERR(rproc))
mutex_unlock(&pru->lock);
+ ret = pruss_cfg_get_gpmux(pru->pruss, pru->id, &pru->gpmux_save);
+ if (ret) {
+ dev_err(dev, "failed to get cfg gpmux: %d\n", ret);
+ goto err;
+ }
+
+ ret = of_property_read_u32_index(np, "ti,pruss-gp-mux-sel", index,
+ &mux);
+ if (!ret) {
+ ret = pruss_cfg_set_gpmux(pru->pruss, pru->id, mux);
+ if (ret) {
+ dev_err(dev, "failed to set cfg gpmux: %d\n", ret);
+ goto err;
+ }
+ }
+
ret = of_property_read_string_index(np, "firmware-name", index,
&fw_name);
if (!ret) {
if (!pru->client_np)
return;
+ pruss_cfg_set_gpmux(pru->pruss, pru->id, pru->gpmux_save);
+
if (pru->dt_irqs)
pruss_intc_unconfigure(pru->pruss, &pru->intc_config);