lkml.org 
[lkml]   [2009]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 04/07] i2c: rework i2c-pxa suspend_late()/resume_early()
    From: Magnus Damm <damm@igel.co.jp>

    This patch reworks platform driver power management code
    for i2c-pxa from legacy late/early callbacks to dev_pm_ops.

    The callbacks are converted for CONFIG_SUSPEND like this:
    suspend_late() -> suspend_noirq()
    resume_early() -> resume_noirq()

    Signed-off-by: Magnus Damm <damm@igel.co.jp>
    ---

    Untested but compiles fine.

    drivers/i2c/busses/i2c-pxa.c | 25 +++++++++++++++++--------
    1 file changed, 17 insertions(+), 8 deletions(-)

    --- 0001/drivers/i2c/busses/i2c-pxa.c
    +++ work/drivers/i2c/busses/i2c-pxa.c 2009-06-01 15:26:06.000000000 +0900
    @@ -1135,35 +1135,44 @@ static int __exit i2c_pxa_remove(struct
    }

    #ifdef CONFIG_PM
    -static int i2c_pxa_suspend_late(struct platform_device *dev, pm_message_t state)
    +static int i2c_pxa_suspend_noirq(struct device *dev)
    {
    - struct pxa_i2c *i2c = platform_get_drvdata(dev);
    + struct platform_device *pdev = to_platform_device(dev);
    + struct pxa_i2c *i2c = platform_get_drvdata(pdev);
    +
    clk_disable(i2c->clk);
    +
    return 0;
    }

    -static int i2c_pxa_resume_early(struct platform_device *dev)
    +static int i2c_pxa_resume_noirq(struct device *dev)
    {
    - struct pxa_i2c *i2c = platform_get_drvdata(dev);
    + struct platform_device *pdev = to_platform_device(dev);
    + struct pxa_i2c *i2c = platform_get_drvdata(pdev);

    clk_enable(i2c->clk);
    i2c_pxa_reset(i2c);

    return 0;
    }
    +
    +static struct dev_pm_ops i2c_pxa_dev_pm_ops = {
    + .suspend_noirq = i2c_pxa_suspend_noirq,
    + .resume_noirq = i2c_pxa_resume_noirq,
    +};
    +
    +#define I2C_PXA_DEV_PM_OPS (&i2c_pxa_dev_pm_ops)
    #else
    -#define i2c_pxa_suspend_late NULL
    -#define i2c_pxa_resume_early NULL
    +#define I2C_PXA_DEV_PM_OPS NULL
    #endif

    static struct platform_driver i2c_pxa_driver = {
    .probe = i2c_pxa_probe,
    .remove = __exit_p(i2c_pxa_remove),
    - .suspend_late = i2c_pxa_suspend_late,
    - .resume_early = i2c_pxa_resume_early,
    .driver = {
    .name = "pxa2xx-i2c",
    .owner = THIS_MODULE,
    + .pm = I2C_PXA_DEV_PM_OPS,
    },
    .id_table = i2c_pxa_id_table,
    };

    \
     
     \ /
      Last update: 2009-06-24 11:29    [W:0.028 / U:31.492 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site