lkml.org 
[lkml]   [2014]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 4/4] mfd: dln2: add suspend/resume functionality
    Date
    Without suspend/resume functionality in the USB driver the USB core
    will disconnect and reconnect the DLN2 port and because the GPIO
    framework does not yet support removal of an in-use controller a
    suspend/resume operation will result in a crash.

    This patch provides suspend and resume functions for the DLN2 driver
    so that the above scenario is avoided.

    Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
    ---
    drivers/mfd/dln2.c | 20 ++++++++++++++++++++
    1 file changed, 20 insertions(+)

    diff --git a/drivers/mfd/dln2.c b/drivers/mfd/dln2.c
    index 75358d2..f9c4a0b 100644
    --- a/drivers/mfd/dln2.c
    +++ b/drivers/mfd/dln2.c
    @@ -791,6 +791,24 @@ out_free:
    return ret;
    }

    +static int dln2_suspend(struct usb_interface *iface, pm_message_t message)
    +{
    + struct dln2_dev *dln2 = usb_get_intfdata(iface);
    +
    + dln2_stop(dln2);
    +
    + return 0;
    +}
    +
    +static int dln2_resume(struct usb_interface *iface)
    +{
    + struct dln2_dev *dln2 = usb_get_intfdata(iface);
    +
    + dln2->disconnect = false;
    +
    + return dln2_start_rx_urbs(dln2, GFP_NOIO);
    +}
    +
    static const struct usb_device_id dln2_table[] = {
    { USB_DEVICE(0xa257, 0x2013) },
    { }
    @@ -803,6 +821,8 @@ static struct usb_driver dln2_driver = {
    .probe = dln2_probe,
    .disconnect = dln2_disconnect,
    .id_table = dln2_table,
    + .suspend = dln2_suspend,
    + .resume = dln2_resume,
    };

    module_usb_driver(dln2_driver);
    --
    1.9.1


    \
     
     \ /
      Last update: 2014-12-16 17:41    [W:2.119 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site