dtpic.mui: added MUI4 attributes. (Only attribute
[AROS.git] / arch / m68k-amiga / kernel / kernel_timer.c
blob50ee411bb6dbcf47a368d7b1ba9cd566cfaa848e
1 /*
2 * This code probes Amiga hardware timings, and
3 * configures SysBase with those settings.
4 */
6 #include <aros/symbolsets.h>
7 #include <exec/execbase.h>
8 #include <proto/exec.h>
9 #include <hardware/cia.h>
11 #include <kernel_base.h>
13 static int Timer_Init(struct KernelBase *KernelBase)
15 volatile struct CIA *ciaa = (struct CIA*)0xbfe001;
16 UWORD todlo, todcnt;
19 * Check powersupply tick rate.
20 * No Disable() here because we are running without interrupts during early init.
22 ciaa->ciacra = 0x00;
23 ciaa->ciatodhi = 0;
24 ciaa->ciatodmid = 0;
25 ciaa->ciatodlow = 0;
26 ciaa->ciatalo = 0xff;
27 ciaa->ciatahi = 0xff;
28 todlo = ciaa->ciatodlow;
29 while (todlo == ciaa->ciatodlow);
30 ciaa->ciacra = 0x01;
31 todlo = ciaa->ciatodlow;
32 while (todlo == ciaa->ciatodlow);
33 ciaa->ciacra = 0x00;
34 todcnt = ~(((ciaa->ciatahi << 8) | ciaa->ciatalo) + 1);
37 * 50Hz/60Hz ticks:
38 * 50Hz PAL 14188
39 * 60Hz NTSC 11932
40 * 50Hz NTSC 14318
41 * 60Hz PAL 11823
43 if (todcnt > 14188 + (14318 - 14188) / 2)
44 SysBase->PowerSupplyFrequency = 50;
45 else if (todcnt <= 11823 + (11932 - 11823) / 2)
46 SysBase->PowerSupplyFrequency = 60;
47 else if (todcnt > 14188 - (14188 - 11932) / 2)
48 SysBase->PowerSupplyFrequency = 50;
49 else
50 SysBase->PowerSupplyFrequency = 60;
52 return TRUE;
55 ADD2INITLIB(Timer_Init, 0)