Subversion Repositories Kolibri OS

Rev

Rev 223 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;
  2. ; Ghost Monitor - єЄшышЄр (ёЄЁхёё) ЄхёЄшЁютрэш  ш ьюэшЄюЁшэур ёшёЄхь√
  3. ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
  4. ; All Right Reserved
  5.  
  6. ;
  7. ; HWM abstract interface, provide:
  8. ;  hwm_init, hwm_get_params, hwm_enable, hwm_temps, hwm_rpms, hwm_voltages, hwm_chip_name
  9. ;
  10.  
  11.  
  12. if SMBus eq yes
  13.  include        'SMBus.inc'
  14. end if
  15.  
  16. include         'hwm_wb.inc'
  17. include         'hwm_it87.inc'
  18. include         'hwm_uguru.inc'
  19. ;include        'hwm_via686.inc'
  20.  
  21. uglobal
  22.         hwm_enable:
  23.                 dd      0               ; 0 - no, 1 - Winbond, 2 - ITE, ... see HWMProbe list
  24.         hwm_temps:
  25.                 db      0,0, 0,0, 0,0   ; уЁрфєё, фхё Є√х, уЁрфєё, ...
  26.         hwm_rpms:
  27.                 dd      0, 0, 0, 0, 0   ; fan1, fan2, fan3, ...
  28.         hwm_voltages:
  29.         Vcore   dd      0.0
  30.         Vin0    dd      0.0
  31.         Vin1    dd      0.0
  32.         AVcc    dd      0.0
  33.         Vin2    dd      0.0
  34.         V12     dd      0.0
  35.         V5      dd      0.0
  36.         vol8    dd      0.0
  37.         vol9    dd      0.0
  38.         vol10   dd      0.0
  39.         vol11   dd      0.0
  40.         acc_type db     0               ; 0 - ISA Bus, 1 - SMBus, 2 - other
  41. endg
  42.  
  43. IO_Read         dd      isaRead         ; In : al - addr, out : al - value
  44. IO_Write        dd      isaWrite        ; In : al - addr, bl - value
  45.  
  46. hwm_unk         db      9, 'Not found'
  47. hwm_chip_name   dd      hwm_unk
  48.  
  49. ; NOTE !!!
  50. ; HWMProbe - ёяшёюъ, яЁюЎхфєЁ яЁютхЁъш ўшяют, чрърэўштрхЄё 
  51. ; эєыхт√ь фтющэ√ь ёыютюь
  52. ; HWMGetParam - ёяшёюъ, яЁюЎхфєЁ яюыєўхэш  ярЁрьхЄЁют
  53. ; юср ¤Єш ёяшёър фюыцэ√ ёююЄтхЄёЄтютрЄ№ фЁєу фЁєує яю
  54. ; яю яюЁ фъє яЁюЎхфєЁ
  55. HWMProbe:       dd      wb_init
  56.                 dd      it87_init
  57.                 dd      uGuru_init
  58.                 dd      0               ; <- ъюэхЎ ёяшёър
  59.                
  60. HWMGetParam:    dd      wb_getparam
  61.                 dd      it87_getparam
  62.                 dd      uGuru_getparam
  63.                
  64. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  65. hwm_init:
  66. ; ╧ЁютхЁър эрышўш  ш шэшЎшрышчрЎш 
  67.         pusha
  68.         ; ╚∙хь фрЄўшъш эр °шэх ISA
  69.         call    isaInit
  70.         jc      @f
  71.         call    chips_probe
  72.         cmp     byte[hwm_enable], 0
  73.         jne     .exit
  74. @@:     call    isaClose
  75.  
  76.         ; ╚∙хь фрЄўшъш эр °шэх SMBus
  77.         inc     byte [acc_type]
  78. if SMBus eq yes
  79.         call    smbInit
  80.         jc      @f
  81.         call    chips_probe
  82.         cmp     byte[hwm_enable], 0
  83.         jne     .exit
  84. @@:     call    smbClose
  85. end if
  86.         ; ╚∙хь фрЄўшъш эр ёюсёЄтхээющ °шэх (LPC etc)
  87.         inc     byte [acc_type]
  88.         call    chips_probe
  89.  
  90. .exit:  popa
  91.         ret
  92. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  93. chips_probe:
  94. ; ═рїюфшь эєцэ√щ ўшя
  95. ; Out : hwm_enable = !0 if found, else hwm_enable not changed
  96.         cld                     ; Paranoia
  97.         mov     esi, HWMProbe
  98. @@:     lodsd
  99.         test    eax, eax
  100.         jz      @f              ; ╩юэхЎ ёяшёър
  101.         call    eax
  102.         jc      @b
  103.         sub     esi, HWMProbe
  104.         shr     esi, 2
  105.         mov     dword[hwm_enable], esi
  106. @@:     ret
  107. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  108. hwm_get_params:
  109.         pusha
  110.         mov     eax, [hwm_enable]
  111.         test    eax, eax
  112.         jz      @f
  113.         dec     eax
  114.         sal     eax, 2
  115.         call    dword[eax + HWMGetParam]
  116. @@:     popa
  117.         ret
  118.  
  119. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  120. ; ISA interface
  121. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  122. isaRead:
  123.         push    edx
  124.         mov     dx, 0x295
  125.         out     dx, al
  126.         inc     edx
  127.         in      al, dx
  128.         pop     edx
  129.         ret
  130.        
  131. isaWrite:
  132.         push    edx
  133.         mov     dx, 0x295
  134.         out     dx, al
  135.         inc     edx
  136.         mov     al, bl
  137.         out     dx, al
  138.         pop     edx
  139.         ret
  140.  
  141. isaInit:
  142.         ; Out : CF = 0 if Ok
  143.         ; ЁхчхЁтшЁєхь 0x295 ш 0x296 яюЁЄ√
  144.         mov     ecx, 0x295
  145.         mov     edx, 0x296
  146.         call    ReservePorts
  147.         ; jc    @f
  148.         ; mov   [IO_Read], isaRead
  149.         ; mov   [IO_Write], isaWrite
  150.         ; @@:  
  151.         ret
  152.  
  153. isaClose:
  154.         ; юётюсюцфрхь 0x295 ш 0x296 яюЁЄ√
  155.         mov     ecx, 0x295
  156.         mov     edx, 0x296
  157.         call    FreePorts
  158.         ret
  159.