Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/tinet/netdev/if_rx62n/ether_phy.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r388 r389  
    66 *  Copyright (C) 2014-2017 by Cores Co., Ltd. Japan
    77 *
    8  *  上記著作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    11  *  変・再é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    15  *      スコード中に含まれていること.
    16  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17  *      用できる形で再é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20  *      è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22  *      の無保証規定を掲載すること.
    23  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24  *      用できない形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26  *      と.
    27  *    (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    31  *    (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34  *        報告すること.
    35  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36  *      害からも,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    40  *      由に基づく請求からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42  *      å
    43 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4430 *
    45  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    46 ãŠ
    47  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    49  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    50  *  の責任を負わない.
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    5136 *
    5237 *  @(#) $Id$
     
    10994        switch(state){
    11095        case PHY_STATE_UNINIT:
    111                 /* PHYのリセット */
     96                /* PHYのリセット */
    11297                phy_write_reg(phy_addr, PHY_CONTROL_REGISTER, PHY_CONTROL_RESET);
    11398
    114                 /* 500mså¾
    115 ã¤ */
     99                /* 500ms待つ */
    116100                dly_tsk(500 * 1000);
    117101                /* continue; */
    118102        case PHY_STATE_RESETING:
    119                 /* リセット完了の確認 */
     103                /* リセット完了の確認 */
    120104                if((phy_read_reg(phy_addr, PHY_CONTROL_REGISTER) & PHY_CONTROL_RESET) != 0)
    121105                        return PHY_STATE_RESETING;
     
    137121        switch(state){
    138122        case PHY_STATE_RESET:
    139                 /* オートネゴシエーションのお知らせを有効に設定 */
     123                /* オートネゴシエーションのお知らせを有効に設定 */
    140124                phy_write_reg(phy_addr, PHY_AN_ADVERTISEMENT_REGISTER,
    141125                        PHY_AN_AD_100BASE_T4 | PHY_AN_AD_100BASE_TX_FULL_DUPLEX | PHY_AN_AD_100BASE_TX_HALF_DUPLEX
    142126                        | PHY_AN_AD_10BASE_T_FULL_DUPLEX | PHY_AN_AD_10BASE_T_HALF_DUPLEX | PHY_AN_AD_SELECTOR_FIELD);
    143127
    144                 /* オートネゴシエーションを有効に設定 */
     128                /* オートネゴシエーションを有効に設定 */
    145129                phy_write_reg(phy_addr, PHY_CONTROL_REGISTER, PHY_CONTROL_SPEED_SELECT | PHY_CONTROL_A_N_ENABLE);
    146130                /* continue; */
     
    150134                if(reset < 2){
    151135#endif
    152                 /* リンク完了の確認 */
     136                /* リンク完了の確認 */
    153137                if(!phy_is_link(phy_addr))
    154138                        return PHY_STATE_LINKE_WAIT;
     
    163147                if(reset < 2){
    164148#endif
    165                 /* オートネゴシエーション完了の確認 */
     149                /* オートネゴシエーション完了の確認 */
    166150                if((phy_read_reg(phy_addr, PHY_STATUS_REGISTER) & PHY_STATUS_A_N_COMPLETE) == 0)
    167151                        return PHY_STATE_LINKED;
     
    186170{
    187171#if !defined(_MSC_VER) && !defined(__c2__)
    188         /* リンクの確認 */
     172        /* リンクの確認 */
    189173        return (phy_read_reg(phy_addr, PHY_STATUS_REGISTER) & PHY_STATUS_LINK_STATUS) != 0;
    190174#else
     
    198182        int i;
    199183
    200         /* PRE :32個の連続した1b */
     184        /* PRE :32個の連続した1b */
    201185        for (i = 0; i < 32; i++)
    202186                phy_write_bit(true);
    203187
    204         /* ST :フレームのå
    205 ˆé ­ã‚’示す01bのライト */
    206         phy_write_bit(false);
    207         phy_write_bit(true);
    208 
    209         /* OP :アクセス種別を示すコードのライト */
    210         phy_write_bit(true);
    211         phy_write_bit(false);
    212 
    213         /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
     188        /* ST :フレームの先頭を示す01bのライト */
     189        phy_write_bit(false);
     190        phy_write_bit(true);
     191
     192        /* OP :アクセス種別を示すコードのライト */
     193        phy_write_bit(true);
     194        phy_write_bit(false);
     195
     196        /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
    214197        phy_write_bit((phy_addr & 0x10) != 0);
    215198        phy_write_bit((phy_addr & 0x08) != 0);
     
    218201        phy_write_bit((phy_addr & 0x01) != 0);
    219202
    220         /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
     203        /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
    221204        phy_write_bit((reg_addr & 0x10) != 0);
    222205        phy_write_bit((reg_addr & 0x08) != 0);
     
    225208        phy_write_bit((reg_addr & 0x01) != 0);
    226209
    227         /* TA :MII/RMIIインタフェース上でデータの送信å
    228 ƒã‚’切り替える時間 */
    229         /* 「バス解放」(Z0と表記)を行う */
     210        /* TA :MII/RMIIインタフェース上でデータの送信元を切り替える時間 */
     211        /* 「バス解放」(Z0と表記)を行う */
    230212        phy_release_bus();
    231213
    232         /* DATA :16ビットのデータ。MSBから順次リード */
     214        /* DATA :16ビットのデータ。MSBから順次リード */
    233215        for (bit = 0x8000; bit != 0; bit >>= 1) {
    234216                if(phy_read_bit())
     
    236218        }
    237219
    238         /* IDLE :次のMII管理フォーマットå
    239 ¥åŠ›ã¾ã§ã®å¾
    240 æ©Ÿæ™‚é–“ */
    241         /* すでにTA時にバス解放済みであり制御不要 */
     220        /* IDLE :次のMII管理フォーマット入力までの待機時間 */
     221        /* すでにTA時にバス解放済みであり制御不要 */
    242222        phy_release_bus();
    243223
     
    250230        uint16_t bit;
    251231
    252         /* PRE :32個の連続した1b */
     232        /* PRE :32個の連続した1b */
    253233        for (i = 0; i < 32; i++)
    254234                phy_write_bit(true);
    255235
    256         /* ST :フレームのå
    257 ˆé ­ã‚’示す01bのライト */
    258         phy_write_bit(false);
    259         phy_write_bit(true);
    260 
    261         /* OP :アクセス種別を示すコードのライト */
    262         phy_write_bit(false);
    263         phy_write_bit(true);
    264 
    265         /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
     236        /* ST :フレームの先頭を示す01bのライト */
     237        phy_write_bit(false);
     238        phy_write_bit(true);
     239
     240        /* OP :アクセス種別を示すコードのライト */
     241        phy_write_bit(false);
     242        phy_write_bit(true);
     243
     244        /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
    266245        phy_write_bit((phy_addr & 0x10) != 0);
    267246        phy_write_bit((phy_addr & 0x08) != 0);
     
    270249        phy_write_bit((phy_addr & 0x01) != 0);
    271250
    272         /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
     251        /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
    273252        phy_write_bit((reg_addr & 0x10) != 0);
    274253        phy_write_bit((reg_addr & 0x08) != 0);
     
    277256        phy_write_bit((reg_addr & 0x01) != 0);
    278257
    279         /* TA :MII/RMIIインタフェース上でデータの送信å
    280 ƒã‚’切り替える時間 */
    281         /* 10bをライト */
    282         phy_write_bit(true);
    283         phy_write_bit(false);
    284 
    285         /* DATA :16ビットのデータ。MSBから順次ライト */
     258        /* TA :MII/RMIIインタフェース上でデータの送信元を切り替える時間 */
     259        /* 10bをライト */
     260        phy_write_bit(true);
     261        phy_write_bit(false);
     262
     263        /* DATA :16ビットのデータ。MSBから順次ライト */
    286264        for (bit = 0x8000; bit != 0; bit >>= 1) {
    287265                phy_write_bit((reg_data & bit) != 0);
    288266        }
    289267
    290         /* IDLE :次のMII管理フォーマットå
    291 ¥åŠ›ã¾ã§ã®å¾
    292 æ©Ÿæ™‚é–“ */
    293         /* 「単独バス解放」(Xと表記)を行う */
     268        /* IDLE :次のMII管理フォーマット入力までの待機時間 */
     269        /* 「単独バス解放」(Xと表記)を行う */
    294270        phy_single_rel_bus();
    295271}
     
    298274
    299275/*
    300  * 1 ビットデータのライト
     276 * 1 ビットデータのライト
    301277 */
    302278static void phy_write_bit(bool_t bit)
     
    305281        uint32_t data = bit ? ETHERC_PIR_MDO : 0;
    306282
    307         /* PHY部インタフェースレジスタへのライト */
     283        /* PHY部インタフェースレジスタへのライト */
    308284        sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | 0/*ETHERC_PIR_MDC*/);
    309285
    310286        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    311287
    312         /* PHY部インタフェースレジスタへのライト */
     288        /* PHY部インタフェースレジスタへのライト */
    313289        sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | ETHERC_PIR_MDC);
    314290
    315291        for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
    316292
    317         /* PHY部インタフェースレジスタへのライト */
     293        /* PHY部インタフェースレジスタへのライト */
    318294        sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | 0/*ETHERC_PIR_MDC*/);
    319295
     
    322298
    323299/*
    324  * バス解放
     300 * バス解放
    325301 */
    326302static void phy_release_bus()
     
    328304        int i;
    329305
    330         /* PHY部インタフェースレジスタへのライト */
     306        /* PHY部インタフェースレジスタへのライト */
    331307        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    332308
    333309        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    334310
    335         /* PHY部インタフェースレジスタへのライト */
     311        /* PHY部インタフェースレジスタへのライト */
    336312        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | ETHERC_PIR_MDC);
    337313
    338314        for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
    339315
    340         /* PHY部インタフェースレジスタへのライト */
     316        /* PHY部インタフェースレジスタへのライト */
    341317        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    342318
     
    345321
    346322/*
    347  * 1 ビットデータのリード
     323 * 1 ビットデータのリード
    348324 */
    349325static bool_t phy_read_bit()
     
    354330        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    355331
    356         /* PHY部インタフェースレジスタへのライト */
     332        /* PHY部インタフェースレジスタへのライト */
    357333        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | ETHERC_PIR_MDC);
    358334
    359335        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    360336
    361         /* PHY部インタフェースレジスタへのライト */
     337        /* PHY部インタフェースレジスタへのライト */
    362338        bit = (sil_rew_mem(ETHERC_PIR) & ETHERC_PIR_MDI) != 0;
    363339
    364340        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    365341
    366         /* PHY部インタフェースレジスタへのライト */
     342        /* PHY部インタフェースレジスタへのライト */
    367343        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    368344
     
    373349
    374350/*
    375  * 単独バス解放
     351 * 単独バス解放
    376352 */
    377353static void phy_single_rel_bus()
     
    381357        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    382358
    383         /* PHY部インタフェースレジスタへのライト */
     359        /* PHY部インタフェースレジスタへのライト */
    384360        sil_wrw_mem(ETHERC_PIR, ETHERC_PIR_MMD | ETHERC_PIR_MDC);
    385361
    386362        for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
    387363
    388         /* PHY部インタフェースレジスタへのライト */
     364        /* PHY部インタフェースレジスタへのライト */
    389365        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    390366
Note: See TracChangeset for help on using the changeset viewer.