Subversion Repositories Kolibri OS

Rev

Rev 510 | 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_hudson.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      'Not found', 0
  47. hwm_chip_name   dd      hwm_unk
  48.  
  49. ; NOTE !!!
  50. ; HWMProbe - ёяшёюъ, яЁюЎхфєЁ яЁютхЁъш ўшяют, чрърэўштрхЄё 
  51. ; эєыхт√ь фтющэ√ь ёыютюь
  52. ; HWMGetParam - ёяшёюъ, яЁюЎхфєЁ яюыєўхэш  ярЁрьхЄЁют
  53. ; юср ¤Єш ёяшёър фюыцэ√ ёююЄтхЄёЄтютрЄ№ фЁєу фЁєує яю
  54. ; яю яюЁ фъє яЁюЎхфєЁ
  55. HWMProbe:      
  56.         dd      wb_init
  57.                 dd      it87_init
  58.                 dd      uGuru_init
  59. ;        dd  hudson_init
  60.                 dd      0               ; <- ъюэхЎ ёяшёър
  61.                
  62. HWMGetParam:   
  63.         dd      wb_getparam
  64.                 dd      it87_getparam
  65.                 dd      uGuru_getparam
  66. ;        dd  hudson_getparam
  67.                
  68. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  69. hwm_init:
  70. ; ╧ЁютхЁър эрышўш  ш шэшЎшрышчрЎш 
  71.         pusha
  72.         ; ╚∙хь фрЄўшъш эр °шэх ISA
  73.         call    isaInit
  74.         jc      @f
  75.         call    chips_probe
  76.         cmp     byte[hwm_enable], 0
  77.         jne     .exit
  78. @@:     call    isaClose
  79.  
  80.         ; ╚∙хь фрЄўшъш эр °шэх SMBus
  81.         inc     byte [acc_type]
  82. if SMBus eq yes
  83.         call    smbInit
  84.         jc      @f
  85.         call    chips_probe
  86.         cmp     byte[hwm_enable], 0
  87.         jne     .exit
  88. @@:     call    smbClose
  89. end if
  90.         ; ╚∙хь фрЄўшъш эр ёюсёЄтхээющ °шэх (LPC etc)
  91.         inc     byte [acc_type]
  92.         call    chips_probe
  93.  
  94. .exit:  popa
  95.         ret
  96. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  97. chips_probe:
  98. ; ═рїюфшь эєцэ√щ ўшя
  99. ; Out : hwm_enable = !0 if found, else hwm_enable not changed
  100.         cld                     ; Paranoia
  101.         mov     esi, HWMProbe
  102. @@:     lodsd
  103.         test    eax, eax
  104.         jz      @f              ; ╩юэхЎ ёяшёър
  105.         call    eax
  106.         jc      @b
  107.         sub     esi, HWMProbe
  108.         shr     esi, 2
  109.         mov     dword[hwm_enable], esi
  110. @@:     ret
  111. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  112. hwm_get_params:
  113.         pusha
  114.         mov     eax, [hwm_enable]
  115.         test    eax, eax
  116.         jz      @f
  117.         dec     eax
  118.         sal     eax, 2
  119.         call    dword[eax + HWMGetParam]
  120. @@:     popa
  121.         ret
  122.  
  123. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  124. ; ISA interface
  125. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  126. isaRead:
  127.         push    edx
  128.         mov     dx, 0x295
  129.         out     dx, al
  130.         inc     edx
  131.         in      al, dx
  132.         pop     edx
  133.         ret
  134.        
  135. isaWrite:
  136.         push    edx
  137.         mov     dx, 0x295
  138.         out     dx, al
  139.         inc     edx
  140.         mov     al, bl
  141.         out     dx, al
  142.         pop     edx
  143.         ret
  144.  
  145. isaInit:
  146.         ; Out : CF = 0 if Ok
  147.         ; ЁхчхЁтшЁєхь 0x295 ш 0x296 яюЁЄ√
  148.         mov     ecx, 0x295
  149.         mov     edx, 0x296
  150.         call    ReservePorts
  151.         ; jc    @f
  152.         ; mov   [IO_Read], isaRead
  153.         ; mov   [IO_Write], isaWrite
  154.         ; @@:  
  155.         ret
  156.  
  157. isaClose:
  158.         ; юётюсюцфрхь 0x295 ш 0x296 яюЁЄ√
  159.         mov     ecx, 0x295
  160.         mov     edx, 0x296
  161.         call    FreePorts
  162.         ret
  163.