Subject: Re: Interrupts and many slot machines
To: None <port-macppc@NetBSD.org>
From: Chris Tribo <ctribo@college.dtcc.edu>
List: port-macppc
Date: 12/12/2004 12:46:56
I think cereal is what reads the SPD (Serial Presence Detect) i2c chip 
on the RAM modules. That is just off the top of my head though, 
probably wrong.

On Dec 12, 2004, at 12:26 PM, Michael wrote:

> Hello,
>
>>> That said, Apple laptops have more thermal sensors than the one on 
>>> the
>>> CPU, so finding them (probably i2c devices with OFW entries 
>>> somewhere)
>>> and adding them to envsys would be a nice little project.
>> I added a quick hack to ki2c.c to scan for devices but either I'm 
>> doing something wrong, the code doesn't really work for some
>> reason or there are no devices connected. ( 12" iBook G4 )
>> The first one seems to be the most probable though :)
>
> ofdump2 should be included in the base macppc distribution :)
> It seems to show three i2c buses in my iBook:
>
> /uni-n@f8000000/i2c@f8001000:
> ff95d178:       /fan@15c
> ff95e7c8:       /i2c-hwclock@1d2
> ff95fdd0:       /cereal@1c0
>
> /pci@f2000000/mac-io@17/via-pmu@16000/pmu-i2c
> with no children
>
> /pci@f2000000/mac-io@17/i2c@18000:
> ff977af0:         /cereal@1c0
> ff978268:         /deq@6a
> ff9c91a8:         /i2c-modem
>
> So, which one does ki2c attach to? via-pmu@16000 or i2c@18000 ? Since 
> it attaches to obio is should be i2c@18000 but then I should see a 
> device at 6a - or deq doesn't support reading. So I'll try to figure 
> out how extended i2c addressing works with ki2c and see if there's 
> anything at 1c0
>
> the properties for /uni-n@f8000000/i2c@f8001000 contain
> name                    69326300 ........ ........ ........   "i2c"
> device_type             69326300 ........ ........ ........   "i2c"
> reg                     f8001000 00001000 ........ ........   ........
> compatible              6b657977 6573742d 69326300 ........   
> "keywest-i2c"
>
> fan@15c has interesting properties:
> reg                     0000015c ........ ........ ........   ...\
> hwsensor-params-version 00000001 ........ ........ ........   ....
> hwsensor-id             00000000 00000001 00000002 00000010   
> ................
>             0010:       00000020 ........ ........ ........   ...
> hwsensor-zone           00000000 00000000 00000000 00000000   
> ................
>             0010:       00000000 ........ ........ ........   ....
> hwsensor-type           74656d70 65726174 75726500 74656d70   
> temperature.temp
>             0010:       65726174 75726500 74656d70 65726174   
> erature.temperat
>             0020:       75726500 766f6c74 61676500 66616e73   
> ure.voltage.fans
>             0030:       70656564 00...... ........ ........   peed.
> hwsensor-location       5057522f 4d454d4f 52592042 4f54544f   
> PWR/MEMORY BOTTO
>             0010:       4d534944 45004350 5520424f 54544f4d   
> MSIDE.CPU BOTTOM
>             0020:       53494445 00475055 204f4e20 44494500   SIDE.GPU 
> ON DIE.
>             0030:       43505520 434f5245 00524541 52204d41   CPU 
> CORE.REAR MA
>             0040:       494e2045 4e434c4f 53555245 00......   IN 
> ENCLOSURE.
> hwsensor-polling-period 00000005 00000005 00000005 00000005   
> ................
>             0010:       00000005 ........ ........ ........   ....
> hwctrl-params-version   00000001 ........ ........ ........   ....
>
> Hey, seems to be exactly what we're looking for :)
>
> /pci@f2000000/mac-io@17/i2c@18000:
> compatible              6b657977 6573742d 69326300 ........   
> "keywest-i2c"
> AAPL,address            80018000 ........ ........ ........   ....
>
> so it /is/ a different one.
>
> /cereal@1c0
> reg                     000001c0 ........ ........ ........   ....
> name                    63657265 616c00.. ........ ........   "cereal"
> device_type             73657269 616c00.. ........ ........   "serial"
>
> Hmm, doesn't tell us anything.
>
> /deq@6a
>
> name                    64657100 ........ ........ ........   "deq"
> device_type             64657100 ........ ........ ........   "deq"
> reg                     0000006a ........ ........ ........   ...j
> i2c-address             0000006a ........ ........ ........   ...j
>
> even less informative.
>
> So, in theory I only need to get ki2c to attach to uninorth's i2c 
> child - since OF says it's also a keywest - and then try to talk to 
> device 15c :)
> Ok, after that it's some gruntwork to put the sensor stuff into its 
> own driver that attaches to keywest ( or better its i2c bus ) - 
> shouldn't be too hard since OF tells us where to look for devices.
>
> Tim - I didn't forget about the interrupt problems but I can't 
> reproduce them so I need to wait for reports from others. Experience 
> shows that it usually helps to do something else when you're stuck and 
> look at it later with a different mindset.
>
> have fun
> Michael