Hi Dinh, On Tue, Jun 4, 2019 at 4:21 PM Dinh Nguyen <dinguyen@xxxxxxxxxx> wrote: > On 6/4/19 7:14 AM, Vinod Koul wrote: > > On 23-05-19, 19:28, Dinh Nguyen wrote: > >> The DMA controller on some SoCs can be held in reset, and thus requires > >> the reset signal(s) to deasserted. Most SoCs will have just one reset > >> signal, but there are others, i.e. Arria10/Stratix10 will have an > >> additional reset signal, referred to as the OCP. > >> > >> Add code to get the reset property from the device tree for deassert and > >> assert. > >> > >> Signed-off-by: Dinh Nguyen <dinguyen@xxxxxxxxxx> > >> --- > >> drivers/dma/pl330.c | 38 ++++++++++++++++++++++++++++++++++++++ > >> 1 file changed, 38 insertions(+) > >> > >> diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c > >> index 6e6837214210..6018c43e785d 100644 > >> --- a/drivers/dma/pl330.c > >> +++ b/drivers/dma/pl330.c > >> @@ -29,6 +29,7 @@ > >> #include <linux/err.h> > >> #include <linux/pm_runtime.h> > >> #include <linux/bug.h> > >> +#include <linux/reset.h> > >> > >> #include "dmaengine.h" > >> #define PL330_MAX_CHAN 8 > >> @@ -500,6 +501,9 @@ struct pl330_dmac { > >> unsigned int num_peripherals; > >> struct dma_pl330_chan *peripherals; /* keep at end */ > >> int quirks; > >> + > >> + struct reset_control *rstc; > >> + struct reset_control *rstc_ocp; > >> }; > >> > >> static struct pl330_of_quirks { > >> @@ -3028,6 +3032,30 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) > >> > >> amba_set_drvdata(adev, pl330); > >> > >> + pl330->rstc = devm_reset_control_get_optional(&adev->dev, "dma"); > >> + if (IS_ERR(pl330->rstc)) { > >> + dev_err(&adev->dev, "No reset controller specified.\n"); > > > > Wasnt this optional?? > > Yes, this is optional. The call devm_reset_control_get_optional() will > just return NULL if the reset property is not there, but an error > pointer if something really went wrong. Thus, I'm using IS_ERR() for the > error checking. So the error message is incorrect, as this is a real error condition? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds