pwm: dwc: Move memory allocation to own function
authorBen Dooks <ben.dooks@sifive.com>
Fri, 23 Dec 2022 15:38:14 +0000 (15:38 +0000)
committerThierry Reding <thierry.reding@gmail.com>
Mon, 20 Feb 2023 11:26:34 +0000 (12:26 +0100)
In preparation for adding other bus support, move the allocation
of the PWM structure out of the main driver code.

Signed-off-by: Ben Dooks <ben.dooks@sifive.com>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
drivers/pwm/pwm-dwc.c

index de1c497..e9399df 100644 (file)
@@ -198,13 +198,29 @@ static const struct pwm_ops dwc_pwm_ops = {
        .owner = THIS_MODULE,
 };
 
+static struct dwc_pwm *dwc_pwm_alloc(struct device *dev)
+{
+       struct dwc_pwm *dwc;
+
+       dwc = devm_kzalloc(dev, sizeof(*dwc), GFP_KERNEL);
+       if (!dwc)
+               return NULL;
+
+       dwc->chip.dev = dev;
+       dwc->chip.ops = &dwc_pwm_ops;
+       dwc->chip.npwm = DWC_TIMERS_TOTAL;
+
+       dev_set_drvdata(dev, dwc);
+       return dwc;
+}
+
 static int dwc_pwm_probe(struct pci_dev *pci, const struct pci_device_id *id)
 {
        struct device *dev = &pci->dev;
        struct dwc_pwm *dwc;
        int ret;
 
-       dwc = devm_kzalloc(dev, sizeof(*dwc), GFP_KERNEL);
+       dwc = dwc_pwm_alloc(dev);
        if (!dwc)
                return -ENOMEM;
 
@@ -228,12 +244,6 @@ static int dwc_pwm_probe(struct pci_dev *pci, const struct pci_device_id *id)
                return -ENOMEM;
        }
 
-       pci_set_drvdata(pci, dwc);
-
-       dwc->chip.dev = dev;
-       dwc->chip.ops = &dwc_pwm_ops;
-       dwc->chip.npwm = DWC_TIMERS_TOTAL;
-
        ret = pwmchip_add(&dwc->chip);
        if (ret)
                return ret;