pci.c (d8a382d2662822248a97ce9d670b90e68aefbd3a) | pci.c (9d1ac34ec3a67713308ae0883c3359c557f14d17) |
---|---|
1/* 2 * Sonics Silicon Backplane PCI-Hostbus related functions. 3 * 4 * Copyright (C) 2005-2006 Michael Buesch <mb@bu3sch.de> 5 * Copyright (C) 2005 Martin Langer <martin-langer@gmx.de> 6 * Copyright (C) 2005 Stefano Brivio <st3@riseup.net> 7 * Copyright (C) 2005 Danny van Dyk <kugelfang@gentoo.org> 8 * Copyright (C) 2005 Andreas Jaggi <andreas.jaggi@waterwave.ch> --- 611 unchanged lines hidden (view full) --- 620 const struct ssb_sprom *fallback; 621 int err = -ENOMEM; 622 u16 *buf; 623 624 if (!ssb_is_sprom_available(bus)) { 625 ssb_printk(KERN_ERR PFX "No SPROM available!\n"); 626 return -ENODEV; 627 } | 1/* 2 * Sonics Silicon Backplane PCI-Hostbus related functions. 3 * 4 * Copyright (C) 2005-2006 Michael Buesch <mb@bu3sch.de> 5 * Copyright (C) 2005 Martin Langer <martin-langer@gmx.de> 6 * Copyright (C) 2005 Stefano Brivio <st3@riseup.net> 7 * Copyright (C) 2005 Danny van Dyk <kugelfang@gentoo.org> 8 * Copyright (C) 2005 Andreas Jaggi <andreas.jaggi@waterwave.ch> --- 611 unchanged lines hidden (view full) --- 620 const struct ssb_sprom *fallback; 621 int err = -ENOMEM; 622 u16 *buf; 623 624 if (!ssb_is_sprom_available(bus)) { 625 ssb_printk(KERN_ERR PFX "No SPROM available!\n"); 626 return -ENODEV; 627 } |
628 if (bus->chipco.dev) { /* can be unavailible! */ 629 /* 630 * get SPROM offset: SSB_SPROM_BASE1 except for 631 * chipcommon rev >= 31 or chip ID is 0x4312 and 632 * chipcommon status & 3 == 2 633 */ 634 if (bus->chipco.dev->id.revision >= 31) 635 bus->sprom_offset = SSB_SPROM_BASE31; 636 else if (bus->chip_id == 0x4312 && 637 (bus->chipco.status & 0x03) == 2) 638 bus->sprom_offset = SSB_SPROM_BASE31; 639 else 640 bus->sprom_offset = SSB_SPROM_BASE1; 641 } else { 642 bus->sprom_offset = SSB_SPROM_BASE1; 643 } 644 ssb_dprintk(KERN_INFO PFX "SPROM offset is 0x%x\n", bus->sprom_offset); |
|
628 | 645 |
629 bus->sprom_offset = (bus->chipco.dev->id.revision < 31) ? 630 SSB_SPROM_BASE1 : SSB_SPROM_BASE31; 631 | |
632 buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL); 633 if (!buf) 634 goto out; 635 bus->sprom_size = SSB_SPROMSIZE_WORDS_R123; 636 sprom_do_read(bus, buf); 637 err = sprom_check_crc(buf, bus->sprom_size); 638 if (err) { 639 /* try for a 440 byte SPROM - revision 4 and higher */ --- 296 unchanged lines hidden --- | 646 buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL); 647 if (!buf) 648 goto out; 649 bus->sprom_size = SSB_SPROMSIZE_WORDS_R123; 650 sprom_do_read(bus, buf); 651 err = sprom_check_crc(buf, bus->sprom_size); 652 if (err) { 653 /* try for a 440 byte SPROM - revision 4 and higher */ --- 296 unchanged lines hidden --- |