                   Broadcom Skinny WDM Driver for B57wdiag
                                
                 Copyright (c) 2000-2013 Broadcom Corporation
                            All rights reserved.
                                
                 Supported devices:
                 5701, 5702, 5703, 5704, 5705, 5706, 5708, 5709, 
                 5714, 5715, 5716, 575x, 576x, 578x, 5901, 5771x,
                 5776x, 5778x, 5779x, 5718, 5719, 5720 


Version 1.0.0.17 (Apr 03, 2013 )
---------------------------------
    1. Adding support for 5727 B0.

    2. Problem: (CQ68501)
         b57WDiag : NX2 device ID are included in skinny driver inf files.
       Fix:
         Remove NX2 device IDs from inf files.   

Version 1.0.0.16 (Nov 02, 2012 )
---------------------------------
    1. Adding support for 5717C0.

Version 1.0.0.15 ( Oct 26, 2012 )
---------------------------------
    1. Problem: (CQ66003)
         b57wdiag: unable to install bxskinny driver on 57767.
       Fix:
         Add 57767 support in the driver.
         
Version 1.0.0.14a ( August 16, 2012 )
---------------------------------
    1. Problem: (CQ64528)
         b57wdiag - System shows incorrect NIC device name in Win8.
       Fix:
         Display the correct NIC device name.

    2. Problem: (CQ65204)
         Windiag nictest A3 interrupt test fails on Win8 x64 OS
       Cause:
         Device is using MSI-X interrupt and it's not supported with current b57wdiag.
       Fix:
         Change skinny dirver to use legacy interrupt for testing.

Version 1.0.0.14 ( May 09, 2012 )
---------------------------------
    1. Problem: (CQ63081)
         Running nictest failed in A3 Interrupt test.
       Cause:
         Assigning a wrong DID to BCM57786 so that ISR failed to be served.
       Fix:
         Assign the correct DID.


Version 1.0.0.13 ( Feb 10, 2012 )
---------------------------------
    1. Problem: (CQ61443)
           Executing b57wdiag in Win7 on HP 6200 Pro MT system will cause BSOD.
       Cause:
           This system BIOS doesn't contain any SMBIOS table. The address of 
           Structure Table in SMBIOS EPS will be NULL. Calling MmMapIoSpace to map 
           a NULL address caused BSOD.
       Fix:
           Check a NULL address before calling MmMapIoSpace system call.


Version 1.0.0.12 (Jan 19, 2012 )
---------------------------------
    1. Fix a problem cq61011 introduced by #1 of v1.0.0.10


Version 1.0.0.11 (Jan 6, 2012 )
---------------------------------
    1. Support Aspen+ family.


Version 1.0.0.10 (Oct 26, 2011 )
---------------------------------
    1. Remove a redundent fix.
    
    2. Apply bxskinnyx.inf for x86, bxskinnya.inf for x86-64.
    
    3. Problem (CQ59393)
           Uninstalling skinny driver causes Windows failed to boot up.
       Cause:    
           The Start tag was set to SERVICE_BOOT_START by mistake.
       Fix:
           Change the Start tag to SERVICE_DEMAND_START in .inf file.

Version 1.0.0.9 (May 03, 2011 )
---------------------------------
    1. Problem (CQ54225)
          b57wdiag - 5718_B0 fails A3. Interrupt Test by manufacture command line. 
       Cause:
          The original device ID 0x1655 of Sawtooth device did not be recgonized.
       Fix:
          Changed to support this original ID.   

Version 1.0.0.8 (March 22, 2011 )
---------------------------------
    1. Enhance the 64-bit addressing to work with b57wdiag.


Version 1.0.0.7 (March 09, 2011 )
---------------------------------
    1. Support Cotopaxi(5719) and Snaggletooth(5720).


Version 1.0.0.6 (Jan 21, 2011 )
---------------------------------
    1. Fixed the problem caused by the 64-bit driver when working with the 32-bit B57wdiag.


Version 1.0.0.5 (Sep 17, 2010 )
---------------------------------
    1. Fix the failure to access to APE memory space through BAR1


Version 1.0.0.4 (Aug 23, 2010 )
---------------------------------
Enhancements:
    1. Get SMBIOS EPS from 0xf0000 to support the mancfg command.
    
    2. Get ASF! RDT table from ACPI structure to support the mancfg and asfcfg commands.
    
    3. Output log messages to EnvetViewer\WindowsLogs\System directory.
    
    4. Add five new ioctl codes:
       - IOC_GET_MEM_BASE_ACPI_INFO
       - IOC_GET_ASF_SDT
       - IOC_GET_MEM_BASE_SMBIOS_INFO
       - IOC_GET_MEM_BASE_SMBIOS_TABLE_ADDR_INFO
       - IOC_GET_SMBIOS


Version 1.0.0.3 (Aug 11, 2010 )
---------------------------------
Enhancements:
    1. Support APE which we need to create the memory mapping between user and kernel spaces based on BAR1.
    
    2. Add a new field "bar" in ioc_pci_cfg_t structure to distinguish the accesses to either BAR0 or BAR1.
    


Version 1.0.0.2 (June 23, 2010 )
---------------------------------
1. Problem: 
       ISR did not be launched.
   Cause:
        IoConnectInterrupt did not be executed although it was implemented at um_bdrv_start_driver().
    Fix:
        Added um_bdrv_start_driver() into the StartDev helper function.
        
2. Problem:
       BSOD occurred after #1 was applied.
   Cause:
       In ISR routine, REG_RD/REG_WR macros try to access to the virtual address in the kernel mode.
       ISR routine is a kernel-mode routine with DIRQL level.
   Fix:
       Use the kernel address instead of user-mode virtual address. The kernel-mode address is acquired from
       MmMapIoSpace API.
       
3. Problem:
       ISR routine was called twice when running the command of "intrtest".
   Cause:
       Did not mask the interrupt immediately entering the ISR.
   Fix:
        Mask the interrupt as long as entering the ISR by setting 0x68.1


        
Version 1.0 (May 19, 2010 )
---------------------------------
    Skinny Driver version : 1.0.0.0

    1. Inception version.
                                