lkml.org 
[lkml]   [2015]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v6 2/7] dmaengine: mxs: APBH DMA supports deep sleep mode
    From
    On Thu, Oct 22, 2015 at 10:54 PM, Han Xu <b45815@freescale.com> wrote:
    > From: Huang Shijie <b32955@freescale.com>
    >
    > Deep Sleep Mode(dsm) turns off the power for APBH DMA module, DMA
    > need to be re-initialized when system resumed back.
    >
    > Signed-off-by: Huang Shijie <b32955@freescale.com>
    > Signed-off-by: Han Xu <b45815@freescale.com>
    > ---
    > drivers/dma/mxs-dma.c | 19 ++++++++++++++++++-
    > 1 file changed, 18 insertions(+), 1 deletion(-)
    >
    > diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
    > index 60de352..7e5800a 100644
    > --- a/drivers/dma/mxs-dma.c
    > +++ b/drivers/dma/mxs-dma.c
    > @@ -693,7 +693,7 @@ static enum dma_status mxs_dma_tx_status(struct dma_chan *chan,
    > return mxs_chan->status;
    > }
    >
    > -static int __init mxs_dma_init(struct mxs_dma_engine *mxs_dma)
    > +static int mxs_dma_init(struct mxs_dma_engine *mxs_dma)
    > {
    > int ret;
    >
    > @@ -835,6 +835,7 @@ static int __init mxs_dma_probe(struct platform_device *pdev)
    >
    > mxs_dma->pdev = pdev;
    > mxs_dma->dma_device.dev = &pdev->dev;
    > + dev_set_drvdata(&pdev->dev, mxs_dma);
    >
    > /* mxs_dma gets 65535 bytes maximum sg size */
    > mxs_dma->dma_device.dev->dma_parms = &mxs_dma->dma_parms;
    > @@ -872,9 +873,25 @@ static int __init mxs_dma_probe(struct platform_device *pdev)
    > return 0;
    > }
    >
    > +static int mxs_dma_pm_resume(struct device *dev)
    > +{
    > + struct mxs_dma_engine *mxs_dma = dev_get_drvdata(dev);


    > + int ret;
    > +
    > + ret = mxs_dma_init(mxs_dma);
    > + if (ret)
    > + return ret;
    > + return 0;

    Just
    return mxs_dma_init(mxs_dma);

    > +}
    > +
    > +static const struct dev_pm_ops mxs_dma_pm_ops = {
    > + SET_SYSTEM_SLEEP_PM_OPS(NULL, mxs_dma_pm_resume)
    > +};
    > +
    > static struct platform_driver mxs_dma_driver = {
    > .driver = {
    > .name = "mxs-dma",
    > + .pm = &mxs_dma_pm_ops,
    > .of_match_table = mxs_dma_dt_ids,
    > },
    > .id_table = mxs_dma_ids,



    --
    With Best Regards,
    Andy Shevchenko


    \
     
     \ /
      Last update: 2015-10-29 22:41    [W:4.298 / U:0.944 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site