1 ;; -*- fundamental -*- ---------------------------------------------------
3 ;; Copyright 2008 H. Peter Anvin - All Rights Reserved
5 ;; This program is free software; you can redistribute it and/or modify
6 ;; it under the terms of the GNU General Public License as published by
7 ;; the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
8 ;; Boston MA 02110-1301, USA; either version 2 of the License, or
9 ;; (at your option) any later version; incorporated herein by reference.
11 ;; -----------------------------------------------------------------------
17 ;; Query for the NIC type, and detect certain special cases.
23 ;; Initializes the idle mechanism based on the device type
25 ;; Assumes CS == DS == ES
30 mov di,pxenv_get_nic_type
31 mov bx,PXENV_UNDI_GET_NIC_TYPE
36 cmp byte [di+2],2 ; PCI_NIC
37 jne .done ; No list for non-PCI nics
39 mov cx,pxe_idle_pci_list.len
40 mov si,pxe_idle_pci_list
43 cmp eax,[di+3] ; VID:DID
51 and byte [feature_flags],~2
55 ;; List of devices for which we want to actually issue idle calls.
61 ; Older Broadcom NICs; these need idle calls to avoid FIFO stalls.
63 dw 0x14e4, 0x1659 ; BCM5721
64 dw 0x14e4, 0x165a ; BCM5722
65 dw 0x14e4, 0x165b ; BCM5723
66 dw 0x14e4, 0x1668 ; BCM5714
67 dw 0x14e4, 0x1669 ; BCM5714S
68 dw 0x14e4, 0x166a ; BCM5780
69 dw 0x14e4, 0x166b ; BCM5780S
70 dw 0x14e4, 0x1673 ; BCM5755M
71 dw 0x14e4, 0x1674 ; BCM5756ME
72 dw 0x14e4, 0x1678 ; BCM5715
73 dw 0x14e4, 0x1679 ; BCM5715S
74 dw 0x14e4, 0x167b ; BCM5755
76 .len equ ($-pxe_idle_pci_list) >> 2