From: Finn Thain <fthain@linux-m68k.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Jens Axboe <axboe@kernel.dk>, Laurent Vivier <laurent@vivier.eu>,
Joshua Thompson <funaho@jurai.org>,
linux-block@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 07/32] swim: Enable clock divider only where appropriate
Date: Tue, 1 Sep 2026 17:56:52 +1000 (AEST) [thread overview]
Message-ID: <b0f20a10-78d4-e8e6-4001-99f076b99a8a@linux-m68k.org> (raw)
In-Reply-To: <CAMuHMdXgtstGtcbRkrtKtQ+d1c=mCe5zgYZCx4dyUQ_YnVhbbw@mail.gmail.com>
On Mon, 31 Aug 2026, Geert Uytterhoeven wrote:
> On Mon, 17 Aug 2026 at 03:55, Finn Thain <fthain@linux-m68k.org> wrote:
> > 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).
>
> This move should be a separate patch.
>
OK.
> > Cc: Joshua Thompson <funaho@jurai.org>
> > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
> > Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support")
> > Signed-off-by: Finn Thain <fthain@linux-m68k.org>
> > ---
> > arch/m68k/mac/config.c | 31 ++++++++++++++++++++++++++++++-
>
> For the m68k part:
> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
>
> > --- a/arch/m68k/mac/config.c
> > +++ b/arch/m68k/mac/config.c
> > @@ -984,8 +984,37 @@ static int __init mac_platform_init(void)
> > .start = swim_base,
> > .end = swim_base + 0x1FFF,
> > };
> > + unsigned int data = 0;
>
> Nit: in the absence of a real platform_data structure, please use a
> more explanatory name.
>
> Perhaps s/data/s_fclk/, and store S_FCLK_DIV2 or zero?
> Or s/data/setup/, and store the full register value?
>
I looked again at this but I still can't see any uses for the other bits.
So perhaps I should change it to:
+ bool fast_fclk = false;
> > --- a/drivers/block/swim.c
> > +++ b/drivers/block/swim.c
>
> > @@ -807,8 +806,10 @@ static void swim_set_parameters(struct swim __iomem *base)
> > swim_write(base, parameter, mem[i]);
> > }
> >
> > -static int swim_floppy_init(struct swim_priv *swd)
> > +static int swim_floppy_init(struct platform_device *pdev)
> > {
> > + struct swim_priv *swd = platform_get_drvdata(pdev);
> > + unsigned int *data = pdev->dev.platform_data;
>
> Likewise.
>
... and change that to:
bool *data = pdev->dev.platform_data;
bool fast_fclk = data && *data;
I am unsure whether a NULL check is desirable here (?)
Interestingly, that NULL check itself is sufficient and so we don't really
need the flag at all. Allocating memory for this bool is a completely
pointless kmalloc.
> > struct queue_limits lim = {
> > .features = BLK_FEAT_ROTATIONAL,
> > };
> > @@ -816,6 +817,8 @@ static int swim_floppy_init(struct swim_priv *swd)
> > int drive;
> > struct swim __iomem *base = swd->base;
> >
> > + swim_write(base, setup, S_IBM_DRIVE | (*data ? S_FCLK_DIV2 : 0));
> > +
swim_write(base, setup, S_IBM_DRIVE | (fast_fclk ? S_FCLK_DIV2 : 0));
Would the bool be more acceptable? TBH, I'm not sure it's an improvement.
Thanks for your review.
> > swim_set_parameters(base);
> >
> > /* scan floppy drives */
>
next prev parent reply other threads:[~2026-09-01 7:56 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-17 1:17 [PATCH v2 00/32] block/swim: Fixes and improvements Finn Thain
2026-08-17 1:17 ` [PATCH v2 15/32] swim: Don't use the mark register to read data Finn Thain
2026-08-17 1:17 ` [PATCH v2 20/32] swim: Check drive ready bit Finn Thain
2026-08-17 1:17 ` [PATCH v2 23/32] swim: Don't needlessly re-read sectors Finn Thain
2026-08-17 1:17 ` [PATCH v2 01/32] swim: Assert strobe with stable outputs Finn Thain
2026-08-17 1:17 ` [PATCH v2 13/32] swim: Check for CRC errors Finn Thain
2026-08-17 1:17 ` [PATCH v2 02/32] swim: Select appropriate drive once only Finn Thain
2026-08-17 1:17 ` [PATCH v2 05/32] swim: Perform ISM/IWM mode switching according to specs Finn Thain
2026-08-17 1:17 ` [PATCH v2 10/32] swim: Add track zero recalibration delay Finn Thain
2026-08-17 1:17 ` [PATCH v2 17/32] swim: Convert to blocking queue Finn Thain
2026-08-17 1:17 ` [PATCH v2 18/32] swim: Remove redundant RELAX actions Finn Thain
2026-08-17 1:17 ` [PATCH v2 31/32] swim: Define symbols for constants Finn Thain
2026-08-17 1:17 ` [PATCH v2 06/32] swim: Configure parameter memory Finn Thain
2026-08-17 1:17 ` [PATCH v2 03/32] swim: Enable the drive when probing Finn Thain
2026-08-17 1:17 ` [PATCH v2 09/32] swim: Recalibrate when drive is probed Finn Thain
2026-08-17 1:17 ` [PATCH v2 16/32] swim: Fix buffer overflow Finn Thain
2026-08-17 1:17 ` [PATCH v2 19/32] swim: Deduplicate polling loops Finn Thain
2026-08-17 1:17 ` [PATCH v2 11/32] swim: Handle FIFO timeout error Finn Thain
2026-08-17 1:17 ` [PATCH v2 25/32] swim: Remove pointless specifiers Finn Thain
2026-08-17 1:17 ` [PATCH v2 30/32] swim: Define macros for constants Finn Thain
2026-08-17 1:17 ` [PATCH v2 29/32] swim: Clean up whitespace Finn Thain
2026-08-17 1:17 ` [PATCH v2 27/32] swim: Add some helpful references Finn Thain
2026-08-17 1:17 ` [PATCH v2 14/32] swim: Check error register during sector read Finn Thain
2026-08-17 1:17 ` [PATCH v2 07/32] swim: Enable clock divider only where appropriate Finn Thain
2026-08-31 7:38 ` Geert Uytterhoeven
2026-09-01 7:56 ` Finn Thain [this message]
2026-09-01 9:10 ` Geert Uytterhoeven
2026-08-17 1:17 ` [PATCH v2 22/32] swim: Remove pointless mode0 register write Finn Thain
2026-08-17 1:17 ` [PATCH v2 28/32] swim: Remove unused macro definitions Finn Thain
2026-08-17 1:17 ` [PATCH v2 32/32] swim: Unexport global symbols Finn Thain
2026-08-17 1:17 ` [PATCH v2 08/32] swim: Don't start motor until medium is present Finn Thain
2026-08-17 1:17 ` [PATCH v2 26/32] swim: Move swd initialization Finn Thain
2026-08-17 1:17 ` [PATCH v2 24/32] swim: Don't search beyond the first data mark Finn Thain
2026-08-17 1:17 ` [PATCH v2 12/32] swim: Simplify return value initialization Finn Thain
2026-08-17 1:17 ` [PATCH v2 21/32] swim: Revisit delays Finn Thain
2026-08-17 1:17 ` [PATCH v2 04/32] swim: Don't disable drive after every sector Finn Thain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b0f20a10-78d4-e8e6-4001-99f076b99a8a@linux-m68k.org \
--to=fthain@linux-m68k.org \
--cc=axboe@kernel.dk \
--cc=funaho@jurai.org \
--cc=geert@linux-m68k.org \
--cc=laurent@vivier.eu \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.