Changeset 364 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Inc


Ignore:
Timestamp:
Mar 27, 2012, 4:21:58 PM (12 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Advanced ATA Module variables are now kept in DPTs.
  • Forced full mode when using Advanced ATA Module.
Location:
trunk/XTIDE_Universal_BIOS/Inc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Inc/ATA_ID.inc

    r363 r364  
    55
    66; PIO Minimum Cycle Times (t0)
    7 ; Timings for Advanced modes 3 and 4 can be read from ATA info WORDs 67 and 68
     7; Timings for Advanced Modes (3 and above) can be read from ATA info WORDs 67 and 68
     8; Those usually have the same Cycle Time as below
    89PIO_0_MIN_CYCLE_TIME_NS     EQU     600
    910PIO_1_MIN_CYCLE_TIME_NS     EQU     383
     
    1112PIO_3_MIN_CYCLE_TIME_NS     EQU     180
    1213PIO_4_MIN_CYCLE_TIME_NS     EQU     120
     14PIO_5_MIN_CYCLE_TIME_NS     EQU     100     ; CF specification
     15PIO_6_MIN_CYCLE_TIME_NS     EQU     80      ; CF specification
    1316
    1417; PIO Minimum Address Valid Times (t1)
     
    1821PIO_3_MIN_ADDRESS_VALID_NS  EQU     30
    1922PIO_4_MIN_ADDRESS_VALID_NS  EQU     25
     23PIO_5_MIN_ADDRESS_VALID_NS  EQU     25      ; Could not find info
     24PIO_6_MIN_ADDRESS_VALID_NS  EQU     25      ; Could not find info
    2025
    2126; PIO Minimum Active Times (t2)
     
    2530PIO_3_MIN_ACTIVE_TIME_NS    EQU     80
    2631PIO_4_MIN_ACTIVE_TIME_NS    EQU     70
     32PIO_5_MIN_ACTIVE_TIME_NS    EQU     70      ; Could not find info
     33PIO_6_MIN_ACTIVE_TIME_NS    EQU     70      ; Could not find info
    2734
    2835; PIO Minimum Recovery Times or Inactive Times (t2i) can be calculated
  • trunk/XTIDE_Universal_BIOS/Inc/BootMenu.inc

    r363 r364  
    2727                            resb    2   ; Zero word (ensures string terminates)
    2828    .wInitErrorFlags        resb    2   ; Errors during initialization
    29 
     29   
    3030%ifdef MODULE_ADVANCED_ATA
    31     .wIdeBasePort           resb    2   ; IDE Base Port
    32     .wMinPioActiveTimeNs    resb    2   ; Minimum PIO Active Time in ns
    33     .wMinPioRecoveryTimeNs  resb    2   ; Minimum PIO Recovery Time in ns
    34     .wControllerID          resb    2   ; Controller specific ID WORD
    35     .wControllerBasePort    resb    2   ; Advanced Controller port (not IDE port)
    36                             resb    12  ; padding to make BOOTMENUINFO size an even multiple of DPT size
    37 
     31                            resb    6   ; padding to make BOOTMENUINFO size an even multiple of DPT size
    3832%else
    3933                            resb    2   ; padding to make BOOTMENUINFO size an even multiple of DPT size
    4034%endif
     35                           
     36                           
    4137endstruc
    4238
  • trunk/XTIDE_Universal_BIOS/Inc/CustomDPT.inc

    r363 r364  
    4141; IDE device only
    4242FLGH_DPT_INITERROR              EQU (1<<7)
     43%ifdef MODULE_ADVANCED_ATA
     44FLGH_DPT_IORDY                  EQU (1<<6)  ; Controller and Drive supports IORDY
     45%endif
    4346
    4447; Serial device only
     
    6366    .bSetBlock                  resb    1   ; Current block size (do not set to zero!)
    6467    .bMaxBlock                  resb    1   ; Maximum block size, 0 = block mode not supported
    65 
    66 %ifdef MODULE_ADVANCED_ATA  ; +2 extra bytes = 14 bytes
    67     .bPioMode                   resb    1
    68     .bDevice                    resb    1
    69 %endif
    7068endstruc
    7169
    7270
     71; Additional variables needed to initialize and reset Advanced IDE Controllers.
     72; EBDA must be reserved for DPTs when using these!
    7373%ifdef MODULE_ADVANCED_ATA
    74 ; Temporary extension for DPT_ATA. Contents will be copied to BOOTMENUINFO and
    75 ; then these variables will be overridden by next DPT.
    7674struc DPT_ADVANCED_ATA
    7775    .dpt_ata                resb    DPT_ATA_size
    78     .wIdeBasePort           resb    2   ; IDE Base Port
    79     .wMinPioActiveTimeNs    resb    2   ; Minimum PIO Active Time in ns
    80     .wMinPioRecoveryTimeNs  resb    2   ; Minimum PIO Recovery Time in ns
    81     .wControllerID          resb    2   ; Controller specific ID WORD
     76    .wControllerID          resb    2   ; Controller specific ID WORD (from Advanced Controller detection)
    8277    .wControllerBasePort    resb    2   ; Advanced Controller port (not IDE port)
     78    .wMinPioCycleTime       resb    2   ; Minimum PIO Cycle Time in ns
     79    .bPioMode               resb    1   ; Best supported PIO mode
     80    .bDevice                resb    1   ; Device Type from IDEVARS (overrided when 32-bit controller detected)
    8381endstruc
    8482%endif
    8583
    8684
     85; DPT for Serial devices
    8786%ifdef MODULE_SERIAL
    88 ; DPT for Serial devices
    8987struc DPT_SERIAL
    9088    .dpt                        resb    DPT_size
     
    9896
    9997; This is the common size for all DPTs. All DPTs must be equal size.
     98%ifdef MODULE_ADVANCED_ATA
     99LARGEST_DPT_SIZE                EQU     DPT_ADVANCED_ATA_size
     100%else
    100101LARGEST_DPT_SIZE                EQU     DPT_ATA_size
     102%endif
    101103
    102104
Note: See TracChangeset for help on using the changeset viewer.