Subversion Repositories Kolibri OS

Rev

Blame | 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_hudson.inc'
  17. ;include         'hwm_it87.inc'
  18. ;include         'hwm_uguru.inc'
  19. ;include        'hwm_via686.inc'
  20.  
  21. uglobal
  22.         hwm_enable:
  23.                 dd      1               ; 0 - no, 1 - Hudson,  ... 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      pm2read         ; In : al - addr, out : al - value
  44. IO_Write        dd      pm2write        ; 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      hudson_init
  57. ;                dd      wb_init
  58. ;                dd      it87_init
  59. ;                dd      uGuru_init
  60.                 dd      0               ; <- ª®­¥æ ᯨ᪠
  61.  
  62. HWMGetParam:
  63.                 dd      hudson_getparam
  64. ;                dd      wb_getparam
  65. ;                dd      it87_getparam
  66. ;                dd      uGuru_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.         mov  [acc_type], 2      ; bus type = 'other'
  94.  
  95. .exit:  popa
  96.         ret
  97. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  98. chips_probe:
  99. ;  å®¤¨¬ ­ã¦­ë© 稯
  100. ; Out : hwm_enable = !0 if found, else hwm_enable not changed
  101.         cld                     ; Paranoia
  102.         mov     esi, HWMProbe
  103. @@:     lodsd
  104.         test    eax, eax
  105.         jz      @f              ; Š®­¥æ ᯨ᪠
  106.         call    eax
  107.         jc      @b
  108.         sub     esi, HWMProbe
  109.         shr     esi, 2
  110.         mov     dword[hwm_enable], esi
  111. @@:     ret
  112. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  113. hwm_get_params:
  114.         pusha
  115.         mov     eax, [hwm_enable]
  116.         test    eax, eax
  117.         jz      @f
  118.         dec     eax
  119.         sal     eax, 2
  120.         call    dword[eax + HWMGetParam]
  121. @@:     popa
  122.         ret
  123.  
  124. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  125. ; ISA interface
  126. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  127. pm2read:
  128.         push    edx
  129.         mov     dx, 0xCD0       ;  0x295
  130.         out     dx, al
  131.         inc     edx
  132.         in      al, dx
  133.         pop     edx
  134.         ret
  135.  
  136. pm2write:
  137.         push    edx
  138.         mov     dx, 0xCD0       ;    295
  139.         out     dx, al
  140.         inc     edx
  141.         mov     al, bl
  142.         out     dx, al
  143.         pop     edx
  144.         ret
  145.  
  146. isaInit:
  147.         ret
  148.  
  149. isaClose:
  150.         ret
  151.