From: Thomas Zimmermann <tzimmermann@suse.de>
To: Ethan Nelson-Moore <enelsonmoore@gmail.com>,
linux-m68k@vger.kernel.org, linux-fbdev@vger.kernel.org
Cc: "Geert Uytterhoeven" <geert@linux-m68k.org>,
"Helge Deller" <deller@gmx.de>,
"Jiri Slaby (SUSE)" <jirislaby@kernel.org>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Eric Biggers" <ebiggers@kernel.org>,
"Herbert Xu" <herbert@gondor.apana.org.au>,
"Thomas Huth" <thuth@redhat.com>,
"Greg Ungerer" <gerg@linux-m68k.org>,
"Finn Thain" <fthain@linux-m68k.org>,
"Thorsten Blum" <thorsten.blum@linux.dev>,
"Jean-Michel Hautbois" <jeanmichel.hautbois@yoseli.org>,
"Kees Cook" <kees@kernel.org>, "Wei Liu" <wei.liu@kernel.org>,
"Prasanna Kumar T S M" <ptsm@linux.microsoft.com>,
"Sukrut Heroorkar" <hsukrut3@gmail.com>
Subject: Re: [PATCH] arch: m68k: remove incomplete, unusable Apollo hardware support
Date: Mon, 9 Feb 2026 09:14:23 +0100 [thread overview]
Message-ID: <7c2c30ea-2108-4a19-9d09-0e9555da464a@suse.de> (raw)
In-Reply-To: <20260209005212.32370-1-enelsonmoore@gmail.com>
Am 09.02.26 um 01:51 schrieb Ethan Nelson-Moore:
> The m68k architecture contains very incomplete support for running on
> Apollo Domain hardware. There are only timer, console, and framebuffer
> drivers, and no storage or network drivers, so there is no way to
> practically use it. It is not even capable of rebooting by itself (see
> dn_dummy_reset() in arch/m68k/apollo/config.c).
>
> arch/m68k/apollo has only received tree-wide changes and fixes by
> inspection in the entire Git history (since Linux 2.6.12-rc2), so there
> is clearly no interest in completing support for Apollo hardware.
> Remove it to reduce future maintenance workload.
>
> There are no uses of the removed <asm/bootinfo-apollo.h> UAPI header or
> the constants removed from the <asm/bootinfo.h> UAPI header on GitHub
> or Debian Code Search.
>
> Signed-off-by: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> ---
> arch/m68k/Kbuild | 1 -
> arch/m68k/Kconfig.devices | 4 +-
> arch/m68k/Kconfig.machine | 8 -
> arch/m68k/apollo/Makefile | 6 -
> arch/m68k/apollo/apollo.h | 4 -
> arch/m68k/apollo/config.c | 240 --------
> arch/m68k/apollo/dn_ints.c | 50 --
> arch/m68k/configs/apollo_defconfig | 595 -------------------
> arch/m68k/configs/multi_defconfig | 1 -
> arch/m68k/include/asm/apollohw.h | 90 ---
> arch/m68k/include/asm/config.h | 2 -
> arch/m68k/include/asm/irq.h | 2 -
> arch/m68k/include/asm/setup.h | 32 +-
> arch/m68k/include/uapi/asm/bootinfo-apollo.h | 29 -
> arch/m68k/include/uapi/asm/bootinfo.h | 5 +-
> arch/m68k/kernel/head.S | 70 +--
> arch/m68k/kernel/setup_mm.c | 9 -
> drivers/video/fbdev/Kconfig | 8 -
> drivers/video/fbdev/Makefile | 1 -
> drivers/video/fbdev/dnfb.c | 307 ----------
For the framebuffer files:
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
> 20 files changed, 19 insertions(+), 1445 deletions(-)
> delete mode 100644 arch/m68k/apollo/Makefile
> delete mode 100644 arch/m68k/apollo/apollo.h
> delete mode 100644 arch/m68k/apollo/config.c
> delete mode 100644 arch/m68k/apollo/dn_ints.c
> delete mode 100644 arch/m68k/configs/apollo_defconfig
> delete mode 100644 arch/m68k/include/asm/apollohw.h
> delete mode 100644 arch/m68k/include/uapi/asm/bootinfo-apollo.h
> delete mode 100644 drivers/video/fbdev/dnfb.c
>
> diff --git a/arch/m68k/Kbuild b/arch/m68k/Kbuild
> index 7762af9f6def..421bad0780e1 100644
> --- a/arch/m68k/Kbuild
> +++ b/arch/m68k/Kbuild
> @@ -5,7 +5,6 @@ obj-$(CONFIG_AMIGA) += amiga/
> obj-$(CONFIG_ATARI) += atari/
> obj-$(CONFIG_MAC) += mac/
> obj-$(CONFIG_HP300) += hp300/
> -obj-$(CONFIG_APOLLO) += apollo/
> obj-$(CONFIG_MVME147) += mvme147/
> obj-$(CONFIG_MVME16x) += mvme16x/
> obj-$(CONFIG_BVME6000) += bvme6000/
> diff --git a/arch/m68k/Kconfig.devices b/arch/m68k/Kconfig.devices
> index e6e3efac1840..75370aadba6a 100644
> --- a/arch/m68k/Kconfig.devices
> +++ b/arch/m68k/Kconfig.devices
> @@ -9,8 +9,8 @@ config ARCH_MAY_HAVE_PC_FDC
> menu "Platform devices"
>
> config HEARTBEAT
> - bool "Use power LED as a heartbeat" if AMIGA || APOLLO || ATARI || Q40
> - default y if !AMIGA && !APOLLO && !ATARI && !Q40 && HP300
> + bool "Use power LED as a heartbeat" if AMIGA || ATARI || Q40
> + default y if !AMIGA && !ATARI && !Q40 && HP300
> help
> Use the power-on LED on your machine as a load meter. The exact
> behavior is platform-dependent, but normally the flash frequency is
> diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine
> index de39f23b180e..f67eb3d202c6 100644
> --- a/arch/m68k/Kconfig.machine
> +++ b/arch/m68k/Kconfig.machine
> @@ -38,14 +38,6 @@ config MAC
> browse the documentation available at <http://www.mac.linux-m68k.org/>;
> otherwise say N.
>
> -config APOLLO
> - bool "Apollo support"
> - depends on MMU
> - select LEGACY_TIMER_TICK
> - help
> - Say Y here if you want to run Linux on an MC680x0-based Apollo
> - Domain workstation such as the DN3500.
> -
> config VME
> bool "VME (Motorola and BVM) support"
> depends on MMU
> diff --git a/arch/m68k/apollo/Makefile b/arch/m68k/apollo/Makefile
> deleted file mode 100644
> index 676c74b26878..000000000000
> --- a/arch/m68k/apollo/Makefile
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0-only
> -#
> -# Makefile for Linux arch/m68k/apollo source directory
> -#
> -
> -obj-y := config.o dn_ints.o
> diff --git a/arch/m68k/apollo/apollo.h b/arch/m68k/apollo/apollo.h
> deleted file mode 100644
> index 1fe9d856df30..000000000000
> --- a/arch/m68k/apollo/apollo.h
> +++ /dev/null
> @@ -1,4 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -
> -/* dn_ints.c */
> -void dn_init_IRQ(void);
> diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c
> deleted file mode 100644
> index e324c5f671de..000000000000
> --- a/arch/m68k/apollo/config.c
> +++ /dev/null
> @@ -1,240 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <linux/init.h>
> -#include <linux/types.h>
> -#include <linux/kernel.h>
> -#include <linux/mm.h>
> -#include <linux/rtc.h>
> -#include <linux/interrupt.h>
> -
> -#include <asm/setup.h>
> -#include <asm/bootinfo.h>
> -#include <asm/bootinfo-apollo.h>
> -#include <asm/byteorder.h>
> -#include <asm/apollohw.h>
> -#include <asm/irq.h>
> -#include <asm/machdep.h>
> -#include <asm/config.h>
> -
> -#include "apollo.h"
> -
> -u_long sio01_physaddr;
> -u_long sio23_physaddr;
> -u_long rtc_physaddr;
> -u_long pica_physaddr;
> -u_long picb_physaddr;
> -u_long cpuctrl_physaddr;
> -u_long timer_physaddr;
> -u_long apollo_model;
> -
> -extern void dn_sched_init(void);
> -extern int dn_dummy_hwclk(int, struct rtc_time *);
> -static void dn_dummy_reset(void);
> -#ifdef CONFIG_HEARTBEAT
> -static void dn_heartbeat(int on);
> -#endif
> -static irqreturn_t dn_timer_int(int irq,void *);
> -static void dn_get_model(char *model);
> -static const char *apollo_models[] = {
> - [APOLLO_DN3000-APOLLO_DN3000] = "DN3000 (Otter)",
> - [APOLLO_DN3010-APOLLO_DN3000] = "DN3010 (Otter)",
> - [APOLLO_DN3500-APOLLO_DN3000] = "DN3500 (Cougar II)",
> - [APOLLO_DN4000-APOLLO_DN3000] = "DN4000 (Mink)",
> - [APOLLO_DN4500-APOLLO_DN3000] = "DN4500 (Roadrunner)"
> -};
> -
> -int __init apollo_parse_bootinfo(const struct bi_record *record)
> -{
> - int unknown = 0;
> - const void *data = record->data;
> -
> - switch (be16_to_cpu(record->tag)) {
> - case BI_APOLLO_MODEL:
> - apollo_model = be32_to_cpup(data);
> - break;
> -
> - default:
> - unknown=1;
> - }
> -
> - return unknown;
> -}
> -
> -static void __init dn_setup_model(void)
> -{
> - pr_info("Apollo hardware found: [%s]\n",
> - apollo_models[apollo_model - APOLLO_DN3000]);
> -
> - switch(apollo_model) {
> - case APOLLO_UNKNOWN:
> - panic("Unknown apollo model");
> - break;
> - case APOLLO_DN3000:
> - case APOLLO_DN3010:
> - sio01_physaddr=SAU8_SIO01_PHYSADDR;
> - rtc_physaddr=SAU8_RTC_PHYSADDR;
> - pica_physaddr=SAU8_PICA;
> - picb_physaddr=SAU8_PICB;
> - cpuctrl_physaddr=SAU8_CPUCTRL;
> - timer_physaddr=SAU8_TIMER;
> - break;
> - case APOLLO_DN4000:
> - sio01_physaddr=SAU7_SIO01_PHYSADDR;
> - sio23_physaddr=SAU7_SIO23_PHYSADDR;
> - rtc_physaddr=SAU7_RTC_PHYSADDR;
> - pica_physaddr=SAU7_PICA;
> - picb_physaddr=SAU7_PICB;
> - cpuctrl_physaddr=SAU7_CPUCTRL;
> - timer_physaddr=SAU7_TIMER;
> - break;
> - case APOLLO_DN4500:
> - panic("Apollo model not yet supported");
> - break;
> - case APOLLO_DN3500:
> - sio01_physaddr=SAU7_SIO01_PHYSADDR;
> - sio23_physaddr=SAU7_SIO23_PHYSADDR;
> - rtc_physaddr=SAU7_RTC_PHYSADDR;
> - pica_physaddr=SAU7_PICA;
> - picb_physaddr=SAU7_PICB;
> - cpuctrl_physaddr=SAU7_CPUCTRL;
> - timer_physaddr=SAU7_TIMER;
> - break;
> - default:
> - panic("Undefined apollo model");
> - break;
> - }
> -
> -
> -}
> -
> -static void dn_serial_print(const char *str)
> -{
> - while (*str) {
> - if (*str == '\n') {
> - sio01.rhrb_thrb = (unsigned char)'\r';
> - while (!(sio01.srb_csrb & 0x4))
> - ;
> - }
> - sio01.rhrb_thrb = (unsigned char)*str++;
> - while (!(sio01.srb_csrb & 0x4))
> - ;
> - }
> -}
> -
> -void __init config_apollo(void)
> -{
> - int i;
> -
> - dn_setup_model();
> -
> - mach_sched_init=dn_sched_init; /* */
> - mach_init_IRQ=dn_init_IRQ;
> - mach_hwclk = dn_dummy_hwclk; /* */
> - mach_reset = dn_dummy_reset; /* */
> -#ifdef CONFIG_HEARTBEAT
> - mach_heartbeat = dn_heartbeat;
> -#endif
> - mach_get_model = dn_get_model;
> -
> - cpuctrl=0xaa00;
> -
> - /* clear DMA translation table */
> - for(i=0;i<0x400;i++)
> - addr_xlat_map[i]=0;
> -
> -}
> -
> -irqreturn_t dn_timer_int(int irq, void *dev_id)
> -{
> - unsigned char *at = (unsigned char *)apollo_timer;
> -
> - legacy_timer_tick(1);
> - timer_heartbeat();
> -
> - READ_ONCE(*(at + 3));
> - READ_ONCE(*(at + 5));
> -
> - return IRQ_HANDLED;
> -}
> -
> -void dn_sched_init(void)
> -{
> - /* program timer 1 */
> - *(volatile unsigned char *)(apollo_timer + 3) = 0x01;
> - *(volatile unsigned char *)(apollo_timer + 1) = 0x40;
> - *(volatile unsigned char *)(apollo_timer + 5) = 0x09;
> - *(volatile unsigned char *)(apollo_timer + 7) = 0xc4;
> -
> - /* enable IRQ of PIC B */
> - *(volatile unsigned char *)(pica+1)&=(~8);
> -
> -#if 0
> - pr_info("*(0x10803) %02x\n",
> - *(volatile unsigned char *)(apollo_timer + 0x3));
> - pr_info("*(0x10803) %02x\n",
> - *(volatile unsigned char *)(apollo_timer + 0x3));
> -#endif
> -
> - if (request_irq(IRQ_APOLLO, dn_timer_int, 0, "time", NULL))
> - pr_err("Couldn't register timer interrupt\n");
> -}
> -
> -int dn_dummy_hwclk(int op, struct rtc_time *t) {
> -
> -
> - if(!op) { /* read */
> - t->tm_sec=rtc->second;
> - t->tm_min=rtc->minute;
> - t->tm_hour=rtc->hours;
> - t->tm_mday=rtc->day_of_month;
> - t->tm_wday=rtc->day_of_week;
> - t->tm_mon = rtc->month - 1;
> - t->tm_year=rtc->year;
> - if (t->tm_year < 70)
> - t->tm_year += 100;
> - } else {
> - rtc->second=t->tm_sec;
> - rtc->minute=t->tm_min;
> - rtc->hours=t->tm_hour;
> - rtc->day_of_month=t->tm_mday;
> - if(t->tm_wday!=-1)
> - rtc->day_of_week=t->tm_wday;
> - rtc->month = t->tm_mon + 1;
> - rtc->year = t->tm_year % 100;
> - }
> -
> - return 0;
> -
> -}
> -
> -static void dn_dummy_reset(void)
> -{
> - dn_serial_print("The end !\n");
> -
> - for(;;);
> -
> -}
> -
> -static void dn_get_model(char *model)
> -{
> - strcpy(model, "Apollo ");
> - if (apollo_model >= APOLLO_DN3000 && apollo_model <= APOLLO_DN4500)
> - strcat(model, apollo_models[apollo_model - APOLLO_DN3000]);
> -}
> -
> -#ifdef CONFIG_HEARTBEAT
> -static int dn_cpuctrl=0xff00;
> -
> -static void dn_heartbeat(int on) {
> -
> - if(on) {
> - dn_cpuctrl&=~0x100;
> - cpuctrl=dn_cpuctrl;
> - }
> - else {
> - dn_cpuctrl&=~0x100;
> - dn_cpuctrl|=0x100;
> - cpuctrl=dn_cpuctrl;
> - }
> -}
> -#endif
> -
> diff --git a/arch/m68k/apollo/dn_ints.c b/arch/m68k/apollo/dn_ints.c
> deleted file mode 100644
> index ba96a92f8f18..000000000000
> --- a/arch/m68k/apollo/dn_ints.c
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <linux/interrupt.h>
> -#include <linux/irq.h>
> -
> -#include <asm/traps.h>
> -#include <asm/apollohw.h>
> -
> -#include "apollo.h"
> -
> -static unsigned int apollo_irq_startup(struct irq_data *data)
> -{
> - unsigned int irq = data->irq;
> -
> - if (irq < 8)
> - *(volatile unsigned char *)(pica+1) &= ~(1 << irq);
> - else
> - *(volatile unsigned char *)(picb+1) &= ~(1 << (irq - 8));
> - return 0;
> -}
> -
> -static void apollo_irq_shutdown(struct irq_data *data)
> -{
> - unsigned int irq = data->irq;
> -
> - if (irq < 8)
> - *(volatile unsigned char *)(pica+1) |= (1 << irq);
> - else
> - *(volatile unsigned char *)(picb+1) |= (1 << (irq - 8));
> -}
> -
> -static void apollo_irq_eoi(struct irq_data *data)
> -{
> - *(volatile unsigned char *)(pica) = 0x20;
> - *(volatile unsigned char *)(picb) = 0x20;
> -}
> -
> -static struct irq_chip apollo_irq_chip = {
> - .name = "apollo",
> - .irq_startup = apollo_irq_startup,
> - .irq_shutdown = apollo_irq_shutdown,
> - .irq_eoi = apollo_irq_eoi,
> -};
> -
> -
> -void __init dn_init_IRQ(void)
> -{
> - m68k_setup_user_interrupt(VEC_USER + 96, 16);
> - m68k_setup_irq_controller(&apollo_irq_chip, handle_fasteoi_irq,
> - IRQ_APOLLO, 16);
> -}
> diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_defconfig
> deleted file mode 100644
> index d9d1f3c4c70d..000000000000
> --- a/arch/m68k/configs/apollo_defconfig
> +++ /dev/null
> @@ -1,595 +0,0 @@
> -CONFIG_LOCALVERSION="-apollo"
> -CONFIG_SYSVIPC=y
> -CONFIG_POSIX_MQUEUE=y
> -CONFIG_BSD_PROCESS_ACCT=y
> -CONFIG_BSD_PROCESS_ACCT_V3=y
> -CONFIG_LOG_BUF_SHIFT=16
> -# CONFIG_UTS_NS is not set
> -# CONFIG_IPC_NS is not set
> -# CONFIG_PID_NS is not set
> -# CONFIG_NET_NS is not set
> -CONFIG_BLK_DEV_INITRD=y
> -CONFIG_CC_OPTIMIZE_FOR_SIZE=y
> -CONFIG_KEXEC=y
> -CONFIG_BOOTINFO_PROC=y
> -CONFIG_M68020=y
> -CONFIG_M68030=y
> -CONFIG_M68040=y
> -CONFIG_M68060=y
> -CONFIG_APOLLO=y
> -CONFIG_HEARTBEAT=y
> -CONFIG_PROC_HARDWARE=y
> -CONFIG_MODULES=y
> -CONFIG_MODULE_UNLOAD=y
> -CONFIG_TRIM_UNUSED_KSYMS=y
> -CONFIG_PARTITION_ADVANCED=y
> -CONFIG_AMIGA_PARTITION=y
> -CONFIG_ATARI_PARTITION=y
> -CONFIG_MAC_PARTITION=y
> -CONFIG_BSD_DISKLABEL=y
> -CONFIG_MINIX_SUBPARTITION=y
> -CONFIG_SOLARIS_X86_PARTITION=y
> -CONFIG_UNIXWARE_DISKLABEL=y
> -CONFIG_SUN_PARTITION=y
> -# CONFIG_EFI_PARTITION is not set
> -CONFIG_SYSV68_PARTITION=y
> -CONFIG_MQ_IOSCHED_DEADLINE=m
> -CONFIG_MQ_IOSCHED_KYBER=m
> -CONFIG_IOSCHED_BFQ=m
> -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
> -CONFIG_BINFMT_MISC=m
> -# CONFIG_COMPACTION is not set
> -CONFIG_DMAPOOL_TEST=m
> -CONFIG_USERFAULTFD=y
> -CONFIG_NET=y
> -CONFIG_PACKET=y
> -CONFIG_PACKET_DIAG=m
> -CONFIG_UNIX=y
> -CONFIG_UNIX_DIAG=m
> -CONFIG_TLS=m
> -CONFIG_XFRM_MIGRATE=y
> -CONFIG_NET_KEY=y
> -CONFIG_XDP_SOCKETS=y
> -CONFIG_XDP_SOCKETS_DIAG=m
> -CONFIG_INET=y
> -CONFIG_IP_PNP=y
> -CONFIG_IP_PNP_DHCP=y
> -CONFIG_IP_PNP_BOOTP=y
> -CONFIG_IP_PNP_RARP=y
> -CONFIG_NET_IPIP=m
> -CONFIG_NET_IPGRE_DEMUX=m
> -CONFIG_NET_IPGRE=m
> -CONFIG_NET_IPVTI=m
> -CONFIG_NET_FOU_IP_TUNNELS=y
> -CONFIG_INET_AH=m
> -CONFIG_INET_ESP=m
> -CONFIG_INET_ESP_OFFLOAD=m
> -CONFIG_INET_IPCOMP=m
> -CONFIG_INET_DIAG=m
> -CONFIG_INET_UDP_DIAG=m
> -CONFIG_INET_RAW_DIAG=m
> -CONFIG_IPV6=m
> -CONFIG_IPV6_ROUTER_PREF=y
> -CONFIG_INET6_AH=m
> -CONFIG_INET6_ESP=m
> -CONFIG_INET6_ESP_OFFLOAD=m
> -CONFIG_INET6_IPCOMP=m
> -CONFIG_IPV6_ILA=m
> -CONFIG_IPV6_VTI=m
> -CONFIG_IPV6_GRE=m
> -CONFIG_NETFILTER=y
> -CONFIG_NETFILTER_NETLINK_HOOK=m
> -CONFIG_NF_CONNTRACK=m
> -CONFIG_NF_CONNTRACK_ZONES=y
> -CONFIG_NF_CONNTRACK_AMANDA=m
> -CONFIG_NF_CONNTRACK_FTP=m
> -CONFIG_NF_CONNTRACK_H323=m
> -CONFIG_NF_CONNTRACK_IRC=m
> -CONFIG_NF_CONNTRACK_NETBIOS_NS=m
> -CONFIG_NF_CONNTRACK_SNMP=m
> -CONFIG_NF_CONNTRACK_PPTP=m
> -CONFIG_NF_CONNTRACK_SANE=m
> -CONFIG_NF_CONNTRACK_SIP=m
> -CONFIG_NF_CONNTRACK_TFTP=m
> -CONFIG_NF_TABLES=m
> -CONFIG_NF_TABLES_INET=y
> -CONFIG_NF_TABLES_NETDEV=y
> -CONFIG_NFT_NUMGEN=m
> -CONFIG_NFT_CT=m
> -CONFIG_NFT_FLOW_OFFLOAD=m
> -CONFIG_NFT_CONNLIMIT=m
> -CONFIG_NFT_LOG=m
> -CONFIG_NFT_LIMIT=m
> -CONFIG_NFT_MASQ=m
> -CONFIG_NFT_REDIR=m
> -CONFIG_NFT_NAT=m
> -CONFIG_NFT_TUNNEL=m
> -CONFIG_NFT_QUEUE=m
> -CONFIG_NFT_QUOTA=m
> -CONFIG_NFT_REJECT=m
> -CONFIG_NFT_COMPAT=m
> -CONFIG_NFT_HASH=m
> -CONFIG_NFT_FIB_INET=m
> -CONFIG_NFT_XFRM=m
> -CONFIG_NFT_SOCKET=m
> -CONFIG_NFT_OSF=m
> -CONFIG_NFT_TPROXY=m
> -CONFIG_NFT_SYNPROXY=m
> -CONFIG_NFT_DUP_NETDEV=m
> -CONFIG_NFT_FWD_NETDEV=m
> -CONFIG_NFT_FIB_NETDEV=m
> -CONFIG_NFT_REJECT_NETDEV=m
> -CONFIG_NF_FLOW_TABLE_INET=m
> -CONFIG_NF_FLOW_TABLE=m
> -CONFIG_NETFILTER_XTABLES_LEGACY=y
> -CONFIG_NETFILTER_XT_SET=m
> -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
> -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
> -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
> -CONFIG_NETFILTER_XT_TARGET_DSCP=m
> -CONFIG_NETFILTER_XT_TARGET_HMARK=m
> -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
> -CONFIG_NETFILTER_XT_TARGET_LOG=m
> -CONFIG_NETFILTER_XT_TARGET_MARK=m
> -CONFIG_NETFILTER_XT_TARGET_NFLOG=m
> -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
> -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
> -CONFIG_NETFILTER_XT_TARGET_TEE=m
> -CONFIG_NETFILTER_XT_TARGET_TPROXY=m
> -CONFIG_NETFILTER_XT_TARGET_TRACE=m
> -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
> -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
> -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
> -CONFIG_NETFILTER_XT_MATCH_BPF=m
> -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
> -CONFIG_NETFILTER_XT_MATCH_COMMENT=m
> -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
> -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
> -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
> -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
> -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
> -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
> -CONFIG_NETFILTER_XT_MATCH_DSCP=m
> -CONFIG_NETFILTER_XT_MATCH_ESP=m
> -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
> -CONFIG_NETFILTER_XT_MATCH_HELPER=m
> -CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
> -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
> -CONFIG_NETFILTER_XT_MATCH_LENGTH=m
> -CONFIG_NETFILTER_XT_MATCH_LIMIT=m
> -CONFIG_NETFILTER_XT_MATCH_MAC=m
> -CONFIG_NETFILTER_XT_MATCH_MARK=m
> -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
> -CONFIG_NETFILTER_XT_MATCH_NFACCT=m
> -CONFIG_NETFILTER_XT_MATCH_OSF=m
> -CONFIG_NETFILTER_XT_MATCH_OWNER=m
> -CONFIG_NETFILTER_XT_MATCH_POLICY=m
> -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
> -CONFIG_NETFILTER_XT_MATCH_QUOTA=m
> -CONFIG_NETFILTER_XT_MATCH_RATEEST=m
> -CONFIG_NETFILTER_XT_MATCH_REALM=m
> -CONFIG_NETFILTER_XT_MATCH_RECENT=m
> -CONFIG_NETFILTER_XT_MATCH_SOCKET=m
> -CONFIG_NETFILTER_XT_MATCH_STATE=m
> -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
> -CONFIG_NETFILTER_XT_MATCH_STRING=m
> -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
> -CONFIG_NETFILTER_XT_MATCH_TIME=m
> -CONFIG_NETFILTER_XT_MATCH_U32=m
> -CONFIG_IP_SET=m
> -CONFIG_IP_SET_BITMAP_IP=m
> -CONFIG_IP_SET_BITMAP_IPMAC=m
> -CONFIG_IP_SET_BITMAP_PORT=m
> -CONFIG_IP_SET_HASH_IP=m
> -CONFIG_IP_SET_HASH_IPMARK=m
> -CONFIG_IP_SET_HASH_IPPORT=m
> -CONFIG_IP_SET_HASH_IPPORTIP=m
> -CONFIG_IP_SET_HASH_IPPORTNET=m
> -CONFIG_IP_SET_HASH_IPMAC=m
> -CONFIG_IP_SET_HASH_MAC=m
> -CONFIG_IP_SET_HASH_NETPORTNET=m
> -CONFIG_IP_SET_HASH_NET=m
> -CONFIG_IP_SET_HASH_NETNET=m
> -CONFIG_IP_SET_HASH_NETPORT=m
> -CONFIG_IP_SET_HASH_NETIFACE=m
> -CONFIG_IP_SET_LIST_SET=m
> -CONFIG_NFT_DUP_IPV4=m
> -CONFIG_NFT_FIB_IPV4=m
> -CONFIG_NF_TABLES_ARP=y
> -CONFIG_NF_LOG_ARP=m
> -CONFIG_NF_LOG_IPV4=m
> -CONFIG_IP_NF_IPTABLES=m
> -CONFIG_IP_NF_MATCH_AH=m
> -CONFIG_IP_NF_MATCH_ECN=m
> -CONFIG_IP_NF_MATCH_RPFILTER=m
> -CONFIG_IP_NF_MATCH_TTL=m
> -CONFIG_IP_NF_TARGET_REJECT=m
> -CONFIG_IP_NF_TARGET_SYNPROXY=m
> -CONFIG_IP_NF_NAT=m
> -CONFIG_IP_NF_TARGET_MASQUERADE=m
> -CONFIG_IP_NF_TARGET_NETMAP=m
> -CONFIG_IP_NF_TARGET_REDIRECT=m
> -CONFIG_IP_NF_TARGET_ECN=m
> -CONFIG_IP_NF_TARGET_TTL=m
> -CONFIG_IP_NF_RAW=m
> -CONFIG_IP_NF_ARPFILTER=m
> -CONFIG_IP_NF_ARP_MANGLE=m
> -CONFIG_NFT_DUP_IPV6=m
> -CONFIG_NFT_FIB_IPV6=m
> -CONFIG_IP6_NF_IPTABLES=m
> -CONFIG_IP6_NF_MATCH_AH=m
> -CONFIG_IP6_NF_MATCH_EUI64=m
> -CONFIG_IP6_NF_MATCH_FRAG=m
> -CONFIG_IP6_NF_MATCH_OPTS=m
> -CONFIG_IP6_NF_MATCH_HL=m
> -CONFIG_IP6_NF_MATCH_IPV6HEADER=m
> -CONFIG_IP6_NF_MATCH_MH=m
> -CONFIG_IP6_NF_MATCH_RPFILTER=m
> -CONFIG_IP6_NF_MATCH_RT=m
> -CONFIG_IP6_NF_MATCH_SRH=m
> -CONFIG_IP6_NF_TARGET_HL=m
> -CONFIG_IP6_NF_TARGET_REJECT=m
> -CONFIG_IP6_NF_TARGET_SYNPROXY=m
> -CONFIG_IP6_NF_RAW=m
> -CONFIG_IP6_NF_NAT=m
> -CONFIG_IP6_NF_TARGET_MASQUERADE=m
> -CONFIG_IP6_NF_TARGET_NPT=m
> -CONFIG_NF_TABLES_BRIDGE=m
> -CONFIG_NFT_BRIDGE_META=m
> -CONFIG_NFT_BRIDGE_REJECT=m
> -CONFIG_NF_CONNTRACK_BRIDGE=m
> -CONFIG_BRIDGE_NF_EBTABLES_LEGACY=m
> -CONFIG_BRIDGE_NF_EBTABLES=m
> -CONFIG_BRIDGE_EBT_BROUTE=m
> -CONFIG_BRIDGE_EBT_T_FILTER=m
> -CONFIG_BRIDGE_EBT_T_NAT=m
> -CONFIG_BRIDGE_EBT_802_3=m
> -CONFIG_BRIDGE_EBT_AMONG=m
> -CONFIG_BRIDGE_EBT_ARP=m
> -CONFIG_BRIDGE_EBT_IP=m
> -CONFIG_BRIDGE_EBT_IP6=m
> -CONFIG_BRIDGE_EBT_LIMIT=m
> -CONFIG_BRIDGE_EBT_MARK=m
> -CONFIG_BRIDGE_EBT_PKTTYPE=m
> -CONFIG_BRIDGE_EBT_STP=m
> -CONFIG_BRIDGE_EBT_VLAN=m
> -CONFIG_BRIDGE_EBT_ARPREPLY=m
> -CONFIG_BRIDGE_EBT_DNAT=m
> -CONFIG_BRIDGE_EBT_MARK_T=m
> -CONFIG_BRIDGE_EBT_REDIRECT=m
> -CONFIG_BRIDGE_EBT_SNAT=m
> -CONFIG_BRIDGE_EBT_LOG=m
> -CONFIG_BRIDGE_EBT_NFLOG=m
> -CONFIG_IP_SCTP=m
> -CONFIG_RDS=m
> -CONFIG_RDS_TCP=m
> -CONFIG_L2TP=m
> -CONFIG_BRIDGE=m
> -CONFIG_ATALK=m
> -CONFIG_6LOWPAN=m
> -CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m
> -CONFIG_6LOWPAN_GHC_UDP=m
> -CONFIG_6LOWPAN_GHC_ICMPV6=m
> -CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m
> -CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m
> -CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=m
> -CONFIG_DNS_RESOLVER=y
> -CONFIG_BATMAN_ADV=m
> -# CONFIG_BATMAN_ADV_BATMAN_V is not set
> -CONFIG_NETLINK_DIAG=m
> -CONFIG_MPLS=y
> -CONFIG_NET_MPLS_GSO=m
> -CONFIG_MPLS_ROUTING=m
> -CONFIG_MPLS_IPTUNNEL=m
> -CONFIG_NET_NSH=m
> -CONFIG_AF_KCM=m
> -# CONFIG_WIRELESS is not set
> -CONFIG_PSAMPLE=m
> -CONFIG_NET_IFE=m
> -CONFIG_DEVTMPFS=y
> -CONFIG_DEVTMPFS_MOUNT=y
> -CONFIG_TEST_ASYNC_DRIVER_PROBE=m
> -CONFIG_CONNECTOR=m
> -CONFIG_ZRAM=m
> -CONFIG_BLK_DEV_LOOP=y
> -CONFIG_BLK_DEV_DRBD=m
> -CONFIG_BLK_DEV_NBD=m
> -CONFIG_BLK_DEV_RAM=y
> -CONFIG_ATA_OVER_ETH=m
> -CONFIG_DUMMY_IRQ=m
> -CONFIG_RAID_ATTRS=m
> -CONFIG_SCSI=y
> -CONFIG_BLK_DEV_SD=y
> -CONFIG_CHR_DEV_ST=m
> -CONFIG_BLK_DEV_SR=y
> -CONFIG_CHR_DEV_SG=m
> -CONFIG_SCSI_CONSTANTS=y
> -CONFIG_SCSI_SAS_ATTRS=m
> -CONFIG_ISCSI_TCP=m
> -CONFIG_ISCSI_BOOT_SYSFS=m
> -CONFIG_MD=y
> -CONFIG_MD_LINEAR=m
> -CONFIG_BLK_DEV_DM=m
> -CONFIG_DM_UNSTRIPED=m
> -CONFIG_DM_CRYPT=m
> -CONFIG_DM_SNAPSHOT=m
> -CONFIG_DM_THIN_PROVISIONING=m
> -CONFIG_DM_WRITECACHE=m
> -CONFIG_DM_ERA=m
> -CONFIG_DM_CLONE=m
> -CONFIG_DM_MIRROR=m
> -CONFIG_DM_RAID=m
> -CONFIG_DM_ZERO=m
> -CONFIG_DM_MULTIPATH=m
> -CONFIG_DM_UEVENT=y
> -CONFIG_DM_LOG_WRITES=m
> -CONFIG_DM_INTEGRITY=m
> -CONFIG_TARGET_CORE=m
> -CONFIG_TCM_IBLOCK=m
> -CONFIG_TCM_FILEIO=m
> -CONFIG_TCM_PSCSI=m
> -CONFIG_NETDEVICES=y
> -CONFIG_DUMMY=m
> -CONFIG_WIREGUARD=m
> -CONFIG_OVPN=m
> -CONFIG_EQUALIZER=m
> -CONFIG_NET_TEAM=m
> -CONFIG_NET_TEAM_MODE_BROADCAST=m
> -CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
> -CONFIG_NET_TEAM_MODE_RANDOM=m
> -CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
> -CONFIG_NET_TEAM_MODE_LOADBALANCE=m
> -CONFIG_MACVLAN=m
> -CONFIG_MACVTAP=m
> -CONFIG_IPVLAN=m
> -CONFIG_IPVTAP=m
> -CONFIG_VXLAN=m
> -CONFIG_GENEVE=m
> -CONFIG_BAREUDP=m
> -CONFIG_GTP=m
> -CONFIG_PFCP=m
> -CONFIG_MACSEC=m
> -CONFIG_NETCONSOLE=m
> -CONFIG_NETCONSOLE_DYNAMIC=y
> -CONFIG_TUN=m
> -CONFIG_VETH=m
> -CONFIG_PPP=m
> -CONFIG_PPP_BSDCOMP=m
> -CONFIG_PPP_DEFLATE=m
> -CONFIG_PPP_FILTER=y
> -CONFIG_PPP_MPPE=m
> -CONFIG_PPPOE=m
> -CONFIG_PPTP=m
> -CONFIG_PPPOL2TP=m
> -CONFIG_PPP_ASYNC=m
> -CONFIG_PPP_SYNC_TTY=m
> -CONFIG_SLIP=m
> -CONFIG_SLIP_COMPRESSED=y
> -CONFIG_SLIP_SMART=y
> -CONFIG_SLIP_MODE_SLIP6=y
> -# CONFIG_WLAN is not set
> -CONFIG_INPUT_EVDEV=m
> -# CONFIG_KEYBOARD_ATKBD is not set
> -# CONFIG_MOUSE_PS2 is not set
> -CONFIG_MOUSE_SERIAL=m
> -CONFIG_SERIO=m
> -CONFIG_USERIO=m
> -# CONFIG_LEGACY_PTYS is not set
> -# CONFIG_HW_RANDOM is not set
> -CONFIG_NTP_PPS=y
> -CONFIG_PPS_CLIENT_LDISC=m
> -CONFIG_PTP_1588_CLOCK=m
> -# CONFIG_HWMON is not set
> -CONFIG_FB=y
> -CONFIG_FRAMEBUFFER_CONSOLE=y
> -CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION=y
> -CONFIG_LOGO=y
> -# CONFIG_LOGO_LINUX_VGA16 is not set
> -# CONFIG_LOGO_LINUX_CLUT224 is not set
> -CONFIG_HID=m
> -CONFIG_HIDRAW=y
> -CONFIG_UHID=m
> -# CONFIG_HID_GENERIC is not set
> -# CONFIG_HID_ITE is not set
> -# CONFIG_HID_REDRAGON is not set
> -# CONFIG_USB_SUPPORT is not set
> -CONFIG_RTC_CLASS=y
> -# CONFIG_RTC_NVMEM is not set
> -CONFIG_RTC_DRV_GENERIC=m
> -# CONFIG_VIRTIO_MENU is not set
> -# CONFIG_VHOST_MENU is not set
> -# CONFIG_IOMMU_SUPPORT is not set
> -CONFIG_DAX=m
> -CONFIG_EXT4_FS=y
> -CONFIG_JFS_FS=m
> -CONFIG_XFS_FS=m
> -CONFIG_OCFS2_FS=m
> -# CONFIG_OCFS2_DEBUG_MASKLOG is not set
> -CONFIG_BTRFS_FS=m
> -CONFIG_FANOTIFY=y
> -CONFIG_QUOTA_NETLINK_INTERFACE=y
> -CONFIG_AUTOFS_FS=m
> -CONFIG_FUSE_FS=m
> -CONFIG_CUSE=m
> -CONFIG_OVERLAY_FS=m
> -CONFIG_ISO9660_FS=y
> -CONFIG_JOLIET=y
> -CONFIG_ZISOFS=y
> -CONFIG_UDF_FS=m
> -CONFIG_MSDOS_FS=m
> -CONFIG_VFAT_FS=m
> -CONFIG_EXFAT_FS=m
> -CONFIG_NTFS3_FS=m
> -CONFIG_NTFS3_LZX_XPRESS=y
> -CONFIG_PROC_KCORE=y
> -CONFIG_PROC_CHILDREN=y
> -CONFIG_TMPFS=y
> -CONFIG_ORANGEFS_FS=m
> -CONFIG_AFFS_FS=m
> -CONFIG_ECRYPT_FS=m
> -CONFIG_ECRYPT_FS_MESSAGING=y
> -CONFIG_HFS_FS=m
> -CONFIG_HFSPLUS_FS=m
> -CONFIG_CRAMFS=m
> -CONFIG_SQUASHFS=m
> -CONFIG_SQUASHFS_LZ4=y
> -CONFIG_SQUASHFS_LZO=y
> -CONFIG_MINIX_FS=m
> -CONFIG_OMFS_FS=m
> -CONFIG_HPFS_FS=m
> -CONFIG_QNX4FS_FS=m
> -CONFIG_QNX6FS_FS=m
> -CONFIG_UFS_FS=m
> -CONFIG_EROFS_FS=m
> -CONFIG_NFS_FS=y
> -CONFIG_NFS_V4=m
> -CONFIG_NFS_SWAP=y
> -CONFIG_ROOT_NFS=y
> -CONFIG_NFSD=m
> -CONFIG_RPCSEC_GSS_KRB5=m
> -CONFIG_CIFS=m
> -# CONFIG_CIFS_STATS2 is not set
> -# CONFIG_CIFS_DEBUG is not set
> -CONFIG_CODA_FS=m
> -CONFIG_NLS_CODEPAGE_437=y
> -CONFIG_NLS_CODEPAGE_737=m
> -CONFIG_NLS_CODEPAGE_775=m
> -CONFIG_NLS_CODEPAGE_850=m
> -CONFIG_NLS_CODEPAGE_852=m
> -CONFIG_NLS_CODEPAGE_855=m
> -CONFIG_NLS_CODEPAGE_857=m
> -CONFIG_NLS_CODEPAGE_860=m
> -CONFIG_NLS_CODEPAGE_861=m
> -CONFIG_NLS_CODEPAGE_862=m
> -CONFIG_NLS_CODEPAGE_863=m
> -CONFIG_NLS_CODEPAGE_864=m
> -CONFIG_NLS_CODEPAGE_865=m
> -CONFIG_NLS_CODEPAGE_866=m
> -CONFIG_NLS_CODEPAGE_869=m
> -CONFIG_NLS_CODEPAGE_936=m
> -CONFIG_NLS_CODEPAGE_950=m
> -CONFIG_NLS_CODEPAGE_932=m
> -CONFIG_NLS_CODEPAGE_949=m
> -CONFIG_NLS_CODEPAGE_874=m
> -CONFIG_NLS_ISO8859_8=m
> -CONFIG_NLS_CODEPAGE_1250=m
> -CONFIG_NLS_CODEPAGE_1251=m
> -CONFIG_NLS_ASCII=m
> -CONFIG_NLS_ISO8859_1=y
> -CONFIG_NLS_ISO8859_2=m
> -CONFIG_NLS_ISO8859_3=m
> -CONFIG_NLS_ISO8859_4=m
> -CONFIG_NLS_ISO8859_5=m
> -CONFIG_NLS_ISO8859_6=m
> -CONFIG_NLS_ISO8859_7=m
> -CONFIG_NLS_ISO8859_9=m
> -CONFIG_NLS_ISO8859_13=m
> -CONFIG_NLS_ISO8859_14=m
> -CONFIG_NLS_ISO8859_15=m
> -CONFIG_NLS_KOI8_R=m
> -CONFIG_NLS_KOI8_U=m
> -CONFIG_NLS_MAC_ROMAN=m
> -CONFIG_NLS_MAC_CELTIC=m
> -CONFIG_NLS_MAC_CENTEURO=m
> -CONFIG_NLS_MAC_CROATIAN=m
> -CONFIG_NLS_MAC_CYRILLIC=m
> -CONFIG_NLS_MAC_GAELIC=m
> -CONFIG_NLS_MAC_GREEK=m
> -CONFIG_NLS_MAC_ICELAND=m
> -CONFIG_NLS_MAC_INUIT=m
> -CONFIG_NLS_MAC_ROMANIAN=m
> -CONFIG_NLS_MAC_TURKISH=m
> -CONFIG_DLM=m
> -CONFIG_ENCRYPTED_KEYS=m
> -CONFIG_HARDENED_USERCOPY=y
> -CONFIG_CRYPTO_USER=m
> -CONFIG_CRYPTO_NULL=m
> -CONFIG_CRYPTO_CRYPTD=m
> -CONFIG_CRYPTO_BENCHMARK=m
> -CONFIG_CRYPTO_RSA=m
> -CONFIG_CRYPTO_DH=m
> -CONFIG_CRYPTO_ECDH=m
> -CONFIG_CRYPTO_ECDSA=m
> -CONFIG_CRYPTO_ECRDSA=m
> -CONFIG_CRYPTO_AES=y
> -CONFIG_CRYPTO_AES_TI=m
> -CONFIG_CRYPTO_ANUBIS=m
> -CONFIG_CRYPTO_ARIA=m
> -CONFIG_CRYPTO_BLOWFISH=m
> -CONFIG_CRYPTO_CAMELLIA=m
> -CONFIG_CRYPTO_CAST5=m
> -CONFIG_CRYPTO_CAST6=m
> -CONFIG_CRYPTO_DES=m
> -CONFIG_CRYPTO_FCRYPT=m
> -CONFIG_CRYPTO_KHAZAD=m
> -CONFIG_CRYPTO_SEED=m
> -CONFIG_CRYPTO_SERPENT=m
> -CONFIG_CRYPTO_SM4_GENERIC=m
> -CONFIG_CRYPTO_TEA=m
> -CONFIG_CRYPTO_TWOFISH=m
> -CONFIG_CRYPTO_ADIANTUM=m
> -CONFIG_CRYPTO_ARC4=m
> -CONFIG_CRYPTO_CTS=m
> -CONFIG_CRYPTO_HCTR2=m
> -CONFIG_CRYPTO_LRW=m
> -CONFIG_CRYPTO_PCBC=m
> -CONFIG_CRYPTO_XTS=m
> -CONFIG_CRYPTO_AEGIS128=m
> -CONFIG_CRYPTO_MD4=m
> -CONFIG_CRYPTO_MICHAEL_MIC=m
> -CONFIG_CRYPTO_RMD160=m
> -CONFIG_CRYPTO_SHA1=m
> -CONFIG_CRYPTO_SM3_GENERIC=m
> -CONFIG_CRYPTO_WP512=m
> -CONFIG_CRYPTO_XCBC=m
> -CONFIG_CRYPTO_LZO=m
> -CONFIG_CRYPTO_842=m
> -CONFIG_CRYPTO_LZ4=m
> -CONFIG_CRYPTO_LZ4HC=m
> -CONFIG_CRYPTO_ZSTD=m
> -CONFIG_CRYPTO_DRBG_HASH=y
> -CONFIG_CRYPTO_DRBG_CTR=y
> -CONFIG_CRYPTO_USER_API_HASH=m
> -CONFIG_CRYPTO_USER_API_SKCIPHER=m
> -CONFIG_CRYPTO_USER_API_RNG=m
> -CONFIG_CRYPTO_USER_API_AEAD=m
> -# CONFIG_CRYPTO_HW is not set
> -CONFIG_PRIME_NUMBERS=m
> -CONFIG_CRC_BENCHMARK=y
> -CONFIG_XZ_DEC_TEST=m
> -CONFIG_GLOB_SELFTEST=m
> -# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
> -CONFIG_MAGIC_SYSRQ=y
> -CONFIG_TEST_LOCKUP=m
> -CONFIG_WW_MUTEX_SELFTEST=m
> -CONFIG_EARLY_PRINTK=y
> -CONFIG_KUNIT=m
> -CONFIG_KUNIT_ALL_TESTS=m
> -CONFIG_TEST_DHRY=m
> -CONFIG_TEST_MIN_HEAP=m
> -CONFIG_TEST_DIV64=m
> -CONFIG_TEST_MULDIV64=m
> -CONFIG_REED_SOLOMON_TEST=m
> -CONFIG_ATOMIC64_SELFTEST=m
> -CONFIG_ASYNC_RAID6_TEST=m
> -CONFIG_TEST_HEXDUMP=m
> -CONFIG_TEST_KSTRTOX=m
> -CONFIG_TEST_BITMAP=m
> -CONFIG_TEST_UUID=m
> -CONFIG_TEST_XARRAY=m
> -CONFIG_TEST_MAPLE_TREE=m
> -CONFIG_TEST_RHASHTABLE=m
> -CONFIG_TEST_IDA=m
> -CONFIG_TEST_BITOPS=m
> -CONFIG_TEST_VMALLOC=m
> -CONFIG_TEST_BPF=m
> -CONFIG_FIND_BIT_BENCHMARK=m
> -CONFIG_TEST_FIRMWARE=m
> -CONFIG_TEST_SYSCTL=m
> -CONFIG_LINEAR_RANGES_TEST=m
> -CONFIG_TEST_UDELAY=m
> -CONFIG_TEST_STATIC_KEYS=m
> -CONFIG_TEST_KMOD=m
> -CONFIG_TEST_MEMCAT_P=m
> -CONFIG_TEST_MEMINIT=m
> -CONFIG_TEST_FREE_PAGES=m
> diff --git a/arch/m68k/configs/multi_defconfig b/arch/m68k/configs/multi_defconfig
> index 74f0a1f6d871..b06de259c697 100644
> --- a/arch/m68k/configs/multi_defconfig
> +++ b/arch/m68k/configs/multi_defconfig
> @@ -19,7 +19,6 @@ CONFIG_M68KFPU_EMU=y
> CONFIG_AMIGA=y
> CONFIG_ATARI=y
> CONFIG_MAC=y
> -CONFIG_APOLLO=y
> CONFIG_VME=y
> CONFIG_MVME147=y
> CONFIG_MVME16x=y
> diff --git a/arch/m68k/include/asm/apollohw.h b/arch/m68k/include/asm/apollohw.h
> deleted file mode 100644
> index 52066f3b8658..000000000000
> --- a/arch/m68k/include/asm/apollohw.h
> +++ /dev/null
> @@ -1,90 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/* apollohw.h : some structures to access apollo HW */
> -
> -#ifndef _ASMm68k_APOLLOHW_H_
> -#define _ASMm68k_APOLLOHW_H_
> -
> -#include <linux/types.h>
> -
> -#include <asm/bootinfo-apollo.h>
> -
> -
> -extern u_long apollo_model;
> -
> -
> -/*
> - see scn2681 data sheet for more info.
> - member names are read_write.
> -*/
> -
> -#define DECLARE_2681_FIELD(x) unsigned char x; unsigned char dummy##x
> -
> -struct SCN2681 {
> -
> - DECLARE_2681_FIELD(mra);
> - DECLARE_2681_FIELD(sra_csra);
> - DECLARE_2681_FIELD(BRGtest_cra);
> - DECLARE_2681_FIELD(rhra_thra);
> - DECLARE_2681_FIELD(ipcr_acr);
> - DECLARE_2681_FIELD(isr_imr);
> - DECLARE_2681_FIELD(ctu_ctur);
> - DECLARE_2681_FIELD(ctl_ctlr);
> - DECLARE_2681_FIELD(mrb);
> - DECLARE_2681_FIELD(srb_csrb);
> - DECLARE_2681_FIELD(tst_crb);
> - DECLARE_2681_FIELD(rhrb_thrb);
> - DECLARE_2681_FIELD(reserved);
> - DECLARE_2681_FIELD(ip_opcr);
> - DECLARE_2681_FIELD(startCnt_setOutBit);
> - DECLARE_2681_FIELD(stopCnt_resetOutBit);
> -
> -};
> -
> -struct mc146818 {
> - unsigned char second, alarm_second;
> - unsigned char minute, alarm_minute;
> - unsigned char hours, alarm_hours;
> - unsigned char day_of_week, day_of_month;
> - unsigned char month, year;
> -};
> -
> -
> -#define IO_BASE 0x80000000
> -
> -extern u_long sio01_physaddr;
> -extern u_long sio23_physaddr;
> -extern u_long rtc_physaddr;
> -extern u_long pica_physaddr;
> -extern u_long picb_physaddr;
> -extern u_long cpuctrl_physaddr;
> -extern u_long timer_physaddr;
> -
> -#define SAU7_SIO01_PHYSADDR 0x10400
> -#define SAU7_SIO23_PHYSADDR 0x10500
> -#define SAU7_RTC_PHYSADDR 0x10900
> -#define SAU7_PICA 0x11000
> -#define SAU7_PICB 0x11100
> -#define SAU7_CPUCTRL 0x10100
> -#define SAU7_TIMER 0x010800
> -
> -#define SAU8_SIO01_PHYSADDR 0x8400
> -#define SAU8_RTC_PHYSADDR 0x8900
> -#define SAU8_PICA 0x9400
> -#define SAU8_PICB 0x9500
> -#define SAU8_CPUCTRL 0x8100
> -#define SAU8_TIMER 0x8800
> -
> -#define sio01 ((*(volatile struct SCN2681 *)(IO_BASE + sio01_physaddr)))
> -#define sio23 ((*(volatile struct SCN2681 *)(IO_BASE + sio23_physaddr)))
> -#define rtc (((volatile struct mc146818 *)(IO_BASE + rtc_physaddr)))
> -#define cpuctrl (*(volatile unsigned int *)(IO_BASE + cpuctrl_physaddr))
> -#define pica (IO_BASE + pica_physaddr)
> -#define picb (IO_BASE + picb_physaddr)
> -#define apollo_timer (IO_BASE + timer_physaddr)
> -#define addr_xlat_map ((unsigned short *)(IO_BASE + 0x17000))
> -
> -#define isaIO2mem(x) (((((x) & 0x3f8) << 7) | (((x) & 0xfc00) >> 6) | ((x) & 0x7)) + 0x40000 + IO_BASE)
> -
> -#define IRQ_APOLLO IRQ_USER
> -
> -#endif
> diff --git a/arch/m68k/include/asm/config.h b/arch/m68k/include/asm/config.h
> index 9bb888ab5009..9c73a73a7b3c 100644
> --- a/arch/m68k/include/asm/config.h
> +++ b/arch/m68k/include/asm/config.h
> @@ -9,7 +9,6 @@
> #define _M68K_CONFIG_H
>
> extern int amiga_parse_bootinfo(const struct bi_record *record);
> -extern int apollo_parse_bootinfo(const struct bi_record *record);
> extern int atari_parse_bootinfo(const struct bi_record *record);
> extern int bvme6000_parse_bootinfo(const struct bi_record *record);
> extern int hp300_parse_bootinfo(const struct bi_record *record);
> @@ -20,7 +19,6 @@ extern int q40_parse_bootinfo(const struct bi_record *record);
> extern int virt_parse_bootinfo(const struct bi_record *record);
>
> extern void config_amiga(void);
> -extern void config_apollo(void);
> extern void config_atari(void);
> extern void config_bvme6000(void);
> extern void config_hp300(void);
> diff --git a/arch/m68k/include/asm/irq.h b/arch/m68k/include/asm/irq.h
> index 2263e92d418a..51cd970b0778 100644
> --- a/arch/m68k/include/asm/irq.h
> +++ b/arch/m68k/include/asm/irq.h
> @@ -26,8 +26,6 @@
> #define NR_IRQS 43
> #elif defined(CONFIG_AMIGA) || !defined(CONFIG_MMU)
> #define NR_IRQS 32
> -#elif defined(CONFIG_APOLLO)
> -#define NR_IRQS 24
> #else /* CONFIG_HP300 etc. */
> #define NR_IRQS 8
> #endif
> diff --git a/arch/m68k/include/asm/setup.h b/arch/m68k/include/asm/setup.h
> index e4ec169f5c7d..1719d0ee59ea 100644
> --- a/arch/m68k/include/asm/setup.h
> +++ b/arch/m68k/include/asm/setup.h
> @@ -34,7 +34,7 @@ extern unsigned long m68k_machtype;
>
> #if !defined(CONFIG_AMIGA)
> # define MACH_IS_AMIGA (0)
> -#elif defined(CONFIG_ATARI) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \
> +#elif defined(CONFIG_ATARI) || defined(CONFIG_MAC) \
> || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
> || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
> || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) \
> @@ -48,7 +48,7 @@ extern unsigned long m68k_machtype;
>
> #if !defined(CONFIG_ATARI)
> # define MACH_IS_ATARI (0)
> -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \
> +#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) \
> || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
> || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
> || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) \
> @@ -62,7 +62,7 @@ extern unsigned long m68k_machtype;
>
> #if !defined(CONFIG_MAC)
> # define MACH_IS_MAC (0)
> -#elif defined(CONFIG_AMIGA) || defined(CONFIG_ATARI) || defined(CONFIG_APOLLO) \
> +#elif defined(CONFIG_AMIGA) || defined(CONFIG_ATARI) \
> || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
> || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
> || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) \
> @@ -82,24 +82,10 @@ extern unsigned long m68k_machtype;
> #define MACH_IS_SUN3 (0)
> #endif
>
> -#if !defined (CONFIG_APOLLO)
> -# define MACH_IS_APOLLO (0)
> -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
> - || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
> - || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
> - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) \
> - || defined(CONFIG_VIRT)
> -# define MACH_IS_APOLLO (m68k_machtype == MACH_APOLLO)
> -#else
> -# define MACH_APOLLO_ONLY
> -# define MACH_IS_APOLLO (1)
> -# define MACH_TYPE (MACH_APOLLO)
> -#endif
> -
> #if !defined (CONFIG_MVME147)
> # define MACH_IS_MVME147 (0)
> #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
> - || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \
> + || defined(CONFIG_BVME6000) \
> || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
> || defined(CONFIG_SUN3X) || defined(CONFIG_MVME16x) \
> || defined(CONFIG_VIRT)
> @@ -113,7 +99,7 @@ extern unsigned long m68k_machtype;
> #if !defined (CONFIG_MVME16x)
> # define MACH_IS_MVME16x (0)
> #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
> - || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \
> + || defined(CONFIG_BVME6000) \
> || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
> || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) \
> || defined(CONFIG_VIRT)
> @@ -127,7 +113,7 @@ extern unsigned long m68k_machtype;
> #if !defined (CONFIG_BVME6000)
> # define MACH_IS_BVME6000 (0)
> #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
> - || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
> + || defined(CONFIG_MVME16x) \
> || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
> || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) \
> || defined(CONFIG_VIRT)
> @@ -141,7 +127,7 @@ extern unsigned long m68k_machtype;
> #if !defined (CONFIG_HP300)
> # define MACH_IS_HP300 (0)
> #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
> - || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
> + || defined(CONFIG_MVME16x) \
> || defined(CONFIG_BVME6000) || defined(CONFIG_Q40) \
> || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) \
> || defined(CONFIG_VIRT)
> @@ -169,7 +155,7 @@ extern unsigned long m68k_machtype;
> #if !defined (CONFIG_SUN3X)
> # define MACH_IS_SUN3X (0)
> #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
> - || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
> + || defined(CONFIG_MVME16x) \
> || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \
> || defined(CONFIG_Q40) || defined(CONFIG_MVME147) \
> || defined(CONFIG_VIRT)
> @@ -183,7 +169,7 @@ extern unsigned long m68k_machtype;
> #if !defined(CONFIG_VIRT)
> # define MACH_IS_VIRT (0)
> #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
> - || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
> + || defined(CONFIG_MVME16x) \
> || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \
> || defined(CONFIG_Q40) || defined(CONFIG_SUN3X) \
> || defined(CONFIG_MVME147)
> diff --git a/arch/m68k/include/uapi/asm/bootinfo-apollo.h b/arch/m68k/include/uapi/asm/bootinfo-apollo.h
> deleted file mode 100644
> index c226f7957938..000000000000
> --- a/arch/m68k/include/uapi/asm/bootinfo-apollo.h
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
> -/*
> -** asm/bootinfo-apollo.h -- Apollo-specific boot information definitions
> -*/
> -
> -#ifndef _UAPI_ASM_M68K_BOOTINFO_APOLLO_H
> -#define _UAPI_ASM_M68K_BOOTINFO_APOLLO_H
> -
> -
> - /*
> - * Apollo-specific tags
> - */
> -
> -#define BI_APOLLO_MODEL 0x8000 /* model (__be32) */
> -
> -
> - /*
> - * Apollo models (BI_APOLLO_MODEL)
> - */
> -
> -#define APOLLO_UNKNOWN 0
> -#define APOLLO_DN3000 1
> -#define APOLLO_DN3010 2
> -#define APOLLO_DN3500 3
> -#define APOLLO_DN4000 4
> -#define APOLLO_DN4500 5
> -
> -
> -#endif /* _UAPI_ASM_M68K_BOOTINFO_APOLLO_H */
> diff --git a/arch/m68k/include/uapi/asm/bootinfo.h b/arch/m68k/include/uapi/asm/bootinfo.h
> index 28d2d44c08d0..a199a7ecd3cd 100644
> --- a/arch/m68k/include/uapi/asm/bootinfo.h
> +++ b/arch/m68k/include/uapi/asm/bootinfo.h
> @@ -80,7 +80,7 @@ struct mem_info {
> #define MACH_AMIGA 1
> #define MACH_ATARI 2
> #define MACH_MAC 3
> -#define MACH_APOLLO 4
> +/* 4 was MACH_APOLLO */
> #define MACH_SUN3 5
> #define MACH_MVME147 6
> #define MACH_MVME16x 7
> @@ -134,7 +134,7 @@ struct mem_info {
> #define MMUB_68030 1 /* Internal MMU */
> #define MMUB_68040 2 /* Internal MMU */
> #define MMUB_68060 3 /* Internal MMU */
> -#define MMUB_APOLLO 4 /* Custom Apollo */
> +/* 4 was MMUB_APOLLO */
> #define MMUB_SUN3 5 /* Custom Sun-3 */
> #define MMUB_COLDFIRE 6 /* Internal MMU */
>
> @@ -143,7 +143,6 @@ struct mem_info {
> #define MMU_68040 (1 << MMUB_68040)
> #define MMU_68060 (1 << MMUB_68060)
> #define MMU_SUN3 (1 << MMUB_SUN3)
> -#define MMU_APOLLO (1 << MMUB_APOLLO)
> #define MMU_COLDFIRE (1 << MMUB_COLDFIRE)
>
>
> diff --git a/arch/m68k/kernel/head.S b/arch/m68k/kernel/head.S
> index 2e4ef0358887..573b30100679 100644
> --- a/arch/m68k/kernel/head.S
> +++ b/arch/m68k/kernel/head.S
> @@ -449,7 +449,7 @@ func_define mmu_get_ptr_table_entry,2
> func_define mmu_get_page_table_entry,2
> func_define mmu_print
> func_define get_new_page
> -#if defined(CONFIG_HP300) || defined(CONFIG_APOLLO)
> +#ifdef CONFIG_HP300
> func_define set_leds
> #endif
>
> @@ -528,17 +528,10 @@ func_define putn,1
> #define is_mvme16x(lab) cmpl &MACH_MVME16x,%pc@(m68k_machtype); jeq lab
> #define is_bvme6000(lab) cmpl &MACH_BVME6000,%pc@(m68k_machtype); jeq lab
> #define is_not_hp300(lab) cmpl &MACH_HP300,%pc@(m68k_machtype); jne lab
> -#define is_not_apollo(lab) cmpl &MACH_APOLLO,%pc@(m68k_machtype); jne lab
> #define is_not_q40(lab) cmpl &MACH_Q40,%pc@(m68k_machtype); jne lab
> #define is_not_sun3x(lab) cmpl &MACH_SUN3X,%pc@(m68k_machtype); jne lab
> #define is_not_virt(lab) cmpl &MACH_VIRT,%pc@(m68k_machtype); jne lab
>
> -#define hasnt_leds(lab) cmpl &MACH_HP300,%pc@(m68k_machtype); \
> - jeq 42f; \
> - cmpl &MACH_APOLLO,%pc@(m68k_machtype); \
> - jne lab ;\
> - 42:\
> -
> #define is_040_or_060(lab) btst &CPUTYPE_0460,%pc@(L(cputype)+3); jne lab
> #define is_not_040_or_060(lab) btst &CPUTYPE_0460,%pc@(L(cputype)+3); jeq lab
> #define is_040(lab) btst &CPUTYPE_040,%pc@(L(cputype)+3); jne lab
> @@ -551,8 +544,8 @@ func_define putn,1
> the console is running. Writing a 1 bit turns the corresponding LED
> _off_ - on the 340 bit 7 is towards the back panel of the machine. */
> .macro leds mask
> -#if defined(CONFIG_HP300) || defined(CONFIG_APOLLO)
> - hasnt_leds(.Lled\@)
> +#ifdef CONFIG_HP300
> + is_not_hp300(.Lled\@)
> pea \mask
> func_call set_leds
> addql #4,%sp
> @@ -1250,16 +1243,6 @@ L(notsun3x):
> L(novirt):
> #endif
>
> -#ifdef CONFIG_APOLLO
> - is_not_apollo(L(notapollo))
> -
> - putc 'P'
> - mmu_map #0x80000000,#0,#0x02000000,#_PAGE_NOCACHE030
> -
> -L(notapollo):
> - jbra L(mmu_init_done)
> -#endif
> -
> L(mmu_init_done):
>
> putc 'G'
> @@ -1445,16 +1428,6 @@ L(mmu_fixup_done):
> /* enable copro */
> oriw #0x4000,0x61000000
> 1:
> -#endif
> -
> -#ifdef CONFIG_APOLLO
> - is_not_apollo(1f)
> -
> - /*
> - * Fix up the iobase before printing
> - */
> - movel #0x80000000,L(iobase)
> -1:
> #endif
>
> putc 'I'
> @@ -2982,10 +2955,6 @@ L(serial_init_not_mac):
> L(serial_init_not_mvme16x):
> #endif
>
> -#ifdef CONFIG_APOLLO
> -/* We count on the PROM initializing SIO1 */
> -#endif
> -
> #ifdef CONFIG_HP300
> /* We count on the boot loader initialising the UART */
> #endif
> @@ -3167,17 +3136,6 @@ func_start serial_putc,%d0/%d1/%a0/%a1
> 2:
> #endif
>
> -#ifdef CONFIG_APOLLO
> - is_not_apollo(2f)
> - movl %pc@(L(iobase)),%a1
> - moveb %d0,%a1@(LTHRB0)
> -1: moveb %a1@(LSRB0),%d0
> - andb #0x4,%d0
> - beq 1b
> - jbra L(serial_putc_done)
> -2:
> -#endif
> -
> #ifdef CONFIG_HP300
> is_not_hp300(3f)
> movl %pc@(L(iobase)),%a1
> @@ -3293,23 +3251,14 @@ ENTRY(debug_cons_nputs)
> rts
> #endif /* CONFIG_EARLY_PRINTK */
>
> -#if defined(CONFIG_HP300) || defined(CONFIG_APOLLO)
> +#ifdef CONFIG_HP300
> func_start set_leds,%d0/%a0
> movel ARG1,%d0
> -#ifdef CONFIG_HP300
> is_not_hp300(1f)
> movel %pc@(L(iobase)),%a0
> moveb %d0,%a0@(0x1ffff)
> - jra 2f
> -#endif
> + jra 1f
> 1:
> -#ifdef CONFIG_APOLLO
> - movel %pc@(L(iobase)),%a0
> - lsll #8,%d0
> - eorw #0xff00,%d0
> - moveb %d0,%a0@(LCPUCTRL)
> -#endif
> -2:
> func_return set_leds
> #endif
>
> @@ -3768,8 +3717,7 @@ __INITDATA
> m68k_init_mapped_size:
> .long 0
>
> -#if defined(CONFIG_ATARI) || defined(CONFIG_AMIGA) || \
> - defined(CONFIG_HP300) || defined(CONFIG_APOLLO)
> +#if defined(CONFIG_ATARI) || defined(CONFIG_AMIGA) || defined(CONFIG_HP300)
> L(custom):
> L(iobase):
> .long 0
> @@ -3850,12 +3798,6 @@ L(mac_sccbase):
> .long 0
> #endif /* CONFIG_MAC */
>
> -#if defined (CONFIG_APOLLO)
> -LSRB0 = 0x10412
> -LTHRB0 = 0x10416
> -LCPUCTRL = 0x10100
> -#endif
> -
> #if defined(CONFIG_HP300)
> DCADATA = 0x11
> DCALSR = 0x1b
> diff --git a/arch/m68k/kernel/setup_mm.c b/arch/m68k/kernel/setup_mm.c
> index c7e8de0d34bb..2451dda2f701 100644
> --- a/arch/m68k/kernel/setup_mm.c
> +++ b/arch/m68k/kernel/setup_mm.c
> @@ -178,8 +178,6 @@ static void __init m68k_parse_bootinfo(const struct bi_record *record)
> unknown = mvme147_parse_bootinfo(record);
> else if (MACH_IS_HP300)
> unknown = hp300_parse_bootinfo(record);
> - else if (MACH_IS_APOLLO)
> - unknown = apollo_parse_bootinfo(record);
> else if (MACH_IS_VIRT)
> unknown = virt_parse_bootinfo(record);
> else
> @@ -275,11 +273,6 @@ void __init setup_arch(char **cmdline_p)
> config_sun3();
> break;
> #endif
> -#ifdef CONFIG_APOLLO
> - case MACH_APOLLO:
> - config_apollo();
> - break;
> -#endif
> #ifdef CONFIG_MVME147
> case MACH_MVME147:
> config_mvme147();
> @@ -433,8 +426,6 @@ static int show_cpuinfo(struct seq_file *m, void *v)
> mmu = "68060";
> else if (m68k_mmutype & MMU_SUN3)
> mmu = "Sun-3";
> - else if (m68k_mmutype & MMU_APOLLO)
> - mmu = "Apollo";
> else if (m68k_mmutype & MMU_COLDFIRE)
> mmu = "ColdFire";
> else
> diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
> index a733f90eca55..2796e3dd7eaa 100644
> --- a/drivers/video/fbdev/Kconfig
> +++ b/drivers/video/fbdev/Kconfig
> @@ -184,14 +184,6 @@ config FB_CYBER2000_I2C
> Integraphics CyberPro 20x0 and 5000 VGA chips. This is used
> on the Netwinder machines for the SAA7111 video capture.
>
> -config FB_APOLLO
> - bool
> - depends on (FB = y) && APOLLO
> - default y
> - select FB_CFB_FILLRECT
> - select FB_CFB_IMAGEBLIT
> - select FB_IOMEM_FOPS
> -
> config FB_Q40
> bool
> depends on (FB = y) && Q40
> diff --git a/drivers/video/fbdev/Makefile b/drivers/video/fbdev/Makefile
> index b3d12f977c06..bc2e45da30d6 100644
> --- a/drivers/video/fbdev/Makefile
> +++ b/drivers/video/fbdev/Makefile
> @@ -63,7 +63,6 @@ obj-$(CONFIG_FB_HGA) += hgafb.o
> obj-$(CONFIG_FB_XVR500) += sunxvr500.o
> obj-$(CONFIG_FB_XVR2500) += sunxvr2500.o
> obj-$(CONFIG_FB_XVR1000) += sunxvr1000.o
> -obj-$(CONFIG_FB_APOLLO) += dnfb.o
> obj-$(CONFIG_FB_Q40) += q40fb.o
> obj-$(CONFIG_FB_TGA) += tgafb.o
> obj-$(CONFIG_FB_HP300) += hpfb.o
> diff --git a/drivers/video/fbdev/dnfb.c b/drivers/video/fbdev/dnfb.c
> deleted file mode 100644
> index c4d24540d9ef..000000000000
> --- a/drivers/video/fbdev/dnfb.c
> +++ /dev/null
> @@ -1,307 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -#include <linux/kernel.h>
> -#include <linux/errno.h>
> -#include <linux/string.h>
> -#include <linux/mm.h>
> -#include <linux/delay.h>
> -#include <linux/interrupt.h>
> -#include <linux/platform_device.h>
> -
> -#include <asm/setup.h>
> -#include <asm/irq.h>
> -#include <asm/amigahw.h>
> -#include <asm/amigaints.h>
> -#include <asm/apollohw.h>
> -#include <linux/fb.h>
> -#include <linux/module.h>
> -
> -/* apollo video HW definitions */
> -
> -/*
> - * Control Registers. IOBASE + $x
> - *
> - * Note: these are the Memory/IO BASE definitions for a mono card set to the
> - * alternate address
> - *
> - * Control 3A and 3B serve identical functions except that 3A
> - * deals with control 1 and 3b deals with Color LUT reg.
> - */
> -
> -#define AP_IOBASE 0x3b0 /* Base address of 1 plane board. */
> -#define AP_STATUS isaIO2mem(AP_IOBASE+0) /* Status register. Read */
> -#define AP_WRITE_ENABLE isaIO2mem(AP_IOBASE+0) /* Write Enable Register Write */
> -#define AP_DEVICE_ID isaIO2mem(AP_IOBASE+1) /* Device ID Register. Read */
> -#define AP_ROP_1 isaIO2mem(AP_IOBASE+2) /* Raster Operation reg. Write Word */
> -#define AP_DIAG_MEM_REQ isaIO2mem(AP_IOBASE+4) /* Diagnostic Memory Request. Write Word */
> -#define AP_CONTROL_0 isaIO2mem(AP_IOBASE+8) /* Control Register 0. Read/Write */
> -#define AP_CONTROL_1 isaIO2mem(AP_IOBASE+0xa) /* Control Register 1. Read/Write */
> -#define AP_CONTROL_3A isaIO2mem(AP_IOBASE+0xe) /* Control Register 3a. Read/Write */
> -#define AP_CONTROL_2 isaIO2mem(AP_IOBASE+0xc) /* Control Register 2. Read/Write */
> -
> -
> -#define FRAME_BUFFER_START 0x0FA0000
> -#define FRAME_BUFFER_LEN 0x40000
> -
> -/* CREG 0 */
> -#define VECTOR_MODE 0x40 /* 010x.xxxx */
> -#define DBLT_MODE 0x80 /* 100x.xxxx */
> -#define NORMAL_MODE 0xE0 /* 111x.xxxx */
> -#define SHIFT_BITS 0x1F /* xxx1.1111 */
> - /* other bits are Shift value */
> -
> -/* CREG 1 */
> -#define AD_BLT 0x80 /* 1xxx.xxxx */
> -#define NORMAL 0x80 /* 1xxx.xxxx */ /* What is happening here ?? */
> -#define INVERSE 0x00 /* 0xxx.xxxx */ /* Clearing this reverses the screen */
> -#define PIX_BLT 0x00 /* 0xxx.xxxx */
> -
> -#define AD_HIBIT 0x40 /* xIxx.xxxx */
> -
> -#define ROP_EN 0x10 /* xxx1.xxxx */
> -#define DST_EQ_SRC 0x00 /* xxx0.xxxx */
> -#define nRESET_SYNC 0x08 /* xxxx.1xxx */
> -#define SYNC_ENAB 0x02 /* xxxx.xx1x */
> -
> -#define BLANK_DISP 0x00 /* xxxx.xxx0 */
> -#define ENAB_DISP 0x01 /* xxxx.xxx1 */
> -
> -#define NORM_CREG1 (nRESET_SYNC | SYNC_ENAB | ENAB_DISP) /* no reset sync */
> -
> -/* CREG 2 */
> -
> -/*
> - * Following 3 defines are common to 1, 4 and 8 plane.
> - */
> -
> -#define S_DATA_1s 0x00 /* 00xx.xxxx */ /* set source to all 1's -- vector drawing */
> -#define S_DATA_PIX 0x40 /* 01xx.xxxx */ /* takes source from ls-bits and replicates over 16 bits */
> -#define S_DATA_PLN 0xC0 /* 11xx.xxxx */ /* normal, each data access =16-bits in
> - one plane of image mem */
> -
> -/* CREG 3A/CREG 3B */
> -# define RESET_CREG 0x80 /* 1000.0000 */
> -
> -/* ROP REG - all one nibble */
> -/* ********* NOTE : this is used r0,r1,r2,r3 *********** */
> -#define ROP(r2,r3,r0,r1) ( (U_SHORT)((r0)|((r1)<<4)|((r2)<<8)|((r3)<<12)) )
> -#define DEST_ZERO 0x0
> -#define SRC_AND_DEST 0x1
> -#define SRC_AND_nDEST 0x2
> -#define SRC 0x3
> -#define nSRC_AND_DEST 0x4
> -#define DEST 0x5
> -#define SRC_XOR_DEST 0x6
> -#define SRC_OR_DEST 0x7
> -#define SRC_NOR_DEST 0x8
> -#define SRC_XNOR_DEST 0x9
> -#define nDEST 0xA
> -#define SRC_OR_nDEST 0xB
> -#define nSRC 0xC
> -#define nSRC_OR_DEST 0xD
> -#define SRC_NAND_DEST 0xE
> -#define DEST_ONE 0xF
> -
> -#define SWAP(A) ((A>>8) | ((A&0xff) <<8))
> -
> -/* frame buffer operations */
> -
> -static int dnfb_blank(int blank, struct fb_info *info);
> -static void dnfb_copyarea(struct fb_info *info, const struct fb_copyarea *area);
> -
> -static const struct fb_ops dn_fb_ops = {
> - .owner = THIS_MODULE,
> - __FB_DEFAULT_IOMEM_OPS_RDWR,
> - .fb_blank = dnfb_blank,
> - .fb_fillrect = cfb_fillrect,
> - .fb_copyarea = dnfb_copyarea,
> - .fb_imageblit = cfb_imageblit,
> - __FB_DEFAULT_IOMEM_OPS_MMAP,
> -};
> -
> -static const struct fb_var_screeninfo dnfb_var = {
> - .xres = 1280,
> - .yres = 1024,
> - .xres_virtual = 2048,
> - .yres_virtual = 1024,
> - .bits_per_pixel = 1,
> - .height = -1,
> - .width = -1,
> - .vmode = FB_VMODE_NONINTERLACED,
> -};
> -
> -static const struct fb_fix_screeninfo dnfb_fix = {
> - .id = "Apollo Mono",
> - .smem_start = (FRAME_BUFFER_START + IO_BASE),
> - .smem_len = FRAME_BUFFER_LEN,
> - .type = FB_TYPE_PACKED_PIXELS,
> - .visual = FB_VISUAL_MONO10,
> - .line_length = 256,
> -};
> -
> -static int dnfb_blank(int blank, struct fb_info *info)
> -{
> - if (blank)
> - out_8(AP_CONTROL_3A, 0x0);
> - else
> - out_8(AP_CONTROL_3A, 0x1);
> - return 0;
> -}
> -
> -static
> -void dnfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
> -{
> -
> - int incr, y_delta, pre_read = 0, x_end, x_word_count;
> - uint start_mask, end_mask, dest;
> - ushort *src, dummy;
> - short i, j;
> -
> - incr = (area->dy <= area->sy) ? 1 : -1;
> -
> - src = (ushort *)(info->screen_base + area->sy * info->fix.line_length +
> - (area->sx >> 4));
> - dest = area->dy * (info->fix.line_length >> 1) + (area->dx >> 4);
> -
> - if (incr > 0) {
> - y_delta = (info->fix.line_length * 8) - area->sx - area->width;
> - x_end = area->dx + area->width - 1;
> - x_word_count = (x_end >> 4) - (area->dx >> 4) + 1;
> - start_mask = 0xffff0000 >> (area->dx & 0xf);
> - end_mask = 0x7ffff >> (x_end & 0xf);
> - out_8(AP_CONTROL_0,
> - (((area->dx & 0xf) - (area->sx & 0xf)) % 16) | (0x4 << 5));
> - if ((area->dx & 0xf) < (area->sx & 0xf))
> - pre_read = 1;
> - } else {
> - y_delta = -((info->fix.line_length * 8) - area->sx - area->width);
> - x_end = area->dx - area->width + 1;
> - x_word_count = (area->dx >> 4) - (x_end >> 4) + 1;
> - start_mask = 0x7ffff >> (area->dx & 0xf);
> - end_mask = 0xffff0000 >> (x_end & 0xf);
> - out_8(AP_CONTROL_0,
> - ((-((area->sx & 0xf) - (area->dx & 0xf))) % 16) |
> - (0x4 << 5));
> - if ((area->dx & 0xf) > (area->sx & 0xf))
> - pre_read = 1;
> - }
> -
> - for (i = 0; i < area->height; i++) {
> -
> - out_8(AP_CONTROL_3A, 0xc | (dest >> 16));
> -
> - if (pre_read) {
> - dummy = *src;
> - src += incr;
> - }
> -
> - if (x_word_count) {
> - out_8(AP_WRITE_ENABLE, start_mask);
> - *src = dest;
> - src += incr;
> - dest += incr;
> - out_8(AP_WRITE_ENABLE, 0);
> -
> - for (j = 1; j < (x_word_count - 1); j++) {
> - *src = dest;
> - src += incr;
> - dest += incr;
> - }
> -
> - out_8(AP_WRITE_ENABLE, start_mask);
> - *src = dest;
> - dest += incr;
> - src += incr;
> - } else {
> - out_8(AP_WRITE_ENABLE, start_mask | end_mask);
> - *src = dest;
> - dest += incr;
> - src += incr;
> - }
> - src += (y_delta / 16);
> - dest += (y_delta / 16);
> - }
> - out_8(AP_CONTROL_0, NORMAL_MODE);
> -}
> -
> -/*
> - * Initialization
> - */
> -
> -static int dnfb_probe(struct platform_device *dev)
> -{
> - struct fb_info *info;
> - int err = 0;
> -
> - info = framebuffer_alloc(0, &dev->dev);
> - if (!info)
> - return -ENOMEM;
> -
> - info->fbops = &dn_fb_ops;
> - info->fix = dnfb_fix;
> - info->var = dnfb_var;
> - info->var.red.length = 1;
> - info->var.red.offset = 0;
> - info->var.green = info->var.blue = info->var.red;
> - info->screen_base = (u_char *) info->fix.smem_start;
> -
> - err = fb_alloc_cmap(&info->cmap, 2, 0);
> - if (err < 0)
> - goto release_framebuffer;
> -
> - err = register_framebuffer(info);
> - if (err < 0) {
> - fb_dealloc_cmap(&info->cmap);
> - goto release_framebuffer;
> - }
> - platform_set_drvdata(dev, info);
> -
> - /* now we have registered we can safely setup the hardware */
> - out_8(AP_CONTROL_3A, RESET_CREG);
> - out_be16(AP_WRITE_ENABLE, 0x0);
> - out_8(AP_CONTROL_0, NORMAL_MODE);
> - out_8(AP_CONTROL_1, (AD_BLT | DST_EQ_SRC | NORM_CREG1));
> - out_8(AP_CONTROL_2, S_DATA_PLN);
> - out_be16(AP_ROP_1, SWAP(0x3));
> -
> - printk("apollo frame buffer alive and kicking !\n");
> - return err;
> -
> -release_framebuffer:
> - framebuffer_release(info);
> - return err;
> -}
> -
> -static struct platform_driver dnfb_driver = {
> - .probe = dnfb_probe,
> - .driver = {
> - .name = "dnfb",
> - },
> -};
> -
> -static struct platform_device dnfb_device = {
> - .name = "dnfb",
> -};
> -
> -static int __init dnfb_init(void)
> -{
> - int ret;
> -
> - if (!MACH_IS_APOLLO)
> - return -ENODEV;
> -
> - if (fb_get_options("dnfb", NULL))
> - return -ENODEV;
> -
> - ret = platform_driver_register(&dnfb_driver);
> -
> - if (!ret) {
> - ret = platform_device_register(&dnfb_device);
> - if (ret)
> - platform_driver_unregister(&dnfb_driver);
> - }
> - return ret;
> -}
> -
> -module_init(dnfb_init);
> -
> -MODULE_LICENSE("GPL");
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
prev parent reply other threads:[~2026-02-09 8:14 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-09 0:51 [PATCH] arch: m68k: remove incomplete, unusable Apollo hardware support Ethan Nelson-Moore
2026-02-09 7:57 ` Geert Uytterhoeven
2026-02-09 22:59 ` Ethan Nelson-Moore
2026-02-09 8:14 ` Thomas Zimmermann [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7c2c30ea-2108-4a19-9d09-0e9555da464a@suse.de \
--to=tzimmermann@suse.de \
--cc=deller@gmx.de \
--cc=ebiggers@kernel.org \
--cc=enelsonmoore@gmail.com \
--cc=fthain@linux-m68k.org \
--cc=geert@linux-m68k.org \
--cc=gerg@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=herbert@gondor.apana.org.au \
--cc=hsukrut3@gmail.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jeanmichel.hautbois@yoseli.org \
--cc=jirislaby@kernel.org \
--cc=kees@kernel.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-m68k@vger.kernel.org \
--cc=ptsm@linux.microsoft.com \
--cc=thorsten.blum@linux.dev \
--cc=thuth@redhat.com \
--cc=wei.liu@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox