Lines Matching full:srom
41 Digital Semiconductor SROM Specification. The driver currently
44 DC21040 (no SROM)
56 SMC9332 (w/new SROM)
150 The SMC9332 card has a non-compliant SROM which needs fixing - I have
151 patched this driver to detect it because the SROM format used complies
159 I have added SROM decoding routines to make this driver work with any
160 card that supports the Digital Semiconductor SROM spec. This will help
165 (with the latest SROM complying with the SROM spec V3: their first was
191 Where SROM media detection is used and full duplex is specified in the
192 SROM, the feature is ignored unless lp->params.fdx is set at compile
196 autonegotiation feature in the SROM autoconf code, this detection will
224 correct in relation to what the adapter SROM says it has. There's no way
329 0.5 30-Jan-97 Added SROM decoding functions.
333 Added multi-MAC, one SROM feature from discussion
336 Added attempt to use an SMC9332 with broken SROM.
339 0.51 13-Feb-97 Added endian fixes for the SROM accesses from
361 Fix multi-MAC, one SROM, to work with 2114x chips:
389 case where a 21140 under SROM control uses, e.g. AUI
395 when using SROM control from problem report by
425 0.544 8-May-99 Fix for buggy SROM in Motorola embedded boards using
428 0.545 28-Nov-99 Further Moto SROM bug fix from
511 u_char *gep; /* Start of GEP sequence block in SROM */
512 u_char *rst; /* Start of reset sequence in SROM */
554 ** Define special SROM detection cases
565 ** SROM Repair definitions. If a broken SROM is detected a card may
729 ** SROM Structure
838 struct de4x5_srom srom; /* A copy of the SROM */ member
841 bool useSROM; /* For non-DEC card use SROM */
846 int defMedium; /* SROM default medium */
849 int infoleaf_offset; /* SROM infoleaf for controller */
850 s32 infoblock_csr6; /* csr6 value in SROM infoblock */
863 ** To get around certain poxy cards that don't provide an SROM
865 ** chip's address. I'll assume there's not a bad SROM iff:
1030 ** List the SROM infoleaf functions and chipsets
1045 ** List the SROM info block functions
1241 /* Initialise the SROM pointers if possible */ in de4x5_hw_init()
2116 ** SROM, so that in multiport cards that have one SROM shared between multiple
2117 ** DECchips, we can find the base SROM irrespective of the BIOS scan direction.
2161 /* Search for a valid SROM attached to this DECchip */ in srom_search()
2164 j += (u_char) *((u_char *)&lp->srom + SROM_HWADD + i); in srom_search()
2171 last.addr[i] = (u_char)*((u_char *)&lp->srom + SROM_HWADD + i); in srom_search()
2233 /* Search for an SROM on this bus */ in de4x5_pci_probe()
2922 ** When autonegotiation is working, the ANS part searches the SROM for
3191 ** The early return avoids a media state / SROM media space clash.
3255 printk("%s: Bad media code [%d] detected in SROM!\n", dev->name, in srom_map_media()
3333 if (!lp->useSROM) { /* Already done if by SROM, else dc2104[01] */ in test_media()
3913 } else { /* Search for a DEC name in the SROM */ in PCI_signature()
3914 int tmp = *((char *)&lp->srom + 19) * 3; in PCI_signature()
3915 strncpy(name, (char *)&lp->srom + 26 + tmp, 8); in PCI_signature()
3942 ** the DC21040, else read the SROM for the other chips.
3943 ** The SROM may not be present in a multi-MAC card, so first read the
3945 ** immediately with the prior srom contents intact (the h/w address will
3960 } else { /* Read new srom */ in DevicePresent()
3962 __le16 *p = (__le16 *)((char *)&lp->srom + SROM_HWADD); in DevicePresent()
3973 p = (__le16 *)&lp->srom; in DevicePresent()
3978 de4x5_dbg_srom(&lp->srom); in DevicePresent()
4020 ** For the bad status case and no SROM, then add one to the previous
4048 dev->dev_addr[i] = (u_char) lp->srom.ieee_addr[i]; i++; in get_hw_addr()
4049 dev->dev_addr[i] = (u_char) lp->srom.ieee_addr[i]; i++; in get_hw_addr()
4051 dev->dev_addr[i] = *((u_char *)&lp->srom + i); i++; in get_hw_addr()
4052 dev->dev_addr[i] = *((u_char *)&lp->srom + i); i++; in get_hw_addr()
4116 if (!memcmp(&lp->srom, &enet_det[i], 3) && in de4x5_bad_srom()
4117 !memcmp((char *)&lp->srom+0x10, &enet_det[i], 3)) { in de4x5_bad_srom()
4137 memset((char *)&lp->srom, 0, sizeof(struct de4x5_srom)); in srom_repair()
4138 memcpy(lp->srom.ieee_addr, (char *)dev->dev_addr, ETH_ALEN); in srom_repair()
4139 memcpy(lp->srom.info, (char *)&srom_repair_info[SMC-1], 100); in srom_repair()
4187 if ((*(u_short *)lp->srom.sub_vendor_id == 0x00c0) && in an_exception()
4188 (*(u_short *)lp->srom.sub_system_id == 0x95e0)) { in an_exception()
4196 ** SROM Read
4305 printk("%s: Cannot find correct chipset for SROM decoding!\n", in srom_infoleaf_info()
4313 count = *((u_char *)&lp->srom + 19); in srom_infoleaf_info()
4314 p = (u_char *)&lp->srom + 26; in srom_infoleaf_info()
4322 printk("%s: Cannot find correct PCI device [%d] for SROM decoding!\n", in srom_infoleaf_info()
4344 u_char *p = (u_char *)&lp->srom + lp->infoleaf_offset; in srom_init()
4409 ** unless I implement the DC21041 SROM functions. There's no need
4423 u_char *p = (u_char *)&lp->srom + lp->infoleaf_offset; in dc21140_infoleaf()
4461 u_char *p = (u_char *)&lp->srom + lp->infoleaf_offset; in dc21142_infoleaf()
4496 u_char *p = (u_char *)&lp->srom + lp->infoleaf_offset; in dc21143_infoleaf()
4964 ** The SROM spec forces us to search addresses [1-31 0]. Bummer.
5322 printk("SROM version: %02x\n", (u_char)(p->version)); in de4x5_dbg_srom()