Commit 2e8c07c3 authored by Divy Le Ray's avatar Divy Le Ray Committed by David S. Miller

cxgb3: use request_firmware() for the EDC registers setup

use request_firmware() to load the phy's EDC programmation
Signed-off-by: 's avatarDivy Le Ray <divy@chelsio.com>
Signed-off-by: 's avatarDavid S. Miller <davem@davemloft.net>
parent 5e659515
......@@ -320,4 +320,6 @@ int t3_get_desc(const struct sge_qset *qs, unsigned int qnum, unsigned int idx,
unsigned char *data);
irqreturn_t t3_sge_intr_msix(int irq, void *cookie);
int t3_get_edc_fw(struct cphy *phy, int edc_idx, int size);
#endif /* __T3_ADAPTER_H__ */
This diff is collapsed.
......@@ -566,6 +566,15 @@ struct cphy_ops {
u32 mmds;
};
enum {
EDC_OPT_AEL2005 = 0,
EDC_OPT_AEL2005_SIZE = 1084,
EDC_TWX_AEL2005 = 1,
EDC_TWX_AEL2005_SIZE = 1464,
EDC_TWX_AEL2020 = 2,
EDC_TWX_AEL2020_SIZE = 1628,
EDC_MAX_SIZE = EDC_TWX_AEL2020_SIZE, /* Max cache size */
};
/* A PHY instance */
struct cphy {
......@@ -577,6 +586,7 @@ struct cphy {
unsigned long fifo_errors; /* FIFO over/under-flows */
const struct cphy_ops *ops; /* PHY operations */
struct mdio_if_info mdio;
u16 phy_cache[EDC_MAX_SIZE]; /* EDC cache */
};
/* Convenience MDIO read/write wrappers */
......
......@@ -964,6 +964,75 @@ static int bind_qsets(struct adapter *adap)
#define FW_FNAME "cxgb3/t3fw-%d.%d.%d.bin"
#define TPSRAM_NAME "cxgb3/t3%c_psram-%d.%d.%d.bin"
#define AEL2005_OPT_EDC_NAME "cxgb3/ael2005_opt_edc.bin"
#define AEL2005_TWX_EDC_NAME "cxgb3/ael2005_twx_edc.bin"
#define AEL2020_TWX_EDC_NAME "cxgb3/ael2005_twx_edc.bin"
static inline const char *get_edc_fw_name(int edc_idx)
{
const char *fw_name = NULL;
switch (edc_idx) {
case EDC_OPT_AEL2005:
fw_name = AEL2005_OPT_EDC_NAME;
break;
case EDC_TWX_AEL2005:
fw_name = AEL2005_TWX_EDC_NAME;
break;
case EDC_TWX_AEL2020:
fw_name = AEL2020_TWX_EDC_NAME;
break;
}
return fw_name;
}
int t3_get_edc_fw(struct cphy *phy, int edc_idx, int size)
{
struct adapter *adapter = phy->adapter;
const struct firmware *fw;
char buf[64];
u32 csum;
const __be32 *p;
u16 *cache = phy->phy_cache;
int i, ret;
snprintf(buf, sizeof(buf), get_edc_fw_name(edc_idx));
ret = request_firmware(&fw, buf, &adapter->pdev->dev);
if (ret < 0) {
dev_err(&adapter->pdev->dev,
"could not upgrade firmware: unable to load %s\n",
buf);
return ret;
}
/* check size, take checksum in account */
if (fw->size > size + 4) {
CH_ERR(adapter, "firmware image too large %u, expected %d\n",
(unsigned int)fw->size, size + 4);
ret = -EINVAL;
}
/* compute checksum */
p = (const __be32 *)fw->data;
for (csum = 0, i = 0; i < fw->size / sizeof(csum); i++)
csum += ntohl(p[i]);
if (csum != 0xffffffff) {
CH_ERR(adapter, "corrupted firmware image, checksum %u\n",
csum);
ret = -EINVAL;
}
for (i = 0; i < size / 4 ; i++) {
*cache++ = (be32_to_cpu(p[i]) & 0xffff0000) >> 16;
*cache++ = be32_to_cpu(p[i]) & 0xffff;
}
release_firmware(fw);
return ret;
}
static int upgrade_fw(struct adapter *adap)
{
......
......@@ -41,7 +41,10 @@ fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin
fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
cxgb3/t3c_psram-1.1.0.bin \
cxgb3/t3fw-7.4.0.bin
cxgb3/t3fw-7.4.0.bin \
cxgb3/ael2005_opt_edc.bin \
cxgb3/ael2005_twx_edc.bin \
cxgb3/ael2020_twx_edc.bin
fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
......
......@@ -418,6 +418,23 @@ License: GPLv2 or OpenIB.org BSD license, no source visible
--------------------------------------------------------------------------
Driver: cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter
File: cxgb3/ael2005_opt_edc.bin.ihex
File: cxgb3/ael2005_twx_edc.bin.ihex
File: cxgb3/ael2020_twx_edc.bin.ihex
Licence:
* Copyright (c) 2007-2009 NetLogic Microsystems, Inc.
*
* Permission is hereby granted for the distribution of this firmware
* data in hexadecimal or equivalent format, provided this copyright
* notice is accompanying it.
Found in hex form in kernel source.
--------------------------------------------------------------------------
Driver: e100 -- Intel PRO/100 Ethernet NIC
File: e100/d101m_ucode.bin
......
:10000000CC002FF4CC013CD4CC022015CC0331051C
:10001000CC046524CC0527FFCC06300FCC072C8BF5
:10002000CC08300BCC094009CC0A400ECC0B2F7207
:10003000CC0C3002CC0D1002CC0E2172CC0F301241
:10004000CC101002CC1125D2CC123012CC131002DD
:10005000CC14D01ECC1527D2CC163012CC171002DF
:10006000CC182004CC193C84CC1A6436CC1B200755
:10007000CC1C3F87CC1D8676CC1E40B7CC1FA74634
:10008000CC204047CC215673CC222982CC2330028D
:10009000CC2413D2CC258BBDCC262862CC273012A1
:1000A000CC281002CC292092CC2A3012CC2B100262
:1000B000CC2C5CC3CC2D0314CC2E2942CC2F300287
:1000C000CC301002CC31D019CC322032CC333012AB
:1000D000CC341002CC352A04CC363C74CC37643591
:1000E000CC382FA4CC393CD4CC3A6624CC3B5563D5
:1000F000CC3C2D42CC3D3002CC3E13D2CC3F464DC1
:10010000CC402862CC413012CC421002CC43203289
:10011000CC443012CC451002CC462FB4CC473CD452
:10012000CC486624CC495563CC4A2D42CC4B300296
:10013000CC4C13D2CC4D2ED2CC4E3002CC4F100230
:10014000CC502FD2CC513002CC521002CC530004F0
:10015000CC542942CC553002CC561002CC572092B8
:10016000CC583012CC591002CC5A5CC3CC5B03176C
:10017000CC5C2F72CC5D3002CC5E1002CC5F294289
:10018000CC603002CC611002CC6222CDCC63301D39
:10019000CC642862CC653012CC661002CC672ED2BB
:1001A000CC683002CC691002CC6A2D72CC6B300264
:1001B000CC6C1002CC6D628FCC6E2112CC6F3012E1
:1001C000CC701002CC715AA3CC722DC2CC73300209
:1001D000CC741312CC756F72CC761002CC772807D2
:1001E000CC7831A7CC7920C4CC7A3C24CC7B672452
:1001F000CC7C1002CC7D2807CC7E3187CC7F20C4FC
:10020000CC803C24CC816724CC821002CC83251482
:10021000CC843C64CC856436CC86DFF4CC876436F1
:10022000CC881002CC8940A4CC8A643CCC8B40168C
:10023000CC8C8C6CCC8D2B24CC8E3C24CC8F643518
:10024000CC901002CC912B24CC923C24CC93643AD9
:10025000CC944025CC958A5ACC961002CC97273165
:10026000CC983011CC991001CC9AC7A0CC9B01003E
:10027000CC9CC502CC9D53ACCC9EC503CC9FD5D5A0
:10028000CCA0C600CCA12A6DCCA2C601CCA32A4C1E
:10029000CCA4C602CCA50111CCA6C60CCCA7590093
:1002A000CCA8C710CCA90700CCAAC718CCAB0700B4
:1002B000CCACC720CCAD4700CCAEC801CCAF7F5092
:1002C000CCB0C802CCB17760CCB2C803CCB37FCE7F
:1002D000CCB4C804CCB55700CCB6C805CCB75F11B8
:1002E000CCB8C806CCB94751CCBAC807CCBB57E18B
:1002F000CCBCC808CCBD2700CCBEC809CCBF000010
:10030000CCC0C821CCC10002CCC2C822CCC30014CE
:10031000CCC4C832CCC51186CCC6C847CCC71E02D7
:10032000CCC8C013CCC9F341CCCAC01ACCCB04464C
:10033000CCCCC024CCCD1000CCCEC025CCCF0A0074
:10034000CCD0C026CCD10C0CCCD2C027CCD30C0C3A
:10035000CCD4C029CCD500A0CCD6C030CCD70A0094
:10036000CCD8C03CCCD9001CCCDAC005CCDB7A069A
:10037000CCDC0000CCDD2731CCDE3011CCDF10012D
:10038000CCE0C620CCE10000CCE2C621CCE3003FAB
:10039000CCE4C622CCE50000CCE6C623CCE70000C6
:1003A000CCE8C624CCE90000CCEAC625CCEB0000A2
:1003B000CCECC627CCED0000CCEEC628CCEF00007C
:1003C000CCF0C62CCCF10000CCF20000CCF3280617
:1003D000CCF43CB6CCF5C161CCF66134CCF76135D8
:1003E000CCF85443CCF90303CCFA6524CCFB000BC6
:1003F000CCFC1002CCFD2104CCFE3C24CCFF21051A
:10040000CD003805CD016524CD02DFF4CD034005D4
:10041000CD046524CD051002CD065DD3CD070306BE
:10042000CD082FF7CD0938F7CD0A60B7CD0BDFFD2A
:10043000CD0C000ACD0D1002CD0E00007CC7AE59C8
:00000001FF
:10000000CC004009CC0127FFCC02300FCC0340AA22
:10001000CC04401CCC05401ECC062FF4CC073CD4AD
:10002000CC082035CC093145CC0A6524CC0B26A25E
:10003000CC0C3012CC0D1002CC0E29C2CC0F3002E9
:10004000CC101002CC112072CC123012CC13100242
:10005000CC1422CDCC15301DCC162E52CC1730121C
:10006000CC181002CC1928E2CC1A3002CC1B10029A
:10007000CC1C628FCC1D2AC2CC1E3012CC1F1002A9
:10008000CC205553CC212AE2CC223002CC231302BF
:10009000CC24401ECC252BE2CC263012CC271002DB
:1000A000CC282DA2CC293012CC2A1002CC2B2BA28A
:1000B000CC2C3002CC2D1002CC2E5EE3CC2F0305CD
:1000C000CC30400ECC312BC2CC323002CC331002BB
:1000D000CC342B82CC353012CC361002CC37566360
:1000E000CC380302CC39401ECC3A6F72CC3B1002A4
:1000F000CC3C628FCC3D2BE2CC3E3012CC3F100288
:10010000CC4022CDCC41301DCC422E52CC433012BB
:10011000CC441002CC452522CC463012CC471002EC
:10012000CC482DA2CC493012CC4A1002CC4B2CA288
:10013000CC4C3012CC4D1002CC4E2FA4CC4F3CD422
:10014000CC506624CC51410BCC5256B3CC5303C493
:10015000CC542FB2CC553002CC561002CC57220BC7
:10016000CC58303BCC5956B3CC5A03C3CC5B866BCE
:10017000CC5C400CCC5D23A2CC5E3012CC5F100274
:10018000CC602DA2CC613012CC621002CC632CA2C8
:10019000CC643012CC651002CC662FB4CC673CD452
:1001A000CC686624CC6956B3CC6A03C3CC6B866B2F
:1001B000CC6C401CCC6D2205CC6E3035CC6F5B53C3
:1001C000CC702C52CC713002CC7213C2CC735CC395
:1001D000CC740317CC752522CC763012CC77100264
:1001E000CC782DA2CC793012CC7A1002CC7B2B8229
:1001F000CC7C3012CC7D1002CC7E5663CC7F0303C6
:10020000CC80401ECC810004CC822C42CC833012A6
:10021000CC841002CC856F72CC861002CC87628FA2
:10022000CC882304CC893C84CC8A6436CC8BDFF424
:10023000CC8C6436CC8D2FF5CC8E3005CC8F865689
:10024000CC90DFBACC9156A3CC92D05ACC9321C299
:10025000CC943012CC951392CC96D05ACC9756A30E
:10026000CC98DFBACC990383CC9A6F72CC9B1002E6
:10027000CC9C28C5CC9D3005CC9E4178CC9F565354
:10028000CCA00384CCA122B2CCA23012CCA3100209
:10029000CCA42BE5CCA53005CCA641E8CCA7565381
:1002A000CCA80382CCA90002CCAA4258CCAB2474BF
:1002B000CCAC3C84CCAD6437CCAEDFF4CCAF64378F
:1002C000CCB02FF5CCB13C05CCB28757CCB3B888B5
:1002D000CCB49787CCB5DFF4CCB66724CCB7866AAC
:1002E000CCB86F72CCB91002CCBA2D01CCBB301196
:1002F000CCBC1001CCBDC620CCBE14E5CCBFC62101
:10030000CCC0C53DCCC1C622CCC23CBECCC3C623EA
:10031000CCC44452CCC5C624CCC6C5C5CCC7C625A2
:10032000CCC8E01ECCC9C627CCCA0000CCCBC6289E
:10033000CCCC0000CCCDC62BCCCE0000CCCFC62C74
:10034000CCD00000CCD10000CCD22D01CCD33011C8
:10035000CCD41001CCD5C620CCD60000CCD7C62139
:10036000CCD80000CCD9C622CCDA00CECCDBC62358
:10037000CCDC007FCCDDC624CCDE0032CCDFC62551
:10038000CCE00000CCE1C627CCE20000CCE3C628DC
:10039000CCE40000CCE5C62BCCE60000CCE7C62CB4
:1003A000CCE80000CCE90000CCEA2D01CCEB301108
:1003B000CCEC1001CCEDC502CCEE609FCCEFC600BA
:1003C000CCF02A6ECCF1C601CCF22A2CCCF3C60CB0
:1003D000CCF45400CCF5C710CCF60700CCF7C71806
:1003E000CCF80700CCF9C720CCFA4700CCFBC728D3
:1003F000CCFC0700CCFDC729CCFE1207CCFFC801FE
:10040000CD007F50CD01C802CD027760CD03C80377
:10041000CD047FCECD05C804CD06520ECD07C8054C
:10042000CD085C11CD09C806CD0A3C51CD0BC807DB
:10043000CD0C4061CD0DC808CD0E49C1CD0FC80906
:10044000CD103840CD11C80ACD120000CD13C821FF
:10045000CD140002CD15C822CD160046CD17C844D4
:10046000CD18182FCD19C013CD1AF341CD1BC01ACA
:10047000CD1C0446CD1DC024CD1E1000CD1FC025AF
:10048000CD200A00CD21C026CD220C0CCD23C027C3
:10049000CD240C0CCD25C029CD2600A0CD27C03001
:1004A000CD280A00CD29C03CCD2A001CCD2B000050
:1004B000CD2C2B84CD2D3C74CD2E6435CD2FDFF487
:1004C000CD306435CD312806CD323006CD3385654B
:1004D000CD342B24CD353C24CD366436CD371002B7
:1004E000CD382B24CD393C24CD3A6436CD3B404524
:1004F000CD3C8656CD3D1002CD3E2807CD3F31A7DD
:10050000CD4020C4CD413C24CD426724CD431002D0
:10051000CD442807CD453187CD4620C4CD473C2466
:10052000CD486724CD491002CD4A2514CD4B3C64FB
:10053000CD4C6436CD4DDFF4CD4E6436CD4F100238
:10054000CD502806CD513CB6CD52C161CD5361345A
:10055000CD546135CD555443CD560303CD57652455
:10056000CD58000BCD591002CD5AD019CD5B2104C6
:10057000CD5C3C24CD5D2105CD5E3805CD5F652485
:10058000CD60DFF4CD614005CD626524CD632E8D55
:10059000CD64303DCD655DD3CD660306CD672FF7C5
:1005A000CD6838F7CD6960B7CD6ADFFDCD6B000A45
:0C05B000CD6C1002CD6D000052A76B0E48
:00000001FF
:10000000D8004009D8012FFFD802300FD80340AAEA
:10001000D804401CD805401ED8062FF4D8073DC48C
:10002000D8082035D8093035D80A6524D80B2CB229
:10003000D80C3012D80D1002D80E26E2D80F30227C
:10004000D8101002D81127D2D8123022D81310029B
:10005000D8142822D8153012D8161002D817249296
:10006000D8183022D8191002D81A2772D81B30128B
:10007000D81C1002D81D23D2D81E3022D81F10023F
:10008000D82022CDD821301DD82227F2D8233022E3
:10009000D8241002D8255553D8260307D82725225F
:1000A000D8283022D8291002D82A2142D82B301241
:1000B000D82C1002D82D4016D82E5E63D82F0344BA
:1000C000D8302142D8313012D8321002D833400E05
:1000D000D8342522D8353022D8361002D8372B52C2
:1000E000D8383012D8391002D83A2742D83B3022BB
:1000F000D83C1002D83D25E2D83E3022D83F10022D
:10010000D8402FA4D8413DC4D8426624D843414B9F
:10011000D84456B3D84503C6D846866BD847400C5A
:10012000D8482712D8493012D84A1002D84B2C4B45
:10013000D84C309BD84D56B3D84E03C3D84F866B9E
:10014000D850400CD8512272D8523022D8531002C5
:10015000D8542742D8553022D8561002D85725E215
:10016000D8583022D8591002D85A2FB4D85B3DC481
:10017000D85C6624D85D56B3D85E03C3D85F866B5F
:10018000D860401CD8612C45D8623095D8635B5349
:10019000D8642372D8653012D86613C2D8675CC39E
:1001A000D8682712D8693012D86A1312D86B2B522C
:1001B000D86C3012D86D1002D86E2742D86F30221A
:1001C000D8701002D8712582D8723022D8731002EC
:1001D000D8742142D8753012D8761002D877628F41
:1001E000D8782985D87933A5D87A25E2D87B3022EA
:1001F000D87C1002D87D5653D87E03D2D87F401EBB
:10020000D8806F72D8811002D882628FD88323047D
:10021000D8843C84D8856436D886DFF4D8876436A1
:10022000D8882FF5D8893005D88A8656D88BDFBA7A
:10023000D88C56A3D88DD05AD88E2972D88F301228
:10024000D8901392D891D05AD89256A3D893DFBAA7
:10025000D8940383D8956F72D8961002D8972B45FF
:10026000D8983005D8994178D89A5653D89B0384AA
:10027000D89C2A62D89D3012D89E1002D89F2F0594
:10028000D8A03005D8A141C8D8A25653D8A303821C
:10029000D8A40002D8A54218D8A62474D8A73C84B4
:1002A000D8A86437D8A9DFF4D8AA6437D8AB2FF51B
:1002B000D8AC3C05D8AD8757D8AEB888D8AF9787AB
:1002C000D8B0DFF4D8B16724D8B2866AD8B36F72D9
:1002D000D8B41002D8B52641D8B63021D8B710010D
:1002E000D8B8C620D8B90000D8BAC621D8BB0000FB
:1002F000D8BCC622D8BD00CED8BEC623D8BF007F8A
:10030000D8C0C624D8C10032D8C2C625D8C3000080
:10031000D8C4C627D8C50000D8C6C628D8C700008C
:10032000D8C8C62CD8C90000D8CA0000D8CB2641EE
:10033000D8CC3021D8CD1001D8CEC502D8CF53ACFF
:10034000D8D0C503D8D12CD3D8D2C600D8D32A6EE2
:10035000D8D4C601D8D52A2CD8D6C605D8D7555753
:10036000D8D8C60CD8D95400D8DAC710D8DB0700C3
:10037000D8DCC711D8DD0F06D8DEC718D8DF0700D4
:10038000D8E0C719D8E10F06D8E2C720D8E3470064
:10039000D8E4C721D8E50F06D8E6C728D8E7070074
:1003A000D8E8C729D8E91207D8EAC801D8EB7F50A6
:1003B000D8ECC802D8ED7760D8EEC803D8EF7FCE6E
:1003C000D8F0C804D8F1520ED8F2C805D8F35C11A1
:1003D000D8F4C806D8F53C51D8F6C807D8F740611C
:1003E000D8F8C808D8F949C1D8FAC809D8FB3840A4
:1003F000D8FCC80AD8FD0000D8FEC821D8FF0002EA
:10040000D900C822D9010046D902C844D903182FFF
:10041000D904C013D905F341D906C084D9070030E7
:10042000D908C904D9091401D90ACB0CD90B000485
:10043000D90CCB0ED90DA00AD90ECB0FD90FC0C045
:10044000D910CB10D911C0C0D912CB11D91300A02B
:10045000D914CB12D9150007D916C241D917A0005B
:10046000D918C243D9197FE0D91AC604D91B000E86
:10047000D91CC609D91D00F5D91EC611D91F000EF9
:10048000D920C660D9219600D922C687D923000475
:10049000D924C60AD92504F5D9260000D927264132
:1004A000D9283021D9291001D92AC620D92B14E501
:1004B000D92CC621D92DC53DD92EC622D92F3CBE57
:1004C000D930C623D9314452D932C624D933C5C50F
:1004D000D934C625D935E01ED936C627D93700000C
:1004E000D938C628D9390000D93AC62CD93B0000E2
:1004F000D93C0000D93D2B84D93E3C74D93F6435AA
:10050000D940DFF4D9416435D9422806D9433006B1
:10051000D9448565D9452B24D9463C24D94764362E
:10052000D9481002D9492B24D94A3C24D94B6436E6
:10053000D94C4045D94D8656D94E5663D94F030202
:10054000D950401ED9511002D9522807D95331A78A
:10055000D95420C4D9553C24D9566724D957100200
:10056000D9582807D9593187D95A20C4D95B3C2496
:10057000D95C6724D95D1002D95E24F4D95F3C644C
:10058000D9606436D961DFF4D9626436D963100268
:10059000D9642006D9653D76D966C161D9676134D1
:1005A000D9686135D9695443D96A0303D96B652485
:1005B000D96C00FBD96D1002D96E20D4D96F3C24C0
:1005C000D9702025D9713005D9726524D9731002EC
:1005D000D974D019D9752104D9763C24D97721054D
:1005E000D9783805D9796524D97ADFF4D97B4005E3
:1005F000D97C6524D97D2E8DD97E303DD97F2408C4
:10060000D98035D8D9815DD3D9820307D98388872A
:10061000D98463A7D9858887D98663A7D987DFFD61
:10062000D98800F9D9891002D98A0000878C30D97D
:00000001FF
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment