lkml.org 
[lkml]   [2021]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.11 195/601] usb: gadget: pch_udc: Initialize device pointer before use
    Date
    From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

    [ Upstream commit 971d080212be4ce2b91047d25a657f46d3e39635 ]

    During conversion to use GPIO descriptors the device pointer,
    which is applied to devm_gpiod_get(), is not yet initialized.

    Move initialization in the ->probe() in order to have it set before use.

    Fixes: e20849a8c883 ("usb: gadget: pch_udc: Convert to use GPIO descriptors")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20210323153626.54908-6-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/usb/gadget/udc/pch_udc.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/drivers/usb/gadget/udc/pch_udc.c b/drivers/usb/gadget/udc/pch_udc.c
    index 29e89ed6aad5..a39122f01cdb 100644
    --- a/drivers/usb/gadget/udc/pch_udc.c
    +++ b/drivers/usb/gadget/udc/pch_udc.c
    @@ -1369,6 +1369,7 @@ static irqreturn_t pch_vbus_gpio_irq(int irq, void *data)
    */
    static int pch_vbus_gpio_init(struct pch_udc_dev *dev)
    {
    + struct device *d = &dev->pdev->dev;
    int err;
    int irq_num = 0;
    struct gpio_desc *gpiod;
    @@ -1377,7 +1378,7 @@ static int pch_vbus_gpio_init(struct pch_udc_dev *dev)
    dev->vbus_gpio.intr = 0;

    /* Retrieve the GPIO line from the USB gadget device */
    - gpiod = devm_gpiod_get(dev->gadget.dev.parent, NULL, GPIOD_IN);
    + gpiod = devm_gpiod_get(d, NULL, GPIOD_IN);
    if (IS_ERR(gpiod))
    return PTR_ERR(gpiod);
    gpiod_set_consumer_name(gpiod, "pch_vbus");
    @@ -3080,6 +3081,7 @@ static int pch_udc_probe(struct pci_dev *pdev,
    if (retval)
    return retval;

    + dev->pdev = pdev;
    pci_set_drvdata(pdev, dev);

    /* Determine BAR based on PCI ID */
    @@ -3121,7 +3123,6 @@ static int pch_udc_probe(struct pci_dev *pdev,

    /* device struct setup */
    spin_lock_init(&dev->lock);
    - dev->pdev = pdev;
    dev->gadget.ops = &pch_udc_ops;

    retval = init_dma_pools(dev);
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-12 19:31    [W:2.307 / U:0.300 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site