Welcome, Guest. Please login or register.

Author Topic: Local slot autoconfig - how?  (Read 4395 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline billt

  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 910
    • Show all replies
    • http://www.billtoner.net
Re: Local slot autoconfig - how?
« on: August 11, 2011, 09:08:17 PM »
Quote from: mongo;654073
CFGIN is just a chip select line mapped to the Zorro II or Zorro III configuration space. You can generate it locally and not pass through access to the configuration space on the motherboard until all of your local devices are configured.


I hadn't realized the CPU slot didn't have a CFGOUT. Weird and surprising.

I do think Mongo's solution is easiest. If you have an FPGA sitting between the slot and your CPU, then this is easy to do. If the CPU would be going direct to the slot, you may need some enabled buffer or something in between to prevent the first autoconfig accesses from reaching the motherboard and the first Zorro card. (The FPGA if between slot and CPU would be this enabled buffer in that case) I'm not sure if that would be an enable buffer on the address lines out of the accelerator or some other signal.
Bill T
All Glory to the Hypnotoad!
 

Offline billt

  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 910
    • Show all replies
    • http://www.billtoner.net
Re: Local slot autoconfig - how?
« Reply #1 on: August 11, 2011, 09:26:59 PM »
Quote from: Heiroglyph;654078
That's what I'm starting to think as well.

Respond to the autoconfig address locally until my device is configured, then act like the device has been told to shut up and let the motherboard respond instead.


You wouldn't even need to "act like shutup". You could have an accelerator with however many local Autoconfig devices on it, and use the usual CFGOUT/CFGIN chain between them, masking this from the motherboard until the accelerator is done.  Once a device is Autoconfigured, it no longer responds to the Autoconfigure accesses. The first local device is done, and then it ignores Autoconfig accesses. The second local device is given CFGIN signal from the first, and it is the one to respond to Autoconfig, then third, forth, on to whatever N devices are local to the accelerator. All this time Autoconfig needs to be hidden from the motherboard, since the Zorro bus won't know that the accelerator has devices to autoconfig.

Only after all autoconfig devices known on the accelerator are done does the accelerator allow Autoconfig accesses to reach the motherboard, at which point the motherboard thinks it's the first Autoconfig to happen. Accelerator devices are done now, so they ignore all Autoconfig accesses happening with the motherboard.

Before a device is Autoconfigged, the base address of all devices is the Autoconfig base address. There are two of these Autoconfig base addresses, one for Zorro2 devices and one for Zorro3 devices.

As there are two Autoconfig runs, one for Zorro2 and another for Zorro3, choose which your accelerator will be part of. Or which one each of your local accelerator devices will be part of. Theoretically you could have some of each, but that'd probably be an odd thing to do. Choose the one that makes most sense. If you do have some of each, you'll have to trap Zorro2 Autoconfig local until done then pass that one on to the motherboard, and separately trap Zorro3 Autoconfig until done and then pass that on to the motherboard.

After a device has completed Autoconfig, it's base address to respond to changes to that assigned by the OS, so any Autoconfig access won't fit into the device's assigned address range. Nothing terribly special to do here in ignoring an access that doesn't belong to this device.

The CFGOUT/CFGIN chain tells the devices which one is currently up for Autoconfig. If a device is not yet done, and sees it's CFGIN valid, this device knows it's time for it to respond to Autoconfig. All other devices not yet done see their CFGIN as off, and continue waiting for their turn, ignoring Autoconfig accesses until it's their turn to go. At the end of an Autoconfig run for a device, the device turns on its CFGOUT so the next device knows to go on the next Autoconfig access.

The problem at hand is the chain is broken between the Accelerator and the motherboard. Perhaps Commodore didn't intend CPU cards to have local devices to Autoconfig. A strange notion as there had been A2000 Accelerators with Autoconfig memory, or at least hard-coded memory by then. You'd think they'd have seen that as a big hint that Autoconfig on the CPU board is important.

And thus we must trap and mask Autoconfig, keeping it away from the motherboard until the Accelerator knows that everything local is done. The last CFGOUT in the local Accelerator chain means you can now allow Autoconfig to go onto the motherboard.
Bill T
All Glory to the Hypnotoad!
 

Offline billt

  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 910
    • Show all replies
    • http://www.billtoner.net
Re: Local slot autoconfig - how?
« Reply #2 on: August 11, 2011, 11:07:26 PM »
Quote from: Zac67;654120
I'd have thought there's a fast slot device address space select line of some kind (there's _RAMSLOT for the 128 MB expansion) - _

Is RAMSLOT limited to 128MB? Couldn't faking a Zorro3 Autoconfig give you a couple gigs of local Accelerator RAM mapped to Zorro memory area, and have Autoconfig know about it when doing real Zorro3 boards? Wouldn't that be a useful thing to do? Though I think there's undefined address space above Zorro3 that wouldn't be able to be used this way. (If RAMSLOT is NOT limited to 128MB, then maybe not useful)

I need to find time to actually read through the slot spec. I've looked at bits and pieces, butg that's been a while too.

I think the A2000 has a CFGOUT didn't it? Or do I remember wrong? My service manuals are buried in storage, I'm limited to what my feeble memory gives me. :(
Bill T
All Glory to the Hypnotoad!
 

Offline billt

  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 910
    • Show all replies
    • http://www.billtoner.net
Re: Local slot autoconfig - how?
« Reply #3 on: August 12, 2011, 04:05:17 AM »
Quote from: Heiroglyph;654130
The change log for KS3.1 says they expanded the memory check to add an additional 3x256MB, but I haven't tested it on hardware yet.

I'm not planning to use RAMSLOT though, I'd rather decode it myself.


I wonder if 3.5/3.9 updates changed anything further?

Where does one read about this ramslot n 3.1 etc?
Bill T
All Glory to the Hypnotoad!