Le 14/11/2024 à 14:11, Michael Ellerman a écrit :
The macio-adb driver depends on PPC_CHRP, which has been removed, remove
the driver also.

Signed-off-by: Michael Ellerman <m...@ellerman.id.au>
---
  drivers/macintosh/Kconfig     |   9 --
  drivers/macintosh/Makefile    |   1 -
  drivers/macintosh/adb.c       |   4 -
  drivers/macintosh/macio-adb.c | 288 ----------------------------------
  4 files changed, 302 deletions(-)
  delete mode 100644 drivers/macintosh/macio-adb.c

What about:

drivers/macintosh/adb.c: if (!machine_is(chrp) && !machine_is(powermac)) drivers/macintosh/adbhid.c: if (!machine_is(chrp) && !machine_is(powermac))

Christophe


diff --git a/drivers/macintosh/Kconfig b/drivers/macintosh/Kconfig
index fb38f684444f..aebe7ca50e59 100644
--- a/drivers/macintosh/Kconfig
+++ b/drivers/macintosh/Kconfig
@@ -135,15 +135,6 @@ config PMAC_BACKLIGHT_LEGACY
          programs which use this old interface. New and updated programs
          should use the backlight classes in sysfs.
-config ADB_MACIO
-       bool "Include MacIO (CHRP) ADB driver"
-       depends on ADB && PPC_CHRP && !PPC_PMAC64
-       help
-         Say Y here to include direct support for the ADB controller in the
-         Hydra chip used on PowerPC Macintoshes of the CHRP type.  (The Hydra
-         also includes a MESH II SCSI controller, DBDMA controller, VIA chip,
-         OpenPIC controller and two RS422/Geoports.)
-
  config INPUT_ADBHID
        bool "Support for ADB input devices (keyboard, mice, ...)"
        depends on ADB && INPUT=y
diff --git a/drivers/macintosh/Makefile b/drivers/macintosh/Makefile
index 712edcb3e0b0..efecf2c20af3 100644
--- a/drivers/macintosh/Makefile
+++ b/drivers/macintosh/Makefile
@@ -23,7 +23,6 @@ obj-$(CONFIG_PMAC_SMU)                += smu.o
  obj-$(CONFIG_ADB)             += adb.o
  obj-$(CONFIG_ADB_MACII)               += via-macii.o
  obj-$(CONFIG_ADB_IOP)         += adb-iop.o
-obj-$(CONFIG_ADB_MACIO)                += macio-adb.o
obj-$(CONFIG_THERM_WINDTUNNEL) += therm_windtunnel.o
  obj-$(CONFIG_THERM_ADT746X)   += therm_adt746x.o
diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c
index 88adee42ba82..f1186ce04167 100644
--- a/drivers/macintosh/adb.c
+++ b/drivers/macintosh/adb.c
@@ -52,7 +52,6 @@ extern struct adb_driver via_macii_driver;
  extern struct adb_driver via_cuda_driver;
  extern struct adb_driver adb_iop_driver;
  extern struct adb_driver via_pmu_driver;
