Re: [PATCH 1/2] parport: gsc: remove DMA leftover code

Helge Deller
2023-08-03T08:17:20Z

On 7/26/23 17:09, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> This driver does not actually work with DMA mode, but still tries
> to call ISA DMA interface functions that are stubbed out on
> parisc, resulting in a W=1 build warning:
>
> drivers/parport/parport_gsc.c: In function 'parport_remove_chip':
> drivers/parport/parport_gsc.c:389:20: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
> 389 | free_dma(p->dma);
>
> Remove the corresponding code as a prerequisite for turning on -Wempty-body
> by default in all kernels.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Thanks Arnd!

I've added it to the parisc for-next git tree.

Helge

> ---
> drivers/parport/parport_gsc.c | 28 ++++------------------------
> drivers/parport/parport_gsc.h | 7 -------
> 2 files changed, 4 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/parport/parport_gsc.c b/drivers/parport/parport_gsc.c
> index 0dcc497b0449a..5e4475254bd0a 100644
> --- a/drivers/parport/parport_gsc.c
> +++ b/drivers/parport/parport_gsc.c
> @@ -28,7 +28,6 @@
> #include <linux/sysctl.h>
>
> #include <asm/io.h>
> -#include <asm/dma.h>
> #include <linux/uaccess.h>
> #include <asm/superio.h>
>
> @@ -226,9 +225,9 @@ static int parport_PS2_supported(struct parport *pb)
>
> /* --- Initialisation code -------------------------------- */
>
> -struct parport *parport_gsc_probe_port(unsigned long base,
> +static struct parport *parport_gsc_probe_port(unsigned long base,
> unsigned long base_hi, int irq,
> - int dma, struct parisc_device *padev)
> + struct parisc_device *padev)
> {
> struct parport_gsc_private *priv;
> struct parport_operations *ops;
> @@ -250,12 +249,9 @@ struct parport *parport_gsc_probe_port(unsigned long base,
> }
> priv->ctr = 0xc;
> priv->ctr_writable = 0xff;
> - priv->dma_buf = NULL;
> - priv->dma_handle = 0;
> p->base = base;
> p->base_hi = base_hi;
> p->irq = irq;
> - p->dma = dma;
> p->modes = PARPORT_MODE_PCSPP | PARPORT_MODE_SAFEININT;
> p->ops = ops;
> p->private_data = priv;
> @@ -286,17 +282,9 @@ struct parport *parport_gsc_probe_port(unsigned long base,
> if (p->irq == PARPORT_IRQ_AUTO) {
> p->irq = PARPORT_IRQ_NONE;
> }
> - if (p->irq != PARPORT_IRQ_NONE) {
> + if (p->irq != PARPORT_IRQ_NONE)
> pr_cont(", irq %d", p->irq);
>
> - if (p->dma == PARPORT_DMA_AUTO) {
> - p->dma = PARPORT_DMA_NONE;
> - }
> - }
> - if (p->dma == PARPORT_DMA_AUTO) /* To use DMA, giving the irq
> - is mandatory (see above) */
> - p->dma = PARPORT_DMA_NONE;
> -
> pr_cont(" [");
> #define printmode(x) \
> do { \
> @@ -321,7 +309,6 @@ do { \
> pr_warn("%s: irq %d in use, resorting to polled operation\n",
> p->name, p->irq);
> p->irq = PARPORT_IRQ_NONE;
> - p->dma = PARPORT_DMA_NONE;
> }
> }
>
> @@ -369,8 +356,7 @@ static int __init parport_init_chip(struct parisc_device *dev)
> pr_info("%s: enhanced parport-modes not supported\n", __func__);
> }
>
> - p = parport_gsc_probe_port(port, 0, dev->irq,
> - /* PARPORT_IRQ_NONE */ PARPORT_DMA_NONE, dev);
> + p = parport_gsc_probe_port(port, 0, dev->irq, dev);
> if (p)
> parport_count++;
> dev_set_drvdata(&dev->dev, p);
> @@ -382,16 +368,10 @@ static void __exit parport_remove_chip(struct parisc_device *dev)
> {
> struct parport *p = dev_get_drvdata(&dev->dev);
> if (p) {
> - struct parport_gsc_private *priv = p->private_data;
> struct parport_operations *ops = p->ops;
> parport_remove_port(p);
> - if (p->dma != PARPORT_DMA_NONE)
> - free_dma(p->dma);
> if (p->irq != PARPORT_IRQ_NONE)
> free_irq(p->irq, p);
> - if (priv->dma_buf)
> - dma_free_coherent(&priv->dev->dev, PAGE_SIZE,
> - priv->dma_buf, priv->dma_handle);
> kfree (p->private_data);
> parport_put_port(p);
> kfree (ops); /* hope no-one cached it */
> diff --git a/drivers/parport/parport_gsc.h b/drivers/parport/parport_gsc.h
> index 9301217edf12c..d447a568c2570 100644
> --- a/drivers/parport/parport_gsc.h
> +++ b/drivers/parport/parport_gsc.h
> @@ -63,8 +63,6 @@ struct parport_gsc_private {
> int writeIntrThreshold;
>
> /* buffer suitable for DMA, if DMA enabled */
> - char *dma_buf;
> - dma_addr_t dma_handle;
> struct pci_dev *dev;
> };
>
> @@ -199,9 +197,4 @@ extern void parport_gsc_inc_use_count(void);
>
> extern void parport_gsc_dec_use_count(void);
>
> -extern struct parport *parport_gsc_probe_port(unsigned long base,
> - unsigned long base_hi,
> - int irq, int dma,
> - struct parisc_device *padev);
> -
> #endif /* __DRIVERS_PARPORT_PARPORT_GSC_H */