for rapid-prototyping as they call it, I would recommend getting a tube of 0.76mm leaded solder balls and a 0.76mm BGA solder stencil, usually they come in in a bag lot of various sizes and shapes, as as long as you get one that has a selection of 0.76mm stencils in there, one will fit 🙂I’ll practice putting the XPC106 back on this board before I work on my good board. Which type of solder balls and template should I buy?
Which makes me wonder if there’s a bus lookup table in the ROM which might not have an entry for this setting, and causes a hang. After all, we can’t even get the 87.5MHz config to work despite being able to physically set 2.5x35MHz PCI.
powermax2286 said:The Gossamer HWInit includes the following table of bus and DEC frequencies:
Code:Bus freqency | Decrementer frequency 50000000, | 12500000 60000000, | 15000000 66666666, | 16666666 75000000, | 18750000 70000000, | 17500000 78750000, | 19687500 66820000, | 16705000 83000000, | 20750000
joevt said:The issue I was having with using a non-PPC601 in the DPPC PM7500 (OF 1.0.5) where the timebase wasn't being calculated correctly in Open Firmware was because I was using the bus frequency from Gossamer (66,820,000) instead of 50,000,000.The timing code at 0xFFF03810 uses the VIA timer to time how long the decrementer takes to count down from 0x3FFFF. Then it uses a table at 0xFFF03944 to convert the VIA time to a bus speed.
Code:32840 25,000,000 31580 26,000,000 30410 27,000,000 29320 28,000,000 28310 29,000,000 27360 30,000,000 26480 31,000,000 25650 32,000,000 24880 33,000,000 24630 33,333,333 24140 34,000,000 23450 35,000,000 22800 36,000,000 22180 37,000,000 21600 38,000,000 21050 39,000,000 20520 40,000,000 20020 41,000,000 19540 42,000,000 19090 43,000,000 18650 44,000,000 18240 45,000,000 17840 46,000,000 17460 47,000,000 17100 48,000,000 16750 49,000,000 16410 50,000,000 16090 51,000,000 15780 52,000,000 15480 53,000,000 15200 54,000,000 14920 55,000,000 14650 56,000,000 14400 57,000,000 14150 58,000,000 13910 59,000,000 13680 60,000,000 13450 61,000,000 13230 62,000,000 0 0
Using 66,820,000 for the bus frequency returns a time of 12378 which is below the minimum allowed so you get a zero.Using 50,000,000 for the bus frequency returns a time of 16514 which returns 50,000,000 from the table.I haveg_realtimeset to false so all the timers (VIA, RTC, TB, etc) are using the original DPPC cycle timing method. I can increase the appearrant speed of the timers by increasingicnt_factor. For my 4GHz Skylake Mac,icnt_factor = 6makesd# 1000 mstake approximately 1 second. Decreasingicnt_factorto 5 makes that take twice as long. I'm not using the screen in Open Firmware. That may slow it down further.
bus_freq in machinegossamer.cpp.The Gossamer HWInit includes the following table of bus and DEC frequencies:
Of course, you would update the checksum if you change anything that requires the checksum to be updated.How easy would it be to replace one or more of the useless entries with faster ones? Guessing it would work as the length of the ROM would not change but might there be an issue with the checksum? The chips on my ROM are flashable.
;# is output to modem serial port where you can send commands - enter ? for help).It’s not sorted? I see a couple of entries out of order.The table probably needs to remain sorted.
Yes, there's two versions of grackle that are considered in the code so there's more than one table. I believe Gossamer and Yosemite have the same grackle revision (0x40 in PCI config register at offset 8) so they both should use the same table.It’s not sorted? I see a couple of entries out of order.
this->class_rev = 0x06000040;
BUS_SPEED_POS = 1, // bus speed code, see below
BUS_SPEED_MASK = 0x0E,
// configure the Gossamer system register
uint16_t sys_reg = FDC_TYPE_SWIM3 | BURST_ROM_TRUE
| (0x3F << PCI_A_PRSNT_POS) // pull up all PRSNT bits
| (1 << PCM_PID_POS) // CPU/Cache speed ratio = 2:1
| AIO_PRSNT_FALSE // this machine is not All-in-one
| (BUS_FREQ_66P82 << BUS_SPEED_POS) // set bus frequency
| UNKNOWN_BIT_0; // pull up bit 0
// Gossamer bus speed frequency codes
enum : uint8_t {
BUS_FREQ_75P00A = 0, // 75.00 MHz
BUS_FREQ_70P00 = 1, // 70.00 MHz
BUS_FREQ_78P75 = 2, // 78.75 MHz
BUS_FREQ_TRI = 3, // clock output tristated
BUS_FREQ_75P00B = 4, // 75.00 MHz
BUS_FREQ_60P00 = 5, // 60.00 MHz
BUS_FREQ_66P82 = 6, // 66.82 MHz
BUS_FREQ_83P00 = 7, // 83.00 MHz
};
I think one of the FFO's could just be replaced setting the PCI bus to 66MHz, I think the XPC100 should do 133MHz.So I finally got a IR preheater and a 100MHz Grackle from a battery bombed B/W G3 board. The operation to swap the chip went flawlessly. I confirmed stable operation before trying the PLL resistor mod.
View attachment 2496940
So here’s how I did the mod, bodging R52 to +3.3V for a logical 1, and R49 to GND for a logical 0. With PLL2 and 3 jumpers set on the block, that should give us the ‘1000’ setting we need for 100MHz bus operation.
View attachment 2496944
Sadly, it fails to boot at all in this configuration. I spent a couple of hours fiddling and trying different things but it just seems as though this setup is seen as invalid.
My RAM is all PC133 and the CPU is a 350MHz 750L so won’t have a problem with a 100MHz bus.
Which makes me wonder if there’s a bus lookup table in the ROM which might not have an entry for this setting, and causes a hang. After all, we can’t even get the 87.5MHz config to work despite being able to physically set 2.5x35MHz PCI.
I dunno, it’s just a theory, but I feel there’s more at play here. I’m open to try other things if we get some more info on this but for now I am out of ideas.
I think one of the FFO's could just be replaced setting the PCI bus to 66MHz, I think the XPC100 should do 133MHz.
It's just a matter of the PCI Bus built-in PCI devices and if you get too much clock jitter at 66.666MHz
Doesn't the clock generator relay on a Fixed Frequency Oscillator?This doesn’t sound realistic to me - it’s way too far in excess of what the hardware was designed for. Bear in mind that most 66MHz Grackles won’t even run stable at 83MHz.
A step by step approach is needed and I think getting it to boot with an 87.5MHz bus (35MHz PCi) would be an interesting target.
Significant hurdles include the SC608 clock generator with its fixed presets, and the ROM code which may block unknown frequencies.
I need to better understand the relationship between the clock generator and the Grackle chip in terms of how the bus frequency is being generated. I’m not clear if the clock generator is doing it or if the Grackle is doing it, but I suspect the former.
Doesn't the clock generator relay on a Fixed Frequency Oscillator?
Maybe I'm wrong, but the correct FFO would run the PCI BUS at 66MHz and the rom tables would not be wise to it. If the system bus is 66MHz with 33Mhz PCI then it's 133MHz with 66MHz PCI.
XPC100's can run at 133Mhz, it's been done on G3 B&W, and other Old World Macs have been clocked to 66Mhz PCI, it can cause issues with mac-io, but issues don't mean it won't run.
The Rage II chip and VRAM may also be an issue, but it's not like they can't be removed.
If Mac-io can handle the 66MHz PCI, even with some issues, then we maybe golden, if it can't without major issues, then back the clock down, and we are no worse off than we were before.
If the point is speed, and the point is always speed, then the simple math is 133MHz is faster than 100MHz and the Beige needs the PCI BUS performance of 66MHz.
Of course another issue is OS X calculation of the timebase would be all wrong, and that has been an issue before with Sawtooths and Gig-E machines overclocked to 133Mhz Bus.
If Mac-io can handle the 66MHz PCI,
Which old world Macs have been clocked to a 66MHz PCI bus?
That's not moving the timebase much, did you plan to try and push it out more?I socketed the reference crystal and fitted a 15MHz part to see what would happen. It boots and reports a 87.3MHz bus as it should:
View attachment 2501337
This tells us that the ROM does not check the actual speed of the bus, just the preset selected in the clock generator. Obviously the clock generator doesn’t know about the reference crystal being swapped out. This is confirmed by ASP which still reports a 83.3MHz bus.
The time base seems OK.
The onboard video is left shifted and dimmer, because the Rage Pro uses the reference crystal as well (buffered through the clock generator). A PCI card would not be affected.
That's not moving the timebase much, did you plan to try and push it out more?
Sadly the Beige G3 seems to not use the pci-proble-list variable, or we could skip probing of the Rage II chip as we know this is going to be an issue @26.63636MHz.
The only report I could find of someone pushing the XPC100 in a B&W to 133MHz was not a good one, but maybe 60MHz PCI and 120MHz Bus might work.
Any of the PCI enumeration code in Open Firmware can be patched.Sadly the Beige G3 seems to not use the pci-proble-list variable, or we could skip probing of the Rage II chip as we know this is going to be an issue @26.63636MHz.
Speaking of the 83.3 MHz fsb setting, does anyone know if the 1GHz sonnet encore g4 zif will run at all with this bus frequency (and if it will change the multiplier from 15 to 12 automatically)?
@pete1 very interesting findings, I have a feeling the clock dropping with more DIMM's is perhaps not intentional, but maybe a loading thing somehow slowing the clock down? or maybe the software miss-reporting? I did notice that on my early Uninorth machines, Gauge Pro would sometimes take a little time to "settle down"