public inbox for linux-m68k@lists.linux-m68k.org
 help / color / mirror / Atom feed
From: Brad Boyer <flar@allandria.com>
To: Finn Thain <fthain@telegraphics.com.au>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>,
	Joshua Thompson <funaho@jurai.org>,
	linux-m68k <linux-m68k@lists.linux-m68k.org>
Subject: Re: [PATCH 0/4] Mac IOP driver fixes
Date: Wed, 3 Jun 2020 20:19:38 -0700	[thread overview]
Message-ID: <20200604031938.GA25970@allandria.com> (raw)
In-Reply-To: <alpine.LNX.2.22.394.2006021317230.8@nippy.intranet>

On Tue, Jun 02, 2020 at 01:48:22PM +1000, Finn Thain wrote:
> On Mon, 1 Jun 2020, Brad Boyer wrote:
> > In particular, note the direct use of a GPIO line on VIA1 in swim_select 
> > in drivers/block/swim.c.  That won't work on an IOP based system as that 
> > input line to SWIM doesn't appear to be hooked up to anything that can 
> > be accessed directly.
> > 
> > Here's the way it's put in _Guide to the Macintosh Family Hardware_ 
> > (Second Edition), on page 155:
> > 
> > "An IOP provides the state-control line SEL to the floppy disk drives. 
> > Among other functions, this line selects which of the two heads is to be 
> > used in a double-sided floppy disk drive."
> > 
> > The bit in VIA1 register A that is normally the "vHeadSel" line is 
> > explicitly listed as "Reserved" on the IIfx.
> > 
> 
> Yes, I was aware of that issue. But the GTMFH 2ed. figure 9-14 indicates 
> that (on the IIfx) pin 12 in the drive connector is driven by the SWIM 
> HDSEL pin instead of VIA1 Port A output. So, I wrote a patch to attempt to 
> get the SWIM to drive this pin. But nothing worked because I never 
> succeeded in putting the chip into bypass mode.

There does appear to be a bit in the mode register to directly control
the SEL line to the drive. Nothing in our code appears to use it. You
would write HEDSEL to mode0 to clear the line, and write HEDSEL to
mode1 to set the line. However, it looks like the first bit in the
setup register controls if that line is input or output. Not sure
why we have it named S_INV_WDATA, but the state machine to the actual
floppy drive is way beyond my comprehension. I'll note that the swim3.c
driver uses the SELECT bit in the control register to do the same
basic thing (and it's the same bit value as HEDSEL in swim.c).

I know we at least used to have a problem where the SCC ports only
worked if they were already in bypass mode. There was something we
weren't doing right about setting the bypass mode. I'm not sure if
we ever fixed it. If you turn off the "Compatible Mode" in the
Serial Switch control panel, does the Linux kernel SCC driver still
work afterwards? I know that was a problem at one point.

> With regard to PowerBooks, we will need to power up the drive. And with 
> regard to the IIfx, the A/UX iop.h header file indicates that, in bypass 
> mode, the ISM registers have a 2-byte spacing (instead of 512-byte).

The notes I have indicate the SWIM registers are at the same spacing as
the SCC registers on the other IOP. That's definitely not 512-byte, so
I presume it's 2-byte spacing as that's what the SCC driver looks like
it does.

> But I wish I knew why the driver doesn't work on an LC III, which 
> supposedly has a SWIM 2, just like the Quadra 800.

If I had to guess, the select line isn't in the same place. For example,
on the Mac Portable (which obviously isn't supported in Linux) that line
is apparently in VIA2 register B (as are most of the other bits that
normally show up in register A). Based on looking at the driver, being
unable to drive that line to the disk drive would break lots of stuff,
including the detection of the disk inserted in the drive.

We may need to map which models have this line hooked up where. I
wouldn't be surprised if it's only on VIA1 on some models and only
on the SWIM chip on others. It sounds like IWM didn't even know
about that line, which is why it was attached to the VIA in the
original mac models (on the Macintosh SE, some of them had an IWM
chip and some had the original version of SWIM - it was even
available as an upgrade to get the new chip and ROMs).

> > Apparently this external input line is not strictly required when the 
> > SWIM chip is running in ISM mode. However, our driver appears to force 
> > the chip into ISM mode and yet still depends on this input line.
> > 
> 
> I can't comment on that. I don't really understand the ISM or IWM logic in 
> any depth.

I can't claim to fully understand it, but I can figure out bits and pieces.

	Brad Boyer
	flar@allandria.com


  reply	other threads:[~2020-06-04  3:19 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-30 23:12 [PATCH 0/4] Mac IOP driver fixes Finn Thain
2020-05-30 23:12 ` [PATCH 4/4] m68k/mac: Improve IOP debug messages Finn Thain
2020-05-30 23:12 ` [PATCH 1/4] m68k/mac: Don't send IOP message until channel is idle Finn Thain
2020-05-30 23:12 ` [PATCH 2/4] m68k/mac: Fix IOP status/control register writes Finn Thain
2020-05-30 23:12 ` [PATCH 3/4] m68k/mac: Don't send uninitialized data in IOP message reply Finn Thain
2020-05-31  8:41 ` [PATCH 0/4] Mac IOP driver fixes Geert Uytterhoeven
2020-06-01  0:05   ` Finn Thain
2020-06-01  6:09     ` Brad Boyer
2020-06-01 23:32       ` Finn Thain
2020-06-02  2:21         ` Brad Boyer
2020-06-02  3:48           ` Finn Thain
2020-06-04  3:19             ` Brad Boyer [this message]
2020-06-04  4:49               ` Finn Thain
2020-06-04  7:43                 ` Brad Boyer
2020-06-05  3:50                   ` Finn Thain
2020-06-05  4:23                     ` Finn Thain
2020-06-05  9:11                       ` Brad Boyer
2020-06-29 21:39   ` Geert Uytterhoeven

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=20200604031938.GA25970@allandria.com \
    --to=flar@allandria.com \
    --cc=fthain@telegraphics.com.au \
    --cc=funaho@jurai.org \
    --cc=geert@linux-m68k.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox