From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2C9A4313527; Mon, 17 Aug 2026 01:54:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931670; cv=none; b=LLpYOGPWOE6PLTT9AflTaDQS5ZgjE6tc/zw8uN3ACDo4/wrmXMsKrM5U21DYloeX92xRtMGWjSxsQP4cbL6FYkzlZPdJbMm8UXkuhxNCiOzFJOihJ0qt9DC6vvmG9f/nH+KXs6oLwkOyUzYIsdpge9crZlHYe5+IeyZ1vYUyl7o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931670; c=relaxed/simple; bh=tXFn8F8LVGqgpNLonD0OOhm9gs3a6YN4YPKy8g6+3J0=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=NfRQZmXr7l/Io8qHGIOnvuoRd7RELqk2FjvbPI72UhkMJMDVIbywZIiE8oX4kvYae1EzrKACa6/J7yCMiuVsdpWuREhIjNYr9HcXqgyKR5JTDUFb67p9g124AfkxZSLAJmAftN62HZ2RuyjdWvjq6fbRZCIkxOEuGLVdeZT/esE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=KjUI27ll; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="KjUI27ll" Received: from phl-compute-09.internal (phl-compute-09.internal [10.202.2.49]) by mailfout.phl.internal (Postfix) with ESMTP id 5E1EDEC0217; Sun, 16 Aug 2026 21:54:27 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Sun, 16 Aug 2026 21:54:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931667; x= 1787018067; bh=W8zpEopenm7bVgbagy9g5sl1DsTzkKmIH9uGQuORmV4=; b=K jUI27llvCdmw3/SJYPFRULKKP9BtDtSE2igLlYifvhifkhSfnVMXVXANIoU18VKu ech68/WiyP45qNgFZBJfyMzx0+JyrU2a7s+EFqZpvgNpoVZGaq/fiUgv9fEfcbWx 9v3DLftlbzx2xdnZgYwmbPOhClDnQ6s6jyeLDeRMPP86b7l7/sWO57iEsRZ7uw/y wGE3MISeApRCwXu2r9kGX2FoURXhPB6PVS/cMPZy7ja2TKkGtzruMJLo8UWB3tfD CxjVB0AbeC/LJDnxeDm8agQABWn8FLa+I+keAuDFq3hfMIY9jq0eM8DNBpmHCbWf mH/4PikTJzofM71eCSMTw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGGfSHbL2fI02qi3PxN23Kck6mI5WuUw/IvRcvpbY119ewffFmgrLaJZrOewmv0V9 +yVjmNFRAF5v6NwN93pp2/ef5Xe4c3LI9irOXMRuZYHRPaDMJE6WMter/2+BypR/48/QT6 HY5IjuzvgSjmo92SyO1FOx3Pzj+F3Bo7QzXF7kAkGOLlhjpoHeFsUQfm7dkDIAS3zbzZQZ kdzEEhr46dUOQtvTauSfnNDphJtrhISaD9OmmoKzjI1J4txcn9eV52lgr1VrqNf0UkcCn2 OchZn8Fy5DmAdO0OzTlRhd5sxDSBZbWOqIe4VCopfX4yIdP6r//KsVzdicR3q2dH2I0Xi5 q3/qQZdfOneFiIckB+DZiaPsW4BOSnww1gPUoEN8pIqClIpEEnRf1GAXzuEfh+JBumMv3X aXaoihteaAJRgN2+XaYZJdIu0mgnxjChT9R199ntjfkUlkoWdOCLvABlwJc/1n1s4oBXFR DYmG9viTEIcoCXYzRtCJTGr30F5muyoXdsBHFFH71fMoDZ7roS+LYHDdsE5a1BhU97V75o +dkR2SrbyqriNW2xlaioAR0s3wv+aDcuGq/Q2JIP4KSOUDC4tsvx4FQMmzkUxXQsvhAuFW rHXDIRYGwjX582fPCv0lXfiUSQtQEDRh/mxXyhCBio4O4B+vBjpjT2gaYGVQ X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:54:24 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 01/32] swim: Assert strobe with stable outputs Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Inside Macintosh says, "Be sure that you don't change CA0-CA2 or SEL while LSTRB is high". Unfortunately, those bits do change. The CA0-CA2 outputs become inputs when (LSTRB << 4) | LSTRB gets written to the phase register. Then LSTRB is driven low (with CA0-CA2 bits set). This is a problem because the drive interprets a STEP command as an EJECT command when these pins float high. This occurs intermittently, perhaps because interrupts are disabled and the race condition happens to end well. However, when I add code to step the heads with interrupts enabled, the disk always ejects. Keep the four phase pin directions set to output and hold their levels constant during LSTRB signalling. Introduce the PHASE_PIN_DIRECTION macro to separate the pin configuration from the logic level changes. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- Changed since v1: - Added the PHASE_PIN_DIRECTION macro to improve readability. - Re-arranged macro definition groups so as to agree with their descriptions. --- drivers/block/swim.c | 62 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 0ccc12a72388..5d89e7813049 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -87,37 +87,37 @@ struct iwm { #define iwm_write(base, reg, v) out_8(&(base)->reg, (v)) #define iwm_read(base, reg) in_8(&(base)->reg) =20 -/* bits in phase register */ +/* Bits in phase register */ =20 -#define SEEK_POSITIVE 0x070 -#define SEEK_NEGATIVE 0x074 -#define STEP 0x071 -#define MOTOR_ON 0x072 -#define MOTOR_OFF 0x076 -#define INDEX 0x073 -#define EJECT 0x077 -#define SETMFM 0x171 -#define SETGCR 0x175 - -#define RELAX 0x033 -#define LSTRB 0x008 - -#define CA_MASK 0x077 +#define RELAX 0x03 +#define LSTRB 0x08 +#define CA_MASK 0x07 +#define PHASE_PIN_DIR 0xF0 =20 /* Select values for swim_select and swim_readbit */ =20 -#define READ_DATA_0 0x074 -#define ONEMEG_DRIVE 0x075 -#define SINGLE_SIDED 0x076 -#define DRIVE_PRESENT 0x077 -#define DISK_IN 0x170 -#define WRITE_PROT 0x171 -#define TRACK_ZERO 0x172 -#define TACHO 0x173 -#define READ_DATA_1 0x174 -#define GCR_MODE 0x175 -#define SEEK_COMPLETE 0x176 -#define TWOMEG_MEDIA 0x177 +#define SEEK_POSITIVE 0x000 +#define SEEK_NEGATIVE 0x004 +#define STEP 0x001 +#define MOTOR_ON 0x002 +#define MOTOR_OFF 0x006 +#define INDEX 0x003 +#define EJECT 0x007 +#define SETMFM 0x101 +#define SETGCR 0x105 + +#define READ_DATA_0 0x004 +#define ONEMEG_DRIVE 0x005 +#define SINGLE_SIDED 0x006 +#define DRIVE_PRESENT 0x007 +#define DISK_IN 0x100 +#define WRITE_PROT 0x101 +#define TRACK_ZERO 0x102 +#define TACHO 0x103 +#define READ_DATA_1 0x104 +#define GCR_MODE 0x105 +#define SEEK_COMPLETE 0x106 +#define TWOMEG_MEDIA 0x107 =20 /* Bits in handshake register */ =20 @@ -269,11 +269,11 @@ static inline int get_swim_mode(struct swim __iomem *= base) =20 static inline void swim_select(struct swim __iomem *base, int sel) { - swim_write(base, phase, RELAX); + swim_write(base, phase, RELAX | PHASE_PIN_DIR); =20 via1_set_head(sel & 0x100); =20 - swim_write(base, phase, sel & CA_MASK); + swim_write(base, phase, (sel & CA_MASK) | PHASE_PIN_DIR); } =20 static inline void swim_action(struct swim __iomem *base, int action) @@ -284,9 +284,9 @@ static inline void swim_action(struct swim __iomem *bas= e, int action) =20 swim_select(base, action); udelay(1); - swim_write(base, phase, (LSTRB<<4) | LSTRB); + swim_write(base, phase, LSTRB | action | PHASE_PIN_DIR); udelay(1); - swim_write(base, phase, (LSTRB<<4) | ((~LSTRB) & 0x0F)); + swim_write(base, phase, action | PHASE_PIN_DIR); udelay(1); =20 local_irq_restore(flags); --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B47A3313527; Mon, 17 Aug 2026 01:54:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931679; cv=none; b=CcXhrGWDXu91N94ps5lZxbgRj4soG1lxnZ89uqw6BCW4BqtcwJXqkB/XXlYOFdkXn5oxeYS1WiU4sNDp5fXXSa7/gCe7WzTnShz9tsjuZBZH5ElUWWngRp1AAQvuFW2Tqg3hvoyuycfl6o6qTMCIvADLDLM1/jdzEywKo5AinpM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931679; c=relaxed/simple; bh=zLTL0XSX377Q5uxNjt9iEMwwDbPUSFjdEiz/iPykOT4=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=msnP8IErwzbn3TDhLOtu1UJCXkx5/NAkIXyueM5t46HBAmDkz+dpHAFB/btnSugLPCV827vw5B7vjWCxvP38Pc3udMrvuc7/JDBMCtqy9P2KuFDifCRmeTLT6Qoq+Cy2llNXXB4m8WTCIzeAXSoxiqiE31gH+EGecHCscimzLXQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=ccmUt68Q; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="ccmUt68Q" Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailfhigh.phl.internal (Postfix) with ESMTP id 0562F14000F8; Sun, 16 Aug 2026 21:54:37 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Sun, 16 Aug 2026 21:54:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931677; x= 1787018077; bh=6enK1e/BFMkuBg8+irnlLj0CqFHztSRmCrF0cLMxqjM=; b=c cmUt68QrFGdRPwHn6tQZ8ODpQ+8Iez3Xti7AQt+sYE8vDWvWSfprkecOytblx1Ng VEpzp47o49qYrqYJXAVWk+NUsjBc4drOraAH1QagDc24i7cFdeUKqBuCF61FiN3y stIVg9PpIbWLS4qOJSxaMdpY7EEDsApDmzel8rp9yHzDLPvhoksxWgCJ4ZANaj8b ijd9wnVGgMR46ZHNgrxa5rewxsJr+EJYMAEKoQidPHG6eKWm2YbxQf0sZU3f7gNz nUQt0KO62kQeNotVOJs6XbiQynUTDGK4YVhcj+IUkQdtcoUdeCd+qy6gvbdJ8oGD HBsjaXmhSAr0Cfv7QqseQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTE4hc50xdhPXg/illULTp+C8DYFyqEdlu6WRFncsb6QnuuT/gcUnwV28CSittpzBY CanXMgLJ3D2f99+6fhcgPhKU62j4D/361qP39o0jreF8A1XJd9tbHbTT3THo+0Ngxn+KIR xmSykI00CRbwgNWRv8pmFJk9w9o4Guyae/9OdRSlW4+G/cXS4TLBuEOOa7VrQ1zx7uzt0k aiRQ8f78TROqGsNBFEeFBQ0S+1oq+UQzE0LFPz+xu5GHoHcx5q9+AQ38+8xzR6IOKHtWR9 dd2Vu8AeIxRK7b1SVEdgm5fqxWGAl0hW++r8vV0P6QNaTx9jFo8LB1mZXd3D6ux6m/Q5nJ 2V8/AeMgpE1uL7O5Xzeuwofsai0nR7KOW61a23EwoI3IQ4xylk4XZKkETDkcfU2Ln0BCmw oB3yijbdkpGCVS60IfhnXMVRjf4mksml96udoxalV+zAinioyrBBw2nhCQgQARSzXboTiw FwIVFx4G/eUWYlpYR8dHEj8HN6CiyMSk6d91rE5fA3LNDt7ZC46LgKf9rS1XftewQEE5z7 dL/VCUV+qH1y8h9wi9posM6+m8ko269Ik/5Jr1PuRxEmuwcOH2xnygf9ibqerwYD+A07rM RCI4KXy1HSj7KfsejzJLA1i7vU688CY2akbGRKrz2Zv6Vt3uAD79TAafN6Ug X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:54:34 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <26581501013da0b5174d0108d0a552675de5eb61.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 02/32] swim: Select appropriate drive once only Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Before turning off the spindle motor, call swim_drive() to select the appropriate drive. Remove the swim_drive() call from swim_add_floppy() because it was already called by swim_floppy_init(). Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- drivers/block/swim.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 5d89e7813049..4721e073a874 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -679,8 +679,10 @@ static void floppy_release(struct gendisk *disk) else if (fs->ref_count > 0) --fs->ref_count; =20 - if (fs->ref_count =3D=3D 0) + if (fs->ref_count =3D=3D 0) { + swim_drive(base, fs->location); swim_motor(base, OFF); + } mutex_unlock(&swim_mutex); } =20 @@ -752,8 +754,6 @@ static int swim_add_floppy(struct swim_priv *swd, enum = drive_location location) =20 fs->location =3D location; =20 - swim_drive(base, location); - swim_motor(base, OFF); =20 fs->type =3D HD_MEDIA; --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C79CC31D730; Mon, 17 Aug 2026 01:54:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931690; cv=none; b=qDzaxtbocC250dOdvHvxXbPZ4wuYUJkTOkBGxY+GgGsDfPt2TxsUpkHUak/kJtJ8aZ1gPUe2fsqvL0ifPmWI9WtGcJwa8e89azCmiNxrV9Oz9Wc6U87cOhAFFp+LU1xz1RAFQGHx8Ga0goXLCWdGfJyy4244jFsYUYohsIXWFNs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931690; c=relaxed/simple; bh=TRCASMM7eelgWS4DcL5aA99Epa/8OLjxiXSiA4njPe0=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=I8gW3dcDydZUMRxpeLDZ2xiWTLFqwI78tj8oClZuHa8anJJ6RoJjwQjikxeKrW2LW7i2lcnwCSrK+dw1N2m+HNzF4szwxSbc+RNlYBigaWLHCg6GZEgfivs3JPKA/tvdXxIUqTV+wZEAfouSzat08Sk32iO2chV6PgNHWwjEyXU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=dchVLJ/m; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="dchVLJ/m" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id 11A19EC0218; Sun, 16 Aug 2026 21:54:47 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-02.internal (MEProxy); Sun, 16 Aug 2026 21:54:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931687; x= 1787018087; bh=RppOGoUsMSAGAcgwd3QV2Wk6AOZv4y+7OKDIjYynE4A=; b=d chVLJ/mUha6YoQvZLZ9zIiASkesdKXZbl2YPDTUjSUPeo+HXy82VCHwi3Kn2e2fB vWaOm389zaHBmAG1fUQFwyNXeHdBCs0N9DkUZ0LdFPhPi6elYIkTYcyGU8pmTdGf h8fVAC+JNa3xiM+fU7TYzzPeTtl5yJGCyEHg8KobJ+EW7Asc1+m9YVwH56zhdJ/4 wdFKQ6kmvH1+S2zqegEAZIcTg5c/36FF+Da3pfllnJmGWBGtZOCmD9BYoK9IQU95 M04v1851GlHh03s3AkNCPgnTHkYgPM4jXI1Zums/KRNzD8YUAx2NgvDL3qWPG33n 8s1KGTNni1xBYpVxwluqQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTE4hc50xdhPXg/illULTp+C8DYFyqEdlu6WRFncsb6QnuuT/gcUnwV28CSittpzBY CanXMgLJ3D2f99+6fhcgPhKU62j4D/361qP39o0jreF8A1XJd9tbHbTT3THo+0Ngxn+KIR xmSykI00CRbwgNWRv8pmFJk9w9o4Guyae/9OdRSlW4+G/cXS4TLBuEOOa7VrQ1zx7uzt0k aiRQ8f78TROqGsNBFEeFBQ0S+1oq+UQzE0LFPz+xu5GHoHcx5q9+AQ38+8xzR6IOKHtWR9 dd2Vu8AeIxRK7b1SVEdgm5fqxWGAl0hW++r8vV0P6QNaTx9jFo8LB1mZXd3D6ux6m/Q5me THjWiT+VMA1Ltq4sOgLLJoLEWYhvba+VQFstjRHuyHcmohW5XCOM5uwMnpQff78cE2NPG2 opFKy+ubeYWiVqVNcl/2wuI16WaAjkHJP3OTQXXM74hsSZU9UxJm5+xr2wgubPkQJR8jpN MFEsb3RNYAyQ5Y7Ys72DCWbkEXLyPWim2XHdlcHXCezDqJndO8W//Rht5Q9aVBxKaGK1hp O/7i5tu0GCWcYwnSyrmamVekAMEqP6U+NNsgpqUiOETDqK8plaGtvkdYbzH96kHTbXLb1B 0jT2QYcA7FQPdJe9BAOfGDSCDL9x3t/HcwWa/LjKYrrv/+3uw8BWHWzyTw6A X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:54:44 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <4e4872708c26a128962a9a2e08fd364b5a8319cf.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 03/32] swim: Enable the drive when probing Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" According to the ISM spec, the MOTON bit "causes the Enable 1 and Enable 2 signals to be turned on to the drive." It doesn't actually turn on the motor. When selecting a drive, enable MOTON. Disable it upon eject or release. This fixes detection of the Sony FDHD drive. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- drivers/block/swim.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 4721e073a874..4ddb87977fe1 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -154,8 +154,9 @@ struct iwm { /*------------------------------------------------------------------------= ----*/ =20 enum drive_location { - INTERNAL_DRIVE =3D 0x02, - EXTERNAL_DRIVE =3D 0x04, + NO_DRIVE =3D 0, + INTERNAL_DRIVE =3D BIT(1), + EXTERNAL_DRIVE =3D BIT(2), }; =20 enum media_type { @@ -311,9 +312,15 @@ static inline void swim_drive(struct swim __iomem *bas= e, if (location =3D=3D INTERNAL_DRIVE) { swim_write(base, mode0, EXTERNAL_DRIVE); /* clear drive 1 bit */ swim_write(base, mode1, INTERNAL_DRIVE); /* set drive 0 bit */ + swim_write(base, mode1, MOTON); } else if (location =3D=3D EXTERNAL_DRIVE) { swim_write(base, mode0, INTERNAL_DRIVE); /* clear drive 0 bit */ swim_write(base, mode1, EXTERNAL_DRIVE); /* set drive 1 bit */ + swim_write(base, mode1, MOTON); + } else { + swim_write(base, mode0, INTERNAL_DRIVE); + swim_write(base, mode0, EXTERNAL_DRIVE); + swim_write(base, mode0, MOTON); } } =20 @@ -447,6 +454,7 @@ static int floppy_eject(struct floppy_state *fs) swim_drive(base, fs->location); swim_motor(base, OFF); swim_eject(base); + swim_drive(base, NO_DRIVE); =20 fs->disk_in =3D 0; fs->ejected =3D 1; @@ -652,8 +660,10 @@ static int floppy_open(struct gendisk *disk, blk_mode_= t mode) else if (fs->ref_count > 0) --fs->ref_count; =20 - if (fs->ref_count =3D=3D 0) + if (fs->ref_count =3D=3D 0) { swim_motor(base, OFF); + swim_drive(base, NO_DRIVE); + } return err; } =20 @@ -682,6 +692,7 @@ static void floppy_release(struct gendisk *disk) if (fs->ref_count =3D=3D 0) { swim_drive(base, fs->location); swim_motor(base, OFF); + swim_drive(base, NO_DRIVE); } mutex_unlock(&swim_mutex); } @@ -804,6 +815,7 @@ static int swim_floppy_init(struct swim_priv *swd) if (swim_readbit(base, DRIVE_PRESENT) && !swim_readbit(base, ONEMEG_DRIVE)) swim_add_floppy(swd, EXTERNAL_DRIVE); + swim_drive(base, NO_DRIVE); =20 /* register floppy drives */ =20 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79F2B313527; Mon, 17 Aug 2026 01:54:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931699; cv=none; b=OOt8cNcCfGjtmUGMaIvuQab/VbxctgS5NXIj4v0+3EwXPv4taycbvTmqrC7aB0E0nk1IHSRVFHU2+A8Ui+IOZncthA0hcAtGFI0WaaPnVZEiIhqZGqQ+wHzjydrV7+IfEJJbY5sQMWhVJgc0TmRLlF2s+6MABxqLrZAZFzaYdBI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931699; c=relaxed/simple; bh=6osIxefW9WuJTL+x/nXswa0PPTDUDWFo8rRm7h//FJk=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=OcDVehwYYgjmROrPdcilsu7/kLW0Dv0qN5UlxMgmSGtSkQreus1ssJEmyMqMXAcGEMYGlTAhHCaF1ULgZOxalWeq65E6GuM/Ud99S9s9SgkMmtpAUNJCPH++5OD6HktE38rfSS3vp1Cn6uoWPsgxFGfKp6WmDqbyc4DpfUWHJTw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=X3sOoUFC; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="X3sOoUFC" Received: from phl-compute-09.internal (phl-compute-09.internal [10.202.2.49]) by mailfhigh.phl.internal (Postfix) with ESMTP id 7FC6014000F6; Sun, 16 Aug 2026 21:54:56 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Sun, 16 Aug 2026 21:54:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931696; x= 1787018096; bh=gDu691Ym/3Wgf1jg+44n93Um7djI9WASUBUmb+nUwCo=; b=X 3sOoUFCqBbXbJljD18Nt4h8kcZmDCyLto9zqCZt9ktsd61/4zAJpbgrWNFLJm5A0 vnQ3o0KvXVysTtpKXrOU1qXrwQsJJzC7uJc6u9ExWn/m1y5OHuvJJbLbGnqnWr/S 3F1c5f8+lu2SZ/0GvFj/SEgHNKsH4ptXx/LqyCV3v28FTHP61PA2KXZaAoHQ4IKe ruY5d0WA7uX7JQRxEmJdiv3CjvAjT8A9Iu+4FqXNmde9IDOIwznQc84XuySzQGNp BUF3RHGv9jjBqiYFI6Hod3tj0f14fy3F2xkADduoFQcfKupSmuPxIxnnHydtwV/j 5OjdhOqmheqo3qQmh4sfQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEcdm/H6lUz/GNYCURxrkCd1HPfYRd3zhai/6cdZjeenE7g5xoDzlQAxk+7iMQq6v xV9q7s5fsS3/JQzvNsjwyK/4cWW065gbm2GoN84iHcVNvAdCqKzmKSHTb8iEr45WtpyqeY cz4yU9C9Fo2z94qtPVV3dAzmSvJhNew7HqXMqftu0soscmI1GAdFoXf04kdvALh7XeUIuU Tuk2XE2OeIJdmWhM+PiCh0JMVi0kltBn7CwQl945VNkrHoqGgbuYhi8WoWtxLKIumeRTK5 /WtK4yCHPyxyd9XATZrYk7BUHibsQzupfidfoh//hSLpDEkVyPVHII4Kj/fp06fOz7jSp6 vWsM4bQ3x/w4dQc5SY81sHuPFYdV0oIiRdjMxw8VV+o3oUBazBqyFDMhbdFPrTzDea9kuJ 3WOVcZ7m5x25Z9IpJi3KIJMwaOYUPpPtJENmcgfCmrwdBqv4VRCTSkBE6oLuNF4AcD0pxm sW5mSnZptCuidOFTw47xs8gEaZ361yx6pXo+B5n9NHn7inAzIQor9UF5DzfwAkR8ZzYQ/S s41DN1o1fqnOm/LEHzilFXR20ism9JIISz2PKSrlAFidMOgmhu2vWlVM5PdJ0eEGtUL9nJ LYgymdRUjbLdLz1O8UeY7gMiWzXR+SKGwP57yMDal2IlAIq3QVcWoR4+gfXA X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:54:54 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <6e352470eb9a56b20336f94d93b4c46ee3c18afd.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 04/32] swim: Don't disable drive after every sector Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This fixes multi-sector reads on a Sony drive. The Mitsubishi drive doesn't seem to care either way. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- drivers/block/swim.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 4ddb87977fe1..3f92677ad127 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -473,8 +473,6 @@ static inline int swim_read_sector(struct floppy_state = *fs, short i; =20 swim_track(fs, track); - - swim_write(base, mode1, MOTON); swim_head(base, side); swim_write(base, mode0, side); =20 @@ -490,8 +488,6 @@ static inline int swim_read_sector(struct floppy_state = *fs, } local_irq_restore(flags); =20 - swim_write(base, mode0, MOTON); - if ((header.side !=3D side) || (header.track !=3D track) || (header.sector !=3D sector)) return 0; --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A99F81A683A; Mon, 17 Aug 2026 01:55:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931712; cv=none; b=G8SePgeGS59IW1igKlIfi1yKQVVRPaM9EswrwL6Ew6Vo07XJARKPV0NAeXyEpArbXxCl7EDymuVKTBvkSqAynBG58tnclVHtWrvD2Y0n9LiIrthuxbuOLE9IjgXbhpJdBUwY8pAehfaBYYh8qYVEMTgHM0XOkrZDWY6N7bRYpPo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931712; c=relaxed/simple; bh=y2aq5s8D/L5khZxRe/cFjwbxbHS1B0FaloGAs2bTUlw=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=huuPnOca2P6MDnm1uVYyRFwGozXyqiBNWh9yaKhsilctx9tcubmDhAkcO73E/kxX2rF12jitMKOSLt0USKgX5CQjUw1tn4wxVHDG2A/LC1cbDbcrvQviPttFoN+ZYgeyOrWdGSwHPMOJOxFd9cNKiEwX3bhnYwygu9RgC9JRXxc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=D3TsYzBQ; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="D3TsYzBQ" Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailfout.phl.internal (Postfix) with ESMTP id 4F818EC0217; Sun, 16 Aug 2026 21:55:07 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Sun, 16 Aug 2026 21:55:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931707; x= 1787018107; bh=0HLz2220nu44BKt2ov/hAQqSq0Y4djEeSPVWO+Yzb0M=; b=D 3TsYzBQaaGUbYAH7BJfMFzo7uSs/8igaRXjSecBc9lFXo6agtlidti//moY0ya6G ponbhQp/xIcFbLe8Q86xqm7vnKqiZHqv7zm+xFFL72KkRK5L2bOTFgors2KZUM0J u80W6cAkYaQ+XQE0+Br2KiY2dbb76vhLUqqx+3s8ulFDvvEzrH9k3BsmddIu3/Nn 3Dm0fwag5tVN7VkInjpzaX2PXFYZFYwZncQEsIrrxvv38PGck+oLkMGBlkYQnGQI UCbTPw0eSA7cMkf3GN01ltOFdyLu4f4rB21ZFecHByM6rm8zw8IQe41y/bhHMRwx gNmzS4hi+KAPoP0NMMAOg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGNmzENqalxDTfCkkFc7mFU+8/8u51l4usXC2H+kPVL/IH2s2NYJxgIYjtBYtArJA YWtyuDuajqQPlQd9d39HppQGgAciKWsN5vaSeS8TTvkVHVx1RLPosXGbRFJQPSd5BLLYVy eC1VIy4/prdxHqOKz9F9XzgS4LWYfaliKe2CMViR9dDdyGPbLM90F38TD9YW2MkJ0tIv5F Ml4DBCJ2CjSI2ieswFMFy7Ro4IzVcMw8i8Or1S6KLLExG4iRUFFS7PoCzWwG3m0EJF7GAr uN2VwdTVv1tA6XFTaF1EIrNDccscfKI9P6vDWUSZluIhB0JYi7lhYJmYYZKiGnpyDh4knY wsfHphzCC1qYfQUHzuIwXxXBvEqyDEkW5YeX+6pYP8VMNR/hBkKjCdkVRB6+zfG91XhNkC n9gbgHbSh/ZmultLMvQBWYtboa9CCSlbPqEJdxQPlqiJAm6RjGcP6KQdunB1Cf4B074rYW q+y0eIjjtM6loReTpoC1HA9meXym9K0/Z7SpZ/Pk63NHYC+2cwlJ9v2prbuF0jF9kNaBqB ItsqRXOS9YeZpVi6vWyKPvUpf392JZaKKnAQGs12BfdZMSRRYgRmlH69phM/PprmTDzb9K p64g+9ME+CUsWeWXl90204qeS8LIDAIl1jcrqB6QecFvFALMLMjc7ZxQNOAA X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:55:04 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <873207193565455585f3116bb0d4ce95b600ce3e.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 05/32] swim: Perform ISM/IWM mode switching according to specs Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The SWIM spec says, "MOTOREN must be low to switch modes" and "after switching from ISM to IWM, the very first command must be a clear L7". The ISM spec says, MOTOREN "must not be cleared until after the Action bit is cleared". Perform those operations in the correct sequence. When switching to ISM mode, the Mode register has to be selected with a particular sequence of bit flips. Set q7 low then q6 low then mtrOff. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- drivers/block/swim.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 3f92677ad127..190b2e1b5b0e 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -149,6 +149,7 @@ struct iwm { #define ACTION 0x08 #define WRITE_MODE 0x10 #define HEDSEL 0x20 +#define ISM_SELECT 0x40 #define MOTON 0x80 =20 /*------------------------------------------------------------------------= ----*/ @@ -223,18 +224,21 @@ extern int swim_read_sector_data(struct swim __iomem = *base, static DEFINE_MUTEX(swim_mutex); static inline void set_swim_mode(struct swim __iomem *base, int enable) { - struct iwm __iomem *iwm_base; + struct iwm __iomem *iwm_base =3D (struct iwm __iomem *)base; unsigned long flags; =20 if (!enable) { - swim_write(base, mode0, 0xf8); + swim_write(base, mode0, ACTION); + swim_write(base, mode0, ENBL1 | ENBL2 | MOTON); + swim_write(base, mode0, ISM_SELECT); + iwm_read(iwm_base, q7L); return; } =20 - iwm_base =3D (struct iwm __iomem *)base; local_irq_save(flags); =20 iwm_read(iwm_base, q7L); + iwm_read(iwm_base, q6L); iwm_read(iwm_base, mtrOff); iwm_read(iwm_base, q6H); =20 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 41A34325494; Mon, 17 Aug 2026 01:55:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931722; cv=none; b=uMFzJUgRv9S9KrJdkvgIOZx17ksMfpKPtN0cO3jCTJGbC95M9+nPbYhKX9nVR+5+1tXLcuyeb49Nsxq+tPmZVlky8WHQB/Ywv9kS2T+LDYU1D9Zenc4T0M9mAoJSqAlhw905jmbntIVTaEkzik+k5U2SyWA/eVTnarkjiBo5hI0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931722; c=relaxed/simple; bh=aJKOZOWoXveCddxLIqL10UrkhvVmgi/l2ePVG1uejgU=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=RSX/fhd8q/sxlZIhAskSMCHcXS1MhzQySulsznjsteSMzaWEPHcbJrhl66RVDxQ7IH2fAl2NrmmFclvVpH9cOZ5sYp0lZkYZCWEN+76vJ1iyiD9Qb93kgnOOTIXSQzBkkACJwElH28YAv/cKWpP4avsc1VIoXbWYjYKj9R0oSCk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=hu5NZrEH; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="hu5NZrEH" Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id B84831400031; Sun, 16 Aug 2026 21:55:16 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Sun, 16 Aug 2026 21:55:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931716; x= 1787018116; bh=xUoVj+IinLNg7uHC8by8czUyQwiMCVAzf8OSJGcKYhg=; b=h u5NZrEHRUdVkh6FxSz83zb2kb6WgXwaWgnFpbLrmuBVPh4iZdjn57pGn8Jf+UD+g LnliotZByGKPmlREzUoQLl099l5dCgl9aFeI0mHfkskQiFHkfWa7Y/sZ1AeKkRB9 WXpkOPG14ZXg55oxhMIDg2GkzVk1sVA5p3U8khAEZk9JSy8/08BHm8IXKnSKRouv 4ePCkNeHvNOpvk/wLSI+ZxIXPbNkuLsItqmHgJGmcIZMRDLH+pfkv6NGQnJvUMsa gAnpNHDFNswjlQLy8tDeH4m+7cn0T2FbEYGf9aqoiKjmq88nVKgNqHmUpFjVxWGI 0E9//5Eh16RvdDon73S7A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTE4hc50xdhPXg/illULTp+C8DYFyqEdlu6WRFncsb6QnuuT/gcUnwV28CSittpzBY CanXMgLJ3D2f99+6fhcgPhKU62j4D/361qP39o0jreF8A1XJd9tbHbTT3THo+0Ngxn+KIR xmSykI00CRbwgNWRv8pmFJk9w9o4Guyae/9OdRSlW4+G/cXS4TLBuEOOa7VrQ1zx7uzt0k aiRQ8f78TROqGsNBFEeFBQ0S+1oq+UQzE0LFPz+xu5GHoHcx5q9+AQ38+8xzR6IOKHtWR9 dd2Vu8AeIxRK7b1SVEdgm5fqxWGAl0hW++r8vV0P6QNaTx9jFo8LB1mZXd3D6ux6m/Q5E8 uvWxtEZoMMZpY9HdayMAGqzvF1TB8jQUKNoq7nonerJPHLCssG+6cKFubfqrIQ+G5BM2DO kg0vMt7oUM8RSfRu0O9geTe23mDtykPQYBa8U134dxB4mXsvRwdi4yp9+JZe4egRihEyu9 nTasSenVI0H5uFf4zL5NDqkc0TIICcNkXlZMWuBTZWRqVzTza80XAIiqv0hPYoTdXHSt2F Ml/d/u2iMIuOv7adwFj+rpE1yf3cJngh4thUTK2pN6YkrPvGEggDIFjV0uq71kUrBSntmC ITP4A0Uw/RHWj6U3n2leNNKCep7Emfe3JfU1eJqis+MuyoZ8nsd3VFNXujNA X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:55:14 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 06/32] swim: Configure parameter memory Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The original SWIM chip has a 16 byte memory to store parameters which control read/write timing. The SWIM 2 chip retains the last 4 parameters which control write pre-compensation, but omits the first 12. Hence SWIM 2 can perform reads without any parameter memory setup but SWIM 1 cannot. Configure the SWIM parameter memory with the appropriate values so that SWIM 1 can read too. The parameters used here were observed in SWIM chip memory, using Macsbug, while MacOS was reading from an MFM floppy disk. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- drivers/block/swim.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 190b2e1b5b0e..c2d7ad3f065c 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -796,6 +796,17 @@ static void swim_cleanup_floppy_disk(struct floppy_sta= te *fs) blk_mq_free_tag_set(&fs->tag_set); } =20 +static void swim_set_parameters(struct swim __iomem *base) +{ + unsigned int i; + static const u8 mem[] =3D { 0x18, 0x41, 0x2e, 0x2e, 0x18, 0x18, 0x1b, 0x1= b, + 0x2f, 0x2f, 0x19, 0x19, 0x97, 0x1b, 0x57, 0x3b, }; + + swim_write(base, mode0, 0); /* reset parameter memory index */ + for (i =3D 0; i < 16; ++i) + swim_write(base, parameter, mem[i]); +} + static int swim_floppy_init(struct swim_priv *swd) { struct queue_limits lim =3D { @@ -805,6 +816,8 @@ static int swim_floppy_init(struct swim_priv *swd) int drive; struct swim __iomem *base =3D swd->base; =20 + swim_set_parameters(base); + /* scan floppy drives */ =20 swim_drive(base, INTERNAL_DRIVE); --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CCF20319601; Mon, 17 Aug 2026 01:55:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931733; cv=none; b=fxqRoI/itfxCM+h/gD7UxYPC9Cg6eiF6h4/Rnm+6lG48bBu4LS7riuTzUFEU4vb1NfArPU4quZl4d4e1sEPyp71zZCrjWcX0Z73G6ZusdkPjNImpfzwVqgPZ9feZag+mZEArNZx2eSQJnB/8N4Ypvukfst83pja20LbKP9P3su0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931733; c=relaxed/simple; bh=OGJprNUbnOVm7FXYJuR/t71hmh8wpnE5/IGNNpjmDqU=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=fLEvrerSRLAO45WgtF+iohB2fLLbMvGOUkoccziO4NP6rVL08q0lkQBYnvBnZ2+Mt+8Ousrnua+MNZN69XHWn2bJsGXncQbJc/LzM3OmeUVh1wBIaV9yQtPoGYCu0XJoEgS4PJw2FzuA+p/Vymql5FqvsOPrgJ1qC8gT2ldnaes= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=dz3RIM7e; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="dz3RIM7e" Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfhigh.phl.internal (Postfix) with ESMTP id BCB1E14000FB; Sun, 16 Aug 2026 21:55:26 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-03.internal (MEProxy); Sun, 16 Aug 2026 21:55:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931726; x= 1787018126; bh=j/FDfXXuUbpthgBP/bWV0xdeiffmbGuM3aGx/1Q1gEQ=; b=d z3RIM7efpe+iW2FFtBmicZo3ceMKZkpeDLuHpYxwJNejGawU1FOXsbslzV6paKP9 CqabtPuSRxwymbtpsItVpgMaSwaJqsEwj9PKrD48uaAtUHq5fRWzOSV916Mcy1Ct QnkQ0SGiS4Fam99cnH5R9Yrw6JcuwozQRVxrtOJt1GyNEoFO5F64GcX0Ey6bmr7o VHG/Y0JIy8MvBlSQXevFWObqprl88ryx3hj1KvZ3Jf40w/13UOUE4Mu2338auhKR rTjzbuJEMiW6YpzJj8PQFFl6ciNTvooVQ5Hsv1I1qb/camPfWTj47ro7neIu4lWE HpbKNH03oJyBnBPcvt65w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGGfSHbL2fI02qi3PxN23Kck6mI5WuUw/IvRcvpbY119ewffFmgrLaJZrOewmv0V9 +yVjmNFRAF5v6NwN93pp2/ef5Xe4c3LI9irOXMRuZYHRPaDMJE6WMter/2+BypR/48/QT6 HY5IjuzvgSjmo92SyO1FOx3Pzj+F3Bo7QzXF7kAkGOLlhjpoHeFsUQfm7dkDIAS3zbzZQZ kdzEEhr46dUOQtvTauSfnNDphJtrhISaD9OmmoKzjI1J4txcn9eV52lgr1VrqNf0UkcCn2 OchZn8Fy5DmAdO0OzTlRhd5sxDSBZbWOqIe4VCopfX4yIdP6r//KsVzdicR3q2dH2I0XFc 2AIk5MgcQih3StdVHrsCyxPvCofzkcyWqZXh7o3REXgnakbHxKyNt9puAD/TLNkkJkcgDl 9tPKNPr4498ClPIipqW+17nukpnW0tnZE0PSklFa2qiFsMEn9vHfRNLZIqMKJzN4iAud3p fRV1P+FAEN2yPZGsCVbSyH2m1HCObIQPYW7fjrXIycs4szTj0fqoDu7mekjXoG/OfO9ONV pfzzbRcbi8i5zKQI3pyEHrIjcmjCXOlR+JSPqN3tQk3BxRAwa5z6IbDUirSgQ/JwddqHZC 7RwjWOKisw9eHetC84ZOkAXZLpeNxZck1mZH5LBocXYTYEdkhXQbueTpDjkA X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:55:23 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <1e349506a7cc6aa574aacbd4c69c240b5a1e3eb8.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 07/32] swim: Enable clock divider only where appropriate Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Some models have a 16 MHz FCLK oscillator and others 32 MHz. Put this information into the swim device platform_data so that the driver can correctly enable the clock divider. When this is enabled incorrectly, nothing can be read and failures from the Error Correction Machine are flagged in the error register. This is chip initialization, so do this in swim_floppy_init() rather than floppy_open(). Drop the udelay() which was apparently copied and pasted from swim3.c, where it relates to interrupts (of which this chip has none). Cc: Joshua Thompson Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain Acked-by: Geert Uytterhoeven --- arch/m68k/mac/config.c | 31 ++++++++++++++++++++++++++++++- drivers/block/swim.c | 11 +++++++---- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c index c0033f885ed4..dba3de21c3c4 100644 --- a/arch/m68k/mac/config.c +++ b/arch/m68k/mac/config.c @@ -984,8 +984,37 @@ static int __init mac_platform_init(void) .start =3D swim_base, .end =3D swim_base + 0x1FFF, }; + unsigned int data =3D 0; + + /* Models in this list are supposed to run FCLK at 32 MHz */ + switch (macintosh_config->ident) { + case MAC_MODEL_CCL: + case MAC_MODEL_CCLII: + case MAC_MODEL_LCIII: + case MAC_MODEL_Q605: + case MAC_MODEL_Q605_ACC: + case MAC_MODEL_Q610: + case MAC_MODEL_Q630: + case MAC_MODEL_Q650: + case MAC_MODEL_Q800: + case MAC_MODEL_P460: + case MAC_MODEL_P475: + case MAC_MODEL_P475F: + case MAC_MODEL_P520: + case MAC_MODEL_P550: + case MAC_MODEL_P575: + case MAC_MODEL_P588: + case MAC_MODEL_TV: + case MAC_MODEL_C610: + case MAC_MODEL_C650: + case MAC_MODEL_PB190: + case MAC_MODEL_PB520: + data =3D 1; + break; + } =20 - platform_device_register_simple("swim", -1, &swim_rsrc, 1); + platform_device_register_resndata(NULL, "swim", -1, &swim_rsrc, 1, + &data, sizeof(data)); } =20 /* diff --git a/drivers/block/swim.c b/drivers/block/swim.c index c2d7ad3f065c..597d35b514ae 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -628,8 +628,7 @@ static int floppy_open(struct gendisk *disk, blk_mode_t= mode) fs->ref_count =3D -1; else fs->ref_count++; - swim_write(base, setup, S_IBM_DRIVE | S_FCLK_DIV2); - udelay(10); + swim_drive(base, fs->location); swim_motor(base, ON); swim_action(base, SETMFM); @@ -807,8 +806,10 @@ static void swim_set_parameters(struct swim __iomem *b= ase) swim_write(base, parameter, mem[i]); } =20 -static int swim_floppy_init(struct swim_priv *swd) +static int swim_floppy_init(struct platform_device *pdev) { + struct swim_priv *swd =3D platform_get_drvdata(pdev); + unsigned int *data =3D pdev->dev.platform_data; struct queue_limits lim =3D { .features =3D BLK_FEAT_ROTATIONAL, }; @@ -816,6 +817,8 @@ static int swim_floppy_init(struct swim_priv *swd) int drive; struct swim __iomem *base =3D swd->base; =20 + swim_write(base, setup, S_IBM_DRIVE | (*data ? S_FCLK_DIV2 : 0)); + swim_set_parameters(base); =20 /* scan floppy drives */ @@ -930,7 +933,7 @@ static int swim_probe(struct platform_device *dev) =20 swd->base =3D swim_base; =20 - ret =3D swim_floppy_init(swd); + ret =3D swim_floppy_init(dev); if (ret) goto out_kfree; =20 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 59B363191CA; Mon, 17 Aug 2026 01:55:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931739; cv=none; b=AsYywLM7Un7KMj4ZGxaNIVAfZZMLtcL3+GMx7/Az/xuVsvNpXc3eIGUX5cJkv1EnHPscPBgClwfJpmeOWDrbFn4I4mHZh6S6DHsQ5J5JgylLTdcpoCB6Np+GGE/fvfz9yAh5jJNc6E/1kZOHR+q+EHbba1w8MFanolvT3HNqrEA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931739; c=relaxed/simple; bh=S1sf+qp2cfbd5jdyPBAYCV1TXRpG2BraGxB8OKUlyyg=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=saptAuOBpocZUVEHxPKtiX3kxcDLEYCZQwNHhZr80ebXHrew5fLMUNl1L/CXDPxSD8ZdENOKEeiYXIAWCe1fWfuFjEMlDTCn1NkMZ1nPZDF6Cg1OTOq2Vs4SB4dFMWEgYaDw2jzgWbyyF82rhQPKZU//qQeF5qK/EBUzmAf6dt4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=FtgHaTr3; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="FtgHaTr3" Received: from phl-compute-09.internal (phl-compute-09.internal [10.202.2.49]) by mailfhigh.phl.internal (Postfix) with ESMTP id 81C091400031; Sun, 16 Aug 2026 21:55:34 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Sun, 16 Aug 2026 21:55:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931734; x= 1787018134; bh=4yvBgc+qb8743FNY61Gm5FcK+guiDG29W6nQ43Sr1EI=; b=F tgHaTr3OMSZ+/IIBS/rEVdpkb5YnTeubJcwu7OY0XnTav8a1xYKQE4X2EVWqgLmU egHaMRnnFF380sNXbdLofsIh2kl8Bzy2NsMHcpI9ZE6yosQHosuJl1yGrV8IXF+L Ue/PcLLZmOk/GxXWK5HYNguX17j1dtq8WNc/f/gKMQFgUEXmK7fzY7LPprEfk/DR YpvpTy2JSSpZ6ipn5o/H5tIRj/+uLblFrbMO7w1pco8ZmAy2anoct0N/34qRwpfd tsbAHe0bonxtoD03wUvJin2qGORXXajAcvX+3vtsJenwWQDy0dSsHeH9lV9aUCxh jOL8Av4/wOOe4t7KglYJA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTF0XGH9Ku30QOcJ/py44SYsAHBZC+nZ6S/oc7Lex+CsVR7e6BZwqiO/qVaqwTWIvD 64Izcr6es7UWc5BGbJN03fhKWWyiPBFiMkbiDvWMmr8t4+OUp9BrICuXQGnQldC1yEIjOR 5t6EQH272qgzgNfs1q8lDoRRAh4GGxpsE7a/741qnRIR6CUIfv/BaLYhBhLAoUYq8/vFwA EbOOSWWe/L/sSe5PAI9n1zEJyjsLIcbPhV2+j5H/KVBpIA34MQNUJoG+EKAvosPWgPNZtG N2G5UmAeDmLNKm+wrqAkHHl7AWNtEHAtpP51c3XmBHXBamdFo3ht5Sj19WDQmKiKzBi/Pc nsQrg00QR5NVRYYL+iAmjGELmdBoEH2fS6sMkJFbNQXnsk8YEovuV7viLjWGnlFdF3C3if xVUhFnY1l/elWT2a4+xVkzCnSQxeQTuC5k7JdxCrkwrBpTEAc/g6p4nbAvaljP8JC/f1sx uYLSf0f1ZVQX+faxxeGJHLemglaxlCP/lhPTb34lOhI1Hp3T/AxyM7j+tCDAuVSHESoN5I n+okFgvdtgGO9XZRX8k3a5blhtAI+HfQka166Fg0LsLHo8uzGpQ3ncyrSG6dzTJNqlvwo2 nXUdkyZvKaPSXXqrXe2FmfcvQn0ISwkVuhuL5phToknL5W3woBrOuN/zgz4A X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:55:32 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 08/32] swim: Don't start motor until medium is present Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The spindle motor should not be running when a disk is to be inserted. Don't start the motor while the drive is empty. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- drivers/block/swim.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 597d35b514ae..6a49fc51f5d2 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -630,8 +630,7 @@ static int floppy_open(struct gendisk *disk, blk_mode_t= mode) fs->ref_count++; =20 swim_drive(base, fs->location); - swim_motor(base, ON); - swim_action(base, SETMFM); + if (fs->ejected) setup_medium(fs); if (!fs->disk_in) { @@ -639,6 +638,9 @@ static int floppy_open(struct gendisk *disk, blk_mode_t= mode) goto out; } =20 + swim_motor(base, ON); + swim_action(base, SETMFM); + set_capacity(fs->disk, fs->total_secs); =20 if (mode & BLK_OPEN_NDELAY) --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6978F31AAA8; Mon, 17 Aug 2026 01:55:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931746; cv=none; b=jWIrCJCWRwX83/UcmtffFZBQhHBZsfnRJKntHEb/dQHzyYLSDhpJaGpv3s9OK4nIXdkP70hrFCxpEA5/T9iW2vVxiejjJojWzjyn1DVlEzBQxE5evze3lICvntg2Ud9m5n7adlNmoyYJB80000LqpI7TejeZgpzRHJxtTwmov78= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931746; c=relaxed/simple; bh=6OIg2we+7lKJqkBVapsxecJj3Lz2kM88cqfMZOpsVEg=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=HpJLRRXl974/pZRFozl4PZX+yZZ0HwVNUnzF3qdcacRceXn2lKcWh3fGY6Fa07GzDhIPW4vo8zcJ3od0Sbfdj/jRyymuuVPqu7v7ed0dRbSfODLvl94gbF4uidqqPEar3dMje2w1dQdDYNhC5jsl0qsNfnOqBjsF8COn87a0UFU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=WNN7yHwL; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="WNN7yHwL" Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfout.phl.internal (Postfix) with ESMTP id 9AFA4EC0218; Sun, 16 Aug 2026 21:55:44 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-03.internal (MEProxy); Sun, 16 Aug 2026 21:55:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931744; x= 1787018144; bh=SF+A/wb3PlxLZDkRZuIKi4U0HF4yLL97AjmCOZNTp1w=; b=W NN7yHwLmTlQJ4Z4gbJsSdmBGktRSXtTJ2K7Tb5HINLOuzNeETeN4UulUZpmzYQXo uD0rTUOr1j9g4wiSTOooT9ClyOqcPpYRrKMzEDfAFZcElDJy77w6OTo5hVUpUa5T T6jz9v7GFLyyz4wwzmDc7w3miVUeyqjp838u97Ip72e0CoybyGJ2dUovLxEQvUBU mdDUm4WJ1oM4JlbPK73MjxhfX6Ae6cTFlcZ3+pb2qXeOrmOpnfvYMfGeS2aD18Zh 1DkhEs/txvck5ySHWlH0TpMxy0C1PQr7VClsrHXq9nJFZZ1k4RhHTHGqFrRgwSJC ogyqlET1Dq7HSPUZISjRg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEcdm/H6lUz/GNYCURxrkCd1HPfYRd3zhai/6cdZjeenE7g5xoDzlQAxk+7iMQq6v xV9q7s5fsS3/JQzvNsjwyK/4cWW065gbm2GoN84iHcVNvAdCqKzmKSHTb8iEr45WtpyqeY cz4yU9C9Fo2z94qtPVV3dAzmSvJhNew7HqXMqftu0soscmI1GAdFoXf04kdvALh7XeUIuU Tuk2XE2OeIJdmWhM+PiCh0JMVi0kltBn7CwQl945VNkrHoqGgbuYhi8WoWtxLKIumeRTK5 /WtK4yCHPyxyd9XATZrYk7BUHibsQzupfidfoh//hSLpDEkVyPVHII4Kj/fp06fOz7jSth ERRoE5f7rgKuP0wwxDH3VDZM1S7mpaMxr2VenMxf2cgdyLtKymr0qrikWWYvX1kmGsE9LJ klSw1hIXcOm28cjnDqaggQmmDkh7/aIkNgdCm+SU3kgGeU6U7KMdYZo4xcORMtuIcOP2yM uk9fHUhSV7rhW5W/9CXvKOVRt2FM+x9Cr10lFHuBSrvMcSvEMbgt4c63Wx9Q2M2XaIbiZv F+xwlpfjidsDeTRIVeit6G+ebci7+V7WS42VlOXikrJiaOdAybIrT5bl97SwTl2hJadI+l ILjy6i8bB1RGj5BPneYaP+EjKjH2g4V880kW9jbX3eVuRtBOyrbTjwoMrnqQ X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:55:41 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 09/32] swim: Recalibrate when drive is probed Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Track zero recalibration can be slow and is normally done only once i.e. during system POST or boot-up. Recalibrate once after the drive is probed rather than every time the device is opened. Don't register the drive if recalibration fails. Park the heads before ejecting. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- Changed since v1: - Refactor swim_add_floppy() slightly. Start spindle motor before recalibration if a disk is loaded. - Change return type of swim_add_floppy() to void. - Park heads at track 40 because that's what MacOS does. --- drivers/block/swim.c | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 6a49fc51f5d2..9abf93bc0980 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -412,6 +412,7 @@ static inline int swim_track00(struct swim __iomem *bas= e) if (swim_readbit(base, TRACK_ZERO)) return 0; =20 + pr_err("swim: track zero recalibration failed\n"); return -1; } =20 @@ -456,6 +457,7 @@ static int floppy_eject(struct floppy_state *fs) struct swim __iomem *base =3D fs->swd->base; =20 swim_drive(base, fs->location); + swim_track(fs, 40); swim_motor(base, OFF); swim_eject(base); swim_drive(base, NO_DRIVE); @@ -596,13 +598,6 @@ static void setup_medium(struct floppy_state *fs) struct floppy_struct *g; fs->disk_in =3D 1; fs->write_protected =3D swim_readbit(base, WRITE_PROT); - - if (swim_track00(base)) - printk(KERN_ERR - "SWIM: cannot move floppy head to track 0\n"); - - swim_track00(base); - fs->type =3D swim_readbit(base, TWOMEG_MEDIA) ? HD_MEDIA : DD_MEDIA; fs->head_number =3D swim_readbit(base, SINGLE_SIDED) ? 1 : 2; @@ -610,7 +605,6 @@ static void setup_medium(struct floppy_state *fs) fs->total_secs =3D g->size; fs->secpercyl =3D g->head * g->sect; fs->secpertrack =3D g->sect; - fs->track =3D 0; } else { fs->disk_in =3D 0; } @@ -759,24 +753,33 @@ static const struct block_device_operations floppy_fo= ps =3D { .check_events =3D floppy_check_events, }; =20 -static int swim_add_floppy(struct swim_priv *swd, enum drive_location loca= tion) +static void swim_add_floppy(struct swim_priv *swd, enum drive_location loc= ation) { struct floppy_state *fs =3D &swd->unit[swd->floppy_count]; struct swim __iomem *base =3D swd->base; =20 - fs->location =3D location; + swim_drive(base, location); + if (!swim_readbit(base, DRIVE_PRESENT) || + swim_readbit(base, ONEMEG_DRIVE)) + goto out; + if (swim_readbit(base, DISK_IN)) + swim_motor(base, ON); + if (swim_track00(base)) + goto out; =20 - swim_motor(base, OFF); + fs->location =3D location; =20 fs->type =3D HD_MEDIA; fs->head_number =3D 2; =20 fs->ref_count =3D 0; fs->ejected =3D 1; + fs->track =3D 0; =20 swd->floppy_count++; =20 - return 0; +out: + swim_motor(base, OFF); } =20 static const struct blk_mq_ops swim_mq_ops =3D { @@ -825,14 +828,8 @@ static int swim_floppy_init(struct platform_device *pd= ev) =20 /* scan floppy drives */ =20 - swim_drive(base, INTERNAL_DRIVE); - if (swim_readbit(base, DRIVE_PRESENT) && - !swim_readbit(base, ONEMEG_DRIVE)) - swim_add_floppy(swd, INTERNAL_DRIVE); - swim_drive(base, EXTERNAL_DRIVE); - if (swim_readbit(base, DRIVE_PRESENT) && - !swim_readbit(base, ONEMEG_DRIVE)) - swim_add_floppy(swd, EXTERNAL_DRIVE); + swim_add_floppy(swd, INTERNAL_DRIVE); + swim_add_floppy(swd, EXTERNAL_DRIVE); swim_drive(base, NO_DRIVE); =20 /* register floppy drives */ --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 235ED3B1B4; Mon, 17 Aug 2026 01:55:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931754; cv=none; b=lq5ZHlAFL7n79h4CiKEV3CS8r8lpL66zg2+Z8Nldc1i//ieOmukhVthX4PK2+15P50Sh+jlzkbczxTY+6u/p5XTPPYsSZtFT7bHQ8N3yUfLHMBz8LveOQxgtaAX7jatdrxn6qkhx9j5oO4SAWEPw5I8N8JhTZ7Yj/DOc+Y6jAxI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931754; c=relaxed/simple; bh=dWPrkfs/YBpk5pIzLBQ3Ca5UUgv304wkOM2A4qhnC2w=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=uAnVYw+VFXvAYeX+JXDBSVq30FYgDfuEsnwPX0bZ5DmN7zzdv6lrYiTheTntD3a+9JWSj+nAgMWX3gwS05VprDX8eiz++r5YYdsiAerYAEZRbnRyxWtCz6Qw7034+kPAtwe9IX//hjUErQDl3yIOwzWsyHSI/i4igMgQbsF5WsA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=QfIUwvQJ; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="QfIUwvQJ" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id 61BDDEC021D; Sun, 16 Aug 2026 21:55:52 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-02.internal (MEProxy); Sun, 16 Aug 2026 21:55:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931752; x= 1787018152; bh=lfZv3tllxNBkGbGrLZLjcEZUu+aYZBb8E3RrIcvdebA=; b=Q fIUwvQJotlvsTreuTYukKy6LYSu0XX0BO89x/pCdcuD1Uzv/F+HrGt9YQ51Recw+ BrPY7I3sMPOjcSWfmEi8nz3jdnk2TwCTv+tmCKFHWseHytFL/Pt9kwTrQxniWpAH vDoR+cpqlmlj3ptQ9kwESuPD35ZtHNIp0390kqltZbHFkuPc1vCkvICvs/NnuXku 9sNO/6skEowgcFtcJyw53Lo2SpJSrqMIhpAA86A8q2kkYZ8I3k+7BJMW90RtCAez 72sPJElOeNHR1XXhkRmx2QqSL3jLTIMmkNpcpahjZrEMmwprRwrLsXZMNJZGbK9P J35XTr0djXYjpSLkRO1vg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGNmzENqalxDTfCkkFc7mFU+8/8u51l4usXC2H+kPVL/IH2s2NYJxgIYjtBYtArJA YWtyuDuajqQPlQd9d39HppQGgAciKWsN5vaSeS8TTvkVHVx1RLPosXGbRFJQPSd5BLLYVy eC1VIy4/prdxHqOKz9F9XzgS4LWYfaliKe2CMViR9dDdyGPbLM90F38TD9YW2MkJ0tIv5F Ml4DBCJ2CjSI2ieswFMFy7Ro4IzVcMw8i8Or1S6KLLExG4iRUFFS7PoCzWwG3m0EJF7GAr uN2VwdTVv1tA6XFTaF1EIrNDccscfKI9P6vDWUSZluIhB0JYi7lhYJmYYZKiGnpyDh4kJd SDeJ83XA+cDklCNjM/In18HHxC3Ci3BrVAl/ftjyuaIQvYge0qp9vDZHt78h7bSeCnL1Sn Zf58VHdIFidOQbBHR22SOYTmhgU9J2rLEvnlv12fqazee1m/E/t6HknhE49dNCpb9japh2 T7MceQCf8POf0Gbb/nHkc4O0gIjtH6I0E99Cp7dqiKToxc+R4Ge+WVn/FwlNs0pcFwctkt boH7ASiE71oupPMOz2vJFUfBz6We8Nw4cQKpKsrJEzc8ALVoLeB/VFwyLDr9FuVLwnXJBd 4dq5VQud60a9YTS+qiAKxb+r0/EEgdoVZNVlZHZHlciQuECWK2RAID+MlQ1Q X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:55:50 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <45b77aeeec9775000f46750766ae1186f76c879e.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 10/32] swim: Add track zero recalibration delay Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The UPD72070 spec indicates that the track zero sensor can take 3 ms to stabilize following a STEP command so add a call to msleep(). Remove the duplicate swim_readbit() call as there's no need for that once the sensor signal has stabilized. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- drivers/block/swim.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 9abf93bc0980..c9cd0748c878 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -402,16 +402,15 @@ static inline int swim_track00(struct swim __iomem *b= ase) for (try =3D 0; try < 100; try++) { =20 swim_select(base, RELAX); + msleep(3); + if (swim_readbit(base, TRACK_ZERO)) - break; + return 0; =20 if (swim_step(base)) - return -1; + break; } =20 - if (swim_readbit(base, TRACK_ZERO)) - return 0; - pr_err("swim: track zero recalibration failed\n"); return -1; } --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2FE181A683A; Mon, 17 Aug 2026 01:56:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931764; cv=none; b=nH9vl0B4IEZ6B6ywFJYADGJPZ3n6/OhM4gdM2UvFGQUvhtMAlk8mCr2SoX6hXNHGCqOXi78+Wr0TTKfG9iYms4wwhzXMuQU4yMg7Rr9RwklW2Ep4M3bINxIKiXzTKtT/GO1M4OVhxqU3/LIwiDGKtOAvyQfc6LlhpENl1+MCgEQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931764; c=relaxed/simple; bh=nJY7w7cEh+7c64BYyL0LKpy2zDQj/yRgCMwLxC8ocPY=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=G/s06AHS6rlA+sTvOVDeE4Mybz3cj4OTQIhk2QAO/EwbaFmHy3onXULt+yJfXXorimQ+0PSEsV4eNr3q+VKxA9DbsuhgW0exQV0oj3oqazGcRsGd/xRqJaearwa3Z3tBD5aviwhgcTY2pxuzsFgZjWnbbO3fbpLPzjgfCeS1mTM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=mPfE/3uK; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="mPfE/3uK" Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id 681941400031; Sun, 16 Aug 2026 21:56:02 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Sun, 16 Aug 2026 21:56:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931762; x= 1787018162; bh=C0D7P8G6hTvt2FE5SH/vyr6jLBpriqH6H04iEj3x/3Y=; b=m PfE/3uK6SPRJn5iEend28lghiBAtoaA+UtWOjMDu9LxAsTbHkkGA8DeQ0dgcjOgf 2bqMnWyu/yEAk53SonwJaWAKq2aJNRwvHYxGvLvNdCxAcNTyhDmXt7CMysikVbmg t79ex910osHnPwUlVdFE1xubwwT+wWhSIRzx9aEFteMt0MJ1i3FCecLB4Y056DMq Xcov7UyK1umECRm/lido+y7nmS7Ioh8sqQNGy6IVnZfba4WaE8U9gZZlxQU5k/F+ o5DIV5joqDr4Pq89CsqSMh/chb0q2wC9nlGrdzd5s8CgaaYKKBcaRaMYBvERPmm9 FDdMjMV9M+SQLSOwM440Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTE1zBPzp57EvI2WKCa7xOaCPMCOsnXZwbAcoEmj89wsUSdGt4GdBKxObmiMx5fcBp oypA2ZnWqmNfQHyLmgxVrQMcSmueK9FdyVbmzq7gcarPcOKIILF6wzhnATo24VW++U4bpr H/QRyZHAzEFnt2ybb1uKoVu70f7UxZRvsSsh3NqJpyFBtN9ZF+RelgIUc1c09+DZsY84pi EI1TKCZbprgJbTC2I6+Tci8LWUg14CgVvKLIKZgqG1lXgt7dQKZ4oclWRDyn7xEZQn1FVL lHur/i8a25kfG09je15e0Arc8jCgfeXyJqv4H+/huMUpP2k1jpTXuNoi3NegLnN4iF7ypZ pi2DFaF5FS5iOoYoM7rq/ms0yxnRVMNUpX4YF6ekyQ6ZrxoOUfHlZFru41YSd8dfx/iRqL 3aFNH29LfPK14Lj6qiJ+cgTN86xsvlIwNHZqawzQVM9GG7Ixe2XQFg7yiFSBcS0rh9B7XM ZMhlT+YV7MzzATHBWLo6qKIR76qiAJJHRMo10ZKMOfjjCiQQ2+7b6nvN187Cr1gluqV2FE KExQrGxOFbHjhoFpnoV5DJud9c5b20d4Nuanvy3cAMhloHJh1qbEXTW9HqPNJ3U+g1Sm3/ B9gUo0rt6FCIYSJcDecKDGLm3XADVD4+MzAWX072SStw2lzYLwoi/rT52A1g X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:56:00 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <36bdb4dea76a9277765149755ea3a6ee23f96873.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 11/32] swim: Handle FIFO timeout error Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" When polling the FIFO for a mark byte in the sector header, don't return zero if the timeout counter has expired, return an error code. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- drivers/block/swim_asm.S | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index 3d7a2d87595a..208622ac4aeb 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -79,7 +79,7 @@ wait_addr_mark_byte: =20 tstb %a2@ dbmi %d2, wait_addr_mark_byte - bpl header_exit + bpl signal_nonyb =20 moveb %a3@, %d3 cmpb %a0@+, %d3 @@ -136,7 +136,6 @@ crc1: tstb %a2@ =20 tstb %a3@(read_error - read_mark) =20 -header_exit: moveq #0, %d0 moveb #0x18, %a3@(write_mode0 - read_mark) rts --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E4504B048A; Mon, 17 Aug 2026 01:56:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931773; cv=none; b=tX/BM2siWa+ZfOwAqqybXbuOCd19uKPZngJWkFwMTwU0W6d/kiViamy8OfDuuQfzCjCjZ1JoQaHv9I1wu4i2pWDFNxXzZciWWq1pfsTlWNa0u8D4kTimnrmVT8roUspI4mMaJo1uWtuT6JSQ5P3JBYNkx3voqdpEi0kv3iQc2hA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931773; c=relaxed/simple; bh=nOG4yfH5/Texvi3H9mlwkPnUvUaWqgsIEIoJ0CLpKC8=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=LwFzr2HVohDOTMoIk8pctYtTCnNa5mAN8gni4kr4J6kSs34uA3svUUXkXrJGPM61xUsFi9O056b2juAupKBT+QcUTQQ2rJUfZbXbZXM/g37tkp9eKGKFEsZgmWmBAN4BYbUml5etdiplaLlvnSMYw4GQsEPdmjp2eipmCa1hQ0s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=AHhlzzFk; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="AHhlzzFk" Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id ED42E1400031; Sun, 16 Aug 2026 21:56:11 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Sun, 16 Aug 2026 21:56:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931771; x= 1787018171; bh=dapjyK1m12iSEcR0ao3su9fLZHUPrMz/Un6E1mAq3DA=; b=A HhlzzFkQbH++QHvhYLZdOu3ti0XPUHnnIne+a3KP8TbcSjbAJszq3b51t7YEQ4KX RtcxYJiwyQABWbgI1MpebFsn2BUVSSMXb3zZ6K8ZApcNv+v281H2/tZ0PTeN0UT2 aHaBMtIJeRHjXZEi+b/zTmnu6dr65Ab55xcJvQpaRLCFGyalgbHsvGAP3JAK+uzC ebJwxmDjVWu830kBT2ZYvOhOoetf8jTNOKbnNGn8izdp+rs3wUZLO2s7i8CocwvF M5ekK+n+9ExszJAZ6tozcbXAUb77E5kCdyG5aZSsZ7lCFT+/XEDUYH7GS/fpsZYI wJmC8jSNv1s/0MbmAoXQQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEwVqJtQHEwNT59EY0ApYPfZBP0Ja94nLydKMHdJKlh4zUdbhZ4q8N1TJVlNLX3Jv UG9KBkDhcBzUW3289fayQ1J+ppWFRD446qIAFVyGuquh32EhwbVebEJGoODlbz4hP14Erq Tcjcfi9/5+2rPPMs1Rkxsj0k0e2xO2GH5lY4VVdKIG8VeU2vajU+FMxwg/fEJDgrz1L6RJ d1Tth/Mq5Cy68H4bxVP4faz7GKaqaQIynBu/2nSxBla0bgf41aEpoAjjJxWypL04u/vTxK x5WjWw0TaNT770B0rDvEjO+uKu7yRxr/X4qfgY6A9PKgCt1ahfj+WIbkeb4e64+QxwGFXW jJoJhToP5yLLQDzmONqQ3ohBCaS4C5wmbCZbLbTek6RnlMIFJZStbB/A7TrA4HroUVLhxR QQgdaf+WJQbdszO+NQjNYCschIhGNsaMKxPIXWOU7aLhEfNWT/xQPNBixryDq7Fe+Lq4F0 WEtdrq+bbs2RKzv1w4seD3d/kEJ5H95Tc1+E9gH+goGWJctyDI/DkFnWEjQrpZE3cSyXj5 YryldrqHqnKO4aq+3o92MTKz7rgNbPmeHq5MDm/XRMx4KrrwHJ1SdwxuF89zSnAiZCad2A XMrZBOIeFcYOqu2eh1HkLL5/1/tO+brm4mhJztxpqBS8qkJqsCrJU46wOUow X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:56:09 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 12/32] swim: Simplify return value initialization Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Initialize the error result once only. Update the result only after a successful read. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim_asm.S | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index 208622ac4aeb..31fc63b074dc 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -47,6 +47,7 @@ swim_read_sector_header: link %a6, #0 moveml %d1-%d5/%a0-%a4,%sp@- movel %a6@(0x0c), %a4 + moveq #-1, %d0 bsr mfm_read_addrmark moveml %sp@+, %d1-%d5/%a0-%a4 unlk %a6 @@ -61,7 +62,6 @@ mfm_read_addrmark: movel %a6@(0x08), %a3 lea %a3@(read_handshake), %a2 lea %a3@(read_mark), %a3 - moveq #-1, %d0 movew #seek_time, %d2 =20 wait_header_init: @@ -137,10 +137,7 @@ crc1: tstb %a2@ tstb %a3@(read_error - read_mark) =20 moveq #0, %d0 - moveb #0x18, %a3@(write_mode0 - read_mark) - rts signal_nonyb: - moveq #-1, %d0 moveb #0x18, %a3@(write_mode0 - read_mark) rts =20 @@ -149,6 +146,7 @@ swim_read_sector_data: link %a6, #0 moveml %d1-%d5/%a0-%a5,%sp@- movel %a6@(0x0c), %a4 + moveq #-1, %d0 bsr mfm_read_data moveml %sp@+, %d1-%d5/%a0-%a5 unlk %a6 @@ -228,15 +226,12 @@ data_crc1: =20 tstb %a3@(read_error - read_mark) =20 - moveb #0x18, %a3@(write_mode0 - read_mark) - /* return number of bytes read */ =20 movel #sector_size, %d0 addw #1, %d4 subl %d4, %d0 - rts + data_exit: moveb #0x18, %a3@(write_mode0 - read_mark) - moveq #-1, %d0 rts --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 930381A3029; Mon, 17 Aug 2026 01:56:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931782; cv=none; b=n7FuxMl1+pvFGPdNzlRLPNAmddRTJb/BEVG7uP4uVW9m2SSPXd3dFzJtFcKGoOeX2NqF+9Xwm4ep9OuLEz9L9n4+GW9bGSSXkWkxaGAu34O0QP+xW0Ibk9YRj7ynbGiG3tPdIIYBOdHHw6rZBLmXtghAG94XnED5UbGJ7YXWqNE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931782; c=relaxed/simple; bh=44/ZRL7/HGCIU26qbYzj5CcYMEYWu9EnyTQimXNoBkM=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=ukh57gg6dk2bdWToWBiFB4cIfISJ0aJtFVwB1/yWdOM35Et4K7p4DXOvqdIqDXtYu9TuCmhQQTmrMdPIw4eHxwX+/Bo9uIPd8jm0cDvOrx1dtJZZ7Tc5KLhD7oa6L3Qe6XRoGNxaKPclPEZZt+hrSVjKTjb14N6kgMpxKshD2dw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=aVvTpbtt; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="aVvTpbtt" Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41]) by mailfout.phl.internal (Postfix) with ESMTP id ACDF7EC021C; Sun, 16 Aug 2026 21:56:20 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-01.internal (MEProxy); Sun, 16 Aug 2026 21:56:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931780; x= 1787018180; bh=F7GzA5duFkcfyqTyz/fbHTzN443JBmphJA1KpCKAhLs=; b=a VvTpbttzdNprtxJoT8shrbwVaOvTuJkwXP2ELladn61nkKwOvtBHITzC2SdK1KOL aaI92wzQwQ/sGIiETv61iTxnvo4mUG0YvxCuyuSDXsBS+cFgTFqJI4EMZcrR40FR GjpMFzwWM0OcIKpqkzfz6Zgmdb+ykg7xIaREIiM5ks6WLF7scsuNxIScmkMNCeJO 7tC5ureE/ecMUj3ALltW63M/RYrxum1uxnDk4Q4nZVaKzIH//X9xGYhkjR72QSL0 F5utCvJcvmIRGLBsWla6kblxj8u6hR4t+2QXCv1bEuWx5C3RTZ3C9OjdkNNaQR8f jXUn1XgaNHQXyQ557d6Jw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEwVqJtQHEwNT59EY0ApYPfZBP0Ja94nLydKMHdJKlh4zUdbhZ4q8N1TJVlNLX3Jv UG9KBkDhcBzUW3289fayQ1J+ppWFRD446qIAFVyGuquh32EhwbVebEJGoODlbz4hP14Erq Tcjcfi9/5+2rPPMs1Rkxsj0k0e2xO2GH5lY4VVdKIG8VeU2vajU+FMxwg/fEJDgrz1L6RJ d1Tth/Mq5Cy68H4bxVP4faz7GKaqaQIynBu/2nSxBla0bgf41aEpoAjjJxWypL04u/vTxK x5WjWw0TaNT770B0rDvEjO+uKu7yRxr/X4qfgY6A9PKgCt1ahfj+WIbkeb4e64+QxwGFCY R2OU1mMru1mpl76eDy1f94zzxtqRH1tzCz6w9xRxOe/jkQrVlGcLQX6y7IpGjts393pJGz 7GUxKutW3tbpk9DfU7XdZOj98btvooOyObXA/ToSXETdHjJs/B8E9ByklTprg6/PyCtsLQ 4Uvobj/dF3+g4nbd7RZ+SdENtkYkhyZBR+rOig+0eOWajfoEne2JQpUDfMHVPqa0tfiJZ4 viBOj0EtkB1H02uNzJ8QxNT04Q7/9v4GDCWhfNoLtN/IsjdputeKIUrIek2LIvTLy4BhJx ITvnMKdmd8oKENJtr5uRbovFkR1cxCC0VuU4leSSZst3itsuu8h9Bkh7/7Mg X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:56:18 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 13/32] swim: Check for CRC errors Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" After reading either the sector header or sector data, examine that flag in the handshake register which holds the result of the CRC calculation. CRC validation has to take place with the last byte still in the FIFO. This flag can't be checked by the caller because by then all bytes will have been retrieved from the FIFO. Return an error code when appropriate. Reviewed-by: Laurent Vivier Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- Changed since v1: - Load handshake register a second time because that's what MacOS does. --- drivers/block/swim_asm.S | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index 31fc63b074dc..533e3bf02fa9 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -42,6 +42,8 @@ .equ max_retry, 40 .equ sector_size, 512 =20 + .equ .Lhr_crc_error, 0x02 + .global swim_read_sector_header swim_read_sector_header: link %a6, #0 @@ -128,12 +130,16 @@ crc0: tstb %a2@ =20 moveq #max_retry, %d2 =20 -crc1: tstb %a2@ +crc1: moveb %a2@, %d5 dbmi %d2, crc1 bpl signal_nonyb =20 moveb %a3@, %a4@(o_crc1) =20 + moveb %a2@, %d5 + andb #.Lhr_crc_error, %d5 + bne signal_nonyb + tstb %a3@(read_error - read_mark) =20 moveq #0, %d0 @@ -212,17 +218,21 @@ data_crc0: dbmi %d2, data_crc0 bpl data_exit =20 - moveb %a3@, %d5 + moveb %a3@, %d2 =20 moveq #max_retry, %d2 =20 data_crc1: =20 - tstb %a2@ + moveb %a2@, %d5 dbmi %d2, data_crc1 bpl data_exit =20 - moveb %a3@, %d5 + moveb %a3@, %d2 + + moveb %a2@, %d5 + andb #.Lhr_crc_error, %d5 + bne data_exit =20 tstb %a3@(read_error - read_mark) =20 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1DD04B048A; Mon, 17 Aug 2026 01:56:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931793; cv=none; b=B3HkOskdaQWa3awNzmyqI/haUUIOtBR9GbS08v4M/GODfQZp68ybNavC5mcAzpVQuDyYMX0NjtYQhuoK2TN0KnkC+utECIMrejluQflmsnWQG/WnqlItAaEFypFoJOQ9ofSpFtJGbbCGWxItjy+7K7f/p3+8WpFlIA4/VQDeHSk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931793; c=relaxed/simple; bh=h800b0SLL1yXTqsziZO+d9p/r9DkirvrbCuczpwuJn8=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=VVFvMzLuLUTDifUDhdYvKv5MmToLIlNpD8Y3CVUyC7idKKYzlMneEW68nBB5aJfzKORCiGzWeENEfVorhUXHJZsOSuGQlQu0PuYdh+/gSiTMqNSeHLEQAvfTFbVdbRjorY7NPolj/ILN+SyXofC7UpFJBtFDOGewcbcHozVbGIU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=kwxx8G7p; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="kwxx8G7p" Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id 31D8114000AD; Sun, 16 Aug 2026 21:56:31 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Sun, 16 Aug 2026 21:56:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931791; x= 1787018191; bh=2XCcGiJN517zeM0UpgHY6PdfhcNj2O0lodW6qOVkvAk=; b=k wxx8G7pTuRzjmYBAvTuF37II6cgp4xAacnYNyiOcAum6HukxMTcLzhr44JbyEVfn 4QVnK9TKw6siw0/IyoUKghDW7HJQsARzpDmljkgKjUio+sGdWK2qX4ZDWk1s0Y+A CcPwI7PrXmCXouG7Nj1hlwrZfPGKB7jRUu2ZR2fLz8qo8oiqijxxDncYa2HH8DDo s/TqMvFJXAewn5Iys7SLS6wCEiJ1XJvhKkdnaSzGBbFFUrY0mtc08VrVZzTECDMp 24z+WNthWkGO4D2xyy09kwBr4BoBZ0a+AfnZ831Iz4t9UMMaKvjaQqXT25DupEWv nDKjfbD8DteB2sSGozQxw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEsDyF1XWD9XZqwh3C8Ho4JdRPUx4eqRjvYLt3EaX4KJjDKM6ktwFb9sBwbsZO0OP nwePXvFi/sBzBtYAc7ZrYAY3kjrOX72CwO8MkzLy8r6s+q8K39Zv9O3cVcfro15oqirg8t 3/oeh/EnTvjsUqUpiO4ELw2DdtnIYwSxABH/Bxa6LXRBjDCK03fXlOZ4WZ+0OhrCtfYKiy I9mWMFXybSO0+mvHRGbhEIjpDzbcG6MyhaqTxdFh098Si9DUXUOVp+5mKFVdQtjRQ8IEW8 XrKBIr8yfBevzX1wyM8jFpD1fw2ieud/BexiMnUPIQnwCzGFBoA9NcQx3eemHljzM4mHsc KzBxcMpfeaEsOZy0EfQ9XGID5v8pVZJb9GKQ1/gAqGegm75a3c/0OdHPR71WprG2y6f77J DhPNrhDpAbu0K4/xJr4uSBz4lhkmYGjlYPb7gsVYmtnQ8iW0webxB6i0Naag2ZLYlNdKb6 k98RuuPQ/9a2dIEJ96Y7JJX0+67b11e5coffmqanX8frMvDqY00iOYySOX9vnbQIdNQAWY 27rhOx5xQb2LrI092KHJ/wfJlqLnfZAxEC3YlND+bg2k/1QJP+bAxmaSstCIJBWl1iadUY xmR79yjptgU0QmFeY1Gp+Z4UoT/HOdYJtO4QFdwxWTd0LmuiRFhjmv6H25CA X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:56:28 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 14/32] swim: Check error register during sector read Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Clear the error register only once before a sector read operation. Don't clear it afterwards -- the caller needs it. Check the error register in swim_read_sector() and return the appropriate error when necessary. Fully validate the sector header. Don't terminate the search loop early just because an erroneous sector header showed up. Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 13 +++++++------ drivers/block/swim_asm.S | 8 -------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index c9cd0748c878..33374498d621 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -483,20 +483,21 @@ static inline int swim_read_sector(struct floppy_stat= e *fs, =20 local_irq_save(flags); for (i =3D 0; i < 36; i++) { - ret =3D swim_read_sector_header(base, &header); - if (!ret && (header.sector =3D=3D sector)) { + if (swim_read_sector_header(base, &header) || + swim_read(base, error) || header.track !=3D track || + header.side !=3D side || header.size !=3D 2) + continue; + if (header.sector =3D=3D sector) { /* found */ =20 ret =3D swim_read_sector_data(base, buffer); + if (swim_read(base, error)) + ret =3D -EIO; break; } } local_irq_restore(flags); =20 - if ((header.side !=3D side) || (header.track !=3D track) || - (header.sector !=3D sector)) - return 0; - return ret; } =20 diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index 533e3bf02fa9..aa61ecc1af96 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -67,7 +67,6 @@ mfm_read_addrmark: movew #seek_time, %d2 =20 wait_header_init: - tstb %a3@(read_error - read_mark) moveb #0x18, %a3@(write_mode0 - read_mark) moveb #0x01, %a3@(write_mode1 - read_mark) moveb #0x01, %a3@(write_mode0 - read_mark) @@ -140,8 +139,6 @@ crc1: moveb %a2@, %d5 andb #.Lhr_crc_error, %d5 bne signal_nonyb =20 - tstb %a3@(read_error - read_mark) - moveq #0, %d0 signal_nonyb: moveb #0x18, %a3@(write_mode0 - read_mark) @@ -166,7 +163,6 @@ mfm_read_data: movew #seek_time, %d2 =20 wait_data_init: - tstb %a3@(read_error - read_mark) moveb #0x18, %a3@(write_mode0 - read_mark) moveb #0x01, %a3@(write_mode1 - read_mark) moveb #0x01, %a3@(write_mode0 - read_mark) @@ -191,8 +187,6 @@ wait_data_mark_byte: =20 /* read data */ =20 - tstb %a3@(read_error - read_mark) - movel #sector_size-1, %d4 /* sector size */ read_new_data: movew #max_retry, %d2 @@ -234,8 +228,6 @@ data_crc1: andb #.Lhr_crc_error, %d5 bne data_exit =20 - tstb %a3@(read_error - read_mark) - /* return number of bytes read */ =20 movel #sector_size, %d0 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C4FDC313E21; Mon, 17 Aug 2026 01:56:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931804; cv=none; b=F+EIitxhFxluT4p2wX5GK15vcSOHY0ozgKLZGL7uXvSrI8DjB/64gqGB+BpEpA+YV4cdMwANLPjHAmKmy55uwsv/Dik+OigS4WOSz3vd7cFt237GXFUjVclHxYFQWDcEFZt45KRHFyn2f3NzdIfYOO4i+aMf5iMWtkCVCFWD9m8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931804; c=relaxed/simple; bh=gcbDJQKQWx/JiOl3ILmbvcSJFY9wfyx+GkxaXTMeBVY=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=YeNcOF/+hqwQ+aZdZyHTDguuliuSdmNlVqOQd82139zcCsA2+4dz3nD/WLWYijiyqRyWnnx/uS1JNrOOFvTZweS4oOSJZbiR9TvBDFzi32WhmPlf6SIS4j+GLpbGCNYmIgAmhCl+yCJaey3KUwH68TkHwq67t96X+SuVk1Tj/wo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=mDmWqzJ2; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="mDmWqzJ2" Received: from phl-compute-08.internal (phl-compute-08.internal [10.202.2.48]) by mailfout.phl.internal (Postfix) with ESMTP id CF87EEC01FD; Sun, 16 Aug 2026 21:56:41 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-08.internal (MEProxy); Sun, 16 Aug 2026 21:56:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931801; x= 1787018201; bh=w7f2wA8xRsSFLJ9OKOibNiHk2iHsT2ek6v8NeXeO6hA=; b=m DmWqzJ2vMLN5MGPPqa64YfzYfAEpKn0RETUqlz8YM+Lew6bEshAj8pghEkXNHvsJ 2HmNZEc9WRF8vgR9FUXKRlIyJ3iqyfyW4qZcBFXKMvbebgOx4j2TgVLjnMIISrqa VqjUdgD6r4y+i22ZiFDJE85/jeZegotvjrFQPfsBXLaD7hJVIM56TvdmZWc0yN5b SxwLcMu+UlpIREtqgdDRu/NiPr0Ms+JI1CdKumgxPNJQFVk7PFUWL+9OVlA18AC1 vkpDsuGpGY1vMEpzxJmIFvKTPFIZOCvS1EUnASOfgydjFoEx9xGYTUB+ru9Ca8+E FsD/7E8qZ9nnyGX3wRX+A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEwVqJtQHEwNT59EY0ApYPfZBP0Ja94nLydKMHdJKlh4zUdbhZ4q8N1TJVlNLX3Jv UG9KBkDhcBzUW3289fayQ1J+ppWFRD446qIAFVyGuquh32EhwbVebEJGoODlbz4hP14Erq Tcjcfi9/5+2rPPMs1Rkxsj0k0e2xO2GH5lY4VVdKIG8VeU2vajU+FMxwg/fEJDgrz1L6RJ d1Tth/Mq5Cy68H4bxVP4faz7GKaqaQIynBu/2nSxBla0bgf41aEpoAjjJxWypL04u/vTxK x5WjWw0TaNT770B0rDvEjO+uKu7yRxr/X4qfgY6A9PKgCt1ahfj+WIbkeb4e64+QxwGFiO ISF5btaHd4Gb4tlr5g+7o/kLyNXzva77ise47nGm4aFiHF/GPioLOWwx9R9fp22UUd5+c4 B7U4gicp5oR4F/L/ntMWchirsJrldJtP2egDiKC8wK4qq2B1cws/wOFIzoSRoD61MzCoNB MwEOTGPlYphbW5onxC7XBo54CI5ILU3AV9qk9o0qxplBNISIUFK+oBpuYM10S2Bytz0oT9 ebImHyOhLRnJKRaAdV+fnPlZrlG1Nza5Rmt10FNlK2PZX7+jOjhWMatSqKOktDSAMlThGM vTaZdIvV8KjDr2OmRWeAiwDqP7YIwtAvtL/7vcUA0TY8LFWr5qNxINSUJrKg X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:56:39 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 15/32] swim: Don't use the mark register to read data Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" If an unexpected mark byte were to be read from the data register, an error would be flagged. But no error gets flagged when such a byte is read from the mark register, which is misleading. Always use the data register except when a mark byte is expected. Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim_asm.S | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index aa61ecc1af96..b12289bed2f0 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -47,11 +47,11 @@ .global swim_read_sector_header swim_read_sector_header: link %a6, #0 - moveml %d1-%d5/%a0-%a4,%sp@- + moveml %d1-%d5/%a0-%a5,%sp@- movel %a6@(0x0c), %a4 moveq #-1, %d0 bsr mfm_read_addrmark - moveml %sp@+, %d1-%d5/%a0-%a4 + moveml %sp@+, %d1-%d5/%a0-%a5 unlk %a6 rts =20 @@ -63,6 +63,7 @@ sector_data_mark: mfm_read_addrmark: movel %a6@(0x08), %a3 lea %a3@(read_handshake), %a2 + lea %a3@(read_data), %a5 lea %a3@(read_mark), %a3 movew #seek_time, %d2 =20 @@ -93,7 +94,7 @@ amark0: tstb %a2@ dbmi %d2, amark0 bpl signal_nonyb =20 - moveb %a3@, %a4@(o_track) + moveb %a5@, %a4@(o_track) =20 moveq #max_retry, %d2 =20 @@ -101,7 +102,7 @@ amark1: tstb %a2@ dbmi %d2, amark1 bpl signal_nonyb =20 - moveb %a3@, %a4@(o_side) + moveb %a5@, %a4@(o_side) =20 moveq #max_retry, %d2 =20 @@ -109,7 +110,7 @@ amark2: tstb %a2@ dbmi %d2, amark2 bpl signal_nonyb =20 - moveb %a3@, %a4@(o_sector) + moveb %a5@, %a4@(o_sector) =20 moveq #max_retry, %d2 =20 @@ -117,7 +118,7 @@ amark3: tstb %a2@ dbmi %d2, amark3 bpl signal_nonyb =20 - moveb %a3@, %a4@(o_size) + moveb %a5@, %a4@(o_size) =20 moveq #max_retry, %d2 =20 @@ -125,7 +126,7 @@ crc0: tstb %a2@ dbmi %d2, crc0 bpl signal_nonyb =20 - moveb %a3@, %a4@(o_crc0) + moveb %a5@, %a4@(o_crc0) =20 moveq #max_retry, %d2 =20 @@ -133,7 +134,7 @@ crc1: moveb %a2@, %d5 dbmi %d2, crc1 bpl signal_nonyb =20 - moveb %a3@, %a4@(o_crc1) + moveb %a5@, %a4@(o_crc1) =20 moveb %a2@, %d5 andb #.Lhr_crc_error, %d5 @@ -212,7 +213,7 @@ data_crc0: dbmi %d2, data_crc0 bpl data_exit =20 - moveb %a3@, %d2 + moveb %a5@, %d2 =20 moveq #max_retry, %d2 =20 @@ -222,7 +223,7 @@ data_crc1: dbmi %d2, data_crc1 bpl data_exit =20 - moveb %a3@, %d2 + moveb %a5@, %d2 =20 moveb %a2@, %d5 andb #.Lhr_crc_error, %d5 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 589E32771B; Mon, 17 Aug 2026 01:56:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931813; cv=none; b=H5HJxAtbHFVUXUp8IRs9KgngmzDXz3oeO4pIA+gIuBu9mmWLuORgE/g/yg5TpMYkUrhJRc3dI31FMdsdug6Fs/AaAXmZ7x7+5h/butLgpTR7U6Dp9EOwFBryMrcvoo0mlURUj27pK7IWk2XWB9Wl0gSePbL0EnvsIIvOfg7zfGA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931813; c=relaxed/simple; bh=kIRVXxiHAFWBOsDWJvjYHRzxcMfbKtgsBiLcjgEojVk=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=uDUtt+5GAc0aBIsVK0T+z1+ScoEPLSIg/v0GxDImagNqEY34Tzb5UfOnnCGB6Y3CVySTig6hxYQGCrAe8vTnFaZItsTWciDddMxvQE+PQIhV1G4eInMhe4wdP5qg2Sae083ZovFuJ11RDyilrPGQ1o1QaFIYf0Km9hsy0grOh2k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=a0Bxpjn7; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="a0Bxpjn7" Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id 897F6140003D; Sun, 16 Aug 2026 21:56:51 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Sun, 16 Aug 2026 21:56:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931811; x= 1787018211; bh=sjmM9kNz7iMxJa1zB4a5hCIKdwdJLVx+hNWizdsOVcM=; b=a 0Bxpjn7YRgDF92E+7lxNxGxNYYvVGiNbG0LPXK+e1qW7aEag9fcIGeyWTWaZa/vQ fAf1gLs+12gQCQR5cZCAPOPyCVxIFZgcb8Y7xtSLlLdX5qjsIh372WngwEu9+pOB kcq+G501kD91Ei9z+it4iXbwmIibYrH+5fbc2gNLuhZgJmkJIZklcBdfPsCby90L uEEkmjnAThIuxcnpoc2XdgGEsW7ulwzn7ktmR8EvGXRnOApl9bMgRZBqP3ka2Kis JnsLeIrHkSyFGFxjH9dDeXiMhV/Vedh49liYj/KMM3GfStNakitq91yBcZzlYKY6 qp/aoTukCypXJVPRpXhwQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTF+LZrjPxVw93I7r7IUsrJw4pR3uVZgXLPXemG6QZUfPA5a4YUs/S/zk6lomzsGMb MGBn9dYhCmFngaHvlYDRM1EczTPkCQ+QOfTwzRhqHKg5IZ1NcIqtclWYhUqFGff76FfpWy IvJPv1xdpXPmAe8sBub9BcA0ZFTTc7HKhdlyedSIDG0q3UYjUgUsHlpcHJKc7w0vsjcgZZ 6jlXW4TtDBNy3oAUn9/o/QGRqKEmCWDKDkhlZYkut/8A5B4ZErSmX3K+5A7BgErzGatd17 NiDEVnOaC99yXXiRY3OJ4Ko6eO/q6fqVX44LE41wJ/OXh7VR5YOGJq42qd7GfimvUSZJrK 8j7+X1hY6a/hJ74ab/xyl5hrhP7W5DX9/LoehISlJapzYQw6/VP0H2k+8QF/CFWHjkbmkb h0mVTlPXCMl1V7o6B8Rig6ocwBQ6CS4tv/gTk3rxzwxxFmkhdsVIoMwI9ggGsqB4ve/G3F fpCnRp0uuzL5DbVU66uXTslZP4QC1AEXF/pLTQkdKZqov+DzM7wTRP5ZxPq7+08BIF5Lyh lFqtXcPd4dYGB6f8a3XZgqb8oHfpW/sUE8PkRo//GtBh4jcRqvANkPrfLaLm7vy3upSZlb /oHjMltz8RTlr+mdHpWoue8OxGk+4G/iaaWvNza4+TKi2W1tEjpajO95BM0w X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:56:49 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <28a58cdcd1777806de85ed6577f19b9d8e310e6e.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 16/32] swim: Fix buffer overflow Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The effect of this bug can be observed as swim_read_sector_data() inexplicably returning -5, or an error flag indicating that a mark byte was read from the data register, or other odd behviour. When copying bytes from the chip FIFO to the read buffer, the driver keeps count of the remaining buffer space using register %d4. A counter in register %d2 serves as a timeout. The driver polls (%a2), the handshake register, until flags indicate that byte(s) have arrived in the FIFO. movel #sector_size-1, %d4 read_new_data: movew #max_retry, %d2 read_data_loop: moveb %a2@, %d5 andb #0xc0, %d5 dbne %d2, read_data_loop beq data_exit moveb %a5@, %a4@+ andb #0x40, %d5 dbne %d4, read_new_data beq exit_loop Note that the exit_loop branch depends upon a flag in the handshake register and not on the remaining buffer space. Hence there may be no branch to exit_loop after %d4 is decremented to -1 (i.e. full buffer). moveb %a5@, %a4@+ dbra %d4, read_new_data exit_loop: Here is a second decrement of %d4 which can now reach -2. But the buffer bounds check is a comparison with -1, which is now ineffective. Hence the loop will continue copying until %d2 eventually reaches -1. Fix this bug by terminating the loop as soon as %d4 or %d2 reach -1. Reset the timeout whenever a byte is copied. Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- Changed since v1: - Avoid jumping to a redundant AND.B. - Avoid a second handshake register access when there's already a byte in the FIFO. --- drivers/block/swim_asm.S | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index b12289bed2f0..9a7d7466e846 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -43,6 +43,8 @@ .equ sector_size, 512 =20 .equ .Lhr_crc_error, 0x02 + .equ .Lhr_fifo_2bytes, 0x40 + .equ .Lhr_fifo_1byte, 0x80 =20 .global swim_read_sector_header swim_read_sector_header: @@ -189,20 +191,20 @@ wait_data_mark_byte: /* read data */ =20 movel #sector_size-1, %d4 /* sector size */ -read_new_data: movew #max_retry, %d2 read_data_loop: moveb %a2@, %d5 - andb #0xc0, %d5 + andb #(.Lhr_fifo_1byte + .Lhr_fifo_2bytes), %d5 dbne %d2, read_data_loop beq data_exit + moveq #max_retry, %d2 moveb %a5@, %a4@+ - andb #0x40, %d5 - dbne %d4, read_new_data - beq exit_loop + dbra %d4, 1f + bra data_crc0 +1: andb #.Lhr_fifo_2bytes, %d5 + beq read_data_loop moveb %a5@, %a4@+ - dbra %d4, read_new_data -exit_loop: + dbra %d4, read_data_loop =20 /* read CRC */ =20 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA99530D40E; Mon, 17 Aug 2026 01:57:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931824; cv=none; b=fhJl1nzeIcohRgzvuF/QFPqBoxniNZhbvcA1KcgdhEj2cvQtzEkVoLRHwhfWkYPHJ3c4tV7kwpvOeWc4GcQOKqVgepvtSlQbbLmJLG5OyZxctB+63C5t550QZwZ1tFPp3Eh+1orhYMvA0y7u14dwUOs+UlPwwSFXPAOqdiy6BD4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931824; c=relaxed/simple; bh=q8IbhadNWU5zLc5LjYwBw591oUSb7wx1WCZlNys27n8=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=XWoa/uOHbFrbXQc1yV7Gzge4AuNwnKehw1DoD9RDgBRF2zAlSnn751U0I75G1tIGJ9SSDzjK5S1e9S5fh9frivqly9z9UySN+FdKpPF5beDYYxm8Y/vDuvvEQ8GnYW2N4lrA3fEHbiU8TpwCG6x3+JTyDUr3JIiqu5GzvLoOO8E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=XWBCVT/2; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="XWBCVT/2" Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailfhigh.phl.internal (Postfix) with ESMTP id D288014000AD; Sun, 16 Aug 2026 21:57:01 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Sun, 16 Aug 2026 21:57:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931821; x= 1787018221; bh=Hi3q/yrdaWC2WdHcMjgJnC0dWIKQtqbJU5mODxNF49c=; b=X WBCVT/232I0IO+btTmfoHWBncTRqukNsC67lfjsodXclq3FavqqGgtGg+Cyw3rwM mJM7Vyb2CdbTGlEhgvO/ZjceXkCoDSkUT1QCfI9I9WpT11hlLublxgWq0kPqb+c+ a93saDQW2Mz+iKJzHBR7ZOIwh8BCuuM9fy/KHIVTFqxRHCnZaJaSPhKkk0x8M6J9 7d0qdOz9EpiPE/BWtyCqWT7znbSuJ9CQ+4hKOGOI+gmUeTnUH57b2OvHChGWxFS9 0fv5HK5hlm6UCxNKKeiBEKxw21hC5fb0uCl3k1WKhQuVDuDxOzfU41eg99q3Me7e WTTqlMtfQk+xSawcBt/Mg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGCfAK01m/su+NF1u+XOa68X+pQQmWv8jlRJR8vxluyzAH4rmxRPr8AYsUrYbzztz qDtakIuzqtbfSZmHo29PP0RHw6kOK7iJUOnoHpPuvKppIPLYWl2UNDzIV1PYCBIBERm6bY QPER3HxgVtlHR7cJbNfVcsWUAu2NMPn+HPQbvSzMS3okfk4rj1XXvcXPUG6Yz1nkx5JmSF 9EIBgbDvdHCuuDb97LLVxHSWv1827rAVWCzbOYkiQ9QXzkowWSPvAeLMSeMG2g4Su/yxWQ j65uySTmeWQpdSWSE0KVlk792PpPHU37J4bodh4BamE1P0wm5F6pYSr9/YKCZgQTskI6t6 rpKYNvFNAD/5dPb1iZxANmH5B/h8FMyQrq8ua9jmvMvkpa1GKKq2eokIBYTAHPx2kDry0F ZTkNsMRGtZz6NXRTyU42vl+QDxT06tIwrSOY4c4Ad3ZJgy/0Kay9eKhaMfPkZaj+//bBVD wU8FP2pbc5sxAx2kxAyJlf2u79lHOhqo0OMpv3bcqt3SB/3LyDKe2ljll+9Ekv7c6bfuUM 6dcPvc0AHwuVKHZloy4DBqYEOTfGsN2KTRN3zixm3jRx9SrMxYTmCopcl9JXki6WBu5qnP 912ATshOEwFg6WY5LhuhULPfwswibhKeJ3gIfsWTt6Q8XmvYF9oh67pL6mrA X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:56:59 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Omar Sandoval Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 17/32] swim: Convert to blocking queue Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" These drives are slow: completing a request can take hundreds of milliseconds. Delays are managed by disabling interrupts judiciously and sleeping opportunistically. As of commit e3896d77b702 ("swim: convert to blk-mq"), a spinlock is taken in irq mode as soon as a request is issued. That lock is held for the duration of the request. Hence the driver sleeps while holding the lock which is forbidden. Adopt BLK_MQ_F_BLOCKING and remove the spinlock. Use a mutex to serialize requests from the two request queues. (The chip cannot simultaneously process requests on both internal and external drive.) Cc: Omar Sandoval Fixes: e3896d77b702 ("swim: convert to blk-mq") Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 33374498d621..8c8b157e2d74 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -211,7 +211,6 @@ enum head { =20 struct swim_priv { struct swim __iomem *base; - spinlock_t lock; int floppy_count; struct floppy_state unit[FD_MAX_UNIT]; }; @@ -537,12 +536,10 @@ static blk_status_t swim_queue_rq(struct blk_mq_hw_ct= x *hctx, const struct blk_mq_queue_data *bd) { struct floppy_state *fs =3D hctx->queue->queuedata; - struct swim_priv *swd =3D fs->swd; struct request *req =3D bd->rq; blk_status_t err; =20 - if (!spin_trylock_irq(&swd->lock)) - return BLK_STS_DEV_RESOURCE; + mutex_lock(&swim_mutex); =20 blk_mq_start_request(req); =20 @@ -560,7 +557,7 @@ static blk_status_t swim_queue_rq(struct blk_mq_hw_ctx = *hctx, =20 err =3D BLK_STS_OK; out: - spin_unlock_irq(&swd->lock); + mutex_unlock(&swim_mutex); return err; =20 } @@ -841,11 +838,9 @@ static int swim_floppy_init(struct platform_device *pd= ev) return -EBUSY; } =20 - spin_lock_init(&swd->lock); - for (drive =3D 0; drive < swd->floppy_count; drive++) { err =3D blk_mq_alloc_sq_tag_set(&swd->unit[drive].tag_set, - &swim_mq_ops, 2, 0); + &swim_mq_ops, 2, BLK_MQ_F_BLOCKING); if (err) goto exit_put_disks; =20 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4515C18DB35; Mon, 17 Aug 2026 01:57:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931833; cv=none; b=u6xciFqPCu/NBDBFjbiYS6ZGIjITQQLM8r7+yGC+qDDFbmx3rkLb7r1ZUSjOowqb9ogCRZ5VgtPQjRZJgByeflICU9vhSCjjizp5vdhRcf3o+HG+pXjwK1fff7htChgMxbB9FFOKeR6AUsivjYoWeAgqmf7xrEC2Zaz9pnnwnbQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931833; c=relaxed/simple; bh=l/qF4glc5PoZL52mcooNohJpMSiRF7vh9YBAUblwifk=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=Yv2VPBplVVx/IlbOyDbX1dGqbmiHaRpHzv0ByeJ6U6Km0UuNqkvJcXD0KcACxBAo+KBM1RY5YPfiLOR9msC/0sShqGnAnbzDkHX5rdGSjYc2OT/XheSbOpbd9giHJsfGlogZvZscMNxEtv/eIptyE8oLWTRbu2Lf6zrX5F0ThIk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=YF3aX+5t; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="YF3aX+5t" Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45]) by mailfhigh.phl.internal (Postfix) with ESMTP id 72BC9140003D; Sun, 16 Aug 2026 21:57:11 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-05.internal (MEProxy); Sun, 16 Aug 2026 21:57:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931831; x= 1787018231; bh=TkP38yZucR67TzySuCJiwBsl1Gd3dIOVglZIr0Jkeag=; b=Y F3aX+5tSnvPJQNwaZFY0MQgGJL6w4ng2KzZ0HfCoyGtRO5jStzShRnm3RTCV7joU pDPZwMhvEqqCDHcNytubJfqlFGPwb2n0bCXhdyFUiGIsVqfuk63R6+E3tTNtAMYO 88JCZqOUxyvAsuw/nsW0KXs9uFzNYd1Zw4NdexKjzw57lxfX+AT5twXAe2C5l4VG 2u20K85liFzNlKndVc39PCOPFtirGid7JJfPyi8Qc/DPYFa8H4aY4g/Ko5NFr/Ah xrec+LeG/ZXU5MjtuezfqMBFL2mvEWjWY3EUP8TIIhMieK1oYMgQGedtwBg1d8JU hMEav3W34pn6olELKaadA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGGfSHbL2fI02qi3PxN23Kck6mI5WuUw/IvRcvpbY119ewffFmgrLaJZrOewmv0V9 +yVjmNFRAF5v6NwN93pp2/ef5Xe4c3LI9irOXMRuZYHRPaDMJE6WMter/2+BypR/48/QT6 HY5IjuzvgSjmo92SyO1FOx3Pzj+F3Bo7QzXF7kAkGOLlhjpoHeFsUQfm7dkDIAS3zbzZQZ kdzEEhr46dUOQtvTauSfnNDphJtrhISaD9OmmoKzjI1J4txcn9eV52lgr1VrqNf0UkcCn2 OchZn8Fy5DmAdO0OzTlRhd5sxDSBZbWOqIe4VCopfX4yIdP6r//KsVzdicR3q2dH2I0XRq aF44g2C8oNTPcsNGczlwTTQcs+MxL5x/UGA3BfMT0RkBWRKz19sqaOamdCFqs7Ja/J4zQk ZhKzVBv0VsNY8w6prT0SI1NlAZnaIt4UCwoMpy5n+go4Uv+5NnegWtGErSaDaug+mMCLIy Cmq2913LdRiC5cZio+RuhxwBdQqNTrMDmfGAYKRImTyYiGNRLiXMSZ9y0tmdvPih7Bp4tW uFRE1IR8YEAZLCBD+VFlQnyf8jxhDKbVuYJwJHFYZsJeBFnC6Vvp2kPrP5f5BFRoM5H9O9 x27sXi5BmRrxbcPFrYTU+n+9Zq9/0zxOO+cVMEbKgOQpEW1oJiljHSgbd/sg X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:57:08 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <20acc6e4cb6f7b0090b294ab39d2913b40fd2731.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 18/32] swim: Remove redundant RELAX actions Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Wherever we have a swim_select() or swim_readbit() call there is an implicit RELAX. That means the caller doesn't have to do it. Remove the redundant code. BTW, Inside Macintosh says, "Be sure [...] that CA0 and CA1 are set high before changing SEL." Hence the RELAX found in swim_select(). The SwimIII driver in mkLinux also has that. But the swim3.c driver in Linux is odd: it scatters RELAX actions around as though SEL was not actually under its control... In anycase, swim.c really does control SEL so there's no need for that here. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 8c8b157e2d74..9635f4df3fc0 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -336,7 +336,6 @@ static inline void swim_motor(struct swim __iomem *base, swim_action(base, MOTOR_ON); =20 for (i =3D 0; i < 2*HZ; i++) { - swim_select(base, RELAX); if (swim_readbit(base, MOTOR_ON)) break; set_current_state(TASK_INTERRUPTIBLE); @@ -344,7 +343,7 @@ static inline void swim_motor(struct swim __iomem *base, } } else if (action =3D=3D OFF) { swim_action(base, MOTOR_OFF); - swim_select(base, RELAX); + swim_write(base, phase, RELAX | PHASE_PIN_DIR); } } =20 @@ -355,13 +354,11 @@ static inline void swim_eject(struct swim __iomem *ba= se) swim_action(base, EJECT); =20 for (i =3D 0; i < 2*HZ; i++) { - swim_select(base, RELAX); if (!swim_readbit(base, DISK_IN)) break; set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(1); } - swim_select(base, RELAX); } =20 static inline void swim_head(struct swim __iomem *base, enum head head) @@ -385,7 +382,6 @@ static inline int swim_step(struct swim __iomem *base) set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(1); =20 - swim_select(base, RELAX); if (!swim_readbit(base, STEP)) return 0; } @@ -399,8 +395,6 @@ static inline int swim_track00(struct swim __iomem *bas= e) swim_action(base, SEEK_NEGATIVE); =20 for (try =3D 0; try < 100; try++) { - - swim_select(base, RELAX); msleep(3); =20 if (swim_readbit(base, TRACK_ZERO)) --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D949F1A3029; Mon, 17 Aug 2026 01:57:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931844; cv=none; b=oLZ1jL00yV46DqzHNNAY4yA+vTPoCyEmAh0j7S11WxEaQb81Y7/1Fy1y6N5bBZY6wZt7rRkfN28NdC5AebnMZLtuANxPNa6TiD4vl9k9r7QwTuwf3K9LOaxfKRWBmalSp5EwGlEiVWqjZ86Y/ad707zClLnUxSPi6A5cGokqbdc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931844; c=relaxed/simple; bh=xqtJQev9uhpvVN8FSaMA3KHGnstMHKHWTjDRSheaoKE=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=HmXA/vMO5rNcgVSChGCFtxX2a9rL4Y7/5iuwmyfPc7FinooDLpO+jyAHFjASo0XuHs/u0o4VQsMC2mj4ObMo4iO1OsHZQgWjdq1bzPIbzCxGTteLHPBffdcdNUYSk24O8UkyiAXwhmU/u9C4zjv4PyFiPPT/v0eUkUDXK4MuwUI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=OV1d4fu/; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="OV1d4fu/" Received: from phl-compute-10.internal (phl-compute-10.internal [10.202.2.50]) by mailfout.phl.internal (Postfix) with ESMTP id 24141EC01FD; Sun, 16 Aug 2026 21:57:22 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-10.internal (MEProxy); Sun, 16 Aug 2026 21:57:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931842; x= 1787018242; bh=pzXDTelpVr6jSOvH67+qkoLTiRHO9b0TevyHvWmS/I0=; b=O V1d4fu/hW7j5Q8g4L9bUkMFIb67N5RHqJ+10TqjPhmdq33Q3Pql598HAj3Ug1ZXR kwe2BQEXO82qGDxlOmaGZtMbQ0zlu/OvO1terGZJebu4/VaS9qglriEWXsZR09q8 GZLpqGmZqE0gkSUDIUQHvgdVRtLX5eWOlsYJl6JBaC/k61iZe+WfG2dmYl+mrNIb wQWPBwn5hgYEwq7tIDtmnDKy5gl7H8sJOGGaNiPf9ZRPZXNkpaS4xlhsIz4zRdmU 4tt3EXm906mHQxkm5H4Jiror73txX9JzVUPeqWVL63uDdpj9H6mDyCyfy+UgwN3C Ynk7ApqcLsga/lHJ4VOqw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTE4hc50xdhPXg/illULTp+C8DYFyqEdlu6WRFncsb6QnuuT/gcUnwV28CSittpzBY CanXMgLJ3D2f99+6fhcgPhKU62j4D/361qP39o0jreF8A1XJd9tbHbTT3THo+0Ngxn+KIR xmSykI00CRbwgNWRv8pmFJk9w9o4Guyae/9OdRSlW4+G/cXS4TLBuEOOa7VrQ1zx7uzt0k aiRQ8f78TROqGsNBFEeFBQ0S+1oq+UQzE0LFPz+xu5GHoHcx5q9+AQ38+8xzR6IOKHtWR9 dd2Vu8AeIxRK7b1SVEdgm5fqxWGAl0hW++r8vV0P6QNaTx9jFo8LB1mZXd3D6ux6m/Q5Fn sbWIUzwmLq6iHoQN4dDsunW73vw/urlfWbCTIQxCFA/CtdpOk1SWRtIaqkg5RAAsSs9ql+ EDePXUKkvctxGotP88VvT9igRrnqTu9pRsC+runuH6WmdNO1AQIDrP9FHZOeCOZjCtegbE Pdw5DTyLwTkoFmZxaj1MdtAvs7cz0koN8C9bovV89MpMC22YBYOyDavHwbWeo7RbNGsaoO 1C3BRwHwPFXsWGRkFAnCuNMAvtQLj5D3cPM2KOeDs7IDq1ogbFl12R7OudwQMnNBbRyZOp xJQnWpjHrTBy/4arxjtBuq2Vrra7XuIqqN/cTowU1P5mjd9aMbGRnRHEVeOQ X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:57:19 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <282df3d29b34298051d3427c37fb1a39c310e6aa.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 19/32] swim: Deduplicate polling loops Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Replace duplicated polling loops with poll_timeout_us(). Change the interruptible sleep to uninterruptible because signal delivery shouldn't be allowed to shorten delays required by the drive hardware. Change the timeout for the !STEP transition to 20 ms in accordance with the maximum interval required by the UPD72070 spec. The existing 1 second timeout is impractical considering the number of steps in a typical seek. Change the return type of swim_readbit() to bool because that way the bit names make sense i.e. the reader doesn't have to remember to invert the active-low logic used for drive signals. Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- Changed since v1: - Dropped swim_readbit_timeout_atomic() as it's no longer needed. --- drivers/block/swim.c | 39 ++++++++------------------------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 9635f4df3fc0..36e28a766a5a 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -296,7 +297,7 @@ static inline void swim_action(struct swim __iomem *bas= e, int action) local_irq_restore(flags); } =20 -static inline int swim_readbit(struct swim __iomem *base, int bit) +static inline bool swim_readbit(struct swim __iomem *base, int bit) { int stat; =20 @@ -309,6 +310,9 @@ static inline int swim_readbit(struct swim __iomem *bas= e, int bit) return (stat & SENSE) =3D=3D 0; } =20 +#define swim_readbit_timeout(base, bit, val, timeout_us) \ + poll_timeout_us(, swim_readbit(base, bit) =3D=3D val, 1000, timeout_us, f= alse) + static inline void swim_drive(struct swim __iomem *base, enum drive_location location) { @@ -331,16 +335,8 @@ static inline void swim_motor(struct swim __iomem *bas= e, enum motor_action action) { if (action =3D=3D ON) { - int i; - swim_action(base, MOTOR_ON); - - for (i =3D 0; i < 2*HZ; i++) { - if (swim_readbit(base, MOTOR_ON)) - break; - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(1); - } + swim_readbit_timeout(base, MOTOR_ON, true, 2000 * 1000); } else if (action =3D=3D OFF) { swim_action(base, MOTOR_OFF); swim_write(base, phase, RELAX | PHASE_PIN_DIR); @@ -349,16 +345,8 @@ static inline void swim_motor(struct swim __iomem *bas= e, =20 static inline void swim_eject(struct swim __iomem *base) { - int i; - swim_action(base, EJECT); - - for (i =3D 0; i < 2*HZ; i++) { - if (!swim_readbit(base, DISK_IN)) - break; - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(1); - } + swim_readbit_timeout(base, DISK_IN, false, 2000 * 1000); } =20 static inline void swim_head(struct swim __iomem *base, enum head head) @@ -373,19 +361,8 @@ static inline void swim_head(struct swim __iomem *base= , enum head head) =20 static inline int swim_step(struct swim __iomem *base) { - int wait; - swim_action(base, STEP); - - for (wait =3D 0; wait < HZ; wait++) { - - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(1); - - if (!swim_readbit(base, STEP)) - return 0; - } - return -1; + return swim_readbit_timeout(base, STEP, false, 20 * 1000); } =20 static inline int swim_track00(struct swim __iomem *base) --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E33F32771B; Mon, 17 Aug 2026 01:57:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931852; cv=none; b=HfBjTkJKPEUP7/uFc4rCxk2sPF4jzN8IqfGwstaq7nbxwXdKKHgpg2qV0mR8YrBUZi17i8DukDYzPlTyXmsOCSJtlV4+r9NMh5OxLvA6KvSJxzXqeoHW2kBwHJqJfq8bWiiOytFHOg2hg1NTgFLHt9C3HdLoYToF2BgKvo8g3H4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931852; c=relaxed/simple; bh=GKFD9XHNEU0GTpmCxmnybc0RYX1Oz20z3lOhHa82Vw8=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=cUjZMkiyizW5YPeyN4sxPkuugI1GSBBMgFh86GiXShc92b4DJ7eCYflblcVrxyHZ4lqt0Rjyo8vBnScaU+GLX8K9jZ8iWGAC9bSMChDDivjNy5J69CVpT7ZMHKvcwETpGgFO6fKAcvW5v9xkh72ZcTj9ylRxnZWMCfuAJ7/HJlw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=BI5TyWwh; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="BI5TyWwh" Received: from phl-compute-09.internal (phl-compute-09.internal [10.202.2.49]) by mailfout.phl.internal (Postfix) with ESMTP id 4DEDCEC01FD; Sun, 16 Aug 2026 21:57:30 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Sun, 16 Aug 2026 21:57:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931850; x= 1787018250; bh=SPrifuD9lBBeDwG+66BL/g+bRKXuw1lymozUg35htA0=; b=B I5TyWwh2/ZFbOo80df7u6VhUQAhUztJ05nouPlPmQZB+UEd3Hfq2Mlbs3sy/pc/o 7LYDaJpfPqp6jAZqCbq7nXOKajDMfQiR2W8pC1enb8NS9tSCB9OSX2+Q4JUdTn32 RdWH15xqn4soMo0NvtYqIQHFQMsB2Pmv6VZGWMKo84eHHXEwJE9n8K38O4AW44l7 DYwph8v4g95hAq1N99hrZNu5pTW9lXNbSv7wF7Cm9mBXaZtz2YWBveMuuQ2YuwIm yjCpcGjrJgHy5jxpUGNQb6xAvTl0n2LAiItRS77K1APg3I1cGUvJ15amR8+WApV7 bScJRZEFZgqUPuYmtcRmw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTECU9zAlmyIvbcspBqHSrqOwQbTBIkgUamPgZFlNDl9b9qv2bnkkY45Pt1/8NOBTe Hr0+DT2CLwlGeE/9AyKiy9sFZu5yAXMPg5I48yRejhD+BZymtd0XvLQCaHPBJaxB5XYNtl 0SZBq8er1ZYpoM7krAD5xeO6YwzL3u1djn7inOMELalBNNZ0N5ua3XMBaLCzN7uNQwtuea eerq5OVOvcQBjCKCI6GlI6gEz//Hx25osXV7pnqniQeMeaD/eLdkc07tl8Fndrkjm7QN8q 6elaoEX36DYhLnZCNhlmIhVVbW9CH0eWBE5Vmhw76pCPawUzX19Yt6EyO6B5nrell3ChSe yPgz/pHyD8Vz6hsVCcPrTHjBH1cO6YzyXVfdpehATyyT2H6QNZo6cnAv+QtQ8X8IP+KSZV EeIkfCccovn9sIubNZoE0Arp1buIfEa34LxUga0nvo6Y8paXhyF5LlGqAE3CqiUycDMnBo FckiOwlH9J4C8JJNaVu9RnPq0C4fMUf+ego1+ihRvZuhKgiFyjNjFE0DBtbKzZJmSkruAR EdS4UQ/I/49gjes+8/p9aBtogIfaQjvg6wPUfmwpAas3eYRmH9nqm5RjZSGMOKcBm8W1vc iFZqQN44vrTUsDoYTyAcEL4NmIWe/gMz/OX+8P044CAeIzda/MrUaOW8kF+w X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:57:28 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 20/32] swim: Check drive ready bit Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The drive provides a readiness signal that has to be tested before certain commands are issued to the drive. Rename the SEEK_COMPLETE flag as READY because that's how it's known in the documentation as well as the mkLinux source code. Poll for that signal after stepping the heads and also after switching to MFM mode, as that's what mkLinux does. Check for readiness when stepping because testing shows that some drives require this. Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 36e28a766a5a..987e43e5b4ef 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -117,7 +117,7 @@ struct iwm { #define TACHO 0x103 #define READ_DATA_1 0x104 #define GCR_MODE 0x105 -#define SEEK_COMPLETE 0x106 +#define READY 0x106 #define TWOMEG_MEDIA 0x107 =20 /* Bits in handshake register */ @@ -313,6 +313,14 @@ static inline bool swim_readbit(struct swim __iomem *b= ase, int bit) #define swim_readbit_timeout(base, bit, val, timeout_us) \ poll_timeout_us(, swim_readbit(base, bit) =3D=3D val, 1000, timeout_us, f= alse) =20 +#define swim_READY_timeout(base) \ +({ \ + int ret =3D swim_readbit_timeout(base, READY, true, 1000 * 1000); \ + if (ret) \ + printk(KERN_DEBUG "%s: drive not ready\n", __func__); \ + ret; \ +}) + static inline void swim_drive(struct swim __iomem *base, enum drive_location location) { @@ -351,8 +359,6 @@ static inline void swim_eject(struct swim __iomem *base) =20 static inline void swim_head(struct swim __iomem *base, enum head head) { - /* wait drive is ready */ - if (head =3D=3D UPPER_HEAD) swim_select(base, READ_DATA_1); else if (head =3D=3D LOWER_HEAD) @@ -387,20 +393,25 @@ static inline int swim_track00(struct swim __iomem *b= ase) =20 static inline int swim_seek(struct swim __iomem *base, int step) { - if (step =3D=3D 0) - return 0; - if (step < 0) { swim_action(base, SEEK_NEGATIVE); step =3D -step; - } else + } else if (step > 0) swim_action(base, SEEK_POSITIVE); =20 + swim_READY_timeout(base); + + if (step =3D=3D 0) + return 0; + for ( ; step > 0; step--) { if (swim_step(base)) return -1; } =20 + msleep(30); + swim_READY_timeout(base); + return 0; } =20 @@ -482,6 +493,8 @@ static blk_status_t floppy_read_sectors(struct floppy_s= tate *fs, =20 =20 swim_drive(base, fs->location); + swim_READY_timeout(base); + for (i =3D req_sector; i < req_sector + sectors_nb; i++) { int x; track =3D i / fs->secpercyl; @@ -602,6 +615,8 @@ static int floppy_open(struct gendisk *disk, blk_mode_t= mode) =20 swim_motor(base, ON); swim_action(base, SETMFM); + msleep(30); + swim_READY_timeout(base); =20 set_capacity(fs->disk, fs->total_secs); =20 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ED09A259C9C; Mon, 17 Aug 2026 01:57:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931862; cv=none; b=RDU4LgYTTC1wQPPs3qAWoCLZeXSqnge3ZO/2grI34jgRodACw+Etd6Fw/kLKsfHdR6pYPt93sFDzVNLbFU44qBxml0w82UQjKAcDZQ9N0Qel+D18UTNsr9bp+91himn1T4hzL4nPBi8vEUe/yC8KZDUapS36c734BYMpeP9BxSE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931862; c=relaxed/simple; bh=C7jS1ISjo25dgwzMQhyIC0/xW99CJACmxGISeiwnhME=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=JGYF1BV/tzWRHY6BCNG/FMKZov7WVvXjvqhpzS2Z3+ZyAEqMeEq2484WHID3GkoUFDfJqN8L2p15tA7yDhVRuEiZYi30HwE1Rt2pTggKvOnQbrWMdc/xuEHR0TAyYzQiHaRqFhz7FPe7qb7DDNzuErRgPUImzd7IeQFzxnm+Qi8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=KrVtSRsM; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="KrVtSRsM" Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41]) by mailfhigh.phl.internal (Postfix) with ESMTP id 45F55140007C; Sun, 16 Aug 2026 21:57:40 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-01.internal (MEProxy); Sun, 16 Aug 2026 21:57:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931860; x= 1787018260; bh=cjtCiqbgtAb5vjXg/Fe6qpz4E3BMwlkdBKUib/nB9iE=; b=K rVtSRsMWEubpjIxSBbg09MJPtrZpl+JbC27+7PF3KApOZE25qD7cNpR1ISixBucH TvM4q4Zai2kfHIyYfPffr3hlJis1Lxsn6iOTRftbzyxQ3eVbt1sMddmnqYdkcl4v uVBUWGdHExAqrh/K1WQ9ZWf+yk0dtnmmUACkli3JImyy41jbz4XE3JbjLMHJq6Uc 6DB/tG4nhyiEL5EgTqMYu9S/ZDA2vqy3yE6lEzSTblGM9EJzHIPscBkweqr5ZOPo L2vFlbx6J8AjTZajR7zjzg1qzkoyHYnvz72qeEKY/jk+65TTZrqO131POIY6JpzH ksnSgzcXhbhQy+QxpJpjQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGGfSHbL2fI02qi3PxN23Kck6mI5WuUw/IvRcvpbY119ewffFmgrLaJZrOewmv0V9 +yVjmNFRAF5v6NwN93pp2/ef5Xe4c3LI9irOXMRuZYHRPaDMJE6WMter/2+BypR/48/QT6 HY5IjuzvgSjmo92SyO1FOx3Pzj+F3Bo7QzXF7kAkGOLlhjpoHeFsUQfm7dkDIAS3zbzZQZ kdzEEhr46dUOQtvTauSfnNDphJtrhISaD9OmmoKzjI1J4txcn9eV52lgr1VrqNf0UkcCn2 OchZn8Fy5DmAdO0OzTlRhd5sxDSBZbWOqIe4VCopfX4yIdP6r//KsVzdicR3q2dH2I0XlK 83e5PhH6XWR8UD22F9msG7MznTQdCpCG10bzFQWIskv6BRMBJkv3vdCwVl91u0ccsjRPYw D9WyJ+w6/XXDPCtWft95TwdyQJ+bC77kpUM1ze0312o1AdZBb9GuBjutuNSwuInVwulVcn cG2v8G9vtlMGnp0xhNhRHs+shUsetx825Lt09ysDX0cD4SpNejbM4CcHCbDA7QlR31WCrH QKimyDuuYw87S00+DUvk7utAmL0c7FOL7YkMgKA/Dv58iFZlu/rAGk6XzKeVY9uMYZTXkB 1uQO/4uUoowzhlz6BkxDPZ9y43u5VpIMWHNwR9eKNNkQahmd1tNn7LpXj5fQ X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:57:37 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 21/32] swim: Revisit delays Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" AFAIK, timing requirements for the various FDHD drive mechanisms aren't well documented. But we do have the UPD72070 spec and secondary sources like swim3.c and mkLinux source code. This patch is needed to satisfy the requirements in the UPD72070 spec and follows mkLinux. Change the LSTRB pulse to 2 microseconds, because this is what mkLinux does. Inside Macintosh says, "Hold LSTRB high for at least one usec but not more than one msec". When a disk is ejected, pause before de-asserting /ENBL. Wait 150 us after the STEP command for valid signalling. Pause for 1 us after setting the step direction before sending the STEP command. Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 987e43e5b4ef..eb4c2b7c57e7 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -290,7 +290,7 @@ static inline void swim_action(struct swim __iomem *bas= e, int action) swim_select(base, action); udelay(1); swim_write(base, phase, LSTRB | action | PHASE_PIN_DIR); - udelay(1); + udelay(2); swim_write(base, phase, action | PHASE_PIN_DIR); udelay(1); =20 @@ -337,6 +337,7 @@ static inline void swim_drive(struct swim __iomem *base, swim_write(base, mode0, EXTERNAL_DRIVE); swim_write(base, mode0, MOTON); } + udelay(1); } =20 static inline void swim_motor(struct swim __iomem *base, @@ -355,6 +356,7 @@ static inline void swim_eject(struct swim __iomem *base) { swim_action(base, EJECT); swim_readbit_timeout(base, DISK_IN, false, 2000 * 1000); + msleep(1); } =20 static inline void swim_head(struct swim __iomem *base, enum head head) @@ -368,6 +370,7 @@ static inline void swim_head(struct swim __iomem *base,= enum head head) static inline int swim_step(struct swim __iomem *base) { swim_action(base, STEP); + udelay(150); return swim_readbit_timeout(base, STEP, false, 20 * 1000); } =20 @@ -398,6 +401,7 @@ static inline int swim_seek(struct swim __iomem *base, = int step) step =3D -step; } else if (step > 0) swim_action(base, SEEK_POSITIVE); + udelay(1); =20 swim_READY_timeout(base); =20 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 32F395C613; Mon, 17 Aug 2026 01:57:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931870; cv=none; b=CPblKJ3Aba8cIXgFfq0UTtmyTV8IeyHrNB0tGL9rnH3XJHpZHKTQNKgnvSFW8clRcm78ubMw0q14s/zh3c9YBwD88aiRV+6PS93NukIKNrPiZ6YgNevT6Qff8WAU7BTO0Kr2r0GW3BDvWVbT62obJhg+RXsw5ALAAYYBsRqXv54= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931870; c=relaxed/simple; bh=jzKLTm19RCaGkfXCBInjCEoLx+MBJhbVBlThs3oLyXM=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=RgY4b6D5qFOhBeVYGSK4bO1eDoQfYZrKbLUOnV2SaByGT2l5f5xakuVGeAftTbFB87xvb2l45w7DxSJjaNLkZEKgJlcGEMxAeAwyy+BZipT84ZG2krbW1BHydVsdJayANUTO4s8chyn/l2+rwix0pGhtxoGNCUSQxgTja1y4vcA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=SIQR0e4C; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="SIQR0e4C" Received: from phl-compute-10.internal (phl-compute-10.internal [10.202.2.50]) by mailfout.phl.internal (Postfix) with ESMTP id 7D7C2EC021D; Sun, 16 Aug 2026 21:57:48 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-10.internal (MEProxy); Sun, 16 Aug 2026 21:57:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931868; x= 1787018268; bh=G7l5/nBMQo0OOGWLzh/TqcSTK2o84+C8Y2b51Z+n7KA=; b=S IQR0e4CQC2oLrDs916pDEvsFqUh10xsqWlemaZQ7IK9/ZI2DSDx0cr3dO1XMkzzw syi3SC1fQbkIU16Kwn3x8DqjN0SpYCMsyJNkI6SfQx9ew0lXX4aVuA/oYi+Wzjn2 ubYJvm3Qrte9MFEtwH6gx3qTNIgovxneySd4GbUKocQKcqdH5oF60OrSxf0Ql7+g wTIbma8rcYgr1KvzMhp1cQEmPW3MTBhvpTTEtqzRt2WivCPoR1XVfG7yJie1bbDw y0vJBJBgncgFh2XxAvytbRZ9l3wAL5Y7CLfQytDyy+R1D8D2+WQ5LeGqtiRnpAWt 8+6fb5W1aLZUMOeEsSBBw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGNmzENqalxDTfCkkFc7mFU+8/8u51l4usXC2H+kPVL/IH2s2NYJxgIYjtBYtArJA YWtyuDuajqQPlQd9d39HppQGgAciKWsN5vaSeS8TTvkVHVx1RLPosXGbRFJQPSd5BLLYVy eC1VIy4/prdxHqOKz9F9XzgS4LWYfaliKe2CMViR9dDdyGPbLM90F38TD9YW2MkJ0tIv5F Ml4DBCJ2CjSI2ieswFMFy7Ro4IzVcMw8i8Or1S6KLLExG4iRUFFS7PoCzWwG3m0EJF7GAr uN2VwdTVv1tA6XFTaF1EIrNDccscfKI9P6vDWUSZluIhB0JYi7lhYJmYYZKiGnpyDh4kkO +PWXsJPme0aRe7jer4Xtcg0DwtNzhV9uy9Fe5NxvMFzuavJglvRkHK0lyXgyvdICaIpAbt Z2hjbi8AxZgMlLGJDtqVGqX8R0X/zl394CPOX64lTUdACujPJO/Ig5l6IfRyBzRWQyST3H JJZLjdfxNXlR5gI1uKcqM82Xh6YcTFoeUUadoMRfCqFFMWT3SZ+Qzi/ySRfUgBWKjGls8y 9BMomsnxDmCEmY0ShwuQkgFVuG44x4ALOEpcADv2yrrZrJunSEK1BiNEhPlICQKkxYx5xY KYiEbVuOcCYthEcclFdScyBTMF5idebAcY+XZu3iy5zfOTVWRMNZLSKkKFQQ X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:57:46 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 22/32] swim: Remove pointless mode0 register write Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This write has no effect so remove it. (If side =3D=3D 0 then no mode bit g= ets cleared. If side =3D=3D 1 then mode bit 0 gets cleared but that's pointless because that bit is already clear here.) Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index eb4c2b7c57e7..38b1643f3702 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -464,7 +464,6 @@ static inline int swim_read_sector(struct floppy_state = *fs, =20 swim_track(fs, track); swim_head(base, side); - swim_write(base, mode0, side); =20 local_irq_save(flags); for (i =3D 0; i < 36; i++) { --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 82BE94B04AB; Mon, 17 Aug 2026 01:57:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931880; cv=none; b=jZWRgTcpbIgtfxaOPS4Eeftk/nRyv1/4hbL2BQHay6P8O/C+yT+vOcO2IDmln7oV8SxR2sbiekp91cNz84egb0okzwQ4iEee9V8UdjmIHvnJzPrjppotaX2FhGyDIzeu/JKZdgKvTUxrhoo7MTRobom/mHq/rjOft0ve1Bd+DY0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931880; c=relaxed/simple; bh=dcg3iD/gt+2/vgZQlnLDpzysml77R8xvheYAw0NtM3A=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=do2se8++NNEouNv5NaKHW1CJVz1E8Z+WMj0MvvazXTBPUyO6K5PYOCIcAimPtJTqyysbEjiBaceYpnhRgnhoEEhf1Ji9tj7pYy5hBGuAs6hAAAAnzsQSGBwgM5w/27l5rh9NNnR2bmPNnVlZ31pdcBwPDAu2MX43n7dbAeZ5Fow= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=JJCaTeY6; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="JJCaTeY6" Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45]) by mailfhigh.phl.internal (Postfix) with ESMTP id BE947140007C; Sun, 16 Aug 2026 21:57:58 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-05.internal (MEProxy); Sun, 16 Aug 2026 21:57:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931878; x= 1787018278; bh=piO4sKeFDiSymjcTWTcDPAGYkgwt0JPmd8ouLvlS69o=; b=J JCaTeY6O2qvlFg9+jAdMFMsbMUF2GlM5REPfq1hvq2ZpXxqFafjYrSUjGNsGTfVR uBvdDK1fu5JwHFY3Ib3beQehmIFK75RT25xq+IhmMUAraIyh1Di0LP/u3dDeFZYj aFy/nOkzKOpsl+rnT8X93ZnOcJlkh0ykCaG/G+bqMpbblaYxeTKCys6D0ggEVkyv RGnT3j4zXurOCyqvw6wqdWgW9gqvC/PqEEd7r2x+rH7ZTr9oh/wXbmNN/bDpo10U Dmky7UEdpC3Dc+UOr8NxtEW55EdU7KBAwagdzu430DMkfCqW5Hys6pbOHCP+RVo8 XwFgRLO0ttaYKQepLysBw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEwVqJtQHEwNT59EY0ApYPfZBP0Ja94nLydKMHdJKlh4zUdbhZ4q8N1TJVlNLX3Jv UG9KBkDhcBzUW3289fayQ1J+ppWFRD446qIAFVyGuquh32EhwbVebEJGoODlbz4hP14Erq Tcjcfi9/5+2rPPMs1Rkxsj0k0e2xO2GH5lY4VVdKIG8VeU2vajU+FMxwg/fEJDgrz1L6RJ d1Tth/Mq5Cy68H4bxVP4faz7GKaqaQIynBu/2nSxBla0bgf41aEpoAjjJxWypL04u/vTxK x5WjWw0TaNT770B0rDvEjO+uKu7yRxr/X4qfgY6A9PKgCt1ahfj+WIbkeb4e64+QxwGFlH Rowr8rfLosiD3NnFBEg1Ru3PCr44RkW31KWsVl1QD+waiaEuJK+eFWka+r6KcC+3jZ/K36 RmMC+JhCWP4fF6IeqSd65BZmHNBsKVur5g+hzM5nY/9TqnKxTHZl18RPVDlIkBUCqUpCwZ kV3u2t8rUoMSeqvkGPrXGZsHzqImSNQM78hBEcbAC804mijjhT+4ujPOASMQmMav6UV4F2 cZWG2768elp3c5FzRlO/KLG3/88C2uC8iedvu3Iun/9zYLWbSPiXeTrNmS48z4crrV6WTp 6kUt2crzVhyvFii+od5zvhkkHPs3dDMUwlwlh0IFoIE/BPJG2UPz1gS7RAEQ X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:57:55 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 23/32] swim: Don't needlessly re-read sectors Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" floppy_read_sectors() is confusing because the `track' variable seems to conflate tracks and cylinders. Rename this variable, eliminate a division operation and adopt suitable integer types. For readahead to work effectively, small sequential reads should not require waiting for spindle rotation. Unfortunately, the present algorithm is very inefficient and does a lot of unnecessary waiting. E.g. if the device is asked to read sectors 1 thru 16, and if sector 9 happens to be under the heads, the driver will proceed to read sectors 9 thru 18, but discard the results, while it waits for sector 1 to arrive. If sector 1 couldn't be read on the first attempt and needs a retry, the driver will proceed to read sectors 2 thru 18, but discard the results, while it waits for sector 1 to come around again. In between reading sector 1 and sector 2, the driver needlessly calls swim_track() and swim_head() again. But what's worse is re-enabling interrupts after each sector, because on a 68030 system this can result in a full rotation between sectors (which is a 3 ms wait). Floppy drivers usually implement a track cache that can be filled in a single rotation to solve problems like these. But I think there is a simpler solution. After stepping the heads, use a sector bitmap to record sectors that were successfully read from the present track. Read (or retry, if need be) requested sectors in whatever sequence they become available. Keep interrupts disabled until the whole track has passed under the read head. swim_read_sector() assumes that it can search a whole track by reading a fixed number of sector headers (essentially, fs->secpertrack) but this assumes no false sector headers are found in the sector contents. To prevent that, call swim_read_sector_data() unconditionally after a valid sector header is found. Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- Changed since v1: - Use GENMASK() macro. - Use fs->secpertrack instead of hard-coding the high-density value. - Don't use a failure counter. - Use unsigned integers where appropriate. - Call swim_read_sector_data() whenever swim_read_sector_header() is successful. A NULL pointer is passed to indicate that no data is to be copied into the buffer. --- drivers/block/swim.c | 96 ++++++++++++++++++++++------------------ drivers/block/swim_asm.S | 12 ++++- 2 files changed, 62 insertions(+), 46 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 38b1643f3702..e35918bdf9d2 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -180,9 +180,9 @@ struct floppy_state { enum media_type type; int write_protected; =20 - int total_secs; - int secpercyl; - int secpertrack; + unsigned int total_secs; + unsigned int secpercyl; + unsigned int secpertrack; =20 /* in-use information */ =20 @@ -452,68 +452,76 @@ static int floppy_eject(struct floppy_state *fs) return 0; } =20 -static inline int swim_read_sector(struct floppy_state *fs, - int side, int track, - int sector, unsigned char *buffer) +static unsigned int swim_read_sector_range(struct floppy_state *fs, + unsigned int side, unsigned int track, + unsigned int start, unsigned int count, + unsigned char *buffer) { struct swim __iomem *base =3D fs->swd->base; unsigned long flags; struct sector_header header; - int ret =3D -1; - short i; + unsigned int i, bits =3D 0; =20 - swim_track(fs, track); - swim_head(base, side); + if (count > 0) { + count =3D min(count, fs->secpertrack); + bits =3D GENMASK(count - 1, 0); + } =20 local_irq_save(flags); - for (i =3D 0; i < 36; i++) { - if (swim_read_sector_header(base, &header) || - swim_read(base, error) || header.track !=3D track || - header.side !=3D side || header.size !=3D 2) - continue; - if (header.sector =3D=3D sector) { - /* found */ - - ret =3D swim_read_sector_data(base, buffer); - if (swim_read(base, error)) - ret =3D -EIO; + for (i =3D 0; i < 5 * fs->secpertrack; i++) { + if (bits =3D=3D 0) /* All sectors were read ok */ break; + + if (swim_read_sector_header(base, &header) =3D=3D 0 && + swim_read(base, error) =3D=3D 0) { + unsigned int offset =3D header.sector - start; + unsigned char *buf =3D NULL; + int len; + + if (header.track =3D=3D track && header.side =3D=3D side && + header.size =3D=3D 2 && header.sector >=3D start && + header.sector < start + count && + (bits & BIT(offset))) + buf =3D buffer + 512 * offset; + len =3D swim_read_sector_data(base, buf); + if (swim_read(base, error) =3D=3D 0 && buf && len =3D=3D 512) + bits &=3D ~BIT(offset); } } local_irq_restore(flags); =20 - return ret; + return bits ? ffs(bits) - 1 : count; /* No. of contiguous ok sectors */ } =20 static blk_status_t floppy_read_sectors(struct floppy_state *fs, - int req_sector, int sectors_nb, - unsigned char *buffer) + unsigned int req_sector, + unsigned int sectors_nb, + unsigned char *buffer) { struct swim __iomem *base =3D fs->swd->base; - int ret; - int side, track, sector; - int i, try; - =20 swim_drive(base, fs->location); swim_READY_timeout(base); =20 - for (i =3D req_sector; i < req_sector + sectors_nb; i++) { - int x; - track =3D i / fs->secpercyl; - x =3D i % fs->secpercyl; - side =3D x / fs->secpertrack; - sector =3D x % fs->secpertrack + 1; - - try =3D 5; - do { - ret =3D swim_read_sector(fs, side, track, sector, - buffer); - if (try-- =3D=3D 0) - return BLK_STS_IOERR; - } while (ret !=3D 512); - - buffer +=3D ret; + while (sectors_nb) { + unsigned int cyl, x, head, sector, n, n_ok; + + cyl =3D req_sector / fs->secpercyl; + x =3D req_sector % fs->secpercyl; + head =3D (x >=3D fs->secpertrack) ? 1 : 0; + sector =3D x % fs->secpertrack; + n =3D min(sectors_nb, fs->secpertrack - sector); + + swim_track(fs, cyl); + swim_head(base, head); + + n_ok =3D swim_read_sector_range(fs, head, cyl, sector + 1, n, buffer); + if (n_ok !=3D n) + return BLK_STS_IOERR; + + buffer +=3D 512 * n; + sectors_nb -=3D n; + req_sector +=3D n; } =20 return 0; diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index 9a7d7466e846..10f4c42ee3ab 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -198,12 +198,14 @@ read_data_loop: dbne %d2, read_data_loop beq data_exit moveq #max_retry, %d2 - moveb %a5@, %a4@+ + moveb %a5@, %d3 + bsr .Lmaybe_store dbra %d4, 1f bra data_crc0 1: andb #.Lhr_fifo_2bytes, %d5 beq read_data_loop - moveb %a5@, %a4@+ + moveb %a5@, %d3 + bsr .Lmaybe_store dbra %d4, read_data_loop =20 /* read CRC */ @@ -240,3 +242,9 @@ data_crc1: data_exit: moveb #0x18, %a3@(write_mode0 - read_mark) rts + +.Lmaybe_store: + tstl %a4 + beq 9f + moveb %d3, %a4@+ +9: rts --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 388545C613; Mon, 17 Aug 2026 01:58:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931890; cv=none; b=M3Ym+1IqPWrcAwaeA204ZjdQCRbDVnjTlQWWyzUQ7hBkTYTKuSnM7RnUfcGIwpv7AEYUMH2XXeRk0kHgZtS5O4q0Qyr0jWltlS5bPIcb/RMGObfx+TlM7WRIwbp9A/3a6yD5LlBOHf26ZA+utNoFx+qZikRXC4KShWX0H8urjhs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931890; c=relaxed/simple; bh=Tg04qOzKzTL+yoyCwQO8PkeL32EGkM6VPDNoy2V0pnc=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=JJKDCgPMaMjfA1YKVSIEKP8SqJcIVd5o2ycGl969YzRTLbH/7qfr1aBhBtSRq7K9JwMBoevCchvhpbjBbeUD+WRhgKEy2wGI8nkQwaaAgv/kyFk62pDn/vK6tZ3x5YT/375oQajXBLOuqLC4gLPwG75B0pIQ5Al6BwA7xPbAbvQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=ImTXONqg; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="ImTXONqg" Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailfout.phl.internal (Postfix) with ESMTP id 6A4DEEC0203; Sun, 16 Aug 2026 21:58:08 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Sun, 16 Aug 2026 21:58:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931888; x= 1787018288; bh=Ab7YBYirSafQd4LQ1mw+KQsbUndvGvyNf+gBAVQA8hw=; b=I mTXONqg8drQ1zc49H0GWXPALfElIv6jFNJnYIIznxfSfIB1np+R1MwIvUx0mUf4R 03/PgtT1mWOtU40dUYsC1fU9Ffj0wsd0jGynB5WeTH3KfRuVXP09hIh5h0UG3R9b Jj7exr0dDn6oBmNBV5UhCSb++vI+kisUVxadXuTl6eQTTbNOQqSoQn765qKqAPD4 EoiQ4iJr/Py86oOA5PQbvNQAzulOAqic+gFxEBsBbKio3Way5nDWgu3jqMieTyrk Dxd2tFVsqctvv0srOBRnqEw+c9I2icxOri+kVHO6r/ZzGl64vLIr9j3Of0Kc6RbU C4svRqDItUQp5v3DUAUWw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEwVqJtQHEwNT59EY0ApYPfZBP0Ja94nLydKMHdJKlh4zUdbhZ4q8N1TJVlNLX3Jv UG9KBkDhcBzUW3289fayQ1J+ppWFRD446qIAFVyGuquh32EhwbVebEJGoODlbz4hP14Erq Tcjcfi9/5+2rPPMs1Rkxsj0k0e2xO2GH5lY4VVdKIG8VeU2vajU+FMxwg/fEJDgrz1L6RJ d1Tth/Mq5Cy68H4bxVP4faz7GKaqaQIynBu/2nSxBla0bgf41aEpoAjjJxWypL04u/vTxK x5WjWw0TaNT770B0rDvEjO+uKu7yRxr/X4qfgY6A9PKgCt1ahfj+WIbkeb4e64+QxwGFNi W1LsbbiikYkHQOcqnEuOPXcB9b2PJedzLa7Af10YusxjecRNJeO/UHzkzu1OZ8a1M2HJ7A 5OlWP/+mYxjhuF9ogldempGmg4oyiqeThEP6rXu5abMInp6Pyyzz9RAYZtQDKAqfdIfMv3 jSq7jctbNEMqL2C6g8bFpbVTXY0Qcs5Vpidfpkhoo3k6I0e391fF43C/JWX0d0i5K7E4it 3ONjX1ztdQghscvgFLHGd+PyRvVKWP6Sul1XzcyU4QnlNDx9irTrLpnPzRAoTwClRAO9/C SJ355aYyg5r2t00wowaMd2E3Bu/as1HZqad6+mwB5HuaJi5FZCHqLBeW5uEw X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:58:06 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <424125c0edf495ccea123ab062b9501ebc5ed06e.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 24/32] swim: Don't search beyond the first data mark Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The ISM chip does an automatic MFM gap/sync search when the Action bit is first set. That search may stop at any of a) post-index gap, b) address field gap or c) data field gap. To find the next sector header, the driver need not search at all. It only has to validate the mark bytes. Once the sector address mark has been validated, swim_read_sector_data() is called to read the sector contents. Between the sector address and data fields lies an intra-sector gap followed by a data field mark. After this mark is validated, the 512-byte data area is read into the IO request buffer. Problem is, if any byte in the data field mark is mis-read, the driver searches the whole sector and then reaches the data field mark in the following sector. The wrong sector is then read into the buffer, and swim_read_sector_data() returns success. The request is silently corrupted. The existing limit on polling loop iterations does constrain the search distance but is inherently tied to CPU speed. This is probably the reason why corruption was only observed on a 68030 system. Discontinue the mark search when the mark bytes fail validation. Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support") Signed-off-by: Finn Thain --- drivers/block/swim_asm.S | 73 ++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index 10f4c42ee3ab..4913470b63e8 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -41,18 +41,45 @@ .equ seek_time, 30000 .equ max_retry, 40 .equ sector_size, 512 + .equ .Lmark_sequence_len, 4 =20 .equ .Lhr_crc_error, 0x02 .equ .Lhr_fifo_2bytes, 0x40 .equ .Lhr_fifo_1byte, 0x80 =20 +.Lmfm_mark_check: + /* + * This subroutine reads and validates a mark byte sequence. + * On entry, %a1 and %d4 shall hold the location and length (resp.) + * of the mark byte array. + * %a2 and %a3 shall hold the locations of the handshake and mark + * registers. + * Returns zero in %d1 for success. + */ + + moveq #-1, %d1 + subq #1, %d4 + movew #seek_time, %d2 + +5: tstb %a2@ + dbmi %d2, 5b + bpl 6f + + moveb %a3@, %d3 + cmpb %a1@+, %d3 + dbne %d4, 5b + bne 6f + + moveq #0, %d1 +6: rts + .global swim_read_sector_header swim_read_sector_header: link %a6, #0 moveml %d1-%d5/%a0-%a5,%sp@- movel %a6@(0x0c), %a4 moveq #-1, %d0 - bsr mfm_read_addrmark + bsr .Lmfm_read_header moveml %sp@+, %d1-%d5/%a0-%a5 unlk %a6 rts @@ -62,33 +89,25 @@ sector_address_mark: sector_data_mark: .byte 0xa1, 0xa1, 0xa1, 0xfb =20 -mfm_read_addrmark: +.Lmfm_read_header: movel %a6@(0x08), %a3 lea %a3@(read_handshake), %a2 lea %a3@(read_data), %a5 lea %a3@(read_mark), %a3 - movew #seek_time, %d2 =20 -wait_header_init: moveb #0x18, %a3@(write_mode0 - read_mark) moveb #0x01, %a3@(write_mode1 - read_mark) moveb #0x01, %a3@(write_mode0 - read_mark) tstb %a3@(read_error - read_mark) moveb #0x08, %a3@(write_mode1 - read_mark) =20 - lea sector_address_mark, %a0 - moveq #3, %d1 - -wait_addr_mark_byte: - - tstb %a2@ - dbmi %d2, wait_addr_mark_byte - bpl signal_nonyb + lea sector_address_mark, %a1 + moveq #.Lmark_sequence_len, %d4 + bsr .Lmfm_mark_check + tstl %d1 + bne signal_nonyb =20 - moveb %a3@, %d3 - cmpb %a0@+, %d3 - dbne %d1, wait_addr_mark_byte - bne wait_header_init + /* read header */ =20 moveq #max_retry, %d2 =20 @@ -163,30 +182,18 @@ mfm_read_data: lea %a3@(read_handshake), %a2 lea %a3@(read_data), %a5 lea %a3@(read_mark), %a3 - movew #seek_time, %d2 =20 -wait_data_init: moveb #0x18, %a3@(write_mode0 - read_mark) moveb #0x01, %a3@(write_mode1 - read_mark) moveb #0x01, %a3@(write_mode0 - read_mark) tstb %a3@(read_error - read_mark) moveb #0x08, %a3@(write_mode1 - read_mark) =20 - lea sector_data_mark, %a0 - moveq #3, %d1 - - /* wait data address mark */ - -wait_data_mark_byte: - - tstb %a2@ - dbmi %d2, wait_data_mark_byte - bpl data_exit - - moveb %a3@, %d3 - cmpb %a0@+, %d3 - dbne %d1, wait_data_mark_byte - bne wait_data_init + lea sector_data_mark, %a1 + moveq #.Lmark_sequence_len, %d4 + bsr .Lmfm_mark_check + tstl %d1 + bne data_exit =20 /* read data */ =20 --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D8FE32771B; Mon, 17 Aug 2026 01:58:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931899; cv=none; b=QsEskLZQy+9ZXWQwv0bHKnlg17YRbWXeqJU5zxXcCDz1GgNpzVOhIVWIuHeq/NTMz3CqhiCz/buAXsq6tMUq8QNSrO1GDQ9p+CJJMty/YdxmHyIGyJSydhhDI44Y329yRfpWzchIzYNNsCfhJwsLi150TI9UMi6DlfRpf8fKnqY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931899; c=relaxed/simple; bh=wiieWZUd6nL8zoSX6OyQBNOzWFQYOm/YPhAbtKr6bVA=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=sytGzV1DXAtQ/rVgqCGb44wLeARllHY4TDN+JtIdgTtqVtwZmkf71Y6aJzgq++zkZ4c365XgDtjX4l69+Sjbn8BqlAKK7i442HEFuv0t6YzWrx+0yusrPUBvRmf1AOqj8mZGxAeqTO7Xc08d+CDLNuC8Wq6weik3UP2uzdzqE+o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Uej4lA9f; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Uej4lA9f" Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id 307D8140007C; Sun, 16 Aug 2026 21:58:17 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Sun, 16 Aug 2026 21:58:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931897; x= 1787018297; bh=R3E+V0l2jmPNw2Z9ewJfuW5dZQD28UZ3evvLYZpCmz4=; b=U ej4lA9f98e6Xtodo0hbDLhTCXhk+QKoWNHDtMX+84gEX8ic2hh6hBAeUTAmqkjvX eo1aLRsK9zrEo7dfLagZfjtT4jL6BGG3wkBiXypbifmJW77IG0uZzhcB62oAJbpV dgYKJhF0PhRgHT6hyR9Wiz5ZXSZd9w9dnOEC5jM0SxOobI32cEWYMjTton6LxV1D FchK5YSRT+nU5cMVecFeEs3otJsu4yE2RXyN4NZs1CAVKEQscuMWDSfAwoWGde6L D5fFVFBVIbPgQdHZUlqZqS8qy+AiTZWf9UguM4LmF644jacAw7Dr9c0glbDzDElr 5H7luvXyU9qsT5NpWWOow== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGGfSHbL2fI02qi3PxN23Kck6mI5WuUw/IvRcvpbY119ewffFmgrLaJZrOewmv0V9 +yVjmNFRAF5v6NwN93pp2/ef5Xe4c3LI9irOXMRuZYHRPaDMJE6WMter/2+BypR/48/QT6 HY5IjuzvgSjmo92SyO1FOx3Pzj+F3Bo7QzXF7kAkGOLlhjpoHeFsUQfm7dkDIAS3zbzZQZ kdzEEhr46dUOQtvTauSfnNDphJtrhISaD9OmmoKzjI1J4txcn9eV52lgr1VrqNf0UkcCn2 OchZn8Fy5DmAdO0OzTlRhd5sxDSBZbWOqIe4VCopfX4yIdP6r//KsVzdicR3q2dH2I0XFW ZVVWrzRLL4oU9B11oA0enZoePPc8c90Y6aEDIxdEbWncEHGIk27oaCXabyRMVJ4Apw8S+T 3w1YhQmsD7ztfuEqrFWJykaJ6Ocvqm4cUBqz1cKxXKR/hzXkqSc2R1LOkw6h8+Tu8CFjda McXddxMgijMuipCioqqarX/GFikyxLBsSU0sgjgeCAEk3ngXl/5+XFM6CKQgmrvUy0HLGF a8v1cvr1Pg/LdnYF6OMhvSAF9vSw1XwKfy/QZzsjvgSOb3LcHZVztlclQS4UGN/DiuRb83 ZlqLK+sKBvhpOYRnJP59jiXXo1ubkKq1o0QwYWJMFokTMJP6k/1fQP0AQvhg X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:58:14 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <6315efe51bde76010582edd511252d606878c096.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 25/32] swim: Remove pointless specifiers Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" If the compiler made these functions "as fast as possible" that wouldn't actually help because they involve slow mechanical operations. Remove pointless inline function specifiers. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index e35918bdf9d2..ae31b302dac4 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -222,7 +222,7 @@ extern int swim_read_sector_data(struct swim __iomem *b= ase, unsigned char *data); =20 static DEFINE_MUTEX(swim_mutex); -static inline void set_swim_mode(struct swim __iomem *base, int enable) +static void set_swim_mode(struct swim __iomem *base, int enable) { struct iwm __iomem *iwm_base =3D (struct iwm __iomem *)base; unsigned long flags; @@ -250,7 +250,7 @@ static inline void set_swim_mode(struct swim __iomem *b= ase, int enable) local_irq_restore(flags); } =20 -static inline int get_swim_mode(struct swim __iomem *base) +static int get_swim_mode(struct swim __iomem *base) { unsigned long flags; =20 @@ -321,7 +321,7 @@ static inline bool swim_readbit(struct swim __iomem *ba= se, int bit) ret; \ }) =20 -static inline void swim_drive(struct swim __iomem *base, +static void swim_drive(struct swim __iomem *base, enum drive_location location) { if (location =3D=3D INTERNAL_DRIVE) { @@ -340,8 +340,8 @@ static inline void swim_drive(struct swim __iomem *base, udelay(1); } =20 -static inline void swim_motor(struct swim __iomem *base, - enum motor_action action) +static void swim_motor(struct swim __iomem *base, + enum motor_action action) { if (action =3D=3D ON) { swim_action(base, MOTOR_ON); @@ -352,7 +352,7 @@ static inline void swim_motor(struct swim __iomem *base, } } =20 -static inline void swim_eject(struct swim __iomem *base) +static void swim_eject(struct swim __iomem *base) { swim_action(base, EJECT); swim_readbit_timeout(base, DISK_IN, false, 2000 * 1000); @@ -367,14 +367,14 @@ static inline void swim_head(struct swim __iomem *bas= e, enum head head) swim_select(base, READ_DATA_0); } =20 -static inline int swim_step(struct swim __iomem *base) +static int swim_step(struct swim __iomem *base) { swim_action(base, STEP); udelay(150); return swim_readbit_timeout(base, STEP, false, 20 * 1000); } =20 -static inline int swim_track00(struct swim __iomem *base) +static int swim_track00(struct swim __iomem *base) { int try; =20 @@ -394,7 +394,7 @@ static inline int swim_track00(struct swim __iomem *bas= e) return -1; } =20 -static inline int swim_seek(struct swim __iomem *base, int step) +static int swim_seek(struct swim __iomem *base, int step) { if (step < 0) { swim_action(base, SEEK_NEGATIVE); @@ -419,7 +419,7 @@ static inline int swim_seek(struct swim __iomem *base, = int step) return 0; } =20 -static inline int swim_track(struct floppy_state *fs, int track) +static int swim_track(struct floppy_state *fs, int track) { struct swim __iomem *base =3D fs->swd->base; int ret; --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9F8F52771B; Mon, 17 Aug 2026 01:58:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931908; cv=none; b=UuX/8IWV+HIIxLIoVvEcBzzX+LI0bPsecXEEDZK5QHOym0J6kOL3Pii1vEm+X7tJNwMeRk/RCg7s0tLvD/HuA+iR7cyQ2v7Vqwo+1CyuUbW6PvU3YlQri2gWWge9Ac3Lqc5/+uYEdibGFz18z9geEuoTvf6yvw4GkGOzEevWc7U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931908; c=relaxed/simple; bh=aXLo1JK6qFUgLHFQIIM/r09ViSkkI2l1Vbvy0xub9j0=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=Gz49vIwsoy5iVtvNm6b1z/224FvLlTl6+cAIuHyc4AM1TzYSWQZBML9hapAz+tJmjYmfNeRAtb088D+C0tIBOeWnryc3nzWxckUm38qg1L9KKIxCyJ+hL5V/bVSalHcgl0qL1uNkG/pyk9/8nlHjH5KFbbEHVBB6FA7OOpsHTko= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=jIH9uMGO; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="jIH9uMGO" Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailfout.phl.internal (Postfix) with ESMTP id ABEC1EC0203; Sun, 16 Aug 2026 21:58:26 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Sun, 16 Aug 2026 21:58:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931906; x= 1787018306; bh=K1LULaoZc5SGoxvsL/uTCXlF5BYDi1pVX97BP2zuHTw=; b=j IH9uMGO6BX4VipXBgEY8bZ7VikQ3Q11bGCrnyArMIDviKFrQFARq9tPA3JXE8RNa w+6em2i+gfR+zfLkCkJWMUEkyuj+gPw4rKvoTO+SXpIED3k0SQRHHK+xDDp0U9Dk P/KDs38ajZc71KyUJTapDk/MamPTCs6ibiHNYvTEfEuW7UEFZXnnOPp1Y/B7ZtLU bkO1JKJmqBYsYTEAN0eWHROj6caLRM37p0jCOpCYDoFncSYDb7lIvUXIoLn2cjtg YZ9eCL93eQxw8LfnDlaGJzyOfLjjkCWyS6aVq88LeBG5dsfGznfh9e7Q0I7+ggOb z1BkVUYeZ6dOa6l3oOlPg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGGfSHbL2fI02qi3PxN23Kck6mI5WuUw/IvRcvpbY119ewffFmgrLaJZrOewmv0V9 +yVjmNFRAF5v6NwN93pp2/ef5Xe4c3LI9irOXMRuZYHRPaDMJE6WMter/2+BypR/48/QT6 HY5IjuzvgSjmo92SyO1FOx3Pzj+F3Bo7QzXF7kAkGOLlhjpoHeFsUQfm7dkDIAS3zbzZQZ kdzEEhr46dUOQtvTauSfnNDphJtrhISaD9OmmoKzjI1J4txcn9eV52lgr1VrqNf0UkcCn2 OchZn8Fy5DmAdO0OzTlRhd5sxDSBZbWOqIe4VCopfX4yIdP6r//KsVzdicR3q2dH2I0XrH U95mLLql20IiJ6F1orgyA0rNkl4tL+Una+djqMYtvAdpRj+9+dZFc353ODd3HEb3pcKQmt GKd+moC1J3lRiQDubiGRhrMO1zl/U0GodMKmBQ4es1frXO7w75LL6Ra5kWV51fSpIyKNNS H5B2p1gjAZqm/Jm0P1YEJv/JrZ+4L53OTZwlT8tgE8vRWIlJ095Z02IIY6MoCENLAk5CYq 6KU1CkAwpUZBsaZlQrfbMVzfE/PlqD8gBoU4I2toN0I4rVpF6NpFM5HVKWpZHd3FHRXUi+ yYo+BslZXhFcRaLOx0DJ3kKgutk6YTS0+2U+k71hrqXLdzkPeGWW3kJO0ehg X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:58:24 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <2edba6fa539e96afc0e9412ea81843b3523b60b4.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 26/32] swim: Move swd initialization Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" For better readability, initialize the swd backpointer along with the other floppy_state struct members. No functional change. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index ae31b302dac4..c204108c50f0 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -761,6 +761,7 @@ static void swim_add_floppy(struct swim_priv *swd, enum= drive_location location) if (swim_track00(base)) goto out; =20 + fs->swd =3D swd; fs->location =3D location; =20 fs->type =3D HD_MEDIA; @@ -849,8 +850,6 @@ static int swim_floppy_init(struct platform_device *pde= v) err =3D PTR_ERR(swd->unit[drive].disk); goto exit_put_disks; } - - swd->unit[drive].swd =3D swd; } =20 for (drive =3D 0; drive < swd->floppy_count; drive++) { --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CAA27155A5D; Mon, 17 Aug 2026 01:58:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931927; cv=none; b=aHR736iKBgkcQxgYKQC5KxWawgTHU50EJRqYQ1wt2oy7PYpPK8x6DbpCEcF49sTYDOSRuyMdIY7uuzIhdoYjTZDc9ccXAs9WZ2d/Jgt3AjEKKFfnAKdAgRwSt9c8EGuE03D3iitohlV3M2twAh0wdowzIfO5nafz/KKtrDZN1Ig= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931927; c=relaxed/simple; bh=HWkyZHRyWrtpf7FWd6YnGFTMjfjQtzKT9uRvwHZoCQQ=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=th/phc+JxQVN0rGUdaLp9AT0F+SoIL3qP6isVyWgUbgLYMFl+S6wO2fw4jfQb8h5NTJ132b9HFrZGSiuO683LX5uAIjeGX/febMOsX1WnreesrTjQA084H7N1nbcTAmdjK0xnlLKD9rDiVpwkhli/+PR1Sn+oABaLoRbLMee94k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Gxr09Ao+; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Gxr09Ao+" Received: from phl-compute-08.internal (phl-compute-08.internal [10.202.2.48]) by mailfout.phl.internal (Postfix) with ESMTP id 4E803EC0203; Sun, 16 Aug 2026 21:58:35 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-08.internal (MEProxy); Sun, 16 Aug 2026 21:58:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931915; x= 1787018315; bh=8eo/+n4lyCg/6TAXGck/31U5uUVgWUR3kI+EQkD9Tdw=; b=G xr09Ao+jPeH/UlQGGzzP2ngbhy0woJVjzBt+aeMnPCAsZPVrJxOIDNbKvrFY/pNh zywwJP5cVGQEcF2G5n/pPJHOy7+zgMXtjnq6L/nNHVA6SyDilUD9w3VD7UZGsFtb s4Gjcsps7zweazd64BNiIJ8GppBwY54bYgS88AKnBF3/sJ8X7d1wMBOPAGoD3Z8K hFL/IJDkwiVkG1ly8d9l27re6xsUMNFXwo/QvricJR9d4Q9QK+F4QbmsykZFDo0/ w7t4LY5S4Xp0RVG4bdGQJD/kax2d12MBRAXd152msKEkzYHIhDbUc3CkFmO28DBh E4NQ2P9SjKxrkNAsR0hwQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTFZjhdRphDnLxi+EiC+UjlbVLklrWdi+UybHaosTezjB2ZKWMGxBbpbKJYI8cz0VH CGJ0X/MYpe0L34T/rx8Izbv4joS66ns4i0E3ZQJBDO62LB9tEs5vYMuKUhO64naQDl8Th4 QxG9JsCNTPWdAqIV21+NY4iXot0J8pyq5i3cIKh2KcvISy2fhdyxm0Nwb66hFUncaGsllW nddZux2ajhUpbLVK9IvIalEPPIts6Zn4VZmUl9ZRmcgSxO7UZxviA5px3hYEyHasA5LPXQ Z7JUOZBuH6yi+nnvLJHjm2ZEkIGw7YB6gJlCGB7eojPkjz177huLlOppXLolj6IGdkT6kp zkSLQDEf49QsykJltzP6ZqFEK6k2USCUG3mnVK4uAsfJ0WsXUT06pSMjDBjoPjhjp84/6F apmJQD0tLtX3xkbI/9ASGBQs/3H3A+6lnOj03WsIhAGTieKyI2oReaKu8gixXOVNVY/ZK+ pLiDb9DQL8eRMmnseV8d0U3pvLiEgs/MIZ/lEcMFh5J03Z4u+BQCrLeCTKuvVK1me8cRdO hldlQEoJsxiSi4VxpOzhzTIqlMU77OmTYiTxnaDGMvRgENxuMLRr0sdagyTCRSpJm9nbYc InYd28DiQf89WReZ34qNN0zZaekz1E3MIazsrHkt7HdPDDmVtrtJno7Tm8dw X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:58:33 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <3a8f6f7252e44358bd366ccc28d837a5cf7b5080.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 27/32] swim: Add some helpful references Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" These documents relate to the IWM, ISM, SWIM 1, 2, 3 and associated disk drives. No functional change. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index c204108c50f0..d7182f95c21d 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -8,6 +8,14 @@ * based on SWIM3 driver (c) Paul Mackerras, 1996 * based on netBSD IWM driver (c) 1997, 1998 Hauke Fath. * + * See also: + * Inside Macintosh, vol. III, ch. 2 + * https://archive.org/details/SWIMDesignDocs + * NEC uPD72070 FDC datasheet + * mkLinux source file swimiiicommonhal.c + * http://www.mac.linux-m68k.org/devel/iwm.php.html + * MAME source file sonydriv.cpp + * * 2004-08-21 (lv) - Initial implementation * 2008-10-30 (lv) - Port to 2.6 */ --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A82512771B; Mon, 17 Aug 2026 01:58:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931929; cv=none; b=VWGWDZFymoC9XyVSoBoec3o5gDoE8kX9ycvHl1qOuJz8+lohKBDGNCkqr8IE2uBZufd3q1s17grjDeDDbA/RkhkVTNesXV/+mBMzDHIMlVJWExR8mqBMOAl1xhop3R4Ywfp3SD/lpvFOoy6v5muDmpHRQXoX9z3ZWITxj2i3pUc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931929; c=relaxed/simple; bh=54K/A9i/HH1+WS7iAJeDoWE/ROR015M5fMtY2mRCmFQ=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=OZQVvqoqMtzdUWQkNvZbBH2RV6hGTtYLhOYCUTngALBspXN9WCud8LE98OFYJsjPi9NDPmCQQWN/rmT2blNkCjBwbteTMsPRUsgj7Lzo3ON51ODTM4G6UCsCiBGt377Lu4I4a2xffy8/xvBlJdrwMFsZ6zxUzLqbYMgXHncwvcI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=dt15SJoa; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="dt15SJoa" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id 5A020EC021D; Sun, 16 Aug 2026 21:58:45 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-02.internal (MEProxy); Sun, 16 Aug 2026 21:58:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931925; x= 1787018325; bh=CADlbh3DZbTdQsPB9Go+KlO7rugQ3loMjKFZLF/cQZI=; b=d t15SJoaJOeZrJf64MJUA1sc9wOvnblRDYwOD5PjdzISSXpbSv+HByRPavsvh6494 YZT3hfnTFmXPiwqdciXX9pslLcu336pqt6Y4Lhjs9Y4SfcobFtf/EIjtaT3an9yy HU7lM3G638iFyPbH68vhfgBE2vri9WvMDMVIriEVYT3D8mx+6b5p3qzgSgXFSyQC 3tQSXBlx9uhKe3F0Ir6pOB4XEXSR0e24TdBFNLQpIJEcRbMTj7Q1U2My04VJUwLK KerdWRm9R2Vu263J7AusCL1PLhICsIcwji2bCHuXIFtkDfmq8T41u09JmKRcY78t oh7P8SHWnFBH5SsfDfyTg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGGfSHbL2fI02qi3PxN23Kck6mI5WuUw/IvRcvpbY119ewffFmgrLaJZrOewmv0V9 +yVjmNFRAF5v6NwN93pp2/ef5Xe4c3LI9irOXMRuZYHRPaDMJE6WMter/2+BypR/48/QT6 HY5IjuzvgSjmo92SyO1FOx3Pzj+F3Bo7QzXF7kAkGOLlhjpoHeFsUQfm7dkDIAS3zbzZQZ kdzEEhr46dUOQtvTauSfnNDphJtrhISaD9OmmoKzjI1J4txcn9eV52lgr1VrqNf0UkcCn2 OchZn8Fy5DmAdO0OzTlRhd5sxDSBZbWOqIe4VCopfX4yIdP6r//KsVzdicR3q2dH2I0XLi 1pUzVeTTthPNKP72IAOBNG6b1fmICju+0U6R8mLnbtHG5/F2oaMv1jn6kCsoblxROScv+H SK9zzSAvd1nY4hZ/g8FywTx6VbXQ/+BuefoMDjrlulWdZa+ceGW/CW03pBCHntEWTr+dPn qrk+Nt0kDy1RR2VHdp+JXmpKLJDLeim1UbbU02MMbyKTQEziRJd9rNQap+VxkeMCf/nJ6J U4n5FsA8+OX13XMT3M3/Q71pZaAz7O1UjIokZwtKRuhDpa41s33YQYSSSBLq5IYwmclK4J rteSVWO5wn9gkDH1/Z2nU44FlN0JjjgR6XcsazZwB+izI92J8hRzD8BnA6iw X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:58:43 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 28/32] swim: Remove unused macro definitions Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Also remove the horizontal rule at the end of the macro definitions as it doesn't any add value, IMO. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index d7182f95c21d..aebebc7f5d60 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -130,25 +130,14 @@ struct iwm { =20 /* Bits in handshake register */ =20 -#define MARK_BYTE 0x01 -#define CRC_ZERO 0x02 -#define RDDATA 0x04 #define SENSE 0x08 -#define MOTEN 0x10 -#define ERROR 0x20 #define DAT2BYTE 0x40 #define DAT1BYTE 0x80 =20 /* bits in setup register */ =20 -#define S_INV_WDATA 0x01 -#define S_3_5_SELECT 0x02 -#define S_GCR 0x04 #define S_FCLK_DIV2 0x08 -#define S_ERROR_CORR 0x10 #define S_IBM_DRIVE 0x20 -#define S_GCR_WRITE 0x40 -#define S_TIMEOUT 0x80 =20 /* bits in mode register */ =20 @@ -157,12 +146,9 @@ struct iwm { #define ENBL2 0x04 #define ACTION 0x08 #define WRITE_MODE 0x10 -#define HEDSEL 0x20 #define ISM_SELECT 0x40 #define MOTON 0x80 =20 -/*------------------------------------------------------------------------= ----*/ - enum drive_location { NO_DRIVE =3D 0, INTERNAL_DRIVE =3D BIT(1), --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7CE8F2FE042; Mon, 17 Aug 2026 01:58:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931940; cv=none; b=Ww8vG3DY1hR9DVP4YurfNhcWG41/NNtJCpzEe28cKzLl9Ry4h/fvCzzHr1zGdgsbodn8vqtJ7M66vKOshb8g2veZOrMlG1hbQWF2f2eBGo8l/bNhb3KMjdppOL+u3WJQfQYWIs3SDFvigQ9P4OOIrPpSfFtiAjG+i0Eac5Vj8PE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931940; c=relaxed/simple; bh=FwZDEwmNglnkLDe5fuVmoSRNaZw9EmBOqqabBVimuDQ=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=cSC2IaOaLs0MBOqqM+Nv5Dc3UidheCrgIx0GJs85K4G5uarOu4ortM/TFjEJwLYCabIc9lgtxhEexUXyzJ11MIkmHUQSU6ytwOmuPngHJbUQY0elAbBzJor7tL65JMCpjEYXEPa7IFxLlmNB+ZaRRde8RbS2J+UmhXOpGFgisaQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=SFrKr3cM; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="SFrKr3cM" Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfout.phl.internal (Postfix) with ESMTP id 075DCEC01FD; Sun, 16 Aug 2026 21:58:57 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-04.internal (MEProxy); Sun, 16 Aug 2026 21:58:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931937; x= 1787018337; bh=pBoWBSTjBbUK2X8IBsJBEID+BjT/Bw79Z0RjWiWCmcA=; b=S FrKr3cMufXGNe1nl+LBLsNZKY3SiJ0S9C8SwiKpf3ErlsSOcIy9ioesCy0kRuRg7 6WDfOIILANBk3Ih+KmKI85N0DOiu15ZklLFYhMM2/j6TBF6ujBFHuIMXDN3wI/vW iZWglxW/3N7nC8A8P4KB29Q7XmLPdB8h+ypjX5Un2suy6daQw9r5cf5KX1u1txbv V201jYQBZBndKvdubQ5dPge5ha/k70CSIk+s2QF1MB5xpN81+W6nNkaUdTQ3ZeUQ bbLMDbn30YCUBGqmJSceq83unjIdrTF+4Xfq12Mn6G/0fTrU9G/Hqze9TXawJX9L yz+N9VK40FVJDKEOFjS4A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEwVqJtQHEwNT59EY0ApYPfZBP0Ja94nLydKMHdJKlh4zUdbhZ4q8N1TJVlNLX3Jv UG9KBkDhcBzUW3289fayQ1J+ppWFRD446qIAFVyGuquh32EhwbVebEJGoODlbz4hP14Erq Tcjcfi9/5+2rPPMs1Rkxsj0k0e2xO2GH5lY4VVdKIG8VeU2vajU+FMxwg/fEJDgrz1L6RJ d1Tth/Mq5Cy68H4bxVP4faz7GKaqaQIynBu/2nSxBla0bgf41aEpoAjjJxWypL04u/vTxK x5WjWw0TaNT770B0rDvEjO+uKu7yRxr/X4qfgY6A9PKgCt1ahfj+WIbkeb4e64+QxwGFl8 abUQjnnvdJOfJUO7ZqR1Tt1zl5DxA62Ks/zY5T8Y1ys4sGbGmBR8F+8n6SY/nk9MYfENNa 6dCieEaMtrKz0P9UevWPiolEVTawukPv9BWY61c09f6PovTymSG/8a0j+Ce8byIoJTJmC9 Qly5I9ncL0x7dEXrwe3SeCvPxI04QL+uTU0DjopBkE4Qhb8lptdRbGKAhgnZEh7cFEhPxO Fflb6f+4B3FaheE70Hyh1uXeLAkE+4F2Z/vxB9ruM5s2FAjv424CkUCR16z832U1xDcojH rFPo5gQ2KZwd0QJbRhzJV7p41coDFIGKbHZnMxQXOwI7yKL8jN3LG+JD2s9A X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:58:54 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <26e2373aca64ad3e7fbc3f170f26315d1e445d75.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 29/32] swim: Clean up whitespace Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" No functional changes. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 46 +++++++++++++++++++++------------------- drivers/block/swim_asm.S | 14 +++--------- 2 files changed, 27 insertions(+), 33 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index aebebc7f5d60..73d11e827e5d 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -2,7 +2,7 @@ /* * Driver for SWIM (Sander Woz Integrated Machine) floppy controller * - * Copyright (C) 2004,2008 Laurent Vivier + * Copyright (C) 2004, 2008 Laurent Vivier * * based on Alastair Bridgewater SWIM analysis, 2001 * based on SWIM3 driver (c) Paul Mackerras, 1996 @@ -69,7 +69,7 @@ struct swim { REG(read_handshake) } __attribute__((packed)); =20 -#define swim_write(base, reg, v) out_8(&(base)->write_##reg, (v)) +#define swim_write(base, reg, v) out_8(&(base)->write_##reg, (v)) #define swim_read(base, reg) in_8(&(base)->read_##reg) =20 /* IWM registers */ @@ -93,7 +93,7 @@ struct iwm { REG(q7H) } __attribute__((packed)); =20 -#define iwm_write(base, reg, v) out_8(&(base)->reg, (v)) +#define iwm_write(base, reg, v) out_8(&(base)->reg, (v)) #define iwm_read(base, reg) in_8(&(base)->reg) =20 /* Bits in phase register */ @@ -165,23 +165,23 @@ struct floppy_state { /* physical properties */ =20 enum drive_location location; /* internal or external drive */ - int head_number; /* single- or double-sided drive */ + int head_number; /* single- or double-sided drive */ =20 /* media */ =20 - int disk_in; - int ejected; - enum media_type type; - int write_protected; + int disk_in; + int ejected; + enum media_type type; + int write_protected; =20 - unsigned int total_secs; - unsigned int secpercyl; - unsigned int secpertrack; + unsigned int total_secs; + unsigned int secpercyl; + unsigned int secpertrack; =20 /* in-use information */ =20 - int track; - int ref_count; + int track; + int ref_count; bool registered; =20 struct gendisk *disk; @@ -216,6 +216,7 @@ extern int swim_read_sector_data(struct swim __iomem *b= ase, unsigned char *data); =20 static DEFINE_MUTEX(swim_mutex); + static void set_swim_mode(struct swim __iomem *base, int enable) { struct iwm __iomem *iwm_base =3D (struct iwm __iomem *)base; @@ -402,7 +403,7 @@ static int swim_seek(struct swim __iomem *base, int ste= p) if (step =3D=3D 0) return 0; =20 - for ( ; step > 0; step--) { + for (; step > 0; step--) { if (swim_step(base)) return -1; } @@ -413,7 +414,7 @@ static int swim_seek(struct swim __iomem *base, int ste= p) return 0; } =20 -static int swim_track(struct floppy_state *fs, int track) +static int swim_track(struct floppy_state *fs, int track) { struct swim __iomem *base =3D fs->swd->base; int ret; @@ -552,10 +553,10 @@ static blk_status_t swim_queue_rq(struct blk_mq_hw_ct= x *hctx, } =20 static struct floppy_struct floppy_type[4] =3D { - { 0, 0, 0, 0, 0, 0x00, 0x00, 0x00, 0x00, NULL }, /* no testing */ + { 0, 0, 0, 0, 0, 0x00, 0x00, 0x00, 0x00, NULL }, /* no testing */ { 720, 9, 1, 80, 0, 0x2A, 0x02, 0xDF, 0x50, NULL }, /* 360KB SS 3.5"*/ - { 1440, 9, 2, 80, 0, 0x2A, 0x02, 0xDF, 0x50, NULL }, /* 720KB 3.5" */ - { 2880, 18, 2, 80, 0, 0x1B, 0x00, 0xCF, 0x6C, NULL }, /* 1.44MB 3.5" */ + { 1440, 9, 2, 80, 0, 0x2A, 0x02, 0xDF, 0x50, NULL }, /* 720KB 3.5" */ + { 2880, 18, 2, 80, 0, 0x1B, 0x00, 0xCF, 0x6C, NULL }, /* 1.44MB 3.5" */ }; =20 static int get_floppy_geometry(struct floppy_state *fs, int type, @@ -582,10 +583,11 @@ static void setup_medium(struct floppy_state *fs) =20 if (swim_readbit(base, DISK_IN)) { struct floppy_struct *g; + fs->disk_in =3D 1; fs->write_protected =3D swim_readbit(base, WRITE_PROT); fs->type =3D swim_readbit(base, TWOMEG_MEDIA) ? - HD_MEDIA : DD_MEDIA; + HD_MEDIA : DD_MEDIA; fs->head_number =3D swim_readbit(base, SINGLE_SIDED) ? 1 : 2; get_floppy_geometry(fs, 0, &g); fs->total_secs =3D g->size; @@ -687,7 +689,7 @@ static int floppy_ioctl(struct block_device *bdev, blk_= mode_t mode, int err; =20 if ((cmd & 0x80) && !capable(CAP_SYS_ADMIN)) - return -EPERM; + return -EPERM; =20 switch (cmd) { case FDEJECT: @@ -805,7 +807,7 @@ static int swim_floppy_init(struct platform_device *pde= v) struct swim_priv *swd =3D platform_get_drvdata(pdev); unsigned int *data =3D pdev->dev.platform_data; struct queue_limits lim =3D { - .features =3D BLK_FEAT_ROTATIONAL, + .features =3D BLK_FEAT_ROTATIONAL, }; int err; int drive; @@ -957,7 +959,7 @@ static void swim_remove(struct platform_device *dev) static struct platform_driver swim_driver =3D { .probe =3D swim_probe, .remove =3D swim_remove, - .driver =3D { + .driver =3D { .name =3D CARDNAME, }, }; diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index 4913470b63e8..c8a89c0c4652 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -5,7 +5,7 @@ * needs assembly language because is very timing dependent * this controller exists only on macintosh 680x0 based * - * Copyright (C) 2004,2008 Laurent Vivier + * Copyright (C) 2004, 2008 Laurent Vivier * * based on Alastair Bridgewater SWIM analysis, 2001 * based on netBSD IWM driver (c) 1997, 1998 Hauke Fath. @@ -110,7 +110,6 @@ sector_data_mark: /* read header */ =20 moveq #max_retry, %d2 - amark0: tstb %a2@ dbmi %d2, amark0 bpl signal_nonyb @@ -118,7 +117,6 @@ amark0: tstb %a2@ moveb %a5@, %a4@(o_track) =20 moveq #max_retry, %d2 - amark1: tstb %a2@ dbmi %d2, amark1 bpl signal_nonyb @@ -126,7 +124,6 @@ amark1: tstb %a2@ moveb %a5@, %a4@(o_side) =20 moveq #max_retry, %d2 - amark2: tstb %a2@ dbmi %d2, amark2 bpl signal_nonyb @@ -134,7 +131,6 @@ amark2: tstb %a2@ moveb %a5@, %a4@(o_sector) =20 moveq #max_retry, %d2 - amark3: tstb %a2@ dbmi %d2, amark3 bpl signal_nonyb @@ -142,7 +138,6 @@ amark3: tstb %a2@ moveb %a5@, %a4@(o_size) =20 moveq #max_retry, %d2 - crc0: tstb %a2@ dbmi %d2, crc0 bpl signal_nonyb @@ -150,7 +145,6 @@ crc0: tstb %a2@ moveb %a5@, %a4@(o_crc0) =20 moveq #max_retry, %d2 - crc1: moveb %a2@, %d5 dbmi %d2, crc1 bpl signal_nonyb @@ -197,13 +191,14 @@ mfm_read_data: =20 /* read data */ =20 - movel #sector_size-1, %d4 /* sector size */ + movel #sector_size - 1, %d4 /* sector size */ movew #max_retry, %d2 read_data_loop: moveb %a2@, %d5 andb #(.Lhr_fifo_1byte + .Lhr_fifo_2bytes), %d5 dbne %d2, read_data_loop beq data_exit + moveq #max_retry, %d2 moveb %a5@, %d3 bsr .Lmaybe_store @@ -219,7 +214,6 @@ read_data_loop: =20 movew #max_retry, %d2 data_crc0: - tstb %a2@ dbmi %d2, data_crc0 bpl data_exit @@ -227,9 +221,7 @@ data_crc0: moveb %a5@, %d2 =20 moveq #max_retry, %d2 - data_crc1: - moveb %a2@, %d5 dbmi %d2, data_crc1 bpl data_exit --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F3DD157487; Mon, 17 Aug 2026 01:59:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931951; cv=none; b=jrr5J5e4ZaiQDK5AbaeSRs+Zi784+abO5h4ZutHZQ/viToFl8LOx6ivXSkGVa1pFu22sEKskTJFmeJZSuqLVTB7xMVUzgLw0HXTvK2YHKITetCTuq13FcP9O7+ZKkI1Fbt8slE1yxnzCgtbAeSCBb39OB+9gw4nj6kbS2D35WiY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931951; c=relaxed/simple; bh=eULRCd2QNmGkSZHMs5L7TaejLX2Kvi8+kNfHo1iDsQ4=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=KcTY8sXVhZ4q7paVachueuSSYVZGg67YWgn05epAQSYWBk3d8bS69zxH5tot0B24UKGYn62c37Ro7dUYcXntF65P4sLWo/tI1ep0Y3C/TI+FUIUJVvLKcSPjgjTSk2T1CS0jWLq0GWyNKen8lSzIIVnyp3D4+alMfAUuJthiOSE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=EUj8xtBc; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="EUj8xtBc" Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfout.phl.internal (Postfix) with ESMTP id 85CCEEC01FD; Sun, 16 Aug 2026 21:59:06 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Sun, 16 Aug 2026 21:59:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931946; x= 1787018346; bh=R1DE2V6SDVx8ZYGFLLkdM80PuBCPxQvp8Lue6HaFsPI=; b=E Uj8xtBcLitJa5VJDYd4uUjIPXg+S6JhhI7K+nkbBOwZeY8gwY4uGqbrzzrN6COxS toF49eta6RKBRm6fmMqmkAJ98kNPqqHp+YmC7pxbsdCl9ROC/zyYJpPnCKJDZ/Uy 8sUvcH1fnjXb47OvO+wXEn6jRy00MWuUGrk4PniLir6Xl/KE/KspcltY2LojolQC tOPyZQBNdLcFXWDKl18ACzerQpbO9znhwdxw11z+Le3pwvIPYdqFP8Z0TEPkG3U1 AN+LejvRdDAye6+fPa9TcVH+iMbzrbdKCmUuCq5y3IzZwTUrvAl29dH1NrMFXwOs 6KozPlubMZwrKJWhWiAww== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEcdm/H6lUz/GNYCURxrkCd1HPfYRd3zhai/6cdZjeenE7g5xoDzlQAxk+7iMQq6v xV9q7s5fsS3/JQzvNsjwyK/4cWW065gbm2GoN84iHcVNvAdCqKzmKSHTb8iEr45WtpyqeY cz4yU9C9Fo2z94qtPVV3dAzmSvJhNew7HqXMqftu0soscmI1GAdFoXf04kdvALh7XeUIuU Tuk2XE2OeIJdmWhM+PiCh0JMVi0kltBn7CwQl945VNkrHoqGgbuYhi8WoWtxLKIumeRTK5 /WtK4yCHPyxyd9XATZrYk7BUHibsQzupfidfoh//hSLpDEkVyPVHII4Kj/fp06fOz7jScy aSnZHqetEhng4HTldt/HSedMyjo7oqymf/lePQMOy4DCklTcyOrZsCFmQIyMkE+uosH47D wmxPu2WMeEfNWOeugifdCZ7aFavyTjP8z3o16+FzrOnSGyx+lYmBRHaczW+V9NsYd6zC0c E30cbMw865pdw/qcCh+1PAksFsChTK03c8UvKBI00VXmFbhz+naDMslRUL3pL3j0lPjU14 3xwFZCsKBwvzcAMXrnJH6cSPhFTKb8qMh0VW08Ysv3cFoPFbx1vDk8xxgHlGb1qtokBRkK pSnMWPO4w2VmbLsGdC/oGEkRv9/bJBJQYEw3kedkaZv1kIbd59coaryht2NQ X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:59:04 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <1839f5862246006d5aab0841d95ae0793bd3638f.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 30/32] swim: Define macros for constants Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Define a SEL_MASK macro to name the anonymous constant. Define STEPPING rather than re-use STEP because the latter is a command bit macro (see also GCR_MODE vs. SETGCR). No functional change, just better readability. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/block/swim.c b/drivers/block/swim.c index 73d11e827e5d..69ac02b8b256 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -105,6 +105,8 @@ struct iwm { =20 /* Select values for swim_select and swim_readbit */ =20 +#define SEL_MASK 0x100 + #define SEEK_POSITIVE 0x000 #define SEEK_NEGATIVE 0x004 #define STEP 0x001 @@ -115,6 +117,7 @@ struct iwm { #define SETMFM 0x101 #define SETGCR 0x105 =20 +#define STEPPING 0x001 #define READ_DATA_0 0x004 #define ONEMEG_DRIVE 0x005 #define SINGLE_SIDED 0x006 @@ -271,7 +274,7 @@ static inline void swim_select(struct swim __iomem *bas= e, int sel) { swim_write(base, phase, RELAX | PHASE_PIN_DIR); =20 - via1_set_head(sel & 0x100); + via1_set_head(sel & SEL_MASK); =20 swim_write(base, phase, (sel & CA_MASK) | PHASE_PIN_DIR); } @@ -366,7 +369,7 @@ static int swim_step(struct swim __iomem *base) { swim_action(base, STEP); udelay(150); - return swim_readbit_timeout(base, STEP, false, 20 * 1000); + return swim_readbit_timeout(base, STEPPING, false, 20 * 1000); } =20 static int swim_track00(struct swim __iomem *base) --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4CEB25C613; Mon, 17 Aug 2026 01:59:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931960; cv=none; b=esQDrDa8Zi7WcOFVqbXSpJxCMgDZXyx1dYZbBNdNhvEhPY64QoxbzEs1wRVorSUDfQoCBhVy5q5ZoDgUSghRF7Y1EglMbXIEU/k4WXArAKuIzXmmjfuVGCalis9P87Kwu9C/nEk9nsQJmahhWGpjvm7pH+IDjU8ZPcGQduo36Ms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931960; c=relaxed/simple; bh=0xuk6TnKYAVzw5FvX0PIS3Cy5Fp5zmJy3gwVpmwgpOk=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=cHyw0GlL1CXvRtgJd7XaP6ohLXYRUVgpr7c8HKk/16eODBHf+/AgXw4wiXWlLJwa/9FasVlV/yu2eVSwCkuwKtTc5+b6laQqMfi31rTTIGxCqNwOS6KXydgTXFGLoN/YZZaOzQgBgJyWukYw0HAqAIauipPHBwr8yQm9x6lVmkc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=eqULysQJ; arc=none smtp.client-ip=103.168.172.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="eqULysQJ" Received: from phl-compute-10.internal (phl-compute-10.internal [10.202.2.50]) by mailfhigh.phl.internal (Postfix) with ESMTP id F0752140007C; Sun, 16 Aug 2026 21:59:14 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-10.internal (MEProxy); Sun, 16 Aug 2026 21:59:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931954; x= 1787018354; bh=SF5/27k6mqkcIknUDzTkpQ0LJAbABrpsXZAN5ZB4xw4=; b=e qULysQJnMFPwXRY5a0QhMCvqaHpz79tbjfjL6tPuW/IdP925rOB99V6nLilpTdnp SFFPp+GfPKPJzOKVuGaMBydgbXppw7iMfGIYR+lvdoHO2VmXPzPef5j0dkNAxb/q E3C2FbgLE9B3ww6+vW+S3hMz/RCvumNcZ8zSszMZi7KQbX/ASzZVRzRujbVurIGF kp8HiU3E1kF75lwL0jWhdsvJoAN8BlhLfmZtyPQKxQ3r+WP3wpquz+Evzurqt8ov Xq5k0KFOMftMzGsPjBpVU0oY33a5qP7aV/hHfa639/+xC9FvlOSvmr9adlNKKLti EtAgMBzx9cH1R3fCGpDZQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEwVqJtQHEwNT59EY0ApYPfZBP0Ja94nLydKMHdJKlh4zUdbhZ4q8N1TJVlNLX3Jv UG9KBkDhcBzUW3289fayQ1J+ppWFRD446qIAFVyGuquh32EhwbVebEJGoODlbz4hP14Erq Tcjcfi9/5+2rPPMs1Rkxsj0k0e2xO2GH5lY4VVdKIG8VeU2vajU+FMxwg/fEJDgrz1L6RJ d1Tth/Mq5Cy68H4bxVP4faz7GKaqaQIynBu/2nSxBla0bgf41aEpoAjjJxWypL04u/vTxK x5WjWw0TaNT770B0rDvEjO+uKu7yRxr/X4qfgY6A9PKgCt1ahfj+WIbkeb4e64+QxwGFCf f9NIuyQjvn28CSfxV+ol7tzRWPZj5u9Hrg40Jomn4ma1cPRt56gk5bgy2LnP4as8AMyWBG eMAUo4y++oSDSI3zrb8GvFhTiGe4GiaanVzN7XwqiNTy2/yfT8lMrBi7XdK6lN1MpK7kSf oZPXyKeAKxAQtpxmq70Xjs21iZxDlOfCdlLW5wBl5o2fgMlrxar/aQc3eEW+AlgsQBZCPh rqMA8Wni2h4a7B04xRQZOq9e5DK5X+PzVGmMiXVQ7p+BPNxhdoQCqP/Er2H0r/2pEpewjs e7Ut+zgTf0kqikuTiQyTeggSlIM5MrABF+o+t0v1qB+wlgX2qZ1TSTHswmZQ X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:59:12 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <8ff8fb2deceab8df1e3786105b291fdc15b7eaf3.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 31/32] swim: Define symbols for constants Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Define local symbols to give some meaning to anonymous constants. No functional change. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim_asm.S | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index c8a89c0c4652..c78efc30082a 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -43,6 +43,10 @@ .equ sector_size, 512 .equ .Lmark_sequence_len, 4 =20 + .equ .Lmr_clear_fifo, 0x01 + .equ .Lmr_action, 0x08 + .equ .Lmr_write_action, 0x18 + .equ .Lhr_crc_error, 0x02 .equ .Lhr_fifo_2bytes, 0x40 .equ .Lhr_fifo_1byte, 0x80 @@ -95,11 +99,11 @@ sector_data_mark: lea %a3@(read_data), %a5 lea %a3@(read_mark), %a3 =20 - moveb #0x18, %a3@(write_mode0 - read_mark) - moveb #0x01, %a3@(write_mode1 - read_mark) - moveb #0x01, %a3@(write_mode0 - read_mark) + moveb #.Lmr_write_action, %a3@(write_mode0 - read_mark) + moveb #.Lmr_clear_fifo, %a3@(write_mode1 - read_mark) + moveb #.Lmr_clear_fifo, %a3@(write_mode0 - read_mark) tstb %a3@(read_error - read_mark) - moveb #0x08, %a3@(write_mode1 - read_mark) + moveb #.Lmr_action, %a3@(write_mode1 - read_mark) =20 lea sector_address_mark, %a1 moveq #.Lmark_sequence_len, %d4 @@ -157,7 +161,7 @@ crc1: moveb %a2@, %d5 =20 moveq #0, %d0 signal_nonyb: - moveb #0x18, %a3@(write_mode0 - read_mark) + moveb #.Lmr_write_action, %a3@(write_mode0 - read_mark) rts =20 .global swim_read_sector_data @@ -177,11 +181,11 @@ mfm_read_data: lea %a3@(read_data), %a5 lea %a3@(read_mark), %a3 =20 - moveb #0x18, %a3@(write_mode0 - read_mark) - moveb #0x01, %a3@(write_mode1 - read_mark) - moveb #0x01, %a3@(write_mode0 - read_mark) + moveb #.Lmr_write_action, %a3@(write_mode0 - read_mark) + moveb #.Lmr_clear_fifo, %a3@(write_mode1 - read_mark) + moveb #.Lmr_clear_fifo, %a3@(write_mode0 - read_mark) tstb %a3@(read_error - read_mark) - moveb #0x08, %a3@(write_mode1 - read_mark) + moveb #.Lmr_action, %a3@(write_mode1 - read_mark) =20 lea sector_data_mark, %a1 moveq #.Lmark_sequence_len, %d4 @@ -239,7 +243,7 @@ data_crc1: subl %d4, %d0 =20 data_exit: - moveb #0x18, %a3@(write_mode0 - read_mark) + moveb #.Lmr_write_action, %a3@(write_mode0 - read_mark) rts =20 .Lmaybe_store: --=20 2.52.0 From nobody Mon Sep 28 21:52:06 2026 Received: from fout-a7-smtp.messagingengine.com (fout-a7-smtp.messagingengine.com [103.168.172.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6899731354F; Mon, 17 Aug 2026 01:59:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931968; cv=none; b=OYhE1UlSU5F+hQtK2RGhpuu8r/NslxgP70gep1jt3URdSRjCXUV8P06CNhtRs4HbgIc6sBsEg4ac20SMuF9GkHXfxgIVLCTHiAyCgGhTydOQI2nM1MAIhSFX88KT7xLgxs/qteln3v7cIJeIvMNY3l8QPbQwjpbgILP8CecZGUk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786931968; c=relaxed/simple; bh=JYVQf7fvkOCuD70ckUZ+Tee6mr6YFgeSoCDb6lseL1A=; h=To:Cc:Message-ID:In-Reply-To:References:From:Subject:Date; b=KKiUojvT4HAapiVimAjdJo6oa/+BEFEPP5WuriGXjnWVrGgC1srk6K8wUiOSa4wXVDw3+oZp8F9Fff0S9i8dAKJKDgiOg6caDE19WN8lnKjWQXsMpwrDhMkQROTJFX/Y5sdtycGRqFrcmFX0MvzWkF3A8iflqExQoXciLmYnKvU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=none smtp.mailfrom=linux-m68k.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Mv+6PQx2; arc=none smtp.client-ip=103.168.172.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Mv+6PQx2" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id C7DB2EC021D; Sun, 16 Aug 2026 21:59:25 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-02.internal (MEProxy); Sun, 16 Aug 2026 21:59:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1786931965; x= 1787018365; bh=DGXMdRF6S+MQtxWj5yA6UrDhKzcAAQ+/+Mg5sleoC6I=; b=M v+6PQx2vffMy5ECKgElbP4Rd/RvReXlC8U3TkKvgokigN7wkwUeyR/ti5TAsEKUa Wp4yJO8soyJRxSL7RY7Jw7D1kHwYNubQfWuR3ECCT4Gxg4W4y3nKqZqGT7u65ZqD bAB80Ga2lWGzAfqbIdKImRbx8Y7ohXT0JByElgRC1c1+U6u3cUse3clR+dQI97cX ZOFaZ9/4UIWgkgxAs4Uay2eedSVNIZ7jIrXJXwtpnpOQ6AldqLdoFzJV6WfADckm gTkN540Q81/OjLLuvpenlPT0pnXrf2qexsFXXPG62pPsiJD8EVPt1TkAoNaeginR GltYLDO0OVa1MHPuTw2Yg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEwVqJtQHEwNT59EY0ApYPfZBP0Ja94nLydKMHdJKlh4zUdbhZ4q8N1TJVlNLX3Jv UG9KBkDhcBzUW3289fayQ1J+ppWFRD446qIAFVyGuquh32EhwbVebEJGoODlbz4hP14Erq Tcjcfi9/5+2rPPMs1Rkxsj0k0e2xO2GH5lY4VVdKIG8VeU2vajU+FMxwg/fEJDgrz1L6RJ d1Tth/Mq5Cy68H4bxVP4faz7GKaqaQIynBu/2nSxBla0bgf41aEpoAjjJxWypL04u/vTxK x5WjWw0TaNT770B0rDvEjO+uKu7yRxr/X4qfgY6A9PKgCt1ahfj+WIbkeb4e64+QxwGFeX I/a70E8XKZ9xXPToGU9y/PQOq5Q3hyGTPt+U19pStskbaUwXw+jyTjWCR6BiUzvm4UbHrQ fQkAJ8719M9buy3cYJ/r/NYASuaAcoMTMpuySaZ8oIsAeyCB+RFlUR5iUiSsbXDdWT424W D+QT595HxkLGQ3xFnGafXj+6rrjTIPDMYH3t4Z4BczPTgexx+HsYqEcN+R/D4AcmKabZ9F 4GgBVFnKBNZUdMw62oGZ5sfrX/tutWcCZWPt+iKLu/rywc20780PD+GKtAha7CXkgo5Dfo cZlJgRPI1JW4WJqaPCJkupRWrc7tWYXibx54AWDkNxdLBndz+ta8RCY8AEkQ X-ME-Proxy: Feedback-ID: i58a146ae:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 16 Aug 2026 21:59:23 -0400 (EDT) To: Jens Axboe , Laurent Vivier Cc: Geert Uytterhoeven , Joshua Thompson , linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org Message-ID: <771c797816910eac8e89646dbe35fc0604c64c5b.1786929430.git.fthain@linux-m68k.org> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 32/32] swim: Unexport global symbols Date: Mon, 17 Aug 2026 11:17:10 +1000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" These symbols aren't used outside of this file so use local ones. No functional change. Reviewed-by: Laurent Vivier Signed-off-by: Finn Thain --- drivers/block/swim_asm.S | 218 ++++++++++++++++++++------------------- 1 file changed, 112 insertions(+), 106 deletions(-) diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S index c78efc30082a..c3f1476948b5 100644 --- a/drivers/block/swim_asm.S +++ b/drivers/block/swim_asm.S @@ -14,33 +14,33 @@ * 2008-11-05 (lv) - add get_swim_mode */ =20 - .equ write_data, 0x0000 - .equ write_mark, 0x0200 - .equ write_CRC, 0x0400 - .equ write_parameter,0x0600 - .equ write_phase, 0x0800 - .equ write_setup, 0x0a00 - .equ write_mode0, 0x0c00 - .equ write_mode1, 0x0e00 - .equ read_data, 0x1000 - .equ read_mark, 0x1200 - .equ read_error, 0x1400 - .equ read_parameter, 0x1600 - .equ read_phase, 0x1800 - .equ read_setup, 0x1a00 - .equ read_status, 0x1c00 - .equ read_handshake, 0x1e00 - - .equ o_side, 0 - .equ o_track, 1 - .equ o_sector, 2 - .equ o_size, 3 - .equ o_crc0, 4 - .equ o_crc1, 5 - - .equ seek_time, 30000 - .equ max_retry, 40 - .equ sector_size, 512 + .equ .Lwrite_data, 0x0000 + .equ .Lwrite_mark, 0x0200 + .equ .Lwrite_CRC, 0x0400 + .equ .Lwrite_parameter, 0x0600 + .equ .Lwrite_phase, 0x0800 + .equ .Lwrite_setup, 0x0a00 + .equ .Lwrite_mode0, 0x0c00 + .equ .Lwrite_mode1, 0x0e00 + .equ .Lread_data, 0x1000 + .equ .Lread_mark, 0x1200 + .equ .Lread_error, 0x1400 + .equ .Lread_parameter, 0x1600 + .equ .Lread_phase, 0x1800 + .equ .Lread_setup, 0x1a00 + .equ .Lread_status, 0x1c00 + .equ .Lread_handshake, 0x1e00 + + .equ .Lo_side, 0 + .equ .Lo_track, 1 + .equ .Lo_sector, 2 + .equ .Lo_size, 3 + .equ .Lo_crc0, 4 + .equ .Lo_crc1, 5 + + .equ .Lseek_time, 30000 + .equ .Lmax_retry, 40 + .equ .Lsector_size, 512 .equ .Lmark_sequence_len, 4 =20 .equ .Lmr_clear_fifo, 0x01 @@ -63,7 +63,7 @@ =20 moveq #-1, %d1 subq #1, %d4 - movew #seek_time, %d2 + movew #.Lseek_time, %d2 =20 5: tstb %a2@ dbmi %d2, 5b @@ -88,80 +88,86 @@ swim_read_sector_header: unlk %a6 rts =20 -sector_address_mark: +.Lsector_address_mark: .byte 0xa1, 0xa1, 0xa1, 0xfe -sector_data_mark: +.Lsector_data_mark: .byte 0xa1, 0xa1, 0xa1, 0xfb =20 .Lmfm_read_header: movel %a6@(0x08), %a3 - lea %a3@(read_handshake), %a2 - lea %a3@(read_data), %a5 - lea %a3@(read_mark), %a3 + lea %a3@(.Lread_handshake), %a2 + lea %a3@(.Lread_data), %a5 + lea %a3@(.Lread_mark), %a3 =20 - moveb #.Lmr_write_action, %a3@(write_mode0 - read_mark) - moveb #.Lmr_clear_fifo, %a3@(write_mode1 - read_mark) - moveb #.Lmr_clear_fifo, %a3@(write_mode0 - read_mark) - tstb %a3@(read_error - read_mark) - moveb #.Lmr_action, %a3@(write_mode1 - read_mark) + moveb #.Lmr_write_action, %a3@(.Lwrite_mode0 - .Lread_mark) + moveb #.Lmr_clear_fifo, %a3@(.Lwrite_mode1 - .Lread_mark) + moveb #.Lmr_clear_fifo, %a3@(.Lwrite_mode0 - .Lread_mark) + tstb %a3@(.Lread_error - .Lread_mark) + moveb #.Lmr_action, %a3@(.Lwrite_mode1 - .Lread_mark) =20 - lea sector_address_mark, %a1 + lea .Lsector_address_mark, %a1 moveq #.Lmark_sequence_len, %d4 bsr .Lmfm_mark_check tstl %d1 - bne signal_nonyb + bne .Lsignal_nonyb =20 /* read header */ =20 - moveq #max_retry, %d2 -amark0: tstb %a2@ - dbmi %d2, amark0 - bpl signal_nonyb + moveq #.Lmax_retry, %d2 +.Lamark0: + tstb %a2@ + dbmi %d2, .Lamark0 + bpl .Lsignal_nonyb =20 - moveb %a5@, %a4@(o_track) + moveb %a5@, %a4@(.Lo_track) =20 - moveq #max_retry, %d2 -amark1: tstb %a2@ - dbmi %d2, amark1 - bpl signal_nonyb + moveq #.Lmax_retry, %d2 +.Lamark1: + tstb %a2@ + dbmi %d2, .Lamark1 + bpl .Lsignal_nonyb =20 - moveb %a5@, %a4@(o_side) + moveb %a5@, %a4@(.Lo_side) =20 - moveq #max_retry, %d2 -amark2: tstb %a2@ - dbmi %d2, amark2 - bpl signal_nonyb + moveq #.Lmax_retry, %d2 +.Lamark2: + tstb %a2@ + dbmi %d2, .Lamark2 + bpl .Lsignal_nonyb =20 - moveb %a5@, %a4@(o_sector) + moveb %a5@, %a4@(.Lo_sector) =20 - moveq #max_retry, %d2 -amark3: tstb %a2@ - dbmi %d2, amark3 - bpl signal_nonyb + moveq #.Lmax_retry, %d2 +.Lamark3: + tstb %a2@ + dbmi %d2, .Lamark3 + bpl .Lsignal_nonyb =20 - moveb %a5@, %a4@(o_size) + moveb %a5@, %a4@(.Lo_size) =20 - moveq #max_retry, %d2 -crc0: tstb %a2@ - dbmi %d2, crc0 - bpl signal_nonyb + moveq #.Lmax_retry, %d2 +.Lcrc0: + tstb %a2@ + dbmi %d2, .Lcrc0 + bpl .Lsignal_nonyb =20 - moveb %a5@, %a4@(o_crc0) + moveb %a5@, %a4@(.Lo_crc0) =20 - moveq #max_retry, %d2 -crc1: moveb %a2@, %d5 - dbmi %d2, crc1 - bpl signal_nonyb + moveq #.Lmax_retry, %d2 +.Lcrc1: + moveb %a2@, %d5 + dbmi %d2, .Lcrc1 + bpl .Lsignal_nonyb =20 - moveb %a5@, %a4@(o_crc1) + moveb %a5@, %a4@(.Lo_crc1) =20 moveb %a2@, %d5 andb #.Lhr_crc_error, %d5 - bne signal_nonyb + bne .Lsignal_nonyb =20 moveq #0, %d0 -signal_nonyb: - moveb #.Lmr_write_action, %a3@(write_mode0 - read_mark) +.Lsignal_nonyb: + moveb #.Lmr_write_action, %a3@(.Lwrite_mode0 - .Lread_mark) rts =20 .global swim_read_sector_data @@ -170,80 +176,80 @@ swim_read_sector_data: moveml %d1-%d5/%a0-%a5,%sp@- movel %a6@(0x0c), %a4 moveq #-1, %d0 - bsr mfm_read_data + bsr .Lmfm_read_data moveml %sp@+, %d1-%d5/%a0-%a5 unlk %a6 rts =20 -mfm_read_data: +.Lmfm_read_data: movel %a6@(0x08), %a3 - lea %a3@(read_handshake), %a2 - lea %a3@(read_data), %a5 - lea %a3@(read_mark), %a3 + lea %a3@(.Lread_handshake), %a2 + lea %a3@(.Lread_data), %a5 + lea %a3@(.Lread_mark), %a3 =20 - moveb #.Lmr_write_action, %a3@(write_mode0 - read_mark) - moveb #.Lmr_clear_fifo, %a3@(write_mode1 - read_mark) - moveb #.Lmr_clear_fifo, %a3@(write_mode0 - read_mark) - tstb %a3@(read_error - read_mark) - moveb #.Lmr_action, %a3@(write_mode1 - read_mark) + moveb #.Lmr_write_action, %a3@(.Lwrite_mode0 - .Lread_mark) + moveb #.Lmr_clear_fifo, %a3@(.Lwrite_mode1 - .Lread_mark) + moveb #.Lmr_clear_fifo, %a3@(.Lwrite_mode0 - .Lread_mark) + tstb %a3@(.Lread_error - .Lread_mark) + moveb #.Lmr_action, %a3@(.Lwrite_mode1 - .Lread_mark) =20 - lea sector_data_mark, %a1 + lea .Lsector_data_mark, %a1 moveq #.Lmark_sequence_len, %d4 bsr .Lmfm_mark_check tstl %d1 - bne data_exit + bne .Ldata_exit =20 /* read data */ =20 - movel #sector_size - 1, %d4 /* sector size */ - movew #max_retry, %d2 -read_data_loop: + movel #.Lsector_size - 1, %d4 /* sector size */ + movew #.Lmax_retry, %d2 +.Lread_data_loop: moveb %a2@, %d5 andb #(.Lhr_fifo_1byte + .Lhr_fifo_2bytes), %d5 - dbne %d2, read_data_loop - beq data_exit + dbne %d2, .Lread_data_loop + beq .Ldata_exit =20 - moveq #max_retry, %d2 + moveq #.Lmax_retry, %d2 moveb %a5@, %d3 bsr .Lmaybe_store dbra %d4, 1f - bra data_crc0 + bra .Ldata_crc0 1: andb #.Lhr_fifo_2bytes, %d5 - beq read_data_loop + beq .Lread_data_loop moveb %a5@, %d3 bsr .Lmaybe_store - dbra %d4, read_data_loop + dbra %d4, .Lread_data_loop =20 /* read CRC */ =20 - movew #max_retry, %d2 -data_crc0: + movew #.Lmax_retry, %d2 +.Ldata_crc0: tstb %a2@ - dbmi %d2, data_crc0 - bpl data_exit + dbmi %d2, .Ldata_crc0 + bpl .Ldata_exit =20 moveb %a5@, %d2 =20 - moveq #max_retry, %d2 -data_crc1: + moveq #.Lmax_retry, %d2 +.Ldata_crc1: moveb %a2@, %d5 - dbmi %d2, data_crc1 - bpl data_exit + dbmi %d2, .Ldata_crc1 + bpl .Ldata_exit =20 moveb %a5@, %d2 =20 moveb %a2@, %d5 andb #.Lhr_crc_error, %d5 - bne data_exit + bne .Ldata_exit =20 /* return number of bytes read */ =20 - movel #sector_size, %d0 + movel #.Lsector_size, %d0 addw #1, %d4 subl %d4, %d0 =20 -data_exit: - moveb #.Lmr_write_action, %a3@(write_mode0 - read_mark) +.Ldata_exit: + moveb #.Lmr_write_action, %a3@(.Lwrite_mode0 - .Lread_mark) rts =20 .Lmaybe_store: --=20 2.52.0