-extern struct adb_driver macio_adb_driver;
static DEFINE_MUTEX(adb_mutex);
  static struct adb_driver *adb_driver_list[] = {
@@ -67,9 +66,6 @@ static struct adb_driver *adb_driver_list[] = {
  #endif
  #ifdef CONFIG_ADB_PMU
        &via_pmu_driver,
-#endif
-#ifdef CONFIG_ADB_MACIO
-       &macio_adb_driver,
  #endif
        NULL
  };
diff --git a/drivers/macintosh/macio-adb.c b/drivers/macintosh/macio-adb.c
deleted file mode 100644
index 19c63959ebed..000000000000
--- a/drivers/macintosh/macio-adb.c
+++ /dev/null
@@ -1,288 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Driver for the ADB controller in the Mac I/O (Hydra) chip.
- */
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-#include <linux/spinlock.h>
-#include <linux/interrupt.h>
-#include <linux/pgtable.h>
-#include <linux/of.h>
-#include <linux/of_address.h>
-#include <linux/of_irq.h>
-#include <linux/adb.h>
-
-#include <asm/io.h>
-#include <asm/hydra.h>
-#include <asm/irq.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-
-struct preg {
-       unsigned char r;
-       char pad[15];
-};
-
-struct adb_regs {
-       struct preg intr;
-       struct preg data[9];
-       struct preg intr_enb;
-       struct preg dcount;
-       struct preg error;
-       struct preg ctrl;
-       struct preg autopoll;
-       struct preg active_hi;
-       struct preg active_lo;
-       struct preg test;
-};
-
-/* Bits in intr and intr_enb registers */
-#define DFB    1               /* data from bus */
-#define TAG    2               /* transfer access grant */
-
-/* Bits in dcount register */
-#define HMB    0x0f            /* how many bytes */
-#define APD    0x10            /* auto-poll data */
-
-/* Bits in error register */
-#define NRE    1               /* no response error */
-#define DLE    2               /* data lost error */
-
-/* Bits in ctrl register */
-#define TAR    1               /* transfer access request */
-#define DTB    2               /* data to bus */
-#define CRE    4               /* command response expected */
-#define ADB_RST        8               /* ADB reset */
-
-/* Bits in autopoll register */
-#define APE    1               /* autopoll enable */
-
-static volatile struct adb_regs __iomem *adb;
-static struct adb_request *current_req, *last_req;
-static DEFINE_SPINLOCK(macio_lock);
-
-static int macio_probe(void);
-static int macio_init(void);
-static irqreturn_t macio_adb_interrupt(int irq, void *arg);
-static int macio_send_request(struct adb_request *req, int sync);
-static int macio_adb_autopoll(int devs);
-static void macio_adb_poll(void);
-static int macio_adb_reset_bus(void);
-
-struct adb_driver macio_adb_driver = {
-       .name         = "MACIO",
-       .probe        = macio_probe,
-       .init         = macio_init,
-       .send_request = macio_send_request,
-       .autopoll     = macio_adb_autopoll,
-       .poll         = macio_adb_poll,
-       .reset_bus    = macio_adb_reset_bus,
-};
-
-int macio_probe(void)
-{
-       struct device_node *np __free(device_node) =
-               of_find_compatible_node(NULL, "adb", "chrp,adb0");
-
-       if (np)
-               return 0;
-
-       return -ENODEV;
-}
-
-int macio_init(void)
-{
-       struct device_node *adbs __free(device_node) =
-               of_find_compatible_node(NULL, "adb", "chrp,adb0");
-       struct resource r;
-       unsigned int irq;
-
-       if (!adbs)
-               return -ENXIO;
-
-       if (of_address_to_resource(adbs, 0, &r))
-               return -ENXIO;
-
-       adb = ioremap(r.start, sizeof(struct adb_regs));
-       if (!adb)
-               return -ENOMEM;
-
-
-       out_8(&adb->ctrl.r, 0);
-       out_8(&adb->intr.r, 0);
-       out_8(&adb->error.r, 0);
-       out_8(&adb->active_hi.r, 0xff); /* for now, set all devices active */
-       out_8(&adb->active_lo.r, 0xff);
-       out_8(&adb->autopoll.r, APE);
-
-       irq = irq_of_parse_and_map(adbs, 0);
-       if (request_irq(irq, macio_adb_interrupt, 0, "ADB", (void *)0)) {
-               iounmap(adb);
-               printk(KERN_ERR "ADB: can't get irq %d\n", irq);
-               return -EAGAIN;
-       }
-       out_8(&adb->intr_enb.r, DFB | TAG);
-
-       printk("adb: mac-io driver 1.0 for unified ADB\n");
-
-       return 0;
-}
-
-static int macio_adb_autopoll(int devs)
-{
-       unsigned long flags;
-       
-       spin_lock_irqsave(&macio_lock, flags);
-       out_8(&adb->active_hi.r, devs >> 8);
-       out_8(&adb->active_lo.r, devs);
-       out_8(&adb->autopoll.r, devs? APE: 0);
-       spin_unlock_irqrestore(&macio_lock, flags);
-       return 0;
-}
-
-static int macio_adb_reset_bus(void)
-{
-       unsigned long flags;
-       int timeout = 1000000;
-
-       /* Hrm... we may want to not lock interrupts for so
-        * long ... oh well, who uses that chip anyway ? :)
-        * That function will be seldom used during boot
-        * on rare machines, so...
-        */
-       spin_lock_irqsave(&macio_lock, flags);
-       out_8(&adb->ctrl.r, in_8(&adb->ctrl.r) | ADB_RST);
-       while ((in_8(&adb->ctrl.r) & ADB_RST) != 0) {
-               if (--timeout == 0) {
-                       out_8(&adb->ctrl.r, in_8(&adb->ctrl.r) & ~ADB_RST);
-                       spin_unlock_irqrestore(&macio_lock, flags);
-                       return -1;
-               }
-       }
-       spin_unlock_irqrestore(&macio_lock, flags);
-       return 0;
-}
-
-/* Send an ADB command */
-static int macio_send_request(struct adb_request *req, int sync)
-{
-       unsigned long flags;
-       int i;
-       
-       if (req->data[0] != ADB_PACKET)
-               return -EINVAL;
-       
-       for (i = 0; i < req->nbytes - 1; ++i)
-               req->data[i] = req->data[i+1];
-       --req->nbytes;
-       
-       req->next = NULL;
-       req->sent = 0;
-       req->complete = 0;
-       req->reply_len = 0;
-
-       spin_lock_irqsave(&macio_lock, flags);
-       if (current_req) {
-               last_req->next = req;
-               last_req = req;
-       } else {
-               current_req = last_req = req;
-               out_8(&adb->ctrl.r, in_8(&adb->ctrl.r) | TAR);
-       }
-       spin_unlock_irqrestore(&macio_lock, flags);
-       
-       if (sync) {
-               while (!req->complete)
-                       macio_adb_poll();
-       }
-
-       return 0;
-}
-
-static irqreturn_t macio_adb_interrupt(int irq, void *arg)
-{
-       int i, n, err;
-       struct adb_request *req = NULL;
-       unsigned char ibuf[16];
-       int ibuf_len = 0;
-       int complete = 0;
-       int autopoll = 0;
-       int handled = 0;
-
-       spin_lock(&macio_lock);
-       if (in_8(&adb->intr.r) & TAG) {
-               handled = 1;
-               req = current_req;
-               if (req) {
-                       /* put the current request in */
-                       for (i = 0; i < req->nbytes; ++i)
-                               out_8(&adb->data[i].r, req->data[i]);
-                       out_8(&adb->dcount.r, req->nbytes & HMB);
-                       req->sent = 1;
-                       if (req->reply_expected) {
-                               out_8(&adb->ctrl.r, DTB + CRE);
-                       } else {
-                               out_8(&adb->ctrl.r, DTB);
-                               current_req = req->next;
-                               complete = 1;
-                               if (current_req)
-                                       out_8(&adb->ctrl.r, in_8(&adb->ctrl.r) 
| TAR);
-                       }
-               }
-               out_8(&adb->intr.r, 0);
-       }
-
-       if (in_8(&adb->intr.r) & DFB) {
-               handled = 1;
-               err = in_8(&adb->error.r);
-               if (current_req && current_req->sent) {
-                       /* this is the response to a command */
-                       req = current_req;
-                       if (err == 0) {
-                               req->reply_len = in_8(&adb->dcount.r) & HMB;
-                               for (i = 0; i < req->reply_len; ++i)
-                                       req->reply[i] = in_8(&adb->data[i].r);
-                       }
-                       current_req = req->next;
-                       complete = 1;
-                       if (current_req)
-                               out_8(&adb->ctrl.r, in_8(&adb->ctrl.r) | TAR);
-               } else if (err == 0) {
-                       /* autopoll data */
-                       n = in_8(&adb->dcount.r) & HMB;
-                       for (i = 0; i < n; ++i)
-                               ibuf[i] = in_8(&adb->data[i].r);
-                       ibuf_len = n;
-                       autopoll = (in_8(&adb->dcount.r) & APD) != 0;
-               }
-               out_8(&adb->error.r, 0);
-               out_8(&adb->intr.r, 0);
-       }
-       spin_unlock(&macio_lock);
-       if (complete && req) {
-           void (*done)(struct adb_request *) = req->done;
-           mb();
-           req->complete = 1;
-           /* Here, we assume that if the request has a done member, the
-            * struct request will survive to setting req->complete to 1
-            */
-           if (done)
-               (*done)(req);
-       }
-       if (ibuf_len)
-               adb_input(ibuf, ibuf_len, autopoll);
-
-       return IRQ_RETVAL(handled);
-}
-
-static void macio_adb_poll(void)
-{
-       unsigned long flags;
-
-       local_irq_save(flags);
-       if (in_8(&adb->intr.r) != 0)
-               macio_adb_interrupt(0, NULL);
-       local_irq_restore(flags);
-}

Reply via email to