Ignore:
Timestamp:
Mar 8, 2016, 8:37:45 PM (8 years ago)
Author:
coas-nagasima
Message:

MIMEにSJISを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • UsbWattMeter/trunk/lwip-1.4.1/ports/grsakura/ether_phy.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    66 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    77 *
    8  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    10  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    12  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—p
    17  *      ŽÒƒ}ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    19  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    26  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    28  *        •ñ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     8 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     9 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13 *      スコード中に含まれていること.
     14 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17 *      の無保証規定を掲載すること.
     18 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20 *      と.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24 *        報告すること.
     25 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
     
    9894        switch(state){
    9995        case PHY_STATE_UNINIT:
    100                 /* PHY‚̃ŠƒZƒbƒg */
     96                /* PHYのリセット */
    10197                phy_write_reg(phy_addr, PHY_CONTROL_REGISTER, PHY_CONTROL_RESET);
    10298
    103                 /* 500ms‘Ò‚Â */
    104                 /* tslp_tsk(500); •s—vH */
     99                /* 500ms待つ */
     100                /* tslp_tsk(500); 不要? */
    105101                /* continue; */
    106102        case PHY_STATE_RESETING:
    107                 /* ƒŠƒZƒbƒgŠ®—¹‚ÌŠm”F */
     103                /* リセット完了の確認 */
    108104                if((phy_read_reg(phy_addr, PHY_CONTROL_REGISTER) & PHY_CONTROL_RESET) != 0)
    109105                        return PHY_STATE_RESETING;
     
    129125                if(reset < 2){
    130126#endif
    131                 /* ƒŠƒ“ƒNŠ®—¹‚ÌŠm”F */
     127                /* リンク完了の確認 */
    132128                if(!phy_is_link(phy_addr))
    133129                        return PHY_STATE_RESET;
     
    136132                reset = 0;
    137133#endif
    138                 /* ƒI[ƒgƒlƒSƒVƒG[ƒVƒ‡ƒ“‚Ì‚¨’m‚点‚ð—LŒø‚ɐݒè */
     134                /* オートネゴシエーションのお知らせを有効に設定 */
    139135                phy_write_reg(phy_addr, PHY_AN_ADVERTISEMENT_REGISTER,
    140136                        PHY_AN_AD_100BASE_T4 | PHY_AN_AD_100BASE_TX_FULL_DUPLEX | PHY_AN_AD_100BASE_TX_HALF_DUPLEX
    141137                        | PHY_AN_AD_10BASE_T_FULL_DUPLEX | PHY_AN_AD_10BASE_T_HALF_DUPLEX | PHY_AN_AD_SELECTOR_FIELD);
    142138
    143                 /* ƒI[ƒgƒlƒSƒVƒG[ƒVƒ‡ƒ“‚ð—LŒø‚ɐݒè */
     139                /* オートネゴシエーションを有効に設定 */
    144140                phy_write_reg(phy_addr, PHY_CONTROL_REGISTER, PHY_CONTROL_SPEED_SELECT | PHY_CONTROL_A_N_ENABLE);
    145141
     
    150146                if(reset < 2){
    151147#endif
    152                 /* ƒI[ƒgƒlƒSƒVƒG[ƒVƒ‡ƒ“Š®—¹‚ÌŠm”F */
     148                /* オートネゴシエーション完了の確認 */
    153149                if((phy_read_reg(phy_addr, PHY_STATUS_REGISTER) & PHY_STATUS_A_N_COMPLETE) == 0)
    154150                        return PHY_STATE_LINKED;
     
    173169{
    174170#ifdef __RX
    175         /* ƒŠƒ“ƒN‚ÌŠm”F */
     171        /* リンクの確認 */
    176172        return (phy_read_reg(phy_addr, PHY_STATUS_REGISTER) & PHY_STATUS_LINK_STATUS) != 0;
    177173#else
     
    185181        int i;
    186182
    187         /* PRE F32ŒÂ‚̘A‘±‚µ‚½1b */
     183        /* PRE :32個の連続した1b */
    188184        for (i = 0; i < 32; i++)
    189185                phy_write_bit(true);
    190186
    191         /* ST FƒtƒŒ[ƒ€‚̐擪‚ðŽ¦‚·01b‚̃‰ƒCƒg */
    192         phy_write_bit(false);
    193         phy_write_bit(true);
    194 
    195         /* OP FƒAƒNƒZƒXŽí•Ê‚ðŽ¦‚·ƒR[ƒh‚̃‰ƒCƒg */
    196         phy_write_bit(true);
    197         phy_write_bit(false);
    198 
    199         /* PHYAD FPHY-LSI‚̃AƒhƒŒƒX‚ª1”Ԃ̏ꍇA00001b‚ðƒ‰ƒCƒgiMSB ‚©‚珇ŽŸƒ‰ƒCƒgjB */
     187        /* ST :フレームの先頭を示す01bのライト */
     188        phy_write_bit(false);
     189        phy_write_bit(true);
     190
     191        /* OP :アクセス種別を示すコードのライト */
     192        phy_write_bit(true);
     193        phy_write_bit(false);
     194
     195        /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
    200196        phy_write_bit((phy_addr & 0x10) != 0);
    201197        phy_write_bit((phy_addr & 0x08) != 0);
     
    204200        phy_write_bit((phy_addr & 0x01) != 0);
    205201
    206         /* REGAD FƒŒƒWƒXƒ^ƒAƒhƒŒƒX‚ª1”Ԃ̏ꍇA00001b‚ðƒ‰ƒCƒgiMSB‚©‚珇ŽŸƒ‰ƒCƒgjB */
     202        /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
    207203        phy_write_bit((reg_addr & 0x10) != 0);
    208204        phy_write_bit((reg_addr & 0x08) != 0);
     
    211207        phy_write_bit((reg_addr & 0x01) != 0);
    212208
    213         /* TA FMII/RMIIƒCƒ“ƒ^ƒtƒF[ƒXã‚Ńf[ƒ^‚Ì‘—MŒ³‚ðØ‚è‘Ö‚¦‚鎞ŠÔ */
    214         /* uƒoƒX‰ð•úviZ0‚Æ•\‹Lj‚ðs‚¤ */
     209        /* TA :MII/RMIIインタフェース上でデータの送信元を切り替える時間 */
     210        /* 「バス解放」(Z0と表記)を行う */
    215211        phy_release_bus();
    216212
    217         /* DATA F16ƒrƒbƒg‚̃f[ƒ^BMSB‚©‚珇ŽŸƒŠ[ƒh */
     213        /* DATA :16ビットのデータ。MSBから順次リード */
    218214        for (bit = 0x8000; bit != 0; bit >>= 1) {
    219215                if(phy_read_bit())
     
    221217        }
    222218
    223         /* IDLE FŽŸ‚ÌMIIŠÇ—ƒtƒH[ƒ}ƒbƒg“ü—Í‚Ü‚Å‚Ì‘Ò‹@ŽžŠÔ */
    224         /* ‚·‚Å‚ÉTAŽž‚ɃoƒX‰ð•úÏ‚Ý‚Å‚ ‚萧Œä•s—v */
     219        /* IDLE :次のMII管理フォーマット入力までの待機時間 */
     220        /* すでにTA時にバス解放済みであり制御不要 */
    225221        phy_release_bus();
    226222
     
    233229        uint16_t bit;
    234230
    235         /* PRE F32ŒÂ‚̘A‘±‚µ‚½1b */
     231        /* PRE :32個の連続した1b */
    236232        for (i = 0; i < 32; i++)
    237233                phy_write_bit(true);
    238234
    239         /* ST FƒtƒŒ[ƒ€‚̐擪‚ðŽ¦‚·01b‚̃‰ƒCƒg */
    240         phy_write_bit(false);
    241         phy_write_bit(true);
    242 
    243         /* OP FƒAƒNƒZƒXŽí•Ê‚ðŽ¦‚·ƒR[ƒh‚̃‰ƒCƒg */
    244         phy_write_bit(false);
    245         phy_write_bit(true);
    246 
    247         /* PHYAD FPHY-LSI‚̃AƒhƒŒƒX‚ª1”Ԃ̏ꍇA00001b‚ðƒ‰ƒCƒgiMSB ‚©‚珇ŽŸƒ‰ƒCƒgjB */
     235        /* ST :フレームの先頭を示す01bのライト */
     236        phy_write_bit(false);
     237        phy_write_bit(true);
     238
     239        /* OP :アクセス種別を示すコードのライト */
     240        phy_write_bit(false);
     241        phy_write_bit(true);
     242
     243        /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
    248244        phy_write_bit((phy_addr & 0x10) != 0);
    249245        phy_write_bit((phy_addr & 0x08) != 0);
     
    252248        phy_write_bit((phy_addr & 0x01) != 0);
    253249
    254         /* REGAD FƒŒƒWƒXƒ^ƒAƒhƒŒƒX‚ª1”Ԃ̏ꍇA00001b‚ðƒ‰ƒCƒgiMSB‚©‚珇ŽŸƒ‰ƒCƒgjB */
     250        /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
    255251        phy_write_bit((reg_addr & 0x10) != 0);
    256252        phy_write_bit((reg_addr & 0x08) != 0);
     
    259255        phy_write_bit((reg_addr & 0x01) != 0);
    260256
    261         /* TA FMII/RMIIƒCƒ“ƒ^ƒtƒF[ƒXã‚Ńf[ƒ^‚Ì‘—MŒ³‚ðØ‚è‘Ö‚¦‚鎞ŠÔ */
    262         /* 10b‚ðƒ‰ƒCƒg */
    263         phy_write_bit(true);
    264         phy_write_bit(false);
    265 
    266         /* DATA F16ƒrƒbƒg‚̃f[ƒ^BMSB‚©‚珇ŽŸƒ‰ƒCƒg */
     257        /* TA :MII/RMIIインタフェース上でデータの送信元を切り替える時間 */
     258        /* 10bをライト */
     259        phy_write_bit(true);
     260        phy_write_bit(false);
     261
     262        /* DATA :16ビットのデータ。MSBから順次ライト */
    267263        for (bit = 0x8000; bit != 0; bit >>= 1) {
    268264                phy_write_bit((reg_data & bit) != 0);
    269265        }
    270266
    271         /* IDLE FŽŸ‚ÌMIIŠÇ—ƒtƒH[ƒ}ƒbƒg“ü—Í‚Ü‚Å‚Ì‘Ò‹@ŽžŠÔ */
    272         /* u’P“ƃoƒX‰ð•úviX‚Æ•\‹Lj‚ðs‚¤ */
     267        /* IDLE :次のMII管理フォーマット入力までの待機時間 */
     268        /* 「単独バス解放」(Xと表記)を行う */
    273269        phy_single_rel_bus();
    274270}
     
    277273
    278274/*
    279  * 1 ƒrƒbƒgƒf[ƒ^‚̃‰ƒCƒg
     275 * 1 ビットデータのライト
    280276 */
    281277static void phy_write_bit(bool_t bit)
     
    284280        uint32_t data = bit ? ETHERC_PIR_MDO : 0;
    285281
    286         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     282        /* PHY部インタフェースレジスタへのライト */
    287283        sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | 0/*ETHERC_PIR_MDC*/);
    288284
    289285        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    290286
    291         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     287        /* PHY部インタフェースレジスタへのライト */
    292288        sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | ETHERC_PIR_MDC);
    293289
    294290        for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
    295291
    296         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     292        /* PHY部インタフェースレジスタへのライト */
    297293        sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | 0/*ETHERC_PIR_MDC*/);
    298294
     
    301297
    302298/*
    303  * ƒoƒX‰ð•ú
     299 * バス解放
    304300 */
    305301static void phy_release_bus()
     
    307303        int i;
    308304
    309         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     305        /* PHY部インタフェースレジスタへのライト */
    310306        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    311307
    312308        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    313309
    314         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     310        /* PHY部インタフェースレジスタへのライト */
    315311        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | ETHERC_PIR_MDC);
    316312
    317313        for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
    318314
    319         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     315        /* PHY部インタフェースレジスタへのライト */
    320316        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    321317
     
    324320
    325321/*
    326  * 1 ƒrƒbƒgƒf[ƒ^‚̃Š[ƒh
     322 * 1 ビットデータのリード
    327323 */
    328324static bool_t phy_read_bit()
     
    333329        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    334330
    335         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     331        /* PHY部インタフェースレジスタへのライト */
    336332        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | ETHERC_PIR_MDC);
    337333
    338334        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    339335
    340         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     336        /* PHY部インタフェースレジスタへのライト */
    341337        bit = (sil_rew_mem(ETHERC_PIR) & ETHERC_PIR_MDI) != 0;
    342338
    343339        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    344340
    345         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     341        /* PHY部インタフェースレジスタへのライト */
    346342        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    347343
     
    352348
    353349/*
    354  * ’P“ƃoƒX‰ð•ú
     350 * 単独バス解放
    355351 */
    356352static void phy_single_rel_bus()
     
    360356        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    361357
    362         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     358        /* PHY部インタフェースレジスタへのライト */
    363359        sil_wrw_mem(ETHERC_PIR, ETHERC_PIR_MMD | ETHERC_PIR_MDC);
    364360
    365361        for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
    366362
    367         /* PHY•”ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒWƒXƒ^‚ւ̃‰ƒCƒg */
     363        /* PHY部インタフェースレジスタへのライト */
    368364        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    369365
Note: See TracChangeset for help on using the changeset viewer.