diff options
Diffstat (limited to 'drivers/remoteproc/stm32_rproc.c')
| -rw-r--r-- | drivers/remoteproc/stm32_rproc.c | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c index e2da7198b65f..2cf4b2992bfc 100644 --- a/drivers/remoteproc/stm32_rproc.c +++ b/drivers/remoteproc/stm32_rproc.c @@ -383,10 +383,21 @@ static void stm32_rproc_add_coredump_trace(struct rproc *rproc)  static int stm32_rproc_start(struct rproc *rproc)  { +	struct stm32_rproc *ddata = rproc->priv;  	int err;  	stm32_rproc_add_coredump_trace(rproc); +	/* clear remote proc Deep Sleep */ +	if (ddata->pdds.map) { +		err = regmap_update_bits(ddata->pdds.map, ddata->pdds.reg, +					 ddata->pdds.mask, 0); +		if (err) { +			dev_err(&rproc->dev, "failed to clear pdds\n"); +			return err; +		} +	} +  	err = stm32_rproc_set_hold_boot(rproc, false);  	if (err)  		return err; @@ -506,6 +517,9 @@ static int stm32_rproc_parse_dt(struct platform_device *pdev)  	int err, irq;  	irq = platform_get_irq(pdev, 0); +	if (irq == -EPROBE_DEFER) +		return -EPROBE_DEFER; +  	if (irq > 0) {  		err = devm_request_irq(dev, irq, stm32_rproc_wdg, 0,  				       dev_name(dev), rproc);  |