Ignore:
Timestamp:
Jul 23, 2017, 2:29:40 PM (7 years ago)
Author:
coas-nagasima
Message:

SVNプロパティを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rubycfg_asp/trunk/asp_dcre/tinet/netdev/if_rx62n/ether_phy.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r313 r315  
    66 *  Copyright (C) 2014 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{
    11095#ifndef _MSC_VER
    111         /* PHYのリセット */
     96        /* PHYのリセット */
    11297        phy_write_reg(phy_addr, PHY_CONTROL_REGISTER, PHY_CONTROL_RESET);
    11398
    114         /* 500mså¾
    115 ã¤ */
    116         /* tslp_tsk(500); 不要? */
    117 
    118         /* リセット完了の確認 */
     99        /* 500ms待つ */
     100        /* tslp_tsk(500); 不要? */
     101
     102        /* リセット完了の確認 */
    119103        while((phy_read_reg(phy_addr, PHY_CONTROL_REGISTER) & PHY_CONTROL_RESET) != 0)
    120104                tslp_tsk(1);
     
    127111        uint16_t status;
    128112#ifndef _MSC_VER
    129         /* リンク完了の確認 */
     113        /* リンク完了の確認 */
    130114        while((phy_read_reg(phy_addr, PHY_STATUS_REGISTER) & PHY_STATUS_LINK_STATUS) == 0)
    131115                tslp_tsk(1);
    132116
    133         /* オートネゴシエーションのお知らせを有効に設定 */
     117        /* オートネゴシエーションのお知らせを有効に設定 */
    134118        phy_write_reg(phy_addr, PHY_AN_ADVERTISEMENT_REGISTER,
    135119                PHY_AN_AD_100BASE_T4 | PHY_AN_AD_100BASE_TX_FULL_DUPLEX | PHY_AN_AD_100BASE_TX_HALF_DUPLEX
    136120                | PHY_AN_AD_10BASE_T_FULL_DUPLEX | PHY_AN_AD_10BASE_T_HALF_DUPLEX | PHY_AN_AD_SELECTOR_FIELD);
    137121
    138         /* オートネゴシエーションを有効に設定 */
     122        /* オートネゴシエーションを有効に設定 */
    139123        phy_write_reg(phy_addr, PHY_CONTROL_REGISTER, PHY_CONTROL_SPEED_SELECT | PHY_CONTROL_A_N_ENABLE);
    140124
    141         /* オートネゴシエーション完了の確認 */
     125        /* オートネゴシエーション完了の確認 */
    142126        while((phy_read_reg(phy_addr, PHY_STATUS_REGISTER) & PHY_STATUS_A_N_COMPLETE) == 0)
    143127                tslp_tsk(1);
     
    157141{
    158142#ifndef _MSC_VER
    159         /* リンクの確認 */
     143        /* リンクの確認 */
    160144        return (phy_read_reg(phy_addr, PHY_STATUS_REGISTER) & PHY_STATUS_LINK_STATUS) == 0;
    161145#else
     
    169153        int i;
    170154
    171         /* PRE :32個の連続した1b */
     155        /* PRE :32個の連続した1b */
    172156        for (i = 0; i < 32; i++)
    173157                phy_write_bit(true);
    174158
    175         /* ST :フレームのå
    176 ˆé ­ã‚’示す01bのライト */
    177         phy_write_bit(false);
    178         phy_write_bit(true);
    179 
    180         /* OP :アクセス種別を示すコードのライト */
    181         phy_write_bit(true);
    182         phy_write_bit(false);
    183 
    184         /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
     159        /* ST :フレームの先頭を示す01bのライト */
     160        phy_write_bit(false);
     161        phy_write_bit(true);
     162
     163        /* OP :アクセス種別を示すコードのライト */
     164        phy_write_bit(true);
     165        phy_write_bit(false);
     166
     167        /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
    185168        phy_write_bit((phy_addr & 0x10) != 0);
    186169        phy_write_bit((phy_addr & 0x08) != 0);
     
    189172        phy_write_bit((phy_addr & 0x01) != 0);
    190173
    191         /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
     174        /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
    192175        phy_write_bit((reg_addr & 0x10) != 0);
    193176        phy_write_bit((reg_addr & 0x08) != 0);
     
    196179        phy_write_bit((reg_addr & 0x01) != 0);
    197180
    198         /* TA :MII/RMIIインタフェース上でデータの送信å
    199 ƒã‚’切り替える時間 */
    200         /* 「バス解放」(Z0と表記)を行う */
     181        /* TA :MII/RMIIインタフェース上でデータの送信元を切り替える時間 */
     182        /* 「バス解放」(Z0と表記)を行う */
    201183        phy_release_bus();
    202184
    203         /* DATA :16ビットのデータ。MSBから順次リード */
     185        /* DATA :16ビットのデータ。MSBから順次リード */
    204186        for (bit = 0x8000; bit != 0; bit >>= 1) {
    205187                if(phy_read_bit())
     
    207189        }
    208190
    209         /* IDLE :次のMII管理フォーマットå
    210 ¥åŠ›ã¾ã§ã®å¾
    211 æ©Ÿæ™‚é–“ */
    212         /* すでにTA時にバス解放済みであり制御不要 */
     191        /* IDLE :次のMII管理フォーマット入力までの待機時間 */
     192        /* すでにTA時にバス解放済みであり制御不要 */
    213193        phy_release_bus();
    214194
     
    221201        uint16_t bit;
    222202
    223         /* PRE :32個の連続した1b */
     203        /* PRE :32個の連続した1b */
    224204        for (i = 0; i < 32; i++)
    225205                phy_write_bit(true);
    226206
    227         /* ST :フレームのå
    228 ˆé ­ã‚’示す01bのライト */
    229         phy_write_bit(false);
    230         phy_write_bit(true);
    231 
    232         /* OP :アクセス種別を示すコードのライト */
    233         phy_write_bit(false);
    234         phy_write_bit(true);
    235 
    236         /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
     207        /* ST :フレームの先頭を示す01bのライト */
     208        phy_write_bit(false);
     209        phy_write_bit(true);
     210
     211        /* OP :アクセス種別を示すコードのライト */
     212        phy_write_bit(false);
     213        phy_write_bit(true);
     214
     215        /* PHYAD :PHY-LSIのアドレスが1番の場合、00001bをライト(MSB から順次ライト)。 */
    237216        phy_write_bit((phy_addr & 0x10) != 0);
    238217        phy_write_bit((phy_addr & 0x08) != 0);
     
    241220        phy_write_bit((phy_addr & 0x01) != 0);
    242221
    243         /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
     222        /* REGAD :レジスタアドレスが1番の場合、00001bをライト(MSBから順次ライト)。 */
    244223        phy_write_bit((reg_addr & 0x10) != 0);
    245224        phy_write_bit((reg_addr & 0x08) != 0);
     
    248227        phy_write_bit((reg_addr & 0x01) != 0);
    249228
    250         /* TA :MII/RMIIインタフェース上でデータの送信å
    251 ƒã‚’切り替える時間 */
    252         /* 10bをライト */
    253         phy_write_bit(true);
    254         phy_write_bit(false);
    255 
    256         /* DATA :16ビットのデータ。MSBから順次ライト */
     229        /* TA :MII/RMIIインタフェース上でデータの送信元を切り替える時間 */
     230        /* 10bをライト */
     231        phy_write_bit(true);
     232        phy_write_bit(false);
     233
     234        /* DATA :16ビットのデータ。MSBから順次ライト */
    257235        for (bit = 0x8000; bit != 0; bit >>= 1) {
    258236                phy_write_bit((reg_data & bit) != 0);
    259237        }
    260238
    261         /* IDLE :次のMII管理フォーマットå
    262 ¥åŠ›ã¾ã§ã®å¾
    263 æ©Ÿæ™‚é–“ */
    264         /* 「単独バス解放」(Xと表記)を行う */
     239        /* IDLE :次のMII管理フォーマット入力までの待機時間 */
     240        /* 「単独バス解放」(Xと表記)を行う */
    265241        phy_single_rel_bus();
    266242}
     
    269245
    270246/*
    271  * 1 ビットデータのライト
     247 * 1 ビットデータのライト
    272248 */
    273249static void phy_write_bit(bool_t bit)
     
    276252        uint32_t data = bit ? ETHERC_PIR_MDO : 0;
    277253
    278         /* PHY部インタフェースレジスタへのライト */
     254        /* PHY部インタフェースレジスタへのライト */
    279255        sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | 0/*ETHERC_PIR_MDC*/);
    280256
    281257        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    282258
    283         /* PHY部インタフェースレジスタへのライト */
     259        /* PHY部インタフェースレジスタへのライト */
    284260        sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | ETHERC_PIR_MDC);
    285261
    286262        for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
    287263
    288         /* PHY部インタフェースレジスタへのライト */
     264        /* PHY部インタフェースレジスタへのライト */
    289265        sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | 0/*ETHERC_PIR_MDC*/);
    290266
     
    293269
    294270/*
    295  * バス解放
     271 * バス解放
    296272 */
    297273static void phy_release_bus()
     
    299275        int i;
    300276
    301         /* PHY部インタフェースレジスタへのライト */
     277        /* PHY部インタフェースレジスタへのライト */
    302278        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    303279
    304280        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    305281
    306         /* PHY部インタフェースレジスタへのライト */
     282        /* PHY部インタフェースレジスタへのライト */
    307283        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | ETHERC_PIR_MDC);
    308284
    309285        for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
    310286
    311         /* PHY部インタフェースレジスタへのライト */
     287        /* PHY部インタフェースレジスタへのライト */
    312288        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    313289
     
    316292
    317293/*
    318  * 1 ビットデータのリード
     294 * 1 ビットデータのリード
    319295 */
    320296static bool_t phy_read_bit()
     
    325301        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    326302
    327         /* PHY部インタフェースレジスタへのライト */
     303        /* PHY部インタフェースレジスタへのライト */
    328304        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | ETHERC_PIR_MDC);
    329305
    330306        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    331307
    332         /* PHY部インタフェースレジスタへのライト */
     308        /* PHY部インタフェースレジスタへのライト */
    333309        bit = (sil_rew_mem(ETHERC_PIR) & ETHERC_PIR_MDI) != 0;
    334310
    335311        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    336312
    337         /* PHY部インタフェースレジスタへのライト */
     313        /* PHY部インタフェースレジスタへのライト */
    338314        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    339315
     
    344320
    345321/*
    346  * 単独バス解放
     322 * 単独バス解放
    347323 */
    348324static void phy_single_rel_bus()
     
    352328        for(i = ETHERC_PIR_WAIT; i > 0; i--);
    353329
    354         /* PHY部インタフェースレジスタへのライト */
     330        /* PHY部インタフェースレジスタへのライト */
    355331        sil_wrw_mem(ETHERC_PIR, ETHERC_PIR_MMD | ETHERC_PIR_MDC);
    356332
    357333        for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
    358334
    359         /* PHY部インタフェースレジスタへのライト */
     335        /* PHY部インタフェースレジスタへのライト */
    360336        sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
    361337
Note: See TracChangeset for help on using the changeset viewer.