Subversion Repositories Kolibri OS

Rev

Rev 1213 | Rev 1445 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1213 Rev 1353
Line 3259... Line 3259...
3259
    first type can be found e.g. in famous Interrupt List by
3259
    first type can be found e.g. in famous Interrupt List by
3260
    Ralf Brown; registers of the second type must be listed
3260
    Ralf Brown; registers of the second type must be listed
3261
    in the device documentation.
3261
    in the device documentation.
Line 3262... Line 3262...
3262
 
3262
 
-
 
3263
======================================================================
-
 
3264
===================== Function 62, subfunction 11 ====================
-
 
3265
==              Initialize user-accessible MMIO channel             ==
-
 
3266
======================================================================
-
 
3267
Parameters:
-
 
3268
  * eax = 62 - function
-
 
3269
  * bl  = 11 - subfunction
-
 
3270
  * cx  = PCI-address (bbbbbbbb dddddfff) 
-
 
3271
Returns:
-
 
3272
  * eax = -1 - PCI access not granted; 
-
 
3273
  * eax = -2 - no user MMIO access to this PCI address; 
-
 
3274
  * eax = -3 - memory allocation error; otherwise
-
 
3275
  * eax = available user heap size.
-
 
3276
Remarks:
-
 
3277
  * Low-level PCI access must be allowed (fn21:12)
-
 
3278
  * PCI-address should correspond the system var [mmio_pci_addr]
-
 
3279
 
-
 
3280
======================================================================
-
 
3281
===================== Function 62, subfunction 12 ====================
-
 
3282
==            Request user-accessible MMIO address space            ==
-
 
3283
======================================================================
-
 
3284
Parameters:
-
 
3285
  * eax = 62 - function
-
 
3286
  * bl  = 12 - subfunction
-
 
3287
  * bh  = BAR number in PCI configuration space
-
 
3288
  * ecx = MMIO-block size needed (bytes)
-
 
3289
  * edx = MMIO-offset (number of whole 4Kb-pages!)
-
 
3290
Returns:
-
 
3291
  * eax = -1 - user PCI access denied; 
-
 
3292
  * eax = -2 - invalid BAR number; 
-
 
3293
  * eax = -3 - BAR contains no valid IO addres;
-
 
3294
  * eax = -4 - BAR addresses IO ports;
-
 
3295
  * eax = -5 - dynamic allocation error; otherwise
-
 
3296
  * eax = MMIO start address (in application's linear space).
-
 
3297
Remarks:
-
 
3298
  * Low-level PCI access must be allowed (fn21:12)
-
 
3299
  * The system var [mmio_pci_addr] sets the actual PCI-address
-
 
3300
  * The granted MMIO addresses should be released after use (fn62:13)
-
 
3301
 
-
 
3302
======================================================================
-
 
3303
===================== Function 62, subfunction 13 ====================
-
 
3304
==              Release a block of user MMIO addresses              ==
-
 
3305
======================================================================
-
 
3306
 à ¬¥âàë:
-
 
3307
  * eax = 62 - function
-
 
3308
  * bl  = 12 - subfunction
-
 
3309
  * ecx = MMIO start address (in application's linear space).
-
 
3310
Returns:
-
 
3311
  * eax = 1 if the block is successfully released; 
-
 
3312
  * eax = 0 in case of reallocation error; 
-
 
3313
Remarks:
-
 
3314
  * A valid uMMIO block should exist at this address (fn62:12)
-
 
3315
 
3263
======================================================================
3316
======================================================================
3264
============== Function 63 - work with the debug board. ==============
3317
============== Function 63 - work with the debug board. ==============
3265
======================================================================
3318
======================================================================
3266
The debug board is the global system buffer (with the size
3319
The debug board is the global system buffer (with the size
3267
1024 bytes), to which any program can write (generally speaking,
3320
1024 bytes), to which any program can write (generally speaking,