From nobody Tue Sep 16 05:34:43 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 56729C3DA7A for ; Thu, 5 Jan 2023 14:16:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232403AbjAEOQO (ORCPT ); Thu, 5 Jan 2023 09:16:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233300AbjAEOP4 (ORCPT ); Thu, 5 Jan 2023 09:15:56 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8707ED2D7 for ; Thu, 5 Jan 2023 06:15:55 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 92D8D61AC1 for ; Thu, 5 Jan 2023 14:15:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 51094C433EF; Thu, 5 Jan 2023 14:15:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1672928154; bh=oltoueV2WmsiDDFVbBxAW/mk2iBVI7EW4JdZzofKxX0=; h=From:To:Cc:Subject:Date:From; b=ADbbR65MSnYhhGWnP9OVG+gG5L9nS9tidEVMFgKG4YIbYs2b353Jl473p4I/CyEjw dMSxaML+ngM0smNuJrQDsSyzEDeB9UUMNcPG7Iluxz1+lvX/Cj/5HRz941A2Z1UBa0 ZrytHkY+bmkarxgONS2fcAWi9+Btv4mp2YCZ+jRBS1WNpfvVgy/6d1Pylv1QcfaOXQ lVnLxswYEgT16NKyVKKEXmO2hHSyAQ6iHcVuKjR7lU5Aw8dPgEtt4zZK1p8VjEuRTv XqEPw5vTPQFRFSLfhLNBmPMueh7k0u7JZDpMXwyJ9QUbdjn0yi/hRgACHILD4x6Fv4 1xheZIPi8Z2Vg== From: Arnd Bergmann To: Sudip Mukherjee Cc: Arnd Bergmann , linux-parport@lists.infradead.org, Sudip Mukherjee , Krzysztof Kozlowski , "Maciej W. Rozycki" , linux-kernel@vger.kernel.org Subject: [PATCH] parport: remove ax88796 driver Date: Thu, 5 Jan 2023 15:15:35 +0100 Message-Id: <20230105141549.2252550-1-arnd@kernel.org> X-Mailer: git-send-email 2.39.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Arnd Bergmann The s3c24xx bast platform was removed, so this driver has no users any more and can be removed as well. Cc: linux-parport@lists.infradead.org Cc: Sudip Mukherjee Cc: Sudip Mukherjee Cc: Krzysztof Kozlowski Signed-off-by: Arnd Bergmann Acked-by: Sudip Mukherjee --- I have a series for removing the s3c24xx platform to be queued for 6.3. This patch was missing when I originally posted it, and it can either go through the same branch, or get merged seperately through the parport tree, as there are no direct dependencies. drivers/parport/Kconfig | 11 - drivers/parport/Makefile | 1 - drivers/parport/parport_ax88796.c | 418 ------------------------------ include/linux/parport.h | 5 - 4 files changed, 435 deletions(-) delete mode 100644 drivers/parport/parport_ax88796.c diff --git a/drivers/parport/Kconfig b/drivers/parport/Kconfig index 68a4fe4cd60b..5561362224e2 100644 --- a/drivers/parport/Kconfig +++ b/drivers/parport/Kconfig @@ -140,17 +140,6 @@ config PARPORT_SUNBPP found on many Sun machines. Note that many of the newer Ultras actually have pc style hardware instead. =20 -config PARPORT_AX88796 - tristate "AX88796 Parallel Port" - select PARPORT_NOT_PC - help - Say Y here if you need support for the parallel port hardware on - the AX88796 network controller chip. This code is also available - as a module (say M), called parport_ax88796. - - The driver is not dependent on the AX88796 network driver, and - should not interfere with the networking functions of the chip. - config PARPORT_1284 bool "IEEE 1284 transfer modes" help diff --git a/drivers/parport/Makefile b/drivers/parport/Makefile index 022c566c0f32..d4a6b890852d 100644 --- a/drivers/parport/Makefile +++ b/drivers/parport/Makefile @@ -18,5 +18,4 @@ obj-$(CONFIG_PARPORT_MFC3) +=3D parport_mfc3.o obj-$(CONFIG_PARPORT_ATARI) +=3D parport_atari.o obj-$(CONFIG_PARPORT_SUNBPP) +=3D parport_sunbpp.o obj-$(CONFIG_PARPORT_GSC) +=3D parport_gsc.o -obj-$(CONFIG_PARPORT_AX88796) +=3D parport_ax88796.o obj-$(CONFIG_PARPORT_IP32) +=3D parport_ip32.o diff --git a/drivers/parport/parport_ax88796.c b/drivers/parport/parport_ax= 88796.c deleted file mode 100644 index 54b539809673..000000000000 --- a/drivers/parport/parport_ax88796.c +++ /dev/null @@ -1,418 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* linux/drivers/parport/parport_ax88796.c - * - * (c) 2005,2006 Simtec Electronics - * Ben Dooks -*/ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#define AX_SPR_BUSY (1<<7) -#define AX_SPR_ACK (1<<6) -#define AX_SPR_PE (1<<5) -#define AX_SPR_SLCT (1<<4) -#define AX_SPR_ERR (1<<3) - -#define AX_CPR_nDOE (1<<5) -#define AX_CPR_SLCTIN (1<<3) -#define AX_CPR_nINIT (1<<2) -#define AX_CPR_ATFD (1<<1) -#define AX_CPR_STRB (1<<0) - -struct ax_drvdata { - struct parport *parport; - struct parport_state suspend; - - struct device *dev; - struct resource *io; - - unsigned char irq_enabled; - - void __iomem *base; - void __iomem *spp_data; - void __iomem *spp_spr; - void __iomem *spp_cpr; -}; - -static inline struct ax_drvdata *pp_to_drv(struct parport *p) -{ - return p->private_data; -} - -static unsigned char -parport_ax88796_read_data(struct parport *p) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - - return readb(dd->spp_data); -} - -static void -parport_ax88796_write_data(struct parport *p, unsigned char data) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - - writeb(data, dd->spp_data); -} - -static unsigned char -parport_ax88796_read_control(struct parport *p) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - unsigned int cpr =3D readb(dd->spp_cpr); - unsigned int ret =3D 0; - - if (!(cpr & AX_CPR_STRB)) - ret |=3D PARPORT_CONTROL_STROBE; - - if (!(cpr & AX_CPR_ATFD)) - ret |=3D PARPORT_CONTROL_AUTOFD; - - if (cpr & AX_CPR_nINIT) - ret |=3D PARPORT_CONTROL_INIT; - - if (!(cpr & AX_CPR_SLCTIN)) - ret |=3D PARPORT_CONTROL_SELECT; - - return ret; -} - -static void -parport_ax88796_write_control(struct parport *p, unsigned char control) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - unsigned int cpr =3D readb(dd->spp_cpr); - - cpr &=3D AX_CPR_nDOE; - - if (!(control & PARPORT_CONTROL_STROBE)) - cpr |=3D AX_CPR_STRB; - - if (!(control & PARPORT_CONTROL_AUTOFD)) - cpr |=3D AX_CPR_ATFD; - - if (control & PARPORT_CONTROL_INIT) - cpr |=3D AX_CPR_nINIT; - - if (!(control & PARPORT_CONTROL_SELECT)) - cpr |=3D AX_CPR_SLCTIN; - - dev_dbg(dd->dev, "write_control: ctrl=3D%02x, cpr=3D%02x\n", control, cpr= ); - writeb(cpr, dd->spp_cpr); - - if (parport_ax88796_read_control(p) !=3D control) { - dev_err(dd->dev, "write_control: read !=3D set (%02x, %02x)\n", - parport_ax88796_read_control(p), control); - } -} - -static unsigned char -parport_ax88796_read_status(struct parport *p) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - unsigned int status =3D readb(dd->spp_spr); - unsigned int ret =3D 0; - - if (status & AX_SPR_BUSY) - ret |=3D PARPORT_STATUS_BUSY; - - if (status & AX_SPR_ACK) - ret |=3D PARPORT_STATUS_ACK; - - if (status & AX_SPR_ERR) - ret |=3D PARPORT_STATUS_ERROR; - - if (status & AX_SPR_SLCT) - ret |=3D PARPORT_STATUS_SELECT; - - if (status & AX_SPR_PE) - ret |=3D PARPORT_STATUS_PAPEROUT; - - return ret; -} - -static unsigned char -parport_ax88796_frob_control(struct parport *p, unsigned char mask, - unsigned char val) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - unsigned char old =3D parport_ax88796_read_control(p); - - dev_dbg(dd->dev, "frob: mask=3D%02x, val=3D%02x, old=3D%02x\n", - mask, val, old); - - parport_ax88796_write_control(p, (old & ~mask) | val); - return old; -} - -static void -parport_ax88796_enable_irq(struct parport *p) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - unsigned long flags; - - local_irq_save(flags); - if (!dd->irq_enabled) { - enable_irq(p->irq); - dd->irq_enabled =3D 1; - } - local_irq_restore(flags); -} - -static void -parport_ax88796_disable_irq(struct parport *p) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - unsigned long flags; - - local_irq_save(flags); - if (dd->irq_enabled) { - disable_irq(p->irq); - dd->irq_enabled =3D 0; - } - local_irq_restore(flags); -} - -static void -parport_ax88796_data_forward(struct parport *p) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - void __iomem *cpr =3D dd->spp_cpr; - - writeb((readb(cpr) & ~AX_CPR_nDOE), cpr); -} - -static void -parport_ax88796_data_reverse(struct parport *p) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - void __iomem *cpr =3D dd->spp_cpr; - - writeb(readb(cpr) | AX_CPR_nDOE, cpr); -} - -static void -parport_ax88796_init_state(struct pardevice *d, struct parport_state *s) -{ - struct ax_drvdata *dd =3D pp_to_drv(d->port); - - memset(s, 0, sizeof(struct parport_state)); - - dev_dbg(dd->dev, "init_state: %p: state=3D%p\n", d, s); - s->u.ax88796.cpr =3D readb(dd->spp_cpr); -} - -static void -parport_ax88796_save_state(struct parport *p, struct parport_state *s) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - - dev_dbg(dd->dev, "save_state: %p: state=3D%p\n", p, s); - s->u.ax88796.cpr =3D readb(dd->spp_cpr); -} - -static void -parport_ax88796_restore_state(struct parport *p, struct parport_state *s) -{ - struct ax_drvdata *dd =3D pp_to_drv(p); - - dev_dbg(dd->dev, "restore_state: %p: state=3D%p\n", p, s); - writeb(s->u.ax88796.cpr, dd->spp_cpr); -} - -static struct parport_operations parport_ax88796_ops =3D { - .write_data =3D parport_ax88796_write_data, - .read_data =3D parport_ax88796_read_data, - - .write_control =3D parport_ax88796_write_control, - .read_control =3D parport_ax88796_read_control, - .frob_control =3D parport_ax88796_frob_control, - - .read_status =3D parport_ax88796_read_status, - - .enable_irq =3D parport_ax88796_enable_irq, - .disable_irq =3D parport_ax88796_disable_irq, - - .data_forward =3D parport_ax88796_data_forward, - .data_reverse =3D parport_ax88796_data_reverse, - - .init_state =3D parport_ax88796_init_state, - .save_state =3D parport_ax88796_save_state, - .restore_state =3D parport_ax88796_restore_state, - - .epp_write_data =3D parport_ieee1284_epp_write_data, - .epp_read_data =3D parport_ieee1284_epp_read_data, - .epp_write_addr =3D parport_ieee1284_epp_write_addr, - .epp_read_addr =3D parport_ieee1284_epp_read_addr, - - .ecp_write_data =3D parport_ieee1284_ecp_write_data, - .ecp_read_data =3D parport_ieee1284_ecp_read_data, - .ecp_write_addr =3D parport_ieee1284_ecp_write_addr, - - .compat_write_data =3D parport_ieee1284_write_compat, - .nibble_read_data =3D parport_ieee1284_read_nibble, - .byte_read_data =3D parport_ieee1284_read_byte, - - .owner =3D THIS_MODULE, -}; - -static int parport_ax88796_probe(struct platform_device *pdev) -{ - struct device *_dev =3D &pdev->dev; - struct ax_drvdata *dd; - struct parport *pp; - struct resource *res; - unsigned long size; - int spacing; - int irq; - int ret; - - dd =3D kzalloc(sizeof(*dd), GFP_KERNEL); - if (!dd) - return -ENOMEM; - - res =3D platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (res =3D=3D NULL) { - dev_err(_dev, "no MEM specified\n"); - ret =3D -ENXIO; - goto exit_mem; - } - - size =3D resource_size(res); - spacing =3D size / 3; - - dd->io =3D request_mem_region(res->start, size, pdev->name); - if (dd->io =3D=3D NULL) { - dev_err(_dev, "cannot reserve memory\n"); - ret =3D -ENXIO; - goto exit_mem; - } - - dd->base =3D ioremap(res->start, size); - if (dd->base =3D=3D NULL) { - dev_err(_dev, "cannot ioremap region\n"); - ret =3D -ENXIO; - goto exit_res; - } - - irq =3D platform_get_irq(pdev, 0); - if (irq <=3D 0) - irq =3D PARPORT_IRQ_NONE; - - pp =3D parport_register_port((unsigned long)dd->base, irq, - PARPORT_DMA_NONE, - &parport_ax88796_ops); - - if (pp =3D=3D NULL) { - dev_err(_dev, "failed to register parallel port\n"); - ret =3D -ENOMEM; - goto exit_unmap; - } - - pp->private_data =3D dd; - dd->parport =3D pp; - dd->dev =3D _dev; - - dd->spp_data =3D dd->base; - dd->spp_spr =3D dd->base + (spacing * 1); - dd->spp_cpr =3D dd->base + (spacing * 2); - - /* initialise the port controls */ - writeb(AX_CPR_STRB, dd->spp_cpr); - - if (irq >=3D 0) { - /* request irq */ - ret =3D request_irq(irq, parport_irq_handler, - IRQF_TRIGGER_FALLING, pdev->name, pp); - - if (ret < 0) - goto exit_port; - - dd->irq_enabled =3D 1; - } - - platform_set_drvdata(pdev, pp); - - dev_info(_dev, "attached parallel port driver\n"); - parport_announce_port(pp); - - return 0; - - exit_port: - parport_remove_port(pp); - exit_unmap: - iounmap(dd->base); - exit_res: - release_mem_region(dd->io->start, size); - exit_mem: - kfree(dd); - return ret; -} - -static int parport_ax88796_remove(struct platform_device *pdev) -{ - struct parport *p =3D platform_get_drvdata(pdev); - struct ax_drvdata *dd =3D pp_to_drv(p); - - free_irq(p->irq, p); - parport_remove_port(p); - iounmap(dd->base); - release_mem_region(dd->io->start, resource_size(dd->io)); - kfree(dd); - - return 0; -} - -#ifdef CONFIG_PM - -static int parport_ax88796_suspend(struct platform_device *dev, - pm_message_t state) -{ - struct parport *p =3D platform_get_drvdata(dev); - struct ax_drvdata *dd =3D pp_to_drv(p); - - parport_ax88796_save_state(p, &dd->suspend); - writeb(AX_CPR_nDOE | AX_CPR_STRB, dd->spp_cpr); - return 0; -} - -static int parport_ax88796_resume(struct platform_device *dev) -{ - struct parport *p =3D platform_get_drvdata(dev); - struct ax_drvdata *dd =3D pp_to_drv(p); - - parport_ax88796_restore_state(p, &dd->suspend); - return 0; -} - -#else -#define parport_ax88796_suspend NULL -#define parport_ax88796_resume NULL -#endif - -MODULE_ALIAS("platform:ax88796-pp"); - -static struct platform_driver axdrv =3D { - .driver =3D { - .name =3D "ax88796-pp", - }, - .probe =3D parport_ax88796_probe, - .remove =3D parport_ax88796_remove, - .suspend =3D parport_ax88796_suspend, - .resume =3D parport_ax88796_resume, -}; - -module_platform_driver(axdrv); - -MODULE_AUTHOR("Ben Dooks "); -MODULE_DESCRIPTION("AX88796 Parport parallel port driver"); -MODULE_LICENSE("GPL"); diff --git a/include/linux/parport.h b/include/linux/parport.h index 1c16ffb8b908..a0bc9e0267b7 100644 --- a/include/linux/parport.h +++ b/include/linux/parport.h @@ -40,10 +40,6 @@ struct amiga_parport_state { unsigned char statusdir;/* ciab.ddrb & 7 */ }; =20 -struct ax88796_parport_state { - unsigned char cpr; -}; - struct ip32_parport_state { unsigned int dcr; unsigned int ecr; @@ -55,7 +51,6 @@ struct parport_state { /* ARC has no state. */ struct ax_parport_state ax; struct amiga_parport_state amiga; - struct ax88796_parport_state ax88796; /* Atari has not state. */ struct ip32_parport_state ip32; void *misc;=20 --=20 2.39.0